diff --git a/dist/checkout.4.0.307.js.map b/dist/checkout.4.0.307.js.map deleted file mode 100644 index 1b470e3113..0000000000 --- a/dist/checkout.4.0.307.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/constants/button.js","webpack:///./src/constants/checkout.js","webpack:///./src/constants/funding.js","webpack:///./src/constants/misc.js","webpack:///./src/constants/fpti.js","webpack:///./src/constants/country.js","webpack:///./src/constants/locale.js","webpack:///./src/constants/index.js","webpack:///./src/lib/jsx.js","webpack:///./node_modules/zalgo-promise/src/utils.js","webpack:///./node_modules/zalgo-promise/src/exceptions.js","webpack:///./node_modules/zalgo-promise/src/flush.js","webpack:///./node_modules/zalgo-promise/src/promise.js","webpack:///./node_modules/zalgo-promise/src/index.js","webpack:///./src/lib/proxy.js","webpack:///./src/lib/logger.js","webpack:///./src/lib/eligibility.js","webpack:///./src/lib/errors.js","webpack:///./src/lib/http.js","webpack:///./src/lib/throttle.js","webpack:///./src/lib/script.js","webpack:///./src/lib/meta.js","webpack:///./src/lib/funding.js","webpack:///./src/lib/index.js","webpack:///./src/config/config.js","webpack:///./src/config/index.js","webpack:///./node_modules/beaver-logger/client/util.js","webpack:///./node_modules/beaver-logger/client/builders.js","webpack:///./node_modules/beaver-logger/client/config.js","webpack:///./node_modules/beaver-logger/client/logger.js","webpack:///./node_modules/beaver-logger/client/performance.js","webpack:///./node_modules/beaver-logger/client/init.js","webpack:///./node_modules/beaver-logger/client/transitions.js","webpack:///./node_modules/beaver-logger/client/interface.js","webpack:///./node_modules/beaver-logger/client/index.js","webpack:///./node_modules/zoid/src/lib/util.js","webpack:///./node_modules/zoid/src/lib/fn.js","webpack:///./node_modules/zoid/src/lib/dom.js","webpack:///./node_modules/zoid/src/lib/promise.js","webpack:///./node_modules/zoid/src/lib/css.js","webpack:///./node_modules/zoid/src/lib/decorators.js","webpack:///./node_modules/zoid/src/lib/logger.js","webpack:///./node_modules/zoid/src/lib/global.js","webpack:///./node_modules/zoid/src/lib/index.js","webpack:///./node_modules/cross-domain-utils/src/util.js","webpack:///./node_modules/cross-domain-utils/src/constants.js","webpack:///./node_modules/cross-domain-utils/src/utils.js","webpack:///./node_modules/cross-domain-utils/src/types.js","webpack:///./node_modules/cross-domain-utils/src/index.js","webpack:///./node_modules/zoid/src/constants.js","webpack:///./node_modules/post-robot/src/global.js","webpack:///./node_modules/post-robot/src/conf/constants.js","webpack:///./node_modules/post-robot/src/conf/config.js","webpack:///./node_modules/post-robot/src/conf/index.js","webpack:///./node_modules/@babel/runtime/helpers/esm/extends.js","webpack:///./src/lib/util.js","webpack:///./node_modules/post-robot/src/drivers/send/strategies.js","webpack:///./node_modules/post-robot/src/drivers/send/index.js","webpack:///./node_modules/post-robot/src/drivers/listeners.js","webpack:///./node_modules/post-robot/src/drivers/receive/types.js","webpack:///./node_modules/post-robot/src/drivers/receive/index.js","webpack:///./node_modules/post-robot/src/drivers/index.js","webpack:///./node_modules/post-robot/src/public/client.js","webpack:///./node_modules/post-robot/src/public/server.js","webpack:///./node_modules/post-robot/src/public/config.js","webpack:///./node_modules/post-robot/src/public/index.js","webpack:///./node_modules/post-robot/src/clean.js","webpack:///./node_modules/post-robot/src/interface.js","webpack:///./node_modules/post-robot/src/index.js","webpack:///./node_modules/post-robot/src/lib/util.js","webpack:///./node_modules/post-robot/src/lib/serialize.js","webpack:///./node_modules/post-robot/src/lib/ready.js","webpack:///./node_modules/post-robot/src/lib/index.js","webpack:///./src/compat/fallback.js","webpack:///./src/checkout/component.js","webpack:///./src/checkout/index.js","webpack:///./node_modules/belter/src/device.js","webpack:///./node_modules/belter/src/util.js","webpack:///./node_modules/belter/src/constants.js","webpack:///./node_modules/belter/src/dom.js","webpack:///./node_modules/belter/src/storage.js","webpack:///./node_modules/belter/src/experiment.js","webpack:///./node_modules/belter/src/global.js","webpack:///./node_modules/belter/src/http.js","webpack:///./node_modules/belter/src/types.js","webpack:///./node_modules/belter/src/decorators.js","webpack:///./node_modules/belter/src/css.js","webpack:///./node_modules/belter/src/test.js","webpack:///./node_modules/belter/src/index.js","webpack:///./node_modules/cross-domain-safe-weakmap/src/native.js","webpack:///./node_modules/cross-domain-safe-weakmap/src/util.js","webpack:///./node_modules/cross-domain-safe-weakmap/src/weakmap.js","webpack:///./node_modules/cross-domain-safe-weakmap/src/index.js","webpack:///./src/resources/fundingLogos/p24.jsx","webpack:///./src/resources/fundingLogos/sofort.jsx","webpack:///./src/resources/fundingLogos/ideal.jsx","webpack:///./src/resources/fundingLogos/giropay.jsx","webpack:///./src/resources/fundingLogos/eps.jsx","webpack:///./src/resources/fundingLogos/mybank.jsx","webpack:///./src/resources/fundingLogos/bancontact.jsx","webpack:///./src/resources/fundingLogos/payu.jsx","webpack:///./src/resources/fundingLogos/verkkopankki.jsx","webpack:///./src/resources/fundingLogos/blik.jsx","webpack:///./src/resources/fundingLogos/trustly.jsx","webpack:///./src/resources/fundingLogos/maxima.jsx","webpack:///./src/resources/fundingLogos/boleto.jsx","webpack:///./src/resources/fundingLogos/oxxo.jsx","webpack:///./src/resources/fundingLogos/paypal.jsx","webpack:///./src/resources/fundingLogos/credit.jsx","webpack:///./src/resources/fundingLogos/index.js","webpack:///./src/resources/cardLogos/index.js","webpack:///./src/resources/index.js","webpack:///./src/lib/session.js","webpack:///./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack:///./node_modules/@babel/runtime/helpers/esm/applyDecoratedDescriptor.js","webpack:///./node_modules/zoid/src/component/base.js","webpack:///./node_modules/zoid/src/component/window.js","webpack:///./node_modules/zoid/src/component/child/props.js","webpack:///./node_modules/zoid/src/component/child/index.js","webpack:///./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack:///./node_modules/zoid/src/component/parent/drivers.js","webpack:///./node_modules/zoid/src/component/parent/validate.js","webpack:///./node_modules/zoid/src/component/parent/props.js","webpack:///./node_modules/zoid/src/component/parent/index.js","webpack:///./node_modules/zoid/src/component/delegate/index.js","webpack:///./node_modules/zoid/src/component/component/validate.js","webpack:///./node_modules/zoid/src/component/component/templates/container.jsx","webpack:///./node_modules/zoid/src/component/component/templates/component.jsx","webpack:///./node_modules/zoid/src/component/component/templates/index.js","webpack:///./node_modules/zoid/src/component/component/props.js","webpack:///./node_modules/zoid/src/component/component/index.js","webpack:///./node_modules/zoid/src/component/index.js","webpack:///./node_modules/zoid/src/interface.js","webpack:///./node_modules/zoid/src/index.js","webpack:///./src/lib/device.js","webpack:///./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack:///./node_modules/post-robot/src/bridge/bridge.js","webpack:///./node_modules/post-robot/src/bridge/common.js","webpack:///./node_modules/post-robot/src/bridge/child.js","webpack:///./node_modules/post-robot/src/bridge/parent.js","webpack:///./node_modules/post-robot/src/bridge/index.js","webpack:///./src/lib/dom.js","webpack:///./src/lib/security.js","webpack:///./node_modules/zoid/src/error.js","webpack:///./src/integrations/braintree.js","webpack:///./src/integrations/index.js","webpack:///./node_modules/zoid/src/drivers/index.js","webpack:///./src/lib/beacon.js","webpack:///./src/checkout/template/componentTemplate.jsx","webpack:///./src/checkout/template/containerStyle/base.js","webpack:///./src/checkout/template/sandboxStyle/base.js","webpack:///./src/checkout/template/containerTemplate.jsx","webpack:///./src/checkout/template/index.js","webpack:///./src/integrations/checkout.js","webpack:///./src/lib/namespace.js","webpack:///./src/checkout/template/containerContent.js","webpack:///./node_modules/hi-base32/src/base32.js","webpack:///./node_modules/zoid/src/drivers/script.js","webpack:///./node_modules/zoid/src/drivers/react.js","webpack:///./node_modules/zoid/src/drivers/vue.js","webpack:///./node_modules/zoid/src/drivers/angular.js","webpack:///./node_modules/zoid/src/drivers/glimmer.js","webpack:///./node_modules/zoid/src/drivers/angular2.js","webpack:///./node_modules/bowser/bowser.min.js","webpack:///./node_modules/post-robot/src/compat/ie.js","webpack:///./node_modules/post-robot/src/compat/index.js","webpack:///./src/resources/fundingLogos/pp_white.svg","webpack:///./src/resources/fundingLogos/pp_blue.svg","webpack:///./src/resources/fundingLogos/pp_black.svg","webpack:///./src/resources/fundingLogos/venmo_white.svg","webpack:///./src/resources/fundingLogos/itau.svg","webpack:///./src/resources/fundingLogos/venmo_blue.svg","webpack:///./src/resources/fundingLogos/elv.svg","webpack:///./src/resources/fundingLogos/elv_white.svg","webpack:///./src/resources/cardLogos/visa.svg","webpack:///./src/resources/cardLogos/amex.svg","webpack:///./src/resources/cardLogos/mastercard.svg","webpack:///./src/resources/cardLogos/maestro.svg","webpack:///./src/resources/cardLogos/discover.svg","webpack:///./src/resources/cardLogos/hiper.svg","webpack:///./src/resources/cardLogos/elo.svg","webpack:///./src/resources/cardLogos/jcb.svg","webpack:///./src/resources/cardLogos/cup.svg","webpack:///./node_modules/form-serialize/index.js","webpack:///./src/load.js","webpack:///./node_modules/post-robot/src/bridge/interface.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///(webpack)/buildin/amd-define.js","webpack:///./src/billing/template/containerTemplate.jsx","webpack:///./src/billing/index.js","webpack:///./src/threeDomainSecure/index.js","webpack:///./src/external/pptm-factory.js","webpack:///./src/external/pptm.js","webpack:///./src/external/index.js","webpack:///./src/api/rest.js","webpack:///./src/experiments.js","webpack:///./src/integrations/popupBridge.js","webpack:///./src/funding/config.js","webpack:///./src/funding/funding.js","webpack:///./src/button/config.js","webpack:///./src/button/props.js","webpack:///./src/button/validate.js","webpack:///./src/button/template/componentStyle/class.js","webpack:///./src/button/template/componentStyle/page.js","webpack:///./src/button/template/componentStyle/button.js","webpack:///./src/button/template/componentStyle/layout.js","webpack:///./src/button/template/componentStyle/branding.js","webpack:///./src/button/template/componentStyle/labels.js","webpack:///./src/button/template/componentStyle/responsive.js","webpack:///./src/button/template/componentStyle/color.js","webpack:///./src/button/template/componentStyle/base.js","webpack:///./src/button/template/componentStyle/index.js","webpack:///./src/button/template/miscComponent.jsx","webpack:///./src/button/template/componentScript.js","webpack:///./src/button/template/content.js","webpack:///./src/button/template/componentTemplate.jsx","webpack:///./src/button/template/containerTemplate.jsx","webpack:///./src/button/template/index.js","webpack:///./src/button/child.js","webpack:///./src/button/component.jsx","webpack:///./src/hacks.js","webpack:///./src/card/index.js","webpack:///./src/setup.js","webpack:///./src/interface.js","webpack:///./src/index.js","webpack:///./src/legacy/constants.js","webpack:///./src/legacy/postBridge.js","webpack:///./src/legacy/eligibility.js","webpack:///./src/legacy/common.js","webpack:///./src/legacy/button.js","webpack:///./src/legacy/util.js","webpack:///./src/legacy/options.js","webpack:///./src/legacy/interface.js","webpack:///./src/legacy/ready.js","webpack:///./src/legacy/index.js"],"names":["BUTTON_STYLE_OPTIONS","LABEL","SIZE","SHAPE","COLOR","LAYOUT","MAXBUTTONS","FUNDINGICONS","BRANDING","TAGLINE","HEIGHT","INSTALLMENTPERIOD","BUTTON_LABEL","PAYPAL","CHECKOUT","PAY","CREDIT","CARD","BUYNOW","INSTALLMENT","VENMO","ITAU","IDEAL","ELV","BANCONTACT","GIROPAY","SOFORT","EPS","MYBANK","P24","PAYU","VERKKOPANKKI","BLIK","TRUSTLY","MAXIMA","BOLETO","OXXO","BUTTON_COLOR","GOLD","BLUE","SILVER","BLACK","DARKBLUE","WHITE","TRANSPARENT","BUTTON_LOGO_COLOR","ANY","BUTTON_SIZE","TINY","SMALL","MEDIUM","LARGE","HUGE","RESPONSIVE","BUTTON_TAGLINE_COLOR","BUTTON_SHAPE","PILL","RECT","BUTTON_BRANDING","BRANDED","UNBRANDED","BUTTON_LAYOUT","HORIZONTAL","VERTICAL","BUTTON_NUMBER","SINGLE","MULTIPLE","BUTTON_LOGO","PP","CHECKOUT_OVERLAY_COLOR","FUNDING","ZIMPLER","VISA","MASTERCARD","AMEX","DISCOVER","SWITCH","MAESTRO","HIPER","ELO","JCB","CUP","COFINOGA","COFIDIS","CETELEM","CBNATIONALE","FUNDING_ELIGIBILITY_REASON","PRIMARY","NOT_ENABLED","SECONDARY_DISALLOWED","OPT_OUT","OPT_IN","DISALLOWED_COUNTRY","DEFAULT_COUNTRY","DEFAULT","REMEMBERED","NEED_OPT_IN","COMMIT_NOT_SET","INVALID_ENV","CARD_PRIORITY","ENV","LOCAL","STAGE","SANDBOX","PRODUCTION","TEST","DEMO","USERS","ALL","SOURCE","MANUAL","BUTTON_FACTORY","LOG_LEVEL","DEBUG","INFO","WARN","ERROR","PAYMENT_TYPE","EC_TOKEN","BA_TOKEN","PAY_ID","PPTM_ID","ATTRIBUTE","BUTTON","FUNDING_SOURCE","VERSION","PLATFORM","DESKTOP","MOBILE","FPTI","KEY","FEED","STATE","TRANSITION","BUTTON_TYPE","SESSION_UID","BUTTON_SESSION_UID","TOKEN","CONTEXT_ID","CONTEXT_TYPE","REFERER","SELLER_ID","DATA_SOURCE","BUTTON_SOURCE","ERROR_CODE","ERROR_DESC","PAGE_LOAD_TIME","EXPERIMENT_NAME","TREATMENT_NAME","TRANSITION_TIME","FUNDING_LIST","FUNDING_COUNT","CHOSEN_FUNDING","BUTTON_WIDTH","MAX_BUTTONS","FUNDING_REMEMBERED","BUTTON_TAGLINE_ENABLED","RESPONSE_DURATION","PAYMENT_FLOW","BUTTON_VERSION","IFRAME","HTML","CUSTOM","BUTTON_SESSION_ID","CHECKOUTJS","LOAD","PPTM","SCRIPT_LOAD","BUTTON_RENDER","BUTTON_LOAD","BUTTON_CLICK","BUTTON_RENDER_INTRANET_MODE","BUTTON_CLICK_INTRANET_MODE","CREATE_PAYMENT","RECIEVE_PAYMENT","CHECKOUT_INIT","CHECKOUT_AUTHORIZE","CHECKOUT_SHIPPING_CHANGE","CHECKOUT_CANCEL","CHECKOUT_ERROR","EXTERNAL_EXPERIMENT","EXTERNAL_EXPERIMENT_COMPLETE","PPTM_LOAD","PPTM_LOADED","COUNTRY","AD","AE","AG","AI","AL","AM","AN","AO","AR","AT","AU","AW","AZ","BA","BB","BE","BF","BG","BH","BI","BJ","BM","BN","BO","BR","BS","BT","BW","BY","BZ","C2","CA","CD","CG","CH","CI","CK","CL","CM","CN","CO","CR","CV","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GI","GL","GM","GN","GP","GR","GT","GW","GY","HK","HN","HR","HU","ID","IE","IL","IN","IS","IT","JM","JO","JP","KE","KG","KH","KI","KM","KN","KR","KW","KY","KZ","LA","LC","LI","LK","LS","LT","LU","LV","MA","MC","MD","ME","MG","MH","MK","ML","MN","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PL","PM","PN","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","ST","SV","SZ","TC","TD","TG","TH","TJ","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","US","UY","VA","VC","VE","VG","VN","VU","WF","WS","YE","YT","ZA","ZM","ZW","LANG","CS","DA","EL","EN","HE","JA","KO","ZH","LANG_TO_DEFAULT_COUNTRY","ALLOWED_INSTALLMENT_COUNTRIES","ALLOWED_INSTALLMENT_PERIOD","LOCALE","htmlEncode","html","toString","replace","JsxHTMLNode","name","props","children","propsToString","childrenToString","Object","keys","filter","key","map","join","innerHTML","result","iterate","child","undefined","Array","isArray","JsxHTMLNodeContainer","jsxToHTML","jsxRender","template","renderers","nodes","regexMap","match","type","value","text","Error","trim","test","break","isPromise","item","Promise","window","Window","constructor","call","then","err","dispatchedErrors","possiblyUnhandledPromiseHandlers","dispatchPossiblyUnhandledError","promise","indexOf","push","setTimeout","__DEBUG__","j","length","onPossiblyUnhandledException","handler","cancel","splice","activeCount","flushPromise","flushActive","resolve","startActive","endActive","awaitActive","Zalgo","ZalgoPromise","resolved","rejected","errorHandled","error","handlers","dispatching","stack","isAsync","res","reject","dispatch","prototype","asyncReject","chain","firstPromise","secondPromise","i","onSuccess","onError","catch","finally","onFinally","try","timeout","time","clearTimeout","toPromise","TypeError","all","promises","count","results","prom","hash","items","method","context","args","apply","delay","flush","proxyMethod","win","originalMethod","getDomain","config","paypalDomain","isSameDomain","send","noop","methods","on","domain","paypal_domain_regex","data","postMessageProxy","isWindowClosed","source","arguments","getRefererDomain","xchild","getParentDomain","location","host","setupProxyLogTransport","once","setTransport","getParent","getTransport","getToken","root","token","isPayPalDomain","queryToken","getQueryParam","initLogger","addPayloadBuilder","referer","path","pathname","env","country","locale","lang","uid","getSessionID","ver","__PAYPAL_CHECKOUT__","__MINOR_VERSION__","addHeaderBuilder","addMetaBuilder","state","addTrackingBuilder","payload","sessionID","paymentToken","buttonSessionID","getButtonSessionID","contextType","contextID","merchantID","version","prefix","protocol","PROTOCOL","FILE","init","uri","loggerUrl","heartbeat","logPerformance","logLevel","__DEFAULT_LOG_LEVEL__","setLogLevel","logLevels","loggerConfig","POSTROBOT_CONFIG","bowserCache","getBowser","userAgent","getUserAgent","require","bowser","getBrowser","SUPPORTED_BROWSERS","browser","isBrowserEligible","isIEIntranet","compareVersions","eligibilityResults","isEligible","navigator","hasOwnProperty","checkRecognizedBrowser","mobile","android","ios","info","flushLogs","logWarn","console","warn","log","checkForCommonErrors","JSON","stringify","toJSON","isIE","isIECompHeader","message","foo","bar","baz","zomg","bind","a","opener","parent","returnContext","assign","b","c","HEADERS","CONTENT_TYPE","ACCEPT","headerBuilders","corrids","prev_corr_ids","parseHeaders","rawHeaders","split","line","values","toLowerCase","request","url","headers","json","body","normalizedHeaders","headerBuilder","builtHeaders","xhr","XMLHttpRequest","addEventListener","xhrLoad","responseHeaders","getAllResponseHeaders","corrID","status","contentType","isJSON","responseText","parse","xhrError","evt","getResponseHeader","open","setRequestHeader","encodeURIComponent","ontimeout","xhrTimeout","get","options","post","getThrottlePercentile","getStorageState","storage","throttlePercentiles","Math","floor","random","THROTTLE_GROUP","CONTROL","THROTTLE","getThrottle","sample","sticky","getStorageID","percentile","group","treatment","started","forced","localStorage","getItem","isEnabled","isDisabled","getTreatment","checkpointName","checkpoint","expuid","track","logStart","logComplete","getReturnToken","href","payer","getCurrentScript","memoize","scripts","slice","document","getElementsByTagName","script","src","scriptUrl","hasAttribute","currentScript","debug","isPayPalObjects","Boolean","getScriptVersion","__MIN__","getCurrentScriptUrl","getDomainSetting","def","hostname","domain_settings","domainMatches","openMetaFrame","iframeEligible","iframeEligibleReason","rememberedFunding","metaFrameUrl","metaFrameUrls","metaFrameDomain","paypalDomains","bridge","metaListener","openBridge","extendUrl","getRememberedFunding","identity","hasRememberedFunding","getSessionState","session","recentlyCheckedRemembered","isRememberedFunding","getRememberedFundingPromises","getGlobalState","global","rememberFundingPromises","getRememberedFundingPromise","flushRememberedFundingPromises","sources","rememberFunding","isDevice","loadMeta","isFundingRemembered","precacheRememberedFunding","getDefaultEnv","__TEST__","locales","__FILE_NAME__","cors","stage","stageDomain","stageUrl","apiStageUrl","apiStage","localhostUrl","ports","default","val","authCode","throttles","v4_mobile_device","ie_full_page","allow_full_page_fallback","memoize_payment","force_bridge","log_authorize","disable_venmo","creditTestDomains","customCountry","msie","firefox","chrome","safari","opera","msedge","samsungBrowser","silk","ucbrowser","vivaldi","session_uid_lifetime","_apiStage","button","checkout","guest","altpay","paypalUrls","port","wwwApiUrls","corsApiUrls","apiUrls","local","sandbox","production","checkoutUri","checkoutUris","altpayUris","guestUris","billingUris","buttonUris","inlinedCardFieldUris","postBridgeUris","legacyCheckoutUris","buttonJSUrls","buttonJSUrl","loginUri","hermesLoggerUri","loggerUri","loggerThrottlePercentage","pptmUri","postBridgeUri","paymentStandardUri","authApiUri","paymentApiUri","orderApiUri","billingApiUri","experienceApiUri","trackingApiUri","checkoutUrls","demo","guestUrls","altpayUrls","billingUrls","buttonUrls","inlinedCardFieldUrls","loginUrls","paymentsStandardUrls","legacyCheckoutUrls","authApiUrls","paymentApiUrls","orderApiUrls","billingApiUrls","experienceApiUrls","trackingApiUrls","_paypalUrl","paypalUrl","corsApiUrl","wwwApiUrl","apiUrl","checkoutUrl","billingUrl","buttonUrl","legacyCheckoutUrl","postBridgeUrl","postBridgeDomain","isTestExperiment","pptmUrl","authApiUrl","paymentApiUrl","orderApiUrl","billingApiUrl","experienceApiUrl","defaultLocale","extend","dest","over","isSameProtocol","ajax","fireAndForget","XRequest","ActiveXObject","XDomainRequest","req","toUpperCase","headerName","onreadystatechange","readyState","promiseDebounce","interval","debounce","resolver","rejector","onWindowReady","safeInterval","loop","uniqueID","chars","charAt","documentMode","payloadBuilders","metaBuilders","trackingBuilders","builder","initial_state_name","flushInterval","debounceInterval","sizeLimit","silent","heartbeatConsoleLog","heartbeatInterval","heartbeatTooBusy","heartbeatTooBusyThreshold","autoLog","logUnload","buffer","tracking","transport","newTransport","loaded","print","level","event","warning","immediateFlush","hasBuffer","hasTracking","meta","events","enqueue","timestamp","Date","now","enablePerformance","performance","timing","connectEnd","navigationStart","abs","timer","startTime","elapsed","parseInt","reset","reqStartElapsed","clientTimer","reqTimer","initHeartBeat","heartBeatTimer","heartbeatCount","heartbeatMaxThreshold","lag","heartbeatPayload","noConsole","initPerformance","client_elapsed","req_elapsed","forEach","offset","memory","navigation","getEntries","resource","initiatorType","initiated","conf","setInterval","beaverLogQueue","windowID","pageID","currentState","startTransition","endTransition","toState","currentTime","elapsedTime","transitionName","duration","transition","transition_time","INTERFACE","urlEncode","str","camelToDasherize","string","g","dasherizeToCamel","obj","stringifyWithFunctions","safeGet","prop","capitalizeFirstLetter","pathParts","runInterval","safeTimeout","each","callback","len","replaceObject","replacers","fullKey","defineProperty","configurable","enumerable","itemKey","replacer","replaced","set","copyProp","target","descriptor","getOwnPropertyDescriptor","dotify","newobj","every","objectIDs","WeakMap","getObjectID","regex","pattern","start","RegExp","index","groups","end","regexAll","matches","substr","startIndex","itemCount","stringifyError","eventEmitter","triggered","eventName","handlerList","cancelled","listener","trigger","triggerOnce","called","onceWrapper","memoizeWrapper","cacheKey","debounceWrapper","serializeFunctions","__type__","deserializeFunctions","deserializedFunctionWrapper","self","appendChild","container","isElement","element","Element","nodeType","style","ownerDocument","querySelectorAll","el","selector","getElementSafe","id","getElementById","querySelector","getElement","documentReady","clearInterval","isDocumentReady","elementReady","popup","params","PopupOpenError","writeToWindow","write","close","err2","writeElementToWindow","tag","tagName","documentElement","removeChild","setStyle","styleText","doc","styleSheet","cssText","createTextNode","createElement","class","className","attributes","setAttribute","contentWindow","awaitFrameLoadPromises","awaitFrameLoad","frame","has","linkFrameWindow","awaitFrameWindow","loadedFrame","iframe","frameBorder","allowTransparency","backgroundColor","removeEventListener","scanForJavascript","parseQuery","queryString","pair","decodeURIComponent","search","formatQuery","extendQuery","originalQuery","query","originalUrl","originalHash","hashString","elementStoppedMoving","getBoundingClientRect","top","bottom","left","right","width","height","getCurrentDimensions","offsetWidth","offsetHeight","changeStyle","styles","setOverflow","overflow","overflowX","overflowY","dimensionsDiff","one","two","threshold","trackDimensions","currentDimensions","check","newDimensions","changed","dimensions","onDimensionsChange","tracker","onWindowResize","dimensionsMatchViewport","innerWidth","innerHeight","bindEvents","eventNames","VENDOR_PREFIXES","setVendorCSS","capitalizedName","CSSRule","KEYFRAMES_RULE","WEBKIT_KEYFRAMES_RULE","MOZ_KEYFRAMES_RULE","O_KEYFRAMES_RULE","MS_KEYFRAMES_RULE","isValidAnimation","stylesheets","styleSheets","cssRules","cssRule","ANIMATION_START_EVENTS","ANIMATION_END_EVENTS","animate","clean","hasStarted","startTimeout","endTimeout","startEvent","endEvent","cleanUp","animationName","stopPropagation","STYLE","DISPLAY","NONE","BLOCK","VISIBILITY","VISIBLE","HIDDEN","IMPORTANT","makeElementVisible","setProperty","makeElementInvisible","showElement","hideElement","destroyElement","parentNode","showAndAnimate","animation","animateAndHide","addClass","classList","add","removeClass","remove","getCurrentScriptDir","getElementName","isElementClosed","watchElementForClose","getHttpType","onload","onerror","getHTML","getCSS","getScript","prefetchPage","JSX_EVENTS","onClick","fixScripts","newScript","textContent","replaceChild","jsxDom","content","textNode","denodeify","denodeifyWrapper","promisify","promisifyWRapper","cycle","isPerc","isPx","toNum","toPx","toCSS","percOf","num","perc","normalizeDimension","dim","max","memoized","memoizedFunction","__memoized__","displayName","promisifiedFunction","CONFIG","logInfo","logError","globalFor","__ZOID__","localGlobal","isRegex","MOCK","ABOUT","WILDCARD","WINDOW_TYPE","POPUP","IE_WIN_ACCESS_ERROR","isFileProtocol","isAboutProtocol","getOpener","canReadFromWindow","getActualDomain","mockDomain","isBlankDomain","isActuallySameDomain","desc","assertSameDomain","getParents","isAncestorParent","childParent","getFrames","frames","getAllChildFrames","childFrame","getTop","getNextOpener","getUltimateTop","getAllFramesInWindow","getAllWindows","isTop","isFrameWindowClosed","contains","safeIndexOf","collection","iframeWindows","iframeFrames","allowMock","closed","mockclosed","iframeIndex","cleanIframes","mockUserAgent","getFrameByName","winFrames","findChildFrameByName","namedFrame","findFrameByName","isParent","frameParent","isOpener","getAncestor","getAncestors","ancestor","isAncestor","actualParent","isPopup","isIframe","isFullpage","anyMatch","collection1","collection2","item1","item2","getDistanceFromTop","distance","getNthParent","n","getNthParentFromTop","isSameTopWindow","win1","win2","top1","top2","allFrames1","allFrames2","opener1","opener2","matchDomain","origin","some","subpattern","stringifyDomainPattern","getDomainFromUrl","onCloseWindow","maxtime","Infinity","isWindow","__cross_domain_utils_window_check__","isBrowser","isCurrentDomain","isMockDomain","normalizeMockUrl","closeWindow","getFrameForWindow","frameElement","TYPES","ZOID","POST_MESSAGE","INIT","PROPS","PROP_CALLBACK","CLOSE","CHECK_CLOSE","REDIRECT","RESIZE","DELEGATE","ALLOW_DELEGATE","HIDE","SHOW","PROP_TYPES","STRING","OBJECT","FUNCTION","BOOLEAN","NUMBER","INITIAL_PROPS","RAW","UID","WINDOW_REFERENCES","OPENER","TOP","PARENT","GLOBAL","PROP_TYPES_LIST","CONTEXT_TYPES","CLASS_NAMES","OUTLET","COMPONENT_FRAME","PRERENDER_FRAME","INVISIBLE","EVENTS","ATTRIBUTES","IFRAME_PLACEHOLDER","ANIMATION_NAMES","SHOW_CONTAINER","SHOW_COMPONENT","HIDE_CONTAINER","HIDE_COMPONENT","EVENT_NAMES","CLICK","CLOSE_REASONS","PARENT_CALL","CHILD_CALL","CLOSE_DETECTED","USER_CLOSED","PARENT_CLOSE_DETECTED","CONTEXT_TYPES_LIST","CALL_ORIGINAL","CALL_DELEGATE","DEFAULT_DIMENSIONS","WIDTH","CONSTANTS","WINDOW_PROPS","POSTROBOT","registerSelf","POST_MESSAGE_TYPE","REQUEST","RESPONSE","ACK","POST_MESSAGE_ACK","SUCCESS","POST_MESSAGE_NAMES","METHOD","HELLO","OPEN_TUNNEL","WINDOW_TYPES","FULLPAGE","SERIALIZATION_TYPES","PROMISE","ZALGO_PROMISE","REGEX","SEND_STRATEGIES","BRIDGE","MOCK_PROTOCOL","FILE_PROTOCOL","BRIDGE_NAME_PREFIX","POSTROBOT_PROXY","POST_MESSAGE_NAMES_LIST","ALLOW_POSTMESSAGE_POPUP","__ALLOW_POSTMESSAGE_POPUP__","__POST_ROBOT__","BRIDGE_TIMEOUT","CHILD_WINDOW_TIMEOUT","ACK_TIMEOUT","RES_TIMEOUT","ALLOWED_POST_MESSAGE_METHODS","ALLOW_SAME_ORIGIN","_extends","moduleGlobal","getGlobal","cache","glob","__CACHE_START_TIME__","hashStr","charCodeAt","pow","sqrt","strHashStr","total","String","fromCharCode","regmatch","safeJSON","listeners","listen","onceListener","awaitKey","newErr","stringifyErrorMessage","defaultMessage","patchMethod","original","patchedMethod","callOriginal","isObject","deepExtend","hasValue","arr","sortBy","order","sort","reverseMap","arrayRemove","pixels","percentage","round","min","regexMapMatcher","SEND_MESSAGE_STRATEGIES","serializedMessage","emulateIERestrictions","domains","dom","postMessage","sendBridgeMessage","needsBridgeForBrowser","isBridge","needsGlobalMessagingForBrowser","foreignGlobal","receiveMessage","buildMessage","getWindowType","sourceDomain","windowType","sendMessage","serializeMethods","messages","jsonStringify","strategyName","success","resetListeners","responseListeners","requestListeners","WINDOW_WILDCARD","WindowWildcard","erroredResponseListeners","__DOMAIN_REGEX__","addResponseListener","getResponseListener","deleteResponseListener","markResponseListenerErrored","isResponseListenerErrored","getRequestListener","nameListeners","winQualifier","winListeners","addRequestListener","listenersCollection","cancelListener","existingListener","strDomain","regexListeners","regexListener","delete","RECEIVE_MESSAGE_TYPES","ack","respond","originalSource","code","handleError","response","receivedMessages","parseMessage","parsedMessage","jsonParse","deserializeMethods","messageListener","messageEvent","sourceElement","originalEvent","listenForMessages","requestPromises","targetWindow","HTMLIFrameElement","hasResult","requestPromise","onChildWindowReady","sayHello","actualDomain","responseListener","ackTimeout","resTimeout","cycleTime","hasAck","sendToParent","client","listenerOptions","errorHandler","requestListener","onceFunction","listenOnce","errorOnClose","disable","cleanUpWindow","popupWindowsByWin","remoteWindows","readyPromises","initialized","openTunnelToOpener","initOnReady","listenForMethods","attachEvent","detachEvent","eachArray","eachObject","depth","childItem","weakMapMemoize","weakmap","weakmapMemoized","arg","indent","objectToJSON","arrayToJSON","meth","isSerialized","serializeMethod","destination","__id__","__name__","serializeError","__message__","__code__","serializePromise","__then__","serializeZalgoPromise","serializeRegex","__source__","deserializeMethod","wrapper","__xdomain__","deserializeError","deserializeZalgoPromise","deserializePromise","deserializeRegex","onHello","onAuthorize","onLegacyPaymentAuthorize","postBridge","watchForLegacyFallback","isLegacy","ppxoWatching","XMLHttpRequestsend","overrideXMLHttpRequestSend","_patched","DONE","returnUrl","billingToken","payerID","paymentID","Checkout","XhrResponse","RESPONSE_TYPES","mob","Xhr","_xhrOnReady","onLegacyFallback","addHeader","$Api","create","scrolling","buildUrl","payment","determineUrl","fundingSource","unsafeRenderTo","bridgeUrl","bridgeDomain","contexts","supportsPopups","validate","prerenderTemplate","componentTemplate","containerTemplate","required","queryParam","xprops","allowDelegate","getBrowserLocale","sendToChild","determineParameterFromToken","queryValue","childDecorate","alias","overlayColor","commit","experience","fundingOffered","elements","fundingSources","getAttribute","decorate","decorateOnAuthorize","actions","intent","closeComponent","redirect","redir","isButton","isGuest","access_token","onShippingChange","onAuth","sameDomain","wrapOnAuth","accessToken","onCancel","decorateOnCancel","cancelUrl","decorateInit","onClose","decorateOnClose","reason","shouldCancel","fallback","defaultFallback","__test__","action","sdkMeta","base64encode","isChild","onProps","injector","instance","payment_action","_context","isWebView","isStandAlone","standalone","matchMedia","isFacebookWebView","ua","isFirefoxIOS","isEdgeIOS","isOperaMini","isAndroid","isIos","isGoogleSearchApp","isQQBrowser","isIosWebview","isAndroidWebview","mHttp","mContent","isElectron","process","versions","electron","isMacOsCna","isChrome","isSafari","getFunctionName","fn","setFunctionName","btoa","m","p1","Buffer","from","base64decode","atob","randomID","timeID","toISOString","__GLOBAL__","serializeArgs","subkey","cacheMap","getOrSet","thisNamespace","cacheTime","promiseIdentity","memoizePromise","memoizedPromiseFunction","inlineMemoize","logic","__inline_memoize_cache__","regexp","svgToBase64","svg","objFilter","regexTokenize","promiseDebounced","localPromise","isInteger","isFloat","serializePrimitive","deserializePrimitive","parseFloat","undotify","keyResult","parts","part","isLast","isIndex","defineLazyProp","getter","arrayFrom","isObjectObject","isPlainObject","isDefined","weakMapMemoizePromise","weakmapMemoizedPromise","cleanup","tasks","cleaned","register","task","pop","tryCatch","removeFromArray","assertExists","thing","unique","KEY_CODES","ENTER","waitForWindowReady","waitForDocumentReady","waitForDocumentBody","urlWillRedirectPage","hasMetaViewPort","screen","isElementVisible","getClientRects","getPageRenderTime","domInteractive","keyCode","isLocalStorageEnabled","setItem","removeItem","getBrowserLocales","nav","languages","language","userLanguage","outerWidth","screenX","outerHeight","screenY","toolbar","menubar","resizable","scrollbars","border","onResize","currentWidth","currentHeight","newWidth","newHeight","observer","ResizeObserver","observe","MutationObserver","childList","subtree","characterData","disconnect","getResourceLoadTime","entries","entry","DEFAULT_SESSION_STORAGE","getStorage","lifetime","STORAGE_KEY","accessedStorage","getState","localStorageEnabled","rawStorage","getID","getSession","__session__","created","guid","getBelterExperimentStorage","isEventUnique","loggedBeacons","experiment","logTreatment","logCheckpoint","throttle","getGlobalNameSpace","globalKey","namespace","defValue","responseBody","wrapPromise","expected","expect","expectWrapper","avoid","avoidWrapper","expectError","expectErrorWrapper","drain","hasNativeWeakMap","freeze","testWeakMap","testKey","testValue","CrossDomainSafeWeakMap","_cleanupClosedWindows","isSafeToReadWrite","writable","P24_LOGO_COLORS","primary","secondary","p24Logo","logoColor","SOFORT_LOGO_COLORS","sofortLogo","IDEAL_LOGO_COLORS","tertiary","idealLogo","GIROPAY_LOGO_COLORS","giropayLogo","EPS_LOGO_COLORS","epsLogo","MYBANK_LOGO_COLORS","mybankLogo","BANCONTACT_LOGO_COLORS","bancontactLogo","PAYU_LOGO_COLORS","quaternary","payuLogo","VERKKOPANKKI_LOGO_COLORS","quinary","senary","verkkopankkiLogo","BLIK_LOGO_COLORS","blikLogo","TRUSTLY_LOGO_COLORS","trustlyLogo","MAXIMA_LOGO_COLORS","maximaLogo","BOLETO_LOGO_COLORS","boletoLogo","OXXO_LOGO_COLORS","oxxoLogo","PAYPAL_LOGO_COLORS","paypalLogo","CREDIT_LOGO_COLORS","creditLogo","fundingLogos","pp_white","pp_blue","pp_black","venmo_white","venmo_blue","itau","elv","elv_white","cardLogos","visa","amex","mastercard","maestro","discover","hiper","elo","jcb","cup","LOCAL_STORAGE_KEY","SESSION_KEY","GLOBAL_KEY","querySessionID","_assertThisInitialized","ReferenceError","_applyDecoratedDescriptor","property","decorators","initializer","reverse","reduce","decorator","complete","run","hasTasks","BaseComponent","component","addProp","createError","listenerName","errorListener","normalize","encode","base32","decode","buildChildWindowName","encodedName","encodedVersion","encodedOptions","isZoidComponentWindow","zoidcomp","getComponentMeta","componentMeta","getWindowByRef","ref","windows","getParentComponentWindow","componentParent","getParentRenderWindow","renderParent","getPosition","x","y","normalizeChildProp","getProp","looseProps","normalizeChildProps","getPropNames","ChildComponent","onPropHandlers","onInit","watchingForResize","autoResize","hasValidParentDomain","RenderError","setProps","getInitialProps","setWindows","exports","watchForResize","allowedParentDomains","parentComponentWindow","func","normalizedProps","parentWindow","__activeZoidComponent__","watchForClose","checkClose","enableAutoResize","getAutoResize","resize","updateProps","destroy","hide","show","userClose","focus","stringifiedError","_defineProperties","_createClass","Constructor","protoProps","staticProps","RENDER_DRIVERS","focusable","renderedIntoContainerTemplate","allowResize","openOnClick","needsBridge","childWindowName","title","frameWindow","detectClose","iframeWatcher","elementWatcher","openPrerender","prerenderIframe","prerenderFrameWindow","prerenderWindow","switchPrerender","delegateOverrides","openContainer","destroyComponent","destroyContainer","cancelContainerEvents","createPrerenderTemplate","showContainer","showComponent","hideContainer","hideComponent","loadUrl","hijackSubmit","renderTemplate","openContainerFrame","getOutlet","override","overrideOpen","validateProp","hasProp","isNaN","validateProps","normalizeProp","resultValue","decorated","normalizeProps","normalizedProp","getQueryValue","propsToQuery","propsDef","serialization","dotkey","escape","ParentComponent","handledErrors","outlet","childExports","validateParentDomain","renderTo","registerActiveComponent","watchForUnload","render","tryInit","onRender","driver","linkDomain","linkUrl","loadHTML","runTimeout","onEnter","checkAllowRenderTo","delegate","prefetch","activeComponents","getComponentParentRef","getRenderParentRef","renderToWindow","childDomain","sProps","getPropsForChild","secureProps","propUrl","builtinProps","getValidDomain","getUrl","finalUrl","xcomponent","builtUrl","needsBridgeParams","getBridgeUrl","hasBridge","getBridgeDomain","windowName","onDisplay","propName","overrides","overridenFunction","closeWindowListener","onunload","unloadWindowListener","hijack","targetElement","onTimeout","closeContainer","renderer","CLASS","ANIMATION","CONTEXT","EVENT","errErr","destroyAll","DelegateComponent","getOverrides","delegateOverride","validatePropDefinitions","anyEnabled","defaultContext","defaultEnv","defaultContainerTemplate","defaultPrerenderTemplate","getInternalProps","defaultLogLevel","drivers","angular","angular2","glimmer","react","vue","Component","listenForResize","driverCache","components","registerDrivers","registerChild","listenDelegate","driverName","dep","canRenderTo","getForEnv","envUrl","isZoidComponent","getRenderContext","validateRenderContext","getDefaultContext","renderIframe","renderPopup","renderIframeTo","renderPopupTo","prerender","innerProps","innerElement","logWarning","getByTag","postRobot","_postRobot","_CONSTANTS","isInsidePopup","isIE11","_inheritsLoose","subClass","superClass","__proto__","tunnelWindows","tunnelWindowId","deleteTunnelWindow","cleanTunnelWindows","tunnelWindow","addTunnelWindow","canary","getTunnelWindow","openTunnelToParent","needsBridgeForWin","needsBridgeForDomain","getBridgeName","sanitizedDomain","documentBodyReady","registerRemoteWindow","sendMessagePromise","findRemoteWindow","registerRemoteSendMessage","remoteWindow","sendMessageWrapper","remoteWin","remoteDomain","rejectRemoteSendMessage","messagingChild","messagingParent","awaitRemoteBridgeForWindow","bridges","bridgeFrames","popupWindowsByName","listenForRegister","winDetails","openBridgeFrame","windowOpen","windowOpenWrapper","last","winName","winOptions","destroyBridges","documentBody","loadScript","attrs","scriptOnReadyStateChange","scriptLoadError","attr","head","isNodeList","HTMLElement","getElements","NodeList","HTMLCollection","onDocumentReady","hasHash","serverUrl","originalQueryString","newQueryString","newUrl","normalizeLocale","normalizeLang","loc","allowIframe","IntegrationError","awaitBraintreeClient","braintree","auth","authorization","paypalCheckout","SUPPORTED_REST_FIELDS","transactions","amount","currency","external_selected_funding_instrument_type","shipping_address","line1","line2","city","postal_code","country_code","phone","recipient_name","application_context","brand_name","shipping_preference","landing_page","supported","supportedKeys","mapPaymentToBraintree","btPayment","flow","offerCredit","shippingAddressOverride","postalCode","countryCode","recipientName","landingPageType","enableShippingAddress","shippingAddressEditable","BEACON_URL","APP_NAME","beacon","appName","beaconImage","Image","isCheckpointUnique","FPTI_URL","buildPayload","v","t","getTimezoneOffset","flnm","shir","pgrp","page","vers","qual","tmpl","fpti","checkoutComponentStyle","getContainerStyle","getSandboxStyle","LOGO_COLOR","containerContent","preventDefault","alert","ppLogo","pp","paypal","windowMessage","continue","getPaymentType","paymentType","extendNamespace","xports","namespaces","childnamespaces","childname","childnamespace","NODE_JS","HI_BASE32_NO_NODE_JS","node","COMMON_JS","HI_BASE32_NO_COMMON_JS","module","AMD","define","BASE32_ENCODE_CHAR","BASE32_DECODE_CHAR","blocks","throwInvalidUtf8","position","partial","toUtf8String","bytes","followingChars","decodeAsBytes","base32Str","v1","v2","v3","v4","v5","v6","v7","v8","remain","encodeAscii","encodeUtf8","encodeBytes","input","asciiOnly","notString","ArrayBuffer","Uint8Array","asBytes","innerText","eval","scan","scriptTags","React","ReactDOM","createClass","componentDidMount","findDOMNode","setState","componentDidUpdate","componentWillUnmount","inheritAttrs","mounted","$el","$attrs","beforeUpdate","ng","directive","scope","restrict","controller","$scope","$element","safeApply","$root","$$phase","$apply","getProps","scopeProps","angularWrapped","$watch","GlimmerComponent","didInsertElement","zoid","AngularComponent","NgModule","ElementRef","NgZone","internalProps","angular2Wrapped","zone","ComponentInstance","inputs","Class","angularConstructor","elementRef","ngOnInit","nativeElement","ngOnChanges","ModuleInstance","declarations","e","r","C","o","u","f","l","h","p","d","w","E","S","T","N","whale","mzbrowser","coast","yandexbrowser","maxthon","epiphany","puffin","sleipnir","kMeleon","osname","windowsphone","chromeos","chromeBook","sailfish","seamonkey","firefoxos","phantom","slimer","blackberry","webos","touchpad","bada","tizen","qupzilla","chromium","googlebot","blink","webkit","gecko","mac","xbox","linux","k","osversion","L","tablet","s","isUnsupportedBrowser","_detect","detect","sourceWindow","k_r_submitter","k_r_success_contrls","brackets","serialize","form","serializer","hash_serializer","str_serialize","radio_store","disabled","nodeName","checked","empty","selectOptions","isSelectedOptions","option","allowedEmpty","selected","parse_keys","exec","hash_assign","shift","between","_values","existing","Button","existingVersion","_interface","errtype","containerStyle","BillingPage","cardType","prefilledZipCode","onEvent","ThreeDomainSecure","challengeUrl","threeDomainSecureToken","shouldCreateInitialPptmScript","existingScript","alreadyDownloaded","removePptm","pptmFactory","noContentFoundInContainer","reloadPptmScript","clientId","tryCreatePptmScript","shouldReloadPptmScript","createPptmScript","listenForLoadWithNoContent","listenForButtonRender","paypalDDL","buttonRenderEvent","mrid","client_id","fullUrl","async","pptm","proxyRest","createAccessToken","clientID","basicAuth","Authorization","grant_type","createExperienceProfile","experienceDetails","temporary","logPaymentResponse","links","rel","getDefaultReturnUrl","createTracking","trackingData","trackingID","createPayment","paymentDetails","redirect_urls","return_url","cancel_url","payment_method","experienceID","experience_profile_id","partner_attribution_id","createOrder","purchase_units","unit","reference_id","createBillingAgreement","billingDetails","plan","merchant_preferences","token_id","rest","billingAgreement","PROXY_REST","parentWin","onAuthorizeListener","loggedEvents","loggedExperimentEvents","duplicate","edge","logExperimentTreatment","externalExperiment","externalExperimentTreatment","externalExperimentToken","logReturn","returnToken","OPTYPE","PAYMENT","CANCEL","CONTINGENCY","PAYMENT_CANCELLED","wrapPopupBridge","popupBridge","onComplete","redirect_uri","getReturnUrlPrefix","validateCheckoutProps","normalizeCheckoutProps","useraction","native_xo","extractDataFromQuery","ba_token","paymentId","PayerID","opType","return_uri","cancel_uri","buildActions","redirectUrl","renderThroughPopupBridge","queryItems","awaitPopupBridge","setupPopupBridgeProxy","doRender","popupBridgeRender","popupBridgeRenderTo","popupBridgeRenderPopupTo","FUNDING_PRIORITY","FUNDING_ORDER","FUNDING_CONFIG","enabled","allowOptIn","allowOptOut","allowRemember","allowHorizontal","allowVertical","requireCommitAsTrue","__paypal_checkout__","serverConfig","paypalMerchantConfiguration","creditCard","isPayPalBranded","allowedCountries","defaultVerticalCountries","platforms","allowedEnvs","CARD_CONFIG","priority","getConfig","category","categoryConfig","getFundingConfig","getCardConfig","fundingEligibilityReasons","isFundingIneligible","funding","layout","isVertical","allowSecondary","disallowed","isFundingAutoEligible","allowed","remembered","isFundingEligible","eligible","ineligibleReason","autoEligibleReason","determineEligibleFunding","reasons","eligibleFunding","factors","unshift","determineEligibleCards","card","validateFunding","logFundingEligibility","table","BUTTON_CONFIG","colors","sizes","shapes","layouts","logoColors","tagLineColors","secondaryColors","dualTag","defaultLabel","defaultVerticalLabel","defaultColor","defaultSize","defaultVerticalSize","defaultShape","defaultLayout","defaultBranding","defaultVerticalBranding","defaultFundingIcons","defaultTagline","defaultDual","minimumSize","minimumVerticalSize","maximumSize","maximumVerticalSize","minHorizontalButtons","minVerticalButtons","maxHorizontalButtons","maxVerticalButtons","allowUnbranded","allowFundingIcons","allowPrimary","allowPrimaryVertical","allowPrimaryHorizontal","label","logoLabel","installmentperiod","allowSecondaryVertical","allowSecondaryHorizontal","FUNDING_TO_DEFAULT_LABEL","LABEL_TO_FUNDING","BUTTON_RELATIVE_STYLE","VERTICAL_MARGIN","BUTTON_STYLE","defaultWidth","defaultHeight","minWidth","maxWidth","minHeight","maxHeight","buttonTextMargin","allowFunding","allowTagline","byPayPalHeight","labelToFunding","fundingToDefaultLabel","getButtonConfig","parseLocale","determineMaxButtons","configMax","enableTagline","tagline","branding","fundingicons","defs","checkoutCustomization","size","color","shape","multiple","cards","validateButtonLocale","validateRegionSpecificButton","isInstallmentAllowedCountry","validateButtonStyle","maxbuttons","minButtons","buttonSize","validateButtonProps","SHOULD_FOCUS","CONTAINER","TAGLINE_COLOR","TEXT","LOGO","SEPARATOR","DOM_READY","PERSONALIZATION_TEXT","pageStyle","buttonStyle","layoutStyle","brandingStyle","labelStyle","DUAL_BUTTON_MIN_RATIO","buttonResponsiveStyle","cardNumber","buttonHeight","buttonTextMarginTop","minDualWidth","ceil","toFixed","buttonColorStyle","componentStyle","LoadingDots","Beacon","impression","Tagline","tagColor","getComponentScript","OPTIONAL","SELECTOR","TAG","toArray","parentElement","sum","getAllChildren","getOptionalIndex","getElementsTotalWidth","getOptionalParents","optional","getOptionalChildren","first","second","optionalParent","allChildren","optionalChildren","toggleOptionals","parentWidth","usedWidth","optionalChild","setupTabOutlineEvent","buttonsContainer","getElementsByClassName","tabKeyCode","handleMouseDownOnce","handleFirstTab","setDomReady","load","componentContent","allowedPersonalizationLabels","getCommonButtonClasses","getButtonClasses","getLocaleContent","determineLabel","labelMatchesFunding","determineButtons","buttonLabel","buttonColor","renderCards","logo","renderFundingIcons","renderPersonalizationButtonText","getButtonTextAnimationStyle","personalizedButtonText","allowedAnimation","MIN_WIDTH","LABEL_DURATION","PERSONALIZATION_DURATION","DELAY","COMPRESSED","EXPANDED","PAYPAL_BUTTON","PAYPAL_LOGO","BUTTON_TEXT","renderContent","dynamicContent","contentString","contentVariable","separator","renderButtonTextDiv","contentText","renderButton","morsText","buttonText","__WEB__","hasTabIndex","renderTagline","renderScript","renderStyle","renderPowerByPaypalLogo","isCardDisallowed","buttonNodes","taglineNode","fundingiconNode","styleNode","scriptNode","labelPowerByPayPal","possibleSizes","possibleSize","sizeA","sizeB","setupButtonChild","ButtonComponent","pageRenderTime","onApprove","pre","inlineGuest","treatments","isCreditDualEligible","creditThrottle","allowpaymentrequest","enableNativeCheckout","prefetchLogin","updateClientConfiguration","memoizedToken","button_version","remember","decorateOnRender","restart","tokenize","tokenizePayment","execute","nonce","decorateOnShippingChange","patch","patchObject","decorateOnClick","initialHeight","logInlineGuestOutOfViewPortOnlyOnce","onResizeHandler","getScrollOffsetY","pageYOffset","scrollTop","checkIfExpansionInViewport","scrollOffsetY","windowHeight","containerOffsetY","VISIBLE_THRESHOLD","isContainerExpanded","isExpansionInViewport","decorateValidate","validateCalled","getPageUrl","canRenderTop","methodName","unDebounce","createOriginal","createContext","originalPayment","resolveData","rejectActions","ctx","Card","initialFormValues","cardIcons","display","submitButton","currencyConversion","domainToEnv","setDomainEnv","currentDomainEnv","err3","currentProtocol","configure","precacheRemembered","setup","scriptProtocol","loadTime","apps","legacy","PayPalCheckout","enableCheckoutIframe","logger","_enableCheckoutIframe","_Checkout","_BillingPage","_ThreeDomainSecure","_destroyAll","LOG_PREFIX","MERCHANT_ID","CLASSES","HIDDEN_BUTTON","setupPostBridge","isLegacyEligible","DEFAULT_LANG","loadButtonJS","lc","childNodes","renderButtons","buttons","condition","click","getHijackTargetElement","parentTagName","grandparentElement","grandparentTagName","redirected","logRedirect","isToken","parseToken","hasToken","normalizeOptions","environment","badenv","concat","setupConfig","initXO","startFlow","closeFlow","matchUrlAndPaymentToken","checkUrlAgainstEnv","awaitPaymentTokenAndUrl","paymentTokenAndUrl","enablev3ajax","formSerialize","urlAndPaymentToken","paypalCheckoutInited","closeFlowCalled","initPayPalCheckout","closeUrl","renderPayPalCheckout","hijackTarget","urlProp","removeAttribute","handleClick","clickHandler","handleClickHijack","listenClick","isClick","instrumentButtonRender","instrumentButtonClick","setupCalled","invokeReady","onKey","oneTimeReady","number"],"mappings":";QAAA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;AC1EO,IAAMA,oBAAgD,GAAG;AAC5DC,OAAK,EAAe,OADwC;AAE5DC,MAAI,EAAgB,MAFwC;AAG5DC,OAAK,EAAe,OAHwC;AAI5DC,OAAK,EAAe,OAJwC;AAK5DC,QAAM,EAAc,QALwC;AAM5DC,YAAU,EAAU,YANwC;AAO5DC,cAAY,EAAQ,cAPwC;AAQ5DC,UAAQ,EAAY,UARwC;AAS5DC,SAAO,EAAa,SATwC;AAU5DC,QAAM,EAAc,QAVwC;AAW5DC,mBAAiB,EAAG;AAXwC,CAAzD;AAkBA,IAAMC,YAAgC,GAAG;AAC5CC,QAAM,EAAQ,QAD8B;AAE5CC,UAAQ,EAAM,UAF8B;AAG5CC,KAAG,EAAW,KAH8B;AAI5CC,QAAM,EAAQ,QAJ8B;AAK5CC,MAAI,EAAU,MAL8B;AAM5CC,QAAM,EAAQ,QAN8B;AAO5CC,aAAW,EAAG,aAP8B;AAQ5CC,OAAK,EAAS,OAR8B;AAS5CC,MAAI,EAAU,MAT8B;AAU5CC,OAAK,EAAS,OAV8B;AAW5CC,KAAG,EAAW,KAX8B;AAY5CC,YAAU,EAAI,YAZ8B;AAa5CC,SAAO,EAAO,SAb8B;AAc5CC,QAAM,EAAQ,QAd8B;AAe5CC,KAAG,EAAW,KAf8B;AAgB5CC,QAAM,EAAQ,QAhB8B;AAiB5CC,KAAG,EAAW,KAjB8B;AAkB5CC,MAAI,EAAU,MAlB8B;AAmB5CC,cAAY,EAAE,cAnB8B;AAoB5CC,MAAI,EAAU,MApB8B;AAqB5CC,SAAO,EAAO,SArB8B;AAsB5CC,QAAM,EAAQ,QAtB8B;AAuB5CC,QAAM,EAAQ,QAvB8B;AAwB5CC,MAAI,EAAU;AAxB8B,CAAzC;AA8BA,IAAMC,YAAgC,GAAG;AAC5CC,MAAI,EAAS,MAD+B;AAE5CC,MAAI,EAAS,MAF+B;AAG5CC,QAAM,EAAO,QAH+B;AAI5CC,OAAK,EAAQ,OAJ+B;AAK5CC,UAAQ,EAAK,UAL+B;AAM5CC,OAAK,EAAQ,OAN+B;AAO5CC,aAAW,EAAE;AAP+B,CAAzC;AAaA,IAAMC,iBAA0C,GAAG;AACtDN,MAAI,EAAG,MAD+C;AAEtDI,OAAK,EAAE,OAF+C;AAGtDF,OAAK,EAAE,OAH+C;AAItDK,KAAG,EAAI;AAJ+C,CAAnD;AAUA,IAAMC,WAA8B,GAAG;AAC1CC,MAAI,EAAQ,MAD8B;AAE1CC,OAAK,EAAO,OAF8B;AAG1CC,QAAM,EAAM,QAH8B;AAI1CC,OAAK,EAAO,OAJ8B;AAK1CC,MAAI,EAAQ,MAL8B;AAM1CC,YAAU,EAAE;AAN8B,CAAvC;AAYA,IAAMC,oBAAgD,GAAG;AAC5Db,OAAK,EAAE,OADqD;AAE5DF,MAAI,EAAG;AAFqD,CAAzD;AAQA,IAAMgB,YAAgC,GAAG;AAC5CC,MAAI,EAAE,MADsC;AAE5CC,MAAI,EAAE;AAFsC,CAAzC;AAQA,IAAMC,eAAsC,GAAG;AAClDC,SAAO,EAAI,SADuC;AAElDC,WAAS,EAAE;AAFuC,CAA/C;AAQA,IAAMC,aAAkC,GAAG;AAC9CC,YAAU,EAAE,YADkC;AAE9CC,UAAQ,EAAI;AAFkC,CAA3C;AAQA,IAAMC,aAAkC,GAAG;AAC9CC,QAAM,EAAI,QADoC;AAE9CC,UAAQ,EAAE;AAFoC,CAA3C;AAQA,IAAMC,WAA8B,GAAG;AAC1CC,IAAE,EAAY,IAD4B;AAE1CvD,QAAM,EAAQ,QAF4B;AAG1CO,OAAK,EAAS,OAH4B;AAI1CC,MAAI,EAAU,MAJ4B;AAK1CL,QAAM,EAAQ,QAL4B;AAM1CM,OAAK,EAAS,OAN4B;AAO1CC,KAAG,EAAW,KAP4B;AAQ1CC,YAAU,EAAI,YAR4B;AAS1CC,SAAO,EAAO,SAT4B;AAU1CC,QAAM,EAAQ,QAV4B;AAW1CC,KAAG,EAAW,KAX4B;AAY1CC,QAAM,EAAQ,QAZ4B;AAa1CC,KAAG,EAAW,KAb4B;AAc1CC,MAAI,EAAU,MAd4B;AAe1CC,cAAY,EAAE,cAf4B;AAgB1CC,MAAI,EAAU,MAhB4B;AAiB1CC,SAAO,EAAO,SAjB4B;AAkB1CC,QAAM,EAAQ,QAlB4B;AAmB1CC,QAAM,EAAQ,QAnB4B;AAoB1CC,MAAI,EAAU;AApB4B,CAAvC,C;;ACjIA,IAAMiC,sBAAsB,GAAG;AAClC5B,OAAK,EAAE,OAD2B;AAElCE,OAAK,EAAE;AAF2B,CAA/B,C;;ACAA,IAAM2B,OAAO,GAAG;AACnBzD,QAAM,EAAQ,QADK;AAEnBO,OAAK,EAAS,OAFK;AAGnBC,MAAI,EAAU,MAHK;AAInBL,QAAM,EAAQ,QAJK;AAKnBC,MAAI,EAAU,MALK;AAMnBK,OAAK,EAAS,OANK;AAOnBC,KAAG,EAAW,KAPK;AAQnBC,YAAU,EAAI,YARK;AASnBC,SAAO,EAAO,SATK;AAUnBC,QAAM,EAAQ,QAVK;AAWnBC,KAAG,EAAW,KAXK;AAYnBC,QAAM,EAAQ,QAZK;AAanBC,KAAG,EAAW,KAbK;AAcnB0C,SAAO,EAAO,SAdK;AAenBzC,MAAI,EAAU,MAfK;AAgBnBC,cAAY,EAAE,cAhBK;AAiBnBC,MAAI,EAAU,MAjBK;AAkBnBC,SAAO,EAAO,SAlBK;AAmBnBC,QAAM,EAAQ,QAnBK;AAoBnBC,QAAM,EAAQ,QApBK;AAqBnBC,MAAI,EAAU;AArBK,CAAhB;AAwBA,IAAMnB,IAAI,GAAG;AAChBuD,MAAI,EAAS,MADG;AAEhBC,YAAU,EAAG,YAFG;AAGhBC,MAAI,EAAS,MAHG;AAIhBC,UAAQ,EAAK,UAJG;AAKhBC,QAAM,EAAO,QALG;AAMhBC,SAAO,EAAM,SANG;AAOhBC,OAAK,EAAQ,OAPG;AAQhBC,KAAG,EAAU,KARG;AAShBC,KAAG,EAAU,KATG;AAUhBC,KAAG,EAAU,KAVG;AAWhBC,UAAQ,EAAK,UAXG;AAYhBC,SAAO,EAAM,SAZG;AAahBC,SAAO,EAAM,SAbG;AAchBC,aAAW,EAAE;AAdG,CAAb;AAiBA,IAAMC,0BAA0B,GAAG;AACtCC,SAAO,EAAe,0CADgB;AAEtCC,aAAW,EAAW,qDAFgB;AAGtCC,sBAAoB,EAAE,wDAHgB;AAItCC,SAAO,EAAe,yDAJgB;AAKtCC,QAAM,EAAgB,mDALgB;AAMtCC,oBAAkB,EAAI,0DANgB;AAOtCC,iBAAe,EAAO,iEAPgB;AAQtCC,SAAO,EAAe,wDARgB;AAStCC,YAAU,EAAY,wDATgB;AAUtCC,aAAW,EAAW,2DAVgB;AAWtCC,gBAAc,EAAQ,kEAXgB;AAYtCC,aAAW,EAAW;AAZgB,CAAnC;AAeA,IAAMC,aAAa,GAAG,CACzBlF,IAAI,CAACuD,IADoB,EAEzBvD,IAAI,CAACwD,UAFoB,EAGzBxD,IAAI,CAACyD,IAHoB,EAIzBzD,IAAI,CAAC0D,QAJoB,EAKzB1D,IAAI,CAAC2D,MALoB,EAMzB3D,IAAI,CAAC4D,OANoB,EAOzB5D,IAAI,CAAC6D,KAPoB,EAQzB7D,IAAI,CAAC8D,GARoB,EASzB9D,IAAI,CAAC+D,GAToB,EAUzB/D,IAAI,CAACgE,GAVoB,EAWzBhE,IAAI,CAACiE,QAXoB,EAYzBjE,IAAI,CAACkE,OAZoB,EAazBlE,IAAI,CAACmE,OAboB,EAczBnE,IAAI,CAACoE,WAdoB,CAAtB,C;;ACxDA,IAAMe,GAAG,GAAG;AACfC,OAAK,EAAO,OADG;AAEfC,OAAK,EAAO,OAFG;AAGfC,SAAO,EAAK,SAHG;AAIfC,YAAU,EAAE,YAJG;AAKfC,MAAI,EAAQ,MALG;AAMfC,MAAI,EAAQ;AANG,CAAZ;AASA,IAAMC,KAAK,GAAG;AACjBC,KAAG,EAAS,KADK;AAEjBb,YAAU,EAAE;AAFK,CAAd;AAKA,IAAMc,MAAM,GAAG;AAClBC,QAAM,EAAU,QADE;AAElBC,gBAAc,EAAE;AAFE,CAAf;AAKA,IAAMC,SAAS,GAAG;AACrBC,OAAK,EAAE,OADc;AAErBC,MAAI,EAAG,MAFc;AAGrBC,MAAI,EAAG,MAHc;AAIrBC,OAAK,EAAE;AAJc,CAAlB;AAOA,IAAMC,YAAY,GAAG;AACxBC,UAAQ,EAAE,UADc;AAExBC,UAAQ,EAAE,UAFc;AAGxBC,QAAM,EAAI;AAHc,CAArB;AAMA,IAAMC,OAAO,GAAG,SAAhB;AAEA,IAAMC,SAAS,GAAG;AACrBC,QAAM,EAAU,aADK;AAErBC,gBAAc,EAAE,qBAFK;AAGrB3G,MAAI,EAAY,WAHK;AAIrB4G,SAAO,EAAS,cAJK;AAKrBxH,QAAM,EAAU,aALK;AAMrBH,MAAI,EAAY;AANK,CAAlB;AASA,IAAM4H,QAAQ,GAAG;AACpBC,SAAO,EAAE,SADW;AAEpBC,QAAM,EAAG;AAFW,CAAjB;AAKA,IAAMlC,OAAO,GAAG,SAAhB,C;;;;AChDP;AAEO,IAAMmC,IAAI,GAAG;AAEhBC,KAAG,EAAE;AACDC,QAAI,EAAoB,WADvB;AAEDC,SAAK,EAAmB,YAFvB;AAGDC,cAAU,EAAc,iBAHvB;AAIDC,eAAW,EAAa,aAJvB;AAKDC,eAAW,EAAa,iBALvB;AAMDC,sBAAkB,EAAM,mBANvB;AAODC,SAAK,EAAmB,OAPvB;AAQDC,cAAU,EAAc,YARvB;AASDC,gBAAY,EAAY,cATvB;AAUDC,WAAO,EAAiB,aAVvB;AAWDpB,UAAM,EAAkB,QAXvB;AAYDqB,aAAS,EAAe,WAZvB;AAaDC,eAAW,EAAa,wBAbvB;AAcDC,iBAAa,EAAW,eAdvB;AAeDC,cAAU,EAAc,gBAfvB;AAgBDC,cAAU,EAAc,gBAhBvB;AAiBDC,kBAAc,EAAU,gBAjBvB;AAkBDC,mBAAe,EAAS,YAlBvB;AAmBDC,kBAAc,EAAU,eAnBvB;AAoBDC,mBAAe,EAAS,iBApBvB;AAqBDC,gBAAY,EAAY,0BArBvB;AAsBDC,iBAAa,EAAW,wBAtBvB;AAuBDC,kBAAc,EAAU,yBAvBvB;AAwBD3F,iBAAa,EAAW,eAxBvB;AAyBDxB,gBAAY,EAAY,cAzBvB;AA0BDU,eAAW,EAAa,aA1BvB;AA2BDQ,gBAAY,EAAY,cA3BvB;AA4BD3C,gBAAY,EAAY,cA5BvB;AA6BD6I,gBAAY,EAAY,cA7BvB;AA8BD5B,WAAO,EAAiB,oBA9BvB;AA+BD6B,eAAW,EAAa,aA/BvB;AAgCDC,sBAAkB,EAAM,oBAhCvB;AAiCDC,0BAAsB,EAAE,wBAjCvB;AAkCDC,qBAAiB,EAAO,mBAlCvB;AAmCDC,gBAAY,EAAY,cAnCvB;AAoCDC,kBAAc,EAAU;AApCvB,GAFW;AAyChBzB,aAAW,EAAE;AACT0B,UAAM,EAAE,QADC;AAETC,QAAI,EAAI,MAFC;AAGTC,UAAM,EAAE;AAHC,GAzCG;AA+ChBpB,aAAW,EAAE;AACThI,YAAQ,EAAE;AADD,GA/CG;AAmDhB6H,cAAY;AACRwB,qBAAiB,EAAU;AADnB,mBAEN9C,YAAY,CAACG,MAFP,IAEmB,QAFnB,gBAGNH,YAAY,CAACC,QAHP,IAGmB,UAHnB,gBAIND,YAAY,CAACE,QAJP,IAImB,UAJnB,gBAnDI;AA0DhBY,MAAI,EAAE;AACFiC,cAAU,EAAE;AADV,GA1DU;AA8DhBhC,OAAK,EAAE;AACHiC,QAAI,EAAM,iBADP;AAEH1C,UAAM,EAAI,mBAFP;AAGH7G,YAAQ,EAAE,qBAHP;AAIHwJ,QAAI,EAAM;AAJP,GA9DS;AAqEhBjC,YAAU,EAAE;AACRkC,eAAW,EAAE,qBADL;AAGRC,iBAAa,EAAI,uBAHT;AAIRC,eAAW,EAAM,qBAJT;AAKRC,gBAAY,EAAK,sBALT;AAORC,+BAA2B,EAAE,qCAPrB;AAQRC,8BAA0B,EAAG,oCARrB;AAURC,kBAAc,EAAG,wBAVT;AAWRC,mBAAe,EAAE,yBAXT;AAaRC,iBAAa,EAAa,uBAblB;AAcRC,sBAAkB,EAAQ,4BAdlB;AAeRC,4BAAwB,EAAE,kCAflB;AAgBRC,mBAAe,EAAW,yBAhBlB;AAiBRC,kBAAc,EAAY,wBAjBlB;AAmBRC,uBAAmB,EAAW,6BAnBtB;AAoBRC,gCAA4B,EAAE,sCApBtB;AAsBRC,aAAS,EAAI,mBAtBL;AAuBRC,eAAW,EAAE;AAvBL;AArEI,CAAb,C;;;;ACFA,IAAMC,OAAO,GAAG;AACnBC,IAAE,EAAE,IADe;AAEnBC,IAAE,EAAE,IAFe;AAGnBC,IAAE,EAAE,IAHe;AAInBC,IAAE,EAAE,IAJe;AAKnBC,IAAE,EAAE,IALe;AAMnBC,IAAE,EAAE,IANe;AAOnBC,IAAE,EAAE,IAPe;AAQnBC,IAAE,EAAE,IARe;AASnBC,IAAE,EAAE,IATe;AAUnBC,IAAE,EAAE,IAVe;AAWnBC,IAAE,EAAE,IAXe;AAYnBC,IAAE,EAAE,IAZe;AAanBC,IAAE,EAAE,IAbe;AAcnBC,IAAE,EAAE,IAde;AAenBC,IAAE,EAAE,IAfe;AAgBnBC,IAAE,EAAE,IAhBe;AAiBnBC,IAAE,EAAE,IAjBe;AAkBnBC,IAAE,EAAE,IAlBe;AAmBnBC,IAAE,EAAE,IAnBe;AAoBnBC,IAAE,EAAE,IApBe;AAqBnBC,IAAE,EAAE,IArBe;AAsBnBC,IAAE,EAAE,IAtBe;AAuBnBC,IAAE,EAAE,IAvBe;AAwBnBC,IAAE,EAAE,IAxBe;AAyBnBC,IAAE,EAAE,IAzBe;AA0BnBC,IAAE,EAAE,IA1Be;AA2BnBC,IAAE,EAAE,IA3Be;AA4BnBC,IAAE,EAAE,IA5Be;AA6BnBC,IAAE,EAAE,IA7Be;AA8BnBC,IAAE,EAAE,IA9Be;AA+BnBC,IAAE,EAAE,IA/Be;AAgCnBC,IAAE,EAAE,IAhCe;AAiCnBC,IAAE,EAAE,IAjCe;AAkCnBC,IAAE,EAAE,IAlCe;AAmCnBC,IAAE,EAAE,IAnCe;AAoCnBC,IAAE,EAAE,IApCe;AAqCnBC,IAAE,EAAE,IArCe;AAsCnBC,IAAE,EAAE,IAtCe;AAuCnBC,IAAE,EAAE,IAvCe;AAwCnBC,IAAE,EAAE,IAxCe;AAyCnBC,IAAE,EAAE,IAzCe;AA0CnBC,IAAE,EAAE,IA1Ce;AA2CnBC,IAAE,EAAE,IA3Ce;AA4CnBC,IAAE,EAAE,IA5Ce;AA6CnBC,IAAE,EAAE,IA7Ce;AA8CnBC,IAAE,EAAE,IA9Ce;AA+CnBC,IAAE,EAAE,IA/Ce;AAgDnBC,IAAE,EAAE,IAhDe;AAiDnBC,IAAE,EAAE,IAjDe;AAkDnBC,IAAE,EAAE,IAlDe;AAmDnBC,IAAE,EAAE,IAnDe;AAoDnBC,IAAE,EAAE,IApDe;AAqDnBC,IAAE,EAAE,IArDe;AAsDnBC,IAAE,EAAE,IAtDe;AAuDnBC,IAAE,EAAE,IAvDe;AAwDnBC,IAAE,EAAE,IAxDe;AAyDnBC,IAAE,EAAE,IAzDe;AA0DnBC,IAAE,EAAE,IA1De;AA2DnBC,IAAE,EAAE,IA3De;AA4DnBC,IAAE,EAAE,IA5De;AA6DnBC,IAAE,EAAE,IA7De;AA8DnBC,IAAE,EAAE,IA9De;AA+DnBC,IAAE,EAAE,IA/De;AAgEnBC,IAAE,EAAE,IAhEe;AAiEnBC,IAAE,EAAE,IAjEe;AAkEnBC,IAAE,EAAE,IAlEe;AAmEnBC,IAAE,EAAE,IAnEe;AAoEnBC,IAAE,EAAE,IApEe;AAqEnBC,IAAE,EAAE,IArEe;AAsEnBC,IAAE,EAAE,IAtEe;AAuEnBC,IAAE,EAAE,IAvEe;AAwEnBC,IAAE,EAAE,IAxEe;AAyEnBC,IAAE,EAAE,IAzEe;AA0EnBC,IAAE,EAAE,IA1Ee;AA2EnBC,IAAE,EAAE,IA3Ee;AA4EnBC,IAAE,EAAE,IA5Ee;AA6EnBC,IAAE,EAAE,IA7Ee;AA8EnBC,IAAE,EAAE,IA9Ee;AA+EnBC,IAAE,EAAE,IA/Ee;AAgFnBC,IAAE,EAAE,IAhFe;AAiFnBC,IAAE,EAAE,IAjFe;AAkFnBC,IAAE,EAAE,IAlFe;AAmFnBC,IAAE,EAAE,IAnFe;AAoFnBC,IAAE,EAAE,IApFe;AAqFnBC,IAAE,EAAE,IArFe;AAsFnBC,IAAE,EAAE,IAtFe;AAuFnBC,IAAE,EAAE,IAvFe;AAwFnBC,IAAE,EAAE,IAxFe;AAyFnBC,IAAE,EAAE,IAzFe;AA0FnBC,IAAE,EAAE,IA1Fe;AA2FnBC,IAAE,EAAE,IA3Fe;AA4FnBC,IAAE,EAAE,IA5Fe;AA6FnBC,IAAE,EAAE,IA7Fe;AA8FnBC,IAAE,EAAE,IA9Fe;AA+FnBC,IAAE,EAAE,IA/Fe;AAgGnBC,IAAE,EAAE,IAhGe;AAiGnBC,IAAE,EAAE,IAjGe;AAkGnBC,IAAE,EAAE,IAlGe;AAmGnBC,IAAE,EAAE,IAnGe;AAoGnBC,IAAE,EAAE,IApGe;AAqGnBC,IAAE,EAAE,IArGe;AAsGnBC,IAAE,EAAE,IAtGe;AAuGnBC,IAAE,EAAE,IAvGe;AAwGnBC,IAAE,EAAE,IAxGe;AAyGnBC,IAAE,EAAE,IAzGe;AA0GnBC,IAAE,EAAE,IA1Ge;AA2GnBC,IAAE,EAAE,IA3Ge;AA4GnBC,IAAE,EAAE,IA5Ge;AA6GnBC,IAAE,EAAE,IA7Ge;AA8GnBC,IAAE,EAAE,IA9Ge;AA+GnBC,IAAE,EAAE,IA/Ge;AAgHnBC,IAAE,EAAE,IAhHe;AAiHnBC,IAAE,EAAE,IAjHe;AAkHnBC,IAAE,EAAE,IAlHe;AAmHnBC,IAAE,EAAE,IAnHe;AAoHnBC,IAAE,EAAE,IApHe;AAqHnBC,IAAE,EAAE,IArHe;AAsHnBC,IAAE,EAAE,IAtHe;AAuHnBC,IAAE,EAAE,IAvHe;AAwHnBC,IAAE,EAAE,IAxHe;AAyHnBC,IAAE,EAAE,IAzHe;AA0HnBC,IAAE,EAAE,IA1He;AA2HnBC,IAAE,EAAE,IA3He;AA4HnBC,IAAE,EAAE,IA5He;AA6HnBC,IAAE,EAAE,IA7He;AA8HnBC,IAAE,EAAE,IA9He;AA+HnBC,IAAE,EAAE,IA/He;AAgInBC,IAAE,EAAE,IAhIe;AAiInBC,IAAE,EAAE,IAjIe;AAkInBC,IAAE,EAAE,IAlIe;AAmInBC,IAAE,EAAE,IAnIe;AAoInBC,IAAE,EAAE,IApIe;AAqInBC,IAAE,EAAE,IArIe;AAsInBC,IAAE,EAAE,IAtIe;AAuInBC,IAAE,EAAE,IAvIe;AAwInBC,IAAE,EAAE,IAxIe;AAyInBC,IAAE,EAAE,IAzIe;AA0InBC,IAAE,EAAE,IA1Ie;AA2InBC,IAAE,EAAE,IA3Ie;AA4InBC,IAAE,EAAE,IA5Ie;AA6InBC,IAAE,EAAE,IA7Ie;AA8InBC,IAAE,EAAE,IA9Ie;AA+InBC,IAAE,EAAE,IA/Ie;AAgJnBC,IAAE,EAAE,IAhJe;AAiJnBC,IAAE,EAAE,IAjJe;AAkJnBC,IAAE,EAAE,IAlJe;AAmJnBC,IAAE,EAAE,IAnJe;AAoJnBC,IAAE,EAAE,IApJe;AAqJnBC,IAAE,EAAE,IArJe;AAsJnBC,IAAE,EAAE,IAtJe;AAuJnBC,IAAE,EAAE,IAvJe;AAwJnBC,IAAE,EAAE,IAxJe;AAyJnBC,IAAE,EAAE,IAzJe;AA0JnBC,IAAE,EAAE,IA1Je;AA2JnBC,IAAE,EAAE,IA3Je;AA4JnBC,IAAE,EAAE,IA5Je;AA6JnBC,IAAE,EAAE,IA7Je;AA8JnBC,IAAE,EAAE,IA9Je;AA+JnBC,IAAE,EAAE,IA/Je;AAgKnBC,IAAE,EAAE,IAhKe;AAiKnBC,IAAE,EAAE,IAjKe;AAkKnBC,IAAE,EAAE,IAlKe;AAmKnBC,IAAE,EAAE,IAnKe;AAoKnBC,IAAE,EAAE,IApKe;AAqKnBC,IAAE,EAAE,IArKe;AAsKnBC,IAAE,EAAE,IAtKe;AAuKnBC,IAAE,EAAE,IAvKe;AAwKnBC,IAAE,EAAE,IAxKe;AAyKnBC,IAAE,EAAE,IAzKe;AA0KnBC,IAAE,EAAE,IA1Ke;AA2KnBC,IAAE,EAAE,IA3Ke;AA4KnBC,IAAE,EAAE,IA5Ke;AA6KnBC,IAAE,EAAE,IA7Ke;AA8KnBC,IAAE,EAAE,IA9Ke;AA+KnBC,IAAE,EAAE,IA/Ke;AAgLnBC,IAAE,EAAE,IAhLe;AAiLnBC,IAAE,EAAE,IAjLe;AAkLnBC,IAAE,EAAE,IAlLe;AAmLnBC,IAAE,EAAE,IAnLe;AAoLnBC,IAAE,EAAE,IApLe;AAqLnBC,IAAE,EAAE,IArLe;AAsLnBC,IAAE,EAAE,IAtLe;AAuLnBC,IAAE,EAAE,IAvLe;AAwLnBC,IAAE,EAAE,IAxLe;AAyLnBC,IAAE,EAAE,IAzLe;AA0LnBC,IAAE,EAAE,IA1Le;AA2LnBC,IAAE,EAAE,IA3Le;AA4LnBC,IAAE,EAAE,IA5Le;AA6LnBC,IAAE,EAAE,IA7Le;AA8LnBC,IAAE,EAAE,IA9Le;AA+LnBC,IAAE,EAAE,IA/Le;AAgMnBC,IAAE,EAAE,IAhMe;AAiMnBC,IAAE,EAAE,IAjMe;AAkMnBC,IAAE,EAAE,IAlMe;AAmMnBC,IAAE,EAAE,IAnMe;AAoMnBC,IAAE,EAAE,IApMe;AAqMnBC,IAAE,EAAE,IArMe;AAsMnBC,IAAE,EAAE,IAtMe;AAuMnBC,IAAE,EAAE,IAvMe;AAwMnBC,IAAE,EAAE,IAxMe;AAyMnBC,IAAE,EAAE,IAzMe;AA0MnBC,IAAE,EAAE,IA1Me;AA2MnBC,IAAE,EAAE,IA3Me;AA4MnBC,IAAE,EAAE;AA5Me,CAAhB;AA+MA,IAAMC,IAAI,GAAG;AAChBpM,IAAE,EAAE,IADY;AAEhBqM,IAAE,EAAE,IAFY;AAGhBC,IAAE,EAAE,IAHY;AAIhBjK,IAAE,EAAE,IAJY;AAKhBkK,IAAE,EAAE,IALY;AAMhBC,IAAE,EAAE,IANY;AAOhBzJ,IAAE,EAAE,IAPY;AAQhBE,IAAE,EAAE,IARY;AAShBK,IAAE,EAAE,IATY;AAUhBmJ,IAAE,EAAE,IAVY;AAWhBjI,IAAE,EAAE,IAXY;AAYhBC,IAAE,EAAE,IAZY;AAahBK,IAAE,EAAE,IAbY;AAchB4H,IAAE,EAAE,IAdY;AAehBC,IAAE,EAAE,IAfY;AAgBhB9E,IAAE,EAAE,IAhBY;AAiBhBC,IAAE,EAAE,IAjBY;AAkBhBW,IAAE,EAAE,IAlBY;AAmBhBG,IAAE,EAAE,IAnBY;AAoBhBO,IAAE,EAAE,IApBY;AAqBhBU,IAAE,EAAE,IArBY;AAsBhBO,IAAE,EAAE,IAtBY;AAuBhBK,IAAE,EAAE,IAvBY;AAwBhBK,IAAE,EAAE,IAxBY;AAyBhB8B,IAAE,EAAE;AAzBY,CAAb;AA4BA,IAAMC,uBAAuB,sDAC/BT,IAAI,CAACpM,EAD0B,IACrBT,OAAO,CAAC8J,EADa,wBAE/B+C,IAAI,CAACC,EAF0B,IAErB9M,OAAO,CAAC6C,EAFa,wBAG/BgK,IAAI,CAACE,EAH0B,IAGrB/M,OAAO,CAACgD,EAHa,wBAI/B6J,IAAI,CAAC/J,EAJ0B,IAIrB9C,OAAO,CAAC8C,EAJa,wBAK/B+J,IAAI,CAACG,EAL0B,IAKrBhN,OAAO,CAAC0E,EALa,wBAM/BmI,IAAI,CAACI,EAN0B,IAMrBjN,OAAO,CAAC8L,EANa,wBAO/Be,IAAI,CAACrJ,EAP0B,IAOrBxD,OAAO,CAACwD,EAPa,wBAQ/BqJ,IAAI,CAACnJ,EAR0B,IAQrB1D,OAAO,CAAC0D,EARa,wBAS/BmJ,IAAI,CAAC9I,EAT0B,IASrB/D,OAAO,CAAC+D,EATa,wBAU/B8I,IAAI,CAACK,EAV0B,IAUrBlN,OAAO,CAACoF,EAVa,wBAW/ByH,IAAI,CAAC5H,EAX0B,IAWrBjF,OAAO,CAACiF,EAXa,wBAY/B4H,IAAI,CAAC3H,EAZ0B,IAYrBlF,OAAO,CAACkF,EAZa,wBAa/B2H,IAAI,CAACtH,EAb0B,IAarBvF,OAAO,CAACuF,EAba,wBAc/BsH,IAAI,CAACM,EAd0B,IAcrBnN,OAAO,CAAC0F,EAda,wBAe/BmH,IAAI,CAACO,EAf0B,IAerBpN,OAAO,CAACiG,EAfa,wBAgB/B4G,IAAI,CAACvE,EAhB0B,IAgBrBtI,OAAO,CAACsI,EAhBa,wBAiB/BuE,IAAI,CAACtE,EAjB0B,IAiBrBvI,OAAO,CAACuI,EAjBa,wBAkB/BsE,IAAI,CAAC3D,EAlB0B,IAkBrBlJ,OAAO,CAACkJ,EAlBa,wBAmB/B2D,IAAI,CAACxD,EAnB0B,IAmBrBrJ,OAAO,CAACqJ,EAnBa,wBAoB/BwD,IAAI,CAACjD,EApB0B,IAoBrB5J,OAAO,CAAC4J,EApBa,wBAqB/BiD,IAAI,CAACvC,EArB0B,IAqBrBtK,OAAO,CAACsK,EArBa,wBAsB/BuC,IAAI,CAAChC,EAtB0B,IAsBrB7K,OAAO,CAACiK,EAtBa,wBAuB/B4C,IAAI,CAAC3B,EAvB0B,IAuBrBlL,OAAO,CAACkL,EAvBa,wBAwB/B2B,IAAI,CAACtB,EAxB0B,IAwBrBvL,OAAO,CAACuL,EAxBa,wBAyB/BsB,IAAI,CAACQ,EAzB0B,IAyBrBrN,OAAO,CAACwC,EAzBa,wBAA7B;AA4BA,IAAM+K,6BAA6B,GAAG,CAAEvN,OAAO,CAACyB,EAAV,EAAczB,OAAO,CAAC6H,EAAtB,CAAtC;AACA,IAAM2F,0BAA0B,GAAG;AACtC/L,IAAE,EAAE,CAAE,CAAF,EAAK,CAAL,EAAQ,CAAR,EAAW,CAAX,EAAc,CAAd,EAAiB,CAAjB,EAAoB,CAApB,EAAuB,CAAvB,EAA0B,EAA1B,EAA8B,EAA9B,EAAkC,EAAlC,CADkC;AAEtCoG,IAAE,EAAE,CAAE,CAAF,EAAK,CAAL,EAAQ,CAAR,EAAW,EAAX;AAFkC,CAAnC,C;;;;ACxQP;AAEO,IAAM4F,MAAM,0BACdzN,OAAO,CAACC,EADM,IACD,CAAE4M,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CADC,UAEdrN,OAAO,CAACE,EAFM,IAED,CAAE2M,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,EAAsCR,IAAI,CAACpM,EAA3C,CAFC,UAGdT,OAAO,CAACG,EAHM,IAGD,CAAE0M,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAHC,UAIdrN,OAAO,CAACI,EAJM,IAID,CAAEyM,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAJC,UAKdrN,OAAO,CAACK,EALM,IAKD,CAAEwM,IAAI,CAACI,EAAP,CALC,UAMdjN,OAAO,CAACM,EANM,IAMD,CAAEuM,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CANC,UAOdrN,OAAO,CAACO,EAPM,IAOD,CAAEsM,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAPC,UAQdrN,OAAO,CAACQ,EARM,IAQD,CAAEqM,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CARC,UASdrN,OAAO,CAACS,EATM,IASD,CAAEoM,IAAI,CAACrJ,EAAP,EAAWqJ,IAAI,CAACI,EAAhB,CATC,UAUdjN,OAAO,CAACU,EAVM,IAUD,CAAEmM,IAAI,CAAC/J,EAAP,EAAW+J,IAAI,CAACI,EAAhB,CAVC,UAWdjN,OAAO,CAACW,EAXM,IAWD,CAAEkM,IAAI,CAACI,EAAP,CAXC,UAYdjN,OAAO,CAACY,EAZM,IAYD,CAAEiM,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAZC,UAadrN,OAAO,CAACa,EAbM,IAaD,CAAEgM,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAbC,UAcdrN,OAAO,CAACc,EAdM,IAcD,CAAE+L,IAAI,CAACI,EAAP,CAdC,UAedjN,OAAO,CAACe,EAfM,IAeD,CAAE8L,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAfC,UAgBdrN,OAAO,CAACgB,EAhBM,IAgBD,CAAE6L,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAACvE,EAAhB,EAAoBuE,IAAI,CAAC9I,EAAzB,CAhBC,UAiBd/D,OAAO,CAACiB,EAjBM,IAiBD,CAAE4L,IAAI,CAAC9I,EAAP,EAAW8I,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAjBC,UAkBdrN,OAAO,CAACkB,EAlBM,IAkBD,CAAE2L,IAAI,CAACI,EAAP,CAlBC,UAmBdjN,OAAO,CAACmB,EAnBM,IAmBD,CAAE0L,IAAI,CAACpM,EAAP,EAAWoM,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACrJ,EAAlC,EAAsCqJ,IAAI,CAACQ,EAA3C,CAnBC,UAoBdrN,OAAO,CAACoB,EApBM,IAoBD,CAAEyL,IAAI,CAAC9I,EAAP,EAAW8I,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CApBC,UAqBdrN,OAAO,CAACqB,EArBM,IAqBD,CAAEwL,IAAI,CAAC9I,EAAP,EAAW8I,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CArBC,UAsBdrN,OAAO,CAACsB,EAtBM,IAsBD,CAAEuL,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAtBC,UAuBdrN,OAAO,CAACuB,EAvBM,IAuBD,CAAEsL,IAAI,CAACI,EAAP,CAvBC,UAwBdjN,OAAO,CAACwB,EAxBM,IAwBD,CAAEqL,IAAI,CAACrJ,EAAP,EAAWqJ,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACQ,EAAlC,CAxBC,UAyBdrN,OAAO,CAACyB,EAzBM,IAyBD,CAAEoL,IAAI,CAACxD,EAAP,EAAWwD,IAAI,CAACI,EAAhB,CAzBC,UA0BdjN,OAAO,CAAC0B,EA1BM,IA0BD,CAAEmL,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA1BC,UA2BdrN,OAAO,CAAC2B,EA3BM,IA2BD,CAAEkL,IAAI,CAACI,EAAP,CA3BC,UA4BdjN,OAAO,CAAC4B,EA5BM,IA4BD,CAAEiL,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA5BC,UA6BdrN,OAAO,CAAC6B,EA7BM,IA6BD,CAAEgL,IAAI,CAACI,EAAP,CA7BC,UA8BdjN,OAAO,CAAC8B,EA9BM,IA8BD,CAAE+K,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAACrJ,EAAhB,EAAoBqJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACQ,EAAlC,CA9BC,UA+BdrN,OAAO,CAAC+B,EA/BM,IA+BD,CAAE8K,IAAI,CAACQ,EAAP,EAAWR,IAAI,CAACI,EAAhB,CA/BC,UAgCdjN,OAAO,CAACgC,EAhCM,IAgCD,CAAE6K,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,CAhCC,UAiCd/D,OAAO,CAACiC,EAjCM,IAiCD,CAAE4K,IAAI,CAAC9I,EAAP,EAAW8I,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAjCC,UAkCdrN,OAAO,CAACkC,EAlCM,IAkCD,CAAE2K,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAlCC,UAmCdrN,OAAO,CAACmC,EAnCM,IAmCD,CAAE0K,IAAI,CAAC/J,EAAP,EAAW+J,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACI,EAAzB,CAnCC,UAoCdjN,OAAO,CAACoC,EApCM,IAoCD,CAAEyK,IAAI,CAAC9I,EAAP,EAAW8I,IAAI,CAACI,EAAhB,CApCC,UAqCdjN,OAAO,CAACqC,EArCM,IAqCD,CAAEwK,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CArCC,UAsCdrN,OAAO,CAACsC,EAtCM,IAsCD,CAAEuK,IAAI,CAACrJ,EAAP,EAAWqJ,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACQ,EAAlC,CAtCC,UAuCdrN,OAAO,CAACuC,EAvCM,IAuCD,CAAEsK,IAAI,CAAC9I,EAAP,EAAW8I,IAAI,CAACI,EAAhB,CAvCC,UAwCdjN,OAAO,CAACwC,EAxCM,IAwCD,CAAEqK,IAAI,CAACQ,EAAP,CAxCC,UAyCdrN,OAAO,CAACyC,EAzCM,IAyCD,CAAEoK,IAAI,CAACrJ,EAAP,EAAWqJ,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACQ,EAAlC,CAzCC,UA0CdrN,OAAO,CAAC0C,EA1CM,IA0CD,CAAEmK,IAAI,CAACrJ,EAAP,EAAWqJ,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACQ,EAAlC,CA1CC,UA2CdrN,OAAO,CAAC2C,EA3CM,IA2CD,CAAEkK,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA3CC,UA4CdrN,OAAO,CAAC4C,EA5CM,IA4CD,CAAEiK,IAAI,CAACI,EAAP,CA5CC,UA6CdjN,OAAO,CAAC6C,EA7CM,IA6CD,CAAEgK,IAAI,CAACC,EAAP,EAAWD,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACrJ,EAAlC,EAAsCqJ,IAAI,CAACQ,EAA3C,CA7CC,UA8CdrN,OAAO,CAAC8C,EA9CM,IA8CD,CAAE+J,IAAI,CAAC/J,EAAP,EAAW+J,IAAI,CAACI,EAAhB,CA9CC,UA+CdjN,OAAO,CAAC+C,EA/CM,IA+CD,CAAE8J,IAAI,CAAC9I,EAAP,EAAW8I,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA/CC,UAgDdrN,OAAO,CAACgD,EAhDM,IAgDD,CAAE6J,IAAI,CAACE,EAAP,EAAWF,IAAI,CAACI,EAAhB,CAhDC,UAiDdjN,OAAO,CAACiD,EAjDM,IAiDD,CAAE4J,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAjDC,UAkDdrN,OAAO,CAACkD,EAlDM,IAkDD,CAAE2J,IAAI,CAACrJ,EAAP,EAAWqJ,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACQ,EAAlC,CAlDC,UAmDdrN,OAAO,CAACmD,EAnDM,IAmDD,CAAE0J,IAAI,CAACpM,EAAP,EAAWoM,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACrJ,EAAlC,EAAsCqJ,IAAI,CAACQ,EAA3C,CAnDC,UAoDdrN,OAAO,CAACoD,EApDM,IAoDD,CAAEyJ,IAAI,CAACrJ,EAAP,EAAWqJ,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACQ,EAAlC,CApDC,UAqDdrN,OAAO,CAACqD,EArDM,IAqDD,CAAEwJ,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAACjD,EAAhB,EAAoBiD,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACrJ,EAAlC,EAAsCqJ,IAAI,CAACQ,EAA3C,CArDC,UAsDdrN,OAAO,CAACsD,EAtDM,IAsDD,CAAEuJ,IAAI,CAACpM,EAAP,EAAWoM,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACrJ,EAAlC,EAAsCqJ,IAAI,CAACQ,EAA3C,CAtDC,UAuDdrN,OAAO,CAACuD,EAvDM,IAuDD,CAAEsJ,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAvDC,UAwDdrN,OAAO,CAACwD,EAxDM,IAwDD,CAAEqJ,IAAI,CAACrJ,EAAP,EAAWqJ,IAAI,CAACI,EAAhB,CAxDC,UAyDdjN,OAAO,CAACyD,EAzDM,IAyDD,CAAEoJ,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAzDC,UA0DdrN,OAAO,CAAC0D,EA1DM,IA0DD,CAAEmJ,IAAI,CAACnJ,EAAP,EAAWmJ,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACrJ,EAAlC,EAAsCqJ,IAAI,CAACQ,EAA3C,CA1DC,UA2DdrN,OAAO,CAAC2D,EA3DM,IA2DD,CAAEkJ,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA3DC,UA4DdrN,OAAO,CAAC4D,EA5DM,IA4DD,CAAEiJ,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA5DC,UA6DdrN,OAAO,CAAC6D,EA7DM,IA6DD,CAAEgJ,IAAI,CAACI,EAAP,CA7DC,UA8DdjN,OAAO,CAAC8D,EA9DM,IA8DD,CAAE+I,IAAI,CAACE,EAAP,EAAWF,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACrJ,EAAlC,EAAsCqJ,IAAI,CAACQ,EAA3C,CA9DC,UA+DdrN,OAAO,CAAC+D,EA/DM,IA+DD,CAAE8I,IAAI,CAAC9I,EAAP,EAAW8I,IAAI,CAACI,EAAhB,CA/DC,UAgEdjN,OAAO,CAACgE,EAhEM,IAgED,CAAE6I,IAAI,CAAC9I,EAAP,EAAW8I,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAhEC,UAiEdrN,OAAO,CAACiE,EAjEM,IAiED,CAAE4I,IAAI,CAACI,EAAP,CAjEC,UAkEdjN,OAAO,CAACkE,EAlEM,IAkED,CAAE2I,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAlEC,UAmEdrN,OAAO,CAACmE,EAnEM,IAmED,CAAE0I,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAnEC,UAoEdrN,OAAO,CAACoE,EApEM,IAoED,CAAEyI,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CApEC,UAqEdrN,OAAO,CAACqE,EArEM,IAqED,CAAEwI,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CArEC,UAsEdrN,OAAO,CAACsE,EAtEM,IAsED,CAAEuI,IAAI,CAACE,EAAP,EAAWF,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACrJ,EAAlC,EAAsCqJ,IAAI,CAACQ,EAA3C,CAtEC,UAuEdrN,OAAO,CAACuE,EAvEM,IAuED,CAAEsI,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAvEC,UAwEdrN,OAAO,CAACwE,EAxEM,IAwED,CAAEqI,IAAI,CAAC9I,EAAP,EAAW8I,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAxEC,UAyEdrN,OAAO,CAACyE,EAzEM,IAyED,CAAEoI,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAzEC,UA0EdrN,OAAO,CAAC0E,EA1EM,IA0ED,CAAEmI,IAAI,CAACG,EAAP,EAAWH,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACrJ,EAAlC,EAAsCqJ,IAAI,CAACQ,EAA3C,CA1EC,UA2EdrN,OAAO,CAAC2E,EA3EM,IA2ED,CAAEkI,IAAI,CAACrJ,EAAP,EAAWqJ,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACQ,EAAlC,CA3EC,UA4EdrN,OAAO,CAAC4E,EA5EM,IA4ED,CAAEiI,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA5EC,UA6EdrN,OAAO,CAAC6E,EA7EM,IA6ED,CAAEgI,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA7EC,UA8EdrN,OAAO,CAAC8E,EA9EM,IA8ED,CAAE+H,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAACQ,EAAhB,CA9EC,UA+EdrN,OAAO,CAAC+E,EA/EM,IA+ED,CAAE8H,IAAI,CAACrJ,EAAP,EAAWqJ,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACQ,EAAlC,CA/EC,UAgFdrN,OAAO,CAACgF,EAhFM,IAgFD,CAAE6H,IAAI,CAACI,EAAP,CAhFC,UAiFdjN,OAAO,CAACiF,EAjFM,IAiFD,CAAE4H,IAAI,CAAC5H,EAAP,EAAW4H,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACrJ,EAAlC,EAAsCqJ,IAAI,CAACQ,EAA3C,CAjFC,UAkFdrN,OAAO,CAACkF,EAlFM,IAkFD,CAAE2H,IAAI,CAAC3H,EAAP,EAAW2H,IAAI,CAACI,EAAhB,CAlFC,UAmFdjN,OAAO,CAACmF,EAnFM,IAmFD,CAAE0H,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAnFC,UAoFdrN,OAAO,CAACoF,EApFM,IAoFD,CAAEyH,IAAI,CAACK,EAAP,EAAWL,IAAI,CAACI,EAAhB,CApFC,UAqFdjN,OAAO,CAACqF,EArFM,IAqFD,CAAEwH,IAAI,CAACI,EAAP,CArFC,UAsFdjN,OAAO,CAACsF,EAtFM,IAsFD,CAAEuH,IAAI,CAACI,EAAP,CAtFC,UAuFdjN,OAAO,CAACuF,EAvFM,IAuFD,CAAEsH,IAAI,CAACtH,EAAP,EAAWsH,IAAI,CAACI,EAAhB,CAvFC,UAwFdjN,OAAO,CAACwF,EAxFM,IAwFD,CAAEqH,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAACrJ,EAAhB,EAAoBqJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACQ,EAAlC,CAxFC,UAyFdrN,OAAO,CAACyF,EAzFM,IAyFD,CAAEoH,IAAI,CAACpM,EAAP,EAAWoM,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACrJ,EAAlC,EAAsCqJ,IAAI,CAACQ,EAA3C,CAzFC,UA0FdrN,OAAO,CAAC0F,EA1FM,IA0FD,CAAEmH,IAAI,CAACM,EAAP,EAAWN,IAAI,CAACI,EAAhB,CA1FC,UA2FdjN,OAAO,CAAC2F,EA3FM,IA2FD,CAAEkH,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA3FC,UA4FdrN,OAAO,CAAC4F,EA5FM,IA4FD,CAAEiH,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA5FC,UA6FdrN,OAAO,CAAC6F,EA7FM,IA6FD,CAAEgH,IAAI,CAACI,EAAP,CA7FC,UA8FdjN,OAAO,CAAC8F,EA9FM,IA8FD,CAAE+G,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA9FC,UA+FdrN,OAAO,CAAC+F,EA/FM,IA+FD,CAAE8G,IAAI,CAAC9I,EAAP,EAAW8I,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA/FC,UAgGdrN,OAAO,CAACgG,EAhGM,IAgGD,CAAE6G,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAhGC,UAiGdrN,OAAO,CAACiG,EAjGM,IAiGD,CAAE4G,IAAI,CAACO,EAAP,EAAWP,IAAI,CAACI,EAAhB,CAjGC,UAkGdjN,OAAO,CAACkG,EAlGM,IAkGD,CAAE2G,IAAI,CAACpM,EAAP,EAAWoM,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACrJ,EAAlC,EAAsCqJ,IAAI,CAACQ,EAA3C,CAlGC,UAmGdrN,OAAO,CAACmG,EAnGM,IAmGD,CAAE0G,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAnGC,UAoGdrN,OAAO,CAACoG,EApGM,IAoGD,CAAEyG,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CApGC,UAqGdrN,OAAO,CAACqG,EArGM,IAqGD,CAAEwG,IAAI,CAACI,EAAP,CArGC,UAsGdjN,OAAO,CAACsG,EAtGM,IAsGD,CAAEuG,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAtGC,UAuGdrN,OAAO,CAACuG,EAvGM,IAuGD,CAAEsG,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAvGC,UAwGdrN,OAAO,CAACwG,EAxGM,IAwGD,CAAEqG,IAAI,CAACI,EAAP,CAxGC,UAyGdjN,OAAO,CAACyG,EAzGM,IAyGD,CAAEoG,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAzGC,UA0GdrN,OAAO,CAAC0G,EA1GM,IA0GD,CAAEmG,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAACjD,EAAhB,EAAoBiD,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACrJ,EAAlC,EAAsCqJ,IAAI,CAACQ,EAA3C,CA1GC,UA2GdrN,OAAO,CAAC2G,EA3GM,IA2GD,CAAEkG,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC/J,EAAhB,EAAoB+J,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACrJ,EAAlC,EAAsCqJ,IAAI,CAACQ,EAA3C,CA3GC,UA4GdrN,OAAO,CAAC4G,EA5GM,IA4GD,CAAEiG,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAACjD,EAAhB,EAAoBiD,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACrJ,EAAlC,EAAsCqJ,IAAI,CAACQ,EAA3C,CA5GC,UA6GdrN,OAAO,CAAC6G,EA7GM,IA6GD,CAAEgG,IAAI,CAACpM,EAAP,EAAWoM,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACrJ,EAAlC,EAAsCqJ,IAAI,CAACQ,EAA3C,CA7GC,UA8GdrN,OAAO,CAAC8G,EA9GM,IA8GD,CAAE+F,IAAI,CAAC9I,EAAP,EAAW8I,IAAI,CAACI,EAAhB,CA9GC,UA+GdjN,OAAO,CAAC+G,EA/GM,IA+GD,CAAE8F,IAAI,CAACI,EAAP,CA/GC,UAgHdjN,OAAO,CAACgH,EAhHM,IAgHD,CAAE6F,IAAI,CAACI,EAAP,CAhHC,UAiHdjN,OAAO,CAACiH,EAjHM,IAiHD,CAAE4F,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAjHC,UAkHdrN,OAAO,CAACkH,EAlHM,IAkHD,CAAE2F,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAlHC,UAmHdrN,OAAO,CAACmH,EAnHM,IAmHD,CAAE0F,IAAI,CAACI,EAAP,CAnHC,UAoHdjN,OAAO,CAACoH,EApHM,IAoHD,CAAEyF,IAAI,CAAC9I,EAAP,EAAW8I,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CApHC,UAqHdrN,OAAO,CAACqH,EArHM,IAqHD,CAAEwF,IAAI,CAACI,EAAP,CArHC,UAsHdjN,OAAO,CAACsH,EAtHM,IAsHD,CAAEuF,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAtHC,UAuHdrN,OAAO,CAACuH,EAvHM,IAuHD,CAAEsF,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAvHC,UAwHdrN,OAAO,CAACwH,EAxHM,IAwHD,CAAEqF,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAxHC,UAyHdrN,OAAO,CAACyH,EAzHM,IAyHD,CAAEoF,IAAI,CAACI,EAAP,CAzHC,UA0HdjN,OAAO,CAAC0H,EA1HM,IA0HD,CAAEmF,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA1HC,UA2HdrN,OAAO,CAAC2H,EA3HM,IA2HD,CAAEkF,IAAI,CAACI,EAAP,CA3HC,UA4HdjN,OAAO,CAAC4H,EA5HM,IA4HD,CAAEiF,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA5HC,UA6HdrN,OAAO,CAAC6H,EA7HM,IA6HD,CAAEgF,IAAI,CAACrJ,EAAP,EAAWqJ,IAAI,CAACI,EAAhB,CA7HC,UA8HdjN,OAAO,CAAC8H,EA9HM,IA8HD,CAAE+E,IAAI,CAACI,EAAP,CA9HC,UA+HdjN,OAAO,CAAC+H,EA/HM,IA+HD,CAAE8E,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA/HC,UAgIdrN,OAAO,CAACgI,EAhIM,IAgID,CAAE6E,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAhIC,UAiIdrN,OAAO,CAACiI,EAjIM,IAiID,CAAE4E,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAjIC,UAkIdrN,OAAO,CAACkI,EAlIM,IAkID,CAAE2E,IAAI,CAAC9I,EAAP,EAAW8I,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAlIC,UAmIdrN,OAAO,CAACmI,EAnIM,IAmID,CAAE0E,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAnIC,UAoIdrN,OAAO,CAACoI,EApIM,IAoID,CAAEyE,IAAI,CAACI,EAAP,CApIC,UAqIdjN,OAAO,CAACqI,EArIM,IAqID,CAAEwE,IAAI,CAACrJ,EAAP,EAAWqJ,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACQ,EAAlC,CArIC,UAsIdrN,OAAO,CAACsI,EAtIM,IAsID,CAAEuE,IAAI,CAACvE,EAAP,EAAWuE,IAAI,CAACI,EAAhB,CAtIC,UAuIdjN,OAAO,CAACuI,EAvIM,IAuID,CAAEsE,IAAI,CAACtE,EAAP,EAAWsE,IAAI,CAACI,EAAhB,CAvIC,UAwIdjN,OAAO,CAACwI,EAxIM,IAwID,CAAEqE,IAAI,CAACI,EAAP,CAxIC,UAyIdjN,OAAO,CAACyI,EAzIM,IAyID,CAAEoE,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAzIC,UA0IdrN,OAAO,CAAC0I,EA1IM,IA0ID,CAAEmE,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA1IC,UA2IdrN,OAAO,CAAC2I,EA3IM,IA2ID,CAAEkE,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA3IC,UA4IdrN,OAAO,CAAC4I,EA5IM,IA4ID,CAAEiE,IAAI,CAACpM,EAAP,EAAWoM,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACrJ,EAAlC,EAAsCqJ,IAAI,CAACQ,EAA3C,CA5IC,UA6IdrN,OAAO,CAAC6I,EA7IM,IA6ID,CAAEgE,IAAI,CAACrJ,EAAP,EAAWqJ,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACQ,EAAlC,CA7IC,UA8IdrN,OAAO,CAAC8I,EA9IM,IA8ID,CAAE+D,IAAI,CAACrJ,EAAP,EAAWqJ,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACQ,EAAlC,CA9IC,UA+IdrN,OAAO,CAAC+I,EA/IM,IA+ID,CAAE8D,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA/IC,UAgJdrN,OAAO,CAACgJ,EAhJM,IAgJD,CAAE6D,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAhJC,UAiJdrN,OAAO,CAACiJ,EAjJM,IAiJD,CAAE4D,IAAI,CAACI,EAAP,CAjJC,UAkJdjN,OAAO,CAACkJ,EAlJM,IAkJD,CAAE2D,IAAI,CAAC3D,EAAP,EAAW2D,IAAI,CAACI,EAAhB,CAlJC,UAmJdjN,OAAO,CAACmJ,EAnJM,IAmJD,CAAE0D,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAnJC,UAoJdrN,OAAO,CAACoJ,EApJM,IAoJD,CAAEyD,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CApJC,UAqJdrN,OAAO,CAACqJ,EArJM,IAqJD,CAAEwD,IAAI,CAACxD,EAAP,EAAWwD,IAAI,CAACI,EAAhB,CArJC,UAsJdjN,OAAO,CAACsJ,EAtJM,IAsJD,CAAEuD,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAtJC,UAuJdrN,OAAO,CAACuJ,EAvJM,IAuJD,CAAEsD,IAAI,CAACrJ,EAAP,EAAWqJ,IAAI,CAACI,EAAhB,CAvJC,UAwJdjN,OAAO,CAACwJ,EAxJM,IAwJD,CAAEqD,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,EAAsCR,IAAI,CAACpM,EAA3C,CAxJC,UAyJdT,OAAO,CAACyJ,EAzJM,IAyJD,CAAEoD,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAzJC,UA0JdrN,OAAO,CAAC0J,EA1JM,IA0JD,CAAEmD,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA1JC,UA2JdrN,OAAO,CAAC2J,EA3JM,IA2JD,CAAEkD,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA3JC,UA4JdrN,OAAO,CAAC4J,EA5JM,IA4JD,CAAEiD,IAAI,CAACjD,EAAP,EAAWiD,IAAI,CAACI,EAAhB,CA5JC,UA6JdjN,OAAO,CAAC6J,EA7JM,IA6JD,CAAEgD,IAAI,CAAC9I,EAAP,EAAW8I,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA7JC,UA8JdrN,OAAO,CAAC8J,EA9JM,IA8JD,CAAE+C,IAAI,CAACpM,EAAP,EAAWoM,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACrJ,EAAlC,EAAsCqJ,IAAI,CAACQ,EAA3C,CA9JC,UA+JdrN,OAAO,CAAC+J,EA/JM,IA+JD,CAAE8C,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA/JC,UAgKdrN,OAAO,CAACgK,EAhKM,IAgKD,CAAE6C,IAAI,CAAC9I,EAAP,EAAW8I,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAhKC,UAiKdrN,OAAO,CAACiK,EAjKM,IAiKD,CAAE4C,IAAI,CAAChC,EAAP,EAAWgC,IAAI,CAACI,EAAhB,CAjKC,UAkKdjN,OAAO,CAACkK,EAlKM,IAkKD,CAAE2C,IAAI,CAACI,EAAP,CAlKC,UAmKdjN,OAAO,CAACmK,EAnKM,IAmKD,CAAE0C,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAnKC,UAoKdrN,OAAO,CAACoK,EApKM,IAoKD,CAAEyC,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CApKC,UAqKdrN,OAAO,CAACqK,EArKM,IAqKD,CAAEwC,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CArKC,UAsKdrN,OAAO,CAACsK,EAtKM,IAsKD,CAAEuC,IAAI,CAACvC,EAAP,EAAWuC,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACrJ,EAAlC,EAAsCqJ,IAAI,CAACQ,EAA3C,CAtKC,UAuKdrN,OAAO,CAACuK,EAvKM,IAuKD,CAAEsC,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAvKC,UAwKdrN,OAAO,CAACwK,EAxKM,IAwKD,CAAEqC,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAxKC,UAyKdrN,OAAO,CAACyK,EAzKM,IAyKD,CAAEoC,IAAI,CAAC9I,EAAP,EAAW8I,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAzKC,UA0KdrN,OAAO,CAAC0K,EA1KM,IA0KD,CAAEmC,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA1KC,UA2KdrN,OAAO,CAAC2K,EA3KM,IA2KD,CAAEkC,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA3KC,UA4KdrN,OAAO,CAAC4K,EA5KM,IA4KD,CAAEiC,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA5KC,UA6KdrN,OAAO,CAAC6K,EA7KM,IA6KD,CAAEgC,IAAI,CAACrJ,EAAP,EAAWqJ,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACQ,EAAlC,CA7KC,UA8KdrN,OAAO,CAAC8K,EA9KM,IA8KD,CAAE+B,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA9KC,UA+KdrN,OAAO,CAAC+K,EA/KM,IA+KD,CAAE8B,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA/KC,UAgLdrN,OAAO,CAACgL,EAhLM,IAgLD,CAAE6B,IAAI,CAAC9I,EAAP,EAAW8I,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAhLC,UAiLdrN,OAAO,CAACiL,EAjLM,IAiLD,CAAE4B,IAAI,CAAC9I,EAAP,EAAW8I,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAjLC,UAkLdrN,OAAO,CAACkL,EAlLM,IAkLD,CAAE2B,IAAI,CAAC3B,EAAP,EAAW2B,IAAI,CAACI,EAAhB,CAlLC,UAmLdjN,OAAO,CAACmL,EAnLM,IAmLD,CAAE0B,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAnLC,UAoLdrN,OAAO,CAACoL,EApLM,IAoLD,CAAEyB,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CApLC,UAqLdrN,OAAO,CAACqL,EArLM,IAqLD,CAAEwB,IAAI,CAACpM,EAAP,EAAWoM,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACrJ,EAAlC,EAAsCqJ,IAAI,CAACQ,EAA3C,CArLC,UAsLdrN,OAAO,CAACsL,EAtLM,IAsLD,CAAEuB,IAAI,CAACI,EAAP,CAtLC,UAuLdjN,OAAO,CAACuL,EAvLM,IAuLD,CAAEsB,IAAI,CAACtB,EAAP,EAAWsB,IAAI,CAACI,EAAhB,CAvLC,UAwLdjN,OAAO,CAACwL,EAxLM,IAwLD,CAAEqB,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAxLC,UAyLdrN,OAAO,CAACyL,EAzLM,IAyLD,CAAEoB,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAzLC,UA0LdrN,OAAO,CAAC0L,EA1LM,IA0LD,CAAEmB,IAAI,CAACQ,EAAP,EAAWR,IAAI,CAACI,EAAhB,CA1LC,UA2LdjN,OAAO,CAAC2L,EA3LM,IA2LD,CAAEkB,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA3LC,UA4LdrN,OAAO,CAAC4L,EA5LM,IA4LD,CAAEiB,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAACjD,EAAhB,EAAoBiD,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACrJ,EAAlC,EAAsCqJ,IAAI,CAACQ,EAA3C,CA5LC,UA6LdrN,OAAO,CAAC6L,EA7LM,IA6LD,CAAEgB,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA7LC,UA8LdrN,OAAO,CAAC8L,EA9LM,IA8LD,CAAEe,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA9LC,UA+LdrN,OAAO,CAAC+L,EA/LM,IA+LD,CAAEc,IAAI,CAACrJ,EAAP,EAAWqJ,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACQ,EAAlC,CA/LC,UAgMdrN,OAAO,CAACgM,EAhMM,IAgMD,CAAEa,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAhMC,UAiMdrN,OAAO,CAACiM,EAjMM,IAiMD,CAAEY,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAjMC,UAkMdrN,OAAO,CAACkM,EAlMM,IAkMD,CAAEW,IAAI,CAACrJ,EAAP,EAAWqJ,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACQ,EAAlC,CAlMC,UAmMdrN,OAAO,CAACmM,EAnMM,IAmMD,CAAEU,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAnMC,UAoMdrN,OAAO,CAACoM,EApMM,IAoMD,CAAES,IAAI,CAACI,EAAP,CApMC,UAqMdjN,OAAO,CAACqM,EArMM,IAqMD,CAAEQ,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CArMC,UAsMdrN,OAAO,CAACsM,EAtMM,IAsMD,CAAEO,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAtMC,UAuMdrN,OAAO,CAACuM,EAvMM,IAuMD,CAAEM,IAAI,CAACI,EAAP,CAvMC,UAwMdjN,OAAO,CAACwM,EAxMM,IAwMD,CAAEK,IAAI,CAACpM,EAAP,EAAWoM,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACrJ,EAAlC,EAAsCqJ,IAAI,CAACQ,EAA3C,CAxMC,UAyMdrN,OAAO,CAACyM,EAzMM,IAyMD,CAAEI,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAzMC,UA0MdrN,OAAO,CAAC0M,EA1MM,IA0MD,CAAEG,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA1MC,UA2MdrN,OAAO,CAAC2M,EA3MM,IA2MD,CAAEE,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA3MC,UA4MdrN,OAAO,CAAC4M,EA5MM,IA4MD,CAAEC,IAAI,CAACI,EAAP,CA5MC,UAAZ,C;;ACFP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACNA;CAIA;;AAKA,SAASS,UAAT,CAAoBC,IAApB,EAAiD;AAAA,MAA7BA,IAA6B;AAA7BA,QAA6B,GAAb,EAAa;AAAA;;AAC7C,SAAOA,IAAI,CAACC,QAAL,GACFC,OADE,CACM,IADN,EACY,OADZ,EAEFA,OAFE,CAEM,IAFN,EAEY,MAFZ,EAGFA,OAHE,CAGM,IAHN,EAGY,MAHZ,EAIFA,OAJE,CAIM,IAJN,EAIY,QAJZ,EAKFA,OALE,CAKM,IALN,EAKY,OALZ,EAMFA,OANE,CAMM,KANN,EAMa,QANb,CAAP;AAOH;;AAEM,IAAMC,WAAb;AAAA;AAAA;AAKI,uBAAYC,IAAZ,EAA2BC,KAA3B,EAA8CC,QAA9C,EAAuE;AAAA,SAJvEF,IAIuE;AAAA,SAHvEC,KAGuE;AAAA,SAFvEC,QAEuE;AACnE,SAAKF,IAAL,GAAYA,IAAZ;AACA,SAAKC,KAAL,GAAaA,KAAb;AACA,SAAKC,QAAL,GAAgBA,QAAhB;AACH;;AATL;;AAAA,SAWIL,QAXJ,GAWI,oBAAoB;AAChB,iBAAY,KAAKG,IAAjB,IAA0B,KAAKC,KAAL,GAAa,GAAb,GAAmB,EAA7C,KAAoD,KAAKA,KAAL,GAAa,KAAKE,aAAL,EAAb,GAAoC,EAAxF,UAAgG,KAAKC,gBAAL,EAAhG,UAA8H,KAAKJ,IAAnI;AACH,GAbL;;AAAA,SAeIG,aAfJ,GAeI,yBAAyB;AACrB,QAAMF,KAAK,GAAG,KAAKA,KAAnB;;AAEA,QAAI,CAACA,KAAL,EAAY;AACR,aAAO,EAAP;AACH;;AAED,WAAOI,MAAM,CAACC,IAAP,CAAYL,KAAZ,EAAmBM,MAAnB,CAA0B,UAAAC,GAAG,EAAI;AACpC,aAAOA,GAAG,KAAK,WAAR,IAAuBP,KAAvB,IAAgCA,KAAK,CAACO,GAAD,CAAL,KAAe,KAAtD;AACH,KAFM,EAEJC,GAFI,CAEA,UAAAD,GAAG,EAAI;AACV,UAAIP,KAAK,IAAIA,KAAK,CAACO,GAAD,CAAL,KAAe,IAA5B,EAAkC;AAC9B,oBAAWb,UAAU,CAACa,GAAD,CAArB;AACH;;AACD,aAAOP,KAAK,GAAON,UAAU,CAACa,GAAD,CAAjB,WAA6Bb,UAAU,CAACM,KAAK,CAACO,GAAD,CAAN,CAAvC,UAA0D,EAAtE;AACH,KAPM,EAOJE,IAPI,CAOC,GAPD,CAAP;AAQH,GA9BL;;AAAA,SAgCIN,gBAhCJ,GAgCI,4BAA4B;AAExB,QAAI,KAAKH,KAAL,IAAc,KAAKA,KAAL,CAAWU,SAA7B,EAAwC;AACpC,aAAO,KAAKV,KAAL,CAAWU,SAAlB;AACH;;AAED,QAAI,CAAC,KAAKT,QAAV,EAAoB;AAChB,aAAO,EAAP;AACH;;AAED,QAAIU,MAAM,GAAG,EAAb;;AAEA,aAASC,OAAT,CAAiBX,QAAjB,EAA2B;AAAA,8BACHA,QADG,gBACO;AAAzB,YAAMY,KAAK,GAAIZ,QAAJ,KAAX;;AAED,YAAIY,KAAK,KAAK,IAAV,IAAkBA,KAAK,KAAKC,SAAhC,EAA2C;AACvC;AACH;;AAED,YAAIC,KAAK,CAACC,OAAN,CAAcH,KAAd,CAAJ,EAA0B;AACtBD,iBAAO,CAACC,KAAD,CAAP;AACH,SAFD,MAEO,IAAIA,KAAK,YAAYf,WAArB,EAAkC;AACrCa,gBAAM,IAAIE,KAAK,CAACjB,QAAN,EAAV;AACH,SAFM,MAEA;AACHe,gBAAM,IAAIjB,UAAU,CAACmB,KAAD,CAApB;AACH;AACJ;AACJ;;AAEDD,WAAO,CAAC,KAAKX,QAAN,CAAP;AAEA,WAAOU,MAAP;AACH,GAhEL;;AAAA;AAAA;AAmEO,IAAMM,oBAAb;AAAA;AAAA;AAAA;;AAGI,gCAAYhB,QAAZ,EAAqC;AAAA,WACjC,wBAAM,EAAN,EAAU,EAAV,EAAcA,QAAd,CADiC;AAEpC;;AALL;;AAAA,UAOIL,QAPJ,GAOI,oBAAoB;AAChB,WAAO,KAAKO,gBAAL,EAAP;AACH,GATL;;AAAA;AAAA,EAA0CL,WAA1C;AAYO,SAASoB,SAAT,CAAmBnB,IAAnB,EAAkCC,KAAlC,EAA+F;AAAA,oCAAvCC,QAAuC;AAAvCA,YAAuC;AAAA;;AAClG,SAAO,IAAIH,WAAJ,CAAgBC,IAAhB,EAAsBC,KAAtB,EAA6BC,QAA7B,CAAP;AACH;AAEM,SAASkB,SAAT,CAAmBC,QAAnB,EAAsCC,SAAtC,EAAwI;AAE3I;AACA,MAAMC,KAAK,GAAGC,8DAAQ,CAACH,QAAD,EAAW,gDAAX,EAA6D,UAACI,KAAD,EAAQC,IAAR,EAAcC,KAAd,EAAqBC,IAArB,EAA8B;AAC7G,QAAIF,IAAJ,EAAU;AACN,UAAI,CAACJ,SAAS,CAACI,IAAD,CAAd,EAAsB;AAClB,cAAM,IAAIG,KAAJ,2BAAmCH,IAAnC,CAAN;AACH;;AAED,aAAOJ,SAAS,CAACI,IAAD,CAAT,CAAgBC,KAAhB,CAAP;AACH,KAND,MAMO,IAAIC,IAAI,IAAIA,IAAI,CAACE,IAAL,EAAZ,EAAyB;AAE5B,UAAI,CAACR,SAAS,CAACM,IAAf,EAAqB;AACjB,eAAOA,IAAP;AACH;;AAED,UAAK,MAAD,CAASG,IAAT,CAAcH,IAAd,CAAJ,EAAyB;AACrB,eAAON,SAAS,CAACU,KAAV,CAAgBJ,IAAhB,CAAP;AACH,OAFD,MAEO;AACH,eAAON,SAAS,CAACM,IAAV,CAAeA,IAAf,CAAP;AACH;AACJ,KAXM,MAWA;AACH,aAAOA,IAAP;AACH;AACJ,GArBqB,CAAtB;AAuBA,SAAO,IAAIV,oBAAJ,CAAyBK,KAAzB,CAAP;AACH,C;;;;;;;;;AChIM,SAASU,eAAT,CAAmBC,IAAnB,EAA2C;AAC9C,MAAI;AACA,QAAI,CAACA,IAAL,EAAW;AACP,aAAO,KAAP;AACH;;AAED,QAAI,OAAOC,OAAP,KAAmB,WAAnB,IAAkCD,IAAI,YAAYC,OAAtD,EAA+D;AAC3D,aAAO,IAAP;AACH;;AAED,QAAI,OAAOC,MAAP,KAAkB,WAAlB,IAAiC,OAAOA,MAAM,CAACC,MAAd,KAAyB,UAA1D,IAAwEH,IAAI,YAAYE,MAAM,CAACC,MAAnG,EAA2G;AACvG,aAAO,KAAP;AACH;;AAED,QAAI,OAAOD,MAAP,KAAkB,WAAlB,IAAiC,OAAOA,MAAM,CAACE,WAAd,KAA8B,UAA/D,IAA6EJ,IAAI,YAAYE,MAAM,CAACE,WAAxG,EAAqH;AACjH,aAAO,KAAP;AACH;;AAED,QAAIzC,SAAQ,GAAI,EAAD,CAAKA,QAApB;;AAEA,QAAIA,SAAJ,EAAc;AACV,UAAIG,IAAI,GAAGH,SAAQ,CAAC0C,IAAT,CAAcL,IAAd,CAAX;;AAEA,UAAIlC,IAAI,KAAK,iBAAT,IAA8BA,IAAI,KAAK,iBAAvC,IAA4DA,IAAI,KAAK,oBAAzE,EAA+F;AAC3F,eAAO,KAAP;AACH;AACJ;;AAED,QAAI,OAAOkC,IAAI,CAACM,IAAZ,KAAqB,UAAzB,EAAqC;AACjC,aAAO,IAAP;AACH;AACJ,GA9BD,CA8BE,OAAOC,GAAP,EAAY;AACV,WAAO,KAAP;AACH;;AAED,SAAO,KAAP;AACH,C;;AClCD,IAAMC,gBAAgB,GAAG,EAAzB;AACA,IAAMC,gCAAyF,GAAG,EAAlG;AAEO,SAASC,8BAAT,CAA2CH,GAA3C,EAAwDI,OAAxD,EAAmF;AAEtF,MAAIH,gBAAgB,CAACI,OAAjB,CAAyBL,GAAzB,MAAkC,CAAC,CAAvC,EAA0C;AACtC;AACH;;AAEDC,kBAAgB,CAACK,IAAjB,CAAsBN,GAAtB;AAEAO,YAAU,CAAC,YAAM;AACb,QAAIC,KAAJ,EAAe,EAGd;;AAED,UAAMR,GAAN;AACH,GAPS,EAOP,CAPO,CAAV;;AASA,OAAK,IAAIS,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGP,gCAAgC,CAACQ,MAArD,EAA6DD,CAAC,EAA9D,EAAkE;AAC9D;AACAP,oCAAgC,CAACO,CAAD,CAAhC,CAAoCT,GAApC,EAAyCI,OAAzC;AACH;AACJ;AAEM,SAASO,uCAAT,CAAsCC,OAAtC,EAA2H;AAC9HV,kCAAgC,CAACI,IAAjC,CAAsCM,OAAtC;AAEA,SAAO;AACHC,UADG,oBACM;AACLX,sCAAgC,CAACY,MAAjC,CAAwCZ,gCAAgC,CAACG,OAAjC,CAAyCO,OAAzC,CAAxC,EAA2F,CAA3F;AACH;AAHE,GAAP;AAKH,C;;AClCD,IAAIG,WAAW,GAAG,CAAlB;AACA,IAAIC,YAAJ;;AAEA,SAASC,WAAT,GAAuB;AACnB,MAAI,CAACF,WAAD,IAAgBC,YAApB,EAAkC;AAC9B,QAAMZ,OAAO,GAAGY,YAAhB;AACAA,gBAAY,GAAG,IAAf;AACAZ,WAAO,CAACc,OAAR;AACH;AACJ;;AAEM,SAASC,WAAT,GAAuB;AAC1BJ,aAAW,IAAI,CAAf;AACH;AAEM,SAASK,SAAT,GAAqB;AACxBL,aAAW,IAAI,CAAf;AACAE,aAAW;AACd;AAEM,SAASI,WAAT,CAAqBC,KAArB,EAA0E;AAAE;AAC/E,MAAIlB,OAAO,GAAGY,YAAY,GAAGA,YAAY,IAAI,IAAIM,KAAJ,EAA7C;AACAL,aAAW;AACX,SAAOb,OAAP;AACH,C;;AC1BD;AACA;AACA;AAEO,IAAMmB,oBAAb;AAAA;AAAA;AAeI,wBAAYX,OAAZ,EAAmG;AAAA;;AAAA,SAbnGY,QAamG;AAAA,SAZnGC,QAYmG;AAAA,SAXnGC,YAWmG;AAAA,SAVnGxC,KAUmG;AAAA,SATnGyC,KASmG;AAAA,SARnGC,QAQmG;AAAA,SAHnGC,WAGmG;AAAA,SAFnGC,KAEmG;AAE/F,SAAKN,QAAL,GAAgB,KAAhB;AACA,SAAKC,QAAL,GAAgB,KAAhB;AACA,SAAKC,YAAL,GAAoB,KAApB;AAEA,SAAKE,QAAL,GAAgB,EAAhB;;AAEA,QAAIhB,OAAJ,EAAa;AAET,UAAIzC,OAAJ;;AACA,UAAIwD,MAAJ;;AACA,UAAIH,QAAQ,GAAG,KAAf;AACA,UAAIC,QAAQ,GAAG,KAAf;AACA,UAAIM,OAAO,GAAG,KAAd;AAEAZ,iBAAW;;AAEX,UAAI;AACAP,eAAO,CAAC,UAAAoB,GAAG,EAAI;AACX,cAAID,OAAJ,EAAa;AACT,iBAAI,CAACb,OAAL,CAAac,GAAb;AACH,WAFD,MAEO;AACHR,oBAAQ,GAAG,IAAX;AACArD,mBAAM,GAAG6D,GAAT;AACH;AAEJ,SARM,EAQJ,UAAAhC,GAAG,EAAI;AACN,cAAI+B,OAAJ,EAAa;AACT,iBAAI,CAACE,MAAL,CAAYjC,GAAZ;AACH,WAFD,MAEO;AACHyB,oBAAQ,GAAG,IAAX;AACAE,kBAAK,GAAG3B,GAAR;AACH;AACJ,SAfM,CAAP;AAiBH,OAlBD,CAkBE,OAAOA,GAAP,EAAY;AACVoB,iBAAS;AACT,aAAKa,MAAL,CAAYjC,GAAZ;AACA;AACH;;AAEDoB,eAAS;AAETW,aAAO,GAAG,IAAV;;AAEA,UAAIP,QAAJ,EAAc;AACV;AACA,aAAKN,OAAL,CAAa/C,OAAb;AACH,OAHD,MAGO,IAAIsD,QAAJ,EAAc;AACjB,aAAKQ,MAAL,CAAYN,MAAZ;AACH;AACJ;;AAED,QAAInB,KAAJ,EAAe,EAMd;AACJ;;AA5EL;;AAAA,SA8EIU,OA9EJ,GA8EI,iBAAQ/C,MAAR,EAAsC;AAClC,QAAI,KAAKqD,QAAL,IAAiB,KAAKC,QAA1B,EAAoC;AAChC,aAAO,IAAP;AACH;;AAED,QAAIjC,eAAS,CAACrB,MAAD,CAAb,EAAuB;AACnB,YAAM,IAAIiB,KAAJ,CAAU,8CAAV,CAAN;AACH;;AAED,SAAKoC,QAAL,GAAgB,IAAhB;AACA,SAAKtC,KAAL,GAAaf,MAAb;AACA,SAAK+D,QAAL;AAEA,WAAO,IAAP;AACH,GA5FL;;AAAA,SA8FID,MA9FJ,GA8FI,gBAAON,KAAP,EAAwC;AAAA;;AACpC,QAAI,KAAKH,QAAL,IAAiB,KAAKC,QAA1B,EAAoC;AAChC,aAAO,IAAP;AACH;;AAED,QAAIjC,eAAS,CAACmC,KAAD,CAAb,EAAsB;AAClB,YAAM,IAAIvC,KAAJ,CAAU,6CAAV,CAAN;AACH;;AAED,QAAI,CAACuC,KAAL,EAAY;AACR;AACA,UAAI3B,IAAG,GAAI2B,KAAK,IAAI,OAAOA,KAAK,CAACvE,QAAb,KAA0B,UAAnC,GAAgDuE,KAAK,CAACvE,QAAN,EAAhD,GAAmEQ,MAAM,CAACuE,SAAP,CAAiB/E,QAAjB,CAA0B0C,IAA1B,CAA+B6B,KAA/B,CAA9E;;AACAA,WAAK,GAAG,IAAIvC,KAAJ,mDAA2DY,IAA3D,CAAR;AACH;;AAED,SAAKyB,QAAL,GAAgB,IAAhB;AACA,SAAKE,KAAL,GAAaA,KAAb;;AAEA,QAAI,CAAC,KAAKD,YAAV,EAAwB;AACpBnB,gBAAU,CAAC,YAAM;AACb,YAAI,CAAC,MAAI,CAACmB,YAAV,EAAwB;AACpBvB,wCAA8B,CAACwB,KAAD,EAAQ,MAAR,CAA9B;AACH;AACJ,OAJS,EAIP,CAJO,CAAV;AAKH;;AAED,SAAKO,QAAL;AAEA,WAAO,IAAP;AACH,GA3HL;;AAAA,SA6HIE,WA7HJ,GA6HI,qBAAYT,KAAZ,EAA6C;AACzC,SAAKD,YAAL,GAAoB,IAApB;AACA,SAAKO,MAAL,CAAYN,KAAZ;AACA,WAAO,IAAP;AACH,GAjIL;;AAAA,SAmIIO,QAnIJ,GAmII,oBAAW;AAAA,QAEDL,WAFC,GAE6C,IAF7C,CAEDA,WAFC;AAAA,QAEYL,QAFZ,GAE6C,IAF7C,CAEYA,QAFZ;AAAA,QAEsBC,QAFtB,GAE6C,IAF7C,CAEsBA,QAFtB;AAAA,QAEgCG,QAFhC,GAE6C,IAF7C,CAEgCA,QAFhC;;AAIP,QAAIC,WAAJ,EAAiB;AACb;AACH;;AAED,QAAI,CAACL,QAAD,IAAa,CAACC,QAAlB,EAA4B;AACxB;AACH;;AAED,SAAKI,WAAL,GAAmB,IAAnB;AACAV,eAAW;;AAEX,QAAMkB,KAAK,GAAG,SAARA,KAAQ,CAAIC,YAAJ,EAAoCC,aAApC,EAAwE;AAClF,aAAOD,YAAY,CAACvC,IAAb,CAAkB,UAAAiC,GAAG,EAAI;AAC5BO,qBAAa,CAACrB,OAAd,CAAsBc,GAAtB;AACH,OAFM,EAEJ,UAAAhC,GAAG,EAAI;AACNuC,qBAAa,CAACN,MAAd,CAAqBjC,GAArB;AACH,OAJM,CAAP;AAKH,KAND;;AAQA,SAAK,IAAIwC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGZ,QAAQ,CAAClB,MAA7B,EAAqC8B,CAAC,EAAtC,EAA0C;AAAA,wBAEAZ,QAAQ,CAACY,CAAD,CAFR;AAAA,UAEhCC,SAFgC,eAEhCA,SAFgC;AAAA,UAErBC,OAFqB,eAErBA,OAFqB;AAAA,UAEZtC,OAFY,eAEZA,OAFY;;AAItC,UAAIjC,QAAM,SAAV;;AAEA,UAAIqD,QAAJ,EAAc;AAEV,YAAI;AACArD,kBAAM,GAAGsE,SAAS,GAAGA,SAAS,CAAC,KAAKvD,KAAN,CAAZ,GAA2B,KAAKA,KAAlD;AACH,SAFD,CAEE,OAAOc,GAAP,EAAY;AACVI,iBAAO,CAAC6B,MAAR,CAAejC,GAAf;AACA;AACH;AAEJ,OATD,MASO,IAAIyB,QAAJ,EAAc;AAEjB,YAAI,CAACiB,OAAL,EAAc;AACVtC,iBAAO,CAAC6B,MAAR,CAAe,KAAKN,KAApB;AACA;AACH;;AAED,YAAI;AACAxD,kBAAM,GAAGuE,OAAO,CAAC,KAAKf,KAAN,CAAhB;AACH,SAFD,CAEE,OAAO3B,GAAP,EAAY;AACVI,iBAAO,CAAC6B,MAAR,CAAejC,GAAf;AACA;AACH;AACJ;;AAED,UAAI7B,QAAM,YAAYoD,YAAlB,KAAmCpD,QAAM,CAACqD,QAAP,IAAmBrD,QAAM,CAACsD,QAA7D,CAAJ,EAA4E;AAExE,YAAItD,QAAM,CAACqD,QAAX,EAAqB;AACjBpB,iBAAO,CAACc,OAAR,CAAgB/C,QAAM,CAACe,KAAvB;AACH,SAFD,MAEO;AACHkB,iBAAO,CAAC6B,MAAR,CAAe9D,QAAM,CAACwD,KAAtB;AACH;;AAEDxD,gBAAM,CAACuD,YAAP,GAAsB,IAAtB;AAEH,OAVD,MAUO,IAAIlC,eAAS,CAACrB,QAAD,CAAb,EAAuB;AAE1B,YAAIA,QAAM,YAAYoD,YAAlB,KAAmCpD,QAAM,CAACqD,QAAP,IAAmBrD,QAAM,CAACsD,QAA7D,CAAJ,EAA4E;AACxE,cAAItD,QAAM,CAACqD,QAAX,EAAqB;AACjBpB,mBAAO,CAACc,OAAR,CAAgB/C,QAAM,CAACe,KAAvB;AACH,WAFD,MAEO;AACHkB,mBAAO,CAAC6B,MAAR,CAAe9D,QAAM,CAACwD,KAAtB;AACH;AAEJ,SAPD,MAOO;AACH;AACAU,eAAK,CAAClE,QAAD,EAASiC,OAAT,CAAL;AACH;AAEJ,OAdM,MAcA;AAEHA,eAAO,CAACc,OAAR,CAAgB/C,QAAhB;AACH;AACJ;;AAEDyD,YAAQ,CAAClB,MAAT,GAAkB,CAAlB;AACA,SAAKmB,WAAL,GAAmB,KAAnB;AACAT,aAAS;AACZ,GAzNL;;AAAA,SA2NIrB,IA3NJ,GA2NI,cAA2B0C,SAA3B,EAAqFC,OAArF,EAAsK;AAElK,QAAID,SAAS,IAAI,OAAOA,SAAP,KAAqB,UAAlC,IAAgD,CAACA,SAAS,CAAC3C,IAA/D,EAAqE;AACjE,YAAM,IAAIV,KAAJ,CAAU,sDAAV,CAAN;AACH;;AAED,QAAIsD,OAAO,IAAI,OAAOA,OAAP,KAAmB,UAA9B,IAA4C,CAACA,OAAO,CAAC5C,IAAzD,EAA+D;AAC3D,YAAM,IAAIV,KAAJ,CAAU,oDAAV,CAAN;AACH;;AAED,QAAIgB,OAA6B,GAAG,IAAImB,YAAJ,EAApC;AAEA,SAAKK,QAAL,CAActB,IAAd,CAAmB;AACfF,aAAO,EAAPA,OADe;AAEfqC,eAAS,EAATA,SAFe;AAGfC,aAAO,EAAPA;AAHe,KAAnB;AAMA,SAAKhB,YAAL,GAAoB,IAApB;AAEA,SAAKQ,QAAL;AAEA,WAAO9B,OAAP;AACH,GAlPL;;AAAA,SAoPIuC,KApPJ,GAoPI,gBAA4BD,OAA5B,EAAoG;AAChG,WAAO,KAAK3C,IAAL,CAAUzB,SAAV,EAAqBoE,OAArB,CAAP;AACH,GAtPL;;AAAA,SAwPIE,OAxPJ,GAwPI,kBAAQC,SAAR,EAAmD;AAE/C,QAAIA,SAAS,IAAI,OAAOA,SAAP,KAAqB,UAAlC,IAAgD,CAACA,SAAS,CAAC/C,IAA/D,EAAqE;AACjE,YAAM,IAAIV,KAAJ,CAAU,qCAAV,CAAN;AACH;;AAED,WAAO,KAAKW,IAAL,CAAU,UAAC5B,MAAD,EAAY;AACzB,aAAOoD,YAAY,CAACuB,GAAb,CAAiBD,SAAjB,EACF9C,IADE,CACG,YAAM;AACR,eAAO5B,MAAP;AACH,OAHE,CAAP;AAIH,KALM,EAKJ,UAAC6B,GAAD,EAAS;AACR,aAAOuB,YAAY,CAACuB,GAAb,CAAiBD,SAAjB,EACF9C,IADE,CACG,YAAM;AACR,cAAMC,GAAN;AACH,OAHE,CAAP;AAIH,KAVM,CAAP;AAWH,GAzQL;;AAAA,SA2QI+C,OA3QJ,GA2QI,iBAAQC,IAAR,EAAuBhD,GAAvB,EAAuD;AAAA;;AAEnD,QAAI,KAAKwB,QAAL,IAAiB,KAAKC,QAA1B,EAAoC;AAChC,aAAO,IAAP;AACH;;AAED,QAAIsB,OAAO,GAAGxC,UAAU,CAAC,YAAM;AAE3B,UAAI,MAAI,CAACiB,QAAL,IAAiB,MAAI,CAACC,QAA1B,EAAoC;AAChC;AACH;;AAED,YAAI,CAACQ,MAAL,CAAYjC,GAAG,IAAI,IAAIZ,KAAJ,8BAAsC4D,IAAtC,QAAnB;AAEH,KARuB,EAQrBA,IARqB,CAAxB;AAUA,WAAO,KAAKjD,IAAL,CAAU,UAAA5B,MAAM,EAAI;AACvB8E,kBAAY,CAACF,OAAD,CAAZ;AACA,aAAO5E,MAAP;AACH,KAHM,CAAP;AAIH,GA/RL,CAiSI;AAjSJ;;AAAA,SAkSI+E,SAlSJ,GAkSI,qBAAyB;AACrB;AACA,QAAI,OAAOxD,OAAP,KAAmB,WAAvB,EAAoC;AAChC,YAAM,IAAIyD,SAAJ,0BAAN;AACH,KAJoB,CAKrB;;;AACA,WAAOzD,OAAO,CAACwB,OAAR,CAAgB,IAAhB,CAAP,CANqB,CAMS;AACjC,GAzSL;;AAAA,eA2SWA,OA3SX,GA2SI,iBAA0BhC,KAA1B,EAAyE;AAErE,QAAIA,KAAK,YAAYqC,YAArB,EAAmC;AAC/B,aAAOrC,KAAP;AACH;;AAED,QAAIM,eAAS,CAACN,KAAD,CAAb,EAAsB;AAClB;AACA,aAAO,IAAIqC,YAAJ,CAAiB,UAACL,OAAD,EAAUe,MAAV;AAAA,eAAqB/C,KAAK,CAACa,IAAN,CAAWmB,OAAX,EAAoBe,MAApB,CAArB;AAAA,OAAjB,CAAP;AACH;;AAED,WAAO,IAAIV,YAAJ,GAAmBL,OAAnB,CAA2BhC,KAA3B,CAAP;AACH,GAvTL;;AAAA,eAyTW+C,MAzTX,GAyTI,gBAAcN,KAAd,EAA+C;AAC3C,WAAO,IAAIJ,YAAJ,GAAmBU,MAAnB,CAA0BN,KAA1B,CAAP;AACH,GA3TL;;AAAA,eA6TWS,WA7TX,GA6TI,qBAAmBT,KAAnB,EAAoD;AAChD,WAAO,IAAIJ,YAAJ,GAAmBa,WAAnB,CAA+BT,KAA/B,CAAP;AACH,GA/TL;;AAAA,eAiUWyB,GAjUX,GAiUI,aAA6BC,QAA7B,EAAuG;AAAE;AAErG,QAAIjD,OAAO,GAAG,IAAImB,YAAJ,EAAd;AACA,QAAI+B,KAAK,GAAGD,QAAQ,CAAC3C,MAArB;AACA,QAAI6C,OAAO,GAAG,EAAd;;AAEA,QAAI,CAACD,KAAL,EAAY;AACRlD,aAAO,CAACc,OAAR,CAAgBqC,OAAhB;AACA,aAAOnD,OAAP;AACH;;AAED,QAAMiC,KAAK,GAAG,SAARA,KAAQ,CAAIG,CAAJ,EAAgBF,YAAhB,EAAgDC,aAAhD,EAAoF;AAC9F,aAAOD,YAAY,CAACvC,IAAb,CAAkB,UAAAiC,GAAG,EAAI;AAC5BuB,eAAO,CAACf,CAAD,CAAP,GAAaR,GAAb;AACAsB,aAAK,IAAI,CAAT;;AACA,YAAIA,KAAK,KAAK,CAAd,EAAiB;AACblD,iBAAO,CAACc,OAAR,CAAgBqC,OAAhB;AACH;AACJ,OANM,EAMJ,UAAAvD,GAAG,EAAI;AACNuC,qBAAa,CAACN,MAAd,CAAqBjC,GAArB;AACH,OARM,CAAP;AASH,KAVD;;AAYA,SAAK,IAAIwC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGa,QAAQ,CAAC3C,MAA7B,EAAqC8B,CAAC,EAAtC,EAA0C;AACtC,UAAIgB,IAAI,GAAGH,QAAQ,CAACb,CAAD,CAAnB;;AAEA,UAAIgB,IAAI,YAAYjC,YAApB,EAAkC;AAC9B,YAAIiC,IAAI,CAAChC,QAAT,EAAmB;AACf+B,iBAAO,CAACf,CAAD,CAAP,GAAagB,IAAI,CAACtE,KAAlB;AACAoE,eAAK,IAAI,CAAT;AACA;AACH;AACJ,OAND,MAMO,IAAI,CAAC9D,eAAS,CAACgE,IAAD,CAAd,EAAsB;AACzBD,eAAO,CAACf,CAAD,CAAP,GAAagB,IAAb;AACAF,aAAK,IAAI,CAAT;AACA;AACH;;AAEDjB,WAAK,CAACG,CAAD,EAAIjB,YAAY,CAACL,OAAb,CAAqBsC,IAArB,CAAJ,EAAgCpD,OAAhC,CAAL;AACH;;AAED,QAAIkD,KAAK,KAAK,CAAd,EAAiB;AACblD,aAAO,CAACc,OAAR,CAAgBqC,OAAhB;AACH;;AAED,WAAOnD,OAAP;AACH,GA/WL;;AAAA,eAiXWqD,IAjXX,GAiXI,cAAwBJ,QAAxB,EAAgG;AAAE;AAC9F,QAAIlF,MAAM,GAAG,EAAb;AAEA,WAAOoD,YAAY,CAAC6B,GAAb,CAAiBxF,MAAM,CAACC,IAAP,CAAYwF,QAAZ,EAAsBrF,GAAtB,CAA0B,UAAAD,GAAG,EAAI;AACrD,aAAOwD,YAAY,CAACL,OAAb,CAAqBmC,QAAQ,CAACtF,GAAD,CAA7B,EAAoCgC,IAApC,CAAyC,UAAAb,KAAK,EAAI;AACrDf,cAAM,CAACJ,GAAD,CAAN,GAAcmB,KAAd;AACH,OAFM,CAAP;AAGH,KAJuB,CAAjB,EAIHa,IAJG,CAIE,YAAM;AACX,aAAO5B,MAAP;AACH,KANM,CAAP;AAOH,GA3XL;;AAAA,eA6XWH,GA7XX,GA6XI,aAAiB0F,KAAjB,EAAmCC,MAAnC,EAAmG;AAC/F;AACA,WAAOpC,YAAY,CAAC6B,GAAb,CAAiBM,KAAK,CAAC1F,GAAN,CAAU2F,MAAV,CAAjB,CAAP;AACH,GAhYL;;AAAA,eAkYWhD,4BAlYX,GAkYI,sCAAoCC,OAApC,EAA+F;AAC3F,WAAOD,uCAA4B,CAACC,OAAD,CAAnC;AACH,GApYL;;AAAA,eAsYWkC,GAtYX,GAsYI,cAA8Da,MAA9D,EAA+GC,OAA/G,EAA6HC,IAA7H,EAA8J;AAE1J,QAAIF,MAAM,IAAI,OAAOA,MAAP,KAAkB,UAA5B,IAA0C,CAACA,MAAM,CAAC7D,IAAtD,EAA4D;AACxD,YAAM,IAAIV,KAAJ,CAAU,iCAAV,CAAN;AACH;;AAED,QAAIjB,MAAJ;AAEAgD,eAAW;;AAEX,QAAI;AACA;AACAhD,YAAM,GAAGwF,MAAM,CAACG,KAAP,CAAaF,OAAb,EAAsBC,IAAI,IAAI,EAA9B,CAAT;AACH,KAHD,CAGE,OAAO7D,GAAP,EAAY;AACVoB,eAAS;AACT,aAAOG,YAAY,CAACU,MAAb,CAAoBjC,GAApB,CAAP;AACH;;AAEDoB,aAAS;AAET,WAAOG,YAAY,CAACL,OAAb,CAAqB/C,MAArB,CAAP;AACH,GA3ZL;;AAAA,eA6ZW4F,KA7ZX,GA6ZI,eAAaA,MAAb,EAAkD;AAC9C,WAAO,IAAIxC,YAAJ,CAAiB,UAAAL,OAAO,EAAI;AAC/BX,gBAAU,CAACW,OAAD,EAAU6C,MAAV,CAAV;AACH,KAFM,CAAP;AAGH,GAjaL;;AAAA,eAmaWvE,SAnaX,GAmaI,mBAAiBN,KAAjB,EAA0C;AAEtC,QAAIA,KAAK,IAAIA,KAAK,YAAYqC,YAA9B,EAA4C;AACxC,aAAO,IAAP;AACH;;AAED,WAAO/B,eAAS,CAACN,KAAD,CAAhB;AACH,GA1aL;;AAAA,eA4aW8E,KA5aX,GA4aI,iBAAoC;AAChC,WAAO3C,WAAW,CAACE,YAAD,CAAlB;AACH,GA9aL;;AAAA;AAAA,I;;ACJA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;AACA;AAEA;AAEA;AAEO,SAAS0C,WAAT,CAAqB1G,IAArB,EAAoC2G,GAApC,EAAkEC,cAAlE,EAAwG;AAE3G,MAAID,GAAG,IAAIE,mDAAS,OAAOC,wBAAM,CAACC,YAA9B,IAA8C,CAACC,sDAAY,CAACL,GAAD,CAA/D,EAAsE;AAElE,QAAIA,GAAJ,EAAS;AACLM,yBAAI,CAACN,GAAD,aAAgB3G,IAAhB,EAAyB;AAAE4G,sBAAc,EAAdA;AAAF,OAAzB,CAAJ,CAAiDxB,KAAjD,CAAuD8B,oBAAvD;AACH;;AAED,WAAON,cAAP;AACH;;AAED,MAAIO,OAAO,GAAG,EAAd;AAEAC,mBAAE,YAAWpH,IAAX,EAAoB;AAAEqH,UAAM,EAAEP,wBAAM,CAACQ;AAAjB,GAApB,EAA4D,gBAAc;AAAA,QAAXC,IAAW,QAAXA,IAAW;AACxEJ,WAAO,CAACpE,IAAR,CAAawE,IAAI,CAACX,cAAlB;AACH,GAFC,CAAF;AAIA,SAAO,SAASY,gBAAT,GAAoC;AAAA;AAAA;;AAEvCL,WAAO,GAAGA,OAAO,CAAC5G,MAAR,CAAe,UAAA6F,MAAM;AAAA,aAAI,CAACqB,wDAAc,CAACrB,MAAM,CAACsB,MAAR,CAAnB;AAAA,KAArB,CAAV;;AAEA,QAAIP,OAAO,CAAChE,MAAZ,EAAoB;AAChB,aAAOgE,OAAO,CAACA,OAAO,CAAChE,MAAR,GAAiB,CAAlB,CAAP,CAA4BoD,KAA5B,CAAkC,IAAlC,EAAwCoB,SAAxC,EAAmDvC,KAAnD,CAAyD,YAAM;AAClE,eAAOwB,cAAc,CAACL,KAAf,CAAqB,KAArB,EAA2BoB,UAA3B,CAAP;AACH,OAFM,CAAP;AAGH;;AAED,WAAOf,cAAc,CAACL,KAAf,CAAqB,IAArB,EAA2BoB,SAA3B,CAAP;AACH,GAXD;AAYH,C;;;;;;;;ACpCD;AACA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;;AAEA,SAASC,gBAAT,GAAqC;AACjC,SAAQxF,MAAM,CAACyF,MAAP,IAAiBzF,MAAM,CAACyF,MAAP,CAAcC,eAAhC,GACD1F,MAAM,CAACyF,MAAP,CAAcC,eAAd,EADC,GAED1F,MAAM,CAAC2F,QAAP,CAAgBC,IAFtB;AAGH;;AAED,IAAMC,sBAAsB,GAAGC,4BAAI,CAAC,YAAM;AACtCC,wCAAY,CAACzB,WAAW,CAAC,KAAD,EAAQ0B,mDAAS,CAAChG,MAAD,CAAjB,EAA2BiG,sCAAY,EAAvC,CAAZ,CAAZ;AACH,CAFkC,CAAnC;;AAIA,SAASC,QAAT,GAA8B;AAC1B,MAAIlG,MAAM,CAACmG,IAAP,IAAenG,MAAM,CAACmG,IAAP,CAAYC,KAA/B,EAAsC;AAClC,WAAOpG,MAAM,CAACmG,IAAP,CAAYC,KAAnB;AACH;;AAED,MAAIC,0CAAc,EAAlB,EAAsB;AAClB,QAAMC,UAAU,GAAGC,oCAAa,CAAC,OAAD,CAAhC;;AAEA,QAAID,UAAJ,EAAgB;AACZ,aAAOA,UAAP;AACH;AACJ;AACJ;;AAEM,SAASE,UAAT,GAAsB;AAEzBX,wBAAsB;AAEtBY,6CAAiB,CAAC,YAAM;AACpB,WAAO;AACHC,aAAO,EAAElB,gBAAgB,EADtB;AAEHI,UAAI,EAAK5F,MAAM,CAAC2F,QAAP,CAAgBC,IAFtB;AAGHe,UAAI,EAAK3G,MAAM,CAAC2F,QAAP,CAAgBiB,QAHtB;AAIHC,SAAG,EAAMnC,wBAAM,CAACmC,GAJb;AAKHC,aAAO,EAAEpC,wBAAM,CAACqC,MAAP,CAAcD,OALpB;AAMHE,UAAI,EAAKtC,wBAAM,CAACqC,MAAP,CAAcC,IANpB;AAOHC,SAAG,EAAMC,uCAAY,EAPlB;AAQHC,SAAG,EAAMC,SAAqCC;AAR3C,KAAP;AAUH,GAXgB,CAAjB;AAaAC,4CAAgB,CAAC,YAAM;AACnB,WAAO;AACH,oBAAc;AADX,KAAP;AAGH,GAJe,CAAhB;AAMAC,0CAAc,CAAC,YAAM;AACjB,WAAO;AACHC,WAAK,EAAE9C,wBAAM,CAAC8C;AADX,KAAP;AAGH,GAJa,CAAd;AAMAC,8CAAkB,CAAC,UAACC,OAAD,EAAkB;AAAA;;AAAA,QAAjBA,OAAiB;AAAjBA,aAAiB,GAAP,EAAO;AAAA;;AAEjC,QAAMC,SAAS,GAAST,uCAAY,EAApC;AACA,QAAMU,YAAY,GAAM1B,QAAQ,EAAhC;AACA,QAAM2B,eAAe,GAAGH,OAAO,CAACpb,yBAAI,CAACC,GAAL,CAASM,kBAAV,CAAP,IAAwCib,6CAAkB,EAAlF;AAEA,QAAIC,WAAJ;AACA,QAAIC,SAAJ;;AAEA,QAAIJ,YAAJ,EAAkB;AACdG,iBAAW,GAAGzb,yBAAI,CAACU,YAAL,CAAkBtB,iCAAY,CAACC,QAA/B,CAAd;AACAqc,eAAS,GAAKJ,YAAd;AACH,KAHD,MAGO,IAAIC,eAAJ,EAAqB;AACxBE,iBAAW,GAAGzb,yBAAI,CAACU,YAAL,CAAkBwB,iBAAhC;AACAwZ,eAAS,GAAKH,eAAd;AACH,KAHM,MAGA;AACHE,iBAAW,GAAGL,OAAO,CAACpb,yBAAI,CAACC,GAAL,CAASS,YAAV,CAArB;AACAgb,eAAS,GAAKN,OAAO,CAACpb,yBAAI,CAACC,GAAL,CAASQ,UAAV,CAArB;AACH;;AAED,2BACMT,yBAAI,CAACC,GAAL,CAASC,IADf,IACqCF,yBAAI,CAACE,IAAL,CAAUiC,UAD/C,OAEMnC,yBAAI,CAACC,GAAL,CAASY,WAFf,IAEqCb,yBAAI,CAACa,WAAL,CAAiBhI,QAFtD,OAGMmH,yBAAI,CAACC,GAAL,CAASS,YAHf,IAGqC+a,WAHrC,OAIMzb,yBAAI,CAACC,GAAL,CAASQ,UAJf,IAIqCib,SAJrC,OAKM1b,yBAAI,CAACC,GAAL,CAASW,SALf,IAKqCwX,wBAAM,CAACuD,UAL5C,OAMM3b,yBAAI,CAACC,GAAL,CAASK,WANf,IAMqC+a,SANrC,OAOMrb,yBAAI,CAACC,GAAL,CAASM,kBAPf,IAOqCgb,eAPrC,OAQMvb,yBAAI,CAACC,GAAL,CAASL,OARf,IAQqCwY,wBAAM,CAACwD,OAR5C,OASM5b,yBAAI,CAACC,GAAL,CAASO,KATf,IASqC8a,YATrC,OAUMtb,yBAAI,CAACC,GAAL,CAASU,OAVf,IAUqCuY,gBAAgB,EAVrD;AAYH,GAhCiB,CAAlB;AAkCA,MAAM2C,MAAM,GAAG,MAAf;;AAEA,MAAInI,MAAM,CAAC2F,QAAP,CAAgByC,QAAhB,KAA6BC,0CAAQ,CAACC,IAA1C,EAAgD;AAC5CC,kCAAI,CAAC;AACDC,SAAG,EAAa9D,wBAAM,CAAC+D,SADtB;AAEDC,eAAS,EAAO,KAFf;AAGDC,oBAAc,EAAE,KAHf;AAIDR,YAAM,EAANA,MAJC;AAKDS,cAAQ,EAAQxB,MAAyCyB;AALxD,KAAD,CAAJ;AAOH;AACJ;AAEM,SAASC,WAAT,CAAqBF,QAArB,EAAwC;AAE3C,MAAIG,2BAAS,CAACrI,OAAV,CAAkBkI,QAAlB,MAAgC,CAAC,CAArC,EAAwC;AACpC,UAAM,IAAInJ,KAAJ,wBAAgCmJ,QAAhC,CAAN;AACH;;AAEDlE,0BAAM,CAACkE,QAAP,GAAkBA,QAAlB;AACAI,0BAAY,CAACJ,QAAb,GAAwBA,QAAxB;AACAK,eAAgB,CAAC5d,SAAjB,GAA6Bud,QAA7B;AACA5I,QAAM,CAAC3U,SAAP,GAAmBud,QAAnB;AACH,C;;AC5HD;AAEA;AAEA;AACA;AAEA,IAAMM,WAAW,GAAG,EAApB;;AAEA,SAASC,SAAT,GAA8B;AAE1B,MAAMC,SAAS,GAAGC,sCAAY,EAA9B;;AAEA,MAAIH,WAAW,CAACE,SAAD,CAAf,EAA4B;AACxB,WAAOF,WAAW,CAACE,SAAD,CAAlB;AACH;;AAED,SAAOE,qBAAA,CAAcA,mBAAA,CAAgB,EAAhB,CAAd,CAAP;;AACA,MAAMC,MAAM,GAAGD,mBAAO,CAAC,EAAD,CAAtB;;AAEAJ,aAAW,CAACE,SAAD,CAAX,GAAyBG,MAAzB;AAEA,SAAOA,MAAP;AACH;;AAEM,SAASC,UAAT,GAAiE;AAEpE,MAAMD,MAAM,GAAGJ,SAAS,EAAxB;;AAFoE,oCAI9ClL,MAAM,CAACC,IAAP,CAAYwG,wBAAM,CAAC+E,kBAAnB,CAJ8C,qCAIN;AAAzD,QAAMC,OAAO,qBAAb;;AACD,QAAIH,MAAM,CAACG,OAAD,CAAV,EAAqB;AACjB,aAAO;AAAEA,eAAO,EAAPA,OAAF;AAAWxB,eAAO,EAAEqB,MAAM,CAACrB;AAA3B,OAAP;AACH;AACJ;;AAED,SAAO,EAAP;AACH;;AAED,SAASyB,iBAAT,GAAuC;AAEnC,MAAIC,sCAAY,EAAhB,EAAoB;AAChB,WAAO,KAAP;AACH;;AAED,MAAML,MAAM,GAAGJ,SAAS,EAAxB;;AANmC,oBAONK,UAAU,EAPJ;AAAA,MAO3BE,OAP2B,eAO3BA,OAP2B;AAAA,MAOlBxB,OAPkB,eAOlBA,OAPkB;;AASnC,MAAIwB,OAAO,IAAIxB,OAAX,IAAsBqB,MAAM,CAACM,eAAP,CAAuB,CAAE3B,OAAF,EAAWxD,wBAAM,CAAC+E,kBAAP,CAA0BC,OAA1B,CAAX,CAAvB,MAA4E,CAAC,CAAvG,EAA0G;AACtG,WAAO,KAAP;AACH;;AAED,SAAO,IAAP;AACH;;AAED,IAAMI,kBAAkB,GAAG,EAA3B;AAEO,SAASC,UAAT,GAAgC;AAEnC,MAAIH,sCAAY,EAAhB,EAAoB;AAChB,WAAO,KAAP;AACH;;AAED,MAAMR,SAAS,GAAGpJ,MAAM,CAACgK,SAAP,CAAiBZ,SAAnC;;AAEA,MAAIA,SAAS,IAAIU,kBAAkB,CAACG,cAAnB,CAAkCb,SAAlC,CAAjB,EAA+D;AAC3D,WAAOU,kBAAkB,CAACV,SAAD,CAAzB;AACH;;AAED,MAAM5K,MAAM,GAAGmL,iBAAiB,EAAhC;AAEAG,oBAAkB,CAACV,SAAD,CAAlB,GAAgC5K,MAAhC;AAEA,SAAOA,MAAP;AACH;AAEM,IAAM0L,sBAAsB,GAAGpE,4BAAI,CAAC,UAAC0B,KAAD,EAAoB;AAAA,qBAEvCgC,UAAU,EAF6B;AAAA,MAEnDE,OAFmD,gBAEnDA,OAFmD;;AAI3D,MAAI,CAACA,OAAL,EAAc;AAAA,qBACsCP,SAAS,EAD/C;AAAA,QACFvL,IADE,cACFA,IADE;AAAA,QACIsK,OADJ,cACIA,OADJ;AAAA,QACaiC,MADb,cACaA,MADb;AAAA,QACqBC,OADrB,cACqBA,OADrB;AAAA,QAC8BC,GAD9B,cAC8BA,GAD9B;;AAEVC,kCAAI,2BAA0B9C,KAA1B,EAAoC;AAAE5J,UAAI,EAAJA,IAAF;AAAQsK,aAAO,EAAPA,OAAR;AAAiBiC,YAAM,EAANA,MAAjB;AAAyBC,aAAO,EAAPA,OAAzB;AAAkCC,SAAG,EAAHA;AAAlC,KAApC,CAAJ;AACAE,mCAAS;AACZ;AACJ,CATyC,CAAnC,C;;AC3EP;AAEA;;AAEA,SAASC,OAAT,CAAiBnK,GAAjB,EAA6B;AACzB,MAAIL,MAAM,CAACyK,OAAX,EAAoB;AAChB,QAAIzK,MAAM,CAACyK,OAAP,CAAeC,IAAnB,EAAyB;AACrB,aAAO1K,MAAM,CAACyK,OAAP,CAAeC,IAAf,CAAoBrK,GAApB,CAAP;AACH;;AAED,QAAIL,MAAM,CAACyK,OAAP,CAAeE,GAAnB,EAAwB;AACpB,aAAO3K,MAAM,CAACyK,OAAP,CAAeE,GAAf,CAAmBtK,GAAnB,CAAP;AACH;AACJ;AACJ;;AAEM,SAASuK,oBAAT,GAAgC;AAEnC,MAAIC,IAAI,CAACC,SAAL,CAAe,EAAf,MAAuB,IAA3B,EAAiC;AAC7B;AACA,QAAIlM,KAAK,CAAC4D,SAAN,CAAgBuI,MAApB,EAA4B;AACxBP,aAAO,mJAAP;AACH,KAFD,MAEO;AACHA,aAAO,8FAAP;AACH;;AAEDE,kCAAI,+BAAJ;AACH;;AAED,MAAIG,IAAI,CAACC,SAAL,CAAe,EAAf,MAAuB,IAA3B,EAAiC;AAC7BN,WAAO,+FAAP;AAEAE,kCAAI,gCAAJ;AACH;;AAED,MAAId,sCAAY,EAAhB,EAAoB;AAChBc,kCAAI,oBAAJ;AACH;;AAED,MAAIM,8BAAI,MAAM,CAACC,wCAAc,EAA7B,EAAiC;AAC7BP,kCAAI,yCAAyC;AACzCQ,aAAO;AADkC,KAAzC,CAAJ;AAEH,GA1BkC,CA4BnC;;;AACA,WAASC,GAAT,CAAaC,GAAb,EAAkBC,GAAlB,EAAuBC,IAAvB,EAA6B,CACzB;AACH;;AAED,MAAIH,GAAG,CAACI,IAAJ,CAAS;AAAEC,KAAC,EAAE;AAAL,GAAT,EAAmBzK,MAAnB,KAA8B,CAAlC,EAAqC;AACjC2J,kCAAI,oCAAJ;AACH;;AAED,MAAI1K,MAAM,CAACyL,MAAP,IAAiBzL,MAAM,CAAC0L,MAAP,KAAkB1L,MAAvC,EAA+C;AAC3C0K,kCAAI,gCAAJ;AACH;;AAED,MAAI1K,MAAM,CAACpC,IAAP,IAAeoC,MAAM,CAACpC,IAAP,CAAY8C,OAAZ,CAAoB,aAApB,MAAuC,CAA1D,EAA6D;AACzDgK,kCAAI,gCAAJ;AACH;;AAED,MAAMzG,OAAO,GAAG,EAAhB;;AAEA,WAAS0H,aAAT,GAA0C;AACtC,WAAO,IAAP;AACH;;AAED,MAAIA,aAAa,CAACJ,IAAd,CAAmBtH,OAAnB,QAAkCA,OAAtC,EAA+C;AAC3CyG,kCAAI,wBAAJ;AACH;;AAED,MAAI1K,MAAM,CAACC,MAAP,IAAiBD,MAAM,CAACE,WAAxB,IAAuCF,MAAM,CAACC,MAAP,KAAkBD,MAAM,CAACE,WAApE,EAAiF;AAC7EwK,kCAAI,4CAAJ;AACH,GAzDkC,CA2DnC;;;AACA,MAAIzM,MAAM,CAAC2N,MAAP,IAAiBf,IAAI,CAACC,SAAL,CAAe;AAAEU,KAAC,EAAE,CAAL;AAAQK,KAAC,EAAE,CAAX;AAAcC,KAAC,EAAE;AAAjB,GAAf,MAAyCjB,IAAI,CAACC,SAAL,CAAe;AAAEU,KAAC,EAAE,CAAL;AAAQK,KAAC,EAAE,CAAX;AAAcC,KAAC,EAAE;AAAjB,GAAf,CAA9D,EAAoG;AAAE;AAClGpB,kCAAI,wBAAJ;AACH;AACJ,C;;;;;;;;;AC/ED;AACA;AAcA,IAAMqB,OAAO,GAAG;AACZC,cAAY,EAAE,cADF;AAEZC,QAAM,EAAQ;AAFF,CAAhB;AAKA,IAAMC,cAAc,GAAG,EAAvB;AACA,IAAMC,OAAO,GAAG,EAAhB;AAEA1F,2CAAiB,CAAC,YAAM;AACpB,SAAO;AACH2F,iBAAa,EAAED,OAAO,CAAC7N,IAAR,CAAa,GAAb;AADZ,GAAP;AAGH,CAJgB,CAAjB;;AAMA,SAAS+N,YAAT,CAAsBC,UAAtB,EAAwE;AAAA,MAAlDA,UAAkD;AAAlDA,cAAkD,GAA5B,EAA4B;AAAA;;AACpE,MAAM9N,MAAM,GAAG,EAAf;;AADoE,6CAEjD8N,UAAU,CAAC5M,IAAX,GAAkB6M,KAAlB,CAAwB,IAAxB,CAFiD,8CAElB;AAA7C,QAAMC,IAAI,8BAAV;;AAA6C,sBACnBA,IAAI,CAACD,KAAL,CAAW,GAAX,CADmB;AAAA,QACtCnO,IADsC;AAAA,QAC9BqO,MAD8B;;AAE9CjO,UAAM,CAACJ,IAAG,CAACsO,WAAJ,EAAD,CAAN,GAA4BD,MAAM,CAACnO,IAAP,CAAY,GAAZ,EAAiBoB,IAAjB,EAA5B;AACH;;AACD,SAAOlB,MAAP;AACH;;AAEM,SAASmO,OAAT,OAAiJ;AAAA,MAA9HC,GAA8H,QAA9HA,GAA8H;AAAA,yBAAzH5I,MAAyH;AAAA,MAAzHA,MAAyH,4BAAhH,KAAgH;AAAA,0BAAzG6I,OAAyG;AAAA,MAAzGA,OAAyG,6BAA/F,EAA+F;AAAA,MAA3FC,IAA2F,QAA3FA,IAA2F;AAAA,MAArF3H,IAAqF,QAArFA,IAAqF;AAAA,MAA/E4H,IAA+E,QAA/EA,IAA+E;AAAA,sBAAzExI,GAAyE;AAAA,MAAzEA,GAAyE,yBAAnEvE,MAAmE;AAAA,0BAA3DoD,OAA2D;AAAA,MAA3DA,OAA2D,6BAAjD,CAAiD;;AAEpJ,MAAIwJ,GAAG,KAAK,4CAAZ,EAA0D;AACtD;AACA,WAAOhL,yCAAY,CAACL,OAAb,CAAqB,8xDAArB,CAAP;AACH;;AAED,SAAO,IAAIK,yCAAJ,CAAiB,UAACL,OAAD,EAAUe,MAAV,EAAqB;AAEzC,QAAKwK,IAAI,IAAI3H,IAAT,IAAmB2H,IAAI,IAAIC,IAA3B,IAAqC5H,IAAI,IAAI2H,IAAjD,EAAwD;AACpD,YAAM,IAAIrN,KAAJ,sEAAN;AACH;;AAED,QAAMuN,iBAAiB,GAAG,EAA1B;;AANyC,sCAQvB/O,MAAM,CAACC,IAAP,CAAY2O,OAAZ,CARuB,qCAQD;AAAnC,UAAMzO,KAAG,qBAAT;AACD4O,uBAAiB,CAAC5O,KAAG,CAACsO,WAAJ,EAAD,CAAjB,GAAuCG,OAAO,CAACzO,KAAD,CAA9C;AACH;;AAED,QAAI0O,IAAJ,EAAU;AACNE,uBAAiB,CAACjB,OAAO,CAACC,YAAT,CAAjB,GAA0CgB,iBAAiB,CAACjB,OAAO,CAACC,YAAT,CAAjB,IAA2C,kBAArF;AACH,KAFD,MAEO,IAAI7G,IAAI,IAAI4H,IAAZ,EAAkB;AACrBC,uBAAiB,CAACjB,OAAO,CAACC,YAAT,CAAjB,GAA0CgB,iBAAiB,CAACjB,OAAO,CAACC,YAAT,CAAjB,IAA2C,kDAArF;AACH;;AAEDgB,qBAAiB,CAACjB,OAAO,CAACE,MAAT,CAAjB,GAAoCe,iBAAiB,CAACjB,OAAO,CAACE,MAAT,CAAjB,IAAqC,kBAAzE;;AAlByC,4BAoBbC,cApBa,gBAoBG;AAAvC,UAAMe,aAAa,GAAIf,cAAJ,KAAnB;AACD,UAAMgB,YAAY,GAAGD,aAAa,EAAlC;;AADwC,wCAGtBhP,MAAM,CAACC,IAAP,CAAYgP,YAAZ,CAHsB,qCAGK;AAAxC,YAAM9O,KAAG,qBAAT;AACD4O,yBAAiB,CAAC5O,KAAG,CAACsO,WAAJ,EAAD,CAAjB,GAAuCQ,YAAY,CAAC9O,KAAD,CAAnD;AACH;AACJ;;AAED,QAAM+O,GAAG,GAAG,IAAI5I,GAAG,CAAC6I,cAAR,EAAZ;AAEAD,OAAG,CAACE,gBAAJ,CAAqB,MAArB,EAA6B,SAASC,OAAT,GAA0B;AAEnD,UAAMC,eAAe,GAAGlB,YAAY,CAAC,KAAKmB,qBAAL,EAAD,CAApC;AACA,UAAMC,MAAM,GAAGF,eAAe,CAAC,iBAAD,CAAf,IAAsC,SAArD;;AAEA,UAAIA,eAAe,CAAC,iBAAD,CAAnB,EAAwC;AACpCpB,eAAO,CAACxL,IAAR,CAAa4M,eAAe,CAAC,iBAAD,CAA5B;AACH;;AAED,UAAI,CAAC,KAAKG,MAAV,EAAkB;AACd,eAAOpL,MAAM,CAAC,IAAI7C,KAAJ,iBAAyBuE,MAAM,CAAC0I,WAAP,EAAzB,SAAmDE,GAAnD,0DAA6Ga,MAA7G,CAAD,CAAb;AACH;;AAED,UAAME,WAAW,GAAGJ,eAAe,CAAC,cAAD,CAAnC;AACA,UAAMK,MAAM,GAAGD,WAAW,KAAKA,WAAW,CAACjN,OAAZ,CAAoB,kBAApB,MAA4C,CAA5C,IAAiDiN,WAAW,CAACjN,OAAZ,CAAoB,WAApB,MAAqC,CAA3F,CAA1B;AACA,UAAI2B,GAAG,GAAG,KAAKwL,YAAf;;AAEA,UAAI;AACAxL,WAAG,GAAGwI,IAAI,CAACiD,KAAL,CAAW,KAAKD,YAAhB,CAAN;AACH,OAFD,CAEE,OAAOxN,GAAP,EAAY;AACV,YAAIuN,MAAJ,EAAY;AACR,iBAAOtL,MAAM,CAAC,IAAI7C,KAAJ,oBAA4B,KAAKoO,YAAjC,0BAAoEJ,MAApE,CAAD,CAAb;AACH;AACJ;;AAED,UAAI,KAAKC,MAAL,IAAe,GAAnB,EAAwB;AACpB,YAAIxC,OAAO,mBAAkBlH,MAAM,CAAC0I,WAAP,EAAlB,SAA4CE,GAA5C,qBAAiE,KAAKc,MAAtE,gCAAyGD,MAApH;;AAEA,YAAIpL,GAAJ,EAAS;AACL,cAAI,OAAOA,GAAP,KAAe,QAAf,IAA2BA,GAAG,KAAK,IAAvC,EAA6C;AACzCA,eAAG,GAAGwI,IAAI,CAACC,SAAL,CAAezI,GAAf,EAAoB,IAApB,EAA0B,CAA1B,CAAN;AACH;;AAED6I,iBAAO,GAAOA,OAAP,YAAuB7I,GAAvB,OAAP;AACH;;AAED,eAAOC,MAAM,CAAC,IAAI7C,KAAJ,CAAUyL,OAAV,CAAD,CAAb;AACH;;AAED,aAAO3J,OAAO,CAACc,GAAD,CAAd;AAEH,KAzCD,EAyCG,KAzCH;AA2CA8K,OAAG,CAACE,gBAAJ,CAAqB,OAArB,EAA8B,SAASU,QAAT,CAAkBC,GAAlB,EAAuB;AACjD,UAAMP,MAAM,GAAG,KAAKQ,iBAAL,CAAuB,iBAAvB,CAAf;AACA3L,YAAM,CAAC,IAAI7C,KAAJ,iBAAyBuE,MAAM,CAAC0I,WAAP,EAAzB,SAAmDE,GAAnD,iBAAoEoB,GAAG,CAACvQ,QAAJ,EAApE,0BAAyGgQ,MAAzG,CAAD,CAAN;AACH,KAHD,EAGG,KAHH;AAKAN,OAAG,CAACe,IAAJ,CAASlK,MAAT,EAAiB4I,GAAjB,EAAsB,IAAtB;;AAEA,SAAK,IAAMxO,KAAX,IAAkB4O,iBAAlB,EAAqC;AACjC,UAAIA,iBAAiB,CAAC/C,cAAlB,CAAiC7L,KAAjC,CAAJ,EAA2C;AACvC+O,WAAG,CAACgB,gBAAJ,CAAqB/P,KAArB,EAA0B4O,iBAAiB,CAAC5O,KAAD,CAA3C;AACH;AACJ;;AAED,QAAI0O,IAAJ,EAAU;AACNC,UAAI,GAAGlC,IAAI,CAACC,SAAL,CAAegC,IAAf,CAAP;AACH,KAFD,MAEO,IAAI3H,IAAJ,EAAU;AACb4H,UAAI,GAAG9O,MAAM,CAACC,IAAP,CAAYiH,IAAZ,EAAkB9G,GAAlB,CAAsB,UAAAD,GAAG,EAAI;AAChC,eAAWgQ,kBAAkB,CAAChQ,GAAD,CAA7B,UAAwC+G,IAAI,GAAGiJ,kBAAkB,CAACjJ,IAAI,CAAC/G,GAAD,CAAL,CAArB,GAAmC,EAA/E;AACH,OAFM,EAEJE,IAFI,CAEC,GAFD,CAAP;AAGH;;AAED6O,OAAG,CAAC/J,OAAJ,GAAcA,OAAd;;AACA+J,OAAG,CAACkB,SAAJ,GAAgB,SAASC,UAAT,GAAsB;AAClChM,YAAM,CAAC,IAAI7C,KAAJ,iBAAyBuE,MAAM,CAAC0I,WAAP,EAAzB,SAAmDE,GAAnD,oBAAD,CAAN;AACH,KAFD;;AAIAO,OAAG,CAACtI,IAAJ,CAASkI,IAAT;AACH,GApGM,CAAP;AAqGH;;AAEDJ,OAAO,CAAC4B,GAAR,GAAc,UAAC3B,GAAD,EAAe4B,OAAf,EAAgC;AAAA,MAAjBA,OAAiB;AAAjBA,WAAiB,GAAP,EAAO;AAAA;;AAC1C,SAAO7B,OAAO,CAAC;AAAE3I,UAAM,EAAE,KAAX;AAAkB4I,OAAG,EAAHA;AAAlB,KAA0B4B,OAA1B,EAAd;AACH,CAFD;;AAIA7B,OAAO,CAAC8B,IAAR,GAAe,UAAC7B,GAAD,EAAezH,IAAf,EAAqBqJ,OAArB,EAAsC;AAAA,MAAjBA,OAAiB;AAAjBA,WAAiB,GAAP,EAAO;AAAA;;AACjD,SAAO7B,OAAO,CAAC;AAAE3I,UAAM,EAAE,MAAX;AAAmB4I,OAAG,EAAHA,GAAnB;AAAwBzH,QAAI,EAAJA;AAAxB,KAAiCqJ,OAAjC,EAAd;AACH,CAFD;;AAIA7B,OAAO,CAACrF,gBAAR,GAA2B,UAACtD,MAAD,EAAY;AACnCkI,gBAAc,CAACvL,IAAf,CAAoBqD,MAApB;AACH,CAFD,C;;;;;;AC5JA;AAEA;AAEA;AACA;;AAWA,SAAS0K,qBAAT,CAA+B9Q,IAA/B,EAAuD;AACnD,SAAO+Q,0CAAe,CAAC,UAAAC,OAAO,EAAI;AAC9BA,WAAO,CAACC,mBAAR,GAA8BD,OAAO,CAACC,mBAAR,IAA+B,EAA7D;AACAD,WAAO,CAACC,mBAAR,CAA4BjR,IAA5B,IAAoCgR,OAAO,CAACC,mBAAR,CAA4BjR,IAA5B,KAAqCkR,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACE,MAAL,KAAgB,GAA3B,CAAzE;AACA,WAAOJ,OAAO,CAACC,mBAAR,CAA4BjR,IAA5B,CAAP;AACH,GAJqB,CAAtB;AAKH;;AAED,IAAMqR,cAAc,GAAG;AACnBnkB,MAAI,EAAM,MADS;AAEnBokB,SAAO,EAAG,SAFS;AAGnBC,UAAQ,EAAE;AAHS,CAAvB;AAMO,SAASC,WAAT,CAAqBxR,IAArB,EAAoCyR,MAApC,EAAqDC,MAArD,EAAyF;AAAA,MAApCA,MAAoC;AAApCA,UAAoC,GAAjB,IAAiB;AAAA;;AAE5F,MAAMrI,GAAG,GAAGsI,uCAAY,EAAxB;AAEA,MAAMC,UAAU,GAAGF,MAAM,GAAGZ,qBAAqB,CAAC9Q,IAAD,CAAxB,GAAiCkR,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACE,MAAL,KAAgB,GAA3B,CAA1D;AAEA,MAAIS,KAAJ;;AAEA,MAAID,UAAU,GAAGH,MAAjB,EAAyB;AACrBI,SAAK,GAAGR,cAAc,CAACnkB,IAAvB;AACH,GAFD,MAEO,IAAKukB,MAAM,IAAI,EAAX,IAAoBA,MAAM,IAAIG,UAAX,IAA2BA,UAAU,GAAIH,MAAM,GAAG,CAAzE,EAA+E;AAClFI,SAAK,GAAGR,cAAc,CAACC,OAAvB;AACH,GAFM,MAEA;AACHO,SAAK,GAAGR,cAAc,CAACE,QAAvB;AACH;;AAED,MAAMO,SAAS,GAAO9R,IAAP,SAAiB6R,KAAhC;AAEA,MAAIE,OAAO,GAAG,KAAd;AACA,MAAIC,MAAM,GAAG,KAAb;;AAEA,MAAI;AACA,QAAI5P,MAAM,CAAC6P,YAAP,IAAuB7P,MAAM,CAAC6P,YAAP,CAAoBC,OAApB,CAA4BlS,IAA5B,CAA3B,EAA8D;AAC1DgS,YAAM,GAAG,IAAT;AACH;AACJ,GAJD,CAIE,OAAOvP,GAAP,EAAY,CACV;AACH;;AAED,SAAO;AAEH0P,aAFG,uBAEmB;AAClB,aAAQN,KAAK,KAAKR,cAAc,CAACnkB,IAA1B,IAAmC8kB,MAA1C;AACH,KAJE;AAMHI,cANG,wBAMoB;AACnB,aAAQP,KAAK,KAAKR,cAAc,CAACnkB,IAA1B,IAAmC,CAAC8kB,MAA3C;AACH,KARE;AAUHK,gBAVG,0BAUqB;AACpB,aAAOP,SAAP;AACH,KAZE;AAcH/E,OAdG,eAcCuF,cAdD,EAc0BxI,OAd1B,EAc6E;AAAA;;AAAA,UAAnDA,OAAmD;AAAnDA,eAAmD,GAAf,EAAe;AAAA;;AAC5E,UAAI,CAACiI,OAAL,EAAc;AACV,eAAO,IAAP;AACH;;AAED,UAAMQ,UAAU,GAAOvS,IAAP,SAAiB8R,SAAjB,SAAgCQ,cAAhD;AACA5F,oCAAI,CAAC6F,UAAD,6CAAkBzI,OAAlB;AAA2B0I,cAAM,EAAEnJ;AAAnC,SAAJ;AAEAoJ,qCAAK,CAAC,kEACA/jB,yBAAI,CAACC,GAAL,CAASiB,eADV,IAC6BoQ,IAD7B,YAECtR,yBAAI,CAACC,GAAL,CAASkB,cAFV,IAE6BiiB,SAF7B,cAGEhI,OAHF,EAAL;AAMA6C,qCAAS;AACT,aAAO,IAAP;AACH,KA9BE;AAgCH+F,YAhCG,oBAgCM5I,OAhCN,EAgCyD;AAAA,UAAnDA,OAAmD;AAAnDA,eAAmD,GAAf,EAAe;AAAA;;AACxDiI,aAAO,GAAG,IAAV;AACA,aAAO,KAAKhF,GAAL,UAAkBjD,OAAlB,CAAP;AACH,KAnCE;AAqCH6I,eArCG,uBAqCS7I,OArCT,EAqC4D;AAAA,UAAnDA,OAAmD;AAAnDA,eAAmD,GAAf,EAAe;AAAA;;AAC3D,UAAI,CAACiI,OAAL,EAAc;AACV,eAAO,IAAP;AACH;;AAED,aAAO,KAAKhF,GAAL,aAAqBjD,OAArB,CAAP;AACH;AA3CE,GAAP;AA6CH;AAEM,SAAS8I,cAAT,GAAoC;AAEvC,MAAMpK,KAAK,GAAG/G,6BAAK,CAACW,MAAM,CAAC2F,QAAP,CAAgB8K,IAAjB,EAAuB,yBAAvB,CAAnB;AACA,MAAMC,KAAK,GAAGrR,6BAAK,CAACW,MAAM,CAAC2F,QAAP,CAAgB8K,IAAjB,EAAuB,qBAAvB,CAAnB;;AAEA,MAAIrK,KAAK,IAAIsK,KAAb,EAAoB;AAChB,WAAOtK,KAAP;AACH;AACJ,C;;;;;AClHD;AACA;AAEA;AAEA;AAEO,IAAMuK,gBAAgB,GAAGC,+BAAO,CAAC,YAA2B;AAE/D,MAAMC,OAAO,GAAGjS,KAAK,CAAC4D,SAAN,CAAgBsO,KAAhB,CAAsB3Q,IAAtB,CAA2B4Q,QAAQ,CAACC,oBAAT,CAA8B,QAA9B,CAA3B,CAAhB;;AAF+D,0BAI1CH,OAJ0C,gBAIjC;AAAzB,QAAMI,MAAM,GAAIJ,OAAJ,KAAZ;;AACD,QAAII,MAAM,CAACC,GAAP,KAAeD,MAAM,CAACC,GAAP,CAAWxT,OAAX,CAAmB,UAAnB,EAA+B,EAA/B,EAAmC6O,KAAnC,CAAyC,GAAzC,EAA8C,CAA9C,MAAqD7H,wBAAM,CAACyM,SAA5D,IAAyEF,MAAM,CAACG,YAAP,CAAoB,sBAApB,CAAxF,CAAJ,EAA0I;AACtI,aAAOH,MAAP;AACH;;AAED,QAAIA,MAAM,CAACC,GAAP,IAAeD,MAAM,CAACC,GAAP,CAAWxQ,OAAX,CAAmB,uBAAnB,MAAgD,CAAC,CAApE,EAAwE;AACpE,aAAOuQ,MAAP;AACH;AACJ;;AAED,MAAIF,QAAQ,CAACM,aAAb,EAA4B;AAAE;AAC1BC,mCAAK,kCAAkC;AAAEJ,SAAG,EAAEH,QAAQ,CAACM,aAAT,CAAuBH;AAA9B,KAAlC,CAAL,CADwB,CACqD;AAChF;AACJ,CAjBsC,CAAhC;AAmBA,SAASK,eAAT,GAAqC;AACxC,SAAOC,OAAO,CAACb,gBAAgB,EAAjB,CAAd;AACH;AAEM,SAASc,gBAAT,GAAqC;AACxC,MAAIrK,KAAJ,EAAwD,EAAxD,MAEO;AACH,WAAOsK,MAAO,GAAOtK,SAAP,GAAsDA,SAApE;AACH;AACJ;AAEM,SAASuK,mBAAT,GAAwC;AAC3C,MAAMV,MAAM,GAAGN,gBAAgB,EAA/B;;AAEA,MAAIM,MAAM,IAAI,OAAOA,MAAM,CAACC,GAAd,KAAsB,QAApC,EAA8C;AAC1C,QAAIC,SAAS,GAAGF,MAAM,CAACC,GAAvB;;AAEA,QAAIC,SAAS,CAACzQ,OAAV,CAAkB,8BAAlB,MAAsD,CAA1D,EAA6D;AACzDyQ,eAAS,GAAGA,SAAS,CAACzT,OAAV,CAAkB,SAAlB,EAA6B,UAA7B,CAAZ;AACH;;AAED,WAAOyT,SAAP;AACH;;AAED,yDAAsD/J,SAAtD,IAAgGsK,MAAO,GAAG,SAAH,GAAY,EAAnH;AACH;AAEM,SAASE,gBAAT,CAAqChU,IAArC,EAAoDiU,GAApD,EAAmE;AAEtE,MAAMC,QAAQ,GAAG9R,MAAM,CAACyF,MAAP,GACXzF,MAAM,CAACyF,MAAP,CAAcC,eAAd,EADW,GAEXjB,mDAAS,EAFf;;AAIA,MAAIC,wBAAM,CAACqN,eAAX,EAA4B;AAAA,sCACH9T,MAAM,CAACC,IAAP,CAAYwG,wBAAM,CAACqN,eAAnB,CADG,qCACkC;AAArD,UAAM9M,MAAM,qBAAZ;;AACD,UAAI+M,qCAAa,CAACF,QAAD,EAAW7M,MAAX,CAAjB,EAAqC;AACjC,eAAOP,wBAAM,CAACqN,eAAP,CAAuB9M,MAAvB,EAA+BrH,IAA/B,CAAP;AACH;AACJ;AACJ;;AAED,SAAOiU,GAAP;AACH,C;;ACrED;AACA;AAEA;AAEA;AACA;AACA;AACA;AASO,IAAMI,aAAa,GAAGrB,+BAAO,CAAC,UAAC/J,GAAD,EAA6D;AAAA,MAA5DA,GAA4D;AAA5DA,OAA4D,GAA7CnC,wBAAM,CAACmC,GAAsC;AAAA;;AAC9F,SAAOjF,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAE1B,QAAIyG,sCAAY,EAAhB,EAAoB;AAChB,aAAO;AACHsI,sBAAc,EAAQ,KADnB;AAEHC,4BAAoB,EAAE,aAFnB;AAGHC,yBAAiB,EAAK;AAHnB,OAAP;AAKH;;AAED,QAAMC,YAAqB,GAAG3N,wBAAM,CAAC4N,aAAP,CAAqBzL,GAArB,CAA9B;AACA,QAAM0L,eAAwB,GAAG7N,wBAAM,CAAC8N,aAAP,CAAqB3L,GAArB,CAAjC;AAEA,WAAOjF,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAC1B,UAAI,CAACsP,aAAL,EAAa;AACT,cAAM,IAAIhT,KAAJ,yEAAN;AACH;;AAED,UAAMiT,YAAY,GAAG5M,mBAAI,CAAC,MAAD,EAAS;AAAEb,cAAM,EAAEsN;AAAV,OAAT,CAAzB;AAEA,aAAOE,aAAM,CAACE,UAAP,CAAkBC,gCAAS,CAACP,YAAD,EAAe;AAAEnK,eAAO,EAAEuJ,gBAAgB;AAA3B,OAAf,CAA3B,EAA4Ec,eAA5E,EACFnS,IADE,CACG;AAAA,eAAMsS,YAAN;AAAA,OADH,EAEFtS,IAFE,CAEG;AAAA,YAAG+E,IAAH,QAAGA,IAAH;AAAA,eAAcA,IAAd;AAAA,OAFH,CAAP;AAGH,KAVM,CAAP;AAWH,GAxBM,CAAP;AAyBH,CA1BmC,CAA7B,C;;ACjBP;AAEA;AAGA;AACA;AACA;CAGA;;AACO,SAAS0N,oBAAT,CAAiC5R,OAAjC,EAAmG;AAAA,MAAlEA,OAAkE;AAAlEA,WAAkE,GAAd6R,wBAAc;AAAA;;AACtG,SAAOnE,0CAAe,CAAC,UAAAC,OAAO,EAAI;AAC9BA,WAAO,CAACwD,iBAAR,GAA4BxD,OAAO,CAACwD,iBAAR,IAA6B,EAAzD;AACA,WAAOnR,OAAO,CAAC2N,OAAO,CAACwD,iBAAT,CAAd;AACH,GAHqB,CAAtB;AAIH;;AAED,SAASW,oBAAT,CAA8BzN,MAA9B,EAAiE;AAE7D,MAAIuN,oBAAoB,CAAC,UAAAT,iBAAiB;AAAA,WAAIA,iBAAiB,CAAC1R,OAAlB,CAA0B4E,MAA1B,MAAsC,CAAC,CAA3C;AAAA,GAAlB,CAAxB,EAAyF;AACrF,WAAO,IAAP;AACH;;AAED,MAAI0N,0CAAe,CAAC,UAAAC,OAAO;AAAA,WAAIA,OAAO,CAACC,yBAAZ;AAAA,GAAR,CAAnB,EAAmE;AAC/D,WAAO,IAAP;AACH;;AAED,SAAO,KAAP;AACH;;AAGD,SAASC,mBAAT,CAA6B7N,MAA7B,EAA+D;AAE3D,MAAIuN,oBAAoB,CAAC,UAAAT,iBAAiB;AAAA,WAAIA,iBAAiB,CAAC1R,OAAlB,CAA0B4E,MAA1B,MAAsC,CAAC,CAA3C;AAAA,GAAlB,CAAxB,EAAyF;AACrF,WAAO,IAAP;AACH;;AAED,MAAI0N,0CAAe,CAAC,UAAAC,OAAO;AAAA,WAAIA,OAAO,CAACC,yBAAZ;AAAA,GAAR,CAAnB,EAAmE;AAC/D,WAAO,KAAP;AACH;;AAED,QAAM,IAAIzT,KAAJ,0CAAN;AACH;;AAED,SAAS2T,4BAAT,GAAsF;AAClF,SAAOC,yCAAc,CAAC,UAAAC,MAAM,EAAI;AAC5BA,UAAM,CAACC,uBAAP,GAAiCD,MAAM,CAACC,uBAAP,IAAkC,EAAnE;AACA,WAAOD,MAAM,CAACC,uBAAd;AACH,GAHoB,CAArB;AAIH;;AAED,SAASC,2BAAT,CAAqClO,MAArC,EAAqF;AACjF,MAAM5B,QAAQ,GAAG0P,4BAA4B,EAA7C;AACA,MAAM3S,OAAO,GAAGiD,QAAQ,CAAC4B,MAAD,CAAR,GAAmB5B,QAAQ,CAAC4B,MAAD,CAAR,IAAoB,IAAI1D,yCAAJ,EAAvD;;AACA,MAAImR,oBAAoB,CAACzN,MAAD,CAAxB,EAAkC;AAC9B7E,WAAO,CAACc,OAAR,CAAgB4R,mBAAmB,CAAC7N,MAAD,CAAnC;AACH;;AACD,SAAO7E,OAAP;AACH;;AAED,SAASgT,8BAAT,GAA0C;AACtC,MAAM/P,QAAQ,GAAG0P,4BAA4B,EAA7C;AACA,MAAMhB,iBAAiB,GAAGS,oBAAoB,CAAC,UAAAa,OAAO;AAAA,WAAIA,OAAJ;AAAA,GAAR,CAA9C;;AAFsC,oCAIjBzV,MAAM,CAACC,IAAP,CAAYwF,QAAZ,CAJiB,qCAIM;AAAvC,QAAM4B,MAAM,qBAAZ;AACD5B,YAAQ,CAAC4B,MAAD,CAAR,CAAiB/D,OAAjB,CAAyB6Q,iBAAiB,CAAC1R,OAAlB,CAA0B4E,MAA1B,MAAsC,CAAC,CAAhE;AACH;AACJ;;AAEM,SAASqO,eAAT,CAAyBD,OAAzB,EAAgD;AACnDb,sBAAoB,CAAC,UAAAT,iBAAiB,EAAI;AAAA,4BACjBsB,OADiB,gBACR;AAAzB,UAAMpO,MAAM,GAAIoO,OAAJ,KAAZ;;AAED,UAAIpO,MAAM,KAAK3c,4BAAO,CAAClD,KAAnB,IAA4B,CAACmuB,kCAAQ,EAAzC,EAA6C;AACzC;AACH;;AACD,UAAIxB,iBAAiB,CAAC1R,OAAlB,CAA0B4E,MAA1B,MAAsC,CAAC,CAA3C,EAA8C;AAC1C8M,yBAAiB,CAACzR,IAAlB,CAAuB2E,MAAvB;AACH;AACJ;;AAEDmO,kCAA8B;AACjC,GAZmB,CAApB;AAcAT,4CAAe,CAAC,UAAAC,OAAO,EAAI;AACvBA,WAAO,CAACC,yBAAR,GAAoC,IAApC;AACH,GAFc,CAAf;AAGH;;AAED,SAASW,QAAT,GAAyC;AACrC,SAAO5B,aAAa,GAAG7R,IAAhB,CAAqB,gBAA2B;AAAA,QAAxBgS,iBAAwB,QAAxBA,iBAAwB;AACnDuB,mBAAe,CAACvB,iBAAiB,IAAI,EAAtB,CAAf;AACH,GAFM,CAAP;AAGH;;AAEM,SAAS0B,mBAAT,CAA6BxO,MAA7B,EAA8F;AAAA,MAAjEA,MAAiE;AAAjEA,UAAiE,GAAxC3c,4BAAO,CAACzD,MAAgC;AAAA;;AAEjG,MAAI6tB,oBAAoB,CAACzN,MAAD,CAAxB,EAAkC;AAC9B,WAAOkO,2BAA2B,CAAClO,MAAD,CAAlC;AACH;;AAED,SAAOuO,QAAQ,GAAGzT,IAAX,CAAgB,YAAM;AACzB,WAAOoT,2BAA2B,CAAClO,MAAD,CAAlC;AACH,GAFM,CAAP;AAGH;AAEM,SAASyO,yBAAT,GAA0D;AAC7D,MAAI,CAACf,0CAAe,CAAC,UAAAC,OAAO;AAAA,WAAIA,OAAO,CAACC,yBAAZ;AAAA,GAAR,CAApB,EAAoE;AAChE,WAAOW,QAAQ,EAAf;AACH;;AACD,SAAOjS,yCAAY,CAACL,OAAb,EAAP;AACH,C;;;;;AChHD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;AChBA;AAEA;;AAEA,SAASyS,aAAT,GAA+C;AAC3C,MAAIC,KAAJ,EAAc,EAEb;;AAED,MAAI,OAAOjU,MAAP,KAAkB,WAAlB,IAAiC,OAAOA,MAAM,CAAC2F,QAAd,KAA2B,WAAhE,EAA6E;AACzE,WAAOlb,wBAAG,CAACI,UAAX;AACH;;AAED,MAAImV,MAAM,CAAC2F,QAAP,CAAgBC,IAAhB,CAAqBlF,OAArB,CAA6B,sBAA7B,MAAyD,CAAC,CAA9D,EAAiE;AAC7D,WAAOjW,wBAAG,CAACC,KAAX;AACH;;AAED,MAAIsV,MAAM,CAAC2F,QAAP,CAAgBC,IAAhB,CAAqBlF,OAArB,CAA6B,eAA7B,MAAkD,CAAC,CAAvD,EAA0D;AACtD,WAAOjW,wBAAG,CAACE,KAAX;AACH;;AAED,MAAIqV,MAAM,CAAC2F,QAAP,CAAgBC,IAAhB,CAAqBlF,OAArB,CAA6B,oBAA7B,MAAuD,CAAC,CAA5D,EAA+D;AAC3D,WAAOjW,wBAAG,CAACG,OAAX;AACH;;AAED,SAAOH,wBAAG,CAACI,UAAX;AACH;;AAEM,IAAM6Z,MAAM,GAAG;AAElBwP,SAAO,EAAE5W,2BAFS;AAIlB6T,WAAS,EAAE8C,MAAQ,gDAEmBE,qBANpB;AAQlB;AACAjP,qBAAmB,EAAE,yDATH;AAWlBgD,SAAO,EAAEd,SAXS;AAalBgN,MAAI,EAAE,IAbY;AAelBvN,KAAG,EAAEmN,aAAa,EAfA;AAiBlBxM,OAAK,EAAE,YAjBW;AAmBlBT,QAAM,EAAE;AACJD,WAAO,EAAEjX,4BAAO,CAAC8L,EADb;AAEJqL,QAAI,EAAKtK,yBAAI,CAACI;AAFV,GAnBU;AAwBlBuX,OAAK,EAAQ,UAxBK;AAyBlBC,aAAW,EAAE,eAzBK;;AA2BlB,MAAIC,QAAJ,GAAwB;AACpB,WAAW7P,MAAM,CAAC2P,KAAlB,SAA6B3P,MAAM,CAAC4P,WAApC;AACH,GA7BiB;;AA+BlB,MAAIE,WAAJ,GAA2B;AACvB,WAAW9P,MAAM,CAAC+P,QAAlB,SAAgC/P,MAAM,CAAC4P,WAAvC;AACH,GAjCiB;;AAmClB,MAAII,YAAJ,GAA4B;AACxB,4CAAuChQ,MAAM,CAACiQ,KAAP,CAAaC,OAApD;AACH,GArCiB;;AAuClB,MAAIF,YAAJ,CAAiBG,GAAjB,EAAsB;AAClB,WAAO,KAAKH,YAAZ;AACA,SAAKA,YAAL,GAAoBG,GAApB;AACH,GA1CiB;;AA4ClB5M,YAAU,EAAE,EA5CM;AA6ClB6M,UAAQ,EAAI,EA7CM;AA+ClBlM,UAAQ,EAAExB,MA/CQ;AAiDlB2N,WAAS,EAAE;AACPC,oBAAgB,EAAE;AADX,GAjDO;AAqDlBjD,iBAAe,EAAE;AACb,mBAAe;AACXkD,kBAAY,EAAqB,KADtB;AAEXC,8BAAwB,EAAS,IAFtB;AAGXC,qBAAe,EAAkB,IAHtB;AAIXC,kBAAY,EAAqB,IAJtB;AAKXC,mBAAa,EAAoB;AALtB,KADF;AASb,gBAAY;AACRC,mBAAa,EAAE;AADP,KATC;AAab,0BAAsB;AAClBA,mBAAa,EAAE;AADG,KAbT;AAiBb,cAAU;AACNA,mBAAa,EAAE;AADT,KAjBG;AAqBb,oBAAgB;AACZA,mBAAa,EAAE;AADH,KArBH;AAyBb,yBAAqB;AACjBA,mBAAa,EAAE;AADE,KAzBR;AA6Bb,gBAAY;AACRL,kBAAY,EAAqB,KADzB;AAERC,8BAAwB,EAAS,IAFzB;AAGRC,qBAAe,EAAkB,IAHzB;AAIRC,kBAAY,EAAqB,IAJzB;AAKRC,mBAAa,EAAoB;AALzB,KA7BC;AAqCb,wBAAoB;AAChBC,mBAAa,EAAE;AADC,KArCP;AAyCb,sBAAkB;AACdA,mBAAa,EAAE;AADD,KAzCL;AA6Cb,4BAAwB;AACpBA,mBAAa,EAAE;AADK,KA7CX;AAiDb,2BAAuB;AACnBA,mBAAa,EAAE;AADI,KAjDV;AAqDb,mBAAe;AACXA,mBAAa,EAAE;AADJ,KArDF;AAyDb,yBAAqB;AACjBA,mBAAa,EAAE;AADE,KAzDR;AA6Db,uBAAmB;AACfA,mBAAa,EAAE;AADA,KA7DN;AAiEb,2BAAuB;AACnBA,mBAAa,EAAE;AADI,KAjEV;AAqEb,kBAAc;AACVA,mBAAa,EAAE;AADL,KArED;AAyEb,yBAAqB;AACjBA,mBAAa,EAAE;AADE,KAzER;AA6Eb,uBAAmB;AACfA,mBAAa,EAAE;AADA,KA7EN;AAiFb,uBAAmB;AACfA,mBAAa,EAAE;AADA,KAjFN;AAqFb,0BAAsB;AAClBA,mBAAa,EAAE;AADG,KArFT;AAyFb,iBAAa;AACTA,mBAAa,EAAE;AADN,KAzFA;AA6Fb,qBAAiB;AACbA,mBAAa,EAAE;AADF,KA7FJ;AAiGb,mBAAe;AACXA,mBAAa,EAAE;AADJ,KAjGF;AAqGb,+BAA2B;AACvBA,mBAAa,EAAE;AADQ,KArGd;AAyGb,+BAA2B;AACvBA,mBAAa,EAAE;AADQ,KAzGd;AA6Gb,sCAAkC;AAC9BA,mBAAa,EAAE;AADe,KA7GrB;AAiHb,oBAAgB;AACZA,mBAAa,EAAE;AADH,KAjHH;AAqHb,sBAAkB;AACdA,mBAAa,EAAE;AADD,KArHL;AAyHb,sBAAkB;AACdA,mBAAa,EAAE;AADD,KAzHL;AA6Hb,6BAAyB;AACrBA,mBAAa,EAAE;AADM,KA7HZ;AAiIb,4BAAwB;AACpBA,mBAAa,EAAE;AADK,KAjIX;AAqIb,yBAAqB;AACjBA,mBAAa,EAAE;AADE,KArIR;AAyIb,uBAAmB;AACfA,mBAAa,EAAE;AADA,KAzIN;AA6Ib,uBAAmB;AACfA,mBAAa,EAAE;AADA,KA7IN;AAiJb,qBAAiB;AACbA,mBAAa,EAAE;AADF,KAjJJ;AAqJb,qBAAiB;AACbA,mBAAa,EAAE;AADF,KArJJ;AAyJb,uBAAmB;AACfA,mBAAa,EAAE;AADA,KAzJN;AA6Jb,wBAAoB;AAChBA,mBAAa,EAAE;AADC,KA7JP;AAiKb,uBAAmB;AACfA,mBAAa,EAAE;AADA,KAjKN;AAqKb,sBAAkB;AACdA,mBAAa,EAAE;AADD,KArKL;AAyKb,iBAAa;AACTA,mBAAa,EAAE;AADN,KAzKA;AA6Kb,eAAW;AACPA,mBAAa,EAAE;AADR,KA7KE;AAiLb,qBAAiB;AACbA,mBAAa,EAAE;AADF,KAjLJ;AAqLb,0BAAsB;AAClBA,mBAAa,EAAE;AADG,KArLT;AAyLb,oBAAgB;AACZA,mBAAa,EAAE;AADH,KAzLH;AA6Lb,kBAAc;AACVA,mBAAa,EAAE;AADL,KA7LD;AAiMb,mBAAe;AACXA,mBAAa,EAAE;AADJ,KAjMF;AAqMb,uBAAmB;AACfA,mBAAa,EAAE;AADA,KArMN;AAyMb,sBAAkB;AACdA,mBAAa,EAAE;AADD,KAzML;AA6Mb,yBAAqB;AACjBA,mBAAa,EAAE;AADE,KA7MR;AAiNb,mBAAe;AACXA,mBAAa,EAAE;AADJ,KAjNF;AAqNb,0BAAsB;AAClBA,mBAAa,EAAE;AADG,KArNT;AAyNb,mBAAe;AACXA,mBAAa,EAAE;AADJ,KAzNF;AA6Nb,4BAAwB;AACpBA,mBAAa,EAAE;AADK,KA7NX;AAiOb,sBAAkB;AACdA,mBAAa,EAAE;AADD,KAjOL;AAqOb,oBAAgB;AACZA,mBAAa,EAAE;AADH,KArOH;AAyOb,wBAAoB;AAChBA,mBAAa,EAAE;AADC,KAzOP;AA6Ob,oBAAgB;AACZA,mBAAa,EAAE;AADH,KA7OH;AAiPb,iBAAa;AACTA,mBAAa,EAAE;AADN,KAjPA;AAqPb,qBAAiB;AACbA,mBAAa,EAAE;AADF,KArPJ;AAyPb,mBAAe;AACXA,mBAAa,EAAE;AADJ,KAzPF;AA6Pb,uBAAmB;AACfA,mBAAa,EAAE;AADA,KA7PN;AAiQb,gBAAY;AACRA,mBAAa,EAAE;AADP,KAjQC;AAqQb,mBAAe;AACXA,mBAAa,EAAE;AADJ,KArQF;AAyQb,wBAAoB;AAChBA,mBAAa,EAAE;AADC,KAzQP;AA6Qb,oBAAgB;AACZA,mBAAa,EAAE;AADH,KA7QH;AAiRb,mBAAe;AACXA,mBAAa,EAAE;AADJ,KAjRF;AAqRb,2BAAuB;AACnBA,mBAAa,EAAE;AADI,KArRV;AAyRb,gBAAY;AACRA,mBAAa,EAAE;AADP,KAzRC;AA6Rb,yBAAqB;AACjBA,mBAAa,EAAE;AADE,KA7RR;AAiSb,qBAAiB;AACbA,mBAAa,EAAE;AADF,KAjSJ;AAqSb,oBAAgB;AACZA,mBAAa,EAAE;AADH,KArSH;AAySb,qBAAiB;AACbA,mBAAa,EAAE;AADF,KAzSJ;AA6Sb,iBAAa;AACTA,mBAAa,EAAE;AADN,KA7SA;AAiTb,4BAAwB;AACpBA,mBAAa,EAAE;AADK,KAjTX;AAqTb,oBAAgB;AACZA,mBAAa,EAAE;AADH,KArTH;AAyTb,qBAAiB;AACbA,mBAAa,EAAE;AADF,KAzTJ;AA6Tb,yBAAqB;AACjBA,mBAAa,EAAE;AADE,KA7TR;AAiUb,2BAAuB;AACnBA,mBAAa,EAAE;AADI,KAjUV;AAqUb,uBAAmB;AACfA,mBAAa,EAAE;AADA,KArUN;AAyUb,qBAAiB;AACbA,mBAAa,EAAE;AADF,KAzUJ;AA6Ub,yBAAqB;AACjBA,mBAAa,EAAE;AADE,KA7UR;AAiVb,iCAA6B;AACzBA,mBAAa,EAAE;AADU,KAjVhB;AAqVb,wBAAoB;AAChBA,mBAAa,EAAE;AADC,KArVP;AAyVb,gBAAY;AACRA,mBAAa,EAAE;AADP,KAzVC;AA6Vb,mBAAe;AACXA,mBAAa,EAAE;AADJ,KA7VF;AAiWb,iBAAa;AACTA,mBAAa,EAAE;AADN,KAjWA;AAqWb,oBAAgB;AACZA,mBAAa,EAAE;AADH,KArWH;AAyWb,6BAAyB;AACrBA,mBAAa,EAAE;AADM,KAzWZ;AA6Wb,mBAAe;AACXA,mBAAa,EAAE;AADJ,KA7WF;AAiXb,oBAAgB;AACZA,mBAAa,EAAE;AADH,KAjXH;AAqXb,oBAAgB;AACZA,mBAAa,EAAE;AADH,KArXH;AAyXb,oBAAgB;AACZA,mBAAa,EAAE;AADH,KAzXH;AA6Xb,uBAAmB;AACfA,mBAAa,EAAE;AADA,KA7XN;AAiYb,sBAAkB;AACdA,mBAAa,EAAE;AADD,KAjYL;AAqYb,kBAAc;AACVA,mBAAa,EAAE;AADL,KArYD;AAyYb,eAAW;AACPA,mBAAa,EAAE;AADR,KAzYE;AA6Yb,0BAAsB;AAClBA,mBAAa,EAAE;AADG,KA7YT;AAiZb,6BAAyB;AACrBA,mBAAa,EAAE;AADM,KAjZZ;AAqZb,iBAAa;AACTA,mBAAa,EAAE;AADN,KArZA;AAyZb,mBAAe;AACXA,mBAAa,EAAE;AADJ,KAzZF;AA6Zb,wBAAoB;AAChBA,mBAAa,EAAE;AADC,KA7ZP;AAiab,2BAAuB;AACnBA,mBAAa,EAAE;AADI,KAjaV;AAqab,sBAAkB;AACdA,mBAAa,EAAE;AADD,KAraL;AAyab,0BAAsB;AAClBA,mBAAa,EAAE;AADG,KAzaT;AA6ab,4BAAwB;AACpBA,mBAAa,EAAE;AADK,KA7aX;AAibb,yBAAqB;AACjBA,mBAAa,EAAE;AADE,KAjbR;AAqbb,iBAAa;AACTA,mBAAa,EAAE;AADN,KArbA;AAybb,0BAAsB;AAClBA,mBAAa,EAAE;AADG,KAzbT;AA6bb,gBAAY;AACRA,mBAAa,EAAE;AADP,KA7bC;AAicb,uBAAmB;AACfA,mBAAa,EAAE;AADA,KAjcN;AAqcb,oBAAgB;AACZA,mBAAa,EAAE;AADH,KArcH;AAycb,oBAAgB;AACZA,mBAAa,EAAE;AADH,KAzcH;AA6cb,qBAAiB;AACbA,mBAAa,EAAE;AADF,KA7cJ;AAidb,mBAAe;AACXA,mBAAa,EAAE;AADJ,KAjdF;AAqdb,sBAAkB;AACdA,mBAAa,EAAE;AADD,KArdL;AAydb,kBAAc;AACVA,mBAAa,EAAE;AADL,KAzdD;AA6db,qBAAiB;AACbA,mBAAa,EAAE;AADF,KA7dJ;AAieb,eAAW;AACPA,mBAAa,EAAE;AADR,KAjeE;AAqeb,gBAAY;AACRA,mBAAa,EAAE;AADP,KAreC;AAyeb,mBAAe;AACXA,mBAAa,EAAE;AADJ;AAzeF,GArDC;AAmiBlBC,mBAAiB,EAAE,CAAE,mBAAF,EAAuB,qBAAvB,EAA8C,qBAA9C,EAAqE,WAArE,EAAkF,aAAlF,EAAiG,aAAjG,EAAgH,mBAAhH,EAAqI,iBAArI,EAAwJ,iBAAxJ,EAA2K,kBAA3K,EAA+L,sBAA/L,EAAuN,eAAvN,EAAwO,uBAAxO,EAAiQ,eAAjQ,EAAkR,iBAAlR,EAAqS,iBAArS,EAAwT,aAAxT,EAAuU,cAAvU,EAAuV,uBAAvV,EAAgX,gBAAhX,EAAkY,mBAAlY,EAAuZ,UAAvZ,EAAma,eAAna,EAAob,WAApb,EAAic,gBAAjc,EAAmd,SAAnd,EAA8d,UAA9d,EAA0e,cAA1e,EAA0f,kBAA1f,EAA8gB,uBAA9gB,EAAuiB,iBAAviB,EAA0jB,gBAA1jB,EAA4kB,iBAA5kB,EAA+lB,cAA/lB,EAA+mB,eAA/mB,EAAgoB,cAAhoB,EAAgpB,kBAAhpB,EAAoqB,YAApqB,EAAkrB,SAAlrB,EAA6rB,iBAA7rB,EAAgtB,eAAhtB,EAAiuB,kBAAjuB,EAAqvB,qBAArvB,EAA4wB,kBAA5wB,EAAgyB,oBAAhyB,EAAszB,mBAAtzB,EAA20B,2BAA30B,EAAw2B,eAAx2B,EAAy3B,gBAAz3B,EAA24B,gBAA34B,EAA65B,qBAA75B,EAAo7B,kBAAp7B,EAAw8B,oBAAx8B,EAA89B,kBAA99B,EAAk/B,iBAAl/B,EAAqgC,eAArgC,EAAshC,WAAthC,EAAmiC,gBAAniC,EAAqjC,mBAArjC,EAA0kC,uBAA1kC,EAAmmC,eAAnmC,EAAonC,iBAApnC,EAAuoC,eAAvoC,EAAwpC,cAAxpC,EAAwqC,mBAAxqC,EAA6rC,qBAA7rC,EAAotC,kBAAptC,EAAwuC,cAAxuC,EAAwvC,gBAAxvC,EAA0wC,wBAA1wC,EAAoyC,kBAApyC,EAAwzC,oBAAxzC,EAA80C,iBAA90C,EAAi2C,uBAAj2C,EAA03C,sBAA13C,EAAk5C,kBAAl5C,EAAs6C,oBAAt6C,EAA47C,eAA57C,EAA68C,oBAA78C,EAAm+C,qBAAn+C,EAA0/C,kBAA1/C,EAA8gD,sBAA9gD,EAAsiD,UAAtiD,EAAkjD,oBAAljD,EAAwkD,WAAxkD,EAAqlD,mBAArlD,EAA0mD,WAA1mD,EAAunD,8BAAvnD,EAAupD,6BAAvpD,EAAsrD,cAAtrD,EAAssD,yBAAtsD,EAAiuD,aAAjuD,EAAgvD,cAAhvD,EAAgwD,gBAAhwD,EAAkxD,gBAAlxD,EAAoyD,kBAApyD,EAAwzD,SAAxzD,EAAm0D,aAAn0D,EAAk1D,oBAAl1D,EAAw2D,eAAx2D,EAAy3D,2BAAz3D,EAAs5D,YAAt5D,EAAo6D,gBAAp6D,EAAs7D,gBAAt7D,EAAw8D,iBAAx8D,EAA29D,kBAA39D,EAA++D,kBAA/+D,EAAmgE,eAAngE,EAAohE,uBAAphE,EAA6iE,kBAA7iE,EAAikE,uBAAjkE,EAA0lE,UAA1lE,EAAsmE,kBAAtmE,EAA0nE,gBAA1nE,EAA4oE,oBAA5oE,EAAkqE,aAAlqE,EAAirE,6BAAjrE,EAAgtE,oBAAhtE,EAAsuE,mBAAtuE,EAA2vE,sBAA3vE,EAAmxE,kBAAnxE,EAAuyE,eAAvyE,EAAwzE,yBAAxzE,EAAm1E,mBAAn1E,EAAw2E,kBAAx2E,EAA43E,iBAA53E,EAA+4E,WAA/4E,EAA45E,eAA55E,EAA66E,iBAA76E,EAAg8E,gBAAh8E,EAAk9E,2BAAl9E,EAA++E,YAA/+E,EAA6/E,yBAA7/E,EAAwhF,mBAAxhF,EAA6iF,UAA7iF,EAAyjF,sBAAzjF,EAAilF,sBAAjlF,EAAymF,8BAAzmF,EAAyoF,cAAzoF,EAAypF,kBAAzpF,EAA6qF,aAA7qF,EAA4rF,wBAA5rF,EAAstF,WAAttF,EAAmuF,oBAAnuF,EAAyvF,sBAAzvF,EAAixF,aAAjxF,EAAgyF,qBAAhyF,EAAuzF,iBAAvzF,EAA00F,mBAA10F,EAA+1F,UAA/1F,EAA22F,aAA32F,EAA03F,mBAA13F,EAA+4F,kBAA/4F,EAAm6F,UAAn6F,EAA+6F,YAA/6F,EAA67F,oBAA77F,EAAm9F,UAAn9F,EAA+9F,gBAA/9F,EAAi/F,eAAj/F,EAAkgG,aAAlgG,EAAihG,sBAAjhG,EAAyiG,wBAAziG,EAAmkG,iBAAnkG,EAAslG,oBAAtlG,EAA4mG,wBAA5mG,EAAsoG,oBAAtoG,EAA4pG,qBAA5pG,EAAmrG,oBAAnrG,EAAysG,uBAAzsG,EAAkuG,oBAAluG,EAAwvG,2BAAxvG,EAAqxG,mBAArxG,EAA0yG,iBAA1yG,EAA6zG,aAA7zG,EAA40G,iBAA50G,EAA+1G,mBAA/1G,EAAo3G,mBAAp3G,EAAy4G,gBAAz4G,EAA25G,8BAA35G,EAA27G,gBAA37G,EAA68G,YAA78G,EAA29G,uBAA39G,EAAo/G,mBAAp/G,EAAygH,iBAAzgH,EAA4hH,oBAA5hH,EAAkjH,cAAljH,EAAkkH,eAAlkH,EAAmlH,qBAAnlH,EAA0mH,WAA1mH,EAAunH,iBAAvnH,EAA0oH,YAA1oH,EAAwpH,6BAAxpH,EAAurH,qBAAvrH,EAA8sH,qBAA9sH,EAAquH,sBAAruH,EAA6vH,iBAA7vH,EAAgxH,yBAAhxH,EAA2yH,YAA3yH,EAAyzH,qBAAzzH,EAAg1H,aAAh1H,EAA+1H,mBAA/1H,EAAo3H,sBAAp3H,EAA44H,wBAA54H,EAAs6H,sBAAt6H,EAA87H,qBAA97H,EAAq9H,yBAAr9H,EAAg/H,sBAAh/H,EAAwgI,kBAAxgI,EAA4hI,wBAA5hI,EAAsjI,qBAAtjI,EAA6kI,6BAA7kI,EAA4mI,gBAA5mI,EAA8nI,aAA9nI,EAA6oI,mBAA7oI,EAAkqI,iBAAlqI,EAAqrI,eAArrI,EAAssI,oBAAtsI,EAA4tI,cAA5tI,EAA4uI,qBAA5uI,EAAmwI,iBAAnwI,EAAsxI,cAAtxI,EAAsyI,mBAAtyI,EAA2zI,eAA3zI,EAA40I,cAA50I,EAA41I,aAA51I,EAA22I,sBAA32I,EAAm4I,eAAn4I,EAAo5I,kBAAp5I,EAAw6I,qBAAx6I,EAA+7I,yBAA/7I,EAA09I,wCAA19I,EAAogJ,kBAApgJ,EAAwhJ,iBAAxhJ,EAA2iJ,iBAA3iJ,EAA8jJ,sBAA9jJ,EAAslJ,oBAAtlJ,EAA4mJ,gBAA5mJ,EAA8nJ,6BAA9nJ,EAA6pJ,gBAA7pJ,EAA+qJ,oBAA/qJ,EAAqsJ,eAArsJ,EAAstJ,WAAttJ,EAAmuJ,4BAAnuJ,EAAiwJ,eAAjwJ,EAAkxJ,iBAAlxJ,EAAqyJ,mBAAryJ,EAA0zJ,iBAA1zJ,EAA60J,cAA70J,EAA61J,iBAA71J,EAAg3J,mBAAh3J,EAAq4J,qBAAr4J,EAA45J,uBAA55J,EAAq7J,qBAAr7J,EAA48J,oBAA58J,EAAk+J,eAAl+J,EAAm/J,gBAAn/J,EAAqgK,YAArgK,EAAmhK,qBAAnhK,EAA0iK,iBAA1iK,EAA6jK,cAA7jK,EAA6kK,yBAA7kK,EAAwmK,kBAAxmK,EAA4nK,4BAA5nK,EAA0pK,OAA1pK,EAAmqK,YAAnqK,EAAirK,uBAAjrK,EAA0sK,iBAA1sK,EAA6tK,gBAA7tK,EAA+uK,kBAA/uK,EAAmwK,kBAAnwK,EAAuxK,sBAAvxK,EAA+yK,2BAA/yK,EAA40K,qBAA50K,EAAm2K,YAAn2K,EAAi3K,mBAAj3K,EAAs4K,aAAt4K,EAAq5K,YAAr5K,EAAm6K,wBAAn6K,EAA67K,oBAA77K,EAAm9K,UAAn9K,EAA+9K,eAA/9K,EAAg/K,oBAAh/K,EAAsgL,mBAAtgL,EAA2hL,oBAA3hL,EAAijL,WAAjjL,EAA8jL,uBAA9jL,EAAulL,qBAAvlL,EAA8mL,mBAA9mL,EAAmoL,qBAAnoL,EAA0pL,WAA1pL,EAAuqL,eAAvqL,EAAwrL,WAAxrL,EAAqsL,oBAArsL,EAA2tL,iBAA3tL,EAA8uL,uBAA9uL,EAAuwL,SAAvwL,EAAkxL,2BAAlxL,EAA+yL,cAA/yL,EAA+zL,kBAA/zL,EAAm1L,eAAn1L,EAAo2L,kBAAp2L,EAAw3L,sBAAx3L,EAAg5L,eAAh5L,EAAi6L,cAAj6L,EAAi7L,kBAAj7L,CAniBD;AAqiBlBC,eAAa,EAAE,KAriBG;AAuiBlB/L,oBAAkB,EAAE;AAChBgM,QAAI,EAAY,IADA;AAEhBC,WAAO,EAAS,IAFA;AAGhBC,UAAM,EAAU,IAHA;AAIhBC,UAAM,EAAU,GAJA;AAKhBC,SAAK,EAAW,IALA;AAMhBC,UAAM,EAAU,IANA;AAOhBC,kBAAc,EAAE,KAPA;AAQhBC,QAAI,EAAY,MARA;AAShBC,aAAS,EAAO,YATA;AAUhBC,WAAO,EAAS;AAVA,GAviBF;AAojBlBC,sBAAoB,EAAE,IAAI,EAAJ,GAAS,IApjBb;AAsjBlBC,WAAS,EAAE,EAtjBO;;AAwjBlB,MAAI3B,QAAJ,GAAwB;AACpB,WAAO/P,MAAM,CAAC0R,SAAP,IAAoB1R,MAAM,CAAC2P,KAAlC;AACH,GA1jBiB;;AA4jBlB,MAAII,QAAJ,CAAalV,KAAb,EAAoB;AAChBmF,UAAM,CAAC0R,SAAP,GAAmB7W,KAAnB;AACH,GA9jBiB;;AAgkBlBoV,OAAK,EAAE;AACHC,WAAO,EAAG,IADP;AAEHyB,UAAM,EAAI,IAFP;AAGHC,YAAQ,EAAE,IAHP;AAIHC,SAAK,EAAK,IAJP;AAKHC,UAAM,EAAI;AALP,GAhkBW;;AAwkBlB,MAAIC,UAAJ,GAA0B;AAAA;;AACtB,2BACMhsB,wBAAG,CAACC,KADV,IACwBga,MAAM,CAACgQ,YAD/B,OAEMjqB,wBAAG,CAACE,KAFV,qBAEwC+Z,MAAM,CAAC6P,QAF/C,OAGM9pB,wBAAG,CAACG,OAHV,2CAIMH,wBAAG,CAACI,UAJV,mCAKMJ,wBAAG,CAACK,IALV,IAK4BkV,MAAM,CAAC2F,QAAP,CAAgByC,QAL5C,UAK2DpI,MAAM,CAAC2F,QAAP,CAAgBC,IAL3E,OAMMnb,wBAAG,CAACM,IANV,IAM4BiV,MAAM,CAAC2F,QAAP,CAAgByC,QAN5C,+BAMgFpI,MAAM,CAAC2F,QAAP,CAAgB+Q,IANhG;AAQH,GAjlBiB;;AAmlBlB,MAAIlE,aAAJ,GAA6B;AAAA;;AACzB,6BACM/nB,wBAAG,CAACC,KADV,IACwB,kCADxB,QAEMD,wBAAG,CAACE,KAFV,qBAEwC+Z,MAAM,CAAC6P,QAF/C,QAGM9pB,wBAAG,CAACG,OAHV,4CAIMH,wBAAG,CAACI,UAJV,oCAKMJ,wBAAG,CAACK,IALV,mCAMML,wBAAG,CAACM,IANV,IAM4BiV,MAAM,CAAC2F,QAAP,CAAgByC,QAN5C,+BAMgFpI,MAAM,CAAC2F,QAAP,CAAgB+Q,IANhG;AAQH,GA5lBiB;;AA8lBlB,MAAIC,UAAJ,GAA0B;AAAA;;AACtB,6BACMlsB,wBAAG,CAACC,KADV,qBACwCga,MAAM,CAAC6P,QAD/C,QAEM9pB,wBAAG,CAACE,KAFV,qBAEwC+Z,MAAM,CAAC6P,QAF/C,QAGM9pB,wBAAG,CAACG,OAHV,4CAIMH,wBAAG,CAACI,UAJV,oCAKMJ,wBAAG,CAACK,IALV,IAK4BkV,MAAM,CAAC2F,QAAP,CAAgByC,QAL5C,UAK2DpI,MAAM,CAAC2F,QAAP,CAAgBC,IAL3E;AAOH,GAtmBiB;;AAwmBlB,MAAIgR,WAAJ,GAA2B;AAAA;;AACvB,6BACMnsB,wBAAG,CAACC,KADV,iBACoCga,MAAM,CAAC8P,WAD3C,mBAEM/pB,wBAAG,CAACE,KAFV,iBAEoC+Z,MAAM,CAAC8P,WAF3C,mBAGM/pB,wBAAG,CAACG,OAHV,iDAIMH,wBAAG,CAACI,UAJV,yCAKMJ,wBAAG,CAACK,IALV,IAK4BkV,MAAM,CAAC2F,QAAP,CAAgByC,QAL5C,UAK2DpI,MAAM,CAAC2F,QAAP,CAAgBC,IAL3E;AAOH,GAhnBiB;;AAknBlB,MAAIiR,OAAJ,GAAuB;AAAA;;AAEnB,QAAM5R,MAAM,GAAYjF,MAAM,CAAC2F,QAAP,CAAgByC,QAA5B,UAA2CpI,MAAM,CAAC2F,QAAP,CAAgBC,IAAvE;AACA,QAAMgR,WAAW,GAAGlS,MAAM,CAACkS,WAA3B;AACA,QAAMD,UAAU,GAAIjS,MAAM,CAACiS,UAA3B;AAEA,6BACMlsB,wBAAG,CAACC,KADV,IACwBua,MAAM,KAAK0R,UAAU,CAACG,KAAtB,GAAmCH,UAAU,CAACG,KAA9C,GAA2DF,WAAW,CAACE,KAD/F,QAEMrsB,wBAAG,CAACE,KAFV,IAEwBsa,MAAM,KAAK0R,UAAU,CAACtC,KAAtB,GAAmCsC,UAAU,CAACtC,KAA9C,GAA2DuC,WAAW,CAACvC,KAF/F,QAGM5pB,wBAAG,CAACG,OAHV,IAGwBqa,MAAM,KAAK0R,UAAU,CAACI,OAAtB,GAAmCJ,UAAU,CAACI,OAA9C,GAA2DH,WAAW,CAACG,OAH/F,QAIMtsB,wBAAG,CAACI,UAJV,IAIwBoa,MAAM,KAAK0R,UAAU,CAACK,UAAtB,GAAmCL,UAAU,CAACK,UAA9C,GAA2DJ,WAAW,CAACI,UAJ/F,QAKMvsB,wBAAG,CAACK,IALV,IAKwBma,MAAM,KAAK0R,UAAU,CAAChX,IAAtB,GAAmCgX,UAAU,CAAChX,IAA9C,GAA2DiX,WAAW,CAACjX,IAL/F;AAOH,GA/nBiB;;AAioBlB,MAAIsX,WAAJ,GAA4B;AACxB,WAAO,IAAP;AACH,GAnoBiB;;AAqoBlB,MAAIA,WAAJ,CAAgBpC,GAAhB,EAAqB;AACjB,WAAO,KAAKoC,WAAZ;AACA,SAAKA,WAAL,GAAmBpC,GAAnB;AACH,GAxoBiB;;AA0oBlB,MAAIqC,YAAJ,GAA4B;AAAA;;AACxB,QAAIxS,MAAM,CAACuS,WAAX,EAAwB;AAAA;;AACpB,+BACMxsB,wBAAG,CAACC,KADV,IACwBga,MAAM,CAACuS,WAD/B,QAEMxsB,wBAAG,CAACE,KAFV,IAEwB+Z,MAAM,CAACuS,WAF/B,QAGMxsB,wBAAG,CAACG,OAHV,IAGwB8Z,MAAM,CAACuS,WAH/B,QAIMxsB,wBAAG,CAACI,UAJV,IAIwB6Z,MAAM,CAACuS,WAJ/B,QAKMxsB,wBAAG,CAACK,IALV,IAKwB4Z,MAAM,CAACuS,WAL/B,QAMMxsB,wBAAG,CAACM,IANV,IAMwB2Z,MAAM,CAACuS,WAN/B;AAQH;;AAED,6BACMxsB,wBAAG,CAACC,KADV,6BAEMD,wBAAG,CAACE,KAFV,6BAGMF,wBAAG,CAACG,OAHV,0BAIMH,wBAAG,CAACI,UAJV,0BAKMJ,wBAAG,CAACK,IALV,oEAMML,wBAAG,CAACM,IANV;AAQH,GA9pBiB;;AAgqBlBosB,YAAU,iCACJ1sB,wBAAG,CAACC,KADA,oCAEJD,wBAAG,CAACE,KAFA,oCAGJF,wBAAG,CAACG,OAHA,oCAIJH,wBAAG,CAACI,UAJA,oCAKJJ,wBAAG,CAACK,IALA,0EAMJL,wBAAG,CAACM,IANA,0CAhqBQ;AAyqBlBqsB,WAAS,+BACH3sB,wBAAG,CAACC,KADD,wCAEHD,wBAAG,CAACE,KAFD,wCAGHF,wBAAG,CAACG,OAHD,wCAIHH,wBAAG,CAACI,UAJD,wCAKHJ,wBAAG,CAACK,IALD,sEAMHL,wBAAG,CAACM,IAND,sCAzqBS;AAkrBlBssB,aAAW,mCACL5sB,wBAAG,CAACC,KADC,+CAELD,wBAAG,CAACE,KAFC,+CAGLF,wBAAG,CAACG,OAHC,wCAILH,wBAAG,CAACI,UAJC,wCAKLJ,wBAAG,CAACK,IALC,0EAMLL,wBAAG,CAACM,IANC,2CAlrBO;AA2rBlBusB,YAAU,iCACJ7sB,wBAAG,CAACC,KADA,iCAEJD,wBAAG,CAACE,KAFA,iCAGJF,wBAAG,CAACG,OAHA,iCAIJH,wBAAG,CAACI,UAJA,iCAKJJ,wBAAG,CAACK,IALA,uDAMJL,wBAAG,CAACM,IANA,wCA3rBQ;AAosBlBwsB,sBAAoB,qDACd9sB,wBAAG,CAACC,KADU,gDAEdD,wBAAG,CAACE,KAFU,gDAGdF,wBAAG,CAACG,OAHU,gDAIdH,wBAAG,CAACI,UAJU,gDAKdJ,wBAAG,CAACK,IALU,sEAMdL,wBAAG,CAACM,IANU,gDApsBF;AA6sBlBysB,gBAAc,yCACR/sB,wBAAG,CAACC,KADI,sDAERD,wBAAG,CAACE,KAFI,sDAGRF,wBAAG,CAACG,OAHI,sDAIRH,wBAAG,CAACI,UAJI,sDAKRJ,wBAAG,CAACK,IALI,mEAMRL,wBAAG,CAACM,IANI,4CA7sBI;AAstBlB0sB,oBAAkB,iDACZhtB,wBAAG,CAACC,KADQ,uFAEZD,wBAAG,CAACE,KAFQ,uFAGZF,wBAAG,CAACG,OAHQ,uFAIZH,wBAAG,CAACI,UAJQ,uFAKZJ,wBAAG,CAACK,IALQ,qCAttBA;AA8tBlB4sB,cAAY,qCACNjtB,wBAAG,CAACC,KADE,iEAEND,wBAAG,CAACE,KAFE,iEAGNF,wBAAG,CAACG,OAHE,iEAINH,wBAAG,CAACI,UAJE,iEAKNJ,wBAAG,CAACK,IALE,8CAMNL,wBAAG,CAACM,IANE,iEA9tBM;;AAuuBlB,MAAI4sB,WAAJ,GAA2B;AACvB,WAAOjT,MAAM,CAACgT,YAAP,CAAoBhT,MAAM,CAACmC,GAA3B,CAAP;AACH,GAzuBiB;;AA2uBlB+Q,UAAQ,YA3uBU;AA6uBlBC,iBAAe,8BA7uBG;AA+uBlBC,WAAS,iCA/uBS;AAivBlBC,0BAAwB,EAAE,GAjvBR;AAivBa;AAE/BC,SAAO,uBAnvBW;;AAqvBlB,MAAIC,aAAJ,GAA6B;AACzB,WAAWvT,MAAM,CAAC8S,cAAP,CAAsB9S,MAAM,CAACmC,GAA7B,CAAX;AACH,GAvvBiB;;AAyvBlBqR,oBAAkB,mCAzvBA;AA2vBlBC,YAAU,oBA3vBQ;AA4vBlBC,eAAa,wBA5vBK;AA6vBlBC,aAAW,uBA7vBO;AA8vBlBC,eAAa,2CA9vBK;AA+vBlBC,kBAAgB,uCA/vBE;AAgwBlBC,gBAAc,iCAhwBI;;AAkwBlB,MAAIC,YAAJ,GAA4B;AAAA;;AAExB,QAAMhC,UAAU,GAAG/R,MAAM,CAAC+R,UAA1B;AAEA,6BACMhsB,wBAAG,CAACC,KADV,SAC4B+rB,UAAU,CAACK,KADvC,GACiDpS,MAAM,CAACwS,YAAP,CAAoBJ,KAApB,CAA0BpZ,OAA1B,OAAuCgH,MAAM,CAACiQ,KAAP,CAAaC,OAApD,QAAqElQ,MAAM,CAACiQ,KAAP,CAAa2B,QAAlF,CADjD,QAEM7rB,wBAAG,CAACE,KAFV,SAE4B8rB,UAAU,CAACpC,KAFvC,GAEiD3P,MAAM,CAACwS,YAAP,CAAoB7C,KAFrE,QAGM5pB,wBAAG,CAACG,OAHV,SAG4B6rB,UAAU,CAACM,OAHvC,GAGmDrS,MAAM,CAACwS,YAAP,CAAoBH,OAHvE,QAIMtsB,wBAAG,CAACI,UAJV,SAI4B4rB,UAAU,CAACO,UAJvC,GAIsDtS,MAAM,CAACwS,YAAP,CAAoBF,UAJ1E,QAKMvsB,wBAAG,CAACK,IALV,SAK4B2rB,UAAU,CAAC9W,IALvC,GAKgD+E,MAAM,CAACwS,YAAP,CAAoBvX,IALpE,QAMMlV,wBAAG,CAACM,IANV,SAM4B0rB,UAAU,CAAC9W,IANvC,GAMgD+E,MAAM,CAACwS,YAAP,CAAoBwB,IANpE;AAQH,GA9wBiB;;AAgxBlB,MAAIC,SAAJ,GAAyB;AAAA;;AAErB,QAAMlC,UAAU,GAAG/R,MAAM,CAAC+R,UAA1B;AAEA,6BACMhsB,wBAAG,CAACC,KADV,SAC4B+rB,UAAU,CAACK,KAAX,CAAiBpZ,OAAjB,OAA8BgH,MAAM,CAACiQ,KAAP,CAAaC,OAA3C,QAA4DlQ,MAAM,CAACiQ,KAAP,CAAa4B,KAAzE,CAD5B,GACmH7R,MAAM,CAAC0S,SAAP,CAAiBN,KADpI,QAEMrsB,wBAAG,CAACE,KAFV,SAE4B8rB,UAAU,CAACpC,KAFvC,GAEiD3P,MAAM,CAAC0S,SAAP,CAAiB/C,KAFlE,QAGM5pB,wBAAG,CAACG,OAHV,SAG4B6rB,UAAU,CAACM,OAHvC,GAGmDrS,MAAM,CAAC0S,SAAP,CAAiBL,OAHpE,QAIMtsB,wBAAG,CAACI,UAJV,SAI4B4rB,UAAU,CAACO,UAJvC,GAIsDtS,MAAM,CAAC0S,SAAP,CAAiBJ,UAJvE,QAKMvsB,wBAAG,CAACK,IALV,SAK4B2rB,UAAU,CAAC9W,IALvC,GAKgD+E,MAAM,CAAC0S,SAAP,CAAiBzX,IALjE,QAMMlV,wBAAG,CAACM,IANV,SAM4B0rB,UAAU,CAAC9W,IANvC,GAMgD+E,MAAM,CAAC0S,SAAP,CAAiBsB,IANjE;AAQH,GA5xBiB;;AA8xBlB,MAAIE,UAAJ,GAA0B;AAAA;;AAEtB,QAAMnC,UAAU,GAAG/R,MAAM,CAAC+R,UAA1B;AAEA,+BACMhsB,wBAAG,CAACC,KADV,SAC4B+rB,UAAU,CAACK,KAAX,CAAiBpZ,OAAjB,OAA8BgH,MAAM,CAACiQ,KAAP,CAAaC,OAA3C,QAA4DlQ,MAAM,CAACiQ,KAAP,CAAa6B,MAAzE,CAD5B,GACoH9R,MAAM,CAACyS,UAAP,CAAkBL,KADtI,SAEMrsB,wBAAG,CAACE,KAFV,SAE4B8rB,UAAU,CAACpC,KAFvC,GAEiD3P,MAAM,CAACyS,UAAP,CAAkB9C,KAFnE,SAGM5pB,wBAAG,CAACG,OAHV,SAG4B6rB,UAAU,CAACM,OAHvC,GAGmDrS,MAAM,CAACyS,UAAP,CAAkBJ,OAHrE,SAIMtsB,wBAAG,CAACI,UAJV,SAI4B4rB,UAAU,CAACO,UAJvC,GAIsDtS,MAAM,CAACyS,UAAP,CAAkBH,UAJxE,SAKMvsB,wBAAG,CAACK,IALV,SAK4B2rB,UAAU,CAAC9W,IALvC,GAKgD+E,MAAM,CAACyS,UAAP,CAAkBxX,IALlE,SAMMlV,wBAAG,CAACM,IANV,SAM4B0rB,UAAU,CAAC9W,IANvC,GAMgD+E,MAAM,CAACyS,UAAP,CAAkBuB,IANlE;AAQH,GA1yBiB;;AA4yBlB,MAAIG,WAAJ,GAA2B;AAAA;;AAEvB,QAAMpC,UAAU,GAAG/R,MAAM,CAAC+R,UAA1B;AAEA,+BACMhsB,wBAAG,CAACC,KADV,SAC4B+rB,UAAU,CAACK,KAAX,CAAiBpZ,OAAjB,OAA8BgH,MAAM,CAACiQ,KAAP,CAAaC,OAA3C,QAA4DlQ,MAAM,CAACiQ,KAAP,CAAa2B,QAAzE,CAD5B,GACsH5R,MAAM,CAAC2S,WAAP,CAAmBP,KADzI,SAEMrsB,wBAAG,CAACE,KAFV,SAE4B8rB,UAAU,CAACpC,KAFvC,GAEiD3P,MAAM,CAAC2S,WAAP,CAAmBhD,KAFpE,SAGM5pB,wBAAG,CAACG,OAHV,SAG4B6rB,UAAU,CAACM,OAHvC,GAGmDrS,MAAM,CAAC2S,WAAP,CAAmBN,OAHtE,SAIMtsB,wBAAG,CAACI,UAJV,SAI4B4rB,UAAU,CAACO,UAJvC,GAIsDtS,MAAM,CAAC2S,WAAP,CAAmBL,UAJzE,SAKMvsB,wBAAG,CAACK,IALV,SAK4B2rB,UAAU,CAAC9W,IALvC,GAKgD+E,MAAM,CAAC2S,WAAP,CAAmB1X,IALnE,SAMMlV,wBAAG,CAACM,IANV,SAM4B0rB,UAAU,CAAC9W,IANvC,GAMgD+E,MAAM,CAAC2S,WAAP,CAAmBqB,IANnE;AAQH,GAxzBiB;;AA0zBlB,MAAII,UAAJ,GAA0B;AAAA;;AAEtB,QAAMrC,UAAU,GAAG/R,MAAM,CAAC+R,UAA1B;AAEA,+BACMhsB,wBAAG,CAACC,KADV,SAC4B+rB,UAAU,CAACK,KAAX,CAAiBpZ,OAAjB,OAA8BgH,MAAM,CAACiQ,KAAP,CAAaC,OAA3C,QAA4DlQ,MAAM,CAACiQ,KAAP,CAAa0B,MAAzE,CAD5B,GACoH3R,MAAM,CAAC4S,UAAP,CAAkBR,KADtI,SAEMrsB,wBAAG,CAACE,KAFV,SAE4B8rB,UAAU,CAACpC,KAFvC,GAEiD3P,MAAM,CAAC4S,UAAP,CAAkBjD,KAFnE,SAGM5pB,wBAAG,CAACG,OAHV,SAG4B6rB,UAAU,CAACM,OAHvC,GAGmDrS,MAAM,CAAC4S,UAAP,CAAkBP,OAHrE,SAIMtsB,wBAAG,CAACI,UAJV,SAI4B4rB,UAAU,CAACO,UAJvC,GAIsDtS,MAAM,CAAC4S,UAAP,CAAkBN,UAJxE,SAKMvsB,wBAAG,CAACK,IALV,SAK4B2rB,UAAU,CAAC9W,IALvC,GAKgD+E,MAAM,CAAC4S,UAAP,CAAkB3X,IALlE,SAMMlV,wBAAG,CAACM,IANV,SAM4B0rB,UAAU,CAACiC,IANvC,GAMgDhU,MAAM,CAAC4S,UAAP,CAAkBoB,IANlE;AAQH,GAt0BiB;;AAw0BlB,MAAIK,oBAAJ,GAAoC;AAAA;;AAEhC,QAAMtC,UAAU,GAAG/R,MAAM,CAAC+R,UAA1B;AAEA,+BACMhsB,wBAAG,CAACC,KADV,SAC4B+rB,UAAU,CAACK,KAAX,CAAiBpZ,OAAjB,OAA8BgH,MAAM,CAACiQ,KAAP,CAAaC,OAA3C,QAA4DlQ,MAAM,CAACiQ,KAAP,CAAa0B,MAAzE,CAD5B,GACoH3R,MAAM,CAAC6S,oBAAP,CAA4BT,KADhJ,SAEMrsB,wBAAG,CAACE,KAFV,SAE4B8rB,UAAU,CAACpC,KAFvC,GAEiD3P,MAAM,CAAC6S,oBAAP,CAA4BlD,KAF7E,SAGM5pB,wBAAG,CAACG,OAHV,SAG4B6rB,UAAU,CAACM,OAHvC,GAGmDrS,MAAM,CAAC6S,oBAAP,CAA4BR,OAH/E,SAIMtsB,wBAAG,CAACI,UAJV,SAI4B4rB,UAAU,CAACO,UAJvC,GAIsDtS,MAAM,CAAC6S,oBAAP,CAA4BP,UAJlF,SAKMvsB,wBAAG,CAACK,IALV,SAK4B2rB,UAAU,CAAC9W,IALvC,GAKgD+E,MAAM,CAAC6S,oBAAP,CAA4B5X,IAL5E,SAMMlV,wBAAG,CAACM,IANV,SAM4B0rB,UAAU,CAACiC,IANvC,GAMgDhU,MAAM,CAAC6S,oBAAP,CAA4BmB,IAN5E;AAQH,GAp1BiB;;AAs1BlB,MAAIM,SAAJ,GAAyB;AAAA;;AAErB,QAAMvC,UAAU,GAAG/R,MAAM,CAAC+R,UAA1B;AAEA,+BACMhsB,wBAAG,CAACC,KADV,SAC4B+rB,UAAU,CAACpC,KADvC,GACiD3P,MAAM,CAACkT,QADxD,SAEMntB,wBAAG,CAACE,KAFV,SAE4B8rB,UAAU,CAACpC,KAFvC,GAEiD3P,MAAM,CAACkT,QAFxD,SAGMntB,wBAAG,CAACG,OAHV,SAG4B6rB,UAAU,CAACM,OAHvC,GAGmDrS,MAAM,CAACkT,QAH1D,SAIMntB,wBAAG,CAACI,UAJV,SAI4B4rB,UAAU,CAACO,UAJvC,GAIsDtS,MAAM,CAACkT,QAJ7D,SAKMntB,wBAAG,CAACK,IALV,SAK4B2rB,UAAU,CAAC9W,IALvC,GAKgD+E,MAAM,CAACkT,QALvD;AAOH,GAj2BiB;;AAm2BlB,MAAIqB,oBAAJ,GAAoC;AAAA;;AAEhC,QAAMxC,UAAU,GAAG/R,MAAM,CAAC+R,UAA1B;AAEA,+BACMhsB,wBAAG,CAACC,KADV,SAC4B+rB,UAAU,CAACK,KADvC,GACiDpS,MAAM,CAACwT,kBADxD,SAEMztB,wBAAG,CAACE,KAFV,SAE4B8rB,UAAU,CAACpC,KAFvC,GAEiD3P,MAAM,CAACwT,kBAFxD,SAGMztB,wBAAG,CAACG,OAHV,SAG4B6rB,UAAU,CAACM,OAHvC,GAGmDrS,MAAM,CAACwT,kBAH1D,SAIMztB,wBAAG,CAACI,UAJV,SAI4B4rB,UAAU,CAACO,UAJvC,GAIsDtS,MAAM,CAACwT,kBAJ7D,SAKMztB,wBAAG,CAACK,IALV,SAK4B2rB,UAAU,CAAC9W,IALvC,GAKgD+E,MAAM,CAACwT,kBALvD;AAOH,GA92BiB;;AAg3BlB,MAAI5F,aAAJ,GAA6B;AAAA;;AAEzB,QAAMmE,UAAU,GAAG/R,MAAM,CAAC+R,UAA1B;AAEA,+BACMhsB,wBAAG,CAACC,KADV,SAC4B+rB,UAAU,CAACK,KADvC,GACiDpS,MAAM,CAACuT,aADxD,wBAEMxtB,wBAAG,CAACE,KAFV,SAE4B8rB,UAAU,CAACpC,KAFvC,GAEiD3P,MAAM,CAACuT,aAFxD,yBAE2FvT,MAAM,CAAC2P,KAFlG,SAGM5pB,wBAAG,CAACG,OAHV,SAG4B6rB,UAAU,CAACM,OAHvC,GAGmDrS,MAAM,CAACuT,aAH1D,0BAIMxtB,wBAAG,CAACI,UAJV,SAI4B4rB,UAAU,CAACO,UAJvC,GAIsDtS,MAAM,CAACuT,aAJ7D,6BAKMxtB,wBAAG,CAACK,IALV,SAK4B2rB,UAAU,CAAC9W,IALvC,GAKgD+E,MAAM,CAACuT,aALvD,uBAMMxtB,wBAAG,CAACM,IANV,SAM4B0rB,UAAU,CAACiC,IANvC,GAMgDhU,MAAM,CAACuT,aANvD;AAQH,GA53BiB;;AA83BlB,MAAIiB,kBAAJ,GAAkC;AAAA;;AAE9B,QAAMzC,UAAU,GAAG/R,MAAM,CAAC+R,UAA1B;AAEA,+BACMhsB,wBAAG,CAACC,KADV,SAC4B+rB,UAAU,CAACpC,KADvC,GACiD3P,MAAM,CAAC+S,kBAAP,CAA0BX,KAD3E,SAEMrsB,wBAAG,CAACE,KAFV,SAE4B8rB,UAAU,CAACpC,KAFvC,GAEiD3P,MAAM,CAAC+S,kBAAP,CAA0BpD,KAF3E,SAGM5pB,wBAAG,CAACG,OAHV,SAG4B6rB,UAAU,CAACM,OAHvC,GAGmDrS,MAAM,CAAC+S,kBAAP,CAA0BV,OAH7E,SAIMtsB,wBAAG,CAACI,UAJV,SAI4B4rB,UAAU,CAACO,UAJvC,GAIsDtS,MAAM,CAAC+S,kBAAP,CAA0BT,UAJhF,SAKMvsB,wBAAG,CAACK,IALV,SAK4B2rB,UAAU,CAAC9W,IALvC,GAKgD+E,MAAM,CAAC+S,kBAAP,CAA0B9X,IAL1E;AAOH,GAz4BiB;;AA24BlB,MAAIwZ,WAAJ,GAA2B;AAAA;;AAEvB,QAAMtC,OAAO,GAAMnS,MAAM,CAACmS,OAA1B;AACA,QAAMsB,UAAU,GAAGzT,MAAM,CAACyT,UAA1B;AAEA,+BACM1tB,wBAAG,CAACC,KADV,SAC4BmsB,OAAO,CAACC,KADpC,GAC8CqB,UAD9C,SAEM1tB,wBAAG,CAACE,KAFV,SAE4BksB,OAAO,CAACxC,KAFpC,GAE8C8D,UAF9C,SAGM1tB,wBAAG,CAACG,OAHV,SAG4BisB,OAAO,CAACE,OAHpC,GAGgDoB,UAHhD,SAIM1tB,wBAAG,CAACI,UAJV,SAI4BgsB,OAAO,CAACG,UAJpC,GAImDmB,UAJnD,SAKM1tB,wBAAG,CAACK,IALV,SAK4B+rB,OAAO,CAAClX,IALpC,GAK6CwY,UAL7C;AAOH,GAv5BiB;;AAy5BlB,MAAIiB,cAAJ,GAA8B;AAAA;;AAE1B,QAAMvC,OAAO,GAASnS,MAAM,CAACmS,OAA7B;AACA,QAAMuB,aAAa,GAAG1T,MAAM,CAAC0T,aAA7B;AAEA,+BACM3tB,wBAAG,CAACC,KADV,SAC4BmsB,OAAO,CAACC,KADpC,GAC8CsB,aAD9C,SAEM3tB,wBAAG,CAACE,KAFV,SAE4BksB,OAAO,CAACxC,KAFpC,GAE8C+D,aAF9C,SAGM3tB,wBAAG,CAACG,OAHV,SAG4BisB,OAAO,CAACE,OAHpC,GAGgDqB,aAHhD,SAIM3tB,wBAAG,CAACI,UAJV,SAI4BgsB,OAAO,CAACG,UAJpC,GAImDoB,aAJnD,SAKM3tB,wBAAG,CAACK,IALV,SAK4B+rB,OAAO,CAAClX,IALpC,GAK6CyY,aAL7C;AAOH,GAr6BiB;;AAu6BlB,MAAIiB,YAAJ,GAA4B;AAAA;;AAExB,QAAMxC,OAAO,GAAGnS,MAAM,CAACmS,OAAvB;AACA,QAAMwB,WAAW,GAAG3T,MAAM,CAAC2T,WAA3B;AAEA,+BACK5tB,wBAAG,CAACC,KADT,SAC0BmsB,OAAO,CAACC,KADlC,GAC4CuB,WAD5C,SAEK5tB,wBAAG,CAACE,KAFT,SAE0BksB,OAAO,CAACxC,KAFlC,GAE4CgE,WAF5C,SAGK5tB,wBAAG,CAACG,OAHT,SAG0BisB,OAAO,CAACE,OAHlC,GAG8CsB,WAH9C,SAIK5tB,wBAAG,CAACI,UAJT,SAI0BgsB,OAAO,CAACG,UAJlC,GAIiDqB,WAJjD,SAKK5tB,wBAAG,CAACK,IALT,SAK0B+rB,OAAO,CAAClX,IALlC,GAK2C0Y,WAL3C;AAOH,GAn7BiB;;AAq7BlB,MAAIiB,cAAJ,GAA8B;AAAA;;AAE1B,QAAMzC,OAAO,GAASnS,MAAM,CAACmS,OAA7B;AACA,QAAMyB,aAAa,GAAG5T,MAAM,CAAC4T,aAA7B;AAEA,+BACM7tB,wBAAG,CAACC,KADV,SAC4BmsB,OAAO,CAACC,KADpC,GAC8CwB,aAD9C,SAEM7tB,wBAAG,CAACE,KAFV,SAE4BksB,OAAO,CAACxC,KAFpC,GAE8CiE,aAF9C,SAGM7tB,wBAAG,CAACG,OAHV,SAG4BisB,OAAO,CAACE,OAHpC,GAGgDuB,aAHhD,SAIM7tB,wBAAG,CAACI,UAJV,SAI4BgsB,OAAO,CAACG,UAJpC,GAImDsB,aAJnD,SAKM7tB,wBAAG,CAACK,IALV,SAK4B+rB,OAAO,CAAClX,IALpC,GAK6C2Y,aAL7C;AAOH,GAj8BiB;;AAm8BlB,MAAIiB,iBAAJ,GAAiC;AAAA;;AAE7B,QAAM1C,OAAO,GAAYnS,MAAM,CAACmS,OAAhC;AACA,QAAM0B,gBAAgB,GAAG7T,MAAM,CAAC6T,gBAAhC;AAEA,+BACM9tB,wBAAG,CAACC,KADV,SAC4BmsB,OAAO,CAACC,KADpC,GAC8CyB,gBAD9C,SAEM9tB,wBAAG,CAACE,KAFV,SAE4BksB,OAAO,CAACxC,KAFpC,GAE8CkE,gBAF9C,SAGM9tB,wBAAG,CAACG,OAHV,SAG4BisB,OAAO,CAACE,OAHpC,GAGgDwB,gBAHhD,SAIM9tB,wBAAG,CAACI,UAJV,SAI4BgsB,OAAO,CAACG,UAJpC,GAImDuB,gBAJnD,SAKM9tB,wBAAG,CAACK,IALV,SAK4B+rB,OAAO,CAAClX,IALpC,GAK6C4Y,gBAL7C;AAOH,GA/8BiB;;AAi9BlB,MAAIiB,eAAJ,GAA+B;AAAA;;AAE3B,QAAM3C,OAAO,GAASnS,MAAM,CAACmS,OAA7B;AACA,QAAM2B,cAAc,GAAG9T,MAAM,CAAC8T,cAA9B;AAEA,+BACM/tB,wBAAG,CAACC,KADV,SAC4BmsB,OAAO,CAACC,KADpC,GAC8C0B,cAD9C,SAEM/tB,wBAAG,CAACE,KAFV,SAE4BksB,OAAO,CAACxC,KAFpC,GAE8CmE,cAF9C,SAGM/tB,wBAAG,CAACG,OAHV,SAG4BisB,OAAO,CAACE,OAHpC,GAGgDyB,cAHhD,SAIM/tB,wBAAG,CAACI,UAJV,SAI4BgsB,OAAO,CAACG,UAJpC,GAImDwB,cAJnD,SAKM/tB,wBAAG,CAACK,IALV,SAK4B+rB,OAAO,CAAClX,IALpC,GAK6C6Y,cAL7C;AAOH,GA79BiB;;AA+9BlBiB,YAAU,EAAE,EA/9BM;;AAi+BlB,MAAIC,SAAJ,GAAyB;AACrB,WAAO,KAAKD,UAAL,IAAmB/U,MAAM,CAAC+R,UAAP,CAAkB/R,MAAM,CAACmC,GAAzB,CAA1B;AACH,GAn+BiB;;AAq+BlB,MAAI6S,SAAJ,CAAcna,KAAd,EAAqB;AACjB,SAAKka,UAAL,GAAkBla,KAAlB;AACH,GAv+BiB;;AAy+BlB,MAAIoF,YAAJ,GAA4B;AACxB,WAAOD,MAAM,CAAC8N,aAAP,CAAqB9N,MAAM,CAACmC,GAA5B,CAAP;AACH,GA3+BiB;;AA6+BlB,MAAI8S,UAAJ,GAA0B;AACtB,WAAOjV,MAAM,CAACkS,WAAP,CAAmBlS,MAAM,CAACmC,GAA1B,CAAP;AACH,GA/+BiB;;AAi/BlB,MAAI+S,SAAJ,GAAyB;AACrB,WAAOlV,MAAM,CAACiS,UAAP,CAAkBjS,MAAM,CAACmC,GAAzB,CAAP;AACH,GAn/BiB;;AAq/BlB,MAAIgT,MAAJ,GAAsB;AAElB,QAAM5U,MAAM,GAAWjF,MAAM,CAAC2F,QAAP,CAAgByC,QAA3B,UAA0CpI,MAAM,CAAC2F,QAAP,CAAgBC,IAAtE;AACA,QAAM+T,UAAU,GAAGjV,MAAM,CAACiV,UAA1B;AACA,QAAMC,SAAS,GAAIlV,MAAM,CAACkV,SAA1B;AAEA,WAAO3U,MAAM,KAAK2U,SAAX,GAAuBA,SAAvB,GAAmCD,UAA1C;AACH,GA5/BiB;;AA8/BlB,MAAIG,WAAJ,GAA2B;AACvB,gBAAWpV,MAAM,CAACgV,SAAlB,GAAgChV,MAAM,CAACwS,YAAP,CAAoBxS,MAAM,CAACmC,GAA3B,CAAhC;AACH,GAhgCiB;;AAkgClB,MAAIkT,UAAJ,GAA0B;AACtB,gBAAWrV,MAAM,CAACgV,SAAlB,GAAgChV,MAAM,CAAC2S,WAAP,CAAmB3S,MAAM,CAACmC,GAA1B,CAAhC;AACH,GApgCiB;;AAsgClB,MAAImT,SAAJ,GAAyB;AACrB,gBAAWtV,MAAM,CAACgV,SAAlB,GAAgChV,MAAM,CAAC4S,UAAP,CAAkB5S,MAAM,CAACmC,GAAzB,CAAhC;AACH,GAxgCiB;;AA0gClB,MAAIoT,iBAAJ,GAAiC;AAC7B,WAAOvV,MAAM,CAACwU,kBAAP,CAA0BxU,MAAM,CAACmC,GAAjC,CAAP;AACH,GA5gCiB;;AA8gClB,MAAIqT,aAAJ,GAA6B;AACzB,gBAAWxV,MAAM,CAACgV,SAAlB,GAAgChV,MAAM,CAACuT,aAAvC;AACH,GAhhCiB;;AAkhClB,MAAIkC,gBAAJ,GAAgC;AAC5B,gBAAWzV,MAAM,CAACC,YAAlB;AACH,GAphCiB;;AAshClB,MAAI8D,SAAJ,GAAyB;AACrB,QAAM2R,gBAAgB,GAAGtL,IAAI,CAACE,MAAL,KAAgBtK,MAAM,CAACqT,wBAAhD;AACA,QAAMtP,SAAS,GAAG2R,gBAAgB,GAAG1V,MAAM,CAACoT,SAAV,GAAsBpT,MAAM,CAACmT,eAA/D;AAEA,gBAAWnT,MAAM,CAACgV,SAAlB,GAAgCjR,SAAhC;AACH,GA3hCiB;;AA6hClB,MAAI4R,OAAJ,GAAuB;AACnB,gBAAW3V,MAAM,CAAC+R,UAAP,CAAkB/R,MAAM,CAACmC,GAAzB,CAAX,GAA6CnC,MAAM,CAACsT,OAApD;AACH,GA/hCiB;;AAiiClB,MAAIsC,UAAJ,GAA0B;AACtB,gBAAW5V,MAAM,CAACmV,MAAlB,GAA6BnV,MAAM,CAACyT,UAApC;AACH,GAniCiB;;AAqiClB,MAAIoC,aAAJ,GAA6B;AACzB,gBAAW7V,MAAM,CAACmV,MAAlB,GAA6BnV,MAAM,CAAC0T,aAApC;AACH,GAviCiB;;AAyiClB,MAAIoC,WAAJ,GAA2B;AACvB,gBAAW9V,MAAM,CAACmV,MAAlB,GAA6BnV,MAAM,CAAC2T,WAApC;AACH,GA3iCiB;;AA6iClB,MAAIoC,aAAJ,GAA6B;AACzB,gBAAW/V,MAAM,CAACmV,MAAlB,GAA6BnV,MAAM,CAAC4T,aAApC;AACH,GA/iCiB;;AAijClB,MAAIoC,gBAAJ,GAAgC;AAC5B,gBAAWhW,MAAM,CAACmV,MAAlB,GAA6BnV,MAAM,CAAC6T,gBAApC;AACH,GAnjCiB;;AAqjClBoC,eAAa,EAAE;AACX7T,WAAO,EAAEjX,4BAAO,CAAC8L,EADN;AAEXqL,QAAI,EAAKtK,yBAAI,CAACI;AAFH;AArjCG,CAAf,C;;AC3BP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACDA;AAEO,SAAS8d,MAAT,CAAgBC,IAAhB,EAAsB3J,GAAtB,EAA2B4J,IAA3B,EAAsC;AAAA,MAAXA,IAAW;AAAXA,QAAW,GAAN,IAAM;AAAA;;AACzCD,MAAI,GAAGA,IAAI,IAAI,EAAf;AACA3J,KAAG,GAAIA,GAAG,IAAK,EAAf;;AAEA,OAAK,IAAIrO,CAAT,IAAcqO,GAAd,EAAmB;AACf,QAAIA,GAAG,CAACjH,cAAJ,CAAmBpH,CAAnB,CAAJ,EAA2B;AACvB,UAAIiY,IAAI,IAAI,CAACD,IAAI,CAAC5Q,cAAL,CAAoBpH,CAApB,CAAb,EAAqC;AACjCgY,YAAI,CAAChY,CAAD,CAAJ,GAAUqO,GAAG,CAACrO,CAAD,CAAb;AACH;AACJ;AACJ;;AAED,SAAOgY,IAAP;AACH;AAEM,SAASE,cAAT,CAAwBnO,GAAxB,EAA6B;AAChC,SAAO5M,MAAM,CAAC2F,QAAP,CAAgByC,QAAhB,KAA6BwE,GAAG,CAACL,KAAJ,CAAU,GAAV,EAAe,CAAf,CAApC;AACH;AAEM,SAAS3H,YAAT,CAAsBgI,GAAtB,EAA2B;AAC9B,MAAIvN,KAAK,GAAGuN,GAAG,CAACvN,KAAJ,CAAU,kBAAV,CAAZ;;AAEA,MAAI,CAACA,KAAL,EAAY;AACR,WAAO,IAAP;AACH;;AAED,SAAOA,KAAK,CAAC,CAAD,CAAL,KAAgBW,MAAM,CAAC2F,QAAP,CAAgByC,QAAhC,UAA6CpI,MAAM,CAAC2F,QAAP,CAAgBC,IAApE;AACH;AAEM,SAASoV,IAAT,CAAchX,MAAd,EAAsB4I,GAAtB,EAA2BC,OAA3B,EAAuC1H,IAAvC,SAAgF;AAAA,MAArD0H,OAAqD;AAArDA,WAAqD,GAA7C,EAA6C;AAAA;;AAAA,MAAzC1H,IAAyC;AAAzCA,QAAyC,GAApC,EAAoC;AAAA;;AAAA,gCAAJ,EAAI;AAAA,gCAA9B8V,aAA8B;AAAA,MAA9BA,aAA8B,mCAAd,KAAc;;AAEnF,SAAO,IAAIrZ,2BAAJ,CAAiB,UAAAL,OAAO,EAAI;AAC/B,QAAI2Z,QAAQ,GAAGlb,MAAM,CAACoN,cAAP,IAAyBpN,MAAM,CAACmb,aAA/C;;AAEA,QAAInb,MAAM,CAACob,cAAP,IAAyB,CAACxW,YAAY,CAACgI,GAAD,CAA1C,EAAiD;AAE7C,UAAI,CAACmO,cAAc,CAACnO,GAAD,CAAnB,EAA0B;AACtB,eAAOrL,OAAO,EAAd;AACH;;AAED2Z,cAAQ,GAAGlb,MAAM,CAACob,cAAlB;AACH;;AAED,QAAIC,GAAG,GAAG,IAAIH,QAAJ,CAAa,oBAAb,CAAV;AACAG,OAAG,CAACnN,IAAJ,CAASlK,MAAM,CAACsX,WAAP,EAAT,EAA+B1O,GAA/B,EAAoC,IAApC;;AAEA,QAAI,OAAOyO,GAAG,CAAClN,gBAAX,KAAgC,UAApC,EAAgD;AAC5CkN,SAAG,CAAClN,gBAAJ,CAAqB,kBAArB,EAAyC,gBAAzC;AACAkN,SAAG,CAAClN,gBAAJ,CAAqB,cAArB,EAAqC,kBAArC;;AAEA,WAAK,IAAIoN,UAAT,IAAuB1O,OAAvB,EAAgC;AAC5B,YAAIA,OAAO,CAAC5C,cAAR,CAAuBsR,UAAvB,CAAJ,EAAwC;AACpCF,aAAG,CAAClN,gBAAJ,CAAqBoN,UAArB,EAAiC1O,OAAO,CAAC0O,UAAD,CAAxC;AACH;AACJ;AACJ;;AAED,QAAIN,aAAJ,EAAmB;AACf1Z,aAAO;AACV,KAFD,MAEO;AACH8Z,SAAG,CAACG,kBAAJ,GAAyB,YAAM;AAC3B,YAAIH,GAAG,CAACI,UAAJ,GAAiB,CAArB,EAAwB;AACpBla,iBAAO;AACV;AACJ,OAJD;AAKH;;AAED8Z,OAAG,CAACxW,IAAJ,CAASgG,IAAI,CAACC,SAAL,CAAe3F,IAAf,EAAqBzH,OAArB,CAA6B,IAA7B,EAAmC,KAAnC,CAAT;AACH,GArCM,CAAP;AAsCH;AAEM,SAASge,eAAT,CAAyB1X,MAAzB,EAAiC2X,QAAjC,EAA2C;AAE9C,MAAIC,QAAQ,GAAG,EAAf;AAEA,SAAO,YAAW;AACd,QAAI1X,IAAI,GAAGqB,SAAX;;AAEA,QAAIqW,QAAQ,CAACxY,OAAb,EAAsB;AAClBE,kBAAY,CAACsY,QAAQ,CAACxY,OAAV,CAAZ;AACA,aAAOwY,QAAQ,CAACxY,OAAhB;AACH;;AAEDwY,YAAQ,CAACxY,OAAT,GAAmBxC,UAAU,CAAC,YAAM;AAEhC,UAAIib,QAAQ,GAAGD,QAAQ,CAACC,QAAxB;AACA,UAAIC,QAAQ,GAAGF,QAAQ,CAACE,QAAxB;AAEA,aAAOF,QAAQ,CAACnb,OAAhB;AACA,aAAOmb,QAAQ,CAACC,QAAhB;AACA,aAAOD,QAAQ,CAACE,QAAhB;AACA,aAAOF,QAAQ,CAACxY,OAAhB;AAEA,aAAOxB,2BAAY,CAACL,OAAb,GAAuBnB,IAAvB,CAA4B,YAAM;AACrC,eAAO4D,MAAM,CAACG,KAAP,CAAa,IAAb,EAAmBD,IAAnB,CAAP;AACH,OAFM,EAEJ9D,IAFI,CAECyb,QAFD,EAEWC,QAFX,CAAP;AAIH,KAd4B,EAc1BH,QAd0B,CAA7B;AAgBAC,YAAQ,CAACnb,OAAT,GAAmBmb,QAAQ,CAACnb,OAAT,IAAoB,IAAImB,2BAAJ,CAAiB,UAACia,QAAD,EAAWC,QAAX,EAAwB;AAC5EF,cAAQ,CAACC,QAAT,GAAoBA,QAApB;AACAD,cAAQ,CAACE,QAAT,GAAoBA,QAApB;AACH,KAHsC,CAAvC;AAKA,WAAOF,QAAQ,CAACnb,OAAhB;AACH,GA9BD;AA+BH;AAEM,SAASsb,aAAT,GAA8C;AACjD,SAAO,IAAIna,2BAAJ,CAAiB,UAAAL,OAAO,EAAI;AAC/B,QAAI,OAAOwP,QAAP,KAAoB,WAApB,IAAmCA,QAAQ,CAAC0K,UAAT,KAAwB,UAA/D,EAA2E;AACvEla,aAAO;AACV;;AAEDvB,UAAM,CAACqN,gBAAP,CAAwB,MAAxB,EAAgC9L,OAAhC;AACH,GANM,CAAP;AAOH;AAEM,SAASya,YAAT,CAAsBhY,MAAtB,EAA8BX,IAA9B,EAAoC;AAEvC,MAAID,OAAJ;;AAEA,WAAS6Y,IAAT,GAAgB;AACZ7Y,WAAO,GAAGxC,UAAU,CAAC,YAAM;AACvBoD,YAAM;AACNiY,UAAI;AACP,KAHmB,EAGjB5Y,IAHiB,CAApB;AAIH;;AAED4Y,MAAI;AAEJ,SAAO;AACH/a,UADG,oBACM;AACLoC,kBAAY,CAACF,OAAD,CAAZ;AACH;AAHE,GAAP;AAKH;AAEM,SAAS8Y,QAAT,GAAoB;AACvB,MAAIC,KAAK,GAAG,kBAAZ;AAEA,SAAO,aAAaze,OAAb,CAAqB,IAArB,EAA2B,YAAM;AACpC,WAAOye,KAAK,CAACC,MAAN,CAAatN,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACE,MAAL,KAAgBmN,KAAK,CAACpb,MAAjC,CAAb,CAAP;AACH,GAFM,CAAP;AAGH;AAEM,SAASiK,IAAT,GAAgB;AACnB,SAAOwG,OAAO,CAACxR,MAAM,CAAC+Q,QAAP,CAAgBsL,YAAjB,CAAd;AACH,C;;ACtJM,IAAIC,eAAe,GAAG,EAAtB;AACA,IAAIC,YAAY,GAAG,EAAnB;AACA,IAAIC,gBAAgB,GAAG,EAAvB;AACA,IAAItQ,cAAc,GAAG,EAArB;AAEA,SAASzF,iBAAT,CAA2BgW,OAA3B,EAAoC;AACvCH,iBAAe,CAAC3b,IAAhB,CAAqB8b,OAArB;AACH;AAEM,SAASlV,cAAT,CAAwBkV,OAAxB,EAAiC;AACpCF,cAAY,CAAC5b,IAAb,CAAkB8b,OAAlB;AACH;AAEM,SAAShV,kBAAT,CAA4BgV,OAA5B,EAAqC;AACxCD,kBAAgB,CAAC7b,IAAjB,CAAsB8b,OAAtB;AACH;AAEM,SAASnV,gBAAT,CAA0BmV,OAA1B,EAAmC;AACtCvQ,gBAAc,CAACvL,IAAf,CAAoB8b,OAApB;AACH,C;;ACnBM,IAAI/X,MAAM,GAAG;AAEhB8D,KAAG,EAAE,EAFW;AAGhBL,QAAM,EAAE,EAHQ;AAKhBuU,oBAAkB,EAAE,MALJ;AAOhBC,eAAa,EAAK,KAAK,EAAL,GAAU,IAPZ;AAQhBC,kBAAgB,EAAE,EARF;AAUhBC,WAAS,EAAE,GAVK;AAYhB;AACA;AACAC,QAAM,EAAE,KAdQ;AAgBhBpU,WAAS,EAAE,IAhBK;AAiBhBqU,qBAAmB,EAAE,IAjBL;AAkBhBC,mBAAiB,EAAK,IAlBN;AAmBhBC,kBAAgB,EAAE,KAnBF;AAoBhBC,2BAAyB,EAAE,KApBX;AAsBhBtU,UAAQ,EAAE,MAtBM;AAwBhBuU,SAAO,EAAE,CAAC,MAAD,EAAS,OAAT,CAxBO;AA0BhBC,WAAS,EAAO,IA1BA;AA2BhBzU,gBAAc,EAAE;AA3BA,CAAb;AA8BA,IAAII,SAAS,GAAG,CAAE,OAAF,EAAW,MAAX,EAAmB,MAAnB,EAA2B,OAA3B,CAAhB,C;;AC9BP;AACA;AACA;AAEO,IAAIsU,MAAM,GAAG,EAAb;AACA,IAAIC,QAAQ,GAAG,EAAf;;AAEP,IAAIC,gBAAS,GAAG,mBAAC1Q,OAAD,EAAU1H,IAAV,EAAgBqJ,OAAhB,EAA4B;AACxC,SAAOwM,IAAI,CAAC,MAAD,EAAStW,MAAM,CAAC8D,GAAhB,EAAqBqE,OAArB,EAA8B1H,IAA9B,EAAoCqJ,OAApC,CAAX;AACH,CAFD;;AAIO,SAASvI,YAAT,GAAwB;AAC3B,SAAOsX,gBAAP;AACH;AAEM,SAASxX,YAAT,CAAsByX,YAAtB,EAAoC;AACvCD,kBAAS,GAAGC,YAAZ;AACH;AAED,IAAIC,MAAM,GAAG,KAAb;AAEA7c,UAAU,CAAC,YAAM;AACb6c,QAAM,GAAG,IAAT;AACH,CAFS,EAEP,CAFO,CAAV;AAIO,SAASC,KAAT,CAAeC,KAAf,EAAsBC,KAAtB,EAA6BlW,OAA7B,EAAsC;AAEzC,MAAI,OAAO1H,MAAP,KAAkB,WAAlB,IAAiC,CAACA,MAAM,CAACyK,OAAzC,IAAoD,CAACzK,MAAM,CAACyK,OAAP,CAAeE,GAAxE,EAA6E;AACzE;AACH;;AAED,MAAI,CAAC8S,MAAL,EAAa;AACT,WAAO7c,UAAU,CAAC;AAAA,aAAM8c,KAAK,CAACC,KAAD,EAAQC,KAAR,EAAelW,OAAf,CAAX;AAAA,KAAD,EAAqC,CAArC,CAAjB;AACH;;AAED,MAAIkB,QAAQ,GAAGlE,MAAM,CAACkE,QAAtB;;AAEA,MAAI5I,MAAM,CAAC3U,SAAX,EAAsB;AAClBud,YAAQ,GAAG5I,MAAM,CAAC3U,SAAlB;AACH;;AAED,MAAI0d,SAAS,CAACrI,OAAV,CAAkBid,KAAlB,IAA2B5U,SAAS,CAACrI,OAAV,CAAkBkI,QAAlB,CAA/B,EAA4D;AACxD;AACH;;AAEDlB,SAAO,GAAGA,OAAO,IAAI,EAArB;AAEA,MAAIxD,IAAI,GAAG,CAAC0Z,KAAD,CAAX;;AAEA,MAAG5S,IAAI,EAAP,EAAU;AACNtD,WAAO,GAAGmD,IAAI,CAACC,SAAL,CAAepD,OAAf,CAAV;AACH;;AAEDxD,MAAI,CAACvD,IAAL,CAAU+G,OAAV;;AAEA,MAAIA,OAAO,CAAC1F,KAAR,IAAiB0F,OAAO,CAACmW,OAA7B,EAAsC;AAClC3Z,QAAI,CAACvD,IAAL,CAAU,MAAV,EAAkB+G,OAAO,CAAC1F,KAAR,IAAiB0F,OAAO,CAACmW,OAA3C;AACH;;AAED,MAAI;AACA,QAAI7d,MAAM,CAACyK,OAAP,CAAekT,KAAf,KAAyB3d,MAAM,CAACyK,OAAP,CAAekT,KAAf,EAAsBxZ,KAAnD,EAA0D;AACtDnE,YAAM,CAACyK,OAAP,CAAekT,KAAf,EAAsBxZ,KAAtB,CAA4BnE,MAAM,CAACyK,OAAnC,EAA4CvG,IAA5C;AACH,KAFD,MAEO,IAAIlE,MAAM,CAACyK,OAAP,CAAeE,GAAf,IAAsB3K,MAAM,CAACyK,OAAP,CAAeE,GAAf,CAAmBxG,KAA7C,EAAoD;AACvDnE,YAAM,CAACyK,OAAP,CAAeE,GAAf,CAAmBxG,KAAnB,CAAyBnE,MAAM,CAACyK,OAAhC,EAAyCvG,IAAzC;AACH;AACJ,GAND,CAME,OAAO7D,GAAP,EAAY,CACV;AACH;AACJ;AAEM,SAASyd,cAAT,QAAwD;AAAA,gCAAJ,EAAI;AAAA,gCAA9B7C,aAA8B;AAAA,MAA9BA,aAA8B,mCAAd,KAAc;;AAE3D,MAAI,OAAOjb,MAAP,KAAkB,WAAtB,EAAmC;AAC/B;AACH;;AAED,MAAI,CAAC0E,MAAM,CAAC8D,GAAZ,EAAiB;AACb;AACH;;AAED,MAAIuV,SAAS,GAAGV,MAAM,CAACtc,MAAvB;AACA,MAAIid,WAAW,GAAGV,QAAQ,CAACvc,MAA3B;;AAEA,MAAI,CAACgd,SAAD,IAAc,CAACC,WAAnB,EAAgC;AAC5B;AACH;;AAED,MAAIC,IAAI,GAAG,EAAX;;AAjB2D,0BAmBvC1B,YAnBuC,gBAmBzB;AAA7B,QAAIE,OAAO,GAAIF,YAAJ,KAAX;;AACD,QAAI;AACA3B,YAAM,CAACqD,IAAD,EAAOxB,OAAO,CAACwB,IAAD,CAAd,EAAsB,KAAtB,CAAN;AACH,KAFD,CAEE,OAAO5d,GAAP,EAAY;AACVoK,aAAO,CAACzI,KAAR,CAAc,+BAAd,EAA+C3B,GAAG,CAAC8B,KAAJ,IAAa9B,GAAG,CAAC5C,QAAJ,EAA5D;AACH;AACJ;;AAED,MAAIoP,OAAO,GAAG,EAAd;;AA3B2D,0BA6BvCX,cA7BuC,gBA6BvB;AAA/B,QAAIuQ,QAAO,GAAIvQ,cAAJ,KAAX;;AACD,QAAI;AACA0O,YAAM,CAAC/N,OAAD,EAAU4P,QAAO,CAAC5P,OAAD,CAAjB,EAA4B,KAA5B,CAAN;AACH,KAFD,CAEE,OAAOxM,GAAP,EAAY;AACVoK,aAAO,CAACzI,KAAR,CAAc,iCAAd,EAAiD3B,GAAG,CAAC8B,KAAJ,IAAa9B,GAAG,CAAC5C,QAAJ,EAA9D;AACH;AACJ;;AAED,MAAIygB,MAAM,GAAGb,MAAb;AAEA,MAAIhC,GAAG,GAAGkC,gBAAS,CAAC1Q,OAAD,EAAU;AACzBqR,UAAM,EAANA,MADyB;AAEzBD,QAAI,EAAJA,IAFyB;AAGzBX,YAAQ,EAARA;AAHyB,GAAV,EAIhB;AACCrC,iBAAa,EAAbA;AADD,GAJgB,CAAnB;AAQAoC,QAAM,GAAG,EAAT;AACAC,UAAQ,GAAG,EAAX;AAEA,SAAOjC,GAAP;AACH;;AAEM,IAAIhX,MAAK,GAAGqX,eAAe,CAACoC,cAAD,EAAiBpZ,MAAM,CAACkY,gBAAxB,CAA3B;;;;AAGP,SAASuB,OAAT,CAAiBR,KAAjB,EAAwBC,KAAxB,EAA+BlW,OAA/B,EAAwC;AAEpC2V,QAAM,CAAC1c,IAAP,CAAY;AACRgd,SAAK,EAALA,KADQ;AAERC,SAAK,EAALA,KAFQ;AAGRlW,WAAO,EAAPA;AAHQ,GAAZ;;AAMA,MAAIhD,MAAM,CAACyY,OAAP,CAAezc,OAAf,CAAuBid,KAAvB,IAAgC,CAAC,CAArC,EAAwC;AACpCtZ,UAAK;AACR;AACJ;;AAGM,SAASsG,GAAT,CAAagT,KAAb,EAAoBC,KAApB,EAA2BlW,OAA3B,EAAoC;AAEvC,MAAI,OAAO1H,MAAP,KAAkB,WAAtB,EAAmC;AAC/B;AACH;;AAED,MAAI0E,MAAM,CAACyD,MAAX,EAAmB;AACfyV,SAAK,GAAMlZ,MAAM,CAACyD,MAAb,SAAuByV,KAA5B;AACH;;AAEDlW,SAAO,GAAGA,OAAO,IAAI,EAArB;;AAEA,MAAI,OAAOA,OAAP,KAAmB,QAAvB,EAAiC;AAC7BA,WAAO,GAAG;AACNwD,aAAO,EAAExD;AADH,KAAV;AAGH,GAJD,MAIO,IAAIA,OAAO,YAAYjI,KAAvB,EAA8B;AACjCiI,WAAO,GAAG;AACN1F,WAAK,EAAE0F,OAAO,CAACvF,KAAR,IAAiBuF,OAAO,CAACjK,QAAR;AADlB,KAAV;AAGH;;AAED,MAAI;AACAoN,QAAI,CAACC,SAAL,CAAepD,OAAf;AACH,GAFD,CAEE,OAAOrH,GAAP,EAAY;AACV;AACH;;AAEDqH,SAAO,CAAC0W,SAAR,GAAoBC,IAAI,CAACC,GAAL,EAApB;;AA5BuC,0BA8BnBhC,eA9BmB,gBA8BF;AAAhC,QAAIG,OAAO,GAAIH,eAAJ,KAAX;;AACD,QAAI;AACA1B,YAAM,CAAClT,OAAD,EAAU+U,OAAO,CAAC/U,OAAD,CAAjB,EAA4B,KAA5B,CAAN;AACH,KAFD,CAEE,OAAOrH,GAAP,EAAY;AACVoK,aAAO,CAACzI,KAAR,CAAc,kCAAd,EAAkD3B,GAAG,CAAC8B,KAAJ,IAAa9B,GAAG,CAAC5C,QAAJ,EAA/D;AACH;AACJ;;AAED,MAAI,CAACiH,MAAM,CAACoY,MAAZ,EAAoB;AAChBY,SAAK,CAACC,KAAD,EAAQC,KAAR,EAAelW,OAAf,CAAL;AACH;;AAED,MAAI2V,MAAM,CAACtc,MAAP,KAAkB2D,MAAM,CAACmY,SAA7B,EAAwC;AACpCsB,WAAO,CAAC,MAAD,EAAS,0BAAT,CAAP;AACH,GAFD,MAGK,IAAId,MAAM,CAACtc,MAAP,GAAgB2D,MAAM,CAACmY,SAA3B,EAAsC;AACvCsB,WAAO,CAACR,KAAD,EAAQC,KAAR,EAAelW,OAAf,CAAP;AACH;AACJ;AAEM,SAASS,MAAT,CAAgBvK,IAAhB,EAAsB;AAEzB,SAAO;AACH0T,SADG,iBACGsM,KADH,EACUlW,OADV,EACmB;AAClB,aAAOiD,GAAG,CAAC,OAAD,EAAa/M,IAAb,SAAqBggB,KAArB,EAA8BlW,OAA9B,CAAV;AACH,KAHE;AAKH4C,QALG,gBAKEsT,KALF,EAKSlW,OALT,EAKkB;AACjB,aAAOiD,GAAG,CAAC,MAAD,EAAY/M,IAAZ,SAAoBggB,KAApB,EAA6BlW,OAA7B,CAAV;AACH,KAPE;AASHgD,QATG,gBASEkT,KATF,EASSlW,OATT,EASkB;AACjB,aAAOiD,GAAG,CAAC,MAAD,EAAY/M,IAAZ,SAAoBggB,KAApB,EAA6BlW,OAA7B,CAAV;AACH,KAXE;AAaH1F,SAbG,iBAaG4b,KAbH,EAaUlW,OAbV,EAamB;AAClB,aAAOiD,GAAG,CAAC,OAAD,EAAa/M,IAAb,SAAqBggB,KAArB,EAA8BlW,OAA9B,CAAV;AACH,KAfE;AAiBH2I,SAjBG,iBAiBG3I,OAjBH,EAiBY;AACX,aAAO2I,MAAK,CAAC3I,OAAD,CAAZ;AACH,KAnBE;AAqBHrD,SArBG,mBAqBK;AACJ,aAAOA,MAAK,EAAZ;AACH;AAvBE,GAAP;AAyBH;AAEM,SAASiN,KAAT,CAAesM,KAAf,EAAsBlW,OAAtB,EAA+B;AAClC,SAAOiD,GAAG,CAAC,OAAD,EAAUiT,KAAV,EAAiBlW,OAAjB,CAAV;AACH;AAEM,SAAS4C,IAAT,CAAcsT,KAAd,EAAqBlW,OAArB,EAA8B;AACjC,SAAOiD,GAAG,CAAC,MAAD,EAASiT,KAAT,EAAgBlW,OAAhB,CAAV;AACH;AAEM,SAASgD,IAAT,CAAckT,KAAd,EAAqBlW,OAArB,EAA8B;AACjC,SAAOiD,GAAG,CAAC,MAAD,EAASiT,KAAT,EAAgBlW,OAAhB,CAAV;AACH;AAEM,SAAS1F,KAAT,CAAe4b,KAAf,EAAsBlW,OAAtB,EAA+B;AAClC,SAAOiD,GAAG,CAAC,OAAD,EAAUiT,KAAV,EAAiBlW,OAAjB,CAAV;AACH;;AAEM,SAAS2I,MAAT,CAAe3I,OAAf,EAAwB;AAE3B,MAAI,OAAO1H,MAAP,KAAkB,WAAtB,EAAmC;AAC/B;AACH;;AAED,MAAI0H,OAAJ,EAAa;AAET,QAAI;AACAmD,UAAI,CAACC,SAAL,CAAepD,OAAf;AACH,KAFD,CAEE,OAAOrH,GAAP,EAAY;AACV;AACH;;AANQ,4BAQWmc,gBARX,gBAQ6B;AAAjC,UAAIC,OAAO,GAAID,gBAAJ,KAAX;;AACD,UAAI;AACA5B,cAAM,CAAClT,OAAD,EAAU+U,OAAO,CAAC/U,OAAD,CAAjB,EAA4B,KAA5B,CAAN;AACH,OAFD,CAEE,OAAOrH,GAAP,EAAY;AACVoK,eAAO,CAACzI,KAAR,CAAc,mCAAd,EAAmD3B,GAAG,CAAC8B,KAAJ,IAAa9B,GAAG,CAAC5C,QAAJ,EAAhE;AACH;AACJ;;AAEDigB,SAAK,CAAC,OAAD,EAAU,UAAV,EAAsBhW,OAAtB,CAAL;AAEA4V,YAAQ,CAAC3c,IAAT,CAAc+G,OAAd;AACH;AACJ;;;;ACrQD;AACA;AACA;AACA;AAEA,IAAI6W,iBAAiB,GAAGve,MAAM,IAC1BA,MAAM,CAACwe,WADa,IAEpBA,WAAW,CAACF,GAFQ,IAGpBE,WAAW,CAACC,MAHQ,IAIpBD,WAAW,CAACC,MAAZ,CAAmBC,UAJC,IAKpBF,WAAW,CAACC,MAAZ,CAAmBE,eALC,IAMnB7P,IAAI,CAAC8P,GAAL,CAASJ,WAAW,CAACF,GAAZ,KAAoBD,IAAI,CAACC,GAAL,EAA7B,IAA2C,IANxB,IAOnBE,WAAW,CAACF,GAAZ,MAAqBE,WAAW,CAACC,MAAZ,CAAmBC,UAAnB,GAAgCF,WAAW,CAACC,MAAZ,CAAmBE,eAAxE,CAAD,GAA6F,CAPjG;AAUO,SAASL,GAAT,GAAe;AAClB,MAAIC,iBAAJ,EAAuB;AACnB,WAAOC,WAAW,CAACF,GAAZ,EAAP;AACH,GAFD,MAEO;AACH,WAAOD,IAAI,CAACC,GAAL,EAAP;AACH;AACJ;;AAED,SAASO,KAAT,CAAeC,SAAf,EAA0B;AACtBA,WAAS,GAAGA,SAAS,KAAKngB,SAAd,GAA0BmgB,SAA1B,GAAsCR,GAAG,EAArD;AAEA,SAAO;AACHQ,aAAS,EAATA,SADG;AAGHC,WAHG,qBAGO;AACN,aAAOC,QAAQ,CAACV,GAAG,KAAKQ,SAAT,EAAoB,EAApB,CAAf;AACH,KALE;AAOHG,SAPG,mBAOK;AACJH,eAAS,GAAGR,GAAG,EAAf;AACH;AATE,GAAP;AAWH;;AAEM,SAASY,eAAT,GAA2B;AAC9B,MAAIX,iBAAJ,EAAuB;AACnB,QAAIE,MAAM,GAAGze,MAAM,CAACwe,WAAP,CAAmBC,MAAhC;AACA,WAAOO,QAAQ,CAACP,MAAM,CAACC,UAAP,GAAoBD,MAAM,CAACE,eAA5B,EAA6C,EAA7C,CAAf;AACH;AACJ;AAEM,IAAIQ,WAAW,GAAGN,KAAK,EAAvB;AACA,IAAIO,QAAQ,GAAGP,KAAK,CAACK,eAAe,EAAhB,CAApB;AAEA,SAASG,aAAT,GAAyB;AAE5B,MAAIC,cAAc,GAAGT,KAAK,EAA1B;AACA,MAAIU,cAAc,GAAG,CAArB;AAEAvD,cAAY,CAAC,YAAM;AAEf,QAAItX,MAAM,CAAC8a,qBAAP,IAAiCD,cAAc,GAAG7a,MAAM,CAAC8a,qBAA7D,EAAqF;AACjF;AACH;;AAEDD,kBAAc,IAAI,CAAlB;AAEA,QAAIR,OAAO,GAAGO,cAAc,CAACP,OAAf,EAAd;AACA,QAAIU,GAAG,GAAGV,OAAO,GAAGra,MAAM,CAACsY,iBAA3B;AAEA,QAAI0C,gBAAgB,GAAG;AACnB/b,WAAK,EAAE4b,cADY;AAEnBR,aAAO,EAAPA;AAFmB,KAAvB;;AAKA,QAAIra,MAAM,CAACuY,gBAAX,EAA6B;AACzByC,sBAAgB,CAACD,GAAjB,GAAuBA,GAAvB;;AAEA,UAAIA,GAAG,IAAI/a,MAAM,CAACwY,yBAAlB,EAA6C;AACzC5S,YAAI,CAAC,SAAD,EAAYoV,gBAAZ,EAA8B;AAC9BC,mBAAS,EAAE,CAACjb,MAAM,CAACqY;AADW,SAA9B,CAAJ;AAGH;AACJ;;AAEDzS,QAAI,CAAC,WAAD,EAAcoV,gBAAd,EAAgC;AAChCC,eAAS,EAAE,CAACjb,MAAM,CAACqY;AADa,KAAhC,CAAJ;AAIH,GA9BW,EA8BTrY,MAAM,CAACsY,iBA9BE,CAAZ;AA+BH;AAEM,SAAS4C,eAAT,GAA2B;AAE9B,MAAI,CAACrB,iBAAL,EAAwB;AACpB,WAAOjU,IAAI,CAAC,qBAAD,CAAX;AACH;;AAED7D,mBAAiB,CAAC,YAAM;AAEpB,QAAIiB,OAAO,GAAG,EAAd;AAEAA,WAAO,CAACmY,cAAR,GAAyBV,WAAW,CAACJ,OAAZ,EAAzB;;AAEA,QAAIR,iBAAJ,EAAuB;AACnB7W,aAAO,CAACoY,WAAR,GAAsBV,QAAQ,CAACL,OAAT,EAAtB;AACH;;AAED,WAAOrX,OAAP;AACH,GAXgB,CAAjB;AAaAqU,eAAa,GAAG3b,IAAhB,CAAqB,YAAM;AAEvB,QAAIlC,IAAI,GAAG,CACP,YADO,EACO,cADP,EACuB,aADvB,EACsC,0BADtC,EAEP,4BAFO,EAEuB,gBAFvB,EAEyC,YAFzC,EAEuD,iBAFvD,EAGP,mBAHO,EAGc,YAHd,EAG4B,cAH5B,EAG4C,gBAH5C,EAG8D,iBAH9D,EAIP,aAJO,EAIQ,eAJR,EAIyB,cAJzB,EAIyC,aAJzC,EAIwD,eAJxD,EAKP,uBALO,EAKkB,gBALlB,EAKoC,kBALpC,CAAX;AAQA,QAAIugB,MAAM,GAAG,EAAb;AAEAvgB,QAAI,CAAC6hB,OAAL,CAAa,UAAA3hB,GAAG,EAAI;AAChBqgB,YAAM,CAACrgB,GAAD,CAAN,GAAc4gB,QAAQ,CAAChf,MAAM,CAACwe,WAAP,CAAmBC,MAAnB,CAA0BrgB,GAA1B,CAAD,EAAiC,EAAjC,CAAR,IAAgD,CAA9D;AACH,KAFD;AAIA,QAAI4hB,MAAM,GAAGvB,MAAM,CAACC,UAAP,GAAoBD,MAAM,CAACE,eAAxC;;AAEA,QAAIF,MAAM,CAACC,UAAX,EAAuB;AACnBzgB,YAAM,CAACC,IAAP,CAAYugB,MAAZ,EAAoBsB,OAApB,CAA4B,UAAAniB,IAAI,EAAI;AAChC,YAAIyF,IAAI,GAAGob,MAAM,CAAC7gB,IAAD,CAAjB;;AACA,YAAIyF,IAAJ,EAAU;AACNiH,cAAI,aAAW1M,IAAX,EAAmB;AACnBiiB,0BAAc,EAAEb,QAAQ,CAAC3b,IAAI,GAAGob,MAAM,CAACC,UAAd,IAA4BS,WAAW,CAACL,SAAZ,GAAwBkB,MAApD,CAAD,EAA8D,EAA9D,CADL;AAEnBF,uBAAW,EAAEd,QAAQ,CAAC3b,IAAI,GAAGob,MAAM,CAACC,UAAf,EAA2B,EAA3B;AAFF,WAAnB,CAAJ;AAIH;AACJ,OARD;AASH;;AAEDpU,QAAI,CAAC,QAAD,EAAWmU,MAAX,CAAJ;AACAnU,QAAI,CAAC,QAAD,EAAWtK,MAAM,CAACwe,WAAP,CAAmByB,MAA9B,CAAJ;AACA3V,QAAI,CAAC,YAAD,EAAetK,MAAM,CAACwe,WAAP,CAAmB0B,UAAlC,CAAJ;;AAEA,QAAIlgB,MAAM,CAACwe,WAAP,CAAmB2B,UAAvB,EAAmC;AAC/BngB,YAAM,CAACwe,WAAP,CAAmB2B,UAAnB,GAAgCJ,OAAhC,CAAwC,UAAAK,QAAQ,EAAI;AAChD,YAAI,CAAC,MAAD,EAAS,QAAT,EAAmB,KAAnB,EAA0B,KAA1B,EAAiC1f,OAAjC,CAAyC0f,QAAQ,CAACC,aAAlD,IAAmE,CAAC,CAAxE,EAA2E;AACvE/V,cAAI,CAAC8V,QAAQ,CAACC,aAAV,EAAyBD,QAAzB,CAAJ;AACH;AACJ,OAJD;AAKH;AACJ,GAzCD;AA0CH,C;;ACpJD;AACA;AACA;AACA;AAEA,IAAIE,SAAS,GAAG,KAAhB;AAEO,SAAS/X,IAAT,CAAcgY,IAAd,EAAoB;AACvB3F,QAAM,CAAClW,MAAD,EAAS6b,IAAI,IAAI,EAAjB,CAAN;;AAEA,MAAID,SAAJ,EAAe;AACX;AACH;;AAEDA,WAAS,GAAG,IAAZ;;AAEA,MAAI5b,MAAM,CAACiE,cAAX,EAA2B;AACvBiX,mBAAe;AAClB;;AAED,MAAIlb,MAAM,CAACgE,SAAX,EAAsB;AAClB2W,iBAAa;AAChB;;AAED,MAAI3a,MAAM,CAAC0Y,SAAX,EAAsB;AAClBpd,UAAM,CAACqN,gBAAP,CAAwB,cAAxB,EAAwC,YAAM;AAC1C/C,UAAI,CAAC,qBAAD,CAAJ;AACAwT,oBAAc,CAAC;AAAE7C,qBAAa,EAAE;AAAjB,OAAD,CAAd;AACH,KAHD;AAKAjb,UAAM,CAACqN,gBAAP,CAAwB,QAAxB,EAAkC,YAAM;AACpC/C,UAAI,CAAC,eAAD,CAAJ;AACAwT,oBAAc,CAAC;AAAE7C,qBAAa,EAAE;AAAjB,OAAD,CAAd;AACH,KAHD;AAIH;;AAED,MAAIvW,MAAM,CAACiY,aAAX,EAA0B;AACtB6D,eAAW,CAACnc,MAAD,EAAQK,MAAM,CAACiY,aAAf,CAAX;AACH;;AAED,MAAI3c,MAAM,CAACygB,cAAX,EAA2B;AACvBzgB,UAAM,CAACygB,cAAP,CAAsBV,OAAtB,CAA8B,UAAArY,OAAO,EAAI;AACrCiD,SAAG,CAACjD,OAAO,CAACiW,KAAT,EAAgBjW,OAAO,CAACkW,KAAxB,EAA+BlW,OAA/B,CAAH;AACH,KAFD;AAGA,WAAO1H,MAAM,CAACygB,cAAd;AACH;AACJ,C;;AC9CD;AACA;AACA;AACA;AACA;AAEA,IAAIC,QAAQ,GAAGxE,QAAQ,EAAvB;AACA,IAAIyE,MAAM,GAAGzE,QAAQ,EAArB;AAEA,IAAI0E,YAAY,GAAGlc,MAAM,CAACgY,kBAA1B;AACA,IAAIoC,SAAJ;AAEO,SAAS+B,eAAT,GAA2B;AAC9B/B,WAAS,GAAGR,GAAG,EAAf;AACH;AAEM,SAASwC,aAAT,CAAuBC,OAAvB,EAAgC;AACnCjC,WAAS,GAAGA,SAAS,IAAII,eAAe,EAAxC;AAEA,MAAI8B,WAAW,GAAG1C,GAAG,EAArB;AACA,MAAI2C,WAAJ;;AAEA,MAAInC,SAAS,KAAKngB,SAAlB,EAA6B;AACzBsiB,eAAW,GAAGjC,QAAQ,CAACgC,WAAW,GAAGlC,SAAf,EAA0B,CAA1B,CAAtB;AACH;;AAED,MAAIoC,cAAc,mBAAiBN,YAAjB,YAAoCG,OAAtD;AAEAzW,MAAI,CAAC4W,cAAD,EAAiB;AACjBC,YAAQ,EAAEF;AADO,GAAjB,CAAJ;AAIA5Q,QAAK,CAAC;AACF+Q,cAAU,EAAEF,cADV;AAEFG,mBAAe,EAAEJ;AAFf,GAAD,CAAL;AAKAnD,gBAAc;AAEdgB,WAAS,GAAGkC,WAAZ;AACAJ,cAAY,GAAGG,OAAf;AACAJ,QAAM,GAAGzE,QAAQ,EAAjB;AACH;AAEM,SAASkF,UAAT,CAAoBL,OAApB,EAA6B;AAChCF,iBAAe;AACfC,eAAa,CAACC,OAAD,CAAb;AACH;AAEDta,iBAAiB,CAAC,YAAM;AACpB,SAAO;AACHia,YAAQ,EAARA,QADG;AAEHC,UAAM,EAANA;AAFG,GAAP;AAIH,CALgB,CAAjB;AAOApZ,cAAc,CAAC,YAAM;AACjB,SAAO;AACHC,SAAK,UAAQoZ;AADV,GAAP;AAGH,CAJa,CAAd,C;;ACxDA;AACA;AACA;AACA;;;ACHA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACeU,oEAAf,E;;;;;;;;;;;;;;;;;;;;;;;;ACFA;AAEA;;AAIA;;;;;AAMO,SAASC,SAAT,CAAmBC,GAAnB,EAA0C;AAC7C,SAAOA,GAAG,CAAC9jB,OAAJ,CAAY,KAAZ,EAAmB,KAAnB,EAA0BA,OAA1B,CAAkC,IAAlC,EAAwC,KAAxC,EAA+CA,OAA/C,CAAuD,IAAvD,EAA6D,KAA7D,EAAoEA,OAApE,CAA4E,KAA5E,EAAmF,KAAnF,CAAP;AACH;AAGD;;;;;;AAMO,SAAS+jB,gBAAT,CAA0BC,MAA1B,EAAoD;AACvD,SAAOA,MAAM,CAAChkB,OAAP,CAAe,UAAf,EAA2B,UAACikB,CAAD,EAAO;AACrC,iBAAYA,CAAC,CAACjV,WAAF,EAAZ;AACH,GAFM,CAAP;AAGH;AAGD;;;;;;AAMO,SAASkV,gBAAT,CAA0BF,MAA1B,EAAoD;AACvD,SAAOA,MAAM,CAAChkB,OAAP,CAAe,WAAf,EAA4B,UAACikB,CAAD,EAAO;AACtC,WAAOA,CAAC,CAAC,CAAD,CAAD,CAAKrG,WAAL,EAAP;AACH,GAFM,CAAP;AAGH;AAGD;;;;;;AAMO,SAASV,MAAT,CAAgBiH,GAAhB,EAA8Bvc,MAA9B,EAAyD;AAC5D,MAAI,CAACA,MAAL,EAAa;AACT,WAAOuc,GAAP;AACH;;AAED,OAAK,IAAIzjB,GAAT,IAAgBkH,MAAhB,EAAwB;AACpB,QAAIA,MAAM,CAAC2E,cAAP,CAAsB7L,GAAtB,CAAJ,EAAgC;AAC5ByjB,SAAG,CAACzjB,GAAD,CAAH,GAAWkH,MAAM,CAAClH,GAAD,CAAjB;AACH;AACJ;;AAED,SAAOyjB,GAAP;AACH;AAGD;;;;;;AAMO,SAASpV,MAAT,CAAgBoV,GAAhB,EAA6C;AAChD,MAAIje,OAAO,GAAG,EAAd;;AAEA,OAAK,IAAIxF,GAAT,IAAgByjB,GAAhB,EAAqB;AACjB,QAAIA,GAAG,CAAC5X,cAAJ,CAAmB7L,GAAnB,CAAJ,EAA6B;AACzBwF,aAAO,CAACjD,IAAR,CAAakhB,GAAG,CAACzjB,GAAD,CAAhB;AACH;AACJ;;AAED,SAAOwF,OAAP;AACH;AAGD;;;;;;AAMO,SAASsY,QAAT,GAA6B;AAEhC,MAAIC,KAAK,GAAG,kBAAZ;AAEA,SAAO,aAAaze,OAAb,CAAqB,IAArB,EAA2B,YAAM;AACpC,WAAOye,KAAK,CAACC,MAAN,CAAatN,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACE,MAAL,KAAgBmN,KAAK,CAACpb,MAAjC,CAAb,CAAP;AACH,GAFM,CAAP;AAGH;AAED;;;;;;AAMO,SAAS+gB,sBAAT,CAAgCD,GAAhC,EAAuD;AAC1D,SAAOhX,IAAI,CAACC,SAAL,CAAe+W,GAAf,EAAoB,UAACzjB,GAAD,EAAMyW,GAAN,EAAc;AACrC,QAAI,OAAOA,GAAP,KAAe,UAAnB,EAA+B;AAC3B,aAAOA,GAAG,CAACpX,QAAJ,EAAP;AACH;;AACD,WAAOoX,GAAP;AACH,GALM,CAAP;AAMH;AAGD;;;;;;AAMO,SAASkN,OAAT,CAAiBF,GAAjB,EAA+BG,IAA/B,EAAsD;AAEzD,MAAIxjB,MAAJ;;AAEA,MAAI;AACAA,UAAM,GAAGqjB,GAAG,CAACG,IAAD,CAAZ;AACH,GAFD,CAEE,OAAO3hB,GAAP,EAAY,CACV;AACH;;AAED,SAAO7B,MAAP;AACH;AAGD;;;;AAIO,SAASyjB,qBAAT,CAA+BP,MAA/B,EAAyD;AAC5D,SAAOA,MAAM,CAACtF,MAAP,CAAc,CAAd,EAAiBd,WAAjB,KAAiCoG,MAAM,CAAC5Q,KAAP,CAAa,CAAb,EAAgBpE,WAAhB,EAAxC;AACH;AAGD;;;;;;AAMO,SAAS6B,GAAT,CAAazO,IAAb,EAA4B6G,IAA5B,EAA2CkL,GAA3C,EAAgE;AAEnE,MAAI,CAAClL,IAAL,EAAW;AACP,WAAOkL,GAAP;AACH;;AAED,MAAIqQ,SAAS,GAAGvb,IAAI,CAAC4F,KAAL,CAAW,GAAX,CAAhB,CANmE,CAQnE;;AAEA,OAAK,IAAI1J,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGqf,SAAS,CAACnhB,MAA9B,EAAsC8B,CAAC,EAAvC,EAA2C;AAEvC;AAEA,QAAI,OAAO/C,IAAP,KAAgB,QAAhB,IAA4BA,IAAI,KAAK,IAAzC,EAA+C;AAC3CA,UAAI,GAAGA,IAAI,CAACoiB,SAAS,CAACrf,CAAD,CAAV,CAAX,CAD2C,CAG/C;AACC,KAJD,MAIO;AACH,aAAOgP,GAAP;AACH;AACJ,GArBkE,CAuBnE;;;AAEA,SAAO/R,IAAI,KAAKnB,SAAT,GAAqBkT,GAArB,GAA2B/R,IAAlC;AACH;AAGD;;;;;;AAMO,SAASkc,YAAT,CAAsBhY,MAAtB,EAAyCX,IAAzC,EAAyE;AAE5E,MAAID,OAAJ;;AAEA,WAAS+e,WAAT,GAAuB;AACnB/e,WAAO,GAAGxC,UAAU,CAACuhB,WAAD,EAAc9e,IAAd,CAApB;AACAW,UAAM,CAAC7D,IAAP;AACH;;AAEDiD,SAAO,GAAGxC,UAAU,CAACuhB,WAAD,EAAc9e,IAAd,CAApB;AAEA,SAAO;AACHnC,UADG,oBACM;AACLoC,kBAAY,CAACF,OAAD,CAAZ;AACH;AAHE,GAAP;AAKH;AAED;;;;;;AAMO,SAASgf,WAAT,CAAqBpe,MAArB,EAAwCX,IAAxC,EAAuD;AAE1D,MAAIsY,QAAQ,GAAGK,YAAY,CAAC,YAAM;AAC9B3Y,QAAI,IAAI,GAAR;;AACA,QAAIA,IAAI,IAAI,CAAZ,EAAe;AACXsY,cAAQ,CAACza,MAAT;AACA8C,YAAM;AACT;AACJ,GAN0B,EAMxB,GANwB,CAA3B;AAOH;AAGM,SAASqe,IAAT,CAAcviB,IAAd,EAA4CwiB,QAA5C,EAAiE;AAEpE,MAAI,CAACxiB,IAAL,EAAW;AACP;AACH;;AAED,MAAIlB,KAAK,CAACC,OAAN,CAAciB,IAAd,CAAJ,EAAyB;AACrB,QAAIyiB,GAAG,GAAGziB,IAAI,CAACiB,MAAf;;AACA,SAAK,IAAI8B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0f,GAApB,EAAyB1f,CAAC,EAA1B,EAA8B;AAC1Byf,cAAQ,CAACxiB,IAAI,CAAC+C,CAAD,CAAL,EAAUA,CAAV,CAAR;AACH;AAEJ,GAND,MAMO,IAAI,OAAO/C,IAAP,KAAgB,QAApB,EAA8B;AACjC,QAAI5B,IAAI,GAAGD,MAAM,CAACC,IAAP,CAAY4B,IAAZ,CAAX;AACA,QAAIyiB,IAAG,GAAGrkB,IAAI,CAAC6C,MAAf;;AACA,SAAK,IAAI8B,EAAC,GAAG,CAAb,EAAgBA,EAAC,GAAG0f,IAApB,EAAyB1f,EAAC,EAA1B,EAA8B;AAC1B,UAAIzE,GAAG,GAAGF,IAAI,CAAC2E,EAAD,CAAd;AACAyf,cAAQ,CAACxiB,IAAI,CAAC1B,GAAD,CAAL,EAAYA,GAAZ,CAAR;AACH;AACJ;AACJ;AAGM,SAASokB,aAAT,CAAmD1iB,IAAnD,EAA6D2iB,SAA7D,EAAkGC,OAAlG,EAA6H;AAAA,MAA3BA,OAA2B;AAA3BA,WAA2B,GAAR,EAAQ;AAAA;;AAEhI,MAAI9jB,KAAK,CAACC,OAAN,CAAciB,IAAd,CAAJ,EAAyB;AAAA;AACrB,UAAIiB,MAAM,GAAGjB,IAAI,CAACiB,MAAlB;AACA,UAAIvC,MAAM,GAAG,EAAb;;AAFqB,iCAIZqE,CAJY;AAKjB5E,cAAM,CAAC0kB,cAAP,CAAsBnkB,MAAtB,EAA8BqE,CAA9B,EAAiC;AAC7B+f,sBAAY,EAAE,IADe;AAE7BC,oBAAU,EAAI,IAFe;AAG7BtU,aAAG,EAAW,eAAM;AAChB,gBAAIuU,OAAO,GAAGJ,OAAO,GAAOA,OAAP,SAAoB7f,CAApB,QAA+BA,CAApD;AACA,gBAAInE,KAAK,GAAGoB,IAAI,CAAC+C,CAAD,CAAhB;AAEA,gBAAIvD,IAAI,GAAI,OAAOZ,KAAnB;AACA,gBAAIqkB,QAAQ,GAAGN,SAAS,CAACnjB,IAAD,CAAxB;;AACA,gBAAIyjB,QAAJ,EAAc;AACV,kBAAIC,QAAQ,GAAGD,QAAQ,CAACrkB,KAAD,EAAQmE,CAAR,EAAWigB,OAAX,CAAvB;;AACA,kBAAI,OAAOE,QAAP,KAAoB,WAAxB,EAAqC;AACjCxkB,sBAAM,CAACqE,CAAD,CAAN,GAAYmgB,QAAZ;AACA,uBAAOxkB,MAAM,CAACqE,CAAD,CAAb;AACH;AACJ;;AAED,gBAAI,OAAOnE,KAAP,KAAiB,QAAjB,IAA6BA,KAAK,KAAK,IAA3C,EAAiD;AAC7CF,oBAAM,CAACqE,CAAD,CAAN,GAAY2f,aAAa,CAAC9jB,KAAD,EAAQ+jB,SAAR,EAAmBK,OAAnB,CAAzB;AACA,qBAAOtkB,MAAM,CAACqE,CAAD,CAAb;AACH;;AAEDrE,kBAAM,CAACqE,CAAD,CAAN,GAAYnE,KAAZ;AACA,mBAAOF,MAAM,CAACqE,CAAD,CAAb;AACH,WAxB4B;AAyB7BogB,aAAG,EAAE,aAAC1jB,KAAD,EAAW;AACZ,mBAAOf,MAAM,CAACqE,CAAD,CAAb;AACArE,kBAAM,CAACqE,CAAD,CAAN,GAAYtD,KAAZ;AACH;AA5B4B,SAAjC;AALiB;;AAIrB,WAAK,IAAIsD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG9B,MAApB,EAA4B8B,CAAC,EAA7B,EAAiC;AAAA,cAAxBA,CAAwB;AA+BhC,OAnCoB,CAqCrB;;;AACA;AAAA,WAAOrE;AAAP;AAtCqB;;AAAA;AAuCxB,GAvCD,MAuCO,IAAI,OAAOsB,IAAP,KAAgB,QAAhB,IAA4BA,IAAI,KAAK,IAAzC,EAA+C;AAAA;AAClD,UAAItB,MAAM,GAAG,EAAb;;AADkD,mCAGzCJ,GAHyC;AAI9C,YAAI,CAAC0B,IAAI,CAACmK,cAAL,CAAoB7L,GAApB,CAAL,EAA+B;AAC3B;AACH;;AAEDH,cAAM,CAAC0kB,cAAP,CAAsBnkB,MAAtB,EAA8BJ,GAA9B,EAAmC;AAC/BwkB,sBAAY,EAAE,IADiB;AAE/BC,oBAAU,EAAI,IAFiB;AAG/BtU,aAAG,EAAW,eAAM;AAChB,gBAAIuU,OAAO,GAAGJ,OAAO,GAAOA,OAAP,SAAoBtkB,GAApB,QAAiCA,GAAtD,CADgB,CAEhB;;AACA,gBAAIM,KAAK,GAAGoB,IAAI,CAAC1B,GAAD,CAAhB;AAEA,gBAAIkB,IAAI,GAAI,OAAOZ,KAAnB;AACA,gBAAIqkB,QAAQ,GAAGN,SAAS,CAACnjB,IAAD,CAAxB;;AACA,gBAAIyjB,QAAJ,EAAc;AACV,kBAAIC,QAAQ,GAAGD,QAAQ,CAACrkB,KAAD,EAAQN,GAAR,EAAa0kB,OAAb,CAAvB;;AACA,kBAAI,OAAOE,QAAP,KAAoB,WAAxB,EAAqC;AACjCxkB,sBAAM,CAACJ,GAAD,CAAN,GAAc4kB,QAAd;AACA,uBAAOxkB,MAAM,CAACJ,GAAD,CAAb;AACH;AACJ;;AAED,gBAAI,OAAOM,KAAP,KAAiB,QAAjB,IAA6BA,KAAK,KAAK,IAA3C,EAAiD;AAC7CF,oBAAM,CAACJ,GAAD,CAAN,GAAcokB,aAAa,CAAC9jB,KAAD,EAAQ+jB,SAAR,EAAmBK,OAAnB,CAA3B;AACA,qBAAOtkB,MAAM,CAACJ,GAAD,CAAb;AACH;;AAEDI,kBAAM,CAACJ,GAAD,CAAN,GAAcM,KAAd;AACA,mBAAOF,MAAM,CAACJ,GAAD,CAAb;AACH,WAzB8B;AA0B/B6kB,aAAG,EAAE,aAAC1jB,KAAD,EAAW;AACZ,mBAAOf,MAAM,CAACJ,GAAD,CAAb;AACAI,kBAAM,CAACJ,GAAD,CAAN,GAAcmB,KAAd;AACH;AA7B8B,SAAnC;AAR8C;;AAGlD,WAAK,IAAInB,GAAT,IAAgB0B,IAAhB,EAAsB;AAAA,2BAAb1B,GAAa;;AAAA,kCAEd;AAkCP,OAvCiD,CAyClD;;;AACA;AAAA,WAAOI;AAAP;AA1CkD;;AAAA;AA2CrD,GA3CM,MA2CA;AACH,UAAM,IAAIiB,KAAJ,2BAAN;AACH;AACJ;AAGM,SAASyjB,QAAT,CAAkB5d,MAAlB,EAAmC6d,MAAnC,EAAoDvlB,IAApD,EAAmEiU,GAAnE,EAAgF;AACnF,MAAIvM,MAAM,CAAC2E,cAAP,CAAsBrM,IAAtB,CAAJ,EAAiC;AAC7B,QAAIwlB,UAAU,GAAGnlB,MAAM,CAAColB,wBAAP,CAAgC/d,MAAhC,EAAwC1H,IAAxC,CAAjB,CAD6B,CAE7B;;AACAK,UAAM,CAAC0kB,cAAP,CAAsBQ,MAAtB,EAA8BvlB,IAA9B,EAAoCwlB,UAApC;AAEH,GALD,MAKO;AACHD,UAAM,CAACvlB,IAAD,CAAN,GAAeiU,GAAf;AACH;AACJ;AAEM,SAASyR,MAAT,CAAgBzB,GAAhB,EAA8B1Z,MAA9B,EAAoDob,MAApD,EAAkG;AAAA,MAApEpb,MAAoE;AAApEA,UAAoE,GAAlD,EAAkD;AAAA;;AAAA,MAA9Cob,MAA8C;AAA9CA,UAA8C,GAA5B,EAA4B;AAAA;;AACrGpb,QAAM,GAAGA,MAAM,GAAOA,MAAP,SAAoBA,MAAnC;;AACA,OAAK,IAAI/J,GAAT,IAAgByjB,GAAhB,EAAqB;AACjB,QAAIA,GAAG,CAACzjB,GAAD,CAAH,KAAaO,SAAb,IAA0BkjB,GAAG,CAACzjB,GAAD,CAAH,KAAa,IAAvC,IAA+C,OAAOyjB,GAAG,CAACzjB,GAAD,CAAV,KAAoB,UAAvE,EAAmF;AAC/E;AACH,KAFD,MAEO,IAAIyjB,GAAG,CAACzjB,GAAD,CAAH,IAAYQ,KAAK,CAACC,OAAN,CAAcgjB,GAAG,CAACzjB,GAAD,CAAjB,CAAZ,IAAuCyjB,GAAG,CAACzjB,GAAD,CAAH,CAAS2C,MAAhD,IAA0D8gB,GAAG,CAACzjB,GAAD,CAAH,CAASolB,KAAT,CAAe,UAAA3O,GAAG;AAAA,aAAI,OAAOA,GAAP,KAAe,QAAnB;AAAA,KAAlB,CAA9D,EAA8G;AACjH0O,YAAM,MAAKpb,MAAL,GAAgB/J,GAAhB,CAAN,GAAgCyjB,GAAG,CAACzjB,GAAD,CAAH,CAASE,IAAT,CAAc,GAAd,CAAhC;AACH,KAFM,MAEA,IAAIujB,GAAG,CAACzjB,GAAD,CAAH,IAAY,OAAOyjB,GAAG,CAACzjB,GAAD,CAAV,KAAoB,QAApC,EAA8C;AACjDmlB,YAAM,GAAGD,MAAM,CAACzB,GAAG,CAACzjB,GAAD,CAAJ,OAAe+J,MAAf,GAA0B/J,GAA1B,EAAkCmlB,MAAlC,CAAf;AACH,KAFM,MAEA;AACHA,YAAM,MAAKpb,MAAL,GAAgB/J,GAAhB,CAAN,GAAgCyjB,GAAG,CAACzjB,GAAD,CAAH,CAASX,QAAT,EAAhC;AACH;AACJ;;AACD,SAAO8lB,MAAP;AACH;AAED,IAAIE,SAAS,GAAG,IAAIC,gDAAJ,EAAhB;AAEO,SAASC,WAAT,CAAqB9B,GAArB,EAA4C;AAE/C,MAAIA,GAAG,KAAK,IAAR,IAAgBA,GAAG,KAAKljB,SAAxB,IAAsC,OAAOkjB,GAAP,KAAe,QAAf,IAA2B,OAAOA,GAAP,KAAe,UAApF,EAAiG;AAC7F,UAAM,IAAIpiB,KAAJ,kBAAN;AACH;;AAED,MAAIwH,GAAG,GAAGwc,SAAS,CAAClV,GAAV,CAAcsT,GAAd,CAAV;;AAEA,MAAI,CAAC5a,GAAL,EAAU;AACNA,OAAG,GAAO,OAAO4a,GAAd,SAAuB3F,QAAQ,EAAlC;AACAuH,aAAS,CAACR,GAAV,CAAcpB,GAAd,EAAmB5a,GAAnB;AACH;;AAED,SAAOA,GAAP;AACH;AAWM,SAAS2c,KAAT,CAAeC,OAAf,EAA0CnC,MAA1C,EAA2DoC,KAA3D,EAAkG;AAAA,MAAvCA,KAAuC;AAAvCA,SAAuC,GAAtB,CAAsB;AAAA;;AAErG,MAAI,OAAOD,OAAP,KAAmB,QAAvB,EAAiC;AAC7B;AACAA,WAAO,GAAG,IAAIE,MAAJ,CAAWF,OAAX,CAAV;AACH;;AAED,MAAIrlB,MAAM,GAAGkjB,MAAM,CAAC5Q,KAAP,CAAagT,KAAb,EAAoBzkB,KAApB,CAA0BwkB,OAA1B,CAAb;;AAEA,MAAI,CAACrlB,MAAL,EAAa;AACT;AACH,GAXoG,CAarG;;;AACA,MAAIwlB,KAAc,GAAGxlB,MAAM,CAACwlB,KAA5B;AACA,MAAI3kB,KAAK,GAAGb,MAAM,CAAC,CAAD,CAAlB;AAEA,SAAO;AACHgB,QAAI,EAAIH,KADL;AAEH4kB,UAAM,EAAEzlB,MAAM,CAACsS,KAAP,CAAa,CAAb,CAFL;AAGHgT,SAAK,EAAGA,KAAK,GAAGE,KAHb;AAIHE,OAAG,EAAKJ,KAAK,GAAGE,KAAR,GAAgB3kB,KAAK,CAAC0B,MAJ3B;AAKHA,UAAM,EAAE1B,KAAK,CAAC0B,MALX;AAOHrD,WAPG,mBAOK8B,IAPL,EAO6B;AAE5B,UAAI,CAACH,KAAL,EAAY;AACR,eAAO,EAAP;AACH;;AAED,kBAAWA,KAAK,CAACyR,KAAN,CAAY,CAAZ,EAAegT,KAAK,GAAGE,KAAvB,CAAX,GAA6CxkB,IAA7C,GAAsDH,KAAK,CAACyR,KAAN,CAAYkT,KAAK,GAAG3kB,KAAK,CAAC0B,MAA1B,CAAtD;AACH;AAdE,GAAP;AAgBH;AAEM,SAASojB,QAAT,CAAkBN,OAAlB,EAA6CnC,MAA7C,EAAuF;AAE1F,MAAI0C,OAAO,GAAG,EAAd;AACA,MAAIN,KAAK,GAAG,CAAZ,CAH0F,CAK1F;;AACA,SAAO,IAAP,EAAa;AACT,QAAIzkB,KAAK,GAAGukB,KAAK,CAACC,OAAD,EAAUnC,MAAV,EAAkBoC,KAAlB,CAAjB;;AAEA,QAAI,CAACzkB,KAAL,EAAY;AACR;AACH;;AAED+kB,WAAO,CAACzjB,IAAR,CAAatB,KAAb;AACAykB,SAAK,GAAGzkB,KAAK,CAAC6kB,GAAd;AACH;;AAED,SAAOE,OAAP;AACH;AAEM,SAASzgB,KAAT,CAAe6d,GAAf,EAA6B6C,MAA7B,EAAuD;AAE1D,MAAIC,UAAU,GAAG,CAAjB;AACA,MAAIC,SAAS,GAAG,CAAhB,CAH0D,CAK1D;;AACA,SAAO,IAAP,EAAa;AACT,QAAIP,KAAK,GAAGxC,GAAG,CAAC9gB,OAAJ,CAAY2jB,MAAZ,EAAoBC,UAApB,CAAZ;;AAEA,QAAIN,KAAK,KAAK,CAAC,CAAf,EAAkB;AACd;AACH;;AAEDM,cAAU,GAAGN,KAAb;AACAO,aAAS,IAAI,CAAb;AACH;;AAED,SAAOA,SAAP;AACH;AAEM,SAASzZ,SAAT,CAAmBhL,IAAnB,EAA0C;AAC7C,MAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;AAC1B,WAAOA,IAAP;AACH;;AAED,MAAIA,IAAI,IAAI,OAAOA,IAAI,CAACrC,QAAZ,KAAyB,UAArC,EAAiD;AAC7C,WAAOqC,IAAI,CAACrC,QAAL,EAAP;AACH;;AAED,SAAOQ,MAAM,CAACuE,SAAP,CAAiB/E,QAAjB,CAA0B0C,IAA1B,CAA+BL,IAA/B,CAAP;AACH;AAEM,SAAS0kB,cAAT,CAAwBnkB,GAAxB,EAA8C;AACjD,MAAIA,GAAJ,EAAS;AACL;AADK,QAEC8B,KAFD,GAEoB9B,GAFpB,CAEC8B,KAFD;AAAA,QAEQ+I,OAFR,GAEoB7K,GAFpB,CAEQ6K,OAFR;;AAIL,QAAI,OAAO/I,KAAP,KAAiB,QAArB,EAA+B;AAC3B,aAAOA,KAAP;AACH;;AAED,QAAI,OAAO+I,OAAP,KAAmB,QAAvB,EAAiC;AAC7B,aAAOA,OAAP;AACH;AACJ;;AAED,SAAOJ,SAAS,CAACzK,GAAD,CAAhB;AACH;AASM,SAASokB,YAAT,GAA2C;AAE9C,MAAIC,SAAS,GAAG,EAAhB;AACA,MAAIziB,QAAQ,GAAG,EAAf;AAEA,SAAO;AAEH+C,MAFG,cAEA2f,SAFA,EAEoB1jB,OAFpB,EAEyD;AAExD,UAAI2jB,WAAW,GAAG3iB,QAAQ,CAAC0iB,SAAD,CAAR,GAAsB1iB,QAAQ,CAAC0iB,SAAD,CAAR,IAAuB,EAA/D;AAEAC,iBAAW,CAACjkB,IAAZ,CAAiBM,OAAjB;AAEA,UAAI4jB,SAAS,GAAG,KAAhB;AAEA,aAAO;AACH3jB,cADG,oBACM;AACL,cAAI,CAAC2jB,SAAL,EAAgB;AACZA,qBAAS,GAAG,IAAZ;AACAD,uBAAW,CAACzjB,MAAZ,CAAmByjB,WAAW,CAAClkB,OAAZ,CAAoBO,OAApB,CAAnB,EAAiD,CAAjD;AACH;AAEJ;AAPE,OAAP;AASH,KAnBE;AAqBH6E,QArBG,gBAqBE6e,SArBF,EAqBsB1jB,OArBtB,EAqB2D;AAE1D,UAAI6jB,QAAQ,GAAG,KAAK9f,EAAL,CAAQ2f,SAAR,EAAmB,YAAM;AACpCG,gBAAQ,CAAC5jB,MAAT;AACAD,eAAO;AACV,OAHc,CAAf;AAKA,aAAO6jB,QAAP;AACH,KA7BE;AA+BHC,WA/BG,mBA+BKJ,SA/BL,EA+ByB;AAExB,UAAIC,WAAW,GAAG3iB,QAAQ,CAAC0iB,SAAD,CAA1B;;AAEA,UAAIC,WAAJ,EAAiB;AAAA,gCACOA,WADP,gBACoB;AAA5B,cAAI3jB,QAAO,GAAI2jB,WAAJ,KAAX;;AACD3jB,kBAAO;AACV;AACJ;AACJ,KAxCE;AA0CH+jB,eA1CG,uBA0CSL,SA1CT,EA0C6B;AAE5B,UAAID,SAAS,CAACC,SAAD,CAAb,EAA0B;AACtB;AACH;;AAEDD,eAAS,CAACC,SAAD,CAAT,GAAuB,IAAvB;AACA,WAAKI,OAAL,CAAaJ,SAAb;AACH;AAlDE,GAAP;AAoDH,C;;AC1iBD;AAGA;;;;;;AAMO,SAAS7f,IAAT,GAAgB,CAEtB,CAFM,CACH;;AAIJ;;;;;;AAMO,SAASgB,IAAT,CAA4B9B,MAA5B,EAA4F;AAE/F,MAAIihB,MAAM,GAAG,KAAb;AACA,MAAIzmB,MAAJ,CAH+F,CAK/F;;AACA,SAAO,SAAS0mB,WAAT,GAA6C;AAAA,sCAArBhhB,IAAqB;AAArBA,UAAqB;AAAA;;AAChD,QAAI+gB,MAAJ,EAAY;AACR,aAAOzmB,MAAP;AACH;;AAEDymB,UAAM,GAAG,IAAT;AACAzmB,UAAM,GAAGwF,MAAM,CAACG,KAAP,CAAa,IAAb,EAAmBoB,SAAnB,CAAT;AACA,WAAO/G,MAAP;AACH,GARD;AASH;AAGD;;;;;;AAMO,SAASoS,OAAT,CAA+B5M,MAA/B,EAA+F;AAElG,MAAIJ,OAAO,GAAG,EAAd,CAFkG,CAIlG;;AACA,SAAO,SAASuhB,cAAT,GAAgD;AAAA,uCAArBjhB,IAAqB;AAArBA,UAAqB;AAAA;;AAEnD,QAAIkhB,QAAJ;;AAEA,QAAI;AACAA,cAAQ,GAAGva,IAAI,CAACC,SAAL,CAAelM,KAAK,CAAC4D,SAAN,CAAgBsO,KAAhB,CAAsB3Q,IAAtB,CAA2BoF,SAA3B,CAAf,EAAsD,UAACnH,GAAD,EAAMyW,GAAN,EAAc;AAE3E,YAAI,OAAOA,GAAP,KAAe,UAAnB,EAA+B;AAC3B,mCAAwB8O,WAAW,CAAC9O,GAAD,CAAnC;AACH;;AAED,eAAOA,GAAP;AACH,OAPU,CAAX;AASH,KAVD,CAUE,OAAOxU,GAAP,EAAY;AACV,YAAM,IAAIZ,KAAJ,CAAU,0DAAV,CAAN;AACH;;AAED,QAAI,CAACmE,OAAO,CAACqG,cAAR,CAAuBmb,QAAvB,CAAL,EAAuC;AACnCxhB,aAAO,CAACwhB,QAAD,CAAP,GAAoBphB,MAAM,CAACG,KAAP,CAAa,IAAb,EAAmBoB,SAAnB,CAApB;AACH;;AAED,WAAO3B,OAAO,CAACwhB,QAAD,CAAd;AACH,GAvBD;AAwBH;AAEM,SAASxJ,QAAT,CAAqB5X,MAArB,EAA6DX,IAA7D,EAAqH;AAAA,MAAxDA,IAAwD;AAAxDA,QAAwD,GAAxC,GAAwC;AAAA;;AAExH,MAAID,OAAJ;AAEA,SAAO,SAASiiB,eAAT,GAA2B;AAAA;AAAA;;AAC9B/hB,gBAAY,CAACF,OAAD,CAAZ;AAEAA,WAAO,GAAGxC,UAAU,CAAC,YAAM;AACvB,aAAOoD,MAAM,CAACG,KAAP,CAAa,KAAb,EAAmBoB,UAAnB,CAAP;AACH,KAFmB,EAEjBlC,IAFiB,CAApB;AAGH,GAND;AAOH;AAEM,SAASiiB,kBAAT,CAAuDzD,GAAvD,EAAoE;AACvE,SAAOW,aAAa,CAACX,GAAD,EAAM;AACtB,gBAAY,qBAAM;AACd,aAAO;AACH0D,gBAAQ,EAAE;AADP,OAAP;AAGH;AALqB,GAAN,CAApB;AAOH;AAEM,SAASC,oBAAT,CAAyD3D,GAAzD,EAAkE5gB,OAAlE,EAA0F;AAC7F,SAAOuhB,aAAa,CAACX,GAAD,EAAM;AACtB,cAAU,gBAACtiB,KAAD,EAAQnB,GAAR,EAAaskB,OAAb,EAAyB;AAC/B,UAAInjB,KAAK,IAAIA,KAAK,CAACgmB,QAAN,KAAmB,cAAhC,EAAgD;AAC5C,eAAO,SAASE,2BAAT,GAA+C;AAClD,iBAAOxkB,OAAO,CAAC;AAAE7C,eAAG,EAAHA,GAAF;AAAOskB,mBAAO,EAAPA,OAAP;AAAgBgD,gBAAI,EAAE,IAAtB;AAA4BxhB,gBAAI,EAAEqB;AAAlC,WAAD,CAAd;AACH,SAFD;AAGH;AACJ;AAPqB,GAAN,CAApB;AASH,C;;;;AC7GD;AAEA;AACA;AACA;AAEA;AAGA;AACA;AAEO,SAASogB,WAAT,CAAqBC,SAArB,EAA8ClnB,KAA9C,EAA0E;AAC7EknB,WAAS,CAACD,WAAV,CAAsBjnB,KAAtB;AACH;;AAED,SAASmnB,SAAT,CAAmBC,OAAnB,EAA8C;AAE1C,MAAIA,OAAO,YAAY9lB,MAAM,CAAC+lB,OAA9B,EAAuC;AACnC,WAAO,IAAP;AACH;;AAED,MAAID,OAAO,KAAK,IAAZ,IAAoB,OAAOA,OAAP,KAAmB,QAAvC,IAAmDA,OAAO,CAACE,QAAR,KAAqB,CAAxE,IAA6E,OAAOF,OAAO,CAACG,KAAf,KAAyB,QAAtG,IAAkH,OAAOH,OAAO,CAACI,aAAf,KAAiC,QAAvJ,EAAiK;AAC7J,WAAO,IAAP;AACH;;AAED,SAAO,KAAP;AACH;;AAEM,SAASC,gBAAT,CAA0BC,EAA1B,EAA4CC,QAA5C,EAA2F;AAC9F,SAAOznB,KAAK,CAAC4D,SAAN,CAAgBsO,KAAhB,CAAsB3Q,IAAtB,CAA2BimB,EAAE,CAACD,gBAAH,CAAoBE,QAApB,CAA3B,CAAP;AACH;AAED;;;;;;;;;AASO,SAASC,cAAT,CAAwBC,EAAxB,EAA4D;AAE/D,MAAIV,SAAS,CAACU,EAAD,CAAb,EAAmB;AACf;AACA,WAAOA,EAAP;AACH;;AAED,MAAI,OAAOA,EAAP,KAAc,QAAlB,EAA4B;AACxB,QAAIT,OAAO,GAAG/U,QAAQ,CAACyV,cAAT,CAAwBD,EAAxB,CAAd;;AAEA,QAAIT,OAAJ,EAAa;AACT,aAAOA,OAAP;AACH;;AAED,QAAI/U,QAAQ,CAAC0V,aAAb,EAA4B;AACxBX,aAAO,GAAG/U,QAAQ,CAAC0V,aAAT,CAAuBF,EAAvB,CAAV;AACH;;AAED,QAAIT,OAAJ,EAAa;AACT,aAAOA,OAAP;AACH;AACJ;AACJ;AAEM,SAASY,UAAT,CAAoBH,EAApB,EAAuD;AAE1D,MAAIT,OAAO,GAAGQ,cAAc,CAACC,EAAD,CAA5B;;AAEA,MAAIT,OAAJ,EAAa;AACT,WAAOA,OAAP;AACH;;AAED,QAAM,IAAIrmB,KAAJ,4BAAoCqL,SAAS,CAACyb,EAAD,CAA7C,CAAN;AACH;AAGM,IAAII,aAAa,GAAG,IAAI/kB,yCAAJ,CAAiB,UAAAL,OAAO,EAAI;AAEnD,MAAIvB,MAAM,CAAC+Q,QAAP,CAAgB0K,UAAhB,KAA+B,UAAnC,EAA+C;AAC3C,WAAOla,OAAO,CAACvB,MAAM,CAAC+Q,QAAR,CAAd;AACH;;AAED,MAAI4K,QAAQ,GAAG6E,WAAW,CAAC,YAAM;AAC7B,QAAIxgB,MAAM,CAAC+Q,QAAP,CAAgB0K,UAAhB,KAA+B,UAAnC,EAA+C;AAC3CmL,mBAAa,CAACjL,QAAD,CAAb;AACA,aAAOpa,OAAO,CAACvB,MAAM,CAAC+Q,QAAR,CAAd;AACH;AACJ,GALyB,EAKvB,EALuB,CAA1B;AAMH,CAZ0B,CAApB;AAcA,SAAS8V,eAAT,GAAqC;AACxC,SAAO7mB,MAAM,CAAC+Q,QAAP,CAAgB0K,UAAhB,KAA+B,UAAtC;AACH;AAEM,SAASqL,YAAT,CAAsBP,EAAtB,EAA8E;AACjF,SAAO,IAAI3kB,yCAAJ,CAAiB,UAACL,OAAD,EAAUe,MAAV,EAAqB;AAEzC,QAAI1E,IAAI,GAAGkN,SAAS,CAACyb,EAAD,CAApB;AACA,QAAIH,EAAE,GAAGE,cAAc,CAACC,EAAD,CAAvB;;AAEA,QAAIH,EAAJ,EAAQ;AACJ,aAAO7kB,OAAO,CAAC6kB,EAAD,CAAd;AACH;;AAED,QAAIS,eAAe,EAAnB,EAAuB;AACnB,aAAOvkB,MAAM,CAAC,IAAI7C,KAAJ,oCAA4C7B,IAA5C,qBAAD,CAAb;AACH;;AAED,QAAI+d,QAAQ,GAAG6E,WAAW,CAAC,YAAM;AAE7B4F,QAAE,GAAGE,cAAc,CAACC,EAAD,CAAnB;;AAEA,UAAIH,EAAJ,EAAQ;AACJQ,qBAAa,CAACjL,QAAD,CAAb;AACA,eAAOpa,OAAO,CAAC6kB,EAAD,CAAd;AACH;;AAED,UAAIS,eAAe,EAAnB,EAAuB;AACnBD,qBAAa,CAACjL,QAAD,CAAb;AACA,eAAOrZ,MAAM,CAAC,IAAI7C,KAAJ,oCAA4C7B,IAA5C,qBAAD,CAAb;AACH;AACJ,KAbyB,EAavB,EAbuB,CAA1B;AAcH,GA3BM,CAAP;AA4BH;AAGD;;;;;;AAMO,SAASmpB,KAAT,CAAena,GAAf,EAA6B4B,OAA7B,EAAuF;AAE1F;AACA,MAAIwY,MAAM,GAAG/oB,MAAM,CAACC,IAAP,CAAYsQ,OAAZ,EAAqBnQ,GAArB,CAAyB,UAACD,GAAD,EAAS;AAC3C,QAAIoQ,OAAO,CAACpQ,GAAD,CAAX,EAAkB;AACd,aAAWA,GAAX,SAAoB0M,SAAS,CAAC0D,OAAO,CAACpQ,GAAD,CAAR,CAA7B;AACH;AACJ,GAJY,EAIVD,MAJU,CAIHqT,OAJG,EAIMlT,IAJN,CAIW,GAJX,CAAb;AAMA,MAAIiG,GAAJ;;AAEA,MAAI;AACAA,OAAG,GAAGvE,MAAM,CAACkO,IAAP,CAAYtB,GAAZ,EAAiB4B,OAAO,CAAC5Q,IAAzB,EAA+BopB,MAA/B,EAAuC,IAAvC,CAAN;AACH,GAFD,CAEE,OAAO3mB,GAAP,EAAY;AACV,UAAM,IAAI4mB,+BAAJ,mCAAmD5mB,GAAG,CAAC8B,KAAJ,IAAa9B,GAAG,CAAC6K,OAApE,EAAN;AACH;;AAED,MAAI7F,qCAAc,CAACd,GAAD,CAAlB,EAAyB;AACrB,QAAIlE,GAAG,GAAG,IAAI4mB,+BAAJ,uCAAV;AACA,UAAM5mB,GAAN;AACH;;AAED,SAAOkE,GAAP;AACH;AAGM,SAAS2iB,aAAT,CAAuB3iB,GAAvB,EAAmD/G,IAAnD,EAAkE;AACrE,MAAI;AACA+G,OAAG,CAACwM,QAAJ,CAAa7C,IAAb;AACA3J,OAAG,CAACwM,QAAJ,CAAaoW,KAAb,CAAmB3pB,IAAnB;AACA+G,OAAG,CAACwM,QAAJ,CAAaqW,KAAb;AACH,GAJD,CAIE,OAAO/mB,GAAP,EAAY;AACV,QAAI;AACAkE,SAAG,CAACoB,QAAJ,oDAA+DkF,IAAI,CAACC,SAAL,CAAetN,IAAf,CAA/D;AACH,KAFD,CAEE,OAAO6pB,IAAP,EAAa,CACX;AACH;AACJ;AACJ;AAEM,SAASC,oBAAT,CAA8B/iB,GAA9B,EAA0D6hB,EAA1D,EAA4E;AAE/E,MAAImB,GAAG,GAAGnB,EAAE,CAACoB,OAAH,CAAW9a,WAAX,EAAV;;AAEA,MAAI6a,GAAG,KAAK,MAAZ,EAAoB;AAChB,UAAM,IAAI9nB,KAAJ,uCAA+C8nB,GAA/C,CAAN;AACH;;AAED,MAAIE,eAAe,GAAGljB,GAAG,CAACwM,QAAJ,CAAa0W,eAAnC;;AAEA,SAAOA,eAAe,CAAC3pB,QAAhB,IAA4B2pB,eAAe,CAAC3pB,QAAhB,CAAyBiD,MAA5D,EAAoE;AAChE0mB,mBAAe,CAACC,WAAhB,CAA4BD,eAAe,CAAC3pB,QAAhB,CAAyB,CAAzB,CAA5B;AACH;;AAED,SAAOsoB,EAAE,CAACtoB,QAAH,CAAYiD,MAAnB,EAA2B;AACvB0mB,mBAAe,CAAC9B,WAAhB,CAA4BS,EAAE,CAACtoB,QAAH,CAAY,CAAZ,CAA5B;AACH;AACJ;AAEM,SAAS6pB,QAAT,CAAkBvB,EAAlB,EAAoCwB,SAApC,EAAwDC,GAAxD,EAA0F;AAAA,MAAlCA,GAAkC;AAAlCA,OAAkC,GAAjB7nB,MAAM,CAAC+Q,QAAU;AAAA;;AAC7F;AACA,MAAIqV,EAAE,CAAC0B,UAAP,EAAmB;AACf;AACA1B,MAAE,CAAC0B,UAAH,CAAcC,OAAd,GAAwBH,SAAxB;AACH,GAHD,MAGO;AACHxB,MAAE,CAACT,WAAH,CAAekC,GAAG,CAACG,cAAJ,CAAmBJ,SAAnB,CAAf;AACH;AACJ;AAED;;;;;;AAcO,SAASK,aAAT,CAAuBV,GAAvB,EAA6C/Y,OAA7C,EAAgFoX,SAAhF,EAAwH;AAAA,MAAjG2B,GAAiG;AAAjGA,OAAiG,GAAlF,KAAkF;AAAA;;AAAA,MAA3E/Y,OAA2E;AAA3EA,WAA2E,GAA5C,EAA4C;AAAA;;AAE3H+Y,KAAG,GAAGA,GAAG,CAAC7a,WAAJ,EAAN;AACA,MAAIoZ,OAAO,GAAG/U,QAAQ,CAACkX,aAAT,CAAuBV,GAAvB,CAAd;;AAEA,MAAI/Y,OAAO,CAACyX,KAAZ,EAAmB;AACfrL,UAAM,CAACkL,OAAO,CAACG,KAAT,EAAgBzX,OAAO,CAACyX,KAAxB,CAAN;AACH;;AAED,MAAIzX,OAAO,CAAC0Z,KAAZ,EAAmB;AACfpC,WAAO,CAACqC,SAAR,GAAoB3Z,OAAO,CAAC0Z,KAAR,CAAc5pB,IAAd,CAAmB,GAAnB,CAApB;AACH;;AAED,MAAIkQ,OAAO,CAAC4Z,UAAZ,EAAwB;AAAA,sCACJnqB,MAAM,CAACC,IAAP,CAAYsQ,OAAO,CAAC4Z,UAApB,CADI,qCAC6B;AAA5C,UAAIhqB,GAAG,qBAAP;AACD0nB,aAAO,CAACuC,YAAR,CAAqBjqB,GAArB,EAA0BoQ,OAAO,CAAC4Z,UAAR,CAAmBhqB,GAAnB,CAA1B;AACH;AACJ;;AAED,MAAIoQ,OAAO,CAACsZ,UAAZ,EAAwB;AACpBH,YAAQ,CAAC7B,OAAD,EAAUtX,OAAO,CAACsZ,UAAlB,CAAR;AACH;;AAED,MAAIlC,SAAJ,EAAe;AACXD,eAAW,CAACC,SAAD,EAAYE,OAAZ,CAAX;AACH;;AAED,MAAItX,OAAO,CAAChR,IAAZ,EAAkB;AACd,QAAI+pB,GAAG,KAAK,QAAZ,EAAsB;AAClB;AACA,UAAI,CAAC3B,SAAD,IAAc,CAACE,OAAO,CAACwC,aAA3B,EAA0C;AACtC,cAAM,IAAI7oB,KAAJ,8EAAN;AACH,OAJiB,CAMlB;;;AACAynB,mBAAa,CAACpB,OAAO,CAACwC,aAAT,EAAwB9Z,OAAO,CAAChR,IAAhC,CAAb;AAEH,KATD,MASO;AACHsoB,aAAO,CAACvnB,SAAR,GAAoBiQ,OAAO,CAAChR,IAA5B;AACH;AACJ;;AAED,SAAOsoB,OAAP;AACH;AAED,IAAIyC,sBAAoF,GAAG,IAAI7E,gDAAJ,EAA3F;AAEO,SAAS8E,cAAT,CAAwBC,KAAxB,EAAqF;AAExF,MAAIF,sBAAsB,CAACG,GAAvB,CAA2BD,KAA3B,CAAJ,EAAuC;AACnC,QAAIhoB,QAAO,GAAG8nB,sBAAsB,CAACha,GAAvB,CAA2Bka,KAA3B,CAAd;;AACA,QAAIhoB,QAAJ,EAAa;AACT,aAAOA,QAAP;AACH;AACJ;;AAED,MAAIA,OAAO,GAAG,IAAImB,yCAAJ,CAAiB,UAACL,OAAD,EAAUe,MAAV,EAAqB;AAChDmmB,SAAK,CAACpb,gBAAN,CAAuB,MAAvB,EAA+B,YAAM;AACjCsb,4CAAe,CAACF,KAAD,CAAf;AACAlnB,aAAO,CAACknB,KAAD,CAAP;AACH,KAHD;AAKAA,SAAK,CAACpb,gBAAN,CAAuB,OAAvB,EAAgC,UAAChN,GAAD,EAAiB;AAC7C,UAAIooB,KAAK,CAACH,aAAV,EAAyB;AACrB/mB,eAAO,CAACknB,KAAD,CAAP;AACH,OAFD,MAEO;AACHnmB,cAAM,CAACjC,GAAD,CAAN;AACH;AACJ,KAND;AAOH,GAba,CAAd;AAeAkoB,wBAAsB,CAACtF,GAAvB,CAA2BwF,KAA3B,EAAkChoB,OAAlC;AAEA,SAAOA,OAAP;AACH;AAEM,SAASmoB,gBAAT,CAA0BH,KAA1B,EAAuF;AAE1F,MAAIA,KAAK,CAACH,aAAV,EAAyB;AACrB,WAAO1mB,yCAAY,CAACL,OAAb,CAAqBknB,KAAK,CAACH,aAA3B,CAAP;AACH;;AAED,SAAOE,cAAc,CAACC,KAAD,CAAd,CAAsBroB,IAAtB,CAA2B,UAAAyoB,WAAW,EAAI;AAE7C,QAAI,CAACA,WAAW,CAACP,aAAjB,EAAgC;AAC5B,YAAM,IAAI7oB,KAAJ,mCAAN;AACH;;AAED,WAAOopB,WAAW,CAACP,aAAnB;AACH,GAPM,CAAP;AAQH;AAGD;;;;;;AAeO,SAASQ,MAAT,CAAgBta,OAAhB,EAAyDoX,SAAzD,EAAsG;AAAA,MAAtFpX,OAAsF;AAAtFA,WAAsF,GAAjD,EAAiD;AAAA;;AAEzG,MAAI4X,EAAE,GAAGM,UAAU,CAACd,SAAD,CAAnB;AAEA,MAAIwC,UAAU,GAAG5Z,OAAO,CAAC4Z,UAAR,IAAsB,EAAvC;AACA,MAAInC,KAAK,GAAGzX,OAAO,CAACyX,KAAR,IAAiB,EAA7B;AAEA,MAAIwC,KAAK,GAAGR,aAAa,CAAC,QAAD,EAAW;AAChCG,cAAU,EAAE;AACRW,iBAAW,EAAQ,GADb;AAENC,uBAAiB,EAAE;AAFb,OAGHZ,UAHG,CADsB;AAMhCnC,SAAK,EAAE;AACHgD,qBAAe,EAAE;AADhB,OAEEhD,KAFF,CAN2B;AAUhCzoB,QAAI,EAAGgR,OAAO,CAAChR,IAViB;AAWhC0qB,SAAK,EAAE1Z,OAAO,CAAC0Z;AAXiB,GAAX,CAAzB,CAPyG,CAqBzG;;AACAM,gBAAc,CAACC,KAAD,CAAd;AAEArC,IAAE,CAACT,WAAH,CAAe8C,KAAf;;AAEA,MAAIja,OAAO,CAAC5B,GAAR,IAAe5M,MAAM,CAACgK,SAAP,CAAiBZ,SAAjB,CAA2B/J,KAA3B,CAAiC,YAAjC,CAAnB,EAAmE;AAC/DopB,SAAK,CAACJ,YAAN,CAAmB,KAAnB,EAA0B7Z,OAAO,CAAC5B,GAAR,IAAe,aAAzC;AACH,GA5BwG,CA8BzG;;;AACA,SAAO6b,KAAP;AACH;AAED;;;;;;AAMO,SAASpb,gBAAT,CAA0BwU,GAA1B,EAA6CjE,KAA7C,EAA6D3c,OAA7D,EAAiH;AACpH4gB,KAAG,CAACxU,gBAAJ,CAAqBuQ,KAArB,EAA4B3c,OAA5B;AACA,SAAO;AACHC,UADG,oBACM;AACL2gB,SAAG,CAACqH,mBAAJ,CAAwBtL,KAAxB,EAA+B3c,OAA/B;AACH;AAHE,GAAP;AAKH;AAED;;;;;;AAMO,SAASkoB,iBAAT,CAA2B3H,GAA3B,EAAkD;AAErD,MAAI,CAACA,GAAL,EAAU;AACN,WAAOA,GAAP;AACH;;AAED,MAAIA,GAAG,CAACniB,KAAJ,CAAU,qEAAV,CAAJ,EAAsF;AAClF,UAAM,IAAII,KAAJ,0CAAkD+hB,GAAlD,CAAN;AACH;;AAED,SAAOA,GAAP;AACH;AAEM,IAAI4H,UAAU,GAAGxY,OAAO,CAAC,UAACyY,WAAD,EAAoD;AAEhF,MAAIrC,MAAM,GAAG,EAAb;;AAEA,MAAI,CAACqC,WAAL,EAAkB;AACd,WAAOrC,MAAP;AACH;;AAED,MAAIqC,WAAW,CAAC3oB,OAAZ,CAAoB,GAApB,MAA6B,CAAC,CAAlC,EAAqC;AACjC,UAAM,IAAIjB,KAAJ,yCAAiD4pB,WAAjD,CAAN;AACH;;AAV+E,0CAY/DA,WAAW,CAAC9c,KAAZ,CAAkB,GAAlB,CAZ+D,2CAYvC;AAApC,QAAI+c,IAAI,2BAAR;AACDA,QAAI,GAAGA,IAAI,CAAC/c,KAAL,CAAW,GAAX,CAAP;;AAEA,QAAI+c,IAAI,CAAC,CAAD,CAAJ,IAAWA,IAAI,CAAC,CAAD,CAAnB,EAAwB;AACpBtC,YAAM,CAACuC,kBAAkB,CAACD,IAAI,CAAC,CAAD,CAAL,CAAnB,CAAN,GAAsCC,kBAAkB,CAACD,IAAI,CAAC,CAAD,CAAL,CAAxD;AACH;AACJ;;AAED,SAAOtC,MAAP;AACH,CArB8B,CAAxB;AAwBA,SAASzgB,aAAT,CAAuB3I,IAAvB,EAAgD;AACnD,SAAOwrB,UAAU,CAACppB,MAAM,CAAC2F,QAAP,CAAgB6jB,MAAhB,CAAuB1Y,KAAvB,CAA6B,CAA7B,CAAD,CAAV,CAA4ClT,IAA5C,CAAP;AACH;AAEM,SAAS6rB,WAAT,CAAqB5H,GAArB,EAAkE;AAAA,MAA7CA,GAA6C;AAA7CA,OAA6C,GAAb,EAAa;AAAA;;AAErE,SAAO5jB,MAAM,CAACC,IAAP,CAAY2jB,GAAZ,EAAiB1jB,MAAjB,CAAwB,UAAAC,GAAG,EAAI;AAClC,WAAO,OAAOyjB,GAAG,CAACzjB,GAAD,CAAV,KAAoB,QAA3B;AACH,GAFM,EAEJC,GAFI,CAEA,UAAAD,GAAG,EAAI;AACV,WAAWmjB,SAAS,CAACnjB,GAAD,CAApB,SAA+BmjB,SAAS,CAACM,GAAG,CAACzjB,GAAD,CAAJ,CAAxC;AACH,GAJM,EAIJE,IAJI,CAIC,GAJD,CAAP;AAKH;AAEM,SAASorB,WAAT,CAAqBC,aAArB,EAA6C9rB,KAA7C,EAA4F;AAAA,MAA/CA,KAA+C;AAA/CA,SAA+C,GAAb,EAAa;AAAA;;AAE/F,MAAI,CAACA,KAAD,IAAU,CAACI,MAAM,CAACC,IAAP,CAAYL,KAAZ,EAAmBkD,MAAlC,EAA0C;AACtC,WAAO4oB,aAAP;AACH;;AAED,SAAOF,WAAW,CAAC,2CACZL,UAAU,CAACO,aAAD,CADC,MAEX9rB,KAFW,EAAlB;AAIH;AAEM,SAAS+U,SAAT,CAAmBhG,GAAnB,EAAiC4B,OAAjC,EAAgI;AAAA,MAA/FA,OAA+F;AAA/FA,WAA+F,GAAb,EAAa;AAAA;;AAEnI,MAAIob,KAAK,GAAGpb,OAAO,CAACob,KAAR,IAAiB,EAA7B;AACA,MAAI9lB,IAAI,GAAG0K,OAAO,CAAC1K,IAAR,IAAgB,EAA3B;AAEA,MAAI+lB,WAAJ;AACA,MAAIF,aAAJ;AACA,MAAIG,YAAJ;;AAPmI,mBASlGld,GAAG,CAACL,KAAJ,CAAU,GAAV,CATkG;;AASjIsd,aATiI;AASpHC,cAToH;;AAAA,2BAUlGD,WAAW,CAACtd,KAAZ,CAAkB,GAAlB,CAVkG;;AAUjIsd,aAViI;AAUpHF,eAVoH;AAYnI,MAAIN,WAAW,GAAGK,WAAW,CAACC,aAAD,EAAgBC,KAAhB,CAA7B;AACA,MAAIG,UAAU,GAAIL,WAAW,CAACI,YAAD,EAAehmB,IAAf,CAA7B;;AAEA,MAAIulB,WAAJ,EAAiB;AACbQ,eAAW,GAAOA,WAAP,SAAwBR,WAAnC;AACH;;AAED,MAAIU,UAAJ,EAAgB;AACZF,eAAW,GAAOA,WAAP,SAAwBE,UAAnC;AACH;;AAED,SAAOF,WAAP;AACH;AAGM,SAASG,oBAAT,CAA8BlE,OAA9B,EAAwD1iB,OAAxD,EAAsG;AAAA,MAA9CA,OAA8C;AAA9CA,WAA8C,GAA3B,IAA2B;AAAA;;AACzG,SAAO,IAAIxB,yCAAJ,CAAiB,UAACL,OAAD,EAAUe,MAAV,EAAqB;AACzC,QAAI8jB,EAAE,GAAGM,UAAU,CAACZ,OAAD,CAAnB;AAEA,QAAIhC,KAAK,GAAGsC,EAAE,CAAC6D,qBAAH,EAAZ;AAEA,QAAItO,QAAJ;AACA,QAAIkD,KAAJ;AAEAlD,YAAQ,GAAG6E,WAAW,CAAC,YAAM;AACzB,UAAI0D,GAAG,GAAGkC,EAAE,CAAC6D,qBAAH,EAAV;;AAEA,UAAInG,KAAK,CAACoG,GAAN,KAAchG,GAAG,CAACgG,GAAlB,IAAyBpG,KAAK,CAACqG,MAAN,KAAiBjG,GAAG,CAACiG,MAA9C,IAAwDrG,KAAK,CAACsG,IAAN,KAAelG,GAAG,CAACkG,IAA3E,IAAmFtG,KAAK,CAACuG,KAAN,KAAgBnG,GAAG,CAACmG,KAAvG,IAAgHvG,KAAK,CAACwG,KAAN,KAAgBpG,GAAG,CAACoG,KAApI,IAA6IxG,KAAK,CAACyG,MAAN,KAAiBrG,GAAG,CAACqG,MAAtK,EAA8K;AAC1KjnB,oBAAY,CAACub,KAAD,CAAZ;AACA+H,qBAAa,CAACjL,QAAD,CAAb;AACA,eAAOpa,OAAO,EAAd;AACH;;AAEDuiB,WAAK,GAAGI,GAAR;AAEH,KAXqB,EAWnB,EAXmB,CAAtB;AAaArF,SAAK,GAAGje,UAAU,CAAC,YAAM;AACrBgmB,mBAAa,CAACjL,QAAD,CAAb;AACArZ,YAAM,CAAC,IAAI7C,KAAJ,4DAAoE2D,OAApE,QAAD,CAAN;AACH,KAHiB,EAGfA,OAHe,CAAlB;AAIH,GAzBM,CAAP;AA0BH;AAEM,SAASonB,oBAAT,CAA8BpE,EAA9B,EAAsF;AACzF,SAAO;AACHkE,SAAK,EAAGlE,EAAE,CAACqE,WADR;AAEHF,UAAM,EAAEnE,EAAE,CAACsE;AAFR,GAAP;AAIH;AAEM,SAASC,WAAT,CAAqBvE,EAArB,EAAuCwE,MAAvC,EAA8F;AACjG,SAAO,IAAIhpB,yCAAJ,CAAiB,UAAAL,OAAO,EAAI;AAAA,sCAEftD,MAAM,CAACC,IAAP,CAAY0sB,MAAZ,CAFe,qCAEM;AAAhC,UAAIxsB,GAAG,qBAAP;AACD;AACAgoB,QAAE,CAACH,KAAH,CAAS7nB,GAAT,IAAgBwsB,MAAM,CAACxsB,GAAD,CAAtB;AACH;;AAEDwC,cAAU,CAACW,OAAD,EAAU,CAAV,CAAV;AACH,GARM,CAAP;AASH;AAEM,SAASspB,WAAT,CAAqBzE,EAArB,EAAuC7mB,KAAvC,EAAyF;AAAA,MAAlDA,KAAkD;AAAlDA,SAAkD,GAAjC,MAAiC;AAAA;;AAAA,kBAEnD6mB,EAAE,CAACH,KAFgD;AAAA,MAEtF6E,QAFsF,aAEtFA,QAFsF;AAAA,MAE5EC,SAF4E,aAE5EA,SAF4E;AAAA,MAEjEC,SAFiE,aAEjEA,SAFiE;AAI5F5E,IAAE,CAACH,KAAH,CAAS6E,QAAT,GAAoB1E,EAAE,CAACH,KAAH,CAAS8E,SAAT,GAAqB3E,EAAE,CAACH,KAAH,CAAS+E,SAAT,GAAqBzrB,KAA9D;AAEA,SAAO;AACH0f,SADG,mBACK;AACJmH,QAAE,CAACH,KAAH,CAAS6E,QAAT,GAAoBA,QAApB;AACA1E,QAAE,CAACH,KAAH,CAAS8E,SAAT,GAAqBA,SAArB;AACA3E,QAAE,CAACH,KAAH,CAAS+E,SAAT,GAAqBA,SAArB;AACH;AALE,GAAP;AAOH;;AAED,SAASC,cAAT,CAAwBC,GAAxB,EAAmEC,GAAnE,QAAoO;AAAA,wBAApHb,KAAoH;AAAA,MAApHA,KAAoH,2BAA5G,IAA4G;AAAA,yBAAtGC,MAAsG;AAAA,MAAtGA,MAAsG,4BAA7F,IAA6F;AAAA,4BAAvFa,SAAuF;AAAA,MAAvFA,SAAuF,+BAA3E,CAA2E;;AAEhO,MAAId,KAAK,IAAIxb,IAAI,CAAC8P,GAAL,CAASsM,GAAG,CAACZ,KAAJ,GAAYa,GAAG,CAACb,KAAzB,IAAkCc,SAA/C,EAA0D;AACtD,WAAO,IAAP;AACH;;AAED,MAAIb,MAAM,IAAIzb,IAAI,CAAC8P,GAAL,CAASsM,GAAG,CAACX,MAAJ,GAAaY,GAAG,CAACZ,MAA1B,IAAoCa,SAAlD,EAA6D;AACzD,WAAO,IAAP;AACH;;AAED,SAAO,KAAP;AACH;;AAEM,SAASC,eAAT,CAAyBjF,EAAzB,SAAuQ;AAAA,0BAA1NkE,KAA0N;AAAA,MAA1NA,KAA0N,4BAAlN,IAAkN;AAAA,2BAA5MC,MAA4M;AAAA,MAA5MA,MAA4M,6BAAnM,IAAmM;AAAA,8BAA7La,SAA6L;AAAA,MAA7LA,SAA6L,gCAAjL,CAAiL;AAE1Q,MAAIE,iBAAiB,GAAGd,oBAAoB,CAACpE,EAAD,CAA5C;AAEA,SAAO;AACHmF,SADG,mBAC+E;AAC9E,UAAIC,aAAa,GAAGhB,oBAAoB,CAACpE,EAAD,CAAxC;AAEA,aAAO;AACHqF,eAAO,EAAKR,cAAc,CAACK,iBAAD,EAAoBE,aAApB,EAAmC;AAAElB,eAAK,EAALA,KAAF;AAASC,gBAAM,EAANA,MAAT;AAAiBa,mBAAS,EAATA;AAAjB,SAAnC,CADvB;AAEHM,kBAAU,EAAEF;AAFT,OAAP;AAIH,KARE;AAUHvM,SAVG,mBAUK;AACJqM,uBAAiB,GAAGd,oBAAoB,CAACpE,EAAD,CAAxC;AACH;AAZE,GAAP;AAcH;AAEM,SAASuF,kBAAT,CAA4BvF,EAA5B,SAA8O;AAAA,0BAA9LkE,KAA8L;AAAA,MAA9LA,KAA8L,4BAAtL,IAAsL;AAAA,2BAAhLC,MAAgL;AAAA,MAAhLA,MAAgL,6BAAvK,IAAuK;AAAA,0BAAjKnmB,KAAiK;AAAA,MAAjKA,KAAiK,4BAAzJ,EAAyJ;AAAA,8BAArJgnB,SAAqJ;AAAA,MAArJA,SAAqJ,gCAAzI,CAAyI;AAEjP,SAAO,IAAIxpB,yCAAJ,CAAiB,UAAAL,OAAO,EAAI;AAE/B,QAAIqqB,OAAO,GAAGP,eAAe,CAACjF,EAAD,EAAK;AAAEkE,WAAK,EAALA,KAAF;AAASC,YAAM,EAANA,MAAT;AAAiBa,eAAS,EAATA;AAAjB,KAAL,CAA7B;AAEA,QAAIzP,QAAJ;AAEA,QAAIE,QAAQ,GAAGD,QAAQ,CAAC,UAAC8P,UAAD,EAAgB;AACpC9E,mBAAa,CAACjL,QAAD,CAAb;AACA,aAAOpa,OAAO,CAACmqB,UAAD,CAAd;AACH,KAHsB,EAGpBtnB,KAAK,GAAG,CAHY,CAAvB;AAKAuX,YAAQ,GAAG6E,WAAW,CAAC,YAAM;AAAA,2BACKoL,OAAO,CAACL,KAAR,EADL;AAAA,UACnBE,OADmB,kBACnBA,OADmB;AAAA,UACVC,UADU,kBACVA,UADU;;AAEzB,UAAID,OAAJ,EAAa;AACTG,eAAO,CAAC3M,KAAR;AACA,eAAOpD,QAAQ,CAAC6P,UAAD,CAAf;AACH;AACJ,KANqB,EAMnBtnB,KANmB,CAAtB;;AAQA,aAASynB,cAAT,GAA0B;AAAA,4BACQD,OAAO,CAACL,KAAR,EADR;AAAA,UAChBE,OADgB,mBAChBA,OADgB;AAAA,UACPC,UADO,mBACPA,UADO;;AAEtB,UAAID,OAAJ,EAAa;AACTG,eAAO,CAAC3M,KAAR;AACAjf,cAAM,CAACkpB,mBAAP,CAA2B,QAA3B,EAAqC2C,cAArC;AACAhQ,gBAAQ,CAAC6P,UAAD,CAAR;AACH;AACJ;;AAED1rB,UAAM,CAACqN,gBAAP,CAAwB,QAAxB,EAAkCwe,cAAlC;AACH,GA7BM,CAAP;AA8BH;AAGM,SAASC,uBAAT,CAAiC1F,EAAjC,SAAsH;AAAA,MAAjEkE,KAAiE,SAAjEA,KAAiE;AAAA,MAA1DC,MAA0D,SAA1DA,MAA0D;AAEzH,MAAImB,UAAU,GAAGlB,oBAAoB,CAACpE,EAAD,CAArC;;AAEA,MAAIkE,KAAK,IAAIoB,UAAU,CAACpB,KAAX,KAAqBtqB,MAAM,CAAC+rB,UAAzC,EAAqD;AACjD,WAAO,KAAP;AACH;;AAED,MAAIxB,MAAM,IAAImB,UAAU,CAACnB,MAAX,KAAsBvqB,MAAM,CAACgsB,WAA3C,EAAwD;AACpD,WAAO,KAAP;AACH;;AAED,SAAO,IAAP;AACH;AAGM,SAASC,UAAT,CAAoBnG,OAApB,EAA2CoG,UAA3C,EAAuEjrB,OAAvE,EAA2H;AAE9HA,SAAO,GAAG6E,IAAI,CAAC7E,OAAD,CAAd;;AAF8H,0BAIxGirB,UAJwG,gBAI5F;AAA7B,QAAIvH,SAAS,GAAIuH,UAAJ,KAAb;AACDpG,WAAO,CAACzY,gBAAR,CAAyBsX,SAAzB,EAAoC1jB,OAApC;AACH;;AAED,SAAO;AACHC,UAAM,EAAE4E,IAAI,CAAC,YAAM;AAAA,gCACOomB,UADP,iBACmB;AAA7B,YAAIvH,UAAS,GAAIuH,UAAJ,MAAb;AACDpG,eAAO,CAACoD,mBAAR,CAA4BvE,UAA5B,EAAuC1jB,OAAvC;AACH;AACJ,KAJW;AADT,GAAP;AAOH;AAED,IAAMkrB,eAAe,GAAG,CAAE,QAAF,EAAY,KAAZ,EAAmB,IAAnB,EAAyB,GAAzB,CAAxB;AAEO,SAASC,YAAT,CAAsBtG,OAAtB,EAA6CloB,IAA7C,EAA4D2B,KAA5D,EAA4E;AAE/E;AACAumB,SAAO,CAACG,KAAR,CAAcroB,IAAd,IAAsB2B,KAAtB;AAEA,MAAI8sB,eAAe,GAAGpK,qBAAqB,CAACrkB,IAAD,CAA3C;;AAL+E,4BAO5DuuB,eAP4D,iBAO3C;AAA/B,QAAIhkB,MAAM,GAAIgkB,eAAJ,MAAV;AACD;AACArG,WAAO,CAACG,KAAR,MAAkB9d,MAAlB,GAA6BkkB,eAA7B,IAAmD9sB,KAAnD;AACH;AACJ;AAGD,IAAI+sB,OAAO,GAAGtsB,MAAM,CAACssB,OAArB;AAEA,IAAMC,cAAc,GAAGD,OAAO,CAACC,cAAR,IAA0BD,OAAO,CAACE,qBAAlC,IAA4DF,OAAO,CAACG,kBAApE,IACIH,OAAO,CAACI,gBADZ,IACgCJ,OAAO,CAACK,iBAD/D;;AAGA,SAASC,gBAAT,CAA0B9G,OAA1B,EAAiDloB,IAAjD,EAA0E;AAEtE,MAAIivB,WAAW,GAAG/G,OAAO,CAACI,aAAR,CAAsB4G,WAAxC;;AAEA,MAAI;AACA,SAAK,IAAIjqB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgqB,WAAW,CAAC9rB,MAAhC,EAAwC8B,CAAC,EAAzC,EAA6C;AAEzC;AACA,UAAIkqB,QAAQ,GAAGF,WAAW,CAAChqB,CAAD,CAAX,CAAekqB,QAA9B;;AAEA,UAAI,CAACA,QAAL,EAAe;AACX;AACH;;AAED,WAAK,IAAIjsB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGisB,QAAQ,CAAChsB,MAA7B,EAAqCD,CAAC,EAAtC,EAA0C;AAEtC,YAAIksB,OAAO,GAAGD,QAAQ,CAACjsB,CAAD,CAAtB;;AAEA,YAAI,CAACksB,OAAL,EAAc;AACV;AACH;;AAED,YAAIA,OAAO,CAAC1tB,IAAR,KAAiBitB,cAAjB,IAAmCS,OAAO,CAACpvB,IAAR,KAAiBA,IAAxD,EAA8D;AAC1D,iBAAO,IAAP;AACH;AACJ;AACJ;AACJ,GAvBD,CAuBE,OAAOyC,GAAP,EAAY;AAEV,WAAO,KAAP;AACH;;AAGD,SAAO,KAAP;AACH;;AAGD,IAAM4sB,sBAAsB,GAAG,CAAE,gBAAF,EAAoB,sBAApB,EAA4C,iBAA5C,EAA+D,kBAA/D,CAA/B;AACA,IAAMC,oBAAoB,GAAK,CAAE,cAAF,EAAkB,oBAAlB,EAAwC,eAAxC,EAAyD,gBAAzD,CAA/B;AAEO,SAASC,OAAT,CAAiBrH,OAAjB,EAA2CloB,IAA3C,EAA0DwvB,KAA1D,EAAsFhqB,OAAtF,EAAoI;AAAA,MAA9CA,OAA8C;AAA9CA,WAA8C,GAA3B,IAA2B;AAAA;;AACvI,SAAO,IAAIxB,yCAAJ,CAAiB,UAACL,OAAD,EAAUe,MAAV,EAAqB;AAEzC,QAAI8jB,EAAE,GAAGM,UAAU,CAACZ,OAAD,CAAnB;;AAEA,QAAI,CAACM,EAAD,IAAO,CAACwG,gBAAgB,CAACxG,EAAD,EAAKxoB,IAAL,CAA5B,EAAwC;AACpC,aAAO2D,OAAO,EAAd;AACH;;AAED,QAAI8rB,UAAU,GAAG,KAAjB;AAEA,QAAIC,YAAJ;AACA,QAAIC,UAAJ;AACA,QAAIC,UAAJ;AACA,QAAIC,QAAJ;;AAEA,aAASC,OAAT,GAAmB;AACftB,kBAAY,CAAChG,EAAD,EAAK,eAAL,EAAsB,EAAtB,CAAZ;AACA9iB,kBAAY,CAACgqB,YAAD,CAAZ;AACAhqB,kBAAY,CAACiqB,UAAD,CAAZ;AACAC,gBAAU,CAACtsB,MAAX;AACAusB,cAAQ,CAACvsB,MAAT;AACH;;AAEDssB,cAAU,GAAGvB,UAAU,CAAC7F,EAAD,EAAK6G,sBAAL,EAA6B,UAAArP,KAAK,EAAI;AAEzD;AACA,UAAIA,KAAK,CAACuF,MAAN,KAAiBiD,EAAjB,IAAuBxI,KAAK,CAAC+P,aAAN,KAAwB/vB,IAAnD,EAAyD;AACrD;AACH;;AAED0F,kBAAY,CAACgqB,YAAD,CAAZ;AAEA1P,WAAK,CAACgQ,eAAN;AAEAJ,gBAAU,CAACtsB,MAAX;AACAmsB,gBAAU,GAAG,IAAb;AAEAE,gBAAU,GAAG3sB,UAAU,CAAC,YAAM;AAC1B8sB,eAAO;AACPnsB,eAAO;AACV,OAHsB,EAGpB6B,OAHoB,CAAvB;AAIH,KAlBsB,CAAvB;AAoBAqqB,YAAQ,GAAGxB,UAAU,CAAC7F,EAAD,EAAK8G,oBAAL,EAA2B,UAAAtP,KAAK,EAAI;AAErD;AACA,UAAIA,KAAK,CAACuF,MAAN,KAAiBiD,EAAjB,IAAuBxI,KAAK,CAAC+P,aAAN,KAAwB/vB,IAAnD,EAAyD;AACrD;AACH;;AAED8vB,aAAO,GAP8C,CASrD;;AACA,UAAI,OAAO9P,KAAK,CAAC+P,aAAb,KAA+B,QAA/B,IAA2C/P,KAAK,CAAC+P,aAAN,KAAwB/vB,IAAvE,EAA6E;AACzE,eAAO0E,MAAM,oCAAmC1E,IAAnC,gBAAoDggB,KAAK,CAAC+P,aAA1D,CAAb;AACH;;AAED,aAAOpsB,OAAO,EAAd;AACH,KAfoB,CAArB;AAiBA6qB,gBAAY,CAAChG,EAAD,EAAK,eAAL,EAAsBxoB,IAAtB,CAAZ;AAEA0vB,gBAAY,GAAG1sB,UAAU,CAAC,YAAM;AAC5B,UAAI,CAACysB,UAAL,EAAiB;AACbK,eAAO;AACP,eAAOnsB,OAAO,EAAd;AACH;AACJ,KALwB,EAKtB,GALsB,CAAzB;;AAOA,QAAI6rB,KAAJ,EAAW;AACPA,WAAK,CAACM,OAAD,CAAL;AACH;AACJ,GAxEM,CAAP;AAyEH;AAED,IAAMG,KAAK,GAAG;AAEVC,SAAO,EAAE;AACLC,QAAI,EAAG,MADF;AAELC,SAAK,EAAE;AAFF,GAFC;AAOVC,YAAU,EAAE;AACRC,WAAO,EAAE,SADD;AAERC,UAAM,EAAG;AAFD,GAPF;AAYVC,WAAS,EAAE;AAZD,CAAd;AAeO,SAASC,kBAAT,CAA4BvI,OAA5B,EAAmD;AACtDA,SAAO,CAACG,KAAR,CAAcqI,WAAd,CAA0B,YAA1B,EAAwC,EAAxC;AACH;AAEM,SAASC,oBAAT,CAA8BzI,OAA9B,EAAqD;AACxDA,SAAO,CAACG,KAAR,CAAcqI,WAAd,CAA0B,YAA1B,EAAwCT,KAAK,CAACI,UAAN,CAAiBE,MAAzD,EAAiEN,KAAK,CAACO,SAAvE;AACH;AAGM,SAASI,WAAT,CAAqB1I,OAArB,EAA4C;AAC/CA,SAAO,CAACG,KAAR,CAAcqI,WAAd,CAA0B,SAA1B,EAAqC,EAArC;AACH;AAEM,SAASG,WAAT,CAAqB3I,OAArB,EAA4C;AAC/CA,SAAO,CAACG,KAAR,CAAcqI,WAAd,CAA0B,SAA1B,EAAqCT,KAAK,CAACC,OAAN,CAAcC,IAAnD,EAAyDF,KAAK,CAACO,SAA/D;AACH;AAEM,SAASM,cAAT,CAAwB5I,OAAxB,EAA+C;AAClD,MAAIA,OAAO,CAAC6I,UAAZ,EAAwB;AACpB7I,WAAO,CAAC6I,UAAR,CAAmBjH,WAAnB,CAA+B5B,OAA/B;AACH;AACJ;AAEM,SAAS8I,cAAT,CAAwB9I,OAAxB,EAA+CloB,IAA/C,EAA8DwvB,KAA9D,EAA+G;AAClH,MAAIyB,SAAS,GAAG1B,OAAO,CAACrH,OAAD,EAAUloB,IAAV,EAAgBwvB,KAAhB,CAAvB;AACAoB,aAAW,CAAC1I,OAAD,CAAX;AACA,SAAO+I,SAAP;AACH;AAEM,SAASC,cAAT,CAAwBhJ,OAAxB,EAA+CloB,IAA/C,EAA8DwvB,KAA9D,EAA+G;AAClH,SAAOD,OAAO,CAACrH,OAAD,EAAUloB,IAAV,EAAgBwvB,KAAhB,CAAP,CAA8BhtB,IAA9B,CAAmC,YAAM;AAC5CquB,eAAW,CAAC3I,OAAD,CAAX;AACH,GAFM,CAAP;AAGH;AAEM,SAASiJ,QAAT,CAAkBjJ,OAAlB,EAAyCloB,IAAzC,EAAwD;AAC3D,MAAIkoB,OAAO,CAACkJ,SAAZ,EAAuB;AACnBlJ,WAAO,CAACkJ,SAAR,CAAkBC,GAAlB,CAAsBrxB,IAAtB;AACH,GAFD,MAEO,IAAIkoB,OAAO,CAACqC,SAAR,CAAkB5b,KAAlB,CAAwB,KAAxB,EAA+B7L,OAA/B,CAAuC9C,IAAvC,MAAiD,CAAC,CAAtD,EAAyD;AAC5DkoB,WAAO,CAACqC,SAAR,UAA0BvqB,IAA1B;AACH;AACJ;AAEM,SAASsxB,WAAT,CAAqBpJ,OAArB,EAA4CloB,IAA5C,EAA2D;AAC9D,MAAIkoB,OAAO,CAACkJ,SAAZ,EAAuB;AACnBlJ,WAAO,CAACkJ,SAAR,CAAkBG,MAAlB,CAAyBvxB,IAAzB;AACH,GAFD,MAEO,IAAIkoB,OAAO,CAACqC,SAAR,CAAkB5b,KAAlB,CAAwB,KAAxB,EAA+B7L,OAA/B,CAAuC9C,IAAvC,MAAiD,CAAC,CAAtD,EAAyD;AAC5DkoB,WAAO,CAACqC,SAAR,GAAoBrC,OAAO,CAACqC,SAAR,CAAkBzqB,OAAlB,CAA0BE,IAA1B,EAAgC,EAAhC,CAApB;AACH;AACJ;AAEM,SAASwxB,mBAAT,GAAwC;AAC3C;AACA3kB,SAAO,CAACC,IAAR,sFAF2C,CAI3C;;AACA,MAAIqG,QAAQ,CAACM,aAAb,EAA4B;AACxB;AACA,WAAON,QAAQ,CAACM,aAAT,CAAuBH,GAAvB,CAA2B3E,KAA3B,CAAiC,GAAjC,EAAsCuE,KAAtC,CAA4C,CAA5C,EAA+C,CAAC,CAAhD,EAAmDxS,IAAnD,CAAwD,GAAxD,CAAP;AACH;;AAED,SAAO,GAAP;AACH;AAEM,SAAS+wB,cAAT,CAAwBvJ,OAAxB,EAA2D;AAE9D,MAAI,OAAOA,OAAP,KAAmB,QAAvB,EAAiC;AAC7B,WAAOA,OAAP;AACH;;AAED,MAAI,CAACA,OAAD,IAAY,CAACA,OAAO,CAAC0B,OAAzB,EAAkC;AAC9B,WAAO,WAAP;AACH;;AAED,MAAI5pB,IAAI,GAAGkoB,OAAO,CAAC0B,OAAR,CAAgB9a,WAAhB,EAAX;;AAEA,MAAIoZ,OAAO,CAACS,EAAZ,EAAgB;AACZ3oB,QAAI,UAASkoB,OAAO,CAACS,EAArB;AACH,GAFD,MAEO,IAAIT,OAAO,CAACqC,SAAZ,EAAuB;AAC1BvqB,QAAI,UAASkoB,OAAO,CAACqC,SAAR,CAAkB5b,KAAlB,CAAwB,GAAxB,EAA6BjO,IAA7B,CAAkC,GAAlC,CAAb;AACH;;AAED,SAAOV,IAAP;AACH;AAEM,SAAS0xB,eAAT,CAAyBlJ,EAAzB,EAAqD;AACxD,MAAI,CAACA,EAAD,IAAO,CAACA,EAAE,CAACuI,UAAf,EAA2B;AACvB,WAAO,IAAP;AACH;;AACD,SAAO,KAAP;AACH;AAEM,SAASY,oBAAT,CAA8BzJ,OAA9B,EAAqD7kB,OAArD,EAA6F;AAChGA,SAAO,GAAG6E,IAAI,CAAC7E,OAAD,CAAd;AAEA,MAAI0a,QAAJ;;AAEA,MAAI2T,eAAe,CAACxJ,OAAD,CAAnB,EAA8B;AAC1B7kB,WAAO;AACV,GAFD,MAEO;AACH0a,YAAQ,GAAGK,YAAY,CAAC,YAAM;AAC1B,UAAIsT,eAAe,CAACxJ,OAAD,CAAnB,EAA8B;AAC1BnK,gBAAQ,CAACza,MAAT;AACAD,eAAO;AACV;AACJ,KALsB,EAKpB,EALoB,CAAvB;AAMH;;AAED,SAAO;AACHC,UADG,oBACM;AACL,UAAIya,QAAJ,EAAc;AACVA,gBAAQ,CAACza,MAAT;AACH;AACJ;AALE,GAAP;AAOH;AAEM,SAASsuB,WAAT,CAAqB7hB,WAArB,EAA2Cf,GAA3C,EAAgF;AACnF,SAAO,IAAIhL,yCAAJ,CAAiB,UAACL,OAAD,EAAUe,MAAV,EAAqB;AAEzC,QAAI+Y,GAAG,GAAG,IAAIrb,MAAM,CAACoN,cAAX,EAAV;AAEAiO,OAAG,CAACnN,IAAJ,CAAS,KAAT,EAAgBtB,GAAhB;AACAyO,OAAG,CAAClN,gBAAJ,CAAqB,QAArB,EAA+BR,WAA/B;AACA0N,OAAG,CAACxW,IAAJ,CAAS,IAAT;;AAEAwW,OAAG,CAACoU,MAAJ,GAAa,YAAM;AACfluB,aAAO,CAAC8Z,GAAG,CAACxN,YAAL,CAAP;AACH,KAFD;;AAIAwN,OAAG,CAACqU,OAAJ,GAAc,YAAM;AAChB,aAAOptB,MAAM,CAAC,IAAI7C,KAAJ,mBAAD,CAAb;AACH,KAFD;AAGH,GAfM,CAAP;AAgBH;AAEM,SAASkwB,OAAT,CAAiB/iB,GAAjB,EAAsD;AACzD,SAAO4iB,WAAW,CAAC,WAAD,EAAc5iB,GAAd,CAAlB;AACH;AAEM,SAASgjB,MAAT,CAAgBhjB,GAAhB,EAAqD;AACxD,SAAO4iB,WAAW,CAAC,UAAD,EAAa5iB,GAAb,CAAlB;AACH;AAEM,SAASijB,SAAT,CAAmBjjB,GAAnB,EAAwD;AAC3D,SAAO4iB,WAAW,CAAC,KAAD,EAAQ5iB,GAAR,CAAlB;AACH;AAEM,SAASkjB,YAAT,CAAsBljB,GAAtB,EAA2D;AAC9D,SAAO+iB,OAAO,CAAC/iB,GAAD,CAAd;AACH;AAED,IAAMmjB,UAAU,GAAG;AACfC,SAAO,EAAE;AADM,CAAnB;AAIO,SAASC,UAAT,CAAoB7J,EAApB,EAAsCyB,GAAtC,EAAwE;AAAA,MAAlCA,GAAkC;AAAlCA,OAAkC,GAAjB7nB,MAAM,CAAC+Q,QAAU;AAAA;;AAAA,0CACxDoV,gBAAgB,CAACC,EAAD,EAAK,QAAL,CADwC,4CACxB;AAA9C,QAAInV,MAAM,2BAAV;AACD,QAAIif,SAAS,GAAGrI,GAAG,CAACI,aAAJ,CAAkB,QAAlB,CAAhB;AACAiI,aAAS,CAAC1wB,IAAV,GAAiByR,MAAM,CAACkf,WAAxB;AACAlf,UAAM,CAAC0d,UAAP,CAAkByB,YAAlB,CAA+BF,SAA/B,EAA0Cjf,MAA1C;AACH;AACJ;AAEM,SAASof,MAAT,CAAgBzyB,IAAhB,EAA+BC,KAA/B,EAAgEyyB,OAAhE,EAAwG;AAE3G1yB,MAAI,GAAGA,IAAI,CAAC8O,WAAL,EAAP;AAEA,MAAImb,GAAG,GAAI,QAAQ,KAAKI,aAAd,GACJ,IADI,GAEJjoB,MAAM,CAAC+Q,QAFb;AAIA,MAAIqV,EAAE,GAAGyB,GAAG,CAACI,aAAJ,CAAkBrqB,IAAlB,CAAT;;AAEA,OAAK,IAAIokB,IAAT,IAAiBnkB,KAAjB,EAAwB;AACpB,QAAImkB,IAAI,IAAI+N,UAAZ,EAAwB;AACpB3J,QAAE,CAAC/Y,gBAAH,CAAoB0iB,UAAU,CAAC/N,IAAD,CAA9B,EAAsCnkB,KAAK,CAACmkB,IAAD,CAA3C;AACH,KAFD,MAEO,IAAIA,IAAI,KAAK,WAAb,EAA0B;AAC7BoE,QAAE,CAAC7nB,SAAH,GAAeV,KAAK,CAACmkB,IAAD,CAApB;AACAiO,gBAAU,CAAC7J,EAAD,EAAKyB,GAAL,CAAV;AACH,KAHM,MAGA;AACHzB,QAAE,CAACiC,YAAH,CAAgBrG,IAAhB,EAAsBnkB,KAAK,CAACmkB,IAAD,CAA3B;AACH;AACJ;;AAED,MAAIpkB,IAAI,KAAK,OAAb,EAAsB;AAElB,QAAI,OAAO0yB,OAAP,KAAmB,QAAvB,EAAiC;AAC7B,YAAM,IAAI9sB,SAAJ,eAA2B5F,IAA3B,uCAAmE,OAAO0yB,OAA1E,CAAN;AACH;;AAED,QAAI/qB,SAAS,CAACxE,MAAV,GAAmB,CAAvB,EAA0B;AACtB,YAAM,IAAItB,KAAJ,qCAA6C7B,IAA7C,UAAN;AACH;;AAED+pB,YAAQ,CAACvB,EAAD,EAAKkK,OAAL,EAAczI,GAAd,CAAR;AAEH,GAZD,MAYO,IAAIjqB,IAAI,KAAK,QAAb,EAAuB;AAE1B,QAAI2H,SAAS,CAACxE,MAAV,GAAmB,CAAvB,EAA0B;AACtB,YAAM,IAAItB,KAAJ,8CAAN;AACH;;AAED2mB,MAAE,CAAC/Y,gBAAH,CAAoB,MAApB,EAA4B,YAAM;AAC9B,UAAI9I,GAAG,GAAG6hB,EAAE,CAACkC,aAAb;;AAEA,UAAI,CAAC/jB,GAAL,EAAU;AACN,cAAM,IAAI9E,KAAJ,wCAAN;AACH;;AAED,UAAI,OAAO6wB,OAAP,KAAmB,QAAvB,EAAiC;AAC7BpJ,qBAAa,CAAC3iB,GAAD,EAAM+rB,OAAN,CAAb;AACH,OAFD,MAEO;AACHhJ,4BAAoB,CAAC/iB,GAAD,EAAM+rB,OAAN,CAApB;AACH;AACJ,KAZD;AAcH,GApBM,MAoBA,IAAI1yB,IAAI,KAAK,QAAb,EAAuB;AAE1B,QAAI,OAAO0yB,OAAP,KAAmB,QAAvB,EAAiC;AAC7B,YAAM,IAAI9sB,SAAJ,eAA2B5F,IAA3B,uCAAmE,OAAO0yB,OAA1E,CAAN;AACH;;AAED,QAAI/qB,SAAS,CAACxE,MAAV,GAAmB,CAAvB,EAA0B;AACtB,YAAM,IAAItB,KAAJ,qCAA6C7B,IAA7C,UAAN;AACH;;AAEDwoB,MAAE,CAAC5mB,IAAH,GAAU8wB,OAAV;AAEH,GAZM,MAYA;AACH,SAAK,IAAIztB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0C,SAAS,CAACxE,MAA9B,EAAsC8B,CAAC,EAAvC,EAA2C;AACvC,UAAI,OAAO0C,SAAS,CAAC1C,CAAD,CAAhB,KAAwB,QAA5B,EAAsC;AAClC,YAAI0tB,QAAQ,GAAG1I,GAAG,CAACG,cAAJ,CAAmBziB,SAAS,CAAC1C,CAAD,CAA5B,CAAf;AACA8iB,mBAAW,CAACS,EAAD,EAAKmK,QAAL,CAAX;AACH,OAHD,MAGO;AACH5K,mBAAW,CAACS,EAAD,EAAK7gB,SAAS,CAAC1C,CAAD,CAAd,CAAX;AACH;AACJ;AACJ;;AAED,SAAOujB,EAAP;AACH,C;;ACjgCD;AAGA;;;;;;AAMO,SAASoK,SAAT,CAAsBxsB,MAAtB,EAA4G;AAE/G,SAAO,SAASysB,gBAAT,GAA8C;AAEjD,QAAI/K,IAAI,GAAG,IAAX;AACA,QAAIxhB,IAAI,GAAGtF,KAAK,CAAC4D,SAAN,CAAgBsO,KAAhB,CAAsB3Q,IAAtB,CAA2BoF,SAA3B,CAAX;;AAEA,QAAIrB,IAAI,CAACnD,MAAL,IAAeiD,MAAM,CAACjD,MAA1B,EAAkC;AAC9B,aAAOa,yCAAY,CAACL,OAAb,CAAqByC,MAAM,CAACG,KAAP,CAAauhB,IAAb,EAAmBxhB,IAAnB,CAArB,CAAP;AACH;;AAED,WAAO,IAAItC,yCAAJ,CAAiB,UAACL,OAAD,EAAUe,MAAV,EAAqB;AACzC4B,UAAI,CAACvD,IAAL,CAAU,UAACN,GAAD,EAAM7B,MAAN,EAAiB;AAEvB,YAAI6B,GAAG,IAAI,EAAEA,GAAG,YAAYZ,KAAjB,CAAX,EAAoC;AAChC,gBAAM,IAAIA,KAAJ,6CAAqDY,GAArD,sGAAN;AACH;;AAED,eAAOA,GAAG,GAAGiC,MAAM,CAACjC,GAAD,CAAT,GAAiBkB,OAAO,CAAC/C,MAAD,CAAlC;AACH,OAPD;AAQAwF,YAAM,CAACG,KAAP,CAAauhB,IAAb,EAAmBxhB,IAAnB;AACH,KAVM,CAAP;AAWH,GApBD;AAqBH;AAEM,SAASwsB,SAAT,CAAsB1sB,MAAtB,EAA8H;AACjI,SAAO,SAAS2sB,gBAAT,GAA8C;AAAA;AAAA;;AACjD,WAAO/uB,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAC1B,aAAOa,MAAM,CAACG,KAAP,CAAa,KAAb,EAAmBoB,UAAnB,CAAP;AACH,KAFM,CAAP;AAGH,GAJD;AAKH;AAEM,SAASnB,aAAT,CAAef,IAAf,EAAuD;AAAA,MAAxCA,IAAwC;AAAxCA,QAAwC,GAAxB,CAAwB;AAAA;;AAC1D,SAAO,IAAIzB,yCAAJ,CAAiB,UAAAL,OAAO,EAAI;AAC/BX,cAAU,CAACW,OAAD,EAAU8B,IAAV,CAAV;AACH,GAFM,CAAP;AAGH;AAEM,SAASutB,KAAT,CAAe5sB,MAAf,EAAuD;AAC1D,SAAOpC,yCAAY,CAACuB,GAAb,CAAiBa,MAAjB,EAAyB5D,IAAzB,CAA8B;AAAA,WAAMwwB,KAAK,CAAC5sB,MAAD,CAAX;AAAA,GAA9B,CAAP;AACH,C;;AClDM,SAAS6sB,MAAT,CAAgBrP,GAAhB,EAAwC;AAC3C,SAAO,OAAOA,GAAP,KAAe,QAAf,IAA4B,WAAD,CAAc7hB,IAAd,CAAmB6hB,GAAnB,CAAlC;AACH;AAEM,SAASsP,IAAT,CAActP,GAAd,EAAsC;AACzC,SAAO,OAAOA,GAAP,KAAe,QAAf,IAA4B,YAAD,CAAe7hB,IAAf,CAAoB6hB,GAApB,CAAlC;AACH;AAEM,SAASuP,KAAT,CAAelc,GAAf,EAA+C;AAElD,MAAI,OAAOA,GAAP,KAAe,QAAnB,EAA6B;AACzB,WAAOA,GAAP;AACH;;AAED,MAAIxV,KAAK,GAAGwV,GAAG,CAACxV,KAAJ,CAAU,kBAAV,CAAZ;;AAEA,MAAI,CAACA,KAAL,EAAY;AACR,UAAM,IAAII,KAAJ,qCAA6CoV,GAA7C,CAAN;AACH;;AAED,SAAOmK,QAAQ,CAAC3f,KAAK,CAAC,CAAD,CAAN,EAAW,EAAX,CAAf;AACH;AAEM,SAAS2xB,IAAT,CAAcnc,GAAd,EAA8C;AACjD,SAAWkc,KAAK,CAAClc,GAAD,CAAhB;AACH;AAEM,SAASoc,KAAT,CAAepc,GAAf,EAA+C;AAElD,MAAI,OAAOA,GAAP,KAAe,QAAnB,EAA6B;AACzB,WAAOmc,IAAI,CAACnc,GAAD,CAAX;AACH;;AAED,SAAOgc,MAAM,CAAChc,GAAD,CAAN,GAAcA,GAAd,GAAoBmc,IAAI,CAACnc,GAAD,CAA/B;AACH;AAEM,SAASqc,MAAT,CAAgBC,GAAhB,EAA8BC,IAA9B,EAAsD;AACzD,SAAOpS,QAAQ,CAACmS,GAAG,GAAGJ,KAAK,CAACK,IAAD,CAAX,GAAqB,GAAtB,EAA2B,EAA3B,CAAf;AACH;AAEM,SAASC,kBAAT,CAA4BC,GAA5B,EAAmDC,GAAnD,EAA0E;AAC7E,MAAI,OAAOD,GAAP,KAAe,QAAnB,EAA6B;AACzB,WAAOA,GAAP;AACH,GAFD,MAEO,IAAIT,MAAM,CAACS,GAAD,CAAV,EAAiB;AACpB,WAAOJ,MAAM,CAACK,GAAD,EAAMD,GAAN,CAAb;AACH,GAFM,MAEA,IAAIR,IAAI,CAACQ,GAAD,CAAR,EAAe;AAClB,WAAOP,KAAK,CAACO,GAAD,CAAZ;AACH,GAFM,MAEA;AACH,UAAM,IAAI7xB,KAAJ,mCAA2C6xB,GAA3C,CAAN;AACH;AACJ,C;;AClDD;AAEO,SAASE,QAAT,CAA6BrO,MAA7B,EAA8CvlB,IAA9C,EAA6DwlB,UAA7D,EAAkF;AACrF,MAAIpf,MAAM,GAAGof,UAAU,CAAC7jB,KAAxB;;AAEA6jB,YAAU,CAAC7jB,KAAX,GAAmB,SAASkyB,gBAAT,GAAgC;AAE/C,SAAKC,YAAL,GAAoB,KAAKA,YAAL,IAAqB,EAAzC;;AAEA,QAAI,CAAC,KAAKA,YAAL,CAAkBznB,cAAlB,CAAiCrM,IAAjC,CAAL,EAA6C;AACzC,WAAK8zB,YAAL,CAAkB9zB,IAAlB,IAA0BoG,MAAM,CAACG,KAAP,CAAa,IAAb,EAAmBoB,SAAnB,CAA1B;AACH;;AAED,WAAO,KAAKmsB,YAAL,CAAkB9zB,IAAlB,CAAP;AACH,GATD;;AAWAwlB,YAAU,CAAC7jB,KAAX,CAAiBoyB,WAAjB,GAAmC/zB,IAAnC;AACH;AAEM,SAAS6C,kBAAT,CAA4B0iB,MAA5B,EAA6CvlB,IAA7C,EAA4DwlB,UAA5D,EAAiF;AACpF,MAAIpf,MAAM,GAAGof,UAAU,CAAC7jB,KAAxB;;AAEA6jB,YAAU,CAAC7jB,KAAX,GAAmB,SAASqyB,mBAAT,GAAiD;AAChE,WAAOhwB,yCAAY,CAACuB,GAAb,CAAiBa,MAAjB,EAAyB,IAAzB,EAA+BuB,SAA/B,CAAP;AACH,GAFD;;AAIA6d,YAAU,CAAC7jB,KAAX,CAAiBoyB,WAAjB,GAAmC/zB,IAAnC;AACH,C;;;;;;;;AC3BD;AACA;AAEO,SAASkL,WAAT,CAAqBF,QAArB,EAAwC;AAC3C,MAAIG,2BAAS,CAACrI,OAAV,CAAkBkI,QAAlB,MAAgC,CAAC,CAArC,EAAwC;AACpC,UAAM,IAAInJ,KAAJ,wBAAgCmJ,QAAhC,CAAN;AACH;;AACDlE,0BAAM,CAACkE,QAAP,GAAkBA,QAAlB;AACAipB,0BAAM,CAACxmC,SAAP,GAAmBud,QAAnB;AACA5I,QAAM,CAAC3U,SAAP,GAAmBud,QAAnB;AACH;AAEM,SAAS0B,IAAT,CAAc1M,IAAd,EAA6BggB,KAA7B,EAA6ClW,OAA7C,EAAoE;AAAA,MAAvBA,OAAuB;AAAvBA,WAAuB,GAAJ,EAAI;AAAA;;AACvEoqB,gCAAO,SAAQl0B,IAAR,SAAkBggB,KAAlB,EAA4BlW,OAA5B,CAAP;AACH;AAGD;;;;;;AAMO,SAASgD,IAAT,CAAc9M,IAAd,EAA6BggB,KAA7B,EAA6ClW,OAA7C,EAAoE;AAAA,MAAvBA,OAAuB;AAAvBA,WAAuB,GAAJ,EAAI;AAAA;;AACvE8C,gCAAO,SAAQ5M,IAAR,SAAkBggB,KAAlB,EAA4BlW,OAA5B,CAAP;AACH;AAGD;;;;;;AAMO,SAAS1F,YAAT,CAAepE,IAAf,EAA8BggB,KAA9B,EAA8ClW,OAA9C,EAAqE;AAAA,MAAvBA,OAAuB;AAAvBA,WAAuB,GAAJ,EAAI;AAAA;;AACxEqqB,iCAAQ,SAAQn0B,IAAR,SAAkBggB,KAAlB,EAA4BlW,OAA5B,CAAR;AACH,C;;;;;ACpCD;AAEA;AAEO,SAASsqB,SAAT,CAAmBztB,GAAnB,EAA0D;AAE7D,MAAI,CAACK,mCAAY,CAACL,GAAD,CAAjB,EAAwB;AACpB;AACH;;AAED,MAAI,CAACA,GAAG,CAAC0tB,qBAAD,CAAR,EAAoB;AAChB1tB,OAAG,CAAC0tB,qBAAD,CAAH,GAAgB,EAAhB;AACH;;AAED,SAAO1tB,GAAG,CAAC0tB,qBAAD,CAAV;AACH;AAEM,SAASC,WAAT,GAAgC;AACnC,MAAI5e,MAAM,GAAG0e,SAAS,CAAChyB,MAAD,CAAtB;;AAEA,MAAI,CAACsT,MAAL,EAAa;AACT,UAAM,IAAI7T,KAAJ,8BAAN;AACH;;AAED,SAAO6T,MAAP;AACH;AAEM,IAAIA,MAAM,GAAG4e,WAAW,EAAxB,C;;AC3BP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;ACNO,SAASC,OAAT,CAAiBryB,IAAjB,EAAyC;AAC5C,SAAO7B,MAAM,CAACuE,SAAP,CAAiB/E,QAAjB,CAA0B0C,IAA1B,CAA+BL,IAA/B,MAAyC,iBAAhD;AACH,C,CAED;;AACO,SAASgF,IAAT,GAAsC,CACzC;AACH,C;;ACPM,IAAMuD,QAAQ,GAAG;AACpB+pB,MAAI,EAAI,OADY;AAEpB9pB,MAAI,EAAI,OAFY;AAGpB+pB,OAAK,EAAG;AAHY,CAAjB;AAMA,IAAMC,QAAQ,GAAG,GAAjB;AAEA,IAAMC,WAAW,GAAG;AACvBlkC,QAAM,EAAG,QADc;AAEvBmkC,OAAK,EAAI;AAFc,CAApB,C;;ACTP;AAEA;AAEA;AAEA,IAAIC,mBAAmB,GAAG,kCAA1B;AAEO,SAASC,cAAT,CAAwBnuB,GAAxB,EAAuE;AAAA,MAA/CA,GAA+C;AAA/CA,OAA+C,GAAlBvE,MAAkB;AAAA;;AAC1E,SAAOuE,GAAG,CAACoB,QAAJ,CAAayC,QAAb,KAA0BC,QAAQ,CAACC,IAA1C;AACH;AAEM,SAASqqB,eAAT,CAAyBpuB,GAAzB,EAAwE;AAAA,MAA/CA,GAA+C;AAA/CA,OAA+C,GAAlBvE,MAAkB;AAAA;;AAC3E,SAAOuE,GAAG,CAACoB,QAAJ,CAAayC,QAAb,KAA0BC,QAAQ,CAACgqB,KAA1C;AACH;AAEM,SAASrsB,SAAT,CAAmBzB,GAAnB,EAAmF;AAAA,MAAhEA,GAAgE;AAAhEA,OAAgE,GAAjCvE,MAAiC;AAAA;;AAEtF,MAAI,CAACuE,GAAL,EAAU;AACN;AACH;;AAED,MAAI;AACA,QAAIA,GAAG,CAACmH,MAAJ,IAAcnH,GAAG,CAACmH,MAAJ,KAAenH,GAAjC,EAAsC;AAClC,aAAOA,GAAG,CAACmH,MAAX;AACH;AACJ,GAJD,CAIE,OAAOrL,GAAP,EAAY,CACV;AACH;AACJ;AAEM,SAASuyB,SAAT,CAAmBruB,GAAnB,EAAmF;AAAA,MAAhEA,GAAgE;AAAhEA,OAAgE,GAAjCvE,MAAiC;AAAA;;AAEtF,MAAI,CAACuE,GAAL,EAAU;AACN;AACH,GAJqF,CAMtF;;;AACA,MAAIyB,SAAS,CAACzB,GAAD,CAAb,EAAoB;AAChB;AACH;;AAED,MAAI;AACA,WAAOA,GAAG,CAACkH,MAAX;AACH,GAFD,CAEE,OAAOpL,GAAP,EAAY,CACV;AACH;AACJ;AAEM,SAASwyB,iBAAT,CAA2BtuB,GAA3B,EAAyF;AAC5F,MAAI;AACA;AACAO,QAAI,CAACP,GAAG,IAAIA,GAAG,CAACoB,QAAX,IAAuBpB,GAAG,CAACoB,QAAJ,CAAa8K,IAArC,CAAJ;AACA,WAAO,IAAP;AACH,GAJD,CAIE,OAAOpQ,GAAP,EAAY,CACV;AACH;;AAED,SAAO,KAAP;AACH;AAEM,SAASyyB,eAAT,CAAyBvuB,GAAzB,EAAwE;AAAA,MAA/CA,GAA+C;AAA/CA,OAA+C,GAAjBvE,MAAiB;AAAA;;AAE3E,MAAI2F,QAAQ,GAAGpB,GAAG,CAACoB,QAAnB;;AAEA,MAAI,CAACA,QAAL,EAAe;AACX,UAAM,IAAIlG,KAAJ,gCAAN;AACH;;AAED,MAAI2I,QAAQ,GAAGzC,QAAQ,CAACyC,QAAxB;;AAEA,MAAI,CAACA,QAAL,EAAe;AACX,UAAM,IAAI3I,KAAJ,gCAAN;AACH;;AAED,MAAI2I,QAAQ,KAAKC,QAAQ,CAACC,IAA1B,EAAgC;AAC5B,WAAWD,QAAQ,CAACC,IAApB;AACH;;AAED,MAAIF,QAAQ,KAAKC,QAAQ,CAACgqB,KAA1B,EAAiC;AAE7B,QAAI3mB,MAAM,GAAG1F,SAAS,CAACzB,GAAD,CAAtB;;AACA,QAAImH,MAAM,IAAImnB,iBAAiB,CAACnnB,MAAD,CAA/B,EAAyC;AACrC;AACA,aAAOonB,eAAe,CAACpnB,MAAD,CAAtB;AACH;;AAED,WAAWrD,QAAQ,CAACgqB,KAApB;AACH;;AAED,MAAIzsB,IAAI,GAAGD,QAAQ,CAACC,IAApB;;AAEA,MAAI,CAACA,IAAL,EAAW;AACP,UAAM,IAAInG,KAAJ,4BAAN;AACH;;AAED,SAAW2I,QAAX,UAA0BxC,IAA1B;AACH;AAEM,SAASnB,SAAT,CAAmBF,GAAnB,EAAkE;AAAA,MAA/CA,GAA+C;AAA/CA,OAA+C,GAAjBvE,MAAiB;AAAA;;AAErE,MAAIiF,MAAM,GAAG6tB,eAAe,CAACvuB,GAAD,CAA5B;;AAEA,MAAIU,MAAM,IAAIV,GAAG,CAACwuB,UAAd,IAA4BxuB,GAAG,CAACwuB,UAAJ,CAAeryB,OAAf,CAAuB2H,QAAQ,CAAC+pB,IAAhC,MAA0C,CAA1E,EAA6E;AACzE,WAAO7tB,GAAG,CAACwuB,UAAX;AACH;;AAED,SAAO9tB,MAAP;AACH;AAEM,SAAS+tB,aAAT,CAAuBzuB,GAAvB,EAA8D;AACjE,MAAI;AACA;AACA,QAAI,CAACA,GAAG,CAACoB,QAAJ,CAAa8K,IAAlB,EAAwB;AACpB,aAAO,IAAP;AACH;;AAED,QAAIlM,GAAG,CAACoB,QAAJ,CAAa8K,IAAb,KAAsB,aAA1B,EAAyC;AACrC,aAAO,IAAP;AACH;AACJ,GATD,CASE,OAAOpQ,GAAP,EAAY,CACV;AACH;;AAED,SAAO,KAAP;AACH;AAEM,SAAS4yB,oBAAT,CAA8B1uB,GAA9B,EAAqE;AAExE,MAAI;AACA,QAAIA,GAAG,KAAKvE,MAAZ,EAAoB;AAChB,aAAO,IAAP;AACH;AAEJ,GALD,CAKE,OAAOK,GAAP,EAAY,CACV;AACH;;AAED,MAAI;AACA,QAAI6yB,IAAI,GAAGj1B,MAAM,CAAColB,wBAAP,CAAgC9e,GAAhC,EAAqC,UAArC,CAAX;;AAEA,QAAI2uB,IAAI,IAAIA,IAAI,CAACrQ,UAAL,KAAoB,KAAhC,EAAuC;AACnC,aAAO,KAAP;AACH;AAEJ,GAPD,CAOE,OAAOxiB,GAAP,EAAY,CACV;AACH;;AAED,MAAI;AACA;AACA,QAAIsyB,eAAe,CAACpuB,GAAD,CAAf,IAAwBsuB,iBAAiB,CAACtuB,GAAD,CAA7C,EAAoD;AAChD,aAAO,IAAP;AACH;AACJ,GALD,CAKE,OAAOlE,GAAP,EAAY,CACV;AACH;;AAED,MAAI;AACA;AACA,QAAIyyB,eAAe,CAACvuB,GAAD,CAAf,KAAyBuuB,eAAe,CAAC9yB,MAAD,CAA5C,EAAsD;AAClD,aAAO,IAAP;AACH;AAEJ,GAND,CAME,OAAOK,GAAP,EAAY,CACV;AACH;;AAED,SAAO,KAAP;AACH;AAEM,SAASuE,YAAT,CAAsBL,GAAtB,EAAoF;AAEvF,MAAI,CAAC0uB,oBAAoB,CAAC1uB,GAAD,CAAzB,EAAgC;AAC5B,WAAO,KAAP;AACH;;AAED,MAAI;AAEA,QAAIA,GAAG,KAAKvE,MAAZ,EAAoB;AAChB,aAAO,IAAP;AACH,KAJD,CAMA;;;AACA,QAAI2yB,eAAe,CAACpuB,GAAD,CAAf,IAAwBsuB,iBAAiB,CAACtuB,GAAD,CAA7C,EAAoD;AAChD,aAAO,IAAP;AACH,KATD,CAWA;;;AACA,QAAIE,SAAS,CAACzE,MAAD,CAAT,KAAsByE,SAAS,CAACF,GAAD,CAAnC,EAA0C;AACtC,aAAO,IAAP;AACH;AAEJ,GAhBD,CAgBE,OAAOlE,GAAP,EAAY,CACV;AACH;;AAED,SAAO,KAAP;AACH;AAGM,SAAS8yB,gBAAT,CAA0B5uB,GAA1B,EAAqG;AACxG,MAAI,CAACK,YAAY,CAACL,GAAD,CAAjB,EAAwB;AACpB,UAAM,IAAI9E,KAAJ,qCAAN;AACH,GAHuG,CAKxG;;;AACA,SAAO8E,GAAP;AACH;AAEM,SAAS6uB,UAAT,CAAoB7uB,GAApB,EAAgF;AAEnF,MAAI/F,MAAM,GAAG,EAAb;;AAEA,MAAI;AAEA,WAAO+F,GAAG,CAACmH,MAAJ,KAAenH,GAAtB,EAA2B;AACvB/F,YAAM,CAACmC,IAAP,CAAY4D,GAAG,CAACmH,MAAhB;AACAnH,SAAG,GAAGA,GAAG,CAACmH,MAAV;AACH;AAEJ,GAPD,CAOE,OAAOrL,GAAP,EAAY,CACV;AACH;;AAED,SAAO7B,MAAP;AACH;AAEM,SAAS60B,gBAAT,CAA0B3nB,MAA1B,EAA0DhN,KAA1D,EAAmG;AAEtG,MAAI,CAACgN,MAAD,IAAW,CAAChN,KAAhB,EAAuB;AACnB,WAAO,KAAP;AACH;;AAED,MAAI40B,WAAW,GAAGttB,SAAS,CAACtH,KAAD,CAA3B;;AAEA,MAAI40B,WAAJ,EAAiB;AACb,WAAOA,WAAW,KAAK5nB,MAAvB;AACH;;AAED,MAAI0nB,UAAU,CAAC10B,KAAD,CAAV,CAAkBgC,OAAlB,CAA0BgL,MAA1B,MAAsC,CAAC,CAA3C,EAA8C;AAC1C,WAAO,IAAP;AACH;;AAED,SAAO,KAAP;AACH;AAEM,SAAS6nB,SAAT,CAAmBhvB,GAAnB,EAA+E;AAElF,MAAI/F,MAAM,GAAG,EAAb;AAEA,MAAIg1B,MAAJ;;AAEA,MAAI;AACAA,UAAM,GAAGjvB,GAAG,CAACivB,MAAb;AACH,GAFD,CAEE,OAAOnzB,GAAP,EAAY;AACVmzB,UAAM,GAAGjvB,GAAT;AACH;;AAED,MAAIge,GAAJ;;AAEA,MAAI;AACAA,OAAG,GAAGiR,MAAM,CAACzyB,MAAb;AACH,GAFD,CAEE,OAAOV,GAAP,EAAY,CACV;AACH;;AAED,MAAIkiB,GAAG,KAAK,CAAZ,EAAe;AACX,WAAO/jB,MAAP;AACH;;AAED,MAAI+jB,GAAJ,EAAS;AACL,SAAK,IAAI1f,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0f,GAApB,EAAyB1f,CAAC,EAA1B,EAA8B;AAE1B,UAAI4lB,KAAK,SAAT;;AAEA,UAAI;AACAA,aAAK,GAAG+K,MAAM,CAAC3wB,CAAD,CAAd;AACH,OAFD,CAEE,OAAOxC,GAAP,EAAY;AACV;AACH;;AAED7B,YAAM,CAACmC,IAAP,CAAY8nB,KAAZ;AACH;;AAED,WAAOjqB,MAAP;AACH;;AAED,OAAK,IAAIqE,EAAC,GAAG,CAAb,EAAgBA,EAAC,GAAG,GAApB,EAAyBA,EAAC,EAA1B,EAA8B;AAC1B,QAAI4lB,MAAK,SAAT;;AAEA,QAAI;AACAA,YAAK,GAAG+K,MAAM,CAAC3wB,EAAD,CAAd;AACH,KAFD,CAEE,OAAOxC,GAAP,EAAY;AACV,aAAO7B,MAAP;AACH;;AAED,QAAI,CAACiqB,MAAL,EAAY;AACR,aAAOjqB,MAAP;AACH;;AAEDA,UAAM,CAACmC,IAAP,CAAY8nB,MAAZ;AACH;;AAED,SAAOjqB,MAAP;AACH;AAGM,SAASi1B,iBAAT,CAA2BlvB,GAA3B,EAAuF;AAE1F,MAAI/F,MAAM,GAAG,EAAb;;AAF0F,kCAIxE+0B,SAAS,CAAChvB,GAAD,CAJ+D,mCAIxD;AAA7B,QAAIkkB,KAAK,mBAAT;AACDjqB,UAAM,CAACmC,IAAP,CAAY8nB,KAAZ;;AAD8B,4CAGPgL,iBAAiB,CAAChL,KAAD,CAHV,2CAGmB;AAA5C,UAAIiL,UAAU,2BAAd;AACDl1B,YAAM,CAACmC,IAAP,CAAY+yB,UAAZ;AACH;AACJ;;AAED,SAAOl1B,MAAP;AACH;AAEM,SAASm1B,MAAT,CAAgBpvB,GAAhB,EAAgF;AAAA,MAAhEA,GAAgE;AAAhEA,OAAgE,GAAjCvE,MAAiC;AAAA;;AAEnF,MAAI;AACA,QAAIuE,GAAG,CAAC2lB,GAAR,EAAa;AACT,aAAO3lB,GAAG,CAAC2lB,GAAX;AACH;AACJ,GAJD,CAIE,OAAO7pB,GAAP,EAAY,CACV;AACH;;AAED,MAAI2F,SAAS,CAACzB,GAAD,CAAT,KAAmBA,GAAvB,EAA4B;AACxB,WAAOA,GAAP;AACH;;AAED,MAAI;AACA,QAAI8uB,gBAAgB,CAACrzB,MAAD,EAASuE,GAAT,CAAhB,IAAiCvE,MAAM,CAACkqB,GAA5C,EAAiD;AAC7C,aAAOlqB,MAAM,CAACkqB,GAAd;AACH;AACJ,GAJD,CAIE,OAAO7pB,GAAP,EAAY,CACV;AACH;;AAED,MAAI;AACA,QAAIgzB,gBAAgB,CAAC9uB,GAAD,EAAMvE,MAAN,CAAhB,IAAiCA,MAAM,CAACkqB,GAA5C,EAAiD;AAC7C,aAAOlqB,MAAM,CAACkqB,GAAd;AACH;AACJ,GAJD,CAIE,OAAO7pB,GAAP,EAAY,CACV;AACH;;AA5BkF,0CA8BjEozB,iBAAiB,CAAClvB,GAAD,CA9BgD,2CA8BzC;AAArC,QAAIkkB,KAAK,2BAAT;;AACD,QAAI;AACA,UAAIA,KAAK,CAACyB,GAAV,EAAe;AACX,eAAOzB,KAAK,CAACyB,GAAb;AACH;AACJ,KAJD,CAIE,OAAO7pB,GAAP,EAAY,CACV;AACH;;AAED,QAAI2F,SAAS,CAACyiB,KAAD,CAAT,KAAqBA,KAAzB,EAAgC;AAC5B,aAAOA,KAAP;AACH;AACJ;AACJ;AAEM,SAASmL,aAAT,CAAuBrvB,GAAvB,EAAuF;AAAA,MAAhEA,GAAgE;AAAhEA,OAAgE,GAAjCvE,MAAiC;AAAA;;AAC1F,SAAO4yB,SAAS,CAACe,MAAM,CAACpvB,GAAD,CAAN,IAAeA,GAAhB,CAAhB;AACH;AAEM,SAASsvB,cAAT,CAAwBtvB,GAAxB,EAAuF;AAAA,MAA/DA,GAA+D;AAA/DA,OAA+D,GAAhCvE,MAAgC;AAAA;;AAC1F,MAAIyL,MAAM,GAAGmoB,aAAa,CAACrvB,GAAD,CAA1B;;AAEA,MAAIkH,MAAJ,EAAY;AACR,WAAOooB,cAAc,CAACpoB,MAAD,CAArB;AACH;;AAED,SAAOye,GAAP;AACH;AAEM,SAAS4J,oBAAT,CAA8BvvB,GAA9B,EAA0F;AAC7F,MAAI2lB,GAAG,GAAGyJ,MAAM,CAACpvB,GAAD,CAAhB;;AAEA,MAAI,CAAC2lB,GAAL,EAAU;AACN,UAAM,IAAIzqB,KAAJ,gCAAN;AACH;;AAED,mBAAYg0B,iBAAiB,CAACvJ,GAAD,CAA7B,GAAoCA,GAApC;AACH;AAEM,SAAS6J,aAAT,CAAuBxvB,GAAvB,EAAsG;AAAA,MAA/EA,GAA+E;AAA/EA,OAA+E,GAAhDvE,MAAgD;AAAA;;AACzG,MAAIwzB,MAAM,GAAGM,oBAAoB,CAACvvB,GAAD,CAAjC;AACA,MAAIkH,MAAM,GAAGmoB,aAAa,CAACrvB,GAAD,CAA1B;;AAEA,MAAIkH,MAAJ,EAAY;AACR,qBAAYsoB,aAAa,CAACtoB,MAAD,CAAzB,EAAsC+nB,MAAtC;AACH,GAFD,MAEO;AACH,WAAOA,MAAP;AACH;AACJ;AAEM,SAASQ,KAAT,CAAezvB,GAAf,EAAsD;AACzD,SAAOA,GAAG,KAAKovB,MAAM,CAACpvB,GAAD,CAArB;AACH;AAEM,SAAS0vB,mBAAT,CAA6BxL,KAA7B,EAAkE;AAErE,MAAI,CAACA,KAAK,CAACH,aAAX,EAA0B;AACtB,WAAO,IAAP;AACH;;AAED,MAAI,CAACG,KAAK,CAACkG,UAAX,EAAuB;AACnB,WAAO,IAAP;AACH;;AAED,MAAI9G,GAAG,GAAGY,KAAK,CAACvC,aAAhB;;AAEA,MAAI2B,GAAG,IAAIA,GAAG,CAACJ,eAAX,IAA8B,CAACI,GAAG,CAACJ,eAAJ,CAAoByM,QAApB,CAA6BzL,KAA7B,CAAnC,EAAwE;AACpE,WAAO,IAAP;AACH;;AAED,SAAO,KAAP;AACH;;AAED,SAAS0L,WAAT,CAAwBC,UAAxB,EAA+Ct0B,IAA/C,EAAkE;AAC9D,OAAK,IAAI+C,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGuxB,UAAU,CAACrzB,MAA/B,EAAuC8B,CAAC,EAAxC,EAA4C;AAExC,QAAI;AACA,UAAIuxB,UAAU,CAACvxB,CAAD,CAAV,KAAkB/C,IAAtB,EAA4B;AACxB,eAAO+C,CAAP;AACH;AACJ,KAJD,CAIE,OAAOxC,GAAP,EAAY,CACV;AACH;AACJ;;AAED,SAAO,CAAC,CAAR;AACH;;AAED,IAAIg0B,aAAa,GAAG,EAApB;AACA,IAAIC,YAAY,GAAG,EAAnB;AAEO,SAASjvB,cAAT,CAAwBd,GAAxB,EAAqDgwB,SAArD,EAA2F;AAAA,MAAtCA,SAAsC;AAAtCA,aAAsC,GAAhB,IAAgB;AAAA;;AAE9F,MAAI;AACA,QAAIhwB,GAAG,KAAKvE,MAAZ,EAAoB;AAChB,aAAO,KAAP;AACH;AACJ,GAJD,CAIE,OAAOK,GAAP,EAAY;AACV,WAAO,IAAP;AACH;;AAED,MAAI;AACA,QAAI,CAACkE,GAAL,EAAU;AACN,aAAO,IAAP;AACH;AAEJ,GALD,CAKE,OAAOlE,GAAP,EAAY;AACV,WAAO,IAAP;AACH;;AAED,MAAI;AACA,QAAIkE,GAAG,CAACiwB,MAAR,EAAgB;AACZ,aAAO,IAAP;AACH;AAEJ,GALD,CAKE,OAAOn0B,GAAP,EAAY;AAEV;AAEA,QAAIA,GAAG,IAAIA,GAAG,CAAC6K,OAAJ,KAAgBunB,mBAA3B,EAAgD;AAC5C,aAAO,KAAP;AACH;;AAED,WAAO,IAAP;AACH;;AAGD,MAAI8B,SAAS,IAAI3vB,YAAY,CAACL,GAAD,CAA7B,EAAoC;AAChC,QAAI;AACA;AACA,UAAIA,GAAG,CAACkwB,UAAR,EAAoB;AAChB,eAAO,IAAP;AACH;AACJ,KALD,CAKE,OAAOp0B,GAAP,EAAY,CACV;AACH;AACJ,GA7C6F,CA+C9F;;;AAEA,MAAI;AACA,QAAI,CAACkE,GAAG,CAACmH,MAAL,IAAe,CAACnH,GAAG,CAAC2lB,GAAxB,EAA6B;AACzB,aAAO,IAAP;AACH;AACJ,GAJD,CAIE,OAAO7pB,GAAP,EAAY,CAEb,CAFC,CACE;AAGJ;AACA;;;AAEA,MAAI;AACAyE,QAAI,CAACP,GAAG,KAAKA,GAAT,CAAJ,CADA,CACmB;AACtB,GAFD,CAEE,OAAOlE,GAAP,EAAY;AACV,WAAO,IAAP;AACH,GAhE6F,CAkE9F;;;AAEA,MAAIq0B,WAAW,GAAGP,WAAW,CAACE,aAAD,EAAgB9vB,GAAhB,CAA7B;;AAEA,MAAImwB,WAAW,KAAK,CAAC,CAArB,EAAwB;AACpB,QAAIjM,KAAK,GAAG6L,YAAY,CAACI,WAAD,CAAxB;;AAEA,QAAIjM,KAAK,IAAIwL,mBAAmB,CAACxL,KAAD,CAAhC,EAAyC;AACrC,aAAO,IAAP;AACH;AACJ;;AAED,SAAO,KAAP;AACH;;AAED,SAASkM,YAAT,GAAwB;AACpB,OAAK,IAAI9xB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwxB,aAAa,CAACtzB,MAAlC,EAA0C8B,CAAC,EAA3C,EAA+C;AAC3C,QAAI2xB,MAAM,GAAG,KAAb;;AAEA,QAAI;AACAA,YAAM,GAAGH,aAAa,CAACxxB,CAAD,CAAb,CAAiB2xB,MAA1B;AACH,KAFD,CAEE,OAAOn0B,GAAP,EAAY,CACV;AACH;;AAED,QAAIm0B,MAAJ,EAAY;AACRF,kBAAY,CAACnzB,MAAb,CAAoB0B,CAApB,EAAuB,CAAvB;AACAwxB,mBAAa,CAAClzB,MAAd,CAAqB0B,CAArB,EAAwB,CAAxB;AACH;AACJ;AACJ;;AAEM,SAAS8lB,eAAT,CAAyBF,KAAzB,EAAoD;AAEvDkM,cAAY;;AAEZ,MAAIlM,KAAK,IAAIA,KAAK,CAACH,aAAnB,EAAkC;AAC9B,QAAI;AACA+L,mBAAa,CAAC1zB,IAAd,CAAmB8nB,KAAK,CAACH,aAAzB;AACAgM,kBAAY,CAAC3zB,IAAb,CAAkB8nB,KAAlB;AACH,KAHD,CAGE,OAAOpoB,GAAP,EAAY,CACV;AACH;AACJ;AACJ;AAEM,SAASgJ,YAAT,CAAsB9E,GAAtB,EAA4D;AAC/DA,KAAG,GAAGA,GAAG,IAAIvE,MAAb;AACA,SAAOuE,GAAG,CAACyF,SAAJ,CAAc4qB,aAAd,IAA+BrwB,GAAG,CAACyF,SAAJ,CAAcZ,SAApD;AACH;AAGM,SAASyrB,cAAT,CAAwBtwB,GAAxB,EAAqD3G,IAArD,EAA6F;AAEhG,MAAIk3B,SAAS,GAAGvB,SAAS,CAAChvB,GAAD,CAAzB;;AAFgG,0BAIzEuwB,SAJyE,gBAI9D;AAA7B,QAAIpB,UAAU,GAAIoB,SAAJ,KAAd;;AACD,QAAI;AACA;AACA,UAAIlwB,YAAY,CAAC8uB,UAAD,CAAZ,IAA4BA,UAAU,CAAC91B,IAAX,KAAoBA,IAAhD,IAAwDk3B,SAAS,CAACp0B,OAAV,CAAkBgzB,UAAlB,MAAkC,CAAC,CAA/F,EAAkG;AAC9F,eAAOA,UAAP;AACH;AACJ,KALD,CAKE,OAAOrzB,GAAP,EAAY,CACV;AACH;AACJ;;AAED,MAAI;AACA;AACA,QAAIy0B,SAAS,CAACp0B,OAAV,CAAkB6D,GAAG,CAACivB,MAAJ,CAAW51B,IAAX,CAAlB,MAAwC,CAAC,CAA7C,EAAgD;AAC5C;AACA,aAAO2G,GAAG,CAACivB,MAAJ,CAAW51B,IAAX,CAAP;AACH;AACJ,GAND,CAME,OAAOyC,GAAP,EAAY,CACV;AACH;;AAED,MAAI;AACA,QAAIy0B,SAAS,CAACp0B,OAAV,CAAkB6D,GAAG,CAAC3G,IAAD,CAArB,MAAiC,CAAC,CAAtC,EAAyC;AACrC,aAAO2G,GAAG,CAAC3G,IAAD,CAAV;AACH;AACJ,GAJD,CAIE,OAAOyC,GAAP,EAAY,CACV;AACH;AACJ;AAEM,SAAS00B,oBAAT,CAA8BxwB,GAA9B,EAA2D3G,IAA3D,EAAmG;AAEtG,MAAI6qB,KAAK,GAAGoM,cAAc,CAACtwB,GAAD,EAAM3G,IAAN,CAA1B;;AAEA,MAAI6qB,KAAJ,EAAW;AACP,WAAOA,KAAP;AACH;;AANqG,mCAQ/E8K,SAAS,CAAChvB,GAAD,CARsE,qCAQ/D;AAAlC,QAAImvB,UAAU,oBAAd;AACD,QAAIsB,UAAU,GAAGD,oBAAoB,CAACrB,UAAD,EAAa91B,IAAb,CAArC;;AAEA,QAAIo3B,UAAJ,EAAgB;AACZ,aAAOA,UAAP;AACH;AACJ;AACJ;AAEM,SAASC,eAAT,CAAyB1wB,GAAzB,EAAsD3G,IAAtD,EAA8F;AAEjG,MAAI6qB,KAAJ;AAEAA,OAAK,GAAGoM,cAAc,CAACtwB,GAAD,EAAM3G,IAAN,CAAtB;;AAEA,MAAI6qB,KAAJ,EAAW;AACP,WAAOA,KAAP;AACH;;AAED,MAAIyB,GAAG,GAAGyJ,MAAM,CAACpvB,GAAD,CAAN,IAAeA,GAAzB;AAEA,SAAOwwB,oBAAoB,CAAC7K,GAAD,EAAMtsB,IAAN,CAA3B;AACH;AAEM,SAASs3B,QAAT,CAAkB3wB,GAAlB,EAA+CkkB,KAA/C,EAAwF;AAE3F,MAAI0M,WAAW,GAAGnvB,SAAS,CAACyiB,KAAD,CAA3B;;AAEA,MAAI0M,WAAJ,EAAiB;AACb,WAAOA,WAAW,KAAK5wB,GAAvB;AACH;;AAN0F,mCAQpEgvB,SAAS,CAAChvB,GAAD,CAR2D,qCAQpD;AAAlC,QAAImvB,UAAU,oBAAd;;AACD,QAAIA,UAAU,KAAKjL,KAAnB,EAA0B;AACtB,aAAO,IAAP;AACH;AACJ;;AAED,SAAO,KAAP;AACH;AAEM,SAAS2M,QAAT,CAAkB1pB,MAAlB,EAAkDhN,KAAlD,EAA2F;AAE9F,SAAOgN,MAAM,KAAKknB,SAAS,CAACl0B,KAAD,CAA3B;AACH;AAEM,SAAS22B,WAAT,CAAqB9wB,GAArB,EAAqF;AAAA,MAAhEA,GAAgE;AAAhEA,OAAgE,GAAjCvE,MAAiC;AAAA;;AACxFuE,KAAG,GAAGA,GAAG,IAAIvE,MAAb;AAEA,MAAIyL,MAAM,GAAGmnB,SAAS,CAACruB,GAAD,CAAtB;;AAEA,MAAIkH,MAAJ,EAAY;AACR,WAAOA,MAAP;AACH;;AAED,MAAIC,MAAM,GAAG1F,SAAS,CAACzB,GAAD,CAAtB;;AAEA,MAAImH,MAAJ,EAAY;AACR,WAAOA,MAAP;AACH;AACJ;AAEM,SAAS4pB,YAAT,CAAsB/wB,GAAtB,EAAkF;AAErF,MAAIX,OAAO,GAAG,EAAd;AAEA,MAAI2xB,QAAQ,GAAGhxB,GAAf;;AAEA,SAAOgxB,QAAP,EAAiB;AACbA,YAAQ,GAAGF,WAAW,CAACE,QAAD,CAAtB;;AACA,QAAIA,QAAJ,EAAc;AACV3xB,aAAO,CAACjD,IAAR,CAAa40B,QAAb;AACH;AACJ;;AAED,SAAO3xB,OAAP;AACH;AAGM,SAAS4xB,UAAT,CAAoB9pB,MAApB,EAAoDhN,KAApD,EAA6F;AAEhG,MAAI+2B,YAAY,GAAGJ,WAAW,CAAC32B,KAAD,CAA9B;;AAEA,MAAI+2B,YAAJ,EAAkB;AACd,QAAIA,YAAY,KAAK/pB,MAArB,EAA6B;AACzB,aAAO,IAAP;AACH;;AAED,WAAO,KAAP;AACH;;AAED,MAAIhN,KAAK,KAAKgN,MAAd,EAAsB;AAClB,WAAO,KAAP;AACH;;AAED,MAAIioB,MAAM,CAACj1B,KAAD,CAAN,KAAkBA,KAAtB,EAA6B;AACzB,WAAO,KAAP;AACH;;AAlB+F,mCAoB9E60B,SAAS,CAAC7nB,MAAD,CApBqE,qCAoB3D;AAAhC,QAAI+c,KAAK,oBAAT;;AACD,QAAIA,KAAK,KAAK/pB,KAAd,EAAqB;AACjB,aAAO,IAAP;AACH;AACJ;;AAED,SAAO,KAAP;AACH;AAEM,SAASg3B,OAAT,CAAiBnxB,GAAjB,EAAkE;AAAA,MAAjDA,GAAiD;AAAjDA,OAAiD,GAAlBvE,MAAkB;AAAA;;AACrE,SAAOwR,OAAO,CAACohB,SAAS,CAACruB,GAAD,CAAV,CAAd;AACH;AAEM,SAASoxB,QAAT,CAAkBpxB,GAAlB,EAAmE;AAAA,MAAjDA,GAAiD;AAAjDA,OAAiD,GAAlBvE,MAAkB;AAAA;;AACtE,SAAOwR,OAAO,CAACxL,SAAS,CAACzB,GAAD,CAAV,CAAd;AACH;AAEM,SAASqxB,UAAT,CAAoBrxB,GAApB,EAAqE;AAAA,MAAjDA,GAAiD;AAAjDA,OAAiD,GAAlBvE,MAAkB;AAAA;;AACxE,SAAOwR,OAAO,CAAC,CAACmkB,QAAQ,CAACpxB,GAAD,CAAT,IAAkB,CAACmxB,OAAO,CAACnxB,GAAD,CAA3B,CAAd;AACH;;AAED,SAASsxB,QAAT,CAAkBC,WAAlB,EAA+BC,WAA/B,EAAsD;AAAA,4BAEhCD,WAFgC,iBAEnB;AAA1B,QAAIE,KAAK,GAAIF,WAAJ,MAAT;;AAA0B,8BACTC,WADS,iBACI;AAA1B,UAAIE,KAAK,GAAIF,WAAJ,MAAT;;AACD,UAAIC,KAAK,KAAKC,KAAd,EAAqB;AACjB,eAAO,IAAP;AACH;AACJ;AACJ;;AAED,SAAO,KAAP;AACH;;AAEM,SAASC,kBAAT,CAA4B3xB,GAA5B,EAA2E;AAAA,MAA/CA,GAA+C;AAA/CA,OAA+C,GAAjBvE,MAAiB;AAAA;;AAC9E,MAAIm2B,QAAQ,GAAG,CAAf;AACA,MAAIzqB,MAAM,GAAGnH,GAAb;;AAEA,SAAOmH,MAAP,EAAe;AACXA,UAAM,GAAG1F,SAAS,CAAC0F,MAAD,CAAlB;;AACA,QAAIA,MAAJ,EAAY;AACRyqB,cAAQ,IAAI,CAAZ;AACH;AACJ;;AAED,SAAOA,QAAP;AACH;AAEM,SAASC,YAAT,CAAsB7xB,GAAtB,EAAmD8xB,CAAnD,EAA4F;AAAA,MAAzCA,CAAyC;AAAzCA,KAAyC,GAA5B,CAA4B;AAAA;;AAC/F,MAAI3qB,MAAM,GAAGnH,GAAb;;AAEA,OAAK,IAAI1B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwzB,CAApB,EAAuBxzB,CAAC,EAAxB,EAA4B;AACxB,QAAI,CAAC6I,MAAL,EAAa;AACT;AACH;;AAEDA,UAAM,GAAG1F,SAAS,CAAC0F,MAAD,CAAlB;AACH;;AAED,SAAOA,MAAP;AACH;AAEM,SAAS4qB,mBAAT,CAA6B/xB,GAA7B,EAA0D8xB,CAA1D,EAAmG;AAAA,MAAzCA,CAAyC;AAAzCA,KAAyC,GAA5B,CAA4B;AAAA;;AACtG,SAAOD,YAAY,CAAC7xB,GAAD,EAAM2xB,kBAAkB,CAAC3xB,GAAD,CAAlB,GAA0B8xB,CAAhC,CAAnB;AACH;AAEM,SAASE,eAAT,CAAyBC,IAAzB,EAAuDC,IAAvD,EAA+F;AAElG,MAAIC,IAAI,GAAG/C,MAAM,CAAC6C,IAAD,CAAN,IAAgBA,IAA3B;AACA,MAAIG,IAAI,GAAGhD,MAAM,CAAC8C,IAAD,CAAN,IAAgBA,IAA3B;;AAEA,MAAI;AACA,QAAIC,IAAI,IAAIC,IAAZ,EAAkB;AACd,UAAID,IAAI,KAAKC,IAAb,EAAmB;AACf,eAAO,IAAP;AACH;;AAED,aAAO,KAAP;AACH;AACJ,GARD,CAQE,OAAOt2B,GAAP,EAAY,CACV;AACH;;AAED,MAAIu2B,UAAU,GAAG9C,oBAAoB,CAAC0C,IAAD,CAArC;AACA,MAAIK,UAAU,GAAG/C,oBAAoB,CAAC2C,IAAD,CAArC;;AAEA,MAAIZ,QAAQ,CAACe,UAAD,EAAaC,UAAb,CAAZ,EAAsC;AAClC,WAAO,IAAP;AACH;;AAED,MAAIC,OAAO,GAAGlE,SAAS,CAAC8D,IAAD,CAAvB;AACA,MAAIK,OAAO,GAAGnE,SAAS,CAAC+D,IAAD,CAAvB;;AAEA,MAAIG,OAAO,IAAIjB,QAAQ,CAAC/B,oBAAoB,CAACgD,OAAD,CAArB,EAAgCD,UAAhC,CAAvB,EAAoE;AAChE,WAAO,KAAP;AACH;;AAED,MAAIE,OAAO,IAAIlB,QAAQ,CAAC/B,oBAAoB,CAACiD,OAAD,CAArB,EAAgCH,UAAhC,CAAvB,EAAoE;AAChE,WAAO,KAAP;AACH;;AAED,SAAO,KAAP;AACH;AAEM,SAASI,WAAT,CAAqBnT,OAArB,EAA8CoT,MAA9C,EAAgF;AAEnF,MAAI,OAAOpT,OAAP,KAAmB,QAAvB,EAAiC;AAE7B,QAAI,OAAOoT,MAAP,KAAkB,QAAtB,EAAgC;AAC5B,aAAOpT,OAAO,KAAKyO,QAAZ,IAAwB2E,MAAM,KAAKpT,OAA1C;AACH;;AAED,QAAIsO,OAAO,CAAC8E,MAAD,CAAX,EAAqB;AACjB,aAAO,KAAP;AACH;;AAED,QAAIr4B,KAAK,CAACC,OAAN,CAAco4B,MAAd,CAAJ,EAA2B;AACvB,aAAO,KAAP;AACH;AACJ;;AAED,MAAI9E,OAAO,CAACtO,OAAD,CAAX,EAAsB;AAElB,QAAIsO,OAAO,CAAC8E,MAAD,CAAX,EAAqB;AACjB,aAAOpT,OAAO,CAACpmB,QAAR,OAAuBw5B,MAAM,CAACx5B,QAAP,EAA9B;AACH;;AAED,QAAImB,KAAK,CAACC,OAAN,CAAco4B,MAAd,CAAJ,EAA2B;AACvB,aAAO,KAAP;AACH,KARiB,CAUlB;;;AACA,WAAOzlB,OAAO,CAACylB,MAAM,CAAC53B,KAAP,CAAawkB,OAAb,CAAD,CAAd;AACH;;AAED,MAAIjlB,KAAK,CAACC,OAAN,CAAcglB,OAAd,CAAJ,EAA4B;AAExB,QAAIjlB,KAAK,CAACC,OAAN,CAAco4B,MAAd,CAAJ,EAA2B;AACvB,aAAOpsB,IAAI,CAACC,SAAL,CAAe+Y,OAAf,MAA4BhZ,IAAI,CAACC,SAAL,CAAemsB,MAAf,CAAnC;AACH;;AAED,QAAI9E,OAAO,CAAC8E,MAAD,CAAX,EAAqB;AACjB,aAAO,KAAP;AACH;;AAED,WAAOpT,OAAO,CAACqT,IAAR,CAAa,UAAAC,UAAU;AAAA,aAAIH,WAAW,CAACG,UAAD,EAAaF,MAAb,CAAf;AAAA,KAAvB,CAAP;AACH;;AAED,SAAO,KAAP;AACH;AAEM,SAASG,sBAAT,CAAgCvT,OAAhC,EAAkE;AACrE,MAAIjlB,KAAK,CAACC,OAAN,CAAcglB,OAAd,CAAJ,EAA4B;AACxB,iBAAYA,OAAO,CAACvlB,IAAR,CAAa,KAAb,CAAZ;AACH,GAFD,MAEO,IAAI6zB,OAAO,CAACtO,OAAD,CAAX,EAAsB;AACzB,uBAAkBA,OAAO,CAACpmB,QAAR,EAAlB;AACH,GAFM,MAEA;AACH,WAAOomB,OAAO,CAACpmB,QAAR,EAAP;AACH;AACJ;AAEM,SAAS45B,gBAAT,CAA0BzqB,GAA1B,EAAiD;AAEpD,MAAI3H,MAAJ;;AAEA,MAAI2H,GAAG,CAACvN,KAAJ,CAAU,0BAAV,CAAJ,EAA2C;AACvC4F,UAAM,GAAG2H,GAAT;AACH,GAFD,MAEO;AACH,WAAOnI,SAAS,EAAhB;AACH;;AAEDQ,QAAM,GAAGA,MAAM,CAACsH,KAAP,CAAa,GAAb,EAAkBuE,KAAlB,CAAwB,CAAxB,EAA2B,CAA3B,EAA8BxS,IAA9B,CAAmC,GAAnC,CAAT;AAEA,SAAO2G,MAAP;AACH;AAEM,SAASqyB,aAAT,CAAuB/yB,GAAvB,EAAoD+d,QAApD,EAAyEle,KAAzE,EAAgGmzB,OAAhG,EAAuJ;AAAA,MAA9EnzB,KAA8E;AAA9EA,SAA8E,GAA7D,IAA6D;AAAA;;AAAA,MAAvDmzB,OAAuD;AAAvDA,WAAuD,GAApCC,QAAoC;AAAA;;AAE1J,MAAIp0B,OAAJ;;AAEA,MAAImoB,KAAK,GAAG,SAARA,KAAQ,GAAM;AAEd,QAAIlmB,cAAc,CAACd,GAAD,CAAlB,EAAyB;AAErB,UAAInB,OAAJ,EAAa;AACTE,oBAAY,CAACF,OAAD,CAAZ;AACH;;AAED,aAAOkf,QAAQ,EAAf;AACH;;AAED,QAAIiV,OAAO,IAAI,CAAf,EAAkB;AACdj0B,kBAAY,CAACF,OAAD,CAAZ;AACH,KAFD,MAEO;AACHm0B,aAAO,IAAInzB,KAAX;AACAhB,aAAO,GAAGxC,UAAU,CAAC2qB,KAAD,EAAQnnB,KAAR,CAApB;AACH;AACJ,GAjBD;;AAmBAmnB,OAAK;AAEL,SAAO;AACHrqB,UADG,oBACM;AACL,UAAIkC,OAAJ,EAAa;AACTE,oBAAY,CAACF,OAAD,CAAZ;AACH;AACJ;AALE,GAAP;AAOH,C,CAED;;AACO,SAASq0B,QAAT,CAAkB5V,GAAlB,EAA0C;AAE7C,MAAI;AACA,QAAIA,GAAG,KAAK7hB,MAAZ,EAAoB;AAChB,aAAO,IAAP;AACH;AACJ,GAJD,CAIE,OAAOK,GAAP,EAAY;AACV,QAAIA,GAAG,IAAIA,GAAG,CAAC6K,OAAJ,KAAgBunB,mBAA3B,EAAgD;AAC5C,aAAO,IAAP;AACH;AACJ;;AAED,MAAI;AACA,QAAIx0B,MAAM,CAACuE,SAAP,CAAiB/E,QAAjB,CAA0B0C,IAA1B,CAA+B0hB,GAA/B,MAAwC,iBAA5C,EAA+D;AAC3D,aAAO,IAAP;AACH;AACJ,GAJD,CAIE,OAAOxhB,GAAP,EAAY;AACV,QAAIA,GAAG,IAAIA,GAAG,CAAC6K,OAAJ,KAAgBunB,mBAA3B,EAAgD;AAC5C,aAAO,IAAP;AACH;AACJ;;AAED,MAAI;AACA,QAAIzyB,MAAM,CAACC,MAAP,IAAiB4hB,GAAG,YAAY7hB,MAAM,CAACC,MAA3C,EAAmD;AAC/C,aAAO,IAAP;AACH;AACJ,GAJD,CAIE,OAAOI,GAAP,EAAY;AACV,QAAIA,GAAG,IAAIA,GAAG,CAAC6K,OAAJ,KAAgBunB,mBAA3B,EAAgD;AAC5C,aAAO,IAAP;AACH;AACJ;;AAED,MAAI;AACA,QAAI5Q,GAAG,IAAIA,GAAG,CAAC6D,IAAJ,KAAa7D,GAAxB,EAA6B;AACzB,aAAO,IAAP;AACH;AACJ,GAJD,CAIE,OAAOxhB,GAAP,EAAY;AACV,QAAIA,GAAG,IAAIA,GAAG,CAAC6K,OAAJ,KAAgBunB,mBAA3B,EAAgD;AAC5C,aAAO,IAAP;AACH;AACJ;;AAED,MAAI;AACA,QAAI5Q,GAAG,IAAIA,GAAG,CAACnW,MAAJ,KAAemW,GAA1B,EAA+B;AAC3B,aAAO,IAAP;AACH;AACJ,GAJD,CAIE,OAAOxhB,GAAP,EAAY;AACV,QAAIA,GAAG,IAAIA,GAAG,CAAC6K,OAAJ,KAAgBunB,mBAA3B,EAAgD;AAC5C,aAAO,IAAP;AACH;AACJ;;AAED,MAAI;AACA,QAAI5Q,GAAG,IAAIA,GAAG,CAACqI,GAAJ,KAAYrI,GAAvB,EAA4B;AACxB,aAAO,IAAP;AACH;AACJ,GAJD,CAIE,OAAOxhB,GAAP,EAAY;AACV,QAAIA,GAAG,IAAIA,GAAG,CAAC6K,OAAJ,KAAgBunB,mBAA3B,EAAgD;AAC5C,aAAO,IAAP;AACH;AACJ;;AAED,MAAI;AACA,QAAI3tB,IAAI,CAAC+c,GAAG,KAAKA,GAAT,CAAJ,KAAsB,oBAA1B,EAAgD;AAAE;AAC9C,aAAO,KAAP;AACH;AAEJ,GALD,CAKE,OAAOxhB,GAAP,EAAY;AACV,WAAO,IAAP;AACH;;AAED,MAAI;AACA,QAAIwhB,GAAG,IAAIA,GAAG,CAAC6V,mCAAJ,KAA4C,oBAAvD,EAA6E;AACzE,aAAO,KAAP;AACH;AAEJ,GALD,CAKE,OAAOr3B,GAAP,EAAY;AACV,WAAO,IAAP;AACH;;AAED,SAAO,KAAP;AACH;AAEM,SAASs3B,SAAT,GAA+B;AAClC,SAAQ,OAAO33B,MAAP,KAAkB,WAAlB,IAAiC,OAAOA,MAAM,CAAC2F,QAAd,KAA2B,WAApE;AACH;AAEM,SAASiyB,eAAT,CAAyB3yB,MAAzB,EAAoD;AACvD,MAAI,CAAC0yB,SAAS,EAAd,EAAkB;AACd,WAAO,KAAP;AACH;;AAED,SAAQlzB,SAAS,OAAOQ,MAAxB;AACH;AAEM,SAAS4yB,YAAT,CAAsB5yB,MAAtB,EAAiD;AACpD,SAAOA,MAAM,CAACvE,OAAP,CAAe2H,QAAQ,CAAC+pB,IAAxB,MAAkC,CAAzC;AACH;AAEM,SAAS0F,gBAAT,CAA0BlrB,GAA1B,EAAiD;AACpD,MAAI,CAACirB,YAAY,CAACR,gBAAgB,CAACzqB,GAAD,CAAjB,CAAjB,EAA0C;AACtC,WAAOA,GAAP;AACH;;AAED,MAAI,IAAJ,EAAe;AACX,UAAM,IAAInN,KAAJ,4CAAN;AACH;;AAED,SAAOmN,GAAG,CAAClP,OAAJ,CAAY,iBAAZ,EAA+Bo1B,eAAe,CAAC9yB,MAAD,CAA9C,CAAP;AACH;AAEM,SAAS+3B,WAAT,CAAqBxzB,GAArB,EAAkD;AACrD,MAAI;AACAA,OAAG,CAAC6iB,KAAJ;AACH,GAFD,CAEE,OAAO/mB,GAAP,EAAY,CACV;AACH;AACJ;AAEM,SAAS23B,iBAAT,CAA2BzzB,GAA3B,EAAuE;AAC1E,MAAIK,YAAY,CAACL,GAAD,CAAhB,EAAuB;AACnB,WAAO4uB,gBAAgB,CAAC5uB,GAAD,CAAhB,CAAsB0zB,YAA7B;AACH;;AAHyE,8CAKtDlnB,QAAQ,CAACoV,gBAAT,CAA0B,QAA1B,CALsD,gDAKjB;AAApD,QAAMsC,KAAK,+BAAX;;AACD,QAAIA,KAAK,IAAIA,KAAK,CAACH,aAAf,IAAgCG,KAAK,CAACH,aAAN,KAAwB/jB,GAA5D,EAAiE;AAC7D,aAAOkkB,KAAP;AACH;AACJ;AACJ,C;;AClhCD;AACO,IAAMyP,KAAK,GAAG,IAAd,C;;ACDP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;;;;;;;;ACDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,IAAMC,IAAI,SAAV;AAEA,IAAMlG,QAAQ,UAASkG,IAAT,OAAd;AAEA,IAAMC,YAAY,GAAG;AACxBC,MAAI,EAAgBF,IAAhB,UADoB;AAExBG,OAAK,EAAeH,IAAf,WAFmB;AAGxBI,eAAa,EAAOJ,IAAP,mBAHW;AAIxBK,OAAK,EAAeL,IAAf,WAJmB;AAKxBM,aAAW,EAASN,IAAT,iBALa;AAMxBO,UAAQ,EAAYP,IAAZ,cANgB;AAOxBQ,QAAM,EAAcR,IAAd,YAPkB;AAQxBS,UAAQ,EAAYT,IAAZ,cARgB;AASxBU,gBAAc,EAAMV,IAAN,oBATU;AAUxB1sC,OAAK,EAAe0sC,IAAf,WAVmB;AAWxBW,MAAI,EAAgBX,IAAhB,UAXoB;AAYxBY,MAAI,EAAgBZ,IAAhB;AAZoB,CAArB;AAeA,IAAMa,UAAU,GAAG;AACtBC,QAAM,UADgB;AAEtBC,QAAM,UAFgB;AAGtBC,UAAQ,YAHc;AAItBC,SAAO,WAJe;AAKtBC,QAAM;AALgB,CAAnB;AAQA,IAAMC,aAAa,GAAG;AACzBC,KAAG,EAAE,KADoB;AAEzBC,KAAG,EAAE;AAFoB,CAAtB;AAKA,IAAMC,iBAAiB,GAAG;AAC7BC,QAAM,UADuB;AAE7BC,KAAG,OAF0B;AAG7BC,QAAM,UAHuB;AAI7BC,QAAM;AAJuB,CAA1B;AAOA,IAAMC,eAA+B,GAAG77B,MAAM,CAACC,IAAP,CAAY86B,UAAZ,EAAwB36B,GAAxB,CAA4B,UAAAD,GAAG;AAAA,SAAI46B,UAAU,CAAC56B,GAAD,CAAd;AAAA,CAA/B,CAAxC;AAEA,IAAM27B,aAAa,GAAG;AACzB1rC,QAAM,UADmB;AAEzBmkC,OAAK;AAFoB,CAAtB;AAKA,IAAMwH,WAAW,GAAG;AACvB7B,MAAI,OAAmBA,IADA;AAEvB8B,QAAM,EAAiB9B,IAAjB,YAFiB;AAGvB+B,iBAAe,EAAQ/B,IAAR,qBAHQ;AAIvBgC,iBAAe,EAAQhC,IAAR,qBAJQ;AAKvBjK,SAAO,EAAgBiK,IAAhB,aALgB;AAMvBiC,WAAS,EAAcjC,IAAd;AANc,CAApB;AASA,IAAMkC,MAAM,GAAG;AAClB7B,OAAK,EAAML,IAAN;AADa,CAAf;AAIA,IAAMmC,UAAU,GAAG;AACtBC,oBAAkB,iBAAgBpC,IAAhB;AADI,CAAnB;AAIA,IAAMqC,eAAe,GAAG;AAC3BC,gBAAc,EAAMtC,IAAN,oBADa;AAE3BuC,gBAAc,EAAMvC,IAAN,oBAFa;AAG3BwC,gBAAc,EAAMxC,IAAN,oBAHa;AAI3ByC,gBAAc,EAAMzC,IAAN;AAJa,CAAxB;AAOA,IAAM0C,WAAW,GAAG;AACvBC,OAAK,EAAE;AADgB,CAApB;AAIA,IAAMC,aAAa,GAAG;AACzBC,aAAW,EAAY,aADE;AAEzBC,YAAU,EAAa,YAFE;AAGzBC,gBAAc,EAAS,gBAHE;AAIzBC,aAAW,EAAY,aAJE;AAKzBC,uBAAqB,EAAE;AALE,CAAtB;AAQA,IAAMC,kBAAkC,GAAGp9B,MAAM,CAACC,IAAP,CAAY67B,aAAZ,EAA2B17B,GAA3B,CAA+B,UAAAD,GAAG;AAAA,SAAI27B,aAAa,CAAC37B,GAAD,CAAjB;AAAA,CAAlC,CAA3C;AAEA,IAAMw6B,QAAQ,GAAG;AACpB0C,eAAa,EAAE,eADK;AAEpBC,eAAa,EAAE;AAFK,CAAjB;AAKA,IAAMjJ,QAAQ,GAAG,GAAjB;AAEA,IAAMkJ,kBAAkB,GAAG;AAC9BC,OAAK,EAAG,GADsB;AAE9B12C,QAAM,EAAE;AAFsB,CAA3B,C;;;;;;;AC3FP;AAAA;AAAA;AAEO,IAAIuuB,MAAe,GAAGtT,MAAM,CAAC07B,uDAAS,CAACC,YAAV,CAAuBC,SAAxB,CAAN,GAA2C57B,MAAM,CAAC07B,uDAAS,CAACC,YAAV,CAAuBC,SAAxB,CAAN,IAA4C,EAA7G,C,CAEP;;AAEAtoB,MAAM,CAACuoB,YAAP,GAAsB,YAAM,CACxB;AACH,CAFD,C;;;;;;;;;ACNO,IAAIH,SAAS,GAAG;AAEnBI,mBAAiB,EAAE;AACfC,WAAO,EAAG,2BADK;AAEfC,YAAQ,EAAE,4BAFK;AAGfC,OAAG,EAAO;AAHK,GAFA;AAQnBC,kBAAgB,EAAE;AACdC,WAAO,EAAE,SADK;AAEd1wC,SAAK,EAAI;AAFK,GARC;AAanB2wC,oBAAkB,EAAE;AAChBC,UAAM,EAAO,kBADG;AAEhBC,SAAK,EAAQ,iBAFG;AAGhBC,eAAW,EAAE;AAHG,GAbD;AAmBnBC,cAAY,EAAE;AACVC,YAAQ,EAAE,UADA;AAEVjK,SAAK,EAAK,OAFA;AAGVnkC,UAAM,EAAI;AAHA,GAnBK;AAyBnBstC,cAAY,EAAE;AACVC,aAAS,EAAE;AADD,GAzBK;AA6BnBc,qBAAmB,EAAE;AACjBL,UAAM,EAAS,kBADE;AAEjB5wC,SAAK,EAAU,iBAFE;AAGjBkxC,WAAO,EAAQ,mBAHE;AAIjBC,iBAAa,EAAE,yBAJE;AAKjBC,SAAK,EAAU;AALE,GA7BF;AAqCnBC,iBAAe,EAAE;AACb1E,gBAAY,EAAE,wBADD;AAEb2E,UAAM,EAAQ,kBAFD;AAGblD,UAAM,EAAQ;AAHD,GArCE;AA2CnBmD,eAAa,EAAE,OA3CI;AA4CnBC,eAAa,EAAE,OA5CI;AA8CnBC,oBAAkB,EAAE,sBA9CD;AA+CnBC,iBAAe,EAAK,qBA/CD;AAiDnB7K,UAAQ,EAAE;AAjDS,CAAhB;AAoDA,IAAM8J,kBAAkB,GAAG;AAC9BC,QAAM,EAAO,kBADiB;AAE9BC,OAAK,EAAQ,iBAFiB;AAG9BC,aAAW,EAAE;AAHiB,CAA3B;AAMA,IAAIa,uBAAuC,GAAGn/B,MAAM,CAACC,IAAP,CAAYk+B,kBAAZ,EAChD/9B,GADgD,CAC5C,UAAAD,GAAG;AAAA,SAAIg+B,kBAAkB,CAACh+B,GAAD,CAAtB;AAAA,CADyC,CAA9C,C;;;;AC1DP;AAEO,IAAIyzB,MAAe,GAAG;AAEzBwL,yBAAuB,EAAG,iCAAiCr9B,MAAlC,GACnBA,MAAM,CAACs9B,2BADY,GAEnBC,IAJmB;AAMzBC,gBAAc,EAAQ,IANG;AAOzBC,sBAAoB,EAAE,IAPG;AASzBC,aAAW,EAAG19B,MAAM,CAACgK,SAAP,CAAiBZ,SAAjB,CAA2B/J,KAA3B,CAAiC,OAAjC,MAA8C,CAAC,CAA/C,IAAoD,CAAC4U,KAAtD,GAAkE,KAAlE,GAA0E,IAT9D;AAUzB0pB,aAAW,EAAE1pB,MAAQ,GAAG,SAAH,GAAU,CAAC,CAVP;AAYzB2pB,8BAA4B,qDACtBlC,SAAS,CAACoB,eAAV,CAA0B1E,YADJ,IACoB,IADpB,wBAEtBsD,SAAS,CAACoB,eAAV,CAA0BC,MAFJ,IAEoB,IAFpB,wBAGtBrB,SAAS,CAACoB,eAAV,CAA0BjD,MAHJ,IAGoB,IAHpB,wBAZH;AAkBzBgE,mBAAiB,EAAE;AAlBM,CAAtB;;AAqBP,IAAI79B,MAAM,CAAC2F,QAAP,CAAgB8K,IAAhB,CAAqB/P,OAArB,CAA6Bg7B,SAAS,CAACuB,aAAvC,MAA0D,CAA9D,EAAiE;AAC7DpL,QAAM,CAACwL,uBAAP,GAAiC,IAAjC;AACH,C;;ACzBD;AAAA;AAAA;AAAA;AAAA;;;;;;;;ACFA;AAAe,SAASS,QAAT,GAAoB;AACjCA,UAAQ,GAAG7/B,MAAM,CAAC2N,MAAP,IAAiB,UAAUuX,MAAV,EAAkB;AAC5C,SAAK,IAAItgB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0C,SAAS,CAACxE,MAA9B,EAAsC8B,CAAC,EAAvC,EAA2C;AACzC,UAAIyC,MAAM,GAAGC,SAAS,CAAC1C,CAAD,CAAtB;;AAEA,WAAK,IAAIzE,GAAT,IAAgBkH,MAAhB,EAAwB;AACtB,YAAIrH,MAAM,CAACuE,SAAP,CAAiByH,cAAjB,CAAgC9J,IAAhC,CAAqCmF,MAArC,EAA6ClH,GAA7C,CAAJ,EAAuD;AACrD+kB,gBAAM,CAAC/kB,GAAD,CAAN,GAAckH,MAAM,CAAClH,GAAD,CAApB;AACD;AACF;AACF;;AAED,WAAO+kB,MAAP;AACD,GAZD;;AAcA,SAAO2a,QAAQ,CAAC35B,KAAT,CAAe,IAAf,EAAqBoB,SAArB,CAAP;AACD,C;;;;;;;ACfD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAEA;AAEA,IAAMw4B,YAAY,GAAG,EAArB;AAEO,SAASC,SAAT,GAA8B;AACjC,MAAI,OAAOh+B,MAAP,KAAkB,WAAtB,EAAmC;AAC/B,WAAOA,MAAP;AACH;;AACD,MAAI,OAAOsT,MAAP,KAAkB,WAAtB,EAAmC;AAC/B,WAAOA,MAAP;AACH;;AACD,SAAOyqB,YAAP;AACH,C,CAED;;AACO,SAASntB,OAAT,CAAoB5M,MAApB,EAAmEwK,OAAnE,EAA+I;AAAA,MAA5EA,OAA4E;AAA5EA,WAA4E,GAA7C,EAA6C;AAAA;;AAElJ,MAAMyvB,KAAyD,GAAG,EAAlE,CAFkJ,CAIlJ;;AACA,SAAO,SAASxM,gBAAT,GAA6D;AAAA,sCAAhCvtB,IAAgC;AAAhCA,UAAgC;AAAA;;AAEhE,QAAI9F,GAAJ;;AAEA,QAAI;AACAA,SAAG,GAAGyM,IAAI,CAACC,SAAL,CAAelM,KAAK,CAAC4D,SAAN,CAAgBsO,KAAhB,CAAsB3Q,IAAtB,CAA2BoF,SAA3B,CAAf,CAAN;AACH,KAFD,CAEE,OAAOlF,GAAP,EAAY;AACV,YAAM,IAAIZ,KAAJ,4DAAN;AACH;;AAED,QAAM4D,IAAI,GAAGmL,OAAO,CAACnL,IAArB;;AAEA,QAAI46B,KAAK,CAAC7/B,GAAD,CAAL,IAAciF,IAAd,IAAuBgb,IAAI,CAACC,GAAL,KAAa2f,KAAK,CAAC7/B,GAAD,CAAL,CAAWiF,IAAzB,GAAiCA,IAA3D,EAAiE;AAC7D,aAAO46B,KAAK,CAAC7/B,GAAD,CAAZ;AACH;;AAED,QAAM8/B,IAAI,GAAGF,SAAS,EAAtB;;AAEA,QAAIE,IAAI,CAACC,oBAAL,IAA6BF,KAAK,CAAC7/B,GAAD,CAAlC,IAA2C6/B,KAAK,CAAC7/B,GAAD,CAAL,CAAWiF,IAAX,GAAkB66B,IAAI,CAACC,oBAAtE,EAA4F;AACxF,aAAOF,KAAK,CAAC7/B,GAAD,CAAZ;AACH;;AAED,QAAI6/B,KAAK,CAAC7/B,GAAD,CAAT,EAAgB;AACZ,aAAO6/B,KAAK,CAAC7/B,GAAD,CAAL,CAAWmB,KAAlB;AACH;;AAED0+B,SAAK,CAAC7/B,GAAD,CAAL,GAAa;AACTiF,UAAI,EAAGgb,IAAI,CAACC,GAAL,EADE;AAET/e,WAAK,EAAEyE,MAAM,CAACG,KAAP,CAAa,IAAb,EAAmBoB,SAAnB;AAFE,KAAb;AAKA,WAAO04B,KAAK,CAAC7/B,GAAD,CAAL,CAAWmB,KAAlB;AACH,GAhCD;AAiCH;AAEM,SAAS6+B,OAAT,CAAiB5c,GAAjB,EAAwC;AAC3C,MAAI1d,IAAI,GAAG,CAAX;;AACA,OAAK,IAAIjB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2e,GAAG,CAACzgB,MAAxB,EAAgC8B,CAAC,EAAjC,EAAqC;AACjCiB,QAAI,IAAI0d,GAAG,CAAC3e,CAAD,CAAH,CAAOw7B,UAAP,CAAkB,CAAlB,IAAuBvvB,IAAI,CAACwvB,GAAL,CAAUz7B,CAAC,GAAG,EAAL,GAAW,CAApB,EAAuB,CAAvB,CAA/B;AACH;;AACD,SAAOiM,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACwvB,GAAL,CAASxvB,IAAI,CAACyvB,IAAL,CAAUz6B,IAAV,CAAT,EAA0B,CAA1B,CAAX,CAAP;AACH;AAEM,SAAS06B,UAAT,CAAoBhd,GAApB,EAA2C;AAC9C,MAAI1d,IAAI,GAAG,EAAX;;AAEA,OAAK,IAAIjB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2e,GAAG,CAACzgB,MAAxB,EAAgC8B,CAAC,EAAjC,EAAqC;AACjC,QAAI47B,KAAK,GAAIjd,GAAG,CAAC3e,CAAD,CAAH,CAAOw7B,UAAP,CAAkB,CAAlB,IAAuBx7B,CAApC;;AAEA,QAAI2e,GAAG,CAAC3e,CAAC,GAAG,CAAL,CAAP,EAAgB;AACZ47B,WAAK,IAAKjd,GAAG,CAAC3e,CAAC,GAAG,CAAL,CAAH,CAAWw7B,UAAX,CAAsB,CAAtB,KAA4Bx7B,CAAC,GAAG,CAAhC,CAAV;AACH;;AAEDiB,QAAI,IAAI46B,MAAM,CAACC,YAAP,CAAoB,KAAM7vB,IAAI,CAAC8P,GAAL,CAAS6f,KAAT,IAAkB,EAA5C,CAAR;AACH;;AAED,SAAO36B,IAAP;AACH;AAEM,SAASzE,KAAT,CAAemiB,GAAf,EAA6BqC,OAA7B,EAAyD;AAC5D,MAAM+a,QAAQ,GAAGpd,GAAG,CAACniB,KAAJ,CAAUwkB,OAAV,CAAjB;;AACA,MAAI+a,QAAJ,EAAc;AACV,WAAOA,QAAQ,CAAC,CAAD,CAAf;AACH;AACJ;AAEM,SAASC,QAAT,CAAkB/+B,IAAlB,EAAyC;AAC5C,SAAO+K,IAAI,CAACC,SAAL,CAAehL,IAAf,EAAqB,UAAC1B,GAAD,EAAMyW,GAAN,EAAc;AAEtC,QAAI,OAAOA,GAAP,KAAe,UAAnB,EAA+B;AAC3B,mBAAY,OAAOA,GAAnB;AACH;;AAED,QAAI;AACAhK,UAAI,CAACC,SAAL,CAAe+J,GAAf;AACH,KAFD,CAEE,OAAOxU,GAAP,EAAY;AACV,mBAAY,OAAOwU,GAAnB;AACH;;AAED,WAAOA,GAAP;AACH,GAbM,CAAP;AAcH;AAUM,SAAS4P,YAAT,GAAmC;AAEtC,MAAMqa,SAAS,GAAG,EAAlB;AAEA,SAAO;AACHC,UADG,kBACI/6B,MADJ,EACiD;AAChD86B,eAAS,CAACn+B,IAAV,CAAeqD,MAAf;AAEA,aAAO;AACH9C,cADG,oBACM;AACL49B,mBAAS,CAAC39B,MAAV,CAAiB29B,SAAS,CAACp+B,OAAV,CAAkBsD,MAAlB,CAAjB,EAA4C,CAA5C;AACH;AAHE,OAAP;AAKH,KATE;AAWH8B,QAXG,gBAWE9B,MAXF,EAWqB;AACpB,UAAM8gB,QAAQ,GAAG,KAAKia,MAAL,CAAY,SAASC,YAAT,GAAwB;AACjDh7B,cAAM,CAACG,KAAP,CAAa,IAAb,EAAmBoB,SAAnB;AACAuf,gBAAQ,CAAC5jB,MAAT;AACH,OAHgB,CAAjB;AAIH,KAhBE;AAkBH6jB,WAlBG,qBAkBsC;AAAA,8BACd+Z,SADc,gBACH;AAA7B,YAAMha,QAAQ,GAAIga,SAAJ,KAAd;AACDha,gBAAQ,MAAR;AACH;AACJ;AAtBE,GAAP;AAwBH;AAEM,SAASma,QAAT,CAA4Bpd,GAA5B,EAA0CzjB,GAA1C,EAA0E;AAC7E,SAAO,IAAIwD,sEAAJ,CAAiB,UAAAL,OAAO,EAAI;AAE/B,QAAIhC,KAAK,GAAGsiB,GAAG,CAACzjB,GAAD,CAAf;;AAEA,QAAImB,KAAJ,EAAW;AACP,aAAOgC,OAAO,CAAChC,KAAD,CAAd;AACH;;AAED,WAAOsiB,GAAG,CAACzjB,GAAD,CAAV;AAEAH,UAAM,CAAC0kB,cAAP,CAAsBd,GAAtB,EAA2BzjB,GAA3B,EAAgC;AAE5BwkB,kBAAY,EAAE,IAFc;AAI5BK,SAJ4B,eAIxBnjB,IAJwB,EAIlB;AACNP,aAAK,GAAGO,IAAR;;AAEA,YAAIP,KAAJ,EAAW;AACPgC,iBAAO,CAAChC,KAAD,CAAP;AACH;AACJ,OAV2B;AAY5BgP,SAZ4B,iBAYd;AACV,eAAOhP,KAAP;AACH;AAd2B,KAAhC;AAgBH,GA1BM,CAAP;AA2BH;AAEM,SAASilB,cAAT,CAAwBnkB,GAAxB,EAAqCsd,KAArC,EAAkE;AAAA,MAA7BA,KAA6B;AAA7BA,SAA6B,GAAZ,CAAY;AAAA;;AAErE,MAAIA,KAAK,IAAI,CAAb,EAAgB;AACZ,WAAO,+BAAP;AACH;;AAED,MAAI;AACA,QAAI,CAACtd,GAAL,EAAU;AACN,kCAA2BpC,MAAM,CAACuE,SAAP,CAAiB/E,QAAjB,CAA0B0C,IAA1B,CAA+BE,GAA/B,CAA3B;AACH;;AAED,QAAI,OAAOA,GAAP,KAAe,QAAnB,EAA6B;AACzB,aAAOA,GAAP;AACH;;AAED,QAAIA,GAAG,YAAYZ,KAAnB,EAA0B;AACtB,UAAM0C,KAAK,GAAG9B,GAAG,IAAIA,GAAG,CAAC8B,KAAzB;AACA,UAAM+I,OAAO,GAAG7K,GAAG,IAAIA,GAAG,CAAC6K,OAA3B;;AAEA,UAAI/I,KAAK,IAAI+I,OAAb,EAAsB;AAClB,YAAI/I,KAAK,CAACzB,OAAN,CAAcwK,OAAd,MAA2B,CAAC,CAAhC,EAAmC;AAC/B,iBAAO/I,KAAP;AACH,SAFD,MAEO;AACH,iBAAW+I,OAAX,UAAyB/I,KAAzB;AACH;AACJ,OAND,MAMO,IAAIA,KAAJ,EAAW;AACd,eAAOA,KAAP;AACH,OAFM,MAEA,IAAI+I,OAAJ,EAAa;AAChB,eAAOA,OAAP;AACH;AACJ;;AAED,QAAI,OAAO7K,GAAG,CAAC5C,QAAX,KAAwB,UAA5B,EAAwC;AACpC,aAAO4C,GAAG,CAAC5C,QAAJ,EAAP;AACH;;AAED,WAAOQ,MAAM,CAACuE,SAAP,CAAiB/E,QAAjB,CAA0B0C,IAA1B,CAA+BE,GAA/B,CAAP;AAEH,GAhCD,CAgCE,OAAO6+B,MAAP,EAAe;AAAE;AACf,gDAA2C1a,cAAc,CAAC0a,MAAD,EAASvhB,KAAK,GAAG,CAAjB,CAAzD;AACH;AACJ;AAEM,SAASwhB,qBAAT,CAA+B9+B,GAA/B,EAAqD;AAExD,MAAM++B,cAAc,wBAAuBnhC,MAAM,CAACuE,SAAP,CAAiB/E,QAAjB,CAA0B0C,IAA1B,CAA+BE,GAA/B,CAAvB,MAApB;;AAEA,MAAI,CAACA,GAAL,EAAU;AACN,WAAO++B,cAAP;AACH;;AAED,MAAI/+B,GAAG,YAAYZ,KAAnB,EAA0B;AACtB,WAAOY,GAAG,CAAC6K,OAAJ,IAAek0B,cAAtB;AACH;;AAED,MAAI,OAAO/+B,GAAG,CAAC6K,OAAX,KAAuB,QAA3B,EAAqC;AACjC,WAAO7K,GAAG,CAAC6K,OAAJ,IAAek0B,cAAtB;AACH;;AAED,SAAOA,cAAP;AACH;AAEM,SAASt0B,SAAT,CAAmBhL,IAAnB,EAA0C;AAC7C,MAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;AAC1B,WAAOA,IAAP;AACH;;AAED,MAAIA,IAAI,IAAI,OAAOA,IAAI,CAACrC,QAAZ,KAAyB,UAArC,EAAiD;AAC7C,WAAOqC,IAAI,CAACrC,QAAL,EAAP;AACH;;AAED,SAAOQ,MAAM,CAACuE,SAAP,CAAiB/E,QAAjB,CAA0B0C,IAA1B,CAA+BL,IAA/B,CAAP;AACH;AAEM,SAASkS,aAAT,CAAuBF,QAAvB,EAA0C7M,MAA1C,EAAqE;AACxE6M,UAAQ,GAAGA,QAAQ,CAACvF,KAAT,CAAe,KAAf,EAAsB,CAAtB,CAAX;AACA,MAAMyX,KAAK,GAAGlS,QAAQ,CAACpR,OAAT,CAAiBuE,MAAjB,CAAd;AACA,SAAQ+e,KAAK,KAAK,CAAC,CAAX,IAAgBlS,QAAQ,CAAChB,KAAT,CAAekT,KAAf,MAA0B/e,MAAlD;AACH;AAEM,SAASo6B,WAAT,CAAqBxd,GAArB,EAAmCjkB,IAAnC,EAAkDqD,OAAlD,EAAsE;AACzE,MAAMq+B,QAAQ,GAAGzd,GAAG,CAACjkB,IAAD,CAApB;;AAEAikB,KAAG,CAACjkB,IAAD,CAAH,GAAY,SAAS2hC,aAAT,GAAiC;AAAA;AAAA;;AACzC,WAAOt+B,OAAO,CAAC;AACXgD,aAAO,EAAO,IADH;AAEXC,UAAI,EAAUtF,KAAK,CAAC4D,SAAN,CAAgBsO,KAAhB,CAAsB3Q,IAAtB,CAA2BoF,SAA3B,CAFH;AAGX+5B,cAAQ,EAARA,QAHW;AAIXE,kBAAY,EAAE;AAAA,eAAMF,QAAQ,CAACn7B,KAAT,CAAe,KAAf,EAAqBoB,UAArB,CAAN;AAAA;AAJH,KAAD,CAAd;AAMH,GAPD;AAQH;AAEM,SAASk6B,QAAT,CAAkB5d,GAAlB,EAAyC;AAC5C,SAAQ,OAAOA,GAAP,KAAe,QAAf,IAA2BA,GAAG,KAAK,IAA3C;AACH;AAEM,SAASjH,MAAT,CAAuCiH,GAAvC,EAAgDvc,MAAhD,EAAqE;AACxE,MAAI,CAACA,MAAL,EAAa;AACT,WAAOuc,GAAP;AACH;;AAED,MAAI5jB,MAAM,CAAC2N,MAAX,EAAmB;AAAE;AACjB,WAAO3N,MAAM,CAAC2N,MAAP,CAAciW,GAAd,EAAmBvc,MAAnB,CAAP,CADe,CACoB;AACtC;;AAED,OAAK,IAAMlH,KAAX,IAAkBkH,MAAlB,EAA0B;AACtB,QAAIA,MAAM,CAAC2E,cAAP,CAAsB7L,KAAtB,CAAJ,EAAgC;AAC5ByjB,SAAG,CAACzjB,KAAD,CAAH,GAAWkH,MAAM,CAAClH,KAAD,CAAjB;AACH;AACJ;;AAED,SAAOyjB,GAAP;AACH;AAEM,SAAS6d,UAAT,CAA6C7d,GAA7C,EAAsDvc,MAAtD,EAA2E;AAC9E,MAAI,CAACA,MAAL,EAAa;AACT,WAAOuc,GAAP;AACH;;AAED,OAAK,IAAMzjB,KAAX,IAAkBkH,MAAlB,EAA0B;AACtB,QAAIA,MAAM,CAAC2E,cAAP,CAAsB7L,KAAtB,CAAJ,EAAgC;AAC5B,UAAIqhC,QAAQ,CAAC5d,GAAG,CAACzjB,KAAD,CAAJ,CAAR,IAAsBqhC,QAAQ,CAACn6B,MAAM,CAAClH,KAAD,CAAP,CAAlC,EAAiD;AAC7CshC,kBAAU,CAAC7d,GAAG,CAACzjB,KAAD,CAAJ,EAAWkH,MAAM,CAAClH,KAAD,CAAjB,CAAV;AACH,OAFD,MAEO;AACHyjB,WAAG,CAACzjB,KAAD,CAAH,GAAWkH,MAAM,CAAClH,KAAD,CAAjB;AACH;AACJ;AACJ;;AAED,SAAOyjB,GAAP;AACH;AAEM,SAAS8d,QAAT,CAA6B9d,GAA7B,EAAqDtiB,KAArD,EAA0E;AAC7E,OAAK,IAAMnB,KAAX,IAAkByjB,GAAlB,EAAuB;AACnB,QAAIA,GAAG,CAAC5X,cAAJ,CAAmB7L,KAAnB,KAA2ByjB,GAAG,CAACzjB,KAAD,CAAH,KAAamB,KAA5C,EAAmD;AAC/C,aAAO,IAAP;AACH;AACJ;;AACD,SAAO,KAAP;AACH;AAEM,SAAS20B,QAAT,CAAqB0L,GAArB,EAA8CrgC,KAA9C,EAAmE;AACtE,SAAOqgC,GAAG,CAACl/B,OAAJ,CAAYnB,KAAZ,MAAuB,CAAC,CAA/B;AACH,C,CAED;;AACO,SAASsgC,MAAT,CAAmBD,GAAnB,EAAmCE,KAAnC,EAAyE;AAC5E,SAAOF,GAAG,CAACG,IAAJ,CAAS,UAACv0B,CAAD,EAAQK,CAAR,EAAkB;AAC9B,WAAOi0B,KAAK,CAACp/B,OAAN,CAAc8K,CAAd,IAAmBs0B,KAAK,CAACp/B,OAAN,CAAcmL,CAAd,CAA1B;AACH,GAFM,CAAP;AAGH;AAEM,SAASm0B,UAAT,CAAoBne,GAApB,EAAyE;AAC5E,MAAMrjB,MAAM,GAAG,EAAf;;AACA,OAAK,IAAMJ,KAAX,IAAkByjB,GAAlB,EAAuB;AACnB,QAAIA,GAAG,CAAC5X,cAAJ,CAAmB7L,KAAnB,CAAJ,EAA6B;AACzBI,YAAM,CAACqjB,GAAG,CAACzjB,KAAD,CAAJ,CAAN,GAAmBA,KAAnB;AACH;AACJ;;AACD,SAAOI,MAAP;AACH,C,CAED;;AACO,SAASyhC,WAAT,CAAwBL,GAAxB,EAAwC9/B,IAAxC,EAAkD;AACrD8/B,KAAG,CAACz+B,MAAJ,CAAWy+B,GAAG,CAACl/B,OAAJ,CAAYZ,IAAZ,CAAX,EAA8B,CAA9B;AACH;AAEM,SAASgT,QAAT,CAA6BhT,IAA7B,EAA2C;AAC9C,SAAOA,IAAP;AACH;AAEM,SAAS2M,MAAT,CAAmBoV,GAAnB,EAA+D;AAClE,MAAMrjB,MAAM,GAAG,EAAf;;AACA,OAAK,IAAMJ,KAAX,IAAkByjB,GAAlB,EAAuB;AACnB,QAAIA,GAAG,CAAC5X,cAAJ,CAAmB7L,KAAnB,CAAJ,EAA6B;AACzBI,YAAM,CAACmC,IAAP,CAAYkhB,GAAG,CAACzjB,KAAD,CAAf;AACH;AACJ;;AACD,SAAOI,MAAP;AACH;AAEM,SAAS4yB,IAAT,CAAc8O,MAAd,EAA+BC,UAA/B,EAA6D;AAChE,SAAOrxB,IAAI,CAACsxB,KAAL,CAAYF,MAAM,GAAGC,UAAV,GAAwB,GAAnC,CAAP;AACH;AAEM,SAASE,GAAT,GAAwD;AAC3D,SAAOvxB,IAAI,CAACuxB,GAAL,OAAAvxB,IAAI,YAAX;AACH;AAEM,SAASyiB,GAAT,GAAwD;AAC3D,SAAOziB,IAAI,CAACyiB,GAAL,OAAAziB,IAAI,YAAX;AACH;AAEM,SAAS1P,QAAT,CAAqBoiB,GAArB,EAAmCoC,KAAnC,EAAmD3iB,OAAnD,EAA0F;AAC7F,MAAM2C,OAAO,GAAG,EAAhB,CAD6F,CAG7F;;AACA4d,KAAG,CAAC9jB,OAAJ,CAAYkmB,KAAZ,EAAmB,SAAS0c,eAAT,GAA2B;AAC1C18B,WAAO,CAACjD,IAAR,CAAaM,OAAO,CAACkD,KAAR,CAAc,IAAd,EAAoBoB,SAApB,CAAb;AACH,GAFD;AAIA,SAAO3B,OAAP;AACH,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzXD;AAEA;AACA;AAEO,IAAI28B,uBAAuB,GAAG,EAA9B;;AAGPA,uBAAuB,CAAC7E,yBAAS,CAACoB,eAAV,CAA0B1E,YAA3B,CAAvB,GAAkE,UAAC7zB,GAAD,EAA8Bi8B,iBAA9B,EAA0Dv7B,MAA1D,EAAgG;AAE9J,MAAIs4B,IAAJ,EAAyC;AACrC,QAAI;AACAj0B,yBAAO,CAAC,EAAD,CAAP,CAAwBm3B,qBAAxB,CAA8CzgC,MAA9C,EAAsDuE,GAAtD;AACH,KAFD,CAEE,OAAOlE,GAAP,EAAY;AACV;AACH;AACJ;;AAED,MAAIqgC,OAAJ;;AAEA,MAAI9hC,KAAK,CAACC,OAAN,CAAcoG,MAAd,CAAJ,EAA2B;AACvBy7B,WAAO,GAAGz7B,MAAV;AACH,GAFD,MAEO,IAAI,OAAOA,MAAP,KAAkB,QAAtB,EAAgC;AACnCy7B,WAAO,GAAG,CAAEz7B,MAAF,CAAV;AACH,GAFM,MAEA;AACHy7B,WAAO,GAAG,CAAEhF,yBAAS,CAACpJ,QAAZ,CAAV;AACH;;AAEDoO,SAAO,GAAGA,OAAO,CAACriC,GAAR,CAAY,UAAAsiC,GAAG,EAAI;AAEzB,QAAIA,GAAG,CAACjgC,OAAJ,CAAYg7B,yBAAS,CAACsB,aAAtB,MAAyC,CAA7C,EAAgD;AAE5C,UAAIh9B,MAAM,CAAC2F,QAAP,CAAgByC,QAAhB,KAA6BszB,yBAAS,CAACuB,aAA3C,EAA0D;AACtD,eAAOvB,yBAAS,CAACpJ,QAAjB;AACH;;AAED,UAAI,CAACW,2CAAoB,CAAC1uB,GAAD,CAAzB,EAAgC;AAC5B,cAAM,IAAI9E,KAAJ,iDAAyDkhC,GAAzD,2CAAN;AACH,OAR2C,CAU5C;;;AACA,aAAO7N,sCAAe,CAACvuB,GAAD,CAAtB;AACH;;AAED,QAAIo8B,GAAG,CAACjgC,OAAJ,CAAYg7B,yBAAS,CAACuB,aAAtB,MAAyC,CAA7C,EAAgD;AAC5C,aAAOvB,yBAAS,CAACpJ,QAAjB;AACH;;AAED,WAAOqO,GAAP;AACH,GArBS,CAAV;AAuBAD,SAAO,CAAC3gB,OAAR,CAAgB,UAAA4gB,GAAG,EAAI;AACnB,WAAOp8B,GAAG,CAACq8B,WAAJ,CAAgBJ,iBAAhB,EAAmCG,GAAnC,CAAP;AACH,GAFD;AAGH,CA9CD;;AAgDA,IAAIpD,IAAJ,EAAyC;AAAA,iBAEwBj0B,mBAAO,CAAC,EAAD,CAF/B;AAAA,MAE/Bu3B,iBAF+B,YAE/BA,iBAF+B;AAAA,MAEZC,qBAFY,YAEZA,qBAFY;AAAA,MAEWC,QAFX,YAEWA,QAFX;;AAIrCR,yBAAuB,CAAC7E,yBAAS,CAACoB,eAAV,CAA0BC,MAA3B,CAAvB,GAA4D,UAACx4B,GAAD,EAA8Bi8B,iBAA9B,EAA0Dv7B,MAA1D,EAA8E;AAEtI,QAAI,CAAC67B,qBAAqB,EAAtB,IAA4B,CAACC,QAAQ,EAAzC,EAA6C;AACzC;AACH;;AAED,QAAIn8B,mCAAY,CAACL,GAAD,CAAhB,EAAuB;AACnB,YAAM,IAAI9E,KAAJ,oEAAN;AACH;;AAED,QAAI82B,sCAAe,CAACv2B,MAAD,EAASuE,GAAT,CAAf,KAAiC,KAArC,EAA4C;AACxC,YAAM,IAAI9E,KAAJ,wFAAN;AACH;;AAED,WAAOohC,iBAAiB,CAACt8B,GAAD,EAAMi8B,iBAAN,EAAyBv7B,MAAzB,CAAxB;AACH,GAfD;AAgBH;;AAED,IAAIs4B,IAAJ,EAAsF;AAElFgD,yBAAuB,CAAC7E,yBAAS,CAACoB,eAAV,CAA0BjD,MAA3B,CAAvB,GAA4D,UAACt1B,GAAD,EAA8Bi8B,iBAA9B,EAA6D;AAErH,QAAI,CAACQ,qDAA8B,EAAnC,EAAuC;AACnC;AACH;;AAED,QAAI,CAACp8B,mCAAY,CAACL,GAAD,CAAjB,EAAwB;AACpB,YAAM,IAAI9E,KAAJ,yEAAN;AACH;;AAED,QAAI82B,sCAAe,CAACv2B,MAAD,EAASuE,GAAT,CAAf,KAAiC,KAArC,EAA4C;AACxC,YAAM,IAAI9E,KAAJ,wFAAN;AACH,KAZoH,CAcrH;;;AACA,QAAIwhC,aAAa,GAAG18B,GAAG,CAACm3B,yBAAS,CAACC,YAAV,CAAuBC,SAAxB,CAAvB;;AAEA,QAAI,CAACqF,aAAL,EAAoB;AAChB,YAAM,IAAIxhC,KAAJ,mDAAN;AACH;;AAED,WAAOwhC,aAAa,CAACC,cAAd,CAA6B;AAChC57B,YAAM,EAAEtF,MADwB;AAEhCi3B,YAAM,EAAExyB,gCAAS,EAFe;AAGhCU,UAAI,EAAIq7B;AAHwB,KAA7B,CAAP;AAKH,GA1BD;AA2BH,C;;;AC3GD;AACA;AAEA;AACA;AAEA;;AAGA,SAASW,YAAT,CAAsB58B,GAAtB,EAAmD2G,OAAnD,EAAqEsD,OAArE,EAA4F;AAAA,MAAvBA,OAAuB;AAAvBA,WAAuB,GAAb,EAAa;AAAA;;AAExF,MAAI+X,EAAE,GAAKrK,+BAAQ,EAAnB;AACA,MAAI5c,IAAI,GAAG8hC,oCAAa,EAAxB;AACA,MAAIC,YAAY,GAAG58B,gCAAS,CAACzE,MAAD,CAA5B;AAEA,oDACOkL,OADP,MAEOsD,OAFP;AAGI6yB,gBAAY,EAAZA,YAHJ;AAII9a,MAAE,EAAUrb,OAAO,CAACqb,EAAR,IAAcA,EAJ9B;AAKI+a,cAAU,EAAEhiC;AALhB;AAOH;;AAGM,SAASiiC,WAAT,CAAqBh9B,GAArB,EAAkD2G,OAAlD,EAAoEjG,MAApE,EAA0H;AAC7H,SAAOrD,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAAA;;AAE1B+H,WAAO,GAAGi2B,YAAY,CAAC58B,GAAD,EAAM2G,OAAN,EAAe;AACjC/F,UAAI,EAAEq8B,uCAAgB,CAACj9B,GAAD,EAAMU,MAAN,EAAciG,OAAO,CAAC/F,IAAtB,CADW;AAEjCF,YAAM,EAANA;AAFiC,KAAf,CAAtB;AAKA,QAAI0Y,KAAJ;;AAEA,QAAI9c,KAAJ,EAAe,EAWd;;AAED,QAAI0D,GAAG,KAAKvE,MAAR,IAAkB,CAAC6xB,sBAAM,CAACgM,iBAA9B,EAAiD;AAC7C,YAAM,IAAIp+B,KAAJ,CAAU,mCAAV,CAAN;AACH;;AAED,QAAI4F,qCAAc,CAACd,GAAD,CAAlB,EAAyB;AACrB,YAAM,IAAI9E,KAAJ,CAAU,kBAAV,CAAN;AACH;;AAED,QAAIgiC,QAAQ,GAAG,EAAf;AAEA,QAAIjB,iBAAiB,GAAGkB,oCAAa,sCAC/BhG,yBAAS,CAACC,YAAV,CAAuBC,SADQ,IACK1wB,OADL,mBAElC,IAFkC,EAE5B,CAF4B,CAArC;AAIA,WAAOtJ,yCAAY,CAACvD,GAAb,CAAiBJ,MAAM,CAACC,IAAP,CAAYqiC,uBAAZ,CAAjB,EAAuD,UAAAoB,YAAY,EAAI;AAE1E,aAAO//B,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAE1B,YAAI,CAAC0uB,sBAAM,CAAC+L,4BAAP,CAAoC+D,YAApC,CAAL,EAAwD;AACpD,gBAAM,IAAIliC,KAAJ,2BAAmCkiC,YAAnC,CAAN;AACH;;AAED,eAAOpB,uBAAuB,CAACoB,YAAD,CAAvB,CAAsCp9B,GAAtC,EAA2Ci8B,iBAA3C,EAA8Dv7B,MAA9D,CAAP;AAEH,OARM,EAQJ7E,IARI,CAQC,YAAM;AACVqhC,gBAAQ,CAAC9gC,IAAT,CAAkBghC,YAAlB;AACA,eAAO,IAAP;AACH,OAXM,EAWJ,UAAAthC,GAAG,EAAI;AACNohC,gBAAQ,CAAC9gC,IAAT,CAAkBghC,YAAlB,UAAqCnd,qCAAc,CAACnkB,GAAD,CAAnD;AACA,eAAO,KAAP;AACH,OAdM,CAAP;AAgBH,KAlBM,EAkBJD,IAlBI,CAkBC,UAAAwD,OAAO,EAAI;AAEf,UAAIg+B,OAAO,GAAGh+B,OAAO,CAACszB,IAAR,CAAa1lB,OAAb,CAAd;AACA,UAAI9D,MAAM,GAAOxC,OAAO,CAAC5L,IAAf,SAAyB4L,OAAO,CAACtN,IAAjC,UAA2CgkC,OAAO,GAAG,SAAH,GAAe,OAAjE,gBAAoFH,QAAQ,CAACnjC,IAAT,CAAc,QAAd,CAApF,OAAV;;AAEA,UAAI,CAACsjC,OAAL,EAAc;AACV,cAAM,IAAIniC,KAAJ,CAAUiO,MAAV,CAAN;AACH;AACJ,KA1BM,CAAP;AA2BH,GA/DM,CAAP;AAgEH,C;;;;;ACzFD;AACA;AAEA;AACA;AACA;AAEO,SAASm0B,cAAT,GAA0B;AAC7BvuB,0BAAM,CAACwuB,iBAAP,GAA2B,EAA3B;AACAxuB,0BAAM,CAACyuB,gBAAP,GAA2B,EAA3B;AACH;AAEDzuB,wBAAM,CAACwuB,iBAAP,GAA2BxuB,wBAAM,CAACwuB,iBAAP,IAA4B,EAAvD;AACAxuB,wBAAM,CAACyuB,gBAAP,GAA2BzuB,wBAAM,CAACyuB,gBAAP,IAA4B,EAAvD;AACAzuB,wBAAM,CAAC0uB,eAAP,GAA2B1uB,wBAAM,CAAC0uB,eAAP,IAA4B,IAAK,SAASC,cAAT,GAA0B;AAAE;AAAY,CAA7C,EAAvD;AAEA3uB,wBAAM,CAAC4uB,wBAAP,GAAkC5uB,wBAAM,CAAC4uB,wBAAP,IAAmC,EAArE;AAEA,IAAMC,gBAAgB,GAAG,kBAAzB;AAkBO,SAASC,mBAAT,CAA6Bt+B,IAA7B,EAA4CghB,QAA5C,EAA6E;AAChFxR,0BAAM,CAACwuB,iBAAP,CAAyBh+B,IAAzB,IAAiCghB,QAAjC;AACH;AAEM,SAASud,mBAAT,CAA6Bv+B,IAA7B,EAAmE;AACtE,SAAOwP,wBAAM,CAACwuB,iBAAP,CAAyBh+B,IAAzB,CAAP;AACH;AAEM,SAASw+B,sBAAT,CAAgCx+B,IAAhC,EAA+C;AAClD,SAAOwP,wBAAM,CAACwuB,iBAAP,CAAyBh+B,IAAzB,CAAP;AACH;AAEM,SAASy+B,2BAAT,CAAqCz+B,IAArC,EAAoD;AACvDwP,0BAAM,CAAC4uB,wBAAP,CAAgCp+B,IAAhC,IAAwC,IAAxC;AACH;AAEM,SAAS0+B,yBAAT,CAAmC1+B,IAAnC,EAA4D;AAC/D,SAAO0N,OAAO,CAAC8B,wBAAM,CAAC4uB,wBAAP,CAAgCp+B,IAAhC,CAAD,CAAd;AACH;AAEM,SAAS2+B,kBAAT,OAAyJ;AAAA,MAA3H7kC,IAA2H,QAA3HA,IAA2H;AAAA,MAArH2G,GAAqH,QAArHA,GAAqH;AAAA,MAAhHU,MAAgH,QAAhHA,MAAgH;;AAE5J,MAAIV,GAAG,KAAKm3B,yBAAS,CAACpJ,QAAtB,EAAgC;AAC5B/tB,OAAG,GAAG,IAAN;AACH;;AAED,MAAIU,MAAM,KAAKy2B,yBAAS,CAACpJ,QAAzB,EAAmC;AAC/BrtB,UAAM,GAAG,IAAT;AACH;;AAED,MAAI,CAACrH,IAAL,EAAW;AACP,UAAM,IAAI6B,KAAJ,yCAAN;AACH;;AAED,MAAIijC,aAAa,GAAGpvB,wBAAM,CAACyuB,gBAAP,CAAwBnkC,IAAxB,CAApB;;AAEA,MAAI,CAAC8kC,aAAL,EAAoB;AAChB;AACH;;AAlB2J,4BAoBnI,CAAEn+B,GAAF,EAAO+O,wBAAM,CAAC0uB,eAAd,CApBmI,6BAoBlG;AAArD,QAAIW,YAAY,aAAhB;AAED,QAAIC,YAAY,GAAGD,YAAY,IAAID,aAAa,CAACn0B,GAAd,CAAkBo0B,YAAlB,CAAnC;;AAEA,QAAI,CAACC,YAAL,EAAmB;AACf;AACH;;AAED,QAAI39B,MAAM,IAAI,OAAOA,MAAP,KAAkB,QAAhC,EAA0C;AACtC,UAAI29B,YAAY,CAAC39B,MAAD,CAAhB,EAA0B;AACtB,eAAO29B,YAAY,CAAC39B,MAAD,CAAnB;AACH;;AAED,UAAI29B,YAAY,CAACT,gBAAD,CAAhB,EAAoC;AAAA,mDACAS,YAAY,CAACT,gBAAD,CADZ,8CACgC;AAAA;AAAA,cAArDve,KAAqD,0BAArDA,KAAqD;AAAA,cAA9CkB,QAA8C,0BAA9CA,QAA8C;;AAC5D,cAAIkS,kCAAW,CAACpT,KAAD,EAAQ3e,MAAR,CAAf,EAAgC;AAC5B,mBAAO6f,QAAP;AACH;AACJ;AACJ;AACJ;;AAED,QAAI8d,YAAY,CAAClH,yBAAS,CAACpJ,QAAX,CAAhB,EAAsC;AAClC,aAAOsQ,YAAY,CAAClH,yBAAS,CAACpJ,QAAX,CAAnB;AACH;AACJ;AACJ,C,CAED;;AACO,SAASuQ,kBAAT,QAAkJ/d,QAAlJ,EAA4M;AAAA,MAA9KlnB,IAA8K,SAA9KA,IAA8K;AAAA,MAAxK2G,GAAwK,SAAxKA,GAAwK;AAAA,MAAnKU,MAAmK,SAAnKA,MAAmK;;AAE/M,MAAI,CAACrH,IAAD,IAAS,OAAOA,IAAP,KAAgB,QAA7B,EAAuC;AACnC,UAAM,IAAI6B,KAAJ,yCAAN;AACH;;AAED,MAAIb,KAAK,CAACC,OAAN,CAAc0F,GAAd,CAAJ,EAAwB;AACpB,QAAIu+B,mBAAmB,GAAG,EAA1B;;AADoB,8BAGHv+B,GAHG,6BAGE;AAAjB,UAAIzE,IAAI,aAAR;AACDgjC,yBAAmB,CAACniC,IAApB,CAAyBkiC,kBAAkB,CAAC;AAAEjlC,YAAI,EAAJA,IAAF;AAAQqH,cAAM,EAANA,MAAR;AAAgBV,WAAG,EAAEzE;AAArB,OAAD,EAA8BglB,QAA9B,CAA3C;AACH;;AAED,WAAO;AACH5jB,YADG,oBACM;AAAA,gCACsB4hC,mBADtB,gBAC2C;AAA3C,cAAIC,cAAc,GAAID,mBAAJ,KAAlB;AACDC,wBAAc,CAAC7hC,MAAf;AACH;AACJ;AALE,KAAP;AAOH;;AAED,MAAItC,KAAK,CAACC,OAAN,CAAcoG,MAAd,CAAJ,EAA2B;AACvB,QAAI69B,oBAAmB,GAAG,EAA1B;;AADuB,kCAGN79B,MAHM,kCAGE;AAApB,UAAInF,KAAI,iBAAR;;AACDgjC,0BAAmB,CAACniC,IAApB,CAAyBkiC,kBAAkB,CAAC;AAAEjlC,YAAI,EAAJA,IAAF;AAAQ2G,WAAG,EAAHA,GAAR;AAAaU,cAAM,EAAEnF;AAArB,OAAD,EAA8BglB,QAA9B,CAA3C;AACH;;AAED,WAAO;AACH5jB,YADG,oBACM;AAAA,kCACsB4hC,oBADtB,iBAC2C;AAA3C,cAAIC,cAAc,GAAID,oBAAJ,MAAlB;AACDC,wBAAc,CAAC7hC,MAAf;AACH;AACJ;AALE,KAAP;AAOH;;AAED,MAAI8hC,gBAAgB,GAAGP,kBAAkB,CAAC;AAAE7kC,QAAI,EAAJA,IAAF;AAAQ2G,OAAG,EAAHA,GAAR;AAAaU,UAAM,EAANA;AAAb,GAAD,CAAzC;;AAEA,MAAI,CAACV,GAAD,IAAQA,GAAG,KAAKm3B,yBAAS,CAACpJ,QAA9B,EAAwC;AACpC/tB,OAAG,GAAG+O,wBAAM,CAAC0uB,eAAb;AACH;;AAED/8B,QAAM,GAAGA,MAAM,IAAIy2B,yBAAS,CAACpJ,QAA7B;;AAEA,MAAI0Q,gBAAJ,EAAsB;AAClB,QAAIz+B,GAAG,IAAIU,MAAX,EAAmB;AACf,YAAM,IAAIxF,KAAJ,0CAAkD7B,IAAlD,mBAAsEqH,MAAM,CAACxH,QAAP,EAAtE,cAAiG8G,GAAG,KAAK+O,wBAAM,CAAC0uB,eAAf,GAAiC,UAAjC,GAA8C,WAA/I,cAAN;AACH,KAFD,MAEO,IAAIz9B,GAAJ,EAAS;AACZ,YAAM,IAAI9E,KAAJ,0CAAkD7B,IAAlD,cAAgE2G,GAAG,KAAK+O,wBAAM,CAAC0uB,eAAf,GAAiC,UAAjC,GAA8C,WAA9G,cAAN;AACH,KAFM,MAEA,IAAI/8B,MAAJ,EAAY;AACf,YAAM,IAAIxF,KAAJ,0CAAkD7B,IAAlD,mBAAsEqH,MAAM,CAACxH,QAAP,EAAtE,CAAN;AACH,KAFM,MAEA;AACH,YAAM,IAAIgC,KAAJ,0CAAkD7B,IAAlD,CAAN;AACH;AACJ;;AAED,MAAImkC,gBAAgB,GAAGzuB,wBAAM,CAACyuB,gBAA9B;AAEA,MAAIW,aAAa,GAAGX,gBAAgB,CAACnkC,IAAD,CAApC;;AAEA,MAAI,CAAC8kC,aAAL,EAAoB;AAChBA,iBAAa,GAAG,IAAIhf,gDAAJ,EAAhB;AACAqe,oBAAgB,CAACnkC,IAAD,CAAhB,GAAyB8kC,aAAzB;AACH;;AAED,MAAIE,YAAY,GAAIF,aAAa,CAACn0B,GAAd,CAAkBhK,GAAlB,CAApB;;AAEA,MAAI,CAACq+B,YAAL,EAAmB;AACfA,gBAAY,GAAG,EAAf;AACAF,iBAAa,CAACzf,GAAd,CAAkB1e,GAAlB,EAAuBq+B,YAAvB;AACH;;AAED,MAAIK,SAAS,GAAGh+B,MAAM,CAACxH,QAAP,EAAhB;AAEA,MAAIylC,cAAc,GAAGN,YAAY,CAACT,gBAAD,CAAjC;AACA,MAAIgB,aAAJ;;AAEA,MAAIhR,8BAAO,CAACltB,MAAD,CAAX,EAAqB;AAEjB,QAAI,CAACi+B,cAAL,EAAqB;AACjBA,oBAAc,GAAG,EAAjB;AACAN,kBAAY,CAACT,gBAAD,CAAZ,GAAiCe,cAAjC;AACH;;AAEDC,iBAAa,GAAG;AAAEvf,WAAK,EAAE3e,MAAT;AAAiB6f,cAAQ,EAARA;AAAjB,KAAhB;AAEAoe,kBAAc,CAACviC,IAAf,CAAoBwiC,aAApB;AAEH,GAXD,MAWO;AACHP,gBAAY,CAACK,SAAD,CAAZ,GAA0Bne,QAA1B;AACH;;AAED,SAAO;AACH5jB,UADG,oBACM;AACL,UAAI,CAAC0hC,YAAL,EAAmB;AACf;AACH;;AAED,aAAOA,YAAY,CAACK,SAAD,CAAnB;;AAEA,UAAI1+B,GAAG,IAAItG,MAAM,CAACC,IAAP,CAAY0kC,YAAZ,EAA0B7hC,MAA1B,KAAqC,CAAhD,EAAmD;AAC/C2hC,qBAAa,CAACU,MAAd,CAAqB7+B,GAArB;AACH;;AAED,UAAI4+B,aAAJ,EAAmB;AACfD,sBAAc,CAAC/hC,MAAf,CAAsB+hC,cAAc,CAACxiC,OAAf,CAAuByiC,aAAvB,EAAsC,CAAtC,CAAtB;AACH;AACJ;AAfE,GAAP;AAkBH,C;;;;;;AC1ND;AACA;AAEA;AACA;AACA;AACA;AAEO,IAAIE,qBAAqB,sDAE1B3H,yBAAS,CAACI,iBAAV,CAA4BG,GAFF,cAEQ32B,MAFR,EAEwC2xB,MAFxC,EAEyD/rB,OAFzD,EAE2E;AAEnG,MAAIs3B,yBAAyB,CAACt3B,OAAO,CAACpH,IAAT,CAA7B,EAA6C;AACzC;AACH;;AAED,MAAI0K,OAAO,GAAG6zB,mBAAmB,CAACn3B,OAAO,CAACpH,IAAT,CAAjC;;AAEA,MAAI,CAAC0K,OAAL,EAAc;AACV,UAAM,IAAI/O,KAAJ,yDAAiEyL,OAAO,CAACtN,IAAzE,cAAwFq5B,MAAxF,YAAuGj3B,MAAM,CAAC2F,QAAP,CAAgByC,QAAvH,UAAsIpI,MAAM,CAAC2F,QAAP,CAAgBC,IAAtJ,GAA+J5F,MAAM,CAAC2F,QAAP,CAAgBiB,QAA/K,CAAN;AACH;;AAED,MAAI,CAACowB,kCAAW,CAACxoB,OAAO,CAACvJ,MAAT,EAAiBgyB,MAAjB,CAAhB,EAA0C;AACtC,UAAM,IAAIx3B,KAAJ,iBAAyBw3B,MAAzB,+BAA2DzoB,OAAO,CAACvJ,MAAR,CAAexH,QAAf,EAA3D,CAAN;AACH;;AAED+Q,SAAO,CAAC80B,GAAR,GAAc,IAAd;AACH,CAnB2B,wBAqB1B5H,yBAAS,CAACI,iBAAV,CAA4BC,OArBF,cAqBYz2B,MArBZ,EAqB4C2xB,MArB5C,EAqB6D/rB,OArB7D,EAqBoG;AAE5H,MAAIsD,OAAO,GAAGi0B,kBAAkB,CAAC;AAAE7kC,QAAI,EAAEsN,OAAO,CAACtN,IAAhB;AAAsB2G,OAAG,EAAEe,MAA3B;AAAmCL,UAAM,EAAEgyB;AAA3C,GAAD,CAAhC;;AAEA,WAASsM,OAAT,CAAiBp+B,IAAjB,EAA4C;AAExC,QAAI+F,OAAO,CAAC+P,aAAR,IAAyB5V,qCAAc,CAACC,MAAD,CAA3C,EAAqD;AACjD,aAAO1D,yCAAY,CAACL,OAAb,EAAP;AACH;;AAED,WAAOggC,WAAW,CAACj8B,MAAD;AACd6d,YAAM,EAAEjY,OAAO,CAACs4B,cADF;AAEd1/B,UAAI,EAAIoH,OAAO,CAACpH,IAFF;AAGdlG,UAAI,EAAIsN,OAAO,CAACtN;AAHF,OAIXuH,IAJW,GAKf8xB,MALe,CAAlB;AAMH;;AAED,SAAOr1B,yCAAY,CAAC6B,GAAb,CAAiB,CAEpB8/B,OAAO,CAAC;AACJjkC,QAAI,EAAEo8B,yBAAS,CAACI,iBAAV,CAA4BG;AAD9B,GAAD,CAFa,EAMpBr6B,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAEnB,QAAI,CAACqL,OAAL,EAAc;AACV,YAAM,IAAI/O,KAAJ,yCAAiDyL,OAAO,CAACtN,IAAzD,cAAwEq5B,MAAxE,YAAuFj3B,MAAM,CAAC2F,QAAP,CAAgByC,QAAvG,UAAsHpI,MAAM,CAAC2F,QAAP,CAAgBC,IAAtI,GAA+I5F,MAAM,CAAC2F,QAAP,CAAgBiB,QAA/J,CAAN;AACH;;AAED,QAAI,CAACowB,kCAAW,CAACxoB,OAAO,CAACvJ,MAAT,EAAiBgyB,MAAjB,CAAhB,EAA0C;AACtC,YAAM,IAAIx3B,KAAJ,qBAA6Bw3B,MAA7B,+BAA+DzoB,OAAO,CAACvJ,MAAR,CAAexH,QAAf,EAA/D,CAAN;AACH;;AAED,QAAI0H,IAAI,GAAG+F,OAAO,CAAC/F,IAAnB;AAEA,WAAOqJ,OAAO,CAACvN,OAAR,CAAgB;AAAEqE,YAAM,EAANA,MAAF;AAAU2xB,YAAM,EAANA,MAAV;AAAkB9xB,UAAI,EAAJA;AAAlB,KAAhB,CAAP;AAEH,GAdD,EAcG/E,IAdH,CAcQ,UAAA+E,IAAI,EAAI;AAEZ,WAAOo+B,OAAO,CAAC;AACXjkC,UAAI,EAAEo8B,yBAAS,CAACI,iBAAV,CAA4BE,QADvB;AAEXsH,SAAG,EAAG5H,yBAAS,CAACQ,gBAAV,CAA2BC,OAFtB;AAGXh3B,UAAI,EAAJA;AAHW,KAAD,CAAd;AAMH,GAtBD,EAsBG,UAAA9E,GAAG,EAAI;AAEN,QAAI2B,KAAK,GAAGwiB,qCAAc,CAACnkB,GAAD,CAAd,CAAoB3C,OAApB,CAA4B,UAA5B,EAAwC,EAAxC,CAAZ,CAFM,CAGN;;AACA,QAAI+lC,IAAI,GAAGpjC,GAAG,CAACojC,IAAf;AAEA,WAAOF,OAAO,CAAC;AACXjkC,UAAI,EAAEo8B,yBAAS,CAACI,iBAAV,CAA4BE,QADvB;AAEXsH,SAAG,EAAG5H,yBAAS,CAACQ,gBAAV,CAA2BzwC,KAFtB;AAGXuW,WAAK,EAALA,KAHW;AAIXyhC,UAAI,EAAJA;AAJW,KAAD,CAAd;AAMH,GAlCD,CANoB,CAAjB,EA0CJrjC,IA1CI,CA0CC0E,mBA1CD,EA0CO9B,KA1CP,CA0Ca,UAAA3C,GAAG,EAAI;AAEvB,QAAImO,OAAO,IAAIA,OAAO,CAACk1B,WAAvB,EAAoC;AAChC,aAAOl1B,OAAO,CAACk1B,WAAR,CAAoBrjC,GAApB,CAAP;AACH,KAFD,MAEO;AACH,YAAMA,GAAN;AACH;AACJ,GAjDM,CAAP;AAkDH,CAzF2B,wBA2F1Bq7B,yBAAS,CAACI,iBAAV,CAA4BE,QA3FF,cA2Fa12B,MA3Fb,EA2F6C2xB,MA3F7C,EA2F8D/rB,OA3F9D,EA2F4G;AAEpI,MAAIs3B,yBAAyB,CAACt3B,OAAO,CAACpH,IAAT,CAA7B,EAA6C;AACzC;AACH;;AAED,MAAI0K,OAAO,GAAG6zB,mBAAmB,CAACn3B,OAAO,CAACpH,IAAT,CAAjC;;AAEA,MAAI,CAAC0K,OAAL,EAAc;AACV,UAAM,IAAI/O,KAAJ,8DAAsEyL,OAAO,CAACtN,IAA9E,cAA6Fq5B,MAA7F,YAA4Gj3B,MAAM,CAAC2F,QAAP,CAAgByC,QAA5H,UAA2IpI,MAAM,CAAC2F,QAAP,CAAgBC,IAA3J,GAAoK5F,MAAM,CAAC2F,QAAP,CAAgBiB,QAApL,CAAN;AACH;;AAED,MAAI,CAACowB,kCAAW,CAACxoB,OAAO,CAACvJ,MAAT,EAAiBgyB,MAAjB,CAAhB,EAA0C;AACtC,UAAM,IAAIx3B,KAAJ,sBAA8Bw3B,MAA9B,+BAAgEG,6CAAsB,CAAC5oB,OAAO,CAACvJ,MAAT,CAAtF,CAAN;AACH;;AAEDq9B,wBAAsB,CAACp3B,OAAO,CAACpH,IAAT,CAAtB;;AAEA,MAAIoH,OAAO,CAACo4B,GAAR,KAAgB5H,yBAAS,CAACQ,gBAAV,CAA2BzwC,KAA/C,EAAsD;AAClD,QAAI4U,GAAG,GAAG,IAAIZ,KAAJ,CAAUyL,OAAO,CAAClJ,KAAlB,CAAV;;AACA,QAAIkJ,OAAO,CAACu4B,IAAZ,EAAkB;AACd;AACApjC,SAAG,CAACojC,IAAJ,GAAWv4B,OAAO,CAACu4B,IAAnB;AACH;;AACD,WAAOj1B,OAAO,CAAC+0B,OAAR,CAAgBljC,GAAhB,EAAqB,IAArB,CAAP;AACH,GAPD,MAOO,IAAI6K,OAAO,CAACo4B,GAAR,KAAgB5H,yBAAS,CAACQ,gBAAV,CAA2BC,OAA/C,EAAwD;AAC3D,QAAIh3B,IAAI,GAAG+F,OAAO,CAAC/F,IAAR,IAAgB+F,OAAO,CAACy4B,QAAnC;AAEA,WAAOn1B,OAAO,CAAC+0B,OAAR,CAAgB,IAAhB,EAAsB;AAAEj+B,YAAM,EAANA,MAAF;AAAU2xB,YAAM,EAANA,MAAV;AAAkB9xB,UAAI,EAAJA;AAAlB,KAAtB,CAAP;AACH;AACJ,CAzH2B,wBAAzB,C;;ACRP;AAEA;AACA;AACA;AAEA;AAEAmO,wBAAM,CAACswB,gBAAP,GAA0BtwB,wBAAM,CAACswB,gBAAP,IAA2B,EAArD;;AAQA,SAASC,YAAT,CAAsB34B,OAAtB,EAAkD;AAE9C,MAAI44B,aAAJ;;AAEA,MAAI;AACAA,iBAAa,GAAGC,gCAAS,CAAC74B,OAAD,CAAzB;AACH,GAFD,CAEE,OAAO7K,GAAP,EAAY;AACV;AACH;;AAED,MAAI,CAACyjC,aAAL,EAAoB;AAChB;AACH;;AAED,MAAI,OAAOA,aAAP,KAAyB,QAAzB,IAAqCA,aAAa,KAAK,IAA3D,EAAiE;AAC7D;AACH;;AAEDA,eAAa,GAAGA,aAAa,CAACpI,yBAAS,CAACC,YAAV,CAAuBC,SAAxB,CAA7B;;AAEA,MAAI,CAACkI,aAAD,IAAkB,OAAOA,aAAP,KAAyB,QAA3C,IAAuDA,aAAa,KAAK,IAA7E,EAAmF;AAC/E;AACH;;AAED,MAAI,CAACA,aAAa,CAACxkC,IAAf,IAAuB,OAAOwkC,aAAa,CAACxkC,IAArB,KAA8B,QAAzD,EAAmE;AAC/D;AACH;;AAED,MAAI,CAAC+jC,qBAAqB,CAACS,aAAa,CAACxkC,IAAf,CAA1B,EAAgD;AAC5C;AACH;;AAED,SAAOwkC,aAAP;AACH;;AAGM,SAAS5C,cAAT,CAAwBtjB,KAAxB,EAA8C;AAEjD,MAAI,CAAC5d,MAAD,IAAWA,MAAM,CAACw0B,MAAtB,EAA8B;AAC1B;AACH;;AAED,MAAI;AACA,QAAI,CAAC5W,KAAK,CAACtY,MAAX,EAAmB;AACf;AACH;AACJ,GAJD,CAIE,OAAOjF,GAAP,EAAY;AACV;AACH;;AAZgD,MAc3CiF,MAd2C,GAclBsY,KAdkB,CAc3CtY,MAd2C;AAAA,MAcnC2xB,MAdmC,GAclBrZ,KAdkB,CAcnCqZ,MAdmC;AAAA,MAc3B9xB,IAd2B,GAclByY,KAdkB,CAc3BzY,IAd2B;AAgBjD,MAAI+F,OAAO,GAAG24B,YAAY,CAAC1+B,IAAD,CAA1B;;AAEA,MAAI,CAAC+F,OAAL,EAAc;AACV;AACH;;AAED,MAAI,CAACA,OAAO,CAACm2B,YAAT,IAAyB,OAAOn2B,OAAO,CAACm2B,YAAf,KAAgC,QAA7D,EAAuE;AACnE,UAAM,IAAI5hC,KAAJ,yCAAN;AACH;;AAED,MAAIyL,OAAO,CAACm2B,YAAR,CAAqB3gC,OAArB,CAA6Bg7B,yBAAS,CAACsB,aAAvC,MAA0D,CAA1D,IAA+D9xB,OAAO,CAACm2B,YAAR,CAAqB3gC,OAArB,CAA6Bg7B,yBAAS,CAACuB,aAAvC,MAA0D,CAA7H,EAAgI;AAC5HhG,UAAM,GAAG/rB,OAAO,CAACm2B,YAAjB;AACH;;AAED,MAAI/tB,wBAAM,CAACswB,gBAAP,CAAwBljC,OAAxB,CAAgCwK,OAAO,CAACqb,EAAxC,MAAgD,CAAC,CAArD,EAAwD;AACpDjT,4BAAM,CAACswB,gBAAP,CAAwBjjC,IAAxB,CAA6BuK,OAAO,CAACqb,EAArC;AACH,GAFD,MAEO;AACH;AACH;;AAED,MAAI1lB,KAAJ,EAAe,cAad;;AAED,MAAIwE,qCAAc,CAACC,MAAD,CAAd,IAA0B,CAAC4F,OAAO,CAAC+P,aAAvC,EAAsD;AAClD;AACH;;AAED,MAAI/P,OAAO,CAAC/F,IAAZ,EAAkB;AACd+F,WAAO,CAAC/F,IAAR,GAAe6+B,yCAAkB,CAAC1+B,MAAD,EAAS2xB,MAAT,EAAiB/rB,OAAO,CAAC/F,IAAzB,CAAjC;AACH;;AAEDk+B,uBAAqB,CAACn4B,OAAO,CAAC5L,IAAT,CAArB,CAAoCgG,MAApC,EAA4C2xB,MAA5C,EAAoD/rB,OAApD;AACH;AAEM,SAAS+4B,eAAT,CAAyBrmB,KAAzB,EAAkL;AAErL,MAAI;AACA9Y,+BAAI,CAAC8Y,KAAK,CAACtY,MAAP,CAAJ;AACH,GAFD,CAEE,OAAOjF,GAAP,EAAY;AACV;AACH,GANoL,CAQrL;;;AACA,MAAI6jC,YAA2B,GAAG;AAC9B5+B,UAAM,EAAEsY,KAAK,CAACtY,MAAN,IAAgBsY,KAAK,CAACumB,aADA;AAE9BlN,UAAM,EAAErZ,KAAK,CAACqZ,MAAN,IAAiBrZ,KAAK,CAACwmB,aAAN,IAAuBxmB,KAAK,CAACwmB,aAAN,CAAoBnN,MAFtC;AAG9B9xB,QAAI,EAAIyY,KAAK,CAACzY;AAHgB,GAAlC;;AAMA,MAAIo4B,IAAJ,EAAyC;AACrC,QAAI;AACAj0B,yBAAO,CAAC,EAAD,CAAP,CAAwBm3B,qBAAxB,CAA8CyD,YAAY,CAAC5+B,MAA3D,EAAmEtF,MAAnE;AACH,KAFD,CAEE,OAAOK,GAAP,EAAY;AACV;AACH;AACJ;;AAED6gC,gBAAc,CAACgD,YAAD,CAAd;AACH;AAEM,SAASG,iBAAT,GAA6B;AAChCh3B,yCAAgB,CAACrN,MAAD,EAAS,SAAT,EAAoBikC,eAApB,CAAhB;AACH;AAED3wB,wBAAM,CAAC4tB,cAAP,GAAwBA,cAAxB,C;;AChJA;AACA;;;ACDA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA5tB,wBAAM,CAACgxB,eAAP,GAAyBhxB,wBAAM,CAACgxB,eAAP,IAA0B,IAAI5gB,gDAAJ,EAAnD;AAmBO,SAAS/W,OAAT,CAAiB6B,OAAjB,EAAoF;AAEvF,MAAI3K,IAAI,GAAGjC,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAE9B,QAAI,CAACqL,OAAO,CAAC5Q,IAAb,EAAmB;AACf,YAAM,IAAI6B,KAAJ,CAAU,uBAAV,CAAN;AACH;;AAED,QAAI7B,IAAI,GAAG4Q,OAAO,CAAC5Q,IAAnB;AACA,QAAI2mC,YAAJ;AACA,QAAIt/B,MAAJ;;AAEA,QAAI,OAAOuJ,OAAO,CAACxO,MAAf,KAA0B,QAA9B,EAAwC;AACpC,UAAIomB,EAAE,GAAGrV,QAAQ,CAACyV,cAAT,CAAwBhY,OAAO,CAACxO,MAAhC,CAAT;;AAEA,UAAI,CAAComB,EAAL,EAAS;AACL,cAAM,IAAI3mB,KAAJ,8BAAsCxB,MAAM,CAACuE,SAAP,CAAiB/E,QAAjB,CAA0B0C,IAA1B,CAA+BqO,OAAO,CAACxO,MAAvC,CAAtC,+BAAN;AACH;;AAED,UAAIomB,EAAE,CAACoB,OAAH,CAAW9a,WAAX,OAA6B,QAAjC,EAA2C;AACvC,cAAM,IAAIjN,KAAJ,8BAAsCxB,MAAM,CAACuE,SAAP,CAAiB/E,QAAjB,CAA0B0C,IAA1B,CAA+BqO,OAAO,CAACxO,MAAvC,CAAtC,sBAAN;AACH,OATmC,CAWpC;;;AACA,UAAI,CAAComB,EAAE,CAACkC,aAAR,EAAuB;AACnB,cAAM,IAAI7oB,KAAJ,CAAU,sFAAV,CAAN;AACH,OAdmC,CAgBpC;;;AACA8kC,kBAAY,GAAGne,EAAE,CAACkC,aAAlB;AAEH,KAnBD,MAmBO,IAAI9Z,OAAO,CAACxO,MAAR,YAA0BwkC,iBAA9B,EAAiD;AAEpD,UAAIh2B,OAAO,CAACxO,MAAR,CAAewnB,OAAf,CAAuB9a,WAAvB,OAAyC,QAA7C,EAAuD;AACnD,cAAM,IAAIjN,KAAJ,8BAAsCxB,MAAM,CAACuE,SAAP,CAAiB/E,QAAjB,CAA0B0C,IAA1B,CAA+BqO,OAAO,CAACxO,MAAvC,CAAtC,sBAAN;AACH;;AAED,UAAIwO,OAAO,CAACxO,MAAR,IAAkB,CAACwO,OAAO,CAACxO,MAAR,CAAesoB,aAAtC,EAAqD;AACjD,cAAM,IAAI7oB,KAAJ,CAAU,sFAAV,CAAN;AACH;;AAED,UAAI+O,OAAO,CAACxO,MAAR,IAAkBwO,OAAO,CAACxO,MAAR,CAAesoB,aAArC,EAAoD;AAChD;AACAic,oBAAY,GAAG/1B,OAAO,CAACxO,MAAR,CAAesoB,aAA9B;AACH;AACJ,KAdM,MAcA;AACHic,kBAAY,GAAG/1B,OAAO,CAACxO,MAAvB;AACH;;AAED,QAAI,CAACukC,YAAL,EAAmB;AACf,YAAM,IAAI9kC,KAAJ,CAAU,8EAAV,CAAN;AACH;;AAED,QAAM8E,GAAG,GAAGggC,YAAZ;AAEAt/B,UAAM,GAAGuJ,OAAO,CAACvJ,MAAR,IAAkBy2B,yBAAS,CAACpJ,QAArC;AAEA,QAAIxuB,IAAI,GAAO0K,OAAO,CAAC5Q,IAAf,SAAyBse,+BAAQ,EAAzC;;AAEA,QAAI7W,qCAAc,CAACd,GAAD,CAAlB,EAAyB;AACrB,YAAM,IAAI9E,KAAJ,CAAU,yBAAV,CAAN;AACH;;AAED,QAAIglC,SAAS,GAAG,KAAhB;AAEA,QAAIH,eAAe,GAAGhxB,wBAAM,CAACgxB,eAAP,CAAuB/1B,GAAvB,CAA2BhK,GAA3B,CAAtB;;AAEA,QAAI,CAAC+/B,eAAL,EAAsB;AAClBA,qBAAe,GAAG,EAAlB;AACAhxB,8BAAM,CAACgxB,eAAP,CAAuBrhB,GAAvB,CAA2B1e,GAA3B,EAAgC+/B,eAAhC;AACH;;AAED,QAAII,cAAc,GAAG9iC,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAExC,UAAIqyB,iCAAU,CAACx1B,MAAD,EAASuE,GAAT,CAAd,EAA6B;AACzB,eAAOogC,yCAAkB,CAACpgC,GAAD,EAAMiK,OAAO,CAACpL,OAAR,IAAmByuB,sBAAM,CAAC4L,oBAAhC,CAAzB;AACH;AAEJ,KANoB,EAMlBr9B,IANkB,CAMb,iBAAqB;AAAA,oCAAP,EAAO;AAAA,UAAlB62B,MAAkB,QAAlBA,MAAkB;;AAEzB,UAAI9E,8BAAO,CAACltB,MAAD,CAAP,IAAmB,CAACgyB,MAAxB,EAAgC;AAC5B,eAAO2N,+BAAQ,CAACrgC,GAAD,CAAf;AACH;AAEJ,KAZoB,EAYlBnE,IAZkB,CAYb,kBAAqB;AAAA,sCAAP,EAAO;AAAA,UAAlB62B,MAAkB,SAAlBA,MAAkB;;AAEzB,UAAI9E,8BAAO,CAACltB,MAAD,CAAX,EAAqB;AACjB,YAAI,CAAC+xB,kCAAW,CAAC/xB,MAAD,EAASgyB,MAAT,CAAhB,EAAkC;AAC9B,gBAAM,IAAIx3B,KAAJ,2BAAmCw3B,MAAnC,+BAAqEhyB,MAAM,CAACxH,QAAP,EAArE,CAAN;AACH;;AAEDwH,cAAM,GAAGgyB,MAAT;AACH;;AAED,UAAI,OAAOhyB,MAAP,KAAkB,QAAlB,IAA8B,CAACrG,KAAK,CAACC,OAAN,CAAcoG,MAAd,CAAnC,EAA0D;AACtD,cAAM,IAAIzB,SAAJ,2CAAN;AACH;;AAED,UAAMqhC,YAAY,GAAG5/B,MAArB;AAEA,aAAO,IAAIrD,yCAAJ,CAAiB,UAACL,OAAD,EAAUe,MAAV,EAAqB;AAEzC,YAAIwiC,gBAAJ;;AAEA,YAAI,CAACt2B,OAAO,CAACyM,aAAb,EAA4B;AACxB6pB,0BAAgB,GAAG;AACflnC,gBAAI,EAAJA,IADe;AAEfoC,kBAAM,EAAEuE,GAFO;AAGfU,kBAAM,EAAE4/B,YAHO;AAIftB,mBAJe,mBAIPljC,GAJO,EAIF7B,MAJE,EAIM;AACjB,kBAAI,CAAC6B,GAAL,EAAU;AACNokC,yBAAS,GAAG,IAAZ;AACAH,+BAAe,CAACnjC,MAAhB,CAAuBmjC,eAAe,CAAC5jC,OAAhB,CAAwBgkC,cAAxB,EAAwC,CAAxC,CAAvB;AACH;;AAED,kBAAIrkC,GAAJ,EAAS;AACLiC,sBAAM,CAACjC,GAAD,CAAN;AACH,eAFD,MAEO;AACHkB,uBAAO,CAAC/C,MAAD,CAAP;AACH;AACJ;AAfc,WAAnB;AAkBA4jC,6BAAmB,CAACt+B,IAAD,EAAOghC,gBAAP,CAAnB;AACH;;AAEDvD,mBAAW,CAACh9B,GAAD,EAAM;AACbjF,cAAI,EAAWo8B,yBAAS,CAACI,iBAAV,CAA4BC,OAD9B;AAEbj4B,cAAI,EAAJA,IAFa;AAGblG,cAAI,EAAJA,IAHa;AAIbuH,cAAI,EAAWqJ,OAAO,CAACrJ,IAJV;AAKb8V,uBAAa,EAAEzM,OAAO,CAACyM;AALV,SAAN,EAMR4pB,YANQ,CAAX,CAMiB7hC,KANjB,CAMuBV,MANvB;;AAQA,YAAIkM,OAAO,CAACyM,aAAZ,EAA2B;AACvB,iBAAO1Z,OAAO,EAAd;AACH;;AAED,YAAIwjC,UAAU,GAAGlT,sBAAM,CAAC6L,WAAxB;AACA,YAAIsH,UAAU,GAAGx2B,OAAO,CAACpL,OAAR,IAAmByuB,sBAAM,CAAC8L,WAA3C;AAEA,YAAIsH,SAAS,GAAG,GAAhB;;AAEA,YAAIrU,KAAK,GAAG,SAARA,KAAQ,GAAM;AAEd,cAAI6T,SAAJ,EAAe;AACX;AACH;;AAED,cAAIp/B,qCAAc,CAACd,GAAD,CAAlB,EAAyB;AAErB,gBAAI,CAACugC,gBAAgB,CAACxB,GAAtB,EAA2B;AACvB,qBAAOhhC,MAAM,CAAC,IAAI7C,KAAJ,wBAAgC7B,IAAhC,iBAAD,CAAb;AACH;;AAED,mBAAO0E,MAAM,CAAC,IAAI7C,KAAJ,wBAAgC7B,IAAhC,sBAAD,CAAb;AACH;;AAEDmnC,oBAAU,GAAGj2B,IAAI,CAACyiB,GAAL,CAASwT,UAAU,GAAGE,SAAtB,EAAiC,CAAjC,CAAb;;AACA,cAAID,UAAU,KAAK,CAAC,CAApB,EAAuB;AACnBA,sBAAU,GAAGl2B,IAAI,CAACyiB,GAAL,CAASyT,UAAU,GAAGC,SAAtB,EAAiC,CAAjC,CAAb;AACH;;AAED,cAAIC,MAAM,GAAGJ,gBAAgB,CAACxB,GAA9B;;AAEA,cAAI4B,MAAJ,EAAY;AAER,gBAAIF,UAAU,KAAK,CAAC,CAApB,EAAuB;AACnB;AACH;;AAEDC,qBAAS,GAAGn2B,IAAI,CAACuxB,GAAL,CAAS2E,UAAT,EAAqB,IAArB,CAAZ;AAEH,WARD,MAQO,IAAID,UAAU,KAAK,CAAnB,EAAsB;AACzB,mBAAOziC,MAAM,CAAC,IAAI7C,KAAJ,6BAAqC7B,IAArC,YAAkD6G,gCAAS,EAA3D,YAAsEotB,sBAAM,CAAC6L,WAA7E,QAAD,CAAb;AAEH,WAHM,MAGA,IAAIsH,UAAU,KAAK,CAAnB,EAAsB;AACzB,mBAAO1iC,MAAM,CAAC,IAAI7C,KAAJ,kCAA0C7B,IAA1C,YAAuD6G,gCAAS,EAAhE,aAA2E+J,OAAO,CAACpL,OAAR,IAAmByuB,sBAAM,CAAC8L,WAArG,SAAD,CAAb;AACH;;AAED/8B,oBAAU,CAACgwB,KAAD,EAAQqU,SAAR,CAAV;AACH,SAtCD;;AAwCArkC,kBAAU,CAACgwB,KAAD,EAAQqU,SAAR,CAAV;AACH,OApFM,CAAP;AAqFH,KAjHoB,CAArB;AAmHAP,kBAAc,CAAC1hC,KAAf,CAAqB,YAAM;AACvBu/B,iCAA2B,CAACz+B,IAAD,CAA3B;AACAw+B,4BAAsB,CAACx+B,IAAD,CAAtB;AACH,KAHD;AAKAwgC,mBAAe,CAAC3jC,IAAhB,CAAqB+jC,cAArB;AAEA,WAAOA,cAAP;AACH,GAjMU,CAAX;AAmMA,SAAO7gC,IAAP;AACH;;AAEM,SAASgB,KAAT,CAAc7E,MAAd,EAA2CpC,IAA3C,EAA0DuH,IAA1D,EAA0EqJ,OAA1E,EAA8I;AAEjJA,SAAO,GAAGA,OAAO,IAAI,EAArB;AACAA,SAAO,CAACxO,MAAR,GAAiBA,MAAjB;AACAwO,SAAO,CAAC5Q,IAAR,GAAeA,IAAf;AACA4Q,SAAO,CAACrJ,IAAR,GAAeA,IAAf;AAEA,SAAOwH,OAAO,CAAC6B,OAAD,CAAd;AACH;;;AAEM,SAAS22B,YAAT,CAAsBvnC,IAAtB,EAAqCuH,IAArC,EAAqDqJ,OAArD,EAAyH;AAE5H,MAAIjK,GAAG,GAAG8wB,kCAAW,EAArB;;AAEA,MAAI,CAAC9wB,GAAL,EAAU;AACN,WAAO,IAAI3C,yCAAJ,CAAiB,UAACL,OAAD,EAAUe,MAAV;AAAA,aAAqBA,MAAM,CAAC,IAAI7C,KAAJ,CAAU,+BAAV,CAAD,CAA3B;AAAA,KAAjB,CAAP;AACH;;AAED,SAAOoF,KAAI,CAACN,GAAD,EAAM3G,IAAN,EAAYuH,IAAZ,EAAkBqJ,OAAlB,CAAX;AACH;AAEM,SAAS42B,MAAT,CAAgB52B,OAAhB,EAAwH;AAAA,MAAxGA,OAAwG;AAAxGA,WAAwG,GAAzE,EAAyE;AAAA;;AAE3H,MAAI,CAACA,OAAO,CAACxO,MAAb,EAAqB;AACjB,UAAM,IAAIP,KAAJ,2BAAN;AACH;;AAED,MAAM8E,GAAG,GAAGiK,OAAO,CAACxO,MAApB;AAEA,SAAO;AACH6E,QADG,gBACEjH,IADF,EACiBuH,IADjB,EACsE;AACrE,aAAON,KAAI,CAACN,GAAD,EAAM3G,IAAN,EAAYuH,IAAZ,EAAkBqJ,OAAlB,CAAX;AACH;AAHE,GAAP;AAKH;AAED8E,wBAAM,CAACzO,IAAP,GAAcA,KAAd,C;;ACxQA;AACA;AAEA;AACA;AACA;AACA;AAeO,SAASk6B,MAAT,CAAgBvwB,OAAhB,EAAuE;AAE1E,MAAI,CAACA,OAAO,CAAC5Q,IAAb,EAAmB;AACf,UAAM,IAAI6B,KAAJ,CAAU,uBAAV,CAAN;AACH;;AAED,MAAI,CAAC+O,OAAO,CAACvN,OAAb,EAAsB;AAClB,UAAM,IAAIxB,KAAJ,CAAU,0BAAV,CAAN;AACH;;AAED,MAAM7B,IAAI,GAAG4Q,OAAO,CAAC5Q,IAArB;AACA,MAAM2G,GAAG,GAAGiK,OAAO,CAACxO,MAApB;AACA,MAAMiF,MAAM,GAAGuJ,OAAO,CAACvJ,MAAvB;AAEA,MAAIogC,eAAqC,GAAG;AACxCpkC,WAAO,EAAMuN,OAAO,CAACvN,OADmB;AAExCyiC,eAAW,EAAEl1B,OAAO,CAAC82B,YAAR,IAAyB,UAAAjlC,GAAG,EAAI;AACzC,YAAMA,GAAN;AACH,KAJuC;AAKxCL,UAAM,EAAEuE,GALgC;AAMxCU,UAAM,EAAEA,MAAM,IAAIy2B,yBAAS,CAACpJ,QANY;AAOxC10B,QAAI,EAAJA;AAPwC,GAA5C;AAUA,MAAI2nC,eAAe,GAAG1C,kBAAkB,CAAC;AAAEjlC,QAAI,EAAJA,IAAF;AAAQ2G,OAAG,EAAHA,GAAR;AAAaU,UAAM,EAANA;AAAb,GAAD,EAAwBogC,eAAxB,CAAxC;;AAEA,MAAI72B,OAAO,CAAC1I,IAAZ,EAAkB;AACd,QAAI7E,QAAO,GAAGokC,eAAe,CAACpkC,OAA9B;AACAokC,mBAAe,CAACpkC,OAAhB,GAA0BukC,2BAAY,CAAC,SAASC,UAAT,GAAoD;AACvFF,qBAAe,CAACrkC,MAAhB;AACA,aAAOD,QAAO,CAACkD,KAAR,CAAc,IAAd,EAAoBoB,SAApB,CAAP;AACH,KAHqC,CAAtC;AAIH;;AAED,MAAI8/B,eAAe,CAACrlC,MAAhB,IAA0BwO,OAAO,CAACk3B,YAAtC,EAAoD;AAChD,QAAI/pB,QAAQ,GAAGK,mCAAY,CAAC,YAAM;AAC9B,UAAIzX,GAAG,IAAI,OAAOA,GAAP,KAAe,QAAtB,IAAkCc,qCAAc,CAACd,GAAD,CAApD,EAA2D;AACvDoX,gBAAQ,CAACza,MAAT;AACAmkC,uBAAe,CAAC3B,WAAhB,CAA4B,IAAIjkC,KAAJ,CAAU,sCAAV,CAA5B;AACH;AACJ,KAL0B,EAKxB,EALwB,CAA3B;AAMH;;AAED,SAAO;AACHyB,UADG,oBACM;AACLqkC,qBAAe,CAACrkC,MAAhB;AACH;AAHE,GAAP;AAKH;;AAEM,SAAS8D,GAAT,CAAYpH,IAAZ,EAA2B4Q,OAA3B,EAAsEvN,OAAtE,EAAwH;AAE3H,MAAI,OAAOuN,OAAP,KAAmB,UAAvB,EAAmC;AAC/BvN,WAAO,GAAGuN,OAAV;AACAA,WAAO,GAAG,EAAV;AACH;;AAEDA,SAAO,GAAGA,OAAO,IAAI,EAArB;AAEAA,SAAO,CAAC5Q,IAAR,GAAeA,IAAf;AACA4Q,SAAO,CAACvN,OAAR,GAAkBA,OAAO,IAAIuN,OAAO,CAACvN,OAArC;AAEA,SAAO89B,MAAM,CAACvwB,OAAD,CAAb;AACH;;;AAEM,SAAS1I,IAAT,CAAclI,IAAd,EAA6B4Q,OAA7B,EAAgFvN,OAAhF,EAA2K;AAAA,MAA9IuN,OAA8I;AAA9IA,WAA8I,GAA/F,EAA+F;AAAA;;AAE9K,MAAI,OAAOA,OAAP,KAAmB,UAAvB,EAAmC;AAC/BvN,WAAO,GAAGuN,OAAV;AACAA,WAAO,GAAG,EAAV;AACH;;AAEDA,SAAO,GAAGA,OAAO,IAAI,EAArB;AACAvN,SAAO,GAAGA,OAAO,IAAIuN,OAAO,CAACvN,OAA7B;AACA,MAAIqkC,YAAY,GAAG92B,OAAO,CAAC82B,YAA3B;AAEA,MAAI7kC,OAAO,GAAG,IAAImB,yCAAJ,CAAiB,UAACL,OAAD,EAAUe,MAAV,EAAqB;AAEhDkM,WAAO,GAAGA,OAAO,IAAI,EAArB;AAEAA,WAAO,CAAC5Q,IAAR,GAAeA,IAAf;AACA4Q,WAAO,CAAC1I,IAAR,GAAe,IAAf;;AAEA0I,WAAO,CAACvN,OAAR,GAAkB,UAAC2c,KAAD,EAAW;AACzBrc,aAAO,CAACqc,KAAD,CAAP;;AACA,UAAI3c,OAAJ,EAAa;AACT,eAAOA,OAAO,CAAC2c,KAAD,CAAd;AACH;AACJ,KALD;;AAOApP,WAAO,CAAC82B,YAAR,GAAuB,UAACjlC,GAAD,EAAS;AAC5BiC,YAAM,CAACjC,GAAD,CAAN;;AACA,UAAIilC,YAAJ,EAAkB;AACd,eAAOA,YAAY,CAACjlC,GAAD,CAAnB;AACH;AACJ,KALD;AAMH,GApBa,CAAd;AAsBA,MAAI2+B,YAAY,GAAGD,MAAM,CAACvwB,OAAD,CAAzB;AACA/N,SAAO,CAACS,MAAR,GAAiB89B,YAAY,CAAC99B,MAA9B;AAEA,SAAOT,OAAP;AACH;AAEM,SAASqkB,eAAT,CAAkBtW,OAAlB,EAAiI;AAAA,MAA/GA,OAA+G;AAA/GA,WAA+G,GAAjF,EAAiF;AAAA;;AAEpI,SAAO;AACHxJ,MADG,cACApH,IADA,EACeqD,OADf,EACgE;AAC/D,aAAO+D,GAAE,CAACpH,IAAD,EAAO4Q,OAAP,EAAgBvN,OAAhB,CAAT;AACH;AAHE,GAAP;AAKH;AAEDqS,wBAAM,CAACtO,EAAP,GAAYA,GAAZ,C;;ACtIA;AACA;AAEA;AAEO,SAAS2gC,OAAT,GAAmB;AACtB,SAAO3lC,MAAM,CAAC07B,yBAAS,CAACC,YAAV,CAAuBC,SAAxB,CAAb;AACA57B,QAAM,CAACkpB,mBAAP,CAA2B,SAA3B,EAAsC+a,eAAtC;AACH,C;;ACRD;AAEA;AACA;AACA;AAEO,IAAIv4B,aAAM,GAAG2pB,kCAAW,EAAxB,C;;ACJP;AAEO,SAASuQ,aAAT,CAAuBrhC,GAAvB,EAAoD;AAEvD;AACA;AACA;AACA;AACA;AAEA,MAAI+/B,eAAe,GAAGhxB,wBAAM,CAACgxB,eAAP,CAAuB/1B,GAAvB,CAA2BhK,GAA3B,CAAtB;;AAEA,MAAI+/B,eAAJ,EAAqB;AAAA,4BACGA,eADH,gBACoB;AAAhC,UAAI7jC,OAAO,GAAI6jC,eAAJ,KAAX;AACD7jC,aAAO,CAAC6B,MAAR,CAAe,IAAI7C,KAAJ,wCAAf;AACH;AACJ;;AAED,MAAI6T,wBAAM,CAACuyB,iBAAX,EAA8B;AAC1BvyB,4BAAM,CAACuyB,iBAAP,CAAyBzC,MAAzB,CAAgC7+B,GAAhC;AACH;;AAED,MAAI+O,wBAAM,CAACwyB,aAAX,EAA0B;AACtBxyB,4BAAM,CAACwyB,aAAP,CAAqB1C,MAArB,CAA4B7+B,GAA5B;AACH;;AAED+O,0BAAM,CAACgxB,eAAP,CAAuBlB,MAAvB,CAA8B7+B,GAA9B;AACA+O,0BAAM,CAACvO,OAAP,CAAeq+B,MAAf,CAAsB7+B,GAAtB;AACA+O,0BAAM,CAACyyB,aAAP,CAAqB3C,MAArB,CAA4B7+B,GAA5B;AACH,C;;AC/BD;AACA;AACA;AACA;AAEA;AACA;AACA;AACO,IAAIkO,MAAM,GAAG8qB,KAAA,GAAsCj0B,mBAAO,CAAC,EAAD,CAA7C,GAAsE,SAAnF;AAEA,SAASf,IAAT,GAAgB;AACnB,MAAI,CAAC+K,wBAAM,CAAC0yB,WAAZ,EAAyB;AACrB3B,qBAAiB;;AAEjB,QAAI9G,IAAJ,EAAyC;AACrCj0B,yBAAO,CAAC,EAAD,CAAP,CAAoB28B,kBAApB;AACH;;AAEDC,sCAAW;AACXC,2CAAgB,CAAC;AAAEnhC,QAAE,EAAFA,GAAF;AAAMH,UAAI,EAAJA,KAAIA;AAAV,KAAD,CAAhB;AACH;;AAEDyO,0BAAM,CAAC0yB,WAAP,GAAqB,IAArB;AACH;AAEDz9B,IAAI,G;;ACzBJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACe+Y,6GAAf,E;;;;;;;;;;;;;;;;;;ACJA;AACA;AAEA;AAGO,SAASkD,cAAT,CAAwBnkB,GAAxB,EAAqCsd,KAArC,EAAkE;AAAA,MAA7BA,KAA6B;AAA7BA,SAA6B,GAAZ,CAAY;AAAA;;AAErE,MAAIA,KAAK,IAAI,CAAb,EAAgB;AACZ,WAAO,+BAAP;AACH;;AAED,MAAI;AACA,QAAI,CAACtd,GAAL,EAAU;AACN,kCAA2BpC,MAAM,CAACuE,SAAP,CAAiB/E,QAAjB,CAA0B0C,IAA1B,CAA+BE,GAA/B,CAA3B;AACH;;AAED,QAAI,OAAOA,GAAP,KAAe,QAAnB,EAA6B;AACzB,aAAOA,GAAP;AACH;;AAED,QAAIA,GAAG,YAAYZ,KAAnB,EAA0B;AACtB,UAAI0C,KAAK,GAAG9B,GAAG,IAAIA,GAAG,CAAC8B,KAAvB;AACA,UAAI+I,OAAO,GAAG7K,GAAG,IAAIA,GAAG,CAAC6K,OAAzB;;AAEA,UAAI/I,KAAK,IAAI+I,OAAb,EAAsB;AAClB,YAAI/I,KAAK,CAACzB,OAAN,CAAcwK,OAAd,MAA2B,CAAC,CAAhC,EAAmC;AAC/B,iBAAO/I,KAAP;AACH,SAFD,MAEO;AACH,iBAAW+I,OAAX,UAAyB/I,KAAzB;AACH;AACJ,OAND,MAMO,IAAIA,KAAJ,EAAW;AACd,eAAOA,KAAP;AACH,OAFM,MAEA,IAAI+I,OAAJ,EAAa;AAChB,eAAOA,OAAP;AACH;AACJ;;AAED,QAAI,OAAO7K,GAAG,CAAC5C,QAAX,KAAwB,UAA5B,EAAwC;AACpC,aAAO4C,GAAG,CAAC5C,QAAJ,EAAP;AACH;;AAED,WAAOQ,MAAM,CAACuE,SAAP,CAAiB/E,QAAjB,CAA0B0C,IAA1B,CAA+BE,GAA/B,CAAP;AAEH,GAhCD,CAgCE,OAAO6+B,MAAP,EAAe;AAAE;AACf,gDAA2C1a,cAAc,CAAC0a,MAAD,EAASvhB,KAAK,GAAG,CAAjB,CAAzD;AACH;AACJ,C,CAED;;AACO,IAAI7X,IAAI,GAAG,SAAPA,IAAO,CAAI9B,MAAJ,EAAiE;AAC/E,MAAI,CAACA,MAAL,EAAa;AACT,WAAOA,MAAP;AACH;;AACD,MAAIihB,MAAM,GAAG,KAAb;AACA,SAAO,SAASC,WAAT,GAAkC;AACrC,QAAI,CAACD,MAAL,EAAa;AACTA,YAAM,GAAG,IAAT;AACA,aAAOjhB,MAAM,CAACG,KAAP,CAAa,IAAb,EAAmBoB,SAAnB,CAAP;AACH;AACJ,GALD;AAMH,CAXM,C,CAaP;;AACO,SAAST,IAAT,GAAsC,CACzC;AACH;AAEM,SAASuI,gBAAT,CAA0BwU,GAA1B,EAAwCjE,KAAxC,EAAwD3c,OAAxD,EAAsG;AACzG,MAAI4gB,GAAG,CAACxU,gBAAR,EAA0B;AACtBwU,OAAG,CAACxU,gBAAJ,CAAqBuQ,KAArB,EAA4B3c,OAA5B;AACH,GAFD,MAEO;AACH4gB,OAAG,CAACukB,WAAJ,QAAsBxoB,KAAtB,EAAgC3c,OAAhC;AACH;;AAED,SAAO;AACHC,UADG,oBACM;AACL,UAAI2gB,GAAG,CAACqH,mBAAR,EAA6B;AACzBrH,WAAG,CAACqH,mBAAJ,CAAwBtL,KAAxB,EAA+B3c,OAA/B;AACH,OAFD,MAEO;AACH4gB,WAAG,CAACwkB,WAAJ,QAAsBzoB,KAAtB,EAAgC3c,OAAhC;AACH;AACJ;AAPE,GAAP;AASH;AAEM,SAASib,QAAT,GAA6B;AAEhC,MAAIC,KAAK,GAAG,kBAAZ;AAEA,SAAO,aAAaze,OAAb,CAAqB,IAArB,EAA2B,YAAM;AACpC,WAAOye,KAAK,CAACC,MAAN,CAAatN,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACE,MAAL,KAAgBmN,KAAK,CAACpb,MAAjC,CAAb,CAAP;AACH,GAFM,CAAP;AAGH;AAIM,SAASulC,SAAT,CAAmBxmC,IAAnB,EAA0CwiB,QAA1C,EAA4F;AAC/F,OAAK,IAAIzf,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG/C,IAAI,CAACiB,MAAzB,EAAiC8B,CAAC,EAAlC,EAAsC;AAClCyf,YAAQ,CAACxiB,IAAI,CAAC+C,CAAD,CAAL,EAAUA,CAAV,CAAR;AACH;AACJ;AAEM,SAAS0jC,UAAT,CAAoBzmC,IAApB,EAAmCwiB,QAAnC,EAAqF;AACxF,OAAK,IAAIlkB,IAAT,IAAgB0B,IAAhB,EAAsB;AAClB,QAAIA,IAAI,CAACmK,cAAL,CAAoB7L,IAApB,CAAJ,EAA8B;AAC1BkkB,cAAQ,CAACxiB,IAAI,CAAC1B,IAAD,CAAL,EAAYA,IAAZ,CAAR;AACH;AACJ;AACJ;AAEM,SAASikB,IAAT,CAA2CviB,IAA3C,EAAqDwiB,QAArD,EAAgH;AACnH,MAAI1jB,KAAK,CAACC,OAAN,CAAciB,IAAd,CAAJ,EAAyB;AACrBwmC,aAAS,CAACxmC,IAAD,EAAOwiB,QAAP,CAAT;AACH,GAFD,MAEO,IAAI,OAAOxiB,IAAP,KAAgB,QAAhB,IAA4BA,IAAI,KAAK,IAAzC,EAA+C;AAClDymC,cAAU,CAACzmC,IAAD,EAAOwiB,QAAP,CAAV;AACH;AACJ;AAEM,SAASE,aAAT,CAAoD1iB,IAApD,EAA8DwiB,QAA9D,EAAyHkkB,KAAzH,EAAiJ;AAAA,MAAxBA,KAAwB;AAAxBA,SAAwB,GAAP,CAAO;AAAA;;AAEpJ,MAAIA,KAAK,IAAI,GAAb,EAAkB;AACd,UAAM,IAAI/mC,KAAJ,uEAAN;AACH;;AAED,MAAI8jB,MAAJ;;AAEA,MAAI,OAAOzjB,IAAP,KAAgB,QAAhB,IAA4BA,IAAI,KAAK,IAArC,IAA6C,CAAClB,KAAK,CAACC,OAAN,CAAciB,IAAd,CAAlD,EAAuE;AACnEyjB,UAAM,GAAG,EAAT;AACH,GAFD,MAEO,IAAI3kB,KAAK,CAACC,OAAN,CAAciB,IAAd,CAAJ,EAAyB;AAC5ByjB,UAAM,GAAG,EAAT;AACH,GAFM,MAEA;AACH,UAAM,IAAI/f,SAAJ,oBAAgC,OAAO1D,IAAvC,CAAN;AACH;;AAEDuiB,MAAI,CAACviB,IAAD,EAAO,UAAC2mC,SAAD,EAAYroC,GAAZ,EAAoB;AAE3B,QAAII,MAAM,GAAG8jB,QAAQ,CAACmkB,SAAD,EAAYroC,GAAZ,CAArB;;AAEA,QAAI,OAAOI,MAAP,KAAkB,WAAtB,EAAmC;AAC/B;AACA+kB,YAAM,CAACnlB,GAAD,CAAN,GAAcI,MAAd;AACH,KAHD,MAGO,IAAI,OAAOioC,SAAP,KAAqB,QAArB,IAAiCA,SAAS,KAAK,IAAnD,EAAyD;AAC5D;AACAljB,YAAM,CAACnlB,GAAD,CAAN,GAAcokB,aAAa,CAACikB,SAAD,EAAYnkB,QAAZ,EAAsBkkB,KAAK,GAAG,CAA9B,CAA3B;AACH,KAHM,MAGA;AACH;AACAjjB,YAAM,CAACnlB,GAAD,CAAN,GAAcqoC,SAAd;AACH;AACJ,GAdG,CAAJ,CAhBoJ,CAgCpJ;;AACA,SAAOljB,MAAP;AACH;AAEM,SAASvH,YAAT,CAAsBhY,MAAtB,EAAyCX,IAAzC,EAAkF;AACrF,MAAID,OAAJ;;AAEA,WAAS+e,WAAT,GAAuB;AACnB/e,WAAO,GAAGxC,UAAU,CAACuhB,WAAD,EAAc9e,IAAd,CAApB;AACAW,UAAM,CAAC7D,IAAP;AACH;;AAEDiD,SAAO,GAAGxC,UAAU,CAACuhB,WAAD,EAAc9e,IAAd,CAApB;AAEA,SAAO;AACHnC,UADG,oBACM;AACLoC,kBAAY,CAACF,OAAD,CAAZ;AACH;AAHE,GAAP;AAKH;AAEM,SAAS+uB,OAAT,CAAiBryB,IAAjB,EAAyC;AAC5C,SAAO7B,MAAM,CAACuE,SAAP,CAAiB/E,QAAjB,CAA0B0C,IAA1B,CAA+BL,IAA/B,MAAyC,iBAAhD;AACH;AAKD;AACO,IAAI4mC,mBAAiC,GAAG,SAApCA,cAAoC,CAAY1iC,MAAZ,EAA0E;AAErH,MAAI2iC,OAAO,GAAG,IAAIjjB,sBAAJ,EAAd,CAFqH,CAIrH;;AACA,SAAO,SAASkjB,eAAT,CAAyBC,GAAzB,EAAwC;AAC3C,QAAIroC,MAAM,GAAGmoC,OAAO,CAACp4B,GAAR,CAAYs4B,GAAZ,CAAb;;AAEA,QAAI,OAAOroC,MAAP,KAAkB,WAAtB,EAAmC;AAC/B,aAAOA,MAAP;AACH;;AAEDA,UAAM,GAAGwF,MAAM,CAAC7D,IAAP,CAAY,IAAZ,EAAkB0mC,GAAlB,CAAT;;AAEA,QAAI,OAAOroC,MAAP,KAAkB,WAAtB,EAAmC;AAC/BmoC,aAAO,CAAC1jB,GAAR,CAAY4jB,GAAZ,EAAiBroC,MAAjB;AACH;;AAED,WAAOA,MAAP;AACH,GAdD;AAeH,CApBM;AAsBA,SAAS4iC,aAAT,GAAkC;AACrC,MAAI1L,iDAAO,EAAX,EAAe;AACX,WAAOgG,yBAAS,CAACc,YAAV,CAAuBhK,KAA9B;AACH;;AACD,MAAImD,kDAAQ,EAAZ,EAAgB;AACZ,WAAO+F,yBAAS,CAACc,YAAV,CAAuBnuC,MAA9B;AACH;;AACD,SAAOqtC,yBAAS,CAACc,YAAV,CAAuBC,QAA9B;AACH;AAEM,SAASiF,aAAT,CAAkC7f,GAAlC,EAA2CkB,QAA3C,EAAiE+jB,MAAjE,EAAkG;AAErG,MAAIC,YAAJ;AACA,MAAIC,WAAJ;;AAEA,MAAI;AACA,QAAIn8B,IAAI,CAACC,SAAL,CAAe,EAAf,MAAuB,IAA3B,EAAiC;AAC7B;AACAi8B,kBAAY,GAAG9oC,MAAM,CAACuE,SAAP,CAAiBuI,MAAhC,CAF6B,CAG7B;;AACA,aAAO9M,MAAM,CAACuE,SAAP,CAAiBuI,MAAxB;AACH;;AAED,QAAIF,IAAI,CAACC,SAAL,CAAe,EAAf,MAAuB,IAA3B,EAAiC;AAC7B,YAAM,IAAIrL,KAAJ,4CAAN;AACH;;AAED,QAAIoL,IAAI,CAACC,SAAL,CAAe,EAAf,MAAuB,IAA3B,EAAiC;AAC7B;AACAk8B,iBAAW,GAAIpoC,KAAK,CAAC4D,SAAN,CAAgBuI,MAA/B,CAF6B,CAG7B;;AACA,aAAOnM,KAAK,CAAC4D,SAAN,CAAgBuI,MAAvB;AACH;;AAED,QAAIF,IAAI,CAACC,SAAL,CAAe,EAAf,MAAuB,IAA3B,EAAiC;AAC7B,YAAM,IAAIrL,KAAJ,4CAAN;AACH;AAEJ,GAvBD,CAuBE,OAAOY,GAAP,EAAY;AACV,UAAM,IAAIZ,KAAJ,qCAA6CY,GAAG,CAAC6K,OAAjD,CAAN;AACH;;AAED,MAAI1M,MAAM,GAAGqM,IAAI,CAACC,SAAL,CAAe3K,IAAf,CAAoB,IAApB,EAA0B0hB,GAA1B,EAA+BkB,QAA/B,EAAyC+jB,MAAzC,CAAb;;AAEA,MAAI;AACA,QAAIC,YAAJ,EAAkB;AACd;AACA9oC,YAAM,CAACuE,SAAP,CAAiBuI,MAAjB,GAA0Bg8B,YAA1B,CAFc,CAE0B;AAC3C;;AAED,QAAIC,WAAJ,EAAiB;AACb;AACApoC,WAAK,CAAC4D,SAAN,CAAgBuI,MAAhB,GAAyBi8B,WAAzB,CAFa,CAEyB;AACzC;AAEJ,GAXD,CAWE,OAAO3mC,GAAP,EAAY;AACV,UAAM,IAAIZ,KAAJ,qCAA6CY,GAAG,CAAC6K,OAAjD,CAAN;AACH;;AAGD,SAAO1M,MAAP;AACH;AAEM,SAASulC,SAAT,CAAmBjkC,IAAnB,EAA0C;AAC7C,SAAO+K,IAAI,CAACiD,KAAL,CAAWhO,IAAX,CAAP;AACH;AAEM,SAASkhC,8BAAT,GAAoD;AAEvD,MAAI33B,sDAAY,CAACrJ,MAAD,CAAZ,CAAqBX,KAArB,CAA2B,iCAA3B,CAAJ,EAAmE;AAC/D,WAAO,IAAP;AACH;;AAED,MAAI,CAACwyB,sBAAM,CAACwL,uBAAZ,EAAqC;AACjC,WAAO,IAAP;AACH;;AAED,SAAO,KAAP;AACH,C;;;;;;;;ACxRD;AACA;AACA;AAEA;AACA;AAEA;AAEA/pB,wBAAM,CAACvO,OAAP,GAAiBuO,wBAAM,CAACvO,OAAP,IAAkB,IAAI2e,sBAAJ,EAAnC;AAEO,IAAIyiB,gBAAgB,GAAGrgC,IAAI,CAAC,YAAM;AACrCwN,0BAAM,CAACtO,EAAP,CAAU02B,yBAAS,CAACU,kBAAV,CAA6BC,MAAvC,EAA+C;AAAEpF,UAAM,EAAEyE,yBAAS,CAACpJ;AAApB,GAA/C,EAA+E,gBAAmG;AAAA,QAAhGhtB,MAAgG,QAAhGA,MAAgG;AAAA,QAAxF2xB,MAAwF,QAAxFA,MAAwF;AAAA,QAAhF9xB,IAAgF,QAAhFA,IAAgF;AAE9K,QAAIJ,OAAO,GAAGuO,wBAAM,CAACvO,OAAP,CAAewJ,GAAf,CAAmBjJ,MAAnB,CAAd;;AAEA,QAAI,CAACP,OAAL,EAAc;AACV,YAAM,IAAItF,KAAJ,iEAAN;AACH;;AAED,QAAIwnC,IAAI,GAAGliC,OAAO,CAACI,IAAI,CAACohB,EAAN,CAAlB;;AAEA,QAAI,CAAC0gB,IAAL,EAAW;AACP,YAAM,IAAIxnC,KAAJ,qCAA6C0F,IAAI,CAACohB,EAAlD,CAAN;AACH;;AAED,QAAI,CAACyQ,qDAAW,CAACiQ,IAAI,CAAChiC,MAAN,EAAcgyB,MAAd,CAAhB,EAAuC;AACnC,YAAM,IAAIx3B,KAAJ,oBAA4BwnC,IAAI,CAAChiC,MAAjC,+BAAmEgyB,MAAnE,CAAN;AACH;;AAED,WAAOr1B,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAC1B,aAAO8jC,IAAI,CAACjjC,MAAL,CAAYG,KAAZ,CAAkB;AAAEmB,cAAM,EAANA,MAAF;AAAU2xB,cAAM,EAANA,MAAV;AAAkB9xB,YAAI,EAAJA;AAAlB,OAAlB,EAA4CA,IAAI,CAACjB,IAAjD,CAAP;AAEH,KAHM,EAGJ9D,IAHI,CAGC,UAAA5B,MAAM,EAAI;AAEd,aAAO;AACHA,cAAM,EAANA,MADG;AAEH+nB,UAAE,EAAIphB,IAAI,CAACohB,EAFR;AAGH3oB,YAAI,EAAEuH,IAAI,CAACvH;AAHR,OAAP;AAKH,KAVM,CAAP;AAWH,GA7BD;AA8BH,CA/BiC,CAA3B;;AAiCP,SAASspC,YAAT,CAAsBpnC,IAAtB,EAAoCR,IAApC,EAA6D;AACzD,SAAO,OAAOQ,IAAP,KAAgB,QAAhB,IAA4BA,IAAI,KAAK,IAArC,IAA6CA,IAAI,CAACylB,QAAL,KAAkBjmB,IAAtE;AACH;;AAQM,SAAS6nC,eAAT,CAAyBC,WAAzB,EAA8DniC,MAA9D,EAA+FjB,MAA/F,EAAkHpG,IAAlH,EAAoJ;AAEvJ,MAAI2oB,EAAE,GAAGrK,QAAQ,EAAjB;AAEA,MAAInX,OAAO,GAAGuO,wBAAM,CAACvO,OAAP,CAAewJ,GAAf,CAAmB64B,WAAnB,CAAd;;AAEA,MAAI,CAACriC,OAAL,EAAc;AACVA,WAAO,GAAG,EAAV;AACAuO,4BAAM,CAACvO,OAAP,CAAeke,GAAf,CAAmBmkB,WAAnB,EAAgCriC,OAAhC;AACH;;AAEDA,SAAO,CAACwhB,EAAD,CAAP,GAAc;AAAEthB,UAAM,EAANA,MAAF;AAAUjB,UAAM,EAANA;AAAV,GAAd;AAEA,SAAO;AACHuhB,YAAQ,EAAEmW,yBAAS,CAACgB,mBAAV,CAA8BL,MADrC;AAEHgL,UAAM,EAAI9gB,EAFP;AAGH+gB,YAAQ,EAAE1pC;AAHP,GAAP;AAKH;;AAOD,SAAS2pC,cAAT,CAAwBlnC,GAAxB,EAAuD;AACnD,SAAO;AACHklB,YAAQ,EAAKmW,yBAAS,CAACgB,mBAAV,CAA8BjxC,KADxC;AAEH+7C,eAAW,EAAEhjB,cAAc,CAACnkB,GAAD,CAFxB;AAGH;AACAonC,YAAQ,EAAKpnC,GAAG,CAACojC;AAJd,GAAP;AAMH;;AAOD,SAASiE,gBAAT,CAA0BN,WAA1B,EAA+DniC,MAA/D,EAAgGxE,OAAhG,EAA+H7C,IAA/H,EAAiK;AAC7J,SAAO;AACH2nB,YAAQ,EAAEmW,yBAAS,CAACgB,mBAAV,CAA8BC,OADrC;AAEHgL,YAAQ,EAAER,eAAe,CAACC,WAAD,EAAcniC,MAAd,EAAsB,UAAC1D,OAAD,EAAUe,MAAV;AAAA,aAAqB7B,OAAO,CAACL,IAAR,CAAamB,OAAb,EAAsBe,MAAtB,CAArB;AAAA,KAAtB,EAA8E1E,IAA9E;AAFtB,GAAP;AAIH;;AAED,SAASgqC,qBAAT,CAA+BR,WAA/B,EAAoEniC,MAApE,EAAqGxE,OAArG,EAAoI7C,IAApI,EAAsK;AAClK,SAAO;AACH2nB,YAAQ,EAAEmW,yBAAS,CAACgB,mBAAV,CAA8BE,aADrC;AAEH+K,YAAQ,EAAER,eAAe,CAACC,WAAD,EAAcniC,MAAd,EAAsB,UAAC1D,OAAD,EAAUe,MAAV;AAAA,aAAqB7B,OAAO,CAACL,IAAR,CAAamB,OAAb,EAAsBe,MAAtB,CAArB;AAAA,KAAtB,EAA8E1E,IAA9E;AAFtB,GAAP;AAIH;;AAOD,SAASiqC,cAAT,CAAwBjkB,KAAxB,EAA0D;AACtD,SAAO;AACH2B,YAAQ,EAAImW,yBAAS,CAACgB,mBAAV,CAA8BG,KADvC;AAEHiL,cAAU,EAAElkB,KAAK,CAACte;AAFf,GAAP;AAIH;;AAEM,SAASk8B,gBAAT,CAA0B4F,WAA1B,EAA+DniC,MAA/D,EAAgG4c,GAAhG,EAAuH;AAE1H,SAAOW,aAAa,CAAC;AAAEX,OAAG,EAAHA;AAAF,GAAD,EAAU,UAAC/hB,IAAD,EAAO1B,GAAP,EAAe;AACzC,QAAI,OAAO0B,IAAP,KAAgB,UAApB,EAAgC;AAC5B,aAAOqnC,eAAe,CAACC,WAAD,EAAcniC,MAAd,EAAsBnF,IAAtB,EAA4B1B,GAAG,CAACX,QAAJ,EAA5B,CAAtB;AACH;;AAED,QAAIqC,IAAI,YAAYL,KAApB,EAA2B;AACvB,aAAO8nC,cAAc,CAACznC,IAAD,CAArB;AACH;;AAED,QAAIE,MAAM,CAACD,OAAP,IAAkBD,IAAI,YAAYE,MAAM,CAACD,OAA7C,EAAsD;AAClD,aAAO2nC,gBAAgB,CAACN,WAAD,EAAcniC,MAAd,EAAsBnF,IAAtB,EAA4B1B,GAAG,CAACX,QAAJ,EAA5B,CAAvB;AACH;;AAED,QAAImE,yCAAY,CAAC/B,SAAb,CAAuBC,IAAvB,CAAJ,EAAkC;AAC9B;AACA,aAAO8nC,qBAAqB,CAACR,WAAD,EAAcniC,MAAd,EAAsBnF,IAAtB,EAA4B1B,GAAG,CAACX,QAAJ,EAA5B,CAA5B;AACH;;AAED,QAAI00B,OAAO,CAACryB,IAAD,CAAX,EAAmB;AACf;AACA,aAAO+nC,cAAc,CAAC/nC,IAAD,CAArB;AACH;AACJ,GAtBmB,CAAb,CAsBJ+hB,GAtBH;AAuBH;AAEM,SAASkmB,iBAAT,CAA2BziC,MAA3B,EAA2D2xB,MAA3D,EAA4EpV,GAA5E,EAAqG;AAExG,WAASmmB,OAAT,GAAyC;AACrC,QAAI9jC,IAAI,GAAGtF,KAAK,CAAC4D,SAAN,CAAgBsO,KAAhB,CAAsB3Q,IAAtB,CAA2BoF,SAA3B,CAAX;AACA,WAAO+N,wBAAM,CAACzO,IAAP,CAAYS,MAAZ,EAAoBo2B,yBAAS,CAACU,kBAAV,CAA6BC,MAAjD,EAAyD;AAC5D9V,QAAE,EAAI1E,GAAG,CAACwlB,MADkD;AAE5DzpC,UAAI,EAAEikB,GAAG,CAACylB,QAFkD;AAG5DpjC,UAAI,EAAJA;AAH4D,KAAzD,EAKJ;AAAEe,YAAM,EAAEgyB,MAAV;AAAkB7zB,aAAO,EAAE,CAAC;AAA5B,KALI,EAK6BhD,IAL7B,CAKkC,iBAAc;AAAA,UAAX+E,IAAW,SAAXA,IAAW;AACnD,aAAOA,IAAI,CAAC3G,MAAZ;AACH,KAPM,EAOJ,UAAA6B,GAAG,EAAI;AACN,YAAMA,GAAN;AACH,KATM,CAAP;AAUH;;AAED2nC,SAAO,CAACV,QAAR,GAAmBzlB,GAAG,CAACylB,QAAvB;AACAU,SAAO,CAACC,WAAR,GAAsB,IAAtB;AAEAD,SAAO,CAAC1iC,MAAR,GAAiBA,MAAjB;AACA0iC,SAAO,CAAC/Q,MAAR,GAAiBA,MAAjB;AAEA,SAAO+Q,OAAP;AACH;AAEM,SAASE,gBAAT,CAA0B5iC,MAA1B,EAA0D2xB,MAA1D,EAA2EpV,GAA3E,EAAiG;AACpG,MAAIxhB,GAAG,GAAG,IAAIZ,KAAJ,CAAUoiB,GAAG,CAAC2lB,WAAd,CAAV;;AACA,MAAI3lB,GAAG,CAAC4lB,QAAR,EAAkB;AACd;AACApnC,OAAG,CAACojC,IAAJ,GAAW5hB,GAAG,CAAC4lB,QAAf;AACH;;AACD,SAAOpnC,GAAP;AACH;AAEM,SAAS8nC,uBAAT,CAAiC7iC,MAAjC,EAAiE2xB,MAAjE,EAAkFpzB,IAAlF,EAAuH;AAC1H,SAAO,IAAIjC,yCAAJ,CAAiB,UAACL,OAAD,EAAUe,MAAV;AAAA,WAAqBylC,iBAAiB,CAACziC,MAAD,EAAS2xB,MAAT,EAAiBpzB,IAAI,CAAC8jC,QAAtB,CAAjB,CAAiDpmC,OAAjD,EAA0De,MAA1D,CAArB;AAAA,GAAjB,CAAP;AACH;AAEM,SAAS8lC,kBAAT,CAA4B9iC,MAA5B,EAA4D2xB,MAA5D,EAA6EpzB,IAA7E,EAAkH;AACrH,MAAI,CAAC7D,MAAM,CAACD,OAAZ,EAAqB;AACjB,WAAOooC,uBAAuB,CAAC7iC,MAAD,EAAS2xB,MAAT,EAAiBpzB,IAAjB,CAA9B;AACH;;AAED,SAAO,IAAI7D,MAAM,CAACD,OAAX,CAAmB,UAACwB,OAAD,EAAUe,MAAV;AAAA,WAAqBylC,iBAAiB,CAACziC,MAAD,EAAS2xB,MAAT,EAAiBpzB,IAAI,CAAC8jC,QAAtB,CAAjB,CAAiDpmC,OAAjD,EAA0De,MAA1D,CAArB;AAAA,GAAnB,CAAP;AACH;AAEM,SAAS+lC,gBAAT,CAA0B/iC,MAA1B,EAA0D2xB,MAA1D,EAA2En3B,IAA3E,EAAmG;AACtG;AACA,SAAO,IAAIikB,MAAJ,CAAWjkB,IAAI,CAACgoC,UAAhB,CAAP;AACH;AAEM,SAAS9D,kBAAT,CAA4B1+B,MAA5B,EAA4D2xB,MAA5D,EAA6EpV,GAA7E,EAAoG;AAEvG,SAAOW,aAAa,CAAC;AAAEX,OAAG,EAAHA;AAAF,GAAD,EAAU,UAAC/hB,IAAD,EAAU;AACpC,QAAI,OAAOA,IAAP,KAAgB,QAAhB,IAA4BA,IAAI,KAAK,IAAzC,EAA+C;AAC3C;AACH;;AAED,QAAIonC,YAAY,CAACpnC,IAAD,EAAO47B,yBAAS,CAACgB,mBAAV,CAA8BL,MAArC,CAAhB,EAA8D;AAC1D,aAAO0L,iBAAiB,CAACziC,MAAD,EAAS2xB,MAAT,EAAiBn3B,IAAjB,CAAxB;AACH;;AAED,QAAIonC,YAAY,CAACpnC,IAAD,EAAO47B,yBAAS,CAACgB,mBAAV,CAA8BjxC,KAArC,CAAhB,EAA6D;AACzD,aAAOy8C,gBAAgB,CAAC5iC,MAAD,EAAS2xB,MAAT,EAAiBn3B,IAAjB,CAAvB;AACH;;AAED,QAAIonC,YAAY,CAACpnC,IAAD,EAAO47B,yBAAS,CAACgB,mBAAV,CAA8BC,OAArC,CAAhB,EAA+D;AAC3D,aAAOyL,kBAAkB,CAAC9iC,MAAD,EAAS2xB,MAAT,EAAiBn3B,IAAjB,CAAzB;AACH;;AAED,QAAIonC,YAAY,CAACpnC,IAAD,EAAO47B,yBAAS,CAACgB,mBAAV,CAA8BE,aAArC,CAAhB,EAAqE;AACjE,aAAOuL,uBAAuB,CAAC7iC,MAAD,EAAS2xB,MAAT,EAAiBn3B,IAAjB,CAA9B;AACH;;AAED,QAAIonC,YAAY,CAACpnC,IAAD,EAAO47B,yBAAS,CAACgB,mBAAV,CAA8BG,KAArC,CAAhB,EAA6D;AACzD,aAAOwL,gBAAgB,CAAC/iC,MAAD,EAAS2xB,MAAT,EAAiBn3B,IAAjB,CAAvB;AACH;AAEJ,GAzBmB,CAAb,CAyBJ+hB,GAzBH;AA0BH,C;;ACjOD;AACA;AACA;AAEA;AACA;AAEA;AAEAvO,wBAAM,CAACyyB,aAAP,GAAuBzyB,wBAAM,CAACyyB,aAAP,IAAwB,IAAIriB,sBAAJ,EAA/C;AAEO,SAAS4kB,OAAT,CAAiBrnC,OAAjB,EAA4F;AAC/FqS,0BAAM,CAACtO,EAAP,CAAU02B,yBAAS,CAACU,kBAAV,CAA6BE,KAAvC,EAA8C;AAAEr3B,UAAM,EAAEy2B,yBAAS,CAACpJ;AAApB,GAA9C,EAA8E,gBAAwB;AAAA,QAArBhtB,MAAqB,QAArBA,MAAqB;AAAA,QAAb2xB,MAAa,QAAbA,MAAa;AAClG,WAAOh2B,OAAO,CAAC;AAAEqE,YAAM,EAANA,MAAF;AAAU2xB,YAAM,EAANA;AAAV,KAAD,CAAd;AACH,GAFD;AAGH;AAEM,SAAS2N,QAAT,CAAkBrgC,GAAlB,EAAmF;AACtF,SAAO+O,wBAAM,CAACzO,IAAP,CAAYN,GAAZ,EAAiBm3B,yBAAS,CAACU,kBAAV,CAA6BE,KAA9C,EAAqD,EAArD,EAAyD;AAAEr3B,UAAM,EAAEy2B,yBAAS,CAACpJ,QAApB;AAA8BlvB,WAAO,EAAE,CAAC;AAAxC,GAAzD,EACFhD,IADE,CACG,iBAAgB;AAAA,QAAb62B,MAAa,SAAbA,MAAa;AAClB,WAAO;AAAEA,YAAM,EAANA;AAAF,KAAP;AACH,GAHE,CAAP;AAIH;AAEM,SAASiP,WAAT,GAAuB;AAE1BoC,SAAO,CAAC,iBAAwB;AAAA,QAArBhjC,MAAqB,SAArBA,MAAqB;AAAA,QAAb2xB,MAAa,SAAbA,MAAa;AAC5B,QAAIx2B,OAAO,GAAG6S,wBAAM,CAACyyB,aAAP,CAAqBx3B,GAArB,CAAyBjJ,MAAzB,KAAoC,IAAI1D,yCAAJ,EAAlD;AACAnB,WAAO,CAACc,OAAR,CAAgB;AAAE01B,YAAM,EAANA;AAAF,KAAhB;AACA3jB,4BAAM,CAACyyB,aAAP,CAAqB9iB,GAArB,CAAyB3d,MAAzB,EAAiC7E,OAAjC;AACH,GAJM,CAAP;AAMA,MAAIiL,MAAM,GAAG2pB,qDAAW,EAAxB;;AACA,MAAI3pB,MAAJ,EAAY;AACRk5B,YAAQ,CAACl5B,MAAD,CAAR,CAAiB1I,KAAjB,CAAuB8B,IAAvB;AACH;AACJ;AAEM,SAAS6/B,kBAAT,CAA4BpgC,GAA5B,EAAyCnB,OAAzC,EAAkExF,IAAlE,EAAgI;AAAA,MAAvFwF,OAAuF;AAAvFA,WAAuF,GAApE,IAAoE;AAAA;;AAAA,MAA9DxF,IAA8D;AAA9DA,QAA8D,GAA9C,QAA8C;AAAA;;AAEnI,MAAI6C,OAAO,GAAG6S,wBAAM,CAACyyB,aAAP,CAAqBx3B,GAArB,CAAyBhK,GAAzB,CAAd;;AAEA,MAAI9D,OAAJ,EAAa;AACT,WAAOA,OAAP;AACH;;AAEDA,SAAO,GAAG,IAAImB,yCAAJ,EAAV;AACA0R,0BAAM,CAACyyB,aAAP,CAAqB9iB,GAArB,CAAyB1e,GAAzB,EAA8B9D,OAA9B;;AAEA,MAAI2C,OAAO,KAAK,CAAC,CAAjB,EAAoB;AAChBxC,cAAU,CAAC;AAAA,aAAMH,OAAO,CAAC6B,MAAR,CAAe,IAAI7C,KAAJ,CAAc7B,IAAd,4BAA2CwF,OAA3C,QAAf,CAAN;AAAA,KAAD,EAAiFA,OAAjF,CAAV;AACH;;AAED,SAAO3C,OAAP;AACH,C;;ACtDD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACDA;AACA;AAGA;AACA;;AAEA,SAASpB,KAAT,CAAemiB,GAAf,EAA6BqC,OAA7B,EAAyD;AACrD,MAAM+a,QAAkC,GAAGpd,GAAG,CAACniB,KAAJ,CAAUwkB,OAAV,CAA3C;;AACA,MAAI+a,QAAJ,EAAc;AACV,WAAOA,QAAQ,CAAC,CAAD,CAAf;AACH;AACJ;;AAED,IAAI2J,WAAJ,C,CAEA;;AAEA,IAAIliC,qCAAc,EAAlB,EAAsB;AAClBrB,8BAAE,CAAC,0BAAD,EAA6B;AAAEhF,UAAM,EAAEA,MAAM,CAAC0L;AAAjB,GAA7B,EAAwD,gBAAiD;AAAA,QAA9CvG,IAA8C,QAA9CA,IAA8C;AACvGojC,eAAW,GAAGpjC,IAAI,CAACnB,MAAnB;AACH,GAFC,CAAF;AAGH,C,CAED;;;AAEO,SAASwkC,wBAAT,CAAkCxkC,MAAlC,EAA0E;AAC7EukC,aAAW,GAAGvkC,MAAd;AAEA,SAAOpC,2BAAY,CAACuB,GAAb,CAAiB,YAAM;AAC1B,QAAIsP,wBAAM,IAAI,CAACpM,qCAAc,EAA7B,EAAiC;AAC7B,aAAOoM,wBAAM,CAACE,UAAP,CAAkBC,gCAAS,CAAClO,wBAAM,CAACwV,aAAR,EAAuB;AAAEhS,eAAO,EAAEuJ,uCAAgB;AAA3B,OAAvB,CAA3B,EAAoF/M,wBAAM,CAACyV,gBAA3F,EAA6G/Z,IAA7G,CAAkH,UAACqoC,UAAD,EAAwC;AAC7J,eAAO5jC,8BAAI,CAAC4jC,UAAD,EAAa,0BAAb,EAAyC;AAAEzkC,gBAAM,EAANA;AAAF,SAAzC,EAAqD;AAAEiB,gBAAM,EAAEP,wBAAM,CAACC;AAAjB,SAArD,CAAJ,CACFvE,IADE,CACG0E,mBADH,CAAP;AAEH,OAHM,CAAP;AAIH;AACJ,GAPM,CAAP;AAQH;AAED9E,MAAM,CAACwoC,wBAAP,GAAkCA,wBAAlC,C,CAEA;;AAEAxoC,MAAM,CAAC0oC,sBAAP,GAAgC,UAACnkC,GAAD,EAAgC;AAC5D,MAAMoX,QAAQ,GAAG6E,WAAW,CAAC,YAAM;AAC/B,QAAI;AACA,UAAMmoB,QAAQ,GAAIpkC,GAAG,CAACwM,QAAJ,CAAahE,IAAb,CAAkBxO,SAAlB,CAA4BmC,OAA5B,CAAoC,oBAApC,MAA8D,CAAC,CAA/D,IACF6D,GAAG,CAACwM,QAAJ,CAAahE,IAAb,CAAkBxO,SAAlB,CAA4BmC,OAA5B,CAAoC,QAApC,MAAkD,CAAC,CADnE;;AAGA,UAAI,CAACioC,QAAD,IAAapkC,GAAG,CAACqkC,YAAjB,IAAiCrkC,GAAG,CAACiwB,MAAzC,EAAiD;AAC7C;AACH;;AAEDjwB,SAAG,CAACqkC,YAAJ,GAAmB,IAAnB;AAEA,UAAMC,kBAAkB,GAAGtkC,GAAG,CAAC6I,cAAJ,CAAmB5K,SAAnB,CAA6BqC,IAAxD;;AAEAN,SAAG,CAAC6I,cAAJ,CAAmB5K,SAAnB,CAA6BqC,IAA7B,GAAoC,SAASikC,0BAAT,GAA6C;AAE7E,YAAI,KAAKC,QAAT,EAAmB;AACf,iBAAOF,kBAAkB,CAAC1kC,KAAnB,CAAyB,IAAzB,EAA+BoB,SAA/B,CAAP;AACH;;AAED,aAAKwjC,QAAL,GAAgB,IAAhB;AAEA,YAAMrjB,IAAI,GAAG,IAAb;AACA,YAAI+J,MAAM,GAAG,KAAKA,MAAlB;;AAEA,iBAAS3K,QAAT,GAA2B;AAEvB,cAAIY,IAAI,CAACjK,UAAL,KAAoBiK,IAAI,CAACsjB,IAAzB,IAAiCtjB,IAAI,CAAChY,MAAL,KAAgB,GAAjD,IAAwDgY,IAAI,CAAC7X,YAAjE,EAA+E;AAE3E,gBAAI;AACA,kBAAM81B,QAAQ,GAAG94B,IAAI,CAACiD,KAAL,CAAW4X,IAAI,CAAC7X,YAAL,CAAkBnQ,OAAlB,CAA0B,YAA1B,EAAwC,EAAxC,CAAX,CAAjB;;AAEA,kBAAIimC,QAAQ,CAACrkC,IAAT,KAAkB,UAAlB,IAAgCqkC,QAAQ,CAAC/2B,GAAzC,IAAgD27B,WAApD,EAAiE;AAE7D,oBAAM37B,GAAG,GAAG+2B,QAAQ,CAAC/2B,GAArB;AAEAga,6BAAa,CAACjL,QAAD,CAAb;AACApX,mBAAG,CAAC6iB,KAAJ;AAEAmhB,2BAAW,CAAC;AACRU,2BAAS,EAAKr8B,GADN;AAERhF,8BAAY,EAAEvI,KAAK,CAACuN,GAAD,EAAM,yBAAN,CAFX;AAGRs8B,8BAAY,EAAE7pC,KAAK,CAACuN,GAAD,EAAM,4BAAN,CAHX;AAIRu8B,yBAAO,EAAO9pC,KAAK,CAACuN,GAAD,EAAM,qBAAN,CAJX;AAKRw8B,2BAAS,EAAK/pC,KAAK,CAACuN,GAAD,EAAM,8BAAN;AALX,iBAAD,CAAX;AAQA27B,2BAAW,GAAG,IAAd;;AAEA,oBAAIhkC,GAAG,CAACrf,MAAJ,IAAcqf,GAAG,CAACrf,MAAJ,CAAWmkD,QAAzB,IAAqC9kC,GAAG,CAACrf,MAAJ,CAAWmkD,QAAX,CAAoBC,WAAzD,IAAwE/kC,GAAG,CAACrf,MAAJ,CAAWmkD,QAAX,CAAoBC,WAApB,CAAgCC,cAA5G,EAA4H;AACxHtrC,wBAAM,CAAC0kB,cAAP,CAAsBpe,GAAG,CAACrf,MAAJ,CAAWmkD,QAAX,CAAoBC,WAApB,CAAgCC,cAAtD,EAAsE,UAAtE,EAAkF;AAC9EhqC,yBAAK,EAAEuP,IAAI,CAACE,MAAL,GAAcvR,QAAd;AADuE,mBAAlF;AAGH;;AAED,oBAAI8G,GAAG,CAACilC,GAAJ,IAAWjlC,GAAG,CAACilC,GAAJ,CAAQC,GAAnB,IAA0BllC,GAAG,CAACilC,GAAJ,CAAQC,GAAR,CAAYjnC,SAAZ,CAAsBknC,WAApD,EAAiE;AAC7DnlC,qBAAG,CAACilC,GAAJ,CAAQC,GAAR,CAAYjnC,SAAZ,CAAsBknC,WAAtB,GAAoC5kC,mBAApC;AACH;AACJ;AAEJ,aA/BD,CA+BE,OAAOzE,GAAP,EAAY;AACV;AACH;AACJ;;AAED,cAAIovB,MAAJ,EAAY;AACR,mBAAOA,MAAM,CAACtrB,KAAP,CAAa,IAAb,EAAmBoB,SAAnB,CAAP;AACH;AACJ;;AAED,YAAI,KAAKkqB,MAAL,KAAgB3K,QAApB,EAA8B;AAE1B,cAAI;AAEA,mBAAO,KAAK2K,MAAZ;AACA,iBAAKpiB,gBAAL,CAAsB,MAAtB,EAA8ByX,QAA9B,EAHA,CAKA;;AACA7mB,kBAAM,CAAC0kB,cAAP,CAAsB,IAAtB,EAA4B,QAA5B,EAAsC;AAClCpU,iBADkC,iBACjB;AACb,uBAAOuW,QAAP;AACH,eAHiC;AAIlC7B,iBAJkC,eAI9BhiB,OAJ8B,EAIrB;AACTwuB,sBAAM,GAAGxuB,OAAT;AACH;AANiC,aAAtC;AASH,WAfD,CAeE,OAAOZ,GAAP,EAAY,CAEV;AACH;AAEJ;;AAED,eAAOwoC,kBAAkB,CAAC1kC,KAAnB,CAAyB,IAAzB,EAA+BoB,SAA/B,CAAP;AACH,OAjFD;AAmFH,KA/FD,CA+FE,OAAOlF,GAAP,EAAY,CACV;AACH;AACJ,GAnG2B,EAmGzB,GAnGyB,CAA5B;AAoGH,CArGD;;AAwGAL,MAAM,CAAC2pC,gBAAP,GAA0B3pC,MAAM,CAAC0oC,sBAAjC,C;;;;;;;;;;;;ACpJA;AAEA;AACA;AACA;AAGA;AAEA;AAIA;AACA;AACA;AACA;AAEA;;AAEA,SAASkB,SAAT,CAAmBhsC,IAAnB,EAAyB2B,KAAzB,EAAuC;AAEnC,MAAI,CAACS,MAAM,CAAC6pC,IAAZ,EAAkB;AACd;AACH;;AAED,MAAI7pC,MAAM,CAAC6pC,IAAP,CAAYD,SAAhB,EAA2B;AACvB,WAAO5pC,MAAM,CAAC6pC,IAAP,CAAYD,SAAZ,CAAsBhsC,IAAtB,EAA4B2B,KAA5B,CAAP;AACH;AACJ,C,CAED;;;AAiBO,IAAM8pC,QAAuC,GAAGS,kCAAM,CAAC;AAE1DviB,KAAG,EAAG,iBAFoD;AAG1D3pB,MAAI,EAAE,YAHoD;AAK1DmsC,WAAS,EAAE,IAL+C;AAO1DC,UAP0D,oBAOjDnsC,KAPiD,EAOnB;AACnC,QAAMgJ,GAAG,GAAGhJ,KAAK,CAACgJ,GAAN,IAAanC,wBAAM,CAACmC,GAAhC;;AAEA,QAAI,CAAChJ,KAAK,CAACosC,OAAX,EAAoB;AAChB,YAAM,IAAIxqC,KAAJ,0CAAN;AACH;;AAED,WAAO5B,KAAK,CAACosC,OAAN,GAAgB7pC,IAAhB,CAAqB,UAAAgG,KAAK,EAAI;AACjC,UAAI,CAACA,KAAL,EAAY;AACR,cAAM,IAAI3G,KAAJ,qDAA6D2G,KAA7D,CAAN;AACH;;AAED,aAAO8jC,4CAAY,CAACrjC,GAAD,EAAMhJ,KAAK,CAACssC,aAAZ,EAA2B/jC,KAA3B,CAAnB;AACH,KANM,CAAP;AAOH,GArByD;;AAuB1D,MAAIgkC,cAAJ,GAA+B;AAC3B,WAAO1lC,wBAAM,CAACmC,GAAP,KAAepc,wBAAG,CAACC,KAA1B;AACH,GAzByD;;AA2B1D,MAAIua,MAAJ,GAAsB;AAClB,sDACOP,wBAAM,CAAC8N,aADd;AAGH,GA/ByD;;AAiC1D,MAAI63B,SAAJ,GAAyB;AACrB,WAAO3lC,wBAAM,CAAC4N,aAAd;AACH,GAnCyD;;AAqC1D,MAAIg4B,YAAJ,GAA4B;AACxB,WAAO5lC,wBAAM,CAAC8N,aAAd;AACH,GAvCyD;;AAyC1D+3B,UAAQ,EAAE;AACNzhB,UAAM,EAAG,CAAC0hB,qCAAc,EADlB;AAENzjB,SAAK,EAAG;AAFF,GAzCgD;;AA8C1D,MAAI7e,OAAJ,GAAuB;AACnB,WAAOuJ,uCAAgB,EAAvB;AACH,GAhDyD;;AAkD1Dg5B,UAlD0D,sBAkD/C;AACP,QAAI,CAAC1gC,iCAAU,EAAf,EAAmB;AACfW,kDAAI,CAAC,4BAAD,CAAJ;AACH;AACJ,GAtDyD;AAwD1DggC,mBAAiB,EAAEC,qCAxDuC;AAyD1DC,mBAAiB,EAAjBA,qCAzD0D;AA2D1D/sC,OAAK,EAAE;AAEH8J,aAAS,EAAE;AACPrI,UAAI,EAAM,QADH;AAEPurC,cAAQ,EAAE,KAFH;AAGPh5B,SAHO,iBAGQ;AACX,eAAO3K,mCAAY,EAAnB;AACH,OALM;AAMP4jC,gBAAU,EAAE;AANL,KAFR;AAWHjjC,mBAAe,EAAE;AACbvI,UAAI,EAAM,QADG;AAEburC,cAAQ,EAAE,KAFG;AAGbh5B,SAHa,iBAGG;AACZ,eAAO/J,yCAAkB,EAAzB;AACH,OALY;AAMbgjC,gBAAU,EAAE;AANC,KAXd;AAoBHjkC,OAAG,EAAE;AACDvH,UAAI,EAAQ,QADX;AAEDurC,cAAQ,EAAI,KAFX;AAGDC,gBAAU,EAAE,IAHX;AAKDj5B,SALC,iBAKc;AACX,eAAOnN,wBAAM,CAACmC,GAAd;AACH,OAPA;AASD4jC,cATC,oBASQ5jC,GATR,EASa;AACV,YAAI,CAACnC,wBAAM,CAAC+R,UAAP,CAAkB5P,GAAlB,CAAL,EAA6B;AACzB,gBAAM,IAAIpH,KAAJ,mBAA2BoH,GAA3B,CAAN;AACH;AACJ;AAbA,KApBF;AAoCHoX,QAAI,EAAE;AACF3e,UAAI,EAAM,QADR;AAEFurC,cAAQ,EAAE,KAFR;AAGFh5B,SAHE,iBAGa;AACX,YAAMoM,IAAI,GAAGje,MAAM,CAAC+qC,MAAP,IAAiB/qC,MAAM,CAAC+qC,MAAP,CAAc9sB,IAA5C;AACA,eAAOA,IAAI,IAAI,EAAf;AACH;AANC,KApCH;AA6CH5J,SAAK,EAAE;AACH/U,UAAI,EAAQ,QADT;AAEHurC,cAAQ,EAAI,KAFT;AAGHC,gBAAU,EAAE,IAHT;AAKHj5B,SALG,eAKChU,KALD,EAKkB;AACjB,YAAMgJ,GAAG,GAAGhJ,KAAK,CAACgJ,GAAN,IAAanC,wBAAM,CAACmC,GAAhC;;AAEA,YAAIA,GAAG,KAAKpc,wBAAG,CAACE,KAAZ,IAAqBkc,GAAG,KAAKpc,wBAAG,CAACC,KAArC,EAA4C;AACxC,iBAAOga,wBAAM,CAAC2P,KAAd;AACH;AACJ;AAXE,KA7CJ;AA2DHE,YAAQ,EAAE;AACNjV,UAAI,EAAQ,QADN;AAENurC,cAAQ,EAAI,KAFN;AAGNC,gBAAU,EAAE,IAHN;AAKNj5B,SALM,eAKFhU,KALE,EAKe;AACjB,YAAMgJ,GAAG,GAAGhJ,KAAK,CAACgJ,GAAN,IAAanC,wBAAM,CAACmC,GAAhC;;AAEA,YAAIA,GAAG,KAAKpc,wBAAG,CAACE,KAAZ,IAAqBkc,GAAG,KAAKpc,wBAAG,CAACC,KAArC,EAA4C;AACxC,iBAAOga,wBAAM,CAAC6P,QAAd;AACH;AACJ;AAXK,KA3DP;AAyEHO,YAAQ,EAAE;AACNxV,UAAI,EAAM,QADJ;AAENurC,cAAQ,EAAE,KAFJ;AAGNh5B,SAHM,iBAGS;AACX,eAAOnN,wBAAM,CAACoQ,QAAd;AACH,OALK;AAMNg2B,gBAAU,EAAE;AANN,KAzEP;AAkFHp2B,gBAAY,EAAE;AACVpV,UAAI,EAAQ,QADF;AAEVurC,cAAQ,EAAI,KAFF;AAGVC,gBAAU,EAAE,IAHF;AAKVj5B,SALU,eAKNhU,KALM,EAKW;AACjB,YAAMgJ,GAAG,GAAGhJ,KAAK,CAACgJ,GAAN,IAAanC,wBAAM,CAACmC,GAAhC;;AAEA,YAAIA,GAAG,KAAKpc,wBAAG,CAACC,KAAhB,EAAuB;AACnB,iBAAOga,wBAAM,CAACgQ,YAAd;AACH;AACJ;AAXS,KAlFX;AAgGHuC,eAAW,EAAE;AACT3X,UAAI,EAAQ,QADH;AAETurC,cAAQ,EAAI,KAFH;AAGTC,gBAAU,EAAE,IAHH;AAKTj5B,SALS,iBAKO;AACZ,eAAOnN,wBAAM,CAACuS,WAAd;AACH;AAPQ,KAhGV;AA0GHlQ,UAAM,EAAE;AACJzH,UAAI,EAAW,QADX;AAEJurC,cAAQ,EAAO,KAFX;AAGJC,gBAAU,EAAK,UAHX;AAIJE,mBAAa,EAAE,IAJX;AAMJn5B,SANI,iBAMW;AAAA,gCACeo5B,uCAAgB,EAD/B;AAAA,YACHjkC,IADG,qBACHA,IADG;AAAA,YACGF,OADH,qBACGA,OADH;;AAEX,eAAWE,IAAX,SAAqBF,OAArB;AACH;AATG,KA1GL;AAuHHs+B,UAAM,EAAE;AACJ9lC,UAAI,EAAM,QADN;AAEJurC,cAAQ,EAAE,KAFN;AAGJh5B,SAHI,iBAG0B;AAC1B,eAAO,EAAP;AACH,OALG;AAMJq5B,iBAAW,EAAE,KANT;AAQJT,cARI,oBAQKrF,MARL,EAQavnC,KARb,EAQoB;AACpB,YAAMgJ,GAAG,GAAGhJ,KAAK,CAACgJ,GAAN,IAAanC,wBAAM,CAACmC,GAAhC;;AAEA,YAAI,CAACu+B,MAAM,CAACv+B,GAAD,CAAX,EAAkB;AACd,gBAAM,IAAIpH,KAAJ,mCAA2CoH,GAA3C,CAAN;AACH;;AAED,YAAIu+B,MAAM,CAACv+B,GAAD,CAAN,CAAYxH,KAAZ,CAAkB,UAAlB,CAAJ,EAAmC;AAC/B,gBAAM,IAAII,KAAJ,yBAAiC2lC,MAAM,CAACv+B,GAAD,CAAvC,CAAN;AACH;AACJ;AAlBG,KAvHL;AA4IHojC,WAAO,EAAE;AACL3qC,UAAI,EAAO,UADN;AAELurC,cAAQ,EAAG,KAFN;AAGLj6B,aAAO,EAAI,IAHN;AAIL8f,eAAS,EAAE,IAJN;AAKLoa,gBALK,sBAKMb,OALN,EAKsC;AACvC,eAAOA,OAAO,GAAG7pC,IAAV,CAAe,UAAAgG,KAAK,EAAI;AAC3B,iBAAO+kC,2DAA2B,CAAC/kC,KAAD,CAAlC;AACH,SAFM,CAAP;AAGH,OATI;AAULglC,gBAVK,sBAUMnB,OAVN,EAUsC;AACvC,eAAOA,OAAO,EAAd;AACH,OAZI;AAaLoB,mBAbK,yBAaSpB,OAbT,EAa+C;AAChD,YAAM7jC,KAAK,GAAGG,oCAAa,CAAC,OAAD,CAA3B;AAEA,eAAOH,KAAK,GACNwK,8BAAO,CAAC;AAAA,iBAAMhP,2BAAY,CAACL,OAAb,CAAqB6E,KAArB,CAAN;AAAA,SAAD,CADD,GAEN6jC,OAFN;AAGH,OAnBI;AAoBLQ,cApBK,oBAoBIR,OApBJ,EAoBapsC,KApBb,EAoBoB;AACrB,YAAI,CAACosC,OAAD,IAAY,CAACpsC,KAAK,CAAC+O,GAAvB,EAA4B;AACxB,gBAAM,IAAInN,KAAJ,2DAAN;AACH;AACJ,OAxBI;AAyBL6rC,WAAK,EAAE;AAzBF,KA5IN;AAwKHrlB,SAAK,EAAE;AACH3mB,UAAI,EAAW,QADZ;AAEHurC,cAAQ,EAAO,KAFZ;AAGHG,mBAAa,EAAE,IAHZ;AAIHn5B,SAJG,iBAIY;AACX,eAAO,EAAP;AACH,OANE;AAOH44B,cAPG,oBAOMxkB,KAPN,EAOa;AACZ,YAAIA,KAAK,CAACslB,YAAN,IAAsBtlB,KAAK,CAACslB,YAAN,KAAuB7iD,2CAAsB,CAAC5B,KAApE,IAA6Em/B,KAAK,CAACslB,YAAN,KAAuB7iD,2CAAsB,CAAC1B,KAA/H,EAAsI;AAClI,gBAAM,IAAIyY,KAAJ,gCAAwCwmB,KAAK,CAACslB,YAA9C,CAAN;AACH;AACJ;AAXE,KAxKJ;AAsLHC,UAAM,EAAE;AACJlsC,UAAI,EAAM,SADN;AAEJurC,cAAQ,EAAE;AAFN,KAtLL;AA2LHY,cAAU,EAAE;AACRnsC,UAAI,EAAM,QADF;AAERurC,cAAQ,EAAE,KAFF;AAGRh5B,SAHQ,iBAGO;AACX,eAAO,EAAP;AACH;AALO,KA3LT;AAmMHs4B,iBAAa,EAAE;AACX7qC,UAAI,EAAQ,QADD;AAEXurC,cAAQ,EAAI,KAFD;AAGXC,gBAAU,EAAE;AAHD,KAnMZ;AAyMHY,kBAAc,EAAE;AACZpsC,UAAI,EAAQ,QADA;AAEZurC,cAAQ,EAAI,KAFA;AAGZC,gBAAU,EAAE,IAHA;AAIZj5B,SAJY,iBAIG;AACX,YAAM85B,QAAQ,GAAG/sC,KAAK,CAAC4D,SAAN,CAAgBsO,KAAhB,CAAsB3Q,IAAtB,CAA2B4Q,QAAQ,CAACoV,gBAAT,OAA+Bp6B,8BAAS,CAACE,cAAzC,OAA3B,CAAjB;AAEA,YAAM2/C,cAAc,GAAGD,QAAQ,CAACttC,GAAT,CAAa,UAAA+nB,EAAE,EAAI;AACtC,iBAAOA,EAAE,CAACylB,YAAH,CAAgB9/C,8BAAS,CAACE,cAA1B,CAAP;AACH,SAFsB,CAAvB,CAHW,CAOX;;AACA,eAAO2/C,cAAP;AACH,OAbW;AAcZR,gBAAU,EAAE,oBAACv2B,GAAD,EAAS;AACjB,eAAOA,GAAG,CAACvW,IAAJ,CAAS,GAAT,CAAP;AACH;AAhBW,KAzMb;AA4NHiqC,eAAW,EAAE;AACTjpC,UAAI,EAAM,UADD;AAETurC,cAAQ,EAAE,IAFD;AAGT/kC,UAAI,EAAM,IAHD;AAKTgmC,cALS,oBAKAxM,QALA,EAK4B;AACjC,YAAIA,QAAJ,EAAc;AACV,iBAAO,SAASyM,mBAAT,CAA6B5mC,IAA7B,EAAmC6mC,OAAnC,EAAsE;AAAA;;AAAA,gBAAnCA,OAAmC;AAAnCA,qBAAmC,GAAzB,EAAyB;AAAA;;AAEzE,gBAAI7mC,IAAI,IAAI,CAACA,IAAI,CAAC8mC,MAAlB,EAA0B;AACtBvhC,0DAAI,iCAAiC;AAAE0+B,yBAAS,EAAEjkC,IAAI,CAACikC,SAAlB;AAA6BhjC,qBAAK,EAAEjB,IAAI,CAACyC;AAAzC,eAAjC,CAAJ;AACH;;AAED,gBAAMwf,KAAK,GAAG,SAARA,KAAQ,GAAM;AAChB,qBAAOxlB,2BAAY,CAACuB,GAAb,CAAiB,YAAM;AAC1B,oBAAI6oC,OAAO,CAAC5kB,KAAZ,EAAmB;AACf,yBAAO4kB,OAAO,CAAC5kB,KAAR,EAAP;AACH;AACJ,eAJM,EAIJhnB,IAJI,CAIC,YAAM;AACV,uBAAO,KAAI,CAAC8rC,cAAL,EAAP;AACH,eANM,CAAP;AAOH,aARD;;AAUA,gBAAMC,QAAQ,GAAG,SAAXA,QAAW,CAAC5nC,GAAD,EAAMqI,GAAN,EAAc;AAC3B,qBAAOhL,2BAAY,CAAC6B,GAAb,CAAiB,CACpB2oC,+BAAK,CAAC7nC,GAAG,IAAIvE,MAAM,CAACkqB,GAAf,EAAoBtd,GAAG,IAAIzH,IAAI,CAAC8jC,SAAhC,CADe,EAEpB7hB,KAAK,EAFe,CAAjB,CAAP;AAIH,aALD;;AAOA,mBAAOxlB,2BAAY,CAACuB,GAAb,CAAiB,YAAM;AAE1B,kBAAI;AACA,oBAAMkpC,QAAQ,GAAGrsC,MAAM,CAAC2F,QAAP,CAAgB8K,IAAhB,CAAqB/P,OAArB,CAA6B,eAA7B,MAAkD,CAAC,CAApE;AACA,oBAAM4rC,OAAO,GAAI,KAAI,CAACtsC,MAAL,CAAY2F,QAAZ,CAAqB8K,IAArB,CAA0B/P,OAA1B,CAAkC,uBAAlC,MAA+D,CAAC,CAAjF;;AAEA,oBAAI2rC,QAAQ,IAAIC,OAAhB,EAAyB;AACrB,yBAAO3/B,8BAAO,CAAC;AACXpI,uBAAG,EAAK,KAAI,CAACvE,MADF;AAEXgE,0BAAM,EAAE,KAFG;AAGX4I,uBAAG,EAAK;AAHG,mBAAD,CAAP,CAIJxM,IAJI,CAIC,UAAA5B,MAAM,EAAI;AACd,wBAAIA,MAAM,IAAIA,MAAM,CAAC2G,IAAjB,IAAyB3G,MAAM,CAAC2G,IAAP,CAAYonC,YAAzC,EAAuD;AACnD3C,+BAAS,CAAC,wBAAD,EAA2BprC,MAAM,CAAC2G,IAAP,CAAYonC,YAAvC,CAAT;AACH;AACJ,mBARM,EAQJvpC,KARI,CAQE,YAAM,CACX;AACH,mBAVM,CAAP;AAWH;AAEJ,eAlBD,CAkBE,OAAO3C,GAAP,EAAY,CACV;AACH;AAEJ,aAxBM,EAwBJD,IAxBI,CAwBC,YAAM;AACV,qBAAOk/B,QAAQ,CAACn/B,IAAT,CAAc,KAAd,EAAoBgF,IAApB,6CAA+B6mC,OAA/B;AAAwC5kB,qBAAK,EAALA,KAAxC;AAA+C+kB,wBAAQ,EAARA;AAA/C,iBAAP;AACH,aA1BM,EA0BJnpC,KA1BI,CA0BE,UAAA3C,GAAG,EAAI;AACZ,qBAAO,KAAI,CAAC2B,KAAL,CAAW3B,GAAX,CAAP;AACH,aA5BM,EA4BJ4C,OA5BI,CA4BI,YAAM;AACb,qBAAO,KAAI,CAACmkB,KAAL,EAAP;AACH,aA9BM,CAAP;AA+BH,WAtDD;AAuDH;AACJ;AA/DQ,KA5NV;AA8RHolB,oBAAgB,EAAE;AACdltC,UAAI,EAAM,UADI;AAEdurC,cAAQ,EAAE;AAFI,KA9Rf;AAmSH4B,UAAM,EAAE;AACJntC,UAAI,EAAQ,UADR;AAEJurC,cAAQ,EAAI,KAFR;AAGJ6B,gBAAU,EAAE,IAHR;AAIJrB,mBAJI,yBAIU/L,QAJV,EAI2C;AAC3C,YAAIA,QAAJ,EAAc;AACV,iBAAO,SAASqN,UAAT,CAAoBxnC,IAApB,EAAqD;AACxD,gBAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;AAC1BA,kBAAI,GAAG;AAAEynC,2BAAW,EAAEznC;AAAf,eAAP;AACH;;AACD,mBAAOm6B,QAAQ,CAACn6B,IAAD,CAAf;AACH,WALD;AAMH;AACJ;AAbG,KAnSL;AAmTHynC,eAAW,EAAE;AACTttC,UAAI,EAAM,UADD;AAETurC,cAAQ,EAAE;AAFD,KAnTV;AAwTHgC,YAAQ,EAAE;AACNvtC,UAAI,EAAM,UADJ;AAENurC,cAAQ,EAAE,KAFJ;AAGN/kC,UAAI,EAAM,IAHJ;AAINhB,UAAI,EAAM,IAJJ;AAMNgnC,cANM,oBAMGxM,QANH,EAMwB;AAC1B,eAAO,SAASwN,gBAAT,CAA0B3nC,IAA1B,EAAgC6mC,OAAhC,EAAmE;AAAA;;AAAA,cAAnCA,OAAmC;AAAnCA,mBAAmC,GAAzB,EAAyB;AAAA;;AAEtE,cAAM5kB,KAAK,GAAG,SAARA,KAAQ,GAAM;AAChB,mBAAOxlB,2BAAY,CAACuB,GAAb,CAAiB,YAAM;AAC1B,kBAAI6oC,OAAO,CAAC5kB,KAAZ,EAAmB;AACf,uBAAO4kB,OAAO,CAAC5kB,KAAR,EAAP;AACH;AACJ,aAJM,EAIJhnB,IAJI,CAIC,YAAM;AACV,qBAAO,MAAI,CAAC8rC,cAAL,EAAP;AACH,aANM,CAAP;AAOH,WARD;;AAUA,cAAMC,QAAQ,GAAG,SAAXA,QAAW,CAAC5nC,GAAD,EAAMqI,GAAN,EAAc;AAC3B,mBAAOhL,2BAAY,CAAC6B,GAAb,CAAiB,CACpB2oC,+BAAK,CAAC7nC,GAAG,IAAIvE,MAAM,CAACkqB,GAAf,EAAoBtd,GAAG,IAAIzH,IAAI,CAAC4nC,SAAhC,CADe,EAEpB3lB,KAAK,EAFe,CAAjB,CAAP;AAIH,WALD;;AAOA,iBAAOxlB,2BAAY,CAACuB,GAAb,CAAiB,YAAM;AAC1B,mBAAOm8B,QAAQ,CAACn/B,IAAT,CAAc,MAAd,EAAoBgF,IAApB,6CAA+B6mC,OAA/B;AAAwC5kB,mBAAK,EAALA,KAAxC;AAA+C+kB,sBAAQ,EAARA;AAA/C,eAAP;AACH,WAFM,EAEJlpC,OAFI,CAEI,YAAM;AACb,kBAAI,CAACmkB,KAAL;AACH,WAJM,CAAP;AAKH,SAxBD;AAyBH;AAhCK,KAxTP;AA2VH7e,QAAI,EAAE;AACFjJ,UAAI,EAAM,UADR;AAEFurC,cAAQ,EAAE,KAFR;AAGF/kC,UAAI,EAAM,IAHR;AAIFhB,UAAI,EAAM,IAJR;AAMFgnC,cANE,oBAMOxM,QANP,EAM4B;AAC1B,eAAO,SAAS0N,YAAT,CAAsB7nC,IAAtB,EAAmC;AAAA;;AACtCmF,sDAAI,CAAC,eAAD,CAAJ;AAEA+F,uDAAK,sBACC/jB,yBAAI,CAACC,GAAL,CAASE,KADV,IAC0BH,yBAAI,CAACG,KAAL,CAAWtH,QADrC,SAECmH,yBAAI,CAACC,GAAL,CAASG,UAFV,IAE0BJ,yBAAI,CAACI,UAAL,CAAgB0C,aAF1C,SAGC9C,yBAAI,CAACC,GAAL,CAASS,YAHV,IAG0BV,yBAAI,CAACU,YAAL,CAAkBtB,iCAAY,CAACC,QAA/B,CAH1B,SAICW,yBAAI,CAACC,GAAL,CAASO,KAJV,IAI0BqY,IAAI,CAACyC,YAJ/B,SAKCtb,yBAAI,CAACC,GAAL,CAASW,SALV,IAK0BiY,IAAI,CAAC8C,UAL/B,SAMC3b,yBAAI,CAACC,GAAL,CAASQ,UANV,IAM0BoY,IAAI,CAACyC,YAN/B,UAAL;AASA2C,uDAAS;AAET,eAAK3C,YAAL,GAAoBzC,IAAI,CAACyC,YAAzB;AACA,eAAKmlC,SAAL,GAAoB5nC,IAAI,CAAC4nC,SAAzB;AAEA,iBAAOzN,QAAQ,CAACn7B,KAAT,CAAe,IAAf,EAAqBoB,SAArB,CAAP;AACH,SAlBD;AAmBH;AA1BC,KA3VH;AAwXH0nC,WAAO,EAAE;AACL3tC,UAAI,EAAO,UADN;AAELurC,cAAQ,EAAG,KAFN;AAGL/kC,UAAI,EAAO,IAHN;AAIL4qB,eAAS,EAAE,IAJN;AAKL5rB,UAAI,EAAO,IALN;AAOLgnC,cAPK,oBAOIxM,QAPJ,EAOyB;AAC1B,eAAO,SAAS4N,eAAT,CAAyBC,MAAzB,EAAsD;AAEzD,cAAMF,OAAO,GAAG3N,QAAQ,CAACn7B,KAAT,CAAe,IAAf,EAAqBoB,SAArB,CAAhB;AAEA,cAAMw1B,aAAa,GAAGW,6BAAS,CAACX,aAAhC;AAEA,cAAMqS,YAAY,GACd,KAAKvvC,KAAL,CAAWgvC,QAAX,IACA,CAAE9R,aAAa,CAACG,cAAhB,EAAgCH,aAAa,CAACI,WAA9C,EAA4Dz6B,OAA5D,CAAoEysC,MAApE,MAAgF,CAAC,CAFrF;;AAIA,cAAIC,YAAJ,EAAkB;AACd9iC,wDAAI,wBAAJ;AACA,mBAAO,KAAKzM,KAAL,CAAWgvC,QAAX,CAAoB;AACvBjlC,0BAAY,EAAE,KAAKA,YADI;AAEvBmlC,uBAAS,EAAK,KAAKA;AAFI,aAApB,EAGJ3sC,IAHI,CAGC;AAAA,qBAAM6sC,OAAN;AAAA,aAHD,CAAP;AAIH;;AAED,iBAAOA,OAAP;AACH,SAnBD;AAoBH;AA5BI,KAxXN;AAuZHlqC,WAAO,EAAE;AACLzD,UAAI,EAAO,UADN;AAELurC,cAAQ,EAAG,KAFN;AAGLna,eAAS,EAAE,IAHN;AAIL5rB,UAAI,EAAO,IAJN;AAKLgB,UAAI,EAAO;AALN,KAvZN;AA+ZHunC,YAAQ,EAAE;AACN/tC,UAAI,EAAM,UADJ;AAENurC,cAAQ,EAAE,KAFJ;AAGN/kC,UAAI,EAAM,IAHJ;AAKN+L,SALM,iBAKW;AACb,eAAO,SAASy7B,eAAT,CAAyB1gC,GAAzB,EAAmD;AACtDlC,sDAAI,CAAC,UAAD,EAAa;AAAEkC,eAAG,EAAHA;AAAF,WAAb,CAAJ;;AAEA,cAAIgF,uCAAgB,CAAC,0BAAD,CAApB,EAAkD;AAC9C5R,kBAAM,CAACkqB,GAAP,CAAWvkB,QAAX,GAAsBiH,GAAtB;AACA,mBAAO,KAAKwa,KAAL,EAAP;AACH;;AAED,iBAAOohB,wBAAwB,CAAC,KAAK3qC,KAAL,CAAW0qC,WAAZ,CAA/B;AACH,SATD;AAUH;AAhBK,KA/ZP;AAkbH3/B,YAAQ,EAAE;AACNtJ,UAAI,EAAM,QADJ;AAENurC,cAAQ,EAAE,KAFJ;;AAGN,UAAItrC,KAAJ,GAAqB;AACjB,eAAOmF,wBAAM,CAACkE,QAAd;AACH;;AALK,KAlbP;AA0bHjJ,QAAI,EAAE;AACFL,UAAI,EAAM,QADR;AAEFurC,cAAQ,EAAE,KAFR;AAGFh5B,SAHE,iBAGa;AACX,eAAO7R,MAAM,CAACutC,QAAP,IAAmB;AAAEC,gBAAM,EAAE;AAAV,SAA1B;AACH;AALC,KA1bH;AAkcHC,WAAO,EAAE;AACLnuC,UAAI,EAAS,QADR;AAELwrC,gBAAU,EAAG,IAFR;AAGLI,iBAAW,EAAE,KAHR;AAILr5B,SAAG,EAAU,eAAM;AACf,eAAO67B,0CAAY,CAAC7iC,IAAI,CAACC,SAAL,CAAe;AAC/B8B,aAAG,EAAE+E,0CAAmB;AADO,SAAf,CAAD,CAAnB;AAGH;AARI;AAlcN,GA3DmD;;AAygB1D,MAAI+Z,UAAJ,GAAuD;AAEnD,QAAI9X,+BAAQ,EAAZ,EAAgB;AACZ,aAAO;AACH0W,aAAK,EAAG,MADL;AAEHC,cAAM,EAAE;AAFL,OAAP;AAIH;;AAED,WAAO;AACHD,WAAK,EAAG,OADL;AAEHC,YAAM,EAAE;AAFL,KAAP;AAIH;;AAthByD,CAAD,CAAtD;;AAyhBP,IAAI8e,QAAQ,CAACsE,OAAT,MAAsBtE,QAAQ,CAAC5jC,MAA/B,IAAyC4jC,QAAQ,CAAC0B,MAAtD,EAA8D;AAE1D,MAAI1B,QAAQ,CAAC0B,MAAT,IAAmB1B,QAAQ,CAAC0B,MAAT,CAAgBniC,QAAvC,EAAiD;AAC7CE,sCAAW,CAACugC,QAAQ,CAAC0B,MAAT,CAAgBniC,QAAjB,CAAX;AACH;;AAEDygC,UAAQ,CAAC5jC,MAAT,CAAgBmoC,OAAhB,CAAwB,UAAA7C,MAAM,EAAI;AAC9B1L,sCAAW,CAAC0L,MAAD,EAAS,aAAT,EAAwB,gBAAsC;AAAA,UAAnCvL,YAAmC,QAAnCA,YAAmC;AAAA,2BAArBt7B,IAAqB;AAAA,UAAbiB,IAAa;;AACrE,UAAIA,IAAI,IAAI,CAACA,IAAI,CAAC8mC,MAAlB,EAA0B;AACtBvhC,oDAAI,+BAA+B;AAAE0+B,mBAAS,EAAEjkC,IAAI,CAACikC,SAAlB;AAA6BhjC,eAAK,EAAEjB,IAAI,CAACyC;AAAzC,SAA/B,CAAJ;;AAEA,YAAI;AACA,cAAMqkC,MAAM,GAAGjsC,MAAM,CAAC6tC,QAAP,CAAgBt/B,GAAhB,CAAoB,oBAApB,EAA0Cu/B,QAA1C,CAAmD3oC,IAAI,CAACyC,YAAxD,EAAsEmmC,cAArF;AACArjC,sDAAI,kBAAkB;AAAE0+B,qBAAS,EAAEjkC,IAAI,CAACikC,SAAlB;AAA6BhjC,iBAAK,EAAEjB,IAAI,CAACyC,YAAzC;AAAuDqkC,kBAAM,EAANA;AAAvD,WAAlB,CAAJ;AACH,SAHD,CAGE,OAAO5rC,GAAP,EAAY,CACV;AACH;;AAEDyd,8DAAc;AACjB;;AACD,aAAO0hB,YAAY,EAAnB;AACH,KAdU,CAAX;AAeH,GAhBD;AAiBH;;AAEDH,kCAAW,CAACgK,QAAD,EAAW,MAAX,EAAmB,iBAAsD;AAAA,yBAAnDnlC,IAAmD;AAAA,MAA3CrG,KAA2C;AAAA,MAApCmwC,QAAoC;AAAA,MAAxB1O,QAAwB,SAAxBA,QAAwB;AAAA,MAAdr7B,OAAc,SAAdA,OAAc;AAChF,SAAOq7B,QAAQ,CAACn/B,IAAT,CAAc8D,OAAd,EAAuBpG,KAAvB,EAA8BmwC,QAA9B,EAAwC,MAAxC,CAAP;AACH,CAFU,CAAX;AAIA3O,kCAAW,CAACgK,QAAD,EAAW,QAAX,EAAqB,iBAA4C;AAAA,yBAAzCnlC,IAAyC;AAAA,MAAjCrG,KAAiC;AAAA,MAAxByhC,QAAwB,SAAxBA,QAAwB;AAAA,MAAdr7B,OAAc,SAAdA,OAAc;AACxE,SAAOq7B,QAAQ,CAACn/B,IAAT,CAAc8D,OAAd,EAAuBpG,KAAvB,EAA8B,MAA9B,CAAP;AACH,CAFU,CAAX;AAIAwhC,kCAAW,CAACgK,QAAD,EAAW,UAAX,EAAuB,iBAAiD;AAAA,yBAA9CnlC,IAA8C;AAAA,MAAtCK,GAAsC;AAAA,MAAjC1G,KAAiC;AAAA,MAAxByhC,QAAwB,SAAxBA,QAAwB;AAAA,MAAdr7B,OAAc,SAAdA,OAAc;AAE/E,MAAMgmC,OAAO,GAAGpsC,KAAK,CAACosC,OAAN,EAAhB;;AACApsC,OAAK,CAACosC,OAAN,GAAgB;AAAA,WAAMA,OAAN;AAAA,GAAhB;;AAEA,SAAO3K,QAAQ,CAACn/B,IAAT,CAAc8D,OAAd,EAAuBM,GAAvB,EAA4B1G,KAA5B,EAAmC,MAAnC,EAA2CmF,KAA3C,CAAiD,UAAA3C,GAAG,EAAI;AAC3D,QAAIA,GAAG,YAAY4mB,kCAAf,IAAiC5gB,qCAAc,EAAnD,EAAuD;AACnDgjC,cAAQ,CAACkB,QAAT,CAAkBzhB,MAAlB,GAA2B,IAA3B;AACA,aAAOwW,QAAQ,CAACn/B,IAAT,CAAc8D,OAAd,EAAuBM,GAAvB,EAA4B1G,KAA5B,EAAmC,MAAnC,CAAP;AACH;;AACD,UAAMwC,GAAN;AACH,GANM,CAAP;AAOH,CAZU,CAAX,C;;ACzmBA;;;;;;;;;;ACAO,SAASgJ,YAAT,GAAiC;AACpC,SAAOrJ,MAAM,CAACgK,SAAP,CAAiB4qB,aAAjB,IAAkC50B,MAAM,CAACgK,SAAP,CAAiBZ,SAA1D;AACH;AAEM,SAASwK,QAAT,CAAkBxK,SAAlB,EAAkE;AAAA,MAAhDA,SAAgD;AAAhDA,aAAgD,GAA1BC,YAAY,EAAc;AAAA;;AACrE,MAAID,SAAS,CAAC/J,KAAV,CAAgB,sGAAhB,CAAJ,EAA6H;AACzH,WAAO,IAAP;AACH;;AAED,SAAO,KAAP;AACH;AAEM,SAAS4uC,SAAT,GAA+B;AAClC,MAAI7kC,SAAS,GAAGC,YAAY,EAA5B;AACA,SAAQ,wDAAD,CAA2D1J,IAA3D,CAAgEyJ,SAAhE,KACF,QAAD,CAAWzJ,IAAX,CAAgByJ,SAAhB,CADG,IAEN,+BAAD,CAAkCzJ,IAAlC,CAAuCyJ,SAAvC,CAFA;AAGH;AAEM,SAAS8kC,YAAT,GAAkC;AACrC,SAAQluC,MAAM,CAACgK,SAAP,CAAiBmkC,UAAjB,KAAgC,IAAhC,IAAwCnuC,MAAM,CAACouC,UAAP,CAAkB,4BAAlB,EAAgDhqB,OAAhG;AACH;AAEM,SAASiqB,iBAAT,CAA2BC,EAA3B,EAAoE;AAAA,MAAzCA,EAAyC;AAAzCA,MAAyC,GAA1BjlC,YAAY,EAAc;AAAA;;AACvE,SAAQilC,EAAE,CAAC5tC,OAAH,CAAW,MAAX,MAAuB,CAAC,CAAzB,IAAgC4tC,EAAE,CAAC5tC,OAAH,CAAW,MAAX,MAAuB,CAAC,CAA/D;AACH;AAEM,SAAS6tC,YAAT,CAAsBD,EAAtB,EAA+D;AAAA,MAAzCA,EAAyC;AAAzCA,MAAyC,GAA1BjlC,YAAY,EAAc;AAAA;;AAClE,SAAQ,QAAD,CAAW1J,IAAX,CAAgB2uC,EAAhB,CAAP;AACH;AAEM,SAASE,SAAT,CAAmBF,EAAnB,EAA4D;AAAA,MAAzCA,EAAyC;AAAzCA,MAAyC,GAA1BjlC,YAAY,EAAc;AAAA;;AAC/D,SAAQ,SAAD,CAAY1J,IAAZ,CAAiB2uC,EAAjB,CAAP;AACH;AAEM,SAASG,WAAT,CAAqBH,EAArB,EAA8D;AAAA,MAAzCA,EAAyC;AAAzCA,MAAyC,GAA1BjlC,YAAY,EAAc;AAAA;;AACjE,SAAOilC,EAAE,CAAC5tC,OAAH,CAAW,YAAX,IAA2B,CAAC,CAAnC;AACH;AAEM,SAASguC,SAAT,CAAmBJ,EAAnB,EAA4D;AAAA,MAAzCA,EAAyC;AAAzCA,MAAyC,GAA1BjlC,YAAY,EAAc;AAAA;;AAC/D,SAAQ,SAAD,CAAY1J,IAAZ,CAAiB2uC,EAAjB,CAAP;AACH;AAEM,SAASK,KAAT,CAAeL,EAAf,EAAwD;AAAA,MAAzCA,EAAyC;AAAzCA,MAAyC,GAA1BjlC,YAAY,EAAc;AAAA;;AAC3D,SAAQ,kBAAD,CAAqB1J,IAArB,CAA0B2uC,EAA1B,CAAP;AACH;AAEM,SAASM,iBAAT,CAA2BN,EAA3B,EAAoE;AAAA,MAAzCA,EAAyC;AAAzCA,MAAyC,GAA1BjlC,YAAY,EAAc;AAAA;;AACvE,SAAQ,SAAD,CAAY1J,IAAZ,CAAiB2uC,EAAjB,CAAP;AACH;AAEM,SAASO,WAAT,CAAqBP,EAArB,EAA8D;AAAA,MAAzCA,EAAyC;AAAzCA,MAAyC,GAA1BjlC,YAAY,EAAc;AAAA;;AACjE,SAAQ,WAAD,CAAc1J,IAAd,CAAmB2uC,EAAnB,CAAP;AACH;AAEM,SAASQ,YAAT,CAAsBR,EAAtB,EAA+D;AAAA,MAAzCA,EAAyC;AAAzCA,MAAyC,GAA1BjlC,YAAY,EAAc;AAAA;;AAClE,MAAIslC,KAAK,CAACL,EAAD,CAAT,EAAe;AACX,QAAIM,iBAAiB,CAACN,EAAD,CAArB,EAA2B;AACvB,aAAO,IAAP;AACH;;AACD,WAAQ,2BAAD,CAA8B3uC,IAA9B,CAAmC2uC,EAAnC,CAAP;AACH;;AACD,SAAO,KAAP;AACH;AAEM,SAASS,gBAAT,CAA0BT,EAA1B,EAAmE;AAAA,MAAzCA,EAAyC;AAAzCA,MAAyC,GAA1BjlC,YAAY,EAAc;AAAA;;AACtE,MAAIqlC,SAAS,CAACJ,EAAD,CAAb,EAAmB;AACf,WAAQ,iBAAD,CAAoB3uC,IAApB,CAAyB2uC,EAAzB,KAAgC,CAACG,WAAW,CAACH,EAAD,CAAnD;AACH;;AACD,SAAO,KAAP;AACH;AAEM,SAAStjC,WAAT,GAA0B;AAE7B,MAAIhL,MAAM,CAAC+Q,QAAP,CAAgBsL,YAApB,EAAkC;AAC9B,WAAO,IAAP;AACH;;AAED,SAAO7K,OAAO,CACVxR,MAAM,CAACgK,SAAP,IACAhK,MAAM,CAACgK,SAAP,CAAiBZ,SADjB,IAEC,kBAAD,CAAqBzJ,IAArB,CAA0BK,MAAM,CAACgK,SAAP,CAAiBZ,SAA3C,CAHU,CAAd;AAKH;AAEM,SAAS6B,cAAT,GAAoC;AACvC,MAAI+jC,KAAK,GAAGhvC,MAAM,CAAC+Q,QAAP,CAAgB0V,aAAhB,CAA8B,oCAA9B,CAAZ;AACA,MAAIwoB,QAAQ,GAAGjvC,MAAM,CAAC+Q,QAAP,CAAgB0V,aAAhB,CAA8B,yBAA9B,CAAf;;AACA,MAAIuoB,KAAK,IAAIC,QAAb,EAAuB;AACnB,WAAO,IAAP;AACH;;AACD,SAAO,KAAP;AACH;AAEM,SAASC,UAAT,GAAgC;AACnC,MAAI,OAAOC,OAAP,KAAmB,WAAnB,IAAkCA,OAAO,CAACC,QAA1C,IAAsDD,OAAO,CAACC,QAAR,CAAiBC,QAA3E,EAAqF;AACjF,WAAO,IAAP;AACH;;AACD,SAAO,KAAP;AACH;AAEM,SAASzlC,YAAT,GAAkC;AAErC;AAEA,MAAI5J,MAAM,CAAC+Q,QAAP,CAAgBsL,YAApB,EAAkC;AAC9B,QAAI;AACA,UAAI3O,MAAM,GAAG1N,MAAM,CAAC0N,MAApB;AAEA1N,YAAM,CAAC0N,MAAP,GAAgB,kBAAhB;;AAEA,UAAI1N,MAAM,CAAC0N,MAAP,KAAkB,kBAAtB,EAA0C;AACtC1N,cAAM,CAAC0N,MAAP,GAAgBA,MAAhB;AAEA,eAAO,IAAP;AACH;;AAED,aAAO,KAAP;AAEH,KAbD,CAaE,OAAOrN,GAAP,EAAY;AAEV,aAAO,KAAP;AACH;AACJ;;AAED,SAAO,KAAP;AACH;AAEM,SAASivC,UAAT,GAAgC;AACnC,MAAIlmC,SAAS,GAAGC,YAAY,EAA5B;AACA,SAAQ,qCAAD,CAAwC1J,IAAxC,CAA6CyJ,SAA7C,CAAP;AACH;AAEM,SAASohC,cAAT,CAAwB8D,EAAxB,EAAiE;AAAA,MAAzCA,EAAyC;AAAzCA,MAAyC,GAA1BjlC,YAAY,EAAc;AAAA;;AACpE,SAAO,EAAEylC,YAAY,CAACR,EAAD,CAAZ,IAAoBS,gBAAgB,CAACT,EAAD,CAApC,IAA4CG,WAAW,CAACH,EAAD,CAAvD,IACLC,YAAY,CAACD,EAAD,CADP,IACeE,SAAS,CAACF,EAAD,CADxB,IACgCD,iBAAiB,CAACC,EAAD,CADjD,IACyDO,WAAW,CAACP,EAAD,CADpE,IAC4EY,UAAU,EADtF,IAC4FI,UAAU,EADtG,IAC4GpB,YAAY,EAD1H,CAAP;AAEH;AAEM,SAASqB,QAAT,CAAkBjB,EAAlB,EAA2D;AAAA,MAAzCA,EAAyC;AAAzCA,MAAyC,GAA1BjlC,YAAY,EAAc;AAAA;;AAC9D,SAAQ,uBAAD,CAA0B1J,IAA1B,CAA+B2uC,EAA/B,CAAP;AACH;AAEM,SAASkB,QAAT,CAAkBlB,EAAlB,EAA2D;AAAA,MAAzCA,EAAyC;AAAzCA,MAAyC,GAA1BjlC,YAAY,EAAc;AAAA;;AAC9D,SAAQ,QAAD,CAAW1J,IAAX,CAAgB2uC,EAAhB,KAAuB,CAACiB,QAAQ,CAACjB,EAAD,CAAvC;AACH,C;;;;;;;;;;;;;;ACjJD;AAEA;AACA;AAIO,SAASmB,eAAT,CAAwCC,EAAxC,EAAyD;AAC5D,SAAOA,EAAE,CAAC9xC,IAAH,IAAW8xC,EAAE,CAACpI,QAAd,IAA0BoI,EAAE,CAAC/d,WAA7B,IAA4C,WAAnD;AACH;AAEM,SAASge,eAAT,CAAwCD,EAAxC,EAAgD9xC,IAAhD,EAAmE;AACtE,MAAI;AACA,WAAO8xC,EAAE,CAAC9xC,IAAV;AACA8xC,MAAE,CAAC9xC,IAAH,GAAUA,IAAV;AACH,GAHD,CAGE,OAAOyC,GAAP,EAAY,CACV;AACH;;AAEDqvC,IAAE,CAACpI,QAAH,GAAcoI,EAAE,CAAC/d,WAAH,GAAiB/zB,IAA/B;AACA,SAAO8xC,EAAP;AACH;AAEM,SAAShC,YAAT,CAAsBlsB,GAAtB,EAA6C;AAChD,MAAI,OAAOouB,IAAP,KAAgB,UAApB,EAAgC;AAC5B,WAAOA,IAAI,CAACxhC,kBAAkB,CAACoT,GAAD,CAAlB,CAAwB9jB,OAAxB,CAAgC,iBAAhC,EAAmD,UAACmyC,CAAD,EAAIC,EAAJ,EAAW;AACtE,aAAOpR,MAAM,CAACC,YAAP,CAAoB3f,QAAQ,CAAC8wB,EAAD,EAAK,EAAL,CAA5B,CAAP;AACH,KAFW,CAAD,CAAX;AAGH;;AAED,MAAI,OAAOC,MAAP,KAAkB,WAAtB,EAAmC;AAC/B,WAAOA,MAAM,CAACC,IAAP,CAAYxuB,GAAZ,EAAiB,MAAjB,EAAyB/jB,QAAzB,CAAkC,QAAlC,CAAP;AACH;;AAED,QAAM,IAAIgC,KAAJ,sCAAN;AACH;AAEM,SAASwwC,YAAT,CAAsBzuB,GAAtB,EAA6C;AAChD,MAAI,OAAO0uB,IAAP,KAAgB,UAApB,EAAgC;AAC5B,WAAO3mB,kBAAkB,CAAC3qB,KAAK,CAAC4D,SAAN,CAAgBnE,GAAhB,CAAoB8B,IAApB,CAAyB+vC,IAAI,CAAC1uB,GAAD,CAA7B,EAAoC,UAAA1V,CAAC,EAAI;AAC/D;AACA,aAAO,MAAM,CAAC,OAAOA,CAAC,CAACuyB,UAAF,CAAa,CAAb,EAAgB5gC,QAAhB,CAAyB,EAAzB,CAAR,EAAsCqT,KAAtC,CAA4C,CAAC,CAA7C,CAAb;AACH,KAHyB,EAGvBxS,IAHuB,CAGlB,EAHkB,CAAD,CAAzB;AAIH;;AAED,MAAI,OAAOyxC,MAAP,KAAkB,WAAtB,EAAmC;AAC/B,WAAOA,MAAM,CAACC,IAAP,CAAYxuB,GAAZ,EAAiB,QAAjB,EAA2B/jB,QAA3B,CAAoC,MAApC,CAAP;AACH;;AAED,QAAM,IAAIgC,KAAJ,sCAAN;AACH;AAEM,SAASyc,QAAT,GAA6B;AAEhC,MAAIC,KAAK,GAAG,kBAAZ;AAEA,MAAIg0B,QAAQ,GAAG,aAAazyC,OAAb,CAAqB,IAArB,EAA2B,YAAM;AAC5C,WAAOye,KAAK,CAACC,MAAN,CAAatN,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACE,MAAL,KAAgBmN,KAAK,CAACpb,MAAjC,CAAb,CAAP;AACH,GAFc,CAAf;AAIA,MAAIqvC,MAAM,GAAG1C,YAAY,CACrB,IAAIrvB,IAAJ,GAAWgyB,WAAX,GAAyBv/B,KAAzB,CAA+B,EAA/B,EAAmC,EAAnC,EAAuCpT,OAAvC,CAA+C,GAA/C,EAAoD,GAApD,CADqB,CAAZ,CAEXA,OAFW,CAEH,eAFG,EAEc,EAFd,EAEkBgP,WAFlB,EAAb;AAIA,SAAWyjC,QAAX,SAAyBC,MAAzB;AACH;AAEM,SAASpS,SAAT,GAA8B;AACjC,MAAI,OAAOh+B,MAAP,KAAkB,WAAtB,EAAmC;AAC/B,WAAOA,MAAP;AACH;;AACD,MAAI,OAAOsT,MAAP,KAAkB,WAAtB,EAAmC;AAC/B,WAAOA,MAAP;AACH;;AACD,MAAI,OAAOg9B,MAAP,KAAsB,WAA1B,EAAuC;AACnC,WAAOA,MAAP;AACH;;AACD,QAAM,IAAI7wC,KAAJ,mBAAN;AACH;AAED,IAAIgkB,SAAJ;AAEO,SAASE,WAAT,CAAqB9B,GAArB,EAA4C;AAE/C4B,WAAS,GAAGA,SAAS,IAAI,IAAIC,gDAAJ,EAAzB;;AAEA,MAAI7B,GAAG,KAAK,IAAR,IAAgBA,GAAG,KAAKljB,SAAxB,IAAsC,OAAOkjB,GAAP,KAAe,QAAf,IAA2B,OAAOA,GAAP,KAAe,UAApF,EAAiG;AAC7F,UAAM,IAAIpiB,KAAJ,kBAAN;AACH;;AAED,MAAIwH,GAAG,GAAGwc,SAAS,CAAClV,GAAV,CAAcsT,GAAd,CAAV;;AAEA,MAAI,CAAC5a,GAAL,EAAU;AACNA,OAAG,GAAO,OAAO4a,GAAd,SAAuB3F,QAAQ,EAAlC;AACAuH,aAAS,CAACR,GAAV,CAAcpB,GAAd,EAAmB5a,GAAnB;AACH;;AAED,SAAOA,GAAP;AACH;;AAED,SAASspC,aAAT,CAA0BrsC,IAA1B,EAAoD;AAChD,MAAI;AACA,WAAO2G,IAAI,CAACC,SAAL,CAAelM,KAAK,CAAC4D,SAAN,CAAgBsO,KAAhB,CAAsB3Q,IAAtB,CAA2B+D,IAA3B,CAAf,EAAiD,UAACssC,MAAD,EAAS37B,GAAT,EAAiB;AACrE,UAAI,OAAOA,GAAP,KAAe,UAAnB,EAA+B;AAC3B,4BAAmB8O,WAAW,CAAC9O,GAAD,CAA9B;AACH;;AACD,aAAOA,GAAP;AACH,KALM,CAAP;AAMH,GAPD,CAOE,OAAOxU,GAAP,EAAY;AACV,UAAM,IAAIZ,KAAJ,4DAAN;AACH;AACJ;;AACM,SAASmR,OAAT,CAAkI5M,MAAlI,EAA8IwK,OAA9I,EAA+M;AAAA;;AAAA,MAAjEA,OAAiE;AAAjEA,WAAiE,GAAR,EAAQ;AAAA;;AAClN,MAAIiiC,QAAQ,GAAG,IAAI/sB,gDAAJ,EAAf,CADkN,CAGlN;;AACA,MAAI+N,gBAAoB,GAAG,SAASA,gBAAT,GAAkD;AAAA,sCAArBvtB,IAAqB;AAArBA,UAAqB;AAAA;;AACzE,QAAI+5B,KAAK,GAAGwS,QAAQ,CAACC,QAAT,CAAkBliC,OAAO,CAACmiC,aAAR,GAAwB,IAAxB,GAA+B3sC,MAAjD,EAAyD;AAAA,aAAO,EAAP;AAAA,KAAzD,CAAZ;AAEA,QAAI5F,GAAY,GAAGmyC,aAAa,CAACrsC,IAAD,CAAhC;AAEA,QAAI0sC,SAAS,GAAGpiC,OAAO,CAACnL,IAAxB;;AACA,QAAI46B,KAAK,CAAC7/B,GAAD,CAAL,IAAcwyC,SAAd,IAA4BvyB,IAAI,CAACC,GAAL,KAAa2f,KAAK,CAAC7/B,GAAD,CAAL,CAAWiF,IAAzB,GAAiCutC,SAAhE,EAA2E;AACvE,aAAO3S,KAAK,CAAC7/B,GAAD,CAAZ;AACH;;AAED,QAAI6/B,KAAK,CAAC7/B,GAAD,CAAT,EAAgB;AACZ,aAAO6/B,KAAK,CAAC7/B,GAAD,CAAL,CAAWmB,KAAlB;AACH;;AAED,QAAI8D,IAAI,GAAIgb,IAAI,CAACC,GAAL,EAAZ;AACA,QAAI/e,KAAK,GAAGyE,MAAM,CAACG,KAAP,CAAa,IAAb,EAAmBoB,SAAnB,CAAZ;AAEA04B,SAAK,CAAC7/B,GAAD,CAAL,GAAa;AAAEiF,UAAI,EAAJA,IAAF;AAAQ9D,WAAK,EAALA;AAAR,KAAb;AAEA,WAAO0+B,KAAK,CAAC7/B,GAAD,CAAL,CAAWmB,KAAlB;AACH,GApBD;;AAsBAkyB,kBAAgB,CAACxS,KAAjB,GAAyB,YAAM;AAC3BwxB,YAAQ,CAACrN,MAAT,CAAgB50B,OAAO,CAACmiC,aAAR,GAAwB,KAAxB,GAA+B3sC,MAA/C;AACH,GAFD;;AAIA,SAAO2rC,eAAe,CAACle,gBAAD,EAAuBge,eAAe,CAACzrC,MAAD,CAAtC,gBAAtB;AACH;AAEM,SAAS6sC,eAAT,CAAoC/wC,IAApC,EAAkF;AACrF;AACA,SAAO8B,2BAAY,CAACL,OAAb,CAAqBzB,IAArB,CAAP;AACH,C,CAED;;AACO,SAASgxC,cAAT,CAA2B9sC,MAA3B,EAA6H;AAChI,MAAIi6B,KAAK,GAAG,EAAZ,CADgI,CAGhI;;AACA,WAAS8S,uBAAT,GAAyE;AAAA;AAAA;;AAAA,uCAArC7sC,IAAqC;AAArCA,UAAqC;AAAA;;AACrE,QAAI9F,GAAY,GAAGmyC,aAAa,CAACrsC,IAAD,CAAhC;;AAEA,QAAI+5B,KAAK,CAACh0B,cAAN,CAAqB7L,GAArB,CAAJ,EAA+B;AAC3B,aAAO6/B,KAAK,CAAC7/B,GAAD,CAAZ;AACH;;AAED6/B,SAAK,CAAC7/B,GAAD,CAAL,GAAawD,2BAAY,CAACuB,GAAb,CAAiB;AAAA,aAAMa,MAAM,CAACG,KAAP,CAAa,MAAb,EAAmBoB,UAAnB,CAAN;AAAA,KAAjB,EACRtC,OADQ,CACA,YAAM;AACX,aAAOg7B,KAAK,CAAC7/B,GAAD,CAAZ;AACH,KAHQ,CAAb;AAKA,WAAO6/B,KAAK,CAAC7/B,GAAD,CAAZ;AACH;;AAED2yC,yBAAuB,CAAC9xB,KAAxB,GAAgC,YAAM;AAClCgf,SAAK,GAAG,EAAR;AACH,GAFD;;AAIA,SAAO0R,eAAe,CAACoB,uBAAD,EAA8BtB,eAAe,CAACzrC,MAAD,CAA7C,uBAAtB;AACH,C,CAED;;AACO,SAAS0sB,SAAT,CAAsB1sB,MAAtB,EAA4DwK,OAA5D,EAA6I;AAAA,MAAjFA,OAAiF;AAAjFA,WAAiF,GAAlD,EAAkD;AAAA;;AAChJ,WAASojB,mBAAT,GAAiD;AAC7C,WAAOhwB,2BAAY,CAACuB,GAAb,CAAiBa,MAAjB,EAAyB,IAAzB,EAA+BuB,SAA/B,CAAP;AACH;;AAED,MAAIiJ,OAAO,CAAC5Q,IAAZ,EAAkB;AACdg0B,uBAAmB,CAACD,WAApB,GAAsCnjB,OAAO,CAAC5Q,IAA9C;AACH;;AAED,SAAO+xC,eAAe,CAAC/d,mBAAD,EAA0B6d,eAAe,CAACzrC,MAAD,CAAzC,mBAAtB;AACH,C,CAED;;AACO,SAASgtC,aAAT,CAA0BhtC,MAA1B,EAAgEitC,KAAhE,EAAqG/sC,IAArG,EAAiI;AAAA,MAA5BA,IAA4B;AAA5BA,QAA4B,GAAR,EAAQ;AAAA;;AACpI;AACA,MAAI+5B,KAAK,GAAGj6B,MAAM,CAACktC,wBAAP,GAAkCltC,MAAM,CAACktC,wBAAP,IAAmC,EAAjF;AACA,MAAI9yC,GAAG,GAAGmyC,aAAa,CAACrsC,IAAD,CAAvB;;AAEA,MAAI+5B,KAAK,CAACh0B,cAAN,CAAqB7L,GAArB,CAAJ,EAA+B;AAC3B,WAAO6/B,KAAK,CAAC7/B,GAAD,CAAZ;AACH;;AAED,MAAII,MAAM,GAAGy/B,KAAK,CAAC7/B,GAAD,CAAL,GAAa6yC,KAAK,MAAL,SAAS/sC,IAAT,CAA1B;AAEA,SAAO1F,MAAP;AACH,C,CAED;;AACO,SAASsG,IAAT,GAAsC,CACzC;AACH;AAEM,SAASgB,IAAT,CAAc9B,MAAd,EAA4C;AAC/C,MAAIihB,MAAM,GAAG,KAAb;;AAEA,MAAMugB,YAAY,GAAG,SAAfA,YAAe,GAAmB;AACpC,QAAI,CAACvgB,MAAL,EAAa;AACTA,YAAM,GAAG,IAAT;AACA,aAAOjhB,MAAM,CAACG,KAAP,CAAa,IAAb,EAAmBoB,SAAnB,CAAP;AACH;AACJ,GALD;;AAOA,SAAOoqC,eAAe,CAACnK,YAAD,EAAmBiK,eAAe,CAACzrC,MAAD,CAAlC,YAAtB;AACH;AAEM,SAASo6B,OAAT,CAAiB5c,GAAjB,EAAwC;AAC3C,MAAI1d,IAAI,GAAG,CAAX;;AACA,OAAK,IAAIjB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2e,GAAG,CAACzgB,MAAxB,EAAgC8B,CAAC,EAAjC,EAAqC;AACjCiB,QAAI,IAAI0d,GAAG,CAAC3e,CAAD,CAAH,CAAOw7B,UAAP,CAAkB,CAAlB,IAAuBvvB,IAAI,CAACwvB,GAAL,CAAUz7B,CAAC,GAAG,EAAL,GAAW,CAApB,EAAuB,CAAvB,CAA/B;AACH;;AACD,SAAOiM,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACwvB,GAAL,CAASxvB,IAAI,CAACyvB,IAAL,CAAUz6B,IAAV,CAAT,EAA0B,CAA1B,CAAX,CAAP;AACH;AAEM,SAAS06B,UAAT,CAAoBhd,GAApB,EAA2C;AAC9C,MAAI1d,IAAI,GAAG,EAAX;;AAEA,OAAK,IAAIjB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2e,GAAG,CAACzgB,MAAxB,EAAgC8B,CAAC,EAAjC,EAAqC;AACjC,QAAI47B,KAAK,GAAIjd,GAAG,CAAC3e,CAAD,CAAH,CAAOw7B,UAAP,CAAkB,CAAlB,IAAuBx7B,CAApC;;AAEA,QAAI2e,GAAG,CAAC3e,CAAC,GAAG,CAAL,CAAP,EAAgB;AACZ47B,WAAK,IAAKjd,GAAG,CAAC3e,CAAC,GAAG,CAAL,CAAH,CAAWw7B,UAAX,CAAsB,CAAtB,KAA4Bx7B,CAAC,GAAG,CAAhC,CAAV;AACH;;AAEDiB,QAAI,IAAI46B,MAAM,CAACC,YAAP,CAAoB,KAAM7vB,IAAI,CAAC8P,GAAL,CAAS6f,KAAT,IAAkB,EAA5C,CAAR;AACH;;AAED,SAAO36B,IAAP;AACH;AAEM,SAASzE,KAAT,CAAemiB,GAAf,EAA6BqC,OAA7B,EAAyD;AAC5D,MAAI+a,QAAQ,GAAGpd,GAAG,CAACniB,KAAJ,CAAUwkB,OAAV,CAAf;;AACA,MAAI+a,QAAJ,EAAc;AACV,WAAOA,QAAQ,CAAC,CAAD,CAAf;AACH;AACJ;AAEM,SAASK,QAAT,CAA4Bpd,GAA5B,EAA0CzjB,GAA1C,EAA0E;AAC7E,SAAO,IAAIwD,2BAAJ,CAAiB,UAAAL,OAAO,EAAI;AAE/B,QAAIhC,KAAK,GAAGsiB,GAAG,CAACzjB,GAAD,CAAf;;AAEA,QAAImB,KAAJ,EAAW;AACP,aAAOgC,OAAO,CAAChC,KAAD,CAAd;AACH;;AAED,WAAOsiB,GAAG,CAACzjB,GAAD,CAAV;AAEAH,UAAM,CAAC0kB,cAAP,CAAsBd,GAAtB,EAA2BzjB,GAA3B,EAAgC;AAE5BwkB,kBAAY,EAAE,IAFc;AAI5BK,SAJ4B,eAIxBnjB,IAJwB,EAIlB;AACNP,aAAK,GAAGO,IAAR;;AAEA,YAAIP,KAAJ,EAAW;AACPgC,iBAAO,CAAChC,KAAD,CAAP;AACH;AACJ,OAV2B;AAY5BgP,SAZ4B,iBAYd;AACV,eAAOhP,KAAP;AACH;AAd2B,KAAhC;AAgBH,GA1BM,CAAP;AA2BH;AAEM,SAASilB,cAAT,CAAwBnkB,GAAxB,EAAqCsd,KAArC,EAAkE;AAAA,MAA7BA,KAA6B;AAA7BA,SAA6B,GAAZ,CAAY;AAAA;;AAErE,MAAIA,KAAK,IAAI,CAAb,EAAgB;AACZ,WAAO,+BAAP;AACH;;AAED,MAAI;AACA,QAAI,CAACtd,GAAL,EAAU;AACN,kCAA2BpC,MAAM,CAACuE,SAAP,CAAiB/E,QAAjB,CAA0B0C,IAA1B,CAA+BE,GAA/B,CAA3B;AACH;;AAED,QAAI,OAAOA,GAAP,KAAe,QAAnB,EAA6B;AACzB,aAAOA,GAAP;AACH;;AAED,QAAIA,GAAG,YAAYZ,KAAnB,EAA0B;AACtB,UAAI0C,KAAK,GAAG9B,GAAG,IAAIA,GAAG,CAAC8B,KAAvB;AACA,UAAI+I,OAAO,GAAG7K,GAAG,IAAIA,GAAG,CAAC6K,OAAzB;;AAEA,UAAI/I,KAAK,IAAI+I,OAAb,EAAsB;AAClB,YAAI/I,KAAK,CAACzB,OAAN,CAAcwK,OAAd,MAA2B,CAAC,CAAhC,EAAmC;AAC/B,iBAAO/I,KAAP;AACH,SAFD,MAEO;AACH,iBAAW+I,OAAX,UAAyB/I,KAAzB;AACH;AACJ,OAND,MAMO,IAAIA,KAAJ,EAAW;AACd,eAAOA,KAAP;AACH,OAFM,MAEA,IAAI+I,OAAJ,EAAa;AAChB,eAAOA,OAAP;AACH;AACJ;;AAED,QAAI7K,GAAG,IAAIA,GAAG,CAAC5C,QAAX,IAAuB,OAAO4C,GAAG,CAAC5C,QAAX,KAAwB,UAAnD,EAA+D;AAC3D;AACA,aAAO4C,GAAG,CAAC5C,QAAJ,EAAP;AACH;;AAED,WAAOQ,MAAM,CAACuE,SAAP,CAAiB/E,QAAjB,CAA0B0C,IAA1B,CAA+BE,GAA/B,CAAP;AAEH,GAjCD,CAiCE,OAAO6+B,MAAP,EAAe;AAAE;AACf,gDAA2C1a,cAAc,CAAC0a,MAAD,EAASvhB,KAAK,GAAG,CAAjB,CAAzD;AACH;AACJ;AAEM,SAASwhB,qBAAT,CAA+B9+B,GAA/B,EAAqD;AAExD,MAAI++B,cAAc,wBAAuBnhC,MAAM,CAACuE,SAAP,CAAiB/E,QAAjB,CAA0B0C,IAA1B,CAA+BE,GAA/B,CAAvB,MAAlB;;AAEA,MAAI,CAACA,GAAL,EAAU;AACN,WAAO++B,cAAP;AACH;;AAED,MAAI/+B,GAAG,YAAYZ,KAAnB,EAA0B;AACtB,WAAOY,GAAG,CAAC6K,OAAJ,IAAek0B,cAAtB;AACH;;AAED,MAAI,OAAO/+B,GAAG,CAAC6K,OAAX,KAAuB,QAA3B,EAAqC;AACjC,WAAO7K,GAAG,CAAC6K,OAAJ,IAAek0B,cAAtB;AACH;;AAED,SAAOA,cAAP;AACH;AAEM,SAASt0B,SAAT,CAAmBhL,IAAnB,EAA0C;AAC7C,MAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;AAC1B,WAAOA,IAAP;AACH;;AAED,MAAIA,IAAI,IAAIA,IAAI,CAACrC,QAAb,IAAyB,OAAOqC,IAAI,CAACrC,QAAZ,KAAyB,UAAtD,EAAkE;AAC9D;AACA,WAAOqC,IAAI,CAACrC,QAAL,EAAP;AACH;;AAED,SAAOQ,MAAM,CAACuE,SAAP,CAAiB/E,QAAjB,CAA0B0C,IAA1B,CAA+BL,IAA/B,CAAP;AACH;AAEM,SAASkS,aAAT,CAAuBF,QAAvB,EAA0C7M,MAA1C,EAAqE;AACxE6M,UAAQ,GAAGA,QAAQ,CAACvF,KAAT,CAAe,KAAf,EAAsB,CAAtB,CAAX;AACA,MAAIyX,KAAK,GAAGlS,QAAQ,CAACpR,OAAT,CAAiBuE,MAAjB,CAAZ;AACA,SAAQ+e,KAAK,KAAK,CAAC,CAAX,IAAgBlS,QAAQ,CAAChB,KAAT,CAAekT,KAAf,MAA0B/e,MAAlD;AACH;AAEM,SAASo6B,WAAT,CAAqBxd,GAArB,EAAmCjkB,IAAnC,EAAkDqD,OAAlD,EAAsE;AACzE,MAAIq+B,QAAQ,GAAGzd,GAAG,CAACjkB,IAAD,CAAlB;;AAEAikB,KAAG,CAACjkB,IAAD,CAAH,GAAY,SAAS2hC,aAAT,GAAiC;AAAA;AAAA;;AACzC,WAAOt+B,OAAO,CAAC;AACXgD,aAAO,EAAO,IADH;AAEXC,UAAI,EAAUtF,KAAK,CAAC4D,SAAN,CAAgBsO,KAAhB,CAAsB3Q,IAAtB,CAA2BoF,SAA3B,CAFH;AAGX+5B,cAAQ,EAARA,QAHW;AAIXE,kBAAY,EAAE;AAAA,eAAMF,QAAQ,CAACn7B,KAAT,CAAe,MAAf,EAAqBoB,WAArB,CAAN;AAAA;AAJH,KAAD,CAAd;AAMH,GAPD;AAQH;AAEM,SAASqV,MAAT,CAAuCiH,GAAvC,EAAgDvc,MAAhD,EAAqE;AACxE,MAAI,CAACA,MAAL,EAAa;AACT,WAAOuc,GAAP;AACH;;AAED,MAAI5jB,MAAM,CAAC2N,MAAX,EAAmB;AACf,WAAO3N,MAAM,CAAC2N,MAAP,CAAciW,GAAd,EAAmBvc,MAAnB,CAAP;AACH;;AAED,OAAK,IAAIlH,GAAT,IAAgBkH,MAAhB,EAAwB;AACpB,QAAIA,MAAM,CAAC2E,cAAP,CAAsB7L,GAAtB,CAAJ,EAAgC;AAC5ByjB,SAAG,CAACzjB,GAAD,CAAH,GAAWkH,MAAM,CAAClH,GAAD,CAAjB;AACH;AACJ;;AAED,SAAOyjB,GAAP;AACH;AAEM,SAASpV,MAAT,CAAmBoV,GAAnB,EAAsD;AACzD,MAAIrjB,MAAM,GAAG,EAAb;;AACA,OAAK,IAAIJ,GAAT,IAAgByjB,GAAhB,EAAqB;AACjB,QAAIA,GAAG,CAAC5X,cAAJ,CAAmB7L,GAAnB,CAAJ,EAA6B;AACzBI,YAAM,CAACmC,IAAP,CAAYkhB,GAAG,CAACzjB,GAAD,CAAf;AACH;AACJ;;AACD,SAAOI,MAAP;AACH;AAEM,SAAS4yB,IAAT,CAAc8O,MAAd,EAA+BC,UAA/B,EAA6D;AAChE,SAAOrxB,IAAI,CAACsxB,KAAL,CAAYF,MAAM,GAAGC,UAAV,GAAwB,GAAnC,CAAP;AACH;AAEM,SAASE,GAAT,GAA+C;AAClD,SAAOvxB,IAAI,CAACuxB,GAAL,OAAAvxB,IAAI,YAAX;AACH;AAEM,SAASyiB,GAAT,GAA+C;AAClD,SAAOziB,IAAI,CAACyiB,GAAL,OAAAziB,IAAI,YAAX;AACH;AAEM,SAAS1P,QAAT,CAAqBoiB,GAArB,EAAmC2vB,MAAnC,EAAoDlwC,OAApD,EAAkF;AACrF,MAAI2C,OAAO,GAAG,EAAd,CADqF,CAGrF;;AACA4d,KAAG,CAAC9jB,OAAJ,CAAYyzC,MAAZ,EAAoB,SAAS7Q,eAAT,CAAyBxgC,IAAzB,EAA+B;AAC/C8D,WAAO,CAACjD,IAAR,CAAaM,OAAO,GAAGA,OAAO,CAACkD,KAAR,CAAc,IAAd,EAAoBoB,SAApB,CAAH,GAAoCzF,IAAxD;AACH,GAFD,EAJqF,CAQrF;;AACA,SAAO8D,OAAP;AACH;AAEM,SAASwtC,WAAT,CAAqBC,GAArB,EAA4C;AAC/C,wCAAqC3D,YAAY,CAAC2D,GAAD,CAAjD;AACH;AAEM,SAASC,SAAT,CAAyBzvB,GAAzB,EAAiD1jB,MAAjD,EAA+G;AAAA,MAA9DA,MAA8D;AAA9DA,UAA8D,GAA5BqT,OAA4B;AAAA;;AAClH,MAAIhT,MAAM,GAAG,EAAb;;AAEA,OAAK,IAAIJ,GAAT,IAAgByjB,GAAhB,EAAqB;AACjB,QAAI,CAACA,GAAG,CAAC5X,cAAJ,CAAmB7L,GAAnB,CAAD,IAA4B,CAACD,MAAM,CAAC0jB,GAAG,CAACzjB,GAAD,CAAJ,EAAWA,GAAX,CAAvC,EAAwD;AACpD;AACH;;AAEDI,UAAM,CAACJ,GAAD,CAAN,GAAcyjB,GAAG,CAACzjB,GAAD,CAAjB;AACH;;AAED,SAAOI,MAAP;AACH;AAEM,SAASsU,QAAT,CAAsBhT,IAAtB,EAAoC;AACvC,SAAOA,IAAP;AACH;AAEM,SAASyxC,aAAT,CAAuB/xC,IAAvB,EAAsC2xC,MAAtC,EAAuE;AAC1E,MAAI3yC,MAAM,GAAG,EAAb;AACAgB,MAAI,CAAC9B,OAAL,CAAayzC,MAAb,EAAqB,UAAA/qC,KAAK,EAAI;AAC1B5H,UAAM,CAACmC,IAAP,CAAYyF,KAAZ;AACA,WAAO,EAAP;AACH,GAHD;AAIA,SAAO5H,MAAP;AACH;AAEM,SAASkd,eAAT,CAA4B1X,MAA5B,EAAgEI,KAAhE,EAA6G;AAAA,MAA7CA,KAA6C;AAA7CA,SAA6C,GAA5B,EAA4B;AAAA;;AAEhH,MAAI3D,OAAJ;AACA,MAAI2C,OAAJ;;AAEA,MAAMouC,gBAAgB,GAAG,SAAnBA,gBAAmB,GAA6B;AAClD,QAAIpuC,OAAJ,EAAa;AACTE,kBAAY,CAACF,OAAD,CAAZ;AACH;;AAED,QAAIquC,YAAY,GAAGhxC,OAAO,GAAGA,OAAO,IAAI,IAAImB,2BAAJ,EAAxC;AAEAwB,WAAO,GAAGxC,UAAU,CAAC,YAAM;AACvBH,aAAO,GAAG,IAAV;AACA2C,aAAO,GAAG,IAAV;AAEAxB,iCAAY,CAACuB,GAAb,CAAiBa,MAAjB,EAAyB5D,IAAzB,CACI,UAAA5B,MAAM,EAAI;AAAEizC,oBAAY,CAAClwC,OAAb,CAAqB/C,MAArB;AAA+B,OAD/C,EAEI,UAAA6B,GAAG,EAAI;AAAEoxC,oBAAY,CAACnvC,MAAb,CAAoBjC,GAApB;AAA2B,OAFxC;AAIH,KARmB,EAQjB+D,KARiB,CAApB;AAUA,WAAOqtC,YAAP;AACH,GAlBD;;AAoBA,SAAO9B,eAAe,CAAC6B,gBAAD,EAAuB/B,eAAe,CAACzrC,MAAD,CAAtC,wBAAtB;AACH;AAEM,SAASgY,YAAT,CAAsBhY,MAAtB,EAAyCX,IAAzC,EAAkF;AAErF,MAAID,OAAJ;;AAEA,WAAS6Y,IAAT,GAAgB;AACZ7Y,WAAO,GAAGxC,UAAU,CAAC,YAAM;AACvBoD,YAAM;AACNiY,UAAI;AACP,KAHmB,EAGjB5Y,IAHiB,CAApB;AAIH;;AAED4Y,MAAI;AAEJ,SAAO;AACH/a,UADG,oBACM;AACLoC,kBAAY,CAACF,OAAD,CAAZ;AACH;AAHE,GAAP;AAKH;AAEM,SAASsuC,SAAT,CAAmBlwB,GAAnB,EAA2C;AAC9C,SAAOhQ,OAAO,CAACgQ,GAAG,CAACniB,KAAJ,CAAU,UAAV,CAAD,CAAd;AACH;AAEM,SAASsyC,OAAT,CAAiBnwB,GAAjB,EAAyC;AAC5C,SAAOhQ,OAAO,CAACgQ,GAAG,CAACniB,KAAJ,CAAU,kBAAV,CAAD,CAAd;AACH;AAEM,SAASuyC,kBAAT,CAA4BryC,KAA5B,EAAwE;AAC3E,SAAOA,KAAK,CAAC9B,QAAN,EAAP;AACH;AAEM,SAASo0C,oBAAT,CAA8BtyC,KAA9B,EAA0E;AAC7E,MAAIA,KAAK,KAAK,MAAd,EAAsB;AAClB,WAAO,IAAP;AACH,GAFD,MAEO,IAAIA,KAAK,KAAK,OAAd,EAAuB;AAC1B,WAAO,KAAP;AACH,GAFM,MAEA,IAAImyC,SAAS,CAACnyC,KAAD,CAAb,EAAsB;AACzB,WAAOyf,QAAQ,CAACzf,KAAD,EAAQ,EAAR,CAAf;AACH,GAFM,MAEA,IAAIoyC,OAAO,CAACpyC,KAAD,CAAX,EAAoB;AACvB,WAAOuyC,UAAU,CAACvyC,KAAD,CAAjB;AACH,GAFM,MAEA;AACH,WAAOA,KAAP;AACH;AACJ;AAEM,SAAS+jB,MAAT,CAAgBzB,GAAhB,EAA8B1Z,MAA9B,EAAoDob,MAApD,EAAkG;AAAA,MAApEpb,MAAoE;AAApEA,UAAoE,GAAlD,EAAkD;AAAA;;AAAA,MAA9Cob,MAA8C;AAA9CA,UAA8C,GAA5B,EAA4B;AAAA;;AACrGpb,QAAM,GAAGA,MAAM,GAAOA,MAAP,SAAoBA,MAAnC;;AACA,OAAK,IAAI/J,GAAT,IAAgByjB,GAAhB,EAAqB;AACjB,QAAI,CAACA,GAAG,CAAC5X,cAAJ,CAAmB7L,GAAnB,CAAD,IAA4ByjB,GAAG,CAACzjB,GAAD,CAAH,KAAaO,SAAzC,IAAsDkjB,GAAG,CAACzjB,GAAD,CAAH,KAAa,IAAnE,IAA2E,OAAOyjB,GAAG,CAACzjB,GAAD,CAAV,KAAoB,UAAnG,EAA+G;AAC3G;AACH,KAFD,MAEO,IAAIyjB,GAAG,CAACzjB,GAAD,CAAH,IAAYQ,KAAK,CAACC,OAAN,CAAcgjB,GAAG,CAACzjB,GAAD,CAAjB,CAAZ,IAAuCyjB,GAAG,CAACzjB,GAAD,CAAH,CAAS2C,MAAhD,IAA0D8gB,GAAG,CAACzjB,GAAD,CAAH,CAASolB,KAAT,CAAe,UAAA3O,GAAG;AAAA,aAAI,OAAOA,GAAP,KAAe,QAAnB;AAAA,KAAlB,CAA9D,EAA8G;AACjH0O,YAAM,MAAKpb,MAAL,GAAgB/J,GAAhB,QAAN,GAAkCyjB,GAAG,CAACzjB,GAAD,CAAH,CAASE,IAAT,CAAc,GAAd,CAAlC;AACH,KAFM,MAEA,IAAIujB,GAAG,CAACzjB,GAAD,CAAH,IAAY,OAAOyjB,GAAG,CAACzjB,GAAD,CAAV,KAAoB,QAApC,EAA8C;AACjDmlB,YAAM,GAAGD,MAAM,CAACzB,GAAG,CAACzjB,GAAD,CAAJ,OAAe+J,MAAf,GAA0B/J,GAA1B,EAAkCmlB,MAAlC,CAAf;AACH,KAFM,MAEA;AACHA,YAAM,MAAKpb,MAAL,GAAgB/J,GAAhB,CAAN,GAAgCwzC,kBAAkB,CAAC/vB,GAAG,CAACzjB,GAAD,CAAJ,CAAlD;AACH;AACJ;;AACD,SAAOmlB,MAAP;AACH;AAEM,SAASwuB,QAAT,CAAkBlwB,GAAlB,EAAwD;AAE3D,MAAIrjB,MAAM,GAAG,EAAb;;AAEA,OAAK,IAAIJ,GAAT,IAAgByjB,GAAhB,EAAqB;AACjB,QAAI,CAACA,GAAG,CAAC5X,cAAJ,CAAmB7L,GAAnB,CAAD,IAA4B,OAAOyjB,GAAG,CAACzjB,GAAD,CAAV,KAAoB,QAApD,EAA8D;AAC1D;AACH;;AAED,QAAImB,KAAK,GAAGsiB,GAAG,CAACzjB,GAAD,CAAf;;AAEA,QAAIA,GAAG,CAACiB,KAAJ,CAAU,UAAV,CAAJ,EAA2B;AACvBjB,SAAG,GAAGA,GAAG,CAAC0S,KAAJ,CAAU,CAAV,EAAa1S,GAAG,CAAC2C,MAAJ,GAAa,CAA1B,CAAN;AACAxB,WAAK,GAAGA,KAAK,CAACgN,KAAN,CAAY,GAAZ,EAAiBlO,GAAjB,CAAqBwzC,oBAArB,CAAR;AACH,KAHD,MAGO;AACHtyC,WAAK,GAAGsyC,oBAAoB,CAACtyC,KAAD,CAA5B;AACH;;AAED,QAAIyyC,SAAS,GAAGxzC,MAAhB;AACA,QAAIyzC,KAAK,GAAG7zC,GAAG,CAACmO,KAAJ,CAAU,GAAV,CAAZ;;AACA,SAAK,IAAI1J,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGovC,KAAK,CAAClxC,MAA1B,EAAkC8B,CAAC,EAAnC,EAAuC;AACnC,UAAIqvC,IAAI,GAAGD,KAAK,CAACpvC,CAAD,CAAhB;AACA,UAAIsvC,MAAM,GAAItvC,CAAC,GAAG,CAAJ,KAAUovC,KAAK,CAAClxC,MAA9B;AACA,UAAIqxC,OAAO,GAAG,CAACD,MAAD,IAAWT,SAAS,CAACO,KAAK,CAACpvC,CAAC,GAAG,CAAL,CAAN,CAAlC;;AAEA,UAAIqvC,IAAI,KAAK,aAAT,IAA0BA,IAAI,KAAK,WAAnC,IAAkDA,IAAI,KAAK,WAA/D,EAA4E;AACxE,cAAM,IAAIzyC,KAAJ,sBAA8ByyC,IAA9B,CAAN;AACH;;AAED,UAAIC,MAAJ,EAAY;AACR;AACAH,iBAAS,CAACE,IAAD,CAAT,GAAkB3yC,KAAlB;AACH,OAHD,MAGO;AACH;AACAyyC,iBAAS,GAAGA,SAAS,CAACE,IAAD,CAAT,GAAkBF,SAAS,CAACE,IAAD,CAAT,KAAoBE,OAAO,GAAG,EAAH,GAAQ,EAAnC,CAA9B;AACH;AACJ;AACJ;;AAED,SAAO5zC,MAAP;AACH;AASM,SAASimB,YAAT,GAA2C;AAC9C,MAAIC,SAAS,GAAG,EAAhB;AACA,MAAIziB,QAAQ,GAAG,EAAf;AAEA,SAAO;AAEH+C,MAFG,cAEA2f,SAFA,EAEoB1jB,OAFpB,EAEyD;AACxD,UAAI2jB,WAAW,GAAG3iB,QAAQ,CAAC0iB,SAAD,CAAR,GAAsB1iB,QAAQ,CAAC0iB,SAAD,CAAR,IAAuB,EAA/D;AAEAC,iBAAW,CAACjkB,IAAZ,CAAiBM,OAAjB;AAEA,UAAI4jB,SAAS,GAAG,KAAhB;AAEA,aAAO;AACH3jB,cADG,oBACM;AACL,cAAI,CAAC2jB,SAAL,EAAgB;AACZA,qBAAS,GAAG,IAAZ;AACAD,uBAAW,CAACzjB,MAAZ,CAAmByjB,WAAW,CAAClkB,OAAZ,CAAoBO,OAApB,CAAnB,EAAiD,CAAjD;AACH;AAEJ;AAPE,OAAP;AASH,KAlBE;AAoBH6E,QApBG,gBAoBE6e,SApBF,EAoBsB1jB,OApBtB,EAoB2D;AAE1D,UAAI6jB,QAAQ,GAAG,KAAK9f,EAAL,CAAQ2f,SAAR,EAAmB,YAAM;AACpCG,gBAAQ,CAAC5jB,MAAT;AACAD,eAAO;AACV,OAHc,CAAf;AAKA,aAAO6jB,QAAP;AACH,KA5BE;AA8BHC,WA9BG,mBA8BKJ,SA9BL,EA8B+E;AAAA,yCAAnDzgB,IAAmD;AAAnDA,YAAmD;AAAA;;AAE9E,UAAI0gB,WAAW,GAAG3iB,QAAQ,CAAC0iB,SAAD,CAA1B;AACA,UAAIjhB,QAAQ,GAAG,EAAf;;AAEA,UAAIkhB,WAAJ,EAAiB;AAAA;AACR,cAAI3jB,OAAO,GAAI2jB,WAAJ,KAAX;AACDlhB,kBAAQ,CAAC/C,IAAT,CAAciB,2BAAY,CAACuB,GAAb,CAAiB;AAAA,mBAAMlC,OAAO,MAAP,SAAWiD,IAAX,CAAN;AAAA,WAAjB,CAAd;AAFS;;AAAA,gCACO0gB,WADP,gBACoB;AAAA;AAEhC;AACJ;;AAED,aAAOhjB,2BAAY,CAAC6B,GAAb,CAAiBC,QAAjB,EAA2BtD,IAA3B,CAAgC0E,IAAhC,CAAP;AACH,KA1CE;AA4CHkgB,eA5CG,uBA4CSL,SA5CT,EA4CmF;AAElF,UAAID,SAAS,CAACC,SAAD,CAAb,EAA0B;AACtB,eAAO/iB,2BAAY,CAACL,OAAb,EAAP;AACH;;AAEDmjB,eAAS,CAACC,SAAD,CAAT,GAAuB,IAAvB;;AANkF,yCAAnDzgB,IAAmD;AAAnDA,YAAmD;AAAA;;AAOlF,aAAO,KAAK6gB,OAAL,cAAaJ,SAAb,SAA2BzgB,IAA3B,EAAP;AACH;AApDE,GAAP;AAsDH;AAEM,SAASud,gBAAT,CAA0BC,MAA1B,EAAoD;AACvD,SAAOA,MAAM,CAAChkB,OAAP,CAAe,UAAf,EAA2B,UAACikB,CAAD,EAAO;AACrC,iBAAYA,CAAC,CAACjV,WAAF,EAAZ;AACH,GAFM,CAAP;AAGH;AAEM,SAASkV,gBAAT,CAA0BF,MAA1B,EAAoD;AACvD,SAAOA,MAAM,CAAChkB,OAAP,CAAe,WAAf,EAA4B,UAACikB,CAAD,EAAO;AACtC,WAAOA,CAAC,CAAC,CAAD,CAAD,CAAKrG,WAAL,EAAP;AACH,GAFM,CAAP;AAGH;AAEM,SAAS2G,qBAAT,CAA+BP,MAA/B,EAAyD;AAC5D,SAAOA,MAAM,CAACtF,MAAP,CAAc,CAAd,EAAiBd,WAAjB,KAAiCoG,MAAM,CAAC5Q,KAAP,CAAa,CAAb,EAAgBpE,WAAhB,EAAxC;AACH;AAEM,SAAS6B,GAAT,CAAazO,IAAb,EAA4B6G,IAA5B,EAA2CkL,GAA3C,EAAgE;AAEnE,MAAI,CAAClL,IAAL,EAAW;AACP,WAAOkL,GAAP;AACH;;AAED,MAAIqQ,SAAS,GAAGvb,IAAI,CAAC4F,KAAL,CAAW,GAAX,CAAhB,CANmE,CAQnE;;AAEA,OAAK,IAAI1J,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGqf,SAAS,CAACnhB,MAA9B,EAAsC8B,CAAC,EAAvC,EAA2C;AAEvC;AACA,QAAI,OAAO/C,IAAP,KAAgB,QAAhB,IAA4BA,IAAI,KAAK,IAAzC,EAA+C;AAC3CA,UAAI,GAAGA,IAAI,CAACoiB,SAAS,CAACrf,CAAD,CAAV,CAAX,CAD2C,CAG/C;AACC,KAJD,MAIO;AACH,aAAOgP,GAAP;AACH;AACJ,GApBkE,CAsBnE;;;AAEA,SAAO/R,IAAI,KAAKnB,SAAT,GAAqBkT,GAArB,GAA2B/R,IAAlC;AACH;AAEM,SAASsiB,WAAT,CAAqBpe,MAArB,EAAwCX,IAAxC,EAAuD;AAE1D,MAAIsY,QAAQ,GAAGK,YAAY,CAAC,YAAM;AAC9B3Y,QAAI,IAAI,GAAR;;AACA,QAAIA,IAAI,IAAI,CAAZ,EAAe;AACXsY,cAAQ,CAACza,MAAT;AACA8C,YAAM;AACT;AACJ,GAN0B,EAMxB,GANwB,CAA3B;AAOH;AAEM,SAASquC,cAAT,CAA2BxwB,GAA3B,EAAwDzjB,GAAxD,EAA+Ek0C,MAA/E,EAAiG;AACpG,MAAI1zC,KAAK,CAACC,OAAN,CAAcgjB,GAAd,CAAJ,EAAwB;AACpB,QAAI,OAAOzjB,GAAP,KAAe,QAAnB,EAA6B;AACzB,YAAM,IAAIoF,SAAJ,4BAAN;AACH;AACJ,GAJD,MAIO,IAAI,OAAOqe,GAAP,KAAe,QAAf,IAA2BA,GAAG,KAAK,IAAvC,EAA6C;AAChD,QAAI,OAAOzjB,GAAP,KAAe,QAAnB,EAA6B;AACzB,YAAM,IAAIoF,SAAJ,6BAAN;AACH;AACJ;;AAEDvF,QAAM,CAAC0kB,cAAP,CAAsBd,GAAtB,EAA2BzjB,GAA3B,EAAgC;AAC5BwkB,gBAAY,EAAE,IADc;AAE5BC,cAAU,EAAI,IAFc;AAG5BtU,OAAG,EAAW,eAAM;AAChB;AACA,aAAOsT,GAAG,CAACzjB,GAAD,CAAV;AACA,UAAImB,KAAK,GAAG+yC,MAAM,EAAlB,CAHgB,CAIhB;;AACAzwB,SAAG,CAACzjB,GAAD,CAAH,GAAWmB,KAAX;AACA,aAAOA,KAAP;AACH,KAV2B;AAW5B0jB,OAAG,EAAE,aAAC1jB,KAAD,EAAe;AAChB;AACA,aAAOsiB,GAAG,CAACzjB,GAAD,CAAV,CAFgB,CAGhB;;AACAyjB,SAAG,CAACzjB,GAAD,CAAH,GAAWmB,KAAX;AACH;AAhB2B,GAAhC;AAkBH;AAEM,SAASgzC,SAAT,CAAsBzyC,IAAtB,EAAqD;AAAE;AAC1D,SAAOlB,KAAK,CAAC4D,SAAN,CAAgBsO,KAAhB,CAAsB3Q,IAAtB,CAA2BL,IAA3B,CAAP;AACH;AAEM,SAAS2/B,QAAT,CAAkB3/B,IAAlB,EAA0C;AAC7C,SAAQ,OAAOA,IAAP,KAAgB,QAAhB,IAA4BA,IAAI,KAAK,IAA7C;AACH;AAEM,SAAS0yC,cAAT,CAAwB3wB,GAAxB,EAA+C;AAClD,SAAO4d,QAAQ,CAAC5d,GAAD,CAAR,IAAiB5jB,MAAM,CAACuE,SAAP,CAAiB/E,QAAjB,CAA0B0C,IAA1B,CAA+B0hB,GAA/B,MAAwC,iBAAhE;AACH;AAEM,SAAS4wB,aAAT,CAAuB5wB,GAAvB,EAA8C;AACjD,MAAI,CAAC2wB,cAAc,CAAC3wB,GAAD,CAAnB,EAA0B;AACtB,WAAO,KAAP;AACH,GAHgD,CAKjD;;;AACA,MAAI3hB,WAAW,GAAG2hB,GAAG,CAAC3hB,WAAtB;;AAEA,MAAI,OAAOA,WAAP,KAAuB,UAA3B,EAAuC;AACnC,WAAO,KAAP;AACH;;AAED,MAAIsC,SAAS,GAAGtC,WAAW,CAACsC,SAA5B;;AAEA,MAAI,CAACgwC,cAAc,CAAChwC,SAAD,CAAnB,EAAgC;AAC5B,WAAO,KAAP;AACH;;AAED,MAAI,CAACA,SAAS,CAACyH,cAAV,CAAyB,eAAzB,CAAL,EAAgD;AAC5C,WAAO,KAAP;AACH;;AAED,SAAO,IAAP;AACH;AAEM,SAASuY,aAAT,CAAmD1iB,IAAnD,EAA6DijB,QAA7D,EAAmHL,OAAnH,EAA8I;AAAA,MAA3BA,OAA2B;AAA3BA,WAA2B,GAAR,EAAQ;AAAA;;AAEjJ,MAAI9jB,KAAK,CAACC,OAAN,CAAciB,IAAd,CAAJ,EAAyB;AACrB,QAAIiB,MAAM,GAAGjB,IAAI,CAACiB,MAAlB;AACA,QAAIvC,MAAqB,GAAG,EAA5B;;AAFqB,iCAIZqE,CAJY;AAOjBwvC,oBAAc,CAAC7zC,MAAD,EAASqE,CAAT,EAAY,YAAM;AAC5B,YAAIigB,OAAO,GAAGJ,OAAO,GAAOA,OAAP,SAAoB7f,CAApB,QAA+BA,CAApD;AACA,YAAIujB,EAAE,GAAGtmB,IAAI,CAAC+C,CAAD,CAAb;AAEA,YAAInE,KAAK,GAAGqkB,QAAQ,CAACqD,EAAD,EAAKvjB,CAAL,EAAQigB,OAAR,CAApB;;AAEA,YAAI2vB,aAAa,CAAC/zC,KAAD,CAAb,IAAwBE,KAAK,CAACC,OAAN,CAAcH,KAAd,CAA5B,EAAkD;AAC9C;AACAA,eAAK,GAAG8jB,aAAa,CAAC9jB,KAAD,EAAQqkB,QAAR,EAAkBD,OAAlB,CAArB;AACH;;AAED,eAAOpkB,KAAP;AACH,OAZa,CAAd;AAPiB;;AAIrB,SAAK,IAAImE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG9B,MAApB,EAA4B8B,CAAC,EAA7B,EAAiC;AAAA,aAAxBA,CAAwB;AAgBhC,KApBoB,CAsBrB;;;AACA,WAAOrE,MAAP;AACH,GAxBD,MAwBO,IAAIi0C,aAAa,CAAC3yC,IAAD,CAAjB,EAAyB;AAC5B,QAAItB,OAAM,GAAG,EAAb;;AAD4B,iCAGnBJ,GAHmB;AAIxB,UAAI,CAAC0B,IAAI,CAACmK,cAAL,CAAoB7L,GAApB,CAAL,EAA+B;AAC3B;AACH;;AAEDi0C,oBAAc,CAAC7zC,OAAD,EAASJ,GAAT,EAAc,YAAM;AAC9B,YAAI0kB,OAAO,GAAGJ,OAAO,GAAOA,OAAP,SAAoBtkB,GAApB,QAAiCA,GAAtD,CAD8B,CAE9B;;AACA,YAAIgoB,EAAE,GAAGtmB,IAAI,CAAC1B,GAAD,CAAb;AAEA,YAAIM,KAAK,GAAGqkB,QAAQ,CAACqD,EAAD,EAAKhoB,GAAL,EAAU0kB,OAAV,CAApB;;AAEA,YAAI2vB,aAAa,CAAC/zC,KAAD,CAAb,IAAwBE,KAAK,CAACC,OAAN,CAAcH,KAAd,CAA5B,EAAkD;AAC9C;AACAA,eAAK,GAAG8jB,aAAa,CAAC9jB,KAAD,EAAQqkB,QAAR,EAAkBD,OAAlB,CAArB;AACH;;AAED,eAAOpkB,KAAP;AACH,OAba,CAAd;AARwB;;AAG5B,SAAK,IAAIN,GAAT,IAAgB0B,IAAhB,EAAsB;AAAA,wBAAb1B,GAAa;;AAAA,+BAEd;AAiBP,KAtB2B,CAwB5B;;;AACA,WAAOI,OAAP;AACH,GA1BM,MA0BA;AACH,UAAM,IAAIiB,KAAJ,2BAAN;AACH;AACJ;AAGM,SAASyjB,QAAT,CAAkB5d,MAAlB,EAAmC6d,MAAnC,EAAoDvlB,IAApD,EAAmEiU,GAAnE,EAAgF;AACnF,MAAIvM,MAAM,CAAC2E,cAAP,CAAsBrM,IAAtB,CAAJ,EAAiC;AAC7B,QAAIwlB,UAAU,GAAGnlB,MAAM,CAAColB,wBAAP,CAAgC/d,MAAhC,EAAwC1H,IAAxC,CAAjB,CAD6B,CAE7B;;AACAK,UAAM,CAAC0kB,cAAP,CAAsBQ,MAAtB,EAA8BvlB,IAA9B,EAAoCwlB,UAApC;AAEH,GALD,MAKO;AACHD,UAAM,CAACvlB,IAAD,CAAN,GAAeiU,GAAf;AACH;AACJ;AAWM,SAAS+R,KAAT,CAAeC,OAAf,EAA0CnC,MAA1C,EAA2DoC,KAA3D,EAAkG;AAAA,MAAvCA,KAAuC;AAAvCA,SAAuC,GAAtB,CAAsB;AAAA;;AAErG,MAAI,OAAOD,OAAP,KAAmB,QAAvB,EAAiC;AAC7B;AACAA,WAAO,GAAG,IAAIE,MAAJ,CAAWF,OAAX,CAAV;AACH;;AAED,MAAIrlB,MAAM,GAAGkjB,MAAM,CAAC5Q,KAAP,CAAagT,KAAb,EAAoBzkB,KAApB,CAA0BwkB,OAA1B,CAAb;;AAEA,MAAI,CAACrlB,MAAL,EAAa;AACT;AACH,GAXoG,CAarG;;;AACA,MAAIwlB,KAAc,GAAGxlB,MAAM,CAACwlB,KAA5B;AACA,MAAI4a,QAAQ,GAAGpgC,MAAM,CAAC,CAAD,CAArB;AAEA,SAAO;AACHgB,QAAI,EAAIo/B,QADL;AAEH3a,UAAM,EAAEzlB,MAAM,CAACsS,KAAP,CAAa,CAAb,CAFL;AAGHgT,SAAK,EAAGA,KAAK,GAAGE,KAHb;AAIHE,OAAG,EAAKJ,KAAK,GAAGE,KAAR,GAAgB4a,QAAQ,CAAC79B,MAJ9B;AAKHA,UAAM,EAAE69B,QAAQ,CAAC79B,MALd;AAOHrD,WAPG,mBAOK8B,IAPL,EAO6B;AAE5B,UAAI,CAACo/B,QAAL,EAAe;AACX,eAAO,EAAP;AACH;;AAED,kBAAWA,QAAQ,CAAC9tB,KAAT,CAAe,CAAf,EAAkBgT,KAAK,GAAGE,KAA1B,CAAX,GAAgDxkB,IAAhD,GAAyDo/B,QAAQ,CAAC9tB,KAAT,CAAekT,KAAK,GAAG4a,QAAQ,CAAC79B,MAAhC,CAAzD;AACH;AAdE,GAAP;AAgBH;AAEM,SAASojB,QAAT,CAAkBN,OAAlB,EAA6CnC,MAA7C,EAAuF;AAE1F,MAAI0C,OAAO,GAAG,EAAd;AACA,MAAIN,KAAK,GAAG,CAAZ,CAH0F,CAK1F;;AACA,SAAO,IAAP,EAAa;AACT,QAAI8a,QAAQ,GAAGhb,KAAK,CAACC,OAAD,EAAUnC,MAAV,EAAkBoC,KAAlB,CAApB;;AAEA,QAAI,CAAC8a,QAAL,EAAe;AACX;AACH;;AAEDxa,WAAO,CAACzjB,IAAR,CAAai+B,QAAb;AACA9a,SAAK,GAAGzkB,KAAK,CAAC6kB,GAAd;AACH;;AAED,SAAOE,OAAP;AACH;AAEM,SAASsuB,SAAT,CAAmBnzC,KAAnB,EAA6C;AAChD,SAAOA,KAAK,KAAK,IAAV,IAAkBA,KAAK,KAAKZ,SAAnC;AACH;AAEM,SAASiyB,KAAT,CAAe5sB,MAAf,EAAuD;AAC1D,SAAOpC,2BAAY,CAACuB,GAAb,CAAiBa,MAAjB,EAAyB5D,IAAzB,CAA8B;AAAA,WAAMwwB,KAAK,CAAC5sB,MAAD,CAAX;AAAA,GAA9B,CAAP;AACH;AAEM,SAAS4X,QAAT,CAAqB5X,MAArB,EAA6DX,IAA7D,EAAqH;AAAA,MAAxDA,IAAwD;AAAxDA,QAAwD,GAAxC,GAAwC;AAAA;;AAExH,MAAID,OAAJ;;AAEA,MAAMiiB,eAAe,GAAG,SAAlBA,eAAkB,GAAW;AAAA;AAAA;;AAC/B/hB,gBAAY,CAACF,OAAD,CAAZ;AAEAA,WAAO,GAAGxC,UAAU,CAAC,YAAM;AACvB,aAAOoD,MAAM,CAACG,KAAP,CAAa,MAAb,EAAmBoB,WAAnB,CAAP;AACH,KAFmB,EAEjBlC,IAFiB,CAApB;AAGH,GAND;;AAQA,SAAOssC,eAAe,CAACtqB,eAAD,EAAsBoqB,eAAe,CAACzrC,MAAD,CAArC,iBAAtB;AACH;AAEM,SAASmuB,OAAT,CAAiBryB,IAAjB,EAAyC;AAC5C,SAAO7B,MAAM,CAACuE,SAAP,CAAiB/E,QAAjB,CAA0B0C,IAA1B,CAA+BL,IAA/B,MAAyC,iBAAhD;AACH;AAID;AACO,IAAI4mC,mBAAiC,GAAG,SAApCA,cAAoC,CAAY1iC,MAAZ,EAA0E;AAErH,MAAI2iC,OAAO,GAAG,IAAIjjB,gDAAJ,EAAd,CAFqH,CAIrH;;AACA,SAAO,SAASkjB,eAAT,CAAyBC,GAAzB,EAAwC;AAAA;;AAC3C,WAAOF,OAAO,CAAC+J,QAAR,CAAiB7J,GAAjB,EAAsB;AAAA,aAAM7iC,MAAM,CAAC7D,IAAP,CAAY,MAAZ,EAAkB0mC,GAAlB,CAAN;AAAA,KAAtB,CAAP;AACH,GAFD;AAGH,CARM;AAYP;AACO,IAAI8L,0BAAkD,GAAG,SAArDA,qBAAqD,CAAY3uC,MAAZ,EAAsG;AAElK,MAAI2iC,OAAO,GAAG,IAAIjjB,gDAAJ,EAAd,CAFkK,CAIlK;;AACA,SAAO,SAASkvB,sBAAT,CAAgC/L,GAAhC,EAA6D;AAAA;;AAChE,WAAOF,OAAO,CAAC+J,QAAR,CAAiB7J,GAAjB,EAAsB;AAAA,aACzB7iC,MAAM,CAAC7D,IAAP,CAAY,MAAZ,EAAkB0mC,GAAlB,EAAuB5jC,OAAvB,CAA+B,YAAM;AACjC0jC,eAAO,CAACvD,MAAR,CAAeyD,GAAf;AACH,OAFD,CADyB;AAAA,KAAtB,CAAP;AAKH,GAND;AAOH,CAZM;AAcA,SAAS6J,QAAT,CAAyC7uB,GAAzC,EAAkDzjB,GAAlD,EAAgEk0C,MAAhE,EAAsF;AACzF,MAAIzwB,GAAG,CAAC5X,cAAJ,CAAmB7L,GAAnB,CAAJ,EAA6B;AACzB,WAAOyjB,GAAG,CAACzjB,GAAD,CAAV;AACH;;AAED,MAAMyW,GAAG,GAAGy9B,MAAM,EAAlB;AACAzwB,KAAG,CAACzjB,GAAD,CAAH,GAAWyW,GAAX;AACA,SAAOA,GAAP;AACH;AAQM,SAASg+B,OAAT,CAAiBhxB,GAAjB,EAA6C;AAEhD,MAAMixB,KAAK,GAAG,EAAd;AACA,MAAIC,OAAO,GAAG,KAAd;AAEA,SAAO;AACH9vB,OADG,eACYrlB,IADZ,EAC2BkC,IAD3B,EACyC;AACxC,UAAI,CAACizC,OAAL,EAAc;AACVlxB,WAAG,CAACjkB,IAAD,CAAH,GAAYkC,IAAZ;AACA,aAAKkzC,QAAL,CAAc,YAAM;AAChB,iBAAOnxB,GAAG,CAACjkB,IAAD,CAAV;AACH,SAFD;AAGH;;AACD,aAAOkC,IAAP;AACH,KATE;AAWHkzC,YAXG,oBAWMhvC,MAXN,EAWyB;AACxB,UAAI+uC,OAAJ,EAAa;AACT/uC,cAAM;AACT,OAFD,MAEO;AACH8uC,aAAK,CAACnyC,IAAN,CAAWmF,IAAI,CAAC9B,MAAD,CAAf;AACH;AACJ,KAjBE;AAmBHP,OAnBG,iBAmBwB;AACvB,UAAMG,OAAO,GAAG,EAAhB;AACAmvC,aAAO,GAAG,IAAV;;AAEA,aAAOD,KAAK,CAAC/xC,MAAb,EAAqB;AACjB,YAAMkyC,IAAI,GAAGH,KAAK,CAACI,GAAN,EAAb;AACAtvC,eAAO,CAACjD,IAAR,CAAasyC,IAAI,EAAjB;AACH;;AAED,aAAOrxC,2BAAY,CAAC6B,GAAb,CAAiBG,OAAjB,EAA0BxD,IAA1B,CAA+B0E,IAA/B,CAAP;AACH;AA7BE,GAAP;AA+BH;AAEM,SAASquC,QAAT,CAAqBzD,EAArB,EAAyG;AAC5G,MAAIlxC,MAAJ;AACA,MAAIwD,KAAJ;;AAEA,MAAI;AACAxD,UAAM,GAAGkxC,EAAE,EAAX;AACH,GAFD,CAEE,OAAOrvC,GAAP,EAAY;AACV2B,SAAK,GAAG3B,GAAR;AACH,GAR2G,CAU5G;;;AACA,SAAO;AAAE7B,UAAM,EAANA,MAAF;AAAUwD,SAAK,EAALA;AAAV,GAAP;AACH;AAEM,SAASoxC,eAAT,CAA0CxT,GAA1C,EAAmD9/B,IAAnD,EAA6D;AAChE,MAAMkkB,KAAK,GAAG4b,GAAG,CAACl/B,OAAJ,CAAYZ,IAAZ,CAAd;;AACA,MAAIkkB,KAAK,KAAK,CAAC,CAAf,EAAkB;AACd4b,OAAG,CAACz+B,MAAJ,CAAW6iB,KAAX,EAAkB,CAAlB;AACH;AACJ;AAEM,SAASqvB,YAAT,CAAyBz1C,IAAzB,EAAwC01C,KAAxC,EAAqE;AACxE,MAAIA,KAAK,KAAK,IAAV,IAAkB,OAAOA,KAAP,KAAiB,WAAvC,EAAoD;AAChD,UAAM,IAAI7zC,KAAJ,eAAuB7B,IAAvB,oBAAN;AACH;;AAED,SAAO01C,KAAP;AACH;AAEM,SAASC,MAAT,CAAgB3T,GAAhB,EAAuE;AAC1E,MAAMphC,MAAM,GAAG,EAAf;;AAD0E,0BAEvDohC,GAFuD,gBAElD;AAAnB,QAAM9/B,IAAI,GAAI8/B,GAAJ,KAAV;AACD;AACAphC,UAAM,CAACsB,IAAD,CAAN,GAAe,IAAf;AACH;;AACD,SAAO7B,MAAM,CAACC,IAAP,CAAYM,MAAZ,CAAP;AACH,C;;ACtiCM,IAAMg1C,SAAS,GAAG;AACrBC,OAAK,EAAE;AADc,CAAlB,C;;;;ACDP;AAEA;AACA;AAEA;AAEA;AAEA;AACA;AAKO,SAAS5sB,eAAT,GAAqC;AACxC,SAAOrV,OAAO,CAACT,QAAQ,CAAChE,IAAV,CAAP,IAA0BgE,QAAQ,CAAC0K,UAAT,KAAwB,UAAzD;AACH;AAEM,SAAS8F,SAAT,CAAmBC,GAAnB,EAA0C;AAC7C,SAAOA,GAAG,CAAC9jB,OAAJ,CAAY,KAAZ,EAAmB,KAAnB,EAA0BA,OAA1B,CAAkC,IAAlC,EAAwC,KAAxC,EAA+CA,OAA/C,CAAuD,IAAvD,EAA6D,KAA7D,EAAoEA,OAApE,CAA4E,KAA5E,EAAmF,KAAnF,CAAP;AACH;AAEM,SAASg2C,kBAAT,GAAmD;AACtD,SAAO1C,aAAa,CAAC0C,kBAAD,EAAqB,YAA2B;AAChE,WAAO,IAAI9xC,2BAAJ,CAAiB,UAAAL,OAAO,EAAI;AAC/B,UAAIslB,eAAe,EAAnB,EAAuB;AACnBtlB,eAAO;AACV;;AAEDvB,YAAM,CAACqN,gBAAP,CAAwB,MAAxB,EAAgC;AAAA,eAAM9L,OAAO,EAAb;AAAA,OAAhC;AACH,KANM,CAAP;AAOH,GARmB,CAApB;AASH;AAEM,SAASoyC,oBAAT,GAAqD;AACxD,SAAO3C,aAAa,CAAC2C,oBAAD,EAAuB,YAA2B;AAClE,WAAO,IAAI/xC,2BAAJ,CAAiB,UAAAL,OAAO,EAAI;AAE/B,UAAIslB,eAAe,EAAnB,EAAuB;AACnB,eAAOtlB,OAAO,EAAd;AACH;;AAED,UAAIoa,QAAQ,GAAG6E,WAAW,CAAC,YAAM;AAC7B,YAAIqG,eAAe,EAAnB,EAAuB;AACnBD,uBAAa,CAACjL,QAAD,CAAb;AACA,iBAAOpa,OAAO,EAAd;AACH;AACJ,OALyB,EAKvB,EALuB,CAA1B;AAMH,KAZM,CAAP;AAaH,GAdmB,CAApB;AAeH;AAEM,SAASqyC,mBAAT,GAA+D;AAClE,SAAOD,oBAAoB,GAAGvzC,IAAvB,CAA4B,YAAM;AACrC,QAAI2Q,QAAQ,CAAChE,IAAb,EAAmB;AACf,aAAOgE,QAAQ,CAAChE,IAAhB;AACH;;AAED,UAAM,IAAItN,KAAJ,CAAU,8CAAV,CAAN;AACH,GANM,CAAP;AAOH;AAEM,SAAS2pB,UAAT,CAAoBC,WAApB,EAAmD;AACtD,SAAO2nB,aAAa,CAAC5nB,UAAD,EAAa,YAAe;AAC5C,QAAIpC,MAAM,GAAG,EAAb;;AAEA,QAAI,CAACqC,WAAL,EAAkB;AACd,aAAOrC,MAAP;AACH;;AAED,QAAIqC,WAAW,CAAC3oB,OAAZ,CAAoB,GAApB,MAA6B,CAAC,CAAlC,EAAqC;AACjC,aAAOsmB,MAAP;AACH;;AAT2C,4CAW3BqC,WAAW,CAAC9c,KAAZ,CAAkB,GAAlB,CAX2B,2CAWH;AAApC,UAAI+c,IAAI,2BAAR;AACDA,UAAI,GAAGA,IAAI,CAAC/c,KAAL,CAAW,GAAX,CAAP;;AAEA,UAAI+c,IAAI,CAAC,CAAD,CAAJ,IAAWA,IAAI,CAAC,CAAD,CAAnB,EAAwB;AACpBtC,cAAM,CAACuC,kBAAkB,CAACD,IAAI,CAAC,CAAD,CAAL,CAAnB,CAAN,GAAsCC,kBAAkB,CAACD,IAAI,CAAC,CAAD,CAAL,CAAxD;AACH;AACJ;;AAED,WAAOtC,MAAP;AACH,GApBmB,EAoBjB,CAAEqC,WAAF,CApBiB,CAApB;AAqBH;AAGM,SAAS9iB,aAAT,CAAuB3I,IAAvB,EAA+C;AAClD,SAAOwrB,UAAU,CAACppB,MAAM,CAAC2F,QAAP,CAAgB6jB,MAAhB,CAAuB1Y,KAAvB,CAA6B,CAA7B,CAAD,CAAV,CAA4ClT,IAA5C,CAAP;AACH;AAEM,SAASi2C,mBAAT,CAA6BjnC,GAA7B,EAAqD;AAExD,MAAIA,GAAG,CAAClM,OAAJ,CAAY,GAAZ,MAAqB,CAAC,CAA1B,EAA6B;AACzB,WAAO,IAAP;AACH;;AAED,MAAIkM,GAAG,CAAClM,OAAJ,CAAY,GAAZ,MAAqB,CAAzB,EAA4B;AACxB,WAAO,KAAP;AACH;;AAED,MAAIkM,GAAG,CAACL,KAAJ,CAAU,GAAV,EAAe,CAAf,MAAsBvM,MAAM,CAAC2F,QAAP,CAAgB8K,IAAhB,CAAqBlE,KAArB,CAA2B,GAA3B,EAAgC,CAAhC,CAA1B,EAA8D;AAC1D,WAAO,KAAP;AACH;;AAED,SAAO,IAAP;AACH;AAEM,SAASkd,WAAT,CAAqB5H,GAArB,EAAkE;AAAA,MAA7CA,GAA6C;AAA7CA,OAA6C,GAAb,EAAa;AAAA;;AAErE,SAAO5jB,MAAM,CAACC,IAAP,CAAY2jB,GAAZ,EAAiB1jB,MAAjB,CAAwB,UAAAC,GAAG,EAAI;AAClC,WAAO,OAAOyjB,GAAG,CAACzjB,GAAD,CAAV,KAAoB,QAA3B;AACH,GAFM,EAEJC,GAFI,CAEA,UAAAD,GAAG,EAAI;AACV,WAAWmjB,SAAS,CAACnjB,GAAD,CAApB,SAA+BmjB,SAAS,CAACM,GAAG,CAACzjB,GAAD,CAAJ,CAAxC;AACH,GAJM,EAIJE,IAJI,CAIC,GAJD,CAAP;AAKH;AAEM,SAASorB,WAAT,CAAqBC,aAArB,EAA6C9rB,KAA7C,EAA4F;AAAA,MAA/CA,KAA+C;AAA/CA,SAA+C,GAAb,EAAa;AAAA;;AAE/F,MAAI,CAACA,KAAD,IAAU,CAACI,MAAM,CAACC,IAAP,CAAYL,KAAZ,EAAmBkD,MAAlC,EAA0C;AACtC,WAAO4oB,aAAP;AACH;;AAED,SAAOF,WAAW,CAAC,2CACZL,UAAU,CAACO,aAAD,CADC,MAEX9rB,KAFW,EAAlB;AAIH;AAEM,SAAS+U,SAAT,CAAmBhG,GAAnB,EAAiC4B,OAAjC,EAA4H;AAAA,MAA3FA,OAA2F;AAA3FA,WAA2F,GAAb,EAAa;AAAA;;AAE/H,MAAIob,KAAK,GAAGpb,OAAO,CAACob,KAAR,IAAiB,EAA7B;AACA,MAAI9lB,IAAI,GAAG0K,OAAO,CAAC1K,IAAR,IAAgB,EAA3B;AAEA,MAAI+lB,WAAJ;AACA,MAAIF,aAAJ;AACA,MAAIG,YAAJ;;AAP+H,mBAS/Fld,GAAG,CAACL,KAAJ,CAAU,GAAV,CAT+F;;AAS7Hsd,aAT6H;AAShHC,cATgH;;AAAA,2BAU9FD,WAAW,CAACtd,KAAZ,CAAkB,GAAlB,CAV8F;;AAU7Hsd,aAV6H;AAUhHF,eAVgH;AAY/H,MAAIN,WAAW,GAAGK,WAAW,CAACC,aAAD,EAAgBC,KAAhB,CAA7B;AACA,MAAIG,UAAU,GAAGL,WAAW,CAACI,YAAD,EAAehmB,IAAf,CAA5B;;AAEA,MAAIulB,WAAJ,EAAiB;AACbQ,eAAW,GAAOA,WAAP,SAAwBR,WAAnC;AACH;;AAED,MAAIU,UAAJ,EAAgB;AACZF,eAAW,GAAOA,WAAP,SAAwBE,UAAnC;AACH;;AAED,SAAOF,WAAP;AACH;AAEM,SAASsiB,QAAT,CAAkBv/B,GAAlB,EAAgCrI,GAAhC,EAA2F;AAAA,MAA3DA,GAA2D;AAA3DA,OAA2D,GAA7BvE,MAA6B;AAAA;;AAC9F,SAAO,IAAI4B,2BAAJ,CAAiB,UAAAL,OAAO,EAAI;AAC/BgD,OAAG,CAACoB,QAAJ,GAAeiH,GAAf;;AACA,QAAI,CAACinC,mBAAmB,CAACjnC,GAAD,CAAxB,EAA+B;AAC3BrL,aAAO;AACV;AACJ,GALM,CAAP;AAMH;AAEM,SAASuyC,eAAT,GAAqC;AACxC,MAAI71B,IAAI,GAAGlN,QAAQ,CAAC0V,aAAT,CAAuB,qBAAvB,CAAX;;AAEA,MAAI7S,QAAQ,MAAM5T,MAAM,CAAC+zC,MAAP,CAAczpB,KAAd,GAAsB,GAApC,IAA2C,CAACrM,IAAhD,EAAsD;AAClD,WAAO,KAAP;AACH;;AAED,SAAO,IAAP;AACH;AAEM,SAAS+1B,gBAAT,CAA0B5tB,EAA1B,EAAsD;AACzD,SAAO5U,OAAO,CAAC4U,EAAE,CAACqE,WAAH,IAAkBrE,EAAE,CAACsE,YAArB,IAAqCtE,EAAE,CAAC6tB,cAAH,GAAoBlzC,MAA1D,CAAd;AACH;AAEM,SAASwd,iBAAT,GAAuC;AAC1C,SAAOyyB,aAAa,CAACzyB,iBAAD,EAAoB,YAAgB;AACpD;AACA,WAAO/M,OAAO,CACVxR,MAAM,CAACwe,WAAP,IACAA,WAAW,CAACF,GADZ,IAEAE,WAAW,CAACC,MAFZ,IAGAD,WAAW,CAACC,MAAZ,CAAmBC,UAHnB,IAIAF,WAAW,CAACC,MAAZ,CAAmBE,eAJnB,IAKC7P,IAAI,CAAC8P,GAAL,CAASJ,WAAW,CAACF,GAAZ,KAAoBD,IAAI,CAACC,GAAL,EAA7B,IAA2C,IAL5C,IAMCE,WAAW,CAACF,GAAZ,MAAqBE,WAAW,CAACC,MAAZ,CAAmBC,UAAnB,GAAgCF,WAAW,CAACC,MAAZ,CAAmBE,eAAxE,CAAD,GAA6F,CAPnF,CAAd;AASA;AACH,GAZmB,CAApB;AAaH;AAEM,SAASu1B,iBAAT,GAAqD;AACxD,SAAOP,oBAAoB,GAAGvzC,IAAvB,CAA4B,YAAM;AAErC,QAAI,CAACme,iBAAiB,EAAtB,EAA0B;AACtB;AACH;;AAED,QAAIE,MAAM,GAAGze,MAAM,CAACwe,WAAP,CAAmBC,MAAhC;;AAEA,QAAIA,MAAM,CAACC,UAAP,IAAqBD,MAAM,CAAC01B,cAAhC,EAAgD;AAC5C,aAAO11B,MAAM,CAAC01B,cAAP,GAAwB11B,MAAM,CAACC,UAAtC;AACH;AACJ,GAXM,CAAP;AAYH;AAEM,SAASnhB,UAAT,CAAoBC,IAApB,EAAiD;AAAA,MAA7BA,IAA6B;AAA7BA,QAA6B,GAAb,EAAa;AAAA;;AACpD,SAAOA,IAAI,CAACC,QAAL,GACFC,OADE,CACM,IADN,EACY,OADZ,EAEFA,OAFE,CAEM,IAFN,EAEY,MAFZ,EAGFA,OAHE,CAGM,IAHN,EAGY,MAHZ,EAIFA,OAJE,CAIM,IAJN,EAIY,QAJZ,EAKFA,OALE,CAKM,IALN,EAKY,OALZ,EAMFA,OANE,CAMM,KANN,EAMa,QANb,CAAP;AAOH;AAEM,SAASi6B,SAAT,GAA+B;AAClC,SAAQ,OAAO33B,MAAP,KAAkB,WAA1B;AACH;AAEM,SAASmmB,gBAAT,CAA0BE,QAA1B,EAA6CwB,GAA7C,EAAuG;AAAA,MAA1DA,GAA0D;AAA1DA,OAA0D,GAAtC7nB,MAAM,CAAC+Q,QAA+B;AAAA;;AAC1G,SAAOnS,KAAK,CAAC4D,SAAN,CAAgBsO,KAAhB,CAAsB3Q,IAAtB,CAA2B0nB,GAAG,CAAC1B,gBAAJ,CAAqBE,QAArB,CAA3B,CAAP;AACH;AAEM,SAAS2J,OAAT,CAAiBlK,OAAjB,EAAwC7kB,OAAxC,EAAmE;AACtE6kB,SAAO,CAACzY,gBAAR,CAAyB,YAAzB,EAAuCvI,IAAvC;AACAghB,SAAO,CAACzY,gBAAR,CAAyB,OAAzB,EAAkCpM,OAAlC;AACA6kB,SAAO,CAACzY,gBAAR,CAAyB,UAAzB,EAAqC,UAACuQ,KAAD,EAAmB;AACpD;AACA,QAAIA,KAAK,CAACw2B,OAAN,KAAkBZ,SAAS,CAACC,KAAhC,EAAuC;AACnC,aAAOxyC,OAAO,CAAC2c,KAAD,CAAd;AACH;AACJ,GALD;AAMH;AAEM,SAASiS,SAAT,OAAmH;AAAA,uBAA9FjqB,IAA8F;AAAA,MAA9FA,IAA8F,0BAAvF5F,MAAM,CAAC2F,QAAP,CAAgBC,IAAuE;AAAA,MAAjEe,IAAiE,QAAjEA,IAAiE;AACtH,SAAOqqC,aAAa,CAACnhB,SAAD,EAAY,YAA2B;AAEvD,QAAIjjB,GAAG,QAAOhH,IAAP,GAAgBe,IAAvB;AACA,QAAIkK,OAAO,GAAGjS,KAAK,CAAC4D,SAAN,CAAgBsO,KAAhB,CAAsB3Q,IAAtB,CAA2B4Q,QAAQ,CAACC,oBAAT,CAA8B,QAA9B,CAA3B,CAAd;;AAHuD,4BAKpCH,OALoC,gBAK3B;AAAvB,UAAII,MAAM,GAAIJ,OAAJ,KAAV;;AACD,UAAI,CAACI,MAAM,CAACC,GAAZ,EAAiB;AACb;AACH;;AAED,UAAIA,GAAG,GAAGD,MAAM,CAACC,GAAP,CAAWxT,OAAX,CAAmB,cAAnB,EAAmC,EAAnC,EAAuC6O,KAAvC,CAA6C,GAA7C,EAAkD,CAAlD,CAAV;;AAEA,UAAI2E,GAAG,KAAKtE,GAAZ,EAAiB;AACb,eAAOqE,MAAP;AACH;AACJ;AACJ,GAhBmB,EAgBjB,CAAEtK,IAAF,CAhBiB,CAApB;AAiBH;AAEM,SAAS0tC,qBAAT,GAA2C;AAC9C,SAAOrD,aAAa,CAACqD,qBAAD,EAAwB,YAAM;AAC9C,QAAI;AACA,UAAI,OAAOr0C,MAAP,KAAkB,WAAtB,EAAmC;AAC/B,eAAO,KAAP;AACH;;AAED,UAAIA,MAAM,CAAC6P,YAAX,EAAyB;AACrB,YAAItQ,KAAK,GAAGuP,IAAI,CAACE,MAAL,GAAcvR,QAAd,EAAZ;AACAuC,cAAM,CAAC6P,YAAP,CAAoBykC,OAApB,CAA4B,wBAA5B,EAAsD/0C,KAAtD;AACA,YAAIf,MAAM,GAAGwB,MAAM,CAAC6P,YAAP,CAAoBC,OAApB,CAA4B,wBAA5B,CAAb;AACA9P,cAAM,CAAC6P,YAAP,CAAoB0kC,UAApB,CAA+B,wBAA/B;;AACA,YAAIh1C,KAAK,KAAKf,MAAd,EAAsB;AAClB,iBAAO,IAAP;AACH;AACJ;AACJ,KAdD,CAcE,OAAO6B,GAAP,EAAY,CACV;AACH;;AACD,WAAO,KAAP;AACH,GAnBmB,CAApB;AAoBH;AAEM,SAASm0C,iBAAT,GAA2E;AAC9E,MAAIC,GAAG,GAAGz0C,MAAM,CAACgK,SAAjB;AAEA,MAAIkK,OAAO,GAAGugC,GAAG,CAACC,SAAJ,GACR91C,KAAK,CAAC4D,SAAN,CAAgBsO,KAAhB,CAAsB3M,KAAtB,CAA4BswC,GAAG,CAACC,SAAhC,CADQ,GAER,EAFN;;AAIA,MAAID,GAAG,CAACE,QAAR,EAAkB;AACdzgC,WAAO,CAACvT,IAAR,CAAa8zC,GAAG,CAACE,QAAjB;AACH;;AAED,MAAIF,GAAG,CAACG,YAAR,EAAsB;AAClB1gC,WAAO,CAACvT,IAAR,CAAa8zC,GAAG,CAACG,YAAjB;AACH;;AAED,SAAO1gC,OAAO,CAAC7V,GAAR,CAAY,UAAA0I,MAAM,EAAI;AAEzB,QAAIA,MAAM,IAAIA,MAAM,CAAC1H,KAAP,CAAa,wBAAb,CAAd,EAAsD;AAAA,0BAC1B0H,MAAM,CAACwF,KAAP,CAAa,MAAb,CAD0B;AAAA,UAC5CvF,IAD4C;AAAA,UACtCF,OADsC;;AAElD,aAAO;AAAEA,eAAO,EAAPA,OAAF;AAAWE,YAAI,EAAJA;AAAX,OAAP;AACH;;AAED,QAAID,MAAM,IAAIA,MAAM,CAAC1H,KAAP,CAAa,YAAb,CAAd,EAA0C;AACtC,aAAO;AAAE2H,YAAI,EAAED;AAAR,OAAP;AACH;;AAED,WAAO,IAAP;AAEH,GAbM,EAaJ5I,MAbI,CAaGqT,OAbH,CAAP;AAcH;AAGM,SAASmU,WAAT,CAAqBC,SAArB,EAA8ClnB,KAA9C,EAA0E;AAC7EknB,WAAS,CAACD,WAAV,CAAsBjnB,KAAtB;AACH;AAEM,SAASmnB,SAAT,CAAmBC,OAAnB,EAA8C;AAEjD,MAAIA,OAAO,YAAY9lB,MAAM,CAAC+lB,OAA9B,EAAuC;AACnC,WAAO,IAAP;AACH;;AAED,MAAID,OAAO,KAAK,IAAZ,IAAoB,OAAOA,OAAP,KAAmB,QAAvC,IAAmDA,OAAO,CAACE,QAAR,KAAqB,CAAxE,IAA6E,OAAOF,OAAO,CAACG,KAAf,KAAyB,QAAtG,IAAkH,OAAOH,OAAO,CAACI,aAAf,KAAiC,QAAvJ,EAAiK;AAC7J,WAAO,IAAP;AACH;;AAED,SAAO,KAAP;AACH;AAEM,SAASI,cAAT,CAAwBC,EAAxB,EAA6CsB,GAA7C,EAAqG;AAAA,MAAxDA,GAAwD;AAAxDA,OAAwD,GAAzB9W,QAAyB;AAAA;;AAExG,MAAI8U,SAAS,CAACU,EAAD,CAAb,EAAmB;AACf;AACA,WAAOA,EAAP;AACH;;AAED,MAAI,OAAOA,EAAP,KAAc,QAAlB,EAA4B;AACxB,WAAOsB,GAAG,CAACpB,aAAJ,CAAkBF,EAAlB,CAAP;AACH;AACJ;AAEM,SAASG,UAAT,CAAoBH,EAApB,EAAyCsB,GAAzC,EAAgG;AAAA,MAAvDA,GAAuD;AAAvDA,OAAuD,GAAxB9W,QAAwB;AAAA;;AAEnG,MAAI+U,OAAO,GAAGQ,cAAc,CAACC,EAAD,EAAKsB,GAAL,CAA5B;;AAEA,MAAI/B,OAAJ,EAAa;AACT,WAAOA,OAAP;AACH;;AAED,QAAM,IAAIrmB,KAAJ,4BAAoCqL,SAAS,CAACyb,EAAD,CAA7C,CAAN;AACH;AAEM,SAASO,YAAT,CAAsBP,EAAtB,EAA8E;AACjF,SAAO,IAAI3kB,2BAAJ,CAAiB,UAACL,OAAD,EAAUe,MAAV,EAAqB;AAEzC,QAAI1E,IAAI,GAAGkN,SAAS,CAACyb,EAAD,CAApB;AACA,QAAIH,EAAE,GAAGE,cAAc,CAACC,EAAD,CAAvB;;AAEA,QAAIH,EAAJ,EAAQ;AACJ,aAAO7kB,OAAO,CAAC6kB,EAAD,CAAd;AACH;;AAED,QAAIS,eAAe,EAAnB,EAAuB;AACnB,aAAOvkB,MAAM,CAAC,IAAI7C,KAAJ,oCAA4C7B,IAA5C,qBAAD,CAAb;AACH;;AAED,QAAI+d,QAAQ,GAAG6E,WAAW,CAAC,YAAM;AAE7B4F,QAAE,GAAGE,cAAc,CAACC,EAAD,CAAnB;;AAEA,UAAIH,EAAJ,EAAQ;AACJQ,qBAAa,CAACjL,QAAD,CAAb;AACA,eAAOpa,OAAO,CAAC6kB,EAAD,CAAd;AACH;;AAED,UAAIS,eAAe,EAAnB,EAAuB;AACnBD,qBAAa,CAACjL,QAAD,CAAb;AACA,eAAOrZ,MAAM,CAAC,IAAI7C,KAAJ,oCAA4C7B,IAA5C,qBAAD,CAAb;AACH;AACJ,KAbyB,EAavB,EAbuB,CAA1B;AAcH,GA3BM,CAAP;AA4BH;AAEM,SAASqpB,cAAT,CAAwB/b,OAAxB,EAA0C;AAC7C,OAAKA,OAAL,GAAeA,OAAf;AACH;AAED+b,cAAc,CAACzkB,SAAf,GAA2BvE,MAAM,CAAC6rC,MAAP,CAAcrqC,KAAK,CAAC+C,SAApB,CAA3B;AAeO,SAASukB,KAAT,CAAena,GAAf,EAA6B4B,OAA7B,EAA8E;AAEjF;AACAA,SAAO,GAAGA,OAAO,IAAI,EAArB;AAHiF,iBAKzDA,OALyD;AAAA,MAK3E8b,KAL2E,YAK3EA,KAL2E;AAAA,MAKpEC,MALoE,YAKpEA,MALoE;AAOjF,MAAIL,GAAG,GAAG,CAAV;AACA,MAAIE,IAAI,GAAG,CAAX;;AAEA,MAAIE,KAAJ,EAAW;AACP,QAAItqB,MAAM,CAAC60C,UAAX,EAAuB;AACnBzqB,UAAI,GAAGtb,IAAI,CAACsxB,KAAL,CAAW,CAACpgC,MAAM,CAAC60C,UAAP,GAAoBvqB,KAArB,IAA8B,CAAzC,IAA8CtqB,MAAM,CAAC80C,OAA5D;AACH,KAFD,MAEO,IAAI90C,MAAM,CAAC+zC,MAAP,CAAczpB,KAAlB,EAAyB;AAC5BF,UAAI,GAAGtb,IAAI,CAACsxB,KAAL,CAAW,CAACpgC,MAAM,CAAC+zC,MAAP,CAAczpB,KAAd,GAAsBA,KAAvB,IAAgC,CAA3C,CAAP;AACH;AACJ;;AAED,MAAIC,MAAJ,EAAY;AACR,QAAIvqB,MAAM,CAAC+0C,WAAX,EAAwB;AACpB7qB,SAAG,GAAGpb,IAAI,CAACsxB,KAAL,CAAW,CAACpgC,MAAM,CAAC+0C,WAAP,GAAqBxqB,MAAtB,IAAgC,CAA3C,IAAgDvqB,MAAM,CAACg1C,OAA7D;AACH,KAFD,MAEO,IAAIh1C,MAAM,CAAC+zC,MAAP,CAAcxpB,MAAlB,EAA0B;AAC7BL,SAAG,GAAGpb,IAAI,CAACsxB,KAAL,CAAW,CAACpgC,MAAM,CAAC+zC,MAAP,CAAcxpB,MAAd,GAAuBA,MAAxB,IAAkC,CAA7C,CAAN;AACH;AACJ;;AAED,MAAID,KAAK,IAAIC,MAAb,EAAqB;AACjB/b,WAAO,GAAG;AACN0b,SAAG,EAAHA,GADG;AAEHE,UAAI,EAAJA,IAFG;AAGHE,WAAK,EAALA,KAHG;AAIHC,YAAM,EAANA,MAJG;AAKH7c,YAAM,EAAM,CALT;AAMHunC,aAAO,EAAK,CANT;AAOHC,aAAO,EAAK,CAPT;AAQHC,eAAS,EAAG,CART;AASHC,gBAAU,EAAE;AATT,OAUA5mC,OAVA,CAAP;AAYH;;AAED,MAAI5Q,IAAI,GAAG4Q,OAAO,CAAC5Q,IAAR,IAAgB,EAA3B;AACA,SAAO4Q,OAAO,CAAC5Q,IAAf,CA1CiF,CA4CjF;;AACA,MAAIopB,MAAM,GAAG/oB,MAAM,CAACC,IAAP,CAAYsQ,OAAZ,EAAqBnQ,GAArB,CAAyB,UAAAD,GAAG,EAAI;AACzC;AACA,QAAIoQ,OAAO,CAACpQ,GAAD,CAAP,KAAiB,IAAjB,IAAyBoQ,OAAO,CAACpQ,GAAD,CAAP,KAAiBO,SAA9C,EAAyD;AACrD,aAAWP,GAAX,SAAoB0M,SAAS,CAAC0D,OAAO,CAACpQ,GAAD,CAAR,CAA7B;AACH;AACJ,GALY,EAKVD,MALU,CAKHqT,OALG,EAKMlT,IALN,CAKW,GALX,CAAb;AAOA,MAAIiG,GAAJ;;AAEA,MAAI;AACAA,OAAG,GAAGvE,MAAM,CAACkO,IAAP,CAAYtB,GAAZ,EAAiBhP,IAAjB,EAAuBopB,MAAvB,EAA+B,IAA/B,CAAN;AACH,GAFD,CAEE,OAAO3mB,GAAP,EAAY;AACV,UAAM,IAAI4mB,cAAJ,mCAAmD5mB,GAAG,CAAC8B,KAAJ,IAAa9B,GAAG,CAAC6K,OAApE,EAAN;AACH;;AAED,MAAI7F,wDAAc,CAACd,GAAD,CAAlB,EAAyB;AACrB,QAAIlE,GAAG,GAAG,IAAI4mB,cAAJ,uCAAV;AACA,UAAM5mB,GAAN;AACH;;AAEDL,QAAM,CAACqN,gBAAP,CAAwB,QAAxB,EAAkC;AAAA,WAAM9I,GAAG,CAAC6iB,KAAJ,EAAN;AAAA,GAAlC;AAEA,SAAO7iB,GAAP;AACH;AAGM,SAAS2iB,aAAT,CAAuB3iB,GAAvB,EAAmD/G,IAAnD,EAAkE;AACrE,MAAI;AACA+G,OAAG,CAACwM,QAAJ,CAAa7C,IAAb;AACA3J,OAAG,CAACwM,QAAJ,CAAaoW,KAAb,CAAmB3pB,IAAnB;AACA+G,OAAG,CAACwM,QAAJ,CAAaqW,KAAb;AACH,GAJD,CAIE,OAAO/mB,GAAP,EAAY;AACV,QAAI;AACAkE,SAAG,CAACoB,QAAJ,oDAA+DkF,IAAI,CAACC,SAAL,CAAetN,IAAf,CAA/D;AACH,KAFD,CAEE,OAAO6pB,IAAP,EAAa,CACX;AACH;AACJ;AACJ;AAEM,SAASC,oBAAT,CAA8B/iB,GAA9B,EAA0D6hB,EAA1D,EAA4E;AAE/E,MAAImB,GAAG,GAAGnB,EAAE,CAACoB,OAAH,CAAW9a,WAAX,EAAV;;AAEA,MAAI6a,GAAG,KAAK,MAAZ,EAAoB;AAChB,UAAM,IAAI9nB,KAAJ,uCAA+C8nB,GAA/C,CAAN;AACH;;AAED,MAAIE,eAAe,GAAGljB,GAAG,CAACwM,QAAJ,CAAa0W,eAAnC;;AAR+E,kCAU3D8qB,SAAS,CAAC9qB,eAAe,CAAC3pB,QAAjB,CAVkD,mCAUtB;AAApD,QAAMY,KAAK,mBAAX;AACD+oB,mBAAe,CAACC,WAAhB,CAA4BhpB,KAA5B;AACH;;AAZ8E,kCAc3D6zC,SAAS,CAACnsB,EAAE,CAACtoB,QAAJ,CAdkD,mCAcnC;AAAvC,QAAMY,MAAK,mBAAX;AACD+oB,mBAAe,CAAC9B,WAAhB,CAA4BjnB,MAA5B;AACH;AACJ;AAEM,SAASipB,QAAT,CAAkBvB,EAAlB,EAAoCwB,SAApC,EAAwDC,GAAxD,EAA0F;AAAA,MAAlCA,GAAkC;AAAlCA,OAAkC,GAAjB7nB,MAAM,CAAC+Q,QAAU;AAAA;;AAC7F;AACA,MAAIqV,EAAE,CAAC0B,UAAP,EAAmB;AACf;AACA1B,MAAE,CAAC0B,UAAH,CAAcC,OAAd,GAAwBH,SAAxB;AACH,GAHD,MAGO;AACHxB,MAAE,CAACT,WAAH,CAAekC,GAAG,CAACG,cAAJ,CAAmBJ,SAAnB,CAAf;AACH;AACJ;AAWD,IAAIW,sBAAJ;AAEO,SAASC,cAAT,CAAwBC,KAAxB,EAAqF;AACxFF,wBAAsB,GAAGA,sBAAsB,IAAI,IAAI7E,gDAAJ,EAAnD;;AAEA,MAAI6E,sBAAsB,CAACG,GAAvB,CAA2BD,KAA3B,CAAJ,EAAuC;AACnC,QAAIhoB,QAAO,GAAG8nB,sBAAsB,CAACha,GAAvB,CAA2Bka,KAA3B,CAAd;;AACA,QAAIhoB,QAAJ,EAAa;AACT,aAAOA,QAAP;AACH;AACJ;;AAED,MAAIA,OAAO,GAAG,IAAImB,2BAAJ,CAAiB,UAACL,OAAD,EAAUe,MAAV,EAAqB;AAChDmmB,SAAK,CAACpb,gBAAN,CAAuB,MAAvB,EAA+B,YAAM;AACjCsb,+DAAe,CAACF,KAAD,CAAf;AACAlnB,aAAO,CAACknB,KAAD,CAAP;AACH,KAHD;AAKAA,SAAK,CAACpb,gBAAN,CAAuB,OAAvB,EAAgC,UAAChN,GAAD,EAAiB;AAC7C,UAAIooB,KAAK,CAACH,aAAV,EAAyB;AACrB/mB,eAAO,CAACknB,KAAD,CAAP;AACH,OAFD,MAEO;AACHnmB,cAAM,CAACjC,GAAD,CAAN;AACH;AACJ,KAND;AAOH,GAba,CAAd;AAeAkoB,wBAAsB,CAACtF,GAAvB,CAA2BwF,KAA3B,EAAkChoB,OAAlC;AAEA,SAAOA,OAAP;AACH;AAEM,SAASmoB,gBAAT,CAA0BH,KAA1B,EAA2F;AAC9F,SAAOD,cAAc,CAACC,KAAD,CAAd,CAAsBroB,IAAtB,CAA2B,UAAAyoB,WAAW,EAAI;AAE7C,QAAI,CAACA,WAAW,CAACP,aAAjB,EAAgC;AAC5B,YAAM,IAAI7oB,KAAJ,mCAAN;AACH;;AAED,WAAOopB,WAAW,CAACP,aAAnB;AACH,GAPM,CAAP;AAQH;AAEM,SAASL,aAAT,CAAuBV,GAAvB,EAA6C/Y,OAA7C,EAAgFoX,SAAhF,EAAwH;AAAA,MAAjG2B,GAAiG;AAAjGA,OAAiG,GAAlF,KAAkF;AAAA;;AAAA,MAA3E/Y,OAA2E;AAA3EA,WAA2E,GAA5C,EAA4C;AAAA;;AAE3H+Y,KAAG,GAAGA,GAAG,CAAC7a,WAAJ,EAAN;AACA,MAAIoZ,OAAO,GAAG/U,QAAQ,CAACkX,aAAT,CAAuBV,GAAvB,CAAd;;AAEA,MAAI/Y,OAAO,CAACyX,KAAZ,EAAmB;AACfrL,UAAM,CAACkL,OAAO,CAACG,KAAT,EAAgBzX,OAAO,CAACyX,KAAxB,CAAN;AACH;;AAED,MAAIzX,OAAO,CAAC0Z,KAAZ,EAAmB;AACfpC,WAAO,CAACqC,SAAR,GAAoB3Z,OAAO,CAAC0Z,KAAR,CAAc5pB,IAAd,CAAmB,GAAnB,CAApB;AACH;;AAED,MAAIkQ,OAAO,CAAC+X,EAAZ,EAAgB;AACZT,WAAO,CAACuC,YAAR,CAAqB,IAArB,EAA2B7Z,OAAO,CAAC+X,EAAnC;AACH;;AAED,MAAI/X,OAAO,CAAC4Z,UAAZ,EAAwB;AAAA,uCACJnqB,MAAM,CAACC,IAAP,CAAYsQ,OAAO,CAAC4Z,UAApB,CADI,uCAC6B;AAA5C,UAAIhqB,GAAG,sBAAP;AACD0nB,aAAO,CAACuC,YAAR,CAAqBjqB,GAArB,EAA0BoQ,OAAO,CAAC4Z,UAAR,CAAmBhqB,GAAnB,CAA1B;AACH;AACJ;;AAED,MAAIoQ,OAAO,CAACsZ,UAAZ,EAAwB;AACpBH,YAAQ,CAAC7B,OAAD,EAAUtX,OAAO,CAACsZ,UAAlB,CAAR;AACH;;AAED,MAAIlC,SAAJ,EAAe;AACXD,eAAW,CAACC,SAAD,EAAYE,OAAZ,CAAX;AACH;;AAED,MAAItX,OAAO,CAAChR,IAAZ,EAAkB;AACd,QAAI+pB,GAAG,KAAK,QAAZ,EAAsB;AAClB;AACA,UAAI,CAAC3B,SAAD,IAAc,CAACE,OAAO,CAACwC,aAA3B,EAA0C;AACtC,cAAM,IAAI7oB,KAAJ,8EAAN;AACH,OAJiB,CAMlB;;;AACAynB,mBAAa,CAACpB,OAAO,CAACwC,aAAT,EAAwB9Z,OAAO,CAAChR,IAAhC,CAAb;AAEH,KATD,MASO;AACHsoB,aAAO,CAACvnB,SAAR,GAAoBiQ,OAAO,CAAChR,IAA5B;AACH;AACJ;;AAED,SAAOsoB,OAAP;AACH;AAYM,SAASgD,MAAT,CAAgBta,OAAhB,EAAyDoX,SAAzD,EAAuG;AAAA,MAAvFpX,OAAuF;AAAvFA,WAAuF,GAAlD,EAAkD;AAAA;;AAE1G,MAAI4Z,UAAU,GAAG5Z,OAAO,CAAC4Z,UAAR,IAAsB,EAAvC;AACA,MAAInC,KAAK,GAAGzX,OAAO,CAACyX,KAAR,IAAiB,EAA7B;AAEA,MAAIwC,KAAK,GAAGR,aAAa,CAAC,QAAD,EAAW;AAChCG,cAAU,EAAE;AACRY,uBAAiB,EAAE;AADb,OAEHZ,UAFG,CADsB;AAKhCnC,SAAK,EAAE;AACHgD,qBAAe,EAAE,aADhB;AAEDosB,YAAM,EAAW;AAFhB,OAGEpvB,KAHF,CAL2B;AAUhCzoB,QAAI,EAAGgR,OAAO,CAAChR,IAViB;AAWhC0qB,SAAK,EAAE1Z,OAAO,CAAC0Z;AAXiB,GAAX,CAAzB;AAcA,MAAMld,IAAI,GAAGhL,MAAM,CAACgK,SAAP,CAAiBZ,SAAjB,CAA2B/J,KAA3B,CAAiC,YAAjC,CAAb;;AAEA,MAAI,CAACopB,KAAK,CAACrX,YAAN,CAAmB,IAAnB,CAAL,EAA+B;AAC3BqX,SAAK,CAACJ,YAAN,CAAmB,IAAnB,EAAyBnM,QAAQ,EAAjC;AACH,GAvByG,CAyB1G;;;AACAsM,gBAAc,CAACC,KAAD,CAAd;;AAEA,MAAI7C,SAAJ,EAAe;AACX,QAAIQ,EAAE,GAAGM,UAAU,CAACd,SAAD,CAAnB;AACAQ,MAAE,CAACT,WAAH,CAAe8C,KAAf;AACH;;AAED,MAAIja,OAAO,CAAC5B,GAAR,IAAe5B,IAAnB,EAAyB;AACrByd,SAAK,CAACJ,YAAN,CAAmB,KAAnB,EAA0B7Z,OAAO,CAAC5B,GAAR,IAAe,aAAzC;AACH,GAnCyG,CAqC1G;;;AACA,SAAO6b,KAAP;AACH;AAEM,SAASpb,gBAAT,CAA0BwU,GAA1B,EAA6CjE,KAA7C,EAA6D3c,OAA7D,EAAiH;AACpH4gB,KAAG,CAACxU,gBAAJ,CAAqBuQ,KAArB,EAA4B3c,OAA5B;AACA,SAAO;AACHC,UADG,oBACM;AACL2gB,SAAG,CAACqH,mBAAJ,CAAwBtL,KAAxB,EAA+B3c,OAA/B;AACH;AAHE,GAAP;AAKH;AAEM,SAASgrB,UAAT,CAAoBnG,OAApB,EAA2CoG,UAA3C,EAAuEjrB,OAAvE,EAA2H;AAE9HA,SAAO,GAAG6E,IAAI,CAAC7E,OAAD,CAAd;;AAF8H,4BAIxGirB,UAJwG,iBAI5F;AAA7B,QAAIvH,SAAS,GAAIuH,UAAJ,MAAb;AACDpG,WAAO,CAACzY,gBAAR,CAAyBsX,SAAzB,EAAoC1jB,OAApC;AACH;;AAED,SAAO;AACHC,UAAM,EAAE4E,IAAI,CAAC,YAAM;AAAA,gCACOomB,UADP,iBACmB;AAA7B,YAAIvH,UAAS,GAAIuH,UAAJ,MAAb;AACDpG,eAAO,CAACoD,mBAAR,CAA4BvE,UAA5B,EAAuC1jB,OAAvC;AACH;AACJ,KAJW;AADT,GAAP;AAOH;AAED,IAAMkrB,eAAe,GAAG,CAAE,QAAF,EAAY,KAAZ,EAAmB,IAAnB,EAAyB,GAAzB,CAAxB;AAEO,SAASC,YAAT,CAAsBtG,OAAtB,EAA6CloB,IAA7C,EAA4D2B,KAA5D,EAA4E;AAE/E;AACAumB,SAAO,CAACG,KAAR,CAAcroB,IAAd,IAAsB2B,KAAtB;AAEA,MAAI8sB,eAAe,GAAGpK,qBAAqB,CAACrkB,IAAD,CAA3C;;AAL+E,4BAO5DuuB,eAP4D,iBAO3C;AAA/B,QAAIhkB,MAAM,GAAIgkB,eAAJ,MAAV;AACD;AACArG,WAAO,CAACG,KAAR,MAAkB9d,MAAlB,GAA6BkkB,eAA7B,IAAmD9sB,KAAnD;AACH;AACJ;AAED,IAAM0tB,sBAAsB,GAAG,CAAE,gBAAF,EAAoB,sBAApB,EAA4C,iBAA5C,EAA+D,kBAA/D,CAA/B;AACA,IAAMC,oBAAoB,GAAK,CAAE,cAAF,EAAkB,oBAAlB,EAAwC,eAAxC,EAAyD,gBAAzD,CAA/B;AAEO,SAASC,OAAT,CAAiBrH,OAAjB,EAA2CloB,IAA3C,EAA0DwvB,KAA1D,EAAsFhqB,OAAtF,EAAoI;AAAA,MAA9CA,OAA8C;AAA9CA,WAA8C,GAA3B,IAA2B;AAAA;;AACvI,SAAO,IAAIxB,2BAAJ,CAAiB,UAACL,OAAD,EAAUe,MAAV,EAAqB;AAEzC,QAAI8jB,EAAE,GAAGM,UAAU,CAACZ,OAAD,CAAnB;;AAEA,QAAI,CAACM,EAAL,EAAS;AACL,aAAO7kB,OAAO,EAAd;AACH;;AAED,QAAI8rB,UAAU,GAAG,KAAjB;AAEA,QAAIC,YAAJ;AACA,QAAIC,UAAJ;AACA,QAAIC,UAAJ;AACA,QAAIC,QAAJ;;AAEA,aAASC,OAAT,GAAmB;AACfpqB,kBAAY,CAACgqB,YAAD,CAAZ;AACAhqB,kBAAY,CAACiqB,UAAD,CAAZ;AACAC,gBAAU,CAACtsB,MAAX;AACAusB,cAAQ,CAACvsB,MAAT;AACH;;AAEDssB,cAAU,GAAGvB,UAAU,CAAC7F,EAAD,EAAK6G,sBAAL,EAA6B,UAAArP,KAAK,EAAI;AAEzD;AACA,UAAIA,KAAK,CAACuF,MAAN,KAAiBiD,EAAjB,IAAuBxI,KAAK,CAAC+P,aAAN,KAAwB/vB,IAAnD,EAAyD;AACrD;AACH;;AAED0F,kBAAY,CAACgqB,YAAD,CAAZ;AAEA1P,WAAK,CAACgQ,eAAN;AAEAJ,gBAAU,CAACtsB,MAAX;AACAmsB,gBAAU,GAAG,IAAb;AAEAE,gBAAU,GAAG3sB,UAAU,CAAC,YAAM;AAC1B8sB,eAAO;AACPnsB,eAAO;AACV,OAHsB,EAGpB6B,OAHoB,CAAvB;AAIH,KAlBsB,CAAvB;AAoBAqqB,YAAQ,GAAGxB,UAAU,CAAC7F,EAAD,EAAK8G,oBAAL,EAA2B,UAAAtP,KAAK,EAAI;AAErD;AACA,UAAIA,KAAK,CAACuF,MAAN,KAAiBiD,EAAjB,IAAuBxI,KAAK,CAAC+P,aAAN,KAAwB/vB,IAAnD,EAAyD;AACrD;AACH;;AAED8vB,aAAO,GAP8C,CASrD;;AACA,UAAI,OAAO9P,KAAK,CAAC+P,aAAb,KAA+B,QAA/B,IAA2C/P,KAAK,CAAC+P,aAAN,KAAwB/vB,IAAvE,EAA6E;AACzE,eAAO0E,MAAM,oCAAmC1E,IAAnC,gBAAoDggB,KAAK,CAAC+P,aAA1D,CAAb;AACH;;AAED,aAAOpsB,OAAO,EAAd;AACH,KAfoB,CAArB;AAiBA6qB,gBAAY,CAAChG,EAAD,EAAK,eAAL,EAAsBxoB,IAAtB,CAAZ;AAEA0vB,gBAAY,GAAG1sB,UAAU,CAAC,YAAM;AAC5B,UAAI,CAACysB,UAAL,EAAiB;AACbK,eAAO;AACP,eAAOnsB,OAAO,EAAd;AACH;AACJ,KALwB,EAKtB,GALsB,CAAzB;;AAOA,QAAI6rB,KAAJ,EAAW;AACPA,WAAK,CAACM,OAAD,CAAL;AACH;AACJ,GAvEM,CAAP;AAwEH;AAED,IAAMG,KAAK,GAAG;AAEVC,SAAO,EAAE;AACLC,QAAI,EAAG,MADF;AAELC,SAAK,EAAE;AAFF,GAFC;AAOVC,YAAU,EAAE;AACRC,WAAO,EAAE,SADD;AAERC,UAAM,EAAG;AAFD,GAPF;AAYVC,WAAS,EAAE;AAZD,CAAd;AAeO,SAASC,kBAAT,CAA4BvI,OAA5B,EAAmD;AACtDA,SAAO,CAACG,KAAR,CAAcqI,WAAd,CAA0B,YAA1B,EAAwC,EAAxC;AACH;AAEM,SAASC,oBAAT,CAA8BzI,OAA9B,EAAqD;AACxDA,SAAO,CAACG,KAAR,CAAcqI,WAAd,CAA0B,YAA1B,EAAwCT,KAAK,CAACI,UAAN,CAAiBE,MAAzD,EAAiEN,KAAK,CAACO,SAAvE;AACH;AAGM,SAASI,WAAT,CAAqB1I,OAArB,EAA4C;AAC/CA,SAAO,CAACG,KAAR,CAAcqI,WAAd,CAA0B,SAA1B,EAAqC,EAArC;AACH;AAEM,SAASG,WAAT,CAAqB3I,OAArB,EAA4C;AAC/CA,SAAO,CAACG,KAAR,CAAcqI,WAAd,CAA0B,SAA1B,EAAqCT,KAAK,CAACC,OAAN,CAAcC,IAAnD,EAAyDF,KAAK,CAACO,SAA/D;AACH;AAEM,SAASM,cAAT,CAAwB5I,OAAxB,EAA+C;AAClD,MAAIA,OAAO,IAAIA,OAAO,CAAC6I,UAAvB,EAAmC;AAC/B7I,WAAO,CAAC6I,UAAR,CAAmBjH,WAAnB,CAA+B5B,OAA/B;AACH;AACJ;AAEM,SAAS8I,cAAT,CAAwB9I,OAAxB,EAA+CloB,IAA/C,EAA8DwvB,KAA9D,EAA+G;AAClH,MAAIyB,SAAS,GAAG1B,OAAO,CAACrH,OAAD,EAAUloB,IAAV,EAAgBwvB,KAAhB,CAAvB;AACAoB,aAAW,CAAC1I,OAAD,CAAX;AACA,SAAO+I,SAAP;AACH;AAEM,SAASC,cAAT,CAAwBhJ,OAAxB,EAA+CloB,IAA/C,EAA8DwvB,KAA9D,EAA+G;AAClH,SAAOD,OAAO,CAACrH,OAAD,EAAUloB,IAAV,EAAgBwvB,KAAhB,CAAP,CAA8BhtB,IAA9B,CAAmC,YAAM;AAC5CquB,eAAW,CAAC3I,OAAD,CAAX;AACH,GAFM,CAAP;AAGH;AAEM,SAASiJ,QAAT,CAAkBjJ,OAAlB,EAAyCloB,IAAzC,EAAwD;AAC3DkoB,SAAO,CAACkJ,SAAR,CAAkBC,GAAlB,CAAsBrxB,IAAtB;AACH;AAEM,SAASsxB,WAAT,CAAqBpJ,OAArB,EAA4CloB,IAA5C,EAA2D;AAC9DkoB,SAAO,CAACkJ,SAAR,CAAkBG,MAAlB,CAAyBvxB,IAAzB;AACH;AAEM,SAAS0xB,eAAT,CAAyBlJ,EAAzB,EAAqD;AACxD,MAAI,CAACA,EAAD,IAAO,CAACA,EAAE,CAACuI,UAAf,EAA2B;AACvB,WAAO,IAAP;AACH;;AACD,SAAO,KAAP;AACH;AAEM,SAASY,oBAAT,CAA8BzJ,OAA9B,EAAqD7kB,OAArD,EAA6F;AAChGA,SAAO,GAAG6E,IAAI,CAAC7E,OAAD,CAAd;AAEA,MAAI0a,QAAJ;;AAEA,MAAI2T,eAAe,CAACxJ,OAAD,CAAnB,EAA8B;AAC1B7kB,WAAO;AACV,GAFD,MAEO;AACH0a,YAAQ,GAAGK,YAAY,CAAC,YAAM;AAC1B,UAAIsT,eAAe,CAACxJ,OAAD,CAAnB,EAA8B;AAC1BnK,gBAAQ,CAACza,MAAT;AACAD,eAAO;AACV;AACJ,KALsB,EAKpB,EALoB,CAAvB;AAMH;;AAED,SAAO;AACHC,UADG,oBACM;AACL,UAAIya,QAAJ,EAAc;AACVA,gBAAQ,CAACza,MAAT;AACH;AACJ;AALE,GAAP;AAOH;AAEM,SAAS+uB,UAAT,CAAoB7J,EAApB,EAAsCyB,GAAtC,EAAwE;AAAA,MAAlCA,GAAkC;AAAlCA,OAAkC,GAAjB7nB,MAAM,CAAC+Q,QAAU;AAAA;;AAAA,0CACxDoV,gBAAgB,CAAC,QAAD,EAAWC,EAAX,CADwC,4CACxB;AAA9C,QAAInV,MAAM,2BAAV;AACD,QAAI0d,UAAU,GAAG1d,MAAM,CAAC0d,UAAxB;;AAEA,QAAI,CAACA,UAAL,EAAiB;AACb;AACH;;AAED,QAAIuB,SAAS,GAAGrI,GAAG,CAACI,aAAJ,CAAkB,QAAlB,CAAhB;AACAiI,aAAS,CAAC1wB,IAAV,GAAiByR,MAAM,CAACkf,WAAxB;AACAxB,cAAU,CAACyB,YAAX,CAAwBF,SAAxB,EAAmCjf,MAAnC;AACH;AACJ;AASM,SAASqkC,QAAT,CAAkBlvB,EAAlB,EAAoCnlB,OAApC,SAAwL;AAAA,iCAAT,EAAS;AAAA,0BAAzFqpB,KAAyF;AAAA,MAAzFA,KAAyF,4BAAjF,IAAiF;AAAA,2BAA3EC,MAA2E;AAAA,MAA3EA,MAA2E,6BAAlE,IAAkE;AAAA,6BAA5D5O,QAA4D;AAAA,MAA5DA,QAA4D,+BAAjD,GAAiD;AAAA,wBAA5CpX,GAA4C;AAAA,MAA5CA,GAA4C,0BAAtCvE,MAAsC;;AAC3L,MAAIu1C,YAAY,GAAGnvB,EAAE,CAACqE,WAAtB;AACA,MAAI+qB,aAAa,GAAGpvB,EAAE,CAACsE,YAAvB;AAEAzpB,SAAO,CAAC;AAAEqpB,SAAK,EAAEirB,YAAT;AAAuBhrB,UAAM,EAAEirB;AAA/B,GAAD,CAAP;;AAEA,MAAIjqB,KAAK,GAAG,SAARA,KAAQ,GAAM;AACd,QAAIkqB,QAAQ,GAAGrvB,EAAE,CAACqE,WAAlB;AACA,QAAIirB,SAAS,GAAGtvB,EAAE,CAACsE,YAAnB;;AAEA,QAAKJ,KAAK,IAAImrB,QAAQ,KAAKF,YAAvB,IAAyChrB,MAAM,IAAImrB,SAAS,KAAKF,aAArE,EAAqF;AACjFv0C,aAAO,CAAC;AAAEqpB,aAAK,EAAEmrB,QAAT;AAAmBlrB,cAAM,EAAEmrB;AAA3B,OAAD,CAAP;AACH;;AAEDH,gBAAY,GAAGE,QAAf;AACAD,iBAAa,GAAGE,SAAhB;AACH,GAVD;;AAYA,MAAIC,QAAJ;AACA,MAAIvyC,OAAJ;;AAEA,MAAI,OAAOmB,GAAG,CAACqxC,cAAX,KAA8B,WAAlC,EAA+C;AAC3CD,YAAQ,GAAG,IAAIpxC,GAAG,CAACqxC,cAAR,CAAuBrqB,KAAvB,CAAX;AACAoqB,YAAQ,CAACE,OAAT,CAAiBzvB,EAAjB;AAEH,GAJD,MAIO,IAAI,OAAO7hB,GAAG,CAACuxC,gBAAX,KAAgC,WAApC,EAAiD;AACpDH,YAAQ,GAAG,IAAIpxC,GAAG,CAACuxC,gBAAR,CAAyBvqB,KAAzB,CAAX;AACAoqB,YAAQ,CAACE,OAAT,CAAiBzvB,EAAjB,EAAqB;AACjBgC,gBAAU,EAAK,IADE;AAEjB2tB,eAAS,EAAM,IAFE;AAGjBC,aAAO,EAAQ,IAHE;AAIjBC,mBAAa,EAAE;AAJE,KAArB;AAMA1xC,OAAG,CAAC8I,gBAAJ,CAAqB,QAArB,EAA+Bke,KAA/B;AACH,GATM,MASA;AACH,QAAItP,IAAI,GAAG,SAAPA,IAAO,GAAM;AACbsP,WAAK;AACLnoB,aAAO,GAAGxC,UAAU,CAACqb,IAAD,EAAON,QAAP,CAApB;AACH,KAHD;;AAIAM,QAAI;AACP;;AAED,SAAO;AACH/a,UAAM,EAAE,kBAAM;AACVy0C,cAAQ,CAACO,UAAT;AACAl2C,YAAM,CAACkpB,mBAAP,CAA2B,QAA3B,EAAqCqC,KAArC;AACAjoB,kBAAY,CAACF,OAAD,CAAZ;AACH;AALE,GAAP;AAOH;AAEM,SAAS+yC,mBAAT,CAA6BvpC,GAA7B,EAAqD;AAExD,MAAI,CAAC2R,iBAAiB,EAAtB,EAA0B;AACtB;AACH;;AAED,MAAI,CAACve,MAAM,CAACwe,WAAR,IAAuB,OAAOxe,MAAM,CAACwe,WAAP,CAAmB2B,UAA1B,KAAyC,UAApE,EAAgF;AAC5E;AACH;;AAED,MAAMi2B,OAAO,GAAGp2C,MAAM,CAACwe,WAAP,CAAmB2B,UAAnB,EAAhB;;AAEA,OAAK,IAAItd,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGuzC,OAAO,CAACr1C,MAA5B,EAAoC8B,CAAC,EAArC,EAAyC;AACrC,QAAMwzC,KAAK,GAAGD,OAAO,CAACvzC,CAAD,CAArB;;AAEA,QAAIwzC,KAAK,IAAIA,KAAK,CAACz4C,IAAf,IAAuBy4C,KAAK,CAACz4C,IAAN,CAAW8C,OAAX,CAAmBkM,GAAnB,MAA4B,CAAnD,IAAwD,OAAOypC,KAAK,CAACl1B,QAAb,KAA0B,QAAtF,EAAgG;AAC5F,aAAOrS,IAAI,CAACC,KAAL,CAAWsnC,KAAK,CAACl1B,QAAjB,CAAP;AACH;AACJ;AACJ,C;;ACz8BD;AACA;AAWA,IAAMm1B,uBAAuB,GAAG,KAAK,EAAL,GAAU,IAA1C;AAEO,SAASC,UAAT,OAAoH;AAAA,MAA9F34C,IAA8F,QAA9FA,IAA8F;AAAA,2BAAxF44C,QAAwF;AAAA,MAAxFA,QAAwF,8BAA7EF,uBAA6E;AACvH,SAAOtF,aAAa,CAACuF,UAAD,EAAa,YAAM;AACnC,QAAME,WAAW,UAAS74C,IAAT,eAAjB;AAEA,QAAI84C,eAAJ;;AAEA,aAASC,QAAT,CAAqB11C,OAArB,EAA4D;AAExD,UAAI21C,mBAAmB,GAAGvC,qBAAqB,EAA/C;AACA,UAAIzlC,OAAJ;;AAEA,UAAI8nC,eAAJ,EAAqB;AACjB9nC,eAAO,GAAG8nC,eAAV;AACH;;AAED,UAAI,CAAC9nC,OAAD,IAAYgoC,mBAAhB,EAAqC;AACjC,YAAIC,UAAU,GAAG72C,MAAM,CAAC6P,YAAP,CAAoBC,OAApB,CAA4B2mC,WAA5B,CAAjB;;AAEA,YAAII,UAAJ,EAAgB;AACZjoC,iBAAO,GAAG/D,IAAI,CAACiD,KAAL,CAAW+oC,UAAX,CAAV;AACH;AACJ;;AAED,UAAI,CAACjoC,OAAL,EAAc;AACVA,eAAO,GAAGovB,SAAS,GAAGyY,WAAH,CAAnB;AACH;;AAED,UAAI,CAAC7nC,OAAL,EAAc;AACVA,eAAO,GAAG;AACN2X,YAAE,EAAErK,QAAQ;AADN,SAAV;AAGH;;AAED,UAAI,CAACtN,OAAO,CAAC2X,EAAb,EAAiB;AACb3X,eAAO,CAAC2X,EAAR,GAAarK,QAAQ,EAArB;AACH;;AAEDw6B,qBAAe,GAAG9nC,OAAlB;AAEA,UAAIpQ,MAAM,GAAGyC,OAAO,CAAC2N,OAAD,CAApB;;AAEA,UAAIgoC,mBAAJ,EAAyB;AACrB52C,cAAM,CAAC6P,YAAP,CAAoBykC,OAApB,CAA4BmC,WAA5B,EAAyC5rC,IAAI,CAACC,SAAL,CAAe8D,OAAf,CAAzC;AACH,OAFD,MAEO;AACHovB,iBAAS,GAAGyY,WAAH,CAAT,GAA2B7nC,OAA3B;AACH;;AAED8nC,qBAAe,GAAG,IAAlB;AAEA,aAAOl4C,MAAP;AACH;;AAED,aAASs4C,KAAT,GAA0B;AACtB,aAAOH,QAAQ,CAAC,UAAA/nC,OAAO;AAAA,eAAIA,OAAO,CAAC2X,EAAZ;AAAA,OAAR,CAAf;AACH;;AAED,aAASwwB,UAAT,CAAuB91C,OAAvB,EAA4D;AACxD,aAAO01C,QAAQ,CAAC,UAAA/nC,OAAO,EAAI;AAEvB,YAAIqE,OAAO,GAAGrE,OAAO,CAACooC,WAAtB;AACA,YAAI14B,GAAG,GAAGD,IAAI,CAACC,GAAL,EAAV;;AAEA,YAAIrL,OAAO,IAAMqL,GAAG,GAAGrL,OAAO,CAACgkC,OAAf,GAA0BT,QAA1C,EAAqD;AACjDvjC,iBAAO,GAAG,IAAV;AACH;;AAED,YAAI,CAACA,OAAL,EAAc;AACVA,iBAAO,GAAG;AACNikC,gBAAI,EAAKh7B,QAAQ,EADX;AAEN+6B,mBAAO,EAAE34B;AAFH,WAAV;AAIH;;AAED1P,eAAO,CAACooC,WAAR,GAAsB/jC,OAAtB;AAEA,eAAOhS,OAAO,CAACgS,OAAD,CAAd;AACH,OAnBc,CAAf;AAoBH;;AAED,aAASD,eAAT,CAA4B/R,OAA5B,EAAiE;AAC7D,aAAO81C,UAAU,CAAC,UAAA9jC,OAAO,EAAI;AACzBA,eAAO,CAACzL,KAAR,GAAgByL,OAAO,CAACzL,KAAR,IAAiB,EAAjC;AACA,eAAOvG,OAAO,CAACgS,OAAO,CAACzL,KAAT,CAAd;AACH,OAHgB,CAAjB;AAIH;;AAED,aAASN,YAAT,GAAiC;AAC7B,aAAO6vC,UAAU,CAAC,UAAA9jC,OAAO;AAAA,eAAIA,OAAO,CAACikC,IAAZ;AAAA,OAAR,CAAjB;AACH;;AAED,WAAO;AACHP,cAAQ,EAARA,QADG;AAEHG,WAAK,EAALA,KAFG;AAGH9jC,qBAAe,EAAfA,eAHG;AAIH9L,kBAAY,EAAZA;AAJG,KAAP;AAMH,GA/FmB,EA+FjB,CAAE;AAAEtJ,QAAI,EAAJA,IAAF;AAAQ44C,YAAQ,EAARA;AAAR,GAAF,CA/FiB,CAApB;AAgGH,C;;AC/GD;AACA;;AAEA,SAASW,0BAAT,GAA+C;AAC3C,SAAOZ,UAAU,CAAC;AAAE34C,QAAI,EAAE;AAAR,GAAD,CAAjB;AACH;;AAED,SAASw5C,aAAT,CAAuBx5C,IAAvB,EAAgD;AAC5C,SAAOu5C,0BAA0B,GAAGnkC,eAA7B,CAA6C,UAAAxL,KAAK,EAAI;AACzDA,SAAK,CAAC6vC,aAAN,GAAsB7vC,KAAK,CAAC6vC,aAAN,IAAuB,EAA7C;;AAEA,QAAI7vC,KAAK,CAAC6vC,aAAN,CAAoB32C,OAApB,CAA4B9C,IAA5B,MAAsC,CAAC,CAA3C,EAA8C;AAC1C4J,WAAK,CAAC6vC,aAAN,CAAoB12C,IAApB,CAAyB/C,IAAzB;AACA,aAAO,IAAP;AACH;;AAED,WAAO,KAAP;AACH,GATM,CAAP;AAUH;;AAWD,SAAS8Q,qBAAT,CAA+B9Q,IAA/B,EAAuD;AACnD,SAAOu5C,0BAA0B,GAAGR,QAA7B,CAAsC,UAAAnvC,KAAK,EAAI;AAClDA,SAAK,CAACqH,mBAAN,GAA4BrH,KAAK,CAACqH,mBAAN,IAA6B,EAAzD;AACArH,SAAK,CAACqH,mBAAN,CAA0BjR,IAA1B,IAAkC4J,KAAK,CAACqH,mBAAN,CAA0BjR,IAA1B,KAAmCkR,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACE,MAAL,KAAgB,GAA3B,CAArE;AACA,WAAOxH,KAAK,CAACqH,mBAAN,CAA0BjR,IAA1B,CAAP;AACH,GAJM,CAAP;AAKH;;AAED,IAAMqR,cAAc,GAAG;AACnBnkB,MAAI,EAAM,MADS;AAEnBokB,SAAO,EAAG,SAFS;AAGnBC,UAAQ,EAAE;AAHS,CAAvB;AAaO,SAASmoC,UAAT,OAAuH;AAAA,MAAjG15C,IAAiG,QAAjGA,IAAiG;AAAA,yBAA3FyR,MAA2F;AAAA,MAA3FA,MAA2F,4BAAlF,EAAkF;AAAA,+BAA9EkoC,YAA8E;AAAA,MAA9EA,YAA8E,kCAA/DzyC,IAA+D;AAAA,gCAAzD0yC,aAAyD;AAAA,MAAzDA,aAAyD,mCAAzC1yC,IAAyC;AAE1H,MAAI2yC,QAAQ,GAAG/oC,qBAAqB,CAAC9Q,IAAD,CAApC;AAEA,MAAI6R,KAAJ;;AAEA,MAAIgoC,QAAQ,GAAGpoC,MAAf,EAAuB;AACnBI,SAAK,GAAGR,cAAc,CAACnkB,IAAvB;AACH,GAFD,MAEO,IAAKukB,MAAM,IAAI,EAAX,IAAoBA,MAAM,IAAIooC,QAAX,IAAyBA,QAAQ,GAAIpoC,MAAM,GAAG,CAArE,EAA2E;AAC9EI,SAAK,GAAGR,cAAc,CAACC,OAAvB;AACH,GAFM,MAEA;AACHO,SAAK,GAAGR,cAAc,CAACE,QAAvB;AACH;;AAED,MAAIO,SAAS,GAAO9R,IAAP,SAAiB6R,KAA9B;AAEA,MAAIE,OAAO,GAAG,KAAd;AACA,MAAIC,MAAM,GAAG,KAAb;;AAEA,MAAI;AACA,QAAI5P,MAAM,CAAC6P,YAAP,IAAuB7P,MAAM,CAAC6P,YAAP,CAAoBC,OAApB,CAA4BlS,IAA5B,CAA3B,EAA8D;AAC1DgS,YAAM,GAAG,IAAT;AACH;AACJ,GAJD,CAIE,OAAOvP,GAAP,EAAY,CACV;AACH;;AAED,SAAO;AAEH0P,aAFG,uBAEmB;AAClB,aAAQN,KAAK,KAAKR,cAAc,CAACnkB,IAA1B,IAAmC8kB,MAA1C;AACH,KAJE;AAMHI,cANG,wBAMoB;AACnB,aAAQP,KAAK,KAAKR,cAAc,CAACnkB,IAA1B,IAAmC,CAAC8kB,MAA3C;AACH,KARE;AAUHK,gBAVG,0BAUqB;AACpB,aAAOP,SAAP;AACH,KAZE;AAcH/E,OAdG,eAcCwF,UAdD,EAcsBzI,OAdtB,EAc2E;AAAA,UAArDA,OAAqD;AAArDA,eAAqD,GAAjB,EAAiB;AAAA;;AAC1E,UAAI,CAACiI,OAAL,EAAc;AACV,eAAO,IAAP;AACH;;AAED,UAAIynC,aAAa,CAAKx5C,IAAL,SAAe8R,SAAf,SAA8B7E,IAAI,CAACC,SAAL,CAAepD,OAAf,CAA9B,CAAjB,EAA4E;AACxE6vC,oBAAY,CAAC;AAAE35C,cAAI,EAAJA,IAAF;AAAQ8R,mBAAS,EAATA,SAAR;AAAmBhI,iBAAO,EAAPA;AAAnB,SAAD,CAAZ;AACH;;AAED,UAAI0vC,aAAa,CAAKx5C,IAAL,SAAe8R,SAAf,SAA8BS,UAA9B,SAA8CtF,IAAI,CAACC,SAAL,CAAepD,OAAf,CAA9C,CAAjB,EAA4F;AACxF8vC,qBAAa,CAAC;AAAE55C,cAAI,EAAJA,IAAF;AAAQ8R,mBAAS,EAATA,SAAR;AAAmBS,oBAAU,EAAVA,UAAnB;AAA+BzI,iBAAO,EAAPA;AAA/B,SAAD,CAAb;AACH;;AAED,aAAO,IAAP;AACH,KA5BE;AA8BH4I,YA9BG,oBA8BM5I,OA9BN,EA8B2D;AAAA,UAArDA,OAAqD;AAArDA,eAAqD,GAAjB,EAAiB;AAAA;;AAC1DiI,aAAO,GAAG,IAAV;AACA,aAAO,KAAKhF,GAAL,UAAkBjD,OAAlB,CAAP;AACH,KAjCE;AAmCH6I,eAnCG,uBAmCS7I,OAnCT,EAmC8D;AAAA,UAArDA,OAAqD;AAArDA,eAAqD,GAAjB,EAAiB;AAAA;;AAC7D,aAAO,KAAKiD,GAAL,aAAqBjD,OAArB,CAAP;AACH;AArCE,GAAP;AAuCH,C;;ACpHD;AAEO,SAASgwC,kBAAT,OAAsJ;AAAA,MAA5G95C,IAA4G,QAA5GA,IAA4G;AAAA,0BAAtGsK,OAAsG;AAAA,MAAtGA,OAAsG,6BAA5F,QAA4F;AAEzJ,MAAIoL,MAAM,GAAG0qB,SAAS,EAAtB;AACA,MAAI2Z,SAAS,UAAS/5C,IAAT,UAAoBsK,OAApB,cAAb;AAEA,MAAI0vC,SAAS,GAAGtkC,MAAM,CAACqkC,SAAD,CAAN,GAAoBrkC,MAAM,CAACqkC,SAAD,CAAN,IAAqB,EAAzD;AAEA,SAAO;AACHppC,OAAG,EAAE,aAACnQ,GAAD,EAAey5C,QAAf,EAAqC;AACtC;AACAA,cAAQ,GAAGA,QAAQ,IAAI,EAAvB;AACA,UAAI/3C,IAAI,GAAG83C,SAAS,CAACx5C,GAAD,CAAT,GAAiBw5C,SAAS,CAACx5C,GAAD,CAAT,IAAkBy5C,QAA9C;AACA,aAAO/3C,IAAP;AACH;AANE,GAAP;AAQH,C;;ACjBD;AAoBA,IAAMiM,OAAO,GAAG;AACZC,cAAY,EAAE,cADF;AAEZC,QAAM,EAAQ;AAFF,CAAhB;AAKA,IAAIC,cAAc,GAAG,EAArB;;AAEA,SAASG,YAAT,CAAsBC,UAAtB,EAAwE;AAAA,MAAlDA,UAAkD;AAAlDA,cAAkD,GAA5B,EAA4B;AAAA;;AACpE,MAAI9N,MAAM,GAAG,EAAb;;AADoE,6CAEnD8N,UAAU,CAAC5M,IAAX,GAAkB6M,KAAlB,CAAwB,IAAxB,CAFmD,8CAEpB;AAA3C,QAAIC,IAAI,8BAAR;;AAA2C,sBACnBA,IAAI,CAACD,KAAL,CAAW,GAAX,CADmB;AAAA,QACtCnO,IADsC;AAAA,QAC9BqO,MAD8B;;AAE5CjO,UAAM,CAACJ,IAAG,CAACsO,WAAJ,EAAD,CAAN,GAA4BD,MAAM,CAACnO,IAAP,CAAY,GAAZ,EAAiBoB,IAAjB,EAA5B;AACH;;AACD,SAAOlB,MAAP;AACH;;AAEM,SAASmO,OAAT,OAAuJ;AAAA,MAApIC,GAAoI,QAApIA,GAAoI;AAAA,yBAA/H5I,MAA+H;AAAA,MAA/HA,MAA+H,4BAAtH,KAAsH;AAAA,0BAA/G6I,OAA+G;AAAA,MAA/GA,OAA+G,6BAArG,EAAqG;AAAA,MAAjGC,IAAiG,QAAjGA,IAAiG;AAAA,MAA3F3H,IAA2F,QAA3FA,IAA2F;AAAA,MAArF4H,IAAqF,QAArFA,IAAqF;AAAA,sBAA/ExI,GAA+E;AAAA,MAA/EA,GAA+E,yBAAzEvE,MAAyE;AAAA,0BAAjEoD,OAAiE;AAAA,MAAjEA,OAAiE,6BAAvD,CAAuD;AAC1J,SAAO,IAAIxB,2BAAJ,CAAiB,UAACL,OAAD,EAAUe,MAAV,EAAqB;AAEzC,QAAKwK,IAAI,IAAI3H,IAAT,IAAmB2H,IAAI,IAAIC,IAA3B,IAAqC5H,IAAI,IAAI2H,IAAjD,EAAwD;AACpD,YAAM,IAAIrN,KAAJ,sEAAN;AACH;;AAED,QAAIuN,iBAAiB,GAAG,EAAxB;;AANyC,sCAQzB/O,MAAM,CAACC,IAAP,CAAY2O,OAAZ,CARyB,qCAQH;AAAjC,UAAIzO,KAAG,qBAAP;AACD4O,uBAAiB,CAAC5O,KAAG,CAACsO,WAAJ,EAAD,CAAjB,GAAuCG,OAAO,CAACzO,KAAD,CAA9C;AACH;;AAED,QAAI0O,IAAJ,EAAU;AACNE,uBAAiB,CAACjB,OAAO,CAACC,YAAT,CAAjB,GAA0CgB,iBAAiB,CAACjB,OAAO,CAACC,YAAT,CAAjB,IAA2C,kBAArF;AACH,KAFD,MAEO,IAAI7G,IAAI,IAAI4H,IAAZ,EAAkB;AACrBC,uBAAiB,CAACjB,OAAO,CAACC,YAAT,CAAjB,GAA0CgB,iBAAiB,CAACjB,OAAO,CAACC,YAAT,CAAjB,IAA2C,kDAArF;AACH;;AAEDgB,qBAAiB,CAACjB,OAAO,CAACE,MAAT,CAAjB,GAAoCe,iBAAiB,CAACjB,OAAO,CAACE,MAAT,CAAjB,IAAqC,kBAAzE;;AAlByC,4BAoBfC,cApBe,gBAoBC;AAArC,UAAIe,aAAa,GAAIf,cAAJ,KAAjB;AACD,UAAIgB,YAAY,GAAGD,aAAa,EAAhC;;AADsC,wCAGtBhP,MAAM,CAACC,IAAP,CAAYgP,YAAZ,CAHsB,qCAGK;AAAtC,YAAI9O,KAAG,qBAAP;AACD4O,yBAAiB,CAAC5O,KAAG,CAACsO,WAAJ,EAAD,CAAjB,GAAuCQ,YAAY,CAAC9O,KAAD,CAAnD;AACH;AACJ;;AAED,QAAI+O,GAAG,GAAG,IAAI5I,GAAG,CAAC6I,cAAR,EAAV;AAEAD,OAAG,CAACE,gBAAJ,CAAqB,MAArB,EAA6B,SAASC,OAAT,GAA0B;AAEnD,UAAIC,eAAe,GAAGlB,YAAY,CAAC,KAAKmB,qBAAL,EAAD,CAAlC;;AAEA,UAAI,CAAC,KAAKE,MAAV,EAAkB;AACd,eAAOpL,MAAM,CAAC,IAAI7C,KAAJ,iBAAyBuE,MAAM,CAAC0I,WAAP,EAAzB,SAAmDE,GAAnD,uCAAD,CAAb;AACH;;AAED,UAAIe,WAAW,GAAGJ,eAAe,CAAC,cAAD,CAAjC;AACA,UAAIK,MAAM,GAAGD,WAAW,KAAKA,WAAW,CAACjN,OAAZ,CAAoB,kBAApB,MAA4C,CAA5C,IAAiDiN,WAAW,CAACjN,OAAZ,CAAoB,WAApB,MAAqC,CAA3F,CAAxB;AACA,UAAIo3C,YAAY,GAAG,KAAKjqC,YAAxB;;AAEA,UAAI;AACAiqC,oBAAY,GAAGjtC,IAAI,CAACiD,KAAL,CAAWgqC,YAAX,CAAf;AACH,OAFD,CAEE,OAAOz3C,GAAP,EAAY;AACV,YAAIuN,MAAJ,EAAY;AACR,iBAAOtL,MAAM,CAAC,IAAI7C,KAAJ,oBAA4B,KAAKoO,YAAjC,OAAD,CAAb;AACH;AACJ;;AAED,UAAIxL,GAAG,GAAG;AACNqL,cAAM,EAAG,KAAKA,MADR;AAENb,eAAO,EAAEU,eAFH;AAGNR,YAAI,EAAK+qC;AAHH,OAAV;AAMA,aAAOv2C,OAAO,CAACc,GAAD,CAAd;AAEH,KA5BD,EA4BG,KA5BH;AA8BA8K,OAAG,CAACE,gBAAJ,CAAqB,OAArB,EAA8B,UAACW,GAAD,EAAS;AACnC1L,YAAM,CAAC,IAAI7C,KAAJ,iBAAyBuE,MAAM,CAAC0I,WAAP,EAAzB,SAAmDE,GAAnD,iBAAoEoB,GAAG,CAACvQ,QAAJ,EAApE,OAAD,CAAN;AACH,KAFD,EAEG,KAFH;AAIA0P,OAAG,CAACe,IAAJ,CAASlK,MAAT,EAAiB4I,GAAjB,EAAsB,IAAtB;;AAEA,SAAK,IAAIxO,KAAT,IAAgB4O,iBAAhB,EAAmC;AAC/B,UAAIA,iBAAiB,CAAC/C,cAAlB,CAAiC7L,KAAjC,CAAJ,EAA2C;AACvC+O,WAAG,CAACgB,gBAAJ,CAAqB/P,KAArB,EAA0B4O,iBAAiB,CAAC5O,KAAD,CAA3C;AACH;AACJ;;AAED,QAAI0O,IAAJ,EAAU;AACNC,UAAI,GAAGlC,IAAI,CAACC,SAAL,CAAegC,IAAf,CAAP;AACH,KAFD,MAEO,IAAI3H,IAAJ,EAAU;AACb4H,UAAI,GAAG9O,MAAM,CAACC,IAAP,CAAYiH,IAAZ,EAAkB9G,GAAlB,CAAsB,UAAAD,GAAG,EAAI;AAChC,eAAWgQ,kBAAkB,CAAChQ,GAAD,CAA7B,UAAwC+G,IAAI,GAAGiJ,kBAAkB,CAACjJ,IAAI,CAAC/G,GAAD,CAAL,CAArB,GAAmC,EAA/E;AACH,OAFM,EAEJE,IAFI,CAEC,GAFD,CAAP;AAGH;;AAED6O,OAAG,CAAC/J,OAAJ,GAAcA,OAAd;;AACA+J,OAAG,CAACkB,SAAJ,GAAgB,SAASC,UAAT,GAAsB;AAClChM,YAAM,CAAC,IAAI7C,KAAJ,iBAAyBuE,MAAM,CAAC0I,WAAP,EAAzB,SAAmDE,GAAnD,oBAAD,CAAN;AACH,KAFD;;AAIAO,OAAG,CAACtI,IAAJ,CAASkI,IAAT;AACH,GAtFM,CAAP;AAuFH;AAEM,SAASzF,gBAAT,CAA0BtD,MAA1B,EAAgE;AACnEkI,gBAAc,CAACvL,IAAf,CAAoBqD,MAApB;AACH,C;;AChID;AACO,IAAMk0B,KAAK,GAAG,IAAd,C;;ACDP;AAEO,SAAS1G,QAAT,CAAkBrO,MAAlB,EAAmCvlB,IAAnC,EAAkDwlB,UAAlD,EAAuE;AAC1EA,YAAU,CAAC7jB,KAAX,GAAmBqR,OAAO,CAACwS,UAAU,CAAC7jB,KAAZ,EAAmB;AAAE3B,QAAI,EAAJA,IAAF;AAAQ+yC,iBAAa,EAAE;AAAvB,GAAnB,CAA1B;AACH;AAEM,SAASlwC,kBAAT,CAAiB0iB,MAAjB,EAAkCvlB,IAAlC,EAAiDwlB,UAAjD,EAAsE;AACzEA,YAAU,CAAC7jB,KAAX,GAAmBmxB,SAAS,CAACtN,UAAU,CAAC7jB,KAAZ,EAAmB;AAAE3B,QAAI,EAAJA;AAAF,GAAnB,CAA5B;AACH,C;;ACRM,SAASizB,MAAT,CAAgBrP,GAAhB,EAAwC;AAC3C,SAAO,OAAOA,GAAP,KAAe,QAAf,IAA4B,WAAD,CAAc7hB,IAAd,CAAmB6hB,GAAnB,CAAlC;AACH;AAEM,SAASsP,IAAT,CAActP,GAAd,EAAsC;AACzC,SAAO,OAAOA,GAAP,KAAe,QAAf,IAA4B,YAAD,CAAe7hB,IAAf,CAAoB6hB,GAApB,CAAlC;AACH;AAEM,SAASuP,KAAT,CAAelc,GAAf,EAA+C;AAElD,MAAI,OAAOA,GAAP,KAAe,QAAnB,EAA6B;AACzB,WAAOA,GAAP;AACH;;AAED,MAAIxV,KAAK,GAAGwV,GAAG,CAACxV,KAAJ,CAAU,kBAAV,CAAZ;;AAEA,MAAI,CAACA,KAAL,EAAY;AACR,UAAM,IAAII,KAAJ,qCAA6CoV,GAA7C,CAAN;AACH;;AAED,SAAOmK,QAAQ,CAAC3f,KAAK,CAAC,CAAD,CAAN,EAAW,EAAX,CAAf;AACH;AAEM,SAAS2xB,IAAT,CAAcnc,GAAd,EAA8C;AACjD,SAAWkc,KAAK,CAAClc,GAAD,CAAhB;AACH;AAEM,SAASoc,KAAT,CAAepc,GAAf,EAA+C;AAElD,MAAI,OAAOA,GAAP,KAAe,QAAnB,EAA6B;AACzB,WAAOmc,IAAI,CAACnc,GAAD,CAAX;AACH;;AAED,SAAOgc,MAAM,CAAChc,GAAD,CAAN,GAAcA,GAAd,GAAoBmc,IAAI,CAACnc,GAAD,CAA/B;AACH;AAEM,SAASqc,MAAT,CAAgBC,GAAhB,EAA8BC,IAA9B,EAAsD;AACzD,SAAOpS,QAAQ,CAACmS,GAAG,GAAGJ,KAAK,CAACK,IAAD,CAAX,GAAqB,GAAtB,EAA2B,EAA3B,CAAf;AACH;AAEM,SAASC,kBAAT,CAA4BC,GAA5B,EAAmDC,GAAnD,EAA0E;AAC7E,MAAI,OAAOD,GAAP,KAAe,QAAnB,EAA6B;AACzB,WAAOA,GAAP;AACH,GAFD,MAEO,IAAIT,MAAM,CAACS,GAAD,CAAV,EAAiB;AACpB,WAAOJ,MAAM,CAACK,GAAD,EAAMD,GAAN,CAAb;AACH,GAFM,MAEA,IAAIR,IAAI,CAACQ,GAAD,CAAR,EAAe;AAClB,WAAOP,KAAK,CAACO,GAAD,CAAZ;AACH,GAFM,MAEA;AACH,UAAM,IAAI7xB,KAAJ,mCAA2C6xB,GAA3C,CAAN;AACH;AACJ,C;;AClDD;AAEA;AAOO,SAASymB,WAAT,CAAwB/zC,MAAxB,SAAmH;AAAA,gCAAzB,EAAyB;AAAA,0BAApEZ,OAAoE;AAAA,MAApEA,OAAoE,6BAA1D,IAA0D;;AACtH,MAAI40C,QAAwB,GAAG,EAA/B;AACA,MAAIt0C,QAAiC,GAAG,EAAxC;AAEA,MAAImb,KAAK,GAAGje,UAAU,CAAC,YAAM;AACzB,QAAIo3C,QAAQ,CAACj3C,MAAb,EAAqB;AACjB2C,cAAQ,CAAC/C,IAAT,CAAciB,2BAAY,CAACa,WAAb,CAAyB,IAAIhD,KAAJ,eAAuBu4C,QAAQ,CAAC,CAAD,CAA/B,mBAAzB,CAAd;AACH;AACJ,GAJqB,EAInB50C,OAJmB,CAAtB;;AAMA,MAAI60C,MAAgB,GAAG,SAAnBA,MAAmB,CAACr6C,IAAD,EAAO8xC,EAAP,EAAqB;AAAA,QAAdA,EAAc;AAAdA,QAAc,GAAT5qC,IAAS;AAAA;;AACxCkzC,YAAQ,CAACr3C,IAAT,CAAc/C,IAAd,EADwC,CAGxC;;AACA,WAAO,SAASs6C,aAAT,GAAoC;AAAA;;AAAA,wCAAVh0C,IAAU;AAAVA,YAAU;AAAA;;AACvCkvC,qBAAe,CAAC4E,QAAD,EAAWp6C,IAAX,CAAf,CADuC,CAGvC;;AAHuC,sBAIfu1C,QAAQ,CAAC;AAAA;;AAAA,eAAM,OAAAzD,EAAE,EAACvvC,IAAH,aAAQ,KAAR,SAAiB+D,IAAjB,EAAN;AAAA,OAAD,CAJO;AAAA,UAIjC1F,MAJiC,aAIjCA,MAJiC;AAAA,UAIzBwD,KAJyB,aAIzBA,KAJyB;;AAMvC,UAAIA,KAAJ,EAAW;AACP0B,gBAAQ,CAAC/C,IAAT,CAAciB,2BAAY,CAACa,WAAb,CAAyBT,KAAzB,CAAd;AACA,cAAMA,KAAN;AACH;;AAED0B,cAAQ,CAAC/C,IAAT,CAAciB,2BAAY,CAACL,OAAb,CAAqB/C,MAArB,CAAd;AACA,aAAOA,MAAP;AACH,KAbD;AAcH,GAlBD;;AAoBA,MAAI25C,KAAe,GAAG,SAAlBA,KAAkB,CAACv6C,IAAD,EAAgB8xC,EAAhB,EAA8B;AAAA,QAAdA,EAAc;AAAdA,QAAc,GAAT5qC,IAAS;AAAA;;AAEhD;AACA,WAAO,SAASszC,YAAT,GAAmC;AAAA;;AACtC10C,cAAQ,CAAC/C,IAAT,CAAciB,2BAAY,CAACa,WAAb,CAAyB,IAAIhD,KAAJ,eAAuB7B,IAAvB,uBAAzB,CAAd,EADsC,CAEtC;;AAFsC,yCAAVsG,IAAU;AAAVA,YAAU;AAAA;;AAGtC,aAAO,QAAAwrC,EAAE,EAACvvC,IAAH,cAAQ,IAAR,SAAiB+D,IAAjB,EAAP;AACH,KAJD;AAKH,GARD;;AAUA,MAAIm0C,WAAqB,GAAG,SAAxBA,WAAwB,CAACz6C,IAAD,EAAO8xC,EAAP,EAAqB;AAAA,QAAdA,EAAc;AAAdA,QAAc,GAAT5qC,IAAS;AAAA;;AAC7CkzC,YAAQ,CAACr3C,IAAT,CAAc/C,IAAd,EAD6C,CAG7C;;AACA,WAAO,SAAS06C,kBAAT,GAAyC;AAAA;;AAAA,yCAAVp0C,IAAU;AAAVA,YAAU;AAAA;;AAC5CkvC,qBAAe,CAAC4E,QAAD,EAAWp6C,IAAX,CAAf,CAD4C,CAG5C;;AAH4C,uBAIpBu1C,QAAQ,CAAC;AAAA;;AAAA,eAAM,QAAAzD,EAAE,EAACvvC,IAAH,cAAQ,MAAR,SAAiB+D,IAAjB,EAAN;AAAA,OAAD,CAJY;AAAA,UAItC1F,MAJsC,cAItCA,MAJsC;AAAA,UAI9BwD,KAJ8B,cAI9BA,KAJ8B;;AAM5C,UAAIA,KAAJ,EAAW;AACP,cAAMA,KAAN;AACH;;AAED0B,cAAQ,CAAC/C,IAAT,CAAciB,2BAAY,CAACL,OAAb,CAAqB/C,MAArB,EAA6B4B,IAA7B,CAAkC,YAAM;AAClD,cAAM,IAAIX,KAAJ,eAAuB7B,IAAvB,wBAAN;AACH,OAFa,EAEXkH,IAFW,CAAd;AAGA,aAAOtG,MAAP;AACH,KAdD;AAeH,GAnBD;;AAqBAkF,UAAQ,CAAC/C,IAAT,CAAciB,2BAAY,CAACuB,GAAb,CAAiB;AAAA,WAAMa,MAAM,CAAC;AAAEi0C,YAAM,EAANA,MAAF;AAAUE,WAAK,EAALA,KAAV;AAAiBE,iBAAW,EAAXA,WAAjB;AAA8Br2C,WAAK,EAAEm2C;AAArC,KAAD,CAAZ;AAAA,GAAjB,CAAd;;AAEA,MAAII,KAAK,GAAG,SAARA,KAAQ,GAAM;AACd,WAAO32C,2BAAY,CAACuB,GAAb,CAAiB,YAAM;AAC1B,UAAIO,QAAQ,CAAC3C,MAAb,EAAqB;AACjB,eAAO2C,QAAQ,CAACwvC,GAAT,EAAP;AACH;AACJ,KAJM,EAIJ9yC,IAJI,CAIC,YAAM;AACV,UAAIsD,QAAQ,CAAC3C,MAAb,EAAqB;AACjB,eAAOw3C,KAAK,EAAZ;AACH;;AACD,UAAIP,QAAQ,CAACj3C,MAAb,EAAqB;AACjB,eAAOa,2BAAY,CAACwC,KAAb,CAAmB,EAAnB,EAAuBhE,IAAvB,CAA4Bm4C,KAA5B,CAAP;AACH;AACJ,KAXM,CAAP;AAYH,GAbD;;AAeA,SAAOA,KAAK,GAAGn4C,IAAR,CAAa,YAAM;AACtBkD,gBAAY,CAACub,KAAD,CAAZ;AACH,GAFM,CAAP;AAGH,C;;AC1FD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACTO,SAAS25B,gBAAT,GAAsC;AAEzC,MAAI,OAAO90B,OAAP,KAAmB,WAAvB,EAAoC;AAChC,WAAO,KAAP;AACH;;AAED,MAAI,OAAOzlB,MAAM,CAACw6C,MAAd,KAAyB,WAA7B,EAA0C;AACtC,WAAO,KAAP;AACH;;AAED,MAAI;AAEA,QAAIC,WAAW,GAAG,IAAIh1B,OAAJ,EAAlB;AACA,QAAIi1B,OAAO,GAAG,EAAd;AACA,QAAIC,SAAS,GAAG,eAAhB;AAEA36C,UAAM,CAACw6C,MAAP,CAAcE,OAAd;AAEAD,eAAW,CAACz1B,GAAZ,CAAgB01B,OAAhB,EAAyBC,SAAzB;;AAEA,QAAIF,WAAW,CAACnqC,GAAZ,CAAgBoqC,OAAhB,MAA6BC,SAAjC,EAA4C;AACxC,aAAO,IAAP;AACH;;AAED,WAAO,KAAP;AAEH,GAhBD,CAgBE,OAAOv4C,GAAP,EAAY;AAEV,WAAO,KAAP;AACH;AACJ,C;;AC9BM,SAAS8zB,WAAT,CAAwBC,UAAxB,EAA+Ct0B,IAA/C,EAAkE;AACrE,OAAK,IAAI+C,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGuxB,UAAU,CAACrzB,MAA/B,EAAuC8B,CAAC,EAAxC,EAA4C;AAExC,QAAI;AACA,UAAIuxB,UAAU,CAACvxB,CAAD,CAAV,KAAkB/C,IAAtB,EAA4B;AACxB,eAAO+C,CAAP;AACH;AACJ,KAJD,CAIE,OAAOxC,GAAP,EAAY,CACV;AACH;AACJ;;AAED,SAAO,CAAC,CAAR;AACH,C,CAED;;AACO,SAASyE,IAAT,GAAsC,CACzC;AACH,C;;AClBD;AAEA;AACA;AAEO,IAAM+zC,8BAAb;AAAA;AAAA;AAOI,oCAAc;AAAA,SALdj7C,IAKc;AAAA,SAJd+oC,OAIc;AAAA,SAHdzoC,IAGc;AAAA,SAFduO,MAEc;AACV;AACA,SAAK7O,IAAL,mBAA0BkR,IAAI,CAACE,MAAL,KAAgB,GAAhB,KAAwB,CAAlD;;AAEA,QAAIwpC,gBAAgB,EAApB,EAAwB;AACpB,UAAI;AACA,aAAK7R,OAAL,GAAe,IAAIjjB,OAAJ,EAAf;AACH,OAFD,CAEE,OAAOrjB,GAAP,EAAY,CACV;AACH;AACJ;;AAED,SAAKnC,IAAL,GAAa,EAAb;AACA,SAAKuO,MAAL,GAAc,EAAd;AACH;;AArBL;;AAAA,SAuBIqsC,qBAvBJ,GAuBI,iCAAwB;AAEpB,QAAInS,OAAO,GAAG,KAAKA,OAAnB;AACA,QAAIzoC,IAAI,GAAG,KAAKA,IAAhB;;AAEA,SAAK,IAAI2E,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG3E,IAAI,CAAC6C,MAAzB,EAAiC8B,CAAC,EAAlC,EAAsC;AAClC,UAAItD,KAAK,GAAGrB,IAAI,CAAC2E,CAAD,CAAhB;;AAEA,UAAI40B,+BAAQ,CAACl4B,KAAD,CAAR,IAAmB8F,qCAAc,CAAC9F,KAAD,CAArC,EAA8C;AAE1C,YAAIonC,OAAJ,EAAa;AACT,cAAI;AACAA,mBAAO,CAACvD,MAAR,CAAe7jC,KAAf;AACH,WAFD,CAEE,OAAOc,GAAP,EAAY,CACV;AACH;AACJ;;AAEDnC,YAAI,CAACiD,MAAL,CAAY0B,CAAZ,EAAe,CAAf;AACA,aAAK4J,MAAL,CAAYtL,MAAZ,CAAmB0B,CAAnB,EAAsB,CAAtB;AAEAA,SAAC,IAAI,CAAL;AACH;AACJ;AACJ,GA/CL;;AAAA,SAiDIk2C,iBAjDJ,GAiDI,2BAAkB36C,GAAlB,EAAqC;AAEjC,QAAIq5B,+BAAQ,CAACr5B,GAAD,CAAZ,EAAmB;AACf,aAAO,KAAP;AACH;;AAED,QAAI;AACA0G,UAAI,CAAC1G,GAAG,IAAIA,GAAG,CAACsnB,IAAZ,CAAJ;AACA5gB,UAAI,CAAC1G,GAAG,IAAIA,GAAG,CAAC,KAAKR,IAAN,CAAX,CAAJ;AACH,KAHD,CAGE,OAAOyC,GAAP,EAAY;AACV,aAAO,KAAP;AACH;;AAED,WAAO,IAAP;AACH,GA/DL;;AAAA,SAiEI4iB,GAjEJ,GAiEI,aAAI7kB,GAAJ,EAAamB,KAAb,EAAwB;AAEpB,QAAI,CAACnB,GAAL,EAAU;AACN,YAAM,IAAIqB,KAAJ,wBAAN;AACH;;AAED,QAAIknC,OAAO,GAAG,KAAKA,OAAnB;;AAEA,QAAIA,OAAJ,EAAa;AACT,UAAI;AACAA,eAAO,CAAC1jB,GAAR,CAAY7kB,GAAZ,EAAiBmB,KAAjB;AACH,OAFD,CAEE,OAAOc,GAAP,EAAY;AACV,eAAO,KAAKsmC,OAAZ;AACH;AACJ;;AAED,QAAI,KAAKoS,iBAAL,CAAuB36C,GAAvB,CAAJ,EAAiC;AAC7B,UAAI;AACA,YAAIR,IAAI,GAAG,KAAKA,IAAhB;AACA,YAAIy4C,KAAK,GAAGj4C,GAAG,CAACR,IAAD,CAAf;;AAEA,YAAIy4C,KAAK,IAAIA,KAAK,CAAC,CAAD,CAAL,KAAaj4C,GAA1B,EAA+B;AAC3Bi4C,eAAK,CAAC,CAAD,CAAL,GAAW92C,KAAX;AACH,SAFD,MAEO;AACHtB,gBAAM,CAAC0kB,cAAP,CAAsBvkB,GAAtB,EAA2BR,IAA3B,EAAiC;AAC7B2B,iBAAK,EAAK,CAAEnB,GAAF,EAAOmB,KAAP,CADmB;AAE7By5C,oBAAQ,EAAE;AAFmB,WAAjC;AAIH;;AAED;AAEH,OAfD,CAeE,OAAO34C,GAAP,EAAY,CACV;AACH;AACJ;;AAED,SAAKy4C,qBAAL;;AAEA,QAAI56C,IAAI,GAAG,KAAKA,IAAhB;AACA,QAAIuO,MAAM,GAAG,KAAKA,MAAlB;AACA,QAAIuX,KAAK,GAAGmQ,WAAW,CAACj2B,IAAD,EAAOE,GAAP,CAAvB;;AAEA,QAAI4lB,KAAK,KAAK,CAAC,CAAf,EAAkB;AACd9lB,UAAI,CAACyC,IAAL,CAAUvC,GAAV;AACAqO,YAAM,CAAC9L,IAAP,CAAYpB,KAAZ;AACH,KAHD,MAGO;AACHkN,YAAM,CAACuX,KAAD,CAAN,GAAgBzkB,KAAhB;AACH;AACJ,GAlHL;;AAAA,SAoHIgP,GApHJ,GAoHI,aAAInQ,GAAJ,EAAwB;AAEpB,QAAI,CAACA,GAAL,EAAU;AACN,YAAM,IAAIqB,KAAJ,wBAAN;AACH;;AAED,QAAIknC,OAAO,GAAG,KAAKA,OAAnB;;AAEA,QAAIA,OAAJ,EAAa;AACT,UAAI;AACA,YAAIA,OAAO,CAACje,GAAR,CAAYtqB,GAAZ,CAAJ,EAAsB;AAClB,iBAAOuoC,OAAO,CAACp4B,GAAR,CAAYnQ,GAAZ,CAAP;AACH;AAEJ,OALD,CAKE,OAAOiC,GAAP,EAAY;AACV,eAAO,KAAKsmC,OAAZ;AACH;AACJ;;AAED,QAAI,KAAKoS,iBAAL,CAAuB36C,GAAvB,CAAJ,EAAiC;AAC7B,UAAI;AACA,YAAIi4C,KAAK,GAAGj4C,GAAG,CAAC,KAAKR,IAAN,CAAf;;AAEA,YAAIy4C,KAAK,IAAIA,KAAK,CAAC,CAAD,CAAL,KAAaj4C,GAA1B,EAA+B;AAC3B,iBAAOi4C,KAAK,CAAC,CAAD,CAAZ;AACH;;AAED;AACH,OARD,CAQE,OAAOh2C,GAAP,EAAY,CACV;AACH;AACJ;;AAED,SAAKy4C,qBAAL;;AAEA,QAAI56C,IAAI,GAAG,KAAKA,IAAhB;AACA,QAAI8lB,KAAK,GAAGmQ,WAAW,CAACj2B,IAAD,EAAOE,GAAP,CAAvB;;AAEA,QAAI4lB,KAAK,KAAK,CAAC,CAAf,EAAkB;AACd;AACH;;AAED,WAAO,KAAKvX,MAAL,CAAYuX,KAAZ,CAAP;AACH,GA/JL;;AAAA,SAiKIof,MAjKJ,GAiKI,iBAAOhlC,GAAP,EAAgB;AAEZ,QAAI,CAACA,GAAL,EAAU;AACN,YAAM,IAAIqB,KAAJ,wBAAN;AACH;;AAED,QAAIknC,OAAO,GAAG,KAAKA,OAAnB;;AAEA,QAAIA,OAAJ,EAAa;AACT,UAAI;AACAA,eAAO,CAACvD,MAAR,CAAehlC,GAAf;AACH,OAFD,CAEE,OAAOiC,GAAP,EAAY;AACV,eAAO,KAAKsmC,OAAZ;AACH;AACJ;;AAED,QAAI,KAAKoS,iBAAL,CAAuB36C,GAAvB,CAAJ,EAAiC;AAC7B,UAAI;AACA,YAAIi4C,KAAK,GAAGj4C,GAAG,CAAC,KAAKR,IAAN,CAAf;;AAEA,YAAIy4C,KAAK,IAAIA,KAAK,CAAC,CAAD,CAAL,KAAaj4C,GAA1B,EAA+B;AAC3Bi4C,eAAK,CAAC,CAAD,CAAL,GAAWA,KAAK,CAAC,CAAD,CAAL,GAAW13C,SAAtB;AACH;AACJ,OAND,CAME,OAAO0B,GAAP,EAAY,CACV;AACH;AACJ;;AAED,SAAKy4C,qBAAL;;AAEA,QAAI56C,IAAI,GAAG,KAAKA,IAAhB;AACA,QAAI8lB,KAAK,GAAGmQ,WAAW,CAACj2B,IAAD,EAAOE,GAAP,CAAvB;;AAEA,QAAI4lB,KAAK,KAAK,CAAC,CAAf,EAAkB;AACd9lB,UAAI,CAACiD,MAAL,CAAY6iB,KAAZ,EAAmB,CAAnB;AACA,WAAKvX,MAAL,CAAYtL,MAAZ,CAAmB6iB,KAAnB,EAA0B,CAA1B;AACH;AACJ,GAtML;;AAAA,SAwMI0E,GAxMJ,GAwMI,aAAItqB,GAAJ,EAAuB;AAEnB,QAAI,CAACA,GAAL,EAAU;AACN,YAAM,IAAIqB,KAAJ,wBAAN;AACH;;AAED,QAAIknC,OAAO,GAAG,KAAKA,OAAnB;;AAEA,QAAIA,OAAJ,EAAa;AACT,UAAI;AACA,YAAIA,OAAO,CAACje,GAAR,CAAYtqB,GAAZ,CAAJ,EAAsB;AAClB,iBAAO,IAAP;AACH;AACJ,OAJD,CAIE,OAAOiC,GAAP,EAAY;AACV,eAAO,KAAKsmC,OAAZ;AACH;AACJ;;AAED,QAAI,KAAKoS,iBAAL,CAAuB36C,GAAvB,CAAJ,EAAiC;AAC7B,UAAI;AACA,YAAIi4C,KAAK,GAAGj4C,GAAG,CAAC,KAAKR,IAAN,CAAf;;AAEA,YAAIy4C,KAAK,IAAIA,KAAK,CAAC,CAAD,CAAL,KAAaj4C,GAA1B,EAA+B;AAC3B,iBAAO,IAAP;AACH;;AAED,eAAO,KAAP;AACH,OARD,CAQE,OAAOiC,GAAP,EAAY,CACV;AACH;AACJ;;AAED,SAAKy4C,qBAAL;;AAEA,QAAI90B,KAAK,GAAGmQ,WAAW,CAAC,KAAKj2B,IAAN,EAAYE,GAAZ,CAAvB;AACA,WAAO4lB,KAAK,KAAK,CAAC,CAAlB;AACH,GA5OL;;AAAA,SA8OI0sB,QA9OJ,GA8OI,kBAAStyC,GAAT,EAAkBk0C,MAAlB,EAAwC;AACpC,QAAI,KAAK5pB,GAAL,CAAStqB,GAAT,CAAJ,EAAmB;AACf;AACA,aAAO,KAAKmQ,GAAL,CAASnQ,GAAT,CAAP;AACH;;AAED,QAAImB,KAAK,GAAG+yC,MAAM,EAAlB;AACA,SAAKrvB,GAAL,CAAS7kB,GAAT,EAAcmB,KAAd;AACA,WAAOA,KAAP;AACH,GAvPL;;AAAA;AAAA,I;;ACLA;;;;;;;;;;;;;;;;;;ACDA;AAEA;AACA;AAEA,IAAM05C,eAAe,4CACf/xD,sCAAiB,CAACF,KADH,IACY;AACzBkyD,SAAO,EAAI,SADc;AAEzBC,WAAS,EAAE;AAFc,CADZ,mBAKfjyD,sCAAiB,CAACC,GALH,IAKU;AACvB+xD,SAAO,EAAI,SADY;AAEvBC,WAAS,EAAE;AAFY,CALV,mBASfjyD,sCAAiB,CAACJ,KATH,IASY;AACzBoyD,SAAO,EAAI,SADc;AAEzBC,WAAS,EAAE;AAFc,CATZ,mBAArB;AAeO,SAASC,OAAT,OAAkG;AAAA,MAA/EC,SAA+E,QAA/EA,SAA+E;;AAErG,MAAI,CAACJ,eAAe,CAACI,SAAD,CAApB,EAAiC;AAC7B,UAAM,IAAI55C,KAAJ,SAAiB45C,SAAjB,yBAAN;AACH;;AAJoG,8BAMtEJ,eAAe,CAACI,SAAD,CANuD;AAAA,MAM7FH,OAN6F,yBAM7FA,OAN6F;AAAA,MAMpFC,SANoF,yBAMpFA,SANoF;AAQrG,SACI;AAAK,SAAK,EAAC,4BAAX;AAAwC,WAAO,EAAC,KAAhD;AAAsD,WAAO,EAAC,YAA9D;AAA2E,UAAM,EAAC,IAAlF;AAAuF,SAAK,EAAC,KAA7F;AAAmG,uBAAmB,EAAC;AAAvH,KACI;AAAG,aAAS,EAAC;AAAb,KACI;AAAG,aAAS,EAAC;AAAb,KACI;AAAM,aAAS,EAAC,2DAAhB;AAA4E,KAAC,EAAC,y+LAA9E;AAAwjM,QAAI,EAAGD;AAA/jM,IADJ,EAEI;AAAM,KAAC,EAAC,4HAAR;AAAqI,QAAI,EAAGA;AAA5I,IAFJ,EAGI;AAAM,KAAC,EAAC,6HAAR;AAAsI,QAAI,EAAGA;AAA7I,IAHJ,EAII;AAAM,aAAS,EAAC,2DAAhB;AAA4E,KAAC,EAAC,iqGAA9E;AAAgvG,QAAI,EAAGC;AAAvvG,IAJJ,EAKI;AAAG,aAAS,EAAC;AAAb,KACI;AAAM,KAAC,EAAC,iSAAR;AAA0S,QAAI,EAAGA;AAAjT,IADJ,CALJ,CADJ,CADJ,CADJ;AAeH,C;;;;AC3CD;AAEA;AACA;AAEA,IAAMG,kBAAkB,kDAClBpyD,sCAAiB,CAACF,KADA,IACS;AACzBkyD,SAAO,EAAI,SADc;AAEzBC,WAAS,EAAE;AAFc,CADT,sBAKlBjyD,sCAAiB,CAACC,GALA,IAKO;AACvB+xD,SAAO,EAAI,SADY;AAEvBC,WAAS,EAAE;AAFY,CALP,sBASlBjyD,sCAAiB,CAACJ,KATA,IASS;AACzBoyD,SAAO,EAAI,SADc;AAEzBC,WAAS,EAAE;AAFc,CATT,sBAAxB;AAeO,SAASI,UAAT,OAAqG;AAAA,MAA/EF,SAA+E,QAA/EA,SAA+E;;AAExG,MAAI,CAACC,kBAAkB,CAACD,SAAD,CAAvB,EAAoC;AAChC,UAAM,IAAI55C,KAAJ,SAAiB45C,SAAjB,4BAAN;AACH;;AAJuG,8BAMzEC,kBAAkB,CAACD,SAAD,CANuD;AAAA,MAMhGH,OANgG,yBAMhGA,OANgG;AAAA,MAMvFC,SANuF,yBAMvFA,SANuF;AAQxG,SACI;AAAK,SAAK,EAAC,OAAX;AAAmB,UAAM,EAAC,MAA1B;AAAiC,WAAO,EAAC,YAAzC;AAAsD,WAAO,EAAC,KAA9D;AAAoE,SAAK,EAAC;AAA1E,KACI;AAAG,UAAM,EAAC,MAAV;AAAiB,oBAAa,GAA9B;AAAkC,QAAI,EAAC,MAAvC;AAA8C,iBAAU;AAAxD,KACI;AAAG,aAAS,EAAC;AAAb,KACI;AAAG,aAAS,EAAC;AAAb,KACI;AAAG,oBAAa;AAAhB,KACI;AAAG,QAAI,EAAC,cAAR;AAAuB,iBAAU,SAAjC;AAA2C,QAAI,EAAGD;AAAlD,KACI;AAAM,KAAC,EAAC,GAAR;AAAY,KAAC,EAAC,GAAd;AAAkB,SAAK,EAAC,KAAxB;AAA8B,UAAM,EAAC;AAArC,IADJ,CADJ,EAII;AAAG,aAAS,EAAC,gCAAb;AAA8C,iBAAU,SAAxD;AAAkE,QAAI,EAAGC;AAAzE,KACI;AAAM,KAAC,EAAC;AAAR,IADJ,EAEI;AAAM,KAAC,EAAC;AAAR,IAFJ,EAGI;AAAM,KAAC,EAAC;AAAR,IAHJ,EAII;AAAM,KAAC,EAAC;AAAR,IAJJ,EAKI;AAAM,KAAC,EAAC;AAAR,IALJ,EAMI;AAAM,KAAC,EAAC;AAAR,IANJ,CAJJ,CADJ,EAcI;AAAM,KAAC,EAAC,isEAAR;AAA0sE,QAAI,EAAGA;AAAjtE,IAdJ,CADJ,CADJ,CADJ,CADJ;AAwBH,C;;;;ACpDD;AAEA;AACA;AAEA,IAAMK,iBAAiB,gDACjBtyD,sCAAiB,CAACF,KADD,IACU;AACzBkyD,SAAO,EAAI,SADc;AAEzBC,WAAS,EAAE,SAFc;AAGzBM,UAAQ,EAAG;AAHc,CADV,qBAMjBvyD,sCAAiB,CAACC,GAND,IAMQ;AACvB+xD,SAAO,EAAI,SADY;AAEvBC,WAAS,EAAE,SAFY;AAGvBM,UAAQ,EAAG;AAHY,CANR,qBAWjBvyD,sCAAiB,CAACJ,KAXD,IAWU;AACzBoyD,SAAO,EAAK,SADa;AAEzBC,WAAS,EAAG,SAFa;AAGzBM,UAAQ,EAAI;AAHa,CAXV,qBAAvB;AAkBO,SAASC,SAAT,OAAoG;AAAA,MAA/EL,SAA+E,QAA/EA,SAA+E;;AAEvG,MAAI,CAACG,iBAAiB,CAACH,SAAD,CAAtB,EAAmC;AAC/B,UAAM,IAAI55C,KAAJ,SAAiB45C,SAAjB,2BAAN;AACH;;AAJsG,8BAM9DG,iBAAiB,CAACH,SAAD,CAN6C;AAAA,MAM/FH,OAN+F,yBAM/FA,OAN+F;AAAA,MAMtFC,SANsF,yBAMtFA,SANsF;AAAA,MAM3EM,QAN2E,yBAM3EA,QAN2E;AAQvG,SACI;AAAK,SAAK,EAAC,IAAX;AAAgB,UAAM,EAAC,IAAvB;AAA4B,WAAO,EAAC,WAApC;AAAgD,uBAAmB,EAAC,eAApE;AAAoF,SAAK,EAAC;AAA1F,KACI;AAAS,QAAI,EAAGP,OAAhB;AAA0B,UAAM,EAAC;AAAjC,IADJ,EAEI;AAAG,aAAS,EAAC;AAAb,KACI;AAAM,KAAC,EAAC,iSAAR;AAA0S,QAAI,EAAGA;AAAjT,IADJ,EAEI,4CACI;AAAM,QAAI,EAAGC;AAAb,KACI;AAAS,UAAM,EAAC,yEAAhB;AAA0F,aAAS,EAAC;AAApG,IADJ,CADJ,EAII,2CAJJ,EAKI;AAAM,KAAC,EAAC,qwBAAR;AAA8wB,QAAI,EAAGD;AAArxB,IALJ,CAFJ,EASI;AAAM,KAAC,EAAC,kRAAR;AAA2R,QAAI,EAAGO;AAAlS,IATJ,CAFJ,EAaI;AAAG,aAAS,EAAC,wDAAb;AAAsE,QAAI,EAAGN;AAA7E,KACI;AAAM,KAAC,EAAC;AAAR,IADJ,EAEI;AAAM,KAAC,EAAC;AAAR,IAFJ,EAGI;AAAM,KAAC,EAAC;AAAR,IAHJ,EAII;AAAS,UAAM,EAAC;AAAhB,IAJJ,EAKI;AAAM,KAAC,EAAC;AAAR,IALJ,EAMI;AAAM,KAAC,EAAC;AAAR,IANJ,EAOI;AAAM,KAAC,EAAC;AAAR,IAPJ,EAQI;AAAM,KAAC,EAAC;AAAR,IARJ,EASI;AAAS,UAAM,EAAC;AAAhB,IATJ,EAUI;AAAM,KAAC,EAAC;AAAR,IAVJ,CAbJ,CADJ;AA4BH,C;;;;AC3DD;AAEA;AACA;AAEA,IAAMQ,mBAAmB,oDACnBzyD,sCAAiB,CAACF,KADC,IACQ;AACzBkyD,SAAO,EAAI,SADc;AAEzBC,WAAS,EAAE,SAFc;AAGzBM,UAAQ,EAAG;AAHc,CADR,uBAMnBvyD,sCAAiB,CAACC,GANC,IAMM;AACvB+xD,SAAO,EAAI,SADY;AAEvBC,WAAS,EAAE,SAFY;AAGvBM,UAAQ,EAAG;AAHY,CANN,uBAWnBvyD,sCAAiB,CAACJ,KAXC,IAWQ;AACzBoyD,SAAO,EAAK,SADa;AAEzBC,WAAS,EAAG,SAFa;AAGzBM,UAAQ,EAAI;AAHa,CAXR,uBAAzB;AAkBO,SAASG,WAAT,OAAsG;AAAA,MAA/EP,SAA+E,QAA/EA,SAA+E;;AAEzG,MAAI,CAACM,mBAAmB,CAACN,SAAD,CAAxB,EAAqC;AACjC,UAAM,IAAI55C,KAAJ,SAAiB45C,SAAjB,6BAAN;AACH;;AAJwG,8BAMhEM,mBAAmB,CAACN,SAAD,CAN6C;AAAA,MAMjGH,OANiG,yBAMjGA,OANiG;AAAA,MAMxFC,SANwF,yBAMxFA,SANwF;AAAA,MAM7EM,QAN6E,yBAM7EA,QAN6E;AAQzG,SACI;AAAK,SAAK,EAAC,MAAX;AAAkB,UAAM,EAAC,MAAzB;AAAgC,WAAO,EAAC,WAAxC;AAAoD,WAAO,EAAC,KAA5D;AAAkE,SAAK,EAAC;AAAxE,KACI;AAAG,UAAM,EAAC,MAAV;AAAiB,oBAAa,GAA9B;AAAkC,QAAI,EAAC,MAAvC;AAA8C,iBAAU,SAAxD;AAAkE,aAAS,EAAC;AAA5E,KACI;AAAG,aAAS,EAAC;AAAb,KACI;AAAG,aAAS,EAAC;AAAb,KACI;AAAM,QAAI,EAAGP;AAAb,KACI;AAAS,UAAM,EAAC,yEAAhB;AAA0F,aAAS,EAAC;AAApG,IADJ,CADJ,EAII;AAAM,KAAC,EAAC,oVAAR;AAA6V,QAAI,EAAGC;AAApW,IAJJ,CADJ,EAOI;AAAM,KAAC,EAAC,0PAAR;AAAmQ,QAAI,EAAGD;AAA1Q,IAPJ,EAQI;AAAM,KAAC,EAAC,8+BAAR;AAAu/B,QAAI,EAAGO;AAA9/B,IARJ,EASI;AAAM,QAAI,EAAGP;AAAb,KACI;AAAS,UAAM,EAAC,yEAAhB;AAA0F,aAAS,EAAC;AAApG,IADJ,CATJ,EAYI;AAAM,KAAC,EAAC,8NAAR;AAAuO,MAAE,EAAC,QAA1O;AAAmP,QAAI,EAAGO;AAA1P,IAZJ,EAaI;AAAM,KAAC,EAAC,ocAAR;AAA6c,QAAI,EAAGA;AAApd,IAbJ,EAcI;AAAM,KAAC,EAAC,kkBAAR;AAA2kB,QAAI,EAAGA;AAAllB,IAdJ,EAeI;AAAM,KAAC,EAAC,8tBAAR;AAAuuB,MAAE,EAAC,SAA1uB;AAAovB,QAAI,EAAGP,OAA3vB;AAAqwB,QAAI,EAAC;AAA1wB,IAfJ,EAgBI;AAAM,KAAC,EAAC,8iCAAR;AAAujC,QAAI,EAAGA;AAA9jC,IAhBJ,EAiBI;AAAM,KAAC,EAAC,sdAAR;AAA+d,QAAI,EAAGA;AAAte,IAjBJ,CADJ,CADJ,CADJ;AAyBH,C;;;;ACxDD;AAEA;AACA;AAEA,IAAMW,eAAe,4CACf3yD,sCAAiB,CAACF,KADH,IACY;AACzBkyD,SAAO,EAAI,SADc;AAEzBC,WAAS,EAAE,SAFc;AAGzBM,UAAQ,EAAG;AAHc,CADZ,mBAMfvyD,sCAAiB,CAACC,GANH,IAMU;AACvB+xD,SAAO,EAAI,SADY;AAEvBC,WAAS,EAAE,SAFY;AAGvBM,UAAQ,EAAG;AAHY,CANV,mBAWfvyD,sCAAiB,CAACJ,KAXH,IAWY;AACzBoyD,SAAO,EAAK,SADa;AAEzBC,WAAS,EAAG,SAFa;AAGzBM,UAAQ,EAAI;AAHa,CAXZ,mBAArB;AAkBO,SAASK,OAAT,OAAkG;AAAA,MAA/ET,SAA+E,QAA/EA,SAA+E;;AAErG,MAAI,CAACQ,eAAe,CAACR,SAAD,CAApB,EAAiC;AAC7B,UAAM,IAAI55C,KAAJ,SAAiB45C,SAAjB,yBAAN;AACH;;AAJoG,8BAM5DQ,eAAe,CAACR,SAAD,CAN6C;AAAA,MAM7FH,OAN6F,yBAM7FA,OAN6F;AAAA,MAMpFC,SANoF,yBAMpFA,SANoF;AAAA,MAMzEM,QANyE,yBAMzEA,QANyE;AAQrG,SACI;AAAK,SAAK,EAAC,MAAX;AAAkB,UAAM,EAAC,MAAzB;AAAgC,WAAO,EAAC,WAAxC;AAAoD,WAAO,EAAC,KAA5D;AAAkE,SAAK,EAAC;AAAxE,KACI;AAAG,UAAM,EAAC,MAAV;AAAiB,oBAAa,GAA9B;AAAkC,QAAI,EAAC,MAAvC;AAA8C,iBAAU,SAAxD;AAAkE,aAAS,EAAC;AAA5E,KACI;AAAG,aAAS,EAAC;AAAb,KACI;AAAG,aAAS,EAAC;AAAb,KACI;AAAM,KAAC,EAAC,gxBAAR;AAAyxB,QAAI,EAAGP;AAAhyB,IADJ,EAEI;AAAM,KAAC,EAAC,kmBAAR;AAA2mB,QAAI,EAAGA;AAAlnB,IAFJ,EAGI;AAAG,aAAS,EAAC;AAAb,KACI;AAAM,QAAI,EAAGC;AAAb,KACI;AAAS,UAAM,EAAC,2EAAhB;AAA4F,aAAS,EAAC;AAAtG,IADJ,CADJ,EAII;AAAM,KAAC,EAAC,44BAAR;AAAq5B,QAAI,EAAGM;AAA55B,IAJJ,CAHJ,EASI;AAAM,KAAC,EAAC,kLAAR;AAA2L,QAAI,EAAGA;AAAlM,IATJ,EAUI;AAAM,KAAC,EAAC,uvBAAR;AAAgwB,QAAI,EAAGA;AAAvwB,IAVJ,EAWI;AAAM,KAAC,EAAC,6+BAAR;AAAs/B,QAAI,EAAGA;AAA7/B,IAXJ,EAYI;AAAM,KAAC,EAAC,yrBAAR;AAAksB,QAAI,EAAGA;AAAzsB,IAZJ,EAaI;AAAM,KAAC,EAAC,woBAAR;AAAipB,MAAE,EAAC,SAAppB;AAA8pB,QAAI,EAAGA;AAArqB,IAbJ,EAcI;AAAM,KAAC,EAAC,4aAAR;AAAqb,QAAI,EAAGA;AAA5b,IAdJ,EAeI;AAAS,QAAI,EAAGA,QAAhB;AAA2B,UAAM,EAAC;AAAlC,IAfJ,EAgBI;AAAM,KAAC,EAAC,yoBAAR;AAAkpB,QAAI,EAAGA;AAAzpB,IAhBJ,EAiBI;AAAM,KAAC,EAAC,iZAAR;AAA0Z,QAAI,EAAGA;AAAja,IAjBJ,EAkBI;AAAM,KAAC,EAAC,k2BAAR;AAA22B,QAAI,EAAGA;AAAl3B,IAlBJ,EAmBI;AAAM,KAAC,EAAC,0dAAR;AAAoe,QAAI,EAAGA;AAA3e,IAnBJ,EAoBI;AAAM,KAAC,EAAC,0dAAR;AAAoe,QAAI,EAAGA;AAA3e,IApBJ,EAqBI;AAAG,aAAS,EAAC;AAAb,KACI;AAAM,QAAI,EAAGN;AAAb,KACI;AAAS,UAAM,EAAC,iGAAhB;AAAkH,aAAS,EAAC;AAA5H,IADJ,CADJ,EAII;AAAM,KAAC,EAAC,45BAAR;AAAq6B,QAAI,EAAGM;AAA56B,IAJJ,CArBJ,CADJ,CADJ,CADJ,CADJ;AAoCH,C;;;;ACnED;AAEA;AACA;AAEA,IAAMM,kBAAkB,kDAClB7yD,sCAAiB,CAACF,KADA,IACS;AACzBkyD,SAAO,EAAI,SADc;AAEzBC,WAAS,EAAE,SAFc;AAGzBM,UAAQ,EAAG;AAHc,CADT,sBAMlBvyD,sCAAiB,CAACC,GANA,IAMO;AACvB+xD,SAAO,EAAI,SADY;AAEvBC,WAAS,EAAE,SAFY;AAGvBM,UAAQ,EAAG;AAHY,CANP,sBAWlBvyD,sCAAiB,CAACJ,KAXA,IAWS;AACzBoyD,SAAO,EAAK,SADa;AAEzBC,WAAS,EAAG,SAFa;AAGzBM,UAAQ,EAAI;AAHa,CAXT,sBAAxB;AAkBO,SAASO,UAAT,OAAqG;AAAA,MAA/EX,SAA+E,QAA/EA,SAA+E;;AAExG,MAAI,CAACU,kBAAkB,CAACV,SAAD,CAAvB,EAAoC;AAChC,UAAM,IAAI55C,KAAJ,SAAiB45C,SAAjB,4BAAN;AACH;;AAJuG,8BAM/DU,kBAAkB,CAACV,SAAD,CAN6C;AAAA,MAMhGH,OANgG,yBAMhGA,OANgG;AAAA,MAMvFC,SANuF,yBAMvFA,SANuF;AAAA,MAM5EM,QAN4E,yBAM5EA,QAN4E;AAQxG,SACI;AAAK,SAAK,EAAC,MAAX;AAAkB,UAAM,EAAC,MAAzB;AAAgC,WAAO,EAAC,WAAxC;AAAoD,WAAO,EAAC,KAA5D;AAAkE,SAAK,EAAC;AAAxE,KACI;AAAG,UAAM,EAAC,MAAV;AAAiB,oBAAa,GAA9B;AAAkC,QAAI,EAAC,MAAvC;AAA8C,iBAAU,SAAxD;AAAkE,aAAS,EAAC;AAA5E,KACI;AAAG,aAAS,EAAC;AAAb,KACI;AAAG,aAAS,EAAC;AAAb,KACI;AAAM,KAAC,EAAC,+1BAAR;AAAw2B,MAAE,EAAC,QAA32B;AAAo3B,QAAI,EAAGP;AAA33B,IADJ,EAEI;AAAM,KAAC,EAAC,suBAAR;AAA+uB,QAAI,EAAGA;AAAtvB,IAFJ,EAGI;AAAM,KAAC,EAAC,6vBAAR;AAAswB,QAAI,EAAGA;AAA7wB,IAHJ,EAII;AAAM,KAAC,EAAC,iyBAAR;AAA0yB,QAAI,EAAGC;AAAjzB,IAJJ,EAKI;AAAM,KAAC,EAAC,w+BAAR;AAAi/B,QAAI,EAAGA;AAAx/B,IALJ,EAMI,4CACI;AAAM,QAAI,EAAGM;AAAb,KACI;AAAS,UAAM,EAAC,mFAAhB;AAAoG,aAAS,EAAC;AAA9G,IADJ,CADJ,EAII,2CAJJ,EAKI;AAAM,KAAC,EAAC,0sBAAR;AAAmtB,QAAI,EAAGN;AAA1tB,IALJ,CANJ,EAaI;AAAM,KAAC,EAAC,+4BAAR;AAAw5B,QAAI,EAAGA;AAA/5B,IAbJ,CADJ,CADJ,CADJ,CADJ;AAuBH,C;;;;ACtDD;AAEA;AACA;AAEA,IAAMc,sBAAsB,sDACtB/yD,sCAAiB,CAACF,KADI,IACK;AACzBkyD,SAAO,EAAI,SADc;AAEzBC,WAAS,EAAE;AAFc,CADL,wBAKtBjyD,sCAAiB,CAACC,GALI,IAKG;AACvB+xD,SAAO,EAAI,SADY;AAEvBC,WAAS,EAAE;AAFY,CALH,wBAStBjyD,sCAAiB,CAACJ,KATI,IASK;AACzBoyD,SAAO,EAAK,SADa;AAEzBC,WAAS,EAAG;AAFa,CATL,wBAA5B;AAeO,SAASe,cAAT,OAAyG;AAAA,MAA/Eb,SAA+E,QAA/EA,SAA+E;;AAE5G,MAAI,CAACY,sBAAsB,CAACZ,SAAD,CAA3B,EAAwC;AACpC,UAAM,IAAI55C,KAAJ,SAAiB45C,SAAjB,gCAAN;AACH;;AAJ2G,+BAM7EY,sBAAsB,CAACZ,SAAD,CANuD;AAAA,MAMpGH,OANoG,0BAMpGA,OANoG;AAAA,MAM3FC,SAN2F,0BAM3FA,SAN2F;AAQ5G,SACI;AAAK,WAAO,EAAC,KAAb;AAAmB,MAAE,EAAC,SAAtB;AAAgC,KAAC,EAAC,KAAlC;AAAwC,KAAC,EAAC,KAA1C;AAAgD,SAAK,EAAC,OAAtD;AAA8D,UAAM,EAAC,MAArE;AAA4E,WAAO,EAAC,4CAApF;AAAiI,SAAK,EAAC,wCAAvI;AAAgL,SAAK,EAAC;AAAtL,KACI;AAAG,aAAS,EAAC;AAAb,KACI,4CACI;AAAM,QAAI,EAAGD,OAAb;AAAuB,KAAC,EAAC;AAAzB,IADJ,EAEI;AAAM,QAAI,EAAGC,SAAb;AAAyB,KAAC,EAAC;AAA3B,IAFJ,CADJ,EAKI;AAAM,QAAI,EAAGD,OAAb;AAAuB,KAAC,EAAC;AAAzB,IALJ,CADJ,CADJ;AAWH,C;;;;ACvCD;AAEA;AACA;AAEA,IAAMiB,gBAAgB,8CAChBjzD,sCAAiB,CAACiD,OADF,IACa;AAC3B+uD,SAAO,EAAK,SADe;AAE3BC,WAAS,EAAG,SAFe;AAG3BM,UAAQ,EAAI,SAHe;AAI3BW,YAAU,EAAE;AAJe,CADb,oBAOhBlzD,sCAAiB,CAACF,KAPF,IAOW;AACzBkyD,SAAO,EAAK,SADa;AAEzBC,WAAS,EAAG,SAFa;AAGzBM,UAAQ,EAAI,SAHa;AAIzBW,YAAU,EAAE;AAJa,CAPX,oBAahBlzD,sCAAiB,CAACJ,KAbF,IAaW;AACzBoyD,SAAO,EAAK,SADa;AAEzBC,WAAS,EAAG,SAFa;AAGzBM,UAAQ,EAAI,SAHa;AAIzBW,YAAU,EAAE;AAJa,CAbX,oBAAtB;AAqBO,SAASC,QAAT,OAAmG;AAAA,MAA/EhB,SAA+E,QAA/EA,SAA+E;;AAEtG,MAAI,CAACc,gBAAgB,CAACd,SAAD,CAArB,EAAkC;AAC9B,UAAM,IAAI55C,KAAJ,SAAiB45C,SAAjB,0BAAN;AACH;;AAJqG,8BAMjDc,gBAAgB,CAACd,SAAD,CANiC;AAAA,MAM9FH,OAN8F,yBAM9FA,OAN8F;AAAA,MAMrFC,SANqF,yBAMrFA,SANqF;AAAA,MAM1EM,QAN0E,yBAM1EA,QAN0E;AAAA,MAMhEW,UANgE,yBAMhEA,UANgE;AAQtG,SACI;AAAK,WAAO,EAAC,KAAb;AAAmB,MAAE,EAAC,SAAtB;AAAgC,SAAK,EAAC,4BAAtC;AAAmE,KAAC,EAAC,KAArE;AAA2E,KAAC,EAAC,KAA7E;AAAmF,WAAO,EAAC,iBAA3F;AAA8G,SAAK,EAAC,IAApH;AAAyH,UAAM,EAAC;AAAhI,KACI;AAAO,QAAI,EAAC;AAAZ,IADJ,EAEI,4CACI;AACI,QAAI,EAAGlB,OADX;AACqB,KAAC,EAAC;AADvB,IADJ,EAII;AACI,QAAI,EAAGA,OADX;AACqB,KAAC,EAAC;AADvB,IAJJ,EAOI,4CACI,4CACI;AACI,QAAI,EAAGA,OADX;AACqB,KAAC,EAAC;AADvB,IADJ,EAiBI,4CAEI;AAAgB,MAAE,EAAC,UAAnB;AAA8B,iBAAa,EAAC,gBAA5C;AAA6D,MAAE,EAAC,WAAhE;AAA4E,MAAE,EAAC,UAA/E;AAA0F,MAAE,EAAC,WAA7F;AAAyG,MAAE,EAAC,UAA5G;AAAuH,qBAAiB,EAAC;AAAzI,KACI;AAAO,UAAM,EAAC,GAAd;AAAkB,kBAAaA;AAA/B,IADJ,EAEI;AAAO,UAAM,EAAC,GAAd;AAAkB,kBAAaC;AAA/B,IAFJ,CAFJ,EAMI;AACI,SAAK,EAAC,qBADV;AACgC,KAAC,EAAC;AADlC,IANJ,CAjBJ,CADJ,CAPJ,EAkDI;AACI,QAAI,EAAGD,OADX;AACqB,KAAC,EAAC;AADvB,IAlDJ,EAqDI,4CAEI;AAAgB,MAAE,EAAC,UAAnB;AAA8B,iBAAa,EAAC,gBAA5C;AAA6D,MAAE,EAAC,WAAhE;AAA4E,MAAE,EAAC,UAA/E;AAA0F,MAAE,EAAC,WAA7F;AAAyG,MAAE,EAAC,UAA5G;AAAuH,qBAAiB,EAAC;AAAzI,KACI;AAAO,UAAM,EAAC,GAAd;AAAkB,kBAAaO;AAA/B,IADJ,EAEI;AAAO,UAAM,EAAC,GAAd;AAAkB,kBAAaW;AAA/B,IAFJ,CAFJ,EAMI;AAAM,SAAK,EAAC,qBAAZ;AAAkC,KAAC,EAAC;AAApC,IANJ,CArDJ,CAFJ,CADJ;AAmEH,C;;;;ACrGD;AAEA;AACA;AAEA,IAAME,wBAAwB,sDACxBpzD,sCAAiB,CAACF,KADM,IACG;AACzBkyD,SAAO,EAAK,SADa;AAEzBC,WAAS,EAAG,SAFa;AAGzBM,UAAQ,EAAI,SAHa;AAIzBW,YAAU,EAAE,SAJa;AAKzBG,SAAO,EAAK,SALa;AAMzBC,QAAM,EAAM;AANa,CADH,wBASxBtzD,sCAAiB,CAACC,GATM,IASC;AACvB+xD,SAAO,EAAK,SADW;AAEvBC,WAAS,EAAG,SAFW;AAGvBM,UAAQ,EAAI,SAHW;AAIvBW,YAAU,EAAE,SAJW;AAKvBG,SAAO,EAAK,SALW;AAMvBC,QAAM,EAAM;AANW,CATD,wBAiBxBtzD,sCAAiB,CAACJ,KAjBM,IAiBG;AACzBoyD,SAAO,EAAK,SADa;AAEzBC,WAAS,EAAG,SAFa;AAGzBM,UAAQ,EAAI,SAHa;AAIzBW,YAAU,EAAE,SAJa;AAKzBG,SAAO,EAAK,SALa;AAMzBC,QAAM,EAAM;AANa,CAjBH,wBAA9B;AA2BO,SAASC,gBAAT,OAA2G;AAAA,MAA/EpB,SAA+E,QAA/EA,SAA+E;;AAE9G,MAAI,CAACiB,wBAAwB,CAACjB,SAAD,CAA7B,EAA0C;AACtC,UAAM,IAAI55C,KAAJ,SAAiB45C,SAAjB,kCAAN;AACH;;AAJ6G,+BAMvCiB,wBAAwB,CAACjB,SAAD,CANe;AAAA,MAMtGH,OANsG,0BAMtGA,OANsG;AAAA,MAM7FC,SAN6F,0BAM7FA,SAN6F;AAAA,MAMlFM,QANkF,0BAMlFA,QANkF;AAAA,MAMxEW,UANwE,0BAMxEA,UANwE;AAAA,MAM5DG,OAN4D,0BAM5DA,OAN4D;AAAA,MAMnDC,MANmD,0BAMnDA,MANmD;AAQ9G,SACI;AAAK,SAAK,EAAC,MAAX;AAAkB,UAAM,EAAC,MAAzB;AAAgC,WAAO,EAAC,WAAxC;AAAoD,WAAO,EAAC,KAA5D;AAAkE,SAAK,EAAC;AAAxE,KACI,+CACI;AAAM,KAAC,EAAC,mXAAR;AAA4X,MAAE,EAAC;AAA/X,IADJ,EAEI;AAAgB,MAAE,EAAC,aAAnB;AAAiC,MAAE,EAAC,aAApC;AAAkD,MAAE,EAAC,aAArD;AAAmE,MAAE,EAAC,aAAtE;AAAoF,MAAE,EAAC;AAAvF,KACI;AAAM,kBAAatB,OAAnB;AAA6B,UAAM,EAAC;AAApC,IADJ,EAEI;AAAM,kBAAaC,SAAnB;AAA+B,UAAM,EAAC;AAAtC,IAFJ,CAFJ,EAMI;AAAM,KAAC,EAAC,oZAAR;AAA6Z,MAAE,EAAC;AAAha,IANJ,EAOI;AAAgB,MAAE,EAAC,aAAnB;AAAiC,MAAE,EAAC,aAApC;AAAkD,MAAE,EAAC,aAArD;AAAmE,MAAE,EAAC,aAAtE;AAAoF,MAAE,EAAC;AAAvF,KACI;AAAM,kBAAaD,OAAnB;AAA6B,UAAM,EAAC;AAApC,IADJ,EAEI;AAAM,kBAAaC,SAAnB;AAA+B,UAAM,EAAC;AAAtC,IAFJ,CAPJ,EAWI;AAAS,MAAE,EAAC,QAAZ;AAAqB,UAAM,EAAC;AAA5B,IAXJ,EAYI;AAAgB,MAAE,EAAC,aAAnB;AAAiC,MAAE,EAAC,YAApC;AAAiD,MAAE,EAAC,aAApD;AAAkE,MAAE,EAAC,YAArE;AAAkF,MAAE,EAAC;AAArF,KACI;AAAM,kBAAaM,QAAnB;AAA8B,UAAM,EAAC;AAArC,IADJ,EAEI;AAAM,kBAAaW,UAAnB;AAAgC,UAAM,EAAC;AAAvC,IAFJ,CAZJ,EAgBI;AAAS,MAAE,EAAC,SAAZ;AAAsB,UAAM,EAAC;AAA7B,IAhBJ,EAiBI;AAAS,MAAE,EAAC,SAAZ;AAAsB,UAAM,EAAC;AAA7B,IAjBJ,EAkBI;AAAS,MAAE,EAAC,SAAZ;AAAsB,UAAM,EAAC;AAA7B,IAlBJ,EAmBI;AAAS,MAAE,EAAC,SAAZ;AAAsB,UAAM,EAAC;AAA7B,IAnBJ,EAoBI;AAAS,MAAE,EAAC,SAAZ;AAAsB,UAAM,EAAC;AAA7B,IApBJ,EAqBI;AAAS,MAAE,EAAC,SAAZ;AAAsB,UAAM,EAAC;AAA7B,IArBJ,CADJ,EAwBI;AAAI,UAAM,EAAC,MAAX;AAAkB,oBAAa,GAA/B;AAAmC,QAAI,EAAC,MAAxC;AAA+C,iBAAU;AAAzD,KACI;AAAI,aAAS,EAAC;AAAd,KACI;AAAI,aAAS,EAAC;AAAd,KACI;AAAG,aAAS,EAAC;AAAb,KACI;AAAM,QAAI,EAAGlB;AAAb,KACI;AAAK,QAAI,EAAC;AAAV,IADJ,CADJ,EAII;AAAM,KAAC,EAAC,mXAAR;AAA4X,QAAI,EAAC,wBAAjY;AAA0Z,QAAI,EAAC;AAA/Z,IAJJ,CADJ,EAOI;AAAG,aAAS,EAAC;AAAb,KACI;AAAO,QAAI,EAAGA;AAAd,KACI;AAAK,QAAI,EAAC;AAAV,IADJ,CADJ,EAII;AAAM,KAAC,EAAC,oZAAR;AAA6Z,QAAI,EAAC,wBAAla;AAA2b,QAAI,EAAC;AAAhc,IAJJ,CAPJ,EAaI;AAAI,aAAS,EAAC;AAAd,KACI;AAAM,MAAE,EAAC,QAAT;AAAkB,QAAI,EAAGA;AAAzB,KACI;AAAK,QAAI,EAAC;AAAV,IADJ,CADJ,EAII;AAAS,MAAE,EAAC,QAAZ;AAAqB,QAAI,EAAC,wBAA1B;AAAmD,QAAI,EAAC,cAAxD;AAAuE,UAAM,EAAC;AAA9E,IAJJ,CAbJ,EAmBI;AAAI,aAAS,EAAC;AAAd,KACI;AAAM,KAAC,EAAC,8oBAAR;AAAupB,QAAI,EAAGqB;AAA9pB,IADJ,EAEI;AAAM,KAAC,EAAC,otDAAR;AAA6tD,QAAI,EAAGA;AAApuD,IAFJ,EAGI;AAAM,KAAC,EAAC,84BAAR;AAAu5B,QAAI,EAAGA;AAA95B,IAHJ,EAII;AAAG,aAAS,EAAC;AAAb,KACI;AAAM,MAAE,EAAC,SAAT;AAAmB,QAAI,EAAGrB;AAA1B,KACI;AAAK,QAAI,EAAC;AAAV,IADJ,CADJ,EAII;AAAM,KAAC,EAAC,i2BAAR;AAA02B,QAAI,EAAGqB,OAAj3B;AAA23B,QAAI,EAAC;AAAh4B,IAJJ,CAJJ,EAUI;AAAG,aAAS,EAAC;AAAb,KACI;AAAM,MAAE,EAAC,SAAT;AAAmB,QAAI,EAAGrB;AAA1B,KACI;AAAK,QAAI,EAAC;AAAV,IADJ,CADJ,EAII;AAAM,KAAC,EAAC,2xBAAR;AAAoyB,QAAI,EAAGqB,OAA3yB;AAAqzB,QAAI,EAAC;AAA1zB,IAJJ,CAVJ,EAgBI;AAAG,aAAS,EAAC;AAAb,KACI;AAAM,MAAE,EAAC,SAAT;AAAmB,QAAI,EAAGrB;AAA1B,KACI;AAAK,QAAI,EAAC;AAAV,IADJ,CADJ,EAII;AAAM,KAAC,EAAC,yxBAAR;AAAmyB,QAAI,EAAGqB,OAA1yB;AAAozB,QAAI,EAAC;AAAzzB,IAJJ,CAhBJ,EAsBI;AAAG,aAAS,EAAC;AAAb,KACI;AAAM,MAAE,EAAC,SAAT;AAAmB,QAAI,EAAGrB;AAA1B,KACI;AAAK,QAAI,EAAC;AAAV,IADJ,CADJ,EAII;AAAM,KAAC,EAAC,i2BAAR;AAA02B,QAAI,EAAGqB,OAAj3B;AAA23B,QAAI,EAAC;AAAh4B,IAJJ,CAtBJ,EA4BI;AAAM,KAAC,EAAC,+hDAAR;AAAwiD,QAAI,EAAGA;AAA/iD,IA5BJ,EA6BI;AAAM,KAAC,EAAC,moCAAR;AAA4oC,QAAI,EAAGA;AAAnpC,IA7BJ,EA8BI;AAAM,KAAC,EAAC,u/CAAR;AAAggD,QAAI,EAAGA;AAAvgD,IA9BJ,EA+BI;AAAM,KAAC,EAAC,8+BAAR;AAAu/B,QAAI,EAAGA;AAA9/B,IA/BJ,EAgCI;AAAM,KAAC,EAAC,+WAAR;AAAwX,QAAI,EAAGA;AAA/X,IAhCJ,EAiCI;AAAG,aAAS,EAAC;AAAb,KACI;AAAM,MAAE,EAAC,SAAT;AAAmB,QAAI,EAAGrB;AAA1B,KACI;AAAK,QAAI,EAAC;AAAV,IADJ,CADJ,EAII;AAAM,KAAC,EAAC,6ZAAR;AAAsa,QAAI,EAAGqB,OAA7a;AAAub,QAAI,EAAC;AAA5b,IAJJ,CAjCJ,EAuCI;AAAS,QAAI,EAAGC,MAAhB;AAAyB,UAAM,EAAC;AAAhC,IAvCJ,EAwCI;AAAM,KAAC,EAAC,+fAAR;AAAwgB,QAAI,EAAGA;AAA/gB,IAxCJ,EAyCI;AAAM,KAAC,EAAC,qaAAR;AAA8a,QAAI,EAAGA;AAArb,IAzCJ,EA0CI;AAAM,MAAE,EAAC,SAAT;AAAmB,QAAI,EAAGtB;AAA1B,KACI;AAAK,QAAI,EAAC;AAAV,IADJ,CA1CJ,EA6CI;AAAU,QAAI,EAAGsB,MAAjB;AAA0B,QAAI,EAAC,eAA/B;AAA+C,UAAM,EAAC;AAAtD,IA7CJ,EA8CI;AAAM,KAAC,EAAC,mpBAAR;AAA4pB,QAAI,EAAGA,MAAnqB;AAA4qB,QAAI,EAAC;AAAjrB,IA9CJ,EA+CI;AAAM,KAAC,EAAC,4pBAAR;AAAqqB,QAAI,EAAGA,MAA5qB;AAAqrB,QAAI,EAAC;AAA1rB,IA/CJ,EAgDI;AAAU,QAAI,EAAGA,MAAjB;AAA0B,QAAI,EAAC,eAA/B;AAA+C,UAAM,EAAC;AAAtD,IAhDJ,EAiDI;AAAM,KAAC,EAAC,2YAAR;AAAoZ,MAAE,EAAC,SAAvZ;AAAia,QAAI,EAAGA,MAAxa;AAAib,QAAI,EAAC;AAAtb,IAjDJ,EAkDI;AAAM,KAAC,EAAC,y7CAAR;AAAk8C,QAAI,EAAGA,MAAz8C;AAAk9C,QAAI,EAAC;AAAv9C,IAlDJ,EAmDI;AAAM,KAAC,EAAC,qsBAAR;AAA+sB,QAAI,EAAGA,MAAttB;AAA+tB,QAAI,EAAC;AAApuB,IAnDJ,EAoDI;AAAM,KAAC,EAAC,w7CAAR;AAAi8C,QAAI,EAAGA,MAAx8C;AAAi9C,QAAI,EAAC;AAAt9C,IApDJ,EAqDI;AAAM,KAAC,EAAC,6rBAAR;AAAssB,QAAI,EAAGA,MAA7sB;AAAstB,QAAI,EAAC;AAA3tB,IArDJ,EAsDI;AAAM,KAAC,EAAC,6aAAR;AAAsb,MAAE,EAAC,SAAzb;AAAmc,QAAI,EAAGA,MAA1c;AAAmd,QAAI,EAAC;AAAxd,IAtDJ,EAuDI;AAAU,QAAI,EAAGA,MAAjB;AAA0B,QAAI,EAAC,eAA/B;AAA+C,UAAM,EAAC;AAAtD,IAvDJ,EAwDI;AAAU,QAAI,EAAGA,MAAjB;AAA0B,QAAI,EAAC,eAA/B;AAA+C,UAAM,EAAC;AAAtD,IAxDJ,EAyDI;AAAM,KAAC,EAAC,6rBAAR;AAAssB,QAAI,EAAGA,MAA7sB;AAAstB,QAAI,EAAC;AAA3tB,IAzDJ,EA0DI;AAAM,KAAC,EAAC,4kDAAR;AAAqlD,QAAI,EAAGA,MAA5lD;AAAqmD,QAAI,EAAC;AAA1mD,IA1DJ,EA2DI;AAAM,KAAC,EAAC,gjCAAR;AAA0jC,QAAI,EAAGA,MAAjkC;AAA0kC,QAAI,EAAC;AAA/kC,IA3DJ,EA4DI;AAAM,KAAC,EAAC,23CAAR;AAAo4C,QAAI,EAAGA,MAA34C;AAAo5C,QAAI,EAAC;AAAz5C,IA5DJ,EA6DI;AAAM,KAAC,EAAC,usBAAR;AAAgtB,QAAI,EAAGA,MAAvtB;AAAguB,QAAI,EAAC;AAAruB,IA7DJ,EA8DI;AAAU,QAAI,EAAGA,MAAjB;AAA0B,QAAI,EAAC,eAA/B;AAA+C,UAAM,EAAC;AAAtD,IA9DJ,EA+DI;AAAM,KAAC,EAAC,+aAAR;AAAyb,QAAI,EAAGA,MAAhc;AAAyc,QAAI,EAAC;AAA9c,IA/DJ,EAgEI;AAAM,KAAC,EAAC,usBAAR;AAAitB,QAAI,EAAGA,MAAxtB;AAAiuB,QAAI,EAAC;AAAtuB,IAhEJ,EAiEI;AAAM,KAAC,EAAC,m9EAAR;AAA49E,QAAI,EAAGA,MAAn+E;AAA4+E,QAAI,EAAC;AAAj/E,IAjEJ,CAnBJ,CADJ,CADJ,CAxBJ,CADJ;AAsHH,C;;;;AC9JD;AAEA;AACA;AAEA,IAAME,gBAAgB,8CAChBxzD,sCAAiB,CAACF,KADF,IACW;AACzBkyD,SAAO,EAAK,SADa;AAEzBC,WAAS,EAAG,SAFa;AAGzBM,UAAQ,EAAI,SAHa;AAIzBW,YAAU,EAAE,SAJa;AAKzBG,SAAO,EAAK,SALa;AAMzBC,QAAM,EAAM;AANa,CADX,oBAShBtzD,sCAAiB,CAACC,GATF,IASS;AACvB+xD,SAAO,EAAK,SADW;AAEvBC,WAAS,EAAG,SAFW;AAGvBM,UAAQ,EAAI,SAHW;AAIvBW,YAAU,EAAE,SAJW;AAKvBG,SAAO,EAAK,SALW;AAMvBC,QAAM,EAAM;AANW,CATT,oBAiBhBtzD,sCAAiB,CAACJ,KAjBF,IAiBW;AACzBoyD,SAAO,EAAK,SADa;AAEzBC,WAAS,EAAG,SAFa;AAGzBM,UAAQ,EAAI,SAHa;AAIzBW,YAAU,EAAE,SAJa;AAKzBG,SAAO,EAAK,SALa;AAMzBC,QAAM,EAAM;AANa,CAjBX,oBAAtB;AA2BO,SAASG,QAAT,OAAmG;AAAA,MAA/EtB,SAA+E,QAA/EA,SAA+E;;AAEtG,MAAI,CAACqB,gBAAgB,CAACrB,SAAD,CAArB,EAAkC;AAC9B,UAAM,IAAI55C,KAAJ,SAAiB45C,SAAjB,0BAAN;AACH;;AAJqG,8BAM/BqB,gBAAgB,CAACrB,SAAD,CANe;AAAA,MAM9FH,OAN8F,yBAM9FA,OAN8F;AAAA,MAMrFC,SANqF,yBAMrFA,SANqF;AAAA,MAM1EM,QAN0E,yBAM1EA,QAN0E;AAAA,MAMhEW,UANgE,yBAMhEA,UANgE;AAAA,MAMpDG,OANoD,yBAMpDA,OANoD;AAAA,MAM3CC,MAN2C,yBAM3CA,MAN2C;AAQtG,SACI;AAAK,SAAK,EAAC,MAAX;AAAkB,UAAM,EAAC,MAAzB;AAAgC,WAAO,EAAC,WAAxC;AAAoD,WAAO,EAAC,KAA5D;AAAkE,SAAK,EAAC;AAAxE,KACI,+CACI;AAAM,KAAC,EAAC,wSAAR;AAAiT,MAAE,EAAC;AAApT,IADJ,EAEI;AAAgB,MAAE,EAAC,KAAnB;AAAyB,MAAE,EAAC,MAA5B;AAAmC,MAAE,EAAC,KAAtC;AAA4C,MAAE,EAAC,IAA/C;AAAoD,MAAE,EAAC;AAAvD,KACI;AAAM,kBAAatB,OAAnB;AAA6B,UAAM,EAAC;AAApC,IADJ,EAEI;AAAM,kBAAaC,SAAnB;AAA+B,UAAM,EAAC;AAAtC,IAFJ,CAFJ,EAMI;AAAgB,MAAE,EAAC,aAAnB;AAAiC,MAAE,EAAC,aAApC;AAAkD,MAAE,EAAC,aAArD;AAAmE,MAAE,EAAC,aAAtE;AAAoF,KAAC,EAAC,aAAtF;AAAoG,qBAAiB,EAAC,wGAAtH;AAA+N,MAAE,EAAC;AAAlO,KACI;AAAM,kBAAaM,QAAnB;AAA8B,UAAM,EAAC;AAArC,IADJ,EAEI;AAAM,kBAAaW,UAAnB;AAAgC,UAAM,EAAC;AAAvC,IAFJ,EAGI;AAAM,kBAAaG,OAAnB;AAA6B,UAAM,EAAC;AAApC,IAHJ,CANJ,EAWI;AAAM,KAAC,EAAC,+SAAR;AAAwT,MAAE,EAAC;AAA3T,IAXJ,CADJ,EAcI;AAAG,UAAM,EAAC,MAAV;AAAiB,oBAAa,GAA9B;AAAkC,QAAI,EAAC,MAAvC;AAA8C,iBAAU;AAAxD,KACI;AAAG,aAAS,EAAC;AAAb,KACI;AAAG,aAAS,EAAC;AAAb,KACI,4CACI;AAAM,MAAE,EAAC,QAAT;AAAkB,QAAI,EAAC;AAAvB,KACI;AAAK,QAAI,EAAC;AAAV,IADJ,CADJ,EAII;AAAG,MAAE,EAAC;AAAN,IAJJ,EAKI;AAAM,KAAC,EAAC,wSAAR;AAAiT,QAAI,EAAC,wBAAtT;AAA+U,QAAI,EAAC;AAApV,IALJ,CADJ,EAQI;AAAG,aAAS,EAAC,+BAAb;AAA6C,QAAI,EAAGC;AAApD,KACI;AAAS,UAAM,EAAC;AAAhB,IADJ,EAEI;AAAS,UAAM,EAAC;AAAhB,IAFJ,EAGI;AAAS,UAAM,EAAC;AAAhB,IAHJ,EAII;AAAM,KAAC,EAAC;AAAR,IAJJ,CARJ,EAcI;AAAG,aAAS,EAAC;AAAb,KACI;AAAM,MAAE,EAAC,QAAT;AAAkB,QAAI,EAAC;AAAvB,KACI;AAAK,QAAI,EAAC;AAAV,IADJ,CADJ,EAII;AAAK,QAAI,EAAC,wBAAV;AAAmC,QAAI,EAAC;AAAxC,IAJJ,EAKI;AAAM,KAAC,EAAC,+SAAR;AAAwT,QAAI,EAAC;AAA7T,IALJ,CAdJ,CADJ,CADJ,CAdJ,CADJ;AA2CH,C;;;;ACnFD;AAEA;AACA;AAEA,IAAMI,mBAAmB,oDACnB1zD,sCAAiB,CAACF,KADC,IACQ;AACzBkyD,SAAO,EAAK,SADa;AAEzBC,WAAS,EAAG;AAFa,CADR,uBAKnBjyD,sCAAiB,CAACC,GALC,IAKM;AACvB+xD,SAAO,EAAI,SADY;AAEvBC,WAAS,EAAE;AAFY,CALN,uBASnBjyD,sCAAiB,CAACJ,KATC,IASQ;AACzBoyD,SAAO,EAAI,SADc;AAEzBC,WAAS,EAAE;AAFc,CATR,uBAAzB;AAeO,SAAS0B,WAAT,OAAsG;AAAA,MAA/ExB,SAA+E,QAA/EA,SAA+E;;AAEzG,MAAI,CAACuB,mBAAmB,CAACvB,SAAD,CAAxB,EAAqC;AACjC,UAAM,IAAI55C,KAAJ,SAAiB45C,SAAjB,6BAAN;AACH;;AAJwG,8BAM1EuB,mBAAmB,CAACvB,SAAD,CANuD;AAAA,MAMjGH,OANiG,yBAMjGA,OANiG;AAAA,MAMxFC,SANwF,yBAMxFA,SANwF;AAQzG,SACI;AAAK,SAAK,EAAC,MAAX;AAAkB,UAAM,EAAC,MAAzB;AAAgC,WAAO,EAAC,WAAxC;AAAoD,WAAO,EAAC,KAA5D;AAAkE,SAAK,EAAC;AAAxE,KACI,+CACI;AAAS,MAAE,EAAC,QAAZ;AAAqB,UAAM,EAAC;AAA5B,IADJ,EAEI;AAAS,MAAE,EAAC,QAAZ;AAAqB,UAAM,EAAC;AAA5B,IAFJ,CADJ,EAKI;AAAG,MAAE,EAAC,QAAN;AAAe,UAAM,EAAC,MAAtB;AAA6B,oBAAa,GAA1C;AAA8C,QAAI,EAAC,MAAnD;AAA0D,iBAAU;AAApE,KACI;AAAG,MAAE,EAAC,wBAAN;AAAmC,aAAS,EAAC;AAA7C,KACI;AAAG,MAAE,EAAC,UAAN;AAAiB,aAAS,EAAC;AAA3B,KACI;AAAM,KAAC,EAAC,0xBAAR;AAAmyB,MAAE,EAAC,QAAtyB;AAA+yB,QAAI,EAAGD;AAAtzB,IADJ,EAEI;AAAM,KAAC,EAAC,inDAAR;AAA0nD,MAAE,EAAC,QAA7nD;AAAsoD,QAAI,EAAGA;AAA7oD,IAFJ,EAGI;AAAM,KAAC,EAAC,4xDAAR;AAAqyD,MAAE,EAAC,QAAxyD;AAAizD,QAAI,EAAGA;AAAxzD,IAHJ,EAII;AAAM,KAAC,EAAC,o0DAAR;AAA60D,MAAE,EAAC,QAAh1D;AAAy1D,QAAI,EAAGA;AAAh2D,IAJJ,EAKI;AAAM,KAAC,EAAC,8mCAAR;AAAunC,MAAE,EAAC,QAA1nC;AAAmoC,QAAI,EAAGA;AAA1oC,IALJ,EAMI;AAAM,KAAC,EAAC,07CAAR;AAAm8C,MAAE,EAAC,SAAt8C;AAAg9C,QAAI,EAAGA;AAAv9C,IANJ,EAOI;AAAG,MAAE,EAAC,UAAN;AAAiB,aAAS,EAAC;AAA3B,KACI;AAAM,MAAE,EAAC,QAAT;AAAkB,QAAI,EAAC;AAAvB,KACI;AAAK,QAAI,EAAC;AAAV,IADJ,CADJ,EAII;AAAG,MAAE,EAAC;AAAN,IAJJ,EAKI;AAAM,KAAC,EAAC,mwCAAR;AAA4wC,MAAE,EAAC,SAA/wC;AAAyxC,QAAI,EAAGA,OAAhyC;AAA0yC,QAAI,EAAC;AAA/yC,IALJ,CAPJ,EAcI;AAAM,KAAC,EAAC,+5FAAR;AAAw6F,MAAE,EAAC,SAA36F;AAAq7F,QAAI,EAAGC;AAA57F,IAdJ,EAeI;AAAM,KAAC,EAAC,qhBAAR;AAA8hB,MAAE,EAAC,SAAjiB;AAA2iB,QAAI,EAAGA;AAAljB,IAfJ,EAgBI;AAAG,MAAE,EAAC,UAAN;AAAiB,aAAS,EAAC;AAA3B,KACI;AAAM,MAAE,EAAC,QAAT;AAAkB,QAAI,EAAC;AAAvB,KACI;AAAK,QAAI,EAAC;AAAV,IADJ,CADJ,EAII;AAAG,MAAE,EAAC;AAAN,IAJJ,EAKI;AAAM,KAAC,EAAC,iiBAAR;AAA0iB,MAAE,EAAC,SAA7iB;AAAujB,QAAI,EAAGA,SAA9jB;AAA0kB,QAAI,EAAC;AAA/kB,IALJ,CAhBJ,CADJ,CADJ,CALJ,CADJ;AAoCH,C;;;;AChED;AAEA;AACA;AAEA,IAAM2B,kBAAkB,kDAClB5zD,sCAAiB,CAACF,KADA,IACS;AACzBkyD,SAAO,EAAI,SADc;AAEzBC,WAAS,EAAE;AAFc,CADT,sBAKlBjyD,sCAAiB,CAACC,GALA,IAKO;AACvB+xD,SAAO,EAAI,SADY;AAEvBC,WAAS,EAAE;AAFY,CALP,sBASlBjyD,sCAAiB,CAACJ,KATA,IASS;AACzBoyD,SAAO,EAAK,SADa;AAEzBC,WAAS,EAAG;AAFa,CATT,sBAAxB;AAeO,SAAS4B,UAAT,OAAqG;AAAA,MAA/E1B,SAA+E,QAA/EA,SAA+E;;AAExG,MAAI,CAACyB,kBAAkB,CAACzB,SAAD,CAAvB,EAAoC;AAChC,UAAM,IAAI55C,KAAJ,SAAiB45C,SAAjB,4BAAN;AACH;;AAJuG,8BAMzEyB,kBAAkB,CAACzB,SAAD,CANuD;AAAA,MAMhGH,OANgG,yBAMhGA,OANgG;AAAA,MAMvFC,SANuF,yBAMvFA,SANuF;AAQxG,SACI;AAAK,SAAK,EAAC,MAAX;AAAkB,UAAM,EAAC,MAAzB;AAAgC,WAAO,EAAC,WAAxC;AAAoD,WAAO,EAAC,KAA5D;AAAkE,SAAK,EAAC;AAAxE,KACI,+CACI;AAAS,MAAE,EAAC,QAAZ;AAAqB,UAAM,EAAC;AAA5B,IADJ,CADJ,EAII;AAAG,MAAE,EAAC,QAAN;AAAe,UAAM,EAAC,MAAtB;AAA6B,oBAAa,GAA1C;AAA8C,QAAI,EAAC,MAAnD;AAA0D,iBAAU;AAApE,KACI;AAAG,MAAE,EAAC,wBAAN;AAAmC,aAAS,EAAC;AAA7C,KACI;AAAG,MAAE,EAAC,aAAN;AAAoB,aAAS,EAAC;AAA9B,KACI;AAAM,KAAC,EAAC,ktBAAR;AAA2tB,MAAE,EAAC,QAA9tB;AAAuuB,QAAI,EAAGD;AAA9uB,IADJ,EAEI;AAAM,KAAC,EAAC,grBAAR;AAAyrB,MAAE,EAAC,QAA5rB;AAAqsB,QAAI,EAAGA;AAA5sB,IAFJ,EAGI;AAAM,KAAC,EAAC,8lCAAR;AAAumC,MAAE,EAAC,QAA1mC;AAAmnC,QAAI,EAAGA;AAA1nC,IAHJ,EAII;AAAM,KAAC,EAAC,kWAAR;AAA2W,MAAE,EAAC,QAA9W;AAAuX,QAAI,EAAGA;AAA9X,IAJJ,EAKI;AAAM,KAAC,EAAC,imCAAR;AAA0mC,MAAE,EAAC,QAA7mC;AAAsnC,QAAI,EAAGA;AAA7nC,IALJ,EAMI;AAAG,MAAE,EAAC,UAAN;AAAiB,aAAS,EAAC;AAA3B,KACI;AAAM,MAAE,EAAC,QAAT;AAAkB,QAAI,EAAC;AAAvB,KACI;AAAK,QAAI,EAAC;AAAV,IADJ,CADJ,EAII;AAAG,MAAE,EAAC;AAAN,IAJJ,EAKI;AAAM,KAAC,EAAC,qtDAAR;AAA8tD,MAAE,EAAC,SAAjuD;AAA2uD,QAAI,EAAGC,SAAlvD;AAA8vD,QAAI,EAAC;AAAnwD,IALJ,CANJ,CADJ,CADJ,CAJJ,CADJ;AAyBH,C;;;;ACrDD;AAEA;AACA;AAEA,IAAM6B,kBAAkB,kDAClB9zD,sCAAiB,CAACF,KADA,IACS;AACzBkyD,SAAO,EAAI,SADc;AAEzBC,WAAS,EAAE;AAFc,CADT,sBAKlBjyD,sCAAiB,CAACC,GALA,IAKO;AACvB+xD,SAAO,EAAI,SADY;AAEvBC,WAAS,EAAE;AAFY,CALP,sBASlBjyD,sCAAiB,CAACJ,KATA,IASS;AACzBoyD,SAAO,EAAK,SADa;AAEzBC,WAAS,EAAG;AAFa,CATT,sBAAxB;AAeO,SAAS8B,UAAT,OAAqG;AAAA,MAA/E5B,SAA+E,QAA/EA,SAA+E;;AAExG,MAAI,CAAC2B,kBAAkB,CAAC3B,SAAD,CAAvB,EAAoC;AAChC,UAAM,IAAI55C,KAAJ,SAAiB45C,SAAjB,4BAAN;AACH;;AAJuG,8BAMzE2B,kBAAkB,CAAC3B,SAAD,CANuD;AAAA,MAMhGH,OANgG,yBAMhGA,OANgG;AAAA,MAMvFC,SANuF,yBAMvFA,SANuF;AAQxG,SACI;AAAK,SAAK,EAAC,MAAX;AAAkB,UAAM,EAAC,MAAzB;AAAgC,WAAO,EAAC,WAAxC;AAAoD,WAAO,EAAC,KAA5D;AAAkE,SAAK,EAAC;AAAxE,KACI;AAAG,MAAE,EAAC,QAAN;AAAe,UAAM,EAAC,MAAtB;AAA6B,oBAAa,GAA1C;AAA8C,QAAI,EAAC,MAAnD;AAA0D,iBAAU;AAApE,KACI;AAAG,MAAE,EAAC,wBAAN;AAAmC,aAAS,EAAC;AAA7C,KACI;AAAG,MAAE,EAAC,iBAAN;AAAwB,aAAS,EAAC;AAAlC,KACI;AAAS,MAAE,EAAC,QAAZ;AAAqB,QAAI,EAAGD,OAA5B;AAAsC,UAAM,EAAC;AAA7C,IADJ,EAEI;AAAS,MAAE,EAAC,QAAZ;AAAqB,QAAI,EAAGA,OAA5B;AAAsC,UAAM,EAAC;AAA7C,IAFJ,EAGI;AAAS,MAAE,EAAC,QAAZ;AAAqB,QAAI,EAAGA,OAA5B;AAAsC,UAAM,EAAC;AAA7C,IAHJ,EAII;AAAS,MAAE,EAAC,QAAZ;AAAqB,QAAI,EAAGA,OAA5B;AAAsC,UAAM,EAAC;AAA7C,IAJJ,EAKI;AAAS,MAAE,EAAC,QAAZ;AAAqB,QAAI,EAAGA,OAA5B;AAAsC,UAAM,EAAC;AAA7C,IALJ,EAMI;AAAS,MAAE,EAAC,QAAZ;AAAqB,QAAI,EAAGA,OAA5B;AAAsC,UAAM,EAAC;AAA7C,IANJ,EAOI;AAAS,MAAE,EAAC,QAAZ;AAAqB,QAAI,EAAGA,OAA5B;AAAsC,UAAM,EAAC;AAA7C,IAPJ,EAQI;AAAS,MAAE,EAAC,QAAZ;AAAqB,QAAI,EAAGA,OAA5B;AAAsC,UAAM,EAAC;AAA7C,IARJ,EASI;AAAS,MAAE,EAAC,SAAZ;AAAsB,QAAI,EAAGA,OAA7B;AAAuC,UAAM,EAAC;AAA9C,IATJ,EAUI;AAAS,MAAE,EAAC,SAAZ;AAAsB,QAAI,EAAGA,OAA7B;AAAuC,UAAM,EAAC;AAA9C,IAVJ,EAWI;AAAS,MAAE,EAAC,SAAZ;AAAsB,QAAI,EAAGA,OAA7B;AAAuC,UAAM,EAAC;AAA9C,IAXJ,EAYI;AAAS,MAAE,EAAC,SAAZ;AAAsB,QAAI,EAAGA,OAA7B;AAAuC,UAAM,EAAC;AAA9C,IAZJ,EAaI;AAAS,MAAE,EAAC,SAAZ;AAAsB,QAAI,EAAGA,OAA7B;AAAuC,UAAM,EAAC;AAA9C,IAbJ,EAcI;AAAS,MAAE,EAAC,SAAZ;AAAsB,QAAI,EAAGA,OAA7B;AAAuC,UAAM,EAAC;AAA9C,IAdJ,EAeI;AAAS,MAAE,EAAC,SAAZ;AAAsB,QAAI,EAAGA,OAA7B;AAAuC,UAAM,EAAC;AAA9C,IAfJ,EAgBI;AAAS,MAAE,EAAC,SAAZ;AAAsB,QAAI,EAAGA,OAA7B;AAAuC,UAAM,EAAC;AAA9C,IAhBJ,EAiBI;AAAS,MAAE,EAAC,SAAZ;AAAsB,QAAI,EAAGA,OAA7B;AAAuC,UAAM,EAAC;AAA9C,IAjBJ,EAkBI;AAAS,MAAE,EAAC,SAAZ;AAAsB,QAAI,EAAGA,OAA7B;AAAuC,UAAM,EAAC;AAA9C,IAlBJ,EAmBI;AAAS,MAAE,EAAC,SAAZ;AAAsB,QAAI,EAAGA,OAA7B;AAAuC,UAAM,EAAC;AAA9C,IAnBJ,EAoBI;AAAS,MAAE,EAAC,SAAZ;AAAsB,QAAI,EAAGA,OAA7B;AAAuC,UAAM,EAAC;AAA9C,IApBJ,EAqBI;AAAS,MAAE,EAAC,SAAZ;AAAsB,QAAI,EAAGA,OAA7B;AAAuC,UAAM,EAAC;AAA9C,IArBJ,EAsBI;AAAS,MAAE,EAAC,SAAZ;AAAsB,QAAI,EAAGA,OAA7B;AAAuC,UAAM,EAAC;AAA9C,IAtBJ,EAuBI;AAAS,MAAE,EAAC,SAAZ;AAAsB,QAAI,EAAGA,OAA7B;AAAuC,UAAM,EAAC;AAA9C,IAvBJ,EAwBI;AAAS,MAAE,EAAC,SAAZ;AAAsB,QAAI,EAAGA,OAA7B;AAAuC,UAAM,EAAC;AAA9C,IAxBJ,EAyBI;AAAS,MAAE,EAAC,SAAZ;AAAsB,QAAI,EAAGA,OAA7B;AAAuC,UAAM,EAAC;AAA9C,IAzBJ,EA0BI;AAAS,MAAE,EAAC,SAAZ;AAAsB,QAAI,EAAGA,OAA7B;AAAuC,UAAM,EAAC;AAA9C,IA1BJ,EA2BI;AAAS,MAAE,EAAC,SAAZ;AAAsB,QAAI,EAAGA,OAA7B;AAAuC,UAAM,EAAC;AAA9C,IA3BJ,EA4BI;AAAS,MAAE,EAAC,SAAZ;AAAsB,QAAI,EAAGA,OAA7B;AAAuC,UAAM,EAAC;AAA9C,IA5BJ,EA6BI;AAAS,MAAE,EAAC,SAAZ;AAAsB,QAAI,EAAGA,OAA7B;AAAuC,UAAM,EAAC;AAA9C,IA7BJ,EA8BI;AAAS,MAAE,EAAC,SAAZ;AAAsB,QAAI,EAAGC,SAA7B;AAAyC,UAAM,EAAC;AAAhD,IA9BJ,EA+BI;AAAM,KAAC,EAAC,k0DAAR;AAA20D,MAAE,EAAC,SAA90D;AAAw1D,QAAI,EAAGD;AAA/1D,IA/BJ,EAgCI;AAAM,KAAC,EAAC,wpCAAR;AAAiqC,MAAE,EAAC,SAApqC;AAA8qC,QAAI,EAAGA;AAArrC,IAhCJ,EAiCI;AAAS,MAAE,EAAC,SAAZ;AAAsB,QAAI,EAAGA,OAA7B;AAAuC,UAAM,EAAC;AAA9C,IAjCJ,EAkCI;AAAM,KAAC,EAAC,+sCAAR;AAAwtC,MAAE,EAAC,SAA3tC;AAAquC,QAAI,EAAGA;AAA5uC,IAlCJ,EAmCI;AAAM,KAAC,EAAC,szBAAR;AAA+zB,MAAE,EAAC,SAAl0B;AAA40B,QAAI,EAAGA;AAAn1B,IAnCJ,EAoCI;AAAM,KAAC,EAAC,4oCAAR;AAAqpC,MAAE,EAAC,SAAxpC;AAAkqC,QAAI,EAAGA;AAAzqC,IApCJ,CADJ,CADJ,CADJ,CADJ;AA8CH,C;;;;AC1ED;AAEA;AACA;AAEA,IAAMgC,gBAAgB,8CAChBh0D,sCAAiB,CAACF,KADF,IACW;AACzBkyD,SAAO,EAAI,SADc;AAEzBC,WAAS,EAAE;AAFc,CADX,oBAKhBjyD,sCAAiB,CAACC,GALF,IAKS;AACvB+xD,SAAO,EAAI,SADY;AAEvBC,WAAS,EAAE;AAFY,CALT,oBAShBjyD,sCAAiB,CAACJ,KATF,IASW;AACzBoyD,SAAO,EAAI,SADc;AAEzBC,WAAS,EAAE;AAFc,CATX,oBAAtB;AAeO,SAASgC,QAAT,OAAmG;AAAA,MAA/E9B,SAA+E,QAA/EA,SAA+E;;AAEtG,MAAI,CAAC6B,gBAAgB,CAAC7B,SAAD,CAArB,EAAkC;AAC9B,UAAM,IAAI55C,KAAJ,SAAiB45C,SAAjB,0BAAN;AACH;;AAJqG,8BAMvE6B,gBAAgB,CAAC7B,SAAD,CANuD;AAAA,MAM9FH,OAN8F,yBAM9FA,OAN8F;AAAA,MAMrFC,SANqF,yBAMrFA,SANqF;AAQtG,SACI;AAAK,SAAK,EAAC,MAAX;AAAkB,UAAM,EAAC,MAAzB;AAAgC,WAAO,EAAC,WAAxC;AAAoD,WAAO,EAAC,KAA5D;AAAkE,SAAK,EAAC;AAAxE,KACI;AAAG,MAAE,EAAC,QAAN;AAAe,UAAM,EAAC,MAAtB;AAA6B,oBAAa,GAA1C;AAA8C,QAAI,EAAC,MAAnD;AAA0D,iBAAU;AAApE,KACI;AAAG,MAAE,EAAC,wBAAN;AAAmC,aAAS,EAAC;AAA7C,KACI;AAAG,MAAE,EAAC,WAAN;AAAkB,aAAS,EAAC;AAA5B,KACI;AAAM,KAAC,EAAC,6YAAR;AAAsZ,MAAE,EAAC,QAAzZ;AAAka,QAAI,EAAGA;AAAza,IADJ,EAEI;AAAS,MAAE,EAAC,QAAZ;AAAqB,QAAI,EAAC,SAA1B;AAAoC,UAAM,EAAC;AAA3C,IAFJ,EAGI;AAAM,KAAC,EAAC,kSAAR;AAA2S,MAAE,EAAC,QAA9S;AAAuT,QAAI,EAAGD;AAA9T,IAHJ,EAII;AAAM,KAAC,EAAC,oSAAR;AAA6S,MAAE,EAAC,QAAhT;AAAyT,QAAI,EAAGA;AAAhU,IAJJ,EAKI;AAAM,KAAC,EAAC,4pDAAR;AAAqqD,MAAE,EAAC,QAAxqD;AAAirD,QAAI,EAAGA;AAAxrD,IALJ,CADJ,CADJ,CADJ,CADJ;AAeH,C;;;;;;;;;;;;;;;;AC3CD;AAEA;AACA;AAEA,IAAMkC,kBAAkB,kDAClBl0D,sCAAiB,CAACN,IADA,IACQ;AACxBsyD,SAAO,EAAI,SADa;AAExBC,WAAS,EAAE;AAFa,CADR,sBAKlBjyD,sCAAiB,CAACF,KALA,IAKS;AACzBkyD,SAAO,EAAI,SADc;AAEzBC,WAAS,EAAE;AAFc,CALT,sBASlBjyD,sCAAiB,CAACJ,KATA,IASS;AACzBoyD,SAAO,EAAI,SADc;AAEzBC,WAAS,EAAE;AAFc,CATT,sBAAxB;AAeO,SAASkC,UAAT,OAAqG;AAAA,MAA/EhC,SAA+E,QAA/EA,SAA+E;;AAExG,MAAI,CAAC+B,kBAAkB,CAAC/B,SAAD,CAAvB,EAAoC;AAChC,UAAM,IAAI55C,KAAJ,SAAiB45C,SAAjB,4BAAN;AACH;;AAJuG,8BAMzE+B,kBAAkB,CAAC/B,SAAD,CANuD;AAAA,MAMhGH,OANgG,yBAMhGA,OANgG;AAAA,MAMvFC,SANuF,yBAMvFA,SANuF;AAQxG,SACI;AAAK,SAAK,EAAC,KAAX;AAAiB,UAAM,EAAC,IAAxB;AAA6B,WAAO,EAAC,YAArC;AAAkD,SAAK,EAAC,4BAAxD;AAAqF,uBAAmB,EAAC;AAAzG,KACI;AAAM,QAAI,EAAGD,OAAb;AAAuB,KAAC,EAAC;AAAzB,IADJ,EAEI;AAAM,QAAI,EAAGA,OAAb;AAAuB,KAAC,EAAC;AAAzB,IAFJ,EAGI;AAAM,QAAI,EAAGA,OAAb;AAAuB,KAAC,EAAC;AAAzB,IAHJ,EAII;AAAM,QAAI,EAAGC,SAAb;AAAyB,KAAC,EAAC;AAA3B,IAJJ,EAKI;AAAM,QAAI,EAAGA,SAAb;AAAyB,KAAC,EAAC;AAA3B,IALJ,EAMI;AAAM,QAAI,EAAGA,SAAb;AAAyB,KAAC,EAAC;AAA3B,IANJ,CADJ;AAUH,C;;;;ACrCD;AAEA;AACA;AAGA,IAAMmC,kBAAkB,kDAClBp0D,sCAAiB,CAACN,IADA,IACQ;AACxBsyD,SAAO,EAAI,SADa;AAExBC,WAAS,EAAE;AAFa,CADR,sBAKlBjyD,sCAAiB,CAACF,KALA,IAKS;AACzBkyD,SAAO,EAAI,SADc;AAEzBC,WAAS,EAAE;AAFc,CALT,sBASlBjyD,sCAAiB,CAACJ,KATA,IASS;AACzBoyD,SAAO,EAAI,SADc;AAEzBC,WAAS,EAAE;AAFc,CATT,sBAAxB;AAeO,SAASoC,UAAT,OAAmI;AAAA,MAA7GlC,SAA6G,QAA7GA,SAA6G;AAAA,MAAlGtyC,MAAkG,QAAlGA,MAAkG;;AAEtI,MAAI,CAACu0C,kBAAkB,CAACjC,SAAD,CAAvB,EAAoC;AAChC,UAAM,IAAI55C,KAAJ,SAAiB45C,SAAjB,4BAAN;AACH;;AAJqI,cAMlHtyC,MAAM,IAAI,EANwG;AAAA,MAM9HD,OAN8H,SAM9HA,OAN8H;;AAAA,MAO9HoyC,OAP8H,GAOlHoC,kBAAkB,CAACjC,SAAD,CAPgG,CAO9HH,OAP8H;;AAStI,UAAQpyC,OAAR;AACA,SAAKjX,4BAAO,CAAC8C,EAAb;AACI,aACI;AAAK,aAAK,EAAC,KAAX;AAAiB,cAAM,EAAC,IAAxB;AAA6B,eAAO,EAAC,YAArC;AAAkD,2BAAmB,EAAC,eAAtE;AAAsF,aAAK,EAAC;AAA5F,SACI;AAAG,iBAAS,EAAC,wCAAb;AAAsD,YAAI,EAAGumD;AAA7D,SACI;AAAG,iBAAS,EAAC;AAAb,SACI;AAAM,SAAC,EAAC;AAAR,QADJ,CADJ,CADJ,CADJ;;AASJ;AACI,aACI;AAAK,aAAK,EAAC,KAAX;AAAiB,cAAM,EAAC,IAAxB;AAA6B,eAAO,EAAC,WAArC;AAAiD,2BAAmB,EAAC,eAArE;AAAqF,aAAK,EAAC;AAA3F,SACI;AAAM,YAAI,EAAGA,OAAb;AAAuB,SAAC,EAAC;AAAzB,QADJ,EAEI;AAAM,YAAI,EAAGA,OAAb;AAAuB,SAAC,EAAC;AAAzB,QAFJ,EAGI;AAAM,YAAI,EAAGA,OAAb;AAAuB,SAAC,EAAC;AAAzB,QAHJ,EAII;AAAM,YAAI,EAAGA,OAAb;AAAuB,SAAC,EAAC;AAAzB,QAJJ,EAKI;AAAM,YAAI,EAAGA,OAAb;AAAuB,SAAC,EAAC;AAAzB,QALJ,EAMI;AAAM,YAAI,EAAGA,OAAb;AAAuB,SAAC,EAAC;AAAzB,QANJ,CADJ;AAZJ;AAwBH,C;;;;;;;;;;;;;;;;;;;;;;;;ACtDD;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEO,IAAMsC,YAAY,sCAEnBhzD,gCAAW,CAACC,EAFO,2CAGfvB,sCAAiB,CAACF,KAHH,IAGYy0D,kBAHZ,kBAIfv0D,sCAAiB,CAACN,IAJH,IAIY80D,iBAJZ,kBAKfx0D,sCAAiB,CAACJ,KALH,IAKY60D,kBALZ,kCAQnBnzD,gCAAW,CAACtD,MARO,IAQGm2D,UARH,gBAUnB7yD,gCAAW,CAACnD,MAVO,IAUGk2D,UAVH,gBAYnB/yD,gCAAW,CAAC/C,KAZO,iDAafyB,sCAAiB,CAACF,KAbH,IAaY40D,qBAbZ,qBAcf10D,sCAAiB,CAACN,IAdH,IAcYi1D,oBAdZ,qCAgBnBrzD,gCAAW,CAAC9C,IAhBO,+CAiBfwB,sCAAiB,CAACF,KAjBH,IAiBY80D,cAjBZ,oCAoBnBtzD,gCAAW,CAAC7C,KApBO,IAoBE+zD,SApBF,gBAsBnBlxD,gCAAW,CAAC5C,GAtBO,6CAuBfsB,sCAAiB,CAACC,GAvBH,IAuBY40D,aAvBZ,mBAwBf70D,sCAAiB,CAACF,KAxBH,IAwBYg1D,mBAxBZ,mCA2BnBxzD,gCAAW,CAAC3C,UA3BO,IA2BOq0D,cA3BP,gBA6BnB1xD,gCAAW,CAAC1C,OA7BO,IA6BI8zD,WA7BJ,gBA+BnBpxD,gCAAW,CAACzC,MA/BO,IA+BGwzD,UA/BH,gBAiCnB/wD,gCAAW,CAACxC,GAjCO,IAiCA8zD,OAjCA,gBAmCnBtxD,gCAAW,CAACvC,MAnCO,IAmCG+zD,UAnCH,gBAqCnBxxD,gCAAW,CAACtC,GArCO,IAqCAkzD,OArCA,gBAuCnB5wD,gCAAW,CAACrC,IAvCO,IAuCCk0D,QAvCD,gBAyCnB7xD,gCAAW,CAACpC,YAzCO,IAyCSq0D,gBAzCT,gBA2CnBjyD,gCAAW,CAACnC,IA3CO,IA2CCs0D,QA3CD,gBA6CnBnyD,gCAAW,CAAClC,OA7CO,IA6CIu0D,WA7CJ,gBA+CnBryD,gCAAW,CAACjC,MA/CO,IA+CGw0D,UA/CH,gBAiDnBvyD,gCAAW,CAAChC,MAjDO,IAiDGy0D,UAjDH,gBAmDnBzyD,gCAAW,CAAC/B,IAnDO,IAmDC00D,QAnDD,gBAAlB,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3BP;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEO,IAAMc,SAAS,gCAChB32D,yBAAI,CAACuD,IADW,IACGqzD,cADH,aAEhB52D,yBAAI,CAACyD,IAFW,IAEGozD,cAFH,aAGhB72D,yBAAI,CAACwD,UAHW,IAGGszD,oBAHH,aAIhB92D,yBAAI,CAAC4D,OAJW,IAIGmzD,iBAJH,aAKhB/2D,yBAAI,CAAC0D,QALW,IAKGszD,kBALH,aAMhBh3D,yBAAI,CAAC6D,KANW,IAMGozD,eANH,aAOhBj3D,yBAAI,CAAC8D,GAPW,IAOGozD,aAPH,aAQhBl3D,yBAAI,CAAC+D,GARW,IAQGozD,aARH,aAShBn3D,yBAAI,CAACgE,GATW,IASGozD,aATH,aAAf,C;;ACZP;AAAA;AAAA;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAEA,IAAMC,iBAAiB,GAAG,oBAA1B;AACA,IAAMC,WAAW,GAAS,oBAA1B;AACA,IAAMC,UAAU,GAAU,mBAA1B;AAEA,IAAInG,eAAJ;AAEO,SAAS/nC,eAAT,CAA4B1N,OAA5B,EAAmE;AAEtE,MAAM21C,mBAAmB,GAAGvC,2EAAqB,EAAjD;AACA,MAAIzlC,OAAJ;;AAEA,MAAI8nC,eAAJ,EAAqB;AACjB9nC,WAAO,GAAG8nC,eAAV;AACH;;AAED,MAAI,CAAC9nC,OAAD,IAAYgoC,mBAAhB,EAAqC;AACjC,QAAMC,UAAU,GAAG72C,MAAM,CAAC6P,YAAP,CAAoBC,OAApB,CAA4B6sC,iBAA5B,CAAnB;;AAEA,QAAI9F,UAAJ,EAAgB;AACZjoC,aAAO,GAAG/D,IAAI,CAACiD,KAAL,CAAW+oC,UAAX,CAAV;AACH;AACJ;;AAED,MAAI,CAACjoC,OAAL,EAAc;AACVA,WAAO,GAAG5O,MAAM,CAAC28C,iBAAD,CAAhB;AACH;;AAED,MAAI,CAAC/tC,OAAL,EAAc;AACVA,WAAO,GAAG;AACN2X,QAAE,EAAErK,8DAAQ;AADN,KAAV;AAGH;;AAED,MAAI,CAACtN,OAAO,CAAC2X,EAAb,EAAiB;AACb3X,WAAO,CAAC2X,EAAR,GAAarK,8DAAQ,EAArB;AACH;;AAEDw6B,iBAAe,GAAG9nC,OAAlB;AAEA,MAAMpQ,MAAM,GAAGyC,OAAO,CAAC2N,OAAD,CAAtB;;AAEA,MAAIgoC,mBAAJ,EAAyB;AACrB52C,UAAM,CAAC6P,YAAP,CAAoBykC,OAApB,CAA4BqI,iBAA5B,EAA+C9xC,IAAI,CAACC,SAAL,CAAe8D,OAAf,CAA/C;AACH,GAFD,MAEO;AACH5O,UAAM,CAAC28C,iBAAD,CAAN,GAA4B/tC,OAA5B;AACH;;AAED8nC,iBAAe,GAAG,IAAlB;AAEA,SAAOl4C,MAAP;AACH;AAEM,SAAS+Q,YAAT,GAAiC;AACpC,SAAOZ,eAAe,CAAC,UAAAC,OAAO;AAAA,WAAIA,OAAO,CAAC2X,EAAZ;AAAA,GAAR,CAAtB;AACH;AAEM,SAASwwB,UAAT,CAAuB91C,OAAvB,EAA4D;AAC/D,SAAO0N,eAAe,CAAC,UAAAC,OAAO,EAAI;AAE9B,QAAIqE,OAAO,GAAGrE,OAAO,CAACguC,WAAD,CAArB;AACA,QAAMt+B,GAAG,GAAOD,IAAI,CAACC,GAAL,EAAhB;;AAEA,QAAIrL,OAAO,IAAMqL,GAAG,GAAGrL,OAAO,CAACgkC,OAAf,GAA0BvyC,sDAAM,CAACyR,oBAAjD,EAAwE;AACpElD,aAAO,GAAG,IAAV;AACH;;AAED,QAAI,CAACA,OAAL,EAAc;AACVA,aAAO,GAAG;AACNikC,YAAI,EAAKh7B,8DAAQ,EADX;AAEN+6B,eAAO,EAAE34B;AAFH,OAAV;AAIH;;AAED1P,WAAO,CAACguC,WAAD,CAAP,GAAuB3pC,OAAvB;AAEA,WAAOhS,OAAO,CAACgS,OAAD,CAAd;AACH,GAnBqB,CAAtB;AAoBH;AAEM,SAASD,eAAT,CAA4B/R,OAA5B,EAAiE;AACpE,SAAO81C,UAAU,CAAC,UAAA9jC,OAAO,EAAI;AACzBA,WAAO,CAACzL,KAAR,GAAgByL,OAAO,CAACzL,KAAR,IAAiB,EAAjC;AACA,WAAOvG,OAAO,CAACgS,OAAO,CAACzL,KAAT,CAAd;AACH,GAHgB,CAAjB;AAIH;AAEM,SAASN,YAAT,GAAiC;AAEpC,MAAM6jC,MAAM,GAAG/qC,MAAM,CAAC+qC,MAAtB;;AAEA,MAAIA,MAAM,IAAIA,MAAM,CAACpjC,SAArB,EAAgC;AAC5B,WAAOojC,MAAM,CAACpjC,SAAd;AACH;;AAED,MAAMm1C,cAAc,GAAGv2C,kEAAa,CAAC,WAAD,CAApC;;AAEA,MAAIF,wEAAc,MAAMy2C,cAAxB,EAAwC;AACpC,WAAOA,cAAP;AACH;;AAED,SAAO/F,UAAU,CAAC,UAAA9jC,OAAO;AAAA,WAAIA,OAAO,CAACikC,IAAZ;AAAA,GAAR,CAAjB;AACH;AAEM,SAASpvC,kBAAT,GAAwC;AAE3C,MAAI9H,MAAM,CAAC+qC,MAAP,IAAiB/qC,MAAM,CAAC+qC,MAAP,CAAcljC,eAAnC,EAAoD;AAChD,WAAO7H,MAAM,CAAC+qC,MAAP,CAAcljC,eAArB;AACH;;AAED,MAAMi1C,cAAc,GAAGv2C,kEAAa,CAAC,iBAAD,CAApC;;AAEA,MAAIF,wEAAc,MAAMy2C,cAAxB,EAAwC;AACpC,WAAOA,cAAP;AACH;AACJ;AAEM,SAASzpC,cAAT,CAA2BpS,OAA3B,EAAgE;AACnEjB,QAAM,CAAC68C,UAAD,CAAN,GAAqB78C,MAAM,CAAC68C,UAAD,CAAN,IAAsB,EAA3C;AACA,SAAO57C,OAAO,CAACjB,MAAM,CAAC68C,UAAD,CAAP,CAAd;AACH,C;;;;;;;;;;;;;;;;;;;;;;;AC/Hc,SAASE,sBAAT,CAAgCr3B,IAAhC,EAAsC;AACnD,MAAIA,IAAI,KAAK,KAAK,CAAlB,EAAqB;AACnB,UAAM,IAAIs3B,cAAJ,CAAmB,2DAAnB,CAAN;AACD;;AAED,SAAOt3B,IAAP;AACD,C;;;;;ACNc,SAASu3B,yBAAT,CAAmC95B,MAAnC,EAA2C+5B,QAA3C,EAAqDC,UAArD,EAAiE/5B,UAAjE,EAA6Enf,OAA7E,EAAsF;AACnG,MAAIivB,IAAI,GAAG,EAAX;AACAj1B,QAAM,CAACC,IAAP,CAAYklB,UAAZ,EAAwBrD,OAAxB,CAAgC,UAAU3hB,GAAV,EAAe;AAC7C80B,QAAI,CAAC90B,GAAD,CAAJ,GAAYglB,UAAU,CAAChlB,GAAD,CAAtB;AACD,GAFD;AAGA80B,MAAI,CAACrQ,UAAL,GAAkB,CAAC,CAACqQ,IAAI,CAACrQ,UAAzB;AACAqQ,MAAI,CAACtQ,YAAL,GAAoB,CAAC,CAACsQ,IAAI,CAACtQ,YAA3B;;AAEA,MAAI,WAAWsQ,IAAX,IAAmBA,IAAI,CAACkqB,WAA5B,EAAyC;AACvClqB,QAAI,CAAC8lB,QAAL,GAAgB,IAAhB;AACD;;AAED9lB,MAAI,GAAGiqB,UAAU,CAACrsC,KAAX,GAAmBusC,OAAnB,GAA6BC,MAA7B,CAAoC,UAAUpqB,IAAV,EAAgBqqB,SAAhB,EAA2B;AACpE,WAAOA,SAAS,CAACp6B,MAAD,EAAS+5B,QAAT,EAAmBhqB,IAAnB,CAAT,IAAqCA,IAA5C;AACD,GAFM,EAEJA,IAFI,CAAP;;AAIA,MAAIjvB,OAAO,IAAIivB,IAAI,CAACkqB,WAAL,KAAqB,KAAK,CAAzC,EAA4C;AAC1ClqB,QAAI,CAAC3zB,KAAL,GAAa2zB,IAAI,CAACkqB,WAAL,GAAmBlqB,IAAI,CAACkqB,WAAL,CAAiBj9C,IAAjB,CAAsB8D,OAAtB,CAAnB,GAAoD,KAAK,CAAtE;AACAivB,QAAI,CAACkqB,WAAL,GAAmBz+C,SAAnB;AACD;;AAED,MAAIu0B,IAAI,CAACkqB,WAAL,KAAqB,KAAK,CAA9B,EAAiC;AAC/Bn/C,UAAM,CAAC0kB,cAAP,CAAsBQ,MAAtB,EAA8B+5B,QAA9B,EAAwChqB,IAAxC;AACAA,QAAI,GAAG,IAAP;AACD;;AAED,SAAOA,IAAP;AACD,C;;;;;;;;;;;ACzBD;AACA;AAGA;;AAaA,SAAS2f,OAAT,CAAiBhxB,GAAjB,EAA6C;AAEzC,MAAIixB,KAAK,GAAG,EAAZ;AACA,MAAIC,OAAO,GAAG,KAAd;AAEA,SAAO;AAEH9vB,OAFG,eAEYrlB,IAFZ,EAE2BkC,IAF3B,EAEyC;AAExC,UAAIizC,OAAJ,EAAa;AACT,eAAOjzC,IAAP;AACH;;AAED+hB,SAAG,CAACjkB,IAAD,CAAH,GAAYkC,IAAZ;AACA,WAAKkzC,QAAL,CAAc,YAAM;AAChB,eAAOnxB,GAAG,CAACjkB,IAAD,CAAV;AACH,OAFD;AAGA,aAAOkC,IAAP;AACH,KAbE;AAeHkzC,YAfG,oBAeMp1C,IAfN,EAegCoG,MAfhC,EAeoD;AAEnD,UAAI,OAAOpG,IAAP,KAAgB,UAApB,EAAgC;AAC5BoG,cAAM,GAAGpG,IAAT;AACAA,YAAI,GAAG,6BAAP;AACH;;AAED,UAAI,OAAOoG,MAAP,KAAkB,UAAtB,EAAkC;AAC9B,cAAM,IAAIR,SAAJ,oDAAN;AACH;;AAED,UAAIuvC,OAAJ,EAAa;AACT/uC,cAAM;AACN;AACH;;AAED8uC,WAAK,CAACnyC,IAAN,CAAW;AACP68C,gBAAQ,EAAE,KADH;AAGP5/C,YAAI,EAAJA,IAHO;AAKP6/C,WALO,iBAKD;AAEF,cAAI,KAAKD,QAAT,EAAmB;AACf;AACH;;AAED,eAAKA,QAAL,GAAgB,IAAhB;;AAEA,cAAIx5C,MAAJ,EAAY;AACRA,kBAAM;AACT;AACJ;AAhBM,OAAX;AAkBH,KAjDE;AAmDH05C,YAnDG,sBAmDkB;AACjB,aAAOlsC,OAAO,CAACshC,KAAK,CAAC30C,MAAN,CAAa,UAAA2B,IAAI;AAAA,eAAI,CAACA,IAAI,CAAC09C,QAAV;AAAA,OAAjB,EAAqCz8C,MAAtC,CAAd;AACH,KArDE;AAuDH0C,OAvDG,iBAuDwB;AACvB,UAAIG,OAAO,GAAG,EAAd;AAEAmvC,aAAO,GAAG,IAAV;;AAEA,aAAOD,KAAK,CAAC/xC,MAAb,EAAqB;AACjB6C,eAAO,CAACjD,IAAR,CAAamyC,KAAK,CAACI,GAAN,GAAYuK,GAAZ,EAAb;AACH;;AAED,aAAO77C,yCAAY,CAAC6B,GAAb,CAAiBG,OAAjB,EAA0BxD,IAA1B,CAA+B,YAAM;AAAE;AAAY,OAAnD,CAAP;AACH,KAjEE;AAmEHq9C,OAnEG,eAmEC7/C,IAnED,EAmEqC;AACpC,UAAIgG,OAAO,GAAG,EAAd;;AADoC,8BAGnBkvC,KAHmB,gBAGZ;AAAnB,YAAIhzC,IAAI,GAAIgzC,KAAJ,KAAR;;AACD,YAAIhzC,IAAI,CAAClC,IAAL,KAAcA,IAAlB,EAAwB;AACpBgG,iBAAO,CAACjD,IAAR,CAAab,IAAI,CAAC29C,GAAL,EAAb;AACH;AACJ;;AAED,aAAO77C,yCAAY,CAAC6B,GAAb,CAAiBG,OAAjB,EAA0BxD,IAA1B,CAA+B0E,mBAA/B,CAAP;AACH;AA7EE,GAAP;AA+EH;AAGD;;;;;;;;AAOO,IAAM64C,kBAAb;AAAA;AAAA;AAMI,2BAAc;AAAA,SAJdvwB,KAIc;AAAA,SAHdxP,KAGc;AAAA,SAFdggC,SAEc;AACV,SAAKxwB,KAAL,GAAaylB,OAAO,CAAC,IAAD,CAApB;AACA,SAAKj1B,KAAL,GAAa6G,mCAAY,EAAzB;AACH;;AATL;;AAAA,SAWIo5B,OAXJ,GAWI,iBAAQrvC,OAAR,EAA0B5Q,IAA1B,EAAyCiU,GAAzC,EAAsD;AAClDqR,mCAAQ,CAAC1U,OAAD,EAAU,IAAV,EAAgB5Q,IAAhB,EAAsBiU,GAAtB,CAAR;AACH,GAbL;;AAAA,SAeI7M,EAfJ,GAeI,YAAG2f,SAAH,EAAuB1jB,OAAvB,EAA8D;AAC1D,WAAO,KAAK2c,KAAL,CAAW5Y,EAAX,CAAc2f,SAAd,EAAyB1jB,OAAzB,CAAP;AACH,GAjBL;;AAAA,SAmBI69B,SAnBJ,GAmBI,qBAAY;AACR,UAAM,IAAIr/B,KAAJ,wCAAN;AACH,GArBL;;AAAA,SAuBIuC,KAvBJ,GAuBI,eAAM3B,GAAN,EAAwC;AACpC,UAAM,IAAIZ,KAAJ,6CAAqD+kB,qCAAc,CAACnkB,GAAD,CAAnE,CAAN;AACH;AAED;;;;;;AA3BJ;;AAAA,SAoCI0+B,MApCJ,GAoCI,gBAAOx6B,GAAP,EAAoCU,MAApC,EAA8D;AAAA;;AAE1D,QAAI,CAACV,GAAL,EAAU;AACN,YAAM,KAAKq5C,SAAL,CAAeE,WAAf,+BAAN;AACH;;AAED,QAAI,CAAC74C,MAAL,EAAa;AACT,YAAM,IAAIxF,KAAJ,iCAAN;AACH;;AAED,QAAI,CAAC,KAAKq/B,SAAV,EAAqB;AACjB;AACH;;AAED,QAAIA,SAAS,GAAG,KAAKA,SAAL,EAAhB;;AAd0D;AAgBrD,UAAIif,YAAY,qBAAhB;AAED,UAAIngD,IAAI,GAAGmgD,YAAY,CAACrgD,OAAb,CAAqB,QAArB,EAA+B,EAA/B,CAAX;;AAEA,UAAI4nC,YAAY,GAAG,SAAfA,YAAe,CAACjlC,GAAD,EAAS;AACxB,aAAI,CAAC2B,KAAL,CAAW3B,GAAX;AACH,OAFD;;AAIA,UAAIykB,QAAQ,GAAG9f,iBAAE,CAAC+4C,YAAD,EAAe;AAAE/9C,cAAM,EAAEuE,GAAV;AAAeU,cAAM,EAANA,MAAf;AAAuBqgC,oBAAY,EAAZA;AAAvB,OAAf,EAAsD,gBAAsB;AAAA,YAAnBhgC,MAAmB,QAAnBA,MAAmB;AAAA,YAAXH,IAAW,QAAXA,IAAW;;AACzF,aAAI,CAACy4C,SAAL,CAAejzC,GAAf,eAAgC/M,IAAhC;;AACA,eAAOkhC,SAAS,CAACif,YAAD,CAAT,CAAwB59C,IAAxB,CAA6B,KAA7B,EAAmCmF,MAAnC,EAA2CH,IAA3C,CAAP;AACH,OAHgB,CAAjB;AAKA,UAAI64C,aAAa,GAAGh5C,iBAAE,CAAC+4C,YAAD,EAAe;AAAE/9C,cAAM,EAAEuE,GAAV;AAAe+gC,oBAAY,EAAZA;AAAf,OAAf,EAA8C,iBAAgB;AAAA,YAAbrO,MAAa,SAAbA,MAAa;;AAChF,aAAI,CAAC2mB,SAAL,CAAe7rB,QAAf,0BAAgDn0B,IAAhD,EAAyD;AAAEq5B,gBAAM,EAANA,MAAF;AAAUhyB,gBAAM,EAAEA,MAAM,CAACxH,QAAP;AAAlB,SAAzD;;AACA,aAAI,CAACuE,KAAL,CAAW,IAAIvC,KAAJ,iBAAyB7B,IAAzB,6BAAuDq5B,MAAvD,kCAA4FhyB,MAAM,CAACxH,QAAP,EAA5F,CAAX;AACH,OAHqB,CAAtB;;AAKA,WAAI,CAAC2vB,KAAL,CAAW4lB,QAAX,CAAoB,YAAM;AACtBluB,gBAAQ,CAAC5jB,MAAT;AACA88C,qBAAa,CAAC98C,MAAd;AACH,OAHD;AAlCsD;;AAAA,sCAgBjCjD,MAAM,CAACC,IAAP,CAAY4gC,SAAZ,CAhBiC,qCAgBT;AAAA;AAsBhD;AACJ,GA3EL;;AAAA;AAAA,I;;;;;;;;;;;;;;;;;;AC/GA;AACA;AAEA;AACA;;AAIA,SAASmf,SAAT,CAAmBz8B,GAAnB,EAA0C;AACtC,SAAOA,GAAG,CAAC9jB,OAAJ,CAAY,gCAAZ,EAA8C,EAA9C,EAAkDA,OAAlD,CAA0D,gBAA1D,EAA4E,GAA5E,CAAP;AACH;;AAED,SAASwgD,MAAT,CAAgB18B,GAAhB,EAAuC;AACnC,SAAO28B,gBAAM,CAACD,MAAP,CAAc18B,GAAd,EAAmB9jB,OAAnB,CAA2B,KAA3B,EAAkC,EAAlC,EAAsCgP,WAAtC,EAAP,CADmC,CACyB;AAC/D;;AAED,SAAS0xC,MAAT,CAAgB58B,GAAhB,EAAuC;AACnC,SAAO28B,gBAAM,CAACC,MAAP,CAAc58B,GAAG,CAAClG,WAAJ,EAAd,CAAP;AACH;AAGD;;;;;;;;;;;;;AAYO,SAAS+iC,2BAAT,CAA8BzgD,IAA9B,EAA6CsK,OAA7C,EAA+DsG,OAA/D,EAA+F;AAAA,MAAhCA,OAAgC;AAAhCA,WAAgC,GAAb,EAAa;AAAA;;AAElGA,SAAO,CAAC+X,EAAR,GAAarK,+BAAQ,EAArB;AACA1N,SAAO,CAACvJ,MAAR,GAAiBR,mDAAS,CAACzE,MAAD,CAA1B;AAEA,MAAIs+C,WAAW,GAAGL,SAAS,CAACrgD,IAAD,CAA3B;AACA,MAAI2gD,cAAc,GAAGN,SAAS,CAAC/1C,OAAD,CAA9B;AACA,MAAIs2C,cAAc,GAAGN,MAAM,CAACrzC,IAAI,CAACC,SAAL,CAAe0D,OAAf,CAAD,CAA3B;;AAEA,MAAI,CAAC8vC,WAAL,EAAkB;AACd,UAAM,IAAI7+C,KAAJ,oBAA4B7B,IAA5B,6CAAN;AACH;;AAED,MAAI,CAAC2gD,cAAL,EAAqB;AACjB,UAAM,IAAI9+C,KAAJ,uBAA+ByI,OAA/B,6CAAN;AACH;;AAED,SAAO,CACH,YADG,EAEHo2C,WAFG,EAGHC,cAHG,EAIHC,cAJG,EAKH,EALG,EAMLlgD,IANK,CAMA,IANA,CAAP;AAOH;AAEM,IAAImgD,qBAAqB,GAAG7tC,8BAAO,CAAC,YAAM;AAC7C,MAAI,CAAC5Q,MAAM,CAACpC,IAAZ,EAAkB;AACd,WAAO,KAAP;AACH;;AAH4C,2BAK1BoC,MAAM,CAACpC,IAAP,CAAY2O,KAAZ,CAAkB,IAAlB,CAL0B;AAAA,MAKvCmyC,QALuC;;AAO7C,MAAIA,QAAQ,KAAK,YAAjB,EAA+B;AAC3B,WAAO,KAAP;AACH;;AAED,SAAO,IAAP;AACH,CAZyC,CAAnC;AAcP;;;;;;;AAOO,IAAIC,gBAAgB,GAAG/tC,8BAAO,CAAC,YAAM;AAExC,MAAI,CAAC5Q,MAAM,CAACpC,IAAZ,EAAkB;AACd,UAAM,IAAI6B,KAAJ,kDAAN;AACH;;AAJuC,4BAMUO,MAAM,CAACpC,IAAP,CAAY2O,KAAZ,CAAkB,IAAlB,CANV;AAAA,MAMlCmyC,QANkC;AAAA,MAMxB9gD,IANwB;AAAA,MAMlBsK,OANkB;AAAA,MAMTs2C,cANS;;AAQxC,MAAIE,QAAQ,KAAK,YAAjB,EAA+B;AAC3B,UAAM,IAAIj/C,KAAJ,wCAAgDi/C,QAAhD,CAAN;AACH;;AAED,MAAIE,aAAJ;;AAEA,MAAI;AACAA,iBAAa,GAAG/zC,IAAI,CAACiD,KAAL,CAAWswC,MAAM,CAACI,cAAD,CAAjB,CAAhB;AACH,GAFD,CAEE,OAAOn+C,GAAP,EAAY;AACV,UAAM,IAAIZ,KAAJ,qCAA6C++C,cAA7C,SAAiEh6B,qCAAc,CAACnkB,GAAD,CAA/E,CAAN;AACH;;AAEDu+C,eAAa,CAAChhD,IAAd,GAAqBA,IAArB;AACAghD,eAAa,CAAC12C,OAAd,GAAwBA,OAAO,CAACxK,OAAR,CAAgB,IAAhB,EAAsB,GAAtB,CAAxB;AAEA,SAAOkhD,aAAP;AACH,CAxBoC,CAA9B;AA0BA,SAASl5C,sBAAT,GAAoC;AACvC,SAAOi5C,gBAAgB,GAAG15C,MAA1B,CADuC,CACL;AACrC;;AAED,SAAS45C,cAAT,OAA4H;AAAA,MAAlGC,GAAkG,QAAlGA,GAAkG;AAAA,MAA7F73C,GAA6F,QAA7FA,GAA6F;AAAA,MAAxFkvB,QAAwF,QAAxFA,QAAwF;AAExH,MAAI33B,MAAJ;;AAEA,MAAIsgD,GAAG,KAAKrlB,8BAAiB,CAACC,MAA9B,EAAsC;AAClCl7B,UAAM,GAAGo0B,mDAAS,CAAC5yB,MAAD,CAAlB;AAEH,GAHD,MAGO,IAAI8+C,GAAG,KAAKrlB,8BAAiB,CAACE,GAA9B,EAAmC;AACtCn7B,UAAM,GAAGm1B,gDAAM,CAAC3zB,MAAD,CAAf;AAEH,GAHM,MAGA,IAAI8+C,GAAG,KAAKrlB,8BAAiB,CAACG,MAA9B,EAAsC;AAEzC,QAAIzD,QAAJ,EAAc;AACV33B,YAAM,GAAG83B,6DAAmB,CAACt2B,MAAD,EAASm2B,QAAT,CAA5B;AACH,KAFD,MAEO;AACH33B,YAAM,GAAGwH,mDAAS,CAAChG,MAAD,CAAlB;AACH;AACJ;;AAED,MAAI8+C,GAAG,KAAKrlB,8BAAiB,CAACI,MAA9B,EAAsC;AAClC,QAAItE,QAAQ,GAAGF,qDAAW,CAACr1B,MAAD,CAA1B;;AAEA,QAAIu1B,QAAJ,EAAc;AAAA,iDACQzB,8DAAoB,CAACyB,QAAD,CAD5B,8CACwC;AAA7C,YAAI9M,KAAK,8BAAT;AACD,YAAInV,MAAM,GAAG0e,gCAAS,CAACvJ,KAAD,CAAtB;;AAEA,YAAInV,MAAM,IAAIA,MAAM,CAACyrC,OAAjB,IAA4BzrC,MAAM,CAACyrC,OAAP,CAAe93C,GAAf,CAAhC,EAAqD;AACjDzI,gBAAM,GAAG8U,MAAM,CAACyrC,OAAP,CAAe93C,GAAf,CAAT;AACA;AACH;AACJ;AACJ;AACJ;;AAED,MAAI,CAACzI,MAAL,EAAa;AACT,UAAM,IAAIiB,KAAJ,gCAAN;AACH;;AAED,SAAOjB,MAAP;AACH;AAED;;;;;;;AAMO,IAAIwgD,+BAAwB,GAAGpuC,8BAAO,CAAC,YAAM;AAEhD,MAAIguC,aAAa,GAAGD,gBAAgB,EAApC;;AAEA,MAAI,CAACC,aAAL,EAAoB;AAChB,UAAM,IAAIn/C,KAAJ,qEAAN;AACH;;AAED,SAAOo/C,cAAc,CAACD,aAAa,CAACK,eAAf,CAArB;AACH,CAT4C,CAAtC;AAYA,IAAIC,4BAAqB,GAAGtuC,8BAAO,CAAC,YAAM;AAE7C,MAAIguC,aAAa,GAAGD,gBAAgB,EAApC;;AAEA,MAAI,CAACC,aAAL,EAAoB;AAChB,UAAM,IAAIn/C,KAAJ,qEAAN;AACH;;AAED,SAAOo/C,cAAc,CAACD,aAAa,CAACO,YAAf,CAArB;AACH,CATyC,CAAnC;AAYP;;;;;;;;;;;;AAYO,SAASC,WAAT,QAAwE;AAAA,MAAjD90B,KAAiD,SAAjDA,KAAiD;AAAA,MAA1CC,MAA0C,SAA1CA,MAA0C;AAE3E,MAAI80B,CAAC,GAAG,CAAR;AACA,MAAIC,CAAC,GAAG,CAAR;;AAEA,MAAIh1B,KAAJ,EAAW;AACP,QAAItqB,MAAM,CAAC60C,UAAX,EAAuB;AACnBwK,OAAC,GAAGvwC,IAAI,CAACsxB,KAAL,CAAW,CAACpgC,MAAM,CAAC60C,UAAP,GAAoBvqB,KAArB,IAA8B,CAAzC,IAA8CtqB,MAAM,CAAC80C,OAAzD;AACH,KAFD,MAEO,IAAI90C,MAAM,CAAC+zC,MAAP,CAAczpB,KAAlB,EAAyB;AAC5B+0B,OAAC,GAAGvwC,IAAI,CAACsxB,KAAL,CAAW,CAACpgC,MAAM,CAAC+zC,MAAP,CAAczpB,KAAd,GAAsBA,KAAvB,IAAgC,CAA3C,CAAJ;AACH;AACJ;;AAED,MAAIC,MAAJ,EAAY;AACR,QAAIvqB,MAAM,CAAC+0C,WAAX,EAAwB;AACpBuK,OAAC,GAAGxwC,IAAI,CAACsxB,KAAL,CAAW,CAACpgC,MAAM,CAAC+0C,WAAP,GAAqBxqB,MAAtB,IAAgC,CAA3C,IAAgDvqB,MAAM,CAACg1C,OAA3D;AACH,KAFD,MAEO,IAAIh1C,MAAM,CAAC+zC,MAAP,CAAcxpB,MAAlB,EAA0B;AAC7B+0B,OAAC,GAAGxwC,IAAI,CAACsxB,KAAL,CAAW,CAACpgC,MAAM,CAAC+zC,MAAP,CAAcxpB,MAAd,GAAuBA,MAAxB,IAAkC,CAA7C,CAAJ;AACH;AACJ;;AAED,SAAO;AAAE80B,KAAC,EAADA,CAAF;AAAKC,KAAC,EAADA;AAAL,GAAP;AACH,C;;;;;ACvND;AAKO,SAASC,kBAAT,CAAkC3B,SAAlC,EAA4D//C,KAA5D,EAA4FO,GAA5F,EAA0GmB,KAA1G,EAA2H;AAE9H;AACA,MAAIyiB,IAAiC,GAAG47B,SAAS,CAAC4B,OAAV,CAAkBphD,GAAlB,CAAxC;;AAEA,MAAI,CAAC4jB,IAAL,EAAW;AACP,QAAI47B,SAAS,CAAC6B,UAAd,EAA0B;AACtB,aAAOlgD,KAAP;AACH,KAFD,MAEO;AACH;AACH;AACJ;;AAED,MAAI,OAAOyiB,IAAI,CAACqpB,aAAZ,KAA8B,UAAlC,EAA8C;AAC1C,WAAOrpB,IAAI,CAACqpB,aAAL,CAAmB9rC,KAAnB,CAAP;AACH;;AAED,SAAOA,KAAP;AACH;AAGM,SAASmgD,mBAAT,CAAgC9B,SAAhC,EAA0D//C,KAA1D,EAA0Fo5B,MAA1F,EAA2G4T,QAA3G,EAA+J;AAAA,MAApDA,QAAoD;AAApDA,YAAoD,GAA/B,IAA+B;AAAA;;AAElK,MAAIrsC,MAAM,GAAG,EAAb;;AAFkK,oCAIlJP,MAAM,CAACC,IAAP,CAAYL,KAAZ,CAJkJ,qCAI9H;AAA/B,QAAIO,GAAG,qBAAP;AAED,QAAI4jB,IAAI,GAAG47B,SAAS,CAAC4B,OAAV,CAAkBphD,GAAlB,CAAX;AACA,QAAImB,KAAK,GAAG1B,KAAK,CAACO,GAAD,CAAjB;;AAEA,QAAI4jB,IAAI,IAAIA,IAAI,CAAC0qB,UAAb,IAA2BzV,MAAM,KAAKxyB,mDAAS,CAACzE,MAAD,CAAnD,EAA6D;AACzD;AACH;;AAEDxB,UAAM,CAACJ,GAAD,CAAN,GAAcmhD,kBAAkB,CAAC3B,SAAD,EAAY//C,KAAZ,EAAmBO,GAAnB,EAAwBmB,KAAxB,CAAhC;;AAEA,QAAIyiB,IAAI,IAAIA,IAAI,CAACspB,KAAb,IAAsB,CAAC9sC,MAAM,CAACwjB,IAAI,CAACspB,KAAN,CAAjC,EAA+C;AAC3C9sC,YAAM,CAACwjB,IAAI,CAACspB,KAAN,CAAN,GAAqB/rC,KAArB;AACH;AACJ;;AAED,MAAIsrC,QAAJ,EAAc;AAAA,+CACM+S,SAAS,CAAC+B,YAAV,EADN,8CACgC;AAArC,UAAIvhD,IAAG,8BAAP;;AACD,UAAI,CAACP,KAAK,CAACoM,cAAN,CAAqB7L,IAArB,CAAL,EAAgC;AAC5BI,cAAM,CAACJ,IAAD,CAAN,GAAcmhD,kBAAkB,CAAC3B,SAAD,EAAY//C,KAAZ,EAAmBO,IAAnB,EAAwBP,KAAK,CAACO,IAAD,CAA7B,CAAhC;AACH;AACJ;AACJ,GA1BiK,CA4BlK;;;AACA,SAAOI,MAAP;AACH,C;;;;;;ACzDD;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAIA;;AAOA;;;;;;;;;AAUO,IAAMohD,oBAAb;AAAA;AAAA;AAAA;;AAWI,0BAAYhC,SAAZ,EAAsC;AAAA;;AAClC;AADkC,UATtCA,SASsC;AAAA,UARtC//C,KAQsC;AAAA,UAPtCoG,OAOsC;AAAA,UALtC47C,cAKsC;AAAA,UAJtCC,MAIsC;AAAA,UAHtCC,iBAGsC;AAAA,UAFtCC,UAEsC;AAElC,UAAKpC,SAAL,GAAiBA,SAAjB;;AAEA,QAAI,CAAC,MAAKqC,oBAAL,EAAL,EAAkC;AAC9B,YAAKj+C,KAAL,CAAW,IAAIk+C,gCAAJ,qCAAmD,MAAKx6C,eAAL,EAAnD,CAAX;;AACA;AACH;;AAED,UAAKk4C,SAAL,CAAejzC,GAAf,oBATkC,CAWlC;AACA;AACA;;;AAEA,UAAKk1C,cAAL,GAAsB,EAAtB;;AAfkC;AAiB7B,UAAI//C,IAAI,aAAR;;AAjB6B;AAAA;AAAA,YAkBnBlC,IAlBmB;AAAA,YAkBb00C,MAlBa;AAmB1B;AACAr0C,cAAM,CAAC0kB,cAAP,CAAsB7iB,IAAtB,EAA4BlC,IAA5B,EAAkC;AAC9BglB,sBAAY,EAAE,IADgB;AAE9BrU,aAAG,EAAW,eAAM;AAChB,gBAAI,CAAC,MAAK1Q,KAAV,EAAiB;AACb,oBAAKsiD,QAAL,CAAc,MAAKC,eAAL,EAAd,EAAsC16C,sBAAe,EAArD;AACH,aAHe,CAIhB;;;AACA,mBAAO5F,IAAI,CAAClC,IAAD,CAAX,CALgB,CAMhB;;AACAkC,gBAAI,CAAClC,IAAD,CAAJ,GAAa00C,MAAM,EAAnB,CAPgB,CAQhB;;AACA,mBAAOxyC,IAAI,CAAClC,IAAD,CAAX;AACH;AAZ6B,SAAlC;AApB0B;;AAAA,gCAkBD,CAAE,CAAE,QAAF,EAAY;AAAA;AAAA,OAAZ,CAAF,EAA4B,CAAE,QAAF,EAAY;AAAA,eAAM,MAAKC,KAAX;AAAA,OAAZ,CAA5B,CAlBC,6BAkB6D;AAAA;AAgB1F;AAlC6B;;AAAA,8BAiBjB,CAAE,MAAK+/C,SAAP,EAAkB59C,MAAlB,CAjBiB,6BAiBW;AAAA;AAkB5C;;AAED,UAAK49C,SAAL,CAAejzC,GAAf;;AAEA,UAAK01C,UAAL,GAvCkC,CAyClC;AACA;AACA;AACA;AACA;AACA;;;AAEA,UAAKP,MAAL,GAAc,MAAK3a,YAAL,CAAkB/M,yBAAY,CAACC,IAA/B,EAAqC;AAE/CioB,aAAO,EAAE,MAAKA,OAAL;AAFsC,KAArC,EAIXlgD,IAJW,CAIN,iBAAsB;AAAA,UAAnB62B,MAAmB,SAAnBA,MAAmB;AAAA,UAAX9xB,IAAW,SAAXA,IAAW;AAE1B,YAAKlB,OAAL,GAAekB,IAAI,CAAClB,OAApB;;AACA,YAAKk8C,QAAL,CAAch7C,IAAI,CAACtH,KAAnB,EAA0Bo5B,MAA1B;;AAEA,YAAKspB,cAAL;;AAEA;AAEH,KAba,EAaXv9C,KAbW,CAaL,UAAA3C,GAAG,EAAI;AAEZ,YAAK2B,KAAL,CAAW3B,GAAX;;AACA,YAAMA,GAAN;AACH,KAjBa,CAAd;AAhDkC;AAkErC;;AA7EL;;AAAA,SA+EI4/C,oBA/EJ,GA+EI,gCAAiC;AAC7B,WAAOjpB,qDAAW,CAAC,KAAK4mB,SAAL,CAAe4C,oBAAhB,EAAsC,KAAK96C,eAAL,EAAtC,CAAlB;AACH,GAjFL;;AAAA,SAmFI6C,IAnFJ,GAmFI,gBAAyC;AACrC,WAAO,KAAKu3C,MAAZ;AACH,GArFL;;AAAA,SAuFIp6C,eAvFJ,GAuFI,2BAA2B;AACvB,WAAOA,sBAAe,EAAtB;AACH,GAzFL;;AAAA,SA2FIkoC,OA3FJ,GA2FI,iBAAQ3sC,OAAR,EAA4B;AACxB,SAAK4+C,cAAL,CAAoBl/C,IAApB,CAAyBM,OAAzB;AACH,GA7FL;;AAAA,SA+FI+9C,wBA/FJ,GA+FI,oCAAmD;AAC/C,WAAOA,+BAAwB,EAA/B;AACH,GAjGL;;AAAA,SAmGIE,qBAnGJ,GAmGI,iCAAgD;AAC5C,WAAOA,4BAAqB,EAA5B;AACH,GArGL;;AAAA,SAuGIkB,eAvGJ,GAuGI,2BAA2C;AAAA;;AACvC,QAAIxB,aAAa,GAAGD,gBAAgB,EAApC;AAEA,QAAI9gD,KAAK,GAAG+gD,aAAa,CAAC/gD,KAA1B;;AAEA,QAAIA,KAAK,CAACyB,IAAN,KAAeg6B,0BAAa,CAACC,GAAjC,EAAsC;AAClC17B,WAAK,GAAGA,KAAK,CAAC0B,KAAd;AACH,KAFD,MAEO,IAAI1B,KAAK,CAACyB,IAAN,KAAeg6B,0BAAa,CAACE,GAAjC,EAAsC;AAEzC,UAAIinB,qBAAqB,GAAGzB,+BAAwB,EAApD;;AAEA,UAAI,CAACp6C,sDAAY,CAAC67C,qBAAD,CAAjB,EAA0C;AAEtC,YAAIzgD,MAAM,CAAC2F,QAAP,CAAgByC,QAAhB,KAA6B,OAAjC,EAA0C;AACtC,gBAAM,IAAI3I,KAAJ,yCAAN;AACH;;AAED,cAAM,IAAIA,KAAJ,kEAA0EgF,mDAAS,EAAnF,+BAAN;AACH;;AAED,UAAI6O,MAAM,GAAG0e,gCAAS,CAACyuB,qBAAD,CAAtB;;AAEA,UAAI,CAACntC,MAAL,EAAa;AACT,cAAM,IAAI7T,KAAJ,qEAAN;AACH;;AAED5B,WAAK,GAAGgN,IAAI,CAACiD,KAAL,CAAWwF,MAAM,CAACzV,KAAP,CAAa+gD,aAAa,CAAC33C,GAA3B,CAAX,CAAR;AAEH,KArBM,MAqBA;AACH,YAAM,IAAIxH,KAAJ,+BAAuC5B,KAAK,CAACyB,IAA7C,CAAN;AACH;;AAED,QAAI,CAACzB,KAAL,EAAY;AACR,YAAM,IAAI4B,KAAJ,2BAAN;AACH;;AAED,WAAO+lB,2CAAoB,CAAC3nB,KAAD,EAAQ,iBAA6B;AAAA,UAA1B6kB,OAA0B,SAA1BA,OAA0B;AAAA,UAAjBgD,IAAiB,SAAjBA,IAAiB;AAAA,UAAXxhB,IAAW,SAAXA,IAAW;AAC5D,aAAO,MAAI,CAAC47C,MAAL,CAAY1/C,IAAZ,CAAiB,YAAM;AAC1B,YAAIsgD,IAAI,GAAGnyC,0BAAG,CAAC,MAAI,CAAC1Q,KAAN,EAAa6kB,OAAb,CAAd;;AAEA,YAAI,OAAOg+B,IAAP,KAAgB,UAApB,EAAgC;AAC5B,gBAAM,IAAIl9C,SAAJ,eAA2Bkf,OAA3B,6BAA4D,OAAOg+B,IAAnE,CAAN;AACH;;AAED,eAAOA,IAAI,CAACv8C,KAAL,CAAWuhB,IAAX,EAAiBxhB,IAAjB,CAAP;AACH,OARM,CAAP;AASH,KAV0B,CAA3B;AAWH,GAtJL;;AAAA,SAyJIi8C,QAzJJ,GAyJI,kBAAStiD,KAAT,EAAyCo5B,MAAzC,EAA0D4T,QAA1D,EAAqF;AAAA,QAA3BA,QAA2B;AAA3BA,cAA2B,GAAN,IAAM;AAAA;;AACjF;AACA,SAAKhtC,KAAL,GAAa,KAAKA,KAAL,IAAc,EAA3B;AACA,QAAI8iD,eAAe,GAAGjB,mBAAmB,CAAC,KAAK9B,SAAN,EAAiB//C,KAAjB,EAAwBo5B,MAAxB,EAAgC4T,QAAhC,CAAzC;AACAjwB,iCAAM,CAAC,KAAK/c,KAAN,EAAa8iD,eAAb,CAAN;;AACA,QAAI,KAAK9iD,KAAL,CAAW+K,QAAf,EAAyB;AACrBE,wCAAW,CAAC,KAAKjL,KAAL,CAAW+K,QAAZ,CAAX;AACH;;AAPgF,8CAQ7D,KAAKi3C,cARwD,6CAQxC;AAApC,UAAI5+C,OAAO,6BAAX;AACDA,aAAO,CAACd,IAAR,CAAa,IAAb,EAAmB,KAAKtC,KAAxB;AACH;AACJ;AAGD;;;;AAvKJ;;AAAA,SA6KIsnC,YA7KJ,GA6KI,sBAAavnC,IAAb,EAA4BuH,IAA5B,EAAiDqJ,OAAjD,EAA4J;AAAA,QAAhIrJ,IAAgI;AAAhIA,UAAgI,GAA/G,EAA+G;AAAA;;AAAA,QAA3GqJ,OAA2G;AAA3GA,aAA2G,GAAvF,EAAuF;AAAA;;AACxJ,QAAIoyC,YAAY,GAAG5B,+BAAwB,EAA3C;;AAEA,QAAI,CAAC4B,YAAL,EAAmB;AACf,YAAM,IAAInhD,KAAJ,mDAAN;AACH;;AAED,SAAKm+C,SAAL,CAAejzC,GAAf,qBAAsC/M,IAAtC;AAEA,WAAOiH,mBAAI,CAAC+7C,YAAD,EAAehjD,IAAf,EAAqBuH,IAArB;AAA6BF,YAAM,EAAES,sBAAe;AAApD,OAA2D8I,OAA3D,EAAX;AACH;AAGD;;;;;AA1LJ;;AAAA,SAiMI6xC,UAjMJ,GAiMI,sBAAa;AAGT;AAEA,QAAIrgD,MAAM,CAAC6gD,uBAAX,EAAoC;AAChC,YAAM,KAAKjD,SAAL,CAAeE,WAAf,yDAAN;AACH;;AAED99C,UAAM,CAAC6gD,uBAAP,GAAiC,IAAjC,CATS,CAWT;;AAEA,QAAI,CAAC7B,+BAAwB,EAA7B,EAAiC;AAC7B,YAAM,KAAKpB,SAAL,CAAeE,WAAf,8BAAN;AACH;;AAED,QAAIc,aAAa,GAAGD,gBAAgB,EAApC;;AAEA,QAAIC,aAAa,CAACr3B,GAAd,KAAsB,KAAKq2B,SAAL,CAAer2B,GAAzC,EAA8C;AAC1C,YAAM,KAAKq2B,SAAL,CAAeE,WAAf,gBAAyCc,aAAa,CAACr3B,GAAvD,0BAAiF,KAAKq2B,SAAL,CAAer2B,GAAhG,CAAN;AACH,KArBQ,CAuBT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;;;AAEA,SAAKu5B,aAAL;AACH,GAvOL;;AAAA,SAyOIA,aAzOJ,GAyOI,yBAAgB;AAAA;;AACZ9gD,UAAM,CAACqN,gBAAP,CAAwB,QAAxB,EAAkC;AAAA,aAAM,MAAI,CAAC0zC,UAAL,EAAN;AAAA,KAAlC;AACH,GA3OL;;AAAA,SA6OIC,gBA7OJ,GA6OI,iCAA+F;AAAA,mCAAJ,EAAI;AAAA,4BAA5E12B,KAA4E;AAAA,QAA5EA,KAA4E,4BAApE,IAAoE;AAAA,6BAA9DC,MAA8D;AAAA,QAA9DA,MAA8D,6BAArD,IAAqD;;AAC3F,SAAKy1B,UAAL,GAAkB;AAAE11B,WAAK,EAALA,KAAF;AAASC,YAAM,EAANA;AAAT,KAAlB;AACA,SAAKg2B,cAAL;AACH,GAhPL;;AAAA,SAkPIU,aAlPJ,GAkPI,yBAA+E;AAE3E,QAAI32B,KAAK,GAAG,KAAZ;AACA,QAAIC,MAAM,GAAG,KAAb;AAEA,QAAIy1B,UAAU,GAAG,KAAKA,UAAL,IAAmB,KAAKpC,SAAL,CAAeoC,UAAnD;;AAEA,QAAI,OAAOA,UAAP,KAAsB,QAA1B,EAAoC;AAChC11B,WAAK,GAAG9Y,OAAO,CAACwuC,UAAU,CAAC11B,KAAZ,CAAf;AACAC,YAAM,GAAG/Y,OAAO,CAACwuC,UAAU,CAACz1B,MAAZ,CAAhB;AACH,KAHD,MAGO,IAAIy1B,UAAJ,EAAgB;AACnB11B,WAAK,GAAG,IAAR;AACAC,YAAM,GAAG,IAAT;AACH;;AAED,QAAIzE,OAAJ;;AAEA,QAAIk6B,UAAU,CAACl6B,OAAf,EAAwB;AACpBA,aAAO,GAAGY,iCAAU,CAACs5B,UAAU,CAACl6B,OAAZ,CAApB;AACH,KAFD,MAEO;AACHA,aAAO,GAAG/U,QAAQ,CAAChE,IAAnB;AACH,KArB0E,CAuB3E;;;AACA,WAAO;AAAEud,WAAK,EAALA,KAAF;AAASC,YAAM,EAANA,MAAT;AAAiBzE,aAAO,EAAPA;AAAjB,KAAP;AACH,GA3QL;;AAAA,SA6QIy6B,cA7QJ,GA6QI,0BAAuC;AAAA;;AAAA,8BAEF,KAAKU,aAAL,EAFE;AAAA,QAE7B32B,KAF6B,uBAE7BA,KAF6B;AAAA,QAEtBC,MAFsB,uBAEtBA,MAFsB;AAAA,QAEdzE,OAFc,uBAEdA,OAFc;;AAInC,QAAI,CAACwE,KAAD,IAAU,CAACC,MAAf,EAAuB;AACnB;AACH;;AAED,QAAI,KAAKtmB,OAAL,KAAiB81B,0BAAa,CAACvH,KAAnC,EAA0C;AACtC;AACH;;AAED,QAAI,KAAKutB,iBAAT,EAA4B;AACxB;AACH;;AAED,SAAKA,iBAAL,GAAyB,IAAzB;AAEAzK,0CAAQ,CAACxvB,OAAD,EAAU,iBAA4C;AAAA,UAAlC2vB,QAAkC,SAAzCnrB,KAAyC;AAAA,UAAhBorB,SAAgB,SAAxBnrB,MAAwB;;AAC1D,YAAI,CAAC22B,MAAL,CAAY52B,KAAK,GAAGmrB,QAAH,GAAc92C,SAA/B,EAA0C4rB,MAAM,GAAGmrB,SAAH,GAAe/2C,SAA/D;AACH,KAFO,EAEL;AAAE2rB,WAAK,EAALA,KAAF;AAASC,YAAM,EAANA;AAAT,KAFK,CAAR;AAGH,GAlSL;;AAAA,SAqSI+1B,OArSJ,GAqSI,mBAAgC;AAE5B,QAAI56B,IAAI,GAAG,IAAX;AAEA,WAAO;AACHy7B,iBADG,uBACStjD,KADT,EAC8D;AAAA;;AAC7D,eAAO+D,yCAAY,CAACuB,GAAb,CAAiB;AAAA,iBAAMuiB,IAAI,CAACy6B,QAAL,CAActiD,KAAd,EAAqB,MAAI,CAACo5B,MAA1B,EAAkC,KAAlC,CAAN;AAAA,SAAjB,CAAP;AACH,OAHE;AAKH7P,WALG,mBAK0B;AACzB,eAAOxlB,yCAAY,CAACuB,GAAb,CAAiB;AAAA,iBAAMuiB,IAAI,CAAC07B,OAAL,EAAN;AAAA,SAAjB,CAAP;AACH;AAPE,KAAP;AASH;AAGD;;;;AArTJ;;AAAA,SA2TIF,MA3TJ,GA2TI,gBAAO52B,KAAP,EAAwBC,MAAxB,EAA+D;AAAA;;AAC3D,WAAO3oB,yCAAY,CAACL,OAAb,GAAuBnB,IAAvB,CAA4B,YAAM;AAErC,YAAI,CAACw9C,SAAL,CAAejzC,GAAf,WAA6B;AAAE2f,aAAK,EAAExf,gCAAS,CAACwf,KAAD,CAAlB;AAA2BC,cAAM,EAAEzf,gCAAS,CAACyf,MAAD;AAA5C,OAA7B;;AAEA,UAAI,MAAI,CAACtmB,OAAL,KAAiB81B,0BAAa,CAACvH,KAAnC,EAA0C;AACtC;AACH;;AAED,aAAO,MAAI,CAAC2S,YAAL,CAAkB/M,yBAAY,CAACO,MAA/B,EAAuC;AAAErO,aAAK,EAALA,KAAF;AAASC,cAAM,EAANA;AAAT,OAAvC,EAA0DnqB,IAA1D,CAA+D0E,mBAA/D,CAAP;AACH,KATM,CAAP;AAUH;AAED;;;;AAxUJ;;AAAA,SA8UIu8C,IA9UJ,GA8UI,gBAA4B;AACxB,WAAO,KAAKlc,YAAL,CAAkB/M,yBAAY,CAACU,IAA/B,EAAqC14B,IAArC,CAA0C0E,mBAA1C,CAAP;AACH,GAhVL;;AAAA,SAkVIw8C,IAlVJ,GAkVI,gBAA4B;AACxB,WAAO,KAAKnc,YAAL,CAAkB/M,yBAAY,CAACW,IAA/B,EAAqC34B,IAArC,CAA0C0E,mBAA1C,CAAP;AACH,GApVL;;AAAA,SAsVIy8C,SAtVJ,GAsVI,qBAAmB;AACf,WAAO,KAAKn6B,KAAL,CAAW2T,0BAAa,CAACI,WAAzB,CAAP;AACH;AAGD;;;;AA3VJ;;AAAA,SAiWI/T,KAjWJ,GAiWI,eAAM+lB,MAAN,EAAkD;AAAA,QAA5CA,MAA4C;AAA5CA,YAA4C,GAA1BpS,0BAAa,CAACE,UAAY;AAAA;;AAE9C,SAAK2iB,SAAL,CAAejzC,GAAf,gBAF8C,CAI9C;;AAEA,SAAKw6B,YAAL,CAAkB/M,yBAAY,CAACI,KAA/B,EAAsC;AAAE2U,YAAM,EAANA;AAAF,KAAtC;AACH,GAxWL;;AAAA,SA0WI4T,UA1WJ,GA0WI,sBAAa;AACT,SAAK5b,YAAL,CAAkB/M,yBAAY,CAACK,WAA/B,EAA4C,EAA5C,EAAgD;AAAExd,mBAAa,EAAE;AAAjB,KAAhD;AACH,GA5WL;;AAAA,SA+WImmC,OA/WJ,GA+WI,mBAA+B;AAC3B,WAAO/8C,+BAAK,GAAGjE,IAAR,CAAa,YAAM;AACtBJ,YAAM,CAAConB,KAAP;AACH,KAFM,CAAP;AAGH;AAGD;;;;AAtXJ;;AAAA,SA4XIo6B,KA5XJ,GA4XI,iBAAQ;AACJ,SAAK5D,SAAL,CAAejzC,GAAf;AAEA3K,UAAM,CAACwhD,KAAP;AACH;AAGD;;;;AAnYJ;;AAAA,SAyYIx/C,KAzYJ,GAyYI,eAAM3B,GAAN,EAAwC;AAEpC,QAAIohD,gBAAgB,GAAGj9B,qCAAc,CAACnkB,GAAD,CAArC;AAEA,SAAKu9C,SAAL,CAAe7rB,QAAf,UAAiC;AAAE/vB,WAAK,EAAEy/C;AAAT,KAAjC;AAEA,WAAO,KAAKtc,YAAL,CAAkB/M,yBAAY,CAAC3sC,KAA/B,EAAsC;AACzCuW,WAAK,EAAEy/C;AADkC,KAAtC,EAEJrhD,IAFI,CAEC0E,mBAFD,CAAP;AAGH,GAlZL;;AAAA;AAAA,EAAuC64C,kBAAvC,E;;ACnCA,SAAS+D,iBAAT,CAA2Bv+B,MAA3B,EAAmCtlB,KAAnC,EAA0C;AACxC,OAAK,IAAIgF,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGhF,KAAK,CAACkD,MAA1B,EAAkC8B,CAAC,EAAnC,EAAuC;AACrC,QAAIugB,UAAU,GAAGvlB,KAAK,CAACgF,CAAD,CAAtB;AACAugB,cAAU,CAACP,UAAX,GAAwBO,UAAU,CAACP,UAAX,IAAyB,KAAjD;AACAO,cAAU,CAACR,YAAX,GAA0B,IAA1B;AACA,QAAI,WAAWQ,UAAf,EAA2BA,UAAU,CAAC41B,QAAX,GAAsB,IAAtB;AAC3B/6C,UAAM,CAAC0kB,cAAP,CAAsBQ,MAAtB,EAA8BC,UAAU,CAAChlB,GAAzC,EAA8CglB,UAA9C;AACD;AACF;;AAEc,SAASu+B,YAAT,CAAsBC,WAAtB,EAAmCC,UAAnC,EAA+CC,WAA/C,EAA4D;AACzE,MAAID,UAAJ,EAAgBH,iBAAiB,CAACE,WAAW,CAACp/C,SAAb,EAAwBq/C,UAAxB,CAAjB;AAChB,MAAIC,WAAJ,EAAiBJ,iBAAiB,CAACE,WAAD,EAAcE,WAAd,CAAjB;AACjB,SAAOF,WAAP;AACD,C;;;ACZD;AACA;AACA;AAEA;AAGA;AACA;;AAyBA;;;;;;;;;;;;;;;AAgBO,IAAIG,cAAiD,GAAG,EAAxD,C,CAEP;AACA;;AAEAA,cAAc,CAAChoB,0BAAa,CAAC1rC,MAAf,CAAd,GAAuC;AAEnC2zD,WAAS,EAAsB,KAFI;AAGnCC,+BAA6B,EAAE,IAHI;AAInCC,aAAW,EAAoB,IAJI;AAKnCC,aAAW,EAAoB,KALI;AAMnCC,aAAW,EAAoB,KANI;AAQnCl0C,MARmC,gBAQ9BtB,GAR8B,EAQM;AAAA;;AAErC,QAAIwb,UAAU,GAAG,KAAKw1B,SAAL,CAAex1B,UAAf,CAA0BU,MAA1B,IAAoC,EAArD;AAEA,SAAKA,MAAL,GAAcA,6BAAM,CAAC;AACjBlc,SAAG,EAAHA,GADiB;AAEjBwb,gBAAU,EAAE;AACRxqB,YAAI,EAAO,KAAKykD,eADV;AAENC,aAAK,EAAM,KAAK1E,SAAL,CAAehgD,IAFpB;AAGNmsC,iBAAS,EAAE,KAAK6T,SAAL,CAAe7T,SAAf,GAA2B,KAA3B,GAAmC;AAHxC,SAIH3hB,UAJG,CAFO;AAQjBF,WAAK,EAAE,CACH8R,wBAAW,CAACE,eADT,EAEHF,wBAAW,CAACI,SAFT;AARU,KAAD,EAYjB,KAAKtU,OAZY,CAApB;AAcA,WAAO8C,uCAAgB,CAAC,KAAKE,MAAN,CAAhB,CAA8B1oB,IAA9B,CAAmC,UAAAmiD,WAAW,EAAI;AAErD,WAAI,CAACviD,MAAL,GAAcuiD,WAAd;;AAEA,UAAIC,WAAW,GAAG,SAAdA,WAAc,GAAM;AACpB,eAAO5gD,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAC1B,iBAAO,KAAI,CAACtF,KAAL,CAAWovC,OAAX,CAAmBlS,0BAAa,CAACG,cAAjC,CAAP;AACH,SAFM,EAEJj4B,OAFI,CAEI,YAAM;AACb,iBAAO,KAAI,CAACm+C,OAAL,EAAP;AACH,SAJM,CAAP;AAKH,OAND;;AAQA,UAAIqB,aAAa,GAAGlzB,2CAAoB,CAAC,KAAI,CAACzG,MAAN,EAAc05B,WAAd,CAAxC;AACA,UAAIE,cAAc,GAAGnzB,2CAAoB,CAAC,KAAI,CAACzJ,OAAN,EAAe08B,WAAf,CAAzC;;AAEA,WAAI,CAACp1B,KAAL,CAAW4lB,QAAX,CAAoB,eAApB,EAAqC,YAAM;AAEvCyP,qBAAa,CAACvhD,MAAd;AACAwhD,sBAAc,CAACxhD,MAAf;AAEA0kC,oCAAa,CAAC,KAAI,CAAC5lC,MAAN,CAAb;AAEA,eAAO,KAAI,CAACA,MAAZ;;AAEA,YAAI,KAAI,CAAC8oB,MAAT,EAAiB;AACb4F,+CAAc,CAAC,KAAI,CAAC5F,MAAN,CAAd;AACA,iBAAO,KAAI,CAACA,MAAZ;AACH;AACJ,OAbD;AAcH,KA7BM,CAAP;AA8BH,GAxDkC;AA0DnC65B,eA1DmC,2BA0DE;AAAA;;AAEjC,QAAIv6B,UAAU,GAAG,KAAKw1B,SAAL,CAAex1B,UAAf,CAA0BU,MAA1B,IAAoC,EAArD;AAEA,SAAK85B,eAAL,GAAuB95B,6BAAM,CAAC;AAC1BV,gBAAU,EAAE;AACRxqB,YAAI,oBAAwB,KAAKykD,eAD3B;AAENtY,iBAAS,EAAE,KAAK6T,SAAL,CAAe7T,SAAf,GAA2B,KAA3B,GAAmC;AAFxC,SAGH3hB,UAHG,CADgB;AAM1BF,WAAK,EAAE,CACH8R,wBAAW,CAACG,eADT,EAEHH,wBAAW,CAAC9L,OAFT;AANmB,KAAD,EAU1B,KAAKpI,OAVqB,CAA7B;AAYA,WAAO8C,uCAAgB,CAAC,KAAKg6B,eAAN,CAAhB,CAAuCxiD,IAAvC,CAA4C,UAAAyiD,oBAAoB,EAAI;AAEvE,YAAI,CAACC,eAAL,GAAuBD,oBAAvB;;AAEA,YAAI,CAACz1B,KAAL,CAAW4lB,QAAX,CAAoB,kBAApB,EAAwC,YAAM;AAE1C,YAAI,MAAI,CAAC4P,eAAT,EAA0B;AACtBl0B,+CAAc,CAAC,MAAI,CAACk0B,eAAN,CAAd;AACA,iBAAO,MAAI,CAACA,eAAZ;AACH;AACJ,OAND;AAOH,KAXM,CAAP;AAYH,GAtFkC;AAwFnCG,iBAxFmC,6BAwFjB;AAAA;;AAEdh0B,mCAAQ,CAAC,KAAK6zB,eAAN,EAAuB5oB,wBAAW,CAACI,SAAnC,CAAR;AACAlL,sCAAW,CAAC,KAAK0zB,eAAN,EAAuB5oB,wBAAW,CAAC9L,OAAnC,CAAX;AAEAa,mCAAQ,CAAC,KAAKjG,MAAN,EAAckR,wBAAW,CAAC9L,OAA1B,CAAR;AACAgB,sCAAW,CAAC,KAAKpG,MAAN,EAAckR,wBAAW,CAACI,SAA1B,CAAX;AAEAx5B,cAAU,CAAC,YAAM;AACb,UAAI,MAAI,CAACgiD,eAAT,EAA0B;AACtBl0B,6CAAc,CAAC,MAAI,CAACk0B,eAAN,CAAd;AACH;AACJ,KAJS,EAIP,IAJO,CAAV;AAKH,GArGkC;AAuGnCI,mBAAiB,EAAE;AAEfC,iBAAa,EAAYrqB,qBAAQ,CAAC2C,aAFnB;AAGf2nB,oBAAgB,EAAStqB,qBAAQ,CAAC2C,aAHnB;AAIf4nB,oBAAgB,EAASvqB,qBAAQ,CAAC2C,aAJnB;AAKf6nB,yBAAqB,EAAIxqB,qBAAQ,CAAC2C,aALnB;AAMf8nB,2BAAuB,EAAEzqB,qBAAQ,CAAC2C,aANnB;AAOfzU,gBAAY,EAAa8R,qBAAQ,CAAC2C,aAPnB;AAQf+nB,iBAAa,EAAY1qB,qBAAQ,CAAC2C,aARnB;AASfgoB,iBAAa,EAAY3qB,qBAAQ,CAAC2C,aATnB;AAUfioB,iBAAa,EAAY5qB,qBAAQ,CAAC2C,aAVnB;AAWfkoB,iBAAa,EAAY7qB,qBAAQ,CAAC2C,aAXnB;AAYf8lB,QAAI,EAAqBzoB,qBAAQ,CAAC2C,aAZnB;AAaf+lB,QAAI,EAAqB1oB,qBAAQ,CAAC2C,aAbnB;AAcf2lB,UAAM,EAAmBtoB,qBAAQ,CAAC2C,aAdnB;AAefmoB,WAAO,EAAkB9qB,qBAAQ,CAAC2C,aAfnB;AAgBfooB,gBAAY,EAAa/qB,qBAAQ,CAAC2C,aAhBnB;AAiBfonB,iBAAa,EAAY/pB,qBAAQ,CAAC2C,aAjBnB;AAkBfwnB,mBAAe,EAAUnqB,qBAAQ,CAAC2C,aAlBnB;AAoBfqoB,kBAAc,EAAWhrB,qBAAQ,CAAC0C,aApBnB;AAqBfuoB,sBAAkB,EAAOjrB,qBAAQ,CAAC0C,aArBnB;AAsBfwoB,aAAS,EAAgBlrB,qBAAQ,CAAC0C,aAtBnB;AAwBfptB,QAxBe,gBAwBVoxB,QAxBU,EAwB2BykB,QAxB3B,EAwB2F;AACtG,aAAO,SAASC,YAAT,GAA6C;AAAA;;AAChD,eAAOD,QAAQ,CAAC5/C,KAAT,CAAe,IAAf,EAAqBoB,SAArB,EAAgCnF,IAAhC,CAAqC,YAAM;AAC9C,gBAAI,CAACgtB,KAAL,CAAWnK,GAAX,CAAe,QAAf,EAAyBgS,yDAAe,CAAC+pB,+BAAwB,EAAzB,EAA6B,MAAI,CAACqD,eAAlC,CAAxC;;AAEA,cAAI,CAAC,MAAI,CAACriD,MAAV,EAAkB;AACd,kBAAM,IAAIP,KAAJ,iDAAN;AACH;AACJ,SANM,CAAP;AAOH,OARD;AASH;AAlCc,GAvGgB;AA4InCyhD,QA5ImC,kBA4I5B52B,KA5I4B,EA4IAC,MA5IA,EA4I6B;AAE5D,QAAID,KAAJ,EAAW;AACP,WAAK1E,SAAL,CAAeK,KAAf,CAAqBqE,KAArB,GAA6B2G,4BAAK,CAAC3G,KAAD,CAAlC;AACA,WAAKxE,OAAL,CAAaG,KAAb,CAAmBqE,KAAnB,GAA6B2G,4BAAK,CAAC3G,KAAD,CAAlC;AACH;;AAED,QAAIC,MAAJ,EAAY;AACR,WAAK3E,SAAL,CAAeK,KAAf,CAAqBsE,MAArB,GAA8B0G,4BAAK,CAAC1G,MAAD,CAAnC;AACA,WAAKzE,OAAL,CAAaG,KAAb,CAAmBsE,MAAnB,GAA4B0G,4BAAK,CAAC1G,MAAD,CAAjC;AACH;AACJ,GAvJkC;AAyJnC+2B,MAzJmC,kBAyJ5B;AACH9yB,sCAAW,CAAC,KAAK1I,OAAN,CAAX;AACH,GA3JkC;AA6JnCu7B,MA7JmC,kBA6J5B;AACH5yB,sCAAW,CAAC,KAAK3I,OAAN,CAAX;AACH,GA/JkC;AAiKnC49B,SAjKmC,mBAiK3B92C,GAjK2B,EAiKb;AAClB,SAAKkc,MAAL,CAAYT,YAAZ,CAAyB,KAAzB,EAAgCzb,GAAhC;AACH;AAnKkC,CAAvC;;AAsKA,IAAIqlB,IAAJ,EAAgC;AAE5B;AAEA8vB,gBAAc,CAAChoB,0BAAa,CAACvH,KAAf,CAAd,GAAsC;AAElCwvB,aAAS,EAAsB,IAFG;AAGlCC,iCAA6B,EAAE,KAHG;AAIlCC,eAAW,EAAoB,KAJG;AAKlCC,eAAW,EAAoB,IALG;AAMlCC,eAAW,EAAoB,IANG;AAQlCl0C,QARkC,gBAQ7BtB,GAR6B,EAQY;AAAA;;AAAA,UAAzCA,GAAyC;AAAzCA,WAAyC,GAAzB,EAAyB;AAAA;;AAC1C,aAAOhL,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAAA,mBAKtB,MAAI,CAACy6C,SAAL,CAAelyB,UAAf,IAA6B,EALP;AAAA,8BAGtBpB,KAHsB;AAAA,YAGtBA,KAHsB,2BAGdkR,+BAAkB,CAACC,KAHL;AAAA,+BAItBlR,MAJsB;AAAA,YAItBA,MAJsB,4BAIbiR,+BAAkB,CAACz2C,MAJN;;AAO1BulC,aAAK,GAAG+G,yCAAkB,CAAC/G,KAAD,EAAQtqB,MAAM,CAAC60C,UAAf,CAA1B;AACAtqB,cAAM,GAAG8G,yCAAkB,CAAC9G,MAAD,EAASvqB,MAAM,CAAC60C,UAAhB,CAA3B;;AAR0B,2BAUXuK,WAAW,CAAC;AAAE90B,eAAK,EAALA,KAAF;AAASC,gBAAM,EAANA;AAAT,SAAD,CAVA;AAAA,YAUpB80B,CAVoB,gBAUpBA,CAVoB;AAAA,YAUjBC,CAViB,gBAUjBA,CAViB;;AAY1B,YAAIl3B,UAAU,GAAG,MAAI,CAACw1B,SAAL,CAAex1B,UAAf,CAA0BrB,KAA1B,IAAmC,EAApD;AAEA,cAAI,CAAC/mB,MAAL,GAAc+mB,4BAAK,CAACna,GAAG,IAAI,EAAR;AACfhP,cAAI,EAAQ,MAAI,CAACykD,eADF;AAEf/3B,eAAK,EAALA,KAFe;AAGfC,gBAAM,EAANA,MAHe;AAIfL,aAAG,EAASo1B,CAJG;AAKfl1B,cAAI,EAAQi1B,CALG;AAMf3xC,gBAAM,EAAM,CANG;AAOfunC,iBAAO,EAAK,CAPG;AAQfC,iBAAO,EAAK,CARG;AASfC,mBAAS,EAAG,CATG;AAUfC,oBAAU,EAAE;AAVG,WAWZhtB,UAXY,EAAnB;AAcA,cAAI,CAAC06B,eAAL,GAAuB,MAAI,CAAC9iD,MAA5B;;AAEA,cAAI,CAACotB,KAAL,CAAW4lB,QAAX,CAAoB,eAApB,EAAqC,YAAM;AACvC,cAAI,MAAI,CAAChzC,MAAT,EAAiB;AACb,kBAAI,CAACA,MAAL,CAAYonB,KAAZ;;AACAwe,wCAAa,CAAC,MAAI,CAAC5lC,MAAN,CAAb;AACA,mBAAO,MAAI,CAACA,MAAZ;AACA,mBAAO,MAAI,CAAC8iD,eAAZ;AACH;AACJ,SAPD;;AASA,cAAI,CAAC5B,MAAL,CAAY52B,KAAZ,EAAmBC,MAAnB;AACH,OAxCM,CAAP;AAyCH,KAlDiC;AAoDlCo4B,iBApDkC,2BAoDG;AACjC,aAAO/gD,yCAAY,CAACuB,GAAb,CAAiB2B,mBAAjB,CAAP;AACH,KAtDiC;AAwDlCo8C,UAxDkC,oBAwDzB,CACL;AACH,KA1DiC;AA4DlCG,QA5DkC,kBA4D3B;AACH,YAAM,IAAI5hD,KAAJ,CAAU,oBAAV,CAAN;AACH,KA9DiC;AAgElC6hD,QAhEkC,kBAgE3B;AACH,YAAM,IAAI7hD,KAAJ,CAAU,oBAAV,CAAN;AACH,KAlEiC;AAoElCujD,qBAAiB,EAAE;AAEfC,mBAAa,EAAWrqB,qBAAQ,CAAC2C,aAFlB;AAGf4nB,sBAAgB,EAAQvqB,qBAAQ,CAAC2C,aAHlB;AAKfzU,kBAAY,EAAY8R,qBAAQ,CAAC2C,aALlB;AAOf+nB,mBAAa,EAAW1qB,qBAAQ,CAAC2C,aAPlB;AAQfgoB,mBAAa,EAAW3qB,qBAAQ,CAAC2C,aARlB;AASfioB,mBAAa,EAAW5qB,qBAAQ,CAAC2C,aATlB;AAUfkoB,mBAAa,EAAW7qB,qBAAQ,CAAC2C,aAVlB;AAYf8lB,UAAI,EAAoBzoB,qBAAQ,CAAC2C,aAZlB;AAaf+lB,UAAI,EAAoB1oB,qBAAQ,CAAC2C,aAblB;AAef6nB,2BAAqB,EAAGxqB,qBAAQ,CAAC2C,aAflB;AAiBfrtB,UAAI,EAAqB0qB,qBAAQ,CAAC0C,aAjBnB;AAkBfooB,aAAO,EAAkB9qB,qBAAQ,CAAC0C,aAlBnB;AAmBf+nB,6BAAuB,EAAEzqB,qBAAQ,CAAC0C,aAnBnB;AAoBf4nB,sBAAgB,EAAStqB,qBAAQ,CAAC0C,aApBnB;AAqBf4lB,YAAM,EAAmBtoB,qBAAQ,CAAC0C,aArBnB;AAsBfsoB,oBAAc,EAAWhrB,qBAAQ,CAAC0C,aAtBnB;AAuBfuoB,wBAAkB,EAAOjrB,qBAAQ,CAAC0C,aAvBnB;AAwBfwoB,eAAS,EAAgBlrB,qBAAQ,CAAC0C;AAxBnB,KApEe;AA+FlCooB,WA/FkC,mBA+F1B92C,GA/F0B,EA+FZ;AAElB,UAAIhI,sDAAY,CAAC,KAAK5E,MAAN,CAAhB,EAA+B;AAC3B,YAAI;AACA,cAAI,KAAKA,MAAL,CAAY2F,QAAZ,IAAwB,KAAK3F,MAAL,CAAY2F,QAAZ,CAAqBjI,OAAjD,EAA0D;AACtD,iBAAKsC,MAAL,CAAY2F,QAAZ,CAAqBjI,OAArB,CAA6BkP,GAA7B;AACA;AACH;AACJ,SALD,CAKE,OAAOvM,GAAP,EAAY,CACV;AACH;AACJ;;AAED,WAAKL,MAAL,CAAY2F,QAAZ,GAAuBiH,GAAvB;AACH;AA7GiC,GAAtC;AA+GH,C;;AChVD;AAKA;AACO,SAASq3C,YAAT,CAA4BjiC,IAA5B,EAA+D5jB,GAA/D,EAA6EmB,KAA7E,EAAyF1B,KAAzF,EAAkHgtC,QAAlH,EAA6I;AAAA,MAA3BA,QAA2B;AAA3BA,YAA2B,GAAN,IAAM;AAAA;;AAEhJ,MAAIqZ,OAAO,GAAG3kD,KAAK,KAAK,IAAV,IAAkBA,KAAK,KAAKZ,SAA5B,IAAyCY,KAAK,KAAK,EAAjE;;AAEA,MAAI,CAAC2kD,OAAL,EAAc;AACV,QAAIrZ,QAAQ,IAAI7oB,IAAI,CAAC6oB,QAAL,KAAkB,KAA9B,IAAuC,CAAC7oB,IAAI,CAAC/X,cAAL,CAAoB,KAApB,CAA5C,EAAwE;AACpE,YAAM,IAAIxK,KAAJ,wBAAgCrB,GAAhC,CAAN;AACH;;AAED;AACH;;AAED,MAAImB,KAAK,IAAI,OAAOA,KAAK,CAACa,IAAb,KAAsB,UAA/B,IAA6C4hB,IAAI,CAACvhB,OAAtD,EAA+D;AAC3D;AACH;;AAED,MAAIuhB,IAAI,CAAC1iB,IAAL,KAAc,UAAlB,EAA8B;AAE1B,QAAI,EAAE,OAAOC,KAAP,KAAiB,UAAnB,CAAJ,EAAoC;AAChC,YAAM,IAAIiE,SAAJ,oCAAgDpF,GAAhD,CAAN;AACH;AAEJ,GAND,MAMO,IAAI4jB,IAAI,CAAC1iB,IAAL,KAAc,QAAlB,EAA4B;AAE/B,QAAI,OAAOC,KAAP,KAAiB,QAArB,EAA+B;AAC3B,YAAM,IAAIiE,SAAJ,kCAA8CpF,GAA9C,CAAN;AACH;AAEJ,GANM,MAMA,IAAI4jB,IAAI,CAAC1iB,IAAL,KAAc,QAAlB,EAA4B;AAE/B;AAEA,QAAI0iB,IAAI,CAACkpB,WAAL,KAAqB,KAAzB,EAAgC;AAC5B,UAAI;AACArgC,YAAI,CAACC,SAAL,CAAevL,KAAf;AACH,OAFD,CAEE,OAAOc,GAAP,EAAY;AACV,cAAM,IAAIZ,KAAJ,gCAAwCrB,GAAxC,CAAN;AACH;AACJ;AAEJ,GAZM,MAYA,IAAI4jB,IAAI,CAAC1iB,IAAL,KAAc,QAAlB,EAA4B;AAE/B,QAAI6kD,KAAK,CAACnlC,QAAQ,CAACzf,KAAD,EAAQ,EAAR,CAAT,CAAT,EAAgC;AAC5B,YAAM,IAAIiE,SAAJ,4BAAwCpF,GAAxC,CAAN;AACH;AACJ;;AAED,MAAI,OAAO4jB,IAAI,CAACyoB,QAAZ,KAAyB,UAAzB,IAAuClrC,KAA3C,EAAkD;AAC9CyiB,QAAI,CAACyoB,QAAL,CAAclrC,KAAd,EAAqB1B,KAArB;AACH;AACJ;AAGD;;;;;;;AAOO,SAASumD,aAAT,CAA0BxG,SAA1B,EAAoD//C,KAApD,EAAuEgtC,QAAvE,EAAkG;AAAA,MAA3BA,QAA2B;AAA3BA,YAA2B,GAAN,IAAM;AAAA;;AAErGhtC,OAAK,GAAGA,KAAK,IAAI,EAAjB;;AAEA,MAAIA,KAAK,CAACgJ,GAAN,IAAa,OAAO+2C,SAAS,CAAChxC,GAAjB,KAAyB,QAAtC,IAAkD,CAACgxC,SAAS,CAAChxC,GAAV,CAAc/O,KAAK,CAACgJ,GAApB,CAAvD,EAAiF;AAC7E,UAAM,IAAIpH,KAAJ,mBAA2B5B,KAAK,CAACgJ,GAAjC,CAAN;AACH,GANoG,CAQrG;;;AARqG,6CAUrF+2C,SAAS,CAAC+B,YAAV,EAVqF,8CAU3D;AAArC,QAAIvhD,GAAG,8BAAP;AAED;AACA,QAAI4jB,IAAI,GAAG47B,SAAS,CAAC4B,OAAV,CAAkBphD,GAAlB,CAAX;;AAEA,QAAI4jB,IAAI,CAACspB,KAAL,IAAcztC,KAAK,CAACoM,cAAN,CAAqB+X,IAAI,CAACspB,KAA1B,CAAlB,EAAoD;AAEhD,UAAI/rC,KAAK,GAAG1B,KAAK,CAACmkB,IAAI,CAACspB,KAAN,CAAjB;AACA,aAAOztC,KAAK,CAACmkB,IAAI,CAACspB,KAAN,CAAZ;;AAEA,UAAI,CAACztC,KAAK,CAACO,GAAD,CAAV,EAAiB;AACbP,aAAK,CAACO,GAAD,CAAL,GAAamB,KAAb;AACH;AACJ;AACJ,GAxBoG,CA0BrG;;AAEA;;;;;;;;;AAYA;;;AAxCqG,oCA0CrFtB,MAAM,CAACC,IAAP,CAAYL,KAAZ,CA1CqF,qCA0CjE;AAA/B,QAAIO,IAAG,qBAAP;;AAED;AACA,QAAI4jB,KAAiC,GAAG47B,SAAS,CAAC4B,OAAV,CAAkBphD,IAAlB,CAAxC;;AACA,QAAImB,MAAK,GAAG1B,KAAK,CAACO,IAAD,CAAjB;;AAEA,QAAI4jB,KAAJ,EAAU;AACN;AACAiiC,kBAAY,CAACjiC,KAAD,EAAO5jB,IAAP,EAAYmB,MAAZ,EAAmB1B,KAAnB,EAA0BgtC,QAA1B,CAAZ;AACH;AACJ;;AApDoG,6CAsDrF+S,SAAS,CAAC+B,YAAV,EAtDqF,8CAsD3D;AAArC,QAAIvhD,KAAG,8BAAP;;AAED;AACA,QAAI4jB,MAAiC,GAAG47B,SAAS,CAAC4B,OAAV,CAAkBphD,KAAlB,CAAxC;;AACA,QAAImB,OAAK,GAAG1B,KAAK,CAACO,KAAD,CAAjB;;AAEA,QAAI4jB,MAAI,IAAI,CAACnkB,KAAK,CAACoM,cAAN,CAAqB7L,KAArB,CAAb,EAAwC;AACpC6lD,kBAAY,CAACjiC,MAAD,EAAO5jB,KAAP,EAAYmB,OAAZ,EAAmB1B,KAAnB,EAA0BgtC,QAA1B,CAAZ;AACH;AACJ;AACJ,C;;ACjID;AAEA;;AAMA,SAAS6H,SAAT,CAAmBnzC,KAAnB,EAA6C;AACzC,SAAOA,KAAK,KAAK,IAAV,IAAkBA,KAAK,KAAKZ,SAA5B,IAAyCY,KAAK,KAAK,EAA1D;AACH;AAGD;;;;;AAMA;;;AACO,SAAS8kD,aAAT,CAA6BzG,SAA7B,EAAuD9P,QAAvD,EAAsFjwC,KAAtF,EAA+GO,GAA/G,EAA6HmB,KAA7H,EAAkK;AAAE;AAEvK,MAAIyiB,IAAI,GAAG47B,SAAS,CAAC4B,OAAV,CAAkBphD,GAAlB,CAAX;AAEA,MAAIkmD,WAAJ;;AAEA,MAAItiC,IAAI,CAACziB,KAAT,EAAgB;AACZ+kD,eAAW,GAAGtiC,IAAI,CAACziB,KAAnB;AACH,GAFD,MAEO,IAAIyiB,IAAI,CAACnQ,GAAL,KAAa,CAAChU,KAAK,CAACoM,cAAN,CAAqB7L,GAArB,CAAD,IAA8B,CAACs0C,SAAS,CAACnzC,KAAD,CAArD,CAAJ,EAAmE;AACtE+kD,eAAW,GAAGtiC,IAAI,CAACnQ,GAAL,CAAS1R,IAAT,CAAcy9C,SAAd,EAAyB//C,KAAzB,CAAd;AACH,GAFM,MAEA;AACHymD,eAAW,GAAG/kD,KAAd;AACH;;AAED,MAAI,CAAC+kD,WAAD,IAAgBtiC,IAAI,CAACspB,KAArB,IAA8BztC,KAAK,CAACmkB,IAAI,CAACspB,KAAN,CAAvC,EAAqD;AACjDgZ,eAAW,GAAGzmD,KAAK,CAACmkB,IAAI,CAACspB,KAAN,CAAnB;AACH;;AAED,MAAIiZ,SAAS,GAAG,KAAhB;;AAEA,MAAIviC,IAAI,CAAC8pB,QAAL,IAAiBwY,WAAW,KAAK,IAAjC,IAAyCA,WAAW,KAAK3lD,SAA7D,EAAwE;AACpE2lD,eAAW,GAAGtiC,IAAI,CAAC8pB,QAAL,CAAc3rC,IAAd,CAAmB2tC,QAAnB,EAA6BwW,WAA7B,EAA0CzmD,KAA1C,CAAd;AACA0mD,aAAS,GAAG,IAAZ;AACH;;AAED,MAAIjlD,IAAI,GAAG0iB,IAAI,CAAC1iB,IAAhB;;AAEA,MAAIA,IAAI,KAAK,SAAb,EAAwB;AACpB;AACAglD,eAAW,GAAG9yC,OAAO,CAAC8yC,WAAD,CAArB;AAEH,GAJD,MAIO,IAAIhlD,IAAI,KAAK,UAAb,EAAyB;AAE5B,QAAI,CAACglD,WAAD,IAAgBtiC,IAAI,CAACld,IAAzB,EAA+B;AAC3B;AACAw/C,iBAAW,GAAGx/C,mBAAd;;AAEA,UAAI,CAACy/C,SAAD,IAAcviC,IAAI,CAAC8pB,QAAvB,EAAiC;AAC7B;AACAwY,mBAAW,GAAGtiC,IAAI,CAAC8pB,QAAL,CAAc3rC,IAAd,CAAmB2tC,QAAnB,EAA6BhpC,mBAA7B,EAAmCjH,KAAnC,CAAd;AACH;AACJ;;AAED,QAAIymD,WAAW,IAAI,OAAOA,WAAP,KAAuB,UAA1C,EAAsD;AAElDA,iBAAW,GAAGA,WAAW,CAAC/4C,IAAZ,CAAiBuiC,QAAjB,CAAd,CAFkD,CAIlD;;AAEA,UAAI9rB,IAAI,CAACwO,SAAT,EAAoB;AAChB;AACA8zB,mBAAW,GAAG9zB,gCAAS,CAAC8zB,WAAD,CAAvB;AACH;;AAED,UAAItiC,IAAI,CAAC0O,SAAT,EAAoB;AAChB;AACA4zB,mBAAW,GAAG5zB,gCAAS,CAAC4zB,WAAD,CAAvB;AACH,OAdiD,CAgBlD;;;AAEA,UAAIhlB,QAAQ,GAAGglB,WAAf,CAlBkD,CAmBlD;;AACAA,iBAAW,GAAG,uBAAmB;AAC7B1G,iBAAS,CAACjzC,GAAV,gBAA4BvM,GAA5B;AACA,eAAOkhC,QAAQ,CAACn7B,KAAT,CAAe,IAAf,EAAqBoB,SAArB,CAAP;AACH,OAHD,CApBkD,CAyBlD;;;AAEA,UAAIyc,IAAI,CAAClc,IAAT,EAAe;AACX;AACAw+C,mBAAW,GAAGx+C,2BAAI,CAACw+C,WAAD,CAAlB;AACH,OA9BiD,CAgClD;;;AAEA,UAAItiC,IAAI,CAACpR,OAAT,EAAkB;AACd;AACA0zC,mBAAW,GAAG1zC,8BAAO,CAAC0zC,WAAD,CAArB;AACH;AACJ;AAEJ,GApDM,MAoDA,IAAIhlD,IAAI,KAAK,QAAb,EAAuB,CAC1B;AAEH,GAHM,MAGA,IAAIA,IAAI,KAAK,QAAb,EAAuB,CAC1B;AAEH,GAHM,MAGA,IAAIA,IAAI,KAAK,QAAb,EAAuB;AAC1B,QAAIglD,WAAW,KAAK3lD,SAApB,EAA+B;AAC3B;AACA2lD,iBAAW,GAAGtlC,QAAQ,CAACslC,WAAD,EAAc,EAAd,CAAtB;AACH;AACJ,GA9FoK,CAgGrK;;;AACA,SAAOA,WAAP;AACH;AAGD;;;;;;AAMO,SAASE,cAAT,CAA2B5G,SAA3B,EAAqD9P,QAArD,EAAoFjwC,KAApF,EAAsI;AAEzI,MAAIW,MAAM,GAAG,EAAb,CAFyI,CAIzI;;AACAX,OAAK,GAAGA,KAAK,IAAI,EAAjB;;AALyI,oCAOzHI,MAAM,CAACC,IAAP,CAAYL,KAAZ,CAPyH,qCAOrG;AAA/B,QAAIO,GAAG,qBAAP;;AACD,QAAIw/C,SAAS,CAAC+B,YAAV,GAAyBj/C,OAAzB,CAAiCtC,GAAjC,MAA0C,CAAC,CAA/C,EAAkD;AAC9C;AACAI,YAAM,CAACJ,GAAD,CAAN,GAAcimD,aAAa,CAACzG,SAAD,EAAY9P,QAAZ,EAAsBjwC,KAAtB,EAA6BO,GAA7B,EAAkCP,KAAK,CAACO,GAAD,CAAvC,CAA3B;AACH,KAHD,MAGO;AACHI,YAAM,CAACJ,GAAD,CAAN,GAAcP,KAAK,CAACO,GAAD,CAAnB;AACH;AACJ;;AAdwI,6CAgBzHw/C,SAAS,CAAC+B,YAAV,EAhByH,8CAgB/F;AAArC,QAAIvhD,IAAG,8BAAP;;AACD,QAAI,CAACP,KAAK,CAACoM,cAAN,CAAqB7L,IAArB,CAAD,KAA+B,CAAC0vC,QAAQ,CAACjwC,KAAV,IAAmB,CAACiwC,QAAQ,CAACjwC,KAAT,CAAeoM,cAAf,CAA8B7L,IAA9B,CAAnD,CAAJ,EAA4F;AAExF;AACA,UAAIqmD,cAAc,GAAGJ,aAAa,CAACzG,SAAD,EAAY9P,QAAZ,EAAsBjwC,KAAtB,EAA6BO,IAA7B,EAAkCP,KAAK,CAACO,IAAD,CAAvC,CAAlC;;AAEA,UAAIqmD,cAAc,KAAK9lD,SAAvB,EAAkC;AAC9BH,cAAM,CAACJ,IAAD,CAAN,GAAcqmD,cAAd;AACH;AACJ;AACJ,GA1BwI,CA4BzI;;;AACA,SAAOjmD,MAAP;AACH;AAGD;;;;;;;;;;AAWA;;AACA,SAAS+H,aAAT,CAA6Byb,IAA7B,EAAgE5jB,GAAhE,EAA8EmB,KAA9E,EAAgH;AAC5G,SAAOqC,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAC1B,QAAI,OAAO6e,IAAI,CAAC8oB,UAAZ,KAA2B,UAA/B,EAA2C;AACvC,aAAO9oB,IAAI,CAAC8oB,UAAL,CAAgBvrC,KAAhB,CAAP;AACH,KAFD,MAEO,IAAI,OAAOyiB,IAAI,CAAC8oB,UAAZ,KAA2B,QAA/B,EAAyC;AAC5C,aAAO9oB,IAAI,CAAC8oB,UAAZ;AACH,KAFM,MAEA;AACH,aAAO1sC,GAAP;AACH;AACJ,GARM,CAAP;AASH,C,CAED;;;AACA,SAASsmD,aAAT,CAA6B1iC,IAA7B,EAAgE5jB,GAAhE,EAA8EmB,KAA9E,EAA+G;AAC3G,SAAOqC,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAC1B,QAAI,OAAO6e,IAAI,CAACopB,UAAZ,KAA2B,UAA/B,EAA2C;AACvC,aAAOppB,IAAI,CAACopB,UAAL,CAAgB7rC,KAAhB,CAAP;AACH,KAFD,MAEO;AACH,aAAOA,KAAP;AACH;AACJ,GANM,CAAP;AAOH;;AAEM,SAASolD,YAAT,CAAyBC,QAAzB,EAAmE/mD,KAAnE,EAA2H;AAE9H,MAAImpB,MAAM,GAAG,EAAb;AAEA,SAAOplB,yCAAY,CAAC6B,GAAb,CAAiBxF,MAAM,CAACC,IAAP,CAAYL,KAAZ,EAAmBQ,GAAnB,CAAuB,UAAAD,GAAG,EAAI;AAElD,QAAI4jB,IAAI,GAAG4iC,QAAQ,CAACxmD,GAAD,CAAnB;;AAEA,QAAI,CAAC4jB,IAAL,EAAW;AACP,aADO,CACC;AACX;;AAED,WAAOpgB,yCAAY,CAACL,OAAb,GAAuBnB,IAAvB,CAA4B,YAAM;AAErC,UAAIb,KAAK,GAAG1B,KAAK,CAACO,GAAD,CAAjB;;AAEA,UAAI,CAACmB,KAAL,EAAY;AACR;AACH;;AAED,UAAI,CAACyiB,IAAI,CAAC8oB,UAAV,EAAsB;AAClB;AACH;;AAED,aAAOvrC,KAAP;AAEH,KAdM,EAcJa,IAdI,CAcC,UAAAb,KAAK,EAAI;AAEb,UAAI,CAACA,KAAL,EAAY;AACR;AACH;;AAED,aAAOqC,yCAAY,CAAC6B,GAAb,CAAiB,CACpB;AACA8C,mBAAa,CAACyb,IAAD,EAAO5jB,GAAP,EAAYmB,KAAZ,CAFO,EAGpB;AACAmlD,mBAAa,CAAC1iC,IAAD,EAAO5jB,GAAP,EAAYmB,KAAZ,CAJO,CAAjB,EAKJa,IALI,CAKC,gBAAgC;AAAA,YAA7B0qC,UAA6B;AAAA,YAAjBM,UAAiB;AAEpC,YAAI5sC,MAAJ;;AAEA,YAAI,OAAO4sC,UAAP,KAAsB,SAA1B,EAAqC;AACjC5sC,gBAAM,GAAG,GAAT;AACH,SAFD,MAEO,IAAI,OAAO4sC,UAAP,KAAsB,QAA1B,EAAoC;AACvC5sC,gBAAM,GAAG4sC,UAAU,CAAC3tC,QAAX,EAAT;AACH,SAFM,MAEA,IAAI,OAAO2tC,UAAP,KAAsB,UAA1B,EAAsC;AACzC;AACH,SAFM,MAEA,IAAI,OAAOA,UAAP,KAAsB,QAAtB,IAAkCA,UAAU,KAAK,IAArD,EAA2D;AAE9D,cAAIppB,IAAI,CAAC6iC,aAAL,KAAuB,MAA3B,EAAmC;AAC/BrmD,kBAAM,GAAGqM,IAAI,CAACC,SAAL,CAAesgC,UAAf,CAAT;AACH,WAFD,MAEO;AACH5sC,kBAAM,GAAG8kB,6BAAM,CAAC8nB,UAAD,EAAahtC,GAAb,CAAf;;AADG,8CAGgBH,MAAM,CAACC,IAAP,CAAYM,MAAZ,CAHhB,qCAGqC;AAAnC,kBAAIsmD,MAAM,qBAAV;AACD99B,oBAAM,CAAC89B,MAAD,CAAN,GAAiBtmD,MAAM,CAACsmD,MAAD,CAAvB;AACH;;AAED;AACH;AAEJ,SAdM,MAcA,IAAI,OAAO1Z,UAAP,KAAsB,QAA1B,EAAoC;AACvC5sC,gBAAM,GAAG4sC,UAAU,CAAC3tC,QAAX,EAAT;AACH;;AAEDupB,cAAM,CAAC8jB,UAAD,CAAN,GAAqBtsC,MAArB;AACH,OAlCM,CAAP;AAmCH,KAvDM,CAAP;AAyDH,GAjEuB,CAAjB,EAiEH4B,IAjEG,CAiEE,YAAM;AACXnC,UAAM,CAACC,IAAP,CAAY8oB,MAAZ,EAAoBjH,OAApB,CAA4B,UAAA3hB,GAAG,EAAI;AAC/B4oB,YAAM,CAAC5oB,GAAD,CAAN,GAAc2mD,MAAM,CAAC/9B,MAAM,CAAC5oB,GAAD,CAAP,CAApB;AACH,KAFD;AAGA,WAAO4oB,MAAP;AACH,GAtEM,CAAP;AAuEH,C;;;;;;;;;AC/QD;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAMA;AACA;AAMA;AACA;AACA;AAEA1T,qBAAM,CAACzV,KAAP,GAAeyV,qBAAM,CAACzV,KAAP,IAAgB,EAA/B;AACAyV,qBAAM,CAACyrC,OAAP,GAAiBzrC,qBAAM,CAACyrC,OAAP,IAAkB,EAAnC;;AAwBA;;;;;;;AAQO,IAAMiG,sBAAb;AAAA;AAAA;AAAA;;AAmByB;AAErB,2BAAYpH,SAAZ,EAAsC35C,OAAtC,QAAiG;AAAA;;AAAA,QAAvCpG,KAAuC,QAAvCA,KAAuC;AAC7F;AAD6F,UAnBjGL,IAmBiG;AAAA,UAlBjGyG,OAkBiG;AAAA,UAjBjGpG,KAiBiG;AAAA,UAhBjGwkD,eAgBiG;AAAA,UAfjGvC,MAeiG;AAAA,UAdjG9/C,MAciG;AAAA,UAbjGilD,aAaiG;AAAA,UAXjGr/B,SAWiG;AAAA,UAVjGE,OAUiG;AAAA,UATjGo/B,MASiG;AAAA,UARjGp8B,MAQiG;AAAA,UANjG85B,eAMiG;AAAA,UALjGE,eAKiG;AAAA,UAHjGqC,YAGiG;AAAA,UAFjG/hD,OAEiG;AAG7F,UAAKw6C,SAAL,GAAiBA,SAAjB;;AAEA,UAAKwH,oBAAL;;AAEA,UAAKnhD,OAAL,GAAeA,OAAf;;AAEA,QAAI;AACA,YAAKk8C,QAAL,CAActiD,KAAd;AACH,KAFD,CAEE,OAAOwC,GAAP,EAAY;AACV,UAAIxC,KAAK,CAACkF,OAAV,EAAmB;AACflF,aAAK,CAACkF,OAAN,CAAc1C,GAAd;AACH;;AACD,YAAMA,GAAN;AACH;;AAED,QAAI,MAAKxC,KAAL,CAAW+K,QAAf,EAAyB;AACrBE,wCAAW,CAAC,MAAKjL,KAAL,CAAW+K,QAAZ,CAAX;AACH;;AAED,UAAKy5C,eAAL,GAAuB,MAAKhE,oBAAL,CAA0B;AAAEgH,cAAQ,EAAErlD;AAAZ,KAA1B,CAAvB;;AAEA,UAAKslD,uBAAL,GAxB6F,CA0B7F;AACA;;;AAEA,UAAK1H,SAAL,CAAejzC,GAAf;;AAEA,UAAK46C,cAAL;;AAEA,UAAKzF,MAAL,GAAc,IAAIl+C,yCAAJ,EAAd;;AAEA,UAAKk+C,MAAL,CAAY98C,KAAZ,CAAkB,UAAA3C,GAAG,EAAI;AACrB,aAAO,MAAK2B,KAAL,CAAW3B,GAAX,CAAP;AACH,KAFD;;AAnC6F;AAsChG;;AA3DL;;AAAA,SA6DImlD,MA7DJ,GA6DI,gBAAO1/B,OAAP,EAAiC49B,OAAjC,EAA8F;AAAA;;AAAA,QAA7DA,OAA6D;AAA7DA,aAA6D,GAAzC,IAAyC;AAAA;;AAC1F,WAAO,KAAK+B,OAAL,CAAa,YAAM;AAEtB,YAAI,CAAC7H,SAAL,CAAejzC,GAAf,aAA8B,MAAI,CAAC1G,OAAnC,EAA+C;AAAEA,eAAO,EAAE,MAAI,CAACA,OAAhB;AAAyB6hB,eAAO,EAAPA,OAAzB;AAAkC49B,eAAO,EAAE54C,gCAAS,CAAC44C,OAAD;AAApD,OAA/C;;AAEA,UAAI5Q,KAAK,GAAG,EAAZ;AAEAA,WAAK,CAAC4S,QAAN,GAAiB,MAAI,CAAC7nD,KAAL,CAAW6nD,QAAX,EAAjB;AAEA5S,WAAK,CAACruC,SAAN,GAAkB,MAAI,CAACA,SAAL,EAAlB;AAEAquC,WAAK,CAAChsB,YAAN,GAAqBllB,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AACxC,YAAI2iB,OAAJ,EAAa;AACT,iBAAO,MAAI,CAACgB,YAAL,CAAkBhB,OAAlB,CAAP;AACH;AACJ,OAJoB,CAArB;AAMAgtB,WAAK,CAACmQ,aAAN,GAAsBnQ,KAAK,CAAChsB,YAAN,CAAmB1mB,IAAnB,CAAwB,YAAM;AAChD,eAAO,MAAI,CAAC6iD,aAAL,CAAmBn9B,OAAnB,CAAP;AACH,OAFqB,CAAtB;AAIAgtB,WAAK,CAACwQ,aAAN,GAAsBxQ,KAAK,CAACmQ,aAAN,CAAoB7iD,IAApB,CAAyB,YAAM;AACjD,eAAO,MAAI,CAACkjD,aAAL,EAAP;AACH,OAFqB,CAAtB;AAIAxQ,WAAK,CAAC6P,aAAN,GAAsB7P,KAAK,CAACmQ,aAAN,CAAoB7iD,IAApB,CAAyB,YAAM;AACjD,eAAO,MAAI,CAACuiD,aAAL,EAAP;AACH,OAFqB,CAAtB;AAIA7P,WAAK,CAACiQ,eAAN,GAAwBnhD,yCAAY,CAAC6B,GAAb,CAAiB,CAAEqvC,KAAK,CAAC6P,aAAR,EAAuB,MAAI,CAAC7C,MAA5B,CAAjB,EAAuD1/C,IAAvD,CAA4D,YAAM;AACtF,eAAO,MAAI,CAAC2iD,eAAL,EAAP;AACH,OAFuB,CAAxB,CA5BsB,CAgCtB;;AACAjQ,WAAK,CAAC5kC,IAAN,GAAa,MAAI,CAACy3C,MAAL,CAAYxD,WAAZ,GACP,MAAI,CAACj0C,IAAL,EADO,GAEP4kC,KAAK,CAACmQ,aAAN,CAAoB7iD,IAApB,CAAyB;AAAA,eAAM,MAAI,CAAC8N,IAAL,EAAN;AAAA,OAAzB,CAFN;AAIA4kC,WAAK,CAAC/T,MAAN,GAAen9B,yCAAY,CAACkC,IAAb,CAAkB;AAAEmB,cAAM,EAAE6tC,KAAK,CAACruC,SAAhB;AAA2ByJ,YAAI,EAAE4kC,KAAK,CAAC5kC;AAAvC,OAAlB,EAAiE9N,IAAjE,CAAsE,iBAAgB;AAAA,YAAb6E,MAAa,SAAbA,MAAa;;AACjG,cAAI,CAAC85B,MAAL,CAAY,MAAI,CAAC/+B,MAAjB,EAAyBiF,MAAzB;AACH,OAFc,CAAf;AAIA6tC,WAAK,CAACgO,aAAN,GAAsBhO,KAAK,CAAC5kC,IAAN,CAAW9N,IAAX,CAAgB,YAAM;AACxC,eAAO,MAAI,CAAC0gD,aAAL,EAAP;AACH,OAFqB,CAAtB;AAIAhO,WAAK,CAAC8S,UAAN,GAAmBhkD,yCAAY,CAAC6B,GAAb,CAAiB,CAAEqvC,KAAK,CAACruC,SAAR,EAAmBquC,KAAK,CAAC5kC,IAAzB,CAAjB,EAAkD9N,IAAlD,CAAuD,iBAAgB;AAAA,YAAb6E,MAAa;;AACtF,YAAIwN,aAAM,IAAI,OAAOxN,MAAP,KAAkB,QAAhC,EAA0C;AACtC,iBAAOwN,aAAM,CAACozC,OAAP,CAAe,MAAI,CAAC7lD,MAApB,EAA4BiF,MAA5B,CAAP;AACH;AACJ,OAJkB,CAAnB;;AAMA,UAAI,CAAC,MAAI,CAACzH,IAAV,EAAgB;AACZs1C,aAAK,CAACuQ,uBAAN,GAAgCvQ,KAAK,CAAC6P,aAAN,CAAoBviD,IAApB,CAAyB,YAAM;AAC3D,iBAAO,MAAI,CAACijD,uBAAL,EAAP;AACH,SAF+B,CAAhC;AAIAvQ,aAAK,CAACyQ,aAAN,GAAsBzQ,KAAK,CAACuQ,uBAAN,CAA8BjjD,IAA9B,CAAmC,YAAM;AAC3D,iBAAO,MAAI,CAACmjD,aAAL,EAAP;AACH,SAFqB,CAAtB;AAGH;;AAEDzQ,WAAK,CAACngC,UAAN,GAAmB/Q,yCAAY,CAAC6B,GAAb,CAAiB,CAAEqvC,KAAK,CAACruC,SAAR,EAAmBquC,KAAK,CAAC5kC,IAAzB,CAAjB,EAAkD9N,IAAlD,CAAuD,iBAAgB;AAAA,YAAb6E,MAAa;AACtF,eAAO,MAAI,CAAC0N,UAAL,CAAgB,OAAO1N,MAAP,KAAkB,QAAlB,GAA6BA,MAA7B,GAAsC,IAAtD,CAAP;AACH,OAFkB,CAAnB;;AAIA,UAAI,MAAI,CAACzH,IAAT,EAAe;AACXs1C,aAAK,CAACgT,QAAN,GAAiBhT,KAAK,CAAC5kC,IAAN,CAAW9N,IAAX,CAAgB,YAAM;AACnC,iBAAO,MAAI,CAAC0lD,QAAL,EAAP;AACH,SAFgB,CAAjB;AAIH,OALD,MAKO,IAAIpC,OAAJ,EAAa;AAChB5Q,aAAK,CAAC9I,QAAN,GAAiB,MAAI,CAACA,QAAL,EAAjB;AAEA8I,aAAK,CAAC4Q,OAAN,GAAgB9hD,yCAAY,CAAC6B,GAAb,CAAiB,CAC7BqvC,KAAK,CAAC9I,QADuB,EAE7B8I,KAAK,CAAC5kC,IAFuB,EAG7B4kC,KAAK,CAAC8S,UAHuB,EAI7B9S,KAAK,CAAC/T,MAJuB,EAK7B+T,KAAK,CAAC5kC,IALuB,EAM7B4kC,KAAK,CAACngC,UANuB,EAO7BmgC,KAAK,CAACuQ,uBAPuB,CAAjB,EAQbjjD,IARa,CAQR,iBAAa;AAAA,cAAVwM,GAAU;AACjB,iBAAO,MAAI,CAAC82C,OAAL,CAAa92C,GAAb,CAAP;AACH,SAVe,CAAhB;AAYAkmC,aAAK,CAACiT,UAAN,GAAmBjT,KAAK,CAAC4Q,OAAN,CAActjD,IAAd,CAAmB,YAAM;AACxC,iBAAO,MAAI,CAAC2lD,UAAL,EAAP;AACH,SAFkB,CAAnB;AAGH;;AAED,aAAOnkD,yCAAY,CAACkC,IAAb,CAAkBgvC,KAAlB,CAAP;AAEH,KA5FM,EA4FJ1yC,IA5FI,CA4FC,YAAM;AACV,aAAO,MAAI,CAACvC,KAAL,CAAWmoD,OAAX,EAAP;AACH,KA9FM,EA8FJ5lD,IA9FI,CA8FC,YAAM;AACV,aAAO,MAAP;AACH,KAhGM,CAAP;AAiGH,GA/JL;;AAAA,SAkKI0jD,SAlKJ,GAiKI,qBAC0B;AACtB,QAAIoB,MAAM,GAAGn0C,QAAQ,CAACkX,aAAT,CAAuB,KAAvB,CAAb;AACA8G,mCAAQ,CAACm2B,MAAD,EAASlrB,wBAAW,CAACC,MAArB,CAAR;AACA,WAAOirB,MAAP;AACH,GAtKL;;AAAA,SAwKIE,oBAxKJ,GAwKI,gCAAuB;AACnB,QAAIngD,MAAM,GAAGR,mDAAS,EAAtB;;AACA,QAAI,CAACuyB,qDAAW,CAAC,KAAK4mB,SAAL,CAAe4C,oBAAhB,EAAsCv7C,MAAtC,CAAhB,EAA+D;AAC3D,YAAM,IAAIi7C,gCAAJ,qCAAmDj7C,MAAnD,CAAN;AACH;AACJ,GA7KL;;AAAA,SA+KIogD,QA/KJ,GA+KI,kBAAS9gD,GAAT,EAAsCuhB,OAAtC,EAA4F;AAAA;;AACxF,WAAO,KAAK2/B,OAAL,CAAa,YAAM;AAEtB,UAAIlhD,GAAG,KAAKvE,MAAZ,EAAoB;AAChB,eAAO,MAAI,CAACwlD,MAAL,CAAY1/B,OAAZ,CAAP;AACH;;AAED,UAAI,CAACyQ,yDAAe,CAACv2B,MAAD,EAASuE,GAAT,CAApB,EAAmC;AAC/B,cAAM,IAAI9E,KAAJ,uCAAN;AACH;;AAED,UAAIqmB,OAAO,IAAI,OAAOA,OAAP,KAAmB,QAAlC,EAA4C;AACxC,cAAM,IAAIrmB,KAAJ,gEAAwE,OAAOqmB,OAA/E,SAA4FA,OAA5F,CAAN;AACH;;AAED,YAAI,CAACmgC,kBAAL,CAAwB1hD,GAAxB;;AAEA,YAAI,CAACq5C,SAAL,CAAejzC,GAAf,aAA8B,MAAI,CAAC1G,OAAnC,cAAsD;AAAE6hB,eAAO,EAAEhb,gCAAS,CAACgb,OAAD,CAApB;AAA+B7hB,eAAO,EAAE,MAAI,CAACA;AAA7C,OAAtD;;AAEA,YAAI,CAACo+C,eAAL,GAAuB,MAAI,CAAChE,oBAAL,CAA0B;AAAEgH,gBAAQ,EAAE9gD;AAAZ,OAA1B,CAAvB;;AAEA,YAAI,CAAC2hD,QAAL,CAAc3hD,GAAd;;AAEA,aAAO,MAAI,CAACihD,MAAL,CAAY1/B,OAAZ,CAAP;AACH,KAvBM,CAAP;AAwBH,GAxML;;AAAA,SA2MIqgC,QA3MJ,GA0MI,oBACgC;AAAA;;AAC5B,WAAOvkD,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAC1B,YAAI,CAAC3F,IAAL,GAAY,MAAI,CAACwsC,QAAL,GAAgB5pC,IAAhB,CAAqB,UAAAwM,GAAG,EAAI;AACpC,eAAOkjB,mCAAY,CAACljB,GAAD,CAAZ,CAAkBxM,IAAlB,CAAuB,UAAA5C,IAAI,EAAI;AAElC,cAAIoI,IAAI,QAAOgH,GAAG,CAACL,KAAJ,CAAU,GAAV,EAAeuE,KAAf,CAAqB,CAArB,EAAwB,CAAxB,EAA2BxS,IAA3B,CAAgC,GAAhC,CAAf;AACA,cAAIkK,GAAG,SAAQoE,GAAG,CAACL,KAAJ,CAAU,GAAV,EAAeuE,KAAf,CAAqB,CAArB,EAAwBxS,IAAxB,CAA6B,GAA7B,CAAf;AAEA,6DACmBsH,IADnB,uCAGOpI,IAHP,+LAOiDgL,GAPjD;AAWH,SAhBM,CAAP;AAiBH,OAlBW,CAAZ;AAmBH,KApBM,CAAP;AAqBH,GAjOL;;AAAA,SAoOIs9C,QApOJ,GAmOI,oBACgC;AAAA;;AAC5B,WAAOlkD,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAC1B,UAAI,CAAC,MAAI,CAAC3F,IAAV,EAAgB;AACZ,cAAM,IAAIiC,KAAJ,uBAAN;AACH;;AAED,aAAO,MAAI,CAACjC,IAAL,CAAU4C,IAAV,CAAe,UAAA5C,IAAI,EAAI;AAC1B;AACA,eAAO0pB,oCAAa,CAAC,MAAI,CAAClnB,MAAN,EAAcxC,IAAd,CAApB;AACH,OAHM,CAAP;AAIH,KATM,CAAP;AAUH,GA/OL;;AAAA,SAiPIyoD,kBAjPJ,GAiPI,4BAAmB1hD,GAAnB,EAAgD;AAE5C,QAAI,CAACA,GAAL,EAAU;AACN,YAAM,KAAKq5C,SAAL,CAAeE,WAAf,gCAAN;AACH;;AAED,QAAIl5C,sDAAY,CAACL,GAAD,CAAhB,EAAuB;AACnB;AACH;;AAED,QAAI0yB,MAAM,GAAGxyB,mDAAS,EAAtB;AACA,QAAIQ,MAAM,GAAG,KAAK24C,SAAL,CAAen5C,SAAf,CAAyB,IAAzB,EAA+B,KAAK5G,KAAL,CAAWgJ,GAA1C,CAAb;;AAEA,QAAI,CAAC5B,MAAL,EAAa;AACT,YAAM,IAAIxF,KAAJ,qDAAN;AACH;;AAED,QAAIu3B,qDAAW,CAAC/xB,MAAD,EAASgyB,MAAT,CAAf,EAAiC;AAC7B;AACH;;AAED,UAAM,IAAIx3B,KAAJ,iCAAyCwF,MAAM,CAACxH,QAAP,EAAzC,8BAAqFw5B,MAArF,CAAN;AACH,GAvQL;;AAAA,SAyQIquB,uBAzQJ,GAyQI,mCAA0B;AAAA;;AACtBN,mBAAe,CAACoB,gBAAhB,CAAiCzlD,IAAjC,CAAsC,IAAtC;AAEA,SAAKysB,KAAL,CAAW4lB,QAAX,CAAoB,YAAM;AACtBgS,qBAAe,CAACoB,gBAAhB,CAAiCjlD,MAAjC,CAAwC6jD,eAAe,CAACoB,gBAAhB,CAAiC1lD,OAAjC,CAAyC,MAAzC,CAAxC,EAAwF,CAAxF;AACH,KAFD;AAGH,GA/QL;;AAAA,SAkRI2lD,qBAlRJ,GAkRI,iCAA8E;AAC1E,QAAIphD,MAAM,GAAG,KAAK24C,SAAL,CAAen5C,SAAf,CAAyB,IAAzB,EAA+B,KAAK5G,KAAL,CAAWgJ,GAA1C,CAAb;;AAEA,QAAI5B,MAAM,KAAKR,mDAAS,CAACzE,MAAD,CAAxB,EAAkC;AAC9B,UAAIiH,GAAG,GAAGiV,+BAAQ,EAAlB;AACA5I,2BAAM,CAACyrC,OAAP,GAAiBzrC,qBAAM,CAACyrC,OAAP,IAAkB,EAAnC;AACAzrC,2BAAM,CAACyrC,OAAP,CAAe93C,GAAf,IAAsBjH,MAAtB;AACA,WAAKotB,KAAL,CAAW4lB,QAAX,CAAoB,YAAM;AACtB,eAAO1/B,qBAAM,CAACyrC,OAAP,CAAe93C,GAAf,CAAP;AACH,OAFD;AAIA,aAAO;AAAE63C,WAAG,EAAErlB,8BAAiB,CAACI,MAAzB;AAAiC5yB,WAAG,EAAHA;AAAjC,OAAP;AACH;;AAED,QAAI,KAAKhD,OAAL,KAAiB81B,0BAAa,CAACvH,KAAnC,EAA0C;AACtC,aAAO;AAAEssB,WAAG,EAAErlB,8BAAiB,CAACC;AAAzB,OAAP;AACH;;AAED,QAAI1F,+CAAK,CAACh0B,MAAD,CAAT,EAAmB;AACf,aAAO;AAAE8+C,WAAG,EAAErlB,8BAAiB,CAACE;AAAzB,OAAP;AACH;;AAED,WAAO;AAAEmlB,SAAG,EAAErlB,8BAAiB,CAACG,MAAzB;AAAiCzD,cAAQ,EAAED,4DAAkB,CAACl2B,MAAD;AAA7D,KAAP;AACH,GAzSL;;AAAA,SA2SIsmD,kBA3SJ,GA2SI,4BAAmBC,cAAnB,EAA0H;AAAA,QAAvGA,cAAuG;AAAvGA,oBAAuG,GAA9DvmD,MAA8D;AAAA;;AAEtH,QAAIumD,cAAc,KAAKvmD,MAAvB,EAA+B;AAC3B,aAAO,KAAKqmD,qBAAL,EAAP;AACH;;AAED,QAAIp/C,GAAG,GAAGiV,+BAAQ,EAAlB;AACA5I,yBAAM,CAACyrC,OAAP,CAAe93C,GAAf,IAAsBs/C,cAAtB;AAEA,SAAKn5B,KAAL,CAAW4lB,QAAX,CAAoB,YAAM;AACtB,aAAO1/B,qBAAM,CAACyrC,OAAP,CAAe93C,GAAf,CAAP;AACH,KAFD;AAIA,WAAO;AAAE63C,SAAG,EAAErlB,8BAAiB,CAACI,MAAzB;AAAiC5yB,SAAG,EAAHA;AAAjC,KAAP;AACH,GAzTL;;AAAA,SA2TIo3C,oBA3TJ,GA2TI,sCAAiG;AAAA,oCAAb,EAAa;AAAA,+BAA1EgH,QAA0E;AAAA,QAA1EA,QAA0E,+BAA/DrlD,MAA+D;;AAE7F,QAAIwmD,WAAW,GAAG,KAAK5I,SAAL,CAAen5C,SAAf,CAAyB,IAAzB,EAA+B,KAAK5G,KAAL,CAAWgJ,GAA1C,CAAlB;AACA,QAAI6lC,UAAU,GAAG9nC,sDAAY,CAACygD,QAAD,CAA7B;AAEA,QAAIp+C,GAAG,GAAMiV,+BAAQ,EAArB;AACA,QAAIqL,GAAG,GAAM,KAAKq2B,SAAL,CAAer2B,GAA5B;AACA,QAAIk/B,MAAM,GAAGnhC,yCAAkB,CAAC,KAAKohC,gBAAL,EAAD,CAA/B;AAEA,QAAIzH,eAAe,GAAG,KAAKoH,qBAAL,EAAtB;AACA,QAAIlH,YAAY,GAAM,KAAKmH,kBAAL,CAAwBjB,QAAxB,CAAtB;AAEA,QAAIsB,WAAW,GAAG,CAACja,UAAD,IAAe,CAAC,KAAKkR,SAAL,CAAexT,cAAjD;AAEA,QAAIvsC,KAAK,GAAG8oD,WAAW,GACjB;AAAErnD,UAAI,EAAEg6B,0BAAa,CAACE,GAAtB;AAA2BvyB,SAAG,EAAHA;AAA3B,KADiB,GAEjB;AAAE3H,UAAI,EAAEg6B,0BAAa,CAACC,GAAtB;AAA2Bh6B,WAAK,EAAEknD;AAAlC,KAFN;;AAIA,QAAI5oD,KAAK,CAACyB,IAAN,KAAeg6B,0BAAa,CAACE,GAAjC,EAAsC;AAClClmB,2BAAM,CAACzV,KAAP,CAAaoJ,GAAb,IAAoB4D,IAAI,CAACC,SAAL,CAAe27C,MAAf,CAApB;AAEA,WAAKr5B,KAAL,CAAW4lB,QAAX,CAAoB,YAAM;AACtB,eAAO1/B,qBAAM,CAACzV,KAAP,CAAaoJ,GAAb,CAAP;AACH,OAFD;AAGH;;AAED,WAAOo3C,2BAAoB,CAAC,KAAKT,SAAL,CAAehgD,IAAhB,EAAsB,KAAKggD,SAAL,CAAe11C,OAArC,EAA8C;AAAEjB,SAAG,EAAHA,GAAF;AAAOsgB,SAAG,EAAHA,GAAP;AAAY03B,qBAAe,EAAfA,eAAZ;AAA6BE,kBAAY,EAAZA,YAA7B;AAA2CthD,WAAK,EAALA,KAA3C;AAAkD2oD,iBAAW,EAAXA;AAAlD,KAA9C,CAA3B;AACH;AAGD;;;;AAzVJ;;AAAA,SA+VIrhB,YA/VJ,GA+VI,sBAAavnC,IAAb,EAA4BuH,IAA5B,EAA8H;AAC1H,QAAIy7C,YAAY,GAAG5B,+BAAwB,EAA3C;;AAEA,QAAI,CAAC4B,YAAL,EAAmB;AACf,YAAM,IAAInhD,KAAJ,mDAAN;AACH;;AAED,SAAKm+C,SAAL,CAAejzC,GAAf,qBAAsC/M,IAAtC;AAEA,WAAOiH,mBAAI,CAACm6C,+BAAwB,EAAzB,EAA6BphD,IAA7B,EAAmCuH,IAAnC,EAAyC;AAAEF,YAAM,EAAES,sBAAe;AAAzB,KAAzC,CAAX;AACH;AAGD;;;;AA5WJ;;AAAA,SAkXIy6C,QAlXJ,GAkXI,kBAAStiD,KAAT,EAAkCgtC,QAAlC,EAA6D;AAAA,QAA3BA,QAA2B;AAA3BA,cAA2B,GAAN,IAAM;AAAA;;AAEzDuZ,iBAAa,CAAC,KAAKxG,SAAN,EAAiB//C,KAAjB,EAAwBgtC,QAAxB,CAAb;;AACA,QAAI,KAAK+S,SAAL,CAAenT,QAAnB,EAA6B;AACzB,WAAKmT,SAAL,CAAenT,QAAf,CAAwB,KAAKmT,SAA7B,EAAwC//C,KAAxC;AACH,KALwD,CAOzD;;;AACA,SAAKA,KAAL,GAAa,KAAKA,KAAL,IAAc,EAA3B;AAEA+c,iCAAM,CAAC,KAAK/c,KAAN,EAAa2mD,cAAc,CAAC,KAAK5G,SAAN,EAAiB,IAAjB,EAAuB//C,KAAvB,CAA3B,CAAN;AACH;AAGD;;;;;AAhYJ;;AAAA,SAwYImsC,QAxYJ,GAuYI,oBACkC;AAAA;;AAE9B,QAAI4c,OAAyB,GAAG,KAAK/oD,KAAL,CAAW+O,GAA3C;AAEA,WAAOhL,yCAAY,CAAC6B,GAAb,CAAiB,CAEpBmjD,OAFoB,EAGpB;AACAjC,gBAAY,CAAC,2CAAK,KAAK/G,SAAL,CAAe//C,KAArB,MAA+B,KAAK+/C,SAAL,CAAeiJ,YAA9C,GAA8D,KAAKhpD,KAAnE,CAJQ,CAAjB,EAMJuC,IANI,CAMC,iBAAoB;AAAA,UAAjBwM,GAAiB;AAAA,UAAZgd,KAAY;;AAExB;AAEA,UAAIhd,GAAG,IAAI,CAAC,MAAI,CAACgxC,SAAL,CAAekJ,cAAf,CAA8Bl6C,GAA9B,CAAZ,EAAgD;AAC5C,eAAOA,GAAP;AACH;;AAED,aAAOhL,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAE1B,eAAOyJ,GAAG,IAAI,MAAI,CAACgxC,SAAL,CAAemJ,MAAf,CAAsB,MAAI,CAAClpD,KAAL,CAAWgJ,GAAjC,EAAsC,MAAI,CAAChJ,KAA3C,CAAd;AAEH,OAJM,EAIJuC,IAJI,CAIC,UAAA4mD,QAAQ,EAAI;AAEhBp9B,aAAK,CAACq9B,UAAN,GAAmB,GAAnB;AACA,eAAOr0C,gCAAS,CAACo0C,QAAD,EAAW;AAAEp9B,eAAK,EAALA;AAAF,SAAX,CAAhB;AACH,OARM,CAAP;AASH,KAvBM,CAAP;AAwBH,GApaL;;AAAA,SAuaInlB,SAvaJ,GAuaI,qBAA4C;AAAA;;AACxC,WAAO7C,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAC1B,aAAO,MAAI,CAACtF,KAAL,CAAW+O,GAAlB;AAEH,KAHM,EAGJxM,IAHI,CAGC,UAAAwM,GAAG,EAAI;AAEX,UAAI3H,MAAM,GAAG,MAAI,CAAC24C,SAAL,CAAen5C,SAAf,CAAyBmI,GAAzB,EAA8B,MAAI,CAAC/O,KAAL,CAAWgJ,GAAzC,CAAb;;AAEA,UAAI5B,MAAJ,EAAY;AACR,eAAOA,MAAP;AACH;;AAED,UAAI,MAAI,CAAC24C,SAAL,CAAe5T,QAAnB,EAA6B;AACzB,eAAOpoC,yCAAY,CAACuB,GAAb,CAAiB;AAAA,iBAAM,MAAI,CAACy6C,SAAL,CAAe5T,QAAf,CAAwB,MAAI,CAACnsC,KAA7B,CAAN;AAAA,SAAjB,EAA4DuC,IAA5D,CAAiE,UAAA8mD,QAAQ,EAAI;AAChF,iBAAO,MAAI,CAACtJ,SAAL,CAAen5C,SAAf,CAAyByiD,QAAzB,EAAmC,MAAI,CAACrpD,KAAL,CAAWgJ,GAA9C,CAAP;AACH,SAFM,CAAP;AAGH;AAEJ,KAjBM,EAiBJzG,IAjBI,CAiBC,UAAA6E,MAAM,EAAI;AAEd,UAAI,CAACA,MAAL,EAAa;AACT,cAAM,IAAIxF,KAAJ,8BAAN;AACH;;AAED,aAAOwF,MAAP;AACH,KAxBM,CAAP;AAyBH,GAjcL;;AAAA,SAmcIyhD,gBAncJ,GAmcI,4BAA4C;AAExC,QAAIloD,MAAM,GAAG,EAAb;;AAFwC,sCAIxBP,MAAM,CAACC,IAAP,CAAY,KAAKL,KAAjB,CAJwB,qCAIC;AAApC,UAAIO,GAAG,qBAAP;AACD,UAAI4jB,IAAI,GAAG,KAAK47B,SAAL,CAAe4B,OAAf,CAAuBphD,GAAvB,CAAX;;AAEA,UAAI,CAAC4jB,IAAD,IAASA,IAAI,CAACkpB,WAAL,KAAqB,KAAlC,EAAyC;AACrC1sC,cAAM,CAACJ,GAAD,CAAN,GAAc,KAAKP,KAAL,CAAWO,GAAX,CAAd;AACH;AACJ,KAVuC,CAYxC;;;AACA,WAAOI,MAAP;AACH;AAGD;;;;AApdJ;;AAAA,SA0dI2iD,WA1dJ,GA0dI,qBAAYtjD,KAAZ,EAA0D;AAAA;;AACtD,SAAKsiD,QAAL,CAActiD,KAAd,EAAqB,KAArB;AAEA,WAAO,KAAKiiD,MAAL,CAAY1/C,IAAZ,CAAiB,YAAM;AAC1B,UAAI,MAAI,CAAC+kD,YAAT,EAAuB;AACnB,eAAO,MAAI,CAACA,YAAL,CAAkBhE,WAAlB,CAA8B,MAAI,CAACuF,gBAAL,EAA9B,CAAP;AACH,OAFD,MAEO;AACH,cAAM,IAAIjnD,KAAJ,oCAAN;AACH;AACJ,KANM,CAAP;AAOH,GApeL;;AAAA,SAueIkT,UAveJ,GAueI,oBAAW1N,MAAX,EAAoE;AAAA;;AAChE,WAAOrD,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAC1B,UAAI,CAACsP,aAAD,IAAW,CAAC,OAAI,CAACkzC,MAAL,CAAYvD,WAA5B,EAAyC;AACrC;AACH;;AAED,UAAI+E,iBAA0B,GAAG;AAAE5iD,WAAG,EAAE,OAAI,CAACvE;AAAZ,OAAjC;;AACA,UAAIiF,MAAJ,EAAY;AACRkiD,yBAAiB,CAACliD,MAAlB,GAA2BA,MAA3B;AACH;;AAED,UAAIm9C,WAAW,GAAG3vC,aAAM,CAAC2vC,WAAP,CAAmB+E,iBAAnB,CAAlB;;AAEA,UAAI9c,SAAS,GAAG,OAAI,CAACuT,SAAL,CAAewJ,YAAf,CAA4B,OAAI,CAACvpD,KAAL,CAAWgJ,GAAvC,CAAhB;;AAEA,UAAI,CAACwjC,SAAL,EAAgB;AAEZ,YAAI+X,WAAW,IAAIn9C,MAAf,IAAyB,CAACwN,aAAM,CAAC40C,SAAP,CAAiBpiD,MAAjB,EAAyBA,MAAzB,CAA9B,EAAgE;AAC5D,gBAAM,IAAIxF,KAAJ,kCAA0C,OAAI,CAACwE,OAA/C,CAAN;AACH;;AAED;AACH;;AAEDomC,eAAS,GAAGz3B,gCAAS,CAACy3B,SAAD,EAAY;AAAEzgB,aAAK,EAAE;AAAE1hB,iBAAO,EAAE,OAAI,CAAC01C,SAAL,CAAe11C;AAA1B;AAAT,OAAZ,CAArB;;AAEA,UAAIoiC,YAAY,GAAG,OAAI,CAACsT,SAAL,CAAe0J,eAAf,CAA+B,OAAI,CAACzpD,KAAL,CAAWgJ,GAA1C,CAAnB;;AAEA,UAAI,CAACyjC,YAAL,EAAmB;AACf,cAAM,IAAI7qC,KAAJ,uCAAN;AACH;;AAED,UAAI2iD,WAAJ,EAAiB;AACb,eAAO3vC,aAAM,CAACE,UAAP,CAAkB03B,SAAlB,EAA6BC,YAA7B,EAA2ClqC,IAA3C,CAAgD,UAAA5B,MAAM,EAAI;AAC7D,cAAIA,MAAJ,EAAY;AACR,mBAAOA,MAAP;AACH;AACJ,SAJM,CAAP;AAKH;AACJ,KAtCM,CAAP;AAuCH;AAGD;;;;AAlhBJ;;AAAA,SAyhBI0P,IAzhBJ,GAwhBI,gBAC4B;AAAA;;AACxB,WAAOtM,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAC1B,aAAI,CAACy6C,SAAL,CAAejzC,GAAf,WAA4B,OAAI,CAAC1G,OAAjC,EAA6C;AAAEsjD,kBAAU,EAAE,OAAI,CAAClF;AAAnB,OAA7C;;AACA,UAAI,OAAI,CAACxkD,KAAL,CAAW0G,GAAf,EAAoB;AAChB,eAAI,CAAC6oB,KAAL,CAAWnK,GAAX,CAAe,QAAf,EAAyB,OAAI,CAACplB,KAAL,CAAW0G,GAApC;;AACA4uB,kEAAgB,CAAC,OAAI,CAACnzB,MAAN,CAAhB,CAA8BpC,IAA9B,GAAqC,OAAI,CAACykD,eAA1C;AACA;AACH;;AACD,aAAO,OAAI,CAACsD,MAAL,CAAYz3C,IAAZ,CAAiB/N,IAAjB,CAAsB,OAAtB,CAAP;AACH,KARM,CAAP;AASH,GAniBL;;AAAA,SAsiBIwiD,aAtiBJ,GAqiBI,yBACqC;AAAA;;AACjC,WAAO/gD,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAC1B,UAAI,OAAI,CAACy6C,SAAL,CAAelT,iBAAnB,EAAsC;AAClC,eAAO,OAAI,CAACib,MAAL,CAAYhD,aAAZ,CAA0BxiD,IAA1B,CAA+B,OAA/B,CAAP;AACH;AACJ,KAJM,CAAP;AAKH,GA5iBL;;AAAA,SA+iBI4iD,eA/iBJ,GA8iBI,2BACuC;AAAA;;AACnC,WAAOnhD,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAC1B,UAAI,OAAI,CAAC2/C,eAAL,IAAwB,OAAI,CAAC6C,MAAL,CAAY5C,eAAxC,EAAyD;AACrD,eAAO,OAAI,CAAC4C,MAAL,CAAY5C,eAAZ,CAA4B5iD,IAA5B,CAAiC,OAAjC,CAAP;AACH;AACJ,KAJM,CAAP;AAKH,GArjBL;;AAAA,SAgkBI2mB,YAhkBJ,GAgkBI,sBAAahB,OAAb,EAA4D;AACxD,WAAOgB,mCAAY,CAAChB,OAAD,CAAZ,CAAsB1lB,IAAtB,CAA2B0E,mBAA3B,CAAP;AACH,GAlkBL;;AAAA,SAqkBIohD,QArkBJ,GAqkBI,kBAAS3hD,GAAT,EAAsC;AAAA;;AAElC,SAAKq5C,SAAL,CAAejzC,GAAf,eAAgC,KAAK1G,OAArC;AAEA,QAAIpG,KAAK,GAAG;AACRoJ,SAAG,EAAS,KAAKpJ,KAAL,CAAWoJ,GADf;AAERykB,gBAAU,EAAE,KAAK7tB,KAAL,CAAW6tB,UAFf;AAGRuhB,aAAO,EAAK,KAAKpvC,KAAL,CAAWovC,OAHf;AAIRua,eAAS,EAAG,KAAK3pD,KAAL,CAAW2pD;AAJf,KAAZ;;AAJkC,+CAWb,KAAK5J,SAAL,CAAe+B,YAAf,EAXa,8CAWkB;AAA/C,UAAI8H,QAAQ,8BAAZ;AACD,UAAIzlC,IAAI,GAAG,KAAK47B,SAAL,CAAe4B,OAAf,CAAuBiI,QAAvB,CAAX;;AAEA,UAAIzlC,IAAI,CAACgpB,aAAT,EAAwB;AACpBntC,aAAK,CAAC4pD,QAAD,CAAL,GAAkB,KAAK5pD,KAAL,CAAW4pD,QAAX,CAAlB;AACH;AACJ;;AAED,QAAIvB,QAAQ,GAAGrhD,mBAAI,CAACN,GAAD,EAAU6zB,yBAAY,CAACQ,QAAvB,SAAqC,KAAKglB,SAAL,CAAehgD,IAApD,EAA6D;AAE5EqG,aAAO,EAAE,KAAKA,OAF8D;AAG5E4C,SAAG,EAAM,KAAKhJ,KAAL,CAAWgJ,GAHwD;AAK5E2H,aAAO,EAAE;AAELvK,eAAO,EAAE,KAAKA,OAFT;AAILo+C,uBAAe,EAAE,KAAKA,eAJjB;AAKLh9C,sBAAc,EAAG;AAAA,iBAAMA,wDAAc,CAAC,OAAI,CAACrF,MAAN,CAApB;AAAA,SALZ;AAOLnC,aAAK,EAALA,KAPK;AASL6pD,iBAAS,EAAE;AACPlG,eAAK,EAAiB;AAAA,mBAAM,OAAI,CAACA,KAAL,EAAN;AAAA,WADf;AAEPD,mBAAS,EAAa;AAAA,mBAAM,OAAI,CAACA,SAAL,EAAN;AAAA,WAFf;AAGP98C,mBAAS,EAAa;AAAA,mBAAM,OAAI,CAACA,SAAL,EAAN;AAAA,WAHf;AAKPzC,eAAK,EAAE,eAAC3B,GAAD;AAAA,mBAAS,OAAI,CAAC2B,KAAL,CAAW3B,GAAX,CAAT;AAAA,WALA;AAMP2E,YAAE,EAAK,YAAC2f,SAAD,EAAY1jB,OAAZ;AAAA,mBAAwB,OAAI,CAAC+D,EAAL,CAAQ2f,SAAR,EAAmB1jB,OAAnB,CAAxB;AAAA;AANA;AATN;AALmE,KAA7D,CAAJ,CAwBZb,IAxBY,CAwBP,iBAAc;AAAA,UAAX+E,IAAW,SAAXA,IAAW;;AAElB,aAAI,CAACioB,KAAL,CAAW4lB,QAAX,CAAoB7tC,IAAI,CAACi8C,OAAzB;;AACA,aAAOj8C,IAAP;AAEH,KA7Bc,EA6BZnC,KA7BY,CA6BN,UAAA3C,GAAG,EAAI;AAEZ,YAAM,IAAIZ,KAAJ,kGAA0G+kB,qCAAc,CAACnkB,GAAD,CAAxH,CAAN;AACH,KAhCc,CAAf;AAkCA,QAAIqnD,SAAS,GAAG,KAAK/B,MAAL,CAAY3C,iBAA5B;;AArDkC;AAuD7B,UAAI5kD,GAAG,qBAAP;AACD,UAAIyW,GAAG,GAAG6yC,SAAS,CAACtpD,GAAD,CAAnB;;AAEA,UAAIyW,GAAG,KAAK+jB,qBAAQ,CAAC0C,aAArB,EAAoC;AAChC;AACH,OA5D6B,CA8D9B;;;AACA,UAAIgE,QAAQ,GAAG,OAAI,CAAClhC,GAAD,CAAnB,CA/D8B,CAiE9B;;AACA,aAAI,CAACA,GAAD,CAAJ,GAAY,SAASupD,iBAAT,GAAmD;AAAA;AAAA;;AAC3D,eAAOzB,QAAQ,CAAC9lD,IAAT,CAAc,UAAA+E,IAAI,EAAI;AAEzB,cAAI4+C,QAAQ,GAAG5+C,IAAI,CAACuiD,SAAL,CAAetpD,GAAf,CAAf;;AAEA,cAAIyW,GAAG,KAAK+jB,qBAAQ,CAAC2C,aAArB,EAAoC;AAChC,mBAAOwoB,QAAQ,CAAC5/C,KAAT,CAAe,OAAf,EAAqBoB,UAArB,CAAP;AACH;;AAED,cAAI,OAAOsP,GAAP,KAAe,UAAnB,EAA+B;AAC3B,mBAAOA,GAAG,CAACyqB,QAAD,EAAWykB,QAAX,CAAH,CAAwB5/C,KAAxB,CAA8B,OAA9B,EAAoCoB,UAApC,CAAP;AACH;;AAED,gBAAM,IAAI9F,KAAJ,0EAAN;AACH,SAbM,CAAP;AAcH,OAfD;AAlE8B;;AAAA,sCAuDlBxB,MAAM,CAACC,IAAP,CAAYwpD,SAAZ,CAvDkB,qCAuDM;AAAA;;AAAA,+BAIhC;AAuBP;AACJ;AAED;;;;;AA1pBJ;;AAAA,SAiqBI5G,aAjqBJ,GAiqBI,yBAAgB;AAAA;;AACZ,QAAI8G,mBAAmB,GAAGtwB,uDAAa,CAAC,KAAKt3B,MAAN,EAAc,YAAM;AACvD,aAAI,CAAC49C,SAAL,CAAejzC,GAAf;;AAEA,aAAO/I,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAC1B,eAAO,OAAI,CAACtF,KAAL,CAAWovC,OAAX,CAAmBlS,0BAAa,CAACG,cAAjC,CAAP;AACH,OAFM,EAEJj4B,OAFI,CAEI,YAAM;AACb,eAAO,OAAI,CAACm+C,OAAL,EAAP;AACH,OAJM,CAAP;AAKH,KARsC,EAQpC,IARoC,CAAvC;AAUA,SAAKh0B,KAAL,CAAW4lB,QAAX,CAAoB,4BAApB,EAAkD4U,mBAAmB,CAAC1mD,MAAtE;AACH,GA7qBL;;AAAA,SA+qBIqkD,cA/qBJ,GA+qBI,0BAAiB;AAAA;;AAEb;AACA;AAEA,QAAIsC,QAAQ,GAAG/hD,2BAAI,CAAC,YAAM;AACtB,aAAI,CAAC83C,SAAL,CAAejzC,GAAf;;AACAtG,qCAAK;;AACL,aAAI,CAAC6+C,gBAAL;AACH,KAJkB,CAAnB;AAMA,QAAI4E,oBAAoB,GAAGz6C,uCAAgB,CAACrN,MAAD,EAAS,QAAT,EAAmB6nD,QAAnB,CAA3C;AAEA,SAAKz6B,KAAL,CAAW4lB,QAAX,CAAoB,6BAApB,EAAmD8U,oBAAoB,CAAC5mD,MAAxE;AACH;AAGD;;;;;AAhsBJ;;AAAA,SAusBIwiD,OAvsBJ,GAusBI,iBAAQ92C,GAAR,EAA2C;AAAA;;AACvC,WAAOhL,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAC1B,aAAI,CAACy6C,SAAL,CAAejzC,GAAf;;AAEA,UAAI3K,MAAM,CAAC2F,QAAP,CAAgB8K,IAAhB,CAAqBlE,KAArB,CAA2B,GAA3B,EAAgC,CAAhC,MAAuCK,GAAG,CAACL,KAAJ,CAAU,GAAV,EAAe,CAAf,CAA3C,EAA8D;AAAA;;AAC1DK,WAAG,GAAGgG,gCAAS,CAAChG,GAAD,EAAM;AACjBgd,eAAK,uBACC1N,+BAAQ,EADT,IACe,GADf;AADY,SAAN,CAAf;AAKH;;AAED,aAAO,OAAI,CAACypC,MAAL,CAAYjC,OAAZ,CAAoBvjD,IAApB,CAAyB,OAAzB,EAA+ByM,GAA/B,CAAP;AACH,KAZM,CAAP;AAaH,GArtBL;;AAAA,SAwtBIm7C,MAxtBJ,GAwtBI,gBAAOC,aAAP,EAA4D;AACxDA,iBAAa,CAAC7kC,MAAd,GAAuB,KAAKk/B,eAA5B;AACH;AAED;;;;AA5tBJ;;AAAA,SAkuBI0D,UAluBJ,GAkuBI,sBAAa;AAAA;;AACT,QAAI3iD,OAAO,GAAG,KAAKvF,KAAL,CAAWuF,OAAzB;;AAEA,QAAIA,OAAJ,EAAa;AACT,UAAImjB,EAAE,GAAG,KAAKnjB,OAAL,GAAexC,UAAU,CAAC,YAAM;AAErC,eAAI,CAACg9C,SAAL,CAAejzC,GAAf,cAAgC;AAAEvH,iBAAO,EAAEA,OAAO,CAAC3F,QAAR;AAAX,SAAhC;;AAEA,YAAIuE,KAAK,GAAG,OAAI,CAAC47C,SAAL,CAAeE,WAAf,wCAAiE16C,OAAjE,mBAAZ;;AAEA,eAAI,CAAC08C,MAAL,CAAYx9C,MAAZ,CAAmBN,KAAnB;;AACA,eAAI,CAACnE,KAAL,CAAWoqD,SAAX,CAAqBjmD,KAArB;AAEH,OATiC,EAS/BoB,OAT+B,CAAlC;AAWA,WAAKgqB,KAAL,CAAW4lB,QAAX,CAAoB,YAAM;AACtB1vC,oBAAY,CAACijB,EAAD,CAAZ;AACA,eAAO,OAAI,CAACnjB,OAAZ;AACH,OAHD;AAIH;AACJ;AAGD;;;;AAzvBJ;;AAAA,SA+vBI07B,SA/vBJ,GA+vBI,qBAAsE;AAAA;;AAClE,6BAMM1G,yBAAY,CAACC,IANnB,cAM0B/yB,MAN1B,EAM0DH,IAN1D,EAM8H;AAEtH,WAAKggD,YAAL,GAAoBhgD,IAAI,CAACm7C,OAAzB;AAEA,WAAKR,MAAL,CAAYv+C,OAAZ,CAAoB,IAApB;;AAEA,UAAI,KAAK6B,OAAT,EAAkB;AACdE,oBAAY,CAAC,KAAKF,OAAN,CAAZ;AACH;;AAED,aAAO;AACHvF,aAAK,EAAI,KAAK6oD,gBAAL,EADN;AAEHziD,eAAO,EAAE,KAAKA;AAFX,OAAP;AAIH,KApBL,QA0BMm0B,yBAAY,CAACI,KA1BnB,cA0B2BlzB,MA1B3B,EA0B2DH,IA1B3D,EA0B0E;AAClE,WAAKiiB,KAAL,CAAWjiB,IAAI,CAACgoC,MAAhB;AACH,KA5BL,QA8BM/U,yBAAY,CAACK,WA9BnB,gBA8BmC;AAC3B,WAAKsoB,UAAL;AACH,KAhCL,QAoCM3oB,yBAAY,CAACO,MApCnB,cAoC4BrzB,MApC5B,EAoC4DH,IApC5D,EAoCgG;AAAA;;AACxF,aAAOvD,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAC1B,YAAI,OAAI,CAACwiD,MAAL,CAAYzD,WAAhB,EAA6B;AACzB,iBAAO,OAAI,CAAChB,MAAL,CAAY/7C,IAAI,CAACmlB,KAAjB,EAAwBnlB,IAAI,CAAColB,MAA7B,CAAP;AACH;AACJ,OAJM,CAAP;AAKH,KA1CL,QA4CM6N,yBAAY,CAACU,IA5CnB,gBA4C4B;AACpB,WAAKuoB,IAAL;AACH,KA9CL,QAgDMjpB,yBAAY,CAACW,IAhDnB,gBAgD4B;AACpB,WAAKuoB,IAAL;AACH,KAlDL,QAuDMlpB,yBAAY,CAAC3sC,KAvDnB,cAuD2B6Z,MAvD3B,EAuD2DH,IAvD3D,EAuD0E;AAClE,WAAKnD,KAAL,CAAW,IAAIvC,KAAJ,CAAU0F,IAAI,CAACnD,KAAf,CAAX;AACH,KAzDL;AA2DH;AAGD;;;;AA9zBJ;;AAAA,SAo0BIk/C,MAp0BJ,GAo0BI,gBAAO52B,KAAP,EAAmCC,MAAnC,EAAqF;AAAA;;AACjF,WAAO3oB,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAC1B,aAAI,CAACy6C,SAAL,CAAejzC,GAAf,WAA6B;AAAE4f,cAAM,EAAEzf,gCAAS,CAACyf,MAAD,CAAnB;AAA6BD,aAAK,EAAExf,gCAAS,CAACwf,KAAD;AAA7C,OAA7B;;AACA,aAAI,CAACq7B,MAAL,CAAYzE,MAAZ,CAAmB/gD,IAAnB,CAAwB,OAAxB,EAA8BmqB,KAA9B,EAAqCC,MAArC;;AACA,UAAI,OAAI,CAAC1sB,KAAL,CAAWy3C,QAAf,EAAyB;AACrB,eAAI,CAACz3C,KAAL,CAAWy3C,QAAX;AACH;AACJ,KANM,CAAP;AAOH;AAGD;;;;AA/0BJ;;AAAA,SAq1BI+L,IAr1BJ,GAq1BI,gBAAc;AAEV,QAAI,KAAKz7B,SAAT,EAAoB;AAChB6I,wCAAW,CAAC,KAAK7I,SAAN,CAAX;AACH;;AAED,WAAO,KAAK+/B,MAAL,CAAYtE,IAAZ,CAAiBlhD,IAAjB,CAAsB,IAAtB,CAAP;AACH,GA51BL;;AAAA,SA81BImhD,IA91BJ,GA81BI,gBAAc;AAEV,QAAI,KAAK17B,SAAT,EAAoB;AAChB4I,wCAAW,CAAC,KAAK5I,SAAN,CAAX;AACH;;AAED,WAAO,KAAK+/B,MAAL,CAAYrE,IAAZ,CAAiBnhD,IAAjB,CAAsB,IAAtB,CAAP;AACH,GAr2BL;;AAAA,SAw2BI4gD,UAx2BJ,GAw2BI,sBAAa;AAAA;;AACT,QAAI6G,mBAAmB,GAAGtwB,uDAAa,CAAC,KAAKt3B,MAAN,EAAc,YAAM;AACvD,aAAI,CAACuhD,SAAL;AACH,KAFsC,EAEpC,EAFoC,EAEhC,GAFgC,CAAvC;AAIA,SAAKn0B,KAAL,CAAW4lB,QAAX,CAAoB4U,mBAAmB,CAAC1mD,MAAxC;AACH,GA92BL;;AAAA,SAi3BIqgD,SAj3BJ,GAi3BI,qBAAiC;AAC7B,WAAO,KAAKn6B,KAAL,CAAW2T,0BAAa,CAACI,WAAzB,CAAP;AACH;AAGD;;;;AAt3BJ;;AAAA,SA63BI/T,KA73BJ,GA43BI,eACM+lB,MADN,EACwE;AAAA;;AAAA,QAAlEA,MAAkE;AAAlEA,YAAkE,GAAhDpS,0BAAa,CAACC,WAAkC;AAAA;;AACpE,WAAOp5B,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAE1B,aAAI,CAACy6C,SAAL,CAAejzC,GAAf,UAA4B;AAAEwiC,cAAM,EAANA;AAAF,OAA5B;;AAEA,aAAI,CAACvvB,KAAL,CAAWoH,WAAX,CAAuBqV,mBAAM,CAAC7B,KAA9B;;AACA,aAAO,OAAI,CAAC36B,KAAL,CAAWovC,OAAX,CAAmBE,MAAnB,CAAP;AAEH,KAPM,EAOJ/sC,IAPI,CAOC,YAAM;AAEV,aAAOwB,yCAAY,CAAC6B,GAAb,CAAiB,CACpB,OAAI,CAACyoC,cAAL,EADoB,EAEpB,OAAI,CAACgc,cAAL,EAFoB,CAAjB,CAAP;AAKH,KAdM,EAcJ9nD,IAdI,CAcC,YAAM;AAEV,aAAO,OAAI,CAACghD,OAAL,EAAP;AACH,KAjBM,CAAP;AAkBH,GAh5BL;;AAAA,SAo5BI8G,cAp5BJ,GAm5BI,wBACe/a,MADf,EACiF;AAAA;;AAAA,QAAlEA,MAAkE;AAAlEA,YAAkE,GAAhDpS,0BAAa,CAACC,WAAkC;AAAA;;AAC7E,WAAOp5B,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAE1B,aAAI,CAACya,KAAL,CAAWoH,WAAX,CAAuBqV,mBAAM,CAAC7B,KAA9B;;AACA,aAAO,OAAI,CAAC36B,KAAL,CAAWovC,OAAX,CAAmBE,MAAnB,CAAP;AAEH,KALM,EAKJ/sC,IALI,CAKC,YAAM;AAEV,aAAOwB,yCAAY,CAAC6B,GAAb,CAAiB,CACpB,OAAI,CAACyoC,cAAL,CAAoBiB,MAApB,CADoB,EAEpB,OAAI,CAACqW,aAAL,EAFoB,CAAjB,CAAP;AAKH,KAZM,EAYJpjD,IAZI,CAYC,YAAM;AAEV,aAAO,OAAI,CAAC+iD,gBAAL,EAAP;AACH,KAfM,CAAP;AAgBH,GAr6BL;;AAAA,SAy6BIA,gBAz6BJ,GAw6BI,4BACwC;AAAA;;AACpC,WAAOvhD,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAC1B,aAAI,CAACiqB,KAAL,CAAWqwB,GAAX,CAAe,wBAAf;;AACA,aAAI,CAACrwB,KAAL,CAAWqwB,GAAX,CAAe,0BAAf;AACH,KAHM,CAAP;AAIH,GA96BL;;AAAA,SAk7BIvR,cAl7BJ,GAi7BI,wBACeiB,MADf,EACiF;AAAA;;AAAA,QAAlEA,MAAkE;AAAlEA,YAAkE,GAAhDpS,0BAAa,CAACC,WAAkC;AAAA;;AAE7E,QAAIz2B,GAAG,GAAG,KAAKvE,MAAf;AAEA,WAAO4B,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAE1B,aAAO,OAAI,CAACigD,qBAAL,EAAP;AAEH,KAJM,EAIJhjD,IAJI,CAIC,YAAM;AAEV,aAAI,CAACwd,KAAL,CAAWoH,WAAX,CAAuBqV,mBAAM,CAAC7B,KAA9B;;AACA,aAAO,OAAI,CAAC36B,KAAL,CAAWovC,OAAX,CAAmBE,MAAnB,CAAP;AAEH,KATM,EASJ/sC,IATI,CASC,YAAM;AAEV,aAAO,OAAI,CAACqjD,aAAL,EAAP;AAEH,KAbM,EAaJrjD,IAbI,CAaC,YAAM;AAEV,aAAO,OAAI,CAAC8iD,gBAAL,EAAP;AAEH,KAjBM,EAiBJ9iD,IAjBI,CAiBC,YAAM;AAEV;AAEA,UAAI,OAAI,CAAC+kD,YAAL,IAAqB,OAAI,CAAClhD,OAAL,KAAiB81B,0BAAa,CAACvH,KAApD,IAA6D,CAACntB,wDAAc,CAACd,GAAD,CAAhF,EAAuF;AACnF,eAAI,CAAC4gD,YAAL,CAAkB/9B,KAAlB,GAA0BpkB,KAA1B,CAAgC8B,mBAAhC;AACH;AACJ,KAxBM,CAAP;AAyBH,GA/8BL;;AAAA,SAi9BIo+C,gBAj9BJ,GAi9BI,4BAAmB;AACf,SAAK91B,KAAL,CAAWqwB,GAAX,CAAe,6BAAf;AACA,SAAKrwB,KAAL,CAAWqwB,GAAX,CAAe,4BAAf;AACA,SAAKrwB,KAAL,CAAWqwB,GAAX,CAAe,wBAAf;AACA,SAAKrwB,KAAL,CAAWqwB,GAAX,CAAe,eAAf;AACH,GAt9BL;;AAAA,SAy9BI6F,aAz9BJ,GAw9BI,yBACqC;AAAA;;AACjC,WAAO1hD,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAC1B,UAAI,OAAI,CAACtF,KAAL,CAAW2pD,SAAf,EAA0B;AACtB,eAAO,OAAI,CAAC3pD,KAAL,CAAW2pD,SAAX,EAAP;AACH;AACJ,KAJM,EAIJpnD,IAJI,CAIC,YAAM;AACV,UAAI,OAAI,CAACwlB,SAAT,EAAoB;AAChB,eAAOgJ,qCAAc,CAAC,OAAI,CAAChJ,SAAN,EAAiB4U,4BAAe,CAACC,cAAjC,EAAiD,OAAI,CAACrN,KAAL,CAAW4lB,QAA5D,CAArB;AACH;AACJ,KARM,CAAP;AASH,GAn+BL;;AAAA,SAs+BIuQ,aAt+BJ,GAq+BI,yBACqC;AAAA;;AACjC,WAAO3hD,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAC1B,UAAI,OAAI,CAACtF,KAAL,CAAW2pD,SAAf,EAA0B;AACtB,eAAO,OAAI,CAAC3pD,KAAL,CAAW2pD,SAAX,EAAP;AACH;AACJ,KAJM,EAIJpnD,IAJI,CAIC,YAAM;AACV,UAAI,OAAI,CAAC0lB,OAAT,EAAkB;AACd,eAAO8I,qCAAc,CAAC,OAAI,CAAC9I,OAAN,EAAe0U,4BAAe,CAACE,cAA/B,EAA+C,OAAI,CAACtN,KAAL,CAAW4lB,QAA1D,CAArB;AACH;AACJ,KARM,CAAP;AASH,GAh/BL;;AAAA,SAm/BIwQ,aAn/BJ,GAk/BI,yBACqC;AAAA;;AACjC,WAAO5hD,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAC1B,UAAI,OAAI,CAACyiB,SAAT,EAAoB;AAChB,eAAOkJ,qCAAc,CAAC,OAAI,CAAClJ,SAAN,EAAiB4U,4BAAe,CAACG,cAAjC,EAAiD,OAAI,CAACvN,KAAL,CAAW4lB,QAA5D,CAArB;AACH,OAFD,MAEO;AACH,eAAOpxC,yCAAY,CAACL,OAAb,EAAP;AACH;AACJ,KANM,CAAP;AAOH,GA3/BL;;AAAA,SA8/BIkiD,aA9/BJ,GA6/BI,yBACqC;AAAA;;AACjC,WAAO7hD,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAC1B,UAAI,OAAI,CAAC2iB,OAAT,EAAkB;AACd,eAAOgJ,qCAAc,CAAC,OAAI,CAAChJ,OAAN,EAAe0U,4BAAe,CAACI,cAA/B,EAA+C,OAAI,CAACxN,KAAL,CAAW4lB,QAA1D,CAArB;AACH,OAFD,MAEO;AACH,eAAOpxC,yCAAY,CAACL,OAAb,EAAP;AACH;AACJ,KANM,CAAP;AAOH;AAGD;;;;AAzgCJ;;AAAA,SA+gCIigD,KA/gCJ,GA+gCI,iBAAQ;AAEJ,QAAI,KAAKxhD,MAAL,IAAe,CAACqF,wDAAc,CAAC,KAAKrF,MAAN,CAAlC,EAAiD;AAC7C,WAAK49C,SAAL,CAAejzC,GAAf;AACA,WAAK3K,MAAL,CAAYwhD,KAAZ;AAEH,KAJD,MAIO;AAEH,YAAM,IAAI/hD,KAAJ,sBAAN;AACH;AACJ;AAGD;;;;AA5hCJ;;AAAA,SAmiCI4jD,uBAniCJ,GAkiCI,mCAC+C;AAAA;;AAC3C,WAAOzhD,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAC1B,UAAI,CAAC,OAAI,CAACy6C,SAAL,CAAelT,iBAApB,EAAuC;AACnC,eAAO9oC,yCAAY,CAACL,OAAb,EAAP;AACH;;AAED,aAAOK,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAE1B,YAAI,OAAI,CAACy/C,eAAT,EAA0B;AACtB,iBAAOp6B,qCAAc,CAAC,OAAI,CAACo6B,eAAN,CAAd,CAAqCxiD,IAArC,CAA0C;AAAA,mBAAM,OAAI,CAAC0iD,eAAX;AAAA,WAA1C,CAAP;AACH,SAFD,MAEO;AACH,iBAAO,OAAI,CAACA,eAAZ;AACH;AAEJ,OARM,EAQJ1iD,IARI,CAQC,UAAAmE,GAAG,EAAI;AAEX,YAAIsjB,GAAJ;;AAEA,YAAI;AACAA,aAAG,GAAGtjB,GAAG,CAACwM,QAAV;AACH,SAFD,CAEE,OAAO1Q,GAAP,EAAY;AACV;AACH;;AAED,YAAI+lB,EAAJ;;AAEA,YAAI;AACAA,YAAE,GAAG,OAAI,CAACw9B,cAAL,CAAoB,OAAI,CAAChG,SAAL,CAAelT,iBAAnC,EAAsD;AACvDra,kBAAM,EAAIA,qBAAM,CAAC9kB,IAAP,CAAYsc,GAAZ,CAD6C;AAEvD9W,oBAAQ,EAAE8W;AAF6C,WAAtD,CAAL;AAIH,SALD,CAKE,OAAOxnB,GAAP,EAAY;AACV,iBAAI,CAACu9C,SAAL,CAAe7rB,QAAf,CAAwB,kBAAxB,EAA4C;AAAE1xB,eAAG,EAAEA,GAAG,CAAC8B,KAAJ,GAAY9B,GAAG,CAAC8B,KAAhB,GAAwB9B,GAAG,CAAC5C,QAAJ;AAA/B,WAA5C;;AACAgN,iBAAO,CAACzI,KAAR,CAAc3B,GAAG,CAAC8B,KAAJ,GAAY9B,GAAG,CAAC8B,KAAhB,GAAwB9B,GAAtC,EAFU,CAEkC;;AAC5C;AACH;;AAED,YAAI;AACAinB,qDAAoB,CAAC/iB,GAAD,EAAM6hB,EAAN,CAApB;AACH,SAFD,CAEE,OAAO/lB,GAAP,EAAY;AACV,iBAAI,CAACu9C,SAAL,CAAe7rB,QAAf,CAAwB,kBAAxB,EAA4C;AAAE1xB,eAAG,EAAEA,GAAG,CAAC8B,KAAJ,GAAY9B,GAAG,CAAC8B,KAAhB,GAAwB9B,GAAG,CAAC5C,QAAJ;AAA/B,WAA5C;;AACAgN,iBAAO,CAACzI,KAAR,CAAc3B,GAAG,CAAC8B,KAAJ,GAAY9B,GAAG,CAAC8B,KAAhB,GAAwB9B,GAAtC,EAFU,CAEkC;AAC/C;;AA5BU,qBA8BgD,OAAO,OAAI,CAACu9C,SAAL,CAAeoC,UAAtB,KAAqC,QAArC,IAAiD,OAAI,CAACpC,SAAL,CAAeoC,UAAf,KAA8B,IAAhF,GACpD,OAAI,CAACpC,SAAL,CAAeoC,UADqC,GAEpD,EAhCK;AAAA,kCA8BL11B,KA9BK;AAAA,YA8BLA,KA9BK,6BA8BG,KA9BH;AAAA,mCA8BUC,MA9BV;AAAA,YA8BUA,MA9BV,8BA8BmB,KA9BnB;AAAA,oCA8B0BzE,OA9B1B;AAAA,YA8B0BA,OA9B1B,+BA8BoC,MA9BpC;;AAkCXA,eAAO,GAAGQ,4CAAc,CAACR,OAAD,EAAU+B,GAAV,CAAxB;;AAEA,YAAI/B,OAAO,KAAKwE,KAAK,IAAIC,MAAd,CAAX,EAAkC;AAC9B+qB,gDAAQ,CAACxvB,OAAD,EAAU,kBAA4C;AAAA,gBAAlC2vB,QAAkC,UAAzCnrB,KAAyC;AAAA,gBAAhBorB,SAAgB,UAAxBnrB,MAAwB;;AAC1D,mBAAI,CAAC22B,MAAL,CAAY52B,KAAK,GAAGmrB,QAAH,GAAc92C,SAA/B,EAA0C4rB,MAAM,GAAGmrB,SAAH,GAAe/2C,SAA/D;AACH,WAFO,EAEL;AAAE2rB,iBAAK,EAALA,KAAF;AAASC,kBAAM,EAANA,MAAT;AAAiBhmB,eAAG,EAAHA;AAAjB,WAFK,CAAR;AAGH;AACJ,OAjDM,CAAP;AAkDH,KAvDM,CAAP;AAwDH;AAGD;;;;AA/lCJ;;AAAA,SAqmCIq/C,cArmCJ,GAqmCI,wBAAeuE,QAAf,EAA8D35C,OAA9D,EAAmG;AAAA;;AAAA,QAArCA,OAAqC;AAArCA,aAAqC,GAAlB,EAAkB;AAAA;;AAAA,iBAK1F,KAAKovC,SAAL,CAAelyB,UAAf,IAA6B,EAL6D;AAAA,8BAG3FpB,KAH2F;AAAA,QAG3FA,KAH2F,6BAG9EkR,+BAAkB,CAACC,KAH2D;AAAA,+BAI3FlR,MAJ2F;AAAA,QAI3FA,MAJ2F,8BAI9EiR,+BAAkB,CAACz2C,MAJ2D;;AAO/F,WAAOojE,QAAQ,CAAChoD,IAAT,CAAc,IAAd;AACHomB,QAAE,EAAayT,wBAAW,CAAC7B,IAAzB,SAAmC,KAAKylB,SAAL,CAAer2B,GAAlD,SAA2D,KAAK1pB,KAAL,CAAWoJ,GADrE;AAEHpJ,WAAK,EAAMsqD,QAAQ,CAAClgB,WAAT,GAAuB,IAAvB,GAA8B,KAAKpqC,KAF3C;AAGH0pB,SAAG,EAAQ,KAAKq2B,SAAL,CAAer2B,GAHvB;AAIHtjB,aAAO,EAAI,KAAKA,OAJb;AAKHihD,YAAM,EAAK,KAAKpB,SAAL,EALR;AAMHsE,WAAK,EAAMpuB,wBANR;AAOHquB,eAAS,EAAE7tB,4BAPR;AAQH8tB,aAAO,EAAIvuB,0BARR;AASHwuB,WAAK,EAAMluB,mBATR;AAUH2R,aAAO,EAAI;AACP5kB,aAAK,EAAE;AAAA,iBAAM,OAAI,CAACm6B,SAAL,EAAN;AAAA,SADA;AAEPC,aAAK,EAAE;AAAA,iBAAM,OAAI,CAACA,KAAL,EAAN;AAAA;AAFA,OAVR;AAcHx8C,QAAE,EAAU,YAAC2f,SAAD,EAAY1jB,OAAZ;AAAA,eAAwB,OAAI,CAAC+D,EAAL,CAAQ2f,SAAR,EAAmB1jB,OAAnB,CAAxB;AAAA,OAdT;AAeHovB,YAAM,EAANA,qBAfG;AAgBHtf,cAAQ,EAARA,QAhBG;AAiBH2a,gBAAU,EAAE;AAAEpB,aAAK,EAALA,KAAF;AAASC,cAAM,EAANA;AAAT;AAjBT,OAkBA/b,OAlBA,EAAP;AAoBH,GAhoCL;;AAAA,SAmoCIy0C,aAnoCJ,GAkoCI,uBACcn9B,OADd,EAC2D;AAAA;;AACvD,WAAOlkB,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAC1B,UAAIijB,EAAJ;;AAEA,UAAIN,OAAJ,EAAa;AACTM,UAAE,GAAGM,iCAAU,CAACZ,OAAD,CAAf;AACH,OAFD,MAEO;AACHM,UAAE,GAAGrV,QAAQ,CAAChE,IAAd;AACH;;AAED,UAAI,CAACqZ,EAAL,EAAS;AACL,cAAM,IAAI3mB,KAAJ,iDAAN;AACH;;AAED,UAAI,CAAC,OAAI,CAACm+C,SAAL,CAAehT,iBAApB,EAAuC;AACnC,YAAI,OAAI,CAAC+a,MAAL,CAAY1D,6BAAhB,EAA+C;AAC3C,gBAAM,IAAIxiD,KAAJ,yCAAiD,OAAI,CAACwE,OAAtD,CAAN;AACH;;AAED;AACH;;AAED,UAAI2hB,SAAS,GAAG,OAAI,CAACg+B,cAAL,CAAoB,OAAI,CAAChG,SAAL,CAAehT,iBAAnC,EAAsD;AAClEhlB,iBAAS,EAAEQ;AADuD,OAAtD,CAAhB;;AAIA,aAAI,CAACR,SAAL,GAAiBA,SAAjB;AACA6I,wCAAW,CAAC,OAAI,CAAC7I,SAAN,CAAX;AACAD,wCAAW,CAACS,EAAD,EAAK,OAAI,CAACR,SAAV,CAAX;;AAEA,UAAI,OAAI,CAAC+/B,MAAL,CAAY1D,6BAAhB,EAA+C;AAC3C,eAAI,CAACn8B,OAAL,GAAe,OAAI,CAACg+B,SAAL,EAAf;AACAr1B,0CAAW,CAAC,OAAI,CAAC3I,OAAN,CAAX;;AAEA,YAAI,CAAC,OAAI,CAACA,OAAV,EAAmB;AACf,gBAAM,IAAIrmB,KAAJ,CAAU,iDAAV,CAAN;AACH;;AAEDgvB,0CAAW,CAAC,OAAI,CAAC3I,OAAN,CAAX;AACH;;AAED,aAAI,CAACsH,KAAL,CAAW4lB,QAAX,CAAoB,0BAApB,EAAgD,YAAM;AAElD,YAAI,OAAI,CAACptB,SAAL,IAAkB,OAAI,CAACA,SAAL,CAAe+I,UAArC,EAAiD;AAC7C,iBAAI,CAAC/I,SAAL,CAAe+I,UAAf,CAA0BjH,WAA1B,CAAsC,OAAI,CAAC9B,SAA3C;AACH;;AAED,eAAO,OAAI,CAACA,SAAZ;AACH,OAPD;AAQH,KAhDM,CAAP;AAiDH,GArrCL;;AAAA,SAurCIw9B,qBAvrCJ,GAurCI,iCAAwB;AACpB,SAAKh2B,KAAL,CAAWqwB,GAAX,CAAe,wBAAf;AACH;AAGD;;;;AA5rCJ;;AAAA,SAksCI2D,OAlsCJ,GAksCI,mBAA+B;AAAA;;AAC3B,WAAOx/C,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAC1B,UAAI,OAAI,CAACiqB,KAAL,CAAWswB,QAAX,EAAJ,EAA2B;AACvB,eAAI,CAACE,SAAL,CAAejzC,GAAf;;AACAtG,uCAAK;AACL,eAAO,OAAI,CAAC+oB,KAAL,CAAW3pB,GAAX,EAAP;AACH;AACJ,KANM,CAAP;AAOH,GA1sCL;;AAAA,SA6sCIgiD,OA7sCJ,GA6sCI,iBAAQzhD,MAAR,EAAiE;AAAA;;AAC7D,WAAOpC,yCAAY,CAACuB,GAAb,CAAiBa,MAAjB,EAAyBhB,KAAzB,CAA+B,UAAA3C,GAAG,EAAI;AACzC,aAAI,CAACy/C,MAAL,CAAYx9C,MAAZ,CAAmBjC,GAAnB;AACH,KAFM,EAEJD,IAFI,CAEC,YAAM;AACV,aAAO,OAAI,CAAC0/C,MAAZ;AACH,KAJM,CAAP;AAKH;AAGD;;;;AAttCJ;;AAAA,SA4tCI99C,KA5tCJ,GA4tCI,eAAM3B,GAAN,EAAwC;AAAA;;AACpC;AACA,WAAOuB,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAE1B,aAAI,CAAC8hD,aAAL,GAAqB,OAAI,CAACA,aAAL,IAAsB,EAA3C;;AAEA,UAAI,OAAI,CAACA,aAAL,CAAmBvkD,OAAnB,CAA2BL,GAA3B,MAAoC,CAAC,CAAzC,EAA4C;AACxC;AACA;AACH;;AAED,aAAI,CAAC4kD,aAAL,CAAmBtkD,IAAnB,CAAwBN,GAAxB;;AAEA,aAAI,CAACy/C,MAAL,CAAYx9C,MAAZ,CAAmBjC,GAAnB;;AAEA,aAAO,OAAI,CAAC+gD,OAAL,EAAP;AAEH,KAfM,EAeJhhD,IAfI,CAeC,YAAM;AAEV,UAAI,OAAI,CAACvC,KAAL,CAAWkF,OAAf,EAAwB;AACpB,eAAO,OAAI,CAAClF,KAAL,CAAWkF,OAAX,CAAmB1C,GAAnB,CAAP;AACH;AAEJ,KArBM,EAqBJ2C,KArBI,CAqBE,UAAAwlD,MAAM,EAAI;AAAE;AAEjB,YAAM,IAAI/oD,KAAJ,yDAAiE+kB,qCAAc,CAACnkB,GAAD,CAA/E,YAA6FmkB,qCAAc,CAACgkC,MAAD,CAA3G,CAAN;AAEH,KAzBM,EAyBJpoD,IAzBI,CAyBC,YAAM;AAEV,UAAI,CAAC,OAAI,CAACvC,KAAL,CAAWkF,OAAhB,EAAyB;AACrB,cAAM1C,GAAN;AACH;AACJ,KA9BM,CAAP;AA+BH,GA7vCL;;AAAA,kBAiwCWooD,UAjwCX,GAiwCI,sBAAyC;AACrC,QAAI7kD,OAAO,GAAG,EAAd;;AAEA,WAAOohD,eAAe,CAACoB,gBAAhB,CAAiCrlD,MAAxC,EAAgD;AAC5C6C,aAAO,CAACjD,IAAR,CAAaqkD,eAAe,CAACoB,gBAAhB,CAAiC,CAAjC,EAAoChF,OAApC,EAAb;AACH;;AAED,WAAOx/C,yCAAY,CAAC6B,GAAb,CAAiBG,OAAjB,EAA0BxD,IAA1B,CAA+B0E,mBAA/B,CAAP;AACH,GAzwCL;;AAAA;AAAA;AAAA,wBAujBqC;AAE7B,UAAI,CAAC,KAAKb,OAAV,EAAmB;AACf,cAAM,IAAIxE,KAAJ,CAAU,iBAAV,CAAN;AACH;;AAED,aAAOsiD,cAAc,CAAC,KAAK99C,OAAN,CAArB;AACH;AA9jBL;;AAAA;AAAA,EAAwC05C,kBAAxC,WA+vCWyI,gBA/vCX,GA+vC0D,EA/vC1D,qEAiKK50B,uBAjKL,+IA0MKA,uBA1ML,8IAmOKA,uBAnOL,8IAuYKA,uBAvYL,0IAwhBKA,uBAxhBL,+IAqiBKA,uBAriBL,0JA8iBKA,uBA9iBL,kJA43BKA,uBA53BL,iJAm5BKA,uBAn5BL,4JAw6BKA,uBAx6BL,4JAi7BKA,uBAj7BL,yJAw9BKA,uBAx9BL,wJAq+BKA,uBAr+BL,wJAk/BKA,uBAl/BL,wJA6/BKA,uBA7/BL,kKAkiCKA,uBAliCL,kKAkoCKA,uBAloCL,mG;;;;;AC3DA;AACA;AAEA;AACA;AACA;AAEA;AAyBO,IAAMk3B,0BAAb;AAAA;AAAA;AAAA;;AAeI,6BAAY9K,SAAZ,EAAsCt4C,MAAtC,EAAsEkJ,OAAtE,EAAqG;AAAA;;AACjG;AADiG,UAbrGlJ,MAaqG;AAAA,UAZrGrB,OAYqG;AAAA,UAXrGpG,KAWqG;AAAA,UATrG2jD,KASqG;AAAA,UARrGD,SAQqG;AAAA,UAPrG98C,SAOqG;AAAA,UANrGzC,KAMqG;AAAA,UALrGgD,EAKqG;AAAA,UAHrGq9C,eAGqG;AAAA,UAFrGh9C,cAEqG;AAGjG,UAAKu4C,SAAL,GAAiBA,SAAjB;;AACA,UAAKxwB,KAAL,CAAWnK,GAAX,CAAe,QAAf,EAAyB3d,MAAzB;;AAEA,UAAKrB,OAAL,GAAeuK,OAAO,CAACvK,OAAvB;AAEA,UAAKpG,KAAL,GAAa;AACToJ,SAAG,EAASuH,OAAO,CAAC3Q,KAAR,CAAcoJ,GADjB;AAETykB,gBAAU,EAAEld,OAAO,CAAC3Q,KAAR,CAAc6tB,UAFjB;AAGTuhB,aAAO,EAAKz+B,OAAO,CAAC3Q,KAAR,CAAcovC,OAHjB;AAITua,eAAS,EAAGh5C,OAAO,CAAC3Q,KAAR,CAAc2pD;AAJjB,KAAb;;AARiG,+CAe5E5J,SAAS,CAAC+B,YAAV,EAf4E,8CAelD;AAA1C,UAAI8H,QAAQ,8BAAZ;;AACD;AACA,UAAIzlC,IAAI,GAAG,MAAK47B,SAAL,CAAe4B,OAAf,CAAuBiI,QAAvB,CAAX;;AAEA,UAAIzlC,IAAI,CAACgpB,aAAT,EAAwB;AACpB,cAAKntC,KAAL,CAAW4pD,QAAX,IAAuBj5C,OAAO,CAAC3Q,KAAR,CAAc4pD,QAAd,CAAvB;AACH;AACJ;;AAED,UAAKjG,KAAL,GAAa,YAAM;AACf,aAAO5/C,yCAAY,CAAC6B,GAAb,CAAiB,CACpB,MAAK4B,cAAL,GAAsBjF,IAAtB,CAA2B,UAAAo0B,MAAM,EAAI;AACjC,YAAI,CAACA,MAAL,EAAa;AACTx0B,gBAAM,CAACkO,IAAP,CAAY,EAAZ,EAAgB,MAAKm0C,eAArB;AACH;AACJ,OAJD,CADoB,EAMpB7zC,OAAO,CAACk5C,SAAR,CAAkBlG,KAAlB,CAAwBrhD,IAAxB,+BANoB,CAAjB,EAOJC,IAPI,CAOC0E,mBAPD,CAAP;AAQH,KATD;;AAWA,UAAKsoB,KAAL,CAAW4lB,QAAX,CAAoB,sBAApB,EAA4C,YAAM;AAC9C;AACA,YAAKwO,KAAL,GAAa18C,mBAAb;AACH,KAHD;;AAKA,UAAKy8C,SAAL,GAAiB/yC,OAAO,CAACk5C,SAAR,CAAkBnG,SAAnC;AACA,UAAK98C,SAAL,GAAiB+J,OAAO,CAACk5C,SAAR,CAAkBjjD,SAAnC;AACA,UAAKzC,KAAL,GAAiBwM,OAAO,CAACk5C,SAAR,CAAkB1lD,KAAnC;AACA,UAAKgD,EAAL,GAAiBwJ,OAAO,CAACk5C,SAAR,CAAkB1iD,EAAnC;AAEA,QAAIg+C,iBAAiB,GAAGjB,cAAc,CAACvzC,OAAO,CAACvK,OAAT,CAAd,CAAgC++C,iBAAxD;;AA7CiG,sCA+CjF/kD,MAAM,CAACC,IAAP,CAAY8kD,iBAAZ,CA/CiF,qCA+CjD;AAA3C,UAAI5kD,GAAG,qBAAP;AACD;AACA,YAAKA,GAAL,IAAY4mD,sBAAe,CAACxiD,SAAhB,CAA0BpE,GAA1B,CAAZ;AACH;;AAED,UAAKikD,eAAL,GAAuB7zC,OAAO,CAAC6zC,eAA/B;AACA,UAAKh9C,cAAL,GAAsBmJ,OAAO,CAACnJ,cAA9B;AAEA2/C,0BAAe,CAACxiD,SAAhB,CAA0B8iD,uBAA1B,CAAkDnlD,IAAlD;;AAEA,UAAK2gD,aAAL;;AAzDiG;AA0DpG;;AAzEL;;AAAA,SAoFIA,aApFJ,GAoFI,yBAAgB;AAAA;;AACZ,QAAI8G,mBAAmB,GAAGtwB,uDAAa,CAAC,KAAKhyB,MAAN,EAAc;AAAA,aAAM,MAAI,CAAC87C,OAAL,EAAN;AAAA,KAAd,EAAoC,IAApC,CAAvC;AACA,SAAKh0B,KAAL,CAAW4lB,QAAX,CAAoB,4BAApB,EAAkD4U,mBAAmB,CAAC1mD,MAAtE;AACH,GAvFL;;AAAA,SAyFIynD,YAzFJ,GAyFI,sBAAa1kD,OAAb,EAAsD;AAElD,QAAI++C,iBAAiB,GAAGjB,cAAc,CAAC99C,OAAD,CAAd,CAAwB++C,iBAAhD;AAEA,QAAI0E,SAAS,GAAG,EAAhB;AAEA,QAAIhiC,IAAI,GAAG,IAAX;;AANkD;AAQ7C,UAAItnB,GAAG,qBAAP;;AACDspD,eAAS,CAACtpD,GAAD,CAAT,GAAiB,SAASwqD,gBAAT,GAAoC;AACjD;AACA,eAAO5D,sBAAe,CAACxiD,SAAhB,CAA0BpE,GAA1B,EAA+B+F,KAA/B,CAAqCuhB,IAArC,EAA2CngB,SAA3C,CAAP;AACH,OAHD;AAT8C;;AAAA,sCAQlCtH,MAAM,CAACC,IAAP,CAAY8kD,iBAAZ,CARkC,qCAQF;AAAA;AAK/C;;AAED,WAAO0E,SAAP;AACH,GAzGL;;AAAA,SA2GItG,OA3GJ,GA2GI,mBAA+B;AAC3B,WAAO,KAAKh0B,KAAL,CAAW3pB,GAAX,EAAP;AACH,GA7GL;;AAAA;AAAA;AAAA,wBA2EqC;AAE7B,UAAI,CAAC,KAAKQ,OAAV,EAAmB;AACf,cAAM,IAAIxE,KAAJ,CAAU,iBAAV,CAAN;AACH;;AAED,aAAOsiD,cAAc,CAAC,KAAK99C,OAAN,CAArB;AACH;AAlFL;;AAAA;AAAA,EAA0C05C,kBAA1C,E;;;;;AChCA;AACA;;AAIA,SAASkL,uBAAT,CAAoCr6C,OAApC,EAAuE;AAEnE,MAAIA,OAAO,CAAC3Q,KAAR,IAAiB,EAAE,OAAO2Q,OAAO,CAAC3Q,KAAf,KAAyB,QAA3B,CAArB,EAA2D;AACvD,UAAM,IAAI4B,KAAJ,0CAAN;AACH;;AAED,MAAI+O,OAAO,CAAC3Q,KAAZ,EAAmB;AAAA,sCACCI,MAAM,CAACC,IAAP,CAAYsQ,OAAO,CAAC3Q,KAApB,CADD,qCAC6B;AAAvC,UAAIO,GAAG,qBAAP;AAED;AACA,UAAI4jB,IAAI,GAAGxT,OAAO,CAAC3Q,KAAR,CAAcO,GAAd,CAAX;;AAEA,UAAI,CAAC4jB,IAAD,IAAS,EAAE,OAAOA,IAAP,KAAgB,QAAlB,CAAb,EAA0C;AACtC,cAAM,IAAIviB,KAAJ,6BAAqCrB,GAArC,sBAAN;AACH;;AAED,UAAI,CAAC4jB,IAAI,CAAC1iB,IAAV,EAAgB;AACZ,cAAM,IAAIG,KAAJ,sBAAN;AACH;;AAED,UAAIq6B,4BAAe,CAACp5B,OAAhB,CAAwBshB,IAAI,CAAC1iB,IAA7B,MAAuC,CAAC,CAA5C,EAA+C;AAC3C,cAAM,IAAIG,KAAJ,sCAA8Cq6B,4BAAe,CAACx7B,IAAhB,CAAqB,IAArB,CAA9C,CAAN;AACH;;AAED,UAAI0jB,IAAI,CAAC6oB,QAAL,IAAiB7oB,IAAI,CAACnQ,GAA1B,EAA+B;AAC3B,cAAM,IAAIpS,KAAJ,8CAAN;AACH;AACJ;AACJ;AACJ,C,CAED;;;AACO,SAASgrC,QAAT,CAAqBj8B,OAArB,EAAyD;AAAE;AAE9D,MAAI,CAACA,OAAL,EAAc;AACV,UAAM,IAAI/O,KAAJ,iCAAN;AACH;;AAED,MAAI,CAAC+O,OAAO,CAAC+Y,GAAT,IAAgB,CAAC/Y,OAAO,CAAC+Y,GAAR,CAAYloB,KAAZ,CAAkB,cAAlB,CAArB,EAAwD;AACpD,UAAM,IAAII,KAAJ,2BAAmC+O,OAAO,CAAC+Y,GAA3C,CAAN;AACH;;AAEDshC,yBAAuB,CAACr6C,OAAD,CAAvB;;AAEA,MAAIA,OAAO,CAACkd,UAAZ,EAAwB;AACpB,QAAIld,OAAO,CAACkd,UAAR,IAAsB,CAACoF,2BAAI,CAACtiB,OAAO,CAACkd,UAAR,CAAmBpB,KAApB,CAA3B,IAAyD,CAACuG,6BAAM,CAACriB,OAAO,CAACkd,UAAR,CAAmBpB,KAApB,CAApE,EAAgG;AAC5F,YAAM,IAAI7qB,KAAJ,kEAAN;AACH;;AAED,QAAI+O,OAAO,CAACkd,UAAR,IAAsB,CAACoF,2BAAI,CAACtiB,OAAO,CAACkd,UAAR,CAAmBnB,MAApB,CAA3B,IAA0D,CAACsG,6BAAM,CAACriB,OAAO,CAACkd,UAAR,CAAmBnB,MAApB,CAArE,EAAkG;AAC9F,YAAM,IAAI9qB,KAAJ,mEAAN;AACH;AACJ;;AAED,MAAI+O,OAAO,CAAC+7B,QAAZ,EAAsB;AAElB,QAAI/7B,OAAO,CAAC+7B,QAAR,CAAiBxjB,KAAjB,IAA0B,CAACkL,IAA/B,EAA2D;AACvD,YAAM,IAAIxyB,KAAJ,2EAAN;AACH;;AAED,QAAIqpD,UAAU,GAAG,KAAjB;;AANkB,sCAQE7qD,MAAM,CAACC,IAAP,CAAYsQ,OAAO,CAAC+7B,QAApB,CARF,qCAQiC;AAA9C,UAAItmC,OAAO,qBAAX;;AAED,UAAIo3B,+BAAkB,CAAC36B,OAAnB,CAA2BuD,OAA3B,MAAwC,CAAC,CAA7C,EAAgD;AAC5C,cAAM,IAAIxE,KAAJ,gCAAwCwE,OAAxC,CAAN;AACH;;AAED,UAAKuK,OAAO,CAAC+7B,QAAR,IAAoB/7B,OAAO,CAAC+7B,QAAR,CAAiBtmC,OAAjB,CAArB,IAAoDuK,OAAO,CAAC+7B,QAAR,IAAoB/7B,OAAO,CAAC+7B,QAAR,CAAiBtmC,OAAjB,MAA8BtF,SAA1G,EAAsH;AAClHmqD,kBAAU,GAAG,IAAb;AACH;AACJ;;AAED,QAAI,CAACA,UAAL,EAAiB;AACb,YAAM,IAAIrpD,KAAJ,8BAAN;AACH;AACJ;;AAED,MAAI+O,OAAO,CAACu6C,cAAZ,EAA4B;AACxB,QAAI1tB,+BAAkB,CAAC36B,OAAnB,CAA2B8N,OAAO,CAACu6C,cAAnC,MAAuD,CAAC,CAA5D,EAA+D;AAC3D,YAAM,IAAItpD,KAAJ,iCAAwC+O,OAAO,CAACu6C,cAAR,IAA0B,SAAlE,EAAN;AACH;;AAED,QAAIv6C,OAAO,CAAC+7B,QAAR,IAAoB/7B,OAAO,CAACu6C,cAA5B,IAA8C,CAACv6C,OAAO,CAAC+7B,QAAR,CAAiB/7B,OAAO,CAACu6C,cAAzB,CAAnD,EAA6F;AACzF,YAAM,IAAItpD,KAAJ,wCAA+C+O,OAAO,CAACu6C,cAAR,IAA0B,SAAzE,EAAN;AACH;AACJ;;AAED,MAAIv6C,OAAO,CAAC5B,GAAR,IAAe4B,OAAO,CAACw7B,QAA3B,EAAqC;AACjC,UAAM,IAAIvqC,KAAJ,sDAAN;AACH;;AAED,MAAI+O,OAAO,CAACw6C,UAAZ,EAAwB;AACpB,QAAI,OAAOx6C,OAAO,CAACw6C,UAAf,KAA8B,QAAlC,EAA4C;AACxC,YAAM,IAAIxlD,SAAJ,8CAAN;AACH;;AAED,QAAI,CAACgL,OAAO,CAACw7B,QAAT,IAAqB,OAAOx7B,OAAO,CAAC5B,GAAf,KAAuB,QAAhD,EAA0D;AACtD,YAAM,IAAInN,KAAJ,yDAAN;AACH;;AAED,QAAI+O,OAAO,CAAC5B,GAAR,IAAe,OAAO4B,OAAO,CAAC5B,GAAf,KAAuB,QAAtC,IAAkD,CAAC4B,OAAO,CAAC5B,GAAR,CAAY4B,OAAO,CAACw6C,UAApB,CAAvD,EAAwF;AACpF,YAAM,IAAIvpD,KAAJ,oCAA4C+O,OAAO,CAACw6C,UAApD,CAAN;AACH;AACJ;;AAED,MAAIx6C,OAAO,CAAC5B,GAAR,IAAe,OAAO4B,OAAO,CAAC5B,GAAf,KAAuB,QAA1C,EAAoD;AAEhD,QAAI,CAAC4B,OAAO,CAACw6C,UAAb,EAAyB;AACrB,YAAM,IAAIvpD,KAAJ,sDAAN;AACH;;AAJ+C,sCAMhCxB,MAAM,CAACC,IAAP,CAAYsQ,OAAO,CAAC5B,GAApB,CANgC,qCAMN;AAArC,UAAI/F,GAAG,qBAAP;;AACD,UAAI,CAAC2H,OAAO,CAAC5B,GAAR,CAAY/F,GAAZ,CAAL,EAAuB;AACnB,cAAM,IAAIpH,KAAJ,gCAAwCoH,GAAxC,CAAN;AACH;AACJ;AACJ;;AAED,MAAI2H,OAAO,CAACk8B,iBAAR,IAA6B,OAAOl8B,OAAO,CAACk8B,iBAAf,KAAqC,UAAtE,EAAkF;AAC9E,UAAM,IAAIjrC,KAAJ,uDAAN;AACH;;AAED,MAAI+O,OAAO,CAACo8B,iBAAR,IAA6B,OAAOp8B,OAAO,CAACo8B,iBAAf,KAAqC,UAAtE,EAAkF;AAC9E,UAAM,IAAInrC,KAAJ,uDAAN;AACH;AACJ,C;;ACpID;AAIO,SAASwpD,wBAAT,OAAiJ;AAAA,MAA7G1iC,EAA6G,QAA7GA,EAA6G;AAAA,MAAzGgB,GAAyG,QAAzGA,GAAyG;AAAA,MAApGtjB,OAAoG,QAApGA,OAAoG;AAAA,MAA3FmkD,KAA2F,QAA3FA,KAA2F;AAAA,MAApFlD,MAAoF,QAApFA,MAAoF;AAAA,MAA5E70B,MAA4E,QAA5EA,MAA4E;AAAA,6BAApE3E,UAAoE;AAAA,MAArDpB,KAAqD,mBAArDA,KAAqD;AAAA,MAA9CC,MAA8C,mBAA9CA,MAA8C;AAEpJ,SACI;AAAK,MAAE,EAAGhE,EAAV;AAAe,SAAK,EAAO6hC,KAAK,CAACjwB,IAAb,SAAuBiwB,KAAK,CAACjwB,IAA7B,aAA2C5Q,GAA3C,SAAoD6gC,KAAK,CAACjwB,IAA1D,iBAA4El0B;AAAhG,KACI,kDAEYsiB,EAFZ,WAEsBA,EAFtB,YAEiC6hC,KAAK,CAACnuB,MAFvC,2CAGsB3P,KAHtB,2CAIuBC,MAJvB,yDAOYhE,EAPZ,YAOuB6hC,KAAK,CAACnuB,MAP7B,uJAYY1T,EAZZ,YAYuB6hC,KAAK,CAACnuB,MAZ7B,8TAqBY1T,EArBZ,YAqBuB6hC,KAAK,CAACnuB,MArB7B,kBAqBkDmuB,KAAK,CAACl6B,OArBxD,+FAyBY3H,EAzBZ,YAyBuB6hC,KAAK,CAACnuB,MAzB7B,kBAyBkDmuB,KAAK,CAAChuB,SAzBxD,sFADJ,EAgCM8qB,MAhCN,CADJ;AAoCH,C;;AC1CD;AAIO,SAASgE,wBAAT,OAAgF;AAAA,MAA5C74B,MAA4C,QAA5CA,MAA4C;AACnF,SACI,qBACI,qBACI,+pDADJ,CADJ,EAgDI,qBACI;AAAK,SAAK,EAAC;AAAX,KACI;AAAK,MAAE,EAAC,QAAR;AAAiB,SAAK,EAAC;AAAvB,IADJ,CADJ,CAhDJ,CADJ;AAwDH,C;;AC5DD;;;ACGA;;AAiHA;;;;;;AAOO,SAAS84B,gBAAT,GAA+D;AAClE,SAAO;AAEH;AAEAtiD,OAAG,EAAE;AACDvH,UAAI,EAAQ,QADX;AAEDurC,cAAQ,EAAI,KAFX;AAGDC,gBAAU,EAAE,IAHX;AAIDj5B,SAJC,iBAIc;AACX,eAAO,KAAKm3C,UAAZ;AACH;AANA,KAJF;AAaH/hD,OAAG,EAAE;AACD3H,UAAI,EAAE,QADL;AAEDuS,SAFC,iBAEc;AACX,eAAOqK,+BAAQ,EAAf;AACH,OAJA;AAKD4uB,gBAAU,EAAE;AALX,KAbF;AAqBHliC,YAAQ,EAAE;AACNtJ,UAAI,EAAQ,QADN;AAENurC,cAAQ,EAAI,KAFN;AAGNC,gBAAU,EAAE,IAHN;AAINj5B,SAJM,iBAIS;AACX,eAAO,KAAKu3C,eAAZ;AACH;AANK,KArBP;AA8BH;AAEAx8C,OAAG,EAAE;AACDtN,UAAI,EAAS,QADZ;AAEDurC,cAAQ,EAAK,KAFZ;AAGDpqC,aAAO,EAAM,IAHZ;AAIDyqC,iBAAW,EAAE;AAJZ,KAhCF;AAuCH3mC,OAAG,EAAE;AACDjF,UAAI,EAAS,QADZ;AAEDurC,cAAQ,EAAK,KAFZ;AAGDK,iBAAW,EAAE;AAHZ,KAvCF;AA6CHxf,cAAU,EAAE;AACRpsB,UAAI,EAAM,QADF;AAERurC,cAAQ,EAAE;AAFF,KA7CT;AAkDH3iC,WAAO,EAAE;AACL5I,UAAI,EAAQ,QADP;AAELurC,cAAQ,EAAI,KAFP;AAGLC,gBAAU,EAAE,IAHP;AAILj5B,SAJK,iBAIU;AACX,eAAO,KAAK3J,OAAZ;AACH;AANI,KAlDN;AA2DH;AAEA9E,WAAO,EAAE;AACL9D,UAAI,EAAS,QADR;AAELurC,cAAQ,EAAK,KAFR;AAGLK,iBAAW,EAAE;AAHR,KA7DN;AAmEHsc,aAAS,EAAE;AACPloD,UAAI,EAAS,UADN;AAEPurC,cAAQ,EAAK,KAFN;AAGP/lC,UAAI,EAAS,IAHN;AAIP4rB,eAAS,EAAI,IAJN;AAKP9f,aAAO,EAAM,IALN;AAMPs6B,iBAAW,EAAE;AANN,KAnER;AA4EH8a,WAAO,EAAE;AACL1mD,UAAI,EAAS,UADR;AAELurC,cAAQ,EAAK,KAFR;AAGL/lC,UAAI,EAAS,IAHR;AAIL4rB,eAAS,EAAI,IAJR;AAKLwa,iBAAW,EAAE;AALR,KA5EN;AAoFH;AAEAwa,YAAQ,EAAE;AACNpmD,UAAI,EAAS,UADP;AAENurC,cAAQ,EAAK,KAFP;AAGN/lC,UAAI,EAAS,IAHP;AAIN4rB,eAAS,EAAI,IAJP;AAKNwa,iBAAW,EAAE;AALP,KAtFP;AA8FH;AAEA+B,WAAO,EAAE;AACL3tC,UAAI,EAAS,UADR;AAELurC,cAAQ,EAAK,KAFR;AAGL/lC,UAAI,EAAS,IAHR;AAILgB,UAAI,EAAS,IAJR;AAKL4qB,eAAS,EAAI,IALR;AAMLwa,iBAAW,EAAE;AANR,KAhGN;AAyGHoK,YAAQ,EAAE;AACNh2C,UAAI,EAAS,UADP;AAENurC,cAAQ,EAAK,KAFP;AAGN/lC,UAAI,EAAS,IAHP;AAINomC,iBAAW,EAAE;AAJP,KAzGP;AAgHH;AAEA+c,aAAS,EAAE;AACP3oD,UAAI,EAAS,UADN;AAEPurC,cAAQ,EAAK,KAFN;AAGPj6B,aAAO,EAAM,IAHN;AAIP8f,eAAS,EAAI,IAJN;AAKPwa,iBAAW,EAAE,KALN;AAMPr5B,SANO,iBAMc;AACjB,eAAO,SAASo2C,SAAT,CAAmB5nD,GAAnB,EAAuC;AAC1C,cAAI,KAAKxC,KAAL,CAAWkF,OAAf,EAAwB;AACpB,mBAAO,KAAKlF,KAAL,CAAWkF,OAAX,CAAmB1C,GAAnB,CAAP;AACH;;AACD,gBAAMA,GAAN;AACH,SALD;AAMH;AAbM,KAlHR;AAkIH;AAEA0C,WAAO,EAAE;AACLzD,UAAI,EAAS,UADR;AAELurC,cAAQ,EAAK,KAFR;AAGLna,eAAS,EAAI,IAHR;AAILwa,iBAAW,EAAE,IAJR;AAKLplC,UAAI,EAAS,IALR;AAML+L,SANK,iBAMgB;AACjB,eAAO,SAAS9O,OAAT,CAAiB1C,GAAjB,EAA8B;AACjCO,oBAAU,CAAC,YAAM;AACb,kBAAMP,GAAN;AACH,WAFS,CAAV;AAGH,SAJD;AAKH;AAZI;AApIN,GAAP;AAmJH,C;;;;;;;;AChRD;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AAEA,IAAMgpD,iBAAO,GAAG;AAAEC,SAAO,EAAPA,kBAAF;AAAWC,UAAQ,EAARA,mBAAX;AAAqBC,SAAO,EAAPA,kBAArB;AAA8BC,OAAK,EAALA,gBAA9B;AAAqCC,KAAG,EAAHA,cAArC;AAA0Cz4C,QAAM,EAANA,iBAAMA;AAAhD,CAAhB;AAEA;;;;;;;;;;AAkDO,IAAM04C,mBAAb;AAAA;AAAA;AAAA;;AA0CI,qBAAYn7C,OAAZ,EAA+C;AAAA;;AAC3C;AAD2C,UAxC/C5Q,IAwC+C;AAAA,UAvC/C6hD,UAuC+C;AAAA,UArC/Cl4B,GAqC+C;AAAA,UApC/C3a,GAoC+C;AAAA,UAlC/C3H,MAkC+C;AAAA,UAjC/ColC,SAiC+C;AAAA,UAhC/CC,YAgC+C;AAAA,UA9B/CzsC,KA8B+C;AAAA,UA7B/CgpD,YA6B+C;AAAA,UA3B/Cn7B,UA2B+C;AAAA,UA1B/Cqe,SA0B+C;AAAA,UAzB/CiW,UAyB+C;AAAA,UAxB/C4J,eAwB+C;AAAA,UAtB/CR,eAsB+C;AAAA,UArB/C5I,oBAqB+C;AAAA,UAnB/Ct4C,OAmB+C;AAAA,UAlB/C8gD,UAkB+C;AAAA,UAjB/Chf,QAiB+C;AAAA,UAf/CO,QAe+C;AAAA,UAd/Cwe,cAc+C;AAAA,UAZ/Cne,iBAY+C;AAAA,UAX/CF,iBAW+C;AAAA,UAT/CD,QAS+C;AAAA,UAP/CL,cAO+C;AAAA,UAL/Cyf,WAK+C;AAAA,UAH/CpkD,MAG+C;AAAA,UAF/CslC,MAE+C;AAE3CN,YAAQ,CAACj8B,OAAD,CAAR,CAF2C,CAI3C;AACA;;AAEA,UAAKqvC,OAAL,CAAarvC,OAAb,EAAsB,KAAtB;;AAEA,UAAKqvC,OAAL,CAAarvC,OAAb,EAAsB,iBAAtB,EAAyC,MAAzC;;AAEA,UAAKqvC,OAAL,CAAarvC,OAAb,EAAsB,sBAAtB,EAA8C8jB,qBAA9C,EAX2C,CAa3C;;;AACAxpB,sCAAW,CAAC,MAAKsgD,eAAN,CAAX;;AAEA,QAAIO,SAAS,CAACG,UAAV,CAAqB,MAAKviC,GAA1B,CAAJ,EAAoC;AAChC,YAAM,IAAI9nB,KAAJ,0DAAN;AACH,KAlB0C,CAoB3C;;;AAEA,UAAKo+C,OAAL,CAAarvC,OAAb,EAAsB,MAAtB,EAA8B,MAAK+Y,GAAL,CAAS7pB,OAAT,CAAiB,IAAjB,EAAuB,GAAvB,CAA9B,EAtB2C,CAwB3C;AACA;;;AAEA,UAAKmpD,YAAL,GAAoBsC,gBAAgB,EAApC;AACA,UAAKtrD,KAAL,GAAa2Q,OAAO,CAAC3Q,KAAR,IAAiB,EAA9B;;AAEA,QAAI,CAAC2Q,OAAO,CAAC3Q,KAAb,EAAoB;AAChB,YAAK4hD,UAAL,GAAkB,IAAlB;AACH,KAhC0C,CAkC3C;;;AAEA,UAAK5B,OAAL,CAAarvC,OAAb,EAAsB,YAAtB;;AACA,UAAKqvC,OAAL,CAAarvC,OAAb,EAAsB,WAAtB;;AACA,UAAKqvC,OAAL,CAAarvC,OAAb,EAAsB,iBAAtB;;AAEA,UAAKqvC,OAAL,CAAarvC,OAAb,EAAsB,SAAtB,EAAiC,QAAjC,EAxC2C,CA0C3C;;;AAEA,UAAKqvC,OAAL,CAAarvC,OAAb,EAAsB,YAAtB,EA5C2C,CA8C3C;;;AAEA,UAAKqvC,OAAL,CAAarvC,OAAb,EAAsB,UAAtB;;AAEA,UAAKqvC,OAAL,CAAarvC,OAAb,EAAsB,KAAtB;;AACA,UAAKqvC,OAAL,CAAarvC,OAAb,EAAsB,QAAtB;;AAEA,UAAKqvC,OAAL,CAAarvC,OAAb,EAAsB,WAAtB;;AACA,UAAKqvC,OAAL,CAAarvC,OAAb,EAAsB,cAAtB;;AAEA,UAAKqvC,OAAL,CAAarvC,OAAb,EAAsB,YAAtB,EAAoC,EAApC,EAxD2C,CA0D3C;AAGA;;;AAEA,UAAKqvC,OAAL,CAAarvC,OAAb,EAAsB,UAAtB,EAAkC;AAAEsa,YAAM,EAAE,IAAV;AAAgB/B,WAAK,EAAE;AAAvB,KAAlC,EA/D2C,CAiE3C;;;AAEA,UAAK82B,OAAL,CAAarvC,OAAb,EAAsB,gBAAtB,EAnE2C,CAqE3C;;;AAEA,UAAKqvC,OAAL,CAAarvC,OAAb,EAAsB,YAAtB,EAAoC,KAApC,EAvE2C,CAyE3C;;;AAEA,UAAKqvC,OAAL,CAAarvC,OAAb,EAAsB,mBAAtB,EAA2Cy6C,wBAA3C;;AACA,UAAKpL,OAAL,CAAarvC,OAAb,EAAsB,mBAAtB,EAA2C06C,wBAA3C,EA5E2C,CA8E3C;;;AAEA,UAAKrL,OAAL,CAAarvC,OAAb,EAAsB,UAAtB,EAhF2C,CAkF3C;;;AAEA,UAAKqvC,OAAL,CAAarvC,OAAb,EAAsB,gBAAtB,EAAwC,KAAxC,EApF2C,CAsF3C;;;AAEAm7C,aAAS,CAACG,UAAV,CAAqB,MAAKviC,GAA1B,kCAxF2C,CA0F3C;AACA;AACA;;AACA,UAAKwiC,eAAL;;AACA,UAAKC,aAAL;;AACA,UAAKC,cAAL;;AA/F2C;AAgG9C;;AA1IL;;AAAA,SA6IItK,YA7IJ,GA4II,wBAC+B;AAC3B,QAAI9hD,KAAK,GAAGI,MAAM,CAACC,IAAP,CAAY,KAAKL,KAAjB,CAAZ;;AAD2B,sCAGXI,MAAM,CAACC,IAAP,CAAY,KAAK2oD,YAAjB,CAHW,qCAGqB;AAA3C,UAAIzoD,GAAG,qBAAP;;AACD,UAAIP,KAAK,CAAC6C,OAAN,CAActC,GAAd,MAAuB,CAAC,CAA5B,EAA+B;AAC3BP,aAAK,CAAC8C,IAAN,CAAWvC,GAAX;AACH;AACJ;;AAED,WAAOP,KAAP;AACH,GAvJL,CAyJI;AAzJJ;;AAAA,SA0JI2hD,OA1JJ,GA0JI,iBAAQ5hD,IAAR,EAAoD;AAChD;AACA,WAAO,KAAKC,KAAL,CAAWD,IAAX,KAAoB,KAAKipD,YAAL,CAAkBjpD,IAAlB,CAA3B;AACH,GA7JL;;AAAA,SA+JImsD,eA/JJ,GA+JI,2BAAkB;AACd,SAAKF,WAAL,GAAmB,EAAnB;;AADc,sCAGS5rD,MAAM,CAACC,IAAP,CAAYmrD,iBAAZ,CAHT,qCAG+B;AAAxC,UAAIa,UAAU,qBAAd;;AACD,UAAIA,UAAU,CAACxpD,OAAX,CAAmB,GAAnB,MAA4B,CAAhC,EAAmC;AAC/B;AACH;;AAED,UAAIilD,MAAM,GAAG0D,iBAAO,CAACa,UAAD,CAApB;AACA,UAAIhsB,IAAI,GAAGynB,MAAM,CAACryC,MAAP,EAAX;;AACA,UAAI4qB,IAAJ,EAAU;AACN,aAAKynB,MAAL,CAAYuE,UAAZ,EAAwBhsB,IAAxB;AACH;AACJ;AACJ,GA7KL;;AAAA,SA+KIynB,MA/KJ,GA+KI,gBAAO/nD,IAAP,EAAsBusD,GAAtB,EAA2C;AACvC,QAAI,CAACd,iBAAO,CAACzrD,IAAD,CAAZ,EAAoB;AAChB,YAAM,IAAI6B,KAAJ,2CAAmD7B,IAAnD,CAAN;AACH;;AAED,QAAI,CAAC,KAAKisD,WAAL,CAAiBjsD,IAAjB,CAAL,EAA6B;AACzB,WAAKisD,WAAL,CAAiBjsD,IAAjB,IAAyByrD,iBAAO,CAACzrD,IAAD,CAAP,CAAco1C,QAAd,CAAuB,IAAvB,EAA6BmX,GAA7B,CAAzB;AACH;;AAED,WAAO,KAAKN,WAAL,CAAiBjsD,IAAjB,CAAP;AACH,GAzLL;;AAAA,SA2LIosD,aA3LJ,GA2LI,yBAAmD;AAAA;;AAC/C,WAAOpoD,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAC1B,UAAI,MAAI,CAACwqC,OAAL,EAAJ,EAAoB;AAChB,eAAO,IAAIiS,oBAAJ,CAAmB,MAAnB,CAAP;AACH;AACJ,KAJM,CAAP;AAKH,GAjML;;AAAA,SAmMIqK,cAnMJ,GAmMI,0BAAiB;AAAA;;AACbjlD,qBAAE,CAAKozB,yBAAY,CAACS,cAAlB,SAAsC,KAAKj7B,IAA3C,EAAoD,YAAM;AACxD,aAAO,IAAP;AACH,KAFC,CAAF;AAIAoH,qBAAE,CAAKozB,yBAAY,CAACQ,QAAlB,SAAgC,KAAKh7B,IAArC,EAA8C,gBAA8B;AAAA,UAA3B0H,MAA2B,QAA3BA,MAA2B;AAAA,UAAnB2xB,MAAmB,QAAnBA,MAAmB;AAAA,UAAX9xB,IAAW,QAAXA,IAAW;;AAE1E,UAAIF,MAAM,GAAG,MAAI,CAACR,SAAL,CAAe,IAAf,EAAqBU,IAAI,CAAC0B,GAAL,IAAY,MAAI,CAACmiD,UAAtC,CAAb;;AAEA,UAAI,CAAC/jD,MAAL,EAAa;AACT,cAAM,IAAIxF,KAAJ,qDAAN;AACH;;AAED,UAAI,CAACu3B,qDAAW,CAAC/xB,MAAD,EAASgyB,MAAT,CAAhB,EAAkC;AAC9B,cAAM,IAAIx3B,KAAJ,0BAAkCw3B,MAAlC,oBAAyDhyB,MAAM,CAACxH,QAAP,EAAzD,CAAN;AACH;;AAED,UAAIyoD,QAAQ,GAAG,MAAI,CAACA,QAAL,CAAc5gD,MAAd,EAAsBH,IAAI,CAACqJ,OAA3B,CAAf;;AAEA,aAAO;AACHk5C,iBAAS,EAAExB,QAAQ,CAACyC,YAAT,CAAsBxjD,IAAI,CAAClB,OAA3B,CADR;AAEHm9C,eAAO,EAAI;AAAA,iBAAM8E,QAAQ,CAAC9E,OAAT,EAAN;AAAA;AAFR,OAAP;AAIH,KAlBC,CAAF;AAmBH,GA3NL;;AAAA,SA6NIgJ,WA7NJ,GA6NI,qBAAY7lD,GAAZ,EAAiE;AAC7D,WAAOM,mBAAI,CAACN,GAAD,EAAU6zB,yBAAY,CAACS,cAAvB,SAA2C,KAAKj7B,IAAhD,CAAJ,CAA6DwC,IAA7D,CAAkE,iBAAc;AAAA,UAAX+E,IAAW,SAAXA,IAAW;AACnF,aAAOA,IAAP;AACH,KAFM,EAEJnC,KAFI,CAEE,YAAM;AACX,aAAO,KAAP;AACH,KAJM,CAAP;AAKH,GAnOL;;AAAA,SAsOI8jD,cAtOJ,GAsOI,wBAAel6C,GAAf,EAAmD;AAE/C,QAAI,CAACA,GAAL,EAAU;AACN;AACH;;AAED,QAAI3H,MAAM,GAAGoyB,0DAAgB,CAACzqB,GAAD,CAA7B;;AAEA,QAAI,OAAO,KAAK3H,MAAZ,KAAuB,QAAvB,IAAmCA,MAAM,KAAK,KAAKA,MAAvD,EAA+D;AAC3D,aAAOA,MAAP;AACH;;AAED,QAAIy7B,OAAO,GAAG,KAAKz7B,MAAnB;;AAEA,QAAIy7B,OAAO,IAAI,OAAOA,OAAP,KAAmB,QAA9B,IAA0C,EAAEA,OAAO,YAAY3c,MAArB,CAA9C,EAA4E;AAAA,wCACxD9lB,MAAM,CAACC,IAAP,CAAYwiC,OAAZ,CADwD,qCAClC;AAAjC,YAAI75B,GAAG,qBAAP;;AAED,YAAIA,GAAG,KAAK,MAAZ,EAAoB;AAChB;AACH;;AAED,YAAI5B,MAAM,KAAKy7B,OAAO,CAAC75B,GAAD,CAAtB,EAA6B;AACzB,iBAAO5B,MAAP;AACH;AACJ;AACJ;AACJ,GAhQL;;AAAA,SAmQIR,SAnQJ,GAmQI,mBAAUmI,GAAV,EAAyB/F,GAAzB,EAA4D;AAExD,QAAI5B,MAAM,GAAG,KAAKolD,SAAL,CAAe,KAAKplD,MAApB,EAA4B4B,GAA5B,CAAb;;AAEA,QAAI5B,MAAJ,EAAY;AACR,aAAOA,MAAP;AACH;;AAEDA,UAAM,GAAG,KAAK6hD,cAAL,CAAoBl6C,GAApB,CAAT;;AAEA,QAAI3H,MAAJ,EAAY;AACR,aAAOA,MAAP;AACH,KAZuD,CAcxD;;;AACA,QAAIqlD,MAAM,GAAG,KAAKD,SAAL,CAAe,KAAKz9C,GAApB,EAAyB/F,GAAzB,CAAb;;AAEA,QAAIyjD,MAAJ,EAAY;AACR;AACA,aAAOjzB,0DAAgB,CAACizB,MAAD,CAAvB;AACH;;AAED,QAAI19C,GAAJ,EAAS;AACL,aAAOyqB,0DAAgB,CAACzqB,GAAD,CAAvB;AACH;AACJ,GA5RL;;AAAA,SA8RIw6C,YA9RJ,GA8RI,sBAAavgD,GAAb,EAAqC;AACjC;AACA,WAAO,KAAKwjD,SAAL,CAAe,KAAKhgB,SAApB,EAA+BxjC,GAA/B,CAAP;AACH,GAjSL;;AAAA,SAmSIwjD,SAnSJ,GAmSI,mBAAUvqD,IAAV,EAAuE+G,GAAvE,EAA2G;AAEvG,QAAI,CAAC/G,IAAL,EAAW;AACP;AACH;;AAED,QAAI,OAAOA,IAAP,KAAgB,QAAhB,IAA4BA,IAAI,YAAYikB,MAAhD,EAAwD;AACpD,aAAOjkB,IAAP;AACH;;AAED,QAAI,CAAC+G,GAAL,EAAU;AACNA,SAAG,GAAG,KAAKmiD,UAAX;AACH;;AAED,QAAI,CAACniD,GAAL,EAAU;AACN;AACH;;AAED,QAAIA,GAAG,IAAI,OAAO/G,IAAP,KAAgB,QAAvB,IAAmCA,IAAI,CAAC+G,GAAD,CAA3C,EAAkD;AAC9C,aAAO/G,IAAI,CAAC+G,GAAD,CAAX;AACH;AACJ,GAxTL;;AAAA,SA0TIygD,eA1TJ,GA0TI,yBAAgBzgD,GAAhB,EAAwC;AAEpC;AACA,QAAIyjC,YAAY,GAAG,KAAK+f,SAAL,CAAe,KAAK/f,YAApB,EAAkCzjC,GAAlC,CAAnB;;AAEA,QAAIyjC,YAAJ,EAAkB;AACd;AACA,aAAOA,YAAP;AACH;;AAED,QAAID,SAAS,GAAG,KAAK+c,YAAL,CAAkBvgD,GAAlB,CAAhB;;AAEA,QAAIwjC,SAAJ,EAAe;AACX,aAAOhT,0DAAgB,CAACgT,SAAD,CAAvB;AACH;AACJ,GAzUL;;AAAA,SA2UI0c,MA3UJ,GA2UI,gBAAOlgD,GAAP,EAAqBhJ,KAArB,EAAqF;AAEjF;AACA,QAAI+O,GAAG,GAAG,KAAKy9C,SAAL,CAAe,KAAKz9C,GAApB,EAAyB/F,GAAzB,CAAV;;AAEA,QAAI+F,GAAJ,EAAS;AACL;AACA,aAAOA,GAAP;AACH;;AAED,QAAI,KAAKo9B,QAAT,EAAmB;AACf,aAAO,KAAKA,QAAL,CAAcnsC,KAAd,CAAP;AACH;;AAED,UAAM,IAAI4B,KAAJ,qBAAN;AACH,GA1VL;;AAAA,SA4VI8qD,eA5VJ,GA4VI,2BAA4B;AACxB,WAAO9L,qBAAqB,EAA5B;AACH,GA9VL;;AAAA,SAgWI9Q,OAhWJ,GAgWI,mBAAoB;AAChB,QAAI,CAAC8Q,qBAAqB,EAA1B,EAA8B;AAC1B,aAAO,KAAP;AACH;;AAHe,4BAKaE,gBAAgB,EAL7B;AAAA,QAKRp3B,GALQ,qBAKRA,GALQ;AAAA,QAKHi/B,WALG,qBAKHA,WALG;;AAOhB,QAAIA,WAAW,IAAIA,WAAW,KAAK/hD,mDAAS,EAA5C,EAAgD;AAC5C,aAAO,KAAP;AACH;;AAED,QAAI8iB,GAAG,KAAK,KAAKA,GAAjB,EAAsB;AAClB,aAAO,KAAP;AACH;;AAED,WAAO,IAAP;AACH,GAhXL;;AAAA,SAmXIu2B,WAnXJ,GAmXI,qBAAY5yC,OAAZ,EAA8Bqc,GAA9B,EAAqD;AACjD,WAAO,IAAI9nB,KAAJ,QAAe8nB,GAAG,IAAI,KAAKA,GAA3B,WAAsCrc,OAAtC,CAAP;AACH;AAGD;;;;AAxXJ;;AAAA,SA8XI3C,IA9XJ,GA8XI,cAAK1K,KAAL,EAA8BoG,OAA9B,EAAiD6hB,OAAjD,EAAgG;AAC5F,WAAO,IAAIk/B,sBAAJ,CAAoB,IAApB,EAA0B,KAAKwF,gBAAL,CAAsBvmD,OAAtB,EAA+B6hB,OAA/B,CAA1B,EAAmE;AAAEjoB,WAAK,EAALA;AAAF,KAAnE,CAAP;AACH,GAhYL;;AAAA,SAmYIqoD,QAnYJ,GAmYI,kBAAS5gD,MAAT,EAAyCkJ,OAAzC,EAA+F;AAC3F,WAAO,IAAIk6C,0BAAJ,CAAsB,IAAtB,EAA4BpjD,MAA5B,EAAoCkJ,OAApC,CAAP;AACH,GArYL;;AAAA,SAuYIi8C,qBAvYJ,GAuYI,+BAAsBxmD,OAAtB,EAAyC6hB,OAAzC,EAAoE;AAChE,QAAI7hB,OAAO,IAAI,CAAC,KAAKsmC,QAAL,CAActmC,OAAd,CAAhB,EAAwC;AACpC,YAAM,IAAIxE,KAAJ,OAAe,KAAK8nB,GAApB,4BAAgDtjB,OAAhD,CAAN;AACH;;AAED,QAAI,CAAC6hB,OAAD,IAAY7hB,OAAO,KAAK81B,0BAAa,CAAC1rC,MAA1C,EAAkD;AAC9C,YAAM,IAAIoR,KAAJ,OAAe,KAAK8nB,GAApB,uBAA2CwS,0BAAa,CAAC1rC,MAAzD,mCAAN;AACH;AACJ,GA/YL;;AAAA,SAiZIq8D,iBAjZJ,GAiZI,6BAA6B;AACzB,QAAI,KAAK3B,cAAT,EAAyB;AACrB,aAAO,KAAKA,cAAZ;AACH,KAFD,MAEO,IAAI,KAAKxe,QAAL,CAAcxQ,0BAAa,CAAC1rC,MAA5B,CAAJ,EAAyC;AAC5C,aAAO0rC,0BAAa,CAAC1rC,MAArB;AACH,KAFM,MAEA,IAAI,KAAKk8C,QAAL,CAAcxQ,0BAAa,CAACvH,KAA5B,CAAJ,EAAwC;AAC3C,aAAOuH,0BAAa,CAACvH,KAArB;AACH;;AAED,UAAM,IAAI/yB,KAAJ,qCAAN;AACH,GA3ZL;;AAAA,SA6ZI+qD,gBA7ZJ,GA6ZI,0BAAiBvmD,OAAjB,EAAoC6hB,OAApC,EAAwE;AACpE7hB,WAAO,GAAGA,OAAO,IAAI,KAAKymD,iBAAL,EAArB;AACA,SAAKD,qBAAL,CAA2BxmD,OAA3B,EAAoC6hB,OAApC;AACA,WAAO7hB,OAAP;AACH;AAGD;;;;AApaJ;;AAAA,SA0aIuhD,MA1aJ,GA0aI,gBAAO3nD,KAAP,EAAgCioB,OAAhC,EAA8F;AAAA;;AAC1F,WAAOlkB,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAC1B,aAAO,IAAI6hD,sBAAJ,CAAoB,MAApB,EAA0B,MAAI,CAACwF,gBAAL,CAAsB,IAAtB,EAA4B1kC,OAA5B,CAA1B,EAAgE;AAAEjoB,aAAK,EAALA;AAAF,OAAhE,EAA2E2nD,MAA3E,CAAkF1/B,OAAlF,CAAP;AACH,KAFM,CAAP;AAGH,GA9aL;;AAAA,SAgbI6kC,YAhbJ,GAgbI,sBAAa9sD,KAAb,EAAsCioB,OAAtC,EAAmG;AAAA;;AAC/F,WAAOlkB,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAC1B,aAAO,IAAI6hD,sBAAJ,CAAoB,MAApB,EAA0B,MAAI,CAACwF,gBAAL,CAAsBzwB,0BAAa,CAAC1rC,MAApC,EAA4Cy3B,OAA5C,CAA1B,EAAgF;AAAEjoB,aAAK,EAALA;AAAF,OAAhF,EAA2F2nD,MAA3F,CAAkG1/B,OAAlG,CAAP;AACH,KAFM,CAAP;AAGH,GApbL;;AAAA,SAsbI8kC,WAtbJ,GAsbI,qBAAY/sD,KAAZ,EAAwE;AAAA;;AACpE,WAAO+D,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAC1B,aAAO,IAAI6hD,sBAAJ,CAAoB,MAApB,EAA0B,MAAI,CAACwF,gBAAL,CAAsBzwB,0BAAa,CAACvH,KAApC,CAA1B,EAAsE;AAAE30B,aAAK,EAALA;AAAF,OAAtE,EAAiF2nD,MAAjF,EAAP;AACH,KAFM,CAAP;AAGH,GA1bL;;AAAA,SA4bIH,QA5bJ,GA4bI,kBAAS9gD,GAAT,EAAsC1G,KAAtC,EAA+DioB,OAA/D,EAA6H;AAAA;;AACzH,WAAOlkB,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAC1B,aAAO,IAAI6hD,sBAAJ,CAAoB,MAApB,EAA0B,MAAI,CAACwF,gBAAL,CAAsB,IAAtB,EAA4B1kC,OAA5B,CAA1B,EAAgE;AAAEjoB,aAAK,EAALA;AAAF,OAAhE,EAA2EwnD,QAA3E,CAAoF9gD,GAApF,EAAyFuhB,OAAzF,CAAP;AACH,KAFM,CAAP;AAGH,GAhcL;;AAAA,SAkcI+kC,cAlcJ,GAkcI,wBAAetmD,GAAf,EAA4C1G,KAA5C,EAAqEioB,OAArE,EAAkI;AAAA;;AAC9H,WAAOlkB,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAC1B,aAAO,IAAI6hD,sBAAJ,CAAoB,MAApB,EAA0B,MAAI,CAACwF,gBAAL,CAAsBzwB,0BAAa,CAAC1rC,MAApC,EAA4Cy3B,OAA5C,CAA1B,EAAgF;AAAEjoB,aAAK,EAALA;AAAF,OAAhF,EAA2FwnD,QAA3F,CAAoG9gD,GAApG,EAAyGuhB,OAAzG,CAAP;AACH,KAFM,CAAP;AAGH,GAtcL;;AAAA,SAwcIglC,aAxcJ,GAwcI,uBAAcvmD,GAAd,EAA2C1G,KAA3C,EAAuG;AAAA;;AACnG,WAAO+D,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAC1B,aAAO,IAAI6hD,sBAAJ,CAAoB,MAApB,EAA0B,MAAI,CAACwF,gBAAL,CAAsBzwB,0BAAa,CAACvH,KAApC,CAA1B,EAAsE;AAAE30B,aAAK,EAALA;AAAF,OAAtE,EAAiFwnD,QAAjF,CAA0F9gD,GAA1F,CAAP;AACH,KAFM,CAAP;AAGH,GA5cL;;AAAA,SA8cIwmD,SA9cJ,GA8cI,mBAAUltD,KAAV,EAAmCioB,OAAnC,EAA2P;AACvP,QAAIgoB,QAAQ,GAAG,IAAIkX,sBAAJ,CAAoB,IAApB,EAA0B,KAAKwF,gBAAL,CAAsB,IAAtB,EAA4B1kC,OAA5B,CAA1B,EAAgE;AAAEjoB,WAAK,EAALA;AAAF,KAAhE,CAAf;AACAiwC,YAAQ,CAACqY,QAAT;AAEA,WAAO;AACHX,YADG,kBACIwF,UADJ,EACkCC,YADlC,EACoG;AACnG,YAAID,UAAJ,EAAgB;AACZld,kBAAQ,CAACqT,WAAT,CAAqB6J,UAArB;AACH;;AAED,eAAOld,QAAQ,CAAC0X,MAAT,CAAgByF,YAAhB,CAAP;AACH,OAPE;AASH5F,cATG,oBASM9gD,GATN,EASmCymD,UATnC,EASiEC,YATjE,EASmI;AAClI,YAAID,UAAJ,EAAgB;AACZld,kBAAQ,CAACqT,WAAT,CAAqB6J,UAArB;AACH;;AAED,eAAOld,QAAQ,CAACuX,QAAT,CAAkB9gD,GAAlB,EAAuB0mD,YAAvB,CAAP;AACH,OAfE;;AAiBH,UAAIztD,IAAJ,GAAmC;AAC/B,eAAOswC,QAAQ,CAACtwC,IAAhB;AACH,OAnBE;;AAqBH,UAAIA,IAAJ,CAAS+B,KAAT,EAAgB;AACZuuC,gBAAQ,CAACtwC,IAAT,GAAgB+B,KAAhB;AACH;;AAvBE,KAAP;AAyBH;AAED;;;;AA7eJ;;AAAA,SAmfIoL,GAnfJ,GAmfI,aAAIiT,KAAJ,EAAoBlW,OAApB,EAA4D;AAAA,QAAxCA,OAAwC;AAAxCA,aAAwC,GAAJ,EAAI;AAAA;;AACxD4C,+BAAI,CAAC,KAAK1M,IAAN,EAAYggB,KAAZ,EAAmBlW,OAAnB,CAAJ;AACH;AAGD;;;;AAxfJ;;AAAA,SA8fIwjD,UA9fJ,GA8fI,oBAAWttC,KAAX,EAA2BlW,OAA3B,EAA8D;AAC1DgD,+BAAI,CAAC,KAAK9M,IAAN,EAAYggB,KAAZ,EAAmBlW,OAAnB,CAAJ;AACH;AAGD;;;;AAngBJ;;AAAA,SAygBIqqB,QAzgBJ,GAygBI,kBAASnU,KAAT,EAAyBlW,OAAzB,EAA4D;AACxD1F,gCAAK,CAAC,KAAKpE,IAAN,EAAYggB,KAAZ,EAAmBlW,OAAnB,CAAL;AACH,GA3gBL;;AAAA,YA+gBWyjD,QA/gBX,GA+gBI,kBAAmB5jC,GAAnB,EAAgD;AAC5C,WAAOoiC,SAAS,CAACG,UAAV,CAAqBviC,GAArB,CAAP;AACH,GAjhBL;;AAAA;AAAA,EAAkCo2B,kBAAlC,oBA6gBWmM,UA7gBX,GA6gBsD,EA7gBtD,0FA4IKl5C,sBA5IL,6H;;ACvEA;AACA;;;ACAA;AACA;AAEA;CAEA;;AACA;AAEO,SAASk5B,MAAT,CAAmBt7B,OAAnB,EAAqE;AACxE,SAAO,IAAIm7C,mBAAJ,CAAcn7C,OAAd,CAAP;AACH;AAEM,SAAS28C,QAAT,CAAqB5jC,GAArB,EAAkD;AACrD,SAAOoiC,mBAAS,CAACwB,QAAV,CAAmB5jC,GAAnB,CAAP;AACH;AAED;AAEO,SAASkhC,oBAAT,GAA2C;AAC9C,SAAOzD,sBAAe,CAACyD,UAAhB,EAAP;AACH;AACM,IAAI2C,SAAS,GAAGC,GAAhB;AAEP;AAEO,IAAM3vB,SAAS,GAAG4vB,SAAlB,C;;AC1BP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACehqC,sEAAf,E;;;;;;;ACJA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKO,SAASjY,YAAT,GAAiC;AACpC,SAAOrJ,MAAM,CAACgK,SAAP,CAAiB4qB,aAAjB,IAAkC50B,MAAM,CAACgK,SAAP,CAAiBZ,SAA1D;AACH;AAEM,SAASwK,QAAT,GAA8B;AACjC,MAAMxK,SAAS,GAAGC,YAAY,EAA9B;;AACA,MAAID,SAAS,CAAC/J,KAAV,CAAgB,sGAAhB,CAAJ,EAA6H;AACzH,WAAO,IAAP;AACH;;AAED,SAAO,KAAP;AACH;AAEM,SAASksD,aAAT,GAAmC;AACtC;AACA,SAAO/5C,OAAO,CAACohB,gFAAS,CAACe,6EAAM,CAAC3zB,MAAD,CAAN,IAAkBA,MAAnB,CAAV,CAAd;AACH;AAEM,SAASkuC,YAAT,GAAkC;AACrC;AACA,SAAO,CAACqd,aAAa,EAAd,KAAqBvrD,MAAM,CAACgK,SAAP,CAAiBmkC,UAAjB,KAAgC,IAAhC,IAAwCnuC,MAAM,CAACouC,UAAP,CAAkB,4BAAlB,EAAgDhqB,OAA7G,CAAP;AACH;AAEM,SAASiqB,iBAAT,CAA2BC,EAA3B,EAAoE;AAAA,MAAzCA,EAAyC;AAAzCA,MAAyC,GAA1BjlC,YAAY,EAAc;AAAA;;AACvE,SAAQilC,EAAE,CAAC5tC,OAAH,CAAW,MAAX,MAAuB,CAAC,CAAzB,IAAgC4tC,EAAE,CAAC5tC,OAAH,CAAW,MAAX,MAAuB,CAAC,CAA/D;AACH;AAEM,SAAS6tC,YAAT,CAAsBD,EAAtB,EAA+D;AAAA,MAAzCA,EAAyC;AAAzCA,MAAyC,GAA1BjlC,YAAY,EAAc;AAAA;;AAClE,SAAQ,QAAD,CAAW1J,IAAX,CAAgB2uC,EAAhB,CAAP;AACH;AAEM,SAASE,SAAT,CAAmBF,EAAnB,EAA4D;AAAA,MAAzCA,EAAyC;AAAzCA,MAAyC,GAA1BjlC,YAAY,EAAc;AAAA;;AAC/D,SAAQ,SAAD,CAAY1J,IAAZ,CAAiB2uC,EAAjB,CAAP;AACH;AAEM,SAASG,WAAT,CAAqBH,EAArB,EAA8D;AAAA,MAAzCA,EAAyC;AAAzCA,MAAyC,GAA1BjlC,YAAY,EAAc;AAAA;;AACjE,SAAOilC,EAAE,CAAC5tC,OAAH,CAAW,YAAX,IAA2B,CAAC,CAAnC;AACH;AAEM,SAASguC,SAAT,CAAmBJ,EAAnB,EAA4D;AAAA,MAAzCA,EAAyC;AAAzCA,MAAyC,GAA1BjlC,YAAY,EAAc;AAAA;;AAC/D,SAAQ,SAAD,CAAY1J,IAAZ,CAAiB2uC,EAAjB,CAAP;AACH;AAEM,SAASK,KAAT,CAAeL,EAAf,EAAwD;AAAA,MAAzCA,EAAyC;AAAzCA,MAAyC,GAA1BjlC,YAAY,EAAc;AAAA;;AAC3D,SAAQ,kBAAD,CAAqB1J,IAArB,CAA0B2uC,EAA1B,CAAP;AACH;AAEM,SAASM,iBAAT,CAA2BN,EAA3B,EAAoE;AAAA,MAAzCA,EAAyC;AAAzCA,MAAyC,GAA1BjlC,YAAY,EAAc;AAAA;;AACvE,SAAQ,SAAD,CAAY1J,IAAZ,CAAiB2uC,EAAjB,CAAP;AACH;AAEM,SAASO,WAAT,CAAqBP,EAArB,EAA8D;AAAA,MAAzCA,EAAyC;AAAzCA,MAAyC,GAA1BjlC,YAAY,EAAc;AAAA;;AACjE,SAAQ,WAAD,CAAc1J,IAAd,CAAmB2uC,EAAnB,CAAP;AACH;AAEM,SAASQ,YAAT,CAAsBR,EAAtB,EAA+D;AAAA,MAAzCA,EAAyC;AAAzCA,MAAyC,GAA1BjlC,YAAY,EAAc;AAAA;;AAClE,MAAIslC,KAAK,CAACL,EAAD,CAAT,EAAe;AACX,QAAIM,iBAAiB,CAACN,EAAD,CAArB,EAA2B;AACvB,aAAO,IAAP;AACH;;AACD,WAAQ,2BAAD,CAA8B3uC,IAA9B,CAAmC2uC,EAAnC,CAAP;AACH;;AACD,SAAO,KAAP;AACH;AAEM,SAASS,gBAAT,CAA0BT,EAA1B,EAAmE;AAAA,MAAzCA,EAAyC;AAAzCA,MAAyC,GAA1BjlC,YAAY,EAAc;AAAA;;AACtE,MAAIqlC,SAAS,CAACJ,EAAD,CAAb,EAAmB;AACf,WAAQ,iBAAD,CAAoB3uC,IAApB,CAAyB2uC,EAAzB,KAAgC,CAACG,WAAW,CAACH,EAAD,CAAnD;AACH;;AACD,SAAO,KAAP;AACH;AAEM,SAASL,SAAT,GAA+B;AAClC,SAAOI,iBAAiB,MACpBS,YAAY,EADT,IAEHC,gBAAgB,EAFpB;AAGH;AAEM,SAAS/jC,IAAT,GAA0B;AAE7B,MAAIhL,MAAM,CAAC+Q,QAAP,CAAgBsL,YAApB,EAAkC;AAC9B,WAAO,IAAP;AACH;;AAED,MAAIrc,MAAM,CAACgK,SAAP,IAAoB,OAAOhK,MAAM,CAACgK,SAAP,CAAiBZ,SAAxB,KAAsC,QAA9D,EAAwE;AACpE,QAAK,YAAD,CAAezJ,IAAf,CAAoBK,MAAM,CAACgK,SAAP,CAAiBZ,SAArC,CAAJ,EAAqD;AACjD,aAAO,IAAP;AACH;AACJ;;AAED,SAAO,KAAP;AACH;AAGM,SAASoiD,MAAT,GAA4B;AAC/B,MAAI,CAACxgD,IAAI,EAAT,EAAa;AACT,WAAO,KAAP;AACH;;AAED,MAAIhL,MAAM,CAACgK,SAAP,IAAoB,OAAOhK,MAAM,CAACgK,SAAP,CAAiBZ,SAAxB,KAAsC,QAA9D,EAAwE;AACpE,QAAK,aAAD,CAAgBzJ,IAAhB,CAAqBK,MAAM,CAACgK,SAAP,CAAiBZ,SAAtC,CAAJ,EAAsD;AAClD,aAAO,IAAP;AACH;;AAED,QAAK,UAAD,CAAazJ,IAAb,CAAkBK,MAAM,CAACgK,SAAP,CAAiBZ,SAAnC,KAAkD,WAAD,CAAczJ,IAAd,CAAmBK,MAAM,CAACgK,SAAP,CAAiBZ,SAApC,CAArD,EAAqG;AACjG,aAAO,IAAP;AACH;AACJ;;AAED,SAAO,KAAP;AACH;AAEM,SAAS6B,cAAT,GAAoC;AACvC,MAAM+jC,KAAK,GAAGhvC,MAAM,CAAC+Q,QAAP,CAAgB0V,aAAhB,CAA8B,oCAA9B,CAAd;AACA,MAAMwoB,QAAQ,GAAGjvC,MAAM,CAAC+Q,QAAP,CAAgB0V,aAAhB,CAA8B,yBAA9B,CAAjB;;AACA,MAAIuoB,KAAK,IAAIC,QAAb,EAAuB;AACnB,WAAO,IAAP;AACH;;AACD,SAAO,KAAP;AACH;AAEM,SAASC,UAAT,GAAgC;AACnC,MAAM9lC,SAAS,GAAGC,YAAY,EAA9B,CADmC,CAEnC;;AACA,SAAQ,eAAD,CAAkB1J,IAAlB,CAAuByJ,SAAvB,CAAP;AACH;AAEM,SAASQ,YAAT,GAAkC;AACrC,MAAI,CAAC4hD,MAAM,EAAX,EAAe;AACX,WAAO,KAAP;AACH,GAHoC,CAKrC;;;AAEA,MAAIxrD,MAAM,CAAC+Q,QAAP,CAAgBsL,YAApB,EAAkC;AAC9B,QAAI;AACA,UAAM3O,MAAM,GAAG1N,MAAM,CAAC0N,MAAtB;AAEA1N,YAAM,CAAC0N,MAAP,GAAgB,kBAAhB;;AAEA,UAAI1N,MAAM,CAAC0N,MAAP,KAAkB,kBAAtB,EAA0C;AACtC1N,cAAM,CAAC0N,MAAP,GAAgBA,MAAhB;AAEA,eAAO,IAAP;AACH;;AAED,aAAO,KAAP;AAEH,KAbD,CAaE,OAAOrN,GAAP,EAAY;AAEV,aAAO,KAAP;AACH;AACJ;;AAED,SAAO,KAAP;AACH;AAEM,SAASivC,UAAT,GAAgC;AACnC,MAAMlmC,SAAS,GAAGC,YAAY,EAA9B;AACA,SAAQ,qCAAD,CAAwC1J,IAAxC,CAA6CyJ,SAA7C,CAAP;AACH;AAEM,SAASohC,cAAT,CAAwB8D,EAAxB,EAAiE;AAAA,MAAzCA,EAAyC;AAAzCA,MAAyC,GAA1BjlC,YAAY,EAAc;AAAA;;AACpE,SAAO,EAAEylC,YAAY,CAACR,EAAD,CAAZ,IAAoBS,gBAAgB,CAACT,EAAD,CAApC,IAA4CG,WAAW,CAACH,EAAD,CAAvD,IACLC,YAAY,CAACD,EAAD,CADP,IACeE,SAAS,CAACF,EAAD,CADxB,IACgCD,iBAAiB,CAACC,EAAD,CADjD,IACyDO,WAAW,CAACP,EAAD,CADpE,IAC4EY,UAAU,EADtF,IAC4FI,UAAU,EADtG,IAC4GpB,YAAY,EAD1H,CAAP;AAEH,C;;;;;;;AC5KD;AAAe,SAASud,cAAT,CAAwBC,QAAxB,EAAkCC,UAAlC,EAA8C;AAC3DD,UAAQ,CAAClpD,SAAT,GAAqBvE,MAAM,CAAC6rC,MAAP,CAAc6hB,UAAU,CAACnpD,SAAzB,CAArB;AACAkpD,UAAQ,CAAClpD,SAAT,CAAmBtC,WAAnB,GAAiCwrD,QAAjC;AACAA,UAAQ,CAACE,SAAT,GAAqBD,UAArB;AACD,C;;;;;;;;;;;;;;;;;;;;;;ACDD;AAEA;AACA;AACA;AAEA;;;;;;;;;;;;;AAaAr4C,wBAAM,CAACu4C,aAAP,GAAuBv4C,wBAAM,CAACu4C,aAAP,IAAwB,EAA/C;AACAv4C,wBAAM,CAACw4C,cAAP,GAAwB,CAAxB;;AAEA,SAASC,kBAAT,CAA4BxlC,EAA5B,EAAgC;AAE5B,MAAI;AACA,QAAIjT,wBAAM,CAACu4C,aAAP,CAAqBtlC,EAArB,CAAJ,EAA8B;AAC1B,aAAOjT,wBAAM,CAACu4C,aAAP,CAAqBtlC,EAArB,EAAyBjhB,MAAhC;AACH;AACJ,GAJD,CAIE,OAAOjF,GAAP,EAAY,CACV;AACH;;AAED,SAAOiT,wBAAM,CAACu4C,aAAP,CAAqBtlC,EAArB,CAAP;AACH;;AAED,SAASylC,kBAAT,GAA8B;AAC1B,MAAIH,aAAa,GAAGv4C,wBAAM,CAACu4C,aAA3B;;AAD0B,oCAGV5tD,MAAM,CAACC,IAAP,CAAY2tD,aAAZ,CAHU,qCAGkB;AAAvC,QAAIztD,GAAG,qBAAP;AACD,QAAI6tD,YAAY,GAAGJ,aAAa,CAACztD,GAAD,CAAhC;;AAEA,QAAI;AACA0G,iCAAI,CAACmnD,YAAY,CAAC3mD,MAAd,CAAJ;AACH,KAFD,CAEE,OAAOjF,GAAP,EAAY;AACV0rD,wBAAkB,CAAC3tD,GAAD,CAAlB;AACA;AACH;;AAED,QAAIiH,qCAAc,CAAC4mD,YAAY,CAAC3mD,MAAd,CAAlB,EAAyC;AACrCymD,wBAAkB,CAAC3tD,GAAD,CAAlB;AACH;AACJ;AACJ;;AASD,SAAS8tD,eAAT,OAAgG;AAAA,MAArEtuD,IAAqE,QAArEA,IAAqE;AAAA,MAA/D0H,MAA+D,QAA/DA,MAA+D;AAAA,MAAvD6mD,MAAuD,QAAvDA,MAAuD;AAAA,MAA/C5qB,WAA+C,QAA/CA,WAA+C;AAC5FyqB,oBAAkB;AAClB14C,0BAAM,CAACw4C,cAAP,IAAyB,CAAzB;AACAx4C,0BAAM,CAACu4C,aAAP,CAAqBv4C,wBAAM,CAACw4C,cAA5B,IAA8C;AAAEluD,QAAI,EAAJA,IAAF;AAAQ0H,UAAM,EAANA,MAAR;AAAgB6mD,UAAM,EAANA,MAAhB;AAAwB5qB,eAAW,EAAXA;AAAxB,GAA9C;AACA,SAAOjuB,wBAAM,CAACw4C,cAAd;AACH;;AAED,SAASM,eAAT,CAAyB7lC,EAAzB,EAA6D;AACzD,SAAOjT,wBAAM,CAACu4C,aAAP,CAAqBtlC,EAArB,CAAP;AACH;;AAEDjT,wBAAM,CAAC+4C,kBAAP,GAA4B,SAASA,kBAAT,QAA6K;AAAA,MAA/IzuD,IAA+I,SAA/IA,IAA+I;AAAA,MAAzI0H,MAAyI,SAAzIA,MAAyI;AAAA,MAAjI6mD,MAAiI,SAAjIA,MAAiI;AAAA,MAAzH5qB,WAAyH,SAAzHA,WAAyH;AAErM,MAAIqf,YAAY,GAAG56C,gCAAS,CAAChG,MAAD,CAA5B;;AAEA,MAAI,CAAC4gD,YAAL,EAAmB;AACf,UAAM,IAAInhD,KAAJ,4CAAN;AACH;;AAED,MAAI8mB,EAAE,GAAG2lC,eAAe,CAAC;AAAEtuD,QAAI,EAAJA,IAAF;AAAQ0H,UAAM,EAANA,MAAR;AAAgB6mD,UAAM,EAANA,MAAhB;AAAwB5qB,eAAW,EAAXA;AAAxB,GAAD,CAAxB;AAEA,SAAOjuB,wBAAM,CAACzO,IAAP,CAAY+7C,YAAZ,EAA0BllB,yBAAS,CAACU,kBAAV,CAA6BG,WAAvD,EAAoE;AAEvE3+B,QAAI,EAAJA,IAFuE;AAIvE2jC,eAJuE,yBAIzD;AAEV,UAAI0qB,YAAY,GAAGG,eAAe,CAAC7lC,EAAD,CAAlC;;AAEA,UAAI;AACA;AACAzhB,mCAAI,CAACmnD,YAAY,IAAIA,YAAY,CAAC3mD,MAA9B,CAAJ;AACH,OAHD,CAGE,OAAOjF,GAAP,EAAY;AACV0rD,0BAAkB,CAACxlC,EAAD,CAAlB;AACA;AACH;;AAED,UAAI,CAAC0lC,YAAD,IAAiB,CAACA,YAAY,CAAC3mD,MAA/B,IAAyCD,qCAAc,CAAC4mD,YAAY,CAAC3mD,MAAd,CAA3D,EAAkF;AAC9E;AACH;;AAED,UAAI;AACA2mD,oBAAY,CAACE,MAAb;AACH,OAFD,CAEE,OAAO9rD,GAAP,EAAY;AACV;AACH;;AAED4rD,kBAAY,CAAC1qB,WAAb,CAAyBp9B,KAAzB,CAA+B,IAA/B,EAAqCoB,SAArC;AACH;AA3BsE,GAApE,EA6BJ;AAAEN,UAAM,EAAEy2B,yBAAS,CAACpJ;AAApB,GA7BI,CAAP;AA8BH,CAxCD,C;;;;;;;;ACzEA;AACA;AACA;AAEA;AACA;AAEO,SAASwO,qBAAT,GAA2C;AAE9C,MAAIz3B,mCAAY,CAACrJ,MAAD,CAAZ,CAAqBX,KAArB,CAA2B,iCAA3B,CAAJ,EAAmE;AAC/D,WAAO,IAAP;AACH;;AAED,MAAI,CAACwyB,sBAAM,CAACwL,uBAAZ,EAAqC;AACjC,WAAO,IAAP;AACH;;AAED,SAAO,KAAP;AACH;AAEM,SAASivB,iBAAT,CAA2B/nD,GAA3B,EAAkE;AAErE,MAAI,CAACgyB,sCAAe,CAACv2B,MAAD,EAASuE,GAAT,CAApB,EAAmC;AAC/B,WAAO,IAAP;AACH;;AAED,SAAO,KAAP;AACH;AAEM,SAASgoD,oBAAT,CAA8BtnD,MAA9B,EAAgDV,GAAhD,EAAwF;AAE3F,MAAIU,MAAJ,EAAY;AACR,QAAIR,gCAAS,OAAO4yB,uCAAgB,CAACpyB,MAAD,CAApC,EAA8C;AAC1C,aAAO,IAAP;AACH;AACJ,GAJD,MAIO,IAAIV,GAAJ,EAAS;AACZ,QAAI,CAACK,mCAAY,CAACL,GAAD,CAAjB,EAAyB;AACrB,aAAO,IAAP;AACH;AACJ;;AAED,SAAO,KAAP;AACH;AAEM,SAAS69C,WAAT,OAAqG;AAAA,MAA9E79C,GAA8E,QAA9EA,GAA8E;AAAA,MAAzEU,MAAyE,QAAzEA,MAAyE;;AAExG,MAAI,CAAC67B,qBAAqB,EAA1B,EAA8B;AAC1B,WAAO,KAAP;AACH;;AAED,MAAI77B,MAAM,IAAI,CAACsnD,oBAAoB,CAACtnD,MAAD,EAASV,GAAT,CAAnC,EAAkD;AAC9C,WAAO,KAAP;AACH;;AAED,MAAIA,GAAG,IAAI,CAAC+nD,iBAAiB,CAAC/nD,GAAD,CAA7B,EAAoC;AAChC,WAAO,KAAP;AACH;;AAED,SAAO,IAAP;AACH;AAEM,SAASioD,aAAT,CAAuBvnD,MAAvB,EAAiD;AAEpDA,QAAM,GAAGA,MAAM,IAAIoyB,uCAAgB,CAACpyB,MAAD,CAAnC;AAEA,MAAIwnD,eAAe,GAAGxnD,MAAM,CAACvH,OAAP,CAAe,gBAAf,EAAiC,GAAjC,CAAtB;AAEA,MAAI6oB,EAAE,GAAOmV,yBAAS,CAACwB,kBAAjB,SAAyCuvB,eAA/C;AAEA,SAAOlmC,EAAP;AACH;AAEM,SAASwa,QAAT,GAA8B;AACjC,SAAOvvB,OAAO,CAACxR,MAAM,CAACpC,IAAP,IAAeoC,MAAM,CAACpC,IAAP,KAAgB4uD,aAAa,CAAC/nD,gCAAS,EAAV,CAA7C,CAAd;AACH;AAEM,IAAIioD,iBAAiB,GAAG,IAAI9qD,yCAAJ,CAAiB,UAAAL,OAAO,EAAI;AAEvD,MAAIvB,MAAM,CAAC+Q,QAAP,IAAmB/Q,MAAM,CAAC+Q,QAAP,CAAgBhE,IAAvC,EAA6C;AACzC,WAAOxL,OAAO,CAACvB,MAAM,CAAC+Q,QAAP,CAAgBhE,IAAjB,CAAd;AACH;;AAED,MAAI4O,QAAQ,GAAG6E,WAAW,CAAC,YAAM;AAC7B,QAAIxgB,MAAM,CAAC+Q,QAAP,IAAmB/Q,MAAM,CAAC+Q,QAAP,CAAgBhE,IAAvC,EAA6C;AACzC6Z,mBAAa,CAACjL,QAAD,CAAb;AACA,aAAOpa,OAAO,CAACvB,MAAM,CAAC+Q,QAAP,CAAgBhE,IAAjB,CAAd;AACH;AACJ,GALyB,EAKvB,EALuB,CAA1B;AAMH,CAZ8B,CAAxB;AAcPuG,wBAAM,CAACwyB,aAAP,GAAuBxyB,wBAAM,CAACwyB,aAAP,IAAwB,IAAIpiB,gDAAJ,EAA/C;AAEO,SAASipC,oBAAT,CAA8BpoD,GAA9B,EAA2D;AAC9D+O,0BAAM,CAACwyB,aAAP,CAAqB7iB,GAArB,CAAyB1e,GAAzB,EAA8B;AAAEqoD,sBAAkB,EAAE,IAAIhrD,yCAAJ;AAAtB,GAA9B;AACH;AAEM,SAASirD,gBAAT,CAA0BtoD,GAA1B,EAAqL;AACxL,SAAO+O,wBAAM,CAACwyB,aAAP,CAAqBv3B,GAArB,CAAyBhK,GAAzB,CAAP;AACH;AAEM,SAASuoD,yBAAT,CAAmCvoD,GAAnC,EAAgEU,MAAhE,EAAiFs8B,WAAjF,EAA2H;AAE9H,MAAIwrB,YAAY,GAAGF,gBAAgB,CAACtoD,GAAD,CAAnC;;AAEA,MAAI,CAACwoD,YAAL,EAAmB;AACf,UAAM,IAAIttD,KAAJ,+CAAN;AACH;;AAED,MAAIutD,kBAAkB,GAAG,SAArBA,kBAAqB,CAACC,SAAD,EAAoC/hD,OAApC,EAAsDgiD,YAAtD,EAAgF;AAErG,QAAID,SAAS,KAAK1oD,GAAlB,EAAuB;AACnB,YAAM,IAAI9E,KAAJ,uCAAN;AACH;;AAED,QAAI,CAACu3B,kCAAW,CAACk2B,YAAD,EAAejoD,MAAf,CAAhB,EAAwC;AACpC,YAAM,IAAIxF,KAAJ,oBAA4BytD,YAA5B,+BAAoEjoD,MAApE,CAAN;AACH;;AAEDs8B,eAAW,CAACr2B,OAAD,CAAX;AACH,GAXD;;AAaA6hD,cAAY,CAACH,kBAAb,CAAgCrrD,OAAhC,CAAwCyrD,kBAAxC;AACAD,cAAY,CAACH,kBAAb,GAAkChrD,yCAAY,CAACL,OAAb,CAAqByrD,kBAArB,CAAlC;AACH;AAEM,SAASG,uBAAT,CAAiC5oD,GAAjC,EAA8DlE,GAA9D,EAA2E;AAE9E,MAAI0sD,YAAY,GAAGF,gBAAgB,CAACtoD,GAAD,CAAnC;;AAEA,MAAI,CAACwoD,YAAL,EAAmB;AACf,UAAM,IAAIttD,KAAJ,mDAAN;AACH;;AAEDstD,cAAY,CAACH,kBAAb,CAAgCnqD,WAAhC,CAA4CpC,GAA5C;AACH;AAEM,SAASwgC,iBAAT,CAA2Bt8B,GAA3B,EAAwD2G,OAAxD,EAA0EjG,MAA1E,EAAgH;AAEnH,MAAImoD,cAAc,GAAIh4B,+BAAQ,CAACp1B,MAAD,EAASuE,GAAT,CAA9B;AACA,MAAI8oD,eAAe,GAAGj4B,+BAAQ,CAAC7wB,GAAD,EAAMvE,MAAN,CAA9B;;AAEA,MAAI,CAACotD,cAAD,IAAmB,CAACC,eAAxB,EAAyC;AACrC,UAAM,IAAI5tD,KAAJ,+DAAN;AACH;;AAED,MAAIstD,YAAY,GAAGF,gBAAgB,CAACtoD,GAAD,CAAnC;;AAEA,MAAI,CAACwoD,YAAL,EAAmB;AACf,UAAM,IAAIttD,KAAJ,uCAAN;AACH;;AAED,SAAOstD,YAAY,CAACH,kBAAb,CAAgCxsD,IAAhC,CAAqC,UAAAmhC,WAAW,EAAI;AACvD,WAAOA,WAAW,CAACh9B,GAAD,EAAM2G,OAAN,EAAejG,MAAf,CAAlB;AACH,GAFM,CAAP;AAGH,C;;AC1JD;AACA;AAEA;AACA;AACA;AAEA;AAEA,IAAIqoD,0BAA0B,GAAG5mB,qCAAc,CAAC,UAACniC,GAAD,EAAwE;AACpH,SAAO3C,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAAA,oCACRowB,gCAAS,CAAChvB,GAAD,CADD,mCACQ;AAA7B,UAAIkkB,KAAK,mBAAT;;AACD,UAAI;AACA;AACA,YAAIA,KAAK,IAAIA,KAAK,KAAKzoB,MAAnB,IAA6B4E,mCAAY,CAAC6jB,KAAD,CAAzC,IAAoDA,KAAK,CAACiT,yBAAS,CAACC,YAAV,CAAuBC,SAAxB,CAA7D,EAAiG;AAC7F,iBAAOnT,KAAP;AACH;AAEJ,OAND,CAME,OAAOpoB,GAAP,EAAY;AACV;AACH;AACJ;;AAED,QAAI;AACA,UAAIooB,MAAK,GAAGoM,qCAAc,CAACtwB,GAAD,EAAMioD,aAAa,CAAC/nD,gCAAS,EAAV,CAAnB,CAA1B;;AAEA,UAAI,CAACgkB,MAAL,EAAY;AACR;AACH,OALD,CAOA;;;AACA,UAAI7jB,mCAAY,CAAC6jB,MAAD,CAAZ,IAAuBA,MAAK,CAACiT,yBAAS,CAACC,YAAV,CAAuBC,SAAxB,CAAhC,EAAoE;AAChE,eAAOnT,MAAP;AACH;;AAED,aAAO,IAAI7mB,yCAAJ,CAAiB,UAAAL,OAAO,EAAI;AAE/B,YAAIoa,QAAJ;AACA,YAAIvY,OAAJ;AAEAuY,gBAAQ,GAAG6E,WAAW,CAAC,YAAM;AACzB;AACA,cAAIiI,MAAK,IAAI7jB,mCAAY,CAAC6jB,MAAD,CAArB,IAAgCA,MAAK,CAACiT,yBAAS,CAACC,YAAV,CAAuBC,SAAxB,CAAzC,EAA6E;AACzEhV,yBAAa,CAACjL,QAAD,CAAb;AACArY,wBAAY,CAACF,OAAD,CAAZ;AACA,mBAAO7B,OAAO,CAACknB,MAAD,CAAd;AACH;AACJ,SAPqB,EAOnB,GAPmB,CAAtB;AASArlB,eAAO,GAAGxC,UAAU,CAAC,YAAM;AACvBgmB,uBAAa,CAACjL,QAAD,CAAb;AACA,iBAAOpa,OAAO,EAAd;AACH,SAHmB,EAGjB,IAHiB,CAApB;AAIH,OAlBM,CAAP;AAoBH,KAhCD,CAgCE,OAAOlB,GAAP,EAAY,CACV;AACH;AACJ,GAhDM,CAAP;AAiDH,CAlD8C,CAA/C;AAoDO,SAAS4lC,kBAAT,GAAmD;AACtD,SAAOrkC,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAE1B,QAAMsI,MAAM,GAAGmnB,gCAAS,CAAC5yB,MAAD,CAAxB;;AAEA,QAAI,CAACyL,MAAL,EAAa;AACT;AACH;;AAED,QAAI,CAAC22C,WAAW,CAAC;AAAE79C,SAAG,EAAEkH;AAAP,KAAD,CAAhB,EAAmC;AAC/B;AACH;;AAEDkhD,wBAAoB,CAAClhD,MAAD,CAApB;AAEA,WAAO6hD,0BAA0B,CAAC7hD,MAAD,CAA1B,CAAmCrL,IAAnC,CAAwC,UAAAqS,MAAM,EAAI;AAErD,UAAI,CAACA,MAAL,EAAa;AACT,eAAO06C,uBAAuB,CAAC1hD,MAAD,EAAS,IAAIhM,KAAJ,2DAAT,CAA9B;AACH;;AAED,UAAI,CAACO,MAAM,CAACpC,IAAZ,EAAkB;AACd,eAAOuvD,uBAAuB,CAAC1hD,MAAD,EAAS,IAAIhM,KAAJ,6DAAT,CAA9B;AACH;;AAED,aAAOgT,MAAM,CAACipB,yBAAS,CAACC,YAAV,CAAuBC,SAAxB,CAAN,CAAyCywB,kBAAzC,CAA4D;AAE/DzuD,YAAI,EAAEoC,MAAM,CAACpC,IAFkD;AAI/D0H,cAAM,EAAEtF,MAJuD;AAM/DmsD,cAN+D,oBAMtD,CACL;AACH,SAR8D;AAU/D5qB,mBAV+D,uBAUnDr2B,OAVmD,EAU1C;AAEjB,cAAI;AACApG,uCAAI,CAAC9E,MAAD,CAAJ;AACH,WAFD,CAEE,OAAOK,GAAP,EAAY;AACV;AACH;;AAED,cAAI,CAACL,MAAD,IAAWA,MAAM,CAACw0B,MAAtB,EAA8B;AAC1B;AACH;;AAED,cAAI;AACAlhB,oCAAM,CAAC4tB,cAAP,CAAsB;AAClB/7B,kBAAI,EAAI+F,OADU;AAElB+rB,oBAAM,EAAE,KAAKA,MAFK;AAGlB3xB,oBAAM,EAAE,KAAKA;AAHK,aAAtB;AAKH,WAND,CAME,OAAOjF,GAAP,EAAY;AACVuB,qDAAY,CAACU,MAAb,CAAoBjC,GAApB;AACH;AACJ;AA/B8D,OAA5D,EAiCJD,IAjCI,CAiCC,gBAA8B;AAAA,YAA3BkF,MAA2B,QAA3BA,MAA2B;AAAA,YAAnB2xB,MAAmB,QAAnBA,MAAmB;AAAA,YAAX9xB,IAAW,QAAXA,IAAW;;AAElC,YAAIG,MAAM,KAAKmG,MAAf,EAAuB;AACnB,gBAAM,IAAIhM,KAAJ,gCAAN;AACH;;AAEDqtD,iCAAyB,CAACxnD,MAAD,EAAS2xB,MAAT,EAAiB9xB,IAAI,CAACo8B,WAAtB,CAAzB;AAEH,OAzCM,EAyCJv+B,KAzCI,CAyCE,UAAA3C,GAAG,EAAI;AAEZ8sD,+BAAuB,CAAC1hD,MAAD,EAASpL,GAAT,CAAvB;AACA,cAAMA,GAAN;AACH,OA7CM,CAAP;AA8CH,KAxDM,CAAP;AAyDH,GAvEM,CAAP;AAwEH,C;;ACtID;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEAiT,wBAAM,CAACi6C,OAAP,GAAiBj6C,wBAAM,CAACi6C,OAAP,IAAkB,EAAnC;AACAj6C,wBAAM,CAACk6C,YAAP,GAAsBl6C,wBAAM,CAACk6C,YAAP,IAAuB,EAA7C;AAEAl6C,wBAAM,CAACuyB,iBAAP,GAA2BvyB,wBAAM,CAACuyB,iBAAP,IAA4B,IAAIniB,gDAAJ,EAAvD;AACApQ,wBAAM,CAACm6C,kBAAP,GAA4Bn6C,wBAAM,CAACm6C,kBAAP,IAA6B,EAAzD;;AAEA,SAASC,iBAAT,CAA2BpoD,MAA3B,EAAmCL,MAAnC,EAA2C;AACvCqO,0BAAM,CAACtO,EAAP,CAAU02B,yBAAS,CAACU,kBAAV,CAA6BG,WAAvC,EAAoD;AAAEv8B,UAAM,EAAEsF,MAAV;AAAkBL,UAAM,EAANA;AAAlB,GAApD,EAAgF,gBAAsB;AAAA,QAAnBgyB,MAAmB,QAAnBA,MAAmB;AAAA,QAAX9xB,IAAW,QAAXA,IAAW;;AAElG,QAAI8xB,MAAM,KAAKhyB,MAAf,EAAuB;AACnB,YAAM,IAAIxF,KAAJ,aAAqBwF,MAArB,+BAAuDgyB,MAAvD,CAAN;AACH;;AAED,QAAI,CAAC9xB,IAAI,CAACvH,IAAV,EAAgB;AACZ,YAAM,IAAI6B,KAAJ,qDAAN;AACH;;AAED,QAAI,CAAC0F,IAAI,CAACo8B,WAAV,EAAuB;AACnB,YAAM,IAAI9hC,KAAJ,4DAAN;AACH;;AAED,QAAI,CAAC6T,wBAAM,CAACm6C,kBAAP,CAA0BtoD,IAAI,CAACvH,IAA/B,CAAL,EAA2C;AACvC,YAAM,IAAI6B,KAAJ,uBAA+B0F,IAAI,CAACvH,IAApC,uDAAN;AACH;;AAED,QAAI,CAAC0V,wBAAM,CAACm6C,kBAAP,CAA0BtoD,IAAI,CAACvH,IAA/B,EAAqCqH,MAA1C,EAAkD;AAC9C,YAAM,IAAIxF,KAAJ,oDAA4D0F,IAAI,CAACvH,IAAjE,CAAN;AACH;;AAED,QAAI0V,wBAAM,CAACm6C,kBAAP,CAA0BtoD,IAAI,CAACvH,IAA/B,EAAqCqH,MAArC,KAAgDgyB,MAApD,EAA4D;AACxD,YAAM,IAAIx3B,KAAJ,qBAA6Bw3B,MAA7B,mDAAmF3jB,wBAAM,CAACm6C,kBAAP,CAA0BtoD,IAAI,CAACvH,IAA/B,EAAqCqH,MAAxH,CAAN;AACH;;AAED6nD,6BAAyB,CAACx5C,wBAAM,CAACm6C,kBAAP,CAA0BtoD,IAAI,CAACvH,IAA/B,EAAqC2G,GAAtC,EAA2CU,MAA3C,EAAmDE,IAAI,CAACo8B,WAAxD,CAAzB;AAEA,WAAO;AACHA,iBADG,uBACSr2B,OADT,EACkB;AAEjB,YAAI,CAAClL,MAAD,IAAWA,MAAM,CAACw0B,MAAtB,EAA8B;AAC1B;AACH;;AAED,YAAIm5B,UAAU,GAAGr6C,wBAAM,CAACm6C,kBAAP,CAA0BtoD,IAAI,CAACvH,IAA/B,CAAjB;;AAEA,YAAI,CAAC+vD,UAAL,EAAiB;AACb;AACH;;AAED,YAAI;AACAr6C,kCAAM,CAAC4tB,cAAP,CAAsB;AAClB/7B,gBAAI,EAAI+F,OADU;AAElB+rB,kBAAM,EAAE02B,UAAU,CAAC1oD,MAFD;AAGlBK,kBAAM,EAAEqoD,UAAU,CAACppD;AAHD,WAAtB;AAKH,SAND,CAME,OAAOlE,GAAP,EAAY;AACVuB,mDAAY,CAACU,MAAb,CAAoBjC,GAApB;AACH;AACJ;AAtBE,KAAP;AAwBH,GApDD;AAqDH;;AAED,SAASutD,eAAT,CAAyBhwD,IAAzB,EAAwCgP,GAAxC,EAA0E;AAEtE,MAAIkc,MAAM,GAAG/X,QAAQ,CAACkX,aAAT,UAAb;AAEAa,QAAM,CAACT,YAAP,SAA4BzqB,IAA5B;AACAkrB,QAAM,CAACT,YAAP,OAA4BzqB,IAA5B;AAEAkrB,QAAM,CAACT,YAAP;AACAS,QAAM,CAACT,YAAP;AACAS,QAAM,CAACT,YAAP;AACAS,QAAM,CAACT,YAAP;AACAS,QAAM,CAACT,YAAP;AAEAS,QAAM,CAACT,YAAP;AACAS,QAAM,CAACT,YAAP;AACAS,QAAM,CAACT,YAAP;AACAS,QAAM,CAACT,YAAP;AAEAS,QAAM,CAAC5X,GAAP,GAAatE,GAAb;AAEA,SAAOkc,MAAP;AACH;;AAEM,SAASu+B,SAAT,CAAmBz6C,GAAnB,EAAiC3H,MAAjC,EAA4D;AAC/DA,QAAM,GAAGA,MAAM,IAAIoyB,uCAAgB,CAACzqB,GAAD,CAAnC;AACA,SAAO4E,OAAO,CAAC8B,wBAAM,CAACi6C,OAAP,CAAetoD,MAAf,CAAD,CAAd;AACH;AAEM,SAAS0N,UAAT,CAAoB/F,GAApB,EAAkC3H,MAAlC,EAAyF;AAE5FA,QAAM,GAAGA,MAAM,IAAIoyB,uCAAgB,CAACzqB,GAAD,CAAnC;;AAEA,MAAI0G,wBAAM,CAACi6C,OAAP,CAAetoD,MAAf,CAAJ,EAA4B;AACxB,WAAOqO,wBAAM,CAACi6C,OAAP,CAAetoD,MAAf,CAAP;AACH;;AAEDqO,0BAAM,CAACi6C,OAAP,CAAetoD,MAAf,IAAyBrD,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAE5C,QAAIsB,gCAAS,OAAOQ,MAApB,EAA4B;AACxB,YAAM,IAAIxF,KAAJ,gEAAwEwF,MAAxE,CAAN;AACH;;AAED,QAAIrH,IAAI,GAAI4uD,aAAa,CAACvnD,MAAD,CAAzB;AACA,QAAIwjB,KAAK,GAAGoM,qCAAc,CAAC70B,MAAD,EAASpC,IAAT,CAA1B;;AAEA,QAAI6qB,KAAJ,EAAW;AACP,YAAM,IAAIhpB,KAAJ,sBAA8B7B,IAA9B,6BAAN;AACH;;AAED,QAAIkrB,MAAM,GAAG8kC,eAAe,CAAChwD,IAAD,EAAOgP,GAAP,CAA5B;AACA0G,4BAAM,CAACk6C,YAAP,CAAoBvoD,MAApB,IAA8B6jB,MAA9B;AAEA,WAAO4jC,iBAAiB,CAACtsD,IAAlB,CAAuB,UAAA2M,IAAI,EAAI;AAElCA,UAAI,CAAC4Y,WAAL,CAAiBmD,MAAjB;AAEA,UAAIrW,MAAM,GAAGqW,MAAM,CAACR,aAApB;AAEAolC,uBAAiB,CAACj7C,MAAD,EAASxN,MAAT,CAAjB;AAEA,aAAO,IAAIrD,yCAAJ,CAAiB,UAACL,OAAD,EAAUe,MAAV,EAAqB;AAEzCwmB,cAAM,CAAC2G,MAAP,GAAgBluB,OAAhB;AACAunB,cAAM,CAAC4G,OAAP,GAAiBptB,MAAjB;AAEH,OALM,EAKJlC,IALI,CAKC,YAAM;AAEV,eAAOukC,yCAAkB,CAAClyB,MAAD,EAASof,sBAAM,CAAC2L,cAAhB,cAA2C5wB,GAA3C,CAAzB;AAEH,OATM,EASJxM,IATI,CASC,YAAM;AAEV,eAAOqS,MAAP;AACH,OAZM,CAAP;AAaH,KArBM,CAAP;AAsBH,GAtCwB,CAAzB;AAwCA,SAAOa,wBAAM,CAACi6C,OAAP,CAAetoD,MAAf,CAAP;AACH;AAED,IAAI4oD,UAAU,GAAG7tD,MAAM,CAACkO,IAAxB;;AAEAlO,MAAM,CAACkO,IAAP,GAAc,SAAS4/C,iBAAT,CAA2BlhD,GAA3B,EAAyChP,IAAzC,EAAwD4Q,OAAxD,EAA0Eu/C,IAA1E,EAAgG;AAE1G,MAAI9oD,MAAM,GAAG2H,GAAb;;AAEA,MAAIA,GAAG,IAAIA,GAAG,CAAClM,OAAJ,CAAYg7B,yBAAS,CAACsB,aAAtB,MAAyC,CAApD,EAAuD;AAAA,qBACjCpwB,GAAG,CAACL,KAAJ,CAAU,GAAV,CADiC;;AACjDtH,UADiD;AACzC2H,OADyC;AAEtD;;AAED,MAAI3H,MAAJ,EAAY;AACRA,UAAM,GAAGoyB,uCAAgB,CAACpyB,MAAD,CAAzB;AACH;;AAED,MAAIV,GAAG,GAAGspD,UAAU,CAAC1tD,IAAX,CAAgB,IAAhB,EAAsByM,GAAtB,EAA2BhP,IAA3B,EAAiC4Q,OAAjC,EAA0Cu/C,IAA1C,CAAV;;AAEA,MAAI,CAACxpD,GAAL,EAAU;AACN,WAAOA,GAAP;AACH;;AAED,MAAIqI,GAAJ,EAAS;AACL+/C,wBAAoB,CAACpoD,GAAD,CAApB;AACH;;AApByG,oCAsBtFtG,MAAM,CAACC,IAAP,CAAYoV,wBAAM,CAACm6C,kBAAnB,CAtBsF,qCAsB9C;AAAvD,QAAIO,OAAO,qBAAX;;AACD,QAAI3oD,qCAAc,CAACiO,wBAAM,CAACm6C,kBAAP,CAA0BO,OAA1B,EAAmCzpD,GAApC,CAAlB,EAA4D;AACxD,aAAO+O,wBAAM,CAACm6C,kBAAP,CAA0BO,OAA1B,CAAP;AACH;AACJ;;AAED,MAAIpwD,IAAI,IAAI2G,GAAZ,EAAiB;AACb,QAAI0pD,UAAU,GAAG36C,wBAAM,CAACuyB,iBAAP,CAAyBt3B,GAAzB,CAA6BhK,GAA7B,KACA+O,wBAAM,CAACm6C,kBAAP,CAA0B7vD,IAA1B,CADA,IACmC,EADpD;AAGAqwD,cAAU,CAACrwD,IAAX,GAAkBqwD,UAAU,CAACrwD,IAAX,IAAmBA,IAArC;AACAqwD,cAAU,CAAC1pD,GAAX,GAAiB0pD,UAAU,CAAC1pD,GAAX,IAAkBA,GAAnC;AACA0pD,cAAU,CAAChpD,MAAX,GAAoBgpD,UAAU,CAAChpD,MAAX,IAAqBA,MAAzC;AAEAqO,4BAAM,CAACuyB,iBAAP,CAAyB5iB,GAAzB,CAA6B1e,GAA7B,EAAkC0pD,UAAlC;AACA36C,4BAAM,CAACm6C,kBAAP,CAA0B7vD,IAA1B,IAAkCqwD,UAAlC;AACH;;AAED,SAAO1pD,GAAP;AACH,CAzCD;;AA2CO,SAASshD,OAAT,CAAiBthD,GAAjB,EAA8CqI,GAA9C,EAA4D;AAE/D,MAAIqhD,UAAU,GAAG36C,wBAAM,CAACuyB,iBAAP,CAAyBt3B,GAAzB,CAA6BhK,GAA7B,CAAjB;;AAEA,MAAI0pD,UAAJ,EAAgB;AACZA,cAAU,CAAChpD,MAAX,GAAoBoyB,uCAAgB,CAACzqB,GAAD,CAApC;AACA+/C,wBAAoB,CAACpoD,GAAD,CAApB;AACH;AACJ;AAEM,SAAS2pD,cAAT,GAA0B;AAAA,oCACVjwD,MAAM,CAACC,IAAP,CAAYoV,wBAAM,CAACk6C,YAAnB,CADU,qCACwB;AAAhD,QAAIvoD,MAAM,qBAAV;AACD,QAAIwjB,KAAK,GAAGnV,wBAAM,CAACk6C,YAAP,CAAoBvoD,MAApB,CAAZ;;AACA,QAAIwjB,KAAK,CAACkG,UAAV,EAAsB;AAClBlG,WAAK,CAACkG,UAAN,CAAiBjH,WAAjB,CAA6Be,KAA7B;AACH;AACJ;;AACDnV,0BAAM,CAACk6C,YAAP,GAAsB,EAAtB;AACAl6C,0BAAM,CAACi6C,OAAP,GAAiB,EAAjB;AACH,C;;ACvND;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;;;;;;;;ACJA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAGA;AAEA;AAEA;AACA;;AAEA,SAAS1mC,eAAT,GAAqC;AACjC,SAAOrV,OAAO,CAACT,QAAQ,CAAChE,IAAV,CAAP,IAA0BgE,QAAQ,CAAC0K,UAAT,KAAwB,UAAzD;AACH;;AAEM,IAAMkL,aAAkC,GAAG,IAAI/kB,sEAAJ,CAAiB,UAAAL,OAAO,EAAI;AAE1E,MAAIslB,eAAe,EAAnB,EAAuB;AACnB,WAAOtlB,OAAO,EAAd;AACH;;AAED,MAAMoa,QAAQ,GAAG6E,WAAW,CAAC,YAAM;AAC/B,QAAIqG,eAAe,EAAnB,EAAuB;AACnBD,mBAAa,CAACjL,QAAD,CAAb;AACA,aAAOpa,OAAO,EAAd;AACH;AACJ,GAL2B,EAKzB,EALyB,CAA5B;AAMH,CAZiD,CAA3C;AAcA,IAAM4sD,YAAwC,GAAGxnC,aAAa,CAACvmB,IAAd,CAAmB,YAAM;AAC7E,MAAI2Q,QAAQ,CAAChE,IAAb,EAAmB;AACf,WAAOgE,QAAQ,CAAChE,IAAhB;AACH;;AAED,QAAM,IAAItN,KAAJ,CAAU,8CAAV,CAAN;AACH,CANuD,CAAjD;AASA,SAAS2uD,UAAT,CAAoBl9C,GAApB,EAAkC9N,OAAlC,EAAwDirD,KAAxD,EAAkG;AAAA,MAAhEjrD,OAAgE;AAAhEA,WAAgE,GAA7C,CAA6C;AAAA;;AAAA,MAA1CirD,KAA0C;AAA1CA,SAA0C,GAAzB,EAAyB;AAAA;;AACrG,SAAO,IAAIzsD,sEAAJ,CAAiB,UAACL,OAAD,EAAUe,MAAV,EAAqB;AACzC,QAAM2O,MAAM,GAAGF,QAAQ,CAACkX,aAAT,CAAuB,QAAvB,CAAf;AAEAhX,UAAM,CAAC5D,gBAAP,CAAwB,MAAxB,EAAgC,YAAM;AAClC9L,aAAO;AACV,KAFD,EAHyC,CAOzC;;AACA0P,UAAM,CAACuK,kBAAP,GAA4B,SAAS8yC,wBAAT,GAAoC;AAC5D,UAAI,KAAK7yC,UAAL,KAAoB,UAApB,IAAkC,KAAKA,UAAL,KAAoB,QAA1D,EAAoE;AAChEla,eAAO;AACV;AACJ,KAJD;;AAMA,QAAMgtD,eAAe,GAAG,IAAI9uD,KAAJ,CAAU,sBAAV,CAAxB;AAEAwR,UAAM,CAAC5D,gBAAP,CAAwB,OAAxB,EAAiC,YAAM;AACnC,aAAO/K,MAAM,CAACisD,eAAD,CAAb;AACH,KAFD;;AAIA,QAAInrD,OAAJ,EAAa;AACTxC,gBAAU,CAAC,YAAM;AACb,eAAO0B,MAAM,CAAC,IAAI7C,KAAJ,CAAU,0BAAV,CAAD,CAAb;AACH,OAFS,EAEP2D,OAFO,CAAV;AAGH;;AAxBwC,sCA0BtBnF,MAAM,CAACC,IAAP,CAAYmwD,KAAZ,CA1BsB,qCA0BF;AAAlC,UAAMG,IAAI,qBAAV;AACDv9C,YAAM,CAACoX,YAAP,CAAoBmmC,IAApB,EAA0BH,KAAK,CAACG,IAAD,CAA/B;AACH;;AAEDv9C,UAAM,CAACoX,YAAP,CAAoB,KAApB,EAA2BnX,GAA3B;AAEA,QAAMu9C,IAAI,GAAG19C,QAAQ,CAACC,oBAAT,CAA8B,MAA9B,EAAsC,CAAtC,CAAb;AAEAy9C,QAAI,CAAC9oC,WAAL,CAAiB1U,MAAjB;AACH,GAnCM,CAAP;AAoCH;AAGM,SAASy9C,UAAT,CAAoBvvD,KAApB,EAA6C;AAEhD,MAAMX,MAAM,GAAGP,MAAM,CAACuE,SAAP,CAAiB/E,QAAjB,CAA0B0C,IAA1B,CAA+BhB,KAA/B,CAAf;;AAEA,MAAIX,MAAM,KAAK,yBAAX,IAAwCA,MAAM,KAAK,mBAAvD,EAA4E;AACxE,WAAO,IAAP;AACH;;AAED,SAAO,KAAP;AACH;AAEM,SAASqnB,SAAT,CAAmB/lB,IAAnB,EAA2C;AAC9C,SAAOA,IAAI,YAAY6uD,WAAvB;AACH;AAEM,SAASjoC,UAAT,CAAoB5mB,IAApB,EAAiD;AAEpD,MAAI,CAACA,IAAL,EAAW;AACP;AACH;;AAED,MAAIA,IAAI,YAAY6uD,WAApB,EAAiC;AAC7B,WAAO7uD,IAAP;AACH;;AAED,MAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;AAE1B,QAAIiR,QAAQ,CAAC0V,aAAb,EAA4B;AACxB,UAAMjoB,MAAM,GAAGuS,QAAQ,CAAC0V,aAAT,CAAuB3mB,IAAvB,CAAf;;AAEA,UAAItB,MAAJ,EAAY;AACR,eAAOA,MAAP;AACH;AACJ;;AAED,WAAOuS,QAAQ,CAACyV,cAAT,CAAwB1mB,IAAxB,CAAP;AACH;AACJ;AAEM,SAAS8uD,WAAT,CAAqBx6B,UAArB,EAAoK;AAEvK,MAAI,CAACA,UAAL,EAAiB;AACb,WAAO,EAAP;AACH;;AAED,MAAIA,UAAU,YAAYu6B,WAAtB,IAAqC,OAAOv6B,UAAP,KAAsB,QAA/D,EAAyE;AACrE,QAAMtO,OAAO,GAAGY,UAAU,CAAC0N,UAAD,CAA1B;;AACA,QAAItO,OAAJ,EAAa;AACT,aAAO,CAAEA,OAAF,CAAP;AACH;;AACD,WAAO,EAAP;AACH;;AAED,MAAIlnB,KAAK,CAACC,OAAN,CAAcu1B,UAAd,KAA6BA,UAAU,YAAYy6B,QAAnD,IAA+Dz6B,UAAU,YAAY06B,cAAzF,EAAyG;AACrG,QAAMtwD,MAAM,GAAG,EAAf;;AAEA,SAAK,IAAIqE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGuxB,UAAU,CAACrzB,MAA/B,EAAuC8B,CAAC,EAAxC,EAA4C;AACxC,UAAMujB,EAAE,GAAGM,UAAU,CAAC0N,UAAU,CAACvxB,CAAD,CAAX,CAArB;;AACA,UAAIujB,EAAJ,EAAQ;AACJ5nB,cAAM,CAACmC,IAAP,CAAYylB,EAAZ;AACH;AACJ;;AAED,WAAO5nB,MAAP;AACH;;AAED,SAAO,EAAP;AACH;AAEM,SAASuwD,eAAT,CAAyB/qD,MAAzB,EAAmE;AACtE,SAAO2iB,aAAa,CAACvmB,IAAd,CAAmB4D,MAAnB,CAAP;AACH;AAEM,IAAMolB,UAAU,GAAGxY,6DAAO,CAAC,UAACyY,WAAD,EAAmC;AAEjE,MAAMrC,MAAM,GAAG,EAAf;;AAEA,MAAI,CAACqC,WAAL,EAAkB;AACd,WAAOrC,MAAP;AACH;;AAED,MAAIqC,WAAW,CAAC3oB,OAAZ,CAAoB,GAApB,MAA6B,CAAC,CAAlC,EAAqC;AACjC,WAAOsmB,MAAP;AACH;;AAVgE,0CAYhDqC,WAAW,CAAC9c,KAAZ,CAAkB,GAAlB,CAZgD,2CAYxB;AAApC,QAAI+c,IAAI,2BAAR;AACDA,QAAI,GAAGA,IAAI,CAAC/c,KAAL,CAAW,GAAX,CAAP;;AAEA,QAAI+c,IAAI,CAAC,CAAD,CAAJ,IAAWA,IAAI,CAAC,CAAD,CAAnB,EAAwB;AACpBtC,YAAM,CAACuC,kBAAkB,CAACD,IAAI,CAAC,CAAD,CAAL,CAAnB,CAAN,GAAsCC,kBAAkB,CAACD,IAAI,CAAC,CAAD,CAAL,CAAxD;AACH;AACJ;;AAED,SAAOtC,MAAP;AACH,CArBgC,CAA1B;AAwBA,SAASzgB,aAAT,CAAuB3I,IAAvB,EAA+C;AAClD,SAAOwrB,UAAU,CAACppB,MAAM,CAAC2F,QAAP,CAAgB6jB,MAAhB,CAAuB1Y,KAAvB,CAA6B,CAA7B,CAAD,CAAV,CAA4ClT,IAA5C,CAAP;AACH;AAEM,SAASi2C,mBAAT,CAA6BjnC,GAA7B,EAAqD;AAExD,MAAIA,GAAG,CAAClM,OAAJ,CAAY,GAAZ,MAAqB,CAAC,CAA1B,EAA6B;AACzB,WAAO,IAAP;AACH;;AAED,MAAIkM,GAAG,CAAClM,OAAJ,CAAY,GAAZ,MAAqB,CAAzB,EAA4B;AACxB,WAAO,KAAP;AACH;;AAED,MAAIkM,GAAG,CAACL,KAAJ,CAAU,GAAV,EAAe,CAAf,MAAsBvM,MAAM,CAAC2F,QAAP,CAAgB8K,IAAhB,CAAqBlE,KAArB,CAA2B,GAA3B,EAAgC,CAAhC,CAA1B,EAA8D;AAC1D,WAAO,KAAP;AACH;;AAED,SAAO,IAAP;AACH;AAEM,SAASqG,SAAT,CAAmBhG,GAAnB,EAAiCoa,MAAjC,EAAqF;AAAA,MAApDA,MAAoD;AAApDA,UAAoD,GAAb,EAAa;AAAA;;AAExF,MAAMgoC,OAAO,GAAGpiD,GAAG,CAAClM,OAAJ,CAAY,GAAZ,IAAmB,CAAnC;;AAFwF,mBAI9DkM,GAAG,CAACL,KAAJ,CAAU,GAAV,CAJ8D;AAAA,MAIlF0iD,SAJkF;AAAA,MAIvEnrD,IAJuE;;AAMxF,MAAIA,IAAI,IAAI,CAACmrD,SAAb,EAAwB;AAAA,eACE,OAAOnrD,IAAP,EAAgB,EAAhB,CADF;AAClBmrD,aADkB;AACPnrD,QADO;AAEvB;;AARuF,yBAU3CmrD,SAAS,CAAC1iD,KAAV,CAAgB,GAAhB,CAV2C;AAAA,MAUhFsd,WAVgF;AAAA,MAUnEqlC,mBAVmE;;AAYxF,MAAIA,mBAAJ,EAAyB;AACrB,QAAMvlC,aAAa,GAAGP,UAAU,CAAC8lC,mBAAD,CAAhC;;AAEA,SAAK,IAAM9wD,IAAX,IAAkBurB,aAAlB,EAAiC;AAC7B,UAAI,CAAC3C,MAAM,CAAC/c,cAAP,CAAsB7L,IAAtB,CAAL,EAAiC;AAC7B4oB,cAAM,CAAC5oB,IAAD,CAAN,GAAcurB,aAAa,CAACvrB,IAAD,CAA3B;AACH;AACJ;AACJ;;AAED,MAAM+wD,cAAc,GAAGlxD,MAAM,CAACC,IAAP,CAAY8oB,MAAZ,EAAoB7oB,MAApB,CAA2B,UAAAC,GAAG;AAAA,WAAIA,GAAG,IAAI4oB,MAAM,CAAC5oB,GAAD,CAAjB;AAAA,GAA9B,EAAsD2hC,IAAtD,GAA6D1hC,GAA7D,CAAiE,UAAAD,GAAG,EAAI;AAC3F,WAAWgQ,kBAAkB,CAAChQ,GAAD,CAA7B,SAAwCgQ,kBAAkB,CAAC4Y,MAAM,CAAC5oB,GAAD,CAAP,CAA1D;AACH,GAFsB,EAEpBE,IAFoB,CAEf,GAFe,CAAvB;AAIA,MAAI8wD,MAAM,GAAGvlC,WAAb;;AAEA,MAAIslC,cAAJ,EAAoB;AAChBC,UAAM,GAAOA,MAAP,SAAmBD,cAAzB;AACH;;AAED,MAAIH,OAAJ,EAAa;AACTI,UAAM,GAAOA,MAAP,UAAmBtrD,IAAI,IAAI,EAA3B,CAAN;AACH;;AAED,SAAOsrD,MAAP;AACH;AAEM,SAASjjB,QAAT,CAAkB5nC,GAAlB,EAAwDqI,GAAxD,EAA2F;AAAA,MAAzErI,GAAyE;AAAzEA,OAAyE,GAA3CvE,MAA2C;AAAA;;AAC9F,SAAO,IAAI4B,sEAAJ,CAAiB,UAAAL,OAAO,EAAI;AAE/B+I,6EAAI,aAAa;AAAEsC,SAAG,EAAHA;AAAF,KAAb,CAAJ;AAEAhM,cAAU,CAAC,YAAM;AACb2D,SAAG,CAACoB,QAAJ,GAAeiH,GAAf;;AACA,UAAI,CAACinC,mBAAmB,CAACjnC,GAAD,CAAxB,EAA+B;AAC3BrL,eAAO;AACV;AACJ,KALS,EAKP,CALO,CAAV;AAMH,GAVM,CAAP;AAWH;AAEM,SAASuyC,eAAT,GAAqC;AACxC,MAAM71B,IAAI,GAAGlN,QAAQ,CAAC0V,aAAT,CAAuB,qBAAvB,CAAb;;AAEA,MAAI7S,gEAAQ,MAAM5T,MAAM,CAAC+zC,MAAP,CAAczpB,KAAd,GAAsB,GAApC,IAA2C,CAACrM,IAAhD,EAAsD;AAClD,WAAO,KAAP;AACH;;AAED,SAAO,IAAP;AACH;AAEM,SAASu2B,iBAAT,GAAsD;AACzD,MAAMC,GAAG,GAAGz0C,MAAM,CAACgK,SAAnB;AAEA,MAAMkK,OAAO,GAAGugC,GAAG,CAACC,SAAJ,GACV91C,KAAK,CAAC4D,SAAN,CAAgBsO,KAAhB,CAAsB3M,KAAtB,CAA4BswC,GAAG,CAACC,SAAhC,CADU,GAEV,EAFN;;AAIA,MAAID,GAAG,CAACE,QAAR,EAAkB;AACdzgC,WAAO,CAACvT,IAAR,CAAa8zC,GAAG,CAACE,QAAjB;AACH;;AAED,MAAIF,GAAG,CAACG,YAAR,EAAsB;AAClB1gC,WAAO,CAACvT,IAAR,CAAa8zC,GAAG,CAACG,YAAjB;AACH;;AAED,SAAO1gC,OAAP;AACH;AAEM,SAASm7C,eAAT,CAAyBtoD,MAAzB,EAAwD;AAE3D,MAAIA,MAAM,IAAIA,MAAM,CAAC1H,KAAP,CAAa,wBAAb,CAAd,EAAsD;AAAA,wBACxB0H,MAAM,CAACwF,KAAP,CAAa,MAAb,CADwB;AAAA,QAC1CvF,IAD0C;AAAA,QACpCF,OADoC;;AAElD,QAAIxJ,yDAAM,CAACwJ,OAAD,CAAN,IAAmBxJ,yDAAM,CAACwJ,OAAD,CAAN,CAAgBpG,OAAhB,CAAwBsG,IAAxB,MAAkC,CAAC,CAA1D,EAA6D;AACzD,aAAO;AAAEF,eAAO,EAAPA,OAAF;AAAWE,YAAI,EAAJA;AAAX,OAAP;AACH;AACJ;AACJ;AAEM,SAASsoD,aAAT,CAAuBtoD,IAAvB,EAAoD;AAEvD,MAAIA,IAAI,IAAIA,IAAI,CAAC3H,KAAL,CAAW,YAAX,CAAZ,EAAsC;AAClC,QAAIlC,0EAAuB,CAAC6J,IAAD,CAA3B,EAAmC;AAC/B,aAAO;AAAEF,eAAO,EAAE3J,0EAAuB,CAAC6J,IAAD,CAAlC;AAA0CA,YAAI,EAAJA;AAA1C,OAAP;AACH;AACJ;AACJ;AAEM,IAAMikC,gBAAgB,GAAGr6B,6DAAO,CAAC,YAAmB;AAEvD,MAAMsD,OAAO,GAAGsgC,iBAAiB,EAAjC;;AAFuD,0BAIlCtgC,OAJkC,gBAIzB;AAAzB,QAAMnN,MAAM,GAAImN,OAAJ,KAAZ;AACD,QAAIq7C,GAAG,GAAGF,eAAe,CAACtoD,MAAD,CAAzB;;AACA,QAAIwoD,GAAJ,EAAS;AACLjlD,+EAAI,CAAC,4BAAD,CAAJ;AACA,aAAOilD,GAAP;AACH;;AAEDA,OAAG,GAAGD,aAAa,CAACvoD,MAAD,CAAnB;;AACA,QAAIwoD,GAAJ,EAAS;AACLjlD,+EAAI,CAAC,4BAAD,CAAJ;AACA,aAAOilD,GAAP;AACH;AACJ;;AAED,SAAO7qD,sDAAM,CAACiW,aAAd;AACH,CAnBsC,CAAhC;AAqBA,SAASq5B,gBAAT,CAA0B5tB,EAA1B,EAAsD;AACzD,SAAO5U,OAAO,CAAC4U,EAAE,CAACqE,WAAH,IAAkBrE,EAAE,CAACsE,YAArB,IAAqCtE,EAAE,CAAC6tB,cAAH,GAAoBlzC,MAA1D,CAAd;AACH;AAEM,IAAMwd,iBAAiB,GAAG3N,6DAAO,CAAC,YAAgB;AACrD;AACA,SAAOY,OAAO,CACVxR,MAAM,CAACwe,WAAP,IACAA,WAAW,CAACF,GADZ,IAEAE,WAAW,CAACC,MAFZ,IAGAD,WAAW,CAACC,MAAZ,CAAmBC,UAHnB,IAIAF,WAAW,CAACC,MAAZ,CAAmBE,eAJnB,IAKC7P,IAAI,CAAC8P,GAAL,CAASJ,WAAW,CAACF,GAAZ,KAAoBD,IAAI,CAACC,GAAL,EAA7B,IAA2C,IAL5C,IAMCE,WAAW,CAACF,GAAZ,MAAqBE,WAAW,CAACC,MAAZ,CAAmBC,UAAnB,GAAgCF,WAAW,CAACC,MAAZ,CAAmBE,eAAxE,CAAD,GAA6F,CAPnF,CAAd;AASA;AACH,CAZuC,CAAjC;AAcA,SAASu1B,iBAAT,GAAqD;AACxD,SAAOvtB,aAAa,CAACvmB,IAAd,CAAmB,YAAM;AAE5B,QAAI,CAACme,iBAAiB,EAAtB,EAA0B;AACtB;AACH;;AAED,QAAME,MAAM,GAAGze,MAAM,CAACwe,WAAP,CAAmBC,MAAlC,CAN4B,CAMc;;AAE1C,QAAIA,MAAM,CAACC,UAAP,IAAqBD,MAAM,CAAC01B,cAAhC,EAAgD;AAC5C,aAAO11B,MAAM,CAAC01B,cAAP,GAAwB11B,MAAM,CAACC,UAAtC;AACH;AACJ,GAXM,CAAP;AAYH;AAEM,SAASy3B,mBAAT,CAA6BvpC,GAA7B,EAAqD;AAExD,MAAI,CAAC2R,iBAAiB,EAAtB,EAA0B;AACtB;AACH;;AAED,MAAI,CAACve,MAAM,CAACwe,WAAR,IAAuB,OAAOxe,MAAM,CAACwe,WAAP,CAAmB2B,UAA1B,KAAyC,UAApE,EAAgF;AAAE;AAC9E;AACH;;AAED,MAAMi2B,OAAO,GAAGp2C,MAAM,CAACwe,WAAP,CAAmB2B,UAAnB,EAAhB,CAVwD,CAUP;;AAEjD,OAAK,IAAItd,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGuzC,OAAO,CAACr1C,MAA5B,EAAoC8B,CAAC,EAArC,EAAyC;AACrC,QAAMwzC,KAAK,GAAGD,OAAO,CAACvzC,CAAD,CAArB;;AAEA,QAAIwzC,KAAK,IAAIA,KAAK,CAACz4C,IAAN,KAAegP,GAAxB,IAA+BypC,KAAK,CAACl1B,QAArC,IAAiDk1B,KAAK,CAACl1B,QAAN,IAAkB,CAAnE,IAAwEk1B,KAAK,CAACl1B,QAAN,IAAkB,KAA9F,EAAqG;AACjG,aAAOrS,IAAI,CAACC,KAAL,CAAWsnC,KAAK,CAACl1B,QAAjB,CAAP;AACH;AACJ;AACJ;AAEM,SAAS5jB,UAAT,CAAoBC,IAApB,EAAiD;AAAA,MAA7BA,IAA6B;AAA7BA,QAA6B,GAAb,EAAa;AAAA;;AACpD,SAAOA,IAAI,CAACC,QAAL,GACFC,OADE,CACM,IADN,EACY,OADZ,EAEFA,OAFE,CAEM,IAFN,EAEY,MAFZ,EAGFA,OAHE,CAGM,IAHN,EAGY,MAHZ,EAIFA,OAJE,CAIM,IAJN,EAIY,QAJZ,EAKFA,OALE,CAKM,IALN,EAKY,OALZ,EAMFA,OANE,CAMM,KANN,EAMa,QANb,CAAP;AAOH,C;;;;;;;AC3XD;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAEA;AAEO,SAAS8xD,WAAT,GAAiC;AAEpC,MAAI,CAAChlB,sEAAc,EAAnB,EAAuB;AACnB,WAAO,IAAP;AACH;;AAED,MAAMoW,YAAY,GAAG56C,gFAAS,CAAChG,MAAD,CAA9B;;AACA,MAAI4gD,YAAY,IAAIh8C,mFAAY,CAACg8C,YAAD,CAAhC,EAAgD;AAC5C,WAAO,IAAP;AACH;;AAED,MAAMH,qBAAqB,GAAGzgD,MAAM,CAACyF,MAAP,IAAiBzF,MAAM,CAACyF,MAAP,CAAcu5C,wBAAd,EAA/C;;AACA,MAAIyB,qBAAqB,IAAI77C,mFAAY,CAAC67C,qBAAD,CAAzC,EAAkE;AAC9D,WAAO,IAAP;AACH;;AAED,MAAIxsC,KAAJ,EAAc,EAEb;;AAED,SAAO,KAAP;AACH;AAGM,SAAS5N,cAAT,GAAoC;AACvC,SAAOmL,OAAO,CAAC,CAAIxR,MAAM,CAAC2F,QAAP,CAAgByC,QAApB,UAAmCpI,MAAM,CAAC2F,QAAP,CAAgBC,IAAnD,EAA2DvG,KAA3D,CAAiEqF,sDAAM,CAACQ,mBAAxE,CAAD,CAAP,IAAyGlF,MAAM,CAAC+yB,UAAP,KAAsB,uBAAtI;AACH,C;;;;;;;AChCD;AAAA;AAAA;AAAO,SAAS9L,cAAT,CAAwB/b,OAAxB,EAA0C;AAC7C,OAAKA,OAAL,GAAeA,OAAf;AACH;AAED+b,cAAc,CAACzkB,SAAf,GAA2BvE,MAAM,CAAC6rC,MAAP,CAAcrqC,KAAK,CAAC+C,SAApB,CAA3B;AAEO,SAASitD,gBAAT,CAA0BvkD,OAA1B,EAA4C;AAC/C,OAAKA,OAAL,GAAeA,OAAf;AACH;AAEDukD,gBAAgB,CAACjtD,SAAjB,GAA6BvE,MAAM,CAAC6rC,MAAP,CAAcrqC,KAAK,CAAC+C,SAApB,CAA7B;AAEO,SAAS09C,WAAT,CAAqBh1C,OAArB,EAAuC;AAC1C,OAAKA,OAAL,GAAeA,OAAf;AACH;AAEDg1C,WAAW,CAAC19C,SAAZ,GAAwBvE,MAAM,CAAC6rC,MAAP,CAAcrqC,KAAK,CAAC+C,SAApB,CAAxB,C;;;;;;;;;;;;;;;AChBA;AAgBO,SAASktD,oBAAT,CAA8BC,SAA9B,EAAqDC,IAArD,EAAiI;AACpI,SAAOhuD,2BAAY,CAACL,OAAb,CAAqBquD,IAArB,EAA2BxvD,IAA3B,CAAgC,UAAAyvD,aAAa,EAAI;AACpD,WAAOF,SAAS,CAACvqB,MAAV,CAAiB0E,MAAjB,CAAwB;AAAE+lB,mBAAa,EAAbA;AAAF,KAAxB,CAAP;AACH,GAFM,EAEJzvD,IAFI,CAEC,UAAAglC,MAAM,EAAI;AACd,WAAOuqB,SAAS,CAACG,cAAV,CAAyBhmB,MAAzB,CAAgC;AAAE1E,YAAM,EAANA;AAAF,KAAhC,CAAP;AACH,GAJM,CAAP;AAKH;AAED,IAAM2qB,qBAAqB,GAAG;AAC1B9jB,QAAM,EAAQ,CADY;AAE1B+jB,cAAY,EAAE,CACV;AACIC,UAAM,EAAE;AACJxxB,WAAK,EAAK,CADN;AAEJyxB,cAAQ,EAAE;AAFN;AADZ,GADU,CAFY;AAU1Bx/C,OAAK,EAAE;AACHy/C,6CAAyC,EAAE,CADxC;AAEHC,oBAAgB,EAA2B;AACvCC,WAAK,EAAW,CADuB;AAEvCC,WAAK,EAAW,CAFuB;AAGvCC,UAAI,EAAY,CAHuB;AAIvC/oD,WAAK,EAAW,CAJuB;AAKvCgpD,iBAAW,EAAK,CALuB;AAMvCC,kBAAY,EAAI,CANuB;AAOvCC,WAAK,EAAW,CAPuB;AAQvCC,oBAAc,EAAE;AARuB;AAFxC,GAVmB;AAuB1BC,qBAAmB,EAAE;AACjBC,cAAU,EAAW,CADJ;AAEjBC,uBAAmB,EAAE,CAFJ;AAGjBC,gBAAY,EAAS;AAHJ;AAvBK,CAA9B;;AA8BA,SAAStmB,QAAT,CAAkB5oB,GAAlB,EAAuBmvC,SAAvB,EAAkCpzD,IAAlC,EAAwC;AAEpC,MAAMqzD,aAAa,GAAGhzD,MAAM,CAACC,IAAP,CAAY8yD,SAAZ,CAAtB;;AAFoC,oCAIlB/yD,MAAM,CAACC,IAAP,CAAY2jB,GAAZ,CAJkB,qCAIA;AAA/B,QAAMzjB,GAAG,qBAAT;;AAED,QAAI6yD,aAAa,CAACvwD,OAAd,CAAsBtC,GAAtB,MAA+B,CAAC,CAApC,EAAuC;AACnC,YAAM,IAAIqB,KAAJ,0CAAkD7B,IAAlD,SAA4DQ,GAA5D,CAAN;AACH;;AAED,QAAI,OAAOyjB,GAAG,CAACzjB,GAAD,CAAV,KAAoB,QAAxB,EAAkC;AAC9BqsC,cAAQ,CAAC5oB,GAAG,CAACzjB,GAAD,CAAJ,EAAW4yD,SAAS,CAAC5yD,GAAD,CAApB,EAA+BR,IAA/B,SAAyCQ,GAAzC,CAAR;AACH;AACJ;AACJ;;AAEM,SAAS8yD,qBAAT,CAA+BjnB,OAA/B,EAA0D;AAC7DQ,UAAQ,CAACR,OAAD,EAAU8lB,qBAAV,EAAiC,SAAjC,CAAR;AAEA,MAAMoB,SAAS,GAAG,EAAlB;AAEAA,WAAS,CAACllB,MAAV,GAAqBhC,OAAO,CAACgC,MAAR,IAAkB,MAAvC;AACAklB,WAAS,CAACC,IAAV,GAAqB,UAArB;AACAD,WAAS,CAAClB,MAAV,GAAqBhmB,OAAO,CAAC+lB,YAAR,CAAqB,CAArB,EAAwBC,MAAxB,CAA+BxxB,KAApD;AACA0yB,WAAS,CAACjB,QAAV,GAAqBjmB,OAAO,CAAC+lB,YAAR,CAAqB,CAArB,EAAwBC,MAAxB,CAA+BC,QAApD;;AAEA,MAAIjmB,OAAO,CAACv5B,KAAZ,EAAmB;AACf,QAAIu5B,OAAO,CAACv5B,KAAR,CAAcy/C,yCAAd,KAA4D,QAAhE,EAA0E;AACtEgB,eAAS,CAACE,WAAV,GAAwB,IAAxB;AACH;;AAED,QAAIpnB,OAAO,CAACv5B,KAAR,CAAc0/C,gBAAlB,EAAoC;AAChCe,eAAS,CAACG,uBAAV,GAAoC;AAChCjB,aAAK,EAAUpmB,OAAO,CAACv5B,KAAR,CAAc0/C,gBAAd,CAA+BC,KADd;AAEhCC,aAAK,EAAUrmB,OAAO,CAACv5B,KAAR,CAAc0/C,gBAAd,CAA+BE,KAFd;AAGhCC,YAAI,EAAWtmB,OAAO,CAACv5B,KAAR,CAAc0/C,gBAAd,CAA+BG,IAHd;AAIhC/oD,aAAK,EAAUyiC,OAAO,CAACv5B,KAAR,CAAc0/C,gBAAd,CAA+B5oD,KAJd;AAKhC+pD,kBAAU,EAAKtnB,OAAO,CAACv5B,KAAR,CAAc0/C,gBAAd,CAA+BI,WALd;AAMhCgB,mBAAW,EAAIvnB,OAAO,CAACv5B,KAAR,CAAc0/C,gBAAd,CAA+BK,YANd;AAOhCC,aAAK,EAAUzmB,OAAO,CAACv5B,KAAR,CAAc0/C,gBAAd,CAA+BM,KAPd;AAQhCe,qBAAa,EAAExnB,OAAO,CAACv5B,KAAR,CAAc0/C,gBAAd,CAA+BO;AARd,OAApC;AAUH;AACJ;;AAED,MAAI1mB,OAAO,CAAC2mB,mBAAZ,EAAiC;AAC7BO,aAAS,CAACx/B,WAAV,GAA4BsY,OAAO,CAAC2mB,mBAAR,CAA4BC,UAAxD;AACAM,aAAS,CAACO,eAAV,GAA4BznB,OAAO,CAAC2mB,mBAAR,CAA4BG,YAAxD;;AAEA,QAAI9mB,OAAO,CAAC2mB,mBAAZ,EAAiC;AAC7B,UAAI3mB,OAAO,CAAC2mB,mBAAR,CAA4BE,mBAA5B,KAAoD,aAAxD,EAAuE;AACnEK,iBAAS,CAACQ,qBAAV,GAAkC,KAAlC;AACH,OAFD,MAEO,IAAI1nB,OAAO,CAAC2mB,mBAAR,CAA4BE,mBAA5B,KAAoD,eAAxD,EAAyE;AAC5EK,iBAAS,CAACQ,qBAAV,GAAoC,IAApC;AACAR,iBAAS,CAACS,uBAAV,GAAoC,IAApC;AACH,OAHM,MAGA,IAAI3nB,OAAO,CAAC2mB,mBAAR,CAA4BE,mBAA5B,KAAoD,sBAAxD,EAAgF;AACnFK,iBAAS,CAACQ,qBAAV,GAAoC,IAApC;AACAR,iBAAS,CAACS,uBAAV,GAAoC,KAApC;AACH;AACJ;AACJ;;AAED,SAAOT,SAAP;AACH,C;;ACrHD;AAAA;AAAA;AAAA;AAAA;AAAA;CAEA,iC;;;;;;;ACFA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACLA;AACA;AAEA;AAEA,IAAMU,UAAU,GAAGntD,sDAAM,CAAC+D,SAA1B;AACA,IAAMqpD,QAAQ,GAAG,YAAjB;AAEO,SAASC,MAAT,CAAgBn0C,KAAhB,EAAgClW,OAAhC,EAAuD;AAAA,MAAvBA,OAAuB;AAAvBA,WAAuB,GAAJ,EAAI;AAAA;;AAC1D,MAAI;AAEAA,WAAO,CAACkW,KAAR,aAAyBA,KAAzB;AACAlW,WAAO,CAACQ,OAAR,GAAkBd,SAAlB;AACAM,WAAO,CAAC9B,IAAR,GAAe5F,MAAM,CAAC2F,QAAP,CAAgBC,IAA/B;AACA8B,WAAO,CAACT,GAAR,GAAcC,qEAAY,EAA1B;AACAQ,WAAO,CAACsqD,OAAR,GAAkBF,QAAlB;AAEA,QAAIloC,KAAK,GAAG,EAAZ;;AAEA,SAAK,IAAMxrB,GAAX,IAAkBsJ,OAAlB,EAA2B;AACvB,UAAIA,OAAO,CAACuC,cAAR,CAAuB7L,GAAvB,CAAJ,EAAiC;AAC7BwrB,aAAK,CAACjpB,IAAN,CAAeyN,kBAAkB,CAAChQ,GAAD,CAAjC,SAA4CgQ,kBAAkB,CAAC1G,OAAO,CAACtJ,GAAD,CAAR,CAA9D;AACH;AACJ;;AAEDwrB,SAAK,GAAGA,KAAK,CAACtrB,IAAN,CAAW,GAAX,CAAR;;AAEA,QAAI,IAAJ,EAAe;AACX,UAAM2zD,WAAW,GAAG,IAAIjyD,MAAM,CAACkyD,KAAX,EAApB;AACAD,iBAAW,CAAC/gD,GAAZ,GAAsB2gD,UAAtB,SAAsCjoC,KAAtC;AACH;;AAEDhpB,cAAU,CAAC,YAAM;AACb,UAAI8D,sDAAM,CAACkE,QAAP,KAAoBvd,4DAAS,CAACC,KAAlC,EAAyC;AACrC,YAAI0U,MAAM,CAACyK,OAAP,IAAkBzK,MAAM,CAACyK,OAAP,CAAeE,GAArC,EAA0C;AACtC3K,gBAAM,CAACyK,OAAP,CAAeE,GAAf,CAAmB,GAAnB,EAAwBiT,KAAxB,EAA+BlW,OAA/B;AACH;AACJ;AACJ,KANS,EAMP,CANO,CAAV;AAQH,GA/BD,CA+BE,OAAOrH,GAAP,EAAY,CACV;AACH;AACJ;;AAED,SAAS8xD,kBAAT,CAA4Bv0D,IAA5B,EAAqD;AACjD,SAAOoV,wEAAe,CAAC,UAAAxL,KAAK,EAAI;AAC5BA,SAAK,CAAC6vC,aAAN,GAAsB7vC,KAAK,CAAC6vC,aAAN,IAAuB,EAA7C;;AAEA,QAAI7vC,KAAK,CAAC6vC,aAAN,CAAoB32C,OAApB,CAA4B9C,IAA5B,MAAsC,CAAC,CAA3C,EAA8C;AAC1C4J,WAAK,CAAC6vC,aAAN,CAAoB12C,IAApB,CAAyB/C,IAAzB;AACA,aAAO,IAAP;AACH;;AAED,WAAO,KAAP;AACH,GATqB,CAAtB;AAUH;;AAEM,SAASuS,UAAT,CAAoBvS,IAApB,EAAmC8J,OAAnC,EAA0D8G,OAA1D,EAAwF;AAAA,MAArD9G,OAAqD;AAArDA,WAAqD,GAAlC,EAAkC;AAAA;;AAAA,MAA9B8G,OAA8B;AAA9BA,WAA8B,GAAX,EAAW;AAAA;;AAC3F,MAAI;AACA,QAAI0B,cAAc,GAAGtS,IAArB;;AAEA,QAAI4Q,OAAO,CAACtG,OAAZ,EAAqB;AACjB,UAAMA,OAAO,GAAGd,SAAA,CAAsC1J,OAAtC,CAA8C,UAA9C,EAA0D,GAA1D,CAAhB;;AACAwS,oBAAc,GAAOhI,OAAP,SAAoBgI,cAAlC;AACH;;AAED,QAAI,CAACiiD,kBAAkB,CAACjiD,cAAD,CAAvB,EAAyC;AACrC;AACH;;AAED,WAAO6hD,MAAM,CAAC7hD,cAAD,EAAiBxI,OAAjB,CAAb;AAEH,GAdD,CAcE,OAAOrH,GAAP,EAAY,CAEV;AACH;AACJ;AAGD,IAAM+xD,QAAQ,GAAG,yBAAjB;;AAEA,SAASC,YAAT,GAAiC;AAC7B,SAAO;AACHC,KAAC,mBAAsBlrD,SADpB;AAEHmrD,KAAC,EAAMl0C,IAAI,CAACC,GAAL,EAFJ;AAGHqD,KAAC,EAAM,IAAItD,IAAJ,GAAWm0C,iBAAX,EAHJ;AAIHC,QAAI,EAAE,YAJH;AAKHC,QAAI,EAAE,iBALH;AAMHC,QAAI,EAAE,oCANH;AAOHC,QAAI,EAAE,oCAPH;AAQHC,QAAI,EAAE,gBARH;AASHC,QAAI,EAAE,WATH;AAUHC,QAAI,EAAE;AAVH,GAAP;AAYH;;AAEM,SAASC,IAAT,CAActrD,OAAd,EAAqC;AAAA,MAAvBA,OAAuB;AAAvBA,WAAuB,GAAJ,EAAI;AAAA;;AAExC,MAAIkiB,KAAK,GAAG,EAAZ;AAEAliB,SAAO,GAAG,+FAAK2qD,YAAY,EAApB,MAA2B3qD,OAA3B,CAAP;;AAEA,OAAK,IAAMtJ,GAAX,IAAkBsJ,OAAlB,EAA2B;AACvB,QAAIA,OAAO,CAACuC,cAAR,CAAuB7L,GAAvB,CAAJ,EAAiC;AAC7BwrB,WAAK,CAACjpB,IAAN,CAAeyN,kBAAkB,CAAChQ,GAAD,CAAjC,SAA4CgQ,kBAAkB,CAAC1G,OAAO,CAACtJ,GAAD,CAAR,CAA9D;AACH;AACJ;;AAEDwrB,OAAK,GAAGA,KAAK,CAACtrB,IAAN,CAAW,GAAX,CAAR;;AAEA,MAAI;AACA,QAAM2zD,WAAW,GAAG,IAAIjyD,MAAM,CAACkyD,KAAX,EAApB;AACAD,eAAW,CAAC/gD,GAAZ,GAAsBkhD,QAAtB,SAAoCxoC,KAApC;AACH,GAHD,CAGE,OAAOvpB,GAAP,EAAY,CACV;AACH;AACJ,C;;;;;;;;;ACtHD;AAEA,IAAM4yD,sBAAsB,8lEAA5B;AA6FO,SAAStoB,iBAAT,OAA6E;AAAA,MAAhDta,MAAgD,QAAhDA,MAAgD;AAEhF,SACI,qBACI,qBACI,+BADJ,EAEI;AAAM,QAAI,EAAC,UAAX;AAAsB,WAAO,EAAC;AAA9B,IAFJ,CADJ,EAKI,qBACI;AAAK,SAAK,EAAC;AAAX,KACI,sBACM4iC,sBADN,CADJ,EAKI;AAAK,SAAK,EAAC;AAAX,KACI;AAAG,SAAK,EAAC;AAAT,IADJ,EAEI;AAAG,SAAK,EAAC;AAAT,IAFJ,CALJ,CADJ,CALJ,CADJ;AAoBH,C;;;;;;;;;;;;;;;;;;;;ACpHD;AAEO,SAASC,iBAAT,OAAkK;AAAA,MAArI3sC,EAAqI,QAArIA,EAAqI;AAAA,MAAjIgB,GAAiI,QAAjIA,GAAiI;AAAA,MAA5H+gC,OAA4H,QAA5HA,OAA4H;AAAA,MAAnHF,KAAmH,QAAnHA,KAAmH;AAAA,MAA5GC,SAA4G,QAA5GA,SAA4G;AACrK,yBACQ9hC,EADR,icAgBQA,EAhBR,SAgBgBgB,GAhBhB,0BAgB0C7+B,2CAAsB,CAAC5B,KAhBjE,2nBA4BQy/B,EA5BR,SA4BgBgB,GA5BhB,0BA4B0C7+B,2CAAsB,CAAC1B,KA5BjE,4rBAwCQu/B,EAxCR,SAwCgBgB,GAxChB,0BAwC0C7+B,2CAAsB,CAAC5B,KAxCjE,8DA4CQy/B,EA5CR,SA4CgBgB,GA5ChB,0BA4C0C7+B,2CAAsB,CAAC1B,KA5CjE,8DAgDQu/B,EAhDR,SAgDgBgB,GAhDhB,0BAgD0C7+B,2CAAsB,CAAC5B,KAhDjE,kDAiDQy/B,EAjDR,SAiDgBgB,GAjDhB,0BAiD0C7+B,2CAAsB,CAAC5B,KAjDjE,oGAqDQy/B,EArDR,SAqDgBgB,GArDhB,0BAqD0C7+B,2CAAsB,CAAC1B,KArDjE,kDAsDQu/B,EAtDR,SAsDgBgB,GAtDhB,0BAsD0C7+B,2CAAsB,CAAC1B,KAtDjE,oGA0DQu/B,EA1DR,SA0DgBgB,GA1DhB,iBA0DiC+gC,OAAO,CAAC91B,KA1DzC,gEA8DQjM,EA9DR,SA8DgBgB,GA9DhB,iBA8DiC+gC,OAAO,CAAC91B,KA9DzC,gEAkEQjM,EAlER,wEAsEQA,EAtER,s4BA4FQA,EA5FR,SA4FgBgB,GA5FhB,4CA4F4DhB,EA5F5D,SA4FoEgB,GA5FpE,4KAoGQhB,EApGR,SAoGgBgB,GApGhB,+FAwGQhB,EAxGR,mLA8GQA,EA9GR,8GAkHQA,EAlHR,4IAsHQA,EAtHR,6KA4HQA,EA5HR,SA4HgBgB,GA5HhB,iBA4HiC+gC,OAAO,CAACj6D,MA5HzC,oCA4HgFk4B,EA5HhF,SA4HwFgB,GA5HxF,iBA4HyG+gC,OAAO,CAACj6D,MA5HjH,wFAgIQk4B,EAhIR,+MAuIQA,EAvIR,yIA2IQA,EA3IR,4NAoJQA,EApJR,SAoJgBgB,GApJhB,6FAwJQhB,EAxJR,wFA4JQA,EA5JR,sOAoKQA,EApKR,uRA4KQA,EA5KR,2RAoLQA,EApLR,gGAwLQA,EAxLR,SAwLgBgB,GAxLhB,iBAwLiC+gC,OAAO,CAACj6D,MAxLzC,sDAyLQk4B,EAzLR,SAyLgBgB,GAzLhB,iBAyLiC+gC,OAAO,CAACj6D,MAzLzC,8CAyL0F+5D,KAAK,CAACnuB,MAzLhG,oBA0LQ1T,EA1LR,SA0LgBgB,GA1LhB,iBA0LiC+gC,OAAO,CAACj6D,MA1LzC,8CA0L0F+5D,KAAK,CAACnuB,MA1LhG,qHA+LQ1T,EA/LR,SA+LgBgB,GA/LhB,iBA+LiC+gC,OAAO,CAACj6D,MA/LzC,szBA0NQk4B,EA1NR,SA0NgBgB,GA1NhB,iBA0NiC+gC,OAAO,CAACj6D,MA1NzC,UA0NsD+5D,KAAK,CAACnuB,MA1N5D,gsBAoPQ1T,EApPR,SAoPgBgB,GApPhB,iBAoPiC+gC,OAAO,CAACj6D,MApPzC,UAoPsD+5D,KAAK,CAACnuB,MApP5D,yKA2PQ1T,EA3PR,SA2PgBgB,GA3PhB,iBA2PiC+gC,OAAO,CAACj6D,MA3PzC,UA2PsD+5D,KAAK,CAACnuB,MA3P5D,kBA2PiFmuB,KAAK,CAACluB,eA3PvF,6DA+PQ3T,EA/PR,SA+PgBgB,GA/PhB,iBA+PiC+gC,OAAO,CAACj6D,MA/PzC,UA+PsD+5D,KAAK,CAACnuB,MA/P5D,kBA+PiFmuB,KAAK,CAACjuB,eA/PvF,6DAmQQ5T,EAnQR,SAmQgBgB,GAnQhB,iBAmQiC+gC,OAAO,CAACj6D,MAnQzC,UAmQsD+5D,KAAK,CAACnuB,MAnQ5D,kBAmQiFmuB,KAAK,CAACl6B,OAnQvF,sFAwQQ3H,EAxQR,SAwQgBgB,GAxQhB,iBAwQiC+gC,OAAO,CAACj6D,MAxQzC,UAwQsD+5D,KAAK,CAACnuB,MAxQ5D,kBAwQiFmuB,KAAK,CAAChuB,SAxQvF,mJA8QY7T,EA9QZ,8FAkRYA,EAlRZ,qNAyRYA,EAzRZ,SAyRoBgB,GAzRpB,iBAyRqC+gC,OAAO,CAACj6D,MAzR7C,0DA0RYk4B,EA1RZ,SA0RoBgB,GA1RpB,iBA0RqC+gC,OAAO,CAACj6D,MA1R7C,UA0R0D+5D,KAAK,CAACnuB,MA1RhE,qnBA2SQ1T,EA3SR,SA2SgBgB,GA3ShB,iBA2SiC+gC,OAAO,CAACj6D,MA3SzC,UA2SsD+5D,KAAK,CAACnuB,MA3S5D,6IAiT0BouB,SAAS,CAAC3tB,cAjTpC,0XA+TkB2tB,SAAS,CAAC3tB,cA/T5B,kYA6U0B2tB,SAAS,CAACztB,cA7UpC,6VA0VkBytB,SAAS,CAACztB,cA1V5B;AA0ZH,C;;;;AC7ZM,SAASu4B,eAAT,OAA2F;AAAA,MAAhE5sC,EAAgE,QAAhEA,EAAgE;AAAA,MAA5D8hC,SAA4D,QAA5DA,SAA4D;AAC9F,yBACQ9hC,EADR,gsBA4BQA,EA5BR,0QAqC0B8hC,SAAS,CAAC5tB,cArCpC,4KA+CkB4tB,SAAS,CAAC5tB,cA/C5B,oLAyD0B4tB,SAAS,CAAC1tB,cAzDpC,6OAuEkB0tB,SAAS,CAAC1tB,cAvE5B;AAqFH,C;;;;;;ACvFD;;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA,IAAMy4B,UAAU,kCACV1qE,2CAAsB,CAAC5B,KADb,IACsBI,sCAAiB,CAACF,KADxC,cAEV0B,2CAAsB,CAAC1B,KAFb,IAEsBE,sCAAiB,CAACJ,KAFxC,cAAhB;CAUA;;AAoBO,SAAS8jD,iBAAT,OAAgK;AAAA,MAAnIrkB,EAAmI,QAAnIA,EAAmI;AAAA,MAA/H1oB,KAA+H,QAA/HA,KAA+H;AAAA,MAAxHuqD,KAAwH,QAAxHA,KAAwH;AAAA,MAAjHC,SAAiH,QAAjHA,SAAiH;AAAA,MAAtGC,OAAsG,QAAtGA,OAAsG;AAAA,MAA7FC,KAA6F,QAA7FA,KAA6F;AAAA,MAAtFvjD,EAAsF,QAAtFA,EAAsF;AAAA,MAAlFuiB,GAAkF,QAAlFA,GAAkF;AAAA,MAA7EtjB,OAA6E,QAA7EA,OAA6E;AAAA,MAApE+nC,OAAoE,QAApEA,OAAoE;AAAA,MAA3DkZ,MAA2D,QAA3DA,MAA2D;AAAA,MAAnD70B,MAAmD,QAAnDA,MAAmD;;AAAA,4BAEzIxyB,KAAK,CAACkJ,MAAN,CAAawF,KAAb,CAAmB,GAAnB,CAFyI;AAAA,MAE3JvF,IAF2J;AAAA,MAErJF,OAFqJ;;AAInK,MAAMwpB,OAAO,GAAG+iC,4CAAgB,CAACvsD,OAAD,CAAhB,CAA0BE,IAA1B,CAAhB;;AAEA,WAASogB,KAAT,CAAexJ,KAAf,EAAsB;AAClBA,SAAK,CAAC01C,cAAN;AACA11C,SAAK,CAACgQ,eAAN;AACAoe,WAAO,CAAC5kB,KAAR;AACH;;AAED,WAASo6B,KAAT,CAAe5jC,KAAf,EAAsB;AAClBA,SAAK,CAAC01C,cAAN;AACA11C,SAAK,CAACgQ,eAAN;;AAEA,QAAI+gB,4BAAK,EAAT,EAAa;AACT;AACA3uC,YAAM,CAACuzD,KAAP,CAAa,oDAAb;AACH,KAHD,MAGO;AACH3xD,+CAAY,CAACuB,GAAb,CAAiB6oC,OAAO,CAACwV,KAAzB,EAAgCx+C,KAAhC,CAAsCgpC,OAAO,CAAC5kB,KAA9C;AACH;AACJ;;AAED,MAAMnB,KAAK,GAAGpoB,KAAK,CAACooB,KAAN,IAAe,EAA7B;AACA,MAAMslB,YAAY,GAAGtlB,KAAK,CAACslB,YAAN,IAAsB7iD,2CAAsB,CAAC5B,KAAlE;AACA,MAAMuyD,SAAS,GAAG+Z,UAAU,CAAC7nB,YAAD,CAA5B;AAEA,MAAMioB,MAAM,GAAI,OAAOhY,iCAAY,CAACiY,EAApB,KAA2B,UAA5B,GACTjY,iCAAY,CAACiY,EAAb,CAAgB;AAAEpa,aAAS,EAATA;AAAF,GAAhB,CADS,GAETmC,iCAAY,CAACiY,EAAb,CAAgBpa,SAAhB,CAFN;AAIA,MAAMgC,UAAU,GAAI,OAAOG,iCAAY,CAACkY,MAApB,KAA+B,UAAhC,GACblY,iCAAY,CAACkY,MAAb,CAAoB;AAAEra,aAAS,EAATA;AAAF,GAApB,CADa,GAEbmC,iCAAY,CAACkY,MAAb,CAAoBra,SAApB,CAFN;AAIA,MAAMjzB,EAAE,GACJ;AAAK,MAAE,EAAGG,EAAV;AAAe,WAAO,EAAGi7B,KAAzB;AAAiC,SAAK,EAAOj6B,GAAP,iBAAwBtjB,OAAxB,iCAA6DsjB,GAA7D,0BAAuFgkB,YAAvF,SAAyGhkB,GAAzG,oBAA6H8xB;AAAnK,KACI;AAAG,QAAI,EAAC,GAAR;AAAY,SAAK,EAAC,uBAAlB;AAA0C,WAAO,EAAGjyB,KAApD;AAA4D,kBAAW,OAAvE;AAA+E,QAAI,EAAC;AAApF,IADJ,EAEI;AAAK,SAAK,EAAC;AAAX,KACI;AAAK,SAAK,EAAC;AAAX,KACI;AACI,SAAK,EAAC,yBADV;AACoC,OAAG,EAAC,IADxC;AAEI,OAAG,iCAAiCsmB,mCAAY,CAAC8lB,MAAM,CAAC/1D,QAAP,EAAD;AAFpD,IADJ,EAII;AACI,SAAK,EAAC,6BADV;AACwC,OAAG,EAAC,QAD5C;AAEI,OAAG,iCAAiCiwC,mCAAY,CAAC2N,UAAU,CAAC59C,QAAX,EAAD;AAFpD,IAJJ,CADJ,EASI;AAAK,SAAK,EAAC;AAAX,KACK6yB,OAAO,CAACqjC,aADb,CATJ,EAYI;AAAK,SAAK,EAAC;AAAX,KACI;AAAG,WAAO,EAAGnS,KAAb;AAAqB,QAAI,EAAC;AAA1B,KAA+BlxB,OAAO,CAACsjC,QAAvC,CADJ,CAZJ,EAeI;AAAK,SAAK,EAAC;AAAX,KACI;AAAK,SAAK,EAAC;AAAX,IADJ,CAfJ,CAFJ,EAsBI;AAAK,SAAK,EAAC;AAAX,KACK1O,MADL,CAtBJ,EA0BI,sBAAQgO,iBAAiB,CAAC;AAAE3sC,MAAE,EAAFA,EAAF;AAAMgB,OAAG,EAAHA,GAAN;AAAW+gC,WAAO,EAAPA,OAAX;AAAoBF,SAAK,EAALA,KAApB;AAA2BC,aAAS,EAATA;AAA3B,GAAD,CAAzB,CA1BJ,CADJ;AA+BA,MAAMziC,SAAS,GACX,qBACI,qBACMQ,EADN,CADJ,CADJ;AAQAphB,IAAE,CAACujD,KAAK,CAAC/vB,KAAP,EAAc,YAAM;AAClBpS,MAAE,CAAC+B,SAAH,UAAqBZ,GAArB;AACH,GAFC,CAAF;AAIA,SACI;AAAK,MAAE,EAAGhB,EAAV;AAAe,SAAK,EAAC;AAArB,KACI,sBAAS4sC,eAAe,CAAC;AAAE5sC,MAAE,EAAFA,EAAF;AAAM8hC,aAAS,EAATA;AAAN,GAAD,CAAxB,CADJ,EAGI;AAAQ,SAAK,EAAC,yBAAd;AAAwC,QAAI,iCAAiC9hC,EAAjC,OAA5C;AAAuF,aAAS,EAAC,IAAjG;AAAsG,SAAK,EAAC;AAA5G,KACMX,SADN,CAHJ,CADJ;AASH,C;;ACnID;AAAA;AAAA;AAAA;AAAA;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEO,SAASulB,2BAAT,CAAqC/kC,KAArC,EAA8D;AACjE,SAAQA,KAAK,IAAIA,KAAK,CAAC1F,OAAN,CAAc,KAAd,MAAyB,CAAnC,GAAwC,UAAxC,GAAqD,OAA5D;AACH;AAEM,SAASmzD,cAAT,CAAwB5pB,OAAxB,EAAmD;AACtD,MAAIA,OAAO,CAACvpC,OAAR,CAAgB,KAAhB,MAA2B,CAA/B,EAAkC;AAC9B,WAAOhV,+DAAY,CAACE,QAApB;AACH,GAFD,MAEO,IAAIq+C,OAAO,CAACvpC,OAAR,CAAgB,MAAhB,MAA4B,CAA5B,IAAiCupC,OAAO,CAACvpC,OAAR,CAAgB,QAAhB,MAA8B,CAAnE,EAAsE;AACzE,WAAOhV,+DAAY,CAACG,MAApB;AACH,GAFM,MAEA,IAAIo+C,OAAO,CAACvpC,OAAR,CAAgB,KAAhB,MAA2B,CAA/B,EAAkC;AACrC,WAAOhV,+DAAY,CAACC,QAApB;AACH;;AAED,SAAOD,+DAAY,CAACC,QAApB;AACH;AAEM,SAASu+C,YAAT,CAAsBrjC,GAAtB,EAAoCsjC,aAApC,EAA6DF,OAA7D,EAAwF;AAE3F,MAAM6pB,WAAW,GAAGD,cAAc,CAAC5pB,OAAD,CAAlC;;AAEA,MAAI6pB,WAAW,KAAKpoE,+DAAY,CAACE,QAAjC,EAA2C;AACvC,WAAO8Y,sDAAM,CAACmU,WAAP,CAAmBhS,GAAnB,CAAP;AACH;;AAED,MAAIsjC,aAAa,KAAKxhD,0DAAO,CAACrD,IAA1B,IAAkC6kD,aAAa,KAAKxhD,0DAAO,CAAC/C,GAAhE,EAAqE;AACjE,WAAO8e,sDAAM,CAACiU,SAAP,CAAiB9R,GAAjB,CAAP;AACH;;AAED,MAAIsjC,aAAa,KAAKxhD,0DAAO,CAAChD,KAA1B,IAAmCwkD,aAAa,KAAKxhD,0DAAO,CAAC9C,UAA7D,IAA2EskD,aAAa,KAAKxhD,0DAAO,CAAC7C,OAArG,IACAqkD,aAAa,KAAKxhD,0DAAO,CAAC5C,MAD1B,IACoCokD,aAAa,KAAKxhD,0DAAO,CAAC3C,GAD9D,IACqEmkD,aAAa,KAAKxhD,0DAAO,CAAC1C,MAD/F,IAEAkkD,aAAa,KAAKxhD,0DAAO,CAACzC,GAF1B,IAEiCikD,aAAa,KAAKxhD,0DAAO,CAACxC,IAF3D,IAEmEgkD,aAAa,KAAKxhD,0DAAO,CAACvC,YAF7F,IAGA+jD,aAAa,KAAKxhD,0DAAO,CAACtC,IAH1B,IAGkC8jD,aAAa,KAAKxhD,0DAAO,CAACrC,OAH5D,IAGuE6jD,aAAa,KAAKxhD,0DAAO,CAACpC,MAHjG,IAIA4jD,aAAa,KAAKxhD,0DAAO,CAACnC,MAJ1B,IAIoC2jD,aAAa,KAAKxhD,0DAAO,CAAClC,IAJlE,EAIwE;AACpE,WAAOie,sDAAM,CAACkU,UAAP,CAAkB/R,GAAlB,CAAP;AACH;;AAED,SAAOnC,sDAAM,CAAC+T,YAAP,CAAoB5R,GAApB,CAAP;AACH,C;;;;;;;;;;ACxCM,SAASktD,eAAT,CAAyBC,MAAzB,EAA0CC,UAA1C,EAAoFC,eAApF,EAA4I;AAAA,MAAlGD,UAAkG;AAAlGA,cAAkG,GAA5D,EAA4D;AAAA;;AAAA,MAAxDC,eAAwD;AAAxDA,mBAAwD,GAAb,EAAa;AAAA;;AAAA,mCAE5HD,UAF4H,oCAEhH;AAA1B,QAAMr2D,IAAI,oBAAV;AACD,QAAMg6C,SAAS,GAAG53C,MAAM,CAACpC,IAAD,CAAxB;;AAEA,QAAI,CAACg6C,SAAL,EAAgB;AACZ;AACH;;AAL0B,0CAOHsc,eAPG,yCAOc;AAAA;;AAApC,UAAMC,SAAS,yBAAf;AACD,UAAIC,cAAc,GAAGJ,MAAM,CAACG,SAAD,CAA3B;;AAEA,UAAIvc,SAAS,CAACuc,SAAD,CAAb,EAA0B;AACtBC,sBAAc,GAAG,+FAAKxc,SAAS,CAACuc,SAAD,CAAjB,MAAiCC,cAAjC,CAAd;AACH;;AAEDJ,YAAM,GAAG,+FAAKpc,SAAR,MAAsBoc,MAAtB,6BAAgCG,SAAhC,IAA6CC,cAA7C,aAAN;AACH;AACJ;;AAlB8I,mCAoB5HH,UApB4H,oCAoBhH;AAA1B,QAAMr2D,KAAI,oBAAV;AACDoC,UAAM,CAACpC,KAAD,CAAN,GAAeo2D,MAAf;AACH;;AAED,SAAOA,MAAP;AACH,C;;;;;;;AC1BD;AAAA;AAEO,IAAMX,gBAAgB,GAAG;AAC5B,QAAM;AACF,UAAM;AACF,uBAAiB,iIADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AALJ,GADsB;AAW5B,QAAM;AACF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AADJ,GAXsB;AAiB5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GAjBsB;AAmC5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GAnCsB;AAqD5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GArDsB;AAuE5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KAbJ;AAiBF,UAAM;AACF,uBAAiB,0WADf;AAEF,kBAAiB;AAFf;AAjBJ,GAvEsB;AA6F5B,QAAM;AACF,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf;AADJ,GA7FsB;AAmG5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GAnGsB;AAqH5B,QAAM;AACF,UAAM;AACF,uBAAiB,0KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf;AAbJ,GArHsB;AAuI5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf;AAbJ,GAvIsB;AAyJ5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf;AAbJ,GAzJsB;AA2K5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf;AAbJ,GA3KsB;AA6L5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GA7LsB;AA+M5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf;AAbJ,GA/MsB;AAiO5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GAjOsB;AAmP5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GAnPsB;AAqQ5B,QAAM;AACF,UAAM;AACF,uBAAiB,0KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf;AAbJ,GArQsB;AAuR5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf;AAbJ,GAvRsB;AAyS5B,QAAM;AACF,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf;AADJ,GAzSsB;AA+S5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KAbJ;AAiBF,UAAM;AACF,uBAAiB,0WADf;AAEF,kBAAiB;AAFf;AAjBJ,GA/SsB;AAqU5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GArUsB;AAuV5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GAvVsB;AAyW5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf;AAbJ,GAzWsB;AA2X5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf;AAbJ,GA3XsB;AA6Y5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf;AAbJ,GA7YsB;AA+Z5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GA/ZsB;AAib5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf;AAbJ,GAjbsB;AAmc5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GAncsB;AAqd5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf;AAbJ,GArdsB;AAue5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GAvesB;AAyf5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf;AAbJ,GAzfsB;AA2gB5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GA3gBsB;AA6hB5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GA7hBsB;AA+iB5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GA/iBsB;AAikB5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GAjkBsB;AAmlB5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf;AAbJ,GAnlBsB;AAqmB5B,QAAM;AACF,UAAM;AACF,uBAAiB,0KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf;AAbJ,GArmBsB;AAunB5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KAbJ;AAiBF,UAAM;AACF,uBAAiB,0WADf;AAEF,kBAAiB;AAFf;AAjBJ,GAvnBsB;AA6oB5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf;AAbJ,GA7oBsB;AA+pB5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GA/pBsB;AAirB5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GAjrBsB;AAmsB5B,QAAM;AACF,UAAM;AACF,uBAAiB,0WADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KAbJ;AAiBF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAjBJ,GAnsBsB;AAytB5B,QAAM;AACF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf;AALJ,GAztBsB;AAmuB5B,QAAM;AACF,UAAM;AACF,uBAAiB,0KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf;AAbJ,GAnuBsB;AAqvB5B,QAAM;AACF,UAAM;AACF,uBAAiB,0KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf;AAbJ,GArvBsB;AAuwB5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GAvwBsB;AAyxB5B,QAAM;AACF,UAAM;AACF,uBAAiB,0KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf;AAbJ,GAzxBsB;AA2yB5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GA3yBsB;AA6zB5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf;AAbJ,GA7zBsB;AA+0B5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf;AAbJ,GA/0BsB;AAi2B5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KAbJ;AAiBF,UAAM;AACF,uBAAiB,0WADf;AAEF,kBAAiB;AAFf;AAjBJ,GAj2BsB;AAu3B5B,QAAM;AACF,UAAM;AACF,uBAAiB,0KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf;AAbJ,GAv3BsB;AAy4B5B,QAAM;AACF,UAAM;AACF,uBAAiB,0KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf;AAbJ,GAz4BsB;AA25B5B,QAAM;AACF,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf;AADJ,GA35BsB;AAi6B5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf;AAbJ,GAj6BsB;AAm7B5B,QAAM;AACF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AADJ,GAn7BsB;AAy7B5B,QAAM;AACF,UAAM;AACF,uBAAiB,0KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf;AAbJ,GAz7BsB;AA28B5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf;AAbJ,GA38BsB;AA69B5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GA79BsB;AA++B5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GA/+BsB;AAigC5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GAjgCsB;AAmhC5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GAnhCsB;AAqiC5B,QAAM;AACF,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf;AADJ,GAriCsB;AA2iC5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GA3iCsB;AA6jC5B,QAAM;AACF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AADJ,GA7jCsB;AAmkC5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf;AAbJ,GAnkCsB;AAqlC5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GArlCsB;AAumC5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GAvmCsB;AAynC5B,QAAM;AACF,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf;AADJ,GAznCsB;AA+nC5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf;AAbJ,GA/nCsB;AAipC5B,QAAM;AACF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AADJ,GAjpCsB;AAupC5B,QAAM;AACF,UAAM;AACF,uBAAiB,0KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf;AAbJ,GAvpCsB;AAyqC5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GAzqCsB;AA2rC5B,QAAM;AACF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AADJ,GA3rCsB;AAisC5B,QAAM;AACF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AADJ,GAjsCsB;AAusC5B,QAAM;AACF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf;AALJ,GAvsCsB;AAitC5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KAbJ;AAiBF,UAAM;AACF,uBAAiB,0WADf;AAEF,kBAAiB;AAFf;AAjBJ,GAjtCsB;AAuuC5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GAvuCsB;AAyvC5B,QAAM;AACF,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf;AADJ,GAzvCsB;AA+vC5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GA/vCsB;AAixC5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf;AAbJ,GAjxCsB;AAmyC5B,QAAM;AACF,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf;AADJ,GAnyCsB;AAyyC5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GAzyCsB;AA2zC5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf;AAbJ,GA3zCsB;AA60C5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KAbJ;AAiBF,UAAM;AACF,uBAAiB,0WADf;AAEF,kBAAiB;AAFf;AAjBJ,GA70CsB;AAm2C5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf;AAbJ,GAn2CsB;AAq3C5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf;AAbJ,GAr3CsB;AAu4C5B,QAAM;AACF,UAAM;AACF,uBAAiB,0KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf;AAbJ,GAv4CsB;AAy5C5B,QAAM;AACF,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf;AADJ,GAz5CsB;AA+5C5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GA/5CsB;AAi7C5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GAj7CsB;AAm8C5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KAbJ;AAiBF,UAAM;AACF,uBAAiB,0WADf;AAEF,kBAAiB;AAFf;AAjBJ,GAn8CsB;AAy9C5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf;AAbJ,GAz9CsB;AA2+C5B,QAAM;AACF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AADJ,GA3+CsB;AAi/C5B,QAAM;AACF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AADJ,GAj/CsB;AAu/C5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf;AAbJ,GAv/CsB;AAygD5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf;AAbJ,GAzgDsB;AA2hD5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GA3hDsB;AA6iD5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf;AAbJ,GA7iDsB;AA+jD5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GA/jDsB;AAilD5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf;AAbJ,GAjlDsB;AAmmD5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GAnmDsB;AAqnD5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KAbJ;AAiBF,UAAM;AACF,uBAAiB,wGADf;AAEF,kBAAiB;AAFf;AAjBJ,GArnDsB;AA2oD5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GA3oDsB;AA6pD5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GA7pDsB;AA+qD5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GA/qDsB;AAisD5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf;AAbJ,GAjsDsB;AAmtD5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf;AAbJ,GAntDsB;AAquD5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KAbJ;AAiBF,UAAM;AACF,uBAAiB,wGADf;AAEF,kBAAiB;AAFf;AAjBJ,GAruDsB;AA2vD5B,QAAM;AACF,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf;AADJ,GA3vDsB;AAiwD5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf;AAbJ,GAjwDsB;AAmxD5B,QAAM;AACF,UAAM;AACF,uBAAiB,0KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf;AAbJ,GAnxDsB;AAqyD5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GAryDsB;AAuzD5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GAvzDsB;AAy0D5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KAbJ;AAiBF,UAAM;AACF,uBAAiB,0WADf;AAEF,kBAAiB;AAFf;AAjBJ,GAz0DsB;AA+1D5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf;AAbJ,GA/1DsB;AAi3D5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KAbJ;AAiBF,UAAM;AACF,uBAAiB,0WADf;AAEF,kBAAiB;AAFf;AAjBJ,GAj3DsB;AAu4D5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf;AAbJ,GAv4DsB;AAy5D5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf;AAbJ,GAz5DsB;AA26D5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf;AAbJ,GA36DsB;AA67D5B,QAAM;AACF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AADJ,GA77DsB;AAm8D5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GAn8DsB;AAq9D5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf;AAbJ,GAr9DsB;AAu+D5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf;AAbJ,GAv+DsB;AAy/D5B,QAAM;AACF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf;AALJ,GAz/DsB;AAmgE5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf;AAbJ,GAngEsB;AAqhE5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GArhEsB;AAuiE5B,QAAM;AACF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf;AALJ,GAviEsB;AAijE5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GAjjEsB;AAmkE5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf;AAbJ,GAnkEsB;AAqlE5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf;AAbJ,GArlEsB;AAumE5B,QAAM;AACF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AADJ,GAvmEsB;AA6mE5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GA7mEsB;AA+nE5B,QAAM;AACF,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf;AADJ,GA/nEsB;AAqoE5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf;AAbJ,GAroEsB;AAupE5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf;AAbJ,GAvpEsB;AAyqE5B,QAAM;AACF,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf;AADJ,GAzqEsB;AA+qE5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf;AAbJ,GA/qEsB;AAisE5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf;AAbJ,GAjsEsB;AAmtE5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf;AAbJ,GAntEsB;AAquE5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KAbJ;AAiBF,UAAM;AACF,uBAAiB,0WADf;AAEF,kBAAiB;AAFf;AAjBJ,GAruEsB;AA2vE5B,QAAM;AACF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AADJ,GA3vEsB;AAiwE5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf;AAbJ,GAjwEsB;AAmxE5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf;AAbJ,GAnxEsB;AAqyE5B,QAAM;AACF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AADJ,GAryEsB;AA2yE5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GA3yEsB;AA6zE5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf;AAbJ,GA7zEsB;AA+0E5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GA/0EsB;AAi2E5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf;AAbJ,GAj2EsB;AAm3E5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GAn3EsB;AAq4E5B,QAAM;AACF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AADJ,GAr4EsB;AA24E5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf;AAbJ,GA34EsB;AA65E5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf;AAbJ,GA75EsB;AA+6E5B,QAAM;AACF,UAAM;AACF,uBAAiB,0WADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KAbJ;AAiBF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAjBJ,GA/6EsB;AAq8E5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GAr8EsB;AAu9E5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf;AADJ,GAv9EsB;AA69E5B,QAAM;AACF,UAAM;AACF,uBAAiB,gJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,0GADf;AAEF,kBAAiB;AAFf;AALJ,GA79EsB;AAu+E5B,QAAM;AACF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf;AALJ,GAv+EsB;AAi/E5B,QAAM;AACF,UAAM;AACF,uBAAiB,0KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,8IADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf;AAbJ,GAj/EsB;AAmgF5B,QAAM;AACF,UAAM;AACF,uBAAiB,gHADf;AAEF,kBAAiB;AAFf;AADJ,GAngFsB;AAygF5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,ylBADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KAbJ;AAiBF,UAAM;AACF,uBAAiB,oHADf;AAEF,kBAAiB;AAFf;AAjBJ,GAzgFsB;AA+hF5B,QAAM;AACF,UAAM;AACF,uBAAiB,uLADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,mHADf;AAEF,kBAAiB;AAFf;AALJ,GA/hFsB;AAyiF5B,QAAM;AACF,UAAM;AACF,uBAAiB,kNADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,oHADf;AAEF,kBAAiB;AAFf;AALJ,GAziFsB;AAmjF5B,QAAM;AACF,UAAM;AACF,uBAAiB,2nBADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,mHADf;AAEF,kBAAiB;AAFf;AALJ,GAnjFsB;AA6jF5B,QAAM;AACF,UAAM;AACF,uBAAiB,oKADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KAbJ;AAiBF,UAAM;AACF,uBAAiB,oHADf;AAEF,kBAAiB;AAFf;AAjBJ,GA7jFsB;AAmlF5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,oHADf;AAEF,kBAAiB;AAFf;AAbJ,GAnlFsB;AAqmF5B,QAAM;AACF,UAAM;AACF,uBAAiB,mHADf;AAEF,kBAAiB;AAFf;AADJ,GArmFsB;AA2mF5B,QAAM;AACF,UAAM;AACF,uBAAiB,kIADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,oHADf;AAEF,kBAAiB;AAFf;AALJ,GA3mFsB;AAqnF5B,QAAM;AACF,UAAM;AACF,uBAAiB,olBADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AALJ,GArnFsB;AA+nF5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,oHADf;AAEF,kBAAiB;AAFf;AAbJ,GA/nFsB;AAipF5B,QAAM;AACF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AALJ,GAjpFsB;AA2pF5B,QAAM;AACF,UAAM;AACF,uBAAiB,kIADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,wHADf;AAEF,kBAAiB;AAFf;AALJ,GA3pFsB;AAqqF5B,QAAM;AACF,UAAM;AACF,uBAAiB,mHADf;AAEF,kBAAiB;AAFf;AADJ,GArqFsB;AA2qF5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,iJADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,mHADf;AAEF,kBAAiB;AAFf;AAbJ,GA3qFsB;AA6rF5B,QAAM;AACF,UAAM;AACF,uBAAiB,sIADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,oHADf;AAEF,kBAAiB;AAFf;AALJ,GA7rFsB;AAusF5B,QAAM;AACF,UAAM;AACF,uBAAiB,mHADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,oHADf;AAEF,kBAAiB;AAFf;AALJ,GAvsFsB;AAitF5B,QAAM;AACF,UAAM;AACF,uBAAiB,mHADf;AAEF,kBAAiB;AAFf;AADJ,GAjtFsB;AAutF5B,QAAM;AACF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf;AALJ,GAvtFsB;AAiuF5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,ylBADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KAbJ;AAiBF,UAAM;AACF,uBAAiB,oHADf;AAEF,kBAAiB;AAFf;AAjBJ,GAjuFsB;AAuvF5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,oHADf;AAEF,kBAAiB;AAFf,KAbJ;AAiBF,UAAM;AACF,uBAAiB,mHADf;AAEF,kBAAiB;AAFf;AAjBJ,GAvvFsB;AA6wF5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,ylBADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KAbJ;AAiBF,UAAM;AACF,uBAAiB,oHADf;AAEF,kBAAiB;AAFf;AAjBJ,GA7wFsB;AAmyF5B,QAAM;AACF,UAAM;AACF,uBAAiB,iRADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,mHADf;AAEF,kBAAiB;AAFf;AALJ,GAnyFsB;AA6yF5B,QAAM;AACF,UAAM;AACF,uBAAiB,gUADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,gHADf;AAEF,kBAAiB;AAFf;AALJ,GA7yFsB;AAuzF5B,QAAM;AACF,UAAM;AACF,uBAAiB,0GADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,oHADf;AAEF,kBAAiB;AAFf;AALJ,GAvzFsB;AAi0F5B,QAAM;AACF,UAAM;AACF,uBAAiB,oHADf;AAEF,kBAAiB;AAFf;AADJ,GAj0FsB;AAu0F5B,QAAM;AACF,UAAM;AACF,uBAAiB,yZADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,oHADf;AAEF,kBAAiB;AAFf;AALJ,GAv0FsB;AAi1F5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,oHADf;AAEF,kBAAiB;AAFf;AAbJ,GAj1FsB;AAm2F5B,QAAM;AACF,UAAM;AACF,uBAAiB,yJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KAbJ;AAiBF,UAAM;AACF,uBAAiB,oHADf;AAEF,kBAAiB;AAFf;AAjBJ,GAn2FsB;AAy3F5B,QAAM;AACF,UAAM;AACF,uBAAiB,iIADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,mHADf;AAEF,kBAAiB;AAFf;AALJ,GAz3FsB;AAm4F5B,QAAM;AACF,UAAM;AACF,uBAAiB,8LADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,8GADf;AAEF,kBAAiB;AAFf;AALJ,GAn4FsB;AA64F5B,iBAAe;AACX,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADK;AAKX,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KALK;AASX,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf,KATK;AAaX,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf;AAbK,GA74Fa;AA+5F5B,gBAAc;AACV,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADI;AAKV,UAAM;AACF,uBAAiB,ylBADf;AAEF,kBAAiB;AAFf,KALI;AASV,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATI;AAaV,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KAbI;AAiBV,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KAjBI;AAqBV,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KArBI;AAyBV,UAAM;AACF,uBAAiB,iIADf;AAEF,kBAAiB;AAFf,KAzBI;AA6BV,UAAM;AACF,uBAAiB,wGADf;AAEF,kBAAiB;AAFf,KA7BI;AAiCV,UAAM;AACF,uBAAiB,0WADf;AAEF,kBAAiB;AAFf;AAjCI,GA/5Fc;AAq8F5B,gBAAc;AACV,UAAM;AACF,uBAAiB,0KADf;AAEF,kBAAiB;AAFf,KADI;AAKV,UAAM;AACF,uBAAiB,6QADf;AAEF,kBAAiB;AAFf,KALI;AASV,UAAM;AACF,uBAAiB,4HADf;AAEF,kBAAiB;AAFf,KATI;AAaV,UAAM;AACF,uBAAiB,8IADf;AAEF,kBAAiB;AAFf,KAbI;AAiBV,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KAjBI;AAqBV,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf;AArBI,GAr8Fc;AA+9F5B,QAAM;AACF,UAAM;AACF,uBAAiB,oqBADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KAbJ;AAiBF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAjBJ,GA/9FsB;AAq/F5B,QAAM;AACF,UAAM;AACF,uBAAiB,gJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AALJ,GAr/FsB;AA+/F5B,QAAM;AACF,UAAM;AACF,uBAAiB,iIADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AALJ,GA//FsB;AAygG5B,QAAM;AACF,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KAbJ;AAiBF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAjBJ,GAzgGsB;AA+hG5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,ylBADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KAbJ;AAiBF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAjBJ,GA/hGsB;AAqjG5B,QAAM;AACF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,wGADf;AAEF,kBAAiB;AAFf;AALJ,GArjGsB;AA+jG5B,QAAM;AACF,UAAM;AACF,uBAAiB,kKADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KAbJ;AAiBF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAjBJ,GA/jGsB;AAqlG5B,QAAM;AACF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,iIADf;AAEF,kBAAiB;AAFf;AALJ,GArlGsB;AA+lG5B,QAAM;AACF,UAAM;AACF,uBAAiB,gJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,iIADf;AAEF,kBAAiB;AAFf;AATJ,GA/lGsB;AA6mG5B,QAAM;AACF,UAAM;AACF,uBAAiB,iJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,8GADf;AAEF,kBAAiB;AAFf;AALJ,GA7mGsB;AAunG5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,8GADf;AAEF,kBAAiB;AAFf;AALJ,GAvnGsB;AAioG5B,QAAM;AACF,UAAM;AACF,uBAAiB,sHADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,gJADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AATJ,GAjoGsB;AA+oG5B,QAAM;AACF,UAAM;AACF,uBAAiB,uHADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AALJ,GA/oGsB;AAypG5B,QAAM;AACF,UAAM;AACF,uBAAiB,0GADf;AAEF,kBAAiB;AAFf;AADJ;AAzpGsB,CAAzB,C;;;;;;ACHP;;;;;;;;;AAQA;AACA,CAAC,YAAY;AACX;;AAEA,MAAIltD,IAAI,GAAG,OAAOnG,MAAP,KAAkB,QAAlB,GAA6BA,MAA7B,GAAsC,EAAjD;AACA,MAAIq0D,OAAO,GAAG,CAACluD,IAAI,CAACmuD,oBAAN,IAA8B,OAAOnlB,OAAP,KAAmB,QAAjD,IAA6DA,OAAO,CAACC,QAArE,IAAiFD,OAAO,CAACC,QAAR,CAAiBmlB,IAAhH;;AACA,MAAIF,OAAJ,EAAa;AACXluD,QAAI,GAAGmN,MAAP;AACD;;AACD,MAAIkhD,SAAS,GAAG,CAACruD,IAAI,CAACsuD,sBAAN,IAAgC,OAAOC,MAAP,KAAkB,QAAlD,IAA8DA,MAAM,CAACpU,OAArF;AACA,MAAIqU,GAAG,GAAG,SAAgCC,uBAA1C;AACA,MAAIC,kBAAkB,GAAG,mCAAmCtoD,KAAnC,CAAyC,EAAzC,CAAzB;AACA,MAAIuoD,kBAAkB,GAAG;AACvB,SAAK,CADkB;AACf,SAAK,CADU;AACP,SAAK,CADE;AACC,SAAK,CADN;AACS,SAAK,CADd;AACiB,SAAK,CADtB;AACyB,SAAK,CAD9B;AACiC,SAAK,CADtC;AACyC,SAAK,CAD9C;AAEvB,SAAK,CAFkB;AAEf,SAAK,EAFU;AAEN,SAAK,EAFC;AAEG,SAAK,EAFR;AAEY,SAAK,EAFjB;AAEqB,SAAK,EAF1B;AAE8B,SAAK,EAFnC;AAEuC,SAAK,EAF5C;AAGvB,SAAK,EAHkB;AAGd,SAAK,EAHS;AAGL,SAAK,EAHA;AAGI,SAAK,EAHT;AAGa,SAAK,EAHlB;AAGsB,SAAK,EAH3B;AAG+B,SAAK,EAHpC;AAGwC,SAAK,EAH7C;AAIvB,SAAK,EAJkB;AAId,SAAK,EAJS;AAIL,SAAK,EAJA;AAII,SAAK,EAJT;AAIa,SAAK,EAJlB;AAIsB,SAAK,EAJ3B;AAI+B,SAAK;AAJpC,GAAzB;AAOA,MAAIC,MAAM,GAAG,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAb;;AAEA,MAAIC,gBAAgB,GAAG,SAAnBA,gBAAmB,CAAUC,QAAV,EAAoBC,OAApB,EAA6B;AAClD,QAAIA,OAAO,CAACn0D,MAAR,GAAiB,EAArB,EAAyB;AACvBm0D,aAAO,GAAG,QAAQA,OAAO,CAAC7wC,MAAR,CAAe,CAAC,EAAhB,CAAlB;AACD;;AACD,QAAIhkB,GAAG,GAAG,IAAIZ,KAAJ,CAAU,qCAChB,qCADgB,GAEhB,8BAFgB,GAEiBw1D,QAFjB,GAE4B,UAF5B,GAEyCC,OAFzC,GAEmD,KAF7D,CAAV;AAGA70D,OAAG,CAAC40D,QAAJ,GAAeA,QAAf;AACA,UAAM50D,GAAN;AACD,GATD;;AAWA,MAAI80D,YAAY,GAAG,SAAfA,YAAe,CAAUC,KAAV,EAAiB;AAClC,QAAI5zC,GAAG,GAAG,EAAV;AAAA,QAAczgB,MAAM,GAAGq0D,KAAK,CAACr0D,MAA7B;AAAA,QAAqC8B,CAAC,GAAG,CAAzC;AAAA,QAA4CwyD,cAAc,GAAG,CAA7D;AAAA,QAAgExpD,CAAhE;AAAA,QAAmEC,CAAnE;;AACA,WAAOjJ,CAAC,GAAG9B,MAAX,EAAmB;AACjB8K,OAAC,GAAGupD,KAAK,CAACvyD,CAAC,EAAF,CAAT;;AACA,UAAIgJ,CAAC,IAAI,IAAT,EAAe;AACb2V,WAAG,IAAIkd,MAAM,CAACC,YAAP,CAAoB9yB,CAApB,CAAP;AACA;AACD,OAHD,MAGO,IAAIA,CAAC,GAAG,IAAJ,IAAYA,CAAC,IAAI,IAArB,EAA2B;AAChCC,SAAC,GAAGD,CAAC,GAAG,IAAR;AACAwpD,sBAAc,GAAG,CAAjB;AACD,OAHM,MAGA,IAAIxpD,CAAC,IAAI,IAAT,EAAe;AACpBC,SAAC,GAAGD,CAAC,GAAG,IAAR;AACAwpD,sBAAc,GAAG,CAAjB;AACD,OAHM,MAGA,IAAIxpD,CAAC,IAAI,IAAT,EAAe;AACpBC,SAAC,GAAGD,CAAC,GAAG,IAAR;AACAwpD,sBAAc,GAAG,CAAjB;AACD,OAHM,MAGA;AACLL,wBAAgB,CAACnyD,CAAD,EAAI2e,GAAJ,CAAhB;AACD;;AAED,WAAK,IAAI1gB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGu0D,cAApB,EAAoC,EAAEv0D,CAAtC,EAAyC;AACvC+K,SAAC,GAAGupD,KAAK,CAACvyD,CAAC,EAAF,CAAT;;AACA,YAAIgJ,CAAC,GAAG,IAAJ,IAAYA,CAAC,GAAG,IAApB,EAA0B;AACxBmpD,0BAAgB,CAACnyD,CAAD,EAAI2e,GAAJ,CAAhB;AACD;;AACD1V,SAAC,KAAK,CAAN;AACAA,SAAC,IAAID,CAAC,GAAG,IAAT;AACD;;AACD,UAAIC,CAAC,IAAI,MAAL,IAAeA,CAAC,IAAI,MAAxB,EAAgC;AAC9BkpD,wBAAgB,CAACnyD,CAAD,EAAI2e,GAAJ,CAAhB;AACD;;AACD,UAAI1V,CAAC,GAAG,QAAR,EAAkB;AAChBkpD,wBAAgB,CAACnyD,CAAD,EAAI2e,GAAJ,CAAhB;AACD;;AAED,UAAI1V,CAAC,IAAI,MAAT,EAAiB;AACf0V,WAAG,IAAIkd,MAAM,CAACC,YAAP,CAAoB7yB,CAApB,CAAP;AACD,OAFD,MAEO;AACLA,SAAC,IAAI,OAAL;AACA0V,WAAG,IAAIkd,MAAM,CAACC,YAAP,CAAoB,CAAC7yB,CAAC,IAAI,EAAN,IAAY,MAAhC,CAAP;AACA0V,WAAG,IAAIkd,MAAM,CAACC,YAAP,CAAoB,CAAC7yB,CAAC,GAAG,KAAL,IAAc,MAAlC,CAAP;AACD;AACF;;AACD,WAAO0V,GAAP;AACD,GA5CD;;AA8CA,MAAI8zC,aAAa,GAAG,SAAhBA,aAAgB,CAAUC,SAAV,EAAqB;AACvC,QAAI,CAAC,eAAe51D,IAAf,CAAoB41D,SAApB,CAAL,EAAqC;AACnC,YAAM,IAAI91D,KAAJ,CAAU,2BAAV,CAAN;AACD;;AACD81D,aAAS,GAAGA,SAAS,CAAC73D,OAAV,CAAkB,IAAlB,EAAwB,EAAxB,CAAZ;AACA,QAAI83D,EAAJ;AAAA,QAAQC,EAAR;AAAA,QAAYC,EAAZ;AAAA,QAAgBC,EAAhB;AAAA,QAAoBC,EAApB;AAAA,QAAwBC,EAAxB;AAAA,QAA4BC,EAA5B;AAAA,QAAgCC,EAAhC;AAAA,QAAoCX,KAAK,GAAG,EAA5C;AAAA,QAAgDpxC,KAAK,GAAG,CAAxD;AAAA,QAA2DjjB,MAAM,GAAGw0D,SAAS,CAACx0D,MAA9E,CALuC,CAOvC;;AACA,SAAK,IAAI8B,CAAC,GAAG,CAAR,EAAWc,KAAK,GAAG5C,MAAM,IAAI,CAAV,IAAe,CAAvC,EAA0C8B,CAAC,GAAGc,KAA9C,GAAsD;AACpD6xD,QAAE,GAAGV,kBAAkB,CAACS,SAAS,CAACn5C,MAAV,CAAiBvZ,CAAC,EAAlB,CAAD,CAAvB;AACA4yD,QAAE,GAAGX,kBAAkB,CAACS,SAAS,CAACn5C,MAAV,CAAiBvZ,CAAC,EAAlB,CAAD,CAAvB;AACA6yD,QAAE,GAAGZ,kBAAkB,CAACS,SAAS,CAACn5C,MAAV,CAAiBvZ,CAAC,EAAlB,CAAD,CAAvB;AACA8yD,QAAE,GAAGb,kBAAkB,CAACS,SAAS,CAACn5C,MAAV,CAAiBvZ,CAAC,EAAlB,CAAD,CAAvB;AACA+yD,QAAE,GAAGd,kBAAkB,CAACS,SAAS,CAACn5C,MAAV,CAAiBvZ,CAAC,EAAlB,CAAD,CAAvB;AACAgzD,QAAE,GAAGf,kBAAkB,CAACS,SAAS,CAACn5C,MAAV,CAAiBvZ,CAAC,EAAlB,CAAD,CAAvB;AACAizD,QAAE,GAAGhB,kBAAkB,CAACS,SAAS,CAACn5C,MAAV,CAAiBvZ,CAAC,EAAlB,CAAD,CAAvB;AACAkzD,QAAE,GAAGjB,kBAAkB,CAACS,SAAS,CAACn5C,MAAV,CAAiBvZ,CAAC,EAAlB,CAAD,CAAvB;AACAuyD,WAAK,CAACpxC,KAAK,EAAN,CAAL,GAAiB,CAACwxC,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,GAAxC;AACAL,WAAK,CAACpxC,KAAK,EAAN,CAAL,GAAiB,CAACyxC,EAAE,IAAI,CAAN,GAAUC,EAAE,IAAI,CAAhB,GAAoBC,EAAE,KAAK,CAA5B,IAAiC,GAAlD;AACAP,WAAK,CAACpxC,KAAK,EAAN,CAAL,GAAiB,CAAC2xC,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,GAAxC;AACAR,WAAK,CAACpxC,KAAK,EAAN,CAAL,GAAiB,CAAC4xC,EAAE,IAAI,CAAN,GAAUC,EAAE,IAAI,CAAhB,GAAoBC,EAAE,KAAK,CAA5B,IAAiC,GAAlD;AACAV,WAAK,CAACpxC,KAAK,EAAN,CAAL,GAAiB,CAAC8xC,EAAE,IAAI,CAAN,GAAUC,EAAX,IAAiB,GAAlC;AACD,KAtBsC,CAwBvC;;;AACA,QAAIC,MAAM,GAAGj1D,MAAM,GAAG4C,KAAtB;;AACA,QAAIqyD,MAAM,KAAK,CAAf,EAAkB;AAChBR,QAAE,GAAGV,kBAAkB,CAACS,SAAS,CAACn5C,MAAV,CAAiBvZ,CAAC,EAAlB,CAAD,CAAvB;AACA4yD,QAAE,GAAGX,kBAAkB,CAACS,SAAS,CAACn5C,MAAV,CAAiBvZ,CAAC,EAAlB,CAAD,CAAvB;AACAuyD,WAAK,CAACpxC,KAAK,EAAN,CAAL,GAAiB,CAACwxC,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,GAAxC;AACD,KAJD,MAIO,IAAIO,MAAM,KAAK,CAAf,EAAkB;AACvBR,QAAE,GAAGV,kBAAkB,CAACS,SAAS,CAACn5C,MAAV,CAAiBvZ,CAAC,EAAlB,CAAD,CAAvB;AACA4yD,QAAE,GAAGX,kBAAkB,CAACS,SAAS,CAACn5C,MAAV,CAAiBvZ,CAAC,EAAlB,CAAD,CAAvB;AACA6yD,QAAE,GAAGZ,kBAAkB,CAACS,SAAS,CAACn5C,MAAV,CAAiBvZ,CAAC,EAAlB,CAAD,CAAvB;AACA8yD,QAAE,GAAGb,kBAAkB,CAACS,SAAS,CAACn5C,MAAV,CAAiBvZ,CAAC,EAAlB,CAAD,CAAvB;AACAuyD,WAAK,CAACpxC,KAAK,EAAN,CAAL,GAAiB,CAACwxC,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,GAAxC;AACAL,WAAK,CAACpxC,KAAK,EAAN,CAAL,GAAiB,CAACyxC,EAAE,IAAI,CAAN,GAAUC,EAAE,IAAI,CAAhB,GAAoBC,EAAE,KAAK,CAA5B,IAAiC,GAAlD;AACD,KAPM,MAOA,IAAIK,MAAM,KAAK,CAAf,EAAkB;AACvBR,QAAE,GAAGV,kBAAkB,CAACS,SAAS,CAACn5C,MAAV,CAAiBvZ,CAAC,EAAlB,CAAD,CAAvB;AACA4yD,QAAE,GAAGX,kBAAkB,CAACS,SAAS,CAACn5C,MAAV,CAAiBvZ,CAAC,EAAlB,CAAD,CAAvB;AACA6yD,QAAE,GAAGZ,kBAAkB,CAACS,SAAS,CAACn5C,MAAV,CAAiBvZ,CAAC,EAAlB,CAAD,CAAvB;AACA8yD,QAAE,GAAGb,kBAAkB,CAACS,SAAS,CAACn5C,MAAV,CAAiBvZ,CAAC,EAAlB,CAAD,CAAvB;AACA+yD,QAAE,GAAGd,kBAAkB,CAACS,SAAS,CAACn5C,MAAV,CAAiBvZ,CAAC,EAAlB,CAAD,CAAvB;AACAuyD,WAAK,CAACpxC,KAAK,EAAN,CAAL,GAAiB,CAACwxC,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,GAAxC;AACAL,WAAK,CAACpxC,KAAK,EAAN,CAAL,GAAiB,CAACyxC,EAAE,IAAI,CAAN,GAAUC,EAAE,IAAI,CAAhB,GAAoBC,EAAE,KAAK,CAA5B,IAAiC,GAAlD;AACAP,WAAK,CAACpxC,KAAK,EAAN,CAAL,GAAiB,CAAC2xC,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,GAAxC;AACD,KATM,MASA,IAAII,MAAM,KAAK,CAAf,EAAkB;AACvBR,QAAE,GAAGV,kBAAkB,CAACS,SAAS,CAACn5C,MAAV,CAAiBvZ,CAAC,EAAlB,CAAD,CAAvB;AACA4yD,QAAE,GAAGX,kBAAkB,CAACS,SAAS,CAACn5C,MAAV,CAAiBvZ,CAAC,EAAlB,CAAD,CAAvB;AACA6yD,QAAE,GAAGZ,kBAAkB,CAACS,SAAS,CAACn5C,MAAV,CAAiBvZ,CAAC,EAAlB,CAAD,CAAvB;AACA8yD,QAAE,GAAGb,kBAAkB,CAACS,SAAS,CAACn5C,MAAV,CAAiBvZ,CAAC,EAAlB,CAAD,CAAvB;AACA+yD,QAAE,GAAGd,kBAAkB,CAACS,SAAS,CAACn5C,MAAV,CAAiBvZ,CAAC,EAAlB,CAAD,CAAvB;AACAgzD,QAAE,GAAGf,kBAAkB,CAACS,SAAS,CAACn5C,MAAV,CAAiBvZ,CAAC,EAAlB,CAAD,CAAvB;AACAizD,QAAE,GAAGhB,kBAAkB,CAACS,SAAS,CAACn5C,MAAV,CAAiBvZ,CAAC,EAAlB,CAAD,CAAvB;AACAuyD,WAAK,CAACpxC,KAAK,EAAN,CAAL,GAAiB,CAACwxC,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,GAAxC;AACAL,WAAK,CAACpxC,KAAK,EAAN,CAAL,GAAiB,CAACyxC,EAAE,IAAI,CAAN,GAAUC,EAAE,IAAI,CAAhB,GAAoBC,EAAE,KAAK,CAA5B,IAAiC,GAAlD;AACAP,WAAK,CAACpxC,KAAK,EAAN,CAAL,GAAiB,CAAC2xC,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,GAAxC;AACAR,WAAK,CAACpxC,KAAK,EAAN,CAAL,GAAiB,CAAC4xC,EAAE,IAAI,CAAN,GAAUC,EAAE,IAAI,CAAhB,GAAoBC,EAAE,KAAK,CAA5B,IAAiC,GAAlD;AACD;;AACD,WAAOV,KAAP;AACD,GA5DD;;AA8DA,MAAIa,WAAW,GAAG,SAAdA,WAAc,CAAUz0C,GAAV,EAAe;AAC/B,QAAIg0C,EAAJ;AAAA,QAAQC,EAAR;AAAA,QAAYC,EAAZ;AAAA,QAAgBC,EAAhB;AAAA,QAAoBC,EAApB;AAAA,QAAwBL,SAAS,GAAG,EAApC;AAAA,QAAwCx0D,MAAM,GAAGygB,GAAG,CAACzgB,MAArD;;AACA,SAAK,IAAI8B,CAAC,GAAG,CAAR,EAAWc,KAAK,GAAGqb,QAAQ,CAACje,MAAM,GAAG,CAAV,CAAR,GAAuB,CAA/C,EAAkD8B,CAAC,GAAGc,KAAtD,GAA8D;AAC5D6xD,QAAE,GAAGh0C,GAAG,CAAC6c,UAAJ,CAAex7B,CAAC,EAAhB,CAAL;AACA4yD,QAAE,GAAGj0C,GAAG,CAAC6c,UAAJ,CAAex7B,CAAC,EAAhB,CAAL;AACA6yD,QAAE,GAAGl0C,GAAG,CAAC6c,UAAJ,CAAex7B,CAAC,EAAhB,CAAL;AACA8yD,QAAE,GAAGn0C,GAAG,CAAC6c,UAAJ,CAAex7B,CAAC,EAAhB,CAAL;AACA+yD,QAAE,GAAGp0C,GAAG,CAAC6c,UAAJ,CAAex7B,CAAC,EAAhB,CAAL;AACA0yD,eAAS,IAAIV,kBAAkB,CAACW,EAAE,KAAK,CAAR,CAAlB,GACXX,kBAAkB,CAAC,CAACW,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CADP,GAEXZ,kBAAkB,CAAEY,EAAE,KAAK,CAAR,GAAa,EAAd,CAFP,GAGXZ,kBAAkB,CAAC,CAACY,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CAHP,GAIXb,kBAAkB,CAAC,CAACa,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CAJP,GAKXd,kBAAkB,CAAEc,EAAE,KAAK,CAAR,GAAa,EAAd,CALP,GAMXd,kBAAkB,CAAC,CAACc,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CANP,GAOXf,kBAAkB,CAACe,EAAE,GAAG,EAAN,CAPpB;AAQD,KAhB8B,CAkB/B;;;AACA,QAAII,MAAM,GAAGj1D,MAAM,GAAG4C,KAAtB;;AACA,QAAIqyD,MAAM,KAAK,CAAf,EAAkB;AAChBR,QAAE,GAAGh0C,GAAG,CAAC6c,UAAJ,CAAex7B,CAAf,CAAL;AACA0yD,eAAS,IAAIV,kBAAkB,CAACW,EAAE,KAAK,CAAR,CAAlB,GACXX,kBAAkB,CAAEW,EAAE,IAAI,CAAP,GAAY,EAAb,CADP,GAEX,QAFF;AAGD,KALD,MAKO,IAAIQ,MAAM,KAAK,CAAf,EAAkB;AACvBR,QAAE,GAAGh0C,GAAG,CAAC6c,UAAJ,CAAex7B,CAAC,EAAhB,CAAL;AACA4yD,QAAE,GAAGj0C,GAAG,CAAC6c,UAAJ,CAAex7B,CAAf,CAAL;AACA0yD,eAAS,IAAIV,kBAAkB,CAACW,EAAE,KAAK,CAAR,CAAlB,GACXX,kBAAkB,CAAC,CAACW,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CADP,GAEXZ,kBAAkB,CAAEY,EAAE,KAAK,CAAR,GAAa,EAAd,CAFP,GAGXZ,kBAAkB,CAAEY,EAAE,IAAI,CAAP,GAAY,EAAb,CAHP,GAIX,MAJF;AAKD,KARM,MAQA,IAAIO,MAAM,KAAK,CAAf,EAAkB;AACvBR,QAAE,GAAGh0C,GAAG,CAAC6c,UAAJ,CAAex7B,CAAC,EAAhB,CAAL;AACA4yD,QAAE,GAAGj0C,GAAG,CAAC6c,UAAJ,CAAex7B,CAAC,EAAhB,CAAL;AACA6yD,QAAE,GAAGl0C,GAAG,CAAC6c,UAAJ,CAAex7B,CAAf,CAAL;AACA0yD,eAAS,IAAIV,kBAAkB,CAACW,EAAE,KAAK,CAAR,CAAlB,GACXX,kBAAkB,CAAC,CAACW,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CADP,GAEXZ,kBAAkB,CAAEY,EAAE,KAAK,CAAR,GAAa,EAAd,CAFP,GAGXZ,kBAAkB,CAAC,CAACY,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CAHP,GAIXb,kBAAkB,CAAEa,EAAE,IAAI,CAAP,GAAY,EAAb,CAJP,GAKX,KALF;AAMD,KAVM,MAUA,IAAIM,MAAM,KAAK,CAAf,EAAkB;AACvBR,QAAE,GAAGh0C,GAAG,CAAC6c,UAAJ,CAAex7B,CAAC,EAAhB,CAAL;AACA4yD,QAAE,GAAGj0C,GAAG,CAAC6c,UAAJ,CAAex7B,CAAC,EAAhB,CAAL;AACA6yD,QAAE,GAAGl0C,GAAG,CAAC6c,UAAJ,CAAex7B,CAAC,EAAhB,CAAL;AACA8yD,QAAE,GAAGn0C,GAAG,CAAC6c,UAAJ,CAAex7B,CAAf,CAAL;AACA0yD,eAAS,IAAIV,kBAAkB,CAACW,EAAE,KAAK,CAAR,CAAlB,GACXX,kBAAkB,CAAC,CAACW,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CADP,GAEXZ,kBAAkB,CAAEY,EAAE,KAAK,CAAR,GAAa,EAAd,CAFP,GAGXZ,kBAAkB,CAAC,CAACY,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CAHP,GAIXb,kBAAkB,CAAC,CAACa,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CAJP,GAKXd,kBAAkB,CAAEc,EAAE,KAAK,CAAR,GAAa,EAAd,CALP,GAMXd,kBAAkB,CAAEc,EAAE,IAAI,CAAP,GAAY,EAAb,CANP,GAOX,GAPF;AAQD;;AACD,WAAOJ,SAAP;AACD,GA1DD;;AA4DA,MAAIW,UAAU,GAAG,SAAbA,UAAa,CAAU10C,GAAV,EAAe;AAC9B,QAAIg0C,EAAJ;AAAA,QAAQC,EAAR;AAAA,QAAYC,EAAZ;AAAA,QAAgBC,EAAhB;AAAA,QAAoBC,EAApB;AAAA,QAAwBnyB,IAAxB;AAAA,QAA8Bvf,GAAG,GAAG,KAApC;AAAA,QAA2CqxC,SAAS,GAAG,EAAvD;AAAA,QACEvxC,KAAK,GAAG,CADV;AAAA,QACanhB,CADb;AAAA,QACgBihB,KAAK,GAAG,CADxB;AAAA,QAC2BsxC,KAAK,GAAG,CADnC;AAAA,QACsCr0D,MAAM,GAAGygB,GAAG,CAACzgB,MADnD;;AAEA,OAAG;AACDg0D,YAAM,CAAC,CAAD,CAAN,GAAYA,MAAM,CAAC,CAAD,CAAlB;AACAA,YAAM,CAAC,CAAD,CAAN,GAAYA,MAAM,CAAC,CAAD,CAAlB;AACAA,YAAM,CAAC,CAAD,CAAN,GAAYA,MAAM,CAAC,CAAD,CAAlB;;AACA,WAAKlyD,CAAC,GAAGihB,KAAT,EAAgBE,KAAK,GAAGjjB,MAAR,IAAkB8B,CAAC,GAAG,CAAtC,EAAyC,EAAEmhB,KAA3C,EAAkD;AAChDyf,YAAI,GAAGjiB,GAAG,CAAC6c,UAAJ,CAAera,KAAf,CAAP;;AACA,YAAIyf,IAAI,GAAG,IAAX,EAAiB;AACfsxB,gBAAM,CAAClyD,CAAC,EAAF,CAAN,GAAc4gC,IAAd;AACD,SAFD,MAEO,IAAIA,IAAI,GAAG,KAAX,EAAkB;AACvBsxB,gBAAM,CAAClyD,CAAC,EAAF,CAAN,GAAc,OAAQ4gC,IAAI,IAAI,CAA9B;AACAsxB,gBAAM,CAAClyD,CAAC,EAAF,CAAN,GAAc,OAAQ4gC,IAAI,GAAG,IAA7B;AACD,SAHM,MAGA,IAAIA,IAAI,GAAG,MAAP,IAAiBA,IAAI,IAAI,MAA7B,EAAqC;AAC1CsxB,gBAAM,CAAClyD,CAAC,EAAF,CAAN,GAAc,OAAQ4gC,IAAI,IAAI,EAA9B;AACAsxB,gBAAM,CAAClyD,CAAC,EAAF,CAAN,GAAc,OAAS4gC,IAAI,IAAI,CAAT,GAAc,IAApC;AACAsxB,gBAAM,CAAClyD,CAAC,EAAF,CAAN,GAAc,OAAQ4gC,IAAI,GAAG,IAA7B;AACD,SAJM,MAIA;AACLA,cAAI,GAAG,WAAY,CAACA,IAAI,GAAG,KAAR,KAAkB,EAAnB,GAA0BjiB,GAAG,CAAC6c,UAAJ,CAAe,EAAEra,KAAjB,IAA0B,KAA/D,CAAP;AACA+wC,gBAAM,CAAClyD,CAAC,EAAF,CAAN,GAAc,OAAQ4gC,IAAI,IAAI,EAA9B;AACAsxB,gBAAM,CAAClyD,CAAC,EAAF,CAAN,GAAc,OAAS4gC,IAAI,IAAI,EAAT,GAAe,IAArC;AACAsxB,gBAAM,CAAClyD,CAAC,EAAF,CAAN,GAAc,OAAS4gC,IAAI,IAAI,CAAT,GAAc,IAApC;AACAsxB,gBAAM,CAAClyD,CAAC,EAAF,CAAN,GAAc,OAAQ4gC,IAAI,GAAG,IAA7B;AACD;AACF;;AACD2xB,WAAK,IAAIvyD,CAAC,GAAGihB,KAAb;AACAA,WAAK,GAAGjhB,CAAC,GAAG,CAAZ;;AACA,UAAImhB,KAAK,KAAKjjB,MAAd,EAAsB;AACpB,UAAEijB,KAAF;AACD;;AACD,UAAIA,KAAK,GAAGjjB,MAAR,IAAkB8B,CAAC,GAAG,CAA1B,EAA6B;AAC3BqhB,WAAG,GAAG,IAAN;AACD;;AACDsxC,QAAE,GAAGT,MAAM,CAAC,CAAD,CAAX;;AACA,UAAIlyD,CAAC,GAAG,CAAR,EAAW;AACT4yD,UAAE,GAAGV,MAAM,CAAC,CAAD,CAAX;AACAW,UAAE,GAAGX,MAAM,CAAC,CAAD,CAAX;AACAY,UAAE,GAAGZ,MAAM,CAAC,CAAD,CAAX;AACAa,UAAE,GAAGb,MAAM,CAAC,CAAD,CAAX;AACAQ,iBAAS,IAAIV,kBAAkB,CAACW,EAAE,KAAK,CAAR,CAAlB,GACXX,kBAAkB,CAAC,CAACW,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CADP,GAEXZ,kBAAkB,CAAEY,EAAE,KAAK,CAAR,GAAa,EAAd,CAFP,GAGXZ,kBAAkB,CAAC,CAACY,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CAHP,GAIXb,kBAAkB,CAAC,CAACa,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CAJP,GAKXd,kBAAkB,CAAEc,EAAE,KAAK,CAAR,GAAa,EAAd,CALP,GAMXd,kBAAkB,CAAC,CAACc,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CANP,GAOXf,kBAAkB,CAACe,EAAE,GAAG,EAAN,CAPpB;AAQD,OAbD,MAaO,IAAI/yD,CAAC,KAAK,CAAV,EAAa;AAClB0yD,iBAAS,IAAIV,kBAAkB,CAACW,EAAE,KAAK,CAAR,CAAlB,GACXX,kBAAkB,CAAEW,EAAE,IAAI,CAAP,GAAY,EAAb,CADP,GAEX,QAFF;AAGD,OAJM,MAIA,IAAI3yD,CAAC,KAAK,CAAV,EAAa;AAClB4yD,UAAE,GAAGV,MAAM,CAAC,CAAD,CAAX;AACAQ,iBAAS,IAAIV,kBAAkB,CAACW,EAAE,KAAK,CAAR,CAAlB,GACXX,kBAAkB,CAAC,CAACW,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CADP,GAEXZ,kBAAkB,CAAEY,EAAE,KAAK,CAAR,GAAa,EAAd,CAFP,GAGXZ,kBAAkB,CAAEY,EAAE,IAAI,CAAP,GAAY,EAAb,CAHP,GAIX,MAJF;AAKD,OAPM,MAOA,IAAI5yD,CAAC,KAAK,CAAV,EAAa;AAClB4yD,UAAE,GAAGV,MAAM,CAAC,CAAD,CAAX;AACAW,UAAE,GAAGX,MAAM,CAAC,CAAD,CAAX;AACAQ,iBAAS,IAAIV,kBAAkB,CAACW,EAAE,KAAK,CAAR,CAAlB,GACXX,kBAAkB,CAAC,CAACW,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CADP,GAEXZ,kBAAkB,CAAEY,EAAE,KAAK,CAAR,GAAa,EAAd,CAFP,GAGXZ,kBAAkB,CAAC,CAACY,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CAHP,GAIXb,kBAAkB,CAAEa,EAAE,IAAI,CAAP,GAAY,EAAb,CAJP,GAKX,KALF;AAMD,OATM,MASA;AACLD,UAAE,GAAGV,MAAM,CAAC,CAAD,CAAX;AACAW,UAAE,GAAGX,MAAM,CAAC,CAAD,CAAX;AACAY,UAAE,GAAGZ,MAAM,CAAC,CAAD,CAAX;AACAQ,iBAAS,IAAIV,kBAAkB,CAACW,EAAE,KAAK,CAAR,CAAlB,GACXX,kBAAkB,CAAC,CAACW,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CADP,GAEXZ,kBAAkB,CAAEY,EAAE,KAAK,CAAR,GAAa,EAAd,CAFP,GAGXZ,kBAAkB,CAAC,CAACY,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CAHP,GAIXb,kBAAkB,CAAC,CAACa,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CAJP,GAKXd,kBAAkB,CAAEc,EAAE,KAAK,CAAR,GAAa,EAAd,CALP,GAMXd,kBAAkB,CAAEc,EAAE,IAAI,CAAP,GAAY,EAAb,CANP,GAOX,GAPF;AAQD;AACF,KA9ED,QA8ES,CAACzxC,GA9EV;;AA+EA,WAAOqxC,SAAP;AACD,GAnFD;;AAqFA,MAAIY,WAAW,GAAG,SAAdA,WAAc,CAAUf,KAAV,EAAiB;AACjC,QAAII,EAAJ;AAAA,QAAQC,EAAR;AAAA,QAAYC,EAAZ;AAAA,QAAgBC,EAAhB;AAAA,QAAoBC,EAApB;AAAA,QAAwBL,SAAS,GAAG,EAApC;AAAA,QAAwCx0D,MAAM,GAAGq0D,KAAK,CAACr0D,MAAvD;;AACA,SAAK,IAAI8B,CAAC,GAAG,CAAR,EAAWc,KAAK,GAAGqb,QAAQ,CAACje,MAAM,GAAG,CAAV,CAAR,GAAuB,CAA/C,EAAkD8B,CAAC,GAAGc,KAAtD,GAA8D;AAC5D6xD,QAAE,GAAGJ,KAAK,CAACvyD,CAAC,EAAF,CAAV;AACA4yD,QAAE,GAAGL,KAAK,CAACvyD,CAAC,EAAF,CAAV;AACA6yD,QAAE,GAAGN,KAAK,CAACvyD,CAAC,EAAF,CAAV;AACA8yD,QAAE,GAAGP,KAAK,CAACvyD,CAAC,EAAF,CAAV;AACA+yD,QAAE,GAAGR,KAAK,CAACvyD,CAAC,EAAF,CAAV;AACA0yD,eAAS,IAAIV,kBAAkB,CAACW,EAAE,KAAK,CAAR,CAAlB,GACXX,kBAAkB,CAAC,CAACW,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CADP,GAEXZ,kBAAkB,CAAEY,EAAE,KAAK,CAAR,GAAa,EAAd,CAFP,GAGXZ,kBAAkB,CAAC,CAACY,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CAHP,GAIXb,kBAAkB,CAAC,CAACa,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CAJP,GAKXd,kBAAkB,CAAEc,EAAE,KAAK,CAAR,GAAa,EAAd,CALP,GAMXd,kBAAkB,CAAC,CAACc,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CANP,GAOXf,kBAAkB,CAACe,EAAE,GAAG,EAAN,CAPpB;AAQD,KAhBgC,CAkBjC;;;AACA,QAAII,MAAM,GAAGj1D,MAAM,GAAG4C,KAAtB;;AACA,QAAIqyD,MAAM,KAAK,CAAf,EAAkB;AAChBR,QAAE,GAAGJ,KAAK,CAACvyD,CAAD,CAAV;AACA0yD,eAAS,IAAIV,kBAAkB,CAACW,EAAE,KAAK,CAAR,CAAlB,GACXX,kBAAkB,CAAEW,EAAE,IAAI,CAAP,GAAY,EAAb,CADP,GAEX,QAFF;AAGD,KALD,MAKO,IAAIQ,MAAM,KAAK,CAAf,EAAkB;AACvBR,QAAE,GAAGJ,KAAK,CAACvyD,CAAC,EAAF,CAAV;AACA4yD,QAAE,GAAGL,KAAK,CAACvyD,CAAD,CAAV;AACA0yD,eAAS,IAAIV,kBAAkB,CAACW,EAAE,KAAK,CAAR,CAAlB,GACXX,kBAAkB,CAAC,CAACW,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CADP,GAEXZ,kBAAkB,CAAEY,EAAE,KAAK,CAAR,GAAa,EAAd,CAFP,GAGXZ,kBAAkB,CAAEY,EAAE,IAAI,CAAP,GAAY,EAAb,CAHP,GAIX,MAJF;AAKD,KARM,MAQA,IAAIO,MAAM,KAAK,CAAf,EAAkB;AACvBR,QAAE,GAAGJ,KAAK,CAACvyD,CAAC,EAAF,CAAV;AACA4yD,QAAE,GAAGL,KAAK,CAACvyD,CAAC,EAAF,CAAV;AACA6yD,QAAE,GAAGN,KAAK,CAACvyD,CAAD,CAAV;AACA0yD,eAAS,IAAIV,kBAAkB,CAACW,EAAE,KAAK,CAAR,CAAlB,GACXX,kBAAkB,CAAC,CAACW,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CADP,GAEXZ,kBAAkB,CAAEY,EAAE,KAAK,CAAR,GAAa,EAAd,CAFP,GAGXZ,kBAAkB,CAAC,CAACY,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CAHP,GAIXb,kBAAkB,CAAEa,EAAE,IAAI,CAAP,GAAY,EAAb,CAJP,GAKX,KALF;AAMD,KAVM,MAUA,IAAIM,MAAM,KAAK,CAAf,EAAkB;AACvBR,QAAE,GAAGJ,KAAK,CAACvyD,CAAC,EAAF,CAAV;AACA4yD,QAAE,GAAGL,KAAK,CAACvyD,CAAC,EAAF,CAAV;AACA6yD,QAAE,GAAGN,KAAK,CAACvyD,CAAC,EAAF,CAAV;AACA8yD,QAAE,GAAGP,KAAK,CAACvyD,CAAD,CAAV;AACA0yD,eAAS,IAAIV,kBAAkB,CAACW,EAAE,KAAK,CAAR,CAAlB,GACXX,kBAAkB,CAAC,CAACW,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CADP,GAEXZ,kBAAkB,CAAEY,EAAE,KAAK,CAAR,GAAa,EAAd,CAFP,GAGXZ,kBAAkB,CAAC,CAACY,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CAHP,GAIXb,kBAAkB,CAAC,CAACa,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CAJP,GAKXd,kBAAkB,CAAEc,EAAE,KAAK,CAAR,GAAa,EAAd,CALP,GAMXd,kBAAkB,CAAEc,EAAE,IAAI,CAAP,GAAY,EAAb,CANP,GAOX,GAPF;AAQD;;AACD,WAAOJ,SAAP;AACD,GA1DD;;AA4DA,MAAIrX,MAAM,GAAG,SAATA,MAAS,CAAUkY,KAAV,EAAiBC,SAAjB,EAA4B;AACvC,QAAIC,SAAS,GAAG,OAAOF,KAAP,KAAkB,QAAlC;;AACA,QAAIE,SAAS,IAAIF,KAAK,CAACl2D,WAAN,KAAsBq2D,WAAvC,EAAoD;AAClDH,WAAK,GAAG,IAAII,UAAJ,CAAeJ,KAAf,CAAR;AACD;;AACD,QAAIE,SAAJ,EAAe;AACb,aAAOH,WAAW,CAACC,KAAD,CAAlB;AACD,KAFD,MAEO,IAAIC,SAAJ,EAAe;AACpB,aAAOJ,WAAW,CAACG,KAAD,CAAlB;AACD,KAFM,MAEA;AACL,aAAOF,UAAU,CAACE,KAAD,CAAjB;AACD;AACF,GAZD;;AAcA,MAAIhY,MAAM,GAAG,SAATA,MAAS,CAAUmX,SAAV,EAAqBc,SAArB,EAAgC;AAC3C,QAAI,CAACA,SAAL,EAAgB;AACd,aAAOlB,YAAY,CAACG,aAAa,CAACC,SAAD,CAAd,CAAnB;AACD;;AACD,QAAI,CAAC,eAAe51D,IAAf,CAAoB41D,SAApB,CAAL,EAAqC;AACnC,YAAM,IAAI91D,KAAJ,CAAU,2BAAV,CAAN;AACD;;AACD,QAAI+1D,EAAJ;AAAA,QAAQC,EAAR;AAAA,QAAYC,EAAZ;AAAA,QAAgBC,EAAhB;AAAA,QAAoBC,EAApB;AAAA,QAAwBC,EAAxB;AAAA,QAA4BC,EAA5B;AAAA,QAAgCC,EAAhC;AAAA,QAAoCv0C,GAAG,GAAG,EAA1C;AAAA,QAA8CzgB,MAAM,GAAGw0D,SAAS,CAAC70D,OAAV,CAAkB,GAAlB,CAAvD;;AACA,QAAIK,MAAM,KAAK,CAAC,CAAhB,EAAmB;AACjBA,YAAM,GAAGw0D,SAAS,CAACx0D,MAAnB;AACD,KAV0C,CAY3C;;;AACA,SAAK,IAAI8B,CAAC,GAAG,CAAR,EAAWc,KAAK,GAAG5C,MAAM,IAAI,CAAV,IAAe,CAAvC,EAA0C8B,CAAC,GAAGc,KAA9C,GAAsD;AACpD6xD,QAAE,GAAGV,kBAAkB,CAACS,SAAS,CAACn5C,MAAV,CAAiBvZ,CAAC,EAAlB,CAAD,CAAvB;AACA4yD,QAAE,GAAGX,kBAAkB,CAACS,SAAS,CAACn5C,MAAV,CAAiBvZ,CAAC,EAAlB,CAAD,CAAvB;AACA6yD,QAAE,GAAGZ,kBAAkB,CAACS,SAAS,CAACn5C,MAAV,CAAiBvZ,CAAC,EAAlB,CAAD,CAAvB;AACA8yD,QAAE,GAAGb,kBAAkB,CAACS,SAAS,CAACn5C,MAAV,CAAiBvZ,CAAC,EAAlB,CAAD,CAAvB;AACA+yD,QAAE,GAAGd,kBAAkB,CAACS,SAAS,CAACn5C,MAAV,CAAiBvZ,CAAC,EAAlB,CAAD,CAAvB;AACAgzD,QAAE,GAAGf,kBAAkB,CAACS,SAAS,CAACn5C,MAAV,CAAiBvZ,CAAC,EAAlB,CAAD,CAAvB;AACAizD,QAAE,GAAGhB,kBAAkB,CAACS,SAAS,CAACn5C,MAAV,CAAiBvZ,CAAC,EAAlB,CAAD,CAAvB;AACAkzD,QAAE,GAAGjB,kBAAkB,CAACS,SAAS,CAACn5C,MAAV,CAAiBvZ,CAAC,EAAlB,CAAD,CAAvB;AACA2e,SAAG,IAAIkd,MAAM,CAACC,YAAP,CAAoB,CAAC62B,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,GAA3C,IACL/2B,MAAM,CAACC,YAAP,CAAoB,CAAC82B,EAAE,IAAI,CAAN,GAAUC,EAAE,IAAI,CAAhB,GAAoBC,EAAE,KAAK,CAA5B,IAAiC,GAArD,CADK,GAELj3B,MAAM,CAACC,YAAP,CAAoB,CAACg3B,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,GAA3C,CAFK,GAGLl3B,MAAM,CAACC,YAAP,CAAoB,CAACi3B,EAAE,IAAI,CAAN,GAAUC,EAAE,IAAI,CAAhB,GAAoBC,EAAE,KAAK,CAA5B,IAAiC,GAArD,CAHK,GAILp3B,MAAM,CAACC,YAAP,CAAoB,CAACm3B,EAAE,IAAI,CAAN,GAAUC,EAAX,IAAiB,GAArC,CAJF;AAKD,KA3B0C,CA6B3C;;;AACA,QAAIC,MAAM,GAAGj1D,MAAM,GAAG4C,KAAtB;;AACA,QAAIqyD,MAAM,KAAK,CAAf,EAAkB;AAChBR,QAAE,GAAGV,kBAAkB,CAACS,SAAS,CAACn5C,MAAV,CAAiBvZ,CAAC,EAAlB,CAAD,CAAvB;AACA4yD,QAAE,GAAGX,kBAAkB,CAACS,SAAS,CAACn5C,MAAV,CAAiBvZ,CAAC,EAAlB,CAAD,CAAvB;AACA2e,SAAG,IAAIkd,MAAM,CAACC,YAAP,CAAoB,CAAC62B,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,GAA3C,CAAP;AACD,KAJD,MAIO,IAAIO,MAAM,KAAK,CAAf,EAAkB;AACvBR,QAAE,GAAGV,kBAAkB,CAACS,SAAS,CAACn5C,MAAV,CAAiBvZ,CAAC,EAAlB,CAAD,CAAvB;AACA4yD,QAAE,GAAGX,kBAAkB,CAACS,SAAS,CAACn5C,MAAV,CAAiBvZ,CAAC,EAAlB,CAAD,CAAvB;AACA6yD,QAAE,GAAGZ,kBAAkB,CAACS,SAAS,CAACn5C,MAAV,CAAiBvZ,CAAC,EAAlB,CAAD,CAAvB;AACA8yD,QAAE,GAAGb,kBAAkB,CAACS,SAAS,CAACn5C,MAAV,CAAiBvZ,CAAC,EAAlB,CAAD,CAAvB;AACA2e,SAAG,IAAIkd,MAAM,CAACC,YAAP,CAAoB,CAAC62B,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,GAA3C,IACL/2B,MAAM,CAACC,YAAP,CAAoB,CAAC82B,EAAE,IAAI,CAAN,GAAUC,EAAE,IAAI,CAAhB,GAAoBC,EAAE,KAAK,CAA5B,IAAiC,GAArD,CADF;AAED,KAPM,MAOA,IAAIK,MAAM,KAAK,CAAf,EAAkB;AACvBR,QAAE,GAAGV,kBAAkB,CAACS,SAAS,CAACn5C,MAAV,CAAiBvZ,CAAC,EAAlB,CAAD,CAAvB;AACA4yD,QAAE,GAAGX,kBAAkB,CAACS,SAAS,CAACn5C,MAAV,CAAiBvZ,CAAC,EAAlB,CAAD,CAAvB;AACA6yD,QAAE,GAAGZ,kBAAkB,CAACS,SAAS,CAACn5C,MAAV,CAAiBvZ,CAAC,EAAlB,CAAD,CAAvB;AACA8yD,QAAE,GAAGb,kBAAkB,CAACS,SAAS,CAACn5C,MAAV,CAAiBvZ,CAAC,EAAlB,CAAD,CAAvB;AACA+yD,QAAE,GAAGd,kBAAkB,CAACS,SAAS,CAACn5C,MAAV,CAAiBvZ,CAAC,EAAlB,CAAD,CAAvB;AACA2e,SAAG,IAAIkd,MAAM,CAACC,YAAP,CAAoB,CAAC62B,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,GAA3C,IACL/2B,MAAM,CAACC,YAAP,CAAoB,CAAC82B,EAAE,IAAI,CAAN,GAAUC,EAAE,IAAI,CAAhB,GAAoBC,EAAE,KAAK,CAA5B,IAAiC,GAArD,CADK,GAELj3B,MAAM,CAACC,YAAP,CAAoB,CAACg3B,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,GAA3C,CAFF;AAGD,KATM,MASA,IAAII,MAAM,KAAK,CAAf,EAAkB;AACvBR,QAAE,GAAGV,kBAAkB,CAACS,SAAS,CAACn5C,MAAV,CAAiBvZ,CAAC,EAAlB,CAAD,CAAvB;AACA4yD,QAAE,GAAGX,kBAAkB,CAACS,SAAS,CAACn5C,MAAV,CAAiBvZ,CAAC,EAAlB,CAAD,CAAvB;AACA6yD,QAAE,GAAGZ,kBAAkB,CAACS,SAAS,CAACn5C,MAAV,CAAiBvZ,CAAC,EAAlB,CAAD,CAAvB;AACA8yD,QAAE,GAAGb,kBAAkB,CAACS,SAAS,CAACn5C,MAAV,CAAiBvZ,CAAC,EAAlB,CAAD,CAAvB;AACA+yD,QAAE,GAAGd,kBAAkB,CAACS,SAAS,CAACn5C,MAAV,CAAiBvZ,CAAC,EAAlB,CAAD,CAAvB;AACAgzD,QAAE,GAAGf,kBAAkB,CAACS,SAAS,CAACn5C,MAAV,CAAiBvZ,CAAC,EAAlB,CAAD,CAAvB;AACAizD,QAAE,GAAGhB,kBAAkB,CAACS,SAAS,CAACn5C,MAAV,CAAiBvZ,CAAC,EAAlB,CAAD,CAAvB;AACA2e,SAAG,IAAIkd,MAAM,CAACC,YAAP,CAAoB,CAAC62B,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,GAA3C,IACL/2B,MAAM,CAACC,YAAP,CAAoB,CAAC82B,EAAE,IAAI,CAAN,GAAUC,EAAE,IAAI,CAAhB,GAAoBC,EAAE,KAAK,CAA5B,IAAiC,GAArD,CADK,GAELj3B,MAAM,CAACC,YAAP,CAAoB,CAACg3B,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,GAA3C,CAFK,GAGLl3B,MAAM,CAACC,YAAP,CAAoB,CAACi3B,EAAE,IAAI,CAAN,GAAUC,EAAE,IAAI,CAAhB,GAAoBC,EAAE,KAAK,CAA5B,IAAiC,GAArD,CAHF;AAID;;AACD,WAAOt0C,GAAP;AACD,GAjED;;AAmEA,MAAI8+B,OAAO,GAAG;AACZpC,UAAM,EAAEA,MADI;AAEZE,UAAM,EAAEA;AAFI,GAAd;AAIAA,QAAM,CAACqY,OAAP,GAAiBnB,aAAjB;;AAEA,MAAId,SAAJ,EAAe;AACbE,UAAM,CAACpU,OAAP,GAAiBA,OAAjB;AACD,GAFD,MAEO;AACLn6C,QAAI,CAACg4C,MAAL,GAAcmC,OAAd;;AACA,QAAIqU,GAAJ,EAAS;AACPC,yCAAO,YAAW;AAChB,eAAOtU,OAAP;AACD,OAFK;AAAA,oGAAN;AAGD;AACF;AACF,CAzbD,I;;;;;;;ACLA;AAAO,IAAIrvC,MAAyC,GAAG;AAEnDqC,QAFmD,oBAE9B;AACjB,WAAOtT,MAAM,CAAC+Q,QAAd;AACH,GAJkD;AAMnDiiC,UANmD,oBAM1C4K,SAN0C,EAMhB7sC,QANgB,EAMK;AAEpD,aAASy0C,MAAT,CAAgB1/B,OAAhB,EAAuC;AAEnC,UAAI,CAACA,OAAD,IAAY,CAACA,OAAO,CAAC0B,OAArB,IAAgC1B,OAAO,CAAC0B,OAAR,CAAgB9a,WAAhB,OAAkC,QAAtE,EAAgF;AAC5E;AACH,OAJkC,CAMnC;;;AACA,UAAI,CAACoZ,OAAO,CAACsC,UAAR,CAAmB9oB,IAApB,IAA4BwmB,OAAO,CAACsC,UAAR,CAAmB9oB,IAAnB,CAAwBC,KAAxB,KAAkC,yBAA9D,IAA2F,CAACumB,OAAO,CAAC6I,UAAxG,EAAoH;AAChH;AACH;;AAED,UAAIpH,GAAG,GAAGzB,OAAO,CAAC+lB,YAAR,CAAqB,gBAArB,CAAV;;AAEA,UAAI,CAACtkB,GAAD,IAAQA,GAAG,KAAKq2B,SAAS,CAACr2B,GAA9B,EAAmC;AAC/B;AACH;;AAEDq2B,eAAS,CAACjzC,GAAV;AAEA,UAAI9M,KAA4B,GAAGioB,OAAO,CAAC4wC,SAAR,GAC7BC,IAAI,OAAM7wC,OAAO,CAAC4wC,SAAd,OADyB,CACI;AADJ,QAE7B,EAFN;AAIA,UAAI9wC,SAAS,GAAG7U,QAAQ,CAACkX,aAAT,CAAuB,KAAvB,CAAhB;;AAEA,UAAI,CAACnC,OAAO,CAAC6I,UAAb,EAAyB;AACrB,cAAM,IAAIlvB,KAAJ,yBAAN;AACH;;AAEDqmB,aAAO,CAAC6I,UAAR,CAAmByB,YAAnB,CAAgCxK,SAAhC,EAA2CE,OAA3C,EA7BmC,CA+BnC;;AACA83B,eAAS,CAAC4H,MAAV,CAAiB3nD,KAAjB,EAAwB+nB,SAAxB;AACH;;AAED,aAASgxC,IAAT,GAAgB;AACZ,UAAIC,UAAU,GAAGj4D,KAAK,CAAC4D,SAAN,CAAgBsO,KAAhB,CAAsB3Q,IAAtB,CAA2B4Q,QAAQ,CAACC,oBAAT,CAA8B,QAA9B,CAA3B,CAAjB;;AADY,8BAGQ6lD,UAHR,gBAGoB;AAA3B,YAAI/wC,OAAO,GAAI+wC,UAAJ,KAAX;AACDrR,cAAM,CAAC1/B,OAAD,CAAN;AACH;AACJ;;AAED8wC,QAAI;AACJ7lD,YAAQ,CAAC1D,gBAAT,CAA0B,kBAA1B,EAA8CupD,IAA9C;AACA52D,UAAM,CAACqN,gBAAP,CAAwB,MAAxB,EAAgCupD,IAAhC;AAEA7lD,YAAQ,CAAC1D,gBAAT,CAA0B,iBAA1B,EAA6C,UAAAuQ,KAAK,EAAI;AAClD;AACA4nC,YAAM,CAAC5nC,KAAK,CAACuF,MAAP,CAAN;AACH,KAHD;AAIH;AA3DkD,CAAhD,C;;;;;;;;;;;ACFP;AAsBO,IAAIsmC,KAAgD,GAAG;AAE1Dn2C,QAF0D,oBAE7B;AACzB,QAAItT,MAAM,CAAC82D,KAAP,IAAgB92D,MAAM,CAAC+2D,QAA3B,EAAqC;AACjC,aAAO;AACHD,aAAK,EAAK92D,MAAM,CAAC82D,KADd;AAEHC,gBAAQ,EAAE/2D,MAAM,CAAC+2D;AAFd,OAAP;AAIH;AACJ,GATyD;AAW1D/jB,UAX0D,oBAWjD4K,SAXiD,QAW2C;AAAA,QAAhEkZ,KAAgE,QAAhEA,KAAgE;AAAA,QAAzDC,QAAyD,QAAzDA,QAAyD;;AAEjG,QAAID,KAAK,CAACE,WAAV,EAAuB;AAEnB;AACApZ,eAAS,CAAC6L,KAAV,GAAkBqN,KAAK,CAACE,WAAN,CAAkB;AAAA;AAEhCxR,cAFgC,oBAEJ;AACxB,iBAAOsR,KAAK,CAAC7uC,aAAN,CAAoB,KAApB,EAA2B,IAA3B,CAAP;AACH,SAJ+B;AAMhCgvC,yBANgC,+BAMZ;AAChBrZ,mBAAS,CAACjzC,GAAV;AAEA,cAAIyb,EAAE,GAAG2wC,QAAQ,CAACG,WAAT,CAAqB,IAArB,CAAT;AAEA,cAAIxrD,MAAM,GAAGkyC,SAAS,CAACr1C,IAAV,CAAeqS,2DAAM,CAAC,EAAD,EAAK,KAAK/c,KAAV,CAArB,EAAuC,IAAvC,EAA6CuoB,EAA7C,CAAb;AAEA,eAAK+wC,QAAL,CAAc;AAAEzrD,kBAAM,EAANA;AAAF,WAAd;AAEAA,gBAAM,CAAC85C,MAAP,CAAcp/B,EAAd;AACH,SAhB+B;AAkBhCgxC,0BAlBgC,gCAkBX;AAEjB,cAAI,KAAK5vD,KAAL,IAAc,KAAKA,KAAL,CAAWkE,MAA7B,EAAqC;AACjC,iBAAKlE,KAAL,CAAWkE,MAAX,CAAkBy1C,WAAlB,CAA8BvmC,2DAAM,CAAC,EAAD,EAAK,KAAK/c,KAAV,CAApC;AACH;AACJ,SAvB+B;AAyBhCw5D,4BAzBgC,kCAyBT;AACnB,cAAI,KAAK7vD,KAAL,IAAc,KAAKA,KAAL,CAAWkE,MAA7B,EAAqC;AACjC,iBAAKlE,KAAL,CAAWkE,MAAX,CAAkB01C,OAAlB;AACH;AACJ;AA7B+B,OAAlB,CAAlB;AA+BH,KAlCD,MAkCO;AACH;AACAxD,eAAS,CAAC6L,KAAV;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;;AAAA,eACIjE,MADJ,GACI,kBAA4B;AACxB,iBAAOsR,KAAK,CAAC7uC,aAAN,CAAoB,KAApB,EAA2B,IAA3B,CAAP;AACH,SAHL;;AAAA,eAKIgvC,iBALJ,GAKI,6BAAoB;AAChBrZ,mBAAS,CAACjzC,GAAV;AAEA,cAAIyb,EAAE,GAAG2wC,QAAQ,CAACG,WAAT,CAAqB,IAArB,CAAT;AAEA,cAAIxrD,MAAM,GAAGkyC,SAAS,CAACr1C,IAAV,CAAeqS,2DAAM,CAAC,EAAD,EAAK,KAAK/c,KAAV,CAArB,EAAuC,IAAvC,EAA6CuoB,EAA7C,CAAb;AAEA,eAAK+wC,QAAL,CAAc;AAAEzrD,kBAAM,EAANA;AAAF,WAAd;AAEAA,gBAAM,CAAC85C,MAAP,CAAcp/B,EAAd;AACH,SAfL;;AAAA,eAiBIgxC,kBAjBJ,GAiBI,8BAAqB;AAEjB,cAAI,KAAK5vD,KAAL,IAAc,KAAKA,KAAL,CAAWkE,MAA7B,EAAqC;AACjC,iBAAKlE,KAAL,CAAWkE,MAAX,CAAkBy1C,WAAlB,CAA8BvmC,2DAAM,CAAC,EAAD,EAAK,KAAK/c,KAAV,CAApC;AACH;AACJ,SAtBL;;AAAA,eAwBIw5D,oBAxBJ,GAwBI,gCAAuB;AACnB,cAAI,KAAK7vD,KAAL,IAAc,KAAKA,KAAL,CAAWkE,MAA7B,EAAqC;AACjC,iBAAKlE,KAAL,CAAWkE,MAAX,CAAkB01C,OAAlB;AACH;AACJ,SA5BL;;AAAA;AAAA,QAAgC0V,KAAK,CAACnN,SAAtC;AA8BH;;AAED,WAAO/L,SAAS,CAAC6L,KAAjB;AACH;AAlFyD,CAAvD,C;;;;;;;ACrBP;AAAA;AAAA;AASO,IAAIC,GAAkC,GAAG;AAE5Cp2C,QAF4C,oBAEnC,CACL;AACH,GAJ2C;AAM5C0/B,UAN4C,oBAMhC4K,SANgC,EAMS;AAEjD,WAAO;AACH4H,YADG,kBACIv9B,aADJ,EAC6B;AAC5B,eAAOA,aAAa,CAAC,KAAD,CAApB;AACH,OAHE;AAKHqvC,kBAAY,EAAE,KALX;AAOHC,aAPG,qBAOO;AACN,YAAInxC,EAAE,GAAG,KAAKoxC,GAAd,CADM,CAGN;;AACA,aAAK9rD,MAAL,GAAckyC,SAAS,CAACr1C,IAAV,CAAeqS,2DAAM,CAAC,EAAD,EAAK,KAAK68C,MAAV,CAArB,EAAwC,IAAxC,EAA8CrxC,EAA9C,CAAd;AAEA,aAAK1a,MAAL,CAAY85C,MAAZ,CAAmBp/B,EAAnB;AACH,OAdE;AAgBHsxC,kBAhBG,0BAgBY;AAEX,YAAI,KAAKhsD,MAAL,IAAe,KAAK+rD,MAAxB,EAAgC;AAC5B,eAAK/rD,MAAL,CAAYy1C,WAAZ,CAAwBvmC,2DAAM,CAAC,EAAD,EAAK,KAAK68C,MAAV,CAA9B;AACH;AACJ;AArBE,KAAP;AAuBH;AA/B2C,CAAzC,C;;;;;;;ACVP;AAAA;AAAA;AAeO,IAAInO,OAAyC,GAAG;AAEnDh2C,QAFmD,oBAE/B;AAChB,WAAOtT,MAAM,CAACspD,OAAd;AACH,GAJkD;AAMnDtW,UANmD,oBAM1C4K,SAN0C,EAMhB+Z,EANgB,EAMc;AAE7D,QAAIjD,MAAM,GAAGiD,EAAE,CAACjD,MAAH,CAAU9W,SAAS,CAACr2B,GAApB,EAAyB,EAAzB,EAA6BqwC,SAA7B,CAAuCh2C,qEAAgB,CAACg8B,SAAS,CAACr2B,GAAX,CAAvD,EAAwE,YAAM;AAEvF,UAAIswC,KAAK,GAAG,EAAZ;;AAFuF,iDAIvEja,SAAS,CAAC+B,YAAV,EAJuE,8CAI7C;AAArC,YAAIvhD,GAAG,8BAAP;AACDy5D,aAAK,CAACz5D,GAAD,CAAL,GAAa,GAAb;AACH;;AAED,UAAIw/C,SAAS,CAAC6B,UAAd,EAA0B;AACtBoY,aAAK,CAACh6D,KAAN,GAAc,GAAd;AACH;;AAED,aAAO;AACHg6D,aAAK,EAALA,KADG;AAGHC,gBAAQ,EAAE,GAHP;AAKHC,kBAAU,EAAE,CAAE,QAAF,EAAY,UAAZ,EAAwB,UAACC,MAAD,EAASC,QAAT,EAAsB;AAEtD,cAAIra,SAAS,CAAC6B,UAAV,IAAwB,CAACuY,MAAM,CAACn6D,KAApC,EAA2C;AACvC,kBAAM,IAAI4B,KAAJ,gFAAN;AACH;;AAEDm+C,mBAAS,CAACjzC,GAAV;;AAEA,mBAASutD,SAAT,GAAqB;AACjB,gBAAIF,MAAM,CAACG,KAAP,CAAaC,OAAb,KAAyB,QAAzB,IAAqCJ,MAAM,CAACG,KAAP,CAAaC,OAAb,KAAyB,SAAlE,EAA6E;AACzE,kBAAI;AACAJ,sBAAM,CAACK,MAAP;AACH,eAFD,CAEE,OAAOh4D,GAAP,EAAY,CACV;AACH;AACJ;AACJ;;AAED,cAAIi4D,QAAQ,GAAG,SAAXA,QAAW,GAAM;AAEjB,gBAAIC,UAAJ;;AAEA,gBAAIP,MAAM,CAACn6D,KAAX,EAAkB;AACd06D,wBAAU,GAAGP,MAAM,CAACn6D,KAApB;AACH,aAFD,MAEO;AACH06D,wBAAU,GAAG,EAAb;;AADG,gDAEat6D,MAAM,CAACC,IAAP,CAAY25D,KAAZ,CAFb,qCAEiC;AAA/B,oBAAIz5D,IAAG,qBAAP;;AACD,oBAAI45D,MAAM,CAAC55D,IAAD,CAAN,KAAgBO,SAApB,EAA+B;AAC3B45D,4BAAU,CAACn6D,IAAD,CAAV,GAAkB45D,MAAM,CAAC55D,IAAD,CAAxB;AACH;AACJ;AACJ;;AAEDm6D,sBAAU,GAAG/1C,kEAAa,CAAC+1C,UAAD,EAAa;AACnC,0BAAY,mBAACh5D,KAAD,EAAW;AACnB,uBAAO,SAASi5D,cAAT,GAAkC;AACrC,sBAAIh6D,MAAM,GAAGe,KAAK,CAAC4E,KAAN,CAAY,IAAZ,EAAkBoB,SAAlB,CAAb;AACA2yD,2BAAS;AACT,yBAAO15D,MAAP;AACH,iBAJD;AAKH;AAPkC,aAAb,CAA1B;AAUA,mBAAO+5D,UAAP;AACH,WA1BD;;AA4BA,cAAI7sD,MAAM,GAAGkyC,SAAS,CAACr1C,IAAV,CAAe+vD,QAAQ,EAAvB,EAA2B,IAA3B,EAAiCL,QAAQ,CAAC,CAAD,CAAzC,CAAb;AACAvsD,gBAAM,CAAC85C,MAAP,CAAcyS,QAAQ,CAAC,CAAD,CAAtB;AAEAD,gBAAM,CAACS,MAAP,CAAc,YAAM;AAChB/sD,kBAAM,CAACy1C,WAAP,CAAmBmX,QAAQ,EAA3B;AACH,WAFD;AAGH,SApDW;AALT,OAAP;AA2DH,KAvEY,CAAb;AAyEA,WAAO5D,MAAP;AACH;AAlFkD,CAAhD,C;;;;;;;;;;;;;;;;;;ACRA,IAAIlL,OAA+D,GAAG;AAEzEl2C,QAFyE,oBAEhE,CACL;AACH,GAJwE;AAMzE0/B,UANyE,oBAMhE4K,SANgE,EAMtC8a,gBANsC,EAM4C;AACjH;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;;AAAA,eACIC,gBADJ,GACI,4BAAmB;AACf/a,mBAAS,CAAC4H,MAAV,gGAAsB,KAAKthD,IAA3B,GAAmC,KAAK4hB,OAAxC;AACH,SAHL;;AAAA;AAAA,QAAqB4yC,gBAArB;AAAA;AAKH;AAZwE,CAAtE,C;;;;;;;;;;;;ACRP;AAEA;AAqBO,IAAInP,QAA2C,GAAG;AAErDj2C,QAFqD,oBAE5C,CACL;AACH,GAJoD;AAMrD0/B,UANqD,oBAM5C4lB,IAN4C,QAM0D;AAAA,QAAnEC,gBAAmE,QAA/ElP,SAA+E;AAAA,QAAjDmP,QAAiD,QAAjDA,QAAiD;AAAA,QAAvCC,UAAuC,QAAvCA,UAAuC;AAAA,QAA3BC,MAA2B,QAA3BA,MAA2B;AAE3GJ,QAAI,CAACjuD,GAAL,CAAS,iCAAT;;AAEA,QAAI2tD,QAAQ,GAAG,SAAXA,QAAW,CAAC1a,SAAD,EAAe;AAC1B,aAAOp7B,kEAAa,CAAC,+FAAKo7B,SAAS,CAACqb,aAAhB,MAAkCrb,SAAS,CAAC//C,KAA5C,GAAqD;AACrE,oBAAY,mBAAC0B,KAAD,EAAW;AACnB,cAAI,OAAOA,KAAP,KAAiB,UAArB,EAAiC;AAC7B,mBAAO,SAAS25D,eAAT,GAAkC;AAAA;AAAA;;AACrC,qBAAOtb,SAAS,CAACub,IAAV,CAAe1b,GAAf,CAAmB;AAAA,uBAAMl+C,KAAK,CAAC4E,KAAN,CAAY,KAAZ,EAAkBoB,UAAlB,CAAN;AAAA,eAAnB,CAAP;AACH,aAFD;AAGH;AACJ;AAPoE,OAArD,CAApB;AASH,KAVD;;AAYA,QAAM6zD,iBAAiB,GACnBP,gBAAgB,CAAC;AACbxyC,cAAQ,EAAEuyC,IAAI,CAACrxC,GADF;AAEbtoB,cAAQ,EAAE,aAFG;AAGbo6D,YAAM,EAAI,CAAE,OAAF;AAHG,KAAD,CAAhB,CAIGC,KAJH,CAIS;AACLp5D,iBAAW,EAAE,CAAE64D,UAAF,EAAcC,MAAd,EAAsB,SAASO,kBAAT,CAA4BC,UAA5B,EAAwCL,IAAxC,EAA8C;AAC7E,aAAKK,UAAL,GAAkBA,UAAlB;AACA,aAAKL,IAAL,GAAYA,IAAZ;AACH,OAHY,CADR;AAKLM,cALK,sBAKO;AACR,YAAMzR,aAAa,GAAG,KAAKwR,UAAL,CAAgBE,aAAtC;AACA,YAAMhuD,MAAM,GAAGktD,IAAI,CAACrwD,IAAL,CAAU+vD,QAAQ,CAAC,IAAD,CAAlB,EAA0B,IAA1B,EAAgCtQ,aAAhC,CAAf;AACAt8C,cAAM,CAAC85C,MAAP,CAAcwC,aAAd;AACA,aAAKt8C,MAAL,GAAcA,MAAd;AACH,OAVI;AAWLiuD,iBAXK,yBAWS;AACV,YAAI,KAAKjuD,MAAT,EAAiB;AACb,eAAKA,MAAL,CAAYy1C,WAAZ,CAAwBmX,QAAQ,CAAC,IAAD,CAAhC;AACH;AACJ;AAfI,KAJT,CADJ;AAwBA,QAAMsB,cAAc,GAAGd,QAAQ,CAAC;AAC5Be,kBAAY,EAAE,CAAET,iBAAF,CADc;AAE5B9Y,aAAO,EAAO,CAAE8Y,iBAAF;AAFc,KAAD,CAAR,CAGpBE,KAHoB,CAGd;AACLp5D,iBADK,yBACU,CACX;AACH;AAHI,KAHc,CAAvB;AASA,WAAO05D,cAAP;AACH;AAxDoD,CAAlD,C;;;;;;ACxBP;;;;;AAKA,CAAC,UAASE,CAAT,EAAWvH,CAAX,EAAal8B,CAAb,EAAe;AAAC,WAA4Bq+B,MAAM,CAACpU,OAAnC,GAA2CoU,MAAM,CAACpU,OAAP,GAAejqB,CAAC,EAA3D,GAA8D,QAAsCu+B,uBAAM,CAACrC,CAAD,EAAGl8B,CAAH,CAA5C,GAAkDyjC,SAAhH;AAAyH,CAAzI,CAA0I,IAA1I,EAA+I,QAA/I,EAAwJ,YAAU;AAAC,WAASvH,CAAT,CAAWA,CAAX,EAAa;AAAC,aAASl8B,CAAT,CAAWyjC,CAAX,EAAa;AAAC,UAAIzjC,CAAC,GAACk8B,CAAC,CAAClzD,KAAF,CAAQy6D,CAAR,CAAN;AAAiB,aAAOzjC,CAAC,IAAEA,CAAC,CAACt1B,MAAF,GAAS,CAAZ,IAAes1B,CAAC,CAAC,CAAD,CAAhB,IAAqB,EAA5B;AAA+B;;AAAA,aAAS0jC,CAAT,CAAWD,CAAX,EAAa;AAAC,UAAIzjC,CAAC,GAACk8B,CAAC,CAAClzD,KAAF,CAAQy6D,CAAR,CAAN;AAAiB,aAAOzjC,CAAC,IAAEA,CAAC,CAACt1B,MAAF,GAAS,CAAZ,IAAes1B,CAAC,CAAC,CAAD,CAAhB,IAAqB,EAA5B;AAA+B;;AAAA,aAAS2jC,CAAT,CAAWF,CAAX,EAAa;AAAC,cAAOA,CAAP;AAAU,aAAI,IAAJ;AAAS,iBAAM,IAAN;;AAAW,aAAI,IAAJ;AAAS,iBAAM,IAAN;;AAAW,aAAI,QAAJ;AAAa,iBAAM,MAAN;;AAAa,aAAI,QAAJ;AAAa,iBAAM,IAAN;;AAAW,aAAI,QAAJ;AAAa,iBAAM,MAAN;;AAAa,aAAI,QAAJ;AAAa,iBAAM,OAAN;;AAAc,aAAI,QAAJ;AAAa,iBAAM,GAAN;;AAAU,aAAI,QAAJ;AAAa,iBAAM,GAAN;;AAAU,aAAI,QAAJ;AAAa,iBAAM,KAAN;;AAAY,aAAI,SAAJ;AAAc,iBAAM,IAAN;;AAAW;AAAQ,iBAAOn7D,SAAP;AAAjQ;AAAmR;;AAAA,QAAIkE,CAAC,GAACwzB,CAAC,CAAC,qBAAD,CAAD,CAAyB3pB,WAAzB,EAAN;AAAA,QAA6CutD,CAAC,GAAC,gBAAgBt6D,IAAhB,CAAqB4yD,CAArB,CAA/C;AAAA,QAAuE2H,CAAC,GAAC,CAACD,CAAD,IAAI,WAAWt6D,IAAX,CAAgB4yD,CAAhB,CAA7E;AAAA,QAAgG/mD,CAAC,GAAC,oBAAoB7L,IAApB,CAAyB4yD,CAAzB,CAAlG;AAAA,QAA8H4H,CAAC,GAAC,CAAC3uD,CAAD,IAAI,kBAAkB7L,IAAlB,CAAuB4yD,CAAvB,CAApI;AAAA,QAA8J6H,CAAC,GAAC,OAAOz6D,IAAP,CAAY4yD,CAAZ,CAAhK;AAAA,QAA+KzmD,CAAC,GAAC,QAAQnM,IAAR,CAAa4yD,CAAb,CAAjL;AAAA,QAAiM8H,CAAC,GAAC,YAAY16D,IAAZ,CAAiB4yD,CAAjB,CAAnM;AAAA,QAAuN+H,CAAC,GAAC,SAAS36D,IAAT,CAAc4yD,CAAd,CAAzN;AAAA,QAA0OgI,CAAC,GAAC,mBAAmB56D,IAAnB,CAAwB4yD,CAAxB,CAA5O;AAAA,QAAuQD,CAAC,GAAC,iBAAiB3yD,IAAjB,CAAsB4yD,CAAtB,CAAzQ;AAAA,QAAkS1iB,CAAC,GAAC,kBAAkBlwC,IAAlB,CAAuB4yD,CAAvB,CAApS;AAAA,QAA8T5wC,CAAC,GAAC,CAAC2wC,CAAD,IAAI,WAAW3yD,IAAX,CAAgB4yD,CAAhB,CAApU;AAAA,QAAuVjT,CAAC,GAAC,CAACz8C,CAAD,IAAI,CAACiJ,CAAL,IAAQ,aAAanM,IAAb,CAAkB4yD,CAAlB,CAAjW;AAAA,QAAsX1mD,CAAC,GAAC,CAACquD,CAAD,IAAI,CAACG,CAAL,IAAQ,CAACC,CAAT,IAAY,CAACC,CAAb,IAAgB,SAAS56D,IAAT,CAAc4yD,CAAd,CAAxY;AAAA,QAAyZiI,CAAC,GAACT,CAAC,CAAC,+BAAD,CAA5Z;AAAA,QAA8bU,CAAC,GAACpkC,CAAC,CAAC,yBAAD,CAAjc;AAAA,QAA6dqkC,CAAC,GAAC,UAAU/6D,IAAV,CAAe4yD,CAAf,KAAmB,CAAC,aAAa5yD,IAAb,CAAkB4yD,CAAlB,CAAnf;AAAA,QAAwgBlT,CAAC,GAAC,CAACqb,CAAD,IAAI,YAAY/6D,IAAZ,CAAiB4yD,CAAjB,CAA9gB;AAAA,QAAkiBoI,CAAC,GAAC,QAAQh7D,IAAR,CAAa4yD,CAAb,CAApiB;AAAA,QAAojBqI,CAApjB;AAAsjB,aAASj7D,IAAT,CAAc4yD,CAAd,IAAiBqI,CAAC,GAAC;AAACh9D,UAAI,EAAC,OAAN;AAAciY,WAAK,EAACikD,CAApB;AAAsB5xD,aAAO,EAACuyD,CAAC,IAAEpkC,CAAC,CAAC,yCAAD;AAAlC,KAAnB,GAAkG,eAAe12B,IAAf,CAAoB4yD,CAApB,IAAuBqI,CAAC,GAAC;AAACh9D,UAAI,EAAC,OAAN;AAAciY,WAAK,EAACikD,CAApB;AAAsB5xD,aAAO,EAACmuB,CAAC,CAAC,mCAAD,CAAD,IAAwCokC;AAAtE,KAAzB,GAAkG,kBAAkB96D,IAAlB,CAAuB4yD,CAAvB,IAA0BqI,CAAC,GAAC;AAACh9D,UAAI,EAAC,8BAAN;AAAqCmY,oBAAc,EAAC+jD,CAApD;AAAsD5xD,aAAO,EAACuyD,CAAC,IAAEpkC,CAAC,CAAC,wCAAD;AAAlE,KAA5B,GAA0I,SAAS12B,IAAT,CAAc4yD,CAAd,IAAiBqI,CAAC,GAAC;AAACh9D,UAAI,EAAC,qBAAN;AAA4Bi9D,WAAK,EAACf,CAAlC;AAAoC5xD,aAAO,EAACmuB,CAAC,CAAC,iCAAD;AAA7C,KAAnB,GAAqG,aAAa12B,IAAb,CAAkB4yD,CAAlB,IAAqBqI,CAAC,GAAC;AAACh9D,UAAI,EAAC,YAAN;AAAmBk9D,eAAS,EAAChB,CAA7B;AAA+B5xD,aAAO,EAACmuB,CAAC,CAAC,qCAAD;AAAxC,KAAvB,GAAwG,SAAS12B,IAAT,CAAc4yD,CAAd,IAAiBqI,CAAC,GAAC;AAACh9D,UAAI,EAAC,aAAN;AAAoBm9D,WAAK,EAACjB,CAA1B;AAA4B5xD,aAAO,EAACuyD,CAAC,IAAEpkC,CAAC,CAAC,+BAAD;AAAxC,KAAnB,GAA8F,SAAS12B,IAAT,CAAc4yD,CAAd,IAAiBqI,CAAC,GAAC;AAACh9D,UAAI,EAAC,OAAN;AAAc4jD,WAAK,EAACsY,CAApB;AAAsB5xD,aAAO,EAACmuB,CAAC,CAAC,iCAAD;AAA/B,KAAnB,GAAuF,aAAa12B,IAAb,CAAkB4yD,CAAlB,IAAqBqI,CAAC,GAAC;AAACh9D,UAAI,EAAC,gBAAN;AAAuBo9D,mBAAa,EAAClB,CAArC;AAAuC5xD,aAAO,EAACuyD,CAAC,IAAEpkC,CAAC,CAAC,mCAAD;AAAnD,KAAvB,GAAiH,aAAa12B,IAAb,CAAkB4yD,CAAlB,IAAqBqI,CAAC,GAAC;AAACh9D,UAAI,EAAC,YAAN;AAAmBqY,eAAS,EAAC6jD,CAA7B;AAA+B5xD,aAAO,EAACmuB,CAAC,CAAC,qCAAD;AAAxC,KAAvB,GAAwG,SAAS12B,IAAT,CAAc4yD,CAAd,IAAiBqI,CAAC,GAAC;AAACh9D,UAAI,EAAC,SAAN;AAAgBq9D,aAAO,EAACnB,CAAxB;AAA0B5xD,aAAO,EAACmuB,CAAC,CAAC,iCAAD;AAAnC,KAAnB,GAA2F,YAAY12B,IAAZ,CAAiB4yD,CAAjB,IAAoBqI,CAAC,GAAC;AAACh9D,UAAI,EAAC,UAAN;AAAiBs9D,cAAQ,EAACpB,CAA1B;AAA4B5xD,aAAO,EAACmuB,CAAC,CAAC,oCAAD;AAArC,KAAtB,GAAmG,UAAU12B,IAAV,CAAe4yD,CAAf,IAAkBqI,CAAC,GAAC;AAACh9D,UAAI,EAAC,QAAN;AAAeu9D,YAAM,EAACrB,CAAtB;AAAwB5xD,aAAO,EAACmuB,CAAC,CAAC,kCAAD;AAAjC,KAApB,GAA2F,YAAY12B,IAAZ,CAAiB4yD,CAAjB,IAAoBqI,CAAC,GAAC;AAACh9D,UAAI,EAAC,UAAN;AAAiBw9D,cAAQ,EAACtB,CAA1B;AAA4B5xD,aAAO,EAACmuB,CAAC,CAAC,oCAAD;AAArC,KAAtB,GAAmG,YAAY12B,IAAZ,CAAiB4yD,CAAjB,IAAoBqI,CAAC,GAAC;AAACh9D,UAAI,EAAC,UAAN;AAAiBy9D,aAAO,EAACvB,CAAzB;AAA2B5xD,aAAO,EAACmuB,CAAC,CAAC,oCAAD;AAApC,KAAtB,GAAkGi8B,CAAC,IAAEsI,CAAC,GAAC;AAACh9D,UAAI,EAAC,eAAN;AAAsB09D,YAAM,EAAC,eAA7B;AAA6CC,kBAAY,EAACzB;AAA1D,KAAF,EAA+DU,CAAC,IAAEI,CAAC,CAAC9kD,MAAF,GAASgkD,CAAT,EAAWc,CAAC,CAAC1yD,OAAF,GAAUsyD,CAAvB,KAA2BI,CAAC,CAACnlD,IAAF,GAAOqkD,CAAP,EAASc,CAAC,CAAC1yD,OAAF,GAAUmuB,CAAC,CAAC,0BAAD,CAA/C,CAAlE,IAAgJ,gBAAgB12B,IAAhB,CAAqB4yD,CAArB,IAAwBqI,CAAC,GAAC;AAACh9D,UAAI,EAAC,mBAAN;AAA0B6X,UAAI,EAACqkD,CAA/B;AAAiC5xD,aAAO,EAACmuB,CAAC,CAAC,6BAAD;AAA1C,KAA1B,GAAqG+jC,CAAC,GAACQ,CAAC,GAAC;AAACh9D,UAAI,EAAC,QAAN;AAAe09D,YAAM,EAAC,WAAtB;AAAkCE,cAAQ,EAAC1B,CAA3C;AAA6C2B,gBAAU,EAAC3B,CAAxD;AAA0DnkD,YAAM,EAACmkD,CAAjE;AAAmE5xD,aAAO,EAACmuB,CAAC,CAAC,uCAAD;AAA5E,KAAH,GAA0H,iBAAiB12B,IAAjB,CAAsB4yD,CAAtB,IAAyBqI,CAAC,GAAC;AAACh9D,UAAI,EAAC,gBAAN;AAAuBkY,YAAM,EAACgkD,CAA9B;AAAgC5xD,aAAO,EAACsyD;AAAxC,KAA3B,GAAsE,WAAW76D,IAAX,CAAgB4yD,CAAhB,IAAmBqI,CAAC,GAAC;AAACh9D,UAAI,EAAC,SAAN;AAAgBsY,aAAO,EAAC4jD,CAAxB;AAA0B5xD,aAAO,EAACmuB,CAAC,CAAC,yBAAD,CAAD,IAA8BokC;AAAhE,KAArB,GAAwFJ,CAAC,GAACO,CAAC,GAAC;AAACh9D,UAAI,EAAC,UAAN;AAAiB09D,YAAM,EAAC,aAAxB;AAAsCI,cAAQ,EAAC5B,CAA/C;AAAiD5xD,aAAO,EAACmuB,CAAC,CAAC,oCAAD;AAA1D,KAAH,GAAqG,eAAe12B,IAAf,CAAoB4yD,CAApB,IAAuBqI,CAAC,GAAC;AAACh9D,UAAI,EAAC,WAAN;AAAkB+9D,eAAS,EAAC7B,CAA5B;AAA8B5xD,aAAO,EAACmuB,CAAC,CAAC,2BAAD;AAAvC,KAAzB,GAA+F,2BAA2B12B,IAA3B,CAAgC4yD,CAAhC,KAAoCqI,CAAC,GAAC;AAACh9D,UAAI,EAAC,SAAN;AAAgB8X,aAAO,EAACokD,CAAxB;AAA0B5xD,aAAO,EAACmuB,CAAC,CAAC,gDAAD;AAAnC,KAAF,EAAyF,wCAAwC12B,IAAxC,CAA6C4yD,CAA7C,MAAkDqI,CAAC,CAACgB,SAAF,GAAY9B,CAAZ,EAAcc,CAAC,CAACU,MAAF,GAAS,YAAzE,CAA7H,IAAqNxvD,CAAC,GAAC8uD,CAAC,GAAC;AAACh9D,UAAI,EAAC,aAAN;AAAoBoY,UAAI,EAAC8jD,CAAzB;AAA2B5xD,aAAO,EAACmuB,CAAC,CAAC,sBAAD;AAApC,KAAH,GAAiE,WAAW12B,IAAX,CAAgB4yD,CAAhB,IAAmBqI,CAAC,GAAC;AAACh9D,UAAI,EAAC,WAAN;AAAkBi+D,aAAO,EAAC/B,CAA1B;AAA4B5xD,aAAO,EAACmuB,CAAC,CAAC,2BAAD;AAArC,KAArB,GAAyF,YAAY12B,IAAZ,CAAiB4yD,CAAjB,IAAoBqI,CAAC,GAAC;AAACh9D,UAAI,EAAC,UAAN;AAAiBk+D,YAAM,EAAChC,CAAxB;AAA0B5xD,aAAO,EAACmuB,CAAC,CAAC,0BAAD;AAAnC,KAAtB,GAAuF,sBAAsB12B,IAAtB,CAA2B4yD,CAA3B,KAA+B,eAAe5yD,IAAf,CAAoB4yD,CAApB,CAA/B,GAAsDqI,CAAC,GAAC;AAACh9D,UAAI,EAAC,YAAN;AAAmB09D,YAAM,EAAC,eAA1B;AAA0CS,gBAAU,EAACjC,CAArD;AAAuD5xD,aAAO,EAACuyD,CAAC,IAAEpkC,CAAC,CAAC,iCAAD;AAAnE,KAAxD,GAAgKkkC,CAAC,IAAEK,CAAC,GAAC;AAACh9D,UAAI,EAAC,OAAN;AAAc09D,YAAM,EAAC,OAArB;AAA6BU,WAAK,EAAClC,CAAnC;AAAqC5xD,aAAO,EAACuyD,CAAC,IAAEpkC,CAAC,CAAC,mCAAD;AAAjD,KAAF,EAA0F,cAAc12B,IAAd,CAAmB4yD,CAAnB,MAAwBqI,CAAC,CAACqB,QAAF,GAAWnC,CAAnC,CAA5F,IAAmI,QAAQn6D,IAAR,CAAa4yD,CAAb,IAAgBqI,CAAC,GAAC;AAACh9D,UAAI,EAAC,MAAN;AAAa09D,YAAM,EAAC,MAApB;AAA2BY,UAAI,EAACpC,CAAhC;AAAkC5xD,aAAO,EAACmuB,CAAC,CAAC,wBAAD;AAA3C,KAAlB,GAAyFikC,CAAC,GAACM,CAAC,GAAC;AAACh9D,UAAI,EAAC,OAAN;AAAc09D,YAAM,EAAC,OAArB;AAA6Ba,WAAK,EAACrC,CAAnC;AAAqC5xD,aAAO,EAACmuB,CAAC,CAAC,sCAAD,CAAD,IAA2CokC;AAAxF,KAAH,GAA8F,YAAY96D,IAAZ,CAAiB4yD,CAAjB,IAAoBqI,CAAC,GAAC;AAACh9D,UAAI,EAAC,UAAN;AAAiBw+D,cAAQ,EAACtC,CAA1B;AAA4B5xD,aAAO,EAACmuB,CAAC,CAAC,oCAAD,CAAD,IAAyCokC;AAA7E,KAAtB,GAAsG,YAAY96D,IAAZ,CAAiB4yD,CAAjB,IAAoBqI,CAAC,GAAC;AAACh9D,UAAI,EAAC,UAAN;AAAiBy+D,cAAQ,EAACvC,CAA1B;AAA4B5xD,aAAO,EAACmuB,CAAC,CAAC,oCAAD,CAAD,IAAyCokC;AAA7E,KAAtB,GAAsG,qBAAqB96D,IAArB,CAA0B4yD,CAA1B,IAA6BqI,CAAC,GAAC;AAACh9D,UAAI,EAAC,QAAN;AAAe+X,YAAM,EAACmkD,CAAtB;AAAwB5xD,aAAO,EAACmuB,CAAC,CAAC,uCAAD;AAAjC,KAA/B,GAA2G6jC,CAAC,GAACU,CAAC,GAAC;AAACh9D,UAAI,EAAC,SAAN;AAAgBsK,aAAO,EAACuyD;AAAxB,KAAH,GAA8B,sBAAsB96D,IAAtB,CAA2B4yD,CAA3B,KAA+BqI,CAAC,GAAC;AAACh9D,UAAI,EAAC,QAAN;AAAegY,YAAM,EAACkkD;AAAtB,KAAF,EAA2BW,CAAC,KAAGG,CAAC,CAAC1yD,OAAF,GAAUuyD,CAAb,CAA3D,IAA4E53D,CAAC,IAAE+3D,CAAC,GAAC;AAACh9D,UAAI,EAACiF,CAAC,IAAE,QAAH,GAAY,QAAZ,GAAqBA,CAAC,IAAE,MAAH,GAAU,MAAV,GAAiB;AAA5C,KAAF,EAAsD43D,CAAC,KAAGG,CAAC,CAAC1yD,OAAF,GAAUuyD,CAAb,CAAzD,IAA0E,aAAa96D,IAAb,CAAkB4yD,CAAlB,IAAqBqI,CAAC,GAAC;AAACh9D,UAAI,EAAC,WAAN;AAAkB0+D,eAAS,EAACxC,CAA5B;AAA8B5xD,aAAO,EAACmuB,CAAC,CAAC,0BAAD,CAAD,IAA+BokC;AAArE,KAAvB,GAA+FG,CAAC,GAAC;AAACh9D,UAAI,EAACy4B,CAAC,CAAC,cAAD,CAAP;AAAwBnuB,aAAO,EAAC6xD,CAAC,CAAC,cAAD;AAAjC,KAA5kH,EAA+nH,CAACa,CAAC,CAAC9kD,MAAH,IAAW,kBAAkBnW,IAAlB,CAAuB4yD,CAAvB,CAAX,IAAsC,2BAA2B5yD,IAA3B,CAAgC4yD,CAAhC,KAAoCqI,CAAC,CAACh9D,IAAF,GAAOg9D,CAAC,CAACh9D,IAAF,IAAQ,OAAf,EAAuBg9D,CAAC,CAAC2B,KAAF,GAAQzC,CAAnE,KAAuEc,CAAC,CAACh9D,IAAF,GAAOg9D,CAAC,CAACh9D,IAAF,IAAQ,QAAf,EAAwBg9D,CAAC,CAAC4B,MAAF,GAAS1C,CAAxG,GAA2G,CAACc,CAAC,CAAC1yD,OAAH,IAAYuyD,CAAZ,KAAgBG,CAAC,CAAC1yD,OAAF,GAAUuyD,CAA1B,CAAjJ,IAA+K,CAACG,CAAC,CAAC/kD,KAAH,IAAU,WAAWlW,IAAX,CAAgB4yD,CAAhB,CAAV,KAA+BqI,CAAC,CAACh9D,IAAF,GAAOg9D,CAAC,CAACh9D,IAAF,IAAQ,OAAf,EAAuBg9D,CAAC,CAAC6B,KAAF,GAAQ3C,CAA/B,EAAiCc,CAAC,CAAC1yD,OAAF,GAAU0yD,CAAC,CAAC1yD,OAAF,IAAWmuB,CAAC,CAAC,uBAAD,CAAtF,CAA9yH,EAA+5H,CAACukC,CAAC,CAACW,YAAH,KAAkBrB,CAAC,IAAEU,CAAC,CAAC5kD,IAAvB,KAA8B4kD,CAAC,CAACxwD,OAAF,GAAU0vD,CAAV,EAAYc,CAAC,CAACU,MAAF,GAAS,SAAnD,IAA8D,CAACV,CAAC,CAACW,YAAH,IAAiB14D,CAAjB,IAAoB+3D,CAAC,CAAC/3D,CAAD,CAAD,GAAKi3D,CAAL,EAAOc,CAAC,CAACvwD,GAAF,GAAMyvD,CAAb,EAAec,CAAC,CAACU,MAAF,GAAS,KAA5C,IAAmDhc,CAAC,IAAEsb,CAAC,CAAC8B,GAAF,GAAM5C,CAAN,EAAQc,CAAC,CAACU,MAAF,GAAS,OAAnB,IAA4BX,CAAC,IAAEC,CAAC,CAAC+B,IAAF,GAAO7C,CAAP,EAASc,CAAC,CAACU,MAAF,GAAS,MAApB,IAA4B35C,CAAC,IAAEi5C,CAAC,CAAC7b,OAAF,GAAU+a,CAAV,EAAYc,CAAC,CAACU,MAAF,GAAS,SAAvB,IAAkCzvD,CAAC,KAAG+uD,CAAC,CAACgC,KAAF,GAAQ9C,CAAR,EAAUc,CAAC,CAACU,MAAF,GAAS,OAAtB,CAA9mI;AAA6oI,QAAIuB,CAAC,GAAC,EAAN;AAASjC,KAAC,CAAC7b,OAAF,GAAU8d,CAAC,GAAC7C,CAAC,CAAC3jC,CAAC,CAAC,gCAAD,CAAF,CAAb,GAAmDukC,CAAC,CAACW,YAAF,GAAesB,CAAC,GAACxmC,CAAC,CAAC,wCAAD,CAAlB,GAA6DukC,CAAC,CAAC8B,GAAF,IAAOG,CAAC,GAACxmC,CAAC,CAAC,8BAAD,CAAH,EAAoCwmC,CAAC,GAACA,CAAC,CAACn/D,OAAF,CAAU,QAAV,EAAmB,GAAnB,CAA7C,IAAsEmF,CAAC,IAAEg6D,CAAC,GAACxmC,CAAC,CAAC,oCAAD,CAAH,EAA0CwmC,CAAC,GAACA,CAAC,CAACn/D,OAAF,CAAU,QAAV,EAAmB,GAAnB,CAA9C,IAAuEw8D,CAAC,GAAC2C,CAAC,GAACxmC,CAAC,CAAC,6BAAD,CAAJ,GAAoCukC,CAAC,CAACoB,KAAF,GAAQa,CAAC,GAACxmC,CAAC,CAAC,+BAAD,CAAX,GAA6CukC,CAAC,CAACmB,UAAF,GAAac,CAAC,GAACxmC,CAAC,CAAC,iCAAD,CAAhB,GAAoDukC,CAAC,CAACsB,IAAF,GAAOW,CAAC,GAACxmC,CAAC,CAAC,sBAAD,CAAV,GAAmCukC,CAAC,CAACuB,KAAF,KAAUU,CAAC,GAACxmC,CAAC,CAAC,2BAAD,CAAb,CAAva,EAAmdwmC,CAAC,KAAGjC,CAAC,CAACkC,SAAF,GAAYD,CAAf,CAApd;AAAse,QAAIE,CAAC,GAAC,CAACnC,CAAC,CAAC7b,OAAH,IAAY8d,CAAC,CAACtwD,KAAF,CAAQ,GAAR,EAAa,CAAb,CAAlB;AAAkC,QAAGmuD,CAAC,IAAEP,CAAH,IAAMt3D,CAAC,IAAE,MAAT,IAAiBq3D,CAAC,KAAG6C,CAAC,IAAE,CAAH,IAAMA,CAAC,IAAE,CAAH,IAAM,CAAC1d,CAAhB,CAAlB,IAAsCub,CAAC,CAAC5kD,IAA3C,EAAgD4kD,CAAC,CAACoC,MAAF,GAASlD,CAAT,CAAhD,KAAgE,IAAGza,CAAC,IAAEx8C,CAAC,IAAE,QAAN,IAAgBA,CAAC,IAAE,MAAnB,IAA2Bq3D,CAA3B,IAA8B1uD,CAA9B,IAAiCovD,CAAC,CAACmB,UAAnC,IAA+CnB,CAAC,CAACoB,KAAjD,IAAwDpB,CAAC,CAACsB,IAA7D,EAAkEtB,CAAC,CAACzwD,MAAF,GAAS2vD,CAAT;AAAW,WAAOc,CAAC,CAAC9kD,MAAF,IAAU8kD,CAAC,CAACnlD,IAAF,IAAQmlD,CAAC,CAAC1yD,OAAF,IAAW,EAA7B,IAAiC0yD,CAAC,CAACI,aAAF,IAAiBJ,CAAC,CAAC1yD,OAAF,IAAW,EAA7D,IAAiE0yD,CAAC,CAAC1kD,OAAF,IAAW0kD,CAAC,CAAC1yD,OAAF,IAAW,CAAvF,IAA0F0yD,CAAC,CAACjlD,MAAF,IAAUilD,CAAC,CAAC1yD,OAAF,IAAW,EAA/G,IAAmH0yD,CAAC,CAAC7kD,cAAF,IAAkB6kD,CAAC,CAAC1yD,OAAF,IAAW,CAAhJ,IAAmJ0yD,CAAC,CAACC,KAAF,IAASoC,CAAC,CAAC,CAACrC,CAAC,CAAC1yD,OAAH,EAAW,KAAX,CAAD,CAAD,KAAuB,CAAnL,IAAsL0yD,CAAC,CAACE,SAAF,IAAamC,CAAC,CAAC,CAACrC,CAAC,CAAC1yD,OAAH,EAAW,KAAX,CAAD,CAAD,KAAuB,CAA1N,IAA6N0yD,CAAC,CAACpZ,KAAF,IAASyb,CAAC,CAAC,CAACrC,CAAC,CAAC1yD,OAAH,EAAW,KAAX,CAAD,CAAD,KAAuB,CAA7P,IAAgQ0yD,CAAC,CAACllD,OAAF,IAAWklD,CAAC,CAAC1yD,OAAF,IAAW,EAAtR,IAA0R0yD,CAAC,CAAChlD,MAAF,IAAUglD,CAAC,CAAC1yD,OAAF,IAAW,CAA/S,IAAkT0yD,CAAC,CAAC/kD,KAAF,IAAS+kD,CAAC,CAAC1yD,OAAF,IAAW,EAAtU,IAA0U0yD,CAAC,CAACvwD,GAAF,IAAOuwD,CAAC,CAACkC,SAAT,IAAoBlC,CAAC,CAACkC,SAAF,CAAYvwD,KAAZ,CAAkB,GAAlB,EAAuB,CAAvB,KAA2B,CAAzX,IAA4XquD,CAAC,CAACmB,UAAF,IAAcnB,CAAC,CAAC1yD,OAAF,IAAW,IAArZ,IAA2Z0yD,CAAC,CAACyB,QAAF,IAAYzB,CAAC,CAAC1yD,OAAF,IAAW,EAAlb,GAAqb0yD,CAAC,CAACpvD,CAAF,GAAIsuD,CAAzb,GAA2bc,CAAC,CAACnlD,IAAF,IAAQmlD,CAAC,CAAC1yD,OAAF,GAAU,EAAlB,IAAsB0yD,CAAC,CAACjlD,MAAF,IAAUilD,CAAC,CAAC1yD,OAAF,GAAU,EAA1C,IAA8C0yD,CAAC,CAACllD,OAAF,IAAWklD,CAAC,CAAC1yD,OAAF,GAAU,EAAnE,IAAuE0yD,CAAC,CAAChlD,MAAF,IAAUglD,CAAC,CAAC1yD,OAAF,GAAU,CAA3F,IAA8F0yD,CAAC,CAAC/kD,KAAF,IAAS+kD,CAAC,CAAC1yD,OAAF,GAAU,EAAjH,IAAqH0yD,CAAC,CAACvwD,GAAF,IAAOuwD,CAAC,CAACkC,SAAT,IAAoBlC,CAAC,CAACkC,SAAF,CAAYvwD,KAAZ,CAAkB,GAAlB,EAAuB,CAAvB,IAA0B,CAAnK,IAAsKquD,CAAC,CAACyB,QAAF,IAAYzB,CAAC,CAAC1yD,OAAF,GAAU,EAA5L,GAA+L0yD,CAAC,CAAC9uD,CAAF,GAAIguD,CAAnM,GAAqMc,CAAC,CAACvb,CAAF,GAAIya,CAApoB,EAAsoBc,CAA7oB;AAA+oB;;AAAA,WAASb,CAAT,CAAWD,CAAX,EAAa;AAAC,WAAOA,CAAC,CAACvtD,KAAF,CAAQ,GAAR,EAAaxL,MAApB;AAA2B;;AAAA,WAAS8B,CAAT,CAAWi3D,CAAX,EAAavH,CAAb,EAAe;AAAC,QAAIl8B,CAAC,GAAC,EAAN;AAAA,QAAS0jC,CAAT;AAAW,QAAGn7D,KAAK,CAAC4D,SAAN,CAAgBnE,GAAnB,EAAuB,OAAOO,KAAK,CAAC4D,SAAN,CAAgBnE,GAAhB,CAAoB8B,IAApB,CAAyB25D,CAAzB,EAA2BvH,CAA3B,CAAP;;AAAqC,SAAIwH,CAAC,GAAC,CAAN,EAAQA,CAAC,GAACD,CAAC,CAAC/4D,MAAZ,EAAmBg5D,CAAC,EAApB;AAAuB1jC,OAAC,CAAC11B,IAAF,CAAO4xD,CAAC,CAACuH,CAAC,CAACC,CAAD,CAAF,CAAR;AAAvB;;AAAuC,WAAO1jC,CAAP;AAAS;;AAAA,WAAS4mC,CAAT,CAAWnD,CAAX,EAAa;AAAC,QAAIvH,CAAC,GAACzjD,IAAI,CAACyiB,GAAL,CAASwoC,CAAC,CAACD,CAAC,CAAC,CAAD,CAAF,CAAV,EAAiBC,CAAC,CAACD,CAAC,CAAC,CAAD,CAAF,CAAlB,CAAN;AAAA,QAAgCzjC,CAAC,GAACxzB,CAAC,CAACi3D,CAAD,EAAG,UAASA,CAAT,EAAW;AAAC,UAAIzjC,CAAC,GAACk8B,CAAC,GAACwH,CAAC,CAACD,CAAD,CAAT;AAAa,aAAOA,CAAC,IAAG,IAAIl7D,KAAJ,CAAUy3B,CAAC,GAAC,CAAZ,CAAD,CAAiB/3B,IAAjB,CAAsB,IAAtB,CAAH,EAA+BuE,CAAC,CAACi3D,CAAC,CAACvtD,KAAF,CAAQ,GAAR,CAAD,EAAc,UAASutD,CAAT,EAAW;AAAC,eAAO,IAAIl7D,KAAJ,CAAU,KAAGk7D,CAAC,CAAC/4D,MAAf,CAAD,CAAyBzC,IAAzB,CAA8B,GAA9B,IAAmCw7D,CAAzC;AAA2C,OAArE,CAAD,CAAwEzc,OAAxE,EAAtC;AAAwH,KAApJ,CAAnC;;AAAyL,WAAM,EAAEkV,CAAF,IAAK,CAAX,EAAa;AAAC,UAAGl8B,CAAC,CAAC,CAAD,CAAD,CAAKk8B,CAAL,IAAQl8B,CAAC,CAAC,CAAD,CAAD,CAAKk8B,CAAL,CAAX,EAAmB,OAAO,CAAP;AAAS,UAAGl8B,CAAC,CAAC,CAAD,CAAD,CAAKk8B,CAAL,MAAUl8B,CAAC,CAAC,CAAD,CAAD,CAAKk8B,CAAL,CAAb,EAAqB,OAAM,CAAC,CAAP;AAAS,UAAGA,CAAC,KAAG,CAAP,EAAS,OAAO,CAAP;AAAS;AAAC;;AAAA,WAAS0H,CAAT,CAAWH,CAAX,EAAaC,CAAb,EAAel3D,CAAf,EAAiB;AAAC,QAAIo3D,CAAC,GAAC5jC,CAAN;AAAQ,WAAO0jC,CAAP,IAAU,QAAV,KAAqBl3D,CAAC,GAACk3D,CAAF,EAAIA,CAAC,GAAC,KAAK,CAAhC,GAAmCA,CAAC,KAAG,KAAK,CAAT,KAAaA,CAAC,GAAC,CAAC,CAAhB,CAAnC,EAAsDl3D,CAAC,KAAGo3D,CAAC,GAAC1H,CAAC,CAAC1vD,CAAD,CAAN,CAAvD;AAAkE,QAAIq3D,CAAC,GAAC,KAAGD,CAAC,CAAC/xD,OAAX;;AAAmB,SAAI,IAAIsD,CAAR,IAAasuD,CAAb;AAAe,UAAGA,CAAC,CAAC7vD,cAAF,CAAiBuB,CAAjB,KAAqByuD,CAAC,CAACzuD,CAAD,CAAzB,EAA6B;AAAC,YAAG,OAAOsuD,CAAC,CAACtuD,CAAD,CAAR,IAAa,QAAhB,EAAyB,MAAM,IAAI/L,KAAJ,CAAU,+DAA6D+L,CAA7D,GAA+D,IAA/D,GAAoEkzB,MAAM,CAACo7B,CAAD,CAApF,CAAN;AAA+F,eAAOmD,CAAC,CAAC,CAAC/C,CAAD,EAAGJ,CAAC,CAACtuD,CAAD,CAAJ,CAAD,CAAD,GAAY,CAAnB;AAAqB;AAA1L;;AAA0L,WAAOuuD,CAAP;AAAS;;AAAA,WAASG,CAAT,CAAWJ,CAAX,EAAavH,CAAb,EAAel8B,CAAf,EAAiB;AAAC,WAAM,CAAC4jC,CAAC,CAACH,CAAD,EAAGvH,CAAH,EAAKl8B,CAAL,CAAR;AAAgB;;AAAA,MAAIyjC,CAAC,GAAC,CAAC,CAAP;AAAA,MAASzjC,CAAC,GAACk8B,CAAC,CAAC,OAAOvoD,SAAP,IAAkB,WAAlB,GAA8BA,SAAS,CAACZ,SAAV,IAAqB,EAAnD,GAAsD,EAAvD,CAAZ;AAAuE,SAAOitB,CAAC,CAAC12B,IAAF,GAAO,UAASm6D,CAAT,EAAW;AAAC,SAAI,IAAIvH,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACuH,CAAC,CAAC/4D,MAAhB,EAAuB,EAAEwxD,CAAzB,EAA2B;AAAC,UAAIwH,CAAC,GAACD,CAAC,CAACvH,CAAD,CAAP;AAAW,UAAG,OAAOwH,CAAP,IAAU,QAAV,IAAoBA,CAAC,IAAI1jC,CAA5B,EAA8B,OAAM,CAAC,CAAP;AAAS;;AAAA,WAAM,CAAC,CAAP;AAAS,GAA1G,EAA2GA,CAAC,CAAC6mC,oBAAF,GAAuBjD,CAAlI,EAAoI5jC,CAAC,CAACxsB,eAAF,GAAkBozD,CAAtJ,EAAwJ5mC,CAAC,CAAC9K,KAAF,GAAQ2uC,CAAhK,EAAkK7jC,CAAC,CAAC8mC,OAAF,GAAU5K,CAA5K,EAA8Kl8B,CAAC,CAAC+mC,MAAF,GAAS7K,CAAvL,EAAyLl8B,CAAhM;AAAkM,CAA7mP,CAAD,C;;;;;;;;;;;;;;;;ACHA;AAEA;AAEO,SAASoK,qBAAT,CAA+B48B,YAA/B,EAAqE94B,YAArE,EAA2G;AAC9G,MAAI,CAAC1S,sBAAM,CAACwL,uBAAZ,EAAqC;AAEjC,QAAI9G,sCAAe,CAAC8mC,YAAD,EAAe94B,YAAf,CAAf,KAAgD,KAApD,EAA2D;AACvD,YAAM,IAAI9kC,KAAJ,iGAAN;AACH;AACJ;AACJ,C;;ACXD;;;;;;;ACFA,+5E;;;;;;ACAA,yiD;;;;;;ACAA,w0BAAw0B,q/BAAq/B,imB;;;;;;ACA7zD,ssH;;;;;;ACAA,gwK;;;;;;ACAA,qsH;;;;;;ACAA,otOAAotO,IAAI,IAAI,IAAI,kIAAkI,IAAI,IAAI,IAAI,0HAA0H,IAAI,IAAI,IAAI,sHAAsH,IAAI,IAAI,IAAI,kHAAkH,IAAI,IAAI,IAAI,+HAA+H,IAAI,IAAI,IAAI,0HAA0H,IAAI,IAAI,IAAI,+HAA+H,IAAI,IAAI,IAAI,6HAA6H,IAAI,IAAI,IAAI,yHAAyH,IAAI,IAAI,IAAI,oKAAoK,IAAI,IAAI,IAAI,6LAA6L,IAAI,qB;;;;;;ACA/wR,msBAAmsB,iQAAiQ,0XAA0X,+SAA+S,uKAAuK,+sBAA+sB,qhBAAqhB,ibAAib,yhBAAyhB,8bAA8b,mZAAmZ,mWAAmW,qUAAqU,sbAAsb,qbAAqb,uhCAAuhC,sLAAsL,IAAI,IAAI,IAAI,kIAAkI,IAAI,IAAI,IAAI,0HAA0H,IAAI,IAAI,IAAI,sHAAsH,IAAI,IAAI,IAAI,kHAAkH,IAAI,IAAI,IAAI,+HAA+H,IAAI,IAAI,IAAI,0HAA0H,IAAI,IAAI,IAAI,+HAA+H,IAAI,IAAI,IAAI,6HAA6H,IAAI,IAAI,IAAI,yHAAyH,IAAI,IAAI,IAAI,qEAAqE,kHAAkH,IAAI,IAAI,IAAI,wGAAwG,wGAAwG,IAAI,oCAAoC,qB;;;;;;ACAxnS,yXAAyX,2wBAA2wB,a;;;;;;ACApoC,wWAAwW,kOAAkO,kgBAAkgB,a;;;;;;ACA5kC,wXAAwX,4CAA4C,2XAA2X,6TAA6T,8vIAA8vI,a;;;;;;ACA11K,+1LAA+1L,k3B;;;;;;ACA/1L,sWAAsW,yoEAAyoE,u9BAAu9B,6EAA6E,iFAAiF,kFAAkF,0aAA0a,2C;;;;;;ACAhmI,yXAAyX,6DAA6D,iBAAiB,oBAAoB,cAAc,8PAA8P,iBAAiB,oBAAoB,cAAc,2gBAA2gB,iBAAiB,oBAAoB,cAAc,2bAA2b,iBAAiB,oBAAoB,cAAc,sPAAsP,iBAAiB,oBAAoB,cAAc,sqB;;;;;;ACA/mE,sWAAsW,2QAA2Q,0QAA0Q,4RAA4R,i1BAAi1B,sPAAsP,oNAAoN,IAAI,IAAI,yEAAyE,mIAAmI,IAAI,IAAI,yEAAyE,iIAAiI,IAAI,IAAI,qEAAqE,qB;;;;;;ACAr6F,oZAAoZ,yMAAyM,4BAA4B,ssJ;;;;;;ACAznB,67c;;;;;;ACAA;AACA;AAEA;AACA;AACA,IAAI69D,aAAa,GAAG,uCAApB,C,CAEA;;AACA,IAAIC,mBAAmB,GAAG,oCAA1B,C,CAEA;;AACA,IAAIC,QAAQ,GAAG,iBAAf,C,CAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,SAASC,SAAT,CAAmBC,IAAnB,EAAyBlvD,OAAzB,EAAkC;AAC9B,MAAI,OAAOA,OAAP,IAAkB,QAAtB,EAAgC;AAC5BA,WAAO,GAAG;AAAE1K,UAAI,EAAE,CAAC,CAAC0K;AAAV,KAAV;AACH,GAFD,MAGK,IAAIA,OAAO,CAAC1K,IAAR,KAAiBnF,SAArB,EAAgC;AACjC6P,WAAO,CAAC1K,IAAR,GAAe,IAAf;AACH;;AAED,MAAItF,MAAM,GAAIgQ,OAAO,CAAC1K,IAAT,GAAiB,EAAjB,GAAsB,EAAnC;AACA,MAAI65D,UAAU,GAAGnvD,OAAO,CAACmvD,UAAR,KAAwBnvD,OAAO,CAAC1K,IAAT,GAAiB85D,eAAjB,GAAmCC,aAA1D,CAAjB;AAEA,MAAIlyB,QAAQ,GAAG+xB,IAAI,IAAIA,IAAI,CAAC/xB,QAAb,GAAwB+xB,IAAI,CAAC/xB,QAA7B,GAAwC,EAAvD,CAX8B,CAa9B;;AACA,MAAImyB,WAAW,GAAG7/D,MAAM,CAAC6rC,MAAP,CAAc,IAAd,CAAlB;;AAEA,OAAK,IAAIjnC,CAAC,GAAC,CAAX,EAAeA,CAAC,GAAC8oC,QAAQ,CAAC5qC,MAA1B,EAAmC,EAAE8B,CAArC,EAAwC;AACpC,QAAIijB,OAAO,GAAG6lB,QAAQ,CAAC9oC,CAAD,CAAtB,CADoC,CAGpC;;AACA,QAAK,CAAC2L,OAAO,CAACuvD,QAAT,IAAqBj4C,OAAO,CAACi4C,QAA9B,IAA2C,CAACj4C,OAAO,CAACloB,IAAxD,EAA8D;AAC1D;AACH,KANmC,CAOpC;;;AACA,QAAI,CAAC2/D,mBAAmB,CAAC59D,IAApB,CAAyBmmB,OAAO,CAACk4C,QAAjC,CAAD,IACAV,aAAa,CAAC39D,IAAd,CAAmBmmB,OAAO,CAACxmB,IAA3B,CADJ,EACsC;AAClC;AACH;;AAED,QAAIlB,GAAG,GAAG0nB,OAAO,CAACloB,IAAlB;AACA,QAAIiX,GAAG,GAAGiR,OAAO,CAACvmB,KAAlB,CAdoC,CAgBpC;AACA;;AACA,QAAI,CAACumB,OAAO,CAACxmB,IAAR,KAAiB,UAAjB,IAA+BwmB,OAAO,CAACxmB,IAAR,KAAiB,OAAjD,KAA6D,CAACwmB,OAAO,CAACm4C,OAA1E,EAAmF;AAC/EppD,SAAG,GAAGlW,SAAN;AACH,KApBmC,CAsBpC;;;AACA,QAAI6P,OAAO,CAAC0vD,KAAZ,EAAmB;AACf;AACA,UAAIp4C,OAAO,CAACxmB,IAAR,KAAiB,UAAjB,IAA+B,CAACwmB,OAAO,CAACm4C,OAA5C,EAAqD;AACjDppD,WAAG,GAAG,EAAN;AACH,OAJc,CAMf;;;AACA,UAAIiR,OAAO,CAACxmB,IAAR,KAAiB,OAArB,EAA8B;AAC1B,YAAI,CAACw+D,WAAW,CAACh4C,OAAO,CAACloB,IAAT,CAAZ,IAA8B,CAACkoB,OAAO,CAACm4C,OAA3C,EAAoD;AAChDH,qBAAW,CAACh4C,OAAO,CAACloB,IAAT,CAAX,GAA4B,KAA5B;AACH,SAFD,MAGK,IAAIkoB,OAAO,CAACm4C,OAAZ,EAAqB;AACtBH,qBAAW,CAACh4C,OAAO,CAACloB,IAAT,CAAX,GAA4B,IAA5B;AACH;AACJ,OAdc,CAgBf;;;AACA,UAAIiX,GAAG,IAAIlW,SAAP,IAAoBmnB,OAAO,CAACxmB,IAAR,IAAgB,OAAxC,EAAiD;AAC7C;AACH;AACJ,KApBD,MAqBK;AACD;AACA,UAAI,CAACuV,GAAL,EAAU;AACN;AACH;AACJ,KAjDmC,CAmDpC;;;AACA,QAAIiR,OAAO,CAACxmB,IAAR,KAAiB,iBAArB,EAAwC;AACpCuV,SAAG,GAAG,EAAN;AAEA,UAAIspD,aAAa,GAAGr4C,OAAO,CAACtX,OAA5B;AACA,UAAI4vD,iBAAiB,GAAG,KAAxB;;AACA,WAAK,IAAIt9D,CAAC,GAAC,CAAX,EAAeA,CAAC,GAACq9D,aAAa,CAACp9D,MAA/B,EAAwC,EAAED,CAA1C,EAA6C;AACzC,YAAIu9D,MAAM,GAAGF,aAAa,CAACr9D,CAAD,CAA1B;AACA,YAAIw9D,YAAY,GAAG9vD,OAAO,CAAC0vD,KAAR,IAAiB,CAACG,MAAM,CAAC9+D,KAA5C;AACA,YAAIogC,QAAQ,GAAI0+B,MAAM,CAAC9+D,KAAP,IAAgB++D,YAAhC;;AACA,YAAID,MAAM,CAACE,QAAP,IAAmB5+B,QAAvB,EAAiC;AAC7By+B,2BAAiB,GAAG,IAApB,CAD6B,CAG7B;AACA;AACA;AACA;AACA;;AACA,cAAI5vD,OAAO,CAAC1K,IAAR,IAAgB1F,GAAG,CAAC0S,KAAJ,CAAU1S,GAAG,CAAC2C,MAAJ,GAAa,CAAvB,MAA8B,IAAlD,EAAwD;AACpDvC,kBAAM,GAAGm/D,UAAU,CAACn/D,MAAD,EAASJ,GAAG,GAAG,IAAf,EAAqBigE,MAAM,CAAC9+D,KAA5B,CAAnB;AACH,WAFD,MAGK;AACDf,kBAAM,GAAGm/D,UAAU,CAACn/D,MAAD,EAASJ,GAAT,EAAcigE,MAAM,CAAC9+D,KAArB,CAAnB;AACH;AACJ;AACJ,OAxBmC,CA0BpC;;;AACA,UAAI,CAAC6+D,iBAAD,IAAsB5vD,OAAO,CAAC0vD,KAAlC,EAAyC;AACrC1/D,cAAM,GAAGm/D,UAAU,CAACn/D,MAAD,EAASJ,GAAT,EAAc,EAAd,CAAnB;AACH;;AAED;AACH;;AAEDI,UAAM,GAAGm/D,UAAU,CAACn/D,MAAD,EAASJ,GAAT,EAAcyW,GAAd,CAAnB;AACH,GAvG6B,CAyG9B;;;AACA,MAAIrG,OAAO,CAAC0vD,KAAZ,EAAmB;AACf,SAAK,IAAI9/D,GAAT,IAAgB0/D,WAAhB,EAA6B;AACzB,UAAI,CAACA,WAAW,CAAC1/D,GAAD,CAAhB,EAAuB;AACnBI,cAAM,GAAGm/D,UAAU,CAACn/D,MAAD,EAASJ,GAAT,EAAc,EAAd,CAAnB;AACH;AACJ;AACJ;;AAED,SAAOI,MAAP;AACH;;AAED,SAASggE,UAAT,CAAoB98C,MAApB,EAA4B;AACxB,MAAIxjB,IAAI,GAAG,EAAX;AACA,MAAIiK,MAAM,GAAG,aAAb;AACA,MAAIrK,QAAQ,GAAG,IAAIimB,MAAJ,CAAWy5C,QAAX,CAAf;AACA,MAAIn+D,KAAK,GAAG8I,MAAM,CAACs2D,IAAP,CAAY/8C,MAAZ,CAAZ;;AAEA,MAAIriB,KAAK,CAAC,CAAD,CAAT,EAAc;AACVnB,QAAI,CAACyC,IAAL,CAAUtB,KAAK,CAAC,CAAD,CAAf;AACH;;AAED,SAAO,CAACA,KAAK,GAAGvB,QAAQ,CAAC2gE,IAAT,CAAc/8C,MAAd,CAAT,MAAoC,IAA3C,EAAiD;AAC7CxjB,QAAI,CAACyC,IAAL,CAAUtB,KAAK,CAAC,CAAD,CAAf;AACH;;AAED,SAAOnB,IAAP;AACH;;AAED,SAASwgE,WAAT,CAAqBlgE,MAArB,EAA6BN,IAA7B,EAAmCqB,KAAnC,EAA0C;AACtC,MAAIrB,IAAI,CAAC6C,MAAL,KAAgB,CAApB,EAAuB;AACnBvC,UAAM,GAAGe,KAAT;AACA,WAAOf,MAAP;AACH;;AAED,MAAIJ,GAAG,GAAGF,IAAI,CAACygE,KAAL,EAAV;AACA,MAAIC,OAAO,GAAGxgE,GAAG,CAACiB,KAAJ,CAAU,aAAV,CAAd;;AAEA,MAAIjB,GAAG,KAAK,IAAZ,EAAkB;AACdI,UAAM,GAAGA,MAAM,IAAI,EAAnB;;AAEA,QAAII,KAAK,CAACC,OAAN,CAAcL,MAAd,CAAJ,EAA2B;AACvBA,YAAM,CAACmC,IAAP,CAAY+9D,WAAW,CAAC,IAAD,EAAOxgE,IAAP,EAAaqB,KAAb,CAAvB;AACH,KAFD,MAGK;AACD;AACA;AACA;AACA;AACA;AACAf,YAAM,CAACqgE,OAAP,GAAiBrgE,MAAM,CAACqgE,OAAP,IAAkB,EAAnC;;AACArgE,YAAM,CAACqgE,OAAP,CAAel+D,IAAf,CAAoB+9D,WAAW,CAAC,IAAD,EAAOxgE,IAAP,EAAaqB,KAAb,CAA/B;AACH;;AAED,WAAOf,MAAP;AACH,GA1BqC,CA4BtC;;;AACA,MAAI,CAACogE,OAAL,EAAc;AACVpgE,UAAM,CAACJ,GAAD,CAAN,GAAcsgE,WAAW,CAAClgE,MAAM,CAACJ,GAAD,CAAP,EAAcF,IAAd,EAAoBqB,KAApB,CAAzB;AACH,GAFD,MAGK;AACD,QAAImiB,MAAM,GAAGk9C,OAAO,CAAC,CAAD,CAApB,CADC,CAED;AACA;AACA;;AACA,QAAI56C,KAAK,GAAG,CAACtC,MAAb,CALC,CAOD;AACA;;AACA,QAAIyiC,KAAK,CAACngC,KAAD,CAAT,EAAkB;AACdxlB,YAAM,GAAGA,MAAM,IAAI,EAAnB;AACAA,YAAM,CAACkjB,MAAD,CAAN,GAAiBg9C,WAAW,CAAClgE,MAAM,CAACkjB,MAAD,CAAP,EAAiBxjB,IAAjB,EAAuBqB,KAAvB,CAA5B;AACH,KAHD,MAIK;AACDf,YAAM,GAAGA,MAAM,IAAI,EAAnB;AACAA,YAAM,CAACwlB,KAAD,CAAN,GAAgB06C,WAAW,CAAClgE,MAAM,CAACwlB,KAAD,CAAP,EAAgB9lB,IAAhB,EAAsBqB,KAAtB,CAA3B;AACH;AACJ;;AAED,SAAOf,MAAP;AACH,C,CAED;;;AACA,SAASo/D,eAAT,CAAyBp/D,MAAzB,EAAiCJ,GAAjC,EAAsCmB,KAAtC,EAA6C;AACzC,MAAI6kB,OAAO,GAAGhmB,GAAG,CAACiB,KAAJ,CAAUm+D,QAAV,CAAd,CADyC,CAGzC;AACA;AACA;;AACA,MAAIp5C,OAAJ,EAAa;AACT,QAAIlmB,IAAI,GAAGsgE,UAAU,CAACpgE,GAAD,CAArB;AACAsgE,eAAW,CAAClgE,MAAD,EAASN,IAAT,EAAeqB,KAAf,CAAX;AACH,GAHD,MAIK;AACD;AACA,QAAIu/D,QAAQ,GAAGtgE,MAAM,CAACJ,GAAD,CAArB,CAFC,CAID;AACA;AACA;AACA;AACA;AACA;;AACA,QAAI0gE,QAAJ,EAAc;AACV,UAAI,CAAClgE,KAAK,CAACC,OAAN,CAAcigE,QAAd,CAAL,EAA8B;AAC1BtgE,cAAM,CAACJ,GAAD,CAAN,GAAc,CAAE0gE,QAAF,CAAd;AACH;;AAEDtgE,YAAM,CAACJ,GAAD,CAAN,CAAYuC,IAAZ,CAAiBpB,KAAjB;AACH,KAND,MAOK;AACDf,YAAM,CAACJ,GAAD,CAAN,GAAcmB,KAAd;AACH;AACJ;;AAED,SAAOf,MAAP;AACH,C,CAED;;;AACA,SAASq/D,aAAT,CAAuBr/D,MAAvB,EAA+BJ,GAA/B,EAAoCmB,KAApC,EAA2C;AACvC;AACAA,OAAK,GAAGA,KAAK,CAAC7B,OAAN,CAAc,UAAd,EAA0B,MAA1B,CAAR;AACA6B,OAAK,GAAG6O,kBAAkB,CAAC7O,KAAD,CAA1B,CAHuC,CAKvC;;AACAA,OAAK,GAAGA,KAAK,CAAC7B,OAAN,CAAc,MAAd,EAAsB,GAAtB,CAAR;AACA,SAAOc,MAAM,IAAIA,MAAM,GAAG,GAAH,GAAS,EAAnB,CAAN,GAA+B4P,kBAAkB,CAAChQ,GAAD,CAAjD,GAAyD,GAAzD,GAA+DmB,KAAtE;AACH;;AAEDm1D,MAAM,CAACpU,OAAP,GAAiBmd,SAAjB,C;;;;;;;ACjQA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;;AAEA,IAAI,SAAkC,CAACp3D,4EAAc,EAAjD,IAAuD,CAAC4N,KAA5D,EAAsE;AAClE,QAAM,IAAIxU,KAAJ,8CAAN;AACH;;AAED,IAAIO,MAAM,CAAC0zD,MAAP,IAAiB1zD,MAAM,CAAC0zD,MAAP,CAAcxrD,OAAd,KAA0Bd,SAA/C,EAAsF;AAElF2qD,oEAAM,CAAC,uCAAD,EAA0C;AAC5C7pD,WAAO,EAAEd,SAAqCC;AADF,GAA1C,CAAN;AAIA,QAAM,IAAI5H,KAAJ,4DAAoE2H,SAApE,8BAAN;AAEH,CARD,MAQO,IAAIpH,MAAM,CAAC0zD,MAAP,IAAiB1zD,MAAM,CAAC0zD,MAAP,CAAcxrD,OAA/B,IAA0ClI,MAAM,CAAC0zD,MAAP,CAAcxrD,OAAd,KAA0Bd,SAApE,IAA6GpH,MAAM,CAAC0zD,MAAP,CAAcqL,MAA3H,IAAqI/+D,MAAM,CAAC0zD,MAAP,CAAcqL,MAAd,CAAqBvZ,MAA9J,EAAsK;AAEzKuM,oEAAM,CAAC,4CAAD,EAA+C;AACjDiN,mBAAe,EAAEh/D,MAAM,CAAC0zD,MAAP,CAAcxrD,OADkB;AAEjDA,WAAO,EAAUd,SAAqCC;AAFL,GAA/C,CAAN;AAKA,QAAM,IAAI5H,KAAJ,iEAAyEO,MAAM,CAAC0zD,MAAP,CAAcxrD,OAAvF,mDAA8Id,SAA9I,CAAN;AAEH,CATM,MASA;AAEH,MAAI;AACA,QAAM63D,UAAU,GAAG31D,mBAAO,CAAC,EAAD,CAA1B;;AACAyqD,kFAAe,CAACkL,UAAD,EAAa,CAAE,QAAF,EAAY,QAAZ,EAAsB,MAAtB,CAAb,EAA6C,CAAE,MAAF,CAA7C,CAAf;AAEH,GAJD,CAIE,OAAO5+D,GAAP,EAAY;AAEV0xD,sEAAM,CAAC,iBAAD,EAAoB;AACtB/vD,WAAK,EAAIwiB,wEAAc,CAACnkB,GAAD,CADD;AAEtB6+D,aAAO,EAAG,EAAD,CAAKzhE,QAAL,CAAc0C,IAAd,CAAmBE,GAAnB;AAFa,KAApB,CAAN;AAKA,UAAMA,GAAN;AACH;AACJ,C;;;;;;;ACzCD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;ACFA;AACA;;;;;;;;ACDA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACDA;;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA,IAAM+yD,UAAU,kCACV1qE,2CAAsB,CAAC5B,KADb,IACsBI,sCAAiB,CAACF,KADxC,cAEV0B,2CAAsB,CAAC1B,KAFb,IAEsBE,sCAAiB,CAACJ,KAFxC,cAAhB,C,CAKA;;AAoBO,SAAS8jD,iBAAT,OAAgK;AAAA,MAAnIrkB,EAAmI,QAAnIA,EAAmI;AAAA,MAA/H1oB,KAA+H,QAA/HA,KAA+H;AAAA,MAAxHuqD,KAAwH,QAAxHA,KAAwH;AAAA,MAAjHC,SAAiH,QAAjHA,SAAiH;AAAA,MAAtGC,OAAsG,QAAtGA,OAAsG;AAAA,MAA7FC,KAA6F,QAA7FA,KAA6F;AAAA,MAAtFvjD,EAAsF,QAAtFA,EAAsF;AAAA,MAAlFuiB,GAAkF,QAAlFA,GAAkF;AAAA,MAA7EtjB,OAA6E,QAA7EA,OAA6E;AAAA,MAApE+nC,OAAoE,QAApEA,OAAoE;AAAA,MAA3DkZ,MAA2D,QAA3DA,MAA2D;AAAA,MAAnD70B,MAAmD,QAAnDA,MAAmD;;AAAA,4BAEzIxyB,KAAK,CAACkJ,MAAN,CAAawF,KAAb,CAAmB,GAAnB,CAFyI;AAAA,MAE3JvF,IAF2J;AAAA,MAErJF,OAFqJ;;AAInK,MAAMq4D,cAAc,kBACbjM,sDAAiB,CAAC;AAAE3sC,MAAE,EAAFA,EAAF;AAAMgB,OAAG,EAAHA,GAAN;AAAW+gC,WAAO,EAAPA,OAAX;AAAoBF,SAAK,EAALA,KAApB;AAA2BC,aAAS,EAATA;AAA3B,GAAD,CADJ,uEAGR9hC,EAHQ,wTAcRA,EAdQ,qTAsBRA,EAtBQ,SAsBAgB,GAtBA,iBAsBiB+gC,OAAO,CAACj6D,MAtBzB,0DAuBRk4B,EAvBQ,SAuBAgB,GAvBA,iBAuBiB+gC,OAAO,CAACj6D,MAvBzB,UAuBsC+5D,KAAK,CAACnuB,MAvB5C,sPA+BR1T,EA/BQ,UA+BC6hC,KAAK,CAACnuB,MA/BP,sEAApB;AAqCA,MAAM3J,OAAO,GAAG+iC,4CAAgB,CAACvsD,OAAD,CAAhB,CAA0BE,IAA1B,CAAhB;;AAEA,WAASogB,KAAT,CAAexJ,KAAf,EAAsB;AAClBA,SAAK,CAAC01C,cAAN;AACA11C,SAAK,CAACgQ,eAAN;;AACA,QAAI/vB,KAAK,CAACgvC,QAAV,EAAoB;AAChBhvC,WAAK,CAACgvC,QAAN;AACH;;AACDb,WAAO,CAAC5kB,KAAR;AACH;;AAED,WAASo6B,KAAT,CAAe5jC,KAAf,EAAsB;AAClBA,SAAK,CAAC01C,cAAN;AACA11C,SAAK,CAACgQ,eAAN;;AAEA,QAAI+gB,4BAAK,EAAT,EAAa;AACT;AACA3uC,YAAM,CAACuzD,KAAP,CAAa,oDAAb;AACH,KAHD,MAGO;AACHvnB,aAAO,CAACwV,KAAR;AACH;AACJ;;AAED,MAAMv7B,KAAK,GAAGpoB,KAAK,CAACooB,KAAN,IAAe,EAA7B;AACA,MAAMslB,YAAY,GAAGtlB,KAAK,CAACslB,YAAN,IAAsB7iD,2CAAsB,CAAC5B,KAAlE;AACA,MAAMuyD,SAAS,GAAG+Z,UAAU,CAAC7nB,YAAD,CAA5B;AAEA,MAAMioB,MAAM,GAAI,OAAOhY,iCAAY,CAACiY,EAApB,KAA2B,UAA5B,GACTjY,iCAAY,CAACiY,EAAb,CAAgB;AAAEpa,aAAS,EAATA;AAAF,GAAhB,CADS,GAETmC,iCAAY,CAACiY,EAAb,CAAgBpa,SAAhB,CAFN;AAIA,MAAMgC,UAAU,GAAI,OAAOG,iCAAY,CAACkY,MAApB,KAA+B,UAAhC,GACblY,iCAAY,CAACkY,MAAb,CAAoB;AAAEra,aAAS,EAATA;AAAF,GAApB,CADa,GAEbmC,iCAAY,CAACkY,MAAb,CAAoBra,SAApB,CAFN;AAIA,MAAMjzB,EAAE,GACJ;AAAK,MAAE,EAAGG,EAAV;AAAe,WAAO,EAAGi7B,KAAzB;AAAiC,SAAK,EAAOj6B,GAAP,iBAAwBtjB,OAAxB,iCAA6DsjB,GAA7D,0BAAuFgkB,YAAvF,SAAyGhkB,GAAzG,oBAA6H8xB,SAAnK;AAAkL,QAAI,EAAC,QAAvL;AAAgM,kBAAW,MAA3M;AAAkN,kBAAW;AAA7N,KACI;AAAG,QAAI,EAAC,GAAR;AAAY,SAAK,EAAC,uBAAlB;AAA0C,WAAO,EAAGjyB,KAApD;AAA4D,kBAAW,OAAvE;AAA+E,QAAI,EAAC;AAApF,IADJ,EAEI;AAAK,SAAK,EAAC;AAAX,KACI;AAAK,SAAK,EAAC;AAAX,KACI;AACI,SAAK,EAAC,yBADV;AACoC,OAAG,EAAC,IADxC;AAEI,OAAG,iCAAiCsmB,0CAAY,CAAC8lB,MAAM,CAAC/1D,QAAP,EAAD;AAFpD,IADJ,EAII;AACI,SAAK,EAAC,6BADV;AACwC,OAAG,EAAC,QAD5C;AAEI,OAAG,iCAAiCiwC,0CAAY,CAAC2N,UAAU,CAAC59C,QAAX,EAAD;AAFpD,IAJJ,CADJ,EASI;AAAK,SAAK,EAAC;AAAX,KACK6yB,OAAO,CAACqjC,aADb,CATJ,EAYI;AAAK,SAAK,EAAC;AAAX,KACI;AAAG,WAAO,EAAGnS,KAAb;AAAqB,QAAI,EAAC;AAA1B,KAA+BlxB,OAAO,CAACsjC,QAAvC,CADJ,CAZJ,EAeI;AAAK,SAAK,EAAC;AAAX,KACI;AAAK,SAAK,EAAC;AAAX,IADJ,CAfJ,CAFJ,EAsBI;AAAK,SAAK,EAAC;AAAX,KACK1O,MADL,CAtBJ,EA0BI,sBAASia,cAAT,CA1BJ,CADJ;AA+BA,MAAMv5C,SAAS,GACX,qBACI,qBACMQ,EADN,CADJ,CADJ;AAQAphB,IAAE,CAACujD,KAAK,CAAC/vB,KAAP,EAAc,YAAM;AAClBpS,MAAE,CAAC+B,SAAH,UAAqBZ,GAArB;AACH,GAFC,CAAF;AAIA,SACI;AAAK,MAAE,EAAGhB,EAAV;AAAe,SAAK,EAAC;AAArB,KACI,sBAAS4sC,oDAAe,CAAC;AAAE5sC,MAAE,EAAFA,EAAF;AAAM8hC,aAAS,EAATA;AAAN,GAAD,CAAxB,CADJ,EAGI;AAAQ,SAAK,EAAC,yBAAd;AAAwC,QAAI,iCAAiC9hC,EAAjC,OAA5C;AAAuF,aAAS,EAAC,IAAjG;AAAsG,SAAK,EAAC;AAA5G,KACMX,SADN,CAHJ,CADJ;AASH,C;;;;;;ACpKD;;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AAeO,IAAMw5C,WAAuC,GAAGt1B,6BAAM,CAAC;AAC1DviB,KAAG,EAAG,cADoD;AAE1D3pB,MAAI,EAAE,cAFoD;AAI1DosC,UAJ0D,oBAIjDnsC,KAJiD,EAIjC;AACrB,QAAMgJ,GAAG,GAAGhJ,KAAK,CAACgJ,GAAN,IAAanC,wBAAM,CAACmC,GAAhC;AACA,WAAWnC,wBAAM,CAACqU,oBAAP,CAA4BlS,GAA5B,CAAX;AACH,GAPyD;;AAS1D,MAAI5B,MAAJ,GAAsB;AAAA;;AAClB,sDACOP,wBAAM,CAAC8N,aADd,6BAEM/nB,wBAAG,CAACC,KAFV,IAEmB,qCAFnB;AAIH,GAdyD;;AAgB1Dq/C,WAAS,EAAE,IAhB+C;AAkB1DlsC,OAAK,EAAE;AACH8J,aAAS,EAAE;AACPrI,UAAI,EAAM,QADH;AAEPurC,cAAQ,EAAE,KAFH;AAGPh5B,SAHO,iBAGQ;AACX,eAAO3K,mCAAY,EAAnB;AACH,OALM;AAMP4jC,gBAAU,EAAE;AANL,KADR;AAWH1kC,SAAK,EAAE;AACH9G,UAAI,EAAQ,QADT;AAEHurC,cAAQ,EAAI,IAFT;AAGHC,gBAAU,EAAE;AAHT,KAXJ;AAiBHjjC,mBAAe,EAAE;AACbvI,UAAI,EAAM,QADG;AAEburC,cAAQ,EAAE,KAFG;AAGbh5B,SAHa,iBAGG;AACZ,eAAO/J,yCAAkB,EAAzB;AACH,OALY;AAMbgjC,gBAAU,EAAE;AANC,KAjBd;AA0BHU,UAAM,EAAE;AACJlsC,UAAI,EAAQ,SADR;AAEJurC,cAAQ,EAAI,KAFR;AAGJC,gBAAU,EAAE;AAHR,KA1BL;AAgCHjkC,OAAG,EAAE;AACDvH,UAAI,EAAQ,QADX;AAEDurC,cAAQ,EAAI,KAFX;AAGDC,gBAAU,EAAE,IAHX;AAKDj5B,SALC,iBAKc;AACX,eAAOnN,wBAAM,CAACmC,GAAd;AACH,OAPA;AASD4jC,cATC,oBASQ5jC,GATR,EASa;AACV,YAAI,CAACnC,wBAAM,CAAC+R,UAAP,CAAkB5P,GAAlB,CAAL,EAA6B;AACzB,gBAAM,IAAIpH,KAAJ,mBAA2BoH,GAA3B,CAAN;AACH;AACJ;AAbA,KAhCF;AAgDHE,UAAM,EAAE;AACJzH,UAAI,EAAW,QADX;AAEJurC,cAAQ,EAAO,KAFX;AAGJC,gBAAU,EAAK,UAHX;AAIJE,mBAAa,EAAE,IAJX;AAMJn5B,SANI,iBAMW;AAAA,gCACeo5B,uCAAgB,EAD/B;AAAA,YACHjkC,IADG,qBACHA,IADG;AAAA,YACGF,OADH,qBACGA,OADH;;AAEX,eAAWE,IAAX,SAAqBF,OAArB;AACH;AATG,KAhDL;AA4DHu4D,YAAQ,EAAE;AACN//D,UAAI,EAAQ,QADN;AAENurC,cAAQ,EAAI;AAFN,KA5DP;AAgEHy0B,oBAAgB,EAAE;AACdhgE,UAAI,EAAM,QADI;AAEdurC,cAAQ,EAAE;AAFI,KAhEf;AAqEH00B,WAAO,EAAE;AACLjgE,UAAI,EAAQ,UADP;AAELurC,cAAQ,EAAI,KAFP;AAGL6B,gBAAU,EAAE;AAHP,KArEN;AA2EHnqC,YAAQ,EAAE;AACNjD,UAAI,EAAQ,QADN;AAENurC,cAAQ,EAAI,KAFN;AAGN6B,gBAAU,EAAE;AAHN,KA3EP;AAiFHG,YAAQ,EAAE;AACNvtC,UAAI,EAAM,UADJ;AAENurC,cAAQ,EAAE,KAFJ;AAGN/kC,UAAI,EAAM,IAHJ;AAINhB,UAAI,EAAM;AAJJ,KAjFP;AAwFH2oC,WAAO,EAAE;AACLnuC,UAAI,EAAS,QADR;AAELwrC,gBAAU,EAAG,IAFR;AAGLI,iBAAW,EAAE,KAHR;AAILr5B,SAAG,EAAU,eAAM;AACf,eAAO67B,0CAAY,CAAC7iC,IAAI,CAACC,SAAL,CAAe;AAC/B8B,aAAG,EAAE+E,0CAAmB;AADO,SAAf,CAAD,CAAnB;AAGH;AARI;AAxFN,GAlBmD;AAuH1Di5B,mBAAiB,EAAjBA,iBAAiBA;AAvHyC,CAAD,CAAtD,C;;;;AC3BP;;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEO,IAAM40B,iBAAiB,GAAG11B,6BAAM,CAAC;AACpCviB,KAAG,EAAG,YAD8B;AAEpC3pB,MAAI,EAAE,KAF8B;AAIpCosC,UAJoC,oBAI3BnsC,KAJ2B,EAIX;AACrB,QAAMgJ,GAAG,GAAGhJ,KAAK,CAACgJ,GAAN,IAAanC,wBAAM,CAACmC,GAAhC;AACA,WAAWnC,wBAAM,CAACqU,oBAAP,CAA4BlS,GAA5B,CAAX;AACH,GAPmC;;AASpC,MAAI5B,MAAJ,GAAsB;AAClB,sDACOP,wBAAM,CAAC8N,aADd;AAGH,GAbmC;;AAepCu3B,WAAS,EAAE,IAfyB;AAiBpClsC,OAAK,EAAE;AACH4vC,WAAO,EAAE;AACLnuC,UAAI,EAAU,QADT;AAELwrC,gBAAU,EAAI,IAFT;AAGLI,iBAAW,EAAG,KAHT;AAILr5B,SAAG,EAAU,eAAM;AACf,eAAO67B,0CAAY,CAAC7iC,IAAI,CAACC,SAAL,CAAe;AAC/B8B,aAAG,EAAE+E,0CAAmB;AADO,SAAf,CAAD,CAAnB;AAGH;AARI,KADN;AAWH5K,UAAM,EAAE;AACJzH,UAAI,EAAY,QADZ;AAEJurC,cAAQ,EAAQ,KAFZ;AAGJC,gBAAU,EAAM,UAHZ;AAIJE,mBAAa,EAAG,IAJZ;AAMJn5B,SANI,iBAMW;AAAA,gCACeo5B,uCAAgB,EAD/B;AAAA,YACHjkC,IADG,qBACHA,IADG;AAAA,YACGF,OADH,qBACGA,OADH;;AAEX,eAAWE,IAAX,SAAqBF,OAArB;AACH;AATG,KAXL;AAsBHD,OAAG,EAAE;AACDvH,UAAI,EAAQ,QADX;AAEDurC,cAAQ,EAAI,KAFX;AAGDC,gBAAU,EAAE,IAHX;AAKDj5B,SALC,iBAKc;AACX,eAAOnN,wBAAM,CAACmC,GAAd;AACH,OAPA;AASD4jC,cATC,oBASQ5jC,GATR,EASa;AACV,YAAI,CAACnC,wBAAM,CAAC+R,UAAP,CAAkB5P,GAAlB,CAAL,EAA6B;AACzB,gBAAM,IAAIpH,KAAJ,mBAA2BoH,GAA3B,CAAN;AACH;AACJ;AAbA,KAtBF;AAqCH44D,gBAAY,EAAE;AACVngE,UAAI,EAAE;AADI,KArCX;AAwCHogE,0BAAsB,EAAE;AACpBpgE,UAAI,EAAE;AADc,KAxCrB;AA2CH0E,UAAM,EAAE;AACJ1E,UAAI,EAAE;AADF,KA3CL;AA8CHwD,aAAS,EAAE;AACPxD,UAAI,EAAQ,UADL;AAEPurC,cAAQ,EAAI;AAFL,KA9CR;AAkDH9nC,WAAO,EAAE;AACLzD,UAAI,EAAQ,UADP;AAELurC,cAAQ,EAAI;AAFP,KAlDN;AAsDHgC,YAAQ,EAAE;AACNvtC,UAAI,EAAY,UADV;AAENurC,cAAQ,EAAQ,IAFV;AAGNG,mBAAa,EAAG;AAHV;AAtDP,GAjB6B;AA+EpCJ,mBAAiB,EAAjBA,iBAAiBA;AA/EmB,CAAD,CAAhC,C;;;;;;;;ACTP;AAEA;AACA;AACA;;AAGA,SAAS+0B,6BAAT,GAAmD;AAC/C,MAAMp5C,EAAE,GAAGvmB,MAAM,CAAC2F,QAAP,CAAgBmM,QAA3B;;AAEA,MAAI,CAACyU,EAAL,EAAS;AACL,WAAO,KAAP;AACH;;AAED,MAAIlgB,qCAAc,EAAlB,EAAsB;AAClB,WAAO,KAAP;AACH;;AAED,MAAMu5D,cAAc,GAAGl5C,iCAAU,CAAC56B,4BAAD,CAAjC;AACA,MAAM+zE,iBAAiB,GAAGruD,OAAO,CAACouD,cAAD,CAAjC;;AAEA,MAAIC,iBAAJ,EAAuB;AACnBv1D,gDAAI,CAAC,0BAAD,CAAJ;AACA,WAAO,KAAP;AACH;;AAED,SAAO,IAAP;AACH;;AAED,SAASw1D,UAAT,GAAsB;AAClB,MAAM7uD,MAAM,GAAGyV,iCAAU,CAAC56B,4BAAD,CAAzB;;AAEA,MAAImlB,MAAJ,EAAY;AACR;AACAA,UAAM,CAAC0d,UAAP,CAAkBjH,WAAlB,CAA8BzW,MAA9B;AACH;AACJ;;AAEM,SAAS8uD,WAAT,GAAgC;AACnC,MAAIC,yBAAyB,GAAG,KAAhC;AACA,MAAM19C,QAAQ,8BAAd;AACA,MAAIwC,QAAJ;AAEA,MAAMjD,GAAG,GAAG;AACR;;;;;;;;AAQAo+C,oBATQ,4BASSC,QATT,EAS6B;AACjC,UAAMC,mBAAmB,GAAG,SAAtBA,mBAAsB,GAAM;AAC9B,YAAIt+C,GAAG,CAACu+C,sBAAJ,CAA2BF,QAA3B,CAAJ,EAA0C;AACtCr+C,aAAG,CAACi+C,UAAJ;AACAj+C,aAAG,CAACw+C,gBAAJ,CAAqBH,QAArB;AACH,SAHD,MAGO;AACH;AACA;AACAp7C,kBAAQ,GAAGq7C,mBAAX;AACH;AACJ,OATD;;AAWAA,yBAAmB;AACtB,KAtBO;AAuBRG,8BAvBQ,wCAuBqB;AACzBtgE,YAAM,CAACsiB,QAAD,CAAN,GAAmB,YAAM;AACrB09C,iCAAyB,GAAG,IAA5B;;AAEA,YAAIl7C,QAAJ,EAAc;AACVA,kBAAQ;AACRA,kBAAQ,GAAGnmB,SAAX;AACH;AACJ,OAPD;AAQH,KAhCO;AAiCR4hE,yBAjCQ,mCAiCgB;AACpBvgE,YAAM,CAACwgE,SAAP,GAAmBxgE,MAAM,CAACwgE,SAAP,IAAoB,EAAvC;AACA,UAAMC,iBAAiB,GAAGzgE,MAAM,CAACwgE,SAAP,CAAiBriE,MAAjB,CAAwB,UAAA27D,CAAC;AAAA,eAAIA,CAAC,CAACl8C,KAAF,KAAY,oBAAhB;AAAA,OAAzB,CAA1B;;AACA,UAAI6iD,iBAAiB,CAAC1/D,MAAlB,KAA6B,CAAjC,EAAoC;AAChCf,cAAM,CAACwgE,SAAP,CAAiB7/D,IAAjB,CAAsB;AAAEid,eAAK,EAAE;AAAT,SAAtB;AACH;AACJ,KAvCO;;AAwCR,QAAI0E,QAAJ,GAAwB;AACpB,aAAOA,QAAP;AACH,KA1CO;;AA2CR,QAAI09C,yBAAJ,GAA0C;AACtC,aAAOA,yBAAP;AACH,KA7CO;;AA8CRK,oBAAgB,EAAE,0BAACH,QAAD,EAAwB;AAAA;;AACtC7vD,mDAAK,sBACC/jB,yBAAI,CAACC,GAAL,CAASE,KADV,IACwBH,yBAAI,CAACG,KAAL,CAAWkC,IADnC,SAECrC,yBAAI,CAACC,GAAL,CAASG,UAFV,IAEwBJ,yBAAI,CAACI,UAAL,CAAgBiD,SAFxC,UAAL;AAKA,UAAMq3B,MAAM,GAAG;AACXurC,SAAC,EAAU,IADA;AAEXhsC,UAAE,EAASvmB,MAAM,CAAC2F,QAAP,CAAgBmM,QAFhB;AAGX4uD,YAAI,EAAOh8D,wBAAM,CAACuD,UAHP;AAIX04D,iBAAS,EAAE,EAJA;AAKXrO,SAAC,EAAU5tD,wBAAM,CAACwD,OALP;AAMX5C,cAAM,EAAK;AANA,OAAf;;AASA,UAAI46D,QAAJ,EAAc;AACVl5C,cAAM,CAAC25C,SAAP,GAAmBT,QAAnB;AACH,OAFD,MAEO;AACH,eAAOl5C,MAAM,CAAC25C,SAAd;AACH;;AAED,UAAMC,OAAO,GAAGhuD,gCAAS,CAAClO,wBAAM,CAAC2V,OAAR,EAAiB2M,MAAjB,CAAzB;AAEAonC,uCAAU,CAACwS,OAAD,EAAU,CAAV,EAAa;AACnBC,aAAK,EAAG,IADW;AAEnBt6C,UAAE,EAAMz6B,4BAAOA;AAFI,OAAb,CAAV,CAGGsU,IAHH,CAGQ,YAAM;AAAA;;AACV;AACA;AACA;AACA,YAAI,EAAEJ,MAAM,CAACwgE,SAAP,IAAoBxgE,MAAM,CAACwgE,SAAP,CAAiB,CAAjB,CAApB,IAA2CxgE,MAAM,CAACwgE,SAAP,CAAiB,CAAjB,EAAoB5iD,KAApB,KAA8B,YAA3E,CAAJ,EAA8F;AAC1F5d,gBAAM,CAACsiB,QAAD,CAAN;AACH;;AAEDjS,qDAAK,wBACC/jB,yBAAI,CAACC,GAAL,CAASE,KADV,IACwBH,yBAAI,CAACG,KAAL,CAAWkC,IADnC,UAECrC,yBAAI,CAACC,GAAL,CAASG,UAFV,IAEwBJ,yBAAI,CAACI,UAAL,CAAgBkD,WAFxC,WAAL;AAIH,OAfD,EAeGoT,KAfH,CAeS,UAAA3C,GAAG,EAAI;AACZiK,oDAAI,CAAC,mBAAD,EAAsB;AAAEtI,eAAK,EAAEwiB,qCAAc,CAACnkB,GAAD;AAAvB,SAAtB,CAAJ;AACH,OAjBD;AAkBH,KAvFO;AAwFRs/D,iCAA6B,EAA7BA,6BAxFQ;;AAyFR;;;;;;;;;;;AAWAS,0BApGQ,kCAoGeF,QApGf,EAoG6C;AACjD,UAAIF,yBAAyB,KAAK,KAAlC,EAAyC;AACrC,eAAO,KAAP;AACH;;AAED,UAAI35D,qCAAc,EAAlB,EAAsB;AAClB,eAAO,KAAP;AACH,OAPgD,CASjD;AACA;AACA;;;AACA,UAAI3B,wBAAM,CAACuD,UAAX,EAAuB;AACnB,eAAO,KAAP;AACH;;AAED,UAAIi4D,QAAJ,EAAc;AACV,eAAO,IAAP;AACH;;AAED,aAAO,KAAP;AACH,KAzHO;AA0HRJ,cAAU,EAAVA;AA1HQ,GAAZ;AA6HA,SAAOj+C,GAAP;AACH,C;;ACzKD;AAEO,IAAMi/C,IAAI,GAAGf,WAAW,EAAxB,C;;ACFP;;;;ACAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAMA,IAAIgB,SAAqB,GAAG,EAA5B;AAEA,IAAMC,iBAAiB,GAAGpwD,8BAAO,CAAC,UAAC/J,GAAD,EAAeu+B,MAAf,EAA+E;AAE7G96B,8CAAI,gCAAJ;AAEAzD,KAAG,GAAGA,GAAG,IAAInC,wBAAM,CAACmC,GAApB;AAEA,MAAMo6D,QAAiB,GAAG77B,MAAM,CAACv+B,GAAD,CAAhC;;AAEA,MAAI,CAACo6D,QAAL,EAAe;AACX,UAAM,IAAIxhE,KAAJ,mCAA2CoH,GAA3C,CAAN;AACH;;AAED,MAAIk6D,SAAS,CAACC,iBAAV,IAA+B,CAACD,SAAS,CAACC,iBAAV,CAA4B17D,MAA5B,CAAmCkvB,MAAvE,EAA+E;AAC3E,WAAOusC,SAAS,CAACC,iBAAV,CAA4Bn6D,GAA5B,EAAiCu+B,MAAjC,CAAP;AACH;;AAED,MAAM87B,SAAkB,GAAGxzB,0CAAY,CAAKuzB,QAAL,OAAvC;AAEA,SAAOt0D,8BAAO,CAAC;AAEX3I,UAAM,QAFK;AAGX4I,OAAG,EAAMlI,wBAAM,CAACyU,WAAP,CAAmBtS,GAAnB,CAHE;AAIXgG,WAAO,EAAE;AACLs0D,mBAAa,aAAYD;AADpB,KAJE;AAOX/7D,QAAI,EAAE;AACFi8D,gBAAU;AADR;AAPK,GAAD,CAAP,CAWJhhE,IAXI,CAWC,UAAAiC,GAAG,EAAI;AAEX,QAAIA,GAAG,IAAIA,GAAG,CAACL,KAAJ,KAAc,gBAAzB,EAA2C;AACvC,YAAM,IAAIvC,KAAJ,uBAA+BoH,GAA/B,oBAAmDo6D,QAAnD,aAAqEp2D,IAAI,CAACC,SAAL,CAAezI,GAAf,EAAoB,IAApB,EAA0B,CAA1B,CAArE,CAAN;AACH;;AAED,QAAI,CAACA,GAAD,IAAQ,CAACA,GAAG,CAACkqC,YAAjB,EAA+B;AAC3B,YAAM,IAAI9sC,KAAJ,kCAA0CoL,IAAI,CAACC,SAAL,CAAezI,GAAf,EAAoB,IAApB,EAA0B,CAA1B,CAA1C,CAAN;AACH;;AAED,WAAOA,GAAG,CAACkqC,YAAX;AACH,GAtBM,CAAP;AAwBH,CA1CgC,EA0C9B;AAAElpC,MAAI,EAAE,KAAK,EAAL,GAAU;AAAlB,CA1C8B,CAAjC;AA4CA,IAAMg+D,uBAAuB,GAAGzwD,8BAAO,CAAC,UAAC/J,GAAD,EAAeu+B,MAAf,EAAqDk8B,iBAArD,EAAgH;AAAA,MAA3DA,iBAA2D;AAA3DA,qBAA2D,GAA9B,EAA8B;AAAA;;AAEpJh3D,8CAAI,sCAAJ;AAEAzD,KAAG,GAAGA,GAAG,IAAInC,wBAAM,CAACmC,GAApB;AAEA,MAAMo6D,QAAQ,GAAG77B,MAAM,CAACv+B,GAAD,CAAvB;;AAEA,MAAI,CAACo6D,QAAL,EAAe;AACX,UAAM,IAAIxhE,KAAJ,mCAA2CoH,GAA3C,CAAN;AACH;;AAED,MAAIk6D,SAAS,CAACM,uBAAV,IAAqC,CAACN,SAAS,CAACM,uBAAV,CAAkC/7D,MAAlC,CAAyCkvB,MAAnF,EAA2F;AACvF,WAAOusC,SAAS,CAACM,uBAAV,CAAkCx6D,GAAlC,EAAuCu+B,MAAvC,EAA+Ck8B,iBAA/C,CAAP;AACH;;AAEDA,mBAAiB,CAACC,SAAlB,GAA8B,IAA9B;AACAD,mBAAiB,CAAC1jE,IAAlB,GAAyB0jE,iBAAiB,CAAC1jE,IAAlB,GAA6B0jE,iBAAiB,CAAC1jE,IAA/C,SAAyDkR,IAAI,CAACE,MAAL,GAAcvR,QAAd,EAAzD,GAAuFqR,IAAI,CAACE,MAAL,GAAcvR,QAAd,EAAhH;AAEA,SAAOujE,iBAAiB,CAACn6D,GAAD,EAAMu+B,MAAN,CAAjB,CAA+BhlC,IAA/B,CAAoC,UAACwsC,WAAD,EAAwC;AAE/E,WAAOjgC,8BAAO,CAAC;AACX3I,YAAM,QADK;AAEX4I,SAAG,EAAMlI,wBAAM,CAAC6U,iBAAP,CAAyB1S,GAAzB,CAFE;AAGXgG,aAAO,EAAE;AACLs0D,qBAAa,cAAav0B;AADrB,OAHE;AAMX9/B,UAAI,EAAEw0D;AANK,KAAD,CAAd;AASH,GAXM,EAWJlhE,IAXI,CAWC,UAACiC,GAAD,EAAkB;AAEtB,QAAIA,GAAG,IAAIA,GAAG,CAACL,KAAf,EAAsB;AAClB,YAAM,IAAIvC,KAAJ,CAAU4C,GAAG,CAACL,KAAd,CAAN;AACH;;AAED,QAAI,CAACK,GAAG,CAACkkB,EAAT,EAAa;AACT,YAAM,IAAI9mB,KAAJ,+CAAuDoL,IAAI,CAACC,SAAL,CAAezI,GAAf,EAAoB,IAApB,EAA0B,CAA1B,CAAvD,CAAN;AACH;;AAED,WAAOA,GAAG,CAACkkB,EAAX;AACH,GAtBM,CAAP;AAwBH,CA3CsC,EA2CpC;AAAEljB,MAAI,EAAE,KAAK,EAAL,GAAU;AAAlB,CA3CoC,CAAvC;;AA6CA,SAASm+D,kBAAT,CAA4Bn/D,GAA5B,EAAiC;AAAA;;AAE7B,MAAI,CAACA,GAAL,EAAU;AACN;AACH;;AAED,MAAIuF,YAAJ;AACA,MAAIwhC,SAAJ;;AAEA,MAAI/mC,GAAG,CAACkkB,EAAR,EAAY;AACR6iB,aAAS,GAAG/mC,GAAG,CAACkkB,EAAhB;AACH;;AAED,MAAIlkB,GAAG,CAACo/D,KAAJ,IAAap/D,GAAG,CAACo/D,KAAJ,CAAU1gE,MAA3B,EAAmC;AAC/B,SAAK,IAAI8B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGR,GAAG,CAACo/D,KAAJ,CAAU1gE,MAA9B,EAAsC8B,CAAC,EAAvC,EAA2C;AACvC,UAAIR,GAAG,CAACo/D,KAAJ,CAAU5+D,CAAV,EAAamB,MAAb,KAAwB,UAAxB,IAAsC3B,GAAG,CAACo/D,KAAJ,CAAU5+D,CAAV,EAAa6+D,GAAb,KAAqB,cAA/D,EAA+E;AAC3E,YAAMriE,KAAK,GAAGgD,GAAG,CAACo/D,KAAJ,CAAU5+D,CAAV,EAAa4N,IAAb,CAAkBpR,KAAlB,CAAwB,4BAAxB,CAAd;;AACA,YAAIA,KAAJ,EAAW;AACPuI,sBAAY,GAAGvI,KAAK,CAAC,CAAD,CAApB;AACH;AACJ;AACJ;AACJ;;AAEDgR,+CAAK,sBACC/jB,yBAAI,CAACC,GAAL,CAASE,KADV,IAC0BH,yBAAI,CAACG,KAAL,CAAWT,MADrC,SAECM,yBAAI,CAACC,GAAL,CAASG,UAFV,IAE0BJ,yBAAI,CAACI,UAAL,CAAgBwC,cAF1C,SAGC5C,yBAAI,CAACC,GAAL,CAASS,YAHV,IAG0BV,yBAAI,CAACU,YAAL,CAAkBtB,iCAAY,CAACG,MAA/B,CAH1B,SAICS,yBAAI,CAACC,GAAL,CAASV,MAJV,IAI0Bu9C,SAJ1B,SAKC98C,yBAAI,CAACC,GAAL,CAASO,KALV,IAK0B8a,YAL1B,SAMCtb,yBAAI,CAACC,GAAL,CAASQ,UANV,IAM0Bq8C,SAN1B,UAAL;AAQH;;AAED,SAASu4B,mBAAT,GAAwC;AACpC;AACH;;AAED,SAASC,cAAT,CAAwB/6D,GAAxB,EAAsCu+B,MAAtC,EAA4En9B,UAA5E,EAAwF45D,YAAxF,EAA+G;AAE3Gh7D,KAAG,GAAGA,GAAG,IAAInC,wBAAM,CAACmC,GAApB;AAEA,MAAMo6D,QAAQ,GAAG77B,MAAM,CAACv+B,GAAD,CAAvB;;AAEA,MAAI,CAACo6D,QAAL,EAAe;AACX,UAAM,IAAIxhE,KAAJ,mCAA2CoH,GAA3C,CAAN;AACH;;AAED,MAAMi7D,UAAU,GAAG5lD,+BAAQ,EAA3B;AAEA,SAAO8kD,iBAAiB,CAACn6D,GAAD,EAAMu+B,MAAN,CAAjB,CAA+BhlC,IAA/B,CAAoC,UAACwsC,WAAD,EAAwC;AAE/E,QAAM//B,OAAgB,GAAG;AACrBs0D,mBAAa,cAAav0B;AADL,KAAzB;AAIA,WAAOjgC,8BAAO,CAAC;AACX3I,YAAM,OADK;AAEX4I,SAAG,EAASlI,wBAAM,CAAC8U,eAAP,CAAuB3S,GAAvB,CAAT,SAA0CoB,UAA1C,SAA0D65D,UAFlD;AAGXj1D,aAAO,EAAPA,OAHW;AAIXC,UAAI,EAAI;AACJ,uBAAmBg1D,UADf;AAEJ,2BAAmBD;AAFf;AAJG,KAAD,CAAd;AAUH,GAhBM,EAgBJzhE,IAhBI,CAgBC,YAAM;AACV,WAAO0hE,UAAP;AACH,GAlBM,CAAP;AAmBH;;AAED,SAASC,aAAT,CAAuBl7D,GAAvB,EAAqCu+B,MAArC,EAA2E48B,cAA3E,EAA2H;AAEvH13D,8CAAI,kCAAJ;AAEAzD,KAAG,GAAGA,GAAG,IAAInC,wBAAM,CAACmC,GAApB;AAEA,MAAMo6D,QAAQ,GAAG77B,MAAM,CAACv+B,GAAD,CAAvB;;AAEA,MAAI,CAACo6D,QAAL,EAAe;AACX,UAAM,IAAIxhE,KAAJ,mCAA2CoH,GAA3C,CAAN;AACH;;AAVsH,MAYjHojC,OAZiH,GAYzE+3B,cAZyE,CAYjH/3B,OAZiH;AAAA,MAYxGwB,UAZwG,GAYzEu2B,cAZyE,CAYxGv2B,UAZwG;AAAA,MAY5FxtB,IAZ4F,GAYzE+jD,cAZyE,CAY5F/jD,IAZ4F;AAAA,MAYtFX,QAZsF,GAYzE0kD,cAZyE,CAYtF1kD,QAZsF;;AAcvH,MAAI,CAAC2sB,OAAL,EAAc;AACV,UAAM,IAAIxqC,KAAJ,yCAAN;AACH;;AAED,MAAIshE,SAAS,CAACgB,aAAV,IAA2B,CAAChB,SAAS,CAACgB,aAAV,CAAwBz8D,MAAxB,CAA+BkvB,MAA/D,EAAuE;AACnE,WAAOusC,SAAS,CAACgB,aAAV,CAAwBl7D,GAAxB,EAA6Bu+B,MAA7B,EAAqC;AAAE6E,aAAO,EAAPA,OAAF;AAAWwB,gBAAU,EAAVA,UAAX;AAAuBxtB,UAAI,EAAJA,IAAvB;AAA6BX,cAAQ,EAARA;AAA7B,KAArC,CAAP;AACH;;AAED2sB,SAAO,GAAG,2CAAKA,OAAR,CAAP;AACAA,SAAO,CAACgC,MAAR,GAAiBhC,OAAO,CAACgC,MAAR,IAAkB,MAAnC;AACAhC,SAAO,CAACg4B,aAAR,GAAwBh4B,OAAO,CAACg4B,aAAR,IAAyB,EAAjD;AACAh4B,SAAO,CAACg4B,aAAR,CAAsBC,UAAtB,GAAmCj4B,OAAO,CAACg4B,aAAR,CAAsBC,UAAtB,IAAoCP,mBAAmB,EAA1F;AACA13B,SAAO,CAACg4B,aAAR,CAAsBE,UAAtB,GAAmCl4B,OAAO,CAACg4B,aAAR,CAAsBE,UAAtB,IAAoCR,mBAAmB,EAA1F;AACA13B,SAAO,CAACv5B,KAAR,GAAgBu5B,OAAO,CAACv5B,KAAR,IAAiB,EAAjC;AACAu5B,SAAO,CAACv5B,KAAR,CAAc0xD,cAAd,GAA+Bn4B,OAAO,CAACv5B,KAAR,CAAc0xD,cAAd,IAAgC,QAA/D;AAEA,SAAOpB,iBAAiB,CAACn6D,GAAD,EAAMu+B,MAAN,CAAjB,CAA+BhlC,IAA/B,CAAoC,UAACwsC,WAAD,EAAwC;AAE/E,WAAOhrC,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAE1B,UAAIsoC,UAAJ,EAAgB;AACZ,eAAO7pC,yCAAY,CAACL,OAAb,CAAqB8/D,uBAAuB,CAACx6D,GAAD,EAAMu+B,MAAN,EAAcqG,UAAd,CAA5C,CAAP;AACH;AAEJ,KANM,EAMJrrC,IANI,CAMC,UAACiiE,YAAD,EAAyC;AAE7C,aAAOzgE,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAE1B,YAAIma,QAAJ,EAAc;AACV,iBAAO1b,yCAAY,CAACL,OAAb,CAAqBqgE,cAAc,CAAC/6D,GAAD,EAAMu+B,MAAN,EAAc9nB,QAAQ,CAACiJ,EAAvB,EAA2BjJ,QAAQ,CAACnY,IAApC,CAAnC,CAAP;AACH;AAEJ,OANM,EAMJ/E,IANI,CAMC,UAAC0hE,UAAD,EAAuC;AAE3C,YAAIO,YAAJ,EAAkB;AACdp4B,iBAAO,CAACq4B,qBAAR,GAAgCD,YAAhC;AACH;;AAED,YAAMx1D,OAAgB,GAAG;AACrBs0D,uBAAa,cAAav0B;AADL,SAAzB;;AAIA,YAAIk1B,UAAJ,EAAgB;AACZj1D,iBAAO,CAAC,2BAAD,CAAP,GAAuCi1D,UAAvC;AACH;;AAED,YAAI7jD,IAAI,IAAIA,IAAI,CAACskD,sBAAjB,EAAyC;AACrC11D,iBAAO,CAAC,+BAAD,CAAP,GAA2CoR,IAAI,CAACskD,sBAAhD;AACH;;AAED,eAAO51D,8BAAO,CAAC;AACX3I,gBAAM,QADK;AAEX4I,aAAG,EAAKlI,wBAAM,CAAC0U,cAAP,CAAsBvS,GAAtB,CAFG;AAGXgG,iBAAO,EAAPA,OAHW;AAIXC,cAAI,EAAIm9B;AAJG,SAAD,CAAd;AAMH,OA9BM,CAAP;AA+BH,KAvCM,CAAP;AAyCH,GA3CM,EA2CJ7pC,IA3CI,CA2CC,UAACiC,GAAD,EAAkB;AAEtBm/D,sBAAkB,CAACn/D,GAAD,CAAlB;;AAEA,QAAIA,GAAG,IAAIA,GAAG,CAACkkB,EAAf,EAAmB;AACf,aAAOlkB,GAAG,CAACkkB,EAAX;AACH;;AAED,UAAM,IAAI9mB,KAAJ,qCAA6CoL,IAAI,CAACC,SAAL,CAAezI,GAAf,EAAoB,IAApB,EAA0B,CAA1B,CAA7C,CAAN;AAEH,GArDM,CAAP;AAsDH;;AAED,SAASmgE,WAAT,CAAqB37D,GAArB,EAAmCu+B,MAAnC,EAAyE48B,cAAzE,EAAyH;AAErH13D,8CAAI,+BAAJ;AAEAzD,KAAG,GAAGA,GAAG,IAAInC,wBAAM,CAACmC,GAApB;AAEA,MAAMo6D,QAAQ,GAAG77B,MAAM,CAACv+B,GAAD,CAAvB;;AAEA,MAAI,CAACo6D,QAAL,EAAe;AACX,UAAM,IAAIxhE,KAAJ,mCAA2CoH,GAA3C,CAAN;AACH;;AAVoH,MAY/Gi5B,KAZ+G,GAY/FkiC,cAZ+F,CAY/GliC,KAZ+G;AAAA,MAYxG7hB,IAZwG,GAY/F+jD,cAZ+F,CAYxG/jD,IAZwG;;AAcrH,MAAI,CAAC6hB,KAAL,EAAY;AACR,UAAM,IAAIrgC,KAAJ,uCAAN;AACH;;AAED,MAAIshE,SAAS,CAACyB,WAAV,IAAyB,CAACzB,SAAS,CAACyB,WAAV,CAAsBl9D,MAAtB,CAA6BkvB,MAA3D,EAAmE;AAC/D,WAAOusC,SAAS,CAACyB,WAAV,CAAsB37D,GAAtB,EAA2Bu+B,MAA3B,EAAmC;AAAEtF,WAAK,EAALA,KAAF;AAAS7hB,UAAI,EAAJA;AAAT,KAAnC,CAAP;AACH;;AAED6hB,OAAK,GAAG,2CAAKA,KAAR,CAAL;AACAA,OAAK,CAACmM,MAAN,GAAenM,KAAK,CAACmM,MAAN,IAAgB,SAA/B;AACAnM,OAAK,CAAC8wB,mBAAN,GAA4B9wB,KAAK,CAAC8wB,mBAAN,IAA6B,EAAzD;AACA9wB,OAAK,CAAC8wB,mBAAN,CAA0BsR,UAA1B,GAAuCpiC,KAAK,CAAC8wB,mBAAN,CAA0BsR,UAA1B,IAAwCP,mBAAmB,EAAlG;AACA7hC,OAAK,CAAC8wB,mBAAN,CAA0BuR,UAA1B,GAAuCriC,KAAK,CAAC8wB,mBAAN,CAA0BuR,UAA1B,IAAwCR,mBAAmB,EAAlG;AACA7hC,OAAK,CAAC2iC,cAAN,GAAuB3iC,KAAK,CAAC2iC,cAAN,IAAwB,EAA/C;AACA3iC,OAAK,CAAC2iC,cAAN,CAAqB,CAArB,IAA0B3iC,KAAK,CAAC2iC,cAAN,CAAqB,CAArB,KAA2B,EAArD;AACA3iC,OAAK,CAAC2iC,cAAN,CAAqB1iD,OAArB,CAA6B,UAAA2iD,IAAI,EAAI;AACjCA,QAAI,CAACC,YAAL,GAAoBD,IAAI,CAACC,YAAL,IAAqB7zD,IAAI,CAACE,MAAL,GAAcvR,QAAd,EAAzC;AACH,GAFD;AAIA,SAAOujE,iBAAiB,CAACn6D,GAAD,EAAMu+B,MAAN,CAAjB,CAA+BhlC,IAA/B,CAAoC,UAACwsC,WAAD,EAAwC;AAE/E,QAAM//B,OAAgB,GAAG;AACrBs0D,mBAAa,cAAav0B;AADL,KAAzB;;AAIA,QAAI3uB,IAAI,IAAIA,IAAI,CAACskD,sBAAjB,EAAyC;AACrC11D,aAAO,CAAC,+BAAD,CAAP,GAA2CoR,IAAI,CAACskD,sBAAhD;AACH;;AAED,WAAO51D,8BAAO,CAAC;AACX3I,YAAM,QADK;AAEX4I,SAAG,EAAKlI,wBAAM,CAAC2U,YAAP,CAAoBxS,GAApB,CAFG;AAGXgG,aAAO,EAAPA,OAHW;AAIXC,UAAI,EAAIgzB;AAJG,KAAD,CAAd;AAOH,GAjBM,EAiBJ1/B,IAjBI,CAiBC,UAACiC,GAAD,EAAkB;AAEtBm/D,sBAAkB,CAACn/D,GAAD,CAAlB;;AAEA,QAAIA,GAAG,IAAIA,GAAG,CAACkkB,EAAf,EAAmB;AACf,aAAOlkB,GAAG,CAACkkB,EAAX;AACH;;AAED,UAAM,IAAI9mB,KAAJ,qCAA6CoL,IAAI,CAACC,SAAL,CAAezI,GAAf,EAAoB,IAApB,EAA0B,CAA1B,CAA7C,CAAN;AACH,GA1BM,CAAP;AA2BH;;AAEM,SAASugE,sBAAT,CAAgC/7D,GAAhC,EAA8Cu+B,MAA9C,EAAoFy9B,cAApF,EAA6GvB,iBAA7G,EAAkK;AAErKh3D,8CAAI,iCAAJ;AAEAzD,KAAG,GAAGA,GAAG,IAAInC,wBAAM,CAACmC,GAApB;AAEA,MAAMo6D,QAAQ,GAAG77B,MAAM,CAACv+B,GAAD,CAAvB;;AAEA,MAAI,CAACo6D,QAAL,EAAe;AACX,UAAM,IAAIxhE,KAAJ,mCAA2CoH,GAA3C,CAAN;AACH;;AAED,MAAIk6D,SAAS,CAAC6B,sBAAV,IAAoC,CAAC7B,SAAS,CAAC6B,sBAAV,CAAiCt9D,MAAjC,CAAwCkvB,MAAjF,EAAyF;AACrF,WAAOusC,SAAS,CAAC6B,sBAAV,CAAiC/7D,GAAjC,EAAsCu+B,MAAtC,EAA8Cy9B,cAA9C,EAA8DvB,iBAA9D,CAAP;AACH;;AAEDuB,gBAAc,GAAG,2CAAKA,cAAR,CAAd;AACAA,gBAAc,CAACC,IAAf,GAAsBD,cAAc,CAACC,IAAf,IAAuB,EAA7C;AACAD,gBAAc,CAACC,IAAf,CAAoBC,oBAApB,GAA2CF,cAAc,CAACC,IAAf,CAAoBC,oBAApB,IAA4C,EAAvF;AACAF,gBAAc,CAACC,IAAf,CAAoBC,oBAApB,CAAyCb,UAAzC,GAAsDW,cAAc,CAACC,IAAf,CAAoBC,oBAApB,CAAyCb,UAAzC,IAAuDP,mBAAmB,EAAhI;AACAkB,gBAAc,CAACC,IAAf,CAAoBC,oBAApB,CAAyCZ,UAAzC,GAAsDU,cAAc,CAACC,IAAf,CAAoBC,oBAApB,CAAyCZ,UAAzC,IAAuDR,mBAAmB,EAAhI;AACAkB,gBAAc,CAACnyD,KAAf,GAAuBmyD,cAAc,CAACnyD,KAAf,IAAwB,EAA/C;AACAmyD,gBAAc,CAACnyD,KAAf,CAAqB0xD,cAArB,GAAsCS,cAAc,CAACnyD,KAAf,CAAqB0xD,cAArB,IAAuC,QAA7E;AAGA,SAAOpB,iBAAiB,CAACn6D,GAAD,EAAMu+B,MAAN,CAAjB,CAA+BhlC,IAA/B,CAAoC,UAACwsC,WAAD,EAAwC;AAE/E,WAAOhrC,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAE1B,UAAIm+D,iBAAJ,EAAuB;AACnB,eAAO1/D,yCAAY,CAACL,OAAb,CAAqB8/D,uBAAuB,CAACx6D,GAAD,EAAMu+B,MAAN,EAAck8B,iBAAd,CAA5C,CAAP;AACH;AAEJ,KANM,EAMJlhE,IANI,CAMC,UAACiiE,YAAD,EAAyC;AAE7C,UAAIA,YAAJ,EAAkB;AACdQ,sBAAc,CAACP,qBAAf,GAAuCD,YAAvC;AACH;;AAED,aAAO11D,8BAAO,CAAC;AACX3I,cAAM,QADK;AAEX4I,WAAG,EAAMlI,wBAAM,CAAC4U,cAAP,CAAsBzS,GAAtB,CAFE;AAGXgG,eAAO,EAAE;AACLs0D,uBAAa,cAAav0B;AADrB,SAHE;AAMX9/B,YAAI,EAAE+1D;AANK,OAAD,CAAd;AAQH,KApBM,CAAP;AAsBH,GAxBM,EAwBJziE,IAxBI,CAwBC,UAAAiC,GAAG,EAAI;AAEX,QAAIA,GAAG,IAAIA,GAAG,CAAC2gE,QAAf,EAAyB;AACrB,aAAO3gE,GAAG,CAAC2gE,QAAX;AACH;;AAED,UAAM,IAAIvjE,KAAJ,qCAA6CoL,IAAI,CAACC,SAAL,CAAezI,GAAf,EAAoB,IAApB,EAA0B,CAA1B,CAA7C,CAAN;AACH,GA/BM,CAAP;AAgCH;AAEM,IAAM4gE,IAAI,GAAG;AAChBh5B,SAAO,EAAE;AACLH,UAAM,EAAGi4B;AADJ,GADO;AAIhBjiC,OAAK,EAAE;AACHgK,UAAM,EAAG04B;AADN,GAJS;AAOhBU,kBAAgB,EAAE;AACdp5B,UAAM,EAAE84B;AADM,GAPF;AAUhBn3B,YAAU,EAAE;AACR3B,UAAM,EAAEu3B;AADA;AAVI,CAAb;AAeP,IAAM8B,UAAU,eAAhB;AACA,IAAMC,SAAS,GAAG/tC,qDAAW,EAA7B;AAEArwB,4BAAE,CAACm+D,UAAD,EAAa;AAAEl+D,QAAM,EAAEP,wBAAM,CAACQ;AAAjB,CAAb,EAAqD,gBAAc;AAAA,MAAXC,IAAW,QAAXA,IAAW;AACjE47D,WAAS,GAAG57D,IAAZ;AACH,CAFC,CAAF;;AAIA,IAAIi+D,SAAS,IAAI/8D,qCAAc,EAA3B,IAAiC,CAACzB,sDAAY,CAACw+D,SAAD,CAAlD,EAA+D;AAC3Dv+D,gCAAI,CAACu+D,SAAD,EAAYD,UAAZ,EAAwB;AAAEnC,qBAAiB,EAAjBA,iBAAF;AAAqBK,2BAAuB,EAAvBA,uBAArB;AAA8CU,iBAAa,EAAbA,aAA9C;AAA6Da,0BAAsB,EAAtBA,sBAA7D;AAAqFJ,eAAW,EAAXA;AAArF,GAAxB,CAAJ,CACKx/D,KADL,CACW,YAAM,CACT;AACH,GAHL;AAIH,C;;;;AC1ZD;AAEA;AACA;AAEO,IAAMqgE,mBAAmB,GAAG5+C,mCAAY,EAAxC;;AAEP,SAAS9Z,GAAT,CAAa2sC,UAAb,EAAkC5nC,SAAlC,EAAsDtJ,KAAtD,EAAuEoB,KAAvE,EAAuF;AAEnFwL,wCAAe,CAAC,UAAAC,OAAO,EAAI;AAEvB,QAAI2K,KAAK,GAAc05B,UAAd,SAA8B5nC,SAA9B,SAA6ClI,KAAtD;AACA,QAAM87D,YAAY,GAAGrwD,OAAO,CAACswD,sBAAR,GAAiCtwD,OAAO,CAACswD,sBAAR,IAAkC,EAAxF;AACA,QAAMC,SAAS,GAAMF,YAAY,CAAC5iE,OAAb,CAAqBkd,KAArB,MAAgC,CAAC,CAAtD;;AAEA,QAAI4lD,SAAJ,EAAe;AACXl5D,kDAAI,gBAAesT,KAAf,CAAJ;AAEH,KAHD,MAGO;AAAA;;AACHtT,kDAAI,CAACsT,KAAD,CAAJ;AACA0lD,kBAAY,CAAC3iE,IAAb,CAAkBid,KAAlB;AAEA,UAAM6lD,IAAI,GAAGzjE,MAAM,CAACgK,SAAP,IAAoBhK,MAAM,CAACgK,SAAP,CAAiBZ,SAArC,IAAkDpJ,MAAM,CAACgK,SAAP,CAAiBZ,SAAjB,CAA2B/J,KAA3B,CAAiC,gBAAjC,CAA/D;;AAEA,UAAIokE,IAAJ,EAAU;AACN7lD,aAAK,GAAGtT,4CAAI,CAAKm5D,IAAI,CAAC,CAAD,CAAJ,CAAQ/2D,WAAR,GAAsBhP,OAAtB,CAA8B,GAA9B,EAAmC,GAAnC,CAAL,SAAkDkgB,KAAlD,CAAZ;AACH;;AAEDvN,mDAAK,sBACC/jB,yBAAI,CAACC,GAAL,CAASE,KADV,IAC6BH,yBAAI,CAACG,KAAL,CAAWtH,QADxC,SAECmH,yBAAI,CAACC,GAAL,CAASG,UAFV,IAE6B8a,KAF7B,SAGClb,yBAAI,CAACC,GAAL,CAASiB,eAHV,IAG6B8pD,UAH7B,SAIChrD,yBAAI,CAACC,GAAL,CAASkB,cAJV,IAI6BiiB,SAJ7B,SAKCpjB,yBAAI,CAACC,GAAL,CAASO,KALV,IAK6BsZ,KAL7B,SAMC9Z,yBAAI,CAACC,GAAL,CAASQ,UANV,IAM6BqZ,KAN7B,SAOC9Z,yBAAI,CAACC,GAAL,CAASS,YAPV,IAO6BoZ,KAAK,GAAG9Z,yBAAI,CAACU,YAAL,CAAkBtB,iCAAY,CAACC,QAA/B,CAAH,GAA8CW,yBAAI,CAACU,YAAL,CAAkBwB,iBAPlG,UAAL;AAUAsvB,4DAAc;AACjB;AACJ,GA/Bc,CAAf;AAgCH;;AAEM,SAAS4lD,sBAAT,OAAwJ;AAAA,MAAtHpsB,UAAsH,QAAtHA,UAAsH;AAAA,MAA1G5nC,SAA0G,QAA1GA,SAA0G;AAAA,MAA/FlI,KAA+F,QAA/FA,KAA+F;AAAA,MAAxFpB,KAAwF,QAAxFA,KAAwF;;AAE3J,MAAI,CAACkxC,UAAD,IAAe,CAAC5nC,SAApB,EAA+B;AAC3B;AACH;;AAEDsD,wCAAe,CAAC,UAAAC,OAAO,EAAI;AACvBA,WAAO,CAAC0wD,kBAAR,GAAsCrsB,UAAtC;AACArkC,WAAO,CAAC2wD,2BAAR,GAAsCl0D,SAAtC;;AAEA,QAAItJ,KAAJ,EAAW;AACP6M,aAAO,CAAC4wD,uBAAR,GAAkCz9D,KAAlC;AACH;AACJ,GAPc,CAAf;AASAuE,KAAG,CAAC2sC,UAAD,EAAa5nC,SAAb,EAAwBtJ,KAAxB,EAA+BoB,KAA/B,CAAH;AACH;;AAED,SAASs8D,SAAT,CAAmB19D,KAAnB,EAAmC;AAAA,yBAM3B4M,sCAAe,CAAC,UAAAC,OAAO;AAAA,WAAIA,OAAJ;AAAA,GAAR,CANY;AAAA,MAG3B0wD,kBAH2B,oBAG3BA,kBAH2B;AAAA,MAI3BC,2BAJ2B,oBAI3BA,2BAJ2B;AAAA,MAK3BC,uBAL2B,oBAK3BA,uBAL2B;;AAQ/B,MAAIF,kBAAkB,IAAIC,2BAAtB,IAAqDC,uBAAuB,KAAKz9D,KAArF,EAA4F;AACxFuE,OAAG,CAACg5D,kBAAD,EAAqBC,2BAArB,EAAkDx9D,KAAlD,aAAH;AACH,GAFD,MAEO;AACHkE,gDAAI,wBAAwB;AACxBlE,WAAK,EAALA,KADwB;AAExBu9D,wBAAkB,EAAlBA,kBAFwB;AAGxBC,iCAA2B,EAA3BA,2BAHwB;AAIxBC,6BAAuB,EAAvBA;AAJwB,KAAxB,CAAJ;AAMH;AACJ;;AAED,IAAIjyD,uCAAgB,CAAC,eAAD,CAApB,EAAuC;AAEnCyxD,qBAAmB,CAACv9D,IAApB,CAAyB,iBAAsB;AAAA,QAAnB8B,YAAmB,SAAnBA,YAAmB;AAC3ChH,cAAU,CAAC,YAAM;AACbkjE,eAAS,CAACl8D,YAAD,CAAT;AACH,KAFS,EAEP,CAFO,CAAV;AAGH,GAJD;AAMA,MAAMm8D,WAAW,GAAGvzD,qCAAc,EAAlC;;AAEA,MAAIuzD,WAAJ,EAAiB;AACbnjE,cAAU,CAAC,YAAM;AACb,UAAImjE,WAAJ,EAAiB;AACbD,iBAAS,CAACC,WAAD,CAAT;AACH;AACJ,KAJS,EAIP,CAJO,CAAV;AAKH;AACJ,C;;;;;;;;AClGD;AACA;AACA;AAGA;AACA;AACA;AAEA;AAEA,IAAMC,MAAM,GAAG;AACXC,SAAO,EAAE,SADE;AAEXC,QAAM,EAAG;AAFE,CAAf;AAKA,IAAMC,WAAW,GAAG;AAChBC,mBAAiB,EAAE;AADH,CAApB;;AAQA,SAASC,eAAT,CAAyBC,WAAzB,EAA6D;AACzD,SAAO;AACHp2D,QADG,gBACEtB,GADF,EACuC;AACtC,aAAO,IAAIhL,yCAAJ,CAAiB,UAACL,OAAD,EAAUe,MAAV,EAAqB;AAEzCgiE,mBAAW,CAACC,UAAZ,GAAyB,UAAClkE,GAAD,EAAM7B,MAAN,EAAiB;AACtC,cAAI,CAACA,MAAL,EAAa;AACT,mBAAO8D,MAAM,CAAC,IAAI7C,KAAJ,CAAU,6CAAV,CAAD,CAAb;AACH;;AAED,iBAAOY,GAAG,GAAGiC,MAAM,CAACjC,GAAD,CAAT,GAAiBkB,OAAO,CAAC/C,MAAD,CAAlC;AACH,SAND;;AAQA8lE,mBAAW,CAACz3B,QAAZ,GAAuB,YAAM;AACzB,cAAMxsC,GAAG,GAAG,IAAIZ,KAAJ,CAAU0kE,WAAW,CAACC,iBAAtB,CAAZ,CADyB,CAEzB;;AACA/jE,aAAG,CAACojC,IAAJ,GAAW0gC,WAAW,CAACC,iBAAvB;AACA,iBAAO9hE,MAAM,CAACjC,GAAD,CAAb;AACH,SALD;;AAOAikE,mBAAW,CAACp2D,IAAZ,CAAiB0E,gCAAS,CAAChG,GAAD,EAAM;AAAE43D,sBAAY,EAAEF,WAAW,CAACG,kBAAZ;AAAhB,SAAN,CAA1B;AACH,OAlBM,CAAP;AAmBH;AArBE,GAAP;AAuBH;;AAED,SAASC,qBAAT,CAA+B7mE,KAA/B,EAAsC;AAClC,MAAI,CAACA,KAAK,CAACosC,OAAX,EAAoB;AAChB,UAAM,IAAIxqC,KAAJ,uCAAN;AACH;;AAED,MAAI,CAAC5B,KAAK,CAAC0qC,WAAX,EAAwB;AACpB,UAAM,IAAI9oC,KAAJ,2CAAN;AACH;;AAED,MAAI5B,KAAK,CAACgJ,GAAN,IAAa,CAACnC,wBAAM,CAAC+T,YAAP,CAAoB5a,KAAK,CAACgJ,GAA1B,CAAlB,EAAkD;AAC9C,UAAM,IAAIpH,KAAJ,yBAAiC5B,KAAK,CAACgJ,GAAvC,CAAN;AACH;AACJ;;AAED,SAAS89D,sBAAT,CAAgC9mE,KAAhC,EAAoI;AAChI,MAAMgJ,GAAG,GAAGhJ,KAAK,CAACgJ,GAAN,GAAYhJ,KAAK,CAACgJ,GAAN,IAAanC,wBAAM,CAACmC,GAA5C;AAEA,MAAMojC,OAAO,GAAGpsC,KAAK,CAACosC,OAAtB;AACA,MAAM1B,WAAW,GAAGziC,+BAAI,CAACjI,KAAK,CAAC0qC,WAAP,CAAxB;AACA,MAAMsE,QAAQ,GAAG/mC,+BAAI,CAACjI,KAAK,CAACgvC,QAAN,IAAkB/nC,uBAAnB,CAArB;AAEA,SAAO;AAAE+B,OAAG,EAAHA,GAAF;AAAOojC,WAAO,EAAPA,OAAP;AAAgB1B,eAAW,EAAXA,WAAhB;AAA6BsE,YAAQ,EAARA;AAA7B,GAAP;AACH;;AAED,SAASka,MAAT,CAAgBlpD,KAAhB,EAAsJ;AAAA,8BAEzH8mE,sBAAsB,CAAC9mE,KAAD,CAFmG;AAAA,MAE1IgJ,GAF0I,yBAE1IA,GAF0I;AAAA,MAErIojC,OAFqI,yBAErIA,OAFqI;;AAIlJ,SAAOroC,yCAAY,CAACuB,GAAb,CAAiB8mC,OAAjB,EAA0B;AAAEpsC,SAAK,EAALA;AAAF,GAA1B,EAAqCuC,IAArC,CAA0C,UAAAgG,KAAK,EAAI;AAAA;;AACtD,QAAI,CAACA,KAAL,EAAY;AACR,YAAM,IAAI3G,KAAJ,0DAAN;AACH;;AAED,WAAOmT,gCAAS,CAACs3B,qDAAY,CAACrjC,GAAD,EAAMle,4BAAO,CAACzD,MAAd,EAAsBkhB,KAAtB,CAAb,+BACX+kC,oEAA2B,CAAC/kC,KAAD,CADhB,IAC0BA,KAD1B,aAGZw+D,UAHY,GAGA/mE,KAAK,CAAC2tC,MAAN,GAAe,QAAf,GAA0B,EAH1B,aAIZq5B,SAJY,GAIA,GAJA,cAAhB;AAMH,GAXM,CAAP;AAYH;;AAED,SAASC,oBAAT,CAA8Bl7C,KAA9B,EAAuD;AAEnD,MAAMzkB,IAAa,GAAG;AAClByC,gBAAY,EAAEgiB,KAAK,CAACxjB,KADF;AAElB8iC,gBAAY,EAAEtf,KAAK,CAACm7C,QAFF;AAGlB37B,aAAS,EAAKxf,KAAK,CAACo7C,SAHF;AAIlB77B,WAAO,EAAOvf,KAAK,CAACq7C,OAJF;AAKlBh5B,UAAM,EAAQriB,KAAK,CAACqiB;AALF,GAAtB;AAFmD,MAU3Ci5B,MAV2C,GAURt7C,KAVQ,CAU3Cs7C,MAV2C;AAAA,MAUnCC,UAVmC,GAURv7C,KAVQ,CAUnCu7C,UAVmC;AAAA,MAUvBC,UAVuB,GAURx7C,KAVQ,CAUvBw7C,UAVuB;;AAYnD,MAAIF,MAAM,KAAKlB,MAAM,CAACC,OAAtB,EAA+B;AAC3B9+D,QAAI,CAAC8jC,SAAL,GAAiBk8B,UAAjB;AAEH,GAHD,MAGO,IAAID,MAAM,KAAKlB,MAAM,CAACE,MAAtB,EAA8B;AACjC/+D,QAAI,CAAC4nC,SAAL,GAAiBq4B,UAAjB;AACH;;AAED,SAAOjgE,IAAP;AACH;;AAED,SAASkgE,YAAT,CAAsBz7C,KAAtB,EAA+C;AAE3C,MAAMoiB,OAAgB,GAAG;AACrB5kB,SAAK,EAAWtiB,uBADK;AAErBonC,kBAAc,EAAEpnC,uBAAIA;AAFC,GAAzB;AAF2C,MAOnCogE,MAPmC,GAOAt7C,KAPA,CAOnCs7C,MAPmC;AAAA,MAO3BC,UAP2B,GAOAv7C,KAPA,CAO3Bu7C,UAP2B;AAAA,MAOfC,UAPe,GAOAx7C,KAPA,CAOfw7C,UAPe;;AAS3C,MAAIF,MAAM,KAAKlB,MAAM,CAACC,OAAtB,EAA+B;AAC3Bj4B,WAAO,CAACG,QAAR,GAAmB,UAAC5nC,GAAD,EAAuC+gE,WAAvC,EAAkG;AAAA,UAAjG/gE,GAAiG;AAAjGA,WAAiG,GAAnEvE,MAAmE;AAAA;;AAAA,UAA3DslE,WAA2D;AAA3DA,mBAA2D,GAApCH,UAAoC;AAAA;;AACjH,aAAOh5B,+BAAQ,CAAC5nC,GAAD,EAAM+gE,WAAN,CAAf;AACH,KAFD;AAIH,GALD,MAKO,IAAIJ,MAAM,KAAKlB,MAAM,CAACE,MAAtB,EAA8B;AACjCl4B,WAAO,CAACG,QAAR,GAAmB,UAAC5nC,GAAD,EAAuC+gE,WAAvC,EAAkG;AAAA,UAAjG/gE,GAAiG;AAAjGA,WAAiG,GAAnEvE,MAAmE;AAAA;;AAAA,UAA3DslE,WAA2D;AAA3DA,mBAA2D,GAApCF,UAAoC;AAAA;;AACjH,aAAOj5B,+BAAQ,CAAC5nC,GAAD,EAAM+gE,WAAN,CAAf;AACH,KAFD;AAGH;;AAED,SAAOt5B,OAAP;AACH;;AAED,SAASu5B,wBAAT,CAAkC1nE,KAAlC,EAAkDymE,WAAlD,EAAkG;AAC9F,SAAO1iE,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAE1BuhE,yBAAqB,CAAC7mE,KAAD,CAArB;AAEH,GAJM,EAIJuC,IAJI,CAIC,YAAM;AAEV,WAAO2mD,MAAM,CAAClpD,KAAD,CAAb;AAEH,GARM,EAQJuC,IARI,CAQC,UAAAwM,GAAG,EAAI;AAEX,WAAO03D,WAAW,CAACp2D,IAAZ,CAAiBtB,GAAjB,CAAP;AAEH,GAZM,EAYJxM,IAZI,CAYC,UAAAsH,OAAO,EAAI;AAAA,QAEPw9D,MAFO,GAEIx9D,OAAO,CAAC89D,UAFZ,CAEPN,MAFO;;AAAA,iCAGmBP,sBAAsB,CAAC9mE,KAAD,CAHzC;AAAA,QAGP0qC,WAHO,0BAGPA,WAHO;AAAA,QAGMsE,QAHN,0BAGMA,QAHN;;AAKf,QAAM1nC,IAAI,GAAM2/D,oBAAoB,CAACp9D,OAAO,CAAC89D,UAAT,CAApC;AACA,QAAMx5B,OAAO,GAAGq5B,YAAY,CAAC39D,OAAO,CAAC89D,UAAT,CAA5B;;AAEA,QAAIN,MAAM,KAAKlB,MAAM,CAACC,OAAtB,EAA+B;AAC3B,aAAO17B,WAAW,CAACpjC,IAAD,EAAO6mC,OAAP,CAAlB;AAEH,KAHD,MAGO,IAAIk5B,MAAM,KAAKlB,MAAM,CAACE,MAAtB,EAA8B;AACjC,aAAOr3B,QAAQ,CAAC1nC,IAAD,EAAO6mC,OAAP,CAAf;AAEH,KAHM,MAGA;AACH,YAAM,IAAIvsC,KAAJ,sBAA8BylE,MAA9B,CAAN;AACH;AAEJ,GA9BM,EA8BJliE,KA9BI,CA8BE,UAAA3C,GAAG,EAAI;AAEZ,QAAIA,GAAG,IAAIA,GAAG,CAACojC,IAAJ,KAAa0gC,WAAW,CAACC,iBAApC,EAAuD;AAAA,mCAC9BO,sBAAsB,CAAC9mE,KAAD,CADQ;AAAA,UAC3CgvC,QAD2C,0BAC3CA,QAD2C;;AAEnD,aAAOA,QAAQ,CAAC,EAAD,EAAK,EAAL,CAAf;AACH;;AAED,UAAMxsC,GAAN;AACH,GAtCM,CAAP;AAuCH;;AAEM,SAASolE,gBAAT,CAA0B1G,MAA1B,EAAuE;AAC1E,MAAIA,MAAM,CAACh0B,MAAP,IAAiBg0B,MAAM,CAACh0B,MAAP,CAAc06B,gBAAnC,EAAqD;AACjD,WAAO1G,MAAM,CAACh0B,MAAP,CAAc06B,gBAAd,EAAP;AACH;;AAED,SAAOxmC,+BAAQ,CAACj/B,MAAD,EAAS,aAAT,CAAR,CAAgCI,IAAhC,CAAqC,UAAAkkE,WAAW,EAAI;AACvD,WAAOD,eAAe,CAACC,WAAD,CAAtB;AACH,GAFM,CAAP;AAGH;AAEM,SAASoB,qBAAT,CAA+Br8B,QAA/B,EAAkD01B,MAAlD,EAAmE;AAEtE,MAAIuF,WAAJ;AAEAmB,kBAAgB,CAAC1G,MAAD,CAAhB,CAAyB3+D,IAAzB,CAA8B,UAAAqS,MAAM,EAAI;AACpC6xD,eAAW,GAAG7xD,MAAd;AACH,GAFD;;AAIA,WAASkzD,QAAT,CAAkB9nE,KAAlB,EAAyByhC,QAAzB,EAAwD;AACpD,QAAI,CAACglC,WAAL,EAAkB;AACd,aAAOhlC,QAAQ,EAAf;AACH;;AAED,WAAOimC,wBAAwB,CAAC1nE,KAAD,EAAQymE,WAAR,CAAxB,CACFthE,KADE,CACI,UAAA3C,GAAG,EAAI;AACV2B,mDAAK,uBAAuB;AAAE3B,WAAG,EAAEmkB,qCAAc,CAACnkB,GAAD;AAArB,OAAvB,CAAL;AACA,aAAOi/B,QAAQ,EAAf;AACH,KAJE,CAAP;AAKH;;AAED,MAAMkmB,MAAM,GAAGnc,QAAQ,CAACmc,MAAxB;;AACAnc,UAAQ,CAACmc,MAAT,GAAkB,SAASogB,iBAAT,CAA2B/nE,KAA3B,EAAgE;AAAA;AAAA;;AAC9E,WAAO8nE,QAAQ,CAAC9nE,KAAD,EAAQ;AAAA,aAAM2nD,MAAM,CAACrhD,KAAP,CAAa,KAAb,EAAmBoB,UAAnB,CAAN;AAAA,KAAR,CAAf;AACH,GAFD;;AAIA,MAAM8/C,QAAQ,GAAGhc,QAAQ,CAACgc,QAA1B;;AACAhc,UAAQ,CAACgc,QAAT,GAAoB,SAASwgB,mBAAT,CAA6BthE,GAA7B,EAA0D1G,KAA1D,EAA+F;AAAA;AAAA;;AAC/G,WAAO8nE,QAAQ,CAAC9nE,KAAD,EAAQ;AAAA,aAAMwnD,QAAQ,CAAClhD,KAAT,CAAe,MAAf,EAAqBoB,WAArB,CAAN;AAAA,KAAR,CAAf;AACH,GAFD;;AAIA,MAAMulD,aAAa,GAAGzhB,QAAQ,CAACyhB,aAA/B;;AACAzhB,UAAQ,CAACyhB,aAAT,GAAyB,SAASgb,wBAAT,CAAkCvhE,GAAlC,EAA+D1G,KAA/D,EAAoG;AAAA;AAAA;;AACzH,WAAO8nE,QAAQ,CAAC9nE,KAAD,EAAQ;AAAA,aAAMitD,aAAa,CAAC3mD,KAAd,CAAoB,MAApB,EAA0BoB,WAA1B,CAAN;AAAA,KAAR,CAAf;AACH,GAFD;AAGH,C;;;;AChOD;AAEA;AAEO,IAAMwgE,gBAAgB,GAAG,CAC5Bp9E,4BAAO,CAACzD,MADoB,EAE5ByD,4BAAO,CAAClD,KAFoB,EAG5BkD,4BAAO,CAACjD,IAHoB,EAI5BiD,4BAAO,CAACtD,MAJoB,EAK5BsD,4BAAO,CAACrD,IALoB,EAM5BqD,4BAAO,CAAChD,KANoB,EAO5BgD,4BAAO,CAAC/C,GAPoB,EAQ5B+C,4BAAO,CAAC9C,UARoB,EAS5B8C,4BAAO,CAAC7C,OAToB,EAU5B6C,4BAAO,CAAC3C,GAVoB,EAW5B2C,4BAAO,CAAC5C,MAXoB,EAY5B4C,4BAAO,CAAC1C,MAZoB,EAa5B0C,4BAAO,CAACtC,IAboB,EAc5BsC,4BAAO,CAACzC,GAdoB,EAe5ByC,4BAAO,CAACxC,IAfoB,EAgB5BwC,4BAAO,CAACvC,YAhBoB,EAiB5BuC,4BAAO,CAACrC,OAjBoB,EAkB5BqC,4BAAO,CAACpC,MAlBoB,EAmB5BoC,4BAAO,CAACnC,MAnBoB,EAoB5BmC,4BAAO,CAAClC,IApBoB,CAAzB;AAuBA,IAAMu/E,aAAa,GAAG,CACzBr9E,4BAAO,CAACzD,MADiB,EAEzByD,4BAAO,CAAClD,KAFiB,EAGzBkD,4BAAO,CAACjD,IAHiB,EAIzBiD,4BAAO,CAACtD,MAJiB,EAKzBsD,4BAAO,CAAChD,KALiB,EAMzBgD,4BAAO,CAAC/C,GANiB,EAOzB+C,4BAAO,CAAC9C,UAPiB,EAQzB8C,4BAAO,CAAC7C,OARiB,EASzB6C,4BAAO,CAAC3C,GATiB,EAUzB2C,4BAAO,CAAC5C,MAViB,EAWzB4C,4BAAO,CAAC1C,MAXiB,EAYzB0C,4BAAO,CAACtC,IAZiB,EAazBsC,4BAAO,CAACzC,GAbiB,EAczByC,4BAAO,CAACxC,IAdiB,EAezBwC,4BAAO,CAACvC,YAfiB,EAgBzBuC,4BAAO,CAACrC,OAhBiB,EAiBzBqC,4BAAO,CAACpC,MAjBiB,EAkBzBoC,4BAAO,CAACnC,MAlBiB,EAmBzBmC,4BAAO,CAAClC,IAnBiB,EAoBzBkC,4BAAO,CAACrD,IApBiB,CAAtB;AAuBA,IAAM2gF,cAAc,0CAErB97E,4BAFqB,IAEV;AACT+7E,SAAO,EAAE,IADA;AAGTC,YAAU,EAAK,IAHN;AAITC,aAAW,EAAI,IAJN;AAKTC,eAAa,EAAE,IALN;AAOTC,iBAAe,EAAE,IAPR;AAQTC,eAAa,EAAI,IARR;AAUTC,qBAAmB,EAAE;AAVZ,CAFU,kBAerB79E,4BAAO,CAACzD,MAfa,IAeH;AAChB0vB,SAAO,EAAE,IADO;AAGhBuxD,YAAU,EAAG,KAHG;AAIhBC,aAAW,EAAE,KAJG;AAMhBE,iBAAe,EAAE,IAND;AAOhBC,eAAa,EAAI;AAPD,CAfG,kBAyBrB59E,4BAAO,CAACrD,IAzBa,IAyBL;AACd;AACAsvB,SAAO,EAAG,OAAO6xD,mBAAP,KAA+B,WAA/B,GAA6C,IAA7C,GAAoDA,mBAAmB,CAACC,YAApB,CAAiCC,2BAAjC,CAA6DC,UAA7D,CAAwEC,eAFxH;AAIdP,iBAAe,EAAE,KAJH;AAKdC,eAAa,EAAI;AALH,CAzBK,kBAiCrB59E,4BAAO,CAAClD,KAjCa,IAiCJ;AACf2gF,aAAW,EAAO,IADH;AAEfU,kBAAgB,EAAE,CACdj3E,4BAAO,CAAC8L,EADM,CAFH;AAMf2qE,iBAAe,EAAE,IANF;AAOfC,eAAa,EAAI;AAPF,CAjCI,kBA0CrB59E,4BAAO,CAACjD,IA1Ca,IA0CL;AACd0gF,aAAW,EAAO,IADJ;AAEdU,kBAAgB,EAAE,CACdj3E,4BAAO,CAACyB,EADM,CAFJ;AAMdg1E,iBAAe,EAAE,IANH;AAOdC,eAAa,EAAI;AAPH,CA1CK,kBAoDrB59E,4BAAO,CAACtD,MApDa,IAoDH;AAChByhF,kBAAgB,EAAE,CACdj3E,4BAAO,CAAC8L,EADM,EAEd9L,4BAAO,CAACiE,EAFM,EAGdjE,4BAAO,CAAC8C,EAHM,CADF;AAMhBo0E,0BAAwB,EAAE,CACtBl3E,4BAAO,CAAC8L,EADc,CANV;AAShBqrE,WAAS,EAAE,CACP76E,6BAAQ,CAACE,MADF,CATK;AAahBi6E,iBAAe,EAAE,IAbD;AAchBC,eAAa,EAAI,IAdD;AAehBF,eAAa,EAAI;AAfD,CApDG,kBAsErB19E,4BAAO,CAAChD,KAtEa,IAsEJ;AACfmhF,kBAAgB,EAAE,CACdj3E,4BAAO,CAACsI,EADM,CADH;AAKfmuE,iBAAe,EAAM,KALN;AAMfC,eAAa,EAAQ,IANN;AAOfC,qBAAmB,EAAE;AAPN,CAtEI,kBAgFrB79E,4BAAO,CAAC/C,GAhFa,IAgFN;AACbkhF,kBAAgB,EAAE,CACdj3E,4BAAO,CAAC8C,EADM,CADL;AAIbo0E,0BAAwB,EAAE,CACtBl3E,4BAAO,CAAC8C,EADc,CAJb;AAQb2zE,iBAAe,EAAE,KARJ;AASbC,eAAa,EAAI;AATJ,CAhFM,kBA4FrB59E,4BAAO,CAAC9C,UA5Fa,IA4FC;AACpBihF,kBAAgB,EAAE,CACdj3E,4BAAO,CAACgB,EADM,CADE;AAKpBy1E,iBAAe,EAAM,KALD;AAMpBC,eAAa,EAAQ,IAND;AAOpBC,qBAAmB,EAAE;AAPD,CA5FD,kBAsGrB79E,4BAAO,CAAC7C,OAtGa,IAsGF;AACjBghF,kBAAgB,EAAE,CACdj3E,4BAAO,CAAC8C,EADM,CADD;AAKjB2zE,iBAAe,EAAM,KALJ;AAMjBC,eAAa,EAAQ,IANJ;AAOjBC,qBAAmB,EAAE;AAPJ,CAtGE,kBAgHrB79E,4BAAO,CAAC5C,MAhHa,IAgHH;AAChB+gF,kBAAgB,EAAE,CACdj3E,4BAAO,CAAC8C,EADM,EAEd9C,4BAAO,CAACU,EAFM,EAGdV,4BAAO,CAACgB,EAHM,EAIdhB,4BAAO,CAACwD,EAJM,EAKdxD,4BAAO,CAACuF,EALM,EAMdvF,4BAAO,CAACsI,EANM,CADF;AAUhBmuE,iBAAe,EAAM,KAVL;AAWhBC,eAAa,EAAQ,IAXL;AAYhBC,qBAAmB,EAAE;AAZL,CAhHG,kBA+HrB79E,4BAAO,CAAC3C,GA/Ha,IA+HN;AACb8gF,kBAAgB,EAAE,CACdj3E,4BAAO,CAACU,EADM,CADL;AAKb+1E,iBAAe,EAAM,KALR;AAMbC,eAAa,EAAQ,IANR;AAObC,qBAAmB,EAAE;AAPR,CA/HM,kBAyIrB79E,4BAAO,CAAC1C,MAzIa,IAyIH;AAChB6gF,kBAAgB,EAAE,CACdj3E,4BAAO,CAACuF,EADM,CADF;AAKhBkxE,iBAAe,EAAM,KALL;AAMhBC,eAAa,EAAQ,IANL;AAOhBC,qBAAmB,EAAE;AAPL,CAzIG,kBAkJrB79E,4BAAO,CAACzC,GAlJa,IAkJN;AACb4gF,kBAAgB,EAAE,CACdj3E,4BAAO,CAACkJ,EADM,CADL;AAKbutE,iBAAe,EAAM,KALR;AAMbC,eAAa,EAAQ,IANR;AAObC,qBAAmB,EAAE;AAPR,CAlJM,kBA2JrB79E,4BAAO,CAACxC,IA3Ja,IA2JL;AACd2gF,kBAAgB,EAAE,CACdj3E,4BAAO,CAAC6C,EADM,CADJ;AAKd4zE,iBAAe,EAAM,KALP;AAMdC,eAAa,EAAQ,IANP;AAOdC,qBAAmB,EAAE;AAPP,CA3JK,kBAoKrB79E,4BAAO,CAACvC,YApKa,IAoKG;AACtB0gF,kBAAgB,EAAE,CACdj3E,4BAAO,CAAC0D,EADM,CADI;AAKtB+yE,iBAAe,EAAM,KALC;AAMtBC,eAAa,EAAQ,IANC;AAOtBC,qBAAmB,EAAE;AAPC,CApKH,kBA6KrB79E,4BAAO,CAACtC,IA7Ka,IA6KL;AACdygF,kBAAgB,EAAE,CACdj3E,4BAAO,CAACkJ,EADM,CADJ;AAKdutE,iBAAe,EAAM,KALP;AAMdC,eAAa,EAAQ,IANP;AAOdC,qBAAmB,EAAE;AAPP,CA7KK,kBAsLrB79E,4BAAO,CAACrC,OAtLa,IAsLF;AACjBwgF,kBAAgB,EAAE,CACdj3E,4BAAO,CAAC8C,EADM,EAEd9C,4BAAO,CAACgD,EAFM,EAGdhD,4BAAO,CAACqD,EAHM,EAIdrD,4BAAO,CAACwD,EAJM,EAKdxD,4BAAO,CAAC0D,EALM,EAMd1D,4BAAO,CAACiE,EANM,EAOdjE,4BAAO,CAACuF,EAPM,EAQdvF,4BAAO,CAACyH,EARM,EASdzH,4BAAO,CAACsI,EATM,EAUdtI,4BAAO,CAACuI,EAVM,EAWdvI,4BAAO,CAACiK,EAXM,CADD;AAejBwsE,iBAAe,EAAM,KAfJ;AAgBjBC,eAAa,EAAQ,IAhBJ;AAiBjBC,qBAAmB,EAAE;AAjBJ,CAtLE,kBAyMrB79E,4BAAO,CAACpC,MAzMa,IAyMH;AAChBugF,kBAAgB,EAAE,CACdj3E,4BAAO,CAAC0G,EADM,CADF;AAKhB0wE,aAAW,EAAE,CACTx8E,wBAAG,CAACC,KADK,EAETD,wBAAG,CAACE,KAFK,EAGTF,wBAAG,CAACK,IAHK,CALG;AAWhBw7E,iBAAe,EAAM,KAXL;AAYhBC,eAAa,EAAQ,IAZL;AAahBC,qBAAmB,EAAE;AAbL,CAzMG,kBAwNrB79E,4BAAO,CAACnC,MAxNa,IAwNH;AAChBsgF,kBAAgB,EAAE,CACdj3E,4BAAO,CAACyB,EADM,CADF;AAKhB21E,aAAW,EAAE,CACTx8E,wBAAG,CAACC,KADK,EAETD,wBAAG,CAACE,KAFK,EAGTF,wBAAG,CAACK,IAHK,CALG;AAWhBw7E,iBAAe,EAAM,KAXL;AAYhBC,eAAa,EAAQ,IAZL;AAahBC,qBAAmB,EAAE;AAbL,CAxNG,kBAuOrB79E,4BAAO,CAAClC,IAvOa,IAuOL;AACdqgF,kBAAgB,EAAE,CACdj3E,4BAAO,CAAC6H,EADM,CADJ;AAKduvE,aAAW,EAAE,CACTx8E,wBAAG,CAACC,KADK,EAETD,wBAAG,CAACE,KAFK,EAGTF,wBAAG,CAACK,IAHK,CALC;AAWdw7E,iBAAe,EAAM,KAXP;AAYdC,eAAa,EAAQ,IAZP;AAadC,qBAAmB,EAAE;AAbP,CAvOK,kBAsPrB79E,4BAAO,CAACC,OAtPa,IAsPF;AACjBk+E,kBAAgB,EAAE,EADD;AAGjBR,iBAAe,EAAM,KAHJ;AAIjBC,eAAa,EAAQ,KAJJ;AAKjBC,qBAAmB,EAAE;AALJ,CAtPE,kBAApB;AA+PA,IAAMU,WAAW,oCAElB/8E,4BAFkB,IAEP;AACTg9E,UAAQ,EAAE,CACN7hF,yBAAI,CAACuD,IADC,EAENvD,yBAAI,CAACwD,UAFC,EAGNxD,yBAAI,CAACyD,IAHC;AADD,CAFO,eAUlB8G,4BAAO,CAACiE,EAVU,IAUJ;AACZqzE,UAAQ,EAAE,CACN7hF,yBAAI,CAACuD,IADC,EAENvD,yBAAI,CAACwD,UAFC,EAGNxD,yBAAI,CAACyD,IAHC,EAINzD,yBAAI,CAAC0D,QAJC,EAKN1D,yBAAI,CAAC4D,OALC;AADE,CAVI,eAoBlB2G,4BAAO,CAAC8L,EApBU,IAoBJ;AACZwrE,UAAQ,EAAE,CACN7hF,yBAAI,CAACuD,IADC,EAENvD,yBAAI,CAACwD,UAFC,EAGNxD,yBAAI,CAACyD,IAHC,EAINzD,yBAAI,CAAC0D,QAJC;AADE,CApBI,eA6BlB6G,4BAAO,CAACyB,EA7BU,IA6BJ;AACZ61E,UAAQ,EAAE,CACN7hF,yBAAI,CAACuD,IADC,EAENvD,yBAAI,CAACwD,UAFC,EAGNxD,yBAAI,CAACyD,IAHC,EAINzD,yBAAI,CAAC6D,KAJC,EAKN7D,yBAAI,CAAC8D,GALC;AADE,CA7BI,eAuClByG,4BAAO,CAAC0F,EAvCU,IAuCJ;AACZ4xE,UAAQ,EAAE,CACN7hF,yBAAI,CAACuD,IADC,EAENvD,yBAAI,CAACwD,UAFC,EAGNxD,yBAAI,CAACyD,IAHC,EAINzD,yBAAI,CAAC+D,GAJC;AADE,CAvCI,eAgDlBwG,4BAAO,CAACwC,EAhDU,IAgDJ;AACZ80E,UAAQ,EAAE,CACN7hF,yBAAI,CAACuD,IADC,EAENvD,yBAAI,CAACwD,UAFC,EAGNxD,yBAAI,CAACyD,IAHC,EAINzD,yBAAI,CAACgE,GAJC;AADE,CAhDI,eAAjB;;AA0DP,SAAS89E,SAAT,CAA8B7mD,IAA9B,EAA6C8mD,QAA7C,EAAgEjpE,GAAhE,EAA8EyT,GAA9E,EAA4F;AACxF,MAAMy1D,cAAc,GAAG/mD,IAAI,CAAC8mD,QAAD,CAA3B;;AAEA,MAAIC,cAAc,IAAIA,cAAc,CAACr9D,cAAf,CAA8B7L,GAA9B,CAAtB,EAA0D;AACtD,WAAOkpE,cAAc,CAAClpE,GAAD,CAArB;AACH;;AAED,MAAImiB,IAAI,CAACp2B,4BAAD,CAAJ,IAAiBo2B,IAAI,CAACp2B,4BAAD,CAAJ,CAAc8f,cAAd,CAA6B7L,GAA7B,CAArB,EAAwD;AACpD,WAAOmiB,IAAI,CAACp2B,4BAAD,CAAJ,CAAciU,GAAd,CAAP;AACH;;AAED,MAAImH,SAAS,CAACxE,MAAV,IAAoB,CAAxB,EAA2B;AACvB;AACA,WAAO8Q,GAAP;AACH;;AAED,QAAM,IAAIpS,KAAJ,yBAAiC4nE,QAAjC,SAA+CjpE,GAA/C,CAAN;AACH;;AAEM,SAASmpE,gBAAT,CAAqCjiE,MAArC,EAAsDlH,GAAtD,EAAoEyT,GAApE,EAAkF;AACrF,SAAOu1D,SAAS,CAACnB,cAAD,EAAiB3gE,MAAjB,EAAyBlH,GAAzB,EAA8ByT,GAA9B,CAAhB;AACH;AAEM,SAAS21D,aAAT,CAAkCliE,MAAlC,EAAmDlH,GAAnD,EAAiEyT,GAAjE,EAA+E;AAClF,SAAOu1D,SAAS,CAACF,WAAD,EAAc5hE,MAAd,EAAsBlH,GAAtB,EAA2ByT,GAA3B,CAAhB;AACH,C;;ACnYD;AAGA;AAEA,IAAM41D,yBAAyB,GAAG,EAAlC;AAEO,SAASC,mBAAT,CAA6BpiE,MAA7B,QAC8G;AAAA,MADvDyB,MACuD,QADvDA,MACuD;AAAA,MAD/C4gE,OAC+C,QAD/CA,OAC+C;AAAA,MADtCC,MACsC,QADtCA,MACsC;AAAA,MAD9Bp8B,MAC8B,QAD9BA,MAC8B;AAAA,MADtB3kC,GACsB,QADtBA,GACsB;AAEjH,MAAMghE,UAAU,GAAGD,MAAM,KAAK1/E,kCAAa,CAACE,QAA5C;AACA,MAAM0/E,cAAc,GAAGP,gBAAgB,CAACjiE,MAAD,EAASuiE,UAAU,GAAG,eAAH,GAAqB,iBAAxC,CAAvC;;AAEA,MAAI,CAACC,cAAL,EAAqB;AACjB,WAAOn+E,+CAA0B,CAACG,oBAAlC;AACH;;AAED,MAAI69E,OAAO,CAACI,UAAR,CAAmBrnE,OAAnB,CAA2B4E,MAA3B,MAAuC,CAAC,CAAxC,IAA6CiiE,gBAAgB,CAACjiE,MAAD,EAAS,aAAT,CAAjE,EAA0F;AACtF,WAAO3b,+CAA0B,CAACI,OAAlC;AACH;;AAED,MAAI49E,OAAO,CAACI,UAAR,CAAmBrnE,OAAnB,CAA2B4E,MAA3B,MAAuC,CAAC,CAAxC,IAA6CA,MAAM,KAAK3c,4BAAO,CAAClD,KAApE,EAA2E;AACvE,WAAOkE,+CAA0B,CAACI,OAAlC;AACH;;AACD,MAAI49E,OAAO,CAACI,UAAR,CAAmBrnE,OAAnB,CAA2B4E,MAA3B,MAAuC,CAAC,CAAxC,IAA6CA,MAAM,KAAK3c,4BAAO,CAACjD,IAApE,EAA0E;AACtE,WAAOiE,+CAA0B,CAACI,OAAlC;AACH;;AAED,MAAIw9E,gBAAgB,CAACjiE,MAAD,EAAS,kBAAT,EAA6B,CAAEyB,MAAM,CAACD,OAAT,CAA7B,CAAhB,CAAiEpG,OAAjE,CAAyEqG,MAAM,CAACD,OAAhF,MAA6F,CAAC,CAAlG,EAAqG;AACjG,WAAOnd,+CAA0B,CAACM,kBAAlC;AACH;;AAED,MAAIs9E,gBAAgB,CAACjiE,MAAD,EAAS,qBAAT,CAAhB,IAAmD,CAACkmC,MAAxD,EAAgE;AAC5D,WAAO7hD,+CAA0B,CAACW,cAAlC;AACH;;AAED,MAAM28E,WAAW,GAAGM,gBAAgB,CAACjiE,MAAD,EAAS,aAAT,CAApC;;AACA,MAAI2hE,WAAW,IAAIA,WAAW,CAACvmE,OAAZ,CAAoBmG,GAApB,MAA6B,CAAC,CAAjD,EAAoD;AAChD,WAAOld,+CAA0B,CAACY,WAAlC;AACH;AACJ;AAEM,SAASy9E,qBAAT,CAA+B1iE,MAA/B,SAC6E;AAAA,MADpByB,MACoB,SADpBA,MACoB;AAAA,MADZ4gE,OACY,SADZA,OACY;AAAA,MADHC,MACG,SADHA,MACG;AAEhF,MAAMC,UAAU,GAAGD,MAAM,KAAK1/E,kCAAa,CAACE,QAA5C;;AAEA,MAAIy/E,UAAU,IAAIN,gBAAgB,CAACjiE,MAAD,EAAS,0BAAT,EAAqC,EAArC,CAAhB,CAAyD5E,OAAzD,CAAiEqG,MAAM,CAACD,OAAxE,MAAqF,CAAC,CAAxG,EAA2G;AACvG,WAAOnd,+CAA0B,CAACO,eAAlC;AACH;;AAED,MAAIq9E,gBAAgB,CAACjiE,MAAD,EAAS,SAAT,CAApB,EAAyC;AACrC,WAAO3b,+CAA0B,CAACQ,OAAlC;AACH;;AAED,MAAIw9E,OAAO,CAACM,OAAR,CAAgBvnE,OAAhB,CAAwB4E,MAAxB,MAAoC,CAAC,CAArC,IAA0CiiE,gBAAgB,CAACjiE,MAAD,EAAS,YAAT,CAA9D,EAAsF;AAClF,WAAO3b,+CAA0B,CAACK,MAAlC;AACH;;AAED,MAAI29E,OAAO,CAACO,UAAR,CAAmBxnE,OAAnB,CAA2B4E,MAA3B,MAAuC,CAAC,CAAxC,IAA6CiiE,gBAAgB,CAACjiE,MAAD,EAAS,eAAT,CAAjE,EAA4F;AACxF,WAAO3b,+CAA0B,CAACS,UAAlC;AACH;AACJ;AAEM,SAAS+9E,iBAAT,CAA2B7iE,MAA3B,SACiK;AAAA,MAD5GyB,MAC4G,SAD5GA,MAC4G;AAAA,MADpG4gE,OACoG,SADpGA,OACoG;AAAA,MAD3F9gE,GAC2F,SAD3FA,GAC2F;AAAA,MADtF+gE,MACsF,SADtFA,MACsF;AAAA,MAD9ErJ,QAC8E,SAD9EA,QAC8E;AAAA,MADpE/yB,MACoE,SADpEA,MACoE;;AAEpK,MAAI+yB,QAAQ,IAAIj5D,MAAM,KAAKi5D,QAA3B,EAAqC;AACjC,WAAO;AAAE6J,cAAQ,EAAE,IAAZ;AAAkBj7B,YAAM,EAAExjD,+CAA0B,CAACC;AAArD,KAAP;AACH;;AAED,MAAI,CAAC29E,gBAAgB,CAACjiE,MAAD,EAAS,SAAT,CAArB,EAA0C;AACtC,QAAI,EAAEuB,GAAG,KAAKpc,wBAAG,CAACK,IAAZ,IAAoBy8E,gBAAgB,CAACjiE,MAAD,EAAS,MAAT,CAAtC,CAAJ,EAA6D;AACzD,aAAO;AAAE8iE,gBAAQ,EAAE,KAAZ;AAAmBj7B,cAAM,EAAExjD,+CAA0B,CAACE;AAAtD,OAAP;AACH;AACJ;;AAED,MAAMw+E,gBAAgB,GAAGX,mBAAmB,CAACpiE,MAAD,EAAS;AAAEyB,UAAM,EAANA,MAAF;AAAU4gE,WAAO,EAAPA,OAAV;AAAmBC,UAAM,EAANA,MAAnB;AAA2Bp8B,UAAM,EAANA,MAA3B;AAAmC3kC,OAAG,EAAHA;AAAnC,GAAT,CAA5C;;AAEA,MAAIwhE,gBAAJ,EAAsB;AAClB,WAAO;AAAED,cAAQ,EAAE,KAAZ;AAAmBj7B,YAAM,EAAEk7B;AAA3B,KAAP;AACH;;AAED,MAAMC,kBAAkB,GAAGN,qBAAqB,CAAC1iE,MAAD,EAAS;AAAEyB,UAAM,EAANA,MAAF;AAAU4gE,WAAO,EAAPA,OAAV;AAAmBC,UAAM,EAANA;AAAnB,GAAT,CAAhD;;AAEA,MAAIU,kBAAJ,EAAwB;AACpB,WAAO;AAAEF,cAAQ,EAAE,IAAZ;AAAkBj7B,YAAM,EAAEm7B;AAA1B,KAAP;AACH;;AAED,SAAO;AAAEF,YAAQ,EAAE,KAAZ;AAAmBj7B,UAAM,EAAExjD,+CAA0B,CAACU;AAAtD,GAAP;AACH;AAEM,SAASk+E,wBAAT,QAC2I;AAAA,MADvGZ,OACuG,SADvGA,OACuG;AAAA,MAD9FpJ,QAC8F,SAD9FA,QAC8F;AAAA,MADpFx3D,MACoF,SADpFA,MACoF;AAAA,MAD5EF,GAC4E,SAD5EA,GAC4E;AAAA,MADvE+gE,MACuE,SADvEA,MACuE;AAAA,MAD/Dp8B,MAC+D,SAD/DA,MAC+D;AAE9I,MAAMg9B,OAAO,GAAG,EAAhB;AAEA,MAAMC,eAAe,GAAG1C,gBAAgB,CAAC5nE,MAAjB,CAAwB,UAAAmH,MAAM,EAAI;AAAA,6BACzB6iE,iBAAiB,CAAC7iE,MAAD,EAAS;AAAEi5D,cAAQ,EAARA,QAAF;AAAYx3D,YAAM,EAANA,MAAZ;AAAoB4gE,aAAO,EAAPA,OAApB;AAA6B9gE,SAAG,EAAHA,GAA7B;AAAkC+gE,YAAM,EAANA,MAAlC;AAA0Cp8B,YAAM,EAANA;AAA1C,KAAT,CADQ;AAAA,QAC9C48B,QAD8C,sBAC9CA,QAD8C;AAAA,QACpCj7B,MADoC,sBACpCA,MADoC;;AAEtDq7B,WAAO,CAACljE,MAAD,CAAP,GAAkB;AAAE8iE,cAAQ,EAARA,QAAF;AAAYj7B,YAAM,EAANA,MAAZ;AAAoBu7B,aAAO,EAAE;AAAE7hE,WAAG,EAAHA,GAAF;AAAOE,cAAM,EAANA,MAAP;AAAe6gE,cAAM,EAANA;AAAf;AAA7B,KAAlB;AACA,WAAOQ,QAAP;AACH,GAJuB,CAAxB;AAMAX,2BAAyB,CAAC9mE,IAA1B,CAA+B6nE,OAA/B;AAEAC,iBAAe,CAACtnE,MAAhB,CAAuBsnE,eAAe,CAAC/nE,OAAhB,CAAwB69D,QAAxB,CAAvB,EAA0D,CAA1D;AACAkK,iBAAe,CAACE,OAAhB,CAAwBpK,QAAxB;AAEA,SAAOkK,eAAP;AACH;AAEM,SAASG,sBAAT,QACgE;AAAA,MAD9BjB,OAC8B,SAD9BA,OAC8B;AAAA,MADrB5gE,MACqB,SADrBA,MACqB;AAEnE,SAAOygE,aAAa,CAACzgE,MAAM,CAACD,OAAR,EAAiB,UAAjB,CAAb,CACF3I,MADE,CACK,UAAA0qE,IAAI;AAAA,WAAIlB,OAAO,CAACI,UAAR,CAAmBrnE,OAAnB,CAA2BmoE,IAA3B,MAAqC,CAAC,CAA1C;AAAA,GADT,CAAP;AAEH;AAEM,SAASC,eAAT,CAAyBnB,OAAzB,EAAuG;AAAA,MAA9EA,OAA8E;AAA9EA,WAA8E,GAAjD;AAAEM,aAAO,EAAE,EAAX;AAAeF,gBAAU,EAAE,EAA3B;AAA+BG,gBAAU,EAAE;AAA3C,KAAiD;AAAA;;AAE1G,MAAIP,OAAO,CAACM,OAAZ,EAAqB;AAAA,0CACIN,OAAO,CAACM,OADZ,yCACqB;AAAjC,UAAM3iE,MAAM,yBAAZ;;AACD,UAAI9a,kCAAa,CAACkW,OAAd,CAAsB4E,MAAtB,MAAkC,CAAC,CAAvC,EAA0C;AACtC;AACH;;AAED,UAAI,CAAC2gE,cAAc,CAACh8D,cAAf,CAA8B3E,MAA9B,CAAL,EAA4C;AACxC,cAAM,IAAI7F,KAAJ,8BAAsC6F,MAAtC,CAAN;AACH;;AAED,UAAI,CAACiiE,gBAAgB,CAACjiE,MAAD,EAAS,YAAT,CAArB,EAA6C;AACzC,cAAM,IAAI7F,KAAJ,oCAA4C6F,MAA5C,CAAN;AACH;;AAED,UAAIqiE,OAAO,CAACI,UAAR,IAAsBJ,OAAO,CAACI,UAAR,CAAmBrnE,OAAnB,CAA2B4E,MAA3B,MAAuC,CAAC,CAAlE,EAAqE;AACjE,cAAM,IAAI7F,KAAJ,iDAAyD6F,MAAzD,CAAN;AACH;AACJ;AACJ;;AAED,MAAIqiE,OAAO,CAACI,UAAZ,EAAwB;AAAA,6CACCJ,OAAO,CAACI,UADT,4CACqB;AAApC,UAAMziE,OAAM,4BAAZ;;AACD,UAAI9a,kCAAa,CAACkW,OAAd,CAAsB4E,OAAtB,MAAkC,CAAC,CAAvC,EAA0C;AACtC;AACH;;AAED,UAAI,CAAC2gE,cAAc,CAACh8D,cAAf,CAA8B3E,OAA9B,CAAL,EAA4C;AACxC,cAAM,IAAI7F,KAAJ,8BAAsC6F,OAAtC,CAAN;AACH;;AAED,UAAI,CAACiiE,gBAAgB,CAACjiE,OAAD,EAAS,aAAT,CAArB,EAA8C;AAC1C,cAAM,IAAI7F,KAAJ,uCAA+C6F,OAA/C,CAAN;AACH;AACJ;AACJ;AACJ;AAEM,SAASyjE,qBAAT,GAAiC;AACpCtB,2BAAyB,CAAC1nD,OAA1B,CAAkC,UAACyoD,OAAD,EAAU3lE,CAAV,EAAgB;AAC9C4H,WAAO,CAACE,GAAR,gBAAyB9H,CAAC,GAAG,CAA7B,WAD8C,CACP;;AAEvC4H,WAAO,CAACu+D,KAAR,CAAc/qE,MAAM,CAACC,IAAP,CAAYsqE,OAAZ,EAAqBnqE,GAArB,CAAyB,UAAAiH,MAAM,EAAI;AAAG;AAAH,4BACPkjE,OAAO,CAACljE,MAAD,CADA;AAAA,UACrC6nC,MADqC,mBACrCA,MADqC;AAAA,UAC7Bi7B,QAD6B,mBAC7BA,QAD6B;AAAA,UACnBM,OADmB,mBACnBA,OADmB;AAG7C,aAAO;AACH,mBAAepjE,MADZ;AAEH,kBAAe6nC,MAFZ;AAGH,uBAAei7B,QAAQ,GAAG,UAAH,GAAgB,YAHpC;AAIH,mBAAev9D,IAAI,CAACC,SAAL,CAAe49D,OAAf;AAJZ,OAAP;AAMH,KATa,CAAd;AAUH,GAbD;AAcH,C;;;;;;AC7KD;AAEA;AASO,IAAMO,aAA4B,wCAEnC9+E,4BAFmC,IAExB;AAET++E,QAAM,EAAE,CACJxiF,iCAAY,CAACC,IADT,EAEJD,iCAAY,CAACE,IAFT,EAGJF,iCAAY,CAACG,MAHT,EAIJH,iCAAY,CAACI,KAJT,EAKJJ,iCAAY,CAACM,KALT,CAFC;AAUTmiF,OAAK,EAAG,CACJ/hF,gCAAW,CAACE,KADR,EAEJF,gCAAW,CAACG,MAFR,EAGJH,gCAAW,CAACI,KAHR,EAIJJ,gCAAW,CAACM,UAJR,CAVC;AAiBT0hF,QAAM,EAAE,CACJxhF,iCAAY,CAACC,IADT,EAEJD,iCAAY,CAACE,IAFT,CAjBC;AAsBTuhF,SAAO,EAAE,CACLnhF,kCAAa,CAACC,UADT,EAELD,kCAAa,CAACE,QAFT,CAtBA;AA2BTkhF,YAAU,iCACJ5iF,iCAAY,CAACC,IADT,IACmBO,sCAAiB,CAACN,IADrC,cAEJF,iCAAY,CAACG,MAFT,IAEmBK,sCAAiB,CAACN,IAFrC,cAGJF,iCAAY,CAACE,IAHT,IAGmBM,sCAAiB,CAACF,KAHrC,cAIJN,iCAAY,CAACI,KAJT,IAImBI,sCAAiB,CAACF,KAJrC,cAKJN,iCAAY,CAACI,KALT,IAKmBI,sCAAiB,CAACF,KALrC,cAMJN,iCAAY,CAACM,KANT,IAMmBE,sCAAiB,CAACN,IANrC,cA3BD;AAoCT2iF,eAAa,uCACP7iF,iCAAY,CAACC,IADN,IACoBgB,yCAAoB,CAACf,IADzC,iBAEPF,iCAAY,CAACG,MAFN,IAEoBc,yCAAoB,CAACf,IAFzC,iBAGPF,iCAAY,CAACE,IAHN,IAGoBe,yCAAoB,CAACf,IAHzC,iBAIPF,iCAAY,CAACI,KAJN,IAIoBa,yCAAoB,CAACb,KAJzC,iBAKPJ,iCAAY,CAACK,QALN,IAKoBY,yCAAoB,CAACf,IALzC,iBApCJ;AA6CT4iF,iBAAe,2CACT9iF,iCAAY,CAACC,IADJ,IACkBD,iCAAY,CAACE,IAD/B,mBAETF,iCAAY,CAACG,MAFJ,IAEkBH,iCAAY,CAACE,IAF/B,mBAGTF,iCAAY,CAACE,IAHJ,IAGkBF,iCAAY,CAACG,MAH/B,mBAITH,iCAAY,CAACI,KAJJ,IAIkBJ,iCAAY,CAACI,KAJ/B,mBAKTJ,iCAAY,CAACK,QALJ,IAKkBL,iCAAY,CAACG,MAL/B,mBAMTH,iCAAY,CAACM,KANJ,IAMkBN,iCAAY,CAACM,KAN/B,mBA7CN;AAsDTugC,KAAG,0BAtDM;AAuDTkiD,SAAO,mCAvDE;AAyDT9uD,eAAa,SAzDJ;AA0DT+uD,cAAY,EAAazkF,iCAAY,CAACE,QA1D7B;AA2DTwkF,sBAAoB,EAAK1kF,iCAAY,CAACC,MA3D7B;AA4DT0kF,cAAY,EAAaljF,iCAAY,CAACC,IA5D7B;AA6DTkjF,aAAW,EAAcziF,gCAAW,CAACE,KA7D5B;AA8DTwiF,qBAAmB,EAAM1iF,gCAAW,CAACG,MA9D5B;AA+DTwiF,cAAY,EAAaniF,iCAAY,CAACC,IA/D7B;AAgETmiF,eAAa,EAAY9hF,kCAAa,CAACC,UAhE9B;AAiET8hF,iBAAe,EAAU,IAjEhB;AAkETC,yBAAuB,EAAE,IAlEhB;AAmETC,qBAAmB,EAAM,KAnEhB;AAoETC,gBAAc,EAAW,IApEhB;AAqETC,aAAW,IArEF;AAuETC,aAAW,EAAUljF,gCAAW,CAACC,IAvExB;AAwETkjF,qBAAmB,EAAEnjF,gCAAW,CAACG,MAxExB;AA0ETijF,aAAW,EAAUpjF,gCAAW,CAACK,IA1ExB;AA2ETgjF,qBAAmB,EAAErjF,gCAAW,CAACK,IA3ExB;AA6ETijF,sBAAoB,EAAE,CA7Eb;AA8ETC,oBAAkB,EAAI,CA9Eb;AAgFTC,sBAAoB,EAAE,CAhFb;AAiFTC,oBAAkB,EAAI,CAjFb;AAmFTC,gBAAc,EAAQ,KAnFb;AAoFTC,mBAAiB,EAAK,IApFb;AAsFTC,cAAY,EAAE,KAtFL;AAwFTC,sBAAoB,EAAI,KAxFf;AAyFTC,wBAAsB,EAAE;AAzFf,CAFwB,iBA8FnCjmF,iCAAY,CAACC,MA9FsB,IA8FZ;AACrBimF,OAAK,eAAkB3iF,gCAAW,CAACC,EAA9B,mBAAgDD,gCAAW,CAACtD,MAA5D,OADgB;AAErBkmF,WAAS,eAAc5iF,gCAAW,CAACC,EAA1B,mBAA4CD,gCAAW,CAACtD,MAAxD,OAFY;AAIrB8lF,cAAY,EAAE,IAJO;AAMrBC,sBAAoB,EAAI,IANH;AAOrBC,wBAAsB,EAAE;AAPH,CA9FY,iBAwGnCjmF,iCAAY,CAACE,QAxGsB,IAwGV;AACvBgmF,OAAK,yBADkB;AAEvBC,WAAS,eAAc5iF,gCAAW,CAACC,EAA1B,mBAA4CD,gCAAW,CAACtD,MAAxD,OAFc;AAIvB8lF,cAAY,EAAE,IAJS;AAMvBC,sBAAoB,EAAI,IAND;AAOvBC,wBAAsB,EAAE;AAPD,CAxGU,iBAkHnCjmF,iCAAY,CAACG,GAlHsB,IAkHf;AAClB+lF,OAAK,oBADa;AAElBC,WAAS,eAAc5iF,gCAAW,CAACC,EAA1B,mBAA4CD,gCAAW,CAACtD,MAAxD,OAFS;AAIlB8lF,cAAY,EAAE,IAJI;AAMlBC,sBAAoB,EAAI,IANN;AAOlBC,wBAAsB,EAAE;AAPN,CAlHe,iBA4HnCjmF,iCAAY,CAACM,MA5HsB,IA4HZ;AACrB4lF,OAAK,uBADgB;AAErBC,WAAS,eAAc5iF,gCAAW,CAACC,EAA1B,mBAA4CD,gCAAW,CAACtD,MAAxD,OAFY;AAIrB+kF,iBAAe,EAAEtrE,SAJI;AAMrBqsE,cAAY,EAAE,IANO;AAQrBC,sBAAoB,EAAI,IARH;AASrBC,wBAAsB,EAAE,IATH;AAWrBJ,gBAAc,EAAG;AAXI,CA5HY,iBA0InC7lF,iCAAY,CAACO,WA1IsB,IA0IP;AAC1B2lF,OAAK,EAAM,eAACllD,KAAD,EAAW;AAAE,4BAAsBA,KAAK,CAAColD,iBAAN,GAA0B,oBAA1B,GAAiD,aAAvE;AAA4F,GAD1F;AAE1BD,WAAS,eAAc5iF,gCAAW,CAACC,EAA1B,mBAA4CD,gCAAW,CAACtD,MAAxD,OAFiB;AAI1B8lF,cAAY,EAAc,IAJA;AAK1BC,sBAAoB,EAAM,IALA;AAM1BC,wBAAsB,EAAI,IANA;AAO1BI,wBAAsB,EAAI,KAPA;AAQ1BC,0BAAwB,EAAE;AARA,CA1IO,iBAqJnCtmF,iCAAY,CAACI,MArJsB,IAqJZ;AACrB8lF,OAAK,EAAE,qBAAgB;AAAA,QAAbpkE,MAAa,QAAbA,MAAa;;AACnB,QAAIA,MAAM,CAACD,OAAP,KAAmBjX,4BAAO,CAAC8C,EAA/B,EAAmC;AAC/B,0BAAmBnK,gCAAW,CAACnD,MAA/B;AACH;;AAED,wBAAmBmD,gCAAW,CAACC,EAA/B,mBAAiDD,gCAAW,CAACtD,MAA7D,mBAAmFsD,gCAAW,CAACnD,MAA/F;AACH,GAPoB;AAQrB+lF,WAAS,EAAE,0BAAgB;AAAA,QAAbrkE,MAAa,SAAbA,MAAa;;AACvB,QAAIA,MAAM,CAACD,OAAP,KAAmBjX,4BAAO,CAAC8C,EAA/B,EAAmC;AAC/B,0BAAmBnK,gCAAW,CAACnD,MAA/B;AACH;;AAED,wBAAmBmD,gCAAW,CAACC,EAA/B,mBAAiDD,gCAAW,CAACtD,MAA7D,mBAAmFsD,gCAAW,CAACnD,MAA/F;AACH,GAdoB;AAgBrBkiC,KAAG,0BAhBkB;AAkBrB2hD,QAAM,EAAE,CACJxiF,iCAAY,CAACK,QADT,EAEJL,iCAAY,CAACI,KAFT,EAGJJ,iCAAY,CAACM,KAHT,CAlBa;AAwBrBsiF,YAAU,mCACJ5iF,iCAAY,CAACI,KADT,IACqBI,sCAAiB,CAACF,KADvC,eAEJN,iCAAY,CAACK,QAFT,IAEqBG,sCAAiB,CAACF,KAFvC,eAGJN,iCAAY,CAACM,KAHT,IAGqBE,sCAAiB,CAACN,IAHvC,eAxBW;AA8BrB4iF,iBAAe,6CACT9iF,iCAAY,CAACC,IADJ,IACcD,iCAAY,CAACK,QAD3B,oBAETL,iCAAY,CAACE,IAFJ,IAEcF,iCAAY,CAACK,QAF3B,oBAGTL,iCAAY,CAACG,MAHJ,IAGcH,iCAAY,CAACK,QAH3B,oBAITL,iCAAY,CAACI,KAJJ,IAIcJ,iCAAY,CAACI,KAJ3B,oBAKTJ,iCAAY,CAACM,KALJ,IAKcN,iCAAY,CAACM,KAL3B,oBA9BM;AAsCrB4iF,cAAY,EAAEljF,iCAAY,CAACK,QAtCN;AAwCrBikF,cAAY,EAAE,IAxCO;AA0CrBC,sBAAoB,EAAI,KA1CH;AA2CrBC,wBAAsB,EAAE,KA3CH;AA6CrBH,mBAAiB,EAAE;AA7CE,CArJY,iBAqMnC9lF,iCAAY,CAACQ,KArMsB,IAqMb;AACpB0lF,OAAK,eAAkB3iF,gCAAW,CAAC/C,KAA9B,OADe;AAEpB2lF,WAAS,eAAc5iF,gCAAW,CAAC/C,KAA1B,OAFW;AAIpBmkF,cAAY,EAAEljF,iCAAY,CAACG,MAJP;AAMpBqiF,QAAM,EAAE,CACJxiF,iCAAY,CAACE,IADT,EAEJF,iCAAY,CAACG,MAFT,EAGJH,iCAAY,CAACI,KAHT,EAIJJ,iCAAY,CAACM,KAJT,CANY;AAapBsiF,YAAU,mCACJ5iF,iCAAY,CAACE,IADT,IACmBM,sCAAiB,CAACF,KADrC,eAEJN,iCAAY,CAACG,MAFT,IAEmBK,sCAAiB,CAACN,IAFrC,eAGJF,iCAAY,CAACI,KAHT,IAGmBI,sCAAiB,CAACF,KAHrC,eAIJN,iCAAY,CAACM,KAJT,IAImBE,sCAAiB,CAACN,IAJrC,eAbU;AAoBpB4iF,iBAAe,6CACT9iF,iCAAY,CAACC,IADJ,IACkBD,iCAAY,CAACE,IAD/B,oBAETF,iCAAY,CAACE,IAFJ,IAEkBF,iCAAY,CAACG,MAF/B,oBAGTH,iCAAY,CAACG,MAHJ,IAGkBH,iCAAY,CAACE,IAH/B,oBAITF,iCAAY,CAACI,KAJJ,IAIkBJ,iCAAY,CAACI,KAJ/B,oBAKTJ,iCAAY,CAACK,QALJ,IAKkBL,iCAAY,CAACG,MAL/B,oBAMTH,iCAAY,CAACM,KANJ,IAMkBN,iCAAY,CAACM,KAN/B,oBApBK;AA6BpBgkF,cAAY,EAAE,IA7BM;AA+BpBC,sBAAoB,EAAI,KA/BJ;AAgCpBC,wBAAsB,EAAE;AAhCJ,CArMa,iBAuOnCjmF,iCAAY,CAACS,IAvOsB,IAuOd;AACnBylF,OAAK,eAAkB3iF,gCAAW,CAAC9C,IAA9B,OADc;AAEnB0lF,WAAS,eAAc5iF,gCAAW,CAAC9C,IAA1B,OAFU;AAInBkkF,cAAY,EAAEljF,iCAAY,CAACK,QAJR;AAMnBmiF,QAAM,EAAE,CACJxiF,iCAAY,CAACK,QADT,EAEJL,iCAAY,CAACE,IAFT,EAGJF,iCAAY,CAACI,KAHT,CANW;AAYnBwiF,YAAU,mCACJ5iF,iCAAY,CAACK,QADT,IACuBG,sCAAiB,CAACF,KADzC,eAEJN,iCAAY,CAACE,IAFT,IAEqBM,sCAAiB,CAACF,KAFvC,eAGJN,iCAAY,CAACI,KAHT,IAGqBI,sCAAiB,CAACF,KAHvC,eAZS;AAkBnBwiF,iBAAe,6CACT9iF,iCAAY,CAACC,IADJ,IACkBD,iCAAY,CAACK,QAD/B,oBAETL,iCAAY,CAACE,IAFJ,IAEkBF,iCAAY,CAACE,IAF/B,oBAGTF,iCAAY,CAACG,MAHJ,IAGkBH,iCAAY,CAACK,QAH/B,oBAITL,iCAAY,CAACI,KAJJ,IAIkBJ,iCAAY,CAACI,KAJ/B,oBAKTJ,iCAAY,CAACK,QALJ,IAKkBL,iCAAY,CAACK,QAL/B,oBAMTL,iCAAY,CAACM,KANJ,IAMkBN,iCAAY,CAACK,QAN/B,oBAlBI;AA2BnBikF,cAAY,EAAE,KA3BK;AA6BnBC,sBAAoB,EAAI,KA7BL;AA8BnBC,wBAAsB,EAAE;AA9BL,CAvOc,iBAwQnCjmF,iCAAY,CAACU,KAxQsB,IAwQb;AAEpBwlF,OAAK,eAAkB3iF,gCAAW,CAAC7C,KAA9B,sBAFe;AAGpBylF,WAAS,eAAc5iF,gCAAW,CAAC7C,KAA1B,sBAHW;AAKpBikF,cAAY,EAAEljF,iCAAY,CAACG,MALP;AAOpBqiF,QAAM,EAAE,CACJxiF,iCAAY,CAACG,MADT,EAEJH,iCAAY,CAACI,KAFT,EAGJJ,iCAAY,CAACM,KAHT,CAPY;AAapBsiF,YAAU,mCACJ5iF,iCAAY,CAACG,MADT,IACmBK,sCAAiB,CAACJ,KADrC,eAEJJ,iCAAY,CAACI,KAFT,IAEmBI,sCAAiB,CAACF,KAFrC,eAGJN,iCAAY,CAACM,KAHT,IAGmBE,sCAAiB,CAACJ,KAHrC,eAbU;AAmBpB0iF,iBAAe,6CACT9iF,iCAAY,CAACC,IADJ,IACkBD,iCAAY,CAACG,MAD/B,oBAETH,iCAAY,CAACE,IAFJ,IAEkBF,iCAAY,CAACG,MAF/B,oBAGTH,iCAAY,CAACG,MAHJ,IAGkBH,iCAAY,CAACG,MAH/B,oBAITH,iCAAY,CAACI,KAJJ,IAIkBJ,iCAAY,CAACI,KAJ/B,oBAKTJ,iCAAY,CAACK,QALJ,IAKkBL,iCAAY,CAACG,MAL/B,oBAMTH,iCAAY,CAACM,KANJ,IAMkBN,iCAAY,CAACM,KAN/B,oBAnBK;AA4BpBgkF,cAAY,EAAE,KA5BM;AA8BpBC,sBAAoB,EAAI,KA9BJ;AA+BpBC,wBAAsB,EAAE;AA/BJ,CAxQa,iBA0SnCjmF,iCAAY,CAACW,GA1SsB,IA0Sf;AAElBulF,OAAK,eAAkB3iF,gCAAW,CAAC5C,GAA9B,OAFa;AAGlBwlF,WAAS,eAAc5iF,gCAAW,CAAC5C,GAA1B,OAHS;AAKlBgkF,cAAY,EAAEljF,iCAAY,CAACG,MALT;AAOlBqiF,QAAM,EAAE,CACJxiF,iCAAY,CAACG,MADT,EAEJH,iCAAY,CAACI,KAFT,EAGJJ,iCAAY,CAACM,KAHT,CAPU;AAalBsiF,YAAU,mCACJ5iF,iCAAY,CAACG,MADT,IACmBK,sCAAiB,CAACJ,KADrC,eAEJJ,iCAAY,CAACI,KAFT,IAEmBI,sCAAiB,CAACF,KAFrC,eAGJN,iCAAY,CAACM,KAHT,IAGmBE,sCAAiB,CAACJ,KAHrC,eAbQ;AAmBlB0iF,iBAAe,6CACT9iF,iCAAY,CAACC,IADJ,IACkBD,iCAAY,CAACG,MAD/B,oBAETH,iCAAY,CAACE,IAFJ,IAEkBF,iCAAY,CAACG,MAF/B,oBAGTH,iCAAY,CAACG,MAHJ,IAGkBH,iCAAY,CAACG,MAH/B,oBAITH,iCAAY,CAACI,KAJJ,IAIkBJ,iCAAY,CAACI,KAJ/B,oBAKTJ,iCAAY,CAACK,QALJ,IAKkBL,iCAAY,CAACG,MAL/B,oBAMTH,iCAAY,CAACM,KANJ,IAMkBN,iCAAY,CAACM,KAN/B,oBAnBG;AA4BlBgkF,cAAY,EAAE,KA5BI;AA8BlBC,sBAAoB,EAAI,KA9BN;AA+BlBC,wBAAsB,EAAE;AA/BN,CA1Se,iBA4UnCjmF,iCAAY,CAACY,UA5UsB,IA4UR;AAEzBslF,OAAK,eAAkB3iF,gCAAW,CAAC3C,UAA9B,OAFoB;AAGzBulF,WAAS,eAAc5iF,gCAAW,CAAC3C,UAA1B,OAHgB;AAKzB+jF,cAAY,EAAEljF,iCAAY,CAACG,MALF;AAOzBqiF,QAAM,EAAE,CACJxiF,iCAAY,CAACG,MADT,EAEJH,iCAAY,CAACI,KAFT,EAGJJ,iCAAY,CAACM,KAHT,CAPiB;AAazBsiF,YAAU,mCACJ5iF,iCAAY,CAACG,MADT,IACmBK,sCAAiB,CAACJ,KADrC,eAEJJ,iCAAY,CAACI,KAFT,IAEmBI,sCAAiB,CAACF,KAFrC,eAGJN,iCAAY,CAACM,KAHT,IAGmBE,sCAAiB,CAACJ,KAHrC,eAbe;AAmBzB0iF,iBAAe,6CACT9iF,iCAAY,CAACC,IADJ,IACkBD,iCAAY,CAACG,MAD/B,oBAETH,iCAAY,CAACE,IAFJ,IAEkBF,iCAAY,CAACG,MAF/B,oBAGTH,iCAAY,CAACG,MAHJ,IAGkBH,iCAAY,CAACG,MAH/B,oBAITH,iCAAY,CAACI,KAJJ,IAIkBJ,iCAAY,CAACI,KAJ/B,oBAKTJ,iCAAY,CAACK,QALJ,IAKkBL,iCAAY,CAACG,MAL/B,oBAMTH,iCAAY,CAACM,KANJ,IAMkBN,iCAAY,CAACM,KAN/B,oBAnBU;AA4BzBgkF,cAAY,EAAE,KA5BW;AA8BzBC,sBAAoB,EAAI,KA9BC;AA+BzBC,wBAAsB,EAAE;AA/BC,CA5UQ,iBA8WnCjmF,iCAAY,CAACa,OA9WsB,IA8WX;AAEtBqlF,OAAK,eAAkB3iF,gCAAW,CAAC1C,OAA9B,OAFiB;AAGtBslF,WAAS,eAAc5iF,gCAAW,CAAC1C,OAA1B,OAHa;AAKtB8jF,cAAY,EAAEljF,iCAAY,CAACG,MALL;AAOtBqiF,QAAM,EAAE,CACJxiF,iCAAY,CAACG,MADT,EAEJH,iCAAY,CAACI,KAFT,EAGJJ,iCAAY,CAACM,KAHT,CAPc;AAatBsiF,YAAU,mCACJ5iF,iCAAY,CAACG,MADT,IACmBK,sCAAiB,CAACJ,KADrC,eAEJJ,iCAAY,CAACI,KAFT,IAEmBI,sCAAiB,CAACF,KAFrC,eAGJN,iCAAY,CAACM,KAHT,IAGmBE,sCAAiB,CAACJ,KAHrC,eAbY;AAmBtB0iF,iBAAe,6CACT9iF,iCAAY,CAACC,IADJ,IACkBD,iCAAY,CAACG,MAD/B,oBAETH,iCAAY,CAACE,IAFJ,IAEkBF,iCAAY,CAACG,MAF/B,oBAGTH,iCAAY,CAACG,MAHJ,IAGkBH,iCAAY,CAACG,MAH/B,oBAITH,iCAAY,CAACI,KAJJ,IAIkBJ,iCAAY,CAACI,KAJ/B,oBAKTJ,iCAAY,CAACK,QALJ,IAKkBL,iCAAY,CAACG,MAL/B,oBAMTH,iCAAY,CAACM,KANJ,IAMkBN,iCAAY,CAACM,KAN/B,oBAnBO;AA4BtBgkF,cAAY,EAAE,KA5BQ;AA8BtBC,sBAAoB,EAAI,KA9BF;AA+BtBC,wBAAsB,EAAE;AA/BF,CA9WW,iBAgZnCjmF,iCAAY,CAACc,MAhZsB,IAgZZ;AAErBolF,OAAK,eAAkB3iF,gCAAW,CAACzC,MAA9B,OAFgB;AAGrBqlF,WAAS,eAAc5iF,gCAAW,CAACzC,MAA1B,OAHY;AAKrB6jF,cAAY,EAAEljF,iCAAY,CAACG,MALN;AAOrBqiF,QAAM,EAAE,CACJxiF,iCAAY,CAACG,MADT,EAEJH,iCAAY,CAACI,KAFT,EAGJJ,iCAAY,CAACM,KAHT,CAPa;AAarBsiF,YAAU,mCACJ5iF,iCAAY,CAACG,MADT,IACmBK,sCAAiB,CAACJ,KADrC,eAEJJ,iCAAY,CAACI,KAFT,IAEmBI,sCAAiB,CAACF,KAFrC,eAGJN,iCAAY,CAACM,KAHT,IAGmBE,sCAAiB,CAACJ,KAHrC,eAbW;AAmBrB0iF,iBAAe,6CACT9iF,iCAAY,CAACC,IADJ,IACkBD,iCAAY,CAACG,MAD/B,oBAETH,iCAAY,CAACE,IAFJ,IAEkBF,iCAAY,CAACG,MAF/B,oBAGTH,iCAAY,CAACG,MAHJ,IAGkBH,iCAAY,CAACG,MAH/B,oBAITH,iCAAY,CAACI,KAJJ,IAIkBJ,iCAAY,CAACI,KAJ/B,oBAKTJ,iCAAY,CAACK,QALJ,IAKkBL,iCAAY,CAACG,MAL/B,oBAMTH,iCAAY,CAACM,KANJ,IAMkBN,iCAAY,CAACM,KAN/B,oBAnBM;AA4BrBgkF,cAAY,EAAE,KA5BO;AA8BrBC,sBAAoB,EAAI,KA9BH;AA+BrBC,wBAAsB,EAAE;AA/BH,CAhZY,iBAkbnCjmF,iCAAY,CAACe,GAlbsB,IAkbf;AAElBmlF,OAAK,eAAkB3iF,gCAAW,CAACxC,GAA9B,OAFa;AAGlBolF,WAAS,eAAc5iF,gCAAW,CAACxC,GAA1B,OAHS;AAKlB4jF,cAAY,EAAEljF,iCAAY,CAACG,MALT;AAOlBqiF,QAAM,EAAE,CACJxiF,iCAAY,CAACG,MADT,EAEJH,iCAAY,CAACI,KAFT,EAGJJ,iCAAY,CAACM,KAHT,CAPU;AAalBsiF,YAAU,qCACJ5iF,iCAAY,CAACG,MADT,IACmBK,sCAAiB,CAACJ,KADrC,gBAEJJ,iCAAY,CAACI,KAFT,IAEmBI,sCAAiB,CAACF,KAFrC,gBAGJN,iCAAY,CAACM,KAHT,IAGmBE,sCAAiB,CAACJ,KAHrC,gBAbQ;AAmBlB0iF,iBAAe,+CACT9iF,iCAAY,CAACC,IADJ,IACkBD,iCAAY,CAACG,MAD/B,qBAETH,iCAAY,CAACE,IAFJ,IAEkBF,iCAAY,CAACG,MAF/B,qBAGTH,iCAAY,CAACG,MAHJ,IAGkBH,iCAAY,CAACG,MAH/B,qBAITH,iCAAY,CAACI,KAJJ,IAIkBJ,iCAAY,CAACI,KAJ/B,qBAKTJ,iCAAY,CAACK,QALJ,IAKkBL,iCAAY,CAACG,MAL/B,qBAMTH,iCAAY,CAACM,KANJ,IAMkBN,iCAAY,CAACM,KAN/B,qBAnBG;AA4BlBgkF,cAAY,EAAE,KA5BI;AA8BlBC,sBAAoB,EAAI,KA9BN;AA+BlBC,wBAAsB,EAAE;AA/BN,CAlbe,iBAodnCjmF,iCAAY,CAACgB,MApdsB,IAodZ;AAErBklF,OAAK,eAAkB3iF,gCAAW,CAACvC,MAA9B,OAFgB;AAGrBmlF,WAAS,eAAc5iF,gCAAW,CAACvC,MAA1B,OAHY;AAKrB2jF,cAAY,EAAEljF,iCAAY,CAACG,MALN;AAOrBqiF,QAAM,EAAE,CACJxiF,iCAAY,CAACG,MADT,EAEJH,iCAAY,CAACI,KAFT,EAGJJ,iCAAY,CAACM,KAHT,CAPa;AAarBsiF,YAAU,qCACJ5iF,iCAAY,CAACG,MADT,IACmBK,sCAAiB,CAACJ,KADrC,gBAEJJ,iCAAY,CAACI,KAFT,IAEmBI,sCAAiB,CAACF,KAFrC,gBAGJN,iCAAY,CAACM,KAHT,IAGmBE,sCAAiB,CAACJ,KAHrC,gBAbW;AAmBrB0iF,iBAAe,+CACT9iF,iCAAY,CAACC,IADJ,IACkBD,iCAAY,CAACG,MAD/B,qBAETH,iCAAY,CAACE,IAFJ,IAEkBF,iCAAY,CAACG,MAF/B,qBAGTH,iCAAY,CAACG,MAHJ,IAGkBH,iCAAY,CAACG,MAH/B,qBAITH,iCAAY,CAACI,KAJJ,IAIkBJ,iCAAY,CAACI,KAJ/B,qBAKTJ,iCAAY,CAACK,QALJ,IAKkBL,iCAAY,CAACG,MAL/B,qBAMTH,iCAAY,CAACM,KANJ,IAMkBN,iCAAY,CAACM,KAN/B,qBAnBM;AA4BrBgkF,cAAY,EAAE,KA5BO;AA8BrBC,sBAAoB,EAAI,KA9BH;AA+BrBC,wBAAsB,EAAE;AA/BH,CApdY,iBAsfnCjmF,iCAAY,CAACiB,GAtfsB,IAsff;AAElBilF,OAAK,eAAkB3iF,gCAAW,CAACtC,GAA9B,OAFa;AAGlBklF,WAAS,eAAc5iF,gCAAW,CAACtC,GAA1B,OAHS;AAKlB0jF,cAAY,EAAEljF,iCAAY,CAACG,MALT;AAOlBqiF,QAAM,EAAE,CACJxiF,iCAAY,CAACG,MADT,EAEJH,iCAAY,CAACI,KAFT,EAGJJ,iCAAY,CAACM,KAHT,CAPU;AAalBsiF,YAAU,qCACJ5iF,iCAAY,CAACG,MADT,IACmBK,sCAAiB,CAACJ,KADrC,gBAEJJ,iCAAY,CAACI,KAFT,IAEmBI,sCAAiB,CAACF,KAFrC,gBAGJN,iCAAY,CAACM,KAHT,IAGmBE,sCAAiB,CAACJ,KAHrC,gBAbQ;AAmBlB0iF,iBAAe,+CACT9iF,iCAAY,CAACC,IADJ,IACkBD,iCAAY,CAACG,MAD/B,qBAETH,iCAAY,CAACE,IAFJ,IAEkBF,iCAAY,CAACG,MAF/B,qBAGTH,iCAAY,CAACG,MAHJ,IAGkBH,iCAAY,CAACG,MAH/B,qBAITH,iCAAY,CAACI,KAJJ,IAIkBJ,iCAAY,CAACI,KAJ/B,qBAKTJ,iCAAY,CAACK,QALJ,IAKkBL,iCAAY,CAACG,MAL/B,qBAMTH,iCAAY,CAACM,KANJ,IAMkBN,iCAAY,CAACM,KAN/B,qBAnBG;AA4BlBgkF,cAAY,EAAE,KA5BI;AA8BlBC,sBAAoB,EAAI,KA9BN;AA+BlBC,wBAAsB,EAAE;AA/BN,CAtfe,iBAwhBnCjmF,iCAAY,CAACkB,IAxhBsB,IAwhBd;AAEnBglF,OAAK,eAAkB3iF,gCAAW,CAACrC,IAA9B,OAFc;AAGnBilF,WAAS,eAAc5iF,gCAAW,CAACrC,IAA1B,OAHU;AAKnByjF,cAAY,EAAEljF,iCAAY,CAACG,MALR;AAOnBqiF,QAAM,EAAE,CACJxiF,iCAAY,CAACG,MADT,EAEJH,iCAAY,CAACI,KAFT,EAGJJ,iCAAY,CAACM,KAHT,CAPW;AAanBsiF,YAAU,qCACJ5iF,iCAAY,CAACG,MADT,IACmBK,sCAAiB,CAACJ,KADrC,gBAEJJ,iCAAY,CAACI,KAFT,IAEmBI,sCAAiB,CAACF,KAFrC,gBAGJN,iCAAY,CAACM,KAHT,IAGmBE,sCAAiB,CAACJ,KAHrC,gBAbS;AAmBnB0iF,iBAAe,+CACT9iF,iCAAY,CAACC,IADJ,IACkBD,iCAAY,CAACG,MAD/B,qBAETH,iCAAY,CAACE,IAFJ,IAEkBF,iCAAY,CAACG,MAF/B,qBAGTH,iCAAY,CAACG,MAHJ,IAGkBH,iCAAY,CAACG,MAH/B,qBAITH,iCAAY,CAACI,KAJJ,IAIkBJ,iCAAY,CAACI,KAJ/B,qBAKTJ,iCAAY,CAACK,QALJ,IAKkBL,iCAAY,CAACG,MAL/B,qBAMTH,iCAAY,CAACM,KANJ,IAMkBN,iCAAY,CAACM,KAN/B,qBAnBI;AA4BnBgkF,cAAY,EAAE,KA5BK;AA8BnBC,sBAAoB,EAAI,KA9BL;AA+BnBC,wBAAsB,EAAE;AA/BL,CAxhBc,iBA0jBnCjmF,iCAAY,CAACmB,YA1jBsB,IA0jBN;AAE3B+kF,OAAK,eAAkB3iF,gCAAW,CAACpC,YAA9B,OAFsB;AAG3BglF,WAAS,eAAc5iF,gCAAW,CAACpC,YAA1B,OAHkB;AAK3BwjF,cAAY,EAAEljF,iCAAY,CAACG,MALA;AAO3BqiF,QAAM,EAAE,CACJxiF,iCAAY,CAACG,MADT,EAEJH,iCAAY,CAACI,KAFT,EAGJJ,iCAAY,CAACM,KAHT,CAPmB;AAa3BsiF,YAAU,qCACJ5iF,iCAAY,CAACG,MADT,IACmBK,sCAAiB,CAACJ,KADrC,gBAEJJ,iCAAY,CAACI,KAFT,IAEmBI,sCAAiB,CAACF,KAFrC,gBAGJN,iCAAY,CAACM,KAHT,IAGmBE,sCAAiB,CAACJ,KAHrC,gBAbiB;AAmB3B0iF,iBAAe,+CACT9iF,iCAAY,CAACC,IADJ,IACkBD,iCAAY,CAACG,MAD/B,qBAETH,iCAAY,CAACE,IAFJ,IAEkBF,iCAAY,CAACG,MAF/B,qBAGTH,iCAAY,CAACG,MAHJ,IAGkBH,iCAAY,CAACG,MAH/B,qBAITH,iCAAY,CAACI,KAJJ,IAIkBJ,iCAAY,CAACI,KAJ/B,qBAKTJ,iCAAY,CAACK,QALJ,IAKkBL,iCAAY,CAACG,MAL/B,qBAMTH,iCAAY,CAACM,KANJ,IAMkBN,iCAAY,CAACM,KAN/B,qBAnBY;AA4B3BgkF,cAAY,EAAE,KA5Ba;AA8B3BC,sBAAoB,EAAI,KA9BG;AA+B3BC,wBAAsB,EAAE;AA/BG,CA1jBM,iBA4lBnCjmF,iCAAY,CAACoB,IA5lBsB,IA4lBd;AAEnB8kF,OAAK,eAAkB3iF,gCAAW,CAACnC,IAA9B,OAFc;AAGnB+kF,WAAS,eAAc5iF,gCAAW,CAACnC,IAA1B,OAHU;AAKnBujF,cAAY,EAAEljF,iCAAY,CAACG,MALR;AAOnBqiF,QAAM,EAAE,CACJxiF,iCAAY,CAACG,MADT,EAEJH,iCAAY,CAACI,KAFT,EAGJJ,iCAAY,CAACM,KAHT,CAPW;AAanBsiF,YAAU,qCACJ5iF,iCAAY,CAACG,MADT,IACmBK,sCAAiB,CAACJ,KADrC,gBAEJJ,iCAAY,CAACI,KAFT,IAEmBI,sCAAiB,CAACF,KAFrC,gBAGJN,iCAAY,CAACM,KAHT,IAGmBE,sCAAiB,CAACJ,KAHrC,gBAbS;AAmBnB0iF,iBAAe,+CACT9iF,iCAAY,CAACC,IADJ,IACkBD,iCAAY,CAACG,MAD/B,qBAETH,iCAAY,CAACE,IAFJ,IAEkBF,iCAAY,CAACG,MAF/B,qBAGTH,iCAAY,CAACG,MAHJ,IAGkBH,iCAAY,CAACG,MAH/B,qBAITH,iCAAY,CAACI,KAJJ,IAIkBJ,iCAAY,CAACI,KAJ/B,qBAKTJ,iCAAY,CAACK,QALJ,IAKkBL,iCAAY,CAACG,MAL/B,qBAMTH,iCAAY,CAACM,KANJ,IAMkBN,iCAAY,CAACM,KAN/B,qBAnBI;AA4BnBgkF,cAAY,EAAE,KA5BK;AA8BnBC,sBAAoB,EAAI,KA9BL;AA+BnBC,wBAAsB,EAAE;AA/BL,CA5lBc,iBA8nBnCjmF,iCAAY,CAACqB,OA9nBsB,IA8nBX;AAEtB6kF,OAAK,eAAkB3iF,gCAAW,CAAClC,OAA9B,OAFiB;AAGtB8kF,WAAS,eAAc5iF,gCAAW,CAAClC,OAA1B,OAHa;AAKtBsjF,cAAY,EAAEljF,iCAAY,CAACG,MALL;AAOtBqiF,QAAM,EAAE,CACJxiF,iCAAY,CAACG,MADT,EAEJH,iCAAY,CAACI,KAFT,EAGJJ,iCAAY,CAACM,KAHT,CAPc;AAatBsiF,YAAU,qCACJ5iF,iCAAY,CAACG,MADT,IACmBK,sCAAiB,CAACJ,KADrC,gBAEJJ,iCAAY,CAACI,KAFT,IAEmBI,sCAAiB,CAACF,KAFrC,gBAGJN,iCAAY,CAACM,KAHT,IAGmBE,sCAAiB,CAACJ,KAHrC,gBAbY;AAmBtB0iF,iBAAe,+CACT9iF,iCAAY,CAACC,IADJ,IACkBD,iCAAY,CAACG,MAD/B,qBAETH,iCAAY,CAACE,IAFJ,IAEkBF,iCAAY,CAACG,MAF/B,qBAGTH,iCAAY,CAACG,MAHJ,IAGkBH,iCAAY,CAACG,MAH/B,qBAITH,iCAAY,CAACI,KAJJ,IAIkBJ,iCAAY,CAACI,KAJ/B,qBAKTJ,iCAAY,CAACK,QALJ,IAKkBL,iCAAY,CAACG,MAL/B,qBAMTH,iCAAY,CAACM,KANJ,IAMkBN,iCAAY,CAACM,KAN/B,qBAnBO;AA4BtBgkF,cAAY,EAAE,KA5BQ;AA8BtBC,sBAAoB,EAAI,KA9BF;AA+BtBC,wBAAsB,EAAE;AA/BF,CA9nBW,iBAgqBnCjmF,iCAAY,CAACsB,MAhqBsB,IAgqBZ;AAErB4kF,OAAK,eAAkB3iF,gCAAW,CAACjC,MAA9B,OAFgB;AAGrB6kF,WAAS,eAAc5iF,gCAAW,CAACjC,MAA1B,OAHY;AAKrBqjF,cAAY,EAAEljF,iCAAY,CAACG,MALN;AAOrBqiF,QAAM,EAAE,CACJxiF,iCAAY,CAACG,MADT,EAEJH,iCAAY,CAACI,KAFT,EAGJJ,iCAAY,CAACM,KAHT,CAPa;AAarBsiF,YAAU,qCACJ5iF,iCAAY,CAACG,MADT,IACmBK,sCAAiB,CAACJ,KADrC,gBAEJJ,iCAAY,CAACI,KAFT,IAEmBI,sCAAiB,CAACF,KAFrC,gBAGJN,iCAAY,CAACM,KAHT,IAGmBE,sCAAiB,CAACJ,KAHrC,gBAbW;AAmBrB0iF,iBAAe,+CACT9iF,iCAAY,CAACC,IADJ,IACkBD,iCAAY,CAACG,MAD/B,qBAETH,iCAAY,CAACE,IAFJ,IAEkBF,iCAAY,CAACG,MAF/B,qBAGTH,iCAAY,CAACG,MAHJ,IAGkBH,iCAAY,CAACG,MAH/B,qBAITH,iCAAY,CAACI,KAJJ,IAIkBJ,iCAAY,CAACI,KAJ/B,qBAKTJ,iCAAY,CAACK,QALJ,IAKkBL,iCAAY,CAACG,MAL/B,qBAMTH,iCAAY,CAACM,KANJ,IAMkBN,iCAAY,CAACM,KAN/B,qBAnBM;AA4BrBgkF,cAAY,EAAE,KA5BO;AA8BrBC,sBAAoB,EAAI,KA9BH;AA+BrBC,wBAAsB,EAAE;AA/BH,CAhqBY,iBAksBnCjmF,iCAAY,CAACuB,MAlsBsB,IAksBZ;AAErB2kF,OAAK,eAAkB3iF,gCAAW,CAAChC,MAA9B,OAFgB;AAGrB4kF,WAAS,eAAc5iF,gCAAW,CAAChC,MAA1B,OAHY;AAKrBojF,cAAY,EAAEljF,iCAAY,CAACG,MALN;AAOrBqiF,QAAM,EAAE,CACJxiF,iCAAY,CAACG,MADT,EAEJH,iCAAY,CAACI,KAFT,EAGJJ,iCAAY,CAACM,KAHT,CAPa;AAarBsiF,YAAU,qCACJ5iF,iCAAY,CAACG,MADT,IACmBK,sCAAiB,CAACJ,KADrC,gBAEJJ,iCAAY,CAACI,KAFT,IAEmBI,sCAAiB,CAACF,KAFrC,gBAGJN,iCAAY,CAACM,KAHT,IAGmBE,sCAAiB,CAACJ,KAHrC,gBAbW;AAmBrB0iF,iBAAe,+CACT9iF,iCAAY,CAACC,IADJ,IACkBD,iCAAY,CAACG,MAD/B,qBAETH,iCAAY,CAACE,IAFJ,IAEkBF,iCAAY,CAACG,MAF/B,qBAGTH,iCAAY,CAACG,MAHJ,IAGkBH,iCAAY,CAACG,MAH/B,qBAITH,iCAAY,CAACI,KAJJ,IAIkBJ,iCAAY,CAACI,KAJ/B,qBAKTJ,iCAAY,CAACK,QALJ,IAKkBL,iCAAY,CAACG,MAL/B,qBAMTH,iCAAY,CAACM,KANJ,IAMkBN,iCAAY,CAACM,KAN/B,qBAnBM;AA4BrBgkF,cAAY,EAAE,KA5BO;AA8BrBC,sBAAoB,EAAI,KA9BH;AA+BrBC,wBAAsB,EAAE;AA/BH,CAlsBY,iBAouBnCjmF,iCAAY,CAACwB,IApuBsB,IAouBd;AAEnB0kF,OAAK,eAAkB3iF,gCAAW,CAAC/B,IAA9B,OAFc;AAGnB2kF,WAAS,eAAc5iF,gCAAW,CAAC/B,IAA1B,OAHU;AAKnBmjF,cAAY,EAAEljF,iCAAY,CAACG,MALR;AAOnBqiF,QAAM,EAAE,CACJxiF,iCAAY,CAACG,MADT,EAEJH,iCAAY,CAACI,KAFT,EAGJJ,iCAAY,CAACM,KAHT,CAPW;AAanBsiF,YAAU,qCACJ5iF,iCAAY,CAACG,MADT,IACmBK,sCAAiB,CAACJ,KADrC,gBAEJJ,iCAAY,CAACI,KAFT,IAEmBI,sCAAiB,CAACF,KAFrC,gBAGJN,iCAAY,CAACM,KAHT,IAGmBE,sCAAiB,CAACJ,KAHrC,gBAbS;AAmBnB0iF,iBAAe,+CACT9iF,iCAAY,CAACC,IADJ,IACkBD,iCAAY,CAACG,MAD/B,qBAETH,iCAAY,CAACE,IAFJ,IAEkBF,iCAAY,CAACG,MAF/B,qBAGTH,iCAAY,CAACG,MAHJ,IAGkBH,iCAAY,CAACG,MAH/B,qBAITH,iCAAY,CAACI,KAJJ,IAIkBJ,iCAAY,CAACI,KAJ/B,qBAKTJ,iCAAY,CAACK,QALJ,IAKkBL,iCAAY,CAACG,MAL/B,qBAMTH,iCAAY,CAACM,KANJ,IAMkBN,iCAAY,CAACM,KAN/B,qBAnBI;AA4BnBgkF,cAAY,EAAE,KA5BK;AA8BnBC,sBAAoB,EAAI,KA9BL;AA+BnBC,wBAAsB,EAAE;AA/BL,CApuBc,iBAswBnCjmF,iCAAY,CAACK,IAtwBsB,IAswBd;AAEnB6lF,OAAK,aAFc;AAGnBC,WAAS,aAHU;AAKnBxB,cAAY,EAAEljF,iCAAY,CAACG,MALR;AAOnBqiF,QAAM,EAAE,CACJxiF,iCAAY,CAACO,WADT,CAPW;AAWnBqiF,YAAU,qCACJ5iF,iCAAY,CAACO,WADT,IACwBC,sCAAiB,CAACJ,KAD1C,gBAXS;AAenB0iF,iBAAe,+CACT9iF,iCAAY,CAACC,IADJ,IACkBD,iCAAY,CAACO,WAD/B,qBAETP,iCAAY,CAACE,IAFJ,IAEkBF,iCAAY,CAACO,WAF/B,qBAGTP,iCAAY,CAACG,MAHJ,IAGkBH,iCAAY,CAACO,WAH/B,qBAITP,iCAAY,CAACI,KAJJ,IAIkBJ,iCAAY,CAACO,WAJ/B,qBAKTP,iCAAY,CAACK,QALJ,IAKkBL,iCAAY,CAACO,WAL/B,qBAMTP,iCAAY,CAACM,KANJ,IAMkBN,iCAAY,CAACO,WAN/B,qBAfI;AAwBnB+jF,cAAY,EAAE,KAxBK;AA0BnBC,sBAAoB,EAAI,KA1BL;AA2BnBC,wBAAsB,EAAE;AA3BL,CAtwBc,iBAAlC;AAqyBA,IAAMM,wBAAwB,sDAC/B7iF,4BAAO,CAACzD,MADuB,IACRD,iCAAY,CAACC,MADL,wBAE/ByD,4BAAO,CAAClD,KAFuB,IAERR,iCAAY,CAACQ,KAFL,wBAG/BkD,4BAAO,CAACjD,IAHuB,IAGRT,iCAAY,CAACS,IAHL,wBAI/BiD,4BAAO,CAACrD,IAJuB,IAIRL,iCAAY,CAACK,IAJL,wBAK/BqD,4BAAO,CAACtD,MALuB,IAKRJ,iCAAY,CAACI,MALL,wBAM/BsD,4BAAO,CAAChD,KANuB,IAMRV,iCAAY,CAACU,KANL,wBAO/BgD,4BAAO,CAAC/C,GAPuB,IAORX,iCAAY,CAACW,GAPL,wBAQ/B+C,4BAAO,CAAC9C,UARuB,IAQRZ,iCAAY,CAACY,UARL,wBAS/B8C,4BAAO,CAAC7C,OATuB,IASRb,iCAAY,CAACa,OATL,wBAU/B6C,4BAAO,CAAC5C,MAVuB,IAURd,iCAAY,CAACc,MAVL,wBAW/B4C,4BAAO,CAAC3C,GAXuB,IAWRf,iCAAY,CAACe,GAXL,wBAY/B2C,4BAAO,CAACzC,GAZuB,IAYRjB,iCAAY,CAACiB,GAZL,wBAa/ByC,4BAAO,CAAC1C,MAbuB,IAaRhB,iCAAY,CAACgB,MAbL,wBAc/B0C,4BAAO,CAACxC,IAduB,IAcRlB,iCAAY,CAACkB,IAdL,wBAe/BwC,4BAAO,CAACvC,YAfuB,IAeRnB,iCAAY,CAACmB,YAfL,wBAgB/BuC,4BAAO,CAACtC,IAhBuB,IAgBRpB,iCAAY,CAACoB,IAhBL,wBAiB/BsC,4BAAO,CAACrC,OAjBuB,IAiBRrB,iCAAY,CAACqB,OAjBL,wBAkB/BqC,4BAAO,CAACpC,MAlBuB,IAkBRtB,iCAAY,CAACsB,MAlBL,wBAmB/BoC,4BAAO,CAACnC,MAnBuB,IAmBRvB,iCAAY,CAACuB,MAnBL,wBAoB/BmC,4BAAO,CAAClC,IApBuB,IAoBRxB,iCAAY,CAACwB,IApBL,wBAA9B;AAuBA,IAAMglF,gBAAgB,8CACvBxmF,iCAAY,CAACC,MADU,IACOyD,4BAAO,CAACzD,MADf,oBAEvBD,iCAAY,CAACE,QAFU,IAEOwD,4BAAO,CAACzD,MAFf,oBAGvBD,iCAAY,CAACG,GAHU,IAGOuD,4BAAO,CAACzD,MAHf,oBAIvBD,iCAAY,CAACM,MAJU,IAIOoD,4BAAO,CAACzD,MAJf,oBAKvBD,iCAAY,CAACO,WALU,IAKOmD,4BAAO,CAACzD,MALf,oBAMvBD,iCAAY,CAACK,IANU,IAMOqD,4BAAO,CAACrD,IANf,oBAOvBL,iCAAY,CAACI,MAPU,IAOOsD,4BAAO,CAACtD,MAPf,oBAQvBJ,iCAAY,CAACQ,KARU,IAQOkD,4BAAO,CAAClD,KARf,oBASvBR,iCAAY,CAACS,IATU,IASOiD,4BAAO,CAACjD,IATf,oBAUvBT,iCAAY,CAACU,KAVU,IAUOgD,4BAAO,CAAChD,KAVf,oBAWvBV,iCAAY,CAACY,UAXU,IAWO8C,4BAAO,CAAC9C,UAXf,oBAYvBZ,iCAAY,CAACa,OAZU,IAYO6C,4BAAO,CAAC7C,OAZf,oBAavBb,iCAAY,CAACe,GAbU,IAaO2C,4BAAO,CAAC3C,GAbf,oBAcvBf,iCAAY,CAACc,MAdU,IAcO4C,4BAAO,CAAC5C,MAdf,oBAevBd,iCAAY,CAACiB,GAfU,IAeOyC,4BAAO,CAACzC,GAff,oBAgBvBjB,iCAAY,CAACgB,MAhBU,IAgBO0C,4BAAO,CAAC1C,MAhBf,oBAiBvBhB,iCAAY,CAACkB,IAjBU,IAiBOwC,4BAAO,CAACxC,IAjBf,oBAkBvBlB,iCAAY,CAACmB,YAlBU,IAkBOuC,4BAAO,CAACvC,YAlBf,oBAmBvBnB,iCAAY,CAACoB,IAnBU,IAmBOsC,4BAAO,CAACtC,IAnBf,oBAoBvBpB,iCAAY,CAACqB,OApBU,IAoBOqC,4BAAO,CAACrC,OApBf,oBAqBvBrB,iCAAY,CAACsB,MArBU,IAqBOoC,4BAAO,CAACpC,MArBf,oBAsBvBtB,iCAAY,CAACuB,MAtBU,IAsBOmC,4BAAO,CAACnC,MAtBf,oBAuBvBvB,iCAAY,CAACwB,IAvBU,IAuBOkC,4BAAO,CAAClC,IAvBf,oBAAtB;AA0BA,IAAMilF,qBAAqB,GAAG;AACjC9mF,cAAY,EAAK,GADgB;AAEjCE,SAAO,EAAU,EAFgB;AAGjC6mF,iBAAe,EAAE;AAHgB,CAA9B;AAMA,IAAMC,YAAY,sCAEnBxkF,gCAAW,CAACC,IAFO,IAEC;AAClBwkF,cAAY,EAAM,EADA;AAElBC,eAAa,EAAK,EAFA;AAGlBC,UAAQ,EAAU,EAHA;AAIlBC,UAAQ,EAAU,GAJA;AAKlBC,WAAS,EAAS,EALA;AAMlBC,WAAS,EAAS,EANA;AAOlBC,kBAAgB,EAAE,GAPA;AAQlBC,cAAY,EAAM,IARA;AASlBC,cAAY,EAAM,KATA;AAUlBC,gBAAc,EAAI;AAVA,CAFD,gBAenBllF,gCAAW,CAACE,KAfO,IAeE;AACnBukF,cAAY,EAAM,GADC;AAEnBC,eAAa,EAAK,EAFC;AAGnBC,UAAQ,EAAU,GAHC;AAInBC,UAAQ,EAAU,GAJC;AAKnBC,WAAS,EAAS,EALC;AAMnBC,WAAS,EAAS,EANC;AAOnBC,kBAAgB,EAAE,GAPC;AAQnBC,cAAY,EAAM,IARC;AASnBC,cAAY,EAAM,IATC;AAUnBC,gBAAc,EAAI;AAVC,CAfF,gBA4BnBllF,gCAAW,CAACG,MA5BO,IA4BG;AACpBskF,cAAY,EAAO,GADC;AAEpBC,eAAa,EAAM,EAFC;AAGpBC,UAAQ,EAAW,GAHC;AAIpBC,UAAQ,EAAW,GAJC;AAKpBC,WAAS,EAAU,EALC;AAMpBC,WAAS,EAAU,EANC;AAOpBC,kBAAgB,EAAG,CAPC;AAQpBC,cAAY,EAAO,IARC;AASpBC,cAAY,EAAO,IATC;AAUpBC,gBAAc,EAAK;AAVC,CA5BH,gBAyCnBllF,gCAAW,CAACI,KAzCO,IAyCE;AACnBqkF,cAAY,EAAO,GADA;AAEnBC,eAAa,EAAM,EAFA;AAGnBC,UAAQ,EAAW,GAHA;AAInBC,UAAQ,EAAW,GAJA;AAKnBC,WAAS,EAAU,EALA;AAMnBC,WAAS,EAAU,EANA;AAOnBC,kBAAgB,EAAG,CAPA;AAQnBC,cAAY,EAAO,IARA;AASnBC,cAAY,EAAO,IATA;AAUnBC,gBAAc,EAAK;AAVA,CAzCF,gBAsDnBllF,gCAAW,CAACK,IAtDO,IAsDC;AAClBokF,cAAY,EAAM,GADA;AAElBC,eAAa,EAAK,EAFA;AAGlBC,UAAQ,EAAU,GAHA;AAIlBC,UAAQ,EAAU,GAJA;AAKlBC,WAAS,EAAS,EALA;AAMlBC,WAAS,EAAS,EANA;AAOlBC,kBAAgB,EAAE,IAPA;AAQlBC,cAAY,EAAM,IARA;AASlBC,cAAY,EAAM,IATA;AAUlBC,gBAAc,EAAI;AAVA,CAtDD,gBAAlB;AAoEA,SAASC,cAAT,CAAwBpB,KAAxB,EAAkD;AACrD,SAAOA,KAAK,GAAGM,gBAAgB,CAACN,KAAD,CAAnB,GAA6BxiF,4BAAO,CAACzD,MAAjD;AACH;AAEM,SAASsnF,qBAAT,CAA+B7E,OAA/B,EAAgF;AACnF,SAAO6D,wBAAwB,CAAC7D,OAAD,CAA/B;AACH;;AAED,SAASP,gBAAT,CAA8B7mD,IAA9B,EAA6C8mD,QAA7C,EAAgEjpE,GAAhE,EAA8EyT,GAA9E,EAA4F;AACxF,MAAMy1D,cAAc,GAAG/mD,IAAI,CAAC8mD,QAAD,CAA3B;;AAEA,MAAIC,cAAc,IAAIA,cAAc,CAACr9D,cAAf,CAA8B7L,GAA9B,CAAtB,EAA0D;AACtD,WAAOkpE,cAAc,CAAClpE,GAAD,CAArB;AACH;;AAED,MAAImiB,IAAI,CAACp2B,4BAAD,CAAJ,IAAiBo2B,IAAI,CAACp2B,4BAAD,CAAJ,CAAc8f,cAAd,CAA6B7L,GAA7B,CAArB,EAAwD;AACpD,WAAOmiB,IAAI,CAACp2B,4BAAD,CAAJ,CAAciU,GAAd,CAAP;AACH;;AAED,MAAImH,SAAS,CAACxE,MAAV,IAAoB,CAAxB,EAA2B;AACvB;AACA,WAAO8Q,GAAP;AACH;;AAED,QAAM,IAAIpS,KAAJ,yBAAiC4nE,QAAjC,SAA+CjpE,GAA/C,CAAN;AACH;;AAEM,SAASquE,eAAT,CAAoCtB,KAApC,EAAoD/sE,GAApD,EAAkEyT,GAAlE,EAAgF;AACnF,SAAOu1D,gBAAS,CAAC6B,aAAD,EAAgBkC,KAAhB,EAAuB/sE,GAAvB,EAA4ByT,GAA5B,CAAhB;AACH,C;;;;;ACv8BD;AACA;AACA;AAEA;AAEA;;AAEA,SAAS66D,WAAT,CAAqB3lE,MAArB,EAAmD;AAAA,sBACrBA,MAAM,CAACwF,KAAP,CAAa,GAAb,CADqB;AAAA,MACvCvF,IADuC;AAAA,MACjCF,OADiC;;AAE/C,SAAO;AAAEA,WAAO,EAAPA,OAAF;AAAWE,QAAI,EAAJA;AAAX,GAAP;AACH;;AAEM,SAAS2lE,mBAAT,OAAkH;AAAA,MAAnFxB,KAAmF,QAAnFA,KAAmF;AAAA,MAA5EvD,MAA4E,QAA5EA,MAA4E;AAAA,MAApEr2C,GAAoE,QAApEA,GAAoE;AAErH,MAAM02C,OAAO,GAAIL,MAAM,KAAK1/E,kCAAa,CAACC,UAA1B,GACVskF,eAAe,CAACtB,KAAD,EAAQ,wBAAR,CADL,GAEVsB,eAAe,CAACtB,KAAD,EAAQ,sBAAR,CAFrB;;AAIA,MAAI,CAAClD,OAAL,EAAc;AACV,WAAO,CAAP;AACH;;AAED,MAAM2E,SAAS,GAAIhF,MAAM,KAAK1/E,kCAAa,CAACC,UAA1B,GACZskF,eAAe,CAACtB,KAAD,EAAQ,sBAAR,CADH,GAEZsB,eAAe,CAACtB,KAAD,EAAQ,oBAAR,CAFrB;AAIA,SAAO55C,GAAG,GACJziB,IAAI,CAACuxB,GAAL,CAASusC,SAAT,EAAoBr7C,GAApB,CADI,GAEJq7C,SAFN;AAGH;;AAED,SAASC,aAAT,QAA8E;AAAA,MAArDC,OAAqD,SAArDA,OAAqD;AAAA,MAA5CC,QAA4C,SAA5CA,QAA4C;AAAA,MAAlCC,YAAkC,SAAlCA,YAAkC;AAAA,MAApBpF,MAAoB,SAApBA,MAAoB;AAC1E,SAAOp2D,OAAO,CAACs7D,OAAO,IAAIC,QAAX,IAAuB,CAACC,YAAxB,IAAwCpF,MAAM,KAAK1/E,kCAAa,CAACC,UAAlE,CAAd;AACH;;AAuBM,IAAMq8D,cAAc,GAAG5zC,+BAAO,CAAC,UAAC/S,KAAD,EAAiBovE,IAAjB,EAA6E;AAAA,MAA5DA,IAA4D;AAA5DA,QAA4D,GAAzB,EAAyB;AAAA;;AAAA,MAG3GpmE,GAH2G,GAS3GhJ,KAT2G,CAG3GgJ,GAH2G;AAAA,MAI3GE,MAJ2G,GAS3GlJ,KAT2G,CAI3GkJ,MAJ2G;AAAA,qBAS3GlJ,KAT2G,CAK3GooB,KAL2G;AAAA,MAK3GA,KAL2G,6BAKjG,EALiG;AAAA,MAM3G0hD,OAN2G,GAS3G9pE,KAT2G,CAM3G8pE,OAN2G;AAAA,MAO3Gn8B,MAP2G,GAS3G3tC,KAT2G,CAO3G2tC,MAP2G;AAAA,MAQ3G0hC,qBAR2G,GAS3GrvE,KAT2G,CAQ3GqvE,qBAR2G;AAW/GnmE,QAAM,GAAGA,MAAM,GAAG2lE,WAAW,CAAC3lE,MAAD,CAAd,GAA0BkmE,IAAI,CAAClmE,MAAL,IAAe0lE,eAAe,CAAC,SAAD,EAAY,eAAZ,CAAvE,CAX+G,CAa/G;AACA;;AACA9E,SAAO,GAAGA,OAAO,IAAI,EAArB;AACAA,SAAO,CAACM,OAAR,GAAkBN,OAAO,CAACM,OAAR,IAAmB,EAArC;AACAN,SAAO,CAACI,UAAR,GAAqBJ,OAAO,CAACI,UAAR,IAAsB,EAA3C;AACAJ,SAAO,CAACO,UAAR,GAAqBP,OAAO,CAACO,UAAR,IAAsB,EAA3C;AAEA,MAAMiD,KAAK,GAAIllD,KAAK,CAAC5hC,yCAAoB,CAACC,KAAtB,CAAL,IAAqCmoF,eAAe,CAAC,SAAD,EAAaxmD,KAAK,CAAC2hD,MAAN,KAAiB1/E,kCAAa,CAACE,QAAhC,GAA4C,sBAA5C,GAAqE,cAAjF,CAAnE;AACA,MAAMw/E,MAAM,GAAG3hD,KAAK,CAAC5hC,yCAAoB,CAACK,MAAtB,CAAL,IAAsC+nF,eAAe,CAACtB,KAAD,EAAQ,eAAR,CAApE;AArB+G,8BAiC3GllD,KAjC2G,CAwBzG5hC,yCAAoB,CAACE,IAxBoF;AAAA,MAwBpE4oF,IAxBoE,sCAwBrDV,eAAe,CAACtB,KAAD,EAASvD,MAAM,KAAK1/E,kCAAa,CAACE,QAA1B,GAAsC,qBAAtC,GAA8D,aAAtE,CAxBsC;AAAA,+BAiC3G69B,KAjC2G,CAyBzG5hC,yCAAoB,CAACI,KAzBoF;AAAA,MAyBpE2oF,KAzBoE,uCAyBrDX,eAAe,CAACtB,KAAD,EAAQ,cAAR,CAzBsC;AAAA,+BAiC3GllD,KAjC2G,CA0BzG5hC,yCAAoB,CAACG,KA1BoF;AAAA,MA0BpE6oF,KA1BoE,uCA0BrDZ,eAAe,CAACtB,KAAD,EAAQ,cAAR,CA1BsC;AAAA,+BAiC3GllD,KAjC2G,CA2BzG5hC,yCAAoB,CAACQ,QA3BoF;AAAA,MA2BpEkoF,QA3BoE,uCA2BrDN,eAAe,CAACtB,KAAD,EAASvD,MAAM,KAAK1/E,kCAAa,CAACE,QAA1B,GAAsC,yBAAtC,GAAkE,iBAA1E,CA3BsC;AAAA,+BAiC3G69B,KAjC2G,CA4BzG5hC,yCAAoB,CAACO,YA5BoF;AAAA,MA4BpEooF,YA5BoE,uCA4BrDP,eAAe,CAACtB,KAAD,EAAQ,qBAAR,CA5BsC;AAAA,+BAiC3GllD,KAjC2G,CA6BzG5hC,yCAAoB,CAACS,OA7BoF;AAAA,MA6BpEgoF,OA7BoE,uCA6BrDL,eAAe,CAACtB,KAAD,EAAQ,gBAAR,CA7BsC;AAAA,MA8BpE55C,GA9BoE,GAiC3GtL,KAjC2G,CA8BzG5hC,yCAAoB,CAACM,UA9BoF;AAAA,MA+BpE4lC,MA/BoE,GAiC3GtE,KAjC2G,CA+BzG5hC,yCAAoB,CAACU,MA/BoF;AAAA,MAgC9DsmF,iBAhC8D,GAiC3GplD,KAjC2G,CAgCzG5hC,yCAAoB,CAACW,iBAhCoF,GAmC/G;;AACAusC,KAAG,GAAGo7C,mBAAmB,CAAC;AAAExB,SAAK,EAALA,KAAF;AAASvD,UAAM,EAANA,MAAT;AAAiBr2C,OAAG,EAAHA;AAAjB,GAAD,CAAzB;AAEA,MAAMgtC,QAAQ,GAAGgO,cAAc,CAACpB,KAAD,CAA/B;AACA,MAAIz3D,OAAO,GAAI60D,wBAAwB,CAAC;AAAEZ,WAAO,EAAPA,OAAF;AAAWpJ,YAAQ,EAARA,QAAX;AAAqBx3D,UAAM,EAANA,MAArB;AAA6BF,OAAG,EAAHA,GAA7B;AAAkC+gE,UAAM,EAANA,MAAlC;AAA0Cp8B,UAAM,EAANA;AAA1C,GAAD,CAAvC,CAvC+G,CAwC/G;;AACA93B,SAAO,GAAGmsB,8BAAM,CAACnsB,OAAO,CAAC5C,KAAR,CAAc,CAAd,EAAiBygB,GAAjB,CAAD,EAAwBy0C,aAAxB,CAAhB,CAzC+G,CA0C/G;;AACA,MAAMsH,QAAQ,GAAG55D,OAAO,CAAC3S,MAAR,GAAiB,CAAlC;;AAEA,MAAIusE,QAAJ,EAAc;AACVP,YAAQ,GAAG,IAAX;AACH;;AAEDD,SAAO,GAAGD,aAAa,CAAC;AAAEC,WAAO,EAAPA,OAAF;AAAWC,YAAQ,EAARA,QAAX;AAAqBC,gBAAY,EAAZA,YAArB;AAAmCpF,UAAM,EAANA;AAAnC,GAAD,CAAvB;AAEA,MAAM2F,KAAK,GAAG3E,sBAAsB,CAAC;AAAEjB,WAAO,EAAPA,OAAF;AAAW5gE,UAAM,EAANA;AAAX,GAAD,CAApC;AAEA,SAAO;AAAEomE,QAAI,EAAJA,IAAF;AAAQhC,SAAK,EAALA,KAAR;AAAepkE,UAAM,EAANA,MAAf;AAAuBqmE,SAAK,EAALA,KAAvB;AAA8BC,SAAK,EAALA,KAA9B;AAAqCN,YAAQ,EAARA,QAArC;AAA+CC,gBAAY,EAAZA,YAA/C;AACHF,WAAO,EAAPA,OADG;AACMnF,WAAO,EAAPA,OADN;AACeC,UAAM,EAANA,MADf;AACuBl0D,WAAO,EAAPA,OADvB;AACgC6d,OAAG,EAAHA,GADhC;AACqC+7C,YAAQ,EAARA,QADrC;AAC+CzmE,OAAG,EAAHA,GAD/C;AACoD0jB,UAAM,EAANA,MADpD;AAC4DgjD,SAAK,EAALA,KAD5D;AACmElC,qBAAiB,EAAjBA,iBADnE;AACsF6B,yBAAqB,EAArBA;AADtF,GAAP;AAEH,CAvDoC,CAA9B,C;;;;;ACzDP;AAEA;AAEO,SAASM,oBAAT,CAA8BzmE,MAA9B,EAA+C;AAElD,MAAI,CAACA,MAAL,EAAa;AACT,UAAM,IAAItH,KAAJ,mCAAN;AACH;;AAED,MAAI,CAACsH,MAAM,CAAC1H,KAAP,CAAa,4BAAb,CAAL,EAAiD;AAC7C,UAAM,IAAII,KAAJ,6CAAqDsH,MAArD,CAAN;AACH;;AARiD,sBAUxBA,MAAM,CAACwF,KAAP,CAAa,GAAb,CAVwB;AAAA,MAU1CvF,IAV0C;AAAA,MAUpCF,OAVoC;;AAYlD,MAAI,CAACxJ,2BAAM,CAACwJ,OAAD,CAAP,IAAoBxJ,2BAAM,CAACwJ,OAAD,CAAN,CAAgBpG,OAAhB,CAAwBsG,IAAxB,MAAkC,CAAC,CAA3D,EAA8D;AAC1D,UAAM,IAAIvH,KAAJ,qCAAN;AACH;AACJ;AAEM,SAASguE,4BAAT,CAAsCxnD,KAAtC,EAA2Dlf,MAA3D,EAAsF;AAAA,MAAhDkf,KAAgD;AAAhDA,SAAgD,GAA/B,EAA+B;AAAA;;AAAA,MAA3Blf,MAA2B;AAA3BA,UAA2B,GAAT,OAAS;AAAA;;AAEzF,MAAMD,OAAO,GAAGC,MAAM,CAACwF,KAAP,CAAa,GAAb,EAAkB,CAAlB,CAAhB;AAEA,MAAMmhE,2BAA2B,GAAGtwE,kDAA6B,CAACsD,OAA9B,CAAsCoG,OAAtC,MAAmD,CAAC,CAAxF;;AAEA,MAAI,CAAC4mE,2BAAD,IAAgCznD,KAAK,CAACklD,KAAN,KAAgBlmF,iCAAY,CAACO,WAAjE,EAA8E;AAC1E,UAAM,IAAIia,KAAJ,8BAAsCwmB,KAAK,CAACklD,KAA5C,sBAAoErkE,OAApE,CAAN;AACH;;AAED,MAAI,CAAC4mE,2BAAD,IAAgCznD,KAAK,CAAC5hC,yCAAoB,CAACW,iBAAtB,CAAzC,EAAmF;AAC/E,UAAM,IAAIya,KAAJ,YAAoBpb,yCAAoB,CAACW,iBAAzC,iCAAwF8hB,OAAxF,CAAN;AACH;;AAED,MAAI4mE,2BAA2B,IAAIznD,KAAK,CAAC5hC,yCAAoB,CAACW,iBAAtB,CAApC,IAAgFihC,KAAK,CAACklD,KAAN,KAAgBlmF,iCAAY,CAACO,WAAjH,EAA8H;AAC1H,UAAM,IAAIia,KAAJ,YAAoBpb,yCAAoB,CAACW,iBAAzC,qCAA4FihC,KAAK,CAACklD,KAAlG,CAAN;AACH;;AAED,MAAIuC,2BAA2B,IAAIznD,KAAK,CAACklD,KAAN,KAAgBlmF,iCAAY,CAACO,WAA5D,IAA2EygC,KAAK,CAAC5hC,yCAAoB,CAACW,iBAAtB,CAAhF,IACG,OAAOihC,KAAK,CAAC5hC,yCAAoB,CAACW,iBAAtB,CAAZ,KAAyD,QADhE,EAC0E;AACtE,UAAM,IAAIya,KAAJ,YAAoBpb,yCAAoB,CAACW,iBAAzC,iCAAN;AACH;;AAED,MAAI0oF,2BAA2B,IAAIznD,KAAK,CAACklD,KAAN,KAAgBlmF,iCAAY,CAACO,WAA5D,IAA2EygC,KAAK,CAAC5hC,yCAAoB,CAACW,iBAAtB,CAAhF,IACGqY,+CAA0B,CAACyJ,OAAD,CAA1B,CAAoCpG,OAApC,CAA4CulB,KAAK,CAAC5hC,yCAAoB,CAACW,iBAAtB,CAAjD,MAA+F,CAAC,CADvG,EAC0G;AACtG,UAAM,IAAIya,KAAJ,YAAoBpb,yCAAoB,CAACW,iBAAzC,UAAiEihC,KAAK,CAAC5hC,yCAAoB,CAACW,iBAAtB,CAAtE,+CAA0JihC,KAAK,CAACklD,KAAhK,CAAN;AACH;AAEJ;AAEM,SAASwC,mBAAT,CAA6B1nD,KAA7B,EAAkDpoB,KAAlD,EAAkE;AAAA,MAArCooB,KAAqC;AAArCA,SAAqC,GAApB,EAAoB;AAAA;;AAErE,MAAI,CAACA,KAAL,EAAY;AACR,UAAM,IAAIxmB,KAAJ,kCAAN;AACH;;AAED,MAAM0rE,KAAK,GAAGllD,KAAK,CAAC5hC,yCAAoB,CAACC,KAAtB,CAAL,IAAqCmoF,eAAe,CAAC,SAAD,EAAaxmD,KAAK,CAAC5hC,yCAAoB,CAACK,MAAtB,CAAL,KAAuCwD,kCAAa,CAACE,QAAtD,GAAkE,sBAAlE,GAA2F,cAAvG,CAAlE;;AAEA,MAAI,CAAC6gF,aAAa,CAACkC,KAAD,CAAlB,EAA2B;AACvB,UAAM,IAAI1rE,KAAJ,4BAAoC0rE,KAApC,oBAA0DltE,MAAM,CAACC,IAAP,CAAY+qE,aAAa,CAACkC,KAAD,CAAzB,EAAkC7sE,IAAlC,CAAuC,IAAvC,CAA1D,CAAN;AACH;;AAVoE,eAsBjE2nB,KAtBiE;AAAA,MAa1BmnD,KAb0B,UAa/D/oF,yCAAoB,CAACI,KAb0C;AAAA,MAc1B4oF,KAd0B,UAc/DhpF,yCAAoB,CAACG,KAd0C;AAAA,MAe1B2oF,IAf0B,UAe/D9oF,yCAAoB,CAACE,IAf0C;AAAA,MAgB1BwoF,QAhB0B,UAgB/D1oF,yCAAoB,CAACQ,QAhB0C;AAAA,MAiB1BmoF,YAjB0B,UAiB/D3oF,yCAAoB,CAACO,YAjB0C;AAAA,MAkB1BkoF,OAlB0B,UAkB/DzoF,yCAAoB,CAACS,OAlB0C;AAAA,MAmB1B8iF,MAnB0B,UAmB/DvjF,yCAAoB,CAACK,MAnB0C;AAAA,MAoB1BkpF,UApB0B,UAoB/DvpF,yCAAoB,CAACM,UApB0C;AAAA,MAqB1B4lC,MArB0B,UAqB/DlmC,yCAAoB,CAACU,MArB0C;;AAwBrE,MAAIqoF,KAAK,IAAIX,eAAe,CAACtB,KAAD,EAAQ,QAAR,CAAf,CAAiCzqE,OAAjC,CAAyC0sE,KAAzC,MAAoD,CAAC,CAAlE,EAAqE;AACjE,UAAM,IAAI3tE,KAAJ,uBAA+Bpb,yCAAoB,CAACI,KAApD,aAAmE0mF,KAAnE,iBAAsFiC,KAAtF,mBAA2GX,eAAe,CAACtB,KAAD,EAAQ,QAAR,CAAf,CAAiC7sE,IAAjC,CAAsC,IAAtC,CAA3G,CAAN;AACH;;AAED,MAAI+uE,KAAK,IAAIZ,eAAe,CAACtB,KAAD,EAAQ,QAAR,CAAf,CAAiCzqE,OAAjC,CAAyC2sE,KAAzC,MAAoD,CAAC,CAAlE,EAAqE;AACjE,UAAM,IAAI5tE,KAAJ,uBAA+Bpb,yCAAoB,CAACG,KAApD,aAAmE2mF,KAAnE,iBAAsFkC,KAAtF,mBAA2GZ,eAAe,CAACtB,KAAD,EAAQ,QAAR,CAAf,CAAiC7sE,IAAjC,CAAsC,IAAtC,CAA3G,CAAN;AACH;;AAED,MAAI6uE,IAAI,IAAIV,eAAe,CAACtB,KAAD,EAAQ,OAAR,CAAf,CAAgCzqE,OAAhC,CAAwCysE,IAAxC,MAAkD,CAAC,CAA/D,EAAkE;AAC9D,UAAM,IAAI1tE,KAAJ,uBAA+Bpb,yCAAoB,CAACE,IAApD,aAAkE4mF,KAAlE,iBAAqFgC,IAArF,mBAAyGV,eAAe,CAACtB,KAAD,EAAQ,OAAR,CAAf,CAAgC7sE,IAAhC,CAAqC,IAArC,CAAzG,CAAN;AACH;;AAED,MAAIyuE,QAAQ,KAAK,KAAjB,EAAwB;AACpB,UAAM,IAAIttE,KAAJ,YAAoBpb,yCAAoB,CAACQ,QAAzC,2BAAN;AACH;;AAED,MAAImoF,YAAY,IAAI,CAACP,eAAe,CAACtB,KAAD,EAAQ,mBAAR,CAApC,EAAkE;AAC9D,UAAM,IAAI1rE,KAAJ,YAAoBpb,yCAAoB,CAACO,YAAzC,iCAAmFumF,KAAnF,aAAN;AACH;;AAED,MAAIvD,MAAM,IAAI6E,eAAe,CAACtB,KAAD,EAAQ,SAAR,CAAf,CAAkCzqE,OAAlC,CAA0CknE,MAA1C,MAAsD,CAAC,CAArE,EAAwE;AACpE,UAAM,IAAInoE,KAAJ,uBAA+Bpb,yCAAoB,CAACK,MAApD,aAAoEymF,KAApE,iBAAuFvD,MAAvF,mBAA6G6E,eAAe,CAACtB,KAAD,EAAQ,SAAR,CAAf,CAAkC7sE,IAAlC,CAAuC,IAAvC,CAA7G,CAAN;AACH;;AAED,MAAIsvE,UAAU,KAAKjvE,SAAnB,EAA8B;AAC1B,QAAI,OAAOivE,UAAP,KAAsB,QAA1B,EAAoC;AAChC,YAAM,IAAIpqE,SAAJ,qBAAiCnf,yCAAoB,CAACM,UAAtD,8BAA2FipF,UAA3F,CAAN;AACH;;AAED,QAAIA,UAAU,GAAG,CAAjB,EAAoB;AAChB,YAAM,IAAInuE,KAAJ,qBAA6Bpb,yCAAoB,CAACM,UAAlD,kCAA2FipF,UAA3F,CAAN;AACH;;AAED,QAAMC,UAAU,GAAIjG,MAAM,KAAK1/E,kCAAa,CAACE,QAA1B,GACbqkF,eAAe,CAACtB,KAAD,EAAQ,oBAAR,CADF,GAEbsB,eAAe,CAACtB,KAAD,EAAQ,sBAAR,CAFrB;;AAIA,QAAIyC,UAAU,GAAGC,UAAjB,EAA6B;AACzB,YAAM,IAAIpuE,KAAJ,qBAA6Bpb,yCAAoB,CAACM,UAAlD,6BAAsFkpF,UAAtF,cAA2GD,UAA3G,CAAN;AACH;AACJ;;AAED,MAAIrjD,MAAM,KAAK5rB,SAAf,EAA0B;AACtB,QAAI,OAAO4rB,MAAP,KAAkB,QAAtB,EAAgC;AAC5B,YAAM,IAAI/mB,SAAJ,qBAAiCnf,yCAAoB,CAACU,MAAtD,8BAAuF6oF,UAAvF,CAAN;AACH;;AAED,QAAME,UAAU,GAAGX,IAAI,IAAIV,eAAe,CAACtB,KAAD,EAASllD,KAAK,CAAC2hD,MAAN,KAAiB1/E,kCAAa,CAACE,QAAhC,GAA4C,qBAA5C,GAAoE,aAA5E,CAA1C;;AALsB,eAOY+kF,IAAI,KAAK/lF,gCAAW,CAACM,UAAtB,GAAoC;AACjEukF,eAAS,EAAEL,YAAY,CAACxkF,gCAAW,CAACE,KAAb,CAAZ,CAAgC2kF,SADsB;AAEjEC,eAAS,EAAEN,YAAY,CAACxkF,gCAAW,CAACK,IAAb,CAAZ,CAA+BykF;AAFuB,KAApC,GAG7BN,YAAY,CAACkC,UAAD,CAVM;AAAA,QAOd7B,SAPc,QAOdA,SAPc;AAAA,QAOHC,SAPG,QAOHA,SAPG;;AAYtB,QAAI3hD,MAAM,GAAG0hD,SAAT,IAAsB1hD,MAAM,GAAG2hD,SAAnC,EAA8C;AAC1C,YAAM,IAAIzsE,KAAJ,qBAA6Bpb,yCAAoB,CAACU,MAAlD,uBAA4EknF,SAA5E,eAAiGC,SAAjG,iBAAwH3hD,MAAxH,QAAN;AACH;AACJ;;AAED,MAAI,CAACkiD,eAAe,CAACtB,KAAD,EAAQ,cAAR,CAApB,EAA6C;AACzC,UAAM,IAAI1rE,KAAJ,CAAc0rE,KAAd,8CAAN;AACH;;AAED,MAAIvD,MAAM,KAAK1/E,kCAAa,CAACE,QAA7B,EAAuC;AAEnC,QAAI+kF,IAAI,IAAI,CAAE/lF,gCAAW,CAACG,MAAd,EAAsBH,gCAAW,CAACI,KAAlC,EAAyCJ,gCAAW,CAACM,UAArD,EAAkEgZ,OAAlE,CAA0EysE,IAA1E,MAAoF,CAAC,CAAjG,EAAoG;AAChG,YAAM,IAAI1tE,KAAJ,8BAAsCrY,gCAAW,CAACG,MAAlD,kBAAuEW,kCAAa,CAACE,QAArF,aAAN;AACH;;AAED,QAAI,CAACqkF,eAAe,CAACtB,KAAD,EAAQ,sBAAR,CAApB,EAAqD;AACjD,YAAM,IAAI1rE,KAAJ,YAAoBpb,yCAAoB,CAACC,KAAzC,mCAA8E4D,kCAAa,CAACE,QAA5F,sBAAuH+iF,KAAvH,CAAN;AACH;;AAED,QAAI6B,YAAJ,EAAkB;AACd,YAAM,IAAIvtE,KAAJ,YAAoBpb,yCAAoB,CAACO,YAAzC,yBAA2EsD,kCAAa,CAACE,QAAzF,sBAAoH4kF,YAApH,CAAN;AACH;;AAED,QAAIF,OAAJ,EAAa;AACT,YAAM,IAAIrtE,KAAJ,YAAoBpb,yCAAoB,CAACS,OAAzC,4BAAyEoD,kCAAa,CAACE,QAAvF,sBAAkH0kF,OAAlH,CAAN;AACH;AACJ;;AAEDW,8BAA4B,CAACxnD,KAAD,EAAQpoB,KAAK,CAACkJ,MAAd,CAA5B;AACH;AAEM,SAASgnE,mBAAT,CAA6BlwE,KAA7B,EAA6C;AAEhD,MAAI,CAACA,KAAL,EAAY;AACR,UAAM,IAAI4B,KAAJ,kBAAN;AACH;;AAJ+C,MAMxCsH,MANwC,GAMtBlJ,KANsB,CAMxCkJ,MANwC;AAAA,MAMhCkf,KANgC,GAMtBpoB,KANsB,CAMhCooB,KANgC;AAQhDunD,sBAAoB,CAACzmE,MAAD,CAApB;AACA4mE,qBAAmB,CAAC1nD,KAAD,EAAQpoB,KAAR,CAAnB;AACH,C;;AC1KM,IAAMuqD,WAAK,GAAG;AACjB4lB,cAAY,EAAE,qBADG;AAGjBC,WAAS,EAAE,yBAHM;AAIjBjiF,QAAM,EAAK,eAJM;AAMjB/G,cAAY,EAAE,+BANG;AAQjBX,OAAK,EAAO,qBARK;AASjBG,OAAK,EAAO,qBATK;AAUjB2uE,YAAU,EAAE,0BAVK;AAWjB5uE,OAAK,EAAO,qBAXK;AAYjBK,UAAQ,EAAI,wBAZK;AAajBH,QAAM,EAAM,sBAbK;AAcjB20C,QAAM,EAAM,sBAdK;AAejB5uC,KAAG,EAAS,mBAfK;AAiBjB3F,SAAO,EAAQ,uBAjBE;AAkBjBopF,eAAa,EAAE,6BAlBE;AAmBjBtpF,cAAY,EAAG,4BAnBE;AAqBjBupF,MAAI,EAAE,oBArBW;AAsBjBC,MAAI,EAAE,oBAtBW;AAuBjB9oF,MAAI,EAAE,oBAvBW;AAyBjB+oF,WAAS,EAAE,kBAzBM;AA0BjBlgD,QAAM,EAAK,QA1BM;AA2BjBmgD,WAAS,EAAE,WA3BM;AA6BjBC,sBAAoB,EAAE;AA7BL,CAAd,C;;ACAP;AAEO,IAAMC,SAAS,+gBAyBdpmB,WAAK,CAACj6B,MAzBQ,0EAAf,C;;ACFP;AAEA;AAEO,IAAMsgD,WAAW,iBAEhBrmB,WAAK,CAAC6lB,SAFU,2cAmBhB7lB,WAAK,CAACp8D,MAnBU,cAmBOo8D,WAAK,CAAC9iE,IAnBb,8TAgChB8iE,WAAK,CAACp8D,MAhCU,SAgCEo8D,WAAK,CAAC3jE,KAhCR,SAgCmBiC,iCAAY,CAACO,WAhChC,iDAoChBmhE,WAAK,CAACp8D,MApCU,sDAwChBo8D,WAAK,CAAC6lB,SAxCU,SAwCK7lB,WAAK,CAAC39D,GAxCX,SAwCoBA,wBAAG,CAACK,IAxCxB,UAwCmCs9D,WAAK,CAAC+lB,IAxCzC,uMA+ChB/lB,WAAK,CAACp8D,MA/CU,qGAmDhBo8D,WAAK,CAACp8D,MAnDU,SAmDEo8D,WAAK,CAAC3jE,KAnDR,SAmDmBiC,iCAAY,CAACC,IAnDhC,sBAoDhByhE,WAAK,CAACp8D,MApDU,SAoDEo8D,WAAK,CAAC3jE,KApDR,SAoDmBiC,iCAAY,CAACG,MApDhC,gGAwDhBuhE,WAAK,CAAC9iE,IAxDU,WAwDE8iE,WAAK,CAAC9iE,IAxDR,sDA4DhB8iE,WAAK,CAAC9iE,IA5DU,kEAgEhB8iE,WAAK,CAACp8D,MAhEU,iBAgEUo8D,WAAK,CAAC9iE,IAhEhB,wDAoEhB8iE,WAAK,CAAC4lB,YApEU,UAoES5lB,WAAK,CAACp8D,MApEf,sBAqEhBo8D,WAAK,CAAC4lB,YArEU,UAqES5lB,WAAK,CAAC9iE,IArEf,2JA2EhB8iE,WAAK,CAACp8D,MA3EU,mGA+EhBo8D,WAAK,CAACp8D,MA/EU,SA+EEo8D,WAAK,CAAC3jE,KA/ER,SA+EmBiC,iCAAY,CAACO,WA/EhC,mFAoFhBmhE,WAAK,CAACgmB,IApFU,uJA4FhBhmB,WAAK,CAAC+lB,IA5FU,qFAiGhB/lB,WAAK,CAACp8D,MAjGU,UAiGGo8D,WAAK,CAACnjE,YAjGT,gSA2GhBmjE,WAAK,CAACp8D,MA3GU,YA2GKo8D,WAAK,CAACnjE,YA3GX,8GAiHhBmjE,WAAK,CAACp8D,MAjHU,UAiHGo8D,WAAK,CAAC9iE,IAjHT,4EAqHK8iE,WAAK,CAAC+lB,IArHX,yGA0HK/lB,WAAK,CAACgmB,IA1HX,4EA+HhBhmB,WAAK,CAACtjE,OA/HU,8JAuIhBsjE,WAAK,CAACimB,SAvIU,6MAgJhBjmB,WAAK,CAACp8D,MAhJU,SAgJEo8D,WAAK,CAAC3jE,KAhJR,SAgJmBiC,iCAAY,CAACI,KAhJhC,UAgJ4CshE,WAAK,CAACimB,SAhJlD,kEAAjB,C;;ACJP;AAEA;AAEO,IAAMK,WAAW,iBAEhBtmB,WAAK,CAAC6lB,SAFU,SAEK7lB,WAAK,CAAC1jE,MAFX,SAEuBwD,kCAAa,CAACE,QAFrC,UAEoDggE,WAAK,CAACtjE,OAF1D,wCAAjB,C;;ACJP;AAEA;AAEO,IAAM6pF,aAAa,iBAElBvmB,WAAK,CAACp8D,MAFY,SAEAo8D,WAAK,CAACvjE,QAFN,SAEoBkD,oCAAe,CAACE,SAFpC,qGAQlBmgE,WAAK,CAACp8D,MARY,SAQAo8D,WAAK,CAACvjE,QARN,SAQoBkD,oCAAe,CAACE,SARpC,UAQoDmgE,WAAK,CAACgmB,IAR1D,wCAAnB,C;;ACJP;AACA;AAEA;AAEO,IAAMQ,UAAU,iBAEfxmB,WAAK,CAACp8D,MAFS,SAEGo8D,WAAK,CAAC9jE,KAFT,SAEoBW,iCAAY,CAACK,IAFjC,gEAMf8iE,WAAK,CAACp8D,MANS,SAMGo8D,WAAK,CAAC9jE,KANT,SAMoBW,iCAAY,CAACI,MANjC,UAM8C+iE,WAAK,CAAC+lB,IANpD,6DAUf/lB,WAAK,CAACp8D,MAVS,SAUGo8D,WAAK,CAAC1jE,MAVT,SAUqBwD,kCAAa,CAACC,UAVnC,SAUmDigE,WAAK,CAAC/uB,MAVzD,SAUqEhxC,kCAAa,CAACE,QAVnF,SAUiG6/D,WAAK,CAAC9jE,KAVvG,SAUkHW,iCAAY,CAACI,MAV/H,UAU4I+iE,WAAK,CAACgmB,IAVlJ,SAU4JhmB,WAAK,CAACgmB,IAVlK,SAU4K5lF,gCAAW,CAACtD,MAVxL,qFAcoB0mF,YAAY,CAACxkF,gCAAW,CAACE,KAAb,CAAZ,CAAgCykF,QAdpD,0BAgBX3jB,WAAK,CAACp8D,MAhBK,SAgBOo8D,WAAK,CAAC9jE,KAhBb,SAgBwBW,iCAAY,CAACI,MAhBrC,UAgBkD+iE,WAAK,CAACgmB,IAhBxD,SAgBkEhmB,WAAK,CAACgmB,IAhBxE,SAgBkF5lF,gCAAW,CAACtD,MAhB9F,oGAqBoB0mF,YAAY,CAACxkF,gCAAW,CAACE,KAAb,CAAZ,CAAgCykF,QArBpD,0BAuBX3jB,WAAK,CAACp8D,MAvBK,SAuBOo8D,WAAK,CAAC9jE,KAvBb,SAuBwBW,iCAAY,CAACI,MAvBrC,UAuBkD+iE,WAAK,CAACgmB,IAvBxD,SAuBkEhmB,WAAK,CAACgmB,IAvBxE,SAuBkF5lF,gCAAW,CAACtD,MAvB9F,+DAAhB,C;;ACLP;AACA;AACA;AAEA;AAEA,IAAM2pF,qBAAqB,GAAG,GAA9B;AAEO,SAASC,qBAAT,OAAkH;AAAA,MAAjFvkD,MAAiF,QAAjFA,MAAiF;AAAA,6BAAzEwkD,UAAyE;AAAA,MAAzEA,UAAyE,gCAA5D,CAA4D;AAErH,SAAO9wE,MAAM,CAACC,IAAP,CAAY0tE,YAAZ,EAA0BvtE,GAA1B,CAA8B,UAAA8uE,IAAI,EAAI;AAEzC,QAAMlnD,KAAK,GAAG2lD,YAAY,CAACuB,IAAD,CAA1B;AACA,QAAM6B,YAAY,GAAGzkD,MAAM,IAAItE,KAAK,CAAC6lD,aAArC;AACA,QAAMmD,mBAAmB,GAAGhpD,KAAK,CAACkmD,gBAAlC;AACA,QAAM+C,YAAY,GAAGpgE,IAAI,CAACsxB,KAAL,CAAW4uC,YAAY,GAAGH,qBAAf,GAAuC,CAAlD,CAArB;AAEA,mEAE0C5oD,KAAK,CAAC8lD,QAFhD,kCAIY3jB,WAAK,CAAC6lB,SAJlB,2CAK0BhoD,KAAK,CAAC8lD,QALhC,4CAM0B9lD,KAAK,CAAC+lD,QANhC,4CAO0Bz6C,2BAAG,CAACH,4BAAI,CAAC49C,YAAD,EAAe,EAAf,CAAL,EAAyB,EAAzB,CAP7B,mDAUY5mB,WAAK,CAACp8D,MAVlB,cAUmCo8D,WAAK,CAAC9iE,IAVzC,yCAWuB0pF,YAXvB,8CAY2BzkD,MAAM,IAAItE,KAAK,CAACgmD,SAZ3C,+CAa2B1hD,MAAM,IAAItE,KAAK,CAACimD,SAb3C,oDAgBY9jB,WAAK,CAACp8D,MAhBlB,SAgB8Bo8D,WAAK,CAACvjE,QAhBpC,SAgBkDkD,oCAAe,CAACE,SAhBlE,UAgBkFmgE,WAAK,CAACnjE,YAhBxF,8EAkB0BssC,2BAAG,CAACH,4BAAI,CAAC49C,YAAD,EAAe,EAAf,CAAL,EAAyB,EAAzB,CAlB7B,mDAqBY5mB,WAAK,CAACp8D,MArBlB,UAqB+Bo8D,WAAK,CAACnjE,YArBrC,yCAsBuBmsC,4BAAI,CAAC49C,YAAD,EAAe,EAAf,CAAJ,GAAyB,CAtBhD,8CAuB2B59C,4BAAI,CAAC49C,YAAD,EAAe,EAAf,CAvB/B,6CAwB2B59C,4BAAI,CAAC49C,YAAD,EAAe,EAAf,CAxB/B,mEA2BY5mB,WAAK,CAACp8D,MA3BlB,UA2B+Bo8D,WAAK,CAACnjE,YA3BrC,UA2BwDmjE,WAAK,CAAC+lB,IA3B9D,4CA4B2Bc,mBA5B3B,mEA+BY7mB,WAAK,CAACgmB,IA/BlB,SA+B4BhmB,WAAK,CAACgmB,IA/BlC,SA+B4CnpF,iCAAY,CAACe,GA/BzD,4BAgCYoiE,WAAK,CAACgmB,IAhClB,SAgC4BhmB,WAAK,CAACgmB,IAhClC,SAgC4CnpF,iCAAY,CAACgB,MAhCzD,yCAiCuBmrC,4BAAI,CAAC49C,YAAD,EAAe,EAAf,CAAJ,GAAyB,CAjChD,8CAkC2B59C,4BAAI,CAAC49C,YAAD,EAAe,EAAf,CAlC/B,6CAmC2B59C,4BAAI,CAAC49C,YAAD,EAAe,EAAf,CAnC/B,mDAsCY5mB,WAAK,CAACp8D,MAtClB,SAsC8Bo8D,WAAK,CAAC5jE,KAtCpC,SAsC+CoD,iCAAY,CAACC,IAtC5D,+CAuC8BinB,IAAI,CAACqgE,IAAL,CAAUH,YAAY,GAAG,CAAzB,CAvC9B,mDA0CY5mB,WAAK,CAACp8D,MA1ClB,SA0C8Bo8D,WAAK,CAAC5jE,KA1CpC,SA0C+CoD,iCAAY,CAACE,IA1C5D,2FA8CYsgE,WAAK,CAACp8D,MA9ClB,SA8C8Bo8D,WAAK,CAAC1jE,MA9CpC,SA8CgDwD,kCAAa,CAACE,QA9C9D,+CA+C8BgpC,4BAAI,CAAC49C,YAAD,EAAetD,qBAAqB,CAACC,eAArC,CA/ClC,mDAkDYvjB,WAAK,CAACimB,SAlDlB,0CAmDyBj9C,4BAAI,CAAC49C,YAAD,EAAe,CAAf,CAnD7B,mDAsDY5mB,WAAK,CAACtjE,OAtDlB,0CAuDwBmhC,KAAK,CAAComD,YAAN,GAAqB,OAArB,GAA+B,MAvDvD,wCAwDuBj7C,4BAAI,CAAC49C,YAAD,EAAetD,qBAAqB,CAAC5mF,OAArC,CAxD3B,8CAyD4BssC,4BAAI,CAAC49C,YAAD,EAAetD,qBAAqB,CAAC5mF,OAArC,CAzDhC,mDA4DYsjE,WAAK,CAACxjE,YA5DlB,0CA6DwBqhC,KAAK,CAACmmD,YAAN,GAAqB,OAArB,GAA+B,MA7DvD,wCA8DuBh7C,4BAAI,CAAC49C,YAAD,EAAetD,qBAAqB,CAAC9mF,YAArC,CA9D3B,mDAiEYwjE,WAAK,CAAC9iE,IAjElB,8FAqEY8iE,WAAK,CAACp8D,MArElB,UAqE+Bo8D,WAAK,CAAC9iE,IArErC,uCAsEsB,CAAC,KAAKypF,UAAN,EAAkBK,OAAlB,CAA0B,CAA1B,CAtEtB,2CAuE0Bh+C,4BAAI,CAAC49C,YAAD,EAAe,GAAf,CAvE9B,kFAyE4B,CAAC,IAAID,UAAL,EAAiBK,OAAjB,CAAyB,CAAzB,CAzE5B,8CA0E6B,CAAC,IAAIL,UAAL,EAAiBK,OAAjB,CAAyB,CAAzB,CA1E7B,kDA6EYhnB,WAAK,CAACp8D,MA7ElB,UA6E+Bo8D,WAAK,CAAC9iE,IA7ErC,wFAiFY8iE,WAAK,CAACxjE,YAjFlB,UAiFqCwjE,WAAK,CAAC9iE,IAjF3C,wCAkFuB8rC,4BAAI,CAAC49C,YAAD,EAAe,EAAf,CAlF3B,6CAmF2B59C,4BAAI,CAAC49C,YAAD,EAAe,EAAf,CAnF/B,8CAoF4B59C,4BAAI,CAAC49C,YAAD,EAAe,CAAf,CApFhC,+CAqF6B59C,4BAAI,CAAC49C,YAAD,EAAe,CAAf,CArFjC,mDAwFY5mB,WAAK,CAACxjE,YAxFlB,UAwFqCwjE,WAAK,CAAC9iE,IAxF3C,sIA6F0C2gC,KAAK,CAAC8lD,QA7FhD,4BA6FiFmD,YA7FjF,kCA+FY9mB,WAAK,CAACp8D,MA/FlB,SA+F8Bo8D,WAAK,CAAC1jE,MA/FpC,SA+FgDwD,kCAAa,CAACC,UA/F9D,SA+F8EigE,WAAK,CAAC/uB,MA/FpF,SA+FgGhxC,kCAAa,CAACE,QA/F9G,SA+F4H6/D,WAAK,CAAC/uB,MA/FlI,4HAoGY+uB,WAAK,CAACp8D,MApGlB,SAoG8Bo8D,WAAK,CAAC1jE,MApGpC,SAoGgDwD,kCAAa,CAACC,UApG9D,SAoG8EigE,WAAK,CAAC/uB,MApGpF,SAoGgGhxC,kCAAa,CAACE,QApG9G,SAoG4H6/D,WAAK,CAAC/uB,MApGlI,wFAwGY+uB,WAAK,CAAC6lB,SAxGlB,SAwGiC7lB,WAAK,CAAC1jE,MAxGvC,SAwGmDwD,kCAAa,CAACC,UAxGjE,SAwGiFigE,WAAK,CAAC/uB,MAxGvF,SAwGmGhxC,kCAAa,CAACE,QAxGjH,UAwGgI6/D,WAAK,CAACtjE,OAxGtI,mIA6G0CysC,2BAAG,CAACtL,KAAK,CAAC8lD,QAAP,EAAiBmD,YAAjB,CA7G7C,kCA+GY9mB,WAAK,CAACp8D,MA/GlB,SA+G8Bo8D,WAAK,CAAC1jE,MA/GpC,SA+GgDwD,kCAAa,CAACC,UA/G9D,SA+G8EigE,WAAK,CAAC/uB,MA/GpF,SA+GgGhxC,kCAAa,CAACE,QA/G9G,SA+G4H6/D,WAAK,CAAC/uB,MA/GlI,qLAqHY+uB,WAAK,CAACp8D,MArHlB,SAqH8Bo8D,WAAK,CAAC1jE,MArHpC,SAqHgDwD,kCAAa,CAACC,UArH9D,SAqH8EigE,WAAK,CAAC/uB,MArHpF,SAqHgGhxC,kCAAa,CAACE,QArH9G,SAqH4H6/D,WAAK,CAAC/uB,MArHlI,6IA0HY+uB,WAAK,CAAC6lB,SA1HlB,SA0HiC7lB,WAAK,CAAC1jE,MA1HvC,SA0HmDwD,kCAAa,CAACC,UA1HjE,SA0HiFigE,WAAK,CAAC/uB,MA1HvF,SA0HmGhxC,kCAAa,CAACE,QA1HjH,UA0HgI6/D,WAAK,CAACtjE,OA1HtI;AAgIH,GAvIM,EAuIJwZ,IAvII,CAuIC,IAvID,CAAP;AAwIH,C;;AClJD;AAEA;AAEO,IAAM+wE,gBAAgB,iBAErBjnB,WAAK,CAACp8D,MAFe,SAEHo8D,WAAK,CAAC3jE,KAFH,SAEciC,iCAAY,CAACC,IAF3B,8EAOrByhE,WAAK,CAACp8D,MAPe,SAOHo8D,WAAK,CAAC3jE,KAPH,SAOciC,iCAAY,CAACE,IAP3B,8EAYrBwhE,WAAK,CAACp8D,MAZe,SAYHo8D,WAAK,CAAC3jE,KAZH,SAYciC,iCAAY,CAACG,MAZ3B,2EAiBrBuhE,WAAK,CAACp8D,MAjBe,SAiBHo8D,WAAK,CAAC3jE,KAjBH,SAiBciC,iCAAY,CAACI,KAjB3B,8EAsBrBshE,WAAK,CAACp8D,MAtBe,SAsBHo8D,WAAK,CAAC3jE,KAtBH,SAsBciC,iCAAY,CAACK,QAtB3B,8EA2BrBqhE,WAAK,CAACp8D,MA3Be,SA2BHo8D,WAAK,CAAC3jE,KA3BH,SA2BciC,iCAAY,CAACO,WA3B3B,kFAgCrBmhE,WAAK,CAACp8D,MAhCe,SAgCHo8D,WAAK,CAAC3jE,KAhCH,SAgCciC,iCAAY,CAACM,KAhC3B,wGAAtB,C;;ACJP;AACA;AACA;AACA;AACA;AACA;AACA;AAEO,SAASsoF,cAAT,OAAuG;AAAA,MAA7E/kD,MAA6E,QAA7EA,MAA6E;AAAA,MAArEwkD,UAAqE,QAArEA,UAAqE;AAC1G,wBACOP,SADP,kBAEOC,WAFP,kBAGOY,gBAHP,kBAIOX,WAJP,kBAKOC,aALP,kBAMOC,UANP,kBAOOE,qBAAqB,CAAC;AAAEvkD,UAAM,EAANA,MAAF;AAAUwkD,cAAU,EAAVA;AAAV,GAAD,CAP5B;AASH,C;;AClBD;;;ACDA;AAEA;AAEA;AAEO,SAASQ,WAAT,CAAqBnrE,KAArB,EAAmD;AACtD,SACI,8CACI;AAAO,aAAS,ksBAmBYA,KAAK,CAACgrE,OAAN,CAAc,CAAd,CAnBZ,wGAuBY,CAAChrE,KAAK,GAAG,CAAT,EAAYgrE,OAAZ,CAAoB,CAApB,CAvBZ,wGA2BY,CAAChrE,KAAK,GAAG,CAAT,EAAYgrE,OAAZ,CAAoB,CAApB,CA3BZ;AAAhB,IADJ,EAiDI;AAAK,SAAK,EAAC;AAAX,KAEQ,CAAE,CAAF,EAAK,CAAL,EAAQ,CAAR,EAAY/wE,GAAZ,CAAgB,UAAAwE,CAAC;AAAA,WACb;AAAK,WAAK,+BAA+BA;AAAzC,gBADa;AAAA,GAAjB,CAFR,CAjDJ,CADJ;AA0DH;AAEM,SAAS2sE,MAAT,CAAgBC,UAAhB,EAAmD;AACtD,SACI;AAAK,SAAK,EAAC;AAAX,KACI;AAAO,aAAS;AAAhB,IADJ,EASI;AAAK,SAAK,EAAC,iBAAX;AAA6B,OAAG,EAAGA;AAAnC,IATJ,CADJ;AAaH;AAEM,SAASC,OAAT,CAAiBC,QAAjB,EAAoCF,UAApC,EAA0DjwE,IAA1D,EAAqG;AACxG,MAAML,KAAK,GAAG,EAAd;AACAA,OAAK,CAAC,CAAD,CAAL,GAAY;AAAO,aAAS;AAAhB,IAAZ;AAQAA,OAAK,CAAC,CAAD,CAAL,GACI;AAAK,SAAK,EAAOipD,WAAK,CAACtjE,OAAb,SAA0BsjE,WAAK,CAAC8lB,aAAhC,SAAmDyB;AAA7D,KACI;AAAM,YAAQ;AAAd,KAAiBnwE,IAAjB,CADJ,EAGQiwE,UAAU,IAAK;AAAK,SAAK,EAAC,iBAAX;AAA6B,OAAG,EAAGA;AAAnC,IAHvB,CADJ;AAOA,SAAO,IAAI3wE,mCAAJ,CAAyBK,KAAzB,CAAP;AACH,C;;ACpGM,SAASywE,kBAAT,GAA2C;AAE9C;AACA,SAAO,YAAM;AACT,QAAM7jF,SAAS,GAAG;AACd8jF,cAAQ,EAAE;AADI,KAAlB;AAIA,QAAMznB,KAAK,GAAG;AACVj6B,YAAM,EAAK,QADD;AAEVmgD,eAAS,EAAE;AAFD,KAAd;AAKA,QAAMwB,QAAQ,GAAG;AACb7kF,SAAG,EAAO,GADG;AAEb4kF,cAAQ,QAAO9jF,SAAS,CAAC8jF,QAAjB;AAFK,KAAjB;AAKA,QAAME,GAAG,GAAG;AACRliD,WAAK,EAAE;AADC,KAAZ;;AAIA,aAAS/nB,IAAT,CAAc7E,OAAd,EAA6C;AACzC,UAAIgkB,MAAM,GAAG,KAAb;AACA,aAAO,YAAa;AAChB,YAAI,CAACA,MAAL,EAAa;AACTA,gBAAM,GAAG,IAAT;AACAhkB,iBAAO,MAAP;AACH;AACJ,OALD;AAMH;;AAED,aAAS2a,QAAT,CAAkB3a,OAAlB,EAAsCoC,IAAtC,EAAqE;AAAA,UAA/BA,IAA+B;AAA/BA,YAA+B,GAAf,EAAe;AAAA;;AACjE,UAAID,OAAJ;AACA,aAAO,YAAa;AAAA,0CAATc,IAAS;AAATA,cAAS;AAAA;;AAChBZ,oBAAY,CAACF,OAAD,CAAZ;AACAA,eAAO,GAAGxC,UAAU,CAAC,YAAM;AACvBK,iBAAO,MAAP,SAAWiD,IAAX;AACH,SAFmB,EAEjBb,IAFiB,CAApB;AAGH,OALD;AAMH,KArCQ,CAuCT;;;AACA,aAAS2sE,OAAT,CAAoBlwE,IAApB,EAAqC;AACjC,aAAOlB,KAAK,CAAC4D,SAAN,CAAgBsO,KAAhB,CAAsB3Q,IAAtB,CAA2BL,IAA3B,CAAP;AACH;;AAED,aAAS8uD,WAAT,CAAqBvoC,QAArB,EAA+B3a,MAA/B,EAAqE;AACjEA,YAAM,GAAGA,MAAM,IAAIqF,QAAnB;AACA,aAAOi/D,OAAO,CAACtkE,MAAM,CAACya,gBAAP,CAAwBE,QAAxB,CAAD,CAAP,CAA2CloB,MAA3C,CAAkD,UAAAioB,EAAE,EAAI;AAC3D,eAAOA,EAAE,CAACoB,OAAH,CAAW9a,WAAX,OAA6BqjE,GAAG,CAACliD,KAAxC;AACH,OAFM,CAAP;AAGH;;AAED,aAAS7nB,SAAT,CAAmB8f,OAAnB,EAAwD;AACpD;AACA,aAAOA,OAAO,CAACmqD,aAAf;AACH;;AAED,aAASzhD,WAAT,CAAqBpI,EAArB,EAAuC;AACnCA,QAAE,CAAC4I,SAAH,CAAaG,MAAb,CAAoBi5B,KAAK,CAACj6B,MAA1B;AACH;;AAED,aAASM,WAAT,CAAqBrI,EAArB,EAAuC;AACnCA,QAAE,CAAC4I,SAAH,CAAaC,GAAb,CAAiBm5B,KAAK,CAACj6B,MAAvB;AACH;;AAED,aAAS+hD,GAAT,CAAatwC,GAAb,EAAoD;AAChD,UAAIphC,MAAM,GAAG,CAAb;;AADgD,8BAE7BohC,GAF6B,gBAExB;AAAnB,YAAM9/B,IAAI,GAAI8/B,GAAJ,KAAV;AACDphC,cAAM,IAAIsB,IAAV;AACH;;AACD,aAAOtB,MAAP;AACH;;AAED,aAAS+0C,MAAT,CAAmB3T,GAAnB,EAAgE;AAC5D,UAAMphC,MAAM,GAAG,EAAf;;AAD4D,8BAG3CohC,GAH2C,gBAGtC;AAAjB,YAAMxZ,EAAE,GAAIwZ,GAAJ,KAAR;;AACD,YAAIphC,MAAM,CAACkC,OAAP,CAAe0lB,EAAf,MAAuB,CAAC,CAA5B,EAA+B;AAC3B5nB,gBAAM,CAACmC,IAAP,CAAYylB,EAAZ;AACH;AACJ;;AAED,aAAO5nB,MAAP;AACH;;AAED,aAAS2xE,cAAT,CAAwBrqD,OAAxB,EAA6E;AACzE,aAAO8oC,WAAW,CAACkhB,QAAQ,CAAC7kF,GAAV,EAAe66B,OAAf,CAAlB;AACH;;AAED,aAASsqD,gBAAT,CAA0BtqD,OAA1B,EAA0D;AACtD,aAAO9G,QAAQ,CAAC8G,OAAO,CAAC+lB,YAAR,CAAqB9/C,SAAS,CAAC8jF,QAA/B,KAA4C,CAA7C,EAAgD,EAAhD,CAAf;AACH;;AAED,aAASQ,qBAAT,CAA+B1kC,QAA/B,EAAgF;AAC5E,aAAOukC,GAAG,CAACvkC,QAAQ,CAACttC,GAAT,CAAa,UAAAK,KAAK;AAAA,eAAIA,KAAK,CAAC+rB,WAAV;AAAA,OAAlB,CAAD,CAAV;AACH;;AAED,aAAS6lD,kBAAT,GAA4D;AACxD,UAAMC,QAAQ,aAAQ3hB,WAAW,CAACkhB,QAAQ,CAACD,QAAV,CAAnB,EAA2CjhB,WAAW,CAAC,yCAAD,CAAtD,EAAsGA,WAAW,CAAC,8DAAD,CAAjH,CAAd;AACA,aAAOrb,MAAM,CAACg9B,QAAQ,CAAClyE,GAAT,CAAa2H,SAAb,EAAwB7H,MAAxB,CAA+BqT,OAA/B,CAAD,CAAb;AACH;;AAED,aAASg/D,mBAAT,CAA6B9kE,MAA7B,EAAiF;AAC7E,aAAOskE,OAAO,CAACphB,WAAW,CAACkhB,QAAQ,CAACD,QAAV,EAAoBnkE,MAApB,CAAZ,CAAP,CAAgDq0B,IAAhD,CAAqD,UAAC0wC,KAAD,EAAQC,MAAR,EAAmB;AAC3E,eAAON,gBAAgB,CAACK,KAAD,CAAhB,GAA0BL,gBAAgB,CAACM,MAAD,CAAjD;AACH,OAFM,CAAP;AAGH;;AAED,QAAM5yE,QAAQ,GAAGwyE,kBAAkB,GAAGjyE,GAArB,CAAyB,UAAAsyE,cAAc,EAAI;AACxD,UAAMC,WAAW,GAAGT,cAAc,CAACQ,cAAD,CAAlC;AACA,UAAME,gBAAgB,GAAGL,mBAAmB,CAACG,cAAD,CAA5C;AAEA,aAAO;AACHA,sBAAc,EAAdA,cADG;AAEHC,mBAAW,EAAXA,WAFG;AAGHC,wBAAgB,EAAhBA;AAHG,OAAP;AAKH,KATgB,CAAjB;;AAWA,aAASC,eAAT,GAA2B;AAAA,8BACyChzE,QADzC,gBACmD;AAAA,2BAAVA,QAAU;AAAA,YAA7D6yE,cAA6D,gBAA7DA,cAA6D;AAAA,YAA7CC,WAA6C,gBAA7CA,WAA6C;AAAA,YAAhCC,gBAAgC,gBAAhCA,gBAAgC;AACtE,YAAME,WAAW,GAAGJ,cAAc,CAAClmD,WAAnC;AACA,YAAIumD,SAAS,GAAGX,qBAAqB,CAACO,WAAD,CAArB,GAAqCP,qBAAqB,CAACQ,gBAAD,CAA1E;;AAFsE,gCAI1CA,gBAJ0C,gBAIxB;AAAzC,cAAMI,aAAa,GAAIJ,gBAAJ,KAAnB;AACDG,mBAAS,IAAIC,aAAa,CAACxmD,WAA3B;;AAEA,cAAIumD,SAAS,GAAGD,WAAhB,EAA6B;AACzBtiD,uBAAW,CAACwiD,aAAD,CAAX;AACH,WAFD,MAEO;AACHziD,uBAAW,CAACyiD,aAAD,CAAX;AACH;AACJ;AACJ;AACJ;;AAED,aAASC,oBAAT,GAAgC;AAC5B,UAAMC,gBAAgB,GAAGpgE,QAAQ,CAACqgE,sBAAT,CAAgC,qBAAhC,EAAuD,CAAvD,CAAzB;AACA,UAAMC,UAAU,GAAG,CAAnB;;AAEA,eAASC,mBAAT,GAA+B;AAC3BH,wBAAgB,CAACniD,SAAjB,CAA2BG,MAA3B,CAAkC,wBAAlC;AAEAnvB,cAAM,CAACkpB,mBAAP,CAA2B,WAA3B,EAAwCooD,mBAAxC;AACAtxE,cAAM,CAACqN,gBAAP,CAAwB,SAAxB,EAAmCkkE,cAAnC,EAJ2B,CAIyB;AACvD;;AAED,eAASA,cAAT,CAAwBzX,CAAxB,EAA2B;AACvB,YAAIA,CAAC,CAAC1lB,OAAF,KAAci9B,UAAlB,EAA8B;AAC1BF,0BAAgB,CAACniD,SAAjB,CAA2BC,GAA3B,CAA+B,wBAA/B;AAEAjvB,gBAAM,CAACkpB,mBAAP,CAA2B,SAA3B,EAAsCqoD,cAAtC;AACAvxE,gBAAM,CAACqN,gBAAP,CAAwB,WAAxB,EAAqCikE,mBAArC;AACH;AACJ;;AAEDH,sBAAgB,CAACniD,SAAjB,CAA2BC,GAA3B,CAA+B,wBAA/B;AACAjvB,YAAM,CAACqN,gBAAP,CAAwB,SAAxB,EAAmCkkE,cAAnC;AACH;;AAED,QAAMC,WAAW,GAAG1rE,IAAI,CAAC8V,QAAQ,CAAC,YAAM;AACpC5b,YAAM,CAACqN,gBAAP,CAAwB,QAAxB,EAAkCyjE,eAAlC;;AACA,UAAI//D,QAAQ,CAAChE,IAAb,EAAmB;AACfgE,gBAAQ,CAAChE,IAAT,CAAciiB,SAAd,CAAwBC,GAAxB,CAA4Bm5B,KAAK,CAACkmB,SAAlC;AACH;AACJ,KALgC,CAAT,CAAxB;;AAOA,QAAMmD,IAAI,GAAG,SAAPA,IAAO,GAAM;AACfX,qBAAe;AACfU,iBAAW;AACd,KAHD;;AAKAV,mBAAe;AACfI,wBAAoB;AAEpBngE,YAAQ,CAAC1D,gBAAT,CAA0B,kBAA1B,EAA8CokE,IAA9C;AACAzxE,UAAM,CAACqN,gBAAP,CAAwB,MAAxB,EAAgCokE,IAAhC;AACAzxE,UAAM,CAACqN,gBAAP,CAAwB,QAAxB,EAAkCokE,IAAlC;AACH,GAjLD;AAkLH,C;;ACtLD;AAEO,IAAMC,gBAAgB,GAAG;AAC5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GADsB;AAmC5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX,KAzBJ;AAiCF,UAAM;AACF,kBAAa,uCADX;AAEF,mBAAa,wCAFX;AAGF,mBAAa,6BAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,mCALX;AAMF,mBAAa;AANX;AAjCJ,GAnCsB;AA6E5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA7EsB;AA+G5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA/GsB;AAiJ5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GAjJsB;AA2J5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA3JsB;AA6L5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA7LsB;AA+N5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA/NsB;AAiQ5B,QAAM;AACF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AATJ,GAjQsB;AAmR5B,QAAM;AACF,UAAM;AACF,kBAAa,mCADX;AAEF,mBAAa,yCAFX;AAGF,mBAAa,kDAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,sCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AATJ,GAnRsB;AAqS5B,QAAM;AACF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GArSsB;AA+S5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA/SsB;AAiV5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAjVsB;AAmX5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GAnXsB;AA6X5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA7XsB;AA+Z5B,QAAM;AACF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,qCADX;AAEF,mBAAa,gDAFX;AAGF,mBAAa,wBAHX;AAIF,aAAa,2BAJX;AAKF,gBAAa,kCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,gCAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AAjBJ,GA/ZsB;AAyb5B,QAAM;AACF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAzbsB;AA2d5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GA3dsB;AAqe5B,QAAM;AACF,UAAM;AACF,kBAAa,uCADX;AAEF,mBAAa,wCAFX;AAGF,mBAAa,6BAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,mCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAzBJ;AAiCF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAjCJ,GAresB;AA+gB5B,QAAM;AACF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA/gBsB;AAijB5B,QAAM;AACF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAjjBsB;AAmlB5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAnlBsB;AAqnB5B,QAAM;AACF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,4BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GArnBsB;AA+nB5B,QAAM;AACF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA/nBsB;AAiqB5B,QAAM;AACF,UAAM;AACF,kBAAsB,mCADpB;AAEF,mBAAsB,oCAFpB;AAGF,mBAAsB,8BAHpB;AAIF,aAAsB,yBAJpB;AAKF,gBAAsB,uCALpB;AAMF,qBAAsB,qDANpB;AAOF,4BAAsB,8EAPpB;AAQF,mBAAsB;AARpB,KADJ;AAWF,UAAM;AACF,kBAAsB,kCADpB;AAEF,mBAAsB,8BAFpB;AAGF,mBAAsB,yBAHpB;AAIF,aAAsB,wBAJpB;AAKF,gBAAsB,iCALpB;AAMF,qBAAsB,sDANpB;AAOF,4BAAsB,+EAPpB;AAQF,mBAAsB;AARpB;AAXJ,GAjqBsB;AAurB5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAvrBsB;AAytB5B,QAAM;AACF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,4BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GAztBsB;AAmuB5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAnuBsB;AAqwB5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GArwBsB;AA+wB5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA/wBsB;AAizB5B,QAAM;AACF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,eAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,6BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AATJ,GAjzBsB;AAm0B5B,QAAM;AACF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,2BAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AATJ,GAn0BsB;AAq1B5B,QAAM;AACF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAr1BsB;AAu3B5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAv3BsB;AAy5B5B,QAAM;AACF,UAAM;AACF,kBAAa,mCADX;AAEF,mBAAa,yCAFX;AAGF,mBAAa,kDAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,sCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,gCAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AAjBJ,GAz5BsB;AAm7B5B,QAAM;AACF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AATJ,GAn7BsB;AAq8B5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAr8BsB;AAu+B5B,QAAM;AACF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAv+BsB;AAygC5B,QAAM;AACF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AATJ,GAzgCsB;AA2hC5B,QAAM;AACF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AADJ,GA3hCsB;AAqiC5B,QAAM;AACF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAriCsB;AAukC5B,QAAM;AACF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAvkCsB;AAymC5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAzmCsB;AA2oC5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GA3oCsB;AAqpC5B,QAAM;AACF,UAAM;AACF,kBAAa,uCADX;AAEF,mBAAa,yCAFX;AAGF,mBAAa,iCAHX;AAIF,aAAa,8BAJX;AAKF,gBAAa,2CALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAzBJ;AAiCF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAjCJ,GArpCsB;AA+rC5B,QAAM;AACF,UAAM;AACF,kBAAa,mCADX;AAEF,mBAAa,sCAFX;AAGF,mBAAa,uCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,sCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AATJ,GA/rCsB;AAitC5B,QAAM;AACF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAjtCsB;AAmvC5B,QAAM;AACF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,uBAFX;AAGF,mBAAa,uBAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,gCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AATJ,GAnvCsB;AAqwC5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GArwCsB;AAuyC5B,QAAM;AACF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAvyCsB;AAy0C5B,QAAM;AACF,UAAM;AACF,kBAAa,uCADX;AAEF,mBAAa,wCAFX;AAGF,mBAAa,6BAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,mCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAzBJ;AAiCF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAjCJ,GAz0CsB;AAm3C5B,QAAM;AACF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAn3CsB;AAq5C5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,8CADX;AAEF,mBAAa,2CAFX;AAGF,mBAAa,kCAHX;AAIF,aAAa,8BAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAzBJ;AAiCF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAjCJ,GAr5CsB;AA+7C5B,QAAM;AACF,UAAM;AACF,kBAAa,uCADX;AAEF,mBAAa,wCAFX;AAGF,mBAAa,6BAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,mCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAzBJ;AAiCF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAjCJ,GA/7CsB;AAy+C5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAz+CsB;AA2gD5B,QAAM;AACF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AATJ,GA3gDsB;AA6hD5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA7hDsB;AA+jD5B,QAAM;AACF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,qCAFX;AAGF,mBAAa,6BAHX;AAIF,aAAa,qBAJX;AAKF,gBAAa,kCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAzBJ;AAiCF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAjCJ,GA/jDsB;AAymD5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAzmDsB;AA2oD5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA3oDsB;AA6qD5B,QAAM;AACF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,4BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GA7qDsB;AAurD5B,QAAM;AACF,UAAM;AACF,kBAAa,mCADX;AAEF,mBAAa,uBAFX;AAGF,mBAAa,uBAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,gCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAzBJ;AAiCF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAjCJ,GAvrDsB;AAiuD5B,QAAM;AACF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,6BADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AATJ,GAjuDsB;AAmvD5B,QAAM;AACF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAnvDsB;AAqxD5B,QAAM;AACF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GArxDsB;AA+xD5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA/xDsB;AAi0D5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAj0DsB;AAm2D5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAn2DsB;AAq4D5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAr4DsB;AAu6D5B,QAAM;AACF,UAAM;AACF,kBAAa,mCADX;AAEF,mBAAa,uBAFX;AAGF,mBAAa,uBAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,gCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAzBJ;AAiCF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAjCJ,GAv6DsB;AAi9D5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAj9DsB;AAm/D5B,QAAM;AACF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAn/DsB;AAqhE5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GArhEsB;AAujE5B,QAAM;AACF,UAAM;AACF,kBAAa,gDADX;AAEF,mBAAa,gDAFX;AAGF,mBAAa,qCAHX;AAIF,aAAa,4BAJX;AAKF,gBAAa,oCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAzBJ;AAiCF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAjCJ,GAvjEsB;AAimE5B,QAAM;AACF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAjmEsB;AAmoE5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAnoEsB;AAqqE5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GArqEsB;AAusE5B,QAAM;AACF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,4BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,UAHX;AAIF,aAAa,qBAJX;AAKF,gBAAa,6BALX;AAMF,mBAAa;AANX;AATJ,GAvsEsB;AAytE5B,QAAM;AACF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAztEsB;AA2vE5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GA3vEsB;AAqwE5B,QAAM;AACF,UAAM;AACF,kBAAa,iCADX;AAEF,mBAAa,wCAFX;AAGF,mBAAa,mCAHX;AAIF,aAAa,uBAJX;AAKF,gBAAa,kCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAzBJ;AAiCF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAjCJ,GArwEsB;AA+yE5B,QAAM;AACF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,gDAFX;AAGF,mBAAa,mDAHX;AAIF,aAAa,4BAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AATJ,GA/yEsB;AAi0E5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAj0EsB;AAm2E5B,QAAM;AACF,UAAM;AACF,kBAAa,6BADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,2BAHX;AAIF,aAAa,4BAJX;AAKF,gBAAa,mCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AATJ,GAn2EsB;AAq3E5B,QAAM;AACF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,6BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GAr3EsB;AA+3E5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GA/3EsB;AAy4E5B,QAAM;AACF,UAAM;AACF,kBAAa,qCADX;AAEF,mBAAa,oCAFX;AAGF,mBAAa,+BAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,qCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AATJ,GAz4EsB;AA25E5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA35EsB;AA67E5B,QAAM;AACF,UAAM;AACF,kBAAa,uCADX;AAEF,mBAAa,wCAFX;AAGF,mBAAa,6BAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,mCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAzBJ;AAiCF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAjCJ,GA77EsB;AAu+E5B,QAAM;AACF,UAAM;AACF,kBAAa,6BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,mBAHX;AAIF,aAAa,mBAJX;AAKF,gBAAa,4BALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AATJ,GAv+EsB;AAy/E5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAz/EsB;AA2hF5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA3hFsB;AA6jF5B,QAAM;AACF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,4BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GA7jFsB;AAukF5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAvkFsB;AAymF5B,QAAM;AACF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAzmFsB;AA2oF5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA3oFsB;AA6qF5B,QAAM;AACF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,iBAFX;AAGF,mBAAa,oBAHX;AAIF,aAAa,qBAJX;AAKF,gBAAa,+BALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,6BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AATJ,GA7qFsB;AA+rF5B,QAAM;AACF,UAAM;AACF,kBAAa,uCADX;AAEF,mBAAa,wCAFX;AAGF,mBAAa,6BAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,mCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAzBJ;AAiCF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAjCJ,GA/rFsB;AAyuF5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAzuFsB;AA2wF5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA3wFsB;AA6yF5B,QAAM;AACF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,4BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GA7yFsB;AAuzF5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAvzFsB;AAy1F5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAz1FsB;AA23F5B,QAAM;AACF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,4BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GA33FsB;AAq4F5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAr4FsB;AAu6F5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,8CADX;AAEF,mBAAa,2CAFX;AAGF,mBAAa,kCAHX;AAIF,aAAa,8BAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAzBJ;AAiCF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAjCJ,GAv6FsB;AAi9F5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,mCADX;AAEF,mBAAa,yCAFX;AAGF,mBAAa,kDAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,sCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAzBJ;AAiCF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAjCJ,GAj9FsB;AA2/F5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,8CADX;AAEF,mBAAa,2CAFX;AAGF,mBAAa,kCAHX;AAIF,aAAa,8BAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAzBJ;AAiCF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAjCJ,GA3/FsB;AAqiG5B,QAAM;AACF,UAAM;AACF,kBAAa,uCADX;AAEF,mBAAa,wCAFX;AAGF,mBAAa,6BAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,mCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAzBJ;AAiCF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAjCJ,GAriGsB;AA+kG5B,QAAM;AACF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AATJ,GA/kGsB;AAimG5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GAjmGsB;AA2mG5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GA3mGsB;AAqnG5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GArnGsB;AAupG5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAvpGsB;AAyrG5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GAzrGsB;AAmsG5B,QAAM;AACF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAnsGsB;AAquG5B,QAAM;AACF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,4BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GAruGsB;AA+uG5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA/uGsB;AAixG5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAjxGsB;AAmzG5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAnzGsB;AAq1G5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GAr1GsB;AA+1G5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA/1GsB;AAi4G5B,QAAM;AACF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,4BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GAj4GsB;AA24G5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA34GsB;AA66G5B,QAAM;AACF,UAAM;AACF,kBAAsB,mCADpB;AAEF,mBAAsB,mCAFpB;AAGF,mBAAsB,oCAHpB;AAIF,aAAsB,yBAJpB;AAKF,gBAAsB,uCALpB;AAMF,qBAAsB,sDANpB;AAOF,4BAAsB,gFAPpB;AAQF,mBAAsB;AARpB,KADJ;AAWF,UAAM;AACF,kBAAsB,kCADpB;AAEF,mBAAsB,8BAFpB;AAGF,mBAAsB,yBAHpB;AAIF,aAAsB,wBAJpB;AAKF,gBAAsB,iCALpB;AAMF,qBAAsB,sDANpB;AAOF,4BAAsB,+EAPpB;AAQF,mBAAsB;AARpB;AAXJ,GA76GsB;AAm8G5B,QAAM;AACF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,6BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GAn8GsB;AA68G5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA78GsB;AA++G5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA/+GsB;AAihH5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAjhHsB;AAmjH5B,QAAM;AACF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAnjHsB;AAqlH5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GArlHsB;AAunH5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GAvnHsB;AAioH5B,QAAM;AACF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAjoHsB;AAmqH5B,QAAM;AACF,UAAM;AACF,kBAAa,iCADX;AAEF,mBAAa,iDAFX;AAGF,mBAAa,wBAHX;AAIF,aAAa,2BAJX;AAKF,gBAAa,kCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AATJ,GAnqHsB;AAqrH5B,QAAM;AACF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,wBAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AATJ,GArrHsB;AAusH5B,QAAM;AACF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,4BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GAvsHsB;AAitH5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAjtHsB;AAmvH5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAnvHsB;AAqxH5B,QAAM;AACF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,6BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,sBAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,oCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,eAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GArxHsB;AAuzH5B,QAAM;AACF,UAAM;AACF,kBAAa,uCADX;AAEF,mBAAa,wCAFX;AAGF,mBAAa,6BAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,mCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAzBJ;AAiCF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAjCJ,GAvzHsB;AAi2H5B,QAAM;AACF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAj2HsB;AAm4H5B,QAAM;AACF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAn4HsB;AAq6H5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAr6HsB;AAu8H5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAv8HsB;AAy+H5B,QAAM;AACF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,6BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GAz+HsB;AAm/H5B,QAAM;AACF,UAAM;AACF,kBAAa,iCADX;AAEF,mBAAa,6BAFX;AAGF,mBAAa,0BAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,mCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AATJ,GAn/HsB;AAqgI5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GArgIsB;AAuiI5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAviIsB;AAykI5B,QAAM;AACF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,kCAFX;AAGF,mBAAa,2BAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AATJ,GAzkIsB;AA2lI5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA3lIsB;AA6nI5B,QAAM;AACF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AATJ,GA7nIsB;AA+oI5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX,KAzBJ;AAiCF,UAAM;AACF,kBAAa,uCADX;AAEF,mBAAa,wCAFX;AAGF,mBAAa,6BAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,mCALX;AAMF,mBAAa;AANX;AAjCJ,GA/oIsB;AAyrI5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAzrIsB;AA2tI5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA3tIsB;AA6vI5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA7vIsB;AA+xI5B,QAAM;AACF,UAAM;AACF,kBAAa,0CADX;AAEF,mBAAa,2CAFX;AAGF,mBAAa,kCAHX;AAIF,aAAa,8BAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AATJ,GA/xIsB;AAizI5B,QAAM;AACF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAjzIsB;AAm1I5B,QAAM;AACF,UAAM;AACF,kBAAa,uCADX;AAEF,mBAAa,wCAFX;AAGF,mBAAa,6BAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,mCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAzBJ;AAiCF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAjCJ,GAn1IsB;AA63I5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA73IsB;AA+5I5B,QAAM;AACF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA/5IsB;AAi8I5B,QAAM;AACF,UAAM;AACF,kBAAa,gCADX;AAEF,mBAAa,wCAFX;AAGF,mBAAa,uBAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,gCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AATJ,GAj8IsB;AAm9I5B,QAAM;AACF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,6BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GAn9IsB;AA69I5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA79IsB;AA+/I5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA//IsB;AAiiJ5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAjiJsB;AAmkJ5B,QAAM;AACF,UAAM;AACF,kBAAa,sCADX;AAEF,mBAAa,yCAFX;AAGF,mBAAa,kCAHX;AAIF,aAAa,6BAJX;AAKF,gBAAa,+BALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAzBJ;AAiCF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAjCJ,GAnkJsB;AA6mJ5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA7mJsB;AA+oJ5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA/oJsB;AAirJ5B,QAAM;AACF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAjrJsB;AAmtJ5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAntJsB;AAqvJ5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GArvJsB;AAuxJ5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAvxJsB;AAyzJ5B,QAAM;AACF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAzzJsB;AA21J5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA31JsB;AA63J5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA73JsB;AA+5J5B,QAAM;AACF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA/5JsB;AAi8J5B,QAAM;AACF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAj8JsB;AAm+J5B,QAAM;AACF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,iCAHX;AAIF,aAAa,4BAJX;AAKF,gBAAa,mCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AATJ,GAn+JsB;AAq/J5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAr/JsB;AAuhK5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAvhKsB;AAyjK5B,QAAM;AACF,UAAM;AACF,kBAAa,uCADX;AAEF,mBAAa,wCAFX;AAGF,mBAAa,6BAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,mCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAzBJ;AAiCF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAjCJ,GAzjKsB;AAmmK5B,QAAM;AACF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,4BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GAnmKsB;AA6mK5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,2CAFX;AAGF,mBAAa,gCAHX;AAIF,aAAa,uBAJX;AAKF,gBAAa,0CALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AATJ,GA7mKsB;AA+nK5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA/nKsB;AAiqK5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAjqKsB;AAmsK5B,QAAM;AACF,UAAM;AACF,kBAAa,4BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,UAHX;AAIF,aAAa,qBAJX;AAKF,gBAAa,6BALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AATJ,GAnsKsB;AAqtK5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GArtKsB;AAuvK5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,8CADX;AAEF,mBAAa,2CAFX;AAGF,mBAAa,kCAHX;AAIF,aAAa,8BAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAzBJ;AAiCF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAjCJ,GAvvKsB;AAiyK5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAjyKsB;AAm0K5B,QAAM;AACF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,kBAAa,sBAJX;AAKF,aAAa,wBALX;AAMF,gBAAa,iCANX;AAOF,mBAAa;AAPX,KADJ;AAUF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAVJ;AAkBF,UAAM;AACF,kBAAa,mCADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAlBJ;AA0BF,UAAM;AACF,kBAAa,6BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AA1BJ,GAn0KsB;AAs2K5B,QAAM;AACF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAt2KsB;AAw4K5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAx4KsB;AA06K5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA16KsB;AA48K5B,QAAM;AACF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA58KsB;AA8+K5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA9+KsB;AAghL5B,QAAM;AACF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,6BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GAhhLsB;AA0hL5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA1hLsB;AA4jL5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA5jLsB;AA8lL5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GA9lLsB;AAwmL5B,QAAM;AACF,UAAM;AACF,kBAAa,uCADX;AAEF,mBAAa,wCAFX;AAGF,mBAAa,6BAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,mCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAzBJ;AAiCF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAjCJ,GAxmLsB;AAkpL5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAlpLsB;AAorL5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAprLsB;AAstL5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAttLsB;AAwvL5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ;AAxvLsB,CAAzB,C;;;ACHP;;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AAEA,IAAMC,4BAA4B,GAAG,CAAE1sF,iCAAY,CAACE,QAAf,EAAyBF,iCAAY,CAACM,MAAtC,EAA8CN,iCAAY,CAACG,GAA3D,CAArC;;AAEA,SAASwsF,sBAAT,OAAqF;AAAA,MAAnDhK,MAAmD,QAAnDA,MAAmD;AAAA,MAA3CyF,KAA2C,QAA3CA,KAA2C;AAAA,MAApCN,QAAoC,QAApCA,QAAoC;AAAA,MAA1BO,QAA0B,QAA1BA,QAA0B;AAAA,MAAhBzmE,GAAgB,QAAhBA,GAAgB;AACjF,SAAO,CACCuhD,WAAK,CAAC1jE,MADP,SACmBkjF,MADnB,EAECxf,WAAK,CAAC5jE,KAFP,SAEkB6oF,KAFlB,EAGCjlB,WAAK,CAACvjE,QAHP,UAGqBkoF,QAAQ,GAAGhlF,oCAAe,CAACC,OAAnB,GAA6BD,oCAAe,CAACE,SAH1E,GAICmgE,WAAK,CAAC/uB,MAJP,UAImBi0C,QAAQ,GAAGjlF,kCAAa,CAACE,QAAjB,GAA4BF,kCAAa,CAACC,MAJrE,GAKC8/D,WAAK,CAAC39D,GALP,SAKgBoc,GALhB,OAMCuhD,WAAK,CAAC4lB,YANP,EAOL1vE,IAPK,CAOA,GAPA,CAAP;AAQH;;AAED,SAASuzE,gBAAT,QAAgE;AAAA,MAApC1G,KAAoC,SAApCA,KAAoC;AAAA,MAA7BiC,KAA6B,SAA7BA,KAA6B;AAAA,MAAtB/zB,SAAsB,SAAtBA,SAAsB;AAC5D,SAAO,CACC+O,WAAK,CAAC9jE,KADP,SACkB6mF,KADlB,EAEC/iB,WAAK,CAAC3jE,KAFP,SAEkB2oF,KAFlB,EAGChlB,WAAK,CAACgL,UAHP,SAGuB/Z,SAHvB,EAIL/6C,IAJK,CAIA,GAJA,CAAP;AAKH;;AAED,SAASwzE,gBAAT,CAA0B/qE,MAA1B,EAAwD;AAAA,MAC5CD,OAD4C,GAC1BC,MAD0B,CAC5CD,OAD4C;AAAA,MACnCE,IADmC,GAC1BD,MAD0B,CACnCC,IADmC;AAEpD,SAAO0qE,gBAAgB,CAAC5qE,OAAD,CAAhB,CAA0BE,IAA1B,CAAP;AACH;;AAED,SAAS+qE,cAAT,QAA4N;AAAA,MAAlM5G,KAAkM,SAAlMA,KAAkM;AAAA,MAA3L7lE,MAA2L,SAA3LA,MAA2L;AAAA,MAAnLgoE,QAAmL,SAAnLA,QAAmL;AAAA,MAAzK1F,MAAyK,SAAzKA,MAAyK;AAExN,MAAM8B,YAAY,GAAG8C,qBAAqB,CAAClnE,MAAD,CAA1C;AACA,MAAM0sE,mBAAmB,GAAIzF,cAAc,CAACpB,KAAD,CAAd,KAA0B7lE,MAAvD,CAHwN,CAKxN;;AACA,MAAI,CAAC0sE,mBAAL,EAA0B;AACtB,WAAOtI,YAAP;AACH,GARuN,CAUxN;;;AACA,MAAI4D,QAAQ,IAAI1F,MAAM,KAAK1/E,kCAAa,CAACC,UAAzC,EAAqD;AACjD,WAAOuhF,YAAP;AACH;;AAED,SAAOyB,KAAP;AACH;;AAED,SAAS8G,gBAAT,QACqG;AAAA,MADzE9G,KACyE,SADzEA,KACyE;AAAA,MADlEiC,KACkE,SADlEA,KACkE;AAAA,MAD3D15D,OAC2D,SAD3DA,OAC2D;AAAA,MADlD45D,QACkD,SADlDA,QACkD;AAAA,MADxC1F,MACwC,SADxCA,MACwC;AAEjG,SAAOl0D,OAAO,CAACrV,GAAR,CAAY,UAACiH,MAAD,EAASzC,CAAT,EAAe;AAE9B,QAAMqvE,WAAW,GAAGH,cAAc,CAAC;AAAE5G,WAAK,EAALA,KAAF;AAAS7lE,YAAM,EAANA,MAAT;AAAiBgoE,cAAQ,EAARA,QAAjB;AAA2B1F,YAAM,EAANA;AAA3B,KAAD,CAAlC;AAEA,QAAMuK,WAAW,GAAI7E,QAAQ,IAAIzqE,CAAC,GAAG,CAAjB,GACd4pE,eAAe,CAACyF,WAAD,EAAc,iBAAd,CAAf,CAAgD9E,KAAhD,CADc,GAEdA,KAFN;AAIA,WAAO;AACH9nE,YAAM,EAANA,MADG;AAEH6lE,WAAK,EAAE+G,WAFJ;AAGH9E,WAAK,EAAE+E;AAHJ,KAAP;AAKH,GAbM,CAAP;AAcH;;AAED,SAASC,WAAT,QACsG;AAAA,MAD/E7E,KAC+E,SAD/EA,KAC+E;AAAA,MADxE3F,MACwE,SADxEA,MACwE;AAAA,MADhEuF,IACgE,SADhEA,IACgE;AAClG,SAAOI,KAAK,CAAClvE,GAAN,CAAU,UAAAT,IAAI,EAAI;AAAA;;AACrB,QAAMy0E,IAAI,GAAGp2B,8BAAS,CAACr+C,IAAD,CAAtB;AAEA,WACI,sGACY7R,8BAAS,CAACrH,MADtB,IAC+BkjF,MAAM,GAAGA,MAAH,GAAY,EADjD,6BAEY77E,8BAAS,CAACxH,IAFtB,IAE6B4oF,IAAI,GAAGA,IAAH,GAAU,EAF3C,6BAGYphF,8BAAS,CAACE,cAHtB,SAG2CtD,4BAAO,CAACrD,IAHnD,QAG6DyG,8BAAS,CAACzG,IAHvE,SAGkFsY,IAHlF;AAII,WAAK,EAAOwqD,WAAK,CAAC9iE,IAAb,SAAuB8iE,WAAK,CAAC9iE,IAA7B,SAAuCsY,IAJhD;AAKI,cAAQ,EAAC;AALb,QAMI;AACI,WAAK,qBADT;AAEI,SAAG,iCAAiC8vC,0CAAY,CAAC2kC,IAAI,CAAC50E,QAAL,EAAD,CAFpD;AAGI,SAAG,EAAGG;AAHV,MANJ,CADJ;AAaH,GAhBM,CAAP;AAiBH;;AAED,SAAS00E,kBAAT,QAC+G;AAAA,MADjF/E,KACiF,SADjFA,KACiF;AAAA,MAD1EP,YAC0E,SAD1EA,YAC0E;AAAA,MAD5DG,IAC4D,SAD5DA,IAC4D;AAAA,MADtDvF,MACsD,SADtDA,MACsD;;AAE3G,MAAI,CAACoF,YAAL,EAAmB;AACf;AACH;;AAED,SAAO;AAAK,SAAK,OAAO5kB,WAAK,CAACxjE;AAAvB,KAA2CwtF,WAAW,CAAC;AAAE7E,SAAK,EAALA,KAAF;AAASJ,QAAI,EAAJA,IAAT;AAAevF,UAAM,EAANA;AAAf,GAAD,CAAtD,CAAP;AACH;;AAED,SAAS2K,+BAAT,CAAyC/yE,IAAzC,EAA6D;AACzD,MAAM2oB,SAAS,GAAOigC,WAAK,CAAC+lB,IAAb,SAAuB/lB,WAAK,CAACmmB,oBAA5C;AACA,SAAO;AAAM,SAAK,EAAGpmD,SAAd;AAA0B,YAAQ,EAAC;AAAnC,KAAyC3oB,IAAzC,CAAP;AACH;;AAED,SAASgzE,2BAAT,SAA4G;AAAA,MAArEC,sBAAqE,UAArEA,sBAAqE;AAAA,MAA7C1F,QAA6C,UAA7CA,QAA6C;AAAA,MAAnC2F,gBAAmC,UAAnCA,gBAAmC;;AACxG,MAAIz+D,KAAJ,EAAc,EAEb;;AAED,MAAI,CAAC84D,QAAL,EAAe;AACX;AACH;;AAED,MAAI,CAAC2F,gBAAL,EAAuB;AACnB;AACH;;AAED,MAAMC,SAAS,GAAG,GAAlB;AACA,MAAMC,cAAc,GAAG,CAAvB;AACA,MAAMC,wBAAwB,GAAG,CAAjC;AACA,MAAMC,KAAK,GAAG,CAAd;AAEA,MAAMC,UAAU,wDAAhB;AAKA,MAAMC,QAAQ,0DAAd;AAKA,MAAM7kD,MAAM,qEAAZ;AAKA,MAAMD,OAAO,oEAAb;AAKA,MAAMogD,SAAS,GAAG,YAAlB;AACA,MAAM2E,aAAa,SAAQ7qB,WAAK,CAACp8D,MAAd,SAA0BD,8BAAS,CAACE,cAApC,SAAwDtD,4BAAO,CAACzD,MAAhE,MAAnB;AAEA,MAAMguF,WAAW,GAAOD,aAAP,UAA2B7qB,WAAK,CAACgmB,IAAjC,SAA2ChmB,WAAK,CAACgmB,IAAjD,SAA2DzlF,4BAAO,CAACzD,MAApF;AACA,MAAMiuF,WAAW,GAAOF,aAAP,UAA2B7qB,WAAK,CAAC+lB,IAAjC,gCAAjB;AACA,MAAMI,oBAAoB,GAAO0E,aAAP,2BAA1B;AAEA,SACI;AAAO,aAAS,uBAETE,WAFS,UAES5E,oBAFT,4BAGLpgD,MAHK,uCAMTmgD,SANS,SAMM6E,WANN,cAM4B/qB,WAAK,CAACj6B,MANlC,6BAOLD,OAPK,0BAQL6kD,UARK,+CASgBH,cAThB,UASqCE,KATrC,qFAY0BH,SAZ1B,+BAaLrE,SAbK,SAaUC,oBAbV,gCAcDpgD,MAdC,6FAkB0BwkD,SAlB1B,+BAmBLrE,SAnBK,SAmBU4E,WAnBV,4CAoBUT,sBAAsB,2BAA0BI,wBAA1B,UAAyDC,KAAzD,wBApBhC,iDAuBLxE,SAvBK,SAuBU6E,WAvBV,cAuBgC/qB,WAAK,CAACj6B,MAvBtC,iCAwBD4kD,UAxBC,8BAyBD7kD,OAzBC,0CA0BUukD,sBAAsB,0BAAyBI,wBAAzB,UAAwDC,KAAxD,iCAA2FF,cAA3F,UAAgHE,KAAhH,eA1BhC,iDA6BLxE,SA7BK,SA6BUC,oBA7BV,gCA8BDwE,UA9BC,8BA+BD7kD,OA/BC,mEAgCoC2kD,wBAhCpC,UAgCmEC,KAhCnE,kHAqCAC,UArCA,mCAsCEC,QAtCF,+FA0CAA,QA1CA,iCA2CAD,UA3CA,kCA4CCA,UA5CD,mCA6CEC,QA7CF,8FAiDAD,UAjDA,kCAkDCA,UAlDD,mCAmDEC,QAnDF,sGAuDAD,UAvDA,kCAwDCC,QAxDD,kCAyDCA,QAzDD,mCA0DED,UA1DF;AAAhB,IADJ;AA+DH;;AAED,SAASK,aAAT,CAAuB5zE,IAAvB,UACyS;AAAA,MADjQ2rE,KACiQ,UADjQA,KACiQ;AAAA,MAD1PpkE,MAC0P,UAD1PA,MAC0P;AAAA,MADlPqmE,KACkP,UADlPA,KACkP;AAAA,MAD3OL,QAC2O,UAD3OA,QAC2O;AAAA,MADjO1zB,SACiO,UADjOA,SACiO;AAAA,MADtNsuB,OACsN,UADtNA,OACsN;AAAA,MAD7M9gE,GAC6M,UAD7MA,GAC6M;AAAA,MADxM0mE,MACwM,UADxMA,KACwM;AAAA,MADjM8F,cACiM,UADjMA,cACiM;AAAA,MADjLzL,MACiL,UADjLA,MACiL;AAAA,MADzKuF,IACyK,UADzKA,IACyK;;AAErS,MAAM78C,QAAO,GAAGwhD,gBAAgB,CAAC/qE,MAAD,CAAhC;;AAEA,SAAO/H,gCAAS,CAACQ,IAAD,EAAO;AAEnBA,QAFmB,gBAEdD,KAFc,EAEgB;AAC/B,UAAM4oB,SAAS,QAAOigC,WAAK,CAAC+lB,IAA5B;AACA,aAAO;AAAM,aAAK,EAAGhmD,SAAd;AAA0B,gBAAQ;AAAlC,SAAqC5oB,KAArC,CAAP;AACH,KALkB;AAOnB8yE,QAPmB,gBAOdz0E,IAPc,EAOgB;AAE/B,UAAI,CAACmvE,QAAL,EAAe;AACX;AACH;;AAED,UAAI,CAAC1zB,SAAL,EAAgB;AACZ,cAAM,IAAI55C,KAAJ,6CAAN;AACH;;AAED,UAAM4yE,IAAI,GAAI,OAAO72B,iCAAY,CAAC59C,IAAD,CAAnB,KAA8B,UAA/B,GACP49C,iCAAY,CAAC59C,IAAD,CAAZ,CAAmB;AAAEutE,aAAK,EAALA,KAAF;AAASpkE,cAAM,EAANA,MAAT;AAAiBqmE,aAAK,EAALA,KAAjB;AAAwBL,gBAAQ,EAARA,QAAxB;AAAkC1zB,iBAAS,EAATA,SAAlC;AAA6CsuB,eAAO,EAAPA,OAA7C;AAAsD9gE,WAAG,EAAHA,GAAtD;AAA2D0mE,aAAK,EAALA;AAA3D,OAAnB,CADO,GAEP/xB,iCAAY,CAAC59C,IAAD,CAAZ,CAAmBy7C,SAAnB,KAAiCmC,iCAAY,CAAC59C,IAAD,CAAZ,CAAmB1W,sCAAiB,CAACC,GAArC,CAFvC;AAIA,aACI;AACI,aAAK,EAAOihE,WAAK,CAACgmB,IAAb,SAAuBhmB,WAAK,CAACgmB,IAA7B,SAAuCxwE,IAAvC,SAAiDwqD,WAAK,CAACgmB,IAAvD,SAAiEhB,KAD1E;AAEI,WAAG,iCAAiC1/B,0CAAY,CAAC2kC,IAAI,CAAC50E,QAAL,EAAD,CAFpD;AAGI,WAAG,EAAGG;AAHV,QADJ;AAMH,KA3BkB;AA6BnB0yB,WA7BmB,mBA6BX1yB,IA7BW,EA6BkB;AACjC,UAAI01E,aAAJ;;AADiC,uCAGf11E,IAAI,CAAC2O,KAAL,CAAW,GAAX,CAHe,oCAGE;AAA9B,YAAMnO,GAAG,oBAAT;;AACD,YAAIkyB,QAAO,CAAClyB,GAAD,CAAX,EAAkB;AACdk1E,uBAAa,GAAGhjD,QAAO,CAAClyB,GAAD,CAAvB;AACA;AACH;AACJ;;AAED,UAAMwlB,KAAK,GAAG,eAAd;AACA0vD,mBAAa,GAAGA,aAAa,IAAIA,aAAa,CAAC51E,OAAd,CAAsBkmB,KAAtB,EAA6B,UAACvkB,KAAD,EAAQk0E,eAAR,EAA4B;AACtF,YAAIl0E,KAAK,IAAIk0E,eAAb,EAA8B;AAC1B,iBAAOF,cAAc,IAAIA,cAAc,CAACE,eAAD,CAAvC;AACH;AACJ,OAJgC,CAAjC;;AAOA,UAAI,CAACD,aAAD,IAAkBzsE,GAAG,KAAKpc,wBAAG,CAACK,IAAlC,EAAwC;AACpC,cAAM,IAAI2U,KAAJ,6BAAqC7B,IAArC,aAAmDmJ,MAAM,CAACC,IAA1D,SAAoED,MAAM,CAACD,OAA3E,CAAN;AACH;;AAED,aAAOssE,aAAa,CAACE,aAAa,IAAI,EAAlB,EAAsB;AAAEnI,aAAK,EAALA,KAAF;AAASpkE,cAAM,EAANA,MAAT;AAAiBqmE,aAAK,EAALA,KAAjB;AAAwBL,gBAAQ,EAARA,QAAxB;AAAkC1zB,iBAAS,EAATA,SAAlC;AAA6CsuB,eAAO,EAAPA,OAA7C;AAAsD9gE,WAAG,EAAHA,GAAtD;AAA2D0mE,aAAK,EAALA;AAA3D,OAAtB,CAApB;AACH,KApDkB;AAsDnBA,SAtDmB,mBAsDmB;AAClC,UAAI,CAAC5F,OAAL,EAAc;AACV,cAAM,IAAIloE,KAAJ,gDAAN;AACH;;AAED,aAAO2yE,WAAW,CAAC;AAAE7E,aAAK,EAALA,MAAF;AAAS3F,cAAM,EAANA,MAAT;AAAiBuF,YAAI,EAAJA;AAAjB,OAAD,CAAlB;AACH,KA5DkB;AA8DnBqG,aA9DmB,uBA8DO;AACtB,aAAO;AAAM,aAAK,EAAGprB,WAAK,CAACimB;AAApB,QAAP;AACH,KAhEkB;AAkEnBzuE,SAlEmB,kBAkEbL,KAlEa,EAkEiB;AAChC,UAAM4oB,SAAS,QAAOigC,WAAK,CAAC+lB,IAA5B;AACA,aAAO;AAAM,aAAK,EAAGhmD;AAAd,SAA4B5oB,KAAK,CAACgN,KAAN,CAAY,MAAZ,EAAoB,CAApB,CAA5B,EAAoD,4CAApD,EAA4DhN,KAAK,CAACgN,KAAN,CAAY,MAAZ,EAAoB,CAApB,CAA5D,CAAP;AACH;AArEkB,GAAP,CAAhB;AAuEH;;AAED,SAASknE,mBAAT,SAA4H;AAAA,MAA7FC,WAA6F,UAA7FA,WAA6F;AAAA,MAAhFjB,sBAAgF,UAAhFA,sBAAgF;AAAA,MAAxDhD,UAAwD,UAAxDA,UAAwD;AAAA,MAA5C1C,QAA4C,UAA5CA,QAA4C;AAAA,MAAlC2F,gBAAkC,UAAlCA,gBAAkC;AACxH,SACI;AAAK,SAAK,OAAOtqB,WAAK,CAACnjE;AAAvB,KAEMutF,2BAA2B,CAAC;AAAEC,0BAAsB,EAAtBA,sBAAF;AAA0B1F,YAAQ,EAARA,QAA1B;AAAoC2F,oBAAgB,EAAhBA;AAApC,GAAD,CAFjC,EAGMgB,WAHN,EAIMjB,sBAJN,EAMQhD,UAAU,IAAID,MAAM,CAACC,UAAD,CAN5B,CADJ;AAWH;;AAED,SAASkE,YAAT,SACkb;AAAA;;AAAA,MAD1ZxG,IAC0Z,UAD1ZA,IAC0Z;AAAA,MADpZhC,KACoZ,UADpZA,KACoZ;AAAA,MAD7YiC,KAC6Y,UAD7YA,KAC6Y;AAAA,MADtYrmE,MACsY,UADtYA,MACsY;AAAA,MAD9XgmE,QAC8X,UAD9XA,QAC8X;AAAA,MADpXO,QACoX,UADpXA,QACoX;AAAA,MAD1W1F,MAC0W,UAD1WA,MAC0W;AAAA,MADlWyF,KACkW,UADlWA,KACkW;AAAA,MAD3V/nE,MAC2V,UAD3VA,MAC2V;AAAA,MADnVqiE,OACmV,UADnVA,OACmV;AAAA,MAD1UmF,OAC0U,UAD1UA,OAC0U;AAAA,MADjUjqE,CACiU,UADjUA,CACiU;AAAA,MAD9TgE,GAC8T,UAD9TA,GAC8T;AAAA,MADzT0mE,KACyT,UADzTA,KACyT;AAAA,MADlTlC,iBACkT,UADlTA,iBACkT;AAAA,MAD/R6B,qBAC+R,UAD/RA,qBAC+R;AAE9a,MAAM7zB,SAAS,GAAGozB,eAAe,CAACtB,KAAD,EAAQ,YAAR,CAAf,CAAqCiC,KAArC,CAAlB;AAEA,MAAM8E,WAAW,GAAGH,cAAc,CAAC;AAAE5G,SAAK,EAALA,KAAF;AAAS7lE,UAAM,EAANA,MAAT;AAAiBgoE,YAAQ,EAARA,QAAjB;AAA2B1F,UAAM,EAANA;AAA3B,GAAD,CAAlC,CAJ8a,CAM9a;AACA;;AACA,MAAI8L,WAAJ;AACA,MAAIjE,UAAJ;AACA,MAAMmE,QAAQ,GAAG1G,qBAAqB,IAAIA,qBAAqB,CAAC2G,UAA/C,IAA6D3G,qBAAqB,CAAC2G,UAAtB,CAAiCr0E,IAA/G;AACA,MAAIizE,sBAAJ;AACA,MAAIC,gBAAJ;;AACA,MAAIf,4BAA4B,CAACjxE,OAA7B,CAAqCyqE,KAArC,MAAgD,CAAC,CAArD,EAAwD;AACpDuH,oBAAgB,GAAG,IAAnB;AACH;;AAED,MAAIR,WAAW,KAAK/G,KAAhB,IAAyBA,KAAK,KAAKlmF,iCAAY,CAACM,MAAhD,IAA0D,CAACwnF,QAA/D,EAAyE;AACrE2G,eAAW,GAAGjH,eAAe,CAACtB,KAAD,EAAQ,OAAR,CAA7B;AACH,GAFD,MAEO,IAAI+G,WAAW,KAAK/G,KAAhB,IAAyB,CAAC2I,IAA9B,EAAuC;AAC1C,QAAInC,4BAA4B,CAACjxE,OAA7B,CAAqCyqE,KAArC,MAAgD,CAAC,CAAjD,IAAsDyI,QAAtD,IAAkE7G,QAAlE,IAA8E,CAACD,OAAnF,EAA4F;AACxF2F,4BAAsB,GAAGF,+BAA+B,CAACqB,QAAD,CAAxD;AACAnE,gBAAU,GAAGvC,qBAAqB,IAAIA,qBAAqB,CAAC2G,UAA/C,IAA6D3G,qBAAqB,CAAC2G,UAAtB,CAAiCv2D,QAA9F,IAA0G4vD,qBAAqB,CAAC2G,UAAtB,CAAiCv2D,QAAjC,CAA0CmyD,UAAjK;AACH;;AACDiE,eAAW,GAAGjH,eAAe,CAACtB,KAAD,EAAQ,OAAR,CAA7B;AACH,GANM,MAMA;AACHuI,eAAW,GAAGjH,eAAe,CAACtB,KAAD,EAAQ,WAAR,CAA7B;AACH,GA3B6a,CA6B9a;;;AACA,MAAMkI,cAAc,GAAG;AACnBhI,qBAAiB,EAAjBA,iBADmB;AAEnBtkE,UAAM,EAANA;AAFmB,GAAvB;AAKA2sE,aAAW,GAAI,OAAOA,WAAP,KAAuB,UAAxB,GAAsCA,WAAW,CAACL,cAAD,CAAjD,GAAoEK,WAAlF;AACAA,aAAW,GAAGN,aAAa,CAACM,WAAD,EAAc;AAAEvI,SAAK,EAALA,KAAF;AAASpkE,UAAM,EAANA,MAAT;AAAiBqmE,SAAK,EAALA,KAAjB;AAAwBL,YAAQ,EAARA,QAAxB;AAAkC1zB,aAAS,EAATA,SAAlC;AAA6CsuB,WAAO,EAAPA,OAA7C;AAAsD9gE,OAAG,EAAHA,GAAtD;AAA2D0mE,SAAK,EAALA,KAA3D;AAAkE8F,kBAAc,EAAdA,cAAlE;AAAkFzL,UAAM,EAANA,MAAlF;AAA0FuF,QAAI,EAAJA;AAA1F,GAAd,CAA3B,CApC8a,CAsC9a;;AACA,MAAM4G,WAAW,GAAG,CAChBprF,4BAAO,CAACrD,IADQ,EAElBob,OAFkB,CAEV4E,MAFU,MAEE,CAAC,CAFvB;AAIA,SACI,wGACYvZ,8BAAS,CAACrH,MADtB,IAC+BkjF,MAAM,GAAGA,MAAH,GAAY,EADjD,gCAEY77E,8BAAS,CAACxH,IAFtB,IAE6B4oF,IAAI,GAAGA,IAAH,GAAU,EAF3C,gCAGaphF,8BAAS,CAACE,cAHvB,IAGyCqZ,MAHzC,SAGmDvZ,8BAAS,CAACC,MAH7D,IAGuE,IAHvE;AAII,SAAK,EAAOo8D,WAAK,CAACp8D,MAAb,SAAyBo8D,WAAK,CAAC/uB,MAA/B,SAA2Cx2B,CAA3C,SAAkD+uE,sBAAsB,CAAC;AAAEhK,YAAM,EAANA,MAAF;AAAUyF,WAAK,EAALA,KAAV;AAAiBN,cAAQ,EAARA,QAAjB;AAA2BO,cAAQ,EAARA,QAA3B;AAAqCzmE,SAAG,EAAHA;AAArC,KAAD,CAAxE,SAA0HgrE,gBAAgB,CAAC;AAAE1G,WAAK,EAALA,KAAF;AAASiC,WAAK,EAALA,KAAT;AAAgB/zB,eAAS,EAATA;AAAhB,KAAD,CAJnJ;AAKI,QAAI,EAAC,QALT;AAMI,kBAAa/zC,MANjB;AAOI,YAAQ,EAAGyuE,WAAW,IAAI;AAP9B,MAQMzuE,MAAM,KAAK3c,4BAAO,CAACrD,IAAnB,GAA0BouF,WAA1B,GAAwCD,mBAAmB,CAAC;AAAEC,eAAW,EAAXA,WAAF;AAAejB,0BAAsB,EAAtBA,sBAAf;AAAuChD,cAAU,EAAVA,UAAvC;AAAmD1C,YAAQ,EAARA,QAAnD;AAA6D2F,oBAAgB,EAAhBA;AAA7D,GAAD,CARjE,CADJ;AAYH;;AAED,SAASsB,aAAT,SAAyW;AAAA,MAAhV7I,KAAgV,UAAhVA,KAAgV;AAAA,MAAzU2B,OAAyU,UAAzUA,OAAyU;AAAA,MAAhUM,KAAgU,UAAhUA,KAAgU;AAAA,MAAzTrmE,MAAyT,UAAzTA,MAAyT;AAAA,MAAjTumE,QAAiT,UAAjTA,QAAiT;AAAA,MAAvSzmE,GAAuS,UAAvSA,GAAuS;AAAA,MAAlS0mE,KAAkS,UAAlSA,KAAkS;AAAA,MAA3RL,qBAA2R,UAA3RA,qBAA2R;AAAA,MAApQtF,MAAoQ,UAApQA,MAAoQ;;AACrW,MAAI,CAACkF,OAAL,EAAc;AACV;AACH;;AAGD,MAAIgH,KAAO,IAAIlM,MAAM,KAAK1/E,kCAAa,CAACE,QAAxC,EAAkD;AAC9C,WAD8C,CAE9C;AACH;;AAGD,MAAMm/B,GAAG,GAAG+lD,QAAQ,GACbb,eAAe,CAACtB,KAAD,EAAQ,SAAR,CAAf,IAAqCsB,eAAe,CAACtB,KAAD,EAAQ,KAAR,CADvC,GAEdsB,eAAe,CAACtB,KAAD,EAAQ,KAAR,CAFrB;AAGA,MAAM3rE,IAAI,GAAG0tE,qBAAqB,IAAIA,qBAAqB,CAACJ,OAA/C,IAA0DI,qBAAqB,CAACJ,OAAtB,CAA8BttE,IAAxF,GAA+F0tE,qBAAqB,CAACJ,OAAtB,CAA8BttE,IAA7H,GAAoI4zE,aAAa,CAAC7rD,GAAD,EAAM;AAAExgB,UAAM,EAANA,MAAF;AAAUqmE,SAAK,EAALA,KAAV;AAAiBvmE,OAAG,EAAHA,GAAjB;AAAsB0mE,SAAK,EAALA;AAAtB,GAAN,CAA9J;AACA,MAAMkC,UAAU,GAAGvC,qBAAqB,IAAIA,qBAAqB,CAACJ,OAA/C,IAA0DI,qBAAqB,CAACJ,OAAtB,CAA8BxvD,QAAxF,IAAoG4vD,qBAAqB,CAACJ,OAAtB,CAA8BxvD,QAA9B,CAAuCmyD,UAA9J;;AAEA,MAAI,CAACjwE,IAAL,EAAW;AACP;AACH;;AAED,MAAMmwE,QAAQ,GAAGlD,eAAe,CAACtB,KAAD,EAAQ,eAAR,CAAf,CAAwCiC,KAAxC,CAAjB;AAEA,SAAOsC,OAAO,CAACC,QAAD,EAAWF,UAAX,EAAuBjwE,IAAvB,CAAd;AACH;;AAED,SAASy0E,YAAT,GAAsC;AAElC,MAAIhjE,MAAM,GAAG2+D,kBAAkB,GAAGnyE,QAArB,EAAb;AAEAwT,QAAM,GAAGA,MAAM,CAACvT,OAAP,CAAe,gCAAf,EAAiD,UAAC2B,KAAD,EAAQzB,IAAR,EAAiB;AACvE,WAAOwqD,WAAK,CAACxqD,IAAD,CAAZ;AACH,GAFQ,CAAT;AAIA,SACI;AAAQ,aAAS,QAAQqT,MAAR;AAAjB,IADJ;AAGH;;AAED,SAASijE,WAAT,SAAyG;AAAA,MAAlF3pD,MAAkF,UAAlFA,MAAkF;AAAA,MAA1EwkD,UAA0E,UAA1EA,UAA0E;AACrG,SACI;AAAO,aAAS,EAAGO,cAAc,CAAC;AAAE/kD,YAAM,EAANA,MAAF;AAAUwkD,gBAAU,EAAVA;AAAV,KAAD;AAAjC,IADJ;AAGH;;AAED,SAASoF,uBAAT,CAAiCt2E,KAAjC,EAAoD;AAEhD,MAAI,CAACA,KAAL,EAAY;AACR,WAAO,IAAP;AACH;;AAJ+C,MAMxC+pE,MANwC,GAMf/pE,KANe,CAMxC+pE,MANwC;AAAA,uBAMf/pE,KANe,CAMhC6V,OANgC;AAAA,MAMhCA,OANgC,+BAMtB,EANsB;;AAQhD,MAAI,EAAEk0D,MAAM,KAAK1/E,kCAAa,CAACE,QAA3B,CAAJ,EAA0C;AACtC,WAAO,IAAP;AACH;;AAED,MAAMgsF,gBAAgB,GAAG1gE,OAAO,CAAChT,OAAR,CAAgB/X,4BAAO,CAACrD,IAAxB,MAAkC,CAAC,CAA5D;;AAEA,MAAI8uF,gBAAJ,EAAsB;AAClB,WAAO,IAAP;AACH;;AAED,SACI;AACI,SAAK,EAAC,mBADV;AAEI,SAAK;AAFT,KAgBMhB,aAAa,CAAC,wBAAD,6CAAgCv1E,KAAhC;AAAuCw7C,aAAS,EAAE;AAAlD,KAhBnB,CADJ;AAoBH;;AAEM,SAAS1O,iBAAT,SAAoE;AAAA;;AAAA,MAAvC9sC,KAAuC,UAAvCA,KAAuC;;AACvE,MAAIA,KAAK,IAAIA,KAAK,CAACooB,KAAnB,EAA0B;AACtB,QAAMA,KAAK,GAAGpoB,KAAK,CAACooB,KAApB;;AAEA,QAAIA,KAAK,CAACklD,KAAN,KAAgB,SAApB,EAA+B;AAC3BllD,WAAK,CAACklD,KAAN,GAAc,QAAd;AACH;;AAED,QAAIllD,KAAK,CAACmnD,KAAN,KAAgB,YAApB,EAAkC;AAC9B,aAAOnnD,KAAK,CAACmnD,KAAb;AACH;;AAED,QAAInnD,KAAK,CAAC2nD,UAAN,KAAqB,CAArB,IAA0B3nD,KAAK,CAAC6mD,OAAN,KAAkB,KAA5C,IACA7mD,KAAK,CAACknD,IAAN,KAAe,YADf,IAC+BlnD,KAAK,CAAC2hD,MAAN,KAAiB,YADhD,IAEA,CAAC3hD,KAAK,CAACsE,MAFX,EAEmB;AAEftE,WAAK,CAACsE,MAAN,GAAe,EAAf;AACH;AACJ;;AAEDwjD,qBAAmB,CAAClwE,KAAD,CAAnB;;AApBuE,wBAwBkB2mD,cAAc,CAAC3mD,KAAD,CAxBhC;AAAA,MAsB/DstE,KAtB+D,mBAsB/DA,KAtB+D;AAAA,MAsBxDpkE,MAtBwD,mBAsBxDA,MAtBwD;AAAA,MAsBhDqmE,KAtBgD,mBAsBhDA,KAtBgD;AAAA,MAsBzCC,KAtByC,mBAsBzCA,KAtByC;AAAA,MAsBlCN,QAtBkC,mBAsBlCA,QAtBkC;AAAA,MAuBnED,OAvBmE,mBAuBnEA,OAvBmE;AAAA,MAuB1DnF,OAvB0D,mBAuB1DA,OAvB0D;AAAA,MAuBjDC,MAvBiD,mBAuBjDA,MAvBiD;AAAA,MAuBzCl0D,OAvByC,mBAuBzCA,OAvByC;AAAA,MAuBhC45D,QAvBgC,mBAuBhCA,QAvBgC;AAAA,MAwBnEzmE,GAxBmE,mBAwBnEA,GAxBmE;AAAA,MAwB9D0jB,MAxB8D,mBAwB9DA,MAxB8D;AAAA,MAwBtDgjD,KAxBsD,mBAwBtDA,KAxBsD;AAAA,MAwB/ClC,iBAxB+C,mBAwB/CA,iBAxB+C;AAAA,MAwB5B2B,YAxB4B,mBAwB5BA,YAxB4B;AAAA,MAwBdG,IAxBc,mBAwBdA,IAxBc;AAAA,MAwBRD,qBAxBQ,mBAwBRA,qBAxBQ;;AA0BvE,MAAMmH,WAAW,GAAGpC,gBAAgB,CAAC;AAAE9G,SAAK,EAALA,KAAF;AAASiC,SAAK,EAALA,KAAT;AAAgB15D,WAAO,EAAPA,OAAhB;AAAyB45D,YAAQ,EAARA,QAAzB;AAAmC1F,UAAM,EAANA;AAAnC,GAAD,CAAhB,CACfvpE,GADe,CACX,UAACgY,MAAD,EAASxT,CAAT;AAAA,WAAe8wE,YAAY,CAAC;AAC7BxI,WAAK,EAAI90D,MAAM,CAAC80D,KADa;AAE7BiC,WAAK,EAAI/2D,MAAM,CAAC+2D,KAFa;AAG7B9nE,YAAM,EAAG+Q,MAAM,CAAC/Q,MAHa;AAI7BuB,SAAG,EAAHA,GAJ6B;AAK7BhE,OAAC,EAADA,CAL6B;AAM7B8kE,aAAO,EAAPA,OAN6B;AAO7B2F,cAAQ,EAARA,QAP6B;AAQ7BvmE,YAAM,EAANA,MAR6B;AAS7BgmE,cAAQ,EAARA,QAT6B;AAU7BD,aAAO,EAAPA,OAV6B;AAW7BlF,YAAM,EAANA,MAX6B;AAY7ByF,WAAK,EAALA,KAZ6B;AAa7BE,WAAK,EAALA,KAb6B;AAc7BlC,uBAAiB,EAAjBA,iBAd6B;AAe7B8B,UAAI,EAAJA,IAf6B;AAgB7BD,2BAAqB,EAArBA;AAhB6B,KAAD,CAA3B;AAAA,GADW,CAApB;AAoBA,MAAMoH,WAAW,GAAON,aAAa,CAAC;AAAE7I,SAAK,EAALA,KAAF;AAAS2B,WAAO,EAAPA,OAAT;AAAkBM,SAAK,EAALA,KAAlB;AAAyBrmE,UAAM,EAANA,MAAzB;AAAiCumE,YAAQ,EAARA,QAAjC;AAA2CzmE,OAAG,EAAHA,GAA3C;AAAgD0mE,SAAK,EAALA,KAAhD;AAAuDL,yBAAqB,EAArBA,qBAAvD;AAA8EtF,UAAM,EAANA;AAA9E,GAAD,CAArC;AACA,MAAM2M,eAAe,GAAGjC,kBAAkB,CAAC;AAAE/E,SAAK,EAALA,KAAF;AAASP,gBAAY,EAAZA,YAAT;AAAuBG,QAAI,EAAJA,IAAvB;AAA6BvF,UAAM,EAANA;AAA7B,GAAD,CAA1C;AAEA,MAAM4M,SAAS,GAAIN,WAAW,CAAC;AAAE3pD,UAAM,EAANA,MAAF;AAAUwkD,cAAU,EAAExB,KAAK,CAACxsE;AAA5B,GAAD,CAA9B;AACA,MAAM0zE,UAAU,GAAGR,YAAY,EAA/B;AACA,MAAMS,kBAAkB,GAAGnH,KAAK,CAACxsE,MAAN,GAAe,CAAf,GAAmBozE,uBAAuB,CAAC3vB,cAAc,CAAC3mD,KAAD,CAAf,CAA1C,GAAoE,IAA/F;AAEA,SACI,wGAAc9R,8BAAS,CAACG,OAAxB,IAAmCkb,SAAnC;AAA6E,SAAK,EAAOghD,WAAK,CAAC6lB,SAAb,SAA4B2D,sBAAsB,CAAC;AAAEhK,YAAM,EAANA,MAAF;AAAUyF,WAAK,EAALA,KAAV;AAAiBN,cAAQ,EAARA,QAAjB;AAA2BO,cAAQ,EAARA,QAA3B;AAAqCzmE,SAAG,EAAHA;AAArC,KAAD;AAApI,MACM2tE,SADN,EAGMH,WAHN,EAIMC,WAAW,IAAIC,eAJrB,EAMMG,kBANN,EAQMD,UARN,CADG,CAWLh3E,QAXK,EAAP;AAYH,C;;AChhBD;AAEA;AACA;AACA;CAGA;;AAaO,SAASmtC,mCAAT,OAAwH;AAAA,MAA3FrkB,EAA2F,QAA3FA,EAA2F;AAAA,MAAvF1oB,KAAuF,QAAvFA,KAAuF;AAAA,MAAhFuqD,KAAgF,QAAhFA,KAAgF;AAAA,MAAzE7gC,GAAyE,QAAzEA,GAAyE;AAAA,MAApEtjB,OAAoE,QAApEA,OAAoE;AAAA,MAA3DihD,MAA2D,QAA3DA,MAA2D;AAAA,MAAnD70B,MAAmD,QAAnDA,MAAmD;;AAAA,wBAErEm0B,cAAc,CAAC3mD,KAAD,CAFuD;AAAA,MAEnHsvE,IAFmH,mBAEnHA,IAFmH;AAAA,MAE7GhC,KAF6G,mBAE7GA,KAF6G;AAAA,MAEtGvD,MAFsG,mBAEtGA,MAFsG;AAAA,MAEtFoH,YAFsF,mBAE9FzkD,MAF8F;;AAI3H,MAAI+/C,WAAW,GAAGmC,eAAe,CAACtB,KAAD,EAASvD,MAAM,KAAK1/E,kCAAa,CAACE,QAA1B,GAAsC,qBAAtC,GAA8D,aAAtE,CAAjC;AACA,MAAIoiF,WAAW,GAAGiC,eAAe,CAACtB,KAAD,EAASvD,MAAM,KAAK1/E,kCAAa,CAACE,QAA1B,GAAsC,qBAAtC,GAA8D,aAAtE,CAAjC;;AAEA,MAAI4mF,YAAJ,EAAkB;AACd,QAAM2F,aAAa,GAAGloE,8BAAM,CAACrlB,gCAAD,CAAN,CAAoB+W,MAApB,CAA2B,UAAAy2E,YAAY,EAAI;AAC7D,aAAOhJ,YAAY,CAACgJ,YAAD,CAAZ,IAA8B5F,YAA9B,IACHpD,YAAY,CAACgJ,YAAD,CAAZ,CAA2B3I,SAA3B,IAAwC+C,YADrC,IACqDpD,YAAY,CAACgJ,YAAD,CAAZ,CAA2B1I,SAA3B,IAAwC8C,YADpG;AAEH,KAHqB,CAAtB;AAKA2F,iBAAa,CAAC50C,IAAd,CAAmB,UAAC80C,KAAD,EAAiBC,KAAjB,EAA6C;AAC5D,aAAOlJ,YAAY,CAACiJ,KAAD,CAAZ,CAAoBhJ,YAApB,GAAmCD,YAAY,CAACkJ,KAAD,CAAZ,CAAoBjJ,YAA9D;AACH,KAFD;AAIAvB,eAAW,GAAGqK,aAAa,CAAC,CAAD,CAA3B;AACAnK,eAAW,GAAGmK,aAAa,CAACA,aAAa,CAAC5zE,MAAd,GAAuB,CAAxB,CAA3B;AACH;;AAnB0H,cAqBnF6qE,YAAY,CAACuB,IAAD,CAAZ,IAAsBvB,YAAY,CAACxkF,gCAAW,CAACE,KAAb,CArBiD;AAAA,MAqBnHukF,YArBmH,SAqBnHA,YArBmH;AAAA,MAqBrGC,aArBqG,SAqBrGA,aArBqG;;AAuB3HlrE,YAAU,CAAC,YAAM;AACbskD,UAAM,CAACj/B,KAAP,CAAa7E,UAAb,GAA0B,2BAA1B;AACH,GAFS,EAEP,IAFO,CAAV;AAIA,SACI;AAAK,MAAE,EAAGmF,EAAV;AAAe,SAAK,EAAOgB,GAAP,SAAgBA,GAAhB,iBAAiCtjB,OAAjC,SAA8CsjB,GAA9C,eAA6D4jD,KAA7D,SAAwE5jD,GAAxE,cAAsF4lD,IAAtF,SAAgG5lD,GAAhG,gBAAgHqgD;AAApI,KACI,kDAEYrhD,EAFZ,uKAM0BqlD,YAAY,CAACtB,WAAD,CAAZ,CAA0ByB,QANpD,2DASYxlD,EATZ,SASoBgB,GATpB,cASkCngC,gCAAW,CAACM,UAT9C,uGAaY6+B,EAbZ,YAauB6hC,KAAK,CAACnuB,MAb7B,+FAe0B2xC,YAAY,CAACtB,WAAD,CAAZ,CAA0ByB,QAfpD,gDAgB0BH,YAAY,CAACpB,WAAD,CAAZ,CAA0BwB,QAhBpD,wGAoBYzlD,EApBZ,SAoBoBgB,GApBpB,gBAoBoCr/B,kCAAa,CAACE,QApBlD,YAoBmEggE,KAAK,CAACnuB,MApBzE,+CAqB0B2xC,YAAY,CAACtB,WAAD,CAAZ,CAA0ByB,QArBpD,2DAwBYxlD,EAxBZ,YAwBuB6hC,KAAK,CAACnuB,MAxB7B,4CAyBuB4xC,YAzBvB,6CA0BuBC,aA1BvB,4DA6BavlD,EA7Bb,SA6BqBgB,GA7BrB,cA6BmCngC,gCAAW,CAACM,UA7B/C,YA6BkE0gE,KAAK,CAACnuB,MA7BxE,gGAiCY1T,EAjCZ,YAiCuB6hC,KAAK,CAACnuB,MAjC7B,wIAoCsB2xC,YAAY,CAACtB,WAAD,CAAZ,CAA0ByB,QApChD,kNA2CYxlD,EA3CZ,YA2CuB6hC,KAAK,CAACnuB,MA3C7B,kBA2CkDmuB,KAAK,CAACluB,eA3CxD,iGA+CY3T,EA/CZ,YA+CuB6hC,KAAK,CAACnuB,MA/C7B,kBA+CkDmuB,KAAK,CAACjuB,eA/CxD,0JAoDY5T,EApDZ,YAoDuB6hC,KAAK,CAACnuB,MApD7B,kBAoDkDmuB,KAAK,CAACl6B,OApDxD,+FAwDY3H,EAxDZ,YAwDuB6hC,KAAK,CAACnuB,MAxD7B,kBAwDkDmuB,KAAK,CAAChuB,SAxDxD,qIADJ,EA+DK8qB,MA/DL,CADJ;AAmEH,C;;ACjHD;;;ACCA;AAEA;AACA;AACA;AACA;AAIO,SAAS6vB,gBAAT,CAA0BC,eAA1B,EAAoD;AACvDtP,uBAAqB,CAACr8B,gCAAD,EAAW2rC,eAAX,CAArB;AAEA9gC,0CAAiB,GAAG9zC,IAApB,CAAyB,UAAA60E,cAAc,EAAI;AAAA;;AAEvC,QAAMrpC,cAAc,GAAGhtC,KAAK,CAAC4D,SAAN,CAAgBsO,KAAhB,CAAsB3Q,IAAtB,CAA2B4Q,QAAQ,CAACoV,gBAAT,OAA+Bp6B,8BAAS,CAACE,cAAzC,OAA3B,EAAyFoS,GAAzF,CAA6F,UAAA+nB,EAAE,EAAI;AACtH,aAAOA,EAAE,CAACylB,YAAH,CAAgB9/C,8BAAS,CAACzG,IAA1B,KAAmC8gC,EAAE,CAACylB,YAAH,CAAgB9/C,8BAAS,CAACE,cAA1B,CAA1C;AACH,KAFsB,EAEpBkS,MAFoB,CAEb,UAAAmH,MAAM,EAAI;AAChB,aAAOA,MAAM,IAAIA,MAAM,KAAK3c,4BAAO,CAACrD,IAApC;AACH,KAJsB,CAAvB;AAMA,QAAMylD,MAAM,GAAGiqC,eAAe,CAACjqC,MAA/B;;AAEA,QAAI,CAACA,MAAL,EAAa;AACT;AACH;;AAZsC,eAsBlCA,MAAM,CAAC9kB,KAAP,IAAgB,EAtBkB;AAAA,2BAenC2hD,MAfmC;AAAA,QAenCA,MAfmC,4BAe1B1/E,kCAAa,CAACC,UAfY;AAAA,0BAgBnCilF,KAhBmC;AAAA,QAgBnCA,KAhBmC,2BAgB3B1mF,iCAAY,CAACC,IAhBc;AAAA,yBAiBnCwmF,IAjBmC;AAAA,QAiBnCA,IAjBmC,0BAiB5B/lF,gCAAW,CAACE,KAjBgB;AAAA,0BAkBnC+lF,KAlBmC;AAAA,QAkBnCA,KAlBmC,2BAkB3BzlF,iCAAY,CAACC,IAlBc;AAAA,0BAmBnCsjF,KAnBmC;AAAA,QAmBnCA,KAnBmC,2BAmB3BlmF,iCAAY,CAACE,QAnBc;AAAA,QAoBnCyoF,UApBmC,QAoBnCA,UApBmC;AAAA,QAqBnCd,OArBmC,QAqBnCA,OArBmC;;AAwBvCz8D,iDAAK,sBACA/jB,yBAAI,CAACC,GAAL,CAASE,KADT,IACkCH,yBAAI,CAACG,KAAL,CAAWT,MAD7C,SAEAM,yBAAI,CAACC,GAAL,CAASG,UAFT,IAEkCJ,yBAAI,CAACI,UAAL,CAAgBoC,WAFlD,SAGAxC,yBAAI,CAACC,GAAL,CAASI,WAHT,IAGkCL,yBAAI,CAACK,WAAL,CAAiB0B,MAHnD,SAIA/B,yBAAI,CAACC,GAAL,CAASoB,YAJT,IAIkCi+C,cAAc,CAACttC,IAAf,CAAoB,GAApB,CAJlC,SAKAhS,yBAAI,CAACC,GAAL,CAASqB,aALT,IAKkCg+C,cAAc,CAAC7qC,MALjD,SAMAzU,yBAAI,CAACC,GAAL,CAASgB,cANT,IAMkC0nF,cANlC,SAOA3oF,yBAAI,CAACC,GAAL,CAASrE,aAPT,IAOkC0/E,MAPlC,SAQAt7E,yBAAI,CAACC,GAAL,CAAS7F,YART,IAQkC0mF,KARlC,SASA9gF,yBAAI,CAACC,GAAL,CAASnF,WATT,IASkC+lF,IATlC,SAUA7gF,yBAAI,CAACC,GAAL,CAAS3E,YAVT,IAUkCylF,KAVlC,SAWA/gF,yBAAI,CAACC,GAAL,CAAStH,YAXT,IAWkCkmF,KAXlC,SAYA7+E,yBAAI,CAACC,GAAL,CAASuB,YAZT,IAYkCkS,MAAM,CAAC+rB,UAZzC,SAaAz/B,yBAAI,CAACC,GAAL,CAASwB,WAbT,IAakC6/E,UAblC,SAcAthF,yBAAI,CAACC,GAAL,CAAS0B,sBAdT,IAckC6+E,OAAO,GAAG,GAAH,GAAS,GAdlD,UAAL;AAiBAviE,iDAAS;AACZ,GA1CD;AA4CA,MAAMwgC,MAAM,GAAGiqC,eAAe,CAACjqC,MAAhB,IAA0B1B,gCAAQ,CAAC0B,MAAlD;;AAEA,MAAIA,MAAM,IAAIA,MAAM,CAACniC,QAArB,EAA+B;AAC3BE,sCAAW,CAACiiC,MAAM,CAACniC,QAAR,CAAX;AACH,GAnDsD,CAqDvD;;;AACA,MAAImiC,MAAM,CAACd,OAAP,IAAkB,CAACc,MAAM,CAACy3B,WAA9B,EAA2C;AACvC;AACAz3B,UAAM,CAACy3B,WAAP,GAAqBz3B,MAAM,CAACd,OAA5B;AACH,GAzDsD,CA2DvD;;;AACA,MAAIc,MAAM,CAACxC,WAAP,IAAsB,CAACwC,MAAM,CAACmqC,SAAlC,EAA6C;AACzC;AACAnqC,UAAM,CAACmqC,SAAP,GAAmBnqC,MAAM,CAACxC,WAA1B;AACH;;AAED,MAAI;AACA,QAAIwC,MAAM,IAAIA,MAAM,CAACyB,gBAAjB,IAAqCxsC,MAAM,CAACm1E,GAA5C,IACAn1E,MAAM,CAACm1E,GAAP,CAAWC,WADX,IAC0Bp1E,MAAM,CAACm1E,GAAP,CAAWC,WAAX,CAAuB/yE,GADjD,IAEArC,MAAM,CAACm1E,GAAP,CAAWC,WAAX,CAAuB/yE,GAAvB,CAA2B8C,IAF3B,IAEmCnF,MAAM,CAACm1E,GAAP,CAAWC,WAAX,CAAuB/yE,GAAvB,CAA2B8C,IAA3B,CAAgCkwE,UAFvE,EAEmF;AAC/Er1E,YAAM,CAACm1E,GAAP,CAAWC,WAAX,CAAuB/yE,GAAvB,CAA2B8C,IAA3B,CAAgCkwE,UAAhC,GAA6C,EAA7C;AACH;AACJ,GAND,CAME,OAAOh1E,GAAP,EAAY,CACV;AACH;AACJ,C;;;;ACrFD;;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAKA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEAygE,IAAI,CAACR,0BAAL;;AAEA,SAASgV,oBAAT,CAA8Bz3E,KAA9B,EAA+C;AAAA,wBAEmB2mD,cAAc,CAAC3mD,KAAD,EAAQ;AAAEkJ,UAAM,EAAEkkC,uCAAgB;AAA1B,GAAR,CAFjC;AAAA,MAEnCkgC,KAFmC,mBAEnCA,KAFmC;AAAA,MAE5BxD,OAF4B,mBAE5BA,OAF4B;AAAA,MAEnBC,MAFmB,mBAEnBA,MAFmB;AAAA,MAEX7gE,MAFW,mBAEXA,MAFW;AAAA,MAEHwqB,GAFG,mBAEHA,GAFG;AAAA,MAEE7d,OAFF,mBAEEA,OAFF;AAAA,MAEW7M,GAFX,mBAEWA,GAFX;;AAAA,MAGnCohE,OAHmC,GAGvBN,OAHuB,CAGnCM,OAHmC;AAAA,MAInCnhE,OAJmC,GAIvBC,MAJuB,CAInCD,OAJmC;;AAM3C,MAAImhE,OAAO,IAAIA,OAAO,CAACvnE,OAAR,CAAgB/X,4BAAO,CAACtD,MAAxB,MAAoC,CAAC,CAApD,EAAuD;AACnD,WAAO,KAAP;AACH;;AAED,MAAIuiF,MAAM,KAAK1/E,kCAAa,CAACC,UAA7B,EAAyC;AACrC,WAAO,KAAP;AACH;;AAED,MAAIopC,GAAG,KAAK,CAAZ,EAAe;AACX,WAAO,KAAP;AACH;;AAED,MAAI45C,KAAK,KAAKlmF,iCAAY,CAACI,MAA3B,EAAmC;AAC/B,WAAO,KAAP;AACH;;AAED,MAAIyhB,OAAO,KAAKjX,4BAAO,CAAC8L,EAAxB,EAA4B;AACxB,WAAO,KAAP;AACH;;AAED,MAAI+rE,mBAAmB,CAAC/+E,4BAAO,CAACtD,MAAT,EAAiB;AAAEsiF,WAAO,EAAPA,OAAF;AAAW5gE,UAAM,EAANA,MAAX;AAAmB6gE,UAAM,EAANA,MAAnB;AAA2B/gE,OAAG,EAAHA;AAA3B,GAAjB,CAAvB,EAA2E;AACvE,WAAO,KAAP;AACH;;AAED,MAAImhE,qBAAqB,CAACr/E,4BAAO,CAACtD,MAAT,EAAiB;AAAEsiF,WAAO,EAAPA,OAAF;AAAW5gE,UAAM,EAANA,MAAX;AAAmB6gE,UAAM,EAANA;AAAnB,GAAjB,CAAzB,EAAwE;AACpE,WAAO,KAAP;AACH;;AAED,MAAIl0D,OAAO,CAAChT,OAAR,CAAgB/X,4BAAO,CAACtD,MAAxB,MAAoC,CAAC,CAAzC,EAA4C;AACxC,WAAO,KAAP;AACH;;AAED,MAAM4f,MAAM,GAAGR,mDAAS,GAAG/G,OAAZ,CAAoB,cAApB,EAAoC,EAApC,EAAwCA,OAAxC,CAAgD,QAAhD,EAA0D,EAA1D,CAAf;;AAEA,MAAIgH,wBAAM,CAAC6Q,iBAAP,CAAyB7U,OAAzB,CAAiCuE,MAAjC,MAA6C,CAAC,CAAlD,EAAqD;AACjD,WAAO,KAAP;AACH;;AAED,SAAO,IAAP;AACH;;AAED,IAAIswE,cAAJ;AA8BO,IAAMxW,gBAAiC,GAAGj1B,6BAAM,CAAC;AAEpDviB,KAAG,EAAG,eAF8C;AAGpD3pB,MAAI,EAAE,UAH8C;AAKpDosC,UALoD,oBAK3CnsC,KAL2C,EAK3B;AACrB,QAAMgJ,GAAG,GAAGhJ,KAAK,CAACgJ,GAAN,IAAanC,wBAAM,CAACmC,GAAhC;AACA,QAAM+F,GAAG,GAAGlI,wBAAM,CAACoU,UAAP,CAAkBjS,GAAlB,CAAZ;AACA,WAAO+F,GAAP;AACH,GATmD;AAWpD29B,UAAQ,EAAE;AACNzhB,UAAM,EAAE,IADF;AAEN/B,SAAK,EAAG;AAFF,GAX0C;AAgBpDgjB,WAAS,EAAQ,KAhBmC;AAiBpD6f,iBAAe,EAAE,IAjBmC;AAmBpDhf,mBAAiB,EAAjBA,mCAnBoD;AAqBpDoV,YAAU,EAAE;AACRz1B,UAAM,EAAE,IADA;AAERD,SAAK,EAAG;AAFA,GArBwC;AA0BpDogB,mBA1BoD,mCA0BuC;AAAA;;AAAA,QAAvE7sC,KAAuE,QAAvEA,KAAuE;AAAA,QAAhEwyB,MAAgE,QAAhEA,MAAgE;AAEvF,QAAMpxB,QAAQ,GACV;AAAK,eAAS,EAAG0rC,iBAAiB,CAAC;AAAE9sC,aAAK,EAALA;AAAF,OAAD;AAAlC,MADJ;AAIAoB,YAAQ,CAACoO,gBAAT,CAA0B,OAA1B,EAAmC,YAAM;AACrC3C,kDAAI,CAAC,2BAAD,CAAJ;;AAEA,UAAId,mCAAY,EAAhB,EAAoB;AAChBc,oDAAI,2CAAJ;AAEAH,qDAAS,GAHO,CAKhB;;AACAgpD,aAAK,mHAAL;AACH;;AAED,UAAI3hD,uCAAgB,CAAC,0BAAD,CAApB,EAAkD;AAC9CtH,oDAAI,CAAC,8BAAD,CAAJ;;AAEA,aAAI,CAACzM,KAAL,CAAWosC,OAAX,GAAqB7pC,IAArB,CAA0B,UAAAgG,KAAK,EAAI;AAC/BpG,gBAAM,CAACkqB,GAAP,CAAWvkB,QAAX,GAAsBiN,gCAAS,CAAClO,wBAAM,CAACoV,WAAR,EAAqB;AAAE1T,iBAAK,EAALA;AAAF,WAArB,CAA/B;AACH,SAFD;AAGH;AACJ,KAnBD;AAqBA,WACI,qBACI,qBACMnH,QADN,CADJ,CADJ;AAOH,GA5DmD;;AA8DpD,MAAIiJ,OAAJ,GAAuB;AACnB,WAAOuJ,uCAAgB,EAAvB;AACH,GAhEmD;;AAkEpD,MAAIxM,MAAJ,GAAsB;AAClB,WAAOP,wBAAM,CAAC8N,aAAd;AACH,GApEmD;;AAsEpD4V,YAAU,EAAE;AACRU,UAAM,EAAE;AACJ0sD,yBAAmB,EAAE;AADjB;AADA,GAtEwC;AA4EpD/qC,UA5EoD,sBA4EzC;AACP,QAAI,CAAC1gC,iCAAU,EAAf,EAAmB;AACfW,kDAAI,CAAC,0BAAD,CAAJ;AACH;AACJ,GAhFmD;AAkFpD7M,OAAK,EAAE;AACHoH,UAAM,EAAE;AACJ3F,UAAI,EAAM,QADN;AAEJurC,cAAQ,EAAE,KAFN;AAGJh5B,SAHI,iBAGW;AACX,eAAO7R,MAAM,CAAC2F,QAAP,CAAgBC,IAAvB;AACH,OALG;AAMJklC,gBAAU,EAAE;AANR,KADL;AAUHnjC,aAAS,EAAE;AACPrI,UAAI,EAAM,QADH;AAEPurC,cAAQ,EAAE,KAFH;AAGPh5B,SAHO,iBAGQ;AACX,eAAO3K,mCAAY,EAAnB;AACH,OALM;AAMP4jC,gBAAU,EAAE;AANL,KAVR;AAmBHjjC,mBAAe,EAAE;AACbvI,UAAI,EAAM,QADG;AAEburC,cAAQ,EAAE,KAFG;AAGbh5B,SAHa,iBAGG;AACZ,eAAOqK,+BAAQ,EAAf;AACH,OALY;AAMb4uB,gBAAU,EAAE;AANC,KAnBd;AA4BHjkC,OAAG,EAAE;AACDvH,UAAI,EAAQ,QADX;AAEDurC,cAAQ,EAAI,KAFX;AAGDC,gBAAU,EAAE,IAHX;AAKDj5B,SALC,iBAKc;AACX,eAAOnN,wBAAM,CAACmC,GAAd;AACH,OAPA;AASD4jC,cATC,oBASQ5jC,GATR,EASa;AACV,YAAIA,GAAJ,EAAS;AACL,cAAI,CAACnC,wBAAM,CAAC+R,UAAP,CAAkB5P,GAAlB,CAAL,EAA6B;AACzB,kBAAM,IAAIpH,KAAJ,mBAA2BoH,GAA3B,CAAN;AACH;AACJ;AACJ;AAfA,KA5BF;AA8CHoX,QAAI,EAAE;AACF3e,UAAI,EAAM,QADR;AAEFurC,cAAQ,EAAE,KAFR;AAGFh5B,SAHE,iBAGa;AACX,eAAO,EAAP;AACH;AALC,KA9CH;AAsDH4jE,wBAAoB,EAAE;AAClBn2E,UAAI,EAAM,SADQ;AAElBurC,cAAQ,EAAE,KAFQ;AAGlBh5B,SAHkB,iBAGF;AACZ,eAAO,KAAP;AACH;AALiB,KAtDnB;AA8DHuzB,UAAM,EAAE;AACJ9lC,UAAI,EAAM,QADN;AAEJurC,cAAQ,EAAE,KAFN;AAGJh5B,SAHI,iBAGW;AACX,eAAO,EAAP;AACH,OALG;AAOJ44B,cAPI,oBAOKrF,MAPL,EAOavnC,KAPb,EAOoB;AACpB,YAAMgJ,GAAG,GAAGhJ,KAAK,CAACgJ,GAAN,IAAanC,wBAAM,CAACmC,GAAhC;;AAEA,YAAI,CAACu+B,MAAM,CAACv+B,GAAD,CAAX,EAAkB;AACd,gBAAM,IAAIpH,KAAJ,mCAA2CoH,GAA3C,CAAN;AACH;;AAED,YAAI,OAAOu+B,MAAM,CAACv+B,GAAD,CAAb,KAAuB,QAA3B,EAAqC;AACjC,cAAIu+B,MAAM,CAACv+B,GAAD,CAAN,CAAYxH,KAAZ,CAAkB,UAAlB,CAAJ,EAAmC;AAC/B,kBAAM,IAAII,KAAJ,yBAAiC2lC,MAAM,CAACv+B,GAAD,CAAvC,CAAN;AACH;AACJ,SAJD,MAIO,IAAI,CAACjF,yCAAY,CAAC/B,SAAb,CAAuBulC,MAAM,CAACv+B,GAAD,CAA7B,CAAL,EAA0C;AAC7C,gBAAM,IAAIpH,KAAJ,4DAAN;AACH;AACJ,OArBG;AAuBJqsC,cAvBI,oBAuBK1G,MAvBL,EAuB+B;AAC/B,YAAIA,MAAM,IAAIA,MAAM,CAACruB,OAAP,KAAmB,wBAAjC,EAA2D;AACvDquB,gBAAM,CAACruB,OAAP,GAAiB,kFAAjB;AACH;;AAED,eAAOquB,MAAP;AACH;AA7BG,KA9DL;AA8FH9/B,UAAM,EAAE;AACJhG,UAAI,EAAM,QADN;AAEJurC,cAAQ,EAAE,KAFN;AAGJh5B,SAHI,iBAGW;AACX,eAAO3mB,2BAAM,CAACC,MAAd;AACH;AALG,KA9FL;AAsGHuqF,iBAAa,EAAE;AACXp2E,UAAI,EAAM,SADC;AAEXurC,cAAQ,EAAE;AAFC,KAtGZ;AA2GHx2B,SAAK,EAAE;AACH/U,UAAI,EAAQ,QADT;AAEHurC,cAAQ,EAAI,KAFT;AAGHC,gBAAU,EAAE,IAHT;AAKHj5B,SALG,eAKChU,KALD,EAKkB;AACjB,YAAMgJ,GAAG,GAAGhJ,KAAK,CAACgJ,GAAN,IAAanC,wBAAM,CAACmC,GAAhC;;AAEA,YAAIA,GAAG,KAAKpc,wBAAG,CAACE,KAAZ,IAAqBkc,GAAG,KAAKpc,wBAAG,CAACC,KAArC,EAA4C;AACxC,iBAAOga,wBAAM,CAAC2P,KAAd;AACH;AACJ;AAXE,KA3GJ;AAyHHshE,6BAAyB,EAAE;AACvBr2E,UAAI,EAAM,SADa;AAEvBurC,cAAQ,EAAE,KAFa;AAGvBh5B,SAAG,EAAO,eAAM;AACZ,eAAO,IAAP;AACH;AALsB,KAzHxB;AAiIH0C,YAAQ,EAAE;AACNjV,UAAI,EAAQ,QADN;AAENurC,cAAQ,EAAI,KAFN;AAGNC,gBAAU,EAAE,IAHN;AAKNj5B,SALM,eAKFhU,KALE,EAKe;AACjB,YAAMgJ,GAAG,GAAGhJ,KAAK,CAACgJ,GAAN,IAAanC,wBAAM,CAACmC,GAAhC;;AAEA,YAAIA,GAAG,KAAKpc,wBAAG,CAACE,KAAZ,IAAqBkc,GAAG,KAAKpc,wBAAG,CAACC,KAArC,EAA4C;AACxC,iBAAOga,wBAAM,CAAC6P,QAAd;AACH;AACJ;AAXK,KAjIP;AA+IHG,gBAAY,EAAE;AACVpV,UAAI,EAAQ,QADF;AAEVurC,cAAQ,EAAI,KAFF;AAGVC,gBAAU,EAAE,IAHF;AAKVj5B,SALU,eAKNhU,KALM,EAKW;AACjB,YAAMgJ,GAAG,GAAGhJ,KAAK,CAACgJ,GAAN,IAAanC,wBAAM,CAACmC,GAAhC;;AAEA,YAAIA,GAAG,KAAKpc,wBAAG,CAACC,KAAhB,EAAuB;AACnB,iBAAOga,wBAAM,CAACgQ,YAAd;AACH;AACJ;AAXS,KA/IX;AA6JHuC,eAAW,EAAE;AACT3X,UAAI,EAAQ,QADH;AAETurC,cAAQ,EAAI,KAFH;AAGTC,gBAAU,EAAE,IAHH;AAKTj5B,SALS,iBAKO;AACZ,eAAOnN,wBAAM,CAACuS,WAAd;AACH;AAPQ,KA7JV;AAuKH04C,aAAS,EAAE;AACPrwD,UAAI,EAAM,QADH;AAEPurC,cAAQ,EAAE,KAFH;AAGPJ,cAHO,oBAGEklB,SAHF,EAGa9xD,KAHb,EAGoB;AAEvB,YAAI,CAAC8xD,SAAS,CAACG,cAAf,EAA+B;AAC3B,gBAAM,IAAIrwD,KAAJ,6DAAN;AACH;;AAED,YAAI,CAAC5B,KAAK,CAACunC,MAAX,EAAmB;AACf,gBAAM,IAAI3lC,KAAJ,uEAAN;AACH;AACJ,OAZM;AAaP;AACAqsC,cAdO,oBAcE6jB,SAdF,EAca9xD,KAdb,EAc0D;AAC7D,YAAMgJ,GAAG,GAAGhJ,KAAK,CAACgJ,GAAN,IAAanC,wBAAM,CAACmC,GAAhC,CAD6D,CAE7D;;AACA,eAAOjF,yCAAY,CAACkC,IAAb,CAAkBjG,KAAK,CAACunC,MAAxB,EAAgChlC,IAAhC,CAAqC,UAAAglC,MAAM,EAAI;AAClD,iBAAOsqB,oDAAoB,CAACC,SAAD,EAAYvqB,MAAM,CAACv+B,GAAD,CAAlB,CAA3B;AACH,SAFM,CAAP;AAGH;AApBM,KAvKR;AA8LHojC,WAAO,EAAE;AACL3qC,UAAI,EAAM,UADL;AAELurC,cAAQ,EAAE,IAFL;AAGLj6B,aAAO,EAAG,KAHL;AAILxN,aAAO,EAAG6Q,MAAQ,GAAG,SAAH,GAAS,KAAK,IAJ3B;AAKLq3B,WAAK,EAAK,kBALL;AAOLQ,cAPK,oBAOIxM,QAPJ,EAOyB;AAC1B,eAAO,SAAS2K,OAAT,CAAiB9kC,IAAjB,EAAmD;AAAA;;AAAA,cAAlCA,IAAkC;AAAlCA,gBAAkC,GAA3B,EAA2B;AAAA;;AAEtD,cAAM6mC,OAAO,GAAG;AACZr/B,mBAAO,EAAPA,sBADY;AAEZs9B,mBAAO,EAAE;AACLH,oBAAM,EAAE,gBAACt7B,OAAD,EAAa;AACjB,uBAAO,MAAI,CAAC3Q,KAAL,CAAW8xD,SAAX,GACD,MAAI,CAAC9xD,KAAL,CAAW8xD,SAAX,CAAqBvvD,IAArB,CAA0B,UAAAglC,MAAM,EAAI;AAClC,yBAAOA,MAAM,CAAC28B,aAAP,CAAqB7Q,qDAAqB,CAAC1iD,OAAO,CAACy7B,OAAR,IAAmBz7B,OAApB,CAA1C,CAAP;AACH,iBAFC,CADC,GAID5M,yCAAY,CAACkC,IAAb,CAAkB,MAAI,CAACjG,KAAL,CAAWunC,MAA7B,EAAqChlC,IAArC,CAA0C,UAAAglC,MAAM,EAAI;AAClD,yBAAO69B,IAAI,CAACh5B,OAAL,CAAaH,MAAb,CAAoB,MAAI,CAACjsC,KAAL,CAAWgJ,GAA/B,EAAoCu+B,MAApC,EAA4C52B,OAA5C,CAAP;AACH,iBAFC,CAJN;AAOH;AATI,aAFG;AAaZsxB,iBAAK,EAAE;AACHgK,oBAAM,EAAE,gBAACt7B,OAAD,EAAa;AACjB,uBAAO5M,yCAAY,CAACkC,IAAb,CAAkB,MAAI,CAACjG,KAAL,CAAWunC,MAA7B,EAAqChlC,IAArC,CAA0C,UAAAglC,MAAM,EAAI;AACvD,yBAAO69B,IAAI,CAACnjC,KAAL,CAAWgK,MAAX,CAAkB,MAAI,CAACjsC,KAAL,CAAWgJ,GAA7B,EAAkCu+B,MAAlC,EAA0C52B,OAA1C,CAAP;AACH,iBAFM,CAAP;AAGH;AALE,aAbK;AAoBZmhD,qBAAS,EAAE;AACP7lB,oBAAM,EAAE,gBAACt7B,OAAD,EAAa;AACjB,oBAAI,CAAC,MAAI,CAAC3Q,KAAL,CAAW8xD,SAAhB,EAA2B;AACvB,wBAAM,IAAIlwD,KAAJ,iEAAN;AACH;;AAED,uBAAO,MAAI,CAAC5B,KAAL,CAAW8xD,SAAX,CAAqBvvD,IAArB,CAA0B,UAAAglC,MAAM,EAAI;AACvC,yBAAOA,MAAM,CAAC28B,aAAP,CAAqBvzD,OAArB,CAAP;AACH,iBAFM,CAAP;AAGH;AATM;AApBC,WAAhB;;AAiCA,cAAIoD,uCAAgB,CAAC,iBAAD,CAAhB,IAAuC,KAAKgkE,aAAhD,EAA+D;AAC3D,mBAAO,KAAKA,aAAZ;AACH;;AAED,eAAKA,aAAL,GAAqBh0E,yCAAY,CAACuB,GAAb,CAAiBm8B,QAAjB,EAA2B,IAA3B,EAAiC,CAAEn6B,IAAF,EAAQ6mC,OAAR,CAAjC,CAArB;AAEA,cAAMltB,SAAS,GAAGT,IAAI,CAACC,GAAL,EAAlB;AAEA,eAAKs3D,aAAL,GAAqB,KAAKA,aAAL,CAAmBx1E,IAAnB,CAAwB,UAAAgG,KAAK,EAAI;AAAA;;AAElD,gBAAI,CAACA,KAAL,EAAY;AACRpE,2DAAK,8BAAL;AACA,oBAAM,IAAIvC,KAAJ,8BAAN;AACH;;AAED,gBAAMsf,OAAO,GAAGV,IAAI,CAACC,GAAL,KAAaQ,SAA7B;AAEAzO,yDAAK,sBACC/jB,yBAAI,CAACC,GAAL,CAASE,KADV,IACgCH,yBAAI,CAACG,KAAL,CAAWtH,QAD3C,SAECmH,yBAAI,CAACC,GAAL,CAASG,UAFV,IAEgCJ,yBAAI,CAACI,UAAL,CAAgByC,eAFhD,SAGC7C,yBAAI,CAACC,GAAL,CAASS,YAHV,IAGgCV,yBAAI,CAACU,YAAL,CAAkB6mE,8CAAc,CAACztD,KAAD,CAAhC,CAHhC,SAIC9Z,yBAAI,CAACC,GAAL,CAASQ,UAJV,IAIgCqZ,KAJhC,SAKC9Z,yBAAI,CAACC,GAAL,CAASM,kBALV,IAKgC,MAAI,CAACgR,KAAL,CAAWgK,eAL3C,SAMCvb,yBAAI,CAACC,GAAL,CAAS2B,iBANV,IAMgC6wB,OANhC,SAOCzyB,yBAAI,CAACC,GAAL,CAAS6B,cAPV,IAOgC+W,IAAI,IAAIA,IAAI,CAAC0wE,cAP7C,UAAL;AAUAtrE,yDAAS;AAET,mBAAOnE,KAAP;AACH,WAtBoB,CAArB;AAwBA,iBAAO,KAAKwvE,aAAZ;AACH,SApED;AAqEH;AA7EI,KA9LN;AA8QH9gE,YAAQ,EAAE;AACNxV,UAAI,EAAM,QADJ;AAENurC,cAAQ,EAAE,KAFJ;AAGNh5B,SAHM,iBAGS;AACX,eAAOnN,wBAAM,CAACoQ,QAAd;AACH;AALK,KA9QP;AAsRH6yD,WAAO,EAAE;AACLroE,UAAI,EAAQ,QADP;AAELurC,cAAQ,EAAI,KAFP;AAGLC,gBAAU,EAAE,IAHP;AAILL,cAJK,2BAIqD;AAAA,uCAAJ,EAAI;AAAA,kCAA/Cw9B,OAA+C;AAAA,YAA/CA,OAA+C,8BAArC,EAAqC;AAAA,qCAAjCF,UAAiC;AAAA,YAAjCA,UAAiC,iCAApB,EAAoB;;AACtDe,uBAAe,CAAC;AAAEb,iBAAO,EAAPA,OAAF;AAAWF,oBAAU,EAAVA,UAAX;AAAuBG,oBAAU,EAAE;AAAnC,SAAD,CAAf;AACH,OANI;AAOLr2D,SAPK,iBAOU;AACX,eAAO,EAAP;AACH,OATI;AAULi6B,cAVK,4BAUqDjuC,KAVrD,EAUiF;AAAA,wCAAhC,EAAgC;AAAA,kCAA3EoqE,OAA2E;AAAA,YAA3EA,OAA2E,8BAAjE,EAAiE;AAAA,qCAA7DF,UAA6D;AAAA,YAA7DA,UAA6D,iCAAhD,EAAgD;;AAElFE,eAAO,GAAGrpE,KAAK,CAACC,OAAN,CAAcopE,OAAd,IAAyBA,OAAzB,GAAmC,EAA7C;AACAF,kBAAU,GAAGnpE,KAAK,CAACC,OAAN,CAAckpE,UAAd,IAA4BA,UAA5B,GAAyC,EAAtD;;AAEA,YAAIE,OAAO,IAAIA,OAAO,CAACvnE,OAAR,CAAgB/X,4BAAO,CAAClD,KAAxB,MAAmC,CAAC,CAAnD,EAAsD;AAClDwiF,iBAAO,GAAGA,OAAO,CAAC9pE,MAAR,CAAe,UAAAmH,MAAM;AAAA,mBAAKA,MAAM,KAAK3c,4BAAO,CAAClD,KAAxB;AAAA,WAArB,CAAV;AACH;;AACD,YAAIwiF,OAAO,IAAIA,OAAO,CAACvnE,OAAR,CAAgB/X,4BAAO,CAACjD,IAAxB,MAAkC,CAAC,CAAlD,EAAqD;AACjDuiF,iBAAO,GAAGA,OAAO,CAAC9pE,MAAR,CAAe,UAAAmH,MAAM;AAAA,mBAAKA,MAAM,KAAK3c,4BAAO,CAACjD,IAAxB;AAAA,WAArB,CAAV;AACH;;AAED,YAAI4vF,oBAAoB,CAACz3E,KAAD,CAAxB,EAAiC;AAC7B03E,wBAAc,GAAGnmE,kCAAW,CAAC,uBAAD,EAA0B,EAA1B,CAA5B;;AAEA,cAAImmE,cAAc,CAACxlE,SAAf,EAAJ,EAAgC;AAC5Bk4D,mBAAO,aAAQA,OAAR,GAAiBt/E,4BAAO,CAACtD,MAAzB,EAAP;AACH;AACJ;;AAED,YAAI6iF,UAAU,GAAGr1D,2CAAoB,CAAC,UAAAa,OAAO;AAAA,iBAAIA,OAAJ;AAAA,SAAR,CAArC;;AAEA,YAAI,CAACE,+BAAQ,EAAT,IAAehC,uCAAgB,CAAC,eAAD,CAAnC,EAAsD;AAClD,cAAIs2D,UAAU,IAAIA,UAAU,CAACxnE,OAAX,CAAmB/X,4BAAO,CAAClD,KAA3B,MAAsC,CAAC,CAAzD,EAA4D;AACxDyiF,sBAAU,GAAGA,UAAU,CAAC/pE,MAAX,CAAkB,UAAAmH,MAAM;AAAA,qBAAKA,MAAM,KAAK3c,4BAAO,CAAClD,KAAxB;AAAA,aAAxB,CAAb;AACH;;AAED,cAAIsiF,UAAU,IAAIA,UAAU,CAACrnE,OAAX,CAAmB/X,4BAAO,CAAClD,KAA3B,MAAsC,CAAC,CAAzD,EAA4D;AACxDsiF,sBAAU,aAAQA,UAAR,GAAoBp/E,4BAAO,CAAClD,KAA5B,EAAV;AACH;AACJ;;AAED,eAAO;AACHwiF,iBAAO,EAAPA,OADG;AAEHF,oBAAU,EAAVA,UAFG;AAGHG,oBAAU,EAAVA,UAHG;AAIH4N,kBAJG,oBAIMpiE,OAJN,EAIe;AACdC,kDAAe,CAACD,OAAD,CAAf;AACH;AANE,SAAP;AAQH;AAlDI,KAtRN;AA2UH83B,UAAM,EAAE;AACJlsC,UAAI,EAAQ,SADR;AAEJurC,cAAQ,EAAI,KAFR;AAGJC,gBAAU,EAAE,IAHR;AAIJM,gBAAU,EAAE,oBAACv2B,GAAD,EAAS;AACjB,eAAOA,GAAG,GAAG,MAAH,GAAY,OAAtB;AACH;AANG,KA3UL;AAoVH6wC,YAAQ,EAAE;AACNpmD,UAAI,EAAO,UADL;AAENoxB,eAAS,EAAE,IAFL;AAGNma,cAAQ,EAAG,KAHL;AAIN/lC,UAAI,EAAO,IAJL;AAKNgnC,cALM,oBAKGxM,QALH,EAKwB;AAC1B,eAAO,SAASy2C,gBAAT,GAAoC;AAAA;;AAAA,4BACwBvsE,iCAAU,EADlC;AAAA,gDAC/BE,OAD+B;AAAA,cAC/BA,OAD+B,oCACrB,cADqB;AAAA,gDACLxB,OADK;AAAA,cACLA,OADK,oCACK,cADL;;AAEvCoC,sDAAI,4BAA2BZ,OAA3B,UAAwCkK,+BAAQ,KAAK,QAAL,GAAgB,SAAhE,UAA+E1L,OAA/E,CAAJ;AAEA,cAAM+d,KAAK,GAAG,KAAKpoB,KAAL,CAAWooB,KAAX,IAAoB,EAAlC;AAEA3b,sDAAI,iBAAJ;AACAA,sDAAI,2BAAyB2b,KAAK,CAACmnD,KAAN,IAAe,SAAxC,EAAJ;AACA9iE,sDAAI,2BAAyB2b,KAAK,CAAConD,KAAN,IAAe,SAAxC,EAAJ;AACA/iE,sDAAI,0BAAwB2b,KAAK,CAACknD,IAAN,IAAc,SAAtC,EAAJ;AACA7iE,sDAAI,2BAAyB2b,KAAK,CAACklD,KAAN,IAAe,SAAxC,EAAJ;AACA7gE,sDAAI,8BAA4B2b,KAAK,CAAC8mD,QAAN,IAAkB,SAA9C,EAAJ;AACAziE,sDAAI,kCAAgC2b,KAAK,CAAC+mD,YAAN,IAAsB,SAAtD,EAAJ;AACA1iE,sDAAI,6BAA2B2b,KAAK,CAAC6mD,OAAN,IAAiB,SAA5C,EAAJ;AAEAhM,cAAI,CAACP,qBAAL;AACAO,cAAI,CAACb,gBAAL,CAAsB,KAAKpiE,KAAL,CAAWunC,MAAX,CAAkB,KAAKvnC,KAAL,CAAWgJ,GAA7B,CAAtB;AAEAwJ,uDAAK,wBACC/jB,yBAAI,CAACC,GAAL,CAASE,KADV,IACgCH,yBAAI,CAACG,KAAL,CAAWiC,IAD3C,UAECpC,yBAAI,CAACC,GAAL,CAASG,UAFV,IAEgCJ,yBAAI,CAACI,UAAL,CAAgBmC,aAFhD,UAGCvC,yBAAI,CAACC,GAAL,CAASI,WAHV,IAGgCL,yBAAI,CAACK,WAAL,CAAiB0B,MAHjD,UAIC/B,yBAAI,CAACC,GAAL,CAASM,kBAJV,IAIgC,KAAKgR,KAAL,CAAWgK,eAJ3C,UAKCvb,yBAAI,CAACC,GAAL,CAASa,aALV,IAKgC,KAAKyQ,KAAL,CAAWyH,MAL3C,WAAL;;AAQA,cAAIsE,mCAAY,EAAhB,EAAoB;AAChBc,wDAAI,+BAAJ;AACH;;AAED,cAAI6qE,cAAJ,EAAoB;AAAA;;AAChBA,0BAAc,CAACjlE,QAAf,oDACMhkB,yBAAI,CAACC,GAAL,CAASM,kBADf,IACqC,KAAKgR,KAAL,CAAWgK,eADhD;AAGH;;AAED0C,uDAAS;AAET,iBAAO+0B,QAAQ,CAACn7B,KAAT,CAAe,IAAf,EAAqBoB,SAArB,CAAP;AACH,SAvCD;AAwCH;AA9CK,KApVP;AAqYHgjC,eAAW,EAAE;AACTjpC,UAAI,EAAM,UADD;AAETgsC,WAAK,EAAK,WAFD;AAGTT,cAAQ,EAAE,IAHD;AAKTiB,cALS,oBAKAxM,QALA,EAKqB;AAC1B,eAAO,SAASyM,mBAAT,CAA6B5mC,IAA7B,EAAmC6mC,OAAnC,EAAwE;AAAA;AAAA;;AAE3E,cAAI7mC,IAAI,IAAI,CAACA,IAAI,CAAC8mC,MAAlB,EAA0B;AACtBvhC,wDAAI,+BAA+B;AAAE0+B,uBAAS,EAAEjkC,IAAI,CAACikC,SAAlB;AAA6BhjC,mBAAK,EAAEjB,IAAI,CAACyC;AAAzC,aAA/B,CAAJ;AACH;;AAED0C,sDAAI,CAAC,kBAAD,CAAJ;AAEA+F,uDAAK,wBACC/jB,yBAAI,CAACC,GAAL,CAASE,KADV,IACgCH,yBAAI,CAACG,KAAL,CAAWtH,QAD3C,UAECmH,yBAAI,CAACC,GAAL,CAASG,UAFV,IAEgCJ,yBAAI,CAACI,UAAL,CAAgB2C,kBAFhD,UAGC/C,yBAAI,CAACC,GAAL,CAASM,kBAHV,IAGgC,KAAKgR,KAAL,CAAWgK,eAH3C,UAICvb,yBAAI,CAACC,GAAL,CAAS6B,cAJV,IAIgC+W,IAAI,IAAIA,IAAI,CAAC0wE,cAJ7C,WAAL;;AAOA,cAAIjsE,mCAAY,EAAhB,EAAoB;AAChBc,wDAAI,kCAAJ;AACH;;AAED,cAAI,CAACX,iCAAU,EAAf,EAAmB;AACfO,wDAAI,CAAC,6BAAD,CAAJ;AACH;;AAEDJ,uDAAsB,CAAC,WAAD,CAAtB;AAEAK,uDAAS;AAET,cAAMyrE,OAAO,GAAGhqC,OAAO,CAACgqC,OAAxB;;AACAhqC,iBAAO,CAACgqC,OAAR,GAAkB,YAAM;AACpB,mBAAOA,OAAO,GAAG51E,IAAV,CAAe,YAAM;AACxB,qBAAO,IAAIwB,yCAAJ,EAAP;AACH,aAFM,CAAP;AAGH,WAJD;;AAMAoqC,iBAAO,CAACG,QAAR,GAAmB,UAAC5nC,GAAD,EAAMqI,GAAN,EAAc;AAC7B,mBAAOhL,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAC1B,kBAAI6oC,OAAO,CAAC5kB,KAAZ,EAAmB;AACf,uBAAO4kB,OAAO,CAAC5kB,KAAR,EAAP;AACH;AACJ,aAJM,EAIJhnB,IAJI,CAIC,YAAM;AACV,qBAAOgsC,+BAAK,CAAC7nC,GAAG,IAAIvE,MAAM,CAACkqB,GAAf,EAAoBtd,GAAG,IAAIzH,IAAI,CAAC8jC,SAAhC,CAAZ;AACH,aANM,CAAP;AAOH,WARD;;AAUA+C,iBAAO,CAAC/B,OAAR,CAAgBgsC,QAAhB,GAA2BrlE,8BAAO,CAAC,YAAM;AACrC,gBAAI,CAAC,MAAI,CAAC/S,KAAL,CAAW8xD,SAAhB,EAA2B;AACvB,oBAAM,IAAIlwD,KAAJ,qDAAN;AACH;;AAED,mBAAO,MAAI,CAAC5B,KAAL,CAAW8xD,SAAX,CACFvvD,IADE,CACG,UAAAglC,MAAM;AAAA,qBAAIA,MAAM,CAAC8wC,eAAP,CAAuB/wE,IAAvB,CAAJ;AAAA,aADT,CAAP;AAEH,WAPiC,CAAlC;AASA,cAAMgxE,OAAO,GAAGnqC,OAAO,CAAC/B,OAAR,CAAgBksC,OAAhC;;AACAnqC,iBAAO,CAAC/B,OAAR,CAAgBksC,OAAhB,GAA0B,YAAM;AAC5B,mBAAOA,OAAO,GAAG/1E,IAAV,CAAe,UAAA5B,MAAM,EAAI;AAE5B,kBAAI,CAACA,MAAD,IAAW,CAACA,MAAM,CAAC+nB,EAAnB,IAAyB,CAAC/nB,MAAM,CAACytC,MAAjC,IAA2C,CAACztC,MAAM,CAACgJ,KAAvD,EAA8D;AAC1DkD,4DAAI,+BAAJ;AACA,uBAAO,IAAI9I,yCAAJ,EAAP;AACH;;AAED,qBAAOpD,MAAP;AACH,aARM,CAAP;AASH,WAVD;;AAYA,cAAM+P,GAAG,GAAGy9B,OAAO,CAAC/B,OAAR,CAAgB17B,GAA5B;;AAEAy9B,iBAAO,CAAC/B,OAAR,CAAgB17B,GAAhB,GAAsB,YAAM;AACxB,mBAAOA,GAAG,GAAGnO,IAAN,CAAW,UAAA5B,MAAM,EAAI;AACxB,kBAAI,CAACA,MAAD,IAAW,CAACA,MAAM,CAAC+nB,EAAnB,IAAyB,CAAC/nB,MAAM,CAACytC,MAAjC,IAA2C,CAACztC,MAAM,CAACgJ,KAAvD,EAA8D;AAC1DkD,4DAAI,2BAAJ;AACA,uBAAO,IAAI9I,yCAAJ,EAAP;AACH;;AAED,qBAAOpD,MAAP;AACH,aAPM,CAAP;AAQH,WATD;;AAWAwtC,iBAAO,CAACr/B,OAAR,GAAkBA,sBAAlB;AAEA02D,6BAAmB,CAACt+C,OAApB,CAA4B;AACxBnd,wBAAY,EAAEzC,IAAI,CAACyC;AADK,WAA5B;;AAIA,cAAI2tE,cAAJ,EAAoB;AAAA;;AAChBA,0BAAc,CAAChlE,WAAf,oDACKjkB,yBAAI,CAACC,GAAL,CAASM,kBADd,IACmC,KAAKgR,KAAL,CAAWgK,eAD9C;AAGH;;AAED,iBAAOjG,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAE1B,gBAAI,MAAI,CAACtF,KAAL,CAAW8xD,SAAf,EAA0B;AACtB,qBAAO3jB,OAAO,CAAC/B,OAAR,CAAgBgsC,QAAhB,GAA2B71E,IAA3B,CAAgC,iBAAe;AAAA,oBAAZg2E,KAAY,SAAZA,KAAY;AAClD;AACAn4E,sBAAM,CAAC0kB,cAAP,CAAsBxd,IAAtB,EAA4B,OAA5B,EAAqC;AACjCoJ,qBAAG,EAAE,eAAM;AACPjE,gEAAI,CAAC,cAAD,CAAJ;AACAC,iEAAS;AACT,2BAAO6rE,KAAP;AACH;AALgC,iBAArC;AAOH,eATM,CAAP;AAUH;AAEJ,WAfM,EAeJh2E,IAfI,CAeC,YAAM;AACV,mBAAOk/B,QAAQ,CAACn/B,IAAT,CAAc,MAAd,EAAoBgF,IAApB,EAA0B6mC,OAA1B,CAAP;AACH,WAjBM,EAiBJhpC,KAjBI,CAiBE,UAAA3C,GAAG,EAAI;AACZ,gBAAI,MAAI,CAACxC,KAAL,CAAWkF,OAAf,EAAwB;AACpB,qBAAO,MAAI,CAAClF,KAAL,CAAWkF,OAAX,CAAmB1C,GAAnB,CAAP;AACH;;AACD,kBAAMA,GAAN;AACH,WAtBM,CAAP;AAuBH,SAlHD;AAmHH;AAzHQ,KArYV;AAigBHmsC,oBAAgB,EAAE;AACdltC,UAAI,EAAM,UADI;AAEdurC,cAAQ,EAAE,KAFI;AAIdiB,cAJc,oBAILxM,QAJK,EAIuB;AACjC,YAAI,CAACA,QAAL,EAAe;AACX;AACH;;AAED,eAAO,SAAS+2C,wBAAT,CAAkClxE,IAAlC,EAAwC6mC,OAAxC,EAAsE;AAAA;AAAA;;AAEzE1hC,sDAAI,CAAC,wBAAD,CAAJ;AAEA+F,uDAAK,wBACC/jB,yBAAI,CAACC,GAAL,CAASE,KADV,IACgCH,yBAAI,CAACG,KAAL,CAAWtH,QAD3C,UAECmH,yBAAI,CAACC,GAAL,CAASG,UAFV,IAEgCJ,yBAAI,CAACI,UAAL,CAAgB4C,wBAFhD,UAGChD,yBAAI,CAACC,GAAL,CAASM,kBAHV,IAGgC,KAAKgR,KAAL,CAAWgK,eAH3C,UAICvb,yBAAI,CAACC,GAAL,CAAS6B,cAJV,IAIgC+W,IAAI,IAAIA,IAAI,CAAC0wE,cAJ7C,WAAL;AAOAtrE,uDAAS;AACT,cAAMnH,OAAO,GAAG6Q,MAAQ,GAAG,SAAH,GAAS,KAAK,IAAtC;AAEA,cAAMqiE,KAAK,GAAGtqC,OAAO,CAAC/B,OAAR,CAAgBqsC,KAA9B;;AACAtqC,iBAAO,CAAC/B,OAAR,CAAgBqsC,KAAhB,GAAwB,UAACC,WAAD,EAAiB;AACrC,mBAAO30E,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAC1B,qBAAOmzE,KAAK,CAACC,WAAD,CAAZ;AACH,aAFM,CAAP;AAGH,WAJD;;AAMA,cAAMh1E,OAAO,GAAG,SAAVA,OAAU;AAAA,mBAAMK,yCAAY,CAACL,OAAb,EAAN;AAAA,WAAhB;;AACA,cAAMe,MAAM,GAAG0pC,OAAO,CAAC1pC,MAAR,IAAkB,SAASA,MAAT,GAAkB;AAC/C,kBAAM,IAAI7C,KAAJ,kCAAN;AACH,WAFD;;AAIA,iBAAOmC,yCAAY,CAACuB,GAAb,CAAiB,YAAM;AAC1B,mBAAOm8B,QAAQ,CAACn/B,IAAT,CAAc,MAAd,EAAoBgF,IAApB,6CAA+B6mC,OAA/B;AAAwCzqC,qBAAO,EAAPA,OAAxC;AAAiDe,oBAAM,EAANA;AAAjD,eAAP;AACH,WAFM,EAEJc,OAFI,CAEIA,OAFJ,EAGH,IAAI3D,KAAJ,wBAAgC2D,OAAhC,oBAHG,EAGwDJ,KAHxD,CAG8D,UAAA3C,GAAG,EAAI;AACxE,gBAAI,MAAI,CAACxC,KAAL,CAAWkF,OAAf,EAAwB;AACpB,oBAAI,CAAClF,KAAL,CAAWkF,OAAX,CAAmB1C,GAAnB;AACH;;AACD,kBAAMA,GAAN;AACH,WARM,CAAP;AASH,SAnCD;AAoCH;AA7Ca,KAjgBf;AAijBH0C,WAAO,EAAE;AACLzD,UAAI,EAAS,UADR;AAELurC,cAAQ,EAAK,KAFR;AAGLna,eAAS,EAAI,IAHR;AAILwa,iBAAW,EAAE,IAJR;AAKLplC,UAAI,EAAS,IALR;AAML+L,SANK,iBAMgB;AACjB,eAAO,SAAS9O,OAAT,CAAiB1C,GAAjB,EAA8B;AACjC,cAAIuJ,mCAAY,EAAhB,EAAoB;AAChBc,wDAAI,8BAAJ;AACAH,yDAAS,GAFO,CAIhB;;AACAgpD,iBAAK,mHAAL;AACH;;AAED3yD,oBAAU,CAAC,YAAM;AACb,kBAAMP,GAAN;AACH,WAFS,CAAV;AAGH,SAZD;AAaH;AApBI,KAjjBN;AAwkBHwsC,YAAQ,EAAE;AACNvtC,UAAI,EAAM,UADJ;AAENurC,cAAQ,EAAE,KAFJ;AAGN/lC,UAAI,EAAM,IAHJ;AAKNgnC,cALM,oBAKGxM,QALH,EAKwB;AAC1B,eAAO,SAASwN,gBAAT,CAA0B3nC,IAA1B,EAAgC6mC,OAAhC,EAAqE;AAAA;;AAExE1hC,sDAAI,CAAC,eAAD,CAAJ;AAEA+F,uDAAK,wBACC/jB,yBAAI,CAACC,GAAL,CAASE,KADV,IACgCH,yBAAI,CAACG,KAAL,CAAWtH,QAD3C,UAECmH,yBAAI,CAACC,GAAL,CAASG,UAFV,IAEgCJ,yBAAI,CAACI,UAAL,CAAgB6C,eAFhD,UAGCjD,yBAAI,CAACC,GAAL,CAASM,kBAHV,IAGgC,KAAKgR,KAAL,CAAWgK,eAH3C,UAICvb,yBAAI,CAACC,GAAL,CAAS6B,cAJV,IAIgC+W,IAAI,IAAIA,IAAI,CAAC0wE,cAJ7C,WAAL;AAOAtrE,uDAAS;;AAET,cAAM4hC,QAAQ,GAAG,SAAXA,QAAW,CAAC5nC,GAAD,EAAMqI,GAAN,EAAc;AAC3B,mBAAOhL,yCAAY,CAAC6B,GAAb,CAAiB,CACpB2oC,+BAAK,CAAC7nC,GAAG,IAAIvE,MAAM,CAACkqB,GAAf,EAAoBtd,GAAG,IAAIzH,IAAI,CAAC4nC,SAAhC,CADe,EAEpBf,OAAO,CAAC5kB,KAAR,EAFoB,CAAjB,CAAP;AAIH,WALD;;AAOA,iBAAOkY,QAAQ,CAACn/B,IAAT,CAAc,IAAd,EAAoBgF,IAApB,6CAA+B6mC,OAA/B;AAAwCG,oBAAQ,EAARA;AAAxC,aAAP;AACH,SArBD;AAsBH;AA5BK,KAxkBP;AAumBHnc,WAAO,EAAE;AACL1wB,UAAI,EAAM,UADL;AAELurC,cAAQ,EAAE,KAFL;AAGL/lC,UAAI,EAAM,IAHL;AAILgnC,cAJK,oBAIIxM,QAJJ,EAIyB;AAC1B,eAAO,SAASk3C,eAAT,CAAyBrxE,IAAzB,EAA8H;AAAA;;AAEjImF,sDAAI,CAAC,cAAD,CAAJ;;AACA,cAAInF,IAAI,IAAIA,IAAI,CAACisD,IAAjB,EAAuB;AACnB9mD,wDAAI,eAAcnF,IAAI,CAACisD,IAAnB,CAAJ;AACH;;AAED/gD,uDAAK,wBACC/jB,yBAAI,CAACC,GAAL,CAASE,KADV,IACgCH,yBAAI,CAACG,KAAL,CAAWT,MAD3C,UAECM,yBAAI,CAACC,GAAL,CAASG,UAFV,IAEgCJ,yBAAI,CAACI,UAAL,CAAgBqC,YAFhD,UAGCzC,yBAAI,CAACC,GAAL,CAASI,WAHV,IAGgCL,yBAAI,CAACK,WAAL,CAAiB0B,MAHjD,UAIC/B,yBAAI,CAACC,GAAL,CAASM,kBAJV,IAIgC,KAAKgR,KAAL,CAAWgK,eAJ3C,UAKCvb,yBAAI,CAACC,GAAL,CAASsB,cALV,IAKgCsX,IAAI,KAAKA,IAAI,CAAC0jE,IAAL,IAAa1jE,IAAI,CAACglC,aAAvB,CALpC,UAMC79C,yBAAI,CAACC,GAAL,CAAS4B,YANV,IAMgCgX,IAAI,IAAIA,IAAI,CAACisD,IAN7C,UAOC9kE,yBAAI,CAACC,GAAL,CAAS6B,cAPV,IAOgC+W,IAAI,IAAIA,IAAI,CAAC0wE,cAP7C,WAAL;;AAUA,cAAIjsE,mCAAY,EAAhB,EAAoB;AAChBc,wDAAI,CAAC,4BAAD,CAAJ;AACH;;AAED,cAAI6qE,cAAJ,EAAoB;AAAA;;AAChBA,0BAAc,CAAC5qE,GAAf,CAAmB,OAAnB,iDACMre,yBAAI,CAACC,GAAL,CAASE,KADf,IACqCH,yBAAI,CAACG,KAAL,CAAWT,MADhD,sBAEMM,yBAAI,CAACC,GAAL,CAASG,UAFf,IAEqCJ,yBAAI,CAACI,UAAL,CAAgBqC,YAFrD,sBAGMzC,yBAAI,CAACC,GAAL,CAASM,kBAHf,IAGqC,KAAKgR,KAAL,CAAWgK,eAHhD;AAKH;;AA3BgI,sBA6BnG,KAAKhK,KAAL,CAAWooB,KAAX,IAAoB,EA7B+E;AAAA,kCA6BzHmnD,KA7ByH;AAAA,cA6BzHA,KA7ByH,4BA6BjH,SA7BiH;;AA8BjI9iE,sDAAI,yBAAwB8iE,KAAxB,CAAJ;AAEA7iE,uDAAS;AAET,iBAAO+0B,QAAQ,CAACn7B,KAAT,CAAe,IAAf,EAAqBoB,SAArB,CAAP;AACH,SAnCD;AAoCH;AAzCI,KAvmBN;AAmpBH+vC,YAAQ,EAAE;AACNh2C,UAAI,EAAM,UADJ;AAENurC,cAAQ,EAAE,KAFJ;;AAGN,UAAItrC,KAAJ,GAAuB;AACnB,YAAIk3E,aAAJ;AACA,YAAMC,mCAAmC,GAAG5wE,+BAAI,CAAC,UAACX,IAAD,EAAU;AACvDmF,sDAAI,CAAC,oCAAD,EAAuCnF,IAAvC,CAAJ;AACA2Y,gEAAc;AACjB,SAH+C,CAAhD;AAKA,eAAO,SAAS64D,eAAT,GAA2B;AAC9B,cAAM/wD,SAAS,GAAG,KAAKA,SAAvB;;AAEA,cAAI,CAACA,SAAL,EAAgB;AACZ;AACH;;AAED,cAAI,CAAC6wD,aAAL,EAAoB;AAChBA,yBAAa,GAAG7wD,SAAS,CAAC8E,YAA1B;AACH;;AAED,cAAMksD,gBAAgB,GAAG,SAAnBA,gBAAmB,GAAM;AAC3B,gBAAI52E,MAAM,CAAC62E,WAAX,EAAwB;AACpB,qBAAO72E,MAAM,CAAC62E,WAAd;AACH;;AAED,gBAAI9lE,QAAQ,CAAC0W,eAAb,EAA8B;AAC1B,qBAAO1W,QAAQ,CAAC0W,eAAT,CAAyBqvD,SAAhC;AACH;;AAED,mBAAO,CAAP;AACH,WAVD,CAX8B,CAuB9B;;;AACA,cAAMC,0BAA0B,GAAG,SAA7BA,0BAA6B,GAAM;AACrC,gBAAI;AACA,kBAAMC,aAAa,GAAGJ,gBAAgB,EAAtC;AACA,kBAAMK,YAAY,GAAGj3E,MAAM,CAACgsB,WAA5B;AAEA,kBAAMkrD,gBAAgB,GAAGtxD,SAAS,CAACqE,qBAAV,GAAkCC,GAA3D;AACA,kBAAMitD,iBAAiB,GAAG,GAA1B,CALA,CAK+B;;AAE/B,qBAAOH,aAAa,GAAGC,YAAhB,GAA+BR,aAAa,GAAGS,gBAAhB,GAAmCC,iBAAzE;AACH,aARD,CAQE,OAAO92E,GAAP,EAAY;AACViK,0DAAI,CAAC,qCAAD,CAAJ;AACA,qBAAO,KAAP;AACH;AACJ,WAbD;;AAeA,cAAM8sE,mBAAmB,GAAGxxD,SAAS,IAAIA,SAAS,CAAC8E,YAAV,GAAyB+rD,aAAlE;AACA,cAAMY,qBAAqB,GAAGN,0BAA0B,EAAxD;;AAEA,cAAI,CAACK,mBAAD,IAAwBC,qBAA5B,EAAmD;AAC/C;AACH;;AAEDX,6CAAmC,CAAC;AAChCnsD,kBAAM,EAAE3E,SAAS,CAAC8E,YADc;AAEhC1qB,kBAAM,EAAE;AACJsqB,mBAAK,EAAGtqB,MAAM,CAAC+rB,UADX;AAEJxB,oBAAM,EAAEvqB,MAAM,CAACgsB;AAFX;AAFwB,WAAD,CAAnC;AAOH,SArDD;AAsDH,OAhEK;;AAiEN8f,cAAQ,EAAE,kBAACxM,QAAD;AAAA,eAAc1jB,mCAAQ,CAAC0jB,QAAD,CAAtB;AAAA;AAjEJ,KAnpBP;AAutBHv4B,UAAM,EAAE;AACJzH,UAAI,EAAQ,QADR;AAEJurC,cAAQ,EAAI,KAFR;AAGJC,gBAAU,EAAE,UAHR;AAKJj5B,SALI,iBAKW;AAAA,gCACeo5B,uCAAgB,EAD/B;AAAA,YACHjkC,IADG,qBACHA,IADG;AAAA,YACGF,OADH,qBACGA,OADH;;AAEX,eAAWE,IAAX,SAAqBF,OAArB;AACH,OARG;AAUJ2jC,cAAQ,EAAE+iC,oBAAoBA;AAV1B,KAvtBL;AAouBHvnD,SAAK,EAAE;AACH3mB,UAAI,EAAQ,QADT;AAEHurC,cAAQ,EAAI,KAFT;AAGHC,gBAAU,EAAE,IAHT;AAIHQ,WAAK,EAAO,aAJT;AAMHz5B,SANG,iBAMY;AACX,eAAO;AACHu7D,eAAK,EAAS1mF,iCAAY,CAACC,IADxB;AAEH0mF,eAAK,EAASzlF,iCAAY,CAACC,IAFxB;AAGHslF,cAAI,EAAU/lF,gCAAW,CAACE,KAHvB;AAIH6jF,eAAK,EAASlmF,iCAAY,CAACE,QAJxB;AAKH6nF,sBAAY,EAAE,KALX;AAMHpF,gBAAM,EAAQ1/E,kCAAa,CAACC;AANzB,SAAP;AAQH,OAfE;AAiBH2jD,cAjBG,oBAiBM7lB,KAjBN,EAiB+B;AAAA,YACtBklD,KADsB,GACuBllD,KADvB,CACtBklD,KADsB;AAAA,4BACuBllD,KADvB,CACf2hD,MADe;AAAA,YACfA,MADe,8BACN1/E,kCAAa,CAACC,UADR;;AAE9B,YAAI,CAACgjF,KAAD,IAAUvD,MAAM,KAAK1/E,kCAAa,CAACC,UAAvC,EAAmD;AAC/C89B,eAAK,CAACklD,KAAN,GAAclmF,iCAAY,CAACE,QAA3B;AACA,iBAAO8gC,KAAP;AACH,SAHD,MAGO,IAAI,CAACklD,KAAD,IAAUvD,MAAM,KAAK1/E,kCAAa,CAACE,QAAvC,EAAiD;AACpD69B,eAAK,CAACklD,KAAN,GAAclmF,iCAAY,CAACC,MAA3B;AACA,iBAAO+gC,KAAP;AACH;;AACD,eAAOA,KAAP;AACH,OA3BE;AA6BHwkB,cA7BG,oBA6BMxkB,KA7BN,EA6BkBpoB,KA7BlB,EA6ByB;AAAA,YAAnBooB,KAAmB;AAAnBA,eAAmB,GAAX,EAAW;AAAA;;AACxB0nD,2BAAmB,CAAC1nD,KAAD,EAAQpoB,KAAR,CAAnB;AACA0M,qDAAS;AACZ;AAhCE,KApuBJ;AAuwBHkgC,YAAQ,EAAE;AACNnrC,UAAI,EAAM,UADJ;AAENurC,cAAQ,EAAE,KAFJ;AAGNiB,cAHM,oBAGGrB,QAHH,EAGwB;AAC1B;AACA,eAAO,SAAS6sC,gBAAT,CAA0BtrC,OAA1B,EAA2C;AAC9C,cAAI,CAAC,KAAKurC,cAAV,EAA0B;AACtB,iBAAKA,cAAL,GAAsB,IAAtB;AACA,mBAAO9sC,QAAQ,CAACuB,OAAD,CAAf;AACH;AACJ,SALD;AAMH;AAXK,KAvwBP;AAqxBHpjC,YAAQ,EAAE;AACNtJ,UAAI,EAAM,QADJ;AAENurC,cAAQ,EAAE,KAFJ;;AAGN,UAAItrC,KAAJ,GAAqB;AACjB,eAAOmF,wBAAM,CAACkE,QAAd;AACH;;AALK,KArxBP;AA6xBH6kC,WAAO,EAAE;AACLnuC,UAAI,EAAS,QADR;AAELwrC,gBAAU,EAAG,IAFR;AAGLI,iBAAW,EAAE,KAHR;AAILr5B,SAAG,EAAU,eAAM;AACf,eAAO67B,0CAAY,CAAC7iC,IAAI,CAACC,SAAL,CAAe;AAC/B8B,aAAG,EAAE+E,0CAAmB;AADO,SAAf,CAAD,CAAnB;AAGH;AARI,KA7xBN;AAwyBH8zD,oBAAgB,EAAE;AACdnmE,UAAI,EAAM,QADI;AAEdurC,cAAQ,EAAE,KAFI;AAGdtrC,WAAK,EAAK;AAAA,eAAMkmE,gBAAgB,CAAC1G,gBAAD,CAAtB;AAAA;AAHI,KAxyBf;AA8yBHyY,cAAU,EAAE;AACRl4E,UAAI,EAAS,UADL;AAERwrC,gBAAU,EAAG,KAFL;AAGRD,cAAQ,EAAK,KAHL;AAIRh5B,SAAG,EAAU,eAAM;AACf,eAAO;AAAA,iBAAM7R,MAAM,CAAC2F,QAAP,CAAgB8K,IAAtB;AAAA,SAAP;AACH;AANO,KA9yBT;AAuzBH9Q,QAAI,EAAE;AACFL,UAAI,EAAM,QADR;AAEFurC,cAAQ,EAAE,KAFR;AAGFh5B,SAHE,iBAGa;AACX,eAAO;AAAE27B,gBAAM,EAAE;AAAV,SAAP;AACH;AALC;AAvzBH;AAlF6C,CAAD,CAAhD;;AAm5BP,IAAIuxB,gBAAM,CAACpxB,OAAP,EAAJ,EAAsB;AAClBonC,kBAAgB,CAAChW,gBAAD,CAAhB;AACH,C;;;;ACngCD;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAI/zD,2BAAI,MAAM4G,uCAAgB,CAAC,cAAD,CAA9B,EAAgD;AAC5C;AACAy3B,kCAAQ,CAACgc,QAAT,GAAoB,UAAC9gD,GAAD,EAAS;AACzB+F,gDAAI,CAAC,oBAAD,CAAJ;AACAC,iDAAS,GAFgB,CAIzB;;AACA,QAAM+L,QAAQ,GAAG+yB,gCAAQ,CAAC9gC,IAAT,CAAc;AAC3BggC,iBAAW,EAAEzjC,mBAAIA;AADU,KAAd,CAAjB;AAIAwR,YAAQ,CAAC4vC,QAAT,CAAkB3hD,GAAlB;AAEA+R,YAAQ,CAAC2sC,aAAT,GAAyB7iD,IAAzB,CAA8B,YAAM;AAChCkW,cAAQ,CAACsH,KAAT,CAAeoH,WAAf,CAA2B0W,wBAAS,CAACrB,MAAV,CAAiB7B,KAA5C;AACAliB,cAAQ,CAACgtC,aAAT;AACH,KAHD,EAXyB,CAgBzB;;AACAyb,oBAAM,CAACh0B,MAAP,CAAcd,OAAd,GAAwB7pC,IAAxB,CAA6B,UAAAgG,KAAK,EAAI;AAClCpG,YAAM,CAACkqB,GAAP,CAAWvkB,QAAX,GAAsBiN,gCAAS,CAAClO,wBAAM,CAACoV,WAAR,EAAqB;AAAE1T,aAAK,EAALA;AAAF,OAArB,CAA/B;AACH,KAFD,EAEGpD,KAFH,CAES,UAAA3C,GAAG,EAAI;AACZiW,cAAQ,CAACtU,KAAT,CAAe3B,GAAf;AACH,KAJD;AAKH,GAtBD;AAuBH;;AAED,IAAMqL,YAAM,GAAG1F,mDAAS,CAAChG,MAAD,CAAxB;AACA,IAAMkqB,SAAG,GAAGyJ,gDAAM,CAAC3zB,MAAD,CAAlB;;AAEA,IAAIkqB,SAAG,IAAIxe,YAAX,EAAmB;AACf,MAAI+rE,YAAY,GAAIvtD,SAAG,KAAKxe,YAA5B;;AAEA,MAAI,CAAC+rE,YAAL,EAAmB;AACfpuC,oCAAQ,CAAC+gB,WAAT,CAAqBlgC,SAArB,EAA0B9pB,IAA1B,CAA+B,UAAA5B,MAAM,EAAI;AACrCi5E,kBAAY,GAAGj5E,MAAf;AACH,KAFD;AAIA6gC,sCAAW,CAACgK,gCAAD,EAAW,UAAX,EAAuB,gBAAqD;AAAA,2BAAlDnlC,IAAkD;AAAA,UAA1CK,GAA0C;AAAA,UAArC1G,KAAqC;AAAA,UAA9BuoB,EAA8B;AAAA,UAAxBkZ,QAAwB,QAAxBA,QAAwB;AAAA,UAAdr7B,OAAc,QAAdA,OAAc;;AAEnF,UAAI,CAACwzE,YAAL,EAAmB;AACflzE,WAAG,GAAGyB,mDAAS,CAAChG,MAAD,CAAf;AACH;;AAED,aAAOs/B,QAAQ,CAACn/B,IAAT,CAAc8D,OAAd,EAAuBM,GAAvB,EAA4B1G,KAA5B,EAAmCuoB,EAAnC,CAAP;AACH,KAPU,CAAX;AAQH;AACJ;;AAEDiZ,kCAAW,CAACgK,gCAAD,EAAW,UAAX,EAAuB,iBAAyC;AAAA,MAAtC7J,YAAsC,SAAtCA,YAAsC;AAAA,yBAAxBt7B,IAAwB;AAAA,MAAdrG,KAAc;;AACvE,MAAI+T,uCAAgB,CAAC,0BAAD,CAApB,EAAkD;AAC9C,QAAM8xB,WAAW,GAAG59B,2BAAI,CAAC,UAACzF,GAAD,EAAS;AAC9B,UAAI;AACA;AACAoK,eAAO,CAACzI,KAAR,CAAc3B,GAAG,IAAIA,GAAG,CAAC8B,KAAzB;AACH,OAHD,CAGE,OAAOklB,IAAP,EAAa,CAEd,CAFC,CACE;AAGJ;;;AACA,aAAO03C,gBAAM,CAACh0B,MAAP,CAAcd,OAAd,GAAwB7pC,IAAxB,CAA6B,UAAAgG,KAAK,EAAI;AACzCpG,cAAM,CAACkqB,GAAP,CAAWvkB,QAAX,GAAsBiN,gCAAS,CAAClO,wBAAM,CAACoV,WAAR,EAAqB;AAAE1T,eAAK,EAALA;AAAF,SAArB,CAA/B;AACH,OAFM,CAAP;AAGH,KAZuB,CAAxB;AAcAvI,SAAK,CAACkF,OAAN,GAAgB2gC,WAAhB;AACA,WAAOlE,YAAY,GAAGx8B,KAAf,CAAqB0gC,WAArB,CAAP;AACH;;AACD,SAAOlE,YAAY,EAAnB;AACH,CApBU,CAAX;AAsBA,IAAI5jB,QAAQ,GAAG,KAAf;AAEAyjB,kCAAW,CAACgK,gCAAD,EAAW,UAAX,EAAuB,iBAAyC;AAAA,MAAtC7J,YAAsC,SAAtCA,YAAsC;AAAA,yBAAxBt7B,IAAwB;AAAA,MAAdrG,KAAc;;AAEvE,MAAI+d,QAAJ,EAAc;AACVlR,gDAAI,CAAC,gCAAD,CAAJ;AACA,WAAO,IAAI9I,yCAAJ,CAAiBkD,mBAAjB,CAAP;AACH;;AAED8W,UAAQ,GAAG,IAAX;;AAPuE;AASlE,QAAM87D,UAAU,aAAhB;AACD,QAAMp4C,QAAQ,GAAGzhC,KAAK,CAAC65E,UAAD,CAAtB;;AACA75E,SAAK,CAAC65E,UAAD,CAAL,GAAoB,SAASC,UAAT,GAA8B;AAC9C/7D,cAAQ,GAAG,KAAX;;AACA,UAAI0jB,QAAJ,EAAc;AACV,eAAOA,QAAQ,CAACn7B,KAAT,CAAe,IAAf,EAAqBoB,SAArB,CAAP;AACH;AACJ,KALD;AAXmE;;AAAA,4BAS9C,CAAE,aAAF,EAAiB,UAAjB,EAA6B,SAA7B,EAAwC,SAAxC,CAT8C,6BASO;AAAA;AAQ7E;;AAED,SAAOi6B,YAAY,EAAnB;AACH,CApBU,CAAX;AAsBAH,kCAAW,CAAC4jC,IAAI,CAACh5B,OAAN,EAAe,QAAf,EAAyB,iBAAsG;AAAA,MAAzF2tC,cAAyF,SAAnGt4C,QAAmG;AAAA,MAAhEu4C,aAAgE,SAAzE5zE,OAAyE;AAAA,yBAAjDC,IAAiD;AAAA,MAAzC2C,GAAyC;AAAA,MAApCu+B,MAAoC;AAAA,MAA5B52B,OAA4B;AAAA,MAAnBi9B,UAAmB;;AACtI,MAAI,CAACj9B,OAAO,CAACy7B,OAAb,EAAsB;AAClBz7B,WAAO,GAAG;AAAEy7B,aAAO,EAAEz7B,OAAX;AAAoBi9B,gBAAU,EAAVA;AAApB,KAAV;AACH;;AACD,SAAOmsC,cAAc,CAACz3E,IAAf,CAAoB03E,aAApB,EAAmChxE,GAAnC,EAAwCu+B,MAAxC,EAAgD52B,OAAhD,CAAP;AACH,CALU,CAAX;AAOA6wB,kCAAW,CAAC0/B,gBAAM,CAAClhE,KAAP,CAAaooB,KAAd,EAAqB,UAArB,EAAiC,iBAAuC;AAAA,MAApCuZ,YAAoC,SAApCA,YAAoC;AAAA,yBAAtBt7B,IAAsB;AAAA,MAAd+hB,KAAc;;AAE/E,MAAI,CAACA,KAAL,EAAY;AACR,WAAOuZ,YAAY,EAAnB;AACH;;AAED,MAAIvZ,KAAK,IAAIA,KAAK,CAACmnD,KAAN,KAAgB,YAA7B,EAA2C;AACvCnnD,SAAK,CAACmnD,KAAN,GAAc1mF,iCAAY,CAACK,QAA3B;AACH;;AAED,MAAIk/B,KAAK,IAAIA,KAAK,CAACklD,KAAN,KAAgB,SAA7B,EAAwC;AACpCllD,SAAK,CAACklD,KAAN,GAAclmF,iCAAY,CAACC,MAA3B;AACH;;AAED,MAAI+gC,KAAK,KAAK,CAACA,KAAK,CAACklD,KAAP,IAAgBllD,KAAK,CAACklD,KAAN,KAAgBlmF,iCAAY,CAACE,QAAlD,CAAL,IAAoE8gC,KAAK,CAACknD,IAAN,KAAe,MAAvF,EAA+F;AAC3FziE,gDAAI,gCAAJ;AACAub,SAAK,CAACknD,IAAN,GAAa/lF,gCAAW,CAACE,KAAzB;AACH;;AAED,SAAOk4C,YAAY,EAAnB;AACH,CApBU,CAAX;AAsBAH,kCAAW,CAAC0/B,gBAAD,EAAS,QAAT,EAAmB,iBAAuC;AAAA,MAApCv/B,YAAoC,SAApCA,YAAoC;AAAA,yBAAtBt7B,IAAsB;AAAA,MAAdrG,KAAc;;AAEjE,MAAIA,KAAK,CAACqlE,gBAAV,EAA4B;AACxBrlE,SAAK,CAACosC,OAAN,GAAgBpsC,KAAK,CAACqlE,gBAAtB;AACA,WAAOrlE,KAAK,CAACqlE,gBAAb;AACH;;AAED,SAAO1jC,YAAY,EAAnB;AACH,CARU,CAAX;AAUAH,kCAAW,CAAC0/B,gBAAM,CAAClhE,KAAP,CAAaosC,OAAd,EAAuB,UAAvB,EAAmC,iBAAsD;AAAA,MAAnD3K,QAAmD,SAAnDA,QAAmD;AAAA,MAAzCr7B,OAAyC,SAAzCA,OAAyC;AAAA,yBAAhCC,IAAgC;AAAA,MAAxB4zE,eAAwB;AAChG,SAAOx4C,QAAQ,CAACn/B,IAAT,CAAc8D,OAAd,EAAuB,SAASgmC,OAAT,CAAiB9kC,IAAjB,EAAgC6mC,OAAhC,EAAyE;AAAA;;AACnG,WAAO,IAAIpqC,yCAAJ,CAAiB,UAACL,OAAD,EAAUe,MAAV,EAAqB;AAEzC+8B,wCAAW,CAAC2M,OAAO,CAAC/B,OAAT,EAAkB,QAAlB,EAA4B,kBAAyF;AAAA,YAA5E2tC,cAA4E,UAAtFt4C,QAAsF;AAAA,YAAnDu4C,aAAmD,UAA5D5zE,OAA4D;AAAA,iCAApCC,IAAoC;AAAA,YAA5BsK,OAA4B;AAAA,YAAnBi9B,UAAmB;;AAC5H,YAAI,CAACj9B,OAAO,CAACy7B,OAAb,EAAsB;AAClBz7B,iBAAO,GAAG;AAAEy7B,mBAAO,EAAEz7B,OAAX;AAAoBi9B,sBAAU,EAAVA;AAApB,WAAV;AACH;;AACD,eAAOmsC,cAAc,CAACz3E,IAAf,CAAoB03E,aAApB,EAAmCrpE,OAAnC,CAAP;AACH,OALU,CAAX;;AAOA,eAASupE,WAAT,CAAqB3xE,KAArB,EAA4B;AACxB7E,eAAO,CAAC6E,KAAD,CAAP;AACH;;AAED,eAAS4xE,aAAT,CAAuB33E,GAAvB,EAA4B;AACxBiC,cAAM,CAACjC,GAAD,CAAN;AACH;;AAEDua,mCAAM,CAACm9D,WAAD,EAAc5yE,IAAd,CAAN;AACAyV,mCAAM,CAACm9D,WAAD,EAAc/rC,OAAd,CAAN;AACApxB,mCAAM,CAACo9D,aAAD,EAAgBhsC,OAAhB,CAAN;AAEA,UAAMisC,GAAG,GAAG;AACRp6E,aAAK,EAAE;AACHgJ,aAAG,EAAK,KAAI,CAAChJ,KAAL,CAAWgJ,GADhB;AAEHu+B,gBAAM,EAAE,KAAI,CAACvnC,KAAL,CAAWunC;AAFhB;AADC,OAAZ;AAOA,UAAI5mC,MAAJ;;AAEA,UAAI;AACAA,cAAM,GAAGs5E,eAAe,CAAC33E,IAAhB,CAAqB83E,GAArB,EAA0BF,WAA1B,EAAuCC,aAAvC,CAAT;AACH,OAFD,CAEE,OAAO33E,GAAP,EAAY;AACV,eAAOiC,MAAM,CAACjC,GAAD,CAAb;AACH;;AAED,UAAI7B,MAAM,IAAI,OAAOA,MAAM,CAAC4B,IAAd,KAAuB,UAArC,EAAiD;AAC7C,eAAO5B,MAAM,CAAC4B,IAAP,CAAYmB,OAAZ,EAAqBe,MAArB,CAAP;AACH;;AAED,UAAI9D,MAAM,KAAKG,SAAf,EAA0B;AACtB,eAAO4C,OAAO,CAAC/C,MAAD,CAAd;AACH;AACJ,KA3CM,CAAP;AA4CH,GA7CM,CAAP;AA8CH,CA/CU,CAAX;;AAiDA,IAAIugE,gBAAM,CAACpxB,OAAP,EAAJ,EAAsB;AAClB,MAAI,CAAC3tC,MAAM,CAACD,OAAZ,EAAqB;AACjBC,UAAM,CAACD,OAAP,GAAiB6B,yCAAjB;AACH;AACJ,C;;ACxMD;;AACA;AAEA;AACA;AAGA;AAEA;AACA;AAkBO,IAAMs2E,IAA6B,GAAGpuC,6BAAM,CAAC;AAChDviB,KAAG,EAAG,aAD0C;AAEhD3pB,MAAI,EAAE,QAF0C;AAIhDosC,UAJgD,oBAIvCnsC,KAJuC,EAIvB;AACrB,QAAMgJ,GAAG,GAAGhJ,KAAK,CAACgJ,GAAN,IAAanC,wBAAM,CAACmC,GAAhC;AACA,WAAOnC,wBAAM,CAACqU,oBAAP,CAA4BlS,GAA5B,CAAP;AACH,GAP+C;AAShD0jC,UAAQ,EAAE;AACNzhB,UAAM,EAAE,IADF;AAEN/B,SAAK,EAAG;AAFF,GATsC;AAchD2E,YAAU,EAAE;AACRnB,UAAM,EAAE,OADA;AAERD,SAAK,EAAG;AAFA,GAdoC;AAmBhD01B,YAAU,EAAE;AACRz1B,UAAM,EAAE,IADA;AAERD,SAAK,EAAG;AAFA,GAnBoC;AAwBhDzsB,OAAK,EAAE;AACH8J,aAAS,EAAE;AACPrI,UAAI,EAAM,QADH;AAEPurC,cAAQ,EAAE,KAFH;AAGPh5B,SAHO,iBAGQ;AACX,eAAO3K,mCAAY,EAAnB;AACH,OALM;AAMP4jC,gBAAU,EAAE;AANL,KADR;AAWH1kC,SAAK,EAAE;AACH9G,UAAI,EAAQ,QADT;AAEHurC,cAAQ,EAAI,IAFT;AAGHC,gBAAU,EAAE;AAHT,KAXJ;AAiBHjjC,mBAAe,EAAE;AACbvI,UAAI,EAAM,QADG;AAEburC,cAAQ,EAAE,KAFG;AAGbh5B,SAHa,iBAGG;AACZ,eAAO/J,yCAAkB,EAAzB;AACH,OALY;AAMbgjC,gBAAU,EAAE;AANC,KAjBd;AA0BHU,UAAM,EAAE;AACJlsC,UAAI,EAAQ,SADR;AAEJurC,cAAQ,EAAI,KAFR;AAGJC,gBAAU,EAAE;AAHR,KA1BL;AAgCHjkC,OAAG,EAAE;AACDvH,UAAI,EAAQ,QADX;AAEDurC,cAAQ,EAAI,KAFX;AAGDC,gBAAU,EAAE,IAHX;AAKDj5B,SALC,iBAKc;AACX,eAAOnN,wBAAM,CAACmC,GAAd;AACH,OAPA;AASD4jC,cATC,oBASQ5jC,GATR,EASa;AACV,YAAI,CAACnC,wBAAM,CAAC+R,UAAP,CAAkB5P,GAAlB,CAAL,EAA6B;AACzB,gBAAM,IAAIpH,KAAJ,mBAA2BoH,GAA3B,CAAN;AACH;AACJ;AAbA,KAhCF;AAgDHE,UAAM,EAAE;AACJzH,UAAI,EAAW,QADX;AAEJurC,cAAQ,EAAO,KAFX;AAGJC,gBAAU,EAAK,UAHX;AAIJE,mBAAa,EAAE,IAJX;AAMJn5B,SANI,iBAMW;AAAA,gCACeo5B,uCAAgB,EAD/B;AAAA,YACHjkC,IADG,qBACHA,IADG;AAAA,YACGF,OADH,qBACGA,OADH;;AAEX,eAAWE,IAAX,SAAqBF,OAArB;AACH;AATG,KAhDL;AA4DHqxE,qBAAiB,EAAE;AACf74E,UAAI,EAAM,QADK;AAEfurC,cAAQ,EAAE;AAFK,KA5DhB;AAkEHtC,eAAW,EAAE;AACTjpC,UAAI,EAAM,UADD;AAETurC,cAAQ,EAAE,IAFD;AAGT/kC,UAAI,EAAM;AAHD,KAlEV;AAwEH2mC,UAAM,EAAE;AACJntC,UAAI,EAAQ,UADR;AAEJurC,cAAQ,EAAI,KAFR;AAGJ6B,gBAAU,EAAE;AAHR,KAxEL;AA8EH6yB,WAAO,EAAE;AACLjgE,UAAI,EAAQ,UADP;AAELurC,cAAQ,EAAI,KAFP;AAGL6B,gBAAU,EAAE;AAHP,KA9EN;AAoFHiK,YAAQ,EAAE;AACNr3C,UAAI,EAAQ,UADN;AAENurC,cAAQ,EAAI,KAFN;AAGN6B,gBAAU,EAAE;AAHN,KApFP;AA0FHnqC,YAAQ,EAAE;AACNjD,UAAI,EAAQ,QADN;AAENurC,cAAQ,EAAI,KAFN;AAGN6B,gBAAU,EAAE;AAHN,KA1FP;AAgGHG,YAAQ,EAAE;AACNvtC,UAAI,EAAM,UADJ;AAENurC,cAAQ,EAAE,KAFJ;AAGN/kC,UAAI,EAAM,IAHJ;AAINhB,UAAI,EAAM;AAJJ,KAhGP;AAuGH2oC,WAAO,EAAE;AACLnuC,UAAI,EAAS,QADR;AAELwrC,gBAAU,EAAG,IAFR;AAGLI,iBAAW,EAAE,KAHR;AAILr5B,SAAG,EAAU,eAAM;AACf,eAAO67B,0CAAY,CAAC7iC,IAAI,CAACC,SAAL,CAAe;AAC/B8B,aAAG,EAAE+E,0CAAmB;AADO,SAAf,CAAD,CAAnB;AAGH;AARI,KAvGN;AAkHHsU,SAAK,EAAE;AACH3mB,UAAI,EAAS,QADV;AAEHurC,cAAQ,EAAI,KAFT;AAGHC,gBAAU,EAAE,IAHT;AAIHj5B,SAJG,iBAIY;AACX,eAAO;AACHumE,mBAAS,EAAE;AACPC,mBAAO,EAAE;AADF,WADR;AAIHC,sBAAY,EAAE;AACVD,mBAAO,EAAE;AADC,WAJX;AAOHE,4BAAkB,EAAE;AAChBF,mBAAO,EAAE;AADO;AAPjB,SAAP;AAWH;AAhBE;AAlHJ;AAxByC,CAAD,CAA5C,C;;AC3BP;AACA;AAEA;AACA;AACA;AAIA;AACA;AACA;;AAEA,SAASG,WAAT,CAAqBvzE,MAArB,EAAgD;AAAA,oCAC1BhH,MAAM,CAACC,IAAP,CAAYwG,wBAAM,CAAC+R,UAAnB,CAD0B,qCACM;AAA7C,QAAM5P,GAAG,qBAAT;;AACD,QAAInC,wBAAM,CAAC+R,UAAP,CAAkB5P,GAAlB,MAA2B5B,MAA/B,EAAuC;AACnC,aAAO4B,GAAP;AACH;AACJ;AACJ;;AAED,SAAS4xE,YAAT,CAAsBxzE,MAAtB,EAAuC;AACnC,MAAMyzE,gBAAgB,GAAGF,WAAW,CAACvzE,MAAD,CAApC;;AAEA,MAAIyzE,gBAAgB,IAAIA,gBAAgB,KAAK,MAA7C,EAAqD;AACjDh0E,4BAAM,CAACmC,GAAP,GAAa6xE,gBAAb;AACH;AACJ;;AAEDD,YAAY,CAAKz4E,MAAM,CAAC2F,QAAP,CAAgByC,QAArB,UAAoCpI,MAAM,CAAC2F,QAAP,CAAgBC,IAApD,CAAZ;AAEAhE,yCAAY,CAACZ,4BAAb,CAA0C,UAAAX,GAAG,EAAI;AAAA;;AAE7C2B,+CAAK,CAAC,iBAAD,EAAoB;AACrBG,SAAK,EAAIqiB,qCAAc,CAACnkB,GAAD,CADF;AAErB6+D,WAAO,EAAG,EAAD,CAAKzhE,QAAL,CAAc0C,IAAd,CAAmBE,GAAnB;AAFY,GAApB,CAAL;AAKAgQ,+CAAK,sBACC/jB,yBAAI,CAACC,GAAL,CAASc,UADV,IACwB,kBADxB,SAECf,yBAAI,CAACC,GAAL,CAASe,UAFV,IAEwB6xC,4CAAqB,CAAC9+B,GAAD,CAF7C,UAAL;AAKA,SAAOkK,6CAAS,GAAGvH,KAAZ,CAAkB,UAAAqkB,IAAI,EAAI;AAC7B,QAAIrnB,MAAM,CAACyK,OAAX,EAAoB;AAChB,UAAI;AACA,YAAIzK,MAAM,CAACyK,OAAP,CAAezI,KAAnB,EAA0B;AACtBhC,gBAAM,CAACyK,OAAP,CAAezI,KAAf,CAAqB,iBAArB,EAAwCwiB,qCAAc,CAAC6C,IAAD,CAAtD;AACH,SAFD,MAEO,IAAIrnB,MAAM,CAACyK,OAAP,CAAeE,GAAnB,EAAwB;AAC3B3K,gBAAM,CAACyK,OAAP,CAAeE,GAAf,CAAmB,iBAAnB,EAAsC6Z,qCAAc,CAAC6C,IAAD,CAApD;AACH;AACJ,OAND,CAME,OAAOsxD,IAAP,EAAa;AACX/3E,kBAAU,CAAC,YAAM;AACb,gBAAM+3E,IAAN;AACH,SAFS,EAEP,CAFO,CAAV;AAGH;AACJ;AACJ,GAdM,CAAP;AAeH,CA3BD;AA6BA,IAAMtnE,aAAa,GAAGV,uCAAgB,EAAtC;AACA,IAAMioE,eAAe,GAAG54E,MAAM,CAAC2F,QAAP,CAAgByC,QAAhB,CAAyBmE,KAAzB,CAA+B,GAA/B,EAAoC,CAApC,CAAxB;;AAiBA,SAASssE,SAAT,QAA8I;AAAA,gCAAJ,EAAI;AAAA,MAAzHhyE,GAAyH,QAAzHA,GAAyH;AAAA,MAApHwN,KAAoH,QAApHA,KAAoH;AAAA,MAA7GE,QAA6G,QAA7GA,QAA6G;AAAA,MAAnGE,QAAmG,QAAnGA,QAAmG;AAAA,MAAzFC,YAAyF,QAAzFA,YAAyF;AAAA,MAA3EuC,WAA2E,QAA3EA,WAA2E;AAAA,MAA9DzP,KAA8D,QAA9DA,KAA8D;AAAA,MAAvDoB,QAAuD,QAAvDA,QAAuD;AAAA,MAA7CX,UAA6C,QAA7CA,UAA6C;AAAA,MAAjC6M,QAAiC,QAAjCA,QAAiC;;AAE1I,MAAIjO,GAAJ,EAAS;AACL,QAAI,CAACnC,wBAAM,CAAC+R,UAAP,CAAkB5P,GAAlB,CAAL,EAA6B;AACzB,YAAM,IAAIpH,KAAJ,mBAA2BoH,GAA3B,CAAN;AACH;;AAED,WAAOnC,wBAAM,CAACmC,GAAd;AACAnC,4BAAM,CAACmC,GAAP,GAAaA,GAAb;AACH,GAPD,MAOO,IAAIk4D,gBAAM,CAACh0B,MAAP,IAAiBg0B,gBAAM,CAACh0B,MAAP,CAAclkC,GAAnC,EAAwC;AAC3C,WAAOnC,wBAAM,CAACmC,GAAd,CAD2C,CAE3C;;AACAnC,4BAAM,CAACmC,GAAP,GAAak4D,gBAAM,CAACh0B,MAAP,CAAclkC,GAA3B;AACH,GAJM,MAIA,IAAIwiC,gCAAQ,CAAC0B,MAAT,IAAmB1B,gCAAQ,CAAC0B,MAAT,CAAgBlkC,GAAvC,EAA4C;AAC/C,WAAOnC,wBAAM,CAACmC,GAAd,CAD+C,CAE/C;;AACAnC,4BAAM,CAACmC,GAAP,GAAawiC,gCAAQ,CAAC0B,MAAT,CAAgBlkC,GAA7B;AACH;;AAED,MAAIwN,KAAJ,EAAW;AACP,WAAO3P,wBAAM,CAAC2P,KAAd;AACA3P,4BAAM,CAAC2P,KAAP,GAAeA,KAAf;AACH,GAHD,MAGO,IAAI0qD,gBAAM,CAACh0B,MAAP,IAAiBg0B,gBAAM,CAACh0B,MAAP,CAAc12B,KAAnC,EAA0C;AAC7C,WAAO3P,wBAAM,CAAC2P,KAAd,CAD6C,CAE7C;;AACA3P,4BAAM,CAAC2P,KAAP,GAAe0qD,gBAAM,CAACh0B,MAAP,CAAc12B,KAA7B;AACH,GAJM,MAIA,IAAIg1B,gCAAQ,CAAC0B,MAAT,IAAmB1B,gCAAQ,CAAC0B,MAAT,CAAgB12B,KAAvC,EAA8C;AACjD,WAAO3P,wBAAM,CAAC2P,KAAd,CADiD,CAEjD;;AACA3P,4BAAM,CAAC2P,KAAP,GAAeg1B,gCAAQ,CAAC0B,MAAT,CAAgB12B,KAA/B;AACH;;AAED,MAAIE,QAAJ,EAAc;AACV,WAAO7P,wBAAM,CAAC6P,QAAd,CADU,CAEV;;AACA7P,4BAAM,CAAC6P,QAAP,GAAkBA,QAAlB;AACH,GAJD,MAIO,IAAIwqD,gBAAM,CAACh0B,MAAP,IAAiBg0B,gBAAM,CAACh0B,MAAP,CAAcx2B,QAAnC,EAA6C;AAChD,WAAO7P,wBAAM,CAAC6P,QAAd,CADgD,CAEhD;;AACA7P,4BAAM,CAAC6P,QAAP,GAAkBwqD,gBAAM,CAACh0B,MAAP,CAAcx2B,QAAhC;AACH,GAJM,MAIA,IAAI80B,gCAAQ,CAAC0B,MAAT,IAAmB1B,gCAAQ,CAAC0B,MAAT,CAAgBx2B,QAAvC,EAAiD;AACpD,WAAO7P,wBAAM,CAAC6P,QAAd,CADoD,CAEpD;;AACA7P,4BAAM,CAAC6P,QAAP,GAAkB80B,gCAAQ,CAAC0B,MAAT,CAAgBx2B,QAAlC;AACH;;AAEDO,UAAQ,GAAGA,QAAQ,IAAKiqD,gBAAM,CAACh0B,MAAP,IAAiBg0B,gBAAM,CAACh0B,MAAP,CAAcj2B,QAA5C,IAA0Du0B,gCAAQ,CAAC0B,MAAT,IAAmB1B,gCAAQ,CAAC0B,MAAT,CAAgBj2B,QAAxG;;AAEA,MAAIA,QAAJ,EAAc;AACV,WAAOpQ,wBAAM,CAACoQ,QAAd;AACApQ,4BAAM,CAACoQ,QAAP,GAAkBA,QAAlB;AACH;;AAED,MAAIL,QAAJ,EAAc;AACV,WAAO/P,wBAAM,CAAC+P,QAAd;AACA/P,4BAAM,CAAC+P,QAAP,GAAkBA,QAAlB;AACH;;AAEDC,cAAY,GAAGA,YAAY,IAAKqqD,gBAAM,CAACh0B,MAAP,IAAiBg0B,gBAAM,CAACh0B,MAAP,CAAcr2B,YAAhD,IAAkE20B,gCAAQ,CAAC0B,MAAT,IAAmB1B,gCAAQ,CAAC0B,MAAT,CAAgBr2B,YAApH;;AACA,MAAIA,YAAJ,EAAkB;AACdhQ,4BAAM,CAACgQ,YAAP,GAAsBA,YAAtB;AACH;;AAEDuC,aAAW,GAAGA,WAAW,IAAK8nD,gBAAM,CAACh0B,MAAP,IAAiBg0B,gBAAM,CAACh0B,MAAP,CAAc9zB,WAA/C,IAAgEoyB,gCAAQ,CAAC0B,MAAT,IAAmB1B,gCAAQ,CAAC0B,MAAT,CAAgB9zB,WAAjH;;AACA,MAAIA,WAAJ,EAAiB;AACbvS,4BAAM,CAACuS,WAAP,GAAqBA,WAArB;AACH;;AAED,MAAIzP,KAAJ,EAAW;AACP,WAAO9C,wBAAM,CAAC8C,KAAd;AACA9C,4BAAM,CAAC8C,KAAP,GAAeA,KAAf;AACH;;AAED,MAAIS,UAAJ,EAAgB;AACZvD,4BAAM,CAACuD,UAAP,GAAoBA,UAApB;AACH;;AAED,MAAIW,QAAJ,EAAc;AACVE,sCAAW,CAACF,QAAD,CAAX;AACH,GAFD,MAEO;AACHE,sCAAW,CAACpE,wBAAM,CAACkE,QAAR,CAAX;AACH;AACJ;;AAEM,IAAML,IAAI,GAAGzC,2BAAI,CAAC,iBAA4B;AAAA,MAAzBgzE,kBAAyB,SAAzBA,kBAAyB;;AAEjD,MAAI,CAAC/uE,iCAAU,EAAf,EAAmB;AACfW,gDAAI,CAAC,YAAD,CAAJ;AACH;;AAEDE,6CAAoB;AAEpBpE,mCAAU;;AAEV,MAAIs6D,IAAI,CAACnB,6BAAL,EAAJ,EAA0C;AACtCmB,QAAI,CAACT,gBAAL;AACH;;AAED,MAAIyY,kBAAJ,EAAwB;AACpB/kE,oDAAyB;AAC5B;;AAED,MAAInC,uCAAgB,CAAC,cAAD,CAAhB,IAAoC,CAACvL,qCAAc,EAAvD,EAA2D;AACvD4L,wCAAa,CAACvN,wBAAM,CAACmC,GAAR,CAAb;AACH;;AAEDyD,8CAAI,YAAW5F,wBAAM,CAACmC,GAAlB,CAAJ;AAEAyK,+CAAK,uBAAsBsnE,eAAtB,CAAL;AACH,CAzBuB,CAAjB,C,CA2BP;;AACO,SAASG,KAAT,CAAevqE,OAAf,EAA6C;AAAA,MAA9BA,OAA8B;AAA9BA,WAA8B,GAAJ,EAAI;AAAA;;AAChDqqE,WAAS,CAACrqE,OAAD,CAAT;AACAjG,MAAI,CAACiG,OAAD,CAAJ;AACH;;AAED,IAAI6C,aAAJ,EAAmB;AACf0nE,OAAK,CAAC;AACFlyE,OAAG,EAAiBwK,aAAa,CAACw6B,YAAd,CAA2B,UAA3B,CADlB;AAEFx3B,SAAK,EAAehD,aAAa,CAACw6B,YAAd,CAA2B,YAA3B,CAFlB;AAGFp3B,YAAQ,EAAYpD,aAAa,CAACw6B,YAAd,CAA2B,gBAA3B,CAHlB;AAIFt3B,YAAQ,EAAYlD,aAAa,CAACw6B,YAAd,CAA2B,gBAA3B,CAJlB;AAKFn3B,gBAAY,EAAQrO,qCAAc,KAAKgL,aAAa,CAACw6B,YAAd,CAA2B,oBAA3B,CAAL,GAAwDltC,SALxF;AAMFsY,eAAW,EAAS5Q,qCAAc,KAAKgL,aAAa,CAACw6B,YAAd,CAA2B,mBAA3B,CAAL,GAAuDltC,SANvF;AAOF6I,SAAK,EAAe6J,aAAa,CAACw6B,YAAd,CAA2B,YAA3B,CAPlB;AAQFjjC,YAAQ,EAAYyI,aAAa,CAACw6B,YAAd,CAA2B,gBAA3B,CARlB;AASF5jC,cAAU,EAAUoJ,aAAa,CAACw6B,YAAd,CAA2B,kBAA3B,CATlB;AAUF/2B,YAAQ,EAAYzD,aAAa,CAACw6B,YAAd,CAA2B,gBAA3B,CAVlB;AAWFitC,sBAAkB,EAAEznE,aAAa,CAACD,YAAd,CAA2B,kCAA3B;AAXlB,GAAD,CAAL;AAcH,CAfD,MAeO;AACH2nE,OAAK;AACR;;AAED,IAAI,CAAC1yE,qCAAc,EAAnB,EAAuB;AAEnB,MAAIgL,aAAJ,EAAmB;AAAA;;AAEf,QAAM2nE,cAAc,GAAG3nE,aAAa,CAACH,GAAd,CAAkB3E,KAAlB,CAAwB,GAAxB,EAA6B,CAA7B,CAAvB;AACA,QAAM0sE,QAAQ,GAAG9iC,0CAAmB,CAAC9kC,aAAa,CAACH,GAAf,CAApC;AAEAI,iDAAK,8BAA6B0nE,cAA7B,CAAL;AACA1nE,iDAAK,+BAA6BsnE,eAAe,KAAKI,cAApB,GAAqC,OAArC,GAA+C,UAA5E,EAAL;AACA1nE,iDAAK,6BAA4B5M,wBAAM,CAACwD,OAAP,CAAexK,OAAf,CAAuB,gBAAvB,EAAyC,GAAzC,CAA5B,CAAL;;AAEA,QAAIu7E,QAAJ,EAAc;AACV3nE,mDAAK,wBAAwB;AAAE2nE,gBAAQ,EAARA;AAAF,OAAxB,CAAL;AACA3nE,mDAAK,0BAAyBxC,IAAI,CAACC,KAAL,CAAWkqE,QAAQ,GAAG,IAAtB,CAAzB,CAAL;AACH;;AAED5oE,iDAAK,kCACC/jB,yBAAI,CAACC,GAAL,CAASE,KADV,IACgCH,yBAAI,CAACG,KAAL,CAAWiC,IAD3C,eAECpC,yBAAI,CAACC,GAAL,CAASG,UAFV,IAEgCJ,yBAAI,CAACI,UAAL,CAAgBkC,WAFhD,eAGCtC,yBAAI,CAACC,GAAL,CAASmB,eAHV,IAGgCurF,QAHhC,eAIC3sF,yBAAI,CAACC,GAAL,CAASyB,kBAJV,IAIgC6kB,2CAAoB,GAAGvU,IAAvB,CAA4B,GAA5B,CAJhC,gBAAL;AAOH,GArBD,MAqBO;AAAA;;AAEHgT,iDAAK,qBAAL;AACAA,iDAAK,gCAA+B5M,wBAAM,CAACwD,OAAP,CAAexK,OAAf,CAAuB,gBAAvB,EAAyC,GAAzC,CAA/B,CAAL;;AAEA,QAAIqT,QAAQ,CAACM,aAAb,EAA4B;AAAG;AAC3BC,mDAAK,kCAAkC;AAAEJ,WAAG,EAAEH,QAAQ,CAACM,aAAT,CAAuBH;AAA9B,OAAlC,CAAL,CADwB,CACsD;AACjF;;AAEDb,iDAAK,kCACC/jB,yBAAI,CAACC,GAAL,CAASE,KADV,IACwBH,yBAAI,CAACG,KAAL,CAAWiC,IADnC,eAECpC,yBAAI,CAACC,GAAL,CAASG,UAFV,IAEwBJ,yBAAI,CAACI,UAAL,CAAgBkC,WAFxC,gBAAL;AAIH;AACJ,C;;AC3PD;AACA;AACA;CAC8C;;AAE9C;AACA;AACA;AACA;CAEkB;;AAEX,IAAMw8D,SAAS,GAAGC,cAAlB;AACP;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEO,IAAMrqD,4BAA4B,GAAGY,yCAAY,CAACZ,4BAAlD;AAEA,IAAMkH,iBAAO,GAAGd,SAAhB;AAEA,IAAIkP,kBAAJ;AACA,IAAI4iE,IAAJ;;AAEP,IAAI9xE,IAAJ,EAA4C;AACxC,MAAM+xE,MAAM,GAAG7vE,mBAAO,CAAC,EAAD,CAAtB;;AACAgN,oBAAQ,GAAG6iE,MAAM,CAAC7iE,QAAlB;AACA4iE,MAAI,GAAGC,MAAM,CAACD,IAAd;AACH,C,CAED;;;AAEO,IAAI7vC,kBAAJ;AACA,IAAI+1B,qBAAJ;AACA,IAAIga,cAAJ;AACA,IAAI3wB,UAAJ;AACA,IAAI4wB,oBAAJ;AACA,IAAIC,MAAJ;AACA,IAAI9Z,2BAAJ;;AAEP,SAAS+Z,qBAAT,GAAiC;AAC7BC,kCAAS,CAACjvC,QAAV,CAAmBzhB,MAAnB,GAA4B,IAA5B;AACH;;AAED,IAAIziB,qCAAc,MAAM4N,KAAxB,EAAkC;AAC9Bo1B,oBAAQ,GAAGmwC,gCAAX;AACApa,uBAAW,GAAGqa,WAAd;AACAja,6BAAiB,GAAGka,iBAApB;AACAN,gBAAc,GAAGI,gCAAjB;AACAH,sBAAoB,GAAGE,qBAAvB;AACA9wB,YAAU,GAAGkxB,yBAAb;AACAL,QAAM,GAAG;AAAEhoE,SAAK,EAALA,qCAAF;AAAShH,QAAI,EAAJA,oCAAT;AAAeI,QAAI,EAAJA,oCAAf;AAAqB1I,SAAK,EAALA,qCAArB;AAA4BqO,SAAK,EAALA,qCAA5B;AAAmChM,SAAK,EAALA,qCAAKA;AAAxC,GAAT;AACH,C;;AC9DD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;CAE0C;;AAE1C;AACeid,oGAAf,E;;;;;;;;;;;;;;;;;;;ACJO,IAAMs4D,UAAU,kBAAhB;AAEA,IAAMt/C,UAAU,GAAG;AACtBtuC,QAAM,EAAO,oBADS;AAEtB6tF,aAAW,EAAE,gBAFS;AAGtBpvF,KAAG,EAAU,UAHS;AAItBG,SAAO,EAAM;AAJS,CAAnB;AAOA,IAAMkvF,OAAO,GAAG;AACnBC,eAAa,EAAE;AADI,CAAhB,C;;;;;;;;;;;;;;;;;;;;;ACTP;AACA;AACA;AAEA;AACA;AAEO,SAASC,eAAT,CAAyBnzE,GAAzB,EAA4D;AAC/D,SAAOjF,2BAAY,CAACuB,GAAb,CAAiB,YAAM;AAE1B,QAAMoP,eAAwB,GAAG7N,wBAAM,CAAC8N,aAAP,CAAqB3L,GAArB,CAAjC;;AAEA,QAAI,CAAC4L,wBAAD,IAAW,CAACA,wBAAM,CAAC2vC,WAAP,CAAmB;AAAEn9C,YAAM,EAAEsN;AAAV,KAAnB,CAAhB,EAAiE;AAC7D,aAAOjB,+BAAK,6BAA6B;AAAEzK,WAAG,EAAHA;AAAF,OAA7B,CAAZ;AACH;;AAEDyK,mCAAK,sBAAsB;AAAEzK,SAAG,EAAHA;AAAF,KAAtB,CAAL;AAEA,WAAOoL,oCAAa,CAACpL,GAAD,CAAb,CAAmBzG,IAAnB,CAAwB0E,mBAAxB,CAAP;AACH,GAXM,CAAP;AAYH,C;;ACpBD;AAEO,SAASm1E,gBAAT,GAAsC;AAEzC,MAAI,CAAClwE,iCAAU,EAAf,EAAmB;AACf,WAAO,KAAP;AACH;;AAED,MAAI,CAACygC,qCAAc,EAAnB,EAAuB;AACnB,WAAO,KAAP;AACH;;AAED,MAAI52B,+BAAQ,EAAZ,EAAgB;AACZ,WAAO,KAAP;AACH;;AAED,SAAO,IAAP;AACH,C;;ACjBD;AAEA;AAGA;;cAEiBzL,gCAAM,CAACyxE,UAAD,C;IAAflvE,I,WAAAA,I;;AAER,IAAMxgB,eAAe,GAAG2F,4BAAO,CAAC8L,EAAhC;AACA,IAAMu+E,YAAY,GAAGx9E,yBAAI,CAACI,EAA1B;AAEO,SAASuyD,eAAT,CAAyBtoD,MAAzB,EAAuD;AAAA,sBAElCA,MAAM,CAACwF,KAAP,CAAa,GAAb,CAFkC;AAAA,MAEpDvF,IAFoD;AAAA,MAE9CF,OAF8C;;AAI1D,MAAI,CAACA,OAAL,EAAc;AACV,QAAIxJ,2BAAM,CAAC0J,IAAD,CAAV,EAAkB;AACdF,aAAO,GAAGE,IAAV;AACAA,UAAI,GAAG,IAAP;AACH,KAHD,MAGO;AACHF,aAAO,GAAG5c,eAAV;AACH;AACJ;;AAED,MAAI,CAACoT,2BAAM,CAACwJ,OAAD,CAAX,EAAsB;AAClB4D,QAAI,yBAAyB;AAAE5D,aAAO,EAAPA;AAAF,KAAzB,CAAJ;AACAA,WAAO,GAAG5c,eAAV;AACH;;AAED,MAAI,CAAC8c,IAAL,EAAW;AACPA,QAAI,GAAGkzE,YAAP;AACH;;AAED,MAAI58E,2BAAM,CAACwJ,OAAD,CAAN,CAAgBpG,OAAhB,CAAwBsG,IAAxB,MAAkC,CAAC,CAAvC,EAA0C;AACtC0D,QAAI,sBAAsB;AAAE1D,UAAI,EAAJA;AAAF,KAAtB,CAAJ;;AAEA,QAAI1J,2BAAM,CAACwJ,OAAD,CAAN,CAAgBpG,OAAhB,CAAwBw5E,YAAxB,MAA0C,CAAC,CAA/C,EAAkD;AAC9ClzE,UAAI,GAAGkzE,YAAP;AACH,KAFD,MAEO;AACHlzE,UAAI,GAAG1J,2BAAM,CAACwJ,OAAD,CAAN,CAAgB,CAAhB,CAAP;AACH;AACJ;;AAED,SAAO;AAAEA,WAAO,EAAPA,OAAF;AAAWE,QAAI,EAAJA;AAAX,GAAP;AACH,C;;AC7CD;AACA;AAEA;AACA;AACA;AAEA;AACA;;oBAE+BmB,gCAAM,CAACyxE,UAAD,C;IAA7BtvE,I,iBAAAA,I;IAAMgH,K,iBAAAA,K;IAAOtP,K,iBAAAA,K;;AAErB,IAAMm4E,YAAY,GAAGvpE,8BAAO,CAAC,YAA2B;AAEpDU,OAAK,iBAAL;AAEA,SAAO88C,iCAAU,CAAC1pD,wBAAM,CAACiT,WAAR,CAAV,CAA+B3U,KAA/B,CAAqC,UAAA3C,GAAG,EAAI;AAC/CiK,QAAI,8BAA8B;AAAEtI,WAAK,EAAEwiB,qCAAc,CAACnkB,GAAD;AAAvB,KAA9B,CAAJ;AACA,WAAO+tD,iCAAU,CAAC1pD,wBAAM,CAACiT,WAAR,CAAjB;AACH,GAHM,EAGJvX,IAHI,CAGC,UAAA5B,MAAM,EAAI;AACd8S,SAAK,yBAAL;AACA,WAAO9S,MAAP;AACH,GANM,EAMJwE,KANI,CAME,UAAA3C,GAAG,EAAI;AACZ2B,SAAK,wBAAwB;AAAEA,WAAK,EAAEwiB,qCAAc,CAACnkB,GAAD;AAAvB,KAAxB,CAAL;AACA,UAAMA,GAAN;AACH,GATM,CAAP;AAUH,CAd2B,CAA5B;;AAgBA,SAASszE,YAAT,CAAsBptD,EAAtB,QAAuG;AAAA,MAA3EX,SAA2E,QAA3EA,SAA2E;AAAA,MAAhE7e,MAAgE,QAAhEA,MAAgE;AAAA,MAAxDzH,IAAwD,QAAxDA,IAAwD;AAAA,MAAlD8tE,KAAkD,QAAlDA,KAAkD;AAAA,MAA3CC,KAA2C,QAA3CA,KAA2C;AAAA,MAApCF,IAAoC,QAApCA,IAAoC;AAEnG,SAAOgN,YAAY,GAAG/5E,IAAf,CAAoB,YAAM;AAE7B,QAAI2G,MAAJ,EAAY;AAAA,6BACkBsoD,eAAe,CAACtoD,MAAD,CADjC;AAAA,UACAD,OADA,oBACAA,OADA;AAAA,UACSE,IADT,oBACSA,IADT;;AAERD,YAAM,GAAOC,IAAP,SAAiBF,OAAvB;AACH;;AAEDC,UAAM,GAAGA,MAAM,IAAQrC,wBAAM,CAACqC,MAAP,CAAcC,IAAtB,SAAgCtC,wBAAM,CAACqC,MAAP,CAAcD,OAA7D;AACAsmE,SAAK,GAAIA,KAAK,IAAK1mF,iCAAY,CAACC,IAAhC;AACA0mF,SAAK,GAAIA,KAAK,IAAKzlF,iCAAY,CAACC,IAAhC;AACAslF,QAAI,GAAKA,IAAI,IAAM/lF,gCAAW,CAACE,KAA/B;AACAgY,QAAI,GAAKA,IAAI,IAAMra,iCAAY,CAACE,QAAhC;AAEAmsB,SAAK,uBAAsBvK,MAAtB,CAAL;AACAuK,SAAK,0BAAyB87D,KAAzB,CAAL;AACA97D,SAAK,0BAAyB+7D,KAAzB,CAAL;AACA/7D,SAAK,yBAAwB67D,IAAxB,CAAL;AACA77D,SAAK,0BAAyBhS,IAAzB,CAAL;AAEA,QAAM8mB,EAAE,GAAGpmB,MAAM,CAAC0zD,MAAP,CAAcr9C,MAAd,CAAqByzB,MAArB,CAA4BvjB,EAA5B,EAAgC;AAAE6zD,QAAE,EAAErzE,MAAN;AAAcqmE,WAAK,EAALA,KAAd;AAAqBC,WAAK,EAALA,KAArB;AAA4BF,UAAI,EAAJA;AAA5B,KAAhC,EAAoE;AAAE7tE,UAAI,EAAE,QAAR;AAAkB6rE,WAAK,EAAE7rE;AAAzB,KAApE,EAAqG8mB,EAAhH;AACAR,aAAS,CAACD,WAAV,CAAsBS,EAAtB;;AAEA,QAAI;AACA9b,UAAI,sBAAoB0pC,uCAAgB,CAAC5tB,EAAD,CAAhB,GAAuB,SAAvB,GAAmC,aAAvD,EAAJ;AAEH,KAHD,CAGE,OAAO/lB,GAAP,EAAY,CACV;AACH;;AAED,WAAO+lB,EAAE,CAACi0D,UAAH,CAAc,CAAd,CAAP;AACH,GA9BM,CAAP;AA+BH,C,CAED;;;AACO,SAASC,aAAT,CAAuB/zD,EAAvB,EAAoCg0D,OAApC,EAA2F;AAE9F,SAAO34E,2BAAY,CAACvD,GAAb,CAAiBk8E,OAAjB,EAA0B,UAAAlkE,MAAM,EAAI;AACvC,WAAOzU,2BAAY,CAACuB,GAAb,CAAiB,YAAM;AAE1B,UAAIkT,MAAM,CAACuP,SAAX,EAAsB;AAClB,eAAO+tD,YAAY,CAACptD,EAAD,EAAKlQ,MAAL,CAAnB;AACH,OAFD,MAEO;AACH,eAAOA,MAAM,CAACA,MAAd;AACH;AAEJ,KARM,EAQJjW,IARI,CAQC,UAAA0lB,OAAO,EAAI;AAEf,UAAIF,SAAJ;AACA,UAAItmB,IAAJ;AACA,UAAMk7E,SAAS,GAAGnkE,MAAM,CAACmkE,SAAzB;AACA,UAAMC,KAAK,GAAOpkE,MAAM,CAACokE,KAAzB;;AAEA,UAAIpkE,MAAM,CAACuP,SAAX,EAAsB;AAClBA,iBAAS,GAAGvP,MAAM,CAACuP,SAAnB;AACAtmB,YAAI,GAAQhT,yBAAI,CAACK,WAAL,CAAiB2B,IAA7B;AACH,OAHD,MAGO;AACHs3B,iBAAS,GAAGvP,MAAM,CAACA,MAAnB;AACA/W,YAAI,GAAQhT,yBAAI,CAACK,WAAL,CAAiB4B,MAA7B;AACH;;AAED,aAAO;AAAEq3B,iBAAS,EAATA,SAAF;AAAaE,eAAO,EAAPA,OAAb;AAAsBxmB,YAAI,EAAJA,IAAtB;AAA4Bk7E,iBAAS,EAATA,SAA5B;AAAuCC,aAAK,EAALA;AAAvC,OAAP;AACH,KAxBM,CAAP;AAyBH,GA1BM,CAAP;AA2BH;AAEM,SAASC,sBAAT,CAAgCrkE,MAAhC,EAAyF;AAE5F;AACA,MAAMqnD,IAAI,GAAGrnD,MAAM,CAACqnD,IAApB;;AAEA,MAAIA,IAAJ,EAAU;AACNpsD,SAAK,8BAAL;AACA,WAAOosD,IAAP;AACH;;AAED,MAAMl2C,OAAO,GAAGnR,MAAM,CAACmR,OAAP,IAAkBnR,MAAM,CAACmR,OAAP,CAAe9a,WAAf,EAAlC;;AAEA,MAAI8a,OAAO,KAAK,GAAhB,EAAqB;AACjBlW,SAAK,uBAAL;AACA,WAAO+E,MAAP;AACH;;AAED,MAAM45D,aAAa,GAAG55D,MAAM,CAAC45D,aAA7B;AACA,MAAM0K,aAAa,GAAG1K,aAAa,IAAIA,aAAa,CAACzoD,OAA/B,IAA0CyoD,aAAa,CAACzoD,OAAd,CAAsB9a,WAAtB,EAAhE;;AAEA,MAAI,CAAC8a,OAAO,KAAK,KAAZ,IAAqBA,OAAO,KAAK,QAAlC,KAA+CmzD,aAAa,KAAK,GAArE,EAA0E;AACtErpE,SAAK,8BAAL,CADsE,CAEtE;;AACA,WAAO2+D,aAAP;AACH;;AAED,MAAM2K,kBAAkB,GAAG3K,aAAa,IAAIA,aAAa,CAACA,aAA1D;AACA,MAAM4K,kBAAkB,GAAGD,kBAAkB,IAAIA,kBAAkB,CAACpzD,OAAzC,IAAoDozD,kBAAkB,CAACpzD,OAAnB,CAA2B9a,WAA3B,EAA/E;;AAEA,MAAI8a,OAAO,KAAK,QAAZ,IAAwBqzD,kBAAkB,KAAK,GAAnD,EAAwD;AACpDvpE,SAAK,mCAAL,CADoD,CAEpD;;AACA,WAAO+E,MAAM,CAAC45D,aAAP,IAAwB55D,MAAM,CAAC45D,aAAP,CAAqBA,aAApD;AACH;AACJ,C;;ACjID;AACA;AAEA;AACA;AACA;AAEA;;kBAEiB9nE,gCAAM,CAACyxE,UAAD,C;IAAflvE,S,eAAAA,I;;AAER,IAAIowE,UAAU,GAAG,KAAjB;AAEO,SAASC,WAAT,CAAqBp1E,QAArB,EAAwC;AAE3C,MAAIm1E,UAAJ,EAAgB;AACZpwE,aAAI,sBAAJ;AACH;;AAED,MAAImpC,0CAAmB,CAACluC,QAAD,CAAvB,EAAmC;AAC/Bm1E,cAAU,GAAG,IAAb;AACH;;AAEDvwE,iCAAS;AACZ;AAEM,SAAS4hC,QAAT,CAAkBv/B,GAAlB,EAAqD;AACxD,SAAOhL,2BAAY,CAACuB,GAAb,CAAiB,YAAM;AAE1B,QAAI,CAACyJ,GAAL,EAAU;AACN,YAAM,IAAInN,KAAJ,0BAAN;AACH;;AAED,QAAIiF,wBAAM,CAACmC,GAAP,KAAepc,wBAAG,CAACK,IAAnB,IAA2B+oD,0CAAmB,CAACjnC,GAAD,CAAlD,EAAyD;AACrD,aAAOw/B,+BAAK,CAACpsC,MAAD,6BAAmC4M,GAAnC,CAAZ;AACH;;AAEDmuE,eAAW,CAACnuE,GAAD,CAAX;AAEA,WAAOw/B,+BAAK,CAACpsC,MAAD,EAAS4M,GAAT,CAAZ;AACH,GAbM,CAAP;AAcH;AAEM,SAASouE,OAAT,CAAiBl7E,IAAjB,EAA0C;AAC7C,SAAO0R,OAAO,CAAC1R,IAAI,IAAIA,IAAI,CAACT,KAAL,CAAW,sBAAX,CAAT,CAAd;AACH;AAGD;;;;;;;AAOO,SAAS47E,UAAT,CAAoB70E,KAApB,EAA8C;AAEjD,MAAI,CAACA,KAAL,EAAY;AACR;AACH;;AAEDA,OAAK,GAAGmjB,kBAAkB,CAACA,kBAAkB,CAACnjB,KAAD,CAAnB,CAA1B,CANiD,CAQjD;;AAEA,MAAIA,KAAK,CAAC/G,KAAN,CAAY,sBAAZ,CAAJ,EAAyC;AACrC,WAAO+G,KAAP;AACH,GAZgD,CAcjD;;;AAEA,MAAI/G,KAAK,GAAG+G,KAAK,CAAC/G,KAAN,CAAY,4BAAZ,CAAZ;;AAEA,MAAIA,KAAJ,EAAW;AACP,WAAOA,KAAK,CAAC,CAAD,CAAZ;AACH;;AAEDA,OAAK,GAAG+G,KAAK,CAAC/G,KAAN,CAAY,mBAAZ,CAAR;;AAEA,MAAIA,KAAJ,EAAW;AACP,WAAOA,KAAK,CAAC,CAAD,CAAZ;AACH;AACJ;AAEM,SAAS67E,QAAT,CAAkBp7E,IAAlB,EAA2C;AAC9C,SAAO0R,OAAO,CAACypE,UAAU,CAACn7E,IAAD,CAAX,CAAd;AACH,C;;ACtFD;AAEA;AACA;AACA;AAEA;AACA;;qBAEuBqI,gCAAM,CAACyxE,UAAD,C;IAArBtvE,Y,kBAAAA,I;IAAMI,Y,kBAAAA,I;;AAEP,SAASywE,gBAAT,CAA0B3sE,OAA1B,EAA4C;AAE/C;AAEA,MAAIA,OAAO,CAAC4sE,WAAZ,EAAyB;AAErB,QAAI5sE,OAAO,CAAC4sE,WAAR,KAAwB,MAA5B,EAAoC;AAChC5sE,aAAO,CAAC4sE,WAAR,GAAsB3wF,wBAAG,CAACI,UAA1B;AACH;;AAED,QAAI,CAAC6Z,wBAAM,CAAC+R,UAAP,CAAkBjI,OAAO,CAAC4sE,WAA1B,CAAL,EAA6C;AACzC1wE,kBAAI,CAAC,aAAD,EAAgB;AAAE2wE,cAAM,EAAE7sE,OAAO,CAAC4sE;AAAlB,OAAhB,CAAJ;AACA5sE,aAAO,CAAC4sE,WAAR,GAAsB12E,wBAAM,CAACmC,GAA7B;AACH;AACJ,GAd8C,CAgB/C;;;AAEA,MAAI2H,OAAO,CAAC6H,MAAR,IAAkB,CAACzX,KAAK,CAACC,OAAN,CAAc2P,OAAO,CAAC6H,MAAtB,CAAvB,EAAsD;AAClD/L,gBAAI,uCAAJ;AAEAkE,WAAO,CAAC6H,MAAR,GAAiB,CAAE7H,OAAO,CAAC6H,MAAV,CAAjB;AACH,GAtB8C,CAwB/C;;;AAEA,MAAI7H,OAAO,CAAC+rE,OAAR,IAAmB3rB,kCAAW,CAACpgD,OAAO,CAAC+rE,OAAT,CAAX,CAA6Bx5E,MAApD,EAA4D;AACxDuJ,gBAAI,wCAAJ;AAEAkE,WAAO,CAAC6H,MAAR,GAAiB7H,OAAO,CAAC+rE,OAAzB;AACA,WAAO/rE,OAAO,CAAC+rE,OAAf;AACH,GA/B8C,CAiC/C;;;AAEA,MAAI/rE,OAAO,CAAC6H,MAAR,IAAkB7H,OAAO,CAAC6H,MAAR,CAAetV,MAAf,KAA0B,CAAhD,EAAmD;AAC/CuJ,gBAAI,wBAAJ;AAEA,WAAOkE,OAAO,CAAC6H,MAAf;AACH,GAvC8C,CAyC/C;;;AAEA,MAAI7H,OAAO,CAAC6H,MAAR,IAAkB7H,OAAO,CAACoX,SAA9B,EAAyC;AACrCtb,gBAAI,wCAAwC;AAAE+L,YAAM,EAAE7H,OAAO,CAAC6H,MAAlB;AAA0BuP,eAAS,EAAEpX,OAAO,CAACoX;AAA7C,KAAxC,CAAJ;AAEApX,WAAO,CAAC6H,MAAR,GAAiB7H,OAAO,CAAC6H,MAAR,CAAeilE,MAAf,CAAsB9sE,OAAO,CAACoX,SAA9B,CAAjB;AACA,WAAOpX,OAAO,CAACoX,SAAf;AACH,GAhD8C,CAkD/C;;;AAEA,MAAIpX,OAAO,CAAC6H,MAAZ,EAAoB;AAChB,QAAMA,MAAM,GAAGu4C,kCAAW,CAACpgD,OAAO,CAAC6H,MAAT,CAA1B;;AAEA,QAAIA,MAAM,CAACtV,MAAX,EAAmB;AACfyN,aAAO,CAAC6H,MAAR,GAAiBA,MAAjB;AAEH,KAHD,MAGO;AACH3L,kBAAI,qCAAqC;AAAEob,eAAO,EAAEjb,IAAI,CAACC,SAAL,CAAe0D,OAAO,CAAC6H,MAAvB;AAAX,OAArC,CAAJ;AACA,aAAO7H,OAAO,CAAC6H,MAAf;AACH;AACJ,GA9D8C,CAgE/C;;;AAEA,MAAI7H,OAAO,CAAC6H,MAAZ,EAAoB;AAEhB7H,WAAO,CAAC+rE,OAAR,GAAkB/rE,OAAO,CAAC6H,MAAR,CAAehY,GAAf,CAAmB,UAAAgY,MAAM,EAAI;AAC3C,aAAO;AACHA,cAAM,EAANA,MADG;AAEHokE,aAAK,EAAMjsE,OAAO,CAACisE,KAFhB;AAGHD,iBAAS,EAAEhsE,OAAO,CAACgsE;AAHhB,OAAP;AAKH,KANiB,CAAlB;AAQA,WAAOhsE,OAAO,CAACisE,KAAf;AACA,WAAOjsE,OAAO,CAACgsE,SAAf;AACA,WAAOhsE,OAAO,CAAC6H,MAAf;AACH,GAbD,CAeA;AAfA,OAiBK,IAAI7H,OAAO,CAAC+rE,OAAR,IAAmB37E,KAAK,CAACC,OAAN,CAAc2P,OAAO,CAAC+rE,OAAtB,CAAvB,EAAuD;AAExD,UAAMA,OAAO,GAAG,EAAhB;AAEA/rE,aAAO,CAAC+rE,OAAR,CAAgBx6D,OAAhB,CAAwB,UAAA1J,MAAM,EAAI;AAE9B,YAAI,CAACA,MAAL,EAAa;AACT;AACH;;AAED,YAAIA,MAAM,CAACuP,SAAP,IAAoBvP,MAAM,CAACuP,SAAP,KAAqBpX,OAAO,CAACoX,SAArD,EAAgE;AAC5Dlb,sBAAI,2CAA2C;AAAE8D,mBAAO,EAAEA,OAAO,CAACoX,SAAnB;AAA8BvP,kBAAM,EAAEA,MAAM,CAACuP;AAA7C,WAA3C,CAAJ;AACH;;AAEDgpC,0CAAW,CAACv4C,MAAM,CAACuP,SAAP,IAAoBvP,MAAM,CAACA,MAA5B,CAAX,CAA+C0J,OAA/C,CAAuD,UAAA+F,OAAO,EAAI;AAAA;;AAC9Dy0D,iBAAO,CAAC55E,IAAR,oCAEM0V,MAAM,CAACuP,SAAP,GAAmB,WAAnB,GAAiC,QAFvC,IAEmDE,OAFnD,gBAII20D,KAJJ,GAIepkE,MAAM,CAACokE,KAAP,IAAoBjsE,OAAO,CAACisE,KAJ3C,gBAKID,SALJ,GAKenkE,MAAM,CAACmkE,SAAP,IAAoBhsE,OAAO,CAACgsE,SAL3C,gBAMIl7E,IANJ,GAMe+W,MAAM,CAAC/W,IAAP,IAAoBkP,OAAO,CAAClP,IAN3C,gBAOIyH,MAPJ,GAOesP,MAAM,CAACtP,MAAP,IAAoByH,OAAO,CAACzH,MAP3C,gBAQIqmE,KARJ,GAQe/2D,MAAM,CAAC+2D,KAAP,IAAoB5+D,OAAO,CAAC4+D,KAR3C,gBASIC,KATJ,GASeh3D,MAAM,CAACg3D,KAAP,IAAoB7+D,OAAO,CAAC6+D,KAT3C,gBAUIF,IAVJ,GAUe92D,MAAM,CAAC82D,IAAP,IAAoB3+D,OAAO,CAAC2+D,IAV3C;AAYH,SAbD;AAcH,OAxBD;AA0BA,aAAO3+D,OAAO,CAAC+rE,OAAf;AACA,aAAO/rE,OAAO,CAACisE,KAAf;AACA,aAAOjsE,OAAO,CAACgsE,SAAf;AACA,aAAOhsE,OAAO,CAAC6H,MAAf;AACA,aAAO7H,OAAO,CAAClP,IAAf;AACA,aAAOkP,OAAO,CAACzH,MAAf;AACA,aAAOyH,OAAO,CAAC4+D,KAAf;AACA,aAAO5+D,OAAO,CAAC6+D,KAAf;AACA,aAAO7+D,OAAO,CAAC2+D,IAAf;;AAEA,UAAIoN,OAAO,CAACx5E,MAAZ,EAAoB;AAChByN,eAAO,CAAC+rE,OAAR,GAAkBA,OAAlB;AACH;AACJ,KA3CI,CA6CL;AA7CK,SA+CA,IAAI/rE,OAAO,CAACoX,SAAR,IAAqB,CAAChnB,KAAK,CAACC,OAAN,CAAc2P,OAAO,CAAC+rE,OAAtB,CAA1B,EAA0D;AAE3D,YAAMA,QAAO,GAAG,EAAhB;AAEA3rB,0CAAW,CAACpgD,OAAO,CAACoX,SAAT,CAAX,CAA+B7F,OAA/B,CAAuC,UAAC6F,SAAD,EAAY/iB,CAAZ,EAAkB;AACrD03E,kBAAO,CAAC55E,IAAR,CAAa;AACTilB,qBAAS,EAATA,SADS;AAET60D,iBAAK,EAAMjsE,OAAO,CAACisE,KAFV;AAGTD,qBAAS,EAAEhsE,OAAO,CAACgsE,SAHV;AAITl7E,gBAAI,EAAOV,KAAK,CAACC,OAAN,CAAc2P,OAAO,CAAClP,IAAtB,IAAgCkP,OAAO,CAAClP,IAAR,CAAauD,CAAb,CAAhC,GAAoD2L,OAAO,CAAClP,IAJ9D;AAKTyH,kBAAM,EAAKnI,KAAK,CAACC,OAAN,CAAc2P,OAAO,CAACzH,MAAtB,IAAgCyH,OAAO,CAACzH,MAAR,CAAelE,CAAf,CAAhC,GAAoD2L,OAAO,CAACzH,MAL9D;AAMTqmE,iBAAK,EAAMxuE,KAAK,CAACC,OAAN,CAAc2P,OAAO,CAAC4+D,KAAtB,IAAgC5+D,OAAO,CAAC4+D,KAAR,CAAcvqE,CAAd,CAAhC,GAAoD2L,OAAO,CAAC4+D,KAN9D;AAOTC,iBAAK,EAAMzuE,KAAK,CAACC,OAAN,CAAc2P,OAAO,CAAC6+D,KAAtB,IAAgC7+D,OAAO,CAAC6+D,KAAR,CAAcxqE,CAAd,CAAhC,GAAoD2L,OAAO,CAAC6+D,KAP9D;AAQTF,gBAAI,EAAOvuE,KAAK,CAACC,OAAN,CAAc2P,OAAO,CAAC2+D,IAAtB,IAAgC3+D,OAAO,CAAC2+D,IAAR,CAAatqE,CAAb,CAAhC,GAAoD2L,OAAO,CAAC2+D;AAR9D,WAAb;AAUH,SAXD;AAaA,eAAO3+D,OAAO,CAACoX,SAAf;AACA,eAAOpX,OAAO,CAAC+rE,OAAf;AACA,eAAO/rE,OAAO,CAACisE,KAAf;AACA,eAAOjsE,OAAO,CAACgsE,SAAf;AACA,eAAOhsE,OAAO,CAAC6H,MAAf;AACA,eAAO7H,OAAO,CAAClP,IAAf;AACA,eAAOkP,OAAO,CAACzH,MAAf;AACA,eAAOyH,OAAO,CAAC4+D,KAAf;AACA,eAAO5+D,OAAO,CAAC6+D,KAAf;AACA,eAAO7+D,OAAO,CAAC2+D,IAAf;;AAEA,YAAIoN,QAAO,CAACx5E,MAAZ,EAAoB;AAChByN,iBAAO,CAAC+rE,OAAR,GAAkBA,QAAlB;AACH;AACJ;;AAED,MAAI,CAAC/rE,OAAO,CAAC+rE,OAAb,EAAsB;AAClB/rE,WAAO,CAAC+rE,OAAR,GAAkB,EAAlB;AACH;AACJ;AAEM,SAASgB,WAAT,CAAqB/sE,OAArB,EAAuC;AAE1C,MAAIA,OAAO,CAAC4sE,WAAR,IAAuB12E,wBAAM,CAAC+R,UAAP,CAAkBjI,OAAO,CAAC4sE,WAA1B,CAA3B,EAAmE;AAC/D12E,4BAAM,CAACmC,GAAP,GAAa2H,OAAO,CAAC4sE,WAArB;AACH;;AAED,MAAI5sE,OAAO,CAACzH,MAAZ,EAAoB;AAChBrC,4BAAM,CAACqC,MAAP,GAAgBsoD,eAAe,CAAC7gD,OAAO,CAACzH,MAAT,CAA/B;AACArC,4BAAM,CAAC8Q,aAAP,GAAuB,IAAvB;AACH;AACJ,C;;;;AC9LD;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;;uBAE4CrN,gCAAM,CAACyxE,UAAD,C;IAA1CtvE,c,oBAAAA,I;IAAMgH,e,oBAAAA,K;IAAO5G,c,oBAAAA,I;IAAM1I,e,oBAAAA,K;IAAOqO,K,oBAAAA,K;;AAE3B,IAAMiG,kBAAQ,GAAG,EAAjB;AACA,IAAM4iE,IAAI,GAAG;AAAE5iE,UAAQ,EAARA,kBAAF;AAAY+yB,UAAQ,EAAE/yB,kBAAQA;AAA9B,CAAb;AAEA,SAAS2I,eAAT,GAAiB;AAEpB3N,iBAAK,CAAC,OAAD,CAAL,CAFoB,CAIpB;;AAEAgF,oBAAQ,CAACklE,MAAT,GAAqBA,MAArB,CANoB,CAMY;;AAChCllE,oBAAQ,CAACmlE,SAAT,GAAqBA,SAArB,CAPoB,CAOY;;AAChCnlE,oBAAQ,CAAColE,SAAT,GAAqBA,SAArB,CARoB,CAQY;AACnC;AAEDplE,kBAAQ,CAAC2I,KAAT,GAAiBA,eAAjB,C,CAEA;;AACAhhB,MAAM,CAAC0kB,cAAP,CAAsBrM,kBAAtB,EAAgC,WAAhC,EAA6C;AACzC/H,KADyC,iBAC1B;AACX,gBAAW7J,wBAAM,CAACoV,WAAlB,IAAkCpV,wBAAM,CAACoV,WAAP,CAAmBpZ,OAAnB,CAA2B,GAA3B,MAAoC,CAAC,CAArC,GAAyC,GAAzC,GAA+C,GAAjF;AACH;AAHwC,CAA7C;;AAMA,SAASi7E,uBAAT,CAAiC77E,IAAjC,EAAkF;AAE9E,MAAI,CAACA,IAAD,IAAS,CAACA,IAAI,CAACJ,IAAL,EAAd,EAA2B;AACvBsC,mBAAK,8BAA8B;AAAElC,UAAI,EAAJA;AAAF,KAA9B,CAAL;AACA,UAAM,IAAIL,KAAJ,6BAAN;AACH;;AAGD,MAAMmI,YAAY,GAAGqzE,UAAU,CAACn7E,IAAD,CAA/B;AACA,MAAI8M,GAAG,GAAIhF,YAAY,IAAIA,YAAY,KAAK9H,IAAlC,GAA0C,EAA1C,GAA+CA,IAAzD;;AAEA,MAAI8M,GAAJ,EAAS;AAEL,QAAI,CAACA,GAAG,CAACvN,KAAJ,CAAU,kBAAV,CAAL,EAAoC;AAChC,UAAIuI,YAAJ,EAAkB;AACd0C,sBAAI,sCAAsC;AAAEsC,aAAG,EAAHA;AAAF,SAAtC,CAAJ;AACH,OAFD,MAEO;AACHtC,sBAAI,oCAAoC;AAAEsC,aAAG,EAAHA;AAAF,SAApC,CAAJ;AACH;;AAED,UAAIA,GAAG,CAACF,WAAJ,GAAkBhM,OAAlB,CAA0B,KAA1B,MAAqC,CAArC,IAA0CkH,YAA9C,EAA4D;AACxDgF,WAAG,QAAOlI,wBAAM,CAACoV,WAAd,GAA8BlN,GAAjC;AACH;AAEJ,KAXD,MAWO,IAAIhF,YAAJ,EAAkB;AACrB,UAAIgF,GAAG,CAAClM,OAAJ,CAAY,aAAZ,MAA+B,CAAC,CAApC,EAAuC;AACnC4Q,uBAAK,mCAAmC;AAAE1E,aAAG,EAAHA;AAAF,SAAnC,CAAL;AACH,OAFD,MAEO;AACH0E,uBAAK,6BAA6B;AAAE1E,aAAG,EAAHA;AAAF,SAA7B,CAAL;AACH;AAEJ,KAPM,MAOA;AACH0E,qBAAK,2BAA2B;AAAE1E,WAAG,EAAHA;AAAF,OAA3B,CAAL;AACH;AAEJ,GAxBD,MAwBO;AAEH,QAAIhF,YAAJ,EAAkB;AACdgF,SAAG,GAAGgG,gCAAS,CAAClO,wBAAM,CAACoV,WAAR,EAAqB;AAAE1T,aAAK,EAAEwB;AAAT,OAArB,CAAf;AACA0J,qBAAK,yBAAyB;AAAE1E,WAAG,EAAHA;AAAF,OAAzB,CAAL;AACH,KAHD,MAGO;AACH5K,qBAAK,8BAA8B;AAAE4K,WAAG,EAAHA;AAAF,OAA9B,CAAL;AACA,YAAM,IAAInN,KAAJ,8CAAqDK,IAArD,QAAN;AACH;AACJ;;AAED,SAAO;AAAE8H,gBAAY,EAAZA,YAAF;AAAgBgF,OAAG,EAAHA;AAAhB,GAAP;AACH;;AAED,SAASgvE,kBAAT,CAA4BhvE,GAA5B,EAA0C;AAEtC,MAAM6J,UAAU,GAAG/R,wBAAM,CAAC+R,UAA1B;;AAFsC,oCAIpBxY,MAAM,CAACC,IAAP,CAAYuY,UAAZ,CAJoB,qCAIK;AAAtC,QAAM5P,GAAG,qBAAT;AACD,QAAM6S,SAAS,GAAGjD,UAAU,CAAC5P,GAAD,CAA5B;;AAEA,QAAIA,GAAG,KAAKpc,wBAAG,CAACK,IAAZ,IAAoB+b,GAAG,KAAKpc,wBAAG,CAACM,IAApC,EAA0C;AACtC;AACH;;AAED,QAAI8b,GAAG,KAAKnC,wBAAM,CAACmC,GAAnB,EAAwB;AACpB,UAAI+F,GAAG,CAAClM,OAAJ,CAAYgZ,SAAZ,MAA2B,CAA3B,IAAgC9M,GAAG,CAAClM,OAAJ,CAAYgZ,SAAS,CAAChc,OAAV,CAAkB,QAAlB,EAA4B,IAA5B,CAAZ,MAAmD,CAAvF,EAA0F;AACtFgN,sBAAI,iCAAiC;AAAE7D,aAAG,EAAEnC,wBAAM,CAACmC,GAAd;AAAmB+F,aAAG,EAAHA;AAAnB,SAAjC,CAAJ;AACAu/B,gBAAQ,CAACv/B,GAAD,CAAR;AACA,cAAM,IAAInN,KAAJ,CAAcmN,GAAd,kBAAgClI,wBAAM,CAACmC,GAAvC,UAAN;AACH;AACJ;AACJ;AACJ;AAED;;;;;;;;;;;;;;;AAcA,SAASg1E,uBAAT,CAAiCj+D,KAAjC,EAAkDoqC,aAAlD,EAAwJ;AAEpJ,MAAM8zB,kBAAkB,GAAG,IAAIl6E,2BAAJ,CAAiB,UAACL,OAAD,EAAa;AAErD,QAAIqc,KAAK,IAAIoqC,aAAT,KAA2Bl5C,IAAI,CAACE,MAAL,KAAgB,KAAhB,IAAyBhP,MAAM,CAAC+7E,YAA3D,CAAJ,EAA8E;AAC1E,UAAI/3E,MAAJ;;AACA,UAAI4I,IAAJ;;AACA,UAAIG,IAAJ;AACA,UAAIY,WAAJ;AAEArD,oBAAI,CAAC,8BAAD,CAAJ;AACAC,qCAAS;;AAET,UAAIy9C,aAAa,CAACxgC,OAAd,CAAsB9a,WAAtB,OAAwC,GAA5C,EAAiD;AAC7C1I,cAAM,GAAG,KAAT;AACA4I,YAAG,GAAGo7C,aAAa,CAACnc,YAAd,CAA2B,MAA3B,CAAN;AACH,OAHD,MAGO,IAAImc,aAAa,CAACxgC,OAAd,CAAsB9a,WAAtB,OAAwC,MAA5C,EAAoD;AACvD1I,cAAM,GAAG,CAACgkD,aAAa,CAACnc,YAAd,CAA2B,QAA3B,KAAwC,KAAzC,EAAgDn/B,WAAhD,EAAT;AACAE,YAAG,GAAGo7C,aAAa,CAACnc,YAAd,CAA2B,QAA3B,CAAN;AACA9+B,YAAI,GAAGivE,wBAAa,CAACh0B,aAAD,CAApB;AACAr6C,mBAAW,GAAGq6C,aAAa,CAACnc,YAAd,CAA2B,SAA3B,KAAyC,mCAAvD;AACH;;AAED,UAAI7nC,MAAM,IAAI4I,IAAd,EAAmB;AACfgR,aAAK,CAAC01C,cAAN;AAEA3mD,sCAAO,CAAC;AACJ3I,gBAAM,EAANA,MADI;AAEJ4I,aAAG,EAAHA,IAFI;AAGJG,cAAI,EAAJA,IAHI;AAIJF,iBAAO,EAAE;AACL,sBAAgB,+BADX;AAEL,4BAAgBc,WAAW,IAAI;AAF1B;AAJL,SAAD,CAAP,CAQGvN,IARH,CAQQ,UAAA0M,IAAI,EAAI;AACZ,cAAMmvE,kBAAkB,GAAGN,uBAAuB,CAAC7uE,IAAI,CAAC1G,KAAN,CAAlD;AACA7E,iBAAO,CAAC06E,kBAAD,CAAP;AACA3xE,wBAAI,CAAC,gCAAD,EAAmC2xE,kBAAnC,CAAJ;AACA1xE,yCAAS;AAEZ,SAdD,EAcGvH,KAdH,CAcS,UAAA3C,GAAG,EAAI;AACZqK,wBAAI,CAAC,8BAAD,EAAiC;AACjC;AACArK,eAAG,EAAEA,GAAG,CAAC8B,KAAJ,IAAa9B,GAAG,CAAC5C,QAAJ;AAFe,WAAjC,CAAJ;AAIA8M,yCAAS;AACZ,SApBD;AAsBH,OAzBD,MAyBO;AACHG,sBAAI,CAAC,yCAAD,CAAJ;AACAH,uCAAS;AACZ;AACJ;;AAGD+L,sBAAQ,CAACklE,MAAT,GAAkB,YAAM;AACpB9wE,oBAAI,mBAAJ;AACH,KAFD,CArDqD,CAyDrD;;;AAEA4L,sBAAQ,CAACmlE,SAAT,GAAqB31E,2BAAI,CAAC,UAAChG,IAAD,EAAU;AAChCwR,qBAAK,uBAAuB;AAAExR,YAAI,EAAJA;AAAF,OAAvB,CAAL;;AADgC,kCAGF67E,uBAAuB,CAAC77E,IAAD,CAHrB;AAAA,UAGxB8M,GAHwB,yBAGxBA,GAHwB;AAAA,UAGnBhF,YAHmB,yBAGnBA,YAHmB;;AAKhCg0E,wBAAkB,CAAChvE,GAAD,CAAlB;AAEA,aAAOrL,OAAO,CAAC;AAAEqL,WAAG,EAAHA,GAAF;AAAOhF,oBAAY,EAAZA;AAAP,OAAD,CAAd;AACH,KARwB,CAAzB;AASH,GApE0B,CAA3B;AAsEA,MAAMgF,GAAG,GAAYkvE,kBAAkB,CAAC17E,IAAnB,CAAwB,UAAA5B,MAAM;AAAA,WAAIA,MAAM,CAACoO,GAAX;AAAA,GAA9B,CAArB;AACA,MAAMhF,YAAY,GAAGk0E,kBAAkB,CAAC17E,IAAnB,CAAwB,UAAA5B,MAAM;AAAA,WAAIA,MAAM,CAACoJ,YAAX;AAAA,GAA9B,CAArB;AAEA,SAAO;AAAEgF,OAAG,EAAHA,GAAF;AAAOhF,gBAAY,EAAZA;AAAP,GAAP;AACH;AAGD;;;;;;;;;;;AAUA,IAAIs0E,oBAAoB,GAAG,KAA3B;AACA,IAAIC,eAAe,GAAG,KAAtB;;AAEA,SAASC,kBAAT,CAA4Bv+E,KAA5B,EAAiD;AAAA,MAArBA,KAAqB;AAArBA,SAAqB,GAAb,EAAa;AAAA;;AAE7CyM,gBAAI,iBAAJ;;AAEA,MAAI4xE,oBAAoB,IAAIx3E,wBAAM,CAACmC,GAAP,KAAepc,wBAAG,CAACK,IAA/C,EAAqD;AACjD4f,kBAAI,iCAAJ;AACH;;AAED,MAAIyxE,eAAJ,EAAqB;AACjB7qE,mBAAK,wBAAL;AACH;;AAED4qE,sBAAoB,GAAG,IAAvB;AAEA,MAAMpsB,cAAc,GAAGzmB,4BAAQ,CAAC9gC,IAAT;AAEnBggC,eAFmB,uBAEPpjC,IAFO,EAED6mC,OAFC,EAE6B;AAC5C1hC,oBAAI,sBAAJ;AACAywE,iBAAW,CAAC51E,IAAI,CAAC8jC,SAAN,CAAX;AACA,aAAO+C,OAAO,CAACG,QAAR,CAAiBnsC,MAAjB,CAAP;AACH,KANkB;AAQnB6sC,YARmB,oBAQV1nC,IARU,EAQJ6mC,OARI,EAQ2B;AAC1C,UAAI7mC,IAAI,CAAC4nC,SAAT,EAAoB;AAChBziC,sBAAI,oBAAJ;AACAywE,mBAAW,CAAC51E,IAAI,CAAC4nC,SAAN,CAAX;AACA,eAAOf,OAAO,CAACG,QAAR,CAAiBnsC,MAAjB,CAAP;AACH;AACJ,KAdkB;AAgBnBqtC,YAhBmB,oBAgBVzgC,GAhBU,EAgBgB;AAC/B5K,qBAAK,qBAAqB;AAAE4K,WAAG,EAAHA;AAAF,OAArB,CAAL;AACA,WAAKw0C,OAAL;AACA,aAAOjV,QAAQ,CAACv/B,GAAD,CAAf;AACH;AApBkB,KAsBhB/O,KAtBgB,EAAvB;;AAyBAyY,oBAAQ,CAAColE,SAAT,GAAqB,UAACW,QAAD,EAAwB;AACzC3xE,kBAAI,aAAJ;AAEAyxE,mBAAe,GAAG,IAAlB;AAEAl9D,mBAAK;AAEL6wC,kBAAc,CAAC1O,OAAf;;AAEA,QAAIi7B,QAAJ,EAAc;AACV3xE,oBAAI,uBAAuB;AAAE2xE,gBAAQ,EAARA;AAAF,OAAvB,CAAJ;AACA,aAAOlwC,QAAQ,CAACkwC,QAAD,CAAf;AACH;AACJ,GAbD;;AAeA,SAAOvsB,cAAP;AACH;;AAED,SAASwsB,oBAAT,CAA8Bz+E,KAA9B,EAAmD0+E,YAAnD,EAAoG;AAAA,MAAtE1+E,KAAsE;AAAtEA,SAAsE,GAArD,EAAqD;AAAA;;AAEhG,MAAM2+E,OAAO,GAAG56E,2BAAY,CAACL,OAAb,CAAqB1D,KAAK,CAAC+O,GAA3B,CAAhB;AAEA,MAAMhF,YAAY,GAAG,IAAIhG,2BAAJ,CAAiB,UAAAL,OAAO,EAAI;AAC7C1D,SAAK,CAAC0K,IAAN,GAAa,UAACpD,IAAD,EAAU;AACnB5D,aAAO,CAAC4D,IAAI,CAACyC,YAAN,CAAP;AACH,KAFD;AAGH,GAJoB,CAArB;AAMA,MAAM09B,YAAY,GAAGx/B,2BAAI,CAAC,UAAAzF,GAAG,EAAI;AAE7B2B,mBAAK,oBAAoB;AAAEA,WAAK,EAAEwiB,qCAAc,CAACnkB,GAAD;AAAvB,KAApB,CAAL;;AAEA,QAAIk8E,YAAJ,EAAkB;AACd7xE,oBAAI,qCAAJ;AACA6xE,kBAAY,CAACE,eAAb,CAA6B,QAA7B;AACH,KAP4B,CAS7B;;;AACAD,WAAO,CAACp8E,IAAR,CAAa,UAAAwM,GAAG,EAAI;AAChBlC,oBAAI,mCAAJ;AACA,aAAOyhC,QAAQ,CAACv/B,GAAD,CAAf;AACH,KAHD,EAV6B,CAe7B;;AACAhF,gBAAY,CAACxH,IAAb,CAAkB,UAAAgG,KAAK,EAAI;AACvBsE,oBAAI,qCAAJ;AACA,aAAOyhC,QAAQ,CAACv5B,gCAAS,CAAClO,wBAAM,CAACoV,WAAR,EAAqB;AAAE1T,aAAK,EAALA;AAAF,OAArB,CAAV,CAAf;AACH,KAHD;AAIH,GApBwB,CAAzB;AAsBAvI,OAAK,CAACkF,OAAN,GAAgBuiC,YAAhB;AAEA,MAAIwqB,cAAJ;;AAEA,MAAIysB,YAAJ,EAAkB;AAEd,WAAO1+E,KAAK,CAAC+O,GAAb;AAEAkjD,kBAAc,GAAGssB,kBAAkB,CAACv+E,KAAD,CAAnC;AAEAiyD,kBAAc,CAAC/H,MAAf,CAAsBw0B,YAAtB;AACAzsB,kBAAc,CAAC/J,UAAf;AAEAy2B,WAAO,CAACp8E,IAAR,CAAa,UAAAwM,GAAG,EAAI;AAChBlC,oBAAI,0BAAJ;AACAolD,oBAAc,CAACpM,OAAf,CAAuB92C,GAAvB;AACH,KAHD;AAKH,GAdD,MAcO;AAEHkjD,kBAAc,GAAGssB,kBAAkB,CAACv+E,KAAD,CAAnC;AACH;;AAED,MAAM2nD,MAAM,GAAGsK,cAAc,CAACtK,MAAf,CAAsB,IAAtB,EAA4B,CAAC+2B,YAA7B,CAAf;AAEAjmE,oBAAQ,CAAC/R,GAAT,GAAeurD,cAAc,CAAC9vD,MAA9B;AAEA,SAAOwlD,MAAM,CAACxiD,KAAP,CAAasiC,YAAb,CAAP;AACH;;AAGD,SAASo3C,WAAT,CAAqBC,YAArB,EAAmC/+D,KAAnC,EAA0C;AACtCtM,iBAAK,wBAAL;;AAEA,MAAI;AACAqrE,gBAAY,CAAC/+D,KAAD,CAAZ;AACH,GAFD,CAEE,OAAOvd,GAAP,EAAY;AACV2B,mBAAK,wBAAwB;AAAEA,WAAK,EAAEwiB,qCAAc,CAACnkB,GAAD;AAAvB,KAAxB,CAAL;AACH;AACJ;;AAED,SAASu8E,iBAAT,CAA2Bh/D,KAA3B,EAAkCkI,OAAlC,EAAkD;AAE9C,MAAMkiC,aAAa,GAAG0yB,sBAAsB,CAAC50D,OAAD,CAA5C;;AAEA,MAAI,CAACkiC,aAAL,EAAoB;AAChB,WAAOhmD,eAAK,4BAAZ;AACH;;AAEDsI,gBAAI,+BAAJ;;AAR8C,8BAUhBuxE,uBAAuB,CAACj+D,KAAD,EAAQoqC,aAAR,CAVP;AAAA,MAUtCp7C,GAVsC,yBAUtCA,GAVsC;AAAA,MAUjChF,YAViC,yBAUjCA,YAViC;;AAY9C,MAAIxB,KAAJ;AAEAwB,cAAY,CAACxH,IAAb,CAAkB,UAAA5B,MAAM,EAAI;AACxB4H,SAAK,GAAG5H,MAAR;AACH,GAFD;AAIA89E,sBAAoB,CAAC;AAAE1vE,OAAG,EAAHA,GAAF;AAAOq9B,WAAO,EAAE;AAAA,aAAMroC,2BAAY,CAACL,OAAb,CAAqB6E,KAArB,CAAN;AAAA;AAAhB,GAAD,EAAsD4hD,aAAtD,CAApB;AACH;;AAED,SAAS60B,WAAT,CAAqBj3D,SAArB,EAAgCvP,MAAhC,EAAwCsmE,YAAxC,EAAsDnC,SAAtD,EAAiE5uD,OAAjE,EAAiF;AAE7E,MAAM9F,OAAqB,GAAIF,SAAS,CAAC4B,OAAV,CAAkB9a,WAAlB,OAAoC,GAArC,GAA4CkZ,SAA5C,GAAwDvP,MAAtF;AAEA,MAAMymE,OAAO,GAAK,OAAOH,YAAP,KAAwB,UAA1C;;AAEA,MAAI72D,OAAO,CAAC1U,YAAR,CAAqB,4BAArB,CAAJ,EAAwD;AACpD,WAAO1G,cAAI,4CAAX;AACH;;AAEDob,SAAO,CAACuC,YAAR,CAAqB,4BAArB,EAAmD,EAAnD;AAEA,MAAM2/B,aAAa,GAAG0yB,sBAAsB,CAAC50D,OAAD,CAA5C;;AAEA,MAAIkiC,aAAa,IAAI80B,OAArB,EAA8B;AAC1BxyE,kBAAI,uBAAJ;AACH;;AAEDwb,SAAO,CAACzY,gBAAR,CAAyB,OAAzB,EAAkC,UAACuQ,KAAD,EAAmB;AAEjDgO,WAAO;AAEP,QAAMw8C,QAAQ,GAAG6R,gBAAgB,EAAjC;;AAEA,QAAIzvC,qCAAc,EAAlB,EAAsB;AAClBl5B,qBAAK,0BAAL;;AAEA,UAAI,CAAC82D,QAAL,EAAe;AACX92D,uBAAK,yCAAL;AACH;AACJ,KAND,MAMO;AACHA,qBAAK,8BAAL;;AAEA,UAAI82D,QAAJ,EAAc;AACV92D,uBAAK,2CAAL;AACH;AACJ;;AAED,QAAI,CAACwrE,OAAL,EAAc;AAEV,UAAI,CAAC1U,QAAL,EAAe;AACX,eAAO92D,eAAK,0BAAZ;AACH;AACJ;;AAEDhH,kBAAI,gBAAJ;;AAEA,QAAI,OAAOkwE,SAAP,KAAqB,UAAzB,EAAqC;AACjC,UAAIA,SAAS,CAACr6E,IAAV,EAAJ,EAAsB;AAClBmK,sBAAI,kCAAJ;AACH,OAFD,MAEO;AACH,eAAOA,cAAI,mCAAX;AACH;AACJ;;AAED,QAAIwyE,OAAJ,EAAa;AACT,aAAOJ,WAAW,CAACC,YAAD,EAAe/+D,KAAf,CAAlB;AAEH,KAHD,MAGO;AACH,aAAOg/D,iBAAiB,CAACh/D,KAAD,EAAQkI,OAAR,CAAxB;AACH;AACJ,GA3CD;AA4CH;;AAED,SAASi3D,sBAAT,CAAgCz9E,IAAhC,EAA+C;AAAA;;AAC3CgL,gBAAI,aAAYhL,IAAZ,aAAJ;AAEA+Q,OAAK,sBACC/jB,yBAAI,CAACC,GAAL,CAASE,KADV,IACyBH,yBAAI,CAACG,KAAL,CAAWiC,IADpC,SAECpC,yBAAI,CAACC,GAAL,CAASG,UAFV,IAEyBJ,yBAAI,CAACI,UAAL,CAAgBmC,aAFzC,SAGCvC,yBAAI,CAACC,GAAL,CAASI,WAHV,IAGyB2S,IAHzB,UAAL;AAMAiL,iCAAS;AACZ;;AAED,SAASyyE,qBAAT,CAA+B19E,IAA/B,EAA8C;AAAA;;AAC1C+Q,OAAK,wBACC/jB,yBAAI,CAACC,GAAL,CAASE,KADV,IACyBH,yBAAI,CAACG,KAAL,CAAWiC,IADpC,UAECpC,yBAAI,CAACC,GAAL,CAASG,UAFV,IAEyBJ,yBAAI,CAACI,UAAL,CAAgBqC,YAFzC,UAGCzC,yBAAI,CAACC,GAAL,CAASI,WAHV,IAGyB2S,IAHzB,WAAL;AAKAiL,iCAAS;AACZ;AAGD;;;;;;;;;;;;AAWA,IAAI0yE,WAAW,GAAG,KAAlB;AAEO,SAASlE,KAAT,CAAexyD,EAAf,EAA4B/X,OAA5B,EAAwE;AAAA,MAA5CA,OAA4C;AAA5CA,WAA4C,GAAzB,EAAyB;AAAA;;AAE3E+X,IAAE,GAAGA,EAAE,IAAI,UAAX;AAEAjc,gBAAI,UAAU;AACVic,MAAE,EAAFA,EADU;AAEV1f,OAAG,EAAM2H,OAAO,CAAC4sE,WAFP;AAGV5sE,WAAO,EAAEqwB,+BAAQ,CAACrwB,OAAD;AAHP,GAAV,CAAJ;;AAMA,MAAIyuE,WAAJ,EAAiB;AACb3rE,mBAAK,+BAAL;AACH;;AAED2rE,aAAW,GAAG,IAAd;AAEA9B,kBAAgB,CAAC3sE,OAAD,CAAhB;AACA+sE,aAAW,CAAC/sE,OAAD,CAAX;AAEAwrE,iBAAe,CAACt1E,wBAAM,CAACmC,GAAR,CAAf;AAEA,SAAOjF,2BAAY,CAACuB,GAAb,CAAiB,YAAM;AAE1B;AAEA,QAAI,CAACqL,OAAO,CAAC+rE,OAAR,CAAgBx5E,MAArB,EAA6B;AACzB,aAAOg8E,sBAAsB,CAACzwF,yBAAI,CAACK,WAAL,CAAiB4B,MAAlB,CAA7B;AACH,KANyB,CAQ1B;;;AAEA,WAAO+rF,aAAa,CAAC/zD,EAAD,EAAK/X,OAAO,CAAC+rE,OAAb,CAAb,CAAmCn6E,IAAnC,CAAwC,UAAAm6E,OAAO,EAAI;AAEtDA,aAAO,CAACx6D,OAAR,CAAgB,UAAA1J,MAAM,EAAI;AACtB0mE,8BAAsB,CAAC1mE,MAAM,CAAC/W,IAAR,CAAtB;AAEAu9E,mBAAW,CAACxmE,MAAM,CAACuP,SAAR,EAAmBvP,MAAM,CAACyP,OAA1B,EAAmCzP,MAAM,CAACokE,KAA1C,EAAiDpkE,MAAM,CAACmkE,SAAxD,EAAmE,YAAM;AAChFwC,+BAAqB,CAAC3mE,MAAM,CAAC/W,IAAR,CAArB;AACH,SAFU,CAAX;AAGH,OAND;AAOH,KATM,CAAP;AAUH,GApBM,CAAP;AAqBH;AAEDgX,kBAAQ,CAACyiE,KAAT,GAAiBA,KAAjB;AAEA;;;;;;;;;AASA,SAASyC,MAAT,GAAyB;AAErBlqE,iBAAK,UAAL;;AAEA,MAAI,CAAC2oE,gBAAgB,EAArB,EAAyB;AACrB,WAAO3oE,eAAK,qBAAZ;AACH;;AANoB,+BAQSuqE,uBAAuB,EARhC;AAAA,MAQbjvE,GARa,0BAQbA,GARa;AAAA,MAQRhF,YARQ,0BAQRA,YARQ;;AAUrB0C,gBAAI,+BAAJ;AAEAgyE,sBAAoB,CAAC;AAAE1vE,OAAG,EAAHA,GAAF;AAAOq9B,WAAO,EAAE;AAAA,aAAMriC,YAAN;AAAA;AAAhB,GAAD,CAApB;AACH;;AAED0O,kBAAQ,CAACklE,MAAT,GAAkBA,MAAlB;AAGA;;;;;;;;;;AAUA,SAASC,SAAT,CAAmB37E,IAAnB,EAAkC;AAC9BwR,iBAAK,cAAc;AAAExR,QAAI,EAAJA;AAAF,GAAd,CAAL;;AAD8B,+BAGA67E,uBAAuB,CAAC77E,IAAD,CAHvB;AAAA,MAGtB8H,YAHsB,0BAGtBA,YAHsB;AAAA,MAGRgF,GAHQ,0BAGRA,GAHQ;;AAK9BgvE,oBAAkB,CAAChvE,GAAD,CAAlB;;AAEA,MAAI,CAACqtE,gBAAgB,EAArB,EAAyB;AACrB3oE,mBAAK,gCAAgC;AAAE1E,SAAG,EAAHA;AAAF,KAAhC,CAAL;AACAu/B,YAAQ,CAACv/B,GAAD,CAAR;AACA;AACH;;AAEDtC,gBAAI,kCAAJ;AAEAgyE,sBAAoB,CAAC;AAAE1vE,OAAG,EAAHA,GAAF;AAAOq9B,WAAO,EAAE;AAAA,aAAMroC,2BAAY,CAACL,OAAb,CAAqBqG,YAArB,CAAN;AAAA;AAAhB,GAAD,CAApB;AACH;;AAED0O,kBAAQ,CAACmlE,SAAT,GAAqBA,SAArB;AAGA;;;;;;;;AAQA,SAASC,SAAT,CAAmBW,QAAnB,EAAuC;AACnC3xE,gBAAI,wBAAJ;;AAEA,MAAI2xE,QAAJ,EAAc;AACV3xE,kBAAI,uBAAuB;AAAE2xE,cAAQ,EAARA;AAAF,KAAvB,CAAJ;AACAlwC,YAAQ,CAACkwC,QAAD,CAAR;AAEH;AACJ;;AAED/lE,kBAAQ,CAAColE,SAAT,GAAqBA,SAArB,C;;AC9kBA;AAEA;AACA;AAEA;AACA;;mBAEyBvzE,gCAAM,CAACyxE,UAAD,C;IAAvB53E,W,gBAAAA,K;IAAOsP,W,gBAAAA,K;AAEf;;;;;;;AAMA,SAAS4rE,WAAT,CAAqBl5E,MAArB,EAA6B;AAEzB+qD,wCAAe,CAAC,YAAM;AAClBz9C,eAAK,yBAAL;AACA1Q,cAAU,CAAC,YAAM;AAEb,UAAI,CAACZ,MAAM,CAAC0zD,MAAZ,EAAoB;AAChB1xD,mBAAK,0CAAL;AACH;;AAEDgC,YAAM;AACT,KAPS,EAOP,CAPO,CAAV;AAQH,GAVc,CAAf;AAWH;;AAED,SAASm5E,KAAT,CAAet7D,GAAf,EAA6BzjB,GAA7B,EAA2CkkB,QAA3C,EAAgE;AAE5D,MAAI,CAACT,GAAL,EAAU;AACN;AACH;;AAED,MAAItiB,KAAK,GAAGsiB,GAAG,CAACzjB,GAAD,CAAf;;AAEA,MAAImB,KAAJ,EAAW;AACPA,SAAK,GAAG+iB,QAAQ,CAAC/iB,KAAD,CAAR,IAAmBA,KAA3B;AACH;;AAED,MAAI;AAEA,WAAOsiB,GAAG,CAACzjB,GAAD,CAAV;AAEAH,UAAM,CAAC0kB,cAAP,CAAsBd,GAAtB,EAA2BzjB,GAA3B,EAAgC;AAE5BwkB,kBAAY,EAAE,IAFc;AAI5BK,SAJ4B,eAIxBnjB,IAJwB,EAIlB;AACNP,aAAK,GAAGO,IAAR;;AAEA,YAAIP,KAAJ,EAAW;AACPA,eAAK,GAAG+iB,QAAQ,CAAC/iB,KAAD,CAAR,IAAmBA,KAA3B;AACH;AACJ,OAV2B;AAY5BgP,SAZ4B,iBAYd;AACV,eAAOhP,KAAP;AACH;AAd2B,KAAhC;AAiBH,GArBD,CAqBE,OAAOc,GAAP,EAAY,CACV;AACH;AACJ;;AAED88E,KAAK,CAACn9E,MAAD,EAAS,qBAAT,EAAgC,UAAAgE,MAAM,EAAI;AAE3C,MAAI,OAAOA,MAAP,KAAkB,UAAtB,EAAkC;AAE9B,QAAMo5E,YAAY,GAAG,SAAfA,YAAe,GAAmB;AACpC,UAAI,CAACp5E,MAAM,CAACihB,MAAZ,EAAoB;AAChBjhB,cAAM,CAACihB,MAAP,GAAgB,IAAhB;AACA,eAAOjhB,MAAM,CAACG,KAAP,CAAa,IAAb,EAAmBoB,SAAnB,CAAP;AACH;AACJ,KALD;;AAOA23E,eAAW,CAACE,YAAD,CAAX;AAEA,WAAOA,YAAP;AACH;AACJ,CAfI,CAAL;AAkBA;;;;;;AAMAruB,sCAAe,CAAC,YAAM;AAElB,MAAMwrB,OAAO,GAAG37E,KAAK,CAAC4D,SAAN,CAAgBsO,KAAhB,CAAsB3Q,IAAtB,CAA2B4Q,QAAQ,CAACoV,gBAAT,OAA+BmU,UAAU,CAACtuC,MAA1C,OAA3B,CAAhB;;AAEA,MAAIuuF,OAAO,IAAIA,OAAO,CAACx5E,MAAvB,EAA+B;AAC3BuQ,eAAK,uBAAuB;AAAE+rE,YAAM,EAAE9C,OAAO,CAACx5E;AAAlB,KAAvB,CAAL;;AAD2B,4BAGNw5E,OAHM,gBAGG;AAAzB,UAAMlkE,MAAM,GAAIkkE,OAAJ,KAAZ;AAED,UAAMh0D,EAAE,GAAGlQ,MAAM,CAACw1B,YAAP,CAAoBvR,UAAU,CAACu/C,WAA/B,CAAX;AAEA,UAAIuB,WAAW,SAAf;;AAEA,UAAI/kE,MAAM,CAACjF,YAAP,CAAoBkpB,UAAU,CAAC7vC,GAA/B,CAAJ,EAAyC;AACrC2wF,mBAAW,GAAG/kE,MAAM,CAACw1B,YAAP,CAAoBvR,UAAU,CAAC7vC,GAA/B,CAAd;AACH,OAFD,MAEO,IAAI4rB,MAAM,CAACjF,YAAP,CAAoBkpB,UAAU,CAAC1vC,OAA/B,CAAJ,EAA6C;AAChDwwF,mBAAW,GAAG3wF,wBAAG,CAACG,OAAlB;AACH;;AAEDmuF,WAAK,CAACxyD,EAAD,EAAK;AAAE60D,mBAAW,EAAXA,WAAF;AAAe/kE,cAAM,EAANA;AAAf,OAAL,CAAL;AACH;AACJ,GArBiB,CAuBlB;;;AAEAzX,OAAK,CAAC4D,SAAN,CAAgBsO,KAAhB,CAAsB3Q,IAAtB,CAA2B4Q,QAAQ,CAACqgE,sBAAT,CAAgC0I,OAAO,CAACC,aAAxC,CAA3B,EAAmFh6D,OAAnF,CAA2F,UAAAqG,EAAE,EAAI;AAC7FA,MAAE,CAAC+B,SAAH,GAAe/B,EAAE,CAAC+B,SAAH,CAAazqB,OAAb,CAAqBo8E,OAAO,CAACC,aAA7B,EAA4C,EAA5C,CAAf;AACH,GAFD;AAGH,CA5Bc,CAAf,C;;AC7FA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;CAAkB;;AAElB;AACA","file":"checkout.4.0.307.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 62);\n","/* @flow */\n\nimport type { Enum } from '../types';\n\ntype BUTTON_STYLE_OPTIONS_ENUM =\n Enum<'label' | 'size' | 'shape' | 'color' | 'layout' |\n 'fundingicons' | 'maxbuttons' | 'branding' | 'tagline' | 'height' | 'installmentperiod'>;\n\nexport const BUTTON_STYLE_OPTIONS : BUTTON_STYLE_OPTIONS_ENUM = {\n LABEL: 'label',\n SIZE: 'size',\n SHAPE: 'shape',\n COLOR: 'color',\n LAYOUT: 'layout',\n MAXBUTTONS: 'maxbuttons',\n FUNDINGICONS: 'fundingicons',\n BRANDING: 'branding',\n TAGLINE: 'tagline',\n HEIGHT: 'height',\n INSTALLMENTPERIOD: 'installmentperiod'\n};\n\ntype BUTTON_LABEL_ENUM =\n Enum<'paypal' | 'checkout' | 'pay' | 'credit' |\n 'card' | 'buynow' | 'installment' | 'venmo' | 'itau' | 'ideal' | 'elv' | 'bancontact' | 'giropay' | 'sofort' | 'eps' | 'mybank' | 'p24' | 'payu' | 'verkkopankki' | 'blik' | 'trustly' | 'maxima' | 'boleto' | 'oxxo'>;\n\nexport const BUTTON_LABEL : BUTTON_LABEL_ENUM = {\n PAYPAL: 'paypal',\n CHECKOUT: 'checkout',\n PAY: 'pay',\n CREDIT: 'credit',\n CARD: 'card',\n BUYNOW: 'buynow',\n INSTALLMENT: 'installment',\n VENMO: 'venmo',\n ITAU: 'itau',\n IDEAL: 'ideal',\n ELV: 'elv',\n BANCONTACT: 'bancontact',\n GIROPAY: 'giropay',\n SOFORT: 'sofort',\n EPS: 'eps',\n MYBANK: 'mybank',\n P24: 'p24',\n PAYU: 'payu',\n VERKKOPANKKI: 'verkkopankki',\n BLIK: 'blik',\n TRUSTLY: 'trustly',\n MAXIMA: 'maxima',\n BOLETO: 'boleto',\n OXXO: 'oxxo'\n};\n\ntype BUTTON_COLOR_ENUM =\n Enum<'gold' | 'blue' | 'silver' | 'black' | 'darkblue' | 'transparent' | 'white'>;\n\nexport const BUTTON_COLOR : BUTTON_COLOR_ENUM = {\n GOLD: 'gold',\n BLUE: 'blue',\n SILVER: 'silver',\n BLACK: 'black',\n DARKBLUE: 'darkblue',\n WHITE: 'white',\n TRANSPARENT: 'transparent'\n};\n\ntype BUTTON_LOGO_COLOR_ENUM =\n Enum<'blue' | 'white' | 'black' | 'any'>;\n\nexport const BUTTON_LOGO_COLOR : BUTTON_LOGO_COLOR_ENUM = {\n BLUE: 'blue',\n WHITE: 'white',\n BLACK: 'black',\n ANY: 'any'\n};\n\ntype BUTTON_SIZE_ENUM =\n Enum<'tiny' | 'small' | 'medium' | 'large' | 'huge' | 'responsive'>;\n\nexport const BUTTON_SIZE : BUTTON_SIZE_ENUM = {\n TINY: 'tiny',\n SMALL: 'small',\n MEDIUM: 'medium',\n LARGE: 'large',\n HUGE: 'huge',\n RESPONSIVE: 'responsive'\n};\n\ntype BUTTON_TAGLINE_COLOR_ENUM =\n Enum<'black' | 'blue'>;\n\nexport const BUTTON_TAGLINE_COLOR : BUTTON_TAGLINE_COLOR_ENUM = {\n BLACK: 'black',\n BLUE: 'blue'\n};\n\ntype BUTTON_SHAPE_ENUM =\n Enum<'pill' | 'rect'>;\n\nexport const BUTTON_SHAPE : BUTTON_SHAPE_ENUM = {\n PILL: 'pill',\n RECT: 'rect'\n};\n\ntype BUTTON_BRANDING_ENUM =\n Enum<'branded' | 'unbranded'>;\n\nexport const BUTTON_BRANDING : BUTTON_BRANDING_ENUM = {\n BRANDED: 'branded',\n UNBRANDED: 'unbranded'\n};\n\ntype BUTTON_LAYOUT_ENUM =\n Enum<'horizontal' | 'vertical'>;\n\nexport const BUTTON_LAYOUT : BUTTON_LAYOUT_ENUM = {\n HORIZONTAL: 'horizontal',\n VERTICAL: 'vertical'\n};\n\ntype BUTTON_NUMBER_ENUM =\n Enum<'single' | 'multiple'>;\n\nexport const BUTTON_NUMBER : BUTTON_NUMBER_ENUM = {\n SINGLE: 'single',\n MULTIPLE: 'multiple'\n};\n\ntype BUTTON_LOGO_ENUM =\n Enum<'pp' | 'paypal' | 'venmo' | 'itau' | 'credit' | 'ideal' | 'elv' | 'bancontact' | 'giropay' | 'sofort' | 'eps' | 'mybank' | 'p24' | 'payu' | 'verkkopankki' | 'blik' | 'trustly' | 'maxima' | 'boleto' | 'oxxo'>;\n\nexport const BUTTON_LOGO : BUTTON_LOGO_ENUM = {\n PP: 'pp',\n PAYPAL: 'paypal',\n VENMO: 'venmo',\n ITAU: 'itau',\n CREDIT: 'credit',\n IDEAL: 'ideal',\n ELV: 'elv',\n BANCONTACT: 'bancontact',\n GIROPAY: 'giropay',\n SOFORT: 'sofort',\n EPS: 'eps',\n MYBANK: 'mybank',\n P24: 'p24',\n PAYU: 'payu',\n VERKKOPANKKI: 'verkkopankki',\n BLIK: 'blik',\n TRUSTLY: 'trustly',\n MAXIMA: 'maxima',\n BOLETO: 'boleto',\n OXXO: 'oxxo'\n};\n","/* @flow */\n\nexport const CHECKOUT_OVERLAY_COLOR = {\n BLACK: 'black',\n WHITE: 'white'\n};\n","/* @flow */\n\nexport const FUNDING = {\n PAYPAL: 'paypal',\n VENMO: 'venmo',\n ITAU: 'itau',\n CREDIT: 'credit',\n CARD: 'card',\n IDEAL: 'ideal',\n ELV: 'elv',\n BANCONTACT: 'bancontact',\n GIROPAY: 'giropay',\n SOFORT: 'sofort',\n EPS: 'eps',\n MYBANK: 'mybank',\n P24: 'p24',\n ZIMPLER: 'zimpler',\n PAYU: 'payu',\n VERKKOPANKKI: 'verkkopankki',\n BLIK: 'blik',\n TRUSTLY: 'trustly',\n MAXIMA: 'maxima',\n BOLETO: 'boleto',\n OXXO: 'oxxo'\n};\n\nexport const CARD = {\n VISA: 'visa',\n MASTERCARD: 'mastercard',\n AMEX: 'amex',\n DISCOVER: 'discover',\n SWITCH: 'switch',\n MAESTRO: 'maestro',\n HIPER: 'hiper',\n ELO: 'elo',\n JCB: 'jcb',\n CUP: 'cup',\n COFINOGA: 'cofinoga',\n COFIDIS: 'cofidis',\n CETELEM: 'cetelem',\n CBNATIONALE: 'cbnationale'\n};\n\nexport const FUNDING_ELIGIBILITY_REASON = {\n PRIMARY: 'The funding source is the primary source',\n NOT_ENABLED: 'The funding source is not currently enabled for use',\n SECONDARY_DISALLOWED: 'The funding source is disallowed as a secondary button',\n OPT_OUT: 'The funding source was disallowed in funding.disallowed',\n OPT_IN: 'The funding source was allowed in funding.allowed',\n DISALLOWED_COUNTRY: 'The funding source is not enabled for the current locale',\n DEFAULT_COUNTRY: 'The funding source is enabled by default for the current locale',\n DEFAULT: 'The funding source is enabled by default for all users',\n REMEMBERED: 'The funding source was remembered for the current user',\n NEED_OPT_IN: 'The funding source needs to be allowed in funding.allowed',\n COMMIT_NOT_SET: 'The funding source is not enabled when commit is not set as true',\n INVALID_ENV: 'The funding source is not supported in this environment'\n};\n\nexport const CARD_PRIORITY = [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.DISCOVER,\n CARD.SWITCH,\n CARD.MAESTRO,\n CARD.HIPER,\n CARD.ELO,\n CARD.JCB,\n CARD.CUP,\n CARD.COFINOGA,\n CARD.COFIDIS,\n CARD.CETELEM,\n CARD.CBNATIONALE\n];\n","/* @flow */\n\nexport const ENV = {\n LOCAL: 'local',\n STAGE: 'stage',\n SANDBOX: 'sandbox',\n PRODUCTION: 'production',\n TEST: 'test',\n DEMO: 'demo'\n};\n\nexport const USERS = {\n ALL: 'all',\n REMEMBERED: 'remembered'\n};\n\nexport const SOURCE = {\n MANUAL: 'manual',\n BUTTON_FACTORY: 'button_factory'\n};\n\nexport const LOG_LEVEL = {\n DEBUG: 'debug',\n INFO: 'info',\n WARN: 'warn',\n ERROR: 'error'\n};\n\nexport const PAYMENT_TYPE = {\n EC_TOKEN: 'ec_token',\n BA_TOKEN: 'ba_token',\n PAY_ID: 'pay_id'\n};\n\nexport const PPTM_ID = 'xo-pptm';\n\nexport const ATTRIBUTE = {\n BUTTON: 'data-button',\n FUNDING_SOURCE: 'data-funding-source',\n CARD: 'data-card',\n VERSION: 'data-version',\n LAYOUT: 'data-layout',\n SIZE: 'data-size'\n};\n\nexport const PLATFORM = {\n DESKTOP: 'desktop',\n MOBILE: 'mobile'\n};\n\nexport const DEFAULT = 'default';\n\n\n","/* @flow */\n\nimport { PAYMENT_TYPE } from './misc';\n\nexport const FPTI = {\n\n KEY: {\n FEED: 'feed_name',\n STATE: 'state_name',\n TRANSITION: 'transition_name',\n BUTTON_TYPE: 'button_type',\n SESSION_UID: 'page_session_id',\n BUTTON_SESSION_UID: 'button_session_id',\n TOKEN: 'token',\n CONTEXT_ID: 'context_id',\n CONTEXT_TYPE: 'context_type',\n REFERER: 'referer_url',\n PAY_ID: 'pay_id',\n SELLER_ID: 'seller_id',\n DATA_SOURCE: 'serverside_data_source',\n BUTTON_SOURCE: 'button_source',\n ERROR_CODE: 'ext_error_code',\n ERROR_DESC: 'ext_error_desc',\n PAGE_LOAD_TIME: 'page_load_time',\n EXPERIMENT_NAME: 'pxp_exp_id',\n TREATMENT_NAME: 'pxp_trtmnt_id',\n TRANSITION_TIME: 'transition_time',\n FUNDING_LIST: 'eligible_payment_methods',\n FUNDING_COUNT: 'eligible_payment_count',\n CHOSEN_FUNDING: 'selected_payment_method',\n BUTTON_LAYOUT: 'button_layout',\n BUTTON_COLOR: 'button_color',\n BUTTON_SIZE: 'button_size',\n BUTTON_SHAPE: 'button_shape',\n BUTTON_LABEL: 'button_label',\n BUTTON_WIDTH: 'button_width',\n VERSION: 'checkoutjs_version',\n MAX_BUTTONS: 'max_buttons',\n FUNDING_REMEMBERED: 'funding_remembered',\n BUTTON_TAGLINE_ENABLED: 'button_tagline_enabled',\n RESPONSE_DURATION: 'response_duration',\n PAYMENT_FLOW: 'payment_flow',\n BUTTON_VERSION: 'button_version'\n },\n\n BUTTON_TYPE: {\n IFRAME: 'iframe',\n HTML: 'html',\n CUSTOM: 'custom'\n },\n\n DATA_SOURCE: {\n CHECKOUT: 'checkout'\n },\n\n CONTEXT_TYPE: {\n BUTTON_SESSION_ID: 'button_session_id',\n [ PAYMENT_TYPE.PAY_ID ]: 'Pay-ID',\n [ PAYMENT_TYPE.EC_TOKEN ]: 'EC-Token',\n [ PAYMENT_TYPE.BA_TOKEN ]: 'EC-Token'\n },\n\n FEED: {\n CHECKOUTJS: 'checkoutjs'\n },\n\n STATE: {\n LOAD: 'checkoutjs_load',\n BUTTON: 'checkoutjs_button',\n CHECKOUT: 'checkoutjs_checkout',\n PPTM: 'checkoutjs_pptm'\n },\n\n TRANSITION: {\n SCRIPT_LOAD: 'process_script_load',\n\n BUTTON_RENDER: 'process_button_render',\n BUTTON_LOAD: 'process_button_load',\n BUTTON_CLICK: 'process_button_click',\n\n BUTTON_RENDER_INTRANET_MODE: 'process_button_render_intranet_mode',\n BUTTON_CLICK_INTRANET_MODE: 'process_button_click_intranet_mode',\n\n CREATE_PAYMENT: 'process_create_payment',\n RECIEVE_PAYMENT: 'process_recieve_payment',\n\n CHECKOUT_INIT: 'process_checkout_init',\n CHECKOUT_AUTHORIZE: 'process_checkout_authorize',\n CHECKOUT_SHIPPING_CHANGE: 'process_checkout_shipping_change',\n CHECKOUT_CANCEL: 'process_checkout_cancel',\n CHECKOUT_ERROR: 'process_checkout_error',\n\n EXTERNAL_EXPERIMENT: 'process_external_experiment',\n EXTERNAL_EXPERIMENT_COMPLETE: 'process_external_experiment_complete',\n\n PPTM_LOAD: 'process_pptm_load',\n PPTM_LOADED: 'process_pptm_loaded'\n }\n};\n","/* @flow */\n\nexport const COUNTRY = {\n AD: 'AD',\n AE: 'AE',\n AG: 'AG',\n AI: 'AI',\n AL: 'AL',\n AM: 'AM',\n AN: 'AN',\n AO: 'AO',\n AR: 'AR',\n AT: 'AT',\n AU: 'AU',\n AW: 'AW',\n AZ: 'AZ',\n BA: 'BA',\n BB: 'BB',\n BE: 'BE',\n BF: 'BF',\n BG: 'BG',\n BH: 'BH',\n BI: 'BI',\n BJ: 'BJ',\n BM: 'BM',\n BN: 'BN',\n BO: 'BO',\n BR: 'BR',\n BS: 'BS',\n BT: 'BT',\n BW: 'BW',\n BY: 'BY',\n BZ: 'BZ',\n C2: 'C2',\n CA: 'CA',\n CD: 'CD',\n CG: 'CG',\n CH: 'CH',\n CI: 'CI',\n CK: 'CK',\n CL: 'CL',\n CM: 'CM',\n CN: 'CN',\n CO: 'CO',\n CR: 'CR',\n CV: 'CV',\n CY: 'CY',\n CZ: 'CZ',\n DE: 'DE',\n DJ: 'DJ',\n DK: 'DK',\n DM: 'DM',\n DO: 'DO',\n DZ: 'DZ',\n EC: 'EC',\n EE: 'EE',\n EG: 'EG',\n ER: 'ER',\n ES: 'ES',\n ET: 'ET',\n FI: 'FI',\n FJ: 'FJ',\n FK: 'FK',\n FM: 'FM',\n FO: 'FO',\n FR: 'FR',\n GA: 'GA',\n GB: 'GB',\n GD: 'GD',\n GE: 'GE',\n GF: 'GF',\n GI: 'GI',\n GL: 'GL',\n GM: 'GM',\n GN: 'GN',\n GP: 'GP',\n GR: 'GR',\n GT: 'GT',\n GW: 'GW',\n GY: 'GY',\n HK: 'HK',\n HN: 'HN',\n HR: 'HR',\n HU: 'HU',\n ID: 'ID',\n IE: 'IE',\n IL: 'IL',\n IN: 'IN',\n IS: 'IS',\n IT: 'IT',\n JM: 'JM',\n JO: 'JO',\n JP: 'JP',\n KE: 'KE',\n KG: 'KG',\n KH: 'KH',\n KI: 'KI',\n KM: 'KM',\n KN: 'KN',\n KR: 'KR',\n KW: 'KW',\n KY: 'KY',\n KZ: 'KZ',\n LA: 'LA',\n LC: 'LC',\n LI: 'LI',\n LK: 'LK',\n LS: 'LS',\n LT: 'LT',\n LU: 'LU',\n LV: 'LV',\n MA: 'MA',\n MC: 'MC',\n MD: 'MD',\n ME: 'ME',\n MG: 'MG',\n MH: 'MH',\n MK: 'MK',\n ML: 'ML',\n MN: 'MN',\n MQ: 'MQ',\n MR: 'MR',\n MS: 'MS',\n MT: 'MT',\n MU: 'MU',\n MV: 'MV',\n MW: 'MW',\n MX: 'MX',\n MY: 'MY',\n MZ: 'MZ',\n NA: 'NA',\n NC: 'NC',\n NE: 'NE',\n NF: 'NF',\n NG: 'NG',\n NI: 'NI',\n NL: 'NL',\n NO: 'NO',\n NP: 'NP',\n NR: 'NR',\n NU: 'NU',\n NZ: 'NZ',\n OM: 'OM',\n PA: 'PA',\n PE: 'PE',\n PF: 'PF',\n PG: 'PG',\n PH: 'PH',\n PL: 'PL',\n PM: 'PM',\n PN: 'PN',\n PT: 'PT',\n PW: 'PW',\n PY: 'PY',\n QA: 'QA',\n RE: 'RE',\n RO: 'RO',\n RS: 'RS',\n RU: 'RU',\n RW: 'RW',\n SA: 'SA',\n SB: 'SB',\n SC: 'SC',\n SE: 'SE',\n SG: 'SG',\n SH: 'SH',\n SI: 'SI',\n SJ: 'SJ',\n SK: 'SK',\n SL: 'SL',\n SM: 'SM',\n SN: 'SN',\n SO: 'SO',\n SR: 'SR',\n ST: 'ST',\n SV: 'SV',\n SZ: 'SZ',\n TC: 'TC',\n TD: 'TD',\n TG: 'TG',\n TH: 'TH',\n TJ: 'TJ',\n TM: 'TM',\n TN: 'TN',\n TO: 'TO',\n TR: 'TR',\n TT: 'TT',\n TV: 'TV',\n TW: 'TW',\n TZ: 'TZ',\n UA: 'UA',\n UG: 'UG',\n US: 'US',\n UY: 'UY',\n VA: 'VA',\n VC: 'VC',\n VE: 'VE',\n VG: 'VG',\n VN: 'VN',\n VU: 'VU',\n WF: 'WF',\n WS: 'WS',\n YE: 'YE',\n YT: 'YT',\n ZA: 'ZA',\n ZM: 'ZM',\n ZW: 'ZW'\n};\n\nexport const LANG = {\n AR: 'ar',\n CS: 'cs',\n DA: 'da',\n DE: 'de',\n EL: 'el',\n EN: 'en',\n ES: 'es',\n FI: 'fi',\n FR: 'fr',\n HE: 'he',\n HU: 'hu',\n ID: 'id',\n IT: 'it',\n JA: 'ja',\n KO: 'ko',\n NL: 'nl',\n NO: 'no',\n PL: 'pl',\n PT: 'pt',\n RU: 'ru',\n SK: 'sk',\n SV: 'sv',\n TH: 'th',\n TR: 'tr',\n ZH: 'zh'\n};\n\nexport const LANG_TO_DEFAULT_COUNTRY = {\n [LANG.AR]: COUNTRY.SA,\n [LANG.CS]: COUNTRY.CZ,\n [LANG.DA]: COUNTRY.DK,\n [LANG.DE]: COUNTRY.DE,\n [LANG.EL]: COUNTRY.GR,\n [LANG.EN]: COUNTRY.US,\n [LANG.ES]: COUNTRY.ES,\n [LANG.FI]: COUNTRY.FI,\n [LANG.FR]: COUNTRY.FR,\n [LANG.HE]: COUNTRY.IL,\n [LANG.HU]: COUNTRY.HU,\n [LANG.ID]: COUNTRY.ID,\n [LANG.IT]: COUNTRY.IT,\n [LANG.JA]: COUNTRY.JP,\n [LANG.KO]: COUNTRY.KR,\n [LANG.NL]: COUNTRY.NL,\n [LANG.NO]: COUNTRY.NO,\n [LANG.PL]: COUNTRY.PL,\n [LANG.PT]: COUNTRY.PT,\n [LANG.RU]: COUNTRY.RU,\n [LANG.SK]: COUNTRY.SK,\n [LANG.SV]: COUNTRY.SE,\n [LANG.TH]: COUNTRY.TH,\n [LANG.TR]: COUNTRY.TR,\n [LANG.ZH]: COUNTRY.CN\n};\n\nexport const ALLOWED_INSTALLMENT_COUNTRIES = [ COUNTRY.BR, COUNTRY.MX ];\nexport const ALLOWED_INSTALLMENT_PERIOD = {\n BR: [ 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ],\n MX: [ 3, 6, 9, 12 ]\n};\n","/* @flow */\n\nimport { COUNTRY, LANG } from './country';\n\nexport const LOCALE = {\n [COUNTRY.AD]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AE]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH, LANG.AR ],\n [COUNTRY.AG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AI]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AL]: [ LANG.EN ],\n [COUNTRY.AM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AN]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AO]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AR]: [ LANG.ES, LANG.EN ],\n [COUNTRY.AT]: [ LANG.DE, LANG.EN ],\n [COUNTRY.AU]: [ LANG.EN ],\n [COUNTRY.AW]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BA]: [ LANG.EN ],\n [COUNTRY.BB]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BE]: [ LANG.EN, LANG.NL, LANG.FR ],\n [COUNTRY.BF]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.BG]: [ LANG.EN ],\n [COUNTRY.BH]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BI]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.BJ]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.BM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BN]: [ LANG.EN ],\n [COUNTRY.BO]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.BR]: [ LANG.PT, LANG.EN ],\n [COUNTRY.BS]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BT]: [ LANG.EN ],\n [COUNTRY.BW]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BY]: [ LANG.EN ],\n [COUNTRY.BZ]: [ LANG.EN, LANG.ES, LANG.FR, LANG.ZH ],\n [COUNTRY.C2]: [ LANG.ZH, LANG.EN ],\n [COUNTRY.CA]: [ LANG.EN, LANG.FR ],\n [COUNTRY.CD]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.CG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.CH]: [ LANG.DE, LANG.FR, LANG.EN ],\n [COUNTRY.CI]: [ LANG.FR, LANG.EN ],\n [COUNTRY.CK]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.CL]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.CM]: [ LANG.FR, LANG.EN ],\n [COUNTRY.CN]: [ LANG.ZH ],\n [COUNTRY.CO]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.CR]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.CV]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.CY]: [ LANG.EN ],\n [COUNTRY.CZ]: [ LANG.CS, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.DE]: [ LANG.DE, LANG.EN ],\n [COUNTRY.DJ]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.DK]: [ LANG.DA, LANG.EN ],\n [COUNTRY.DM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.DO]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.DZ]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.EC]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.EE]: [ LANG.EN, LANG.RU, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.EG]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ER]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ES]: [ LANG.ES, LANG.EN ],\n [COUNTRY.ET]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.FI]: [ LANG.FI, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.FJ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.FK]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.FM]: [ LANG.EN ],\n [COUNTRY.FO]: [ LANG.DA, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.FR]: [ LANG.FR, LANG.EN ],\n [COUNTRY.GA]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.GB]: [ LANG.EN ],\n [COUNTRY.GD]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GE]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GF]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GI]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GL]: [ LANG.DA, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GN]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.GP]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GR]: [ LANG.EL, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GT]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.GW]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GY]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.HK]: [ LANG.EN, LANG.ZH ],\n [COUNTRY.HN]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.HR]: [ LANG.EN ],\n [COUNTRY.HU]: [ LANG.HU, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ID]: [ LANG.ID, LANG.EN ],\n [COUNTRY.IE]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.IL]: [ LANG.HE, LANG.EN ],\n [COUNTRY.IN]: [ LANG.EN ],\n [COUNTRY.IS]: [ LANG.EN ],\n [COUNTRY.IT]: [ LANG.IT, LANG.EN ],\n [COUNTRY.JM]: [ LANG.EN, LANG.ES, LANG.FR, LANG.ZH ],\n [COUNTRY.JO]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.JP]: [ LANG.JA, LANG.EN ],\n [COUNTRY.KE]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KH]: [ LANG.EN ],\n [COUNTRY.KI]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KM]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.KN]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KR]: [ LANG.KO, LANG.EN ],\n [COUNTRY.KW]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KY]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LA]: [ LANG.EN ],\n [COUNTRY.LC]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LI]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LK]: [ LANG.EN ],\n [COUNTRY.LS]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LT]: [ LANG.EN, LANG.RU, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LU]: [ LANG.EN, LANG.DE, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LV]: [ LANG.EN, LANG.RU, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MA]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MC]: [ LANG.FR, LANG.EN ],\n [COUNTRY.MD]: [ LANG.EN ],\n [COUNTRY.ME]: [ LANG.EN ],\n [COUNTRY.MG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MH]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MK]: [ LANG.EN ],\n [COUNTRY.ML]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.MN]: [ LANG.EN ],\n [COUNTRY.MQ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MR]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MS]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MT]: [ LANG.EN ],\n [COUNTRY.MU]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MV]: [ LANG.EN ],\n [COUNTRY.MW]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MX]: [ LANG.ES, LANG.EN ],\n [COUNTRY.MY]: [ LANG.EN ],\n [COUNTRY.MZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NA]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NC]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NE]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.NF]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NG]: [ LANG.EN ],\n [COUNTRY.NI]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.NL]: [ LANG.NL, LANG.EN ],\n [COUNTRY.NO]: [ LANG.NO, LANG.EN ],\n [COUNTRY.NP]: [ LANG.EN ],\n [COUNTRY.NR]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NU]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.OM]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PA]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.PE]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.PF]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PH]: [ LANG.EN ],\n [COUNTRY.PL]: [ LANG.PL, LANG.EN ],\n [COUNTRY.PM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PN]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PT]: [ LANG.PT, LANG.EN ],\n [COUNTRY.PW]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PY]: [ LANG.ES, LANG.EN ],\n [COUNTRY.QA]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH, LANG.AR ],\n [COUNTRY.RE]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.RO]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.RS]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.RU]: [ LANG.RU, LANG.EN ],\n [COUNTRY.RW]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.SA]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SB]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SC]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.SE]: [ LANG.SV, LANG.EN ],\n [COUNTRY.SG]: [ LANG.EN ],\n [COUNTRY.SH]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SI]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SJ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SK]: [ LANG.SK, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SL]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SN]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.SO]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SR]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ST]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SV]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.SZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TC]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TD]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.TG]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.TH]: [ LANG.TH, LANG.EN ],\n [COUNTRY.TJ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TN]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TO]: [ LANG.EN ],\n [COUNTRY.TR]: [ LANG.TR, LANG.EN ],\n [COUNTRY.TT]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TV]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TW]: [ LANG.ZH, LANG.EN ],\n [COUNTRY.TZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.UA]: [ LANG.EN, LANG.RU, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.UG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.US]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.UY]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.VA]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.VC]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.VE]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.VG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.VN]: [ LANG.EN ],\n [COUNTRY.VU]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.WF]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.WS]: [ LANG.EN ],\n [COUNTRY.YE]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.YT]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ZA]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ZM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ZW]: [ LANG.EN ]\n};\n","/* @flow */\n\nexport * from './button';\nexport * from './checkout';\nexport * from './funding';\nexport * from './fpti';\nexport * from './country';\nexport * from './misc';\nexport * from './locale';\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { regexMap } from './util';\n\n// eslint-disable-next-line no-use-before-define\nexport type ChildType = $ReadOnlyArray | JsxHTMLNode | string | void | null;\nexport type ChildrenType = $ReadOnlyArray;\ntype PropsType = ?{ class? : string, id? : string, innerHTML? : string };\n\nfunction htmlEncode(html : string = '') : string {\n return html.toString()\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(/\\//g, '/');\n}\n\nexport class JsxHTMLNode {\n name : string\n props : PropsType\n children : ChildrenType\n\n constructor(name : string, props : PropsType, children : ChildrenType) {\n this.name = name;\n this.props = props;\n this.children = children;\n }\n\n toString() : string {\n return `<${ this.name }${ this.props ? ' ' : '' }${ this.props ? this.propsToString() : '' }>${ this.childrenToString() }`;\n }\n\n propsToString() : string {\n const props = this.props;\n\n if (!props) {\n return '';\n }\n\n return Object.keys(props).filter(key => {\n return key !== 'innerHTML' && props && props[key] !== false;\n }).map(key => {\n if (props && props[key] === true) {\n return `${ htmlEncode(key) }`;\n }\n return props ? `${ htmlEncode(key) }=\"${ htmlEncode(props[key]) }\"` : '';\n }).join(' ');\n }\n\n childrenToString() : string {\n\n if (this.props && this.props.innerHTML) {\n return this.props.innerHTML;\n }\n\n if (!this.children) {\n return '';\n }\n\n let result = '';\n\n function iterate(children) {\n for (const child of children) {\n\n if (child === null || child === undefined) {\n continue;\n }\n\n if (Array.isArray(child)) {\n iterate(child);\n } else if (child instanceof JsxHTMLNode) {\n result += child.toString();\n } else {\n result += htmlEncode(child);\n }\n }\n }\n\n iterate(this.children);\n\n return result;\n }\n}\n\nexport class JsxHTMLNodeContainer extends JsxHTMLNode {\n\n\n constructor(children : ChildrenType) {\n super('', {}, children);\n }\n\n toString() : string {\n return this.childrenToString();\n }\n}\n\nexport function jsxToHTML(name : string, props : PropsType, ...children : ChildrenType) : JsxHTMLNode {\n return new JsxHTMLNode(name, props, children);\n}\n\nexport function jsxRender(template : string, renderers : { [string] : (string) =>?(JsxHTMLNode | $ReadOnlyArray) }) : JsxHTMLNode {\n\n // eslint-disable-next-line security/detect-unsafe-regex, unicorn/no-unsafe-regex\n const nodes = regexMap(template, /\\{\\s*([a-z]+)(?::\\s*([^} ]+))?\\s*\\}|([^${}]+)/g, (match, type, value, text) => {\n if (type) {\n if (!renderers[type]) {\n throw new Error(`Can not render type: ${ type }`);\n }\n\n return renderers[type](value);\n } else if (text && text.trim()) {\n\n if (!renderers.text) {\n return text;\n }\n\n if ((/
/).test(text)) {\n return renderers.break(text);\n } else {\n return renderers.text(text);\n }\n } else {\n return text;\n }\n });\n\n return new JsxHTMLNodeContainer(nodes);\n}\n","/* @flow */\n\nexport function isPromise(item : mixed) : boolean {\n try {\n if (!item) {\n return false;\n }\n\n if (typeof Promise !== 'undefined' && item instanceof Promise) {\n return true;\n }\n\n if (typeof window !== 'undefined' && typeof window.Window === 'function' && item instanceof window.Window) {\n return false;\n }\n\n if (typeof window !== 'undefined' && typeof window.constructor === 'function' && item instanceof window.constructor) {\n return false;\n }\n\n let toString = ({}).toString;\n\n if (toString) {\n let name = toString.call(item);\n\n if (name === '[object Window]' || name === '[object global]' || name === '[object DOMWindow]') {\n return false;\n }\n }\n\n if (typeof item.then === 'function') {\n return true;\n }\n } catch (err) {\n return false;\n }\n\n return false;\n}\n","/* @flow */\n\nimport type { ZalgoPromise } from './promise';\n\nconst dispatchedErrors = [];\nconst possiblyUnhandledPromiseHandlers : Array<(mixed, promise? : ZalgoPromise) => void> = [];\n\nexport function dispatchPossiblyUnhandledError(err : mixed, promise : ZalgoPromise) {\n\n if (dispatchedErrors.indexOf(err) !== -1) {\n return;\n }\n\n dispatchedErrors.push(err);\n\n setTimeout(() => {\n if (__DEBUG__) {\n // $FlowFixMe\n throw new Error(`${ err.stack || err.toString() }\\n\\nFrom promise:\\n\\n${ promise.stack }`);\n }\n\n throw err;\n }, 1);\n\n for (let j = 0; j < possiblyUnhandledPromiseHandlers.length; j++) {\n // $FlowFixMe\n possiblyUnhandledPromiseHandlers[j](err, promise);\n }\n}\n\nexport function onPossiblyUnhandledException(handler : (mixed, promise? : ZalgoPromise) => void) : { cancel : () => void } {\n possiblyUnhandledPromiseHandlers.push(handler);\n\n return {\n cancel() {\n possiblyUnhandledPromiseHandlers.splice(possiblyUnhandledPromiseHandlers.indexOf(handler), 1);\n }\n };\n}\n","/* @flow */\n\nimport type { ZalgoPromise } from './promise';\n\nlet activeCount = 0;\nlet flushPromise;\n\nfunction flushActive() {\n if (!activeCount && flushPromise) {\n const promise = flushPromise;\n flushPromise = null;\n promise.resolve();\n }\n}\n\nexport function startActive() {\n activeCount += 1;\n}\n\nexport function endActive() {\n activeCount -= 1;\n flushActive();\n}\n\nexport function awaitActive(Zalgo : Class>) : ZalgoPromise { // eslint-disable-line no-undef\n let promise = flushPromise = flushPromise || new Zalgo();\n flushActive();\n return promise;\n}\n","/* @flow */\n\nimport { isPromise } from './utils';\nimport { onPossiblyUnhandledException, dispatchPossiblyUnhandledError } from './exceptions';\nimport { startActive, endActive, awaitActive } from './flush';\n\nexport class ZalgoPromise {\n\n resolved : boolean\n rejected : boolean\n errorHandled : boolean\n value : R\n error : mixed\n handlers : Array<{\n promise : ZalgoPromise<*>,\n onSuccess : void | (result : R) => mixed,\n onError : void | (error : mixed) => mixed\n }>\n dispatching : boolean\n stack : string\n\n constructor(handler : ?(resolve : (result : R) => void, reject : (error : mixed) => void) => void) {\n\n this.resolved = false;\n this.rejected = false;\n this.errorHandled = false;\n\n this.handlers = [];\n\n if (handler) {\n\n let result;\n let error;\n let resolved = false;\n let rejected = false;\n let isAsync = false;\n\n startActive();\n\n try {\n handler(res => {\n if (isAsync) {\n this.resolve(res);\n } else {\n resolved = true;\n result = res;\n }\n\n }, err => {\n if (isAsync) {\n this.reject(err);\n } else {\n rejected = true;\n error = err;\n }\n });\n\n } catch (err) {\n endActive();\n this.reject(err);\n return;\n }\n\n endActive();\n\n isAsync = true;\n\n if (resolved) {\n // $FlowFixMe\n this.resolve(result);\n } else if (rejected) {\n this.reject(error);\n }\n }\n\n if (__DEBUG__) {\n try {\n throw new Error(`ZalgoPromise`);\n } catch (err) {\n this.stack = err.stack;\n }\n }\n }\n\n resolve(result : R) : ZalgoPromise {\n if (this.resolved || this.rejected) {\n return this;\n }\n\n if (isPromise(result)) {\n throw new Error('Can not resolve promise with another promise');\n }\n\n this.resolved = true;\n this.value = result;\n this.dispatch();\n\n return this;\n }\n\n reject(error : mixed) : ZalgoPromise {\n if (this.resolved || this.rejected) {\n return this;\n }\n\n if (isPromise(error)) {\n throw new Error('Can not reject promise with another promise');\n }\n\n if (!error) {\n // $FlowFixMe\n let err = (error && typeof error.toString === 'function' ? error.toString() : Object.prototype.toString.call(error));\n error = new Error(`Expected reject to be called with Error, got ${ err }`);\n }\n\n this.rejected = true;\n this.error = error;\n\n if (!this.errorHandled) {\n setTimeout(() => {\n if (!this.errorHandled) {\n dispatchPossiblyUnhandledError(error, this);\n }\n }, 1);\n }\n\n this.dispatch();\n\n return this;\n }\n\n asyncReject(error : mixed) : ZalgoPromise {\n this.errorHandled = true;\n this.reject(error);\n return this;\n }\n \n dispatch() {\n\n let { dispatching, resolved, rejected, handlers } = this;\n\n if (dispatching) {\n return;\n }\n\n if (!resolved && !rejected) {\n return;\n }\n\n this.dispatching = true;\n startActive();\n\n const chain = (firstPromise : ZalgoPromise, secondPromise : ZalgoPromise) => {\n return firstPromise.then(res => {\n secondPromise.resolve(res);\n }, err => {\n secondPromise.reject(err);\n });\n };\n\n for (let i = 0; i < handlers.length; i++) {\n\n let { onSuccess, onError, promise } = handlers[i];\n\n let result;\n\n if (resolved) {\n\n try {\n result = onSuccess ? onSuccess(this.value) : this.value;\n } catch (err) {\n promise.reject(err);\n continue;\n }\n\n } else if (rejected) {\n\n if (!onError) {\n promise.reject(this.error);\n continue;\n }\n\n try {\n result = onError(this.error);\n } catch (err) {\n promise.reject(err);\n continue;\n }\n }\n\n if (result instanceof ZalgoPromise && (result.resolved || result.rejected)) {\n\n if (result.resolved) {\n promise.resolve(result.value);\n } else {\n promise.reject(result.error);\n }\n\n result.errorHandled = true;\n\n } else if (isPromise(result)) {\n\n if (result instanceof ZalgoPromise && (result.resolved || result.rejected)) {\n if (result.resolved) {\n promise.resolve(result.value);\n } else {\n promise.reject(result.error);\n }\n\n } else {\n // $FlowFixMe\n chain(result, promise);\n }\n\n } else {\n\n promise.resolve(result);\n }\n }\n\n handlers.length = 0;\n this.dispatching = false;\n endActive();\n }\n\n then(onSuccess : void | (result : R) => (ZalgoPromise | Y), onError : void | (error : mixed) => (ZalgoPromise | Y)) : ZalgoPromise {\n\n if (onSuccess && typeof onSuccess !== 'function' && !onSuccess.call) {\n throw new Error('Promise.then expected a function for success handler');\n }\n\n if (onError && typeof onError !== 'function' && !onError.call) {\n throw new Error('Promise.then expected a function for error handler');\n }\n\n let promise : ZalgoPromise = new ZalgoPromise();\n\n this.handlers.push({\n promise,\n onSuccess,\n onError\n });\n\n this.errorHandled = true;\n\n this.dispatch();\n\n return promise;\n }\n\n catch(onError : (error : mixed) => ZalgoPromise | Y) : ZalgoPromise {\n return this.then(undefined, onError);\n }\n\n finally(onFinally : () => mixed) : ZalgoPromise {\n\n if (onFinally && typeof onFinally !== 'function' && !onFinally.call) {\n throw new Error('Promise.finally expected a function');\n }\n\n return this.then((result) => {\n return ZalgoPromise.try(onFinally)\n .then(() => {\n return result;\n });\n }, (err) => {\n return ZalgoPromise.try(onFinally)\n .then(() => {\n throw err;\n });\n });\n }\n\n timeout(time : number, err : ?Error) : ZalgoPromise {\n\n if (this.resolved || this.rejected) {\n return this;\n }\n\n let timeout = setTimeout(() => {\n\n if (this.resolved || this.rejected) {\n return;\n }\n\n this.reject(err || new Error(`Promise timed out after ${ time }ms`));\n\n }, time);\n\n return this.then(result => {\n clearTimeout(timeout);\n return result;\n });\n }\n\n // $FlowFixMe\n toPromise() : Promise {\n // $FlowFixMe\n if (typeof Promise === 'undefined') {\n throw new TypeError(`Could not find Promise`);\n }\n // $FlowFixMe\n return Promise.resolve(this); // eslint-disable-line compat/compat\n }\n\n static resolve(value : X | ZalgoPromise) : ZalgoPromise {\n\n if (value instanceof ZalgoPromise) {\n return value;\n }\n\n if (isPromise(value)) {\n // $FlowFixMe\n return new ZalgoPromise((resolve, reject) => value.then(resolve, reject));\n }\n\n return new ZalgoPromise().resolve(value);\n }\n\n static reject(error : mixed) : ZalgoPromise {\n return new ZalgoPromise().reject(error);\n }\n\n static asyncReject(error : mixed) : ZalgoPromise {\n return new ZalgoPromise().asyncReject(error);\n }\n\n static all>(promises : X) : ZalgoPromise<$TupleMap(ZalgoPromise | Y) => Y>> { // eslint-disable-line no-undef\n\n let promise = new ZalgoPromise();\n let count = promises.length;\n let results = [];\n\n if (!count) {\n promise.resolve(results);\n return promise;\n }\n\n const chain = (i : number, firstPromise : ZalgoPromise, secondPromise : ZalgoPromise) => {\n return firstPromise.then(res => {\n results[i] = res;\n count -= 1;\n if (count === 0) {\n promise.resolve(results);\n }\n }, err => {\n secondPromise.reject(err);\n });\n };\n\n for (let i = 0; i < promises.length; i++) {\n let prom = promises[i];\n\n if (prom instanceof ZalgoPromise) {\n if (prom.resolved) {\n results[i] = prom.value;\n count -= 1;\n continue;\n }\n } else if (!isPromise(prom)) {\n results[i] = prom;\n count -= 1;\n continue;\n }\n\n chain(i, ZalgoPromise.resolve(prom), promise);\n }\n\n if (count === 0) {\n promise.resolve(results);\n }\n\n return promise;\n }\n\n static hash(promises : O) : ZalgoPromise<$ObjMap(ZalgoPromise | Y) => Y>> { // eslint-disable-line no-undef\n let result = {};\n \n return ZalgoPromise.all(Object.keys(promises).map(key => {\n return ZalgoPromise.resolve(promises[key]).then(value => {\n result[key] = value;\n });\n })).then(() => {\n return result;\n });\n }\n\n static map(items : Array, method : (T) => (ZalgoPromise | X)) : ZalgoPromise> {\n // $FlowFixMe\n return ZalgoPromise.all(items.map(method));\n }\n\n static onPossiblyUnhandledException(handler : (err : mixed) => void) : { cancel : () => void } {\n return onPossiblyUnhandledException(handler);\n }\n\n static try>(method : (...args : A) => (ZalgoPromise | Y), context : ?C, args : ?A) : ZalgoPromise {\n\n if (method && typeof method !== 'function' && !method.call) {\n throw new Error('Promise.try expected a function');\n }\n\n let result;\n\n startActive();\n \n try {\n // $FlowFixMe\n result = method.apply(context, args || []);\n } catch (err) {\n endActive();\n return ZalgoPromise.reject(err);\n }\n\n endActive();\n\n return ZalgoPromise.resolve(result);\n }\n\n static delay(delay : number) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n setTimeout(resolve, delay);\n });\n }\n\n static isPromise(value : mixed) : boolean {\n\n if (value && value instanceof ZalgoPromise) {\n return true;\n }\n\n return isPromise(value);\n }\n\n static flush() : ZalgoPromise {\n return awaitActive(ZalgoPromise);\n }\n}\n","/* @flow */\n\nexport { ZalgoPromise } from './promise';\n","/* @flow */\n\nimport { on, send } from 'post-robot/src';\nimport { isWindowClosed, getDomain, isSameDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { config } from '../config';\n\nimport { noop } from './util';\n\nexport function proxyMethod(name : string, win : ?CrossDomainWindowType, originalMethod : Function) : Function {\n\n if (win && getDomain() === config.paypalDomain && !isSameDomain(win)) {\n\n if (win) {\n send(win, `proxy_${ name }`, { originalMethod }).catch(noop);\n }\n\n return originalMethod;\n }\n\n let methods = [];\n\n on(`proxy_${ name }`, { domain: config.paypal_domain_regex }, ({ data }) => {\n methods.push(data.originalMethod);\n });\n\n return function postMessageProxy() : mixed {\n\n methods = methods.filter(method => !isWindowClosed(method.source));\n\n if (methods.length) {\n return methods[methods.length - 1].apply(this, arguments).catch(() => {\n return originalMethod.apply(this, arguments);\n });\n }\n\n return originalMethod.apply(this, arguments);\n };\n}\n","/* @flow */\n\nimport { CONFIG as POSTROBOT_CONFIG } from 'post-robot/src';\nimport { setTransport, getTransport, addPayloadBuilder, addHeaderBuilder, addMetaBuilder,\n addTrackingBuilder, init, logLevels, config as loggerConfig } from 'beaver-logger/client';\nimport { getParent, PROTOCOL } from 'cross-domain-utils/src';\n\nimport { config } from '../config';\nimport { FPTI, PAYMENT_TYPE } from '../constants';\n\nimport { getSessionID, getButtonSessionID } from './session';\nimport { proxyMethod } from './proxy';\nimport { once } from './util';\nimport { getQueryParam } from './dom';\nimport { isPayPalDomain } from './security';\n\nfunction getRefererDomain() : string {\n return (window.xchild && window.xchild.getParentDomain)\n ? window.xchild.getParentDomain()\n : window.location.host;\n}\n\nconst setupProxyLogTransport = once(() => {\n setTransport(proxyMethod('log', getParent(window), getTransport()));\n});\n\nfunction getToken() : ?string {\n if (window.root && window.root.token) {\n return window.root.token;\n }\n\n if (isPayPalDomain()) {\n const queryToken = getQueryParam('token');\n\n if (queryToken) {\n return queryToken;\n }\n }\n}\n\nexport function initLogger() {\n\n setupProxyLogTransport();\n\n addPayloadBuilder(() => {\n return {\n referer: getRefererDomain(),\n host: window.location.host,\n path: window.location.pathname,\n env: config.env,\n country: config.locale.country,\n lang: config.locale.lang,\n uid: getSessionID(),\n ver: __PAYPAL_CHECKOUT__.__MINOR_VERSION__\n };\n });\n\n addHeaderBuilder(() => {\n return {\n 'x-app-name': 'checkoutjs'\n };\n });\n\n addMetaBuilder(() => {\n return {\n state: config.state\n };\n });\n\n addTrackingBuilder((payload = {}) => {\n\n const sessionID = getSessionID();\n const paymentToken = getToken();\n const buttonSessionID = payload[FPTI.KEY.BUTTON_SESSION_UID] || getButtonSessionID();\n\n let contextType;\n let contextID;\n\n if (paymentToken) {\n contextType = FPTI.CONTEXT_TYPE[PAYMENT_TYPE.EC_TOKEN];\n contextID = paymentToken;\n } else if (buttonSessionID) {\n contextType = FPTI.CONTEXT_TYPE.BUTTON_SESSION_ID;\n contextID = buttonSessionID;\n } else {\n contextType = payload[FPTI.KEY.CONTEXT_TYPE];\n contextID = payload[FPTI.KEY.CONTEXT_ID];\n }\n\n return {\n [ FPTI.KEY.FEED ]: FPTI.FEED.CHECKOUTJS,\n [ FPTI.KEY.DATA_SOURCE ]: FPTI.DATA_SOURCE.CHECKOUT,\n [ FPTI.KEY.CONTEXT_TYPE ]: contextType,\n [ FPTI.KEY.CONTEXT_ID ]: contextID,\n [ FPTI.KEY.SELLER_ID ]: config.merchantID,\n [ FPTI.KEY.SESSION_UID ]: sessionID,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: buttonSessionID,\n [ FPTI.KEY.VERSION ]: config.version,\n [ FPTI.KEY.TOKEN ]: paymentToken,\n [ FPTI.KEY.REFERER ]: getRefererDomain()\n };\n });\n\n const prefix = 'ppxo';\n\n if (window.location.protocol !== PROTOCOL.FILE) {\n init({\n uri: config.loggerUrl,\n heartbeat: false,\n logPerformance: false,\n prefix,\n logLevel: __PAYPAL_CHECKOUT__.__DEFAULT_LOG_LEVEL__\n });\n }\n}\n\nexport function setLogLevel(logLevel : string) {\n\n if (logLevels.indexOf(logLevel) === -1) {\n throw new Error(`Invalid logLevel: ${ logLevel }`);\n }\n\n config.logLevel = logLevel;\n loggerConfig.logLevel = logLevel;\n POSTROBOT_CONFIG.LOG_LEVEL = logLevel;\n window.LOG_LEVEL = logLevel;\n}\n","/* @flow */\n\nimport { info, flush as flushLogs } from 'beaver-logger/client';\n\nimport { config } from '../config';\n\nimport { isIEIntranet, getUserAgent } from './device';\nimport { once } from './util';\n\nconst bowserCache = {};\n\nfunction getBowser() : Object {\n\n const userAgent = getUserAgent();\n\n if (bowserCache[userAgent]) {\n return bowserCache[userAgent];\n }\n\n delete require.cache[require.resolve('bowser/bowser.min')];\n const bowser = require('bowser/bowser.min');\n\n bowserCache[userAgent] = bowser;\n\n return bowser;\n}\n\nexport function getBrowser() : { browser? : string, version? : string } {\n\n const bowser = getBowser();\n\n for (const browser of Object.keys(config.SUPPORTED_BROWSERS)) {\n if (bowser[browser]) {\n return { browser, version: bowser.version };\n }\n }\n\n return {};\n}\n\nfunction isBrowserEligible() : boolean {\n\n if (isIEIntranet()) {\n return false;\n }\n\n const bowser = getBowser();\n const { browser, version } = getBrowser();\n\n if (browser && version && bowser.compareVersions([ version, config.SUPPORTED_BROWSERS[browser] ]) === -1) {\n return false;\n }\n\n return true;\n}\n\nconst eligibilityResults = {};\n\nexport function isEligible() : boolean {\n\n if (isIEIntranet()) {\n return false;\n }\n\n const userAgent = window.navigator.userAgent;\n\n if (userAgent && eligibilityResults.hasOwnProperty(userAgent)) {\n return eligibilityResults[userAgent];\n }\n\n const result = isBrowserEligible();\n\n eligibilityResults[userAgent] = result;\n\n return result;\n}\n\nexport const checkRecognizedBrowser = once((state : string) => {\n\n const { browser } = getBrowser();\n\n if (!browser) {\n const { name, version, mobile, android, ios } = getBowser();\n info(`unrecognized_browser_${ state }`, { name, version, mobile, android, ios });\n flushLogs();\n }\n});\n","/* @flow */\n\nimport { warn } from 'beaver-logger/client';\n\nimport { isIE, isIEIntranet, isIECompHeader } from './device';\n\nfunction logWarn(err) : void {\n if (window.console) {\n if (window.console.warn) {\n return window.console.warn(err);\n }\n\n if (window.console.log) {\n return window.console.log(err);\n }\n }\n}\n\nexport function checkForCommonErrors() {\n\n if (JSON.stringify([]) !== '[]') {\n // $FlowFixMe\n if (Array.prototype.toJSON) {\n logWarn(`Custom Array.prototype.toJSON is causing incorrect json serialization of arrays. This is likely to cause issues. Probable cause is Prototype.js`);\n } else {\n logWarn(`JSON.stringify is doing incorrect serialization of arrays. This is likely to cause issues.`);\n }\n\n warn(`json_stringify_array_broken`);\n }\n\n if (JSON.stringify({}) !== '{}') {\n logWarn(`JSON.stringify is doing incorrect serialization of objects. This is likely to cause issues.`);\n\n warn(`json_stringify_object_broken`);\n }\n\n if (isIEIntranet()) {\n warn(`ie_intranet_mode`);\n }\n\n if (isIE() && !isIECompHeader()) {\n warn(`ie_meta_compatibility_header_missing`, {\n message: `Drop tag: ` });\n }\n\n // eslint-disable-next-line no-unused-vars\n function foo(bar, baz, zomg) {\n // pass;\n }\n\n if (foo.bind({ a: 1 }).length !== 3) {\n warn(`function_bind_arrity_overwritten`);\n }\n\n if (window.opener && window.parent !== window) {\n warn(`window_has_opener_and_parent`);\n }\n\n if (window.name && window.name.indexOf('__prerender') === 0) {\n warn(`prerender_running_checkoutjs`);\n }\n\n const context = {};\n\n function returnContext() : typeof context {\n return this;\n }\n\n if (returnContext.bind(context)() !== context) {\n warn(`function_bind_broken`);\n }\n\n if (window.Window && window.constructor && window.Window !== window.constructor) {\n warn(`window_constructor_does_not_match_window`);\n }\n\n // $FlowFixMe\n if (Object.assign && JSON.stringify({ a: 1, b: 2, c: 3 }) !== JSON.stringify({ a: 1, b: 2, c: 3 })) { // eslint-disable-line no-self-compare, compat/compat\n warn(`object_assign_broken`);\n }\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { addPayloadBuilder } from 'beaver-logger/client';\nimport { type SameDomainWindowType } from 'cross-domain-utils/src';\n\ntype RequestOptionsType = {|\n url : string,\n method? : string,\n headers? : { [key : string] : string },\n json? : Object,\n data? : { [key : string] : string },\n body? : string,\n win? : SameDomainWindowType,\n timeout? : number\n|};\n\nconst HEADERS = {\n CONTENT_TYPE: 'content-type',\n ACCEPT: 'accept'\n};\n\nconst headerBuilders = [];\nconst corrids = [];\n\naddPayloadBuilder(() => {\n return {\n prev_corr_ids: corrids.join(',')\n };\n});\n\nfunction parseHeaders(rawHeaders : string = '') : { [string] : string } {\n const result = {};\n for (const line of rawHeaders.trim().split('\\n')) {\n const [ key, ...values ] = line.split(':');\n result[key.toLowerCase()] = values.join(':').trim();\n }\n return result;\n}\n\nexport function request({ url, method = 'get', headers = {}, json, data, body, win = window, timeout = 0 } : RequestOptionsType) : ZalgoPromise {\n\n if (url === '/demo/checkout/api/braintree/client-token/') {\n // $FlowFixMe\n return ZalgoPromise.resolve('eyJ2ZXJzaW9uIjoyLCJhdXRob3JpemF0aW9uRmluZ2VycHJpbnQiOiJjMDFhZmRkM2Y1OTJmNWVhNTNlMzE5MWQwYmIyMWVjYjM5NzNlZGM1MzkwNDZiMjJmNTA2ODEyNzIzZmRlMTJifGNsaWVudF9pZD1jbGllbnRfaWQkc2FuZGJveCQ0ZHByYmZjNnBoNTk1Y2NqXHUwMDI2Y3JlYXRlZF9hdD0yMDE3LTA0LTI2VDIzOjI2OjU5Ljg3OTA3ODYwNiswMDAwXHUwMDI2bWVyY2hhbnRfaWQ9M3cydHR2d2QyNDY1NDhoZCIsImNvbmZpZ1VybCI6Imh0dHBzOi8vYXBpLnNhbmRib3guYnJhaW50cmVlZ2F0ZXdheS5jb206NDQzL21lcmNoYW50cy8zdzJ0dHZ3ZDI0NjU0OGhkL2NsaWVudF9hcGkvdjEvY29uZmlndXJhdGlvbiIsImNoYWxsZW5nZXMiOltdLCJlbnZpcm9ubWVudCI6InNhbmRib3giLCJjbGllbnRBcGlVcmwiOiJodHRwczovL2FwaS5zYW5kYm94LmJyYWludHJlZWdhdGV3YXkuY29tOjQ0My9tZXJjaGFudHMvM3cydHR2d2QyNDY1NDhoZC9jbGllbnRfYXBpIiwiYXNzZXRzVXJsIjoiaHR0cHM6Ly9hc3NldHMuYnJhaW50cmVlZ2F0ZXdheS5jb20iLCJhdXRoVXJsIjoiaHR0cHM6Ly9hdXRoLnZlbm1vLnNhbmRib3guYnJhaW50cmVlZ2F0ZXdheS5jb20iLCJhbmFseXRpY3MiOnsidXJsIjoiaHR0cHM6Ly9jbGllbnQtYW5hbHl0aWNzLnNhbmRib3guYnJhaW50cmVlZ2F0ZXdheS5jb20vM3cydHR2d2QyNDY1NDhoZCJ9LCJ0aHJlZURTZWN1cmVFbmFibGVkIjpmYWxzZSwicGF5cGFsRW5hYmxlZCI6dHJ1ZSwicGF5cGFsIjp7ImRpc3BsYXlOYW1lIjoiYmFyY28uMDMtZmFjaWxpdGF0b3JAZ21haWwuY29tIiwiY2xpZW50SWQiOiJBV3VZdnFnMGtaN2Y5S0V4TVpqZU53T3RjQV8yZVhnOWpMZy1QSnBGX0pnYk44M0YyVml5aEdnV2JCNDg4RGU3MFpucGRBZEI2TUNqekNqSyIsInByaXZhY3lVcmwiOiJodHRwczovL2V4YW1wbGUuY29tIiwidXNlckFncmVlbWVudFVybCI6Imh0dHBzOi8vZXhhbXBsZS5jb20iLCJiYXNlVXJsIjoiaHR0cHM6Ly9hc3NldHMuYnJhaW50cmVlZ2F0ZXdheS5jb20iLCJhc3NldHNVcmwiOiJodHRwczovL2NoZWNrb3V0LnBheXBhbC5jb20iLCJkaXJlY3RCYXNlVXJsIjpudWxsLCJhbGxvd0h0dHAiOnRydWUsImVudmlyb25tZW50Tm9OZXR3b3JrIjpmYWxzZSwiZW52aXJvbm1lbnQiOiJvZmZsaW5lIiwidW52ZXR0ZWRNZXJjaGFudCI6ZmFsc2UsImJyYWludHJlZUNsaWVudElkIjoibWFzdGVyY2xpZW50MyIsImJpbGxpbmdBZ3JlZW1lbnRzRW5hYmxlZCI6dHJ1ZSwibWVyY2hhbnRBY2NvdW50SWQiOiJVU0QiLCJjdXJyZW5jeUlzb0NvZGUiOiJVU0QifSwiY29pbmJhc2VFbmFibGVkIjpmYWxzZSwibWVyY2hhbnRJZCI6IjN3MnR0dndkMjQ2NTQ4aGQiLCJ2ZW5tbyI6Im9mZiJ9');\n }\n\n return new ZalgoPromise((resolve, reject) => {\n\n if ((json && data) || (json && body) || (data && json)) {\n throw new Error(`Only options.json or options.data or options.body should be passed`);\n }\n\n const normalizedHeaders = {};\n\n for (const key of Object.keys(headers)) {\n normalizedHeaders[key.toLowerCase()] = headers[key];\n }\n\n if (json) {\n normalizedHeaders[HEADERS.CONTENT_TYPE] = normalizedHeaders[HEADERS.CONTENT_TYPE] || 'application/json';\n } else if (data || body) {\n normalizedHeaders[HEADERS.CONTENT_TYPE] = normalizedHeaders[HEADERS.CONTENT_TYPE] || 'application/x-www-form-urlencoded; charset=utf-8';\n }\n\n normalizedHeaders[HEADERS.ACCEPT] = normalizedHeaders[HEADERS.ACCEPT] || 'application/json';\n\n for (const headerBuilder of headerBuilders) {\n const builtHeaders = headerBuilder();\n\n for (const key of Object.keys(builtHeaders)) {\n normalizedHeaders[key.toLowerCase()] = builtHeaders[key];\n }\n }\n\n const xhr = new win.XMLHttpRequest();\n\n xhr.addEventListener('load', function xhrLoad() : void {\n\n const responseHeaders = parseHeaders(this.getAllResponseHeaders());\n const corrID = responseHeaders['paypal-debug-id'] || 'unknown';\n\n if (responseHeaders['paypal-debug-id']) {\n corrids.push(responseHeaders['paypal-debug-id']);\n }\n\n if (!this.status) {\n return reject(new Error(`Request to ${ method.toLowerCase() } ${ url } failed: no response status code. Correlation id: ${ corrID }`));\n }\n \n const contentType = responseHeaders['content-type'];\n const isJSON = contentType && (contentType.indexOf('application/json') === 0 || contentType.indexOf('text/json') === 0);\n let res = this.responseText;\n\n try {\n res = JSON.parse(this.responseText);\n } catch (err) {\n if (isJSON) {\n return reject(new Error(`Invalid json: ${ this.responseText }. Correlation id: ${ corrID }`));\n }\n }\n\n if (this.status >= 400) {\n let message = `Request to ${ method.toLowerCase() } ${ url } failed with ${ this.status } error. Correlation id: ${ corrID }`;\n\n if (res) {\n if (typeof res === 'object' && res !== null) {\n res = JSON.stringify(res, null, 4);\n }\n\n message = `${ message }\\n\\n${ res }\\n`;\n }\n\n return reject(new Error(message));\n }\n\n return resolve(res);\n\n }, false);\n\n xhr.addEventListener('error', function xhrError(evt) {\n const corrID = this.getResponseHeader('paypal-debug-id');\n reject(new Error(`Request to ${ method.toLowerCase() } ${ url } failed: ${ evt.toString() }. Correlation id: ${ corrID }`));\n }, false);\n\n xhr.open(method, url, true);\n\n for (const key in normalizedHeaders) {\n if (normalizedHeaders.hasOwnProperty(key)) {\n xhr.setRequestHeader(key, normalizedHeaders[key]);\n }\n }\n\n if (json) {\n body = JSON.stringify(json);\n } else if (data) {\n body = Object.keys(data).map(key => {\n return `${ encodeURIComponent(key) }=${ data ? encodeURIComponent(data[key]) : '' }`;\n }).join('&');\n }\n\n xhr.timeout = timeout;\n xhr.ontimeout = function xhrTimeout() {\n reject(new Error(`Request to ${ method.toLowerCase() } ${ url } has timed out`));\n };\n\n xhr.send(body);\n });\n}\n\nrequest.get = (url : string, options = {}) => {\n return request({ method: 'get', url, ...options });\n};\n\nrequest.post = (url : string, data, options = {}) => {\n return request({ method: 'post', url, data, ...options });\n};\n\nrequest.addHeaderBuilder = (method) => {\n headerBuilders.push(method);\n};\n","/* @flow */\n\nimport { info, track, flush as flushLogs } from 'beaver-logger/client';\n\nimport { FPTI } from '../constants';\n\nimport { match } from './util';\nimport { getStorageState, getStorageID } from './session';\n\ntype Throttle = {|\n isEnabled : () => boolean,\n isDisabled : () => boolean,\n getTreatment : () => string,\n log : (string, payload? : { [string] : ?string }) => Throttle,\n logStart : (payload? : { [string] : ?string }) => Throttle,\n logComplete : (payload? : { [string] : ?string }) => Throttle\n|};\n\nfunction getThrottlePercentile(name : string) : number {\n return getStorageState(storage => {\n storage.throttlePercentiles = storage.throttlePercentiles || {};\n storage.throttlePercentiles[name] = storage.throttlePercentiles[name] || Math.floor(Math.random() * 100);\n return storage.throttlePercentiles[name];\n });\n}\n\nconst THROTTLE_GROUP = {\n TEST: 'test',\n CONTROL: 'control',\n THROTTLE: 'throttle'\n};\n\nexport function getThrottle(name : string, sample : number, sticky : boolean = true) : Throttle {\n\n const uid = getStorageID();\n\n const percentile = sticky ? getThrottlePercentile(name) : Math.floor(Math.random() * 100);\n\n let group;\n\n if (percentile < sample) {\n group = THROTTLE_GROUP.TEST;\n } else if ((sample >= 50) || ((sample <= percentile) && (percentile < (sample * 2)))) {\n group = THROTTLE_GROUP.CONTROL;\n } else {\n group = THROTTLE_GROUP.THROTTLE;\n }\n\n const treatment = `${ name }_${ group }`;\n\n let started = false;\n let forced = false;\n\n try {\n if (window.localStorage && window.localStorage.getItem(name)) {\n forced = true;\n }\n } catch (err) {\n // pass\n }\n\n return {\n\n isEnabled() : boolean {\n return (group === THROTTLE_GROUP.TEST) || forced;\n },\n\n isDisabled() : boolean {\n return (group !== THROTTLE_GROUP.TEST) && !forced;\n },\n\n getTreatment() : string {\n return treatment;\n },\n\n log(checkpointName : string, payload? : { [string] : ?string } = {}) : Throttle {\n if (!started) {\n return this;\n }\n\n const checkpoint = `${ name }_${ treatment }_${ checkpointName }`;\n info(checkpoint, { ...payload, expuid: uid });\n\n track({\n [ FPTI.KEY.EXPERIMENT_NAME ]: name,\n [ FPTI.KEY.TREATMENT_NAME ]: treatment,\n ...payload\n });\n\n flushLogs();\n return this;\n },\n\n logStart(payload? : { [string] : ?string } = {}) : Throttle {\n started = true;\n return this.log(`start`, payload);\n },\n\n logComplete(payload? : { [string] : ?string } = {}) : Throttle {\n if (!started) {\n return this;\n }\n\n return this.log(`complete`, payload);\n }\n };\n}\n\nexport function getReturnToken() : ?string {\n\n const token = match(window.location.href, /token=((EC-)?[A-Z0-9]+)/);\n const payer = match(window.location.href, /PayerID=([A-Z0-9]+)/);\n\n if (token && payer) {\n return token;\n }\n}\n","/* @flow */\n\nimport { debug } from 'beaver-logger/client';\nimport { getDomain } from 'cross-domain-utils/src';\n\nimport { config } from '../config';\n\nimport { memoize, domainMatches } from './util';\n\nexport const getCurrentScript = memoize(() : ?HTMLScriptElement => {\n\n const scripts = Array.prototype.slice.call(document.getElementsByTagName('script'));\n\n for (const script of scripts) {\n if (script.src && (script.src.replace(/^https?:/, '').split('?')[0] === config.scriptUrl || script.hasAttribute('data-paypal-checkout'))) {\n return script;\n }\n\n if (script.src && (script.src.indexOf('paypal.checkout.v4.js') !== -1)) {\n return script;\n }\n }\n\n if (document.currentScript) { // eslint-disable-line compat/compat\n debug(`current_script_not_recognized`, { src: document.currentScript.src }); // eslint-disable-line compat/compat\n }\n});\n\nexport function isPayPalObjects() : boolean {\n return Boolean(getCurrentScript());\n}\n\nexport function getScriptVersion() : string {\n if (__PAYPAL_CHECKOUT__.__MAJOR__ && isPayPalObjects()) {\n return __MIN__ ? 'min' : __PAYPAL_CHECKOUT__.__MAJOR_VERSION__;\n } else {\n return __MIN__ ? `${ __PAYPAL_CHECKOUT__.__MINOR_VERSION__ }.min` : __PAYPAL_CHECKOUT__.__MINOR_VERSION__;\n }\n}\n\nexport function getCurrentScriptUrl() : string {\n const script = getCurrentScript();\n\n if (script && typeof script.src === 'string') {\n let scriptUrl = script.src;\n\n if (scriptUrl.indexOf('http://www.paypalobjects.com') === 0) {\n scriptUrl = scriptUrl.replace('http://', 'https://');\n }\n\n return scriptUrl;\n }\n\n return `https://www.paypalobjects.com/api/checkout.${ __PAYPAL_CHECKOUT__.__MINOR_VERSION__ }${ __MIN__ ? '.min' : '' }.js`;\n}\n\nexport function getDomainSetting(name : string, def : ?T) : ?T {\n\n const hostname = window.xchild\n ? window.xchild.getParentDomain()\n : getDomain();\n\n if (config.domain_settings) {\n for (const domain of Object.keys(config.domain_settings)) {\n if (domainMatches(hostname, domain)) {\n return config.domain_settings[domain][name];\n }\n }\n }\n\n return def;\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { once, bridge } from 'post-robot/src';\n\nimport { config } from '../config';\n\nimport { isIEIntranet } from './device';\nimport { memoize } from './util';\nimport { getScriptVersion } from './script';\nimport { extendUrl } from './dom';\n\ntype FrameMetaData = {|\n iframeEligible : boolean,\n iframeEligibleReason : string,\n // eslint-disable-next-line flowtype/no-mutable-array\n rememberedFunding : Array\n|};\n\nexport const openMetaFrame = memoize((env : string = config.env) : ZalgoPromise => {\n return ZalgoPromise.try(() => {\n\n if (isIEIntranet()) {\n return {\n iframeEligible: false,\n iframeEligibleReason: 'ie_intranet',\n rememberedFunding: []\n };\n }\n\n const metaFrameUrl : string = config.metaFrameUrls[env];\n const metaFrameDomain : string = config.paypalDomains[env];\n\n return ZalgoPromise.try(() => {\n if (!bridge) {\n throw new Error(`Opening meta window without bridge support is not currently supported`);\n }\n\n const metaListener = once('meta', { domain: metaFrameDomain });\n\n return bridge.openBridge(extendUrl(metaFrameUrl, { version: getScriptVersion() }), metaFrameDomain)\n .then(() => metaListener)\n .then(({ data }) => data);\n });\n });\n});\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { FUNDING } from '../constants';\nimport type { FundingSource, FundingList } from '../types';\n\nimport { getStorageState, getGlobalState, getSessionState } from './session';\nimport { isDevice } from './device';\nimport { openMetaFrame } from './meta';\nimport { identity } from './util';\n\n// $FlowFixMe\nexport function getRememberedFunding(handler? : (rememberedFunding : FundingList) => T = identity) : T {\n return getStorageState(storage => {\n storage.rememberedFunding = storage.rememberedFunding || [];\n return handler(storage.rememberedFunding);\n });\n}\n\nfunction hasRememberedFunding(source : FundingSource) : ?boolean {\n\n if (getRememberedFunding(rememberedFunding => rememberedFunding.indexOf(source) !== -1)) {\n return true;\n }\n\n if (getSessionState(session => session.recentlyCheckedRemembered)) {\n return true;\n }\n\n return false;\n}\n\n\nfunction isRememberedFunding(source : FundingSource) : boolean {\n\n if (getRememberedFunding(rememberedFunding => rememberedFunding.indexOf(source) !== -1)) {\n return true;\n }\n\n if (getSessionState(session => session.recentlyCheckedRemembered)) {\n return false;\n }\n\n throw new Error(`Can not find remembered funding result`);\n}\n\nfunction getRememberedFundingPromises() : { [FundingSource] : ZalgoPromise } {\n return getGlobalState(global => {\n global.rememberFundingPromises = global.rememberFundingPromises || {};\n return global.rememberFundingPromises;\n });\n}\n\nfunction getRememberedFundingPromise(source : FundingSource) : ZalgoPromise {\n const promises = getRememberedFundingPromises();\n const promise = promises[source] = promises[source] || new ZalgoPromise();\n if (hasRememberedFunding(source)) {\n promise.resolve(isRememberedFunding(source));\n }\n return promise;\n}\n\nfunction flushRememberedFundingPromises() {\n const promises = getRememberedFundingPromises();\n const rememberedFunding = getRememberedFunding(sources => sources);\n\n for (const source of Object.keys(promises)) {\n promises[source].resolve(rememberedFunding.indexOf(source) !== -1);\n }\n}\n\nexport function rememberFunding(sources : FundingList) {\n getRememberedFunding(rememberedFunding => {\n for (const source of sources) {\n\n if (source === FUNDING.VENMO && !isDevice()) {\n continue;\n }\n if (rememberedFunding.indexOf(source) === -1) {\n rememberedFunding.push(source);\n }\n }\n\n flushRememberedFundingPromises();\n });\n\n getSessionState(session => {\n session.recentlyCheckedRemembered = true;\n });\n}\n\nfunction loadMeta() : ZalgoPromise {\n return openMetaFrame().then(({ rememberedFunding }) => {\n rememberFunding(rememberedFunding || []);\n });\n}\n\nexport function isFundingRemembered(source : FundingSource = FUNDING.PAYPAL) : ZalgoPromise {\n\n if (hasRememberedFunding(source)) {\n return getRememberedFundingPromise(source);\n }\n\n return loadMeta().then(() => {\n return getRememberedFundingPromise(source);\n });\n}\n\nexport function precacheRememberedFunding() : ZalgoPromise {\n if (!getSessionState(session => session.recentlyCheckedRemembered)) {\n return loadMeta();\n }\n return ZalgoPromise.resolve();\n}\n","/* @flow */\n\nexport * from './device';\nexport * from './util';\nexport * from './logger';\nexport * from './eligibility';\nexport * from './errors';\nexport * from './dom';\nexport * from './http';\nexport * from './beacon';\nexport * from './throttle';\nexport * from './namespace';\nexport * from './session';\nexport * from './proxy';\nexport * from './meta';\nexport * from './funding';\nexport * from './script';\nexport * from './jsx';\nexport * from './security';\n","/* @flow weak */\n/* eslint max-lines: 0 */\n\nimport { ENV, COUNTRY, LANG, LOCALE } from '../constants';\n\nfunction getDefaultEnv() : $Values {\n if (__TEST__) {\n return ENV.TEST;\n }\n\n if (typeof window === 'undefined' || typeof window.location === 'undefined') {\n return ENV.PRODUCTION;\n }\n\n if (window.location.host.indexOf('localhost.paypal.com') !== -1) {\n return ENV.LOCAL;\n }\n\n if (window.location.host.indexOf('qa.paypal.com') !== -1) {\n return ENV.STAGE;\n }\n\n if (window.location.host.indexOf('sandbox.paypal.com') !== -1) {\n return ENV.SANDBOX;\n }\n\n return ENV.PRODUCTION;\n}\n\nexport const config = {\n\n locales: LOCALE,\n\n scriptUrl: __TEST__\n ? `//${ window.location.host }/base/src/load.js`\n : `//www.paypalobjects.com/api/${ __FILE_NAME__ }`,\n\n // eslint-disable-next-line security/detect-unsafe-regex, unicorn/no-unsafe-regex\n paypal_domain_regex: /^(https?|mock):\\/\\/[a-zA-Z0-9_.-]+\\.paypal\\.com(:\\d+)?$/,\n\n version: __PAYPAL_CHECKOUT__.__MINOR_VERSION__,\n\n cors: true,\n\n env: getDefaultEnv(),\n\n state: 'checkoutjs',\n\n locale: {\n country: COUNTRY.US,\n lang: LANG.EN\n },\n\n stage: 'msmaster',\n stageDomain: 'qa.paypal.com',\n\n get stageUrl() : string {\n return `${ config.stage }.${ config.stageDomain }`;\n },\n\n get apiStageUrl() : string {\n return `${ config.apiStage }.${ config.stageDomain }`;\n },\n\n get localhostUrl() : string {\n return `http://localhost.paypal.com:${ config.ports.default }`;\n },\n\n set localhostUrl(val) {\n delete this.localhostUrl;\n this.localhostUrl = val;\n },\n\n merchantID: '',\n authCode: '',\n\n logLevel: __PAYPAL_CHECKOUT__.__DEFAULT_LOG_LEVEL__,\n\n throttles: {\n v4_mobile_device: 0\n },\n\n domain_settings: {\n 'walmart.com': {\n ie_full_page: false,\n allow_full_page_fallback: true,\n memoize_payment: true,\n force_bridge: true,\n log_authorize: true\n },\n\n 'ulta.com': {\n disable_venmo: true\n },\n\n 'barnesandnoble.com': {\n disable_venmo: true\n },\n\n 'bn.com': {\n disable_venmo: true\n },\n\n 'agoratix.com': {\n disable_venmo: true\n },\n\n 'tractorsupply.com': {\n disable_venmo: true\n },\n\n 'etsy.com': {\n ie_full_page: false,\n allow_full_page_fallback: true,\n memoize_payment: true,\n force_bridge: true,\n log_authorize: true\n },\n\n 'ticketmaster.com': {\n disable_venmo: true\n },\n\n 'livenation.com': {\n disable_venmo: true\n },\n\n 'frontgatetickets.com': {\n disable_venmo: true\n },\n\n 'williams-sonoma.com': {\n disable_venmo: true\n },\n\n 'westelm.com': {\n disable_venmo: true\n },\n\n 'markandgraham.com': {\n disable_venmo: true\n },\n\n 'potterybarn.com': {\n disable_venmo: true\n },\n\n 'potterybarnkids.com': {\n disable_venmo: true\n },\n\n 'pbteen.com': {\n disable_venmo: true\n },\n\n 'beallsflorida.com': {\n disable_venmo: true\n },\n\n 'therealreal.com': {\n disable_venmo: true\n },\n\n 'liveaquaria.com': {\n disable_venmo: true\n },\n\n 'drsfostersmith.com': {\n disable_venmo: true\n },\n\n 'boxed.com': {\n disable_venmo: true\n },\n\n 'bevisible.com': {\n disable_venmo: true\n },\n\n 'moeller.org': {\n disable_venmo: true\n },\n\n 'searshometownstores.com': {\n disable_venmo: true\n },\n\n 'searshardwarestores.com': {\n disable_venmo: true\n },\n\n 'searshomeapplianceshowroom.com': {\n disable_venmo: true\n },\n\n 'barkshop.com': {\n disable_venmo: true\n },\n\n 'vividseats.com': {\n disable_venmo: true\n },\n\n 'getcargo.today': {\n disable_venmo: true\n },\n\n 'smartdestinations.com': {\n disable_venmo: true\n },\n\n 'philadelphiapass.com': {\n disable_venmo: true\n },\n\n 'thesydneypass.com': {\n disable_venmo: true\n },\n\n '3secondlash.com': {\n disable_venmo: true\n },\n\n 'newyorkpass.com': {\n disable_venmo: true\n },\n\n 'dndbeyond.com': {\n disable_venmo: true\n },\n\n 'app.zapbuy.it': {\n disable_venmo: true\n },\n\n 'gamersaloon.com': {\n disable_venmo: true\n },\n\n '1800contacts.com': {\n disable_venmo: true\n },\n\n 'shopchatters.ca': {\n disable_venmo: true\n },\n\n 'shopguyswin.ca': {\n disable_venmo: true\n },\n\n 'jjill.com': {\n disable_venmo: true\n },\n\n 'qvc.com': {\n disable_venmo: true\n },\n\n 'stelladot.com': {\n disable_venmo: true\n },\n\n 'keepcollective.com': {\n disable_venmo: true\n },\n\n 'everskin.com': {\n disable_venmo: true\n },\n\n 'zulily.com': {\n disable_venmo: true\n },\n\n 'freshly.com': {\n disable_venmo: true\n },\n\n 'buypeticare.com': {\n disable_venmo: true\n },\n\n 'getownzone.com': {\n disable_venmo: true\n },\n\n 'uncommongoods.com': {\n disable_venmo: true\n },\n\n 'onegold.com': {\n disable_venmo: true\n },\n\n 'universitytees.com': {\n disable_venmo: true\n },\n\n 'revolve.com': {\n disable_venmo: true\n },\n\n 'functionofbeauty.com': {\n disable_venmo: true\n },\n\n 'givebutter.com': {\n disable_venmo: true\n },\n\n 'hausmart.com': {\n disable_venmo: true\n },\n\n 'derbyjackpot.com': {\n disable_venmo: true\n },\n\n 'ancestry.com': {\n disable_venmo: true\n },\n\n 'boats.net': {\n disable_venmo: true\n },\n\n 'partzilla.com': {\n disable_venmo: true\n },\n\n 'firedog.com': {\n disable_venmo: true\n },\n\n 'chick-fil-a.com': {\n disable_venmo: true\n },\n\n 'roku.com': {\n disable_venmo: true\n },\n\n 'barkbox.com': {\n disable_venmo: true\n },\n\n 'neimanmarcus.com': {\n disable_venmo: true\n },\n\n 'lastcall.com': {\n disable_venmo: true\n },\n\n 'horchow.com': {\n disable_venmo: true\n },\n\n 'bergdorfgoodman.com': {\n disable_venmo: true\n },\n\n 'fwrd.com': {\n disable_venmo: true\n },\n\n 'plunderdesign.com': {\n disable_venmo: true\n },\n\n 'stitchfix.com': {\n disable_venmo: true\n },\n\n 'revzilla.com': {\n disable_venmo: true\n },\n\n 'cyclegear.com': {\n disable_venmo: true\n },\n\n 'chegg.com': {\n disable_venmo: true\n },\n\n 'youniqueproducts.com': {\n disable_venmo: true\n },\n\n 'archives.com': {\n disable_venmo: true\n },\n\n 'hautelook.com': {\n disable_venmo: true\n },\n\n 'nordstromrack.com': {\n disable_venmo: true\n },\n\n 'motherhoodcanada.ca': {\n disable_venmo: true\n },\n\n 'atomtickets.com': {\n disable_venmo: true\n },\n\n 'trademore.com': {\n disable_venmo: true\n },\n\n 'lasheaseoffer.com': {\n disable_venmo: true\n },\n\n 'rookie.paypalsixthman.com': {\n disable_venmo: true\n },\n\n '1800Contacts.com': {\n disable_venmo: true\n },\n\n 'hulu.com': {\n disable_venmo: true\n },\n\n 'grubhub.com': {\n disable_venmo: true\n },\n\n 'eat24.com': {\n disable_venmo: true\n },\n\n 'seamless.com': {\n disable_venmo: true\n },\n\n 'freshfeetscrubber.com': {\n disable_venmo: true\n },\n\n 'opensky.com': {\n disable_venmo: true\n },\n\n 'dotandbo.com': {\n disable_venmo: true\n },\n\n 'storenvy.com': {\n disable_venmo: true\n },\n\n 'gemafina.com': {\n disable_venmo: true\n },\n\n 'pickperfect.com': {\n disable_venmo: true\n },\n\n '55mulberry.com': {\n disable_venmo: true\n },\n \n 'hollar.com': {\n disable_venmo: true\n },\n\n 'bjs.com': {\n disable_venmo: true\n },\n\n 'playsugarhouse.com': {\n disable_venmo: true\n },\n\n 'lakeshorelearning.com': {\n disable_venmo: true\n },\n\n 'llmhq.com': {\n disable_venmo: true\n },\n\n 'gainful.com': {\n disable_venmo: true\n },\n\n 'modaoperandi.com': {\n disable_venmo: true\n },\n \n 'play.jackpocket.com': {\n disable_venmo: true\n },\n\n 'crepeerase.com': {\n disable_venmo: true\n },\n\n 'specificbeauty.com': {\n disable_venmo: true\n },\n\n 'meaningfulbeauty.com': {\n disable_venmo: true\n },\n\n 'smileactives.com ': {\n disable_venmo: true\n },\n\n 'mally.com': {\n disable_venmo: true\n },\n\n 'westmorebeauty.com': {\n disable_venmo: true\n },\n\n 'subd.com': {\n disable_venmo: true\n },\n\n 'seacalmskin.com': {\n disable_venmo: true\n },\n \n 'whittier.edu': {\n disable_venmo: true\n },\n \n 'curology.com': {\n disable_venmo: true\n },\n \n 'monoprice.com': {\n disable_venmo: true\n },\n \n 'dominos.com': {\n disable_venmo: true\n },\n \n 'audiobooks.com': {\n disable_venmo: true\n },\n \n '1aauto.com': {\n disable_venmo: true\n },\n\n 'greatwolf.com': {\n disable_venmo: true\n },\n\n 'cvs.com': {\n disable_venmo: true\n },\n\n 'gilt.com': {\n disable_venmo: true\n },\n\n 'ruelala.com': {\n disable_venmo: true\n }\n },\n\n creditTestDomains: [ 'bluesuncorp.co.uk', 'nationsphotolab.com', 'plexusworldwide.com', 'nshss.org', 'bissell.com', 'mobstub.com', 'vuoriclothing.com', 'tape4backup.com', 'avivamiento.com', 'rhododendron.org', 'whiterabbitjapan.com', 'atsracing.net', 'thehilltopgallery.com', 'weedtraqr.com', 'worldpantry.com', 'ciraconnect.com', 'mymalls.com', 'prowinch.com', 'zodiacpoolsystems.com', 'everlywell.com', 'candlewarmers.com', 'chop.edu', 'incruises.com', 'flikn.com', 'didforsale.com', 'mcc.org', 'sygu.net', 'merchbar.com', 'eduinconline.com', 'us.livebetterwith.com', 'bakemeawish.com', 'judolaunch.com', 'eventcartel.com', 'tapatalk.com', 'telescope.com', 'covenant.edu', 'aquatruwater.com', 'spingo.com', 'usu.edu', 'getcelerity.com', 'brandless.com', 'saberigniter.com', 'euromodeltrains.com', 'gofasttrader.com', 'megamodzplanet.com', 'draftanalyzer.com', 'lovewithoutboundaries.com', 'filterpop.com', 'seekverify.com', 'photoandgo.com', 'sightseeingpass.com', 'bigoanddukes.com', 'thethirstyduck.com', 'thebrushguys.com', '907delivery.com', 'mauisails.com', 'drive.net', 'channelmax.net', 'modernrebelco.com', 'enchanteddiamonds.com', 'ibabbleon.com', 'fullgenomes.com', 'conn-comp.com', 'wingware.com', 'paradigmgoods.com', 'theneptunegroup.com', 'kidzartworks.com', 'unirealm.com', 'ncfarmsinc.com', 'oneofakindantiques.com', 'servers4less.com', 'stumpthespread.com', 'marketwagon.com', 'monsterhouseplans.com', 'canterburychoral.org', 'teacupnordic.org', 'thethirstyduck.com', 'medialoot.com', 'theartistunion.com', 'yourglamourzone.com', 'breckstables.com', 'mackephotography.com', 'dsaj.org', 'massluminosity.com', 'tespa.org', 'versatilearts.net', 'yecup.org', 'divinebusinessmanagement.com', 'captivatebeautyservices.com', 'class4me.com', 'wcsonlineuniversity.com', 'pvplive.com', 'kyneteks.com', 'rare-paper.com', 'bpg.bpgsim.biz', 'geodegallery.com', 'way.com', 'kringle.com', 'talentedmrsalas.ph', 'litcharts.com', 'purpletreephotography.com', 'apache.org', 'neopackage.com', 'globaldance.tv', 'integral.studio', 'airdoctorpro.com', 'ivoryandiron.com', 'yuengling.com', 'averysbranchfarms.com', 'amberreinink.com', 'skinnymechocolate.com', 'bmbl.net', 'ncwatercolor.net', 'astrograph.com', 'localadventures.mx', 'ripcurl.com', 'worldfootbrakechallenge.com', 'shespeakssales.com', 'obrienguitars.com', 'jadenikkolephoto.com', 'americavoice.com', 'cassiexie.com', 'aamastateconvention.org', 'rellesflorist.com', 'passionnobby.com', 'bodybyheidi.com', 'roqos.com', 'prijector.com', 'maryswanson.net', 'tsghobbies.com', 'erinlaytonphotography.com', 'darter.org', 'fountainpenhospital.com', 'myzestfullife.com', 'pcog.org', 'alisabethdesigns.com', 'katiemathisphoto.com', 'strictlybellaphotography.com', 'maptools.com', 'sites.google.com', 'gallerr.com', 'southfloridatrikke.com', 'caviar.tv', 'mintingmasters.com', 'prospectorsguild.com', 'inktale.com', 'prettygirlgoods.com', 'laceycahill.com', 'daniellenowak.com', 't212.org', 'scmsinc.com', 'babypaloozanc.com', 'tetrisonline.com', 'grdd.net', 'cdspg.info', 'airshipapparel.com', 'waft.com', 'extendpets.com', 'supplyhub.com', 'hlbsusa.com', 'jaderollerbeauty.com', 'theparentingjunkie.com', 'schagringas.com', 'yourscribemate.com', 'sportscollectibles.com', 'thedivinenoise.com', 'hometeamsonline.com', 'trademarkpress.com', 'destinationenglish.us', 'jacquesflowers.com', 'aliszhatchphotography.com', 'rusticfoundry.com', 'ahhhmassage.net', 'frezzor.com', 'mandelininc.com', 'kayleejackson.com', 'monkinstitute.org', 'eddiebsbbq.com', 'morningstarmediaservices.com', 'kinevative.com', 'orivet.com', 'digitalprinthouse.net', 'dynamicgenius.com', 'allpartsusa.com', 'flowersbydavid.net', 'nwvoices.org', 'leaptrade.com', 'tulsaschoolpics.com', 'alioth.io', 'windowflair.com', 'vitcom.net', 'simplybeautifulfashions.com', 'christinabenton.com', 'fromthedaughter.com', 'hometowngraphics.net', 'fibanalysis.com', 'creativejobscentral.com', 'sandbox.gg', 'jt-digitalmedia.com', 'kodable.com', 'birthingstone.com', 'taranicholephoto.com', 'hillyfieldsflorist.com', 'charitynoelphoto.com', 'auxdelicesfoods.com', 'terilynnphotography.com', 'folieadeuxevents.com', 'karensfloral.com', 'montgomerydiveclub.com', 'rainbowplastics.com', 'confettionthedancefloor.com', 'vomozmedia.com', 'neatmod.com', 'getnaturafled.com', 'callingpost.com', 'iamfamily.org', 'pedigreeonline.com', 'typeboost.io', 'in-n-outpetdoor.com', 'nerdstockgc.com', 'keiadmin.com', 'createdbykaui.com', 'aikophoto.com', 'lonestar.ink', 'stlfurs.com', 'treasurelistings.com', 'thecubicle.us', 'redclaypaper.com', 'blushhousemedia.com', 'documentsanddesigns.com', 'whitneyleighphotography.shootproof.com', 'amaryllisday.com', 'hermanproav.com', 'felicemedia.com', 'withloveplacenta.com', 'store.brgadgets.co', 'klowephoto.com', 'spenceraustinconsulting.com', 'sno-eagles.org', 'dsatallahassee.org', 'bakupages.com', 'neswc.com', 'josiebrooksphotography.com', 'brisksale.com', 'legalwhoosh.com', 'jasmineeaster.com', 'swatstudios.com', 'facebook.com', 'shakershell.com', 'alexiswinslow.com', 'mixeddimensions.com', 'sweetpproductions.com', 'lbeaphotography.com', 'otlseatfillers.com', 'jdtickets.com', 'catholicar.com', 'masque.com', 'smalltownstudio.net', 'goherbalife.com', 'itzyourz.com', 'magazinespeedloader.com', 'dreammachines.io', 'dallasdieteticalliance.org', 'http:', 'medair.org', 'unbridledambition.com', 'sarasprints.com', 'wiperecord.com', 'showmyrabbit.com', 'cctrendsshop.com', 'rachelalessandra.com', 'otherworld-apothecary.com', 'melissaannphoto.com', 'girlceo.co', 'seasidemexico.com', 'telosid.com', 'instin.com', 'marinecorpsmustang.org', 'lancityconnect.com', 'hps1.org', 'karenware.com', 'livecurriculum.com', 'spellingstars.com', 'vektorfootball.com', 'zaltv.com', 'nebraskamayflower.org', 'ethiopianspices.com', 'immitranslate.com', 'rafaelmagic.com.com', 'bahc1.org', 'newenamel.com', 'bhchp.org', 'buybulkamerica.com', 'sourcepoint.com', 'squarestripsports.com', 'wix.com', 'wilderootsphotography.com', 'goodsalt.com', 'systemongrid.com', 'designmil.org', 'freshtrendhq.com', 'valisimofashions.com', 'buyneatly.com', 'getbeauty.us', 'intellimidia.com' ],\n \n customCountry: false,\n\n SUPPORTED_BROWSERS: {\n msie: '11',\n firefox: '30',\n chrome: '27',\n safari: '7',\n opera: '16',\n msedge: '12',\n samsungBrowser: '2.1',\n silk: '59.3',\n ucbrowser: '10.0.0.488',\n vivaldi: '1.91'\n },\n\n session_uid_lifetime: 5 * 60 * 1000,\n\n _apiStage: '',\n\n get apiStage() : string {\n return config._apiStage || config.stage;\n },\n\n set apiStage(value) {\n config._apiStage = value;\n },\n\n ports: {\n default: 8000,\n button: 8000,\n checkout: 8000,\n guest: 8001,\n altpay: 3000\n },\n\n get paypalUrls() : Object {\n return {\n [ ENV.LOCAL ]: config.localhostUrl,\n [ ENV.STAGE ]: `https://www.${ config.stageUrl }`,\n [ ENV.SANDBOX ]: `https://www.sandbox.paypal.com`,\n [ ENV.PRODUCTION ]: `https://www.paypal.com`,\n [ ENV.TEST ]: `${ window.location.protocol }//${ window.location.host }`,\n [ ENV.DEMO ]: `${ window.location.protocol }//localhost.paypal.com:${ window.location.port }`\n };\n },\n\n get paypalDomains() : Object {\n return {\n [ ENV.LOCAL ]: 'http://localhost.paypal.com:8000',\n [ ENV.STAGE ]: `https://www.${ config.stageUrl }`,\n [ ENV.SANDBOX ]: `https://www.sandbox.paypal.com`,\n [ ENV.PRODUCTION ]: `https://www.paypal.com`,\n [ ENV.TEST ]: `mock://www.paypal.com`,\n [ ENV.DEMO ]: `${ window.location.protocol }//localhost.paypal.com:${ window.location.port }`\n };\n },\n\n get wwwApiUrls() : Object {\n return {\n [ ENV.LOCAL ]: `https://www.${ config.stageUrl }`,\n [ ENV.STAGE ]: `https://www.${ config.stageUrl }`,\n [ ENV.SANDBOX ]: `https://www.sandbox.paypal.com`,\n [ ENV.PRODUCTION ]: `https://www.paypal.com`,\n [ ENV.TEST ]: `${ window.location.protocol }//${ window.location.host }`\n };\n },\n\n get corsApiUrls() : Object {\n return {\n [ ENV.LOCAL ]: `https://${ config.apiStageUrl }:12326`,\n [ ENV.STAGE ]: `https://${ config.apiStageUrl }:12326`,\n [ ENV.SANDBOX ]: `https://cors.api.sandbox.paypal.com`,\n [ ENV.PRODUCTION ]: `https://cors.api.paypal.com`,\n [ ENV.TEST ]: `${ window.location.protocol }//${ window.location.host }`\n };\n },\n\n get apiUrls() : Object {\n\n const domain = `${ window.location.protocol }//${ window.location.host }`;\n const corsApiUrls = config.corsApiUrls;\n const wwwApiUrls = config.wwwApiUrls;\n\n return {\n [ ENV.LOCAL ]: domain === wwwApiUrls.local ? wwwApiUrls.local : corsApiUrls.local,\n [ ENV.STAGE ]: domain === wwwApiUrls.stage ? wwwApiUrls.stage : corsApiUrls.stage,\n [ ENV.SANDBOX ]: domain === wwwApiUrls.sandbox ? wwwApiUrls.sandbox : corsApiUrls.sandbox,\n [ ENV.PRODUCTION ]: domain === wwwApiUrls.production ? wwwApiUrls.production : corsApiUrls.production,\n [ ENV.TEST ]: domain === wwwApiUrls.test ? wwwApiUrls.test : corsApiUrls.test\n };\n },\n\n get checkoutUri() : ?string {\n return null;\n },\n\n set checkoutUri(val) {\n delete this.checkoutUri;\n this.checkoutUri = val;\n },\n\n get checkoutUris() : Object {\n if (config.checkoutUri) {\n return {\n [ ENV.LOCAL ]: config.checkoutUri,\n [ ENV.STAGE ]: config.checkoutUri,\n [ ENV.SANDBOX ]: config.checkoutUri,\n [ ENV.PRODUCTION ]: config.checkoutUri,\n [ ENV.TEST ]: config.checkoutUri,\n [ ENV.DEMO ]: config.checkoutUri\n };\n }\n\n return {\n [ ENV.LOCAL ]: `/webapps/hermes`,\n [ ENV.STAGE ]: `/webapps/hermes`,\n [ ENV.SANDBOX ]: `/checkoutnow`,\n [ ENV.PRODUCTION ]: `/checkoutnow`,\n [ ENV.TEST ]: `/base/test/windows/checkout/index.htm?checkouturl=true`,\n [ ENV.DEMO ]: `/demo/dev/checkout.htm`\n };\n },\n\n altpayUris: {\n [ ENV.LOCAL ]: `/latinumcheckout`,\n [ ENV.STAGE ]: `/latinumcheckout`,\n [ ENV.SANDBOX ]: `/latinumcheckout`,\n [ ENV.PRODUCTION ]: `/latinumcheckout`,\n [ ENV.TEST ]: `/base/test/windows/checkout/index.htm?checkouturl=true`,\n [ ENV.DEMO ]: `/demo/dev/checkout.htm`\n },\n\n guestUris: {\n [ ENV.LOCAL ]: `/webapps/xoonboarding`,\n [ ENV.STAGE ]: `/webapps/xoonboarding`,\n [ ENV.SANDBOX ]: `/webapps/xoonboarding`,\n [ ENV.PRODUCTION ]: `/webapps/xoonboarding`,\n [ ENV.TEST ]: `/base/test/windows/checkout/index.htm?guesturl=true`,\n [ ENV.DEMO ]: `/demo/dev/guest.htm`\n },\n\n billingUris: {\n [ ENV.LOCAL ]: `/webapps/hermes/agreements`,\n [ ENV.STAGE ]: `/webapps/hermes/agreements`,\n [ ENV.SANDBOX ]: `/agreements/approve`,\n [ ENV.PRODUCTION ]: `/agreements/approve`,\n [ ENV.TEST ]: `/base/test/windows/checkout/index.htm?billingurl=true`,\n [ ENV.DEMO ]: `/demo/dev/checkout.htm`\n },\n\n buttonUris: {\n [ ENV.LOCAL ]: `/smart/button`,\n [ ENV.STAGE ]: `/smart/button`,\n [ ENV.SANDBOX ]: `/smart/button`,\n [ ENV.PRODUCTION ]: `/smart/button`,\n [ ENV.TEST ]: `/base/test/windows/button/index.htm`,\n [ ENV.DEMO ]: `/demo/dev/button.htm`\n },\n\n inlinedCardFieldUris: {\n [ ENV.LOCAL ]: `/smart/card-fields`,\n [ ENV.STAGE ]: `/smart/card-fields`,\n [ ENV.SANDBOX ]: `/smart/card-fields`,\n [ ENV.PRODUCTION ]: `/smart/card-fields`,\n [ ENV.TEST ]: `/base/test/windows/card-fields/index.htm`,\n [ ENV.DEMO ]: `/demo/dev/card.htm`\n },\n\n postBridgeUris: {\n [ ENV.LOCAL ]: `/webapps/hermes/component-meta`,\n [ ENV.STAGE ]: `/webapps/hermes/component-meta`,\n [ ENV.SANDBOX ]: `/webapps/hermes/component-meta`,\n [ ENV.PRODUCTION ]: `/webapps/hermes/component-meta`,\n [ ENV.TEST ]: `/base/test/windows/component-meta/index.htm`,\n [ ENV.DEMO ]: `/demo/dev/bridge.htm`\n },\n\n legacyCheckoutUris: {\n [ ENV.LOCAL ]: `/cgi-bin/webscr?cmd=_express-checkout&xo_node_fallback=true`,\n [ ENV.STAGE ]: `/cgi-bin/webscr?cmd=_express-checkout&xo_node_fallback=true`,\n [ ENV.SANDBOX ]: `/cgi-bin/webscr?cmd=_express-checkout&xo_node_fallback=true`,\n [ ENV.PRODUCTION ]: `/cgi-bin/webscr?cmd=_express-checkout&xo_node_fallback=true`,\n [ ENV.TEST ]: `#fallback`\n },\n\n buttonJSUrls: {\n [ ENV.LOCAL ]: `https://www.paypalobjects.com/api/button.js`,\n [ ENV.STAGE ]: `https://www.paypalobjects.com/api/button.js`,\n [ ENV.SANDBOX ]: `https://www.paypalobjects.com/api/button.js`,\n [ ENV.PRODUCTION ]: `https://www.paypalobjects.com/api/button.js`,\n [ ENV.TEST ]: `/base/test/lib/button.js`,\n [ ENV.DEMO ]: `https://www.paypalobjects.com/api/button.js`\n },\n\n get buttonJSUrl() : string {\n return config.buttonJSUrls[config.env];\n },\n\n loginUri: `/signin/`,\n\n hermesLoggerUri: `/webapps/hermes/api/logger`,\n\n loggerUri: `/xoplatform/logger/api/logger`,\n\n loggerThrottlePercentage: 1.0, // 100%\n\n pptmUri: `/tagmanager/pptm.js`,\n\n get postBridgeUri() : string {\n return `${ config.postBridgeUris[config.env] }?xcomponent=1`;\n },\n\n paymentStandardUri: `/webapps/xorouter?cmd=_s-xclick`,\n\n authApiUri: `/v1/oauth2/token`,\n paymentApiUri: `/v1/payments/payment`,\n orderApiUri: `/v2/checkout/orders`,\n billingApiUri: `/v1/billing-agreements/agreement-tokens`,\n experienceApiUri: `/v1/payment-experience/web-profiles`,\n trackingApiUri: `/v1/risk/transaction-contexts`,\n\n get checkoutUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local }${ config.checkoutUris.local.replace(`:${ config.ports.default }`, `:${ config.ports.checkout }`) }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.checkoutUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.checkoutUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.checkoutUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.checkoutUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.test }${ config.checkoutUris.demo }`\n };\n },\n\n get guestUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local.replace(`:${ config.ports.default }`, `:${ config.ports.guest }`) }${ config.guestUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.guestUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.guestUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.guestUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.guestUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.test }${ config.guestUris.demo }`\n };\n },\n\n get altpayUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local.replace(`:${ config.ports.default }`, `:${ config.ports.altpay }`) }${ config.altpayUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.altpayUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.altpayUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.altpayUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.altpayUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.test }${ config.altpayUris.demo }`\n };\n },\n\n get billingUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local.replace(`:${ config.ports.default }`, `:${ config.ports.checkout }`) }${ config.billingUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.billingUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.billingUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.billingUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.billingUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.test }${ config.billingUris.demo }`\n };\n },\n\n get buttonUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local.replace(`:${ config.ports.default }`, `:${ config.ports.button }`) }${ config.buttonUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.buttonUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.buttonUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.buttonUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.buttonUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.demo }${ config.buttonUris.demo }`\n };\n },\n\n get inlinedCardFieldUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local.replace(`:${ config.ports.default }`, `:${ config.ports.button }`) }${ config.inlinedCardFieldUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.inlinedCardFieldUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.inlinedCardFieldUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.inlinedCardFieldUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.inlinedCardFieldUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.demo }${ config.inlinedCardFieldUris.demo }`\n };\n },\n\n get loginUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.stage }${ config.loginUri }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.loginUri }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.loginUri }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.loginUri }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.loginUri }`\n };\n },\n\n get paymentsStandardUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local }${ config.paymentStandardUri }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.paymentStandardUri }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.paymentStandardUri }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.paymentStandardUri }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.paymentStandardUri }`\n };\n },\n\n get metaFrameUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local }${ config.postBridgeUri }&env=local`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.postBridgeUri }&env=stage&stage=${ config.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.postBridgeUri }&env=sandbox`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.postBridgeUri }&env=production`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.postBridgeUri }&env=test`,\n [ ENV.DEMO ]: `${ paypalUrls.demo }${ config.postBridgeUri }&env=demo`\n };\n },\n\n get legacyCheckoutUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.stage }${ config.legacyCheckoutUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.legacyCheckoutUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.legacyCheckoutUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.legacyCheckoutUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.legacyCheckoutUris.test }`\n };\n },\n\n get authApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const authApiUri = config.authApiUri;\n\n return {\n [ ENV.LOCAL ]: `${ apiUrls.local }${ authApiUri }`,\n [ ENV.STAGE ]: `${ apiUrls.stage }${ authApiUri }`,\n [ ENV.SANDBOX ]: `${ apiUrls.sandbox }${ authApiUri }`,\n [ ENV.PRODUCTION ]: `${ apiUrls.production }${ authApiUri }`,\n [ ENV.TEST ]: `${ apiUrls.test }${ authApiUri }`\n };\n },\n\n get paymentApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const paymentApiUri = config.paymentApiUri;\n\n return {\n [ ENV.LOCAL ]: `${ apiUrls.local }${ paymentApiUri }`,\n [ ENV.STAGE ]: `${ apiUrls.stage }${ paymentApiUri }`,\n [ ENV.SANDBOX ]: `${ apiUrls.sandbox }${ paymentApiUri }`,\n [ ENV.PRODUCTION ]: `${ apiUrls.production }${ paymentApiUri }`,\n [ ENV.TEST ]: `${ apiUrls.test }${ paymentApiUri }`\n };\n },\n\n get orderApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const orderApiUri = config.orderApiUri;\n\n return {\n [ENV.LOCAL]: `${ apiUrls.local }${ orderApiUri }`,\n [ENV.STAGE]: `${ apiUrls.stage }${ orderApiUri }`,\n [ENV.SANDBOX]: `${ apiUrls.sandbox }${ orderApiUri }`,\n [ENV.PRODUCTION]: `${ apiUrls.production }${ orderApiUri }`,\n [ENV.TEST]: `${ apiUrls.test }${ orderApiUri }`\n };\n },\n\n get billingApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const billingApiUri = config.billingApiUri;\n\n return {\n [ ENV.LOCAL ]: `${ apiUrls.local }${ billingApiUri }`,\n [ ENV.STAGE ]: `${ apiUrls.stage }${ billingApiUri }`,\n [ ENV.SANDBOX ]: `${ apiUrls.sandbox }${ billingApiUri }`,\n [ ENV.PRODUCTION ]: `${ apiUrls.production }${ billingApiUri }`,\n [ ENV.TEST ]: `${ apiUrls.test }${ billingApiUri }`\n };\n },\n\n get experienceApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const experienceApiUri = config.experienceApiUri;\n\n return {\n [ ENV.LOCAL ]: `${ apiUrls.local }${ experienceApiUri }`,\n [ ENV.STAGE ]: `${ apiUrls.stage }${ experienceApiUri }`,\n [ ENV.SANDBOX ]: `${ apiUrls.sandbox }${ experienceApiUri }`,\n [ ENV.PRODUCTION ]: `${ apiUrls.production }${ experienceApiUri }`,\n [ ENV.TEST ]: `${ apiUrls.test }${ experienceApiUri }`\n };\n },\n\n get trackingApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const trackingApiUri = config.trackingApiUri;\n\n return {\n [ ENV.LOCAL ]: `${ apiUrls.local }${ trackingApiUri }`,\n [ ENV.STAGE ]: `${ apiUrls.stage }${ trackingApiUri }`,\n [ ENV.SANDBOX ]: `${ apiUrls.sandbox }${ trackingApiUri }`,\n [ ENV.PRODUCTION ]: `${ apiUrls.production }${ trackingApiUri }`,\n [ ENV.TEST ]: `${ apiUrls.test }${ trackingApiUri }`\n };\n },\n\n _paypalUrl: '',\n\n get paypalUrl() : string {\n return this._paypalUrl || config.paypalUrls[config.env];\n },\n\n set paypalUrl(value) {\n this._paypalUrl = value;\n },\n\n get paypalDomain() : string {\n return config.paypalDomains[config.env];\n },\n\n get corsApiUrl() : string {\n return config.corsApiUrls[config.env];\n },\n\n get wwwApiUrl() : string {\n return config.wwwApiUrls[config.env];\n },\n\n get apiUrl() : string {\n\n const domain = `${ window.location.protocol }//${ window.location.host }`;\n const corsApiUrl = config.corsApiUrl;\n const wwwApiUrl = config.wwwApiUrl;\n\n return domain === wwwApiUrl ? wwwApiUrl : corsApiUrl;\n },\n\n get checkoutUrl() : string {\n return `${ config.paypalUrl }${ config.checkoutUris[config.env] }`;\n },\n\n get billingUrl() : string {\n return `${ config.paypalUrl }${ config.billingUris[config.env] }`;\n },\n\n get buttonUrl() : string {\n return `${ config.paypalUrl }${ config.buttonUris[config.env] }`;\n },\n\n get legacyCheckoutUrl() : string {\n return config.legacyCheckoutUrls[config.env];\n },\n\n get postBridgeUrl() : string {\n return `${ config.paypalUrl }${ config.postBridgeUri }`;\n },\n\n get postBridgeDomain() : string {\n return `${ config.paypalDomain }`;\n },\n\n get loggerUrl() : string {\n const isTestExperiment = Math.random() < config.loggerThrottlePercentage;\n const loggerUrl = isTestExperiment ? config.loggerUri : config.hermesLoggerUri;\n\n return `${ config.paypalUrl }${ loggerUrl }`;\n },\n\n get pptmUrl() : string {\n return `${ config.paypalUrls[config.env] }${ config.pptmUri }`;\n },\n\n get authApiUrl() : string {\n return `${ config.apiUrl }${ config.authApiUri }`;\n },\n\n get paymentApiUrl() : string {\n return `${ config.apiUrl }${ config.paymentApiUri }`;\n },\n\n get orderApiUrl() : string {\n return `${ config.apiUrl }${ config.orderApiUri }`;\n },\n\n get billingApiUrl() : string {\n return `${ config.apiUrl }${ config.billingApiUri }`;\n },\n\n get experienceApiUrl() : string {\n return `${ config.apiUrl }${ config.experienceApiUri }`;\n },\n\n defaultLocale: {\n country: COUNTRY.US,\n lang: LANG.EN\n }\n};\n","/* @flow */\n\nexport * from './config';\n","\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nexport function extend(dest, src, over=true) {\n dest = dest || {};\n src = src || {};\n\n for (let i in src) {\n if (src.hasOwnProperty(i)) {\n if (over || !dest.hasOwnProperty(i)) {\n dest[i] = src[i];\n }\n }\n }\n\n return dest;\n}\n\nexport function isSameProtocol(url) {\n return window.location.protocol === url.split('/')[0];\n}\n\nexport function isSameDomain(url) {\n let match = url.match(/https?:\\/\\/[^/]+/);\n\n if (!match) {\n return true;\n }\n\n return match[0] === `${window.location.protocol}//${window.location.host}`;\n}\n\nexport function ajax(method, url, headers={}, data={}, { fireAndForget = false } = {}) {\n\n return new ZalgoPromise(resolve => {\n let XRequest = window.XMLHttpRequest || window.ActiveXObject;\n\n if (window.XDomainRequest && !isSameDomain(url)) {\n\n if (!isSameProtocol(url)) {\n return resolve();\n }\n\n XRequest = window.XDomainRequest;\n }\n\n let req = new XRequest('MSXML2.XMLHTTP.3.0');\n req.open(method.toUpperCase(), url, true);\n\n if (typeof req.setRequestHeader === 'function') {\n req.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n req.setRequestHeader('Content-type', 'application/json');\n\n for (let headerName in headers) {\n if (headers.hasOwnProperty(headerName)) {\n req.setRequestHeader(headerName, headers[headerName]);\n }\n }\n }\n\n if (fireAndForget) {\n resolve();\n } else {\n req.onreadystatechange = () => {\n if (req.readyState > 3) {\n resolve();\n }\n };\n }\n\n req.send(JSON.stringify(data).replace(/&/g, '%26'));\n });\n}\n\nexport function promiseDebounce(method, interval) {\n\n let debounce = {};\n\n return function() {\n let args = arguments;\n\n if (debounce.timeout) {\n clearTimeout(debounce.timeout);\n delete debounce.timeout;\n }\n\n debounce.timeout = setTimeout(() => {\n\n let resolver = debounce.resolver;\n let rejector = debounce.rejector;\n\n delete debounce.promise;\n delete debounce.resolver;\n delete debounce.rejector;\n delete debounce.timeout;\n\n return ZalgoPromise.resolve().then(() => {\n return method.apply(null, args);\n }).then(resolver, rejector);\n\n }, interval);\n\n debounce.promise = debounce.promise || new ZalgoPromise((resolver, rejector) => {\n debounce.resolver = resolver;\n debounce.rejector = rejector;\n });\n\n return debounce.promise;\n };\n}\n\nexport function onWindowReady() : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n if (typeof document !== 'undefined' && document.readyState === 'complete') {\n resolve();\n }\n\n window.addEventListener('load', resolve);\n });\n}\n\nexport function safeInterval(method, time) {\n\n let timeout;\n\n function loop() {\n timeout = setTimeout(() => {\n method();\n loop();\n }, time);\n }\n\n loop();\n\n return {\n cancel() {\n clearTimeout(timeout);\n }\n };\n}\n\nexport function uniqueID() {\n let chars = '0123456789abcdef';\n\n return 'xxxxxxxxxx'.replace(/./g, () => {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n });\n}\n\nexport function isIE() {\n return Boolean(window.document.documentMode);\n}\n","\nexport let payloadBuilders = [];\nexport let metaBuilders = [];\nexport let trackingBuilders = [];\nexport let headerBuilders = [];\n\nexport function addPayloadBuilder(builder) {\n payloadBuilders.push(builder);\n}\n\nexport function addMetaBuilder(builder) {\n metaBuilders.push(builder);\n}\n\nexport function addTrackingBuilder(builder) {\n trackingBuilders.push(builder);\n}\n\nexport function addHeaderBuilder(builder) {\n headerBuilders.push(builder);\n}","\nexport let config = {\n\n uri: '',\n prefix: '',\n\n initial_state_name: 'init',\n\n flushInterval: 10 * 60 * 1000,\n debounceInterval: 10,\n\n sizeLimit: 300,\n\n // Supress `console.log`s when `true`\n // Recommended for production usage\n silent: false,\n\n heartbeat: true,\n heartbeatConsoleLog: true,\n heartbeatInterval: 5000,\n heartbeatTooBusy: false,\n heartbeatTooBusyThreshold: 10000,\n\n logLevel: 'warn',\n\n autoLog: ['warn', 'error'],\n\n logUnload: true,\n logPerformance: true\n};\n\nexport let logLevels = [ 'error', 'warn', 'info', 'debug' ];\n","\nimport { extend, promiseDebounce, ajax, isIE } from './util';\nimport { payloadBuilders, metaBuilders, trackingBuilders, headerBuilders } from './builders';\nimport { config, logLevels } from './config';\n\nexport let buffer = [];\nexport let tracking = [];\n\nlet transport = (headers, data, options) => {\n return ajax('post', config.uri, headers, data, options);\n}\n\nexport function getTransport() {\n return transport;\n}\n\nexport function setTransport(newTransport) {\n transport = newTransport;\n}\n\nlet loaded = false;\n\nsetTimeout(() => {\n loaded = true;\n}, 1);\n\nexport function print(level, event, payload) {\n\n if (typeof window === 'undefined' || !window.console || !window.console.log) {\n return;\n }\n\n if (!loaded) {\n return setTimeout(() => print(level, event, payload), 1);\n }\n\n let logLevel = config.logLevel;\n\n if (window.LOG_LEVEL) {\n logLevel = window.LOG_LEVEL;\n }\n\n if (logLevels.indexOf(level) > logLevels.indexOf(logLevel)) {\n return;\n }\n\n payload = payload || {};\n\n let args = [event];\n\n if(isIE()){\n payload = JSON.stringify(payload);\n }\n\n args.push(payload);\n\n if (payload.error || payload.warning) {\n args.push('\\n\\n', payload.error || payload.warning);\n }\n\n try {\n if (window.console[level] && window.console[level].apply) {\n window.console[level].apply(window.console, args);\n } else if (window.console.log && window.console.log.apply) {\n window.console.log.apply(window.console, args);\n }\n } catch (err) {\n // pass\n }\n}\n\nexport function immediateFlush({ fireAndForget = false } = {}) {\n\n if (typeof window === 'undefined') {\n return;\n }\n\n if (!config.uri) {\n return;\n }\n\n let hasBuffer = buffer.length;\n let hasTracking = tracking.length;\n\n if (!hasBuffer && !hasTracking) {\n return;\n }\n\n let meta = {};\n\n for (let builder of metaBuilders) {\n try {\n extend(meta, builder(meta), false);\n } catch (err) {\n console.error('Error in custom meta builder:', err.stack || err.toString());\n }\n }\n\n let headers = {};\n\n for (let builder of headerBuilders) {\n try {\n extend(headers, builder(headers), false);\n } catch (err) {\n console.error('Error in custom header builder:', err.stack || err.toString());\n }\n }\n\n let events = buffer;\n\n let req = transport(headers, {\n events,\n meta,\n tracking\n }, {\n fireAndForget\n });\n\n buffer = [];\n tracking = [];\n\n return req;\n}\n\nexport let flush = promiseDebounce(immediateFlush, config.debounceInterval);\n\n\nfunction enqueue(level, event, payload) {\n\n buffer.push({\n level,\n event,\n payload\n });\n\n if (config.autoLog.indexOf(level) > -1) {\n flush();\n }\n}\n\n\nexport function log(level, event, payload) {\n\n if (typeof window === 'undefined') {\n return;\n }\n\n if (config.prefix) {\n event = `${config.prefix}_${event}`;\n }\n\n payload = payload || {};\n\n if (typeof payload === 'string') {\n payload = {\n message: payload\n };\n } else if (payload instanceof Error) {\n payload = {\n error: payload.stack || payload.toString()\n }\n }\n\n try {\n JSON.stringify(payload);\n } catch (err) {\n return;\n }\n\n payload.timestamp = Date.now();\n\n for (let builder of payloadBuilders) {\n try {\n extend(payload, builder(payload), false);\n } catch (err) {\n console.error('Error in custom payload builder:', err.stack || err.toString());\n }\n }\n\n if (!config.silent) {\n print(level, event, payload);\n }\n\n if (buffer.length === config.sizeLimit) {\n enqueue('info', 'logger_max_buffer_length');\n }\n else if (buffer.length < config.sizeLimit) {\n enqueue(level, event, payload);\n }\n}\n\nexport function prefix(name) {\n\n return {\n debug(event, payload) {\n return log('debug', `${name}_${event}`, payload);\n },\n\n info(event, payload) {\n return log('info', `${name}_${event}`, payload);\n },\n\n warn(event, payload) {\n return log('warn', `${name}_${event}`, payload);\n },\n\n error(event, payload) {\n return log('error', `${name}_${event}`, payload);\n },\n\n track(payload) {\n return track(payload);\n },\n\n flush() {\n return flush();\n }\n };\n}\n\nexport function debug(event, payload) {\n return log('debug', event, payload);\n}\n\nexport function info(event, payload) {\n return log('info', event, payload);\n}\n\nexport function warn(event, payload) {\n return log('warn', event, payload);\n}\n\nexport function error(event, payload) {\n return log('error', event, payload);\n}\n\nexport function track(payload) {\n\n if (typeof window === 'undefined') {\n return;\n }\n\n if (payload) {\n\n try {\n JSON.stringify(payload);\n } catch (err) {\n return;\n }\n\n for (let builder of trackingBuilders) {\n try {\n extend(payload, builder(payload), false);\n } catch (err) {\n console.error('Error in custom tracking builder:', err.stack || err.toString());\n }\n }\n\n print('debug', 'tracking', payload);\n\n tracking.push(payload);\n }\n}\n","\nimport { config } from './config';\nimport { info } from './logger';\nimport { addPayloadBuilder } from './builders'\nimport { onWindowReady, safeInterval } from './util';\n\nlet enablePerformance = window &&\n window.performance &&\n performance.now &&\n performance.timing &&\n performance.timing.connectEnd &&\n performance.timing.navigationStart &&\n (Math.abs(performance.now() - Date.now()) > 1000) &&\n (performance.now() - (performance.timing.connectEnd - performance.timing.navigationStart)) > 0;\n\n\nexport function now() {\n if (enablePerformance) {\n return performance.now();\n } else {\n return Date.now();\n }\n}\n\nfunction timer(startTime) {\n startTime = startTime !== undefined ? startTime : now();\n\n return {\n startTime,\n\n elapsed() {\n return parseInt(now() - startTime, 10);\n },\n\n reset() {\n startTime = now();\n }\n };\n}\n\nexport function reqStartElapsed() {\n if (enablePerformance) {\n let timing = window.performance.timing;\n return parseInt(timing.connectEnd - timing.navigationStart, 10);\n }\n}\n\nexport let clientTimer = timer();\nexport let reqTimer = timer(reqStartElapsed());\n\nexport function initHeartBeat() {\n\n let heartBeatTimer = timer();\n let heartbeatCount = 0;\n\n safeInterval(() => {\n\n if (config.heartbeatMaxThreshold && (heartbeatCount > config.heartbeatMaxThreshold)) {\n return;\n }\n\n heartbeatCount += 1;\n\n let elapsed = heartBeatTimer.elapsed();\n let lag = elapsed - config.heartbeatInterval;\n\n let heartbeatPayload = {\n count: heartbeatCount,\n elapsed\n };\n\n if (config.heartbeatTooBusy) {\n heartbeatPayload.lag = lag;\n\n if (lag >= config.heartbeatTooBusyThreshold) {\n info('toobusy', heartbeatPayload, {\n noConsole: !config.heartbeatConsoleLog\n });\n }\n }\n\n info('heartbeat', heartbeatPayload, {\n noConsole: !config.heartbeatConsoleLog\n });\n\n }, config.heartbeatInterval);\n}\n\nexport function initPerformance() {\n\n if (!enablePerformance) {\n return info('no_performance_data');\n }\n\n addPayloadBuilder(() => {\n\n let payload = {};\n\n payload.client_elapsed = clientTimer.elapsed();\n\n if (enablePerformance) {\n payload.req_elapsed = reqTimer.elapsed();\n }\n\n return payload;\n });\n\n onWindowReady().then(() => {\n\n let keys = [\n 'connectEnd', 'connectStart', 'domComplete', 'domContentLoadedEventEnd',\n 'domContentLoadedEventStart', 'domInteractive', 'domLoading', 'domainLookupEnd',\n 'domainLookupStart', 'fetchStart', 'loadEventEnd', 'loadEventStart', 'navigationStart',\n 'redirectEnd', 'redirectStart', 'requestStart', 'responseEnd', 'responseStart',\n 'secureConnectionStart', 'unloadEventEnd', 'unloadEventStart'\n ];\n\n let timing = {};\n\n keys.forEach(key => {\n timing[key] = parseInt(window.performance.timing[key], 10) || 0;\n });\n\n let offset = timing.connectEnd - timing.navigationStart;\n\n if (timing.connectEnd) {\n Object.keys(timing).forEach(name => {\n let time = timing[name];\n if (time) {\n info(`timing_${name}`, {\n client_elapsed: parseInt(time - timing.connectEnd - (clientTimer.startTime - offset), 10),\n req_elapsed: parseInt(time - timing.connectEnd, 10)\n });\n }\n });\n }\n\n info('timing', timing);\n info('memory', window.performance.memory);\n info('navigation', window.performance.navigation);\n\n if (window.performance.getEntries) {\n window.performance.getEntries().forEach(resource => {\n if (['link', 'script', 'img', 'css'].indexOf(resource.initiatorType) > -1) {\n info(resource.initiatorType, resource);\n }\n });\n }\n });\n}\n","\nimport { config } from './config';\nimport { extend } from './util';\nimport { initPerformance, initHeartBeat } from './performance';\nimport { log, info, flush, immediateFlush } from './logger';\n\nlet initiated = false;\n\nexport function init(conf) {\n extend(config, conf || {});\n\n if (initiated) {\n return;\n }\n\n initiated = true;\n\n if (config.logPerformance) {\n initPerformance();\n }\n\n if (config.heartbeat) {\n initHeartBeat();\n }\n\n if (config.logUnload) {\n window.addEventListener('beforeunload', () => {\n info('window_beforeunload');\n immediateFlush({ fireAndForget: true });\n });\n\n window.addEventListener('unload', () => {\n info('window_unload');\n immediateFlush({ fireAndForget: true });\n });\n }\n\n if (config.flushInterval) {\n setInterval(flush, config.flushInterval);\n }\n\n if (window.beaverLogQueue) {\n window.beaverLogQueue.forEach(payload => {\n log(payload.level, payload.event, payload);\n });\n delete window.beaverLogQueue;\n }\n}\n","\nimport { reqStartElapsed, now } from './performance';\nimport { info, immediateFlush, track } from './logger';\nimport { addMetaBuilder, addPayloadBuilder } from './builders';\nimport { uniqueID } from './util';\nimport { config } from './config';\n\nlet windowID = uniqueID();\nlet pageID = uniqueID();\n\nlet currentState = config.initial_state_name;\nlet startTime;\n\nexport function startTransition() {\n startTime = now();\n}\n\nexport function endTransition(toState) {\n startTime = startTime || reqStartElapsed();\n\n let currentTime = now();\n let elapsedTime;\n\n if (startTime !== undefined) {\n elapsedTime = parseInt(currentTime - startTime, 0);\n }\n\n let transitionName = `transition_${currentState}_to_${toState}`;\n\n info(transitionName, {\n duration: elapsedTime\n });\n\n track({\n transition: transitionName,\n transition_time: elapsedTime\n });\n\n immediateFlush();\n\n startTime = currentTime;\n currentState = toState;\n pageID = uniqueID();\n}\n\nexport function transition(toState) {\n startTransition();\n endTransition(toState);\n}\n\naddPayloadBuilder(() => {\n return {\n windowID,\n pageID\n }\n});\n\naddMetaBuilder(() => {\n return {\n state: `ui_${currentState}`\n };\n});\n","\nexport * from './logger';\nexport * from './init';\nexport * from './transitions';\nexport * from './builders';\nexport * from './config';","\nimport * as INTERFACE from './interface';\nexport * from './interface';\nexport default INTERFACE;","/* @flow */\n/* eslint max-lines: off */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\n\nimport type { CancelableType } from '../types';\n\n/* Url Encode\n ----------\n\n Replace ? and & with encoded values. Allows other values (to create more readable urls than encodeUriComponent)\n*/\n\nexport function urlEncode(str : string) : string {\n return str.replace(/\\?/g, '%3F').replace(/&/g, '%26').replace(/#/g, '%23').replace(/\\+/g, '%2B');\n}\n\n\n/* Camel To Dasherize\n ------------------\n\n Convert camelCaseText to dasherized-text\n*/\n\nexport function camelToDasherize(string : string) : string {\n return string.replace(/([A-Z])/g, (g) => {\n return `-${ g.toLowerCase() }`;\n });\n}\n\n\n/* Dasherize to Camel\n ------------------\n\n Convert dasherized-text to camelCaseText\n*/\n\nexport function dasherizeToCamel(string : string) : string {\n return string.replace(/-([a-z])/g, (g) => {\n return g[1].toUpperCase();\n });\n}\n\n\n/* Extend\n ------\n\n Extend one object with another\n*/\n\nexport function extend(obj : Object, source : ?Object) : Object {\n if (!source) {\n return obj;\n }\n\n for (let key in source) {\n if (source.hasOwnProperty(key)) {\n obj[key] = source[key];\n }\n }\n\n return obj;\n}\n\n\n/* Values\n ------\n\n Get all of the values from an object as an array\n*/\n\nexport function values(obj : Object) : Array {\n let results = [];\n\n for (let key in obj) {\n if (obj.hasOwnProperty(key)) {\n results.push(obj[key]);\n }\n }\n\n return results;\n}\n\n\n/* Unique ID\n ---------\n\n Generate a unique, random hex id\n*/\n\nexport function uniqueID() : string {\n\n let chars = '0123456789abcdef';\n\n return 'xxxxxxxxxx'.replace(/./g, () => {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n });\n}\n\n/* Stringify with Functions\n ------------------------\n\n JSON Stringify with added support for functions\n*/\n\nexport function stringifyWithFunctions(obj : Object) : string {\n return JSON.stringify(obj, (key, val) => {\n if (typeof val === 'function') {\n return val.toString();\n }\n return val;\n });\n}\n\n\n/* Safe Get\n --------\n\n Get a property without throwing error\n*/\n\nexport function safeGet(obj : Object, prop : string) : mixed {\n\n let result;\n\n try {\n result = obj[prop];\n } catch (err) {\n // pass\n }\n\n return result;\n}\n\n\n/* Capitalize First Letter\n -----------------------\n*/\n\nexport function capitalizeFirstLetter(string : string) : string {\n return string.charAt(0).toUpperCase() + string.slice(1).toLowerCase();\n}\n\n\n/* Get\n ---\n\n Recursively gets a deep path from an object, returning a default value if any level is not found\n*/\n\nexport function get(item : Object, path : string, def : mixed) : mixed {\n\n if (!path) {\n return def;\n }\n\n let pathParts = path.split('.');\n\n // Loop through each section of our key path\n\n for (let i = 0; i < pathParts.length; i++) {\n\n // If we have an object, we can get the key\n\n if (typeof item === 'object' && item !== null) {\n item = item[pathParts[i]];\n\n // Otherwise, we should return the default (undefined if not provided)\n } else {\n return def;\n }\n }\n\n // If our final result is undefined, we should return the default\n\n return item === undefined ? def : item;\n}\n\n\n/* Safe Interval\n -------------\n\n Implement setInterval using setTimeout, to avoid stacking up calls from setInterval\n*/\n\nexport function safeInterval(method : Function, time : number) : CancelableType {\n\n let timeout;\n\n function runInterval() {\n timeout = setTimeout(runInterval, time);\n method.call();\n }\n\n timeout = setTimeout(runInterval, time);\n\n return {\n cancel() {\n clearTimeout(timeout);\n }\n };\n}\n\n/* Safe Interval\n -------------\n\n Run timeouts at 100ms intervals so we can account for busy browsers\n*/\n\nexport function safeTimeout(method : Function, time : number) {\n\n let interval = safeInterval(() => {\n time -= 100;\n if (time <= 0) {\n interval.cancel();\n method();\n }\n }, 100);\n}\n\n\nexport function each(item : Array | Object, callback : Function) {\n\n if (!item) {\n return;\n }\n\n if (Array.isArray(item)) {\n let len = item.length;\n for (let i = 0; i < len; i++) {\n callback(item[i], i);\n }\n\n } else if (typeof item === 'object') {\n let keys = Object.keys(item);\n let len = keys.length;\n for (let i = 0; i < len; i++) {\n let key = keys[i];\n callback(item[key], key);\n }\n }\n}\n\n\nexport function replaceObject> (item : T, replacers : { [string] : Function }, fullKey : string = '') : T {\n\n if (Array.isArray(item)) {\n let length = item.length;\n let result = [];\n\n for (let i = 0; i < length; i++) {\n Object.defineProperty(result, i, {\n configurable: true,\n enumerable: true,\n get: () => {\n let itemKey = fullKey ? `${ fullKey }.${ i }` : `${ i }`;\n let child = item[i];\n\n let type = (typeof child);\n let replacer = replacers[type];\n if (replacer) {\n let replaced = replacer(child, i, itemKey);\n if (typeof replaced !== 'undefined') {\n result[i] = replaced;\n return result[i];\n }\n }\n\n if (typeof child === 'object' && child !== null) {\n result[i] = replaceObject(child, replacers, itemKey);\n return result[i];\n }\n\n result[i] = child;\n return result[i];\n },\n set: (value) => {\n delete result[i];\n result[i] = value;\n }\n });\n }\n\n // $FlowFixMe\n return result;\n } else if (typeof item === 'object' && item !== null) {\n let result = {};\n\n for (let key in item) {\n if (!item.hasOwnProperty(key)) {\n continue;\n }\n\n Object.defineProperty(result, key, {\n configurable: true,\n enumerable: true,\n get: () => {\n let itemKey = fullKey ? `${ fullKey }.${ key }` : `${ key }`;\n // $FlowFixMe\n let child = item[key];\n\n let type = (typeof child);\n let replacer = replacers[type];\n if (replacer) {\n let replaced = replacer(child, key, itemKey);\n if (typeof replaced !== 'undefined') {\n result[key] = replaced;\n return result[key];\n }\n }\n\n if (typeof child === 'object' && child !== null) {\n result[key] = replaceObject(child, replacers, itemKey);\n return result[key];\n }\n\n result[key] = child;\n return result[key];\n },\n set: (value) => {\n delete result[key];\n result[key] = value;\n }\n });\n }\n\n // $FlowFixMe\n return result;\n } else {\n throw new Error(`Pass an object or array`);\n }\n}\n\n\nexport function copyProp(source : Object, target : Object, name : string, def : mixed) {\n if (source.hasOwnProperty(name)) {\n let descriptor = Object.getOwnPropertyDescriptor(source, name);\n // $FlowFixMe\n Object.defineProperty(target, name, descriptor);\n\n } else {\n target[name] = def;\n }\n}\n\nexport function dotify(obj : Object, prefix : string = '', newobj : Object = {}) : { [string] : string } {\n prefix = prefix ? `${ prefix }.` : prefix;\n for (let key in obj) {\n if (obj[key] === undefined || obj[key] === null || typeof obj[key] === 'function') {\n continue;\n } else if (obj[key] && Array.isArray(obj[key]) && obj[key].length && obj[key].every(val => typeof val !== 'object')) {\n newobj[`${ prefix }${ key }`] = obj[key].join(',');\n } else if (obj[key] && typeof obj[key] === 'object') {\n newobj = dotify(obj[key], `${ prefix }${ key }`, newobj);\n } else {\n newobj[`${ prefix }${ key }`] = obj[key].toString();\n }\n }\n return newobj;\n}\n\nlet objectIDs = new WeakMap();\n\nexport function getObjectID(obj : Object) : string {\n\n if (obj === null || obj === undefined || (typeof obj !== 'object' && typeof obj !== 'function')) {\n throw new Error(`Invalid object`);\n }\n\n let uid = objectIDs.get(obj);\n\n if (!uid) {\n uid = `${ typeof obj }:${ uniqueID() }`;\n objectIDs.set(obj, uid);\n }\n\n return uid;\n}\n\ntype RegexResultType = {\n text : string,\n groups : Array,\n start : number,\n end : number,\n length : number,\n replace : (text : string) => string\n};\n\nexport function regex(pattern : string | RegExp, string : string, start : number = 0) : ?RegexResultType {\n\n if (typeof pattern === 'string') {\n // eslint-disable-next-line security/detect-non-literal-regexp\n pattern = new RegExp(pattern);\n }\n\n let result = string.slice(start).match(pattern);\n\n if (!result) {\n return;\n }\n\n // $FlowFixMe\n let index : number = result.index;\n let match = result[0];\n\n return {\n text: match,\n groups: result.slice(1),\n start: start + index,\n end: start + index + match.length,\n length: match.length,\n\n replace(text : string) : string {\n\n if (!match) {\n return '';\n }\n\n return `${ match.slice(0, start + index) }${ text }${ match.slice(index + match.length) }`;\n }\n };\n}\n\nexport function regexAll(pattern : string | RegExp, string : string) : Array {\n\n let matches = [];\n let start = 0;\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n let match = regex(pattern, string, start);\n\n if (!match) {\n break;\n }\n\n matches.push(match);\n start = match.end;\n }\n\n return matches;\n}\n\nexport function count(str : string, substr : string) : number {\n\n let startIndex = 0;\n let itemCount = 0;\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n let index = str.indexOf(substr, startIndex);\n\n if (index === -1) {\n break;\n }\n\n startIndex = index;\n itemCount += 1;\n }\n\n return itemCount;\n}\n\nexport function stringify(item : mixed) : string {\n if (typeof item === 'string') {\n return item;\n }\n\n if (item && typeof item.toString === 'function') {\n return item.toString();\n }\n\n return Object.prototype.toString.call(item);\n}\n\nexport function stringifyError(err : mixed) : string {\n if (err) {\n // $FlowFixMe\n let { stack, message } = err;\n\n if (typeof stack === 'string') {\n return stack;\n }\n\n if (typeof message === 'string') {\n return message;\n }\n }\n\n return stringify(err);\n}\n\nexport type EventEmitterType = {\n on : (eventName : string, handler : Function) => CancelableType,\n once : (eventName : string, handler : Function) => CancelableType,\n trigger : (eventName : string) => void,\n triggerOnce : (eventName : string) => void\n};\n\nexport function eventEmitter() : EventEmitterType {\n\n let triggered = {};\n let handlers = {};\n\n return {\n\n on(eventName : string, handler : Function) : CancelableType {\n\n let handlerList = handlers[eventName] = handlers[eventName] || [];\n\n handlerList.push(handler);\n\n let cancelled = false;\n\n return {\n cancel() {\n if (!cancelled) {\n cancelled = true;\n handlerList.splice(handlerList.indexOf(handler), 1);\n }\n\n }\n };\n },\n\n once(eventName : string, handler : Function) : CancelableType {\n\n let listener = this.on(eventName, () => {\n listener.cancel();\n handler();\n });\n\n return listener;\n },\n\n trigger(eventName : string) {\n\n let handlerList = handlers[eventName];\n\n if (handlerList) {\n for (let handler of handlerList) {\n handler();\n }\n }\n },\n\n triggerOnce(eventName : string) {\n\n if (triggered[eventName]) {\n return;\n }\n\n triggered[eventName] = true;\n this.trigger(eventName);\n }\n };\n}\n","/* @flow */\n\nimport { getObjectID, replaceObject } from './util';\n\n\n/* Noop\n ----\n\n Do nothing, zilch, nada, zip\n*/\n\nexport function noop() {\n // pass\n}\n\n\n/* Once\n ----\n\n Create a wrapper function which only allows the inner function to run once, otherwise is a noop\n*/\n\nexport function once(method : (...args : Array) => T) : (...args : Array) => T {\n\n let called = false;\n let result;\n\n // eslint-disable-next-line no-unused-vars\n return function onceWrapper(...args : Array) : T {\n if (called) {\n return result;\n }\n\n called = true;\n result = method.apply(this, arguments);\n return result;\n };\n}\n\n\n/* Memoize\n -------\n\n Create a wrapper function which caches the result of the first call, then for subsequent calls returns the cached value\n*/\n\nexport function memoize(method : (...args : Array) => T) : (...args : Array) => T {\n\n let results = {};\n\n // eslint-disable-next-line no-unused-vars\n return function memoizeWrapper(...args : Array) : T {\n\n let cacheKey;\n\n try {\n cacheKey = JSON.stringify(Array.prototype.slice.call(arguments), (key, val) => {\n\n if (typeof val === 'function') {\n return `zoid:memoize[${ getObjectID(val) }]`;\n }\n\n return val;\n });\n\n } catch (err) {\n throw new Error('Arguments not serializable -- can not be used to memoize');\n }\n\n if (!results.hasOwnProperty(cacheKey)) {\n results[cacheKey] = method.apply(this, arguments);\n }\n\n return results[cacheKey];\n };\n}\n\nexport function debounce(method : (...args : Array) => T, time : number = 100) : (...args : Array) => void {\n\n let timeout;\n\n return function debounceWrapper() {\n clearTimeout(timeout);\n\n timeout = setTimeout(() => {\n return method.apply(this, arguments);\n }, time);\n };\n}\n\nexport function serializeFunctions>(obj : T) : T {\n return replaceObject(obj, {\n 'function': () => {\n return {\n __type__: '__function__'\n };\n }\n });\n}\n\nexport function deserializeFunctions>(obj : T, handler : Function) : T {\n return replaceObject(obj, {\n 'object': (value, key, fullKey) => {\n if (value && value.__type__ === '__function__') {\n return function deserializedFunctionWrapper() : mixed {\n return handler({ key, fullKey, self: this, args: arguments });\n };\n }\n }\n });\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { isWindowClosed, linkFrameWindow, type CrossDomainWindowType, type SameDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\n\nimport { PopupOpenError } from '../error';\nimport type { ElementRefType, CancelableType } from '../types';\n\nimport { once, memoize, debounce } from './fn';\nimport { extend, safeInterval, urlEncode, capitalizeFirstLetter, stringify } from './util';\n\nexport function appendChild(container : HTMLElement, child : HTMLElement | Text) {\n container.appendChild(child);\n}\n\nfunction isElement(element : mixed) : boolean {\n\n if (element instanceof window.Element) {\n return true;\n }\n\n if (element !== null && typeof element === 'object' && element.nodeType === 1 && typeof element.style === 'object' && typeof element.ownerDocument === 'object') {\n return true;\n }\n\n return false;\n}\n\nexport function querySelectorAll(el : HTMLElement, selector : string) : Array {\n return Array.prototype.slice.call(el.querySelectorAll(selector));\n}\n\n/* Get Element\n -----------\n\n Gets an element based on\n\n - Element id\n - CSS Query selector\n*/\n\nexport function getElementSafe(id : ElementRefType) : ?HTMLElement {\n\n if (isElement(id)) {\n // $FlowFixMe\n return id;\n }\n\n if (typeof id === 'string') {\n let element = document.getElementById(id);\n\n if (element) {\n return element;\n }\n\n if (document.querySelector) {\n element = document.querySelector(id);\n }\n\n if (element) {\n return element;\n }\n }\n}\n\nexport function getElement(id : ElementRefType) : HTMLElement {\n\n let element = getElementSafe(id);\n\n if (element) {\n return element;\n }\n\n throw new Error(`Can not find element: ${ stringify(id) }`);\n}\n\n\nexport let documentReady = new ZalgoPromise(resolve => {\n\n if (window.document.readyState === 'complete') {\n return resolve(window.document);\n }\n\n let interval = setInterval(() => {\n if (window.document.readyState === 'complete') {\n clearInterval(interval);\n return resolve(window.document);\n }\n }, 10);\n});\n\nexport function isDocumentReady() : boolean {\n return window.document.readyState === 'complete';\n}\n\nexport function elementReady(id : ElementRefType) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n let name = stringify(id);\n let el = getElementSafe(id);\n\n if (el) {\n return resolve(el);\n }\n\n if (isDocumentReady()) {\n return reject(new Error(`Document is ready and element ${ name } does not exist`));\n }\n\n let interval = setInterval(() => {\n\n el = getElementSafe(id);\n\n if (el) {\n clearInterval(interval);\n return resolve(el);\n }\n\n if (isDocumentReady()) {\n clearInterval(interval);\n return reject(new Error(`Document is ready and element ${ name } does not exist`));\n }\n }, 10);\n });\n}\n\n\n/* Popup\n -----\n\n Open a popup window with the specified option map\n*/\n\nexport function popup(url : string, options : { [ string ] : mixed }) : CrossDomainWindowType {\n\n // eslint-disable-next-line array-callback-return\n let params = Object.keys(options).map((key) => {\n if (options[key]) {\n return `${ key }=${ stringify(options[key]) }`;\n }\n }).filter(Boolean).join(',');\n\n let win;\n\n try {\n win = window.open(url, options.name, params, true);\n } catch (err) {\n throw new PopupOpenError(`Can not open popup window - ${ err.stack || err.message }`);\n }\n\n if (isWindowClosed(win)) {\n let err = new PopupOpenError(`Can not open popup window - blocked`);\n throw err;\n }\n\n return win;\n}\n\n\nexport function writeToWindow(win : SameDomainWindowType, html : string) {\n try {\n win.document.open();\n win.document.write(html);\n win.document.close();\n } catch (err) {\n try {\n win.location = `javascript: document.open(); document.write(${ JSON.stringify(html) }); document.close();`;\n } catch (err2) {\n // pass\n }\n }\n}\n\nexport function writeElementToWindow(win : SameDomainWindowType, el : HTMLElement) {\n\n let tag = el.tagName.toLowerCase();\n\n if (tag !== 'html') {\n throw new Error(`Expected element to be html, got ${ tag }`);\n }\n\n let documentElement = win.document.documentElement;\n\n while (documentElement.children && documentElement.children.length) {\n documentElement.removeChild(documentElement.children[0]);\n }\n\n while (el.children.length) {\n documentElement.appendChild(el.children[0]);\n }\n}\n\nexport function setStyle(el : HTMLElement, styleText : string, doc : Document = window.document) {\n // $FlowFixMe\n if (el.styleSheet) {\n // $FlowFixMe\n el.styleSheet.cssText = styleText;\n } else {\n el.appendChild(doc.createTextNode(styleText));\n }\n}\n\n/* Create Element\n --------------\n\n Create an element with style, html, classes, attributes etc. and append it to the specified container\n*/\n\nexport type ElementOptionsType = {\n style? : { [ string ] : string },\n class? : ?Array,\n attributes? : { [ string ] : string },\n styleSheet? : ?string,\n html? : ?string\n};\n\nexport function createElement(tag : string = 'div', options : ElementOptionsType = {}, container : ?HTMLElement) : HTMLElement {\n\n tag = tag.toLowerCase();\n let element = document.createElement(tag);\n\n if (options.style) {\n extend(element.style, options.style);\n }\n\n if (options.class) {\n element.className = options.class.join(' ');\n }\n\n if (options.attributes) {\n for (let key of Object.keys(options.attributes)) {\n element.setAttribute(key, options.attributes[key]);\n }\n }\n\n if (options.styleSheet) {\n setStyle(element, options.styleSheet);\n }\n\n if (container) {\n appendChild(container, element);\n }\n\n if (options.html) {\n if (tag === 'iframe') {\n // $FlowFixMe\n if (!container || !element.contentWindow) {\n throw new Error(`Iframe html can not be written unless container provided and iframe in DOM`);\n }\n\n // $FlowFixMe\n writeToWindow(element.contentWindow, options.html);\n\n } else {\n element.innerHTML = options.html;\n }\n }\n\n return element;\n}\n\nlet awaitFrameLoadPromises : WeakMap> = new WeakMap();\n\nexport function awaitFrameLoad(frame : HTMLIFrameElement) : ZalgoPromise {\n\n if (awaitFrameLoadPromises.has(frame)) {\n let promise = awaitFrameLoadPromises.get(frame);\n if (promise) {\n return promise;\n }\n }\n\n let promise = new ZalgoPromise((resolve, reject) => {\n frame.addEventListener('load', () => {\n linkFrameWindow(frame);\n resolve(frame);\n });\n\n frame.addEventListener('error', (err : Event) => {\n if (frame.contentWindow) {\n resolve(frame);\n } else {\n reject(err);\n }\n });\n });\n\n awaitFrameLoadPromises.set(frame, promise);\n\n return promise;\n}\n\nexport function awaitFrameWindow(frame : HTMLIFrameElement) : ZalgoPromise {\n\n if (frame.contentWindow) {\n return ZalgoPromise.resolve(frame.contentWindow);\n }\n\n return awaitFrameLoad(frame).then(loadedFrame => {\n\n if (!loadedFrame.contentWindow) {\n throw new Error(`Could not find window in iframe`);\n }\n\n return loadedFrame.contentWindow;\n });\n}\n\n\n/* Iframe\n ------\n\n Open an iframe with the specified container, url, and option property map\n*/\n\nexport type IframeElementOptionsType = {\n style? : { [ string ] : string },\n class? : ?Array,\n attributes? : { [ string ] : string },\n styleSheet? : ?string,\n html? : ?string,\n url? : ?string\n};\n\nexport function iframe(options : IframeElementOptionsType = {}, container : HTMLElement) : HTMLIFrameElement {\n\n let el = getElement(container);\n\n let attributes = options.attributes || {};\n let style = options.style || {};\n\n let frame = createElement('iframe', {\n attributes: {\n frameBorder: '0',\n allowTransparency: 'true',\n ...attributes\n },\n style: {\n backgroundColor: 'transparent',\n ...style\n },\n html: options.html,\n class: options.class\n });\n\n // $FlowFixMe\n awaitFrameLoad(frame);\n\n el.appendChild(frame);\n\n if (options.url || window.navigator.userAgent.match(/MSIE|Edge/i)) {\n frame.setAttribute('src', options.url || 'about:blank');\n }\n\n // $FlowFixMe\n return frame;\n}\n\n/* Add Event Listener\n ------------------\n\n Add DOM Event listener with cancel\n*/\n\nexport function addEventListener(obj : HTMLElement, event : string, handler : (event : Event) => void) : CancelableType {\n obj.addEventListener(event, handler);\n return {\n cancel() {\n obj.removeEventListener(event, handler);\n }\n };\n}\n\n/* Scan For Javascript\n -------------------\n\n Check if the string contains anything which could conceivably be run as javascript if the string is set to innerHTML\n*/\n\nexport function scanForJavascript(str : string) : string {\n\n if (!str) {\n return str;\n }\n\n if (str.match(/ {\n\n let params = {};\n\n if (!queryString) {\n return params;\n }\n\n if (queryString.indexOf('=') === -1) {\n throw new Error(`Can not parse query string params: ${ queryString }`);\n }\n\n for (let pair of queryString.split('&')) {\n pair = pair.split('=');\n\n if (pair[0] && pair[1]) {\n params[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n }\n\n return params;\n});\n\n\nexport function getQueryParam(name : string) : ?string {\n return parseQuery(window.location.search.slice(1))[name];\n}\n\nexport function formatQuery(obj : { [ string ] : string } = {}) : string {\n\n return Object.keys(obj).filter(key => {\n return typeof obj[key] === 'string';\n }).map(key => {\n return `${ urlEncode(key) }=${ urlEncode(obj[key]) }`;\n }).join('&');\n}\n\nexport function extendQuery(originalQuery : string, props : { [ string ] : string } = {}) : string {\n\n if (!props || !Object.keys(props).length) {\n return originalQuery;\n }\n\n return formatQuery({\n ...parseQuery(originalQuery),\n ...props\n });\n}\n\nexport function extendUrl(url : string, options : { query? : { [ string ] : string }, hash? : { [ string ] : string } } = {}) : string {\n\n let query = options.query || {};\n let hash = options.hash || {};\n\n let originalUrl;\n let originalQuery;\n let originalHash;\n\n [ originalUrl, originalHash ] = url.split('#');\n [ originalUrl, originalQuery ] = originalUrl.split('?');\n\n let queryString = extendQuery(originalQuery, query);\n let hashString = extendQuery(originalHash, hash);\n\n if (queryString) {\n originalUrl = `${ originalUrl }?${ queryString }`;\n }\n\n if (hashString) {\n originalUrl = `${ originalUrl }#${ hashString }`;\n }\n\n return originalUrl;\n}\n\n\nexport function elementStoppedMoving(element : ElementRefType, timeout : number = 5000) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n let el = getElement(element);\n\n let start = el.getBoundingClientRect();\n\n let interval;\n let timer;\n\n interval = setInterval(() => {\n let end = el.getBoundingClientRect();\n\n if (start.top === end.top && start.bottom === end.bottom && start.left === end.left && start.right === end.right && start.width === end.width && start.height === end.height) {\n clearTimeout(timer);\n clearInterval(interval);\n return resolve();\n }\n\n start = end;\n\n }, 50);\n\n timer = setTimeout(() => {\n clearInterval(interval);\n reject(new Error(`Timed out waiting for element to stop animating after ${ timeout }ms`));\n }, timeout);\n });\n}\n\nexport function getCurrentDimensions(el : HTMLElement) : { width : number, height : number } {\n return {\n width: el.offsetWidth,\n height: el.offsetHeight\n };\n}\n\nexport function changeStyle(el : HTMLElement, styles : { [ string ] : string }) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n\n for (let key of Object.keys(styles)) {\n // $FlowFixMe\n el.style[key] = styles[key];\n }\n\n setTimeout(resolve, 1);\n });\n}\n\nexport function setOverflow(el : HTMLElement, value : string = 'auto') : { reset : () => void } {\n\n let { overflow, overflowX, overflowY } = el.style;\n\n el.style.overflow = el.style.overflowX = el.style.overflowY = value;\n\n return {\n reset() {\n el.style.overflow = overflow;\n el.style.overflowX = overflowX;\n el.style.overflowY = overflowY;\n }\n };\n}\n\nfunction dimensionsDiff(one : { width : number, height : number }, two : { width : number, height : number }, { width = true, height = true, threshold = 0 } : { width : boolean, height : boolean, threshold : number }) : boolean {\n\n if (width && Math.abs(one.width - two.width) > threshold) {\n return true;\n }\n\n if (height && Math.abs(one.height - two.height) > threshold) {\n return true;\n }\n\n return false;\n}\n\nexport function trackDimensions(el : HTMLElement, { width = true, height = true, threshold = 0 } : { width : boolean, height : boolean, threshold : number }) : { check : () => { changed : boolean, dimensions : { width : number, height : number } }, reset : () => void } {\n\n let currentDimensions = getCurrentDimensions(el);\n\n return {\n check() : { changed : boolean, dimensions : { width : number, height : number } } {\n let newDimensions = getCurrentDimensions(el);\n\n return {\n changed: dimensionsDiff(currentDimensions, newDimensions, { width, height, threshold }),\n dimensions: newDimensions\n };\n },\n\n reset() {\n currentDimensions = getCurrentDimensions(el);\n }\n };\n}\n\nexport function onDimensionsChange(el : HTMLElement, { width = true, height = true, delay = 50, threshold = 0 } : { width? : boolean, height? : boolean, delay? : number, threshold? : number }) : ZalgoPromise<{ width : number, height : number }> {\n\n return new ZalgoPromise(resolve => {\n\n let tracker = trackDimensions(el, { width, height, threshold });\n\n let interval;\n\n let resolver = debounce((dimensions) => {\n clearInterval(interval);\n return resolve(dimensions);\n }, delay * 4);\n\n interval = setInterval(() => {\n let { changed, dimensions } = tracker.check();\n if (changed) {\n tracker.reset();\n return resolver(dimensions);\n }\n }, delay);\n\n function onWindowResize() {\n let { changed, dimensions } = tracker.check();\n if (changed) {\n tracker.reset();\n window.removeEventListener('resize', onWindowResize);\n resolver(dimensions);\n }\n }\n\n window.addEventListener('resize', onWindowResize);\n });\n}\n\n\nexport function dimensionsMatchViewport(el : HTMLElement, { width, height } : { width : number, height : number }) : boolean {\n\n let dimensions = getCurrentDimensions(el);\n\n if (width && dimensions.width !== window.innerWidth) {\n return false;\n }\n\n if (height && dimensions.height !== window.innerHeight) {\n return false;\n }\n\n return true;\n}\n\n\nexport function bindEvents(element : HTMLElement, eventNames : Array, handler : (event : Event) => void) : CancelableType {\n\n handler = once(handler);\n\n for (let eventName of eventNames) {\n element.addEventListener(eventName, handler);\n }\n\n return {\n cancel: once(() => {\n for (let eventName of eventNames) {\n element.removeEventListener(eventName, handler);\n }\n })\n };\n}\n\nconst VENDOR_PREFIXES = [ 'webkit', 'moz', 'ms', 'o' ];\n\nexport function setVendorCSS(element : HTMLElement, name : string, value : string) {\n\n // $FlowFixMe\n element.style[name] = value;\n\n let capitalizedName = capitalizeFirstLetter(name);\n\n for (let prefix of VENDOR_PREFIXES) {\n // $FlowFixMe\n element.style[`${ prefix }${ capitalizedName }`] = value;\n }\n}\n\n\nlet CSSRule = window.CSSRule;\n\nconst KEYFRAMES_RULE = CSSRule.KEYFRAMES_RULE || CSSRule.WEBKIT_KEYFRAMES_RULE || CSSRule.MOZ_KEYFRAMES_RULE ||\n CSSRule.O_KEYFRAMES_RULE || CSSRule.MS_KEYFRAMES_RULE;\n\nfunction isValidAnimation(element : HTMLElement, name : string) : boolean {\n\n let stylesheets = element.ownerDocument.styleSheets;\n\n try {\n for (let i = 0; i < stylesheets.length; i++) {\n\n // $FlowFixMe\n let cssRules = stylesheets[i].cssRules;\n\n if (!cssRules) {\n continue;\n }\n\n for (let j = 0; j < cssRules.length; j++) {\n\n let cssRule = cssRules[j];\n\n if (!cssRule) {\n continue;\n }\n\n if (cssRule.type === KEYFRAMES_RULE && cssRule.name === name) {\n return true;\n }\n }\n }\n } catch (err) {\n\n return false;\n }\n\n\n return false;\n}\n\n\nconst ANIMATION_START_EVENTS = [ 'animationstart', 'webkitAnimationStart', 'oAnimationStart', 'MSAnimationStart' ];\nconst ANIMATION_END_EVENTS = [ 'animationend', 'webkitAnimationEnd', 'oAnimationEnd', 'MSAnimationEnd' ];\n\nexport function animate(element : ElementRefType, name : string, clean : (Function) => void, timeout : number = 1000) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n let el = getElement(element);\n\n if (!el || !isValidAnimation(el, name)) {\n return resolve();\n }\n\n let hasStarted = false;\n\n let startTimeout;\n let endTimeout;\n let startEvent;\n let endEvent;\n\n function cleanUp() {\n setVendorCSS(el, 'animationName', '');\n clearTimeout(startTimeout);\n clearTimeout(endTimeout);\n startEvent.cancel();\n endEvent.cancel();\n }\n\n startEvent = bindEvents(el, ANIMATION_START_EVENTS, event => {\n\n // $FlowFixMe\n if (event.target !== el || event.animationName !== name) {\n return;\n }\n\n clearTimeout(startTimeout);\n\n event.stopPropagation();\n\n startEvent.cancel();\n hasStarted = true;\n\n endTimeout = setTimeout(() => {\n cleanUp();\n resolve();\n }, timeout);\n });\n\n endEvent = bindEvents(el, ANIMATION_END_EVENTS, event => {\n\n // $FlowFixMe\n if (event.target !== el || event.animationName !== name) {\n return;\n }\n\n cleanUp();\n\n // $FlowFixMe\n if (typeof event.animationName === 'string' && event.animationName !== name) {\n return reject(`Expected animation name to be ${ name }, found ${ event.animationName }`);\n }\n\n return resolve();\n });\n\n setVendorCSS(el, 'animationName', name);\n\n startTimeout = setTimeout(() => {\n if (!hasStarted) {\n cleanUp();\n return resolve();\n }\n }, 200);\n\n if (clean) {\n clean(cleanUp);\n }\n });\n}\n\nconst STYLE = {\n\n DISPLAY: {\n NONE: 'none',\n BLOCK: 'block'\n },\n\n VISIBILITY: {\n VISIBLE: 'visible',\n HIDDEN: 'hidden'\n },\n\n IMPORTANT: 'important'\n};\n\nexport function makeElementVisible(element : HTMLElement) {\n element.style.setProperty('visibility', '');\n}\n\nexport function makeElementInvisible(element : HTMLElement) {\n element.style.setProperty('visibility', STYLE.VISIBILITY.HIDDEN, STYLE.IMPORTANT);\n}\n\n\nexport function showElement(element : HTMLElement) {\n element.style.setProperty('display', '');\n}\n\nexport function hideElement(element : HTMLElement) {\n element.style.setProperty('display', STYLE.DISPLAY.NONE, STYLE.IMPORTANT);\n}\n\nexport function destroyElement(element : HTMLElement) {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n}\n\nexport function showAndAnimate(element : HTMLElement, name : string, clean : (Function) => void) : ZalgoPromise {\n let animation = animate(element, name, clean);\n showElement(element);\n return animation;\n}\n\nexport function animateAndHide(element : HTMLElement, name : string, clean : (Function) => void) : ZalgoPromise {\n return animate(element, name, clean).then(() => {\n hideElement(element);\n });\n}\n\nexport function addClass(element : HTMLElement, name : string) {\n if (element.classList) {\n element.classList.add(name);\n } else if (element.className.split(/\\s+/).indexOf(name) === -1) {\n element.className += ` ${ name }`;\n }\n}\n\nexport function removeClass(element : HTMLElement, name : string) {\n if (element.classList) {\n element.classList.remove(name);\n } else if (element.className.split(/\\s+/).indexOf(name) !== -1) {\n element.className = element.className.replace(name, '');\n }\n}\n\nexport function getCurrentScriptDir() : string {\n // eslint-disable-next-line no-console\n console.warn(`Do not use zoid.getCurrentScriptDir() in production -- browser support is limited`);\n\n // eslint-disable-next-line compat/compat\n if (document.currentScript) {\n // eslint-disable-next-line compat/compat\n return document.currentScript.src.split('/').slice(0, -1).join('/');\n }\n\n return '.';\n}\n\nexport function getElementName(element : ElementRefType) : string {\n\n if (typeof element === 'string') {\n return element;\n }\n\n if (!element || !element.tagName) {\n return '';\n }\n\n let name = element.tagName.toLowerCase();\n\n if (element.id) {\n name += `#${ element.id }`;\n } else if (element.className) {\n name += `.${ element.className.split(' ').join('.') }`;\n }\n\n return name;\n}\n\nexport function isElementClosed(el : HTMLElement) : boolean {\n if (!el || !el.parentNode) {\n return true;\n }\n return false;\n}\n\nexport function watchElementForClose(element : HTMLElement, handler : () => mixed) : CancelableType {\n handler = once(handler);\n\n let interval;\n\n if (isElementClosed(element)) {\n handler();\n } else {\n interval = safeInterval(() => {\n if (isElementClosed(element)) {\n interval.cancel();\n handler();\n }\n }, 50);\n }\n\n return {\n cancel() {\n if (interval) {\n interval.cancel();\n }\n }\n };\n}\n\nexport function getHttpType(contentType : string, url : string) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n let req = new window.XMLHttpRequest();\n\n req.open('GET', url);\n req.setRequestHeader('Accept', contentType);\n req.send(null);\n\n req.onload = () => {\n resolve(req.responseText);\n };\n\n req.onerror = () => {\n return reject(new Error(`prefetch failed`));\n };\n });\n}\n\nexport function getHTML(url : string) : ZalgoPromise {\n return getHttpType('text/html', url);\n}\n\nexport function getCSS(url : string) : ZalgoPromise {\n return getHttpType('text/css', url);\n}\n\nexport function getScript(url : string) : ZalgoPromise {\n return getHttpType('*/*', url);\n}\n\nexport function prefetchPage(url : string) : ZalgoPromise {\n return getHTML(url);\n}\n\nconst JSX_EVENTS = {\n onClick: 'click'\n};\n\nexport function fixScripts(el : HTMLElement, doc : Document = window.document) {\n for (let script of querySelectorAll(el, 'script')) {\n let newScript = doc.createElement('script');\n newScript.text = script.textContent;\n script.parentNode.replaceChild(newScript, script);\n }\n}\n\nexport function jsxDom(name : string, props : ?{ [ string ] : mixed }, content : ElementRefType) : HTMLElement {\n\n name = name.toLowerCase();\n\n let doc = (this && this.createElement)\n ? this\n : window.document;\n\n let el = doc.createElement(name);\n\n for (let prop in props) {\n if (prop in JSX_EVENTS) {\n el.addEventListener(JSX_EVENTS[prop], props[prop]);\n } else if (prop === 'innerHTML') {\n el.innerHTML = props[prop];\n fixScripts(el, doc);\n } else {\n el.setAttribute(prop, props[prop]);\n }\n }\n\n if (name === 'style') {\n\n if (typeof content !== 'string') {\n throw new TypeError(`Expected ${ name } tag content to be string, got ${ typeof content }`);\n }\n\n if (arguments.length > 3) {\n throw new Error(`Expected only text content for ${ name } tag`);\n }\n\n setStyle(el, content, doc);\n\n } else if (name === 'iframe') {\n\n if (arguments.length > 3) {\n throw new Error(`Expected only single child node for iframe`);\n }\n\n el.addEventListener('load', () => {\n let win = el.contentWindow;\n\n if (!win) {\n throw new Error(`Expected frame to have contentWindow`);\n }\n\n if (typeof content === 'string') {\n writeToWindow(win, content);\n } else {\n writeElementToWindow(win, content);\n }\n });\n\n } else if (name === 'script') {\n\n if (typeof content !== 'string') {\n throw new TypeError(`Expected ${ name } tag content to be string, got ${ typeof content }`);\n }\n\n if (arguments.length > 3) {\n throw new Error(`Expected only text content for ${ name } tag`);\n }\n\n el.text = content;\n\n } else {\n for (let i = 2; i < arguments.length; i++) {\n if (typeof arguments[i] === 'string') {\n let textNode = doc.createTextNode(arguments[i]);\n appendChild(el, textNode);\n } else {\n appendChild(el, arguments[i]);\n }\n }\n }\n\n return el;\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\n\n/* DeNodeify\n ---------\n\n Turns a method from a function which accepts a callback, into a function which returns a promise.\n*/\n\nexport function denodeify(method : (...args : Array) => T) : (...args : Array) => ZalgoPromise {\n\n return function denodeifyWrapper() : ZalgoPromise {\n\n let self = this;\n let args = Array.prototype.slice.call(arguments);\n\n if (args.length >= method.length) {\n return ZalgoPromise.resolve(method.apply(self, args));\n }\n\n return new ZalgoPromise((resolve, reject) => {\n args.push((err, result) => {\n\n if (err && !(err instanceof Error)) {\n throw new Error(`Passed non-Error object in callback: [ ${ err } ] -- callbacks should either be called with callback(new Error(...)) or callback(null, result).`);\n }\n\n return err ? reject(err) : resolve(result);\n });\n method.apply(self, args);\n });\n };\n}\n\nexport function promisify(method : (...args : Array) => T | ZalgoPromise) : (...args : Array) => ZalgoPromise {\n return function promisifyWRapper() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n return method.apply(this, arguments);\n });\n };\n}\n\nexport function delay(time : number = 1) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n setTimeout(resolve, time);\n });\n}\n\nexport function cycle(method : Function) : ZalgoPromise {\n return ZalgoPromise.try(method).then(() => cycle(method));\n}\n","/* @flow */\n\nexport function isPerc(str : string) : boolean {\n return typeof str === 'string' && (/^[0-9]+%$/).test(str);\n}\n\nexport function isPx(str : string) : boolean {\n return typeof str === 'string' && (/^[0-9]+px$/).test(str);\n}\n\nexport function toNum(val : string | number) : number {\n\n if (typeof val === 'number') {\n return val;\n }\n\n let match = val.match(/^([0-9]+)(px|%)$/);\n\n if (!match) {\n throw new Error(`Could not match css value from ${ val }`);\n }\n\n return parseInt(match[1], 10);\n}\n\nexport function toPx(val : number | string) : string {\n return `${ toNum(val) }px`;\n}\n\nexport function toCSS(val : number | string) : string {\n\n if (typeof val === 'number') {\n return toPx(val);\n }\n\n return isPerc(val) ? val : toPx(val);\n}\n\nexport function percOf(num : number, perc : string) : number {\n return parseInt(num * toNum(perc) / 100, 10);\n}\n\nexport function normalizeDimension(dim : string | number, max : number) : number {\n if (typeof dim === 'number') {\n return dim;\n } else if (isPerc(dim)) {\n return percOf(max, dim);\n } else if (isPx(dim)) {\n return toNum(dim);\n } else {\n throw new Error(`Can not normalize dimension: ${ dim }`);\n }\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nexport function memoized(target : Object, name : string, descriptor : Object) {\n let method = descriptor.value;\n\n descriptor.value = function memoizedFunction() : T {\n\n this.__memoized__ = this.__memoized__ || {};\n\n if (!this.__memoized__.hasOwnProperty(name)) {\n this.__memoized__[name] = method.apply(this, arguments);\n }\n\n return this.__memoized__[name];\n };\n\n descriptor.value.displayName = `${ name }:memoized`;\n}\n\nexport function promise(target : Object, name : string, descriptor : Object) {\n let method = descriptor.value;\n\n descriptor.value = function promisifiedFunction() : ZalgoPromise {\n return ZalgoPromise.try(method, this, arguments);\n };\n\n descriptor.value.displayName = `${ name }:promisified`;\n}\n","/* @flow */\n\nimport { CONFIG } from 'post-robot/src';\nimport { config, logLevels, info as logInfo, warn as logWarn, error as logError } from 'beaver-logger/client';\n\nexport function setLogLevel(logLevel : string) {\n if (logLevels.indexOf(logLevel) === -1) {\n throw new Error(`Invalid logLevel: ${ logLevel }`);\n }\n config.logLevel = logLevel;\n CONFIG.LOG_LEVEL = logLevel;\n window.LOG_LEVEL = logLevel;\n}\n\nexport function info(name : string, event : string, payload : Object = {}) {\n logInfo(`xc_${ name }_${ event }`, payload);\n}\n\n\n/* Log Warning\n -----------\n\n Log a warning\n*/\n\nexport function warn(name : string, event : string, payload : Object = {}) {\n logWarn(`xc_${ name }_${ event }`, payload);\n}\n\n\n/* Log Error\n ---------\n\n Log an error\n*/\n\nexport function error(name : string, event : string, payload : Object = {}) {\n logError(`xc_${ name }_${ event }`, payload);\n}\n","/* @flow */\n\nimport { isSameDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { __ZOID__ } from '../constants';\n\nexport function globalFor(win : CrossDomainWindowType) : ?Object {\n\n if (!isSameDomain(win)) {\n return;\n }\n\n if (!win[__ZOID__]) {\n win[__ZOID__] = {};\n }\n\n return win[__ZOID__];\n}\n\nexport function localGlobal() : Object {\n let global = globalFor(window);\n\n if (!global) {\n throw new Error(`Could not get local global`);\n }\n\n return global;\n}\n\nexport let global = localGlobal();\n","/* @flow */\n\nexport * from './dom';\nexport * from './fn';\nexport * from './promise';\nexport * from './util';\nexport * from './css';\nexport * from './decorators';\nexport * from './logger';\nexport * from './global';\n","/* @flow */\n\nexport function isRegex(item : mixed) : boolean {\n return Object.prototype.toString.call(item) === '[object RegExp]';\n}\n\n// eslint-disable-next-line no-unused-vars\nexport function noop(...args : Array) {\n // pass\n}\n","/* @flow */\n\nexport const PROTOCOL = {\n MOCK: ('mock:' : 'mock:'),\n FILE: ('file:' : 'file:'),\n ABOUT: ('about:' : 'about:')\n};\n\nexport const WILDCARD = '*';\n\nexport const WINDOW_TYPE = {\n IFRAME: ('iframe' : 'iframe'),\n POPUP: ('popup' : 'popup')\n};\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { isRegex, noop } from './util';\nimport type { CrossDomainWindowType, SameDomainWindowType, DomainMatcher } from './types';\nimport { PROTOCOL, WILDCARD } from './constants';\n\nlet IE_WIN_ACCESS_ERROR = 'Call was rejected by callee.\\r\\n';\n\nexport function isFileProtocol(win : SameDomainWindowType = window) : boolean {\n return win.location.protocol === PROTOCOL.FILE;\n}\n\nexport function isAboutProtocol(win : SameDomainWindowType = window) : boolean {\n return win.location.protocol === PROTOCOL.ABOUT;\n}\n\nexport function getParent(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n\n if (!win) {\n return;\n }\n\n try {\n if (win.parent && win.parent !== win) {\n return win.parent;\n }\n } catch (err) {\n // pass\n }\n}\n\nexport function getOpener(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n\n if (!win) {\n return;\n }\n\n // Make sure we're not actually an iframe which has had window.open() called on us\n if (getParent(win)) {\n return;\n }\n\n try {\n return win.opener;\n } catch (err) {\n // pass\n }\n}\n\nexport function canReadFromWindow(win : CrossDomainWindowType | SameDomainWindowType) : boolean {\n try {\n // $FlowFixMe\n noop(win && win.location && win.location.href);\n return true;\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\nexport function getActualDomain(win? : SameDomainWindowType = window) : string {\n\n let location = win.location;\n\n if (!location) {\n throw new Error(`Can not read window location`);\n }\n\n let protocol = location.protocol;\n\n if (!protocol) {\n throw new Error(`Can not read window protocol`);\n }\n\n if (protocol === PROTOCOL.FILE) {\n return `${ PROTOCOL.FILE }//`;\n }\n\n if (protocol === PROTOCOL.ABOUT) {\n\n let parent = getParent(win);\n if (parent && canReadFromWindow(parent)) {\n // $FlowFixMe\n return getActualDomain(parent);\n }\n\n return `${ PROTOCOL.ABOUT }//`;\n }\n\n let host = location.host;\n\n if (!host) {\n throw new Error(`Can not read window host`);\n }\n\n return `${ protocol }//${ host }`;\n}\n\nexport function getDomain(win? : SameDomainWindowType = window) : string {\n\n let domain = getActualDomain(win);\n\n if (domain && win.mockDomain && win.mockDomain.indexOf(PROTOCOL.MOCK) === 0) {\n return win.mockDomain;\n }\n\n return domain;\n}\n\nexport function isBlankDomain(win : CrossDomainWindowType) : boolean {\n try {\n // $FlowFixMe\n if (!win.location.href) {\n return true;\n }\n\n if (win.location.href === 'about:blank') {\n return true;\n }\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\nexport function isActuallySameDomain(win : CrossDomainWindowType) : boolean {\n\n try {\n if (win === window) {\n return true;\n }\n\n } catch (err) {\n // pass\n }\n\n try {\n let desc = Object.getOwnPropertyDescriptor(win, 'location');\n\n if (desc && desc.enumerable === false) {\n return false;\n }\n\n } catch (err) {\n // pass\n }\n\n try {\n // $FlowFixMe\n if (isAboutProtocol(win) && canReadFromWindow(win)) {\n return true;\n }\n } catch (err) {\n // pass\n }\n\n try {\n // $FlowFixMe\n if (getActualDomain(win) === getActualDomain(window)) {\n return true;\n }\n\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\nexport function isSameDomain(win : CrossDomainWindowType | SameDomainWindowType) : boolean {\n\n if (!isActuallySameDomain(win)) {\n return false;\n }\n\n try {\n\n if (win === window) {\n return true;\n }\n\n // $FlowFixMe\n if (isAboutProtocol(win) && canReadFromWindow(win)) {\n return true;\n }\n\n // $FlowFixMe\n if (getDomain(window) === getDomain(win)) {\n return true;\n }\n\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\n\nexport function assertSameDomain(win : CrossDomainWindowType | SameDomainWindowType) : SameDomainWindowType {\n if (!isSameDomain(win)) {\n throw new Error(`Expected window to be same domain`);\n }\n\n // $FlowFixMe\n return win;\n}\n\nexport function getParents(win : CrossDomainWindowType) : Array {\n\n let result = [];\n\n try {\n\n while (win.parent !== win) {\n result.push(win.parent);\n win = win.parent;\n }\n\n } catch (err) {\n // pass\n }\n\n return result;\n}\n\nexport function isAncestorParent(parent : CrossDomainWindowType, child : CrossDomainWindowType) : boolean {\n\n if (!parent || !child) {\n return false;\n }\n\n let childParent = getParent(child);\n\n if (childParent) {\n return childParent === parent;\n }\n\n if (getParents(child).indexOf(parent) !== -1) {\n return true;\n }\n\n return false;\n}\n\nexport function getFrames(win : CrossDomainWindowType) : Array {\n\n let result = [];\n\n let frames;\n\n try {\n frames = win.frames;\n } catch (err) {\n frames = win;\n }\n\n let len;\n\n try {\n len = frames.length;\n } catch (err) {\n // pass\n }\n\n if (len === 0) {\n return result;\n }\n\n if (len) {\n for (let i = 0; i < len; i++) {\n\n let frame;\n\n try {\n frame = frames[i];\n } catch (err) {\n continue;\n }\n\n result.push(frame);\n }\n\n return result;\n }\n\n for (let i = 0; i < 100; i++) {\n let frame;\n\n try {\n frame = frames[i];\n } catch (err) {\n return result;\n }\n\n if (!frame) {\n return result;\n }\n\n result.push(frame);\n }\n\n return result;\n}\n\n\nexport function getAllChildFrames(win : CrossDomainWindowType) : Array {\n\n let result = [];\n\n for (let frame of getFrames(win)) {\n result.push(frame);\n\n for (let childFrame of getAllChildFrames(frame)) {\n result.push(childFrame);\n }\n }\n\n return result;\n}\n\nexport function getTop(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n\n try {\n if (win.top) {\n return win.top;\n }\n } catch (err) {\n // pass\n }\n\n if (getParent(win) === win) {\n return win;\n }\n\n try {\n if (isAncestorParent(window, win) && window.top) {\n return window.top;\n }\n } catch (err) {\n // pass\n }\n\n try {\n if (isAncestorParent(win, window) && window.top) {\n return window.top;\n }\n } catch (err) {\n // pass\n }\n\n for (let frame of getAllChildFrames(win)) {\n try {\n if (frame.top) {\n return frame.top;\n }\n } catch (err) {\n // pass\n }\n\n if (getParent(frame) === frame) {\n return frame;\n }\n }\n}\n\nexport function getNextOpener(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n return getOpener(getTop(win) || win);\n}\n\nexport function getUltimateTop(win? : CrossDomainWindowType = window) : CrossDomainWindowType {\n let opener = getNextOpener(win);\n\n if (opener) {\n return getUltimateTop(opener);\n }\n\n return top;\n}\n\nexport function getAllFramesInWindow(win : CrossDomainWindowType) : Array {\n let top = getTop(win);\n\n if (!top) {\n throw new Error(`Can not determine top window`);\n }\n\n return [ ...getAllChildFrames(top), top ];\n}\n\nexport function getAllWindows(win? : CrossDomainWindowType = window) : $ReadOnlyArray {\n let frames = getAllFramesInWindow(win);\n let opener = getNextOpener(win);\n\n if (opener) {\n return [ ...getAllWindows(opener), ...frames ];\n } else {\n return frames;\n }\n}\n\nexport function isTop(win : CrossDomainWindowType) : boolean {\n return win === getTop(win);\n}\n\nexport function isFrameWindowClosed(frame : HTMLIFrameElement) : boolean {\n\n if (!frame.contentWindow) {\n return true;\n }\n\n if (!frame.parentNode) {\n return true;\n }\n\n let doc = frame.ownerDocument;\n\n if (doc && doc.documentElement && !doc.documentElement.contains(frame)) {\n return true;\n }\n\n return false;\n}\n\nfunction safeIndexOf(collection : Array, item : T) : number {\n for (let i = 0; i < collection.length; i++) {\n\n try {\n if (collection[i] === item) {\n return i;\n }\n } catch (err) {\n // pass\n }\n }\n\n return -1;\n}\n\nlet iframeWindows = [];\nlet iframeFrames = [];\n\nexport function isWindowClosed(win : CrossDomainWindowType, allowMock : boolean = true) : boolean {\n\n try {\n if (win === window) {\n return false;\n }\n } catch (err) {\n return true;\n }\n\n try {\n if (!win) {\n return true;\n }\n\n } catch (err) {\n return true;\n }\n\n try {\n if (win.closed) {\n return true;\n }\n\n } catch (err) {\n\n // I love you so much IE\n\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return false;\n }\n\n return true;\n }\n\n\n if (allowMock && isSameDomain(win)) {\n try {\n // $FlowFixMe\n if (win.mockclosed) {\n return true;\n }\n } catch (err) {\n // pass\n }\n }\n\n // Mobile safari\n\n try {\n if (!win.parent || !win.top) {\n return true;\n }\n } catch (err) {\n // pass\n }\n\n // Yes, this actually happens in IE. win === win errors out when the window\n // is from an iframe, and the iframe was removed from the page.\n\n try {\n noop(win === win); // eslint-disable-line no-self-compare\n } catch (err) {\n return true;\n }\n\n // IE orphaned frame\n\n let iframeIndex = safeIndexOf(iframeWindows, win);\n\n if (iframeIndex !== -1) {\n let frame = iframeFrames[iframeIndex];\n\n if (frame && isFrameWindowClosed(frame)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction cleanIframes() {\n for (let i = 0; i < iframeWindows.length; i++) {\n let closed = false;\n\n try {\n closed = iframeWindows[i].closed;\n } catch (err) {\n // pass\n }\n\n if (closed) {\n iframeFrames.splice(i, 1);\n iframeWindows.splice(i, 1);\n }\n }\n}\n\nexport function linkFrameWindow(frame : HTMLIFrameElement) {\n\n cleanIframes();\n\n if (frame && frame.contentWindow) {\n try {\n iframeWindows.push(frame.contentWindow);\n iframeFrames.push(frame);\n } catch (err) {\n // pass\n }\n }\n}\n\nexport function getUserAgent(win : ?SameDomainWindowType) : string {\n win = win || window;\n return win.navigator.mockUserAgent || win.navigator.userAgent;\n}\n\n\nexport function getFrameByName(win : CrossDomainWindowType, name : string) : ?CrossDomainWindowType {\n\n let winFrames = getFrames(win);\n\n for (let childFrame of winFrames) {\n try {\n // $FlowFixMe\n if (isSameDomain(childFrame) && childFrame.name === name && winFrames.indexOf(childFrame) !== -1) {\n return childFrame;\n }\n } catch (err) {\n // pass\n }\n }\n\n try {\n // $FlowFixMe\n if (winFrames.indexOf(win.frames[name]) !== -1) {\n // $FlowFixMe\n return win.frames[name];\n }\n } catch (err) {\n // pass\n }\n\n try {\n if (winFrames.indexOf(win[name]) !== -1) {\n return win[name];\n }\n } catch (err) {\n // pass\n }\n}\n\nexport function findChildFrameByName(win : CrossDomainWindowType, name : string) : ?CrossDomainWindowType {\n\n let frame = getFrameByName(win, name);\n\n if (frame) {\n return frame;\n }\n\n for (let childFrame of getFrames(win)) {\n let namedFrame = findChildFrameByName(childFrame, name);\n\n if (namedFrame) {\n return namedFrame;\n }\n }\n}\n\nexport function findFrameByName(win : CrossDomainWindowType, name : string) : ?CrossDomainWindowType {\n\n let frame;\n\n frame = getFrameByName(win, name);\n\n if (frame) {\n return frame;\n }\n\n let top = getTop(win) || win;\n\n return findChildFrameByName(top, name);\n}\n\nexport function isParent(win : CrossDomainWindowType, frame : CrossDomainWindowType) : boolean {\n\n let frameParent = getParent(frame);\n\n if (frameParent) {\n return frameParent === win;\n }\n\n for (let childFrame of getFrames(win)) {\n if (childFrame === frame) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function isOpener(parent : CrossDomainWindowType, child : CrossDomainWindowType) : boolean {\n\n return parent === getOpener(child);\n}\n\nexport function getAncestor(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n win = win || window;\n\n let opener = getOpener(win);\n\n if (opener) {\n return opener;\n }\n\n let parent = getParent(win);\n\n if (parent) {\n return parent;\n }\n}\n\nexport function getAncestors(win : CrossDomainWindowType) : Array {\n\n let results = [];\n\n let ancestor = win;\n\n while (ancestor) {\n ancestor = getAncestor(ancestor);\n if (ancestor) {\n results.push(ancestor);\n }\n }\n\n return results;\n}\n\n\nexport function isAncestor(parent : CrossDomainWindowType, child : CrossDomainWindowType) : boolean {\n\n let actualParent = getAncestor(child);\n\n if (actualParent) {\n if (actualParent === parent) {\n return true;\n }\n\n return false;\n }\n\n if (child === parent) {\n return false;\n }\n\n if (getTop(child) === child) {\n return false;\n }\n\n for (let frame of getFrames(parent)) {\n if (frame === child) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function isPopup(win? : CrossDomainWindowType = window) : boolean {\n return Boolean(getOpener(win));\n}\n\nexport function isIframe(win? : CrossDomainWindowType = window) : boolean {\n return Boolean(getParent(win));\n}\n\nexport function isFullpage(win? : CrossDomainWindowType = window) : boolean {\n return Boolean(!isIframe(win) && !isPopup(win));\n}\n\nfunction anyMatch(collection1, collection2) : boolean {\n\n for (let item1 of collection1) {\n for (let item2 of collection2) {\n if (item1 === item2) {\n return true;\n }\n }\n }\n\n return false;\n}\n\nexport function getDistanceFromTop(win : CrossDomainWindowType = window) : number {\n let distance = 0;\n let parent = win;\n\n while (parent) {\n parent = getParent(parent);\n if (parent) {\n distance += 1;\n }\n }\n\n return distance;\n}\n\nexport function getNthParent(win : CrossDomainWindowType, n : number = 1) : ?CrossDomainWindowType {\n let parent = win;\n\n for (let i = 0; i < n; i++) {\n if (!parent) {\n return;\n }\n\n parent = getParent(parent);\n }\n\n return parent;\n}\n\nexport function getNthParentFromTop(win : CrossDomainWindowType, n : number = 1) : ?CrossDomainWindowType {\n return getNthParent(win, getDistanceFromTop(win) - n);\n}\n\nexport function isSameTopWindow(win1 : CrossDomainWindowType, win2 : CrossDomainWindowType) : boolean {\n\n let top1 = getTop(win1) || win1;\n let top2 = getTop(win2) || win2;\n\n try {\n if (top1 && top2) {\n if (top1 === top2) {\n return true;\n }\n\n return false;\n }\n } catch (err) {\n // pass\n }\n\n let allFrames1 = getAllFramesInWindow(win1);\n let allFrames2 = getAllFramesInWindow(win2);\n\n if (anyMatch(allFrames1, allFrames2)) {\n return true;\n }\n\n let opener1 = getOpener(top1);\n let opener2 = getOpener(top2);\n\n if (opener1 && anyMatch(getAllFramesInWindow(opener1), allFrames2)) {\n return false;\n }\n\n if (opener2 && anyMatch(getAllFramesInWindow(opener2), allFrames1)) {\n return false;\n }\n\n return false;\n}\n\nexport function matchDomain(pattern : DomainMatcher, origin : DomainMatcher) : boolean {\n\n if (typeof pattern === 'string') {\n\n if (typeof origin === 'string') {\n return pattern === WILDCARD || origin === pattern;\n }\n\n if (isRegex(origin)) {\n return false;\n }\n\n if (Array.isArray(origin)) {\n return false;\n }\n }\n\n if (isRegex(pattern)) {\n\n if (isRegex(origin)) {\n return pattern.toString() === origin.toString();\n }\n\n if (Array.isArray(origin)) {\n return false;\n }\n\n // $FlowFixMe\n return Boolean(origin.match(pattern));\n }\n\n if (Array.isArray(pattern)) {\n\n if (Array.isArray(origin)) {\n return JSON.stringify(pattern) === JSON.stringify(origin);\n }\n\n if (isRegex(origin)) {\n return false;\n }\n\n return pattern.some(subpattern => matchDomain(subpattern, origin));\n }\n\n return false;\n}\n\nexport function stringifyDomainPattern(pattern : DomainMatcher) : string {\n if (Array.isArray(pattern)) {\n return `(${ pattern.join(' | ') })`;\n } else if (isRegex(pattern)) {\n return `RegExp(${ pattern.toString() }`;\n } else {\n return pattern.toString();\n }\n}\n\nexport function getDomainFromUrl(url : string) : string {\n\n let domain;\n\n if (url.match(/^(https?|mock|file):\\/\\//)) {\n domain = url;\n } else {\n return getDomain();\n }\n\n domain = domain.split('/').slice(0, 3).join('/');\n\n return domain;\n}\n\nexport function onCloseWindow(win : CrossDomainWindowType, callback : Function, delay : number = 1000, maxtime : number = Infinity) : { cancel : () => void } {\n\n let timeout;\n\n let check = () => {\n\n if (isWindowClosed(win)) {\n\n if (timeout) {\n clearTimeout(timeout);\n }\n\n return callback();\n }\n\n if (maxtime <= 0) {\n clearTimeout(timeout);\n } else {\n maxtime -= delay;\n timeout = setTimeout(check, delay);\n }\n };\n\n check();\n\n return {\n cancel() {\n if (timeout) {\n clearTimeout(timeout);\n }\n }\n };\n}\n\n// eslint-disable-next-line complexity\nexport function isWindow(obj : Object) : boolean {\n\n try {\n if (obj === window) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (Object.prototype.toString.call(obj) === '[object Window]') {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (window.Window && obj instanceof window.Window) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (obj && obj.self === obj) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (obj && obj.parent === obj) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (obj && obj.top === obj) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (noop(obj === obj) === '__unlikely_value__') { // eslint-disable-line no-self-compare\n return false;\n }\n\n } catch (err) {\n return true;\n }\n\n try {\n if (obj && obj.__cross_domain_utils_window_check__ === '__unlikely_value__') {\n return false;\n }\n\n } catch (err) {\n return true;\n }\n\n return false;\n}\n\nexport function isBrowser() : boolean {\n return (typeof window !== 'undefined' && typeof window.location !== 'undefined');\n}\n\nexport function isCurrentDomain(domain : string) : boolean {\n if (!isBrowser()) {\n return false;\n }\n\n return (getDomain() === domain);\n}\n\nexport function isMockDomain(domain : string) : boolean {\n return domain.indexOf(PROTOCOL.MOCK) === 0;\n}\n\nexport function normalizeMockUrl(url : string) : string {\n if (!isMockDomain(getDomainFromUrl(url))) {\n return url;\n }\n\n if (!__TEST__) {\n throw new Error(`Mock urls not supported out of test mode`);\n }\n\n return url.replace(/^mock:\\/\\/[^/]+/, getActualDomain(window));\n}\n\nexport function closeWindow(win : CrossDomainWindowType) {\n try {\n win.close();\n } catch (err) {\n // pass\n }\n}\n\nexport function getFrameForWindow(win : CrossDomainWindowType) : ?HTMLElement {\n if (isSameDomain(win)) {\n return assertSameDomain(win).frameElement;\n }\n\n for (const frame of document.querySelectorAll('iframe')) {\n if (frame && frame.contentWindow && frame.contentWindow === win) {\n return frame;\n }\n }\n}\n","/* @flow */\n\n// export something to force webpack to see this as an ES module\nexport const TYPES = true;\n\nexport type CrossDomainLocationType = {|\n\n|};\n\nexport type CrossDomainWindowType = {|\n location : string | CrossDomainLocationType,\n self : CrossDomainWindowType,\n closed : boolean,\n open : (string, string, string) => CrossDomainWindowType,\n close : () => void,\n focus : () => void,\n top : CrossDomainWindowType,\n frames : Array,\n opener ? : CrossDomainWindowType,\n parent : CrossDomainWindowType,\n length : number,\n postMessage : (string, string) => void\n|};\n\nexport type SameDomainWindowType = Object & {\n location : string | Object,\n self : CrossDomainWindowType,\n closed : boolean,\n open : (string, string, string) => CrossDomainWindowType,\n close : () => void,\n focus : () => void,\n XMLHttpRequest : typeof XMLHttpRequest,\n document : Document,\n navigator : {\n userAgent : string,\n mockUserAgent? : string\n }\n};\n\nexport type DomainMatcher = string | Array | $ReadOnlyArray | RegExp;\n","/* @flow */\n\nexport * from './utils';\nexport * from './types';\nexport * from './constants';\n","/* @flow */\n\nexport const ZOID = `zoid`;\n\nexport const __ZOID__ = `__${ ZOID }__`;\n\nexport const POST_MESSAGE = {\n INIT: `${ ZOID }_init`,\n PROPS: `${ ZOID }_props`,\n PROP_CALLBACK: `${ ZOID }_prop_callback`,\n CLOSE: `${ ZOID }_close`,\n CHECK_CLOSE: `${ ZOID }_check_close`,\n REDIRECT: `${ ZOID }_redirect`,\n RESIZE: `${ ZOID }_resize`,\n DELEGATE: `${ ZOID }_delegate`,\n ALLOW_DELEGATE: `${ ZOID }_allow_delegate`,\n ERROR: `${ ZOID }_error`,\n HIDE: `${ ZOID }_hide`,\n SHOW: `${ ZOID }_show`\n};\n\nexport const PROP_TYPES = {\n STRING: `string`,\n OBJECT: `object`,\n FUNCTION: `function`,\n BOOLEAN: `boolean`,\n NUMBER: `number`\n};\n\nexport const INITIAL_PROPS = {\n RAW: 'raw',\n UID: 'uid'\n};\n\nexport const WINDOW_REFERENCES = {\n OPENER: `opener`,\n TOP: `top`,\n PARENT: `parent`,\n GLOBAL: `global`\n};\n\nexport const PROP_TYPES_LIST : Array = Object.keys(PROP_TYPES).map(key => PROP_TYPES[key]);\n\nexport const CONTEXT_TYPES = {\n IFRAME: `iframe`,\n POPUP: `popup`\n};\n\nexport const CLASS_NAMES = {\n ZOID: `${ ZOID }`,\n OUTLET: `${ ZOID }-outlet`,\n COMPONENT_FRAME: `${ ZOID }-component-frame`,\n PRERENDER_FRAME: `${ ZOID }-prerender-frame`,\n VISIBLE: `${ ZOID }-visible`,\n INVISIBLE: `${ ZOID }-invisible`\n};\n\nexport const EVENTS = {\n CLOSE: `${ ZOID }-close`\n};\n\nexport const ATTRIBUTES = {\n IFRAME_PLACEHOLDER: `data-zoid-${ ZOID }-placeholder`\n};\n\nexport const ANIMATION_NAMES = {\n SHOW_CONTAINER: `${ ZOID }-show-container`,\n SHOW_COMPONENT: `${ ZOID }-show-component`,\n HIDE_CONTAINER: `${ ZOID }-hide-container`,\n HIDE_COMPONENT: `${ ZOID }-hide-component`\n};\n\nexport const EVENT_NAMES = {\n CLICK: 'click'\n};\n\nexport const CLOSE_REASONS = {\n PARENT_CALL: 'parent_call',\n CHILD_CALL: 'child_call',\n CLOSE_DETECTED: 'close_detected',\n USER_CLOSED: 'user_closed',\n PARENT_CLOSE_DETECTED: 'parent_close_detected'\n};\n\nexport const CONTEXT_TYPES_LIST : Array = Object.keys(CONTEXT_TYPES).map(key => CONTEXT_TYPES[key]);\n\nexport const DELEGATE = {\n CALL_ORIGINAL: 'call_original',\n CALL_DELEGATE: 'call_delegate'\n};\n\nexport const WILDCARD = '*';\n\nexport const DEFAULT_DIMENSIONS = {\n WIDTH: 300,\n HEIGHT: 150\n};\n","/* @flow */\n\nimport { CONSTANTS } from './conf';\n\nexport let global : Object = window[CONSTANTS.WINDOW_PROPS.POSTROBOT] = window[CONSTANTS.WINDOW_PROPS.POSTROBOT] || {};\n\n// Backwards compatibility\n\nglobal.registerSelf = () => {\n // pass\n};\n","/* @flow */\n\nexport let CONSTANTS = {\n\n POST_MESSAGE_TYPE: {\n REQUEST: 'postrobot_message_request',\n RESPONSE: 'postrobot_message_response',\n ACK: 'postrobot_message_ack'\n },\n\n POST_MESSAGE_ACK: {\n SUCCESS: 'success',\n ERROR: 'error'\n },\n\n POST_MESSAGE_NAMES: {\n METHOD: 'postrobot_method',\n HELLO: 'postrobot_ready',\n OPEN_TUNNEL: 'postrobot_open_tunnel'\n },\n\n WINDOW_TYPES: {\n FULLPAGE: 'fullpage',\n POPUP: 'popup',\n IFRAME: 'iframe'\n },\n\n WINDOW_PROPS: {\n POSTROBOT: '__postRobot__'\n },\n\n SERIALIZATION_TYPES: {\n METHOD: 'postrobot_method',\n ERROR: 'postrobot_error',\n PROMISE: 'postrobot_promise',\n ZALGO_PROMISE: 'postrobot_zalgo_promise',\n REGEX: 'regex'\n },\n\n SEND_STRATEGIES: {\n POST_MESSAGE: 'postrobot_post_message',\n BRIDGE: 'postrobot_bridge',\n GLOBAL: 'postrobot_global'\n },\n\n MOCK_PROTOCOL: 'mock:',\n FILE_PROTOCOL: 'file:',\n\n BRIDGE_NAME_PREFIX: '__postrobot_bridge__',\n POSTROBOT_PROXY: '__postrobot_proxy__',\n\n WILDCARD: '*'\n};\n\nexport const POST_MESSAGE_NAMES = {\n METHOD: 'postrobot_method',\n HELLO: 'postrobot_hello',\n OPEN_TUNNEL: 'postrobot_open_tunnel'\n};\n\nexport let POST_MESSAGE_NAMES_LIST : Array = Object.keys(POST_MESSAGE_NAMES)\n .map(key => POST_MESSAGE_NAMES[key]);\n","/* @flow */\n\nimport { CONSTANTS } from './constants';\n\nexport let CONFIG : Object = {\n\n ALLOW_POSTMESSAGE_POPUP: ('__ALLOW_POSTMESSAGE_POPUP__' in window)\n ? window.__ALLOW_POSTMESSAGE_POPUP__\n : __POST_ROBOT__.__ALLOW_POSTMESSAGE_POPUP__,\n\n BRIDGE_TIMEOUT: 5000,\n CHILD_WINDOW_TIMEOUT: 5000,\n\n ACK_TIMEOUT: (window.navigator.userAgent.match(/MSIE/i) !== -1 && !__TEST__) ? 10000 : 2000,\n RES_TIMEOUT: __TEST__ ? 2000 : -1,\n \n ALLOWED_POST_MESSAGE_METHODS: {\n [ CONSTANTS.SEND_STRATEGIES.POST_MESSAGE ]: true,\n [ CONSTANTS.SEND_STRATEGIES.BRIDGE ]: true,\n [ CONSTANTS.SEND_STRATEGIES.GLOBAL ]: true\n },\n\n ALLOW_SAME_ORIGIN: false\n};\n\nif (window.location.href.indexOf(CONSTANTS.FILE_PROTOCOL) === 0) {\n CONFIG.ALLOW_POSTMESSAGE_POPUP = true;\n}\n","/* @flow */\n\nexport * from './config';\nexport * from './constants';\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","/* @flow */\n/* eslint max-lines: off */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nexport { noop, once, uniqueID, isLocalStorageEnabled } from 'belter/src';\n\nconst moduleGlobal = {};\n\nexport function getGlobal() : Object {\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n return moduleGlobal;\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport function memoize(method : (...args : $ReadOnlyArray) => R, options : { time? : number } = {}) : ((...args : $ReadOnlyArray) => R) {\n\n const cache : { [key : string] : { time : number, value : R } } = {};\n\n // eslint-disable-next-line no-unused-vars, flowtype/no-weak-types\n return function memoizedFunction(...args : $ReadOnlyArray) : R {\n\n let key : string;\n\n try {\n key = JSON.stringify(Array.prototype.slice.call(arguments));\n } catch (err) {\n throw new Error(`Arguments not serializable -- can not be used to memoize`);\n }\n\n const time = options.time;\n\n if (cache[key] && time && (Date.now() - cache[key].time) < time) {\n delete cache[key];\n }\n\n const glob = getGlobal();\n\n if (glob.__CACHE_START_TIME__ && cache[key] && cache[key].time < glob.__CACHE_START_TIME__) {\n delete cache[key];\n }\n\n if (cache[key]) {\n return cache[key].value;\n }\n\n cache[key] = {\n time: Date.now(),\n value: method.apply(this, arguments)\n };\n\n return cache[key].value;\n };\n}\n\nexport function hashStr(str : string) : number {\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n hash += str[i].charCodeAt(0) * Math.pow((i % 10) + 1, 5);\n }\n return Math.floor(Math.pow(Math.sqrt(hash), 5));\n}\n\nexport function strHashStr(str : string) : string {\n let hash = '';\n\n for (let i = 0; i < str.length; i++) {\n let total = (str[i].charCodeAt(0) * i);\n\n if (str[i + 1]) {\n total += (str[i + 1].charCodeAt(0) * (i - 1));\n }\n\n hash += String.fromCharCode(97 + (Math.abs(total) % 26));\n }\n\n return hash;\n}\n\nexport function match(str : string, pattern : RegExp) : ?string {\n const regmatch = str.match(pattern);\n if (regmatch) {\n return regmatch[1];\n }\n}\n\nexport function safeJSON(item : mixed) : string {\n return JSON.stringify(item, (key, val) => {\n\n if (typeof val === 'function') {\n return `<${ typeof val }>`;\n }\n\n try {\n JSON.stringify(val);\n } catch (err) {\n return `<${ typeof val }>`;\n }\n\n return val;\n });\n}\n\ntype Listener = {|\n listen : (method : Function) => {\n cancel : () => void\n },\n once : (method : Function) => void,\n trigger : (...args : $ReadOnlyArray) => void\n|};\n\nexport function eventEmitter() : Listener {\n\n const listeners = [];\n\n return {\n listen(method : Function) : { cancel : () => void } {\n listeners.push(method);\n\n return {\n cancel() {\n listeners.splice(listeners.indexOf(method), 1);\n }\n };\n },\n\n once(method : Function) {\n const listener = this.listen(function onceListener() {\n method.apply(null, arguments);\n listener.cancel();\n });\n },\n\n trigger(...args : $ReadOnlyArray) {\n for (const listener of listeners) {\n listener(...args);\n }\n }\n };\n}\n\nexport function awaitKey(obj : Object, key : string) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n\n let value = obj[key];\n\n if (value) {\n return resolve(value);\n }\n\n delete obj[key];\n\n Object.defineProperty(obj, key, {\n\n configurable: true,\n\n set(item) {\n value = item;\n\n if (value) {\n resolve(value);\n }\n },\n\n get() : mixed {\n return value;\n }\n });\n });\n}\n\nexport function stringifyError(err : mixed, level : number = 1) : string {\n\n if (level >= 3) {\n return 'stringifyError stack overflow';\n }\n\n try {\n if (!err) {\n return ``;\n }\n\n if (typeof err === 'string') {\n return err;\n }\n\n if (err instanceof Error) {\n const stack = err && err.stack;\n const message = err && err.message;\n\n if (stack && message) {\n if (stack.indexOf(message) !== -1) {\n return stack;\n } else {\n return `${ message }\\n${ stack }`;\n }\n } else if (stack) {\n return stack;\n } else if (message) {\n return message;\n }\n }\n\n if (typeof err.toString === 'function') {\n return err.toString();\n }\n\n return Object.prototype.toString.call(err);\n\n } catch (newErr) { // eslint-disable-line unicorn/catch-error-name\n return `Error while stringifying error: ${ stringifyError(newErr, level + 1) }`;\n }\n}\n\nexport function stringifyErrorMessage(err : mixed) : string {\n\n const defaultMessage = ``;\n\n if (!err) {\n return defaultMessage;\n }\n\n if (err instanceof Error) {\n return err.message || defaultMessage;\n }\n\n if (typeof err.message === 'string') {\n return err.message || defaultMessage;\n }\n\n return defaultMessage;\n}\n\nexport function stringify(item : mixed) : string {\n if (typeof item === 'string') {\n return item;\n }\n\n if (item && typeof item.toString === 'function') {\n return item.toString();\n }\n\n return Object.prototype.toString.call(item);\n}\n\nexport function domainMatches(hostname : string, domain : string) : boolean {\n hostname = hostname.split('://')[1];\n const index = hostname.indexOf(domain);\n return (index !== -1 && hostname.slice(index) === domain);\n}\n\nexport function patchMethod(obj : Object, name : string, handler : Function) {\n const original = obj[name];\n\n obj[name] = function patchedMethod() : mixed {\n return handler({\n context: this,\n args: Array.prototype.slice.call(arguments),\n original,\n callOriginal: () => original.apply(this, arguments)\n });\n };\n}\n\nexport function isObject(obj : mixed) : boolean {\n return (typeof obj === 'object' && obj !== null);\n}\n\nexport function extend(obj : T, source : Object) : T {\n if (!source) {\n return obj;\n }\n\n if (Object.assign) { // eslint-disable-line compat/compat\n return Object.assign(obj, source); // eslint-disable-line compat/compat\n }\n\n for (const key in source) {\n if (source.hasOwnProperty(key)) {\n obj[key] = source[key];\n }\n }\n\n return obj;\n}\n\nexport function deepExtend (obj : T, source : Object) : T {\n if (!source) {\n return obj;\n }\n\n for (const key in source) {\n if (source.hasOwnProperty(key)) {\n if (isObject(obj[key]) && isObject(source[key])) {\n deepExtend(obj[key], source[key]);\n } else {\n obj[key] = source[key];\n }\n }\n }\n\n return obj;\n}\n\nexport function hasValue(obj : { [string] : T }, value : T) : boolean {\n for (const key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] === value) {\n return true;\n }\n }\n return false;\n}\n\nexport function contains(arr : $ReadOnlyArray, value : T) : boolean {\n return arr.indexOf(value) !== -1;\n}\n\n// eslint-disable-next-line flowtype/no-mutable-array\nexport function sortBy(arr : Array, order : $ReadOnlyArray) : Array {\n return arr.sort((a : T, b : T) => {\n return order.indexOf(a) - order.indexOf(b);\n });\n}\n\nexport function reverseMap(obj : { [string] : string }) : { [string] : string } {\n const result = {};\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n result[obj[key]] = key;\n }\n }\n return result;\n}\n\n// eslint-disable-next-line flowtype/no-mutable-array\nexport function arrayRemove(arr : Array, item : T) {\n arr.splice(arr.indexOf(item), 1);\n}\n\nexport function identity(item : T) : T {\n return item;\n}\n\nexport function values(obj : { [string] : T }) : $ReadOnlyArray {\n const result = [];\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n result.push(obj[key]);\n }\n }\n return result;\n}\n\nexport function perc(pixels : number, percentage : number) : number {\n return Math.round((pixels * percentage) / 100);\n}\n\nexport function min(...args : $ReadOnlyArray) : number {\n return Math.min(...args);\n}\n\nexport function max(...args : $ReadOnlyArray) : number {\n return Math.max(...args);\n}\n\nexport function regexMap(str : string, regex : RegExp, handler : () => T) : $ReadOnlyArray {\n const results = [];\n\n // $FlowFixMe\n str.replace(regex, function regexMapMatcher() {\n results.push(handler.apply(null, arguments));\n });\n\n return results;\n}\n","/* @flow */\n\nimport { isSameDomain, isSameTopWindow, isActuallySameDomain, getActualDomain, getDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONSTANTS } from '../../conf';\nimport { needsGlobalMessagingForBrowser } from '../../lib';\n\nexport let SEND_MESSAGE_STRATEGIES = {};\n\n\nSEND_MESSAGE_STRATEGIES[CONSTANTS.SEND_STRATEGIES.POST_MESSAGE] = (win : CrossDomainWindowType, serializedMessage : string, domain : (string | Array)) => {\n\n if (__POST_ROBOT__.__IE_POPUP_SUPPORT__) {\n try {\n require('../../compat').emulateIERestrictions(window, win);\n } catch (err) {\n return;\n }\n }\n\n let domains;\n\n if (Array.isArray(domain)) {\n domains = domain;\n } else if (typeof domain === 'string') {\n domains = [ domain ];\n } else {\n domains = [ CONSTANTS.WILDCARD ];\n }\n\n domains = domains.map(dom => {\n\n if (dom.indexOf(CONSTANTS.MOCK_PROTOCOL) === 0) {\n\n if (window.location.protocol === CONSTANTS.FILE_PROTOCOL) {\n return CONSTANTS.WILDCARD;\n }\n\n if (!isActuallySameDomain(win)) {\n throw new Error(`Attempting to send messsage to mock domain ${ dom }, but window is actually cross-domain`);\n }\n\n // $FlowFixMe\n return getActualDomain(win);\n }\n\n if (dom.indexOf(CONSTANTS.FILE_PROTOCOL) === 0) {\n return CONSTANTS.WILDCARD;\n }\n\n return dom;\n });\n\n domains.forEach(dom => {\n return win.postMessage(serializedMessage, dom);\n });\n};\n\nif (__POST_ROBOT__.__IE_POPUP_SUPPORT__) {\n\n let { sendBridgeMessage, needsBridgeForBrowser, isBridge } = require('../../bridge');\n\n SEND_MESSAGE_STRATEGIES[CONSTANTS.SEND_STRATEGIES.BRIDGE] = (win : CrossDomainWindowType, serializedMessage : string, domain : string) => {\n\n if (!needsBridgeForBrowser() && !isBridge()) {\n return;\n }\n\n if (isSameDomain(win)) {\n throw new Error(`Post message through bridge disabled between same domain windows`);\n }\n\n if (isSameTopWindow(window, win) !== false) {\n throw new Error(`Can only use bridge to communicate between two different windows, not between frames`);\n }\n\n return sendBridgeMessage(win, serializedMessage, domain);\n };\n}\n\nif (__POST_ROBOT__.__IE_POPUP_SUPPORT__ || __POST_ROBOT__.__GLOBAL_MESSAGE_SUPPORT__) {\n \n SEND_MESSAGE_STRATEGIES[CONSTANTS.SEND_STRATEGIES.GLOBAL] = (win : CrossDomainWindowType, serializedMessage : string) => {\n\n if (!needsGlobalMessagingForBrowser()) {\n return;\n }\n\n if (!isSameDomain(win)) {\n throw new Error(`Post message through global disabled between different domain windows`);\n }\n\n if (isSameTopWindow(window, win) !== false) {\n throw new Error(`Can only use global to communicate between two different windows, not between frames`);\n }\n\n // $FlowFixMe\n let foreignGlobal = win[CONSTANTS.WINDOW_PROPS.POSTROBOT];\n\n if (!foreignGlobal) {\n throw new Error(`Can not find postRobot global on foreign window`);\n }\n\n return foreignGlobal.receiveMessage({\n source: window,\n origin: getDomain(),\n data: serializedMessage\n });\n };\n}\n","/* @flow */\n\nimport { getDomain, isWindowClosed, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { CONSTANTS, CONFIG, POST_MESSAGE_NAMES_LIST } from '../../conf';\nimport { uniqueID, serializeMethods, getWindowType, jsonStringify, stringifyError } from '../../lib';\n\nimport { SEND_MESSAGE_STRATEGIES } from './strategies';\n\n\nfunction buildMessage(win : CrossDomainWindowType, message : Object, options = {}) : Object {\n\n let id = uniqueID();\n let type = getWindowType();\n let sourceDomain = getDomain(window);\n\n return {\n ...message,\n ...options,\n sourceDomain,\n id: message.id || id,\n windowType: type\n };\n}\n\n\nexport function sendMessage(win : CrossDomainWindowType, message : Object, domain : string | Array) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n message = buildMessage(win, message, {\n data: serializeMethods(win, domain, message.data),\n domain\n });\n\n let level;\n\n if (__DEBUG__) {\n if (POST_MESSAGE_NAMES_LIST.indexOf(message.name) !== -1 || message.type === CONSTANTS.POST_MESSAGE_TYPE.ACK) {\n level = 'debug';\n } else if (message.ack === 'error') {\n level = 'error';\n } else {\n level = 'info';\n }\n\n // eslint-disable-next-line no-console\n console[level]('postrobot_send', message.type.replace(/^postrobot_message_/, ''), '::', message.name, '::', domain || CONSTANTS.WILDCARD, '\\n\\n', message);\n }\n\n if (win === window && !CONFIG.ALLOW_SAME_ORIGIN) {\n throw new Error('Attemping to send message to self');\n }\n\n if (isWindowClosed(win)) {\n throw new Error('Window is closed');\n }\n\n let messages = [];\n\n let serializedMessage = jsonStringify({\n [ CONSTANTS.WINDOW_PROPS.POSTROBOT ]: message\n }, null, 2);\n\n return ZalgoPromise.map(Object.keys(SEND_MESSAGE_STRATEGIES), strategyName => {\n\n return ZalgoPromise.try(() => {\n\n if (!CONFIG.ALLOWED_POST_MESSAGE_METHODS[strategyName]) {\n throw new Error(`Strategy disallowed: ${ strategyName }`);\n }\n\n return SEND_MESSAGE_STRATEGIES[strategyName](win, serializedMessage, domain);\n\n }).then(() => {\n messages.push(`${ strategyName }: success`);\n return true;\n }, err => {\n messages.push(`${ strategyName }: ${ stringifyError(err) }\\n`);\n return false;\n });\n\n }).then(results => {\n\n let success = results.some(Boolean);\n let status = `${ message.type } ${ message.name } ${ success ? 'success' : 'error' }:\\n - ${ messages.join('\\n - ') }\\n`;\n\n if (!success) {\n throw new Error(status);\n }\n });\n });\n}\n","/* @flow */\n\nimport { type ZalgoPromise } from 'zalgo-promise/src';\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { matchDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { global } from '../global';\nimport { isRegex } from '../lib';\nimport { CONSTANTS } from '../conf';\n\nexport function resetListeners() {\n global.responseListeners = {};\n global.requestListeners = {};\n}\n\nglobal.responseListeners = global.responseListeners || {};\nglobal.requestListeners = global.requestListeners || {};\nglobal.WINDOW_WILDCARD = global.WINDOW_WILDCARD || new (function WindowWildcard() { /* pass */ })();\n\nglobal.erroredResponseListeners = global.erroredResponseListeners || {};\n\nconst __DOMAIN_REGEX__ = '__domain_regex__';\n\nexport type RequestListenerType = {\n handler : ({ source : CrossDomainWindowType, origin : string, data : Object }) => (mixed | ZalgoPromise),\n handleError : (err : mixed) => void,\n window : ?CrossDomainWindowType,\n name : string,\n domain : string | RegExp | Array\n};\n\nexport type ResponseListenerType = {\n name : string,\n window : CrossDomainWindowType,\n domain : (string | Array | RegExp),\n respond : (err : ?mixed, result : ?Object) => void,\n ack? : ?boolean\n};\n\nexport function addResponseListener(hash : string, listener : ResponseListenerType) {\n global.responseListeners[hash] = listener;\n}\n\nexport function getResponseListener(hash : string) : ResponseListenerType {\n return global.responseListeners[hash];\n}\n\nexport function deleteResponseListener(hash : string) {\n delete global.responseListeners[hash];\n}\n\nexport function markResponseListenerErrored(hash : string) {\n global.erroredResponseListeners[hash] = true;\n}\n\nexport function isResponseListenerErrored(hash : string) : boolean {\n return Boolean(global.erroredResponseListeners[hash]);\n}\n\nexport function getRequestListener({ name, win, domain } : { name : string, win : ?CrossDomainWindowType, domain : ?(string | RegExp) }) : ?RequestListenerType {\n\n if (win === CONSTANTS.WILDCARD) {\n win = null;\n }\n\n if (domain === CONSTANTS.WILDCARD) {\n domain = null;\n }\n\n if (!name) {\n throw new Error(`Name required to get request listener`);\n }\n\n let nameListeners = global.requestListeners[name];\n\n if (!nameListeners) {\n return;\n }\n\n for (let winQualifier of [ win, global.WINDOW_WILDCARD ]) {\n\n let winListeners = winQualifier && nameListeners.get(winQualifier);\n\n if (!winListeners) {\n continue;\n }\n\n if (domain && typeof domain === 'string') {\n if (winListeners[domain]) {\n return winListeners[domain];\n }\n\n if (winListeners[__DOMAIN_REGEX__]) {\n for (let { regex, listener } of winListeners[__DOMAIN_REGEX__]) {\n if (matchDomain(regex, domain)) {\n return listener;\n }\n }\n }\n }\n\n if (winListeners[CONSTANTS.WILDCARD]) {\n return winListeners[CONSTANTS.WILDCARD];\n }\n }\n}\n\n// eslint-disable-next-line complexity\nexport function addRequestListener({ name, win, domain } : { name : string, win : ?CrossDomainWindowType, domain : ?(string | RegExp | Array) }, listener : RequestListenerType) : { cancel : () => void } {\n\n if (!name || typeof name !== 'string') {\n throw new Error(`Name required to add request listener`);\n }\n\n if (Array.isArray(win)) {\n let listenersCollection = [];\n\n for (let item of win) {\n listenersCollection.push(addRequestListener({ name, domain, win: item }, listener));\n }\n\n return {\n cancel() {\n for (let cancelListener of listenersCollection) {\n cancelListener.cancel();\n }\n }\n };\n }\n\n if (Array.isArray(domain)) {\n let listenersCollection = [];\n\n for (let item of domain) {\n listenersCollection.push(addRequestListener({ name, win, domain: item }, listener));\n }\n\n return {\n cancel() {\n for (let cancelListener of listenersCollection) {\n cancelListener.cancel();\n }\n }\n };\n }\n\n let existingListener = getRequestListener({ name, win, domain });\n\n if (!win || win === CONSTANTS.WILDCARD) {\n win = global.WINDOW_WILDCARD;\n }\n\n domain = domain || CONSTANTS.WILDCARD;\n\n if (existingListener) {\n if (win && domain) {\n throw new Error(`Request listener already exists for ${ name } on domain ${ domain.toString() } for ${ win === global.WINDOW_WILDCARD ? 'wildcard' : 'specified' } window`);\n } else if (win) {\n throw new Error(`Request listener already exists for ${ name } for ${ win === global.WINDOW_WILDCARD ? 'wildcard' : 'specified' } window`);\n } else if (domain) {\n throw new Error(`Request listener already exists for ${ name } on domain ${ domain.toString() }`);\n } else {\n throw new Error(`Request listener already exists for ${ name }`);\n }\n }\n\n let requestListeners = global.requestListeners;\n\n let nameListeners = requestListeners[name];\n\n if (!nameListeners) {\n nameListeners = new WeakMap();\n requestListeners[name] = nameListeners;\n }\n\n let winListeners = nameListeners.get(win);\n\n if (!winListeners) {\n winListeners = {};\n nameListeners.set(win, winListeners);\n }\n\n let strDomain = domain.toString();\n\n let regexListeners = winListeners[__DOMAIN_REGEX__];\n let regexListener;\n\n if (isRegex(domain)) {\n\n if (!regexListeners) {\n regexListeners = [];\n winListeners[__DOMAIN_REGEX__] = regexListeners;\n }\n\n regexListener = { regex: domain, listener };\n\n regexListeners.push(regexListener);\n\n } else {\n winListeners[strDomain] = listener;\n }\n\n return {\n cancel() {\n if (!winListeners) {\n return;\n }\n\n delete winListeners[strDomain];\n\n if (win && Object.keys(winListeners).length === 0) {\n nameListeners.delete(win);\n }\n\n if (regexListener) {\n regexListeners.splice(regexListeners.indexOf(regexListener, 1));\n }\n }\n\n };\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { isWindowClosed, matchDomain, stringifyDomainPattern, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONSTANTS } from '../../conf';\nimport { stringifyError, noop } from '../../lib';\nimport { sendMessage } from '../send';\nimport { getRequestListener, getResponseListener, deleteResponseListener, isResponseListenerErrored } from '../listeners';\n\nexport let RECEIVE_MESSAGE_TYPES = {\n\n [ CONSTANTS.POST_MESSAGE_TYPE.ACK ](source : CrossDomainWindowType, origin : string, message : Object) {\n\n if (isResponseListenerErrored(message.hash)) {\n return;\n }\n\n let options = getResponseListener(message.hash);\n\n if (!options) {\n throw new Error(`No handler found for post message ack for message: ${ message.name } from ${ origin } in ${ window.location.protocol }//${ window.location.host }${ window.location.pathname }`);\n }\n\n if (!matchDomain(options.domain, origin)) {\n throw new Error(`Ack origin ${ origin } does not match domain ${ options.domain.toString() }`);\n }\n\n options.ack = true;\n },\n\n [ CONSTANTS.POST_MESSAGE_TYPE.REQUEST ](source : CrossDomainWindowType, origin : string, message : Object) : ZalgoPromise {\n\n let options = getRequestListener({ name: message.name, win: source, domain: origin });\n\n function respond(data) : ZalgoPromise {\n\n if (message.fireAndForget || isWindowClosed(source)) {\n return ZalgoPromise.resolve();\n }\n\n return sendMessage(source, {\n target: message.originalSource,\n hash: message.hash,\n name: message.name,\n ...data\n }, origin);\n }\n\n return ZalgoPromise.all([\n\n respond({\n type: CONSTANTS.POST_MESSAGE_TYPE.ACK\n }),\n\n ZalgoPromise.try(() => {\n\n if (!options) {\n throw new Error(`No handler found for post message: ${ message.name } from ${ origin } in ${ window.location.protocol }//${ window.location.host }${ window.location.pathname }`);\n }\n\n if (!matchDomain(options.domain, origin)) {\n throw new Error(`Request origin ${ origin } does not match domain ${ options.domain.toString() }`);\n }\n\n let data = message.data;\n\n return options.handler({ source, origin, data });\n\n }).then(data => {\n\n return respond({\n type: CONSTANTS.POST_MESSAGE_TYPE.RESPONSE,\n ack: CONSTANTS.POST_MESSAGE_ACK.SUCCESS,\n data\n });\n\n }, err => {\n\n let error = stringifyError(err).replace(/^Error: /, '');\n // $FlowFixMe\n let code = err.code;\n\n return respond({\n type: CONSTANTS.POST_MESSAGE_TYPE.RESPONSE,\n ack: CONSTANTS.POST_MESSAGE_ACK.ERROR,\n error,\n code\n });\n })\n\n ]).then(noop).catch(err => {\n\n if (options && options.handleError) {\n return options.handleError(err);\n } else {\n throw err;\n }\n });\n },\n\n [ CONSTANTS.POST_MESSAGE_TYPE.RESPONSE ](source : CrossDomainWindowType, origin : string, message : Object) : void | ZalgoPromise {\n\n if (isResponseListenerErrored(message.hash)) {\n return;\n }\n\n let options = getResponseListener(message.hash);\n\n if (!options) {\n throw new Error(`No handler found for post message response for message: ${ message.name } from ${ origin } in ${ window.location.protocol }//${ window.location.host }${ window.location.pathname }`);\n }\n\n if (!matchDomain(options.domain, origin)) {\n throw new Error(`Response origin ${ origin } does not match domain ${ stringifyDomainPattern(options.domain) }`);\n }\n\n deleteResponseListener(message.hash);\n\n if (message.ack === CONSTANTS.POST_MESSAGE_ACK.ERROR) {\n let err = new Error(message.error);\n if (message.code) {\n // $FlowFixMe\n err.code = message.code;\n }\n return options.respond(err, null);\n } else if (message.ack === CONSTANTS.POST_MESSAGE_ACK.SUCCESS) {\n let data = message.data || message.response;\n\n return options.respond(null, { source, origin, data });\n }\n }\n};\n","/* @flow */\n\nimport { isWindowClosed, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONSTANTS, POST_MESSAGE_NAMES_LIST } from '../../conf';\nimport { deserializeMethods, jsonParse, addEventListener, noop } from '../../lib';\nimport { global } from '../../global';\n\nimport { RECEIVE_MESSAGE_TYPES } from './types';\n\nglobal.receivedMessages = global.receivedMessages || [];\n\ntype MessageEvent = {\n source : CrossDomainWindowType,\n origin : string,\n data : string\n};\n\nfunction parseMessage(message : string) : ?Object {\n\n let parsedMessage;\n\n try {\n parsedMessage = jsonParse(message);\n } catch (err) {\n return;\n }\n\n if (!parsedMessage) {\n return;\n }\n\n if (typeof parsedMessage !== 'object' || parsedMessage === null) {\n return;\n }\n\n parsedMessage = parsedMessage[CONSTANTS.WINDOW_PROPS.POSTROBOT];\n\n if (!parsedMessage || typeof parsedMessage !== 'object' || parsedMessage === null) {\n return;\n }\n\n if (!parsedMessage.type || typeof parsedMessage.type !== 'string') {\n return;\n }\n\n if (!RECEIVE_MESSAGE_TYPES[parsedMessage.type]) {\n return;\n }\n\n return parsedMessage;\n}\n\n\nexport function receiveMessage(event : MessageEvent) {\n\n if (!window || window.closed) {\n return;\n }\n\n try {\n if (!event.source) {\n return;\n }\n } catch (err) {\n return;\n }\n\n let { source, origin, data } = event;\n\n let message = parseMessage(data);\n\n if (!message) {\n return;\n }\n\n if (!message.sourceDomain || typeof message.sourceDomain !== 'string') {\n throw new Error(`Expected message to have sourceDomain`);\n }\n\n if (message.sourceDomain.indexOf(CONSTANTS.MOCK_PROTOCOL) === 0 || message.sourceDomain.indexOf(CONSTANTS.FILE_PROTOCOL) === 0) {\n origin = message.sourceDomain;\n }\n\n if (global.receivedMessages.indexOf(message.id) === -1) {\n global.receivedMessages.push(message.id);\n } else {\n return;\n }\n\n if (__DEBUG__) {\n let level;\n\n if (POST_MESSAGE_NAMES_LIST.indexOf(message.name) !== -1 || message.type === CONSTANTS.POST_MESSAGE_TYPE.ACK) {\n level = 'debug';\n } else if (message.ack === 'error') {\n level = 'error';\n } else {\n level = 'info';\n }\n \n // eslint-disable-next-line no-console\n console[level]('postrobot_receive', message.type.replace(/^postrobot_message_/, ''), '::', message.name, '::', origin, '\\n\\n', message);\n }\n\n if (isWindowClosed(source) && !message.fireAndForget) {\n return;\n }\n\n if (message.data) {\n message.data = deserializeMethods(source, origin, message.data);\n }\n\n RECEIVE_MESSAGE_TYPES[message.type](source, origin, message);\n}\n\nexport function messageListener(event : { source : CrossDomainWindowType, origin : string, data : string, sourceElement : CrossDomainWindowType, originalEvent? : { origin : string } }) {\n\n try {\n noop(event.source);\n } catch (err) {\n return;\n }\n\n // $FlowFixMe\n let messageEvent : MessageEvent = {\n source: event.source || event.sourceElement,\n origin: event.origin || (event.originalEvent && event.originalEvent.origin),\n data: event.data\n };\n\n if (__POST_ROBOT__.__IE_POPUP_SUPPORT__) {\n try {\n require('../../compat').emulateIERestrictions(messageEvent.source, window);\n } catch (err) {\n return;\n }\n }\n\n receiveMessage(messageEvent);\n}\n\nexport function listenForMessages() {\n addEventListener(window, 'message', messageListener);\n}\n\nglobal.receiveMessage = receiveMessage;\n","/* @flow */\n\nexport * from './receive';\nexport * from './send';\nexport * from './listeners';\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getAncestor, isAncestor, isWindowClosed, getDomain, matchDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONFIG, CONSTANTS } from '../conf';\nimport { sendMessage, addResponseListener, deleteResponseListener, markResponseListenerErrored, type ResponseListenerType } from '../drivers';\nimport { uniqueID, onChildWindowReady, sayHello, isRegex } from '../lib';\nimport { global } from '../global';\n\nglobal.requestPromises = global.requestPromises || new WeakMap();\n\ntype WindowResolverType = CrossDomainWindowType | string | HTMLIFrameElement;\n\ntype RequestOptionsType = {\n window? : ?WindowResolverType,\n domain? : ?(string | Array | RegExp),\n name? : ?string,\n data? : ?Object,\n fireAndForget? : ?boolean,\n timeout? : ?number\n};\n\ntype ResponseMessageEvent = {\n source : CrossDomainWindowType,\n origin : string,\n data : Object\n};\n\nexport function request(options : RequestOptionsType) : ZalgoPromise {\n\n let prom = ZalgoPromise.try(() => {\n\n if (!options.name) {\n throw new Error('Expected options.name');\n }\n\n let name = options.name;\n let targetWindow : ?CrossDomainWindowType;\n let domain : string | Array | RegExp;\n\n if (typeof options.window === 'string') {\n let el = document.getElementById(options.window);\n\n if (!el) {\n throw new Error(`Expected options.window ${ Object.prototype.toString.call(options.window) } to be a valid element id`);\n }\n\n if (el.tagName.toLowerCase() !== 'iframe') {\n throw new Error(`Expected options.window ${ Object.prototype.toString.call(options.window) } to be an iframe`);\n }\n\n // $FlowFixMe\n if (!el.contentWindow) {\n throw new Error('Iframe must have contentWindow. Make sure it has a src attribute and is in the DOM.');\n }\n\n // $FlowFixMe\n targetWindow = el.contentWindow;\n\n } else if (options.window instanceof HTMLIFrameElement) {\n\n if (options.window.tagName.toLowerCase() !== 'iframe') {\n throw new Error(`Expected options.window ${ Object.prototype.toString.call(options.window) } to be an iframe`);\n }\n\n if (options.window && !options.window.contentWindow) {\n throw new Error('Iframe must have contentWindow. Make sure it has a src attribute and is in the DOM.');\n }\n\n if (options.window && options.window.contentWindow) {\n // $FlowFixMe\n targetWindow = options.window.contentWindow;\n }\n } else {\n targetWindow = options.window;\n }\n\n if (!targetWindow) {\n throw new Error('Expected options.window to be a window object, iframe, or iframe element id.');\n }\n\n const win = targetWindow;\n\n domain = options.domain || CONSTANTS.WILDCARD;\n\n let hash = `${ options.name }_${ uniqueID() }`;\n\n if (isWindowClosed(win)) {\n throw new Error('Target window is closed');\n }\n\n let hasResult = false;\n\n let requestPromises = global.requestPromises.get(win);\n\n if (!requestPromises) {\n requestPromises = [];\n global.requestPromises.set(win, requestPromises);\n }\n\n let requestPromise = ZalgoPromise.try(() => {\n\n if (isAncestor(window, win)) {\n return onChildWindowReady(win, options.timeout || CONFIG.CHILD_WINDOW_TIMEOUT);\n }\n\n }).then(({ origin } = {}) => {\n\n if (isRegex(domain) && !origin) {\n return sayHello(win);\n }\n\n }).then(({ origin } = {}) => {\n\n if (isRegex(domain)) {\n if (!matchDomain(domain, origin)) {\n throw new Error(`Remote window domain ${ origin } does not match regex: ${ domain.toString() }`);\n }\n\n domain = origin;\n }\n\n if (typeof domain !== 'string' && !Array.isArray(domain)) {\n throw new TypeError(`Expected domain to be a string or array`);\n }\n\n const actualDomain = domain;\n\n return new ZalgoPromise((resolve, reject) => {\n\n let responseListener : ResponseListenerType;\n\n if (!options.fireAndForget) {\n responseListener = {\n name,\n window: win,\n domain: actualDomain,\n respond(err, result) {\n if (!err) {\n hasResult = true;\n requestPromises.splice(requestPromises.indexOf(requestPromise, 1));\n }\n\n if (err) {\n reject(err);\n } else {\n resolve(result);\n }\n }\n };\n\n addResponseListener(hash, responseListener);\n }\n\n sendMessage(win, {\n type: CONSTANTS.POST_MESSAGE_TYPE.REQUEST,\n hash,\n name,\n data: options.data,\n fireAndForget: options.fireAndForget\n }, actualDomain).catch(reject);\n\n if (options.fireAndForget) {\n return resolve();\n }\n\n let ackTimeout = CONFIG.ACK_TIMEOUT;\n let resTimeout = options.timeout || CONFIG.RES_TIMEOUT;\n\n let cycleTime = 100;\n\n let cycle = () => {\n\n if (hasResult) {\n return;\n }\n\n if (isWindowClosed(win)) {\n\n if (!responseListener.ack) {\n return reject(new Error(`Window closed for ${ name } before ack`));\n }\n\n return reject(new Error(`Window closed for ${ name } before response`));\n }\n\n ackTimeout = Math.max(ackTimeout - cycleTime, 0);\n if (resTimeout !== -1) {\n resTimeout = Math.max(resTimeout - cycleTime, 0);\n }\n\n let hasAck = responseListener.ack;\n\n if (hasAck) {\n\n if (resTimeout === -1) {\n return;\n }\n\n cycleTime = Math.min(resTimeout, 2000);\n\n } else if (ackTimeout === 0) {\n return reject(new Error(`No ack for postMessage ${ name } in ${ getDomain() } in ${ CONFIG.ACK_TIMEOUT }ms`));\n\n } else if (resTimeout === 0) {\n return reject(new Error(`No response for postMessage ${ name } in ${ getDomain() } in ${ options.timeout || CONFIG.RES_TIMEOUT }ms`));\n }\n\n setTimeout(cycle, cycleTime);\n };\n\n setTimeout(cycle, cycleTime);\n });\n });\n\n requestPromise.catch(() => {\n markResponseListenerErrored(hash);\n deleteResponseListener(hash);\n });\n\n requestPromises.push(requestPromise);\n\n return requestPromise;\n });\n\n return prom;\n}\n\nexport function send(window : WindowResolverType, name : string, data : ?Object, options : ?RequestOptionsType) : ZalgoPromise {\n\n options = options || {};\n options.window = window;\n options.name = name;\n options.data = data;\n\n return request(options);\n}\n\nexport function sendToParent(name : string, data : ?Object, options : ?RequestOptionsType) : ZalgoPromise {\n\n let win = getAncestor();\n\n if (!win) {\n return new ZalgoPromise((resolve, reject) => reject(new Error('Window does not have a parent')));\n }\n\n return send(win, name, data, options);\n}\n\nexport function client(options : RequestOptionsType = {}) : { send : (string, ?Object) => ZalgoPromise } {\n\n if (!options.window) {\n throw new Error(`Expected options.window`);\n }\n\n const win = options.window;\n\n return {\n send(name : string, data : ?Object) : ZalgoPromise {\n return send(win, name, data, options);\n }\n };\n}\n\nglobal.send = send;\n","/* @flow */\n\nimport { isWindowClosed, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { once as onceFunction, safeInterval } from '../lib';\nimport { addRequestListener, type RequestListenerType } from '../drivers';\nimport { CONSTANTS } from '../conf';\nimport { global } from '../global';\n\ntype ErrorHandlerType = (err : mixed) => void;\ntype HandlerType = ({ source : CrossDomainWindowType, origin : string, data : Object }) => (void | mixed | ZalgoPromise);\n\ntype ServerOptionsType = {\n handler? : ?HandlerType,\n errorHandler? : ?ErrorHandlerType,\n window? : CrossDomainWindowType,\n name? : ?string,\n domain? : ?(string | RegExp | Array),\n once? : ?boolean,\n errorOnClose? : ?boolean\n};\n\nexport function listen(options : ServerOptionsType) : { cancel : () => void } {\n\n if (!options.name) {\n throw new Error('Expected options.name');\n }\n\n if (!options.handler) {\n throw new Error('Expected options.handler');\n }\n\n const name = options.name;\n const win = options.window;\n const domain = options.domain;\n\n let listenerOptions : RequestListenerType = {\n handler: options.handler,\n handleError: options.errorHandler || (err => {\n throw err;\n }),\n window: win,\n domain: domain || CONSTANTS.WILDCARD,\n name\n };\n\n let requestListener = addRequestListener({ name, win, domain }, listenerOptions);\n\n if (options.once) {\n let handler = listenerOptions.handler;\n listenerOptions.handler = onceFunction(function listenOnce() : mixed | ZalgoPromise {\n requestListener.cancel();\n return handler.apply(this, arguments);\n });\n }\n\n if (listenerOptions.window && options.errorOnClose) {\n let interval = safeInterval(() => {\n if (win && typeof win === 'object' && isWindowClosed(win)) {\n interval.cancel();\n listenerOptions.handleError(new Error('Post message target window is closed'));\n }\n }, 50);\n }\n\n return {\n cancel() {\n requestListener.cancel();\n }\n };\n}\n\nexport function on(name : string, options : ServerOptionsType | HandlerType, handler : ?HandlerType) : { cancel : () => void } {\n\n if (typeof options === 'function') {\n handler = options;\n options = {};\n }\n\n options = options || {};\n\n options.name = name;\n options.handler = handler || options.handler;\n\n return listen(options);\n}\n\nexport function once(name : string, options : ?(ServerOptionsType | HandlerType) = {}, handler : ?HandlerType) : ZalgoPromise<{ source : mixed, origin : string, data : Object }> {\n\n if (typeof options === 'function') {\n handler = options;\n options = {};\n }\n\n options = options || {};\n handler = handler || options.handler;\n let errorHandler = options.errorHandler;\n\n let promise = new ZalgoPromise((resolve, reject) => {\n\n options = options || {};\n\n options.name = name;\n options.once = true;\n\n options.handler = (event) => {\n resolve(event);\n if (handler) {\n return handler(event);\n }\n };\n\n options.errorHandler = (err) => {\n reject(err);\n if (errorHandler) {\n return errorHandler(err);\n }\n };\n });\n\n let onceListener = listen(options);\n promise.cancel = onceListener.cancel;\n\n return promise;\n}\n\nexport function listener(options : ServerOptionsType = {}) : { on : (name : string, handler : HandlerType) => { cancel : () => void } } {\n\n return {\n on(name : string, handler : HandlerType) : { cancel : () => void } {\n return on(name, options, handler);\n }\n };\n}\n\nglobal.on = on;\n","/* @flow */\n\nimport { CONSTANTS } from '../conf';\nimport { messageListener } from '../drivers';\n\nexport { CONFIG, CONSTANTS } from '../conf';\n\nexport function disable() {\n delete window[CONSTANTS.WINDOW_PROPS.POSTROBOT];\n window.removeEventListener('message', messageListener);\n}\n","/* @flow */\n\nimport { getAncestor } from 'cross-domain-utils/src';\n\nexport * from './client';\nexport * from './server';\nexport * from './config';\n\nexport let parent = getAncestor();\n","/* @flow */\n\nimport { type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { global } from './global';\n\nexport function cleanUpWindow(win : CrossDomainWindowType) {\n\n // global.tunnelWindows\n // global.bridges\n // global.popupWindowsByName\n // global.responseListeners\n // global.requestListeners\n\n let requestPromises = global.requestPromises.get(win);\n\n if (requestPromises) {\n for (let promise of requestPromises) {\n promise.reject(new Error(`No response from window - cleaned up`));\n }\n }\n\n if (global.popupWindowsByWin) {\n global.popupWindowsByWin.delete(win);\n }\n\n if (global.remoteWindows) {\n global.remoteWindows.delete(win);\n }\n\n global.requestPromises.delete(win);\n global.methods.delete(win);\n global.readyPromises.delete(win);\n}\n","/* @flow */\n\nimport { initOnReady, listenForMethods } from './lib';\nimport { listenForMessages } from './drivers';\nimport { global } from './global';\nimport { on, send } from './public';\n\nexport * from './public';\nexport { cleanUpWindow } from './clean';\nexport { ZalgoPromise as Promise } from 'zalgo-promise/src';\nexport let bridge = __POST_ROBOT__.__IE_POPUP_SUPPORT__ ? require('./bridge/interface') : null;\n\nexport function init() {\n if (!global.initialized) {\n listenForMessages();\n\n if (__POST_ROBOT__.__IE_POPUP_SUPPORT__) {\n require('./bridge').openTunnelToOpener();\n }\n\n initOnReady();\n listenForMethods({ on, send });\n }\n\n global.initialized = true;\n}\n\ninit();\n","/* @flow */\n\n// eslint-disable-next-line import/no-namespace\nimport * as INTERFACE from './interface';\n\nexport * from './interface';\nexport default INTERFACE;\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { isPopup, isIframe, getUserAgent } from 'cross-domain-utils/src';\n\nimport { CONFIG, CONSTANTS } from '../conf';\n\n\nexport function stringifyError(err : mixed, level : number = 1) : string {\n\n if (level >= 3) {\n return 'stringifyError stack overflow';\n }\n\n try {\n if (!err) {\n return ``;\n }\n\n if (typeof err === 'string') {\n return err;\n }\n\n if (err instanceof Error) {\n let stack = err && err.stack;\n let message = err && err.message;\n\n if (stack && message) {\n if (stack.indexOf(message) !== -1) {\n return stack;\n } else {\n return `${ message }\\n${ stack }`;\n }\n } else if (stack) {\n return stack;\n } else if (message) {\n return message;\n }\n }\n\n if (typeof err.toString === 'function') {\n return err.toString();\n }\n\n return Object.prototype.toString.call(err);\n\n } catch (newErr) { // eslint-disable-line unicorn/catch-error-name\n return `Error while stringifying error: ${ stringifyError(newErr, level + 1) }`;\n }\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport let once = (method : Function) : ((...args : Array) => T | void) => {\n if (!method) {\n return method;\n }\n let called = false;\n return function onceWrapper() : T | void {\n if (!called) {\n called = true;\n return method.apply(this, arguments);\n }\n };\n};\n\n// eslint-disable-next-line no-unused-vars\nexport function noop(...args : Array) {\n // pass\n}\n\nexport function addEventListener(obj : Object, event : string, handler : Function) : { cancel : () => void } {\n if (obj.addEventListener) {\n obj.addEventListener(event, handler);\n } else {\n obj.attachEvent(`on${ event }`, handler);\n }\n\n return {\n cancel() {\n if (obj.removeEventListener) {\n obj.removeEventListener(event, handler);\n } else {\n obj.detachEvent(`on${ event }`, handler);\n }\n }\n };\n}\n\nexport function uniqueID() : string {\n\n let chars = '0123456789abcdef';\n\n return 'xxxxxxxxxx'.replace(/./g, () => {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n });\n}\n\ntype MixedArrayType = Array;\n\nexport function eachArray(item : MixedArrayType, callback : (item : mixed, key : number) => mixed) {\n for (let i = 0; i < item.length; i++) {\n callback(item[i], i);\n }\n}\n\nexport function eachObject(item : Object, callback : (item : mixed, key : string) => mixed) {\n for (let key in item) {\n if (item.hasOwnProperty(key)) {\n callback(item[key], key);\n }\n }\n}\n\nexport function each(item : T, callback : (item : mixed, key : number | string) => mixed) {\n if (Array.isArray(item)) {\n eachArray(item, callback);\n } else if (typeof item === 'object' && item !== null) {\n eachObject(item, callback);\n }\n}\n\nexport function replaceObject(item : T, callback : (item : mixed, key : number | string) => mixed, depth : number = 1) : T {\n\n if (depth >= 100) {\n throw new Error(`Self-referential object passed, or object contained too many layers`);\n }\n\n let newobj;\n\n if (typeof item === 'object' && item !== null && !Array.isArray(item)) {\n newobj = {};\n } else if (Array.isArray(item)) {\n newobj = [];\n } else {\n throw new TypeError(`Invalid type: ${ typeof item }`);\n }\n\n each(item, (childItem, key) => {\n\n let result = callback(childItem, key);\n\n if (typeof result !== 'undefined') {\n // $FlowFixMe\n newobj[key] = result;\n } else if (typeof childItem === 'object' && childItem !== null) {\n // $FlowFixMe\n newobj[key] = replaceObject(childItem, callback, depth + 1);\n } else {\n // $FlowFixMe\n newobj[key] = childItem;\n }\n });\n\n // $FlowFixMe\n return newobj;\n}\n\nexport function safeInterval(method : Function, time : number) : { cancel : () => void } {\n let timeout;\n\n function runInterval() {\n timeout = setTimeout(runInterval, time);\n method.call();\n }\n\n timeout = setTimeout(runInterval, time);\n\n return {\n cancel() {\n clearTimeout(timeout);\n }\n };\n}\n\nexport function isRegex(item : mixed) : boolean {\n return Object.prototype.toString.call(item) === '[object RegExp]';\n}\n\n\ntype FunctionProxy = (method : T) => T;\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport let weakMapMemoize : FunctionProxy<*> = (method : (arg : any) => R) : ((...args : Array) => R) => {\n\n let weakmap = new WeakMap();\n\n // eslint-disable-next-line flowtype/no-weak-types\n return function weakmapMemoized(arg : any) : R {\n let result = weakmap.get(arg);\n\n if (typeof result !== 'undefined') {\n return result;\n }\n\n result = method.call(this, arg);\n\n if (typeof result !== 'undefined') {\n weakmap.set(arg, result);\n }\n\n return result;\n };\n};\n\nexport function getWindowType() : string {\n if (isPopup()) {\n return CONSTANTS.WINDOW_TYPES.POPUP;\n }\n if (isIframe()) {\n return CONSTANTS.WINDOW_TYPES.IFRAME;\n }\n return CONSTANTS.WINDOW_TYPES.FULLPAGE;\n}\n\nexport function jsonStringify(obj : T, replacer : ?Function, indent : number | void) : string {\n\n let objectToJSON;\n let arrayToJSON;\n\n try {\n if (JSON.stringify({}) !== '{}') {\n // $FlowFixMe\n objectToJSON = Object.prototype.toJSON;\n // $FlowFixMe\n delete Object.prototype.toJSON;\n }\n\n if (JSON.stringify({}) !== '{}') {\n throw new Error(`Can not correctly serialize JSON objects`);\n }\n\n if (JSON.stringify([]) !== '[]') {\n // $FlowFixMe\n arrayToJSON = Array.prototype.toJSON;\n // $FlowFixMe\n delete Array.prototype.toJSON;\n }\n\n if (JSON.stringify([]) !== '[]') {\n throw new Error(`Can not correctly serialize JSON objects`);\n }\n\n } catch (err) {\n throw new Error(`Can not repair JSON.stringify: ${ err.message }`);\n }\n\n let result = JSON.stringify.call(this, obj, replacer, indent);\n\n try {\n if (objectToJSON) {\n // $FlowFixMe\n Object.prototype.toJSON = objectToJSON; // eslint-disable-line no-extend-native\n }\n\n if (arrayToJSON) {\n // $FlowFixMe\n Array.prototype.toJSON = arrayToJSON; // eslint-disable-line no-extend-native\n }\n\n } catch (err) {\n throw new Error(`Can not repair JSON.stringify: ${ err.message }`);\n }\n\n\n return result;\n}\n\nexport function jsonParse(item : string) : mixed {\n return JSON.parse(item);\n}\n \nexport function needsGlobalMessagingForBrowser() : boolean {\n\n if (getUserAgent(window).match(/MSIE|trident|edge\\/12|edge\\/13/i)) {\n return true;\n }\n \n if (!CONFIG.ALLOW_POSTMESSAGE_POPUP) {\n return true;\n }\n \n return false;\n}\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { matchDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { CONSTANTS } from '../conf';\nimport { global } from '../global';\n\nimport { once, uniqueID, replaceObject, stringifyError, isRegex } from './util';\n\nglobal.methods = global.methods || new WeakMap();\n\nexport let listenForMethods = once(() => {\n global.on(CONSTANTS.POST_MESSAGE_NAMES.METHOD, { origin: CONSTANTS.WILDCARD }, ({ source, origin, data } : { source : CrossDomainWindowType, origin : string, data : Object }) => {\n\n let methods = global.methods.get(source);\n\n if (!methods) {\n throw new Error(`Could not find any methods this window has privileges to call`);\n }\n\n let meth = methods[data.id];\n\n if (!meth) {\n throw new Error(`Could not find method with id: ${ data.id }`);\n }\n\n if (!matchDomain(meth.domain, origin)) {\n throw new Error(`Method domain ${ meth.domain } does not match origin ${ origin }`);\n }\n\n return ZalgoPromise.try(() => {\n return meth.method.apply({ source, origin, data }, data.args);\n\n }).then(result => {\n\n return {\n result,\n id: data.id,\n name: data.name\n };\n });\n });\n});\n\nfunction isSerialized(item : mixed, type : string) : boolean {\n return typeof item === 'object' && item !== null && item.__type__ === type;\n}\n\ntype SerializedMethod = {\n __type__ : string,\n __id__ : string,\n __name__ : string\n};\n\nexport function serializeMethod(destination : CrossDomainWindowType, domain : string | Array, method : Function, name : string) : SerializedMethod {\n\n let id = uniqueID();\n\n let methods = global.methods.get(destination);\n\n if (!methods) {\n methods = {};\n global.methods.set(destination, methods);\n }\n\n methods[id] = { domain, method };\n\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.METHOD,\n __id__: id,\n __name__: name\n };\n}\n\ntype SerializedError = {\n __type__ : string,\n __message__ : string\n};\n\nfunction serializeError(err : mixed) : SerializedError {\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.ERROR,\n __message__: stringifyError(err),\n // $FlowFixMe\n __code__: err.code\n };\n}\n\ntype SerializePromise = {\n __type__ : string,\n __then__ : SerializedMethod\n};\n\nfunction serializePromise(destination : CrossDomainWindowType, domain : string | Array, promise : ZalgoPromise, name : string) : SerializePromise {\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.PROMISE,\n __then__: serializeMethod(destination, domain, (resolve, reject) => promise.then(resolve, reject), `${ name }.then`)\n };\n}\n\nfunction serializeZalgoPromise(destination : CrossDomainWindowType, domain : string | Array, promise : ZalgoPromise, name : string) : SerializePromise {\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.ZALGO_PROMISE,\n __then__: serializeMethod(destination, domain, (resolve, reject) => promise.then(resolve, reject), `${ name }.then`)\n };\n}\n\ntype SerializedRegex = {\n __type__ : string,\n __source__ : string\n};\n\nfunction serializeRegex(regex : RegExp) : SerializedRegex {\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.REGEX,\n __source__: regex.source\n };\n}\n\nexport function serializeMethods(destination : CrossDomainWindowType, domain : string | Array, obj : Object) : Object {\n\n return replaceObject({ obj }, (item, key) => {\n if (typeof item === 'function') {\n return serializeMethod(destination, domain, item, key.toString());\n }\n\n if (item instanceof Error) {\n return serializeError(item);\n }\n\n if (window.Promise && item instanceof window.Promise) {\n return serializePromise(destination, domain, item, key.toString());\n }\n\n if (ZalgoPromise.isPromise(item)) {\n // $FlowFixMe\n return serializeZalgoPromise(destination, domain, item, key.toString());\n }\n\n if (isRegex(item)) {\n // $FlowFixMe\n return serializeRegex(item);\n }\n }).obj;\n}\n\nexport function deserializeMethod(source : CrossDomainWindowType, origin : string, obj : Object) : Function {\n\n function wrapper() : ZalgoPromise {\n let args = Array.prototype.slice.call(arguments);\n return global.send(source, CONSTANTS.POST_MESSAGE_NAMES.METHOD, {\n id: obj.__id__,\n name: obj.__name__,\n args\n\n }, { domain: origin, timeout: -1 }).then(({ data }) => {\n return data.result;\n }, err => {\n throw err;\n });\n }\n\n wrapper.__name__ = obj.__name__;\n wrapper.__xdomain__ = true;\n\n wrapper.source = source;\n wrapper.origin = origin;\n\n return wrapper;\n}\n\nexport function deserializeError(source : CrossDomainWindowType, origin : string, obj : Object) : Error {\n let err = new Error(obj.__message__);\n if (obj.__code__) {\n // $FlowFixMe\n err.code = obj.__code__;\n }\n return err;\n}\n\nexport function deserializeZalgoPromise(source : CrossDomainWindowType, origin : string, prom : Object) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => deserializeMethod(source, origin, prom.__then__)(resolve, reject));\n}\n\nexport function deserializePromise(source : CrossDomainWindowType, origin : string, prom : Object) : ZalgoPromise {\n if (!window.Promise) {\n return deserializeZalgoPromise(source, origin, prom);\n }\n\n return new window.Promise((resolve, reject) => deserializeMethod(source, origin, prom.__then__)(resolve, reject));\n}\n\nexport function deserializeRegex(source : CrossDomainWindowType, origin : string, item : Object) : RegExp {\n // eslint-disable-next-line security/detect-non-literal-regexp\n return new RegExp(item.__source__);\n}\n\nexport function deserializeMethods(source : CrossDomainWindowType, origin : string, obj : Object) : Object {\n\n return replaceObject({ obj }, (item) => {\n if (typeof item !== 'object' || item === null) {\n return;\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.METHOD)) {\n return deserializeMethod(source, origin, item);\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.ERROR)) {\n return deserializeError(source, origin, item);\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.PROMISE)) {\n return deserializePromise(source, origin, item);\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.ZALGO_PROMISE)) {\n return deserializeZalgoPromise(source, origin, item);\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.REGEX)) {\n return deserializeRegex(source, origin, item);\n }\n\n }).obj;\n}\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { getAncestor, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { CONSTANTS } from '../conf';\nimport { global } from '../global';\n\nimport { noop } from './util';\n\nglobal.readyPromises = global.readyPromises || new WeakMap();\n\nexport function onHello(handler : ({ source? : CrossDomainWindowType, origin? : string }) => void) {\n global.on(CONSTANTS.POST_MESSAGE_NAMES.HELLO, { domain: CONSTANTS.WILDCARD }, ({ source, origin }) => {\n return handler({ source, origin });\n });\n}\n\nexport function sayHello(win : CrossDomainWindowType) : ZalgoPromise<{ origin : string }> {\n return global.send(win, CONSTANTS.POST_MESSAGE_NAMES.HELLO, {}, { domain: CONSTANTS.WILDCARD, timeout: -1 })\n .then(({ origin }) => {\n return { origin };\n });\n}\n\nexport function initOnReady() {\n\n onHello(({ source, origin }) => {\n let promise = global.readyPromises.get(source) || new ZalgoPromise();\n promise.resolve({ origin });\n global.readyPromises.set(source, promise);\n });\n\n let parent = getAncestor();\n if (parent) {\n sayHello(parent).catch(noop);\n }\n}\n\nexport function onChildWindowReady(win : mixed, timeout : number = 5000, name : string = 'Window') : ZalgoPromise<{ origin : string }> {\n\n let promise = global.readyPromises.get(win);\n\n if (promise) {\n return promise;\n }\n\n promise = new ZalgoPromise();\n global.readyPromises.set(win, promise);\n\n if (timeout !== -1) {\n setTimeout(() => promise.reject(new Error(`${ name } did not load after ${ timeout }ms`)), timeout);\n }\n\n return promise;\n}\n","/* @flow */\n\nexport * from './util';\nexport * from './serialize';\nexport * from './ready';\n","/* @flow */\n\nimport { on, send, bridge } from 'post-robot/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport type { CrossDomainWindowType, SameDomainWindowType } from 'cross-domain-utils/src';\n\nimport { isPayPalDomain, noop, getScriptVersion, extendUrl } from '../lib';\nimport { config } from '../config';\n\nfunction match(str : string, pattern : RegExp) : ?string {\n const regmatch : ?$ReadOnlyArray = str.match(pattern);\n if (regmatch) {\n return regmatch[1];\n }\n}\n\nlet onAuthorize : ?Function;\n\n// Post-Bridge\n\nif (isPayPalDomain()) {\n on('onLegacyPaymentAuthorize', { window: window.parent }, ({ data } : { data : { method : Function } }) => {\n onAuthorize = data.method;\n });\n}\n\n// Button / Merchant\n\nexport function onLegacyPaymentAuthorize(method : Function) : ZalgoPromise {\n onAuthorize = method;\n\n return ZalgoPromise.try(() => {\n if (bridge && !isPayPalDomain()) {\n return bridge.openBridge(extendUrl(config.postBridgeUrl, { version: getScriptVersion() }), config.postBridgeDomain).then((postBridge : CrossDomainWindowType) => {\n return send(postBridge, 'onLegacyPaymentAuthorize', { method }, { domain: config.paypalDomain })\n .then(noop);\n });\n }\n });\n}\n\nwindow.onLegacyPaymentAuthorize = onLegacyPaymentAuthorize;\n\n// Post-Bridge / Button\n\nwindow.watchForLegacyFallback = (win : SameDomainWindowType) => {\n const interval = setInterval(() => {\n try {\n const isLegacy = (win.document.body.innerHTML.indexOf('merchantpaymentweb') !== -1 ||\n win.document.body.innerHTML.indexOf('wapapp') !== -1);\n\n if (!isLegacy || win.ppxoWatching || win.closed) {\n return;\n }\n\n win.ppxoWatching = true;\n\n const XMLHttpRequestsend = win.XMLHttpRequest.prototype.send;\n\n win.XMLHttpRequest.prototype.send = function overrideXMLHttpRequestSend() : void {\n\n if (this._patched) {\n return XMLHttpRequestsend.apply(this, arguments);\n }\n\n this._patched = true;\n\n const self = this;\n let onload = this.onload;\n\n function listener() : void {\n\n if (self.readyState === self.DONE && self.status === 200 && self.responseText) {\n\n try {\n const response = JSON.parse(self.responseText.replace('while (1);', ''));\n\n if (response.type === 'redirect' && response.url && onAuthorize) {\n\n const url = response.url;\n\n clearInterval(interval);\n win.close();\n\n onAuthorize({\n returnUrl: url,\n paymentToken: match(url, /token=((EC-)?[A-Z0-9]+)/),\n billingToken: match(url, /ba_token=((BA-)?[A-Z0-9]+)/),\n payerID: match(url, /PayerID=([A-Z0-9]+)/),\n paymentID: match(url, /paymentId=((PAY-)?[A-Z0-9]+)/)\n });\n\n onAuthorize = null;\n\n if (win.PAYPAL && win.PAYPAL.Checkout && win.PAYPAL.Checkout.XhrResponse && win.PAYPAL.Checkout.XhrResponse.RESPONSE_TYPES) {\n Object.defineProperty(win.PAYPAL.Checkout.XhrResponse.RESPONSE_TYPES, 'Redirect', {\n value: Math.random().toString()\n });\n }\n\n if (win.mob && win.mob.Xhr && win.mob.Xhr.prototype._xhrOnReady) {\n win.mob.Xhr.prototype._xhrOnReady = noop;\n }\n }\n\n } catch (err) {\n return;\n }\n }\n\n if (onload) {\n return onload.apply(this, arguments);\n }\n }\n\n if (this.onload !== listener) {\n\n try {\n\n delete this.onload;\n this.addEventListener('load', listener);\n\n // $FlowFixMe\n Object.defineProperty(this, 'onload', {\n get() : Function {\n return listener;\n },\n set(handler) {\n onload = handler;\n }\n });\n\n } catch (err) {\n\n // pass\n }\n\n }\n\n return XMLHttpRequestsend.apply(this, arguments);\n };\n\n } catch (err) {\n // pass\n }\n }, 100);\n};\n\n\nwindow.onLegacyFallback = window.watchForLegacyFallback;\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { info, track, warn, flush as flushLogs, immediateFlush } from 'beaver-logger/client';\nimport { create, CONSTANTS, PopupOpenError } from 'zoid/src';\nimport { type Component } from 'zoid/src/component/component';\nimport type { CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { base64encode } from 'belter/src';\n\nimport { isDevice, request, getQueryParam, redirect as redir, patchMethod,\n setLogLevel, getSessionID, getBrowserLocale, supportsPopups, memoize,\n getDomainSetting, getScriptVersion, getButtonSessionID, isPayPalDomain,\n isEligible, getCurrentScriptUrl } from '../lib';\nimport { config } from '../config';\nimport { ENV, FPTI, PAYMENT_TYPE, CHECKOUT_OVERLAY_COLOR, ATTRIBUTE } from '../constants';\nimport { onLegacyPaymentAuthorize } from '../compat';\nimport { determineParameterFromToken, determineUrl } from '../integrations';\n\nimport { containerTemplate, componentTemplate } from './template';\n\nfunction addHeader(name, value) : void {\n\n if (!window.$Api) {\n return;\n }\n\n if (window.$Api.addHeader) {\n return window.$Api.addHeader(name, value);\n }\n}\n\n// eslint-disable-next-line flowtype/require-exact-type\ntype CheckoutPropsType = {\n payment? : () => ZalgoPromise,\n onAuthorize : ({ returnUrl : string }, { redirect : (?CrossDomainWindowType, ?string) => ZalgoPromise }) => ?ZalgoPromise,\n onShippingChange? : (address : {}) => ?ZalgoPromise,\n onCancel? : ({ cancelUrl : string }, { redirect : (?CrossDomainWindowType, ?string) => ZalgoPromise }) => ?ZalgoPromise,\n fallback? : (string) => ?ZalgoPromise,\n fundingSource? : string,\n logLevel? : string,\n env? : string,\n stage? : string,\n stageUrl? : string,\n localhostUrl? : string,\n checkoutUri? : string,\n authCode? : string\n};\n\nexport const Checkout : Component = create({\n\n tag: 'paypal-checkout',\n name: 'ppcheckout',\n\n scrolling: true,\n\n buildUrl(props) : ZalgoPromise {\n const env = props.env || config.env;\n\n if (!props.payment) {\n throw new Error(`Can not build url without payment prop`);\n }\n\n return props.payment().then(token => {\n if (!token) {\n throw new Error(`Expected payment id or token to be passed, got ${ token }`);\n }\n\n return determineUrl(env, props.fundingSource, token);\n });\n },\n\n get unsafeRenderTo() : boolean {\n return config.env === ENV.LOCAL;\n },\n\n get domain() : Object {\n return {\n ...config.paypalDomains\n };\n },\n\n get bridgeUrl() : Object {\n return config.metaFrameUrls;\n },\n\n get bridgeDomain() : Object {\n return config.paypalDomains;\n },\n\n contexts: {\n iframe: (!supportsPopups()),\n popup: true\n },\n\n get version() : string {\n return getScriptVersion();\n },\n\n validate() {\n if (!isEligible()) {\n warn('checkout_render_ineligible');\n }\n },\n\n prerenderTemplate: componentTemplate,\n containerTemplate,\n\n props: {\n\n sessionID: {\n type: 'string',\n required: false,\n def() : string {\n return getSessionID();\n },\n queryParam: true\n },\n\n buttonSessionID: {\n type: 'string',\n required: false,\n def() : ?string {\n return getButtonSessionID();\n },\n queryParam: true\n },\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n },\n\n meta: {\n type: 'object',\n required: false,\n def() : Object {\n const meta = window.xprops && window.xprops.meta;\n return meta || {};\n }\n },\n\n stage: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.STAGE || env === ENV.LOCAL) {\n return config.stage;\n }\n }\n },\n\n stageUrl: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.STAGE || env === ENV.LOCAL) {\n return config.stageUrl;\n }\n }\n },\n\n authCode: {\n type: 'string',\n required: false,\n def() : string {\n return config.authCode;\n },\n queryParam: 'code'\n },\n\n localhostUrl: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.LOCAL) {\n return config.localhostUrl;\n }\n }\n },\n\n checkoutUri: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : ?string {\n return config.checkoutUri;\n }\n },\n\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n allowDelegate: true,\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n }\n },\n\n\n client: {\n type: 'object',\n required: false,\n def() : { [string] : string } {\n return {};\n },\n sendToChild: false,\n\n validate(client, props) {\n const env = props.env || config.env;\n\n if (!client[env]) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (client[env].match(/^(.)\\1+$/)) {\n throw new Error(`Invalid client ID: ${ client[env] }`);\n }\n }\n },\n\n payment: {\n type: 'function',\n required: false,\n memoize: true,\n promisify: true,\n queryParam(payment) : ZalgoPromise {\n return payment().then(token => {\n return determineParameterFromToken(token);\n });\n },\n queryValue(payment) : ZalgoPromise {\n return payment();\n },\n childDecorate(payment) : () => ZalgoPromise {\n const token = getQueryParam('token');\n\n return token\n ? memoize(() => ZalgoPromise.resolve(token))\n : payment;\n },\n validate(payment, props) {\n if (!payment && !props.url) {\n throw new Error(`Expected either props.payment or props.url to be passed`);\n }\n },\n alias: 'billingAgreement'\n },\n\n style: {\n type: 'object',\n required: false,\n allowDelegate: true,\n def() : Object {\n return {};\n },\n validate(style) {\n if (style.overlayColor && style.overlayColor !== CHECKOUT_OVERLAY_COLOR.BLACK && style.overlayColor !== CHECKOUT_OVERLAY_COLOR.WHITE) {\n throw new Error(`Invalid background color: ${ style.overlayColor }`);\n }\n }\n },\n\n commit: {\n type: 'boolean',\n required: false\n },\n\n experience: {\n type: 'object',\n required: false,\n def() : Object {\n return {};\n }\n },\n\n fundingSource: {\n type: 'string',\n required: false,\n queryParam: true\n },\n\n fundingOffered: {\n type: 'object',\n required: false,\n queryParam: true,\n def() : Object {\n const elements = Array.prototype.slice.call(document.querySelectorAll(`[${ ATTRIBUTE.FUNDING_SOURCE }]`));\n\n const fundingSources = elements.map(el => {\n return el.getAttribute(ATTRIBUTE.FUNDING_SOURCE);\n });\n\n // $FlowFixMe\n return fundingSources;\n },\n queryValue: (val) => {\n return val.join(',');\n }\n },\n\n onAuthorize: {\n type: 'function',\n required: true,\n once: true,\n \n decorate(original) : Function | void {\n if (original) {\n return function decorateOnAuthorize(data, actions = {}) : ZalgoPromise {\n\n if (data && !data.intent) {\n warn(`checkout_authorize_no_intent`, { paymentID: data.paymentID, token: data.paymentToken });\n }\n\n const close = () => {\n return ZalgoPromise.try(() => {\n if (actions.close) {\n return actions.close();\n }\n }).then(() => {\n return this.closeComponent();\n });\n };\n\n const redirect = (win, url) => {\n return ZalgoPromise.all([\n redir(win || window.top, url || data.returnUrl),\n close()\n ]);\n };\n\n return ZalgoPromise.try(() => {\n\n try {\n const isButton = window.location.href.indexOf('/smart/button') !== -1;\n const isGuest = this.window.location.href.indexOf('/webapps/xoonboarding') !== -1;\n\n if (isButton && isGuest) {\n return request({\n win: this.window,\n method: 'get',\n url: '/webapps/xoonboarding/api/auth'\n }).then(result => {\n if (result && result.data && result.data.access_token) {\n addHeader('x-paypal-internal-euat', result.data.access_token);\n }\n }).catch(() => {\n // pass\n });\n }\n\n } catch (err) {\n // pass\n }\n\n }).then(() => {\n return original.call(this, data, { ...actions, close, redirect });\n }).catch(err => {\n return this.error(err);\n }).finally(() => {\n return this.close();\n });\n };\n }\n }\n },\n\n onShippingChange: {\n type: 'function',\n required: false\n },\n\n onAuth: {\n type: 'function',\n required: false,\n sameDomain: true,\n childDecorate(original : Function) : ?Function {\n if (original) {\n return function wrapOnAuth(data : string | Object) : Object {\n if (typeof data === 'string') {\n data = { accessToken: data };\n }\n return original(data);\n };\n }\n }\n },\n\n accessToken: {\n type: 'function',\n required: false\n },\n\n onCancel: {\n type: 'function',\n required: false,\n once: true,\n noop: true,\n\n decorate(original) : Function {\n return function decorateOnCancel(data, actions = {}) : ZalgoPromise {\n\n const close = () => {\n return ZalgoPromise.try(() => {\n if (actions.close) {\n return actions.close();\n }\n }).then(() => {\n return this.closeComponent();\n });\n };\n\n const redirect = (win, url) => {\n return ZalgoPromise.all([\n redir(win || window.top, url || data.cancelUrl),\n close()\n ]);\n };\n\n return ZalgoPromise.try(() => {\n return original.call(this, data, { ...actions, close, redirect });\n }).finally(() => {\n this.close();\n });\n };\n }\n },\n\n init: {\n type: 'function',\n required: false,\n once: true,\n noop: true,\n\n decorate(original) : Function {\n return function decorateInit(data) : void {\n info('checkout_init');\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CHECKOUT_INIT,\n [ FPTI.KEY.CONTEXT_TYPE ]: FPTI.CONTEXT_TYPE[PAYMENT_TYPE.EC_TOKEN],\n [ FPTI.KEY.TOKEN ]: data.paymentToken,\n [ FPTI.KEY.SELLER_ID ]: data.merchantID,\n [ FPTI.KEY.CONTEXT_ID ]: data.paymentToken\n });\n\n flushLogs();\n\n this.paymentToken = data.paymentToken;\n this.cancelUrl = data.cancelUrl;\n\n return original.apply(this, arguments);\n };\n }\n },\n\n onClose: {\n type: 'function',\n required: false,\n once: true,\n promisify: true,\n noop: true,\n\n decorate(original) : Function {\n return function decorateOnClose(reason) : ZalgoPromise {\n\n const onClose = original.apply(this, arguments);\n\n const CLOSE_REASONS = CONSTANTS.CLOSE_REASONS;\n\n const shouldCancel =\n this.props.onCancel &&\n [ CLOSE_REASONS.CLOSE_DETECTED, CLOSE_REASONS.USER_CLOSED ].indexOf(reason) !== -1;\n\n if (shouldCancel) {\n info(`close_trigger_cancel`);\n return this.props.onCancel({\n paymentToken: this.paymentToken,\n cancelUrl: this.cancelUrl\n }).then(() => onClose);\n }\n\n return onClose;\n };\n }\n },\n\n onError: {\n type: 'function',\n required: false,\n promisify: true,\n noop: true,\n once: true\n },\n\n fallback: {\n type: 'function',\n required: false,\n once: true,\n\n def() : Function {\n return function defaultFallback(url) : ZalgoPromise {\n warn('fallback', { url });\n\n if (getDomainSetting('allow_full_page_fallback')) {\n window.top.location = url;\n return this.close();\n }\n\n return onLegacyPaymentAuthorize(this.props.onAuthorize);\n };\n }\n },\n\n logLevel: {\n type: 'string',\n required: false,\n get value() : string {\n return config.logLevel;\n }\n },\n \n test: {\n type: 'object',\n required: false,\n def() : Object {\n return window.__test__ || { action: 'checkout' };\n }\n },\n\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n }\n },\n\n get dimensions() : { width : string, height : string } {\n\n if (isDevice()) {\n return {\n width: '100%',\n height: '590px'\n };\n }\n\n return {\n width: '500px',\n height: '590px'\n };\n }\n});\n\nif (Checkout.isChild() && Checkout.xchild && Checkout.xprops) {\n\n if (Checkout.xprops && Checkout.xprops.logLevel) {\n setLogLevel(Checkout.xprops.logLevel);\n }\n\n Checkout.xchild.onProps(xprops => {\n patchMethod(xprops, 'onAuthorize', ({ callOriginal, args: [ data ] }) => {\n if (data && !data.intent) {\n warn(`hermes_authorize_no_intent`, { paymentID: data.paymentID, token: data.paymentToken });\n\n try {\n const intent = window.injector.get('$CheckoutCartModel').instance(data.paymentToken).payment_action;\n warn(`hermes_intent`, { paymentID: data.paymentID, token: data.paymentToken, intent });\n } catch (err) {\n // pass\n }\n\n immediateFlush();\n }\n return callOriginal();\n });\n });\n}\n\npatchMethod(Checkout, 'init', ({ args: [ props, _context ], original, context }) => {\n return original.call(context, props, _context, 'body');\n});\n\npatchMethod(Checkout, 'render', ({ args: [ props ], original, context }) => {\n return original.call(context, props, 'body');\n});\n\npatchMethod(Checkout, 'renderTo', ({ args: [ win, props ], original, context }) => {\n\n const payment = props.payment();\n props.payment = () => payment;\n\n return original.call(context, win, props, 'body').catch(err => {\n if (err instanceof PopupOpenError && isPayPalDomain()) {\n Checkout.contexts.iframe = true;\n return original.call(context, win, props, 'body');\n }\n throw err;\n });\n});\n\n","/* @flow */\n\nexport * from './component';\n","/* @flow */\n\nexport function getUserAgent() : string {\n return window.navigator.mockUserAgent || window.navigator.userAgent;\n}\n\nexport function isDevice(userAgent? : string = getUserAgent()) : boolean {\n if (userAgent.match(/Android|webOS|iPhone|iPad|iPod|bada|Symbian|Palm|CriOS|BlackBerry|IEMobile|WindowsMobile|Opera Mini/i)) {\n return true;\n }\n\n return false;\n}\n\nexport function isWebView() : boolean {\n let userAgent = getUserAgent();\n return (/(iPhone|iPod|iPad|Macintosh).*AppleWebKit(?!.*Safari)/i).test(userAgent) ||\n (/\\bwv\\b/).test(userAgent) ||\n (/Android.*Version\\/(\\d)\\.(\\d)/i).test(userAgent);\n}\n\nexport function isStandAlone() : boolean {\n return (window.navigator.standalone === true || window.matchMedia('(display-mode: standalone)').matches);\n}\n\nexport function isFacebookWebView(ua? : string = getUserAgent()) : boolean {\n return (ua.indexOf('FBAN') !== -1) || (ua.indexOf('FBAV') !== -1);\n}\n\nexport function isFirefoxIOS(ua? : string = getUserAgent()) : boolean {\n return (/FxiOS/i).test(ua);\n}\n\nexport function isEdgeIOS(ua? : string = getUserAgent()) : boolean {\n return (/EdgiOS/i).test(ua);\n}\n\nexport function isOperaMini(ua? : string = getUserAgent()) : boolean {\n return ua.indexOf('Opera Mini') > -1;\n}\n\nexport function isAndroid(ua? : string = getUserAgent()) : boolean {\n return (/Android/).test(ua);\n}\n\nexport function isIos(ua? : string = getUserAgent()) : boolean {\n return (/iPhone|iPod|iPad/).test(ua);\n}\n\nexport function isGoogleSearchApp(ua? : string = getUserAgent()) : boolean {\n return (/\\bGSA\\b/).test(ua);\n}\n\nexport function isQQBrowser(ua? : string = getUserAgent()) : boolean {\n return (/QQBrowser/).test(ua);\n}\n\nexport function isIosWebview(ua? : string = getUserAgent()) : boolean {\n if (isIos(ua)) {\n if (isGoogleSearchApp(ua)) {\n return true;\n }\n return (/.+AppleWebKit(?!.*Safari)/).test(ua);\n }\n return false;\n}\n\nexport function isAndroidWebview(ua? : string = getUserAgent()) : boolean {\n if (isAndroid(ua)) {\n return (/Version\\/[\\d.]+/).test(ua) && !isOperaMini(ua);\n }\n return false;\n}\n\nexport function isIE() : boolean {\n\n if (window.document.documentMode) {\n return true;\n }\n\n return Boolean(\n window.navigator &&\n window.navigator.userAgent &&\n (/Edge|MSIE|rv:11/i).test(window.navigator.userAgent)\n );\n}\n\nexport function isIECompHeader() : boolean {\n let mHttp = window.document.querySelector('meta[http-equiv=\"X-UA-Compatible\"]');\n let mContent = window.document.querySelector('meta[content=\"IE=edge\"]');\n if (mHttp && mContent) {\n return true;\n }\n return false;\n}\n\nexport function isElectron() : boolean {\n if (typeof process !== 'undefined' && process.versions && process.versions.electron) {\n return true;\n }\n return false;\n}\n\nexport function isIEIntranet() : boolean {\n\n // This status check only works for older versions of IE with document.documentMode set\n\n if (window.document.documentMode) {\n try {\n let status = window.status;\n\n window.status = 'testIntranetMode';\n\n if (window.status === 'testIntranetMode') {\n window.status = status;\n\n return true;\n }\n\n return false;\n\n } catch (err) {\n\n return false;\n }\n }\n\n return false;\n}\n\nexport function isMacOsCna() : boolean {\n let userAgent = getUserAgent();\n return (/Macintosh.*AppleWebKit(?!.*Safari)/i).test(userAgent);\n}\n\nexport function supportsPopups(ua? : string = getUserAgent()) : boolean {\n return !(isIosWebview(ua) || isAndroidWebview(ua) || isOperaMini(ua) ||\n isFirefoxIOS(ua) || isEdgeIOS(ua) || isFacebookWebView(ua) || isQQBrowser(ua) || isElectron() || isMacOsCna() || isStandAlone());\n}\n\nexport function isChrome(ua? : string = getUserAgent()) : boolean {\n return (/Chrome|Chromium|CriOS/).test(ua);\n}\n\nexport function isSafari(ua? : string = getUserAgent()) : boolean {\n return (/Safari/).test(ua) && !isChrome(ua);\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\n\nimport type { CancelableType } from './types';\n\nexport function getFunctionName (fn : T) : string {\n return fn.name || fn.__name__ || fn.displayName || 'anonymous';\n}\n\nexport function setFunctionName (fn : T, name : string) : T {\n try {\n delete fn.name;\n fn.name = name;\n } catch (err) {\n // pass\n }\n\n fn.__name__ = fn.displayName = name;\n return fn;\n}\n\nexport function base64encode(str : string) : string {\n if (typeof btoa === 'function') {\n return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, (m, p1) => {\n return String.fromCharCode(parseInt(p1, 16));\n }));\n }\n\n if (typeof Buffer !== 'undefined') {\n return Buffer.from(str, 'utf8').toString('base64');\n }\n\n throw new Error(`Can not find window.btoa or Buffer`);\n}\n\nexport function base64decode(str : string) : string {\n if (typeof atob === 'function') {\n return decodeURIComponent(Array.prototype.map.call(atob(str), c => {\n // eslint-disable-next-line prefer-template\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\n }).join(''));\n }\n\n if (typeof Buffer !== 'undefined') {\n return Buffer.from(str, 'base64').toString('utf8');\n }\n\n throw new Error(`Can not find window.atob or Buffer`);\n}\n\nexport function uniqueID() : string {\n\n let chars = '0123456789abcdef';\n\n let randomID = 'xxxxxxxxxx'.replace(/./g, () => {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n });\n\n let timeID = base64encode(\n new Date().toISOString().slice(11, 19).replace('T', '.')\n ).replace(/[^a-zA-Z0-9]/g, '').toLowerCase();\n\n return `${ randomID }_${ timeID }`;\n}\n\nexport function getGlobal() : Object {\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n if (typeof __GLOBAL__ !== 'undefined') {\n return __GLOBAL__;\n }\n throw new Error(`No global found`);\n}\n\nlet objectIDs;\n\nexport function getObjectID(obj : Object) : string {\n\n objectIDs = objectIDs || new WeakMap();\n\n if (obj === null || obj === undefined || (typeof obj !== 'object' && typeof obj !== 'function')) {\n throw new Error(`Invalid object`);\n }\n\n let uid = objectIDs.get(obj);\n\n if (!uid) {\n uid = `${ typeof obj }:${ uniqueID() }`;\n objectIDs.set(obj, uid);\n }\n\n return uid;\n}\n\nfunction serializeArgs(args : Array) : string {\n try {\n return JSON.stringify(Array.prototype.slice.call(args), (subkey, val) => {\n if (typeof val === 'function') {\n return `memoize[${ getObjectID(val) }]`;\n }\n return val;\n });\n } catch (err) {\n throw new Error(`Arguments not serializable -- can not be used to memoize`);\n }\n}\nexport function memoize) => R, X : { (...args : Array) : R, displayName : string, reset : () => void }>(method : F, options : { time? : number, thisNamespace? : boolean } = {}) : X {\n let cacheMap = new WeakMap();\n\n // $FlowFixMe\n let memoizedFunction : X = function memoizedFunction(...args : Array) : R {\n let cache = cacheMap.getOrSet(options.thisNamespace ? this : method, () => ({}));\n\n let key : string = serializeArgs(args);\n\n let cacheTime = options.time;\n if (cache[key] && cacheTime && (Date.now() - cache[key].time) < cacheTime) {\n delete cache[key];\n }\n\n if (cache[key]) {\n return cache[key].value;\n }\n\n let time = Date.now();\n let value = method.apply(this, arguments);\n\n cache[key] = { time, value };\n\n return cache[key].value;\n };\n\n memoizedFunction.reset = () => {\n cacheMap.delete(options.thisNamespace ? this : method);\n };\n\n return setFunctionName(memoizedFunction, `${ getFunctionName(method) }::memoized`);\n}\n\nexport function promiseIdentity(item : ZalgoPromise | T) : ZalgoPromise {\n // $FlowFixMe\n return ZalgoPromise.resolve(item);\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport function memoizePromise(method : (...args : Array) => ZalgoPromise) : ((...args : Array) => ZalgoPromise) {\n let cache = {};\n\n // eslint-disable-next-line flowtype/no-weak-types\n function memoizedPromiseFunction(...args : Array) : ZalgoPromise {\n let key : string = serializeArgs(args);\n\n if (cache.hasOwnProperty(key)) {\n return cache[key];\n }\n\n cache[key] = ZalgoPromise.try(() => method.apply(this, arguments))\n .finally(() => {\n delete cache[key];\n });\n\n return cache[key];\n }\n\n memoizedPromiseFunction.reset = () => {\n cache = {};\n };\n\n return setFunctionName(memoizedPromiseFunction, `${ getFunctionName(method) }::promiseMemoized`);\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport function promisify(method : (...args : Array) => R, options : { name? : string } = {}) : ((...args : Array) => ZalgoPromise) {\n function promisifiedFunction() : ZalgoPromise {\n return ZalgoPromise.try(method, this, arguments);\n }\n\n if (options.name) {\n promisifiedFunction.displayName = `${ options.name }:promisified`;\n }\n\n return setFunctionName(promisifiedFunction, `${ getFunctionName(method) }::promisified`);\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport function inlineMemoize(method : (...args : Array) => R, logic : (...args : Array) => R, args : Array = []) : R {\n // $FlowFixMe\n let cache = method.__inline_memoize_cache__ = method.__inline_memoize_cache__ || {};\n let key = serializeArgs(args);\n\n if (cache.hasOwnProperty(key)) {\n return cache[key];\n }\n \n let result = cache[key] = logic(...args);\n\n return result;\n}\n\n// eslint-disable-next-line no-unused-vars\nexport function noop(...args : Array) {\n // pass\n}\n\nexport function once(method : Function) : Function {\n let called = false;\n\n const onceFunction = function() : mixed {\n if (!called) {\n called = true;\n return method.apply(this, arguments);\n }\n };\n\n return setFunctionName(onceFunction, `${ getFunctionName(method) }::once`);\n}\n\nexport function hashStr(str : string) : number {\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n hash += str[i].charCodeAt(0) * Math.pow((i % 10) + 1, 5);\n }\n return Math.floor(Math.pow(Math.sqrt(hash), 5));\n}\n\nexport function strHashStr(str : string) : string {\n let hash = '';\n\n for (let i = 0; i < str.length; i++) {\n let total = (str[i].charCodeAt(0) * i);\n\n if (str[i + 1]) {\n total += (str[i + 1].charCodeAt(0) * (i - 1));\n }\n\n hash += String.fromCharCode(97 + (Math.abs(total) % 26));\n }\n\n return hash;\n}\n\nexport function match(str : string, pattern : RegExp) : ?string {\n let regmatch = str.match(pattern);\n if (regmatch) {\n return regmatch[1];\n }\n}\n\nexport function awaitKey(obj : Object, key : string) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n\n let value = obj[key];\n\n if (value) {\n return resolve(value);\n }\n\n delete obj[key];\n\n Object.defineProperty(obj, key, {\n\n configurable: true,\n\n set(item) {\n value = item;\n\n if (value) {\n resolve(value);\n }\n },\n\n get() : mixed {\n return value;\n }\n });\n });\n}\n\nexport function stringifyError(err : mixed, level : number = 1) : string {\n\n if (level >= 3) {\n return 'stringifyError stack overflow';\n }\n\n try {\n if (!err) {\n return ``;\n }\n\n if (typeof err === 'string') {\n return err;\n }\n\n if (err instanceof Error) {\n let stack = err && err.stack;\n let message = err && err.message;\n\n if (stack && message) {\n if (stack.indexOf(message) !== -1) {\n return stack;\n } else {\n return `${ message }\\n${ stack }`;\n }\n } else if (stack) {\n return stack;\n } else if (message) {\n return message;\n }\n }\n\n if (err && err.toString && typeof err.toString === 'function') {\n // $FlowFixMe\n return err.toString();\n }\n\n return Object.prototype.toString.call(err);\n\n } catch (newErr) { // eslint-disable-line unicorn/catch-error-name\n return `Error while stringifying error: ${ stringifyError(newErr, level + 1) }`;\n }\n}\n\nexport function stringifyErrorMessage(err : mixed) : string {\n\n let defaultMessage = ``;\n\n if (!err) {\n return defaultMessage;\n }\n\n if (err instanceof Error) {\n return err.message || defaultMessage;\n }\n\n if (typeof err.message === 'string') {\n return err.message || defaultMessage;\n }\n\n return defaultMessage;\n}\n\nexport function stringify(item : mixed) : string {\n if (typeof item === 'string') {\n return item;\n }\n\n if (item && item.toString && typeof item.toString === 'function') {\n // $FlowFixMe\n return item.toString();\n }\n\n return Object.prototype.toString.call(item);\n}\n\nexport function domainMatches(hostname : string, domain : string) : boolean {\n hostname = hostname.split('://')[1];\n let index = hostname.indexOf(domain);\n return (index !== -1 && hostname.slice(index) === domain);\n}\n\nexport function patchMethod(obj : Object, name : string, handler : Function) {\n let original = obj[name];\n\n obj[name] = function patchedMethod() : mixed {\n return handler({\n context: this,\n args: Array.prototype.slice.call(arguments),\n original,\n callOriginal: () => original.apply(this, arguments)\n });\n };\n}\n\nexport function extend(obj : T, source : Object) : T {\n if (!source) {\n return obj;\n }\n\n if (Object.assign) {\n return Object.assign(obj, source);\n }\n\n for (let key in source) {\n if (source.hasOwnProperty(key)) {\n obj[key] = source[key];\n }\n }\n\n return obj;\n}\n\nexport function values(obj : { [string] : T }) : Array {\n let result = [];\n for (let key in obj) {\n if (obj.hasOwnProperty(key)) {\n result.push(obj[key]);\n }\n }\n return result;\n}\n\nexport function perc(pixels : number, percentage : number) : number {\n return Math.round((pixels * percentage) / 100);\n}\n\nexport function min(...args : Array) : number {\n return Math.min(...args);\n}\n\nexport function max(...args : Array) : number {\n return Math.max(...args);\n}\n\nexport function regexMap(str : string, regexp : RegExp, handler : () => T) : Array {\n let results = [];\n\n // $FlowFixMe\n str.replace(regexp, function regexMapMatcher(item) {\n results.push(handler ? handler.apply(null, arguments) : item);\n });\n\n // $FlowFixMe\n return results;\n}\n\nexport function svgToBase64(svg : string) : string {\n return `data:image/svg+xml;base64,${ base64encode(svg) }`;\n}\n\nexport function objFilter(obj : { [string] : T }, filter? : (T, ?string) => mixed = Boolean) : { [string] : R } {\n let result = {};\n\n for (let key in obj) {\n if (!obj.hasOwnProperty(key) || !filter(obj[key], key)) {\n continue;\n }\n\n result[key] = obj[key];\n }\n\n return result;\n}\n\nexport function identity (item : T) : T {\n return item;\n}\n\nexport function regexTokenize(text : string, regexp : RegExp) : Array {\n let result = [];\n text.replace(regexp, token => {\n result.push(token);\n return '';\n });\n return result;\n}\n\nexport function promiseDebounce(method : () => ZalgoPromise | T, delay : number = 50) : () => ZalgoPromise {\n\n let promise;\n let timeout;\n\n const promiseDebounced = function() : ZalgoPromise {\n if (timeout) {\n clearTimeout(timeout);\n }\n\n let localPromise = promise = promise || new ZalgoPromise();\n\n timeout = setTimeout(() => {\n promise = null;\n timeout = null;\n\n ZalgoPromise.try(method).then(\n result => { localPromise.resolve(result); },\n err => { localPromise.reject(err); }\n );\n }, delay);\n\n return localPromise;\n };\n\n return setFunctionName(promiseDebounced, `${ getFunctionName(method) }::promiseDebounced`);\n}\n\nexport function safeInterval(method : Function, time : number) : { cancel : () => void } {\n\n let timeout;\n\n function loop() {\n timeout = setTimeout(() => {\n method();\n loop();\n }, time);\n }\n\n loop();\n\n return {\n cancel() {\n clearTimeout(timeout);\n }\n };\n}\n\nexport function isInteger(str : string) : boolean {\n return Boolean(str.match(/^[0-9]+$/));\n}\n\nexport function isFloat(str : string) : boolean {\n return Boolean(str.match(/^[0-9]+\\.[0-9]+$/));\n}\n\nexport function serializePrimitive(value : string | number | boolean) : string {\n return value.toString();\n}\n\nexport function deserializePrimitive(value : string) : string | number | boolean {\n if (value === 'true') {\n return true;\n } else if (value === 'false') {\n return false;\n } else if (isInteger(value)) {\n return parseInt(value, 10);\n } else if (isFloat(value)) {\n return parseFloat(value);\n } else {\n return value;\n }\n}\n\nexport function dotify(obj : Object, prefix : string = '', newobj : Object = {}) : { [string] : string } {\n prefix = prefix ? `${ prefix }.` : prefix;\n for (let key in obj) {\n if (!obj.hasOwnProperty(key) || obj[key] === undefined || obj[key] === null || typeof obj[key] === 'function') {\n continue;\n } else if (obj[key] && Array.isArray(obj[key]) && obj[key].length && obj[key].every(val => typeof val !== 'object')) {\n newobj[`${ prefix }${ key }[]`] = obj[key].join(',');\n } else if (obj[key] && typeof obj[key] === 'object') {\n newobj = dotify(obj[key], `${ prefix }${ key }`, newobj);\n } else {\n newobj[`${ prefix }${ key }`] = serializePrimitive(obj[key]);\n }\n }\n return newobj;\n}\n\nexport function undotify(obj : { [string] : string }) : Object {\n \n let result = {};\n\n for (let key in obj) {\n if (!obj.hasOwnProperty(key) || typeof obj[key] !== 'string') {\n continue;\n }\n\n let value = obj[key];\n\n if (key.match(/^.+\\[\\]$/)) {\n key = key.slice(0, key.length - 2);\n value = value.split(',').map(deserializePrimitive);\n } else {\n value = deserializePrimitive(value);\n }\n\n let keyResult = result;\n let parts = key.split('.');\n for (let i = 0; i < parts.length; i++) {\n let part = parts[i];\n let isLast = (i + 1 === parts.length);\n let isIndex = !isLast && isInteger(parts[i + 1]);\n\n if (part === 'constructor' || part === 'prototype' || part === '__proto__') {\n throw new Error(`Disallowed key: ${ part }`);\n }\n\n if (isLast) {\n // $FlowFixMe\n keyResult[part] = value;\n } else {\n // $FlowFixMe\n keyResult = keyResult[part] = keyResult[part] || (isIndex ? [] : {});\n }\n }\n }\n\n return result;\n}\n\nexport type EventEmitterType = {\n on : (eventName : string, handler : Function) => CancelableType,\n once : (eventName : string, handler : Function) => CancelableType,\n trigger : (eventName : string, ...args : $ReadOnlyArray) => ZalgoPromise,\n triggerOnce : (eventName : string, ...args : $ReadOnlyArray) => ZalgoPromise\n};\n\nexport function eventEmitter() : EventEmitterType {\n let triggered = {};\n let handlers = {};\n\n return {\n\n on(eventName : string, handler : Function) : CancelableType {\n let handlerList = handlers[eventName] = handlers[eventName] || [];\n\n handlerList.push(handler);\n\n let cancelled = false;\n\n return {\n cancel() {\n if (!cancelled) {\n cancelled = true;\n handlerList.splice(handlerList.indexOf(handler), 1);\n }\n\n }\n };\n },\n\n once(eventName : string, handler : Function) : CancelableType {\n\n let listener = this.on(eventName, () => {\n listener.cancel();\n handler();\n });\n\n return listener;\n },\n\n trigger(eventName : string, ...args : $ReadOnlyArray) : ZalgoPromise {\n\n let handlerList = handlers[eventName];\n let promises = [];\n\n if (handlerList) {\n for (let handler of handlerList) {\n promises.push(ZalgoPromise.try(() => handler(...args)));\n }\n }\n\n return ZalgoPromise.all(promises).then(noop);\n },\n\n triggerOnce(eventName : string, ...args : $ReadOnlyArray) : ZalgoPromise {\n\n if (triggered[eventName]) {\n return ZalgoPromise.resolve();\n }\n\n triggered[eventName] = true;\n return this.trigger(eventName, ...args);\n }\n };\n}\n\nexport function camelToDasherize(string : string) : string {\n return string.replace(/([A-Z])/g, (g) => {\n return `-${ g.toLowerCase() }`;\n });\n}\n\nexport function dasherizeToCamel(string : string) : string {\n return string.replace(/-([a-z])/g, (g) => {\n return g[1].toUpperCase();\n });\n}\n\nexport function capitalizeFirstLetter(string : string) : string {\n return string.charAt(0).toUpperCase() + string.slice(1).toLowerCase();\n}\n\nexport function get(item : Object, path : string, def : mixed) : mixed {\n\n if (!path) {\n return def;\n }\n\n let pathParts = path.split('.');\n\n // Loop through each section of our key path\n\n for (let i = 0; i < pathParts.length; i++) {\n\n // If we have an object, we can get the key\n if (typeof item === 'object' && item !== null) {\n item = item[pathParts[i]];\n\n // Otherwise, we should return the default (undefined if not provided)\n } else {\n return def;\n }\n }\n\n // If our final result is undefined, we should return the default\n\n return item === undefined ? def : item;\n}\n\nexport function safeTimeout(method : Function, time : number) {\n\n let interval = safeInterval(() => {\n time -= 100;\n if (time <= 0) {\n interval.cancel();\n method();\n }\n }, 100);\n}\n\nexport function defineLazyProp(obj : Object | Array, key : string | number, getter : () => T) {\n if (Array.isArray(obj)) {\n if (typeof key !== 'number') {\n throw new TypeError(`Array key must be number`);\n }\n } else if (typeof obj === 'object' && obj !== null) {\n if (typeof key !== 'string') {\n throw new TypeError(`Object key must be string`);\n }\n }\n \n Object.defineProperty(obj, key, {\n configurable: true,\n enumerable: true,\n get: () => {\n // $FlowFixMe\n delete obj[key];\n let value = getter();\n // $FlowFixMe\n obj[key] = value;\n return value;\n },\n set: (value : T) => {\n // $FlowFixMe\n delete obj[key];\n // $FlowFixMe\n obj[key] = value;\n }\n });\n}\n\nexport function arrayFrom(item : Iterable) : Array { // eslint-disable-line no-undef\n return Array.prototype.slice.call(item);\n}\n\nexport function isObject(item : mixed) : boolean {\n return (typeof item === 'object' && item !== null);\n}\n\nexport function isObjectObject(obj : mixed) : boolean {\n return isObject(obj) && Object.prototype.toString.call(obj) === '[object Object]';\n}\n\nexport function isPlainObject(obj : mixed) : boolean {\n if (!isObjectObject(obj)) {\n return false;\n }\n\n // $FlowFixMe\n let constructor = obj.constructor;\n\n if (typeof constructor !== 'function') {\n return false;\n }\n\n let prototype = constructor.prototype;\n\n if (!isObjectObject(prototype)) {\n return false;\n }\n\n if (!prototype.hasOwnProperty('isPrototypeOf')) {\n return false;\n }\n\n return true;\n}\n\nexport function replaceObject | Object> (item : T, replacer : (mixed, string | number, string) => mixed, fullKey : string = '') : T {\n\n if (Array.isArray(item)) {\n let length = item.length;\n let result : Array = [];\n\n for (let i = 0; i < length; i++) {\n\n \n defineLazyProp(result, i, () => {\n let itemKey = fullKey ? `${ fullKey }.${ i }` : `${ i }`;\n let el = item[i];\n\n let child = replacer(el, i, itemKey);\n\n if (isPlainObject(child) || Array.isArray(child)) {\n // $FlowFixMe\n child = replaceObject(child, replacer, itemKey);\n }\n\n return child;\n });\n }\n\n // $FlowFixMe\n return result;\n } else if (isPlainObject(item)) {\n let result = {};\n\n for (let key in item) {\n if (!item.hasOwnProperty(key)) {\n continue;\n }\n\n defineLazyProp(result, key, () => {\n let itemKey = fullKey ? `${ fullKey }.${ key }` : `${ key }`;\n // $FlowFixMe\n let el = item[key];\n\n let child = replacer(el, key, itemKey);\n\n if (isPlainObject(child) || Array.isArray(child)) {\n // $FlowFixMe\n child = replaceObject(child, replacer, itemKey);\n }\n\n return child;\n });\n }\n\n // $FlowFixMe\n return result;\n } else {\n throw new Error(`Pass an object or array`);\n }\n}\n\n\nexport function copyProp(source : Object, target : Object, name : string, def : mixed) {\n if (source.hasOwnProperty(name)) {\n let descriptor = Object.getOwnPropertyDescriptor(source, name);\n // $FlowFixMe\n Object.defineProperty(target, name, descriptor);\n\n } else {\n target[name] = def;\n }\n}\n\ntype RegexResultType = {\n text : string,\n groups : Array,\n start : number,\n end : number,\n length : number,\n replace : (text : string) => string\n};\n\nexport function regex(pattern : string | RegExp, string : string, start : number = 0) : ?RegexResultType {\n\n if (typeof pattern === 'string') {\n // eslint-disable-next-line security/detect-non-literal-regexp\n pattern = new RegExp(pattern);\n }\n\n let result = string.slice(start).match(pattern);\n\n if (!result) {\n return;\n }\n\n // $FlowFixMe\n let index : number = result.index;\n let regmatch = result[0];\n\n return {\n text: regmatch,\n groups: result.slice(1),\n start: start + index,\n end: start + index + regmatch.length,\n length: regmatch.length,\n\n replace(text : string) : string {\n\n if (!regmatch) {\n return '';\n }\n\n return `${ regmatch.slice(0, start + index) }${ text }${ regmatch.slice(index + regmatch.length) }`;\n }\n };\n}\n\nexport function regexAll(pattern : string | RegExp, string : string) : Array {\n\n let matches = [];\n let start = 0;\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n let regmatch = regex(pattern, string, start);\n\n if (!regmatch) {\n break;\n }\n\n matches.push(regmatch);\n start = match.end;\n }\n\n return matches;\n}\n\nexport function isDefined(value : ?mixed) : boolean {\n return value !== null && value !== undefined;\n}\n\nexport function cycle(method : Function) : ZalgoPromise {\n return ZalgoPromise.try(method).then(() => cycle(method));\n}\n\nexport function debounce(method : (...args : Array) => T, time : number = 100) : (...args : Array) => void {\n\n let timeout;\n\n const debounceWrapper = function() {\n clearTimeout(timeout);\n\n timeout = setTimeout(() => {\n return method.apply(this, arguments);\n }, time);\n };\n\n return setFunctionName(debounceWrapper, `${ getFunctionName(method) }::debounced`);\n}\n\nexport function isRegex(item : mixed) : boolean {\n return Object.prototype.toString.call(item) === '[object RegExp]';\n}\n\ntype FunctionProxy = (method : T) => T;\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport let weakMapMemoize : FunctionProxy<*> = (method : (arg : any) => R) : ((...args : Array) => R) => {\n\n let weakmap = new WeakMap();\n\n // eslint-disable-next-line flowtype/no-weak-types\n return function weakmapMemoized(arg : any) : R {\n return weakmap.getOrSet(arg, () => method.call(this, arg));\n };\n};\n\ntype FunctionPromiseProxy) => ZalgoPromise> = (T) => T;\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport let weakMapMemoizePromise : FunctionPromiseProxy<*, *> = (method : (arg : any) => ZalgoPromise) : ((...args : Array) => ZalgoPromise) => {\n\n let weakmap = new WeakMap();\n\n // eslint-disable-next-line flowtype/no-weak-types\n return function weakmapMemoizedPromise(arg : any) : ZalgoPromise {\n return weakmap.getOrSet(arg, () =>\n method.call(this, arg).finally(() => {\n weakmap.delete(arg);\n })\n );\n };\n};\n\nexport function getOrSet(obj : O, key : string, getter : () => T) : T {\n if (obj.hasOwnProperty(key)) {\n return obj[key];\n }\n\n const val = getter();\n obj[key] = val;\n return val;\n}\n\nexport type CleanupType = {|\n set : (string, T) => T, // eslint-disable-line no-undef\n register : (Function) => void,\n all : () => ZalgoPromise\n|};\n\nexport function cleanup(obj : Object) : CleanupType {\n\n const tasks = [];\n let cleaned = false;\n\n return {\n set(name : string, item : T) : T {\n if (!cleaned) {\n obj[name] = item;\n this.register(() => {\n delete obj[name];\n });\n }\n return item;\n },\n\n register(method : Function) {\n if (cleaned) {\n method();\n } else {\n tasks.push(once(method));\n }\n },\n\n all() : ZalgoPromise {\n const results = [];\n cleaned = true;\n\n while (tasks.length) {\n const task = tasks.pop();\n results.push(task());\n }\n\n return ZalgoPromise.all(results).then(noop);\n }\n };\n}\n\nexport function tryCatch(fn : () => T) : {| result : T, error : void |} | {| result : void, error : mixed |} {\n let result;\n let error;\n\n try {\n result = fn();\n } catch (err) {\n error = err;\n }\n \n // $FlowFixMe\n return { result, error };\n}\n\nexport function removeFromArray>(arr : T, item : X) {\n const index = arr.indexOf(item);\n if (index !== -1) {\n arr.splice(index, 1);\n }\n}\n\nexport function assertExists(name : string, thing : void | null | T) : T {\n if (thing === null || typeof thing === 'undefined') {\n throw new Error(`Expected ${ name } to be present`);\n }\n \n return thing;\n}\n \nexport function unique(arr : $ReadOnlyArray) : $ReadOnlyArray {\n const result = {};\n for (const item of arr) {\n // eslint-disable-next-line const-immutable/no-mutation\n result[item] = true;\n }\n return Object.keys(result);\n}\n","/* @flow */\n\nexport const KEY_CODES = {\n ENTER: 13\n};\n","/* @flow */\n/* eslint max-lines: off */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { linkFrameWindow, isWindowClosed,\n type SameDomainWindowType, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\n\nimport { inlineMemoize, noop, stringify, capitalizeFirstLetter,\n once, extend, safeInterval, uniqueID, arrayFrom } from './util';\nimport { isDevice } from './device';\nimport { KEY_CODES } from './constants';\nimport type { CancelableType } from './types';\n\ntype ElementRefType = string | HTMLElement;\n\nexport function isDocumentReady() : boolean {\n return Boolean(document.body) && document.readyState === 'complete';\n}\n\nexport function urlEncode(str : string) : string {\n return str.replace(/\\?/g, '%3F').replace(/&/g, '%26').replace(/#/g, '%23').replace(/\\+/g, '%2B');\n}\n\nexport function waitForWindowReady() : ZalgoPromise {\n return inlineMemoize(waitForWindowReady, () : ZalgoPromise => {\n return new ZalgoPromise(resolve => {\n if (isDocumentReady()) {\n resolve();\n }\n\n window.addEventListener('load', () => resolve());\n });\n });\n}\n\nexport function waitForDocumentReady() : ZalgoPromise {\n return inlineMemoize(waitForDocumentReady, () : ZalgoPromise => {\n return new ZalgoPromise(resolve => {\n\n if (isDocumentReady()) {\n return resolve();\n }\n\n let interval = setInterval(() => {\n if (isDocumentReady()) {\n clearInterval(interval);\n return resolve();\n }\n }, 10);\n });\n });\n}\n\nexport function waitForDocumentBody() : ZalgoPromise {\n return waitForDocumentReady().then(() => {\n if (document.body) {\n return document.body;\n }\n\n throw new Error('Document ready but document.body not present');\n });\n}\n\nexport function parseQuery(queryString : string) : Object {\n return inlineMemoize(parseQuery, () : Object => {\n let params = {};\n\n if (!queryString) {\n return params;\n }\n\n if (queryString.indexOf('=') === -1) {\n return params;\n }\n\n for (let pair of queryString.split('&')) {\n pair = pair.split('=');\n\n if (pair[0] && pair[1]) {\n params[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n }\n\n return params;\n }, [ queryString ]);\n}\n\n\nexport function getQueryParam(name : string) : string {\n return parseQuery(window.location.search.slice(1))[name];\n}\n\nexport function urlWillRedirectPage(url : string) : boolean {\n\n if (url.indexOf('#') === -1) {\n return true;\n }\n\n if (url.indexOf('#') === 0) {\n return false;\n }\n\n if (url.split('#')[0] === window.location.href.split('#')[0]) {\n return false;\n }\n\n return true;\n}\n\nexport function formatQuery(obj : { [ string ] : string } = {}) : string {\n\n return Object.keys(obj).filter(key => {\n return typeof obj[key] === 'string';\n }).map(key => {\n return `${ urlEncode(key) }=${ urlEncode(obj[key]) }`;\n }).join('&');\n}\n\nexport function extendQuery(originalQuery : string, props : { [ string ] : string } = {}) : string {\n\n if (!props || !Object.keys(props).length) {\n return originalQuery;\n }\n\n return formatQuery({\n ...parseQuery(originalQuery),\n ...props\n });\n}\n\nexport function extendUrl(url : string, options : { query? : { [string] : string }, hash? : { [string] : string } } = {}) : string {\n\n let query = options.query || {};\n let hash = options.hash || {};\n\n let originalUrl;\n let originalQuery;\n let originalHash;\n\n [ originalUrl, originalHash ] = url.split('#');\n [ originalUrl, originalQuery ] = originalUrl.split('?');\n\n let queryString = extendQuery(originalQuery, query);\n let hashString = extendQuery(originalHash, hash);\n\n if (queryString) {\n originalUrl = `${ originalUrl }?${ queryString }`;\n }\n\n if (hashString) {\n originalUrl = `${ originalUrl }#${ hashString }`;\n }\n\n return originalUrl;\n}\n\nexport function redirect(url : string, win : CrossDomainWindowType = window) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n win.location = url;\n if (!urlWillRedirectPage(url)) {\n resolve();\n }\n });\n}\n\nexport function hasMetaViewPort() : boolean {\n let meta = document.querySelector('meta[name=viewport]');\n\n if (isDevice() && window.screen.width < 660 && !meta) {\n return false;\n }\n\n return true;\n}\n\nexport function isElementVisible(el : HTMLElement) : boolean {\n return Boolean(el.offsetWidth || el.offsetHeight || el.getClientRects().length);\n}\n\nexport function enablePerformance() : boolean {\n return inlineMemoize(enablePerformance, () : boolean => {\n /* eslint-disable compat/compat */\n return Boolean(\n window.performance &&\n performance.now &&\n performance.timing &&\n performance.timing.connectEnd &&\n performance.timing.navigationStart &&\n (Math.abs(performance.now() - Date.now()) > 1000) &&\n (performance.now() - (performance.timing.connectEnd - performance.timing.navigationStart)) > 0\n );\n /* eslint-enable compat/compat */\n });\n}\n\nexport function getPageRenderTime() : ZalgoPromise {\n return waitForDocumentReady().then(() => {\n\n if (!enablePerformance()) {\n return;\n }\n\n let timing = window.performance.timing;\n\n if (timing.connectEnd && timing.domInteractive) {\n return timing.domInteractive - timing.connectEnd;\n }\n });\n}\n\nexport function htmlEncode(html : string = '') : string {\n return html.toString()\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(/\\//g, '/');\n}\n\nexport function isBrowser() : boolean {\n return (typeof window !== 'undefined');\n}\n\nexport function querySelectorAll(selector : string, doc : HTMLElement = window.document) : Array {\n return Array.prototype.slice.call(doc.querySelectorAll(selector));\n}\n\nexport function onClick(element : HTMLElement, handler : (Event) => void) {\n element.addEventListener('touchstart', noop);\n element.addEventListener('click', handler);\n element.addEventListener('keypress', (event : Event) => {\n // $FlowFixMe\n if (event.keyCode === KEY_CODES.ENTER) {\n return handler(event);\n }\n });\n}\n\nexport function getScript({ host = window.location.host, path } : { host? : string, path : string }) : ?HTMLScriptElement {\n return inlineMemoize(getScript, () : ?HTMLScriptElement => {\n\n let url = `${ host }${ path }`;\n let scripts = Array.prototype.slice.call(document.getElementsByTagName('script'));\n\n for (let script of scripts) {\n if (!script.src) {\n continue;\n }\n\n let src = script.src.replace(/^https?:\\/\\//, '').split('?')[0];\n\n if (src === url) {\n return script;\n }\n }\n }, [ path ]);\n}\n\nexport function isLocalStorageEnabled() : boolean {\n return inlineMemoize(isLocalStorageEnabled, () => {\n try {\n if (typeof window === 'undefined') {\n return false;\n }\n\n if (window.localStorage) {\n let value = Math.random().toString();\n window.localStorage.setItem('__test__localStorage__', value);\n let result = window.localStorage.getItem('__test__localStorage__');\n window.localStorage.removeItem('__test__localStorage__');\n if (value === result) {\n return true;\n }\n }\n } catch (err) {\n // pass\n }\n return false;\n });\n}\n\nexport function getBrowserLocales() : Array<{ country? : string, lang : string }> {\n let nav = window.navigator;\n\n let locales = nav.languages\n ? Array.prototype.slice.apply(nav.languages)\n : [];\n\n if (nav.language) {\n locales.push(nav.language);\n }\n\n if (nav.userLanguage) {\n locales.push(nav.userLanguage);\n }\n\n return locales.map(locale => {\n\n if (locale && locale.match(/^[a-z]{2}[-_][A-Z]{2}$/)) {\n let [ lang, country ] = locale.split(/[-_]/);\n return { country, lang };\n }\n\n if (locale && locale.match(/^[a-z]{2}$/)) {\n return { lang: locale };\n }\n\n return null;\n\n }).filter(Boolean);\n}\n\n\nexport function appendChild(container : HTMLElement, child : HTMLElement | Text) {\n container.appendChild(child);\n}\n\nexport function isElement(element : mixed) : boolean {\n\n if (element instanceof window.Element) {\n return true;\n }\n\n if (element !== null && typeof element === 'object' && element.nodeType === 1 && typeof element.style === 'object' && typeof element.ownerDocument === 'object') {\n return true;\n }\n\n return false;\n}\n\nexport function getElementSafe(id : ElementRefType, doc : Document | HTMLElement = document) : ?HTMLElement {\n\n if (isElement(id)) {\n // $FlowFixMe\n return id;\n }\n\n if (typeof id === 'string') {\n return doc.querySelector(id);\n }\n}\n\nexport function getElement(id : ElementRefType, doc : Document | HTMLElement = document) : HTMLElement {\n\n let element = getElementSafe(id, doc);\n\n if (element) {\n return element;\n }\n\n throw new Error(`Can not find element: ${ stringify(id) }`);\n}\n\nexport function elementReady(id : ElementRefType) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n let name = stringify(id);\n let el = getElementSafe(id);\n\n if (el) {\n return resolve(el);\n }\n\n if (isDocumentReady()) {\n return reject(new Error(`Document is ready and element ${ name } does not exist`));\n }\n\n let interval = setInterval(() => {\n\n el = getElementSafe(id);\n\n if (el) {\n clearInterval(interval);\n return resolve(el);\n }\n\n if (isDocumentReady()) {\n clearInterval(interval);\n return reject(new Error(`Document is ready and element ${ name } does not exist`));\n }\n }, 10);\n });\n}\n\nexport function PopupOpenError(message : string) {\n this.message = message;\n}\n\nPopupOpenError.prototype = Object.create(Error.prototype);\n\ntype PopupOptions = {|\n name? : string,\n width? : number,\n height? : number,\n top? : number,\n left? : number,\n status? : 0 | 1,\n resizable? : 0 | 1,\n toolbar? : 0 | 1,\n menubar? : 0 | 1,\n scrollbars? : 0 | 1\n|};\n\nexport function popup(url : string, options? : PopupOptions) : CrossDomainWindowType {\n\n // $FlowFixMe\n options = options || {};\n\n let { width, height } = options;\n\n let top = 0;\n let left = 0;\n\n if (width) {\n if (window.outerWidth) {\n left = Math.round((window.outerWidth - width) / 2) + window.screenX;\n } else if (window.screen.width) {\n left = Math.round((window.screen.width - width) / 2);\n }\n }\n\n if (height) {\n if (window.outerHeight) {\n top = Math.round((window.outerHeight - height) / 2) + window.screenY;\n } else if (window.screen.height) {\n top = Math.round((window.screen.height - height) / 2);\n }\n }\n\n if (width && height) {\n options = {\n top,\n left,\n width,\n height,\n status: 1,\n toolbar: 0,\n menubar: 0,\n resizable: 1,\n scrollbars: 1,\n ...options\n };\n }\n\n let name = options.name || '';\n delete options.name;\n\n // eslint-disable-next-line array-callback-return\n let params = Object.keys(options).map(key => {\n // $FlowFixMe\n if (options[key] !== null && options[key] !== undefined) {\n return `${ key }=${ stringify(options[key]) }`;\n }\n }).filter(Boolean).join(',');\n\n let win;\n\n try {\n win = window.open(url, name, params, true);\n } catch (err) {\n throw new PopupOpenError(`Can not open popup window - ${ err.stack || err.message }`);\n }\n\n if (isWindowClosed(win)) {\n let err = new PopupOpenError(`Can not open popup window - blocked`);\n throw err;\n }\n\n window.addEventListener('unload', () => win.close());\n\n return win;\n}\n\n\nexport function writeToWindow(win : SameDomainWindowType, html : string) {\n try {\n win.document.open();\n win.document.write(html);\n win.document.close();\n } catch (err) {\n try {\n win.location = `javascript: document.open(); document.write(${ JSON.stringify(html) }); document.close();`;\n } catch (err2) {\n // pass\n }\n }\n}\n\nexport function writeElementToWindow(win : SameDomainWindowType, el : HTMLElement) {\n\n let tag = el.tagName.toLowerCase();\n\n if (tag !== 'html') {\n throw new Error(`Expected element to be html, got ${ tag }`);\n }\n\n let documentElement = win.document.documentElement;\n\n for (const child of arrayFrom(documentElement.children)) {\n documentElement.removeChild(child);\n }\n\n for (const child of arrayFrom(el.children)) {\n documentElement.appendChild(child);\n }\n}\n\nexport function setStyle(el : HTMLElement, styleText : string, doc : Document = window.document) {\n // $FlowFixMe\n if (el.styleSheet) {\n // $FlowFixMe\n el.styleSheet.cssText = styleText;\n } else {\n el.appendChild(doc.createTextNode(styleText));\n }\n}\n\nexport type ElementOptionsType = {\n style? : { [ string ] : string },\n id? : string,\n class? : ?Array,\n attributes? : { [ string ] : string },\n styleSheet? : ?string,\n html? : ?string\n};\n\nlet awaitFrameLoadPromises : WeakMap>;\n\nexport function awaitFrameLoad(frame : HTMLIFrameElement) : ZalgoPromise {\n awaitFrameLoadPromises = awaitFrameLoadPromises || new WeakMap();\n\n if (awaitFrameLoadPromises.has(frame)) {\n let promise = awaitFrameLoadPromises.get(frame);\n if (promise) {\n return promise;\n }\n }\n\n let promise = new ZalgoPromise((resolve, reject) => {\n frame.addEventListener('load', () => {\n linkFrameWindow(frame);\n resolve(frame);\n });\n\n frame.addEventListener('error', (err : Event) => {\n if (frame.contentWindow) {\n resolve(frame);\n } else {\n reject(err);\n }\n });\n });\n\n awaitFrameLoadPromises.set(frame, promise);\n\n return promise;\n}\n\nexport function awaitFrameWindow(frame : HTMLIFrameElement) : ZalgoPromise {\n return awaitFrameLoad(frame).then(loadedFrame => {\n\n if (!loadedFrame.contentWindow) {\n throw new Error(`Could not find window in iframe`);\n }\n\n return loadedFrame.contentWindow;\n });\n}\n\nexport function createElement(tag : string = 'div', options : ElementOptionsType = {}, container : ?HTMLElement) : HTMLElement {\n\n tag = tag.toLowerCase();\n let element = document.createElement(tag);\n\n if (options.style) {\n extend(element.style, options.style);\n }\n\n if (options.class) {\n element.className = options.class.join(' ');\n }\n\n if (options.id) {\n element.setAttribute('id', options.id);\n }\n\n if (options.attributes) {\n for (let key of Object.keys(options.attributes)) {\n element.setAttribute(key, options.attributes[key]);\n }\n }\n\n if (options.styleSheet) {\n setStyle(element, options.styleSheet);\n }\n\n if (container) {\n appendChild(container, element);\n }\n\n if (options.html) {\n if (tag === 'iframe') {\n // $FlowFixMe\n if (!container || !element.contentWindow) {\n throw new Error(`Iframe html can not be written unless container provided and iframe in DOM`);\n }\n\n // $FlowFixMe\n writeToWindow(element.contentWindow, options.html);\n\n } else {\n element.innerHTML = options.html;\n }\n }\n\n return element;\n}\n\n\nexport type IframeElementOptionsType = {\n style? : { [ string ] : string },\n class? : ?Array,\n attributes? : { [ string ] : string },\n styleSheet? : ?string,\n html? : ?string,\n url? : ?string\n};\n\nexport function iframe(options : IframeElementOptionsType = {}, container : ?HTMLElement) : HTMLIFrameElement {\n\n let attributes = options.attributes || {};\n let style = options.style || {};\n\n let frame = createElement('iframe', {\n attributes: {\n allowTransparency: 'true',\n ...attributes\n },\n style: {\n backgroundColor: 'transparent',\n border: 'none',\n ...style\n },\n html: options.html,\n class: options.class\n });\n\n const isIE = window.navigator.userAgent.match(/MSIE|Edge/i);\n \n if (!frame.hasAttribute('id')) {\n frame.setAttribute('id', uniqueID());\n }\n\n // $FlowFixMe\n awaitFrameLoad(frame);\n\n if (container) {\n let el = getElement(container);\n el.appendChild(frame);\n }\n\n if (options.url || isIE) {\n frame.setAttribute('src', options.url || 'about:blank');\n }\n\n // $FlowFixMe\n return frame;\n}\n\nexport function addEventListener(obj : HTMLElement, event : string, handler : (event : Event) => void) : CancelableType {\n obj.addEventListener(event, handler);\n return {\n cancel() {\n obj.removeEventListener(event, handler);\n }\n };\n}\n\nexport function bindEvents(element : HTMLElement, eventNames : Array, handler : (event : Event) => void) : CancelableType {\n\n handler = once(handler);\n\n for (let eventName of eventNames) {\n element.addEventListener(eventName, handler);\n }\n\n return {\n cancel: once(() => {\n for (let eventName of eventNames) {\n element.removeEventListener(eventName, handler);\n }\n })\n };\n}\n\nconst VENDOR_PREFIXES = [ 'webkit', 'moz', 'ms', 'o' ];\n\nexport function setVendorCSS(element : HTMLElement, name : string, value : string) {\n\n // $FlowFixMe\n element.style[name] = value;\n\n let capitalizedName = capitalizeFirstLetter(name);\n\n for (let prefix of VENDOR_PREFIXES) {\n // $FlowFixMe\n element.style[`${ prefix }${ capitalizedName }`] = value;\n }\n}\n\nconst ANIMATION_START_EVENTS = [ 'animationstart', 'webkitAnimationStart', 'oAnimationStart', 'MSAnimationStart' ];\nconst ANIMATION_END_EVENTS = [ 'animationend', 'webkitAnimationEnd', 'oAnimationEnd', 'MSAnimationEnd' ];\n\nexport function animate(element : ElementRefType, name : string, clean : (Function) => void, timeout : number = 1000) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n let el = getElement(element);\n\n if (!el) {\n return resolve();\n }\n\n let hasStarted = false;\n\n let startTimeout;\n let endTimeout;\n let startEvent;\n let endEvent;\n\n function cleanUp() {\n clearTimeout(startTimeout);\n clearTimeout(endTimeout);\n startEvent.cancel();\n endEvent.cancel();\n }\n\n startEvent = bindEvents(el, ANIMATION_START_EVENTS, event => {\n\n // $FlowFixMe\n if (event.target !== el || event.animationName !== name) {\n return;\n }\n\n clearTimeout(startTimeout);\n\n event.stopPropagation();\n\n startEvent.cancel();\n hasStarted = true;\n\n endTimeout = setTimeout(() => {\n cleanUp();\n resolve();\n }, timeout);\n });\n\n endEvent = bindEvents(el, ANIMATION_END_EVENTS, event => {\n\n // $FlowFixMe\n if (event.target !== el || event.animationName !== name) {\n return;\n }\n\n cleanUp();\n\n // $FlowFixMe\n if (typeof event.animationName === 'string' && event.animationName !== name) {\n return reject(`Expected animation name to be ${ name }, found ${ event.animationName }`);\n }\n\n return resolve();\n });\n\n setVendorCSS(el, 'animationName', name);\n\n startTimeout = setTimeout(() => {\n if (!hasStarted) {\n cleanUp();\n return resolve();\n }\n }, 200);\n\n if (clean) {\n clean(cleanUp);\n }\n });\n}\n\nconst STYLE = {\n\n DISPLAY: {\n NONE: 'none',\n BLOCK: 'block'\n },\n\n VISIBILITY: {\n VISIBLE: 'visible',\n HIDDEN: 'hidden'\n },\n\n IMPORTANT: 'important'\n};\n\nexport function makeElementVisible(element : HTMLElement) {\n element.style.setProperty('visibility', '');\n}\n\nexport function makeElementInvisible(element : HTMLElement) {\n element.style.setProperty('visibility', STYLE.VISIBILITY.HIDDEN, STYLE.IMPORTANT);\n}\n\n\nexport function showElement(element : HTMLElement) {\n element.style.setProperty('display', '');\n}\n\nexport function hideElement(element : HTMLElement) {\n element.style.setProperty('display', STYLE.DISPLAY.NONE, STYLE.IMPORTANT);\n}\n\nexport function destroyElement(element : HTMLElement) {\n if (element && element.parentNode) {\n element.parentNode.removeChild(element);\n }\n}\n\nexport function showAndAnimate(element : HTMLElement, name : string, clean : (Function) => void) : ZalgoPromise {\n let animation = animate(element, name, clean);\n showElement(element);\n return animation;\n}\n\nexport function animateAndHide(element : HTMLElement, name : string, clean : (Function) => void) : ZalgoPromise {\n return animate(element, name, clean).then(() => {\n hideElement(element);\n });\n}\n\nexport function addClass(element : HTMLElement, name : string) {\n element.classList.add(name);\n}\n\nexport function removeClass(element : HTMLElement, name : string) {\n element.classList.remove(name);\n}\n\nexport function isElementClosed(el : HTMLElement) : boolean {\n if (!el || !el.parentNode) {\n return true;\n }\n return false;\n}\n\nexport function watchElementForClose(element : HTMLElement, handler : () => mixed) : CancelableType {\n handler = once(handler);\n\n let interval;\n\n if (isElementClosed(element)) {\n handler();\n } else {\n interval = safeInterval(() => {\n if (isElementClosed(element)) {\n interval.cancel();\n handler();\n }\n }, 50);\n }\n\n return {\n cancel() {\n if (interval) {\n interval.cancel();\n }\n }\n };\n}\n\nexport function fixScripts(el : HTMLElement, doc : Document = window.document) {\n for (let script of querySelectorAll('script', el)) {\n let parentNode = script.parentNode;\n\n if (!parentNode) {\n continue;\n }\n\n let newScript = doc.createElement('script');\n newScript.text = script.textContent;\n parentNode.replaceChild(newScript, script);\n }\n}\n\ntype OnResizeOptions = {|\n width? : boolean,\n height? : boolean,\n interval? : number,\n win? : SameDomainWindowType\n|};\n\nexport function onResize(el : HTMLElement, handler : ({ width : number, height : number }) => void, { width = true, height = true, interval = 100, win = window } : OnResizeOptions = {}) : {} {\n let currentWidth = el.offsetWidth;\n let currentHeight = el.offsetHeight;\n\n handler({ width: currentWidth, height: currentHeight });\n\n let check = () => {\n let newWidth = el.offsetWidth;\n let newHeight = el.offsetHeight;\n\n if ((width && newWidth !== currentWidth) || (height && newHeight !== currentHeight)) {\n handler({ width: newWidth, height: newHeight });\n }\n\n currentWidth = newWidth;\n currentHeight = newHeight;\n };\n\n let observer;\n let timeout;\n\n if (typeof win.ResizeObserver !== 'undefined') {\n observer = new win.ResizeObserver(check);\n observer.observe(el);\n\n } else if (typeof win.MutationObserver !== 'undefined') {\n observer = new win.MutationObserver(check);\n observer.observe(el, {\n attributes: true,\n childList: true,\n subtree: true,\n characterData: false\n });\n win.addEventListener('resize', check);\n } else {\n let loop = () => {\n check();\n timeout = setTimeout(loop, interval);\n };\n loop();\n }\n\n return {\n cancel: () => {\n observer.disconnect();\n window.removeEventListener('resize', check);\n clearTimeout(timeout);\n }\n };\n}\n\nexport function getResourceLoadTime(url : string) : ?number {\n\n if (!enablePerformance()) {\n return;\n }\n\n if (!window.performance || typeof window.performance.getEntries !== 'function') {\n return;\n }\n\n const entries = window.performance.getEntries();\n\n for (let i = 0; i < entries.length; i++) {\n const entry = entries[i];\n\n if (entry && entry.name && entry.name.indexOf(url) === 0 && typeof entry.duration === 'number') {\n return Math.floor(entry.duration);\n }\n }\n}\n","/* @flow */\n\nimport { uniqueID, getGlobal, inlineMemoize } from './util';\nimport { isLocalStorageEnabled } from './dom';\n\ntype Getter = (handler : (Object) => T) => T;\n\nexport type Storage = {\n getState : Getter<*>,\n getID : () => string,\n getSessionState : Getter<*>,\n getSessionID : () => string\n};\n\nconst DEFAULT_SESSION_STORAGE = 20 * 60 * 1000;\n\nexport function getStorage({ name, lifetime = DEFAULT_SESSION_STORAGE } : { name : string, lifetime? : number }) : Storage {\n return inlineMemoize(getStorage, () => {\n const STORAGE_KEY = `__${ name }_storage__`;\n\n let accessedStorage;\n\n function getState(handler : (storage : Object) => T) : T {\n\n let localStorageEnabled = isLocalStorageEnabled();\n let storage;\n\n if (accessedStorage) {\n storage = accessedStorage;\n }\n\n if (!storage && localStorageEnabled) {\n let rawStorage = window.localStorage.getItem(STORAGE_KEY);\n\n if (rawStorage) {\n storage = JSON.parse(rawStorage);\n }\n }\n\n if (!storage) {\n storage = getGlobal()[STORAGE_KEY];\n }\n\n if (!storage) {\n storage = {\n id: uniqueID()\n };\n }\n\n if (!storage.id) {\n storage.id = uniqueID();\n }\n\n accessedStorage = storage;\n\n let result = handler(storage);\n\n if (localStorageEnabled) {\n window.localStorage.setItem(STORAGE_KEY, JSON.stringify(storage));\n } else {\n getGlobal()[STORAGE_KEY] = storage;\n }\n\n accessedStorage = null;\n\n return result;\n }\n\n function getID() : string {\n return getState(storage => storage.id);\n }\n\n function getSession(handler : (state : Object) => T) : T {\n return getState(storage => {\n\n let session = storage.__session__;\n let now = Date.now();\n\n if (session && ((now - session.created) > lifetime)) {\n session = null;\n }\n\n if (!session) {\n session = {\n guid: uniqueID(),\n created: now\n };\n }\n\n storage.__session__ = session;\n\n return handler(session);\n });\n }\n\n function getSessionState(handler : (state : Object) => T) : T {\n return getSession(session => {\n session.state = session.state || {};\n return handler(session.state);\n });\n }\n\n function getSessionID() : string {\n return getSession(session => session.guid);\n }\n\n return {\n getState,\n getID,\n getSessionState,\n getSessionID\n };\n }, [ { name, lifetime } ]);\n}\n","/* @flow */\n\nimport { noop } from './util';\nimport { getStorage } from './storage';\n\nfunction getBelterExperimentStorage() : Object {\n return getStorage({ name: 'belter_experiment' });\n}\n\nfunction isEventUnique(name : string) : boolean {\n return getBelterExperimentStorage().getSessionState(state => {\n state.loggedBeacons = state.loggedBeacons || [];\n\n if (state.loggedBeacons.indexOf(name) === -1) {\n state.loggedBeacons.push(name);\n return true;\n }\n\n return false;\n });\n}\n\nexport type Experiment = {\n isEnabled : () => boolean,\n isDisabled : () => boolean,\n getTreatment : () => string,\n log : (string, payload? : { [string] : ?string }) => Experiment,\n logStart : (payload? : { [string] : ?string }) => Experiment,\n logComplete : (payload? : { [string] : ?string }) => Experiment\n};\n\nfunction getThrottlePercentile(name : string) : number {\n return getBelterExperimentStorage().getState(state => {\n state.throttlePercentiles = state.throttlePercentiles || {};\n state.throttlePercentiles[name] = state.throttlePercentiles[name] || Math.floor(Math.random() * 100);\n return state.throttlePercentiles[name];\n });\n}\n\nconst THROTTLE_GROUP = {\n TEST: 'test',\n CONTROL: 'control',\n THROTTLE: 'throttle'\n};\n\ntype ExperimentOptions = {\n name : string,\n sample? : number,\n logTreatment? : ({ name : string, treatment : string, payload : { [string] : ?string } }) => void,\n logCheckpoint? : ({ name : string, treatment : string, checkpoint : string, payload : { [string] : ?string } }) => void\n};\n\nexport function experiment({ name, sample = 50, logTreatment = noop, logCheckpoint = noop } : ExperimentOptions) : Experiment {\n\n let throttle = getThrottlePercentile(name);\n\n let group;\n\n if (throttle < sample) {\n group = THROTTLE_GROUP.TEST;\n } else if ((sample >= 50) || ((sample <= throttle) && (throttle < (sample * 2)))) {\n group = THROTTLE_GROUP.CONTROL;\n } else {\n group = THROTTLE_GROUP.THROTTLE;\n }\n\n let treatment = `${ name }_${ group }`;\n\n let started = false;\n let forced = false;\n\n try {\n if (window.localStorage && window.localStorage.getItem(name)) {\n forced = true;\n }\n } catch (err) {\n // pass\n }\n\n return {\n\n isEnabled() : boolean {\n return (group === THROTTLE_GROUP.TEST) || forced;\n },\n\n isDisabled() : boolean {\n return (group !== THROTTLE_GROUP.TEST) && !forced;\n },\n\n getTreatment() : string {\n return treatment;\n },\n\n log(checkpoint : string, payload? : { [string] : ?string } = {}) : Experiment {\n if (!started) {\n return this;\n }\n\n if (isEventUnique(`${ name }_${ treatment }_${ JSON.stringify(payload) }`)) {\n logTreatment({ name, treatment, payload });\n }\n\n if (isEventUnique(`${ name }_${ treatment }_${ checkpoint }_${ JSON.stringify(payload) }`)) {\n logCheckpoint({ name, treatment, checkpoint, payload });\n }\n\n return this;\n },\n\n logStart(payload? : { [string] : ?string } = {}) : Experiment {\n started = true;\n return this.log(`start`, payload);\n },\n\n logComplete(payload? : { [string] : ?string } = {}) : Experiment {\n return this.log(`complete`, payload);\n }\n };\n}\n","/* @flow */\n\nimport { getGlobal } from './util';\n\nexport function getGlobalNameSpace({ name, version = 'latest' } : { name : string, version? : string }) : { get : (string, defValue? : T) => T } {\n\n let global = getGlobal();\n let globalKey = `__${ name }__${ version }_global__`;\n\n let namespace = global[globalKey] = global[globalKey] || {};\n\n return {\n get: (key : string, defValue? : T) : T => {\n // $FlowFixMe\n defValue = defValue || {};\n let item = namespace[key] = namespace[key] || defValue;\n return item;\n }\n };\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { type SameDomainWindowType } from 'cross-domain-utils/src';\n\ntype RequestOptionsType = {\n url : string,\n method? : string,\n headers? : { [key : string] : string },\n json? : $ReadOnlyArray | Object,\n data? : { [key : string] : string },\n body? : string,\n win? : SameDomainWindowType,\n timeout? : number\n};\n\ntype ResponseType = {\n status : number,\n headers : { [string] : string },\n body : Object\n};\n\nconst HEADERS = {\n CONTENT_TYPE: 'content-type',\n ACCEPT: 'accept'\n};\n\nlet headerBuilders = [];\n\nfunction parseHeaders(rawHeaders : string = '') : { [string] : string } {\n let result = {};\n for (let line of rawHeaders.trim().split('\\n')) {\n let [ key, ...values ] = line.split(':');\n result[key.toLowerCase()] = values.join(':').trim();\n }\n return result;\n}\n\nexport function request({ url, method = 'get', headers = {}, json, data, body, win = window, timeout = 0 } : RequestOptionsType) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n if ((json && data) || (json && body) || (data && json)) {\n throw new Error(`Only options.json or options.data or options.body should be passed`);\n }\n\n let normalizedHeaders = {};\n\n for (let key of Object.keys(headers)) {\n normalizedHeaders[key.toLowerCase()] = headers[key];\n }\n\n if (json) {\n normalizedHeaders[HEADERS.CONTENT_TYPE] = normalizedHeaders[HEADERS.CONTENT_TYPE] || 'application/json';\n } else if (data || body) {\n normalizedHeaders[HEADERS.CONTENT_TYPE] = normalizedHeaders[HEADERS.CONTENT_TYPE] || 'application/x-www-form-urlencoded; charset=utf-8';\n }\n\n normalizedHeaders[HEADERS.ACCEPT] = normalizedHeaders[HEADERS.ACCEPT] || 'application/json';\n\n for (let headerBuilder of headerBuilders) {\n let builtHeaders = headerBuilder();\n\n for (let key of Object.keys(builtHeaders)) {\n normalizedHeaders[key.toLowerCase()] = builtHeaders[key];\n }\n }\n\n let xhr = new win.XMLHttpRequest();\n\n xhr.addEventListener('load', function xhrLoad() : void {\n\n let responseHeaders = parseHeaders(this.getAllResponseHeaders());\n\n if (!this.status) {\n return reject(new Error(`Request to ${ method.toLowerCase() } ${ url } failed: no response status code.`));\n }\n \n let contentType = responseHeaders['content-type'];\n let isJSON = contentType && (contentType.indexOf('application/json') === 0 || contentType.indexOf('text/json') === 0);\n let responseBody = this.responseText;\n\n try {\n responseBody = JSON.parse(responseBody);\n } catch (err) {\n if (isJSON) {\n return reject(new Error(`Invalid json: ${ this.responseText }.`));\n }\n }\n\n let res = {\n status: this.status,\n headers: responseHeaders,\n body: responseBody\n };\n\n return resolve(res);\n\n }, false);\n\n xhr.addEventListener('error', (evt) => {\n reject(new Error(`Request to ${ method.toLowerCase() } ${ url } failed: ${ evt.toString() }.`));\n }, false);\n\n xhr.open(method, url, true);\n\n for (let key in normalizedHeaders) {\n if (normalizedHeaders.hasOwnProperty(key)) {\n xhr.setRequestHeader(key, normalizedHeaders[key]);\n }\n }\n\n if (json) {\n body = JSON.stringify(json);\n } else if (data) {\n body = Object.keys(data).map(key => {\n return `${ encodeURIComponent(key) }=${ data ? encodeURIComponent(data[key]) : '' }`;\n }).join('&');\n }\n\n xhr.timeout = timeout;\n xhr.ontimeout = function xhrTimeout() {\n reject(new Error(`Request to ${ method.toLowerCase() } ${ url } has timed out`));\n };\n\n xhr.send(body);\n });\n}\n\nexport function addHeaderBuilder(method : () => { [string] : string }) {\n headerBuilders.push(method);\n}\n","/* @flow */\n\n// export something to force webpack to see this as an ES module\nexport const TYPES = true;\n\ndeclare var __TEST__ : boolean;\n\nexport type JSONPrimitive = string | boolean | number;\nexport type JSONObject = { [string] : JSONPrimitive | JSONObject } | Array;\nexport type JSONType = JSONObject | JSONPrimitive;\n\nexport type CancelableType = {\n cancel : () => void\n};\n","/* @flow */\n\nimport { memoize, promisify } from './util';\n\nexport function memoized(target : Object, name : string, descriptor : Object) {\n descriptor.value = memoize(descriptor.value, { name, thisNamespace: true });\n}\n\nexport function promise(target : Object, name : string, descriptor : Object) {\n descriptor.value = promisify(descriptor.value, { name });\n}\n","/* @flow */\n\nexport function isPerc(str : string) : boolean {\n return typeof str === 'string' && (/^[0-9]+%$/).test(str);\n}\n\nexport function isPx(str : string) : boolean {\n return typeof str === 'string' && (/^[0-9]+px$/).test(str);\n}\n\nexport function toNum(val : string | number) : number {\n\n if (typeof val === 'number') {\n return val;\n }\n\n let match = val.match(/^([0-9]+)(px|%)$/);\n\n if (!match) {\n throw new Error(`Could not match css value from ${ val }`);\n }\n\n return parseInt(match[1], 10);\n}\n\nexport function toPx(val : number | string) : string {\n return `${ toNum(val) }px`;\n}\n\nexport function toCSS(val : number | string) : string {\n\n if (typeof val === 'number') {\n return toPx(val);\n }\n\n return isPerc(val) ? val : toPx(val);\n}\n\nexport function percOf(num : number, perc : string) : number {\n return parseInt(num * toNum(perc) / 100, 10);\n}\n\nexport function normalizeDimension(dim : string | number, max : number) : number {\n if (typeof dim === 'number') {\n return dim;\n } else if (isPerc(dim)) {\n return percOf(max, dim);\n } else if (isPx(dim)) {\n return toNum(dim);\n } else {\n throw new Error(`Can not normalize dimension: ${ dim }`);\n }\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { noop, tryCatch, removeFromArray } from './util';\n\ntype Prom = Promise | ZalgoPromise; // eslint-disable-line no-restricted-globals, promise/no-native\n\ntype Handler = >(name : string, fn? : (...args : A) => T) => (...args : A) => T; // eslint-disable-line no-undef\ntype Wrapper = ({ expect : Handler, avoid : Handler, expectError : Handler, error : Handler }) => (Prom | void);\n\nexport function wrapPromise(method : Wrapper, { timeout = 5000 } : { timeout? : number } = {}) : ZalgoPromise {\n let expected : Array = [];\n let promises : Array> = [];\n\n let timer = setTimeout(() => {\n if (expected.length) {\n promises.push(ZalgoPromise.asyncReject(new Error(`Expected ${ expected[0] } to be called`)));\n }\n }, timeout);\n\n let expect : Handler = (name, fn = noop) => {\n expected.push(name);\n \n // $FlowFixMe\n return function expectWrapper(...args) : * {\n removeFromArray(expected, name);\n\n // $FlowFixMe\n let { result, error } = tryCatch(() => fn.call(this, ...args));\n\n if (error) {\n promises.push(ZalgoPromise.asyncReject(error));\n throw error;\n }\n\n promises.push(ZalgoPromise.resolve(result));\n return result;\n };\n };\n\n let avoid : Handler = (name : string, fn = noop) => {\n\n // $FlowFixMe\n return function avoidWrapper(...args) : * {\n promises.push(ZalgoPromise.asyncReject(new Error(`Expected ${ name } to not be called`)));\n // $FlowFixMe\n return fn.call(this, ...args);\n };\n };\n\n let expectError : Handler = (name, fn = noop) => {\n expected.push(name);\n\n // $FlowFixMe\n return function expectErrorWrapper(...args) : * {\n removeFromArray(expected, name);\n\n // $FlowFixMe\n let { result, error } = tryCatch(() => fn.call(this, ...args));\n\n if (error) {\n throw error;\n }\n\n promises.push(ZalgoPromise.resolve(result).then(() => {\n throw new Error(`Expected ${ name } to throw an error`);\n }, noop));\n return result;\n };\n };\n\n promises.push(ZalgoPromise.try(() => method({ expect, avoid, expectError, error: avoid })));\n\n let drain = () => {\n return ZalgoPromise.try(() => {\n if (promises.length) {\n return promises.pop();\n }\n }).then(() => {\n if (promises.length) {\n return drain();\n }\n if (expected.length) {\n return ZalgoPromise.delay(10).then(drain);\n }\n });\n };\n\n return drain().then(() => {\n clearTimeout(timer);\n });\n}\n","/* @flow */\n\nexport * from './device';\nexport * from './dom';\nexport * from './experiment';\nexport * from './global';\nexport * from './storage';\nexport * from './util';\nexport * from './http';\nexport * from './types';\nexport * from './decorators';\nexport * from './css';\nexport * from './test';\n","/* @flow */\n\nexport function hasNativeWeakMap() : boolean {\n\n if (typeof WeakMap === 'undefined') {\n return false;\n }\n\n if (typeof Object.freeze === 'undefined') {\n return false;\n }\n\n try {\n\n let testWeakMap = new WeakMap();\n let testKey = {};\n let testValue = '__testvalue__';\n\n Object.freeze(testKey);\n\n testWeakMap.set(testKey, testValue);\n\n if (testWeakMap.get(testKey) === testValue) {\n return true;\n }\n\n return false;\n\n } catch (err) {\n\n return false;\n }\n}\n","/* @flow */\n\nexport function safeIndexOf(collection : Array, item : T) : number {\n for (let i = 0; i < collection.length; i++) {\n\n try {\n if (collection[i] === item) {\n return i;\n }\n } catch (err) {\n // pass\n }\n }\n\n return -1;\n}\n\n// eslint-disable-next-line no-unused-vars\nexport function noop(...args : Array) {\n // pass\n}\n","/* @flow */\n\nimport { isWindow, isWindowClosed } from 'cross-domain-utils/src';\n\nimport { hasNativeWeakMap } from './native';\nimport { noop, safeIndexOf } from './util';\n\nexport class CrossDomainSafeWeakMap {\n\n name : string\n weakmap : ?WeakMap\n keys : Array\n values : Array\n\n constructor() {\n // eslint-disable-next-line no-bitwise\n this.name = `__weakmap_${ Math.random() * 1e9 >>> 0 }__`;\n\n if (hasNativeWeakMap()) {\n try {\n this.weakmap = new WeakMap();\n } catch (err) {\n // pass\n }\n }\n\n this.keys = [];\n this.values = [];\n }\n\n _cleanupClosedWindows() {\n\n let weakmap = this.weakmap;\n let keys = this.keys;\n\n for (let i = 0; i < keys.length; i++) {\n let value = keys[i];\n\n if (isWindow(value) && isWindowClosed(value)) {\n\n if (weakmap) {\n try {\n weakmap.delete(value);\n } catch (err) {\n // pass\n }\n }\n\n keys.splice(i, 1);\n this.values.splice(i, 1);\n\n i -= 1;\n }\n }\n }\n\n isSafeToReadWrite(key : K) : boolean {\n\n if (isWindow(key)) {\n return false;\n }\n\n try {\n noop(key && key.self);\n noop(key && key[this.name]);\n } catch (err) {\n return false;\n }\n\n return true;\n }\n\n set(key : K, value : V) {\n\n if (!key) {\n throw new Error(`WeakMap expected key`);\n }\n\n let weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n weakmap.set(key, value);\n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (this.isSafeToReadWrite(key)) {\n try {\n let name = this.name;\n let entry = key[name];\n\n if (entry && entry[0] === key) {\n entry[1] = value;\n } else {\n Object.defineProperty(key, name, {\n value: [ key, value ],\n writable: true\n });\n }\n\n return;\n\n } catch (err) {\n // pass\n }\n }\n\n this._cleanupClosedWindows();\n\n let keys = this.keys;\n let values = this.values;\n let index = safeIndexOf(keys, key);\n\n if (index === -1) {\n keys.push(key);\n values.push(value);\n } else {\n values[index] = value;\n }\n }\n\n get(key : K) : V | void {\n\n if (!key) {\n throw new Error(`WeakMap expected key`);\n }\n\n let weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n if (weakmap.has(key)) {\n return weakmap.get(key);\n }\n \n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (this.isSafeToReadWrite(key)) {\n try {\n let entry = key[this.name];\n\n if (entry && entry[0] === key) {\n return entry[1];\n }\n\n return;\n } catch (err) {\n // pass\n }\n }\n\n this._cleanupClosedWindows();\n\n let keys = this.keys;\n let index = safeIndexOf(keys, key);\n\n if (index === -1) {\n return;\n }\n\n return this.values[index];\n }\n\n delete(key : K) {\n\n if (!key) {\n throw new Error(`WeakMap expected key`);\n }\n\n let weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n weakmap.delete(key);\n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (this.isSafeToReadWrite(key)) {\n try {\n let entry = key[this.name];\n\n if (entry && entry[0] === key) {\n entry[0] = entry[1] = undefined;\n }\n } catch (err) {\n // pass\n }\n }\n\n this._cleanupClosedWindows();\n\n let keys = this.keys;\n let index = safeIndexOf(keys, key);\n\n if (index !== -1) {\n keys.splice(index, 1);\n this.values.splice(index, 1);\n }\n }\n\n has(key : K) : boolean {\n\n if (!key) {\n throw new Error(`WeakMap expected key`);\n }\n\n let weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n if (weakmap.has(key)) {\n return true;\n }\n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (this.isSafeToReadWrite(key)) {\n try {\n let entry = key[this.name];\n\n if (entry && entry[0] === key) {\n return true;\n }\n\n return false;\n } catch (err) {\n // pass\n }\n }\n\n this._cleanupClosedWindows();\n\n let index = safeIndexOf(this.keys, key);\n return index !== -1;\n }\n\n getOrSet(key : K, getter : () => V) : V {\n if (this.has(key)) {\n // $FlowFixMe\n return this.get(key);\n }\n\n let value = getter();\n this.set(key, value);\n return value;\n }\n}\n","/* @flow */\n\nexport { CrossDomainSafeWeakMap as WeakMap } from './weakmap';\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst P24_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#d03238',\n secondary: '#b3b1b1'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#d03238',\n secondary: '#b3b1b1'\n }\n};\n\nexport function p24Logo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!P24_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } p24 logo available`);\n }\n\n const { primary, secondary } = P24_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst SOFORT_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#2C2E2F',\n secondary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#EB6F93',\n secondary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#EB6F93',\n secondary: '#FFFFFF'\n }\n};\n\nexport function sofortLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!SOFORT_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } sofort logo available`);\n }\n\n const { primary, secondary } = SOFORT_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst IDEAL_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff',\n tertiary: '#2C2E2F'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#000000',\n secondary: '#FFFFFF',\n tertiary: '#CD0067'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#000000',\n secondary: '#FFFFFF',\n tertiary: '#CD0067'\n }\n};\n\nexport function idealLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!IDEAL_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } ideal logo available`);\n }\n\n const { primary, secondary, tertiary } = IDEAL_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst GIROPAY_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#000000',\n tertiary: '#2C2E2F'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#FFFFFF',\n secondary: '#003A7D',\n tertiary: '#ED1C24'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#FFFFFF',\n secondary: '#003A7D',\n tertiary: '#ED1C24'\n }\n};\n\nexport function giropayLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!GIROPAY_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } giropay logo available`);\n }\n\n const { primary, secondary, tertiary } = GIROPAY_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst EPS_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff',\n tertiary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#71706F',\n secondary: '#FFFFFF',\n tertiary: '#C8036F'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#71706F',\n secondary: '#FFFFFF',\n tertiary: '#C8036F'\n }\n};\n\nexport function epsLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!EPS_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } eps logo available`);\n }\n\n const { primary, secondary, tertiary } = EPS_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst MYBANK_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff',\n tertiary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#1A4B67',\n secondary: '#00C0EE',\n tertiary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#1A4B67',\n secondary: '#00C0EE',\n tertiary: '#FFFFFF'\n }\n};\n\nexport function mybankLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!MYBANK_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } mybank logo available`);\n }\n\n const { primary, secondary, tertiary } = MYBANK_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst BANCONTACT_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#1A4B67',\n secondary: '#00C0EE'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#005498',\n secondary: '#FFD800'\n }\n};\n\nexport function bancontactLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!BANCONTACT_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } bancontact logo available`);\n }\n\n const { primary, secondary } = BANCONTACT_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst PAYU_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.DEFAULT ]: {\n primary: '#A6d71c',\n secondary: '#3C932A',\n tertiary: '#6CC62E',\n quaternary: '#278D30'\n },\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#FFFFFF',\n secondary: '#FFFFFF',\n tertiary: '#000000',\n quaternary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#A6d71c',\n secondary: '#3C932A',\n tertiary: '#6CC62E',\n quaternary: '#278D30'\n }\n};\n\nexport function payuLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!PAYU_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } payu logo available`);\n }\n\n const { primary, secondary, tertiary, quaternary } = PAYU_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst VERKKOPANKKI_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#FFFFFF',\n secondary: '#FFFFFF',\n tertiary: '#000000',\n quaternary: '#000000',\n quinary: '#FFFFFF',\n senary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#FFFFFF',\n secondary: '#CACCC8',\n tertiary: '#2D59A1',\n quaternary: '#1F3364',\n quinary: '#4E4E4E',\n senary: '#1B4482'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#FFFFFF',\n secondary: '#CACCC8',\n tertiary: '#2D59A1',\n quaternary: '#1F3364',\n quinary: '#4E4E4E',\n senary: '#1B4482'\n }\n};\n\nexport function verkkopankkiLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!VERKKOPANKKI_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } verkkopankki logo available`);\n }\n\n const { primary, secondary, tertiary, quaternary, quinary, senary } = VERKKOPANKKI_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst BLIK_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#FFFFFF',\n secondary: '#FFFFFF',\n tertiary: '#000000',\n quaternary: '#000000',\n quinary: '#000000',\n senary: '#000000'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#4D4D4F',\n secondary: '#000000',\n tertiary: '#FF0000',\n quaternary: '#E83E49',\n quinary: '#FF00FF',\n senary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#4D4D4F',\n secondary: '#000000',\n tertiary: '#FF0000',\n quaternary: '#E83E49',\n quinary: '#FF00FF',\n senary: '#FFFFFF'\n }\n};\n\nexport function blikLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!BLIK_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } blik logo available`);\n }\n\n const { primary, secondary, tertiary, quaternary, quinary, senary } = BLIK_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst TRUSTLY_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#FFFFFF',\n secondary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#020202',\n secondary: '#64CC07'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#020202',\n secondary: '#64CC07'\n }\n};\n\nexport function trustlyLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!TRUSTLY_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } trustly logo available`);\n }\n\n const { primary, secondary } = TRUSTLY_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst MAXIMA_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#004A91',\n secondary: '#ED1921'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#004A91',\n secondary: '#ED1921'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#004A91',\n secondary: '#ED1921'\n }\n};\n\nexport function maximaLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!MAXIMA_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } maxima logo available`);\n }\n\n const { primary, secondary } = MAXIMA_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst BOLETO_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#1A1919',\n secondary: '#FFFFFE'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#1A1919',\n secondary: '#FFFFFE'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#1A1919',\n secondary: '#FFFFFE'\n }\n};\n\nexport function boletoLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!BOLETO_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } boleto logo available`);\n }\n\n const { primary, secondary } = BOLETO_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst OXXO_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#EC1D24',\n secondary: '#EDA42D'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#EC1D24',\n secondary: '#EDA42D'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#EC1D24',\n secondary: '#EDA42D'\n }\n};\n\nexport function oxxoLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!OXXO_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } oxxo logo available`);\n }\n\n const { primary, secondary } = OXXO_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst PAYPAL_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.BLUE ]: {\n primary: '#003087',\n secondary: '#009cde'\n },\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#333030',\n secondary: '#636363'\n }\n};\n\nexport function paypalLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!PAYPAL_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } paypal logo available`);\n }\n\n const { primary, secondary } = PAYPAL_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n );\n}\n","\n/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR, COUNTRY } from '../../constants';\nimport type { LocaleType } from '../../types';\n\nconst CREDIT_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.BLUE ]: {\n primary: '#003087',\n secondary: '#009cde'\n },\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#333030',\n secondary: '#636363'\n }\n};\n\nexport function creditLogo({ logoColor, locale } : { logoColor : $Values, locale? : LocaleType }) : JsxHTMLNode {\n\n if (!CREDIT_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } credit logo available`);\n }\n\n const { country } = locale || {};\n const { primary } = CREDIT_LOGO_COLORS[logoColor];\n\n switch (country) {\n case COUNTRY.DE:\n return (\n \n \n \n \n \n \n \n );\n default:\n return (\n \n \n \n \n \n \n \n \n );\n\n }\n}\n","/* @flow */\n\nimport { BUTTON_LOGO, BUTTON_LOGO_COLOR } from '../../constants';\n\nimport { p24Logo } from './p24';\nimport { sofortLogo } from './sofort';\nimport { idealLogo } from './ideal';\nimport { giropayLogo } from './giropay';\nimport { epsLogo } from './eps';\nimport { mybankLogo } from './mybank';\nimport { bancontactLogo } from './bancontact';\nimport { payuLogo } from './payu';\nimport { verkkopankkiLogo } from './verkkopankki';\nimport { blikLogo } from './blik';\nimport { trustlyLogo } from './trustly';\nimport { maximaLogo } from './maxima';\nimport { boletoLogo } from './boleto';\nimport { oxxoLogo } from './oxxo';\nimport pp_white from './pp_white.svg';\nimport pp_blue from './pp_blue.svg';\nimport pp_black from './pp_black.svg';\nimport { paypalLogo } from './paypal';\nimport { creditLogo } from './credit';\nimport venmo_white from './venmo_white.svg';\nimport itau from './itau.svg';\nimport venmo_blue from './venmo_blue.svg';\nimport elv from './elv.svg';\nimport elv_white from './elv_white.svg';\n\nexport const fundingLogos = {\n\n [ BUTTON_LOGO.PP ]: {\n [ BUTTON_LOGO_COLOR.WHITE ]: pp_white,\n [ BUTTON_LOGO_COLOR.BLUE ]: pp_blue,\n [ BUTTON_LOGO_COLOR.BLACK ]: pp_black\n },\n\n [ BUTTON_LOGO.PAYPAL ]: paypalLogo,\n\n [ BUTTON_LOGO.CREDIT ]: creditLogo,\n\n [ BUTTON_LOGO.VENMO ]: {\n [ BUTTON_LOGO_COLOR.WHITE ]: venmo_white,\n [ BUTTON_LOGO_COLOR.BLUE ]: venmo_blue\n },\n [ BUTTON_LOGO.ITAU ]: {\n [ BUTTON_LOGO_COLOR.WHITE ]: itau\n },\n\n [ BUTTON_LOGO.IDEAL ]: idealLogo,\n\n [ BUTTON_LOGO.ELV ]: {\n [ BUTTON_LOGO_COLOR.ANY ]: elv,\n [ BUTTON_LOGO_COLOR.WHITE ]: elv_white\n },\n\n [ BUTTON_LOGO.BANCONTACT ]: bancontactLogo,\n\n [ BUTTON_LOGO.GIROPAY ]: giropayLogo,\n\n [ BUTTON_LOGO.SOFORT ]: sofortLogo,\n\n [ BUTTON_LOGO.EPS ]: epsLogo,\n\n [ BUTTON_LOGO.MYBANK ]: mybankLogo,\n\n [ BUTTON_LOGO.P24 ]: p24Logo,\n\n [ BUTTON_LOGO.PAYU ]: payuLogo,\n\n [ BUTTON_LOGO.VERKKOPANKKI ]: verkkopankkiLogo,\n\n [ BUTTON_LOGO.BLIK ]: blikLogo,\n\n [ BUTTON_LOGO.TRUSTLY ]: trustlyLogo,\n\n [ BUTTON_LOGO.MAXIMA ]: maximaLogo,\n\n [ BUTTON_LOGO.BOLETO ]: boletoLogo,\n\n [ BUTTON_LOGO.OXXO ]: oxxoLogo\n\n};\n","/* @flow */\n\nimport { CARD } from '../../constants';\n\nimport visa from './visa.svg';\nimport amex from './amex.svg';\nimport mastercard from './mastercard.svg';\nimport maestro from './maestro.svg';\nimport discover from './discover.svg';\nimport hiper from './hiper.svg';\nimport elo from './elo.svg';\nimport jcb from './jcb.svg';\nimport cup from './cup.svg';\n\nexport const cardLogos = {\n [ CARD.VISA ]: visa,\n [ CARD.AMEX ]: amex,\n [ CARD.MASTERCARD ]: mastercard,\n [ CARD.MAESTRO ]: maestro,\n [ CARD.DISCOVER ]: discover,\n [ CARD.HIPER ]: hiper,\n [ CARD.ELO ]: elo,\n [ CARD.JCB ]: jcb,\n [ CARD.CUP ]: cup\n};\n","/* @flow */\n\nexport * from './fundingLogos';\nexport * from './cardLogos';\n","/* @flow */\n\nimport { config } from '../config';\n\nimport { uniqueID, isLocalStorageEnabled } from './util';\nimport { getQueryParam } from './dom';\nimport { isPayPalDomain } from './security';\n\nconst LOCAL_STORAGE_KEY = '__paypal_storage__';\nconst SESSION_KEY = '__paypal_session__';\nconst GLOBAL_KEY = '__paypal_global__';\n\nlet accessedStorage;\n\nexport function getStorageState(handler : (storage : Object) => T) : T {\n\n const localStorageEnabled = isLocalStorageEnabled();\n let storage;\n\n if (accessedStorage) {\n storage = accessedStorage;\n }\n\n if (!storage && localStorageEnabled) {\n const rawStorage = window.localStorage.getItem(LOCAL_STORAGE_KEY);\n\n if (rawStorage) {\n storage = JSON.parse(rawStorage);\n }\n }\n\n if (!storage) {\n storage = window[LOCAL_STORAGE_KEY];\n }\n\n if (!storage) {\n storage = {\n id: uniqueID()\n };\n }\n\n if (!storage.id) {\n storage.id = uniqueID();\n }\n\n accessedStorage = storage;\n\n const result = handler(storage);\n\n if (localStorageEnabled) {\n window.localStorage.setItem(LOCAL_STORAGE_KEY, JSON.stringify(storage));\n } else {\n window[LOCAL_STORAGE_KEY] = storage;\n }\n\n accessedStorage = null;\n\n return result;\n}\n\nexport function getStorageID() : string {\n return getStorageState(storage => storage.id);\n}\n\nexport function getSession(handler : (state : Object) => T) : T {\n return getStorageState(storage => {\n\n let session = storage[SESSION_KEY];\n const now = Date.now();\n\n if (session && ((now - session.created) > config.session_uid_lifetime)) {\n session = null;\n }\n\n if (!session) {\n session = {\n guid: uniqueID(),\n created: now\n };\n }\n\n storage[SESSION_KEY] = session;\n\n return handler(session);\n });\n}\n\nexport function getSessionState(handler : (state : Object) => T) : T {\n return getSession(session => {\n session.state = session.state || {};\n return handler(session.state);\n });\n}\n\nexport function getSessionID() : string {\n\n const xprops = window.xprops;\n\n if (xprops && xprops.sessionID) {\n return xprops.sessionID;\n }\n\n const querySessionID = getQueryParam('sessionID');\n\n if (isPayPalDomain() && querySessionID) {\n return querySessionID;\n }\n\n return getSession(session => session.guid);\n}\n\nexport function getButtonSessionID() : ?string {\n\n if (window.xprops && window.xprops.buttonSessionID) {\n return window.xprops.buttonSessionID;\n }\n\n const querySessionID = getQueryParam('buttonSessionID');\n\n if (isPayPalDomain() && querySessionID) {\n return querySessionID;\n }\n}\n\nexport function getGlobalState(handler : (state : Object) => T) : T {\n window[GLOBAL_KEY] = window[GLOBAL_KEY] || {};\n return handler(window[GLOBAL_KEY]);\n}\n","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object.keys(descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object.defineProperty(target, property, desc);\n desc = null;\n }\n\n return desc;\n}","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { on } from 'post-robot/src';\nimport { type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { copyProp, eventEmitter, type EventEmitterType, stringifyError, noop } from '../lib';\nimport type { CancelableType } from '../types';\n\nimport type { Component } from './component';\n\ntype CleanupType = {\n set : (string, T) => T, // eslint-disable-line no-undef\n register : (string | Function, ?Function) => void,\n hasTasks : () => boolean,\n all : () => ZalgoPromise,\n run : (string) => ZalgoPromise\n};\n\nfunction cleanup(obj : Object) : CleanupType {\n\n let tasks = [];\n let cleaned = false;\n\n return {\n\n set(name : string, item : T) : T {\n\n if (cleaned) {\n return item;\n }\n\n obj[name] = item;\n this.register(() => {\n delete obj[name];\n });\n return item;\n },\n\n register(name : string | Function, method : ?Function) {\n\n if (typeof name === 'function') {\n method = name;\n name = '';\n }\n\n if (typeof method !== 'function') {\n throw new TypeError(`Expected to be passed function to clean.register`);\n }\n\n if (cleaned) {\n method();\n return;\n }\n\n tasks.push({\n complete: false,\n\n name,\n\n run() {\n\n if (this.complete) {\n return;\n }\n\n this.complete = true;\n\n if (method) {\n method();\n }\n }\n });\n },\n\n hasTasks() : boolean {\n return Boolean(tasks.filter(item => !item.complete).length);\n },\n\n all() : ZalgoPromise {\n let results = [];\n\n cleaned = true;\n\n while (tasks.length) {\n results.push(tasks.pop().run());\n }\n\n return ZalgoPromise.all(results).then(() => { /* pass */ });\n },\n\n run(name : string) : ZalgoPromise {\n let results = [];\n\n for (let item of tasks) {\n if (item.name === name) {\n results.push(item.run());\n }\n }\n\n return ZalgoPromise.all(results).then(noop);\n }\n };\n}\n\n\n/* Base Component\n --------------\n\n Methods that are common between child and parent components, but are not generic or uncoupled enough to live in\n a separate library.\n*/\n\nexport class BaseComponent

{\n\n clean : CleanupType\n event : EventEmitterType\n component : Component

\n\n constructor() {\n this.clean = cleanup(this);\n this.event = eventEmitter();\n }\n\n addProp(options : Object, name : string, def : mixed) {\n copyProp(options, this, name, def);\n }\n\n on(eventName : string, handler : () => void) : CancelableType {\n return this.event.on(eventName, handler);\n }\n\n listeners() {\n throw new Error(`Expected listeners to be implemented`);\n }\n\n error(err : mixed) : ZalgoPromise {\n throw new Error(`Expected error to be implemented - got ${ stringifyError(err) }`);\n }\n\n /* Listen\n ------\n\n Listen for any post messages defined in this.listeners(). All (most) of our communication is done via\n post-messages, so this sets up an easy way to create a collection of listeners in one go.\n\n All post-messaging is done using post-robot.\n */\n\n listen(win : CrossDomainWindowType, domain : string | RegExp) {\n\n if (!win) {\n throw this.component.createError(`window to listen to not set`);\n }\n\n if (!domain) {\n throw new Error(`Must pass domain to listen to`);\n }\n\n if (!this.listeners) {\n return;\n }\n\n let listeners = this.listeners();\n\n for (let listenerName of Object.keys(listeners)) {\n\n let name = listenerName.replace(/^zoid_/, '');\n\n let errorHandler = (err) => {\n this.error(err);\n };\n\n let listener = on(listenerName, { window: win, domain, errorHandler }, ({ source, data }) => {\n this.component.log(`listener_${ name }`);\n return listeners[listenerName].call(this, source, data);\n });\n\n let errorListener = on(listenerName, { window: win, errorHandler }, ({ origin }) => {\n this.component.logError(`unexpected_listener_${ name }`, { origin, domain: domain.toString() });\n this.error(new Error(`Unexpected ${ name } message from domain ${ origin } -- expected message from ${ domain.toString() }`));\n });\n\n this.clean.register(() => {\n listener.cancel();\n errorListener.cancel();\n });\n }\n }\n}\n","/* @flow */\n\nimport { getOpener, getTop, getParent, getNthParentFromTop, getAllFramesInWindow, getAncestor, getDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport base32 from 'hi-base32';\n\nimport { memoize, uniqueID, globalFor, stringifyError } from '../lib';\nimport { WINDOW_REFERENCES } from '../constants';\nimport type { DimensionsType, PositionType } from '../types';\n\n\nfunction normalize(str : string) : string {\n return str.replace(/^[^a-z0-9A-Z]+|[^a-z0-9A-Z]+$/g, '').replace(/[^a-z0-9A-Z]+/g, '_');\n}\n\nfunction encode(str : string) : string {\n return base32.encode(str).replace(/\\=/g, '').toLowerCase(); // eslint-disable-line no-useless-escape\n}\n\nfunction decode(str : string) : string {\n return base32.decode(str.toUpperCase());\n}\n\n\n/* Build Child Window Name\n -----------------------\n\n Build a name for our child window. This should identify the following things to the child:\n\n - That the window was created by, and is owned by zoid\n - The name of the child's parent. This is so the child can identify which window created it, even when we do a\n renderTo, in which case the true parent may actually be a sibling frame in the window hierarchy\n\n We base64 encode the window name so IE doesn't die when it encounters any characters that it doesn't like.\n*/\n\nexport function buildChildWindowName(name : string, version : string, options : Object = {}) : string {\n\n options.id = uniqueID();\n options.domain = getDomain(window);\n\n let encodedName = normalize(name);\n let encodedVersion = normalize(version);\n let encodedOptions = encode(JSON.stringify(options));\n\n if (!encodedName) {\n throw new Error(`Invalid name: ${ name } - must contain alphanumeric characters`);\n }\n\n if (!encodedVersion) {\n throw new Error(`Invalid version: ${ version } - must contain alphanumeric characters`);\n }\n\n return [\n 'xcomponent',\n encodedName,\n encodedVersion,\n encodedOptions,\n ''\n ].join('__');\n}\n\nexport let isZoidComponentWindow = memoize(() => {\n if (!window.name) {\n return false;\n }\n\n let [ zoidcomp ] = window.name.split('__');\n\n if (zoidcomp !== 'xcomponent') {\n return false;\n }\n\n return true;\n});\n\n/* Parse Window Name\n -----------------\n\n The inverse of buildChildWindowName. Base64 decodes and json parses the window name to get the original props\n passed down, including the parent name. Only accepts window names built by zoid\n*/\n\nexport let getComponentMeta = memoize(() => {\n\n if (!window.name) {\n throw new Error(`Can not get component meta without window name`);\n }\n\n let [ zoidcomp, name, version, encodedOptions ] = window.name.split('__');\n\n if (zoidcomp !== 'xcomponent') {\n throw new Error(`Window not rendered by zoid - got ${ zoidcomp }`);\n }\n\n let componentMeta;\n\n try {\n componentMeta = JSON.parse(decode(encodedOptions));\n } catch (err) {\n throw new Error(`Can not decode component-meta: ${ encodedOptions } ${ stringifyError(err) }`);\n }\n\n componentMeta.name = name;\n componentMeta.version = version.replace(/_/g, '.');\n\n return componentMeta;\n});\n\nexport function getParentDomain() : string {\n return getComponentMeta().domain; // How does this work for renderTo..?\n}\n\nfunction getWindowByRef({ ref, uid, distance } : { ref : string, uid : string, distance : number }) : CrossDomainWindowType {\n\n let result;\n\n if (ref === WINDOW_REFERENCES.OPENER) {\n result = getOpener(window);\n\n } else if (ref === WINDOW_REFERENCES.TOP) {\n result = getTop(window);\n\n } else if (ref === WINDOW_REFERENCES.PARENT) {\n\n if (distance) {\n result = getNthParentFromTop(window, distance);\n } else {\n result = getParent(window);\n }\n }\n\n if (ref === WINDOW_REFERENCES.GLOBAL) {\n let ancestor = getAncestor(window);\n\n if (ancestor) {\n for (let frame of getAllFramesInWindow(ancestor)) {\n let global = globalFor(frame);\n\n if (global && global.windows && global.windows[uid]) {\n result = global.windows[uid];\n break;\n }\n }\n }\n }\n\n if (!result) {\n throw new Error(`Unable to find window by ref`);\n }\n\n return result;\n}\n\n/* Get Parent Component Window\n ---------------------------\n\n Get the parent component window, which may be different from the actual parent window\n*/\n\nexport let getParentComponentWindow = memoize(() => {\n\n let componentMeta = getComponentMeta();\n\n if (!componentMeta) {\n throw new Error(`Can not get parent component window - window not rendered by zoid`);\n }\n\n return getWindowByRef(componentMeta.componentParent);\n});\n\n\nexport let getParentRenderWindow = memoize(() => {\n\n let componentMeta = getComponentMeta();\n\n if (!componentMeta) {\n throw new Error(`Can not get parent component window - window not rendered by zoid`);\n }\n\n return getWindowByRef(componentMeta.renderParent);\n});\n\n\n/* Get Position\n ------------\n\n Calculate the position for the popup\n\n This is either\n - Specified by the user\n - The center of the screen\n\n I'd love to do this with pure css, but alas... popup windows :(\n*/\n\nexport function getPosition({ width, height } : DimensionsType) : PositionType {\n\n let x = 0;\n let y = 0;\n\n if (width) {\n if (window.outerWidth) {\n x = Math.round((window.outerWidth - width) / 2) + window.screenX;\n } else if (window.screen.width) {\n x = Math.round((window.screen.width - width) / 2);\n }\n }\n\n if (height) {\n if (window.outerHeight) {\n y = Math.round((window.outerHeight - height) / 2) + window.screenY;\n } else if (window.screen.height) {\n y = Math.round((window.screen.height - height) / 2);\n }\n }\n\n return { x, y };\n}\n","/* @flow */\n\nimport { getDomain } from 'cross-domain-utils/src';\n\nimport type { Component } from '../component';\nimport type { BuiltInPropsType, MixedPropDefinitionType } from '../component/props';\n\nexport function normalizeChildProp(component : Component

, props : (BuiltInPropsType & P), key : string, value : T) : ?T {\n\n // $FlowFixMe\n let prop : MixedPropDefinitionType

= component.getProp(key);\n\n if (!prop) {\n if (component.looseProps) {\n return value;\n } else {\n return;\n }\n }\n\n if (typeof prop.childDecorate === 'function') {\n return prop.childDecorate(value);\n }\n\n return value;\n}\n\n\nexport function normalizeChildProps

(component : Component

, props : (BuiltInPropsType & P), origin : string, required : boolean = true) : (BuiltInPropsType & P) {\n\n let result = {};\n\n for (let key of Object.keys(props)) {\n\n let prop = component.getProp(key);\n let value = props[key];\n\n if (prop && prop.sameDomain && origin !== getDomain(window)) {\n continue;\n }\n\n result[key] = normalizeChildProp(component, props, key, value);\n\n if (prop && prop.alias && !result[prop.alias]) {\n result[prop.alias] = value;\n }\n }\n\n if (required) {\n for (let key of component.getPropNames()) {\n if (!props.hasOwnProperty(key)) {\n result[key] = normalizeChildProp(component, props, key, props[key]);\n }\n }\n }\n\n // $FlowFixMe\n return result;\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { flush } from 'beaver-logger/client';\nimport { isSameDomain, matchDomain, getDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { send } from 'post-robot/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { onResize } from 'belter/src';\n\nimport { BaseComponent } from '../base';\nimport { getParentComponentWindow, getComponentMeta, getParentDomain, getParentRenderWindow } from '../window';\nimport { extend, deserializeFunctions, get, stringify,\n globalFor, setLogLevel, getElement, noop, stringifyError } from '../../lib';\nimport { POST_MESSAGE, CONTEXT_TYPES, CLOSE_REASONS, INITIAL_PROPS } from '../../constants';\nimport { RenderError } from '../../error';\nimport type { Component } from '../component';\nimport type { BuiltInPropsType } from '../component/props';\n\nimport { normalizeChildProps } from './props';\n\nexport type ChildExportsType

= {\n updateProps : (props : (BuiltInPropsType & P)) => ZalgoPromise,\n close : () => ZalgoPromise\n};\n\n/* Child Component\n ---------------\n\n This is the portion of code which runs inside the frame or popup window containing the component's implementation.\n\n When the component author calls myComponent.attach(), it creates a new instance of ChildComponent, which is then\n responsible for managing the state and messaging back up to the parent, and providing props for the component to\n utilize.\n*/\n\nexport class ChildComponent

extends BaseComponent

{\n\n component : Component

\n props : BuiltInPropsType & P\n context : string\n\n onPropHandlers : Array<(BuiltInPropsType & P) => void>\n onInit : ZalgoPromise>\n watchingForResize : boolean\n autoResize : { width : boolean, height : boolean, element? : string }\n\n constructor(component : Component

) {\n super();\n this.component = component;\n\n if (!this.hasValidParentDomain()) {\n this.error(new RenderError(`Can not be rendered by domain: ${ this.getParentDomain() }`));\n return;\n }\n\n this.component.log(`construct_child`);\n\n // The child can specify some default props if none are passed from the parent. This often makes integrations\n // a little more seamless, as applicaiton code can call props.foo() without worrying about whether the parent\n // has provided them or not, and fall-back to some default behavior.\n\n this.onPropHandlers = [];\n\n for (let item of [ this.component, window ]) {\n for (let [ name, getter ] of [ [ 'xchild', () => this ], [ 'xprops', () => this.props ] ]) {\n // $FlowFixMe\n Object.defineProperty(item, name, {\n configurable: true,\n get: () => {\n if (!this.props) {\n this.setProps(this.getInitialProps(), getParentDomain());\n }\n // $FlowFixMe\n delete item[name];\n // $FlowFixMe\n item[name] = getter();\n // $FlowFixMe\n return item[name];\n }\n });\n }\n }\n\n this.component.log(`init_child`);\n\n this.setWindows();\n\n // Send an init message to our parent. This gives us an initial set of data to use that we can use to function.\n //\n // For example:\n //\n // - What context are we\n // - What props has the parent specified\n\n this.onInit = this.sendToParent(POST_MESSAGE.INIT, {\n\n exports: this.exports()\n\n }).then(({ origin, data }) => {\n\n this.context = data.context;\n this.setProps(data.props, origin);\n\n this.watchForResize();\n\n return this;\n\n }).catch(err => {\n\n this.error(err);\n throw err;\n });\n }\n\n hasValidParentDomain() : boolean {\n return matchDomain(this.component.allowedParentDomains, this.getParentDomain());\n }\n\n init() : ZalgoPromise> {\n return this.onInit;\n }\n\n getParentDomain() : string {\n return getParentDomain();\n }\n\n onProps(handler : Function) {\n this.onPropHandlers.push(handler);\n }\n\n getParentComponentWindow() : CrossDomainWindowType {\n return getParentComponentWindow();\n }\n\n getParentRenderWindow() : CrossDomainWindowType {\n return getParentRenderWindow();\n }\n\n getInitialProps() : (BuiltInPropsType & P) {\n let componentMeta = getComponentMeta();\n\n let props = componentMeta.props;\n\n if (props.type === INITIAL_PROPS.RAW) {\n props = props.value;\n } else if (props.type === INITIAL_PROPS.UID) {\n\n let parentComponentWindow = getParentComponentWindow();\n\n if (!isSameDomain(parentComponentWindow)) {\n\n if (window.location.protocol === 'file:') {\n throw new Error(`Can not get props from file:// domain`);\n }\n\n throw new Error(`Parent component window is on a different domain - expected ${ getDomain() } - can not retrieve props`);\n }\n\n let global = globalFor(parentComponentWindow);\n\n if (!global) {\n throw new Error(`Can not find global for parent component - can not retrieve props`);\n }\n\n props = JSON.parse(global.props[componentMeta.uid]);\n\n } else {\n throw new Error(`Unrecognized props type: ${ props.type }`);\n }\n\n if (!props) {\n throw new Error(`Initial props not found`);\n }\n \n return deserializeFunctions(props, ({ fullKey, self, args }) => {\n return this.onInit.then(() => {\n let func = get(this.props, fullKey);\n\n if (typeof func !== 'function') {\n throw new TypeError(`Expected ${ fullKey } to be function, got ${ typeof func }`);\n }\n\n return func.apply(self, args);\n });\n });\n }\n\n\n setProps(props : (BuiltInPropsType & P), origin : string, required : boolean = true) {\n // $FlowFixMe\n this.props = this.props || {};\n let normalizedProps = normalizeChildProps(this.component, props, origin, required);\n extend(this.props, normalizedProps);\n if (this.props.logLevel) {\n setLogLevel(this.props.logLevel);\n }\n for (let handler of this.onPropHandlers) {\n handler.call(this, this.props);\n }\n }\n\n\n /* Send to Parent\n --------------\n\n Send a post message to our parent window.\n */\n\n sendToParent(name : string, data : ?Object = {}, options : ?Object = {}) : ZalgoPromise<{ origin : string, source : CrossDomainWindowType, data : Object }> {\n let parentWindow = getParentComponentWindow();\n\n if (!parentWindow) {\n throw new Error(`Can not find parent component window to message`);\n }\n\n this.component.log(`send_to_parent_${ name }`);\n\n return send(parentWindow, name, data, { domain: getParentDomain(), ...options });\n }\n\n\n /* Set Windows\n -----------\n\n Determine the parent window, and the parent component window. Note -- these may be different, if we were\n rendered using renderTo.\n */\n\n setWindows() {\n\n\n // Ensure we do not try to .attach() multiple times for the same component on the same page\n\n if (window.__activeZoidComponent__) {\n throw this.component.createError(`Can not attach multiple components to the same window`);\n }\n\n window.__activeZoidComponent__ = this;\n\n // Get the direct parent window\n\n if (!getParentComponentWindow()) {\n throw this.component.createError(`Can not find parent window`);\n }\n\n let componentMeta = getComponentMeta();\n\n if (componentMeta.tag !== this.component.tag) {\n throw this.component.createError(`Parent is ${ componentMeta.tag } - can not attach ${ this.component.tag }`);\n }\n\n // Note -- getting references to other windows is probably one of the hardest things to do. There's basically\n // only a few ways of doing it:\n //\n // - The window is a direct parent, in which case you can use window.parent or window.opener\n // - The window is an iframe owned by you or one of your parents, in which case you can use window.frames\n // - The window sent you a post-message, in which case you can use event.source\n //\n // If we didn't rely on winProps.parent here from the window name, we'd have to relay all of our messages through\n // our actual parent. Which is no fun at all, and pretty error prone even with the help of post-robot. So this\n // is the lesser of two evils until browsers give us something like getWindowByName(...)\n\n // If the parent window closes, we need to close ourselves. There's no point continuing to run our component\n // if there's no parent to message to.\n\n this.watchForClose();\n }\n\n watchForClose() {\n window.addEventListener('unload', () => this.checkClose());\n }\n\n enableAutoResize({ width = true, height = true } : { width : boolean, height : boolean } = {}) {\n this.autoResize = { width, height };\n this.watchForResize();\n }\n\n getAutoResize() : { width : boolean, height : boolean, element : HTMLElement } {\n\n let width = false;\n let height = false;\n\n let autoResize = this.autoResize || this.component.autoResize;\n\n if (typeof autoResize === 'object') {\n width = Boolean(autoResize.width);\n height = Boolean(autoResize.height);\n } else if (autoResize) {\n width = true;\n height = true;\n }\n\n let element;\n\n if (autoResize.element) {\n element = getElement(autoResize.element);\n } else {\n element = document.body;\n }\n\n // $FlowFixMe\n return { width, height, element };\n }\n\n watchForResize() : ?ZalgoPromise {\n\n let { width, height, element } = this.getAutoResize();\n\n if (!width && !height) {\n return;\n }\n\n if (this.context === CONTEXT_TYPES.POPUP) {\n return;\n }\n\n if (this.watchingForResize) {\n return;\n }\n\n this.watchingForResize = true;\n \n onResize(element, ({ width: newWidth, height: newHeight }) => {\n this.resize(width ? newWidth : undefined, height ? newHeight : undefined);\n }, { width, height });\n }\n\n\n exports() : ChildExportsType

{\n\n let self = this;\n\n return {\n updateProps(props : (BuiltInPropsType & P)) : ZalgoPromise {\n return ZalgoPromise.try(() => self.setProps(props, this.origin, false));\n },\n\n close() : ZalgoPromise {\n return ZalgoPromise.try(() => self.destroy());\n }\n };\n }\n\n\n /* Resize\n ------\n\n Resize the child window. Must be done on a user action like a click if we're in a popup\n */\n\n resize(width : ?number, height : ?number) : ZalgoPromise {\n return ZalgoPromise.resolve().then(() => {\n\n this.component.log(`resize`, { width: stringify(width), height: stringify(height) });\n\n if (this.context === CONTEXT_TYPES.POPUP) {\n return;\n }\n\n return this.sendToParent(POST_MESSAGE.RESIZE, { width, height }).then(noop);\n });\n }\n\n /* Hide\n ----\n\n Hide the window and any parent template\n */\n\n hide() : ZalgoPromise {\n return this.sendToParent(POST_MESSAGE.HIDE).then(noop);\n }\n\n show() : ZalgoPromise {\n return this.sendToParent(POST_MESSAGE.SHOW).then(noop);\n }\n\n userClose() : void {\n return this.close(CLOSE_REASONS.USER_CLOSED);\n }\n\n\n /* Close\n -----\n\n Close the child window\n */\n\n close(reason : string = CLOSE_REASONS.CHILD_CALL) {\n\n this.component.log(`close_child`);\n\n // Ask our parent window to close us\n\n this.sendToParent(POST_MESSAGE.CLOSE, { reason });\n }\n\n checkClose() {\n this.sendToParent(POST_MESSAGE.CHECK_CLOSE, {}, { fireAndForget: true });\n }\n\n\n destroy() : ZalgoPromise {\n return flush().then(() => {\n window.close();\n });\n }\n\n\n /* Focus\n -----\n\n Focus the child window. Must be done on a user action like a click\n */\n\n focus() {\n this.component.log(`focus`);\n\n window.focus();\n }\n\n\n /* Error\n -----\n\n Send an error back to the parent\n */\n\n error(err : mixed) : ZalgoPromise {\n\n let stringifiedError = stringifyError(err);\n\n this.component.logError(`error`, { error: stringifiedError });\n\n return this.sendToParent(POST_MESSAGE.ERROR, {\n error: stringifiedError\n }).then(noop);\n }\n}\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { cleanUpWindow } from 'post-robot/src';\nimport { findFrameByName, isSameDomain } from 'cross-domain-utils/src';\n\nimport { iframe, popup, toCSS, showElement, hideElement,\n destroyElement, normalizeDimension, watchElementForClose,\n awaitFrameWindow, addClass, removeClass, noop } from '../../lib';\nimport { CONTEXT_TYPES, DELEGATE, CLOSE_REASONS, CLASS_NAMES, DEFAULT_DIMENSIONS } from '../../constants';\nimport { getPosition, getParentComponentWindow } from '../window';\n\n\nexport type ContextDriverType = {\n\n focusable : boolean,\n renderedIntoContainerTemplate : boolean,\n allowResize : boolean,\n openOnClick : boolean,\n needsBridge : boolean,\n\n open : (?string) => ZalgoPromise,\n resize : (?(number | string), ?(number | string)) => void,\n show : () => void,\n hide : () => void,\n loadUrl : (string) => void,\n\n delegateOverrides : {\n [string] : string | Function\n },\n\n openPrerender : () => ZalgoPromise,\n switchPrerender? : () => void\n};\n\n/* Render Drivers\n --------------\n\n There are various differences in how we treat:\n\n - Opening frames and windows\n - Rendering up to the parent\n - Resizing\n - etc.\n\n based on the context we're rendering to.\n\n These render drivers split this functionality out in a driver pattern, so our component code doesn't bunch up into a\n series of if-popup-then-else-if-iframe code.\n*/\n\nexport let RENDER_DRIVERS : { [string] : ContextDriverType } = {};\n\n// Iframe context is rendered inline on the page, without any kind of parent template. It's the one context that is designed\n// to feel like a native element on the page.\n\nRENDER_DRIVERS[CONTEXT_TYPES.IFRAME] = {\n\n focusable: false,\n renderedIntoContainerTemplate: true,\n allowResize: true,\n openOnClick: false,\n needsBridge: false,\n\n open(url : ?string) : ZalgoPromise {\n\n let attributes = this.component.attributes.iframe || {};\n\n this.iframe = iframe({\n url,\n attributes: {\n name: this.childWindowName,\n title: this.component.name,\n scrolling: this.component.scrolling ? 'yes' : 'no',\n ...attributes\n },\n class: [\n CLASS_NAMES.COMPONENT_FRAME,\n CLASS_NAMES.INVISIBLE\n ]\n }, this.element);\n\n return awaitFrameWindow(this.iframe).then(frameWindow => {\n\n this.window = frameWindow;\n\n let detectClose = () => {\n return ZalgoPromise.try(() => {\n return this.props.onClose(CLOSE_REASONS.CLOSE_DETECTED);\n }).finally(() => {\n return this.destroy();\n });\n };\n\n let iframeWatcher = watchElementForClose(this.iframe, detectClose);\n let elementWatcher = watchElementForClose(this.element, detectClose);\n\n this.clean.register('destroyWindow', () => {\n\n iframeWatcher.cancel();\n elementWatcher.cancel();\n\n cleanUpWindow(this.window);\n\n delete this.window;\n\n if (this.iframe) {\n destroyElement(this.iframe);\n delete this.iframe;\n }\n });\n });\n },\n\n openPrerender() : ZalgoPromise {\n\n let attributes = this.component.attributes.iframe || {};\n\n this.prerenderIframe = iframe({\n attributes: {\n name: `__prerender__${ this.childWindowName }`,\n scrolling: this.component.scrolling ? 'yes' : 'no',\n ...attributes\n },\n class: [\n CLASS_NAMES.PRERENDER_FRAME,\n CLASS_NAMES.VISIBLE\n ]\n }, this.element);\n\n return awaitFrameWindow(this.prerenderIframe).then(prerenderFrameWindow => {\n\n this.prerenderWindow = prerenderFrameWindow;\n\n this.clean.register('destroyPrerender', () => {\n\n if (this.prerenderIframe) {\n destroyElement(this.prerenderIframe);\n delete this.prerenderIframe;\n }\n });\n });\n },\n\n switchPrerender() {\n\n addClass(this.prerenderIframe, CLASS_NAMES.INVISIBLE);\n removeClass(this.prerenderIframe, CLASS_NAMES.VISIBLE);\n\n addClass(this.iframe, CLASS_NAMES.VISIBLE);\n removeClass(this.iframe, CLASS_NAMES.INVISIBLE);\n\n setTimeout(() => {\n if (this.prerenderIframe) {\n destroyElement(this.prerenderIframe);\n }\n }, 1000);\n },\n\n delegateOverrides: {\n\n openContainer: DELEGATE.CALL_DELEGATE,\n destroyComponent: DELEGATE.CALL_DELEGATE,\n destroyContainer: DELEGATE.CALL_DELEGATE,\n cancelContainerEvents: DELEGATE.CALL_DELEGATE,\n createPrerenderTemplate: DELEGATE.CALL_DELEGATE,\n elementReady: DELEGATE.CALL_DELEGATE,\n showContainer: DELEGATE.CALL_DELEGATE,\n showComponent: DELEGATE.CALL_DELEGATE,\n hideContainer: DELEGATE.CALL_DELEGATE,\n hideComponent: DELEGATE.CALL_DELEGATE,\n hide: DELEGATE.CALL_DELEGATE,\n show: DELEGATE.CALL_DELEGATE,\n resize: DELEGATE.CALL_DELEGATE,\n loadUrl: DELEGATE.CALL_DELEGATE,\n hijackSubmit: DELEGATE.CALL_DELEGATE,\n openPrerender: DELEGATE.CALL_DELEGATE,\n switchPrerender: DELEGATE.CALL_DELEGATE,\n\n renderTemplate: DELEGATE.CALL_ORIGINAL,\n openContainerFrame: DELEGATE.CALL_ORIGINAL,\n getOutlet: DELEGATE.CALL_ORIGINAL,\n\n open(original : () => ZalgoPromise, override : () => ZalgoPromise) : () => ZalgoPromise {\n return function overrideOpen() : ZalgoPromise {\n return override.apply(this, arguments).then(() => {\n this.clean.set('window', findFrameByName(getParentComponentWindow(), this.childWindowName));\n\n if (!this.window) {\n throw new Error(`Unable to find parent component iframe window`);\n }\n });\n };\n }\n },\n\n resize(width : ?(number | string), height : ?(number | string)) {\n\n if (width) {\n this.container.style.width = toCSS(width);\n this.element.style.width = toCSS(width);\n }\n\n if (height) {\n this.container.style.height = toCSS(height);\n this.element.style.height = toCSS(height);\n }\n },\n\n show() {\n showElement(this.element);\n },\n\n hide() {\n hideElement(this.element);\n },\n\n loadUrl(url : string) {\n this.iframe.setAttribute('src', url);\n }\n};\n\nif (__ZOID__.__POPUP_SUPPORT__) {\n\n // Popup context opens up a centered popup window on the page.\n\n RENDER_DRIVERS[CONTEXT_TYPES.POPUP] = {\n\n focusable: true,\n renderedIntoContainerTemplate: false,\n allowResize: false,\n openOnClick: true,\n needsBridge: true,\n\n open(url : ?string = '') : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n let {\n width = DEFAULT_DIMENSIONS.WIDTH,\n height = DEFAULT_DIMENSIONS.HEIGHT\n } = this.component.dimensions || {};\n\n width = normalizeDimension(width, window.outerWidth);\n height = normalizeDimension(height, window.outerWidth);\n\n let { x, y } = getPosition({ width, height });\n\n let attributes = this.component.attributes.popup || {};\n\n this.window = popup(url || '', {\n name: this.childWindowName,\n width,\n height,\n top: y,\n left: x,\n status: 1,\n toolbar: 0,\n menubar: 0,\n resizable: 1,\n scrollbars: 1,\n ...attributes\n });\n\n this.prerenderWindow = this.window;\n\n this.clean.register('destroyWindow', () => {\n if (this.window) {\n this.window.close();\n cleanUpWindow(this.window);\n delete this.window;\n delete this.prerenderWindow;\n }\n });\n\n this.resize(width, height);\n });\n },\n\n openPrerender() : ZalgoPromise {\n return ZalgoPromise.try(noop);\n },\n\n resize() {\n // pass\n },\n\n hide() {\n throw new Error('Can not hide popup');\n },\n\n show() {\n throw new Error('Can not show popup');\n },\n\n delegateOverrides: {\n\n openContainer: DELEGATE.CALL_DELEGATE,\n destroyContainer: DELEGATE.CALL_DELEGATE,\n\n elementReady: DELEGATE.CALL_DELEGATE,\n\n showContainer: DELEGATE.CALL_DELEGATE,\n showComponent: DELEGATE.CALL_DELEGATE,\n hideContainer: DELEGATE.CALL_DELEGATE,\n hideComponent: DELEGATE.CALL_DELEGATE,\n\n hide: DELEGATE.CALL_DELEGATE,\n show: DELEGATE.CALL_DELEGATE,\n\n cancelContainerEvents: DELEGATE.CALL_DELEGATE,\n\n open: DELEGATE.CALL_ORIGINAL,\n loadUrl: DELEGATE.CALL_ORIGINAL,\n createPrerenderTemplate: DELEGATE.CALL_ORIGINAL,\n destroyComponent: DELEGATE.CALL_ORIGINAL,\n resize: DELEGATE.CALL_ORIGINAL,\n renderTemplate: DELEGATE.CALL_ORIGINAL,\n openContainerFrame: DELEGATE.CALL_ORIGINAL,\n getOutlet: DELEGATE.CALL_ORIGINAL\n },\n\n loadUrl(url : string) {\n\n if (isSameDomain(this.window)) {\n try {\n if (this.window.location && this.window.location.replace) {\n this.window.location.replace(url);\n return;\n }\n } catch (err) {\n // pass\n }\n }\n\n this.window.location = url;\n }\n };\n}\n","/* @flow */\n/* eslint complexity: off */\n\nimport type { Component } from '../component';\nimport type { MixedPropDefinitionType, PropsType } from '../component/props';\n\n// $FlowFixMe\nexport function validateProp(prop : MixedPropDefinitionType

, key : string, value : ?T, props : (PropsType & P), required : boolean = true) {\n\n let hasProp = value !== null && value !== undefined && value !== '';\n\n if (!hasProp) {\n if (required && prop.required !== false && !prop.hasOwnProperty('def')) {\n throw new Error(`Prop is required: ${ key }`);\n }\n\n return;\n }\n\n if (value && typeof value.then === 'function' && prop.promise) {\n return;\n }\n\n if (prop.type === 'function') {\n\n if (!(typeof value === 'function')) {\n throw new TypeError(`Prop is not of type function: ${ key }`);\n }\n\n } else if (prop.type === 'string') {\n\n if (typeof value !== 'string') {\n throw new TypeError(`Prop is not of type string: ${ key }`);\n }\n\n } else if (prop.type === 'object') {\n\n // Since we're sending everything by post-message, everything must be json serializable\n\n if (prop.sendToChild !== false) {\n try {\n JSON.stringify(value);\n } catch (err) {\n throw new Error(`Unable to serialize prop: ${ key }`);\n }\n }\n\n } else if (prop.type === 'number') {\n\n if (isNaN(parseInt(value, 10))) {\n throw new TypeError(`Prop is not a number: ${ key }`);\n }\n }\n\n if (typeof prop.validate === 'function' && value) {\n prop.validate(value, props);\n }\n}\n\n\n/* Validate Props\n --------------\n\n Validate user-defined props. Users can pass props down from the parent into the child component, but first we\n double check the values are what we expect, based on the props spec defined in the original component.\n*/\n\nexport function validateProps

(component : Component

, props : PropsType, required : boolean = true) {\n\n props = props || {};\n\n if (props.env && typeof component.url === 'object' && !component.url[props.env]) {\n throw new Error(`Invalid env: ${ props.env }`);\n }\n\n // Set aliases\n\n for (let key of component.getPropNames()) {\n\n // $FlowFixMe\n let prop = component.getProp(key);\n\n if (prop.alias && props.hasOwnProperty(prop.alias)) {\n\n let value = props[prop.alias];\n delete props[prop.alias];\n\n if (!props[key]) {\n props[key] = value;\n }\n }\n }\n\n // First make sure all of the props we were sent are actually valid prop names\n\n /*\n\n if (!component.looseProps) {\n for (let key of Object.keys(props)) {\n if (component.getPropNames().indexOf(key) === -1) {\n throw component.error(`Invalid prop: ${key}`);\n }\n }\n }\n\n */\n\n // Then loop over the props we expect, and make sure they're all present and valid\n\n for (let key of Object.keys(props)) {\n\n // $FlowFixMe\n let prop : MixedPropDefinitionType

= component.getProp(key);\n let value = props[key];\n\n if (prop) {\n // $FlowFixMe\n validateProp(prop, key, value, props, required);\n }\n }\n\n for (let key of component.getPropNames()) {\n\n // $FlowFixMe\n let prop : MixedPropDefinitionType

= component.getProp(key);\n let value = props[key];\n\n if (prop && !props.hasOwnProperty(key)) {\n validateProp(prop, key, value, props, required);\n }\n }\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { noop, denodeify, once, memoize, promisify, dotify } from '../../lib';\nimport type { Component } from '../component';\nimport type { BuiltInPropsDefinitionType, PropsType, BuiltInPropsType, MixedPropDefinitionType } from '../component/props';\n\nimport type { ParentComponent } from './index';\n\nfunction isDefined(value : ?mixed) : boolean {\n return value !== null && value !== undefined && value !== '';\n}\n\n\n/* Normalize Prop\n --------------\n\n Turn prop into normalized value, using defaults, function options, etc.\n*/\n\n// $FlowFixMe\nexport function normalizeProp(component : Component

, instance : ParentComponent

, props : (PropsType & P), key : string, value : ?T) : ?(ZalgoPromise | T) { // eslint-disable-line complexity\n\n let prop = component.getProp(key);\n\n let resultValue;\n\n if (prop.value) {\n resultValue = prop.value;\n } else if (prop.def && (!props.hasOwnProperty(key) || !isDefined(value))) {\n resultValue = prop.def.call(component, props);\n } else {\n resultValue = value;\n }\n\n if (!resultValue && prop.alias && props[prop.alias]) {\n resultValue = props[prop.alias];\n }\n\n let decorated = false;\n\n if (prop.decorate && resultValue !== null && resultValue !== undefined) {\n resultValue = prop.decorate.call(instance, resultValue, props);\n decorated = true;\n }\n\n let type = prop.type;\n\n if (type === 'boolean') {\n // $FlowFixMe\n resultValue = Boolean(resultValue);\n\n } else if (type === 'function') {\n\n if (!resultValue && prop.noop) {\n // $FlowFixMe\n resultValue = noop;\n\n if (!decorated && prop.decorate) {\n // $FlowFixMe\n resultValue = prop.decorate.call(instance, noop, props);\n }\n }\n\n if (resultValue && typeof resultValue === 'function') {\n\n resultValue = resultValue.bind(instance);\n\n // If prop.denodeify is set, denodeify the function (accepts callback -> returns promise)\n\n if (prop.denodeify) {\n // $FlowFixMe\n resultValue = denodeify(resultValue);\n }\n\n if (prop.promisify) {\n // $FlowFixMe\n resultValue = promisify(resultValue);\n }\n\n // Wrap the function in order to log when it is called\n\n let original = resultValue;\n // $FlowFixMe\n resultValue = function() : mixed {\n component.log(`call_prop_${ key }`);\n return original.apply(this, arguments);\n };\n\n // If prop.once is set, ensure the function can only be called once\n\n if (prop.once) {\n // $FlowFixMe\n resultValue = once(resultValue);\n }\n\n // If prop.memoize is set, ensure the function is memoized (first return resultValue is cached and returned for any future calls)\n\n if (prop.memoize) {\n // $FlowFixMe\n resultValue = memoize(resultValue);\n }\n }\n\n } else if (type === 'string') {\n // pass\n\n } else if (type === 'object') {\n // pass\n\n } else if (type === 'number') {\n if (resultValue !== undefined) {\n // $FlowFixMe\n resultValue = parseInt(resultValue, 10);\n }\n }\n\n // $FlowFixMe\n return resultValue;\n}\n\n\n/* Normalize Props\n ---------------\n\n Turn props into normalized values, using defaults, function options, etc.\n*/\n\nexport function normalizeProps

(component : Component

, instance : ParentComponent

, props : (PropsType & P)) : (BuiltInPropsType & P) {\n\n let result = {};\n\n // $FlowFixMe\n props = props || {};\n\n for (let key of Object.keys(props)) {\n if (component.getPropNames().indexOf(key) !== -1) {\n // $FlowFixMe\n result[key] = normalizeProp(component, instance, props, key, props[key]);\n } else {\n result[key] = props[key];\n }\n }\n\n for (let key of component.getPropNames()) {\n if (!props.hasOwnProperty(key) && (!instance.props || !instance.props.hasOwnProperty(key))) {\n\n // $FlowFixMe\n let normalizedProp = normalizeProp(component, instance, props, key, props[key]);\n\n if (normalizedProp !== undefined) {\n result[key] = normalizedProp;\n }\n }\n }\n\n // $FlowFixMe\n return result;\n}\n\n\n/* Props to Query\n --------------\n\n Turn props into an initial query string to open the component with\n\n string -> string\n bool -> 1\n object -> json\n number -> string\n*/\n\n// $FlowFixMe\nfunction getQueryParam(prop : MixedPropDefinitionType

, key : string, value : T) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (typeof prop.queryParam === 'function') {\n return prop.queryParam(value);\n } else if (typeof prop.queryParam === 'string') {\n return prop.queryParam;\n } else {\n return key;\n }\n });\n}\n\n// $FlowFixMe\nfunction getQueryValue(prop : MixedPropDefinitionType

, key : string, value : T) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (typeof prop.queryValue === 'function') {\n return prop.queryValue(value);\n } else {\n return value;\n }\n });\n}\n\nexport function propsToQuery

(propsDef : BuiltInPropsDefinitionType

, props : (BuiltInPropsType & P)) : { [string] : string } {\n\n let params = {};\n\n return ZalgoPromise.all(Object.keys(props).map(key => {\n\n let prop = propsDef[key];\n\n if (!prop) {\n return; // eslint-disable-line array-callback-return\n }\n\n return ZalgoPromise.resolve().then(() => {\n\n let value = props[key];\n\n if (!value) {\n return;\n }\n\n if (!prop.queryParam) {\n return;\n }\n\n return value;\n\n }).then(value => {\n\n if (!value) {\n return;\n }\n\n return ZalgoPromise.all([\n // $FlowFixMe\n getQueryParam(prop, key, value),\n // $FlowFixMe\n getQueryValue(prop, key, value)\n ]).then(([ queryParam, queryValue ]) => {\n\n let result;\n\n if (typeof queryValue === 'boolean') {\n result = '1';\n } else if (typeof queryValue === 'string') {\n result = queryValue.toString();\n } else if (typeof queryValue === 'function') {\n return;\n } else if (typeof queryValue === 'object' && queryValue !== null) {\n\n if (prop.serialization === 'json') {\n result = JSON.stringify(queryValue);\n } else {\n result = dotify(queryValue, key);\n\n for (let dotkey of Object.keys(result)) {\n params[dotkey] = result[dotkey];\n }\n\n return;\n }\n\n } else if (typeof queryValue === 'number') {\n result = queryValue.toString();\n }\n\n params[queryParam] = result;\n });\n });\n\n })).then(() => {\n Object.keys(params).forEach(key => {\n params[key] = escape(params[key]);\n });\n return params;\n });\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { flush } from 'beaver-logger/client';\nimport { send, bridge } from 'post-robot/src';\nimport { isSameDomain, isWindowClosed, isTop, isSameTopWindow, matchDomain, getDistanceFromTop, onCloseWindow, getDomain, assertSameDomain, type CrossDomainWindowType, type SameDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getElementSafe, onResize } from 'belter/src';\n\nimport { BaseComponent } from '../base';\nimport { buildChildWindowName, getParentDomain, getParentComponentWindow } from '../window';\nimport { addEventListener, uniqueID, elementReady, writeElementToWindow,\n noop, showAndAnimate, animateAndHide, showElement, hideElement,\n addClass, extend, serializeFunctions, extendUrl, jsxDom,\n getElement, memoized, appendChild,\n global, writeToWindow, setLogLevel, once,\n prefetchPage, awaitFrameLoad, stringify, stringifyError } from '../../lib';\nimport { POST_MESSAGE, CONTEXT_TYPES, CLASS_NAMES, ANIMATION_NAMES, CLOSE_REASONS, DELEGATE, INITIAL_PROPS, WINDOW_REFERENCES, EVENTS, DEFAULT_DIMENSIONS } from '../../constants';\nimport { RenderError } from '../../error';\nimport type { Component } from '../component';\nimport type { PropsType, BuiltInPropsType } from '../component/props';\nimport type { ChildExportsType } from '../child';\nimport type { CancelableType, Jsx, DimensionsType, ElementRefType } from '../../types';\n\nimport { RENDER_DRIVERS, type ContextDriverType } from './drivers';\nimport { validateProps } from './validate';\nimport { propsToQuery, normalizeProps } from './props';\n\nglobal.props = global.props || {};\nglobal.windows = global.windows || {};\n\nexport type RenderOptionsType = {\n id : string,\n props : PropsType,\n tag : string,\n context : string,\n outlet : HTMLElement,\n CLASS : typeof CLASS_NAMES,\n ANIMATION : typeof ANIMATION_NAMES,\n CONTEXT : typeof CONTEXT_TYPES,\n EVENT : typeof EVENTS,\n actions : {\n close : (string) => ZalgoPromise,\n focus : () => ZalgoPromise\n },\n on : (string, () => void) => CancelableType,\n jsxDom : Jsx,\n document : Document,\n container : HTMLElement,\n dimensions : DimensionsType\n};\n\n\n/* Parent Component\n ----------------\n\n This manages the state of the component on the parent window side - i.e. the window the component is being rendered into.\n\n It handles opening the necessary windows/iframes, launching the component's url, and listening for messages back from the component.\n*/\n\nexport class ParentComponent

extends BaseComponent

{\n\n html : ?ZalgoPromise\n context : string\n props : BuiltInPropsType & P\n childWindowName : string\n onInit : ZalgoPromise>\n window : CrossDomainWindowType\n handledErrors : Array\n\n container : HTMLElement\n element : HTMLElement\n outlet : HTMLElement;\n iframe : HTMLIFrameElement\n\n prerenderIframe : HTMLIFrameElement\n prerenderWindow : SameDomainWindowType\n\n childExports : ?ChildExportsType

\n timeout : ?TimeoutID // eslint-disable-line no-undef\n\n constructor(component : Component

, context : string, { props } : { props : (PropsType & P) }) {\n super();\n\n this.component = component;\n\n this.validateParentDomain();\n\n this.context = context;\n\n try {\n this.setProps(props);\n } catch (err) {\n if (props.onError) {\n props.onError(err);\n }\n throw err;\n }\n\n if (this.props.logLevel) {\n setLogLevel(this.props.logLevel);\n }\n\n this.childWindowName = this.buildChildWindowName({ renderTo: window });\n\n this.registerActiveComponent();\n\n // Options passed during renderTo. We would not ordinarily expect a user to pass these, since we depend on\n // them only when we're trying to render from a sibling to a sibling\n\n this.component.log(`construct_parent`);\n\n this.watchForUnload();\n\n this.onInit = new ZalgoPromise();\n\n this.onInit.catch(err => {\n return this.error(err);\n });\n }\n\n render(element : ElementRefType, loadUrl : boolean = true) : ZalgoPromise> {\n return this.tryInit(() => {\n\n this.component.log(`render_${ this.context }`, { context: this.context, element, loadUrl: stringify(loadUrl) });\n\n let tasks = {};\n\n tasks.onRender = this.props.onRender();\n\n tasks.getDomain = this.getDomain();\n\n tasks.elementReady = ZalgoPromise.try(() => {\n if (element) {\n return this.elementReady(element);\n }\n });\n\n tasks.openContainer = tasks.elementReady.then(() => {\n return this.openContainer(element);\n });\n\n tasks.showContainer = tasks.openContainer.then(() => {\n return this.showContainer();\n });\n\n tasks.openPrerender = tasks.openContainer.then(() => {\n return this.openPrerender();\n });\n\n tasks.switchPrerender = ZalgoPromise.all([ tasks.openPrerender, this.onInit ]).then(() => {\n return this.switchPrerender();\n });\n\n // $FlowFixMe\n tasks.open = this.driver.openOnClick\n ? this.open()\n : tasks.openContainer.then(() => this.open());\n\n tasks.listen = ZalgoPromise.hash({ domain: tasks.getDomain, open: tasks.open }).then(({ domain }) => {\n this.listen(this.window, domain);\n });\n\n tasks.watchForClose = tasks.open.then(() => {\n return this.watchForClose();\n });\n\n tasks.linkDomain = ZalgoPromise.all([ tasks.getDomain, tasks.open ]).then(([ domain ]) => {\n if (bridge && typeof domain === 'string') {\n return bridge.linkUrl(this.window, domain);\n }\n });\n\n if (!this.html) {\n tasks.createPrerenderTemplate = tasks.openPrerender.then(() => {\n return this.createPrerenderTemplate();\n });\n\n tasks.showComponent = tasks.createPrerenderTemplate.then(() => {\n return this.showComponent();\n });\n }\n\n tasks.openBridge = ZalgoPromise.all([ tasks.getDomain, tasks.open ]).then(([ domain ]) => {\n return this.openBridge(typeof domain === 'string' ? domain : null);\n });\n\n if (this.html) {\n tasks.loadHTML = tasks.open.then(() => {\n return this.loadHTML();\n });\n\n } else if (loadUrl) {\n tasks.buildUrl = this.buildUrl();\n\n tasks.loadUrl = ZalgoPromise.all([\n tasks.buildUrl,\n tasks.open,\n tasks.linkDomain,\n tasks.listen,\n tasks.open,\n tasks.openBridge,\n tasks.createPrerenderTemplate\n ]).then(([ url ]) => {\n return this.loadUrl(url);\n });\n\n tasks.runTimeout = tasks.loadUrl.then(() => {\n return this.runTimeout();\n });\n }\n\n return ZalgoPromise.hash(tasks);\n\n }).then(() => {\n return this.props.onEnter();\n }).then(() => {\n return this;\n });\n }\n\n @memoized\n getOutlet() : HTMLElement {\n let outlet = document.createElement('div');\n addClass(outlet, CLASS_NAMES.OUTLET);\n return outlet;\n }\n\n validateParentDomain() {\n let domain = getDomain();\n if (!matchDomain(this.component.allowedParentDomains, domain)) {\n throw new RenderError(`Can not be rendered by domain: ${ domain }`);\n }\n }\n\n renderTo(win : CrossDomainWindowType, element : ?string) : ZalgoPromise> {\n return this.tryInit(() => {\n\n if (win === window) {\n return this.render(element);\n }\n\n if (!isSameTopWindow(window, win)) {\n throw new Error(`Can only renderTo an adjacent frame`);\n }\n\n if (element && typeof element !== 'string') {\n throw new Error(`Element passed to renderTo must be a string selector, got ${ typeof element } ${ element }`);\n }\n\n this.checkAllowRenderTo(win);\n\n this.component.log(`render_${ this.context }_to_win`, { element: stringify(element), context: this.context });\n\n this.childWindowName = this.buildChildWindowName({ renderTo: win });\n\n this.delegate(win);\n\n return this.render(element);\n });\n }\n\n @memoized\n prefetch() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.html = this.buildUrl().then(url => {\n return prefetchPage(url).then(html => {\n\n let host = `${ url.split('/').slice(0, 3).join('/') }`;\n let uri = `/${ url.split('/').slice(3).join('/') }`;\n\n return `\n \n\n ${ html }\n\n \n `;\n });\n });\n });\n }\n\n @memoized\n loadHTML() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (!this.html) {\n throw new Error(`Html not prefetched`);\n }\n\n return this.html.then(html => {\n // $FlowFixMe\n return writeToWindow(this.window, html);\n });\n });\n }\n\n checkAllowRenderTo(win : CrossDomainWindowType) {\n\n if (!win) {\n throw this.component.createError(`Must pass window to renderTo`);\n }\n\n if (isSameDomain(win)) {\n return;\n }\n\n let origin = getDomain();\n let domain = this.component.getDomain(null, this.props.env);\n\n if (!domain) {\n throw new Error(`Could not determine domain to allow remote render`);\n }\n\n if (matchDomain(domain, origin)) {\n return;\n }\n\n throw new Error(`Can not render remotely to ${ domain.toString() } - can only render to ${ origin }`);\n }\n\n registerActiveComponent() {\n ParentComponent.activeComponents.push(this);\n\n this.clean.register(() => {\n ParentComponent.activeComponents.splice(ParentComponent.activeComponents.indexOf(this), 1);\n });\n }\n\n\n getComponentParentRef() : { ref : string, uid? : string, distance? : number } {\n let domain = this.component.getDomain(null, this.props.env);\n\n if (domain === getDomain(window)) {\n let uid = uniqueID();\n global.windows = global.windows || {};\n global.windows[uid] = window;\n this.clean.register(() => {\n delete global.windows[uid];\n });\n\n return { ref: WINDOW_REFERENCES.GLOBAL, uid };\n }\n\n if (this.context === CONTEXT_TYPES.POPUP) {\n return { ref: WINDOW_REFERENCES.OPENER };\n }\n\n if (isTop(window)) {\n return { ref: WINDOW_REFERENCES.TOP };\n }\n\n return { ref: WINDOW_REFERENCES.PARENT, distance: getDistanceFromTop(window) };\n }\n\n getRenderParentRef(renderToWindow : CrossDomainWindowType = window) : { ref : string, uid? : string, distance? : number } {\n\n if (renderToWindow === window) {\n return this.getComponentParentRef();\n }\n\n let uid = uniqueID();\n global.windows[uid] = renderToWindow;\n\n this.clean.register(() => {\n delete global.windows[uid];\n });\n\n return { ref: WINDOW_REFERENCES.GLOBAL, uid };\n }\n\n buildChildWindowName({ renderTo = window } : { renderTo : CrossDomainWindowType } = {}) : string {\n\n let childDomain = this.component.getDomain(null, this.props.env);\n let sameDomain = isSameDomain(renderTo);\n\n let uid = uniqueID();\n let tag = this.component.tag;\n let sProps = serializeFunctions(this.getPropsForChild());\n\n let componentParent = this.getComponentParentRef();\n let renderParent = this.getRenderParentRef(renderTo);\n\n let secureProps = !sameDomain && !this.component.unsafeRenderTo;\n\n let props = secureProps\n ? { type: INITIAL_PROPS.UID, uid }\n : { type: INITIAL_PROPS.RAW, value: sProps };\n\n if (props.type === INITIAL_PROPS.UID) {\n global.props[uid] = JSON.stringify(sProps);\n\n this.clean.register(() => {\n delete global.props[uid];\n });\n }\n\n return buildChildWindowName(this.component.name, this.component.version, { uid, tag, componentParent, renderParent, props, childDomain });\n }\n\n\n /* Send to Parent\n --------------\n\n Send a post message to our parent window.\n */\n\n sendToParent(name : string, data : Object) : ZalgoPromise<{ origin : string, source : CrossDomainWindowType, data : Object }> {\n let parentWindow = getParentComponentWindow();\n\n if (!parentWindow) {\n throw new Error(`Can not find parent component window to message`);\n }\n\n this.component.log(`send_to_parent_${ name }`);\n\n return send(getParentComponentWindow(), name, data, { domain: getParentDomain() });\n }\n\n\n /* Set Props\n ---------\n\n Normalize props and generate the url we'll use to render the component\n */\n\n setProps(props : (PropsType & P), required : boolean = true) {\n\n validateProps(this.component, props, required);\n if (this.component.validate) {\n this.component.validate(this.component, props);\n }\n\n // $FlowFixMe\n this.props = this.props || {};\n\n extend(this.props, normalizeProps(this.component, this, props));\n }\n\n\n /* Build Url\n ---------\n\n We build the props we're passed into the initial url. This means the component server-side can start rendering\n itself based on whatever props the merchant provides.\n */\n\n @memoized\n buildUrl() : ZalgoPromise {\n\n let propUrl : (string | void) = this.props.url;\n\n return ZalgoPromise.all([\n\n propUrl,\n // $FlowFixMe\n propsToQuery({ ...this.component.props, ...this.component.builtinProps }, this.props)\n\n ]).then(([ url, query ]) => {\n\n // Do not extend the url if it is for a different domain\n\n if (url && !this.component.getValidDomain(url)) {\n return url;\n }\n\n return ZalgoPromise.try(() => {\n\n return url || this.component.getUrl(this.props.env, this.props);\n\n }).then(finalUrl => {\n\n query.xcomponent = '1';\n return extendUrl(finalUrl, { query });\n });\n });\n }\n\n\n getDomain() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n return this.props.url;\n\n }).then(url => {\n\n let domain = this.component.getDomain(url, this.props.env);\n\n if (domain) {\n return domain;\n }\n\n if (this.component.buildUrl) {\n return ZalgoPromise.try(() => this.component.buildUrl(this.props)).then(builtUrl => {\n return this.component.getDomain(builtUrl, this.props.env);\n });\n }\n\n }).then(domain => {\n\n if (!domain) {\n throw new Error(`Could not determine domain`);\n }\n\n return domain;\n });\n }\n\n getPropsForChild() : (BuiltInPropsType & P) {\n\n let result = {};\n\n for (let key of Object.keys(this.props)) {\n let prop = this.component.getProp(key);\n\n if (!prop || prop.sendToChild !== false) {\n result[key] = this.props[key];\n }\n }\n\n // $FlowFixMe\n return result;\n }\n\n\n /* Update Props\n ------------\n\n Send new props down to the child\n */\n\n updateProps(props : (PropsType & P)) : ZalgoPromise {\n this.setProps(props, false);\n\n return this.onInit.then(() => {\n if (this.childExports) {\n return this.childExports.updateProps(this.getPropsForChild());\n } else {\n throw new Error(`Child exports were not available`);\n }\n });\n }\n\n\n openBridge(domain : ?string) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (!bridge || !this.driver.needsBridge) {\n return;\n }\n\n let needsBridgeParams : Object = { win: this.window };\n if (domain) {\n needsBridgeParams.domain = domain;\n }\n\n let needsBridge = bridge.needsBridge(needsBridgeParams);\n\n let bridgeUrl = this.component.getBridgeUrl(this.props.env);\n\n if (!bridgeUrl) {\n\n if (needsBridge && domain && !bridge.hasBridge(domain, domain)) {\n throw new Error(`Bridge url needed to render ${ this.context }`);\n }\n\n return;\n }\n\n bridgeUrl = extendUrl(bridgeUrl, { query: { version: this.component.version } });\n\n let bridgeDomain = this.component.getBridgeDomain(this.props.env);\n\n if (!bridgeDomain) {\n throw new Error(`Can not determine domain for bridge`);\n }\n\n if (needsBridge) {\n return bridge.openBridge(bridgeUrl, bridgeDomain).then(result => {\n if (result) {\n return result;\n }\n });\n }\n });\n }\n\n\n /* Open\n ----\n\n Open a new window in the desired context\n */\n\n @memoized\n open() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.component.log(`open_${ this.context }`, { windowName: this.childWindowName });\n if (this.props.win) {\n this.clean.set('window', this.props.win);\n assertSameDomain(this.window).name = this.childWindowName;\n return;\n }\n return this.driver.open.call(this);\n });\n }\n\n @memoized\n openPrerender() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.component.prerenderTemplate) {\n return this.driver.openPrerender.call(this);\n }\n });\n }\n\n @memoized\n switchPrerender() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.prerenderWindow && this.driver.switchPrerender) {\n return this.driver.switchPrerender.call(this);\n }\n });\n }\n\n get driver() : ContextDriverType {\n\n if (!this.context) {\n throw new Error('Context not set');\n }\n\n return RENDER_DRIVERS[this.context];\n }\n\n elementReady(element : ElementRefType) : ZalgoPromise {\n return elementReady(element).then(noop);\n }\n\n\n delegate(win : CrossDomainWindowType) {\n\n this.component.log(`delegate_${ this.context }`);\n\n let props = {\n uid: this.props.uid,\n dimensions: this.props.dimensions,\n onClose: this.props.onClose,\n onDisplay: this.props.onDisplay\n };\n\n for (let propName of this.component.getPropNames()) {\n let prop = this.component.getProp(propName);\n\n if (prop.allowDelegate) {\n props[propName] = this.props[propName];\n }\n }\n\n let delegate = send(win, `${ POST_MESSAGE.DELEGATE }_${ this.component.name }`, {\n\n context: this.context,\n env: this.props.env,\n\n options: {\n\n context: this.context,\n\n childWindowName: this.childWindowName,\n isWindowClosed: () => isWindowClosed(this.window),\n\n props,\n\n overrides: {\n focus: () => this.focus(),\n userClose: () => this.userClose(),\n getDomain: () => this.getDomain(),\n\n error: (err) => this.error(err),\n on: (eventName, handler) => this.on(eventName, handler)\n }\n }\n\n }).then(({ data }) => {\n\n this.clean.register(data.destroy);\n return data;\n\n }).catch(err => {\n\n throw new Error(`Unable to delegate rendering. Possibly the component is not loaded in the target window.\\n\\n${ stringifyError(err) }`);\n });\n\n let overrides = this.driver.delegateOverrides;\n\n for (let key of Object.keys(overrides)) {\n let val = overrides[key];\n\n if (val === DELEGATE.CALL_ORIGINAL) {\n continue;\n }\n\n // $FlowFixMe\n let original = this[key];\n\n // $FlowFixMe\n this[key] = function overridenFunction() : ZalgoPromise {\n return delegate.then(data => {\n\n let override = data.overrides[key];\n\n if (val === DELEGATE.CALL_DELEGATE) {\n return override.apply(this, arguments);\n }\n\n if (typeof val === 'function') {\n return val(original, override).apply(this, arguments);\n }\n\n throw new Error(`Expected delgate to be CALL_ORIGINAL, CALL_DELEGATE, or factory method`);\n });\n };\n }\n }\n\n /* Watch For Close\n ---------------\n\n Watch for the child window closing, so we can cleanup.\n Also watch for this window changing location, so we can close the component.\n */\n\n watchForClose() {\n let closeWindowListener = onCloseWindow(this.window, () => {\n this.component.log(`detect_close_child`);\n\n return ZalgoPromise.try(() => {\n return this.props.onClose(CLOSE_REASONS.CLOSE_DETECTED);\n }).finally(() => {\n return this.destroy();\n });\n }, 3000);\n\n this.clean.register('destroyCloseWindowListener', closeWindowListener.cancel);\n }\n\n watchForUnload() {\n\n // Our child has no way of knowing if we navigated off the page. So we have to listen for unload\n // and close the child manually if that happens.\n\n let onunload = once(() => {\n this.component.log(`navigate_away`);\n flush();\n this.destroyComponent();\n });\n\n let unloadWindowListener = addEventListener(window, 'unload', onunload);\n\n this.clean.register('destroyUnloadWindowListener', unloadWindowListener.cancel);\n }\n\n\n /* Load Url\n --------\n\n Load url into the child window. This is separated out because it's quite common for us to have situations\n where opening the child window and loading the url happen at different points.\n */\n\n loadUrl(url : string) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.component.log(`load_url`);\n\n if (window.location.href.split('#')[0] === url.split('#')[0]) {\n url = extendUrl(url, {\n query: {\n [ uniqueID() ]: '1'\n }\n });\n }\n\n return this.driver.loadUrl.call(this, url);\n });\n }\n\n\n hijack(targetElement : HTMLFormElement | HTMLAnchorElement) {\n targetElement.target = this.childWindowName;\n }\n\n /* Run Timeout\n -----------\n\n Set a timeout on the initial render, and call this.props.onTimeout if we don't get an init call in time.\n */\n\n runTimeout() {\n let timeout = this.props.timeout;\n\n if (timeout) {\n let id = this.timeout = setTimeout(() => {\n\n this.component.log(`timed_out`, { timeout: timeout.toString() });\n\n let error = this.component.createError(`Loading component timed out after ${ timeout } milliseconds`);\n\n this.onInit.reject(error);\n this.props.onTimeout(error);\n\n }, timeout);\n\n this.clean.register(() => {\n clearTimeout(id);\n delete this.timeout;\n });\n }\n }\n\n\n /* Listeners\n ---------\n\n Post-robot listeners to the child component window\n */\n\n listeners() : { [string] : (CrossDomainWindowType, Object) => mixed } {\n return {\n\n // The child rendered, and the component called .attach()\n // We have no way to know when the child has set up its listeners for the first time, so we have to listen\n // for this message to be sure so we can continue doing anything from the parent\n\n [ POST_MESSAGE.INIT ](source : CrossDomainWindowType, data : Object) : { props : BuiltInPropsType & P, context : string } {\n\n this.childExports = data.exports;\n\n this.onInit.resolve(this);\n\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n\n return {\n props: this.getPropsForChild(),\n context: this.context\n };\n },\n\n\n // The child has requested that we close it. Since iframes can't close themselves, we need\n // this logic to exist in the parent window\n\n [ POST_MESSAGE.CLOSE ](source : CrossDomainWindowType, data : Object) {\n this.close(data.reason);\n },\n\n [ POST_MESSAGE.CHECK_CLOSE ]() {\n this.checkClose();\n },\n\n // Iframes can't resize themselves, so they need the parent to take care of it for them.\n\n [ POST_MESSAGE.RESIZE ](source : CrossDomainWindowType, data : Object) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.driver.allowResize) {\n return this.resize(data.width, data.height);\n }\n });\n },\n\n [ POST_MESSAGE.HIDE ]() {\n this.hide();\n },\n\n [ POST_MESSAGE.SHOW ]() {\n this.show();\n },\n\n\n // The child encountered an error\n\n [ POST_MESSAGE.ERROR ](source : CrossDomainWindowType, data : Object) {\n this.error(new Error(data.error));\n }\n };\n }\n\n\n /* Resize\n ------\n\n Resize the child component window\n */\n\n resize(width : ?(number | string), height : ?(number | string)) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.component.log(`resize`, { height: stringify(height), width: stringify(width) });\n this.driver.resize.call(this, width, height);\n if (this.props.onResize) {\n this.props.onResize();\n }\n });\n }\n\n\n /* Hide\n ----\n\n Hide the component and any parent template\n */\n\n hide() : void {\n\n if (this.container) {\n hideElement(this.container);\n }\n\n return this.driver.hide.call(this);\n }\n\n show() : void {\n\n if (this.container) {\n showElement(this.container);\n }\n\n return this.driver.show.call(this);\n }\n\n\n checkClose() {\n let closeWindowListener = onCloseWindow(this.window, () => {\n this.userClose();\n }, 50, 500);\n\n this.clean.register(closeWindowListener.cancel);\n }\n\n\n userClose() : ZalgoPromise {\n return this.close(CLOSE_REASONS.USER_CLOSED);\n }\n\n\n /* Close\n -----\n\n Close the child component\n */\n\n @memoized\n close(reason : string = CLOSE_REASONS.PARENT_CALL) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n this.component.log(`close`, { reason });\n\n this.event.triggerOnce(EVENTS.CLOSE);\n return this.props.onClose(reason);\n\n }).then(() => {\n\n return ZalgoPromise.all([\n this.closeComponent(),\n this.closeContainer()\n ]);\n\n }).then(() => {\n\n return this.destroy();\n });\n }\n\n\n @memoized\n closeContainer(reason : string = CLOSE_REASONS.PARENT_CALL) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n this.event.triggerOnce(EVENTS.CLOSE);\n return this.props.onClose(reason);\n\n }).then(() => {\n\n return ZalgoPromise.all([\n this.closeComponent(reason),\n this.hideContainer()\n ]);\n\n }).then(() => {\n\n return this.destroyContainer();\n });\n }\n\n\n @memoized\n destroyContainer() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.clean.run('destroyContainerEvents');\n this.clean.run('destroyContainerTemplate');\n });\n }\n\n\n @memoized\n closeComponent(reason : string = CLOSE_REASONS.PARENT_CALL) : ZalgoPromise {\n\n let win = this.window;\n\n return ZalgoPromise.try(() => {\n\n return this.cancelContainerEvents();\n\n }).then(() => {\n\n this.event.triggerOnce(EVENTS.CLOSE);\n return this.props.onClose(reason);\n\n }).then(() => {\n\n return this.hideComponent();\n\n }).then(() => {\n\n return this.destroyComponent();\n\n }).then(() => {\n\n // IE in metro mode -- child window needs to close itself, or close will hang\n\n if (this.childExports && this.context === CONTEXT_TYPES.POPUP && !isWindowClosed(win)) {\n this.childExports.close().catch(noop);\n }\n });\n }\n\n destroyComponent() {\n this.clean.run('destroyUnloadWindowListener');\n this.clean.run('destroyCloseWindowListener');\n this.clean.run('destroyContainerEvents');\n this.clean.run('destroyWindow');\n }\n\n @memoized\n showContainer() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.props.onDisplay) {\n return this.props.onDisplay();\n }\n }).then(() => {\n if (this.container) {\n return showAndAnimate(this.container, ANIMATION_NAMES.SHOW_CONTAINER, this.clean.register);\n }\n });\n }\n\n @memoized\n showComponent() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.props.onDisplay) {\n return this.props.onDisplay();\n }\n }).then(() => {\n if (this.element) {\n return showAndAnimate(this.element, ANIMATION_NAMES.SHOW_COMPONENT, this.clean.register);\n }\n });\n }\n\n @memoized\n hideContainer() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.container) {\n return animateAndHide(this.container, ANIMATION_NAMES.HIDE_CONTAINER, this.clean.register);\n } else {\n return ZalgoPromise.resolve();\n }\n });\n }\n\n @memoized\n hideComponent() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.element) {\n return animateAndHide(this.element, ANIMATION_NAMES.HIDE_COMPONENT, this.clean.register);\n } else {\n return ZalgoPromise.resolve();\n }\n });\n }\n\n\n /* Focus\n -----\n\n Focus the child component window\n */\n\n focus() {\n\n if (this.window && !isWindowClosed(this.window)) {\n this.component.log(`focus`);\n this.window.focus();\n\n } else {\n\n throw new Error(`No window to focus`);\n }\n }\n\n\n /* Create Component Template\n -------------------------\n\n Creates an initial template and stylesheet which are loaded into the child window, to be displayed before the url is loaded\n */\n\n @memoized\n createPrerenderTemplate() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (!this.component.prerenderTemplate) {\n return ZalgoPromise.resolve();\n }\n\n return ZalgoPromise.try(() => {\n\n if (this.prerenderIframe) {\n return awaitFrameLoad(this.prerenderIframe).then(() => this.prerenderWindow);\n } else {\n return this.prerenderWindow;\n }\n\n }).then(win => {\n\n let doc;\n\n try {\n doc = win.document;\n } catch (err) {\n return;\n }\n\n let el;\n\n try {\n el = this.renderTemplate(this.component.prerenderTemplate, {\n jsxDom: jsxDom.bind(doc),\n document: doc\n });\n } catch (err) {\n this.component.logError('preprender_error', { err: err.stack ? err.stack : err.toString() });\n console.error(err.stack ? err.stack : err); // eslint-disable-line no-console\n return;\n }\n\n try {\n writeElementToWindow(win, el);\n } catch (err) {\n this.component.logError('preprender_error', { err: err.stack ? err.stack : err.toString() });\n console.error(err.stack ? err.stack : err); // eslint-disable-line no-console\n }\n\n let { width = false, height = false, element = 'body' } = (typeof this.component.autoResize === 'object' && this.component.autoResize !== null)\n ? this.component.autoResize\n : {};\n\n element = getElementSafe(element, doc);\n\n if (element && (width || height)) {\n onResize(element, ({ width: newWidth, height: newHeight }) => {\n this.resize(width ? newWidth : undefined, height ? newHeight : undefined);\n }, { width, height, win });\n }\n });\n });\n }\n\n\n /* Create Parent Template\n ----------------------\n\n Create a template and stylesheet for the parent template behind the element\n */\n\n renderTemplate(renderer : (RenderOptionsType) => HTMLElement, options : Object = {}) : HTMLElement {\n\n let {\n width = `${ DEFAULT_DIMENSIONS.WIDTH }px`,\n height = `${ DEFAULT_DIMENSIONS.HEIGHT }px`\n } = (this.component.dimensions || {});\n\n return renderer.call(this, {\n id: `${ CLASS_NAMES.ZOID }-${ this.component.tag }-${ this.props.uid }`,\n props: renderer.__xdomain__ ? null : this.props,\n tag: this.component.tag,\n context: this.context,\n outlet: this.getOutlet(),\n CLASS: CLASS_NAMES,\n ANIMATION: ANIMATION_NAMES,\n CONTEXT: CONTEXT_TYPES,\n EVENT: EVENTS,\n actions: {\n close: () => this.userClose(),\n focus: () => this.focus()\n },\n on: (eventName, handler) => this.on(eventName, handler),\n jsxDom,\n document,\n dimensions: { width, height },\n ...options\n });\n }\n\n @memoized\n openContainer(element : ?HTMLElement) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n let el;\n\n if (element) {\n el = getElement(element);\n } else {\n el = document.body;\n }\n\n if (!el) {\n throw new Error(`Could not find element to open container into`);\n }\n\n if (!this.component.containerTemplate) {\n if (this.driver.renderedIntoContainerTemplate) {\n throw new Error(`containerTemplate needed to render ${ this.context }`);\n }\n\n return;\n }\n\n let container = this.renderTemplate(this.component.containerTemplate, {\n container: el\n });\n\n this.container = container;\n hideElement(this.container);\n appendChild(el, this.container);\n\n if (this.driver.renderedIntoContainerTemplate) {\n this.element = this.getOutlet();\n hideElement(this.element);\n\n if (!this.element) {\n throw new Error('Could not find element to render component into');\n }\n\n hideElement(this.element);\n }\n\n this.clean.register('destroyContainerTemplate', () => {\n\n if (this.container && this.container.parentNode) {\n this.container.parentNode.removeChild(this.container);\n }\n\n delete this.container;\n });\n });\n }\n\n cancelContainerEvents() {\n this.clean.run('destroyContainerEvents');\n }\n\n\n /* Destroy\n -------\n\n Close the component and clean up any listeners and state\n */\n\n destroy() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.clean.hasTasks()) {\n this.component.log(`destroy`);\n flush();\n return this.clean.all();\n }\n });\n }\n\n\n tryInit(method : () => mixed) : ZalgoPromise> {\n return ZalgoPromise.try(method).catch(err => {\n this.onInit.reject(err);\n }).then(() => {\n return this.onInit;\n });\n }\n\n\n /* Error\n -----\n\n Handle an error\n */\n\n error(err : mixed) : ZalgoPromise {\n // eslint-disable-next-line promise/no-promise-in-callback\n return ZalgoPromise.try(() => {\n\n this.handledErrors = this.handledErrors || [];\n\n if (this.handledErrors.indexOf(err) !== -1) {\n // $FlowFixMe\n return;\n }\n\n this.handledErrors.push(err);\n\n this.onInit.reject(err);\n\n return this.destroy();\n\n }).then(() => {\n\n if (this.props.onError) {\n return this.props.onError(err);\n }\n\n }).catch(errErr => { // eslint-disable-line unicorn/catch-error-name\n\n throw new Error(`An error was encountered while handling error:\\n\\n ${ stringifyError(err) }\\n\\n${ stringifyError(errErr) }`);\n\n }).then(() => {\n\n if (!this.props.onError) {\n throw err;\n }\n });\n }\n\n static activeComponents : Array> = []\n\n static destroyAll() : ZalgoPromise {\n let results = [];\n\n while (ParentComponent.activeComponents.length) {\n results.push(ParentComponent.activeComponents[0].destroy());\n }\n\n return ZalgoPromise.all(results).then(noop);\n }\n}\n","/* @flow */\n\nimport { onCloseWindow, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { BaseComponent } from '../base';\nimport { ParentComponent } from '../parent';\nimport { RENDER_DRIVERS, type ContextDriverType } from '../parent/drivers';\nimport type { Component } from '../component';\nimport { noop } from '../../lib';\nimport type { CancelableType, DimensionsType } from '../../types';\n\nexport type DelegatePropsType = {\n uid : string,\n dimensions : DimensionsType,\n onClose : () => ?ZalgoPromise,\n onDisplay : () => ?ZalgoPromise\n};\n\nexport type DelegateOptionsType = {\n context : string,\n props : DelegatePropsType,\n childWindowName : string,\n isWindowClosed : () => ZalgoPromise,\n \n overrides : {\n focus : () => ZalgoPromise,\n userClose : (string) => ZalgoPromise,\n getDomain : () => ZalgoPromise,\n error : (mixed) => ZalgoPromise,\n on : (string, () => void) => CancelableType\n }\n};\n\nexport class DelegateComponent

extends BaseComponent

{\n\n source : CrossDomainWindowType\n context : string\n props : DelegatePropsType\n\n focus : () => ZalgoPromise\n userClose : (string) => ZalgoPromise\n getDomain : () => ZalgoPromise\n error : (mixed) => ZalgoPromise\n on : (string, () => void) => CancelableType\n\n childWindowName : string\n isWindowClosed : () => ZalgoPromise\n\n constructor(component : Component

, source : CrossDomainWindowType, options : DelegateOptionsType) {\n super();\n\n this.component = component;\n this.clean.set('source', source);\n\n this.context = options.context;\n\n this.props = {\n uid: options.props.uid,\n dimensions: options.props.dimensions,\n onClose: options.props.onClose,\n onDisplay: options.props.onDisplay\n };\n\n for (let propName of component.getPropNames()) {\n // $FlowFixMe\n let prop = this.component.getProp(propName);\n\n if (prop.allowDelegate) {\n this.props[propName] = options.props[propName];\n }\n }\n\n this.focus = () => {\n return ZalgoPromise.all([\n this.isWindowClosed().then(closed => {\n if (!closed) {\n window.open('', this.childWindowName);\n }\n }),\n options.overrides.focus.call(this)\n ]).then(noop);\n };\n\n this.clean.register('destroyFocusOverride', () => {\n // $FlowFixMe\n this.focus = noop;\n });\n\n this.userClose = options.overrides.userClose;\n this.getDomain = options.overrides.getDomain;\n this.error = options.overrides.error;\n this.on = options.overrides.on;\n\n let delegateOverrides = RENDER_DRIVERS[options.context].delegateOverrides;\n\n for (let key of Object.keys(delegateOverrides)) {\n // $FlowFixMe\n this[key] = ParentComponent.prototype[key];\n }\n\n this.childWindowName = options.childWindowName;\n this.isWindowClosed = options.isWindowClosed;\n\n ParentComponent.prototype.registerActiveComponent.call(this);\n\n this.watchForClose();\n }\n\n get driver() : ContextDriverType {\n\n if (!this.context) {\n throw new Error('Context not set');\n }\n\n return RENDER_DRIVERS[this.context];\n }\n\n watchForClose() {\n let closeWindowListener = onCloseWindow(this.source, () => this.destroy(), 3000);\n this.clean.register('destroyCloseWindowListener', closeWindowListener.cancel);\n }\n\n getOverrides(context : string) : { [string] : mixed } {\n\n let delegateOverrides = RENDER_DRIVERS[context].delegateOverrides;\n\n let overrides = {};\n\n let self = this;\n\n for (let key of Object.keys(delegateOverrides)) {\n overrides[key] = function delegateOverride() : mixed {\n // $FlowFixMe\n return ParentComponent.prototype[key].apply(self, arguments);\n };\n }\n\n return overrides;\n }\n\n destroy() : ZalgoPromise {\n return this.clean.all();\n }\n}\n","/* @flow */\n\nimport { PROP_TYPES_LIST, CONTEXT_TYPES_LIST } from '../../constants';\nimport { isPerc, isPx } from '../../lib';\n\nimport type { ComponentOptionsType } from './index';\n\nfunction validatePropDefinitions

(options : ComponentOptionsType

) {\n\n if (options.props && !(typeof options.props === 'object')) {\n throw new Error(`Expected options.props to be an object`);\n }\n\n if (options.props) {\n for (let key of Object.keys(options.props)) {\n\n // $FlowFixMe\n let prop = options.props[key];\n\n if (!prop || !(typeof prop === 'object')) {\n throw new Error(`Expected options.props.${ key } to be an object`);\n }\n\n if (!prop.type) {\n throw new Error(`Expected prop.type`);\n }\n\n if (PROP_TYPES_LIST.indexOf(prop.type) === -1) {\n throw new Error(`Expected prop.type to be one of ${ PROP_TYPES_LIST.join(', ') }`);\n }\n\n if (prop.required && prop.def) {\n throw new Error(`Required prop can not have a default value`);\n }\n }\n }\n}\n\n// eslint-disable-next-line complexity\nexport function validate

(options : ?ComponentOptionsType

) { // eslint-ignore-line\n\n if (!options) {\n throw new Error(`Expecred options to be passed`);\n }\n\n if (!options.tag || !options.tag.match(/^[a-z0-9-]+$/)) {\n throw new Error(`Invalid options.tag: ${ options.tag }`);\n }\n\n validatePropDefinitions(options);\n\n if (options.dimensions) {\n if (options.dimensions && !isPx(options.dimensions.width) && !isPerc(options.dimensions.width)) {\n throw new Error(`Expected options.dimensions.width to be a px or % string value`);\n }\n\n if (options.dimensions && !isPx(options.dimensions.height) && !isPerc(options.dimensions.height)) {\n throw new Error(`Expected options.dimensions.height to be a px or % string value`);\n }\n }\n\n if (options.contexts) {\n\n if (options.contexts.popup && !__ZOID__.__POPUP_SUPPORT__) {\n throw new Error(`Popups not supported in this build -- please use the full zoid.js build`);\n }\n\n let anyEnabled = false;\n\n for (let context of Object.keys(options.contexts)) {\n\n if (CONTEXT_TYPES_LIST.indexOf(context) === -1) {\n throw new Error(`Unsupported context type: ${ context }`);\n }\n\n if ((options.contexts && options.contexts[context]) || (options.contexts && options.contexts[context] === undefined)) {\n anyEnabled = true;\n }\n }\n\n if (!anyEnabled) {\n throw new Error(`No context type is enabled`);\n }\n }\n\n if (options.defaultContext) {\n if (CONTEXT_TYPES_LIST.indexOf(options.defaultContext) === -1) {\n throw new Error(`Unsupported context type: ${ options.defaultContext || 'unknown' }`);\n }\n\n if (options.contexts && options.defaultContext && !options.contexts[options.defaultContext]) {\n throw new Error(`Disallowed default context type: ${ options.defaultContext || 'unknown' }`);\n }\n }\n\n if (options.url && options.buildUrl) {\n throw new Error(`Can not pass both options.url and options.buildUrl`);\n }\n\n if (options.defaultEnv) {\n if (typeof options.defaultEnv !== 'string') {\n throw new TypeError(`Expected options.defaultEnv to be a string`);\n }\n\n if (!options.buildUrl && typeof options.url !== 'object') {\n throw new Error(`Expected options.url to be an object mapping env->url`);\n }\n\n if (options.url && typeof options.url === 'object' && !options.url[options.defaultEnv]) {\n throw new Error(`No url found for default env: ${ options.defaultEnv }`);\n }\n }\n\n if (options.url && typeof options.url === 'object') {\n\n if (!options.defaultEnv) {\n throw new Error(`Must pass options.defaultEnv with env->url mapping`);\n }\n\n for (let env of Object.keys(options.url)) {\n if (!options.url[env]) {\n throw new Error(`No url specified for env: ${ env }`);\n }\n }\n }\n\n if (options.prerenderTemplate && typeof options.prerenderTemplate !== 'function') {\n throw new Error(`Expected options.prerenderTemplate to be a function`);\n }\n\n if (options.containerTemplate && typeof options.containerTemplate !== 'function') {\n throw new Error(`Expected options.containerTemplate to be a function`);\n }\n}\n","/* @flow */\n/* @jsx jsxDom */\n\nimport { type RenderOptionsType } from '../../parent';\n\nexport function defaultContainerTemplate({ id, tag, context, CLASS, outlet, jsxDom, dimensions : { width, height } } : RenderOptionsType) : HTMLElement {\n\n return (\n

\n \n\n { outlet }\n
\n );\n}\n","/* @flow */\n/* @jsx jsxDom */\n\nimport { type RenderOptionsType } from '../../parent';\n\nexport function defaultPrerenderTemplate({ jsxDom } : RenderOptionsType) : HTMLElement {\n return (\n \n \n \n \n \n
\n
\n
\n \n \n );\n}\n","/* @flow */\n\nexport * from './container';\nexport * from './component';\n","/* @flow */\n\nimport { type ZalgoPromise } from 'zalgo-promise/src';\nimport type { SameDomainWindowType } from 'cross-domain-utils/src';\n\nimport { uniqueID } from '../../lib';\nimport { type DimensionsType } from '../../types';\n\ntype PropDefinitionType = {\n type : S,\n alias? : string,\n value? : T,\n required? : boolean,\n noop? : boolean,\n once? : boolean,\n memoize? : boolean,\n promisify? : boolean,\n queryParam? : boolean | string | (T) => (string | ZalgoPromise),\n queryValue? : (T) => (ZalgoPromise | mixed),\n sendToChild? : boolean,\n allowDelegate? : boolean,\n validate? : (T, PropsType & P) => void,\n decorate? : (T, PropsType & P) => (void | ZalgoPromise | T),\n def? : (P) => ?T,\n sameDomain? : boolean,\n serialization? : 'json' | 'dotify',\n childDecorate? : (T) => ?T,\n denodeify? : boolean\n};\n\nexport type BooleanPropDefinitionType = PropDefinitionType;\nexport type StringPropDefinitionType = PropDefinitionType;\nexport type NumberPropDefinitionType = PropDefinitionType;\nexport type FunctionPropDefinitionType = PropDefinitionType;\nexport type ObjectPropDefinitionType = PropDefinitionType;\n\nexport type MixedPropDefinitionType

= BooleanPropDefinitionType<*, P> | StringPropDefinitionType<*, P> | NumberPropDefinitionType<*, P> | FunctionPropDefinitionType<*, P> | ObjectPropDefinitionType<*, P>;\n\nexport type UserPropsDefinitionType

= {\n [string] : MixedPropDefinitionType

\n};\n\nexport type EventHandlerType = (T) => void | ZalgoPromise;\n\ntype envPropType = string;\ntype uidPropType = string;\ntype urlPropType = string;\ntype versionPropType = string;\ntype timeoutPropType = number;\ntype logLevelPropType = string;\ntype dimensionsPropType = DimensionsType;\ntype winPropType = SameDomainWindowType;\n\ntype onDisplayPropType = EventHandlerType;\ntype onEnterPropType = EventHandlerType;\ntype onRenderPropType = EventHandlerType;\ntype onClosePropType = EventHandlerType;\ntype onResizePropType = EventHandlerType;\ntype onTimeoutPropType = EventHandlerType;\ntype onErrorPropType = EventHandlerType;\n\nexport type BuiltInPropsType = {\n env : envPropType,\n uid : uidPropType,\n url? : urlPropType,\n version? : versionPropType,\n timeout? : timeoutPropType,\n logLevel : logLevelPropType,\n dimensions? : dimensionsPropType,\n win? : winPropType,\n\n onDisplay : onDisplayPropType,\n onEnter : onEnterPropType,\n onRender : onRenderPropType,\n onClose : onClosePropType,\n onResize : onResizePropType,\n onTimeout : onTimeoutPropType,\n onError? : onErrorPropType\n};\n\nexport type PropsType = {\n env? : envPropType,\n uid? : uidPropType,\n url? : urlPropType,\n version? : versionPropType,\n timeout? : timeoutPropType,\n logLevel? : logLevelPropType,\n dimensions? : dimensionsPropType,\n win? : winPropType,\n\n onDisplay? : onDisplayPropType,\n onEnter? : onEnterPropType,\n onRender? : onRenderPropType,\n onClose? : onClosePropType,\n onResize? : onResizePropType,\n onTimeout? : onTimeoutPropType,\n onError? : onErrorPropType\n};\n\nexport type BuiltInPropsDefinitionType

= {\n env : StringPropDefinitionType,\n uid : StringPropDefinitionType,\n url : StringPropDefinitionType,\n version : StringPropDefinitionType,\n timeout : NumberPropDefinitionType,\n logLevel : StringPropDefinitionType,\n dimensions : ObjectPropDefinitionType,\n win : ObjectPropDefinitionType,\n\n onDisplay : FunctionPropDefinitionType,\n onEnter : FunctionPropDefinitionType,\n onRender : FunctionPropDefinitionType,\n onClose : FunctionPropDefinitionType,\n onResize : FunctionPropDefinitionType,\n onTimeout : FunctionPropDefinitionType,\n onError : FunctionPropDefinitionType\n};\n\n/* Internal Props\n --------------\n\n We define and use certain props by default, for configuration and events that are used at the framework level.\n These follow the same format as regular props, and are classed as reserved words that may not be overriden by users.\n*/\n\nexport function getInternalProps

() : BuiltInPropsDefinitionType

{\n return {\n\n // The desired env in which the component is being rendered. Used to determine the correct url\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n def() : string {\n return this.defaultEnv;\n }\n },\n\n uid: {\n type: 'string',\n def() : string {\n return uniqueID();\n },\n queryParam: true\n },\n\n logLevel: {\n type: 'string',\n required: false,\n queryParam: true,\n def() : string {\n return this.defaultLogLevel;\n }\n },\n\n // A custom url to use to render the component\n\n url: {\n type: 'string',\n required: false,\n promise: true,\n sendToChild: false\n },\n\n win: {\n type: 'object',\n required: false,\n sendToChild: false\n },\n\n dimensions: {\n type: 'object',\n required: false\n },\n\n version: {\n type: 'string',\n required: false,\n queryParam: true,\n def() : string {\n return this.version;\n }\n },\n\n // A millisecond timeout before onTimeout is called\n\n timeout: {\n type: 'number',\n required: false,\n sendToChild: false\n },\n\n onDisplay: {\n type: 'function',\n required: false,\n noop: true,\n promisify: true,\n memoize: true,\n sendToChild: false\n },\n\n onEnter: {\n type: 'function',\n required: false,\n noop: true,\n promisify: true,\n sendToChild: false\n },\n\n // When we get an INIT message from the child\n\n onRender: {\n type: 'function',\n required: false,\n noop: true,\n promisify: true,\n sendToChild: false\n },\n\n // When the user closes the component.\n\n onClose: {\n type: 'function',\n required: false,\n noop: true,\n once: true,\n promisify: true,\n sendToChild: false\n },\n\n onResize: {\n type: 'function',\n required: false,\n noop: true,\n sendToChild: false\n },\n\n // When we time-out before getting an INIT message from the child. Defaults to onError if no handler passed.\n\n onTimeout: {\n type: 'function',\n required: false,\n memoize: true,\n promisify: true,\n sendToChild: false,\n def() : (() => void) {\n return function onTimeout(err : mixed) : void {\n if (this.props.onError) {\n return this.props.onError(err);\n }\n throw err;\n };\n }\n },\n\n // When the component experiences an error\n\n onError: {\n type: 'function',\n required: false,\n promisify: true,\n sendToChild: true,\n once: true,\n def() : (() => void) {\n return function onError(err : mixed) {\n setTimeout(() => {\n throw err;\n });\n };\n }\n }\n };\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { on, send } from 'post-robot/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getDomain, getDomainFromUrl, matchDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { BaseComponent } from '../base';\nimport { ChildComponent } from '../child';\nimport { ParentComponent, type RenderOptionsType } from '../parent';\nimport { DelegateComponent, type DelegateOptionsType } from '../delegate';\nimport { isZoidComponentWindow, getComponentMeta } from '../window';\nimport { CONTEXT_TYPES, POST_MESSAGE, WILDCARD } from '../../constants';\nimport { angular, angular2, glimmer, react, vue, script } from '../../drivers/index';\nimport { info, error, warn, setLogLevel, memoize } from '../../lib';\nimport type { EnvStringRegExp, CssDimensionsType, StringMatcherType, ElementRefType, EnvString } from '../../types';\n\nimport { validate } from './validate';\nimport { defaultContainerTemplate, defaultPrerenderTemplate } from './templates';\nimport { getInternalProps, type UserPropsDefinitionType, type BuiltInPropsDefinitionType, type PropsType, type BuiltInPropsType, type MixedPropDefinitionType } from './props';\n\nconst drivers = { angular, angular2, glimmer, react, vue, script };\n\n/* Component\n ---------\n\n This is the spec for the component. The idea is, when I call zoid.create(), it will create a new instance\n of Component with the blueprint needed to set up ParentComponents and ChildComponents.\n\n This is the one portion of code which is required by -- and shared to -- both the parent and child windows, and\n contains all of the configuration needed for them to set themselves up.\n*/\n\nexport type ComponentOptionsType

= {\n\n tag : string,\n\n url? : EnvString,\n buildUrl? : (BuiltInPropsType & P) => string | ZalgoPromise,\n\n domain? : EnvStringRegExp,\n bridgeUrl? : EnvString,\n bridgeDomain? : EnvString,\n\n props? : UserPropsDefinitionType

,\n\n dimensions? : CssDimensionsType,\n scrolling? : boolean,\n autoResize? : boolean | { width? : boolean, height? : boolean, element? : string },\n listenForResize? : boolean,\n\n defaultLogLevel? : string,\n allowedParentDomains? : StringMatcherType,\n\n version? : string,\n defaultEnv? : string,\n\n contexts? : { iframe? : boolean, popup? : boolean },\n defaultContext? : string,\n\n containerTemplate? : (RenderOptionsType) => HTMLElement,\n prerenderTemplate? : (RenderOptionsType) => HTMLElement,\n\n validate? : (Component

, UserPropsDefinitionType

) => void,\n\n unsafeRenderTo? : boolean\n};\n\nexport type ComponentDriverType = {\n global : () => ?T,\n register : (Component

, T) => mixed\n};\n\nexport class Component

extends BaseComponent

{\n\n name : string\n looseProps : boolean\n\n tag : string\n url : EnvString\n\n domain : EnvStringRegExp\n bridgeUrl : EnvString\n bridgeDomain : EnvString\n\n props : UserPropsDefinitionType

\n builtinProps : BuiltInPropsDefinitionType

\n\n dimensions : CssDimensionsType\n scrolling : boolean\n autoResize : ?(boolean | { width? : boolean, height? : boolean, element? : string })\n listenForResize : ?boolean\n\n defaultLogLevel : string\n allowedParentDomains : StringMatcherType\n\n version : string\n defaultEnv : string\n buildUrl : (BuiltInPropsType & P) => string | ZalgoPromise\n\n contexts : { iframe? : boolean, popup? : boolean }\n defaultContext : string\n\n containerTemplate : (RenderOptionsType) => HTMLElement\n prerenderTemplate : (RenderOptionsType) => HTMLElement\n\n validate : (Component

, (PropsType & P)) => void\n\n unsafeRenderTo : ?boolean\n\n driverCache : { [string] : mixed }\n\n xchild : ?ChildComponent

\n xprops : ?P\n\n constructor(options : ComponentOptionsType

) {\n super();\n validate(options);\n\n // The tag name of the component. Used by some drivers (e.g. angular) to turn the component into an html element,\n // e.g. \n\n this.addProp(options, 'tag');\n\n this.addProp(options, 'defaultLogLevel', 'info');\n\n this.addProp(options, 'allowedParentDomains', WILDCARD);\n\n // initially set log level to default log level configured when creating component\n setLogLevel(this.defaultLogLevel);\n\n if (Component.components[this.tag]) {\n throw new Error(`Can not register multiple components with the same tag`);\n }\n\n // Name of the component, used for logging. Auto-generated from the tag name by default.\n\n this.addProp(options, 'name', this.tag.replace(/-/g, '_'));\n\n // A json based spec describing what kind of props the component accepts. This is used to validate any props before\n // they are passed down to the child.\n\n this.builtinProps = getInternalProps();\n this.props = options.props || {};\n\n if (!options.props) {\n this.looseProps = true;\n }\n\n // The dimensions of the component, e.g. { width: '300px', height: '150px' }\n\n this.addProp(options, 'dimensions');\n this.addProp(options, 'scrolling');\n this.addProp(options, 'listenForResize');\n\n this.addProp(options, 'version', 'latest');\n\n // The default environment we should render to if none is specified in the parent\n\n this.addProp(options, 'defaultEnv');\n\n // A mapping of env->url, used to determine which url to load for which env\n\n this.addProp(options, 'buildUrl');\n\n this.addProp(options, 'url');\n this.addProp(options, 'domain');\n\n this.addProp(options, 'bridgeUrl');\n this.addProp(options, 'bridgeDomain');\n\n this.addProp(options, 'attributes', {});\n\n // A url to use by default to render the component, if not using envs\n\n\n // The allowed contexts. For example { iframe: true, popup: false }\n\n this.addProp(options, 'contexts', { iframe: true, popup: false });\n\n // The default context to render to\n\n this.addProp(options, 'defaultContext');\n\n // Auto Resize option\n\n this.addProp(options, 'autoResize', false);\n\n // Templates and styles for the parent page and the initial rendering of the component\n\n this.addProp(options, 'containerTemplate', defaultContainerTemplate);\n this.addProp(options, 'prerenderTemplate', defaultPrerenderTemplate);\n\n // Validation\n\n this.addProp(options, 'validate');\n\n // Security\n\n this.addProp(options, 'unsafeRenderTo', false);\n\n // A mapping of tag->component so we can reference components by string tag name\n\n Component.components[this.tag] = this;\n\n // Register all of the drivers for instantiating components. The model used is -- there's a standard javascript\n // way of rendering a component, then each other technology (e.g. react) needs to hook into that interface.\n // This makes us a little more pluggable and loosely coupled.\n this.registerDrivers();\n this.registerChild();\n this.listenDelegate();\n }\n\n @memoize\n getPropNames() : Array {\n let props = Object.keys(this.props);\n\n for (let key of Object.keys(this.builtinProps)) {\n if (props.indexOf(key) === -1) {\n props.push(key);\n }\n }\n\n return props;\n }\n\n // $FlowFixMe\n getProp(name : string) : MixedPropDefinitionType

{\n // $FlowFixMe\n return this.props[name] || this.builtinProps[name];\n }\n\n registerDrivers() {\n this.driverCache = {};\n\n for (let driverName of Object.keys(drivers)) {\n if (driverName.indexOf('_') === 0) {\n continue;\n }\n\n let driver = drivers[driverName];\n let glob = driver.global();\n if (glob) {\n this.driver(driverName, glob);\n }\n }\n }\n\n driver(name : string, dep : mixed) : mixed {\n if (!drivers[name]) {\n throw new Error(`Could not find driver for framework: ${ name }`);\n }\n\n if (!this.driverCache[name]) {\n this.driverCache[name] = drivers[name].register(this, dep);\n }\n\n return this.driverCache[name];\n }\n\n registerChild() : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n if (this.isChild()) {\n return new ChildComponent(this);\n }\n });\n }\n\n listenDelegate() {\n on(`${ POST_MESSAGE.ALLOW_DELEGATE }_${ this.name }`, () => {\n return true;\n });\n\n on(`${ POST_MESSAGE.DELEGATE }_${ this.name }`, ({ source, origin, data }) => {\n\n let domain = this.getDomain(null, data.env || this.defaultEnv);\n\n if (!domain) {\n throw new Error(`Could not determine domain to allow remote render`);\n }\n\n if (!matchDomain(domain, origin)) {\n throw new Error(`Can not render from ${ origin } - expected ${ domain.toString() }`);\n }\n\n let delegate = this.delegate(source, data.options);\n\n return {\n overrides: delegate.getOverrides(data.context),\n destroy: () => delegate.destroy()\n };\n });\n }\n\n canRenderTo(win : CrossDomainWindowType) : ZalgoPromise {\n return send(win, `${ POST_MESSAGE.ALLOW_DELEGATE }_${ this.name }`).then(({ data }) => {\n return data;\n }).catch(() => {\n return false;\n });\n }\n\n\n getValidDomain(url : ?string) : ?(string | RegExp) {\n\n if (!url) {\n return;\n }\n\n let domain = getDomainFromUrl(url);\n\n if (typeof this.domain === 'string' && domain === this.domain) {\n return domain;\n }\n\n let domains = this.domain;\n\n if (domains && typeof domains === 'object' && !(domains instanceof RegExp)) {\n for (let env of Object.keys(domains)) {\n\n if (env === 'test') {\n continue;\n }\n\n if (domain === domains[env]) {\n return domain;\n }\n }\n }\n }\n\n\n getDomain(url : ?string, env : string) : ?(string | RegExp) {\n\n let domain = this.getForEnv(this.domain, env);\n\n if (domain) {\n return domain;\n }\n\n domain = this.getValidDomain(url);\n\n if (domain) {\n return domain;\n }\n\n // $FlowFixMe\n let envUrl = this.getForEnv(this.url, env);\n\n if (envUrl) {\n // $FlowFixMe\n return getDomainFromUrl(envUrl);\n }\n\n if (url) {\n return getDomainFromUrl(url);\n }\n }\n\n getBridgeUrl(env : string) : ?string {\n // $FlowFixMe\n return this.getForEnv(this.bridgeUrl, env);\n }\n\n getForEnv(item : (string | RegExp) | { [string] : (string | RegExp) }, env : ?string) : ?(string | RegExp) {\n\n if (!item) {\n return;\n }\n\n if (typeof item === 'string' || item instanceof RegExp) {\n return item;\n }\n\n if (!env) {\n env = this.defaultEnv;\n }\n\n if (!env) {\n return;\n }\n\n if (env && typeof item === 'object' && item[env]) {\n return item[env];\n }\n }\n\n getBridgeDomain(env : string) : ?string {\n\n // $FlowFixMe\n let bridgeDomain = this.getForEnv(this.bridgeDomain, env);\n\n if (bridgeDomain) {\n // $FlowFixMe\n return bridgeDomain;\n }\n\n let bridgeUrl = this.getBridgeUrl(env);\n\n if (bridgeUrl) {\n return getDomainFromUrl(bridgeUrl);\n }\n }\n\n getUrl(env : string, props : BuiltInPropsType & P) : (string | ZalgoPromise) {\n\n // $FlowFixMe\n let url = this.getForEnv(this.url, env);\n\n if (url) {\n // $FlowFixMe\n return url;\n }\n\n if (this.buildUrl) {\n return this.buildUrl(props);\n }\n\n throw new Error(`Unable to get url`);\n }\n\n isZoidComponent() : boolean {\n return isZoidComponentWindow();\n }\n\n isChild() : boolean {\n if (!isZoidComponentWindow()) {\n return false;\n }\n\n const { tag, childDomain } = getComponentMeta();\n\n if (childDomain && childDomain !== getDomain()) {\n return false;\n }\n\n if (tag !== this.tag) {\n return false;\n }\n\n return true;\n }\n\n\n createError(message : string, tag : ?string) : Error {\n return new Error(`[${ tag || this.tag }] ${ message }`);\n }\n\n\n /* Init\n ----\n\n Shortcut to instantiate a component on a parent page, with props\n */\n\n init(props : (PropsType & P), context : ?string, element : ElementRefType) : ParentComponent

{\n return new ParentComponent(this, this.getRenderContext(context, element), { props });\n }\n\n\n delegate(source : CrossDomainWindowType, options : DelegateOptionsType) : DelegateComponent

{\n return new DelegateComponent(this, source, options);\n }\n\n validateRenderContext(context : ?string, element : ?ElementRefType) {\n if (context && !this.contexts[context]) {\n throw new Error(`[${ this.tag }] Can not render to ${ context }`);\n }\n\n if (!element && context === CONTEXT_TYPES.IFRAME) {\n throw new Error(`[${ this.tag }] Context type ${ CONTEXT_TYPES.IFRAME } requires an element selector`);\n }\n }\n\n getDefaultContext() : string {\n if (this.defaultContext) {\n return this.defaultContext;\n } else if (this.contexts[CONTEXT_TYPES.IFRAME]) {\n return CONTEXT_TYPES.IFRAME;\n } else if (this.contexts[CONTEXT_TYPES.POPUP]) {\n return CONTEXT_TYPES.POPUP;\n }\n\n throw new Error(`Can not determine default context`);\n }\n\n getRenderContext(context : ?string, element : ?ElementRefType) : string {\n context = context || this.getDefaultContext();\n this.validateRenderContext(context, element);\n return context;\n }\n\n\n /* Render\n ------\n\n Shortcut to render a parent component\n */\n\n render(props : (PropsType & P), element : ?ElementRefType) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(null, element), { props }).render(element);\n });\n }\n\n renderIframe(props : (PropsType & P), element : ElementRefType) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(CONTEXT_TYPES.IFRAME, element), { props }).render(element);\n });\n }\n\n renderPopup(props : (PropsType & P)) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(CONTEXT_TYPES.POPUP), { props }).render();\n });\n }\n\n renderTo(win : CrossDomainWindowType, props : (PropsType & P), element : ?ElementRefType) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(null, element), { props }).renderTo(win, element);\n });\n }\n\n renderIframeTo(win : CrossDomainWindowType, props : (PropsType & P), element : ElementRefType) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(CONTEXT_TYPES.IFRAME, element), { props }).renderTo(win, element);\n });\n }\n\n renderPopupTo(win : CrossDomainWindowType, props : (PropsType & P)) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(CONTEXT_TYPES.POPUP), { props }).renderTo(win);\n });\n }\n\n prerender(props : (PropsType & P), element : ElementRefType) : { render : ((PropsType & P), ElementRefType) => ZalgoPromise>, renderTo : (CrossDomainWindowType, (PropsType & P), ElementRefType) => ZalgoPromise> } {\n let instance = new ParentComponent(this, this.getRenderContext(null, element), { props });\n instance.prefetch();\n\n return {\n render(innerProps : (PropsType & P), innerElement : ElementRefType) : ZalgoPromise> {\n if (innerProps) {\n instance.updateProps(innerProps);\n }\n\n return instance.render(innerElement);\n },\n\n renderTo(win : CrossDomainWindowType, innerProps : (PropsType & P), innerElement : ElementRefType) : ZalgoPromise> {\n if (innerProps) {\n instance.updateProps(innerProps);\n }\n\n return instance.renderTo(win, innerElement);\n },\n\n get html() : ?ZalgoPromise {\n return instance.html;\n },\n\n set html(value) {\n instance.html = value;\n }\n };\n }\n\n /* Log\n ---\n\n Log an event using the component name\n */\n\n log(event : string, payload : { [ string ] : string } = {}) {\n info(this.name, event, payload);\n }\n\n\n /* Log Warning\n -----------\n\n Log a warning\n */\n\n logWarning(event : string, payload : { [ string ] : string }) {\n warn(this.name, event, payload);\n }\n\n\n /* Log Error\n ---------\n\n Log an error\n */\n\n logError(event : string, payload : { [ string ] : string }) {\n error(this.name, event, payload);\n }\n\n static components : { [string] : Component<*> } = {}\n\n static getByTag(tag : string) : Component {\n return Component.components[tag];\n }\n}\n","/* @flow */\n\nexport * from './component';\nexport * from './parent';\nexport * from './child';\n","/* @flow */\n\nimport { type ZalgoPromise } from 'zalgo-promise/src';\n// eslint-disable-next-line import/no-namespace\nimport * as _postRobot from 'post-robot/src';\n\nimport { Component, type ComponentOptionsType } from './component';\nimport { ParentComponent } from './component/parent';\n// eslint-disable-next-line import/no-namespace\nimport * as _CONSTANTS from './constants';\n\nexport function create

(options : ComponentOptionsType

) : Component

{\n return new Component(options);\n}\n\nexport function getByTag

(tag : string) : Component

{\n return Component.getByTag(tag);\n}\n\nexport { getCurrentScriptDir } from './lib';\n\nexport function destroyAll() : ZalgoPromise {\n return ParentComponent.destroyAll();\n}\nexport let postRobot = _postRobot;\n\nexport * from './error';\n\nexport const CONSTANTS = _CONSTANTS;\n\nexport type ZoidComponent

= Component

;\n","/* @flow */\n\n// eslint-disable-next-line import/no-namespace\nimport * as INTERFACE from './interface';\n\nexport * from './interface';\nexport default INTERFACE;\n","/* @flow */\n\nimport {\n getOpener,\n getTop\n} from 'cross-domain-utils/src';\n\nexport function getUserAgent() : string {\n return window.navigator.mockUserAgent || window.navigator.userAgent;\n}\n\nexport function isDevice() : boolean {\n const userAgent = getUserAgent();\n if (userAgent.match(/Android|webOS|iPhone|iPad|iPod|bada|Symbian|Palm|CriOS|BlackBerry|IEMobile|WindowsMobile|Opera Mini/i)) {\n return true;\n }\n\n return false;\n}\n\nexport function isInsidePopup() : boolean {\n // Checks to see if the top-most window is a pop-up\n return Boolean(getOpener(getTop(window) || window));\n}\n\nexport function isStandAlone() : boolean {\n // Chrome interprets pop-up windows as standalone windows\n return !isInsidePopup() && (window.navigator.standalone === true || window.matchMedia('(display-mode: standalone)').matches);\n}\n\nexport function isFacebookWebView(ua? : string = getUserAgent()) : boolean {\n return (ua.indexOf('FBAN') !== -1) || (ua.indexOf('FBAV') !== -1);\n}\n\nexport function isFirefoxIOS(ua? : string = getUserAgent()) : boolean {\n return (/FxiOS/i).test(ua);\n}\n\nexport function isEdgeIOS(ua? : string = getUserAgent()) : boolean {\n return (/EdgiOS/i).test(ua);\n}\n\nexport function isOperaMini(ua? : string = getUserAgent()) : boolean {\n return ua.indexOf('Opera Mini') > -1;\n}\n\nexport function isAndroid(ua? : string = getUserAgent()) : boolean {\n return (/Android/).test(ua);\n}\n\nexport function isIos(ua? : string = getUserAgent()) : boolean {\n return (/iPhone|iPod|iPad/).test(ua);\n}\n\nexport function isGoogleSearchApp(ua? : string = getUserAgent()) : boolean {\n return (/\\bGSA\\b/).test(ua);\n}\n\nexport function isQQBrowser(ua? : string = getUserAgent()) : boolean {\n return (/QQBrowser/).test(ua);\n}\n\nexport function isIosWebview(ua? : string = getUserAgent()) : boolean {\n if (isIos(ua)) {\n if (isGoogleSearchApp(ua)) {\n return true;\n }\n return (/.+AppleWebKit(?!.*Safari)/).test(ua);\n }\n return false;\n}\n\nexport function isAndroidWebview(ua? : string = getUserAgent()) : boolean {\n if (isAndroid(ua)) {\n return (/Version\\/[\\d.]+/).test(ua) && !isOperaMini(ua);\n }\n return false;\n}\n\nexport function isWebView() : boolean {\n return isFacebookWebView() ||\n isIosWebview() ||\n isAndroidWebview();\n}\n\nexport function isIE() : boolean {\n\n if (window.document.documentMode) {\n return true;\n }\n\n if (window.navigator && typeof window.navigator.userAgent === 'string') {\n if ((/Edge|MSIE/i).test(window.navigator.userAgent)) {\n return true;\n }\n }\n\n return false;\n}\n\n\nexport function isIE11() : boolean {\n if (!isIE()) {\n return false;\n }\n\n if (window.navigator && typeof window.navigator.userAgent === 'string') {\n if ((/MSIE 11\\.0/i).test(window.navigator.userAgent)) {\n return true;\n }\n\n if ((/Trident/i).test(window.navigator.userAgent) && (/rv:11\\.0/i).test(window.navigator.userAgent)) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function isIECompHeader() : boolean {\n const mHttp = window.document.querySelector('meta[http-equiv=\"X-UA-Compatible\"]');\n const mContent = window.document.querySelector('meta[content=\"IE=edge\"]');\n if (mHttp && mContent) {\n return true;\n }\n return false;\n}\n\nexport function isElectron() : boolean {\n const userAgent = getUserAgent();\n // here we want a case-insensitive full word boundary\n return (/\\belectron\\b/i).test(userAgent);\n}\n\nexport function isIEIntranet() : boolean {\n if (!isIE11()) {\n return false;\n }\n\n // This status check only works for older versions of IE with document.documentMode set\n\n if (window.document.documentMode) {\n try {\n const status = window.status;\n\n window.status = 'testIntranetMode';\n\n if (window.status === 'testIntranetMode') {\n window.status = status;\n\n return true;\n }\n\n return false;\n\n } catch (err) {\n\n return false;\n }\n }\n\n return false;\n}\n\nexport function isMacOsCna() : boolean {\n const userAgent = getUserAgent();\n return (/Macintosh.*AppleWebKit(?!.*Safari)/i).test(userAgent);\n}\n\nexport function supportsPopups(ua? : string = getUserAgent()) : boolean {\n return !(isIosWebview(ua) || isAndroidWebview(ua) || isOperaMini(ua) ||\n isFirefoxIOS(ua) || isEdgeIOS(ua) || isFacebookWebView(ua) || isQQBrowser(ua) || isElectron() || isMacOsCna() || isStandAlone());\n}\n","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","/* @flow */\n\nimport { type ZalgoPromise } from 'zalgo-promise/src';\nimport { getParent, isWindowClosed, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONSTANTS } from '../conf';\nimport { noop } from '../lib';\nimport { global } from '../global';\n\n/*\n HERE BE DRAGONS\n\n Warning: this file may look weird. Why save the tunnel window in an Object\n by ID, then look it up later, rather than just using the reference from the closure scope?\n\n The reason is, that ends up meaning the garbage collector can never get its hands\n on a closed window, since our closure has continued access to it -- and post-robot\n has no good way to know whether to clean up the function with the closure scope.\n\n If you're editing this file, be sure to run significant memory / GC tests afterwards.\n*/\n\nglobal.tunnelWindows = global.tunnelWindows || {};\nglobal.tunnelWindowId = 0;\n\nfunction deleteTunnelWindow(id) {\n\n try {\n if (global.tunnelWindows[id]) {\n delete global.tunnelWindows[id].source;\n }\n } catch (err) {\n // pass\n }\n\n delete global.tunnelWindows[id];\n}\n\nfunction cleanTunnelWindows() {\n let tunnelWindows = global.tunnelWindows;\n\n for (let key of Object.keys(tunnelWindows)) {\n let tunnelWindow = tunnelWindows[key];\n\n try {\n noop(tunnelWindow.source);\n } catch (err) {\n deleteTunnelWindow(key);\n continue;\n }\n\n if (isWindowClosed(tunnelWindow.source)) {\n deleteTunnelWindow(key);\n }\n }\n}\n\ntype TunnelWindowDataType = {\n name : string,\n source : CrossDomainWindowType,\n canary : () => void,\n sendMessage : (message : string) => void\n};\n\nfunction addTunnelWindow({ name, source, canary, sendMessage } : TunnelWindowDataType) : number {\n cleanTunnelWindows();\n global.tunnelWindowId += 1;\n global.tunnelWindows[global.tunnelWindowId] = { name, source, canary, sendMessage };\n return global.tunnelWindowId;\n}\n\nfunction getTunnelWindow(id : number) : TunnelWindowDataType {\n return global.tunnelWindows[id];\n}\n\nglobal.openTunnelToParent = function openTunnelToParent({ name, source, canary, sendMessage } : TunnelWindowDataType) : ZalgoPromise<{ source : CrossDomainWindowType, origin : string, data : Object }> {\n\n let parentWindow = getParent(window);\n\n if (!parentWindow) {\n throw new Error(`No parent window found to open tunnel to`);\n }\n\n let id = addTunnelWindow({ name, source, canary, sendMessage });\n\n return global.send(parentWindow, CONSTANTS.POST_MESSAGE_NAMES.OPEN_TUNNEL, {\n\n name,\n\n sendMessage() {\n\n let tunnelWindow = getTunnelWindow(id);\n\n try {\n // IE gets antsy if you try to even reference a closed window\n noop(tunnelWindow && tunnelWindow.source);\n } catch (err) {\n deleteTunnelWindow(id);\n return;\n }\n\n if (!tunnelWindow || !tunnelWindow.source || isWindowClosed(tunnelWindow.source)) {\n return;\n }\n\n try {\n tunnelWindow.canary();\n } catch (err) {\n return;\n }\n\n tunnelWindow.sendMessage.apply(this, arguments);\n }\n\n }, { domain: CONSTANTS.WILDCARD });\n};\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getDomain, isSameDomain, isOpener, isSameTopWindow, matchDomain, getUserAgent, getDomainFromUrl, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONFIG, CONSTANTS } from '../conf';\nimport { global } from '../global';\n\nexport function needsBridgeForBrowser() : boolean {\n\n if (getUserAgent(window).match(/MSIE|trident|edge\\/12|edge\\/13/i)) {\n return true;\n }\n\n if (!CONFIG.ALLOW_POSTMESSAGE_POPUP) {\n return true;\n }\n\n return false;\n}\n\nexport function needsBridgeForWin(win : CrossDomainWindowType) : boolean {\n\n if (!isSameTopWindow(window, win)) {\n return true;\n }\n\n return false;\n}\n\nexport function needsBridgeForDomain(domain : ?string, win : ?CrossDomainWindowType) : boolean {\n\n if (domain) {\n if (getDomain() !== getDomainFromUrl(domain)) {\n return true;\n }\n } else if (win) {\n if (!isSameDomain(win)) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function needsBridge({ win, domain } : { win? : CrossDomainWindowType, domain? : string }) : boolean {\n\n if (!needsBridgeForBrowser()) {\n return false;\n }\n\n if (domain && !needsBridgeForDomain(domain, win)) {\n return false;\n }\n\n if (win && !needsBridgeForWin(win)) {\n return false;\n }\n\n return true;\n}\n\nexport function getBridgeName(domain : string) : string {\n\n domain = domain || getDomainFromUrl(domain);\n\n let sanitizedDomain = domain.replace(/[^a-zA-Z0-9]+/g, '_');\n\n let id = `${ CONSTANTS.BRIDGE_NAME_PREFIX }_${ sanitizedDomain }`;\n\n return id;\n}\n\nexport function isBridge() : boolean {\n return Boolean(window.name && window.name === getBridgeName(getDomain()));\n}\n\nexport let documentBodyReady = new ZalgoPromise(resolve => {\n\n if (window.document && window.document.body) {\n return resolve(window.document.body);\n }\n\n let interval = setInterval(() => {\n if (window.document && window.document.body) {\n clearInterval(interval);\n return resolve(window.document.body);\n }\n }, 10);\n});\n\nglobal.remoteWindows = global.remoteWindows || new WeakMap();\n\nexport function registerRemoteWindow(win : CrossDomainWindowType) {\n global.remoteWindows.set(win, { sendMessagePromise: new ZalgoPromise() });\n}\n\nexport function findRemoteWindow(win : CrossDomainWindowType) : { sendMessagePromise : ZalgoPromise<(remoteWin : CrossDomainWindowType, message : string, remoteDomain : string) => void> } {\n return global.remoteWindows.get(win);\n}\n\nexport function registerRemoteSendMessage(win : CrossDomainWindowType, domain : string, sendMessage : (message : string) => void) {\n\n let remoteWindow = findRemoteWindow(win);\n\n if (!remoteWindow) {\n throw new Error(`Window not found to register sendMessage to`);\n }\n\n let sendMessageWrapper = (remoteWin : CrossDomainWindowType, message : string, remoteDomain : string) => {\n\n if (remoteWin !== win) {\n throw new Error(`Remote window does not match window`);\n }\n\n if (!matchDomain(remoteDomain, domain)) {\n throw new Error(`Remote domain ${ remoteDomain } does not match domain ${ domain }`);\n }\n\n sendMessage(message);\n };\n\n remoteWindow.sendMessagePromise.resolve(sendMessageWrapper);\n remoteWindow.sendMessagePromise = ZalgoPromise.resolve(sendMessageWrapper);\n}\n\nexport function rejectRemoteSendMessage(win : CrossDomainWindowType, err : Error) {\n\n let remoteWindow = findRemoteWindow(win);\n\n if (!remoteWindow) {\n throw new Error(`Window not found on which to reject sendMessage`);\n }\n\n remoteWindow.sendMessagePromise.asyncReject(err);\n}\n\nexport function sendBridgeMessage(win : CrossDomainWindowType, message : string, domain : string) : ZalgoPromise {\n\n let messagingChild = isOpener(window, win);\n let messagingParent = isOpener(win, window);\n\n if (!messagingChild && !messagingParent) {\n throw new Error(`Can only send messages to and from parent and popup windows`);\n }\n\n let remoteWindow = findRemoteWindow(win);\n\n if (!remoteWindow) {\n throw new Error(`Window not found to send message to`);\n }\n\n return remoteWindow.sendMessagePromise.then(sendMessage => {\n return sendMessage(win, message, domain);\n });\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { isSameDomain, getOpener, getFrames, getDomain, getFrameByName, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONSTANTS } from '../conf';\nimport { weakMapMemoize, noop } from '../lib';\nimport { global } from '../global';\n\nimport { needsBridge, registerRemoteWindow, rejectRemoteSendMessage, registerRemoteSendMessage, getBridgeName } from './common';\n\nlet awaitRemoteBridgeForWindow = weakMapMemoize((win : CrossDomainWindowType) : ZalgoPromise => {\n return ZalgoPromise.try(() => {\n for (let frame of getFrames(win)) {\n try {\n // $FlowFixMe\n if (frame && frame !== window && isSameDomain(frame) && frame[CONSTANTS.WINDOW_PROPS.POSTROBOT]) {\n return frame;\n }\n\n } catch (err) {\n continue;\n }\n }\n\n try {\n let frame = getFrameByName(win, getBridgeName(getDomain()));\n\n if (!frame) {\n return;\n }\n\n // $FlowFixMe\n if (isSameDomain(frame) && frame[CONSTANTS.WINDOW_PROPS.POSTROBOT]) {\n return frame;\n }\n\n return new ZalgoPromise(resolve => {\n\n let interval;\n let timeout;\n\n interval = setInterval(() => {\n // $FlowFixMe\n if (frame && isSameDomain(frame) && frame[CONSTANTS.WINDOW_PROPS.POSTROBOT]) {\n clearInterval(interval);\n clearTimeout(timeout);\n return resolve(frame);\n }\n }, 100);\n\n timeout = setTimeout(() => {\n clearInterval(interval);\n return resolve();\n }, 2000);\n });\n\n } catch (err) {\n // pass\n }\n });\n});\n\nexport function openTunnelToOpener() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n const opener = getOpener(window);\n\n if (!opener) {\n return;\n }\n\n if (!needsBridge({ win: opener })) {\n return;\n }\n\n registerRemoteWindow(opener);\n\n return awaitRemoteBridgeForWindow(opener).then(bridge => {\n\n if (!bridge) {\n return rejectRemoteSendMessage(opener, new Error(`Can not register with opener: no bridge found in opener`));\n }\n\n if (!window.name) {\n return rejectRemoteSendMessage(opener, new Error(`Can not register with opener: window does not have a name`));\n }\n\n return bridge[CONSTANTS.WINDOW_PROPS.POSTROBOT].openTunnelToParent({\n\n name: window.name,\n\n source: window,\n\n canary() {\n // pass\n },\n\n sendMessage(message) {\n\n try {\n noop(window);\n } catch (err) {\n return;\n }\n\n if (!window || window.closed) {\n return;\n }\n\n try {\n global.receiveMessage({\n data: message,\n origin: this.origin,\n source: this.source\n });\n } catch (err) {\n ZalgoPromise.reject(err);\n }\n }\n\n }).then(({ source, origin, data }) => {\n\n if (source !== opener) {\n throw new Error(`Source does not match opener`);\n }\n\n registerRemoteSendMessage(source, origin, data.sendMessage);\n\n }).catch(err => {\n\n rejectRemoteSendMessage(opener, err);\n throw err;\n });\n });\n });\n}\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getDomain, getFrameByName, isWindowClosed, getDomainFromUrl, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONFIG, CONSTANTS } from '../conf';\nimport { onChildWindowReady } from '../lib';\nimport { global } from '../global';\n\nimport { getBridgeName, documentBodyReady, registerRemoteSendMessage, registerRemoteWindow } from './common';\n\nglobal.bridges = global.bridges || {};\nglobal.bridgeFrames = global.bridgeFrames || {};\n\nglobal.popupWindowsByWin = global.popupWindowsByWin || new WeakMap();\nglobal.popupWindowsByName = global.popupWindowsByName || {};\n\nfunction listenForRegister(source, domain) {\n global.on(CONSTANTS.POST_MESSAGE_NAMES.OPEN_TUNNEL, { window: source, domain }, ({ origin, data }) => {\n\n if (origin !== domain) {\n throw new Error(`Domain ${ domain } does not match origin ${ origin }`);\n }\n\n if (!data.name) {\n throw new Error(`Register window expected to be passed window name`);\n }\n\n if (!data.sendMessage) {\n throw new Error(`Register window expected to be passed sendMessage method`);\n }\n\n if (!global.popupWindowsByName[data.name]) {\n throw new Error(`Window with name ${ data.name } does not exist, or was not opened by this window`);\n }\n\n if (!global.popupWindowsByName[data.name].domain) {\n throw new Error(`We do not have a registered domain for window ${ data.name }`);\n }\n\n if (global.popupWindowsByName[data.name].domain !== origin) {\n throw new Error(`Message origin ${ origin } does not matched registered window origin ${ global.popupWindowsByName[data.name].domain }`);\n }\n\n registerRemoteSendMessage(global.popupWindowsByName[data.name].win, domain, data.sendMessage);\n\n return {\n sendMessage(message) {\n\n if (!window || window.closed) {\n return;\n }\n\n let winDetails = global.popupWindowsByName[data.name];\n\n if (!winDetails) {\n return;\n }\n\n try {\n global.receiveMessage({\n data: message,\n origin: winDetails.domain,\n source: winDetails.win\n });\n } catch (err) {\n ZalgoPromise.reject(err);\n }\n }\n };\n });\n}\n\nfunction openBridgeFrame(name : string, url : string) : HTMLIFrameElement {\n\n let iframe = document.createElement(`iframe`);\n\n iframe.setAttribute(`name`, name);\n iframe.setAttribute(`id`, name);\n\n iframe.setAttribute(`style`, `display: none; margin: 0; padding: 0; border: 0px none; overflow: hidden;`);\n iframe.setAttribute(`frameborder`, `0`);\n iframe.setAttribute(`border`, `0`);\n iframe.setAttribute(`scrolling`, `no`);\n iframe.setAttribute(`allowTransparency`, `true`);\n\n iframe.setAttribute(`tabindex`, `-1`);\n iframe.setAttribute(`hidden`, `true`);\n iframe.setAttribute(`title`, ``);\n iframe.setAttribute(`role`, `presentation`);\n\n iframe.src = url;\n\n return iframe;\n}\n\nexport function hasBridge(url : string, domain : string) : boolean {\n domain = domain || getDomainFromUrl(url);\n return Boolean(global.bridges[domain]);\n}\n\nexport function openBridge(url : string, domain : string) : ZalgoPromise {\n\n domain = domain || getDomainFromUrl(url);\n\n if (global.bridges[domain]) {\n return global.bridges[domain];\n }\n\n global.bridges[domain] = ZalgoPromise.try(() => {\n\n if (getDomain() === domain) {\n throw new Error(`Can not open bridge on the same domain as current domain: ${ domain }`);\n }\n\n let name = getBridgeName(domain);\n let frame = getFrameByName(window, name);\n\n if (frame) {\n throw new Error(`Frame with name ${ name } already exists on page`);\n }\n\n let iframe = openBridgeFrame(name, url);\n global.bridgeFrames[domain] = iframe;\n\n return documentBodyReady.then(body => {\n\n body.appendChild(iframe);\n\n let bridge = iframe.contentWindow;\n\n listenForRegister(bridge, domain);\n\n return new ZalgoPromise((resolve, reject) => {\n\n iframe.onload = resolve;\n iframe.onerror = reject;\n\n }).then(() => {\n\n return onChildWindowReady(bridge, CONFIG.BRIDGE_TIMEOUT, `Bridge ${ url }`);\n\n }).then(() => {\n\n return bridge;\n });\n });\n });\n\n return global.bridges[domain];\n}\n\nlet windowOpen = window.open;\n\nwindow.open = function windowOpenWrapper(url : string, name : string, options : string, last : mixed) : mixed {\n\n let domain = url;\n\n if (url && url.indexOf(CONSTANTS.MOCK_PROTOCOL) === 0) {\n [ domain, url ] = url.split('|');\n }\n\n if (domain) {\n domain = getDomainFromUrl(domain);\n }\n\n let win = windowOpen.call(this, url, name, options, last);\n\n if (!win) {\n return win;\n }\n\n if (url) {\n registerRemoteWindow(win);\n }\n\n for (let winName of Object.keys(global.popupWindowsByName)) {\n if (isWindowClosed(global.popupWindowsByName[winName].win)) {\n delete global.popupWindowsByName[winName];\n }\n }\n\n if (name && win) {\n let winOptions = global.popupWindowsByWin.get(win) ||\n global.popupWindowsByName[name] || {};\n\n winOptions.name = winOptions.name || name;\n winOptions.win = winOptions.win || win;\n winOptions.domain = winOptions.domain || domain;\n\n global.popupWindowsByWin.set(win, winOptions);\n global.popupWindowsByName[name] = winOptions;\n }\n\n return win;\n};\n\nexport function linkUrl(win : CrossDomainWindowType, url : string) {\n\n let winOptions = global.popupWindowsByWin.get(win);\n\n if (winOptions) {\n winOptions.domain = getDomainFromUrl(url);\n registerRemoteWindow(win);\n }\n}\n\nexport function destroyBridges() {\n for (let domain of Object.keys(global.bridgeFrames)) {\n let frame = global.bridgeFrames[domain];\n if (frame.parentNode) {\n frame.parentNode.removeChild(frame);\n }\n }\n global.bridgeFrames = {};\n global.bridges = {};\n}\n","/* @flow */\n\n// eslint-disable-next-line import/no-unassigned-import\nimport './bridge';\n\nexport * from './child';\nexport * from './common';\nexport * from './parent';\n","/* @flow */\n\nimport { info } from 'beaver-logger/client';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport type { CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { LANG_TO_DEFAULT_COUNTRY, LOCALE } from '../constants';\nimport type { LocaleType } from '../types';\nimport { config } from '../config';\n\nimport { memoize } from './util';\nimport { isDevice } from './device';\n\nfunction isDocumentReady() : boolean {\n return Boolean(document.body) && document.readyState === 'complete';\n}\n\nexport const documentReady : ZalgoPromise = new ZalgoPromise(resolve => {\n\n if (isDocumentReady()) {\n return resolve();\n }\n\n const interval = setInterval(() => {\n if (isDocumentReady()) {\n clearInterval(interval);\n return resolve();\n }\n }, 10);\n});\n\nexport const documentBody : ZalgoPromise = documentReady.then(() => {\n if (document.body) {\n return document.body;\n }\n\n throw new Error('Document ready but document.body not present');\n});\n\n\nexport function loadScript(src : string, timeout : number = 0, attrs : Object = {}) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n const script = document.createElement('script');\n\n script.addEventListener('load', () => {\n resolve();\n });\n\n // For Internet explorer 8 support\n script.onreadystatechange = function scriptOnReadyStateChange() {\n if (this.readyState === 'complete' || this.readyState === 'loaded') {\n resolve();\n }\n };\n\n const scriptLoadError = new Error('script_loading_error');\n\n script.addEventListener('error', () => {\n return reject(scriptLoadError);\n });\n\n if (timeout) {\n setTimeout(() => {\n return reject(new Error('script_loading_timed_out'));\n }, timeout);\n }\n\n for (const attr of Object.keys(attrs)) {\n script.setAttribute(attr, attrs[attr]);\n }\n\n script.setAttribute('src', src);\n\n const head = document.getElementsByTagName('head')[0];\n\n head.appendChild(script);\n });\n}\n\n\nexport function isNodeList(nodes : mixed) : boolean {\n\n const result = Object.prototype.toString.call(nodes);\n\n if (result === '[object HTMLCollection]' || result === '[object NodeList]') {\n return true;\n }\n\n return false;\n}\n\nexport function isElement(item : mixed) : boolean {\n return item instanceof HTMLElement;\n}\n\nexport function getElement(item : mixed) : ?HTMLElement {\n\n if (!item) {\n return;\n }\n\n if (item instanceof HTMLElement) {\n return item;\n }\n\n if (typeof item === 'string') {\n\n if (document.querySelector) {\n const result = document.querySelector(item);\n\n if (result) {\n return result;\n }\n }\n\n return document.getElementById(item);\n }\n}\n\nexport function getElements(collection : $ReadOnlyArray | NodeList | HTMLCollection | HTMLElement | string) : $ReadOnlyArray {\n\n if (!collection) {\n return [];\n }\n\n if (collection instanceof HTMLElement || typeof collection === 'string') {\n const element = getElement(collection);\n if (element) {\n return [ element ];\n }\n return [];\n }\n\n if (Array.isArray(collection) || collection instanceof NodeList || collection instanceof HTMLCollection) {\n const result = [];\n\n for (let i = 0; i < collection.length; i++) {\n const el = getElement(collection[i]);\n if (el) {\n result.push(el);\n }\n }\n\n return result;\n }\n\n return [];\n}\n\nexport function onDocumentReady(method : () => void) : ZalgoPromise {\n return documentReady.then(method);\n}\n\nexport const parseQuery = memoize((queryString : string) : Object => {\n\n const params = {};\n\n if (!queryString) {\n return params;\n }\n\n if (queryString.indexOf('=') === -1) {\n return params;\n }\n\n for (let pair of queryString.split('&')) {\n pair = pair.split('=');\n\n if (pair[0] && pair[1]) {\n params[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n }\n\n return params;\n});\n\n\nexport function getQueryParam(name : string) : string {\n return parseQuery(window.location.search.slice(1))[name];\n}\n\nexport function urlWillRedirectPage(url : string) : boolean {\n\n if (url.indexOf('#') === -1) {\n return true;\n }\n\n if (url.indexOf('#') === 0) {\n return false;\n }\n\n if (url.split('#')[0] === window.location.href.split('#')[0]) {\n return false;\n }\n\n return true;\n}\n\nexport function extendUrl(url : string, params : { [key : string] : string } = {}) : string {\n\n const hasHash = url.indexOf('#') > 0;\n\n let [ serverUrl, hash ] = url.split('#');\n\n if (hash && !serverUrl) {\n [ serverUrl, hash ] = [ `#${ hash }`, '' ];\n }\n\n const [ originalUrl, originalQueryString ] = serverUrl.split('?');\n\n if (originalQueryString) {\n const originalQuery = parseQuery(originalQueryString);\n\n for (const key in originalQuery) {\n if (!params.hasOwnProperty(key)) {\n params[key] = originalQuery[key];\n }\n }\n }\n\n const newQueryString = Object.keys(params).filter(key => key && params[key]).sort().map(key => {\n return `${ encodeURIComponent(key) }=${ encodeURIComponent(params[key]) }`;\n }).join('&');\n\n let newUrl = originalUrl;\n\n if (newQueryString) {\n newUrl = `${ newUrl }?${ newQueryString }`;\n }\n\n if (hasHash) {\n newUrl = `${ newUrl }#${ hash || '' }`;\n }\n\n return newUrl;\n}\n\nexport function redirect(win : CrossDomainWindowType = window, url : string) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n\n info(`redirect`, { url });\n\n setTimeout(() => {\n win.location = url;\n if (!urlWillRedirectPage(url)) {\n resolve();\n }\n }, 1);\n });\n}\n\nexport function hasMetaViewPort() : boolean {\n const meta = document.querySelector('meta[name=viewport]');\n\n if (isDevice() && window.screen.width < 660 && !meta) {\n return false;\n }\n\n return true;\n}\n\nexport function getBrowserLocales() : $ReadOnlyArray {\n const nav = window.navigator;\n\n const locales = nav.languages\n ? Array.prototype.slice.apply(nav.languages)\n : [];\n\n if (nav.language) {\n locales.push(nav.language);\n }\n\n if (nav.userLanguage) {\n locales.push(nav.userLanguage);\n }\n\n return locales;\n}\n\nexport function normalizeLocale(locale : string) : ?LocaleType {\n\n if (locale && locale.match(/^[a-z]{2}[-_][A-Z]{2}$/)) {\n const [ lang, country ] = locale.split(/[-_]/);\n if (LOCALE[country] && LOCALE[country].indexOf(lang) !== -1) {\n return { country, lang };\n }\n }\n}\n\nexport function normalizeLang(lang : string) : ?LocaleType {\n\n if (lang && lang.match(/^[a-z]{2}$/)) {\n if (LANG_TO_DEFAULT_COUNTRY[lang]) {\n return { country: LANG_TO_DEFAULT_COUNTRY[lang], lang };\n }\n }\n}\n\nexport const getBrowserLocale = memoize(() : LocaleType => {\n\n const locales = getBrowserLocales();\n\n for (const locale of locales) {\n let loc = normalizeLocale(locale);\n if (loc) {\n info('better_browser_locale_full');\n return loc;\n }\n\n loc = normalizeLang(locale);\n if (loc) {\n info('better_browser_locale_lang');\n return loc;\n }\n }\n\n return config.defaultLocale;\n});\n\nexport function isElementVisible(el : HTMLElement) : boolean {\n return Boolean(el.offsetWidth || el.offsetHeight || el.getClientRects().length);\n}\n\nexport const enablePerformance = memoize(() : boolean => {\n /* eslint-disable compat/compat */\n return Boolean(\n window.performance &&\n performance.now &&\n performance.timing &&\n performance.timing.connectEnd &&\n performance.timing.navigationStart &&\n (Math.abs(performance.now() - Date.now()) > 1000) &&\n (performance.now() - (performance.timing.connectEnd - performance.timing.navigationStart)) > 0\n );\n /* eslint-enable compat/compat */\n});\n\nexport function getPageRenderTime() : ZalgoPromise {\n return documentReady.then(() => {\n\n if (!enablePerformance()) {\n return;\n }\n\n const timing = window.performance.timing; // eslint-disable-line compat/compat\n\n if (timing.connectEnd && timing.domInteractive) {\n return timing.domInteractive - timing.connectEnd;\n }\n });\n}\n\nexport function getResourceLoadTime(url : string) : ?number {\n\n if (!enablePerformance()) {\n return;\n }\n\n if (!window.performance || typeof window.performance.getEntries !== 'function') { // eslint-disable-line compat/compat\n return;\n }\n\n const entries = window.performance.getEntries(); // eslint-disable-line compat/compat\n\n for (let i = 0; i < entries.length; i++) {\n const entry = entries[i];\n\n if (entry && entry.name === url && entry.duration && entry.duration >= 0 && entry.duration <= 60000) {\n return Math.floor(entry.duration);\n }\n }\n}\n\nexport function htmlEncode(html : string = '') : string {\n return html.toString()\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(/\\//g, '/');\n}\n","/* @flow */\n\nimport { getParent, isSameDomain } from 'cross-domain-utils/src';\n\nimport { config } from '../config';\n\nimport { supportsPopups } from './device';\n\nexport function allowIframe() : boolean {\n\n if (!supportsPopups()) {\n return true;\n }\n\n const parentWindow = getParent(window);\n if (parentWindow && isSameDomain(parentWindow)) {\n return true;\n }\n\n const parentComponentWindow = window.xchild && window.xchild.getParentComponentWindow();\n if (parentComponentWindow && isSameDomain(parentComponentWindow)) {\n return true;\n }\n\n if (__TEST__) {\n return true;\n }\n\n return false;\n}\n\n\nexport function isPayPalDomain() : boolean {\n return Boolean(`${ window.location.protocol }//${ window.location.host }`.match(config.paypal_domain_regex)) || window.mockDomain === 'mock://www.paypal.com';\n}\n","/* @flow */\n\nexport function PopupOpenError(message : string) {\n this.message = message;\n}\n\nPopupOpenError.prototype = Object.create(Error.prototype);\n\nexport function IntegrationError(message : string) {\n this.message = message;\n}\n\nIntegrationError.prototype = Object.create(Error.prototype);\n\nexport function RenderError(message : string) {\n this.message = message;\n}\n\nRenderError.prototype = Object.create(Error.prototype);\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nexport type Braintree = {|\n client : {\n create : Function\n },\n paypalCheckout : {\n create : Function\n }\n|};\n\nexport type BraintreePayPalClient = {|\n createPayment : Function,\n tokenizePayment : Function\n|};\n\nexport function awaitBraintreeClient(braintree : Braintree, auth : string | ZalgoPromise) : ZalgoPromise {\n return ZalgoPromise.resolve(auth).then(authorization => {\n return braintree.client.create({ authorization });\n }).then(client => {\n return braintree.paypalCheckout.create({ client });\n });\n}\n\nconst SUPPORTED_REST_FIELDS = {\n intent: 1,\n transactions: [\n {\n amount: {\n total: 1,\n currency: 1\n }\n }\n ],\n payer: {\n external_selected_funding_instrument_type: 1,\n shipping_address: {\n line1: 1,\n line2: 1,\n city: 1,\n state: 1,\n postal_code: 1,\n country_code: 1,\n phone: 1,\n recipient_name: 1\n }\n },\n application_context: {\n brand_name: 1,\n shipping_preference: 1,\n landing_page: 1\n }\n};\n\nfunction validate(obj, supported, name) {\n\n const supportedKeys = Object.keys(supported);\n\n for (const key of Object.keys(obj)) {\n\n if (supportedKeys.indexOf(key) === -1) {\n throw new Error(`Unsupported REST key for Braintree: ${ name }.${ key }`);\n }\n\n if (typeof obj[key] === 'object') {\n validate(obj[key], supported[key], `${ name }.${ key }`);\n }\n }\n}\n\nexport function mapPaymentToBraintree(payment : Object) : Object {\n validate(payment, SUPPORTED_REST_FIELDS, 'payment');\n\n const btPayment = {};\n\n btPayment.intent = payment.intent || 'sale';\n btPayment.flow = 'checkout';\n btPayment.amount = payment.transactions[0].amount.total;\n btPayment.currency = payment.transactions[0].amount.currency;\n\n if (payment.payer) {\n if (payment.payer.external_selected_funding_instrument_type === 'CREDIT') {\n btPayment.offerCredit = true;\n }\n\n if (payment.payer.shipping_address) {\n btPayment.shippingAddressOverride = {\n line1: payment.payer.shipping_address.line1,\n line2: payment.payer.shipping_address.line2,\n city: payment.payer.shipping_address.city,\n state: payment.payer.shipping_address.state,\n postalCode: payment.payer.shipping_address.postal_code,\n countryCode: payment.payer.shipping_address.country_code,\n phone: payment.payer.shipping_address.phone,\n recipientName: payment.payer.shipping_address.recipient_name\n };\n }\n }\n\n if (payment.application_context) {\n btPayment.displayName = payment.application_context.brand_name;\n btPayment.landingPageType = payment.application_context.landing_page;\n\n if (payment.application_context) {\n if (payment.application_context.shipping_preference === 'NO_SHIPPING') {\n btPayment.enableShippingAddress = false;\n } else if (payment.application_context.shipping_preference === 'GET_FROM_FILE') {\n btPayment.enableShippingAddress = true;\n btPayment.shippingAddressEditable = true;\n } else if (payment.application_context.shipping_preference === 'SET_PROVIDED_ADDRESS') {\n btPayment.enableShippingAddress = true;\n btPayment.shippingAddressEditable = false;\n }\n }\n }\n\n return btPayment;\n}\n","/* @flow */\n\nexport * from './checkout';\nexport * from './braintree';\n// export * from './popupBridge';\n","/* @flow */\n\nexport * from './script';\nexport * from './react';\nexport * from './vue';\nexport * from './angular';\nexport * from './ember';\nexport * from './glimmer';\nexport * from './angular2';\n","/* @flow */\n\nimport { config } from '../config';\nimport { LOG_LEVEL } from '../constants';\n\nimport { getSessionID, getSessionState } from './session';\n\nconst BEACON_URL = config.loggerUrl;\nconst APP_NAME = 'checkoutjs';\n\nexport function beacon(event : string, payload : Object = {}) {\n try {\n\n payload.event = `ppxo_${ event }`;\n payload.version = __PAYPAL_CHECKOUT__.__MINOR_VERSION__;\n payload.host = window.location.host;\n payload.uid = getSessionID();\n payload.appName = APP_NAME;\n\n let query = [];\n\n for (const key in payload) {\n if (payload.hasOwnProperty(key)) {\n query.push(`${ encodeURIComponent(key) }=${ encodeURIComponent(payload[key]) }`);\n }\n }\n\n query = query.join('&');\n\n if (!__TEST__) {\n const beaconImage = new window.Image();\n beaconImage.src = `${ BEACON_URL }?${ query }`;\n }\n\n setTimeout(() => {\n if (config.logLevel === LOG_LEVEL.DEBUG) {\n if (window.console && window.console.log) {\n window.console.log('*', event, payload);\n }\n }\n }, 1);\n\n } catch (err) {\n // pass\n }\n}\n\nfunction isCheckpointUnique(name : string) : boolean {\n return getSessionState(state => {\n state.loggedBeacons = state.loggedBeacons || [];\n\n if (state.loggedBeacons.indexOf(name) === -1) {\n state.loggedBeacons.push(name);\n return true;\n }\n\n return false;\n });\n}\n\nexport function checkpoint(name : string, payload : Object = {}, options : Object = {}) : void {\n try {\n let checkpointName = name;\n\n if (options.version) {\n const version = __PAYPAL_CHECKOUT__.__MINOR_VERSION__.replace(/[^0-9]+/g, '_');\n checkpointName = `${ version }_${ checkpointName }`;\n }\n\n if (!isCheckpointUnique(checkpointName)) {\n return;\n }\n\n return beacon(checkpointName, payload);\n\n } catch (err) {\n\n // pass\n }\n}\n\n\nconst FPTI_URL = 'https://t.paypal.com/ts';\n\nfunction buildPayload() : Object {\n return {\n v: `checkout.js.${ __PAYPAL_CHECKOUT__.__MINOR_VERSION__ }`,\n t: Date.now(),\n g: new Date().getTimezoneOffset(),\n flnm: 'ec:hermes:',\n shir: 'main_ec_hermes_',\n pgrp: 'main:ec:hermes::incontext-merchant',\n page: 'main:ec:hermes::incontext-merchant',\n vers: 'member:hermes:',\n qual: 'incontext',\n tmpl: 'merchant:incontext'\n };\n}\n\nexport function fpti(payload : Object = {}) {\n\n let query = [];\n\n payload = { ...buildPayload(), ...payload };\n\n for (const key in payload) {\n if (payload.hasOwnProperty(key)) {\n query.push(`${ encodeURIComponent(key) }=${ encodeURIComponent(payload[key]) }`);\n }\n }\n\n query = query.join('&');\n\n try {\n const beaconImage = new window.Image();\n beaconImage.src = `${ FPTI_URL }?${ query }`;\n } catch (err) {\n // pass\n }\n}\n","/* @flow */\n/** @jsx jsxDom */\n\nconst checkoutComponentStyle = `\n\n body {\n width: 100%;\n height: 100%;\n overflow: hidden;\n position: fixed;\n top: 0;\n left: 0;\n margin: 0;\n }\n\n .spinner {\n height: 100%;\n width: 100%;\n position: absolute;\n z-index: 10\n }\n\n .spinner .spinWrap {\n width: 200px;\n height: 100px;\n position: absolute;\n top: 50%;\n left: 50%;\n margin-left: -100px;\n margin-top: -50px\n }\n\n .spinner .loader,\n .spinner .spinnerImage {\n height: 100px;\n width: 100px;\n position: absolute;\n top: 0;\n left: 50%;\n opacity: 1;\n filter: alpha(opacity=100)\n }\n\n .spinner .spinnerImage {\n margin: 28px 0 0 -25px;\n background: url(https://www.paypalobjects.com/images/checkout/hermes/icon_ot_spin_lock_skinny.png) no-repeat\n }\n\n .spinner .loader {\n margin: 0 0 0 -55px;\n background-color: transparent;\n -webkit-animation: rotation .7s infinite linear;\n -moz-animation: rotation .7s infinite linear;\n -o-animation: rotation .7s infinite linear;\n animation: rotation .7s infinite linear;\n border-left: 5px solid #cbcbca;\n border-right: 5px solid #cbcbca;\n border-bottom: 5px solid #cbcbca;\n border-top: 5px solid #2380be;\n border-radius: 100%\n }\n\n @-webkit-keyframes rotation {\n from {\n -webkit-transform: rotate(0deg)\n }\n to {\n -webkit-transform: rotate(359deg)\n }\n }\n @-moz-keyframes rotation {\n from {\n -moz-transform: rotate(0deg)\n }\n to {\n -moz-transform: rotate(359deg)\n }\n }\n @-o-keyframes rotation {\n from {\n -o-transform: rotate(0deg)\n }\n to {\n -o-transform: rotate(359deg)\n }\n }\n @keyframes rotation {\n from {\n transform: rotate(0deg)\n }\n to {\n transform: rotate(359deg)\n }\n }\n`;\n\nexport function componentTemplate({ jsxDom } : { jsxDom : Function }) : HTMLElement {\n\n return (\n \n \n PayPal\n \n \n \n

\n \n\n
\n

\n

\n

\n
\n \n \n );\n}\n","/* @flow */\n\nimport { CHECKOUT_OVERLAY_COLOR } from '../../../constants';\n\nexport function getContainerStyle({ id, tag, CONTEXT, CLASS, ANIMATION } : { id : string, tag : string, CONTEXT : Object, CLASS : Object, ANIMATION : Object }) : string {\n return `\n #${ id } {\n position: absolute;\n z-index: 2147483647;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n\n -webkit-transform: translate3d(0, 0, 0);\n -moz-transform: translate3d(0, 0, 0);\n -ms-transform: translate3d(0, 0, 0);\n -o-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.BLACK } {\n background-color: black;\n background-color: rgba(0, 0, 0, 0.75);\n\n background: -webkit-radial-gradient(50% 50%, ellipse closest-corner, rgba(0,0,0,1) 1%, rgba(0,0,0,0.75) 100%);\n background: -moz-radial-gradient(50% 50%, ellipse closest-corner, rgba(0,0,0,1) 1%, rgba(0,0,0,0.75) 100%);\n background: -ms-radial-gradient(50% 50%, ellipse closest-corner, rgba(0,0,0,1) 1%, rgba(0,0,0,0.75) 100%);\n background: radial-gradient(50% 50%, ellipse closest-corner, rgba(0,0,0,1) 1%, rgba(0,0,0,0.75) 100%);\n\n color: #fff;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.WHITE } {\n background-color: white;\n background-color: rgba(255, 255, 255, 0.4);\n\n background: -webkit-radial-gradient(50% 50%, ellipse closest-corner, rgba(255, 255, 255,1) 1%, rgba(255, 255, 255,0.4) 100%);\n background: -moz-radial-gradient(50% 50%, ellipse closest-corner, rgba(255, 255, 255,1) 1%, rgba(255, 255, 255,0.4) 100%);\n background: -ms-radial-gradient(50% 50%, ellipse closest-corner, rgba(255, 255, 255,1) 1%, rgba(255, 255, 255,0.4) 100%);\n background: radial-gradient(50% 50%, ellipse closest-corner, rgba(255, 255, 255,1) 1%, rgba(255, 255, 255,0.4) 100%);\n\n color: #333;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.BLACK } a {\n color: #fff;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.WHITE } a {\n color: #333;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.BLACK } .paypal-checkout-close:before,\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.BLACK } .paypal-checkout-close:after {\n background-color: #fff;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.WHITE } .paypal-checkout-close:before,\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.WHITE } .paypal-checkout-close:after {\n background-color: #111;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.POPUP } {\n cursor: pointer;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.POPUP } {\n cursor: pointer;\n }\n\n #${ id } a {\n text-decoration: none;\n }\n\n #${ id } .paypal-checkout-modal {\n font-family: \"HelveticaNeue\", \"HelveticaNeue-Light\", \"Helvetica Neue Light\", helvetica, arial, sans-serif;\n font-size: 14px;\n text-align: center;\n\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n -ms-box-sizing: border-box;\n box-sizing: border-box;\n max-width: 350px;\n top: 50%;\n left: 50%;\n position: absolute;\n transform: translateX(-50%) translateY(-50%);\n -webkit-transform: translateX(-50%) translateY(-50%);\n -moz-transform: translateX(-50%) translateY(-50%);\n -o-transform: translateX(-50%) translateY(-50%);\n -ms-transform: translateX(-50%) translateY(-50%);\n cursor: pointer;\n text-align: center;\n }\n\n #${ id }.${ tag }-loading .paypal-checkout-message, #${ id }.${ tag }-loading .paypal-checkout-continue {\n display: none;\n }\n\n .paypal-checkout-loader {\n display: none;\n }\n\n #${ id }.${ tag }-loading .paypal-checkout-loader {\n display: block;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-logo {\n cursor: pointer;\n margin-bottom: 30px;\n display: inline-block;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-logo img {\n height: 36px;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-logo img.paypal-checkout-logo-pp {\n margin-right: 10px;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-message {\n font-size: 15px;\n line-height: 1.5;\n padding: 10px 0;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-message, #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-continue {\n display: none;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-continue {\n font-size: 15px;\n line-height: 1.35;\n padding: 10px 0;\n font-weight: bold;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-continue a {\n border-bottom: 1px solid currentColor;\n }\n\n #${ id } .paypal-checkout-close {\n position: absolute;\n right: 16px;\n top: 16px;\n width: 16px;\n height: 16px;\n opacity: 0.6;\n }\n\n #${ id }.${ tag }-loading .paypal-checkout-close {\n display: none;\n }\n\n #${ id } .paypal-checkout-close:hover {\n opacity: 1;\n }\n\n #${ id } .paypal-checkout-close:before, .paypal-checkout-close:after {\n position: absolute;\n left: 8px;\n content: ' ';\n height: 16px;\n width: 2px;\n }\n\n #${ id } .paypal-checkout-close:before {\n transform: rotate(45deg);\n -webkit-transform: rotate(45deg);\n -moz-transform: rotate(45deg);\n -o-transform: rotate(45deg);\n -ms-transform: rotate(45deg);\n }\n\n #${ id } .paypal-checkout-close:after {\n transform: rotate(-45deg);\n -webkit-transform: rotate(-45deg);\n -moz-transform: rotate(-45deg);\n -o-transform: rotate(-45deg);\n -ms-transform: rotate(-45deg);\n }\n\n #${ id } .paypal-checkout-iframe-container {\n display: none;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container,\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container > .${ CLASS.OUTLET },\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container > .${ CLASS.OUTLET } > iframe {\n max-height: calc(95vh - 60px);\n max-width: 95vw;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container {\n\n display: block;\n\n position: absolute;\n\n top: 50%;\n left: 50%;\n\n min-width: 450px;\n\n transform: translate(-50%, -50%);\n -webkit-transform: translate(-50%, -50%);\n -moz-transform: translate(-50%, -50%);\n -o-transform: translate(-50%, -50%);\n -ms-transform: translate(-50%, -50%);\n\n transform: translate3d(-50%, -50%, 0);\n -webkit-transform: translate3d(-50%, -50%, 0);\n -moz-transform: translate3d(-50%, -50%, 0);\n -o-transform: translate3d(-50%, -50%, 0);\n -ms-transform: translate3d(-50%, -50%, 0);\n\n border-radius: 10px;\n overflow: hidden;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } {\n\n position: relative;\n\n -webkit-transition: all 0.3s ease;\n -moz-transition: all 0.3s ease;\n -ms-transition: all 0.3s ease;\n -o-transition: all 0.3 ease;\n transition: all 0.3s ease;\n\n -webkit-animation-duration: 0.3s;\n animation-duration: 0.3s;\n -webkit-animation-fill-mode: both;\n animation-fill-mode: both;\n\n min-width: 450px;\n max-width: 450px;\n width: 450px;\n height: 535px;\n\n background-color: white;\n\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe {\n position: absolute;\n top: 0;\n left: 0;\n transition: opacity .4s ease-in-out;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe.${ CLASS.COMPONENT_FRAME } {\n z-index: 100;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe.${ CLASS.PRERENDER_FRAME } {\n z-index: 200;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe.${ CLASS.VISIBLE } {\n opacity: 1;\n z-index: 200;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe.${ CLASS.INVISIBLE } {\n opacity: 0;\n z-index: 100;\n }\n\n @media screen and (-ms-high-contrast: active) {\n #${ id } .paypal-checkout-close {\n opacity: 1;\n }\n\n #${ id } .paypal-checkout-close:before , .paypal-checkout-close:after {\n background-color: currentColor;\n }\n }\n\n @media screen and (max-width: 470px) {\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container,\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } {\n min-width: 100%;\n min-width: calc(100% - 20px);\n min-width: -webkit-calc(100% - 20px);\n min-width: -moz-calc(100% - 20px);\n min-width: -o-calc(100% - 20px);\n min-width: -ms-calc(100% - 20px);\n\n max-width: 100%;\n max-width: calc(100% - 20px);\n max-width: -webkit-calc(100% - 20px);\n max-width: -moz-calc(100% - 20px);\n max-width: -o-calc(100% - 20px);\n max-width: -ms-calc(100% - 20px);\n }\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } iframe {\n width: 1px;\n min-width: 100%;\n height: 100%;\n }\n\n @-webkit-keyframes ${ ANIMATION.SHOW_COMPONENT } {\n from {\n opacity: 0;\n transform: scale3d(.3, .3, .3);\n -webkit-transform: scale3d(.3, .3, .3);\n }\n\n to {\n opacity: 1;\n transform: scale3d(1, 1, 1);\n -webkit-transform: scale3d(1, 1, 1);\n }\n }\n\n @keyframes ${ ANIMATION.SHOW_COMPONENT } {\n from {\n opacity: 0;\n transform: scale3d(.3, .3, .3);\n -webkit-transform: scale3d(.3, .3, .3);\n }\n\n to {\n opacity: 1;\n transform: scale3d(1, 1, 1);\n -webkit-transform: scale3d(1, 1, 1);\n }\n }\n\n @-webkit-keyframes ${ ANIMATION.HIDE_COMPONENT } {\n from {\n transform: scale3d(1, 1, 1);\n -webkit-transform: scale3d(1, 1, 1);\n }\n\n to {\n opacity: 0;\n transform: scale3d(.3, .3, .3);\n -webkit-transform: scale3d(.3, .3, .3);\n }\n }\n\n @keyframes ${ ANIMATION.HIDE_COMPONENT } {\n from {\n transform: scale3d(1, 1, 1);\n -webkit-transform: scale3d(1, 1, 1);\n }\n\n to {\n opacity: 0;\n transform: scale3d(.3, .3, .3);\n -webkit-transform: scale3d(.3, .3, .3);\n }\n }\n\n .paypal-spinner {\n height: 30px;\n width: 30px;\n display: inline-block;\n box-sizing: content-box;\n opacity: 1;\n filter: alpha(opacity=100);\n -webkit-animation: rotation .7s infinite linear;\n -moz-animation: rotation .7s infinite linear;\n -o-animation: rotation .7s infinite linear;\n animation: rotation .7s infinite linear;\n border-left: 8px solid rgba(0, 0, 0, .2);\n border-right: 8px solid rgba(0, 0, 0, .2);\n border-bottom: 8px solid rgba(0, 0, 0, .2);\n border-top: 8px solid #fff;\n border-radius: 100%\n }\n\n @-webkit-keyframes rotation {\n from {\n -webkit-transform: rotate(0deg)\n }\n to {\n -webkit-transform: rotate(359deg)\n }\n }\n @-moz-keyframes rotation {\n from {\n -moz-transform: rotate(0deg)\n }\n to {\n -moz-transform: rotate(359deg)\n }\n }\n @-o-keyframes rotation {\n from {\n -o-transform: rotate(0deg)\n }\n to {\n -o-transform: rotate(359deg)\n }\n }\n @keyframes rotation {\n from {\n transform: rotate(0deg)\n }\n to {\n transform: rotate(359deg)\n }\n }\n `;\n}\n","/* @flow */\n\nexport function getSandboxStyle({ id, ANIMATION } : { id : string, ANIMATION : Object }) : string {\n return `\n #${ id }.paypal-checkout-sandbox {\n display: block;\n position: fixed;\n top: 0;\n left: 0;\n\n width: 100%;\n height: 100%;\n width: 100vw;\n height: 100vh;\n max-width: 100%;\n max-height: 100%;\n min-width: 100%;\n min-height: 100%;\n\n z-index: 2147483647;\n\n -webkit-animation-duration: 1s;\n animation-duration: 1s;\n\n animation-fill-mode:forwards;\n animation-iteration-count: 1;\n\n -webkit-animation-fill-mode:forwards;\n -webkit-animation-iteration-count: 1;\n }\n\n #${ id }.paypal-checkout-sandbox .paypal-checkout-sandbox-iframe {\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n }\n\n @-webkit-keyframes ${ ANIMATION.SHOW_CONTAINER } {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n }\n\n @keyframes ${ ANIMATION.SHOW_CONTAINER } {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n }\n\n @-webkit-keyframes ${ ANIMATION.HIDE_CONTAINER } {\n from {\n opacity: 1;\n }\n\n 50% {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n }\n\n @keyframes ${ ANIMATION.HIDE_CONTAINER } {\n from {\n opacity: 1;\n }\n\n 50% {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n }\n `;\n}\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { base64encode } from 'belter/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { fundingLogos } from '../../resources';\nimport { BUTTON_LOGO_COLOR, CHECKOUT_OVERLAY_COLOR } from '../../constants';\nimport { isIos } from '../../lib';\n\nimport { containerContent } from './containerContent';\nimport { getContainerStyle } from './containerStyle';\nimport { getSandboxStyle } from './sandboxStyle';\n\nconst LOGO_COLOR = {\n [ CHECKOUT_OVERLAY_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ CHECKOUT_OVERLAY_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n};\n\nexport {\n getContainerStyle,\n getSandboxStyle\n};\n\n// eslint-disable-next-line flowtype/require-exact-type\nexport type ContainerTemplateOptions = {\n id : string,\n props : Object,\n CLASS : Object,\n ANIMATION : Object,\n CONTEXT : Object,\n EVENT : Object,\n dimensions : {\n width : number,\n height : number\n },\n actions : Object,\n tag : string,\n context : string,\n outlet : HTMLElement,\n on : Function,\n jsxDom : Function\n};\n\nexport function containerTemplate({ id, props, CLASS, ANIMATION, CONTEXT, EVENT, on, tag, context, actions, outlet, jsxDom } : ContainerTemplateOptions) : HTMLElement {\n\n const [ lang, country ] = props.locale.split('_');\n\n const content = containerContent[country][lang];\n\n function close(event) {\n event.preventDefault();\n event.stopPropagation();\n actions.close();\n }\n\n function focus(event) {\n event.preventDefault();\n event.stopPropagation();\n\n if (isIos()) {\n // eslint-disable-next-line no-alert\n window.alert('Please switch tabs to reactivate the PayPal window');\n } else {\n ZalgoPromise.try(actions.focus).catch(actions.close);\n }\n }\n\n const style = props.style || {};\n const overlayColor = style.overlayColor || CHECKOUT_OVERLAY_COLOR.BLACK;\n const logoColor = LOGO_COLOR[overlayColor];\n\n const ppLogo = (typeof fundingLogos.pp === 'function')\n ? fundingLogos.pp({ logoColor })\n : fundingLogos.pp[logoColor];\n\n const paypalLogo = (typeof fundingLogos.paypal === 'function')\n ? fundingLogos.paypal({ logoColor })\n : fundingLogos.paypal[logoColor];\n\n const el = (\n
\n \n
\n
\n \n \n
\n
\n {content.windowMessage}\n
\n
\n
\n
\n
\n
\n\n
\n {outlet}\n
\n\n \n
\n );\n\n const container = (\n \n \n { el }\n \n \n );\n\n on(EVENT.CLOSE, () => {\n el.className += ` ${ tag }-loading`;\n });\n\n return (\n
\n \n\n \n
\n );\n}\n","/* @flow */\n\nexport * from './componentTemplate';\nexport * from './containerTemplate';\n","/* @flow */\n\nimport { config } from '../config';\nimport { FUNDING, PAYMENT_TYPE } from '../constants';\n\nexport function determineParameterFromToken(token : string) : string {\n return (token && token.indexOf('BA-') === 0) ? 'ba_token' : 'token';\n}\n\nexport function getPaymentType(payment : string) : string {\n if (payment.indexOf('BA-') === 0) {\n return PAYMENT_TYPE.BA_TOKEN;\n } else if (payment.indexOf('PAY-') === 0 || payment.indexOf('PAYID-') === 0) {\n return PAYMENT_TYPE.PAY_ID;\n } else if (payment.indexOf('EC-') === 0) {\n return PAYMENT_TYPE.EC_TOKEN;\n }\n\n return PAYMENT_TYPE.EC_TOKEN;\n}\n\nexport function determineUrl(env : string, fundingSource : ?string, payment : string) : string {\n\n const paymentType = getPaymentType(payment);\n\n if (paymentType === PAYMENT_TYPE.BA_TOKEN) {\n return config.billingUrls[env];\n }\n\n if (fundingSource === FUNDING.CARD || fundingSource === FUNDING.ELV) {\n return config.guestUrls[env];\n }\n\n if (fundingSource === FUNDING.IDEAL || fundingSource === FUNDING.BANCONTACT || fundingSource === FUNDING.GIROPAY ||\n fundingSource === FUNDING.SOFORT || fundingSource === FUNDING.EPS || fundingSource === FUNDING.MYBANK ||\n fundingSource === FUNDING.P24 || fundingSource === FUNDING.PAYU || fundingSource === FUNDING.VERKKOPANKKI ||\n fundingSource === FUNDING.BLIK || fundingSource === FUNDING.TRUSTLY || fundingSource === FUNDING.MAXIMA ||\n fundingSource === FUNDING.BOLETO || fundingSource === FUNDING.OXXO) {\n return config.altpayUrls[env];\n }\n\n return config.checkoutUrls[env];\n}\n","/* @flow */\n\nexport function extendNamespace(xports : Object, namespaces : $ReadOnlyArray = [], childnamespaces : $ReadOnlyArray = []) : Object {\n\n for (const name of namespaces) {\n const namespace = window[name];\n\n if (!namespace) {\n continue;\n }\n\n for (const childname of childnamespaces) {\n let childnamespace = xports[childname];\n\n if (namespace[childname]) {\n childnamespace = { ...namespace[childname], ...childnamespace };\n }\n\n xports = { ...namespace, ...xports, [ childname ]: childnamespace };\n }\n }\n\n for (const name of namespaces) {\n window[name] = xports;\n }\n\n return xports;\n}\n","/* @flow */\n/* eslint max-lines: off */\n\nexport const containerContent = {\n 'AT': {\n 'de': {\n 'windowMessage': 'Sie sehen das sichere Browserfenster von PayPal nicht? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ZW': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ZM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ZA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'YT': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'YE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'WS': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'WF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'VU': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'VG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'VE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'VC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'VA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'UY': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'UG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TV': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'TT': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'TO': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'TN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'TM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'TD': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'TC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'SZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SV': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'ST': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SR': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'SO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'SM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SL': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SH': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'SB': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'SA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'RW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'RS': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'RE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'QA': {\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PY': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'PW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'PN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'PM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'PF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'PA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'OM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'NU': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'NR': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'NP': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'NI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'NG': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'NE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'NC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MV': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'MU': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MT': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MS': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'MR': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MQ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MN': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'ML': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'MK': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MH': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'MG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ME': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MD': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MC': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'MA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'LS': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'LK': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'LI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'LC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'LA': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'KZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'KY': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'KW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'KN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'KM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'KI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'KH': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'KG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'KE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'JO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'JM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'IS': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'HR': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'HN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'GY': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'GW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GT': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'GP': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'GM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GL': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'da': {\n 'windowMessage': 'Kan du ikke se PayPals sikre browser? Vi hj\\u00E6lper dig med at genstarte vinduet, s\\u00E5 du kan betale.',\n 'continue': 'Forts\\u00E6t'\n }\n },\n 'GI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GD': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'GA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'FO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'da': {\n 'windowMessage': 'Kan du ikke se PayPals sikre browser? Vi hj\\u00E6lper dig med at genstarte vinduet, s\\u00E5 du kan betale.',\n 'continue': 'Forts\\u00E6t'\n }\n },\n 'FM': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'FK': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'FJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'ET': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ER': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'EG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'EC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'DZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'DO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'DM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'DJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'CY': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CV': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CR': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'CO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'CM': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'CL': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'CK': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CI': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'CG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CD': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'BZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'BY': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BT': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'BS': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'BO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'BN': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'BM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'BJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'BI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'BH': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'BG': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'BB': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'BA': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'AO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'AM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AL': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'AG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'AE': {\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AD': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n }\n },\n 'GB': {\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 PayPal\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\'ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AR': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'US': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Click to Continue'\n }\n },\n 'VN': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment. ',\n 'continue': 'Continue'\n }\n },\n 'UA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TW': {\n 'zh': {\n 'windowMessage': '\\u770B\\u4E0D\\u5230\\u5B89\\u5168\\u9023\\u7DDA\\u7684 PayPal \\u700F\\u89BD\\u5668\\uFF1F\\u6211\\u5011\\u5C07\\u6703\\u91CD\\u65B0\\u555F\\u52D5\\u8996\\u7A97\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002\\u00A0 ',\n 'continue': '\\u7E7C\\u7E8C'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TR': {\n 'tr': {\n 'windowMessage': 'G\\u00FCvenli PayPal taray\\u0131c\\u0131s\\u0131n\\u0131 g\\u00F6rm\\u00FCyor musunuz? Al\\u0131\\u015Fveri\\u015Finizi tamamlamak i\\u00E7in pencereyi yeniden ba\\u015Flatman\\u0131za yard\\u0131mc\\u0131 olaca\\u011F\\u0131z.\\u00A0 ',\n 'continue': 'Devam'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TH': {\n 'th': {\n 'windowMessage': '\\u0E16\\u0E49\\u0E32\\u0E04\\u0E38\\u0E13\\u0E44\\u0E21\\u0E48\\u0E40\\u0E2B\\u0E47\\u0E19\\u0E40\\u0E1A\\u0E23\\u0E32\\u0E27\\u0E4C\\u0E40\\u0E0B\\u0E2D\\u0E23\\u0E4C\\u0E17\\u0E35\\u0E48\\u0E21\\u0E35\\u0E23\\u0E30\\u0E1A\\u0E1A\\u0E04\\u0E27\\u0E32\\u0E21\\u0E1B\\u0E25\\u0E2D\\u0E14\\u0E20\\u0E31\\u0E22\\u0E02\\u0E2D\\u0E07 PayPal \\u0E40\\u0E23\\u0E32\\u0E08\\u0E30\\u0E0A\\u0E48\\u0E27\\u0E22\\u0E04\\u0E38\\u0E13\\u0E40\\u0E1B\\u0E34\\u0E14\\u0E2B\\u0E19\\u0E49\\u0E32\\u0E15\\u0E48\\u0E32\\u0E07\\u0E2D\\u0E35\\u0E01\\u0E04\\u0E23\\u0E31\\u0E49\\u0E07\\u0E40\\u0E1E\\u0E37\\u0E48\\u0E2D\\u0E0A\\u0E33\\u0E23\\u0E30\\u0E40\\u0E07\\u0E34\\u0E19\\u0E43\\u0E2B\\u0E49\\u0E40\\u0E23\\u0E35\\u0E22\\u0E1A\\u0E23\\u0E49\\u0E2D\\u0E22 ',\n 'continue': '\\u0E14\\u0E33\\u0E40\\u0E19\\u0E34\\u0E19\\u0E01\\u0E32\\u0E23\\u0E15\\u0E48\\u0E2D'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SK': {\n 'sk': {\n 'windowMessage': 'Nezobrazuje sa v\\u00e1m zabezpe\\u010den\\u00fd prehliada\\u010d PayPal? Pom\\u00f4\\u017eeme v\\u00e1m znova otvori\\u0165 okno, aby ste mohli n\\u00e1kup dokon\\u010di\\u0165.\\u00A0 ',\n 'continue': 'Pokra\\u010dova\\u0165'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SG': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SE': {\n 'sv': {\n 'windowMessage': 'Ser du inte den s\\u00E4kra PayPal-webbl\\u00E4saren? Vi hj\\u00E4lper dig att starta om f\\u00F6nstret f\\u00F6r att slutf\\u00F6ra ditt k\\u00F6p. ',\n 'continue': 'Forts\\u00E4tt'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'RU': {\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'RO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PT': {\n 'pt': {\n 'windowMessage': 'N\\u00E3o v\\u00EA a indica\\u00E7\\u00E3o de sess\\u00E3o segura PayPal no browser? Vamos ajudar a reabrir a janela para que possa concluir a sua compra.',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PL': {\n 'pl': {\n 'windowMessage': 'Nie widzisz bezpiecznej przegl\\u0105darki PayPal? Pomo\\u017Cemy Ci ponownie uruchomi\\u0107 to okno w celu dokonania zakupu.\\u00A0 ',\n 'continue': 'Kontynuuj'\n },\n 'en': {\n 'windowMessage': 'You don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PH': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre paiement.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Le ayudaremos a abrir de nuevo la ventana para completar su pago.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NO': {\n 'no': {\n 'windowMessage': 'Ser du ikke den sikre PayPal-nettleseren? Vi hjelper deg med \\u00E5 starte vinduet p\\u00E5 nytt s\\u00E5 du kan fullf\\u00F8re kj\\u00F8pet.\\u00A0 ',\n 'continue': 'Fortsett'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NL': {\n 'nl': {\n 'windowMessage': 'Ziet u geen beveiligde PayPal-browser? We helpen u het venster opnieuw te openen om uw aankoop te voltooien.\\u00A0 ',\n 'continue': 'Doorgaan'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MY': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MX': {\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'LV': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'LU': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'de': {\n 'windowMessage': 'Das PayPal-Fenster wird nicht angezeigt? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n }\n },\n 'LT': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'KR': {\n 'ko': {\n 'windowMessage': '\\uBCF4\\uC548 PayPal \\uBE0C\\uB77C\\uC6B0\\uC800\\uAC00 \\uBCF4\\uC774\\uC9C0 \\uC54A\\uC73C\\uC2E0\\uAC00\\uC694? \\uCC3D\\uC744 \\uB2E4\\uC2DC \\uC2E4\\uD589\\uD558\\uC5EC \\uACB0\\uC81C\\uB97C \\uC644\\uB8CC\\uD560 \\uC218 \\uC788\\uB3C4\\uB85D \\uB3C4\\uC640\\uB4DC\\uB9AC\\uACA0\\uC2B5\\uB2C8\\uB2E4.\\u00A0 ',\n 'continue': '\\uACC4\\uC18D'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'JP': {\n 'ja': {\n 'windowMessage': '\\u30BB\\u30AD\\u30E5\\u30A2\\u306A\\u30D6\\u30E9\\u30A6\\u30B6\\u304C\\u8868\\u793A\\u3055\\u308C\\u306A\\u3044\\u5834\\u5408\\u306F\\u3001\\u30A6\\u30A3\\u30F3\\u30C9\\u30A6\\u3092\\u518D\\u8D77\\u52D5\\u3057\\u3066\\u3001\\u652F\\u6255\\u3044\\u3092\\u5B8C\\u4E86\\u3067\\u304D\\u308B\\u3088\\u3046\\u304A\\u624B\\u4F1D\\u3044\\u3044\\u305F\\u3057\\u307E\\u3059\\u3002',\n 'continue': '\\u7D9A\\u884C'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment. ',\n 'continue': 'Continue'\n }\n },\n 'IT': {\n 'it': {\n 'windowMessage': 'Non vedi la pagina sicura di PayPal? Ti aiuteremo a riaprire la finestra per completare l\\'acquisto.\\u00A0 ',\n 'continue': 'Continua'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'IN': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'IL': {\n 'he': {\n 'windowMessage': '\\u05DC\\u05D0 \\u05E8\\u05D5\\u05D0\\u05D4 \\u05D0\\u05EA \\u05D3\\u05E4\\u05D3\\u05E4\\u05DF PayPal \\u05D4\\u05DE\\u05D0\\u05D5\\u05D1\\u05D8\\u05D7? \\u05E0\\u05E2\\u05D6\\u05D5\\u05E8 \\u05DC\\u05DA \\u05DC\\u05E4\\u05EA\\u05D5\\u05D7 \\u05DE\\u05D7\\u05D3\\u05E9 \\u05D0\\u05EA \\u05D4\\u05D7\\u05DC\\u05D5\\u05DF \\u05DB\\u05D3\\u05D9 \\u05DC\\u05D4\\u05E9\\u05DC\\u05D9\\u05DD \\u05D0\\u05EA \\u05D4\\u05E7\\u05E0\\u05D9\\u05D9\\u05D4 \\u05E9\\u05DC\\u05DA.\\u00A0 ',\n 'continue': '\\u05D4\\u05DE\\u05E9\\u05DA'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'IE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'HU': {\n 'hu': {\n 'windowMessage': 'Nem l\\u00e1tja a biztons\\u00e1gos PayPal-b\\u00f6ng\\u00e9sz\\u0151t? Seg\\u00edt\\u00fcnk \\u00fajra bet\\u00f6lteni az ablakot, hogy befejezhesse a v\\u00e1s\\u00e1rl\\u00e1st.\\u00A0 ',\n 'continue': 'Folytat\\u00e1s'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ID': {\n 'id': {\n 'windowMessage': 'Browser PayPal yang aman tidak terlihat? Kami akan membantu menampilkan ulang jendela untuk menyelesaikan pembayaran Anda.\\u00A0 ',\n 'continue': 'Lanjutkan'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'HK': {\n 'zh': {\n 'windowMessage': '\\u770B\\u4E0D\\u5230\\u5B89\\u5168\\u7684 PayPal \\u700F\\u89BD\\u5668\\u8996\\u7A97\\uFF1F\\u6211\\u5011\\u6703\\u52A9\\u4F60\\u91CD\\u65B0\\u958B\\u555F\\u8996\\u7A97\\uFF0C\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002',\n 'continue': '\\u7E7C\\u7E8C'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GROUP-LATAM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'GROUP-EMEA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'pt': {\n 'windowMessage': 'N\\u00E3o v\\u00EA a indica\\u00E7\\u00E3o de sess\\u00E3o segura PayPal no browser? Vamos ajudar a reabrir a janela para que possa concluir a sua compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'de': {\n 'windowMessage': 'Sie sehen das sichere Browserfenster von PayPal nicht? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n },\n 'da': {\n 'windowMessage': 'Kan du ikke se PayPals sikre browser? Vi hj\\u00E6lper dig med at genstarte vinduet, s\\u00E5 du kan betale.',\n 'continue': 'Forts\\u00E6t'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'GROUP-APAC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ko': {\n 'windowMessage': '\\uBCF4\\uC548 PayPal \\uBE0C\\uB77C\\uC6B0\\uC800\\uAC00 \\uBCF4\\uC774\\uC9C0 \\uC54A\\uC73C\\uC2E0\\uAC00\\uC694? \\uCC3D\\uC744 \\uB2E4\\uC2DC \\uC2E4\\uD589\\uD558\\uC5EC \\uAD6C\\uB9E4\\uB97C \\uC644\\uB8CC\\uD560 \\uC218 \\uC788\\uB3C4\\uB85D \\uB3C4\\uC640\\uB4DC\\uB9AC\\uACA0\\uC2B5\\uB2C8\\uB2E4. ',\n 'continue': '\\uACC4\\uC18D'\n },\n 'id': {\n 'windowMessage': 'Browser PayPal yang aman tidak terlihat? Kami akan membantu menampilkan ulang jendela untuk menyelesaikan pembelian Anda. ',\n 'continue': 'Lanjutkan'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'GR': {\n 'el': {\n 'windowMessage': '\\u0394\\u03b5\\u03bd \\u03b2\\u03bb\\u03ad\\u03c0\\u03b5\\u03c4\\u03b5 \\u03c4\\u03bf \\u03b1\\u03c3\\u03c6\\u03b1\\u03bb\\u03ad\\u03c2 \\u03c0\\u03c1\\u03cc\\u03b3\\u03c1\\u03b1\\u03bc\\u03bc\\u03b1 \\u03c0\\u03b5\\u03c1\\u03b9\\u03ae\\u03b3\\u03b7\\u03c3\\u03b7\\u03c2 PayPal; \\u0398\\u03b1 \\u03c3\\u03b1\\u03c2 \\u03b2\\u03bf\\u03b7\\u03b8\\u03ae\\u03c3\\u03bf\\u03c5\\u03bc\\u03b5 \\u03bd\\u03b1 \\u03b5\\u03c0\\u03b1\\u03bd\\u03b5\\u03ba\\u03ba\\u03b9\\u03bd\\u03ae\\u03c3\\u03b5\\u03c4\\u03b5 \\u03c4\\u03bf \\u03c0\\u03b1\\u03c1\\u03ac\\u03b8\\u03c5\\u03c1\\u03bf \\u03b3\\u03b9\\u03b1 \\u03bd\\u03b1 \\u03bf\\u03bb\\u03bf\\u03ba\\u03bb\\u03b7\\u03c1\\u03ce\\u03c3\\u03b5\\u03c4\\u03b5 \\u03c4\\u03b7\\u03bd \\u03b1\\u03b3\\u03bf\\u03c1\\u03ac \\u03c3\\u03b1\\u03c2.\\u00A0 ',\n 'continue': '\\u03a3\\u03c5\\u03bd\\u03ad\\u03c7\\u03b5\\u03b9\\u03b1'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'FR': {\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 PayPal\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ES': {\n 'es': {\n 'windowMessage': '\\u00BFNo ve el s\\u00EDmbolo de navegaci\\u00F3n segura de PayPal? Le ayudaremos a abrir de nuevo la ventana para completar la compra. ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'FI': {\n 'fi': {\n 'windowMessage': 'Eik\\u00f6 suojattua PayPal-selainta n\\u00e4y? Autamme avaamaan ikkunan uudelleen oston viimeistely\\u00e4 varten.\\u00A0 ',\n 'continue': 'Jatka'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'EE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'DK': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'da': {\n 'windowMessage': 'Kan du ikke se PayPals sikre browser? Vi hj\\u00E6lper dig med at genstarte vinduet, s\\u00E5 du kan betale.',\n 'continue': 'Forts\\u00E6t'\n }\n },\n 'CZ': {\n 'cs': {\n 'windowMessage': 'Nezobrazuje se v\\u00e1m bezpe\\u010dn\\u00fd prohl\\u00ed\\u017ee\\u010d PayPal? Pom\\u016f\\u017eeme v\\u00e1m okno znovu otev\\u0159\\u00edt, abyste mohli n\\u00e1kup dokon\\u010dit.',\n 'continue': 'Pokra\\u010dovat'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'DE': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'de': {\n 'windowMessage': 'Sie sehen das sichere Browserfenster von PayPal nicht? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n }\n },\n 'CH': {\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 PayPal\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'de': {\n 'windowMessage': 'Sie sehen das sichere Browserfenster von PayPal nicht? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n }\n },\n 'CA': {\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 de PayPal\\u00A0? Nous vous aiderons \\u00E0 relancer la fen\\u00EAtre afin d\\'effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you relaunch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'C2': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BE': {\n 'nl': {\n 'windowMessage': 'Ziet u de beveiligde PayPal-browser niet? We helpen u het venster opnieuw te openen om uw aankoop te voltooien.\\u00A0 ',\n 'continue': 'Doorgaan'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 PayPal\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BR': {\n 'pt': {\n 'windowMessage': 'N\\u00E3o est\\u00E1 vendo o navegador seguro do PayPal? Ajudaremos voc\\u00EA a reabrir a janela para concluir a compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AU': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\'ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n }\n};\n","/*\n * [hi-base32]{@link https://github.com/emn178/hi-base32}\n *\n * @version 0.5.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var root = typeof window === 'object' ? window : {};\n var NODE_JS = !root.HI_BASE32_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n }\n var COMMON_JS = !root.HI_BASE32_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var BASE32_ENCODE_CHAR = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'.split('');\n var BASE32_DECODE_CHAR = {\n 'A': 0, 'B': 1, 'C': 2, 'D': 3, 'E': 4, 'F': 5, 'G': 6, 'H': 7, 'I': 8,\n 'J': 9, 'K': 10, 'L': 11, 'M': 12, 'N': 13, 'O': 14, 'P': 15, 'Q': 16,\n 'R': 17, 'S': 18, 'T': 19, 'U': 20, 'V': 21, 'W': 22, 'X': 23, 'Y': 24,\n 'Z': 25, '2': 26, '3': 27, '4': 28, '5': 29, '6': 30, '7': 31\n };\n\n var blocks = [0, 0, 0, 0, 0, 0, 0, 0];\n\n var throwInvalidUtf8 = function (position, partial) {\n if (partial.length > 10) {\n partial = '...' + partial.substr(-10);\n }\n var err = new Error('Decoded data is not valid UTF-8.'\n + ' Maybe try base32.decode.asBytes()?'\n + ' Partial data after reading ' + position + ' bytes: ' + partial + ' <-');\n err.position = position;\n throw err;\n };\n\n var toUtf8String = function (bytes) {\n var str = '', length = bytes.length, i = 0, followingChars = 0, b, c;\n while (i < length) {\n b = bytes[i++];\n if (b <= 0x7F) {\n str += String.fromCharCode(b);\n continue;\n } else if (b > 0xBF && b <= 0xDF) {\n c = b & 0x1F;\n followingChars = 1;\n } else if (b <= 0xEF) {\n c = b & 0x0F;\n followingChars = 2;\n } else if (b <= 0xF7) {\n c = b & 0x07;\n followingChars = 3;\n } else {\n throwInvalidUtf8(i, str);\n }\n\n for (var j = 0; j < followingChars; ++j) {\n b = bytes[i++];\n if (b < 0x80 || b > 0xBF) {\n throwInvalidUtf8(i, str);\n }\n c <<= 6;\n c += b & 0x3F;\n }\n if (c >= 0xD800 && c <= 0xDFFF) {\n throwInvalidUtf8(i, str);\n }\n if (c > 0x10FFFF) {\n throwInvalidUtf8(i, str);\n }\n\n if (c <= 0xFFFF) {\n str += String.fromCharCode(c);\n } else {\n c -= 0x10000;\n str += String.fromCharCode((c >> 10) + 0xD800);\n str += String.fromCharCode((c & 0x3FF) + 0xDC00);\n }\n }\n return str;\n };\n\n var decodeAsBytes = function (base32Str) {\n if (!/^[A-Z2-7=]+$/.test(base32Str)) {\n throw new Error('Invalid base32 characters');\n }\n base32Str = base32Str.replace(/=/g, '');\n var v1, v2, v3, v4, v5, v6, v7, v8, bytes = [], index = 0, length = base32Str.length;\n\n // 4 char to 3 bytes\n for (var i = 0, count = length >> 3 << 3; i < count;) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v8 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255;\n bytes[index++] = (v4 << 4 | v5 >>> 1) & 255;\n bytes[index++] = (v5 << 7 | v6 << 2 | v7 >>> 3) & 255;\n bytes[index++] = (v7 << 5 | v8) & 255;\n }\n\n // remain bytes\n var remain = length - count;\n if (remain === 2) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n } else if (remain === 4) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255;\n } else if (remain === 5) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255;\n bytes[index++] = (v4 << 4 | v5 >>> 1) & 255;\n } else if (remain === 7) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255;\n bytes[index++] = (v4 << 4 | v5 >>> 1) & 255;\n bytes[index++] = (v5 << 7 | v6 << 2 | v7 >>> 3) & 255;\n }\n return bytes;\n };\n\n var encodeAscii = function (str) {\n var v1, v2, v3, v4, v5, base32Str = '', length = str.length;\n for (var i = 0, count = parseInt(length / 5) * 5; i < count;) {\n v1 = str.charCodeAt(i++);\n v2 = str.charCodeAt(i++);\n v3 = str.charCodeAt(i++);\n v4 = str.charCodeAt(i++);\n v5 = str.charCodeAt(i++);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3 | v5 >>> 5) & 31] +\n BASE32_ENCODE_CHAR[v5 & 31];\n }\n\n // remain char\n var remain = length - count;\n if (remain === 1) {\n v1 = str.charCodeAt(i);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2) & 31] +\n '======';\n } else if (remain === 2) {\n v1 = str.charCodeAt(i++);\n v2 = str.charCodeAt(i);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4) & 31] +\n '====';\n } else if (remain === 3) {\n v1 = str.charCodeAt(i++);\n v2 = str.charCodeAt(i++);\n v3 = str.charCodeAt(i);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1) & 31] +\n '===';\n } else if (remain === 4) {\n v1 = str.charCodeAt(i++);\n v2 = str.charCodeAt(i++);\n v3 = str.charCodeAt(i++);\n v4 = str.charCodeAt(i);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3) & 31] +\n '=';\n }\n return base32Str;\n };\n\n var encodeUtf8 = function (str) {\n var v1, v2, v3, v4, v5, code, end = false, base32Str = '',\n index = 0, i, start = 0, bytes = 0, length = str.length;\n do {\n blocks[0] = blocks[5];\n blocks[1] = blocks[6];\n blocks[2] = blocks[7];\n for (i = start; index < length && i < 5; ++index) {\n code = str.charCodeAt(index);\n if (code < 0x80) {\n blocks[i++] = code;\n } else if (code < 0x800) {\n blocks[i++] = 0xc0 | (code >> 6);\n blocks[i++] = 0x80 | (code & 0x3f);\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i++] = 0xe0 | (code >> 12);\n blocks[i++] = 0x80 | ((code >> 6) & 0x3f);\n blocks[i++] = 0x80 | (code & 0x3f);\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++index) & 0x3ff));\n blocks[i++] = 0xf0 | (code >> 18);\n blocks[i++] = 0x80 | ((code >> 12) & 0x3f);\n blocks[i++] = 0x80 | ((code >> 6) & 0x3f);\n blocks[i++] = 0x80 | (code & 0x3f);\n }\n }\n bytes += i - start;\n start = i - 5;\n if (index === length) {\n ++index;\n }\n if (index > length && i < 6) {\n end = true;\n }\n v1 = blocks[0];\n if (i > 4) {\n v2 = blocks[1];\n v3 = blocks[2];\n v4 = blocks[3];\n v5 = blocks[4];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3 | v5 >>> 5) & 31] +\n BASE32_ENCODE_CHAR[v5 & 31];\n } else if (i === 1) {\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2) & 31] +\n '======';\n } else if (i === 2) {\n v2 = blocks[1];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4) & 31] +\n '====';\n } else if (i === 3) {\n v2 = blocks[1];\n v3 = blocks[2];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1) & 31] +\n '===';\n } else {\n v2 = blocks[1];\n v3 = blocks[2];\n v4 = blocks[3];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3) & 31] +\n '=';\n }\n } while (!end);\n return base32Str;\n };\n\n var encodeBytes = function (bytes) {\n var v1, v2, v3, v4, v5, base32Str = '', length = bytes.length;\n for (var i = 0, count = parseInt(length / 5) * 5; i < count;) {\n v1 = bytes[i++];\n v2 = bytes[i++];\n v3 = bytes[i++];\n v4 = bytes[i++];\n v5 = bytes[i++];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3 | v5 >>> 5) & 31] +\n BASE32_ENCODE_CHAR[v5 & 31];\n }\n\n // remain char\n var remain = length - count;\n if (remain === 1) {\n v1 = bytes[i];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2) & 31] +\n '======';\n } else if (remain === 2) {\n v1 = bytes[i++];\n v2 = bytes[i];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4) & 31] +\n '====';\n } else if (remain === 3) {\n v1 = bytes[i++];\n v2 = bytes[i++];\n v3 = bytes[i];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1) & 31] +\n '===';\n } else if (remain === 4) {\n v1 = bytes[i++];\n v2 = bytes[i++];\n v3 = bytes[i++];\n v4 = bytes[i];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3) & 31] +\n '=';\n }\n return base32Str;\n };\n\n var encode = function (input, asciiOnly) {\n var notString = typeof(input) !== 'string';\n if (notString && input.constructor === ArrayBuffer) {\n input = new Uint8Array(input);\n }\n if (notString) {\n return encodeBytes(input);\n } else if (asciiOnly) {\n return encodeAscii(input);\n } else {\n return encodeUtf8(input);\n }\n };\n\n var decode = function (base32Str, asciiOnly) {\n if (!asciiOnly) {\n return toUtf8String(decodeAsBytes(base32Str));\n }\n if (!/^[A-Z2-7=]+$/.test(base32Str)) {\n throw new Error('Invalid base32 characters');\n }\n var v1, v2, v3, v4, v5, v6, v7, v8, str = '', length = base32Str.indexOf('=');\n if (length === -1) {\n length = base32Str.length;\n }\n\n // 8 char to 5 bytes\n for (var i = 0, count = length >> 3 << 3; i < count;) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v8 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255) +\n String.fromCharCode((v2 << 6 | v3 << 1 | v4 >>> 4) & 255) +\n String.fromCharCode((v4 << 4 | v5 >>> 1) & 255) +\n String.fromCharCode((v5 << 7 | v6 << 2 | v7 >>> 3) & 255) +\n String.fromCharCode((v7 << 5 | v8) & 255);\n }\n\n // remain bytes\n var remain = length - count;\n if (remain === 2) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255);\n } else if (remain === 4) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255) +\n String.fromCharCode((v2 << 6 | v3 << 1 | v4 >>> 4) & 255);\n } else if (remain === 5) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255) +\n String.fromCharCode((v2 << 6 | v3 << 1 | v4 >>> 4) & 255) +\n String.fromCharCode((v4 << 4 | v5 >>> 1) & 255);\n } else if (remain === 7) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255) +\n String.fromCharCode((v2 << 6 | v3 << 1 | v4 >>> 4) & 255) +\n String.fromCharCode((v4 << 4 | v5 >>> 1) & 255) +\n String.fromCharCode((v5 << 7 | v6 << 2 | v7 >>> 3) & 255);\n }\n return str;\n };\n\n var exports = {\n encode: encode,\n decode: decode\n };\n decode.asBytes = decodeAsBytes;\n\n if (COMMON_JS) {\n module.exports = exports;\n } else {\n root.base32 = exports;\n if (AMD) {\n define(function() {\n return exports;\n });\n }\n }\n})();\n","/* @flow */\n\nimport type { Component, ComponentDriverType } from '../component/component';\n\nexport let script : ComponentDriverType<*, Document> = {\n\n global() : ?Document {\n return window.document;\n },\n\n register(component : Component<*>, document : Document) {\n\n function render(element : HTMLElement) {\n\n if (!element || !element.tagName || element.tagName.toLowerCase() !== 'script') {\n return;\n }\n\n // $FlowFixMe\n if (!element.attributes.type || element.attributes.type.value !== 'application/x-component' || !element.parentNode) {\n return;\n }\n\n let tag = element.getAttribute('data-component');\n\n if (!tag || tag !== component.tag) {\n return;\n }\n\n component.log(`instantiate_script_component`);\n\n let props : { [string] : mixed } = element.innerText\n ? eval(`(${ element.innerText })`) // eslint-disable-line no-eval, security/detect-eval-with-expression\n : {};\n\n let container = document.createElement('div');\n\n if (!element.parentNode) {\n throw new Error(`Element has no parent`);\n }\n\n element.parentNode.replaceChild(container, element);\n\n // $FlowFixMe\n component.render(props, container);\n }\n\n function scan() {\n let scriptTags = Array.prototype.slice.call(document.getElementsByTagName('script'));\n\n for (let element of scriptTags) {\n render(element);\n }\n }\n\n scan();\n document.addEventListener('DOMContentLoaded', scan);\n window.addEventListener('load', scan);\n\n document.addEventListener('DOMNodeInserted', event => {\n // $FlowFixMe\n render(event.target);\n });\n }\n};\n","/* @flow */\n\nimport { extend } from '../lib';\nimport type { Component, ComponentDriverType } from '../component/component';\n\ndeclare class ReactClassType {\n\n}\n\ntype ReactElementType = {\n\n};\n\ntype ReactType = {\n createClass : ({ render : ReactElementType, componentDidMount : () => void, componentDidUpdate : () => void }) => (typeof ReactClassType),\n createElement : (string, ?{ [string] : mixed }, ...children : Array) => ReactElementType\n};\n\ntype ReactDomType = {\n findDOMNode : (ReactElementType) => HTMLElement\n};\n\ntype ReactLibraryType = { React : ReactType, ReactDOM : ReactDomType };\n\nexport let react : ComponentDriverType<*, ReactLibraryType> = {\n\n global() : ?ReactLibraryType {\n if (window.React && window.ReactDOM) {\n return {\n React: window.React,\n ReactDOM: window.ReactDOM\n };\n }\n },\n\n register(component : Component<*>, { React, ReactDOM } : ReactLibraryType) : (typeof ReactClassType) {\n\n if (React.createClass) {\n\n // $FlowFixMe\n component.react = React.createClass({\n\n render() : ReactElementType {\n return React.createElement('div', null);\n },\n\n componentDidMount() {\n component.log(`instantiate_react_component`);\n\n let el = ReactDOM.findDOMNode(this);\n\n let parent = component.init(extend({}, this.props), null, el);\n\n this.setState({ parent });\n\n parent.render(el);\n },\n\n componentDidUpdate() {\n\n if (this.state && this.state.parent) {\n this.state.parent.updateProps(extend({}, this.props));\n }\n },\n\n componentWillUnmount() {\n if (this.state && this.state.parent) {\n this.state.parent.destroy();\n }\n }\n });\n } else {\n // $FlowFixMe\n component.react = class extends React.Component {\n render() : ReactElementType {\n return React.createElement('div', null);\n }\n\n componentDidMount() {\n component.log(`instantiate_react_component`);\n\n let el = ReactDOM.findDOMNode(this);\n\n let parent = component.init(extend({}, this.props), null, el);\n\n this.setState({ parent });\n\n parent.render(el);\n }\n\n componentDidUpdate() {\n\n if (this.state && this.state.parent) {\n this.state.parent.updateProps(extend({}, this.props));\n }\n }\n\n componentWillUnmount() {\n if (this.state && this.state.parent) {\n this.state.parent.destroy();\n }\n }\n };\n }\n\n return component.react;\n }\n};\n","/* @flow */\n\nimport type { Component, ComponentDriverType } from '../component/component';\nimport { extend } from '../lib';\n\ntype VueComponent = {\n render : (Function) => Element,\n inheritAttrs : boolean,\n mounted : () => void,\n beforeUpdate : () => void\n};\n\nexport let vue : ComponentDriverType<*, void> = {\n\n global() {\n // pass\n },\n\n register

(component : Component

) : VueComponent {\n\n return {\n render(createElement) : Element {\n return createElement('div');\n },\n\n inheritAttrs: false,\n\n mounted() {\n let el = this.$el;\n\n // $FlowFixMe\n this.parent = component.init(extend({}, this.$attrs), null, el);\n\n this.parent.render(el);\n },\n\n beforeUpdate() {\n \n if (this.parent && this.$attrs) {\n this.parent.updateProps(extend({}, this.$attrs));\n }\n }\n };\n }\n};\n","/* @flow */\n\nimport { dasherizeToCamel, replaceObject } from '../lib';\nimport type { Component, ComponentDriverType } from '../component/component';\n\ntype AngularModule = {\n directive : (string, () => {\n scope : { [string] : '=' | '@' },\n restrict : string,\n controller : Array\n }) => AngularModule\n};\n\ntype Angular = {\n module : (string, Array) => AngularModule\n};\n\nexport let angular : ComponentDriverType<*, Angular> = {\n\n global() : ?Angular {\n return window.angular;\n },\n\n register(component : Component<*>, ng : Angular) : AngularModule {\n\n let module = ng.module(component.tag, []).directive(dasherizeToCamel(component.tag), () => {\n\n let scope = {};\n\n for (let key of component.getPropNames()) {\n scope[key] = '=';\n }\n\n if (component.looseProps) {\n scope.props = '=';\n }\n\n return {\n scope,\n\n restrict: 'E',\n\n controller: [ '$scope', '$element', ($scope, $element) => {\n\n if (component.looseProps && !$scope.props) {\n throw new Error(`For angular bindings to work, prop definitions must be passed to zoid.create`);\n }\n\n component.log(`instantiate_angular_component`);\n\n function safeApply() {\n if ($scope.$root.$$phase !== '$apply' && $scope.$root.$$phase !== '$digest') {\n try {\n $scope.$apply();\n } catch (err) {\n // pass\n }\n }\n }\n\n let getProps = () => {\n\n let scopeProps;\n\n if ($scope.props) {\n scopeProps = $scope.props;\n } else {\n scopeProps = {};\n for (let key of Object.keys(scope)) {\n if ($scope[key] !== undefined) {\n scopeProps[key] = $scope[key];\n }\n }\n }\n\n scopeProps = replaceObject(scopeProps, {\n 'function': (value) => {\n return function angularWrapped() : mixed {\n let result = value.apply(this, arguments);\n safeApply();\n return result;\n };\n }\n });\n\n return scopeProps;\n };\n\n let parent = component.init(getProps(), null, $element[0]);\n parent.render($element[0]);\n\n $scope.$watch(() => {\n parent.updateProps(getProps());\n });\n } ]\n };\n });\n\n return module;\n }\n};\n","/* @flow */\n\nimport type { Component, ComponentDriverType } from '../component/component';\n\ndeclare class GlimmerComponentType {\n element : HTMLElement,\n args : Object\n}\n\nexport let glimmer : ComponentDriverType<*, (typeof GlimmerComponentType)> = {\n\n global() {\n // pass\n },\n\n register(component : Component<*>, GlimmerComponent : (typeof GlimmerComponentType)) : (typeof GlimmerComponentType) {\n return class extends GlimmerComponent {\n didInsertElement() {\n component.render({ ...this.args }, this.element);\n }\n };\n }\n};\n","/* @flow */\n/* eslint new-cap: 0 */\n\nimport { replaceObject } from '../lib';\nimport type { Component, ComponentDriverType } from '../component/component';\n\ntype Angular2Injection = {};\n\ntype Angular2Component = {};\n\ntype Angular2Module = {};\n\ntype Angular2 = {\n Component : ({ selector : string, template : string, inputs : Array }) => {\n Class : ({ constructor : Array, ngOnInit : () => void, ngOnChanges : () => void }) => Angular2Component\n },\n NgModule : ({ declarations : Array, exports : Array }) => {\n Class : ({ constructor : () => void }) => Angular2Module\n },\n ElementRef : Angular2Injection,\n NgZone : Angular2Injection\n};\n\n\nexport let angular2 : ComponentDriverType<*, Angular2> = {\n\n global() {\n // pass\n },\n\n register(zoid : Component<*>, { Component : AngularComponent, NgModule, ElementRef, NgZone }) : Angular2Module {\n\n zoid.log('initializing angular2 component');\n\n let getProps = (component) => {\n return replaceObject({ ...component.internalProps, ...component.props }, {\n 'function': (value) => {\n if (typeof value === 'function') {\n return function angular2Wrapped() : void {\n return component.zone.run(() => value.apply(this, arguments));\n };\n }\n }\n });\n };\n\n const ComponentInstance =\n AngularComponent({\n selector: zoid.tag,\n template: '

',\n inputs: [ 'props' ]\n }).Class({\n constructor: [ ElementRef, NgZone, function angularConstructor(elementRef, zone) {\n this.elementRef = elementRef;\n this.zone = zone;\n } ],\n ngOnInit () {\n const targetElement = this.elementRef.nativeElement;\n const parent = zoid.init(getProps(this), null, targetElement);\n parent.render(targetElement);\n this.parent = parent;\n },\n ngOnChanges() {\n if (this.parent) {\n this.parent.updateProps(getProps(this));\n }\n }\n });\n\n\n const ModuleInstance = NgModule({\n declarations: [ ComponentInstance ],\n exports: [ ComponentInstance ]\n }).Class({\n constructor () {\n // pass\n }\n });\n\n return ModuleInstance;\n }\n};\n","/*!\n * Bowser - a browser detector\n * https://github.com/ded/bowser\n * MIT License | (c) Dustin Diaz 2015\n */\n!function(e,t,n){typeof module!=\"undefined\"&&module.exports?module.exports=n():typeof define==\"function\"&&define.amd?define(t,n):e[t]=n()}(this,\"bowser\",function(){function t(t){function n(e){var n=t.match(e);return n&&n.length>1&&n[1]||\"\"}function r(e){var n=t.match(e);return n&&n.length>1&&n[2]||\"\"}function C(e){switch(e){case\"NT\":return\"NT\";case\"XP\":return\"XP\";case\"NT 5.0\":return\"2000\";case\"NT 5.1\":return\"XP\";case\"NT 5.2\":return\"2003\";case\"NT 6.0\":return\"Vista\";case\"NT 6.1\":return\"7\";case\"NT 6.2\":return\"8\";case\"NT 6.3\":return\"8.1\";case\"NT 10.0\":return\"10\";default:return undefined}}var i=n(/(ipod|iphone|ipad)/i).toLowerCase(),o=/like android/i.test(t),u=!o&&/android/i.test(t),a=/nexus\\s*[0-6]\\s*/i.test(t),f=!a&&/nexus\\s*[0-9]+/i.test(t),l=/CrOS/.test(t),c=/silk/i.test(t),h=/sailfish/i.test(t),p=/tizen/i.test(t),d=/(web|hpw)(o|0)s/i.test(t),v=/windows phone/i.test(t),m=/SamsungBrowser/i.test(t),g=!v&&/windows/i.test(t),y=!i&&!c&&/macintosh/i.test(t),b=!u&&!h&&!p&&!d&&/linux/i.test(t),w=r(/edg([ea]|ios)\\/(\\d+(\\.\\d+)?)/i),E=n(/version\\/(\\d+(\\.\\d+)?)/i),S=/tablet/i.test(t)&&!/tablet pc/i.test(t),x=!S&&/[^-]mobi/i.test(t),T=/xbox/i.test(t),N;/opera/i.test(t)?N={name:\"Opera\",opera:e,version:E||n(/(?:opera|opr|opios)[\\s\\/](\\d+(\\.\\d+)?)/i)}:/opr\\/|opios/i.test(t)?N={name:\"Opera\",opera:e,version:n(/(?:opr|opios)[\\s\\/](\\d+(\\.\\d+)?)/i)||E}:/SamsungBrowser/i.test(t)?N={name:\"Samsung Internet for Android\",samsungBrowser:e,version:E||n(/(?:SamsungBrowser)[\\s\\/](\\d+(\\.\\d+)?)/i)}:/Whale/i.test(t)?N={name:\"NAVER Whale browser\",whale:e,version:n(/(?:whale)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/MZBrowser/i.test(t)?N={name:\"MZ Browser\",mzbrowser:e,version:n(/(?:MZBrowser)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/coast/i.test(t)?N={name:\"Opera Coast\",coast:e,version:E||n(/(?:coast)[\\s\\/](\\d+(\\.\\d+)?)/i)}:/focus/i.test(t)?N={name:\"Focus\",focus:e,version:n(/(?:focus)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/yabrowser/i.test(t)?N={name:\"Yandex Browser\",yandexbrowser:e,version:E||n(/(?:yabrowser)[\\s\\/](\\d+(\\.\\d+)?)/i)}:/ucbrowser/i.test(t)?N={name:\"UC Browser\",ucbrowser:e,version:n(/(?:ucbrowser)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/mxios/i.test(t)?N={name:\"Maxthon\",maxthon:e,version:n(/(?:mxios)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/epiphany/i.test(t)?N={name:\"Epiphany\",epiphany:e,version:n(/(?:epiphany)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/puffin/i.test(t)?N={name:\"Puffin\",puffin:e,version:n(/(?:puffin)[\\s\\/](\\d+(?:\\.\\d+)?)/i)}:/sleipnir/i.test(t)?N={name:\"Sleipnir\",sleipnir:e,version:n(/(?:sleipnir)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/k-meleon/i.test(t)?N={name:\"K-Meleon\",kMeleon:e,version:n(/(?:k-meleon)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:v?(N={name:\"Windows Phone\",osname:\"Windows Phone\",windowsphone:e},w?(N.msedge=e,N.version=w):(N.msie=e,N.version=n(/iemobile\\/(\\d+(\\.\\d+)?)/i))):/msie|trident/i.test(t)?N={name:\"Internet Explorer\",msie:e,version:n(/(?:msie |rv:)(\\d+(\\.\\d+)?)/i)}:l?N={name:\"Chrome\",osname:\"Chrome OS\",chromeos:e,chromeBook:e,chrome:e,version:n(/(?:chrome|crios|crmo)\\/(\\d+(\\.\\d+)?)/i)}:/edg([ea]|ios)/i.test(t)?N={name:\"Microsoft Edge\",msedge:e,version:w}:/vivaldi/i.test(t)?N={name:\"Vivaldi\",vivaldi:e,version:n(/vivaldi\\/(\\d+(\\.\\d+)?)/i)||E}:h?N={name:\"Sailfish\",osname:\"Sailfish OS\",sailfish:e,version:n(/sailfish\\s?browser\\/(\\d+(\\.\\d+)?)/i)}:/seamonkey\\//i.test(t)?N={name:\"SeaMonkey\",seamonkey:e,version:n(/seamonkey\\/(\\d+(\\.\\d+)?)/i)}:/firefox|iceweasel|fxios/i.test(t)?(N={name:\"Firefox\",firefox:e,version:n(/(?:firefox|iceweasel|fxios)[ \\/](\\d+(\\.\\d+)?)/i)},/\\((mobile|tablet);[^\\)]*rv:[\\d\\.]+\\)/i.test(t)&&(N.firefoxos=e,N.osname=\"Firefox OS\")):c?N={name:\"Amazon Silk\",silk:e,version:n(/silk\\/(\\d+(\\.\\d+)?)/i)}:/phantom/i.test(t)?N={name:\"PhantomJS\",phantom:e,version:n(/phantomjs\\/(\\d+(\\.\\d+)?)/i)}:/slimerjs/i.test(t)?N={name:\"SlimerJS\",slimer:e,version:n(/slimerjs\\/(\\d+(\\.\\d+)?)/i)}:/blackberry|\\bbb\\d+/i.test(t)||/rim\\stablet/i.test(t)?N={name:\"BlackBerry\",osname:\"BlackBerry OS\",blackberry:e,version:E||n(/blackberry[\\d]+\\/(\\d+(\\.\\d+)?)/i)}:d?(N={name:\"WebOS\",osname:\"WebOS\",webos:e,version:E||n(/w(?:eb)?osbrowser\\/(\\d+(\\.\\d+)?)/i)},/touchpad\\//i.test(t)&&(N.touchpad=e)):/bada/i.test(t)?N={name:\"Bada\",osname:\"Bada\",bada:e,version:n(/dolfin\\/(\\d+(\\.\\d+)?)/i)}:p?N={name:\"Tizen\",osname:\"Tizen\",tizen:e,version:n(/(?:tizen\\s?)?browser\\/(\\d+(\\.\\d+)?)/i)||E}:/qupzilla/i.test(t)?N={name:\"QupZilla\",qupzilla:e,version:n(/(?:qupzilla)[\\s\\/](\\d+(?:\\.\\d+)+)/i)||E}:/chromium/i.test(t)?N={name:\"Chromium\",chromium:e,version:n(/(?:chromium)[\\s\\/](\\d+(?:\\.\\d+)?)/i)||E}:/chrome|crios|crmo/i.test(t)?N={name:\"Chrome\",chrome:e,version:n(/(?:chrome|crios|crmo)\\/(\\d+(\\.\\d+)?)/i)}:u?N={name:\"Android\",version:E}:/safari|applewebkit/i.test(t)?(N={name:\"Safari\",safari:e},E&&(N.version=E)):i?(N={name:i==\"iphone\"?\"iPhone\":i==\"ipad\"?\"iPad\":\"iPod\"},E&&(N.version=E)):/googlebot/i.test(t)?N={name:\"Googlebot\",googlebot:e,version:n(/googlebot\\/(\\d+(\\.\\d+))/i)||E}:N={name:n(/^(.*)\\/(.*) /),version:r(/^(.*)\\/(.*) /)},!N.msedge&&/(apple)?webkit/i.test(t)?(/(apple)?webkit\\/537\\.36/i.test(t)?(N.name=N.name||\"Blink\",N.blink=e):(N.name=N.name||\"Webkit\",N.webkit=e),!N.version&&E&&(N.version=E)):!N.opera&&/gecko\\//i.test(t)&&(N.name=N.name||\"Gecko\",N.gecko=e,N.version=N.version||n(/gecko\\/(\\d+(\\.\\d+)?)/i)),!N.windowsphone&&(u||N.silk)?(N.android=e,N.osname=\"Android\"):!N.windowsphone&&i?(N[i]=e,N.ios=e,N.osname=\"iOS\"):y?(N.mac=e,N.osname=\"macOS\"):T?(N.xbox=e,N.osname=\"Xbox\"):g?(N.windows=e,N.osname=\"Windows\"):b&&(N.linux=e,N.osname=\"Linux\");var k=\"\";N.windows?k=C(n(/Windows ((NT|XP)( \\d\\d?.\\d)?)/i)):N.windowsphone?k=n(/windows phone (?:os)?\\s?(\\d+(\\.\\d+)*)/i):N.mac?(k=n(/Mac OS X (\\d+([_\\.\\s]\\d+)*)/i),k=k.replace(/[_\\s]/g,\".\")):i?(k=n(/os (\\d+([_\\s]\\d+)*) like mac os x/i),k=k.replace(/[_\\s]/g,\".\")):u?k=n(/android[ \\/-](\\d+(\\.\\d+)*)/i):N.webos?k=n(/(?:web|hpw)os\\/(\\d+(\\.\\d+)*)/i):N.blackberry?k=n(/rim\\stablet\\sos\\s(\\d+(\\.\\d+)*)/i):N.bada?k=n(/bada\\/(\\d+(\\.\\d+)*)/i):N.tizen&&(k=n(/tizen[\\/\\s](\\d+(\\.\\d+)*)/i)),k&&(N.osversion=k);var L=!N.windows&&k.split(\".\")[0];if(S||f||i==\"ipad\"||u&&(L==3||L>=4&&!x)||N.silk)N.tablet=e;else if(x||i==\"iphone\"||i==\"ipod\"||u||a||N.blackberry||N.webos||N.bada)N.mobile=e;return N.msedge||N.msie&&N.version>=10||N.yandexbrowser&&N.version>=15||N.vivaldi&&N.version>=1||N.chrome&&N.version>=20||N.samsungBrowser&&N.version>=4||N.whale&&s([N.version,\"1.0\"])===1||N.mzbrowser&&s([N.version,\"6.0\"])===1||N.focus&&s([N.version,\"1.0\"])===1||N.firefox&&N.version>=20||N.safari&&N.version>=6||N.opera&&N.version>=10||N.ios&&N.osversion&&N.osversion.split(\".\")[0]>=6||N.blackberry&&N.version>=10.1||N.chromium&&N.version>=20?N.a=e:N.msie&&N.version<10||N.chrome&&N.version<20||N.firefox&&N.version<20||N.safari&&N.version<6||N.opera&&N.version<10||N.ios&&N.osversion&&N.osversion.split(\".\")[0]<6||N.chromium&&N.version<20?N.c=e:N.x=e,N}function r(e){return e.split(\".\").length}function i(e,t){var n=[],r;if(Array.prototype.map)return Array.prototype.map.call(e,t);for(r=0;r=0){if(n[0][t]>n[1][t])return 1;if(n[0][t]!==n[1][t])return-1;if(t===0)return 0}}function o(e,r,i){var o=n;typeof r==\"string\"&&(i=r,r=void 0),r===void 0&&(r=!1),i&&(o=t(i));var u=\"\"+o.version;for(var a in e)if(e.hasOwnProperty(a)&&o[a]){if(typeof e[a]!=\"string\")throw new Error(\"Browser version in the minVersion map should be a string: \"+a+\": \"+String(e));return s([u,e[a]])<0}return r}function u(e,t,n){return!o(e,t,n)}var e=!0,n=t(typeof navigator!=\"undefined\"?navigator.userAgent||\"\":\"\");return n.test=function(e){for(var t=0;t\\n \\n \\n \\n \\n \\n \\n \\n \\n\\n\"","module.exports = \"\\n \\n \\n \\n\\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n \\n \\n \\n \\n \\n \\n \\n\\n\"","module.exports = \"\\n\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n \\n \\n \\n \\n \\n \\n \\n\\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n\\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n unionpay\\n Created with Sketch.\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","// get successful control from form and assemble into object\n// http://www.w3.org/TR/html401/interact/forms.html#h-17.13.2\n\n// types which indicate a submit action and are not successful controls\n// these will be ignored\nvar k_r_submitter = /^(?:submit|button|image|reset|file)$/i;\n\n// node names which could be successful controls\nvar k_r_success_contrls = /^(?:input|select|textarea|keygen)/i;\n\n// Matches bracket notation.\nvar brackets = /(\\[[^\\[\\]]*\\])/g;\n\n// serializes form fields\n// @param form MUST be an HTMLForm element\n// @param options is an optional argument to configure the serialization. Default output\n// with no options specified is a url encoded string\n// - hash: [true | false] Configure the output type. If true, the output will\n// be a js object.\n// - serializer: [function] Optional serializer function to override the default one.\n// The function takes 3 arguments (result, key, value) and should return new result\n// hash and url encoded str serializers are provided with this module\n// - disabled: [true | false]. If true serialize disabled fields.\n// - empty: [true | false]. If true serialize empty fields\nfunction serialize(form, options) {\n if (typeof options != 'object') {\n options = { hash: !!options };\n }\n else if (options.hash === undefined) {\n options.hash = true;\n }\n\n var result = (options.hash) ? {} : '';\n var serializer = options.serializer || ((options.hash) ? hash_serializer : str_serialize);\n\n var elements = form && form.elements ? form.elements : [];\n\n //Object store each radio and set if it's empty or not\n var radio_store = Object.create(null);\n\n for (var i=0 ; i\n \n
\n
\n \n \n
\n
\n {content.windowMessage}\n
\n
\n
\n
\n
\n
\n\n
\n {outlet}\n
\n\n \n
\n );\n\n const container = (\n \n \n { el }\n \n \n );\n\n on(EVENT.CLOSE, () => {\n el.className += ` ${ tag }-loading`;\n });\n\n return (\n
\n \n\n \n
\n );\n}\n\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { create } from 'zoid/src';\nimport { type Component } from 'zoid/src/component/component';\nimport { base64encode } from 'belter/src';\n\nimport { ENV } from '../constants';\nimport { getButtonSessionID, getBrowserLocale, getSessionID, getCurrentScriptUrl } from '../lib';\nimport { config } from '../config';\n\nimport { containerTemplate } from './template';\n\ntype BillingOptions = {|\n client : {\n [string] : (string | ZalgoPromise)\n },\n env? : string,\n locale? : string,\n logLevel : string,\n awaitPopupBridge : Function,\n meta : Object,\n commit : boolean,\n token : string\n|};\n\nexport const BillingPage : Component = create({\n tag: 'billing-page',\n name: 'billing-page',\n\n buildUrl(props) : string {\n const env = props.env || config.env;\n return `${ config.inlinedCardFieldUrls[env] }/billing`;\n },\n\n get domain() : Object {\n return {\n ...config.paypalDomains,\n [ ENV.LOCAL ]: /^http:\\/\\/localhost.paypal.com:\\d+$/\n };\n },\n\n scrolling: true,\n\n props: {\n sessionID: {\n type: 'string',\n required: false,\n def() : string {\n return getSessionID();\n },\n queryParam: true\n },\n\n\n token: {\n type: 'string',\n required: true,\n queryParam: true\n },\n\n buttonSessionID: {\n type: 'string',\n required: false,\n def() : ?string {\n return getButtonSessionID();\n },\n queryParam: true\n },\n\n commit: {\n type: 'boolean',\n required: false,\n queryParam: true\n },\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n },\n\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n allowDelegate: true,\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n }\n },\n\n cardType: {\n type: 'string',\n required: false\n },\n prefilledZipCode: {\n type: 'string',\n required: false\n },\n\n onEvent: {\n type: 'function',\n required: false,\n sameDomain: true\n },\n\n dispatch: {\n type: 'object',\n required: false,\n sameDomain: true\n },\n\n onCancel: {\n type: 'function',\n required: false,\n once: true,\n noop: true\n },\n\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n }\n },\n\n\n containerTemplate\n});\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { create } from 'zoid/src';\nimport { base64encode } from 'belter/src';\n\nimport { getBrowserLocale, getCurrentScriptUrl } from '../lib';\nimport { config } from '../config';\nimport { containerTemplate } from '../billing/template';\n\nexport const ThreeDomainSecure = create({\n tag: 'paypal-3ds',\n name: '3ds',\n\n buildUrl(props) : string {\n const env = props.env || config.env;\n return `${ config.inlinedCardFieldUrls[env] }/init3ds`;\n },\n\n get domain() : Object {\n return {\n ...config.paypalDomains\n };\n },\n\n scrolling: true,\n\n props: {\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n },\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n allowDelegate: true,\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n }\n },\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n },\n challengeUrl: {\n type: 'string'\n },\n threeDomainSecureToken: {\n type: 'string'\n },\n method: {\n type: 'string'\n },\n onSuccess: {\n type: 'function',\n required: false\n },\n onError: {\n type: 'function',\n required: false\n },\n onCancel: {\n type: 'function',\n required: true,\n allowDelegate: true\n }\n },\n\n\n containerTemplate\n});\n","/* @flow */\n\nimport { track, info } from 'beaver-logger/client';\n\nimport { config } from '../config';\nimport { FPTI, PPTM_ID } from '../constants';\nimport { stringifyError, extendUrl, loadScript, getElement, isPayPalDomain } from '../lib';\n\n\nfunction shouldCreateInitialPptmScript() : boolean {\n const id = window.location.hostname;\n\n if (!id) {\n return false;\n }\n\n if (isPayPalDomain()) {\n return false;\n }\n\n const existingScript = getElement(PPTM_ID);\n const alreadyDownloaded = Boolean(existingScript);\n\n if (alreadyDownloaded) {\n info('pptm_tried_loading_twice');\n return false;\n }\n\n return true;\n}\n\nfunction removePptm() {\n const script = getElement(PPTM_ID);\n\n if (script) {\n // $FlowFixMe\n script.parentNode.removeChild(script);\n }\n}\n\nexport function pptmFactory() : Object {\n let noContentFoundInContainer = false;\n const callback = `__pptmLoadedWithNoContent`;\n let listener;\n\n const obj = {\n /*\n In the button component, we set up a global window[callback] that will be called in pptm `onload` attribute.\n Button.render calls `reloadPptmScript`, which checks if window[callback] has been called yet (meaning, it checks\n if pptm.js was loaded before Button.render was called). If so, we'll check to see if we should reload PPTM\n now that we might have a client ID from the Button.render method.\n If pptm.js hasn't loaded yet, then we'll set up a listener to the same logic above to defer it until\n pptm.js actually loads.\n */\n reloadPptmScript(clientId : ?string) {\n const tryCreatePptmScript = () => {\n if (obj.shouldReloadPptmScript(clientId)) {\n obj.removePptm();\n obj.createPptmScript(clientId);\n } else {\n // Defer until later, since reloadPptmScript might have been called\n // before pptm loaded, so we'll still want to hook into the script load.\n listener = tryCreatePptmScript;\n }\n };\n\n tryCreatePptmScript();\n },\n listenForLoadWithNoContent() {\n window[callback] = () => {\n noContentFoundInContainer = true;\n\n if (listener) {\n listener();\n listener = undefined;\n }\n };\n },\n listenForButtonRender() {\n window.paypalDDL = window.paypalDDL || [];\n const buttonRenderEvent = window.paypalDDL.filter(e => e.event === 'paypalButtonRender');\n if (buttonRenderEvent.length === 0) {\n window.paypalDDL.push({ event: 'paypalButtonRender' });\n }\n },\n get callback() : string {\n return callback;\n },\n get noContentFoundInContainer() : boolean {\n return noContentFoundInContainer;\n },\n createPptmScript: (clientId : ?string) => {\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.PPTM,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.PPTM_LOAD\n });\n \n const params = {\n t: 'xo',\n id: window.location.hostname,\n mrid: config.merchantID,\n client_id: '',\n v: config.version,\n source: 'checkoutjs'\n };\n \n if (clientId) {\n params.client_id = clientId;\n } else {\n delete params.client_id;\n }\n \n const fullUrl = extendUrl(config.pptmUrl, params);\n \n loadScript(fullUrl, 0, {\n async: true,\n id: PPTM_ID\n }).then(() => {\n // If the snippet is empty, then fire the callback.\n // We assume non-empty pptm.js bundles with init the paypalDDL and push an event called\n // `snippetRun` to it.\n if (!(window.paypalDDL && window.paypalDDL[0] && window.paypalDDL[0].event === 'snippetRun')) {\n window[callback]();\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.PPTM,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.PPTM_LOADED\n });\n }).catch(err => {\n info('pptm_script_error', { error: stringifyError(err) });\n });\n },\n shouldCreateInitialPptmScript,\n /*\n During Button render if a client ID was provided, we'll want to refresh the\n pptm script to try to pull down a container by that value.\n We'll only do this if we're not on the PayPal domain, or if\n a merchant ID wasn't already provided (since container look-up can\n also happen by merchant ID). Note that this will only happen\n if there was no content found in the container that was pulled down\n in the `setup` script. This is important because we don't want\n to pull down multiple containers that actually contain content,\n otherwise we'll be firing duplicate tags.\n */\n shouldReloadPptmScript(clientId : ?string) : boolean {\n if (noContentFoundInContainer === false) {\n return false;\n }\n\n if (isPayPalDomain()) {\n return false;\n }\n \n // If a merchant ID was already provided, then that meant we initially\n // loaded the pptm script with that value as the main container\n // look-up value, so in this case we don't want to reload pptm.\n if (config.merchantID) {\n return false;\n }\n \n if (clientId) {\n return true;\n }\n \n return false;\n },\n removePptm\n };\n\n return obj;\n}\n","/* @flow */\n\nimport { pptmFactory } from './pptm-factory';\n\nexport const pptm = pptmFactory();\n","/* @flow */\n\nexport * from './pptm';\nexport * from './pptm-factory';\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { on, send } from 'post-robot/src';\nimport { base64encode } from 'belter/src';\nimport { info, track } from 'beaver-logger/client';\nimport { getAncestor, isSameDomain } from 'cross-domain-utils/src';\n\nimport { config } from '../config';\nimport { FPTI, PAYMENT_TYPE } from '../constants';\nimport { request, memoize, isPayPalDomain, uniqueID } from '../lib';\n\ntype ProxyRest = {\n [string] : (...args : $ReadOnlyArray) => ZalgoPromise<*>\n};\n\nlet proxyRest : ProxyRest = {};\n\nconst createAccessToken = memoize((env : string, client : { [key : string] : string }) : ZalgoPromise => {\n\n info(`rest_api_create_access_token`);\n\n env = env || config.env;\n\n const clientID : string = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (proxyRest.createAccessToken && !proxyRest.createAccessToken.source.closed) {\n return proxyRest.createAccessToken(env, client);\n }\n\n const basicAuth : string = base64encode(`${ clientID }:`);\n\n return request({\n\n method: `post`,\n url: config.authApiUrls[env],\n headers: {\n Authorization: `Basic ${ basicAuth }`\n },\n data: {\n grant_type: `client_credentials`\n }\n\n }).then(res => {\n\n if (res && res.error === 'invalid_client') {\n throw new Error(`Auth Api invalid ${ env } client id: ${ clientID }:\\n\\n${ JSON.stringify(res, null, 4) }`);\n }\n\n if (!res || !res.access_token) {\n throw new Error(`Auth Api response error:\\n\\n${ JSON.stringify(res, null, 4) }`);\n }\n\n return res.access_token;\n });\n\n}, { time: 10 * 60 * 1000 });\n\nconst createExperienceProfile = memoize((env : string, client : { [key : string] : string }, experienceDetails : Object = {}) : ZalgoPromise => {\n\n info(`rest_api_create_experience_profile`);\n\n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (proxyRest.createExperienceProfile && !proxyRest.createExperienceProfile.source.closed) {\n return proxyRest.createExperienceProfile(env, client, experienceDetails);\n }\n\n experienceDetails.temporary = true;\n experienceDetails.name = experienceDetails.name ? `${ experienceDetails.name }_${ Math.random().toString() }` : Math.random().toString();\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n return request({\n method: `post`,\n url: config.experienceApiUrls[env],\n headers: {\n Authorization: `Bearer ${ accessToken }`\n },\n json: experienceDetails\n });\n\n }).then((res) : string => {\n\n if (res && res.error) {\n throw new Error(res.error);\n }\n\n if (!res.id) {\n throw new Error(`No id in experience profile response:\\n\\n${ JSON.stringify(res, null, 4) }`);\n }\n\n return res.id;\n });\n\n}, { time: 10 * 60 * 1000 });\n\nfunction logPaymentResponse(res) {\n\n if (!res) {\n return;\n }\n\n let paymentToken;\n let paymentID;\n\n if (res.id) {\n paymentID = res.id;\n }\n\n if (res.links && res.links.length) {\n for (let i = 0; i < res.links.length; i++) {\n if (res.links[i].method === 'REDIRECT' && res.links[i].rel === 'approval_url') {\n const match = res.links[i].href.match(/token=((EC-)?[A-Z0-9]{17})/);\n if (match) {\n paymentToken = match[1];\n }\n }\n }\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.BUTTON,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CREATE_PAYMENT,\n [ FPTI.KEY.CONTEXT_TYPE ]: FPTI.CONTEXT_TYPE[PAYMENT_TYPE.PAY_ID],\n [ FPTI.KEY.PAY_ID ]: paymentID,\n [ FPTI.KEY.TOKEN ]: paymentToken,\n [ FPTI.KEY.CONTEXT_ID ]: paymentID\n });\n}\n\nfunction getDefaultReturnUrl() : string {\n return `https://www.paypal.com/checkoutnow/error`;\n}\n\nfunction createTracking(env : string, client : { [key : string] : string }, merchantID, trackingData) : Object {\n \n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n const trackingID = uniqueID();\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n const headers : Object = {\n Authorization: `Bearer ${ accessToken }`\n };\n\n return request({\n method: `put`,\n url: `${ config.trackingApiUrls[env] }/${ merchantID }/${ trackingID }`,\n headers,\n json: {\n 'tracking_id': trackingID,\n 'additional_data': trackingData\n }\n });\n\n }).then(() => {\n return trackingID;\n });\n}\n\nfunction createPayment(env : string, client : { [key : string] : string }, paymentDetails : Object) : ZalgoPromise {\n\n info(`rest_api_create_checkout_token`);\n\n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n let { payment, experience, meta, tracking } = paymentDetails;\n\n if (!payment) {\n throw new Error(`Expected payment details to be passed`);\n }\n\n if (proxyRest.createPayment && !proxyRest.createPayment.source.closed) {\n return proxyRest.createPayment(env, client, { payment, experience, meta, tracking });\n }\n\n payment = { ...payment };\n payment.intent = payment.intent || 'sale';\n payment.redirect_urls = payment.redirect_urls || {};\n payment.redirect_urls.return_url = payment.redirect_urls.return_url || getDefaultReturnUrl();\n payment.redirect_urls.cancel_url = payment.redirect_urls.cancel_url || getDefaultReturnUrl();\n payment.payer = payment.payer || {};\n payment.payer.payment_method = payment.payer.payment_method || 'paypal';\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n return ZalgoPromise.try(() => {\n\n if (experience) {\n return ZalgoPromise.resolve(createExperienceProfile(env, client, experience));\n }\n\n }).then((experienceID) : ZalgoPromise => {\n\n return ZalgoPromise.try(() => {\n\n if (tracking) {\n return ZalgoPromise.resolve(createTracking(env, client, tracking.id, tracking.data));\n }\n\n }).then((trackingID) : ZalgoPromise => {\n\n if (experienceID) {\n payment.experience_profile_id = experienceID;\n }\n\n const headers : Object = {\n Authorization: `Bearer ${ accessToken }`\n };\n\n if (trackingID) {\n headers['Paypal-Client-Metadata-Id'] = trackingID;\n }\n\n if (meta && meta.partner_attribution_id) {\n headers['PayPal-Partner-Attribution-Id'] = meta.partner_attribution_id;\n }\n\n return request({\n method: `post`,\n url: config.paymentApiUrls[env],\n headers,\n json: payment\n });\n });\n });\n\n }).then((res) : string => {\n\n logPaymentResponse(res);\n\n if (res && res.id) {\n return res.id;\n }\n\n throw new Error(`Payment Api response error:\\n\\n${ JSON.stringify(res, null, 4) }`);\n\n });\n}\n\nfunction createOrder(env : string, client : { [key : string] : string }, paymentDetails : Object) : ZalgoPromise {\n\n info(`rest_api_create_order_token`);\n\n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n let { order, meta } = paymentDetails;\n\n if (!order) {\n throw new Error(`Expected order details to be passed`);\n }\n\n if (proxyRest.createOrder && !proxyRest.createOrder.source.closed) {\n return proxyRest.createOrder(env, client, { order, meta });\n }\n\n order = { ...order };\n order.intent = order.intent || 'CAPTURE';\n order.application_context = order.application_context || {};\n order.application_context.return_url = order.application_context.return_url || getDefaultReturnUrl();\n order.application_context.cancel_url = order.application_context.cancel_url || getDefaultReturnUrl();\n order.purchase_units = order.purchase_units || [];\n order.purchase_units[0] = order.purchase_units[0] || {};\n order.purchase_units.forEach(unit => {\n unit.reference_id = unit.reference_id || Math.random().toString();\n });\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n const headers : Object = {\n Authorization: `Bearer ${ accessToken }`\n };\n\n if (meta && meta.partner_attribution_id) {\n headers['PayPal-Partner-Attribution-Id'] = meta.partner_attribution_id;\n }\n\n return request({\n method: `post`,\n url: config.orderApiUrls[env],\n headers,\n json: order\n });\n\n }).then((res) : string => {\n\n logPaymentResponse(res);\n\n if (res && res.id) {\n return res.id;\n }\n\n throw new Error(`Payment Api response error:\\n\\n${ JSON.stringify(res, null, 4) }`);\n });\n}\n\nexport function createBillingAgreement(env : string, client : { [key : string] : string }, billingDetails : Object, experienceDetails? : ?Object) : ZalgoPromise {\n\n info(`rest_api_create_billing_token`);\n\n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (proxyRest.createBillingAgreement && !proxyRest.createBillingAgreement.source.closed) {\n return proxyRest.createBillingAgreement(env, client, billingDetails, experienceDetails);\n }\n\n billingDetails = { ...billingDetails };\n billingDetails.plan = billingDetails.plan || {};\n billingDetails.plan.merchant_preferences = billingDetails.plan.merchant_preferences || {};\n billingDetails.plan.merchant_preferences.return_url = billingDetails.plan.merchant_preferences.return_url || getDefaultReturnUrl();\n billingDetails.plan.merchant_preferences.cancel_url = billingDetails.plan.merchant_preferences.cancel_url || getDefaultReturnUrl();\n billingDetails.payer = billingDetails.payer || {};\n billingDetails.payer.payment_method = billingDetails.payer.payment_method || 'paypal';\n\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n return ZalgoPromise.try(() => {\n\n if (experienceDetails) {\n return ZalgoPromise.resolve(createExperienceProfile(env, client, experienceDetails));\n }\n\n }).then((experienceID) : ZalgoPromise => {\n\n if (experienceID) {\n billingDetails.experience_profile_id = experienceID;\n }\n\n return request({\n method: `post`,\n url: config.billingApiUrls[env],\n headers: {\n Authorization: `Bearer ${ accessToken }`\n },\n json: billingDetails\n });\n });\n\n }).then(res => {\n\n if (res && res.token_id) {\n return res.token_id;\n }\n\n throw new Error(`Billing Api response error:\\n\\n${ JSON.stringify(res, null, 4) }`);\n });\n}\n\nexport const rest = {\n payment: {\n create: createPayment\n },\n order: {\n create: createOrder\n },\n billingAgreement: {\n create: createBillingAgreement\n },\n experience: {\n create: createExperienceProfile\n }\n};\n\nconst PROXY_REST = `proxy_rest`;\nconst parentWin = getAncestor();\n\non(PROXY_REST, { domain: config.paypal_domain_regex }, ({ data }) => {\n proxyRest = data;\n});\n\nif (parentWin && isPayPalDomain() && !isSameDomain(parentWin)) {\n send(parentWin, PROXY_REST, { createAccessToken, createExperienceProfile, createPayment, createBillingAgreement, createOrder })\n .catch(() => {\n // pass\n });\n}\n","/* @flow */\n\nimport { info, track, immediateFlush } from 'beaver-logger/client';\n\nimport { FPTI, PAYMENT_TYPE } from './constants';\nimport { getReturnToken, getSessionState, getDomainSetting, eventEmitter } from './lib';\n\nexport const onAuthorizeListener = eventEmitter();\n\nfunction log(experiment : string, treatment : string, token : ?string, state : string) {\n\n getSessionState(session => {\n\n let event = `${ experiment }_${ treatment }_${ state }`;\n const loggedEvents = session.loggedExperimentEvents = session.loggedExperimentEvents || [];\n const duplicate = loggedEvents.indexOf(event) !== -1;\n\n if (duplicate) {\n info(`duplicate_${ event }`);\n\n } else {\n info(event);\n loggedEvents.push(event);\n\n const edge = window.navigator && window.navigator.userAgent && window.navigator.userAgent.match(/Edge\\/[0-9]{2}/);\n\n if (edge) {\n event = info(`${ edge[0].toLowerCase().replace('/', '_') }_${ event }`);\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: state,\n [ FPTI.KEY.EXPERIMENT_NAME ]: experiment,\n [ FPTI.KEY.TREATMENT_NAME ]: treatment,\n [ FPTI.KEY.TOKEN ]: token,\n [ FPTI.KEY.CONTEXT_ID ]: token,\n [ FPTI.KEY.CONTEXT_TYPE ]: token ? FPTI.CONTEXT_TYPE[PAYMENT_TYPE.EC_TOKEN] : FPTI.CONTEXT_TYPE.BUTTON_SESSION_ID\n });\n\n immediateFlush();\n }\n });\n}\n\nexport function logExperimentTreatment({ experiment, treatment, state, token } : { experiment : string, treatment : string, state : string, token : ?string }) {\n\n if (!experiment || !treatment) {\n return;\n }\n\n getSessionState(session => {\n session.externalExperiment = experiment;\n session.externalExperimentTreatment = treatment;\n\n if (token) {\n session.externalExperimentToken = token;\n }\n });\n\n log(experiment, treatment, token, state);\n}\n\nfunction logReturn(token : string) {\n\n const {\n externalExperiment,\n externalExperimentTreatment,\n externalExperimentToken\n } = getSessionState(session => session);\n\n if (externalExperiment && externalExperimentTreatment && externalExperimentToken === token) {\n log(externalExperiment, externalExperimentTreatment, token, `complete`);\n } else {\n info(`experiment_mismatch`, {\n token,\n externalExperiment,\n externalExperimentTreatment,\n externalExperimentToken\n });\n }\n}\n\nif (getDomainSetting('log_authorize')) {\n\n onAuthorizeListener.once(({ paymentToken }) => {\n setTimeout(() => {\n logReturn(paymentToken);\n }, 1);\n });\n\n const returnToken = getReturnToken();\n\n if (returnToken) {\n setTimeout(() => {\n if (returnToken) {\n logReturn(returnToken);\n }\n }, 1);\n }\n}\n","/* @flow */\n\nimport { once, noop } from 'zoid/src/lib';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { error } from 'beaver-logger/client';\nimport type { CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { extendUrl, redirect, awaitKey, stringifyError } from '../lib';\nimport { config } from '../config';\nimport { FUNDING } from '../constants';\n\nimport { determineParameterFromToken, determineUrl } from './checkout';\n\nconst OPTYPE = {\n PAYMENT: 'payment',\n CANCEL: 'cancel'\n};\n\nconst CONTINGENCY = {\n PAYMENT_CANCELLED: 'PAYMENT_CANCELLED'\n};\n\ntype PopupBridge = {|\n open : (string) => ZalgoPromise\n|};\n\nfunction wrapPopupBridge(popupBridge : Object) : PopupBridge {\n return {\n open(url : string) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n popupBridge.onComplete = (err, result) => {\n if (!result) {\n return reject(new Error('No payload passed in popupBridge.onComplete'));\n }\n\n return err ? reject(err) : resolve(result);\n };\n\n popupBridge.onCancel = () => {\n const err = new Error(CONTINGENCY.PAYMENT_CANCELLED);\n // $FlowFixMe\n err.code = CONTINGENCY.PAYMENT_CANCELLED;\n return reject(err);\n };\n\n popupBridge.open(extendUrl(url, { redirect_uri: popupBridge.getReturnUrlPrefix() }));\n });\n }\n };\n}\n\nfunction validateCheckoutProps(props) {\n if (!props.payment) {\n throw new Error(`Expected props.payment to be passed`);\n }\n\n if (!props.onAuthorize) {\n throw new Error(`Expected props.onAuthorize to be passed`);\n }\n\n if (props.env && !config.checkoutUrls[props.env]) {\n throw new Error(`Invalid props.env: ${ props.env }`);\n }\n}\n\nfunction normalizeCheckoutProps(props : Object) : { env : string, payment : Function, onAuthorize : Function, onCancel : Function } {\n const env = props.env = props.env || config.env;\n\n const payment = props.payment;\n const onAuthorize = once(props.onAuthorize);\n const onCancel = once(props.onCancel || noop);\n\n return { env, payment, onAuthorize, onCancel };\n}\n\nfunction getUrl(props : { env : string, payment : Function, onAuthorize : Function, onCancel? : Function, commit? : boolean }) : ZalgoPromise {\n\n const { env, payment } = normalizeCheckoutProps(props);\n\n return ZalgoPromise.try(payment, { props }).then(token => {\n if (!token) {\n throw new Error(`Expected props.payment to return a payment id or token`);\n }\n\n return extendUrl(determineUrl(env, FUNDING.PAYPAL, token), {\n [determineParameterFromToken(token)]: token,\n\n useraction: props.commit ? 'commit' : '',\n native_xo: '1'\n });\n });\n}\n\nfunction extractDataFromQuery(query : Object) : Object {\n\n const data : Object = {\n paymentToken: query.token,\n billingToken: query.ba_token,\n paymentID: query.paymentId,\n payerID: query.PayerID,\n intent: query.intent\n };\n \n const { opType, return_uri, cancel_uri } = query;\n\n if (opType === OPTYPE.PAYMENT) {\n data.returnUrl = return_uri;\n\n } else if (opType === OPTYPE.CANCEL) {\n data.cancelUrl = cancel_uri;\n }\n\n return data;\n}\n\nfunction buildActions(query : Object) : Object {\n \n const actions : Object = {\n close: noop,\n closeComponent: noop\n };\n\n const { opType, return_uri, cancel_uri } = query;\n\n if (opType === OPTYPE.PAYMENT) {\n actions.redirect = (win : CrossDomainWindowType = window, redirectUrl : string = return_uri) : ZalgoPromise => {\n return redirect(win, redirectUrl);\n };\n\n } else if (opType === OPTYPE.CANCEL) {\n actions.redirect = (win : CrossDomainWindowType = window, redirectUrl : string = cancel_uri) : ZalgoPromise => {\n return redirect(win, redirectUrl);\n };\n }\n\n return actions;\n}\n\nfunction renderThroughPopupBridge(props : Object, popupBridge : PopupBridge) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n validateCheckoutProps(props);\n\n }).then(() => {\n\n return getUrl(props);\n \n }).then(url => {\n\n return popupBridge.open(url);\n\n }).then(payload => {\n\n const { opType } = payload.queryItems;\n const { onAuthorize, onCancel } = normalizeCheckoutProps(props);\n\n const data = extractDataFromQuery(payload.queryItems);\n const actions = buildActions(payload.queryItems);\n \n if (opType === OPTYPE.PAYMENT) {\n return onAuthorize(data, actions);\n\n } else if (opType === OPTYPE.CANCEL) {\n return onCancel(data, actions);\n \n } else {\n throw new Error(`Invalid opType: ${ opType }`);\n }\n\n }).catch(err => {\n\n if (err && err.code === CONTINGENCY.PAYMENT_CANCELLED) {\n const { onCancel } = normalizeCheckoutProps(props);\n return onCancel({}, {});\n }\n\n throw err;\n });\n}\n\nexport function awaitPopupBridge(Button : Object) : ZalgoPromise {\n if (Button.xprops && Button.xprops.awaitPopupBridge) {\n return Button.xprops.awaitPopupBridge();\n }\n\n return awaitKey(window, 'popupBridge').then(popupBridge => {\n return wrapPopupBridge(popupBridge);\n });\n}\n\nexport function setupPopupBridgeProxy(Checkout : Object, Button : Object) {\n\n let popupBridge;\n\n awaitPopupBridge(Button).then(bridge => {\n popupBridge = bridge;\n });\n\n function doRender(props, original) : ZalgoPromise {\n if (!popupBridge) {\n return original();\n }\n \n return renderThroughPopupBridge(props, popupBridge)\n .catch(err => {\n error(`popup_bridge_error`, { err: stringifyError(err) });\n return original();\n });\n }\n\n const render = Checkout.render;\n Checkout.render = function popupBridgeRender(props : Object) : ZalgoPromise {\n return doRender(props, () => render.apply(this, arguments));\n };\n\n const renderTo = Checkout.renderTo;\n Checkout.renderTo = function popupBridgeRenderTo(win : CrossDomainWindowType, props : Object) : ZalgoPromise {\n return doRender(props, () => renderTo.apply(this, arguments));\n };\n\n const renderPopupTo = Checkout.renderPopupTo;\n Checkout.renderPopupTo = function popupBridgeRenderPopupTo(win : CrossDomainWindowType, props : Object) : ZalgoPromise {\n return doRender(props, () => renderPopupTo.apply(this, arguments));\n };\n}\n","/* @flow */\n/* global __paypal_checkout__*/\n\nimport { FUNDING, COUNTRY, CARD, PLATFORM, DEFAULT, ENV } from '../constants';\n\nexport const FUNDING_PRIORITY = [\n FUNDING.PAYPAL,\n FUNDING.VENMO,\n FUNDING.ITAU,\n FUNDING.CREDIT,\n FUNDING.CARD,\n FUNDING.IDEAL,\n FUNDING.ELV,\n FUNDING.BANCONTACT,\n FUNDING.GIROPAY,\n FUNDING.EPS,\n FUNDING.SOFORT,\n FUNDING.MYBANK,\n FUNDING.BLIK,\n FUNDING.P24,\n FUNDING.PAYU,\n FUNDING.VERKKOPANKKI,\n FUNDING.TRUSTLY,\n FUNDING.MAXIMA,\n FUNDING.BOLETO,\n FUNDING.OXXO\n];\n\nexport const FUNDING_ORDER = [\n FUNDING.PAYPAL,\n FUNDING.VENMO,\n FUNDING.ITAU,\n FUNDING.CREDIT,\n FUNDING.IDEAL,\n FUNDING.ELV,\n FUNDING.BANCONTACT,\n FUNDING.GIROPAY,\n FUNDING.EPS,\n FUNDING.SOFORT,\n FUNDING.MYBANK,\n FUNDING.BLIK,\n FUNDING.P24,\n FUNDING.PAYU,\n FUNDING.VERKKOPANKKI,\n FUNDING.TRUSTLY,\n FUNDING.MAXIMA,\n FUNDING.BOLETO,\n FUNDING.OXXO,\n FUNDING.CARD\n];\n\nexport const FUNDING_CONFIG = {\n\n [ DEFAULT ]: {\n enabled: true,\n\n allowOptIn: true,\n allowOptOut: true,\n allowRemember: true,\n\n allowHorizontal: true,\n allowVertical: true,\n\n requireCommitAsTrue: false\n },\n\n [ FUNDING.PAYPAL ]: {\n default: true,\n\n allowOptIn: false,\n allowOptOut: false,\n\n allowHorizontal: true,\n allowVertical: true\n },\n\n [ FUNDING.CARD ]: {\n // $FlowFixMe\n default: (typeof __paypal_checkout__ === 'undefined' ? true : __paypal_checkout__.serverConfig.paypalMerchantConfiguration.creditCard.isPayPalBranded),\n\n allowHorizontal: false,\n allowVertical: true\n },\n\n [ FUNDING.VENMO ]: {\n allowOptOut: true,\n allowedCountries: [\n COUNTRY.US\n ],\n\n allowHorizontal: true,\n allowVertical: true\n },\n [ FUNDING.ITAU ]: {\n allowOptOut: true,\n allowedCountries: [\n COUNTRY.BR\n ],\n\n allowHorizontal: true,\n allowVertical: true\n },\n\n [ FUNDING.CREDIT ]: {\n allowedCountries: [\n COUNTRY.US,\n COUNTRY.GB,\n COUNTRY.DE\n ],\n defaultVerticalCountries: [\n COUNTRY.US\n ],\n platforms: [\n PLATFORM.MOBILE\n ],\n\n allowHorizontal: true,\n allowVertical: true,\n allowRemember: true\n },\n\n [ FUNDING.IDEAL ]: {\n allowedCountries: [\n COUNTRY.NL\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.ELV ]: {\n allowedCountries: [\n COUNTRY.DE\n ],\n defaultVerticalCountries: [\n COUNTRY.DE\n ],\n\n allowHorizontal: false,\n allowVertical: true\n },\n\n [ FUNDING.BANCONTACT ]: {\n allowedCountries: [\n COUNTRY.BE\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.GIROPAY ]: {\n allowedCountries: [\n COUNTRY.DE\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.SOFORT ]: {\n allowedCountries: [\n COUNTRY.DE,\n COUNTRY.AT,\n COUNTRY.BE,\n COUNTRY.ES,\n COUNTRY.IT,\n COUNTRY.NL\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.EPS ]: {\n allowedCountries: [\n COUNTRY.AT\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.MYBANK ]: {\n allowedCountries: [\n COUNTRY.IT\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.P24 ]: {\n allowedCountries: [\n COUNTRY.PL\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.PAYU ]: {\n allowedCountries: [\n COUNTRY.CZ\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.VERKKOPANKKI ]: {\n allowedCountries: [\n COUNTRY.FI\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.BLIK ]: {\n allowedCountries: [\n COUNTRY.PL\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.TRUSTLY ]: {\n allowedCountries: [\n COUNTRY.DE,\n COUNTRY.DK,\n COUNTRY.EE,\n COUNTRY.ES,\n COUNTRY.FI,\n COUNTRY.GB,\n COUNTRY.IT,\n COUNTRY.MT,\n COUNTRY.NL,\n COUNTRY.NO,\n COUNTRY.SE\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.MAXIMA ]: {\n allowedCountries: [\n COUNTRY.LT\n ],\n\n allowedEnvs: [\n ENV.LOCAL,\n ENV.STAGE,\n ENV.TEST\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.BOLETO ]: {\n allowedCountries: [\n COUNTRY.BR\n ],\n\n allowedEnvs: [\n ENV.LOCAL,\n ENV.STAGE,\n ENV.TEST\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.OXXO ]: {\n allowedCountries: [\n COUNTRY.MX\n ],\n\n allowedEnvs: [\n ENV.LOCAL,\n ENV.STAGE,\n ENV.TEST\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.ZIMPLER ]: {\n allowedCountries: [],\n\n allowHorizontal: false,\n allowVertical: false,\n requireCommitAsTrue: true\n }\n};\n\nexport const CARD_CONFIG = {\n\n [ DEFAULT ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX\n ]\n },\n\n [ COUNTRY.GB ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.DISCOVER,\n CARD.MAESTRO\n ]\n },\n\n [ COUNTRY.US ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.DISCOVER\n ]\n },\n\n [ COUNTRY.BR ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.HIPER,\n CARD.ELO\n ]\n },\n\n [ COUNTRY.JP ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.JCB\n ]\n },\n\n [ COUNTRY.CN ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.CUP\n ]\n }\n};\n\nfunction getConfig(conf : Object, category : string, key : string, def : ?T) : T {\n const categoryConfig = conf[category];\n\n if (categoryConfig && categoryConfig.hasOwnProperty(key)) {\n return categoryConfig[key];\n }\n\n if (conf[DEFAULT] && conf[DEFAULT].hasOwnProperty(key)) {\n return conf[DEFAULT][key];\n }\n\n if (arguments.length >= 4) {\n // $FlowFixMe\n return def;\n }\n\n throw new Error(`No value found for ${ category }:${ key }`);\n}\n\nexport function getFundingConfig(source : string, key : string, def : ?T) : T {\n return getConfig(FUNDING_CONFIG, source, key, def);\n}\n\nexport function getCardConfig(source : string, key : string, def : ?T) : T {\n return getConfig(CARD_CONFIG, source, key, def);\n}\n","/* @flow */\n\nimport { ENV, CARD_PRIORITY, FUNDING, BUTTON_LAYOUT, FUNDING_ELIGIBILITY_REASON } from '../constants';\nimport type { LocaleType, FundingSource, FundingSelection, FundingList } from '../types';\n\nimport { getFundingConfig, getCardConfig, FUNDING_PRIORITY, FUNDING_CONFIG } from './config';\n\nconst fundingEligibilityReasons = [];\n\nexport function isFundingIneligible(source : FundingSource, { locale, funding, layout, commit, env } :\n { locale : LocaleType, funding : FundingSelection, layout : string, commit? : boolean, env : string }) : ?string {\n\n const isVertical = layout === BUTTON_LAYOUT.VERTICAL;\n const allowSecondary = getFundingConfig(source, isVertical ? 'allowVertical' : 'allowHorizontal');\n\n if (!allowSecondary) {\n return FUNDING_ELIGIBILITY_REASON.SECONDARY_DISALLOWED;\n }\n\n if (funding.disallowed.indexOf(source) !== -1 && getFundingConfig(source, 'allowOptOut')) {\n return FUNDING_ELIGIBILITY_REASON.OPT_OUT;\n }\n\n if (funding.disallowed.indexOf(source) !== -1 && source === FUNDING.VENMO) {\n return FUNDING_ELIGIBILITY_REASON.OPT_OUT;\n }\n if (funding.disallowed.indexOf(source) !== -1 && source === FUNDING.ITAU) {\n return FUNDING_ELIGIBILITY_REASON.OPT_OUT;\n }\n\n if (getFundingConfig(source, 'allowedCountries', [ locale.country ]).indexOf(locale.country) === -1) {\n return FUNDING_ELIGIBILITY_REASON.DISALLOWED_COUNTRY;\n }\n\n if (getFundingConfig(source, 'requireCommitAsTrue') && !commit) {\n return FUNDING_ELIGIBILITY_REASON.COMMIT_NOT_SET;\n }\n\n const allowedEnvs = getFundingConfig(source, 'allowedEnvs');\n if (allowedEnvs && allowedEnvs.indexOf(env) === -1) {\n return FUNDING_ELIGIBILITY_REASON.INVALID_ENV;\n }\n}\n\nexport function isFundingAutoEligible(source : FundingSource, { locale, funding, layout } :\n { locale : LocaleType, funding : FundingSelection, layout : string }) : ?string {\n\n const isVertical = layout === BUTTON_LAYOUT.VERTICAL;\n\n if (isVertical && getFundingConfig(source, 'defaultVerticalCountries', []).indexOf(locale.country) !== -1) {\n return FUNDING_ELIGIBILITY_REASON.DEFAULT_COUNTRY;\n }\n\n if (getFundingConfig(source, 'default')) {\n return FUNDING_ELIGIBILITY_REASON.DEFAULT;\n }\n\n if (funding.allowed.indexOf(source) !== -1 && getFundingConfig(source, 'allowOptIn')) {\n return FUNDING_ELIGIBILITY_REASON.OPT_IN;\n }\n\n if (funding.remembered.indexOf(source) !== -1 && getFundingConfig(source, 'allowRemember')) {\n return FUNDING_ELIGIBILITY_REASON.REMEMBERED;\n }\n}\n\nexport function isFundingEligible(source : FundingSource, { locale, funding, env, layout, selected, commit } :\n { locale : LocaleType, funding : FundingSelection, env : string, layout : string, selected? : string, commit : boolean }) : { eligible : boolean, reason : string } {\n\n if (selected && source === selected) {\n return { eligible: true, reason: FUNDING_ELIGIBILITY_REASON.PRIMARY };\n }\n\n if (!getFundingConfig(source, 'enabled')) {\n if (!(env === ENV.TEST && getFundingConfig(source, 'test'))) {\n return { eligible: false, reason: FUNDING_ELIGIBILITY_REASON.NOT_ENABLED };\n }\n }\n\n const ineligibleReason = isFundingIneligible(source, { locale, funding, layout, commit, env });\n\n if (ineligibleReason) {\n return { eligible: false, reason: ineligibleReason };\n }\n\n const autoEligibleReason = isFundingAutoEligible(source, { locale, funding, layout });\n\n if (autoEligibleReason) {\n return { eligible: true, reason: autoEligibleReason };\n }\n\n return { eligible: false, reason: FUNDING_ELIGIBILITY_REASON.NEED_OPT_IN };\n}\n\nexport function determineEligibleFunding({ funding, selected, locale, env, layout, commit } :\n { funding : FundingSelection, selected : FundingSource, locale : LocaleType, env : string, layout : string, commit : boolean }) : FundingList {\n\n const reasons = {};\n\n const eligibleFunding = FUNDING_PRIORITY.filter(source => {\n const { eligible, reason } = isFundingEligible(source, { selected, locale, funding, env, layout, commit });\n reasons[source] = { eligible, reason, factors: { env, locale, layout } };\n return eligible;\n });\n\n fundingEligibilityReasons.push(reasons);\n\n eligibleFunding.splice(eligibleFunding.indexOf(selected), 1);\n eligibleFunding.unshift(selected);\n\n return eligibleFunding;\n}\n\nexport function determineEligibleCards({ funding, locale } :\n { funding : FundingSelection, locale : LocaleType }) : FundingList {\n\n return getCardConfig(locale.country, 'priority')\n .filter(card => funding.disallowed.indexOf(card) === -1);\n}\n\nexport function validateFunding(funding : FundingSelection = { allowed: [], disallowed: [], remembered: [] }) {\n\n if (funding.allowed) {\n for (const source of funding.allowed) {\n if (CARD_PRIORITY.indexOf(source) !== -1) {\n continue;\n }\n\n if (!FUNDING_CONFIG.hasOwnProperty(source)) {\n throw new Error(`Invalid funding source: ${ source }`);\n }\n\n if (!getFundingConfig(source, 'allowOptIn')) {\n throw new Error(`Can not allow funding source: ${ source }`);\n }\n\n if (funding.disallowed && funding.disallowed.indexOf(source) !== -1) {\n throw new Error(`Can not allow and disallow funding source: ${ source }`);\n }\n }\n }\n\n if (funding.disallowed) {\n for (const source of funding.disallowed) {\n if (CARD_PRIORITY.indexOf(source) !== -1) {\n continue;\n }\n\n if (!FUNDING_CONFIG.hasOwnProperty(source)) {\n throw new Error(`Invalid funding source: ${ source }`);\n }\n\n if (!getFundingConfig(source, 'allowOptOut')) {\n throw new Error(`Can not disallow funding source: ${ source }`);\n }\n }\n }\n}\n\nexport function logFundingEligibility() {\n fundingEligibilityReasons.forEach((reasons, i) => {\n console.log(`\\nButton ${ i + 1 }:\\n`); // eslint-disable-line no-console\n\n console.table(Object.keys(reasons).map(source => { // eslint-disable-line no-console, compat/compat\n const { reason, eligible, factors } = reasons[source];\n\n return {\n 'Funding': source,\n 'Reason': reason,\n 'Eligibility': eligible ? 'eligible' : 'ineligible',\n 'Factors': JSON.stringify(factors)\n };\n }));\n });\n}\n","/* @flow */\n/* eslint no-template-curly-in-string: off, max-lines: off */\n\nimport { FUNDING, DEFAULT, COUNTRY, BUTTON_LABEL, BUTTON_COLOR, BUTTON_LOGO_COLOR, BUTTON_SIZE,\n BUTTON_TAGLINE_COLOR, BUTTON_SHAPE, BUTTON_LAYOUT, BUTTON_LOGO } from '../constants';\n\ntype ButtonConfig = {\n [ string ] : {\n colors? : $ReadOnlyArray<$Values>\n }\n};\n\nexport const BUTTON_CONFIG : ButtonConfig = {\n\n [ DEFAULT ]: {\n\n colors: [\n BUTTON_COLOR.GOLD,\n BUTTON_COLOR.BLUE,\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n sizes: [\n BUTTON_SIZE.SMALL,\n BUTTON_SIZE.MEDIUM,\n BUTTON_SIZE.LARGE,\n BUTTON_SIZE.RESPONSIVE\n ],\n\n shapes: [\n BUTTON_SHAPE.PILL,\n BUTTON_SHAPE.RECT\n ],\n\n layouts: [\n BUTTON_LAYOUT.HORIZONTAL,\n BUTTON_LAYOUT.VERTICAL\n ],\n\n logoColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_LOGO_COLOR.BLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLUE\n },\n\n tagLineColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_TAGLINE_COLOR.BLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_TAGLINE_COLOR.BLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_TAGLINE_COLOR.BLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_TAGLINE_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_TAGLINE_COLOR.BLUE\n\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n tag: `{ content: safer_tag }`,\n dualTag: `{ content: dual_tag|safer_tag }`,\n\n defaultLocale: `en_US`,\n defaultLabel: BUTTON_LABEL.CHECKOUT,\n defaultVerticalLabel: BUTTON_LABEL.PAYPAL,\n defaultColor: BUTTON_COLOR.GOLD,\n defaultSize: BUTTON_SIZE.SMALL,\n defaultVerticalSize: BUTTON_SIZE.MEDIUM,\n defaultShape: BUTTON_SHAPE.PILL,\n defaultLayout: BUTTON_LAYOUT.HORIZONTAL,\n defaultBranding: true,\n defaultVerticalBranding: true,\n defaultFundingIcons: false,\n defaultTagline: true,\n defaultDual: ``,\n\n minimumSize: BUTTON_SIZE.TINY,\n minimumVerticalSize: BUTTON_SIZE.MEDIUM,\n\n maximumSize: BUTTON_SIZE.HUGE,\n maximumVerticalSize: BUTTON_SIZE.HUGE,\n\n minHorizontalButtons: 1,\n minVerticalButtons: 1,\n\n maxHorizontalButtons: 2,\n maxVerticalButtons: 6,\n\n allowUnbranded: false,\n allowFundingIcons: true,\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.PAYPAL ]: {\n label: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n allowPrimary: true,\n\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true\n },\n\n [ BUTTON_LABEL.CHECKOUT ]: {\n label: `{ content: checkout }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n allowPrimary: true,\n\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true\n },\n\n [ BUTTON_LABEL.PAY ]: {\n label: `{ content: pay }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n allowPrimary: true,\n\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true\n },\n\n [ BUTTON_LABEL.BUYNOW ]: {\n label: `{ content: buynow }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n defaultBranding: undefined,\n\n allowPrimary: true,\n\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true,\n\n allowUnbranded: true\n },\n\n [ BUTTON_LABEL.INSTALLMENT ]: {\n label: (style) => { return `{ content: ${ style.installmentperiod ? 'installment_period' : 'installment' } }`; },\n logoLabel: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n allowPrimary: true,\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true,\n allowSecondaryVertical: false,\n allowSecondaryHorizontal: false\n },\n\n [ BUTTON_LABEL.CREDIT ]: {\n label: ({ locale }) => {\n if (locale.country === COUNTRY.DE) {\n return `{ logo: ${ BUTTON_LOGO.CREDIT } }`;\n }\n\n return `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } } { logo: ${ BUTTON_LOGO.CREDIT } }`;\n },\n logoLabel: ({ locale }) => {\n if (locale.country === COUNTRY.DE) {\n return `{ logo: ${ BUTTON_LOGO.CREDIT } }`;\n }\n\n return `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } } { logo: ${ BUTTON_LOGO.CREDIT } }`;\n },\n\n tag: `{ content: later_tag }`,\n\n colors: [\n BUTTON_COLOR.DARKBLUE,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLUE\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n defaultColor: BUTTON_COLOR.DARKBLUE,\n\n allowPrimary: true,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false,\n\n allowFundingIcons: false\n },\n\n [ BUTTON_LABEL.VENMO ]: {\n label: `{ logo: ${ BUTTON_LOGO.VENMO } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.VENMO } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.BLUE,\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.BLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLUE\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: true,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: true\n },\n [ BUTTON_LABEL.ITAU ]: {\n label: `{ logo: ${ BUTTON_LOGO.ITAU } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.ITAU } }`,\n\n defaultColor: BUTTON_COLOR.DARKBLUE,\n\n colors: [\n BUTTON_COLOR.DARKBLUE,\n BUTTON_COLOR.BLUE,\n BUTTON_COLOR.BLACK\n ],\n\n logoColors: {\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.DARKBLUE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: true\n },\n\n [ BUTTON_LABEL.IDEAL ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.IDEAL } } Online betalen`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.IDEAL } } Online betalen`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.ELV ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.ELV } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.ELV } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.BANCONTACT ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.BANCONTACT } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.BANCONTACT } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.GIROPAY ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.GIROPAY } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.GIROPAY } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.SOFORT ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.SOFORT } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.SOFORT } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.EPS ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.EPS } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.EPS } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.MYBANK ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.MYBANK } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.MYBANK } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.P24 ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.P24 } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.P24 } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.PAYU ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.PAYU } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PAYU } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.VERKKOPANKKI ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.VERKKOPANKKI } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.VERKKOPANKKI } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.BLIK ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.BLIK } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.BLIK } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.TRUSTLY ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.TRUSTLY } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.TRUSTLY } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.MAXIMA ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.MAXIMA } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.MAXIMA } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.BOLETO ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.BOLETO } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.BOLETO } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.OXXO ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.OXXO } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.OXXO } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.CARD ]: {\n\n label: `{ cards }`,\n logoLabel: `{ cards }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.TRANSPARENT\n ],\n\n logoColors: {\n [ BUTTON_COLOR.TRANSPARENT ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.TRANSPARENT\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n }\n};\n\nexport const FUNDING_TO_DEFAULT_LABEL = {\n [ FUNDING.PAYPAL ]: BUTTON_LABEL.PAYPAL,\n [ FUNDING.VENMO ]: BUTTON_LABEL.VENMO,\n [ FUNDING.ITAU ]: BUTTON_LABEL.ITAU,\n [ FUNDING.CARD ]: BUTTON_LABEL.CARD,\n [ FUNDING.CREDIT ]: BUTTON_LABEL.CREDIT,\n [ FUNDING.IDEAL ]: BUTTON_LABEL.IDEAL,\n [ FUNDING.ELV ]: BUTTON_LABEL.ELV,\n [ FUNDING.BANCONTACT ]: BUTTON_LABEL.BANCONTACT,\n [ FUNDING.GIROPAY ]: BUTTON_LABEL.GIROPAY,\n [ FUNDING.SOFORT ]: BUTTON_LABEL.SOFORT,\n [ FUNDING.EPS ]: BUTTON_LABEL.EPS,\n [ FUNDING.P24 ]: BUTTON_LABEL.P24,\n [ FUNDING.MYBANK ]: BUTTON_LABEL.MYBANK,\n [ FUNDING.PAYU ]: BUTTON_LABEL.PAYU,\n [ FUNDING.VERKKOPANKKI]: BUTTON_LABEL.VERKKOPANKKI,\n [ FUNDING.BLIK ]: BUTTON_LABEL.BLIK,\n [ FUNDING.TRUSTLY ]: BUTTON_LABEL.TRUSTLY,\n [ FUNDING.MAXIMA ]: BUTTON_LABEL.MAXIMA,\n [ FUNDING.BOLETO ]: BUTTON_LABEL.BOLETO,\n [ FUNDING.OXXO ]: BUTTON_LABEL.OXXO\n};\n\nexport const LABEL_TO_FUNDING = {\n [ BUTTON_LABEL.PAYPAL ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.CHECKOUT ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.PAY ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.BUYNOW ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.INSTALLMENT ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.CARD ]: FUNDING.CARD,\n [ BUTTON_LABEL.CREDIT ]: FUNDING.CREDIT,\n [ BUTTON_LABEL.VENMO ]: FUNDING.VENMO,\n [ BUTTON_LABEL.ITAU ]: FUNDING.ITAU,\n [ BUTTON_LABEL.IDEAL ]: FUNDING.IDEAL,\n [ BUTTON_LABEL.BANCONTACT]: FUNDING.BANCONTACT,\n [ BUTTON_LABEL.GIROPAY]: FUNDING.GIROPAY,\n [ BUTTON_LABEL.EPS ]: FUNDING.EPS,\n [ BUTTON_LABEL.SOFORT ]: FUNDING.SOFORT,\n [ BUTTON_LABEL.P24 ]: FUNDING.P24,\n [ BUTTON_LABEL.MYBANK ]: FUNDING.MYBANK,\n [ BUTTON_LABEL.PAYU ]: FUNDING.PAYU,\n [ BUTTON_LABEL.VERKKOPANKKI ]: FUNDING.VERKKOPANKKI,\n [ BUTTON_LABEL.BLIK ]: FUNDING.BLIK,\n [ BUTTON_LABEL.TRUSTLY ]: FUNDING.TRUSTLY,\n [ BUTTON_LABEL.MAXIMA ]: FUNDING.MAXIMA,\n [ BUTTON_LABEL.BOLETO ]: FUNDING.BOLETO,\n [ BUTTON_LABEL.OXXO ]: FUNDING.OXXO\n};\n\nexport const BUTTON_RELATIVE_STYLE = {\n FUNDINGICONS: 100,\n TAGLINE: 50,\n VERTICAL_MARGIN: 30\n};\n\nexport const BUTTON_STYLE = {\n\n [ BUTTON_SIZE.TINY ]: {\n defaultWidth: 75,\n defaultHeight: 25,\n minWidth: 75,\n maxWidth: 150,\n minHeight: 25,\n maxHeight: 30,\n buttonTextMargin: 0.5,\n allowFunding: true,\n allowTagline: false,\n byPayPalHeight: 0\n },\n\n [ BUTTON_SIZE.SMALL ]: {\n defaultWidth: 150,\n defaultHeight: 25,\n minWidth: 150,\n maxWidth: 200,\n minHeight: 25,\n maxHeight: 55,\n buttonTextMargin: 0.5,\n allowFunding: true,\n allowTagline: true,\n byPayPalHeight: 0\n },\n\n [ BUTTON_SIZE.MEDIUM ]: {\n defaultWidth: 250,\n defaultHeight: 35,\n minWidth: 200,\n maxWidth: 300,\n minHeight: 35,\n maxHeight: 55,\n buttonTextMargin: 1,\n allowFunding: true,\n allowTagline: true,\n byPayPalHeight: 30\n },\n\n [ BUTTON_SIZE.LARGE ]: {\n defaultWidth: 350,\n defaultHeight: 45,\n minWidth: 300,\n maxWidth: 500,\n minHeight: 30,\n maxHeight: 55,\n buttonTextMargin: 1,\n allowFunding: true,\n allowTagline: true,\n byPayPalHeight: 30\n },\n\n [ BUTTON_SIZE.HUGE ]: {\n defaultWidth: 500,\n defaultHeight: 55,\n minWidth: 500,\n maxWidth: 750,\n minHeight: 40,\n maxHeight: 55,\n buttonTextMargin: 1.25,\n allowFunding: true,\n allowTagline: true,\n byPayPalHeight: 30\n }\n};\n\nexport function labelToFunding(label : ?string) : string {\n return label ? LABEL_TO_FUNDING[label] : FUNDING.PAYPAL;\n}\n\nexport function fundingToDefaultLabel(funding : string) : $Values {\n return FUNDING_TO_DEFAULT_LABEL[funding];\n}\n\nfunction getConfig(conf : Object, category : string, key : string, def : ?T) : T {\n const categoryConfig = conf[category];\n\n if (categoryConfig && categoryConfig.hasOwnProperty(key)) {\n return categoryConfig[key];\n }\n\n if (conf[DEFAULT] && conf[DEFAULT].hasOwnProperty(key)) {\n return conf[DEFAULT][key];\n }\n\n if (arguments.length >= 4) {\n // $FlowFixMe\n return def;\n }\n\n throw new Error(`No value found for ${ category }:${ key }`);\n}\n\nexport function getButtonConfig(label : string, key : string, def : ?T) : T {\n return getConfig(BUTTON_CONFIG, label, key, def);\n}\n","/* @flow */\n\nimport { BUTTON_LAYOUT, BUTTON_STYLE_OPTIONS, BUTTON_LABEL, BUTTON_COLOR, BUTTON_SIZE, BUTTON_SHAPE } from '../constants';\nimport { determineEligibleFunding, determineEligibleCards } from '../funding';\nimport { memoize, sortBy } from '../lib/util';\nimport type { LocaleType, FundingSelection, FundingList, CheckoutCustomizationType } from '../types';\nimport { FUNDING_ORDER } from '../funding/config';\n\nimport { getButtonConfig, labelToFunding } from './config';\n\nfunction parseLocale(locale : string) : LocaleType {\n const [ lang, country ] = locale.split('_');\n return { country, lang };\n}\n\nexport function determineMaxButtons({ label, layout, max } : { layout : string, label : string, max : number }) : number {\n\n const allowed = (layout === BUTTON_LAYOUT.HORIZONTAL)\n ? getButtonConfig(label, 'allowPrimaryHorizontal')\n : getButtonConfig(label, 'allowPrimaryVertical');\n\n if (!allowed) {\n return 1;\n }\n\n const configMax = (layout === BUTTON_LAYOUT.HORIZONTAL)\n ? getButtonConfig(label, 'maxHorizontalButtons')\n : getButtonConfig(label, 'maxVerticalButtons');\n\n return max\n ? Math.min(configMax, max)\n : configMax;\n}\n\nfunction enableTagline({ tagline, branding, fundingicons, layout }) : boolean {\n return Boolean(tagline && branding && !fundingicons && layout === BUTTON_LAYOUT.HORIZONTAL);\n}\n\ntype NormalizedProps = {|\n size : $Values,\n label : $Values,\n color : $Values,\n shape : $Values,\n locale : LocaleType,\n branding : boolean,\n fundingicons : boolean,\n tagline : boolean,\n funding : FundingSelection,\n layout : $Values,\n sources : FundingList,\n max : number,\n multiple : boolean,\n env : string,\n height : ?number,\n cards : $ReadOnlyArray,\n installmentperiod : number,\n checkoutCustomization : ?CheckoutCustomizationType\n|};\n\nexport const normalizeProps = memoize((props : Object, defs? : { locale? : LocaleType } = {}) : NormalizedProps => {\n\n let {\n env,\n locale,\n style = {},\n funding,\n commit,\n checkoutCustomization\n } = props;\n\n locale = locale ? parseLocale(locale) : (defs.locale || getButtonConfig('DEFAULT', 'defaultLocale'));\n \n // funding indicated the allowed/disallowed payment methods (including cards) passed in the integration script\n // $FlowFixMe\n funding = funding || {};\n funding.allowed = funding.allowed || [];\n funding.disallowed = funding.disallowed || [];\n funding.remembered = funding.remembered || [];\n \n const label = style[BUTTON_STYLE_OPTIONS.LABEL] || getButtonConfig('DEFAULT', (style.layout === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalLabel' : 'defaultLabel');\n const layout = style[BUTTON_STYLE_OPTIONS.LAYOUT] || getButtonConfig(label, 'defaultLayout');\n\n let {\n [ BUTTON_STYLE_OPTIONS.SIZE ]: size = getButtonConfig(label, (layout === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalSize' : 'defaultSize'),\n [ BUTTON_STYLE_OPTIONS.COLOR ]: color = getButtonConfig(label, 'defaultColor'),\n [ BUTTON_STYLE_OPTIONS.SHAPE ]: shape = getButtonConfig(label, 'defaultShape'),\n [ BUTTON_STYLE_OPTIONS.BRANDING ]: branding = getButtonConfig(label, (layout === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalBranding' : 'defaultBranding'),\n [ BUTTON_STYLE_OPTIONS.FUNDINGICONS ]: fundingicons = getButtonConfig(label, 'defaultFundingIcons'),\n [ BUTTON_STYLE_OPTIONS.TAGLINE ]: tagline = getButtonConfig(label, 'defaultTagline'),\n [ BUTTON_STYLE_OPTIONS.MAXBUTTONS ]: max,\n [ BUTTON_STYLE_OPTIONS.HEIGHT ]: height,\n [ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD ]: installmentperiod\n } = style;\n\n // max is the maximum number of buttons to be displayed in the iframe\n max = determineMaxButtons({ label, layout, max });\n\n const selected = labelToFunding(label);\n let sources = determineEligibleFunding({ funding, selected, locale, env, layout, commit });\n // sources is an array of funding sources eligible to be displayed\n sources = sortBy(sources.slice(0, max), FUNDING_ORDER);\n // multiple is a boolean value indicating whether the sources is greater than 1\n const multiple = sources.length > 1;\n\n if (multiple) {\n branding = true;\n }\n\n tagline = enableTagline({ tagline, branding, fundingicons, layout });\n\n const cards = determineEligibleCards({ funding, locale });\n \n return { size, label, locale, color, shape, branding, fundingicons,\n tagline, funding, layout, sources, max, multiple, env, height, cards, installmentperiod, checkoutCustomization };\n});\n","/* @flow */\n\nimport { BUTTON_LABEL, BUTTON_LAYOUT, BUTTON_SIZE, BUTTON_STYLE_OPTIONS, ALLOWED_INSTALLMENT_COUNTRIES, ALLOWED_INSTALLMENT_PERIOD, LOCALE } from '../constants';\n\nimport { BUTTON_CONFIG, BUTTON_STYLE, getButtonConfig } from './config';\n\nexport function validateButtonLocale(locale : string) {\n\n if (!locale) {\n throw new Error(`Expected props.locale to be set`);\n }\n\n if (!locale.match(/^[a-z]{2}[_][A-Z][A-Z0-9]$/)) {\n throw new Error(`Expected props.locale to be valid, got ${ locale }`);\n }\n\n const [ lang, country ] = locale.split('_');\n\n if (!LOCALE[country] || LOCALE[country].indexOf(lang) === -1) {\n throw new Error(`Expected props.locale to be valid`);\n }\n}\n\nexport function validateRegionSpecificButton(style : Object = {}, locale : string = 'en_US') {\n\n const country = locale.split('_')[1];\n\n const isInstallmentAllowedCountry = ALLOWED_INSTALLMENT_COUNTRIES.indexOf(country) !== -1;\n\n if (!isInstallmentAllowedCountry && style.label === BUTTON_LABEL.INSTALLMENT) {\n throw new Error(`Unexpected label: style.${ style.label } for country: ${ country }`);\n }\n\n if (!isInstallmentAllowedCountry && style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD]) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD } is invalid for country: ${ country }`);\n }\n\n if (isInstallmentAllowedCountry && style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD] && style.label !== BUTTON_LABEL.INSTALLMENT) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD } is invalid for label: style.${ style.label }`);\n }\n\n if (isInstallmentAllowedCountry && style.label === BUTTON_LABEL.INSTALLMENT && style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD]\n && typeof style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD] !== 'number') {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD } is expected to be a number`);\n }\n\n if (isInstallmentAllowedCountry && style.label === BUTTON_LABEL.INSTALLMENT && style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD]\n && ALLOWED_INSTALLMENT_PERIOD[country].indexOf(style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD]) === -1) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD }: ${ style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD] } is not a valid installment number for ${ style.label }`);\n }\n\n}\n\nexport function validateButtonStyle(style : Object = {}, props : Object) {\n\n if (!style) {\n throw new Error(`Expected props.style to be set`);\n }\n\n const label = style[BUTTON_STYLE_OPTIONS.LABEL] || getButtonConfig('DEFAULT', (style[BUTTON_STYLE_OPTIONS.LAYOUT] === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalLabel' : 'defaultLabel');\n\n if (!BUTTON_CONFIG[label]) {\n throw new Error(`Invalid button label: ${ label }, expected: ${ Object.keys(BUTTON_CONFIG[label]).join(', ') }`);\n }\n\n const {\n [ BUTTON_STYLE_OPTIONS.COLOR ]: color,\n [ BUTTON_STYLE_OPTIONS.SHAPE ]: shape,\n [ BUTTON_STYLE_OPTIONS.SIZE ]: size,\n [ BUTTON_STYLE_OPTIONS.BRANDING ]: branding,\n [ BUTTON_STYLE_OPTIONS.FUNDINGICONS ]: fundingicons,\n [ BUTTON_STYLE_OPTIONS.TAGLINE ]: tagline,\n [ BUTTON_STYLE_OPTIONS.LAYOUT ]: layout,\n [ BUTTON_STYLE_OPTIONS.MAXBUTTONS ]: maxbuttons,\n [ BUTTON_STYLE_OPTIONS.HEIGHT ]: height\n } = style;\n\n if (color && getButtonConfig(label, 'colors').indexOf(color) === -1) {\n throw new Error(`Unexpected style.${ BUTTON_STYLE_OPTIONS.COLOR } for ${ label } button: ${ color }, expected ${ getButtonConfig(label, 'colors').join(', ') }`);\n }\n\n if (shape && getButtonConfig(label, 'shapes').indexOf(shape) === -1) {\n throw new Error(`Unexpected style.${ BUTTON_STYLE_OPTIONS.SHAPE } for ${ label } button: ${ shape }, expected ${ getButtonConfig(label, 'shapes').join(', ') }`);\n }\n\n if (size && getButtonConfig(label, 'sizes').indexOf(size) === -1) {\n throw new Error(`Unexpected style.${ BUTTON_STYLE_OPTIONS.SIZE } for ${ label } button: ${ size }, expected ${ getButtonConfig(label, 'sizes').join(', ') }`);\n }\n\n if (branding === false) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.BRANDING }:false is not allowed`);\n }\n\n if (fundingicons && !getButtonConfig(label, 'allowFundingIcons')) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.FUNDINGICONS }:true is not allowed for ${ label } button`);\n }\n\n if (layout && getButtonConfig(label, 'layouts').indexOf(layout) === -1) {\n throw new Error(`Unexpected style.${ BUTTON_STYLE_OPTIONS.LAYOUT } for ${ label } button: ${ layout }, expected ${ getButtonConfig(label, 'layouts').join(', ') }`);\n }\n\n if (maxbuttons !== undefined) {\n if (typeof maxbuttons !== 'number') {\n throw new TypeError(`Expected style.${ BUTTON_STYLE_OPTIONS.MAXBUTTONS } to be a number, got: ${ maxbuttons }`);\n }\n\n if (maxbuttons < 1) {\n throw new Error(`Expected style.${ BUTTON_STYLE_OPTIONS.MAXBUTTONS } to be a at least 1, got: ${ maxbuttons }`);\n }\n\n const minButtons = (layout === BUTTON_LAYOUT.VERTICAL)\n ? getButtonConfig(label, 'minVerticalButtons')\n : getButtonConfig(label, 'minHorizontalButtons');\n\n if (maxbuttons < minButtons) {\n throw new Error(`Expected style.${ BUTTON_STYLE_OPTIONS.MAXBUTTONS } to be no fewer than ${ minButtons }, got ${ maxbuttons }`);\n }\n }\n\n if (height !== undefined) {\n if (typeof height !== 'number') {\n throw new TypeError(`Expected style.${ BUTTON_STYLE_OPTIONS.HEIGHT } to be a number, got: ${ maxbuttons }`);\n }\n\n const buttonSize = size || getButtonConfig(label, (style.layout === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalSize' : 'defaultSize');\n\n const { minHeight, maxHeight } = (size === BUTTON_SIZE.RESPONSIVE) ? {\n minHeight: BUTTON_STYLE[BUTTON_SIZE.SMALL].minHeight,\n maxHeight: BUTTON_STYLE[BUTTON_SIZE.HUGE].maxHeight\n } : BUTTON_STYLE[buttonSize];\n\n if (height < minHeight || height > maxHeight) {\n throw new Error(`Expected style.${ BUTTON_STYLE_OPTIONS.HEIGHT } to be between ${ minHeight }px and ${ maxHeight }px - got ${ height }px`);\n }\n }\n\n if (!getButtonConfig(label, 'allowPrimary')) {\n throw new Error(`${ label } can not be used as primary button label`);\n }\n\n if (layout === BUTTON_LAYOUT.VERTICAL) {\n\n if (size && [ BUTTON_SIZE.MEDIUM, BUTTON_SIZE.LARGE, BUTTON_SIZE.RESPONSIVE ].indexOf(size) === -1) {\n throw new Error(`Button must be at least ${ BUTTON_SIZE.MEDIUM } size for ${ BUTTON_LAYOUT.VERTICAL } layout`);\n }\n\n if (!getButtonConfig(label, 'allowPrimaryVertical')) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.LABEL } option is not allowed for ${ BUTTON_LAYOUT.VERTICAL } layout - got ${ label }`);\n }\n\n if (fundingicons) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.FUNDINGICONS } not allowed for ${ BUTTON_LAYOUT.VERTICAL } layout - got ${ fundingicons }`);\n }\n\n if (tagline) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.TAGLINE } is not allowed for ${ BUTTON_LAYOUT.VERTICAL } layout - got ${ tagline }`);\n }\n }\n\n validateRegionSpecificButton(style, props.locale);\n}\n\nexport function validateButtonProps(props : Object) {\n\n if (!props) {\n throw new Error(`Expected props`);\n }\n\n const { locale, style } = props;\n\n validateButtonLocale(locale);\n validateButtonStyle(style, props);\n}\n","/* @flow */\n\nexport const CLASS = {\n SHOULD_FOCUS: 'paypal-should-focus',\n\n CONTAINER: 'paypal-button-container',\n BUTTON: 'paypal-button',\n \n BUTTON_LABEL: 'paypal-button-label-container',\n\n LABEL: 'paypal-button-label',\n COLOR: 'paypal-button-color',\n LOGO_COLOR: 'paypal-button-logo-color',\n SHAPE: 'paypal-button-shape',\n BRANDING: 'paypal-button-branding',\n LAYOUT: 'paypal-button-layout',\n NUMBER: 'paypal-button-number',\n ENV: 'paypal-button-env',\n\n TAGLINE: 'paypal-button-tagline',\n TAGLINE_COLOR: 'paypal-button-tagline-color',\n FUNDINGICONS: 'paypal-button-fundingicons',\n\n TEXT: 'paypal-button-text',\n LOGO: 'paypal-button-logo',\n CARD: 'paypal-button-card',\n\n SEPARATOR: 'paypal-separator',\n HIDDEN: 'hidden',\n DOM_READY: 'dom-ready',\n \n PERSONALIZATION_TEXT: 'personalization-text'\n};\n","/* @flow */\n\nimport { CLASS } from './class';\n\nexport const pageStyle = `\n html, body {\n padding: 0;\n margin: 0;\n width: 100%;\n overflow: hidden;\n text-align: center;\n }\n\n body {\n display: inline-block;\n vertical-align: top;\n }\n\n * {\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -khtml-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n cursor: default;\n box-sizing: border-box;\n }\n \n .${ CLASS.HIDDEN } {\n position: absolute;\n visibility: hidden;\n }\n`;\n","/* @flow */\n\nimport { BUTTON_COLOR, ENV } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const buttonStyle = `\n\n .${ CLASS.CONTAINER } {\n display: block;\n white-space: nowrap;\n margin: 0;\n background: 0;\n border: 0;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n text-transform: none;\n font-weight: 500;R\n -webkit-font-smoothing: antialiased;\n font-smoothing: antialiased;\n z-index: 0;\n font-size: 0;\n width: 100%;\n box-sizing: border-box;\n }\n\n .${ CLASS.BUTTON }:not(.${ CLASS.CARD }) {\n border: 1px solid transparent;\n border-radius: 0 3px 3px 0;\n position: relative;\n width: 100%;\n box-sizing: border-box;\n border: none;\n vertical-align: top;\n cursor: pointer;\n outline: none;\n overflow: hidden;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.TRANSPARENT } {\n cursor: auto;\n }\n\n .${ CLASS.BUTTON } * {\n cursor: pointer;\n }\n\n .${ CLASS.CONTAINER }.${ CLASS.ENV }-${ ENV.TEST } .${ CLASS.TEXT } {\n font-family: Arial !important;\n background: rgba(0, 0, 0, 0.5) !important;\n color: transparent !important;\n text-shadow: none !important;\n }\n\n .${ CLASS.BUTTON }:hover {\n box-shadow: inset 0 0 100px 100px rgba(255, 255, 255, 0.2);\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.GOLD }:hover,\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.SILVER }:hover {\n box-shadow: inset 0 0 100px 100px rgba(0, 0, 0, 0.05);\n }\n\n .${ CLASS.CARD }, .${ CLASS.CARD } * {\n cursor: pointer;\n }\n\n .${ CLASS.CARD }:hover {\n filter: brightness(1.2);\n }\n\n .${ CLASS.BUTTON }:focus, .${ CLASS.CARD }:focus {\n outline: none;\n }\n\n .${ CLASS.SHOULD_FOCUS } .${ CLASS.BUTTON }:focus,\n .${ CLASS.SHOULD_FOCUS } .${ CLASS.CARD }:focus {\n outline: solid 2px Highlight;\n outline: auto 5px -webkit-focus-ring-color;\n outline-offset: -3px;\n }\n\n .${ CLASS.BUTTON }:focus {\n box-shadow: -1px -1px 18px 1px rgba(0, 0, 0, 0.25) inset;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.TRANSPARENT }:focus {\n box-shadow: none;\n outline: none;\n }\n\n .${ CLASS.LOGO } {\n padding: 0;\n display: inline-block;\n background: none;\n border: none;\n width: auto;\n }\n\n .${ CLASS.TEXT } {\n display: inline-block;\n white-space: pre;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.BUTTON_LABEL } {\n position: relative;\n top: 50%;\n transform: translateY(-50%);\n -webkit-transform: translateY(-50%);\n -moz-transform: translateY(-50%);\n -ms-transform: translateY(-50%);\n -o-transform: translateY(-50%);\n }\n \n .${ CLASS.BUTTON } > .${ CLASS.BUTTON_LABEL } > * {\n vertical-align: top;\n height: 100%;\n text-align: left;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.CARD } {\n border-radius: 4px;\n }\n\n .powered-by-paypal > .${ CLASS.TEXT } {\n vertical-align: top;\n line-height: 18px;\n }\n\n .powered-by-paypal > .${ CLASS.LOGO } {\n height: 16px;\n min-height: 16px;\n }\n\n .${ CLASS.TAGLINE } {\n max-width: 100%;\n font-weight: normal;\n display: block;\n text-align: center;\n width: auto;\n }\n\n .${ CLASS.SEPARATOR } {\n height: 80%;\n border-left: 1px solid rgba(0, 0, 0, 0.15);\n margin: 0 8px;\n display: inline-block;\n position: relative;\n top: 10%;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.BLACK } .${ CLASS.SEPARATOR } {\n border-color: rgba(255, 255, 255, 0.45);\n }\n`;\n","/* @flow */\n\nimport { BUTTON_LAYOUT } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const layoutStyle = `\n\n .${ CLASS.CONTAINER }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.VERTICAL } .${ CLASS.TAGLINE } {\n display: none;\n }\n`;\n","/* @flow */\n\nimport { BUTTON_BRANDING } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const brandingStyle = `\n\n .${ CLASS.BUTTON }.${ CLASS.BRANDING }-${ BUTTON_BRANDING.UNBRANDED } {\n min-width: 60%;\n width: auto;\n font-weight: 900;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.BRANDING }-${ BUTTON_BRANDING.UNBRANDED } .${ CLASS.LOGO } {\n display: none;\n }\n`;\n","/* @flow */\n\nimport { BUTTON_STYLE } from '../../config';\nimport { BUTTON_LABEL, BUTTON_LOGO, BUTTON_SIZE, BUTTON_LAYOUT, BUTTON_NUMBER } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const labelStyle = `\n\n .${ CLASS.BUTTON }.${ CLASS.LABEL }-${ BUTTON_LABEL.CARD } {\n border-radius: 0 !important;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LABEL }-${ BUTTON_LABEL.CREDIT } .${ CLASS.TEXT } {\n display: none !important;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.LABEL }-${ BUTTON_LABEL.CREDIT } .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LOGO.PAYPAL } {\n display: none;\n }\n\n @media only screen and (max-width : ${ BUTTON_STYLE[BUTTON_SIZE.SMALL].minWidth }px) {\n\n .${ CLASS.BUTTON }.${ CLASS.LABEL }-${ BUTTON_LABEL.CREDIT } .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LOGO.PAYPAL } {\n display: none;\n }\n }\n\n @media only screen and (min-width : ${ BUTTON_STYLE[BUTTON_SIZE.SMALL].minWidth }px) {\n\n .${ CLASS.BUTTON }.${ CLASS.LABEL }-${ BUTTON_LABEL.CREDIT } .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LOGO.PAYPAL } {\n display: inline-block;\n }\n }\n`;\n","/* @flow */\n\nimport { BUTTON_BRANDING, BUTTON_SHAPE, BUTTON_LAYOUT, BUTTON_NUMBER, BUTTON_LABEL } from '../../../constants';\nimport { BUTTON_STYLE, BUTTON_RELATIVE_STYLE } from '../../config';\nimport { max, perc } from '../../../lib/util';\n\nimport { CLASS } from './class';\n\nconst DUAL_BUTTON_MIN_RATIO = 2.8;\n\nexport function buttonResponsiveStyle({ height, cardNumber = 4 } : { height? : ?number, cardNumber? : number }) : string {\n\n return Object.keys(BUTTON_STYLE).map(size => {\n\n const style = BUTTON_STYLE[size];\n const buttonHeight = height || style.defaultHeight;\n const buttonTextMarginTop = style.buttonTextMargin;\n const minDualWidth = Math.round(buttonHeight * DUAL_BUTTON_MIN_RATIO * 2);\n\n return `\n\n @media only screen and (min-width: ${ style.minWidth }px) {\n\n .${ CLASS.CONTAINER } {\n min-width: ${ style.minWidth }px;\n max-width: ${ style.maxWidth }px;\n font-size: ${ max(perc(buttonHeight, 32), 10) }px;\n }\n\n .${ CLASS.BUTTON }:not(.${ CLASS.CARD }) {\n height: ${ buttonHeight }px;\n min-height: ${ height || style.minHeight }px;\n max-height: ${ height || style.maxHeight }px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.BRANDING }-${ BUTTON_BRANDING.UNBRANDED } .${ CLASS.BUTTON_LABEL } {\n height: 100%;\n font-size: ${ max(perc(buttonHeight, 45), 10) }px;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.BUTTON_LABEL } {\n height: ${ perc(buttonHeight, 35) + 5 }px;\n max-height: ${ perc(buttonHeight, 60) }px;\n min-height: ${ perc(buttonHeight, 40) }px;\n }\n \n .${ CLASS.BUTTON } .${ CLASS.BUTTON_LABEL } .${ CLASS.TEXT } {\n margin-top: ${ buttonTextMarginTop }px;\n }\n \n .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LABEL.EPS },\n .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LABEL.MYBANK } {\n height: ${ perc(buttonHeight, 50) + 5 }px;\n max-height: ${ perc(buttonHeight, 70) }px;\n min-height: ${ perc(buttonHeight, 40) }px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.SHAPE }-${ BUTTON_SHAPE.PILL } {\n border-radius: ${ Math.ceil(buttonHeight / 2) }px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.SHAPE }-${ BUTTON_SHAPE.RECT } {\n border-radius: 4px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.VERTICAL } {\n margin-bottom: ${ perc(buttonHeight, BUTTON_RELATIVE_STYLE.VERTICAL_MARGIN) }px;\n }\n\n .${ CLASS.SEPARATOR } {\n margin: 0 ${ perc(buttonHeight, 5) }px;\n }\n\n .${ CLASS.TAGLINE } {\n display: ${ style.allowTagline ? 'block' : 'none' };\n height: ${ perc(buttonHeight, BUTTON_RELATIVE_STYLE.TAGLINE) }px;\n line-height: ${ perc(buttonHeight, BUTTON_RELATIVE_STYLE.TAGLINE) }px;\n }\n\n .${ CLASS.FUNDINGICONS } {\n display: ${ style.allowFunding ? 'block' : 'none' };\n height: ${ perc(buttonHeight, BUTTON_RELATIVE_STYLE.FUNDINGICONS) }px;\n }\n\n .${ CLASS.CARD } {\n display: inline-block;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.CARD } {\n width: ${ (90 / cardNumber).toFixed(2) }%;\n max-width: ${ perc(buttonHeight, 160) }px;\n margin-top: 0;\n margin-left: ${ (5 / cardNumber).toFixed(2) }%;\n margin-right: ${ (5 / cardNumber).toFixed(2) }%;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.CARD } img {\n width: 100%;\n }\n\n .${ CLASS.FUNDINGICONS } .${ CLASS.CARD } {\n height: ${ perc(buttonHeight, 70) }px;\n margin-top: ${ perc(buttonHeight, 15) }px;\n margin-left: ${ perc(buttonHeight, 7) }px;\n margin-right: ${ perc(buttonHeight, 7) }px;\n }\n\n .${ CLASS.FUNDINGICONS } .${ CLASS.CARD } img {\n height: 100%;\n }\n }\n\n @media only screen and (min-width: ${ style.minWidth }px) and (max-width: ${ minDualWidth }px) {\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.NUMBER }-0 {\n width: 100%;\n margin-right: 0;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.NUMBER }-1 {\n display: none;\n }\n\n .${ CLASS.CONTAINER }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE } .${ CLASS.TAGLINE } {\n display: none;\n }\n }\n\n @media only screen and (min-width: ${ max(style.minWidth, minDualWidth) }px) {\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.NUMBER }-0 {\n display: inline-block;\n width: calc(50% - 2px);\n margin-right: 4px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.NUMBER }-1 {\n display: inline-block;\n width: calc(50% - 2px);\n }\n\n .${ CLASS.CONTAINER }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE } .${ CLASS.TAGLINE } {\n display: block;\n }\n }\n `;\n\n }).join('\\n');\n}\n","/* @flow */\n\nimport { BUTTON_COLOR } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const buttonColorStyle = `\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.GOLD } {\n background: #ffc439;\n color: #111;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.BLUE } {\n background: #009cde;\n color: #fff;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.SILVER } {\n background: #eee;\n color: #111;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.BLACK } {\n background: #2C2E2F;\n color: #fff;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.DARKBLUE } {\n background: #003087;\n color: #fff;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.TRANSPARENT } {\n background: transparent;\n color: #111;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.WHITE } {\n background: #fff;\n color: #2C2E2F;\n border: 1px solid #2C2E2F;\n }\n`;\n","/* @flow */\n\nimport { pageStyle } from './page';\nimport { buttonStyle } from './button';\nimport { layoutStyle } from './layout';\nimport { brandingStyle } from './branding';\nimport { labelStyle } from './labels';\nimport { buttonResponsiveStyle } from './responsive';\nimport { buttonColorStyle } from './color';\n\nexport function componentStyle({ height, cardNumber } : { height? : ?number, cardNumber? : number }) : string {\n return `\n ${ pageStyle }\n ${ buttonStyle }\n ${ buttonColorStyle }\n ${ layoutStyle }\n ${ brandingStyle }\n ${ labelStyle }\n ${ buttonResponsiveStyle({ height, cardNumber }) }\n `;\n}\n","/* @flow */\n\nexport { componentStyle } from './base';\nexport { CLASS } from './class';\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, type JsxHTMLNode, JsxHTMLNodeContainer } from '../../lib/jsx';\n\nimport { CLASS } from './componentStyle';\n\nexport function LoadingDots(delay : number) : JsxHTMLNode {\n return (\n
\n \n {outlet}\n
\n );\n}\n","/* @flow */\n\nexport * from './componentTemplate';\nexport * from './containerTemplate';\n\n","\n/* @flow */\n\nimport { track, flush as flushLogs } from 'beaver-logger/client';\n\nimport { Checkout } from '../checkout';\nimport { setupPopupBridgeProxy } from '../integrations/popupBridge';\nimport { getPageRenderTime, setLogLevel } from '../lib';\nimport { ATTRIBUTE, FUNDING, FPTI, BUTTON_LAYOUT, BUTTON_COLOR, BUTTON_SIZE, BUTTON_SHAPE, BUTTON_LABEL } from '../constants';\n\nimport typeof { Button } from './component';\n\nexport function setupButtonChild(ButtonComponent : Button) {\n setupPopupBridgeProxy(Checkout, ButtonComponent);\n\n getPageRenderTime().then(pageRenderTime => {\n\n const fundingSources = Array.prototype.slice.call(document.querySelectorAll(`[${ ATTRIBUTE.FUNDING_SOURCE }]`)).map(el => {\n return el.getAttribute(ATTRIBUTE.CARD) || el.getAttribute(ATTRIBUTE.FUNDING_SOURCE);\n }).filter(source => {\n return source && source !== FUNDING.CARD;\n });\n\n const xprops = ButtonComponent.xprops;\n \n if (!xprops) {\n return;\n }\n\n const {\n layout = BUTTON_LAYOUT.HORIZONTAL,\n color = BUTTON_COLOR.GOLD,\n size = BUTTON_SIZE.SMALL,\n shape = BUTTON_SHAPE.PILL,\n label = BUTTON_LABEL.CHECKOUT,\n maxbuttons,\n tagline\n } = (xprops.style || {});\n\n track({\n [FPTI.KEY.STATE]: FPTI.STATE.BUTTON,\n [FPTI.KEY.TRANSITION]: FPTI.TRANSITION.BUTTON_LOAD,\n [FPTI.KEY.BUTTON_TYPE]: FPTI.BUTTON_TYPE.IFRAME,\n [FPTI.KEY.FUNDING_LIST]: fundingSources.join(':'),\n [FPTI.KEY.FUNDING_COUNT]: fundingSources.length,\n [FPTI.KEY.PAGE_LOAD_TIME]: pageRenderTime,\n [FPTI.KEY.BUTTON_LAYOUT]: layout,\n [FPTI.KEY.BUTTON_COLOR]: color,\n [FPTI.KEY.BUTTON_SIZE]: size,\n [FPTI.KEY.BUTTON_SHAPE]: shape,\n [FPTI.KEY.BUTTON_LABEL]: label,\n [FPTI.KEY.BUTTON_WIDTH]: window.innerWidth,\n [FPTI.KEY.MAX_BUTTONS]: maxbuttons,\n [FPTI.KEY.BUTTON_TAGLINE_ENABLED]: tagline ? '1' : '0'\n });\n\n flushLogs();\n });\n\n const xprops = ButtonComponent.xprops || Checkout.xprops;\n\n if (xprops && xprops.logLevel) {\n setLogLevel(xprops.logLevel);\n }\n\n // $FlowFixMe\n if (xprops.payment && !xprops.createOrder) {\n // $FlowFixMe\n xprops.createOrder = xprops.payment;\n }\n\n // $FlowFixMe\n if (xprops.onAuthorize && !xprops.onApprove) {\n // $FlowFixMe\n xprops.onApprove = xprops.onAuthorize;\n }\n\n try {\n if (xprops && xprops.onShippingChange && window.pre &&\n window.pre.inlineGuest && window.pre.inlineGuest.res &&\n window.pre.inlineGuest.res.data && window.pre.inlineGuest.res.data.treatments) {\n window.pre.inlineGuest.res.data.treatments = [];\n }\n } catch (err) {\n // pass\n }\n}\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { create } from 'zoid/src';\nimport { type Component } from 'zoid/src/component/component';\nimport { info, warn, track, error, flush as flushLogs, immediateFlush } from 'beaver-logger/client';\nimport { getDomain } from 'cross-domain-utils/src';\nimport { base64encode } from 'belter/src';\nimport { debounce, once } from 'zoid/src/lib';\n\nimport { pptm } from '../external';\nimport { config } from '../config';\nimport { SOURCE, ENV, FPTI, FUNDING, BUTTON_LABEL, BUTTON_COLOR,\n BUTTON_SIZE, BUTTON_SHAPE, BUTTON_LAYOUT, COUNTRY } from '../constants';\nimport { redirect as redir, checkRecognizedBrowser,\n getBrowserLocale, getSessionID, request, getScriptVersion,\n isIEIntranet, isEligible, getCurrentScriptUrl,\n getDomainSetting, extendUrl, isDevice, rememberFunding,\n getRememberedFunding, memoize, uniqueID, getThrottle, getBrowser } from '../lib';\nimport { rest } from '../api';\nimport { onAuthorizeListener } from '../experiments';\nimport { getPaymentType, awaitBraintreeClient,\n mapPaymentToBraintree, type BraintreePayPalClient } from '../integrations';\nimport { awaitPopupBridge } from '../integrations/popupBridge';\nimport { validateFunding, isFundingIneligible, isFundingAutoEligible } from '../funding';\n\nimport { containerTemplate, componentTemplate } from './template';\nimport { validateButtonLocale, validateButtonStyle } from './validate';\nimport { setupButtonChild } from './child';\nimport { normalizeProps } from './props';\n\npptm.listenForLoadWithNoContent();\n\nfunction isCreditDualEligible(props) : boolean {\n\n const { label, funding, layout, locale, max, sources, env } = normalizeProps(props, { locale: getBrowserLocale() });\n const { allowed } = funding;\n const { country } = locale;\n\n if (allowed && allowed.indexOf(FUNDING.CREDIT) !== -1) {\n return false;\n }\n\n if (layout !== BUTTON_LAYOUT.HORIZONTAL) {\n return false;\n }\n\n if (max === 1) {\n return false;\n }\n\n if (label === BUTTON_LABEL.CREDIT) {\n return false;\n }\n\n if (country !== COUNTRY.US) {\n return false;\n }\n\n if (isFundingIneligible(FUNDING.CREDIT, { funding, locale, layout, env })) {\n return false;\n }\n\n if (isFundingAutoEligible(FUNDING.CREDIT, { funding, locale, layout })) {\n return false;\n }\n\n if (sources.indexOf(FUNDING.CREDIT) !== -1) {\n return false;\n }\n\n const domain = getDomain().replace(/^https?:\\/\\//, '').replace(/^www\\./, '');\n\n if (config.creditTestDomains.indexOf(domain) === -1) {\n return false;\n }\n\n return true;\n}\n\nlet creditThrottle;\n\ntype ButtonOptions = {|\n style : {|\n maxbuttons? : number,\n layout? : string,\n label? : string,\n size? : string,\n shape? : string,\n color? : string,\n tagline? : boolean\n |},\n client : {\n [string] : (string | ZalgoPromise)\n },\n funding? : { allowed? : $ReadOnlyArray, disallowed? : $ReadOnlyArray },\n env? : string,\n locale? : string,\n logLevel : string,\n awaitPopupBridge : Function,\n meta : Object,\n validate? : ({ enable : () => ZalgoPromise, disable : () => ZalgoPromise }) => void,\n stage? : string,\n stageUrl? : string,\n localhostUrl? : string,\n checkoutUri? : string,\n authCode? : string,\n enableNativeCheckout? : boolean\n|};\n\nexport const Button : Component = create({\n\n tag: 'paypal-button',\n name: 'ppbutton',\n\n buildUrl(props) : string {\n const env = props.env || config.env;\n const url = config.buttonUrls[env];\n return url;\n },\n\n contexts: {\n iframe: true,\n popup: false\n },\n\n scrolling: false,\n listenForResize: true,\n\n containerTemplate,\n\n autoResize: {\n height: true,\n width: false\n },\n\n prerenderTemplate({ props, jsxDom } : { props : Object, jsxDom : Function }) : HTMLElement {\n\n const template = (\n
\n );\n\n template.addEventListener('click', () => {\n warn('button_pre_template_click');\n\n if (isIEIntranet()) {\n warn(`button_pre_template_click_intranet_mode`);\n\n flushLogs();\n\n // eslint-disable-next-line no-alert\n alert(`IE Intranet mode is not supported by PayPal. Please disable intranet mode, or continue in an alternate browser.`);\n }\n\n if (getDomainSetting('allow_full_page_fallback')) {\n info('pre_template_force_full_page');\n\n this.props.payment().then(token => {\n window.top.location = extendUrl(config.checkoutUrl, { token });\n });\n }\n });\n\n return (\n \n \n { template }\n \n \n );\n },\n\n get version() : string {\n return getScriptVersion();\n },\n\n get domain() : Object {\n return config.paypalDomains;\n },\n\n attributes: {\n iframe: {\n allowpaymentrequest: 'allowpaymentrequest'\n }\n },\n\n validate() {\n if (!isEligible()) {\n warn('button_render_ineligible');\n }\n },\n\n props: {\n domain: {\n type: 'string',\n required: false,\n def() : string {\n return window.location.host;\n },\n queryParam: true\n },\n\n sessionID: {\n type: 'string',\n required: false,\n def() : string {\n return getSessionID();\n },\n queryParam: true\n },\n\n buttonSessionID: {\n type: 'string',\n required: false,\n def() : ?string {\n return uniqueID();\n },\n queryParam: true\n },\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n }\n },\n\n meta: {\n type: 'object',\n required: false,\n def() : Object {\n return {};\n }\n },\n\n enableNativeCheckout: {\n type: 'boolean',\n required: false,\n def() : boolean {\n return false;\n }\n },\n\n client: {\n type: 'object',\n required: false,\n def() : Object {\n return {};\n },\n\n validate(client, props) {\n const env = props.env || config.env;\n\n if (!client[env]) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (typeof client[env] === 'string') {\n if (client[env].match(/^(.)\\1+$/)) {\n throw new Error(`Invalid client ID: ${ client[env] }`);\n }\n } else if (!ZalgoPromise.isPromise(client[env])) {\n throw new Error(`Expected client token to be either a string or a promise`);\n }\n },\n\n decorate(client : Object) : Object {\n if (client && client.sandbox === 'demo_sandbox_client_id') {\n client.sandbox = 'AZDxjDScFpQtjWTOUtWKbyN_bDt4OgqaF4eYXlewfBP4-8aqX3PiV8e1GWU6liB2CUXlkA59kJXE7M6R';\n }\n\n return client;\n }\n },\n\n source: {\n type: 'string',\n required: false,\n def() : string {\n return SOURCE.MANUAL;\n }\n },\n\n prefetchLogin: {\n type: 'boolean',\n required: false\n },\n\n stage: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.STAGE || env === ENV.LOCAL) {\n return config.stage;\n }\n }\n },\n\n updateClientConfiguration: {\n type: 'boolean',\n required: false,\n def: () => {\n return true;\n }\n },\n\n stageUrl: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.STAGE || env === ENV.LOCAL) {\n return config.stageUrl;\n }\n }\n },\n\n localhostUrl: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.LOCAL) {\n return config.localhostUrl;\n }\n }\n },\n\n checkoutUri: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : ?string {\n return config.checkoutUri;\n }\n },\n\n braintree: {\n type: 'object',\n required: false,\n validate(braintree, props) {\n\n if (!braintree.paypalCheckout) {\n throw new Error(`Expected Braintree paypal-checkout component to be loaded`);\n }\n\n if (!props.client) {\n throw new Error(`Expected client prop to be passed with Braintree authorization keys`);\n }\n },\n // $FlowFixMe\n decorate(braintree, props) : ZalgoPromise {\n const env = props.env || config.env;\n // $FlowFixMe\n return ZalgoPromise.hash(props.client).then(client => {\n return awaitBraintreeClient(braintree, client[env]);\n });\n }\n },\n\n payment: {\n type: 'function',\n required: true,\n memoize: false,\n timeout: __TEST__ ? 500 : 10 * 1000,\n alias: 'billingAgreement',\n\n decorate(original) : Function {\n return function payment(data = {}) : ZalgoPromise {\n\n const actions = {\n request,\n payment: {\n create: (options) => {\n return this.props.braintree\n ? this.props.braintree.then(client => {\n return client.createPayment(mapPaymentToBraintree(options.payment || options));\n })\n : ZalgoPromise.hash(this.props.client).then(client => {\n return rest.payment.create(this.props.env, client, options);\n });\n }\n },\n order: {\n create: (options) => {\n return ZalgoPromise.hash(this.props.client).then(client => {\n return rest.order.create(this.props.env, client, options);\n });\n }\n },\n braintree: {\n create: (options) => {\n if (!this.props.braintree) {\n throw new Error(`Can not create using Braintree - no braintree client provided`);\n }\n\n return this.props.braintree.then(client => {\n return client.createPayment(options);\n });\n }\n }\n };\n\n if (getDomainSetting('memoize_payment') && this.memoizedToken) {\n return this.memoizedToken;\n }\n\n this.memoizedToken = ZalgoPromise.try(original, this, [ data, actions ]);\n\n const startTime = Date.now();\n\n this.memoizedToken = this.memoizedToken.then(token => {\n\n if (!token) {\n error(`no_token_passed_to_payment`);\n throw new Error(`No value passed to payment`);\n }\n\n const elapsed = Date.now() - startTime;\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.RECIEVE_PAYMENT,\n [ FPTI.KEY.CONTEXT_TYPE ]: FPTI.CONTEXT_TYPE[getPaymentType(token)],\n [ FPTI.KEY.CONTEXT_ID ]: token,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.RESPONSE_DURATION ]: elapsed,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n flushLogs();\n\n return token;\n });\n\n return this.memoizedToken;\n };\n }\n },\n\n authCode: {\n type: 'string',\n required: false,\n def() : string {\n return config.authCode;\n }\n },\n\n funding: {\n type: 'object',\n required: false,\n queryParam: true,\n validate({ allowed = [], disallowed = [] } : Object = {}) {\n validateFunding({ allowed, disallowed, remembered: [] });\n },\n def() : Object {\n return {};\n },\n decorate({ allowed = [], disallowed = [] } : Object = {}, props : ButtonOptions) : {} {\n\n allowed = Array.isArray(allowed) ? allowed : [];\n disallowed = Array.isArray(disallowed) ? disallowed : [];\n\n if (allowed && allowed.indexOf(FUNDING.VENMO) !== -1) {\n allowed = allowed.filter(source => (source !== FUNDING.VENMO));\n }\n if (allowed && allowed.indexOf(FUNDING.ITAU) !== -1) {\n allowed = allowed.filter(source => (source !== FUNDING.ITAU));\n }\n\n if (isCreditDualEligible(props)) {\n creditThrottle = getThrottle('dual_credit_automatic', 50);\n\n if (creditThrottle.isEnabled()) {\n allowed = [ ...allowed, FUNDING.CREDIT ];\n }\n }\n\n let remembered = getRememberedFunding(sources => sources);\n\n if (!isDevice() || getDomainSetting('disable_venmo')) {\n if (remembered && remembered.indexOf(FUNDING.VENMO) !== -1) {\n remembered = remembered.filter(source => (source !== FUNDING.VENMO));\n }\n\n if (disallowed && disallowed.indexOf(FUNDING.VENMO) === -1) {\n disallowed = [ ...disallowed, FUNDING.VENMO ];\n }\n }\n\n return {\n allowed,\n disallowed,\n remembered,\n remember(sources) {\n rememberFunding(sources);\n }\n };\n }\n },\n\n commit: {\n type: 'boolean',\n required: false,\n queryParam: true,\n queryValue: (val) => {\n return val ? 'true' : 'false';\n }\n },\n\n onRender: {\n type: 'function',\n promisify: true,\n required: false,\n noop: true,\n decorate(original) : Function {\n return function decorateOnRender() : mixed {\n const { browser = 'unrecognized', version = 'unrecognized' } = getBrowser();\n info(`button_render_browser_${ browser }_${ isDevice() ? 'mobile' : 'desktop' }_${ version }`);\n\n const style = this.props.style || {};\n\n info(`button_render`);\n info(`button_render_color_${ style.color || 'default' }`);\n info(`button_render_shape_${ style.shape || 'default' }`);\n info(`button_render_size_${ style.size || 'default' }`);\n info(`button_render_label_${ style.label || 'default' }`);\n info(`button_render_branding_${ style.branding || 'default' }`);\n info(`button_render_fundingicons_${ style.fundingicons || 'default' }`);\n info(`button_render_tagline_${ style.tagline || 'default' }`);\n\n pptm.listenForButtonRender();\n pptm.reloadPptmScript(this.props.client[this.props.env]);\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_RENDER,\n [ FPTI.KEY.BUTTON_TYPE ]: FPTI.BUTTON_TYPE.IFRAME,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.BUTTON_SOURCE ]: this.props.source\n });\n\n if (isIEIntranet()) {\n warn(`button_render_intranet_mode`);\n }\n\n if (creditThrottle) {\n creditThrottle.logStart({\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID\n });\n }\n\n flushLogs();\n\n return original.apply(this, arguments);\n };\n }\n },\n\n onAuthorize: {\n type: 'function',\n alias: 'onApprove',\n required: true,\n\n decorate(original) : Function {\n return function decorateOnAuthorize(data, actions) : void | ZalgoPromise {\n\n if (data && !data.intent) {\n warn(`button_authorize_no_intent`, { paymentID: data.paymentID, token: data.paymentToken });\n }\n\n info('button_authorize');\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CHECKOUT_AUTHORIZE,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n if (isIEIntranet()) {\n warn(`button_authorize_intranet_mode`);\n }\n\n if (!isEligible()) {\n info('button_authorize_ineligible');\n }\n\n checkRecognizedBrowser('authorize');\n\n flushLogs();\n\n const restart = actions.restart;\n actions.restart = () => {\n return restart().then(() => {\n return new ZalgoPromise();\n });\n };\n\n actions.redirect = (win, url) => {\n return ZalgoPromise.try(() => {\n if (actions.close) {\n return actions.close();\n }\n }).then(() => {\n return redir(win || window.top, url || data.returnUrl);\n });\n };\n\n actions.payment.tokenize = memoize(() => {\n if (!this.props.braintree) {\n throw new Error(`Must pass in Braintree client to tokenize payment`);\n }\n\n return this.props.braintree\n .then(client => client.tokenizePayment(data));\n });\n\n const execute = actions.payment.execute;\n actions.payment.execute = () => {\n return execute().then(result => {\n\n if (!result || !result.id || !result.intent || !result.state) {\n warn(`execute_result_missing_data`);\n return new ZalgoPromise();\n }\n\n return result;\n });\n };\n\n const get = actions.payment.get;\n\n actions.payment.get = () => {\n return get().then(result => {\n if (!result || !result.id || !result.intent || !result.state) {\n warn(`get_result_missing_data`);\n return new ZalgoPromise();\n }\n\n return result;\n });\n };\n\n actions.request = request;\n\n onAuthorizeListener.trigger({\n paymentToken: data.paymentToken\n });\n\n if (creditThrottle) {\n creditThrottle.logComplete({\n [FPTI.KEY.BUTTON_SESSION_UID]: this.props.buttonSessionID\n });\n }\n\n return ZalgoPromise.try(() => {\n\n if (this.props.braintree) {\n return actions.payment.tokenize().then(({ nonce }) => {\n // $FlowFixMe\n Object.defineProperty(data, 'nonce', {\n get: () => {\n info('nonce_getter');\n flushLogs();\n return nonce;\n }\n });\n });\n }\n\n }).then(() => {\n return original.call(this, data, actions);\n }).catch(err => {\n if (this.props.onError) {\n return this.props.onError(err);\n }\n throw err;\n });\n };\n }\n },\n\n onShippingChange: {\n type: 'function',\n required: false,\n\n decorate(original) : void | Function {\n if (!original) {\n return;\n }\n\n return function decorateOnShippingChange(data, actions) : ZalgoPromise {\n\n info('button_shipping_change');\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CHECKOUT_SHIPPING_CHANGE,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n flushLogs();\n const timeout = __TEST__ ? 500 : 10 * 1000;\n\n const patch = actions.payment.patch;\n actions.payment.patch = (patchObject) => {\n return ZalgoPromise.try(() => {\n return patch(patchObject);\n });\n };\n\n const resolve = () => ZalgoPromise.resolve();\n const reject = actions.reject || function reject() {\n throw new Error(`Missing reject action callback`);\n };\n\n return ZalgoPromise.try(() => {\n return original.call(this, data, { ...actions, resolve, reject });\n }).timeout(timeout,\n new Error(`Timed out waiting ${ timeout }ms for payment`)).catch(err => {\n if (this.props.onError) {\n this.props.onError(err);\n }\n throw err;\n });\n };\n }\n },\n\n onError: {\n type: 'function',\n required: false,\n promisify: true,\n sendToChild: true,\n once: true,\n def() : (() => void) {\n return function onError(err : mixed) {\n if (isIEIntranet()) {\n warn(`button_error_intranet_mode`);\n flushLogs();\n\n // eslint-disable-next-line no-alert\n alert(`IE Intranet mode is not supported by PayPal. Please disable intranet mode, or continue in an alternate browser.`);\n }\n\n setTimeout(() => {\n throw err;\n });\n };\n }\n },\n\n onCancel: {\n type: 'function',\n required: false,\n noop: true,\n\n decorate(original) : Function {\n return function decorateOnCancel(data, actions) : void | ZalgoPromise {\n\n info('button_cancel');\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CHECKOUT_CANCEL,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n flushLogs();\n\n const redirect = (win, url) => {\n return ZalgoPromise.all([\n redir(win || window.top, url || data.cancelUrl),\n actions.close()\n ]);\n };\n\n return original.call(this, data, { ...actions, redirect });\n };\n }\n },\n\n onClick: {\n type: 'function',\n required: false,\n noop: true,\n decorate(original) : Function {\n return function decorateOnClick(data : ?{ fundingSource : string, card? : string, flow? : string, button_version? : string }) : void {\n\n info('button_click');\n if (data && data.flow) {\n info(`pay_flow_${ data.flow }`);\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.BUTTON,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_CLICK,\n [ FPTI.KEY.BUTTON_TYPE ]: FPTI.BUTTON_TYPE.IFRAME,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.CHOSEN_FUNDING ]: data && (data.card || data.fundingSource),\n [ FPTI.KEY.PAYMENT_FLOW ]: data && data.flow,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n if (isIEIntranet()) {\n warn('button_click_intranet_mode');\n }\n\n if (creditThrottle) {\n creditThrottle.log('click', {\n [ FPTI.KEY.STATE ]: FPTI.STATE.BUTTON,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_CLICK,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID\n });\n }\n\n const { color = 'default' } = this.props.style || {};\n info(`button_click_color_${ color }`);\n\n flushLogs();\n\n return original.apply(this, arguments);\n };\n }\n },\n\n onResize: {\n type: 'function',\n required: false,\n get value() : Function {\n let initialHeight;\n const logInlineGuestOutOfViewPortOnlyOnce = once((data) => {\n info('buttons_expansion_outside_viewport', data);\n immediateFlush();\n });\n\n return function onResizeHandler() {\n const container = this.container;\n\n if (!container) {\n return;\n }\n\n if (!initialHeight) {\n initialHeight = container.offsetHeight;\n }\n\n const getScrollOffsetY = () => {\n if (window.pageYOffset) {\n return window.pageYOffset;\n }\n\n if (document.documentElement) {\n return document.documentElement.scrollTop;\n }\n\n return 0;\n };\n\n // explanation https://github.com/paypal/paypal-checkout-components/pull/1136#discussion_r298025574\n const checkIfExpansionInViewport = () => {\n try {\n const scrollOffsetY = getScrollOffsetY();\n const windowHeight = window.innerHeight;\n\n const containerOffsetY = container.getBoundingClientRect().top;\n const VISIBLE_THRESHOLD = 200; // 200px, for the first input field to be visible\n\n return scrollOffsetY + windowHeight > initialHeight + containerOffsetY + VISIBLE_THRESHOLD;\n } catch (err) {\n info('cannot_get_the_viewport_information');\n return false;\n }\n };\n\n const isContainerExpanded = container && container.offsetHeight > initialHeight;\n const isExpansionInViewport = checkIfExpansionInViewport();\n\n if (!isContainerExpanded || isExpansionInViewport) {\n return;\n }\n\n logInlineGuestOutOfViewPortOnlyOnce({\n height: container.offsetHeight,\n window: {\n width: window.innerWidth,\n height: window.innerHeight\n }\n });\n };\n },\n decorate: (original) => debounce(original)\n },\n\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n },\n\n validate: validateButtonLocale\n },\n\n style: {\n type: 'object',\n required: false,\n queryParam: true,\n alias: 'buttonStyle',\n\n def() : Object {\n return {\n color: BUTTON_COLOR.GOLD,\n shape: BUTTON_SHAPE.PILL,\n size: BUTTON_SIZE.SMALL,\n label: BUTTON_LABEL.CHECKOUT,\n fundingicons: false,\n layout: BUTTON_LAYOUT.HORIZONTAL\n };\n },\n \n decorate(style : Object) : Object {\n const { label, layout = BUTTON_LAYOUT.HORIZONTAL } = style;\n if (!label && layout === BUTTON_LAYOUT.HORIZONTAL) {\n style.label = BUTTON_LABEL.CHECKOUT;\n return style;\n } else if (!label && layout === BUTTON_LAYOUT.VERTICAL) {\n style.label = BUTTON_LABEL.PAYPAL;\n return style;\n }\n return style;\n },\n\n validate(style = {}, props) {\n validateButtonStyle(style, props);\n flushLogs();\n }\n },\n\n validate: {\n type: 'function',\n required: false,\n decorate(validate) : Function {\n // $FlowFixMe\n return function decorateValidate(actions) : mixed {\n if (!this.validateCalled) {\n this.validateCalled = true;\n return validate(actions);\n }\n };\n }\n },\n\n logLevel: {\n type: 'string',\n required: false,\n get value() : string {\n return config.logLevel;\n }\n },\n\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n },\n\n awaitPopupBridge: {\n type: 'object',\n required: false,\n value: () => awaitPopupBridge(Button)\n },\n\n getPageUrl: {\n type: 'function',\n queryParam: false,\n required: false,\n def: () => {\n return () => window.location.href;\n }\n },\n\n test: {\n type: 'object',\n required: false,\n def() : Object {\n return { action: 'checkout' };\n }\n }\n }\n});\n\nif (Button.isChild()) {\n setupButtonChild(Button);\n}\n","/* @flow */\n\nimport { info, warn, flush as flushLogs } from 'beaver-logger/client';\nimport { CONSTANTS } from 'zoid/src';\nimport { getParent, getTop } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { config } from './config';\nimport { noop, isIE, getDomainSetting, extendUrl, patchMethod, once, extend } from './lib';\nimport { Button } from './button';\nimport { Checkout } from './checkout';\nimport { BUTTON_LABEL, BUTTON_SIZE, BUTTON_COLOR } from './constants';\nimport { rest } from './api';\n\nif (isIE() && getDomainSetting('ie_full_page')) {\n // $FlowFixMe\n Checkout.renderTo = (win) => {\n info('force_ie_full_page');\n flushLogs();\n\n // $FlowFixMe\n const checkout = Checkout.init({\n onAuthorize: noop\n });\n\n checkout.delegate(win);\n\n checkout.openContainer().then(() => {\n checkout.event.triggerOnce(CONSTANTS.EVENTS.CLOSE);\n checkout.showContainer();\n });\n\n // $FlowFixMe\n Button.xprops.payment().then(token => {\n window.top.location = extendUrl(config.checkoutUrl, { token });\n }).catch(err => {\n checkout.error(err);\n });\n };\n}\n\nconst parent = getParent(window);\nconst top = getTop(window);\n\nif (top && parent) {\n let canRenderTop = (top === parent);\n\n if (!canRenderTop) {\n Checkout.canRenderTo(top).then(result => {\n canRenderTop = result;\n });\n\n patchMethod(Checkout, 'renderTo', ({ args: [ win, props, el ], original, context }) => {\n\n if (!canRenderTop) {\n win = getParent(window);\n }\n\n return original.call(context, win, props, el);\n });\n }\n}\n\npatchMethod(Checkout, 'renderTo', ({ callOriginal, args: [ , props ] }) => {\n if (getDomainSetting('allow_full_page_fallback')) {\n const handleError = once((err) => {\n try {\n // eslint-disable-next-line no-console\n console.error(err && err.stack);\n } catch (err2) {\n // pass\n }\n\n // $FlowFixMe\n return Button.xprops.payment().then(token => {\n window.top.location = extendUrl(config.checkoutUrl, { token });\n });\n });\n\n props.onError = handleError;\n return callOriginal().catch(handleError);\n }\n return callOriginal();\n});\n\nlet debounce = false;\n\npatchMethod(Checkout, 'renderTo', ({ callOriginal, args: [ , props ] }) => {\n\n if (debounce) {\n warn('button_mutliple_click_debounce');\n return new ZalgoPromise(noop);\n }\n\n debounce = true;\n\n for (const methodName of [ 'onAuthorize', 'onCancel', 'onError', 'onClose' ]) {\n const original = props[methodName];\n props[methodName] = function unDebounce() : mixed {\n debounce = false;\n if (original) {\n return original.apply(this, arguments);\n }\n };\n }\n\n return callOriginal();\n});\n\npatchMethod(rest.payment, 'create', ({ original: createOriginal, context: createContext, args: [ env, client, options, experience ] }) => {\n if (!options.payment) {\n options = { payment: options, experience };\n }\n return createOriginal.call(createContext, env, client, options);\n});\n\npatchMethod(Button.props.style, 'validate', ({ callOriginal, args: [ style ] }) => {\n\n if (!style) {\n return callOriginal();\n }\n\n if (style && style.color === 'creditblue') {\n style.color = BUTTON_COLOR.DARKBLUE;\n }\n\n if (style && style.label === 'generic') {\n style.label = BUTTON_LABEL.PAYPAL;\n }\n\n if (style && (!style.label || style.label === BUTTON_LABEL.CHECKOUT) && style.size === 'tiny') {\n warn(`unsupported_button_size_tiny`);\n style.size = BUTTON_SIZE.SMALL;\n }\n\n return callOriginal();\n});\n\npatchMethod(Button, 'render', ({ callOriginal, args: [ props ] }) => {\n\n if (props.billingAgreement) {\n props.payment = props.billingAgreement;\n delete props.billingAgreement;\n }\n\n return callOriginal();\n});\n\npatchMethod(Button.props.payment, 'decorate', ({ original, context, args: [ originalPayment ] }) => {\n return original.call(context, function payment(data : Object, actions : Object) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n patchMethod(actions.payment, 'create', ({ original: createOriginal, context: createContext, args: [ options, experience ] }) => {\n if (!options.payment) {\n options = { payment: options, experience };\n }\n return createOriginal.call(createContext, options);\n });\n\n function resolveData(token) {\n resolve(token);\n }\n\n function rejectActions(err) {\n reject(err);\n }\n\n extend(resolveData, data);\n extend(resolveData, actions);\n extend(rejectActions, actions);\n\n const ctx = {\n props: {\n env: this.props.env,\n client: this.props.client\n }\n };\n\n let result;\n\n try {\n result = originalPayment.call(ctx, resolveData, rejectActions);\n } catch (err) {\n return reject(err);\n }\n\n if (result && typeof result.then === 'function') {\n return result.then(resolve, reject);\n }\n\n if (result !== undefined) {\n return resolve(result);\n }\n });\n });\n});\n\nif (Button.isChild()) {\n if (!window.Promise) {\n window.Promise = ZalgoPromise;\n }\n}\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { create } from 'zoid/src';\nimport { type Component } from 'zoid/src/component/component';\nimport type { CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { base64encode } from 'belter/src';\n\nimport { config } from '../config';\nimport { getButtonSessionID, getBrowserLocale, getSessionID, getCurrentScriptUrl } from '../lib';\n\ntype CardOptions = {|\n client : {\n [string] : (string | ZalgoPromise)\n },\n env? : string,\n locale? : string,\n logLevel : string,\n awaitPopupBridge : Function,\n onAuthorize : ({ returnUrl : string }, { redirect : (?CrossDomainWindowType, ?string) => ZalgoPromise }) => ?ZalgoPromise,\n onCancel? : ({ cancelUrl : string }, { redirect : (?CrossDomainWindowType, ?string) => ZalgoPromise }) => ?ZalgoPromise,\n onEvent? : ({ type : string, payload : Object }) => void,\n meta : Object,\n commit : boolean,\n token : string\n|};\n\nexport const Card : Component = create({\n tag: 'card-fields',\n name: 'ppcard',\n\n buildUrl(props) : string {\n const env = props.env || config.env;\n return config.inlinedCardFieldUrls[env];\n },\n\n contexts: {\n iframe: true,\n popup: false\n },\n\n dimensions: {\n height: '300px',\n width: '100%'\n },\n\n autoResize: {\n height: true,\n width: false\n },\n\n props: {\n sessionID: {\n type: 'string',\n required: false,\n def() : string {\n return getSessionID();\n },\n queryParam: true\n },\n\n\n token: {\n type: 'string',\n required: true,\n queryParam: true\n },\n\n buttonSessionID: {\n type: 'string',\n required: false,\n def() : ?string {\n return getButtonSessionID();\n },\n queryParam: true\n },\n\n commit: {\n type: 'boolean',\n required: false,\n queryParam: true\n },\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n },\n\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n allowDelegate: true,\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n }\n },\n\n initialFormValues: {\n type: 'object',\n required: false\n },\n\n\n onAuthorize: {\n type: 'function',\n required: true,\n once: true\n },\n\n onAuth: {\n type: 'function',\n required: false,\n sameDomain: true\n },\n\n onEvent: {\n type: 'function',\n required: false,\n sameDomain: true\n },\n\n getState: {\n type: 'function',\n required: false,\n sameDomain: true\n },\n\n dispatch: {\n type: 'object',\n required: false,\n sameDomain: true\n },\n\n onCancel: {\n type: 'function',\n required: false,\n once: true,\n noop: true\n },\n\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n },\n \n style: {\n type: 'object',\n required: false,\n queryParam: true,\n def() : Object {\n return {\n cardIcons: {\n display: false\n },\n submitButton: {\n display: true\n },\n currencyConversion: {\n display: true\n }\n };\n }\n }\n }\n});\n","/* @flow */\n\nimport { info, track, debug, warn, error, flush as flushLogs } from 'beaver-logger/client';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { config } from './config';\nimport { FPTI } from './constants';\nimport { initLogger, checkForCommonErrors, setLogLevel, stringifyError,\n stringifyErrorMessage, getResourceLoadTime, isPayPalDomain, isEligible,\n getDomainSetting, once, openMetaFrame, precacheRememberedFunding,\n getCurrentScript, getRememberedFunding } from './lib';\nimport { Button } from './button';\nimport { Checkout } from './checkout';\nimport { pptm } from './external';\n\nfunction domainToEnv(domain : string) : ?string {\n for (const env of Object.keys(config.paypalUrls)) {\n if (config.paypalUrls[env] === domain) {\n return env;\n }\n }\n}\n\nfunction setDomainEnv(domain : string) {\n const currentDomainEnv = domainToEnv(domain);\n\n if (currentDomainEnv && currentDomainEnv !== 'test') {\n config.env = currentDomainEnv;\n }\n}\n\nsetDomainEnv(`${ window.location.protocol }//${ window.location.host }`);\n\nZalgoPromise.onPossiblyUnhandledException(err => {\n\n error('unhandled_error', {\n stack: stringifyError(err),\n errtype: ({}).toString.call(err)\n });\n\n track({\n [ FPTI.KEY.ERROR_CODE ]: 'checkoutjs_error',\n [ FPTI.KEY.ERROR_DESC ]: stringifyErrorMessage(err)\n });\n\n return flushLogs().catch(err2 => {\n if (window.console) {\n try {\n if (window.console.error) {\n window.console.error('Error flushing:', stringifyError(err2));\n } else if (window.console.log) {\n window.console.log('Error flushing:', stringifyError(err2));\n }\n } catch (err3) {\n setTimeout(() => {\n throw err3;\n }, 1);\n }\n }\n });\n});\n\nconst currentScript = getCurrentScript();\nconst currentProtocol = window.location.protocol.split(':')[0];\n\n\ntype ConfigOptions = {|\n env? : ?string,\n stage? : ?string,\n apiStage? : ?string,\n stageUrl? : ?string,\n localhostUrl? : ?string,\n checkoutUri? : ?string,\n state? : ?string,\n logLevel? : ?string,\n merchantID? : ?string,\n precacheRemembered? : boolean,\n authCode? : ?string\n|};\n\nfunction configure({ env, stage, stageUrl, apiStage, localhostUrl, checkoutUri, state, logLevel, merchantID, authCode } : ConfigOptions = {}) {\n\n if (env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n\n delete config.env;\n config.env = env;\n } else if (Button.xprops && Button.xprops.env) {\n delete config.env;\n // $FlowFixMe\n config.env = Button.xprops.env;\n } else if (Checkout.xprops && Checkout.xprops.env) {\n delete config.env;\n // $FlowFixMe\n config.env = Checkout.xprops.env;\n }\n\n if (stage) {\n delete config.stage;\n config.stage = stage;\n } else if (Button.xprops && Button.xprops.stage) {\n delete config.stage;\n // $FlowFixMe\n config.stage = Button.xprops.stage;\n } else if (Checkout.xprops && Checkout.xprops.stage) {\n delete config.stage;\n // $FlowFixMe\n config.stage = Checkout.xprops.stage;\n }\n\n if (stageUrl) {\n delete config.stageUrl;\n // $FlowFixMe\n config.stageUrl = stageUrl;\n } else if (Button.xprops && Button.xprops.stageUrl) {\n delete config.stageUrl;\n // $FlowFixMe\n config.stageUrl = Button.xprops.stageUrl;\n } else if (Checkout.xprops && Checkout.xprops.stageUrl) {\n delete config.stageUrl;\n // $FlowFixMe\n config.stageUrl = Checkout.xprops.stageUrl;\n }\n\n authCode = authCode || (Button.xprops && Button.xprops.authCode) || (Checkout.xprops && Checkout.xprops.authCode);\n\n if (authCode) {\n delete config.authCode;\n config.authCode = authCode;\n }\n\n if (apiStage) {\n delete config.apiStage;\n config.apiStage = apiStage;\n }\n\n localhostUrl = localhostUrl || (Button.xprops && Button.xprops.localhostUrl) || (Checkout.xprops && Checkout.xprops.localhostUrl);\n if (localhostUrl) {\n config.localhostUrl = localhostUrl;\n }\n\n checkoutUri = checkoutUri || (Button.xprops && Button.xprops.checkoutUri) || (Checkout.xprops && Checkout.xprops.checkoutUri);\n if (checkoutUri) {\n config.checkoutUri = checkoutUri;\n }\n\n if (state) {\n delete config.state;\n config.state = state;\n }\n\n if (merchantID) {\n config.merchantID = merchantID;\n }\n\n if (logLevel) {\n setLogLevel(logLevel);\n } else {\n setLogLevel(config.logLevel);\n }\n}\n\nexport const init = once(({ precacheRemembered }) => {\n\n if (!isEligible()) {\n warn('ineligible');\n }\n\n checkForCommonErrors();\n\n initLogger();\n\n if (pptm.shouldCreateInitialPptmScript()) {\n pptm.createPptmScript();\n }\n\n if (precacheRemembered) {\n precacheRememberedFunding();\n }\n\n if (getDomainSetting('force_bridge') && !isPayPalDomain()) {\n openMetaFrame(config.env);\n }\n\n info(`setup_${ config.env }`);\n\n debug(`current_protocol_${ currentProtocol }`);\n});\n\n// $FlowFixMe\nexport function setup(options : ConfigOptions = {}) {\n configure(options);\n init(options);\n}\n\nif (currentScript) {\n setup({\n env: currentScript.getAttribute('data-env'),\n stage: currentScript.getAttribute('data-stage'),\n apiStage: currentScript.getAttribute('data-api-stage'),\n stageUrl: currentScript.getAttribute('data-stage-url'),\n localhostUrl: isPayPalDomain() ? currentScript.getAttribute('data-localhost-url') : undefined,\n checkoutUri: isPayPalDomain() ? currentScript.getAttribute('data-checkout-uri') : undefined,\n state: currentScript.getAttribute('data-state'),\n logLevel: currentScript.getAttribute('data-log-level'),\n merchantID: currentScript.getAttribute('data-merchant-id'),\n authCode: currentScript.getAttribute('data-auth-code'),\n precacheRemembered: currentScript.hasAttribute('data-precache-remembered-funding')\n });\n\n} else {\n setup();\n}\n\nif (!isPayPalDomain()) {\n\n if (currentScript) {\n\n const scriptProtocol = currentScript.src.split(':')[0];\n const loadTime = getResourceLoadTime(currentScript.src);\n\n debug(`current_script_protocol_${ scriptProtocol }`);\n debug(`current_script_protocol_${ currentProtocol === scriptProtocol ? 'match' : 'mismatch' }`);\n debug(`current_script_version_${ config.version.replace(/[^0-9a-zA-Z]+/g, '_') }`);\n\n if (loadTime) {\n debug(`current_script_time`, { loadTime });\n debug(`current_script_time_${ Math.floor(loadTime / 1000) }`);\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.SCRIPT_LOAD,\n [ FPTI.KEY.TRANSITION_TIME ]: loadTime,\n [ FPTI.KEY.FUNDING_REMEMBERED ]: getRememberedFunding().join(',')\n });\n\n } else {\n\n debug(`no_current_script`);\n debug(`no_current_script_version_${ config.version.replace(/[^0-9a-zA-Z]+/g, '_') }`);\n\n if (document.currentScript) { // eslint-disable-line compat/compat\n debug(`current_script_not_recognized`, { src: document.currentScript.src }); // eslint-disable-line compat/compat\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.SCRIPT_LOAD\n });\n }\n}\n","/* @flow */\n\nimport { debug, info, warn, error, track, flush } from 'beaver-logger/client';\nimport { destroyAll as _destroyAll } from 'zoid/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport * as _postRobot from 'post-robot/src'; // eslint-disable-line import/no-namespace\n\nimport { isPayPalDomain } from './lib';\nimport { Checkout as _Checkout } from './checkout';\nimport { BillingPage as _BillingPage } from './billing';\nimport { ThreeDomainSecure as _ThreeDomainSecure } from './threeDomainSecure';\n\nimport './hacks'; // eslint-disable-line import/no-unassigned-import\n\nexport const postRobot = _postRobot;\nexport { ZalgoPromise as Promise } from 'zalgo-promise/src';\nexport { PopupOpenError } from 'zoid/src';\n\nexport { rest } from './api';\nexport { Button } from './button';\nexport { Card } from './card';\nexport { setup } from './setup';\nexport { config } from './config';\nexport { ENV, USERS, SOURCE, FUNDING, CARD } from './constants';\nexport { request, isEligible, isFundingRemembered, allowIframe as forceIframe, allowIframe as isWebView, allowIframe } from './lib';\nexport { logExperimentTreatment } from './experiments';\nexport { logFundingEligibility } from './funding';\n\nexport const onPossiblyUnhandledException = ZalgoPromise.onPossiblyUnhandledException;\n\nexport const version = __PAYPAL_CHECKOUT__.__MINOR_VERSION__;\n\nexport let checkout;\nexport let apps;\n\nif (__PAYPAL_CHECKOUT__.__LEGACY_SUPPORT__) {\n const legacy = require('./legacy');\n checkout = legacy.checkout;\n apps = legacy.apps;\n}\n\n// -------------------------------------------------------------\n\nexport let Checkout;\nexport let BillingPage;\nexport let PayPalCheckout;\nexport let destroyAll;\nexport let enableCheckoutIframe;\nexport let logger;\nexport let ThreeDomainSecure;\n\nfunction _enableCheckoutIframe() {\n _Checkout.contexts.iframe = true;\n}\n\nif (isPayPalDomain() || __TEST__) {\n Checkout = _Checkout;\n BillingPage = _BillingPage;\n ThreeDomainSecure = _ThreeDomainSecure;\n PayPalCheckout = _Checkout;\n enableCheckoutIframe = _enableCheckoutIframe;\n destroyAll = _destroyAll;\n logger = { debug, info, warn, error, track, flush };\n}\n","/* @flow */\n/* eslint import/no-default-export: off */\n\nimport * as INTERFACE from './interface'; // eslint-disable-line import/no-namespace\n\nexport * from './interface';\nexport default INTERFACE;\n","/* @flow */\n\nexport const LOG_PREFIX = `paypal_legacy`;\n\nexport const ATTRIBUTES = {\n BUTTON: 'data-paypal-button',\n MERCHANT_ID: 'data-paypal-id',\n ENV: 'data-env',\n SANDBOX: 'data-sandbox'\n};\n\nexport const CLASSES = {\n HIDDEN_BUTTON: 'paypal-button-hidden'\n};\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { debug } from 'beaver-logger/client';\nimport { bridge } from 'post-robot/src';\n\nimport { config } from '../config';\nimport { openMetaFrame, noop } from '../lib';\n\nexport function setupPostBridge(env : string) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n const metaFrameDomain : string = config.paypalDomains[env];\n\n if (!bridge || !bridge.needsBridge({ domain: metaFrameDomain })) {\n return debug(`post_bridge_not_required`, { env });\n }\n\n debug(`setup_post_bridge`, { env });\n\n return openMetaFrame(env).then(noop);\n });\n}\n","/* @flow */\n\nimport { isDevice, isEligible, supportsPopups } from '../lib';\n\nexport function isLegacyEligible() : boolean {\n\n if (!isEligible()) {\n return false;\n }\n\n if (!supportsPopups()) {\n return false;\n }\n\n if (isDevice()) {\n return false;\n }\n\n return true;\n}\n","/* @flow */\n\nimport { prefix } from 'beaver-logger/client';\n\nimport { COUNTRY, LANG, LOCALE } from '../constants';\nimport type { LocaleType } from '../types';\n\nimport { LOG_PREFIX } from './constants';\n\nconst { warn } = prefix(LOG_PREFIX);\n\nconst DEFAULT_COUNTRY = COUNTRY.US;\nconst DEFAULT_LANG = LANG.EN;\n\nexport function normalizeLocale(locale : string) : LocaleType {\n\n let [ lang, country ] = locale.split('_');\n\n if (!country) {\n if (LOCALE[lang]) {\n country = lang;\n lang = null;\n } else {\n country = DEFAULT_COUNTRY;\n }\n }\n\n if (!LOCALE[country]) {\n warn(`invalid_user_country`, { country });\n country = DEFAULT_COUNTRY;\n }\n\n if (!lang) {\n lang = DEFAULT_LANG;\n }\n\n if (LOCALE[country].indexOf(lang) === -1) {\n warn(`invalid_user_lang`, { lang });\n\n if (LOCALE[country].indexOf(DEFAULT_LANG) !== -1) {\n lang = DEFAULT_LANG;\n } else {\n lang = LOCALE[country][0];\n }\n }\n\n return { country, lang };\n}\n","/* @flow */\n\nimport { prefix } from 'beaver-logger/client';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { config } from '../config';\nimport { FPTI, BUTTON_COLOR, BUTTON_SHAPE, BUTTON_SIZE, BUTTON_LABEL } from '../constants';\nimport { loadScript, memoize, isElementVisible, stringifyError } from '../lib';\n\nimport { LOG_PREFIX } from './constants';\nimport { normalizeLocale } from './common';\n\nconst { info, debug, error } = prefix(LOG_PREFIX);\n\nconst loadButtonJS = memoize(() : ZalgoPromise => {\n\n debug(`buttonjs_load`);\n\n return loadScript(config.buttonJSUrl).catch(err => {\n info(`buttonjs_load_error_retry`, { error: stringifyError(err) });\n return loadScript(config.buttonJSUrl);\n }).then(result => {\n debug(`buttonjs_load_success`);\n return result;\n }).catch(err => {\n error(`buttonjs_load_error`, { error: stringifyError(err) });\n throw err;\n });\n});\n\nfunction renderButton(id, { container, locale, type, color, shape, size }) : ZalgoPromise {\n\n return loadButtonJS().then(() => {\n\n if (locale) {\n const { country, lang } = normalizeLocale(locale);\n locale = `${ lang }_${ country }`;\n }\n\n locale = locale || `${ config.locale.lang }_${ config.locale.country }`;\n color = color || BUTTON_COLOR.GOLD;\n shape = shape || BUTTON_SHAPE.PILL;\n size = size || BUTTON_SIZE.SMALL;\n type = type || BUTTON_LABEL.CHECKOUT;\n\n debug(`render_button_lc_${ locale }`);\n debug(`render_button_color_${ color }`);\n debug(`render_button_shape_${ shape }`);\n debug(`render_button_size_${ size }`);\n debug(`render_button_label_${ type }`);\n\n const el = window.paypal.button.create(id, { lc: locale, color, shape, size }, { type: 'button', label: type }).el;\n container.appendChild(el);\n\n try {\n info(`in_page_button_${ isElementVisible(el) ? 'visible' : 'not_visible' }`);\n\n } catch (err) {\n // pass\n }\n\n return el.childNodes[0];\n });\n}\n\n// eslint-disable-next-line flowtype/no-mutable-array\nexport function renderButtons(id : string, buttons : Array) : ZalgoPromise> {\n\n return ZalgoPromise.map(buttons, button => {\n return ZalgoPromise.try(() => {\n\n if (button.container) {\n return renderButton(id, button);\n } else {\n return button.button;\n }\n\n }).then(element => {\n\n let container;\n let type;\n const condition = button.condition;\n const click = button.click;\n\n if (button.container) {\n container = button.container;\n type = FPTI.BUTTON_TYPE.HTML;\n } else {\n container = button.button;\n type = FPTI.BUTTON_TYPE.CUSTOM;\n }\n\n return { container, element, type, condition, click };\n });\n });\n}\n\nexport function getHijackTargetElement(button : HTMLElement | HTMLButtonElement) : ?HTMLElement {\n\n // $FlowFixMe\n const form = button.form;\n\n if (form) {\n debug(`target_element_button_form`);\n return form;\n }\n\n const tagName = button.tagName && button.tagName.toLowerCase();\n\n if (tagName === 'a') {\n debug(`target_element_link`);\n return button;\n }\n\n const parentElement = button.parentElement;\n const parentTagName = parentElement && parentElement.tagName && parentElement.tagName.toLowerCase();\n\n if ((tagName === 'img' || tagName === 'button') && parentTagName === 'a') {\n debug(`target_element_parent_link`);\n // $FlowFixMe\n return parentElement;\n }\n\n const grandparentElement = parentElement && parentElement.parentElement;\n const grandparentTagName = grandparentElement && grandparentElement.tagName && grandparentElement.tagName.toLowerCase();\n\n if (tagName === 'button' && grandparentTagName === 'a') {\n debug(`target_element_grandparent_link`);\n // $FlowFixMe\n return button.parentElement && button.parentElement.parentElement;\n }\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { flush as flushLogs, prefix } from 'beaver-logger/client';\n\nimport { config } from '../config';\nimport { ENV } from '../constants';\nimport { urlWillRedirectPage, redirect as redir } from '../lib';\n\nimport { LOG_PREFIX } from './constants';\n\nconst { warn } = prefix(LOG_PREFIX);\n\nlet redirected = false;\n\nexport function logRedirect(location : string) {\n\n if (redirected) {\n warn(`multiple_redirects`);\n }\n\n if (urlWillRedirectPage(location)) {\n redirected = true;\n }\n\n flushLogs();\n}\n\nexport function redirect(url : string) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n if (!url) {\n throw new Error(`Redirect url undefined`);\n }\n\n if (config.env === ENV.TEST && urlWillRedirectPage(url)) {\n return redir(window, `#fullpageRedirect?url=${ url }`);\n }\n\n logRedirect(url);\n\n return redir(window, url);\n });\n}\n\nexport function isToken(item : string) : boolean {\n return Boolean(item && item.match(/^(EC-)?[A-Z0-9]{17}$/));\n}\n\n\n/* Parse Token\n -----------\n\n We are passed either a token, or a url containing the token. In order to run the new checkout component we need to\n strip out the token from the url in order to pass it down as a prop\n*/\n\nexport function parseToken(token : string) : ?string {\n\n if (!token) {\n return;\n }\n\n token = decodeURIComponent(decodeURIComponent(token));\n\n // We may get lucky and be passed a token straight off the bar\n\n if (token.match(/^(EC-)?[A-Z0-9]{17}$/)) {\n return token;\n }\n\n // Otherwise strip the token from the url we're sent\n\n let match = token.match(/token=((EC-)?[A-Z0-9]{17})/);\n\n if (match) {\n return match[1];\n }\n\n match = token.match(/(EC-[A-Z0-9]{17})/);\n\n if (match) {\n return match[1];\n }\n}\n\nexport function hasToken(item : string) : boolean {\n return Boolean(parseToken(item));\n}\n","/* @flow */\n\nimport { prefix } from 'beaver-logger/client';\n\nimport { config } from '../config';\nimport { ENV } from '../constants';\nimport { getElements } from '../lib';\n\nimport { normalizeLocale } from './common';\nimport { LOG_PREFIX } from './constants';\n\nconst { info, warn } = prefix(LOG_PREFIX);\n\nexport function normalizeOptions(options : Object) {\n\n // Normalize environment\n\n if (options.environment) {\n\n if (options.environment === 'live') {\n options.environment = ENV.PRODUCTION;\n }\n\n if (!config.paypalUrls[options.environment]) {\n warn('invalid_env', { badenv: options.environment });\n options.environment = config.env;\n }\n }\n\n // If we're passed a single button in options.button, turn it into an array\n\n if (options.button && !Array.isArray(options.button)) {\n info(`options_button_single_button_passed`);\n\n options.button = [ options.button ];\n }\n\n // If we're passed an array of elements in options.buttons, switch it over to options.button\n\n if (options.buttons && getElements(options.buttons).length) {\n info(`options_buttons_with_elements_passed`);\n\n options.button = options.buttons;\n delete options.buttons;\n }\n\n // If we're passed an empty options.button array, clear the value\n\n if (options.button && options.button.length === 0) {\n info(`options_button_empty`);\n\n delete options.button;\n }\n\n // If we're passed options.button and options.container, concat both under button\n\n if (options.button && options.container) {\n info(`options_button_and_container_passed`, { button: options.button, container: options.container });\n\n options.button = options.button.concat(options.container);\n delete options.container;\n }\n\n // Normalize button selectors to elements\n\n if (options.button) {\n const button = getElements(options.button);\n\n if (button.length) {\n options.button = button;\n\n } else {\n warn(`options_button_element_not_found`, { element: JSON.stringify(options.button) });\n delete options.button;\n }\n }\n\n // Normalize options.button to options.buttons\n\n if (options.button) {\n\n options.buttons = options.button.map(button => {\n return {\n button,\n click: options.click,\n condition: options.condition\n };\n });\n\n delete options.click;\n delete options.condition;\n delete options.button;\n }\n\n // Normalize array of buttons\n\n else if (options.buttons && Array.isArray(options.buttons)) {\n\n const buttons = [];\n\n options.buttons.forEach(button => {\n\n if (!button) {\n return;\n }\n\n if (button.container && button.container !== options.container) {\n warn(`mismatched_container_and_button_passed`, { options: options.container, button: button.container });\n }\n\n getElements(button.container || button.button).forEach(element => {\n buttons.push({\n\n [ button.container ? 'container' : 'button' ]: element,\n\n click: button.click || options.click,\n condition: button.condition || options.condition,\n type: button.type || options.type,\n locale: button.locale || options.locale,\n color: button.color || options.color,\n shape: button.shape || options.shape,\n size: button.size || options.size\n });\n });\n });\n\n delete options.buttons;\n delete options.click;\n delete options.condition;\n delete options.button;\n delete options.type;\n delete options.locale;\n delete options.color;\n delete options.shape;\n delete options.size;\n\n if (buttons.length) {\n options.buttons = buttons;\n }\n }\n\n // Otherwise normalize container into array of buttons\n\n else if (options.container && !Array.isArray(options.buttons)) {\n\n const buttons = [];\n\n getElements(options.container).forEach((container, i) => {\n buttons.push({\n container,\n click: options.click,\n condition: options.condition,\n type: Array.isArray(options.type) ? options.type[i] : options.type,\n locale: Array.isArray(options.locale) ? options.locale[i] : options.locale,\n color: Array.isArray(options.color) ? options.color[i] : options.color,\n shape: Array.isArray(options.shape) ? options.shape[i] : options.shape,\n size: Array.isArray(options.size) ? options.size[i] : options.size\n });\n });\n\n delete options.container;\n delete options.buttons;\n delete options.click;\n delete options.condition;\n delete options.button;\n delete options.type;\n delete options.locale;\n delete options.color;\n delete options.shape;\n delete options.size;\n\n if (buttons.length) {\n options.buttons = buttons;\n }\n }\n\n if (!options.buttons) {\n options.buttons = [];\n }\n}\n\nexport function setupConfig(options : Object) {\n\n if (options.environment && config.paypalUrls[options.environment]) {\n config.env = options.environment;\n }\n\n if (options.locale) {\n config.locale = normalizeLocale(options.locale);\n config.customCountry = true;\n }\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { prefix, flush as flushLogs } from 'beaver-logger/client';\nimport formSerialize from 'form-serialize';\n\nimport { Checkout } from '../checkout';\nimport { config } from '../config';\nimport { ENV, FPTI } from '../constants';\nimport { supportsPopups, once, safeJSON, extendUrl, stringifyError, request } from '../lib';\n\nimport { setupPostBridge } from './postBridge';\nimport { isLegacyEligible } from './eligibility';\nimport { LOG_PREFIX } from './constants';\nimport { renderButtons, getHijackTargetElement } from './button';\nimport { redirect, logRedirect, parseToken } from './util';\nimport { normalizeOptions, setupConfig } from './options';\n\nconst { info, debug, warn, error, track } = prefix(LOG_PREFIX);\n\nexport const checkout = {};\nexport const apps = { checkout, Checkout: checkout };\n\nexport function reset() {\n\n debug('reset');\n\n // Once our callback has been called, we can set the global methods to their original values\n\n checkout.initXO = initXO; // eslint-disable-line no-use-before-define\n checkout.startFlow = startFlow; // eslint-disable-line no-use-before-define\n checkout.closeFlow = closeFlow; // eslint-disable-line no-use-before-define\n}\n\ncheckout.reset = reset;\n\n// $FlowFixMe\nObject.defineProperty(checkout, 'urlPrefix', {\n get() : string {\n return `${ config.checkoutUrl }${ config.checkoutUrl.indexOf('?') === -1 ? '?' : '&' }token=`;\n }\n});\n\nfunction matchUrlAndPaymentToken(item) : { url : string, paymentToken : ?string } {\n\n if (!item || !item.trim()) {\n error(`startflow_no_url_or_token`, { item });\n throw new Error(`startflow_no_url_or_token`);\n }\n\n\n const paymentToken = parseToken(item);\n let url = (paymentToken && paymentToken === item) ? '' : item;\n\n if (url) {\n\n if (!url.match(/^https?:\\/\\/|^\\//)) {\n if (paymentToken) {\n info(`startflow_relative_url_with_token`, { url });\n } else {\n info(`startflow_relative_url_no_token`, { url });\n }\n\n if (url.toLowerCase().indexOf('ec-') === 0 && paymentToken) {\n url = `${ config.checkoutUrl }${ url }`;\n }\n\n } else if (paymentToken) {\n if (url.indexOf('.paypal.com') !== -1) {\n debug(`startflow_paypalurl_with_token`, { url });\n } else {\n debug(`startflow_url_with_token`, { url });\n }\n\n } else {\n debug(`startflow_url_no_token`, { url });\n }\n\n } else {\n\n if (paymentToken) {\n url = extendUrl(config.checkoutUrl, { token: paymentToken });\n debug(`startflow_with_token`, { url });\n } else {\n error(`startflow_no_url_or_token`, { url });\n throw new Error(`Could not determine url or token from \"${ item }\"`);\n }\n }\n\n return { paymentToken, url };\n}\n\nfunction checkUrlAgainstEnv(url : string) {\n\n const paypalUrls = config.paypalUrls;\n\n for (const env of Object.keys(paypalUrls)) {\n const paypalUrl = paypalUrls[env];\n\n if (env === ENV.TEST || env === ENV.DEMO) {\n continue;\n }\n\n if (env !== config.env) {\n if (url.indexOf(paypalUrl) === 0 || url.indexOf(paypalUrl.replace('//www.', '//')) === 0) {\n warn(`mismatched_env_startflow_url`, { env: config.env, url });\n redirect(url);\n throw new Error(`${ url } is not a ${ config.env } url`);\n }\n }\n }\n}\n\n/* Get Token\n ---------\n\n Normally in the component world, getToken would be a user-provided function which passes a callback, and expects\n that callback to be called with either an error, or an EC token.\n\n In our case, we can emulate these callback calls by setting over the startFlow and closeFlow globals, and using\n them as our success and failure cases.\n\n Note: this method is set to `precall: true` mode. This means that it will be called the moment the component is\n inited on the page. This means that the moment we initialize, we're ready to start accepting a token via one of the\n global methods.\n*/\n\nfunction awaitPaymentTokenAndUrl(event? : ?Event, targetElement? : ?HTMLElement) : { url : ZalgoPromise, paymentToken : ZalgoPromise } {\n\n const paymentTokenAndUrl = new ZalgoPromise((resolve) => {\n\n if (event && targetElement && (Math.random() < 0.001 || window.enablev3ajax)) {\n let method;\n let url;\n let body;\n let contentType;\n\n info('gettoken_targetelement_start');\n flushLogs();\n \n if (targetElement.tagName.toLowerCase() === 'a') {\n method = 'get';\n url = targetElement.getAttribute('href');\n } else if (targetElement.tagName.toLowerCase() === 'form') {\n method = (targetElement.getAttribute('method') || 'get').toLowerCase();\n url = targetElement.getAttribute('action');\n body = formSerialize(targetElement);\n contentType = targetElement.getAttribute('enctype') || 'application/x-www-form-urlencoded';\n }\n \n if (method && url) {\n event.preventDefault();\n\n request({\n method,\n url,\n body,\n headers: {\n 'Accept': 'application/paypal-json-token',\n 'Content-type': contentType || ''\n }\n }).then(json => {\n const urlAndPaymentToken = matchUrlAndPaymentToken(json.token);\n resolve(urlAndPaymentToken);\n info('gettoken_targetelement_success', urlAndPaymentToken);\n flushLogs();\n\n }).catch(err => {\n warn('gettoken_targetelement_error', {\n // $FlowFixMe\n err: err.stack || err.toString()\n });\n flushLogs();\n });\n \n } else {\n warn('gettoken_targetelement_no_method_or_url');\n flushLogs();\n }\n }\n\n\n checkout.initXO = () => {\n warn(`gettoken_initxo`);\n };\n\n // startFlow is our 'success' case - we get a token, and we can pass it back to the caller\n\n checkout.startFlow = once((item) => {\n debug(`gettoken_startflow`, { item });\n\n const { url, paymentToken } = matchUrlAndPaymentToken(item);\n\n checkUrlAgainstEnv(url);\n\n return resolve({ url, paymentToken });\n });\n });\n\n const url = paymentTokenAndUrl.then(result => result.url);\n const paymentToken = paymentTokenAndUrl.then(result => result.paymentToken);\n\n return { url, paymentToken };\n}\n\n\n/* Init PayPal Checkout\n --------------------\n\n Initialize the Checkout component with some standard props:\n\n - Pass in env from global state (saved during setup() call)\n - Return to success url on payment authorize\n - Return to cancel url on cancel\n*/\n\nlet paypalCheckoutInited = false;\nlet closeFlowCalled = false;\n\nfunction initPayPalCheckout(props = {}) : Object {\n\n info(`init_checkout`);\n\n if (paypalCheckoutInited && config.env !== ENV.TEST) {\n warn(`multiple_init_paypal_checkout`);\n }\n\n if (closeFlowCalled) {\n debug(`init_after_closeflow`);\n }\n\n paypalCheckoutInited = true;\n\n const paypalCheckout = Checkout.init({\n\n onAuthorize(data, actions) : ZalgoPromise {\n info(`payment_authorized`);\n logRedirect(data.returnUrl);\n return actions.redirect(window);\n },\n\n onCancel(data, actions) : ?ZalgoPromise {\n if (data.cancelUrl) {\n info(`payment_canceled`);\n logRedirect(data.cancelUrl);\n return actions.redirect(window);\n }\n },\n\n fallback(url) : ZalgoPromise {\n error(`fallback_handler`, { url });\n this.destroy();\n return redirect(url);\n },\n\n ...props\n });\n\n checkout.closeFlow = (closeUrl? : string) => {\n warn(`closeflow`);\n\n closeFlowCalled = true;\n\n reset();\n\n paypalCheckout.destroy();\n\n if (closeUrl) {\n warn(`closeflow_with_url`, { closeUrl });\n return redirect(closeUrl);\n }\n };\n\n return paypalCheckout;\n}\n\nfunction renderPayPalCheckout(props : Object = {}, hijackTarget? : ?Element) : ZalgoPromise {\n\n const urlProp = ZalgoPromise.resolve(props.url);\n\n const paymentToken = new ZalgoPromise(resolve => {\n props.init = (data) => {\n resolve(data.paymentToken);\n };\n });\n\n const errorHandler = once(err => {\n\n error(`component_error`, { error: stringifyError(err) });\n\n if (hijackTarget) {\n warn(`render_error_hijack_revert_target`);\n hijackTarget.removeAttribute('target');\n }\n\n // eslint-disable-next-line promise/no-promise-in-callback\n urlProp.then(url => {\n warn(`render_error_redirect_using_url`);\n return redirect(url);\n });\n\n // eslint-disable-next-line promise/no-promise-in-callback\n paymentToken.then(token => {\n warn(`render_error_redirect_using_token`);\n return redirect(extendUrl(config.checkoutUrl, { token }));\n });\n });\n\n props.onError = errorHandler;\n\n let paypalCheckout;\n\n if (hijackTarget) {\n\n delete props.url;\n\n paypalCheckout = initPayPalCheckout(props);\n\n paypalCheckout.hijack(hijackTarget);\n paypalCheckout.runTimeout();\n\n urlProp.then(url => {\n warn(`hijack_then_url_passed`);\n paypalCheckout.loadUrl(url);\n });\n\n } else {\n\n paypalCheckout = initPayPalCheckout(props);\n }\n\n const render = paypalCheckout.render(null, !hijackTarget);\n\n checkout.win = paypalCheckout.window;\n\n return render.catch(errorHandler);\n}\n\n\nfunction handleClick(clickHandler, event) {\n debug(`button_click_handler`);\n\n try {\n clickHandler(event);\n } catch (err) {\n error(`click_handler_error`, { error: stringifyError(err) });\n }\n}\n\nfunction handleClickHijack(event, element) : void {\n\n const targetElement = getHijackTargetElement(element);\n\n if (!targetElement) {\n return error(`target_element_not_found`);\n }\n\n info(`init_paypal_checkout_hijack`);\n\n const { url, paymentToken } = awaitPaymentTokenAndUrl(event, targetElement);\n\n let token;\n \n paymentToken.then(result => {\n token = result;\n });\n\n renderPayPalCheckout({ url, payment: () => ZalgoPromise.resolve(token) }, targetElement);\n}\n\nfunction listenClick(container, button, clickHandler, condition, tracker) : void {\n\n const element : HTMLElement = (container.tagName.toLowerCase() === 'a') ? container : button;\n\n const isClick = (typeof clickHandler === 'function');\n\n if (element.hasAttribute('data-paypal-click-listener')) {\n return warn(`button_already_has_paypal_click_listener`);\n }\n\n element.setAttribute('data-paypal-click-listener', '');\n\n const targetElement = getHijackTargetElement(element);\n\n if (targetElement && isClick) {\n info(`button_link_or_form`);\n }\n\n element.addEventListener('click', (event : Event) => {\n\n tracker();\n\n const eligible = isLegacyEligible();\n\n if (supportsPopups()) {\n debug(`click_popups_supported`);\n\n if (!eligible) {\n debug(`click_popups_supported_but_ineligible`);\n }\n } else {\n debug(`click_popups_not_supported`);\n\n if (eligible) {\n debug(`click_popups_not_supported_but_eligible`);\n }\n }\n\n if (!isClick) {\n\n if (!eligible) {\n return debug(`ineligible_listenclick`);\n }\n }\n\n info(`button_click`);\n\n if (typeof condition === 'function') {\n if (condition.call()) {\n info(`button_click_condition_enabled`);\n } else {\n return info(`button_click_condition_disabled`);\n }\n }\n\n if (isClick) {\n return handleClick(clickHandler, event);\n\n } else {\n return handleClickHijack(event, element);\n }\n });\n}\n\nfunction instrumentButtonRender(type : string) {\n info(`render_${ type }_button`);\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_RENDER,\n [ FPTI.KEY.BUTTON_TYPE ]: type\n });\n\n flushLogs();\n}\n\nfunction instrumentButtonClick(type : string) {\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_CLICK,\n [ FPTI.KEY.BUTTON_TYPE ]: type\n });\n flushLogs();\n}\n\n\n/* Setup\n -----\n\n Emulate window.paypal.checkout.setup.\n\n The purpose of this method is to:\n\n - Set up configuration for the incontext flow\n - Render a button to initiate the checkout window\n*/\n\nlet setupCalled = false;\n\nexport function setup(id : string, options : Object = {}) : ZalgoPromise {\n\n id = id || 'merchant';\n\n info(`setup`, {\n id,\n env: options.environment,\n options: safeJSON(options)\n });\n\n if (setupCalled) {\n debug(`setup_called_multiple_times`);\n }\n\n setupCalled = true;\n\n normalizeOptions(options);\n setupConfig(options);\n\n setupPostBridge(config.env);\n\n return ZalgoPromise.try(() => {\n\n // If there are no buttons passed, can only assume there's a custom paypal button with a custom listener\n\n if (!options.buttons.length) {\n return instrumentButtonRender(FPTI.BUTTON_TYPE.CUSTOM);\n }\n\n // Otherwise render whatever buttons we were asked to, and listen for them to be clicked\n\n return renderButtons(id, options.buttons).then(buttons => {\n\n buttons.forEach(button => {\n instrumentButtonRender(button.type);\n\n listenClick(button.container, button.element, button.click, button.condition, () => {\n instrumentButtonClick(button.type);\n });\n });\n });\n });\n}\n\ncheckout.setup = setup;\n\n/* Init XO\n -------\n\n Emulate paypal.checkout.initXO\n\n Normally this would be used only to open the checkout page. But here we can just kick off the whole flow, since\n getToken will handle loading the token into the window for us.\n*/\n\nfunction initXO() : void {\n\n debug(`initxo`);\n\n if (!isLegacyEligible()) {\n return debug(`ineligible_initxo`);\n }\n\n const { url, paymentToken } = awaitPaymentTokenAndUrl();\n\n info(`init_paypal_checkout_initxo`);\n\n renderPayPalCheckout({ url, payment: () => paymentToken });\n}\n\ncheckout.initXO = initXO;\n\n\n/* Start Flow\n ----------\n\n Emulate paypal.checkout.startFlow\n\n Normally this would be used to load the url into the browser after the window has already been opened. Again, we\n can just kick off the whole flow here, on the off chance that a merchant calls us on button click. Normally this\n method will have been patched over in getToken.\n*/\n\nfunction startFlow(item : string) {\n debug(`startflow`, { item });\n\n const { paymentToken, url } = matchUrlAndPaymentToken(item);\n\n checkUrlAgainstEnv(url);\n\n if (!isLegacyEligible()) {\n debug(`ineligible_startflow_global`, { url });\n redirect(url);\n return;\n }\n\n info(`init_paypal_checkout_startflow`);\n\n renderPayPalCheckout({ url, payment: () => ZalgoPromise.resolve(paymentToken) });\n}\n\ncheckout.startFlow = startFlow;\n\n\n/* Close Flow\n ----------\n\n Emulate paypal.checkout.closeFlow\n\n Close the component in case of any error on the merchant side.\n*/\n\nfunction closeFlow(closeUrl? : string) {\n warn(`closeflow_not_opened`);\n\n if (closeUrl) {\n warn(`closeflow_with_url`, { closeUrl });\n redirect(closeUrl);\n\n }\n}\n\ncheckout.closeFlow = closeFlow;\n","/* @flow */\n\nimport { prefix } from 'beaver-logger/client';\n\nimport { onDocumentReady } from '../lib';\nimport { ENV } from '../constants';\n\nimport { LOG_PREFIX, ATTRIBUTES, CLASSES } from './constants';\nimport { setup } from './interface';\n\nconst { error, debug } = prefix(LOG_PREFIX);\n\n/* PayPal Checkout Ready\n ---------------------\n\n Call window.paypalCheckoutReady on document ready, if it has been defined by the merchant\n*/\n\nfunction invokeReady(method) {\n\n onDocumentReady(() => {\n debug(`paypal_checkout_ready`);\n setTimeout(() => {\n\n if (!window.paypal) {\n error(`paypal_checkout_ready_no_window_paypal`);\n }\n\n method();\n }, 1);\n });\n}\n\nfunction onKey(obj : Object, key : string, callback : Function) {\n\n if (!obj) {\n return;\n }\n\n let value = obj[key];\n\n if (value) {\n value = callback(value) || value;\n }\n\n try {\n\n delete obj[key];\n\n Object.defineProperty(obj, key, {\n\n configurable: true,\n\n set(item) {\n value = item;\n\n if (value) {\n value = callback(value) || value;\n }\n },\n\n get() : mixed {\n return value;\n }\n });\n\n } catch (err) {\n // pass\n }\n}\n\nonKey(window, 'paypalCheckoutReady', method => {\n\n if (typeof method === 'function') {\n\n const oneTimeReady = function () : void {\n if (!method.called) {\n method.called = true;\n return method.apply(this, arguments);\n }\n };\n\n invokeReady(oneTimeReady);\n\n return oneTimeReady;\n }\n});\n\n\n/* Scan for buttons\n ----------------\n\n Scan for any buttons on the page with a data-paypal-button attribute and auto-attach the PaypalCheckout component to them\n*/\n\nonDocumentReady(() => {\n\n const buttons = Array.prototype.slice.call(document.querySelectorAll(`[${ ATTRIBUTES.BUTTON }]`));\n\n if (buttons && buttons.length) {\n debug(`data_paypal_button`, { number: buttons.length });\n\n for (const button of buttons) {\n\n const id = button.getAttribute(ATTRIBUTES.MERCHANT_ID);\n\n let environment;\n\n if (button.hasAttribute(ATTRIBUTES.ENV)) {\n environment = button.getAttribute(ATTRIBUTES.ENV);\n } else if (button.hasAttribute(ATTRIBUTES.SANDBOX)) {\n environment = ENV.SANDBOX;\n }\n\n setup(id, { environment, button });\n }\n }\n\n // Show hidden buttons\n\n Array.prototype.slice.call(document.getElementsByClassName(CLASSES.HIDDEN_BUTTON)).forEach(el => {\n el.className = el.className.replace(CLASSES.HIDDEN_BUTTON, '');\n });\n});\n","/* @flow */\n\nimport './ready'; // eslint-disable-line import/no-unassigned-import\n\nexport * from './button';\nexport * from './constants';\nexport * from './interface';\n"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/checkout.4.0.307.min.js.map b/dist/checkout.4.0.307.min.js.map deleted file mode 100644 index c4a6625db6..0000000000 --- a/dist/checkout.4.0.307.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/constants/button.js","webpack:///./src/constants/checkout.js","webpack:///./src/constants/funding.js","webpack:///./src/constants/misc.js","webpack:///./src/constants/fpti.js","webpack:///./src/constants/country.js","webpack:///./src/constants/locale.js","webpack:///./src/constants/index.js","webpack:///./src/lib/jsx.js","webpack:///./node_modules/zalgo-promise/src/utils.js","webpack:///./node_modules/zalgo-promise/src/exceptions.js","webpack:///./node_modules/zalgo-promise/src/flush.js","webpack:///./node_modules/zalgo-promise/src/promise.js","webpack:///./node_modules/zalgo-promise/src/index.js","webpack:///./src/lib/logger.js","webpack:///./src/lib/proxy.js","webpack:///./src/lib/eligibility.js","webpack:///./src/lib/errors.js","webpack:///./src/lib/http.js","webpack:///./src/lib/throttle.js","webpack:///./src/lib/script.js","webpack:///./src/lib/meta.js","webpack:///./src/lib/funding.js","webpack:///./src/lib/index.js","webpack:///./src/config/config.js","webpack:///./src/config/index.js","webpack:///./node_modules/beaver-logger/client/util.js","webpack:///./node_modules/beaver-logger/client/builders.js","webpack:///./node_modules/beaver-logger/client/config.js","webpack:///./node_modules/beaver-logger/client/logger.js","webpack:///./node_modules/beaver-logger/client/performance.js","webpack:///./node_modules/beaver-logger/client/init.js","webpack:///./node_modules/beaver-logger/client/transitions.js","webpack:///./node_modules/beaver-logger/client/index.js","webpack:///./node_modules/zoid/src/lib/util.js","webpack:///./node_modules/zoid/src/lib/fn.js","webpack:///./node_modules/zoid/src/lib/dom.js","webpack:///./node_modules/zoid/src/lib/promise.js","webpack:///./node_modules/zoid/src/lib/css.js","webpack:///./node_modules/zoid/src/lib/decorators.js","webpack:///./node_modules/zoid/src/lib/logger.js","webpack:///./node_modules/zoid/src/lib/global.js","webpack:///./node_modules/zoid/src/lib/index.js","webpack:///./node_modules/cross-domain-utils/src/util.js","webpack:///./node_modules/cross-domain-utils/src/constants.js","webpack:///./node_modules/cross-domain-utils/src/utils.js","webpack:///./node_modules/cross-domain-utils/src/index.js","webpack:///./node_modules/zoid/src/constants.js","webpack:///./node_modules/post-robot/src/global.js","webpack:///./node_modules/post-robot/src/conf/constants.js","webpack:///./node_modules/post-robot/src/conf/config.js","webpack:///./node_modules/post-robot/src/conf/index.js","webpack:///./node_modules/@babel/runtime/helpers/esm/extends.js","webpack:///./src/lib/util.js","webpack:///./node_modules/post-robot/src/drivers/send/strategies.js","webpack:///./node_modules/post-robot/src/drivers/send/index.js","webpack:///./node_modules/post-robot/src/drivers/listeners.js","webpack:///./node_modules/post-robot/src/drivers/receive/types.js","webpack:///./node_modules/post-robot/src/drivers/receive/index.js","webpack:///./node_modules/post-robot/src/public/client.js","webpack:///./node_modules/post-robot/src/public/server.js","webpack:///./node_modules/post-robot/src/public/config.js","webpack:///./node_modules/post-robot/src/public/index.js","webpack:///./node_modules/post-robot/src/clean.js","webpack:///./node_modules/post-robot/src/interface.js","webpack:///./node_modules/post-robot/src/index.js","webpack:///./node_modules/post-robot/src/lib/util.js","webpack:///./node_modules/post-robot/src/lib/serialize.js","webpack:///./node_modules/post-robot/src/lib/ready.js","webpack:///./node_modules/post-robot/src/lib/index.js","webpack:///./src/compat/fallback.js","webpack:///./src/checkout/component.js","webpack:///./src/checkout/index.js","webpack:///./node_modules/belter/src/util.js","webpack:///./node_modules/belter/src/dom.js","webpack:///./node_modules/belter/src/index.js","webpack:///./node_modules/cross-domain-safe-weakmap/src/util.js","webpack:///./node_modules/cross-domain-safe-weakmap/src/weakmap.js","webpack:///./node_modules/cross-domain-safe-weakmap/src/native.js","webpack:///./node_modules/cross-domain-safe-weakmap/src/index.js","webpack:///./src/resources/fundingLogos/p24.jsx","webpack:///./src/resources/fundingLogos/sofort.jsx","webpack:///./src/resources/fundingLogos/ideal.jsx","webpack:///./src/resources/fundingLogos/giropay.jsx","webpack:///./src/resources/fundingLogos/eps.jsx","webpack:///./src/resources/fundingLogos/mybank.jsx","webpack:///./src/resources/fundingLogos/bancontact.jsx","webpack:///./src/resources/fundingLogos/payu.jsx","webpack:///./src/resources/fundingLogos/verkkopankki.jsx","webpack:///./src/resources/fundingLogos/blik.jsx","webpack:///./src/resources/fundingLogos/trustly.jsx","webpack:///./src/resources/fundingLogos/maxima.jsx","webpack:///./src/resources/fundingLogos/boleto.jsx","webpack:///./src/resources/fundingLogos/oxxo.jsx","webpack:///./src/resources/fundingLogos/paypal.jsx","webpack:///./src/resources/fundingLogos/credit.jsx","webpack:///./src/resources/fundingLogos/index.js","webpack:///./src/resources/cardLogos/index.js","webpack:///./src/resources/index.js","webpack:///./src/lib/session.js","webpack:///./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack:///./node_modules/@babel/runtime/helpers/esm/applyDecoratedDescriptor.js","webpack:///./node_modules/zoid/src/component/base.js","webpack:///./node_modules/zoid/src/component/window.js","webpack:///./node_modules/zoid/src/component/child/props.js","webpack:///./node_modules/zoid/src/component/child/index.js","webpack:///./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack:///./node_modules/zoid/src/component/parent/drivers.js","webpack:///./node_modules/zoid/src/component/parent/validate.js","webpack:///./node_modules/zoid/src/component/parent/props.js","webpack:///./node_modules/zoid/src/component/parent/index.js","webpack:///./node_modules/zoid/src/component/delegate/index.js","webpack:///./node_modules/zoid/src/component/component/templates/container.jsx","webpack:///./node_modules/zoid/src/component/component/templates/component.jsx","webpack:///./node_modules/zoid/src/component/component/index.js","webpack:///./node_modules/zoid/src/component/component/validate.js","webpack:///./node_modules/zoid/src/component/component/props.js","webpack:///./node_modules/zoid/src/interface.js","webpack:///./node_modules/zoid/src/index.js","webpack:///./src/lib/device.js","webpack:///./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack:///./node_modules/post-robot/src/bridge/bridge.js","webpack:///./node_modules/post-robot/src/bridge/common.js","webpack:///./node_modules/post-robot/src/bridge/child.js","webpack:///./node_modules/post-robot/src/bridge/parent.js","webpack:///./node_modules/post-robot/src/bridge/index.js","webpack:///./src/lib/dom.js","webpack:///./src/lib/security.js","webpack:///./node_modules/zoid/src/error.js","webpack:///./src/integrations/braintree.js","webpack:///./src/integrations/index.js","webpack:///./node_modules/zoid/src/drivers/index.js","webpack:///./src/lib/beacon.js","webpack:///./src/checkout/template/componentTemplate.jsx","webpack:///./src/checkout/template/containerStyle/base.js","webpack:///./src/checkout/template/sandboxStyle/base.js","webpack:///./src/checkout/template/containerTemplate.jsx","webpack:///./src/checkout/template/index.js","webpack:///./src/integrations/checkout.js","webpack:///./src/lib/namespace.js","webpack:///./src/checkout/template/containerContent.js","webpack:///./node_modules/hi-base32/src/base32.js","webpack:///./node_modules/zoid/src/drivers/script.js","webpack:///./node_modules/zoid/src/drivers/react.js","webpack:///./node_modules/zoid/src/drivers/vue.js","webpack:///./node_modules/zoid/src/drivers/angular.js","webpack:///./node_modules/zoid/src/drivers/glimmer.js","webpack:///./node_modules/zoid/src/drivers/angular2.js","webpack:///./node_modules/bowser/bowser.min.js","webpack:///./node_modules/post-robot/src/compat/ie.js","webpack:///./node_modules/post-robot/src/compat/index.js","webpack:///./src/resources/fundingLogos/pp_white.svg","webpack:///./src/resources/fundingLogos/pp_blue.svg","webpack:///./src/resources/fundingLogos/pp_black.svg","webpack:///./src/resources/fundingLogos/venmo_white.svg","webpack:///./src/resources/fundingLogos/itau.svg","webpack:///./src/resources/fundingLogos/venmo_blue.svg","webpack:///./src/resources/fundingLogos/elv.svg","webpack:///./src/resources/fundingLogos/elv_white.svg","webpack:///./src/resources/cardLogos/visa.svg","webpack:///./src/resources/cardLogos/amex.svg","webpack:///./src/resources/cardLogos/mastercard.svg","webpack:///./src/resources/cardLogos/maestro.svg","webpack:///./src/resources/cardLogos/discover.svg","webpack:///./src/resources/cardLogos/hiper.svg","webpack:///./src/resources/cardLogos/elo.svg","webpack:///./src/resources/cardLogos/jcb.svg","webpack:///./src/resources/cardLogos/cup.svg","webpack:///./node_modules/form-serialize/index.js","webpack:///./src/load.js","webpack:///./node_modules/post-robot/src/bridge/interface.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///(webpack)/buildin/amd-define.js","webpack:///./src/billing/template/containerTemplate.jsx","webpack:///./src/billing/index.js","webpack:///./src/external/pptm-factory.js","webpack:///./src/threeDomainSecure/index.js","webpack:///./src/external/pptm.js","webpack:///./src/api/rest.js","webpack:///./src/experiments.js","webpack:///./src/integrations/popupBridge.js","webpack:///./src/funding/config.js","webpack:///./src/funding/funding.js","webpack:///./src/button/config.js","webpack:///./src/button/props.js","webpack:///./src/button/validate.js","webpack:///./src/button/template/componentStyle/class.js","webpack:///./src/button/component.jsx","webpack:///./src/button/template/componentStyle/page.js","webpack:///./src/button/template/componentStyle/button.js","webpack:///./src/button/template/componentStyle/layout.js","webpack:///./src/button/template/componentStyle/branding.js","webpack:///./src/button/template/componentStyle/labels.js","webpack:///./src/button/template/componentStyle/responsive.js","webpack:///./src/button/template/componentStyle/color.js","webpack:///./src/button/template/content.js","webpack:///./src/button/template/componentTemplate.jsx","webpack:///./src/button/template/miscComponent.jsx","webpack:///./src/button/template/componentStyle/base.js","webpack:///./src/button/template/componentScript.js","webpack:///./src/button/template/containerTemplate.jsx","webpack:///./src/button/child.js","webpack:///./src/hacks.js","webpack:///./src/card/index.js","webpack:///./src/setup.js","webpack:///./src/interface.js","webpack:///./src/index.js","webpack:///./src/legacy/constants.js","webpack:///./src/legacy/eligibility.js","webpack:///./src/legacy/common.js","webpack:///./src/legacy/button.js","webpack:///./src/legacy/util.js","webpack:///./src/legacy/options.js","webpack:///./src/legacy/interface.js","webpack:///./src/legacy/postBridge.js","webpack:///./src/legacy/ready.js","webpack:///./src/legacy/index.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","hasOwnProperty","p","s","BUTTON_STYLE_OPTIONS","LABEL","SIZE","SHAPE","COLOR","LAYOUT","MAXBUTTONS","FUNDINGICONS","BRANDING","TAGLINE","HEIGHT","INSTALLMENTPERIOD","BUTTON_LABEL","PAYPAL","CHECKOUT","PAY","CREDIT","CARD","BUYNOW","INSTALLMENT","VENMO","ITAU","IDEAL","ELV","BANCONTACT","GIROPAY","SOFORT","EPS","MYBANK","P24","PAYU","VERKKOPANKKI","BLIK","TRUSTLY","MAXIMA","BOLETO","OXXO","BUTTON_COLOR","GOLD","BLUE","SILVER","BLACK","DARKBLUE","WHITE","TRANSPARENT","BUTTON_LOGO_COLOR","ANY","BUTTON_SIZE","TINY","SMALL","MEDIUM","LARGE","HUGE","RESPONSIVE","BUTTON_TAGLINE_COLOR","BUTTON_SHAPE","PILL","RECT","BUTTON_BRANDING","BRANDED","UNBRANDED","BUTTON_LAYOUT","HORIZONTAL","VERTICAL","BUTTON_NUMBER","SINGLE","MULTIPLE","BUTTON_LOGO","PP","CHECKOUT_OVERLAY_COLOR","FUNDING","ZIMPLER","VISA","MASTERCARD","AMEX","DISCOVER","SWITCH","MAESTRO","HIPER","ELO","JCB","CUP","COFINOGA","COFIDIS","CETELEM","CBNATIONALE","FUNDING_ELIGIBILITY_REASON","PRIMARY","NOT_ENABLED","SECONDARY_DISALLOWED","OPT_OUT","OPT_IN","DISALLOWED_COUNTRY","DEFAULT_COUNTRY","DEFAULT","REMEMBERED","NEED_OPT_IN","COMMIT_NOT_SET","INVALID_ENV","CARD_PRIORITY","ENV","LOCAL","STAGE","SANDBOX","PRODUCTION","TEST","DEMO","USERS","ALL","SOURCE","MANUAL","BUTTON_FACTORY","LOG_LEVEL","DEBUG","INFO","WARN","ERROR","PAYMENT_TYPE","EC_TOKEN","BA_TOKEN","PAY_ID","ATTRIBUTE","BUTTON","FUNDING_SOURCE","VERSION","PLATFORM","DESKTOP","MOBILE","FPTI","KEY","FEED","STATE","TRANSITION","BUTTON_TYPE","SESSION_UID","BUTTON_SESSION_UID","TOKEN","CONTEXT_ID","CONTEXT_TYPE","REFERER","SELLER_ID","DATA_SOURCE","BUTTON_SOURCE","ERROR_CODE","ERROR_DESC","PAGE_LOAD_TIME","EXPERIMENT_NAME","TREATMENT_NAME","TRANSITION_TIME","FUNDING_LIST","FUNDING_COUNT","CHOSEN_FUNDING","BUTTON_WIDTH","MAX_BUTTONS","FUNDING_REMEMBERED","BUTTON_TAGLINE_ENABLED","RESPONSE_DURATION","PAYMENT_FLOW","BUTTON_VERSION","IFRAME","HTML","CUSTOM","BUTTON_SESSION_ID","CHECKOUTJS","LOAD","PPTM","SCRIPT_LOAD","BUTTON_RENDER","BUTTON_LOAD","BUTTON_CLICK","BUTTON_RENDER_INTRANET_MODE","BUTTON_CLICK_INTRANET_MODE","CREATE_PAYMENT","RECIEVE_PAYMENT","CHECKOUT_INIT","CHECKOUT_AUTHORIZE","CHECKOUT_SHIPPING_CHANGE","CHECKOUT_CANCEL","CHECKOUT_ERROR","EXTERNAL_EXPERIMENT","EXTERNAL_EXPERIMENT_COMPLETE","PPTM_LOAD","PPTM_LOADED","COUNTRY","AD","AE","AG","AI","AL","AM","AN","AO","AR","AT","AU","AW","AZ","BA","BB","BE","BF","BG","BH","BI","BJ","BM","BN","BO","BR","BS","BT","BW","BY","BZ","C2","CA","CD","CG","CH","CI","CK","CL","CM","CN","CO","CR","CV","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GI","GL","GM","GN","GP","GR","GT","GW","GY","HK","HN","HR","HU","ID","IE","IL","IN","IS","IT","JM","JO","JP","KE","KG","KH","KI","KM","KN","KR","KW","KY","KZ","LA","LC","LI","LK","LS","LT","LU","LV","MA","MC","MD","ME","MG","MH","MK","ML","MN","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PL","PM","PN","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","ST","SV","SZ","TC","TD","TG","TH","TJ","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","US","UY","VA","VC","VE","VG","VN","VU","WF","WS","YE","YT","ZA","ZM","ZW","LANG","CS","DA","EL","EN","HE","JA","KO","ZH","LANG_TO_DEFAULT_COUNTRY","ALLOWED_INSTALLMENT_COUNTRIES","ALLOWED_INSTALLMENT_PERIOD","LOCALE","htmlEncode","html","toString","replace","JsxHTMLNode","props","children","this","propsToString","childrenToString","keys","filter","map","join","innerHTML","result","iterate","child","Array","isArray","JsxHTMLNodeContainer","jsxToHTML","jsxRender","template","renderers","nodes","regexMap","match","type","text","Error","trim","test","break","isPromise","item","Promise","window","Window","constructor","then","err","flushPromise","dispatchedErrors","possiblyUnhandledPromiseHandlers","activeCount","flushActive","promise","resolve","startActive","endActive","ZalgoPromise","handler","resolved","rejected","errorHandled","error","handlers","dispatching","stack","isAsync","res","reject","dispatch","setTimeout","indexOf","push","j","length","dispatchPossiblyUnhandledError","asyncReject","chain","firstPromise","secondPromise","onSuccess","onError","catch","undefined","finally","onFinally","try","timeout","time","clearTimeout","toPromise","TypeError","all","promises","count","results","prom","hash","items","method","onPossiblyUnhandledException","cancel","splice","context","args","apply","delay","flush","getRefererDomain","xchild","getParentDomain","location","host","setupProxyLogTransport","once","setTransport","win","originalMethod","getDomain","config","paypalDomain","isSameDomain","send","noop","methods","on","domain","paypal_domain_regex","data","isWindowClosed","source","arguments","proxyMethod","getParent","getTransport","initLogger","addPayloadBuilder","referer","path","pathname","env","country","locale","lang","uid","getSessionID","ver","__PAYPAL_CHECKOUT__","addHeaderBuilder","addMetaBuilder","state","addTrackingBuilder","payload","contextType","contextID","sessionID","paymentToken","root","token","isPayPalDomain","queryToken","getQueryParam","getToken","buttonSessionID","getButtonSessionID","merchantID","version","protocol","PROTOCOL","FILE","init","uri","loggerUrl","heartbeat","logPerformance","prefix","logLevel","setLogLevel","logLevels","loggerConfig","POSTROBOT_CONFIG","bowserCache","getBowser","userAgent","getUserAgent","require","bowser","getBrowser","SUPPORTED_BROWSERS","browser","eligibilityResults","isEligible","isIEIntranet","navigator","compareVersions","isBrowserEligible","checkRecognizedBrowser","mobile","android","ios","info","flushLogs","logWarn","console","warn","log","checkForCommonErrors","JSON","stringify","toJSON","isIE","isIECompHeader","message","bar","baz","zomg","a","opener","parent","returnContext","assign","b","HEADERS","CONTENT_TYPE","ACCEPT","headerBuilders","corrids","request","url","headers","json","body","normalizedHeaders","toLowerCase","builtHeaders","headerBuilder","xhr","XMLHttpRequest","addEventListener","responseHeaders","rawHeaders","split","values","parseHeaders","getAllResponseHeaders","corrID","status","contentType","isJSON","responseText","parse","evt","getResponseHeader","open","setRequestHeader","encodeURIComponent","ontimeout","prev_corr_ids","options","post","THROTTLE_GROUP","CONTROL","THROTTLE","getThrottle","sample","sticky","group","getStorageID","percentile","getStorageState","storage","throttlePercentiles","Math","floor","random","getThrottlePercentile","treatment","started","forced","localStorage","getItem","isEnabled","isDisabled","getTreatment","checkpointName","checkpoint","expuid","track","logStart","logComplete","getReturnToken","href","payer","getCurrentScript","memoize","scripts","slice","document","getElementsByTagName","script","src","scriptUrl","hasAttribute","currentScript","debug","getScriptVersion","getCurrentScriptUrl","getDomainSetting","def","hostname","domain_settings","domainMatches","openMetaFrame","iframeEligible","iframeEligibleReason","rememberedFunding","metaFrameUrl","metaFrameUrls","metaFrameDomain","paypalDomains","bridge","metaListener","openBridge","extendUrl","getRememberedFunding","identity","hasRememberedFunding","getSessionState","session","recentlyCheckedRemembered","getRememberedFundingPromises","getGlobalState","global","rememberFundingPromises","getRememberedFundingPromise","isRememberedFunding","rememberFunding","sources","isDevice","flushRememberedFundingPromises","loadMeta","isFundingRemembered","precacheRememberedFunding","locales","cors","stage","stageDomain","apiStage","ports","default","val","localhostUrl","authCode","throttles","v4_mobile_device","ie_full_page","allow_full_page_fallback","memoize_payment","force_bridge","log_authorize","disable_venmo","creditTestDomains","customCountry","msie","firefox","chrome","safari","opera","msedge","samsungBrowser","silk","ucbrowser","vivaldi","session_uid_lifetime","_apiStage","button","checkout","guest","altpay","stageUrl","port","apiStageUrl","corsApiUrls","wwwApiUrls","local","sandbox","production","checkoutUri","altpayUris","guestUris","billingUris","buttonUris","inlinedCardFieldUris","postBridgeUris","legacyCheckoutUris","buttonJSUrls","loginUri","hermesLoggerUri","loggerUri","loggerThrottlePercentage","pptmUri","paymentStandardUri","authApiUri","paymentApiUri","orderApiUri","billingApiUri","experienceApiUri","trackingApiUri","paypalUrls","checkoutUris","demo","postBridgeUri","apiUrls","_paypalUrl","wwwApiUrl","corsApiUrl","paypalUrl","legacyCheckoutUrls","isTestExperiment","apiUrl","defaultLocale","extend","dest","over","uniqueID","chars","charAt","payloadBuilders","metaBuilders","trackingBuilders","builder","initial_state_name","flushInterval","debounceInterval","sizeLimit","silent","heartbeatConsoleLog","heartbeatInterval","heartbeatTooBusy","heartbeatTooBusyThreshold","autoLog","logUnload","buffer","tracking","transport","fireAndForget","XRequest","ActiveXObject","XDomainRequest","isSameProtocol","req","toUpperCase","headerName","onreadystatechange","readyState","ajax","newTransport","loaded","print","level","event","Boolean","documentMode","warning","immediateFlush","meta","events","interval","debounce","resolver","rejector","enqueue","timestamp","Date","now","enablePerformance","performance","timing","connectEnd","navigationStart","abs","timer","startTime","elapsed","parseInt","reset","reqStartElapsed","clientTimer","reqTimer","initiated","conf","heartBeatTimer","heartbeatCount","client_elapsed","req_elapsed","forEach","offset","memory","navigation","getEntries","resource","initiatorType","initPerformance","loop","heartbeatMaxThreshold","lag","heartbeatPayload","setInterval","beaverLogQueue","windowID","pageID","currentState","startTransition","endTransition","toState","elapsedTime","currentTime","transitionName","duration","transition","transition_time","urlEncode","str","dasherizeToCamel","string","g","obj","pathParts","replaceObject","replacers","fullKey","configurable","itemKey","replacer","replaced","set","copyProp","target","descriptor","getOwnPropertyDescriptor","dotify","newobj","every","objectIDs","WeakMap","getObjectID","stringifyError","eventEmitter","triggered","eventName","handlerList","cancelled","listener","trigger","triggerOnce","called","cacheKey","serializeFunctions","__type__","deserializeFunctions","self","appendChild","container","getElementSafe","id","element","Element","nodeType","style","ownerDocument","isElement","getElementById","querySelector","getElement","isDocumentReady","elementReady","el","clearInterval","popup","params","PopupOpenError","writeToWindow","write","close","err2","writeElementToWindow","tag","tagName","documentElement","removeChild","setStyle","styleText","doc","styleSheet","cssText","createTextNode","awaitFrameLoadPromises","awaitFrameLoad","frame","has","linkFrameWindow","contentWindow","awaitFrameWindow","loadedFrame","iframe","attributes","createElement","class","className","setAttribute","frameBorder","allowTransparency","backgroundColor","removeEventListener","parseQuery","queryString","pair","decodeURIComponent","extendQuery","originalQuery","originalUrl","originalHash","query","hashString","bindEvents","eventNames","VENDOR_PREFIXES","setVendorCSS","capitalizedName","CSSRule","KEYFRAMES_RULE","WEBKIT_KEYFRAMES_RULE","MOZ_KEYFRAMES_RULE","O_KEYFRAMES_RULE","MS_KEYFRAMES_RULE","ANIMATION_START_EVENTS","ANIMATION_END_EVENTS","animate","clean","stylesheets","styleSheets","cssRules","cssRule","isValidAnimation","startTimeout","endTimeout","startEvent","endEvent","hasStarted","cleanUp","animationName","stopPropagation","STYLE","DISPLAY","NONE","BLOCK","VISIBILITY","VISIBLE","HIDDEN","IMPORTANT","showElement","setProperty","hideElement","destroyElement","parentNode","showAndAnimate","animation","animateAndHide","addClass","classList","add","removeClass","remove","getCurrentScriptDir","isElementClosed","watchElementForClose","runInterval","prefetchPage","onload","onerror","getHttpType","getHTML","JSX_EVENTS","onClick","fixScripts","selector","querySelectorAll","newScript","textContent","replaceChild","jsxDom","content","prop","textNode","denodeify","promisify","isPerc","isPx","toNum","toPx","toCSS","normalizeDimension","dim","max","memoized","__memoized__","displayName","CONFIG","logInfo","logError","globalFor","__ZOID__","localGlobal","isRegex","MOCK","ABOUT","WILDCARD","IE_WIN_ACCESS_ERROR","isAboutProtocol","getOpener","canReadFromWindow","getActualDomain","mockDomain","isActuallySameDomain","desc","assertSameDomain","isAncestorParent","childParent","getParents","getFrames","frames","len","getAllChildFrames","getTop","top","getAllFramesInWindow","isTop","iframeWindows","iframeFrames","allowMock","closed","mockclosed","iframeIndex","collection","safeIndexOf","contains","isFrameWindowClosed","cleanIframes","mockUserAgent","getFrameByName","winFrames","childFrame","findFrameByName","findChildFrameByName","namedFrame","isOpener","getAncestor","isAncestor","actualParent","isPopup","isIframe","anyMatch","collection1","collection2","item1","getDistanceFromTop","distance","getNthParentFromTop","getNthParent","isSameTopWindow","win1","win2","top1","top2","allFrames1","allFrames2","opener1","opener2","matchDomain","pattern","origin","some","subpattern","stringifyDomainPattern","getDomainFromUrl","onCloseWindow","callback","maxtime","Infinity","check","isWindow","__cross_domain_utils_window_check__","ZOID","POST_MESSAGE","INIT","PROPS","PROP_CALLBACK","CLOSE","CHECK_CLOSE","REDIRECT","RESIZE","DELEGATE","ALLOW_DELEGATE","HIDE","SHOW","PROP_TYPES","STRING","OBJECT","FUNCTION","BOOLEAN","NUMBER","INITIAL_PROPS","RAW","UID","WINDOW_REFERENCES","OPENER","TOP","PARENT","GLOBAL","PROP_TYPES_LIST","CONTEXT_TYPES","POPUP","CLASS_NAMES","OUTLET","COMPONENT_FRAME","PRERENDER_FRAME","INVISIBLE","EVENTS","ATTRIBUTES","IFRAME_PLACEHOLDER","ANIMATION_NAMES","SHOW_CONTAINER","SHOW_COMPONENT","HIDE_CONTAINER","HIDE_COMPONENT","EVENT_NAMES","CLICK","CLOSE_REASONS","PARENT_CALL","CHILD_CALL","CLOSE_DETECTED","USER_CLOSED","PARENT_CLOSE_DETECTED","CONTEXT_TYPES_LIST","CALL_ORIGINAL","CALL_DELEGATE","DEFAULT_DIMENSIONS","WIDTH","CONSTANTS","WINDOW_PROPS","POSTROBOT","registerSelf","POST_MESSAGE_TYPE","REQUEST","RESPONSE","ACK","POST_MESSAGE_ACK","SUCCESS","POST_MESSAGE_NAMES","METHOD","HELLO","OPEN_TUNNEL","WINDOW_TYPES","FULLPAGE","SERIALIZATION_TYPES","PROMISE","ZALGO_PROMISE","REGEX","SEND_STRATEGIES","BRIDGE","MOCK_PROTOCOL","FILE_PROTOCOL","BRIDGE_NAME_PREFIX","POSTROBOT_PROXY","ALLOW_POSTMESSAGE_POPUP","__ALLOW_POSTMESSAGE_POPUP__","BRIDGE_TIMEOUT","CHILD_WINDOW_TIMEOUT","ACK_TIMEOUT","RES_TIMEOUT","ALLOWED_POST_MESSAGE_METHODS","ALLOW_SAME_ORIGIN","_extends","moduleGlobal","getGlobal","cache","glob","__CACHE_START_TIME__","regmatch","safeJSON","listeners","listen","awaitKey","newErr","stringifyErrorMessage","defaultMessage","index","patchMethod","original","callOriginal","sortBy","arr","order","sort","perc","pixels","percentage","round","regex","SEND_MESSAGE_STRATEGIES","serializedMessage","emulateIERestrictions","dom","postMessage","sendBridgeMessage","needsBridgeForBrowser","isBridge","sendMessage","getWindowType","sourceDomain","windowType","buildMessage","serializeMethods","messages","jsonStringify","strategyName","success","needsGlobalMessagingForBrowser","foreignGlobal","receiveMessage","responseListeners","requestListeners","WINDOW_WILDCARD","erroredResponseListeners","__DOMAIN_REGEX__","getResponseListener","deleteResponseListener","isResponseListenerErrored","getRequestListener","nameListeners","winQualifier","winListeners","RECEIVE_MESSAGE_TYPES","ack","respond","originalSource","code","handleError","response","parsedMessage","jsonParse","parseMessage","receivedMessages","deserializeMethods","messageListener","messageEvent","sourceElement","originalEvent","targetWindow","HTMLIFrameElement","hasResult","requestPromises","requestPromise","onChildWindowReady","sayHello","actualDomain","responseListener","addResponseListener","ackTimeout","resTimeout","cycleTime","cycle","min","markResponseListenerErrored","sendToParent","client","listenerOptions","errorHandler","requestListener","addRequestListener","listenersCollection","existingListener","regexListener","strDomain","regexListeners","delete","onceFunction","errorOnClose","safeInterval","onceListener","disable","cleanUpWindow","popupWindowsByWin","remoteWindows","readyPromises","initialized","openTunnelToOpener","initOnReady","listenForMethods","INTERFACE","attachEvent","detachEvent","depth","eachArray","eachObject","each","childItem","weakMapMemoize","weakmap","arg","indent","objectToJSON","arrayToJSON","prototype","meth","isSerialized","serializeMethod","destination","__id__","__name__","__message__","__code__","__then__","serializePromise","serializeZalgoPromise","__source__","deserializeMethod","wrapper","__xdomain__","deserializeZalgoPromise","deserializeError","deserializePromise","RegExp","deserializeRegex","onAuthorize","onLegacyPaymentAuthorize","postBridgeUrl","postBridgeDomain","postBridge","watchForLegacyFallback","ppxoWatching","XMLHttpRequestsend","_patched","DONE","returnUrl","billingToken","payerID","paymentID","Checkout","XhrResponse","RESPONSE_TYPES","mob","Xhr","_xhrOnReady","onLegacyFallback","scrolling","buildUrl","payment","determineUrl","fundingSource","contexts","supportsPopups","validate","prerenderTemplate","componentTemplate","containerTemplate","required","queryParam","xprops","allowDelegate","getBrowserLocale","sendToChild","determineParameterFromToken","queryValue","childDecorate","alias","overlayColor","commit","experience","fundingOffered","getAttribute","decorate","actions","intent","closeComponent","redirect","redir","isButton","isGuest","access_token","$Api","addHeader","onShippingChange","onAuth","sameDomain","accessToken","onCancel","cancelUrl","onClose","reason","shouldCancel","fallback","__test__","action","sdkMeta","base64encode","width","height","isChild","onProps","injector","instance","payment_action","btoa","p1","String","fromCharCode","Buffer","from","toISOString","fn","setFunctionName","isLocalStorageEnabled","logic","__inline_memoize_cache__","subkey","serializeArgs","inlineMemoize","setItem","removeItem","onResize","currentWidth","offsetWidth","currentHeight","offsetHeight","observer","newWidth","newHeight","ResizeObserver","observe","MutationObserver","childList","subtree","characterData","disconnect","CrossDomainSafeWeakMap","freeze","testWeakMap","testKey","hasNativeWeakMap","_cleanupClosedWindows","isSafeToReadWrite","entry","writable","getOrSet","P24_LOGO_COLORS","primary","secondary","SOFORT_LOGO_COLORS","IDEAL_LOGO_COLORS","tertiary","GIROPAY_LOGO_COLORS","EPS_LOGO_COLORS","MYBANK_LOGO_COLORS","BANCONTACT_LOGO_COLORS","PAYU_LOGO_COLORS","quaternary","VERKKOPANKKI_LOGO_COLORS","quinary","senary","BLIK_LOGO_COLORS","TRUSTLY_LOGO_COLORS","MAXIMA_LOGO_COLORS","BOLETO_LOGO_COLORS","OXXO_LOGO_COLORS","PAYPAL_LOGO_COLORS","CREDIT_LOGO_COLORS","fundingLogos","pp_white","pp_blue","pp_black","logoColor","viewBox","xmlns","preserveAspectRatio","fill","transform","venmo_white","venmo_blue","itau","points","elv","elv_white","x","y","stroke","stroke-width","fill-rule","mask","gradientUnits","x1","y1","x2","y2","gradientTransform","stop-color","cx","cy","fx","fy","cardLogos","visa","amex","mastercard","maestro","discover","hiper","elo","jcb","cup","accessedStorage","LOCAL_STORAGE_KEY","SESSION_KEY","GLOBAL_KEY","localStorageEnabled","rawStorage","getSession","created","guid","querySessionID","_assertThisInitialized","ReferenceError","_applyDecoratedDescriptor","decorators","initializer","reverse","reduce","decorator","BaseComponent","tasks","cleaned","component","register","complete","run","hasTasks","pop","addProp","createError","listenerName","errorListener","normalize","isZoidComponentWindow","getComponentMeta","componentMeta","zoidcomp","encodedOptions","base32","decode","getWindowByRef","ref","ancestor","windows","getParentComponentWindow","componentParent","getParentRenderWindow","renderParent","normalizeChildProp","getProp","looseProps","ChildComponent","onPropHandlers","onInit","watchingForResize","autoResize","hasValidParentDomain","RenderError","setProps","getInitialProps","setWindows","watchForResize","allowedParentDomains","parentComponentWindow","func","normalizedProps","getPropNames","normalizeChildProps","parentWindow","__activeZoidComponent__","watchForClose","checkClose","enableAutoResize","getAutoResize","resize","updateProps","destroy","hide","show","userClose","focus","stringifiedError","_defineProperties","_createClass","Constructor","protoProps","staticProps","RENDER_DRIVERS","validateProp","isNaN","normalizeProp","resultValue","isDefined","decorated","getQueryValue","focusable","renderedIntoContainerTemplate","allowResize","openOnClick","needsBridge","childWindowName","title","frameWindow","detectClose","iframeWatcher","elementWatcher","openPrerender","prerenderIframe","prerenderFrameWindow","prerenderWindow","switchPrerender","delegateOverrides","openContainer","destroyComponent","destroyContainer","cancelContainerEvents","createPrerenderTemplate","showContainer","showComponent","hideContainer","hideComponent","loadUrl","hijackSubmit","renderTemplate","openContainerFrame","getOutlet","override","dimensions","outerWidth","screenX","screen","outerHeight","screenY","getPosition","left","toolbar","menubar","resizable","scrollbars","ParentComponent","handledErrors","outlet","childExports","validateParentDomain","buildChildWindowName","renderTo","registerActiveComponent","watchForUnload","render","tryInit","onRender","driver","linkDomain","linkUrl","loadHTML","runTimeout","onEnter","checkAllowRenderTo","delegate","prefetch","activeComponents","getComponentParentRef","getRenderParentRef","renderToWindow","childDomain","sProps","getPropsForChild","unsafeRenderTo","encodedName","encodedVersion","encode","validateProps","normalizedProp","normalizeProps","propsDef","builtinProps","serialization","dotkey","escape","getValidDomain","getUrl","finalUrl","xcomponent","builtUrl","needsBridgeParams","bridgeUrl","getBridgeUrl","bridgeDomain","getBridgeDomain","hasBridge","windowName","onDisplay","propName","overrides","closeWindowListener","onunload","unloadWindowListener","hijack","targetElement","onTimeout","closeContainer","renderer","CLASS","ANIMATION","CONTEXT","EVENT","errErr","destroyAll","DelegateComponent","getOverrides","defaultContainerTemplate","defaultPrerenderTemplate","drivers","angular","angular2","glimmer","react","vue","Component","listenForResize","defaultLogLevel","defaultEnv","defaultContext","driverCache","validatePropDefinitions","anyEnabled","components","registerDrivers","registerChild","listenDelegate","driverName","dep","canRenderTo","domains","getForEnv","envUrl","isZoidComponent","getRenderContext","validateRenderContext","getDefaultContext","renderIframe","renderPopup","renderIframeTo","renderPopupTo","prerender","innerProps","innerElement","logWarning","getByTag","postRobot","_postRobot","_CONSTANTS","isOperaMini","ua","isIos","mHttp","mContent","isIE11","isGoogleSearchApp","isIosWebview","isAndroid","isAndroidWebview","isFirefoxIOS","isEdgeIOS","isFacebookWebView","isQQBrowser","isMacOsCna","standalone","matchMedia","matches","_inheritsLoose","subClass","superClass","__proto__","deleteTunnelWindow","tunnelWindows","getTunnelWindow","tunnelWindowId","openTunnelToParent","canary","tunnelWindow","cleanTunnelWindows","addTunnelWindow","needsBridgeForWin","needsBridgeForDomain","getBridgeName","sanitizedDomain","documentBodyReady","registerRemoteWindow","sendMessagePromise","findRemoteWindow","registerRemoteSendMessage","remoteWindow","sendMessageWrapper","remoteWin","remoteDomain","rejectRemoteSendMessage","messagingChild","messagingParent","awaitRemoteBridgeForWindow","bridges","openBridgeFrame","bridgeFrames","popupWindowsByName","winDetails","listenForRegister","windowOpen","winOptions","destroyBridges","last","winName","documentReady","loadScript","attrs","scriptLoadError","attr","HTMLElement","getElements","NodeList","HTMLCollection","onDocumentReady","search","urlWillRedirectPage","hasHash","serverUrl","originalQueryString","newQueryString","newUrl","normalizeLocale","normalizeLang","nav","languages","language","userLanguage","getBrowserLocales","loc","isElementVisible","getClientRects","getPageRenderTime","domInteractive","getResourceLoadTime","entries","allowIframe","IntegrationError","awaitBraintreeClient","braintree","auth","authorization","paypalCheckout","SUPPORTED_REST_FIELDS","transactions","amount","total","currency","external_selected_funding_instrument_type","shipping_address","line1","line2","city","postal_code","country_code","phone","recipient_name","application_context","brand_name","shipping_preference","landing_page","mapPaymentToBraintree","supported","supportedKeys","btPayment","flow","offerCredit","shippingAddressOverride","postalCode","countryCode","recipientName","landingPageType","enableShippingAddress","shippingAddressEditable","BEACON_URL","APP_NAME","beacon","appName","Image","checkoutComponentStyle","getContainerStyle","getSandboxStyle","LOGO_COLOR","containerContent","preventDefault","alert","ppLogo","pp","paypalLogo","paypal","aria-label","role","alt","windowMessage","continue","getPaymentType","billingUrls","guestUrls","altpayUrls","checkoutUrls","extendNamespace","xports","namespaces","childnamespaces","namespace","childname","childnamespace","HI_BASE32_NO_NODE_JS","process","versions","node","COMMON_JS","HI_BASE32_NO_COMMON_JS","AMD","define","BASE32_ENCODE_CHAR","BASE32_DECODE_CHAR","blocks","throwInvalidUtf8","position","partial","substr","decodeAsBytes","base32Str","v1","v2","v3","v4","v5","v6","v7","v8","bytes","remain","asciiOnly","followingChars","toUtf8String","input","notString","ArrayBuffer","Uint8Array","encodeBytes","charCodeAt","encodeAscii","end","start","encodeUtf8","asBytes","innerText","eval","scan","scriptTags","React","ReactDOM","createClass","componentDidMount","findDOMNode","setState","componentDidUpdate","componentWillUnmount","inheritAttrs","mounted","$el","$attrs","beforeUpdate","ng","directive","scope","restrict","controller","$scope","$element","safeApply","$root","$$phase","$apply","getProps","scopeProps","$watch","GlimmerComponent","didInsertElement","zoid","AngularComponent","NgModule","ElementRef","NgZone","internalProps","zone","ComponentInstance","inputs","Class","elementRef","ngOnInit","nativeElement","ngOnChanges","declarations","e","N","u","f","h","v","w","E","S","T","whale","mzbrowser","coast","yandexbrowser","maxthon","epiphany","puffin","sleipnir","kMeleon","osname","windowsphone","chromeos","chromeBook","sailfish","seamonkey","firefoxos","phantom","slimer","blackberry","webos","touchpad","bada","tizen","qupzilla","chromium","googlebot","blink","webkit","gecko","mac","xbox","linux","k","C","osversion","L","tablet","isUnsupportedBrowser","_detect","detect","sourceWindow","k_r_submitter","k_r_success_contrls","brackets","hash_serializer","hash_assign","shift","between","_values","exec","parse_keys","existing","str_serialize","form","serializer","elements","radio_store","disabled","nodeName","checked","empty","selectOptions","isSelectedOptions","option","selected","Button","existingVersion","_interface","errtype","__webpack_amd_options__","containerStyle","aria-modal","noContentFoundInContainer","BillingPage","inlinedCardFieldUrls","cardType","prefilledZipCode","onEvent","ThreeDomainSecure","challengeUrl","threeDomainSecureToken","pptm","reloadPptmScript","clientId","tryCreatePptmScript","shouldReloadPptmScript","removePptm","createPptmScript","listenForLoadWithNoContent","listenForButtonRender","paypalDDL","mrid","client_id","fullUrl","pptmUrl","async","PPTM_ID","shouldCreateInitialPptmScript","existingScript","proxyRest","createAccessToken","clientID","basicAuth","authApiUrls","Authorization","grant_type","createExperienceProfile","experienceDetails","temporary","experienceApiUrls","logPaymentResponse","links","rel","createPayment","paymentDetails","redirect_urls","return_url","cancel_url","payment_method","experienceID","trackingData","trackingID","trackingApiUrls","createTracking","experience_profile_id","partner_attribution_id","paymentApiUrls","createOrder","purchase_units","unit","reference_id","orderApiUrls","createBillingAgreement","billingDetails","plan","merchant_preferences","billingApiUrls","token_id","rest","billingAgreement","parentWin","onAuthorizeListener","experiment","loggedEvents","loggedExperimentEvents","edge","logExperimentTreatment","externalExperiment","externalExperimentTreatment","externalExperimentToken","logReturn","returnToken","OPTYPE","PAYMENT","CANCEL","CONTINGENCY","PAYMENT_CANCELLED","normalizeCheckoutProps","awaitPopupBridge","popupBridge","onComplete","redirect_uri","getReturnUrlPrefix","wrapPopupBridge","FUNDING_PRIORITY","FUNDING_ORDER","FUNDING_CONFIG","enabled","allowOptIn","allowOptOut","allowRemember","allowHorizontal","allowVertical","requireCommitAsTrue","__paypal_checkout__","serverConfig","paypalMerchantConfiguration","creditCard","isPayPalBranded","allowedCountries","defaultVerticalCountries","platforms","allowedEnvs","CARD_CONFIG","priority","getConfig","category","categoryConfig","getFundingConfig","fundingEligibilityReasons","isFundingIneligible","funding","layout","disallowed","isFundingAutoEligible","allowed","remembered","determineEligibleCards","card","logFundingEligibility","reasons","table","eligible","factors","BUTTON_CONFIG","colors","sizes","shapes","layouts","logoColors","tagLineColors","secondaryColors","dualTag","defaultLabel","defaultVerticalLabel","defaultColor","defaultSize","defaultVerticalSize","defaultShape","defaultLayout","defaultBranding","defaultVerticalBranding","defaultFundingIcons","defaultTagline","defaultDual","minimumSize","minimumVerticalSize","maximumSize","maximumVerticalSize","minHorizontalButtons","minVerticalButtons","maxHorizontalButtons","maxVerticalButtons","allowUnbranded","allowFundingIcons","allowPrimary","allowPrimaryVertical","allowPrimaryHorizontal","label","logoLabel","installmentperiod","allowSecondaryVertical","allowSecondaryHorizontal","FUNDING_TO_DEFAULT_LABEL","LABEL_TO_FUNDING","BUTTON_RELATIVE_STYLE","VERTICAL_MARGIN","BUTTON_STYLE","defaultWidth","defaultHeight","minWidth","maxWidth","minHeight","maxHeight","buttonTextMargin","allowFunding","allowTagline","byPayPalHeight","labelToFunding","getButtonConfig","defs","checkoutCustomization","parseLocale","size","color","shape","branding","fundingicons","tagline","configMax","determineMaxButtons","eligibleFunding","ineligibleReason","autoEligibleReason","isFundingEligible","unshift","determineEligibleFunding","multiple","cards","validateButtonLocale","validateButtonStyle","maxbuttons","minButtons","buttonSize","isInstallmentAllowedCountry","validateRegionSpecificButton","creditThrottle","SHOULD_FOCUS","CONTAINER","TAGLINE_COLOR","TEXT","LOGO","SEPARATOR","DOM_READY","PERSONALIZATION_TEXT","pageStyle","buttonStyle","layoutStyle","brandingStyle","labelStyle","DUAL_BUTTON_MIN_RATIO","buttonColorStyle","componentContent","allowedPersonalizationLabels","getCommonButtonClasses","determineLabel","renderCards","logo","tabindex","renderContent","dynamicContent","getLocaleContent","optional","contentString","contentVariable","separator","validateButtonProps","buttonNodes","buttonLabel","determineButtons","contentText","allowedAnimation","hasTabIndex","personalizedButtonText","impression","COMPRESSED","EXPANDED","PAYPAL_BUTTON","PAYPAL_LOGO","BUTTON_TEXT","getButtonTextAnimationStyle","Beacon","renderButtonTextDiv","renderButton","taglineNode","tagColor","Tagline","renderTagline","fundingiconNode","renderFundingIcons","styleNode","cardNumber","buttonHeight","buttonTextMarginTop","minDualWidth","ceil","toFixed","buttonResponsiveStyle","renderStyle","scriptNode","OPTIONAL","SELECTOR","TAG","toArray","getOptionalIndex","getElementsTotalWidth","sum","unique","parentElement","optionalParent","allChildren","optionalChildren","first","second","toggleOptionals","parentWidth","usedWidth","optionalChild","setDomReady","load","buttonsContainer","getElementsByClassName","tabKeyCode","handleMouseDownOnce","handleFirstTab","keyCode","setupTabOutlineEvent","labelPowerByPayPal","renderPowerByPaypalLogo","buttonUrls","possibleSizes","possibleSize","sizeA","sizeB","checkoutUrl","allowpaymentrequest","enableNativeCheckout","prefetchLogin","updateClientConfiguration","memoizedToken","button_version","validateFunding","isCreditDualEligible","remember","restart","tokenize","tokenizePayment","execute","nonce","patch","patchObject","initialHeight","logInlineGuestOutOfViewPortOnlyOnce","isContainerExpanded","isExpansionInViewport","scrollOffsetY","pageYOffset","scrollTop","windowHeight","innerHeight","containerOffsetY","getBoundingClientRect","checkIfExpansionInViewport","innerWidth","validateCalled","getPageUrl","ButtonComponent","doRender","validateCheckoutProps","useraction","native_xo","opType","queryItems","ba_token","paymentId","PayerID","cancel_uri","return_uri","extractDataFromQuery","redirectUrl","buildActions","renderThroughPopupBridge","setupPopupBridgeProxy","pageRenderTime","fundingSources","onApprove","pre","inlineGuest","treatments","setupButtonChild","canRenderTop","methodName","originalPayment","resolveData","rejectActions","ctx","currentDomainEnv","Card","initialFormValues","getState","cardIcons","display","submitButton","currencyConversion","domainToEnv","err3","currentProtocol","precacheRemembered","setup","configure","scriptProtocol","loadTime","apps","PayPalCheckout","enableCheckoutIframe","logger","legacy","_Checkout","_BillingPage","_ThreeDomainSecure","_destroyAll","LOG_PREFIX","MERCHANT_ID","CLASSES","HIDDEN_BUTTON","isLegacyEligible","DEFAULT_LANG","loadButtonJS","buttonJSUrl","renderButtons","buttons","lc","childNodes","condition","click","getHijackTargetElement","parentTagName","grandparentElement","grandparentTagName","redirected","logRedirect","initXO","startFlow","closeFlow","matchUrlAndPaymentToken","parseToken","checkUrlAgainstEnv","awaitPaymentTokenAndUrl","paymentTokenAndUrl","enablev3ajax","formSerialize","urlAndPaymentToken","paypalCheckoutInited","closeFlowCalled","initPayPalCheckout","closeUrl","renderPayPalCheckout","hijackTarget","urlProp","removeAttribute","instrumentButtonRender","setupCalled","environment","badenv","concat","normalizeOptions","setupConfig","clickHandler","tracker","isClick","handleClick","handleClickHijack","listenClick","onKey","oneTimeReady","invokeReady","number"],"mappings":"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ACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KA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","file":"checkout.4.0.307.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 62);\n","/* @flow */\n\nimport type { Enum } from '../types';\n\ntype BUTTON_STYLE_OPTIONS_ENUM =\n Enum<'label' | 'size' | 'shape' | 'color' | 'layout' |\n 'fundingicons' | 'maxbuttons' | 'branding' | 'tagline' | 'height' | 'installmentperiod'>;\n\nexport const BUTTON_STYLE_OPTIONS : BUTTON_STYLE_OPTIONS_ENUM = {\n LABEL: 'label',\n SIZE: 'size',\n SHAPE: 'shape',\n COLOR: 'color',\n LAYOUT: 'layout',\n MAXBUTTONS: 'maxbuttons',\n FUNDINGICONS: 'fundingicons',\n BRANDING: 'branding',\n TAGLINE: 'tagline',\n HEIGHT: 'height',\n INSTALLMENTPERIOD: 'installmentperiod'\n};\n\ntype BUTTON_LABEL_ENUM =\n Enum<'paypal' | 'checkout' | 'pay' | 'credit' |\n 'card' | 'buynow' | 'installment' | 'venmo' | 'itau' | 'ideal' | 'elv' | 'bancontact' | 'giropay' | 'sofort' | 'eps' | 'mybank' | 'p24' | 'payu' | 'verkkopankki' | 'blik' | 'trustly' | 'maxima' | 'boleto' | 'oxxo'>;\n\nexport const BUTTON_LABEL : BUTTON_LABEL_ENUM = {\n PAYPAL: 'paypal',\n CHECKOUT: 'checkout',\n PAY: 'pay',\n CREDIT: 'credit',\n CARD: 'card',\n BUYNOW: 'buynow',\n INSTALLMENT: 'installment',\n VENMO: 'venmo',\n ITAU: 'itau',\n IDEAL: 'ideal',\n ELV: 'elv',\n BANCONTACT: 'bancontact',\n GIROPAY: 'giropay',\n SOFORT: 'sofort',\n EPS: 'eps',\n MYBANK: 'mybank',\n P24: 'p24',\n PAYU: 'payu',\n VERKKOPANKKI: 'verkkopankki',\n BLIK: 'blik',\n TRUSTLY: 'trustly',\n MAXIMA: 'maxima',\n BOLETO: 'boleto',\n OXXO: 'oxxo'\n};\n\ntype BUTTON_COLOR_ENUM =\n Enum<'gold' | 'blue' | 'silver' | 'black' | 'darkblue' | 'transparent' | 'white'>;\n\nexport const BUTTON_COLOR : BUTTON_COLOR_ENUM = {\n GOLD: 'gold',\n BLUE: 'blue',\n SILVER: 'silver',\n BLACK: 'black',\n DARKBLUE: 'darkblue',\n WHITE: 'white',\n TRANSPARENT: 'transparent'\n};\n\ntype BUTTON_LOGO_COLOR_ENUM =\n Enum<'blue' | 'white' | 'black' | 'any'>;\n\nexport const BUTTON_LOGO_COLOR : BUTTON_LOGO_COLOR_ENUM = {\n BLUE: 'blue',\n WHITE: 'white',\n BLACK: 'black',\n ANY: 'any'\n};\n\ntype BUTTON_SIZE_ENUM =\n Enum<'tiny' | 'small' | 'medium' | 'large' | 'huge' | 'responsive'>;\n\nexport const BUTTON_SIZE : BUTTON_SIZE_ENUM = {\n TINY: 'tiny',\n SMALL: 'small',\n MEDIUM: 'medium',\n LARGE: 'large',\n HUGE: 'huge',\n RESPONSIVE: 'responsive'\n};\n\ntype BUTTON_TAGLINE_COLOR_ENUM =\n Enum<'black' | 'blue'>;\n\nexport const BUTTON_TAGLINE_COLOR : BUTTON_TAGLINE_COLOR_ENUM = {\n BLACK: 'black',\n BLUE: 'blue'\n};\n\ntype BUTTON_SHAPE_ENUM =\n Enum<'pill' | 'rect'>;\n\nexport const BUTTON_SHAPE : BUTTON_SHAPE_ENUM = {\n PILL: 'pill',\n RECT: 'rect'\n};\n\ntype BUTTON_BRANDING_ENUM =\n Enum<'branded' | 'unbranded'>;\n\nexport const BUTTON_BRANDING : BUTTON_BRANDING_ENUM = {\n BRANDED: 'branded',\n UNBRANDED: 'unbranded'\n};\n\ntype BUTTON_LAYOUT_ENUM =\n Enum<'horizontal' | 'vertical'>;\n\nexport const BUTTON_LAYOUT : BUTTON_LAYOUT_ENUM = {\n HORIZONTAL: 'horizontal',\n VERTICAL: 'vertical'\n};\n\ntype BUTTON_NUMBER_ENUM =\n Enum<'single' | 'multiple'>;\n\nexport const BUTTON_NUMBER : BUTTON_NUMBER_ENUM = {\n SINGLE: 'single',\n MULTIPLE: 'multiple'\n};\n\ntype BUTTON_LOGO_ENUM =\n Enum<'pp' | 'paypal' | 'venmo' | 'itau' | 'credit' | 'ideal' | 'elv' | 'bancontact' | 'giropay' | 'sofort' | 'eps' | 'mybank' | 'p24' | 'payu' | 'verkkopankki' | 'blik' | 'trustly' | 'maxima' | 'boleto' | 'oxxo'>;\n\nexport const BUTTON_LOGO : BUTTON_LOGO_ENUM = {\n PP: 'pp',\n PAYPAL: 'paypal',\n VENMO: 'venmo',\n ITAU: 'itau',\n CREDIT: 'credit',\n IDEAL: 'ideal',\n ELV: 'elv',\n BANCONTACT: 'bancontact',\n GIROPAY: 'giropay',\n SOFORT: 'sofort',\n EPS: 'eps',\n MYBANK: 'mybank',\n P24: 'p24',\n PAYU: 'payu',\n VERKKOPANKKI: 'verkkopankki',\n BLIK: 'blik',\n TRUSTLY: 'trustly',\n MAXIMA: 'maxima',\n BOLETO: 'boleto',\n OXXO: 'oxxo'\n};\n","/* @flow */\n\nexport const CHECKOUT_OVERLAY_COLOR = {\n BLACK: 'black',\n WHITE: 'white'\n};\n","/* @flow */\n\nexport const FUNDING = {\n PAYPAL: 'paypal',\n VENMO: 'venmo',\n ITAU: 'itau',\n CREDIT: 'credit',\n CARD: 'card',\n IDEAL: 'ideal',\n ELV: 'elv',\n BANCONTACT: 'bancontact',\n GIROPAY: 'giropay',\n SOFORT: 'sofort',\n EPS: 'eps',\n MYBANK: 'mybank',\n P24: 'p24',\n ZIMPLER: 'zimpler',\n PAYU: 'payu',\n VERKKOPANKKI: 'verkkopankki',\n BLIK: 'blik',\n TRUSTLY: 'trustly',\n MAXIMA: 'maxima',\n BOLETO: 'boleto',\n OXXO: 'oxxo'\n};\n\nexport const CARD = {\n VISA: 'visa',\n MASTERCARD: 'mastercard',\n AMEX: 'amex',\n DISCOVER: 'discover',\n SWITCH: 'switch',\n MAESTRO: 'maestro',\n HIPER: 'hiper',\n ELO: 'elo',\n JCB: 'jcb',\n CUP: 'cup',\n COFINOGA: 'cofinoga',\n COFIDIS: 'cofidis',\n CETELEM: 'cetelem',\n CBNATIONALE: 'cbnationale'\n};\n\nexport const FUNDING_ELIGIBILITY_REASON = {\n PRIMARY: 'The funding source is the primary source',\n NOT_ENABLED: 'The funding source is not currently enabled for use',\n SECONDARY_DISALLOWED: 'The funding source is disallowed as a secondary button',\n OPT_OUT: 'The funding source was disallowed in funding.disallowed',\n OPT_IN: 'The funding source was allowed in funding.allowed',\n DISALLOWED_COUNTRY: 'The funding source is not enabled for the current locale',\n DEFAULT_COUNTRY: 'The funding source is enabled by default for the current locale',\n DEFAULT: 'The funding source is enabled by default for all users',\n REMEMBERED: 'The funding source was remembered for the current user',\n NEED_OPT_IN: 'The funding source needs to be allowed in funding.allowed',\n COMMIT_NOT_SET: 'The funding source is not enabled when commit is not set as true',\n INVALID_ENV: 'The funding source is not supported in this environment'\n};\n\nexport const CARD_PRIORITY = [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.DISCOVER,\n CARD.SWITCH,\n CARD.MAESTRO,\n CARD.HIPER,\n CARD.ELO,\n CARD.JCB,\n CARD.CUP,\n CARD.COFINOGA,\n CARD.COFIDIS,\n CARD.CETELEM,\n CARD.CBNATIONALE\n];\n","/* @flow */\n\nexport const ENV = {\n LOCAL: 'local',\n STAGE: 'stage',\n SANDBOX: 'sandbox',\n PRODUCTION: 'production',\n TEST: 'test',\n DEMO: 'demo'\n};\n\nexport const USERS = {\n ALL: 'all',\n REMEMBERED: 'remembered'\n};\n\nexport const SOURCE = {\n MANUAL: 'manual',\n BUTTON_FACTORY: 'button_factory'\n};\n\nexport const LOG_LEVEL = {\n DEBUG: 'debug',\n INFO: 'info',\n WARN: 'warn',\n ERROR: 'error'\n};\n\nexport const PAYMENT_TYPE = {\n EC_TOKEN: 'ec_token',\n BA_TOKEN: 'ba_token',\n PAY_ID: 'pay_id'\n};\n\nexport const PPTM_ID = 'xo-pptm';\n\nexport const ATTRIBUTE = {\n BUTTON: 'data-button',\n FUNDING_SOURCE: 'data-funding-source',\n CARD: 'data-card',\n VERSION: 'data-version',\n LAYOUT: 'data-layout',\n SIZE: 'data-size'\n};\n\nexport const PLATFORM = {\n DESKTOP: 'desktop',\n MOBILE: 'mobile'\n};\n\nexport const DEFAULT = 'default';\n\n\n","/* @flow */\n\nimport { PAYMENT_TYPE } from './misc';\n\nexport const FPTI = {\n\n KEY: {\n FEED: 'feed_name',\n STATE: 'state_name',\n TRANSITION: 'transition_name',\n BUTTON_TYPE: 'button_type',\n SESSION_UID: 'page_session_id',\n BUTTON_SESSION_UID: 'button_session_id',\n TOKEN: 'token',\n CONTEXT_ID: 'context_id',\n CONTEXT_TYPE: 'context_type',\n REFERER: 'referer_url',\n PAY_ID: 'pay_id',\n SELLER_ID: 'seller_id',\n DATA_SOURCE: 'serverside_data_source',\n BUTTON_SOURCE: 'button_source',\n ERROR_CODE: 'ext_error_code',\n ERROR_DESC: 'ext_error_desc',\n PAGE_LOAD_TIME: 'page_load_time',\n EXPERIMENT_NAME: 'pxp_exp_id',\n TREATMENT_NAME: 'pxp_trtmnt_id',\n TRANSITION_TIME: 'transition_time',\n FUNDING_LIST: 'eligible_payment_methods',\n FUNDING_COUNT: 'eligible_payment_count',\n CHOSEN_FUNDING: 'selected_payment_method',\n BUTTON_LAYOUT: 'button_layout',\n BUTTON_COLOR: 'button_color',\n BUTTON_SIZE: 'button_size',\n BUTTON_SHAPE: 'button_shape',\n BUTTON_LABEL: 'button_label',\n BUTTON_WIDTH: 'button_width',\n VERSION: 'checkoutjs_version',\n MAX_BUTTONS: 'max_buttons',\n FUNDING_REMEMBERED: 'funding_remembered',\n BUTTON_TAGLINE_ENABLED: 'button_tagline_enabled',\n RESPONSE_DURATION: 'response_duration',\n PAYMENT_FLOW: 'payment_flow',\n BUTTON_VERSION: 'button_version'\n },\n\n BUTTON_TYPE: {\n IFRAME: 'iframe',\n HTML: 'html',\n CUSTOM: 'custom'\n },\n\n DATA_SOURCE: {\n CHECKOUT: 'checkout'\n },\n\n CONTEXT_TYPE: {\n BUTTON_SESSION_ID: 'button_session_id',\n [ PAYMENT_TYPE.PAY_ID ]: 'Pay-ID',\n [ PAYMENT_TYPE.EC_TOKEN ]: 'EC-Token',\n [ PAYMENT_TYPE.BA_TOKEN ]: 'EC-Token'\n },\n\n FEED: {\n CHECKOUTJS: 'checkoutjs'\n },\n\n STATE: {\n LOAD: 'checkoutjs_load',\n BUTTON: 'checkoutjs_button',\n CHECKOUT: 'checkoutjs_checkout',\n PPTM: 'checkoutjs_pptm'\n },\n\n TRANSITION: {\n SCRIPT_LOAD: 'process_script_load',\n\n BUTTON_RENDER: 'process_button_render',\n BUTTON_LOAD: 'process_button_load',\n BUTTON_CLICK: 'process_button_click',\n\n BUTTON_RENDER_INTRANET_MODE: 'process_button_render_intranet_mode',\n BUTTON_CLICK_INTRANET_MODE: 'process_button_click_intranet_mode',\n\n CREATE_PAYMENT: 'process_create_payment',\n RECIEVE_PAYMENT: 'process_recieve_payment',\n\n CHECKOUT_INIT: 'process_checkout_init',\n CHECKOUT_AUTHORIZE: 'process_checkout_authorize',\n CHECKOUT_SHIPPING_CHANGE: 'process_checkout_shipping_change',\n CHECKOUT_CANCEL: 'process_checkout_cancel',\n CHECKOUT_ERROR: 'process_checkout_error',\n\n EXTERNAL_EXPERIMENT: 'process_external_experiment',\n EXTERNAL_EXPERIMENT_COMPLETE: 'process_external_experiment_complete',\n\n PPTM_LOAD: 'process_pptm_load',\n PPTM_LOADED: 'process_pptm_loaded'\n }\n};\n","/* @flow */\n\nexport const COUNTRY = {\n AD: 'AD',\n AE: 'AE',\n AG: 'AG',\n AI: 'AI',\n AL: 'AL',\n AM: 'AM',\n AN: 'AN',\n AO: 'AO',\n AR: 'AR',\n AT: 'AT',\n AU: 'AU',\n AW: 'AW',\n AZ: 'AZ',\n BA: 'BA',\n BB: 'BB',\n BE: 'BE',\n BF: 'BF',\n BG: 'BG',\n BH: 'BH',\n BI: 'BI',\n BJ: 'BJ',\n BM: 'BM',\n BN: 'BN',\n BO: 'BO',\n BR: 'BR',\n BS: 'BS',\n BT: 'BT',\n BW: 'BW',\n BY: 'BY',\n BZ: 'BZ',\n C2: 'C2',\n CA: 'CA',\n CD: 'CD',\n CG: 'CG',\n CH: 'CH',\n CI: 'CI',\n CK: 'CK',\n CL: 'CL',\n CM: 'CM',\n CN: 'CN',\n CO: 'CO',\n CR: 'CR',\n CV: 'CV',\n CY: 'CY',\n CZ: 'CZ',\n DE: 'DE',\n DJ: 'DJ',\n DK: 'DK',\n DM: 'DM',\n DO: 'DO',\n DZ: 'DZ',\n EC: 'EC',\n EE: 'EE',\n EG: 'EG',\n ER: 'ER',\n ES: 'ES',\n ET: 'ET',\n FI: 'FI',\n FJ: 'FJ',\n FK: 'FK',\n FM: 'FM',\n FO: 'FO',\n FR: 'FR',\n GA: 'GA',\n GB: 'GB',\n GD: 'GD',\n GE: 'GE',\n GF: 'GF',\n GI: 'GI',\n GL: 'GL',\n GM: 'GM',\n GN: 'GN',\n GP: 'GP',\n GR: 'GR',\n GT: 'GT',\n GW: 'GW',\n GY: 'GY',\n HK: 'HK',\n HN: 'HN',\n HR: 'HR',\n HU: 'HU',\n ID: 'ID',\n IE: 'IE',\n IL: 'IL',\n IN: 'IN',\n IS: 'IS',\n IT: 'IT',\n JM: 'JM',\n JO: 'JO',\n JP: 'JP',\n KE: 'KE',\n KG: 'KG',\n KH: 'KH',\n KI: 'KI',\n KM: 'KM',\n KN: 'KN',\n KR: 'KR',\n KW: 'KW',\n KY: 'KY',\n KZ: 'KZ',\n LA: 'LA',\n LC: 'LC',\n LI: 'LI',\n LK: 'LK',\n LS: 'LS',\n LT: 'LT',\n LU: 'LU',\n LV: 'LV',\n MA: 'MA',\n MC: 'MC',\n MD: 'MD',\n ME: 'ME',\n MG: 'MG',\n MH: 'MH',\n MK: 'MK',\n ML: 'ML',\n MN: 'MN',\n MQ: 'MQ',\n MR: 'MR',\n MS: 'MS',\n MT: 'MT',\n MU: 'MU',\n MV: 'MV',\n MW: 'MW',\n MX: 'MX',\n MY: 'MY',\n MZ: 'MZ',\n NA: 'NA',\n NC: 'NC',\n NE: 'NE',\n NF: 'NF',\n NG: 'NG',\n NI: 'NI',\n NL: 'NL',\n NO: 'NO',\n NP: 'NP',\n NR: 'NR',\n NU: 'NU',\n NZ: 'NZ',\n OM: 'OM',\n PA: 'PA',\n PE: 'PE',\n PF: 'PF',\n PG: 'PG',\n PH: 'PH',\n PL: 'PL',\n PM: 'PM',\n PN: 'PN',\n PT: 'PT',\n PW: 'PW',\n PY: 'PY',\n QA: 'QA',\n RE: 'RE',\n RO: 'RO',\n RS: 'RS',\n RU: 'RU',\n RW: 'RW',\n SA: 'SA',\n SB: 'SB',\n SC: 'SC',\n SE: 'SE',\n SG: 'SG',\n SH: 'SH',\n SI: 'SI',\n SJ: 'SJ',\n SK: 'SK',\n SL: 'SL',\n SM: 'SM',\n SN: 'SN',\n SO: 'SO',\n SR: 'SR',\n ST: 'ST',\n SV: 'SV',\n SZ: 'SZ',\n TC: 'TC',\n TD: 'TD',\n TG: 'TG',\n TH: 'TH',\n TJ: 'TJ',\n TM: 'TM',\n TN: 'TN',\n TO: 'TO',\n TR: 'TR',\n TT: 'TT',\n TV: 'TV',\n TW: 'TW',\n TZ: 'TZ',\n UA: 'UA',\n UG: 'UG',\n US: 'US',\n UY: 'UY',\n VA: 'VA',\n VC: 'VC',\n VE: 'VE',\n VG: 'VG',\n VN: 'VN',\n VU: 'VU',\n WF: 'WF',\n WS: 'WS',\n YE: 'YE',\n YT: 'YT',\n ZA: 'ZA',\n ZM: 'ZM',\n ZW: 'ZW'\n};\n\nexport const LANG = {\n AR: 'ar',\n CS: 'cs',\n DA: 'da',\n DE: 'de',\n EL: 'el',\n EN: 'en',\n ES: 'es',\n FI: 'fi',\n FR: 'fr',\n HE: 'he',\n HU: 'hu',\n ID: 'id',\n IT: 'it',\n JA: 'ja',\n KO: 'ko',\n NL: 'nl',\n NO: 'no',\n PL: 'pl',\n PT: 'pt',\n RU: 'ru',\n SK: 'sk',\n SV: 'sv',\n TH: 'th',\n TR: 'tr',\n ZH: 'zh'\n};\n\nexport const LANG_TO_DEFAULT_COUNTRY = {\n [LANG.AR]: COUNTRY.SA,\n [LANG.CS]: COUNTRY.CZ,\n [LANG.DA]: COUNTRY.DK,\n [LANG.DE]: COUNTRY.DE,\n [LANG.EL]: COUNTRY.GR,\n [LANG.EN]: COUNTRY.US,\n [LANG.ES]: COUNTRY.ES,\n [LANG.FI]: COUNTRY.FI,\n [LANG.FR]: COUNTRY.FR,\n [LANG.HE]: COUNTRY.IL,\n [LANG.HU]: COUNTRY.HU,\n [LANG.ID]: COUNTRY.ID,\n [LANG.IT]: COUNTRY.IT,\n [LANG.JA]: COUNTRY.JP,\n [LANG.KO]: COUNTRY.KR,\n [LANG.NL]: COUNTRY.NL,\n [LANG.NO]: COUNTRY.NO,\n [LANG.PL]: COUNTRY.PL,\n [LANG.PT]: COUNTRY.PT,\n [LANG.RU]: COUNTRY.RU,\n [LANG.SK]: COUNTRY.SK,\n [LANG.SV]: COUNTRY.SE,\n [LANG.TH]: COUNTRY.TH,\n [LANG.TR]: COUNTRY.TR,\n [LANG.ZH]: COUNTRY.CN\n};\n\nexport const ALLOWED_INSTALLMENT_COUNTRIES = [ COUNTRY.BR, COUNTRY.MX ];\nexport const ALLOWED_INSTALLMENT_PERIOD = {\n BR: [ 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ],\n MX: [ 3, 6, 9, 12 ]\n};\n","/* @flow */\n\nimport { COUNTRY, LANG } from './country';\n\nexport const LOCALE = {\n [COUNTRY.AD]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AE]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH, LANG.AR ],\n [COUNTRY.AG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AI]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AL]: [ LANG.EN ],\n [COUNTRY.AM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AN]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AO]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AR]: [ LANG.ES, LANG.EN ],\n [COUNTRY.AT]: [ LANG.DE, LANG.EN ],\n [COUNTRY.AU]: [ LANG.EN ],\n [COUNTRY.AW]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BA]: [ LANG.EN ],\n [COUNTRY.BB]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BE]: [ LANG.EN, LANG.NL, LANG.FR ],\n [COUNTRY.BF]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.BG]: [ LANG.EN ],\n [COUNTRY.BH]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BI]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.BJ]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.BM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BN]: [ LANG.EN ],\n [COUNTRY.BO]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.BR]: [ LANG.PT, LANG.EN ],\n [COUNTRY.BS]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BT]: [ LANG.EN ],\n [COUNTRY.BW]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BY]: [ LANG.EN ],\n [COUNTRY.BZ]: [ LANG.EN, LANG.ES, LANG.FR, LANG.ZH ],\n [COUNTRY.C2]: [ LANG.ZH, LANG.EN ],\n [COUNTRY.CA]: [ LANG.EN, LANG.FR ],\n [COUNTRY.CD]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.CG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.CH]: [ LANG.DE, LANG.FR, LANG.EN ],\n [COUNTRY.CI]: [ LANG.FR, LANG.EN ],\n [COUNTRY.CK]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.CL]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.CM]: [ LANG.FR, LANG.EN ],\n [COUNTRY.CN]: [ LANG.ZH ],\n [COUNTRY.CO]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.CR]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.CV]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.CY]: [ LANG.EN ],\n [COUNTRY.CZ]: [ LANG.CS, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.DE]: [ LANG.DE, LANG.EN ],\n [COUNTRY.DJ]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.DK]: [ LANG.DA, LANG.EN ],\n [COUNTRY.DM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.DO]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.DZ]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.EC]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.EE]: [ LANG.EN, LANG.RU, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.EG]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ER]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ES]: [ LANG.ES, LANG.EN ],\n [COUNTRY.ET]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.FI]: [ LANG.FI, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.FJ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.FK]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.FM]: [ LANG.EN ],\n [COUNTRY.FO]: [ LANG.DA, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.FR]: [ LANG.FR, LANG.EN ],\n [COUNTRY.GA]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.GB]: [ LANG.EN ],\n [COUNTRY.GD]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GE]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GF]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GI]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GL]: [ LANG.DA, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GN]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.GP]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GR]: [ LANG.EL, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GT]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.GW]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GY]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.HK]: [ LANG.EN, LANG.ZH ],\n [COUNTRY.HN]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.HR]: [ LANG.EN ],\n [COUNTRY.HU]: [ LANG.HU, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ID]: [ LANG.ID, LANG.EN ],\n [COUNTRY.IE]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.IL]: [ LANG.HE, LANG.EN ],\n [COUNTRY.IN]: [ LANG.EN ],\n [COUNTRY.IS]: [ LANG.EN ],\n [COUNTRY.IT]: [ LANG.IT, LANG.EN ],\n [COUNTRY.JM]: [ LANG.EN, LANG.ES, LANG.FR, LANG.ZH ],\n [COUNTRY.JO]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.JP]: [ LANG.JA, LANG.EN ],\n [COUNTRY.KE]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KH]: [ LANG.EN ],\n [COUNTRY.KI]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KM]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.KN]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KR]: [ LANG.KO, LANG.EN ],\n [COUNTRY.KW]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KY]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LA]: [ LANG.EN ],\n [COUNTRY.LC]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LI]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LK]: [ LANG.EN ],\n [COUNTRY.LS]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LT]: [ LANG.EN, LANG.RU, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LU]: [ LANG.EN, LANG.DE, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LV]: [ LANG.EN, LANG.RU, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MA]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MC]: [ LANG.FR, LANG.EN ],\n [COUNTRY.MD]: [ LANG.EN ],\n [COUNTRY.ME]: [ LANG.EN ],\n [COUNTRY.MG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MH]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MK]: [ LANG.EN ],\n [COUNTRY.ML]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.MN]: [ LANG.EN ],\n [COUNTRY.MQ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MR]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MS]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MT]: [ LANG.EN ],\n [COUNTRY.MU]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MV]: [ LANG.EN ],\n [COUNTRY.MW]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MX]: [ LANG.ES, LANG.EN ],\n [COUNTRY.MY]: [ LANG.EN ],\n [COUNTRY.MZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NA]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NC]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NE]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.NF]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NG]: [ LANG.EN ],\n [COUNTRY.NI]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.NL]: [ LANG.NL, LANG.EN ],\n [COUNTRY.NO]: [ LANG.NO, LANG.EN ],\n [COUNTRY.NP]: [ LANG.EN ],\n [COUNTRY.NR]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NU]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.OM]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PA]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.PE]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.PF]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PH]: [ LANG.EN ],\n [COUNTRY.PL]: [ LANG.PL, LANG.EN ],\n [COUNTRY.PM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PN]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PT]: [ LANG.PT, LANG.EN ],\n [COUNTRY.PW]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PY]: [ LANG.ES, LANG.EN ],\n [COUNTRY.QA]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH, LANG.AR ],\n [COUNTRY.RE]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.RO]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.RS]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.RU]: [ LANG.RU, LANG.EN ],\n [COUNTRY.RW]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.SA]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SB]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SC]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.SE]: [ LANG.SV, LANG.EN ],\n [COUNTRY.SG]: [ LANG.EN ],\n [COUNTRY.SH]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SI]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SJ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SK]: [ LANG.SK, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SL]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SN]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.SO]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SR]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ST]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SV]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.SZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TC]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TD]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.TG]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.TH]: [ LANG.TH, LANG.EN ],\n [COUNTRY.TJ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TN]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TO]: [ LANG.EN ],\n [COUNTRY.TR]: [ LANG.TR, LANG.EN ],\n [COUNTRY.TT]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TV]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TW]: [ LANG.ZH, LANG.EN ],\n [COUNTRY.TZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.UA]: [ LANG.EN, LANG.RU, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.UG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.US]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.UY]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.VA]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.VC]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.VE]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.VG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.VN]: [ LANG.EN ],\n [COUNTRY.VU]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.WF]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.WS]: [ LANG.EN ],\n [COUNTRY.YE]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.YT]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ZA]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ZM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ZW]: [ LANG.EN ]\n};\n","/* @flow */\n\nexport * from './button';\nexport * from './checkout';\nexport * from './funding';\nexport * from './fpti';\nexport * from './country';\nexport * from './misc';\nexport * from './locale';\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { regexMap } from './util';\n\n// eslint-disable-next-line no-use-before-define\nexport type ChildType = $ReadOnlyArray | JsxHTMLNode | string | void | null;\nexport type ChildrenType = $ReadOnlyArray;\ntype PropsType = ?{ class? : string, id? : string, innerHTML? : string };\n\nfunction htmlEncode(html : string = '') : string {\n return html.toString()\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(/\\//g, '/');\n}\n\nexport class JsxHTMLNode {\n name : string\n props : PropsType\n children : ChildrenType\n\n constructor(name : string, props : PropsType, children : ChildrenType) {\n this.name = name;\n this.props = props;\n this.children = children;\n }\n\n toString() : string {\n return `<${ this.name }${ this.props ? ' ' : '' }${ this.props ? this.propsToString() : '' }>${ this.childrenToString() }`;\n }\n\n propsToString() : string {\n const props = this.props;\n\n if (!props) {\n return '';\n }\n\n return Object.keys(props).filter(key => {\n return key !== 'innerHTML' && props && props[key] !== false;\n }).map(key => {\n if (props && props[key] === true) {\n return `${ htmlEncode(key) }`;\n }\n return props ? `${ htmlEncode(key) }=\"${ htmlEncode(props[key]) }\"` : '';\n }).join(' ');\n }\n\n childrenToString() : string {\n\n if (this.props && this.props.innerHTML) {\n return this.props.innerHTML;\n }\n\n if (!this.children) {\n return '';\n }\n\n let result = '';\n\n function iterate(children) {\n for (const child of children) {\n\n if (child === null || child === undefined) {\n continue;\n }\n\n if (Array.isArray(child)) {\n iterate(child);\n } else if (child instanceof JsxHTMLNode) {\n result += child.toString();\n } else {\n result += htmlEncode(child);\n }\n }\n }\n\n iterate(this.children);\n\n return result;\n }\n}\n\nexport class JsxHTMLNodeContainer extends JsxHTMLNode {\n\n\n constructor(children : ChildrenType) {\n super('', {}, children);\n }\n\n toString() : string {\n return this.childrenToString();\n }\n}\n\nexport function jsxToHTML(name : string, props : PropsType, ...children : ChildrenType) : JsxHTMLNode {\n return new JsxHTMLNode(name, props, children);\n}\n\nexport function jsxRender(template : string, renderers : { [string] : (string) =>?(JsxHTMLNode | $ReadOnlyArray) }) : JsxHTMLNode {\n\n // eslint-disable-next-line security/detect-unsafe-regex, unicorn/no-unsafe-regex\n const nodes = regexMap(template, /\\{\\s*([a-z]+)(?::\\s*([^} ]+))?\\s*\\}|([^${}]+)/g, (match, type, value, text) => {\n if (type) {\n if (!renderers[type]) {\n throw new Error(`Can not render type: ${ type }`);\n }\n\n return renderers[type](value);\n } else if (text && text.trim()) {\n\n if (!renderers.text) {\n return text;\n }\n\n if ((/
/).test(text)) {\n return renderers.break(text);\n } else {\n return renderers.text(text);\n }\n } else {\n return text;\n }\n });\n\n return new JsxHTMLNodeContainer(nodes);\n}\n","/* @flow */\n\nexport function isPromise(item : mixed) : boolean {\n try {\n if (!item) {\n return false;\n }\n\n if (typeof Promise !== 'undefined' && item instanceof Promise) {\n return true;\n }\n\n if (typeof window !== 'undefined' && typeof window.Window === 'function' && item instanceof window.Window) {\n return false;\n }\n\n if (typeof window !== 'undefined' && typeof window.constructor === 'function' && item instanceof window.constructor) {\n return false;\n }\n\n let toString = ({}).toString;\n\n if (toString) {\n let name = toString.call(item);\n\n if (name === '[object Window]' || name === '[object global]' || name === '[object DOMWindow]') {\n return false;\n }\n }\n\n if (typeof item.then === 'function') {\n return true;\n }\n } catch (err) {\n return false;\n }\n\n return false;\n}\n","/* @flow */\n\nimport type { ZalgoPromise } from './promise';\n\nconst dispatchedErrors = [];\nconst possiblyUnhandledPromiseHandlers : Array<(mixed, promise? : ZalgoPromise) => void> = [];\n\nexport function dispatchPossiblyUnhandledError(err : mixed, promise : ZalgoPromise) {\n\n if (dispatchedErrors.indexOf(err) !== -1) {\n return;\n }\n\n dispatchedErrors.push(err);\n\n setTimeout(() => {\n if (__DEBUG__) {\n // $FlowFixMe\n throw new Error(`${ err.stack || err.toString() }\\n\\nFrom promise:\\n\\n${ promise.stack }`);\n }\n\n throw err;\n }, 1);\n\n for (let j = 0; j < possiblyUnhandledPromiseHandlers.length; j++) {\n // $FlowFixMe\n possiblyUnhandledPromiseHandlers[j](err, promise);\n }\n}\n\nexport function onPossiblyUnhandledException(handler : (mixed, promise? : ZalgoPromise) => void) : { cancel : () => void } {\n possiblyUnhandledPromiseHandlers.push(handler);\n\n return {\n cancel() {\n possiblyUnhandledPromiseHandlers.splice(possiblyUnhandledPromiseHandlers.indexOf(handler), 1);\n }\n };\n}\n","/* @flow */\n\nimport type { ZalgoPromise } from './promise';\n\nlet activeCount = 0;\nlet flushPromise;\n\nfunction flushActive() {\n if (!activeCount && flushPromise) {\n const promise = flushPromise;\n flushPromise = null;\n promise.resolve();\n }\n}\n\nexport function startActive() {\n activeCount += 1;\n}\n\nexport function endActive() {\n activeCount -= 1;\n flushActive();\n}\n\nexport function awaitActive(Zalgo : Class>) : ZalgoPromise { // eslint-disable-line no-undef\n let promise = flushPromise = flushPromise || new Zalgo();\n flushActive();\n return promise;\n}\n","/* @flow */\n\nimport { isPromise } from './utils';\nimport { onPossiblyUnhandledException, dispatchPossiblyUnhandledError } from './exceptions';\nimport { startActive, endActive, awaitActive } from './flush';\n\nexport class ZalgoPromise {\n\n resolved : boolean\n rejected : boolean\n errorHandled : boolean\n value : R\n error : mixed\n handlers : Array<{\n promise : ZalgoPromise<*>,\n onSuccess : void | (result : R) => mixed,\n onError : void | (error : mixed) => mixed\n }>\n dispatching : boolean\n stack : string\n\n constructor(handler : ?(resolve : (result : R) => void, reject : (error : mixed) => void) => void) {\n\n this.resolved = false;\n this.rejected = false;\n this.errorHandled = false;\n\n this.handlers = [];\n\n if (handler) {\n\n let result;\n let error;\n let resolved = false;\n let rejected = false;\n let isAsync = false;\n\n startActive();\n\n try {\n handler(res => {\n if (isAsync) {\n this.resolve(res);\n } else {\n resolved = true;\n result = res;\n }\n\n }, err => {\n if (isAsync) {\n this.reject(err);\n } else {\n rejected = true;\n error = err;\n }\n });\n\n } catch (err) {\n endActive();\n this.reject(err);\n return;\n }\n\n endActive();\n\n isAsync = true;\n\n if (resolved) {\n // $FlowFixMe\n this.resolve(result);\n } else if (rejected) {\n this.reject(error);\n }\n }\n\n if (__DEBUG__) {\n try {\n throw new Error(`ZalgoPromise`);\n } catch (err) {\n this.stack = err.stack;\n }\n }\n }\n\n resolve(result : R) : ZalgoPromise {\n if (this.resolved || this.rejected) {\n return this;\n }\n\n if (isPromise(result)) {\n throw new Error('Can not resolve promise with another promise');\n }\n\n this.resolved = true;\n this.value = result;\n this.dispatch();\n\n return this;\n }\n\n reject(error : mixed) : ZalgoPromise {\n if (this.resolved || this.rejected) {\n return this;\n }\n\n if (isPromise(error)) {\n throw new Error('Can not reject promise with another promise');\n }\n\n if (!error) {\n // $FlowFixMe\n let err = (error && typeof error.toString === 'function' ? error.toString() : Object.prototype.toString.call(error));\n error = new Error(`Expected reject to be called with Error, got ${ err }`);\n }\n\n this.rejected = true;\n this.error = error;\n\n if (!this.errorHandled) {\n setTimeout(() => {\n if (!this.errorHandled) {\n dispatchPossiblyUnhandledError(error, this);\n }\n }, 1);\n }\n\n this.dispatch();\n\n return this;\n }\n\n asyncReject(error : mixed) : ZalgoPromise {\n this.errorHandled = true;\n this.reject(error);\n return this;\n }\n \n dispatch() {\n\n let { dispatching, resolved, rejected, handlers } = this;\n\n if (dispatching) {\n return;\n }\n\n if (!resolved && !rejected) {\n return;\n }\n\n this.dispatching = true;\n startActive();\n\n const chain = (firstPromise : ZalgoPromise, secondPromise : ZalgoPromise) => {\n return firstPromise.then(res => {\n secondPromise.resolve(res);\n }, err => {\n secondPromise.reject(err);\n });\n };\n\n for (let i = 0; i < handlers.length; i++) {\n\n let { onSuccess, onError, promise } = handlers[i];\n\n let result;\n\n if (resolved) {\n\n try {\n result = onSuccess ? onSuccess(this.value) : this.value;\n } catch (err) {\n promise.reject(err);\n continue;\n }\n\n } else if (rejected) {\n\n if (!onError) {\n promise.reject(this.error);\n continue;\n }\n\n try {\n result = onError(this.error);\n } catch (err) {\n promise.reject(err);\n continue;\n }\n }\n\n if (result instanceof ZalgoPromise && (result.resolved || result.rejected)) {\n\n if (result.resolved) {\n promise.resolve(result.value);\n } else {\n promise.reject(result.error);\n }\n\n result.errorHandled = true;\n\n } else if (isPromise(result)) {\n\n if (result instanceof ZalgoPromise && (result.resolved || result.rejected)) {\n if (result.resolved) {\n promise.resolve(result.value);\n } else {\n promise.reject(result.error);\n }\n\n } else {\n // $FlowFixMe\n chain(result, promise);\n }\n\n } else {\n\n promise.resolve(result);\n }\n }\n\n handlers.length = 0;\n this.dispatching = false;\n endActive();\n }\n\n then(onSuccess : void | (result : R) => (ZalgoPromise | Y), onError : void | (error : mixed) => (ZalgoPromise | Y)) : ZalgoPromise {\n\n if (onSuccess && typeof onSuccess !== 'function' && !onSuccess.call) {\n throw new Error('Promise.then expected a function for success handler');\n }\n\n if (onError && typeof onError !== 'function' && !onError.call) {\n throw new Error('Promise.then expected a function for error handler');\n }\n\n let promise : ZalgoPromise = new ZalgoPromise();\n\n this.handlers.push({\n promise,\n onSuccess,\n onError\n });\n\n this.errorHandled = true;\n\n this.dispatch();\n\n return promise;\n }\n\n catch(onError : (error : mixed) => ZalgoPromise | Y) : ZalgoPromise {\n return this.then(undefined, onError);\n }\n\n finally(onFinally : () => mixed) : ZalgoPromise {\n\n if (onFinally && typeof onFinally !== 'function' && !onFinally.call) {\n throw new Error('Promise.finally expected a function');\n }\n\n return this.then((result) => {\n return ZalgoPromise.try(onFinally)\n .then(() => {\n return result;\n });\n }, (err) => {\n return ZalgoPromise.try(onFinally)\n .then(() => {\n throw err;\n });\n });\n }\n\n timeout(time : number, err : ?Error) : ZalgoPromise {\n\n if (this.resolved || this.rejected) {\n return this;\n }\n\n let timeout = setTimeout(() => {\n\n if (this.resolved || this.rejected) {\n return;\n }\n\n this.reject(err || new Error(`Promise timed out after ${ time }ms`));\n\n }, time);\n\n return this.then(result => {\n clearTimeout(timeout);\n return result;\n });\n }\n\n // $FlowFixMe\n toPromise() : Promise {\n // $FlowFixMe\n if (typeof Promise === 'undefined') {\n throw new TypeError(`Could not find Promise`);\n }\n // $FlowFixMe\n return Promise.resolve(this); // eslint-disable-line compat/compat\n }\n\n static resolve(value : X | ZalgoPromise) : ZalgoPromise {\n\n if (value instanceof ZalgoPromise) {\n return value;\n }\n\n if (isPromise(value)) {\n // $FlowFixMe\n return new ZalgoPromise((resolve, reject) => value.then(resolve, reject));\n }\n\n return new ZalgoPromise().resolve(value);\n }\n\n static reject(error : mixed) : ZalgoPromise {\n return new ZalgoPromise().reject(error);\n }\n\n static asyncReject(error : mixed) : ZalgoPromise {\n return new ZalgoPromise().asyncReject(error);\n }\n\n static all>(promises : X) : ZalgoPromise<$TupleMap(ZalgoPromise | Y) => Y>> { // eslint-disable-line no-undef\n\n let promise = new ZalgoPromise();\n let count = promises.length;\n let results = [];\n\n if (!count) {\n promise.resolve(results);\n return promise;\n }\n\n const chain = (i : number, firstPromise : ZalgoPromise, secondPromise : ZalgoPromise) => {\n return firstPromise.then(res => {\n results[i] = res;\n count -= 1;\n if (count === 0) {\n promise.resolve(results);\n }\n }, err => {\n secondPromise.reject(err);\n });\n };\n\n for (let i = 0; i < promises.length; i++) {\n let prom = promises[i];\n\n if (prom instanceof ZalgoPromise) {\n if (prom.resolved) {\n results[i] = prom.value;\n count -= 1;\n continue;\n }\n } else if (!isPromise(prom)) {\n results[i] = prom;\n count -= 1;\n continue;\n }\n\n chain(i, ZalgoPromise.resolve(prom), promise);\n }\n\n if (count === 0) {\n promise.resolve(results);\n }\n\n return promise;\n }\n\n static hash(promises : O) : ZalgoPromise<$ObjMap(ZalgoPromise | Y) => Y>> { // eslint-disable-line no-undef\n let result = {};\n \n return ZalgoPromise.all(Object.keys(promises).map(key => {\n return ZalgoPromise.resolve(promises[key]).then(value => {\n result[key] = value;\n });\n })).then(() => {\n return result;\n });\n }\n\n static map(items : Array, method : (T) => (ZalgoPromise | X)) : ZalgoPromise> {\n // $FlowFixMe\n return ZalgoPromise.all(items.map(method));\n }\n\n static onPossiblyUnhandledException(handler : (err : mixed) => void) : { cancel : () => void } {\n return onPossiblyUnhandledException(handler);\n }\n\n static try>(method : (...args : A) => (ZalgoPromise | Y), context : ?C, args : ?A) : ZalgoPromise {\n\n if (method && typeof method !== 'function' && !method.call) {\n throw new Error('Promise.try expected a function');\n }\n\n let result;\n\n startActive();\n \n try {\n // $FlowFixMe\n result = method.apply(context, args || []);\n } catch (err) {\n endActive();\n return ZalgoPromise.reject(err);\n }\n\n endActive();\n\n return ZalgoPromise.resolve(result);\n }\n\n static delay(delay : number) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n setTimeout(resolve, delay);\n });\n }\n\n static isPromise(value : mixed) : boolean {\n\n if (value && value instanceof ZalgoPromise) {\n return true;\n }\n\n return isPromise(value);\n }\n\n static flush() : ZalgoPromise {\n return awaitActive(ZalgoPromise);\n }\n}\n","/* @flow */\n\nexport { ZalgoPromise } from './promise';\n","/* @flow */\n\nimport { CONFIG as POSTROBOT_CONFIG } from 'post-robot/src';\nimport { setTransport, getTransport, addPayloadBuilder, addHeaderBuilder, addMetaBuilder,\n addTrackingBuilder, init, logLevels, config as loggerConfig } from 'beaver-logger/client';\nimport { getParent, PROTOCOL } from 'cross-domain-utils/src';\n\nimport { config } from '../config';\nimport { FPTI, PAYMENT_TYPE } from '../constants';\n\nimport { getSessionID, getButtonSessionID } from './session';\nimport { proxyMethod } from './proxy';\nimport { once } from './util';\nimport { getQueryParam } from './dom';\nimport { isPayPalDomain } from './security';\n\nfunction getRefererDomain() : string {\n return (window.xchild && window.xchild.getParentDomain)\n ? window.xchild.getParentDomain()\n : window.location.host;\n}\n\nconst setupProxyLogTransport = once(() => {\n setTransport(proxyMethod('log', getParent(window), getTransport()));\n});\n\nfunction getToken() : ?string {\n if (window.root && window.root.token) {\n return window.root.token;\n }\n\n if (isPayPalDomain()) {\n const queryToken = getQueryParam('token');\n\n if (queryToken) {\n return queryToken;\n }\n }\n}\n\nexport function initLogger() {\n\n setupProxyLogTransport();\n\n addPayloadBuilder(() => {\n return {\n referer: getRefererDomain(),\n host: window.location.host,\n path: window.location.pathname,\n env: config.env,\n country: config.locale.country,\n lang: config.locale.lang,\n uid: getSessionID(),\n ver: __PAYPAL_CHECKOUT__.__MINOR_VERSION__\n };\n });\n\n addHeaderBuilder(() => {\n return {\n 'x-app-name': 'checkoutjs'\n };\n });\n\n addMetaBuilder(() => {\n return {\n state: config.state\n };\n });\n\n addTrackingBuilder((payload = {}) => {\n\n const sessionID = getSessionID();\n const paymentToken = getToken();\n const buttonSessionID = payload[FPTI.KEY.BUTTON_SESSION_UID] || getButtonSessionID();\n\n let contextType;\n let contextID;\n\n if (paymentToken) {\n contextType = FPTI.CONTEXT_TYPE[PAYMENT_TYPE.EC_TOKEN];\n contextID = paymentToken;\n } else if (buttonSessionID) {\n contextType = FPTI.CONTEXT_TYPE.BUTTON_SESSION_ID;\n contextID = buttonSessionID;\n } else {\n contextType = payload[FPTI.KEY.CONTEXT_TYPE];\n contextID = payload[FPTI.KEY.CONTEXT_ID];\n }\n\n return {\n [ FPTI.KEY.FEED ]: FPTI.FEED.CHECKOUTJS,\n [ FPTI.KEY.DATA_SOURCE ]: FPTI.DATA_SOURCE.CHECKOUT,\n [ FPTI.KEY.CONTEXT_TYPE ]: contextType,\n [ FPTI.KEY.CONTEXT_ID ]: contextID,\n [ FPTI.KEY.SELLER_ID ]: config.merchantID,\n [ FPTI.KEY.SESSION_UID ]: sessionID,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: buttonSessionID,\n [ FPTI.KEY.VERSION ]: config.version,\n [ FPTI.KEY.TOKEN ]: paymentToken,\n [ FPTI.KEY.REFERER ]: getRefererDomain()\n };\n });\n\n const prefix = 'ppxo';\n\n if (window.location.protocol !== PROTOCOL.FILE) {\n init({\n uri: config.loggerUrl,\n heartbeat: false,\n logPerformance: false,\n prefix,\n logLevel: __PAYPAL_CHECKOUT__.__DEFAULT_LOG_LEVEL__\n });\n }\n}\n\nexport function setLogLevel(logLevel : string) {\n\n if (logLevels.indexOf(logLevel) === -1) {\n throw new Error(`Invalid logLevel: ${ logLevel }`);\n }\n\n config.logLevel = logLevel;\n loggerConfig.logLevel = logLevel;\n POSTROBOT_CONFIG.LOG_LEVEL = logLevel;\n window.LOG_LEVEL = logLevel;\n}\n","/* @flow */\n\nimport { on, send } from 'post-robot/src';\nimport { isWindowClosed, getDomain, isSameDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { config } from '../config';\n\nimport { noop } from './util';\n\nexport function proxyMethod(name : string, win : ?CrossDomainWindowType, originalMethod : Function) : Function {\n\n if (win && getDomain() === config.paypalDomain && !isSameDomain(win)) {\n\n if (win) {\n send(win, `proxy_${ name }`, { originalMethod }).catch(noop);\n }\n\n return originalMethod;\n }\n\n let methods = [];\n\n on(`proxy_${ name }`, { domain: config.paypal_domain_regex }, ({ data }) => {\n methods.push(data.originalMethod);\n });\n\n return function postMessageProxy() : mixed {\n\n methods = methods.filter(method => !isWindowClosed(method.source));\n\n if (methods.length) {\n return methods[methods.length - 1].apply(this, arguments).catch(() => {\n return originalMethod.apply(this, arguments);\n });\n }\n\n return originalMethod.apply(this, arguments);\n };\n}\n","/* @flow */\n\nimport { info, flush as flushLogs } from 'beaver-logger/client';\n\nimport { config } from '../config';\n\nimport { isIEIntranet, getUserAgent } from './device';\nimport { once } from './util';\n\nconst bowserCache = {};\n\nfunction getBowser() : Object {\n\n const userAgent = getUserAgent();\n\n if (bowserCache[userAgent]) {\n return bowserCache[userAgent];\n }\n\n delete require.cache[require.resolve('bowser/bowser.min')];\n const bowser = require('bowser/bowser.min');\n\n bowserCache[userAgent] = bowser;\n\n return bowser;\n}\n\nexport function getBrowser() : { browser? : string, version? : string } {\n\n const bowser = getBowser();\n\n for (const browser of Object.keys(config.SUPPORTED_BROWSERS)) {\n if (bowser[browser]) {\n return { browser, version: bowser.version };\n }\n }\n\n return {};\n}\n\nfunction isBrowserEligible() : boolean {\n\n if (isIEIntranet()) {\n return false;\n }\n\n const bowser = getBowser();\n const { browser, version } = getBrowser();\n\n if (browser && version && bowser.compareVersions([ version, config.SUPPORTED_BROWSERS[browser] ]) === -1) {\n return false;\n }\n\n return true;\n}\n\nconst eligibilityResults = {};\n\nexport function isEligible() : boolean {\n\n if (isIEIntranet()) {\n return false;\n }\n\n const userAgent = window.navigator.userAgent;\n\n if (userAgent && eligibilityResults.hasOwnProperty(userAgent)) {\n return eligibilityResults[userAgent];\n }\n\n const result = isBrowserEligible();\n\n eligibilityResults[userAgent] = result;\n\n return result;\n}\n\nexport const checkRecognizedBrowser = once((state : string) => {\n\n const { browser } = getBrowser();\n\n if (!browser) {\n const { name, version, mobile, android, ios } = getBowser();\n info(`unrecognized_browser_${ state }`, { name, version, mobile, android, ios });\n flushLogs();\n }\n});\n","/* @flow */\n\nimport { warn } from 'beaver-logger/client';\n\nimport { isIE, isIEIntranet, isIECompHeader } from './device';\n\nfunction logWarn(err) : void {\n if (window.console) {\n if (window.console.warn) {\n return window.console.warn(err);\n }\n\n if (window.console.log) {\n return window.console.log(err);\n }\n }\n}\n\nexport function checkForCommonErrors() {\n\n if (JSON.stringify([]) !== '[]') {\n // $FlowFixMe\n if (Array.prototype.toJSON) {\n logWarn(`Custom Array.prototype.toJSON is causing incorrect json serialization of arrays. This is likely to cause issues. Probable cause is Prototype.js`);\n } else {\n logWarn(`JSON.stringify is doing incorrect serialization of arrays. This is likely to cause issues.`);\n }\n\n warn(`json_stringify_array_broken`);\n }\n\n if (JSON.stringify({}) !== '{}') {\n logWarn(`JSON.stringify is doing incorrect serialization of objects. This is likely to cause issues.`);\n\n warn(`json_stringify_object_broken`);\n }\n\n if (isIEIntranet()) {\n warn(`ie_intranet_mode`);\n }\n\n if (isIE() && !isIECompHeader()) {\n warn(`ie_meta_compatibility_header_missing`, {\n message: `Drop tag: ` });\n }\n\n // eslint-disable-next-line no-unused-vars\n function foo(bar, baz, zomg) {\n // pass;\n }\n\n if (foo.bind({ a: 1 }).length !== 3) {\n warn(`function_bind_arrity_overwritten`);\n }\n\n if (window.opener && window.parent !== window) {\n warn(`window_has_opener_and_parent`);\n }\n\n if (window.name && window.name.indexOf('__prerender') === 0) {\n warn(`prerender_running_checkoutjs`);\n }\n\n const context = {};\n\n function returnContext() : typeof context {\n return this;\n }\n\n if (returnContext.bind(context)() !== context) {\n warn(`function_bind_broken`);\n }\n\n if (window.Window && window.constructor && window.Window !== window.constructor) {\n warn(`window_constructor_does_not_match_window`);\n }\n\n // $FlowFixMe\n if (Object.assign && JSON.stringify({ a: 1, b: 2, c: 3 }) !== JSON.stringify({ a: 1, b: 2, c: 3 })) { // eslint-disable-line no-self-compare, compat/compat\n warn(`object_assign_broken`);\n }\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { addPayloadBuilder } from 'beaver-logger/client';\nimport { type SameDomainWindowType } from 'cross-domain-utils/src';\n\ntype RequestOptionsType = {|\n url : string,\n method? : string,\n headers? : { [key : string] : string },\n json? : Object,\n data? : { [key : string] : string },\n body? : string,\n win? : SameDomainWindowType,\n timeout? : number\n|};\n\nconst HEADERS = {\n CONTENT_TYPE: 'content-type',\n ACCEPT: 'accept'\n};\n\nconst headerBuilders = [];\nconst corrids = [];\n\naddPayloadBuilder(() => {\n return {\n prev_corr_ids: corrids.join(',')\n };\n});\n\nfunction parseHeaders(rawHeaders : string = '') : { [string] : string } {\n const result = {};\n for (const line of rawHeaders.trim().split('\\n')) {\n const [ key, ...values ] = line.split(':');\n result[key.toLowerCase()] = values.join(':').trim();\n }\n return result;\n}\n\nexport function request({ url, method = 'get', headers = {}, json, data, body, win = window, timeout = 0 } : RequestOptionsType) : ZalgoPromise {\n\n if (url === '/demo/checkout/api/braintree/client-token/') {\n // $FlowFixMe\n return ZalgoPromise.resolve('eyJ2ZXJzaW9uIjoyLCJhdXRob3JpemF0aW9uRmluZ2VycHJpbnQiOiJjMDFhZmRkM2Y1OTJmNWVhNTNlMzE5MWQwYmIyMWVjYjM5NzNlZGM1MzkwNDZiMjJmNTA2ODEyNzIzZmRlMTJifGNsaWVudF9pZD1jbGllbnRfaWQkc2FuZGJveCQ0ZHByYmZjNnBoNTk1Y2NqXHUwMDI2Y3JlYXRlZF9hdD0yMDE3LTA0LTI2VDIzOjI2OjU5Ljg3OTA3ODYwNiswMDAwXHUwMDI2bWVyY2hhbnRfaWQ9M3cydHR2d2QyNDY1NDhoZCIsImNvbmZpZ1VybCI6Imh0dHBzOi8vYXBpLnNhbmRib3guYnJhaW50cmVlZ2F0ZXdheS5jb206NDQzL21lcmNoYW50cy8zdzJ0dHZ3ZDI0NjU0OGhkL2NsaWVudF9hcGkvdjEvY29uZmlndXJhdGlvbiIsImNoYWxsZW5nZXMiOltdLCJlbnZpcm9ubWVudCI6InNhbmRib3giLCJjbGllbnRBcGlVcmwiOiJodHRwczovL2FwaS5zYW5kYm94LmJyYWludHJlZWdhdGV3YXkuY29tOjQ0My9tZXJjaGFudHMvM3cydHR2d2QyNDY1NDhoZC9jbGllbnRfYXBpIiwiYXNzZXRzVXJsIjoiaHR0cHM6Ly9hc3NldHMuYnJhaW50cmVlZ2F0ZXdheS5jb20iLCJhdXRoVXJsIjoiaHR0cHM6Ly9hdXRoLnZlbm1vLnNhbmRib3guYnJhaW50cmVlZ2F0ZXdheS5jb20iLCJhbmFseXRpY3MiOnsidXJsIjoiaHR0cHM6Ly9jbGllbnQtYW5hbHl0aWNzLnNhbmRib3guYnJhaW50cmVlZ2F0ZXdheS5jb20vM3cydHR2d2QyNDY1NDhoZCJ9LCJ0aHJlZURTZWN1cmVFbmFibGVkIjpmYWxzZSwicGF5cGFsRW5hYmxlZCI6dHJ1ZSwicGF5cGFsIjp7ImRpc3BsYXlOYW1lIjoiYmFyY28uMDMtZmFjaWxpdGF0b3JAZ21haWwuY29tIiwiY2xpZW50SWQiOiJBV3VZdnFnMGtaN2Y5S0V4TVpqZU53T3RjQV8yZVhnOWpMZy1QSnBGX0pnYk44M0YyVml5aEdnV2JCNDg4RGU3MFpucGRBZEI2TUNqekNqSyIsInByaXZhY3lVcmwiOiJodHRwczovL2V4YW1wbGUuY29tIiwidXNlckFncmVlbWVudFVybCI6Imh0dHBzOi8vZXhhbXBsZS5jb20iLCJiYXNlVXJsIjoiaHR0cHM6Ly9hc3NldHMuYnJhaW50cmVlZ2F0ZXdheS5jb20iLCJhc3NldHNVcmwiOiJodHRwczovL2NoZWNrb3V0LnBheXBhbC5jb20iLCJkaXJlY3RCYXNlVXJsIjpudWxsLCJhbGxvd0h0dHAiOnRydWUsImVudmlyb25tZW50Tm9OZXR3b3JrIjpmYWxzZSwiZW52aXJvbm1lbnQiOiJvZmZsaW5lIiwidW52ZXR0ZWRNZXJjaGFudCI6ZmFsc2UsImJyYWludHJlZUNsaWVudElkIjoibWFzdGVyY2xpZW50MyIsImJpbGxpbmdBZ3JlZW1lbnRzRW5hYmxlZCI6dHJ1ZSwibWVyY2hhbnRBY2NvdW50SWQiOiJVU0QiLCJjdXJyZW5jeUlzb0NvZGUiOiJVU0QifSwiY29pbmJhc2VFbmFibGVkIjpmYWxzZSwibWVyY2hhbnRJZCI6IjN3MnR0dndkMjQ2NTQ4aGQiLCJ2ZW5tbyI6Im9mZiJ9');\n }\n\n return new ZalgoPromise((resolve, reject) => {\n\n if ((json && data) || (json && body) || (data && json)) {\n throw new Error(`Only options.json or options.data or options.body should be passed`);\n }\n\n const normalizedHeaders = {};\n\n for (const key of Object.keys(headers)) {\n normalizedHeaders[key.toLowerCase()] = headers[key];\n }\n\n if (json) {\n normalizedHeaders[HEADERS.CONTENT_TYPE] = normalizedHeaders[HEADERS.CONTENT_TYPE] || 'application/json';\n } else if (data || body) {\n normalizedHeaders[HEADERS.CONTENT_TYPE] = normalizedHeaders[HEADERS.CONTENT_TYPE] || 'application/x-www-form-urlencoded; charset=utf-8';\n }\n\n normalizedHeaders[HEADERS.ACCEPT] = normalizedHeaders[HEADERS.ACCEPT] || 'application/json';\n\n for (const headerBuilder of headerBuilders) {\n const builtHeaders = headerBuilder();\n\n for (const key of Object.keys(builtHeaders)) {\n normalizedHeaders[key.toLowerCase()] = builtHeaders[key];\n }\n }\n\n const xhr = new win.XMLHttpRequest();\n\n xhr.addEventListener('load', function xhrLoad() : void {\n\n const responseHeaders = parseHeaders(this.getAllResponseHeaders());\n const corrID = responseHeaders['paypal-debug-id'] || 'unknown';\n\n if (responseHeaders['paypal-debug-id']) {\n corrids.push(responseHeaders['paypal-debug-id']);\n }\n\n if (!this.status) {\n return reject(new Error(`Request to ${ method.toLowerCase() } ${ url } failed: no response status code. Correlation id: ${ corrID }`));\n }\n \n const contentType = responseHeaders['content-type'];\n const isJSON = contentType && (contentType.indexOf('application/json') === 0 || contentType.indexOf('text/json') === 0);\n let res = this.responseText;\n\n try {\n res = JSON.parse(this.responseText);\n } catch (err) {\n if (isJSON) {\n return reject(new Error(`Invalid json: ${ this.responseText }. Correlation id: ${ corrID }`));\n }\n }\n\n if (this.status >= 400) {\n let message = `Request to ${ method.toLowerCase() } ${ url } failed with ${ this.status } error. Correlation id: ${ corrID }`;\n\n if (res) {\n if (typeof res === 'object' && res !== null) {\n res = JSON.stringify(res, null, 4);\n }\n\n message = `${ message }\\n\\n${ res }\\n`;\n }\n\n return reject(new Error(message));\n }\n\n return resolve(res);\n\n }, false);\n\n xhr.addEventListener('error', function xhrError(evt) {\n const corrID = this.getResponseHeader('paypal-debug-id');\n reject(new Error(`Request to ${ method.toLowerCase() } ${ url } failed: ${ evt.toString() }. Correlation id: ${ corrID }`));\n }, false);\n\n xhr.open(method, url, true);\n\n for (const key in normalizedHeaders) {\n if (normalizedHeaders.hasOwnProperty(key)) {\n xhr.setRequestHeader(key, normalizedHeaders[key]);\n }\n }\n\n if (json) {\n body = JSON.stringify(json);\n } else if (data) {\n body = Object.keys(data).map(key => {\n return `${ encodeURIComponent(key) }=${ data ? encodeURIComponent(data[key]) : '' }`;\n }).join('&');\n }\n\n xhr.timeout = timeout;\n xhr.ontimeout = function xhrTimeout() {\n reject(new Error(`Request to ${ method.toLowerCase() } ${ url } has timed out`));\n };\n\n xhr.send(body);\n });\n}\n\nrequest.get = (url : string, options = {}) => {\n return request({ method: 'get', url, ...options });\n};\n\nrequest.post = (url : string, data, options = {}) => {\n return request({ method: 'post', url, data, ...options });\n};\n\nrequest.addHeaderBuilder = (method) => {\n headerBuilders.push(method);\n};\n","/* @flow */\n\nimport { info, track, flush as flushLogs } from 'beaver-logger/client';\n\nimport { FPTI } from '../constants';\n\nimport { match } from './util';\nimport { getStorageState, getStorageID } from './session';\n\ntype Throttle = {|\n isEnabled : () => boolean,\n isDisabled : () => boolean,\n getTreatment : () => string,\n log : (string, payload? : { [string] : ?string }) => Throttle,\n logStart : (payload? : { [string] : ?string }) => Throttle,\n logComplete : (payload? : { [string] : ?string }) => Throttle\n|};\n\nfunction getThrottlePercentile(name : string) : number {\n return getStorageState(storage => {\n storage.throttlePercentiles = storage.throttlePercentiles || {};\n storage.throttlePercentiles[name] = storage.throttlePercentiles[name] || Math.floor(Math.random() * 100);\n return storage.throttlePercentiles[name];\n });\n}\n\nconst THROTTLE_GROUP = {\n TEST: 'test',\n CONTROL: 'control',\n THROTTLE: 'throttle'\n};\n\nexport function getThrottle(name : string, sample : number, sticky : boolean = true) : Throttle {\n\n const uid = getStorageID();\n\n const percentile = sticky ? getThrottlePercentile(name) : Math.floor(Math.random() * 100);\n\n let group;\n\n if (percentile < sample) {\n group = THROTTLE_GROUP.TEST;\n } else if ((sample >= 50) || ((sample <= percentile) && (percentile < (sample * 2)))) {\n group = THROTTLE_GROUP.CONTROL;\n } else {\n group = THROTTLE_GROUP.THROTTLE;\n }\n\n const treatment = `${ name }_${ group }`;\n\n let started = false;\n let forced = false;\n\n try {\n if (window.localStorage && window.localStorage.getItem(name)) {\n forced = true;\n }\n } catch (err) {\n // pass\n }\n\n return {\n\n isEnabled() : boolean {\n return (group === THROTTLE_GROUP.TEST) || forced;\n },\n\n isDisabled() : boolean {\n return (group !== THROTTLE_GROUP.TEST) && !forced;\n },\n\n getTreatment() : string {\n return treatment;\n },\n\n log(checkpointName : string, payload? : { [string] : ?string } = {}) : Throttle {\n if (!started) {\n return this;\n }\n\n const checkpoint = `${ name }_${ treatment }_${ checkpointName }`;\n info(checkpoint, { ...payload, expuid: uid });\n\n track({\n [ FPTI.KEY.EXPERIMENT_NAME ]: name,\n [ FPTI.KEY.TREATMENT_NAME ]: treatment,\n ...payload\n });\n\n flushLogs();\n return this;\n },\n\n logStart(payload? : { [string] : ?string } = {}) : Throttle {\n started = true;\n return this.log(`start`, payload);\n },\n\n logComplete(payload? : { [string] : ?string } = {}) : Throttle {\n if (!started) {\n return this;\n }\n\n return this.log(`complete`, payload);\n }\n };\n}\n\nexport function getReturnToken() : ?string {\n\n const token = match(window.location.href, /token=((EC-)?[A-Z0-9]+)/);\n const payer = match(window.location.href, /PayerID=([A-Z0-9]+)/);\n\n if (token && payer) {\n return token;\n }\n}\n","/* @flow */\n\nimport { debug } from 'beaver-logger/client';\nimport { getDomain } from 'cross-domain-utils/src';\n\nimport { config } from '../config';\n\nimport { memoize, domainMatches } from './util';\n\nexport const getCurrentScript = memoize(() : ?HTMLScriptElement => {\n\n const scripts = Array.prototype.slice.call(document.getElementsByTagName('script'));\n\n for (const script of scripts) {\n if (script.src && (script.src.replace(/^https?:/, '').split('?')[0] === config.scriptUrl || script.hasAttribute('data-paypal-checkout'))) {\n return script;\n }\n\n if (script.src && (script.src.indexOf('paypal.checkout.v4.js') !== -1)) {\n return script;\n }\n }\n\n if (document.currentScript) { // eslint-disable-line compat/compat\n debug(`current_script_not_recognized`, { src: document.currentScript.src }); // eslint-disable-line compat/compat\n }\n});\n\nexport function isPayPalObjects() : boolean {\n return Boolean(getCurrentScript());\n}\n\nexport function getScriptVersion() : string {\n if (__PAYPAL_CHECKOUT__.__MAJOR__ && isPayPalObjects()) {\n return __MIN__ ? 'min' : __PAYPAL_CHECKOUT__.__MAJOR_VERSION__;\n } else {\n return __MIN__ ? `${ __PAYPAL_CHECKOUT__.__MINOR_VERSION__ }.min` : __PAYPAL_CHECKOUT__.__MINOR_VERSION__;\n }\n}\n\nexport function getCurrentScriptUrl() : string {\n const script = getCurrentScript();\n\n if (script && typeof script.src === 'string') {\n let scriptUrl = script.src;\n\n if (scriptUrl.indexOf('http://www.paypalobjects.com') === 0) {\n scriptUrl = scriptUrl.replace('http://', 'https://');\n }\n\n return scriptUrl;\n }\n\n return `https://www.paypalobjects.com/api/checkout.${ __PAYPAL_CHECKOUT__.__MINOR_VERSION__ }${ __MIN__ ? '.min' : '' }.js`;\n}\n\nexport function getDomainSetting(name : string, def : ?T) : ?T {\n\n const hostname = window.xchild\n ? window.xchild.getParentDomain()\n : getDomain();\n\n if (config.domain_settings) {\n for (const domain of Object.keys(config.domain_settings)) {\n if (domainMatches(hostname, domain)) {\n return config.domain_settings[domain][name];\n }\n }\n }\n\n return def;\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { once, bridge } from 'post-robot/src';\n\nimport { config } from '../config';\n\nimport { isIEIntranet } from './device';\nimport { memoize } from './util';\nimport { getScriptVersion } from './script';\nimport { extendUrl } from './dom';\n\ntype FrameMetaData = {|\n iframeEligible : boolean,\n iframeEligibleReason : string,\n // eslint-disable-next-line flowtype/no-mutable-array\n rememberedFunding : Array\n|};\n\nexport const openMetaFrame = memoize((env : string = config.env) : ZalgoPromise => {\n return ZalgoPromise.try(() => {\n\n if (isIEIntranet()) {\n return {\n iframeEligible: false,\n iframeEligibleReason: 'ie_intranet',\n rememberedFunding: []\n };\n }\n\n const metaFrameUrl : string = config.metaFrameUrls[env];\n const metaFrameDomain : string = config.paypalDomains[env];\n\n return ZalgoPromise.try(() => {\n if (!bridge) {\n throw new Error(`Opening meta window without bridge support is not currently supported`);\n }\n\n const metaListener = once('meta', { domain: metaFrameDomain });\n\n return bridge.openBridge(extendUrl(metaFrameUrl, { version: getScriptVersion() }), metaFrameDomain)\n .then(() => metaListener)\n .then(({ data }) => data);\n });\n });\n});\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { FUNDING } from '../constants';\nimport type { FundingSource, FundingList } from '../types';\n\nimport { getStorageState, getGlobalState, getSessionState } from './session';\nimport { isDevice } from './device';\nimport { openMetaFrame } from './meta';\nimport { identity } from './util';\n\n// $FlowFixMe\nexport function getRememberedFunding(handler? : (rememberedFunding : FundingList) => T = identity) : T {\n return getStorageState(storage => {\n storage.rememberedFunding = storage.rememberedFunding || [];\n return handler(storage.rememberedFunding);\n });\n}\n\nfunction hasRememberedFunding(source : FundingSource) : ?boolean {\n\n if (getRememberedFunding(rememberedFunding => rememberedFunding.indexOf(source) !== -1)) {\n return true;\n }\n\n if (getSessionState(session => session.recentlyCheckedRemembered)) {\n return true;\n }\n\n return false;\n}\n\n\nfunction isRememberedFunding(source : FundingSource) : boolean {\n\n if (getRememberedFunding(rememberedFunding => rememberedFunding.indexOf(source) !== -1)) {\n return true;\n }\n\n if (getSessionState(session => session.recentlyCheckedRemembered)) {\n return false;\n }\n\n throw new Error(`Can not find remembered funding result`);\n}\n\nfunction getRememberedFundingPromises() : { [FundingSource] : ZalgoPromise } {\n return getGlobalState(global => {\n global.rememberFundingPromises = global.rememberFundingPromises || {};\n return global.rememberFundingPromises;\n });\n}\n\nfunction getRememberedFundingPromise(source : FundingSource) : ZalgoPromise {\n const promises = getRememberedFundingPromises();\n const promise = promises[source] = promises[source] || new ZalgoPromise();\n if (hasRememberedFunding(source)) {\n promise.resolve(isRememberedFunding(source));\n }\n return promise;\n}\n\nfunction flushRememberedFundingPromises() {\n const promises = getRememberedFundingPromises();\n const rememberedFunding = getRememberedFunding(sources => sources);\n\n for (const source of Object.keys(promises)) {\n promises[source].resolve(rememberedFunding.indexOf(source) !== -1);\n }\n}\n\nexport function rememberFunding(sources : FundingList) {\n getRememberedFunding(rememberedFunding => {\n for (const source of sources) {\n\n if (source === FUNDING.VENMO && !isDevice()) {\n continue;\n }\n if (rememberedFunding.indexOf(source) === -1) {\n rememberedFunding.push(source);\n }\n }\n\n flushRememberedFundingPromises();\n });\n\n getSessionState(session => {\n session.recentlyCheckedRemembered = true;\n });\n}\n\nfunction loadMeta() : ZalgoPromise {\n return openMetaFrame().then(({ rememberedFunding }) => {\n rememberFunding(rememberedFunding || []);\n });\n}\n\nexport function isFundingRemembered(source : FundingSource = FUNDING.PAYPAL) : ZalgoPromise {\n\n if (hasRememberedFunding(source)) {\n return getRememberedFundingPromise(source);\n }\n\n return loadMeta().then(() => {\n return getRememberedFundingPromise(source);\n });\n}\n\nexport function precacheRememberedFunding() : ZalgoPromise {\n if (!getSessionState(session => session.recentlyCheckedRemembered)) {\n return loadMeta();\n }\n return ZalgoPromise.resolve();\n}\n","/* @flow */\n\nexport * from './device';\nexport * from './util';\nexport * from './logger';\nexport * from './eligibility';\nexport * from './errors';\nexport * from './dom';\nexport * from './http';\nexport * from './beacon';\nexport * from './throttle';\nexport * from './namespace';\nexport * from './session';\nexport * from './proxy';\nexport * from './meta';\nexport * from './funding';\nexport * from './script';\nexport * from './jsx';\nexport * from './security';\n","/* @flow weak */\n/* eslint max-lines: 0 */\n\nimport { ENV, COUNTRY, LANG, LOCALE } from '../constants';\n\nfunction getDefaultEnv() : $Values {\n if (__TEST__) {\n return ENV.TEST;\n }\n\n if (typeof window === 'undefined' || typeof window.location === 'undefined') {\n return ENV.PRODUCTION;\n }\n\n if (window.location.host.indexOf('localhost.paypal.com') !== -1) {\n return ENV.LOCAL;\n }\n\n if (window.location.host.indexOf('qa.paypal.com') !== -1) {\n return ENV.STAGE;\n }\n\n if (window.location.host.indexOf('sandbox.paypal.com') !== -1) {\n return ENV.SANDBOX;\n }\n\n return ENV.PRODUCTION;\n}\n\nexport const config = {\n\n locales: LOCALE,\n\n scriptUrl: __TEST__\n ? `//${ window.location.host }/base/src/load.js`\n : `//www.paypalobjects.com/api/${ __FILE_NAME__ }`,\n\n // eslint-disable-next-line security/detect-unsafe-regex, unicorn/no-unsafe-regex\n paypal_domain_regex: /^(https?|mock):\\/\\/[a-zA-Z0-9_.-]+\\.paypal\\.com(:\\d+)?$/,\n\n version: __PAYPAL_CHECKOUT__.__MINOR_VERSION__,\n\n cors: true,\n\n env: getDefaultEnv(),\n\n state: 'checkoutjs',\n\n locale: {\n country: COUNTRY.US,\n lang: LANG.EN\n },\n\n stage: 'msmaster',\n stageDomain: 'qa.paypal.com',\n\n get stageUrl() : string {\n return `${ config.stage }.${ config.stageDomain }`;\n },\n\n get apiStageUrl() : string {\n return `${ config.apiStage }.${ config.stageDomain }`;\n },\n\n get localhostUrl() : string {\n return `http://localhost.paypal.com:${ config.ports.default }`;\n },\n\n set localhostUrl(val) {\n delete this.localhostUrl;\n this.localhostUrl = val;\n },\n\n merchantID: '',\n authCode: '',\n\n logLevel: __PAYPAL_CHECKOUT__.__DEFAULT_LOG_LEVEL__,\n\n throttles: {\n v4_mobile_device: 0\n },\n\n domain_settings: {\n 'walmart.com': {\n ie_full_page: false,\n allow_full_page_fallback: true,\n memoize_payment: true,\n force_bridge: true,\n log_authorize: true\n },\n\n 'ulta.com': {\n disable_venmo: true\n },\n\n 'barnesandnoble.com': {\n disable_venmo: true\n },\n\n 'bn.com': {\n disable_venmo: true\n },\n\n 'agoratix.com': {\n disable_venmo: true\n },\n\n 'tractorsupply.com': {\n disable_venmo: true\n },\n\n 'etsy.com': {\n ie_full_page: false,\n allow_full_page_fallback: true,\n memoize_payment: true,\n force_bridge: true,\n log_authorize: true\n },\n\n 'ticketmaster.com': {\n disable_venmo: true\n },\n\n 'livenation.com': {\n disable_venmo: true\n },\n\n 'frontgatetickets.com': {\n disable_venmo: true\n },\n\n 'williams-sonoma.com': {\n disable_venmo: true\n },\n\n 'westelm.com': {\n disable_venmo: true\n },\n\n 'markandgraham.com': {\n disable_venmo: true\n },\n\n 'potterybarn.com': {\n disable_venmo: true\n },\n\n 'potterybarnkids.com': {\n disable_venmo: true\n },\n\n 'pbteen.com': {\n disable_venmo: true\n },\n\n 'beallsflorida.com': {\n disable_venmo: true\n },\n\n 'therealreal.com': {\n disable_venmo: true\n },\n\n 'liveaquaria.com': {\n disable_venmo: true\n },\n\n 'drsfostersmith.com': {\n disable_venmo: true\n },\n\n 'boxed.com': {\n disable_venmo: true\n },\n\n 'bevisible.com': {\n disable_venmo: true\n },\n\n 'moeller.org': {\n disable_venmo: true\n },\n\n 'searshometownstores.com': {\n disable_venmo: true\n },\n\n 'searshardwarestores.com': {\n disable_venmo: true\n },\n\n 'searshomeapplianceshowroom.com': {\n disable_venmo: true\n },\n\n 'barkshop.com': {\n disable_venmo: true\n },\n\n 'vividseats.com': {\n disable_venmo: true\n },\n\n 'getcargo.today': {\n disable_venmo: true\n },\n\n 'smartdestinations.com': {\n disable_venmo: true\n },\n\n 'philadelphiapass.com': {\n disable_venmo: true\n },\n\n 'thesydneypass.com': {\n disable_venmo: true\n },\n\n '3secondlash.com': {\n disable_venmo: true\n },\n\n 'newyorkpass.com': {\n disable_venmo: true\n },\n\n 'dndbeyond.com': {\n disable_venmo: true\n },\n\n 'app.zapbuy.it': {\n disable_venmo: true\n },\n\n 'gamersaloon.com': {\n disable_venmo: true\n },\n\n '1800contacts.com': {\n disable_venmo: true\n },\n\n 'shopchatters.ca': {\n disable_venmo: true\n },\n\n 'shopguyswin.ca': {\n disable_venmo: true\n },\n\n 'jjill.com': {\n disable_venmo: true\n },\n\n 'qvc.com': {\n disable_venmo: true\n },\n\n 'stelladot.com': {\n disable_venmo: true\n },\n\n 'keepcollective.com': {\n disable_venmo: true\n },\n\n 'everskin.com': {\n disable_venmo: true\n },\n\n 'zulily.com': {\n disable_venmo: true\n },\n\n 'freshly.com': {\n disable_venmo: true\n },\n\n 'buypeticare.com': {\n disable_venmo: true\n },\n\n 'getownzone.com': {\n disable_venmo: true\n },\n\n 'uncommongoods.com': {\n disable_venmo: true\n },\n\n 'onegold.com': {\n disable_venmo: true\n },\n\n 'universitytees.com': {\n disable_venmo: true\n },\n\n 'revolve.com': {\n disable_venmo: true\n },\n\n 'functionofbeauty.com': {\n disable_venmo: true\n },\n\n 'givebutter.com': {\n disable_venmo: true\n },\n\n 'hausmart.com': {\n disable_venmo: true\n },\n\n 'derbyjackpot.com': {\n disable_venmo: true\n },\n\n 'ancestry.com': {\n disable_venmo: true\n },\n\n 'boats.net': {\n disable_venmo: true\n },\n\n 'partzilla.com': {\n disable_venmo: true\n },\n\n 'firedog.com': {\n disable_venmo: true\n },\n\n 'chick-fil-a.com': {\n disable_venmo: true\n },\n\n 'roku.com': {\n disable_venmo: true\n },\n\n 'barkbox.com': {\n disable_venmo: true\n },\n\n 'neimanmarcus.com': {\n disable_venmo: true\n },\n\n 'lastcall.com': {\n disable_venmo: true\n },\n\n 'horchow.com': {\n disable_venmo: true\n },\n\n 'bergdorfgoodman.com': {\n disable_venmo: true\n },\n\n 'fwrd.com': {\n disable_venmo: true\n },\n\n 'plunderdesign.com': {\n disable_venmo: true\n },\n\n 'stitchfix.com': {\n disable_venmo: true\n },\n\n 'revzilla.com': {\n disable_venmo: true\n },\n\n 'cyclegear.com': {\n disable_venmo: true\n },\n\n 'chegg.com': {\n disable_venmo: true\n },\n\n 'youniqueproducts.com': {\n disable_venmo: true\n },\n\n 'archives.com': {\n disable_venmo: true\n },\n\n 'hautelook.com': {\n disable_venmo: true\n },\n\n 'nordstromrack.com': {\n disable_venmo: true\n },\n\n 'motherhoodcanada.ca': {\n disable_venmo: true\n },\n\n 'atomtickets.com': {\n disable_venmo: true\n },\n\n 'trademore.com': {\n disable_venmo: true\n },\n\n 'lasheaseoffer.com': {\n disable_venmo: true\n },\n\n 'rookie.paypalsixthman.com': {\n disable_venmo: true\n },\n\n '1800Contacts.com': {\n disable_venmo: true\n },\n\n 'hulu.com': {\n disable_venmo: true\n },\n\n 'grubhub.com': {\n disable_venmo: true\n },\n\n 'eat24.com': {\n disable_venmo: true\n },\n\n 'seamless.com': {\n disable_venmo: true\n },\n\n 'freshfeetscrubber.com': {\n disable_venmo: true\n },\n\n 'opensky.com': {\n disable_venmo: true\n },\n\n 'dotandbo.com': {\n disable_venmo: true\n },\n\n 'storenvy.com': {\n disable_venmo: true\n },\n\n 'gemafina.com': {\n disable_venmo: true\n },\n\n 'pickperfect.com': {\n disable_venmo: true\n },\n\n '55mulberry.com': {\n disable_venmo: true\n },\n \n 'hollar.com': {\n disable_venmo: true\n },\n\n 'bjs.com': {\n disable_venmo: true\n },\n\n 'playsugarhouse.com': {\n disable_venmo: true\n },\n\n 'lakeshorelearning.com': {\n disable_venmo: true\n },\n\n 'llmhq.com': {\n disable_venmo: true\n },\n\n 'gainful.com': {\n disable_venmo: true\n },\n\n 'modaoperandi.com': {\n disable_venmo: true\n },\n \n 'play.jackpocket.com': {\n disable_venmo: true\n },\n\n 'crepeerase.com': {\n disable_venmo: true\n },\n\n 'specificbeauty.com': {\n disable_venmo: true\n },\n\n 'meaningfulbeauty.com': {\n disable_venmo: true\n },\n\n 'smileactives.com ': {\n disable_venmo: true\n },\n\n 'mally.com': {\n disable_venmo: true\n },\n\n 'westmorebeauty.com': {\n disable_venmo: true\n },\n\n 'subd.com': {\n disable_venmo: true\n },\n\n 'seacalmskin.com': {\n disable_venmo: true\n },\n \n 'whittier.edu': {\n disable_venmo: true\n },\n \n 'curology.com': {\n disable_venmo: true\n },\n \n 'monoprice.com': {\n disable_venmo: true\n },\n \n 'dominos.com': {\n disable_venmo: true\n },\n \n 'audiobooks.com': {\n disable_venmo: true\n },\n \n '1aauto.com': {\n disable_venmo: true\n },\n\n 'greatwolf.com': {\n disable_venmo: true\n },\n\n 'cvs.com': {\n disable_venmo: true\n },\n\n 'gilt.com': {\n disable_venmo: true\n },\n\n 'ruelala.com': {\n disable_venmo: true\n }\n },\n\n creditTestDomains: [ 'bluesuncorp.co.uk', 'nationsphotolab.com', 'plexusworldwide.com', 'nshss.org', 'bissell.com', 'mobstub.com', 'vuoriclothing.com', 'tape4backup.com', 'avivamiento.com', 'rhododendron.org', 'whiterabbitjapan.com', 'atsracing.net', 'thehilltopgallery.com', 'weedtraqr.com', 'worldpantry.com', 'ciraconnect.com', 'mymalls.com', 'prowinch.com', 'zodiacpoolsystems.com', 'everlywell.com', 'candlewarmers.com', 'chop.edu', 'incruises.com', 'flikn.com', 'didforsale.com', 'mcc.org', 'sygu.net', 'merchbar.com', 'eduinconline.com', 'us.livebetterwith.com', 'bakemeawish.com', 'judolaunch.com', 'eventcartel.com', 'tapatalk.com', 'telescope.com', 'covenant.edu', 'aquatruwater.com', 'spingo.com', 'usu.edu', 'getcelerity.com', 'brandless.com', 'saberigniter.com', 'euromodeltrains.com', 'gofasttrader.com', 'megamodzplanet.com', 'draftanalyzer.com', 'lovewithoutboundaries.com', 'filterpop.com', 'seekverify.com', 'photoandgo.com', 'sightseeingpass.com', 'bigoanddukes.com', 'thethirstyduck.com', 'thebrushguys.com', '907delivery.com', 'mauisails.com', 'drive.net', 'channelmax.net', 'modernrebelco.com', 'enchanteddiamonds.com', 'ibabbleon.com', 'fullgenomes.com', 'conn-comp.com', 'wingware.com', 'paradigmgoods.com', 'theneptunegroup.com', 'kidzartworks.com', 'unirealm.com', 'ncfarmsinc.com', 'oneofakindantiques.com', 'servers4less.com', 'stumpthespread.com', 'marketwagon.com', 'monsterhouseplans.com', 'canterburychoral.org', 'teacupnordic.org', 'thethirstyduck.com', 'medialoot.com', 'theartistunion.com', 'yourglamourzone.com', 'breckstables.com', 'mackephotography.com', 'dsaj.org', 'massluminosity.com', 'tespa.org', 'versatilearts.net', 'yecup.org', 'divinebusinessmanagement.com', 'captivatebeautyservices.com', 'class4me.com', 'wcsonlineuniversity.com', 'pvplive.com', 'kyneteks.com', 'rare-paper.com', 'bpg.bpgsim.biz', 'geodegallery.com', 'way.com', 'kringle.com', 'talentedmrsalas.ph', 'litcharts.com', 'purpletreephotography.com', 'apache.org', 'neopackage.com', 'globaldance.tv', 'integral.studio', 'airdoctorpro.com', 'ivoryandiron.com', 'yuengling.com', 'averysbranchfarms.com', 'amberreinink.com', 'skinnymechocolate.com', 'bmbl.net', 'ncwatercolor.net', 'astrograph.com', 'localadventures.mx', 'ripcurl.com', 'worldfootbrakechallenge.com', 'shespeakssales.com', 'obrienguitars.com', 'jadenikkolephoto.com', 'americavoice.com', 'cassiexie.com', 'aamastateconvention.org', 'rellesflorist.com', 'passionnobby.com', 'bodybyheidi.com', 'roqos.com', 'prijector.com', 'maryswanson.net', 'tsghobbies.com', 'erinlaytonphotography.com', 'darter.org', 'fountainpenhospital.com', 'myzestfullife.com', 'pcog.org', 'alisabethdesigns.com', 'katiemathisphoto.com', 'strictlybellaphotography.com', 'maptools.com', 'sites.google.com', 'gallerr.com', 'southfloridatrikke.com', 'caviar.tv', 'mintingmasters.com', 'prospectorsguild.com', 'inktale.com', 'prettygirlgoods.com', 'laceycahill.com', 'daniellenowak.com', 't212.org', 'scmsinc.com', 'babypaloozanc.com', 'tetrisonline.com', 'grdd.net', 'cdspg.info', 'airshipapparel.com', 'waft.com', 'extendpets.com', 'supplyhub.com', 'hlbsusa.com', 'jaderollerbeauty.com', 'theparentingjunkie.com', 'schagringas.com', 'yourscribemate.com', 'sportscollectibles.com', 'thedivinenoise.com', 'hometeamsonline.com', 'trademarkpress.com', 'destinationenglish.us', 'jacquesflowers.com', 'aliszhatchphotography.com', 'rusticfoundry.com', 'ahhhmassage.net', 'frezzor.com', 'mandelininc.com', 'kayleejackson.com', 'monkinstitute.org', 'eddiebsbbq.com', 'morningstarmediaservices.com', 'kinevative.com', 'orivet.com', 'digitalprinthouse.net', 'dynamicgenius.com', 'allpartsusa.com', 'flowersbydavid.net', 'nwvoices.org', 'leaptrade.com', 'tulsaschoolpics.com', 'alioth.io', 'windowflair.com', 'vitcom.net', 'simplybeautifulfashions.com', 'christinabenton.com', 'fromthedaughter.com', 'hometowngraphics.net', 'fibanalysis.com', 'creativejobscentral.com', 'sandbox.gg', 'jt-digitalmedia.com', 'kodable.com', 'birthingstone.com', 'taranicholephoto.com', 'hillyfieldsflorist.com', 'charitynoelphoto.com', 'auxdelicesfoods.com', 'terilynnphotography.com', 'folieadeuxevents.com', 'karensfloral.com', 'montgomerydiveclub.com', 'rainbowplastics.com', 'confettionthedancefloor.com', 'vomozmedia.com', 'neatmod.com', 'getnaturafled.com', 'callingpost.com', 'iamfamily.org', 'pedigreeonline.com', 'typeboost.io', 'in-n-outpetdoor.com', 'nerdstockgc.com', 'keiadmin.com', 'createdbykaui.com', 'aikophoto.com', 'lonestar.ink', 'stlfurs.com', 'treasurelistings.com', 'thecubicle.us', 'redclaypaper.com', 'blushhousemedia.com', 'documentsanddesigns.com', 'whitneyleighphotography.shootproof.com', 'amaryllisday.com', 'hermanproav.com', 'felicemedia.com', 'withloveplacenta.com', 'store.brgadgets.co', 'klowephoto.com', 'spenceraustinconsulting.com', 'sno-eagles.org', 'dsatallahassee.org', 'bakupages.com', 'neswc.com', 'josiebrooksphotography.com', 'brisksale.com', 'legalwhoosh.com', 'jasmineeaster.com', 'swatstudios.com', 'facebook.com', 'shakershell.com', 'alexiswinslow.com', 'mixeddimensions.com', 'sweetpproductions.com', 'lbeaphotography.com', 'otlseatfillers.com', 'jdtickets.com', 'catholicar.com', 'masque.com', 'smalltownstudio.net', 'goherbalife.com', 'itzyourz.com', 'magazinespeedloader.com', 'dreammachines.io', 'dallasdieteticalliance.org', 'http:', 'medair.org', 'unbridledambition.com', 'sarasprints.com', 'wiperecord.com', 'showmyrabbit.com', 'cctrendsshop.com', 'rachelalessandra.com', 'otherworld-apothecary.com', 'melissaannphoto.com', 'girlceo.co', 'seasidemexico.com', 'telosid.com', 'instin.com', 'marinecorpsmustang.org', 'lancityconnect.com', 'hps1.org', 'karenware.com', 'livecurriculum.com', 'spellingstars.com', 'vektorfootball.com', 'zaltv.com', 'nebraskamayflower.org', 'ethiopianspices.com', 'immitranslate.com', 'rafaelmagic.com.com', 'bahc1.org', 'newenamel.com', 'bhchp.org', 'buybulkamerica.com', 'sourcepoint.com', 'squarestripsports.com', 'wix.com', 'wilderootsphotography.com', 'goodsalt.com', 'systemongrid.com', 'designmil.org', 'freshtrendhq.com', 'valisimofashions.com', 'buyneatly.com', 'getbeauty.us', 'intellimidia.com' ],\n \n customCountry: false,\n\n SUPPORTED_BROWSERS: {\n msie: '11',\n firefox: '30',\n chrome: '27',\n safari: '7',\n opera: '16',\n msedge: '12',\n samsungBrowser: '2.1',\n silk: '59.3',\n ucbrowser: '10.0.0.488',\n vivaldi: '1.91'\n },\n\n session_uid_lifetime: 5 * 60 * 1000,\n\n _apiStage: '',\n\n get apiStage() : string {\n return config._apiStage || config.stage;\n },\n\n set apiStage(value) {\n config._apiStage = value;\n },\n\n ports: {\n default: 8000,\n button: 8000,\n checkout: 8000,\n guest: 8001,\n altpay: 3000\n },\n\n get paypalUrls() : Object {\n return {\n [ ENV.LOCAL ]: config.localhostUrl,\n [ ENV.STAGE ]: `https://www.${ config.stageUrl }`,\n [ ENV.SANDBOX ]: `https://www.sandbox.paypal.com`,\n [ ENV.PRODUCTION ]: `https://www.paypal.com`,\n [ ENV.TEST ]: `${ window.location.protocol }//${ window.location.host }`,\n [ ENV.DEMO ]: `${ window.location.protocol }//localhost.paypal.com:${ window.location.port }`\n };\n },\n\n get paypalDomains() : Object {\n return {\n [ ENV.LOCAL ]: 'http://localhost.paypal.com:8000',\n [ ENV.STAGE ]: `https://www.${ config.stageUrl }`,\n [ ENV.SANDBOX ]: `https://www.sandbox.paypal.com`,\n [ ENV.PRODUCTION ]: `https://www.paypal.com`,\n [ ENV.TEST ]: `mock://www.paypal.com`,\n [ ENV.DEMO ]: `${ window.location.protocol }//localhost.paypal.com:${ window.location.port }`\n };\n },\n\n get wwwApiUrls() : Object {\n return {\n [ ENV.LOCAL ]: `https://www.${ config.stageUrl }`,\n [ ENV.STAGE ]: `https://www.${ config.stageUrl }`,\n [ ENV.SANDBOX ]: `https://www.sandbox.paypal.com`,\n [ ENV.PRODUCTION ]: `https://www.paypal.com`,\n [ ENV.TEST ]: `${ window.location.protocol }//${ window.location.host }`\n };\n },\n\n get corsApiUrls() : Object {\n return {\n [ ENV.LOCAL ]: `https://${ config.apiStageUrl }:12326`,\n [ ENV.STAGE ]: `https://${ config.apiStageUrl }:12326`,\n [ ENV.SANDBOX ]: `https://cors.api.sandbox.paypal.com`,\n [ ENV.PRODUCTION ]: `https://cors.api.paypal.com`,\n [ ENV.TEST ]: `${ window.location.protocol }//${ window.location.host }`\n };\n },\n\n get apiUrls() : Object {\n\n const domain = `${ window.location.protocol }//${ window.location.host }`;\n const corsApiUrls = config.corsApiUrls;\n const wwwApiUrls = config.wwwApiUrls;\n\n return {\n [ ENV.LOCAL ]: domain === wwwApiUrls.local ? wwwApiUrls.local : corsApiUrls.local,\n [ ENV.STAGE ]: domain === wwwApiUrls.stage ? wwwApiUrls.stage : corsApiUrls.stage,\n [ ENV.SANDBOX ]: domain === wwwApiUrls.sandbox ? wwwApiUrls.sandbox : corsApiUrls.sandbox,\n [ ENV.PRODUCTION ]: domain === wwwApiUrls.production ? wwwApiUrls.production : corsApiUrls.production,\n [ ENV.TEST ]: domain === wwwApiUrls.test ? wwwApiUrls.test : corsApiUrls.test\n };\n },\n\n get checkoutUri() : ?string {\n return null;\n },\n\n set checkoutUri(val) {\n delete this.checkoutUri;\n this.checkoutUri = val;\n },\n\n get checkoutUris() : Object {\n if (config.checkoutUri) {\n return {\n [ ENV.LOCAL ]: config.checkoutUri,\n [ ENV.STAGE ]: config.checkoutUri,\n [ ENV.SANDBOX ]: config.checkoutUri,\n [ ENV.PRODUCTION ]: config.checkoutUri,\n [ ENV.TEST ]: config.checkoutUri,\n [ ENV.DEMO ]: config.checkoutUri\n };\n }\n\n return {\n [ ENV.LOCAL ]: `/webapps/hermes`,\n [ ENV.STAGE ]: `/webapps/hermes`,\n [ ENV.SANDBOX ]: `/checkoutnow`,\n [ ENV.PRODUCTION ]: `/checkoutnow`,\n [ ENV.TEST ]: `/base/test/windows/checkout/index.htm?checkouturl=true`,\n [ ENV.DEMO ]: `/demo/dev/checkout.htm`\n };\n },\n\n altpayUris: {\n [ ENV.LOCAL ]: `/latinumcheckout`,\n [ ENV.STAGE ]: `/latinumcheckout`,\n [ ENV.SANDBOX ]: `/latinumcheckout`,\n [ ENV.PRODUCTION ]: `/latinumcheckout`,\n [ ENV.TEST ]: `/base/test/windows/checkout/index.htm?checkouturl=true`,\n [ ENV.DEMO ]: `/demo/dev/checkout.htm`\n },\n\n guestUris: {\n [ ENV.LOCAL ]: `/webapps/xoonboarding`,\n [ ENV.STAGE ]: `/webapps/xoonboarding`,\n [ ENV.SANDBOX ]: `/webapps/xoonboarding`,\n [ ENV.PRODUCTION ]: `/webapps/xoonboarding`,\n [ ENV.TEST ]: `/base/test/windows/checkout/index.htm?guesturl=true`,\n [ ENV.DEMO ]: `/demo/dev/guest.htm`\n },\n\n billingUris: {\n [ ENV.LOCAL ]: `/webapps/hermes/agreements`,\n [ ENV.STAGE ]: `/webapps/hermes/agreements`,\n [ ENV.SANDBOX ]: `/agreements/approve`,\n [ ENV.PRODUCTION ]: `/agreements/approve`,\n [ ENV.TEST ]: `/base/test/windows/checkout/index.htm?billingurl=true`,\n [ ENV.DEMO ]: `/demo/dev/checkout.htm`\n },\n\n buttonUris: {\n [ ENV.LOCAL ]: `/smart/button`,\n [ ENV.STAGE ]: `/smart/button`,\n [ ENV.SANDBOX ]: `/smart/button`,\n [ ENV.PRODUCTION ]: `/smart/button`,\n [ ENV.TEST ]: `/base/test/windows/button/index.htm`,\n [ ENV.DEMO ]: `/demo/dev/button.htm`\n },\n\n inlinedCardFieldUris: {\n [ ENV.LOCAL ]: `/smart/card-fields`,\n [ ENV.STAGE ]: `/smart/card-fields`,\n [ ENV.SANDBOX ]: `/smart/card-fields`,\n [ ENV.PRODUCTION ]: `/smart/card-fields`,\n [ ENV.TEST ]: `/base/test/windows/card-fields/index.htm`,\n [ ENV.DEMO ]: `/demo/dev/card.htm`\n },\n\n postBridgeUris: {\n [ ENV.LOCAL ]: `/webapps/hermes/component-meta`,\n [ ENV.STAGE ]: `/webapps/hermes/component-meta`,\n [ ENV.SANDBOX ]: `/webapps/hermes/component-meta`,\n [ ENV.PRODUCTION ]: `/webapps/hermes/component-meta`,\n [ ENV.TEST ]: `/base/test/windows/component-meta/index.htm`,\n [ ENV.DEMO ]: `/demo/dev/bridge.htm`\n },\n\n legacyCheckoutUris: {\n [ ENV.LOCAL ]: `/cgi-bin/webscr?cmd=_express-checkout&xo_node_fallback=true`,\n [ ENV.STAGE ]: `/cgi-bin/webscr?cmd=_express-checkout&xo_node_fallback=true`,\n [ ENV.SANDBOX ]: `/cgi-bin/webscr?cmd=_express-checkout&xo_node_fallback=true`,\n [ ENV.PRODUCTION ]: `/cgi-bin/webscr?cmd=_express-checkout&xo_node_fallback=true`,\n [ ENV.TEST ]: `#fallback`\n },\n\n buttonJSUrls: {\n [ ENV.LOCAL ]: `https://www.paypalobjects.com/api/button.js`,\n [ ENV.STAGE ]: `https://www.paypalobjects.com/api/button.js`,\n [ ENV.SANDBOX ]: `https://www.paypalobjects.com/api/button.js`,\n [ ENV.PRODUCTION ]: `https://www.paypalobjects.com/api/button.js`,\n [ ENV.TEST ]: `/base/test/lib/button.js`,\n [ ENV.DEMO ]: `https://www.paypalobjects.com/api/button.js`\n },\n\n get buttonJSUrl() : string {\n return config.buttonJSUrls[config.env];\n },\n\n loginUri: `/signin/`,\n\n hermesLoggerUri: `/webapps/hermes/api/logger`,\n\n loggerUri: `/xoplatform/logger/api/logger`,\n\n loggerThrottlePercentage: 1.0, // 100%\n\n pptmUri: `/tagmanager/pptm.js`,\n\n get postBridgeUri() : string {\n return `${ config.postBridgeUris[config.env] }?xcomponent=1`;\n },\n\n paymentStandardUri: `/webapps/xorouter?cmd=_s-xclick`,\n\n authApiUri: `/v1/oauth2/token`,\n paymentApiUri: `/v1/payments/payment`,\n orderApiUri: `/v2/checkout/orders`,\n billingApiUri: `/v1/billing-agreements/agreement-tokens`,\n experienceApiUri: `/v1/payment-experience/web-profiles`,\n trackingApiUri: `/v1/risk/transaction-contexts`,\n\n get checkoutUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local }${ config.checkoutUris.local.replace(`:${ config.ports.default }`, `:${ config.ports.checkout }`) }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.checkoutUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.checkoutUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.checkoutUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.checkoutUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.test }${ config.checkoutUris.demo }`\n };\n },\n\n get guestUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local.replace(`:${ config.ports.default }`, `:${ config.ports.guest }`) }${ config.guestUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.guestUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.guestUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.guestUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.guestUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.test }${ config.guestUris.demo }`\n };\n },\n\n get altpayUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local.replace(`:${ config.ports.default }`, `:${ config.ports.altpay }`) }${ config.altpayUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.altpayUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.altpayUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.altpayUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.altpayUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.test }${ config.altpayUris.demo }`\n };\n },\n\n get billingUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local.replace(`:${ config.ports.default }`, `:${ config.ports.checkout }`) }${ config.billingUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.billingUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.billingUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.billingUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.billingUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.test }${ config.billingUris.demo }`\n };\n },\n\n get buttonUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local.replace(`:${ config.ports.default }`, `:${ config.ports.button }`) }${ config.buttonUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.buttonUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.buttonUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.buttonUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.buttonUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.demo }${ config.buttonUris.demo }`\n };\n },\n\n get inlinedCardFieldUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local.replace(`:${ config.ports.default }`, `:${ config.ports.button }`) }${ config.inlinedCardFieldUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.inlinedCardFieldUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.inlinedCardFieldUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.inlinedCardFieldUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.inlinedCardFieldUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.demo }${ config.inlinedCardFieldUris.demo }`\n };\n },\n\n get loginUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.stage }${ config.loginUri }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.loginUri }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.loginUri }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.loginUri }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.loginUri }`\n };\n },\n\n get paymentsStandardUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local }${ config.paymentStandardUri }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.paymentStandardUri }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.paymentStandardUri }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.paymentStandardUri }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.paymentStandardUri }`\n };\n },\n\n get metaFrameUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local }${ config.postBridgeUri }&env=local`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.postBridgeUri }&env=stage&stage=${ config.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.postBridgeUri }&env=sandbox`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.postBridgeUri }&env=production`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.postBridgeUri }&env=test`,\n [ ENV.DEMO ]: `${ paypalUrls.demo }${ config.postBridgeUri }&env=demo`\n };\n },\n\n get legacyCheckoutUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.stage }${ config.legacyCheckoutUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.legacyCheckoutUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.legacyCheckoutUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.legacyCheckoutUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.legacyCheckoutUris.test }`\n };\n },\n\n get authApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const authApiUri = config.authApiUri;\n\n return {\n [ ENV.LOCAL ]: `${ apiUrls.local }${ authApiUri }`,\n [ ENV.STAGE ]: `${ apiUrls.stage }${ authApiUri }`,\n [ ENV.SANDBOX ]: `${ apiUrls.sandbox }${ authApiUri }`,\n [ ENV.PRODUCTION ]: `${ apiUrls.production }${ authApiUri }`,\n [ ENV.TEST ]: `${ apiUrls.test }${ authApiUri }`\n };\n },\n\n get paymentApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const paymentApiUri = config.paymentApiUri;\n\n return {\n [ ENV.LOCAL ]: `${ apiUrls.local }${ paymentApiUri }`,\n [ ENV.STAGE ]: `${ apiUrls.stage }${ paymentApiUri }`,\n [ ENV.SANDBOX ]: `${ apiUrls.sandbox }${ paymentApiUri }`,\n [ ENV.PRODUCTION ]: `${ apiUrls.production }${ paymentApiUri }`,\n [ ENV.TEST ]: `${ apiUrls.test }${ paymentApiUri }`\n };\n },\n\n get orderApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const orderApiUri = config.orderApiUri;\n\n return {\n [ENV.LOCAL]: `${ apiUrls.local }${ orderApiUri }`,\n [ENV.STAGE]: `${ apiUrls.stage }${ orderApiUri }`,\n [ENV.SANDBOX]: `${ apiUrls.sandbox }${ orderApiUri }`,\n [ENV.PRODUCTION]: `${ apiUrls.production }${ orderApiUri }`,\n [ENV.TEST]: `${ apiUrls.test }${ orderApiUri }`\n };\n },\n\n get billingApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const billingApiUri = config.billingApiUri;\n\n return {\n [ ENV.LOCAL ]: `${ apiUrls.local }${ billingApiUri }`,\n [ ENV.STAGE ]: `${ apiUrls.stage }${ billingApiUri }`,\n [ ENV.SANDBOX ]: `${ apiUrls.sandbox }${ billingApiUri }`,\n [ ENV.PRODUCTION ]: `${ apiUrls.production }${ billingApiUri }`,\n [ ENV.TEST ]: `${ apiUrls.test }${ billingApiUri }`\n };\n },\n\n get experienceApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const experienceApiUri = config.experienceApiUri;\n\n return {\n [ ENV.LOCAL ]: `${ apiUrls.local }${ experienceApiUri }`,\n [ ENV.STAGE ]: `${ apiUrls.stage }${ experienceApiUri }`,\n [ ENV.SANDBOX ]: `${ apiUrls.sandbox }${ experienceApiUri }`,\n [ ENV.PRODUCTION ]: `${ apiUrls.production }${ experienceApiUri }`,\n [ ENV.TEST ]: `${ apiUrls.test }${ experienceApiUri }`\n };\n },\n\n get trackingApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const trackingApiUri = config.trackingApiUri;\n\n return {\n [ ENV.LOCAL ]: `${ apiUrls.local }${ trackingApiUri }`,\n [ ENV.STAGE ]: `${ apiUrls.stage }${ trackingApiUri }`,\n [ ENV.SANDBOX ]: `${ apiUrls.sandbox }${ trackingApiUri }`,\n [ ENV.PRODUCTION ]: `${ apiUrls.production }${ trackingApiUri }`,\n [ ENV.TEST ]: `${ apiUrls.test }${ trackingApiUri }`\n };\n },\n\n _paypalUrl: '',\n\n get paypalUrl() : string {\n return this._paypalUrl || config.paypalUrls[config.env];\n },\n\n set paypalUrl(value) {\n this._paypalUrl = value;\n },\n\n get paypalDomain() : string {\n return config.paypalDomains[config.env];\n },\n\n get corsApiUrl() : string {\n return config.corsApiUrls[config.env];\n },\n\n get wwwApiUrl() : string {\n return config.wwwApiUrls[config.env];\n },\n\n get apiUrl() : string {\n\n const domain = `${ window.location.protocol }//${ window.location.host }`;\n const corsApiUrl = config.corsApiUrl;\n const wwwApiUrl = config.wwwApiUrl;\n\n return domain === wwwApiUrl ? wwwApiUrl : corsApiUrl;\n },\n\n get checkoutUrl() : string {\n return `${ config.paypalUrl }${ config.checkoutUris[config.env] }`;\n },\n\n get billingUrl() : string {\n return `${ config.paypalUrl }${ config.billingUris[config.env] }`;\n },\n\n get buttonUrl() : string {\n return `${ config.paypalUrl }${ config.buttonUris[config.env] }`;\n },\n\n get legacyCheckoutUrl() : string {\n return config.legacyCheckoutUrls[config.env];\n },\n\n get postBridgeUrl() : string {\n return `${ config.paypalUrl }${ config.postBridgeUri }`;\n },\n\n get postBridgeDomain() : string {\n return `${ config.paypalDomain }`;\n },\n\n get loggerUrl() : string {\n const isTestExperiment = Math.random() < config.loggerThrottlePercentage;\n const loggerUrl = isTestExperiment ? config.loggerUri : config.hermesLoggerUri;\n\n return `${ config.paypalUrl }${ loggerUrl }`;\n },\n\n get pptmUrl() : string {\n return `${ config.paypalUrls[config.env] }${ config.pptmUri }`;\n },\n\n get authApiUrl() : string {\n return `${ config.apiUrl }${ config.authApiUri }`;\n },\n\n get paymentApiUrl() : string {\n return `${ config.apiUrl }${ config.paymentApiUri }`;\n },\n\n get orderApiUrl() : string {\n return `${ config.apiUrl }${ config.orderApiUri }`;\n },\n\n get billingApiUrl() : string {\n return `${ config.apiUrl }${ config.billingApiUri }`;\n },\n\n get experienceApiUrl() : string {\n return `${ config.apiUrl }${ config.experienceApiUri }`;\n },\n\n defaultLocale: {\n country: COUNTRY.US,\n lang: LANG.EN\n }\n};\n","/* @flow */\n\nexport * from './config';\n","\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nexport function extend(dest, src, over=true) {\n dest = dest || {};\n src = src || {};\n\n for (let i in src) {\n if (src.hasOwnProperty(i)) {\n if (over || !dest.hasOwnProperty(i)) {\n dest[i] = src[i];\n }\n }\n }\n\n return dest;\n}\n\nexport function isSameProtocol(url) {\n return window.location.protocol === url.split('/')[0];\n}\n\nexport function isSameDomain(url) {\n let match = url.match(/https?:\\/\\/[^/]+/);\n\n if (!match) {\n return true;\n }\n\n return match[0] === `${window.location.protocol}//${window.location.host}`;\n}\n\nexport function ajax(method, url, headers={}, data={}, { fireAndForget = false } = {}) {\n\n return new ZalgoPromise(resolve => {\n let XRequest = window.XMLHttpRequest || window.ActiveXObject;\n\n if (window.XDomainRequest && !isSameDomain(url)) {\n\n if (!isSameProtocol(url)) {\n return resolve();\n }\n\n XRequest = window.XDomainRequest;\n }\n\n let req = new XRequest('MSXML2.XMLHTTP.3.0');\n req.open(method.toUpperCase(), url, true);\n\n if (typeof req.setRequestHeader === 'function') {\n req.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n req.setRequestHeader('Content-type', 'application/json');\n\n for (let headerName in headers) {\n if (headers.hasOwnProperty(headerName)) {\n req.setRequestHeader(headerName, headers[headerName]);\n }\n }\n }\n\n if (fireAndForget) {\n resolve();\n } else {\n req.onreadystatechange = () => {\n if (req.readyState > 3) {\n resolve();\n }\n };\n }\n\n req.send(JSON.stringify(data).replace(/&/g, '%26'));\n });\n}\n\nexport function promiseDebounce(method, interval) {\n\n let debounce = {};\n\n return function() {\n let args = arguments;\n\n if (debounce.timeout) {\n clearTimeout(debounce.timeout);\n delete debounce.timeout;\n }\n\n debounce.timeout = setTimeout(() => {\n\n let resolver = debounce.resolver;\n let rejector = debounce.rejector;\n\n delete debounce.promise;\n delete debounce.resolver;\n delete debounce.rejector;\n delete debounce.timeout;\n\n return ZalgoPromise.resolve().then(() => {\n return method.apply(null, args);\n }).then(resolver, rejector);\n\n }, interval);\n\n debounce.promise = debounce.promise || new ZalgoPromise((resolver, rejector) => {\n debounce.resolver = resolver;\n debounce.rejector = rejector;\n });\n\n return debounce.promise;\n };\n}\n\nexport function onWindowReady() : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n if (typeof document !== 'undefined' && document.readyState === 'complete') {\n resolve();\n }\n\n window.addEventListener('load', resolve);\n });\n}\n\nexport function safeInterval(method, time) {\n\n let timeout;\n\n function loop() {\n timeout = setTimeout(() => {\n method();\n loop();\n }, time);\n }\n\n loop();\n\n return {\n cancel() {\n clearTimeout(timeout);\n }\n };\n}\n\nexport function uniqueID() {\n let chars = '0123456789abcdef';\n\n return 'xxxxxxxxxx'.replace(/./g, () => {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n });\n}\n\nexport function isIE() {\n return Boolean(window.document.documentMode);\n}\n","\nexport let payloadBuilders = [];\nexport let metaBuilders = [];\nexport let trackingBuilders = [];\nexport let headerBuilders = [];\n\nexport function addPayloadBuilder(builder) {\n payloadBuilders.push(builder);\n}\n\nexport function addMetaBuilder(builder) {\n metaBuilders.push(builder);\n}\n\nexport function addTrackingBuilder(builder) {\n trackingBuilders.push(builder);\n}\n\nexport function addHeaderBuilder(builder) {\n headerBuilders.push(builder);\n}","\nexport let config = {\n\n uri: '',\n prefix: '',\n\n initial_state_name: 'init',\n\n flushInterval: 10 * 60 * 1000,\n debounceInterval: 10,\n\n sizeLimit: 300,\n\n // Supress `console.log`s when `true`\n // Recommended for production usage\n silent: false,\n\n heartbeat: true,\n heartbeatConsoleLog: true,\n heartbeatInterval: 5000,\n heartbeatTooBusy: false,\n heartbeatTooBusyThreshold: 10000,\n\n logLevel: 'warn',\n\n autoLog: ['warn', 'error'],\n\n logUnload: true,\n logPerformance: true\n};\n\nexport let logLevels = [ 'error', 'warn', 'info', 'debug' ];\n","\nimport { extend, promiseDebounce, ajax, isIE } from './util';\nimport { payloadBuilders, metaBuilders, trackingBuilders, headerBuilders } from './builders';\nimport { config, logLevels } from './config';\n\nexport let buffer = [];\nexport let tracking = [];\n\nlet transport = (headers, data, options) => {\n return ajax('post', config.uri, headers, data, options);\n}\n\nexport function getTransport() {\n return transport;\n}\n\nexport function setTransport(newTransport) {\n transport = newTransport;\n}\n\nlet loaded = false;\n\nsetTimeout(() => {\n loaded = true;\n}, 1);\n\nexport function print(level, event, payload) {\n\n if (typeof window === 'undefined' || !window.console || !window.console.log) {\n return;\n }\n\n if (!loaded) {\n return setTimeout(() => print(level, event, payload), 1);\n }\n\n let logLevel = config.logLevel;\n\n if (window.LOG_LEVEL) {\n logLevel = window.LOG_LEVEL;\n }\n\n if (logLevels.indexOf(level) > logLevels.indexOf(logLevel)) {\n return;\n }\n\n payload = payload || {};\n\n let args = [event];\n\n if(isIE()){\n payload = JSON.stringify(payload);\n }\n\n args.push(payload);\n\n if (payload.error || payload.warning) {\n args.push('\\n\\n', payload.error || payload.warning);\n }\n\n try {\n if (window.console[level] && window.console[level].apply) {\n window.console[level].apply(window.console, args);\n } else if (window.console.log && window.console.log.apply) {\n window.console.log.apply(window.console, args);\n }\n } catch (err) {\n // pass\n }\n}\n\nexport function immediateFlush({ fireAndForget = false } = {}) {\n\n if (typeof window === 'undefined') {\n return;\n }\n\n if (!config.uri) {\n return;\n }\n\n let hasBuffer = buffer.length;\n let hasTracking = tracking.length;\n\n if (!hasBuffer && !hasTracking) {\n return;\n }\n\n let meta = {};\n\n for (let builder of metaBuilders) {\n try {\n extend(meta, builder(meta), false);\n } catch (err) {\n console.error('Error in custom meta builder:', err.stack || err.toString());\n }\n }\n\n let headers = {};\n\n for (let builder of headerBuilders) {\n try {\n extend(headers, builder(headers), false);\n } catch (err) {\n console.error('Error in custom header builder:', err.stack || err.toString());\n }\n }\n\n let events = buffer;\n\n let req = transport(headers, {\n events,\n meta,\n tracking\n }, {\n fireAndForget\n });\n\n buffer = [];\n tracking = [];\n\n return req;\n}\n\nexport let flush = promiseDebounce(immediateFlush, config.debounceInterval);\n\n\nfunction enqueue(level, event, payload) {\n\n buffer.push({\n level,\n event,\n payload\n });\n\n if (config.autoLog.indexOf(level) > -1) {\n flush();\n }\n}\n\n\nexport function log(level, event, payload) {\n\n if (typeof window === 'undefined') {\n return;\n }\n\n if (config.prefix) {\n event = `${config.prefix}_${event}`;\n }\n\n payload = payload || {};\n\n if (typeof payload === 'string') {\n payload = {\n message: payload\n };\n } else if (payload instanceof Error) {\n payload = {\n error: payload.stack || payload.toString()\n }\n }\n\n try {\n JSON.stringify(payload);\n } catch (err) {\n return;\n }\n\n payload.timestamp = Date.now();\n\n for (let builder of payloadBuilders) {\n try {\n extend(payload, builder(payload), false);\n } catch (err) {\n console.error('Error in custom payload builder:', err.stack || err.toString());\n }\n }\n\n if (!config.silent) {\n print(level, event, payload);\n }\n\n if (buffer.length === config.sizeLimit) {\n enqueue('info', 'logger_max_buffer_length');\n }\n else if (buffer.length < config.sizeLimit) {\n enqueue(level, event, payload);\n }\n}\n\nexport function prefix(name) {\n\n return {\n debug(event, payload) {\n return log('debug', `${name}_${event}`, payload);\n },\n\n info(event, payload) {\n return log('info', `${name}_${event}`, payload);\n },\n\n warn(event, payload) {\n return log('warn', `${name}_${event}`, payload);\n },\n\n error(event, payload) {\n return log('error', `${name}_${event}`, payload);\n },\n\n track(payload) {\n return track(payload);\n },\n\n flush() {\n return flush();\n }\n };\n}\n\nexport function debug(event, payload) {\n return log('debug', event, payload);\n}\n\nexport function info(event, payload) {\n return log('info', event, payload);\n}\n\nexport function warn(event, payload) {\n return log('warn', event, payload);\n}\n\nexport function error(event, payload) {\n return log('error', event, payload);\n}\n\nexport function track(payload) {\n\n if (typeof window === 'undefined') {\n return;\n }\n\n if (payload) {\n\n try {\n JSON.stringify(payload);\n } catch (err) {\n return;\n }\n\n for (let builder of trackingBuilders) {\n try {\n extend(payload, builder(payload), false);\n } catch (err) {\n console.error('Error in custom tracking builder:', err.stack || err.toString());\n }\n }\n\n print('debug', 'tracking', payload);\n\n tracking.push(payload);\n }\n}\n","\nimport { config } from './config';\nimport { info } from './logger';\nimport { addPayloadBuilder } from './builders'\nimport { onWindowReady, safeInterval } from './util';\n\nlet enablePerformance = window &&\n window.performance &&\n performance.now &&\n performance.timing &&\n performance.timing.connectEnd &&\n performance.timing.navigationStart &&\n (Math.abs(performance.now() - Date.now()) > 1000) &&\n (performance.now() - (performance.timing.connectEnd - performance.timing.navigationStart)) > 0;\n\n\nexport function now() {\n if (enablePerformance) {\n return performance.now();\n } else {\n return Date.now();\n }\n}\n\nfunction timer(startTime) {\n startTime = startTime !== undefined ? startTime : now();\n\n return {\n startTime,\n\n elapsed() {\n return parseInt(now() - startTime, 10);\n },\n\n reset() {\n startTime = now();\n }\n };\n}\n\nexport function reqStartElapsed() {\n if (enablePerformance) {\n let timing = window.performance.timing;\n return parseInt(timing.connectEnd - timing.navigationStart, 10);\n }\n}\n\nexport let clientTimer = timer();\nexport let reqTimer = timer(reqStartElapsed());\n\nexport function initHeartBeat() {\n\n let heartBeatTimer = timer();\n let heartbeatCount = 0;\n\n safeInterval(() => {\n\n if (config.heartbeatMaxThreshold && (heartbeatCount > config.heartbeatMaxThreshold)) {\n return;\n }\n\n heartbeatCount += 1;\n\n let elapsed = heartBeatTimer.elapsed();\n let lag = elapsed - config.heartbeatInterval;\n\n let heartbeatPayload = {\n count: heartbeatCount,\n elapsed\n };\n\n if (config.heartbeatTooBusy) {\n heartbeatPayload.lag = lag;\n\n if (lag >= config.heartbeatTooBusyThreshold) {\n info('toobusy', heartbeatPayload, {\n noConsole: !config.heartbeatConsoleLog\n });\n }\n }\n\n info('heartbeat', heartbeatPayload, {\n noConsole: !config.heartbeatConsoleLog\n });\n\n }, config.heartbeatInterval);\n}\n\nexport function initPerformance() {\n\n if (!enablePerformance) {\n return info('no_performance_data');\n }\n\n addPayloadBuilder(() => {\n\n let payload = {};\n\n payload.client_elapsed = clientTimer.elapsed();\n\n if (enablePerformance) {\n payload.req_elapsed = reqTimer.elapsed();\n }\n\n return payload;\n });\n\n onWindowReady().then(() => {\n\n let keys = [\n 'connectEnd', 'connectStart', 'domComplete', 'domContentLoadedEventEnd',\n 'domContentLoadedEventStart', 'domInteractive', 'domLoading', 'domainLookupEnd',\n 'domainLookupStart', 'fetchStart', 'loadEventEnd', 'loadEventStart', 'navigationStart',\n 'redirectEnd', 'redirectStart', 'requestStart', 'responseEnd', 'responseStart',\n 'secureConnectionStart', 'unloadEventEnd', 'unloadEventStart'\n ];\n\n let timing = {};\n\n keys.forEach(key => {\n timing[key] = parseInt(window.performance.timing[key], 10) || 0;\n });\n\n let offset = timing.connectEnd - timing.navigationStart;\n\n if (timing.connectEnd) {\n Object.keys(timing).forEach(name => {\n let time = timing[name];\n if (time) {\n info(`timing_${name}`, {\n client_elapsed: parseInt(time - timing.connectEnd - (clientTimer.startTime - offset), 10),\n req_elapsed: parseInt(time - timing.connectEnd, 10)\n });\n }\n });\n }\n\n info('timing', timing);\n info('memory', window.performance.memory);\n info('navigation', window.performance.navigation);\n\n if (window.performance.getEntries) {\n window.performance.getEntries().forEach(resource => {\n if (['link', 'script', 'img', 'css'].indexOf(resource.initiatorType) > -1) {\n info(resource.initiatorType, resource);\n }\n });\n }\n });\n}\n","\nimport { config } from './config';\nimport { extend } from './util';\nimport { initPerformance, initHeartBeat } from './performance';\nimport { log, info, flush, immediateFlush } from './logger';\n\nlet initiated = false;\n\nexport function init(conf) {\n extend(config, conf || {});\n\n if (initiated) {\n return;\n }\n\n initiated = true;\n\n if (config.logPerformance) {\n initPerformance();\n }\n\n if (config.heartbeat) {\n initHeartBeat();\n }\n\n if (config.logUnload) {\n window.addEventListener('beforeunload', () => {\n info('window_beforeunload');\n immediateFlush({ fireAndForget: true });\n });\n\n window.addEventListener('unload', () => {\n info('window_unload');\n immediateFlush({ fireAndForget: true });\n });\n }\n\n if (config.flushInterval) {\n setInterval(flush, config.flushInterval);\n }\n\n if (window.beaverLogQueue) {\n window.beaverLogQueue.forEach(payload => {\n log(payload.level, payload.event, payload);\n });\n delete window.beaverLogQueue;\n }\n}\n","\nimport { reqStartElapsed, now } from './performance';\nimport { info, immediateFlush, track } from './logger';\nimport { addMetaBuilder, addPayloadBuilder } from './builders';\nimport { uniqueID } from './util';\nimport { config } from './config';\n\nlet windowID = uniqueID();\nlet pageID = uniqueID();\n\nlet currentState = config.initial_state_name;\nlet startTime;\n\nexport function startTransition() {\n startTime = now();\n}\n\nexport function endTransition(toState) {\n startTime = startTime || reqStartElapsed();\n\n let currentTime = now();\n let elapsedTime;\n\n if (startTime !== undefined) {\n elapsedTime = parseInt(currentTime - startTime, 0);\n }\n\n let transitionName = `transition_${currentState}_to_${toState}`;\n\n info(transitionName, {\n duration: elapsedTime\n });\n\n track({\n transition: transitionName,\n transition_time: elapsedTime\n });\n\n immediateFlush();\n\n startTime = currentTime;\n currentState = toState;\n pageID = uniqueID();\n}\n\nexport function transition(toState) {\n startTransition();\n endTransition(toState);\n}\n\naddPayloadBuilder(() => {\n return {\n windowID,\n pageID\n }\n});\n\naddMetaBuilder(() => {\n return {\n state: `ui_${currentState}`\n };\n});\n","\nimport * as INTERFACE from './interface';\nexport * from './interface';\nexport default INTERFACE;","/* @flow */\n/* eslint max-lines: off */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\n\nimport type { CancelableType } from '../types';\n\n/* Url Encode\n ----------\n\n Replace ? and & with encoded values. Allows other values (to create more readable urls than encodeUriComponent)\n*/\n\nexport function urlEncode(str : string) : string {\n return str.replace(/\\?/g, '%3F').replace(/&/g, '%26').replace(/#/g, '%23').replace(/\\+/g, '%2B');\n}\n\n\n/* Camel To Dasherize\n ------------------\n\n Convert camelCaseText to dasherized-text\n*/\n\nexport function camelToDasherize(string : string) : string {\n return string.replace(/([A-Z])/g, (g) => {\n return `-${ g.toLowerCase() }`;\n });\n}\n\n\n/* Dasherize to Camel\n ------------------\n\n Convert dasherized-text to camelCaseText\n*/\n\nexport function dasherizeToCamel(string : string) : string {\n return string.replace(/-([a-z])/g, (g) => {\n return g[1].toUpperCase();\n });\n}\n\n\n/* Extend\n ------\n\n Extend one object with another\n*/\n\nexport function extend(obj : Object, source : ?Object) : Object {\n if (!source) {\n return obj;\n }\n\n for (let key in source) {\n if (source.hasOwnProperty(key)) {\n obj[key] = source[key];\n }\n }\n\n return obj;\n}\n\n\n/* Values\n ------\n\n Get all of the values from an object as an array\n*/\n\nexport function values(obj : Object) : Array {\n let results = [];\n\n for (let key in obj) {\n if (obj.hasOwnProperty(key)) {\n results.push(obj[key]);\n }\n }\n\n return results;\n}\n\n\n/* Unique ID\n ---------\n\n Generate a unique, random hex id\n*/\n\nexport function uniqueID() : string {\n\n let chars = '0123456789abcdef';\n\n return 'xxxxxxxxxx'.replace(/./g, () => {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n });\n}\n\n/* Stringify with Functions\n ------------------------\n\n JSON Stringify with added support for functions\n*/\n\nexport function stringifyWithFunctions(obj : Object) : string {\n return JSON.stringify(obj, (key, val) => {\n if (typeof val === 'function') {\n return val.toString();\n }\n return val;\n });\n}\n\n\n/* Safe Get\n --------\n\n Get a property without throwing error\n*/\n\nexport function safeGet(obj : Object, prop : string) : mixed {\n\n let result;\n\n try {\n result = obj[prop];\n } catch (err) {\n // pass\n }\n\n return result;\n}\n\n\n/* Capitalize First Letter\n -----------------------\n*/\n\nexport function capitalizeFirstLetter(string : string) : string {\n return string.charAt(0).toUpperCase() + string.slice(1).toLowerCase();\n}\n\n\n/* Get\n ---\n\n Recursively gets a deep path from an object, returning a default value if any level is not found\n*/\n\nexport function get(item : Object, path : string, def : mixed) : mixed {\n\n if (!path) {\n return def;\n }\n\n let pathParts = path.split('.');\n\n // Loop through each section of our key path\n\n for (let i = 0; i < pathParts.length; i++) {\n\n // If we have an object, we can get the key\n\n if (typeof item === 'object' && item !== null) {\n item = item[pathParts[i]];\n\n // Otherwise, we should return the default (undefined if not provided)\n } else {\n return def;\n }\n }\n\n // If our final result is undefined, we should return the default\n\n return item === undefined ? def : item;\n}\n\n\n/* Safe Interval\n -------------\n\n Implement setInterval using setTimeout, to avoid stacking up calls from setInterval\n*/\n\nexport function safeInterval(method : Function, time : number) : CancelableType {\n\n let timeout;\n\n function runInterval() {\n timeout = setTimeout(runInterval, time);\n method.call();\n }\n\n timeout = setTimeout(runInterval, time);\n\n return {\n cancel() {\n clearTimeout(timeout);\n }\n };\n}\n\n/* Safe Interval\n -------------\n\n Run timeouts at 100ms intervals so we can account for busy browsers\n*/\n\nexport function safeTimeout(method : Function, time : number) {\n\n let interval = safeInterval(() => {\n time -= 100;\n if (time <= 0) {\n interval.cancel();\n method();\n }\n }, 100);\n}\n\n\nexport function each(item : Array | Object, callback : Function) {\n\n if (!item) {\n return;\n }\n\n if (Array.isArray(item)) {\n let len = item.length;\n for (let i = 0; i < len; i++) {\n callback(item[i], i);\n }\n\n } else if (typeof item === 'object') {\n let keys = Object.keys(item);\n let len = keys.length;\n for (let i = 0; i < len; i++) {\n let key = keys[i];\n callback(item[key], key);\n }\n }\n}\n\n\nexport function replaceObject> (item : T, replacers : { [string] : Function }, fullKey : string = '') : T {\n\n if (Array.isArray(item)) {\n let length = item.length;\n let result = [];\n\n for (let i = 0; i < length; i++) {\n Object.defineProperty(result, i, {\n configurable: true,\n enumerable: true,\n get: () => {\n let itemKey = fullKey ? `${ fullKey }.${ i }` : `${ i }`;\n let child = item[i];\n\n let type = (typeof child);\n let replacer = replacers[type];\n if (replacer) {\n let replaced = replacer(child, i, itemKey);\n if (typeof replaced !== 'undefined') {\n result[i] = replaced;\n return result[i];\n }\n }\n\n if (typeof child === 'object' && child !== null) {\n result[i] = replaceObject(child, replacers, itemKey);\n return result[i];\n }\n\n result[i] = child;\n return result[i];\n },\n set: (value) => {\n delete result[i];\n result[i] = value;\n }\n });\n }\n\n // $FlowFixMe\n return result;\n } else if (typeof item === 'object' && item !== null) {\n let result = {};\n\n for (let key in item) {\n if (!item.hasOwnProperty(key)) {\n continue;\n }\n\n Object.defineProperty(result, key, {\n configurable: true,\n enumerable: true,\n get: () => {\n let itemKey = fullKey ? `${ fullKey }.${ key }` : `${ key }`;\n // $FlowFixMe\n let child = item[key];\n\n let type = (typeof child);\n let replacer = replacers[type];\n if (replacer) {\n let replaced = replacer(child, key, itemKey);\n if (typeof replaced !== 'undefined') {\n result[key] = replaced;\n return result[key];\n }\n }\n\n if (typeof child === 'object' && child !== null) {\n result[key] = replaceObject(child, replacers, itemKey);\n return result[key];\n }\n\n result[key] = child;\n return result[key];\n },\n set: (value) => {\n delete result[key];\n result[key] = value;\n }\n });\n }\n\n // $FlowFixMe\n return result;\n } else {\n throw new Error(`Pass an object or array`);\n }\n}\n\n\nexport function copyProp(source : Object, target : Object, name : string, def : mixed) {\n if (source.hasOwnProperty(name)) {\n let descriptor = Object.getOwnPropertyDescriptor(source, name);\n // $FlowFixMe\n Object.defineProperty(target, name, descriptor);\n\n } else {\n target[name] = def;\n }\n}\n\nexport function dotify(obj : Object, prefix : string = '', newobj : Object = {}) : { [string] : string } {\n prefix = prefix ? `${ prefix }.` : prefix;\n for (let key in obj) {\n if (obj[key] === undefined || obj[key] === null || typeof obj[key] === 'function') {\n continue;\n } else if (obj[key] && Array.isArray(obj[key]) && obj[key].length && obj[key].every(val => typeof val !== 'object')) {\n newobj[`${ prefix }${ key }`] = obj[key].join(',');\n } else if (obj[key] && typeof obj[key] === 'object') {\n newobj = dotify(obj[key], `${ prefix }${ key }`, newobj);\n } else {\n newobj[`${ prefix }${ key }`] = obj[key].toString();\n }\n }\n return newobj;\n}\n\nlet objectIDs = new WeakMap();\n\nexport function getObjectID(obj : Object) : string {\n\n if (obj === null || obj === undefined || (typeof obj !== 'object' && typeof obj !== 'function')) {\n throw new Error(`Invalid object`);\n }\n\n let uid = objectIDs.get(obj);\n\n if (!uid) {\n uid = `${ typeof obj }:${ uniqueID() }`;\n objectIDs.set(obj, uid);\n }\n\n return uid;\n}\n\ntype RegexResultType = {\n text : string,\n groups : Array,\n start : number,\n end : number,\n length : number,\n replace : (text : string) => string\n};\n\nexport function regex(pattern : string | RegExp, string : string, start : number = 0) : ?RegexResultType {\n\n if (typeof pattern === 'string') {\n // eslint-disable-next-line security/detect-non-literal-regexp\n pattern = new RegExp(pattern);\n }\n\n let result = string.slice(start).match(pattern);\n\n if (!result) {\n return;\n }\n\n // $FlowFixMe\n let index : number = result.index;\n let match = result[0];\n\n return {\n text: match,\n groups: result.slice(1),\n start: start + index,\n end: start + index + match.length,\n length: match.length,\n\n replace(text : string) : string {\n\n if (!match) {\n return '';\n }\n\n return `${ match.slice(0, start + index) }${ text }${ match.slice(index + match.length) }`;\n }\n };\n}\n\nexport function regexAll(pattern : string | RegExp, string : string) : Array {\n\n let matches = [];\n let start = 0;\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n let match = regex(pattern, string, start);\n\n if (!match) {\n break;\n }\n\n matches.push(match);\n start = match.end;\n }\n\n return matches;\n}\n\nexport function count(str : string, substr : string) : number {\n\n let startIndex = 0;\n let itemCount = 0;\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n let index = str.indexOf(substr, startIndex);\n\n if (index === -1) {\n break;\n }\n\n startIndex = index;\n itemCount += 1;\n }\n\n return itemCount;\n}\n\nexport function stringify(item : mixed) : string {\n if (typeof item === 'string') {\n return item;\n }\n\n if (item && typeof item.toString === 'function') {\n return item.toString();\n }\n\n return Object.prototype.toString.call(item);\n}\n\nexport function stringifyError(err : mixed) : string {\n if (err) {\n // $FlowFixMe\n let { stack, message } = err;\n\n if (typeof stack === 'string') {\n return stack;\n }\n\n if (typeof message === 'string') {\n return message;\n }\n }\n\n return stringify(err);\n}\n\nexport type EventEmitterType = {\n on : (eventName : string, handler : Function) => CancelableType,\n once : (eventName : string, handler : Function) => CancelableType,\n trigger : (eventName : string) => void,\n triggerOnce : (eventName : string) => void\n};\n\nexport function eventEmitter() : EventEmitterType {\n\n let triggered = {};\n let handlers = {};\n\n return {\n\n on(eventName : string, handler : Function) : CancelableType {\n\n let handlerList = handlers[eventName] = handlers[eventName] || [];\n\n handlerList.push(handler);\n\n let cancelled = false;\n\n return {\n cancel() {\n if (!cancelled) {\n cancelled = true;\n handlerList.splice(handlerList.indexOf(handler), 1);\n }\n\n }\n };\n },\n\n once(eventName : string, handler : Function) : CancelableType {\n\n let listener = this.on(eventName, () => {\n listener.cancel();\n handler();\n });\n\n return listener;\n },\n\n trigger(eventName : string) {\n\n let handlerList = handlers[eventName];\n\n if (handlerList) {\n for (let handler of handlerList) {\n handler();\n }\n }\n },\n\n triggerOnce(eventName : string) {\n\n if (triggered[eventName]) {\n return;\n }\n\n triggered[eventName] = true;\n this.trigger(eventName);\n }\n };\n}\n","/* @flow */\n\nimport { getObjectID, replaceObject } from './util';\n\n\n/* Noop\n ----\n\n Do nothing, zilch, nada, zip\n*/\n\nexport function noop() {\n // pass\n}\n\n\n/* Once\n ----\n\n Create a wrapper function which only allows the inner function to run once, otherwise is a noop\n*/\n\nexport function once(method : (...args : Array) => T) : (...args : Array) => T {\n\n let called = false;\n let result;\n\n // eslint-disable-next-line no-unused-vars\n return function onceWrapper(...args : Array) : T {\n if (called) {\n return result;\n }\n\n called = true;\n result = method.apply(this, arguments);\n return result;\n };\n}\n\n\n/* Memoize\n -------\n\n Create a wrapper function which caches the result of the first call, then for subsequent calls returns the cached value\n*/\n\nexport function memoize(method : (...args : Array) => T) : (...args : Array) => T {\n\n let results = {};\n\n // eslint-disable-next-line no-unused-vars\n return function memoizeWrapper(...args : Array) : T {\n\n let cacheKey;\n\n try {\n cacheKey = JSON.stringify(Array.prototype.slice.call(arguments), (key, val) => {\n\n if (typeof val === 'function') {\n return `zoid:memoize[${ getObjectID(val) }]`;\n }\n\n return val;\n });\n\n } catch (err) {\n throw new Error('Arguments not serializable -- can not be used to memoize');\n }\n\n if (!results.hasOwnProperty(cacheKey)) {\n results[cacheKey] = method.apply(this, arguments);\n }\n\n return results[cacheKey];\n };\n}\n\nexport function debounce(method : (...args : Array) => T, time : number = 100) : (...args : Array) => void {\n\n let timeout;\n\n return function debounceWrapper() {\n clearTimeout(timeout);\n\n timeout = setTimeout(() => {\n return method.apply(this, arguments);\n }, time);\n };\n}\n\nexport function serializeFunctions>(obj : T) : T {\n return replaceObject(obj, {\n 'function': () => {\n return {\n __type__: '__function__'\n };\n }\n });\n}\n\nexport function deserializeFunctions>(obj : T, handler : Function) : T {\n return replaceObject(obj, {\n 'object': (value, key, fullKey) => {\n if (value && value.__type__ === '__function__') {\n return function deserializedFunctionWrapper() : mixed {\n return handler({ key, fullKey, self: this, args: arguments });\n };\n }\n }\n });\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { isWindowClosed, linkFrameWindow, type CrossDomainWindowType, type SameDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\n\nimport { PopupOpenError } from '../error';\nimport type { ElementRefType, CancelableType } from '../types';\n\nimport { once, memoize, debounce } from './fn';\nimport { extend, safeInterval, urlEncode, capitalizeFirstLetter, stringify } from './util';\n\nexport function appendChild(container : HTMLElement, child : HTMLElement | Text) {\n container.appendChild(child);\n}\n\nfunction isElement(element : mixed) : boolean {\n\n if (element instanceof window.Element) {\n return true;\n }\n\n if (element !== null && typeof element === 'object' && element.nodeType === 1 && typeof element.style === 'object' && typeof element.ownerDocument === 'object') {\n return true;\n }\n\n return false;\n}\n\nexport function querySelectorAll(el : HTMLElement, selector : string) : Array {\n return Array.prototype.slice.call(el.querySelectorAll(selector));\n}\n\n/* Get Element\n -----------\n\n Gets an element based on\n\n - Element id\n - CSS Query selector\n*/\n\nexport function getElementSafe(id : ElementRefType) : ?HTMLElement {\n\n if (isElement(id)) {\n // $FlowFixMe\n return id;\n }\n\n if (typeof id === 'string') {\n let element = document.getElementById(id);\n\n if (element) {\n return element;\n }\n\n if (document.querySelector) {\n element = document.querySelector(id);\n }\n\n if (element) {\n return element;\n }\n }\n}\n\nexport function getElement(id : ElementRefType) : HTMLElement {\n\n let element = getElementSafe(id);\n\n if (element) {\n return element;\n }\n\n throw new Error(`Can not find element: ${ stringify(id) }`);\n}\n\n\nexport let documentReady = new ZalgoPromise(resolve => {\n\n if (window.document.readyState === 'complete') {\n return resolve(window.document);\n }\n\n let interval = setInterval(() => {\n if (window.document.readyState === 'complete') {\n clearInterval(interval);\n return resolve(window.document);\n }\n }, 10);\n});\n\nexport function isDocumentReady() : boolean {\n return window.document.readyState === 'complete';\n}\n\nexport function elementReady(id : ElementRefType) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n let name = stringify(id);\n let el = getElementSafe(id);\n\n if (el) {\n return resolve(el);\n }\n\n if (isDocumentReady()) {\n return reject(new Error(`Document is ready and element ${ name } does not exist`));\n }\n\n let interval = setInterval(() => {\n\n el = getElementSafe(id);\n\n if (el) {\n clearInterval(interval);\n return resolve(el);\n }\n\n if (isDocumentReady()) {\n clearInterval(interval);\n return reject(new Error(`Document is ready and element ${ name } does not exist`));\n }\n }, 10);\n });\n}\n\n\n/* Popup\n -----\n\n Open a popup window with the specified option map\n*/\n\nexport function popup(url : string, options : { [ string ] : mixed }) : CrossDomainWindowType {\n\n // eslint-disable-next-line array-callback-return\n let params = Object.keys(options).map((key) => {\n if (options[key]) {\n return `${ key }=${ stringify(options[key]) }`;\n }\n }).filter(Boolean).join(',');\n\n let win;\n\n try {\n win = window.open(url, options.name, params, true);\n } catch (err) {\n throw new PopupOpenError(`Can not open popup window - ${ err.stack || err.message }`);\n }\n\n if (isWindowClosed(win)) {\n let err = new PopupOpenError(`Can not open popup window - blocked`);\n throw err;\n }\n\n return win;\n}\n\n\nexport function writeToWindow(win : SameDomainWindowType, html : string) {\n try {\n win.document.open();\n win.document.write(html);\n win.document.close();\n } catch (err) {\n try {\n win.location = `javascript: document.open(); document.write(${ JSON.stringify(html) }); document.close();`;\n } catch (err2) {\n // pass\n }\n }\n}\n\nexport function writeElementToWindow(win : SameDomainWindowType, el : HTMLElement) {\n\n let tag = el.tagName.toLowerCase();\n\n if (tag !== 'html') {\n throw new Error(`Expected element to be html, got ${ tag }`);\n }\n\n let documentElement = win.document.documentElement;\n\n while (documentElement.children && documentElement.children.length) {\n documentElement.removeChild(documentElement.children[0]);\n }\n\n while (el.children.length) {\n documentElement.appendChild(el.children[0]);\n }\n}\n\nexport function setStyle(el : HTMLElement, styleText : string, doc : Document = window.document) {\n // $FlowFixMe\n if (el.styleSheet) {\n // $FlowFixMe\n el.styleSheet.cssText = styleText;\n } else {\n el.appendChild(doc.createTextNode(styleText));\n }\n}\n\n/* Create Element\n --------------\n\n Create an element with style, html, classes, attributes etc. and append it to the specified container\n*/\n\nexport type ElementOptionsType = {\n style? : { [ string ] : string },\n class? : ?Array,\n attributes? : { [ string ] : string },\n styleSheet? : ?string,\n html? : ?string\n};\n\nexport function createElement(tag : string = 'div', options : ElementOptionsType = {}, container : ?HTMLElement) : HTMLElement {\n\n tag = tag.toLowerCase();\n let element = document.createElement(tag);\n\n if (options.style) {\n extend(element.style, options.style);\n }\n\n if (options.class) {\n element.className = options.class.join(' ');\n }\n\n if (options.attributes) {\n for (let key of Object.keys(options.attributes)) {\n element.setAttribute(key, options.attributes[key]);\n }\n }\n\n if (options.styleSheet) {\n setStyle(element, options.styleSheet);\n }\n\n if (container) {\n appendChild(container, element);\n }\n\n if (options.html) {\n if (tag === 'iframe') {\n // $FlowFixMe\n if (!container || !element.contentWindow) {\n throw new Error(`Iframe html can not be written unless container provided and iframe in DOM`);\n }\n\n // $FlowFixMe\n writeToWindow(element.contentWindow, options.html);\n\n } else {\n element.innerHTML = options.html;\n }\n }\n\n return element;\n}\n\nlet awaitFrameLoadPromises : WeakMap> = new WeakMap();\n\nexport function awaitFrameLoad(frame : HTMLIFrameElement) : ZalgoPromise {\n\n if (awaitFrameLoadPromises.has(frame)) {\n let promise = awaitFrameLoadPromises.get(frame);\n if (promise) {\n return promise;\n }\n }\n\n let promise = new ZalgoPromise((resolve, reject) => {\n frame.addEventListener('load', () => {\n linkFrameWindow(frame);\n resolve(frame);\n });\n\n frame.addEventListener('error', (err : Event) => {\n if (frame.contentWindow) {\n resolve(frame);\n } else {\n reject(err);\n }\n });\n });\n\n awaitFrameLoadPromises.set(frame, promise);\n\n return promise;\n}\n\nexport function awaitFrameWindow(frame : HTMLIFrameElement) : ZalgoPromise {\n\n if (frame.contentWindow) {\n return ZalgoPromise.resolve(frame.contentWindow);\n }\n\n return awaitFrameLoad(frame).then(loadedFrame => {\n\n if (!loadedFrame.contentWindow) {\n throw new Error(`Could not find window in iframe`);\n }\n\n return loadedFrame.contentWindow;\n });\n}\n\n\n/* Iframe\n ------\n\n Open an iframe with the specified container, url, and option property map\n*/\n\nexport type IframeElementOptionsType = {\n style? : { [ string ] : string },\n class? : ?Array,\n attributes? : { [ string ] : string },\n styleSheet? : ?string,\n html? : ?string,\n url? : ?string\n};\n\nexport function iframe(options : IframeElementOptionsType = {}, container : HTMLElement) : HTMLIFrameElement {\n\n let el = getElement(container);\n\n let attributes = options.attributes || {};\n let style = options.style || {};\n\n let frame = createElement('iframe', {\n attributes: {\n frameBorder: '0',\n allowTransparency: 'true',\n ...attributes\n },\n style: {\n backgroundColor: 'transparent',\n ...style\n },\n html: options.html,\n class: options.class\n });\n\n // $FlowFixMe\n awaitFrameLoad(frame);\n\n el.appendChild(frame);\n\n if (options.url || window.navigator.userAgent.match(/MSIE|Edge/i)) {\n frame.setAttribute('src', options.url || 'about:blank');\n }\n\n // $FlowFixMe\n return frame;\n}\n\n/* Add Event Listener\n ------------------\n\n Add DOM Event listener with cancel\n*/\n\nexport function addEventListener(obj : HTMLElement, event : string, handler : (event : Event) => void) : CancelableType {\n obj.addEventListener(event, handler);\n return {\n cancel() {\n obj.removeEventListener(event, handler);\n }\n };\n}\n\n/* Scan For Javascript\n -------------------\n\n Check if the string contains anything which could conceivably be run as javascript if the string is set to innerHTML\n*/\n\nexport function scanForJavascript(str : string) : string {\n\n if (!str) {\n return str;\n }\n\n if (str.match(/ {\n\n let params = {};\n\n if (!queryString) {\n return params;\n }\n\n if (queryString.indexOf('=') === -1) {\n throw new Error(`Can not parse query string params: ${ queryString }`);\n }\n\n for (let pair of queryString.split('&')) {\n pair = pair.split('=');\n\n if (pair[0] && pair[1]) {\n params[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n }\n\n return params;\n});\n\n\nexport function getQueryParam(name : string) : ?string {\n return parseQuery(window.location.search.slice(1))[name];\n}\n\nexport function formatQuery(obj : { [ string ] : string } = {}) : string {\n\n return Object.keys(obj).filter(key => {\n return typeof obj[key] === 'string';\n }).map(key => {\n return `${ urlEncode(key) }=${ urlEncode(obj[key]) }`;\n }).join('&');\n}\n\nexport function extendQuery(originalQuery : string, props : { [ string ] : string } = {}) : string {\n\n if (!props || !Object.keys(props).length) {\n return originalQuery;\n }\n\n return formatQuery({\n ...parseQuery(originalQuery),\n ...props\n });\n}\n\nexport function extendUrl(url : string, options : { query? : { [ string ] : string }, hash? : { [ string ] : string } } = {}) : string {\n\n let query = options.query || {};\n let hash = options.hash || {};\n\n let originalUrl;\n let originalQuery;\n let originalHash;\n\n [ originalUrl, originalHash ] = url.split('#');\n [ originalUrl, originalQuery ] = originalUrl.split('?');\n\n let queryString = extendQuery(originalQuery, query);\n let hashString = extendQuery(originalHash, hash);\n\n if (queryString) {\n originalUrl = `${ originalUrl }?${ queryString }`;\n }\n\n if (hashString) {\n originalUrl = `${ originalUrl }#${ hashString }`;\n }\n\n return originalUrl;\n}\n\n\nexport function elementStoppedMoving(element : ElementRefType, timeout : number = 5000) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n let el = getElement(element);\n\n let start = el.getBoundingClientRect();\n\n let interval;\n let timer;\n\n interval = setInterval(() => {\n let end = el.getBoundingClientRect();\n\n if (start.top === end.top && start.bottom === end.bottom && start.left === end.left && start.right === end.right && start.width === end.width && start.height === end.height) {\n clearTimeout(timer);\n clearInterval(interval);\n return resolve();\n }\n\n start = end;\n\n }, 50);\n\n timer = setTimeout(() => {\n clearInterval(interval);\n reject(new Error(`Timed out waiting for element to stop animating after ${ timeout }ms`));\n }, timeout);\n });\n}\n\nexport function getCurrentDimensions(el : HTMLElement) : { width : number, height : number } {\n return {\n width: el.offsetWidth,\n height: el.offsetHeight\n };\n}\n\nexport function changeStyle(el : HTMLElement, styles : { [ string ] : string }) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n\n for (let key of Object.keys(styles)) {\n // $FlowFixMe\n el.style[key] = styles[key];\n }\n\n setTimeout(resolve, 1);\n });\n}\n\nexport function setOverflow(el : HTMLElement, value : string = 'auto') : { reset : () => void } {\n\n let { overflow, overflowX, overflowY } = el.style;\n\n el.style.overflow = el.style.overflowX = el.style.overflowY = value;\n\n return {\n reset() {\n el.style.overflow = overflow;\n el.style.overflowX = overflowX;\n el.style.overflowY = overflowY;\n }\n };\n}\n\nfunction dimensionsDiff(one : { width : number, height : number }, two : { width : number, height : number }, { width = true, height = true, threshold = 0 } : { width : boolean, height : boolean, threshold : number }) : boolean {\n\n if (width && Math.abs(one.width - two.width) > threshold) {\n return true;\n }\n\n if (height && Math.abs(one.height - two.height) > threshold) {\n return true;\n }\n\n return false;\n}\n\nexport function trackDimensions(el : HTMLElement, { width = true, height = true, threshold = 0 } : { width : boolean, height : boolean, threshold : number }) : { check : () => { changed : boolean, dimensions : { width : number, height : number } }, reset : () => void } {\n\n let currentDimensions = getCurrentDimensions(el);\n\n return {\n check() : { changed : boolean, dimensions : { width : number, height : number } } {\n let newDimensions = getCurrentDimensions(el);\n\n return {\n changed: dimensionsDiff(currentDimensions, newDimensions, { width, height, threshold }),\n dimensions: newDimensions\n };\n },\n\n reset() {\n currentDimensions = getCurrentDimensions(el);\n }\n };\n}\n\nexport function onDimensionsChange(el : HTMLElement, { width = true, height = true, delay = 50, threshold = 0 } : { width? : boolean, height? : boolean, delay? : number, threshold? : number }) : ZalgoPromise<{ width : number, height : number }> {\n\n return new ZalgoPromise(resolve => {\n\n let tracker = trackDimensions(el, { width, height, threshold });\n\n let interval;\n\n let resolver = debounce((dimensions) => {\n clearInterval(interval);\n return resolve(dimensions);\n }, delay * 4);\n\n interval = setInterval(() => {\n let { changed, dimensions } = tracker.check();\n if (changed) {\n tracker.reset();\n return resolver(dimensions);\n }\n }, delay);\n\n function onWindowResize() {\n let { changed, dimensions } = tracker.check();\n if (changed) {\n tracker.reset();\n window.removeEventListener('resize', onWindowResize);\n resolver(dimensions);\n }\n }\n\n window.addEventListener('resize', onWindowResize);\n });\n}\n\n\nexport function dimensionsMatchViewport(el : HTMLElement, { width, height } : { width : number, height : number }) : boolean {\n\n let dimensions = getCurrentDimensions(el);\n\n if (width && dimensions.width !== window.innerWidth) {\n return false;\n }\n\n if (height && dimensions.height !== window.innerHeight) {\n return false;\n }\n\n return true;\n}\n\n\nexport function bindEvents(element : HTMLElement, eventNames : Array, handler : (event : Event) => void) : CancelableType {\n\n handler = once(handler);\n\n for (let eventName of eventNames) {\n element.addEventListener(eventName, handler);\n }\n\n return {\n cancel: once(() => {\n for (let eventName of eventNames) {\n element.removeEventListener(eventName, handler);\n }\n })\n };\n}\n\nconst VENDOR_PREFIXES = [ 'webkit', 'moz', 'ms', 'o' ];\n\nexport function setVendorCSS(element : HTMLElement, name : string, value : string) {\n\n // $FlowFixMe\n element.style[name] = value;\n\n let capitalizedName = capitalizeFirstLetter(name);\n\n for (let prefix of VENDOR_PREFIXES) {\n // $FlowFixMe\n element.style[`${ prefix }${ capitalizedName }`] = value;\n }\n}\n\n\nlet CSSRule = window.CSSRule;\n\nconst KEYFRAMES_RULE = CSSRule.KEYFRAMES_RULE || CSSRule.WEBKIT_KEYFRAMES_RULE || CSSRule.MOZ_KEYFRAMES_RULE ||\n CSSRule.O_KEYFRAMES_RULE || CSSRule.MS_KEYFRAMES_RULE;\n\nfunction isValidAnimation(element : HTMLElement, name : string) : boolean {\n\n let stylesheets = element.ownerDocument.styleSheets;\n\n try {\n for (let i = 0; i < stylesheets.length; i++) {\n\n // $FlowFixMe\n let cssRules = stylesheets[i].cssRules;\n\n if (!cssRules) {\n continue;\n }\n\n for (let j = 0; j < cssRules.length; j++) {\n\n let cssRule = cssRules[j];\n\n if (!cssRule) {\n continue;\n }\n\n if (cssRule.type === KEYFRAMES_RULE && cssRule.name === name) {\n return true;\n }\n }\n }\n } catch (err) {\n\n return false;\n }\n\n\n return false;\n}\n\n\nconst ANIMATION_START_EVENTS = [ 'animationstart', 'webkitAnimationStart', 'oAnimationStart', 'MSAnimationStart' ];\nconst ANIMATION_END_EVENTS = [ 'animationend', 'webkitAnimationEnd', 'oAnimationEnd', 'MSAnimationEnd' ];\n\nexport function animate(element : ElementRefType, name : string, clean : (Function) => void, timeout : number = 1000) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n let el = getElement(element);\n\n if (!el || !isValidAnimation(el, name)) {\n return resolve();\n }\n\n let hasStarted = false;\n\n let startTimeout;\n let endTimeout;\n let startEvent;\n let endEvent;\n\n function cleanUp() {\n setVendorCSS(el, 'animationName', '');\n clearTimeout(startTimeout);\n clearTimeout(endTimeout);\n startEvent.cancel();\n endEvent.cancel();\n }\n\n startEvent = bindEvents(el, ANIMATION_START_EVENTS, event => {\n\n // $FlowFixMe\n if (event.target !== el || event.animationName !== name) {\n return;\n }\n\n clearTimeout(startTimeout);\n\n event.stopPropagation();\n\n startEvent.cancel();\n hasStarted = true;\n\n endTimeout = setTimeout(() => {\n cleanUp();\n resolve();\n }, timeout);\n });\n\n endEvent = bindEvents(el, ANIMATION_END_EVENTS, event => {\n\n // $FlowFixMe\n if (event.target !== el || event.animationName !== name) {\n return;\n }\n\n cleanUp();\n\n // $FlowFixMe\n if (typeof event.animationName === 'string' && event.animationName !== name) {\n return reject(`Expected animation name to be ${ name }, found ${ event.animationName }`);\n }\n\n return resolve();\n });\n\n setVendorCSS(el, 'animationName', name);\n\n startTimeout = setTimeout(() => {\n if (!hasStarted) {\n cleanUp();\n return resolve();\n }\n }, 200);\n\n if (clean) {\n clean(cleanUp);\n }\n });\n}\n\nconst STYLE = {\n\n DISPLAY: {\n NONE: 'none',\n BLOCK: 'block'\n },\n\n VISIBILITY: {\n VISIBLE: 'visible',\n HIDDEN: 'hidden'\n },\n\n IMPORTANT: 'important'\n};\n\nexport function makeElementVisible(element : HTMLElement) {\n element.style.setProperty('visibility', '');\n}\n\nexport function makeElementInvisible(element : HTMLElement) {\n element.style.setProperty('visibility', STYLE.VISIBILITY.HIDDEN, STYLE.IMPORTANT);\n}\n\n\nexport function showElement(element : HTMLElement) {\n element.style.setProperty('display', '');\n}\n\nexport function hideElement(element : HTMLElement) {\n element.style.setProperty('display', STYLE.DISPLAY.NONE, STYLE.IMPORTANT);\n}\n\nexport function destroyElement(element : HTMLElement) {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n}\n\nexport function showAndAnimate(element : HTMLElement, name : string, clean : (Function) => void) : ZalgoPromise {\n let animation = animate(element, name, clean);\n showElement(element);\n return animation;\n}\n\nexport function animateAndHide(element : HTMLElement, name : string, clean : (Function) => void) : ZalgoPromise {\n return animate(element, name, clean).then(() => {\n hideElement(element);\n });\n}\n\nexport function addClass(element : HTMLElement, name : string) {\n if (element.classList) {\n element.classList.add(name);\n } else if (element.className.split(/\\s+/).indexOf(name) === -1) {\n element.className += ` ${ name }`;\n }\n}\n\nexport function removeClass(element : HTMLElement, name : string) {\n if (element.classList) {\n element.classList.remove(name);\n } else if (element.className.split(/\\s+/).indexOf(name) !== -1) {\n element.className = element.className.replace(name, '');\n }\n}\n\nexport function getCurrentScriptDir() : string {\n // eslint-disable-next-line no-console\n console.warn(`Do not use zoid.getCurrentScriptDir() in production -- browser support is limited`);\n\n // eslint-disable-next-line compat/compat\n if (document.currentScript) {\n // eslint-disable-next-line compat/compat\n return document.currentScript.src.split('/').slice(0, -1).join('/');\n }\n\n return '.';\n}\n\nexport function getElementName(element : ElementRefType) : string {\n\n if (typeof element === 'string') {\n return element;\n }\n\n if (!element || !element.tagName) {\n return '';\n }\n\n let name = element.tagName.toLowerCase();\n\n if (element.id) {\n name += `#${ element.id }`;\n } else if (element.className) {\n name += `.${ element.className.split(' ').join('.') }`;\n }\n\n return name;\n}\n\nexport function isElementClosed(el : HTMLElement) : boolean {\n if (!el || !el.parentNode) {\n return true;\n }\n return false;\n}\n\nexport function watchElementForClose(element : HTMLElement, handler : () => mixed) : CancelableType {\n handler = once(handler);\n\n let interval;\n\n if (isElementClosed(element)) {\n handler();\n } else {\n interval = safeInterval(() => {\n if (isElementClosed(element)) {\n interval.cancel();\n handler();\n }\n }, 50);\n }\n\n return {\n cancel() {\n if (interval) {\n interval.cancel();\n }\n }\n };\n}\n\nexport function getHttpType(contentType : string, url : string) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n let req = new window.XMLHttpRequest();\n\n req.open('GET', url);\n req.setRequestHeader('Accept', contentType);\n req.send(null);\n\n req.onload = () => {\n resolve(req.responseText);\n };\n\n req.onerror = () => {\n return reject(new Error(`prefetch failed`));\n };\n });\n}\n\nexport function getHTML(url : string) : ZalgoPromise {\n return getHttpType('text/html', url);\n}\n\nexport function getCSS(url : string) : ZalgoPromise {\n return getHttpType('text/css', url);\n}\n\nexport function getScript(url : string) : ZalgoPromise {\n return getHttpType('*/*', url);\n}\n\nexport function prefetchPage(url : string) : ZalgoPromise {\n return getHTML(url);\n}\n\nconst JSX_EVENTS = {\n onClick: 'click'\n};\n\nexport function fixScripts(el : HTMLElement, doc : Document = window.document) {\n for (let script of querySelectorAll(el, 'script')) {\n let newScript = doc.createElement('script');\n newScript.text = script.textContent;\n script.parentNode.replaceChild(newScript, script);\n }\n}\n\nexport function jsxDom(name : string, props : ?{ [ string ] : mixed }, content : ElementRefType) : HTMLElement {\n\n name = name.toLowerCase();\n\n let doc = (this && this.createElement)\n ? this\n : window.document;\n\n let el = doc.createElement(name);\n\n for (let prop in props) {\n if (prop in JSX_EVENTS) {\n el.addEventListener(JSX_EVENTS[prop], props[prop]);\n } else if (prop === 'innerHTML') {\n el.innerHTML = props[prop];\n fixScripts(el, doc);\n } else {\n el.setAttribute(prop, props[prop]);\n }\n }\n\n if (name === 'style') {\n\n if (typeof content !== 'string') {\n throw new TypeError(`Expected ${ name } tag content to be string, got ${ typeof content }`);\n }\n\n if (arguments.length > 3) {\n throw new Error(`Expected only text content for ${ name } tag`);\n }\n\n setStyle(el, content, doc);\n\n } else if (name === 'iframe') {\n\n if (arguments.length > 3) {\n throw new Error(`Expected only single child node for iframe`);\n }\n\n el.addEventListener('load', () => {\n let win = el.contentWindow;\n\n if (!win) {\n throw new Error(`Expected frame to have contentWindow`);\n }\n\n if (typeof content === 'string') {\n writeToWindow(win, content);\n } else {\n writeElementToWindow(win, content);\n }\n });\n\n } else if (name === 'script') {\n\n if (typeof content !== 'string') {\n throw new TypeError(`Expected ${ name } tag content to be string, got ${ typeof content }`);\n }\n\n if (arguments.length > 3) {\n throw new Error(`Expected only text content for ${ name } tag`);\n }\n\n el.text = content;\n\n } else {\n for (let i = 2; i < arguments.length; i++) {\n if (typeof arguments[i] === 'string') {\n let textNode = doc.createTextNode(arguments[i]);\n appendChild(el, textNode);\n } else {\n appendChild(el, arguments[i]);\n }\n }\n }\n\n return el;\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\n\n/* DeNodeify\n ---------\n\n Turns a method from a function which accepts a callback, into a function which returns a promise.\n*/\n\nexport function denodeify(method : (...args : Array) => T) : (...args : Array) => ZalgoPromise {\n\n return function denodeifyWrapper() : ZalgoPromise {\n\n let self = this;\n let args = Array.prototype.slice.call(arguments);\n\n if (args.length >= method.length) {\n return ZalgoPromise.resolve(method.apply(self, args));\n }\n\n return new ZalgoPromise((resolve, reject) => {\n args.push((err, result) => {\n\n if (err && !(err instanceof Error)) {\n throw new Error(`Passed non-Error object in callback: [ ${ err } ] -- callbacks should either be called with callback(new Error(...)) or callback(null, result).`);\n }\n\n return err ? reject(err) : resolve(result);\n });\n method.apply(self, args);\n });\n };\n}\n\nexport function promisify(method : (...args : Array) => T | ZalgoPromise) : (...args : Array) => ZalgoPromise {\n return function promisifyWRapper() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n return method.apply(this, arguments);\n });\n };\n}\n\nexport function delay(time : number = 1) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n setTimeout(resolve, time);\n });\n}\n\nexport function cycle(method : Function) : ZalgoPromise {\n return ZalgoPromise.try(method).then(() => cycle(method));\n}\n","/* @flow */\n\nexport function isPerc(str : string) : boolean {\n return typeof str === 'string' && (/^[0-9]+%$/).test(str);\n}\n\nexport function isPx(str : string) : boolean {\n return typeof str === 'string' && (/^[0-9]+px$/).test(str);\n}\n\nexport function toNum(val : string | number) : number {\n\n if (typeof val === 'number') {\n return val;\n }\n\n let match = val.match(/^([0-9]+)(px|%)$/);\n\n if (!match) {\n throw new Error(`Could not match css value from ${ val }`);\n }\n\n return parseInt(match[1], 10);\n}\n\nexport function toPx(val : number | string) : string {\n return `${ toNum(val) }px`;\n}\n\nexport function toCSS(val : number | string) : string {\n\n if (typeof val === 'number') {\n return toPx(val);\n }\n\n return isPerc(val) ? val : toPx(val);\n}\n\nexport function percOf(num : number, perc : string) : number {\n return parseInt(num * toNum(perc) / 100, 10);\n}\n\nexport function normalizeDimension(dim : string | number, max : number) : number {\n if (typeof dim === 'number') {\n return dim;\n } else if (isPerc(dim)) {\n return percOf(max, dim);\n } else if (isPx(dim)) {\n return toNum(dim);\n } else {\n throw new Error(`Can not normalize dimension: ${ dim }`);\n }\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nexport function memoized(target : Object, name : string, descriptor : Object) {\n let method = descriptor.value;\n\n descriptor.value = function memoizedFunction() : T {\n\n this.__memoized__ = this.__memoized__ || {};\n\n if (!this.__memoized__.hasOwnProperty(name)) {\n this.__memoized__[name] = method.apply(this, arguments);\n }\n\n return this.__memoized__[name];\n };\n\n descriptor.value.displayName = `${ name }:memoized`;\n}\n\nexport function promise(target : Object, name : string, descriptor : Object) {\n let method = descriptor.value;\n\n descriptor.value = function promisifiedFunction() : ZalgoPromise {\n return ZalgoPromise.try(method, this, arguments);\n };\n\n descriptor.value.displayName = `${ name }:promisified`;\n}\n","/* @flow */\n\nimport { CONFIG } from 'post-robot/src';\nimport { config, logLevels, info as logInfo, warn as logWarn, error as logError } from 'beaver-logger/client';\n\nexport function setLogLevel(logLevel : string) {\n if (logLevels.indexOf(logLevel) === -1) {\n throw new Error(`Invalid logLevel: ${ logLevel }`);\n }\n config.logLevel = logLevel;\n CONFIG.LOG_LEVEL = logLevel;\n window.LOG_LEVEL = logLevel;\n}\n\nexport function info(name : string, event : string, payload : Object = {}) {\n logInfo(`xc_${ name }_${ event }`, payload);\n}\n\n\n/* Log Warning\n -----------\n\n Log a warning\n*/\n\nexport function warn(name : string, event : string, payload : Object = {}) {\n logWarn(`xc_${ name }_${ event }`, payload);\n}\n\n\n/* Log Error\n ---------\n\n Log an error\n*/\n\nexport function error(name : string, event : string, payload : Object = {}) {\n logError(`xc_${ name }_${ event }`, payload);\n}\n","/* @flow */\n\nimport { isSameDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { __ZOID__ } from '../constants';\n\nexport function globalFor(win : CrossDomainWindowType) : ?Object {\n\n if (!isSameDomain(win)) {\n return;\n }\n\n if (!win[__ZOID__]) {\n win[__ZOID__] = {};\n }\n\n return win[__ZOID__];\n}\n\nexport function localGlobal() : Object {\n let global = globalFor(window);\n\n if (!global) {\n throw new Error(`Could not get local global`);\n }\n\n return global;\n}\n\nexport let global = localGlobal();\n","/* @flow */\n\nexport * from './dom';\nexport * from './fn';\nexport * from './promise';\nexport * from './util';\nexport * from './css';\nexport * from './decorators';\nexport * from './logger';\nexport * from './global';\n","/* @flow */\n\nexport function isRegex(item : mixed) : boolean {\n return Object.prototype.toString.call(item) === '[object RegExp]';\n}\n\n// eslint-disable-next-line no-unused-vars\nexport function noop(...args : Array) {\n // pass\n}\n","/* @flow */\n\nexport const PROTOCOL = {\n MOCK: ('mock:' : 'mock:'),\n FILE: ('file:' : 'file:'),\n ABOUT: ('about:' : 'about:')\n};\n\nexport const WILDCARD = '*';\n\nexport const WINDOW_TYPE = {\n IFRAME: ('iframe' : 'iframe'),\n POPUP: ('popup' : 'popup')\n};\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { isRegex, noop } from './util';\nimport type { CrossDomainWindowType, SameDomainWindowType, DomainMatcher } from './types';\nimport { PROTOCOL, WILDCARD } from './constants';\n\nlet IE_WIN_ACCESS_ERROR = 'Call was rejected by callee.\\r\\n';\n\nexport function isFileProtocol(win : SameDomainWindowType = window) : boolean {\n return win.location.protocol === PROTOCOL.FILE;\n}\n\nexport function isAboutProtocol(win : SameDomainWindowType = window) : boolean {\n return win.location.protocol === PROTOCOL.ABOUT;\n}\n\nexport function getParent(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n\n if (!win) {\n return;\n }\n\n try {\n if (win.parent && win.parent !== win) {\n return win.parent;\n }\n } catch (err) {\n // pass\n }\n}\n\nexport function getOpener(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n\n if (!win) {\n return;\n }\n\n // Make sure we're not actually an iframe which has had window.open() called on us\n if (getParent(win)) {\n return;\n }\n\n try {\n return win.opener;\n } catch (err) {\n // pass\n }\n}\n\nexport function canReadFromWindow(win : CrossDomainWindowType | SameDomainWindowType) : boolean {\n try {\n // $FlowFixMe\n noop(win && win.location && win.location.href);\n return true;\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\nexport function getActualDomain(win? : SameDomainWindowType = window) : string {\n\n let location = win.location;\n\n if (!location) {\n throw new Error(`Can not read window location`);\n }\n\n let protocol = location.protocol;\n\n if (!protocol) {\n throw new Error(`Can not read window protocol`);\n }\n\n if (protocol === PROTOCOL.FILE) {\n return `${ PROTOCOL.FILE }//`;\n }\n\n if (protocol === PROTOCOL.ABOUT) {\n\n let parent = getParent(win);\n if (parent && canReadFromWindow(parent)) {\n // $FlowFixMe\n return getActualDomain(parent);\n }\n\n return `${ PROTOCOL.ABOUT }//`;\n }\n\n let host = location.host;\n\n if (!host) {\n throw new Error(`Can not read window host`);\n }\n\n return `${ protocol }//${ host }`;\n}\n\nexport function getDomain(win? : SameDomainWindowType = window) : string {\n\n let domain = getActualDomain(win);\n\n if (domain && win.mockDomain && win.mockDomain.indexOf(PROTOCOL.MOCK) === 0) {\n return win.mockDomain;\n }\n\n return domain;\n}\n\nexport function isBlankDomain(win : CrossDomainWindowType) : boolean {\n try {\n // $FlowFixMe\n if (!win.location.href) {\n return true;\n }\n\n if (win.location.href === 'about:blank') {\n return true;\n }\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\nexport function isActuallySameDomain(win : CrossDomainWindowType) : boolean {\n\n try {\n if (win === window) {\n return true;\n }\n\n } catch (err) {\n // pass\n }\n\n try {\n let desc = Object.getOwnPropertyDescriptor(win, 'location');\n\n if (desc && desc.enumerable === false) {\n return false;\n }\n\n } catch (err) {\n // pass\n }\n\n try {\n // $FlowFixMe\n if (isAboutProtocol(win) && canReadFromWindow(win)) {\n return true;\n }\n } catch (err) {\n // pass\n }\n\n try {\n // $FlowFixMe\n if (getActualDomain(win) === getActualDomain(window)) {\n return true;\n }\n\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\nexport function isSameDomain(win : CrossDomainWindowType | SameDomainWindowType) : boolean {\n\n if (!isActuallySameDomain(win)) {\n return false;\n }\n\n try {\n\n if (win === window) {\n return true;\n }\n\n // $FlowFixMe\n if (isAboutProtocol(win) && canReadFromWindow(win)) {\n return true;\n }\n\n // $FlowFixMe\n if (getDomain(window) === getDomain(win)) {\n return true;\n }\n\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\n\nexport function assertSameDomain(win : CrossDomainWindowType | SameDomainWindowType) : SameDomainWindowType {\n if (!isSameDomain(win)) {\n throw new Error(`Expected window to be same domain`);\n }\n\n // $FlowFixMe\n return win;\n}\n\nexport function getParents(win : CrossDomainWindowType) : Array {\n\n let result = [];\n\n try {\n\n while (win.parent !== win) {\n result.push(win.parent);\n win = win.parent;\n }\n\n } catch (err) {\n // pass\n }\n\n return result;\n}\n\nexport function isAncestorParent(parent : CrossDomainWindowType, child : CrossDomainWindowType) : boolean {\n\n if (!parent || !child) {\n return false;\n }\n\n let childParent = getParent(child);\n\n if (childParent) {\n return childParent === parent;\n }\n\n if (getParents(child).indexOf(parent) !== -1) {\n return true;\n }\n\n return false;\n}\n\nexport function getFrames(win : CrossDomainWindowType) : Array {\n\n let result = [];\n\n let frames;\n\n try {\n frames = win.frames;\n } catch (err) {\n frames = win;\n }\n\n let len;\n\n try {\n len = frames.length;\n } catch (err) {\n // pass\n }\n\n if (len === 0) {\n return result;\n }\n\n if (len) {\n for (let i = 0; i < len; i++) {\n\n let frame;\n\n try {\n frame = frames[i];\n } catch (err) {\n continue;\n }\n\n result.push(frame);\n }\n\n return result;\n }\n\n for (let i = 0; i < 100; i++) {\n let frame;\n\n try {\n frame = frames[i];\n } catch (err) {\n return result;\n }\n\n if (!frame) {\n return result;\n }\n\n result.push(frame);\n }\n\n return result;\n}\n\n\nexport function getAllChildFrames(win : CrossDomainWindowType) : Array {\n\n let result = [];\n\n for (let frame of getFrames(win)) {\n result.push(frame);\n\n for (let childFrame of getAllChildFrames(frame)) {\n result.push(childFrame);\n }\n }\n\n return result;\n}\n\nexport function getTop(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n\n try {\n if (win.top) {\n return win.top;\n }\n } catch (err) {\n // pass\n }\n\n if (getParent(win) === win) {\n return win;\n }\n\n try {\n if (isAncestorParent(window, win) && window.top) {\n return window.top;\n }\n } catch (err) {\n // pass\n }\n\n try {\n if (isAncestorParent(win, window) && window.top) {\n return window.top;\n }\n } catch (err) {\n // pass\n }\n\n for (let frame of getAllChildFrames(win)) {\n try {\n if (frame.top) {\n return frame.top;\n }\n } catch (err) {\n // pass\n }\n\n if (getParent(frame) === frame) {\n return frame;\n }\n }\n}\n\nexport function getNextOpener(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n return getOpener(getTop(win) || win);\n}\n\nexport function getUltimateTop(win? : CrossDomainWindowType = window) : CrossDomainWindowType {\n let opener = getNextOpener(win);\n\n if (opener) {\n return getUltimateTop(opener);\n }\n\n return top;\n}\n\nexport function getAllFramesInWindow(win : CrossDomainWindowType) : Array {\n let top = getTop(win);\n\n if (!top) {\n throw new Error(`Can not determine top window`);\n }\n\n return [ ...getAllChildFrames(top), top ];\n}\n\nexport function getAllWindows(win? : CrossDomainWindowType = window) : $ReadOnlyArray {\n let frames = getAllFramesInWindow(win);\n let opener = getNextOpener(win);\n\n if (opener) {\n return [ ...getAllWindows(opener), ...frames ];\n } else {\n return frames;\n }\n}\n\nexport function isTop(win : CrossDomainWindowType) : boolean {\n return win === getTop(win);\n}\n\nexport function isFrameWindowClosed(frame : HTMLIFrameElement) : boolean {\n\n if (!frame.contentWindow) {\n return true;\n }\n\n if (!frame.parentNode) {\n return true;\n }\n\n let doc = frame.ownerDocument;\n\n if (doc && doc.documentElement && !doc.documentElement.contains(frame)) {\n return true;\n }\n\n return false;\n}\n\nfunction safeIndexOf(collection : Array, item : T) : number {\n for (let i = 0; i < collection.length; i++) {\n\n try {\n if (collection[i] === item) {\n return i;\n }\n } catch (err) {\n // pass\n }\n }\n\n return -1;\n}\n\nlet iframeWindows = [];\nlet iframeFrames = [];\n\nexport function isWindowClosed(win : CrossDomainWindowType, allowMock : boolean = true) : boolean {\n\n try {\n if (win === window) {\n return false;\n }\n } catch (err) {\n return true;\n }\n\n try {\n if (!win) {\n return true;\n }\n\n } catch (err) {\n return true;\n }\n\n try {\n if (win.closed) {\n return true;\n }\n\n } catch (err) {\n\n // I love you so much IE\n\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return false;\n }\n\n return true;\n }\n\n\n if (allowMock && isSameDomain(win)) {\n try {\n // $FlowFixMe\n if (win.mockclosed) {\n return true;\n }\n } catch (err) {\n // pass\n }\n }\n\n // Mobile safari\n\n try {\n if (!win.parent || !win.top) {\n return true;\n }\n } catch (err) {\n // pass\n }\n\n // Yes, this actually happens in IE. win === win errors out when the window\n // is from an iframe, and the iframe was removed from the page.\n\n try {\n noop(win === win); // eslint-disable-line no-self-compare\n } catch (err) {\n return true;\n }\n\n // IE orphaned frame\n\n let iframeIndex = safeIndexOf(iframeWindows, win);\n\n if (iframeIndex !== -1) {\n let frame = iframeFrames[iframeIndex];\n\n if (frame && isFrameWindowClosed(frame)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction cleanIframes() {\n for (let i = 0; i < iframeWindows.length; i++) {\n let closed = false;\n\n try {\n closed = iframeWindows[i].closed;\n } catch (err) {\n // pass\n }\n\n if (closed) {\n iframeFrames.splice(i, 1);\n iframeWindows.splice(i, 1);\n }\n }\n}\n\nexport function linkFrameWindow(frame : HTMLIFrameElement) {\n\n cleanIframes();\n\n if (frame && frame.contentWindow) {\n try {\n iframeWindows.push(frame.contentWindow);\n iframeFrames.push(frame);\n } catch (err) {\n // pass\n }\n }\n}\n\nexport function getUserAgent(win : ?SameDomainWindowType) : string {\n win = win || window;\n return win.navigator.mockUserAgent || win.navigator.userAgent;\n}\n\n\nexport function getFrameByName(win : CrossDomainWindowType, name : string) : ?CrossDomainWindowType {\n\n let winFrames = getFrames(win);\n\n for (let childFrame of winFrames) {\n try {\n // $FlowFixMe\n if (isSameDomain(childFrame) && childFrame.name === name && winFrames.indexOf(childFrame) !== -1) {\n return childFrame;\n }\n } catch (err) {\n // pass\n }\n }\n\n try {\n // $FlowFixMe\n if (winFrames.indexOf(win.frames[name]) !== -1) {\n // $FlowFixMe\n return win.frames[name];\n }\n } catch (err) {\n // pass\n }\n\n try {\n if (winFrames.indexOf(win[name]) !== -1) {\n return win[name];\n }\n } catch (err) {\n // pass\n }\n}\n\nexport function findChildFrameByName(win : CrossDomainWindowType, name : string) : ?CrossDomainWindowType {\n\n let frame = getFrameByName(win, name);\n\n if (frame) {\n return frame;\n }\n\n for (let childFrame of getFrames(win)) {\n let namedFrame = findChildFrameByName(childFrame, name);\n\n if (namedFrame) {\n return namedFrame;\n }\n }\n}\n\nexport function findFrameByName(win : CrossDomainWindowType, name : string) : ?CrossDomainWindowType {\n\n let frame;\n\n frame = getFrameByName(win, name);\n\n if (frame) {\n return frame;\n }\n\n let top = getTop(win) || win;\n\n return findChildFrameByName(top, name);\n}\n\nexport function isParent(win : CrossDomainWindowType, frame : CrossDomainWindowType) : boolean {\n\n let frameParent = getParent(frame);\n\n if (frameParent) {\n return frameParent === win;\n }\n\n for (let childFrame of getFrames(win)) {\n if (childFrame === frame) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function isOpener(parent : CrossDomainWindowType, child : CrossDomainWindowType) : boolean {\n\n return parent === getOpener(child);\n}\n\nexport function getAncestor(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n win = win || window;\n\n let opener = getOpener(win);\n\n if (opener) {\n return opener;\n }\n\n let parent = getParent(win);\n\n if (parent) {\n return parent;\n }\n}\n\nexport function getAncestors(win : CrossDomainWindowType) : Array {\n\n let results = [];\n\n let ancestor = win;\n\n while (ancestor) {\n ancestor = getAncestor(ancestor);\n if (ancestor) {\n results.push(ancestor);\n }\n }\n\n return results;\n}\n\n\nexport function isAncestor(parent : CrossDomainWindowType, child : CrossDomainWindowType) : boolean {\n\n let actualParent = getAncestor(child);\n\n if (actualParent) {\n if (actualParent === parent) {\n return true;\n }\n\n return false;\n }\n\n if (child === parent) {\n return false;\n }\n\n if (getTop(child) === child) {\n return false;\n }\n\n for (let frame of getFrames(parent)) {\n if (frame === child) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function isPopup(win? : CrossDomainWindowType = window) : boolean {\n return Boolean(getOpener(win));\n}\n\nexport function isIframe(win? : CrossDomainWindowType = window) : boolean {\n return Boolean(getParent(win));\n}\n\nexport function isFullpage(win? : CrossDomainWindowType = window) : boolean {\n return Boolean(!isIframe(win) && !isPopup(win));\n}\n\nfunction anyMatch(collection1, collection2) : boolean {\n\n for (let item1 of collection1) {\n for (let item2 of collection2) {\n if (item1 === item2) {\n return true;\n }\n }\n }\n\n return false;\n}\n\nexport function getDistanceFromTop(win : CrossDomainWindowType = window) : number {\n let distance = 0;\n let parent = win;\n\n while (parent) {\n parent = getParent(parent);\n if (parent) {\n distance += 1;\n }\n }\n\n return distance;\n}\n\nexport function getNthParent(win : CrossDomainWindowType, n : number = 1) : ?CrossDomainWindowType {\n let parent = win;\n\n for (let i = 0; i < n; i++) {\n if (!parent) {\n return;\n }\n\n parent = getParent(parent);\n }\n\n return parent;\n}\n\nexport function getNthParentFromTop(win : CrossDomainWindowType, n : number = 1) : ?CrossDomainWindowType {\n return getNthParent(win, getDistanceFromTop(win) - n);\n}\n\nexport function isSameTopWindow(win1 : CrossDomainWindowType, win2 : CrossDomainWindowType) : boolean {\n\n let top1 = getTop(win1) || win1;\n let top2 = getTop(win2) || win2;\n\n try {\n if (top1 && top2) {\n if (top1 === top2) {\n return true;\n }\n\n return false;\n }\n } catch (err) {\n // pass\n }\n\n let allFrames1 = getAllFramesInWindow(win1);\n let allFrames2 = getAllFramesInWindow(win2);\n\n if (anyMatch(allFrames1, allFrames2)) {\n return true;\n }\n\n let opener1 = getOpener(top1);\n let opener2 = getOpener(top2);\n\n if (opener1 && anyMatch(getAllFramesInWindow(opener1), allFrames2)) {\n return false;\n }\n\n if (opener2 && anyMatch(getAllFramesInWindow(opener2), allFrames1)) {\n return false;\n }\n\n return false;\n}\n\nexport function matchDomain(pattern : DomainMatcher, origin : DomainMatcher) : boolean {\n\n if (typeof pattern === 'string') {\n\n if (typeof origin === 'string') {\n return pattern === WILDCARD || origin === pattern;\n }\n\n if (isRegex(origin)) {\n return false;\n }\n\n if (Array.isArray(origin)) {\n return false;\n }\n }\n\n if (isRegex(pattern)) {\n\n if (isRegex(origin)) {\n return pattern.toString() === origin.toString();\n }\n\n if (Array.isArray(origin)) {\n return false;\n }\n\n // $FlowFixMe\n return Boolean(origin.match(pattern));\n }\n\n if (Array.isArray(pattern)) {\n\n if (Array.isArray(origin)) {\n return JSON.stringify(pattern) === JSON.stringify(origin);\n }\n\n if (isRegex(origin)) {\n return false;\n }\n\n return pattern.some(subpattern => matchDomain(subpattern, origin));\n }\n\n return false;\n}\n\nexport function stringifyDomainPattern(pattern : DomainMatcher) : string {\n if (Array.isArray(pattern)) {\n return `(${ pattern.join(' | ') })`;\n } else if (isRegex(pattern)) {\n return `RegExp(${ pattern.toString() }`;\n } else {\n return pattern.toString();\n }\n}\n\nexport function getDomainFromUrl(url : string) : string {\n\n let domain;\n\n if (url.match(/^(https?|mock|file):\\/\\//)) {\n domain = url;\n } else {\n return getDomain();\n }\n\n domain = domain.split('/').slice(0, 3).join('/');\n\n return domain;\n}\n\nexport function onCloseWindow(win : CrossDomainWindowType, callback : Function, delay : number = 1000, maxtime : number = Infinity) : { cancel : () => void } {\n\n let timeout;\n\n let check = () => {\n\n if (isWindowClosed(win)) {\n\n if (timeout) {\n clearTimeout(timeout);\n }\n\n return callback();\n }\n\n if (maxtime <= 0) {\n clearTimeout(timeout);\n } else {\n maxtime -= delay;\n timeout = setTimeout(check, delay);\n }\n };\n\n check();\n\n return {\n cancel() {\n if (timeout) {\n clearTimeout(timeout);\n }\n }\n };\n}\n\n// eslint-disable-next-line complexity\nexport function isWindow(obj : Object) : boolean {\n\n try {\n if (obj === window) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (Object.prototype.toString.call(obj) === '[object Window]') {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (window.Window && obj instanceof window.Window) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (obj && obj.self === obj) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (obj && obj.parent === obj) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (obj && obj.top === obj) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (noop(obj === obj) === '__unlikely_value__') { // eslint-disable-line no-self-compare\n return false;\n }\n\n } catch (err) {\n return true;\n }\n\n try {\n if (obj && obj.__cross_domain_utils_window_check__ === '__unlikely_value__') {\n return false;\n }\n\n } catch (err) {\n return true;\n }\n\n return false;\n}\n\nexport function isBrowser() : boolean {\n return (typeof window !== 'undefined' && typeof window.location !== 'undefined');\n}\n\nexport function isCurrentDomain(domain : string) : boolean {\n if (!isBrowser()) {\n return false;\n }\n\n return (getDomain() === domain);\n}\n\nexport function isMockDomain(domain : string) : boolean {\n return domain.indexOf(PROTOCOL.MOCK) === 0;\n}\n\nexport function normalizeMockUrl(url : string) : string {\n if (!isMockDomain(getDomainFromUrl(url))) {\n return url;\n }\n\n if (!__TEST__) {\n throw new Error(`Mock urls not supported out of test mode`);\n }\n\n return url.replace(/^mock:\\/\\/[^/]+/, getActualDomain(window));\n}\n\nexport function closeWindow(win : CrossDomainWindowType) {\n try {\n win.close();\n } catch (err) {\n // pass\n }\n}\n\nexport function getFrameForWindow(win : CrossDomainWindowType) : ?HTMLElement {\n if (isSameDomain(win)) {\n return assertSameDomain(win).frameElement;\n }\n\n for (const frame of document.querySelectorAll('iframe')) {\n if (frame && frame.contentWindow && frame.contentWindow === win) {\n return frame;\n }\n }\n}\n","/* @flow */\n\nexport * from './utils';\nexport * from './types';\nexport * from './constants';\n","/* @flow */\n\nexport const ZOID = `zoid`;\n\nexport const __ZOID__ = `__${ ZOID }__`;\n\nexport const POST_MESSAGE = {\n INIT: `${ ZOID }_init`,\n PROPS: `${ ZOID }_props`,\n PROP_CALLBACK: `${ ZOID }_prop_callback`,\n CLOSE: `${ ZOID }_close`,\n CHECK_CLOSE: `${ ZOID }_check_close`,\n REDIRECT: `${ ZOID }_redirect`,\n RESIZE: `${ ZOID }_resize`,\n DELEGATE: `${ ZOID }_delegate`,\n ALLOW_DELEGATE: `${ ZOID }_allow_delegate`,\n ERROR: `${ ZOID }_error`,\n HIDE: `${ ZOID }_hide`,\n SHOW: `${ ZOID }_show`\n};\n\nexport const PROP_TYPES = {\n STRING: `string`,\n OBJECT: `object`,\n FUNCTION: `function`,\n BOOLEAN: `boolean`,\n NUMBER: `number`\n};\n\nexport const INITIAL_PROPS = {\n RAW: 'raw',\n UID: 'uid'\n};\n\nexport const WINDOW_REFERENCES = {\n OPENER: `opener`,\n TOP: `top`,\n PARENT: `parent`,\n GLOBAL: `global`\n};\n\nexport const PROP_TYPES_LIST : Array = Object.keys(PROP_TYPES).map(key => PROP_TYPES[key]);\n\nexport const CONTEXT_TYPES = {\n IFRAME: `iframe`,\n POPUP: `popup`\n};\n\nexport const CLASS_NAMES = {\n ZOID: `${ ZOID }`,\n OUTLET: `${ ZOID }-outlet`,\n COMPONENT_FRAME: `${ ZOID }-component-frame`,\n PRERENDER_FRAME: `${ ZOID }-prerender-frame`,\n VISIBLE: `${ ZOID }-visible`,\n INVISIBLE: `${ ZOID }-invisible`\n};\n\nexport const EVENTS = {\n CLOSE: `${ ZOID }-close`\n};\n\nexport const ATTRIBUTES = {\n IFRAME_PLACEHOLDER: `data-zoid-${ ZOID }-placeholder`\n};\n\nexport const ANIMATION_NAMES = {\n SHOW_CONTAINER: `${ ZOID }-show-container`,\n SHOW_COMPONENT: `${ ZOID }-show-component`,\n HIDE_CONTAINER: `${ ZOID }-hide-container`,\n HIDE_COMPONENT: `${ ZOID }-hide-component`\n};\n\nexport const EVENT_NAMES = {\n CLICK: 'click'\n};\n\nexport const CLOSE_REASONS = {\n PARENT_CALL: 'parent_call',\n CHILD_CALL: 'child_call',\n CLOSE_DETECTED: 'close_detected',\n USER_CLOSED: 'user_closed',\n PARENT_CLOSE_DETECTED: 'parent_close_detected'\n};\n\nexport const CONTEXT_TYPES_LIST : Array = Object.keys(CONTEXT_TYPES).map(key => CONTEXT_TYPES[key]);\n\nexport const DELEGATE = {\n CALL_ORIGINAL: 'call_original',\n CALL_DELEGATE: 'call_delegate'\n};\n\nexport const WILDCARD = '*';\n\nexport const DEFAULT_DIMENSIONS = {\n WIDTH: 300,\n HEIGHT: 150\n};\n","/* @flow */\n\nimport { CONSTANTS } from './conf';\n\nexport let global : Object = window[CONSTANTS.WINDOW_PROPS.POSTROBOT] = window[CONSTANTS.WINDOW_PROPS.POSTROBOT] || {};\n\n// Backwards compatibility\n\nglobal.registerSelf = () => {\n // pass\n};\n","/* @flow */\n\nexport let CONSTANTS = {\n\n POST_MESSAGE_TYPE: {\n REQUEST: 'postrobot_message_request',\n RESPONSE: 'postrobot_message_response',\n ACK: 'postrobot_message_ack'\n },\n\n POST_MESSAGE_ACK: {\n SUCCESS: 'success',\n ERROR: 'error'\n },\n\n POST_MESSAGE_NAMES: {\n METHOD: 'postrobot_method',\n HELLO: 'postrobot_ready',\n OPEN_TUNNEL: 'postrobot_open_tunnel'\n },\n\n WINDOW_TYPES: {\n FULLPAGE: 'fullpage',\n POPUP: 'popup',\n IFRAME: 'iframe'\n },\n\n WINDOW_PROPS: {\n POSTROBOT: '__postRobot__'\n },\n\n SERIALIZATION_TYPES: {\n METHOD: 'postrobot_method',\n ERROR: 'postrobot_error',\n PROMISE: 'postrobot_promise',\n ZALGO_PROMISE: 'postrobot_zalgo_promise',\n REGEX: 'regex'\n },\n\n SEND_STRATEGIES: {\n POST_MESSAGE: 'postrobot_post_message',\n BRIDGE: 'postrobot_bridge',\n GLOBAL: 'postrobot_global'\n },\n\n MOCK_PROTOCOL: 'mock:',\n FILE_PROTOCOL: 'file:',\n\n BRIDGE_NAME_PREFIX: '__postrobot_bridge__',\n POSTROBOT_PROXY: '__postrobot_proxy__',\n\n WILDCARD: '*'\n};\n\nexport const POST_MESSAGE_NAMES = {\n METHOD: 'postrobot_method',\n HELLO: 'postrobot_hello',\n OPEN_TUNNEL: 'postrobot_open_tunnel'\n};\n\nexport let POST_MESSAGE_NAMES_LIST : Array = Object.keys(POST_MESSAGE_NAMES)\n .map(key => POST_MESSAGE_NAMES[key]);\n","/* @flow */\n\nimport { CONSTANTS } from './constants';\n\nexport let CONFIG : Object = {\n\n ALLOW_POSTMESSAGE_POPUP: ('__ALLOW_POSTMESSAGE_POPUP__' in window)\n ? window.__ALLOW_POSTMESSAGE_POPUP__\n : __POST_ROBOT__.__ALLOW_POSTMESSAGE_POPUP__,\n\n BRIDGE_TIMEOUT: 5000,\n CHILD_WINDOW_TIMEOUT: 5000,\n\n ACK_TIMEOUT: (window.navigator.userAgent.match(/MSIE/i) !== -1 && !__TEST__) ? 10000 : 2000,\n RES_TIMEOUT: __TEST__ ? 2000 : -1,\n \n ALLOWED_POST_MESSAGE_METHODS: {\n [ CONSTANTS.SEND_STRATEGIES.POST_MESSAGE ]: true,\n [ CONSTANTS.SEND_STRATEGIES.BRIDGE ]: true,\n [ CONSTANTS.SEND_STRATEGIES.GLOBAL ]: true\n },\n\n ALLOW_SAME_ORIGIN: false\n};\n\nif (window.location.href.indexOf(CONSTANTS.FILE_PROTOCOL) === 0) {\n CONFIG.ALLOW_POSTMESSAGE_POPUP = true;\n}\n","/* @flow */\n\nexport * from './config';\nexport * from './constants';\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","/* @flow */\n/* eslint max-lines: off */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nexport { noop, once, uniqueID, isLocalStorageEnabled } from 'belter/src';\n\nconst moduleGlobal = {};\n\nexport function getGlobal() : Object {\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n return moduleGlobal;\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport function memoize(method : (...args : $ReadOnlyArray) => R, options : { time? : number } = {}) : ((...args : $ReadOnlyArray) => R) {\n\n const cache : { [key : string] : { time : number, value : R } } = {};\n\n // eslint-disable-next-line no-unused-vars, flowtype/no-weak-types\n return function memoizedFunction(...args : $ReadOnlyArray) : R {\n\n let key : string;\n\n try {\n key = JSON.stringify(Array.prototype.slice.call(arguments));\n } catch (err) {\n throw new Error(`Arguments not serializable -- can not be used to memoize`);\n }\n\n const time = options.time;\n\n if (cache[key] && time && (Date.now() - cache[key].time) < time) {\n delete cache[key];\n }\n\n const glob = getGlobal();\n\n if (glob.__CACHE_START_TIME__ && cache[key] && cache[key].time < glob.__CACHE_START_TIME__) {\n delete cache[key];\n }\n\n if (cache[key]) {\n return cache[key].value;\n }\n\n cache[key] = {\n time: Date.now(),\n value: method.apply(this, arguments)\n };\n\n return cache[key].value;\n };\n}\n\nexport function hashStr(str : string) : number {\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n hash += str[i].charCodeAt(0) * Math.pow((i % 10) + 1, 5);\n }\n return Math.floor(Math.pow(Math.sqrt(hash), 5));\n}\n\nexport function strHashStr(str : string) : string {\n let hash = '';\n\n for (let i = 0; i < str.length; i++) {\n let total = (str[i].charCodeAt(0) * i);\n\n if (str[i + 1]) {\n total += (str[i + 1].charCodeAt(0) * (i - 1));\n }\n\n hash += String.fromCharCode(97 + (Math.abs(total) % 26));\n }\n\n return hash;\n}\n\nexport function match(str : string, pattern : RegExp) : ?string {\n const regmatch = str.match(pattern);\n if (regmatch) {\n return regmatch[1];\n }\n}\n\nexport function safeJSON(item : mixed) : string {\n return JSON.stringify(item, (key, val) => {\n\n if (typeof val === 'function') {\n return `<${ typeof val }>`;\n }\n\n try {\n JSON.stringify(val);\n } catch (err) {\n return `<${ typeof val }>`;\n }\n\n return val;\n });\n}\n\ntype Listener = {|\n listen : (method : Function) => {\n cancel : () => void\n },\n once : (method : Function) => void,\n trigger : (...args : $ReadOnlyArray) => void\n|};\n\nexport function eventEmitter() : Listener {\n\n const listeners = [];\n\n return {\n listen(method : Function) : { cancel : () => void } {\n listeners.push(method);\n\n return {\n cancel() {\n listeners.splice(listeners.indexOf(method), 1);\n }\n };\n },\n\n once(method : Function) {\n const listener = this.listen(function onceListener() {\n method.apply(null, arguments);\n listener.cancel();\n });\n },\n\n trigger(...args : $ReadOnlyArray) {\n for (const listener of listeners) {\n listener(...args);\n }\n }\n };\n}\n\nexport function awaitKey(obj : Object, key : string) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n\n let value = obj[key];\n\n if (value) {\n return resolve(value);\n }\n\n delete obj[key];\n\n Object.defineProperty(obj, key, {\n\n configurable: true,\n\n set(item) {\n value = item;\n\n if (value) {\n resolve(value);\n }\n },\n\n get() : mixed {\n return value;\n }\n });\n });\n}\n\nexport function stringifyError(err : mixed, level : number = 1) : string {\n\n if (level >= 3) {\n return 'stringifyError stack overflow';\n }\n\n try {\n if (!err) {\n return ``;\n }\n\n if (typeof err === 'string') {\n return err;\n }\n\n if (err instanceof Error) {\n const stack = err && err.stack;\n const message = err && err.message;\n\n if (stack && message) {\n if (stack.indexOf(message) !== -1) {\n return stack;\n } else {\n return `${ message }\\n${ stack }`;\n }\n } else if (stack) {\n return stack;\n } else if (message) {\n return message;\n }\n }\n\n if (typeof err.toString === 'function') {\n return err.toString();\n }\n\n return Object.prototype.toString.call(err);\n\n } catch (newErr) { // eslint-disable-line unicorn/catch-error-name\n return `Error while stringifying error: ${ stringifyError(newErr, level + 1) }`;\n }\n}\n\nexport function stringifyErrorMessage(err : mixed) : string {\n\n const defaultMessage = ``;\n\n if (!err) {\n return defaultMessage;\n }\n\n if (err instanceof Error) {\n return err.message || defaultMessage;\n }\n\n if (typeof err.message === 'string') {\n return err.message || defaultMessage;\n }\n\n return defaultMessage;\n}\n\nexport function stringify(item : mixed) : string {\n if (typeof item === 'string') {\n return item;\n }\n\n if (item && typeof item.toString === 'function') {\n return item.toString();\n }\n\n return Object.prototype.toString.call(item);\n}\n\nexport function domainMatches(hostname : string, domain : string) : boolean {\n hostname = hostname.split('://')[1];\n const index = hostname.indexOf(domain);\n return (index !== -1 && hostname.slice(index) === domain);\n}\n\nexport function patchMethod(obj : Object, name : string, handler : Function) {\n const original = obj[name];\n\n obj[name] = function patchedMethod() : mixed {\n return handler({\n context: this,\n args: Array.prototype.slice.call(arguments),\n original,\n callOriginal: () => original.apply(this, arguments)\n });\n };\n}\n\nexport function isObject(obj : mixed) : boolean {\n return (typeof obj === 'object' && obj !== null);\n}\n\nexport function extend(obj : T, source : Object) : T {\n if (!source) {\n return obj;\n }\n\n if (Object.assign) { // eslint-disable-line compat/compat\n return Object.assign(obj, source); // eslint-disable-line compat/compat\n }\n\n for (const key in source) {\n if (source.hasOwnProperty(key)) {\n obj[key] = source[key];\n }\n }\n\n return obj;\n}\n\nexport function deepExtend (obj : T, source : Object) : T {\n if (!source) {\n return obj;\n }\n\n for (const key in source) {\n if (source.hasOwnProperty(key)) {\n if (isObject(obj[key]) && isObject(source[key])) {\n deepExtend(obj[key], source[key]);\n } else {\n obj[key] = source[key];\n }\n }\n }\n\n return obj;\n}\n\nexport function hasValue(obj : { [string] : T }, value : T) : boolean {\n for (const key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] === value) {\n return true;\n }\n }\n return false;\n}\n\nexport function contains(arr : $ReadOnlyArray, value : T) : boolean {\n return arr.indexOf(value) !== -1;\n}\n\n// eslint-disable-next-line flowtype/no-mutable-array\nexport function sortBy(arr : Array, order : $ReadOnlyArray) : Array {\n return arr.sort((a : T, b : T) => {\n return order.indexOf(a) - order.indexOf(b);\n });\n}\n\nexport function reverseMap(obj : { [string] : string }) : { [string] : string } {\n const result = {};\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n result[obj[key]] = key;\n }\n }\n return result;\n}\n\n// eslint-disable-next-line flowtype/no-mutable-array\nexport function arrayRemove(arr : Array, item : T) {\n arr.splice(arr.indexOf(item), 1);\n}\n\nexport function identity(item : T) : T {\n return item;\n}\n\nexport function values(obj : { [string] : T }) : $ReadOnlyArray {\n const result = [];\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n result.push(obj[key]);\n }\n }\n return result;\n}\n\nexport function perc(pixels : number, percentage : number) : number {\n return Math.round((pixels * percentage) / 100);\n}\n\nexport function min(...args : $ReadOnlyArray) : number {\n return Math.min(...args);\n}\n\nexport function max(...args : $ReadOnlyArray) : number {\n return Math.max(...args);\n}\n\nexport function regexMap(str : string, regex : RegExp, handler : () => T) : $ReadOnlyArray {\n const results = [];\n\n // $FlowFixMe\n str.replace(regex, function regexMapMatcher() {\n results.push(handler.apply(null, arguments));\n });\n\n return results;\n}\n","/* @flow */\n\nimport { isSameDomain, isSameTopWindow, isActuallySameDomain, getActualDomain, getDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONSTANTS } from '../../conf';\nimport { needsGlobalMessagingForBrowser } from '../../lib';\n\nexport let SEND_MESSAGE_STRATEGIES = {};\n\n\nSEND_MESSAGE_STRATEGIES[CONSTANTS.SEND_STRATEGIES.POST_MESSAGE] = (win : CrossDomainWindowType, serializedMessage : string, domain : (string | Array)) => {\n\n if (__POST_ROBOT__.__IE_POPUP_SUPPORT__) {\n try {\n require('../../compat').emulateIERestrictions(window, win);\n } catch (err) {\n return;\n }\n }\n\n let domains;\n\n if (Array.isArray(domain)) {\n domains = domain;\n } else if (typeof domain === 'string') {\n domains = [ domain ];\n } else {\n domains = [ CONSTANTS.WILDCARD ];\n }\n\n domains = domains.map(dom => {\n\n if (dom.indexOf(CONSTANTS.MOCK_PROTOCOL) === 0) {\n\n if (window.location.protocol === CONSTANTS.FILE_PROTOCOL) {\n return CONSTANTS.WILDCARD;\n }\n\n if (!isActuallySameDomain(win)) {\n throw new Error(`Attempting to send messsage to mock domain ${ dom }, but window is actually cross-domain`);\n }\n\n // $FlowFixMe\n return getActualDomain(win);\n }\n\n if (dom.indexOf(CONSTANTS.FILE_PROTOCOL) === 0) {\n return CONSTANTS.WILDCARD;\n }\n\n return dom;\n });\n\n domains.forEach(dom => {\n return win.postMessage(serializedMessage, dom);\n });\n};\n\nif (__POST_ROBOT__.__IE_POPUP_SUPPORT__) {\n\n let { sendBridgeMessage, needsBridgeForBrowser, isBridge } = require('../../bridge');\n\n SEND_MESSAGE_STRATEGIES[CONSTANTS.SEND_STRATEGIES.BRIDGE] = (win : CrossDomainWindowType, serializedMessage : string, domain : string) => {\n\n if (!needsBridgeForBrowser() && !isBridge()) {\n return;\n }\n\n if (isSameDomain(win)) {\n throw new Error(`Post message through bridge disabled between same domain windows`);\n }\n\n if (isSameTopWindow(window, win) !== false) {\n throw new Error(`Can only use bridge to communicate between two different windows, not between frames`);\n }\n\n return sendBridgeMessage(win, serializedMessage, domain);\n };\n}\n\nif (__POST_ROBOT__.__IE_POPUP_SUPPORT__ || __POST_ROBOT__.__GLOBAL_MESSAGE_SUPPORT__) {\n \n SEND_MESSAGE_STRATEGIES[CONSTANTS.SEND_STRATEGIES.GLOBAL] = (win : CrossDomainWindowType, serializedMessage : string) => {\n\n if (!needsGlobalMessagingForBrowser()) {\n return;\n }\n\n if (!isSameDomain(win)) {\n throw new Error(`Post message through global disabled between different domain windows`);\n }\n\n if (isSameTopWindow(window, win) !== false) {\n throw new Error(`Can only use global to communicate between two different windows, not between frames`);\n }\n\n // $FlowFixMe\n let foreignGlobal = win[CONSTANTS.WINDOW_PROPS.POSTROBOT];\n\n if (!foreignGlobal) {\n throw new Error(`Can not find postRobot global on foreign window`);\n }\n\n return foreignGlobal.receiveMessage({\n source: window,\n origin: getDomain(),\n data: serializedMessage\n });\n };\n}\n","/* @flow */\n\nimport { getDomain, isWindowClosed, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { CONSTANTS, CONFIG, POST_MESSAGE_NAMES_LIST } from '../../conf';\nimport { uniqueID, serializeMethods, getWindowType, jsonStringify, stringifyError } from '../../lib';\n\nimport { SEND_MESSAGE_STRATEGIES } from './strategies';\n\n\nfunction buildMessage(win : CrossDomainWindowType, message : Object, options = {}) : Object {\n\n let id = uniqueID();\n let type = getWindowType();\n let sourceDomain = getDomain(window);\n\n return {\n ...message,\n ...options,\n sourceDomain,\n id: message.id || id,\n windowType: type\n };\n}\n\n\nexport function sendMessage(win : CrossDomainWindowType, message : Object, domain : string | Array) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n message = buildMessage(win, message, {\n data: serializeMethods(win, domain, message.data),\n domain\n });\n\n let level;\n\n if (__DEBUG__) {\n if (POST_MESSAGE_NAMES_LIST.indexOf(message.name) !== -1 || message.type === CONSTANTS.POST_MESSAGE_TYPE.ACK) {\n level = 'debug';\n } else if (message.ack === 'error') {\n level = 'error';\n } else {\n level = 'info';\n }\n\n // eslint-disable-next-line no-console\n console[level]('postrobot_send', message.type.replace(/^postrobot_message_/, ''), '::', message.name, '::', domain || CONSTANTS.WILDCARD, '\\n\\n', message);\n }\n\n if (win === window && !CONFIG.ALLOW_SAME_ORIGIN) {\n throw new Error('Attemping to send message to self');\n }\n\n if (isWindowClosed(win)) {\n throw new Error('Window is closed');\n }\n\n let messages = [];\n\n let serializedMessage = jsonStringify({\n [ CONSTANTS.WINDOW_PROPS.POSTROBOT ]: message\n }, null, 2);\n\n return ZalgoPromise.map(Object.keys(SEND_MESSAGE_STRATEGIES), strategyName => {\n\n return ZalgoPromise.try(() => {\n\n if (!CONFIG.ALLOWED_POST_MESSAGE_METHODS[strategyName]) {\n throw new Error(`Strategy disallowed: ${ strategyName }`);\n }\n\n return SEND_MESSAGE_STRATEGIES[strategyName](win, serializedMessage, domain);\n\n }).then(() => {\n messages.push(`${ strategyName }: success`);\n return true;\n }, err => {\n messages.push(`${ strategyName }: ${ stringifyError(err) }\\n`);\n return false;\n });\n\n }).then(results => {\n\n let success = results.some(Boolean);\n let status = `${ message.type } ${ message.name } ${ success ? 'success' : 'error' }:\\n - ${ messages.join('\\n - ') }\\n`;\n\n if (!success) {\n throw new Error(status);\n }\n });\n });\n}\n","/* @flow */\n\nimport { type ZalgoPromise } from 'zalgo-promise/src';\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { matchDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { global } from '../global';\nimport { isRegex } from '../lib';\nimport { CONSTANTS } from '../conf';\n\nexport function resetListeners() {\n global.responseListeners = {};\n global.requestListeners = {};\n}\n\nglobal.responseListeners = global.responseListeners || {};\nglobal.requestListeners = global.requestListeners || {};\nglobal.WINDOW_WILDCARD = global.WINDOW_WILDCARD || new (function WindowWildcard() { /* pass */ })();\n\nglobal.erroredResponseListeners = global.erroredResponseListeners || {};\n\nconst __DOMAIN_REGEX__ = '__domain_regex__';\n\nexport type RequestListenerType = {\n handler : ({ source : CrossDomainWindowType, origin : string, data : Object }) => (mixed | ZalgoPromise),\n handleError : (err : mixed) => void,\n window : ?CrossDomainWindowType,\n name : string,\n domain : string | RegExp | Array\n};\n\nexport type ResponseListenerType = {\n name : string,\n window : CrossDomainWindowType,\n domain : (string | Array | RegExp),\n respond : (err : ?mixed, result : ?Object) => void,\n ack? : ?boolean\n};\n\nexport function addResponseListener(hash : string, listener : ResponseListenerType) {\n global.responseListeners[hash] = listener;\n}\n\nexport function getResponseListener(hash : string) : ResponseListenerType {\n return global.responseListeners[hash];\n}\n\nexport function deleteResponseListener(hash : string) {\n delete global.responseListeners[hash];\n}\n\nexport function markResponseListenerErrored(hash : string) {\n global.erroredResponseListeners[hash] = true;\n}\n\nexport function isResponseListenerErrored(hash : string) : boolean {\n return Boolean(global.erroredResponseListeners[hash]);\n}\n\nexport function getRequestListener({ name, win, domain } : { name : string, win : ?CrossDomainWindowType, domain : ?(string | RegExp) }) : ?RequestListenerType {\n\n if (win === CONSTANTS.WILDCARD) {\n win = null;\n }\n\n if (domain === CONSTANTS.WILDCARD) {\n domain = null;\n }\n\n if (!name) {\n throw new Error(`Name required to get request listener`);\n }\n\n let nameListeners = global.requestListeners[name];\n\n if (!nameListeners) {\n return;\n }\n\n for (let winQualifier of [ win, global.WINDOW_WILDCARD ]) {\n\n let winListeners = winQualifier && nameListeners.get(winQualifier);\n\n if (!winListeners) {\n continue;\n }\n\n if (domain && typeof domain === 'string') {\n if (winListeners[domain]) {\n return winListeners[domain];\n }\n\n if (winListeners[__DOMAIN_REGEX__]) {\n for (let { regex, listener } of winListeners[__DOMAIN_REGEX__]) {\n if (matchDomain(regex, domain)) {\n return listener;\n }\n }\n }\n }\n\n if (winListeners[CONSTANTS.WILDCARD]) {\n return winListeners[CONSTANTS.WILDCARD];\n }\n }\n}\n\n// eslint-disable-next-line complexity\nexport function addRequestListener({ name, win, domain } : { name : string, win : ?CrossDomainWindowType, domain : ?(string | RegExp | Array) }, listener : RequestListenerType) : { cancel : () => void } {\n\n if (!name || typeof name !== 'string') {\n throw new Error(`Name required to add request listener`);\n }\n\n if (Array.isArray(win)) {\n let listenersCollection = [];\n\n for (let item of win) {\n listenersCollection.push(addRequestListener({ name, domain, win: item }, listener));\n }\n\n return {\n cancel() {\n for (let cancelListener of listenersCollection) {\n cancelListener.cancel();\n }\n }\n };\n }\n\n if (Array.isArray(domain)) {\n let listenersCollection = [];\n\n for (let item of domain) {\n listenersCollection.push(addRequestListener({ name, win, domain: item }, listener));\n }\n\n return {\n cancel() {\n for (let cancelListener of listenersCollection) {\n cancelListener.cancel();\n }\n }\n };\n }\n\n let existingListener = getRequestListener({ name, win, domain });\n\n if (!win || win === CONSTANTS.WILDCARD) {\n win = global.WINDOW_WILDCARD;\n }\n\n domain = domain || CONSTANTS.WILDCARD;\n\n if (existingListener) {\n if (win && domain) {\n throw new Error(`Request listener already exists for ${ name } on domain ${ domain.toString() } for ${ win === global.WINDOW_WILDCARD ? 'wildcard' : 'specified' } window`);\n } else if (win) {\n throw new Error(`Request listener already exists for ${ name } for ${ win === global.WINDOW_WILDCARD ? 'wildcard' : 'specified' } window`);\n } else if (domain) {\n throw new Error(`Request listener already exists for ${ name } on domain ${ domain.toString() }`);\n } else {\n throw new Error(`Request listener already exists for ${ name }`);\n }\n }\n\n let requestListeners = global.requestListeners;\n\n let nameListeners = requestListeners[name];\n\n if (!nameListeners) {\n nameListeners = new WeakMap();\n requestListeners[name] = nameListeners;\n }\n\n let winListeners = nameListeners.get(win);\n\n if (!winListeners) {\n winListeners = {};\n nameListeners.set(win, winListeners);\n }\n\n let strDomain = domain.toString();\n\n let regexListeners = winListeners[__DOMAIN_REGEX__];\n let regexListener;\n\n if (isRegex(domain)) {\n\n if (!regexListeners) {\n regexListeners = [];\n winListeners[__DOMAIN_REGEX__] = regexListeners;\n }\n\n regexListener = { regex: domain, listener };\n\n regexListeners.push(regexListener);\n\n } else {\n winListeners[strDomain] = listener;\n }\n\n return {\n cancel() {\n if (!winListeners) {\n return;\n }\n\n delete winListeners[strDomain];\n\n if (win && Object.keys(winListeners).length === 0) {\n nameListeners.delete(win);\n }\n\n if (regexListener) {\n regexListeners.splice(regexListeners.indexOf(regexListener, 1));\n }\n }\n\n };\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { isWindowClosed, matchDomain, stringifyDomainPattern, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONSTANTS } from '../../conf';\nimport { stringifyError, noop } from '../../lib';\nimport { sendMessage } from '../send';\nimport { getRequestListener, getResponseListener, deleteResponseListener, isResponseListenerErrored } from '../listeners';\n\nexport let RECEIVE_MESSAGE_TYPES = {\n\n [ CONSTANTS.POST_MESSAGE_TYPE.ACK ](source : CrossDomainWindowType, origin : string, message : Object) {\n\n if (isResponseListenerErrored(message.hash)) {\n return;\n }\n\n let options = getResponseListener(message.hash);\n\n if (!options) {\n throw new Error(`No handler found for post message ack for message: ${ message.name } from ${ origin } in ${ window.location.protocol }//${ window.location.host }${ window.location.pathname }`);\n }\n\n if (!matchDomain(options.domain, origin)) {\n throw new Error(`Ack origin ${ origin } does not match domain ${ options.domain.toString() }`);\n }\n\n options.ack = true;\n },\n\n [ CONSTANTS.POST_MESSAGE_TYPE.REQUEST ](source : CrossDomainWindowType, origin : string, message : Object) : ZalgoPromise {\n\n let options = getRequestListener({ name: message.name, win: source, domain: origin });\n\n function respond(data) : ZalgoPromise {\n\n if (message.fireAndForget || isWindowClosed(source)) {\n return ZalgoPromise.resolve();\n }\n\n return sendMessage(source, {\n target: message.originalSource,\n hash: message.hash,\n name: message.name,\n ...data\n }, origin);\n }\n\n return ZalgoPromise.all([\n\n respond({\n type: CONSTANTS.POST_MESSAGE_TYPE.ACK\n }),\n\n ZalgoPromise.try(() => {\n\n if (!options) {\n throw new Error(`No handler found for post message: ${ message.name } from ${ origin } in ${ window.location.protocol }//${ window.location.host }${ window.location.pathname }`);\n }\n\n if (!matchDomain(options.domain, origin)) {\n throw new Error(`Request origin ${ origin } does not match domain ${ options.domain.toString() }`);\n }\n\n let data = message.data;\n\n return options.handler({ source, origin, data });\n\n }).then(data => {\n\n return respond({\n type: CONSTANTS.POST_MESSAGE_TYPE.RESPONSE,\n ack: CONSTANTS.POST_MESSAGE_ACK.SUCCESS,\n data\n });\n\n }, err => {\n\n let error = stringifyError(err).replace(/^Error: /, '');\n // $FlowFixMe\n let code = err.code;\n\n return respond({\n type: CONSTANTS.POST_MESSAGE_TYPE.RESPONSE,\n ack: CONSTANTS.POST_MESSAGE_ACK.ERROR,\n error,\n code\n });\n })\n\n ]).then(noop).catch(err => {\n\n if (options && options.handleError) {\n return options.handleError(err);\n } else {\n throw err;\n }\n });\n },\n\n [ CONSTANTS.POST_MESSAGE_TYPE.RESPONSE ](source : CrossDomainWindowType, origin : string, message : Object) : void | ZalgoPromise {\n\n if (isResponseListenerErrored(message.hash)) {\n return;\n }\n\n let options = getResponseListener(message.hash);\n\n if (!options) {\n throw new Error(`No handler found for post message response for message: ${ message.name } from ${ origin } in ${ window.location.protocol }//${ window.location.host }${ window.location.pathname }`);\n }\n\n if (!matchDomain(options.domain, origin)) {\n throw new Error(`Response origin ${ origin } does not match domain ${ stringifyDomainPattern(options.domain) }`);\n }\n\n deleteResponseListener(message.hash);\n\n if (message.ack === CONSTANTS.POST_MESSAGE_ACK.ERROR) {\n let err = new Error(message.error);\n if (message.code) {\n // $FlowFixMe\n err.code = message.code;\n }\n return options.respond(err, null);\n } else if (message.ack === CONSTANTS.POST_MESSAGE_ACK.SUCCESS) {\n let data = message.data || message.response;\n\n return options.respond(null, { source, origin, data });\n }\n }\n};\n","/* @flow */\n\nimport { isWindowClosed, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONSTANTS, POST_MESSAGE_NAMES_LIST } from '../../conf';\nimport { deserializeMethods, jsonParse, addEventListener, noop } from '../../lib';\nimport { global } from '../../global';\n\nimport { RECEIVE_MESSAGE_TYPES } from './types';\n\nglobal.receivedMessages = global.receivedMessages || [];\n\ntype MessageEvent = {\n source : CrossDomainWindowType,\n origin : string,\n data : string\n};\n\nfunction parseMessage(message : string) : ?Object {\n\n let parsedMessage;\n\n try {\n parsedMessage = jsonParse(message);\n } catch (err) {\n return;\n }\n\n if (!parsedMessage) {\n return;\n }\n\n if (typeof parsedMessage !== 'object' || parsedMessage === null) {\n return;\n }\n\n parsedMessage = parsedMessage[CONSTANTS.WINDOW_PROPS.POSTROBOT];\n\n if (!parsedMessage || typeof parsedMessage !== 'object' || parsedMessage === null) {\n return;\n }\n\n if (!parsedMessage.type || typeof parsedMessage.type !== 'string') {\n return;\n }\n\n if (!RECEIVE_MESSAGE_TYPES[parsedMessage.type]) {\n return;\n }\n\n return parsedMessage;\n}\n\n\nexport function receiveMessage(event : MessageEvent) {\n\n if (!window || window.closed) {\n return;\n }\n\n try {\n if (!event.source) {\n return;\n }\n } catch (err) {\n return;\n }\n\n let { source, origin, data } = event;\n\n let message = parseMessage(data);\n\n if (!message) {\n return;\n }\n\n if (!message.sourceDomain || typeof message.sourceDomain !== 'string') {\n throw new Error(`Expected message to have sourceDomain`);\n }\n\n if (message.sourceDomain.indexOf(CONSTANTS.MOCK_PROTOCOL) === 0 || message.sourceDomain.indexOf(CONSTANTS.FILE_PROTOCOL) === 0) {\n origin = message.sourceDomain;\n }\n\n if (global.receivedMessages.indexOf(message.id) === -1) {\n global.receivedMessages.push(message.id);\n } else {\n return;\n }\n\n if (__DEBUG__) {\n let level;\n\n if (POST_MESSAGE_NAMES_LIST.indexOf(message.name) !== -1 || message.type === CONSTANTS.POST_MESSAGE_TYPE.ACK) {\n level = 'debug';\n } else if (message.ack === 'error') {\n level = 'error';\n } else {\n level = 'info';\n }\n \n // eslint-disable-next-line no-console\n console[level]('postrobot_receive', message.type.replace(/^postrobot_message_/, ''), '::', message.name, '::', origin, '\\n\\n', message);\n }\n\n if (isWindowClosed(source) && !message.fireAndForget) {\n return;\n }\n\n if (message.data) {\n message.data = deserializeMethods(source, origin, message.data);\n }\n\n RECEIVE_MESSAGE_TYPES[message.type](source, origin, message);\n}\n\nexport function messageListener(event : { source : CrossDomainWindowType, origin : string, data : string, sourceElement : CrossDomainWindowType, originalEvent? : { origin : string } }) {\n\n try {\n noop(event.source);\n } catch (err) {\n return;\n }\n\n // $FlowFixMe\n let messageEvent : MessageEvent = {\n source: event.source || event.sourceElement,\n origin: event.origin || (event.originalEvent && event.originalEvent.origin),\n data: event.data\n };\n\n if (__POST_ROBOT__.__IE_POPUP_SUPPORT__) {\n try {\n require('../../compat').emulateIERestrictions(messageEvent.source, window);\n } catch (err) {\n return;\n }\n }\n\n receiveMessage(messageEvent);\n}\n\nexport function listenForMessages() {\n addEventListener(window, 'message', messageListener);\n}\n\nglobal.receiveMessage = receiveMessage;\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getAncestor, isAncestor, isWindowClosed, getDomain, matchDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONFIG, CONSTANTS } from '../conf';\nimport { sendMessage, addResponseListener, deleteResponseListener, markResponseListenerErrored, type ResponseListenerType } from '../drivers';\nimport { uniqueID, onChildWindowReady, sayHello, isRegex } from '../lib';\nimport { global } from '../global';\n\nglobal.requestPromises = global.requestPromises || new WeakMap();\n\ntype WindowResolverType = CrossDomainWindowType | string | HTMLIFrameElement;\n\ntype RequestOptionsType = {\n window? : ?WindowResolverType,\n domain? : ?(string | Array | RegExp),\n name? : ?string,\n data? : ?Object,\n fireAndForget? : ?boolean,\n timeout? : ?number\n};\n\ntype ResponseMessageEvent = {\n source : CrossDomainWindowType,\n origin : string,\n data : Object\n};\n\nexport function request(options : RequestOptionsType) : ZalgoPromise {\n\n let prom = ZalgoPromise.try(() => {\n\n if (!options.name) {\n throw new Error('Expected options.name');\n }\n\n let name = options.name;\n let targetWindow : ?CrossDomainWindowType;\n let domain : string | Array | RegExp;\n\n if (typeof options.window === 'string') {\n let el = document.getElementById(options.window);\n\n if (!el) {\n throw new Error(`Expected options.window ${ Object.prototype.toString.call(options.window) } to be a valid element id`);\n }\n\n if (el.tagName.toLowerCase() !== 'iframe') {\n throw new Error(`Expected options.window ${ Object.prototype.toString.call(options.window) } to be an iframe`);\n }\n\n // $FlowFixMe\n if (!el.contentWindow) {\n throw new Error('Iframe must have contentWindow. Make sure it has a src attribute and is in the DOM.');\n }\n\n // $FlowFixMe\n targetWindow = el.contentWindow;\n\n } else if (options.window instanceof HTMLIFrameElement) {\n\n if (options.window.tagName.toLowerCase() !== 'iframe') {\n throw new Error(`Expected options.window ${ Object.prototype.toString.call(options.window) } to be an iframe`);\n }\n\n if (options.window && !options.window.contentWindow) {\n throw new Error('Iframe must have contentWindow. Make sure it has a src attribute and is in the DOM.');\n }\n\n if (options.window && options.window.contentWindow) {\n // $FlowFixMe\n targetWindow = options.window.contentWindow;\n }\n } else {\n targetWindow = options.window;\n }\n\n if (!targetWindow) {\n throw new Error('Expected options.window to be a window object, iframe, or iframe element id.');\n }\n\n const win = targetWindow;\n\n domain = options.domain || CONSTANTS.WILDCARD;\n\n let hash = `${ options.name }_${ uniqueID() }`;\n\n if (isWindowClosed(win)) {\n throw new Error('Target window is closed');\n }\n\n let hasResult = false;\n\n let requestPromises = global.requestPromises.get(win);\n\n if (!requestPromises) {\n requestPromises = [];\n global.requestPromises.set(win, requestPromises);\n }\n\n let requestPromise = ZalgoPromise.try(() => {\n\n if (isAncestor(window, win)) {\n return onChildWindowReady(win, options.timeout || CONFIG.CHILD_WINDOW_TIMEOUT);\n }\n\n }).then(({ origin } = {}) => {\n\n if (isRegex(domain) && !origin) {\n return sayHello(win);\n }\n\n }).then(({ origin } = {}) => {\n\n if (isRegex(domain)) {\n if (!matchDomain(domain, origin)) {\n throw new Error(`Remote window domain ${ origin } does not match regex: ${ domain.toString() }`);\n }\n\n domain = origin;\n }\n\n if (typeof domain !== 'string' && !Array.isArray(domain)) {\n throw new TypeError(`Expected domain to be a string or array`);\n }\n\n const actualDomain = domain;\n\n return new ZalgoPromise((resolve, reject) => {\n\n let responseListener : ResponseListenerType;\n\n if (!options.fireAndForget) {\n responseListener = {\n name,\n window: win,\n domain: actualDomain,\n respond(err, result) {\n if (!err) {\n hasResult = true;\n requestPromises.splice(requestPromises.indexOf(requestPromise, 1));\n }\n\n if (err) {\n reject(err);\n } else {\n resolve(result);\n }\n }\n };\n\n addResponseListener(hash, responseListener);\n }\n\n sendMessage(win, {\n type: CONSTANTS.POST_MESSAGE_TYPE.REQUEST,\n hash,\n name,\n data: options.data,\n fireAndForget: options.fireAndForget\n }, actualDomain).catch(reject);\n\n if (options.fireAndForget) {\n return resolve();\n }\n\n let ackTimeout = CONFIG.ACK_TIMEOUT;\n let resTimeout = options.timeout || CONFIG.RES_TIMEOUT;\n\n let cycleTime = 100;\n\n let cycle = () => {\n\n if (hasResult) {\n return;\n }\n\n if (isWindowClosed(win)) {\n\n if (!responseListener.ack) {\n return reject(new Error(`Window closed for ${ name } before ack`));\n }\n\n return reject(new Error(`Window closed for ${ name } before response`));\n }\n\n ackTimeout = Math.max(ackTimeout - cycleTime, 0);\n if (resTimeout !== -1) {\n resTimeout = Math.max(resTimeout - cycleTime, 0);\n }\n\n let hasAck = responseListener.ack;\n\n if (hasAck) {\n\n if (resTimeout === -1) {\n return;\n }\n\n cycleTime = Math.min(resTimeout, 2000);\n\n } else if (ackTimeout === 0) {\n return reject(new Error(`No ack for postMessage ${ name } in ${ getDomain() } in ${ CONFIG.ACK_TIMEOUT }ms`));\n\n } else if (resTimeout === 0) {\n return reject(new Error(`No response for postMessage ${ name } in ${ getDomain() } in ${ options.timeout || CONFIG.RES_TIMEOUT }ms`));\n }\n\n setTimeout(cycle, cycleTime);\n };\n\n setTimeout(cycle, cycleTime);\n });\n });\n\n requestPromise.catch(() => {\n markResponseListenerErrored(hash);\n deleteResponseListener(hash);\n });\n\n requestPromises.push(requestPromise);\n\n return requestPromise;\n });\n\n return prom;\n}\n\nexport function send(window : WindowResolverType, name : string, data : ?Object, options : ?RequestOptionsType) : ZalgoPromise {\n\n options = options || {};\n options.window = window;\n options.name = name;\n options.data = data;\n\n return request(options);\n}\n\nexport function sendToParent(name : string, data : ?Object, options : ?RequestOptionsType) : ZalgoPromise {\n\n let win = getAncestor();\n\n if (!win) {\n return new ZalgoPromise((resolve, reject) => reject(new Error('Window does not have a parent')));\n }\n\n return send(win, name, data, options);\n}\n\nexport function client(options : RequestOptionsType = {}) : { send : (string, ?Object) => ZalgoPromise } {\n\n if (!options.window) {\n throw new Error(`Expected options.window`);\n }\n\n const win = options.window;\n\n return {\n send(name : string, data : ?Object) : ZalgoPromise {\n return send(win, name, data, options);\n }\n };\n}\n\nglobal.send = send;\n","/* @flow */\n\nimport { isWindowClosed, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { once as onceFunction, safeInterval } from '../lib';\nimport { addRequestListener, type RequestListenerType } from '../drivers';\nimport { CONSTANTS } from '../conf';\nimport { global } from '../global';\n\ntype ErrorHandlerType = (err : mixed) => void;\ntype HandlerType = ({ source : CrossDomainWindowType, origin : string, data : Object }) => (void | mixed | ZalgoPromise);\n\ntype ServerOptionsType = {\n handler? : ?HandlerType,\n errorHandler? : ?ErrorHandlerType,\n window? : CrossDomainWindowType,\n name? : ?string,\n domain? : ?(string | RegExp | Array),\n once? : ?boolean,\n errorOnClose? : ?boolean\n};\n\nexport function listen(options : ServerOptionsType) : { cancel : () => void } {\n\n if (!options.name) {\n throw new Error('Expected options.name');\n }\n\n if (!options.handler) {\n throw new Error('Expected options.handler');\n }\n\n const name = options.name;\n const win = options.window;\n const domain = options.domain;\n\n let listenerOptions : RequestListenerType = {\n handler: options.handler,\n handleError: options.errorHandler || (err => {\n throw err;\n }),\n window: win,\n domain: domain || CONSTANTS.WILDCARD,\n name\n };\n\n let requestListener = addRequestListener({ name, win, domain }, listenerOptions);\n\n if (options.once) {\n let handler = listenerOptions.handler;\n listenerOptions.handler = onceFunction(function listenOnce() : mixed | ZalgoPromise {\n requestListener.cancel();\n return handler.apply(this, arguments);\n });\n }\n\n if (listenerOptions.window && options.errorOnClose) {\n let interval = safeInterval(() => {\n if (win && typeof win === 'object' && isWindowClosed(win)) {\n interval.cancel();\n listenerOptions.handleError(new Error('Post message target window is closed'));\n }\n }, 50);\n }\n\n return {\n cancel() {\n requestListener.cancel();\n }\n };\n}\n\nexport function on(name : string, options : ServerOptionsType | HandlerType, handler : ?HandlerType) : { cancel : () => void } {\n\n if (typeof options === 'function') {\n handler = options;\n options = {};\n }\n\n options = options || {};\n\n options.name = name;\n options.handler = handler || options.handler;\n\n return listen(options);\n}\n\nexport function once(name : string, options : ?(ServerOptionsType | HandlerType) = {}, handler : ?HandlerType) : ZalgoPromise<{ source : mixed, origin : string, data : Object }> {\n\n if (typeof options === 'function') {\n handler = options;\n options = {};\n }\n\n options = options || {};\n handler = handler || options.handler;\n let errorHandler = options.errorHandler;\n\n let promise = new ZalgoPromise((resolve, reject) => {\n\n options = options || {};\n\n options.name = name;\n options.once = true;\n\n options.handler = (event) => {\n resolve(event);\n if (handler) {\n return handler(event);\n }\n };\n\n options.errorHandler = (err) => {\n reject(err);\n if (errorHandler) {\n return errorHandler(err);\n }\n };\n });\n\n let onceListener = listen(options);\n promise.cancel = onceListener.cancel;\n\n return promise;\n}\n\nexport function listener(options : ServerOptionsType = {}) : { on : (name : string, handler : HandlerType) => { cancel : () => void } } {\n\n return {\n on(name : string, handler : HandlerType) : { cancel : () => void } {\n return on(name, options, handler);\n }\n };\n}\n\nglobal.on = on;\n","/* @flow */\n\nimport { CONSTANTS } from '../conf';\nimport { messageListener } from '../drivers';\n\nexport { CONFIG, CONSTANTS } from '../conf';\n\nexport function disable() {\n delete window[CONSTANTS.WINDOW_PROPS.POSTROBOT];\n window.removeEventListener('message', messageListener);\n}\n","/* @flow */\n\nimport { getAncestor } from 'cross-domain-utils/src';\n\nexport * from './client';\nexport * from './server';\nexport * from './config';\n\nexport let parent = getAncestor();\n","/* @flow */\n\nimport { type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { global } from './global';\n\nexport function cleanUpWindow(win : CrossDomainWindowType) {\n\n // global.tunnelWindows\n // global.bridges\n // global.popupWindowsByName\n // global.responseListeners\n // global.requestListeners\n\n let requestPromises = global.requestPromises.get(win);\n\n if (requestPromises) {\n for (let promise of requestPromises) {\n promise.reject(new Error(`No response from window - cleaned up`));\n }\n }\n\n if (global.popupWindowsByWin) {\n global.popupWindowsByWin.delete(win);\n }\n\n if (global.remoteWindows) {\n global.remoteWindows.delete(win);\n }\n\n global.requestPromises.delete(win);\n global.methods.delete(win);\n global.readyPromises.delete(win);\n}\n","/* @flow */\n\nimport { initOnReady, listenForMethods } from './lib';\nimport { listenForMessages } from './drivers';\nimport { global } from './global';\nimport { on, send } from './public';\n\nexport * from './public';\nexport { cleanUpWindow } from './clean';\nexport { ZalgoPromise as Promise } from 'zalgo-promise/src';\nexport let bridge = __POST_ROBOT__.__IE_POPUP_SUPPORT__ ? require('./bridge/interface') : null;\n\nexport function init() {\n if (!global.initialized) {\n listenForMessages();\n\n if (__POST_ROBOT__.__IE_POPUP_SUPPORT__) {\n require('./bridge').openTunnelToOpener();\n }\n\n initOnReady();\n listenForMethods({ on, send });\n }\n\n global.initialized = true;\n}\n\ninit();\n","/* @flow */\n\n// eslint-disable-next-line import/no-namespace\nimport * as INTERFACE from './interface';\n\nexport * from './interface';\nexport default INTERFACE;\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { isPopup, isIframe, getUserAgent } from 'cross-domain-utils/src';\n\nimport { CONFIG, CONSTANTS } from '../conf';\n\n\nexport function stringifyError(err : mixed, level : number = 1) : string {\n\n if (level >= 3) {\n return 'stringifyError stack overflow';\n }\n\n try {\n if (!err) {\n return ``;\n }\n\n if (typeof err === 'string') {\n return err;\n }\n\n if (err instanceof Error) {\n let stack = err && err.stack;\n let message = err && err.message;\n\n if (stack && message) {\n if (stack.indexOf(message) !== -1) {\n return stack;\n } else {\n return `${ message }\\n${ stack }`;\n }\n } else if (stack) {\n return stack;\n } else if (message) {\n return message;\n }\n }\n\n if (typeof err.toString === 'function') {\n return err.toString();\n }\n\n return Object.prototype.toString.call(err);\n\n } catch (newErr) { // eslint-disable-line unicorn/catch-error-name\n return `Error while stringifying error: ${ stringifyError(newErr, level + 1) }`;\n }\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport let once = (method : Function) : ((...args : Array) => T | void) => {\n if (!method) {\n return method;\n }\n let called = false;\n return function onceWrapper() : T | void {\n if (!called) {\n called = true;\n return method.apply(this, arguments);\n }\n };\n};\n\n// eslint-disable-next-line no-unused-vars\nexport function noop(...args : Array) {\n // pass\n}\n\nexport function addEventListener(obj : Object, event : string, handler : Function) : { cancel : () => void } {\n if (obj.addEventListener) {\n obj.addEventListener(event, handler);\n } else {\n obj.attachEvent(`on${ event }`, handler);\n }\n\n return {\n cancel() {\n if (obj.removeEventListener) {\n obj.removeEventListener(event, handler);\n } else {\n obj.detachEvent(`on${ event }`, handler);\n }\n }\n };\n}\n\nexport function uniqueID() : string {\n\n let chars = '0123456789abcdef';\n\n return 'xxxxxxxxxx'.replace(/./g, () => {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n });\n}\n\ntype MixedArrayType = Array;\n\nexport function eachArray(item : MixedArrayType, callback : (item : mixed, key : number) => mixed) {\n for (let i = 0; i < item.length; i++) {\n callback(item[i], i);\n }\n}\n\nexport function eachObject(item : Object, callback : (item : mixed, key : string) => mixed) {\n for (let key in item) {\n if (item.hasOwnProperty(key)) {\n callback(item[key], key);\n }\n }\n}\n\nexport function each(item : T, callback : (item : mixed, key : number | string) => mixed) {\n if (Array.isArray(item)) {\n eachArray(item, callback);\n } else if (typeof item === 'object' && item !== null) {\n eachObject(item, callback);\n }\n}\n\nexport function replaceObject(item : T, callback : (item : mixed, key : number | string) => mixed, depth : number = 1) : T {\n\n if (depth >= 100) {\n throw new Error(`Self-referential object passed, or object contained too many layers`);\n }\n\n let newobj;\n\n if (typeof item === 'object' && item !== null && !Array.isArray(item)) {\n newobj = {};\n } else if (Array.isArray(item)) {\n newobj = [];\n } else {\n throw new TypeError(`Invalid type: ${ typeof item }`);\n }\n\n each(item, (childItem, key) => {\n\n let result = callback(childItem, key);\n\n if (typeof result !== 'undefined') {\n // $FlowFixMe\n newobj[key] = result;\n } else if (typeof childItem === 'object' && childItem !== null) {\n // $FlowFixMe\n newobj[key] = replaceObject(childItem, callback, depth + 1);\n } else {\n // $FlowFixMe\n newobj[key] = childItem;\n }\n });\n\n // $FlowFixMe\n return newobj;\n}\n\nexport function safeInterval(method : Function, time : number) : { cancel : () => void } {\n let timeout;\n\n function runInterval() {\n timeout = setTimeout(runInterval, time);\n method.call();\n }\n\n timeout = setTimeout(runInterval, time);\n\n return {\n cancel() {\n clearTimeout(timeout);\n }\n };\n}\n\nexport function isRegex(item : mixed) : boolean {\n return Object.prototype.toString.call(item) === '[object RegExp]';\n}\n\n\ntype FunctionProxy = (method : T) => T;\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport let weakMapMemoize : FunctionProxy<*> = (method : (arg : any) => R) : ((...args : Array) => R) => {\n\n let weakmap = new WeakMap();\n\n // eslint-disable-next-line flowtype/no-weak-types\n return function weakmapMemoized(arg : any) : R {\n let result = weakmap.get(arg);\n\n if (typeof result !== 'undefined') {\n return result;\n }\n\n result = method.call(this, arg);\n\n if (typeof result !== 'undefined') {\n weakmap.set(arg, result);\n }\n\n return result;\n };\n};\n\nexport function getWindowType() : string {\n if (isPopup()) {\n return CONSTANTS.WINDOW_TYPES.POPUP;\n }\n if (isIframe()) {\n return CONSTANTS.WINDOW_TYPES.IFRAME;\n }\n return CONSTANTS.WINDOW_TYPES.FULLPAGE;\n}\n\nexport function jsonStringify(obj : T, replacer : ?Function, indent : number | void) : string {\n\n let objectToJSON;\n let arrayToJSON;\n\n try {\n if (JSON.stringify({}) !== '{}') {\n // $FlowFixMe\n objectToJSON = Object.prototype.toJSON;\n // $FlowFixMe\n delete Object.prototype.toJSON;\n }\n\n if (JSON.stringify({}) !== '{}') {\n throw new Error(`Can not correctly serialize JSON objects`);\n }\n\n if (JSON.stringify([]) !== '[]') {\n // $FlowFixMe\n arrayToJSON = Array.prototype.toJSON;\n // $FlowFixMe\n delete Array.prototype.toJSON;\n }\n\n if (JSON.stringify([]) !== '[]') {\n throw new Error(`Can not correctly serialize JSON objects`);\n }\n\n } catch (err) {\n throw new Error(`Can not repair JSON.stringify: ${ err.message }`);\n }\n\n let result = JSON.stringify.call(this, obj, replacer, indent);\n\n try {\n if (objectToJSON) {\n // $FlowFixMe\n Object.prototype.toJSON = objectToJSON; // eslint-disable-line no-extend-native\n }\n\n if (arrayToJSON) {\n // $FlowFixMe\n Array.prototype.toJSON = arrayToJSON; // eslint-disable-line no-extend-native\n }\n\n } catch (err) {\n throw new Error(`Can not repair JSON.stringify: ${ err.message }`);\n }\n\n\n return result;\n}\n\nexport function jsonParse(item : string) : mixed {\n return JSON.parse(item);\n}\n \nexport function needsGlobalMessagingForBrowser() : boolean {\n\n if (getUserAgent(window).match(/MSIE|trident|edge\\/12|edge\\/13/i)) {\n return true;\n }\n \n if (!CONFIG.ALLOW_POSTMESSAGE_POPUP) {\n return true;\n }\n \n return false;\n}\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { matchDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { CONSTANTS } from '../conf';\nimport { global } from '../global';\n\nimport { once, uniqueID, replaceObject, stringifyError, isRegex } from './util';\n\nglobal.methods = global.methods || new WeakMap();\n\nexport let listenForMethods = once(() => {\n global.on(CONSTANTS.POST_MESSAGE_NAMES.METHOD, { origin: CONSTANTS.WILDCARD }, ({ source, origin, data } : { source : CrossDomainWindowType, origin : string, data : Object }) => {\n\n let methods = global.methods.get(source);\n\n if (!methods) {\n throw new Error(`Could not find any methods this window has privileges to call`);\n }\n\n let meth = methods[data.id];\n\n if (!meth) {\n throw new Error(`Could not find method with id: ${ data.id }`);\n }\n\n if (!matchDomain(meth.domain, origin)) {\n throw new Error(`Method domain ${ meth.domain } does not match origin ${ origin }`);\n }\n\n return ZalgoPromise.try(() => {\n return meth.method.apply({ source, origin, data }, data.args);\n\n }).then(result => {\n\n return {\n result,\n id: data.id,\n name: data.name\n };\n });\n });\n});\n\nfunction isSerialized(item : mixed, type : string) : boolean {\n return typeof item === 'object' && item !== null && item.__type__ === type;\n}\n\ntype SerializedMethod = {\n __type__ : string,\n __id__ : string,\n __name__ : string\n};\n\nexport function serializeMethod(destination : CrossDomainWindowType, domain : string | Array, method : Function, name : string) : SerializedMethod {\n\n let id = uniqueID();\n\n let methods = global.methods.get(destination);\n\n if (!methods) {\n methods = {};\n global.methods.set(destination, methods);\n }\n\n methods[id] = { domain, method };\n\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.METHOD,\n __id__: id,\n __name__: name\n };\n}\n\ntype SerializedError = {\n __type__ : string,\n __message__ : string\n};\n\nfunction serializeError(err : mixed) : SerializedError {\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.ERROR,\n __message__: stringifyError(err),\n // $FlowFixMe\n __code__: err.code\n };\n}\n\ntype SerializePromise = {\n __type__ : string,\n __then__ : SerializedMethod\n};\n\nfunction serializePromise(destination : CrossDomainWindowType, domain : string | Array, promise : ZalgoPromise, name : string) : SerializePromise {\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.PROMISE,\n __then__: serializeMethod(destination, domain, (resolve, reject) => promise.then(resolve, reject), `${ name }.then`)\n };\n}\n\nfunction serializeZalgoPromise(destination : CrossDomainWindowType, domain : string | Array, promise : ZalgoPromise, name : string) : SerializePromise {\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.ZALGO_PROMISE,\n __then__: serializeMethod(destination, domain, (resolve, reject) => promise.then(resolve, reject), `${ name }.then`)\n };\n}\n\ntype SerializedRegex = {\n __type__ : string,\n __source__ : string\n};\n\nfunction serializeRegex(regex : RegExp) : SerializedRegex {\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.REGEX,\n __source__: regex.source\n };\n}\n\nexport function serializeMethods(destination : CrossDomainWindowType, domain : string | Array, obj : Object) : Object {\n\n return replaceObject({ obj }, (item, key) => {\n if (typeof item === 'function') {\n return serializeMethod(destination, domain, item, key.toString());\n }\n\n if (item instanceof Error) {\n return serializeError(item);\n }\n\n if (window.Promise && item instanceof window.Promise) {\n return serializePromise(destination, domain, item, key.toString());\n }\n\n if (ZalgoPromise.isPromise(item)) {\n // $FlowFixMe\n return serializeZalgoPromise(destination, domain, item, key.toString());\n }\n\n if (isRegex(item)) {\n // $FlowFixMe\n return serializeRegex(item);\n }\n }).obj;\n}\n\nexport function deserializeMethod(source : CrossDomainWindowType, origin : string, obj : Object) : Function {\n\n function wrapper() : ZalgoPromise {\n let args = Array.prototype.slice.call(arguments);\n return global.send(source, CONSTANTS.POST_MESSAGE_NAMES.METHOD, {\n id: obj.__id__,\n name: obj.__name__,\n args\n\n }, { domain: origin, timeout: -1 }).then(({ data }) => {\n return data.result;\n }, err => {\n throw err;\n });\n }\n\n wrapper.__name__ = obj.__name__;\n wrapper.__xdomain__ = true;\n\n wrapper.source = source;\n wrapper.origin = origin;\n\n return wrapper;\n}\n\nexport function deserializeError(source : CrossDomainWindowType, origin : string, obj : Object) : Error {\n let err = new Error(obj.__message__);\n if (obj.__code__) {\n // $FlowFixMe\n err.code = obj.__code__;\n }\n return err;\n}\n\nexport function deserializeZalgoPromise(source : CrossDomainWindowType, origin : string, prom : Object) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => deserializeMethod(source, origin, prom.__then__)(resolve, reject));\n}\n\nexport function deserializePromise(source : CrossDomainWindowType, origin : string, prom : Object) : ZalgoPromise {\n if (!window.Promise) {\n return deserializeZalgoPromise(source, origin, prom);\n }\n\n return new window.Promise((resolve, reject) => deserializeMethod(source, origin, prom.__then__)(resolve, reject));\n}\n\nexport function deserializeRegex(source : CrossDomainWindowType, origin : string, item : Object) : RegExp {\n // eslint-disable-next-line security/detect-non-literal-regexp\n return new RegExp(item.__source__);\n}\n\nexport function deserializeMethods(source : CrossDomainWindowType, origin : string, obj : Object) : Object {\n\n return replaceObject({ obj }, (item) => {\n if (typeof item !== 'object' || item === null) {\n return;\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.METHOD)) {\n return deserializeMethod(source, origin, item);\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.ERROR)) {\n return deserializeError(source, origin, item);\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.PROMISE)) {\n return deserializePromise(source, origin, item);\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.ZALGO_PROMISE)) {\n return deserializeZalgoPromise(source, origin, item);\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.REGEX)) {\n return deserializeRegex(source, origin, item);\n }\n\n }).obj;\n}\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { getAncestor, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { CONSTANTS } from '../conf';\nimport { global } from '../global';\n\nimport { noop } from './util';\n\nglobal.readyPromises = global.readyPromises || new WeakMap();\n\nexport function onHello(handler : ({ source? : CrossDomainWindowType, origin? : string }) => void) {\n global.on(CONSTANTS.POST_MESSAGE_NAMES.HELLO, { domain: CONSTANTS.WILDCARD }, ({ source, origin }) => {\n return handler({ source, origin });\n });\n}\n\nexport function sayHello(win : CrossDomainWindowType) : ZalgoPromise<{ origin : string }> {\n return global.send(win, CONSTANTS.POST_MESSAGE_NAMES.HELLO, {}, { domain: CONSTANTS.WILDCARD, timeout: -1 })\n .then(({ origin }) => {\n return { origin };\n });\n}\n\nexport function initOnReady() {\n\n onHello(({ source, origin }) => {\n let promise = global.readyPromises.get(source) || new ZalgoPromise();\n promise.resolve({ origin });\n global.readyPromises.set(source, promise);\n });\n\n let parent = getAncestor();\n if (parent) {\n sayHello(parent).catch(noop);\n }\n}\n\nexport function onChildWindowReady(win : mixed, timeout : number = 5000, name : string = 'Window') : ZalgoPromise<{ origin : string }> {\n\n let promise = global.readyPromises.get(win);\n\n if (promise) {\n return promise;\n }\n\n promise = new ZalgoPromise();\n global.readyPromises.set(win, promise);\n\n if (timeout !== -1) {\n setTimeout(() => promise.reject(new Error(`${ name } did not load after ${ timeout }ms`)), timeout);\n }\n\n return promise;\n}\n","/* @flow */\n\nexport * from './util';\nexport * from './serialize';\nexport * from './ready';\n","/* @flow */\n\nimport { on, send, bridge } from 'post-robot/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport type { CrossDomainWindowType, SameDomainWindowType } from 'cross-domain-utils/src';\n\nimport { isPayPalDomain, noop, getScriptVersion, extendUrl } from '../lib';\nimport { config } from '../config';\n\nfunction match(str : string, pattern : RegExp) : ?string {\n const regmatch : ?$ReadOnlyArray = str.match(pattern);\n if (regmatch) {\n return regmatch[1];\n }\n}\n\nlet onAuthorize : ?Function;\n\n// Post-Bridge\n\nif (isPayPalDomain()) {\n on('onLegacyPaymentAuthorize', { window: window.parent }, ({ data } : { data : { method : Function } }) => {\n onAuthorize = data.method;\n });\n}\n\n// Button / Merchant\n\nexport function onLegacyPaymentAuthorize(method : Function) : ZalgoPromise {\n onAuthorize = method;\n\n return ZalgoPromise.try(() => {\n if (bridge && !isPayPalDomain()) {\n return bridge.openBridge(extendUrl(config.postBridgeUrl, { version: getScriptVersion() }), config.postBridgeDomain).then((postBridge : CrossDomainWindowType) => {\n return send(postBridge, 'onLegacyPaymentAuthorize', { method }, { domain: config.paypalDomain })\n .then(noop);\n });\n }\n });\n}\n\nwindow.onLegacyPaymentAuthorize = onLegacyPaymentAuthorize;\n\n// Post-Bridge / Button\n\nwindow.watchForLegacyFallback = (win : SameDomainWindowType) => {\n const interval = setInterval(() => {\n try {\n const isLegacy = (win.document.body.innerHTML.indexOf('merchantpaymentweb') !== -1 ||\n win.document.body.innerHTML.indexOf('wapapp') !== -1);\n\n if (!isLegacy || win.ppxoWatching || win.closed) {\n return;\n }\n\n win.ppxoWatching = true;\n\n const XMLHttpRequestsend = win.XMLHttpRequest.prototype.send;\n\n win.XMLHttpRequest.prototype.send = function overrideXMLHttpRequestSend() : void {\n\n if (this._patched) {\n return XMLHttpRequestsend.apply(this, arguments);\n }\n\n this._patched = true;\n\n const self = this;\n let onload = this.onload;\n\n function listener() : void {\n\n if (self.readyState === self.DONE && self.status === 200 && self.responseText) {\n\n try {\n const response = JSON.parse(self.responseText.replace('while (1);', ''));\n\n if (response.type === 'redirect' && response.url && onAuthorize) {\n\n const url = response.url;\n\n clearInterval(interval);\n win.close();\n\n onAuthorize({\n returnUrl: url,\n paymentToken: match(url, /token=((EC-)?[A-Z0-9]+)/),\n billingToken: match(url, /ba_token=((BA-)?[A-Z0-9]+)/),\n payerID: match(url, /PayerID=([A-Z0-9]+)/),\n paymentID: match(url, /paymentId=((PAY-)?[A-Z0-9]+)/)\n });\n\n onAuthorize = null;\n\n if (win.PAYPAL && win.PAYPAL.Checkout && win.PAYPAL.Checkout.XhrResponse && win.PAYPAL.Checkout.XhrResponse.RESPONSE_TYPES) {\n Object.defineProperty(win.PAYPAL.Checkout.XhrResponse.RESPONSE_TYPES, 'Redirect', {\n value: Math.random().toString()\n });\n }\n\n if (win.mob && win.mob.Xhr && win.mob.Xhr.prototype._xhrOnReady) {\n win.mob.Xhr.prototype._xhrOnReady = noop;\n }\n }\n\n } catch (err) {\n return;\n }\n }\n\n if (onload) {\n return onload.apply(this, arguments);\n }\n }\n\n if (this.onload !== listener) {\n\n try {\n\n delete this.onload;\n this.addEventListener('load', listener);\n\n // $FlowFixMe\n Object.defineProperty(this, 'onload', {\n get() : Function {\n return listener;\n },\n set(handler) {\n onload = handler;\n }\n });\n\n } catch (err) {\n\n // pass\n }\n\n }\n\n return XMLHttpRequestsend.apply(this, arguments);\n };\n\n } catch (err) {\n // pass\n }\n }, 100);\n};\n\n\nwindow.onLegacyFallback = window.watchForLegacyFallback;\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { info, track, warn, flush as flushLogs, immediateFlush } from 'beaver-logger/client';\nimport { create, CONSTANTS, PopupOpenError } from 'zoid/src';\nimport { type Component } from 'zoid/src/component/component';\nimport type { CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { base64encode } from 'belter/src';\n\nimport { isDevice, request, getQueryParam, redirect as redir, patchMethod,\n setLogLevel, getSessionID, getBrowserLocale, supportsPopups, memoize,\n getDomainSetting, getScriptVersion, getButtonSessionID, isPayPalDomain,\n isEligible, getCurrentScriptUrl } from '../lib';\nimport { config } from '../config';\nimport { ENV, FPTI, PAYMENT_TYPE, CHECKOUT_OVERLAY_COLOR, ATTRIBUTE } from '../constants';\nimport { onLegacyPaymentAuthorize } from '../compat';\nimport { determineParameterFromToken, determineUrl } from '../integrations';\n\nimport { containerTemplate, componentTemplate } from './template';\n\nfunction addHeader(name, value) : void {\n\n if (!window.$Api) {\n return;\n }\n\n if (window.$Api.addHeader) {\n return window.$Api.addHeader(name, value);\n }\n}\n\n// eslint-disable-next-line flowtype/require-exact-type\ntype CheckoutPropsType = {\n payment? : () => ZalgoPromise,\n onAuthorize : ({ returnUrl : string }, { redirect : (?CrossDomainWindowType, ?string) => ZalgoPromise }) => ?ZalgoPromise,\n onShippingChange? : (address : {}) => ?ZalgoPromise,\n onCancel? : ({ cancelUrl : string }, { redirect : (?CrossDomainWindowType, ?string) => ZalgoPromise }) => ?ZalgoPromise,\n fallback? : (string) => ?ZalgoPromise,\n fundingSource? : string,\n logLevel? : string,\n env? : string,\n stage? : string,\n stageUrl? : string,\n localhostUrl? : string,\n checkoutUri? : string,\n authCode? : string\n};\n\nexport const Checkout : Component = create({\n\n tag: 'paypal-checkout',\n name: 'ppcheckout',\n\n scrolling: true,\n\n buildUrl(props) : ZalgoPromise {\n const env = props.env || config.env;\n\n if (!props.payment) {\n throw new Error(`Can not build url without payment prop`);\n }\n\n return props.payment().then(token => {\n if (!token) {\n throw new Error(`Expected payment id or token to be passed, got ${ token }`);\n }\n\n return determineUrl(env, props.fundingSource, token);\n });\n },\n\n get unsafeRenderTo() : boolean {\n return config.env === ENV.LOCAL;\n },\n\n get domain() : Object {\n return {\n ...config.paypalDomains\n };\n },\n\n get bridgeUrl() : Object {\n return config.metaFrameUrls;\n },\n\n get bridgeDomain() : Object {\n return config.paypalDomains;\n },\n\n contexts: {\n iframe: (!supportsPopups()),\n popup: true\n },\n\n get version() : string {\n return getScriptVersion();\n },\n\n validate() {\n if (!isEligible()) {\n warn('checkout_render_ineligible');\n }\n },\n\n prerenderTemplate: componentTemplate,\n containerTemplate,\n\n props: {\n\n sessionID: {\n type: 'string',\n required: false,\n def() : string {\n return getSessionID();\n },\n queryParam: true\n },\n\n buttonSessionID: {\n type: 'string',\n required: false,\n def() : ?string {\n return getButtonSessionID();\n },\n queryParam: true\n },\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n },\n\n meta: {\n type: 'object',\n required: false,\n def() : Object {\n const meta = window.xprops && window.xprops.meta;\n return meta || {};\n }\n },\n\n stage: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.STAGE || env === ENV.LOCAL) {\n return config.stage;\n }\n }\n },\n\n stageUrl: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.STAGE || env === ENV.LOCAL) {\n return config.stageUrl;\n }\n }\n },\n\n authCode: {\n type: 'string',\n required: false,\n def() : string {\n return config.authCode;\n },\n queryParam: 'code'\n },\n\n localhostUrl: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.LOCAL) {\n return config.localhostUrl;\n }\n }\n },\n\n checkoutUri: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : ?string {\n return config.checkoutUri;\n }\n },\n\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n allowDelegate: true,\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n }\n },\n\n\n client: {\n type: 'object',\n required: false,\n def() : { [string] : string } {\n return {};\n },\n sendToChild: false,\n\n validate(client, props) {\n const env = props.env || config.env;\n\n if (!client[env]) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (client[env].match(/^(.)\\1+$/)) {\n throw new Error(`Invalid client ID: ${ client[env] }`);\n }\n }\n },\n\n payment: {\n type: 'function',\n required: false,\n memoize: true,\n promisify: true,\n queryParam(payment) : ZalgoPromise {\n return payment().then(token => {\n return determineParameterFromToken(token);\n });\n },\n queryValue(payment) : ZalgoPromise {\n return payment();\n },\n childDecorate(payment) : () => ZalgoPromise {\n const token = getQueryParam('token');\n\n return token\n ? memoize(() => ZalgoPromise.resolve(token))\n : payment;\n },\n validate(payment, props) {\n if (!payment && !props.url) {\n throw new Error(`Expected either props.payment or props.url to be passed`);\n }\n },\n alias: 'billingAgreement'\n },\n\n style: {\n type: 'object',\n required: false,\n allowDelegate: true,\n def() : Object {\n return {};\n },\n validate(style) {\n if (style.overlayColor && style.overlayColor !== CHECKOUT_OVERLAY_COLOR.BLACK && style.overlayColor !== CHECKOUT_OVERLAY_COLOR.WHITE) {\n throw new Error(`Invalid background color: ${ style.overlayColor }`);\n }\n }\n },\n\n commit: {\n type: 'boolean',\n required: false\n },\n\n experience: {\n type: 'object',\n required: false,\n def() : Object {\n return {};\n }\n },\n\n fundingSource: {\n type: 'string',\n required: false,\n queryParam: true\n },\n\n fundingOffered: {\n type: 'object',\n required: false,\n queryParam: true,\n def() : Object {\n const elements = Array.prototype.slice.call(document.querySelectorAll(`[${ ATTRIBUTE.FUNDING_SOURCE }]`));\n\n const fundingSources = elements.map(el => {\n return el.getAttribute(ATTRIBUTE.FUNDING_SOURCE);\n });\n\n // $FlowFixMe\n return fundingSources;\n },\n queryValue: (val) => {\n return val.join(',');\n }\n },\n\n onAuthorize: {\n type: 'function',\n required: true,\n once: true,\n \n decorate(original) : Function | void {\n if (original) {\n return function decorateOnAuthorize(data, actions = {}) : ZalgoPromise {\n\n if (data && !data.intent) {\n warn(`checkout_authorize_no_intent`, { paymentID: data.paymentID, token: data.paymentToken });\n }\n\n const close = () => {\n return ZalgoPromise.try(() => {\n if (actions.close) {\n return actions.close();\n }\n }).then(() => {\n return this.closeComponent();\n });\n };\n\n const redirect = (win, url) => {\n return ZalgoPromise.all([\n redir(win || window.top, url || data.returnUrl),\n close()\n ]);\n };\n\n return ZalgoPromise.try(() => {\n\n try {\n const isButton = window.location.href.indexOf('/smart/button') !== -1;\n const isGuest = this.window.location.href.indexOf('/webapps/xoonboarding') !== -1;\n\n if (isButton && isGuest) {\n return request({\n win: this.window,\n method: 'get',\n url: '/webapps/xoonboarding/api/auth'\n }).then(result => {\n if (result && result.data && result.data.access_token) {\n addHeader('x-paypal-internal-euat', result.data.access_token);\n }\n }).catch(() => {\n // pass\n });\n }\n\n } catch (err) {\n // pass\n }\n\n }).then(() => {\n return original.call(this, data, { ...actions, close, redirect });\n }).catch(err => {\n return this.error(err);\n }).finally(() => {\n return this.close();\n });\n };\n }\n }\n },\n\n onShippingChange: {\n type: 'function',\n required: false\n },\n\n onAuth: {\n type: 'function',\n required: false,\n sameDomain: true,\n childDecorate(original : Function) : ?Function {\n if (original) {\n return function wrapOnAuth(data : string | Object) : Object {\n if (typeof data === 'string') {\n data = { accessToken: data };\n }\n return original(data);\n };\n }\n }\n },\n\n accessToken: {\n type: 'function',\n required: false\n },\n\n onCancel: {\n type: 'function',\n required: false,\n once: true,\n noop: true,\n\n decorate(original) : Function {\n return function decorateOnCancel(data, actions = {}) : ZalgoPromise {\n\n const close = () => {\n return ZalgoPromise.try(() => {\n if (actions.close) {\n return actions.close();\n }\n }).then(() => {\n return this.closeComponent();\n });\n };\n\n const redirect = (win, url) => {\n return ZalgoPromise.all([\n redir(win || window.top, url || data.cancelUrl),\n close()\n ]);\n };\n\n return ZalgoPromise.try(() => {\n return original.call(this, data, { ...actions, close, redirect });\n }).finally(() => {\n this.close();\n });\n };\n }\n },\n\n init: {\n type: 'function',\n required: false,\n once: true,\n noop: true,\n\n decorate(original) : Function {\n return function decorateInit(data) : void {\n info('checkout_init');\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CHECKOUT_INIT,\n [ FPTI.KEY.CONTEXT_TYPE ]: FPTI.CONTEXT_TYPE[PAYMENT_TYPE.EC_TOKEN],\n [ FPTI.KEY.TOKEN ]: data.paymentToken,\n [ FPTI.KEY.SELLER_ID ]: data.merchantID,\n [ FPTI.KEY.CONTEXT_ID ]: data.paymentToken\n });\n\n flushLogs();\n\n this.paymentToken = data.paymentToken;\n this.cancelUrl = data.cancelUrl;\n\n return original.apply(this, arguments);\n };\n }\n },\n\n onClose: {\n type: 'function',\n required: false,\n once: true,\n promisify: true,\n noop: true,\n\n decorate(original) : Function {\n return function decorateOnClose(reason) : ZalgoPromise {\n\n const onClose = original.apply(this, arguments);\n\n const CLOSE_REASONS = CONSTANTS.CLOSE_REASONS;\n\n const shouldCancel =\n this.props.onCancel &&\n [ CLOSE_REASONS.CLOSE_DETECTED, CLOSE_REASONS.USER_CLOSED ].indexOf(reason) !== -1;\n\n if (shouldCancel) {\n info(`close_trigger_cancel`);\n return this.props.onCancel({\n paymentToken: this.paymentToken,\n cancelUrl: this.cancelUrl\n }).then(() => onClose);\n }\n\n return onClose;\n };\n }\n },\n\n onError: {\n type: 'function',\n required: false,\n promisify: true,\n noop: true,\n once: true\n },\n\n fallback: {\n type: 'function',\n required: false,\n once: true,\n\n def() : Function {\n return function defaultFallback(url) : ZalgoPromise {\n warn('fallback', { url });\n\n if (getDomainSetting('allow_full_page_fallback')) {\n window.top.location = url;\n return this.close();\n }\n\n return onLegacyPaymentAuthorize(this.props.onAuthorize);\n };\n }\n },\n\n logLevel: {\n type: 'string',\n required: false,\n get value() : string {\n return config.logLevel;\n }\n },\n \n test: {\n type: 'object',\n required: false,\n def() : Object {\n return window.__test__ || { action: 'checkout' };\n }\n },\n\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n }\n },\n\n get dimensions() : { width : string, height : string } {\n\n if (isDevice()) {\n return {\n width: '100%',\n height: '590px'\n };\n }\n\n return {\n width: '500px',\n height: '590px'\n };\n }\n});\n\nif (Checkout.isChild() && Checkout.xchild && Checkout.xprops) {\n\n if (Checkout.xprops && Checkout.xprops.logLevel) {\n setLogLevel(Checkout.xprops.logLevel);\n }\n\n Checkout.xchild.onProps(xprops => {\n patchMethod(xprops, 'onAuthorize', ({ callOriginal, args: [ data ] }) => {\n if (data && !data.intent) {\n warn(`hermes_authorize_no_intent`, { paymentID: data.paymentID, token: data.paymentToken });\n\n try {\n const intent = window.injector.get('$CheckoutCartModel').instance(data.paymentToken).payment_action;\n warn(`hermes_intent`, { paymentID: data.paymentID, token: data.paymentToken, intent });\n } catch (err) {\n // pass\n }\n\n immediateFlush();\n }\n return callOriginal();\n });\n });\n}\n\npatchMethod(Checkout, 'init', ({ args: [ props, _context ], original, context }) => {\n return original.call(context, props, _context, 'body');\n});\n\npatchMethod(Checkout, 'render', ({ args: [ props ], original, context }) => {\n return original.call(context, props, 'body');\n});\n\npatchMethod(Checkout, 'renderTo', ({ args: [ win, props ], original, context }) => {\n\n const payment = props.payment();\n props.payment = () => payment;\n\n return original.call(context, win, props, 'body').catch(err => {\n if (err instanceof PopupOpenError && isPayPalDomain()) {\n Checkout.contexts.iframe = true;\n return original.call(context, win, props, 'body');\n }\n throw err;\n });\n});\n\n","/* @flow */\n\nexport * from './component';\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\n\nimport type { CancelableType } from './types';\n\nexport function getFunctionName (fn : T) : string {\n return fn.name || fn.__name__ || fn.displayName || 'anonymous';\n}\n\nexport function setFunctionName (fn : T, name : string) : T {\n try {\n delete fn.name;\n fn.name = name;\n } catch (err) {\n // pass\n }\n\n fn.__name__ = fn.displayName = name;\n return fn;\n}\n\nexport function base64encode(str : string) : string {\n if (typeof btoa === 'function') {\n return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, (m, p1) => {\n return String.fromCharCode(parseInt(p1, 16));\n }));\n }\n\n if (typeof Buffer !== 'undefined') {\n return Buffer.from(str, 'utf8').toString('base64');\n }\n\n throw new Error(`Can not find window.btoa or Buffer`);\n}\n\nexport function base64decode(str : string) : string {\n if (typeof atob === 'function') {\n return decodeURIComponent(Array.prototype.map.call(atob(str), c => {\n // eslint-disable-next-line prefer-template\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\n }).join(''));\n }\n\n if (typeof Buffer !== 'undefined') {\n return Buffer.from(str, 'base64').toString('utf8');\n }\n\n throw new Error(`Can not find window.atob or Buffer`);\n}\n\nexport function uniqueID() : string {\n\n let chars = '0123456789abcdef';\n\n let randomID = 'xxxxxxxxxx'.replace(/./g, () => {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n });\n\n let timeID = base64encode(\n new Date().toISOString().slice(11, 19).replace('T', '.')\n ).replace(/[^a-zA-Z0-9]/g, '').toLowerCase();\n\n return `${ randomID }_${ timeID }`;\n}\n\nexport function getGlobal() : Object {\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n if (typeof __GLOBAL__ !== 'undefined') {\n return __GLOBAL__;\n }\n throw new Error(`No global found`);\n}\n\nlet objectIDs;\n\nexport function getObjectID(obj : Object) : string {\n\n objectIDs = objectIDs || new WeakMap();\n\n if (obj === null || obj === undefined || (typeof obj !== 'object' && typeof obj !== 'function')) {\n throw new Error(`Invalid object`);\n }\n\n let uid = objectIDs.get(obj);\n\n if (!uid) {\n uid = `${ typeof obj }:${ uniqueID() }`;\n objectIDs.set(obj, uid);\n }\n\n return uid;\n}\n\nfunction serializeArgs(args : Array) : string {\n try {\n return JSON.stringify(Array.prototype.slice.call(args), (subkey, val) => {\n if (typeof val === 'function') {\n return `memoize[${ getObjectID(val) }]`;\n }\n return val;\n });\n } catch (err) {\n throw new Error(`Arguments not serializable -- can not be used to memoize`);\n }\n}\nexport function memoize) => R, X : { (...args : Array) : R, displayName : string, reset : () => void }>(method : F, options : { time? : number, thisNamespace? : boolean } = {}) : X {\n let cacheMap = new WeakMap();\n\n // $FlowFixMe\n let memoizedFunction : X = function memoizedFunction(...args : Array) : R {\n let cache = cacheMap.getOrSet(options.thisNamespace ? this : method, () => ({}));\n\n let key : string = serializeArgs(args);\n\n let cacheTime = options.time;\n if (cache[key] && cacheTime && (Date.now() - cache[key].time) < cacheTime) {\n delete cache[key];\n }\n\n if (cache[key]) {\n return cache[key].value;\n }\n\n let time = Date.now();\n let value = method.apply(this, arguments);\n\n cache[key] = { time, value };\n\n return cache[key].value;\n };\n\n memoizedFunction.reset = () => {\n cacheMap.delete(options.thisNamespace ? this : method);\n };\n\n return setFunctionName(memoizedFunction, `${ getFunctionName(method) }::memoized`);\n}\n\nexport function promiseIdentity(item : ZalgoPromise | T) : ZalgoPromise {\n // $FlowFixMe\n return ZalgoPromise.resolve(item);\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport function memoizePromise(method : (...args : Array) => ZalgoPromise) : ((...args : Array) => ZalgoPromise) {\n let cache = {};\n\n // eslint-disable-next-line flowtype/no-weak-types\n function memoizedPromiseFunction(...args : Array) : ZalgoPromise {\n let key : string = serializeArgs(args);\n\n if (cache.hasOwnProperty(key)) {\n return cache[key];\n }\n\n cache[key] = ZalgoPromise.try(() => method.apply(this, arguments))\n .finally(() => {\n delete cache[key];\n });\n\n return cache[key];\n }\n\n memoizedPromiseFunction.reset = () => {\n cache = {};\n };\n\n return setFunctionName(memoizedPromiseFunction, `${ getFunctionName(method) }::promiseMemoized`);\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport function promisify(method : (...args : Array) => R, options : { name? : string } = {}) : ((...args : Array) => ZalgoPromise) {\n function promisifiedFunction() : ZalgoPromise {\n return ZalgoPromise.try(method, this, arguments);\n }\n\n if (options.name) {\n promisifiedFunction.displayName = `${ options.name }:promisified`;\n }\n\n return setFunctionName(promisifiedFunction, `${ getFunctionName(method) }::promisified`);\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport function inlineMemoize(method : (...args : Array) => R, logic : (...args : Array) => R, args : Array = []) : R {\n // $FlowFixMe\n let cache = method.__inline_memoize_cache__ = method.__inline_memoize_cache__ || {};\n let key = serializeArgs(args);\n\n if (cache.hasOwnProperty(key)) {\n return cache[key];\n }\n \n let result = cache[key] = logic(...args);\n\n return result;\n}\n\n// eslint-disable-next-line no-unused-vars\nexport function noop(...args : Array) {\n // pass\n}\n\nexport function once(method : Function) : Function {\n let called = false;\n\n const onceFunction = function() : mixed {\n if (!called) {\n called = true;\n return method.apply(this, arguments);\n }\n };\n\n return setFunctionName(onceFunction, `${ getFunctionName(method) }::once`);\n}\n\nexport function hashStr(str : string) : number {\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n hash += str[i].charCodeAt(0) * Math.pow((i % 10) + 1, 5);\n }\n return Math.floor(Math.pow(Math.sqrt(hash), 5));\n}\n\nexport function strHashStr(str : string) : string {\n let hash = '';\n\n for (let i = 0; i < str.length; i++) {\n let total = (str[i].charCodeAt(0) * i);\n\n if (str[i + 1]) {\n total += (str[i + 1].charCodeAt(0) * (i - 1));\n }\n\n hash += String.fromCharCode(97 + (Math.abs(total) % 26));\n }\n\n return hash;\n}\n\nexport function match(str : string, pattern : RegExp) : ?string {\n let regmatch = str.match(pattern);\n if (regmatch) {\n return regmatch[1];\n }\n}\n\nexport function awaitKey(obj : Object, key : string) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n\n let value = obj[key];\n\n if (value) {\n return resolve(value);\n }\n\n delete obj[key];\n\n Object.defineProperty(obj, key, {\n\n configurable: true,\n\n set(item) {\n value = item;\n\n if (value) {\n resolve(value);\n }\n },\n\n get() : mixed {\n return value;\n }\n });\n });\n}\n\nexport function stringifyError(err : mixed, level : number = 1) : string {\n\n if (level >= 3) {\n return 'stringifyError stack overflow';\n }\n\n try {\n if (!err) {\n return ``;\n }\n\n if (typeof err === 'string') {\n return err;\n }\n\n if (err instanceof Error) {\n let stack = err && err.stack;\n let message = err && err.message;\n\n if (stack && message) {\n if (stack.indexOf(message) !== -1) {\n return stack;\n } else {\n return `${ message }\\n${ stack }`;\n }\n } else if (stack) {\n return stack;\n } else if (message) {\n return message;\n }\n }\n\n if (err && err.toString && typeof err.toString === 'function') {\n // $FlowFixMe\n return err.toString();\n }\n\n return Object.prototype.toString.call(err);\n\n } catch (newErr) { // eslint-disable-line unicorn/catch-error-name\n return `Error while stringifying error: ${ stringifyError(newErr, level + 1) }`;\n }\n}\n\nexport function stringifyErrorMessage(err : mixed) : string {\n\n let defaultMessage = ``;\n\n if (!err) {\n return defaultMessage;\n }\n\n if (err instanceof Error) {\n return err.message || defaultMessage;\n }\n\n if (typeof err.message === 'string') {\n return err.message || defaultMessage;\n }\n\n return defaultMessage;\n}\n\nexport function stringify(item : mixed) : string {\n if (typeof item === 'string') {\n return item;\n }\n\n if (item && item.toString && typeof item.toString === 'function') {\n // $FlowFixMe\n return item.toString();\n }\n\n return Object.prototype.toString.call(item);\n}\n\nexport function domainMatches(hostname : string, domain : string) : boolean {\n hostname = hostname.split('://')[1];\n let index = hostname.indexOf(domain);\n return (index !== -1 && hostname.slice(index) === domain);\n}\n\nexport function patchMethod(obj : Object, name : string, handler : Function) {\n let original = obj[name];\n\n obj[name] = function patchedMethod() : mixed {\n return handler({\n context: this,\n args: Array.prototype.slice.call(arguments),\n original,\n callOriginal: () => original.apply(this, arguments)\n });\n };\n}\n\nexport function extend(obj : T, source : Object) : T {\n if (!source) {\n return obj;\n }\n\n if (Object.assign) {\n return Object.assign(obj, source);\n }\n\n for (let key in source) {\n if (source.hasOwnProperty(key)) {\n obj[key] = source[key];\n }\n }\n\n return obj;\n}\n\nexport function values(obj : { [string] : T }) : Array {\n let result = [];\n for (let key in obj) {\n if (obj.hasOwnProperty(key)) {\n result.push(obj[key]);\n }\n }\n return result;\n}\n\nexport function perc(pixels : number, percentage : number) : number {\n return Math.round((pixels * percentage) / 100);\n}\n\nexport function min(...args : Array) : number {\n return Math.min(...args);\n}\n\nexport function max(...args : Array) : number {\n return Math.max(...args);\n}\n\nexport function regexMap(str : string, regexp : RegExp, handler : () => T) : Array {\n let results = [];\n\n // $FlowFixMe\n str.replace(regexp, function regexMapMatcher(item) {\n results.push(handler ? handler.apply(null, arguments) : item);\n });\n\n // $FlowFixMe\n return results;\n}\n\nexport function svgToBase64(svg : string) : string {\n return `data:image/svg+xml;base64,${ base64encode(svg) }`;\n}\n\nexport function objFilter(obj : { [string] : T }, filter? : (T, ?string) => mixed = Boolean) : { [string] : R } {\n let result = {};\n\n for (let key in obj) {\n if (!obj.hasOwnProperty(key) || !filter(obj[key], key)) {\n continue;\n }\n\n result[key] = obj[key];\n }\n\n return result;\n}\n\nexport function identity (item : T) : T {\n return item;\n}\n\nexport function regexTokenize(text : string, regexp : RegExp) : Array {\n let result = [];\n text.replace(regexp, token => {\n result.push(token);\n return '';\n });\n return result;\n}\n\nexport function promiseDebounce(method : () => ZalgoPromise | T, delay : number = 50) : () => ZalgoPromise {\n\n let promise;\n let timeout;\n\n const promiseDebounced = function() : ZalgoPromise {\n if (timeout) {\n clearTimeout(timeout);\n }\n\n let localPromise = promise = promise || new ZalgoPromise();\n\n timeout = setTimeout(() => {\n promise = null;\n timeout = null;\n\n ZalgoPromise.try(method).then(\n result => { localPromise.resolve(result); },\n err => { localPromise.reject(err); }\n );\n }, delay);\n\n return localPromise;\n };\n\n return setFunctionName(promiseDebounced, `${ getFunctionName(method) }::promiseDebounced`);\n}\n\nexport function safeInterval(method : Function, time : number) : { cancel : () => void } {\n\n let timeout;\n\n function loop() {\n timeout = setTimeout(() => {\n method();\n loop();\n }, time);\n }\n\n loop();\n\n return {\n cancel() {\n clearTimeout(timeout);\n }\n };\n}\n\nexport function isInteger(str : string) : boolean {\n return Boolean(str.match(/^[0-9]+$/));\n}\n\nexport function isFloat(str : string) : boolean {\n return Boolean(str.match(/^[0-9]+\\.[0-9]+$/));\n}\n\nexport function serializePrimitive(value : string | number | boolean) : string {\n return value.toString();\n}\n\nexport function deserializePrimitive(value : string) : string | number | boolean {\n if (value === 'true') {\n return true;\n } else if (value === 'false') {\n return false;\n } else if (isInteger(value)) {\n return parseInt(value, 10);\n } else if (isFloat(value)) {\n return parseFloat(value);\n } else {\n return value;\n }\n}\n\nexport function dotify(obj : Object, prefix : string = '', newobj : Object = {}) : { [string] : string } {\n prefix = prefix ? `${ prefix }.` : prefix;\n for (let key in obj) {\n if (!obj.hasOwnProperty(key) || obj[key] === undefined || obj[key] === null || typeof obj[key] === 'function') {\n continue;\n } else if (obj[key] && Array.isArray(obj[key]) && obj[key].length && obj[key].every(val => typeof val !== 'object')) {\n newobj[`${ prefix }${ key }[]`] = obj[key].join(',');\n } else if (obj[key] && typeof obj[key] === 'object') {\n newobj = dotify(obj[key], `${ prefix }${ key }`, newobj);\n } else {\n newobj[`${ prefix }${ key }`] = serializePrimitive(obj[key]);\n }\n }\n return newobj;\n}\n\nexport function undotify(obj : { [string] : string }) : Object {\n \n let result = {};\n\n for (let key in obj) {\n if (!obj.hasOwnProperty(key) || typeof obj[key] !== 'string') {\n continue;\n }\n\n let value = obj[key];\n\n if (key.match(/^.+\\[\\]$/)) {\n key = key.slice(0, key.length - 2);\n value = value.split(',').map(deserializePrimitive);\n } else {\n value = deserializePrimitive(value);\n }\n\n let keyResult = result;\n let parts = key.split('.');\n for (let i = 0; i < parts.length; i++) {\n let part = parts[i];\n let isLast = (i + 1 === parts.length);\n let isIndex = !isLast && isInteger(parts[i + 1]);\n\n if (part === 'constructor' || part === 'prototype' || part === '__proto__') {\n throw new Error(`Disallowed key: ${ part }`);\n }\n\n if (isLast) {\n // $FlowFixMe\n keyResult[part] = value;\n } else {\n // $FlowFixMe\n keyResult = keyResult[part] = keyResult[part] || (isIndex ? [] : {});\n }\n }\n }\n\n return result;\n}\n\nexport type EventEmitterType = {\n on : (eventName : string, handler : Function) => CancelableType,\n once : (eventName : string, handler : Function) => CancelableType,\n trigger : (eventName : string, ...args : $ReadOnlyArray) => ZalgoPromise,\n triggerOnce : (eventName : string, ...args : $ReadOnlyArray) => ZalgoPromise\n};\n\nexport function eventEmitter() : EventEmitterType {\n let triggered = {};\n let handlers = {};\n\n return {\n\n on(eventName : string, handler : Function) : CancelableType {\n let handlerList = handlers[eventName] = handlers[eventName] || [];\n\n handlerList.push(handler);\n\n let cancelled = false;\n\n return {\n cancel() {\n if (!cancelled) {\n cancelled = true;\n handlerList.splice(handlerList.indexOf(handler), 1);\n }\n\n }\n };\n },\n\n once(eventName : string, handler : Function) : CancelableType {\n\n let listener = this.on(eventName, () => {\n listener.cancel();\n handler();\n });\n\n return listener;\n },\n\n trigger(eventName : string, ...args : $ReadOnlyArray) : ZalgoPromise {\n\n let handlerList = handlers[eventName];\n let promises = [];\n\n if (handlerList) {\n for (let handler of handlerList) {\n promises.push(ZalgoPromise.try(() => handler(...args)));\n }\n }\n\n return ZalgoPromise.all(promises).then(noop);\n },\n\n triggerOnce(eventName : string, ...args : $ReadOnlyArray) : ZalgoPromise {\n\n if (triggered[eventName]) {\n return ZalgoPromise.resolve();\n }\n\n triggered[eventName] = true;\n return this.trigger(eventName, ...args);\n }\n };\n}\n\nexport function camelToDasherize(string : string) : string {\n return string.replace(/([A-Z])/g, (g) => {\n return `-${ g.toLowerCase() }`;\n });\n}\n\nexport function dasherizeToCamel(string : string) : string {\n return string.replace(/-([a-z])/g, (g) => {\n return g[1].toUpperCase();\n });\n}\n\nexport function capitalizeFirstLetter(string : string) : string {\n return string.charAt(0).toUpperCase() + string.slice(1).toLowerCase();\n}\n\nexport function get(item : Object, path : string, def : mixed) : mixed {\n\n if (!path) {\n return def;\n }\n\n let pathParts = path.split('.');\n\n // Loop through each section of our key path\n\n for (let i = 0; i < pathParts.length; i++) {\n\n // If we have an object, we can get the key\n if (typeof item === 'object' && item !== null) {\n item = item[pathParts[i]];\n\n // Otherwise, we should return the default (undefined if not provided)\n } else {\n return def;\n }\n }\n\n // If our final result is undefined, we should return the default\n\n return item === undefined ? def : item;\n}\n\nexport function safeTimeout(method : Function, time : number) {\n\n let interval = safeInterval(() => {\n time -= 100;\n if (time <= 0) {\n interval.cancel();\n method();\n }\n }, 100);\n}\n\nexport function defineLazyProp(obj : Object | Array, key : string | number, getter : () => T) {\n if (Array.isArray(obj)) {\n if (typeof key !== 'number') {\n throw new TypeError(`Array key must be number`);\n }\n } else if (typeof obj === 'object' && obj !== null) {\n if (typeof key !== 'string') {\n throw new TypeError(`Object key must be string`);\n }\n }\n \n Object.defineProperty(obj, key, {\n configurable: true,\n enumerable: true,\n get: () => {\n // $FlowFixMe\n delete obj[key];\n let value = getter();\n // $FlowFixMe\n obj[key] = value;\n return value;\n },\n set: (value : T) => {\n // $FlowFixMe\n delete obj[key];\n // $FlowFixMe\n obj[key] = value;\n }\n });\n}\n\nexport function arrayFrom(item : Iterable) : Array { // eslint-disable-line no-undef\n return Array.prototype.slice.call(item);\n}\n\nexport function isObject(item : mixed) : boolean {\n return (typeof item === 'object' && item !== null);\n}\n\nexport function isObjectObject(obj : mixed) : boolean {\n return isObject(obj) && Object.prototype.toString.call(obj) === '[object Object]';\n}\n\nexport function isPlainObject(obj : mixed) : boolean {\n if (!isObjectObject(obj)) {\n return false;\n }\n\n // $FlowFixMe\n let constructor = obj.constructor;\n\n if (typeof constructor !== 'function') {\n return false;\n }\n\n let prototype = constructor.prototype;\n\n if (!isObjectObject(prototype)) {\n return false;\n }\n\n if (!prototype.hasOwnProperty('isPrototypeOf')) {\n return false;\n }\n\n return true;\n}\n\nexport function replaceObject | Object> (item : T, replacer : (mixed, string | number, string) => mixed, fullKey : string = '') : T {\n\n if (Array.isArray(item)) {\n let length = item.length;\n let result : Array = [];\n\n for (let i = 0; i < length; i++) {\n\n \n defineLazyProp(result, i, () => {\n let itemKey = fullKey ? `${ fullKey }.${ i }` : `${ i }`;\n let el = item[i];\n\n let child = replacer(el, i, itemKey);\n\n if (isPlainObject(child) || Array.isArray(child)) {\n // $FlowFixMe\n child = replaceObject(child, replacer, itemKey);\n }\n\n return child;\n });\n }\n\n // $FlowFixMe\n return result;\n } else if (isPlainObject(item)) {\n let result = {};\n\n for (let key in item) {\n if (!item.hasOwnProperty(key)) {\n continue;\n }\n\n defineLazyProp(result, key, () => {\n let itemKey = fullKey ? `${ fullKey }.${ key }` : `${ key }`;\n // $FlowFixMe\n let el = item[key];\n\n let child = replacer(el, key, itemKey);\n\n if (isPlainObject(child) || Array.isArray(child)) {\n // $FlowFixMe\n child = replaceObject(child, replacer, itemKey);\n }\n\n return child;\n });\n }\n\n // $FlowFixMe\n return result;\n } else {\n throw new Error(`Pass an object or array`);\n }\n}\n\n\nexport function copyProp(source : Object, target : Object, name : string, def : mixed) {\n if (source.hasOwnProperty(name)) {\n let descriptor = Object.getOwnPropertyDescriptor(source, name);\n // $FlowFixMe\n Object.defineProperty(target, name, descriptor);\n\n } else {\n target[name] = def;\n }\n}\n\ntype RegexResultType = {\n text : string,\n groups : Array,\n start : number,\n end : number,\n length : number,\n replace : (text : string) => string\n};\n\nexport function regex(pattern : string | RegExp, string : string, start : number = 0) : ?RegexResultType {\n\n if (typeof pattern === 'string') {\n // eslint-disable-next-line security/detect-non-literal-regexp\n pattern = new RegExp(pattern);\n }\n\n let result = string.slice(start).match(pattern);\n\n if (!result) {\n return;\n }\n\n // $FlowFixMe\n let index : number = result.index;\n let regmatch = result[0];\n\n return {\n text: regmatch,\n groups: result.slice(1),\n start: start + index,\n end: start + index + regmatch.length,\n length: regmatch.length,\n\n replace(text : string) : string {\n\n if (!regmatch) {\n return '';\n }\n\n return `${ regmatch.slice(0, start + index) }${ text }${ regmatch.slice(index + regmatch.length) }`;\n }\n };\n}\n\nexport function regexAll(pattern : string | RegExp, string : string) : Array {\n\n let matches = [];\n let start = 0;\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n let regmatch = regex(pattern, string, start);\n\n if (!regmatch) {\n break;\n }\n\n matches.push(regmatch);\n start = match.end;\n }\n\n return matches;\n}\n\nexport function isDefined(value : ?mixed) : boolean {\n return value !== null && value !== undefined;\n}\n\nexport function cycle(method : Function) : ZalgoPromise {\n return ZalgoPromise.try(method).then(() => cycle(method));\n}\n\nexport function debounce(method : (...args : Array) => T, time : number = 100) : (...args : Array) => void {\n\n let timeout;\n\n const debounceWrapper = function() {\n clearTimeout(timeout);\n\n timeout = setTimeout(() => {\n return method.apply(this, arguments);\n }, time);\n };\n\n return setFunctionName(debounceWrapper, `${ getFunctionName(method) }::debounced`);\n}\n\nexport function isRegex(item : mixed) : boolean {\n return Object.prototype.toString.call(item) === '[object RegExp]';\n}\n\ntype FunctionProxy = (method : T) => T;\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport let weakMapMemoize : FunctionProxy<*> = (method : (arg : any) => R) : ((...args : Array) => R) => {\n\n let weakmap = new WeakMap();\n\n // eslint-disable-next-line flowtype/no-weak-types\n return function weakmapMemoized(arg : any) : R {\n return weakmap.getOrSet(arg, () => method.call(this, arg));\n };\n};\n\ntype FunctionPromiseProxy) => ZalgoPromise> = (T) => T;\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport let weakMapMemoizePromise : FunctionPromiseProxy<*, *> = (method : (arg : any) => ZalgoPromise) : ((...args : Array) => ZalgoPromise) => {\n\n let weakmap = new WeakMap();\n\n // eslint-disable-next-line flowtype/no-weak-types\n return function weakmapMemoizedPromise(arg : any) : ZalgoPromise {\n return weakmap.getOrSet(arg, () =>\n method.call(this, arg).finally(() => {\n weakmap.delete(arg);\n })\n );\n };\n};\n\nexport function getOrSet(obj : O, key : string, getter : () => T) : T {\n if (obj.hasOwnProperty(key)) {\n return obj[key];\n }\n\n const val = getter();\n obj[key] = val;\n return val;\n}\n\nexport type CleanupType = {|\n set : (string, T) => T, // eslint-disable-line no-undef\n register : (Function) => void,\n all : () => ZalgoPromise\n|};\n\nexport function cleanup(obj : Object) : CleanupType {\n\n const tasks = [];\n let cleaned = false;\n\n return {\n set(name : string, item : T) : T {\n if (!cleaned) {\n obj[name] = item;\n this.register(() => {\n delete obj[name];\n });\n }\n return item;\n },\n\n register(method : Function) {\n if (cleaned) {\n method();\n } else {\n tasks.push(once(method));\n }\n },\n\n all() : ZalgoPromise {\n const results = [];\n cleaned = true;\n\n while (tasks.length) {\n const task = tasks.pop();\n results.push(task());\n }\n\n return ZalgoPromise.all(results).then(noop);\n }\n };\n}\n\nexport function tryCatch(fn : () => T) : {| result : T, error : void |} | {| result : void, error : mixed |} {\n let result;\n let error;\n\n try {\n result = fn();\n } catch (err) {\n error = err;\n }\n \n // $FlowFixMe\n return { result, error };\n}\n\nexport function removeFromArray>(arr : T, item : X) {\n const index = arr.indexOf(item);\n if (index !== -1) {\n arr.splice(index, 1);\n }\n}\n\nexport function assertExists(name : string, thing : void | null | T) : T {\n if (thing === null || typeof thing === 'undefined') {\n throw new Error(`Expected ${ name } to be present`);\n }\n \n return thing;\n}\n \nexport function unique(arr : $ReadOnlyArray) : $ReadOnlyArray {\n const result = {};\n for (const item of arr) {\n // eslint-disable-next-line const-immutable/no-mutation\n result[item] = true;\n }\n return Object.keys(result);\n}\n","/* @flow */\n/* eslint max-lines: off */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { linkFrameWindow, isWindowClosed,\n type SameDomainWindowType, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\n\nimport { inlineMemoize, noop, stringify, capitalizeFirstLetter,\n once, extend, safeInterval, uniqueID, arrayFrom } from './util';\nimport { isDevice } from './device';\nimport { KEY_CODES } from './constants';\nimport type { CancelableType } from './types';\n\ntype ElementRefType = string | HTMLElement;\n\nexport function isDocumentReady() : boolean {\n return Boolean(document.body) && document.readyState === 'complete';\n}\n\nexport function urlEncode(str : string) : string {\n return str.replace(/\\?/g, '%3F').replace(/&/g, '%26').replace(/#/g, '%23').replace(/\\+/g, '%2B');\n}\n\nexport function waitForWindowReady() : ZalgoPromise {\n return inlineMemoize(waitForWindowReady, () : ZalgoPromise => {\n return new ZalgoPromise(resolve => {\n if (isDocumentReady()) {\n resolve();\n }\n\n window.addEventListener('load', () => resolve());\n });\n });\n}\n\nexport function waitForDocumentReady() : ZalgoPromise {\n return inlineMemoize(waitForDocumentReady, () : ZalgoPromise => {\n return new ZalgoPromise(resolve => {\n\n if (isDocumentReady()) {\n return resolve();\n }\n\n let interval = setInterval(() => {\n if (isDocumentReady()) {\n clearInterval(interval);\n return resolve();\n }\n }, 10);\n });\n });\n}\n\nexport function waitForDocumentBody() : ZalgoPromise {\n return waitForDocumentReady().then(() => {\n if (document.body) {\n return document.body;\n }\n\n throw new Error('Document ready but document.body not present');\n });\n}\n\nexport function parseQuery(queryString : string) : Object {\n return inlineMemoize(parseQuery, () : Object => {\n let params = {};\n\n if (!queryString) {\n return params;\n }\n\n if (queryString.indexOf('=') === -1) {\n return params;\n }\n\n for (let pair of queryString.split('&')) {\n pair = pair.split('=');\n\n if (pair[0] && pair[1]) {\n params[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n }\n\n return params;\n }, [ queryString ]);\n}\n\n\nexport function getQueryParam(name : string) : string {\n return parseQuery(window.location.search.slice(1))[name];\n}\n\nexport function urlWillRedirectPage(url : string) : boolean {\n\n if (url.indexOf('#') === -1) {\n return true;\n }\n\n if (url.indexOf('#') === 0) {\n return false;\n }\n\n if (url.split('#')[0] === window.location.href.split('#')[0]) {\n return false;\n }\n\n return true;\n}\n\nexport function formatQuery(obj : { [ string ] : string } = {}) : string {\n\n return Object.keys(obj).filter(key => {\n return typeof obj[key] === 'string';\n }).map(key => {\n return `${ urlEncode(key) }=${ urlEncode(obj[key]) }`;\n }).join('&');\n}\n\nexport function extendQuery(originalQuery : string, props : { [ string ] : string } = {}) : string {\n\n if (!props || !Object.keys(props).length) {\n return originalQuery;\n }\n\n return formatQuery({\n ...parseQuery(originalQuery),\n ...props\n });\n}\n\nexport function extendUrl(url : string, options : { query? : { [string] : string }, hash? : { [string] : string } } = {}) : string {\n\n let query = options.query || {};\n let hash = options.hash || {};\n\n let originalUrl;\n let originalQuery;\n let originalHash;\n\n [ originalUrl, originalHash ] = url.split('#');\n [ originalUrl, originalQuery ] = originalUrl.split('?');\n\n let queryString = extendQuery(originalQuery, query);\n let hashString = extendQuery(originalHash, hash);\n\n if (queryString) {\n originalUrl = `${ originalUrl }?${ queryString }`;\n }\n\n if (hashString) {\n originalUrl = `${ originalUrl }#${ hashString }`;\n }\n\n return originalUrl;\n}\n\nexport function redirect(url : string, win : CrossDomainWindowType = window) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n win.location = url;\n if (!urlWillRedirectPage(url)) {\n resolve();\n }\n });\n}\n\nexport function hasMetaViewPort() : boolean {\n let meta = document.querySelector('meta[name=viewport]');\n\n if (isDevice() && window.screen.width < 660 && !meta) {\n return false;\n }\n\n return true;\n}\n\nexport function isElementVisible(el : HTMLElement) : boolean {\n return Boolean(el.offsetWidth || el.offsetHeight || el.getClientRects().length);\n}\n\nexport function enablePerformance() : boolean {\n return inlineMemoize(enablePerformance, () : boolean => {\n /* eslint-disable compat/compat */\n return Boolean(\n window.performance &&\n performance.now &&\n performance.timing &&\n performance.timing.connectEnd &&\n performance.timing.navigationStart &&\n (Math.abs(performance.now() - Date.now()) > 1000) &&\n (performance.now() - (performance.timing.connectEnd - performance.timing.navigationStart)) > 0\n );\n /* eslint-enable compat/compat */\n });\n}\n\nexport function getPageRenderTime() : ZalgoPromise {\n return waitForDocumentReady().then(() => {\n\n if (!enablePerformance()) {\n return;\n }\n\n let timing = window.performance.timing;\n\n if (timing.connectEnd && timing.domInteractive) {\n return timing.domInteractive - timing.connectEnd;\n }\n });\n}\n\nexport function htmlEncode(html : string = '') : string {\n return html.toString()\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(/\\//g, '/');\n}\n\nexport function isBrowser() : boolean {\n return (typeof window !== 'undefined');\n}\n\nexport function querySelectorAll(selector : string, doc : HTMLElement = window.document) : Array {\n return Array.prototype.slice.call(doc.querySelectorAll(selector));\n}\n\nexport function onClick(element : HTMLElement, handler : (Event) => void) {\n element.addEventListener('touchstart', noop);\n element.addEventListener('click', handler);\n element.addEventListener('keypress', (event : Event) => {\n // $FlowFixMe\n if (event.keyCode === KEY_CODES.ENTER) {\n return handler(event);\n }\n });\n}\n\nexport function getScript({ host = window.location.host, path } : { host? : string, path : string }) : ?HTMLScriptElement {\n return inlineMemoize(getScript, () : ?HTMLScriptElement => {\n\n let url = `${ host }${ path }`;\n let scripts = Array.prototype.slice.call(document.getElementsByTagName('script'));\n\n for (let script of scripts) {\n if (!script.src) {\n continue;\n }\n\n let src = script.src.replace(/^https?:\\/\\//, '').split('?')[0];\n\n if (src === url) {\n return script;\n }\n }\n }, [ path ]);\n}\n\nexport function isLocalStorageEnabled() : boolean {\n return inlineMemoize(isLocalStorageEnabled, () => {\n try {\n if (typeof window === 'undefined') {\n return false;\n }\n\n if (window.localStorage) {\n let value = Math.random().toString();\n window.localStorage.setItem('__test__localStorage__', value);\n let result = window.localStorage.getItem('__test__localStorage__');\n window.localStorage.removeItem('__test__localStorage__');\n if (value === result) {\n return true;\n }\n }\n } catch (err) {\n // pass\n }\n return false;\n });\n}\n\nexport function getBrowserLocales() : Array<{ country? : string, lang : string }> {\n let nav = window.navigator;\n\n let locales = nav.languages\n ? Array.prototype.slice.apply(nav.languages)\n : [];\n\n if (nav.language) {\n locales.push(nav.language);\n }\n\n if (nav.userLanguage) {\n locales.push(nav.userLanguage);\n }\n\n return locales.map(locale => {\n\n if (locale && locale.match(/^[a-z]{2}[-_][A-Z]{2}$/)) {\n let [ lang, country ] = locale.split(/[-_]/);\n return { country, lang };\n }\n\n if (locale && locale.match(/^[a-z]{2}$/)) {\n return { lang: locale };\n }\n\n return null;\n\n }).filter(Boolean);\n}\n\n\nexport function appendChild(container : HTMLElement, child : HTMLElement | Text) {\n container.appendChild(child);\n}\n\nexport function isElement(element : mixed) : boolean {\n\n if (element instanceof window.Element) {\n return true;\n }\n\n if (element !== null && typeof element === 'object' && element.nodeType === 1 && typeof element.style === 'object' && typeof element.ownerDocument === 'object') {\n return true;\n }\n\n return false;\n}\n\nexport function getElementSafe(id : ElementRefType, doc : Document | HTMLElement = document) : ?HTMLElement {\n\n if (isElement(id)) {\n // $FlowFixMe\n return id;\n }\n\n if (typeof id === 'string') {\n return doc.querySelector(id);\n }\n}\n\nexport function getElement(id : ElementRefType, doc : Document | HTMLElement = document) : HTMLElement {\n\n let element = getElementSafe(id, doc);\n\n if (element) {\n return element;\n }\n\n throw new Error(`Can not find element: ${ stringify(id) }`);\n}\n\nexport function elementReady(id : ElementRefType) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n let name = stringify(id);\n let el = getElementSafe(id);\n\n if (el) {\n return resolve(el);\n }\n\n if (isDocumentReady()) {\n return reject(new Error(`Document is ready and element ${ name } does not exist`));\n }\n\n let interval = setInterval(() => {\n\n el = getElementSafe(id);\n\n if (el) {\n clearInterval(interval);\n return resolve(el);\n }\n\n if (isDocumentReady()) {\n clearInterval(interval);\n return reject(new Error(`Document is ready and element ${ name } does not exist`));\n }\n }, 10);\n });\n}\n\nexport function PopupOpenError(message : string) {\n this.message = message;\n}\n\nPopupOpenError.prototype = Object.create(Error.prototype);\n\ntype PopupOptions = {|\n name? : string,\n width? : number,\n height? : number,\n top? : number,\n left? : number,\n status? : 0 | 1,\n resizable? : 0 | 1,\n toolbar? : 0 | 1,\n menubar? : 0 | 1,\n scrollbars? : 0 | 1\n|};\n\nexport function popup(url : string, options? : PopupOptions) : CrossDomainWindowType {\n\n // $FlowFixMe\n options = options || {};\n\n let { width, height } = options;\n\n let top = 0;\n let left = 0;\n\n if (width) {\n if (window.outerWidth) {\n left = Math.round((window.outerWidth - width) / 2) + window.screenX;\n } else if (window.screen.width) {\n left = Math.round((window.screen.width - width) / 2);\n }\n }\n\n if (height) {\n if (window.outerHeight) {\n top = Math.round((window.outerHeight - height) / 2) + window.screenY;\n } else if (window.screen.height) {\n top = Math.round((window.screen.height - height) / 2);\n }\n }\n\n if (width && height) {\n options = {\n top,\n left,\n width,\n height,\n status: 1,\n toolbar: 0,\n menubar: 0,\n resizable: 1,\n scrollbars: 1,\n ...options\n };\n }\n\n let name = options.name || '';\n delete options.name;\n\n // eslint-disable-next-line array-callback-return\n let params = Object.keys(options).map(key => {\n // $FlowFixMe\n if (options[key] !== null && options[key] !== undefined) {\n return `${ key }=${ stringify(options[key]) }`;\n }\n }).filter(Boolean).join(',');\n\n let win;\n\n try {\n win = window.open(url, name, params, true);\n } catch (err) {\n throw new PopupOpenError(`Can not open popup window - ${ err.stack || err.message }`);\n }\n\n if (isWindowClosed(win)) {\n let err = new PopupOpenError(`Can not open popup window - blocked`);\n throw err;\n }\n\n window.addEventListener('unload', () => win.close());\n\n return win;\n}\n\n\nexport function writeToWindow(win : SameDomainWindowType, html : string) {\n try {\n win.document.open();\n win.document.write(html);\n win.document.close();\n } catch (err) {\n try {\n win.location = `javascript: document.open(); document.write(${ JSON.stringify(html) }); document.close();`;\n } catch (err2) {\n // pass\n }\n }\n}\n\nexport function writeElementToWindow(win : SameDomainWindowType, el : HTMLElement) {\n\n let tag = el.tagName.toLowerCase();\n\n if (tag !== 'html') {\n throw new Error(`Expected element to be html, got ${ tag }`);\n }\n\n let documentElement = win.document.documentElement;\n\n for (const child of arrayFrom(documentElement.children)) {\n documentElement.removeChild(child);\n }\n\n for (const child of arrayFrom(el.children)) {\n documentElement.appendChild(child);\n }\n}\n\nexport function setStyle(el : HTMLElement, styleText : string, doc : Document = window.document) {\n // $FlowFixMe\n if (el.styleSheet) {\n // $FlowFixMe\n el.styleSheet.cssText = styleText;\n } else {\n el.appendChild(doc.createTextNode(styleText));\n }\n}\n\nexport type ElementOptionsType = {\n style? : { [ string ] : string },\n id? : string,\n class? : ?Array,\n attributes? : { [ string ] : string },\n styleSheet? : ?string,\n html? : ?string\n};\n\nlet awaitFrameLoadPromises : WeakMap>;\n\nexport function awaitFrameLoad(frame : HTMLIFrameElement) : ZalgoPromise {\n awaitFrameLoadPromises = awaitFrameLoadPromises || new WeakMap();\n\n if (awaitFrameLoadPromises.has(frame)) {\n let promise = awaitFrameLoadPromises.get(frame);\n if (promise) {\n return promise;\n }\n }\n\n let promise = new ZalgoPromise((resolve, reject) => {\n frame.addEventListener('load', () => {\n linkFrameWindow(frame);\n resolve(frame);\n });\n\n frame.addEventListener('error', (err : Event) => {\n if (frame.contentWindow) {\n resolve(frame);\n } else {\n reject(err);\n }\n });\n });\n\n awaitFrameLoadPromises.set(frame, promise);\n\n return promise;\n}\n\nexport function awaitFrameWindow(frame : HTMLIFrameElement) : ZalgoPromise {\n return awaitFrameLoad(frame).then(loadedFrame => {\n\n if (!loadedFrame.contentWindow) {\n throw new Error(`Could not find window in iframe`);\n }\n\n return loadedFrame.contentWindow;\n });\n}\n\nexport function createElement(tag : string = 'div', options : ElementOptionsType = {}, container : ?HTMLElement) : HTMLElement {\n\n tag = tag.toLowerCase();\n let element = document.createElement(tag);\n\n if (options.style) {\n extend(element.style, options.style);\n }\n\n if (options.class) {\n element.className = options.class.join(' ');\n }\n\n if (options.id) {\n element.setAttribute('id', options.id);\n }\n\n if (options.attributes) {\n for (let key of Object.keys(options.attributes)) {\n element.setAttribute(key, options.attributes[key]);\n }\n }\n\n if (options.styleSheet) {\n setStyle(element, options.styleSheet);\n }\n\n if (container) {\n appendChild(container, element);\n }\n\n if (options.html) {\n if (tag === 'iframe') {\n // $FlowFixMe\n if (!container || !element.contentWindow) {\n throw new Error(`Iframe html can not be written unless container provided and iframe in DOM`);\n }\n\n // $FlowFixMe\n writeToWindow(element.contentWindow, options.html);\n\n } else {\n element.innerHTML = options.html;\n }\n }\n\n return element;\n}\n\n\nexport type IframeElementOptionsType = {\n style? : { [ string ] : string },\n class? : ?Array,\n attributes? : { [ string ] : string },\n styleSheet? : ?string,\n html? : ?string,\n url? : ?string\n};\n\nexport function iframe(options : IframeElementOptionsType = {}, container : ?HTMLElement) : HTMLIFrameElement {\n\n let attributes = options.attributes || {};\n let style = options.style || {};\n\n let frame = createElement('iframe', {\n attributes: {\n allowTransparency: 'true',\n ...attributes\n },\n style: {\n backgroundColor: 'transparent',\n border: 'none',\n ...style\n },\n html: options.html,\n class: options.class\n });\n\n const isIE = window.navigator.userAgent.match(/MSIE|Edge/i);\n \n if (!frame.hasAttribute('id')) {\n frame.setAttribute('id', uniqueID());\n }\n\n // $FlowFixMe\n awaitFrameLoad(frame);\n\n if (container) {\n let el = getElement(container);\n el.appendChild(frame);\n }\n\n if (options.url || isIE) {\n frame.setAttribute('src', options.url || 'about:blank');\n }\n\n // $FlowFixMe\n return frame;\n}\n\nexport function addEventListener(obj : HTMLElement, event : string, handler : (event : Event) => void) : CancelableType {\n obj.addEventListener(event, handler);\n return {\n cancel() {\n obj.removeEventListener(event, handler);\n }\n };\n}\n\nexport function bindEvents(element : HTMLElement, eventNames : Array, handler : (event : Event) => void) : CancelableType {\n\n handler = once(handler);\n\n for (let eventName of eventNames) {\n element.addEventListener(eventName, handler);\n }\n\n return {\n cancel: once(() => {\n for (let eventName of eventNames) {\n element.removeEventListener(eventName, handler);\n }\n })\n };\n}\n\nconst VENDOR_PREFIXES = [ 'webkit', 'moz', 'ms', 'o' ];\n\nexport function setVendorCSS(element : HTMLElement, name : string, value : string) {\n\n // $FlowFixMe\n element.style[name] = value;\n\n let capitalizedName = capitalizeFirstLetter(name);\n\n for (let prefix of VENDOR_PREFIXES) {\n // $FlowFixMe\n element.style[`${ prefix }${ capitalizedName }`] = value;\n }\n}\n\nconst ANIMATION_START_EVENTS = [ 'animationstart', 'webkitAnimationStart', 'oAnimationStart', 'MSAnimationStart' ];\nconst ANIMATION_END_EVENTS = [ 'animationend', 'webkitAnimationEnd', 'oAnimationEnd', 'MSAnimationEnd' ];\n\nexport function animate(element : ElementRefType, name : string, clean : (Function) => void, timeout : number = 1000) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n let el = getElement(element);\n\n if (!el) {\n return resolve();\n }\n\n let hasStarted = false;\n\n let startTimeout;\n let endTimeout;\n let startEvent;\n let endEvent;\n\n function cleanUp() {\n clearTimeout(startTimeout);\n clearTimeout(endTimeout);\n startEvent.cancel();\n endEvent.cancel();\n }\n\n startEvent = bindEvents(el, ANIMATION_START_EVENTS, event => {\n\n // $FlowFixMe\n if (event.target !== el || event.animationName !== name) {\n return;\n }\n\n clearTimeout(startTimeout);\n\n event.stopPropagation();\n\n startEvent.cancel();\n hasStarted = true;\n\n endTimeout = setTimeout(() => {\n cleanUp();\n resolve();\n }, timeout);\n });\n\n endEvent = bindEvents(el, ANIMATION_END_EVENTS, event => {\n\n // $FlowFixMe\n if (event.target !== el || event.animationName !== name) {\n return;\n }\n\n cleanUp();\n\n // $FlowFixMe\n if (typeof event.animationName === 'string' && event.animationName !== name) {\n return reject(`Expected animation name to be ${ name }, found ${ event.animationName }`);\n }\n\n return resolve();\n });\n\n setVendorCSS(el, 'animationName', name);\n\n startTimeout = setTimeout(() => {\n if (!hasStarted) {\n cleanUp();\n return resolve();\n }\n }, 200);\n\n if (clean) {\n clean(cleanUp);\n }\n });\n}\n\nconst STYLE = {\n\n DISPLAY: {\n NONE: 'none',\n BLOCK: 'block'\n },\n\n VISIBILITY: {\n VISIBLE: 'visible',\n HIDDEN: 'hidden'\n },\n\n IMPORTANT: 'important'\n};\n\nexport function makeElementVisible(element : HTMLElement) {\n element.style.setProperty('visibility', '');\n}\n\nexport function makeElementInvisible(element : HTMLElement) {\n element.style.setProperty('visibility', STYLE.VISIBILITY.HIDDEN, STYLE.IMPORTANT);\n}\n\n\nexport function showElement(element : HTMLElement) {\n element.style.setProperty('display', '');\n}\n\nexport function hideElement(element : HTMLElement) {\n element.style.setProperty('display', STYLE.DISPLAY.NONE, STYLE.IMPORTANT);\n}\n\nexport function destroyElement(element : HTMLElement) {\n if (element && element.parentNode) {\n element.parentNode.removeChild(element);\n }\n}\n\nexport function showAndAnimate(element : HTMLElement, name : string, clean : (Function) => void) : ZalgoPromise {\n let animation = animate(element, name, clean);\n showElement(element);\n return animation;\n}\n\nexport function animateAndHide(element : HTMLElement, name : string, clean : (Function) => void) : ZalgoPromise {\n return animate(element, name, clean).then(() => {\n hideElement(element);\n });\n}\n\nexport function addClass(element : HTMLElement, name : string) {\n element.classList.add(name);\n}\n\nexport function removeClass(element : HTMLElement, name : string) {\n element.classList.remove(name);\n}\n\nexport function isElementClosed(el : HTMLElement) : boolean {\n if (!el || !el.parentNode) {\n return true;\n }\n return false;\n}\n\nexport function watchElementForClose(element : HTMLElement, handler : () => mixed) : CancelableType {\n handler = once(handler);\n\n let interval;\n\n if (isElementClosed(element)) {\n handler();\n } else {\n interval = safeInterval(() => {\n if (isElementClosed(element)) {\n interval.cancel();\n handler();\n }\n }, 50);\n }\n\n return {\n cancel() {\n if (interval) {\n interval.cancel();\n }\n }\n };\n}\n\nexport function fixScripts(el : HTMLElement, doc : Document = window.document) {\n for (let script of querySelectorAll('script', el)) {\n let parentNode = script.parentNode;\n\n if (!parentNode) {\n continue;\n }\n\n let newScript = doc.createElement('script');\n newScript.text = script.textContent;\n parentNode.replaceChild(newScript, script);\n }\n}\n\ntype OnResizeOptions = {|\n width? : boolean,\n height? : boolean,\n interval? : number,\n win? : SameDomainWindowType\n|};\n\nexport function onResize(el : HTMLElement, handler : ({ width : number, height : number }) => void, { width = true, height = true, interval = 100, win = window } : OnResizeOptions = {}) : {} {\n let currentWidth = el.offsetWidth;\n let currentHeight = el.offsetHeight;\n\n handler({ width: currentWidth, height: currentHeight });\n\n let check = () => {\n let newWidth = el.offsetWidth;\n let newHeight = el.offsetHeight;\n\n if ((width && newWidth !== currentWidth) || (height && newHeight !== currentHeight)) {\n handler({ width: newWidth, height: newHeight });\n }\n\n currentWidth = newWidth;\n currentHeight = newHeight;\n };\n\n let observer;\n let timeout;\n\n if (typeof win.ResizeObserver !== 'undefined') {\n observer = new win.ResizeObserver(check);\n observer.observe(el);\n\n } else if (typeof win.MutationObserver !== 'undefined') {\n observer = new win.MutationObserver(check);\n observer.observe(el, {\n attributes: true,\n childList: true,\n subtree: true,\n characterData: false\n });\n win.addEventListener('resize', check);\n } else {\n let loop = () => {\n check();\n timeout = setTimeout(loop, interval);\n };\n loop();\n }\n\n return {\n cancel: () => {\n observer.disconnect();\n window.removeEventListener('resize', check);\n clearTimeout(timeout);\n }\n };\n}\n\nexport function getResourceLoadTime(url : string) : ?number {\n\n if (!enablePerformance()) {\n return;\n }\n\n if (!window.performance || typeof window.performance.getEntries !== 'function') {\n return;\n }\n\n const entries = window.performance.getEntries();\n\n for (let i = 0; i < entries.length; i++) {\n const entry = entries[i];\n\n if (entry && entry.name && entry.name.indexOf(url) === 0 && typeof entry.duration === 'number') {\n return Math.floor(entry.duration);\n }\n }\n}\n","/* @flow */\n\nexport * from './device';\nexport * from './dom';\nexport * from './experiment';\nexport * from './global';\nexport * from './storage';\nexport * from './util';\nexport * from './http';\nexport * from './types';\nexport * from './decorators';\nexport * from './css';\nexport * from './test';\n","/* @flow */\n\nexport function safeIndexOf(collection : Array, item : T) : number {\n for (let i = 0; i < collection.length; i++) {\n\n try {\n if (collection[i] === item) {\n return i;\n }\n } catch (err) {\n // pass\n }\n }\n\n return -1;\n}\n\n// eslint-disable-next-line no-unused-vars\nexport function noop(...args : Array) {\n // pass\n}\n","/* @flow */\n\nimport { isWindow, isWindowClosed } from 'cross-domain-utils/src';\n\nimport { hasNativeWeakMap } from './native';\nimport { noop, safeIndexOf } from './util';\n\nexport class CrossDomainSafeWeakMap {\n\n name : string\n weakmap : ?WeakMap\n keys : Array\n values : Array\n\n constructor() {\n // eslint-disable-next-line no-bitwise\n this.name = `__weakmap_${ Math.random() * 1e9 >>> 0 }__`;\n\n if (hasNativeWeakMap()) {\n try {\n this.weakmap = new WeakMap();\n } catch (err) {\n // pass\n }\n }\n\n this.keys = [];\n this.values = [];\n }\n\n _cleanupClosedWindows() {\n\n let weakmap = this.weakmap;\n let keys = this.keys;\n\n for (let i = 0; i < keys.length; i++) {\n let value = keys[i];\n\n if (isWindow(value) && isWindowClosed(value)) {\n\n if (weakmap) {\n try {\n weakmap.delete(value);\n } catch (err) {\n // pass\n }\n }\n\n keys.splice(i, 1);\n this.values.splice(i, 1);\n\n i -= 1;\n }\n }\n }\n\n isSafeToReadWrite(key : K) : boolean {\n\n if (isWindow(key)) {\n return false;\n }\n\n try {\n noop(key && key.self);\n noop(key && key[this.name]);\n } catch (err) {\n return false;\n }\n\n return true;\n }\n\n set(key : K, value : V) {\n\n if (!key) {\n throw new Error(`WeakMap expected key`);\n }\n\n let weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n weakmap.set(key, value);\n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (this.isSafeToReadWrite(key)) {\n try {\n let name = this.name;\n let entry = key[name];\n\n if (entry && entry[0] === key) {\n entry[1] = value;\n } else {\n Object.defineProperty(key, name, {\n value: [ key, value ],\n writable: true\n });\n }\n\n return;\n\n } catch (err) {\n // pass\n }\n }\n\n this._cleanupClosedWindows();\n\n let keys = this.keys;\n let values = this.values;\n let index = safeIndexOf(keys, key);\n\n if (index === -1) {\n keys.push(key);\n values.push(value);\n } else {\n values[index] = value;\n }\n }\n\n get(key : K) : V | void {\n\n if (!key) {\n throw new Error(`WeakMap expected key`);\n }\n\n let weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n if (weakmap.has(key)) {\n return weakmap.get(key);\n }\n \n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (this.isSafeToReadWrite(key)) {\n try {\n let entry = key[this.name];\n\n if (entry && entry[0] === key) {\n return entry[1];\n }\n\n return;\n } catch (err) {\n // pass\n }\n }\n\n this._cleanupClosedWindows();\n\n let keys = this.keys;\n let index = safeIndexOf(keys, key);\n\n if (index === -1) {\n return;\n }\n\n return this.values[index];\n }\n\n delete(key : K) {\n\n if (!key) {\n throw new Error(`WeakMap expected key`);\n }\n\n let weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n weakmap.delete(key);\n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (this.isSafeToReadWrite(key)) {\n try {\n let entry = key[this.name];\n\n if (entry && entry[0] === key) {\n entry[0] = entry[1] = undefined;\n }\n } catch (err) {\n // pass\n }\n }\n\n this._cleanupClosedWindows();\n\n let keys = this.keys;\n let index = safeIndexOf(keys, key);\n\n if (index !== -1) {\n keys.splice(index, 1);\n this.values.splice(index, 1);\n }\n }\n\n has(key : K) : boolean {\n\n if (!key) {\n throw new Error(`WeakMap expected key`);\n }\n\n let weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n if (weakmap.has(key)) {\n return true;\n }\n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (this.isSafeToReadWrite(key)) {\n try {\n let entry = key[this.name];\n\n if (entry && entry[0] === key) {\n return true;\n }\n\n return false;\n } catch (err) {\n // pass\n }\n }\n\n this._cleanupClosedWindows();\n\n let index = safeIndexOf(this.keys, key);\n return index !== -1;\n }\n\n getOrSet(key : K, getter : () => V) : V {\n if (this.has(key)) {\n // $FlowFixMe\n return this.get(key);\n }\n\n let value = getter();\n this.set(key, value);\n return value;\n }\n}\n","/* @flow */\n\nexport function hasNativeWeakMap() : boolean {\n\n if (typeof WeakMap === 'undefined') {\n return false;\n }\n\n if (typeof Object.freeze === 'undefined') {\n return false;\n }\n\n try {\n\n let testWeakMap = new WeakMap();\n let testKey = {};\n let testValue = '__testvalue__';\n\n Object.freeze(testKey);\n\n testWeakMap.set(testKey, testValue);\n\n if (testWeakMap.get(testKey) === testValue) {\n return true;\n }\n\n return false;\n\n } catch (err) {\n\n return false;\n }\n}\n","/* @flow */\n\nexport { CrossDomainSafeWeakMap as WeakMap } from './weakmap';\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst P24_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#d03238',\n secondary: '#b3b1b1'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#d03238',\n secondary: '#b3b1b1'\n }\n};\n\nexport function p24Logo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!P24_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } p24 logo available`);\n }\n\n const { primary, secondary } = P24_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst SOFORT_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#2C2E2F',\n secondary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#EB6F93',\n secondary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#EB6F93',\n secondary: '#FFFFFF'\n }\n};\n\nexport function sofortLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!SOFORT_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } sofort logo available`);\n }\n\n const { primary, secondary } = SOFORT_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst IDEAL_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff',\n tertiary: '#2C2E2F'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#000000',\n secondary: '#FFFFFF',\n tertiary: '#CD0067'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#000000',\n secondary: '#FFFFFF',\n tertiary: '#CD0067'\n }\n};\n\nexport function idealLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!IDEAL_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } ideal logo available`);\n }\n\n const { primary, secondary, tertiary } = IDEAL_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst GIROPAY_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#000000',\n tertiary: '#2C2E2F'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#FFFFFF',\n secondary: '#003A7D',\n tertiary: '#ED1C24'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#FFFFFF',\n secondary: '#003A7D',\n tertiary: '#ED1C24'\n }\n};\n\nexport function giropayLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!GIROPAY_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } giropay logo available`);\n }\n\n const { primary, secondary, tertiary } = GIROPAY_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst EPS_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff',\n tertiary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#71706F',\n secondary: '#FFFFFF',\n tertiary: '#C8036F'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#71706F',\n secondary: '#FFFFFF',\n tertiary: '#C8036F'\n }\n};\n\nexport function epsLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!EPS_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } eps logo available`);\n }\n\n const { primary, secondary, tertiary } = EPS_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst MYBANK_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff',\n tertiary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#1A4B67',\n secondary: '#00C0EE',\n tertiary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#1A4B67',\n secondary: '#00C0EE',\n tertiary: '#FFFFFF'\n }\n};\n\nexport function mybankLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!MYBANK_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } mybank logo available`);\n }\n\n const { primary, secondary, tertiary } = MYBANK_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst BANCONTACT_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#1A4B67',\n secondary: '#00C0EE'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#005498',\n secondary: '#FFD800'\n }\n};\n\nexport function bancontactLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!BANCONTACT_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } bancontact logo available`);\n }\n\n const { primary, secondary } = BANCONTACT_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst PAYU_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.DEFAULT ]: {\n primary: '#A6d71c',\n secondary: '#3C932A',\n tertiary: '#6CC62E',\n quaternary: '#278D30'\n },\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#FFFFFF',\n secondary: '#FFFFFF',\n tertiary: '#000000',\n quaternary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#A6d71c',\n secondary: '#3C932A',\n tertiary: '#6CC62E',\n quaternary: '#278D30'\n }\n};\n\nexport function payuLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!PAYU_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } payu logo available`);\n }\n\n const { primary, secondary, tertiary, quaternary } = PAYU_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst VERKKOPANKKI_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#FFFFFF',\n secondary: '#FFFFFF',\n tertiary: '#000000',\n quaternary: '#000000',\n quinary: '#FFFFFF',\n senary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#FFFFFF',\n secondary: '#CACCC8',\n tertiary: '#2D59A1',\n quaternary: '#1F3364',\n quinary: '#4E4E4E',\n senary: '#1B4482'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#FFFFFF',\n secondary: '#CACCC8',\n tertiary: '#2D59A1',\n quaternary: '#1F3364',\n quinary: '#4E4E4E',\n senary: '#1B4482'\n }\n};\n\nexport function verkkopankkiLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!VERKKOPANKKI_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } verkkopankki logo available`);\n }\n\n const { primary, secondary, tertiary, quaternary, quinary, senary } = VERKKOPANKKI_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst BLIK_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#FFFFFF',\n secondary: '#FFFFFF',\n tertiary: '#000000',\n quaternary: '#000000',\n quinary: '#000000',\n senary: '#000000'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#4D4D4F',\n secondary: '#000000',\n tertiary: '#FF0000',\n quaternary: '#E83E49',\n quinary: '#FF00FF',\n senary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#4D4D4F',\n secondary: '#000000',\n tertiary: '#FF0000',\n quaternary: '#E83E49',\n quinary: '#FF00FF',\n senary: '#FFFFFF'\n }\n};\n\nexport function blikLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!BLIK_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } blik logo available`);\n }\n\n const { primary, secondary, tertiary, quaternary, quinary, senary } = BLIK_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst TRUSTLY_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#FFFFFF',\n secondary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#020202',\n secondary: '#64CC07'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#020202',\n secondary: '#64CC07'\n }\n};\n\nexport function trustlyLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!TRUSTLY_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } trustly logo available`);\n }\n\n const { primary, secondary } = TRUSTLY_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst MAXIMA_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#004A91',\n secondary: '#ED1921'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#004A91',\n secondary: '#ED1921'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#004A91',\n secondary: '#ED1921'\n }\n};\n\nexport function maximaLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!MAXIMA_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } maxima logo available`);\n }\n\n const { primary, secondary } = MAXIMA_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst BOLETO_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#1A1919',\n secondary: '#FFFFFE'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#1A1919',\n secondary: '#FFFFFE'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#1A1919',\n secondary: '#FFFFFE'\n }\n};\n\nexport function boletoLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!BOLETO_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } boleto logo available`);\n }\n\n const { primary, secondary } = BOLETO_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst OXXO_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#EC1D24',\n secondary: '#EDA42D'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#EC1D24',\n secondary: '#EDA42D'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#EC1D24',\n secondary: '#EDA42D'\n }\n};\n\nexport function oxxoLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!OXXO_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } oxxo logo available`);\n }\n\n const { primary, secondary } = OXXO_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst PAYPAL_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.BLUE ]: {\n primary: '#003087',\n secondary: '#009cde'\n },\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#333030',\n secondary: '#636363'\n }\n};\n\nexport function paypalLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!PAYPAL_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } paypal logo available`);\n }\n\n const { primary, secondary } = PAYPAL_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n );\n}\n","\n/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR, COUNTRY } from '../../constants';\nimport type { LocaleType } from '../../types';\n\nconst CREDIT_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.BLUE ]: {\n primary: '#003087',\n secondary: '#009cde'\n },\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#333030',\n secondary: '#636363'\n }\n};\n\nexport function creditLogo({ logoColor, locale } : { logoColor : $Values, locale? : LocaleType }) : JsxHTMLNode {\n\n if (!CREDIT_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } credit logo available`);\n }\n\n const { country } = locale || {};\n const { primary } = CREDIT_LOGO_COLORS[logoColor];\n\n switch (country) {\n case COUNTRY.DE:\n return (\n \n \n \n \n \n \n \n );\n default:\n return (\n \n \n \n \n \n \n \n \n );\n\n }\n}\n","/* @flow */\n\nimport { BUTTON_LOGO, BUTTON_LOGO_COLOR } from '../../constants';\n\nimport { p24Logo } from './p24';\nimport { sofortLogo } from './sofort';\nimport { idealLogo } from './ideal';\nimport { giropayLogo } from './giropay';\nimport { epsLogo } from './eps';\nimport { mybankLogo } from './mybank';\nimport { bancontactLogo } from './bancontact';\nimport { payuLogo } from './payu';\nimport { verkkopankkiLogo } from './verkkopankki';\nimport { blikLogo } from './blik';\nimport { trustlyLogo } from './trustly';\nimport { maximaLogo } from './maxima';\nimport { boletoLogo } from './boleto';\nimport { oxxoLogo } from './oxxo';\nimport pp_white from './pp_white.svg';\nimport pp_blue from './pp_blue.svg';\nimport pp_black from './pp_black.svg';\nimport { paypalLogo } from './paypal';\nimport { creditLogo } from './credit';\nimport venmo_white from './venmo_white.svg';\nimport itau from './itau.svg';\nimport venmo_blue from './venmo_blue.svg';\nimport elv from './elv.svg';\nimport elv_white from './elv_white.svg';\n\nexport const fundingLogos = {\n\n [ BUTTON_LOGO.PP ]: {\n [ BUTTON_LOGO_COLOR.WHITE ]: pp_white,\n [ BUTTON_LOGO_COLOR.BLUE ]: pp_blue,\n [ BUTTON_LOGO_COLOR.BLACK ]: pp_black\n },\n\n [ BUTTON_LOGO.PAYPAL ]: paypalLogo,\n\n [ BUTTON_LOGO.CREDIT ]: creditLogo,\n\n [ BUTTON_LOGO.VENMO ]: {\n [ BUTTON_LOGO_COLOR.WHITE ]: venmo_white,\n [ BUTTON_LOGO_COLOR.BLUE ]: venmo_blue\n },\n [ BUTTON_LOGO.ITAU ]: {\n [ BUTTON_LOGO_COLOR.WHITE ]: itau\n },\n\n [ BUTTON_LOGO.IDEAL ]: idealLogo,\n\n [ BUTTON_LOGO.ELV ]: {\n [ BUTTON_LOGO_COLOR.ANY ]: elv,\n [ BUTTON_LOGO_COLOR.WHITE ]: elv_white\n },\n\n [ BUTTON_LOGO.BANCONTACT ]: bancontactLogo,\n\n [ BUTTON_LOGO.GIROPAY ]: giropayLogo,\n\n [ BUTTON_LOGO.SOFORT ]: sofortLogo,\n\n [ BUTTON_LOGO.EPS ]: epsLogo,\n\n [ BUTTON_LOGO.MYBANK ]: mybankLogo,\n\n [ BUTTON_LOGO.P24 ]: p24Logo,\n\n [ BUTTON_LOGO.PAYU ]: payuLogo,\n\n [ BUTTON_LOGO.VERKKOPANKKI ]: verkkopankkiLogo,\n\n [ BUTTON_LOGO.BLIK ]: blikLogo,\n\n [ BUTTON_LOGO.TRUSTLY ]: trustlyLogo,\n\n [ BUTTON_LOGO.MAXIMA ]: maximaLogo,\n\n [ BUTTON_LOGO.BOLETO ]: boletoLogo,\n\n [ BUTTON_LOGO.OXXO ]: oxxoLogo\n\n};\n","/* @flow */\n\nimport { CARD } from '../../constants';\n\nimport visa from './visa.svg';\nimport amex from './amex.svg';\nimport mastercard from './mastercard.svg';\nimport maestro from './maestro.svg';\nimport discover from './discover.svg';\nimport hiper from './hiper.svg';\nimport elo from './elo.svg';\nimport jcb from './jcb.svg';\nimport cup from './cup.svg';\n\nexport const cardLogos = {\n [ CARD.VISA ]: visa,\n [ CARD.AMEX ]: amex,\n [ CARD.MASTERCARD ]: mastercard,\n [ CARD.MAESTRO ]: maestro,\n [ CARD.DISCOVER ]: discover,\n [ CARD.HIPER ]: hiper,\n [ CARD.ELO ]: elo,\n [ CARD.JCB ]: jcb,\n [ CARD.CUP ]: cup\n};\n","/* @flow */\n\nexport * from './fundingLogos';\nexport * from './cardLogos';\n","/* @flow */\n\nimport { config } from '../config';\n\nimport { uniqueID, isLocalStorageEnabled } from './util';\nimport { getQueryParam } from './dom';\nimport { isPayPalDomain } from './security';\n\nconst LOCAL_STORAGE_KEY = '__paypal_storage__';\nconst SESSION_KEY = '__paypal_session__';\nconst GLOBAL_KEY = '__paypal_global__';\n\nlet accessedStorage;\n\nexport function getStorageState(handler : (storage : Object) => T) : T {\n\n const localStorageEnabled = isLocalStorageEnabled();\n let storage;\n\n if (accessedStorage) {\n storage = accessedStorage;\n }\n\n if (!storage && localStorageEnabled) {\n const rawStorage = window.localStorage.getItem(LOCAL_STORAGE_KEY);\n\n if (rawStorage) {\n storage = JSON.parse(rawStorage);\n }\n }\n\n if (!storage) {\n storage = window[LOCAL_STORAGE_KEY];\n }\n\n if (!storage) {\n storage = {\n id: uniqueID()\n };\n }\n\n if (!storage.id) {\n storage.id = uniqueID();\n }\n\n accessedStorage = storage;\n\n const result = handler(storage);\n\n if (localStorageEnabled) {\n window.localStorage.setItem(LOCAL_STORAGE_KEY, JSON.stringify(storage));\n } else {\n window[LOCAL_STORAGE_KEY] = storage;\n }\n\n accessedStorage = null;\n\n return result;\n}\n\nexport function getStorageID() : string {\n return getStorageState(storage => storage.id);\n}\n\nexport function getSession(handler : (state : Object) => T) : T {\n return getStorageState(storage => {\n\n let session = storage[SESSION_KEY];\n const now = Date.now();\n\n if (session && ((now - session.created) > config.session_uid_lifetime)) {\n session = null;\n }\n\n if (!session) {\n session = {\n guid: uniqueID(),\n created: now\n };\n }\n\n storage[SESSION_KEY] = session;\n\n return handler(session);\n });\n}\n\nexport function getSessionState(handler : (state : Object) => T) : T {\n return getSession(session => {\n session.state = session.state || {};\n return handler(session.state);\n });\n}\n\nexport function getSessionID() : string {\n\n const xprops = window.xprops;\n\n if (xprops && xprops.sessionID) {\n return xprops.sessionID;\n }\n\n const querySessionID = getQueryParam('sessionID');\n\n if (isPayPalDomain() && querySessionID) {\n return querySessionID;\n }\n\n return getSession(session => session.guid);\n}\n\nexport function getButtonSessionID() : ?string {\n\n if (window.xprops && window.xprops.buttonSessionID) {\n return window.xprops.buttonSessionID;\n }\n\n const querySessionID = getQueryParam('buttonSessionID');\n\n if (isPayPalDomain() && querySessionID) {\n return querySessionID;\n }\n}\n\nexport function getGlobalState(handler : (state : Object) => T) : T {\n window[GLOBAL_KEY] = window[GLOBAL_KEY] || {};\n return handler(window[GLOBAL_KEY]);\n}\n","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object.keys(descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object.defineProperty(target, property, desc);\n desc = null;\n }\n\n return desc;\n}","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { on } from 'post-robot/src';\nimport { type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { copyProp, eventEmitter, type EventEmitterType, stringifyError, noop } from '../lib';\nimport type { CancelableType } from '../types';\n\nimport type { Component } from './component';\n\ntype CleanupType = {\n set : (string, T) => T, // eslint-disable-line no-undef\n register : (string | Function, ?Function) => void,\n hasTasks : () => boolean,\n all : () => ZalgoPromise,\n run : (string) => ZalgoPromise\n};\n\nfunction cleanup(obj : Object) : CleanupType {\n\n let tasks = [];\n let cleaned = false;\n\n return {\n\n set(name : string, item : T) : T {\n\n if (cleaned) {\n return item;\n }\n\n obj[name] = item;\n this.register(() => {\n delete obj[name];\n });\n return item;\n },\n\n register(name : string | Function, method : ?Function) {\n\n if (typeof name === 'function') {\n method = name;\n name = '';\n }\n\n if (typeof method !== 'function') {\n throw new TypeError(`Expected to be passed function to clean.register`);\n }\n\n if (cleaned) {\n method();\n return;\n }\n\n tasks.push({\n complete: false,\n\n name,\n\n run() {\n\n if (this.complete) {\n return;\n }\n\n this.complete = true;\n\n if (method) {\n method();\n }\n }\n });\n },\n\n hasTasks() : boolean {\n return Boolean(tasks.filter(item => !item.complete).length);\n },\n\n all() : ZalgoPromise {\n let results = [];\n\n cleaned = true;\n\n while (tasks.length) {\n results.push(tasks.pop().run());\n }\n\n return ZalgoPromise.all(results).then(() => { /* pass */ });\n },\n\n run(name : string) : ZalgoPromise {\n let results = [];\n\n for (let item of tasks) {\n if (item.name === name) {\n results.push(item.run());\n }\n }\n\n return ZalgoPromise.all(results).then(noop);\n }\n };\n}\n\n\n/* Base Component\n --------------\n\n Methods that are common between child and parent components, but are not generic or uncoupled enough to live in\n a separate library.\n*/\n\nexport class BaseComponent

{\n\n clean : CleanupType\n event : EventEmitterType\n component : Component

\n\n constructor() {\n this.clean = cleanup(this);\n this.event = eventEmitter();\n }\n\n addProp(options : Object, name : string, def : mixed) {\n copyProp(options, this, name, def);\n }\n\n on(eventName : string, handler : () => void) : CancelableType {\n return this.event.on(eventName, handler);\n }\n\n listeners() {\n throw new Error(`Expected listeners to be implemented`);\n }\n\n error(err : mixed) : ZalgoPromise {\n throw new Error(`Expected error to be implemented - got ${ stringifyError(err) }`);\n }\n\n /* Listen\n ------\n\n Listen for any post messages defined in this.listeners(). All (most) of our communication is done via\n post-messages, so this sets up an easy way to create a collection of listeners in one go.\n\n All post-messaging is done using post-robot.\n */\n\n listen(win : CrossDomainWindowType, domain : string | RegExp) {\n\n if (!win) {\n throw this.component.createError(`window to listen to not set`);\n }\n\n if (!domain) {\n throw new Error(`Must pass domain to listen to`);\n }\n\n if (!this.listeners) {\n return;\n }\n\n let listeners = this.listeners();\n\n for (let listenerName of Object.keys(listeners)) {\n\n let name = listenerName.replace(/^zoid_/, '');\n\n let errorHandler = (err) => {\n this.error(err);\n };\n\n let listener = on(listenerName, { window: win, domain, errorHandler }, ({ source, data }) => {\n this.component.log(`listener_${ name }`);\n return listeners[listenerName].call(this, source, data);\n });\n\n let errorListener = on(listenerName, { window: win, errorHandler }, ({ origin }) => {\n this.component.logError(`unexpected_listener_${ name }`, { origin, domain: domain.toString() });\n this.error(new Error(`Unexpected ${ name } message from domain ${ origin } -- expected message from ${ domain.toString() }`));\n });\n\n this.clean.register(() => {\n listener.cancel();\n errorListener.cancel();\n });\n }\n }\n}\n","/* @flow */\n\nimport { getOpener, getTop, getParent, getNthParentFromTop, getAllFramesInWindow, getAncestor, getDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport base32 from 'hi-base32';\n\nimport { memoize, uniqueID, globalFor, stringifyError } from '../lib';\nimport { WINDOW_REFERENCES } from '../constants';\nimport type { DimensionsType, PositionType } from '../types';\n\n\nfunction normalize(str : string) : string {\n return str.replace(/^[^a-z0-9A-Z]+|[^a-z0-9A-Z]+$/g, '').replace(/[^a-z0-9A-Z]+/g, '_');\n}\n\nfunction encode(str : string) : string {\n return base32.encode(str).replace(/\\=/g, '').toLowerCase(); // eslint-disable-line no-useless-escape\n}\n\nfunction decode(str : string) : string {\n return base32.decode(str.toUpperCase());\n}\n\n\n/* Build Child Window Name\n -----------------------\n\n Build a name for our child window. This should identify the following things to the child:\n\n - That the window was created by, and is owned by zoid\n - The name of the child's parent. This is so the child can identify which window created it, even when we do a\n renderTo, in which case the true parent may actually be a sibling frame in the window hierarchy\n\n We base64 encode the window name so IE doesn't die when it encounters any characters that it doesn't like.\n*/\n\nexport function buildChildWindowName(name : string, version : string, options : Object = {}) : string {\n\n options.id = uniqueID();\n options.domain = getDomain(window);\n\n let encodedName = normalize(name);\n let encodedVersion = normalize(version);\n let encodedOptions = encode(JSON.stringify(options));\n\n if (!encodedName) {\n throw new Error(`Invalid name: ${ name } - must contain alphanumeric characters`);\n }\n\n if (!encodedVersion) {\n throw new Error(`Invalid version: ${ version } - must contain alphanumeric characters`);\n }\n\n return [\n 'xcomponent',\n encodedName,\n encodedVersion,\n encodedOptions,\n ''\n ].join('__');\n}\n\nexport let isZoidComponentWindow = memoize(() => {\n if (!window.name) {\n return false;\n }\n\n let [ zoidcomp ] = window.name.split('__');\n\n if (zoidcomp !== 'xcomponent') {\n return false;\n }\n\n return true;\n});\n\n/* Parse Window Name\n -----------------\n\n The inverse of buildChildWindowName. Base64 decodes and json parses the window name to get the original props\n passed down, including the parent name. Only accepts window names built by zoid\n*/\n\nexport let getComponentMeta = memoize(() => {\n\n if (!window.name) {\n throw new Error(`Can not get component meta without window name`);\n }\n\n let [ zoidcomp, name, version, encodedOptions ] = window.name.split('__');\n\n if (zoidcomp !== 'xcomponent') {\n throw new Error(`Window not rendered by zoid - got ${ zoidcomp }`);\n }\n\n let componentMeta;\n\n try {\n componentMeta = JSON.parse(decode(encodedOptions));\n } catch (err) {\n throw new Error(`Can not decode component-meta: ${ encodedOptions } ${ stringifyError(err) }`);\n }\n\n componentMeta.name = name;\n componentMeta.version = version.replace(/_/g, '.');\n\n return componentMeta;\n});\n\nexport function getParentDomain() : string {\n return getComponentMeta().domain; // How does this work for renderTo..?\n}\n\nfunction getWindowByRef({ ref, uid, distance } : { ref : string, uid : string, distance : number }) : CrossDomainWindowType {\n\n let result;\n\n if (ref === WINDOW_REFERENCES.OPENER) {\n result = getOpener(window);\n\n } else if (ref === WINDOW_REFERENCES.TOP) {\n result = getTop(window);\n\n } else if (ref === WINDOW_REFERENCES.PARENT) {\n\n if (distance) {\n result = getNthParentFromTop(window, distance);\n } else {\n result = getParent(window);\n }\n }\n\n if (ref === WINDOW_REFERENCES.GLOBAL) {\n let ancestor = getAncestor(window);\n\n if (ancestor) {\n for (let frame of getAllFramesInWindow(ancestor)) {\n let global = globalFor(frame);\n\n if (global && global.windows && global.windows[uid]) {\n result = global.windows[uid];\n break;\n }\n }\n }\n }\n\n if (!result) {\n throw new Error(`Unable to find window by ref`);\n }\n\n return result;\n}\n\n/* Get Parent Component Window\n ---------------------------\n\n Get the parent component window, which may be different from the actual parent window\n*/\n\nexport let getParentComponentWindow = memoize(() => {\n\n let componentMeta = getComponentMeta();\n\n if (!componentMeta) {\n throw new Error(`Can not get parent component window - window not rendered by zoid`);\n }\n\n return getWindowByRef(componentMeta.componentParent);\n});\n\n\nexport let getParentRenderWindow = memoize(() => {\n\n let componentMeta = getComponentMeta();\n\n if (!componentMeta) {\n throw new Error(`Can not get parent component window - window not rendered by zoid`);\n }\n\n return getWindowByRef(componentMeta.renderParent);\n});\n\n\n/* Get Position\n ------------\n\n Calculate the position for the popup\n\n This is either\n - Specified by the user\n - The center of the screen\n\n I'd love to do this with pure css, but alas... popup windows :(\n*/\n\nexport function getPosition({ width, height } : DimensionsType) : PositionType {\n\n let x = 0;\n let y = 0;\n\n if (width) {\n if (window.outerWidth) {\n x = Math.round((window.outerWidth - width) / 2) + window.screenX;\n } else if (window.screen.width) {\n x = Math.round((window.screen.width - width) / 2);\n }\n }\n\n if (height) {\n if (window.outerHeight) {\n y = Math.round((window.outerHeight - height) / 2) + window.screenY;\n } else if (window.screen.height) {\n y = Math.round((window.screen.height - height) / 2);\n }\n }\n\n return { x, y };\n}\n","/* @flow */\n\nimport { getDomain } from 'cross-domain-utils/src';\n\nimport type { Component } from '../component';\nimport type { BuiltInPropsType, MixedPropDefinitionType } from '../component/props';\n\nexport function normalizeChildProp(component : Component

, props : (BuiltInPropsType & P), key : string, value : T) : ?T {\n\n // $FlowFixMe\n let prop : MixedPropDefinitionType

= component.getProp(key);\n\n if (!prop) {\n if (component.looseProps) {\n return value;\n } else {\n return;\n }\n }\n\n if (typeof prop.childDecorate === 'function') {\n return prop.childDecorate(value);\n }\n\n return value;\n}\n\n\nexport function normalizeChildProps

(component : Component

, props : (BuiltInPropsType & P), origin : string, required : boolean = true) : (BuiltInPropsType & P) {\n\n let result = {};\n\n for (let key of Object.keys(props)) {\n\n let prop = component.getProp(key);\n let value = props[key];\n\n if (prop && prop.sameDomain && origin !== getDomain(window)) {\n continue;\n }\n\n result[key] = normalizeChildProp(component, props, key, value);\n\n if (prop && prop.alias && !result[prop.alias]) {\n result[prop.alias] = value;\n }\n }\n\n if (required) {\n for (let key of component.getPropNames()) {\n if (!props.hasOwnProperty(key)) {\n result[key] = normalizeChildProp(component, props, key, props[key]);\n }\n }\n }\n\n // $FlowFixMe\n return result;\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { flush } from 'beaver-logger/client';\nimport { isSameDomain, matchDomain, getDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { send } from 'post-robot/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { onResize } from 'belter/src';\n\nimport { BaseComponent } from '../base';\nimport { getParentComponentWindow, getComponentMeta, getParentDomain, getParentRenderWindow } from '../window';\nimport { extend, deserializeFunctions, get, stringify,\n globalFor, setLogLevel, getElement, noop, stringifyError } from '../../lib';\nimport { POST_MESSAGE, CONTEXT_TYPES, CLOSE_REASONS, INITIAL_PROPS } from '../../constants';\nimport { RenderError } from '../../error';\nimport type { Component } from '../component';\nimport type { BuiltInPropsType } from '../component/props';\n\nimport { normalizeChildProps } from './props';\n\nexport type ChildExportsType

= {\n updateProps : (props : (BuiltInPropsType & P)) => ZalgoPromise,\n close : () => ZalgoPromise\n};\n\n/* Child Component\n ---------------\n\n This is the portion of code which runs inside the frame or popup window containing the component's implementation.\n\n When the component author calls myComponent.attach(), it creates a new instance of ChildComponent, which is then\n responsible for managing the state and messaging back up to the parent, and providing props for the component to\n utilize.\n*/\n\nexport class ChildComponent

extends BaseComponent

{\n\n component : Component

\n props : BuiltInPropsType & P\n context : string\n\n onPropHandlers : Array<(BuiltInPropsType & P) => void>\n onInit : ZalgoPromise>\n watchingForResize : boolean\n autoResize : { width : boolean, height : boolean, element? : string }\n\n constructor(component : Component

) {\n super();\n this.component = component;\n\n if (!this.hasValidParentDomain()) {\n this.error(new RenderError(`Can not be rendered by domain: ${ this.getParentDomain() }`));\n return;\n }\n\n this.component.log(`construct_child`);\n\n // The child can specify some default props if none are passed from the parent. This often makes integrations\n // a little more seamless, as applicaiton code can call props.foo() without worrying about whether the parent\n // has provided them or not, and fall-back to some default behavior.\n\n this.onPropHandlers = [];\n\n for (let item of [ this.component, window ]) {\n for (let [ name, getter ] of [ [ 'xchild', () => this ], [ 'xprops', () => this.props ] ]) {\n // $FlowFixMe\n Object.defineProperty(item, name, {\n configurable: true,\n get: () => {\n if (!this.props) {\n this.setProps(this.getInitialProps(), getParentDomain());\n }\n // $FlowFixMe\n delete item[name];\n // $FlowFixMe\n item[name] = getter();\n // $FlowFixMe\n return item[name];\n }\n });\n }\n }\n\n this.component.log(`init_child`);\n\n this.setWindows();\n\n // Send an init message to our parent. This gives us an initial set of data to use that we can use to function.\n //\n // For example:\n //\n // - What context are we\n // - What props has the parent specified\n\n this.onInit = this.sendToParent(POST_MESSAGE.INIT, {\n\n exports: this.exports()\n\n }).then(({ origin, data }) => {\n\n this.context = data.context;\n this.setProps(data.props, origin);\n\n this.watchForResize();\n\n return this;\n\n }).catch(err => {\n\n this.error(err);\n throw err;\n });\n }\n\n hasValidParentDomain() : boolean {\n return matchDomain(this.component.allowedParentDomains, this.getParentDomain());\n }\n\n init() : ZalgoPromise> {\n return this.onInit;\n }\n\n getParentDomain() : string {\n return getParentDomain();\n }\n\n onProps(handler : Function) {\n this.onPropHandlers.push(handler);\n }\n\n getParentComponentWindow() : CrossDomainWindowType {\n return getParentComponentWindow();\n }\n\n getParentRenderWindow() : CrossDomainWindowType {\n return getParentRenderWindow();\n }\n\n getInitialProps() : (BuiltInPropsType & P) {\n let componentMeta = getComponentMeta();\n\n let props = componentMeta.props;\n\n if (props.type === INITIAL_PROPS.RAW) {\n props = props.value;\n } else if (props.type === INITIAL_PROPS.UID) {\n\n let parentComponentWindow = getParentComponentWindow();\n\n if (!isSameDomain(parentComponentWindow)) {\n\n if (window.location.protocol === 'file:') {\n throw new Error(`Can not get props from file:// domain`);\n }\n\n throw new Error(`Parent component window is on a different domain - expected ${ getDomain() } - can not retrieve props`);\n }\n\n let global = globalFor(parentComponentWindow);\n\n if (!global) {\n throw new Error(`Can not find global for parent component - can not retrieve props`);\n }\n\n props = JSON.parse(global.props[componentMeta.uid]);\n\n } else {\n throw new Error(`Unrecognized props type: ${ props.type }`);\n }\n\n if (!props) {\n throw new Error(`Initial props not found`);\n }\n \n return deserializeFunctions(props, ({ fullKey, self, args }) => {\n return this.onInit.then(() => {\n let func = get(this.props, fullKey);\n\n if (typeof func !== 'function') {\n throw new TypeError(`Expected ${ fullKey } to be function, got ${ typeof func }`);\n }\n\n return func.apply(self, args);\n });\n });\n }\n\n\n setProps(props : (BuiltInPropsType & P), origin : string, required : boolean = true) {\n // $FlowFixMe\n this.props = this.props || {};\n let normalizedProps = normalizeChildProps(this.component, props, origin, required);\n extend(this.props, normalizedProps);\n if (this.props.logLevel) {\n setLogLevel(this.props.logLevel);\n }\n for (let handler of this.onPropHandlers) {\n handler.call(this, this.props);\n }\n }\n\n\n /* Send to Parent\n --------------\n\n Send a post message to our parent window.\n */\n\n sendToParent(name : string, data : ?Object = {}, options : ?Object = {}) : ZalgoPromise<{ origin : string, source : CrossDomainWindowType, data : Object }> {\n let parentWindow = getParentComponentWindow();\n\n if (!parentWindow) {\n throw new Error(`Can not find parent component window to message`);\n }\n\n this.component.log(`send_to_parent_${ name }`);\n\n return send(parentWindow, name, data, { domain: getParentDomain(), ...options });\n }\n\n\n /* Set Windows\n -----------\n\n Determine the parent window, and the parent component window. Note -- these may be different, if we were\n rendered using renderTo.\n */\n\n setWindows() {\n\n\n // Ensure we do not try to .attach() multiple times for the same component on the same page\n\n if (window.__activeZoidComponent__) {\n throw this.component.createError(`Can not attach multiple components to the same window`);\n }\n\n window.__activeZoidComponent__ = this;\n\n // Get the direct parent window\n\n if (!getParentComponentWindow()) {\n throw this.component.createError(`Can not find parent window`);\n }\n\n let componentMeta = getComponentMeta();\n\n if (componentMeta.tag !== this.component.tag) {\n throw this.component.createError(`Parent is ${ componentMeta.tag } - can not attach ${ this.component.tag }`);\n }\n\n // Note -- getting references to other windows is probably one of the hardest things to do. There's basically\n // only a few ways of doing it:\n //\n // - The window is a direct parent, in which case you can use window.parent or window.opener\n // - The window is an iframe owned by you or one of your parents, in which case you can use window.frames\n // - The window sent you a post-message, in which case you can use event.source\n //\n // If we didn't rely on winProps.parent here from the window name, we'd have to relay all of our messages through\n // our actual parent. Which is no fun at all, and pretty error prone even with the help of post-robot. So this\n // is the lesser of two evils until browsers give us something like getWindowByName(...)\n\n // If the parent window closes, we need to close ourselves. There's no point continuing to run our component\n // if there's no parent to message to.\n\n this.watchForClose();\n }\n\n watchForClose() {\n window.addEventListener('unload', () => this.checkClose());\n }\n\n enableAutoResize({ width = true, height = true } : { width : boolean, height : boolean } = {}) {\n this.autoResize = { width, height };\n this.watchForResize();\n }\n\n getAutoResize() : { width : boolean, height : boolean, element : HTMLElement } {\n\n let width = false;\n let height = false;\n\n let autoResize = this.autoResize || this.component.autoResize;\n\n if (typeof autoResize === 'object') {\n width = Boolean(autoResize.width);\n height = Boolean(autoResize.height);\n } else if (autoResize) {\n width = true;\n height = true;\n }\n\n let element;\n\n if (autoResize.element) {\n element = getElement(autoResize.element);\n } else {\n element = document.body;\n }\n\n // $FlowFixMe\n return { width, height, element };\n }\n\n watchForResize() : ?ZalgoPromise {\n\n let { width, height, element } = this.getAutoResize();\n\n if (!width && !height) {\n return;\n }\n\n if (this.context === CONTEXT_TYPES.POPUP) {\n return;\n }\n\n if (this.watchingForResize) {\n return;\n }\n\n this.watchingForResize = true;\n \n onResize(element, ({ width: newWidth, height: newHeight }) => {\n this.resize(width ? newWidth : undefined, height ? newHeight : undefined);\n }, { width, height });\n }\n\n\n exports() : ChildExportsType

{\n\n let self = this;\n\n return {\n updateProps(props : (BuiltInPropsType & P)) : ZalgoPromise {\n return ZalgoPromise.try(() => self.setProps(props, this.origin, false));\n },\n\n close() : ZalgoPromise {\n return ZalgoPromise.try(() => self.destroy());\n }\n };\n }\n\n\n /* Resize\n ------\n\n Resize the child window. Must be done on a user action like a click if we're in a popup\n */\n\n resize(width : ?number, height : ?number) : ZalgoPromise {\n return ZalgoPromise.resolve().then(() => {\n\n this.component.log(`resize`, { width: stringify(width), height: stringify(height) });\n\n if (this.context === CONTEXT_TYPES.POPUP) {\n return;\n }\n\n return this.sendToParent(POST_MESSAGE.RESIZE, { width, height }).then(noop);\n });\n }\n\n /* Hide\n ----\n\n Hide the window and any parent template\n */\n\n hide() : ZalgoPromise {\n return this.sendToParent(POST_MESSAGE.HIDE).then(noop);\n }\n\n show() : ZalgoPromise {\n return this.sendToParent(POST_MESSAGE.SHOW).then(noop);\n }\n\n userClose() : void {\n return this.close(CLOSE_REASONS.USER_CLOSED);\n }\n\n\n /* Close\n -----\n\n Close the child window\n */\n\n close(reason : string = CLOSE_REASONS.CHILD_CALL) {\n\n this.component.log(`close_child`);\n\n // Ask our parent window to close us\n\n this.sendToParent(POST_MESSAGE.CLOSE, { reason });\n }\n\n checkClose() {\n this.sendToParent(POST_MESSAGE.CHECK_CLOSE, {}, { fireAndForget: true });\n }\n\n\n destroy() : ZalgoPromise {\n return flush().then(() => {\n window.close();\n });\n }\n\n\n /* Focus\n -----\n\n Focus the child window. Must be done on a user action like a click\n */\n\n focus() {\n this.component.log(`focus`);\n\n window.focus();\n }\n\n\n /* Error\n -----\n\n Send an error back to the parent\n */\n\n error(err : mixed) : ZalgoPromise {\n\n let stringifiedError = stringifyError(err);\n\n this.component.logError(`error`, { error: stringifiedError });\n\n return this.sendToParent(POST_MESSAGE.ERROR, {\n error: stringifiedError\n }).then(noop);\n }\n}\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { cleanUpWindow } from 'post-robot/src';\nimport { findFrameByName, isSameDomain } from 'cross-domain-utils/src';\n\nimport { iframe, popup, toCSS, showElement, hideElement,\n destroyElement, normalizeDimension, watchElementForClose,\n awaitFrameWindow, addClass, removeClass, noop } from '../../lib';\nimport { CONTEXT_TYPES, DELEGATE, CLOSE_REASONS, CLASS_NAMES, DEFAULT_DIMENSIONS } from '../../constants';\nimport { getPosition, getParentComponentWindow } from '../window';\n\n\nexport type ContextDriverType = {\n\n focusable : boolean,\n renderedIntoContainerTemplate : boolean,\n allowResize : boolean,\n openOnClick : boolean,\n needsBridge : boolean,\n\n open : (?string) => ZalgoPromise,\n resize : (?(number | string), ?(number | string)) => void,\n show : () => void,\n hide : () => void,\n loadUrl : (string) => void,\n\n delegateOverrides : {\n [string] : string | Function\n },\n\n openPrerender : () => ZalgoPromise,\n switchPrerender? : () => void\n};\n\n/* Render Drivers\n --------------\n\n There are various differences in how we treat:\n\n - Opening frames and windows\n - Rendering up to the parent\n - Resizing\n - etc.\n\n based on the context we're rendering to.\n\n These render drivers split this functionality out in a driver pattern, so our component code doesn't bunch up into a\n series of if-popup-then-else-if-iframe code.\n*/\n\nexport let RENDER_DRIVERS : { [string] : ContextDriverType } = {};\n\n// Iframe context is rendered inline on the page, without any kind of parent template. It's the one context that is designed\n// to feel like a native element on the page.\n\nRENDER_DRIVERS[CONTEXT_TYPES.IFRAME] = {\n\n focusable: false,\n renderedIntoContainerTemplate: true,\n allowResize: true,\n openOnClick: false,\n needsBridge: false,\n\n open(url : ?string) : ZalgoPromise {\n\n let attributes = this.component.attributes.iframe || {};\n\n this.iframe = iframe({\n url,\n attributes: {\n name: this.childWindowName,\n title: this.component.name,\n scrolling: this.component.scrolling ? 'yes' : 'no',\n ...attributes\n },\n class: [\n CLASS_NAMES.COMPONENT_FRAME,\n CLASS_NAMES.INVISIBLE\n ]\n }, this.element);\n\n return awaitFrameWindow(this.iframe).then(frameWindow => {\n\n this.window = frameWindow;\n\n let detectClose = () => {\n return ZalgoPromise.try(() => {\n return this.props.onClose(CLOSE_REASONS.CLOSE_DETECTED);\n }).finally(() => {\n return this.destroy();\n });\n };\n\n let iframeWatcher = watchElementForClose(this.iframe, detectClose);\n let elementWatcher = watchElementForClose(this.element, detectClose);\n\n this.clean.register('destroyWindow', () => {\n\n iframeWatcher.cancel();\n elementWatcher.cancel();\n\n cleanUpWindow(this.window);\n\n delete this.window;\n\n if (this.iframe) {\n destroyElement(this.iframe);\n delete this.iframe;\n }\n });\n });\n },\n\n openPrerender() : ZalgoPromise {\n\n let attributes = this.component.attributes.iframe || {};\n\n this.prerenderIframe = iframe({\n attributes: {\n name: `__prerender__${ this.childWindowName }`,\n scrolling: this.component.scrolling ? 'yes' : 'no',\n ...attributes\n },\n class: [\n CLASS_NAMES.PRERENDER_FRAME,\n CLASS_NAMES.VISIBLE\n ]\n }, this.element);\n\n return awaitFrameWindow(this.prerenderIframe).then(prerenderFrameWindow => {\n\n this.prerenderWindow = prerenderFrameWindow;\n\n this.clean.register('destroyPrerender', () => {\n\n if (this.prerenderIframe) {\n destroyElement(this.prerenderIframe);\n delete this.prerenderIframe;\n }\n });\n });\n },\n\n switchPrerender() {\n\n addClass(this.prerenderIframe, CLASS_NAMES.INVISIBLE);\n removeClass(this.prerenderIframe, CLASS_NAMES.VISIBLE);\n\n addClass(this.iframe, CLASS_NAMES.VISIBLE);\n removeClass(this.iframe, CLASS_NAMES.INVISIBLE);\n\n setTimeout(() => {\n if (this.prerenderIframe) {\n destroyElement(this.prerenderIframe);\n }\n }, 1000);\n },\n\n delegateOverrides: {\n\n openContainer: DELEGATE.CALL_DELEGATE,\n destroyComponent: DELEGATE.CALL_DELEGATE,\n destroyContainer: DELEGATE.CALL_DELEGATE,\n cancelContainerEvents: DELEGATE.CALL_DELEGATE,\n createPrerenderTemplate: DELEGATE.CALL_DELEGATE,\n elementReady: DELEGATE.CALL_DELEGATE,\n showContainer: DELEGATE.CALL_DELEGATE,\n showComponent: DELEGATE.CALL_DELEGATE,\n hideContainer: DELEGATE.CALL_DELEGATE,\n hideComponent: DELEGATE.CALL_DELEGATE,\n hide: DELEGATE.CALL_DELEGATE,\n show: DELEGATE.CALL_DELEGATE,\n resize: DELEGATE.CALL_DELEGATE,\n loadUrl: DELEGATE.CALL_DELEGATE,\n hijackSubmit: DELEGATE.CALL_DELEGATE,\n openPrerender: DELEGATE.CALL_DELEGATE,\n switchPrerender: DELEGATE.CALL_DELEGATE,\n\n renderTemplate: DELEGATE.CALL_ORIGINAL,\n openContainerFrame: DELEGATE.CALL_ORIGINAL,\n getOutlet: DELEGATE.CALL_ORIGINAL,\n\n open(original : () => ZalgoPromise, override : () => ZalgoPromise) : () => ZalgoPromise {\n return function overrideOpen() : ZalgoPromise {\n return override.apply(this, arguments).then(() => {\n this.clean.set('window', findFrameByName(getParentComponentWindow(), this.childWindowName));\n\n if (!this.window) {\n throw new Error(`Unable to find parent component iframe window`);\n }\n });\n };\n }\n },\n\n resize(width : ?(number | string), height : ?(number | string)) {\n\n if (width) {\n this.container.style.width = toCSS(width);\n this.element.style.width = toCSS(width);\n }\n\n if (height) {\n this.container.style.height = toCSS(height);\n this.element.style.height = toCSS(height);\n }\n },\n\n show() {\n showElement(this.element);\n },\n\n hide() {\n hideElement(this.element);\n },\n\n loadUrl(url : string) {\n this.iframe.setAttribute('src', url);\n }\n};\n\nif (__ZOID__.__POPUP_SUPPORT__) {\n\n // Popup context opens up a centered popup window on the page.\n\n RENDER_DRIVERS[CONTEXT_TYPES.POPUP] = {\n\n focusable: true,\n renderedIntoContainerTemplate: false,\n allowResize: false,\n openOnClick: true,\n needsBridge: true,\n\n open(url : ?string = '') : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n let {\n width = DEFAULT_DIMENSIONS.WIDTH,\n height = DEFAULT_DIMENSIONS.HEIGHT\n } = this.component.dimensions || {};\n\n width = normalizeDimension(width, window.outerWidth);\n height = normalizeDimension(height, window.outerWidth);\n\n let { x, y } = getPosition({ width, height });\n\n let attributes = this.component.attributes.popup || {};\n\n this.window = popup(url || '', {\n name: this.childWindowName,\n width,\n height,\n top: y,\n left: x,\n status: 1,\n toolbar: 0,\n menubar: 0,\n resizable: 1,\n scrollbars: 1,\n ...attributes\n });\n\n this.prerenderWindow = this.window;\n\n this.clean.register('destroyWindow', () => {\n if (this.window) {\n this.window.close();\n cleanUpWindow(this.window);\n delete this.window;\n delete this.prerenderWindow;\n }\n });\n\n this.resize(width, height);\n });\n },\n\n openPrerender() : ZalgoPromise {\n return ZalgoPromise.try(noop);\n },\n\n resize() {\n // pass\n },\n\n hide() {\n throw new Error('Can not hide popup');\n },\n\n show() {\n throw new Error('Can not show popup');\n },\n\n delegateOverrides: {\n\n openContainer: DELEGATE.CALL_DELEGATE,\n destroyContainer: DELEGATE.CALL_DELEGATE,\n\n elementReady: DELEGATE.CALL_DELEGATE,\n\n showContainer: DELEGATE.CALL_DELEGATE,\n showComponent: DELEGATE.CALL_DELEGATE,\n hideContainer: DELEGATE.CALL_DELEGATE,\n hideComponent: DELEGATE.CALL_DELEGATE,\n\n hide: DELEGATE.CALL_DELEGATE,\n show: DELEGATE.CALL_DELEGATE,\n\n cancelContainerEvents: DELEGATE.CALL_DELEGATE,\n\n open: DELEGATE.CALL_ORIGINAL,\n loadUrl: DELEGATE.CALL_ORIGINAL,\n createPrerenderTemplate: DELEGATE.CALL_ORIGINAL,\n destroyComponent: DELEGATE.CALL_ORIGINAL,\n resize: DELEGATE.CALL_ORIGINAL,\n renderTemplate: DELEGATE.CALL_ORIGINAL,\n openContainerFrame: DELEGATE.CALL_ORIGINAL,\n getOutlet: DELEGATE.CALL_ORIGINAL\n },\n\n loadUrl(url : string) {\n\n if (isSameDomain(this.window)) {\n try {\n if (this.window.location && this.window.location.replace) {\n this.window.location.replace(url);\n return;\n }\n } catch (err) {\n // pass\n }\n }\n\n this.window.location = url;\n }\n };\n}\n","/* @flow */\n/* eslint complexity: off */\n\nimport type { Component } from '../component';\nimport type { MixedPropDefinitionType, PropsType } from '../component/props';\n\n// $FlowFixMe\nexport function validateProp(prop : MixedPropDefinitionType

, key : string, value : ?T, props : (PropsType & P), required : boolean = true) {\n\n let hasProp = value !== null && value !== undefined && value !== '';\n\n if (!hasProp) {\n if (required && prop.required !== false && !prop.hasOwnProperty('def')) {\n throw new Error(`Prop is required: ${ key }`);\n }\n\n return;\n }\n\n if (value && typeof value.then === 'function' && prop.promise) {\n return;\n }\n\n if (prop.type === 'function') {\n\n if (!(typeof value === 'function')) {\n throw new TypeError(`Prop is not of type function: ${ key }`);\n }\n\n } else if (prop.type === 'string') {\n\n if (typeof value !== 'string') {\n throw new TypeError(`Prop is not of type string: ${ key }`);\n }\n\n } else if (prop.type === 'object') {\n\n // Since we're sending everything by post-message, everything must be json serializable\n\n if (prop.sendToChild !== false) {\n try {\n JSON.stringify(value);\n } catch (err) {\n throw new Error(`Unable to serialize prop: ${ key }`);\n }\n }\n\n } else if (prop.type === 'number') {\n\n if (isNaN(parseInt(value, 10))) {\n throw new TypeError(`Prop is not a number: ${ key }`);\n }\n }\n\n if (typeof prop.validate === 'function' && value) {\n prop.validate(value, props);\n }\n}\n\n\n/* Validate Props\n --------------\n\n Validate user-defined props. Users can pass props down from the parent into the child component, but first we\n double check the values are what we expect, based on the props spec defined in the original component.\n*/\n\nexport function validateProps

(component : Component

, props : PropsType, required : boolean = true) {\n\n props = props || {};\n\n if (props.env && typeof component.url === 'object' && !component.url[props.env]) {\n throw new Error(`Invalid env: ${ props.env }`);\n }\n\n // Set aliases\n\n for (let key of component.getPropNames()) {\n\n // $FlowFixMe\n let prop = component.getProp(key);\n\n if (prop.alias && props.hasOwnProperty(prop.alias)) {\n\n let value = props[prop.alias];\n delete props[prop.alias];\n\n if (!props[key]) {\n props[key] = value;\n }\n }\n }\n\n // First make sure all of the props we were sent are actually valid prop names\n\n /*\n\n if (!component.looseProps) {\n for (let key of Object.keys(props)) {\n if (component.getPropNames().indexOf(key) === -1) {\n throw component.error(`Invalid prop: ${key}`);\n }\n }\n }\n\n */\n\n // Then loop over the props we expect, and make sure they're all present and valid\n\n for (let key of Object.keys(props)) {\n\n // $FlowFixMe\n let prop : MixedPropDefinitionType

= component.getProp(key);\n let value = props[key];\n\n if (prop) {\n // $FlowFixMe\n validateProp(prop, key, value, props, required);\n }\n }\n\n for (let key of component.getPropNames()) {\n\n // $FlowFixMe\n let prop : MixedPropDefinitionType

= component.getProp(key);\n let value = props[key];\n\n if (prop && !props.hasOwnProperty(key)) {\n validateProp(prop, key, value, props, required);\n }\n }\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { noop, denodeify, once, memoize, promisify, dotify } from '../../lib';\nimport type { Component } from '../component';\nimport type { BuiltInPropsDefinitionType, PropsType, BuiltInPropsType, MixedPropDefinitionType } from '../component/props';\n\nimport type { ParentComponent } from './index';\n\nfunction isDefined(value : ?mixed) : boolean {\n return value !== null && value !== undefined && value !== '';\n}\n\n\n/* Normalize Prop\n --------------\n\n Turn prop into normalized value, using defaults, function options, etc.\n*/\n\n// $FlowFixMe\nexport function normalizeProp(component : Component

, instance : ParentComponent

, props : (PropsType & P), key : string, value : ?T) : ?(ZalgoPromise | T) { // eslint-disable-line complexity\n\n let prop = component.getProp(key);\n\n let resultValue;\n\n if (prop.value) {\n resultValue = prop.value;\n } else if (prop.def && (!props.hasOwnProperty(key) || !isDefined(value))) {\n resultValue = prop.def.call(component, props);\n } else {\n resultValue = value;\n }\n\n if (!resultValue && prop.alias && props[prop.alias]) {\n resultValue = props[prop.alias];\n }\n\n let decorated = false;\n\n if (prop.decorate && resultValue !== null && resultValue !== undefined) {\n resultValue = prop.decorate.call(instance, resultValue, props);\n decorated = true;\n }\n\n let type = prop.type;\n\n if (type === 'boolean') {\n // $FlowFixMe\n resultValue = Boolean(resultValue);\n\n } else if (type === 'function') {\n\n if (!resultValue && prop.noop) {\n // $FlowFixMe\n resultValue = noop;\n\n if (!decorated && prop.decorate) {\n // $FlowFixMe\n resultValue = prop.decorate.call(instance, noop, props);\n }\n }\n\n if (resultValue && typeof resultValue === 'function') {\n\n resultValue = resultValue.bind(instance);\n\n // If prop.denodeify is set, denodeify the function (accepts callback -> returns promise)\n\n if (prop.denodeify) {\n // $FlowFixMe\n resultValue = denodeify(resultValue);\n }\n\n if (prop.promisify) {\n // $FlowFixMe\n resultValue = promisify(resultValue);\n }\n\n // Wrap the function in order to log when it is called\n\n let original = resultValue;\n // $FlowFixMe\n resultValue = function() : mixed {\n component.log(`call_prop_${ key }`);\n return original.apply(this, arguments);\n };\n\n // If prop.once is set, ensure the function can only be called once\n\n if (prop.once) {\n // $FlowFixMe\n resultValue = once(resultValue);\n }\n\n // If prop.memoize is set, ensure the function is memoized (first return resultValue is cached and returned for any future calls)\n\n if (prop.memoize) {\n // $FlowFixMe\n resultValue = memoize(resultValue);\n }\n }\n\n } else if (type === 'string') {\n // pass\n\n } else if (type === 'object') {\n // pass\n\n } else if (type === 'number') {\n if (resultValue !== undefined) {\n // $FlowFixMe\n resultValue = parseInt(resultValue, 10);\n }\n }\n\n // $FlowFixMe\n return resultValue;\n}\n\n\n/* Normalize Props\n ---------------\n\n Turn props into normalized values, using defaults, function options, etc.\n*/\n\nexport function normalizeProps

(component : Component

, instance : ParentComponent

, props : (PropsType & P)) : (BuiltInPropsType & P) {\n\n let result = {};\n\n // $FlowFixMe\n props = props || {};\n\n for (let key of Object.keys(props)) {\n if (component.getPropNames().indexOf(key) !== -1) {\n // $FlowFixMe\n result[key] = normalizeProp(component, instance, props, key, props[key]);\n } else {\n result[key] = props[key];\n }\n }\n\n for (let key of component.getPropNames()) {\n if (!props.hasOwnProperty(key) && (!instance.props || !instance.props.hasOwnProperty(key))) {\n\n // $FlowFixMe\n let normalizedProp = normalizeProp(component, instance, props, key, props[key]);\n\n if (normalizedProp !== undefined) {\n result[key] = normalizedProp;\n }\n }\n }\n\n // $FlowFixMe\n return result;\n}\n\n\n/* Props to Query\n --------------\n\n Turn props into an initial query string to open the component with\n\n string -> string\n bool -> 1\n object -> json\n number -> string\n*/\n\n// $FlowFixMe\nfunction getQueryParam(prop : MixedPropDefinitionType

, key : string, value : T) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (typeof prop.queryParam === 'function') {\n return prop.queryParam(value);\n } else if (typeof prop.queryParam === 'string') {\n return prop.queryParam;\n } else {\n return key;\n }\n });\n}\n\n// $FlowFixMe\nfunction getQueryValue(prop : MixedPropDefinitionType

, key : string, value : T) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (typeof prop.queryValue === 'function') {\n return prop.queryValue(value);\n } else {\n return value;\n }\n });\n}\n\nexport function propsToQuery

(propsDef : BuiltInPropsDefinitionType

, props : (BuiltInPropsType & P)) : { [string] : string } {\n\n let params = {};\n\n return ZalgoPromise.all(Object.keys(props).map(key => {\n\n let prop = propsDef[key];\n\n if (!prop) {\n return; // eslint-disable-line array-callback-return\n }\n\n return ZalgoPromise.resolve().then(() => {\n\n let value = props[key];\n\n if (!value) {\n return;\n }\n\n if (!prop.queryParam) {\n return;\n }\n\n return value;\n\n }).then(value => {\n\n if (!value) {\n return;\n }\n\n return ZalgoPromise.all([\n // $FlowFixMe\n getQueryParam(prop, key, value),\n // $FlowFixMe\n getQueryValue(prop, key, value)\n ]).then(([ queryParam, queryValue ]) => {\n\n let result;\n\n if (typeof queryValue === 'boolean') {\n result = '1';\n } else if (typeof queryValue === 'string') {\n result = queryValue.toString();\n } else if (typeof queryValue === 'function') {\n return;\n } else if (typeof queryValue === 'object' && queryValue !== null) {\n\n if (prop.serialization === 'json') {\n result = JSON.stringify(queryValue);\n } else {\n result = dotify(queryValue, key);\n\n for (let dotkey of Object.keys(result)) {\n params[dotkey] = result[dotkey];\n }\n\n return;\n }\n\n } else if (typeof queryValue === 'number') {\n result = queryValue.toString();\n }\n\n params[queryParam] = result;\n });\n });\n\n })).then(() => {\n Object.keys(params).forEach(key => {\n params[key] = escape(params[key]);\n });\n return params;\n });\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { flush } from 'beaver-logger/client';\nimport { send, bridge } from 'post-robot/src';\nimport { isSameDomain, isWindowClosed, isTop, isSameTopWindow, matchDomain, getDistanceFromTop, onCloseWindow, getDomain, assertSameDomain, type CrossDomainWindowType, type SameDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getElementSafe, onResize } from 'belter/src';\n\nimport { BaseComponent } from '../base';\nimport { buildChildWindowName, getParentDomain, getParentComponentWindow } from '../window';\nimport { addEventListener, uniqueID, elementReady, writeElementToWindow,\n noop, showAndAnimate, animateAndHide, showElement, hideElement,\n addClass, extend, serializeFunctions, extendUrl, jsxDom,\n getElement, memoized, appendChild,\n global, writeToWindow, setLogLevel, once,\n prefetchPage, awaitFrameLoad, stringify, stringifyError } from '../../lib';\nimport { POST_MESSAGE, CONTEXT_TYPES, CLASS_NAMES, ANIMATION_NAMES, CLOSE_REASONS, DELEGATE, INITIAL_PROPS, WINDOW_REFERENCES, EVENTS, DEFAULT_DIMENSIONS } from '../../constants';\nimport { RenderError } from '../../error';\nimport type { Component } from '../component';\nimport type { PropsType, BuiltInPropsType } from '../component/props';\nimport type { ChildExportsType } from '../child';\nimport type { CancelableType, Jsx, DimensionsType, ElementRefType } from '../../types';\n\nimport { RENDER_DRIVERS, type ContextDriverType } from './drivers';\nimport { validateProps } from './validate';\nimport { propsToQuery, normalizeProps } from './props';\n\nglobal.props = global.props || {};\nglobal.windows = global.windows || {};\n\nexport type RenderOptionsType = {\n id : string,\n props : PropsType,\n tag : string,\n context : string,\n outlet : HTMLElement,\n CLASS : typeof CLASS_NAMES,\n ANIMATION : typeof ANIMATION_NAMES,\n CONTEXT : typeof CONTEXT_TYPES,\n EVENT : typeof EVENTS,\n actions : {\n close : (string) => ZalgoPromise,\n focus : () => ZalgoPromise\n },\n on : (string, () => void) => CancelableType,\n jsxDom : Jsx,\n document : Document,\n container : HTMLElement,\n dimensions : DimensionsType\n};\n\n\n/* Parent Component\n ----------------\n\n This manages the state of the component on the parent window side - i.e. the window the component is being rendered into.\n\n It handles opening the necessary windows/iframes, launching the component's url, and listening for messages back from the component.\n*/\n\nexport class ParentComponent

extends BaseComponent

{\n\n html : ?ZalgoPromise\n context : string\n props : BuiltInPropsType & P\n childWindowName : string\n onInit : ZalgoPromise>\n window : CrossDomainWindowType\n handledErrors : Array\n\n container : HTMLElement\n element : HTMLElement\n outlet : HTMLElement;\n iframe : HTMLIFrameElement\n\n prerenderIframe : HTMLIFrameElement\n prerenderWindow : SameDomainWindowType\n\n childExports : ?ChildExportsType

\n timeout : ?TimeoutID // eslint-disable-line no-undef\n\n constructor(component : Component

, context : string, { props } : { props : (PropsType & P) }) {\n super();\n\n this.component = component;\n\n this.validateParentDomain();\n\n this.context = context;\n\n try {\n this.setProps(props);\n } catch (err) {\n if (props.onError) {\n props.onError(err);\n }\n throw err;\n }\n\n if (this.props.logLevel) {\n setLogLevel(this.props.logLevel);\n }\n\n this.childWindowName = this.buildChildWindowName({ renderTo: window });\n\n this.registerActiveComponent();\n\n // Options passed during renderTo. We would not ordinarily expect a user to pass these, since we depend on\n // them only when we're trying to render from a sibling to a sibling\n\n this.component.log(`construct_parent`);\n\n this.watchForUnload();\n\n this.onInit = new ZalgoPromise();\n\n this.onInit.catch(err => {\n return this.error(err);\n });\n }\n\n render(element : ElementRefType, loadUrl : boolean = true) : ZalgoPromise> {\n return this.tryInit(() => {\n\n this.component.log(`render_${ this.context }`, { context: this.context, element, loadUrl: stringify(loadUrl) });\n\n let tasks = {};\n\n tasks.onRender = this.props.onRender();\n\n tasks.getDomain = this.getDomain();\n\n tasks.elementReady = ZalgoPromise.try(() => {\n if (element) {\n return this.elementReady(element);\n }\n });\n\n tasks.openContainer = tasks.elementReady.then(() => {\n return this.openContainer(element);\n });\n\n tasks.showContainer = tasks.openContainer.then(() => {\n return this.showContainer();\n });\n\n tasks.openPrerender = tasks.openContainer.then(() => {\n return this.openPrerender();\n });\n\n tasks.switchPrerender = ZalgoPromise.all([ tasks.openPrerender, this.onInit ]).then(() => {\n return this.switchPrerender();\n });\n\n // $FlowFixMe\n tasks.open = this.driver.openOnClick\n ? this.open()\n : tasks.openContainer.then(() => this.open());\n\n tasks.listen = ZalgoPromise.hash({ domain: tasks.getDomain, open: tasks.open }).then(({ domain }) => {\n this.listen(this.window, domain);\n });\n\n tasks.watchForClose = tasks.open.then(() => {\n return this.watchForClose();\n });\n\n tasks.linkDomain = ZalgoPromise.all([ tasks.getDomain, tasks.open ]).then(([ domain ]) => {\n if (bridge && typeof domain === 'string') {\n return bridge.linkUrl(this.window, domain);\n }\n });\n\n if (!this.html) {\n tasks.createPrerenderTemplate = tasks.openPrerender.then(() => {\n return this.createPrerenderTemplate();\n });\n\n tasks.showComponent = tasks.createPrerenderTemplate.then(() => {\n return this.showComponent();\n });\n }\n\n tasks.openBridge = ZalgoPromise.all([ tasks.getDomain, tasks.open ]).then(([ domain ]) => {\n return this.openBridge(typeof domain === 'string' ? domain : null);\n });\n\n if (this.html) {\n tasks.loadHTML = tasks.open.then(() => {\n return this.loadHTML();\n });\n\n } else if (loadUrl) {\n tasks.buildUrl = this.buildUrl();\n\n tasks.loadUrl = ZalgoPromise.all([\n tasks.buildUrl,\n tasks.open,\n tasks.linkDomain,\n tasks.listen,\n tasks.open,\n tasks.openBridge,\n tasks.createPrerenderTemplate\n ]).then(([ url ]) => {\n return this.loadUrl(url);\n });\n\n tasks.runTimeout = tasks.loadUrl.then(() => {\n return this.runTimeout();\n });\n }\n\n return ZalgoPromise.hash(tasks);\n\n }).then(() => {\n return this.props.onEnter();\n }).then(() => {\n return this;\n });\n }\n\n @memoized\n getOutlet() : HTMLElement {\n let outlet = document.createElement('div');\n addClass(outlet, CLASS_NAMES.OUTLET);\n return outlet;\n }\n\n validateParentDomain() {\n let domain = getDomain();\n if (!matchDomain(this.component.allowedParentDomains, domain)) {\n throw new RenderError(`Can not be rendered by domain: ${ domain }`);\n }\n }\n\n renderTo(win : CrossDomainWindowType, element : ?string) : ZalgoPromise> {\n return this.tryInit(() => {\n\n if (win === window) {\n return this.render(element);\n }\n\n if (!isSameTopWindow(window, win)) {\n throw new Error(`Can only renderTo an adjacent frame`);\n }\n\n if (element && typeof element !== 'string') {\n throw new Error(`Element passed to renderTo must be a string selector, got ${ typeof element } ${ element }`);\n }\n\n this.checkAllowRenderTo(win);\n\n this.component.log(`render_${ this.context }_to_win`, { element: stringify(element), context: this.context });\n\n this.childWindowName = this.buildChildWindowName({ renderTo: win });\n\n this.delegate(win);\n\n return this.render(element);\n });\n }\n\n @memoized\n prefetch() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.html = this.buildUrl().then(url => {\n return prefetchPage(url).then(html => {\n\n let host = `${ url.split('/').slice(0, 3).join('/') }`;\n let uri = `/${ url.split('/').slice(3).join('/') }`;\n\n return `\n \n\n ${ html }\n\n \n `;\n });\n });\n });\n }\n\n @memoized\n loadHTML() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (!this.html) {\n throw new Error(`Html not prefetched`);\n }\n\n return this.html.then(html => {\n // $FlowFixMe\n return writeToWindow(this.window, html);\n });\n });\n }\n\n checkAllowRenderTo(win : CrossDomainWindowType) {\n\n if (!win) {\n throw this.component.createError(`Must pass window to renderTo`);\n }\n\n if (isSameDomain(win)) {\n return;\n }\n\n let origin = getDomain();\n let domain = this.component.getDomain(null, this.props.env);\n\n if (!domain) {\n throw new Error(`Could not determine domain to allow remote render`);\n }\n\n if (matchDomain(domain, origin)) {\n return;\n }\n\n throw new Error(`Can not render remotely to ${ domain.toString() } - can only render to ${ origin }`);\n }\n\n registerActiveComponent() {\n ParentComponent.activeComponents.push(this);\n\n this.clean.register(() => {\n ParentComponent.activeComponents.splice(ParentComponent.activeComponents.indexOf(this), 1);\n });\n }\n\n\n getComponentParentRef() : { ref : string, uid? : string, distance? : number } {\n let domain = this.component.getDomain(null, this.props.env);\n\n if (domain === getDomain(window)) {\n let uid = uniqueID();\n global.windows = global.windows || {};\n global.windows[uid] = window;\n this.clean.register(() => {\n delete global.windows[uid];\n });\n\n return { ref: WINDOW_REFERENCES.GLOBAL, uid };\n }\n\n if (this.context === CONTEXT_TYPES.POPUP) {\n return { ref: WINDOW_REFERENCES.OPENER };\n }\n\n if (isTop(window)) {\n return { ref: WINDOW_REFERENCES.TOP };\n }\n\n return { ref: WINDOW_REFERENCES.PARENT, distance: getDistanceFromTop(window) };\n }\n\n getRenderParentRef(renderToWindow : CrossDomainWindowType = window) : { ref : string, uid? : string, distance? : number } {\n\n if (renderToWindow === window) {\n return this.getComponentParentRef();\n }\n\n let uid = uniqueID();\n global.windows[uid] = renderToWindow;\n\n this.clean.register(() => {\n delete global.windows[uid];\n });\n\n return { ref: WINDOW_REFERENCES.GLOBAL, uid };\n }\n\n buildChildWindowName({ renderTo = window } : { renderTo : CrossDomainWindowType } = {}) : string {\n\n let childDomain = this.component.getDomain(null, this.props.env);\n let sameDomain = isSameDomain(renderTo);\n\n let uid = uniqueID();\n let tag = this.component.tag;\n let sProps = serializeFunctions(this.getPropsForChild());\n\n let componentParent = this.getComponentParentRef();\n let renderParent = this.getRenderParentRef(renderTo);\n\n let secureProps = !sameDomain && !this.component.unsafeRenderTo;\n\n let props = secureProps\n ? { type: INITIAL_PROPS.UID, uid }\n : { type: INITIAL_PROPS.RAW, value: sProps };\n\n if (props.type === INITIAL_PROPS.UID) {\n global.props[uid] = JSON.stringify(sProps);\n\n this.clean.register(() => {\n delete global.props[uid];\n });\n }\n\n return buildChildWindowName(this.component.name, this.component.version, { uid, tag, componentParent, renderParent, props, childDomain });\n }\n\n\n /* Send to Parent\n --------------\n\n Send a post message to our parent window.\n */\n\n sendToParent(name : string, data : Object) : ZalgoPromise<{ origin : string, source : CrossDomainWindowType, data : Object }> {\n let parentWindow = getParentComponentWindow();\n\n if (!parentWindow) {\n throw new Error(`Can not find parent component window to message`);\n }\n\n this.component.log(`send_to_parent_${ name }`);\n\n return send(getParentComponentWindow(), name, data, { domain: getParentDomain() });\n }\n\n\n /* Set Props\n ---------\n\n Normalize props and generate the url we'll use to render the component\n */\n\n setProps(props : (PropsType & P), required : boolean = true) {\n\n validateProps(this.component, props, required);\n if (this.component.validate) {\n this.component.validate(this.component, props);\n }\n\n // $FlowFixMe\n this.props = this.props || {};\n\n extend(this.props, normalizeProps(this.component, this, props));\n }\n\n\n /* Build Url\n ---------\n\n We build the props we're passed into the initial url. This means the component server-side can start rendering\n itself based on whatever props the merchant provides.\n */\n\n @memoized\n buildUrl() : ZalgoPromise {\n\n let propUrl : (string | void) = this.props.url;\n\n return ZalgoPromise.all([\n\n propUrl,\n // $FlowFixMe\n propsToQuery({ ...this.component.props, ...this.component.builtinProps }, this.props)\n\n ]).then(([ url, query ]) => {\n\n // Do not extend the url if it is for a different domain\n\n if (url && !this.component.getValidDomain(url)) {\n return url;\n }\n\n return ZalgoPromise.try(() => {\n\n return url || this.component.getUrl(this.props.env, this.props);\n\n }).then(finalUrl => {\n\n query.xcomponent = '1';\n return extendUrl(finalUrl, { query });\n });\n });\n }\n\n\n getDomain() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n return this.props.url;\n\n }).then(url => {\n\n let domain = this.component.getDomain(url, this.props.env);\n\n if (domain) {\n return domain;\n }\n\n if (this.component.buildUrl) {\n return ZalgoPromise.try(() => this.component.buildUrl(this.props)).then(builtUrl => {\n return this.component.getDomain(builtUrl, this.props.env);\n });\n }\n\n }).then(domain => {\n\n if (!domain) {\n throw new Error(`Could not determine domain`);\n }\n\n return domain;\n });\n }\n\n getPropsForChild() : (BuiltInPropsType & P) {\n\n let result = {};\n\n for (let key of Object.keys(this.props)) {\n let prop = this.component.getProp(key);\n\n if (!prop || prop.sendToChild !== false) {\n result[key] = this.props[key];\n }\n }\n\n // $FlowFixMe\n return result;\n }\n\n\n /* Update Props\n ------------\n\n Send new props down to the child\n */\n\n updateProps(props : (PropsType & P)) : ZalgoPromise {\n this.setProps(props, false);\n\n return this.onInit.then(() => {\n if (this.childExports) {\n return this.childExports.updateProps(this.getPropsForChild());\n } else {\n throw new Error(`Child exports were not available`);\n }\n });\n }\n\n\n openBridge(domain : ?string) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (!bridge || !this.driver.needsBridge) {\n return;\n }\n\n let needsBridgeParams : Object = { win: this.window };\n if (domain) {\n needsBridgeParams.domain = domain;\n }\n\n let needsBridge = bridge.needsBridge(needsBridgeParams);\n\n let bridgeUrl = this.component.getBridgeUrl(this.props.env);\n\n if (!bridgeUrl) {\n\n if (needsBridge && domain && !bridge.hasBridge(domain, domain)) {\n throw new Error(`Bridge url needed to render ${ this.context }`);\n }\n\n return;\n }\n\n bridgeUrl = extendUrl(bridgeUrl, { query: { version: this.component.version } });\n\n let bridgeDomain = this.component.getBridgeDomain(this.props.env);\n\n if (!bridgeDomain) {\n throw new Error(`Can not determine domain for bridge`);\n }\n\n if (needsBridge) {\n return bridge.openBridge(bridgeUrl, bridgeDomain).then(result => {\n if (result) {\n return result;\n }\n });\n }\n });\n }\n\n\n /* Open\n ----\n\n Open a new window in the desired context\n */\n\n @memoized\n open() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.component.log(`open_${ this.context }`, { windowName: this.childWindowName });\n if (this.props.win) {\n this.clean.set('window', this.props.win);\n assertSameDomain(this.window).name = this.childWindowName;\n return;\n }\n return this.driver.open.call(this);\n });\n }\n\n @memoized\n openPrerender() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.component.prerenderTemplate) {\n return this.driver.openPrerender.call(this);\n }\n });\n }\n\n @memoized\n switchPrerender() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.prerenderWindow && this.driver.switchPrerender) {\n return this.driver.switchPrerender.call(this);\n }\n });\n }\n\n get driver() : ContextDriverType {\n\n if (!this.context) {\n throw new Error('Context not set');\n }\n\n return RENDER_DRIVERS[this.context];\n }\n\n elementReady(element : ElementRefType) : ZalgoPromise {\n return elementReady(element).then(noop);\n }\n\n\n delegate(win : CrossDomainWindowType) {\n\n this.component.log(`delegate_${ this.context }`);\n\n let props = {\n uid: this.props.uid,\n dimensions: this.props.dimensions,\n onClose: this.props.onClose,\n onDisplay: this.props.onDisplay\n };\n\n for (let propName of this.component.getPropNames()) {\n let prop = this.component.getProp(propName);\n\n if (prop.allowDelegate) {\n props[propName] = this.props[propName];\n }\n }\n\n let delegate = send(win, `${ POST_MESSAGE.DELEGATE }_${ this.component.name }`, {\n\n context: this.context,\n env: this.props.env,\n\n options: {\n\n context: this.context,\n\n childWindowName: this.childWindowName,\n isWindowClosed: () => isWindowClosed(this.window),\n\n props,\n\n overrides: {\n focus: () => this.focus(),\n userClose: () => this.userClose(),\n getDomain: () => this.getDomain(),\n\n error: (err) => this.error(err),\n on: (eventName, handler) => this.on(eventName, handler)\n }\n }\n\n }).then(({ data }) => {\n\n this.clean.register(data.destroy);\n return data;\n\n }).catch(err => {\n\n throw new Error(`Unable to delegate rendering. Possibly the component is not loaded in the target window.\\n\\n${ stringifyError(err) }`);\n });\n\n let overrides = this.driver.delegateOverrides;\n\n for (let key of Object.keys(overrides)) {\n let val = overrides[key];\n\n if (val === DELEGATE.CALL_ORIGINAL) {\n continue;\n }\n\n // $FlowFixMe\n let original = this[key];\n\n // $FlowFixMe\n this[key] = function overridenFunction() : ZalgoPromise {\n return delegate.then(data => {\n\n let override = data.overrides[key];\n\n if (val === DELEGATE.CALL_DELEGATE) {\n return override.apply(this, arguments);\n }\n\n if (typeof val === 'function') {\n return val(original, override).apply(this, arguments);\n }\n\n throw new Error(`Expected delgate to be CALL_ORIGINAL, CALL_DELEGATE, or factory method`);\n });\n };\n }\n }\n\n /* Watch For Close\n ---------------\n\n Watch for the child window closing, so we can cleanup.\n Also watch for this window changing location, so we can close the component.\n */\n\n watchForClose() {\n let closeWindowListener = onCloseWindow(this.window, () => {\n this.component.log(`detect_close_child`);\n\n return ZalgoPromise.try(() => {\n return this.props.onClose(CLOSE_REASONS.CLOSE_DETECTED);\n }).finally(() => {\n return this.destroy();\n });\n }, 3000);\n\n this.clean.register('destroyCloseWindowListener', closeWindowListener.cancel);\n }\n\n watchForUnload() {\n\n // Our child has no way of knowing if we navigated off the page. So we have to listen for unload\n // and close the child manually if that happens.\n\n let onunload = once(() => {\n this.component.log(`navigate_away`);\n flush();\n this.destroyComponent();\n });\n\n let unloadWindowListener = addEventListener(window, 'unload', onunload);\n\n this.clean.register('destroyUnloadWindowListener', unloadWindowListener.cancel);\n }\n\n\n /* Load Url\n --------\n\n Load url into the child window. This is separated out because it's quite common for us to have situations\n where opening the child window and loading the url happen at different points.\n */\n\n loadUrl(url : string) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.component.log(`load_url`);\n\n if (window.location.href.split('#')[0] === url.split('#')[0]) {\n url = extendUrl(url, {\n query: {\n [ uniqueID() ]: '1'\n }\n });\n }\n\n return this.driver.loadUrl.call(this, url);\n });\n }\n\n\n hijack(targetElement : HTMLFormElement | HTMLAnchorElement) {\n targetElement.target = this.childWindowName;\n }\n\n /* Run Timeout\n -----------\n\n Set a timeout on the initial render, and call this.props.onTimeout if we don't get an init call in time.\n */\n\n runTimeout() {\n let timeout = this.props.timeout;\n\n if (timeout) {\n let id = this.timeout = setTimeout(() => {\n\n this.component.log(`timed_out`, { timeout: timeout.toString() });\n\n let error = this.component.createError(`Loading component timed out after ${ timeout } milliseconds`);\n\n this.onInit.reject(error);\n this.props.onTimeout(error);\n\n }, timeout);\n\n this.clean.register(() => {\n clearTimeout(id);\n delete this.timeout;\n });\n }\n }\n\n\n /* Listeners\n ---------\n\n Post-robot listeners to the child component window\n */\n\n listeners() : { [string] : (CrossDomainWindowType, Object) => mixed } {\n return {\n\n // The child rendered, and the component called .attach()\n // We have no way to know when the child has set up its listeners for the first time, so we have to listen\n // for this message to be sure so we can continue doing anything from the parent\n\n [ POST_MESSAGE.INIT ](source : CrossDomainWindowType, data : Object) : { props : BuiltInPropsType & P, context : string } {\n\n this.childExports = data.exports;\n\n this.onInit.resolve(this);\n\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n\n return {\n props: this.getPropsForChild(),\n context: this.context\n };\n },\n\n\n // The child has requested that we close it. Since iframes can't close themselves, we need\n // this logic to exist in the parent window\n\n [ POST_MESSAGE.CLOSE ](source : CrossDomainWindowType, data : Object) {\n this.close(data.reason);\n },\n\n [ POST_MESSAGE.CHECK_CLOSE ]() {\n this.checkClose();\n },\n\n // Iframes can't resize themselves, so they need the parent to take care of it for them.\n\n [ POST_MESSAGE.RESIZE ](source : CrossDomainWindowType, data : Object) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.driver.allowResize) {\n return this.resize(data.width, data.height);\n }\n });\n },\n\n [ POST_MESSAGE.HIDE ]() {\n this.hide();\n },\n\n [ POST_MESSAGE.SHOW ]() {\n this.show();\n },\n\n\n // The child encountered an error\n\n [ POST_MESSAGE.ERROR ](source : CrossDomainWindowType, data : Object) {\n this.error(new Error(data.error));\n }\n };\n }\n\n\n /* Resize\n ------\n\n Resize the child component window\n */\n\n resize(width : ?(number | string), height : ?(number | string)) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.component.log(`resize`, { height: stringify(height), width: stringify(width) });\n this.driver.resize.call(this, width, height);\n if (this.props.onResize) {\n this.props.onResize();\n }\n });\n }\n\n\n /* Hide\n ----\n\n Hide the component and any parent template\n */\n\n hide() : void {\n\n if (this.container) {\n hideElement(this.container);\n }\n\n return this.driver.hide.call(this);\n }\n\n show() : void {\n\n if (this.container) {\n showElement(this.container);\n }\n\n return this.driver.show.call(this);\n }\n\n\n checkClose() {\n let closeWindowListener = onCloseWindow(this.window, () => {\n this.userClose();\n }, 50, 500);\n\n this.clean.register(closeWindowListener.cancel);\n }\n\n\n userClose() : ZalgoPromise {\n return this.close(CLOSE_REASONS.USER_CLOSED);\n }\n\n\n /* Close\n -----\n\n Close the child component\n */\n\n @memoized\n close(reason : string = CLOSE_REASONS.PARENT_CALL) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n this.component.log(`close`, { reason });\n\n this.event.triggerOnce(EVENTS.CLOSE);\n return this.props.onClose(reason);\n\n }).then(() => {\n\n return ZalgoPromise.all([\n this.closeComponent(),\n this.closeContainer()\n ]);\n\n }).then(() => {\n\n return this.destroy();\n });\n }\n\n\n @memoized\n closeContainer(reason : string = CLOSE_REASONS.PARENT_CALL) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n this.event.triggerOnce(EVENTS.CLOSE);\n return this.props.onClose(reason);\n\n }).then(() => {\n\n return ZalgoPromise.all([\n this.closeComponent(reason),\n this.hideContainer()\n ]);\n\n }).then(() => {\n\n return this.destroyContainer();\n });\n }\n\n\n @memoized\n destroyContainer() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.clean.run('destroyContainerEvents');\n this.clean.run('destroyContainerTemplate');\n });\n }\n\n\n @memoized\n closeComponent(reason : string = CLOSE_REASONS.PARENT_CALL) : ZalgoPromise {\n\n let win = this.window;\n\n return ZalgoPromise.try(() => {\n\n return this.cancelContainerEvents();\n\n }).then(() => {\n\n this.event.triggerOnce(EVENTS.CLOSE);\n return this.props.onClose(reason);\n\n }).then(() => {\n\n return this.hideComponent();\n\n }).then(() => {\n\n return this.destroyComponent();\n\n }).then(() => {\n\n // IE in metro mode -- child window needs to close itself, or close will hang\n\n if (this.childExports && this.context === CONTEXT_TYPES.POPUP && !isWindowClosed(win)) {\n this.childExports.close().catch(noop);\n }\n });\n }\n\n destroyComponent() {\n this.clean.run('destroyUnloadWindowListener');\n this.clean.run('destroyCloseWindowListener');\n this.clean.run('destroyContainerEvents');\n this.clean.run('destroyWindow');\n }\n\n @memoized\n showContainer() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.props.onDisplay) {\n return this.props.onDisplay();\n }\n }).then(() => {\n if (this.container) {\n return showAndAnimate(this.container, ANIMATION_NAMES.SHOW_CONTAINER, this.clean.register);\n }\n });\n }\n\n @memoized\n showComponent() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.props.onDisplay) {\n return this.props.onDisplay();\n }\n }).then(() => {\n if (this.element) {\n return showAndAnimate(this.element, ANIMATION_NAMES.SHOW_COMPONENT, this.clean.register);\n }\n });\n }\n\n @memoized\n hideContainer() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.container) {\n return animateAndHide(this.container, ANIMATION_NAMES.HIDE_CONTAINER, this.clean.register);\n } else {\n return ZalgoPromise.resolve();\n }\n });\n }\n\n @memoized\n hideComponent() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.element) {\n return animateAndHide(this.element, ANIMATION_NAMES.HIDE_COMPONENT, this.clean.register);\n } else {\n return ZalgoPromise.resolve();\n }\n });\n }\n\n\n /* Focus\n -----\n\n Focus the child component window\n */\n\n focus() {\n\n if (this.window && !isWindowClosed(this.window)) {\n this.component.log(`focus`);\n this.window.focus();\n\n } else {\n\n throw new Error(`No window to focus`);\n }\n }\n\n\n /* Create Component Template\n -------------------------\n\n Creates an initial template and stylesheet which are loaded into the child window, to be displayed before the url is loaded\n */\n\n @memoized\n createPrerenderTemplate() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (!this.component.prerenderTemplate) {\n return ZalgoPromise.resolve();\n }\n\n return ZalgoPromise.try(() => {\n\n if (this.prerenderIframe) {\n return awaitFrameLoad(this.prerenderIframe).then(() => this.prerenderWindow);\n } else {\n return this.prerenderWindow;\n }\n\n }).then(win => {\n\n let doc;\n\n try {\n doc = win.document;\n } catch (err) {\n return;\n }\n\n let el;\n\n try {\n el = this.renderTemplate(this.component.prerenderTemplate, {\n jsxDom: jsxDom.bind(doc),\n document: doc\n });\n } catch (err) {\n this.component.logError('preprender_error', { err: err.stack ? err.stack : err.toString() });\n console.error(err.stack ? err.stack : err); // eslint-disable-line no-console\n return;\n }\n\n try {\n writeElementToWindow(win, el);\n } catch (err) {\n this.component.logError('preprender_error', { err: err.stack ? err.stack : err.toString() });\n console.error(err.stack ? err.stack : err); // eslint-disable-line no-console\n }\n\n let { width = false, height = false, element = 'body' } = (typeof this.component.autoResize === 'object' && this.component.autoResize !== null)\n ? this.component.autoResize\n : {};\n\n element = getElementSafe(element, doc);\n\n if (element && (width || height)) {\n onResize(element, ({ width: newWidth, height: newHeight }) => {\n this.resize(width ? newWidth : undefined, height ? newHeight : undefined);\n }, { width, height, win });\n }\n });\n });\n }\n\n\n /* Create Parent Template\n ----------------------\n\n Create a template and stylesheet for the parent template behind the element\n */\n\n renderTemplate(renderer : (RenderOptionsType) => HTMLElement, options : Object = {}) : HTMLElement {\n\n let {\n width = `${ DEFAULT_DIMENSIONS.WIDTH }px`,\n height = `${ DEFAULT_DIMENSIONS.HEIGHT }px`\n } = (this.component.dimensions || {});\n\n return renderer.call(this, {\n id: `${ CLASS_NAMES.ZOID }-${ this.component.tag }-${ this.props.uid }`,\n props: renderer.__xdomain__ ? null : this.props,\n tag: this.component.tag,\n context: this.context,\n outlet: this.getOutlet(),\n CLASS: CLASS_NAMES,\n ANIMATION: ANIMATION_NAMES,\n CONTEXT: CONTEXT_TYPES,\n EVENT: EVENTS,\n actions: {\n close: () => this.userClose(),\n focus: () => this.focus()\n },\n on: (eventName, handler) => this.on(eventName, handler),\n jsxDom,\n document,\n dimensions: { width, height },\n ...options\n });\n }\n\n @memoized\n openContainer(element : ?HTMLElement) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n let el;\n\n if (element) {\n el = getElement(element);\n } else {\n el = document.body;\n }\n\n if (!el) {\n throw new Error(`Could not find element to open container into`);\n }\n\n if (!this.component.containerTemplate) {\n if (this.driver.renderedIntoContainerTemplate) {\n throw new Error(`containerTemplate needed to render ${ this.context }`);\n }\n\n return;\n }\n\n let container = this.renderTemplate(this.component.containerTemplate, {\n container: el\n });\n\n this.container = container;\n hideElement(this.container);\n appendChild(el, this.container);\n\n if (this.driver.renderedIntoContainerTemplate) {\n this.element = this.getOutlet();\n hideElement(this.element);\n\n if (!this.element) {\n throw new Error('Could not find element to render component into');\n }\n\n hideElement(this.element);\n }\n\n this.clean.register('destroyContainerTemplate', () => {\n\n if (this.container && this.container.parentNode) {\n this.container.parentNode.removeChild(this.container);\n }\n\n delete this.container;\n });\n });\n }\n\n cancelContainerEvents() {\n this.clean.run('destroyContainerEvents');\n }\n\n\n /* Destroy\n -------\n\n Close the component and clean up any listeners and state\n */\n\n destroy() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.clean.hasTasks()) {\n this.component.log(`destroy`);\n flush();\n return this.clean.all();\n }\n });\n }\n\n\n tryInit(method : () => mixed) : ZalgoPromise> {\n return ZalgoPromise.try(method).catch(err => {\n this.onInit.reject(err);\n }).then(() => {\n return this.onInit;\n });\n }\n\n\n /* Error\n -----\n\n Handle an error\n */\n\n error(err : mixed) : ZalgoPromise {\n // eslint-disable-next-line promise/no-promise-in-callback\n return ZalgoPromise.try(() => {\n\n this.handledErrors = this.handledErrors || [];\n\n if (this.handledErrors.indexOf(err) !== -1) {\n // $FlowFixMe\n return;\n }\n\n this.handledErrors.push(err);\n\n this.onInit.reject(err);\n\n return this.destroy();\n\n }).then(() => {\n\n if (this.props.onError) {\n return this.props.onError(err);\n }\n\n }).catch(errErr => { // eslint-disable-line unicorn/catch-error-name\n\n throw new Error(`An error was encountered while handling error:\\n\\n ${ stringifyError(err) }\\n\\n${ stringifyError(errErr) }`);\n\n }).then(() => {\n\n if (!this.props.onError) {\n throw err;\n }\n });\n }\n\n static activeComponents : Array> = []\n\n static destroyAll() : ZalgoPromise {\n let results = [];\n\n while (ParentComponent.activeComponents.length) {\n results.push(ParentComponent.activeComponents[0].destroy());\n }\n\n return ZalgoPromise.all(results).then(noop);\n }\n}\n","/* @flow */\n\nimport { onCloseWindow, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { BaseComponent } from '../base';\nimport { ParentComponent } from '../parent';\nimport { RENDER_DRIVERS, type ContextDriverType } from '../parent/drivers';\nimport type { Component } from '../component';\nimport { noop } from '../../lib';\nimport type { CancelableType, DimensionsType } from '../../types';\n\nexport type DelegatePropsType = {\n uid : string,\n dimensions : DimensionsType,\n onClose : () => ?ZalgoPromise,\n onDisplay : () => ?ZalgoPromise\n};\n\nexport type DelegateOptionsType = {\n context : string,\n props : DelegatePropsType,\n childWindowName : string,\n isWindowClosed : () => ZalgoPromise,\n \n overrides : {\n focus : () => ZalgoPromise,\n userClose : (string) => ZalgoPromise,\n getDomain : () => ZalgoPromise,\n error : (mixed) => ZalgoPromise,\n on : (string, () => void) => CancelableType\n }\n};\n\nexport class DelegateComponent

extends BaseComponent

{\n\n source : CrossDomainWindowType\n context : string\n props : DelegatePropsType\n\n focus : () => ZalgoPromise\n userClose : (string) => ZalgoPromise\n getDomain : () => ZalgoPromise\n error : (mixed) => ZalgoPromise\n on : (string, () => void) => CancelableType\n\n childWindowName : string\n isWindowClosed : () => ZalgoPromise\n\n constructor(component : Component

, source : CrossDomainWindowType, options : DelegateOptionsType) {\n super();\n\n this.component = component;\n this.clean.set('source', source);\n\n this.context = options.context;\n\n this.props = {\n uid: options.props.uid,\n dimensions: options.props.dimensions,\n onClose: options.props.onClose,\n onDisplay: options.props.onDisplay\n };\n\n for (let propName of component.getPropNames()) {\n // $FlowFixMe\n let prop = this.component.getProp(propName);\n\n if (prop.allowDelegate) {\n this.props[propName] = options.props[propName];\n }\n }\n\n this.focus = () => {\n return ZalgoPromise.all([\n this.isWindowClosed().then(closed => {\n if (!closed) {\n window.open('', this.childWindowName);\n }\n }),\n options.overrides.focus.call(this)\n ]).then(noop);\n };\n\n this.clean.register('destroyFocusOverride', () => {\n // $FlowFixMe\n this.focus = noop;\n });\n\n this.userClose = options.overrides.userClose;\n this.getDomain = options.overrides.getDomain;\n this.error = options.overrides.error;\n this.on = options.overrides.on;\n\n let delegateOverrides = RENDER_DRIVERS[options.context].delegateOverrides;\n\n for (let key of Object.keys(delegateOverrides)) {\n // $FlowFixMe\n this[key] = ParentComponent.prototype[key];\n }\n\n this.childWindowName = options.childWindowName;\n this.isWindowClosed = options.isWindowClosed;\n\n ParentComponent.prototype.registerActiveComponent.call(this);\n\n this.watchForClose();\n }\n\n get driver() : ContextDriverType {\n\n if (!this.context) {\n throw new Error('Context not set');\n }\n\n return RENDER_DRIVERS[this.context];\n }\n\n watchForClose() {\n let closeWindowListener = onCloseWindow(this.source, () => this.destroy(), 3000);\n this.clean.register('destroyCloseWindowListener', closeWindowListener.cancel);\n }\n\n getOverrides(context : string) : { [string] : mixed } {\n\n let delegateOverrides = RENDER_DRIVERS[context].delegateOverrides;\n\n let overrides = {};\n\n let self = this;\n\n for (let key of Object.keys(delegateOverrides)) {\n overrides[key] = function delegateOverride() : mixed {\n // $FlowFixMe\n return ParentComponent.prototype[key].apply(self, arguments);\n };\n }\n\n return overrides;\n }\n\n destroy() : ZalgoPromise {\n return this.clean.all();\n }\n}\n","/* @flow */\n/* @jsx jsxDom */\n\nimport { type RenderOptionsType } from '../../parent';\n\nexport function defaultContainerTemplate({ id, tag, context, CLASS, outlet, jsxDom, dimensions : { width, height } } : RenderOptionsType) : HTMLElement {\n\n return (\n

\n \n\n { outlet }\n
\n );\n}\n","/* @flow */\n/* @jsx jsxDom */\n\nimport { type RenderOptionsType } from '../../parent';\n\nexport function defaultPrerenderTemplate({ jsxDom } : RenderOptionsType) : HTMLElement {\n return (\n \n \n \n \n \n
\n
\n
\n \n \n );\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { on, send } from 'post-robot/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getDomain, getDomainFromUrl, matchDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { BaseComponent } from '../base';\nimport { ChildComponent } from '../child';\nimport { ParentComponent, type RenderOptionsType } from '../parent';\nimport { DelegateComponent, type DelegateOptionsType } from '../delegate';\nimport { isZoidComponentWindow, getComponentMeta } from '../window';\nimport { CONTEXT_TYPES, POST_MESSAGE, WILDCARD } from '../../constants';\nimport { angular, angular2, glimmer, react, vue, script } from '../../drivers/index';\nimport { info, error, warn, setLogLevel, memoize } from '../../lib';\nimport type { EnvStringRegExp, CssDimensionsType, StringMatcherType, ElementRefType, EnvString } from '../../types';\n\nimport { validate } from './validate';\nimport { defaultContainerTemplate, defaultPrerenderTemplate } from './templates';\nimport { getInternalProps, type UserPropsDefinitionType, type BuiltInPropsDefinitionType, type PropsType, type BuiltInPropsType, type MixedPropDefinitionType } from './props';\n\nconst drivers = { angular, angular2, glimmer, react, vue, script };\n\n/* Component\n ---------\n\n This is the spec for the component. The idea is, when I call zoid.create(), it will create a new instance\n of Component with the blueprint needed to set up ParentComponents and ChildComponents.\n\n This is the one portion of code which is required by -- and shared to -- both the parent and child windows, and\n contains all of the configuration needed for them to set themselves up.\n*/\n\nexport type ComponentOptionsType

= {\n\n tag : string,\n\n url? : EnvString,\n buildUrl? : (BuiltInPropsType & P) => string | ZalgoPromise,\n\n domain? : EnvStringRegExp,\n bridgeUrl? : EnvString,\n bridgeDomain? : EnvString,\n\n props? : UserPropsDefinitionType

,\n\n dimensions? : CssDimensionsType,\n scrolling? : boolean,\n autoResize? : boolean | { width? : boolean, height? : boolean, element? : string },\n listenForResize? : boolean,\n\n defaultLogLevel? : string,\n allowedParentDomains? : StringMatcherType,\n\n version? : string,\n defaultEnv? : string,\n\n contexts? : { iframe? : boolean, popup? : boolean },\n defaultContext? : string,\n\n containerTemplate? : (RenderOptionsType) => HTMLElement,\n prerenderTemplate? : (RenderOptionsType) => HTMLElement,\n\n validate? : (Component

, UserPropsDefinitionType

) => void,\n\n unsafeRenderTo? : boolean\n};\n\nexport type ComponentDriverType = {\n global : () => ?T,\n register : (Component

, T) => mixed\n};\n\nexport class Component

extends BaseComponent

{\n\n name : string\n looseProps : boolean\n\n tag : string\n url : EnvString\n\n domain : EnvStringRegExp\n bridgeUrl : EnvString\n bridgeDomain : EnvString\n\n props : UserPropsDefinitionType

\n builtinProps : BuiltInPropsDefinitionType

\n\n dimensions : CssDimensionsType\n scrolling : boolean\n autoResize : ?(boolean | { width? : boolean, height? : boolean, element? : string })\n listenForResize : ?boolean\n\n defaultLogLevel : string\n allowedParentDomains : StringMatcherType\n\n version : string\n defaultEnv : string\n buildUrl : (BuiltInPropsType & P) => string | ZalgoPromise\n\n contexts : { iframe? : boolean, popup? : boolean }\n defaultContext : string\n\n containerTemplate : (RenderOptionsType) => HTMLElement\n prerenderTemplate : (RenderOptionsType) => HTMLElement\n\n validate : (Component

, (PropsType & P)) => void\n\n unsafeRenderTo : ?boolean\n\n driverCache : { [string] : mixed }\n\n xchild : ?ChildComponent

\n xprops : ?P\n\n constructor(options : ComponentOptionsType

) {\n super();\n validate(options);\n\n // The tag name of the component. Used by some drivers (e.g. angular) to turn the component into an html element,\n // e.g. \n\n this.addProp(options, 'tag');\n\n this.addProp(options, 'defaultLogLevel', 'info');\n\n this.addProp(options, 'allowedParentDomains', WILDCARD);\n\n // initially set log level to default log level configured when creating component\n setLogLevel(this.defaultLogLevel);\n\n if (Component.components[this.tag]) {\n throw new Error(`Can not register multiple components with the same tag`);\n }\n\n // Name of the component, used for logging. Auto-generated from the tag name by default.\n\n this.addProp(options, 'name', this.tag.replace(/-/g, '_'));\n\n // A json based spec describing what kind of props the component accepts. This is used to validate any props before\n // they are passed down to the child.\n\n this.builtinProps = getInternalProps();\n this.props = options.props || {};\n\n if (!options.props) {\n this.looseProps = true;\n }\n\n // The dimensions of the component, e.g. { width: '300px', height: '150px' }\n\n this.addProp(options, 'dimensions');\n this.addProp(options, 'scrolling');\n this.addProp(options, 'listenForResize');\n\n this.addProp(options, 'version', 'latest');\n\n // The default environment we should render to if none is specified in the parent\n\n this.addProp(options, 'defaultEnv');\n\n // A mapping of env->url, used to determine which url to load for which env\n\n this.addProp(options, 'buildUrl');\n\n this.addProp(options, 'url');\n this.addProp(options, 'domain');\n\n this.addProp(options, 'bridgeUrl');\n this.addProp(options, 'bridgeDomain');\n\n this.addProp(options, 'attributes', {});\n\n // A url to use by default to render the component, if not using envs\n\n\n // The allowed contexts. For example { iframe: true, popup: false }\n\n this.addProp(options, 'contexts', { iframe: true, popup: false });\n\n // The default context to render to\n\n this.addProp(options, 'defaultContext');\n\n // Auto Resize option\n\n this.addProp(options, 'autoResize', false);\n\n // Templates and styles for the parent page and the initial rendering of the component\n\n this.addProp(options, 'containerTemplate', defaultContainerTemplate);\n this.addProp(options, 'prerenderTemplate', defaultPrerenderTemplate);\n\n // Validation\n\n this.addProp(options, 'validate');\n\n // Security\n\n this.addProp(options, 'unsafeRenderTo', false);\n\n // A mapping of tag->component so we can reference components by string tag name\n\n Component.components[this.tag] = this;\n\n // Register all of the drivers for instantiating components. The model used is -- there's a standard javascript\n // way of rendering a component, then each other technology (e.g. react) needs to hook into that interface.\n // This makes us a little more pluggable and loosely coupled.\n this.registerDrivers();\n this.registerChild();\n this.listenDelegate();\n }\n\n @memoize\n getPropNames() : Array {\n let props = Object.keys(this.props);\n\n for (let key of Object.keys(this.builtinProps)) {\n if (props.indexOf(key) === -1) {\n props.push(key);\n }\n }\n\n return props;\n }\n\n // $FlowFixMe\n getProp(name : string) : MixedPropDefinitionType

{\n // $FlowFixMe\n return this.props[name] || this.builtinProps[name];\n }\n\n registerDrivers() {\n this.driverCache = {};\n\n for (let driverName of Object.keys(drivers)) {\n if (driverName.indexOf('_') === 0) {\n continue;\n }\n\n let driver = drivers[driverName];\n let glob = driver.global();\n if (glob) {\n this.driver(driverName, glob);\n }\n }\n }\n\n driver(name : string, dep : mixed) : mixed {\n if (!drivers[name]) {\n throw new Error(`Could not find driver for framework: ${ name }`);\n }\n\n if (!this.driverCache[name]) {\n this.driverCache[name] = drivers[name].register(this, dep);\n }\n\n return this.driverCache[name];\n }\n\n registerChild() : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n if (this.isChild()) {\n return new ChildComponent(this);\n }\n });\n }\n\n listenDelegate() {\n on(`${ POST_MESSAGE.ALLOW_DELEGATE }_${ this.name }`, () => {\n return true;\n });\n\n on(`${ POST_MESSAGE.DELEGATE }_${ this.name }`, ({ source, origin, data }) => {\n\n let domain = this.getDomain(null, data.env || this.defaultEnv);\n\n if (!domain) {\n throw new Error(`Could not determine domain to allow remote render`);\n }\n\n if (!matchDomain(domain, origin)) {\n throw new Error(`Can not render from ${ origin } - expected ${ domain.toString() }`);\n }\n\n let delegate = this.delegate(source, data.options);\n\n return {\n overrides: delegate.getOverrides(data.context),\n destroy: () => delegate.destroy()\n };\n });\n }\n\n canRenderTo(win : CrossDomainWindowType) : ZalgoPromise {\n return send(win, `${ POST_MESSAGE.ALLOW_DELEGATE }_${ this.name }`).then(({ data }) => {\n return data;\n }).catch(() => {\n return false;\n });\n }\n\n\n getValidDomain(url : ?string) : ?(string | RegExp) {\n\n if (!url) {\n return;\n }\n\n let domain = getDomainFromUrl(url);\n\n if (typeof this.domain === 'string' && domain === this.domain) {\n return domain;\n }\n\n let domains = this.domain;\n\n if (domains && typeof domains === 'object' && !(domains instanceof RegExp)) {\n for (let env of Object.keys(domains)) {\n\n if (env === 'test') {\n continue;\n }\n\n if (domain === domains[env]) {\n return domain;\n }\n }\n }\n }\n\n\n getDomain(url : ?string, env : string) : ?(string | RegExp) {\n\n let domain = this.getForEnv(this.domain, env);\n\n if (domain) {\n return domain;\n }\n\n domain = this.getValidDomain(url);\n\n if (domain) {\n return domain;\n }\n\n // $FlowFixMe\n let envUrl = this.getForEnv(this.url, env);\n\n if (envUrl) {\n // $FlowFixMe\n return getDomainFromUrl(envUrl);\n }\n\n if (url) {\n return getDomainFromUrl(url);\n }\n }\n\n getBridgeUrl(env : string) : ?string {\n // $FlowFixMe\n return this.getForEnv(this.bridgeUrl, env);\n }\n\n getForEnv(item : (string | RegExp) | { [string] : (string | RegExp) }, env : ?string) : ?(string | RegExp) {\n\n if (!item) {\n return;\n }\n\n if (typeof item === 'string' || item instanceof RegExp) {\n return item;\n }\n\n if (!env) {\n env = this.defaultEnv;\n }\n\n if (!env) {\n return;\n }\n\n if (env && typeof item === 'object' && item[env]) {\n return item[env];\n }\n }\n\n getBridgeDomain(env : string) : ?string {\n\n // $FlowFixMe\n let bridgeDomain = this.getForEnv(this.bridgeDomain, env);\n\n if (bridgeDomain) {\n // $FlowFixMe\n return bridgeDomain;\n }\n\n let bridgeUrl = this.getBridgeUrl(env);\n\n if (bridgeUrl) {\n return getDomainFromUrl(bridgeUrl);\n }\n }\n\n getUrl(env : string, props : BuiltInPropsType & P) : (string | ZalgoPromise) {\n\n // $FlowFixMe\n let url = this.getForEnv(this.url, env);\n\n if (url) {\n // $FlowFixMe\n return url;\n }\n\n if (this.buildUrl) {\n return this.buildUrl(props);\n }\n\n throw new Error(`Unable to get url`);\n }\n\n isZoidComponent() : boolean {\n return isZoidComponentWindow();\n }\n\n isChild() : boolean {\n if (!isZoidComponentWindow()) {\n return false;\n }\n\n const { tag, childDomain } = getComponentMeta();\n\n if (childDomain && childDomain !== getDomain()) {\n return false;\n }\n\n if (tag !== this.tag) {\n return false;\n }\n\n return true;\n }\n\n\n createError(message : string, tag : ?string) : Error {\n return new Error(`[${ tag || this.tag }] ${ message }`);\n }\n\n\n /* Init\n ----\n\n Shortcut to instantiate a component on a parent page, with props\n */\n\n init(props : (PropsType & P), context : ?string, element : ElementRefType) : ParentComponent

{\n return new ParentComponent(this, this.getRenderContext(context, element), { props });\n }\n\n\n delegate(source : CrossDomainWindowType, options : DelegateOptionsType) : DelegateComponent

{\n return new DelegateComponent(this, source, options);\n }\n\n validateRenderContext(context : ?string, element : ?ElementRefType) {\n if (context && !this.contexts[context]) {\n throw new Error(`[${ this.tag }] Can not render to ${ context }`);\n }\n\n if (!element && context === CONTEXT_TYPES.IFRAME) {\n throw new Error(`[${ this.tag }] Context type ${ CONTEXT_TYPES.IFRAME } requires an element selector`);\n }\n }\n\n getDefaultContext() : string {\n if (this.defaultContext) {\n return this.defaultContext;\n } else if (this.contexts[CONTEXT_TYPES.IFRAME]) {\n return CONTEXT_TYPES.IFRAME;\n } else if (this.contexts[CONTEXT_TYPES.POPUP]) {\n return CONTEXT_TYPES.POPUP;\n }\n\n throw new Error(`Can not determine default context`);\n }\n\n getRenderContext(context : ?string, element : ?ElementRefType) : string {\n context = context || this.getDefaultContext();\n this.validateRenderContext(context, element);\n return context;\n }\n\n\n /* Render\n ------\n\n Shortcut to render a parent component\n */\n\n render(props : (PropsType & P), element : ?ElementRefType) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(null, element), { props }).render(element);\n });\n }\n\n renderIframe(props : (PropsType & P), element : ElementRefType) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(CONTEXT_TYPES.IFRAME, element), { props }).render(element);\n });\n }\n\n renderPopup(props : (PropsType & P)) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(CONTEXT_TYPES.POPUP), { props }).render();\n });\n }\n\n renderTo(win : CrossDomainWindowType, props : (PropsType & P), element : ?ElementRefType) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(null, element), { props }).renderTo(win, element);\n });\n }\n\n renderIframeTo(win : CrossDomainWindowType, props : (PropsType & P), element : ElementRefType) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(CONTEXT_TYPES.IFRAME, element), { props }).renderTo(win, element);\n });\n }\n\n renderPopupTo(win : CrossDomainWindowType, props : (PropsType & P)) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(CONTEXT_TYPES.POPUP), { props }).renderTo(win);\n });\n }\n\n prerender(props : (PropsType & P), element : ElementRefType) : { render : ((PropsType & P), ElementRefType) => ZalgoPromise>, renderTo : (CrossDomainWindowType, (PropsType & P), ElementRefType) => ZalgoPromise> } {\n let instance = new ParentComponent(this, this.getRenderContext(null, element), { props });\n instance.prefetch();\n\n return {\n render(innerProps : (PropsType & P), innerElement : ElementRefType) : ZalgoPromise> {\n if (innerProps) {\n instance.updateProps(innerProps);\n }\n\n return instance.render(innerElement);\n },\n\n renderTo(win : CrossDomainWindowType, innerProps : (PropsType & P), innerElement : ElementRefType) : ZalgoPromise> {\n if (innerProps) {\n instance.updateProps(innerProps);\n }\n\n return instance.renderTo(win, innerElement);\n },\n\n get html() : ?ZalgoPromise {\n return instance.html;\n },\n\n set html(value) {\n instance.html = value;\n }\n };\n }\n\n /* Log\n ---\n\n Log an event using the component name\n */\n\n log(event : string, payload : { [ string ] : string } = {}) {\n info(this.name, event, payload);\n }\n\n\n /* Log Warning\n -----------\n\n Log a warning\n */\n\n logWarning(event : string, payload : { [ string ] : string }) {\n warn(this.name, event, payload);\n }\n\n\n /* Log Error\n ---------\n\n Log an error\n */\n\n logError(event : string, payload : { [ string ] : string }) {\n error(this.name, event, payload);\n }\n\n static components : { [string] : Component<*> } = {}\n\n static getByTag(tag : string) : Component {\n return Component.components[tag];\n }\n}\n","/* @flow */\n\nimport { PROP_TYPES_LIST, CONTEXT_TYPES_LIST } from '../../constants';\nimport { isPerc, isPx } from '../../lib';\n\nimport type { ComponentOptionsType } from './index';\n\nfunction validatePropDefinitions

(options : ComponentOptionsType

) {\n\n if (options.props && !(typeof options.props === 'object')) {\n throw new Error(`Expected options.props to be an object`);\n }\n\n if (options.props) {\n for (let key of Object.keys(options.props)) {\n\n // $FlowFixMe\n let prop = options.props[key];\n\n if (!prop || !(typeof prop === 'object')) {\n throw new Error(`Expected options.props.${ key } to be an object`);\n }\n\n if (!prop.type) {\n throw new Error(`Expected prop.type`);\n }\n\n if (PROP_TYPES_LIST.indexOf(prop.type) === -1) {\n throw new Error(`Expected prop.type to be one of ${ PROP_TYPES_LIST.join(', ') }`);\n }\n\n if (prop.required && prop.def) {\n throw new Error(`Required prop can not have a default value`);\n }\n }\n }\n}\n\n// eslint-disable-next-line complexity\nexport function validate

(options : ?ComponentOptionsType

) { // eslint-ignore-line\n\n if (!options) {\n throw new Error(`Expecred options to be passed`);\n }\n\n if (!options.tag || !options.tag.match(/^[a-z0-9-]+$/)) {\n throw new Error(`Invalid options.tag: ${ options.tag }`);\n }\n\n validatePropDefinitions(options);\n\n if (options.dimensions) {\n if (options.dimensions && !isPx(options.dimensions.width) && !isPerc(options.dimensions.width)) {\n throw new Error(`Expected options.dimensions.width to be a px or % string value`);\n }\n\n if (options.dimensions && !isPx(options.dimensions.height) && !isPerc(options.dimensions.height)) {\n throw new Error(`Expected options.dimensions.height to be a px or % string value`);\n }\n }\n\n if (options.contexts) {\n\n if (options.contexts.popup && !__ZOID__.__POPUP_SUPPORT__) {\n throw new Error(`Popups not supported in this build -- please use the full zoid.js build`);\n }\n\n let anyEnabled = false;\n\n for (let context of Object.keys(options.contexts)) {\n\n if (CONTEXT_TYPES_LIST.indexOf(context) === -1) {\n throw new Error(`Unsupported context type: ${ context }`);\n }\n\n if ((options.contexts && options.contexts[context]) || (options.contexts && options.contexts[context] === undefined)) {\n anyEnabled = true;\n }\n }\n\n if (!anyEnabled) {\n throw new Error(`No context type is enabled`);\n }\n }\n\n if (options.defaultContext) {\n if (CONTEXT_TYPES_LIST.indexOf(options.defaultContext) === -1) {\n throw new Error(`Unsupported context type: ${ options.defaultContext || 'unknown' }`);\n }\n\n if (options.contexts && options.defaultContext && !options.contexts[options.defaultContext]) {\n throw new Error(`Disallowed default context type: ${ options.defaultContext || 'unknown' }`);\n }\n }\n\n if (options.url && options.buildUrl) {\n throw new Error(`Can not pass both options.url and options.buildUrl`);\n }\n\n if (options.defaultEnv) {\n if (typeof options.defaultEnv !== 'string') {\n throw new TypeError(`Expected options.defaultEnv to be a string`);\n }\n\n if (!options.buildUrl && typeof options.url !== 'object') {\n throw new Error(`Expected options.url to be an object mapping env->url`);\n }\n\n if (options.url && typeof options.url === 'object' && !options.url[options.defaultEnv]) {\n throw new Error(`No url found for default env: ${ options.defaultEnv }`);\n }\n }\n\n if (options.url && typeof options.url === 'object') {\n\n if (!options.defaultEnv) {\n throw new Error(`Must pass options.defaultEnv with env->url mapping`);\n }\n\n for (let env of Object.keys(options.url)) {\n if (!options.url[env]) {\n throw new Error(`No url specified for env: ${ env }`);\n }\n }\n }\n\n if (options.prerenderTemplate && typeof options.prerenderTemplate !== 'function') {\n throw new Error(`Expected options.prerenderTemplate to be a function`);\n }\n\n if (options.containerTemplate && typeof options.containerTemplate !== 'function') {\n throw new Error(`Expected options.containerTemplate to be a function`);\n }\n}\n","/* @flow */\n\nimport { type ZalgoPromise } from 'zalgo-promise/src';\nimport type { SameDomainWindowType } from 'cross-domain-utils/src';\n\nimport { uniqueID } from '../../lib';\nimport { type DimensionsType } from '../../types';\n\ntype PropDefinitionType = {\n type : S,\n alias? : string,\n value? : T,\n required? : boolean,\n noop? : boolean,\n once? : boolean,\n memoize? : boolean,\n promisify? : boolean,\n queryParam? : boolean | string | (T) => (string | ZalgoPromise),\n queryValue? : (T) => (ZalgoPromise | mixed),\n sendToChild? : boolean,\n allowDelegate? : boolean,\n validate? : (T, PropsType & P) => void,\n decorate? : (T, PropsType & P) => (void | ZalgoPromise | T),\n def? : (P) => ?T,\n sameDomain? : boolean,\n serialization? : 'json' | 'dotify',\n childDecorate? : (T) => ?T,\n denodeify? : boolean\n};\n\nexport type BooleanPropDefinitionType = PropDefinitionType;\nexport type StringPropDefinitionType = PropDefinitionType;\nexport type NumberPropDefinitionType = PropDefinitionType;\nexport type FunctionPropDefinitionType = PropDefinitionType;\nexport type ObjectPropDefinitionType = PropDefinitionType;\n\nexport type MixedPropDefinitionType

= BooleanPropDefinitionType<*, P> | StringPropDefinitionType<*, P> | NumberPropDefinitionType<*, P> | FunctionPropDefinitionType<*, P> | ObjectPropDefinitionType<*, P>;\n\nexport type UserPropsDefinitionType

= {\n [string] : MixedPropDefinitionType

\n};\n\nexport type EventHandlerType = (T) => void | ZalgoPromise;\n\ntype envPropType = string;\ntype uidPropType = string;\ntype urlPropType = string;\ntype versionPropType = string;\ntype timeoutPropType = number;\ntype logLevelPropType = string;\ntype dimensionsPropType = DimensionsType;\ntype winPropType = SameDomainWindowType;\n\ntype onDisplayPropType = EventHandlerType;\ntype onEnterPropType = EventHandlerType;\ntype onRenderPropType = EventHandlerType;\ntype onClosePropType = EventHandlerType;\ntype onResizePropType = EventHandlerType;\ntype onTimeoutPropType = EventHandlerType;\ntype onErrorPropType = EventHandlerType;\n\nexport type BuiltInPropsType = {\n env : envPropType,\n uid : uidPropType,\n url? : urlPropType,\n version? : versionPropType,\n timeout? : timeoutPropType,\n logLevel : logLevelPropType,\n dimensions? : dimensionsPropType,\n win? : winPropType,\n\n onDisplay : onDisplayPropType,\n onEnter : onEnterPropType,\n onRender : onRenderPropType,\n onClose : onClosePropType,\n onResize : onResizePropType,\n onTimeout : onTimeoutPropType,\n onError? : onErrorPropType\n};\n\nexport type PropsType = {\n env? : envPropType,\n uid? : uidPropType,\n url? : urlPropType,\n version? : versionPropType,\n timeout? : timeoutPropType,\n logLevel? : logLevelPropType,\n dimensions? : dimensionsPropType,\n win? : winPropType,\n\n onDisplay? : onDisplayPropType,\n onEnter? : onEnterPropType,\n onRender? : onRenderPropType,\n onClose? : onClosePropType,\n onResize? : onResizePropType,\n onTimeout? : onTimeoutPropType,\n onError? : onErrorPropType\n};\n\nexport type BuiltInPropsDefinitionType

= {\n env : StringPropDefinitionType,\n uid : StringPropDefinitionType,\n url : StringPropDefinitionType,\n version : StringPropDefinitionType,\n timeout : NumberPropDefinitionType,\n logLevel : StringPropDefinitionType,\n dimensions : ObjectPropDefinitionType,\n win : ObjectPropDefinitionType,\n\n onDisplay : FunctionPropDefinitionType,\n onEnter : FunctionPropDefinitionType,\n onRender : FunctionPropDefinitionType,\n onClose : FunctionPropDefinitionType,\n onResize : FunctionPropDefinitionType,\n onTimeout : FunctionPropDefinitionType,\n onError : FunctionPropDefinitionType\n};\n\n/* Internal Props\n --------------\n\n We define and use certain props by default, for configuration and events that are used at the framework level.\n These follow the same format as regular props, and are classed as reserved words that may not be overriden by users.\n*/\n\nexport function getInternalProps

() : BuiltInPropsDefinitionType

{\n return {\n\n // The desired env in which the component is being rendered. Used to determine the correct url\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n def() : string {\n return this.defaultEnv;\n }\n },\n\n uid: {\n type: 'string',\n def() : string {\n return uniqueID();\n },\n queryParam: true\n },\n\n logLevel: {\n type: 'string',\n required: false,\n queryParam: true,\n def() : string {\n return this.defaultLogLevel;\n }\n },\n\n // A custom url to use to render the component\n\n url: {\n type: 'string',\n required: false,\n promise: true,\n sendToChild: false\n },\n\n win: {\n type: 'object',\n required: false,\n sendToChild: false\n },\n\n dimensions: {\n type: 'object',\n required: false\n },\n\n version: {\n type: 'string',\n required: false,\n queryParam: true,\n def() : string {\n return this.version;\n }\n },\n\n // A millisecond timeout before onTimeout is called\n\n timeout: {\n type: 'number',\n required: false,\n sendToChild: false\n },\n\n onDisplay: {\n type: 'function',\n required: false,\n noop: true,\n promisify: true,\n memoize: true,\n sendToChild: false\n },\n\n onEnter: {\n type: 'function',\n required: false,\n noop: true,\n promisify: true,\n sendToChild: false\n },\n\n // When we get an INIT message from the child\n\n onRender: {\n type: 'function',\n required: false,\n noop: true,\n promisify: true,\n sendToChild: false\n },\n\n // When the user closes the component.\n\n onClose: {\n type: 'function',\n required: false,\n noop: true,\n once: true,\n promisify: true,\n sendToChild: false\n },\n\n onResize: {\n type: 'function',\n required: false,\n noop: true,\n sendToChild: false\n },\n\n // When we time-out before getting an INIT message from the child. Defaults to onError if no handler passed.\n\n onTimeout: {\n type: 'function',\n required: false,\n memoize: true,\n promisify: true,\n sendToChild: false,\n def() : (() => void) {\n return function onTimeout(err : mixed) : void {\n if (this.props.onError) {\n return this.props.onError(err);\n }\n throw err;\n };\n }\n },\n\n // When the component experiences an error\n\n onError: {\n type: 'function',\n required: false,\n promisify: true,\n sendToChild: true,\n once: true,\n def() : (() => void) {\n return function onError(err : mixed) {\n setTimeout(() => {\n throw err;\n });\n };\n }\n }\n };\n}\n","/* @flow */\n\nimport { type ZalgoPromise } from 'zalgo-promise/src';\n// eslint-disable-next-line import/no-namespace\nimport * as _postRobot from 'post-robot/src';\n\nimport { Component, type ComponentOptionsType } from './component';\nimport { ParentComponent } from './component/parent';\n// eslint-disable-next-line import/no-namespace\nimport * as _CONSTANTS from './constants';\n\nexport function create

(options : ComponentOptionsType

) : Component

{\n return new Component(options);\n}\n\nexport function getByTag

(tag : string) : Component

{\n return Component.getByTag(tag);\n}\n\nexport { getCurrentScriptDir } from './lib';\n\nexport function destroyAll() : ZalgoPromise {\n return ParentComponent.destroyAll();\n}\nexport let postRobot = _postRobot;\n\nexport * from './error';\n\nexport const CONSTANTS = _CONSTANTS;\n\nexport type ZoidComponent

= Component

;\n","/* @flow */\n\n// eslint-disable-next-line import/no-namespace\nimport * as INTERFACE from './interface';\n\nexport * from './interface';\nexport default INTERFACE;\n","/* @flow */\n\nimport {\n getOpener,\n getTop\n} from 'cross-domain-utils/src';\n\nexport function getUserAgent() : string {\n return window.navigator.mockUserAgent || window.navigator.userAgent;\n}\n\nexport function isDevice() : boolean {\n const userAgent = getUserAgent();\n if (userAgent.match(/Android|webOS|iPhone|iPad|iPod|bada|Symbian|Palm|CriOS|BlackBerry|IEMobile|WindowsMobile|Opera Mini/i)) {\n return true;\n }\n\n return false;\n}\n\nexport function isInsidePopup() : boolean {\n // Checks to see if the top-most window is a pop-up\n return Boolean(getOpener(getTop(window) || window));\n}\n\nexport function isStandAlone() : boolean {\n // Chrome interprets pop-up windows as standalone windows\n return !isInsidePopup() && (window.navigator.standalone === true || window.matchMedia('(display-mode: standalone)').matches);\n}\n\nexport function isFacebookWebView(ua? : string = getUserAgent()) : boolean {\n return (ua.indexOf('FBAN') !== -1) || (ua.indexOf('FBAV') !== -1);\n}\n\nexport function isFirefoxIOS(ua? : string = getUserAgent()) : boolean {\n return (/FxiOS/i).test(ua);\n}\n\nexport function isEdgeIOS(ua? : string = getUserAgent()) : boolean {\n return (/EdgiOS/i).test(ua);\n}\n\nexport function isOperaMini(ua? : string = getUserAgent()) : boolean {\n return ua.indexOf('Opera Mini') > -1;\n}\n\nexport function isAndroid(ua? : string = getUserAgent()) : boolean {\n return (/Android/).test(ua);\n}\n\nexport function isIos(ua? : string = getUserAgent()) : boolean {\n return (/iPhone|iPod|iPad/).test(ua);\n}\n\nexport function isGoogleSearchApp(ua? : string = getUserAgent()) : boolean {\n return (/\\bGSA\\b/).test(ua);\n}\n\nexport function isQQBrowser(ua? : string = getUserAgent()) : boolean {\n return (/QQBrowser/).test(ua);\n}\n\nexport function isIosWebview(ua? : string = getUserAgent()) : boolean {\n if (isIos(ua)) {\n if (isGoogleSearchApp(ua)) {\n return true;\n }\n return (/.+AppleWebKit(?!.*Safari)/).test(ua);\n }\n return false;\n}\n\nexport function isAndroidWebview(ua? : string = getUserAgent()) : boolean {\n if (isAndroid(ua)) {\n return (/Version\\/[\\d.]+/).test(ua) && !isOperaMini(ua);\n }\n return false;\n}\n\nexport function isWebView() : boolean {\n return isFacebookWebView() ||\n isIosWebview() ||\n isAndroidWebview();\n}\n\nexport function isIE() : boolean {\n\n if (window.document.documentMode) {\n return true;\n }\n\n if (window.navigator && typeof window.navigator.userAgent === 'string') {\n if ((/Edge|MSIE/i).test(window.navigator.userAgent)) {\n return true;\n }\n }\n\n return false;\n}\n\n\nexport function isIE11() : boolean {\n if (!isIE()) {\n return false;\n }\n\n if (window.navigator && typeof window.navigator.userAgent === 'string') {\n if ((/MSIE 11\\.0/i).test(window.navigator.userAgent)) {\n return true;\n }\n\n if ((/Trident/i).test(window.navigator.userAgent) && (/rv:11\\.0/i).test(window.navigator.userAgent)) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function isIECompHeader() : boolean {\n const mHttp = window.document.querySelector('meta[http-equiv=\"X-UA-Compatible\"]');\n const mContent = window.document.querySelector('meta[content=\"IE=edge\"]');\n if (mHttp && mContent) {\n return true;\n }\n return false;\n}\n\nexport function isElectron() : boolean {\n const userAgent = getUserAgent();\n // here we want a case-insensitive full word boundary\n return (/\\belectron\\b/i).test(userAgent);\n}\n\nexport function isIEIntranet() : boolean {\n if (!isIE11()) {\n return false;\n }\n\n // This status check only works for older versions of IE with document.documentMode set\n\n if (window.document.documentMode) {\n try {\n const status = window.status;\n\n window.status = 'testIntranetMode';\n\n if (window.status === 'testIntranetMode') {\n window.status = status;\n\n return true;\n }\n\n return false;\n\n } catch (err) {\n\n return false;\n }\n }\n\n return false;\n}\n\nexport function isMacOsCna() : boolean {\n const userAgent = getUserAgent();\n return (/Macintosh.*AppleWebKit(?!.*Safari)/i).test(userAgent);\n}\n\nexport function supportsPopups(ua? : string = getUserAgent()) : boolean {\n return !(isIosWebview(ua) || isAndroidWebview(ua) || isOperaMini(ua) ||\n isFirefoxIOS(ua) || isEdgeIOS(ua) || isFacebookWebView(ua) || isQQBrowser(ua) || isElectron() || isMacOsCna() || isStandAlone());\n}\n","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","/* @flow */\n\nimport { type ZalgoPromise } from 'zalgo-promise/src';\nimport { getParent, isWindowClosed, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONSTANTS } from '../conf';\nimport { noop } from '../lib';\nimport { global } from '../global';\n\n/*\n HERE BE DRAGONS\n\n Warning: this file may look weird. Why save the tunnel window in an Object\n by ID, then look it up later, rather than just using the reference from the closure scope?\n\n The reason is, that ends up meaning the garbage collector can never get its hands\n on a closed window, since our closure has continued access to it -- and post-robot\n has no good way to know whether to clean up the function with the closure scope.\n\n If you're editing this file, be sure to run significant memory / GC tests afterwards.\n*/\n\nglobal.tunnelWindows = global.tunnelWindows || {};\nglobal.tunnelWindowId = 0;\n\nfunction deleteTunnelWindow(id) {\n\n try {\n if (global.tunnelWindows[id]) {\n delete global.tunnelWindows[id].source;\n }\n } catch (err) {\n // pass\n }\n\n delete global.tunnelWindows[id];\n}\n\nfunction cleanTunnelWindows() {\n let tunnelWindows = global.tunnelWindows;\n\n for (let key of Object.keys(tunnelWindows)) {\n let tunnelWindow = tunnelWindows[key];\n\n try {\n noop(tunnelWindow.source);\n } catch (err) {\n deleteTunnelWindow(key);\n continue;\n }\n\n if (isWindowClosed(tunnelWindow.source)) {\n deleteTunnelWindow(key);\n }\n }\n}\n\ntype TunnelWindowDataType = {\n name : string,\n source : CrossDomainWindowType,\n canary : () => void,\n sendMessage : (message : string) => void\n};\n\nfunction addTunnelWindow({ name, source, canary, sendMessage } : TunnelWindowDataType) : number {\n cleanTunnelWindows();\n global.tunnelWindowId += 1;\n global.tunnelWindows[global.tunnelWindowId] = { name, source, canary, sendMessage };\n return global.tunnelWindowId;\n}\n\nfunction getTunnelWindow(id : number) : TunnelWindowDataType {\n return global.tunnelWindows[id];\n}\n\nglobal.openTunnelToParent = function openTunnelToParent({ name, source, canary, sendMessage } : TunnelWindowDataType) : ZalgoPromise<{ source : CrossDomainWindowType, origin : string, data : Object }> {\n\n let parentWindow = getParent(window);\n\n if (!parentWindow) {\n throw new Error(`No parent window found to open tunnel to`);\n }\n\n let id = addTunnelWindow({ name, source, canary, sendMessage });\n\n return global.send(parentWindow, CONSTANTS.POST_MESSAGE_NAMES.OPEN_TUNNEL, {\n\n name,\n\n sendMessage() {\n\n let tunnelWindow = getTunnelWindow(id);\n\n try {\n // IE gets antsy if you try to even reference a closed window\n noop(tunnelWindow && tunnelWindow.source);\n } catch (err) {\n deleteTunnelWindow(id);\n return;\n }\n\n if (!tunnelWindow || !tunnelWindow.source || isWindowClosed(tunnelWindow.source)) {\n return;\n }\n\n try {\n tunnelWindow.canary();\n } catch (err) {\n return;\n }\n\n tunnelWindow.sendMessage.apply(this, arguments);\n }\n\n }, { domain: CONSTANTS.WILDCARD });\n};\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getDomain, isSameDomain, isOpener, isSameTopWindow, matchDomain, getUserAgent, getDomainFromUrl, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONFIG, CONSTANTS } from '../conf';\nimport { global } from '../global';\n\nexport function needsBridgeForBrowser() : boolean {\n\n if (getUserAgent(window).match(/MSIE|trident|edge\\/12|edge\\/13/i)) {\n return true;\n }\n\n if (!CONFIG.ALLOW_POSTMESSAGE_POPUP) {\n return true;\n }\n\n return false;\n}\n\nexport function needsBridgeForWin(win : CrossDomainWindowType) : boolean {\n\n if (!isSameTopWindow(window, win)) {\n return true;\n }\n\n return false;\n}\n\nexport function needsBridgeForDomain(domain : ?string, win : ?CrossDomainWindowType) : boolean {\n\n if (domain) {\n if (getDomain() !== getDomainFromUrl(domain)) {\n return true;\n }\n } else if (win) {\n if (!isSameDomain(win)) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function needsBridge({ win, domain } : { win? : CrossDomainWindowType, domain? : string }) : boolean {\n\n if (!needsBridgeForBrowser()) {\n return false;\n }\n\n if (domain && !needsBridgeForDomain(domain, win)) {\n return false;\n }\n\n if (win && !needsBridgeForWin(win)) {\n return false;\n }\n\n return true;\n}\n\nexport function getBridgeName(domain : string) : string {\n\n domain = domain || getDomainFromUrl(domain);\n\n let sanitizedDomain = domain.replace(/[^a-zA-Z0-9]+/g, '_');\n\n let id = `${ CONSTANTS.BRIDGE_NAME_PREFIX }_${ sanitizedDomain }`;\n\n return id;\n}\n\nexport function isBridge() : boolean {\n return Boolean(window.name && window.name === getBridgeName(getDomain()));\n}\n\nexport let documentBodyReady = new ZalgoPromise(resolve => {\n\n if (window.document && window.document.body) {\n return resolve(window.document.body);\n }\n\n let interval = setInterval(() => {\n if (window.document && window.document.body) {\n clearInterval(interval);\n return resolve(window.document.body);\n }\n }, 10);\n});\n\nglobal.remoteWindows = global.remoteWindows || new WeakMap();\n\nexport function registerRemoteWindow(win : CrossDomainWindowType) {\n global.remoteWindows.set(win, { sendMessagePromise: new ZalgoPromise() });\n}\n\nexport function findRemoteWindow(win : CrossDomainWindowType) : { sendMessagePromise : ZalgoPromise<(remoteWin : CrossDomainWindowType, message : string, remoteDomain : string) => void> } {\n return global.remoteWindows.get(win);\n}\n\nexport function registerRemoteSendMessage(win : CrossDomainWindowType, domain : string, sendMessage : (message : string) => void) {\n\n let remoteWindow = findRemoteWindow(win);\n\n if (!remoteWindow) {\n throw new Error(`Window not found to register sendMessage to`);\n }\n\n let sendMessageWrapper = (remoteWin : CrossDomainWindowType, message : string, remoteDomain : string) => {\n\n if (remoteWin !== win) {\n throw new Error(`Remote window does not match window`);\n }\n\n if (!matchDomain(remoteDomain, domain)) {\n throw new Error(`Remote domain ${ remoteDomain } does not match domain ${ domain }`);\n }\n\n sendMessage(message);\n };\n\n remoteWindow.sendMessagePromise.resolve(sendMessageWrapper);\n remoteWindow.sendMessagePromise = ZalgoPromise.resolve(sendMessageWrapper);\n}\n\nexport function rejectRemoteSendMessage(win : CrossDomainWindowType, err : Error) {\n\n let remoteWindow = findRemoteWindow(win);\n\n if (!remoteWindow) {\n throw new Error(`Window not found on which to reject sendMessage`);\n }\n\n remoteWindow.sendMessagePromise.asyncReject(err);\n}\n\nexport function sendBridgeMessage(win : CrossDomainWindowType, message : string, domain : string) : ZalgoPromise {\n\n let messagingChild = isOpener(window, win);\n let messagingParent = isOpener(win, window);\n\n if (!messagingChild && !messagingParent) {\n throw new Error(`Can only send messages to and from parent and popup windows`);\n }\n\n let remoteWindow = findRemoteWindow(win);\n\n if (!remoteWindow) {\n throw new Error(`Window not found to send message to`);\n }\n\n return remoteWindow.sendMessagePromise.then(sendMessage => {\n return sendMessage(win, message, domain);\n });\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { isSameDomain, getOpener, getFrames, getDomain, getFrameByName, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONSTANTS } from '../conf';\nimport { weakMapMemoize, noop } from '../lib';\nimport { global } from '../global';\n\nimport { needsBridge, registerRemoteWindow, rejectRemoteSendMessage, registerRemoteSendMessage, getBridgeName } from './common';\n\nlet awaitRemoteBridgeForWindow = weakMapMemoize((win : CrossDomainWindowType) : ZalgoPromise => {\n return ZalgoPromise.try(() => {\n for (let frame of getFrames(win)) {\n try {\n // $FlowFixMe\n if (frame && frame !== window && isSameDomain(frame) && frame[CONSTANTS.WINDOW_PROPS.POSTROBOT]) {\n return frame;\n }\n\n } catch (err) {\n continue;\n }\n }\n\n try {\n let frame = getFrameByName(win, getBridgeName(getDomain()));\n\n if (!frame) {\n return;\n }\n\n // $FlowFixMe\n if (isSameDomain(frame) && frame[CONSTANTS.WINDOW_PROPS.POSTROBOT]) {\n return frame;\n }\n\n return new ZalgoPromise(resolve => {\n\n let interval;\n let timeout;\n\n interval = setInterval(() => {\n // $FlowFixMe\n if (frame && isSameDomain(frame) && frame[CONSTANTS.WINDOW_PROPS.POSTROBOT]) {\n clearInterval(interval);\n clearTimeout(timeout);\n return resolve(frame);\n }\n }, 100);\n\n timeout = setTimeout(() => {\n clearInterval(interval);\n return resolve();\n }, 2000);\n });\n\n } catch (err) {\n // pass\n }\n });\n});\n\nexport function openTunnelToOpener() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n const opener = getOpener(window);\n\n if (!opener) {\n return;\n }\n\n if (!needsBridge({ win: opener })) {\n return;\n }\n\n registerRemoteWindow(opener);\n\n return awaitRemoteBridgeForWindow(opener).then(bridge => {\n\n if (!bridge) {\n return rejectRemoteSendMessage(opener, new Error(`Can not register with opener: no bridge found in opener`));\n }\n\n if (!window.name) {\n return rejectRemoteSendMessage(opener, new Error(`Can not register with opener: window does not have a name`));\n }\n\n return bridge[CONSTANTS.WINDOW_PROPS.POSTROBOT].openTunnelToParent({\n\n name: window.name,\n\n source: window,\n\n canary() {\n // pass\n },\n\n sendMessage(message) {\n\n try {\n noop(window);\n } catch (err) {\n return;\n }\n\n if (!window || window.closed) {\n return;\n }\n\n try {\n global.receiveMessage({\n data: message,\n origin: this.origin,\n source: this.source\n });\n } catch (err) {\n ZalgoPromise.reject(err);\n }\n }\n\n }).then(({ source, origin, data }) => {\n\n if (source !== opener) {\n throw new Error(`Source does not match opener`);\n }\n\n registerRemoteSendMessage(source, origin, data.sendMessage);\n\n }).catch(err => {\n\n rejectRemoteSendMessage(opener, err);\n throw err;\n });\n });\n });\n}\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getDomain, getFrameByName, isWindowClosed, getDomainFromUrl, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONFIG, CONSTANTS } from '../conf';\nimport { onChildWindowReady } from '../lib';\nimport { global } from '../global';\n\nimport { getBridgeName, documentBodyReady, registerRemoteSendMessage, registerRemoteWindow } from './common';\n\nglobal.bridges = global.bridges || {};\nglobal.bridgeFrames = global.bridgeFrames || {};\n\nglobal.popupWindowsByWin = global.popupWindowsByWin || new WeakMap();\nglobal.popupWindowsByName = global.popupWindowsByName || {};\n\nfunction listenForRegister(source, domain) {\n global.on(CONSTANTS.POST_MESSAGE_NAMES.OPEN_TUNNEL, { window: source, domain }, ({ origin, data }) => {\n\n if (origin !== domain) {\n throw new Error(`Domain ${ domain } does not match origin ${ origin }`);\n }\n\n if (!data.name) {\n throw new Error(`Register window expected to be passed window name`);\n }\n\n if (!data.sendMessage) {\n throw new Error(`Register window expected to be passed sendMessage method`);\n }\n\n if (!global.popupWindowsByName[data.name]) {\n throw new Error(`Window with name ${ data.name } does not exist, or was not opened by this window`);\n }\n\n if (!global.popupWindowsByName[data.name].domain) {\n throw new Error(`We do not have a registered domain for window ${ data.name }`);\n }\n\n if (global.popupWindowsByName[data.name].domain !== origin) {\n throw new Error(`Message origin ${ origin } does not matched registered window origin ${ global.popupWindowsByName[data.name].domain }`);\n }\n\n registerRemoteSendMessage(global.popupWindowsByName[data.name].win, domain, data.sendMessage);\n\n return {\n sendMessage(message) {\n\n if (!window || window.closed) {\n return;\n }\n\n let winDetails = global.popupWindowsByName[data.name];\n\n if (!winDetails) {\n return;\n }\n\n try {\n global.receiveMessage({\n data: message,\n origin: winDetails.domain,\n source: winDetails.win\n });\n } catch (err) {\n ZalgoPromise.reject(err);\n }\n }\n };\n });\n}\n\nfunction openBridgeFrame(name : string, url : string) : HTMLIFrameElement {\n\n let iframe = document.createElement(`iframe`);\n\n iframe.setAttribute(`name`, name);\n iframe.setAttribute(`id`, name);\n\n iframe.setAttribute(`style`, `display: none; margin: 0; padding: 0; border: 0px none; overflow: hidden;`);\n iframe.setAttribute(`frameborder`, `0`);\n iframe.setAttribute(`border`, `0`);\n iframe.setAttribute(`scrolling`, `no`);\n iframe.setAttribute(`allowTransparency`, `true`);\n\n iframe.setAttribute(`tabindex`, `-1`);\n iframe.setAttribute(`hidden`, `true`);\n iframe.setAttribute(`title`, ``);\n iframe.setAttribute(`role`, `presentation`);\n\n iframe.src = url;\n\n return iframe;\n}\n\nexport function hasBridge(url : string, domain : string) : boolean {\n domain = domain || getDomainFromUrl(url);\n return Boolean(global.bridges[domain]);\n}\n\nexport function openBridge(url : string, domain : string) : ZalgoPromise {\n\n domain = domain || getDomainFromUrl(url);\n\n if (global.bridges[domain]) {\n return global.bridges[domain];\n }\n\n global.bridges[domain] = ZalgoPromise.try(() => {\n\n if (getDomain() === domain) {\n throw new Error(`Can not open bridge on the same domain as current domain: ${ domain }`);\n }\n\n let name = getBridgeName(domain);\n let frame = getFrameByName(window, name);\n\n if (frame) {\n throw new Error(`Frame with name ${ name } already exists on page`);\n }\n\n let iframe = openBridgeFrame(name, url);\n global.bridgeFrames[domain] = iframe;\n\n return documentBodyReady.then(body => {\n\n body.appendChild(iframe);\n\n let bridge = iframe.contentWindow;\n\n listenForRegister(bridge, domain);\n\n return new ZalgoPromise((resolve, reject) => {\n\n iframe.onload = resolve;\n iframe.onerror = reject;\n\n }).then(() => {\n\n return onChildWindowReady(bridge, CONFIG.BRIDGE_TIMEOUT, `Bridge ${ url }`);\n\n }).then(() => {\n\n return bridge;\n });\n });\n });\n\n return global.bridges[domain];\n}\n\nlet windowOpen = window.open;\n\nwindow.open = function windowOpenWrapper(url : string, name : string, options : string, last : mixed) : mixed {\n\n let domain = url;\n\n if (url && url.indexOf(CONSTANTS.MOCK_PROTOCOL) === 0) {\n [ domain, url ] = url.split('|');\n }\n\n if (domain) {\n domain = getDomainFromUrl(domain);\n }\n\n let win = windowOpen.call(this, url, name, options, last);\n\n if (!win) {\n return win;\n }\n\n if (url) {\n registerRemoteWindow(win);\n }\n\n for (let winName of Object.keys(global.popupWindowsByName)) {\n if (isWindowClosed(global.popupWindowsByName[winName].win)) {\n delete global.popupWindowsByName[winName];\n }\n }\n\n if (name && win) {\n let winOptions = global.popupWindowsByWin.get(win) ||\n global.popupWindowsByName[name] || {};\n\n winOptions.name = winOptions.name || name;\n winOptions.win = winOptions.win || win;\n winOptions.domain = winOptions.domain || domain;\n\n global.popupWindowsByWin.set(win, winOptions);\n global.popupWindowsByName[name] = winOptions;\n }\n\n return win;\n};\n\nexport function linkUrl(win : CrossDomainWindowType, url : string) {\n\n let winOptions = global.popupWindowsByWin.get(win);\n\n if (winOptions) {\n winOptions.domain = getDomainFromUrl(url);\n registerRemoteWindow(win);\n }\n}\n\nexport function destroyBridges() {\n for (let domain of Object.keys(global.bridgeFrames)) {\n let frame = global.bridgeFrames[domain];\n if (frame.parentNode) {\n frame.parentNode.removeChild(frame);\n }\n }\n global.bridgeFrames = {};\n global.bridges = {};\n}\n","/* @flow */\n\n// eslint-disable-next-line import/no-unassigned-import\nimport './bridge';\n\nexport * from './child';\nexport * from './common';\nexport * from './parent';\n","/* @flow */\n\nimport { info } from 'beaver-logger/client';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport type { CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { LANG_TO_DEFAULT_COUNTRY, LOCALE } from '../constants';\nimport type { LocaleType } from '../types';\nimport { config } from '../config';\n\nimport { memoize } from './util';\nimport { isDevice } from './device';\n\nfunction isDocumentReady() : boolean {\n return Boolean(document.body) && document.readyState === 'complete';\n}\n\nexport const documentReady : ZalgoPromise = new ZalgoPromise(resolve => {\n\n if (isDocumentReady()) {\n return resolve();\n }\n\n const interval = setInterval(() => {\n if (isDocumentReady()) {\n clearInterval(interval);\n return resolve();\n }\n }, 10);\n});\n\nexport const documentBody : ZalgoPromise = documentReady.then(() => {\n if (document.body) {\n return document.body;\n }\n\n throw new Error('Document ready but document.body not present');\n});\n\n\nexport function loadScript(src : string, timeout : number = 0, attrs : Object = {}) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n const script = document.createElement('script');\n\n script.addEventListener('load', () => {\n resolve();\n });\n\n // For Internet explorer 8 support\n script.onreadystatechange = function scriptOnReadyStateChange() {\n if (this.readyState === 'complete' || this.readyState === 'loaded') {\n resolve();\n }\n };\n\n const scriptLoadError = new Error('script_loading_error');\n\n script.addEventListener('error', () => {\n return reject(scriptLoadError);\n });\n\n if (timeout) {\n setTimeout(() => {\n return reject(new Error('script_loading_timed_out'));\n }, timeout);\n }\n\n for (const attr of Object.keys(attrs)) {\n script.setAttribute(attr, attrs[attr]);\n }\n\n script.setAttribute('src', src);\n\n const head = document.getElementsByTagName('head')[0];\n\n head.appendChild(script);\n });\n}\n\n\nexport function isNodeList(nodes : mixed) : boolean {\n\n const result = Object.prototype.toString.call(nodes);\n\n if (result === '[object HTMLCollection]' || result === '[object NodeList]') {\n return true;\n }\n\n return false;\n}\n\nexport function isElement(item : mixed) : boolean {\n return item instanceof HTMLElement;\n}\n\nexport function getElement(item : mixed) : ?HTMLElement {\n\n if (!item) {\n return;\n }\n\n if (item instanceof HTMLElement) {\n return item;\n }\n\n if (typeof item === 'string') {\n\n if (document.querySelector) {\n const result = document.querySelector(item);\n\n if (result) {\n return result;\n }\n }\n\n return document.getElementById(item);\n }\n}\n\nexport function getElements(collection : $ReadOnlyArray | NodeList | HTMLCollection | HTMLElement | string) : $ReadOnlyArray {\n\n if (!collection) {\n return [];\n }\n\n if (collection instanceof HTMLElement || typeof collection === 'string') {\n const element = getElement(collection);\n if (element) {\n return [ element ];\n }\n return [];\n }\n\n if (Array.isArray(collection) || collection instanceof NodeList || collection instanceof HTMLCollection) {\n const result = [];\n\n for (let i = 0; i < collection.length; i++) {\n const el = getElement(collection[i]);\n if (el) {\n result.push(el);\n }\n }\n\n return result;\n }\n\n return [];\n}\n\nexport function onDocumentReady(method : () => void) : ZalgoPromise {\n return documentReady.then(method);\n}\n\nexport const parseQuery = memoize((queryString : string) : Object => {\n\n const params = {};\n\n if (!queryString) {\n return params;\n }\n\n if (queryString.indexOf('=') === -1) {\n return params;\n }\n\n for (let pair of queryString.split('&')) {\n pair = pair.split('=');\n\n if (pair[0] && pair[1]) {\n params[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n }\n\n return params;\n});\n\n\nexport function getQueryParam(name : string) : string {\n return parseQuery(window.location.search.slice(1))[name];\n}\n\nexport function urlWillRedirectPage(url : string) : boolean {\n\n if (url.indexOf('#') === -1) {\n return true;\n }\n\n if (url.indexOf('#') === 0) {\n return false;\n }\n\n if (url.split('#')[0] === window.location.href.split('#')[0]) {\n return false;\n }\n\n return true;\n}\n\nexport function extendUrl(url : string, params : { [key : string] : string } = {}) : string {\n\n const hasHash = url.indexOf('#') > 0;\n\n let [ serverUrl, hash ] = url.split('#');\n\n if (hash && !serverUrl) {\n [ serverUrl, hash ] = [ `#${ hash }`, '' ];\n }\n\n const [ originalUrl, originalQueryString ] = serverUrl.split('?');\n\n if (originalQueryString) {\n const originalQuery = parseQuery(originalQueryString);\n\n for (const key in originalQuery) {\n if (!params.hasOwnProperty(key)) {\n params[key] = originalQuery[key];\n }\n }\n }\n\n const newQueryString = Object.keys(params).filter(key => key && params[key]).sort().map(key => {\n return `${ encodeURIComponent(key) }=${ encodeURIComponent(params[key]) }`;\n }).join('&');\n\n let newUrl = originalUrl;\n\n if (newQueryString) {\n newUrl = `${ newUrl }?${ newQueryString }`;\n }\n\n if (hasHash) {\n newUrl = `${ newUrl }#${ hash || '' }`;\n }\n\n return newUrl;\n}\n\nexport function redirect(win : CrossDomainWindowType = window, url : string) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n\n info(`redirect`, { url });\n\n setTimeout(() => {\n win.location = url;\n if (!urlWillRedirectPage(url)) {\n resolve();\n }\n }, 1);\n });\n}\n\nexport function hasMetaViewPort() : boolean {\n const meta = document.querySelector('meta[name=viewport]');\n\n if (isDevice() && window.screen.width < 660 && !meta) {\n return false;\n }\n\n return true;\n}\n\nexport function getBrowserLocales() : $ReadOnlyArray {\n const nav = window.navigator;\n\n const locales = nav.languages\n ? Array.prototype.slice.apply(nav.languages)\n : [];\n\n if (nav.language) {\n locales.push(nav.language);\n }\n\n if (nav.userLanguage) {\n locales.push(nav.userLanguage);\n }\n\n return locales;\n}\n\nexport function normalizeLocale(locale : string) : ?LocaleType {\n\n if (locale && locale.match(/^[a-z]{2}[-_][A-Z]{2}$/)) {\n const [ lang, country ] = locale.split(/[-_]/);\n if (LOCALE[country] && LOCALE[country].indexOf(lang) !== -1) {\n return { country, lang };\n }\n }\n}\n\nexport function normalizeLang(lang : string) : ?LocaleType {\n\n if (lang && lang.match(/^[a-z]{2}$/)) {\n if (LANG_TO_DEFAULT_COUNTRY[lang]) {\n return { country: LANG_TO_DEFAULT_COUNTRY[lang], lang };\n }\n }\n}\n\nexport const getBrowserLocale = memoize(() : LocaleType => {\n\n const locales = getBrowserLocales();\n\n for (const locale of locales) {\n let loc = normalizeLocale(locale);\n if (loc) {\n info('better_browser_locale_full');\n return loc;\n }\n\n loc = normalizeLang(locale);\n if (loc) {\n info('better_browser_locale_lang');\n return loc;\n }\n }\n\n return config.defaultLocale;\n});\n\nexport function isElementVisible(el : HTMLElement) : boolean {\n return Boolean(el.offsetWidth || el.offsetHeight || el.getClientRects().length);\n}\n\nexport const enablePerformance = memoize(() : boolean => {\n /* eslint-disable compat/compat */\n return Boolean(\n window.performance &&\n performance.now &&\n performance.timing &&\n performance.timing.connectEnd &&\n performance.timing.navigationStart &&\n (Math.abs(performance.now() - Date.now()) > 1000) &&\n (performance.now() - (performance.timing.connectEnd - performance.timing.navigationStart)) > 0\n );\n /* eslint-enable compat/compat */\n});\n\nexport function getPageRenderTime() : ZalgoPromise {\n return documentReady.then(() => {\n\n if (!enablePerformance()) {\n return;\n }\n\n const timing = window.performance.timing; // eslint-disable-line compat/compat\n\n if (timing.connectEnd && timing.domInteractive) {\n return timing.domInteractive - timing.connectEnd;\n }\n });\n}\n\nexport function getResourceLoadTime(url : string) : ?number {\n\n if (!enablePerformance()) {\n return;\n }\n\n if (!window.performance || typeof window.performance.getEntries !== 'function') { // eslint-disable-line compat/compat\n return;\n }\n\n const entries = window.performance.getEntries(); // eslint-disable-line compat/compat\n\n for (let i = 0; i < entries.length; i++) {\n const entry = entries[i];\n\n if (entry && entry.name === url && entry.duration && entry.duration >= 0 && entry.duration <= 60000) {\n return Math.floor(entry.duration);\n }\n }\n}\n\nexport function htmlEncode(html : string = '') : string {\n return html.toString()\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(/\\//g, '/');\n}\n","/* @flow */\n\nimport { getParent, isSameDomain } from 'cross-domain-utils/src';\n\nimport { config } from '../config';\n\nimport { supportsPopups } from './device';\n\nexport function allowIframe() : boolean {\n\n if (!supportsPopups()) {\n return true;\n }\n\n const parentWindow = getParent(window);\n if (parentWindow && isSameDomain(parentWindow)) {\n return true;\n }\n\n const parentComponentWindow = window.xchild && window.xchild.getParentComponentWindow();\n if (parentComponentWindow && isSameDomain(parentComponentWindow)) {\n return true;\n }\n\n if (__TEST__) {\n return true;\n }\n\n return false;\n}\n\n\nexport function isPayPalDomain() : boolean {\n return Boolean(`${ window.location.protocol }//${ window.location.host }`.match(config.paypal_domain_regex)) || window.mockDomain === 'mock://www.paypal.com';\n}\n","/* @flow */\n\nexport function PopupOpenError(message : string) {\n this.message = message;\n}\n\nPopupOpenError.prototype = Object.create(Error.prototype);\n\nexport function IntegrationError(message : string) {\n this.message = message;\n}\n\nIntegrationError.prototype = Object.create(Error.prototype);\n\nexport function RenderError(message : string) {\n this.message = message;\n}\n\nRenderError.prototype = Object.create(Error.prototype);\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nexport type Braintree = {|\n client : {\n create : Function\n },\n paypalCheckout : {\n create : Function\n }\n|};\n\nexport type BraintreePayPalClient = {|\n createPayment : Function,\n tokenizePayment : Function\n|};\n\nexport function awaitBraintreeClient(braintree : Braintree, auth : string | ZalgoPromise) : ZalgoPromise {\n return ZalgoPromise.resolve(auth).then(authorization => {\n return braintree.client.create({ authorization });\n }).then(client => {\n return braintree.paypalCheckout.create({ client });\n });\n}\n\nconst SUPPORTED_REST_FIELDS = {\n intent: 1,\n transactions: [\n {\n amount: {\n total: 1,\n currency: 1\n }\n }\n ],\n payer: {\n external_selected_funding_instrument_type: 1,\n shipping_address: {\n line1: 1,\n line2: 1,\n city: 1,\n state: 1,\n postal_code: 1,\n country_code: 1,\n phone: 1,\n recipient_name: 1\n }\n },\n application_context: {\n brand_name: 1,\n shipping_preference: 1,\n landing_page: 1\n }\n};\n\nfunction validate(obj, supported, name) {\n\n const supportedKeys = Object.keys(supported);\n\n for (const key of Object.keys(obj)) {\n\n if (supportedKeys.indexOf(key) === -1) {\n throw new Error(`Unsupported REST key for Braintree: ${ name }.${ key }`);\n }\n\n if (typeof obj[key] === 'object') {\n validate(obj[key], supported[key], `${ name }.${ key }`);\n }\n }\n}\n\nexport function mapPaymentToBraintree(payment : Object) : Object {\n validate(payment, SUPPORTED_REST_FIELDS, 'payment');\n\n const btPayment = {};\n\n btPayment.intent = payment.intent || 'sale';\n btPayment.flow = 'checkout';\n btPayment.amount = payment.transactions[0].amount.total;\n btPayment.currency = payment.transactions[0].amount.currency;\n\n if (payment.payer) {\n if (payment.payer.external_selected_funding_instrument_type === 'CREDIT') {\n btPayment.offerCredit = true;\n }\n\n if (payment.payer.shipping_address) {\n btPayment.shippingAddressOverride = {\n line1: payment.payer.shipping_address.line1,\n line2: payment.payer.shipping_address.line2,\n city: payment.payer.shipping_address.city,\n state: payment.payer.shipping_address.state,\n postalCode: payment.payer.shipping_address.postal_code,\n countryCode: payment.payer.shipping_address.country_code,\n phone: payment.payer.shipping_address.phone,\n recipientName: payment.payer.shipping_address.recipient_name\n };\n }\n }\n\n if (payment.application_context) {\n btPayment.displayName = payment.application_context.brand_name;\n btPayment.landingPageType = payment.application_context.landing_page;\n\n if (payment.application_context) {\n if (payment.application_context.shipping_preference === 'NO_SHIPPING') {\n btPayment.enableShippingAddress = false;\n } else if (payment.application_context.shipping_preference === 'GET_FROM_FILE') {\n btPayment.enableShippingAddress = true;\n btPayment.shippingAddressEditable = true;\n } else if (payment.application_context.shipping_preference === 'SET_PROVIDED_ADDRESS') {\n btPayment.enableShippingAddress = true;\n btPayment.shippingAddressEditable = false;\n }\n }\n }\n\n return btPayment;\n}\n","/* @flow */\n\nexport * from './checkout';\nexport * from './braintree';\n// export * from './popupBridge';\n","/* @flow */\n\nexport * from './script';\nexport * from './react';\nexport * from './vue';\nexport * from './angular';\nexport * from './ember';\nexport * from './glimmer';\nexport * from './angular2';\n","/* @flow */\n\nimport { config } from '../config';\nimport { LOG_LEVEL } from '../constants';\n\nimport { getSessionID, getSessionState } from './session';\n\nconst BEACON_URL = config.loggerUrl;\nconst APP_NAME = 'checkoutjs';\n\nexport function beacon(event : string, payload : Object = {}) {\n try {\n\n payload.event = `ppxo_${ event }`;\n payload.version = __PAYPAL_CHECKOUT__.__MINOR_VERSION__;\n payload.host = window.location.host;\n payload.uid = getSessionID();\n payload.appName = APP_NAME;\n\n let query = [];\n\n for (const key in payload) {\n if (payload.hasOwnProperty(key)) {\n query.push(`${ encodeURIComponent(key) }=${ encodeURIComponent(payload[key]) }`);\n }\n }\n\n query = query.join('&');\n\n if (!__TEST__) {\n const beaconImage = new window.Image();\n beaconImage.src = `${ BEACON_URL }?${ query }`;\n }\n\n setTimeout(() => {\n if (config.logLevel === LOG_LEVEL.DEBUG) {\n if (window.console && window.console.log) {\n window.console.log('*', event, payload);\n }\n }\n }, 1);\n\n } catch (err) {\n // pass\n }\n}\n\nfunction isCheckpointUnique(name : string) : boolean {\n return getSessionState(state => {\n state.loggedBeacons = state.loggedBeacons || [];\n\n if (state.loggedBeacons.indexOf(name) === -1) {\n state.loggedBeacons.push(name);\n return true;\n }\n\n return false;\n });\n}\n\nexport function checkpoint(name : string, payload : Object = {}, options : Object = {}) : void {\n try {\n let checkpointName = name;\n\n if (options.version) {\n const version = __PAYPAL_CHECKOUT__.__MINOR_VERSION__.replace(/[^0-9]+/g, '_');\n checkpointName = `${ version }_${ checkpointName }`;\n }\n\n if (!isCheckpointUnique(checkpointName)) {\n return;\n }\n\n return beacon(checkpointName, payload);\n\n } catch (err) {\n\n // pass\n }\n}\n\n\nconst FPTI_URL = 'https://t.paypal.com/ts';\n\nfunction buildPayload() : Object {\n return {\n v: `checkout.js.${ __PAYPAL_CHECKOUT__.__MINOR_VERSION__ }`,\n t: Date.now(),\n g: new Date().getTimezoneOffset(),\n flnm: 'ec:hermes:',\n shir: 'main_ec_hermes_',\n pgrp: 'main:ec:hermes::incontext-merchant',\n page: 'main:ec:hermes::incontext-merchant',\n vers: 'member:hermes:',\n qual: 'incontext',\n tmpl: 'merchant:incontext'\n };\n}\n\nexport function fpti(payload : Object = {}) {\n\n let query = [];\n\n payload = { ...buildPayload(), ...payload };\n\n for (const key in payload) {\n if (payload.hasOwnProperty(key)) {\n query.push(`${ encodeURIComponent(key) }=${ encodeURIComponent(payload[key]) }`);\n }\n }\n\n query = query.join('&');\n\n try {\n const beaconImage = new window.Image();\n beaconImage.src = `${ FPTI_URL }?${ query }`;\n } catch (err) {\n // pass\n }\n}\n","/* @flow */\n/** @jsx jsxDom */\n\nconst checkoutComponentStyle = `\n\n body {\n width: 100%;\n height: 100%;\n overflow: hidden;\n position: fixed;\n top: 0;\n left: 0;\n margin: 0;\n }\n\n .spinner {\n height: 100%;\n width: 100%;\n position: absolute;\n z-index: 10\n }\n\n .spinner .spinWrap {\n width: 200px;\n height: 100px;\n position: absolute;\n top: 50%;\n left: 50%;\n margin-left: -100px;\n margin-top: -50px\n }\n\n .spinner .loader,\n .spinner .spinnerImage {\n height: 100px;\n width: 100px;\n position: absolute;\n top: 0;\n left: 50%;\n opacity: 1;\n filter: alpha(opacity=100)\n }\n\n .spinner .spinnerImage {\n margin: 28px 0 0 -25px;\n background: url(https://www.paypalobjects.com/images/checkout/hermes/icon_ot_spin_lock_skinny.png) no-repeat\n }\n\n .spinner .loader {\n margin: 0 0 0 -55px;\n background-color: transparent;\n -webkit-animation: rotation .7s infinite linear;\n -moz-animation: rotation .7s infinite linear;\n -o-animation: rotation .7s infinite linear;\n animation: rotation .7s infinite linear;\n border-left: 5px solid #cbcbca;\n border-right: 5px solid #cbcbca;\n border-bottom: 5px solid #cbcbca;\n border-top: 5px solid #2380be;\n border-radius: 100%\n }\n\n @-webkit-keyframes rotation {\n from {\n -webkit-transform: rotate(0deg)\n }\n to {\n -webkit-transform: rotate(359deg)\n }\n }\n @-moz-keyframes rotation {\n from {\n -moz-transform: rotate(0deg)\n }\n to {\n -moz-transform: rotate(359deg)\n }\n }\n @-o-keyframes rotation {\n from {\n -o-transform: rotate(0deg)\n }\n to {\n -o-transform: rotate(359deg)\n }\n }\n @keyframes rotation {\n from {\n transform: rotate(0deg)\n }\n to {\n transform: rotate(359deg)\n }\n }\n`;\n\nexport function componentTemplate({ jsxDom } : { jsxDom : Function }) : HTMLElement {\n\n return (\n \n \n PayPal\n \n \n \n

\n \n\n
\n

\n

\n

\n
\n \n \n );\n}\n","/* @flow */\n\nimport { CHECKOUT_OVERLAY_COLOR } from '../../../constants';\n\nexport function getContainerStyle({ id, tag, CONTEXT, CLASS, ANIMATION } : { id : string, tag : string, CONTEXT : Object, CLASS : Object, ANIMATION : Object }) : string {\n return `\n #${ id } {\n position: absolute;\n z-index: 2147483647;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n\n -webkit-transform: translate3d(0, 0, 0);\n -moz-transform: translate3d(0, 0, 0);\n -ms-transform: translate3d(0, 0, 0);\n -o-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.BLACK } {\n background-color: black;\n background-color: rgba(0, 0, 0, 0.75);\n\n background: -webkit-radial-gradient(50% 50%, ellipse closest-corner, rgba(0,0,0,1) 1%, rgba(0,0,0,0.75) 100%);\n background: -moz-radial-gradient(50% 50%, ellipse closest-corner, rgba(0,0,0,1) 1%, rgba(0,0,0,0.75) 100%);\n background: -ms-radial-gradient(50% 50%, ellipse closest-corner, rgba(0,0,0,1) 1%, rgba(0,0,0,0.75) 100%);\n background: radial-gradient(50% 50%, ellipse closest-corner, rgba(0,0,0,1) 1%, rgba(0,0,0,0.75) 100%);\n\n color: #fff;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.WHITE } {\n background-color: white;\n background-color: rgba(255, 255, 255, 0.4);\n\n background: -webkit-radial-gradient(50% 50%, ellipse closest-corner, rgba(255, 255, 255,1) 1%, rgba(255, 255, 255,0.4) 100%);\n background: -moz-radial-gradient(50% 50%, ellipse closest-corner, rgba(255, 255, 255,1) 1%, rgba(255, 255, 255,0.4) 100%);\n background: -ms-radial-gradient(50% 50%, ellipse closest-corner, rgba(255, 255, 255,1) 1%, rgba(255, 255, 255,0.4) 100%);\n background: radial-gradient(50% 50%, ellipse closest-corner, rgba(255, 255, 255,1) 1%, rgba(255, 255, 255,0.4) 100%);\n\n color: #333;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.BLACK } a {\n color: #fff;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.WHITE } a {\n color: #333;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.BLACK } .paypal-checkout-close:before,\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.BLACK } .paypal-checkout-close:after {\n background-color: #fff;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.WHITE } .paypal-checkout-close:before,\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.WHITE } .paypal-checkout-close:after {\n background-color: #111;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.POPUP } {\n cursor: pointer;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.POPUP } {\n cursor: pointer;\n }\n\n #${ id } a {\n text-decoration: none;\n }\n\n #${ id } .paypal-checkout-modal {\n font-family: \"HelveticaNeue\", \"HelveticaNeue-Light\", \"Helvetica Neue Light\", helvetica, arial, sans-serif;\n font-size: 14px;\n text-align: center;\n\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n -ms-box-sizing: border-box;\n box-sizing: border-box;\n max-width: 350px;\n top: 50%;\n left: 50%;\n position: absolute;\n transform: translateX(-50%) translateY(-50%);\n -webkit-transform: translateX(-50%) translateY(-50%);\n -moz-transform: translateX(-50%) translateY(-50%);\n -o-transform: translateX(-50%) translateY(-50%);\n -ms-transform: translateX(-50%) translateY(-50%);\n cursor: pointer;\n text-align: center;\n }\n\n #${ id }.${ tag }-loading .paypal-checkout-message, #${ id }.${ tag }-loading .paypal-checkout-continue {\n display: none;\n }\n\n .paypal-checkout-loader {\n display: none;\n }\n\n #${ id }.${ tag }-loading .paypal-checkout-loader {\n display: block;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-logo {\n cursor: pointer;\n margin-bottom: 30px;\n display: inline-block;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-logo img {\n height: 36px;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-logo img.paypal-checkout-logo-pp {\n margin-right: 10px;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-message {\n font-size: 15px;\n line-height: 1.5;\n padding: 10px 0;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-message, #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-continue {\n display: none;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-continue {\n font-size: 15px;\n line-height: 1.35;\n padding: 10px 0;\n font-weight: bold;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-continue a {\n border-bottom: 1px solid currentColor;\n }\n\n #${ id } .paypal-checkout-close {\n position: absolute;\n right: 16px;\n top: 16px;\n width: 16px;\n height: 16px;\n opacity: 0.6;\n }\n\n #${ id }.${ tag }-loading .paypal-checkout-close {\n display: none;\n }\n\n #${ id } .paypal-checkout-close:hover {\n opacity: 1;\n }\n\n #${ id } .paypal-checkout-close:before, .paypal-checkout-close:after {\n position: absolute;\n left: 8px;\n content: ' ';\n height: 16px;\n width: 2px;\n }\n\n #${ id } .paypal-checkout-close:before {\n transform: rotate(45deg);\n -webkit-transform: rotate(45deg);\n -moz-transform: rotate(45deg);\n -o-transform: rotate(45deg);\n -ms-transform: rotate(45deg);\n }\n\n #${ id } .paypal-checkout-close:after {\n transform: rotate(-45deg);\n -webkit-transform: rotate(-45deg);\n -moz-transform: rotate(-45deg);\n -o-transform: rotate(-45deg);\n -ms-transform: rotate(-45deg);\n }\n\n #${ id } .paypal-checkout-iframe-container {\n display: none;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container,\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container > .${ CLASS.OUTLET },\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container > .${ CLASS.OUTLET } > iframe {\n max-height: calc(95vh - 60px);\n max-width: 95vw;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container {\n\n display: block;\n\n position: absolute;\n\n top: 50%;\n left: 50%;\n\n min-width: 450px;\n\n transform: translate(-50%, -50%);\n -webkit-transform: translate(-50%, -50%);\n -moz-transform: translate(-50%, -50%);\n -o-transform: translate(-50%, -50%);\n -ms-transform: translate(-50%, -50%);\n\n transform: translate3d(-50%, -50%, 0);\n -webkit-transform: translate3d(-50%, -50%, 0);\n -moz-transform: translate3d(-50%, -50%, 0);\n -o-transform: translate3d(-50%, -50%, 0);\n -ms-transform: translate3d(-50%, -50%, 0);\n\n border-radius: 10px;\n overflow: hidden;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } {\n\n position: relative;\n\n -webkit-transition: all 0.3s ease;\n -moz-transition: all 0.3s ease;\n -ms-transition: all 0.3s ease;\n -o-transition: all 0.3 ease;\n transition: all 0.3s ease;\n\n -webkit-animation-duration: 0.3s;\n animation-duration: 0.3s;\n -webkit-animation-fill-mode: both;\n animation-fill-mode: both;\n\n min-width: 450px;\n max-width: 450px;\n width: 450px;\n height: 535px;\n\n background-color: white;\n\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe {\n position: absolute;\n top: 0;\n left: 0;\n transition: opacity .4s ease-in-out;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe.${ CLASS.COMPONENT_FRAME } {\n z-index: 100;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe.${ CLASS.PRERENDER_FRAME } {\n z-index: 200;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe.${ CLASS.VISIBLE } {\n opacity: 1;\n z-index: 200;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe.${ CLASS.INVISIBLE } {\n opacity: 0;\n z-index: 100;\n }\n\n @media screen and (-ms-high-contrast: active) {\n #${ id } .paypal-checkout-close {\n opacity: 1;\n }\n\n #${ id } .paypal-checkout-close:before , .paypal-checkout-close:after {\n background-color: currentColor;\n }\n }\n\n @media screen and (max-width: 470px) {\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container,\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } {\n min-width: 100%;\n min-width: calc(100% - 20px);\n min-width: -webkit-calc(100% - 20px);\n min-width: -moz-calc(100% - 20px);\n min-width: -o-calc(100% - 20px);\n min-width: -ms-calc(100% - 20px);\n\n max-width: 100%;\n max-width: calc(100% - 20px);\n max-width: -webkit-calc(100% - 20px);\n max-width: -moz-calc(100% - 20px);\n max-width: -o-calc(100% - 20px);\n max-width: -ms-calc(100% - 20px);\n }\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } iframe {\n width: 1px;\n min-width: 100%;\n height: 100%;\n }\n\n @-webkit-keyframes ${ ANIMATION.SHOW_COMPONENT } {\n from {\n opacity: 0;\n transform: scale3d(.3, .3, .3);\n -webkit-transform: scale3d(.3, .3, .3);\n }\n\n to {\n opacity: 1;\n transform: scale3d(1, 1, 1);\n -webkit-transform: scale3d(1, 1, 1);\n }\n }\n\n @keyframes ${ ANIMATION.SHOW_COMPONENT } {\n from {\n opacity: 0;\n transform: scale3d(.3, .3, .3);\n -webkit-transform: scale3d(.3, .3, .3);\n }\n\n to {\n opacity: 1;\n transform: scale3d(1, 1, 1);\n -webkit-transform: scale3d(1, 1, 1);\n }\n }\n\n @-webkit-keyframes ${ ANIMATION.HIDE_COMPONENT } {\n from {\n transform: scale3d(1, 1, 1);\n -webkit-transform: scale3d(1, 1, 1);\n }\n\n to {\n opacity: 0;\n transform: scale3d(.3, .3, .3);\n -webkit-transform: scale3d(.3, .3, .3);\n }\n }\n\n @keyframes ${ ANIMATION.HIDE_COMPONENT } {\n from {\n transform: scale3d(1, 1, 1);\n -webkit-transform: scale3d(1, 1, 1);\n }\n\n to {\n opacity: 0;\n transform: scale3d(.3, .3, .3);\n -webkit-transform: scale3d(.3, .3, .3);\n }\n }\n\n .paypal-spinner {\n height: 30px;\n width: 30px;\n display: inline-block;\n box-sizing: content-box;\n opacity: 1;\n filter: alpha(opacity=100);\n -webkit-animation: rotation .7s infinite linear;\n -moz-animation: rotation .7s infinite linear;\n -o-animation: rotation .7s infinite linear;\n animation: rotation .7s infinite linear;\n border-left: 8px solid rgba(0, 0, 0, .2);\n border-right: 8px solid rgba(0, 0, 0, .2);\n border-bottom: 8px solid rgba(0, 0, 0, .2);\n border-top: 8px solid #fff;\n border-radius: 100%\n }\n\n @-webkit-keyframes rotation {\n from {\n -webkit-transform: rotate(0deg)\n }\n to {\n -webkit-transform: rotate(359deg)\n }\n }\n @-moz-keyframes rotation {\n from {\n -moz-transform: rotate(0deg)\n }\n to {\n -moz-transform: rotate(359deg)\n }\n }\n @-o-keyframes rotation {\n from {\n -o-transform: rotate(0deg)\n }\n to {\n -o-transform: rotate(359deg)\n }\n }\n @keyframes rotation {\n from {\n transform: rotate(0deg)\n }\n to {\n transform: rotate(359deg)\n }\n }\n `;\n}\n","/* @flow */\n\nexport function getSandboxStyle({ id, ANIMATION } : { id : string, ANIMATION : Object }) : string {\n return `\n #${ id }.paypal-checkout-sandbox {\n display: block;\n position: fixed;\n top: 0;\n left: 0;\n\n width: 100%;\n height: 100%;\n width: 100vw;\n height: 100vh;\n max-width: 100%;\n max-height: 100%;\n min-width: 100%;\n min-height: 100%;\n\n z-index: 2147483647;\n\n -webkit-animation-duration: 1s;\n animation-duration: 1s;\n\n animation-fill-mode:forwards;\n animation-iteration-count: 1;\n\n -webkit-animation-fill-mode:forwards;\n -webkit-animation-iteration-count: 1;\n }\n\n #${ id }.paypal-checkout-sandbox .paypal-checkout-sandbox-iframe {\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n }\n\n @-webkit-keyframes ${ ANIMATION.SHOW_CONTAINER } {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n }\n\n @keyframes ${ ANIMATION.SHOW_CONTAINER } {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n }\n\n @-webkit-keyframes ${ ANIMATION.HIDE_CONTAINER } {\n from {\n opacity: 1;\n }\n\n 50% {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n }\n\n @keyframes ${ ANIMATION.HIDE_CONTAINER } {\n from {\n opacity: 1;\n }\n\n 50% {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n }\n `;\n}\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { base64encode } from 'belter/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { fundingLogos } from '../../resources';\nimport { BUTTON_LOGO_COLOR, CHECKOUT_OVERLAY_COLOR } from '../../constants';\nimport { isIos } from '../../lib';\n\nimport { containerContent } from './containerContent';\nimport { getContainerStyle } from './containerStyle';\nimport { getSandboxStyle } from './sandboxStyle';\n\nconst LOGO_COLOR = {\n [ CHECKOUT_OVERLAY_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ CHECKOUT_OVERLAY_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n};\n\nexport {\n getContainerStyle,\n getSandboxStyle\n};\n\n// eslint-disable-next-line flowtype/require-exact-type\nexport type ContainerTemplateOptions = {\n id : string,\n props : Object,\n CLASS : Object,\n ANIMATION : Object,\n CONTEXT : Object,\n EVENT : Object,\n dimensions : {\n width : number,\n height : number\n },\n actions : Object,\n tag : string,\n context : string,\n outlet : HTMLElement,\n on : Function,\n jsxDom : Function\n};\n\nexport function containerTemplate({ id, props, CLASS, ANIMATION, CONTEXT, EVENT, on, tag, context, actions, outlet, jsxDom } : ContainerTemplateOptions) : HTMLElement {\n\n const [ lang, country ] = props.locale.split('_');\n\n const content = containerContent[country][lang];\n\n function close(event) {\n event.preventDefault();\n event.stopPropagation();\n actions.close();\n }\n\n function focus(event) {\n event.preventDefault();\n event.stopPropagation();\n\n if (isIos()) {\n // eslint-disable-next-line no-alert\n window.alert('Please switch tabs to reactivate the PayPal window');\n } else {\n ZalgoPromise.try(actions.focus).catch(actions.close);\n }\n }\n\n const style = props.style || {};\n const overlayColor = style.overlayColor || CHECKOUT_OVERLAY_COLOR.BLACK;\n const logoColor = LOGO_COLOR[overlayColor];\n\n const ppLogo = (typeof fundingLogos.pp === 'function')\n ? fundingLogos.pp({ logoColor })\n : fundingLogos.pp[logoColor];\n\n const paypalLogo = (typeof fundingLogos.paypal === 'function')\n ? fundingLogos.paypal({ logoColor })\n : fundingLogos.paypal[logoColor];\n\n const el = (\n
\n \n
\n
\n \n \n
\n
\n {content.windowMessage}\n
\n
\n
\n
\n
\n
\n\n
\n {outlet}\n
\n\n \n
\n );\n\n const container = (\n \n \n { el }\n \n \n );\n\n on(EVENT.CLOSE, () => {\n el.className += ` ${ tag }-loading`;\n });\n\n return (\n
\n \n\n \n
\n );\n}\n","/* @flow */\n\nexport * from './componentTemplate';\nexport * from './containerTemplate';\n","/* @flow */\n\nimport { config } from '../config';\nimport { FUNDING, PAYMENT_TYPE } from '../constants';\n\nexport function determineParameterFromToken(token : string) : string {\n return (token && token.indexOf('BA-') === 0) ? 'ba_token' : 'token';\n}\n\nexport function getPaymentType(payment : string) : string {\n if (payment.indexOf('BA-') === 0) {\n return PAYMENT_TYPE.BA_TOKEN;\n } else if (payment.indexOf('PAY-') === 0 || payment.indexOf('PAYID-') === 0) {\n return PAYMENT_TYPE.PAY_ID;\n } else if (payment.indexOf('EC-') === 0) {\n return PAYMENT_TYPE.EC_TOKEN;\n }\n\n return PAYMENT_TYPE.EC_TOKEN;\n}\n\nexport function determineUrl(env : string, fundingSource : ?string, payment : string) : string {\n\n const paymentType = getPaymentType(payment);\n\n if (paymentType === PAYMENT_TYPE.BA_TOKEN) {\n return config.billingUrls[env];\n }\n\n if (fundingSource === FUNDING.CARD || fundingSource === FUNDING.ELV) {\n return config.guestUrls[env];\n }\n\n if (fundingSource === FUNDING.IDEAL || fundingSource === FUNDING.BANCONTACT || fundingSource === FUNDING.GIROPAY ||\n fundingSource === FUNDING.SOFORT || fundingSource === FUNDING.EPS || fundingSource === FUNDING.MYBANK ||\n fundingSource === FUNDING.P24 || fundingSource === FUNDING.PAYU || fundingSource === FUNDING.VERKKOPANKKI ||\n fundingSource === FUNDING.BLIK || fundingSource === FUNDING.TRUSTLY || fundingSource === FUNDING.MAXIMA ||\n fundingSource === FUNDING.BOLETO || fundingSource === FUNDING.OXXO) {\n return config.altpayUrls[env];\n }\n\n return config.checkoutUrls[env];\n}\n","/* @flow */\n\nexport function extendNamespace(xports : Object, namespaces : $ReadOnlyArray = [], childnamespaces : $ReadOnlyArray = []) : Object {\n\n for (const name of namespaces) {\n const namespace = window[name];\n\n if (!namespace) {\n continue;\n }\n\n for (const childname of childnamespaces) {\n let childnamespace = xports[childname];\n\n if (namespace[childname]) {\n childnamespace = { ...namespace[childname], ...childnamespace };\n }\n\n xports = { ...namespace, ...xports, [ childname ]: childnamespace };\n }\n }\n\n for (const name of namespaces) {\n window[name] = xports;\n }\n\n return xports;\n}\n","/* @flow */\n/* eslint max-lines: off */\n\nexport const containerContent = {\n 'AT': {\n 'de': {\n 'windowMessage': 'Sie sehen das sichere Browserfenster von PayPal nicht? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ZW': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ZM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ZA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'YT': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'YE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'WS': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'WF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'VU': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'VG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'VE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'VC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'VA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'UY': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'UG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TV': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'TT': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'TO': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'TN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'TM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'TD': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'TC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'SZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SV': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'ST': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SR': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'SO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'SM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SL': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SH': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'SB': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'SA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'RW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'RS': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'RE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'QA': {\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PY': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'PW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'PN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'PM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'PF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'PA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'OM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'NU': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'NR': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'NP': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'NI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'NG': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'NE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'NC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MV': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'MU': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MT': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MS': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'MR': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MQ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MN': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'ML': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'MK': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MH': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'MG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ME': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MD': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MC': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'MA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'LS': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'LK': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'LI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'LC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'LA': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'KZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'KY': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'KW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'KN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'KM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'KI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'KH': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'KG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'KE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'JO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'JM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'IS': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'HR': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'HN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'GY': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'GW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GT': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'GP': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'GM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GL': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'da': {\n 'windowMessage': 'Kan du ikke se PayPals sikre browser? Vi hj\\u00E6lper dig med at genstarte vinduet, s\\u00E5 du kan betale.',\n 'continue': 'Forts\\u00E6t'\n }\n },\n 'GI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GD': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'GA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'FO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'da': {\n 'windowMessage': 'Kan du ikke se PayPals sikre browser? Vi hj\\u00E6lper dig med at genstarte vinduet, s\\u00E5 du kan betale.',\n 'continue': 'Forts\\u00E6t'\n }\n },\n 'FM': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'FK': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'FJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'ET': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ER': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'EG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'EC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'DZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'DO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'DM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'DJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'CY': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CV': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CR': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'CO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'CM': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'CL': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'CK': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CI': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'CG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CD': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'BZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'BY': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BT': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'BS': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'BO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'BN': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'BM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'BJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'BI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'BH': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'BG': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'BB': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'BA': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'AO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'AM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AL': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'AG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'AE': {\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AD': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n }\n },\n 'GB': {\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 PayPal\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\'ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AR': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'US': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Click to Continue'\n }\n },\n 'VN': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment. ',\n 'continue': 'Continue'\n }\n },\n 'UA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TW': {\n 'zh': {\n 'windowMessage': '\\u770B\\u4E0D\\u5230\\u5B89\\u5168\\u9023\\u7DDA\\u7684 PayPal \\u700F\\u89BD\\u5668\\uFF1F\\u6211\\u5011\\u5C07\\u6703\\u91CD\\u65B0\\u555F\\u52D5\\u8996\\u7A97\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002\\u00A0 ',\n 'continue': '\\u7E7C\\u7E8C'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TR': {\n 'tr': {\n 'windowMessage': 'G\\u00FCvenli PayPal taray\\u0131c\\u0131s\\u0131n\\u0131 g\\u00F6rm\\u00FCyor musunuz? Al\\u0131\\u015Fveri\\u015Finizi tamamlamak i\\u00E7in pencereyi yeniden ba\\u015Flatman\\u0131za yard\\u0131mc\\u0131 olaca\\u011F\\u0131z.\\u00A0 ',\n 'continue': 'Devam'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TH': {\n 'th': {\n 'windowMessage': '\\u0E16\\u0E49\\u0E32\\u0E04\\u0E38\\u0E13\\u0E44\\u0E21\\u0E48\\u0E40\\u0E2B\\u0E47\\u0E19\\u0E40\\u0E1A\\u0E23\\u0E32\\u0E27\\u0E4C\\u0E40\\u0E0B\\u0E2D\\u0E23\\u0E4C\\u0E17\\u0E35\\u0E48\\u0E21\\u0E35\\u0E23\\u0E30\\u0E1A\\u0E1A\\u0E04\\u0E27\\u0E32\\u0E21\\u0E1B\\u0E25\\u0E2D\\u0E14\\u0E20\\u0E31\\u0E22\\u0E02\\u0E2D\\u0E07 PayPal \\u0E40\\u0E23\\u0E32\\u0E08\\u0E30\\u0E0A\\u0E48\\u0E27\\u0E22\\u0E04\\u0E38\\u0E13\\u0E40\\u0E1B\\u0E34\\u0E14\\u0E2B\\u0E19\\u0E49\\u0E32\\u0E15\\u0E48\\u0E32\\u0E07\\u0E2D\\u0E35\\u0E01\\u0E04\\u0E23\\u0E31\\u0E49\\u0E07\\u0E40\\u0E1E\\u0E37\\u0E48\\u0E2D\\u0E0A\\u0E33\\u0E23\\u0E30\\u0E40\\u0E07\\u0E34\\u0E19\\u0E43\\u0E2B\\u0E49\\u0E40\\u0E23\\u0E35\\u0E22\\u0E1A\\u0E23\\u0E49\\u0E2D\\u0E22 ',\n 'continue': '\\u0E14\\u0E33\\u0E40\\u0E19\\u0E34\\u0E19\\u0E01\\u0E32\\u0E23\\u0E15\\u0E48\\u0E2D'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SK': {\n 'sk': {\n 'windowMessage': 'Nezobrazuje sa v\\u00e1m zabezpe\\u010den\\u00fd prehliada\\u010d PayPal? Pom\\u00f4\\u017eeme v\\u00e1m znova otvori\\u0165 okno, aby ste mohli n\\u00e1kup dokon\\u010di\\u0165.\\u00A0 ',\n 'continue': 'Pokra\\u010dova\\u0165'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SG': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SE': {\n 'sv': {\n 'windowMessage': 'Ser du inte den s\\u00E4kra PayPal-webbl\\u00E4saren? Vi hj\\u00E4lper dig att starta om f\\u00F6nstret f\\u00F6r att slutf\\u00F6ra ditt k\\u00F6p. ',\n 'continue': 'Forts\\u00E4tt'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'RU': {\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'RO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PT': {\n 'pt': {\n 'windowMessage': 'N\\u00E3o v\\u00EA a indica\\u00E7\\u00E3o de sess\\u00E3o segura PayPal no browser? Vamos ajudar a reabrir a janela para que possa concluir a sua compra.',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PL': {\n 'pl': {\n 'windowMessage': 'Nie widzisz bezpiecznej przegl\\u0105darki PayPal? Pomo\\u017Cemy Ci ponownie uruchomi\\u0107 to okno w celu dokonania zakupu.\\u00A0 ',\n 'continue': 'Kontynuuj'\n },\n 'en': {\n 'windowMessage': 'You don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PH': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre paiement.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Le ayudaremos a abrir de nuevo la ventana para completar su pago.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NO': {\n 'no': {\n 'windowMessage': 'Ser du ikke den sikre PayPal-nettleseren? Vi hjelper deg med \\u00E5 starte vinduet p\\u00E5 nytt s\\u00E5 du kan fullf\\u00F8re kj\\u00F8pet.\\u00A0 ',\n 'continue': 'Fortsett'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NL': {\n 'nl': {\n 'windowMessage': 'Ziet u geen beveiligde PayPal-browser? We helpen u het venster opnieuw te openen om uw aankoop te voltooien.\\u00A0 ',\n 'continue': 'Doorgaan'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MY': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MX': {\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'LV': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'LU': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'de': {\n 'windowMessage': 'Das PayPal-Fenster wird nicht angezeigt? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n }\n },\n 'LT': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'KR': {\n 'ko': {\n 'windowMessage': '\\uBCF4\\uC548 PayPal \\uBE0C\\uB77C\\uC6B0\\uC800\\uAC00 \\uBCF4\\uC774\\uC9C0 \\uC54A\\uC73C\\uC2E0\\uAC00\\uC694? \\uCC3D\\uC744 \\uB2E4\\uC2DC \\uC2E4\\uD589\\uD558\\uC5EC \\uACB0\\uC81C\\uB97C \\uC644\\uB8CC\\uD560 \\uC218 \\uC788\\uB3C4\\uB85D \\uB3C4\\uC640\\uB4DC\\uB9AC\\uACA0\\uC2B5\\uB2C8\\uB2E4.\\u00A0 ',\n 'continue': '\\uACC4\\uC18D'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'JP': {\n 'ja': {\n 'windowMessage': '\\u30BB\\u30AD\\u30E5\\u30A2\\u306A\\u30D6\\u30E9\\u30A6\\u30B6\\u304C\\u8868\\u793A\\u3055\\u308C\\u306A\\u3044\\u5834\\u5408\\u306F\\u3001\\u30A6\\u30A3\\u30F3\\u30C9\\u30A6\\u3092\\u518D\\u8D77\\u52D5\\u3057\\u3066\\u3001\\u652F\\u6255\\u3044\\u3092\\u5B8C\\u4E86\\u3067\\u304D\\u308B\\u3088\\u3046\\u304A\\u624B\\u4F1D\\u3044\\u3044\\u305F\\u3057\\u307E\\u3059\\u3002',\n 'continue': '\\u7D9A\\u884C'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment. ',\n 'continue': 'Continue'\n }\n },\n 'IT': {\n 'it': {\n 'windowMessage': 'Non vedi la pagina sicura di PayPal? Ti aiuteremo a riaprire la finestra per completare l\\'acquisto.\\u00A0 ',\n 'continue': 'Continua'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'IN': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'IL': {\n 'he': {\n 'windowMessage': '\\u05DC\\u05D0 \\u05E8\\u05D5\\u05D0\\u05D4 \\u05D0\\u05EA \\u05D3\\u05E4\\u05D3\\u05E4\\u05DF PayPal \\u05D4\\u05DE\\u05D0\\u05D5\\u05D1\\u05D8\\u05D7? \\u05E0\\u05E2\\u05D6\\u05D5\\u05E8 \\u05DC\\u05DA \\u05DC\\u05E4\\u05EA\\u05D5\\u05D7 \\u05DE\\u05D7\\u05D3\\u05E9 \\u05D0\\u05EA \\u05D4\\u05D7\\u05DC\\u05D5\\u05DF \\u05DB\\u05D3\\u05D9 \\u05DC\\u05D4\\u05E9\\u05DC\\u05D9\\u05DD \\u05D0\\u05EA \\u05D4\\u05E7\\u05E0\\u05D9\\u05D9\\u05D4 \\u05E9\\u05DC\\u05DA.\\u00A0 ',\n 'continue': '\\u05D4\\u05DE\\u05E9\\u05DA'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'IE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'HU': {\n 'hu': {\n 'windowMessage': 'Nem l\\u00e1tja a biztons\\u00e1gos PayPal-b\\u00f6ng\\u00e9sz\\u0151t? Seg\\u00edt\\u00fcnk \\u00fajra bet\\u00f6lteni az ablakot, hogy befejezhesse a v\\u00e1s\\u00e1rl\\u00e1st.\\u00A0 ',\n 'continue': 'Folytat\\u00e1s'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ID': {\n 'id': {\n 'windowMessage': 'Browser PayPal yang aman tidak terlihat? Kami akan membantu menampilkan ulang jendela untuk menyelesaikan pembayaran Anda.\\u00A0 ',\n 'continue': 'Lanjutkan'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'HK': {\n 'zh': {\n 'windowMessage': '\\u770B\\u4E0D\\u5230\\u5B89\\u5168\\u7684 PayPal \\u700F\\u89BD\\u5668\\u8996\\u7A97\\uFF1F\\u6211\\u5011\\u6703\\u52A9\\u4F60\\u91CD\\u65B0\\u958B\\u555F\\u8996\\u7A97\\uFF0C\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002',\n 'continue': '\\u7E7C\\u7E8C'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GROUP-LATAM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'GROUP-EMEA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'pt': {\n 'windowMessage': 'N\\u00E3o v\\u00EA a indica\\u00E7\\u00E3o de sess\\u00E3o segura PayPal no browser? Vamos ajudar a reabrir a janela para que possa concluir a sua compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'de': {\n 'windowMessage': 'Sie sehen das sichere Browserfenster von PayPal nicht? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n },\n 'da': {\n 'windowMessage': 'Kan du ikke se PayPals sikre browser? Vi hj\\u00E6lper dig med at genstarte vinduet, s\\u00E5 du kan betale.',\n 'continue': 'Forts\\u00E6t'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'GROUP-APAC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ko': {\n 'windowMessage': '\\uBCF4\\uC548 PayPal \\uBE0C\\uB77C\\uC6B0\\uC800\\uAC00 \\uBCF4\\uC774\\uC9C0 \\uC54A\\uC73C\\uC2E0\\uAC00\\uC694? \\uCC3D\\uC744 \\uB2E4\\uC2DC \\uC2E4\\uD589\\uD558\\uC5EC \\uAD6C\\uB9E4\\uB97C \\uC644\\uB8CC\\uD560 \\uC218 \\uC788\\uB3C4\\uB85D \\uB3C4\\uC640\\uB4DC\\uB9AC\\uACA0\\uC2B5\\uB2C8\\uB2E4. ',\n 'continue': '\\uACC4\\uC18D'\n },\n 'id': {\n 'windowMessage': 'Browser PayPal yang aman tidak terlihat? Kami akan membantu menampilkan ulang jendela untuk menyelesaikan pembelian Anda. ',\n 'continue': 'Lanjutkan'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'GR': {\n 'el': {\n 'windowMessage': '\\u0394\\u03b5\\u03bd \\u03b2\\u03bb\\u03ad\\u03c0\\u03b5\\u03c4\\u03b5 \\u03c4\\u03bf \\u03b1\\u03c3\\u03c6\\u03b1\\u03bb\\u03ad\\u03c2 \\u03c0\\u03c1\\u03cc\\u03b3\\u03c1\\u03b1\\u03bc\\u03bc\\u03b1 \\u03c0\\u03b5\\u03c1\\u03b9\\u03ae\\u03b3\\u03b7\\u03c3\\u03b7\\u03c2 PayPal; \\u0398\\u03b1 \\u03c3\\u03b1\\u03c2 \\u03b2\\u03bf\\u03b7\\u03b8\\u03ae\\u03c3\\u03bf\\u03c5\\u03bc\\u03b5 \\u03bd\\u03b1 \\u03b5\\u03c0\\u03b1\\u03bd\\u03b5\\u03ba\\u03ba\\u03b9\\u03bd\\u03ae\\u03c3\\u03b5\\u03c4\\u03b5 \\u03c4\\u03bf \\u03c0\\u03b1\\u03c1\\u03ac\\u03b8\\u03c5\\u03c1\\u03bf \\u03b3\\u03b9\\u03b1 \\u03bd\\u03b1 \\u03bf\\u03bb\\u03bf\\u03ba\\u03bb\\u03b7\\u03c1\\u03ce\\u03c3\\u03b5\\u03c4\\u03b5 \\u03c4\\u03b7\\u03bd \\u03b1\\u03b3\\u03bf\\u03c1\\u03ac \\u03c3\\u03b1\\u03c2.\\u00A0 ',\n 'continue': '\\u03a3\\u03c5\\u03bd\\u03ad\\u03c7\\u03b5\\u03b9\\u03b1'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'FR': {\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 PayPal\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ES': {\n 'es': {\n 'windowMessage': '\\u00BFNo ve el s\\u00EDmbolo de navegaci\\u00F3n segura de PayPal? Le ayudaremos a abrir de nuevo la ventana para completar la compra. ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'FI': {\n 'fi': {\n 'windowMessage': 'Eik\\u00f6 suojattua PayPal-selainta n\\u00e4y? Autamme avaamaan ikkunan uudelleen oston viimeistely\\u00e4 varten.\\u00A0 ',\n 'continue': 'Jatka'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'EE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'DK': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'da': {\n 'windowMessage': 'Kan du ikke se PayPals sikre browser? Vi hj\\u00E6lper dig med at genstarte vinduet, s\\u00E5 du kan betale.',\n 'continue': 'Forts\\u00E6t'\n }\n },\n 'CZ': {\n 'cs': {\n 'windowMessage': 'Nezobrazuje se v\\u00e1m bezpe\\u010dn\\u00fd prohl\\u00ed\\u017ee\\u010d PayPal? Pom\\u016f\\u017eeme v\\u00e1m okno znovu otev\\u0159\\u00edt, abyste mohli n\\u00e1kup dokon\\u010dit.',\n 'continue': 'Pokra\\u010dovat'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'DE': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'de': {\n 'windowMessage': 'Sie sehen das sichere Browserfenster von PayPal nicht? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n }\n },\n 'CH': {\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 PayPal\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'de': {\n 'windowMessage': 'Sie sehen das sichere Browserfenster von PayPal nicht? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n }\n },\n 'CA': {\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 de PayPal\\u00A0? Nous vous aiderons \\u00E0 relancer la fen\\u00EAtre afin d\\'effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you relaunch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'C2': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BE': {\n 'nl': {\n 'windowMessage': 'Ziet u de beveiligde PayPal-browser niet? We helpen u het venster opnieuw te openen om uw aankoop te voltooien.\\u00A0 ',\n 'continue': 'Doorgaan'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 PayPal\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BR': {\n 'pt': {\n 'windowMessage': 'N\\u00E3o est\\u00E1 vendo o navegador seguro do PayPal? Ajudaremos voc\\u00EA a reabrir a janela para concluir a compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AU': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\'ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n }\n};\n","/*\n * [hi-base32]{@link https://github.com/emn178/hi-base32}\n *\n * @version 0.5.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var root = typeof window === 'object' ? window : {};\n var NODE_JS = !root.HI_BASE32_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n }\n var COMMON_JS = !root.HI_BASE32_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var BASE32_ENCODE_CHAR = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'.split('');\n var BASE32_DECODE_CHAR = {\n 'A': 0, 'B': 1, 'C': 2, 'D': 3, 'E': 4, 'F': 5, 'G': 6, 'H': 7, 'I': 8,\n 'J': 9, 'K': 10, 'L': 11, 'M': 12, 'N': 13, 'O': 14, 'P': 15, 'Q': 16,\n 'R': 17, 'S': 18, 'T': 19, 'U': 20, 'V': 21, 'W': 22, 'X': 23, 'Y': 24,\n 'Z': 25, '2': 26, '3': 27, '4': 28, '5': 29, '6': 30, '7': 31\n };\n\n var blocks = [0, 0, 0, 0, 0, 0, 0, 0];\n\n var throwInvalidUtf8 = function (position, partial) {\n if (partial.length > 10) {\n partial = '...' + partial.substr(-10);\n }\n var err = new Error('Decoded data is not valid UTF-8.'\n + ' Maybe try base32.decode.asBytes()?'\n + ' Partial data after reading ' + position + ' bytes: ' + partial + ' <-');\n err.position = position;\n throw err;\n };\n\n var toUtf8String = function (bytes) {\n var str = '', length = bytes.length, i = 0, followingChars = 0, b, c;\n while (i < length) {\n b = bytes[i++];\n if (b <= 0x7F) {\n str += String.fromCharCode(b);\n continue;\n } else if (b > 0xBF && b <= 0xDF) {\n c = b & 0x1F;\n followingChars = 1;\n } else if (b <= 0xEF) {\n c = b & 0x0F;\n followingChars = 2;\n } else if (b <= 0xF7) {\n c = b & 0x07;\n followingChars = 3;\n } else {\n throwInvalidUtf8(i, str);\n }\n\n for (var j = 0; j < followingChars; ++j) {\n b = bytes[i++];\n if (b < 0x80 || b > 0xBF) {\n throwInvalidUtf8(i, str);\n }\n c <<= 6;\n c += b & 0x3F;\n }\n if (c >= 0xD800 && c <= 0xDFFF) {\n throwInvalidUtf8(i, str);\n }\n if (c > 0x10FFFF) {\n throwInvalidUtf8(i, str);\n }\n\n if (c <= 0xFFFF) {\n str += String.fromCharCode(c);\n } else {\n c -= 0x10000;\n str += String.fromCharCode((c >> 10) + 0xD800);\n str += String.fromCharCode((c & 0x3FF) + 0xDC00);\n }\n }\n return str;\n };\n\n var decodeAsBytes = function (base32Str) {\n if (!/^[A-Z2-7=]+$/.test(base32Str)) {\n throw new Error('Invalid base32 characters');\n }\n base32Str = base32Str.replace(/=/g, '');\n var v1, v2, v3, v4, v5, v6, v7, v8, bytes = [], index = 0, length = base32Str.length;\n\n // 4 char to 3 bytes\n for (var i = 0, count = length >> 3 << 3; i < count;) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v8 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255;\n bytes[index++] = (v4 << 4 | v5 >>> 1) & 255;\n bytes[index++] = (v5 << 7 | v6 << 2 | v7 >>> 3) & 255;\n bytes[index++] = (v7 << 5 | v8) & 255;\n }\n\n // remain bytes\n var remain = length - count;\n if (remain === 2) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n } else if (remain === 4) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255;\n } else if (remain === 5) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255;\n bytes[index++] = (v4 << 4 | v5 >>> 1) & 255;\n } else if (remain === 7) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255;\n bytes[index++] = (v4 << 4 | v5 >>> 1) & 255;\n bytes[index++] = (v5 << 7 | v6 << 2 | v7 >>> 3) & 255;\n }\n return bytes;\n };\n\n var encodeAscii = function (str) {\n var v1, v2, v3, v4, v5, base32Str = '', length = str.length;\n for (var i = 0, count = parseInt(length / 5) * 5; i < count;) {\n v1 = str.charCodeAt(i++);\n v2 = str.charCodeAt(i++);\n v3 = str.charCodeAt(i++);\n v4 = str.charCodeAt(i++);\n v5 = str.charCodeAt(i++);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3 | v5 >>> 5) & 31] +\n BASE32_ENCODE_CHAR[v5 & 31];\n }\n\n // remain char\n var remain = length - count;\n if (remain === 1) {\n v1 = str.charCodeAt(i);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2) & 31] +\n '======';\n } else if (remain === 2) {\n v1 = str.charCodeAt(i++);\n v2 = str.charCodeAt(i);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4) & 31] +\n '====';\n } else if (remain === 3) {\n v1 = str.charCodeAt(i++);\n v2 = str.charCodeAt(i++);\n v3 = str.charCodeAt(i);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1) & 31] +\n '===';\n } else if (remain === 4) {\n v1 = str.charCodeAt(i++);\n v2 = str.charCodeAt(i++);\n v3 = str.charCodeAt(i++);\n v4 = str.charCodeAt(i);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3) & 31] +\n '=';\n }\n return base32Str;\n };\n\n var encodeUtf8 = function (str) {\n var v1, v2, v3, v4, v5, code, end = false, base32Str = '',\n index = 0, i, start = 0, bytes = 0, length = str.length;\n do {\n blocks[0] = blocks[5];\n blocks[1] = blocks[6];\n blocks[2] = blocks[7];\n for (i = start; index < length && i < 5; ++index) {\n code = str.charCodeAt(index);\n if (code < 0x80) {\n blocks[i++] = code;\n } else if (code < 0x800) {\n blocks[i++] = 0xc0 | (code >> 6);\n blocks[i++] = 0x80 | (code & 0x3f);\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i++] = 0xe0 | (code >> 12);\n blocks[i++] = 0x80 | ((code >> 6) & 0x3f);\n blocks[i++] = 0x80 | (code & 0x3f);\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++index) & 0x3ff));\n blocks[i++] = 0xf0 | (code >> 18);\n blocks[i++] = 0x80 | ((code >> 12) & 0x3f);\n blocks[i++] = 0x80 | ((code >> 6) & 0x3f);\n blocks[i++] = 0x80 | (code & 0x3f);\n }\n }\n bytes += i - start;\n start = i - 5;\n if (index === length) {\n ++index;\n }\n if (index > length && i < 6) {\n end = true;\n }\n v1 = blocks[0];\n if (i > 4) {\n v2 = blocks[1];\n v3 = blocks[2];\n v4 = blocks[3];\n v5 = blocks[4];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3 | v5 >>> 5) & 31] +\n BASE32_ENCODE_CHAR[v5 & 31];\n } else if (i === 1) {\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2) & 31] +\n '======';\n } else if (i === 2) {\n v2 = blocks[1];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4) & 31] +\n '====';\n } else if (i === 3) {\n v2 = blocks[1];\n v3 = blocks[2];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1) & 31] +\n '===';\n } else {\n v2 = blocks[1];\n v3 = blocks[2];\n v4 = blocks[3];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3) & 31] +\n '=';\n }\n } while (!end);\n return base32Str;\n };\n\n var encodeBytes = function (bytes) {\n var v1, v2, v3, v4, v5, base32Str = '', length = bytes.length;\n for (var i = 0, count = parseInt(length / 5) * 5; i < count;) {\n v1 = bytes[i++];\n v2 = bytes[i++];\n v3 = bytes[i++];\n v4 = bytes[i++];\n v5 = bytes[i++];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3 | v5 >>> 5) & 31] +\n BASE32_ENCODE_CHAR[v5 & 31];\n }\n\n // remain char\n var remain = length - count;\n if (remain === 1) {\n v1 = bytes[i];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2) & 31] +\n '======';\n } else if (remain === 2) {\n v1 = bytes[i++];\n v2 = bytes[i];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4) & 31] +\n '====';\n } else if (remain === 3) {\n v1 = bytes[i++];\n v2 = bytes[i++];\n v3 = bytes[i];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1) & 31] +\n '===';\n } else if (remain === 4) {\n v1 = bytes[i++];\n v2 = bytes[i++];\n v3 = bytes[i++];\n v4 = bytes[i];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3) & 31] +\n '=';\n }\n return base32Str;\n };\n\n var encode = function (input, asciiOnly) {\n var notString = typeof(input) !== 'string';\n if (notString && input.constructor === ArrayBuffer) {\n input = new Uint8Array(input);\n }\n if (notString) {\n return encodeBytes(input);\n } else if (asciiOnly) {\n return encodeAscii(input);\n } else {\n return encodeUtf8(input);\n }\n };\n\n var decode = function (base32Str, asciiOnly) {\n if (!asciiOnly) {\n return toUtf8String(decodeAsBytes(base32Str));\n }\n if (!/^[A-Z2-7=]+$/.test(base32Str)) {\n throw new Error('Invalid base32 characters');\n }\n var v1, v2, v3, v4, v5, v6, v7, v8, str = '', length = base32Str.indexOf('=');\n if (length === -1) {\n length = base32Str.length;\n }\n\n // 8 char to 5 bytes\n for (var i = 0, count = length >> 3 << 3; i < count;) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v8 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255) +\n String.fromCharCode((v2 << 6 | v3 << 1 | v4 >>> 4) & 255) +\n String.fromCharCode((v4 << 4 | v5 >>> 1) & 255) +\n String.fromCharCode((v5 << 7 | v6 << 2 | v7 >>> 3) & 255) +\n String.fromCharCode((v7 << 5 | v8) & 255);\n }\n\n // remain bytes\n var remain = length - count;\n if (remain === 2) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255);\n } else if (remain === 4) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255) +\n String.fromCharCode((v2 << 6 | v3 << 1 | v4 >>> 4) & 255);\n } else if (remain === 5) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255) +\n String.fromCharCode((v2 << 6 | v3 << 1 | v4 >>> 4) & 255) +\n String.fromCharCode((v4 << 4 | v5 >>> 1) & 255);\n } else if (remain === 7) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255) +\n String.fromCharCode((v2 << 6 | v3 << 1 | v4 >>> 4) & 255) +\n String.fromCharCode((v4 << 4 | v5 >>> 1) & 255) +\n String.fromCharCode((v5 << 7 | v6 << 2 | v7 >>> 3) & 255);\n }\n return str;\n };\n\n var exports = {\n encode: encode,\n decode: decode\n };\n decode.asBytes = decodeAsBytes;\n\n if (COMMON_JS) {\n module.exports = exports;\n } else {\n root.base32 = exports;\n if (AMD) {\n define(function() {\n return exports;\n });\n }\n }\n})();\n","/* @flow */\n\nimport type { Component, ComponentDriverType } from '../component/component';\n\nexport let script : ComponentDriverType<*, Document> = {\n\n global() : ?Document {\n return window.document;\n },\n\n register(component : Component<*>, document : Document) {\n\n function render(element : HTMLElement) {\n\n if (!element || !element.tagName || element.tagName.toLowerCase() !== 'script') {\n return;\n }\n\n // $FlowFixMe\n if (!element.attributes.type || element.attributes.type.value !== 'application/x-component' || !element.parentNode) {\n return;\n }\n\n let tag = element.getAttribute('data-component');\n\n if (!tag || tag !== component.tag) {\n return;\n }\n\n component.log(`instantiate_script_component`);\n\n let props : { [string] : mixed } = element.innerText\n ? eval(`(${ element.innerText })`) // eslint-disable-line no-eval, security/detect-eval-with-expression\n : {};\n\n let container = document.createElement('div');\n\n if (!element.parentNode) {\n throw new Error(`Element has no parent`);\n }\n\n element.parentNode.replaceChild(container, element);\n\n // $FlowFixMe\n component.render(props, container);\n }\n\n function scan() {\n let scriptTags = Array.prototype.slice.call(document.getElementsByTagName('script'));\n\n for (let element of scriptTags) {\n render(element);\n }\n }\n\n scan();\n document.addEventListener('DOMContentLoaded', scan);\n window.addEventListener('load', scan);\n\n document.addEventListener('DOMNodeInserted', event => {\n // $FlowFixMe\n render(event.target);\n });\n }\n};\n","/* @flow */\n\nimport { extend } from '../lib';\nimport type { Component, ComponentDriverType } from '../component/component';\n\ndeclare class ReactClassType {\n\n}\n\ntype ReactElementType = {\n\n};\n\ntype ReactType = {\n createClass : ({ render : ReactElementType, componentDidMount : () => void, componentDidUpdate : () => void }) => (typeof ReactClassType),\n createElement : (string, ?{ [string] : mixed }, ...children : Array) => ReactElementType\n};\n\ntype ReactDomType = {\n findDOMNode : (ReactElementType) => HTMLElement\n};\n\ntype ReactLibraryType = { React : ReactType, ReactDOM : ReactDomType };\n\nexport let react : ComponentDriverType<*, ReactLibraryType> = {\n\n global() : ?ReactLibraryType {\n if (window.React && window.ReactDOM) {\n return {\n React: window.React,\n ReactDOM: window.ReactDOM\n };\n }\n },\n\n register(component : Component<*>, { React, ReactDOM } : ReactLibraryType) : (typeof ReactClassType) {\n\n if (React.createClass) {\n\n // $FlowFixMe\n component.react = React.createClass({\n\n render() : ReactElementType {\n return React.createElement('div', null);\n },\n\n componentDidMount() {\n component.log(`instantiate_react_component`);\n\n let el = ReactDOM.findDOMNode(this);\n\n let parent = component.init(extend({}, this.props), null, el);\n\n this.setState({ parent });\n\n parent.render(el);\n },\n\n componentDidUpdate() {\n\n if (this.state && this.state.parent) {\n this.state.parent.updateProps(extend({}, this.props));\n }\n },\n\n componentWillUnmount() {\n if (this.state && this.state.parent) {\n this.state.parent.destroy();\n }\n }\n });\n } else {\n // $FlowFixMe\n component.react = class extends React.Component {\n render() : ReactElementType {\n return React.createElement('div', null);\n }\n\n componentDidMount() {\n component.log(`instantiate_react_component`);\n\n let el = ReactDOM.findDOMNode(this);\n\n let parent = component.init(extend({}, this.props), null, el);\n\n this.setState({ parent });\n\n parent.render(el);\n }\n\n componentDidUpdate() {\n\n if (this.state && this.state.parent) {\n this.state.parent.updateProps(extend({}, this.props));\n }\n }\n\n componentWillUnmount() {\n if (this.state && this.state.parent) {\n this.state.parent.destroy();\n }\n }\n };\n }\n\n return component.react;\n }\n};\n","/* @flow */\n\nimport type { Component, ComponentDriverType } from '../component/component';\nimport { extend } from '../lib';\n\ntype VueComponent = {\n render : (Function) => Element,\n inheritAttrs : boolean,\n mounted : () => void,\n beforeUpdate : () => void\n};\n\nexport let vue : ComponentDriverType<*, void> = {\n\n global() {\n // pass\n },\n\n register

(component : Component

) : VueComponent {\n\n return {\n render(createElement) : Element {\n return createElement('div');\n },\n\n inheritAttrs: false,\n\n mounted() {\n let el = this.$el;\n\n // $FlowFixMe\n this.parent = component.init(extend({}, this.$attrs), null, el);\n\n this.parent.render(el);\n },\n\n beforeUpdate() {\n \n if (this.parent && this.$attrs) {\n this.parent.updateProps(extend({}, this.$attrs));\n }\n }\n };\n }\n};\n","/* @flow */\n\nimport { dasherizeToCamel, replaceObject } from '../lib';\nimport type { Component, ComponentDriverType } from '../component/component';\n\ntype AngularModule = {\n directive : (string, () => {\n scope : { [string] : '=' | '@' },\n restrict : string,\n controller : Array\n }) => AngularModule\n};\n\ntype Angular = {\n module : (string, Array) => AngularModule\n};\n\nexport let angular : ComponentDriverType<*, Angular> = {\n\n global() : ?Angular {\n return window.angular;\n },\n\n register(component : Component<*>, ng : Angular) : AngularModule {\n\n let module = ng.module(component.tag, []).directive(dasherizeToCamel(component.tag), () => {\n\n let scope = {};\n\n for (let key of component.getPropNames()) {\n scope[key] = '=';\n }\n\n if (component.looseProps) {\n scope.props = '=';\n }\n\n return {\n scope,\n\n restrict: 'E',\n\n controller: [ '$scope', '$element', ($scope, $element) => {\n\n if (component.looseProps && !$scope.props) {\n throw new Error(`For angular bindings to work, prop definitions must be passed to zoid.create`);\n }\n\n component.log(`instantiate_angular_component`);\n\n function safeApply() {\n if ($scope.$root.$$phase !== '$apply' && $scope.$root.$$phase !== '$digest') {\n try {\n $scope.$apply();\n } catch (err) {\n // pass\n }\n }\n }\n\n let getProps = () => {\n\n let scopeProps;\n\n if ($scope.props) {\n scopeProps = $scope.props;\n } else {\n scopeProps = {};\n for (let key of Object.keys(scope)) {\n if ($scope[key] !== undefined) {\n scopeProps[key] = $scope[key];\n }\n }\n }\n\n scopeProps = replaceObject(scopeProps, {\n 'function': (value) => {\n return function angularWrapped() : mixed {\n let result = value.apply(this, arguments);\n safeApply();\n return result;\n };\n }\n });\n\n return scopeProps;\n };\n\n let parent = component.init(getProps(), null, $element[0]);\n parent.render($element[0]);\n\n $scope.$watch(() => {\n parent.updateProps(getProps());\n });\n } ]\n };\n });\n\n return module;\n }\n};\n","/* @flow */\n\nimport type { Component, ComponentDriverType } from '../component/component';\n\ndeclare class GlimmerComponentType {\n element : HTMLElement,\n args : Object\n}\n\nexport let glimmer : ComponentDriverType<*, (typeof GlimmerComponentType)> = {\n\n global() {\n // pass\n },\n\n register(component : Component<*>, GlimmerComponent : (typeof GlimmerComponentType)) : (typeof GlimmerComponentType) {\n return class extends GlimmerComponent {\n didInsertElement() {\n component.render({ ...this.args }, this.element);\n }\n };\n }\n};\n","/* @flow */\n/* eslint new-cap: 0 */\n\nimport { replaceObject } from '../lib';\nimport type { Component, ComponentDriverType } from '../component/component';\n\ntype Angular2Injection = {};\n\ntype Angular2Component = {};\n\ntype Angular2Module = {};\n\ntype Angular2 = {\n Component : ({ selector : string, template : string, inputs : Array }) => {\n Class : ({ constructor : Array, ngOnInit : () => void, ngOnChanges : () => void }) => Angular2Component\n },\n NgModule : ({ declarations : Array, exports : Array }) => {\n Class : ({ constructor : () => void }) => Angular2Module\n },\n ElementRef : Angular2Injection,\n NgZone : Angular2Injection\n};\n\n\nexport let angular2 : ComponentDriverType<*, Angular2> = {\n\n global() {\n // pass\n },\n\n register(zoid : Component<*>, { Component : AngularComponent, NgModule, ElementRef, NgZone }) : Angular2Module {\n\n zoid.log('initializing angular2 component');\n\n let getProps = (component) => {\n return replaceObject({ ...component.internalProps, ...component.props }, {\n 'function': (value) => {\n if (typeof value === 'function') {\n return function angular2Wrapped() : void {\n return component.zone.run(() => value.apply(this, arguments));\n };\n }\n }\n });\n };\n\n const ComponentInstance =\n AngularComponent({\n selector: zoid.tag,\n template: '

',\n inputs: [ 'props' ]\n }).Class({\n constructor: [ ElementRef, NgZone, function angularConstructor(elementRef, zone) {\n this.elementRef = elementRef;\n this.zone = zone;\n } ],\n ngOnInit () {\n const targetElement = this.elementRef.nativeElement;\n const parent = zoid.init(getProps(this), null, targetElement);\n parent.render(targetElement);\n this.parent = parent;\n },\n ngOnChanges() {\n if (this.parent) {\n this.parent.updateProps(getProps(this));\n }\n }\n });\n\n\n const ModuleInstance = NgModule({\n declarations: [ ComponentInstance ],\n exports: [ ComponentInstance ]\n }).Class({\n constructor () {\n // pass\n }\n });\n\n return ModuleInstance;\n }\n};\n","/*!\n * Bowser - a browser detector\n * https://github.com/ded/bowser\n * MIT License | (c) Dustin Diaz 2015\n */\n!function(e,t,n){typeof module!=\"undefined\"&&module.exports?module.exports=n():typeof define==\"function\"&&define.amd?define(t,n):e[t]=n()}(this,\"bowser\",function(){function t(t){function n(e){var n=t.match(e);return n&&n.length>1&&n[1]||\"\"}function r(e){var n=t.match(e);return n&&n.length>1&&n[2]||\"\"}function C(e){switch(e){case\"NT\":return\"NT\";case\"XP\":return\"XP\";case\"NT 5.0\":return\"2000\";case\"NT 5.1\":return\"XP\";case\"NT 5.2\":return\"2003\";case\"NT 6.0\":return\"Vista\";case\"NT 6.1\":return\"7\";case\"NT 6.2\":return\"8\";case\"NT 6.3\":return\"8.1\";case\"NT 10.0\":return\"10\";default:return undefined}}var i=n(/(ipod|iphone|ipad)/i).toLowerCase(),o=/like android/i.test(t),u=!o&&/android/i.test(t),a=/nexus\\s*[0-6]\\s*/i.test(t),f=!a&&/nexus\\s*[0-9]+/i.test(t),l=/CrOS/.test(t),c=/silk/i.test(t),h=/sailfish/i.test(t),p=/tizen/i.test(t),d=/(web|hpw)(o|0)s/i.test(t),v=/windows phone/i.test(t),m=/SamsungBrowser/i.test(t),g=!v&&/windows/i.test(t),y=!i&&!c&&/macintosh/i.test(t),b=!u&&!h&&!p&&!d&&/linux/i.test(t),w=r(/edg([ea]|ios)\\/(\\d+(\\.\\d+)?)/i),E=n(/version\\/(\\d+(\\.\\d+)?)/i),S=/tablet/i.test(t)&&!/tablet pc/i.test(t),x=!S&&/[^-]mobi/i.test(t),T=/xbox/i.test(t),N;/opera/i.test(t)?N={name:\"Opera\",opera:e,version:E||n(/(?:opera|opr|opios)[\\s\\/](\\d+(\\.\\d+)?)/i)}:/opr\\/|opios/i.test(t)?N={name:\"Opera\",opera:e,version:n(/(?:opr|opios)[\\s\\/](\\d+(\\.\\d+)?)/i)||E}:/SamsungBrowser/i.test(t)?N={name:\"Samsung Internet for Android\",samsungBrowser:e,version:E||n(/(?:SamsungBrowser)[\\s\\/](\\d+(\\.\\d+)?)/i)}:/Whale/i.test(t)?N={name:\"NAVER Whale browser\",whale:e,version:n(/(?:whale)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/MZBrowser/i.test(t)?N={name:\"MZ Browser\",mzbrowser:e,version:n(/(?:MZBrowser)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/coast/i.test(t)?N={name:\"Opera Coast\",coast:e,version:E||n(/(?:coast)[\\s\\/](\\d+(\\.\\d+)?)/i)}:/focus/i.test(t)?N={name:\"Focus\",focus:e,version:n(/(?:focus)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/yabrowser/i.test(t)?N={name:\"Yandex Browser\",yandexbrowser:e,version:E||n(/(?:yabrowser)[\\s\\/](\\d+(\\.\\d+)?)/i)}:/ucbrowser/i.test(t)?N={name:\"UC Browser\",ucbrowser:e,version:n(/(?:ucbrowser)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/mxios/i.test(t)?N={name:\"Maxthon\",maxthon:e,version:n(/(?:mxios)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/epiphany/i.test(t)?N={name:\"Epiphany\",epiphany:e,version:n(/(?:epiphany)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/puffin/i.test(t)?N={name:\"Puffin\",puffin:e,version:n(/(?:puffin)[\\s\\/](\\d+(?:\\.\\d+)?)/i)}:/sleipnir/i.test(t)?N={name:\"Sleipnir\",sleipnir:e,version:n(/(?:sleipnir)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/k-meleon/i.test(t)?N={name:\"K-Meleon\",kMeleon:e,version:n(/(?:k-meleon)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:v?(N={name:\"Windows Phone\",osname:\"Windows Phone\",windowsphone:e},w?(N.msedge=e,N.version=w):(N.msie=e,N.version=n(/iemobile\\/(\\d+(\\.\\d+)?)/i))):/msie|trident/i.test(t)?N={name:\"Internet Explorer\",msie:e,version:n(/(?:msie |rv:)(\\d+(\\.\\d+)?)/i)}:l?N={name:\"Chrome\",osname:\"Chrome OS\",chromeos:e,chromeBook:e,chrome:e,version:n(/(?:chrome|crios|crmo)\\/(\\d+(\\.\\d+)?)/i)}:/edg([ea]|ios)/i.test(t)?N={name:\"Microsoft Edge\",msedge:e,version:w}:/vivaldi/i.test(t)?N={name:\"Vivaldi\",vivaldi:e,version:n(/vivaldi\\/(\\d+(\\.\\d+)?)/i)||E}:h?N={name:\"Sailfish\",osname:\"Sailfish OS\",sailfish:e,version:n(/sailfish\\s?browser\\/(\\d+(\\.\\d+)?)/i)}:/seamonkey\\//i.test(t)?N={name:\"SeaMonkey\",seamonkey:e,version:n(/seamonkey\\/(\\d+(\\.\\d+)?)/i)}:/firefox|iceweasel|fxios/i.test(t)?(N={name:\"Firefox\",firefox:e,version:n(/(?:firefox|iceweasel|fxios)[ \\/](\\d+(\\.\\d+)?)/i)},/\\((mobile|tablet);[^\\)]*rv:[\\d\\.]+\\)/i.test(t)&&(N.firefoxos=e,N.osname=\"Firefox OS\")):c?N={name:\"Amazon Silk\",silk:e,version:n(/silk\\/(\\d+(\\.\\d+)?)/i)}:/phantom/i.test(t)?N={name:\"PhantomJS\",phantom:e,version:n(/phantomjs\\/(\\d+(\\.\\d+)?)/i)}:/slimerjs/i.test(t)?N={name:\"SlimerJS\",slimer:e,version:n(/slimerjs\\/(\\d+(\\.\\d+)?)/i)}:/blackberry|\\bbb\\d+/i.test(t)||/rim\\stablet/i.test(t)?N={name:\"BlackBerry\",osname:\"BlackBerry OS\",blackberry:e,version:E||n(/blackberry[\\d]+\\/(\\d+(\\.\\d+)?)/i)}:d?(N={name:\"WebOS\",osname:\"WebOS\",webos:e,version:E||n(/w(?:eb)?osbrowser\\/(\\d+(\\.\\d+)?)/i)},/touchpad\\//i.test(t)&&(N.touchpad=e)):/bada/i.test(t)?N={name:\"Bada\",osname:\"Bada\",bada:e,version:n(/dolfin\\/(\\d+(\\.\\d+)?)/i)}:p?N={name:\"Tizen\",osname:\"Tizen\",tizen:e,version:n(/(?:tizen\\s?)?browser\\/(\\d+(\\.\\d+)?)/i)||E}:/qupzilla/i.test(t)?N={name:\"QupZilla\",qupzilla:e,version:n(/(?:qupzilla)[\\s\\/](\\d+(?:\\.\\d+)+)/i)||E}:/chromium/i.test(t)?N={name:\"Chromium\",chromium:e,version:n(/(?:chromium)[\\s\\/](\\d+(?:\\.\\d+)?)/i)||E}:/chrome|crios|crmo/i.test(t)?N={name:\"Chrome\",chrome:e,version:n(/(?:chrome|crios|crmo)\\/(\\d+(\\.\\d+)?)/i)}:u?N={name:\"Android\",version:E}:/safari|applewebkit/i.test(t)?(N={name:\"Safari\",safari:e},E&&(N.version=E)):i?(N={name:i==\"iphone\"?\"iPhone\":i==\"ipad\"?\"iPad\":\"iPod\"},E&&(N.version=E)):/googlebot/i.test(t)?N={name:\"Googlebot\",googlebot:e,version:n(/googlebot\\/(\\d+(\\.\\d+))/i)||E}:N={name:n(/^(.*)\\/(.*) /),version:r(/^(.*)\\/(.*) /)},!N.msedge&&/(apple)?webkit/i.test(t)?(/(apple)?webkit\\/537\\.36/i.test(t)?(N.name=N.name||\"Blink\",N.blink=e):(N.name=N.name||\"Webkit\",N.webkit=e),!N.version&&E&&(N.version=E)):!N.opera&&/gecko\\//i.test(t)&&(N.name=N.name||\"Gecko\",N.gecko=e,N.version=N.version||n(/gecko\\/(\\d+(\\.\\d+)?)/i)),!N.windowsphone&&(u||N.silk)?(N.android=e,N.osname=\"Android\"):!N.windowsphone&&i?(N[i]=e,N.ios=e,N.osname=\"iOS\"):y?(N.mac=e,N.osname=\"macOS\"):T?(N.xbox=e,N.osname=\"Xbox\"):g?(N.windows=e,N.osname=\"Windows\"):b&&(N.linux=e,N.osname=\"Linux\");var k=\"\";N.windows?k=C(n(/Windows ((NT|XP)( \\d\\d?.\\d)?)/i)):N.windowsphone?k=n(/windows phone (?:os)?\\s?(\\d+(\\.\\d+)*)/i):N.mac?(k=n(/Mac OS X (\\d+([_\\.\\s]\\d+)*)/i),k=k.replace(/[_\\s]/g,\".\")):i?(k=n(/os (\\d+([_\\s]\\d+)*) like mac os x/i),k=k.replace(/[_\\s]/g,\".\")):u?k=n(/android[ \\/-](\\d+(\\.\\d+)*)/i):N.webos?k=n(/(?:web|hpw)os\\/(\\d+(\\.\\d+)*)/i):N.blackberry?k=n(/rim\\stablet\\sos\\s(\\d+(\\.\\d+)*)/i):N.bada?k=n(/bada\\/(\\d+(\\.\\d+)*)/i):N.tizen&&(k=n(/tizen[\\/\\s](\\d+(\\.\\d+)*)/i)),k&&(N.osversion=k);var L=!N.windows&&k.split(\".\")[0];if(S||f||i==\"ipad\"||u&&(L==3||L>=4&&!x)||N.silk)N.tablet=e;else if(x||i==\"iphone\"||i==\"ipod\"||u||a||N.blackberry||N.webos||N.bada)N.mobile=e;return N.msedge||N.msie&&N.version>=10||N.yandexbrowser&&N.version>=15||N.vivaldi&&N.version>=1||N.chrome&&N.version>=20||N.samsungBrowser&&N.version>=4||N.whale&&s([N.version,\"1.0\"])===1||N.mzbrowser&&s([N.version,\"6.0\"])===1||N.focus&&s([N.version,\"1.0\"])===1||N.firefox&&N.version>=20||N.safari&&N.version>=6||N.opera&&N.version>=10||N.ios&&N.osversion&&N.osversion.split(\".\")[0]>=6||N.blackberry&&N.version>=10.1||N.chromium&&N.version>=20?N.a=e:N.msie&&N.version<10||N.chrome&&N.version<20||N.firefox&&N.version<20||N.safari&&N.version<6||N.opera&&N.version<10||N.ios&&N.osversion&&N.osversion.split(\".\")[0]<6||N.chromium&&N.version<20?N.c=e:N.x=e,N}function r(e){return e.split(\".\").length}function i(e,t){var n=[],r;if(Array.prototype.map)return Array.prototype.map.call(e,t);for(r=0;r=0){if(n[0][t]>n[1][t])return 1;if(n[0][t]!==n[1][t])return-1;if(t===0)return 0}}function o(e,r,i){var o=n;typeof r==\"string\"&&(i=r,r=void 0),r===void 0&&(r=!1),i&&(o=t(i));var u=\"\"+o.version;for(var a in e)if(e.hasOwnProperty(a)&&o[a]){if(typeof e[a]!=\"string\")throw new Error(\"Browser version in the minVersion map should be a string: \"+a+\": \"+String(e));return s([u,e[a]])<0}return r}function u(e,t,n){return!o(e,t,n)}var e=!0,n=t(typeof navigator!=\"undefined\"?navigator.userAgent||\"\":\"\");return n.test=function(e){for(var t=0;t\\n \\n \\n \\n \\n \\n \\n \\n \\n\\n\"","module.exports = \"\\n \\n \\n \\n\\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n \\n \\n \\n \\n \\n \\n \\n\\n\"","module.exports = \"\\n\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n \\n \\n \\n \\n \\n \\n \\n\\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n\\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n unionpay\\n Created with Sketch.\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","// get successful control from form and assemble into object\n// http://www.w3.org/TR/html401/interact/forms.html#h-17.13.2\n\n// types which indicate a submit action and are not successful controls\n// these will be ignored\nvar k_r_submitter = /^(?:submit|button|image|reset|file)$/i;\n\n// node names which could be successful controls\nvar k_r_success_contrls = /^(?:input|select|textarea|keygen)/i;\n\n// Matches bracket notation.\nvar brackets = /(\\[[^\\[\\]]*\\])/g;\n\n// serializes form fields\n// @param form MUST be an HTMLForm element\n// @param options is an optional argument to configure the serialization. Default output\n// with no options specified is a url encoded string\n// - hash: [true | false] Configure the output type. If true, the output will\n// be a js object.\n// - serializer: [function] Optional serializer function to override the default one.\n// The function takes 3 arguments (result, key, value) and should return new result\n// hash and url encoded str serializers are provided with this module\n// - disabled: [true | false]. If true serialize disabled fields.\n// - empty: [true | false]. If true serialize empty fields\nfunction serialize(form, options) {\n if (typeof options != 'object') {\n options = { hash: !!options };\n }\n else if (options.hash === undefined) {\n options.hash = true;\n }\n\n var result = (options.hash) ? {} : '';\n var serializer = options.serializer || ((options.hash) ? hash_serializer : str_serialize);\n\n var elements = form && form.elements ? form.elements : [];\n\n //Object store each radio and set if it's empty or not\n var radio_store = Object.create(null);\n\n for (var i=0 ; i\n \n
\n
\n \n \n
\n
\n {content.windowMessage}\n
\n
\n
\n
\n
\n
\n\n
\n {outlet}\n
\n\n \n
\n );\n\n const container = (\n \n \n { el }\n \n \n );\n\n on(EVENT.CLOSE, () => {\n el.className += ` ${ tag }-loading`;\n });\n\n return (\n
\n \n\n \n
\n );\n}\n\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { create } from 'zoid/src';\nimport { type Component } from 'zoid/src/component/component';\nimport { base64encode } from 'belter/src';\n\nimport { ENV } from '../constants';\nimport { getButtonSessionID, getBrowserLocale, getSessionID, getCurrentScriptUrl } from '../lib';\nimport { config } from '../config';\n\nimport { containerTemplate } from './template';\n\ntype BillingOptions = {|\n client : {\n [string] : (string | ZalgoPromise)\n },\n env? : string,\n locale? : string,\n logLevel : string,\n awaitPopupBridge : Function,\n meta : Object,\n commit : boolean,\n token : string\n|};\n\nexport const BillingPage : Component = create({\n tag: 'billing-page',\n name: 'billing-page',\n\n buildUrl(props) : string {\n const env = props.env || config.env;\n return `${ config.inlinedCardFieldUrls[env] }/billing`;\n },\n\n get domain() : Object {\n return {\n ...config.paypalDomains,\n [ ENV.LOCAL ]: /^http:\\/\\/localhost.paypal.com:\\d+$/\n };\n },\n\n scrolling: true,\n\n props: {\n sessionID: {\n type: 'string',\n required: false,\n def() : string {\n return getSessionID();\n },\n queryParam: true\n },\n\n\n token: {\n type: 'string',\n required: true,\n queryParam: true\n },\n\n buttonSessionID: {\n type: 'string',\n required: false,\n def() : ?string {\n return getButtonSessionID();\n },\n queryParam: true\n },\n\n commit: {\n type: 'boolean',\n required: false,\n queryParam: true\n },\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n },\n\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n allowDelegate: true,\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n }\n },\n\n cardType: {\n type: 'string',\n required: false\n },\n prefilledZipCode: {\n type: 'string',\n required: false\n },\n\n onEvent: {\n type: 'function',\n required: false,\n sameDomain: true\n },\n\n dispatch: {\n type: 'object',\n required: false,\n sameDomain: true\n },\n\n onCancel: {\n type: 'function',\n required: false,\n once: true,\n noop: true\n },\n\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n }\n },\n\n\n containerTemplate\n});\n","/* @flow */\n\nimport { track, info } from 'beaver-logger/client';\n\nimport { config } from '../config';\nimport { FPTI, PPTM_ID } from '../constants';\nimport { stringifyError, extendUrl, loadScript, getElement, isPayPalDomain } from '../lib';\n\n\nfunction shouldCreateInitialPptmScript() : boolean {\n const id = window.location.hostname;\n\n if (!id) {\n return false;\n }\n\n if (isPayPalDomain()) {\n return false;\n }\n\n const existingScript = getElement(PPTM_ID);\n const alreadyDownloaded = Boolean(existingScript);\n\n if (alreadyDownloaded) {\n info('pptm_tried_loading_twice');\n return false;\n }\n\n return true;\n}\n\nfunction removePptm() {\n const script = getElement(PPTM_ID);\n\n if (script) {\n // $FlowFixMe\n script.parentNode.removeChild(script);\n }\n}\n\nexport function pptmFactory() : Object {\n let noContentFoundInContainer = false;\n const callback = `__pptmLoadedWithNoContent`;\n let listener;\n\n const obj = {\n /*\n In the button component, we set up a global window[callback] that will be called in pptm `onload` attribute.\n Button.render calls `reloadPptmScript`, which checks if window[callback] has been called yet (meaning, it checks\n if pptm.js was loaded before Button.render was called). If so, we'll check to see if we should reload PPTM\n now that we might have a client ID from the Button.render method.\n If pptm.js hasn't loaded yet, then we'll set up a listener to the same logic above to defer it until\n pptm.js actually loads.\n */\n reloadPptmScript(clientId : ?string) {\n const tryCreatePptmScript = () => {\n if (obj.shouldReloadPptmScript(clientId)) {\n obj.removePptm();\n obj.createPptmScript(clientId);\n } else {\n // Defer until later, since reloadPptmScript might have been called\n // before pptm loaded, so we'll still want to hook into the script load.\n listener = tryCreatePptmScript;\n }\n };\n\n tryCreatePptmScript();\n },\n listenForLoadWithNoContent() {\n window[callback] = () => {\n noContentFoundInContainer = true;\n\n if (listener) {\n listener();\n listener = undefined;\n }\n };\n },\n listenForButtonRender() {\n window.paypalDDL = window.paypalDDL || [];\n const buttonRenderEvent = window.paypalDDL.filter(e => e.event === 'paypalButtonRender');\n if (buttonRenderEvent.length === 0) {\n window.paypalDDL.push({ event: 'paypalButtonRender' });\n }\n },\n get callback() : string {\n return callback;\n },\n get noContentFoundInContainer() : boolean {\n return noContentFoundInContainer;\n },\n createPptmScript: (clientId : ?string) => {\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.PPTM,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.PPTM_LOAD\n });\n \n const params = {\n t: 'xo',\n id: window.location.hostname,\n mrid: config.merchantID,\n client_id: '',\n v: config.version,\n source: 'checkoutjs'\n };\n \n if (clientId) {\n params.client_id = clientId;\n } else {\n delete params.client_id;\n }\n \n const fullUrl = extendUrl(config.pptmUrl, params);\n \n loadScript(fullUrl, 0, {\n async: true,\n id: PPTM_ID\n }).then(() => {\n // If the snippet is empty, then fire the callback.\n // We assume non-empty pptm.js bundles with init the paypalDDL and push an event called\n // `snippetRun` to it.\n if (!(window.paypalDDL && window.paypalDDL[0] && window.paypalDDL[0].event === 'snippetRun')) {\n window[callback]();\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.PPTM,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.PPTM_LOADED\n });\n }).catch(err => {\n info('pptm_script_error', { error: stringifyError(err) });\n });\n },\n shouldCreateInitialPptmScript,\n /*\n During Button render if a client ID was provided, we'll want to refresh the\n pptm script to try to pull down a container by that value.\n We'll only do this if we're not on the PayPal domain, or if\n a merchant ID wasn't already provided (since container look-up can\n also happen by merchant ID). Note that this will only happen\n if there was no content found in the container that was pulled down\n in the `setup` script. This is important because we don't want\n to pull down multiple containers that actually contain content,\n otherwise we'll be firing duplicate tags.\n */\n shouldReloadPptmScript(clientId : ?string) : boolean {\n if (noContentFoundInContainer === false) {\n return false;\n }\n\n if (isPayPalDomain()) {\n return false;\n }\n \n // If a merchant ID was already provided, then that meant we initially\n // loaded the pptm script with that value as the main container\n // look-up value, so in this case we don't want to reload pptm.\n if (config.merchantID) {\n return false;\n }\n \n if (clientId) {\n return true;\n }\n \n return false;\n },\n removePptm\n };\n\n return obj;\n}\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { create } from 'zoid/src';\nimport { base64encode } from 'belter/src';\n\nimport { getBrowserLocale, getCurrentScriptUrl } from '../lib';\nimport { config } from '../config';\nimport { containerTemplate } from '../billing/template';\n\nexport const ThreeDomainSecure = create({\n tag: 'paypal-3ds',\n name: '3ds',\n\n buildUrl(props) : string {\n const env = props.env || config.env;\n return `${ config.inlinedCardFieldUrls[env] }/init3ds`;\n },\n\n get domain() : Object {\n return {\n ...config.paypalDomains\n };\n },\n\n scrolling: true,\n\n props: {\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n },\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n allowDelegate: true,\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n }\n },\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n },\n challengeUrl: {\n type: 'string'\n },\n threeDomainSecureToken: {\n type: 'string'\n },\n method: {\n type: 'string'\n },\n onSuccess: {\n type: 'function',\n required: false\n },\n onError: {\n type: 'function',\n required: false\n },\n onCancel: {\n type: 'function',\n required: true,\n allowDelegate: true\n }\n },\n\n\n containerTemplate\n});\n","/* @flow */\n\nimport { pptmFactory } from './pptm-factory';\n\nexport const pptm = pptmFactory();\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { on, send } from 'post-robot/src';\nimport { base64encode } from 'belter/src';\nimport { info, track } from 'beaver-logger/client';\nimport { getAncestor, isSameDomain } from 'cross-domain-utils/src';\n\nimport { config } from '../config';\nimport { FPTI, PAYMENT_TYPE } from '../constants';\nimport { request, memoize, isPayPalDomain, uniqueID } from '../lib';\n\ntype ProxyRest = {\n [string] : (...args : $ReadOnlyArray) => ZalgoPromise<*>\n};\n\nlet proxyRest : ProxyRest = {};\n\nconst createAccessToken = memoize((env : string, client : { [key : string] : string }) : ZalgoPromise => {\n\n info(`rest_api_create_access_token`);\n\n env = env || config.env;\n\n const clientID : string = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (proxyRest.createAccessToken && !proxyRest.createAccessToken.source.closed) {\n return proxyRest.createAccessToken(env, client);\n }\n\n const basicAuth : string = base64encode(`${ clientID }:`);\n\n return request({\n\n method: `post`,\n url: config.authApiUrls[env],\n headers: {\n Authorization: `Basic ${ basicAuth }`\n },\n data: {\n grant_type: `client_credentials`\n }\n\n }).then(res => {\n\n if (res && res.error === 'invalid_client') {\n throw new Error(`Auth Api invalid ${ env } client id: ${ clientID }:\\n\\n${ JSON.stringify(res, null, 4) }`);\n }\n\n if (!res || !res.access_token) {\n throw new Error(`Auth Api response error:\\n\\n${ JSON.stringify(res, null, 4) }`);\n }\n\n return res.access_token;\n });\n\n}, { time: 10 * 60 * 1000 });\n\nconst createExperienceProfile = memoize((env : string, client : { [key : string] : string }, experienceDetails : Object = {}) : ZalgoPromise => {\n\n info(`rest_api_create_experience_profile`);\n\n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (proxyRest.createExperienceProfile && !proxyRest.createExperienceProfile.source.closed) {\n return proxyRest.createExperienceProfile(env, client, experienceDetails);\n }\n\n experienceDetails.temporary = true;\n experienceDetails.name = experienceDetails.name ? `${ experienceDetails.name }_${ Math.random().toString() }` : Math.random().toString();\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n return request({\n method: `post`,\n url: config.experienceApiUrls[env],\n headers: {\n Authorization: `Bearer ${ accessToken }`\n },\n json: experienceDetails\n });\n\n }).then((res) : string => {\n\n if (res && res.error) {\n throw new Error(res.error);\n }\n\n if (!res.id) {\n throw new Error(`No id in experience profile response:\\n\\n${ JSON.stringify(res, null, 4) }`);\n }\n\n return res.id;\n });\n\n}, { time: 10 * 60 * 1000 });\n\nfunction logPaymentResponse(res) {\n\n if (!res) {\n return;\n }\n\n let paymentToken;\n let paymentID;\n\n if (res.id) {\n paymentID = res.id;\n }\n\n if (res.links && res.links.length) {\n for (let i = 0; i < res.links.length; i++) {\n if (res.links[i].method === 'REDIRECT' && res.links[i].rel === 'approval_url') {\n const match = res.links[i].href.match(/token=((EC-)?[A-Z0-9]{17})/);\n if (match) {\n paymentToken = match[1];\n }\n }\n }\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.BUTTON,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CREATE_PAYMENT,\n [ FPTI.KEY.CONTEXT_TYPE ]: FPTI.CONTEXT_TYPE[PAYMENT_TYPE.PAY_ID],\n [ FPTI.KEY.PAY_ID ]: paymentID,\n [ FPTI.KEY.TOKEN ]: paymentToken,\n [ FPTI.KEY.CONTEXT_ID ]: paymentID\n });\n}\n\nfunction getDefaultReturnUrl() : string {\n return `https://www.paypal.com/checkoutnow/error`;\n}\n\nfunction createTracking(env : string, client : { [key : string] : string }, merchantID, trackingData) : Object {\n \n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n const trackingID = uniqueID();\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n const headers : Object = {\n Authorization: `Bearer ${ accessToken }`\n };\n\n return request({\n method: `put`,\n url: `${ config.trackingApiUrls[env] }/${ merchantID }/${ trackingID }`,\n headers,\n json: {\n 'tracking_id': trackingID,\n 'additional_data': trackingData\n }\n });\n\n }).then(() => {\n return trackingID;\n });\n}\n\nfunction createPayment(env : string, client : { [key : string] : string }, paymentDetails : Object) : ZalgoPromise {\n\n info(`rest_api_create_checkout_token`);\n\n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n let { payment, experience, meta, tracking } = paymentDetails;\n\n if (!payment) {\n throw new Error(`Expected payment details to be passed`);\n }\n\n if (proxyRest.createPayment && !proxyRest.createPayment.source.closed) {\n return proxyRest.createPayment(env, client, { payment, experience, meta, tracking });\n }\n\n payment = { ...payment };\n payment.intent = payment.intent || 'sale';\n payment.redirect_urls = payment.redirect_urls || {};\n payment.redirect_urls.return_url = payment.redirect_urls.return_url || getDefaultReturnUrl();\n payment.redirect_urls.cancel_url = payment.redirect_urls.cancel_url || getDefaultReturnUrl();\n payment.payer = payment.payer || {};\n payment.payer.payment_method = payment.payer.payment_method || 'paypal';\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n return ZalgoPromise.try(() => {\n\n if (experience) {\n return ZalgoPromise.resolve(createExperienceProfile(env, client, experience));\n }\n\n }).then((experienceID) : ZalgoPromise => {\n\n return ZalgoPromise.try(() => {\n\n if (tracking) {\n return ZalgoPromise.resolve(createTracking(env, client, tracking.id, tracking.data));\n }\n\n }).then((trackingID) : ZalgoPromise => {\n\n if (experienceID) {\n payment.experience_profile_id = experienceID;\n }\n\n const headers : Object = {\n Authorization: `Bearer ${ accessToken }`\n };\n\n if (trackingID) {\n headers['Paypal-Client-Metadata-Id'] = trackingID;\n }\n\n if (meta && meta.partner_attribution_id) {\n headers['PayPal-Partner-Attribution-Id'] = meta.partner_attribution_id;\n }\n\n return request({\n method: `post`,\n url: config.paymentApiUrls[env],\n headers,\n json: payment\n });\n });\n });\n\n }).then((res) : string => {\n\n logPaymentResponse(res);\n\n if (res && res.id) {\n return res.id;\n }\n\n throw new Error(`Payment Api response error:\\n\\n${ JSON.stringify(res, null, 4) }`);\n\n });\n}\n\nfunction createOrder(env : string, client : { [key : string] : string }, paymentDetails : Object) : ZalgoPromise {\n\n info(`rest_api_create_order_token`);\n\n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n let { order, meta } = paymentDetails;\n\n if (!order) {\n throw new Error(`Expected order details to be passed`);\n }\n\n if (proxyRest.createOrder && !proxyRest.createOrder.source.closed) {\n return proxyRest.createOrder(env, client, { order, meta });\n }\n\n order = { ...order };\n order.intent = order.intent || 'CAPTURE';\n order.application_context = order.application_context || {};\n order.application_context.return_url = order.application_context.return_url || getDefaultReturnUrl();\n order.application_context.cancel_url = order.application_context.cancel_url || getDefaultReturnUrl();\n order.purchase_units = order.purchase_units || [];\n order.purchase_units[0] = order.purchase_units[0] || {};\n order.purchase_units.forEach(unit => {\n unit.reference_id = unit.reference_id || Math.random().toString();\n });\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n const headers : Object = {\n Authorization: `Bearer ${ accessToken }`\n };\n\n if (meta && meta.partner_attribution_id) {\n headers['PayPal-Partner-Attribution-Id'] = meta.partner_attribution_id;\n }\n\n return request({\n method: `post`,\n url: config.orderApiUrls[env],\n headers,\n json: order\n });\n\n }).then((res) : string => {\n\n logPaymentResponse(res);\n\n if (res && res.id) {\n return res.id;\n }\n\n throw new Error(`Payment Api response error:\\n\\n${ JSON.stringify(res, null, 4) }`);\n });\n}\n\nexport function createBillingAgreement(env : string, client : { [key : string] : string }, billingDetails : Object, experienceDetails? : ?Object) : ZalgoPromise {\n\n info(`rest_api_create_billing_token`);\n\n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (proxyRest.createBillingAgreement && !proxyRest.createBillingAgreement.source.closed) {\n return proxyRest.createBillingAgreement(env, client, billingDetails, experienceDetails);\n }\n\n billingDetails = { ...billingDetails };\n billingDetails.plan = billingDetails.plan || {};\n billingDetails.plan.merchant_preferences = billingDetails.plan.merchant_preferences || {};\n billingDetails.plan.merchant_preferences.return_url = billingDetails.plan.merchant_preferences.return_url || getDefaultReturnUrl();\n billingDetails.plan.merchant_preferences.cancel_url = billingDetails.plan.merchant_preferences.cancel_url || getDefaultReturnUrl();\n billingDetails.payer = billingDetails.payer || {};\n billingDetails.payer.payment_method = billingDetails.payer.payment_method || 'paypal';\n\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n return ZalgoPromise.try(() => {\n\n if (experienceDetails) {\n return ZalgoPromise.resolve(createExperienceProfile(env, client, experienceDetails));\n }\n\n }).then((experienceID) : ZalgoPromise => {\n\n if (experienceID) {\n billingDetails.experience_profile_id = experienceID;\n }\n\n return request({\n method: `post`,\n url: config.billingApiUrls[env],\n headers: {\n Authorization: `Bearer ${ accessToken }`\n },\n json: billingDetails\n });\n });\n\n }).then(res => {\n\n if (res && res.token_id) {\n return res.token_id;\n }\n\n throw new Error(`Billing Api response error:\\n\\n${ JSON.stringify(res, null, 4) }`);\n });\n}\n\nexport const rest = {\n payment: {\n create: createPayment\n },\n order: {\n create: createOrder\n },\n billingAgreement: {\n create: createBillingAgreement\n },\n experience: {\n create: createExperienceProfile\n }\n};\n\nconst PROXY_REST = `proxy_rest`;\nconst parentWin = getAncestor();\n\non(PROXY_REST, { domain: config.paypal_domain_regex }, ({ data }) => {\n proxyRest = data;\n});\n\nif (parentWin && isPayPalDomain() && !isSameDomain(parentWin)) {\n send(parentWin, PROXY_REST, { createAccessToken, createExperienceProfile, createPayment, createBillingAgreement, createOrder })\n .catch(() => {\n // pass\n });\n}\n","/* @flow */\n\nimport { info, track, immediateFlush } from 'beaver-logger/client';\n\nimport { FPTI, PAYMENT_TYPE } from './constants';\nimport { getReturnToken, getSessionState, getDomainSetting, eventEmitter } from './lib';\n\nexport const onAuthorizeListener = eventEmitter();\n\nfunction log(experiment : string, treatment : string, token : ?string, state : string) {\n\n getSessionState(session => {\n\n let event = `${ experiment }_${ treatment }_${ state }`;\n const loggedEvents = session.loggedExperimentEvents = session.loggedExperimentEvents || [];\n const duplicate = loggedEvents.indexOf(event) !== -1;\n\n if (duplicate) {\n info(`duplicate_${ event }`);\n\n } else {\n info(event);\n loggedEvents.push(event);\n\n const edge = window.navigator && window.navigator.userAgent && window.navigator.userAgent.match(/Edge\\/[0-9]{2}/);\n\n if (edge) {\n event = info(`${ edge[0].toLowerCase().replace('/', '_') }_${ event }`);\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: state,\n [ FPTI.KEY.EXPERIMENT_NAME ]: experiment,\n [ FPTI.KEY.TREATMENT_NAME ]: treatment,\n [ FPTI.KEY.TOKEN ]: token,\n [ FPTI.KEY.CONTEXT_ID ]: token,\n [ FPTI.KEY.CONTEXT_TYPE ]: token ? FPTI.CONTEXT_TYPE[PAYMENT_TYPE.EC_TOKEN] : FPTI.CONTEXT_TYPE.BUTTON_SESSION_ID\n });\n\n immediateFlush();\n }\n });\n}\n\nexport function logExperimentTreatment({ experiment, treatment, state, token } : { experiment : string, treatment : string, state : string, token : ?string }) {\n\n if (!experiment || !treatment) {\n return;\n }\n\n getSessionState(session => {\n session.externalExperiment = experiment;\n session.externalExperimentTreatment = treatment;\n\n if (token) {\n session.externalExperimentToken = token;\n }\n });\n\n log(experiment, treatment, token, state);\n}\n\nfunction logReturn(token : string) {\n\n const {\n externalExperiment,\n externalExperimentTreatment,\n externalExperimentToken\n } = getSessionState(session => session);\n\n if (externalExperiment && externalExperimentTreatment && externalExperimentToken === token) {\n log(externalExperiment, externalExperimentTreatment, token, `complete`);\n } else {\n info(`experiment_mismatch`, {\n token,\n externalExperiment,\n externalExperimentTreatment,\n externalExperimentToken\n });\n }\n}\n\nif (getDomainSetting('log_authorize')) {\n\n onAuthorizeListener.once(({ paymentToken }) => {\n setTimeout(() => {\n logReturn(paymentToken);\n }, 1);\n });\n\n const returnToken = getReturnToken();\n\n if (returnToken) {\n setTimeout(() => {\n if (returnToken) {\n logReturn(returnToken);\n }\n }, 1);\n }\n}\n","/* @flow */\n\nimport { once, noop } from 'zoid/src/lib';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { error } from 'beaver-logger/client';\nimport type { CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { extendUrl, redirect, awaitKey, stringifyError } from '../lib';\nimport { config } from '../config';\nimport { FUNDING } from '../constants';\n\nimport { determineParameterFromToken, determineUrl } from './checkout';\n\nconst OPTYPE = {\n PAYMENT: 'payment',\n CANCEL: 'cancel'\n};\n\nconst CONTINGENCY = {\n PAYMENT_CANCELLED: 'PAYMENT_CANCELLED'\n};\n\ntype PopupBridge = {|\n open : (string) => ZalgoPromise\n|};\n\nfunction wrapPopupBridge(popupBridge : Object) : PopupBridge {\n return {\n open(url : string) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n popupBridge.onComplete = (err, result) => {\n if (!result) {\n return reject(new Error('No payload passed in popupBridge.onComplete'));\n }\n\n return err ? reject(err) : resolve(result);\n };\n\n popupBridge.onCancel = () => {\n const err = new Error(CONTINGENCY.PAYMENT_CANCELLED);\n // $FlowFixMe\n err.code = CONTINGENCY.PAYMENT_CANCELLED;\n return reject(err);\n };\n\n popupBridge.open(extendUrl(url, { redirect_uri: popupBridge.getReturnUrlPrefix() }));\n });\n }\n };\n}\n\nfunction validateCheckoutProps(props) {\n if (!props.payment) {\n throw new Error(`Expected props.payment to be passed`);\n }\n\n if (!props.onAuthorize) {\n throw new Error(`Expected props.onAuthorize to be passed`);\n }\n\n if (props.env && !config.checkoutUrls[props.env]) {\n throw new Error(`Invalid props.env: ${ props.env }`);\n }\n}\n\nfunction normalizeCheckoutProps(props : Object) : { env : string, payment : Function, onAuthorize : Function, onCancel : Function } {\n const env = props.env = props.env || config.env;\n\n const payment = props.payment;\n const onAuthorize = once(props.onAuthorize);\n const onCancel = once(props.onCancel || noop);\n\n return { env, payment, onAuthorize, onCancel };\n}\n\nfunction getUrl(props : { env : string, payment : Function, onAuthorize : Function, onCancel? : Function, commit? : boolean }) : ZalgoPromise {\n\n const { env, payment } = normalizeCheckoutProps(props);\n\n return ZalgoPromise.try(payment, { props }).then(token => {\n if (!token) {\n throw new Error(`Expected props.payment to return a payment id or token`);\n }\n\n return extendUrl(determineUrl(env, FUNDING.PAYPAL, token), {\n [determineParameterFromToken(token)]: token,\n\n useraction: props.commit ? 'commit' : '',\n native_xo: '1'\n });\n });\n}\n\nfunction extractDataFromQuery(query : Object) : Object {\n\n const data : Object = {\n paymentToken: query.token,\n billingToken: query.ba_token,\n paymentID: query.paymentId,\n payerID: query.PayerID,\n intent: query.intent\n };\n \n const { opType, return_uri, cancel_uri } = query;\n\n if (opType === OPTYPE.PAYMENT) {\n data.returnUrl = return_uri;\n\n } else if (opType === OPTYPE.CANCEL) {\n data.cancelUrl = cancel_uri;\n }\n\n return data;\n}\n\nfunction buildActions(query : Object) : Object {\n \n const actions : Object = {\n close: noop,\n closeComponent: noop\n };\n\n const { opType, return_uri, cancel_uri } = query;\n\n if (opType === OPTYPE.PAYMENT) {\n actions.redirect = (win : CrossDomainWindowType = window, redirectUrl : string = return_uri) : ZalgoPromise => {\n return redirect(win, redirectUrl);\n };\n\n } else if (opType === OPTYPE.CANCEL) {\n actions.redirect = (win : CrossDomainWindowType = window, redirectUrl : string = cancel_uri) : ZalgoPromise => {\n return redirect(win, redirectUrl);\n };\n }\n\n return actions;\n}\n\nfunction renderThroughPopupBridge(props : Object, popupBridge : PopupBridge) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n validateCheckoutProps(props);\n\n }).then(() => {\n\n return getUrl(props);\n \n }).then(url => {\n\n return popupBridge.open(url);\n\n }).then(payload => {\n\n const { opType } = payload.queryItems;\n const { onAuthorize, onCancel } = normalizeCheckoutProps(props);\n\n const data = extractDataFromQuery(payload.queryItems);\n const actions = buildActions(payload.queryItems);\n \n if (opType === OPTYPE.PAYMENT) {\n return onAuthorize(data, actions);\n\n } else if (opType === OPTYPE.CANCEL) {\n return onCancel(data, actions);\n \n } else {\n throw new Error(`Invalid opType: ${ opType }`);\n }\n\n }).catch(err => {\n\n if (err && err.code === CONTINGENCY.PAYMENT_CANCELLED) {\n const { onCancel } = normalizeCheckoutProps(props);\n return onCancel({}, {});\n }\n\n throw err;\n });\n}\n\nexport function awaitPopupBridge(Button : Object) : ZalgoPromise {\n if (Button.xprops && Button.xprops.awaitPopupBridge) {\n return Button.xprops.awaitPopupBridge();\n }\n\n return awaitKey(window, 'popupBridge').then(popupBridge => {\n return wrapPopupBridge(popupBridge);\n });\n}\n\nexport function setupPopupBridgeProxy(Checkout : Object, Button : Object) {\n\n let popupBridge;\n\n awaitPopupBridge(Button).then(bridge => {\n popupBridge = bridge;\n });\n\n function doRender(props, original) : ZalgoPromise {\n if (!popupBridge) {\n return original();\n }\n \n return renderThroughPopupBridge(props, popupBridge)\n .catch(err => {\n error(`popup_bridge_error`, { err: stringifyError(err) });\n return original();\n });\n }\n\n const render = Checkout.render;\n Checkout.render = function popupBridgeRender(props : Object) : ZalgoPromise {\n return doRender(props, () => render.apply(this, arguments));\n };\n\n const renderTo = Checkout.renderTo;\n Checkout.renderTo = function popupBridgeRenderTo(win : CrossDomainWindowType, props : Object) : ZalgoPromise {\n return doRender(props, () => renderTo.apply(this, arguments));\n };\n\n const renderPopupTo = Checkout.renderPopupTo;\n Checkout.renderPopupTo = function popupBridgeRenderPopupTo(win : CrossDomainWindowType, props : Object) : ZalgoPromise {\n return doRender(props, () => renderPopupTo.apply(this, arguments));\n };\n}\n","/* @flow */\n/* global __paypal_checkout__*/\n\nimport { FUNDING, COUNTRY, CARD, PLATFORM, DEFAULT, ENV } from '../constants';\n\nexport const FUNDING_PRIORITY = [\n FUNDING.PAYPAL,\n FUNDING.VENMO,\n FUNDING.ITAU,\n FUNDING.CREDIT,\n FUNDING.CARD,\n FUNDING.IDEAL,\n FUNDING.ELV,\n FUNDING.BANCONTACT,\n FUNDING.GIROPAY,\n FUNDING.EPS,\n FUNDING.SOFORT,\n FUNDING.MYBANK,\n FUNDING.BLIK,\n FUNDING.P24,\n FUNDING.PAYU,\n FUNDING.VERKKOPANKKI,\n FUNDING.TRUSTLY,\n FUNDING.MAXIMA,\n FUNDING.BOLETO,\n FUNDING.OXXO\n];\n\nexport const FUNDING_ORDER = [\n FUNDING.PAYPAL,\n FUNDING.VENMO,\n FUNDING.ITAU,\n FUNDING.CREDIT,\n FUNDING.IDEAL,\n FUNDING.ELV,\n FUNDING.BANCONTACT,\n FUNDING.GIROPAY,\n FUNDING.EPS,\n FUNDING.SOFORT,\n FUNDING.MYBANK,\n FUNDING.BLIK,\n FUNDING.P24,\n FUNDING.PAYU,\n FUNDING.VERKKOPANKKI,\n FUNDING.TRUSTLY,\n FUNDING.MAXIMA,\n FUNDING.BOLETO,\n FUNDING.OXXO,\n FUNDING.CARD\n];\n\nexport const FUNDING_CONFIG = {\n\n [ DEFAULT ]: {\n enabled: true,\n\n allowOptIn: true,\n allowOptOut: true,\n allowRemember: true,\n\n allowHorizontal: true,\n allowVertical: true,\n\n requireCommitAsTrue: false\n },\n\n [ FUNDING.PAYPAL ]: {\n default: true,\n\n allowOptIn: false,\n allowOptOut: false,\n\n allowHorizontal: true,\n allowVertical: true\n },\n\n [ FUNDING.CARD ]: {\n // $FlowFixMe\n default: (typeof __paypal_checkout__ === 'undefined' ? true : __paypal_checkout__.serverConfig.paypalMerchantConfiguration.creditCard.isPayPalBranded),\n\n allowHorizontal: false,\n allowVertical: true\n },\n\n [ FUNDING.VENMO ]: {\n allowOptOut: true,\n allowedCountries: [\n COUNTRY.US\n ],\n\n allowHorizontal: true,\n allowVertical: true\n },\n [ FUNDING.ITAU ]: {\n allowOptOut: true,\n allowedCountries: [\n COUNTRY.BR\n ],\n\n allowHorizontal: true,\n allowVertical: true\n },\n\n [ FUNDING.CREDIT ]: {\n allowedCountries: [\n COUNTRY.US,\n COUNTRY.GB,\n COUNTRY.DE\n ],\n defaultVerticalCountries: [\n COUNTRY.US\n ],\n platforms: [\n PLATFORM.MOBILE\n ],\n\n allowHorizontal: true,\n allowVertical: true,\n allowRemember: true\n },\n\n [ FUNDING.IDEAL ]: {\n allowedCountries: [\n COUNTRY.NL\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.ELV ]: {\n allowedCountries: [\n COUNTRY.DE\n ],\n defaultVerticalCountries: [\n COUNTRY.DE\n ],\n\n allowHorizontal: false,\n allowVertical: true\n },\n\n [ FUNDING.BANCONTACT ]: {\n allowedCountries: [\n COUNTRY.BE\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.GIROPAY ]: {\n allowedCountries: [\n COUNTRY.DE\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.SOFORT ]: {\n allowedCountries: [\n COUNTRY.DE,\n COUNTRY.AT,\n COUNTRY.BE,\n COUNTRY.ES,\n COUNTRY.IT,\n COUNTRY.NL\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.EPS ]: {\n allowedCountries: [\n COUNTRY.AT\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.MYBANK ]: {\n allowedCountries: [\n COUNTRY.IT\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.P24 ]: {\n allowedCountries: [\n COUNTRY.PL\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.PAYU ]: {\n allowedCountries: [\n COUNTRY.CZ\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.VERKKOPANKKI ]: {\n allowedCountries: [\n COUNTRY.FI\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.BLIK ]: {\n allowedCountries: [\n COUNTRY.PL\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.TRUSTLY ]: {\n allowedCountries: [\n COUNTRY.DE,\n COUNTRY.DK,\n COUNTRY.EE,\n COUNTRY.ES,\n COUNTRY.FI,\n COUNTRY.GB,\n COUNTRY.IT,\n COUNTRY.MT,\n COUNTRY.NL,\n COUNTRY.NO,\n COUNTRY.SE\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.MAXIMA ]: {\n allowedCountries: [\n COUNTRY.LT\n ],\n\n allowedEnvs: [\n ENV.LOCAL,\n ENV.STAGE,\n ENV.TEST\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.BOLETO ]: {\n allowedCountries: [\n COUNTRY.BR\n ],\n\n allowedEnvs: [\n ENV.LOCAL,\n ENV.STAGE,\n ENV.TEST\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.OXXO ]: {\n allowedCountries: [\n COUNTRY.MX\n ],\n\n allowedEnvs: [\n ENV.LOCAL,\n ENV.STAGE,\n ENV.TEST\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.ZIMPLER ]: {\n allowedCountries: [],\n\n allowHorizontal: false,\n allowVertical: false,\n requireCommitAsTrue: true\n }\n};\n\nexport const CARD_CONFIG = {\n\n [ DEFAULT ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX\n ]\n },\n\n [ COUNTRY.GB ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.DISCOVER,\n CARD.MAESTRO\n ]\n },\n\n [ COUNTRY.US ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.DISCOVER\n ]\n },\n\n [ COUNTRY.BR ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.HIPER,\n CARD.ELO\n ]\n },\n\n [ COUNTRY.JP ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.JCB\n ]\n },\n\n [ COUNTRY.CN ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.CUP\n ]\n }\n};\n\nfunction getConfig(conf : Object, category : string, key : string, def : ?T) : T {\n const categoryConfig = conf[category];\n\n if (categoryConfig && categoryConfig.hasOwnProperty(key)) {\n return categoryConfig[key];\n }\n\n if (conf[DEFAULT] && conf[DEFAULT].hasOwnProperty(key)) {\n return conf[DEFAULT][key];\n }\n\n if (arguments.length >= 4) {\n // $FlowFixMe\n return def;\n }\n\n throw new Error(`No value found for ${ category }:${ key }`);\n}\n\nexport function getFundingConfig(source : string, key : string, def : ?T) : T {\n return getConfig(FUNDING_CONFIG, source, key, def);\n}\n\nexport function getCardConfig(source : string, key : string, def : ?T) : T {\n return getConfig(CARD_CONFIG, source, key, def);\n}\n","/* @flow */\n\nimport { ENV, CARD_PRIORITY, FUNDING, BUTTON_LAYOUT, FUNDING_ELIGIBILITY_REASON } from '../constants';\nimport type { LocaleType, FundingSource, FundingSelection, FundingList } from '../types';\n\nimport { getFundingConfig, getCardConfig, FUNDING_PRIORITY, FUNDING_CONFIG } from './config';\n\nconst fundingEligibilityReasons = [];\n\nexport function isFundingIneligible(source : FundingSource, { locale, funding, layout, commit, env } :\n { locale : LocaleType, funding : FundingSelection, layout : string, commit? : boolean, env : string }) : ?string {\n\n const isVertical = layout === BUTTON_LAYOUT.VERTICAL;\n const allowSecondary = getFundingConfig(source, isVertical ? 'allowVertical' : 'allowHorizontal');\n\n if (!allowSecondary) {\n return FUNDING_ELIGIBILITY_REASON.SECONDARY_DISALLOWED;\n }\n\n if (funding.disallowed.indexOf(source) !== -1 && getFundingConfig(source, 'allowOptOut')) {\n return FUNDING_ELIGIBILITY_REASON.OPT_OUT;\n }\n\n if (funding.disallowed.indexOf(source) !== -1 && source === FUNDING.VENMO) {\n return FUNDING_ELIGIBILITY_REASON.OPT_OUT;\n }\n if (funding.disallowed.indexOf(source) !== -1 && source === FUNDING.ITAU) {\n return FUNDING_ELIGIBILITY_REASON.OPT_OUT;\n }\n\n if (getFundingConfig(source, 'allowedCountries', [ locale.country ]).indexOf(locale.country) === -1) {\n return FUNDING_ELIGIBILITY_REASON.DISALLOWED_COUNTRY;\n }\n\n if (getFundingConfig(source, 'requireCommitAsTrue') && !commit) {\n return FUNDING_ELIGIBILITY_REASON.COMMIT_NOT_SET;\n }\n\n const allowedEnvs = getFundingConfig(source, 'allowedEnvs');\n if (allowedEnvs && allowedEnvs.indexOf(env) === -1) {\n return FUNDING_ELIGIBILITY_REASON.INVALID_ENV;\n }\n}\n\nexport function isFundingAutoEligible(source : FundingSource, { locale, funding, layout } :\n { locale : LocaleType, funding : FundingSelection, layout : string }) : ?string {\n\n const isVertical = layout === BUTTON_LAYOUT.VERTICAL;\n\n if (isVertical && getFundingConfig(source, 'defaultVerticalCountries', []).indexOf(locale.country) !== -1) {\n return FUNDING_ELIGIBILITY_REASON.DEFAULT_COUNTRY;\n }\n\n if (getFundingConfig(source, 'default')) {\n return FUNDING_ELIGIBILITY_REASON.DEFAULT;\n }\n\n if (funding.allowed.indexOf(source) !== -1 && getFundingConfig(source, 'allowOptIn')) {\n return FUNDING_ELIGIBILITY_REASON.OPT_IN;\n }\n\n if (funding.remembered.indexOf(source) !== -1 && getFundingConfig(source, 'allowRemember')) {\n return FUNDING_ELIGIBILITY_REASON.REMEMBERED;\n }\n}\n\nexport function isFundingEligible(source : FundingSource, { locale, funding, env, layout, selected, commit } :\n { locale : LocaleType, funding : FundingSelection, env : string, layout : string, selected? : string, commit : boolean }) : { eligible : boolean, reason : string } {\n\n if (selected && source === selected) {\n return { eligible: true, reason: FUNDING_ELIGIBILITY_REASON.PRIMARY };\n }\n\n if (!getFundingConfig(source, 'enabled')) {\n if (!(env === ENV.TEST && getFundingConfig(source, 'test'))) {\n return { eligible: false, reason: FUNDING_ELIGIBILITY_REASON.NOT_ENABLED };\n }\n }\n\n const ineligibleReason = isFundingIneligible(source, { locale, funding, layout, commit, env });\n\n if (ineligibleReason) {\n return { eligible: false, reason: ineligibleReason };\n }\n\n const autoEligibleReason = isFundingAutoEligible(source, { locale, funding, layout });\n\n if (autoEligibleReason) {\n return { eligible: true, reason: autoEligibleReason };\n }\n\n return { eligible: false, reason: FUNDING_ELIGIBILITY_REASON.NEED_OPT_IN };\n}\n\nexport function determineEligibleFunding({ funding, selected, locale, env, layout, commit } :\n { funding : FundingSelection, selected : FundingSource, locale : LocaleType, env : string, layout : string, commit : boolean }) : FundingList {\n\n const reasons = {};\n\n const eligibleFunding = FUNDING_PRIORITY.filter(source => {\n const { eligible, reason } = isFundingEligible(source, { selected, locale, funding, env, layout, commit });\n reasons[source] = { eligible, reason, factors: { env, locale, layout } };\n return eligible;\n });\n\n fundingEligibilityReasons.push(reasons);\n\n eligibleFunding.splice(eligibleFunding.indexOf(selected), 1);\n eligibleFunding.unshift(selected);\n\n return eligibleFunding;\n}\n\nexport function determineEligibleCards({ funding, locale } :\n { funding : FundingSelection, locale : LocaleType }) : FundingList {\n\n return getCardConfig(locale.country, 'priority')\n .filter(card => funding.disallowed.indexOf(card) === -1);\n}\n\nexport function validateFunding(funding : FundingSelection = { allowed: [], disallowed: [], remembered: [] }) {\n\n if (funding.allowed) {\n for (const source of funding.allowed) {\n if (CARD_PRIORITY.indexOf(source) !== -1) {\n continue;\n }\n\n if (!FUNDING_CONFIG.hasOwnProperty(source)) {\n throw new Error(`Invalid funding source: ${ source }`);\n }\n\n if (!getFundingConfig(source, 'allowOptIn')) {\n throw new Error(`Can not allow funding source: ${ source }`);\n }\n\n if (funding.disallowed && funding.disallowed.indexOf(source) !== -1) {\n throw new Error(`Can not allow and disallow funding source: ${ source }`);\n }\n }\n }\n\n if (funding.disallowed) {\n for (const source of funding.disallowed) {\n if (CARD_PRIORITY.indexOf(source) !== -1) {\n continue;\n }\n\n if (!FUNDING_CONFIG.hasOwnProperty(source)) {\n throw new Error(`Invalid funding source: ${ source }`);\n }\n\n if (!getFundingConfig(source, 'allowOptOut')) {\n throw new Error(`Can not disallow funding source: ${ source }`);\n }\n }\n }\n}\n\nexport function logFundingEligibility() {\n fundingEligibilityReasons.forEach((reasons, i) => {\n console.log(`\\nButton ${ i + 1 }:\\n`); // eslint-disable-line no-console\n\n console.table(Object.keys(reasons).map(source => { // eslint-disable-line no-console, compat/compat\n const { reason, eligible, factors } = reasons[source];\n\n return {\n 'Funding': source,\n 'Reason': reason,\n 'Eligibility': eligible ? 'eligible' : 'ineligible',\n 'Factors': JSON.stringify(factors)\n };\n }));\n });\n}\n","/* @flow */\n/* eslint no-template-curly-in-string: off, max-lines: off */\n\nimport { FUNDING, DEFAULT, COUNTRY, BUTTON_LABEL, BUTTON_COLOR, BUTTON_LOGO_COLOR, BUTTON_SIZE,\n BUTTON_TAGLINE_COLOR, BUTTON_SHAPE, BUTTON_LAYOUT, BUTTON_LOGO } from '../constants';\n\ntype ButtonConfig = {\n [ string ] : {\n colors? : $ReadOnlyArray<$Values>\n }\n};\n\nexport const BUTTON_CONFIG : ButtonConfig = {\n\n [ DEFAULT ]: {\n\n colors: [\n BUTTON_COLOR.GOLD,\n BUTTON_COLOR.BLUE,\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n sizes: [\n BUTTON_SIZE.SMALL,\n BUTTON_SIZE.MEDIUM,\n BUTTON_SIZE.LARGE,\n BUTTON_SIZE.RESPONSIVE\n ],\n\n shapes: [\n BUTTON_SHAPE.PILL,\n BUTTON_SHAPE.RECT\n ],\n\n layouts: [\n BUTTON_LAYOUT.HORIZONTAL,\n BUTTON_LAYOUT.VERTICAL\n ],\n\n logoColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_LOGO_COLOR.BLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLUE\n },\n\n tagLineColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_TAGLINE_COLOR.BLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_TAGLINE_COLOR.BLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_TAGLINE_COLOR.BLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_TAGLINE_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_TAGLINE_COLOR.BLUE\n\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n tag: `{ content: safer_tag }`,\n dualTag: `{ content: dual_tag|safer_tag }`,\n\n defaultLocale: `en_US`,\n defaultLabel: BUTTON_LABEL.CHECKOUT,\n defaultVerticalLabel: BUTTON_LABEL.PAYPAL,\n defaultColor: BUTTON_COLOR.GOLD,\n defaultSize: BUTTON_SIZE.SMALL,\n defaultVerticalSize: BUTTON_SIZE.MEDIUM,\n defaultShape: BUTTON_SHAPE.PILL,\n defaultLayout: BUTTON_LAYOUT.HORIZONTAL,\n defaultBranding: true,\n defaultVerticalBranding: true,\n defaultFundingIcons: false,\n defaultTagline: true,\n defaultDual: ``,\n\n minimumSize: BUTTON_SIZE.TINY,\n minimumVerticalSize: BUTTON_SIZE.MEDIUM,\n\n maximumSize: BUTTON_SIZE.HUGE,\n maximumVerticalSize: BUTTON_SIZE.HUGE,\n\n minHorizontalButtons: 1,\n minVerticalButtons: 1,\n\n maxHorizontalButtons: 2,\n maxVerticalButtons: 6,\n\n allowUnbranded: false,\n allowFundingIcons: true,\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.PAYPAL ]: {\n label: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n allowPrimary: true,\n\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true\n },\n\n [ BUTTON_LABEL.CHECKOUT ]: {\n label: `{ content: checkout }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n allowPrimary: true,\n\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true\n },\n\n [ BUTTON_LABEL.PAY ]: {\n label: `{ content: pay }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n allowPrimary: true,\n\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true\n },\n\n [ BUTTON_LABEL.BUYNOW ]: {\n label: `{ content: buynow }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n defaultBranding: undefined,\n\n allowPrimary: true,\n\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true,\n\n allowUnbranded: true\n },\n\n [ BUTTON_LABEL.INSTALLMENT ]: {\n label: (style) => { return `{ content: ${ style.installmentperiod ? 'installment_period' : 'installment' } }`; },\n logoLabel: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n allowPrimary: true,\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true,\n allowSecondaryVertical: false,\n allowSecondaryHorizontal: false\n },\n\n [ BUTTON_LABEL.CREDIT ]: {\n label: ({ locale }) => {\n if (locale.country === COUNTRY.DE) {\n return `{ logo: ${ BUTTON_LOGO.CREDIT } }`;\n }\n\n return `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } } { logo: ${ BUTTON_LOGO.CREDIT } }`;\n },\n logoLabel: ({ locale }) => {\n if (locale.country === COUNTRY.DE) {\n return `{ logo: ${ BUTTON_LOGO.CREDIT } }`;\n }\n\n return `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } } { logo: ${ BUTTON_LOGO.CREDIT } }`;\n },\n\n tag: `{ content: later_tag }`,\n\n colors: [\n BUTTON_COLOR.DARKBLUE,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLUE\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n defaultColor: BUTTON_COLOR.DARKBLUE,\n\n allowPrimary: true,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false,\n\n allowFundingIcons: false\n },\n\n [ BUTTON_LABEL.VENMO ]: {\n label: `{ logo: ${ BUTTON_LOGO.VENMO } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.VENMO } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.BLUE,\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.BLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLUE\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: true,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: true\n },\n [ BUTTON_LABEL.ITAU ]: {\n label: `{ logo: ${ BUTTON_LOGO.ITAU } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.ITAU } }`,\n\n defaultColor: BUTTON_COLOR.DARKBLUE,\n\n colors: [\n BUTTON_COLOR.DARKBLUE,\n BUTTON_COLOR.BLUE,\n BUTTON_COLOR.BLACK\n ],\n\n logoColors: {\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.DARKBLUE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: true\n },\n\n [ BUTTON_LABEL.IDEAL ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.IDEAL } } Online betalen`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.IDEAL } } Online betalen`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.ELV ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.ELV } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.ELV } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.BANCONTACT ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.BANCONTACT } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.BANCONTACT } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.GIROPAY ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.GIROPAY } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.GIROPAY } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.SOFORT ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.SOFORT } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.SOFORT } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.EPS ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.EPS } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.EPS } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.MYBANK ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.MYBANK } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.MYBANK } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.P24 ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.P24 } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.P24 } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.PAYU ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.PAYU } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PAYU } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.VERKKOPANKKI ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.VERKKOPANKKI } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.VERKKOPANKKI } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.BLIK ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.BLIK } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.BLIK } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.TRUSTLY ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.TRUSTLY } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.TRUSTLY } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.MAXIMA ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.MAXIMA } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.MAXIMA } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.BOLETO ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.BOLETO } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.BOLETO } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.OXXO ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.OXXO } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.OXXO } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.CARD ]: {\n\n label: `{ cards }`,\n logoLabel: `{ cards }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.TRANSPARENT\n ],\n\n logoColors: {\n [ BUTTON_COLOR.TRANSPARENT ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.TRANSPARENT\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n }\n};\n\nexport const FUNDING_TO_DEFAULT_LABEL = {\n [ FUNDING.PAYPAL ]: BUTTON_LABEL.PAYPAL,\n [ FUNDING.VENMO ]: BUTTON_LABEL.VENMO,\n [ FUNDING.ITAU ]: BUTTON_LABEL.ITAU,\n [ FUNDING.CARD ]: BUTTON_LABEL.CARD,\n [ FUNDING.CREDIT ]: BUTTON_LABEL.CREDIT,\n [ FUNDING.IDEAL ]: BUTTON_LABEL.IDEAL,\n [ FUNDING.ELV ]: BUTTON_LABEL.ELV,\n [ FUNDING.BANCONTACT ]: BUTTON_LABEL.BANCONTACT,\n [ FUNDING.GIROPAY ]: BUTTON_LABEL.GIROPAY,\n [ FUNDING.SOFORT ]: BUTTON_LABEL.SOFORT,\n [ FUNDING.EPS ]: BUTTON_LABEL.EPS,\n [ FUNDING.P24 ]: BUTTON_LABEL.P24,\n [ FUNDING.MYBANK ]: BUTTON_LABEL.MYBANK,\n [ FUNDING.PAYU ]: BUTTON_LABEL.PAYU,\n [ FUNDING.VERKKOPANKKI]: BUTTON_LABEL.VERKKOPANKKI,\n [ FUNDING.BLIK ]: BUTTON_LABEL.BLIK,\n [ FUNDING.TRUSTLY ]: BUTTON_LABEL.TRUSTLY,\n [ FUNDING.MAXIMA ]: BUTTON_LABEL.MAXIMA,\n [ FUNDING.BOLETO ]: BUTTON_LABEL.BOLETO,\n [ FUNDING.OXXO ]: BUTTON_LABEL.OXXO\n};\n\nexport const LABEL_TO_FUNDING = {\n [ BUTTON_LABEL.PAYPAL ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.CHECKOUT ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.PAY ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.BUYNOW ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.INSTALLMENT ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.CARD ]: FUNDING.CARD,\n [ BUTTON_LABEL.CREDIT ]: FUNDING.CREDIT,\n [ BUTTON_LABEL.VENMO ]: FUNDING.VENMO,\n [ BUTTON_LABEL.ITAU ]: FUNDING.ITAU,\n [ BUTTON_LABEL.IDEAL ]: FUNDING.IDEAL,\n [ BUTTON_LABEL.BANCONTACT]: FUNDING.BANCONTACT,\n [ BUTTON_LABEL.GIROPAY]: FUNDING.GIROPAY,\n [ BUTTON_LABEL.EPS ]: FUNDING.EPS,\n [ BUTTON_LABEL.SOFORT ]: FUNDING.SOFORT,\n [ BUTTON_LABEL.P24 ]: FUNDING.P24,\n [ BUTTON_LABEL.MYBANK ]: FUNDING.MYBANK,\n [ BUTTON_LABEL.PAYU ]: FUNDING.PAYU,\n [ BUTTON_LABEL.VERKKOPANKKI ]: FUNDING.VERKKOPANKKI,\n [ BUTTON_LABEL.BLIK ]: FUNDING.BLIK,\n [ BUTTON_LABEL.TRUSTLY ]: FUNDING.TRUSTLY,\n [ BUTTON_LABEL.MAXIMA ]: FUNDING.MAXIMA,\n [ BUTTON_LABEL.BOLETO ]: FUNDING.BOLETO,\n [ BUTTON_LABEL.OXXO ]: FUNDING.OXXO\n};\n\nexport const BUTTON_RELATIVE_STYLE = {\n FUNDINGICONS: 100,\n TAGLINE: 50,\n VERTICAL_MARGIN: 30\n};\n\nexport const BUTTON_STYLE = {\n\n [ BUTTON_SIZE.TINY ]: {\n defaultWidth: 75,\n defaultHeight: 25,\n minWidth: 75,\n maxWidth: 150,\n minHeight: 25,\n maxHeight: 30,\n buttonTextMargin: 0.5,\n allowFunding: true,\n allowTagline: false,\n byPayPalHeight: 0\n },\n\n [ BUTTON_SIZE.SMALL ]: {\n defaultWidth: 150,\n defaultHeight: 25,\n minWidth: 150,\n maxWidth: 200,\n minHeight: 25,\n maxHeight: 55,\n buttonTextMargin: 0.5,\n allowFunding: true,\n allowTagline: true,\n byPayPalHeight: 0\n },\n\n [ BUTTON_SIZE.MEDIUM ]: {\n defaultWidth: 250,\n defaultHeight: 35,\n minWidth: 200,\n maxWidth: 300,\n minHeight: 35,\n maxHeight: 55,\n buttonTextMargin: 1,\n allowFunding: true,\n allowTagline: true,\n byPayPalHeight: 30\n },\n\n [ BUTTON_SIZE.LARGE ]: {\n defaultWidth: 350,\n defaultHeight: 45,\n minWidth: 300,\n maxWidth: 500,\n minHeight: 30,\n maxHeight: 55,\n buttonTextMargin: 1,\n allowFunding: true,\n allowTagline: true,\n byPayPalHeight: 30\n },\n\n [ BUTTON_SIZE.HUGE ]: {\n defaultWidth: 500,\n defaultHeight: 55,\n minWidth: 500,\n maxWidth: 750,\n minHeight: 40,\n maxHeight: 55,\n buttonTextMargin: 1.25,\n allowFunding: true,\n allowTagline: true,\n byPayPalHeight: 30\n }\n};\n\nexport function labelToFunding(label : ?string) : string {\n return label ? LABEL_TO_FUNDING[label] : FUNDING.PAYPAL;\n}\n\nexport function fundingToDefaultLabel(funding : string) : $Values {\n return FUNDING_TO_DEFAULT_LABEL[funding];\n}\n\nfunction getConfig(conf : Object, category : string, key : string, def : ?T) : T {\n const categoryConfig = conf[category];\n\n if (categoryConfig && categoryConfig.hasOwnProperty(key)) {\n return categoryConfig[key];\n }\n\n if (conf[DEFAULT] && conf[DEFAULT].hasOwnProperty(key)) {\n return conf[DEFAULT][key];\n }\n\n if (arguments.length >= 4) {\n // $FlowFixMe\n return def;\n }\n\n throw new Error(`No value found for ${ category }:${ key }`);\n}\n\nexport function getButtonConfig(label : string, key : string, def : ?T) : T {\n return getConfig(BUTTON_CONFIG, label, key, def);\n}\n","/* @flow */\n\nimport { BUTTON_LAYOUT, BUTTON_STYLE_OPTIONS, BUTTON_LABEL, BUTTON_COLOR, BUTTON_SIZE, BUTTON_SHAPE } from '../constants';\nimport { determineEligibleFunding, determineEligibleCards } from '../funding';\nimport { memoize, sortBy } from '../lib/util';\nimport type { LocaleType, FundingSelection, FundingList, CheckoutCustomizationType } from '../types';\nimport { FUNDING_ORDER } from '../funding/config';\n\nimport { getButtonConfig, labelToFunding } from './config';\n\nfunction parseLocale(locale : string) : LocaleType {\n const [ lang, country ] = locale.split('_');\n return { country, lang };\n}\n\nexport function determineMaxButtons({ label, layout, max } : { layout : string, label : string, max : number }) : number {\n\n const allowed = (layout === BUTTON_LAYOUT.HORIZONTAL)\n ? getButtonConfig(label, 'allowPrimaryHorizontal')\n : getButtonConfig(label, 'allowPrimaryVertical');\n\n if (!allowed) {\n return 1;\n }\n\n const configMax = (layout === BUTTON_LAYOUT.HORIZONTAL)\n ? getButtonConfig(label, 'maxHorizontalButtons')\n : getButtonConfig(label, 'maxVerticalButtons');\n\n return max\n ? Math.min(configMax, max)\n : configMax;\n}\n\nfunction enableTagline({ tagline, branding, fundingicons, layout }) : boolean {\n return Boolean(tagline && branding && !fundingicons && layout === BUTTON_LAYOUT.HORIZONTAL);\n}\n\ntype NormalizedProps = {|\n size : $Values,\n label : $Values,\n color : $Values,\n shape : $Values,\n locale : LocaleType,\n branding : boolean,\n fundingicons : boolean,\n tagline : boolean,\n funding : FundingSelection,\n layout : $Values,\n sources : FundingList,\n max : number,\n multiple : boolean,\n env : string,\n height : ?number,\n cards : $ReadOnlyArray,\n installmentperiod : number,\n checkoutCustomization : ?CheckoutCustomizationType\n|};\n\nexport const normalizeProps = memoize((props : Object, defs? : { locale? : LocaleType } = {}) : NormalizedProps => {\n\n let {\n env,\n locale,\n style = {},\n funding,\n commit,\n checkoutCustomization\n } = props;\n\n locale = locale ? parseLocale(locale) : (defs.locale || getButtonConfig('DEFAULT', 'defaultLocale'));\n \n // funding indicated the allowed/disallowed payment methods (including cards) passed in the integration script\n // $FlowFixMe\n funding = funding || {};\n funding.allowed = funding.allowed || [];\n funding.disallowed = funding.disallowed || [];\n funding.remembered = funding.remembered || [];\n \n const label = style[BUTTON_STYLE_OPTIONS.LABEL] || getButtonConfig('DEFAULT', (style.layout === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalLabel' : 'defaultLabel');\n const layout = style[BUTTON_STYLE_OPTIONS.LAYOUT] || getButtonConfig(label, 'defaultLayout');\n\n let {\n [ BUTTON_STYLE_OPTIONS.SIZE ]: size = getButtonConfig(label, (layout === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalSize' : 'defaultSize'),\n [ BUTTON_STYLE_OPTIONS.COLOR ]: color = getButtonConfig(label, 'defaultColor'),\n [ BUTTON_STYLE_OPTIONS.SHAPE ]: shape = getButtonConfig(label, 'defaultShape'),\n [ BUTTON_STYLE_OPTIONS.BRANDING ]: branding = getButtonConfig(label, (layout === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalBranding' : 'defaultBranding'),\n [ BUTTON_STYLE_OPTIONS.FUNDINGICONS ]: fundingicons = getButtonConfig(label, 'defaultFundingIcons'),\n [ BUTTON_STYLE_OPTIONS.TAGLINE ]: tagline = getButtonConfig(label, 'defaultTagline'),\n [ BUTTON_STYLE_OPTIONS.MAXBUTTONS ]: max,\n [ BUTTON_STYLE_OPTIONS.HEIGHT ]: height,\n [ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD ]: installmentperiod\n } = style;\n\n // max is the maximum number of buttons to be displayed in the iframe\n max = determineMaxButtons({ label, layout, max });\n\n const selected = labelToFunding(label);\n let sources = determineEligibleFunding({ funding, selected, locale, env, layout, commit });\n // sources is an array of funding sources eligible to be displayed\n sources = sortBy(sources.slice(0, max), FUNDING_ORDER);\n // multiple is a boolean value indicating whether the sources is greater than 1\n const multiple = sources.length > 1;\n\n if (multiple) {\n branding = true;\n }\n\n tagline = enableTagline({ tagline, branding, fundingicons, layout });\n\n const cards = determineEligibleCards({ funding, locale });\n \n return { size, label, locale, color, shape, branding, fundingicons,\n tagline, funding, layout, sources, max, multiple, env, height, cards, installmentperiod, checkoutCustomization };\n});\n","/* @flow */\n\nimport { BUTTON_LABEL, BUTTON_LAYOUT, BUTTON_SIZE, BUTTON_STYLE_OPTIONS, ALLOWED_INSTALLMENT_COUNTRIES, ALLOWED_INSTALLMENT_PERIOD, LOCALE } from '../constants';\n\nimport { BUTTON_CONFIG, BUTTON_STYLE, getButtonConfig } from './config';\n\nexport function validateButtonLocale(locale : string) {\n\n if (!locale) {\n throw new Error(`Expected props.locale to be set`);\n }\n\n if (!locale.match(/^[a-z]{2}[_][A-Z][A-Z0-9]$/)) {\n throw new Error(`Expected props.locale to be valid, got ${ locale }`);\n }\n\n const [ lang, country ] = locale.split('_');\n\n if (!LOCALE[country] || LOCALE[country].indexOf(lang) === -1) {\n throw new Error(`Expected props.locale to be valid`);\n }\n}\n\nexport function validateRegionSpecificButton(style : Object = {}, locale : string = 'en_US') {\n\n const country = locale.split('_')[1];\n\n const isInstallmentAllowedCountry = ALLOWED_INSTALLMENT_COUNTRIES.indexOf(country) !== -1;\n\n if (!isInstallmentAllowedCountry && style.label === BUTTON_LABEL.INSTALLMENT) {\n throw new Error(`Unexpected label: style.${ style.label } for country: ${ country }`);\n }\n\n if (!isInstallmentAllowedCountry && style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD]) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD } is invalid for country: ${ country }`);\n }\n\n if (isInstallmentAllowedCountry && style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD] && style.label !== BUTTON_LABEL.INSTALLMENT) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD } is invalid for label: style.${ style.label }`);\n }\n\n if (isInstallmentAllowedCountry && style.label === BUTTON_LABEL.INSTALLMENT && style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD]\n && typeof style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD] !== 'number') {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD } is expected to be a number`);\n }\n\n if (isInstallmentAllowedCountry && style.label === BUTTON_LABEL.INSTALLMENT && style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD]\n && ALLOWED_INSTALLMENT_PERIOD[country].indexOf(style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD]) === -1) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD }: ${ style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD] } is not a valid installment number for ${ style.label }`);\n }\n\n}\n\nexport function validateButtonStyle(style : Object = {}, props : Object) {\n\n if (!style) {\n throw new Error(`Expected props.style to be set`);\n }\n\n const label = style[BUTTON_STYLE_OPTIONS.LABEL] || getButtonConfig('DEFAULT', (style[BUTTON_STYLE_OPTIONS.LAYOUT] === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalLabel' : 'defaultLabel');\n\n if (!BUTTON_CONFIG[label]) {\n throw new Error(`Invalid button label: ${ label }, expected: ${ Object.keys(BUTTON_CONFIG[label]).join(', ') }`);\n }\n\n const {\n [ BUTTON_STYLE_OPTIONS.COLOR ]: color,\n [ BUTTON_STYLE_OPTIONS.SHAPE ]: shape,\n [ BUTTON_STYLE_OPTIONS.SIZE ]: size,\n [ BUTTON_STYLE_OPTIONS.BRANDING ]: branding,\n [ BUTTON_STYLE_OPTIONS.FUNDINGICONS ]: fundingicons,\n [ BUTTON_STYLE_OPTIONS.TAGLINE ]: tagline,\n [ BUTTON_STYLE_OPTIONS.LAYOUT ]: layout,\n [ BUTTON_STYLE_OPTIONS.MAXBUTTONS ]: maxbuttons,\n [ BUTTON_STYLE_OPTIONS.HEIGHT ]: height\n } = style;\n\n if (color && getButtonConfig(label, 'colors').indexOf(color) === -1) {\n throw new Error(`Unexpected style.${ BUTTON_STYLE_OPTIONS.COLOR } for ${ label } button: ${ color }, expected ${ getButtonConfig(label, 'colors').join(', ') }`);\n }\n\n if (shape && getButtonConfig(label, 'shapes').indexOf(shape) === -1) {\n throw new Error(`Unexpected style.${ BUTTON_STYLE_OPTIONS.SHAPE } for ${ label } button: ${ shape }, expected ${ getButtonConfig(label, 'shapes').join(', ') }`);\n }\n\n if (size && getButtonConfig(label, 'sizes').indexOf(size) === -1) {\n throw new Error(`Unexpected style.${ BUTTON_STYLE_OPTIONS.SIZE } for ${ label } button: ${ size }, expected ${ getButtonConfig(label, 'sizes').join(', ') }`);\n }\n\n if (branding === false) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.BRANDING }:false is not allowed`);\n }\n\n if (fundingicons && !getButtonConfig(label, 'allowFundingIcons')) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.FUNDINGICONS }:true is not allowed for ${ label } button`);\n }\n\n if (layout && getButtonConfig(label, 'layouts').indexOf(layout) === -1) {\n throw new Error(`Unexpected style.${ BUTTON_STYLE_OPTIONS.LAYOUT } for ${ label } button: ${ layout }, expected ${ getButtonConfig(label, 'layouts').join(', ') }`);\n }\n\n if (maxbuttons !== undefined) {\n if (typeof maxbuttons !== 'number') {\n throw new TypeError(`Expected style.${ BUTTON_STYLE_OPTIONS.MAXBUTTONS } to be a number, got: ${ maxbuttons }`);\n }\n\n if (maxbuttons < 1) {\n throw new Error(`Expected style.${ BUTTON_STYLE_OPTIONS.MAXBUTTONS } to be a at least 1, got: ${ maxbuttons }`);\n }\n\n const minButtons = (layout === BUTTON_LAYOUT.VERTICAL)\n ? getButtonConfig(label, 'minVerticalButtons')\n : getButtonConfig(label, 'minHorizontalButtons');\n\n if (maxbuttons < minButtons) {\n throw new Error(`Expected style.${ BUTTON_STYLE_OPTIONS.MAXBUTTONS } to be no fewer than ${ minButtons }, got ${ maxbuttons }`);\n }\n }\n\n if (height !== undefined) {\n if (typeof height !== 'number') {\n throw new TypeError(`Expected style.${ BUTTON_STYLE_OPTIONS.HEIGHT } to be a number, got: ${ maxbuttons }`);\n }\n\n const buttonSize = size || getButtonConfig(label, (style.layout === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalSize' : 'defaultSize');\n\n const { minHeight, maxHeight } = (size === BUTTON_SIZE.RESPONSIVE) ? {\n minHeight: BUTTON_STYLE[BUTTON_SIZE.SMALL].minHeight,\n maxHeight: BUTTON_STYLE[BUTTON_SIZE.HUGE].maxHeight\n } : BUTTON_STYLE[buttonSize];\n\n if (height < minHeight || height > maxHeight) {\n throw new Error(`Expected style.${ BUTTON_STYLE_OPTIONS.HEIGHT } to be between ${ minHeight }px and ${ maxHeight }px - got ${ height }px`);\n }\n }\n\n if (!getButtonConfig(label, 'allowPrimary')) {\n throw new Error(`${ label } can not be used as primary button label`);\n }\n\n if (layout === BUTTON_LAYOUT.VERTICAL) {\n\n if (size && [ BUTTON_SIZE.MEDIUM, BUTTON_SIZE.LARGE, BUTTON_SIZE.RESPONSIVE ].indexOf(size) === -1) {\n throw new Error(`Button must be at least ${ BUTTON_SIZE.MEDIUM } size for ${ BUTTON_LAYOUT.VERTICAL } layout`);\n }\n\n if (!getButtonConfig(label, 'allowPrimaryVertical')) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.LABEL } option is not allowed for ${ BUTTON_LAYOUT.VERTICAL } layout - got ${ label }`);\n }\n\n if (fundingicons) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.FUNDINGICONS } not allowed for ${ BUTTON_LAYOUT.VERTICAL } layout - got ${ fundingicons }`);\n }\n\n if (tagline) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.TAGLINE } is not allowed for ${ BUTTON_LAYOUT.VERTICAL } layout - got ${ tagline }`);\n }\n }\n\n validateRegionSpecificButton(style, props.locale);\n}\n\nexport function validateButtonProps(props : Object) {\n\n if (!props) {\n throw new Error(`Expected props`);\n }\n\n const { locale, style } = props;\n\n validateButtonLocale(locale);\n validateButtonStyle(style, props);\n}\n","/* @flow */\n\nexport const CLASS = {\n SHOULD_FOCUS: 'paypal-should-focus',\n\n CONTAINER: 'paypal-button-container',\n BUTTON: 'paypal-button',\n \n BUTTON_LABEL: 'paypal-button-label-container',\n\n LABEL: 'paypal-button-label',\n COLOR: 'paypal-button-color',\n LOGO_COLOR: 'paypal-button-logo-color',\n SHAPE: 'paypal-button-shape',\n BRANDING: 'paypal-button-branding',\n LAYOUT: 'paypal-button-layout',\n NUMBER: 'paypal-button-number',\n ENV: 'paypal-button-env',\n\n TAGLINE: 'paypal-button-tagline',\n TAGLINE_COLOR: 'paypal-button-tagline-color',\n FUNDINGICONS: 'paypal-button-fundingicons',\n\n TEXT: 'paypal-button-text',\n LOGO: 'paypal-button-logo',\n CARD: 'paypal-button-card',\n\n SEPARATOR: 'paypal-separator',\n HIDDEN: 'hidden',\n DOM_READY: 'dom-ready',\n \n PERSONALIZATION_TEXT: 'personalization-text'\n};\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { create } from 'zoid/src';\nimport { type Component } from 'zoid/src/component/component';\nimport { info, warn, track, error, flush as flushLogs, immediateFlush } from 'beaver-logger/client';\nimport { getDomain } from 'cross-domain-utils/src';\nimport { base64encode } from 'belter/src';\nimport { debounce, once } from 'zoid/src/lib';\n\nimport { pptm } from '../external';\nimport { config } from '../config';\nimport { SOURCE, ENV, FPTI, FUNDING, BUTTON_LABEL, BUTTON_COLOR,\n BUTTON_SIZE, BUTTON_SHAPE, BUTTON_LAYOUT, COUNTRY } from '../constants';\nimport { redirect as redir, checkRecognizedBrowser,\n getBrowserLocale, getSessionID, request, getScriptVersion,\n isIEIntranet, isEligible, getCurrentScriptUrl,\n getDomainSetting, extendUrl, isDevice, rememberFunding,\n getRememberedFunding, memoize, uniqueID, getThrottle, getBrowser } from '../lib';\nimport { rest } from '../api';\nimport { onAuthorizeListener } from '../experiments';\nimport { getPaymentType, awaitBraintreeClient,\n mapPaymentToBraintree, type BraintreePayPalClient } from '../integrations';\nimport { awaitPopupBridge } from '../integrations/popupBridge';\nimport { validateFunding, isFundingIneligible, isFundingAutoEligible } from '../funding';\n\nimport { containerTemplate, componentTemplate } from './template';\nimport { validateButtonLocale, validateButtonStyle } from './validate';\nimport { setupButtonChild } from './child';\nimport { normalizeProps } from './props';\n\npptm.listenForLoadWithNoContent();\n\nfunction isCreditDualEligible(props) : boolean {\n\n const { label, funding, layout, locale, max, sources, env } = normalizeProps(props, { locale: getBrowserLocale() });\n const { allowed } = funding;\n const { country } = locale;\n\n if (allowed && allowed.indexOf(FUNDING.CREDIT) !== -1) {\n return false;\n }\n\n if (layout !== BUTTON_LAYOUT.HORIZONTAL) {\n return false;\n }\n\n if (max === 1) {\n return false;\n }\n\n if (label === BUTTON_LABEL.CREDIT) {\n return false;\n }\n\n if (country !== COUNTRY.US) {\n return false;\n }\n\n if (isFundingIneligible(FUNDING.CREDIT, { funding, locale, layout, env })) {\n return false;\n }\n\n if (isFundingAutoEligible(FUNDING.CREDIT, { funding, locale, layout })) {\n return false;\n }\n\n if (sources.indexOf(FUNDING.CREDIT) !== -1) {\n return false;\n }\n\n const domain = getDomain().replace(/^https?:\\/\\//, '').replace(/^www\\./, '');\n\n if (config.creditTestDomains.indexOf(domain) === -1) {\n return false;\n }\n\n return true;\n}\n\nlet creditThrottle;\n\ntype ButtonOptions = {|\n style : {|\n maxbuttons? : number,\n layout? : string,\n label? : string,\n size? : string,\n shape? : string,\n color? : string,\n tagline? : boolean\n |},\n client : {\n [string] : (string | ZalgoPromise)\n },\n funding? : { allowed? : $ReadOnlyArray, disallowed? : $ReadOnlyArray },\n env? : string,\n locale? : string,\n logLevel : string,\n awaitPopupBridge : Function,\n meta : Object,\n validate? : ({ enable : () => ZalgoPromise, disable : () => ZalgoPromise }) => void,\n stage? : string,\n stageUrl? : string,\n localhostUrl? : string,\n checkoutUri? : string,\n authCode? : string,\n enableNativeCheckout? : boolean\n|};\n\nexport const Button : Component = create({\n\n tag: 'paypal-button',\n name: 'ppbutton',\n\n buildUrl(props) : string {\n const env = props.env || config.env;\n const url = config.buttonUrls[env];\n return url;\n },\n\n contexts: {\n iframe: true,\n popup: false\n },\n\n scrolling: false,\n listenForResize: true,\n\n containerTemplate,\n\n autoResize: {\n height: true,\n width: false\n },\n\n prerenderTemplate({ props, jsxDom } : { props : Object, jsxDom : Function }) : HTMLElement {\n\n const template = (\n
\n );\n\n template.addEventListener('click', () => {\n warn('button_pre_template_click');\n\n if (isIEIntranet()) {\n warn(`button_pre_template_click_intranet_mode`);\n\n flushLogs();\n\n // eslint-disable-next-line no-alert\n alert(`IE Intranet mode is not supported by PayPal. Please disable intranet mode, or continue in an alternate browser.`);\n }\n\n if (getDomainSetting('allow_full_page_fallback')) {\n info('pre_template_force_full_page');\n\n this.props.payment().then(token => {\n window.top.location = extendUrl(config.checkoutUrl, { token });\n });\n }\n });\n\n return (\n \n \n { template }\n \n \n );\n },\n\n get version() : string {\n return getScriptVersion();\n },\n\n get domain() : Object {\n return config.paypalDomains;\n },\n\n attributes: {\n iframe: {\n allowpaymentrequest: 'allowpaymentrequest'\n }\n },\n\n validate() {\n if (!isEligible()) {\n warn('button_render_ineligible');\n }\n },\n\n props: {\n domain: {\n type: 'string',\n required: false,\n def() : string {\n return window.location.host;\n },\n queryParam: true\n },\n\n sessionID: {\n type: 'string',\n required: false,\n def() : string {\n return getSessionID();\n },\n queryParam: true\n },\n\n buttonSessionID: {\n type: 'string',\n required: false,\n def() : ?string {\n return uniqueID();\n },\n queryParam: true\n },\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n }\n },\n\n meta: {\n type: 'object',\n required: false,\n def() : Object {\n return {};\n }\n },\n\n enableNativeCheckout: {\n type: 'boolean',\n required: false,\n def() : boolean {\n return false;\n }\n },\n\n client: {\n type: 'object',\n required: false,\n def() : Object {\n return {};\n },\n\n validate(client, props) {\n const env = props.env || config.env;\n\n if (!client[env]) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (typeof client[env] === 'string') {\n if (client[env].match(/^(.)\\1+$/)) {\n throw new Error(`Invalid client ID: ${ client[env] }`);\n }\n } else if (!ZalgoPromise.isPromise(client[env])) {\n throw new Error(`Expected client token to be either a string or a promise`);\n }\n },\n\n decorate(client : Object) : Object {\n if (client && client.sandbox === 'demo_sandbox_client_id') {\n client.sandbox = 'AZDxjDScFpQtjWTOUtWKbyN_bDt4OgqaF4eYXlewfBP4-8aqX3PiV8e1GWU6liB2CUXlkA59kJXE7M6R';\n }\n\n return client;\n }\n },\n\n source: {\n type: 'string',\n required: false,\n def() : string {\n return SOURCE.MANUAL;\n }\n },\n\n prefetchLogin: {\n type: 'boolean',\n required: false\n },\n\n stage: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.STAGE || env === ENV.LOCAL) {\n return config.stage;\n }\n }\n },\n\n updateClientConfiguration: {\n type: 'boolean',\n required: false,\n def: () => {\n return true;\n }\n },\n\n stageUrl: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.STAGE || env === ENV.LOCAL) {\n return config.stageUrl;\n }\n }\n },\n\n localhostUrl: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.LOCAL) {\n return config.localhostUrl;\n }\n }\n },\n\n checkoutUri: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : ?string {\n return config.checkoutUri;\n }\n },\n\n braintree: {\n type: 'object',\n required: false,\n validate(braintree, props) {\n\n if (!braintree.paypalCheckout) {\n throw new Error(`Expected Braintree paypal-checkout component to be loaded`);\n }\n\n if (!props.client) {\n throw new Error(`Expected client prop to be passed with Braintree authorization keys`);\n }\n },\n // $FlowFixMe\n decorate(braintree, props) : ZalgoPromise {\n const env = props.env || config.env;\n // $FlowFixMe\n return ZalgoPromise.hash(props.client).then(client => {\n return awaitBraintreeClient(braintree, client[env]);\n });\n }\n },\n\n payment: {\n type: 'function',\n required: true,\n memoize: false,\n timeout: __TEST__ ? 500 : 10 * 1000,\n alias: 'billingAgreement',\n\n decorate(original) : Function {\n return function payment(data = {}) : ZalgoPromise {\n\n const actions = {\n request,\n payment: {\n create: (options) => {\n return this.props.braintree\n ? this.props.braintree.then(client => {\n return client.createPayment(mapPaymentToBraintree(options.payment || options));\n })\n : ZalgoPromise.hash(this.props.client).then(client => {\n return rest.payment.create(this.props.env, client, options);\n });\n }\n },\n order: {\n create: (options) => {\n return ZalgoPromise.hash(this.props.client).then(client => {\n return rest.order.create(this.props.env, client, options);\n });\n }\n },\n braintree: {\n create: (options) => {\n if (!this.props.braintree) {\n throw new Error(`Can not create using Braintree - no braintree client provided`);\n }\n\n return this.props.braintree.then(client => {\n return client.createPayment(options);\n });\n }\n }\n };\n\n if (getDomainSetting('memoize_payment') && this.memoizedToken) {\n return this.memoizedToken;\n }\n\n this.memoizedToken = ZalgoPromise.try(original, this, [ data, actions ]);\n\n const startTime = Date.now();\n\n this.memoizedToken = this.memoizedToken.then(token => {\n\n if (!token) {\n error(`no_token_passed_to_payment`);\n throw new Error(`No value passed to payment`);\n }\n\n const elapsed = Date.now() - startTime;\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.RECIEVE_PAYMENT,\n [ FPTI.KEY.CONTEXT_TYPE ]: FPTI.CONTEXT_TYPE[getPaymentType(token)],\n [ FPTI.KEY.CONTEXT_ID ]: token,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.RESPONSE_DURATION ]: elapsed,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n flushLogs();\n\n return token;\n });\n\n return this.memoizedToken;\n };\n }\n },\n\n authCode: {\n type: 'string',\n required: false,\n def() : string {\n return config.authCode;\n }\n },\n\n funding: {\n type: 'object',\n required: false,\n queryParam: true,\n validate({ allowed = [], disallowed = [] } : Object = {}) {\n validateFunding({ allowed, disallowed, remembered: [] });\n },\n def() : Object {\n return {};\n },\n decorate({ allowed = [], disallowed = [] } : Object = {}, props : ButtonOptions) : {} {\n\n allowed = Array.isArray(allowed) ? allowed : [];\n disallowed = Array.isArray(disallowed) ? disallowed : [];\n\n if (allowed && allowed.indexOf(FUNDING.VENMO) !== -1) {\n allowed = allowed.filter(source => (source !== FUNDING.VENMO));\n }\n if (allowed && allowed.indexOf(FUNDING.ITAU) !== -1) {\n allowed = allowed.filter(source => (source !== FUNDING.ITAU));\n }\n\n if (isCreditDualEligible(props)) {\n creditThrottle = getThrottle('dual_credit_automatic', 50);\n\n if (creditThrottle.isEnabled()) {\n allowed = [ ...allowed, FUNDING.CREDIT ];\n }\n }\n\n let remembered = getRememberedFunding(sources => sources);\n\n if (!isDevice() || getDomainSetting('disable_venmo')) {\n if (remembered && remembered.indexOf(FUNDING.VENMO) !== -1) {\n remembered = remembered.filter(source => (source !== FUNDING.VENMO));\n }\n\n if (disallowed && disallowed.indexOf(FUNDING.VENMO) === -1) {\n disallowed = [ ...disallowed, FUNDING.VENMO ];\n }\n }\n\n return {\n allowed,\n disallowed,\n remembered,\n remember(sources) {\n rememberFunding(sources);\n }\n };\n }\n },\n\n commit: {\n type: 'boolean',\n required: false,\n queryParam: true,\n queryValue: (val) => {\n return val ? 'true' : 'false';\n }\n },\n\n onRender: {\n type: 'function',\n promisify: true,\n required: false,\n noop: true,\n decorate(original) : Function {\n return function decorateOnRender() : mixed {\n const { browser = 'unrecognized', version = 'unrecognized' } = getBrowser();\n info(`button_render_browser_${ browser }_${ isDevice() ? 'mobile' : 'desktop' }_${ version }`);\n\n const style = this.props.style || {};\n\n info(`button_render`);\n info(`button_render_color_${ style.color || 'default' }`);\n info(`button_render_shape_${ style.shape || 'default' }`);\n info(`button_render_size_${ style.size || 'default' }`);\n info(`button_render_label_${ style.label || 'default' }`);\n info(`button_render_branding_${ style.branding || 'default' }`);\n info(`button_render_fundingicons_${ style.fundingicons || 'default' }`);\n info(`button_render_tagline_${ style.tagline || 'default' }`);\n\n pptm.listenForButtonRender();\n pptm.reloadPptmScript(this.props.client[this.props.env]);\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_RENDER,\n [ FPTI.KEY.BUTTON_TYPE ]: FPTI.BUTTON_TYPE.IFRAME,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.BUTTON_SOURCE ]: this.props.source\n });\n\n if (isIEIntranet()) {\n warn(`button_render_intranet_mode`);\n }\n\n if (creditThrottle) {\n creditThrottle.logStart({\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID\n });\n }\n\n flushLogs();\n\n return original.apply(this, arguments);\n };\n }\n },\n\n onAuthorize: {\n type: 'function',\n alias: 'onApprove',\n required: true,\n\n decorate(original) : Function {\n return function decorateOnAuthorize(data, actions) : void | ZalgoPromise {\n\n if (data && !data.intent) {\n warn(`button_authorize_no_intent`, { paymentID: data.paymentID, token: data.paymentToken });\n }\n\n info('button_authorize');\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CHECKOUT_AUTHORIZE,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n if (isIEIntranet()) {\n warn(`button_authorize_intranet_mode`);\n }\n\n if (!isEligible()) {\n info('button_authorize_ineligible');\n }\n\n checkRecognizedBrowser('authorize');\n\n flushLogs();\n\n const restart = actions.restart;\n actions.restart = () => {\n return restart().then(() => {\n return new ZalgoPromise();\n });\n };\n\n actions.redirect = (win, url) => {\n return ZalgoPromise.try(() => {\n if (actions.close) {\n return actions.close();\n }\n }).then(() => {\n return redir(win || window.top, url || data.returnUrl);\n });\n };\n\n actions.payment.tokenize = memoize(() => {\n if (!this.props.braintree) {\n throw new Error(`Must pass in Braintree client to tokenize payment`);\n }\n\n return this.props.braintree\n .then(client => client.tokenizePayment(data));\n });\n\n const execute = actions.payment.execute;\n actions.payment.execute = () => {\n return execute().then(result => {\n\n if (!result || !result.id || !result.intent || !result.state) {\n warn(`execute_result_missing_data`);\n return new ZalgoPromise();\n }\n\n return result;\n });\n };\n\n const get = actions.payment.get;\n\n actions.payment.get = () => {\n return get().then(result => {\n if (!result || !result.id || !result.intent || !result.state) {\n warn(`get_result_missing_data`);\n return new ZalgoPromise();\n }\n\n return result;\n });\n };\n\n actions.request = request;\n\n onAuthorizeListener.trigger({\n paymentToken: data.paymentToken\n });\n\n if (creditThrottle) {\n creditThrottle.logComplete({\n [FPTI.KEY.BUTTON_SESSION_UID]: this.props.buttonSessionID\n });\n }\n\n return ZalgoPromise.try(() => {\n\n if (this.props.braintree) {\n return actions.payment.tokenize().then(({ nonce }) => {\n // $FlowFixMe\n Object.defineProperty(data, 'nonce', {\n get: () => {\n info('nonce_getter');\n flushLogs();\n return nonce;\n }\n });\n });\n }\n\n }).then(() => {\n return original.call(this, data, actions);\n }).catch(err => {\n if (this.props.onError) {\n return this.props.onError(err);\n }\n throw err;\n });\n };\n }\n },\n\n onShippingChange: {\n type: 'function',\n required: false,\n\n decorate(original) : void | Function {\n if (!original) {\n return;\n }\n\n return function decorateOnShippingChange(data, actions) : ZalgoPromise {\n\n info('button_shipping_change');\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CHECKOUT_SHIPPING_CHANGE,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n flushLogs();\n const timeout = __TEST__ ? 500 : 10 * 1000;\n\n const patch = actions.payment.patch;\n actions.payment.patch = (patchObject) => {\n return ZalgoPromise.try(() => {\n return patch(patchObject);\n });\n };\n\n const resolve = () => ZalgoPromise.resolve();\n const reject = actions.reject || function reject() {\n throw new Error(`Missing reject action callback`);\n };\n\n return ZalgoPromise.try(() => {\n return original.call(this, data, { ...actions, resolve, reject });\n }).timeout(timeout,\n new Error(`Timed out waiting ${ timeout }ms for payment`)).catch(err => {\n if (this.props.onError) {\n this.props.onError(err);\n }\n throw err;\n });\n };\n }\n },\n\n onError: {\n type: 'function',\n required: false,\n promisify: true,\n sendToChild: true,\n once: true,\n def() : (() => void) {\n return function onError(err : mixed) {\n if (isIEIntranet()) {\n warn(`button_error_intranet_mode`);\n flushLogs();\n\n // eslint-disable-next-line no-alert\n alert(`IE Intranet mode is not supported by PayPal. Please disable intranet mode, or continue in an alternate browser.`);\n }\n\n setTimeout(() => {\n throw err;\n });\n };\n }\n },\n\n onCancel: {\n type: 'function',\n required: false,\n noop: true,\n\n decorate(original) : Function {\n return function decorateOnCancel(data, actions) : void | ZalgoPromise {\n\n info('button_cancel');\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CHECKOUT_CANCEL,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n flushLogs();\n\n const redirect = (win, url) => {\n return ZalgoPromise.all([\n redir(win || window.top, url || data.cancelUrl),\n actions.close()\n ]);\n };\n\n return original.call(this, data, { ...actions, redirect });\n };\n }\n },\n\n onClick: {\n type: 'function',\n required: false,\n noop: true,\n decorate(original) : Function {\n return function decorateOnClick(data : ?{ fundingSource : string, card? : string, flow? : string, button_version? : string }) : void {\n\n info('button_click');\n if (data && data.flow) {\n info(`pay_flow_${ data.flow }`);\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.BUTTON,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_CLICK,\n [ FPTI.KEY.BUTTON_TYPE ]: FPTI.BUTTON_TYPE.IFRAME,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.CHOSEN_FUNDING ]: data && (data.card || data.fundingSource),\n [ FPTI.KEY.PAYMENT_FLOW ]: data && data.flow,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n if (isIEIntranet()) {\n warn('button_click_intranet_mode');\n }\n\n if (creditThrottle) {\n creditThrottle.log('click', {\n [ FPTI.KEY.STATE ]: FPTI.STATE.BUTTON,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_CLICK,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID\n });\n }\n\n const { color = 'default' } = this.props.style || {};\n info(`button_click_color_${ color }`);\n\n flushLogs();\n\n return original.apply(this, arguments);\n };\n }\n },\n\n onResize: {\n type: 'function',\n required: false,\n get value() : Function {\n let initialHeight;\n const logInlineGuestOutOfViewPortOnlyOnce = once((data) => {\n info('buttons_expansion_outside_viewport', data);\n immediateFlush();\n });\n\n return function onResizeHandler() {\n const container = this.container;\n\n if (!container) {\n return;\n }\n\n if (!initialHeight) {\n initialHeight = container.offsetHeight;\n }\n\n const getScrollOffsetY = () => {\n if (window.pageYOffset) {\n return window.pageYOffset;\n }\n\n if (document.documentElement) {\n return document.documentElement.scrollTop;\n }\n\n return 0;\n };\n\n // explanation https://github.com/paypal/paypal-checkout-components/pull/1136#discussion_r298025574\n const checkIfExpansionInViewport = () => {\n try {\n const scrollOffsetY = getScrollOffsetY();\n const windowHeight = window.innerHeight;\n\n const containerOffsetY = container.getBoundingClientRect().top;\n const VISIBLE_THRESHOLD = 200; // 200px, for the first input field to be visible\n\n return scrollOffsetY + windowHeight > initialHeight + containerOffsetY + VISIBLE_THRESHOLD;\n } catch (err) {\n info('cannot_get_the_viewport_information');\n return false;\n }\n };\n\n const isContainerExpanded = container && container.offsetHeight > initialHeight;\n const isExpansionInViewport = checkIfExpansionInViewport();\n\n if (!isContainerExpanded || isExpansionInViewport) {\n return;\n }\n\n logInlineGuestOutOfViewPortOnlyOnce({\n height: container.offsetHeight,\n window: {\n width: window.innerWidth,\n height: window.innerHeight\n }\n });\n };\n },\n decorate: (original) => debounce(original)\n },\n\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n },\n\n validate: validateButtonLocale\n },\n\n style: {\n type: 'object',\n required: false,\n queryParam: true,\n alias: 'buttonStyle',\n\n def() : Object {\n return {\n color: BUTTON_COLOR.GOLD,\n shape: BUTTON_SHAPE.PILL,\n size: BUTTON_SIZE.SMALL,\n label: BUTTON_LABEL.CHECKOUT,\n fundingicons: false,\n layout: BUTTON_LAYOUT.HORIZONTAL\n };\n },\n \n decorate(style : Object) : Object {\n const { label, layout = BUTTON_LAYOUT.HORIZONTAL } = style;\n if (!label && layout === BUTTON_LAYOUT.HORIZONTAL) {\n style.label = BUTTON_LABEL.CHECKOUT;\n return style;\n } else if (!label && layout === BUTTON_LAYOUT.VERTICAL) {\n style.label = BUTTON_LABEL.PAYPAL;\n return style;\n }\n return style;\n },\n\n validate(style = {}, props) {\n validateButtonStyle(style, props);\n flushLogs();\n }\n },\n\n validate: {\n type: 'function',\n required: false,\n decorate(validate) : Function {\n // $FlowFixMe\n return function decorateValidate(actions) : mixed {\n if (!this.validateCalled) {\n this.validateCalled = true;\n return validate(actions);\n }\n };\n }\n },\n\n logLevel: {\n type: 'string',\n required: false,\n get value() : string {\n return config.logLevel;\n }\n },\n\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n },\n\n awaitPopupBridge: {\n type: 'object',\n required: false,\n value: () => awaitPopupBridge(Button)\n },\n\n getPageUrl: {\n type: 'function',\n queryParam: false,\n required: false,\n def: () => {\n return () => window.location.href;\n }\n },\n\n test: {\n type: 'object',\n required: false,\n def() : Object {\n return { action: 'checkout' };\n }\n }\n }\n});\n\nif (Button.isChild()) {\n setupButtonChild(Button);\n}\n","/* @flow */\n\nimport { CLASS } from './class';\n\nexport const pageStyle = `\n html, body {\n padding: 0;\n margin: 0;\n width: 100%;\n overflow: hidden;\n text-align: center;\n }\n\n body {\n display: inline-block;\n vertical-align: top;\n }\n\n * {\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -khtml-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n cursor: default;\n box-sizing: border-box;\n }\n \n .${ CLASS.HIDDEN } {\n position: absolute;\n visibility: hidden;\n }\n`;\n","/* @flow */\n\nimport { BUTTON_COLOR, ENV } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const buttonStyle = `\n\n .${ CLASS.CONTAINER } {\n display: block;\n white-space: nowrap;\n margin: 0;\n background: 0;\n border: 0;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n text-transform: none;\n font-weight: 500;R\n -webkit-font-smoothing: antialiased;\n font-smoothing: antialiased;\n z-index: 0;\n font-size: 0;\n width: 100%;\n box-sizing: border-box;\n }\n\n .${ CLASS.BUTTON }:not(.${ CLASS.CARD }) {\n border: 1px solid transparent;\n border-radius: 0 3px 3px 0;\n position: relative;\n width: 100%;\n box-sizing: border-box;\n border: none;\n vertical-align: top;\n cursor: pointer;\n outline: none;\n overflow: hidden;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.TRANSPARENT } {\n cursor: auto;\n }\n\n .${ CLASS.BUTTON } * {\n cursor: pointer;\n }\n\n .${ CLASS.CONTAINER }.${ CLASS.ENV }-${ ENV.TEST } .${ CLASS.TEXT } {\n font-family: Arial !important;\n background: rgba(0, 0, 0, 0.5) !important;\n color: transparent !important;\n text-shadow: none !important;\n }\n\n .${ CLASS.BUTTON }:hover {\n box-shadow: inset 0 0 100px 100px rgba(255, 255, 255, 0.2);\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.GOLD }:hover,\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.SILVER }:hover {\n box-shadow: inset 0 0 100px 100px rgba(0, 0, 0, 0.05);\n }\n\n .${ CLASS.CARD }, .${ CLASS.CARD } * {\n cursor: pointer;\n }\n\n .${ CLASS.CARD }:hover {\n filter: brightness(1.2);\n }\n\n .${ CLASS.BUTTON }:focus, .${ CLASS.CARD }:focus {\n outline: none;\n }\n\n .${ CLASS.SHOULD_FOCUS } .${ CLASS.BUTTON }:focus,\n .${ CLASS.SHOULD_FOCUS } .${ CLASS.CARD }:focus {\n outline: solid 2px Highlight;\n outline: auto 5px -webkit-focus-ring-color;\n outline-offset: -3px;\n }\n\n .${ CLASS.BUTTON }:focus {\n box-shadow: -1px -1px 18px 1px rgba(0, 0, 0, 0.25) inset;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.TRANSPARENT }:focus {\n box-shadow: none;\n outline: none;\n }\n\n .${ CLASS.LOGO } {\n padding: 0;\n display: inline-block;\n background: none;\n border: none;\n width: auto;\n }\n\n .${ CLASS.TEXT } {\n display: inline-block;\n white-space: pre;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.BUTTON_LABEL } {\n position: relative;\n top: 50%;\n transform: translateY(-50%);\n -webkit-transform: translateY(-50%);\n -moz-transform: translateY(-50%);\n -ms-transform: translateY(-50%);\n -o-transform: translateY(-50%);\n }\n \n .${ CLASS.BUTTON } > .${ CLASS.BUTTON_LABEL } > * {\n vertical-align: top;\n height: 100%;\n text-align: left;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.CARD } {\n border-radius: 4px;\n }\n\n .powered-by-paypal > .${ CLASS.TEXT } {\n vertical-align: top;\n line-height: 18px;\n }\n\n .powered-by-paypal > .${ CLASS.LOGO } {\n height: 16px;\n min-height: 16px;\n }\n\n .${ CLASS.TAGLINE } {\n max-width: 100%;\n font-weight: normal;\n display: block;\n text-align: center;\n width: auto;\n }\n\n .${ CLASS.SEPARATOR } {\n height: 80%;\n border-left: 1px solid rgba(0, 0, 0, 0.15);\n margin: 0 8px;\n display: inline-block;\n position: relative;\n top: 10%;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.BLACK } .${ CLASS.SEPARATOR } {\n border-color: rgba(255, 255, 255, 0.45);\n }\n`;\n","/* @flow */\n\nimport { BUTTON_LAYOUT } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const layoutStyle = `\n\n .${ CLASS.CONTAINER }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.VERTICAL } .${ CLASS.TAGLINE } {\n display: none;\n }\n`;\n","/* @flow */\n\nimport { BUTTON_BRANDING } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const brandingStyle = `\n\n .${ CLASS.BUTTON }.${ CLASS.BRANDING }-${ BUTTON_BRANDING.UNBRANDED } {\n min-width: 60%;\n width: auto;\n font-weight: 900;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.BRANDING }-${ BUTTON_BRANDING.UNBRANDED } .${ CLASS.LOGO } {\n display: none;\n }\n`;\n","/* @flow */\n\nimport { BUTTON_STYLE } from '../../config';\nimport { BUTTON_LABEL, BUTTON_LOGO, BUTTON_SIZE, BUTTON_LAYOUT, BUTTON_NUMBER } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const labelStyle = `\n\n .${ CLASS.BUTTON }.${ CLASS.LABEL }-${ BUTTON_LABEL.CARD } {\n border-radius: 0 !important;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LABEL }-${ BUTTON_LABEL.CREDIT } .${ CLASS.TEXT } {\n display: none !important;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.LABEL }-${ BUTTON_LABEL.CREDIT } .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LOGO.PAYPAL } {\n display: none;\n }\n\n @media only screen and (max-width : ${ BUTTON_STYLE[BUTTON_SIZE.SMALL].minWidth }px) {\n\n .${ CLASS.BUTTON }.${ CLASS.LABEL }-${ BUTTON_LABEL.CREDIT } .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LOGO.PAYPAL } {\n display: none;\n }\n }\n\n @media only screen and (min-width : ${ BUTTON_STYLE[BUTTON_SIZE.SMALL].minWidth }px) {\n\n .${ CLASS.BUTTON }.${ CLASS.LABEL }-${ BUTTON_LABEL.CREDIT } .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LOGO.PAYPAL } {\n display: inline-block;\n }\n }\n`;\n","/* @flow */\n\nimport { BUTTON_BRANDING, BUTTON_SHAPE, BUTTON_LAYOUT, BUTTON_NUMBER, BUTTON_LABEL } from '../../../constants';\nimport { BUTTON_STYLE, BUTTON_RELATIVE_STYLE } from '../../config';\nimport { max, perc } from '../../../lib/util';\n\nimport { CLASS } from './class';\n\nconst DUAL_BUTTON_MIN_RATIO = 2.8;\n\nexport function buttonResponsiveStyle({ height, cardNumber = 4 } : { height? : ?number, cardNumber? : number }) : string {\n\n return Object.keys(BUTTON_STYLE).map(size => {\n\n const style = BUTTON_STYLE[size];\n const buttonHeight = height || style.defaultHeight;\n const buttonTextMarginTop = style.buttonTextMargin;\n const minDualWidth = Math.round(buttonHeight * DUAL_BUTTON_MIN_RATIO * 2);\n\n return `\n\n @media only screen and (min-width: ${ style.minWidth }px) {\n\n .${ CLASS.CONTAINER } {\n min-width: ${ style.minWidth }px;\n max-width: ${ style.maxWidth }px;\n font-size: ${ max(perc(buttonHeight, 32), 10) }px;\n }\n\n .${ CLASS.BUTTON }:not(.${ CLASS.CARD }) {\n height: ${ buttonHeight }px;\n min-height: ${ height || style.minHeight }px;\n max-height: ${ height || style.maxHeight }px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.BRANDING }-${ BUTTON_BRANDING.UNBRANDED } .${ CLASS.BUTTON_LABEL } {\n height: 100%;\n font-size: ${ max(perc(buttonHeight, 45), 10) }px;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.BUTTON_LABEL } {\n height: ${ perc(buttonHeight, 35) + 5 }px;\n max-height: ${ perc(buttonHeight, 60) }px;\n min-height: ${ perc(buttonHeight, 40) }px;\n }\n \n .${ CLASS.BUTTON } .${ CLASS.BUTTON_LABEL } .${ CLASS.TEXT } {\n margin-top: ${ buttonTextMarginTop }px;\n }\n \n .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LABEL.EPS },\n .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LABEL.MYBANK } {\n height: ${ perc(buttonHeight, 50) + 5 }px;\n max-height: ${ perc(buttonHeight, 70) }px;\n min-height: ${ perc(buttonHeight, 40) }px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.SHAPE }-${ BUTTON_SHAPE.PILL } {\n border-radius: ${ Math.ceil(buttonHeight / 2) }px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.SHAPE }-${ BUTTON_SHAPE.RECT } {\n border-radius: 4px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.VERTICAL } {\n margin-bottom: ${ perc(buttonHeight, BUTTON_RELATIVE_STYLE.VERTICAL_MARGIN) }px;\n }\n\n .${ CLASS.SEPARATOR } {\n margin: 0 ${ perc(buttonHeight, 5) }px;\n }\n\n .${ CLASS.TAGLINE } {\n display: ${ style.allowTagline ? 'block' : 'none' };\n height: ${ perc(buttonHeight, BUTTON_RELATIVE_STYLE.TAGLINE) }px;\n line-height: ${ perc(buttonHeight, BUTTON_RELATIVE_STYLE.TAGLINE) }px;\n }\n\n .${ CLASS.FUNDINGICONS } {\n display: ${ style.allowFunding ? 'block' : 'none' };\n height: ${ perc(buttonHeight, BUTTON_RELATIVE_STYLE.FUNDINGICONS) }px;\n }\n\n .${ CLASS.CARD } {\n display: inline-block;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.CARD } {\n width: ${ (90 / cardNumber).toFixed(2) }%;\n max-width: ${ perc(buttonHeight, 160) }px;\n margin-top: 0;\n margin-left: ${ (5 / cardNumber).toFixed(2) }%;\n margin-right: ${ (5 / cardNumber).toFixed(2) }%;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.CARD } img {\n width: 100%;\n }\n\n .${ CLASS.FUNDINGICONS } .${ CLASS.CARD } {\n height: ${ perc(buttonHeight, 70) }px;\n margin-top: ${ perc(buttonHeight, 15) }px;\n margin-left: ${ perc(buttonHeight, 7) }px;\n margin-right: ${ perc(buttonHeight, 7) }px;\n }\n\n .${ CLASS.FUNDINGICONS } .${ CLASS.CARD } img {\n height: 100%;\n }\n }\n\n @media only screen and (min-width: ${ style.minWidth }px) and (max-width: ${ minDualWidth }px) {\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.NUMBER }-0 {\n width: 100%;\n margin-right: 0;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.NUMBER }-1 {\n display: none;\n }\n\n .${ CLASS.CONTAINER }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE } .${ CLASS.TAGLINE } {\n display: none;\n }\n }\n\n @media only screen and (min-width: ${ max(style.minWidth, minDualWidth) }px) {\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.NUMBER }-0 {\n display: inline-block;\n width: calc(50% - 2px);\n margin-right: 4px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.NUMBER }-1 {\n display: inline-block;\n width: calc(50% - 2px);\n }\n\n .${ CLASS.CONTAINER }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE } .${ CLASS.TAGLINE } {\n display: block;\n }\n }\n `;\n\n }).join('\\n');\n}\n","/* @flow */\n\nimport { BUTTON_COLOR } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const buttonColorStyle = `\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.GOLD } {\n background: #ffc439;\n color: #111;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.BLUE } {\n background: #009cde;\n color: #fff;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.SILVER } {\n background: #eee;\n color: #111;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.BLACK } {\n background: #2C2E2F;\n color: #fff;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.DARKBLUE } {\n background: #003087;\n color: #fff;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.TRANSPARENT } {\n background: transparent;\n color: #111;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.WHITE } {\n background: #fff;\n color: #2C2E2F;\n border: 1px solid #2C2E2F;\n }\n`;\n","/* @flow */\n/* eslint max-lines: off */\n\nexport const componentContent = {\n 'AD': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'AE': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n },\n 'ar': {\n 'checkout': 'السداد بواسطة {logo:pp} {logo:paypal}',\n 'safer_tag': 'الطريقة الأسهل والأكثر أماناً في الدفع',\n 'later_tag': 'اشترِ الآن، وسدّد على دفعات',\n 'pay': 'دفع بواسطة {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} شراء الآن',\n 'poweredBy': 'مدعوم من {logo:paypal}'\n }\n },\n 'AG': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'AI': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'AL': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'AM': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'AN': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'AO': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'AR': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'AT': {\n 'de': {\n 'checkout': 'Direkt zu {logo:pp} {logo:paypal}',\n 'safer_tag': 'Einfach schneller und sicherer bezahlen',\n 'later_tag': 'Kaufen Sie jetzt und bezahlen Sie nach und nach.',\n 'pay': 'Mit {logo:paypal} zahlen',\n 'buynow': '{logo:pp} {logo:paypal} Jetzt kaufen',\n 'poweredBy': 'Abgewickelt durch {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'AU': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'AW': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'AZ': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'BA': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'BB': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'BE': {\n 'en': {\n 'checkout': 'Pay with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, faster way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'nl': {\n 'checkout': 'Betalen met {logo:pp} {logo:paypal}',\n 'safer_tag': 'De veiligere en snellere manier om te betalen.',\n 'later_tag': 'Koop nu. Betaal later.',\n 'pay': 'Betalen met {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Nu kopen',\n 'poweredBy': 'Mogelijk gemaakt door {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Le réflexe sécurité pour payer',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n }\n },\n 'BF': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'BG': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'BH': {\n 'ar': {\n 'checkout': 'السداد بواسطة {logo:pp} {logo:paypal}',\n 'safer_tag': 'الطريقة الأسهل والأكثر أماناً في الدفع',\n 'later_tag': 'اشترِ الآن، وسدّد على دفعات',\n 'pay': 'دفع بواسطة {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} شراء الآن',\n 'poweredBy': 'مدعوم من {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'BI': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'BJ': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'BM': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'BN': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'BO': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'BR': {\n 'pt': {\n 'checkout': '{logo:pp} {logo:paypal} Finalizar',\n 'safer_tag': 'A maneira fácil e segura de pagar.',\n 'later_tag': 'Compre agora e pague depois.',\n 'pay': 'Pague com {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar agora',\n 'installment': '{logo:pp} {logo:paypal} Pagamentos
parcelados',\n 'installment_period': '{logo:pp} {logo:paypal} Pague em at\\u00e9
[installmentperiod]x sem juros',\n 'poweredBy': 'Com tecnologia {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'installment': '{logo:pp} {logo:paypal} Interest free
payments',\n 'installment_period': '{logo:pp} {logo:paypal} Pay up to [installmentperiod]x
without interest',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'BS': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'BT': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'BW': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'BY': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'BZ': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'C2': {\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式。',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay.',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'CA': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': '{logo:pp} {logo:paypal} Payer',\n 'safer_tag': 'Votre réflexe sécurité pour payer',\n 'later_tag': 'Acheter. Payer plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n }\n },\n 'CD': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'CG': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'CH': {\n 'de': {\n 'checkout': 'Direkt zu {logo:pp} {logo:paypal}',\n 'safer_tag': 'Einfach schneller und sicherer bezahlen',\n 'later_tag': 'Kaufen Sie jetzt und bezahlen Sie nach und nach.',\n 'pay': 'Mit {logo:paypal} zahlen',\n 'buynow': '{logo:pp} {logo:paypal} Jetzt kaufen',\n 'poweredBy': 'Abgewickelt durch {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Le réflexe sécurité pour payer',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'CI': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'CK': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'CL': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'CM': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'CN': {\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'CO': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'CR': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'CV': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'CY': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'CZ': {\n 'cs': {\n 'checkout': 'Zaplatit přes {logo:pp} {logo:paypal}',\n 'safer_tag': 'Jednodušší a bezpečnější způsob placení',\n 'later_tag': 'Nakupujte nyní, plaťte později.',\n 'pay': 'Zaplatit přes {logo: paypal}',\n 'buynow': 'Koupit ihned přes {logo:pp} {logo:paypal}',\n 'poweredBy': 'Využívá službu {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'DE': {\n 'de': {\n 'checkout': 'Direkt zu {logo:pp} {logo:paypal}',\n 'safer_tag': 'Überall schnell und sicher bezahlen.',\n 'later_tag': 'Jetzt bei uns bequem in Raten zahlen.',\n 'pay': 'Mit {logo:paypal} zahlen',\n 'buynow': '{logo:pp} {logo:paypal} Jetzt kaufen',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'DJ': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'DK': {\n 'da': {\n 'checkout': '{logo:pp} {logo:paypal} Betal',\n 'safer_tag': 'Betal nemt og sikkert',\n 'later_tag': 'Køb nu, betal senere.',\n 'pay': 'Betal med {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Køb nu',\n 'poweredBy': 'Leveret af {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'DM': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'DO': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'DZ': {\n 'ar': {\n 'checkout': 'السداد بواسطة {logo:pp} {logo:paypal}',\n 'safer_tag': 'الطريقة الأسهل والأكثر أماناً في الدفع',\n 'later_tag': 'اشترِ الآن، وسدّد على دفعات',\n 'pay': 'دفع بواسطة {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} شراء الآن',\n 'poweredBy': 'مدعوم من {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'EC': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'EE': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'ru': {\n 'checkout': 'Оформить заказ через {logo:pp} {logo:paypal}',\n 'safer_tag': 'Более безопасный и простой способ оплаты.',\n 'later_tag': 'Покупайте сейчас, платите потом.',\n 'pay': 'Оплатить через {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Купить сейчас',\n 'poweredBy': 'Обработано {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'EG': {\n 'ar': {\n 'checkout': 'السداد بواسطة {logo:pp} {logo:paypal}',\n 'safer_tag': 'الطريقة الأسهل والأكثر أماناً في الدفع',\n 'later_tag': 'اشترِ الآن، وسدّد على دفعات',\n 'pay': 'دفع بواسطة {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} شراء الآن',\n 'poweredBy': 'مدعوم من {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'ER': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'ES': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Tecnología de {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'ET': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'FI': {\n 'fi': {\n 'checkout': '{logo:pp} {logo:paypal}-maksu',\n 'safer_tag': 'Turvallisempi ja helpompi maksutapa',\n 'later_tag': 'Osta nyt. Maksa vähitellen.',\n 'pay': '{logo:paypal}-maksu',\n 'buynow': '{logo:pp} {logo:paypal} Osta nyt',\n 'poweredBy': 'Palvelun tarjoaa {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'FJ': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'FK': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'FM': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'FO': {\n 'da': {\n 'checkout': 'Betal med {logo:pp} {logo:paypal}',\n 'safer_tag': 'Betal nemt og sikkert',\n 'later_tag': 'Køb nu, betal senere.',\n 'pay': 'Betal med {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Køb nu',\n 'poweredBy': 'Leveret af {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'FR': {\n 'fr': {\n 'checkout': '{logo:pp} {logo:paypal} Payer',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Pay',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'GA': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'GB': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'GD': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'GE': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'GF': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'GI': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'GL': {\n 'da': {\n 'checkout': 'Betal med {logo:pp} {logo:paypal}',\n 'safer_tag': 'Betal nemt og sikkert',\n 'later_tag': 'Køb nu, betal senere.',\n 'pay': 'Betal med {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Køb nu',\n 'poweredBy': 'Leveret af {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'GM': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'GN': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'GP': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'GR': {\n 'el': {\n 'checkout': 'Ολοκλήρωση αγοράς μέσω {logo:pp} {logo:paypal}',\n 'safer_tag': 'Ο ασφαλέστερος και ευκολότερος τρόπος πληρωμής',\n 'later_tag': 'Αγοράστε τώρα. Πληρώστε σε δόσεις.',\n 'pay': 'Πληρωμή μέσω {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Αγορά τώρα',\n 'poweredBy': 'Με την υποστήριξη του {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'GT': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'GW': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'GY': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'HK': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal} 結帳',\n 'safer_tag': '更安全、更方便的付款方式',\n 'later_tag': '先購買,後付款。',\n 'pay': '使用 {logo:paypal} 付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即買',\n 'poweredBy': '支援方: {logo:paypal}'\n }\n },\n 'HN': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'HR': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'HU': {\n 'hu': {\n 'checkout': '{logo:pp} {logo:paypal}-fizetés',\n 'safer_tag': 'Biztonságosabb, könnyebb fizetési mód.',\n 'later_tag': 'Vásároljon most. Fizessen később.',\n 'pay': '{logo:paypal}-fizetés',\n 'buynow': '{logo:pp} {logo:paypal} Vásárlás',\n 'poweredBy': 'Üzemeltető: {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'ID': {\n 'id': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'Cara yang lebih mudah dan aman untuk membayar.',\n 'later_tag': 'Beli Sekarang. Bayar dalam Jangka Waktu Tertentu.',\n 'pay': 'Bayar dengan {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Beli Sekarang',\n 'poweredBy': 'Ditunjang teknologi {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'IE': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'IL': {\n 'he': {\n 'checkout': '{logo:pp} {logo:paypal} שלם',\n 'safer_tag': '.הדרך הקלה והבטוחה יותר לשלם',\n 'later_tag': 'קנה עכשיו. שלם לאורך זמן.',\n 'pay': 'שלם באמצעות {logo:paypal}‏',\n 'buynow': '{logo:pp} {logo:paypal} קנה עכשיו',\n 'poweredBy': '{logo:paypal} מופעל על-ידי'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'IN': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay.',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'IS': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'IT': {\n 'it': {\n 'checkout': '{logo:pp} {logo:paypal} Paga adesso',\n 'safer_tag': 'Il modo rapido e sicuro per pagare',\n 'later_tag': 'Acquista ora. Paga più tardi.',\n 'pay': 'Paga con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Paga adesso',\n 'poweredBy': 'Con tecnologia {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'JM': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'JO': {\n 'ar': {\n 'checkout': 'السداد بواسطة {logo:pp} {logo:paypal}',\n 'safer_tag': 'الطريقة الأسهل والأكثر أماناً في الدفع',\n 'later_tag': 'اشترِ الآن، وسدّد على دفعات',\n 'pay': 'دفع بواسطة {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} شراء الآن',\n 'poweredBy': 'مدعوم من {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'JP': {\n 'ja': {\n 'checkout': '{logo:pp} {logo:paypal}で支払う',\n 'safer_tag': 'より安全・簡単にお支払い',\n 'later_tag': '今すぐ購入して、分割してお支払い。',\n 'pay': '{logo:paypal}で支払う',\n 'buynow': '{logo:pp} {logo:paypal} 購入',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'KE': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'KG': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'KH': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'KI': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'KM': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'KN': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'KR': {\n 'ko': {\n 'checkout': '{logo:pp} {logo:paypal} 체크 아웃',\n 'safer_tag': '더 안전하고 빠른 결제 방법',\n 'later_tag': '지금 구매하고 천천히 결제하세요.',\n 'pay': '{logo:paypal}로 지불하기',\n 'buynow': '{logo:pp} {logo:paypal} 바로 구매',\n 'poweredBy': '제공: {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay.',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'KW': {\n 'ar': {\n 'checkout': 'السداد بواسطة {logo:pp} {logo:paypal}',\n 'safer_tag': 'الطريقة الأسهل والأكثر أماناً في الدفع',\n 'later_tag': 'اشترِ الآن، وسدّد على دفعات',\n 'pay': 'دفع بواسطة {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} شراء الآن',\n 'poweredBy': 'مدعوم من {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'KY': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'KZ': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'LA': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'LC': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'LI': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'LK': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'LS': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'LT': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'ru': {\n 'checkout': 'Оформить заказ через {logo:pp} {logo:paypal}',\n 'safer_tag': 'Более безопасный и простой способ оплаты.',\n 'later_tag': 'Покупайте сейчас, платите потом.',\n 'pay': 'Оплатить через {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Купить сейчас',\n 'poweredBy': 'Обработано {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'LU': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'de': {\n 'checkout': 'Direkt zu {logo:pp} {logo:paypal}',\n 'safer_tag': 'Einfach schneller und sicherer bezahlen',\n 'later_tag': 'Kaufen Sie jetzt und bezahlen Sie nach und nach.',\n 'pay': 'Mit {logo:paypal} zahlen',\n 'buynow': '{logo:pp} {logo:paypal} Jetzt kaufen',\n 'poweredBy': 'Abgewickelt durch {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'LV': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'ru': {\n 'checkout': 'Оформить заказ через {logo:pp} {logo:paypal}',\n 'safer_tag': 'Более безопасный и простой способ оплаты.',\n 'later_tag': 'Покупайте сейчас, платите потом.',\n 'pay': 'Оплатить через {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Купить сейчас',\n 'poweredBy': 'Обработано {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'MA': {\n 'ar': {\n 'checkout': 'السداد بواسطة {logo:pp} {logo:paypal}',\n 'safer_tag': 'الطريقة الأسهل والأكثر أماناً في الدفع',\n 'later_tag': 'اشترِ الآن، وسدّد على دفعات',\n 'pay': 'دفع بواسطة {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} شراء الآن',\n 'poweredBy': 'مدعوم من {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'MC': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'MD': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'ME': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'MG': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'MH': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'MK': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'ML': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'MN': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'MQ': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'MR': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'MS': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'MT': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'MU': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'MV': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'MW': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'MX': {\n 'es': {\n 'checkout': 'Pagar con {logo:pp} {logo:paypal}',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'installment': '{logo:pp} {logo:paypal} Pagos en
mensualidades',\n 'installment_period': '{logo:pp} {logo:paypal} Pague hasta en
[installmentperiod] mensualidades',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, faster way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'installment': '{logo:pp} {logo:paypal} Interest free
payments',\n 'installment_period': '{logo:pp} {logo:paypal} Pay up to [installmentperiod]x
without interest',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'MY': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay.',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'MZ': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'NA': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'NC': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'NE': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'NF': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'NG': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'NI': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'NL': {\n 'nl': {\n 'checkout': '{logo:pp} {logo:paypal} Betalen',\n 'safer_tag': 'Een veilige en makkelijke manier om te betalen.',\n 'later_tag': 'Koop nu. Betaal later.',\n 'pay': 'Betalen met {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Nu kopen',\n 'poweredBy': 'Mogelijk gemaakt door {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'NO': {\n 'no': {\n 'checkout': '{logo:pp} {logo:paypal} Betal',\n 'safer_tag': 'En trygg og enkel betalingsmetode',\n 'later_tag': 'Kjøp nå, betal senere.',\n 'pay': 'Betal med {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Kjøp nå',\n 'poweredBy': 'Leveres av {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'NP': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'NR': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'NU': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'NZ': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay.',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': '{logo:pp} {logo:paypal} Payer',\n 'safer_tag': 'Un réflexe sécurité.',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar.',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式。',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'OM': {\n 'ar': {\n 'checkout': 'السداد بواسطة {logo:pp} {logo:paypal}',\n 'safer_tag': 'الطريقة الأسهل والأكثر أماناً في الدفع',\n 'later_tag': 'اشترِ الآن، وسدّد على دفعات',\n 'pay': 'دفع بواسطة {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} شراء الآن',\n 'poweredBy': 'مدعوم من {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'PA': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'PE': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'PF': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'PG': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'PH': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay.',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'PL': {\n 'pl': {\n 'checkout': '{logo:pp} {logo:paypal} Do kasy',\n 'safer_tag': 'Płać wygodnie i bezpiecznie',\n 'later_tag': 'Kup teraz. Płać w ratach',\n 'pay': 'Zapłać z {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Kup teraz',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'PM': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'PN': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'PT': {\n 'pt': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A forma rápida e segura de pagar',\n 'later_tag': 'Compre agora. Vá pagando.',\n 'pay': 'Pagar com {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar agora',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'PW': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'PY': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'QA': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n },\n 'ar': {\n 'checkout': 'السداد بواسطة {logo:pp} {logo:paypal}',\n 'safer_tag': 'الطريقة الأسهل والأكثر أماناً في الدفع',\n 'later_tag': 'اشترِ الآن، وسدّد على دفعات',\n 'pay': 'دفع بواسطة {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} شراء الآن',\n 'poweredBy': 'مدعوم من {logo:paypal}'\n }\n },\n 'RE': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'RO': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'RS': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'RU': {\n 'ru': {\n 'checkout': '{logo:pp} {logo:paypal} Оформить покупку',\n 'safer_tag': 'Более безопасный и простой способ оплаты.',\n 'later_tag': 'Покупайте сейчас, платите потом.',\n 'pay': 'Оплатить через {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Купить сейчас',\n 'poweredBy': 'Обработано {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'RW': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SA': {\n 'ar': {\n 'checkout': 'السداد بواسطة {logo:pp} {logo:paypal}',\n 'safer_tag': 'الطريقة الأسهل والأكثر أماناً في الدفع',\n 'later_tag': 'اشترِ الآن، وسدّد على دفعات',\n 'pay': 'دفع بواسطة {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} شراء الآن',\n 'poweredBy': 'مدعوم من {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SB': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SC': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SE': {\n 'sv': {\n 'checkout': '{logo:pp} {logo:paypal} Betala',\n 'safer_tag': 'Ett tryggt och smidigt sätt att betala',\n 'later_tag': 'Köp nu, betala senare',\n 'pay': 'Betala med {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Köp nu',\n 'poweredBy': 'Tillhandahålls av {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'SG': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay.',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'SH': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SI': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SJ': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SK': {\n 'sk': {\n 'checkout': 'Zaplatiť cez {logo:pp} {logo:paypal}',\n 'safer_tag': 'Jednoduchší a bezpečnejší spôsob platby',\n 'later_tag': 'Nakúpte teraz, zaplaťte postupne',\n 'pay': 'Zaplatiť cez {logo: paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Kúpiť',\n 'poweredBy': 'Používa technológiu {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SL': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SM': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SN': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SO': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SR': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'ST': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SV': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SZ': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'TC': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'TD': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'TG': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'TH': {\n 'th': {\n 'checkout': '{logo:pp} {logo:paypal} ชำระเงิน',\n 'safer_tag': 'วิธีชำระเงินที่ปลอดภัยและง่ายกว่า',\n 'later_tag': 'ซื้อวันนี้ แล้วค่อยๆ จ่ายทีหลัง',\n 'pay': 'ชำระเงินด้วย {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} ซื้อทันที',\n 'poweredBy': 'ให้บริการโดย {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'TJ': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'TM': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'TN': {\n 'ar': {\n 'checkout': 'السداد بواسطة {logo:pp} {logo:paypal}',\n 'safer_tag': 'الطريقة الأسهل والأكثر أماناً في الدفع',\n 'later_tag': 'اشترِ الآن، وسدّد على دفعات',\n 'pay': 'دفع بواسطة {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} شراء الآن',\n 'poweredBy': 'مدعوم من {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'TO': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'TR': {\n 'tr': {\n 'checkout': '{logo:pp} {logo:paypal} ile Satın Alın',\n 'safer_tag': 'Ödeme yapmanın daha güvenli ve kolay yolu',\n 'later_tag': 'Şimdi Alın. Daha Sonra Ödeyin.',\n 'pay': '{logo:paypal} ile Öde',\n 'buynow': '{logo:pp} {logo:paypal} Hemen Satın Alın',\n 'poweredBy': 'Çalıştıran {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'TT': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'TV': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'TW': {\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal} 結帳',\n 'safer_tag': '更安全、更方便的付款方式',\n 'later_tag': '先購買,後付款。',\n 'pay': '使用 {logo:paypal} 付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即購',\n 'poweredBy': '服務提供者: {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'TZ': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'UA': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'ru': {\n 'checkout': 'Оформить заказ через {logo:pp} {logo:paypal}',\n 'safer_tag': 'Более безопасный и простой способ оплаты.',\n 'later_tag': 'Покупайте сейчас, платите потом.',\n 'pay': 'Оплатить через {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Купить сейчас',\n 'poweredBy': 'Обработано {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'UG': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'US': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'dual_tag': 'Two easy ways to pay',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': '{logo:pp} {logo:paypal} Payer',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': 'Pagar con {logo:pp} {logo:paypal}',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '使用{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'UY': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'VA': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'VC': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'VE': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'VG': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'VN': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay.',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'VU': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'WF': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'WS': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'YE': {\n 'ar': {\n 'checkout': 'السداد بواسطة {logo:pp} {logo:paypal}',\n 'safer_tag': 'الطريقة الأسهل والأكثر أماناً في الدفع',\n 'later_tag': 'اشترِ الآن، وسدّد على دفعات',\n 'pay': 'دفع بواسطة {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} شراء الآن',\n 'poweredBy': 'مدعوم من {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'YT': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'ZA': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'ZM': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'ZW': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n }\n};\n","// eslint-disable-line max-lines\n/* @flow */\n/** @jsx jsxToHTML */\n\nimport { base64encode } from 'belter/src';\n\nimport { BUTTON_SIZE, BUTTON_BRANDING, BUTTON_NUMBER, BUTTON_LOGO_COLOR, BUTTON_LABEL, BUTTON_LAYOUT, ENV, ATTRIBUTE, FUNDING } from '../../constants';\nimport { getButtonConfig, labelToFunding, fundingToDefaultLabel } from '../config';\nimport { normalizeProps } from '../props';\nimport { jsxToHTML, type JsxHTMLNode, type ChildType, jsxRender } from '../../lib/jsx';\nimport { fundingLogos, cardLogos } from '../../resources';\nimport { validateButtonProps } from '../validate';\nimport type { LocaleType, FundingSource, FundingSelection, FundingList, CheckoutCustomizationType } from '../../types';\n\nimport { Tagline, Beacon } from './miscComponent';\nimport { componentStyle, CLASS } from './componentStyle';\nimport { getComponentScript } from './componentScript';\nimport { componentContent } from './content';\n\nconst allowedPersonalizationLabels = [ BUTTON_LABEL.CHECKOUT, BUTTON_LABEL.BUYNOW, BUTTON_LABEL.PAY ];\n\nfunction getCommonButtonClasses({ layout, shape, branding, multiple, env }) : string {\n return [\n `${ CLASS.LAYOUT }-${ layout }`,\n `${ CLASS.SHAPE }-${ shape }`,\n `${ CLASS.BRANDING }-${ branding ? BUTTON_BRANDING.BRANDED : BUTTON_BRANDING.UNBRANDED }`,\n `${ CLASS.NUMBER }-${ multiple ? BUTTON_NUMBER.MULTIPLE : BUTTON_NUMBER.SINGLE }`,\n `${ CLASS.ENV }-${ env }`,\n `${ CLASS.SHOULD_FOCUS }`\n ].join(' ');\n}\n\nfunction getButtonClasses({ label, color, logoColor }) : string {\n return [\n `${ CLASS.LABEL }-${ label }`,\n `${ CLASS.COLOR }-${ color }`,\n `${ CLASS.LOGO_COLOR }-${ logoColor }`\n ].join(' ');\n}\n\nfunction getLocaleContent(locale : LocaleType) : Object {\n const { country, lang } = locale;\n return componentContent[country][lang];\n}\n\nfunction determineLabel({ label, source, multiple, layout } : { label : $Values, source : FundingSource, multiple : boolean, layout : $Values }) : $Values {\n\n const defaultLabel = fundingToDefaultLabel(source);\n const labelMatchesFunding = (labelToFunding(label) === source);\n\n // If chosen label is not for this funding source, display the default label\n if (!labelMatchesFunding) {\n return defaultLabel;\n }\n\n // If there are multiple horizontal buttons, display the default label\n if (multiple && layout === BUTTON_LAYOUT.HORIZONTAL) {\n return defaultLabel;\n }\n\n return label;\n}\n\nfunction determineButtons({ label, color, sources, multiple, layout } : { label : $Values, color : string, sources : FundingList, multiple : boolean, layout : $Values }) :\n $ReadOnlyArray<{ label : $Values, color : string, source : FundingSource }> {\n\n return sources.map((source, i) => {\n\n const buttonLabel = determineLabel({ label, source, multiple, layout });\n\n const buttonColor = (multiple && i > 0)\n ? getButtonConfig(buttonLabel, 'secondaryColors')[color]\n : color;\n\n return {\n source,\n label: buttonLabel,\n color: buttonColor\n };\n });\n}\n\nfunction renderCards({ cards, layout, size } :\n { cards : $ReadOnlyArray, layout? : string, size? : string }) : $ReadOnlyArray {\n return cards.map(name => {\n const logo = cardLogos[name];\n\n return (\n \n \n
\n );\n });\n}\n\nfunction renderFundingIcons({ cards, fundingicons, size, layout } :\n { cards : $ReadOnlyArray, fundingicons : boolean, layout : string, size : string }) : ?JsxHTMLNode {\n\n if (!fundingicons) {\n return;\n }\n\n return
{ renderCards({ cards, size, layout }) }
;\n}\n\nfunction renderPersonalizationButtonText(text) : JsxHTMLNode {\n const className = `${ CLASS.TEXT } ${ CLASS.PERSONALIZATION_TEXT }`;\n return { text };\n}\n\nfunction getButtonTextAnimationStyle({ personalizedButtonText, branding, allowedAnimation }) : ?JsxHTMLNode {\n if (__TEST__) {\n return null;\n }\n \n if (!branding) {\n return;\n }\n \n if (!allowedAnimation) {\n return;\n }\n \n const MIN_WIDTH = 300;\n const LABEL_DURATION = 1;\n const PERSONALIZATION_DURATION = 5;\n const DELAY = 0;\n \n const COMPRESSED = `\n max-width: 0%;\n opacity: 0;\n `;\n \n const EXPANDED = `\n max-width: 100%;\n opacity: 1;\n `;\n \n const HIDDEN = `\n position: absolute;\n visibility: hidden;\n `;\n \n const VISIBLE = `\n position: static;\n visibility: visible;\n `;\n \n const DOM_READY = '.dom-ready';\n const PAYPAL_BUTTON = `.${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.PAYPAL }]`;\n \n const PAYPAL_LOGO = `${ PAYPAL_BUTTON } .${ CLASS.LOGO }.${ CLASS.LOGO }-${ FUNDING.PAYPAL }`;\n const BUTTON_TEXT = `${ PAYPAL_BUTTON } .${ CLASS.TEXT }:not(.personalization-text)`;\n const PERSONALIZATION_TEXT = `${ PAYPAL_BUTTON } .personalization-text`;\n \n return (\n \n {outlet}\n \n );\n}\n","\n/* @flow */\n\nimport { track, flush as flushLogs } from 'beaver-logger/client';\n\nimport { Checkout } from '../checkout';\nimport { setupPopupBridgeProxy } from '../integrations/popupBridge';\nimport { getPageRenderTime, setLogLevel } from '../lib';\nimport { ATTRIBUTE, FUNDING, FPTI, BUTTON_LAYOUT, BUTTON_COLOR, BUTTON_SIZE, BUTTON_SHAPE, BUTTON_LABEL } from '../constants';\n\nimport typeof { Button } from './component';\n\nexport function setupButtonChild(ButtonComponent : Button) {\n setupPopupBridgeProxy(Checkout, ButtonComponent);\n\n getPageRenderTime().then(pageRenderTime => {\n\n const fundingSources = Array.prototype.slice.call(document.querySelectorAll(`[${ ATTRIBUTE.FUNDING_SOURCE }]`)).map(el => {\n return el.getAttribute(ATTRIBUTE.CARD) || el.getAttribute(ATTRIBUTE.FUNDING_SOURCE);\n }).filter(source => {\n return source && source !== FUNDING.CARD;\n });\n\n const xprops = ButtonComponent.xprops;\n \n if (!xprops) {\n return;\n }\n\n const {\n layout = BUTTON_LAYOUT.HORIZONTAL,\n color = BUTTON_COLOR.GOLD,\n size = BUTTON_SIZE.SMALL,\n shape = BUTTON_SHAPE.PILL,\n label = BUTTON_LABEL.CHECKOUT,\n maxbuttons,\n tagline\n } = (xprops.style || {});\n\n track({\n [FPTI.KEY.STATE]: FPTI.STATE.BUTTON,\n [FPTI.KEY.TRANSITION]: FPTI.TRANSITION.BUTTON_LOAD,\n [FPTI.KEY.BUTTON_TYPE]: FPTI.BUTTON_TYPE.IFRAME,\n [FPTI.KEY.FUNDING_LIST]: fundingSources.join(':'),\n [FPTI.KEY.FUNDING_COUNT]: fundingSources.length,\n [FPTI.KEY.PAGE_LOAD_TIME]: pageRenderTime,\n [FPTI.KEY.BUTTON_LAYOUT]: layout,\n [FPTI.KEY.BUTTON_COLOR]: color,\n [FPTI.KEY.BUTTON_SIZE]: size,\n [FPTI.KEY.BUTTON_SHAPE]: shape,\n [FPTI.KEY.BUTTON_LABEL]: label,\n [FPTI.KEY.BUTTON_WIDTH]: window.innerWidth,\n [FPTI.KEY.MAX_BUTTONS]: maxbuttons,\n [FPTI.KEY.BUTTON_TAGLINE_ENABLED]: tagline ? '1' : '0'\n });\n\n flushLogs();\n });\n\n const xprops = ButtonComponent.xprops || Checkout.xprops;\n\n if (xprops && xprops.logLevel) {\n setLogLevel(xprops.logLevel);\n }\n\n // $FlowFixMe\n if (xprops.payment && !xprops.createOrder) {\n // $FlowFixMe\n xprops.createOrder = xprops.payment;\n }\n\n // $FlowFixMe\n if (xprops.onAuthorize && !xprops.onApprove) {\n // $FlowFixMe\n xprops.onApprove = xprops.onAuthorize;\n }\n\n try {\n if (xprops && xprops.onShippingChange && window.pre &&\n window.pre.inlineGuest && window.pre.inlineGuest.res &&\n window.pre.inlineGuest.res.data && window.pre.inlineGuest.res.data.treatments) {\n window.pre.inlineGuest.res.data.treatments = [];\n }\n } catch (err) {\n // pass\n }\n}\n","/* @flow */\n\nimport { info, warn, flush as flushLogs } from 'beaver-logger/client';\nimport { CONSTANTS } from 'zoid/src';\nimport { getParent, getTop } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { config } from './config';\nimport { noop, isIE, getDomainSetting, extendUrl, patchMethod, once, extend } from './lib';\nimport { Button } from './button';\nimport { Checkout } from './checkout';\nimport { BUTTON_LABEL, BUTTON_SIZE, BUTTON_COLOR } from './constants';\nimport { rest } from './api';\n\nif (isIE() && getDomainSetting('ie_full_page')) {\n // $FlowFixMe\n Checkout.renderTo = (win) => {\n info('force_ie_full_page');\n flushLogs();\n\n // $FlowFixMe\n const checkout = Checkout.init({\n onAuthorize: noop\n });\n\n checkout.delegate(win);\n\n checkout.openContainer().then(() => {\n checkout.event.triggerOnce(CONSTANTS.EVENTS.CLOSE);\n checkout.showContainer();\n });\n\n // $FlowFixMe\n Button.xprops.payment().then(token => {\n window.top.location = extendUrl(config.checkoutUrl, { token });\n }).catch(err => {\n checkout.error(err);\n });\n };\n}\n\nconst parent = getParent(window);\nconst top = getTop(window);\n\nif (top && parent) {\n let canRenderTop = (top === parent);\n\n if (!canRenderTop) {\n Checkout.canRenderTo(top).then(result => {\n canRenderTop = result;\n });\n\n patchMethod(Checkout, 'renderTo', ({ args: [ win, props, el ], original, context }) => {\n\n if (!canRenderTop) {\n win = getParent(window);\n }\n\n return original.call(context, win, props, el);\n });\n }\n}\n\npatchMethod(Checkout, 'renderTo', ({ callOriginal, args: [ , props ] }) => {\n if (getDomainSetting('allow_full_page_fallback')) {\n const handleError = once((err) => {\n try {\n // eslint-disable-next-line no-console\n console.error(err && err.stack);\n } catch (err2) {\n // pass\n }\n\n // $FlowFixMe\n return Button.xprops.payment().then(token => {\n window.top.location = extendUrl(config.checkoutUrl, { token });\n });\n });\n\n props.onError = handleError;\n return callOriginal().catch(handleError);\n }\n return callOriginal();\n});\n\nlet debounce = false;\n\npatchMethod(Checkout, 'renderTo', ({ callOriginal, args: [ , props ] }) => {\n\n if (debounce) {\n warn('button_mutliple_click_debounce');\n return new ZalgoPromise(noop);\n }\n\n debounce = true;\n\n for (const methodName of [ 'onAuthorize', 'onCancel', 'onError', 'onClose' ]) {\n const original = props[methodName];\n props[methodName] = function unDebounce() : mixed {\n debounce = false;\n if (original) {\n return original.apply(this, arguments);\n }\n };\n }\n\n return callOriginal();\n});\n\npatchMethod(rest.payment, 'create', ({ original: createOriginal, context: createContext, args: [ env, client, options, experience ] }) => {\n if (!options.payment) {\n options = { payment: options, experience };\n }\n return createOriginal.call(createContext, env, client, options);\n});\n\npatchMethod(Button.props.style, 'validate', ({ callOriginal, args: [ style ] }) => {\n\n if (!style) {\n return callOriginal();\n }\n\n if (style && style.color === 'creditblue') {\n style.color = BUTTON_COLOR.DARKBLUE;\n }\n\n if (style && style.label === 'generic') {\n style.label = BUTTON_LABEL.PAYPAL;\n }\n\n if (style && (!style.label || style.label === BUTTON_LABEL.CHECKOUT) && style.size === 'tiny') {\n warn(`unsupported_button_size_tiny`);\n style.size = BUTTON_SIZE.SMALL;\n }\n\n return callOriginal();\n});\n\npatchMethod(Button, 'render', ({ callOriginal, args: [ props ] }) => {\n\n if (props.billingAgreement) {\n props.payment = props.billingAgreement;\n delete props.billingAgreement;\n }\n\n return callOriginal();\n});\n\npatchMethod(Button.props.payment, 'decorate', ({ original, context, args: [ originalPayment ] }) => {\n return original.call(context, function payment(data : Object, actions : Object) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n patchMethod(actions.payment, 'create', ({ original: createOriginal, context: createContext, args: [ options, experience ] }) => {\n if (!options.payment) {\n options = { payment: options, experience };\n }\n return createOriginal.call(createContext, options);\n });\n\n function resolveData(token) {\n resolve(token);\n }\n\n function rejectActions(err) {\n reject(err);\n }\n\n extend(resolveData, data);\n extend(resolveData, actions);\n extend(rejectActions, actions);\n\n const ctx = {\n props: {\n env: this.props.env,\n client: this.props.client\n }\n };\n\n let result;\n\n try {\n result = originalPayment.call(ctx, resolveData, rejectActions);\n } catch (err) {\n return reject(err);\n }\n\n if (result && typeof result.then === 'function') {\n return result.then(resolve, reject);\n }\n\n if (result !== undefined) {\n return resolve(result);\n }\n });\n });\n});\n\nif (Button.isChild()) {\n if (!window.Promise) {\n window.Promise = ZalgoPromise;\n }\n}\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { create } from 'zoid/src';\nimport { type Component } from 'zoid/src/component/component';\nimport type { CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { base64encode } from 'belter/src';\n\nimport { config } from '../config';\nimport { getButtonSessionID, getBrowserLocale, getSessionID, getCurrentScriptUrl } from '../lib';\n\ntype CardOptions = {|\n client : {\n [string] : (string | ZalgoPromise)\n },\n env? : string,\n locale? : string,\n logLevel : string,\n awaitPopupBridge : Function,\n onAuthorize : ({ returnUrl : string }, { redirect : (?CrossDomainWindowType, ?string) => ZalgoPromise }) => ?ZalgoPromise,\n onCancel? : ({ cancelUrl : string }, { redirect : (?CrossDomainWindowType, ?string) => ZalgoPromise }) => ?ZalgoPromise,\n onEvent? : ({ type : string, payload : Object }) => void,\n meta : Object,\n commit : boolean,\n token : string\n|};\n\nexport const Card : Component = create({\n tag: 'card-fields',\n name: 'ppcard',\n\n buildUrl(props) : string {\n const env = props.env || config.env;\n return config.inlinedCardFieldUrls[env];\n },\n\n contexts: {\n iframe: true,\n popup: false\n },\n\n dimensions: {\n height: '300px',\n width: '100%'\n },\n\n autoResize: {\n height: true,\n width: false\n },\n\n props: {\n sessionID: {\n type: 'string',\n required: false,\n def() : string {\n return getSessionID();\n },\n queryParam: true\n },\n\n\n token: {\n type: 'string',\n required: true,\n queryParam: true\n },\n\n buttonSessionID: {\n type: 'string',\n required: false,\n def() : ?string {\n return getButtonSessionID();\n },\n queryParam: true\n },\n\n commit: {\n type: 'boolean',\n required: false,\n queryParam: true\n },\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n },\n\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n allowDelegate: true,\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n }\n },\n\n initialFormValues: {\n type: 'object',\n required: false\n },\n\n\n onAuthorize: {\n type: 'function',\n required: true,\n once: true\n },\n\n onAuth: {\n type: 'function',\n required: false,\n sameDomain: true\n },\n\n onEvent: {\n type: 'function',\n required: false,\n sameDomain: true\n },\n\n getState: {\n type: 'function',\n required: false,\n sameDomain: true\n },\n\n dispatch: {\n type: 'object',\n required: false,\n sameDomain: true\n },\n\n onCancel: {\n type: 'function',\n required: false,\n once: true,\n noop: true\n },\n\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n },\n \n style: {\n type: 'object',\n required: false,\n queryParam: true,\n def() : Object {\n return {\n cardIcons: {\n display: false\n },\n submitButton: {\n display: true\n },\n currencyConversion: {\n display: true\n }\n };\n }\n }\n }\n});\n","/* @flow */\n\nimport { info, track, debug, warn, error, flush as flushLogs } from 'beaver-logger/client';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { config } from './config';\nimport { FPTI } from './constants';\nimport { initLogger, checkForCommonErrors, setLogLevel, stringifyError,\n stringifyErrorMessage, getResourceLoadTime, isPayPalDomain, isEligible,\n getDomainSetting, once, openMetaFrame, precacheRememberedFunding,\n getCurrentScript, getRememberedFunding } from './lib';\nimport { Button } from './button';\nimport { Checkout } from './checkout';\nimport { pptm } from './external';\n\nfunction domainToEnv(domain : string) : ?string {\n for (const env of Object.keys(config.paypalUrls)) {\n if (config.paypalUrls[env] === domain) {\n return env;\n }\n }\n}\n\nfunction setDomainEnv(domain : string) {\n const currentDomainEnv = domainToEnv(domain);\n\n if (currentDomainEnv && currentDomainEnv !== 'test') {\n config.env = currentDomainEnv;\n }\n}\n\nsetDomainEnv(`${ window.location.protocol }//${ window.location.host }`);\n\nZalgoPromise.onPossiblyUnhandledException(err => {\n\n error('unhandled_error', {\n stack: stringifyError(err),\n errtype: ({}).toString.call(err)\n });\n\n track({\n [ FPTI.KEY.ERROR_CODE ]: 'checkoutjs_error',\n [ FPTI.KEY.ERROR_DESC ]: stringifyErrorMessage(err)\n });\n\n return flushLogs().catch(err2 => {\n if (window.console) {\n try {\n if (window.console.error) {\n window.console.error('Error flushing:', stringifyError(err2));\n } else if (window.console.log) {\n window.console.log('Error flushing:', stringifyError(err2));\n }\n } catch (err3) {\n setTimeout(() => {\n throw err3;\n }, 1);\n }\n }\n });\n});\n\nconst currentScript = getCurrentScript();\nconst currentProtocol = window.location.protocol.split(':')[0];\n\n\ntype ConfigOptions = {|\n env? : ?string,\n stage? : ?string,\n apiStage? : ?string,\n stageUrl? : ?string,\n localhostUrl? : ?string,\n checkoutUri? : ?string,\n state? : ?string,\n logLevel? : ?string,\n merchantID? : ?string,\n precacheRemembered? : boolean,\n authCode? : ?string\n|};\n\nfunction configure({ env, stage, stageUrl, apiStage, localhostUrl, checkoutUri, state, logLevel, merchantID, authCode } : ConfigOptions = {}) {\n\n if (env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n\n delete config.env;\n config.env = env;\n } else if (Button.xprops && Button.xprops.env) {\n delete config.env;\n // $FlowFixMe\n config.env = Button.xprops.env;\n } else if (Checkout.xprops && Checkout.xprops.env) {\n delete config.env;\n // $FlowFixMe\n config.env = Checkout.xprops.env;\n }\n\n if (stage) {\n delete config.stage;\n config.stage = stage;\n } else if (Button.xprops && Button.xprops.stage) {\n delete config.stage;\n // $FlowFixMe\n config.stage = Button.xprops.stage;\n } else if (Checkout.xprops && Checkout.xprops.stage) {\n delete config.stage;\n // $FlowFixMe\n config.stage = Checkout.xprops.stage;\n }\n\n if (stageUrl) {\n delete config.stageUrl;\n // $FlowFixMe\n config.stageUrl = stageUrl;\n } else if (Button.xprops && Button.xprops.stageUrl) {\n delete config.stageUrl;\n // $FlowFixMe\n config.stageUrl = Button.xprops.stageUrl;\n } else if (Checkout.xprops && Checkout.xprops.stageUrl) {\n delete config.stageUrl;\n // $FlowFixMe\n config.stageUrl = Checkout.xprops.stageUrl;\n }\n\n authCode = authCode || (Button.xprops && Button.xprops.authCode) || (Checkout.xprops && Checkout.xprops.authCode);\n\n if (authCode) {\n delete config.authCode;\n config.authCode = authCode;\n }\n\n if (apiStage) {\n delete config.apiStage;\n config.apiStage = apiStage;\n }\n\n localhostUrl = localhostUrl || (Button.xprops && Button.xprops.localhostUrl) || (Checkout.xprops && Checkout.xprops.localhostUrl);\n if (localhostUrl) {\n config.localhostUrl = localhostUrl;\n }\n\n checkoutUri = checkoutUri || (Button.xprops && Button.xprops.checkoutUri) || (Checkout.xprops && Checkout.xprops.checkoutUri);\n if (checkoutUri) {\n config.checkoutUri = checkoutUri;\n }\n\n if (state) {\n delete config.state;\n config.state = state;\n }\n\n if (merchantID) {\n config.merchantID = merchantID;\n }\n\n if (logLevel) {\n setLogLevel(logLevel);\n } else {\n setLogLevel(config.logLevel);\n }\n}\n\nexport const init = once(({ precacheRemembered }) => {\n\n if (!isEligible()) {\n warn('ineligible');\n }\n\n checkForCommonErrors();\n\n initLogger();\n\n if (pptm.shouldCreateInitialPptmScript()) {\n pptm.createPptmScript();\n }\n\n if (precacheRemembered) {\n precacheRememberedFunding();\n }\n\n if (getDomainSetting('force_bridge') && !isPayPalDomain()) {\n openMetaFrame(config.env);\n }\n\n info(`setup_${ config.env }`);\n\n debug(`current_protocol_${ currentProtocol }`);\n});\n\n// $FlowFixMe\nexport function setup(options : ConfigOptions = {}) {\n configure(options);\n init(options);\n}\n\nif (currentScript) {\n setup({\n env: currentScript.getAttribute('data-env'),\n stage: currentScript.getAttribute('data-stage'),\n apiStage: currentScript.getAttribute('data-api-stage'),\n stageUrl: currentScript.getAttribute('data-stage-url'),\n localhostUrl: isPayPalDomain() ? currentScript.getAttribute('data-localhost-url') : undefined,\n checkoutUri: isPayPalDomain() ? currentScript.getAttribute('data-checkout-uri') : undefined,\n state: currentScript.getAttribute('data-state'),\n logLevel: currentScript.getAttribute('data-log-level'),\n merchantID: currentScript.getAttribute('data-merchant-id'),\n authCode: currentScript.getAttribute('data-auth-code'),\n precacheRemembered: currentScript.hasAttribute('data-precache-remembered-funding')\n });\n\n} else {\n setup();\n}\n\nif (!isPayPalDomain()) {\n\n if (currentScript) {\n\n const scriptProtocol = currentScript.src.split(':')[0];\n const loadTime = getResourceLoadTime(currentScript.src);\n\n debug(`current_script_protocol_${ scriptProtocol }`);\n debug(`current_script_protocol_${ currentProtocol === scriptProtocol ? 'match' : 'mismatch' }`);\n debug(`current_script_version_${ config.version.replace(/[^0-9a-zA-Z]+/g, '_') }`);\n\n if (loadTime) {\n debug(`current_script_time`, { loadTime });\n debug(`current_script_time_${ Math.floor(loadTime / 1000) }`);\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.SCRIPT_LOAD,\n [ FPTI.KEY.TRANSITION_TIME ]: loadTime,\n [ FPTI.KEY.FUNDING_REMEMBERED ]: getRememberedFunding().join(',')\n });\n\n } else {\n\n debug(`no_current_script`);\n debug(`no_current_script_version_${ config.version.replace(/[^0-9a-zA-Z]+/g, '_') }`);\n\n if (document.currentScript) { // eslint-disable-line compat/compat\n debug(`current_script_not_recognized`, { src: document.currentScript.src }); // eslint-disable-line compat/compat\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.SCRIPT_LOAD\n });\n }\n}\n","/* @flow */\n\nimport { debug, info, warn, error, track, flush } from 'beaver-logger/client';\nimport { destroyAll as _destroyAll } from 'zoid/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport * as _postRobot from 'post-robot/src'; // eslint-disable-line import/no-namespace\n\nimport { isPayPalDomain } from './lib';\nimport { Checkout as _Checkout } from './checkout';\nimport { BillingPage as _BillingPage } from './billing';\nimport { ThreeDomainSecure as _ThreeDomainSecure } from './threeDomainSecure';\n\nimport './hacks'; // eslint-disable-line import/no-unassigned-import\n\nexport const postRobot = _postRobot;\nexport { ZalgoPromise as Promise } from 'zalgo-promise/src';\nexport { PopupOpenError } from 'zoid/src';\n\nexport { rest } from './api';\nexport { Button } from './button';\nexport { Card } from './card';\nexport { setup } from './setup';\nexport { config } from './config';\nexport { ENV, USERS, SOURCE, FUNDING, CARD } from './constants';\nexport { request, isEligible, isFundingRemembered, allowIframe as forceIframe, allowIframe as isWebView, allowIframe } from './lib';\nexport { logExperimentTreatment } from './experiments';\nexport { logFundingEligibility } from './funding';\n\nexport const onPossiblyUnhandledException = ZalgoPromise.onPossiblyUnhandledException;\n\nexport const version = __PAYPAL_CHECKOUT__.__MINOR_VERSION__;\n\nexport let checkout;\nexport let apps;\n\nif (__PAYPAL_CHECKOUT__.__LEGACY_SUPPORT__) {\n const legacy = require('./legacy');\n checkout = legacy.checkout;\n apps = legacy.apps;\n}\n\n// -------------------------------------------------------------\n\nexport let Checkout;\nexport let BillingPage;\nexport let PayPalCheckout;\nexport let destroyAll;\nexport let enableCheckoutIframe;\nexport let logger;\nexport let ThreeDomainSecure;\n\nfunction _enableCheckoutIframe() {\n _Checkout.contexts.iframe = true;\n}\n\nif (isPayPalDomain() || __TEST__) {\n Checkout = _Checkout;\n BillingPage = _BillingPage;\n ThreeDomainSecure = _ThreeDomainSecure;\n PayPalCheckout = _Checkout;\n enableCheckoutIframe = _enableCheckoutIframe;\n destroyAll = _destroyAll;\n logger = { debug, info, warn, error, track, flush };\n}\n","/* @flow */\n/* eslint import/no-default-export: off */\n\nimport * as INTERFACE from './interface'; // eslint-disable-line import/no-namespace\n\nexport * from './interface';\nexport default INTERFACE;\n","/* @flow */\n\nexport const LOG_PREFIX = `paypal_legacy`;\n\nexport const ATTRIBUTES = {\n BUTTON: 'data-paypal-button',\n MERCHANT_ID: 'data-paypal-id',\n ENV: 'data-env',\n SANDBOX: 'data-sandbox'\n};\n\nexport const CLASSES = {\n HIDDEN_BUTTON: 'paypal-button-hidden'\n};\n","/* @flow */\n\nimport { isDevice, isEligible, supportsPopups } from '../lib';\n\nexport function isLegacyEligible() : boolean {\n\n if (!isEligible()) {\n return false;\n }\n\n if (!supportsPopups()) {\n return false;\n }\n\n if (isDevice()) {\n return false;\n }\n\n return true;\n}\n","/* @flow */\n\nimport { prefix } from 'beaver-logger/client';\n\nimport { COUNTRY, LANG, LOCALE } from '../constants';\nimport type { LocaleType } from '../types';\n\nimport { LOG_PREFIX } from './constants';\n\nconst { warn } = prefix(LOG_PREFIX);\n\nconst DEFAULT_COUNTRY = COUNTRY.US;\nconst DEFAULT_LANG = LANG.EN;\n\nexport function normalizeLocale(locale : string) : LocaleType {\n\n let [ lang, country ] = locale.split('_');\n\n if (!country) {\n if (LOCALE[lang]) {\n country = lang;\n lang = null;\n } else {\n country = DEFAULT_COUNTRY;\n }\n }\n\n if (!LOCALE[country]) {\n warn(`invalid_user_country`, { country });\n country = DEFAULT_COUNTRY;\n }\n\n if (!lang) {\n lang = DEFAULT_LANG;\n }\n\n if (LOCALE[country].indexOf(lang) === -1) {\n warn(`invalid_user_lang`, { lang });\n\n if (LOCALE[country].indexOf(DEFAULT_LANG) !== -1) {\n lang = DEFAULT_LANG;\n } else {\n lang = LOCALE[country][0];\n }\n }\n\n return { country, lang };\n}\n","/* @flow */\n\nimport { prefix } from 'beaver-logger/client';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { config } from '../config';\nimport { FPTI, BUTTON_COLOR, BUTTON_SHAPE, BUTTON_SIZE, BUTTON_LABEL } from '../constants';\nimport { loadScript, memoize, isElementVisible, stringifyError } from '../lib';\n\nimport { LOG_PREFIX } from './constants';\nimport { normalizeLocale } from './common';\n\nconst { info, debug, error } = prefix(LOG_PREFIX);\n\nconst loadButtonJS = memoize(() : ZalgoPromise => {\n\n debug(`buttonjs_load`);\n\n return loadScript(config.buttonJSUrl).catch(err => {\n info(`buttonjs_load_error_retry`, { error: stringifyError(err) });\n return loadScript(config.buttonJSUrl);\n }).then(result => {\n debug(`buttonjs_load_success`);\n return result;\n }).catch(err => {\n error(`buttonjs_load_error`, { error: stringifyError(err) });\n throw err;\n });\n});\n\nfunction renderButton(id, { container, locale, type, color, shape, size }) : ZalgoPromise {\n\n return loadButtonJS().then(() => {\n\n if (locale) {\n const { country, lang } = normalizeLocale(locale);\n locale = `${ lang }_${ country }`;\n }\n\n locale = locale || `${ config.locale.lang }_${ config.locale.country }`;\n color = color || BUTTON_COLOR.GOLD;\n shape = shape || BUTTON_SHAPE.PILL;\n size = size || BUTTON_SIZE.SMALL;\n type = type || BUTTON_LABEL.CHECKOUT;\n\n debug(`render_button_lc_${ locale }`);\n debug(`render_button_color_${ color }`);\n debug(`render_button_shape_${ shape }`);\n debug(`render_button_size_${ size }`);\n debug(`render_button_label_${ type }`);\n\n const el = window.paypal.button.create(id, { lc: locale, color, shape, size }, { type: 'button', label: type }).el;\n container.appendChild(el);\n\n try {\n info(`in_page_button_${ isElementVisible(el) ? 'visible' : 'not_visible' }`);\n\n } catch (err) {\n // pass\n }\n\n return el.childNodes[0];\n });\n}\n\n// eslint-disable-next-line flowtype/no-mutable-array\nexport function renderButtons(id : string, buttons : Array) : ZalgoPromise> {\n\n return ZalgoPromise.map(buttons, button => {\n return ZalgoPromise.try(() => {\n\n if (button.container) {\n return renderButton(id, button);\n } else {\n return button.button;\n }\n\n }).then(element => {\n\n let container;\n let type;\n const condition = button.condition;\n const click = button.click;\n\n if (button.container) {\n container = button.container;\n type = FPTI.BUTTON_TYPE.HTML;\n } else {\n container = button.button;\n type = FPTI.BUTTON_TYPE.CUSTOM;\n }\n\n return { container, element, type, condition, click };\n });\n });\n}\n\nexport function getHijackTargetElement(button : HTMLElement | HTMLButtonElement) : ?HTMLElement {\n\n // $FlowFixMe\n const form = button.form;\n\n if (form) {\n debug(`target_element_button_form`);\n return form;\n }\n\n const tagName = button.tagName && button.tagName.toLowerCase();\n\n if (tagName === 'a') {\n debug(`target_element_link`);\n return button;\n }\n\n const parentElement = button.parentElement;\n const parentTagName = parentElement && parentElement.tagName && parentElement.tagName.toLowerCase();\n\n if ((tagName === 'img' || tagName === 'button') && parentTagName === 'a') {\n debug(`target_element_parent_link`);\n // $FlowFixMe\n return parentElement;\n }\n\n const grandparentElement = parentElement && parentElement.parentElement;\n const grandparentTagName = grandparentElement && grandparentElement.tagName && grandparentElement.tagName.toLowerCase();\n\n if (tagName === 'button' && grandparentTagName === 'a') {\n debug(`target_element_grandparent_link`);\n // $FlowFixMe\n return button.parentElement && button.parentElement.parentElement;\n }\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { flush as flushLogs, prefix } from 'beaver-logger/client';\n\nimport { config } from '../config';\nimport { ENV } from '../constants';\nimport { urlWillRedirectPage, redirect as redir } from '../lib';\n\nimport { LOG_PREFIX } from './constants';\n\nconst { warn } = prefix(LOG_PREFIX);\n\nlet redirected = false;\n\nexport function logRedirect(location : string) {\n\n if (redirected) {\n warn(`multiple_redirects`);\n }\n\n if (urlWillRedirectPage(location)) {\n redirected = true;\n }\n\n flushLogs();\n}\n\nexport function redirect(url : string) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n if (!url) {\n throw new Error(`Redirect url undefined`);\n }\n\n if (config.env === ENV.TEST && urlWillRedirectPage(url)) {\n return redir(window, `#fullpageRedirect?url=${ url }`);\n }\n\n logRedirect(url);\n\n return redir(window, url);\n });\n}\n\nexport function isToken(item : string) : boolean {\n return Boolean(item && item.match(/^(EC-)?[A-Z0-9]{17}$/));\n}\n\n\n/* Parse Token\n -----------\n\n We are passed either a token, or a url containing the token. In order to run the new checkout component we need to\n strip out the token from the url in order to pass it down as a prop\n*/\n\nexport function parseToken(token : string) : ?string {\n\n if (!token) {\n return;\n }\n\n token = decodeURIComponent(decodeURIComponent(token));\n\n // We may get lucky and be passed a token straight off the bar\n\n if (token.match(/^(EC-)?[A-Z0-9]{17}$/)) {\n return token;\n }\n\n // Otherwise strip the token from the url we're sent\n\n let match = token.match(/token=((EC-)?[A-Z0-9]{17})/);\n\n if (match) {\n return match[1];\n }\n\n match = token.match(/(EC-[A-Z0-9]{17})/);\n\n if (match) {\n return match[1];\n }\n}\n\nexport function hasToken(item : string) : boolean {\n return Boolean(parseToken(item));\n}\n","/* @flow */\n\nimport { prefix } from 'beaver-logger/client';\n\nimport { config } from '../config';\nimport { ENV } from '../constants';\nimport { getElements } from '../lib';\n\nimport { normalizeLocale } from './common';\nimport { LOG_PREFIX } from './constants';\n\nconst { info, warn } = prefix(LOG_PREFIX);\n\nexport function normalizeOptions(options : Object) {\n\n // Normalize environment\n\n if (options.environment) {\n\n if (options.environment === 'live') {\n options.environment = ENV.PRODUCTION;\n }\n\n if (!config.paypalUrls[options.environment]) {\n warn('invalid_env', { badenv: options.environment });\n options.environment = config.env;\n }\n }\n\n // If we're passed a single button in options.button, turn it into an array\n\n if (options.button && !Array.isArray(options.button)) {\n info(`options_button_single_button_passed`);\n\n options.button = [ options.button ];\n }\n\n // If we're passed an array of elements in options.buttons, switch it over to options.button\n\n if (options.buttons && getElements(options.buttons).length) {\n info(`options_buttons_with_elements_passed`);\n\n options.button = options.buttons;\n delete options.buttons;\n }\n\n // If we're passed an empty options.button array, clear the value\n\n if (options.button && options.button.length === 0) {\n info(`options_button_empty`);\n\n delete options.button;\n }\n\n // If we're passed options.button and options.container, concat both under button\n\n if (options.button && options.container) {\n info(`options_button_and_container_passed`, { button: options.button, container: options.container });\n\n options.button = options.button.concat(options.container);\n delete options.container;\n }\n\n // Normalize button selectors to elements\n\n if (options.button) {\n const button = getElements(options.button);\n\n if (button.length) {\n options.button = button;\n\n } else {\n warn(`options_button_element_not_found`, { element: JSON.stringify(options.button) });\n delete options.button;\n }\n }\n\n // Normalize options.button to options.buttons\n\n if (options.button) {\n\n options.buttons = options.button.map(button => {\n return {\n button,\n click: options.click,\n condition: options.condition\n };\n });\n\n delete options.click;\n delete options.condition;\n delete options.button;\n }\n\n // Normalize array of buttons\n\n else if (options.buttons && Array.isArray(options.buttons)) {\n\n const buttons = [];\n\n options.buttons.forEach(button => {\n\n if (!button) {\n return;\n }\n\n if (button.container && button.container !== options.container) {\n warn(`mismatched_container_and_button_passed`, { options: options.container, button: button.container });\n }\n\n getElements(button.container || button.button).forEach(element => {\n buttons.push({\n\n [ button.container ? 'container' : 'button' ]: element,\n\n click: button.click || options.click,\n condition: button.condition || options.condition,\n type: button.type || options.type,\n locale: button.locale || options.locale,\n color: button.color || options.color,\n shape: button.shape || options.shape,\n size: button.size || options.size\n });\n });\n });\n\n delete options.buttons;\n delete options.click;\n delete options.condition;\n delete options.button;\n delete options.type;\n delete options.locale;\n delete options.color;\n delete options.shape;\n delete options.size;\n\n if (buttons.length) {\n options.buttons = buttons;\n }\n }\n\n // Otherwise normalize container into array of buttons\n\n else if (options.container && !Array.isArray(options.buttons)) {\n\n const buttons = [];\n\n getElements(options.container).forEach((container, i) => {\n buttons.push({\n container,\n click: options.click,\n condition: options.condition,\n type: Array.isArray(options.type) ? options.type[i] : options.type,\n locale: Array.isArray(options.locale) ? options.locale[i] : options.locale,\n color: Array.isArray(options.color) ? options.color[i] : options.color,\n shape: Array.isArray(options.shape) ? options.shape[i] : options.shape,\n size: Array.isArray(options.size) ? options.size[i] : options.size\n });\n });\n\n delete options.container;\n delete options.buttons;\n delete options.click;\n delete options.condition;\n delete options.button;\n delete options.type;\n delete options.locale;\n delete options.color;\n delete options.shape;\n delete options.size;\n\n if (buttons.length) {\n options.buttons = buttons;\n }\n }\n\n if (!options.buttons) {\n options.buttons = [];\n }\n}\n\nexport function setupConfig(options : Object) {\n\n if (options.environment && config.paypalUrls[options.environment]) {\n config.env = options.environment;\n }\n\n if (options.locale) {\n config.locale = normalizeLocale(options.locale);\n config.customCountry = true;\n }\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { prefix, flush as flushLogs } from 'beaver-logger/client';\nimport formSerialize from 'form-serialize';\n\nimport { Checkout } from '../checkout';\nimport { config } from '../config';\nimport { ENV, FPTI } from '../constants';\nimport { supportsPopups, once, safeJSON, extendUrl, stringifyError, request } from '../lib';\n\nimport { setupPostBridge } from './postBridge';\nimport { isLegacyEligible } from './eligibility';\nimport { LOG_PREFIX } from './constants';\nimport { renderButtons, getHijackTargetElement } from './button';\nimport { redirect, logRedirect, parseToken } from './util';\nimport { normalizeOptions, setupConfig } from './options';\n\nconst { info, debug, warn, error, track } = prefix(LOG_PREFIX);\n\nexport const checkout = {};\nexport const apps = { checkout, Checkout: checkout };\n\nexport function reset() {\n\n debug('reset');\n\n // Once our callback has been called, we can set the global methods to their original values\n\n checkout.initXO = initXO; // eslint-disable-line no-use-before-define\n checkout.startFlow = startFlow; // eslint-disable-line no-use-before-define\n checkout.closeFlow = closeFlow; // eslint-disable-line no-use-before-define\n}\n\ncheckout.reset = reset;\n\n// $FlowFixMe\nObject.defineProperty(checkout, 'urlPrefix', {\n get() : string {\n return `${ config.checkoutUrl }${ config.checkoutUrl.indexOf('?') === -1 ? '?' : '&' }token=`;\n }\n});\n\nfunction matchUrlAndPaymentToken(item) : { url : string, paymentToken : ?string } {\n\n if (!item || !item.trim()) {\n error(`startflow_no_url_or_token`, { item });\n throw new Error(`startflow_no_url_or_token`);\n }\n\n\n const paymentToken = parseToken(item);\n let url = (paymentToken && paymentToken === item) ? '' : item;\n\n if (url) {\n\n if (!url.match(/^https?:\\/\\/|^\\//)) {\n if (paymentToken) {\n info(`startflow_relative_url_with_token`, { url });\n } else {\n info(`startflow_relative_url_no_token`, { url });\n }\n\n if (url.toLowerCase().indexOf('ec-') === 0 && paymentToken) {\n url = `${ config.checkoutUrl }${ url }`;\n }\n\n } else if (paymentToken) {\n if (url.indexOf('.paypal.com') !== -1) {\n debug(`startflow_paypalurl_with_token`, { url });\n } else {\n debug(`startflow_url_with_token`, { url });\n }\n\n } else {\n debug(`startflow_url_no_token`, { url });\n }\n\n } else {\n\n if (paymentToken) {\n url = extendUrl(config.checkoutUrl, { token: paymentToken });\n debug(`startflow_with_token`, { url });\n } else {\n error(`startflow_no_url_or_token`, { url });\n throw new Error(`Could not determine url or token from \"${ item }\"`);\n }\n }\n\n return { paymentToken, url };\n}\n\nfunction checkUrlAgainstEnv(url : string) {\n\n const paypalUrls = config.paypalUrls;\n\n for (const env of Object.keys(paypalUrls)) {\n const paypalUrl = paypalUrls[env];\n\n if (env === ENV.TEST || env === ENV.DEMO) {\n continue;\n }\n\n if (env !== config.env) {\n if (url.indexOf(paypalUrl) === 0 || url.indexOf(paypalUrl.replace('//www.', '//')) === 0) {\n warn(`mismatched_env_startflow_url`, { env: config.env, url });\n redirect(url);\n throw new Error(`${ url } is not a ${ config.env } url`);\n }\n }\n }\n}\n\n/* Get Token\n ---------\n\n Normally in the component world, getToken would be a user-provided function which passes a callback, and expects\n that callback to be called with either an error, or an EC token.\n\n In our case, we can emulate these callback calls by setting over the startFlow and closeFlow globals, and using\n them as our success and failure cases.\n\n Note: this method is set to `precall: true` mode. This means that it will be called the moment the component is\n inited on the page. This means that the moment we initialize, we're ready to start accepting a token via one of the\n global methods.\n*/\n\nfunction awaitPaymentTokenAndUrl(event? : ?Event, targetElement? : ?HTMLElement) : { url : ZalgoPromise, paymentToken : ZalgoPromise } {\n\n const paymentTokenAndUrl = new ZalgoPromise((resolve) => {\n\n if (event && targetElement && (Math.random() < 0.001 || window.enablev3ajax)) {\n let method;\n let url;\n let body;\n let contentType;\n\n info('gettoken_targetelement_start');\n flushLogs();\n \n if (targetElement.tagName.toLowerCase() === 'a') {\n method = 'get';\n url = targetElement.getAttribute('href');\n } else if (targetElement.tagName.toLowerCase() === 'form') {\n method = (targetElement.getAttribute('method') || 'get').toLowerCase();\n url = targetElement.getAttribute('action');\n body = formSerialize(targetElement);\n contentType = targetElement.getAttribute('enctype') || 'application/x-www-form-urlencoded';\n }\n \n if (method && url) {\n event.preventDefault();\n\n request({\n method,\n url,\n body,\n headers: {\n 'Accept': 'application/paypal-json-token',\n 'Content-type': contentType || ''\n }\n }).then(json => {\n const urlAndPaymentToken = matchUrlAndPaymentToken(json.token);\n resolve(urlAndPaymentToken);\n info('gettoken_targetelement_success', urlAndPaymentToken);\n flushLogs();\n\n }).catch(err => {\n warn('gettoken_targetelement_error', {\n // $FlowFixMe\n err: err.stack || err.toString()\n });\n flushLogs();\n });\n \n } else {\n warn('gettoken_targetelement_no_method_or_url');\n flushLogs();\n }\n }\n\n\n checkout.initXO = () => {\n warn(`gettoken_initxo`);\n };\n\n // startFlow is our 'success' case - we get a token, and we can pass it back to the caller\n\n checkout.startFlow = once((item) => {\n debug(`gettoken_startflow`, { item });\n\n const { url, paymentToken } = matchUrlAndPaymentToken(item);\n\n checkUrlAgainstEnv(url);\n\n return resolve({ url, paymentToken });\n });\n });\n\n const url = paymentTokenAndUrl.then(result => result.url);\n const paymentToken = paymentTokenAndUrl.then(result => result.paymentToken);\n\n return { url, paymentToken };\n}\n\n\n/* Init PayPal Checkout\n --------------------\n\n Initialize the Checkout component with some standard props:\n\n - Pass in env from global state (saved during setup() call)\n - Return to success url on payment authorize\n - Return to cancel url on cancel\n*/\n\nlet paypalCheckoutInited = false;\nlet closeFlowCalled = false;\n\nfunction initPayPalCheckout(props = {}) : Object {\n\n info(`init_checkout`);\n\n if (paypalCheckoutInited && config.env !== ENV.TEST) {\n warn(`multiple_init_paypal_checkout`);\n }\n\n if (closeFlowCalled) {\n debug(`init_after_closeflow`);\n }\n\n paypalCheckoutInited = true;\n\n const paypalCheckout = Checkout.init({\n\n onAuthorize(data, actions) : ZalgoPromise {\n info(`payment_authorized`);\n logRedirect(data.returnUrl);\n return actions.redirect(window);\n },\n\n onCancel(data, actions) : ?ZalgoPromise {\n if (data.cancelUrl) {\n info(`payment_canceled`);\n logRedirect(data.cancelUrl);\n return actions.redirect(window);\n }\n },\n\n fallback(url) : ZalgoPromise {\n error(`fallback_handler`, { url });\n this.destroy();\n return redirect(url);\n },\n\n ...props\n });\n\n checkout.closeFlow = (closeUrl? : string) => {\n warn(`closeflow`);\n\n closeFlowCalled = true;\n\n reset();\n\n paypalCheckout.destroy();\n\n if (closeUrl) {\n warn(`closeflow_with_url`, { closeUrl });\n return redirect(closeUrl);\n }\n };\n\n return paypalCheckout;\n}\n\nfunction renderPayPalCheckout(props : Object = {}, hijackTarget? : ?Element) : ZalgoPromise {\n\n const urlProp = ZalgoPromise.resolve(props.url);\n\n const paymentToken = new ZalgoPromise(resolve => {\n props.init = (data) => {\n resolve(data.paymentToken);\n };\n });\n\n const errorHandler = once(err => {\n\n error(`component_error`, { error: stringifyError(err) });\n\n if (hijackTarget) {\n warn(`render_error_hijack_revert_target`);\n hijackTarget.removeAttribute('target');\n }\n\n // eslint-disable-next-line promise/no-promise-in-callback\n urlProp.then(url => {\n warn(`render_error_redirect_using_url`);\n return redirect(url);\n });\n\n // eslint-disable-next-line promise/no-promise-in-callback\n paymentToken.then(token => {\n warn(`render_error_redirect_using_token`);\n return redirect(extendUrl(config.checkoutUrl, { token }));\n });\n });\n\n props.onError = errorHandler;\n\n let paypalCheckout;\n\n if (hijackTarget) {\n\n delete props.url;\n\n paypalCheckout = initPayPalCheckout(props);\n\n paypalCheckout.hijack(hijackTarget);\n paypalCheckout.runTimeout();\n\n urlProp.then(url => {\n warn(`hijack_then_url_passed`);\n paypalCheckout.loadUrl(url);\n });\n\n } else {\n\n paypalCheckout = initPayPalCheckout(props);\n }\n\n const render = paypalCheckout.render(null, !hijackTarget);\n\n checkout.win = paypalCheckout.window;\n\n return render.catch(errorHandler);\n}\n\n\nfunction handleClick(clickHandler, event) {\n debug(`button_click_handler`);\n\n try {\n clickHandler(event);\n } catch (err) {\n error(`click_handler_error`, { error: stringifyError(err) });\n }\n}\n\nfunction handleClickHijack(event, element) : void {\n\n const targetElement = getHijackTargetElement(element);\n\n if (!targetElement) {\n return error(`target_element_not_found`);\n }\n\n info(`init_paypal_checkout_hijack`);\n\n const { url, paymentToken } = awaitPaymentTokenAndUrl(event, targetElement);\n\n let token;\n \n paymentToken.then(result => {\n token = result;\n });\n\n renderPayPalCheckout({ url, payment: () => ZalgoPromise.resolve(token) }, targetElement);\n}\n\nfunction listenClick(container, button, clickHandler, condition, tracker) : void {\n\n const element : HTMLElement = (container.tagName.toLowerCase() === 'a') ? container : button;\n\n const isClick = (typeof clickHandler === 'function');\n\n if (element.hasAttribute('data-paypal-click-listener')) {\n return warn(`button_already_has_paypal_click_listener`);\n }\n\n element.setAttribute('data-paypal-click-listener', '');\n\n const targetElement = getHijackTargetElement(element);\n\n if (targetElement && isClick) {\n info(`button_link_or_form`);\n }\n\n element.addEventListener('click', (event : Event) => {\n\n tracker();\n\n const eligible = isLegacyEligible();\n\n if (supportsPopups()) {\n debug(`click_popups_supported`);\n\n if (!eligible) {\n debug(`click_popups_supported_but_ineligible`);\n }\n } else {\n debug(`click_popups_not_supported`);\n\n if (eligible) {\n debug(`click_popups_not_supported_but_eligible`);\n }\n }\n\n if (!isClick) {\n\n if (!eligible) {\n return debug(`ineligible_listenclick`);\n }\n }\n\n info(`button_click`);\n\n if (typeof condition === 'function') {\n if (condition.call()) {\n info(`button_click_condition_enabled`);\n } else {\n return info(`button_click_condition_disabled`);\n }\n }\n\n if (isClick) {\n return handleClick(clickHandler, event);\n\n } else {\n return handleClickHijack(event, element);\n }\n });\n}\n\nfunction instrumentButtonRender(type : string) {\n info(`render_${ type }_button`);\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_RENDER,\n [ FPTI.KEY.BUTTON_TYPE ]: type\n });\n\n flushLogs();\n}\n\nfunction instrumentButtonClick(type : string) {\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_CLICK,\n [ FPTI.KEY.BUTTON_TYPE ]: type\n });\n flushLogs();\n}\n\n\n/* Setup\n -----\n\n Emulate window.paypal.checkout.setup.\n\n The purpose of this method is to:\n\n - Set up configuration for the incontext flow\n - Render a button to initiate the checkout window\n*/\n\nlet setupCalled = false;\n\nexport function setup(id : string, options : Object = {}) : ZalgoPromise {\n\n id = id || 'merchant';\n\n info(`setup`, {\n id,\n env: options.environment,\n options: safeJSON(options)\n });\n\n if (setupCalled) {\n debug(`setup_called_multiple_times`);\n }\n\n setupCalled = true;\n\n normalizeOptions(options);\n setupConfig(options);\n\n setupPostBridge(config.env);\n\n return ZalgoPromise.try(() => {\n\n // If there are no buttons passed, can only assume there's a custom paypal button with a custom listener\n\n if (!options.buttons.length) {\n return instrumentButtonRender(FPTI.BUTTON_TYPE.CUSTOM);\n }\n\n // Otherwise render whatever buttons we were asked to, and listen for them to be clicked\n\n return renderButtons(id, options.buttons).then(buttons => {\n\n buttons.forEach(button => {\n instrumentButtonRender(button.type);\n\n listenClick(button.container, button.element, button.click, button.condition, () => {\n instrumentButtonClick(button.type);\n });\n });\n });\n });\n}\n\ncheckout.setup = setup;\n\n/* Init XO\n -------\n\n Emulate paypal.checkout.initXO\n\n Normally this would be used only to open the checkout page. But here we can just kick off the whole flow, since\n getToken will handle loading the token into the window for us.\n*/\n\nfunction initXO() : void {\n\n debug(`initxo`);\n\n if (!isLegacyEligible()) {\n return debug(`ineligible_initxo`);\n }\n\n const { url, paymentToken } = awaitPaymentTokenAndUrl();\n\n info(`init_paypal_checkout_initxo`);\n\n renderPayPalCheckout({ url, payment: () => paymentToken });\n}\n\ncheckout.initXO = initXO;\n\n\n/* Start Flow\n ----------\n\n Emulate paypal.checkout.startFlow\n\n Normally this would be used to load the url into the browser after the window has already been opened. Again, we\n can just kick off the whole flow here, on the off chance that a merchant calls us on button click. Normally this\n method will have been patched over in getToken.\n*/\n\nfunction startFlow(item : string) {\n debug(`startflow`, { item });\n\n const { paymentToken, url } = matchUrlAndPaymentToken(item);\n\n checkUrlAgainstEnv(url);\n\n if (!isLegacyEligible()) {\n debug(`ineligible_startflow_global`, { url });\n redirect(url);\n return;\n }\n\n info(`init_paypal_checkout_startflow`);\n\n renderPayPalCheckout({ url, payment: () => ZalgoPromise.resolve(paymentToken) });\n}\n\ncheckout.startFlow = startFlow;\n\n\n/* Close Flow\n ----------\n\n Emulate paypal.checkout.closeFlow\n\n Close the component in case of any error on the merchant side.\n*/\n\nfunction closeFlow(closeUrl? : string) {\n warn(`closeflow_not_opened`);\n\n if (closeUrl) {\n warn(`closeflow_with_url`, { closeUrl });\n redirect(closeUrl);\n\n }\n}\n\ncheckout.closeFlow = closeFlow;\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { debug } from 'beaver-logger/client';\nimport { bridge } from 'post-robot/src';\n\nimport { config } from '../config';\nimport { openMetaFrame, noop } from '../lib';\n\nexport function setupPostBridge(env : string) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n const metaFrameDomain : string = config.paypalDomains[env];\n\n if (!bridge || !bridge.needsBridge({ domain: metaFrameDomain })) {\n return debug(`post_bridge_not_required`, { env });\n }\n\n debug(`setup_post_bridge`, { env });\n\n return openMetaFrame(env).then(noop);\n });\n}\n","/* @flow */\n\nimport { prefix } from 'beaver-logger/client';\n\nimport { onDocumentReady } from '../lib';\nimport { ENV } from '../constants';\n\nimport { LOG_PREFIX, ATTRIBUTES, CLASSES } from './constants';\nimport { setup } from './interface';\n\nconst { error, debug } = prefix(LOG_PREFIX);\n\n/* PayPal Checkout Ready\n ---------------------\n\n Call window.paypalCheckoutReady on document ready, if it has been defined by the merchant\n*/\n\nfunction invokeReady(method) {\n\n onDocumentReady(() => {\n debug(`paypal_checkout_ready`);\n setTimeout(() => {\n\n if (!window.paypal) {\n error(`paypal_checkout_ready_no_window_paypal`);\n }\n\n method();\n }, 1);\n });\n}\n\nfunction onKey(obj : Object, key : string, callback : Function) {\n\n if (!obj) {\n return;\n }\n\n let value = obj[key];\n\n if (value) {\n value = callback(value) || value;\n }\n\n try {\n\n delete obj[key];\n\n Object.defineProperty(obj, key, {\n\n configurable: true,\n\n set(item) {\n value = item;\n\n if (value) {\n value = callback(value) || value;\n }\n },\n\n get() : mixed {\n return value;\n }\n });\n\n } catch (err) {\n // pass\n }\n}\n\nonKey(window, 'paypalCheckoutReady', method => {\n\n if (typeof method === 'function') {\n\n const oneTimeReady = function () : void {\n if (!method.called) {\n method.called = true;\n return method.apply(this, arguments);\n }\n };\n\n invokeReady(oneTimeReady);\n\n return oneTimeReady;\n }\n});\n\n\n/* Scan for buttons\n ----------------\n\n Scan for any buttons on the page with a data-paypal-button attribute and auto-attach the PaypalCheckout component to them\n*/\n\nonDocumentReady(() => {\n\n const buttons = Array.prototype.slice.call(document.querySelectorAll(`[${ ATTRIBUTES.BUTTON }]`));\n\n if (buttons && buttons.length) {\n debug(`data_paypal_button`, { number: buttons.length });\n\n for (const button of buttons) {\n\n const id = button.getAttribute(ATTRIBUTES.MERCHANT_ID);\n\n let environment;\n\n if (button.hasAttribute(ATTRIBUTES.ENV)) {\n environment = button.getAttribute(ATTRIBUTES.ENV);\n } else if (button.hasAttribute(ATTRIBUTES.SANDBOX)) {\n environment = ENV.SANDBOX;\n }\n\n setup(id, { environment, button });\n }\n }\n\n // Show hidden buttons\n\n Array.prototype.slice.call(document.getElementsByClassName(CLASSES.HIDDEN_BUTTON)).forEach(el => {\n el.className = el.className.replace(CLASSES.HIDDEN_BUTTON, '');\n });\n});\n","/* @flow */\n\nimport './ready'; // eslint-disable-line import/no-unassigned-import\n\nexport * from './button';\nexport * from './constants';\nexport * from './interface';\n"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/checkout.4.0.307.js b/dist/checkout.4.0.308.js similarity index 99% rename from dist/checkout.4.0.307.js rename to dist/checkout.4.0.308.js index dbd7bb88e8..ee246ddef9 100644 --- a/dist/checkout.4.0.307.js +++ b/dist/checkout.4.0.308.js @@ -1447,7 +1447,7 @@ function initLogger() { country: config["a" /* config */].locale.country, lang: config["a" /* config */].locale.lang, uid: Object(session["c" /* getSessionID */])(), - ver: "4.0.307" + ver: "4.0.308" }; }); Object(client["a" /* addHeaderBuilder */])(function () { @@ -2024,7 +2024,7 @@ function isPayPalObjects() { } function getScriptVersion() { if (false) {} else { - return false ? undefined : "4.0.307"; + return false ? undefined : "4.0.308"; } } function getCurrentScriptUrl() { @@ -2040,7 +2040,7 @@ function getCurrentScriptUrl() { return scriptUrl; } - return "https://www.paypalobjects.com/api/checkout." + "4.0.307" + ( false ? undefined : '') + ".js"; + return "https://www.paypalobjects.com/api/checkout." + "4.0.308" + ( false ? undefined : '') + ".js"; } function getDomainSetting(name, def) { var hostname = window.xchild ? window.xchild.getParentDomain() : Object(cross_domain_utils_src["h" /* getDomain */])(); @@ -2405,10 +2405,10 @@ function getDefaultEnv() { var config = { locales: constants["z" /* LOCALE */], - scriptUrl: false ? undefined : "//www.paypalobjects.com/api/" + "checkout.4.0.307.js", + scriptUrl: false ? undefined : "//www.paypalobjects.com/api/" + "checkout.4.0.308.js", // eslint-disable-next-line security/detect-unsafe-regex, unicorn/no-unsafe-regex paypal_domain_regex: /^(https?|mock):\/\/[a-zA-Z0-9_.-]+\.paypal\.com(:\d+)?$/, - version: "4.0.307", + version: "4.0.308", cors: true, env: getDefaultEnv(), state: 'checkoutjs', @@ -20614,7 +20614,7 @@ function beacon(event, payload) { try { payload.event = "ppxo_" + event; - payload.version = "4.0.307"; + payload.version = "4.0.308"; payload.host = window.location.host; payload.uid = Object(_session__WEBPACK_IMPORTED_MODULE_3__[/* getSessionID */ "c"])(); payload.appName = APP_NAME; @@ -20670,7 +20670,7 @@ function checkpoint(name, payload, options) { var checkpointName = name; if (options.version) { - var version = "4.0.307".replace(/[^0-9]+/g, '_'); + var version = "4.0.308".replace(/[^0-9]+/g, '_'); checkpointName = version + "_" + checkpointName; } @@ -20687,7 +20687,7 @@ var FPTI_URL = 'https://t.paypal.com/ts'; function buildPayload() { return { - v: "checkout.js." + "4.0.307", + v: "checkout.js." + "4.0.308", t: Date.now(), g: new Date().getTimezoneOffset(), flnm: 'ec:hermes:', @@ -25811,17 +25811,17 @@ if ( true && !Object(_lib_security__WEBPACK_IMPORTED_MODULE_3__[/* isPayPalDomai throw new Error("Do not integrate with versioned script url"); } -if (window.paypal && window.paypal.version === "4.0.307") { +if (window.paypal && window.paypal.version === "4.0.308") { Object(_lib_beacon__WEBPACK_IMPORTED_MODULE_0__[/* beacon */ "a"])('bootstrap_already_loaded_same_version', { - version: "4.0.307" + version: "4.0.308" }); - throw new Error("PayPal Checkout Integration Script with same version (" + "4.0.307" + ") already loaded on page"); -} else if (window.paypal && window.paypal.version && window.paypal.version !== "4.0.307" && window.paypal.Button && window.paypal.Button.render) { + throw new Error("PayPal Checkout Integration Script with same version (" + "4.0.308" + ") already loaded on page"); +} else if (window.paypal && window.paypal.version && window.paypal.version !== "4.0.308" && window.paypal.Button && window.paypal.Button.render) { Object(_lib_beacon__WEBPACK_IMPORTED_MODULE_0__[/* beacon */ "a"])('bootstrap_already_loaded_different_version', { existingVersion: window.paypal.version, - version: "4.0.307" + version: "4.0.308" }); - throw new Error("PayPal Checkout Integration Script with different version (" + window.paypal.version + ") already loaded on page, current version: " + "4.0.307"); + throw new Error("PayPal Checkout Integration Script with different version (" + window.paypal.version + ") already loaded on page, current version: " + "4.0.308"); } else { try { var _interface = __webpack_require__(66); @@ -27651,7 +27651,7 @@ var BUTTON_CONFIG = (_BUTTON_CONFIG = {}, _BUTTON_CONFIG[constants["s" /* DEFAUL allowPrimaryHorizontal: true }, _BUTTON_CONFIG[constants["f" /* BUTTON_LABEL */].PAY] = { label: "{ content: pay }", - logoLabel: "{ logo: " + constants["h" /* BUTTON_LOGO */].PP + " } { logo: " + constants["h" /* BUTTON_LOGO */].PAYPAL + " }", + logoLabel: "{ logo: " + constants["h" /* BUTTON_LOGO */].PAYPAL + " }", allowPrimary: true, allowPrimaryVertical: true, allowPrimaryHorizontal: true @@ -35051,7 +35051,7 @@ function componentTemplate(_ref19) { }); var scriptNode = renderScript(); var labelPowerByPayPal = cards.length > 0 ? renderPowerByPaypalLogo(normalizeProps(props)) : null; - return Object(jsx["c" /* jsxToHTML */])("div", Object(esm_extends["a" /* default */])({}, (_ref20 = {}, _ref20[constants["c" /* ATTRIBUTE */].VERSION] = "4.0.307", _ref20), { + return Object(jsx["c" /* jsxToHTML */])("div", Object(esm_extends["a" /* default */])({}, (_ref20 = {}, _ref20[constants["c" /* ATTRIBUTE */].VERSION] = "4.0.308", _ref20), { class: class_CLASS.CONTAINER + " " + getCommonButtonClasses({ layout: layout, shape: shape, @@ -36794,7 +36794,7 @@ var postRobot = post_robot_src; var onPossiblyUnhandledException = zalgo_promise_src["a" /* ZalgoPromise */].onPossiblyUnhandledException; -var interface_version = "4.0.307"; +var interface_version = "4.0.308"; var interface_checkout; var apps; @@ -38122,4 +38122,4 @@ Object(lib["K" /* onDocumentReady */])(function () { /***/ }) /******/ ]); -//# sourceMappingURL=checkout.4.0.307.js.map \ No newline at end of file +//# sourceMappingURL=checkout.4.0.308.js.map \ No newline at end of file diff --git a/dist/checkout.4.0.308.js.map b/dist/checkout.4.0.308.js.map new file mode 100644 index 0000000000..a8fed2afc7 --- /dev/null +++ b/dist/checkout.4.0.308.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/constants/button.js","webpack:///./src/constants/checkout.js","webpack:///./src/constants/funding.js","webpack:///./src/constants/misc.js","webpack:///./src/constants/fpti.js","webpack:///./src/constants/country.js","webpack:///./src/constants/locale.js","webpack:///./src/constants/index.js","webpack:///./src/lib/jsx.js","webpack:///./node_modules/zalgo-promise/src/utils.js","webpack:///./node_modules/zalgo-promise/src/exceptions.js","webpack:///./node_modules/zalgo-promise/src/flush.js","webpack:///./node_modules/zalgo-promise/src/promise.js","webpack:///./node_modules/zalgo-promise/src/index.js","webpack:///./src/lib/proxy.js","webpack:///./src/lib/logger.js","webpack:///./src/lib/eligibility.js","webpack:///./src/lib/errors.js","webpack:///./src/lib/http.js","webpack:///./src/lib/throttle.js","webpack:///./src/lib/script.js","webpack:///./src/lib/meta.js","webpack:///./src/lib/funding.js","webpack:///./src/lib/index.js","webpack:///./src/config/config.js","webpack:///./src/config/index.js","webpack:///./node_modules/beaver-logger/client/util.js","webpack:///./node_modules/beaver-logger/client/builders.js","webpack:///./node_modules/beaver-logger/client/config.js","webpack:///./node_modules/beaver-logger/client/logger.js","webpack:///./node_modules/beaver-logger/client/performance.js","webpack:///./node_modules/beaver-logger/client/init.js","webpack:///./node_modules/beaver-logger/client/transitions.js","webpack:///./node_modules/beaver-logger/client/interface.js","webpack:///./node_modules/beaver-logger/client/index.js","webpack:///./node_modules/zoid/src/lib/util.js","webpack:///./node_modules/zoid/src/lib/fn.js","webpack:///./node_modules/zoid/src/lib/dom.js","webpack:///./node_modules/zoid/src/lib/promise.js","webpack:///./node_modules/zoid/src/lib/css.js","webpack:///./node_modules/zoid/src/lib/decorators.js","webpack:///./node_modules/zoid/src/lib/logger.js","webpack:///./node_modules/zoid/src/lib/global.js","webpack:///./node_modules/zoid/src/lib/index.js","webpack:///./node_modules/cross-domain-utils/src/util.js","webpack:///./node_modules/cross-domain-utils/src/constants.js","webpack:///./node_modules/cross-domain-utils/src/utils.js","webpack:///./node_modules/cross-domain-utils/src/types.js","webpack:///./node_modules/cross-domain-utils/src/index.js","webpack:///./node_modules/zoid/src/constants.js","webpack:///./node_modules/post-robot/src/global.js","webpack:///./node_modules/post-robot/src/conf/constants.js","webpack:///./node_modules/post-robot/src/conf/config.js","webpack:///./node_modules/post-robot/src/conf/index.js","webpack:///./node_modules/@babel/runtime/helpers/esm/extends.js","webpack:///./src/lib/util.js","webpack:///./node_modules/post-robot/src/drivers/send/strategies.js","webpack:///./node_modules/post-robot/src/drivers/send/index.js","webpack:///./node_modules/post-robot/src/drivers/listeners.js","webpack:///./node_modules/post-robot/src/drivers/receive/types.js","webpack:///./node_modules/post-robot/src/drivers/receive/index.js","webpack:///./node_modules/post-robot/src/drivers/index.js","webpack:///./node_modules/post-robot/src/public/client.js","webpack:///./node_modules/post-robot/src/public/server.js","webpack:///./node_modules/post-robot/src/public/config.js","webpack:///./node_modules/post-robot/src/public/index.js","webpack:///./node_modules/post-robot/src/clean.js","webpack:///./node_modules/post-robot/src/interface.js","webpack:///./node_modules/post-robot/src/index.js","webpack:///./node_modules/post-robot/src/lib/util.js","webpack:///./node_modules/post-robot/src/lib/serialize.js","webpack:///./node_modules/post-robot/src/lib/ready.js","webpack:///./node_modules/post-robot/src/lib/index.js","webpack:///./src/compat/fallback.js","webpack:///./src/checkout/component.js","webpack:///./src/checkout/index.js","webpack:///./node_modules/belter/src/device.js","webpack:///./node_modules/belter/src/util.js","webpack:///./node_modules/belter/src/constants.js","webpack:///./node_modules/belter/src/dom.js","webpack:///./node_modules/belter/src/storage.js","webpack:///./node_modules/belter/src/experiment.js","webpack:///./node_modules/belter/src/global.js","webpack:///./node_modules/belter/src/http.js","webpack:///./node_modules/belter/src/types.js","webpack:///./node_modules/belter/src/decorators.js","webpack:///./node_modules/belter/src/css.js","webpack:///./node_modules/belter/src/test.js","webpack:///./node_modules/belter/src/index.js","webpack:///./node_modules/cross-domain-safe-weakmap/src/native.js","webpack:///./node_modules/cross-domain-safe-weakmap/src/util.js","webpack:///./node_modules/cross-domain-safe-weakmap/src/weakmap.js","webpack:///./node_modules/cross-domain-safe-weakmap/src/index.js","webpack:///./src/resources/fundingLogos/p24.jsx","webpack:///./src/resources/fundingLogos/sofort.jsx","webpack:///./src/resources/fundingLogos/ideal.jsx","webpack:///./src/resources/fundingLogos/giropay.jsx","webpack:///./src/resources/fundingLogos/eps.jsx","webpack:///./src/resources/fundingLogos/mybank.jsx","webpack:///./src/resources/fundingLogos/bancontact.jsx","webpack:///./src/resources/fundingLogos/payu.jsx","webpack:///./src/resources/fundingLogos/verkkopankki.jsx","webpack:///./src/resources/fundingLogos/blik.jsx","webpack:///./src/resources/fundingLogos/trustly.jsx","webpack:///./src/resources/fundingLogos/maxima.jsx","webpack:///./src/resources/fundingLogos/boleto.jsx","webpack:///./src/resources/fundingLogos/oxxo.jsx","webpack:///./src/resources/fundingLogos/paypal.jsx","webpack:///./src/resources/fundingLogos/credit.jsx","webpack:///./src/resources/fundingLogos/index.js","webpack:///./src/resources/cardLogos/index.js","webpack:///./src/resources/index.js","webpack:///./src/lib/session.js","webpack:///./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack:///./node_modules/@babel/runtime/helpers/esm/applyDecoratedDescriptor.js","webpack:///./node_modules/zoid/src/component/base.js","webpack:///./node_modules/zoid/src/component/window.js","webpack:///./node_modules/zoid/src/component/child/props.js","webpack:///./node_modules/zoid/src/component/child/index.js","webpack:///./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack:///./node_modules/zoid/src/component/parent/drivers.js","webpack:///./node_modules/zoid/src/component/parent/validate.js","webpack:///./node_modules/zoid/src/component/parent/props.js","webpack:///./node_modules/zoid/src/component/parent/index.js","webpack:///./node_modules/zoid/src/component/delegate/index.js","webpack:///./node_modules/zoid/src/component/component/validate.js","webpack:///./node_modules/zoid/src/component/component/templates/container.jsx","webpack:///./node_modules/zoid/src/component/component/templates/component.jsx","webpack:///./node_modules/zoid/src/component/component/templates/index.js","webpack:///./node_modules/zoid/src/component/component/props.js","webpack:///./node_modules/zoid/src/component/component/index.js","webpack:///./node_modules/zoid/src/component/index.js","webpack:///./node_modules/zoid/src/interface.js","webpack:///./node_modules/zoid/src/index.js","webpack:///./src/lib/device.js","webpack:///./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack:///./node_modules/post-robot/src/bridge/bridge.js","webpack:///./node_modules/post-robot/src/bridge/common.js","webpack:///./node_modules/post-robot/src/bridge/child.js","webpack:///./node_modules/post-robot/src/bridge/parent.js","webpack:///./node_modules/post-robot/src/bridge/index.js","webpack:///./src/lib/dom.js","webpack:///./src/lib/security.js","webpack:///./node_modules/zoid/src/error.js","webpack:///./src/integrations/braintree.js","webpack:///./src/integrations/index.js","webpack:///./node_modules/zoid/src/drivers/index.js","webpack:///./src/lib/beacon.js","webpack:///./src/checkout/template/componentTemplate.jsx","webpack:///./src/checkout/template/containerStyle/base.js","webpack:///./src/checkout/template/sandboxStyle/base.js","webpack:///./src/checkout/template/containerTemplate.jsx","webpack:///./src/checkout/template/index.js","webpack:///./src/integrations/checkout.js","webpack:///./src/lib/namespace.js","webpack:///./src/checkout/template/containerContent.js","webpack:///./node_modules/hi-base32/src/base32.js","webpack:///./node_modules/zoid/src/drivers/script.js","webpack:///./node_modules/zoid/src/drivers/react.js","webpack:///./node_modules/zoid/src/drivers/vue.js","webpack:///./node_modules/zoid/src/drivers/angular.js","webpack:///./node_modules/zoid/src/drivers/glimmer.js","webpack:///./node_modules/zoid/src/drivers/angular2.js","webpack:///./node_modules/bowser/bowser.min.js","webpack:///./node_modules/post-robot/src/compat/ie.js","webpack:///./node_modules/post-robot/src/compat/index.js","webpack:///./src/resources/fundingLogos/pp_white.svg","webpack:///./src/resources/fundingLogos/pp_blue.svg","webpack:///./src/resources/fundingLogos/pp_black.svg","webpack:///./src/resources/fundingLogos/venmo_white.svg","webpack:///./src/resources/fundingLogos/itau.svg","webpack:///./src/resources/fundingLogos/venmo_blue.svg","webpack:///./src/resources/fundingLogos/elv.svg","webpack:///./src/resources/fundingLogos/elv_white.svg","webpack:///./src/resources/cardLogos/visa.svg","webpack:///./src/resources/cardLogos/amex.svg","webpack:///./src/resources/cardLogos/mastercard.svg","webpack:///./src/resources/cardLogos/maestro.svg","webpack:///./src/resources/cardLogos/discover.svg","webpack:///./src/resources/cardLogos/hiper.svg","webpack:///./src/resources/cardLogos/elo.svg","webpack:///./src/resources/cardLogos/jcb.svg","webpack:///./src/resources/cardLogos/cup.svg","webpack:///./node_modules/form-serialize/index.js","webpack:///./src/load.js","webpack:///./node_modules/post-robot/src/bridge/interface.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///(webpack)/buildin/amd-define.js","webpack:///./src/billing/template/containerTemplate.jsx","webpack:///./src/billing/index.js","webpack:///./src/threeDomainSecure/index.js","webpack:///./src/external/pptm-factory.js","webpack:///./src/external/pptm.js","webpack:///./src/external/index.js","webpack:///./src/api/rest.js","webpack:///./src/experiments.js","webpack:///./src/integrations/popupBridge.js","webpack:///./src/funding/config.js","webpack:///./src/funding/funding.js","webpack:///./src/button/config.js","webpack:///./src/button/props.js","webpack:///./src/button/validate.js","webpack:///./src/button/template/componentStyle/class.js","webpack:///./src/button/template/componentStyle/page.js","webpack:///./src/button/template/componentStyle/button.js","webpack:///./src/button/template/componentStyle/layout.js","webpack:///./src/button/template/componentStyle/branding.js","webpack:///./src/button/template/componentStyle/labels.js","webpack:///./src/button/template/componentStyle/responsive.js","webpack:///./src/button/template/componentStyle/color.js","webpack:///./src/button/template/componentStyle/base.js","webpack:///./src/button/template/componentStyle/index.js","webpack:///./src/button/template/miscComponent.jsx","webpack:///./src/button/template/componentScript.js","webpack:///./src/button/template/content.js","webpack:///./src/button/template/componentTemplate.jsx","webpack:///./src/button/template/containerTemplate.jsx","webpack:///./src/button/template/index.js","webpack:///./src/button/child.js","webpack:///./src/button/component.jsx","webpack:///./src/hacks.js","webpack:///./src/card/index.js","webpack:///./src/setup.js","webpack:///./src/interface.js","webpack:///./src/index.js","webpack:///./src/legacy/constants.js","webpack:///./src/legacy/postBridge.js","webpack:///./src/legacy/eligibility.js","webpack:///./src/legacy/common.js","webpack:///./src/legacy/button.js","webpack:///./src/legacy/util.js","webpack:///./src/legacy/options.js","webpack:///./src/legacy/interface.js","webpack:///./src/legacy/ready.js","webpack:///./src/legacy/index.js"],"names":["BUTTON_STYLE_OPTIONS","LABEL","SIZE","SHAPE","COLOR","LAYOUT","MAXBUTTONS","FUNDINGICONS","BRANDING","TAGLINE","HEIGHT","INSTALLMENTPERIOD","BUTTON_LABEL","PAYPAL","CHECKOUT","PAY","CREDIT","CARD","BUYNOW","INSTALLMENT","VENMO","ITAU","IDEAL","ELV","BANCONTACT","GIROPAY","SOFORT","EPS","MYBANK","P24","PAYU","VERKKOPANKKI","BLIK","TRUSTLY","MAXIMA","BOLETO","OXXO","BUTTON_COLOR","GOLD","BLUE","SILVER","BLACK","DARKBLUE","WHITE","TRANSPARENT","BUTTON_LOGO_COLOR","ANY","BUTTON_SIZE","TINY","SMALL","MEDIUM","LARGE","HUGE","RESPONSIVE","BUTTON_TAGLINE_COLOR","BUTTON_SHAPE","PILL","RECT","BUTTON_BRANDING","BRANDED","UNBRANDED","BUTTON_LAYOUT","HORIZONTAL","VERTICAL","BUTTON_NUMBER","SINGLE","MULTIPLE","BUTTON_LOGO","PP","CHECKOUT_OVERLAY_COLOR","FUNDING","ZIMPLER","VISA","MASTERCARD","AMEX","DISCOVER","SWITCH","MAESTRO","HIPER","ELO","JCB","CUP","COFINOGA","COFIDIS","CETELEM","CBNATIONALE","FUNDING_ELIGIBILITY_REASON","PRIMARY","NOT_ENABLED","SECONDARY_DISALLOWED","OPT_OUT","OPT_IN","DISALLOWED_COUNTRY","DEFAULT_COUNTRY","DEFAULT","REMEMBERED","NEED_OPT_IN","COMMIT_NOT_SET","INVALID_ENV","CARD_PRIORITY","ENV","LOCAL","STAGE","SANDBOX","PRODUCTION","TEST","DEMO","USERS","ALL","SOURCE","MANUAL","BUTTON_FACTORY","LOG_LEVEL","DEBUG","INFO","WARN","ERROR","PAYMENT_TYPE","EC_TOKEN","BA_TOKEN","PAY_ID","PPTM_ID","ATTRIBUTE","BUTTON","FUNDING_SOURCE","VERSION","PLATFORM","DESKTOP","MOBILE","FPTI","KEY","FEED","STATE","TRANSITION","BUTTON_TYPE","SESSION_UID","BUTTON_SESSION_UID","TOKEN","CONTEXT_ID","CONTEXT_TYPE","REFERER","SELLER_ID","DATA_SOURCE","BUTTON_SOURCE","ERROR_CODE","ERROR_DESC","PAGE_LOAD_TIME","EXPERIMENT_NAME","TREATMENT_NAME","TRANSITION_TIME","FUNDING_LIST","FUNDING_COUNT","CHOSEN_FUNDING","BUTTON_WIDTH","MAX_BUTTONS","FUNDING_REMEMBERED","BUTTON_TAGLINE_ENABLED","RESPONSE_DURATION","PAYMENT_FLOW","BUTTON_VERSION","IFRAME","HTML","CUSTOM","BUTTON_SESSION_ID","CHECKOUTJS","LOAD","PPTM","SCRIPT_LOAD","BUTTON_RENDER","BUTTON_LOAD","BUTTON_CLICK","BUTTON_RENDER_INTRANET_MODE","BUTTON_CLICK_INTRANET_MODE","CREATE_PAYMENT","RECIEVE_PAYMENT","CHECKOUT_INIT","CHECKOUT_AUTHORIZE","CHECKOUT_SHIPPING_CHANGE","CHECKOUT_CANCEL","CHECKOUT_ERROR","EXTERNAL_EXPERIMENT","EXTERNAL_EXPERIMENT_COMPLETE","PPTM_LOAD","PPTM_LOADED","COUNTRY","AD","AE","AG","AI","AL","AM","AN","AO","AR","AT","AU","AW","AZ","BA","BB","BE","BF","BG","BH","BI","BJ","BM","BN","BO","BR","BS","BT","BW","BY","BZ","C2","CA","CD","CG","CH","CI","CK","CL","CM","CN","CO","CR","CV","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GI","GL","GM","GN","GP","GR","GT","GW","GY","HK","HN","HR","HU","ID","IE","IL","IN","IS","IT","JM","JO","JP","KE","KG","KH","KI","KM","KN","KR","KW","KY","KZ","LA","LC","LI","LK","LS","LT","LU","LV","MA","MC","MD","ME","MG","MH","MK","ML","MN","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PL","PM","PN","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","ST","SV","SZ","TC","TD","TG","TH","TJ","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","US","UY","VA","VC","VE","VG","VN","VU","WF","WS","YE","YT","ZA","ZM","ZW","LANG","CS","DA","EL","EN","HE","JA","KO","ZH","LANG_TO_DEFAULT_COUNTRY","ALLOWED_INSTALLMENT_COUNTRIES","ALLOWED_INSTALLMENT_PERIOD","LOCALE","htmlEncode","html","toString","replace","JsxHTMLNode","name","props","children","propsToString","childrenToString","Object","keys","filter","key","map","join","innerHTML","result","iterate","child","undefined","Array","isArray","JsxHTMLNodeContainer","jsxToHTML","jsxRender","template","renderers","nodes","regexMap","match","type","value","text","Error","trim","test","break","isPromise","item","Promise","window","Window","constructor","call","then","err","dispatchedErrors","possiblyUnhandledPromiseHandlers","dispatchPossiblyUnhandledError","promise","indexOf","push","setTimeout","__DEBUG__","j","length","onPossiblyUnhandledException","handler","cancel","splice","activeCount","flushPromise","flushActive","resolve","startActive","endActive","awaitActive","Zalgo","ZalgoPromise","resolved","rejected","errorHandled","error","handlers","dispatching","stack","isAsync","res","reject","dispatch","prototype","asyncReject","chain","firstPromise","secondPromise","i","onSuccess","onError","catch","finally","onFinally","try","timeout","time","clearTimeout","toPromise","TypeError","all","promises","count","results","prom","hash","items","method","context","args","apply","delay","flush","proxyMethod","win","originalMethod","getDomain","config","paypalDomain","isSameDomain","send","noop","methods","on","domain","paypal_domain_regex","data","postMessageProxy","isWindowClosed","source","arguments","getRefererDomain","xchild","getParentDomain","location","host","setupProxyLogTransport","once","setTransport","getParent","getTransport","getToken","root","token","isPayPalDomain","queryToken","getQueryParam","initLogger","addPayloadBuilder","referer","path","pathname","env","country","locale","lang","uid","getSessionID","ver","__PAYPAL_CHECKOUT__","__MINOR_VERSION__","addHeaderBuilder","addMetaBuilder","state","addTrackingBuilder","payload","sessionID","paymentToken","buttonSessionID","getButtonSessionID","contextType","contextID","merchantID","version","prefix","protocol","PROTOCOL","FILE","init","uri","loggerUrl","heartbeat","logPerformance","logLevel","__DEFAULT_LOG_LEVEL__","setLogLevel","logLevels","loggerConfig","POSTROBOT_CONFIG","bowserCache","getBowser","userAgent","getUserAgent","require","bowser","getBrowser","SUPPORTED_BROWSERS","browser","isBrowserEligible","isIEIntranet","compareVersions","eligibilityResults","isEligible","navigator","hasOwnProperty","checkRecognizedBrowser","mobile","android","ios","info","flushLogs","logWarn","console","warn","log","checkForCommonErrors","JSON","stringify","toJSON","isIE","isIECompHeader","message","foo","bar","baz","zomg","bind","a","opener","parent","returnContext","assign","b","c","HEADERS","CONTENT_TYPE","ACCEPT","headerBuilders","corrids","prev_corr_ids","parseHeaders","rawHeaders","split","line","values","toLowerCase","request","url","headers","json","body","normalizedHeaders","headerBuilder","builtHeaders","xhr","XMLHttpRequest","addEventListener","xhrLoad","responseHeaders","getAllResponseHeaders","corrID","status","contentType","isJSON","responseText","parse","xhrError","evt","getResponseHeader","open","setRequestHeader","encodeURIComponent","ontimeout","xhrTimeout","get","options","post","getThrottlePercentile","getStorageState","storage","throttlePercentiles","Math","floor","random","THROTTLE_GROUP","CONTROL","THROTTLE","getThrottle","sample","sticky","getStorageID","percentile","group","treatment","started","forced","localStorage","getItem","isEnabled","isDisabled","getTreatment","checkpointName","checkpoint","expuid","track","logStart","logComplete","getReturnToken","href","payer","getCurrentScript","memoize","scripts","slice","document","getElementsByTagName","script","src","scriptUrl","hasAttribute","currentScript","debug","isPayPalObjects","Boolean","getScriptVersion","__MIN__","getCurrentScriptUrl","getDomainSetting","def","hostname","domain_settings","domainMatches","openMetaFrame","iframeEligible","iframeEligibleReason","rememberedFunding","metaFrameUrl","metaFrameUrls","metaFrameDomain","paypalDomains","bridge","metaListener","openBridge","extendUrl","getRememberedFunding","identity","hasRememberedFunding","getSessionState","session","recentlyCheckedRemembered","isRememberedFunding","getRememberedFundingPromises","getGlobalState","global","rememberFundingPromises","getRememberedFundingPromise","flushRememberedFundingPromises","sources","rememberFunding","isDevice","loadMeta","isFundingRemembered","precacheRememberedFunding","getDefaultEnv","__TEST__","locales","__FILE_NAME__","cors","stage","stageDomain","stageUrl","apiStageUrl","apiStage","localhostUrl","ports","default","val","authCode","throttles","v4_mobile_device","ie_full_page","allow_full_page_fallback","memoize_payment","force_bridge","log_authorize","disable_venmo","creditTestDomains","customCountry","msie","firefox","chrome","safari","opera","msedge","samsungBrowser","silk","ucbrowser","vivaldi","session_uid_lifetime","_apiStage","button","checkout","guest","altpay","paypalUrls","port","wwwApiUrls","corsApiUrls","apiUrls","local","sandbox","production","checkoutUri","checkoutUris","altpayUris","guestUris","billingUris","buttonUris","inlinedCardFieldUris","postBridgeUris","legacyCheckoutUris","buttonJSUrls","buttonJSUrl","loginUri","hermesLoggerUri","loggerUri","loggerThrottlePercentage","pptmUri","postBridgeUri","paymentStandardUri","authApiUri","paymentApiUri","orderApiUri","billingApiUri","experienceApiUri","trackingApiUri","checkoutUrls","demo","guestUrls","altpayUrls","billingUrls","buttonUrls","inlinedCardFieldUrls","loginUrls","paymentsStandardUrls","legacyCheckoutUrls","authApiUrls","paymentApiUrls","orderApiUrls","billingApiUrls","experienceApiUrls","trackingApiUrls","_paypalUrl","paypalUrl","corsApiUrl","wwwApiUrl","apiUrl","checkoutUrl","billingUrl","buttonUrl","legacyCheckoutUrl","postBridgeUrl","postBridgeDomain","isTestExperiment","pptmUrl","authApiUrl","paymentApiUrl","orderApiUrl","billingApiUrl","experienceApiUrl","defaultLocale","extend","dest","over","isSameProtocol","ajax","fireAndForget","XRequest","ActiveXObject","XDomainRequest","req","toUpperCase","headerName","onreadystatechange","readyState","promiseDebounce","interval","debounce","resolver","rejector","onWindowReady","safeInterval","loop","uniqueID","chars","charAt","documentMode","payloadBuilders","metaBuilders","trackingBuilders","builder","initial_state_name","flushInterval","debounceInterval","sizeLimit","silent","heartbeatConsoleLog","heartbeatInterval","heartbeatTooBusy","heartbeatTooBusyThreshold","autoLog","logUnload","buffer","tracking","transport","newTransport","loaded","print","level","event","warning","immediateFlush","hasBuffer","hasTracking","meta","events","enqueue","timestamp","Date","now","enablePerformance","performance","timing","connectEnd","navigationStart","abs","timer","startTime","elapsed","parseInt","reset","reqStartElapsed","clientTimer","reqTimer","initHeartBeat","heartBeatTimer","heartbeatCount","heartbeatMaxThreshold","lag","heartbeatPayload","noConsole","initPerformance","client_elapsed","req_elapsed","forEach","offset","memory","navigation","getEntries","resource","initiatorType","initiated","conf","setInterval","beaverLogQueue","windowID","pageID","currentState","startTransition","endTransition","toState","currentTime","elapsedTime","transitionName","duration","transition","transition_time","INTERFACE","urlEncode","str","camelToDasherize","string","g","dasherizeToCamel","obj","stringifyWithFunctions","safeGet","prop","capitalizeFirstLetter","pathParts","runInterval","safeTimeout","each","callback","len","replaceObject","replacers","fullKey","defineProperty","configurable","enumerable","itemKey","replacer","replaced","set","copyProp","target","descriptor","getOwnPropertyDescriptor","dotify","newobj","every","objectIDs","WeakMap","getObjectID","regex","pattern","start","RegExp","index","groups","end","regexAll","matches","substr","startIndex","itemCount","stringifyError","eventEmitter","triggered","eventName","handlerList","cancelled","listener","trigger","triggerOnce","called","onceWrapper","memoizeWrapper","cacheKey","debounceWrapper","serializeFunctions","__type__","deserializeFunctions","deserializedFunctionWrapper","self","appendChild","container","isElement","element","Element","nodeType","style","ownerDocument","querySelectorAll","el","selector","getElementSafe","id","getElementById","querySelector","getElement","documentReady","clearInterval","isDocumentReady","elementReady","popup","params","PopupOpenError","writeToWindow","write","close","err2","writeElementToWindow","tag","tagName","documentElement","removeChild","setStyle","styleText","doc","styleSheet","cssText","createTextNode","createElement","class","className","attributes","setAttribute","contentWindow","awaitFrameLoadPromises","awaitFrameLoad","frame","has","linkFrameWindow","awaitFrameWindow","loadedFrame","iframe","frameBorder","allowTransparency","backgroundColor","removeEventListener","scanForJavascript","parseQuery","queryString","pair","decodeURIComponent","search","formatQuery","extendQuery","originalQuery","query","originalUrl","originalHash","hashString","elementStoppedMoving","getBoundingClientRect","top","bottom","left","right","width","height","getCurrentDimensions","offsetWidth","offsetHeight","changeStyle","styles","setOverflow","overflow","overflowX","overflowY","dimensionsDiff","one","two","threshold","trackDimensions","currentDimensions","check","newDimensions","changed","dimensions","onDimensionsChange","tracker","onWindowResize","dimensionsMatchViewport","innerWidth","innerHeight","bindEvents","eventNames","VENDOR_PREFIXES","setVendorCSS","capitalizedName","CSSRule","KEYFRAMES_RULE","WEBKIT_KEYFRAMES_RULE","MOZ_KEYFRAMES_RULE","O_KEYFRAMES_RULE","MS_KEYFRAMES_RULE","isValidAnimation","stylesheets","styleSheets","cssRules","cssRule","ANIMATION_START_EVENTS","ANIMATION_END_EVENTS","animate","clean","hasStarted","startTimeout","endTimeout","startEvent","endEvent","cleanUp","animationName","stopPropagation","STYLE","DISPLAY","NONE","BLOCK","VISIBILITY","VISIBLE","HIDDEN","IMPORTANT","makeElementVisible","setProperty","makeElementInvisible","showElement","hideElement","destroyElement","parentNode","showAndAnimate","animation","animateAndHide","addClass","classList","add","removeClass","remove","getCurrentScriptDir","getElementName","isElementClosed","watchElementForClose","getHttpType","onload","onerror","getHTML","getCSS","getScript","prefetchPage","JSX_EVENTS","onClick","fixScripts","newScript","textContent","replaceChild","jsxDom","content","textNode","denodeify","denodeifyWrapper","promisify","promisifyWRapper","cycle","isPerc","isPx","toNum","toPx","toCSS","percOf","num","perc","normalizeDimension","dim","max","memoized","memoizedFunction","__memoized__","displayName","promisifiedFunction","CONFIG","logInfo","logError","globalFor","__ZOID__","localGlobal","isRegex","MOCK","ABOUT","WILDCARD","WINDOW_TYPE","POPUP","IE_WIN_ACCESS_ERROR","isFileProtocol","isAboutProtocol","getOpener","canReadFromWindow","getActualDomain","mockDomain","isBlankDomain","isActuallySameDomain","desc","assertSameDomain","getParents","isAncestorParent","childParent","getFrames","frames","getAllChildFrames","childFrame","getTop","getNextOpener","getUltimateTop","getAllFramesInWindow","getAllWindows","isTop","isFrameWindowClosed","contains","safeIndexOf","collection","iframeWindows","iframeFrames","allowMock","closed","mockclosed","iframeIndex","cleanIframes","mockUserAgent","getFrameByName","winFrames","findChildFrameByName","namedFrame","findFrameByName","isParent","frameParent","isOpener","getAncestor","getAncestors","ancestor","isAncestor","actualParent","isPopup","isIframe","isFullpage","anyMatch","collection1","collection2","item1","item2","getDistanceFromTop","distance","getNthParent","n","getNthParentFromTop","isSameTopWindow","win1","win2","top1","top2","allFrames1","allFrames2","opener1","opener2","matchDomain","origin","some","subpattern","stringifyDomainPattern","getDomainFromUrl","onCloseWindow","maxtime","Infinity","isWindow","__cross_domain_utils_window_check__","isBrowser","isCurrentDomain","isMockDomain","normalizeMockUrl","closeWindow","getFrameForWindow","frameElement","TYPES","ZOID","POST_MESSAGE","INIT","PROPS","PROP_CALLBACK","CLOSE","CHECK_CLOSE","REDIRECT","RESIZE","DELEGATE","ALLOW_DELEGATE","HIDE","SHOW","PROP_TYPES","STRING","OBJECT","FUNCTION","BOOLEAN","NUMBER","INITIAL_PROPS","RAW","UID","WINDOW_REFERENCES","OPENER","TOP","PARENT","GLOBAL","PROP_TYPES_LIST","CONTEXT_TYPES","CLASS_NAMES","OUTLET","COMPONENT_FRAME","PRERENDER_FRAME","INVISIBLE","EVENTS","ATTRIBUTES","IFRAME_PLACEHOLDER","ANIMATION_NAMES","SHOW_CONTAINER","SHOW_COMPONENT","HIDE_CONTAINER","HIDE_COMPONENT","EVENT_NAMES","CLICK","CLOSE_REASONS","PARENT_CALL","CHILD_CALL","CLOSE_DETECTED","USER_CLOSED","PARENT_CLOSE_DETECTED","CONTEXT_TYPES_LIST","CALL_ORIGINAL","CALL_DELEGATE","DEFAULT_DIMENSIONS","WIDTH","CONSTANTS","WINDOW_PROPS","POSTROBOT","registerSelf","POST_MESSAGE_TYPE","REQUEST","RESPONSE","ACK","POST_MESSAGE_ACK","SUCCESS","POST_MESSAGE_NAMES","METHOD","HELLO","OPEN_TUNNEL","WINDOW_TYPES","FULLPAGE","SERIALIZATION_TYPES","PROMISE","ZALGO_PROMISE","REGEX","SEND_STRATEGIES","BRIDGE","MOCK_PROTOCOL","FILE_PROTOCOL","BRIDGE_NAME_PREFIX","POSTROBOT_PROXY","POST_MESSAGE_NAMES_LIST","ALLOW_POSTMESSAGE_POPUP","__ALLOW_POSTMESSAGE_POPUP__","__POST_ROBOT__","BRIDGE_TIMEOUT","CHILD_WINDOW_TIMEOUT","ACK_TIMEOUT","RES_TIMEOUT","ALLOWED_POST_MESSAGE_METHODS","ALLOW_SAME_ORIGIN","_extends","moduleGlobal","getGlobal","cache","glob","__CACHE_START_TIME__","hashStr","charCodeAt","pow","sqrt","strHashStr","total","String","fromCharCode","regmatch","safeJSON","listeners","listen","onceListener","awaitKey","newErr","stringifyErrorMessage","defaultMessage","patchMethod","original","patchedMethod","callOriginal","isObject","deepExtend","hasValue","arr","sortBy","order","sort","reverseMap","arrayRemove","pixels","percentage","round","min","regexMapMatcher","SEND_MESSAGE_STRATEGIES","serializedMessage","emulateIERestrictions","domains","dom","postMessage","sendBridgeMessage","needsBridgeForBrowser","isBridge","needsGlobalMessagingForBrowser","foreignGlobal","receiveMessage","buildMessage","getWindowType","sourceDomain","windowType","sendMessage","serializeMethods","messages","jsonStringify","strategyName","success","resetListeners","responseListeners","requestListeners","WINDOW_WILDCARD","WindowWildcard","erroredResponseListeners","__DOMAIN_REGEX__","addResponseListener","getResponseListener","deleteResponseListener","markResponseListenerErrored","isResponseListenerErrored","getRequestListener","nameListeners","winQualifier","winListeners","addRequestListener","listenersCollection","cancelListener","existingListener","strDomain","regexListeners","regexListener","delete","RECEIVE_MESSAGE_TYPES","ack","respond","originalSource","code","handleError","response","receivedMessages","parseMessage","parsedMessage","jsonParse","deserializeMethods","messageListener","messageEvent","sourceElement","originalEvent","listenForMessages","requestPromises","targetWindow","HTMLIFrameElement","hasResult","requestPromise","onChildWindowReady","sayHello","actualDomain","responseListener","ackTimeout","resTimeout","cycleTime","hasAck","sendToParent","client","listenerOptions","errorHandler","requestListener","onceFunction","listenOnce","errorOnClose","disable","cleanUpWindow","popupWindowsByWin","remoteWindows","readyPromises","initialized","openTunnelToOpener","initOnReady","listenForMethods","attachEvent","detachEvent","eachArray","eachObject","depth","childItem","weakMapMemoize","weakmap","weakmapMemoized","arg","indent","objectToJSON","arrayToJSON","meth","isSerialized","serializeMethod","destination","__id__","__name__","serializeError","__message__","__code__","serializePromise","__then__","serializeZalgoPromise","serializeRegex","__source__","deserializeMethod","wrapper","__xdomain__","deserializeError","deserializeZalgoPromise","deserializePromise","deserializeRegex","onHello","onAuthorize","onLegacyPaymentAuthorize","postBridge","watchForLegacyFallback","isLegacy","ppxoWatching","XMLHttpRequestsend","overrideXMLHttpRequestSend","_patched","DONE","returnUrl","billingToken","payerID","paymentID","Checkout","XhrResponse","RESPONSE_TYPES","mob","Xhr","_xhrOnReady","onLegacyFallback","addHeader","$Api","create","scrolling","buildUrl","payment","determineUrl","fundingSource","unsafeRenderTo","bridgeUrl","bridgeDomain","contexts","supportsPopups","validate","prerenderTemplate","componentTemplate","containerTemplate","required","queryParam","xprops","allowDelegate","getBrowserLocale","sendToChild","determineParameterFromToken","queryValue","childDecorate","alias","overlayColor","commit","experience","fundingOffered","elements","fundingSources","getAttribute","decorate","decorateOnAuthorize","actions","intent","closeComponent","redirect","redir","isButton","isGuest","access_token","onShippingChange","onAuth","sameDomain","wrapOnAuth","accessToken","onCancel","decorateOnCancel","cancelUrl","decorateInit","onClose","decorateOnClose","reason","shouldCancel","fallback","defaultFallback","__test__","action","sdkMeta","base64encode","isChild","onProps","injector","instance","payment_action","_context","isWebView","isStandAlone","standalone","matchMedia","isFacebookWebView","ua","isFirefoxIOS","isEdgeIOS","isOperaMini","isAndroid","isIos","isGoogleSearchApp","isQQBrowser","isIosWebview","isAndroidWebview","mHttp","mContent","isElectron","process","versions","electron","isMacOsCna","isChrome","isSafari","getFunctionName","fn","setFunctionName","btoa","m","p1","Buffer","from","base64decode","atob","randomID","timeID","toISOString","__GLOBAL__","serializeArgs","subkey","cacheMap","getOrSet","thisNamespace","cacheTime","promiseIdentity","memoizePromise","memoizedPromiseFunction","inlineMemoize","logic","__inline_memoize_cache__","regexp","svgToBase64","svg","objFilter","regexTokenize","promiseDebounced","localPromise","isInteger","isFloat","serializePrimitive","deserializePrimitive","parseFloat","undotify","keyResult","parts","part","isLast","isIndex","defineLazyProp","getter","arrayFrom","isObjectObject","isPlainObject","isDefined","weakMapMemoizePromise","weakmapMemoizedPromise","cleanup","tasks","cleaned","register","task","pop","tryCatch","removeFromArray","assertExists","thing","unique","KEY_CODES","ENTER","waitForWindowReady","waitForDocumentReady","waitForDocumentBody","urlWillRedirectPage","hasMetaViewPort","screen","isElementVisible","getClientRects","getPageRenderTime","domInteractive","keyCode","isLocalStorageEnabled","setItem","removeItem","getBrowserLocales","nav","languages","language","userLanguage","outerWidth","screenX","outerHeight","screenY","toolbar","menubar","resizable","scrollbars","border","onResize","currentWidth","currentHeight","newWidth","newHeight","observer","ResizeObserver","observe","MutationObserver","childList","subtree","characterData","disconnect","getResourceLoadTime","entries","entry","DEFAULT_SESSION_STORAGE","getStorage","lifetime","STORAGE_KEY","accessedStorage","getState","localStorageEnabled","rawStorage","getID","getSession","__session__","created","guid","getBelterExperimentStorage","isEventUnique","loggedBeacons","experiment","logTreatment","logCheckpoint","throttle","getGlobalNameSpace","globalKey","namespace","defValue","responseBody","wrapPromise","expected","expect","expectWrapper","avoid","avoidWrapper","expectError","expectErrorWrapper","drain","hasNativeWeakMap","freeze","testWeakMap","testKey","testValue","CrossDomainSafeWeakMap","_cleanupClosedWindows","isSafeToReadWrite","writable","P24_LOGO_COLORS","primary","secondary","p24Logo","logoColor","SOFORT_LOGO_COLORS","sofortLogo","IDEAL_LOGO_COLORS","tertiary","idealLogo","GIROPAY_LOGO_COLORS","giropayLogo","EPS_LOGO_COLORS","epsLogo","MYBANK_LOGO_COLORS","mybankLogo","BANCONTACT_LOGO_COLORS","bancontactLogo","PAYU_LOGO_COLORS","quaternary","payuLogo","VERKKOPANKKI_LOGO_COLORS","quinary","senary","verkkopankkiLogo","BLIK_LOGO_COLORS","blikLogo","TRUSTLY_LOGO_COLORS","trustlyLogo","MAXIMA_LOGO_COLORS","maximaLogo","BOLETO_LOGO_COLORS","boletoLogo","OXXO_LOGO_COLORS","oxxoLogo","PAYPAL_LOGO_COLORS","paypalLogo","CREDIT_LOGO_COLORS","creditLogo","fundingLogos","pp_white","pp_blue","pp_black","venmo_white","venmo_blue","itau","elv","elv_white","cardLogos","visa","amex","mastercard","maestro","discover","hiper","elo","jcb","cup","LOCAL_STORAGE_KEY","SESSION_KEY","GLOBAL_KEY","querySessionID","_assertThisInitialized","ReferenceError","_applyDecoratedDescriptor","property","decorators","initializer","reverse","reduce","decorator","complete","run","hasTasks","BaseComponent","component","addProp","createError","listenerName","errorListener","normalize","encode","base32","decode","buildChildWindowName","encodedName","encodedVersion","encodedOptions","isZoidComponentWindow","zoidcomp","getComponentMeta","componentMeta","getWindowByRef","ref","windows","getParentComponentWindow","componentParent","getParentRenderWindow","renderParent","getPosition","x","y","normalizeChildProp","getProp","looseProps","normalizeChildProps","getPropNames","ChildComponent","onPropHandlers","onInit","watchingForResize","autoResize","hasValidParentDomain","RenderError","setProps","getInitialProps","setWindows","exports","watchForResize","allowedParentDomains","parentComponentWindow","func","normalizedProps","parentWindow","__activeZoidComponent__","watchForClose","checkClose","enableAutoResize","getAutoResize","resize","updateProps","destroy","hide","show","userClose","focus","stringifiedError","_defineProperties","_createClass","Constructor","protoProps","staticProps","RENDER_DRIVERS","focusable","renderedIntoContainerTemplate","allowResize","openOnClick","needsBridge","childWindowName","title","frameWindow","detectClose","iframeWatcher","elementWatcher","openPrerender","prerenderIframe","prerenderFrameWindow","prerenderWindow","switchPrerender","delegateOverrides","openContainer","destroyComponent","destroyContainer","cancelContainerEvents","createPrerenderTemplate","showContainer","showComponent","hideContainer","hideComponent","loadUrl","hijackSubmit","renderTemplate","openContainerFrame","getOutlet","override","overrideOpen","validateProp","hasProp","isNaN","validateProps","normalizeProp","resultValue","decorated","normalizeProps","normalizedProp","getQueryValue","propsToQuery","propsDef","serialization","dotkey","escape","ParentComponent","handledErrors","outlet","childExports","validateParentDomain","renderTo","registerActiveComponent","watchForUnload","render","tryInit","onRender","driver","linkDomain","linkUrl","loadHTML","runTimeout","onEnter","checkAllowRenderTo","delegate","prefetch","activeComponents","getComponentParentRef","getRenderParentRef","renderToWindow","childDomain","sProps","getPropsForChild","secureProps","propUrl","builtinProps","getValidDomain","getUrl","finalUrl","xcomponent","builtUrl","needsBridgeParams","getBridgeUrl","hasBridge","getBridgeDomain","windowName","onDisplay","propName","overrides","overridenFunction","closeWindowListener","onunload","unloadWindowListener","hijack","targetElement","onTimeout","closeContainer","renderer","CLASS","ANIMATION","CONTEXT","EVENT","errErr","destroyAll","DelegateComponent","getOverrides","delegateOverride","validatePropDefinitions","anyEnabled","defaultContext","defaultEnv","defaultContainerTemplate","defaultPrerenderTemplate","getInternalProps","defaultLogLevel","drivers","angular","angular2","glimmer","react","vue","Component","listenForResize","driverCache","components","registerDrivers","registerChild","listenDelegate","driverName","dep","canRenderTo","getForEnv","envUrl","isZoidComponent","getRenderContext","validateRenderContext","getDefaultContext","renderIframe","renderPopup","renderIframeTo","renderPopupTo","prerender","innerProps","innerElement","logWarning","getByTag","postRobot","_postRobot","_CONSTANTS","isInsidePopup","isIE11","_inheritsLoose","subClass","superClass","__proto__","tunnelWindows","tunnelWindowId","deleteTunnelWindow","cleanTunnelWindows","tunnelWindow","addTunnelWindow","canary","getTunnelWindow","openTunnelToParent","needsBridgeForWin","needsBridgeForDomain","getBridgeName","sanitizedDomain","documentBodyReady","registerRemoteWindow","sendMessagePromise","findRemoteWindow","registerRemoteSendMessage","remoteWindow","sendMessageWrapper","remoteWin","remoteDomain","rejectRemoteSendMessage","messagingChild","messagingParent","awaitRemoteBridgeForWindow","bridges","bridgeFrames","popupWindowsByName","listenForRegister","winDetails","openBridgeFrame","windowOpen","windowOpenWrapper","last","winName","winOptions","destroyBridges","documentBody","loadScript","attrs","scriptOnReadyStateChange","scriptLoadError","attr","head","isNodeList","HTMLElement","getElements","NodeList","HTMLCollection","onDocumentReady","hasHash","serverUrl","originalQueryString","newQueryString","newUrl","normalizeLocale","normalizeLang","loc","allowIframe","IntegrationError","awaitBraintreeClient","braintree","auth","authorization","paypalCheckout","SUPPORTED_REST_FIELDS","transactions","amount","currency","external_selected_funding_instrument_type","shipping_address","line1","line2","city","postal_code","country_code","phone","recipient_name","application_context","brand_name","shipping_preference","landing_page","supported","supportedKeys","mapPaymentToBraintree","btPayment","flow","offerCredit","shippingAddressOverride","postalCode","countryCode","recipientName","landingPageType","enableShippingAddress","shippingAddressEditable","BEACON_URL","APP_NAME","beacon","appName","beaconImage","Image","isCheckpointUnique","FPTI_URL","buildPayload","v","t","getTimezoneOffset","flnm","shir","pgrp","page","vers","qual","tmpl","fpti","checkoutComponentStyle","getContainerStyle","getSandboxStyle","LOGO_COLOR","containerContent","preventDefault","alert","ppLogo","pp","paypal","windowMessage","continue","getPaymentType","paymentType","extendNamespace","xports","namespaces","childnamespaces","childname","childnamespace","NODE_JS","HI_BASE32_NO_NODE_JS","node","COMMON_JS","HI_BASE32_NO_COMMON_JS","module","AMD","define","BASE32_ENCODE_CHAR","BASE32_DECODE_CHAR","blocks","throwInvalidUtf8","position","partial","toUtf8String","bytes","followingChars","decodeAsBytes","base32Str","v1","v2","v3","v4","v5","v6","v7","v8","remain","encodeAscii","encodeUtf8","encodeBytes","input","asciiOnly","notString","ArrayBuffer","Uint8Array","asBytes","innerText","eval","scan","scriptTags","React","ReactDOM","createClass","componentDidMount","findDOMNode","setState","componentDidUpdate","componentWillUnmount","inheritAttrs","mounted","$el","$attrs","beforeUpdate","ng","directive","scope","restrict","controller","$scope","$element","safeApply","$root","$$phase","$apply","getProps","scopeProps","angularWrapped","$watch","GlimmerComponent","didInsertElement","zoid","AngularComponent","NgModule","ElementRef","NgZone","internalProps","angular2Wrapped","zone","ComponentInstance","inputs","Class","angularConstructor","elementRef","ngOnInit","nativeElement","ngOnChanges","ModuleInstance","declarations","e","r","C","o","u","f","l","h","p","d","w","E","S","T","N","whale","mzbrowser","coast","yandexbrowser","maxthon","epiphany","puffin","sleipnir","kMeleon","osname","windowsphone","chromeos","chromeBook","sailfish","seamonkey","firefoxos","phantom","slimer","blackberry","webos","touchpad","bada","tizen","qupzilla","chromium","googlebot","blink","webkit","gecko","mac","xbox","linux","k","osversion","L","tablet","s","isUnsupportedBrowser","_detect","detect","sourceWindow","k_r_submitter","k_r_success_contrls","brackets","serialize","form","serializer","hash_serializer","str_serialize","radio_store","disabled","nodeName","checked","empty","selectOptions","isSelectedOptions","option","allowedEmpty","selected","parse_keys","exec","hash_assign","shift","between","_values","existing","Button","existingVersion","_interface","errtype","containerStyle","BillingPage","cardType","prefilledZipCode","onEvent","ThreeDomainSecure","challengeUrl","threeDomainSecureToken","shouldCreateInitialPptmScript","existingScript","alreadyDownloaded","removePptm","pptmFactory","noContentFoundInContainer","reloadPptmScript","clientId","tryCreatePptmScript","shouldReloadPptmScript","createPptmScript","listenForLoadWithNoContent","listenForButtonRender","paypalDDL","buttonRenderEvent","mrid","client_id","fullUrl","async","pptm","proxyRest","createAccessToken","clientID","basicAuth","Authorization","grant_type","createExperienceProfile","experienceDetails","temporary","logPaymentResponse","links","rel","getDefaultReturnUrl","createTracking","trackingData","trackingID","createPayment","paymentDetails","redirect_urls","return_url","cancel_url","payment_method","experienceID","experience_profile_id","partner_attribution_id","createOrder","purchase_units","unit","reference_id","createBillingAgreement","billingDetails","plan","merchant_preferences","token_id","rest","billingAgreement","PROXY_REST","parentWin","onAuthorizeListener","loggedEvents","loggedExperimentEvents","duplicate","edge","logExperimentTreatment","externalExperiment","externalExperimentTreatment","externalExperimentToken","logReturn","returnToken","OPTYPE","PAYMENT","CANCEL","CONTINGENCY","PAYMENT_CANCELLED","wrapPopupBridge","popupBridge","onComplete","redirect_uri","getReturnUrlPrefix","validateCheckoutProps","normalizeCheckoutProps","useraction","native_xo","extractDataFromQuery","ba_token","paymentId","PayerID","opType","return_uri","cancel_uri","buildActions","redirectUrl","renderThroughPopupBridge","queryItems","awaitPopupBridge","setupPopupBridgeProxy","doRender","popupBridgeRender","popupBridgeRenderTo","popupBridgeRenderPopupTo","FUNDING_PRIORITY","FUNDING_ORDER","FUNDING_CONFIG","enabled","allowOptIn","allowOptOut","allowRemember","allowHorizontal","allowVertical","requireCommitAsTrue","__paypal_checkout__","serverConfig","paypalMerchantConfiguration","creditCard","isPayPalBranded","allowedCountries","defaultVerticalCountries","platforms","allowedEnvs","CARD_CONFIG","priority","getConfig","category","categoryConfig","getFundingConfig","getCardConfig","fundingEligibilityReasons","isFundingIneligible","funding","layout","isVertical","allowSecondary","disallowed","isFundingAutoEligible","allowed","remembered","isFundingEligible","eligible","ineligibleReason","autoEligibleReason","determineEligibleFunding","reasons","eligibleFunding","factors","unshift","determineEligibleCards","card","validateFunding","logFundingEligibility","table","BUTTON_CONFIG","colors","sizes","shapes","layouts","logoColors","tagLineColors","secondaryColors","dualTag","defaultLabel","defaultVerticalLabel","defaultColor","defaultSize","defaultVerticalSize","defaultShape","defaultLayout","defaultBranding","defaultVerticalBranding","defaultFundingIcons","defaultTagline","defaultDual","minimumSize","minimumVerticalSize","maximumSize","maximumVerticalSize","minHorizontalButtons","minVerticalButtons","maxHorizontalButtons","maxVerticalButtons","allowUnbranded","allowFundingIcons","allowPrimary","allowPrimaryVertical","allowPrimaryHorizontal","label","logoLabel","installmentperiod","allowSecondaryVertical","allowSecondaryHorizontal","FUNDING_TO_DEFAULT_LABEL","LABEL_TO_FUNDING","BUTTON_RELATIVE_STYLE","VERTICAL_MARGIN","BUTTON_STYLE","defaultWidth","defaultHeight","minWidth","maxWidth","minHeight","maxHeight","buttonTextMargin","allowFunding","allowTagline","byPayPalHeight","labelToFunding","fundingToDefaultLabel","getButtonConfig","parseLocale","determineMaxButtons","configMax","enableTagline","tagline","branding","fundingicons","defs","checkoutCustomization","size","color","shape","multiple","cards","validateButtonLocale","validateRegionSpecificButton","isInstallmentAllowedCountry","validateButtonStyle","maxbuttons","minButtons","buttonSize","validateButtonProps","SHOULD_FOCUS","CONTAINER","TAGLINE_COLOR","TEXT","LOGO","SEPARATOR","DOM_READY","PERSONALIZATION_TEXT","pageStyle","buttonStyle","layoutStyle","brandingStyle","labelStyle","DUAL_BUTTON_MIN_RATIO","buttonResponsiveStyle","cardNumber","buttonHeight","buttonTextMarginTop","minDualWidth","ceil","toFixed","buttonColorStyle","componentStyle","LoadingDots","Beacon","impression","Tagline","tagColor","getComponentScript","OPTIONAL","SELECTOR","TAG","toArray","parentElement","sum","getAllChildren","getOptionalIndex","getElementsTotalWidth","getOptionalParents","optional","getOptionalChildren","first","second","optionalParent","allChildren","optionalChildren","toggleOptionals","parentWidth","usedWidth","optionalChild","setupTabOutlineEvent","buttonsContainer","getElementsByClassName","tabKeyCode","handleMouseDownOnce","handleFirstTab","setDomReady","load","componentContent","allowedPersonalizationLabels","getCommonButtonClasses","getButtonClasses","getLocaleContent","determineLabel","labelMatchesFunding","determineButtons","buttonLabel","buttonColor","renderCards","logo","renderFundingIcons","renderPersonalizationButtonText","getButtonTextAnimationStyle","personalizedButtonText","allowedAnimation","MIN_WIDTH","LABEL_DURATION","PERSONALIZATION_DURATION","DELAY","COMPRESSED","EXPANDED","PAYPAL_BUTTON","PAYPAL_LOGO","BUTTON_TEXT","renderContent","dynamicContent","contentString","contentVariable","separator","renderButtonTextDiv","contentText","renderButton","morsText","buttonText","__WEB__","hasTabIndex","renderTagline","renderScript","renderStyle","renderPowerByPaypalLogo","isCardDisallowed","buttonNodes","taglineNode","fundingiconNode","styleNode","scriptNode","labelPowerByPayPal","possibleSizes","possibleSize","sizeA","sizeB","setupButtonChild","ButtonComponent","pageRenderTime","onApprove","pre","inlineGuest","treatments","isCreditDualEligible","creditThrottle","allowpaymentrequest","enableNativeCheckout","prefetchLogin","updateClientConfiguration","memoizedToken","button_version","remember","decorateOnRender","restart","tokenize","tokenizePayment","execute","nonce","decorateOnShippingChange","patch","patchObject","decorateOnClick","initialHeight","logInlineGuestOutOfViewPortOnlyOnce","onResizeHandler","getScrollOffsetY","pageYOffset","scrollTop","checkIfExpansionInViewport","scrollOffsetY","windowHeight","containerOffsetY","VISIBLE_THRESHOLD","isContainerExpanded","isExpansionInViewport","decorateValidate","validateCalled","getPageUrl","canRenderTop","methodName","unDebounce","createOriginal","createContext","originalPayment","resolveData","rejectActions","ctx","Card","initialFormValues","cardIcons","display","submitButton","currencyConversion","domainToEnv","setDomainEnv","currentDomainEnv","err3","currentProtocol","configure","precacheRemembered","setup","scriptProtocol","loadTime","apps","legacy","PayPalCheckout","enableCheckoutIframe","logger","_enableCheckoutIframe","_Checkout","_BillingPage","_ThreeDomainSecure","_destroyAll","LOG_PREFIX","MERCHANT_ID","CLASSES","HIDDEN_BUTTON","setupPostBridge","isLegacyEligible","DEFAULT_LANG","loadButtonJS","lc","childNodes","renderButtons","buttons","condition","click","getHijackTargetElement","parentTagName","grandparentElement","grandparentTagName","redirected","logRedirect","isToken","parseToken","hasToken","normalizeOptions","environment","badenv","concat","setupConfig","initXO","startFlow","closeFlow","matchUrlAndPaymentToken","checkUrlAgainstEnv","awaitPaymentTokenAndUrl","paymentTokenAndUrl","enablev3ajax","formSerialize","urlAndPaymentToken","paypalCheckoutInited","closeFlowCalled","initPayPalCheckout","closeUrl","renderPayPalCheckout","hijackTarget","urlProp","removeAttribute","handleClick","clickHandler","handleClickHijack","listenClick","isClick","instrumentButtonRender","instrumentButtonClick","setupCalled","invokeReady","onKey","oneTimeReady","number"],"mappings":"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","file":"checkout.4.0.308.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 62);\n","/* @flow */\n\nimport type { Enum } from '../types';\n\ntype BUTTON_STYLE_OPTIONS_ENUM =\n Enum<'label' | 'size' | 'shape' | 'color' | 'layout' |\n 'fundingicons' | 'maxbuttons' | 'branding' | 'tagline' | 'height' | 'installmentperiod'>;\n\nexport const BUTTON_STYLE_OPTIONS : BUTTON_STYLE_OPTIONS_ENUM = {\n LABEL: 'label',\n SIZE: 'size',\n SHAPE: 'shape',\n COLOR: 'color',\n LAYOUT: 'layout',\n MAXBUTTONS: 'maxbuttons',\n FUNDINGICONS: 'fundingicons',\n BRANDING: 'branding',\n TAGLINE: 'tagline',\n HEIGHT: 'height',\n INSTALLMENTPERIOD: 'installmentperiod'\n};\n\ntype BUTTON_LABEL_ENUM =\n Enum<'paypal' | 'checkout' | 'pay' | 'credit' |\n 'card' | 'buynow' | 'installment' | 'venmo' | 'itau' | 'ideal' | 'elv' | 'bancontact' | 'giropay' | 'sofort' | 'eps' | 'mybank' | 'p24' | 'payu' | 'verkkopankki' | 'blik' | 'trustly' | 'maxima' | 'boleto' | 'oxxo'>;\n\nexport const BUTTON_LABEL : BUTTON_LABEL_ENUM = {\n PAYPAL: 'paypal',\n CHECKOUT: 'checkout',\n PAY: 'pay',\n CREDIT: 'credit',\n CARD: 'card',\n BUYNOW: 'buynow',\n INSTALLMENT: 'installment',\n VENMO: 'venmo',\n ITAU: 'itau',\n IDEAL: 'ideal',\n ELV: 'elv',\n BANCONTACT: 'bancontact',\n GIROPAY: 'giropay',\n SOFORT: 'sofort',\n EPS: 'eps',\n MYBANK: 'mybank',\n P24: 'p24',\n PAYU: 'payu',\n VERKKOPANKKI: 'verkkopankki',\n BLIK: 'blik',\n TRUSTLY: 'trustly',\n MAXIMA: 'maxima',\n BOLETO: 'boleto',\n OXXO: 'oxxo'\n};\n\ntype BUTTON_COLOR_ENUM =\n Enum<'gold' | 'blue' | 'silver' | 'black' | 'darkblue' | 'transparent' | 'white'>;\n\nexport const BUTTON_COLOR : BUTTON_COLOR_ENUM = {\n GOLD: 'gold',\n BLUE: 'blue',\n SILVER: 'silver',\n BLACK: 'black',\n DARKBLUE: 'darkblue',\n WHITE: 'white',\n TRANSPARENT: 'transparent'\n};\n\ntype BUTTON_LOGO_COLOR_ENUM =\n Enum<'blue' | 'white' | 'black' | 'any'>;\n\nexport const BUTTON_LOGO_COLOR : BUTTON_LOGO_COLOR_ENUM = {\n BLUE: 'blue',\n WHITE: 'white',\n BLACK: 'black',\n ANY: 'any'\n};\n\ntype BUTTON_SIZE_ENUM =\n Enum<'tiny' | 'small' | 'medium' | 'large' | 'huge' | 'responsive'>;\n\nexport const BUTTON_SIZE : BUTTON_SIZE_ENUM = {\n TINY: 'tiny',\n SMALL: 'small',\n MEDIUM: 'medium',\n LARGE: 'large',\n HUGE: 'huge',\n RESPONSIVE: 'responsive'\n};\n\ntype BUTTON_TAGLINE_COLOR_ENUM =\n Enum<'black' | 'blue'>;\n\nexport const BUTTON_TAGLINE_COLOR : BUTTON_TAGLINE_COLOR_ENUM = {\n BLACK: 'black',\n BLUE: 'blue'\n};\n\ntype BUTTON_SHAPE_ENUM =\n Enum<'pill' | 'rect'>;\n\nexport const BUTTON_SHAPE : BUTTON_SHAPE_ENUM = {\n PILL: 'pill',\n RECT: 'rect'\n};\n\ntype BUTTON_BRANDING_ENUM =\n Enum<'branded' | 'unbranded'>;\n\nexport const BUTTON_BRANDING : BUTTON_BRANDING_ENUM = {\n BRANDED: 'branded',\n UNBRANDED: 'unbranded'\n};\n\ntype BUTTON_LAYOUT_ENUM =\n Enum<'horizontal' | 'vertical'>;\n\nexport const BUTTON_LAYOUT : BUTTON_LAYOUT_ENUM = {\n HORIZONTAL: 'horizontal',\n VERTICAL: 'vertical'\n};\n\ntype BUTTON_NUMBER_ENUM =\n Enum<'single' | 'multiple'>;\n\nexport const BUTTON_NUMBER : BUTTON_NUMBER_ENUM = {\n SINGLE: 'single',\n MULTIPLE: 'multiple'\n};\n\ntype BUTTON_LOGO_ENUM =\n Enum<'pp' | 'paypal' | 'venmo' | 'itau' | 'credit' | 'ideal' | 'elv' | 'bancontact' | 'giropay' | 'sofort' | 'eps' | 'mybank' | 'p24' | 'payu' | 'verkkopankki' | 'blik' | 'trustly' | 'maxima' | 'boleto' | 'oxxo'>;\n\nexport const BUTTON_LOGO : BUTTON_LOGO_ENUM = {\n PP: 'pp',\n PAYPAL: 'paypal',\n VENMO: 'venmo',\n ITAU: 'itau',\n CREDIT: 'credit',\n IDEAL: 'ideal',\n ELV: 'elv',\n BANCONTACT: 'bancontact',\n GIROPAY: 'giropay',\n SOFORT: 'sofort',\n EPS: 'eps',\n MYBANK: 'mybank',\n P24: 'p24',\n PAYU: 'payu',\n VERKKOPANKKI: 'verkkopankki',\n BLIK: 'blik',\n TRUSTLY: 'trustly',\n MAXIMA: 'maxima',\n BOLETO: 'boleto',\n OXXO: 'oxxo'\n};\n","/* @flow */\n\nexport const CHECKOUT_OVERLAY_COLOR = {\n BLACK: 'black',\n WHITE: 'white'\n};\n","/* @flow */\n\nexport const FUNDING = {\n PAYPAL: 'paypal',\n VENMO: 'venmo',\n ITAU: 'itau',\n CREDIT: 'credit',\n CARD: 'card',\n IDEAL: 'ideal',\n ELV: 'elv',\n BANCONTACT: 'bancontact',\n GIROPAY: 'giropay',\n SOFORT: 'sofort',\n EPS: 'eps',\n MYBANK: 'mybank',\n P24: 'p24',\n ZIMPLER: 'zimpler',\n PAYU: 'payu',\n VERKKOPANKKI: 'verkkopankki',\n BLIK: 'blik',\n TRUSTLY: 'trustly',\n MAXIMA: 'maxima',\n BOLETO: 'boleto',\n OXXO: 'oxxo'\n};\n\nexport const CARD = {\n VISA: 'visa',\n MASTERCARD: 'mastercard',\n AMEX: 'amex',\n DISCOVER: 'discover',\n SWITCH: 'switch',\n MAESTRO: 'maestro',\n HIPER: 'hiper',\n ELO: 'elo',\n JCB: 'jcb',\n CUP: 'cup',\n COFINOGA: 'cofinoga',\n COFIDIS: 'cofidis',\n CETELEM: 'cetelem',\n CBNATIONALE: 'cbnationale'\n};\n\nexport const FUNDING_ELIGIBILITY_REASON = {\n PRIMARY: 'The funding source is the primary source',\n NOT_ENABLED: 'The funding source is not currently enabled for use',\n SECONDARY_DISALLOWED: 'The funding source is disallowed as a secondary button',\n OPT_OUT: 'The funding source was disallowed in funding.disallowed',\n OPT_IN: 'The funding source was allowed in funding.allowed',\n DISALLOWED_COUNTRY: 'The funding source is not enabled for the current locale',\n DEFAULT_COUNTRY: 'The funding source is enabled by default for the current locale',\n DEFAULT: 'The funding source is enabled by default for all users',\n REMEMBERED: 'The funding source was remembered for the current user',\n NEED_OPT_IN: 'The funding source needs to be allowed in funding.allowed',\n COMMIT_NOT_SET: 'The funding source is not enabled when commit is not set as true',\n INVALID_ENV: 'The funding source is not supported in this environment'\n};\n\nexport const CARD_PRIORITY = [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.DISCOVER,\n CARD.SWITCH,\n CARD.MAESTRO,\n CARD.HIPER,\n CARD.ELO,\n CARD.JCB,\n CARD.CUP,\n CARD.COFINOGA,\n CARD.COFIDIS,\n CARD.CETELEM,\n CARD.CBNATIONALE\n];\n","/* @flow */\n\nexport const ENV = {\n LOCAL: 'local',\n STAGE: 'stage',\n SANDBOX: 'sandbox',\n PRODUCTION: 'production',\n TEST: 'test',\n DEMO: 'demo'\n};\n\nexport const USERS = {\n ALL: 'all',\n REMEMBERED: 'remembered'\n};\n\nexport const SOURCE = {\n MANUAL: 'manual',\n BUTTON_FACTORY: 'button_factory'\n};\n\nexport const LOG_LEVEL = {\n DEBUG: 'debug',\n INFO: 'info',\n WARN: 'warn',\n ERROR: 'error'\n};\n\nexport const PAYMENT_TYPE = {\n EC_TOKEN: 'ec_token',\n BA_TOKEN: 'ba_token',\n PAY_ID: 'pay_id'\n};\n\nexport const PPTM_ID = 'xo-pptm';\n\nexport const ATTRIBUTE = {\n BUTTON: 'data-button',\n FUNDING_SOURCE: 'data-funding-source',\n CARD: 'data-card',\n VERSION: 'data-version',\n LAYOUT: 'data-layout',\n SIZE: 'data-size'\n};\n\nexport const PLATFORM = {\n DESKTOP: 'desktop',\n MOBILE: 'mobile'\n};\n\nexport const DEFAULT = 'default';\n\n\n","/* @flow */\n\nimport { PAYMENT_TYPE } from './misc';\n\nexport const FPTI = {\n\n KEY: {\n FEED: 'feed_name',\n STATE: 'state_name',\n TRANSITION: 'transition_name',\n BUTTON_TYPE: 'button_type',\n SESSION_UID: 'page_session_id',\n BUTTON_SESSION_UID: 'button_session_id',\n TOKEN: 'token',\n CONTEXT_ID: 'context_id',\n CONTEXT_TYPE: 'context_type',\n REFERER: 'referer_url',\n PAY_ID: 'pay_id',\n SELLER_ID: 'seller_id',\n DATA_SOURCE: 'serverside_data_source',\n BUTTON_SOURCE: 'button_source',\n ERROR_CODE: 'ext_error_code',\n ERROR_DESC: 'ext_error_desc',\n PAGE_LOAD_TIME: 'page_load_time',\n EXPERIMENT_NAME: 'pxp_exp_id',\n TREATMENT_NAME: 'pxp_trtmnt_id',\n TRANSITION_TIME: 'transition_time',\n FUNDING_LIST: 'eligible_payment_methods',\n FUNDING_COUNT: 'eligible_payment_count',\n CHOSEN_FUNDING: 'selected_payment_method',\n BUTTON_LAYOUT: 'button_layout',\n BUTTON_COLOR: 'button_color',\n BUTTON_SIZE: 'button_size',\n BUTTON_SHAPE: 'button_shape',\n BUTTON_LABEL: 'button_label',\n BUTTON_WIDTH: 'button_width',\n VERSION: 'checkoutjs_version',\n MAX_BUTTONS: 'max_buttons',\n FUNDING_REMEMBERED: 'funding_remembered',\n BUTTON_TAGLINE_ENABLED: 'button_tagline_enabled',\n RESPONSE_DURATION: 'response_duration',\n PAYMENT_FLOW: 'payment_flow',\n BUTTON_VERSION: 'button_version'\n },\n\n BUTTON_TYPE: {\n IFRAME: 'iframe',\n HTML: 'html',\n CUSTOM: 'custom'\n },\n\n DATA_SOURCE: {\n CHECKOUT: 'checkout'\n },\n\n CONTEXT_TYPE: {\n BUTTON_SESSION_ID: 'button_session_id',\n [ PAYMENT_TYPE.PAY_ID ]: 'Pay-ID',\n [ PAYMENT_TYPE.EC_TOKEN ]: 'EC-Token',\n [ PAYMENT_TYPE.BA_TOKEN ]: 'EC-Token'\n },\n\n FEED: {\n CHECKOUTJS: 'checkoutjs'\n },\n\n STATE: {\n LOAD: 'checkoutjs_load',\n BUTTON: 'checkoutjs_button',\n CHECKOUT: 'checkoutjs_checkout',\n PPTM: 'checkoutjs_pptm'\n },\n\n TRANSITION: {\n SCRIPT_LOAD: 'process_script_load',\n\n BUTTON_RENDER: 'process_button_render',\n BUTTON_LOAD: 'process_button_load',\n BUTTON_CLICK: 'process_button_click',\n\n BUTTON_RENDER_INTRANET_MODE: 'process_button_render_intranet_mode',\n BUTTON_CLICK_INTRANET_MODE: 'process_button_click_intranet_mode',\n\n CREATE_PAYMENT: 'process_create_payment',\n RECIEVE_PAYMENT: 'process_recieve_payment',\n\n CHECKOUT_INIT: 'process_checkout_init',\n CHECKOUT_AUTHORIZE: 'process_checkout_authorize',\n CHECKOUT_SHIPPING_CHANGE: 'process_checkout_shipping_change',\n CHECKOUT_CANCEL: 'process_checkout_cancel',\n CHECKOUT_ERROR: 'process_checkout_error',\n\n EXTERNAL_EXPERIMENT: 'process_external_experiment',\n EXTERNAL_EXPERIMENT_COMPLETE: 'process_external_experiment_complete',\n\n PPTM_LOAD: 'process_pptm_load',\n PPTM_LOADED: 'process_pptm_loaded'\n }\n};\n","/* @flow */\n\nexport const COUNTRY = {\n AD: 'AD',\n AE: 'AE',\n AG: 'AG',\n AI: 'AI',\n AL: 'AL',\n AM: 'AM',\n AN: 'AN',\n AO: 'AO',\n AR: 'AR',\n AT: 'AT',\n AU: 'AU',\n AW: 'AW',\n AZ: 'AZ',\n BA: 'BA',\n BB: 'BB',\n BE: 'BE',\n BF: 'BF',\n BG: 'BG',\n BH: 'BH',\n BI: 'BI',\n BJ: 'BJ',\n BM: 'BM',\n BN: 'BN',\n BO: 'BO',\n BR: 'BR',\n BS: 'BS',\n BT: 'BT',\n BW: 'BW',\n BY: 'BY',\n BZ: 'BZ',\n C2: 'C2',\n CA: 'CA',\n CD: 'CD',\n CG: 'CG',\n CH: 'CH',\n CI: 'CI',\n CK: 'CK',\n CL: 'CL',\n CM: 'CM',\n CN: 'CN',\n CO: 'CO',\n CR: 'CR',\n CV: 'CV',\n CY: 'CY',\n CZ: 'CZ',\n DE: 'DE',\n DJ: 'DJ',\n DK: 'DK',\n DM: 'DM',\n DO: 'DO',\n DZ: 'DZ',\n EC: 'EC',\n EE: 'EE',\n EG: 'EG',\n ER: 'ER',\n ES: 'ES',\n ET: 'ET',\n FI: 'FI',\n FJ: 'FJ',\n FK: 'FK',\n FM: 'FM',\n FO: 'FO',\n FR: 'FR',\n GA: 'GA',\n GB: 'GB',\n GD: 'GD',\n GE: 'GE',\n GF: 'GF',\n GI: 'GI',\n GL: 'GL',\n GM: 'GM',\n GN: 'GN',\n GP: 'GP',\n GR: 'GR',\n GT: 'GT',\n GW: 'GW',\n GY: 'GY',\n HK: 'HK',\n HN: 'HN',\n HR: 'HR',\n HU: 'HU',\n ID: 'ID',\n IE: 'IE',\n IL: 'IL',\n IN: 'IN',\n IS: 'IS',\n IT: 'IT',\n JM: 'JM',\n JO: 'JO',\n JP: 'JP',\n KE: 'KE',\n KG: 'KG',\n KH: 'KH',\n KI: 'KI',\n KM: 'KM',\n KN: 'KN',\n KR: 'KR',\n KW: 'KW',\n KY: 'KY',\n KZ: 'KZ',\n LA: 'LA',\n LC: 'LC',\n LI: 'LI',\n LK: 'LK',\n LS: 'LS',\n LT: 'LT',\n LU: 'LU',\n LV: 'LV',\n MA: 'MA',\n MC: 'MC',\n MD: 'MD',\n ME: 'ME',\n MG: 'MG',\n MH: 'MH',\n MK: 'MK',\n ML: 'ML',\n MN: 'MN',\n MQ: 'MQ',\n MR: 'MR',\n MS: 'MS',\n MT: 'MT',\n MU: 'MU',\n MV: 'MV',\n MW: 'MW',\n MX: 'MX',\n MY: 'MY',\n MZ: 'MZ',\n NA: 'NA',\n NC: 'NC',\n NE: 'NE',\n NF: 'NF',\n NG: 'NG',\n NI: 'NI',\n NL: 'NL',\n NO: 'NO',\n NP: 'NP',\n NR: 'NR',\n NU: 'NU',\n NZ: 'NZ',\n OM: 'OM',\n PA: 'PA',\n PE: 'PE',\n PF: 'PF',\n PG: 'PG',\n PH: 'PH',\n PL: 'PL',\n PM: 'PM',\n PN: 'PN',\n PT: 'PT',\n PW: 'PW',\n PY: 'PY',\n QA: 'QA',\n RE: 'RE',\n RO: 'RO',\n RS: 'RS',\n RU: 'RU',\n RW: 'RW',\n SA: 'SA',\n SB: 'SB',\n SC: 'SC',\n SE: 'SE',\n SG: 'SG',\n SH: 'SH',\n SI: 'SI',\n SJ: 'SJ',\n SK: 'SK',\n SL: 'SL',\n SM: 'SM',\n SN: 'SN',\n SO: 'SO',\n SR: 'SR',\n ST: 'ST',\n SV: 'SV',\n SZ: 'SZ',\n TC: 'TC',\n TD: 'TD',\n TG: 'TG',\n TH: 'TH',\n TJ: 'TJ',\n TM: 'TM',\n TN: 'TN',\n TO: 'TO',\n TR: 'TR',\n TT: 'TT',\n TV: 'TV',\n TW: 'TW',\n TZ: 'TZ',\n UA: 'UA',\n UG: 'UG',\n US: 'US',\n UY: 'UY',\n VA: 'VA',\n VC: 'VC',\n VE: 'VE',\n VG: 'VG',\n VN: 'VN',\n VU: 'VU',\n WF: 'WF',\n WS: 'WS',\n YE: 'YE',\n YT: 'YT',\n ZA: 'ZA',\n ZM: 'ZM',\n ZW: 'ZW'\n};\n\nexport const LANG = {\n AR: 'ar',\n CS: 'cs',\n DA: 'da',\n DE: 'de',\n EL: 'el',\n EN: 'en',\n ES: 'es',\n FI: 'fi',\n FR: 'fr',\n HE: 'he',\n HU: 'hu',\n ID: 'id',\n IT: 'it',\n JA: 'ja',\n KO: 'ko',\n NL: 'nl',\n NO: 'no',\n PL: 'pl',\n PT: 'pt',\n RU: 'ru',\n SK: 'sk',\n SV: 'sv',\n TH: 'th',\n TR: 'tr',\n ZH: 'zh'\n};\n\nexport const LANG_TO_DEFAULT_COUNTRY = {\n [LANG.AR]: COUNTRY.SA,\n [LANG.CS]: COUNTRY.CZ,\n [LANG.DA]: COUNTRY.DK,\n [LANG.DE]: COUNTRY.DE,\n [LANG.EL]: COUNTRY.GR,\n [LANG.EN]: COUNTRY.US,\n [LANG.ES]: COUNTRY.ES,\n [LANG.FI]: COUNTRY.FI,\n [LANG.FR]: COUNTRY.FR,\n [LANG.HE]: COUNTRY.IL,\n [LANG.HU]: COUNTRY.HU,\n [LANG.ID]: COUNTRY.ID,\n [LANG.IT]: COUNTRY.IT,\n [LANG.JA]: COUNTRY.JP,\n [LANG.KO]: COUNTRY.KR,\n [LANG.NL]: COUNTRY.NL,\n [LANG.NO]: COUNTRY.NO,\n [LANG.PL]: COUNTRY.PL,\n [LANG.PT]: COUNTRY.PT,\n [LANG.RU]: COUNTRY.RU,\n [LANG.SK]: COUNTRY.SK,\n [LANG.SV]: COUNTRY.SE,\n [LANG.TH]: COUNTRY.TH,\n [LANG.TR]: COUNTRY.TR,\n [LANG.ZH]: COUNTRY.CN\n};\n\nexport const ALLOWED_INSTALLMENT_COUNTRIES = [ COUNTRY.BR, COUNTRY.MX ];\nexport const ALLOWED_INSTALLMENT_PERIOD = {\n BR: [ 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ],\n MX: [ 3, 6, 9, 12 ]\n};\n","/* @flow */\n\nimport { COUNTRY, LANG } from './country';\n\nexport const LOCALE = {\n [COUNTRY.AD]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AE]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH, LANG.AR ],\n [COUNTRY.AG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AI]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AL]: [ LANG.EN ],\n [COUNTRY.AM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AN]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AO]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AR]: [ LANG.ES, LANG.EN ],\n [COUNTRY.AT]: [ LANG.DE, LANG.EN ],\n [COUNTRY.AU]: [ LANG.EN ],\n [COUNTRY.AW]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BA]: [ LANG.EN ],\n [COUNTRY.BB]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BE]: [ LANG.EN, LANG.NL, LANG.FR ],\n [COUNTRY.BF]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.BG]: [ LANG.EN ],\n [COUNTRY.BH]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BI]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.BJ]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.BM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BN]: [ LANG.EN ],\n [COUNTRY.BO]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.BR]: [ LANG.PT, LANG.EN ],\n [COUNTRY.BS]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BT]: [ LANG.EN ],\n [COUNTRY.BW]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BY]: [ LANG.EN ],\n [COUNTRY.BZ]: [ LANG.EN, LANG.ES, LANG.FR, LANG.ZH ],\n [COUNTRY.C2]: [ LANG.ZH, LANG.EN ],\n [COUNTRY.CA]: [ LANG.EN, LANG.FR ],\n [COUNTRY.CD]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.CG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.CH]: [ LANG.DE, LANG.FR, LANG.EN ],\n [COUNTRY.CI]: [ LANG.FR, LANG.EN ],\n [COUNTRY.CK]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.CL]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.CM]: [ LANG.FR, LANG.EN ],\n [COUNTRY.CN]: [ LANG.ZH ],\n [COUNTRY.CO]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.CR]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.CV]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.CY]: [ LANG.EN ],\n [COUNTRY.CZ]: [ LANG.CS, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.DE]: [ LANG.DE, LANG.EN ],\n [COUNTRY.DJ]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.DK]: [ LANG.DA, LANG.EN ],\n [COUNTRY.DM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.DO]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.DZ]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.EC]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.EE]: [ LANG.EN, LANG.RU, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.EG]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ER]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ES]: [ LANG.ES, LANG.EN ],\n [COUNTRY.ET]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.FI]: [ LANG.FI, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.FJ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.FK]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.FM]: [ LANG.EN ],\n [COUNTRY.FO]: [ LANG.DA, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.FR]: [ LANG.FR, LANG.EN ],\n [COUNTRY.GA]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.GB]: [ LANG.EN ],\n [COUNTRY.GD]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GE]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GF]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GI]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GL]: [ LANG.DA, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GN]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.GP]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GR]: [ LANG.EL, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GT]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.GW]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GY]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.HK]: [ LANG.EN, LANG.ZH ],\n [COUNTRY.HN]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.HR]: [ LANG.EN ],\n [COUNTRY.HU]: [ LANG.HU, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ID]: [ LANG.ID, LANG.EN ],\n [COUNTRY.IE]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.IL]: [ LANG.HE, LANG.EN ],\n [COUNTRY.IN]: [ LANG.EN ],\n [COUNTRY.IS]: [ LANG.EN ],\n [COUNTRY.IT]: [ LANG.IT, LANG.EN ],\n [COUNTRY.JM]: [ LANG.EN, LANG.ES, LANG.FR, LANG.ZH ],\n [COUNTRY.JO]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.JP]: [ LANG.JA, LANG.EN ],\n [COUNTRY.KE]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KH]: [ LANG.EN ],\n [COUNTRY.KI]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KM]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.KN]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KR]: [ LANG.KO, LANG.EN ],\n [COUNTRY.KW]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KY]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LA]: [ LANG.EN ],\n [COUNTRY.LC]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LI]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LK]: [ LANG.EN ],\n [COUNTRY.LS]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LT]: [ LANG.EN, LANG.RU, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LU]: [ LANG.EN, LANG.DE, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LV]: [ LANG.EN, LANG.RU, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MA]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MC]: [ LANG.FR, LANG.EN ],\n [COUNTRY.MD]: [ LANG.EN ],\n [COUNTRY.ME]: [ LANG.EN ],\n [COUNTRY.MG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MH]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MK]: [ LANG.EN ],\n [COUNTRY.ML]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.MN]: [ LANG.EN ],\n [COUNTRY.MQ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MR]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MS]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MT]: [ LANG.EN ],\n [COUNTRY.MU]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MV]: [ LANG.EN ],\n [COUNTRY.MW]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MX]: [ LANG.ES, LANG.EN ],\n [COUNTRY.MY]: [ LANG.EN ],\n [COUNTRY.MZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NA]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NC]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NE]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.NF]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NG]: [ LANG.EN ],\n [COUNTRY.NI]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.NL]: [ LANG.NL, LANG.EN ],\n [COUNTRY.NO]: [ LANG.NO, LANG.EN ],\n [COUNTRY.NP]: [ LANG.EN ],\n [COUNTRY.NR]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NU]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.OM]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PA]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.PE]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.PF]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PH]: [ LANG.EN ],\n [COUNTRY.PL]: [ LANG.PL, LANG.EN ],\n [COUNTRY.PM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PN]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PT]: [ LANG.PT, LANG.EN ],\n [COUNTRY.PW]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PY]: [ LANG.ES, LANG.EN ],\n [COUNTRY.QA]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH, LANG.AR ],\n [COUNTRY.RE]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.RO]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.RS]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.RU]: [ LANG.RU, LANG.EN ],\n [COUNTRY.RW]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.SA]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SB]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SC]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.SE]: [ LANG.SV, LANG.EN ],\n [COUNTRY.SG]: [ LANG.EN ],\n [COUNTRY.SH]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SI]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SJ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SK]: [ LANG.SK, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SL]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SN]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.SO]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SR]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ST]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SV]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.SZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TC]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TD]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.TG]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.TH]: [ LANG.TH, LANG.EN ],\n [COUNTRY.TJ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TN]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TO]: [ LANG.EN ],\n [COUNTRY.TR]: [ LANG.TR, LANG.EN ],\n [COUNTRY.TT]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TV]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TW]: [ LANG.ZH, LANG.EN ],\n [COUNTRY.TZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.UA]: [ LANG.EN, LANG.RU, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.UG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.US]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.UY]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.VA]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.VC]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.VE]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.VG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.VN]: [ LANG.EN ],\n [COUNTRY.VU]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.WF]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.WS]: [ LANG.EN ],\n [COUNTRY.YE]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.YT]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ZA]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ZM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ZW]: [ LANG.EN ]\n};\n","/* @flow */\n\nexport * from './button';\nexport * from './checkout';\nexport * from './funding';\nexport * from './fpti';\nexport * from './country';\nexport * from './misc';\nexport * from './locale';\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { regexMap } from './util';\n\n// eslint-disable-next-line no-use-before-define\nexport type ChildType = $ReadOnlyArray | JsxHTMLNode | string | void | null;\nexport type ChildrenType = $ReadOnlyArray;\ntype PropsType = ?{ class? : string, id? : string, innerHTML? : string };\n\nfunction htmlEncode(html : string = '') : string {\n return html.toString()\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(/\\//g, '/');\n}\n\nexport class JsxHTMLNode {\n name : string\n props : PropsType\n children : ChildrenType\n\n constructor(name : string, props : PropsType, children : ChildrenType) {\n this.name = name;\n this.props = props;\n this.children = children;\n }\n\n toString() : string {\n return `<${ this.name }${ this.props ? ' ' : '' }${ this.props ? this.propsToString() : '' }>${ this.childrenToString() }`;\n }\n\n propsToString() : string {\n const props = this.props;\n\n if (!props) {\n return '';\n }\n\n return Object.keys(props).filter(key => {\n return key !== 'innerHTML' && props && props[key] !== false;\n }).map(key => {\n if (props && props[key] === true) {\n return `${ htmlEncode(key) }`;\n }\n return props ? `${ htmlEncode(key) }=\"${ htmlEncode(props[key]) }\"` : '';\n }).join(' ');\n }\n\n childrenToString() : string {\n\n if (this.props && this.props.innerHTML) {\n return this.props.innerHTML;\n }\n\n if (!this.children) {\n return '';\n }\n\n let result = '';\n\n function iterate(children) {\n for (const child of children) {\n\n if (child === null || child === undefined) {\n continue;\n }\n\n if (Array.isArray(child)) {\n iterate(child);\n } else if (child instanceof JsxHTMLNode) {\n result += child.toString();\n } else {\n result += htmlEncode(child);\n }\n }\n }\n\n iterate(this.children);\n\n return result;\n }\n}\n\nexport class JsxHTMLNodeContainer extends JsxHTMLNode {\n\n\n constructor(children : ChildrenType) {\n super('', {}, children);\n }\n\n toString() : string {\n return this.childrenToString();\n }\n}\n\nexport function jsxToHTML(name : string, props : PropsType, ...children : ChildrenType) : JsxHTMLNode {\n return new JsxHTMLNode(name, props, children);\n}\n\nexport function jsxRender(template : string, renderers : { [string] : (string) =>?(JsxHTMLNode | $ReadOnlyArray) }) : JsxHTMLNode {\n\n // eslint-disable-next-line security/detect-unsafe-regex, unicorn/no-unsafe-regex\n const nodes = regexMap(template, /\\{\\s*([a-z]+)(?::\\s*([^} ]+))?\\s*\\}|([^${}]+)/g, (match, type, value, text) => {\n if (type) {\n if (!renderers[type]) {\n throw new Error(`Can not render type: ${ type }`);\n }\n\n return renderers[type](value);\n } else if (text && text.trim()) {\n\n if (!renderers.text) {\n return text;\n }\n\n if ((/
/).test(text)) {\n return renderers.break(text);\n } else {\n return renderers.text(text);\n }\n } else {\n return text;\n }\n });\n\n return new JsxHTMLNodeContainer(nodes);\n}\n","/* @flow */\n\nexport function isPromise(item : mixed) : boolean {\n try {\n if (!item) {\n return false;\n }\n\n if (typeof Promise !== 'undefined' && item instanceof Promise) {\n return true;\n }\n\n if (typeof window !== 'undefined' && typeof window.Window === 'function' && item instanceof window.Window) {\n return false;\n }\n\n if (typeof window !== 'undefined' && typeof window.constructor === 'function' && item instanceof window.constructor) {\n return false;\n }\n\n let toString = ({}).toString;\n\n if (toString) {\n let name = toString.call(item);\n\n if (name === '[object Window]' || name === '[object global]' || name === '[object DOMWindow]') {\n return false;\n }\n }\n\n if (typeof item.then === 'function') {\n return true;\n }\n } catch (err) {\n return false;\n }\n\n return false;\n}\n","/* @flow */\n\nimport type { ZalgoPromise } from './promise';\n\nconst dispatchedErrors = [];\nconst possiblyUnhandledPromiseHandlers : Array<(mixed, promise? : ZalgoPromise) => void> = [];\n\nexport function dispatchPossiblyUnhandledError(err : mixed, promise : ZalgoPromise) {\n\n if (dispatchedErrors.indexOf(err) !== -1) {\n return;\n }\n\n dispatchedErrors.push(err);\n\n setTimeout(() => {\n if (__DEBUG__) {\n // $FlowFixMe\n throw new Error(`${ err.stack || err.toString() }\\n\\nFrom promise:\\n\\n${ promise.stack }`);\n }\n\n throw err;\n }, 1);\n\n for (let j = 0; j < possiblyUnhandledPromiseHandlers.length; j++) {\n // $FlowFixMe\n possiblyUnhandledPromiseHandlers[j](err, promise);\n }\n}\n\nexport function onPossiblyUnhandledException(handler : (mixed, promise? : ZalgoPromise) => void) : { cancel : () => void } {\n possiblyUnhandledPromiseHandlers.push(handler);\n\n return {\n cancel() {\n possiblyUnhandledPromiseHandlers.splice(possiblyUnhandledPromiseHandlers.indexOf(handler), 1);\n }\n };\n}\n","/* @flow */\n\nimport type { ZalgoPromise } from './promise';\n\nlet activeCount = 0;\nlet flushPromise;\n\nfunction flushActive() {\n if (!activeCount && flushPromise) {\n const promise = flushPromise;\n flushPromise = null;\n promise.resolve();\n }\n}\n\nexport function startActive() {\n activeCount += 1;\n}\n\nexport function endActive() {\n activeCount -= 1;\n flushActive();\n}\n\nexport function awaitActive(Zalgo : Class>) : ZalgoPromise { // eslint-disable-line no-undef\n let promise = flushPromise = flushPromise || new Zalgo();\n flushActive();\n return promise;\n}\n","/* @flow */\n\nimport { isPromise } from './utils';\nimport { onPossiblyUnhandledException, dispatchPossiblyUnhandledError } from './exceptions';\nimport { startActive, endActive, awaitActive } from './flush';\n\nexport class ZalgoPromise {\n\n resolved : boolean\n rejected : boolean\n errorHandled : boolean\n value : R\n error : mixed\n handlers : Array<{\n promise : ZalgoPromise<*>,\n onSuccess : void | (result : R) => mixed,\n onError : void | (error : mixed) => mixed\n }>\n dispatching : boolean\n stack : string\n\n constructor(handler : ?(resolve : (result : R) => void, reject : (error : mixed) => void) => void) {\n\n this.resolved = false;\n this.rejected = false;\n this.errorHandled = false;\n\n this.handlers = [];\n\n if (handler) {\n\n let result;\n let error;\n let resolved = false;\n let rejected = false;\n let isAsync = false;\n\n startActive();\n\n try {\n handler(res => {\n if (isAsync) {\n this.resolve(res);\n } else {\n resolved = true;\n result = res;\n }\n\n }, err => {\n if (isAsync) {\n this.reject(err);\n } else {\n rejected = true;\n error = err;\n }\n });\n\n } catch (err) {\n endActive();\n this.reject(err);\n return;\n }\n\n endActive();\n\n isAsync = true;\n\n if (resolved) {\n // $FlowFixMe\n this.resolve(result);\n } else if (rejected) {\n this.reject(error);\n }\n }\n\n if (__DEBUG__) {\n try {\n throw new Error(`ZalgoPromise`);\n } catch (err) {\n this.stack = err.stack;\n }\n }\n }\n\n resolve(result : R) : ZalgoPromise {\n if (this.resolved || this.rejected) {\n return this;\n }\n\n if (isPromise(result)) {\n throw new Error('Can not resolve promise with another promise');\n }\n\n this.resolved = true;\n this.value = result;\n this.dispatch();\n\n return this;\n }\n\n reject(error : mixed) : ZalgoPromise {\n if (this.resolved || this.rejected) {\n return this;\n }\n\n if (isPromise(error)) {\n throw new Error('Can not reject promise with another promise');\n }\n\n if (!error) {\n // $FlowFixMe\n let err = (error && typeof error.toString === 'function' ? error.toString() : Object.prototype.toString.call(error));\n error = new Error(`Expected reject to be called with Error, got ${ err }`);\n }\n\n this.rejected = true;\n this.error = error;\n\n if (!this.errorHandled) {\n setTimeout(() => {\n if (!this.errorHandled) {\n dispatchPossiblyUnhandledError(error, this);\n }\n }, 1);\n }\n\n this.dispatch();\n\n return this;\n }\n\n asyncReject(error : mixed) : ZalgoPromise {\n this.errorHandled = true;\n this.reject(error);\n return this;\n }\n \n dispatch() {\n\n let { dispatching, resolved, rejected, handlers } = this;\n\n if (dispatching) {\n return;\n }\n\n if (!resolved && !rejected) {\n return;\n }\n\n this.dispatching = true;\n startActive();\n\n const chain = (firstPromise : ZalgoPromise, secondPromise : ZalgoPromise) => {\n return firstPromise.then(res => {\n secondPromise.resolve(res);\n }, err => {\n secondPromise.reject(err);\n });\n };\n\n for (let i = 0; i < handlers.length; i++) {\n\n let { onSuccess, onError, promise } = handlers[i];\n\n let result;\n\n if (resolved) {\n\n try {\n result = onSuccess ? onSuccess(this.value) : this.value;\n } catch (err) {\n promise.reject(err);\n continue;\n }\n\n } else if (rejected) {\n\n if (!onError) {\n promise.reject(this.error);\n continue;\n }\n\n try {\n result = onError(this.error);\n } catch (err) {\n promise.reject(err);\n continue;\n }\n }\n\n if (result instanceof ZalgoPromise && (result.resolved || result.rejected)) {\n\n if (result.resolved) {\n promise.resolve(result.value);\n } else {\n promise.reject(result.error);\n }\n\n result.errorHandled = true;\n\n } else if (isPromise(result)) {\n\n if (result instanceof ZalgoPromise && (result.resolved || result.rejected)) {\n if (result.resolved) {\n promise.resolve(result.value);\n } else {\n promise.reject(result.error);\n }\n\n } else {\n // $FlowFixMe\n chain(result, promise);\n }\n\n } else {\n\n promise.resolve(result);\n }\n }\n\n handlers.length = 0;\n this.dispatching = false;\n endActive();\n }\n\n then(onSuccess : void | (result : R) => (ZalgoPromise | Y), onError : void | (error : mixed) => (ZalgoPromise | Y)) : ZalgoPromise {\n\n if (onSuccess && typeof onSuccess !== 'function' && !onSuccess.call) {\n throw new Error('Promise.then expected a function for success handler');\n }\n\n if (onError && typeof onError !== 'function' && !onError.call) {\n throw new Error('Promise.then expected a function for error handler');\n }\n\n let promise : ZalgoPromise = new ZalgoPromise();\n\n this.handlers.push({\n promise,\n onSuccess,\n onError\n });\n\n this.errorHandled = true;\n\n this.dispatch();\n\n return promise;\n }\n\n catch(onError : (error : mixed) => ZalgoPromise | Y) : ZalgoPromise {\n return this.then(undefined, onError);\n }\n\n finally(onFinally : () => mixed) : ZalgoPromise {\n\n if (onFinally && typeof onFinally !== 'function' && !onFinally.call) {\n throw new Error('Promise.finally expected a function');\n }\n\n return this.then((result) => {\n return ZalgoPromise.try(onFinally)\n .then(() => {\n return result;\n });\n }, (err) => {\n return ZalgoPromise.try(onFinally)\n .then(() => {\n throw err;\n });\n });\n }\n\n timeout(time : number, err : ?Error) : ZalgoPromise {\n\n if (this.resolved || this.rejected) {\n return this;\n }\n\n let timeout = setTimeout(() => {\n\n if (this.resolved || this.rejected) {\n return;\n }\n\n this.reject(err || new Error(`Promise timed out after ${ time }ms`));\n\n }, time);\n\n return this.then(result => {\n clearTimeout(timeout);\n return result;\n });\n }\n\n // $FlowFixMe\n toPromise() : Promise {\n // $FlowFixMe\n if (typeof Promise === 'undefined') {\n throw new TypeError(`Could not find Promise`);\n }\n // $FlowFixMe\n return Promise.resolve(this); // eslint-disable-line compat/compat\n }\n\n static resolve(value : X | ZalgoPromise) : ZalgoPromise {\n\n if (value instanceof ZalgoPromise) {\n return value;\n }\n\n if (isPromise(value)) {\n // $FlowFixMe\n return new ZalgoPromise((resolve, reject) => value.then(resolve, reject));\n }\n\n return new ZalgoPromise().resolve(value);\n }\n\n static reject(error : mixed) : ZalgoPromise {\n return new ZalgoPromise().reject(error);\n }\n\n static asyncReject(error : mixed) : ZalgoPromise {\n return new ZalgoPromise().asyncReject(error);\n }\n\n static all>(promises : X) : ZalgoPromise<$TupleMap(ZalgoPromise | Y) => Y>> { // eslint-disable-line no-undef\n\n let promise = new ZalgoPromise();\n let count = promises.length;\n let results = [];\n\n if (!count) {\n promise.resolve(results);\n return promise;\n }\n\n const chain = (i : number, firstPromise : ZalgoPromise, secondPromise : ZalgoPromise) => {\n return firstPromise.then(res => {\n results[i] = res;\n count -= 1;\n if (count === 0) {\n promise.resolve(results);\n }\n }, err => {\n secondPromise.reject(err);\n });\n };\n\n for (let i = 0; i < promises.length; i++) {\n let prom = promises[i];\n\n if (prom instanceof ZalgoPromise) {\n if (prom.resolved) {\n results[i] = prom.value;\n count -= 1;\n continue;\n }\n } else if (!isPromise(prom)) {\n results[i] = prom;\n count -= 1;\n continue;\n }\n\n chain(i, ZalgoPromise.resolve(prom), promise);\n }\n\n if (count === 0) {\n promise.resolve(results);\n }\n\n return promise;\n }\n\n static hash(promises : O) : ZalgoPromise<$ObjMap(ZalgoPromise | Y) => Y>> { // eslint-disable-line no-undef\n let result = {};\n \n return ZalgoPromise.all(Object.keys(promises).map(key => {\n return ZalgoPromise.resolve(promises[key]).then(value => {\n result[key] = value;\n });\n })).then(() => {\n return result;\n });\n }\n\n static map(items : Array, method : (T) => (ZalgoPromise | X)) : ZalgoPromise> {\n // $FlowFixMe\n return ZalgoPromise.all(items.map(method));\n }\n\n static onPossiblyUnhandledException(handler : (err : mixed) => void) : { cancel : () => void } {\n return onPossiblyUnhandledException(handler);\n }\n\n static try>(method : (...args : A) => (ZalgoPromise | Y), context : ?C, args : ?A) : ZalgoPromise {\n\n if (method && typeof method !== 'function' && !method.call) {\n throw new Error('Promise.try expected a function');\n }\n\n let result;\n\n startActive();\n \n try {\n // $FlowFixMe\n result = method.apply(context, args || []);\n } catch (err) {\n endActive();\n return ZalgoPromise.reject(err);\n }\n\n endActive();\n\n return ZalgoPromise.resolve(result);\n }\n\n static delay(delay : number) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n setTimeout(resolve, delay);\n });\n }\n\n static isPromise(value : mixed) : boolean {\n\n if (value && value instanceof ZalgoPromise) {\n return true;\n }\n\n return isPromise(value);\n }\n\n static flush() : ZalgoPromise {\n return awaitActive(ZalgoPromise);\n }\n}\n","/* @flow */\n\nexport { ZalgoPromise } from './promise';\n","/* @flow */\n\nimport { on, send } from 'post-robot/src';\nimport { isWindowClosed, getDomain, isSameDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { config } from '../config';\n\nimport { noop } from './util';\n\nexport function proxyMethod(name : string, win : ?CrossDomainWindowType, originalMethod : Function) : Function {\n\n if (win && getDomain() === config.paypalDomain && !isSameDomain(win)) {\n\n if (win) {\n send(win, `proxy_${ name }`, { originalMethod }).catch(noop);\n }\n\n return originalMethod;\n }\n\n let methods = [];\n\n on(`proxy_${ name }`, { domain: config.paypal_domain_regex }, ({ data }) => {\n methods.push(data.originalMethod);\n });\n\n return function postMessageProxy() : mixed {\n\n methods = methods.filter(method => !isWindowClosed(method.source));\n\n if (methods.length) {\n return methods[methods.length - 1].apply(this, arguments).catch(() => {\n return originalMethod.apply(this, arguments);\n });\n }\n\n return originalMethod.apply(this, arguments);\n };\n}\n","/* @flow */\n\nimport { CONFIG as POSTROBOT_CONFIG } from 'post-robot/src';\nimport { setTransport, getTransport, addPayloadBuilder, addHeaderBuilder, addMetaBuilder,\n addTrackingBuilder, init, logLevels, config as loggerConfig } from 'beaver-logger/client';\nimport { getParent, PROTOCOL } from 'cross-domain-utils/src';\n\nimport { config } from '../config';\nimport { FPTI, PAYMENT_TYPE } from '../constants';\n\nimport { getSessionID, getButtonSessionID } from './session';\nimport { proxyMethod } from './proxy';\nimport { once } from './util';\nimport { getQueryParam } from './dom';\nimport { isPayPalDomain } from './security';\n\nfunction getRefererDomain() : string {\n return (window.xchild && window.xchild.getParentDomain)\n ? window.xchild.getParentDomain()\n : window.location.host;\n}\n\nconst setupProxyLogTransport = once(() => {\n setTransport(proxyMethod('log', getParent(window), getTransport()));\n});\n\nfunction getToken() : ?string {\n if (window.root && window.root.token) {\n return window.root.token;\n }\n\n if (isPayPalDomain()) {\n const queryToken = getQueryParam('token');\n\n if (queryToken) {\n return queryToken;\n }\n }\n}\n\nexport function initLogger() {\n\n setupProxyLogTransport();\n\n addPayloadBuilder(() => {\n return {\n referer: getRefererDomain(),\n host: window.location.host,\n path: window.location.pathname,\n env: config.env,\n country: config.locale.country,\n lang: config.locale.lang,\n uid: getSessionID(),\n ver: __PAYPAL_CHECKOUT__.__MINOR_VERSION__\n };\n });\n\n addHeaderBuilder(() => {\n return {\n 'x-app-name': 'checkoutjs'\n };\n });\n\n addMetaBuilder(() => {\n return {\n state: config.state\n };\n });\n\n addTrackingBuilder((payload = {}) => {\n\n const sessionID = getSessionID();\n const paymentToken = getToken();\n const buttonSessionID = payload[FPTI.KEY.BUTTON_SESSION_UID] || getButtonSessionID();\n\n let contextType;\n let contextID;\n\n if (paymentToken) {\n contextType = FPTI.CONTEXT_TYPE[PAYMENT_TYPE.EC_TOKEN];\n contextID = paymentToken;\n } else if (buttonSessionID) {\n contextType = FPTI.CONTEXT_TYPE.BUTTON_SESSION_ID;\n contextID = buttonSessionID;\n } else {\n contextType = payload[FPTI.KEY.CONTEXT_TYPE];\n contextID = payload[FPTI.KEY.CONTEXT_ID];\n }\n\n return {\n [ FPTI.KEY.FEED ]: FPTI.FEED.CHECKOUTJS,\n [ FPTI.KEY.DATA_SOURCE ]: FPTI.DATA_SOURCE.CHECKOUT,\n [ FPTI.KEY.CONTEXT_TYPE ]: contextType,\n [ FPTI.KEY.CONTEXT_ID ]: contextID,\n [ FPTI.KEY.SELLER_ID ]: config.merchantID,\n [ FPTI.KEY.SESSION_UID ]: sessionID,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: buttonSessionID,\n [ FPTI.KEY.VERSION ]: config.version,\n [ FPTI.KEY.TOKEN ]: paymentToken,\n [ FPTI.KEY.REFERER ]: getRefererDomain()\n };\n });\n\n const prefix = 'ppxo';\n\n if (window.location.protocol !== PROTOCOL.FILE) {\n init({\n uri: config.loggerUrl,\n heartbeat: false,\n logPerformance: false,\n prefix,\n logLevel: __PAYPAL_CHECKOUT__.__DEFAULT_LOG_LEVEL__\n });\n }\n}\n\nexport function setLogLevel(logLevel : string) {\n\n if (logLevels.indexOf(logLevel) === -1) {\n throw new Error(`Invalid logLevel: ${ logLevel }`);\n }\n\n config.logLevel = logLevel;\n loggerConfig.logLevel = logLevel;\n POSTROBOT_CONFIG.LOG_LEVEL = logLevel;\n window.LOG_LEVEL = logLevel;\n}\n","/* @flow */\n\nimport { info, flush as flushLogs } from 'beaver-logger/client';\n\nimport { config } from '../config';\n\nimport { isIEIntranet, getUserAgent } from './device';\nimport { once } from './util';\n\nconst bowserCache = {};\n\nfunction getBowser() : Object {\n\n const userAgent = getUserAgent();\n\n if (bowserCache[userAgent]) {\n return bowserCache[userAgent];\n }\n\n delete require.cache[require.resolve('bowser/bowser.min')];\n const bowser = require('bowser/bowser.min');\n\n bowserCache[userAgent] = bowser;\n\n return bowser;\n}\n\nexport function getBrowser() : { browser? : string, version? : string } {\n\n const bowser = getBowser();\n\n for (const browser of Object.keys(config.SUPPORTED_BROWSERS)) {\n if (bowser[browser]) {\n return { browser, version: bowser.version };\n }\n }\n\n return {};\n}\n\nfunction isBrowserEligible() : boolean {\n\n if (isIEIntranet()) {\n return false;\n }\n\n const bowser = getBowser();\n const { browser, version } = getBrowser();\n\n if (browser && version && bowser.compareVersions([ version, config.SUPPORTED_BROWSERS[browser] ]) === -1) {\n return false;\n }\n\n return true;\n}\n\nconst eligibilityResults = {};\n\nexport function isEligible() : boolean {\n\n if (isIEIntranet()) {\n return false;\n }\n\n const userAgent = window.navigator.userAgent;\n\n if (userAgent && eligibilityResults.hasOwnProperty(userAgent)) {\n return eligibilityResults[userAgent];\n }\n\n const result = isBrowserEligible();\n\n eligibilityResults[userAgent] = result;\n\n return result;\n}\n\nexport const checkRecognizedBrowser = once((state : string) => {\n\n const { browser } = getBrowser();\n\n if (!browser) {\n const { name, version, mobile, android, ios } = getBowser();\n info(`unrecognized_browser_${ state }`, { name, version, mobile, android, ios });\n flushLogs();\n }\n});\n","/* @flow */\n\nimport { warn } from 'beaver-logger/client';\n\nimport { isIE, isIEIntranet, isIECompHeader } from './device';\n\nfunction logWarn(err) : void {\n if (window.console) {\n if (window.console.warn) {\n return window.console.warn(err);\n }\n\n if (window.console.log) {\n return window.console.log(err);\n }\n }\n}\n\nexport function checkForCommonErrors() {\n\n if (JSON.stringify([]) !== '[]') {\n // $FlowFixMe\n if (Array.prototype.toJSON) {\n logWarn(`Custom Array.prototype.toJSON is causing incorrect json serialization of arrays. This is likely to cause issues. Probable cause is Prototype.js`);\n } else {\n logWarn(`JSON.stringify is doing incorrect serialization of arrays. This is likely to cause issues.`);\n }\n\n warn(`json_stringify_array_broken`);\n }\n\n if (JSON.stringify({}) !== '{}') {\n logWarn(`JSON.stringify is doing incorrect serialization of objects. This is likely to cause issues.`);\n\n warn(`json_stringify_object_broken`);\n }\n\n if (isIEIntranet()) {\n warn(`ie_intranet_mode`);\n }\n\n if (isIE() && !isIECompHeader()) {\n warn(`ie_meta_compatibility_header_missing`, {\n message: `Drop tag: ` });\n }\n\n // eslint-disable-next-line no-unused-vars\n function foo(bar, baz, zomg) {\n // pass;\n }\n\n if (foo.bind({ a: 1 }).length !== 3) {\n warn(`function_bind_arrity_overwritten`);\n }\n\n if (window.opener && window.parent !== window) {\n warn(`window_has_opener_and_parent`);\n }\n\n if (window.name && window.name.indexOf('__prerender') === 0) {\n warn(`prerender_running_checkoutjs`);\n }\n\n const context = {};\n\n function returnContext() : typeof context {\n return this;\n }\n\n if (returnContext.bind(context)() !== context) {\n warn(`function_bind_broken`);\n }\n\n if (window.Window && window.constructor && window.Window !== window.constructor) {\n warn(`window_constructor_does_not_match_window`);\n }\n\n // $FlowFixMe\n if (Object.assign && JSON.stringify({ a: 1, b: 2, c: 3 }) !== JSON.stringify({ a: 1, b: 2, c: 3 })) { // eslint-disable-line no-self-compare, compat/compat\n warn(`object_assign_broken`);\n }\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { addPayloadBuilder } from 'beaver-logger/client';\nimport { type SameDomainWindowType } from 'cross-domain-utils/src';\n\ntype RequestOptionsType = {|\n url : string,\n method? : string,\n headers? : { [key : string] : string },\n json? : Object,\n data? : { [key : string] : string },\n body? : string,\n win? : SameDomainWindowType,\n timeout? : number\n|};\n\nconst HEADERS = {\n CONTENT_TYPE: 'content-type',\n ACCEPT: 'accept'\n};\n\nconst headerBuilders = [];\nconst corrids = [];\n\naddPayloadBuilder(() => {\n return {\n prev_corr_ids: corrids.join(',')\n };\n});\n\nfunction parseHeaders(rawHeaders : string = '') : { [string] : string } {\n const result = {};\n for (const line of rawHeaders.trim().split('\\n')) {\n const [ key, ...values ] = line.split(':');\n result[key.toLowerCase()] = values.join(':').trim();\n }\n return result;\n}\n\nexport function request({ url, method = 'get', headers = {}, json, data, body, win = window, timeout = 0 } : RequestOptionsType) : ZalgoPromise {\n\n if (url === '/demo/checkout/api/braintree/client-token/') {\n // $FlowFixMe\n return ZalgoPromise.resolve('eyJ2ZXJzaW9uIjoyLCJhdXRob3JpemF0aW9uRmluZ2VycHJpbnQiOiJjMDFhZmRkM2Y1OTJmNWVhNTNlMzE5MWQwYmIyMWVjYjM5NzNlZGM1MzkwNDZiMjJmNTA2ODEyNzIzZmRlMTJifGNsaWVudF9pZD1jbGllbnRfaWQkc2FuZGJveCQ0ZHByYmZjNnBoNTk1Y2NqXHUwMDI2Y3JlYXRlZF9hdD0yMDE3LTA0LTI2VDIzOjI2OjU5Ljg3OTA3ODYwNiswMDAwXHUwMDI2bWVyY2hhbnRfaWQ9M3cydHR2d2QyNDY1NDhoZCIsImNvbmZpZ1VybCI6Imh0dHBzOi8vYXBpLnNhbmRib3guYnJhaW50cmVlZ2F0ZXdheS5jb206NDQzL21lcmNoYW50cy8zdzJ0dHZ3ZDI0NjU0OGhkL2NsaWVudF9hcGkvdjEvY29uZmlndXJhdGlvbiIsImNoYWxsZW5nZXMiOltdLCJlbnZpcm9ubWVudCI6InNhbmRib3giLCJjbGllbnRBcGlVcmwiOiJodHRwczovL2FwaS5zYW5kYm94LmJyYWludHJlZWdhdGV3YXkuY29tOjQ0My9tZXJjaGFudHMvM3cydHR2d2QyNDY1NDhoZC9jbGllbnRfYXBpIiwiYXNzZXRzVXJsIjoiaHR0cHM6Ly9hc3NldHMuYnJhaW50cmVlZ2F0ZXdheS5jb20iLCJhdXRoVXJsIjoiaHR0cHM6Ly9hdXRoLnZlbm1vLnNhbmRib3guYnJhaW50cmVlZ2F0ZXdheS5jb20iLCJhbmFseXRpY3MiOnsidXJsIjoiaHR0cHM6Ly9jbGllbnQtYW5hbHl0aWNzLnNhbmRib3guYnJhaW50cmVlZ2F0ZXdheS5jb20vM3cydHR2d2QyNDY1NDhoZCJ9LCJ0aHJlZURTZWN1cmVFbmFibGVkIjpmYWxzZSwicGF5cGFsRW5hYmxlZCI6dHJ1ZSwicGF5cGFsIjp7ImRpc3BsYXlOYW1lIjoiYmFyY28uMDMtZmFjaWxpdGF0b3JAZ21haWwuY29tIiwiY2xpZW50SWQiOiJBV3VZdnFnMGtaN2Y5S0V4TVpqZU53T3RjQV8yZVhnOWpMZy1QSnBGX0pnYk44M0YyVml5aEdnV2JCNDg4RGU3MFpucGRBZEI2TUNqekNqSyIsInByaXZhY3lVcmwiOiJodHRwczovL2V4YW1wbGUuY29tIiwidXNlckFncmVlbWVudFVybCI6Imh0dHBzOi8vZXhhbXBsZS5jb20iLCJiYXNlVXJsIjoiaHR0cHM6Ly9hc3NldHMuYnJhaW50cmVlZ2F0ZXdheS5jb20iLCJhc3NldHNVcmwiOiJodHRwczovL2NoZWNrb3V0LnBheXBhbC5jb20iLCJkaXJlY3RCYXNlVXJsIjpudWxsLCJhbGxvd0h0dHAiOnRydWUsImVudmlyb25tZW50Tm9OZXR3b3JrIjpmYWxzZSwiZW52aXJvbm1lbnQiOiJvZmZsaW5lIiwidW52ZXR0ZWRNZXJjaGFudCI6ZmFsc2UsImJyYWludHJlZUNsaWVudElkIjoibWFzdGVyY2xpZW50MyIsImJpbGxpbmdBZ3JlZW1lbnRzRW5hYmxlZCI6dHJ1ZSwibWVyY2hhbnRBY2NvdW50SWQiOiJVU0QiLCJjdXJyZW5jeUlzb0NvZGUiOiJVU0QifSwiY29pbmJhc2VFbmFibGVkIjpmYWxzZSwibWVyY2hhbnRJZCI6IjN3MnR0dndkMjQ2NTQ4aGQiLCJ2ZW5tbyI6Im9mZiJ9');\n }\n\n return new ZalgoPromise((resolve, reject) => {\n\n if ((json && data) || (json && body) || (data && json)) {\n throw new Error(`Only options.json or options.data or options.body should be passed`);\n }\n\n const normalizedHeaders = {};\n\n for (const key of Object.keys(headers)) {\n normalizedHeaders[key.toLowerCase()] = headers[key];\n }\n\n if (json) {\n normalizedHeaders[HEADERS.CONTENT_TYPE] = normalizedHeaders[HEADERS.CONTENT_TYPE] || 'application/json';\n } else if (data || body) {\n normalizedHeaders[HEADERS.CONTENT_TYPE] = normalizedHeaders[HEADERS.CONTENT_TYPE] || 'application/x-www-form-urlencoded; charset=utf-8';\n }\n\n normalizedHeaders[HEADERS.ACCEPT] = normalizedHeaders[HEADERS.ACCEPT] || 'application/json';\n\n for (const headerBuilder of headerBuilders) {\n const builtHeaders = headerBuilder();\n\n for (const key of Object.keys(builtHeaders)) {\n normalizedHeaders[key.toLowerCase()] = builtHeaders[key];\n }\n }\n\n const xhr = new win.XMLHttpRequest();\n\n xhr.addEventListener('load', function xhrLoad() : void {\n\n const responseHeaders = parseHeaders(this.getAllResponseHeaders());\n const corrID = responseHeaders['paypal-debug-id'] || 'unknown';\n\n if (responseHeaders['paypal-debug-id']) {\n corrids.push(responseHeaders['paypal-debug-id']);\n }\n\n if (!this.status) {\n return reject(new Error(`Request to ${ method.toLowerCase() } ${ url } failed: no response status code. Correlation id: ${ corrID }`));\n }\n \n const contentType = responseHeaders['content-type'];\n const isJSON = contentType && (contentType.indexOf('application/json') === 0 || contentType.indexOf('text/json') === 0);\n let res = this.responseText;\n\n try {\n res = JSON.parse(this.responseText);\n } catch (err) {\n if (isJSON) {\n return reject(new Error(`Invalid json: ${ this.responseText }. Correlation id: ${ corrID }`));\n }\n }\n\n if (this.status >= 400) {\n let message = `Request to ${ method.toLowerCase() } ${ url } failed with ${ this.status } error. Correlation id: ${ corrID }`;\n\n if (res) {\n if (typeof res === 'object' && res !== null) {\n res = JSON.stringify(res, null, 4);\n }\n\n message = `${ message }\\n\\n${ res }\\n`;\n }\n\n return reject(new Error(message));\n }\n\n return resolve(res);\n\n }, false);\n\n xhr.addEventListener('error', function xhrError(evt) {\n const corrID = this.getResponseHeader('paypal-debug-id');\n reject(new Error(`Request to ${ method.toLowerCase() } ${ url } failed: ${ evt.toString() }. Correlation id: ${ corrID }`));\n }, false);\n\n xhr.open(method, url, true);\n\n for (const key in normalizedHeaders) {\n if (normalizedHeaders.hasOwnProperty(key)) {\n xhr.setRequestHeader(key, normalizedHeaders[key]);\n }\n }\n\n if (json) {\n body = JSON.stringify(json);\n } else if (data) {\n body = Object.keys(data).map(key => {\n return `${ encodeURIComponent(key) }=${ data ? encodeURIComponent(data[key]) : '' }`;\n }).join('&');\n }\n\n xhr.timeout = timeout;\n xhr.ontimeout = function xhrTimeout() {\n reject(new Error(`Request to ${ method.toLowerCase() } ${ url } has timed out`));\n };\n\n xhr.send(body);\n });\n}\n\nrequest.get = (url : string, options = {}) => {\n return request({ method: 'get', url, ...options });\n};\n\nrequest.post = (url : string, data, options = {}) => {\n return request({ method: 'post', url, data, ...options });\n};\n\nrequest.addHeaderBuilder = (method) => {\n headerBuilders.push(method);\n};\n","/* @flow */\n\nimport { info, track, flush as flushLogs } from 'beaver-logger/client';\n\nimport { FPTI } from '../constants';\n\nimport { match } from './util';\nimport { getStorageState, getStorageID } from './session';\n\ntype Throttle = {|\n isEnabled : () => boolean,\n isDisabled : () => boolean,\n getTreatment : () => string,\n log : (string, payload? : { [string] : ?string }) => Throttle,\n logStart : (payload? : { [string] : ?string }) => Throttle,\n logComplete : (payload? : { [string] : ?string }) => Throttle\n|};\n\nfunction getThrottlePercentile(name : string) : number {\n return getStorageState(storage => {\n storage.throttlePercentiles = storage.throttlePercentiles || {};\n storage.throttlePercentiles[name] = storage.throttlePercentiles[name] || Math.floor(Math.random() * 100);\n return storage.throttlePercentiles[name];\n });\n}\n\nconst THROTTLE_GROUP = {\n TEST: 'test',\n CONTROL: 'control',\n THROTTLE: 'throttle'\n};\n\nexport function getThrottle(name : string, sample : number, sticky : boolean = true) : Throttle {\n\n const uid = getStorageID();\n\n const percentile = sticky ? getThrottlePercentile(name) : Math.floor(Math.random() * 100);\n\n let group;\n\n if (percentile < sample) {\n group = THROTTLE_GROUP.TEST;\n } else if ((sample >= 50) || ((sample <= percentile) && (percentile < (sample * 2)))) {\n group = THROTTLE_GROUP.CONTROL;\n } else {\n group = THROTTLE_GROUP.THROTTLE;\n }\n\n const treatment = `${ name }_${ group }`;\n\n let started = false;\n let forced = false;\n\n try {\n if (window.localStorage && window.localStorage.getItem(name)) {\n forced = true;\n }\n } catch (err) {\n // pass\n }\n\n return {\n\n isEnabled() : boolean {\n return (group === THROTTLE_GROUP.TEST) || forced;\n },\n\n isDisabled() : boolean {\n return (group !== THROTTLE_GROUP.TEST) && !forced;\n },\n\n getTreatment() : string {\n return treatment;\n },\n\n log(checkpointName : string, payload? : { [string] : ?string } = {}) : Throttle {\n if (!started) {\n return this;\n }\n\n const checkpoint = `${ name }_${ treatment }_${ checkpointName }`;\n info(checkpoint, { ...payload, expuid: uid });\n\n track({\n [ FPTI.KEY.EXPERIMENT_NAME ]: name,\n [ FPTI.KEY.TREATMENT_NAME ]: treatment,\n ...payload\n });\n\n flushLogs();\n return this;\n },\n\n logStart(payload? : { [string] : ?string } = {}) : Throttle {\n started = true;\n return this.log(`start`, payload);\n },\n\n logComplete(payload? : { [string] : ?string } = {}) : Throttle {\n if (!started) {\n return this;\n }\n\n return this.log(`complete`, payload);\n }\n };\n}\n\nexport function getReturnToken() : ?string {\n\n const token = match(window.location.href, /token=((EC-)?[A-Z0-9]+)/);\n const payer = match(window.location.href, /PayerID=([A-Z0-9]+)/);\n\n if (token && payer) {\n return token;\n }\n}\n","/* @flow */\n\nimport { debug } from 'beaver-logger/client';\nimport { getDomain } from 'cross-domain-utils/src';\n\nimport { config } from '../config';\n\nimport { memoize, domainMatches } from './util';\n\nexport const getCurrentScript = memoize(() : ?HTMLScriptElement => {\n\n const scripts = Array.prototype.slice.call(document.getElementsByTagName('script'));\n\n for (const script of scripts) {\n if (script.src && (script.src.replace(/^https?:/, '').split('?')[0] === config.scriptUrl || script.hasAttribute('data-paypal-checkout'))) {\n return script;\n }\n\n if (script.src && (script.src.indexOf('paypal.checkout.v4.js') !== -1)) {\n return script;\n }\n }\n\n if (document.currentScript) { // eslint-disable-line compat/compat\n debug(`current_script_not_recognized`, { src: document.currentScript.src }); // eslint-disable-line compat/compat\n }\n});\n\nexport function isPayPalObjects() : boolean {\n return Boolean(getCurrentScript());\n}\n\nexport function getScriptVersion() : string {\n if (__PAYPAL_CHECKOUT__.__MAJOR__ && isPayPalObjects()) {\n return __MIN__ ? 'min' : __PAYPAL_CHECKOUT__.__MAJOR_VERSION__;\n } else {\n return __MIN__ ? `${ __PAYPAL_CHECKOUT__.__MINOR_VERSION__ }.min` : __PAYPAL_CHECKOUT__.__MINOR_VERSION__;\n }\n}\n\nexport function getCurrentScriptUrl() : string {\n const script = getCurrentScript();\n\n if (script && typeof script.src === 'string') {\n let scriptUrl = script.src;\n\n if (scriptUrl.indexOf('http://www.paypalobjects.com') === 0) {\n scriptUrl = scriptUrl.replace('http://', 'https://');\n }\n\n return scriptUrl;\n }\n\n return `https://www.paypalobjects.com/api/checkout.${ __PAYPAL_CHECKOUT__.__MINOR_VERSION__ }${ __MIN__ ? '.min' : '' }.js`;\n}\n\nexport function getDomainSetting(name : string, def : ?T) : ?T {\n\n const hostname = window.xchild\n ? window.xchild.getParentDomain()\n : getDomain();\n\n if (config.domain_settings) {\n for (const domain of Object.keys(config.domain_settings)) {\n if (domainMatches(hostname, domain)) {\n return config.domain_settings[domain][name];\n }\n }\n }\n\n return def;\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { once, bridge } from 'post-robot/src';\n\nimport { config } from '../config';\n\nimport { isIEIntranet } from './device';\nimport { memoize } from './util';\nimport { getScriptVersion } from './script';\nimport { extendUrl } from './dom';\n\ntype FrameMetaData = {|\n iframeEligible : boolean,\n iframeEligibleReason : string,\n // eslint-disable-next-line flowtype/no-mutable-array\n rememberedFunding : Array\n|};\n\nexport const openMetaFrame = memoize((env : string = config.env) : ZalgoPromise => {\n return ZalgoPromise.try(() => {\n\n if (isIEIntranet()) {\n return {\n iframeEligible: false,\n iframeEligibleReason: 'ie_intranet',\n rememberedFunding: []\n };\n }\n\n const metaFrameUrl : string = config.metaFrameUrls[env];\n const metaFrameDomain : string = config.paypalDomains[env];\n\n return ZalgoPromise.try(() => {\n if (!bridge) {\n throw new Error(`Opening meta window without bridge support is not currently supported`);\n }\n\n const metaListener = once('meta', { domain: metaFrameDomain });\n\n return bridge.openBridge(extendUrl(metaFrameUrl, { version: getScriptVersion() }), metaFrameDomain)\n .then(() => metaListener)\n .then(({ data }) => data);\n });\n });\n});\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { FUNDING } from '../constants';\nimport type { FundingSource, FundingList } from '../types';\n\nimport { getStorageState, getGlobalState, getSessionState } from './session';\nimport { isDevice } from './device';\nimport { openMetaFrame } from './meta';\nimport { identity } from './util';\n\n// $FlowFixMe\nexport function getRememberedFunding(handler? : (rememberedFunding : FundingList) => T = identity) : T {\n return getStorageState(storage => {\n storage.rememberedFunding = storage.rememberedFunding || [];\n return handler(storage.rememberedFunding);\n });\n}\n\nfunction hasRememberedFunding(source : FundingSource) : ?boolean {\n\n if (getRememberedFunding(rememberedFunding => rememberedFunding.indexOf(source) !== -1)) {\n return true;\n }\n\n if (getSessionState(session => session.recentlyCheckedRemembered)) {\n return true;\n }\n\n return false;\n}\n\n\nfunction isRememberedFunding(source : FundingSource) : boolean {\n\n if (getRememberedFunding(rememberedFunding => rememberedFunding.indexOf(source) !== -1)) {\n return true;\n }\n\n if (getSessionState(session => session.recentlyCheckedRemembered)) {\n return false;\n }\n\n throw new Error(`Can not find remembered funding result`);\n}\n\nfunction getRememberedFundingPromises() : { [FundingSource] : ZalgoPromise } {\n return getGlobalState(global => {\n global.rememberFundingPromises = global.rememberFundingPromises || {};\n return global.rememberFundingPromises;\n });\n}\n\nfunction getRememberedFundingPromise(source : FundingSource) : ZalgoPromise {\n const promises = getRememberedFundingPromises();\n const promise = promises[source] = promises[source] || new ZalgoPromise();\n if (hasRememberedFunding(source)) {\n promise.resolve(isRememberedFunding(source));\n }\n return promise;\n}\n\nfunction flushRememberedFundingPromises() {\n const promises = getRememberedFundingPromises();\n const rememberedFunding = getRememberedFunding(sources => sources);\n\n for (const source of Object.keys(promises)) {\n promises[source].resolve(rememberedFunding.indexOf(source) !== -1);\n }\n}\n\nexport function rememberFunding(sources : FundingList) {\n getRememberedFunding(rememberedFunding => {\n for (const source of sources) {\n\n if (source === FUNDING.VENMO && !isDevice()) {\n continue;\n }\n if (rememberedFunding.indexOf(source) === -1) {\n rememberedFunding.push(source);\n }\n }\n\n flushRememberedFundingPromises();\n });\n\n getSessionState(session => {\n session.recentlyCheckedRemembered = true;\n });\n}\n\nfunction loadMeta() : ZalgoPromise {\n return openMetaFrame().then(({ rememberedFunding }) => {\n rememberFunding(rememberedFunding || []);\n });\n}\n\nexport function isFundingRemembered(source : FundingSource = FUNDING.PAYPAL) : ZalgoPromise {\n\n if (hasRememberedFunding(source)) {\n return getRememberedFundingPromise(source);\n }\n\n return loadMeta().then(() => {\n return getRememberedFundingPromise(source);\n });\n}\n\nexport function precacheRememberedFunding() : ZalgoPromise {\n if (!getSessionState(session => session.recentlyCheckedRemembered)) {\n return loadMeta();\n }\n return ZalgoPromise.resolve();\n}\n","/* @flow */\n\nexport * from './device';\nexport * from './util';\nexport * from './logger';\nexport * from './eligibility';\nexport * from './errors';\nexport * from './dom';\nexport * from './http';\nexport * from './beacon';\nexport * from './throttle';\nexport * from './namespace';\nexport * from './session';\nexport * from './proxy';\nexport * from './meta';\nexport * from './funding';\nexport * from './script';\nexport * from './jsx';\nexport * from './security';\n","/* @flow weak */\n/* eslint max-lines: 0 */\n\nimport { ENV, COUNTRY, LANG, LOCALE } from '../constants';\n\nfunction getDefaultEnv() : $Values {\n if (__TEST__) {\n return ENV.TEST;\n }\n\n if (typeof window === 'undefined' || typeof window.location === 'undefined') {\n return ENV.PRODUCTION;\n }\n\n if (window.location.host.indexOf('localhost.paypal.com') !== -1) {\n return ENV.LOCAL;\n }\n\n if (window.location.host.indexOf('qa.paypal.com') !== -1) {\n return ENV.STAGE;\n }\n\n if (window.location.host.indexOf('sandbox.paypal.com') !== -1) {\n return ENV.SANDBOX;\n }\n\n return ENV.PRODUCTION;\n}\n\nexport const config = {\n\n locales: LOCALE,\n\n scriptUrl: __TEST__\n ? `//${ window.location.host }/base/src/load.js`\n : `//www.paypalobjects.com/api/${ __FILE_NAME__ }`,\n\n // eslint-disable-next-line security/detect-unsafe-regex, unicorn/no-unsafe-regex\n paypal_domain_regex: /^(https?|mock):\\/\\/[a-zA-Z0-9_.-]+\\.paypal\\.com(:\\d+)?$/,\n\n version: __PAYPAL_CHECKOUT__.__MINOR_VERSION__,\n\n cors: true,\n\n env: getDefaultEnv(),\n\n state: 'checkoutjs',\n\n locale: {\n country: COUNTRY.US,\n lang: LANG.EN\n },\n\n stage: 'msmaster',\n stageDomain: 'qa.paypal.com',\n\n get stageUrl() : string {\n return `${ config.stage }.${ config.stageDomain }`;\n },\n\n get apiStageUrl() : string {\n return `${ config.apiStage }.${ config.stageDomain }`;\n },\n\n get localhostUrl() : string {\n return `http://localhost.paypal.com:${ config.ports.default }`;\n },\n\n set localhostUrl(val) {\n delete this.localhostUrl;\n this.localhostUrl = val;\n },\n\n merchantID: '',\n authCode: '',\n\n logLevel: __PAYPAL_CHECKOUT__.__DEFAULT_LOG_LEVEL__,\n\n throttles: {\n v4_mobile_device: 0\n },\n\n domain_settings: {\n 'walmart.com': {\n ie_full_page: false,\n allow_full_page_fallback: true,\n memoize_payment: true,\n force_bridge: true,\n log_authorize: true\n },\n\n 'ulta.com': {\n disable_venmo: true\n },\n\n 'barnesandnoble.com': {\n disable_venmo: true\n },\n\n 'bn.com': {\n disable_venmo: true\n },\n\n 'agoratix.com': {\n disable_venmo: true\n },\n\n 'tractorsupply.com': {\n disable_venmo: true\n },\n\n 'etsy.com': {\n ie_full_page: false,\n allow_full_page_fallback: true,\n memoize_payment: true,\n force_bridge: true,\n log_authorize: true\n },\n\n 'ticketmaster.com': {\n disable_venmo: true\n },\n\n 'livenation.com': {\n disable_venmo: true\n },\n\n 'frontgatetickets.com': {\n disable_venmo: true\n },\n\n 'williams-sonoma.com': {\n disable_venmo: true\n },\n\n 'westelm.com': {\n disable_venmo: true\n },\n\n 'markandgraham.com': {\n disable_venmo: true\n },\n\n 'potterybarn.com': {\n disable_venmo: true\n },\n\n 'potterybarnkids.com': {\n disable_venmo: true\n },\n\n 'pbteen.com': {\n disable_venmo: true\n },\n\n 'beallsflorida.com': {\n disable_venmo: true\n },\n\n 'therealreal.com': {\n disable_venmo: true\n },\n\n 'liveaquaria.com': {\n disable_venmo: true\n },\n\n 'drsfostersmith.com': {\n disable_venmo: true\n },\n\n 'boxed.com': {\n disable_venmo: true\n },\n\n 'bevisible.com': {\n disable_venmo: true\n },\n\n 'moeller.org': {\n disable_venmo: true\n },\n\n 'searshometownstores.com': {\n disable_venmo: true\n },\n\n 'searshardwarestores.com': {\n disable_venmo: true\n },\n\n 'searshomeapplianceshowroom.com': {\n disable_venmo: true\n },\n\n 'barkshop.com': {\n disable_venmo: true\n },\n\n 'vividseats.com': {\n disable_venmo: true\n },\n\n 'getcargo.today': {\n disable_venmo: true\n },\n\n 'smartdestinations.com': {\n disable_venmo: true\n },\n\n 'philadelphiapass.com': {\n disable_venmo: true\n },\n\n 'thesydneypass.com': {\n disable_venmo: true\n },\n\n '3secondlash.com': {\n disable_venmo: true\n },\n\n 'newyorkpass.com': {\n disable_venmo: true\n },\n\n 'dndbeyond.com': {\n disable_venmo: true\n },\n\n 'app.zapbuy.it': {\n disable_venmo: true\n },\n\n 'gamersaloon.com': {\n disable_venmo: true\n },\n\n '1800contacts.com': {\n disable_venmo: true\n },\n\n 'shopchatters.ca': {\n disable_venmo: true\n },\n\n 'shopguyswin.ca': {\n disable_venmo: true\n },\n\n 'jjill.com': {\n disable_venmo: true\n },\n\n 'qvc.com': {\n disable_venmo: true\n },\n\n 'stelladot.com': {\n disable_venmo: true\n },\n\n 'keepcollective.com': {\n disable_venmo: true\n },\n\n 'everskin.com': {\n disable_venmo: true\n },\n\n 'zulily.com': {\n disable_venmo: true\n },\n\n 'freshly.com': {\n disable_venmo: true\n },\n\n 'buypeticare.com': {\n disable_venmo: true\n },\n\n 'getownzone.com': {\n disable_venmo: true\n },\n\n 'uncommongoods.com': {\n disable_venmo: true\n },\n\n 'onegold.com': {\n disable_venmo: true\n },\n\n 'universitytees.com': {\n disable_venmo: true\n },\n\n 'revolve.com': {\n disable_venmo: true\n },\n\n 'functionofbeauty.com': {\n disable_venmo: true\n },\n\n 'givebutter.com': {\n disable_venmo: true\n },\n\n 'hausmart.com': {\n disable_venmo: true\n },\n\n 'derbyjackpot.com': {\n disable_venmo: true\n },\n\n 'ancestry.com': {\n disable_venmo: true\n },\n\n 'boats.net': {\n disable_venmo: true\n },\n\n 'partzilla.com': {\n disable_venmo: true\n },\n\n 'firedog.com': {\n disable_venmo: true\n },\n\n 'chick-fil-a.com': {\n disable_venmo: true\n },\n\n 'roku.com': {\n disable_venmo: true\n },\n\n 'barkbox.com': {\n disable_venmo: true\n },\n\n 'neimanmarcus.com': {\n disable_venmo: true\n },\n\n 'lastcall.com': {\n disable_venmo: true\n },\n\n 'horchow.com': {\n disable_venmo: true\n },\n\n 'bergdorfgoodman.com': {\n disable_venmo: true\n },\n\n 'fwrd.com': {\n disable_venmo: true\n },\n\n 'plunderdesign.com': {\n disable_venmo: true\n },\n\n 'stitchfix.com': {\n disable_venmo: true\n },\n\n 'revzilla.com': {\n disable_venmo: true\n },\n\n 'cyclegear.com': {\n disable_venmo: true\n },\n\n 'chegg.com': {\n disable_venmo: true\n },\n\n 'youniqueproducts.com': {\n disable_venmo: true\n },\n\n 'archives.com': {\n disable_venmo: true\n },\n\n 'hautelook.com': {\n disable_venmo: true\n },\n\n 'nordstromrack.com': {\n disable_venmo: true\n },\n\n 'motherhoodcanada.ca': {\n disable_venmo: true\n },\n\n 'atomtickets.com': {\n disable_venmo: true\n },\n\n 'trademore.com': {\n disable_venmo: true\n },\n\n 'lasheaseoffer.com': {\n disable_venmo: true\n },\n\n 'rookie.paypalsixthman.com': {\n disable_venmo: true\n },\n\n '1800Contacts.com': {\n disable_venmo: true\n },\n\n 'hulu.com': {\n disable_venmo: true\n },\n\n 'grubhub.com': {\n disable_venmo: true\n },\n\n 'eat24.com': {\n disable_venmo: true\n },\n\n 'seamless.com': {\n disable_venmo: true\n },\n\n 'freshfeetscrubber.com': {\n disable_venmo: true\n },\n\n 'opensky.com': {\n disable_venmo: true\n },\n\n 'dotandbo.com': {\n disable_venmo: true\n },\n\n 'storenvy.com': {\n disable_venmo: true\n },\n\n 'gemafina.com': {\n disable_venmo: true\n },\n\n 'pickperfect.com': {\n disable_venmo: true\n },\n\n '55mulberry.com': {\n disable_venmo: true\n },\n \n 'hollar.com': {\n disable_venmo: true\n },\n\n 'bjs.com': {\n disable_venmo: true\n },\n\n 'playsugarhouse.com': {\n disable_venmo: true\n },\n\n 'lakeshorelearning.com': {\n disable_venmo: true\n },\n\n 'llmhq.com': {\n disable_venmo: true\n },\n\n 'gainful.com': {\n disable_venmo: true\n },\n\n 'modaoperandi.com': {\n disable_venmo: true\n },\n \n 'play.jackpocket.com': {\n disable_venmo: true\n },\n\n 'crepeerase.com': {\n disable_venmo: true\n },\n\n 'specificbeauty.com': {\n disable_venmo: true\n },\n\n 'meaningfulbeauty.com': {\n disable_venmo: true\n },\n\n 'smileactives.com ': {\n disable_venmo: true\n },\n\n 'mally.com': {\n disable_venmo: true\n },\n\n 'westmorebeauty.com': {\n disable_venmo: true\n },\n\n 'subd.com': {\n disable_venmo: true\n },\n\n 'seacalmskin.com': {\n disable_venmo: true\n },\n \n 'whittier.edu': {\n disable_venmo: true\n },\n \n 'curology.com': {\n disable_venmo: true\n },\n \n 'monoprice.com': {\n disable_venmo: true\n },\n \n 'dominos.com': {\n disable_venmo: true\n },\n \n 'audiobooks.com': {\n disable_venmo: true\n },\n \n '1aauto.com': {\n disable_venmo: true\n },\n\n 'greatwolf.com': {\n disable_venmo: true\n },\n\n 'cvs.com': {\n disable_venmo: true\n },\n\n 'gilt.com': {\n disable_venmo: true\n },\n\n 'ruelala.com': {\n disable_venmo: true\n }\n },\n\n creditTestDomains: [ 'bluesuncorp.co.uk', 'nationsphotolab.com', 'plexusworldwide.com', 'nshss.org', 'bissell.com', 'mobstub.com', 'vuoriclothing.com', 'tape4backup.com', 'avivamiento.com', 'rhododendron.org', 'whiterabbitjapan.com', 'atsracing.net', 'thehilltopgallery.com', 'weedtraqr.com', 'worldpantry.com', 'ciraconnect.com', 'mymalls.com', 'prowinch.com', 'zodiacpoolsystems.com', 'everlywell.com', 'candlewarmers.com', 'chop.edu', 'incruises.com', 'flikn.com', 'didforsale.com', 'mcc.org', 'sygu.net', 'merchbar.com', 'eduinconline.com', 'us.livebetterwith.com', 'bakemeawish.com', 'judolaunch.com', 'eventcartel.com', 'tapatalk.com', 'telescope.com', 'covenant.edu', 'aquatruwater.com', 'spingo.com', 'usu.edu', 'getcelerity.com', 'brandless.com', 'saberigniter.com', 'euromodeltrains.com', 'gofasttrader.com', 'megamodzplanet.com', 'draftanalyzer.com', 'lovewithoutboundaries.com', 'filterpop.com', 'seekverify.com', 'photoandgo.com', 'sightseeingpass.com', 'bigoanddukes.com', 'thethirstyduck.com', 'thebrushguys.com', '907delivery.com', 'mauisails.com', 'drive.net', 'channelmax.net', 'modernrebelco.com', 'enchanteddiamonds.com', 'ibabbleon.com', 'fullgenomes.com', 'conn-comp.com', 'wingware.com', 'paradigmgoods.com', 'theneptunegroup.com', 'kidzartworks.com', 'unirealm.com', 'ncfarmsinc.com', 'oneofakindantiques.com', 'servers4less.com', 'stumpthespread.com', 'marketwagon.com', 'monsterhouseplans.com', 'canterburychoral.org', 'teacupnordic.org', 'thethirstyduck.com', 'medialoot.com', 'theartistunion.com', 'yourglamourzone.com', 'breckstables.com', 'mackephotography.com', 'dsaj.org', 'massluminosity.com', 'tespa.org', 'versatilearts.net', 'yecup.org', 'divinebusinessmanagement.com', 'captivatebeautyservices.com', 'class4me.com', 'wcsonlineuniversity.com', 'pvplive.com', 'kyneteks.com', 'rare-paper.com', 'bpg.bpgsim.biz', 'geodegallery.com', 'way.com', 'kringle.com', 'talentedmrsalas.ph', 'litcharts.com', 'purpletreephotography.com', 'apache.org', 'neopackage.com', 'globaldance.tv', 'integral.studio', 'airdoctorpro.com', 'ivoryandiron.com', 'yuengling.com', 'averysbranchfarms.com', 'amberreinink.com', 'skinnymechocolate.com', 'bmbl.net', 'ncwatercolor.net', 'astrograph.com', 'localadventures.mx', 'ripcurl.com', 'worldfootbrakechallenge.com', 'shespeakssales.com', 'obrienguitars.com', 'jadenikkolephoto.com', 'americavoice.com', 'cassiexie.com', 'aamastateconvention.org', 'rellesflorist.com', 'passionnobby.com', 'bodybyheidi.com', 'roqos.com', 'prijector.com', 'maryswanson.net', 'tsghobbies.com', 'erinlaytonphotography.com', 'darter.org', 'fountainpenhospital.com', 'myzestfullife.com', 'pcog.org', 'alisabethdesigns.com', 'katiemathisphoto.com', 'strictlybellaphotography.com', 'maptools.com', 'sites.google.com', 'gallerr.com', 'southfloridatrikke.com', 'caviar.tv', 'mintingmasters.com', 'prospectorsguild.com', 'inktale.com', 'prettygirlgoods.com', 'laceycahill.com', 'daniellenowak.com', 't212.org', 'scmsinc.com', 'babypaloozanc.com', 'tetrisonline.com', 'grdd.net', 'cdspg.info', 'airshipapparel.com', 'waft.com', 'extendpets.com', 'supplyhub.com', 'hlbsusa.com', 'jaderollerbeauty.com', 'theparentingjunkie.com', 'schagringas.com', 'yourscribemate.com', 'sportscollectibles.com', 'thedivinenoise.com', 'hometeamsonline.com', 'trademarkpress.com', 'destinationenglish.us', 'jacquesflowers.com', 'aliszhatchphotography.com', 'rusticfoundry.com', 'ahhhmassage.net', 'frezzor.com', 'mandelininc.com', 'kayleejackson.com', 'monkinstitute.org', 'eddiebsbbq.com', 'morningstarmediaservices.com', 'kinevative.com', 'orivet.com', 'digitalprinthouse.net', 'dynamicgenius.com', 'allpartsusa.com', 'flowersbydavid.net', 'nwvoices.org', 'leaptrade.com', 'tulsaschoolpics.com', 'alioth.io', 'windowflair.com', 'vitcom.net', 'simplybeautifulfashions.com', 'christinabenton.com', 'fromthedaughter.com', 'hometowngraphics.net', 'fibanalysis.com', 'creativejobscentral.com', 'sandbox.gg', 'jt-digitalmedia.com', 'kodable.com', 'birthingstone.com', 'taranicholephoto.com', 'hillyfieldsflorist.com', 'charitynoelphoto.com', 'auxdelicesfoods.com', 'terilynnphotography.com', 'folieadeuxevents.com', 'karensfloral.com', 'montgomerydiveclub.com', 'rainbowplastics.com', 'confettionthedancefloor.com', 'vomozmedia.com', 'neatmod.com', 'getnaturafled.com', 'callingpost.com', 'iamfamily.org', 'pedigreeonline.com', 'typeboost.io', 'in-n-outpetdoor.com', 'nerdstockgc.com', 'keiadmin.com', 'createdbykaui.com', 'aikophoto.com', 'lonestar.ink', 'stlfurs.com', 'treasurelistings.com', 'thecubicle.us', 'redclaypaper.com', 'blushhousemedia.com', 'documentsanddesigns.com', 'whitneyleighphotography.shootproof.com', 'amaryllisday.com', 'hermanproav.com', 'felicemedia.com', 'withloveplacenta.com', 'store.brgadgets.co', 'klowephoto.com', 'spenceraustinconsulting.com', 'sno-eagles.org', 'dsatallahassee.org', 'bakupages.com', 'neswc.com', 'josiebrooksphotography.com', 'brisksale.com', 'legalwhoosh.com', 'jasmineeaster.com', 'swatstudios.com', 'facebook.com', 'shakershell.com', 'alexiswinslow.com', 'mixeddimensions.com', 'sweetpproductions.com', 'lbeaphotography.com', 'otlseatfillers.com', 'jdtickets.com', 'catholicar.com', 'masque.com', 'smalltownstudio.net', 'goherbalife.com', 'itzyourz.com', 'magazinespeedloader.com', 'dreammachines.io', 'dallasdieteticalliance.org', 'http:', 'medair.org', 'unbridledambition.com', 'sarasprints.com', 'wiperecord.com', 'showmyrabbit.com', 'cctrendsshop.com', 'rachelalessandra.com', 'otherworld-apothecary.com', 'melissaannphoto.com', 'girlceo.co', 'seasidemexico.com', 'telosid.com', 'instin.com', 'marinecorpsmustang.org', 'lancityconnect.com', 'hps1.org', 'karenware.com', 'livecurriculum.com', 'spellingstars.com', 'vektorfootball.com', 'zaltv.com', 'nebraskamayflower.org', 'ethiopianspices.com', 'immitranslate.com', 'rafaelmagic.com.com', 'bahc1.org', 'newenamel.com', 'bhchp.org', 'buybulkamerica.com', 'sourcepoint.com', 'squarestripsports.com', 'wix.com', 'wilderootsphotography.com', 'goodsalt.com', 'systemongrid.com', 'designmil.org', 'freshtrendhq.com', 'valisimofashions.com', 'buyneatly.com', 'getbeauty.us', 'intellimidia.com' ],\n \n customCountry: false,\n\n SUPPORTED_BROWSERS: {\n msie: '11',\n firefox: '30',\n chrome: '27',\n safari: '7',\n opera: '16',\n msedge: '12',\n samsungBrowser: '2.1',\n silk: '59.3',\n ucbrowser: '10.0.0.488',\n vivaldi: '1.91'\n },\n\n session_uid_lifetime: 5 * 60 * 1000,\n\n _apiStage: '',\n\n get apiStage() : string {\n return config._apiStage || config.stage;\n },\n\n set apiStage(value) {\n config._apiStage = value;\n },\n\n ports: {\n default: 8000,\n button: 8000,\n checkout: 8000,\n guest: 8001,\n altpay: 3000\n },\n\n get paypalUrls() : Object {\n return {\n [ ENV.LOCAL ]: config.localhostUrl,\n [ ENV.STAGE ]: `https://www.${ config.stageUrl }`,\n [ ENV.SANDBOX ]: `https://www.sandbox.paypal.com`,\n [ ENV.PRODUCTION ]: `https://www.paypal.com`,\n [ ENV.TEST ]: `${ window.location.protocol }//${ window.location.host }`,\n [ ENV.DEMO ]: `${ window.location.protocol }//localhost.paypal.com:${ window.location.port }`\n };\n },\n\n get paypalDomains() : Object {\n return {\n [ ENV.LOCAL ]: 'http://localhost.paypal.com:8000',\n [ ENV.STAGE ]: `https://www.${ config.stageUrl }`,\n [ ENV.SANDBOX ]: `https://www.sandbox.paypal.com`,\n [ ENV.PRODUCTION ]: `https://www.paypal.com`,\n [ ENV.TEST ]: `mock://www.paypal.com`,\n [ ENV.DEMO ]: `${ window.location.protocol }//localhost.paypal.com:${ window.location.port }`\n };\n },\n\n get wwwApiUrls() : Object {\n return {\n [ ENV.LOCAL ]: `https://www.${ config.stageUrl }`,\n [ ENV.STAGE ]: `https://www.${ config.stageUrl }`,\n [ ENV.SANDBOX ]: `https://www.sandbox.paypal.com`,\n [ ENV.PRODUCTION ]: `https://www.paypal.com`,\n [ ENV.TEST ]: `${ window.location.protocol }//${ window.location.host }`\n };\n },\n\n get corsApiUrls() : Object {\n return {\n [ ENV.LOCAL ]: `https://${ config.apiStageUrl }:12326`,\n [ ENV.STAGE ]: `https://${ config.apiStageUrl }:12326`,\n [ ENV.SANDBOX ]: `https://cors.api.sandbox.paypal.com`,\n [ ENV.PRODUCTION ]: `https://cors.api.paypal.com`,\n [ ENV.TEST ]: `${ window.location.protocol }//${ window.location.host }`\n };\n },\n\n get apiUrls() : Object {\n\n const domain = `${ window.location.protocol }//${ window.location.host }`;\n const corsApiUrls = config.corsApiUrls;\n const wwwApiUrls = config.wwwApiUrls;\n\n return {\n [ ENV.LOCAL ]: domain === wwwApiUrls.local ? wwwApiUrls.local : corsApiUrls.local,\n [ ENV.STAGE ]: domain === wwwApiUrls.stage ? wwwApiUrls.stage : corsApiUrls.stage,\n [ ENV.SANDBOX ]: domain === wwwApiUrls.sandbox ? wwwApiUrls.sandbox : corsApiUrls.sandbox,\n [ ENV.PRODUCTION ]: domain === wwwApiUrls.production ? wwwApiUrls.production : corsApiUrls.production,\n [ ENV.TEST ]: domain === wwwApiUrls.test ? wwwApiUrls.test : corsApiUrls.test\n };\n },\n\n get checkoutUri() : ?string {\n return null;\n },\n\n set checkoutUri(val) {\n delete this.checkoutUri;\n this.checkoutUri = val;\n },\n\n get checkoutUris() : Object {\n if (config.checkoutUri) {\n return {\n [ ENV.LOCAL ]: config.checkoutUri,\n [ ENV.STAGE ]: config.checkoutUri,\n [ ENV.SANDBOX ]: config.checkoutUri,\n [ ENV.PRODUCTION ]: config.checkoutUri,\n [ ENV.TEST ]: config.checkoutUri,\n [ ENV.DEMO ]: config.checkoutUri\n };\n }\n\n return {\n [ ENV.LOCAL ]: `/webapps/hermes`,\n [ ENV.STAGE ]: `/webapps/hermes`,\n [ ENV.SANDBOX ]: `/checkoutnow`,\n [ ENV.PRODUCTION ]: `/checkoutnow`,\n [ ENV.TEST ]: `/base/test/windows/checkout/index.htm?checkouturl=true`,\n [ ENV.DEMO ]: `/demo/dev/checkout.htm`\n };\n },\n\n altpayUris: {\n [ ENV.LOCAL ]: `/latinumcheckout`,\n [ ENV.STAGE ]: `/latinumcheckout`,\n [ ENV.SANDBOX ]: `/latinumcheckout`,\n [ ENV.PRODUCTION ]: `/latinumcheckout`,\n [ ENV.TEST ]: `/base/test/windows/checkout/index.htm?checkouturl=true`,\n [ ENV.DEMO ]: `/demo/dev/checkout.htm`\n },\n\n guestUris: {\n [ ENV.LOCAL ]: `/webapps/xoonboarding`,\n [ ENV.STAGE ]: `/webapps/xoonboarding`,\n [ ENV.SANDBOX ]: `/webapps/xoonboarding`,\n [ ENV.PRODUCTION ]: `/webapps/xoonboarding`,\n [ ENV.TEST ]: `/base/test/windows/checkout/index.htm?guesturl=true`,\n [ ENV.DEMO ]: `/demo/dev/guest.htm`\n },\n\n billingUris: {\n [ ENV.LOCAL ]: `/webapps/hermes/agreements`,\n [ ENV.STAGE ]: `/webapps/hermes/agreements`,\n [ ENV.SANDBOX ]: `/agreements/approve`,\n [ ENV.PRODUCTION ]: `/agreements/approve`,\n [ ENV.TEST ]: `/base/test/windows/checkout/index.htm?billingurl=true`,\n [ ENV.DEMO ]: `/demo/dev/checkout.htm`\n },\n\n buttonUris: {\n [ ENV.LOCAL ]: `/smart/button`,\n [ ENV.STAGE ]: `/smart/button`,\n [ ENV.SANDBOX ]: `/smart/button`,\n [ ENV.PRODUCTION ]: `/smart/button`,\n [ ENV.TEST ]: `/base/test/windows/button/index.htm`,\n [ ENV.DEMO ]: `/demo/dev/button.htm`\n },\n\n inlinedCardFieldUris: {\n [ ENV.LOCAL ]: `/smart/card-fields`,\n [ ENV.STAGE ]: `/smart/card-fields`,\n [ ENV.SANDBOX ]: `/smart/card-fields`,\n [ ENV.PRODUCTION ]: `/smart/card-fields`,\n [ ENV.TEST ]: `/base/test/windows/card-fields/index.htm`,\n [ ENV.DEMO ]: `/demo/dev/card.htm`\n },\n\n postBridgeUris: {\n [ ENV.LOCAL ]: `/webapps/hermes/component-meta`,\n [ ENV.STAGE ]: `/webapps/hermes/component-meta`,\n [ ENV.SANDBOX ]: `/webapps/hermes/component-meta`,\n [ ENV.PRODUCTION ]: `/webapps/hermes/component-meta`,\n [ ENV.TEST ]: `/base/test/windows/component-meta/index.htm`,\n [ ENV.DEMO ]: `/demo/dev/bridge.htm`\n },\n\n legacyCheckoutUris: {\n [ ENV.LOCAL ]: `/cgi-bin/webscr?cmd=_express-checkout&xo_node_fallback=true`,\n [ ENV.STAGE ]: `/cgi-bin/webscr?cmd=_express-checkout&xo_node_fallback=true`,\n [ ENV.SANDBOX ]: `/cgi-bin/webscr?cmd=_express-checkout&xo_node_fallback=true`,\n [ ENV.PRODUCTION ]: `/cgi-bin/webscr?cmd=_express-checkout&xo_node_fallback=true`,\n [ ENV.TEST ]: `#fallback`\n },\n\n buttonJSUrls: {\n [ ENV.LOCAL ]: `https://www.paypalobjects.com/api/button.js`,\n [ ENV.STAGE ]: `https://www.paypalobjects.com/api/button.js`,\n [ ENV.SANDBOX ]: `https://www.paypalobjects.com/api/button.js`,\n [ ENV.PRODUCTION ]: `https://www.paypalobjects.com/api/button.js`,\n [ ENV.TEST ]: `/base/test/lib/button.js`,\n [ ENV.DEMO ]: `https://www.paypalobjects.com/api/button.js`\n },\n\n get buttonJSUrl() : string {\n return config.buttonJSUrls[config.env];\n },\n\n loginUri: `/signin/`,\n\n hermesLoggerUri: `/webapps/hermes/api/logger`,\n\n loggerUri: `/xoplatform/logger/api/logger`,\n\n loggerThrottlePercentage: 1.0, // 100%\n\n pptmUri: `/tagmanager/pptm.js`,\n\n get postBridgeUri() : string {\n return `${ config.postBridgeUris[config.env] }?xcomponent=1`;\n },\n\n paymentStandardUri: `/webapps/xorouter?cmd=_s-xclick`,\n\n authApiUri: `/v1/oauth2/token`,\n paymentApiUri: `/v1/payments/payment`,\n orderApiUri: `/v2/checkout/orders`,\n billingApiUri: `/v1/billing-agreements/agreement-tokens`,\n experienceApiUri: `/v1/payment-experience/web-profiles`,\n trackingApiUri: `/v1/risk/transaction-contexts`,\n\n get checkoutUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local }${ config.checkoutUris.local.replace(`:${ config.ports.default }`, `:${ config.ports.checkout }`) }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.checkoutUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.checkoutUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.checkoutUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.checkoutUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.test }${ config.checkoutUris.demo }`\n };\n },\n\n get guestUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local.replace(`:${ config.ports.default }`, `:${ config.ports.guest }`) }${ config.guestUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.guestUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.guestUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.guestUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.guestUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.test }${ config.guestUris.demo }`\n };\n },\n\n get altpayUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local.replace(`:${ config.ports.default }`, `:${ config.ports.altpay }`) }${ config.altpayUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.altpayUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.altpayUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.altpayUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.altpayUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.test }${ config.altpayUris.demo }`\n };\n },\n\n get billingUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local.replace(`:${ config.ports.default }`, `:${ config.ports.checkout }`) }${ config.billingUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.billingUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.billingUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.billingUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.billingUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.test }${ config.billingUris.demo }`\n };\n },\n\n get buttonUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local.replace(`:${ config.ports.default }`, `:${ config.ports.button }`) }${ config.buttonUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.buttonUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.buttonUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.buttonUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.buttonUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.demo }${ config.buttonUris.demo }`\n };\n },\n\n get inlinedCardFieldUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local.replace(`:${ config.ports.default }`, `:${ config.ports.button }`) }${ config.inlinedCardFieldUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.inlinedCardFieldUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.inlinedCardFieldUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.inlinedCardFieldUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.inlinedCardFieldUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.demo }${ config.inlinedCardFieldUris.demo }`\n };\n },\n\n get loginUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.stage }${ config.loginUri }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.loginUri }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.loginUri }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.loginUri }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.loginUri }`\n };\n },\n\n get paymentsStandardUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local }${ config.paymentStandardUri }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.paymentStandardUri }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.paymentStandardUri }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.paymentStandardUri }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.paymentStandardUri }`\n };\n },\n\n get metaFrameUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local }${ config.postBridgeUri }&env=local`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.postBridgeUri }&env=stage&stage=${ config.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.postBridgeUri }&env=sandbox`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.postBridgeUri }&env=production`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.postBridgeUri }&env=test`,\n [ ENV.DEMO ]: `${ paypalUrls.demo }${ config.postBridgeUri }&env=demo`\n };\n },\n\n get legacyCheckoutUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.stage }${ config.legacyCheckoutUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.legacyCheckoutUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.legacyCheckoutUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.legacyCheckoutUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.legacyCheckoutUris.test }`\n };\n },\n\n get authApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const authApiUri = config.authApiUri;\n\n return {\n [ ENV.LOCAL ]: `${ apiUrls.local }${ authApiUri }`,\n [ ENV.STAGE ]: `${ apiUrls.stage }${ authApiUri }`,\n [ ENV.SANDBOX ]: `${ apiUrls.sandbox }${ authApiUri }`,\n [ ENV.PRODUCTION ]: `${ apiUrls.production }${ authApiUri }`,\n [ ENV.TEST ]: `${ apiUrls.test }${ authApiUri }`\n };\n },\n\n get paymentApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const paymentApiUri = config.paymentApiUri;\n\n return {\n [ ENV.LOCAL ]: `${ apiUrls.local }${ paymentApiUri }`,\n [ ENV.STAGE ]: `${ apiUrls.stage }${ paymentApiUri }`,\n [ ENV.SANDBOX ]: `${ apiUrls.sandbox }${ paymentApiUri }`,\n [ ENV.PRODUCTION ]: `${ apiUrls.production }${ paymentApiUri }`,\n [ ENV.TEST ]: `${ apiUrls.test }${ paymentApiUri }`\n };\n },\n\n get orderApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const orderApiUri = config.orderApiUri;\n\n return {\n [ENV.LOCAL]: `${ apiUrls.local }${ orderApiUri }`,\n [ENV.STAGE]: `${ apiUrls.stage }${ orderApiUri }`,\n [ENV.SANDBOX]: `${ apiUrls.sandbox }${ orderApiUri }`,\n [ENV.PRODUCTION]: `${ apiUrls.production }${ orderApiUri }`,\n [ENV.TEST]: `${ apiUrls.test }${ orderApiUri }`\n };\n },\n\n get billingApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const billingApiUri = config.billingApiUri;\n\n return {\n [ ENV.LOCAL ]: `${ apiUrls.local }${ billingApiUri }`,\n [ ENV.STAGE ]: `${ apiUrls.stage }${ billingApiUri }`,\n [ ENV.SANDBOX ]: `${ apiUrls.sandbox }${ billingApiUri }`,\n [ ENV.PRODUCTION ]: `${ apiUrls.production }${ billingApiUri }`,\n [ ENV.TEST ]: `${ apiUrls.test }${ billingApiUri }`\n };\n },\n\n get experienceApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const experienceApiUri = config.experienceApiUri;\n\n return {\n [ ENV.LOCAL ]: `${ apiUrls.local }${ experienceApiUri }`,\n [ ENV.STAGE ]: `${ apiUrls.stage }${ experienceApiUri }`,\n [ ENV.SANDBOX ]: `${ apiUrls.sandbox }${ experienceApiUri }`,\n [ ENV.PRODUCTION ]: `${ apiUrls.production }${ experienceApiUri }`,\n [ ENV.TEST ]: `${ apiUrls.test }${ experienceApiUri }`\n };\n },\n\n get trackingApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const trackingApiUri = config.trackingApiUri;\n\n return {\n [ ENV.LOCAL ]: `${ apiUrls.local }${ trackingApiUri }`,\n [ ENV.STAGE ]: `${ apiUrls.stage }${ trackingApiUri }`,\n [ ENV.SANDBOX ]: `${ apiUrls.sandbox }${ trackingApiUri }`,\n [ ENV.PRODUCTION ]: `${ apiUrls.production }${ trackingApiUri }`,\n [ ENV.TEST ]: `${ apiUrls.test }${ trackingApiUri }`\n };\n },\n\n _paypalUrl: '',\n\n get paypalUrl() : string {\n return this._paypalUrl || config.paypalUrls[config.env];\n },\n\n set paypalUrl(value) {\n this._paypalUrl = value;\n },\n\n get paypalDomain() : string {\n return config.paypalDomains[config.env];\n },\n\n get corsApiUrl() : string {\n return config.corsApiUrls[config.env];\n },\n\n get wwwApiUrl() : string {\n return config.wwwApiUrls[config.env];\n },\n\n get apiUrl() : string {\n\n const domain = `${ window.location.protocol }//${ window.location.host }`;\n const corsApiUrl = config.corsApiUrl;\n const wwwApiUrl = config.wwwApiUrl;\n\n return domain === wwwApiUrl ? wwwApiUrl : corsApiUrl;\n },\n\n get checkoutUrl() : string {\n return `${ config.paypalUrl }${ config.checkoutUris[config.env] }`;\n },\n\n get billingUrl() : string {\n return `${ config.paypalUrl }${ config.billingUris[config.env] }`;\n },\n\n get buttonUrl() : string {\n return `${ config.paypalUrl }${ config.buttonUris[config.env] }`;\n },\n\n get legacyCheckoutUrl() : string {\n return config.legacyCheckoutUrls[config.env];\n },\n\n get postBridgeUrl() : string {\n return `${ config.paypalUrl }${ config.postBridgeUri }`;\n },\n\n get postBridgeDomain() : string {\n return `${ config.paypalDomain }`;\n },\n\n get loggerUrl() : string {\n const isTestExperiment = Math.random() < config.loggerThrottlePercentage;\n const loggerUrl = isTestExperiment ? config.loggerUri : config.hermesLoggerUri;\n\n return `${ config.paypalUrl }${ loggerUrl }`;\n },\n\n get pptmUrl() : string {\n return `${ config.paypalUrls[config.env] }${ config.pptmUri }`;\n },\n\n get authApiUrl() : string {\n return `${ config.apiUrl }${ config.authApiUri }`;\n },\n\n get paymentApiUrl() : string {\n return `${ config.apiUrl }${ config.paymentApiUri }`;\n },\n\n get orderApiUrl() : string {\n return `${ config.apiUrl }${ config.orderApiUri }`;\n },\n\n get billingApiUrl() : string {\n return `${ config.apiUrl }${ config.billingApiUri }`;\n },\n\n get experienceApiUrl() : string {\n return `${ config.apiUrl }${ config.experienceApiUri }`;\n },\n\n defaultLocale: {\n country: COUNTRY.US,\n lang: LANG.EN\n }\n};\n","/* @flow */\n\nexport * from './config';\n","\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nexport function extend(dest, src, over=true) {\n dest = dest || {};\n src = src || {};\n\n for (let i in src) {\n if (src.hasOwnProperty(i)) {\n if (over || !dest.hasOwnProperty(i)) {\n dest[i] = src[i];\n }\n }\n }\n\n return dest;\n}\n\nexport function isSameProtocol(url) {\n return window.location.protocol === url.split('/')[0];\n}\n\nexport function isSameDomain(url) {\n let match = url.match(/https?:\\/\\/[^/]+/);\n\n if (!match) {\n return true;\n }\n\n return match[0] === `${window.location.protocol}//${window.location.host}`;\n}\n\nexport function ajax(method, url, headers={}, data={}, { fireAndForget = false } = {}) {\n\n return new ZalgoPromise(resolve => {\n let XRequest = window.XMLHttpRequest || window.ActiveXObject;\n\n if (window.XDomainRequest && !isSameDomain(url)) {\n\n if (!isSameProtocol(url)) {\n return resolve();\n }\n\n XRequest = window.XDomainRequest;\n }\n\n let req = new XRequest('MSXML2.XMLHTTP.3.0');\n req.open(method.toUpperCase(), url, true);\n\n if (typeof req.setRequestHeader === 'function') {\n req.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n req.setRequestHeader('Content-type', 'application/json');\n\n for (let headerName in headers) {\n if (headers.hasOwnProperty(headerName)) {\n req.setRequestHeader(headerName, headers[headerName]);\n }\n }\n }\n\n if (fireAndForget) {\n resolve();\n } else {\n req.onreadystatechange = () => {\n if (req.readyState > 3) {\n resolve();\n }\n };\n }\n\n req.send(JSON.stringify(data).replace(/&/g, '%26'));\n });\n}\n\nexport function promiseDebounce(method, interval) {\n\n let debounce = {};\n\n return function() {\n let args = arguments;\n\n if (debounce.timeout) {\n clearTimeout(debounce.timeout);\n delete debounce.timeout;\n }\n\n debounce.timeout = setTimeout(() => {\n\n let resolver = debounce.resolver;\n let rejector = debounce.rejector;\n\n delete debounce.promise;\n delete debounce.resolver;\n delete debounce.rejector;\n delete debounce.timeout;\n\n return ZalgoPromise.resolve().then(() => {\n return method.apply(null, args);\n }).then(resolver, rejector);\n\n }, interval);\n\n debounce.promise = debounce.promise || new ZalgoPromise((resolver, rejector) => {\n debounce.resolver = resolver;\n debounce.rejector = rejector;\n });\n\n return debounce.promise;\n };\n}\n\nexport function onWindowReady() : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n if (typeof document !== 'undefined' && document.readyState === 'complete') {\n resolve();\n }\n\n window.addEventListener('load', resolve);\n });\n}\n\nexport function safeInterval(method, time) {\n\n let timeout;\n\n function loop() {\n timeout = setTimeout(() => {\n method();\n loop();\n }, time);\n }\n\n loop();\n\n return {\n cancel() {\n clearTimeout(timeout);\n }\n };\n}\n\nexport function uniqueID() {\n let chars = '0123456789abcdef';\n\n return 'xxxxxxxxxx'.replace(/./g, () => {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n });\n}\n\nexport function isIE() {\n return Boolean(window.document.documentMode);\n}\n","\nexport let payloadBuilders = [];\nexport let metaBuilders = [];\nexport let trackingBuilders = [];\nexport let headerBuilders = [];\n\nexport function addPayloadBuilder(builder) {\n payloadBuilders.push(builder);\n}\n\nexport function addMetaBuilder(builder) {\n metaBuilders.push(builder);\n}\n\nexport function addTrackingBuilder(builder) {\n trackingBuilders.push(builder);\n}\n\nexport function addHeaderBuilder(builder) {\n headerBuilders.push(builder);\n}","\nexport let config = {\n\n uri: '',\n prefix: '',\n\n initial_state_name: 'init',\n\n flushInterval: 10 * 60 * 1000,\n debounceInterval: 10,\n\n sizeLimit: 300,\n\n // Supress `console.log`s when `true`\n // Recommended for production usage\n silent: false,\n\n heartbeat: true,\n heartbeatConsoleLog: true,\n heartbeatInterval: 5000,\n heartbeatTooBusy: false,\n heartbeatTooBusyThreshold: 10000,\n\n logLevel: 'warn',\n\n autoLog: ['warn', 'error'],\n\n logUnload: true,\n logPerformance: true\n};\n\nexport let logLevels = [ 'error', 'warn', 'info', 'debug' ];\n","\nimport { extend, promiseDebounce, ajax, isIE } from './util';\nimport { payloadBuilders, metaBuilders, trackingBuilders, headerBuilders } from './builders';\nimport { config, logLevels } from './config';\n\nexport let buffer = [];\nexport let tracking = [];\n\nlet transport = (headers, data, options) => {\n return ajax('post', config.uri, headers, data, options);\n}\n\nexport function getTransport() {\n return transport;\n}\n\nexport function setTransport(newTransport) {\n transport = newTransport;\n}\n\nlet loaded = false;\n\nsetTimeout(() => {\n loaded = true;\n}, 1);\n\nexport function print(level, event, payload) {\n\n if (typeof window === 'undefined' || !window.console || !window.console.log) {\n return;\n }\n\n if (!loaded) {\n return setTimeout(() => print(level, event, payload), 1);\n }\n\n let logLevel = config.logLevel;\n\n if (window.LOG_LEVEL) {\n logLevel = window.LOG_LEVEL;\n }\n\n if (logLevels.indexOf(level) > logLevels.indexOf(logLevel)) {\n return;\n }\n\n payload = payload || {};\n\n let args = [event];\n\n if(isIE()){\n payload = JSON.stringify(payload);\n }\n\n args.push(payload);\n\n if (payload.error || payload.warning) {\n args.push('\\n\\n', payload.error || payload.warning);\n }\n\n try {\n if (window.console[level] && window.console[level].apply) {\n window.console[level].apply(window.console, args);\n } else if (window.console.log && window.console.log.apply) {\n window.console.log.apply(window.console, args);\n }\n } catch (err) {\n // pass\n }\n}\n\nexport function immediateFlush({ fireAndForget = false } = {}) {\n\n if (typeof window === 'undefined') {\n return;\n }\n\n if (!config.uri) {\n return;\n }\n\n let hasBuffer = buffer.length;\n let hasTracking = tracking.length;\n\n if (!hasBuffer && !hasTracking) {\n return;\n }\n\n let meta = {};\n\n for (let builder of metaBuilders) {\n try {\n extend(meta, builder(meta), false);\n } catch (err) {\n console.error('Error in custom meta builder:', err.stack || err.toString());\n }\n }\n\n let headers = {};\n\n for (let builder of headerBuilders) {\n try {\n extend(headers, builder(headers), false);\n } catch (err) {\n console.error('Error in custom header builder:', err.stack || err.toString());\n }\n }\n\n let events = buffer;\n\n let req = transport(headers, {\n events,\n meta,\n tracking\n }, {\n fireAndForget\n });\n\n buffer = [];\n tracking = [];\n\n return req;\n}\n\nexport let flush = promiseDebounce(immediateFlush, config.debounceInterval);\n\n\nfunction enqueue(level, event, payload) {\n\n buffer.push({\n level,\n event,\n payload\n });\n\n if (config.autoLog.indexOf(level) > -1) {\n flush();\n }\n}\n\n\nexport function log(level, event, payload) {\n\n if (typeof window === 'undefined') {\n return;\n }\n\n if (config.prefix) {\n event = `${config.prefix}_${event}`;\n }\n\n payload = payload || {};\n\n if (typeof payload === 'string') {\n payload = {\n message: payload\n };\n } else if (payload instanceof Error) {\n payload = {\n error: payload.stack || payload.toString()\n }\n }\n\n try {\n JSON.stringify(payload);\n } catch (err) {\n return;\n }\n\n payload.timestamp = Date.now();\n\n for (let builder of payloadBuilders) {\n try {\n extend(payload, builder(payload), false);\n } catch (err) {\n console.error('Error in custom payload builder:', err.stack || err.toString());\n }\n }\n\n if (!config.silent) {\n print(level, event, payload);\n }\n\n if (buffer.length === config.sizeLimit) {\n enqueue('info', 'logger_max_buffer_length');\n }\n else if (buffer.length < config.sizeLimit) {\n enqueue(level, event, payload);\n }\n}\n\nexport function prefix(name) {\n\n return {\n debug(event, payload) {\n return log('debug', `${name}_${event}`, payload);\n },\n\n info(event, payload) {\n return log('info', `${name}_${event}`, payload);\n },\n\n warn(event, payload) {\n return log('warn', `${name}_${event}`, payload);\n },\n\n error(event, payload) {\n return log('error', `${name}_${event}`, payload);\n },\n\n track(payload) {\n return track(payload);\n },\n\n flush() {\n return flush();\n }\n };\n}\n\nexport function debug(event, payload) {\n return log('debug', event, payload);\n}\n\nexport function info(event, payload) {\n return log('info', event, payload);\n}\n\nexport function warn(event, payload) {\n return log('warn', event, payload);\n}\n\nexport function error(event, payload) {\n return log('error', event, payload);\n}\n\nexport function track(payload) {\n\n if (typeof window === 'undefined') {\n return;\n }\n\n if (payload) {\n\n try {\n JSON.stringify(payload);\n } catch (err) {\n return;\n }\n\n for (let builder of trackingBuilders) {\n try {\n extend(payload, builder(payload), false);\n } catch (err) {\n console.error('Error in custom tracking builder:', err.stack || err.toString());\n }\n }\n\n print('debug', 'tracking', payload);\n\n tracking.push(payload);\n }\n}\n","\nimport { config } from './config';\nimport { info } from './logger';\nimport { addPayloadBuilder } from './builders'\nimport { onWindowReady, safeInterval } from './util';\n\nlet enablePerformance = window &&\n window.performance &&\n performance.now &&\n performance.timing &&\n performance.timing.connectEnd &&\n performance.timing.navigationStart &&\n (Math.abs(performance.now() - Date.now()) > 1000) &&\n (performance.now() - (performance.timing.connectEnd - performance.timing.navigationStart)) > 0;\n\n\nexport function now() {\n if (enablePerformance) {\n return performance.now();\n } else {\n return Date.now();\n }\n}\n\nfunction timer(startTime) {\n startTime = startTime !== undefined ? startTime : now();\n\n return {\n startTime,\n\n elapsed() {\n return parseInt(now() - startTime, 10);\n },\n\n reset() {\n startTime = now();\n }\n };\n}\n\nexport function reqStartElapsed() {\n if (enablePerformance) {\n let timing = window.performance.timing;\n return parseInt(timing.connectEnd - timing.navigationStart, 10);\n }\n}\n\nexport let clientTimer = timer();\nexport let reqTimer = timer(reqStartElapsed());\n\nexport function initHeartBeat() {\n\n let heartBeatTimer = timer();\n let heartbeatCount = 0;\n\n safeInterval(() => {\n\n if (config.heartbeatMaxThreshold && (heartbeatCount > config.heartbeatMaxThreshold)) {\n return;\n }\n\n heartbeatCount += 1;\n\n let elapsed = heartBeatTimer.elapsed();\n let lag = elapsed - config.heartbeatInterval;\n\n let heartbeatPayload = {\n count: heartbeatCount,\n elapsed\n };\n\n if (config.heartbeatTooBusy) {\n heartbeatPayload.lag = lag;\n\n if (lag >= config.heartbeatTooBusyThreshold) {\n info('toobusy', heartbeatPayload, {\n noConsole: !config.heartbeatConsoleLog\n });\n }\n }\n\n info('heartbeat', heartbeatPayload, {\n noConsole: !config.heartbeatConsoleLog\n });\n\n }, config.heartbeatInterval);\n}\n\nexport function initPerformance() {\n\n if (!enablePerformance) {\n return info('no_performance_data');\n }\n\n addPayloadBuilder(() => {\n\n let payload = {};\n\n payload.client_elapsed = clientTimer.elapsed();\n\n if (enablePerformance) {\n payload.req_elapsed = reqTimer.elapsed();\n }\n\n return payload;\n });\n\n onWindowReady().then(() => {\n\n let keys = [\n 'connectEnd', 'connectStart', 'domComplete', 'domContentLoadedEventEnd',\n 'domContentLoadedEventStart', 'domInteractive', 'domLoading', 'domainLookupEnd',\n 'domainLookupStart', 'fetchStart', 'loadEventEnd', 'loadEventStart', 'navigationStart',\n 'redirectEnd', 'redirectStart', 'requestStart', 'responseEnd', 'responseStart',\n 'secureConnectionStart', 'unloadEventEnd', 'unloadEventStart'\n ];\n\n let timing = {};\n\n keys.forEach(key => {\n timing[key] = parseInt(window.performance.timing[key], 10) || 0;\n });\n\n let offset = timing.connectEnd - timing.navigationStart;\n\n if (timing.connectEnd) {\n Object.keys(timing).forEach(name => {\n let time = timing[name];\n if (time) {\n info(`timing_${name}`, {\n client_elapsed: parseInt(time - timing.connectEnd - (clientTimer.startTime - offset), 10),\n req_elapsed: parseInt(time - timing.connectEnd, 10)\n });\n }\n });\n }\n\n info('timing', timing);\n info('memory', window.performance.memory);\n info('navigation', window.performance.navigation);\n\n if (window.performance.getEntries) {\n window.performance.getEntries().forEach(resource => {\n if (['link', 'script', 'img', 'css'].indexOf(resource.initiatorType) > -1) {\n info(resource.initiatorType, resource);\n }\n });\n }\n });\n}\n","\nimport { config } from './config';\nimport { extend } from './util';\nimport { initPerformance, initHeartBeat } from './performance';\nimport { log, info, flush, immediateFlush } from './logger';\n\nlet initiated = false;\n\nexport function init(conf) {\n extend(config, conf || {});\n\n if (initiated) {\n return;\n }\n\n initiated = true;\n\n if (config.logPerformance) {\n initPerformance();\n }\n\n if (config.heartbeat) {\n initHeartBeat();\n }\n\n if (config.logUnload) {\n window.addEventListener('beforeunload', () => {\n info('window_beforeunload');\n immediateFlush({ fireAndForget: true });\n });\n\n window.addEventListener('unload', () => {\n info('window_unload');\n immediateFlush({ fireAndForget: true });\n });\n }\n\n if (config.flushInterval) {\n setInterval(flush, config.flushInterval);\n }\n\n if (window.beaverLogQueue) {\n window.beaverLogQueue.forEach(payload => {\n log(payload.level, payload.event, payload);\n });\n delete window.beaverLogQueue;\n }\n}\n","\nimport { reqStartElapsed, now } from './performance';\nimport { info, immediateFlush, track } from './logger';\nimport { addMetaBuilder, addPayloadBuilder } from './builders';\nimport { uniqueID } from './util';\nimport { config } from './config';\n\nlet windowID = uniqueID();\nlet pageID = uniqueID();\n\nlet currentState = config.initial_state_name;\nlet startTime;\n\nexport function startTransition() {\n startTime = now();\n}\n\nexport function endTransition(toState) {\n startTime = startTime || reqStartElapsed();\n\n let currentTime = now();\n let elapsedTime;\n\n if (startTime !== undefined) {\n elapsedTime = parseInt(currentTime - startTime, 0);\n }\n\n let transitionName = `transition_${currentState}_to_${toState}`;\n\n info(transitionName, {\n duration: elapsedTime\n });\n\n track({\n transition: transitionName,\n transition_time: elapsedTime\n });\n\n immediateFlush();\n\n startTime = currentTime;\n currentState = toState;\n pageID = uniqueID();\n}\n\nexport function transition(toState) {\n startTransition();\n endTransition(toState);\n}\n\naddPayloadBuilder(() => {\n return {\n windowID,\n pageID\n }\n});\n\naddMetaBuilder(() => {\n return {\n state: `ui_${currentState}`\n };\n});\n","\nexport * from './logger';\nexport * from './init';\nexport * from './transitions';\nexport * from './builders';\nexport * from './config';","\nimport * as INTERFACE from './interface';\nexport * from './interface';\nexport default INTERFACE;","/* @flow */\n/* eslint max-lines: off */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\n\nimport type { CancelableType } from '../types';\n\n/* Url Encode\n ----------\n\n Replace ? and & with encoded values. Allows other values (to create more readable urls than encodeUriComponent)\n*/\n\nexport function urlEncode(str : string) : string {\n return str.replace(/\\?/g, '%3F').replace(/&/g, '%26').replace(/#/g, '%23').replace(/\\+/g, '%2B');\n}\n\n\n/* Camel To Dasherize\n ------------------\n\n Convert camelCaseText to dasherized-text\n*/\n\nexport function camelToDasherize(string : string) : string {\n return string.replace(/([A-Z])/g, (g) => {\n return `-${ g.toLowerCase() }`;\n });\n}\n\n\n/* Dasherize to Camel\n ------------------\n\n Convert dasherized-text to camelCaseText\n*/\n\nexport function dasherizeToCamel(string : string) : string {\n return string.replace(/-([a-z])/g, (g) => {\n return g[1].toUpperCase();\n });\n}\n\n\n/* Extend\n ------\n\n Extend one object with another\n*/\n\nexport function extend(obj : Object, source : ?Object) : Object {\n if (!source) {\n return obj;\n }\n\n for (let key in source) {\n if (source.hasOwnProperty(key)) {\n obj[key] = source[key];\n }\n }\n\n return obj;\n}\n\n\n/* Values\n ------\n\n Get all of the values from an object as an array\n*/\n\nexport function values(obj : Object) : Array {\n let results = [];\n\n for (let key in obj) {\n if (obj.hasOwnProperty(key)) {\n results.push(obj[key]);\n }\n }\n\n return results;\n}\n\n\n/* Unique ID\n ---------\n\n Generate a unique, random hex id\n*/\n\nexport function uniqueID() : string {\n\n let chars = '0123456789abcdef';\n\n return 'xxxxxxxxxx'.replace(/./g, () => {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n });\n}\n\n/* Stringify with Functions\n ------------------------\n\n JSON Stringify with added support for functions\n*/\n\nexport function stringifyWithFunctions(obj : Object) : string {\n return JSON.stringify(obj, (key, val) => {\n if (typeof val === 'function') {\n return val.toString();\n }\n return val;\n });\n}\n\n\n/* Safe Get\n --------\n\n Get a property without throwing error\n*/\n\nexport function safeGet(obj : Object, prop : string) : mixed {\n\n let result;\n\n try {\n result = obj[prop];\n } catch (err) {\n // pass\n }\n\n return result;\n}\n\n\n/* Capitalize First Letter\n -----------------------\n*/\n\nexport function capitalizeFirstLetter(string : string) : string {\n return string.charAt(0).toUpperCase() + string.slice(1).toLowerCase();\n}\n\n\n/* Get\n ---\n\n Recursively gets a deep path from an object, returning a default value if any level is not found\n*/\n\nexport function get(item : Object, path : string, def : mixed) : mixed {\n\n if (!path) {\n return def;\n }\n\n let pathParts = path.split('.');\n\n // Loop through each section of our key path\n\n for (let i = 0; i < pathParts.length; i++) {\n\n // If we have an object, we can get the key\n\n if (typeof item === 'object' && item !== null) {\n item = item[pathParts[i]];\n\n // Otherwise, we should return the default (undefined if not provided)\n } else {\n return def;\n }\n }\n\n // If our final result is undefined, we should return the default\n\n return item === undefined ? def : item;\n}\n\n\n/* Safe Interval\n -------------\n\n Implement setInterval using setTimeout, to avoid stacking up calls from setInterval\n*/\n\nexport function safeInterval(method : Function, time : number) : CancelableType {\n\n let timeout;\n\n function runInterval() {\n timeout = setTimeout(runInterval, time);\n method.call();\n }\n\n timeout = setTimeout(runInterval, time);\n\n return {\n cancel() {\n clearTimeout(timeout);\n }\n };\n}\n\n/* Safe Interval\n -------------\n\n Run timeouts at 100ms intervals so we can account for busy browsers\n*/\n\nexport function safeTimeout(method : Function, time : number) {\n\n let interval = safeInterval(() => {\n time -= 100;\n if (time <= 0) {\n interval.cancel();\n method();\n }\n }, 100);\n}\n\n\nexport function each(item : Array | Object, callback : Function) {\n\n if (!item) {\n return;\n }\n\n if (Array.isArray(item)) {\n let len = item.length;\n for (let i = 0; i < len; i++) {\n callback(item[i], i);\n }\n\n } else if (typeof item === 'object') {\n let keys = Object.keys(item);\n let len = keys.length;\n for (let i = 0; i < len; i++) {\n let key = keys[i];\n callback(item[key], key);\n }\n }\n}\n\n\nexport function replaceObject> (item : T, replacers : { [string] : Function }, fullKey : string = '') : T {\n\n if (Array.isArray(item)) {\n let length = item.length;\n let result = [];\n\n for (let i = 0; i < length; i++) {\n Object.defineProperty(result, i, {\n configurable: true,\n enumerable: true,\n get: () => {\n let itemKey = fullKey ? `${ fullKey }.${ i }` : `${ i }`;\n let child = item[i];\n\n let type = (typeof child);\n let replacer = replacers[type];\n if (replacer) {\n let replaced = replacer(child, i, itemKey);\n if (typeof replaced !== 'undefined') {\n result[i] = replaced;\n return result[i];\n }\n }\n\n if (typeof child === 'object' && child !== null) {\n result[i] = replaceObject(child, replacers, itemKey);\n return result[i];\n }\n\n result[i] = child;\n return result[i];\n },\n set: (value) => {\n delete result[i];\n result[i] = value;\n }\n });\n }\n\n // $FlowFixMe\n return result;\n } else if (typeof item === 'object' && item !== null) {\n let result = {};\n\n for (let key in item) {\n if (!item.hasOwnProperty(key)) {\n continue;\n }\n\n Object.defineProperty(result, key, {\n configurable: true,\n enumerable: true,\n get: () => {\n let itemKey = fullKey ? `${ fullKey }.${ key }` : `${ key }`;\n // $FlowFixMe\n let child = item[key];\n\n let type = (typeof child);\n let replacer = replacers[type];\n if (replacer) {\n let replaced = replacer(child, key, itemKey);\n if (typeof replaced !== 'undefined') {\n result[key] = replaced;\n return result[key];\n }\n }\n\n if (typeof child === 'object' && child !== null) {\n result[key] = replaceObject(child, replacers, itemKey);\n return result[key];\n }\n\n result[key] = child;\n return result[key];\n },\n set: (value) => {\n delete result[key];\n result[key] = value;\n }\n });\n }\n\n // $FlowFixMe\n return result;\n } else {\n throw new Error(`Pass an object or array`);\n }\n}\n\n\nexport function copyProp(source : Object, target : Object, name : string, def : mixed) {\n if (source.hasOwnProperty(name)) {\n let descriptor = Object.getOwnPropertyDescriptor(source, name);\n // $FlowFixMe\n Object.defineProperty(target, name, descriptor);\n\n } else {\n target[name] = def;\n }\n}\n\nexport function dotify(obj : Object, prefix : string = '', newobj : Object = {}) : { [string] : string } {\n prefix = prefix ? `${ prefix }.` : prefix;\n for (let key in obj) {\n if (obj[key] === undefined || obj[key] === null || typeof obj[key] === 'function') {\n continue;\n } else if (obj[key] && Array.isArray(obj[key]) && obj[key].length && obj[key].every(val => typeof val !== 'object')) {\n newobj[`${ prefix }${ key }`] = obj[key].join(',');\n } else if (obj[key] && typeof obj[key] === 'object') {\n newobj = dotify(obj[key], `${ prefix }${ key }`, newobj);\n } else {\n newobj[`${ prefix }${ key }`] = obj[key].toString();\n }\n }\n return newobj;\n}\n\nlet objectIDs = new WeakMap();\n\nexport function getObjectID(obj : Object) : string {\n\n if (obj === null || obj === undefined || (typeof obj !== 'object' && typeof obj !== 'function')) {\n throw new Error(`Invalid object`);\n }\n\n let uid = objectIDs.get(obj);\n\n if (!uid) {\n uid = `${ typeof obj }:${ uniqueID() }`;\n objectIDs.set(obj, uid);\n }\n\n return uid;\n}\n\ntype RegexResultType = {\n text : string,\n groups : Array,\n start : number,\n end : number,\n length : number,\n replace : (text : string) => string\n};\n\nexport function regex(pattern : string | RegExp, string : string, start : number = 0) : ?RegexResultType {\n\n if (typeof pattern === 'string') {\n // eslint-disable-next-line security/detect-non-literal-regexp\n pattern = new RegExp(pattern);\n }\n\n let result = string.slice(start).match(pattern);\n\n if (!result) {\n return;\n }\n\n // $FlowFixMe\n let index : number = result.index;\n let match = result[0];\n\n return {\n text: match,\n groups: result.slice(1),\n start: start + index,\n end: start + index + match.length,\n length: match.length,\n\n replace(text : string) : string {\n\n if (!match) {\n return '';\n }\n\n return `${ match.slice(0, start + index) }${ text }${ match.slice(index + match.length) }`;\n }\n };\n}\n\nexport function regexAll(pattern : string | RegExp, string : string) : Array {\n\n let matches = [];\n let start = 0;\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n let match = regex(pattern, string, start);\n\n if (!match) {\n break;\n }\n\n matches.push(match);\n start = match.end;\n }\n\n return matches;\n}\n\nexport function count(str : string, substr : string) : number {\n\n let startIndex = 0;\n let itemCount = 0;\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n let index = str.indexOf(substr, startIndex);\n\n if (index === -1) {\n break;\n }\n\n startIndex = index;\n itemCount += 1;\n }\n\n return itemCount;\n}\n\nexport function stringify(item : mixed) : string {\n if (typeof item === 'string') {\n return item;\n }\n\n if (item && typeof item.toString === 'function') {\n return item.toString();\n }\n\n return Object.prototype.toString.call(item);\n}\n\nexport function stringifyError(err : mixed) : string {\n if (err) {\n // $FlowFixMe\n let { stack, message } = err;\n\n if (typeof stack === 'string') {\n return stack;\n }\n\n if (typeof message === 'string') {\n return message;\n }\n }\n\n return stringify(err);\n}\n\nexport type EventEmitterType = {\n on : (eventName : string, handler : Function) => CancelableType,\n once : (eventName : string, handler : Function) => CancelableType,\n trigger : (eventName : string) => void,\n triggerOnce : (eventName : string) => void\n};\n\nexport function eventEmitter() : EventEmitterType {\n\n let triggered = {};\n let handlers = {};\n\n return {\n\n on(eventName : string, handler : Function) : CancelableType {\n\n let handlerList = handlers[eventName] = handlers[eventName] || [];\n\n handlerList.push(handler);\n\n let cancelled = false;\n\n return {\n cancel() {\n if (!cancelled) {\n cancelled = true;\n handlerList.splice(handlerList.indexOf(handler), 1);\n }\n\n }\n };\n },\n\n once(eventName : string, handler : Function) : CancelableType {\n\n let listener = this.on(eventName, () => {\n listener.cancel();\n handler();\n });\n\n return listener;\n },\n\n trigger(eventName : string) {\n\n let handlerList = handlers[eventName];\n\n if (handlerList) {\n for (let handler of handlerList) {\n handler();\n }\n }\n },\n\n triggerOnce(eventName : string) {\n\n if (triggered[eventName]) {\n return;\n }\n\n triggered[eventName] = true;\n this.trigger(eventName);\n }\n };\n}\n","/* @flow */\n\nimport { getObjectID, replaceObject } from './util';\n\n\n/* Noop\n ----\n\n Do nothing, zilch, nada, zip\n*/\n\nexport function noop() {\n // pass\n}\n\n\n/* Once\n ----\n\n Create a wrapper function which only allows the inner function to run once, otherwise is a noop\n*/\n\nexport function once(method : (...args : Array) => T) : (...args : Array) => T {\n\n let called = false;\n let result;\n\n // eslint-disable-next-line no-unused-vars\n return function onceWrapper(...args : Array) : T {\n if (called) {\n return result;\n }\n\n called = true;\n result = method.apply(this, arguments);\n return result;\n };\n}\n\n\n/* Memoize\n -------\n\n Create a wrapper function which caches the result of the first call, then for subsequent calls returns the cached value\n*/\n\nexport function memoize(method : (...args : Array) => T) : (...args : Array) => T {\n\n let results = {};\n\n // eslint-disable-next-line no-unused-vars\n return function memoizeWrapper(...args : Array) : T {\n\n let cacheKey;\n\n try {\n cacheKey = JSON.stringify(Array.prototype.slice.call(arguments), (key, val) => {\n\n if (typeof val === 'function') {\n return `zoid:memoize[${ getObjectID(val) }]`;\n }\n\n return val;\n });\n\n } catch (err) {\n throw new Error('Arguments not serializable -- can not be used to memoize');\n }\n\n if (!results.hasOwnProperty(cacheKey)) {\n results[cacheKey] = method.apply(this, arguments);\n }\n\n return results[cacheKey];\n };\n}\n\nexport function debounce(method : (...args : Array) => T, time : number = 100) : (...args : Array) => void {\n\n let timeout;\n\n return function debounceWrapper() {\n clearTimeout(timeout);\n\n timeout = setTimeout(() => {\n return method.apply(this, arguments);\n }, time);\n };\n}\n\nexport function serializeFunctions>(obj : T) : T {\n return replaceObject(obj, {\n 'function': () => {\n return {\n __type__: '__function__'\n };\n }\n });\n}\n\nexport function deserializeFunctions>(obj : T, handler : Function) : T {\n return replaceObject(obj, {\n 'object': (value, key, fullKey) => {\n if (value && value.__type__ === '__function__') {\n return function deserializedFunctionWrapper() : mixed {\n return handler({ key, fullKey, self: this, args: arguments });\n };\n }\n }\n });\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { isWindowClosed, linkFrameWindow, type CrossDomainWindowType, type SameDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\n\nimport { PopupOpenError } from '../error';\nimport type { ElementRefType, CancelableType } from '../types';\n\nimport { once, memoize, debounce } from './fn';\nimport { extend, safeInterval, urlEncode, capitalizeFirstLetter, stringify } from './util';\n\nexport function appendChild(container : HTMLElement, child : HTMLElement | Text) {\n container.appendChild(child);\n}\n\nfunction isElement(element : mixed) : boolean {\n\n if (element instanceof window.Element) {\n return true;\n }\n\n if (element !== null && typeof element === 'object' && element.nodeType === 1 && typeof element.style === 'object' && typeof element.ownerDocument === 'object') {\n return true;\n }\n\n return false;\n}\n\nexport function querySelectorAll(el : HTMLElement, selector : string) : Array {\n return Array.prototype.slice.call(el.querySelectorAll(selector));\n}\n\n/* Get Element\n -----------\n\n Gets an element based on\n\n - Element id\n - CSS Query selector\n*/\n\nexport function getElementSafe(id : ElementRefType) : ?HTMLElement {\n\n if (isElement(id)) {\n // $FlowFixMe\n return id;\n }\n\n if (typeof id === 'string') {\n let element = document.getElementById(id);\n\n if (element) {\n return element;\n }\n\n if (document.querySelector) {\n element = document.querySelector(id);\n }\n\n if (element) {\n return element;\n }\n }\n}\n\nexport function getElement(id : ElementRefType) : HTMLElement {\n\n let element = getElementSafe(id);\n\n if (element) {\n return element;\n }\n\n throw new Error(`Can not find element: ${ stringify(id) }`);\n}\n\n\nexport let documentReady = new ZalgoPromise(resolve => {\n\n if (window.document.readyState === 'complete') {\n return resolve(window.document);\n }\n\n let interval = setInterval(() => {\n if (window.document.readyState === 'complete') {\n clearInterval(interval);\n return resolve(window.document);\n }\n }, 10);\n});\n\nexport function isDocumentReady() : boolean {\n return window.document.readyState === 'complete';\n}\n\nexport function elementReady(id : ElementRefType) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n let name = stringify(id);\n let el = getElementSafe(id);\n\n if (el) {\n return resolve(el);\n }\n\n if (isDocumentReady()) {\n return reject(new Error(`Document is ready and element ${ name } does not exist`));\n }\n\n let interval = setInterval(() => {\n\n el = getElementSafe(id);\n\n if (el) {\n clearInterval(interval);\n return resolve(el);\n }\n\n if (isDocumentReady()) {\n clearInterval(interval);\n return reject(new Error(`Document is ready and element ${ name } does not exist`));\n }\n }, 10);\n });\n}\n\n\n/* Popup\n -----\n\n Open a popup window with the specified option map\n*/\n\nexport function popup(url : string, options : { [ string ] : mixed }) : CrossDomainWindowType {\n\n // eslint-disable-next-line array-callback-return\n let params = Object.keys(options).map((key) => {\n if (options[key]) {\n return `${ key }=${ stringify(options[key]) }`;\n }\n }).filter(Boolean).join(',');\n\n let win;\n\n try {\n win = window.open(url, options.name, params, true);\n } catch (err) {\n throw new PopupOpenError(`Can not open popup window - ${ err.stack || err.message }`);\n }\n\n if (isWindowClosed(win)) {\n let err = new PopupOpenError(`Can not open popup window - blocked`);\n throw err;\n }\n\n return win;\n}\n\n\nexport function writeToWindow(win : SameDomainWindowType, html : string) {\n try {\n win.document.open();\n win.document.write(html);\n win.document.close();\n } catch (err) {\n try {\n win.location = `javascript: document.open(); document.write(${ JSON.stringify(html) }); document.close();`;\n } catch (err2) {\n // pass\n }\n }\n}\n\nexport function writeElementToWindow(win : SameDomainWindowType, el : HTMLElement) {\n\n let tag = el.tagName.toLowerCase();\n\n if (tag !== 'html') {\n throw new Error(`Expected element to be html, got ${ tag }`);\n }\n\n let documentElement = win.document.documentElement;\n\n while (documentElement.children && documentElement.children.length) {\n documentElement.removeChild(documentElement.children[0]);\n }\n\n while (el.children.length) {\n documentElement.appendChild(el.children[0]);\n }\n}\n\nexport function setStyle(el : HTMLElement, styleText : string, doc : Document = window.document) {\n // $FlowFixMe\n if (el.styleSheet) {\n // $FlowFixMe\n el.styleSheet.cssText = styleText;\n } else {\n el.appendChild(doc.createTextNode(styleText));\n }\n}\n\n/* Create Element\n --------------\n\n Create an element with style, html, classes, attributes etc. and append it to the specified container\n*/\n\nexport type ElementOptionsType = {\n style? : { [ string ] : string },\n class? : ?Array,\n attributes? : { [ string ] : string },\n styleSheet? : ?string,\n html? : ?string\n};\n\nexport function createElement(tag : string = 'div', options : ElementOptionsType = {}, container : ?HTMLElement) : HTMLElement {\n\n tag = tag.toLowerCase();\n let element = document.createElement(tag);\n\n if (options.style) {\n extend(element.style, options.style);\n }\n\n if (options.class) {\n element.className = options.class.join(' ');\n }\n\n if (options.attributes) {\n for (let key of Object.keys(options.attributes)) {\n element.setAttribute(key, options.attributes[key]);\n }\n }\n\n if (options.styleSheet) {\n setStyle(element, options.styleSheet);\n }\n\n if (container) {\n appendChild(container, element);\n }\n\n if (options.html) {\n if (tag === 'iframe') {\n // $FlowFixMe\n if (!container || !element.contentWindow) {\n throw new Error(`Iframe html can not be written unless container provided and iframe in DOM`);\n }\n\n // $FlowFixMe\n writeToWindow(element.contentWindow, options.html);\n\n } else {\n element.innerHTML = options.html;\n }\n }\n\n return element;\n}\n\nlet awaitFrameLoadPromises : WeakMap> = new WeakMap();\n\nexport function awaitFrameLoad(frame : HTMLIFrameElement) : ZalgoPromise {\n\n if (awaitFrameLoadPromises.has(frame)) {\n let promise = awaitFrameLoadPromises.get(frame);\n if (promise) {\n return promise;\n }\n }\n\n let promise = new ZalgoPromise((resolve, reject) => {\n frame.addEventListener('load', () => {\n linkFrameWindow(frame);\n resolve(frame);\n });\n\n frame.addEventListener('error', (err : Event) => {\n if (frame.contentWindow) {\n resolve(frame);\n } else {\n reject(err);\n }\n });\n });\n\n awaitFrameLoadPromises.set(frame, promise);\n\n return promise;\n}\n\nexport function awaitFrameWindow(frame : HTMLIFrameElement) : ZalgoPromise {\n\n if (frame.contentWindow) {\n return ZalgoPromise.resolve(frame.contentWindow);\n }\n\n return awaitFrameLoad(frame).then(loadedFrame => {\n\n if (!loadedFrame.contentWindow) {\n throw new Error(`Could not find window in iframe`);\n }\n\n return loadedFrame.contentWindow;\n });\n}\n\n\n/* Iframe\n ------\n\n Open an iframe with the specified container, url, and option property map\n*/\n\nexport type IframeElementOptionsType = {\n style? : { [ string ] : string },\n class? : ?Array,\n attributes? : { [ string ] : string },\n styleSheet? : ?string,\n html? : ?string,\n url? : ?string\n};\n\nexport function iframe(options : IframeElementOptionsType = {}, container : HTMLElement) : HTMLIFrameElement {\n\n let el = getElement(container);\n\n let attributes = options.attributes || {};\n let style = options.style || {};\n\n let frame = createElement('iframe', {\n attributes: {\n frameBorder: '0',\n allowTransparency: 'true',\n ...attributes\n },\n style: {\n backgroundColor: 'transparent',\n ...style\n },\n html: options.html,\n class: options.class\n });\n\n // $FlowFixMe\n awaitFrameLoad(frame);\n\n el.appendChild(frame);\n\n if (options.url || window.navigator.userAgent.match(/MSIE|Edge/i)) {\n frame.setAttribute('src', options.url || 'about:blank');\n }\n\n // $FlowFixMe\n return frame;\n}\n\n/* Add Event Listener\n ------------------\n\n Add DOM Event listener with cancel\n*/\n\nexport function addEventListener(obj : HTMLElement, event : string, handler : (event : Event) => void) : CancelableType {\n obj.addEventListener(event, handler);\n return {\n cancel() {\n obj.removeEventListener(event, handler);\n }\n };\n}\n\n/* Scan For Javascript\n -------------------\n\n Check if the string contains anything which could conceivably be run as javascript if the string is set to innerHTML\n*/\n\nexport function scanForJavascript(str : string) : string {\n\n if (!str) {\n return str;\n }\n\n if (str.match(/ {\n\n let params = {};\n\n if (!queryString) {\n return params;\n }\n\n if (queryString.indexOf('=') === -1) {\n throw new Error(`Can not parse query string params: ${ queryString }`);\n }\n\n for (let pair of queryString.split('&')) {\n pair = pair.split('=');\n\n if (pair[0] && pair[1]) {\n params[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n }\n\n return params;\n});\n\n\nexport function getQueryParam(name : string) : ?string {\n return parseQuery(window.location.search.slice(1))[name];\n}\n\nexport function formatQuery(obj : { [ string ] : string } = {}) : string {\n\n return Object.keys(obj).filter(key => {\n return typeof obj[key] === 'string';\n }).map(key => {\n return `${ urlEncode(key) }=${ urlEncode(obj[key]) }`;\n }).join('&');\n}\n\nexport function extendQuery(originalQuery : string, props : { [ string ] : string } = {}) : string {\n\n if (!props || !Object.keys(props).length) {\n return originalQuery;\n }\n\n return formatQuery({\n ...parseQuery(originalQuery),\n ...props\n });\n}\n\nexport function extendUrl(url : string, options : { query? : { [ string ] : string }, hash? : { [ string ] : string } } = {}) : string {\n\n let query = options.query || {};\n let hash = options.hash || {};\n\n let originalUrl;\n let originalQuery;\n let originalHash;\n\n [ originalUrl, originalHash ] = url.split('#');\n [ originalUrl, originalQuery ] = originalUrl.split('?');\n\n let queryString = extendQuery(originalQuery, query);\n let hashString = extendQuery(originalHash, hash);\n\n if (queryString) {\n originalUrl = `${ originalUrl }?${ queryString }`;\n }\n\n if (hashString) {\n originalUrl = `${ originalUrl }#${ hashString }`;\n }\n\n return originalUrl;\n}\n\n\nexport function elementStoppedMoving(element : ElementRefType, timeout : number = 5000) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n let el = getElement(element);\n\n let start = el.getBoundingClientRect();\n\n let interval;\n let timer;\n\n interval = setInterval(() => {\n let end = el.getBoundingClientRect();\n\n if (start.top === end.top && start.bottom === end.bottom && start.left === end.left && start.right === end.right && start.width === end.width && start.height === end.height) {\n clearTimeout(timer);\n clearInterval(interval);\n return resolve();\n }\n\n start = end;\n\n }, 50);\n\n timer = setTimeout(() => {\n clearInterval(interval);\n reject(new Error(`Timed out waiting for element to stop animating after ${ timeout }ms`));\n }, timeout);\n });\n}\n\nexport function getCurrentDimensions(el : HTMLElement) : { width : number, height : number } {\n return {\n width: el.offsetWidth,\n height: el.offsetHeight\n };\n}\n\nexport function changeStyle(el : HTMLElement, styles : { [ string ] : string }) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n\n for (let key of Object.keys(styles)) {\n // $FlowFixMe\n el.style[key] = styles[key];\n }\n\n setTimeout(resolve, 1);\n });\n}\n\nexport function setOverflow(el : HTMLElement, value : string = 'auto') : { reset : () => void } {\n\n let { overflow, overflowX, overflowY } = el.style;\n\n el.style.overflow = el.style.overflowX = el.style.overflowY = value;\n\n return {\n reset() {\n el.style.overflow = overflow;\n el.style.overflowX = overflowX;\n el.style.overflowY = overflowY;\n }\n };\n}\n\nfunction dimensionsDiff(one : { width : number, height : number }, two : { width : number, height : number }, { width = true, height = true, threshold = 0 } : { width : boolean, height : boolean, threshold : number }) : boolean {\n\n if (width && Math.abs(one.width - two.width) > threshold) {\n return true;\n }\n\n if (height && Math.abs(one.height - two.height) > threshold) {\n return true;\n }\n\n return false;\n}\n\nexport function trackDimensions(el : HTMLElement, { width = true, height = true, threshold = 0 } : { width : boolean, height : boolean, threshold : number }) : { check : () => { changed : boolean, dimensions : { width : number, height : number } }, reset : () => void } {\n\n let currentDimensions = getCurrentDimensions(el);\n\n return {\n check() : { changed : boolean, dimensions : { width : number, height : number } } {\n let newDimensions = getCurrentDimensions(el);\n\n return {\n changed: dimensionsDiff(currentDimensions, newDimensions, { width, height, threshold }),\n dimensions: newDimensions\n };\n },\n\n reset() {\n currentDimensions = getCurrentDimensions(el);\n }\n };\n}\n\nexport function onDimensionsChange(el : HTMLElement, { width = true, height = true, delay = 50, threshold = 0 } : { width? : boolean, height? : boolean, delay? : number, threshold? : number }) : ZalgoPromise<{ width : number, height : number }> {\n\n return new ZalgoPromise(resolve => {\n\n let tracker = trackDimensions(el, { width, height, threshold });\n\n let interval;\n\n let resolver = debounce((dimensions) => {\n clearInterval(interval);\n return resolve(dimensions);\n }, delay * 4);\n\n interval = setInterval(() => {\n let { changed, dimensions } = tracker.check();\n if (changed) {\n tracker.reset();\n return resolver(dimensions);\n }\n }, delay);\n\n function onWindowResize() {\n let { changed, dimensions } = tracker.check();\n if (changed) {\n tracker.reset();\n window.removeEventListener('resize', onWindowResize);\n resolver(dimensions);\n }\n }\n\n window.addEventListener('resize', onWindowResize);\n });\n}\n\n\nexport function dimensionsMatchViewport(el : HTMLElement, { width, height } : { width : number, height : number }) : boolean {\n\n let dimensions = getCurrentDimensions(el);\n\n if (width && dimensions.width !== window.innerWidth) {\n return false;\n }\n\n if (height && dimensions.height !== window.innerHeight) {\n return false;\n }\n\n return true;\n}\n\n\nexport function bindEvents(element : HTMLElement, eventNames : Array, handler : (event : Event) => void) : CancelableType {\n\n handler = once(handler);\n\n for (let eventName of eventNames) {\n element.addEventListener(eventName, handler);\n }\n\n return {\n cancel: once(() => {\n for (let eventName of eventNames) {\n element.removeEventListener(eventName, handler);\n }\n })\n };\n}\n\nconst VENDOR_PREFIXES = [ 'webkit', 'moz', 'ms', 'o' ];\n\nexport function setVendorCSS(element : HTMLElement, name : string, value : string) {\n\n // $FlowFixMe\n element.style[name] = value;\n\n let capitalizedName = capitalizeFirstLetter(name);\n\n for (let prefix of VENDOR_PREFIXES) {\n // $FlowFixMe\n element.style[`${ prefix }${ capitalizedName }`] = value;\n }\n}\n\n\nlet CSSRule = window.CSSRule;\n\nconst KEYFRAMES_RULE = CSSRule.KEYFRAMES_RULE || CSSRule.WEBKIT_KEYFRAMES_RULE || CSSRule.MOZ_KEYFRAMES_RULE ||\n CSSRule.O_KEYFRAMES_RULE || CSSRule.MS_KEYFRAMES_RULE;\n\nfunction isValidAnimation(element : HTMLElement, name : string) : boolean {\n\n let stylesheets = element.ownerDocument.styleSheets;\n\n try {\n for (let i = 0; i < stylesheets.length; i++) {\n\n // $FlowFixMe\n let cssRules = stylesheets[i].cssRules;\n\n if (!cssRules) {\n continue;\n }\n\n for (let j = 0; j < cssRules.length; j++) {\n\n let cssRule = cssRules[j];\n\n if (!cssRule) {\n continue;\n }\n\n if (cssRule.type === KEYFRAMES_RULE && cssRule.name === name) {\n return true;\n }\n }\n }\n } catch (err) {\n\n return false;\n }\n\n\n return false;\n}\n\n\nconst ANIMATION_START_EVENTS = [ 'animationstart', 'webkitAnimationStart', 'oAnimationStart', 'MSAnimationStart' ];\nconst ANIMATION_END_EVENTS = [ 'animationend', 'webkitAnimationEnd', 'oAnimationEnd', 'MSAnimationEnd' ];\n\nexport function animate(element : ElementRefType, name : string, clean : (Function) => void, timeout : number = 1000) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n let el = getElement(element);\n\n if (!el || !isValidAnimation(el, name)) {\n return resolve();\n }\n\n let hasStarted = false;\n\n let startTimeout;\n let endTimeout;\n let startEvent;\n let endEvent;\n\n function cleanUp() {\n setVendorCSS(el, 'animationName', '');\n clearTimeout(startTimeout);\n clearTimeout(endTimeout);\n startEvent.cancel();\n endEvent.cancel();\n }\n\n startEvent = bindEvents(el, ANIMATION_START_EVENTS, event => {\n\n // $FlowFixMe\n if (event.target !== el || event.animationName !== name) {\n return;\n }\n\n clearTimeout(startTimeout);\n\n event.stopPropagation();\n\n startEvent.cancel();\n hasStarted = true;\n\n endTimeout = setTimeout(() => {\n cleanUp();\n resolve();\n }, timeout);\n });\n\n endEvent = bindEvents(el, ANIMATION_END_EVENTS, event => {\n\n // $FlowFixMe\n if (event.target !== el || event.animationName !== name) {\n return;\n }\n\n cleanUp();\n\n // $FlowFixMe\n if (typeof event.animationName === 'string' && event.animationName !== name) {\n return reject(`Expected animation name to be ${ name }, found ${ event.animationName }`);\n }\n\n return resolve();\n });\n\n setVendorCSS(el, 'animationName', name);\n\n startTimeout = setTimeout(() => {\n if (!hasStarted) {\n cleanUp();\n return resolve();\n }\n }, 200);\n\n if (clean) {\n clean(cleanUp);\n }\n });\n}\n\nconst STYLE = {\n\n DISPLAY: {\n NONE: 'none',\n BLOCK: 'block'\n },\n\n VISIBILITY: {\n VISIBLE: 'visible',\n HIDDEN: 'hidden'\n },\n\n IMPORTANT: 'important'\n};\n\nexport function makeElementVisible(element : HTMLElement) {\n element.style.setProperty('visibility', '');\n}\n\nexport function makeElementInvisible(element : HTMLElement) {\n element.style.setProperty('visibility', STYLE.VISIBILITY.HIDDEN, STYLE.IMPORTANT);\n}\n\n\nexport function showElement(element : HTMLElement) {\n element.style.setProperty('display', '');\n}\n\nexport function hideElement(element : HTMLElement) {\n element.style.setProperty('display', STYLE.DISPLAY.NONE, STYLE.IMPORTANT);\n}\n\nexport function destroyElement(element : HTMLElement) {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n}\n\nexport function showAndAnimate(element : HTMLElement, name : string, clean : (Function) => void) : ZalgoPromise {\n let animation = animate(element, name, clean);\n showElement(element);\n return animation;\n}\n\nexport function animateAndHide(element : HTMLElement, name : string, clean : (Function) => void) : ZalgoPromise {\n return animate(element, name, clean).then(() => {\n hideElement(element);\n });\n}\n\nexport function addClass(element : HTMLElement, name : string) {\n if (element.classList) {\n element.classList.add(name);\n } else if (element.className.split(/\\s+/).indexOf(name) === -1) {\n element.className += ` ${ name }`;\n }\n}\n\nexport function removeClass(element : HTMLElement, name : string) {\n if (element.classList) {\n element.classList.remove(name);\n } else if (element.className.split(/\\s+/).indexOf(name) !== -1) {\n element.className = element.className.replace(name, '');\n }\n}\n\nexport function getCurrentScriptDir() : string {\n // eslint-disable-next-line no-console\n console.warn(`Do not use zoid.getCurrentScriptDir() in production -- browser support is limited`);\n\n // eslint-disable-next-line compat/compat\n if (document.currentScript) {\n // eslint-disable-next-line compat/compat\n return document.currentScript.src.split('/').slice(0, -1).join('/');\n }\n\n return '.';\n}\n\nexport function getElementName(element : ElementRefType) : string {\n\n if (typeof element === 'string') {\n return element;\n }\n\n if (!element || !element.tagName) {\n return '';\n }\n\n let name = element.tagName.toLowerCase();\n\n if (element.id) {\n name += `#${ element.id }`;\n } else if (element.className) {\n name += `.${ element.className.split(' ').join('.') }`;\n }\n\n return name;\n}\n\nexport function isElementClosed(el : HTMLElement) : boolean {\n if (!el || !el.parentNode) {\n return true;\n }\n return false;\n}\n\nexport function watchElementForClose(element : HTMLElement, handler : () => mixed) : CancelableType {\n handler = once(handler);\n\n let interval;\n\n if (isElementClosed(element)) {\n handler();\n } else {\n interval = safeInterval(() => {\n if (isElementClosed(element)) {\n interval.cancel();\n handler();\n }\n }, 50);\n }\n\n return {\n cancel() {\n if (interval) {\n interval.cancel();\n }\n }\n };\n}\n\nexport function getHttpType(contentType : string, url : string) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n let req = new window.XMLHttpRequest();\n\n req.open('GET', url);\n req.setRequestHeader('Accept', contentType);\n req.send(null);\n\n req.onload = () => {\n resolve(req.responseText);\n };\n\n req.onerror = () => {\n return reject(new Error(`prefetch failed`));\n };\n });\n}\n\nexport function getHTML(url : string) : ZalgoPromise {\n return getHttpType('text/html', url);\n}\n\nexport function getCSS(url : string) : ZalgoPromise {\n return getHttpType('text/css', url);\n}\n\nexport function getScript(url : string) : ZalgoPromise {\n return getHttpType('*/*', url);\n}\n\nexport function prefetchPage(url : string) : ZalgoPromise {\n return getHTML(url);\n}\n\nconst JSX_EVENTS = {\n onClick: 'click'\n};\n\nexport function fixScripts(el : HTMLElement, doc : Document = window.document) {\n for (let script of querySelectorAll(el, 'script')) {\n let newScript = doc.createElement('script');\n newScript.text = script.textContent;\n script.parentNode.replaceChild(newScript, script);\n }\n}\n\nexport function jsxDom(name : string, props : ?{ [ string ] : mixed }, content : ElementRefType) : HTMLElement {\n\n name = name.toLowerCase();\n\n let doc = (this && this.createElement)\n ? this\n : window.document;\n\n let el = doc.createElement(name);\n\n for (let prop in props) {\n if (prop in JSX_EVENTS) {\n el.addEventListener(JSX_EVENTS[prop], props[prop]);\n } else if (prop === 'innerHTML') {\n el.innerHTML = props[prop];\n fixScripts(el, doc);\n } else {\n el.setAttribute(prop, props[prop]);\n }\n }\n\n if (name === 'style') {\n\n if (typeof content !== 'string') {\n throw new TypeError(`Expected ${ name } tag content to be string, got ${ typeof content }`);\n }\n\n if (arguments.length > 3) {\n throw new Error(`Expected only text content for ${ name } tag`);\n }\n\n setStyle(el, content, doc);\n\n } else if (name === 'iframe') {\n\n if (arguments.length > 3) {\n throw new Error(`Expected only single child node for iframe`);\n }\n\n el.addEventListener('load', () => {\n let win = el.contentWindow;\n\n if (!win) {\n throw new Error(`Expected frame to have contentWindow`);\n }\n\n if (typeof content === 'string') {\n writeToWindow(win, content);\n } else {\n writeElementToWindow(win, content);\n }\n });\n\n } else if (name === 'script') {\n\n if (typeof content !== 'string') {\n throw new TypeError(`Expected ${ name } tag content to be string, got ${ typeof content }`);\n }\n\n if (arguments.length > 3) {\n throw new Error(`Expected only text content for ${ name } tag`);\n }\n\n el.text = content;\n\n } else {\n for (let i = 2; i < arguments.length; i++) {\n if (typeof arguments[i] === 'string') {\n let textNode = doc.createTextNode(arguments[i]);\n appendChild(el, textNode);\n } else {\n appendChild(el, arguments[i]);\n }\n }\n }\n\n return el;\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\n\n/* DeNodeify\n ---------\n\n Turns a method from a function which accepts a callback, into a function which returns a promise.\n*/\n\nexport function denodeify(method : (...args : Array) => T) : (...args : Array) => ZalgoPromise {\n\n return function denodeifyWrapper() : ZalgoPromise {\n\n let self = this;\n let args = Array.prototype.slice.call(arguments);\n\n if (args.length >= method.length) {\n return ZalgoPromise.resolve(method.apply(self, args));\n }\n\n return new ZalgoPromise((resolve, reject) => {\n args.push((err, result) => {\n\n if (err && !(err instanceof Error)) {\n throw new Error(`Passed non-Error object in callback: [ ${ err } ] -- callbacks should either be called with callback(new Error(...)) or callback(null, result).`);\n }\n\n return err ? reject(err) : resolve(result);\n });\n method.apply(self, args);\n });\n };\n}\n\nexport function promisify(method : (...args : Array) => T | ZalgoPromise) : (...args : Array) => ZalgoPromise {\n return function promisifyWRapper() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n return method.apply(this, arguments);\n });\n };\n}\n\nexport function delay(time : number = 1) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n setTimeout(resolve, time);\n });\n}\n\nexport function cycle(method : Function) : ZalgoPromise {\n return ZalgoPromise.try(method).then(() => cycle(method));\n}\n","/* @flow */\n\nexport function isPerc(str : string) : boolean {\n return typeof str === 'string' && (/^[0-9]+%$/).test(str);\n}\n\nexport function isPx(str : string) : boolean {\n return typeof str === 'string' && (/^[0-9]+px$/).test(str);\n}\n\nexport function toNum(val : string | number) : number {\n\n if (typeof val === 'number') {\n return val;\n }\n\n let match = val.match(/^([0-9]+)(px|%)$/);\n\n if (!match) {\n throw new Error(`Could not match css value from ${ val }`);\n }\n\n return parseInt(match[1], 10);\n}\n\nexport function toPx(val : number | string) : string {\n return `${ toNum(val) }px`;\n}\n\nexport function toCSS(val : number | string) : string {\n\n if (typeof val === 'number') {\n return toPx(val);\n }\n\n return isPerc(val) ? val : toPx(val);\n}\n\nexport function percOf(num : number, perc : string) : number {\n return parseInt(num * toNum(perc) / 100, 10);\n}\n\nexport function normalizeDimension(dim : string | number, max : number) : number {\n if (typeof dim === 'number') {\n return dim;\n } else if (isPerc(dim)) {\n return percOf(max, dim);\n } else if (isPx(dim)) {\n return toNum(dim);\n } else {\n throw new Error(`Can not normalize dimension: ${ dim }`);\n }\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nexport function memoized(target : Object, name : string, descriptor : Object) {\n let method = descriptor.value;\n\n descriptor.value = function memoizedFunction() : T {\n\n this.__memoized__ = this.__memoized__ || {};\n\n if (!this.__memoized__.hasOwnProperty(name)) {\n this.__memoized__[name] = method.apply(this, arguments);\n }\n\n return this.__memoized__[name];\n };\n\n descriptor.value.displayName = `${ name }:memoized`;\n}\n\nexport function promise(target : Object, name : string, descriptor : Object) {\n let method = descriptor.value;\n\n descriptor.value = function promisifiedFunction() : ZalgoPromise {\n return ZalgoPromise.try(method, this, arguments);\n };\n\n descriptor.value.displayName = `${ name }:promisified`;\n}\n","/* @flow */\n\nimport { CONFIG } from 'post-robot/src';\nimport { config, logLevels, info as logInfo, warn as logWarn, error as logError } from 'beaver-logger/client';\n\nexport function setLogLevel(logLevel : string) {\n if (logLevels.indexOf(logLevel) === -1) {\n throw new Error(`Invalid logLevel: ${ logLevel }`);\n }\n config.logLevel = logLevel;\n CONFIG.LOG_LEVEL = logLevel;\n window.LOG_LEVEL = logLevel;\n}\n\nexport function info(name : string, event : string, payload : Object = {}) {\n logInfo(`xc_${ name }_${ event }`, payload);\n}\n\n\n/* Log Warning\n -----------\n\n Log a warning\n*/\n\nexport function warn(name : string, event : string, payload : Object = {}) {\n logWarn(`xc_${ name }_${ event }`, payload);\n}\n\n\n/* Log Error\n ---------\n\n Log an error\n*/\n\nexport function error(name : string, event : string, payload : Object = {}) {\n logError(`xc_${ name }_${ event }`, payload);\n}\n","/* @flow */\n\nimport { isSameDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { __ZOID__ } from '../constants';\n\nexport function globalFor(win : CrossDomainWindowType) : ?Object {\n\n if (!isSameDomain(win)) {\n return;\n }\n\n if (!win[__ZOID__]) {\n win[__ZOID__] = {};\n }\n\n return win[__ZOID__];\n}\n\nexport function localGlobal() : Object {\n let global = globalFor(window);\n\n if (!global) {\n throw new Error(`Could not get local global`);\n }\n\n return global;\n}\n\nexport let global = localGlobal();\n","/* @flow */\n\nexport * from './dom';\nexport * from './fn';\nexport * from './promise';\nexport * from './util';\nexport * from './css';\nexport * from './decorators';\nexport * from './logger';\nexport * from './global';\n","/* @flow */\n\nexport function isRegex(item : mixed) : boolean {\n return Object.prototype.toString.call(item) === '[object RegExp]';\n}\n\n// eslint-disable-next-line no-unused-vars\nexport function noop(...args : Array) {\n // pass\n}\n","/* @flow */\n\nexport const PROTOCOL = {\n MOCK: ('mock:' : 'mock:'),\n FILE: ('file:' : 'file:'),\n ABOUT: ('about:' : 'about:')\n};\n\nexport const WILDCARD = '*';\n\nexport const WINDOW_TYPE = {\n IFRAME: ('iframe' : 'iframe'),\n POPUP: ('popup' : 'popup')\n};\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { isRegex, noop } from './util';\nimport type { CrossDomainWindowType, SameDomainWindowType, DomainMatcher } from './types';\nimport { PROTOCOL, WILDCARD } from './constants';\n\nlet IE_WIN_ACCESS_ERROR = 'Call was rejected by callee.\\r\\n';\n\nexport function isFileProtocol(win : SameDomainWindowType = window) : boolean {\n return win.location.protocol === PROTOCOL.FILE;\n}\n\nexport function isAboutProtocol(win : SameDomainWindowType = window) : boolean {\n return win.location.protocol === PROTOCOL.ABOUT;\n}\n\nexport function getParent(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n\n if (!win) {\n return;\n }\n\n try {\n if (win.parent && win.parent !== win) {\n return win.parent;\n }\n } catch (err) {\n // pass\n }\n}\n\nexport function getOpener(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n\n if (!win) {\n return;\n }\n\n // Make sure we're not actually an iframe which has had window.open() called on us\n if (getParent(win)) {\n return;\n }\n\n try {\n return win.opener;\n } catch (err) {\n // pass\n }\n}\n\nexport function canReadFromWindow(win : CrossDomainWindowType | SameDomainWindowType) : boolean {\n try {\n // $FlowFixMe\n noop(win && win.location && win.location.href);\n return true;\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\nexport function getActualDomain(win? : SameDomainWindowType = window) : string {\n\n let location = win.location;\n\n if (!location) {\n throw new Error(`Can not read window location`);\n }\n\n let protocol = location.protocol;\n\n if (!protocol) {\n throw new Error(`Can not read window protocol`);\n }\n\n if (protocol === PROTOCOL.FILE) {\n return `${ PROTOCOL.FILE }//`;\n }\n\n if (protocol === PROTOCOL.ABOUT) {\n\n let parent = getParent(win);\n if (parent && canReadFromWindow(parent)) {\n // $FlowFixMe\n return getActualDomain(parent);\n }\n\n return `${ PROTOCOL.ABOUT }//`;\n }\n\n let host = location.host;\n\n if (!host) {\n throw new Error(`Can not read window host`);\n }\n\n return `${ protocol }//${ host }`;\n}\n\nexport function getDomain(win? : SameDomainWindowType = window) : string {\n\n let domain = getActualDomain(win);\n\n if (domain && win.mockDomain && win.mockDomain.indexOf(PROTOCOL.MOCK) === 0) {\n return win.mockDomain;\n }\n\n return domain;\n}\n\nexport function isBlankDomain(win : CrossDomainWindowType) : boolean {\n try {\n // $FlowFixMe\n if (!win.location.href) {\n return true;\n }\n\n if (win.location.href === 'about:blank') {\n return true;\n }\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\nexport function isActuallySameDomain(win : CrossDomainWindowType) : boolean {\n\n try {\n if (win === window) {\n return true;\n }\n\n } catch (err) {\n // pass\n }\n\n try {\n let desc = Object.getOwnPropertyDescriptor(win, 'location');\n\n if (desc && desc.enumerable === false) {\n return false;\n }\n\n } catch (err) {\n // pass\n }\n\n try {\n // $FlowFixMe\n if (isAboutProtocol(win) && canReadFromWindow(win)) {\n return true;\n }\n } catch (err) {\n // pass\n }\n\n try {\n // $FlowFixMe\n if (getActualDomain(win) === getActualDomain(window)) {\n return true;\n }\n\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\nexport function isSameDomain(win : CrossDomainWindowType | SameDomainWindowType) : boolean {\n\n if (!isActuallySameDomain(win)) {\n return false;\n }\n\n try {\n\n if (win === window) {\n return true;\n }\n\n // $FlowFixMe\n if (isAboutProtocol(win) && canReadFromWindow(win)) {\n return true;\n }\n\n // $FlowFixMe\n if (getDomain(window) === getDomain(win)) {\n return true;\n }\n\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\n\nexport function assertSameDomain(win : CrossDomainWindowType | SameDomainWindowType) : SameDomainWindowType {\n if (!isSameDomain(win)) {\n throw new Error(`Expected window to be same domain`);\n }\n\n // $FlowFixMe\n return win;\n}\n\nexport function getParents(win : CrossDomainWindowType) : Array {\n\n let result = [];\n\n try {\n\n while (win.parent !== win) {\n result.push(win.parent);\n win = win.parent;\n }\n\n } catch (err) {\n // pass\n }\n\n return result;\n}\n\nexport function isAncestorParent(parent : CrossDomainWindowType, child : CrossDomainWindowType) : boolean {\n\n if (!parent || !child) {\n return false;\n }\n\n let childParent = getParent(child);\n\n if (childParent) {\n return childParent === parent;\n }\n\n if (getParents(child).indexOf(parent) !== -1) {\n return true;\n }\n\n return false;\n}\n\nexport function getFrames(win : CrossDomainWindowType) : Array {\n\n let result = [];\n\n let frames;\n\n try {\n frames = win.frames;\n } catch (err) {\n frames = win;\n }\n\n let len;\n\n try {\n len = frames.length;\n } catch (err) {\n // pass\n }\n\n if (len === 0) {\n return result;\n }\n\n if (len) {\n for (let i = 0; i < len; i++) {\n\n let frame;\n\n try {\n frame = frames[i];\n } catch (err) {\n continue;\n }\n\n result.push(frame);\n }\n\n return result;\n }\n\n for (let i = 0; i < 100; i++) {\n let frame;\n\n try {\n frame = frames[i];\n } catch (err) {\n return result;\n }\n\n if (!frame) {\n return result;\n }\n\n result.push(frame);\n }\n\n return result;\n}\n\n\nexport function getAllChildFrames(win : CrossDomainWindowType) : Array {\n\n let result = [];\n\n for (let frame of getFrames(win)) {\n result.push(frame);\n\n for (let childFrame of getAllChildFrames(frame)) {\n result.push(childFrame);\n }\n }\n\n return result;\n}\n\nexport function getTop(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n\n try {\n if (win.top) {\n return win.top;\n }\n } catch (err) {\n // pass\n }\n\n if (getParent(win) === win) {\n return win;\n }\n\n try {\n if (isAncestorParent(window, win) && window.top) {\n return window.top;\n }\n } catch (err) {\n // pass\n }\n\n try {\n if (isAncestorParent(win, window) && window.top) {\n return window.top;\n }\n } catch (err) {\n // pass\n }\n\n for (let frame of getAllChildFrames(win)) {\n try {\n if (frame.top) {\n return frame.top;\n }\n } catch (err) {\n // pass\n }\n\n if (getParent(frame) === frame) {\n return frame;\n }\n }\n}\n\nexport function getNextOpener(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n return getOpener(getTop(win) || win);\n}\n\nexport function getUltimateTop(win? : CrossDomainWindowType = window) : CrossDomainWindowType {\n let opener = getNextOpener(win);\n\n if (opener) {\n return getUltimateTop(opener);\n }\n\n return top;\n}\n\nexport function getAllFramesInWindow(win : CrossDomainWindowType) : Array {\n let top = getTop(win);\n\n if (!top) {\n throw new Error(`Can not determine top window`);\n }\n\n return [ ...getAllChildFrames(top), top ];\n}\n\nexport function getAllWindows(win? : CrossDomainWindowType = window) : $ReadOnlyArray {\n let frames = getAllFramesInWindow(win);\n let opener = getNextOpener(win);\n\n if (opener) {\n return [ ...getAllWindows(opener), ...frames ];\n } else {\n return frames;\n }\n}\n\nexport function isTop(win : CrossDomainWindowType) : boolean {\n return win === getTop(win);\n}\n\nexport function isFrameWindowClosed(frame : HTMLIFrameElement) : boolean {\n\n if (!frame.contentWindow) {\n return true;\n }\n\n if (!frame.parentNode) {\n return true;\n }\n\n let doc = frame.ownerDocument;\n\n if (doc && doc.documentElement && !doc.documentElement.contains(frame)) {\n return true;\n }\n\n return false;\n}\n\nfunction safeIndexOf(collection : Array, item : T) : number {\n for (let i = 0; i < collection.length; i++) {\n\n try {\n if (collection[i] === item) {\n return i;\n }\n } catch (err) {\n // pass\n }\n }\n\n return -1;\n}\n\nlet iframeWindows = [];\nlet iframeFrames = [];\n\nexport function isWindowClosed(win : CrossDomainWindowType, allowMock : boolean = true) : boolean {\n\n try {\n if (win === window) {\n return false;\n }\n } catch (err) {\n return true;\n }\n\n try {\n if (!win) {\n return true;\n }\n\n } catch (err) {\n return true;\n }\n\n try {\n if (win.closed) {\n return true;\n }\n\n } catch (err) {\n\n // I love you so much IE\n\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return false;\n }\n\n return true;\n }\n\n\n if (allowMock && isSameDomain(win)) {\n try {\n // $FlowFixMe\n if (win.mockclosed) {\n return true;\n }\n } catch (err) {\n // pass\n }\n }\n\n // Mobile safari\n\n try {\n if (!win.parent || !win.top) {\n return true;\n }\n } catch (err) {\n // pass\n }\n\n // Yes, this actually happens in IE. win === win errors out when the window\n // is from an iframe, and the iframe was removed from the page.\n\n try {\n noop(win === win); // eslint-disable-line no-self-compare\n } catch (err) {\n return true;\n }\n\n // IE orphaned frame\n\n let iframeIndex = safeIndexOf(iframeWindows, win);\n\n if (iframeIndex !== -1) {\n let frame = iframeFrames[iframeIndex];\n\n if (frame && isFrameWindowClosed(frame)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction cleanIframes() {\n for (let i = 0; i < iframeWindows.length; i++) {\n let closed = false;\n\n try {\n closed = iframeWindows[i].closed;\n } catch (err) {\n // pass\n }\n\n if (closed) {\n iframeFrames.splice(i, 1);\n iframeWindows.splice(i, 1);\n }\n }\n}\n\nexport function linkFrameWindow(frame : HTMLIFrameElement) {\n\n cleanIframes();\n\n if (frame && frame.contentWindow) {\n try {\n iframeWindows.push(frame.contentWindow);\n iframeFrames.push(frame);\n } catch (err) {\n // pass\n }\n }\n}\n\nexport function getUserAgent(win : ?SameDomainWindowType) : string {\n win = win || window;\n return win.navigator.mockUserAgent || win.navigator.userAgent;\n}\n\n\nexport function getFrameByName(win : CrossDomainWindowType, name : string) : ?CrossDomainWindowType {\n\n let winFrames = getFrames(win);\n\n for (let childFrame of winFrames) {\n try {\n // $FlowFixMe\n if (isSameDomain(childFrame) && childFrame.name === name && winFrames.indexOf(childFrame) !== -1) {\n return childFrame;\n }\n } catch (err) {\n // pass\n }\n }\n\n try {\n // $FlowFixMe\n if (winFrames.indexOf(win.frames[name]) !== -1) {\n // $FlowFixMe\n return win.frames[name];\n }\n } catch (err) {\n // pass\n }\n\n try {\n if (winFrames.indexOf(win[name]) !== -1) {\n return win[name];\n }\n } catch (err) {\n // pass\n }\n}\n\nexport function findChildFrameByName(win : CrossDomainWindowType, name : string) : ?CrossDomainWindowType {\n\n let frame = getFrameByName(win, name);\n\n if (frame) {\n return frame;\n }\n\n for (let childFrame of getFrames(win)) {\n let namedFrame = findChildFrameByName(childFrame, name);\n\n if (namedFrame) {\n return namedFrame;\n }\n }\n}\n\nexport function findFrameByName(win : CrossDomainWindowType, name : string) : ?CrossDomainWindowType {\n\n let frame;\n\n frame = getFrameByName(win, name);\n\n if (frame) {\n return frame;\n }\n\n let top = getTop(win) || win;\n\n return findChildFrameByName(top, name);\n}\n\nexport function isParent(win : CrossDomainWindowType, frame : CrossDomainWindowType) : boolean {\n\n let frameParent = getParent(frame);\n\n if (frameParent) {\n return frameParent === win;\n }\n\n for (let childFrame of getFrames(win)) {\n if (childFrame === frame) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function isOpener(parent : CrossDomainWindowType, child : CrossDomainWindowType) : boolean {\n\n return parent === getOpener(child);\n}\n\nexport function getAncestor(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n win = win || window;\n\n let opener = getOpener(win);\n\n if (opener) {\n return opener;\n }\n\n let parent = getParent(win);\n\n if (parent) {\n return parent;\n }\n}\n\nexport function getAncestors(win : CrossDomainWindowType) : Array {\n\n let results = [];\n\n let ancestor = win;\n\n while (ancestor) {\n ancestor = getAncestor(ancestor);\n if (ancestor) {\n results.push(ancestor);\n }\n }\n\n return results;\n}\n\n\nexport function isAncestor(parent : CrossDomainWindowType, child : CrossDomainWindowType) : boolean {\n\n let actualParent = getAncestor(child);\n\n if (actualParent) {\n if (actualParent === parent) {\n return true;\n }\n\n return false;\n }\n\n if (child === parent) {\n return false;\n }\n\n if (getTop(child) === child) {\n return false;\n }\n\n for (let frame of getFrames(parent)) {\n if (frame === child) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function isPopup(win? : CrossDomainWindowType = window) : boolean {\n return Boolean(getOpener(win));\n}\n\nexport function isIframe(win? : CrossDomainWindowType = window) : boolean {\n return Boolean(getParent(win));\n}\n\nexport function isFullpage(win? : CrossDomainWindowType = window) : boolean {\n return Boolean(!isIframe(win) && !isPopup(win));\n}\n\nfunction anyMatch(collection1, collection2) : boolean {\n\n for (let item1 of collection1) {\n for (let item2 of collection2) {\n if (item1 === item2) {\n return true;\n }\n }\n }\n\n return false;\n}\n\nexport function getDistanceFromTop(win : CrossDomainWindowType = window) : number {\n let distance = 0;\n let parent = win;\n\n while (parent) {\n parent = getParent(parent);\n if (parent) {\n distance += 1;\n }\n }\n\n return distance;\n}\n\nexport function getNthParent(win : CrossDomainWindowType, n : number = 1) : ?CrossDomainWindowType {\n let parent = win;\n\n for (let i = 0; i < n; i++) {\n if (!parent) {\n return;\n }\n\n parent = getParent(parent);\n }\n\n return parent;\n}\n\nexport function getNthParentFromTop(win : CrossDomainWindowType, n : number = 1) : ?CrossDomainWindowType {\n return getNthParent(win, getDistanceFromTop(win) - n);\n}\n\nexport function isSameTopWindow(win1 : CrossDomainWindowType, win2 : CrossDomainWindowType) : boolean {\n\n let top1 = getTop(win1) || win1;\n let top2 = getTop(win2) || win2;\n\n try {\n if (top1 && top2) {\n if (top1 === top2) {\n return true;\n }\n\n return false;\n }\n } catch (err) {\n // pass\n }\n\n let allFrames1 = getAllFramesInWindow(win1);\n let allFrames2 = getAllFramesInWindow(win2);\n\n if (anyMatch(allFrames1, allFrames2)) {\n return true;\n }\n\n let opener1 = getOpener(top1);\n let opener2 = getOpener(top2);\n\n if (opener1 && anyMatch(getAllFramesInWindow(opener1), allFrames2)) {\n return false;\n }\n\n if (opener2 && anyMatch(getAllFramesInWindow(opener2), allFrames1)) {\n return false;\n }\n\n return false;\n}\n\nexport function matchDomain(pattern : DomainMatcher, origin : DomainMatcher) : boolean {\n\n if (typeof pattern === 'string') {\n\n if (typeof origin === 'string') {\n return pattern === WILDCARD || origin === pattern;\n }\n\n if (isRegex(origin)) {\n return false;\n }\n\n if (Array.isArray(origin)) {\n return false;\n }\n }\n\n if (isRegex(pattern)) {\n\n if (isRegex(origin)) {\n return pattern.toString() === origin.toString();\n }\n\n if (Array.isArray(origin)) {\n return false;\n }\n\n // $FlowFixMe\n return Boolean(origin.match(pattern));\n }\n\n if (Array.isArray(pattern)) {\n\n if (Array.isArray(origin)) {\n return JSON.stringify(pattern) === JSON.stringify(origin);\n }\n\n if (isRegex(origin)) {\n return false;\n }\n\n return pattern.some(subpattern => matchDomain(subpattern, origin));\n }\n\n return false;\n}\n\nexport function stringifyDomainPattern(pattern : DomainMatcher) : string {\n if (Array.isArray(pattern)) {\n return `(${ pattern.join(' | ') })`;\n } else if (isRegex(pattern)) {\n return `RegExp(${ pattern.toString() }`;\n } else {\n return pattern.toString();\n }\n}\n\nexport function getDomainFromUrl(url : string) : string {\n\n let domain;\n\n if (url.match(/^(https?|mock|file):\\/\\//)) {\n domain = url;\n } else {\n return getDomain();\n }\n\n domain = domain.split('/').slice(0, 3).join('/');\n\n return domain;\n}\n\nexport function onCloseWindow(win : CrossDomainWindowType, callback : Function, delay : number = 1000, maxtime : number = Infinity) : { cancel : () => void } {\n\n let timeout;\n\n let check = () => {\n\n if (isWindowClosed(win)) {\n\n if (timeout) {\n clearTimeout(timeout);\n }\n\n return callback();\n }\n\n if (maxtime <= 0) {\n clearTimeout(timeout);\n } else {\n maxtime -= delay;\n timeout = setTimeout(check, delay);\n }\n };\n\n check();\n\n return {\n cancel() {\n if (timeout) {\n clearTimeout(timeout);\n }\n }\n };\n}\n\n// eslint-disable-next-line complexity\nexport function isWindow(obj : Object) : boolean {\n\n try {\n if (obj === window) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (Object.prototype.toString.call(obj) === '[object Window]') {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (window.Window && obj instanceof window.Window) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (obj && obj.self === obj) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (obj && obj.parent === obj) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (obj && obj.top === obj) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (noop(obj === obj) === '__unlikely_value__') { // eslint-disable-line no-self-compare\n return false;\n }\n\n } catch (err) {\n return true;\n }\n\n try {\n if (obj && obj.__cross_domain_utils_window_check__ === '__unlikely_value__') {\n return false;\n }\n\n } catch (err) {\n return true;\n }\n\n return false;\n}\n\nexport function isBrowser() : boolean {\n return (typeof window !== 'undefined' && typeof window.location !== 'undefined');\n}\n\nexport function isCurrentDomain(domain : string) : boolean {\n if (!isBrowser()) {\n return false;\n }\n\n return (getDomain() === domain);\n}\n\nexport function isMockDomain(domain : string) : boolean {\n return domain.indexOf(PROTOCOL.MOCK) === 0;\n}\n\nexport function normalizeMockUrl(url : string) : string {\n if (!isMockDomain(getDomainFromUrl(url))) {\n return url;\n }\n\n if (!__TEST__) {\n throw new Error(`Mock urls not supported out of test mode`);\n }\n\n return url.replace(/^mock:\\/\\/[^/]+/, getActualDomain(window));\n}\n\nexport function closeWindow(win : CrossDomainWindowType) {\n try {\n win.close();\n } catch (err) {\n // pass\n }\n}\n\nexport function getFrameForWindow(win : CrossDomainWindowType) : ?HTMLElement {\n if (isSameDomain(win)) {\n return assertSameDomain(win).frameElement;\n }\n\n for (const frame of document.querySelectorAll('iframe')) {\n if (frame && frame.contentWindow && frame.contentWindow === win) {\n return frame;\n }\n }\n}\n","/* @flow */\n\n// export something to force webpack to see this as an ES module\nexport const TYPES = true;\n\nexport type CrossDomainLocationType = {|\n\n|};\n\nexport type CrossDomainWindowType = {|\n location : string | CrossDomainLocationType,\n self : CrossDomainWindowType,\n closed : boolean,\n open : (string, string, string) => CrossDomainWindowType,\n close : () => void,\n focus : () => void,\n top : CrossDomainWindowType,\n frames : Array,\n opener ? : CrossDomainWindowType,\n parent : CrossDomainWindowType,\n length : number,\n postMessage : (string, string) => void\n|};\n\nexport type SameDomainWindowType = Object & {\n location : string | Object,\n self : CrossDomainWindowType,\n closed : boolean,\n open : (string, string, string) => CrossDomainWindowType,\n close : () => void,\n focus : () => void,\n XMLHttpRequest : typeof XMLHttpRequest,\n document : Document,\n navigator : {\n userAgent : string,\n mockUserAgent? : string\n }\n};\n\nexport type DomainMatcher = string | Array | $ReadOnlyArray | RegExp;\n","/* @flow */\n\nexport * from './utils';\nexport * from './types';\nexport * from './constants';\n","/* @flow */\n\nexport const ZOID = `zoid`;\n\nexport const __ZOID__ = `__${ ZOID }__`;\n\nexport const POST_MESSAGE = {\n INIT: `${ ZOID }_init`,\n PROPS: `${ ZOID }_props`,\n PROP_CALLBACK: `${ ZOID }_prop_callback`,\n CLOSE: `${ ZOID }_close`,\n CHECK_CLOSE: `${ ZOID }_check_close`,\n REDIRECT: `${ ZOID }_redirect`,\n RESIZE: `${ ZOID }_resize`,\n DELEGATE: `${ ZOID }_delegate`,\n ALLOW_DELEGATE: `${ ZOID }_allow_delegate`,\n ERROR: `${ ZOID }_error`,\n HIDE: `${ ZOID }_hide`,\n SHOW: `${ ZOID }_show`\n};\n\nexport const PROP_TYPES = {\n STRING: `string`,\n OBJECT: `object`,\n FUNCTION: `function`,\n BOOLEAN: `boolean`,\n NUMBER: `number`\n};\n\nexport const INITIAL_PROPS = {\n RAW: 'raw',\n UID: 'uid'\n};\n\nexport const WINDOW_REFERENCES = {\n OPENER: `opener`,\n TOP: `top`,\n PARENT: `parent`,\n GLOBAL: `global`\n};\n\nexport const PROP_TYPES_LIST : Array = Object.keys(PROP_TYPES).map(key => PROP_TYPES[key]);\n\nexport const CONTEXT_TYPES = {\n IFRAME: `iframe`,\n POPUP: `popup`\n};\n\nexport const CLASS_NAMES = {\n ZOID: `${ ZOID }`,\n OUTLET: `${ ZOID }-outlet`,\n COMPONENT_FRAME: `${ ZOID }-component-frame`,\n PRERENDER_FRAME: `${ ZOID }-prerender-frame`,\n VISIBLE: `${ ZOID }-visible`,\n INVISIBLE: `${ ZOID }-invisible`\n};\n\nexport const EVENTS = {\n CLOSE: `${ ZOID }-close`\n};\n\nexport const ATTRIBUTES = {\n IFRAME_PLACEHOLDER: `data-zoid-${ ZOID }-placeholder`\n};\n\nexport const ANIMATION_NAMES = {\n SHOW_CONTAINER: `${ ZOID }-show-container`,\n SHOW_COMPONENT: `${ ZOID }-show-component`,\n HIDE_CONTAINER: `${ ZOID }-hide-container`,\n HIDE_COMPONENT: `${ ZOID }-hide-component`\n};\n\nexport const EVENT_NAMES = {\n CLICK: 'click'\n};\n\nexport const CLOSE_REASONS = {\n PARENT_CALL: 'parent_call',\n CHILD_CALL: 'child_call',\n CLOSE_DETECTED: 'close_detected',\n USER_CLOSED: 'user_closed',\n PARENT_CLOSE_DETECTED: 'parent_close_detected'\n};\n\nexport const CONTEXT_TYPES_LIST : Array = Object.keys(CONTEXT_TYPES).map(key => CONTEXT_TYPES[key]);\n\nexport const DELEGATE = {\n CALL_ORIGINAL: 'call_original',\n CALL_DELEGATE: 'call_delegate'\n};\n\nexport const WILDCARD = '*';\n\nexport const DEFAULT_DIMENSIONS = {\n WIDTH: 300,\n HEIGHT: 150\n};\n","/* @flow */\n\nimport { CONSTANTS } from './conf';\n\nexport let global : Object = window[CONSTANTS.WINDOW_PROPS.POSTROBOT] = window[CONSTANTS.WINDOW_PROPS.POSTROBOT] || {};\n\n// Backwards compatibility\n\nglobal.registerSelf = () => {\n // pass\n};\n","/* @flow */\n\nexport let CONSTANTS = {\n\n POST_MESSAGE_TYPE: {\n REQUEST: 'postrobot_message_request',\n RESPONSE: 'postrobot_message_response',\n ACK: 'postrobot_message_ack'\n },\n\n POST_MESSAGE_ACK: {\n SUCCESS: 'success',\n ERROR: 'error'\n },\n\n POST_MESSAGE_NAMES: {\n METHOD: 'postrobot_method',\n HELLO: 'postrobot_ready',\n OPEN_TUNNEL: 'postrobot_open_tunnel'\n },\n\n WINDOW_TYPES: {\n FULLPAGE: 'fullpage',\n POPUP: 'popup',\n IFRAME: 'iframe'\n },\n\n WINDOW_PROPS: {\n POSTROBOT: '__postRobot__'\n },\n\n SERIALIZATION_TYPES: {\n METHOD: 'postrobot_method',\n ERROR: 'postrobot_error',\n PROMISE: 'postrobot_promise',\n ZALGO_PROMISE: 'postrobot_zalgo_promise',\n REGEX: 'regex'\n },\n\n SEND_STRATEGIES: {\n POST_MESSAGE: 'postrobot_post_message',\n BRIDGE: 'postrobot_bridge',\n GLOBAL: 'postrobot_global'\n },\n\n MOCK_PROTOCOL: 'mock:',\n FILE_PROTOCOL: 'file:',\n\n BRIDGE_NAME_PREFIX: '__postrobot_bridge__',\n POSTROBOT_PROXY: '__postrobot_proxy__',\n\n WILDCARD: '*'\n};\n\nexport const POST_MESSAGE_NAMES = {\n METHOD: 'postrobot_method',\n HELLO: 'postrobot_hello',\n OPEN_TUNNEL: 'postrobot_open_tunnel'\n};\n\nexport let POST_MESSAGE_NAMES_LIST : Array = Object.keys(POST_MESSAGE_NAMES)\n .map(key => POST_MESSAGE_NAMES[key]);\n","/* @flow */\n\nimport { CONSTANTS } from './constants';\n\nexport let CONFIG : Object = {\n\n ALLOW_POSTMESSAGE_POPUP: ('__ALLOW_POSTMESSAGE_POPUP__' in window)\n ? window.__ALLOW_POSTMESSAGE_POPUP__\n : __POST_ROBOT__.__ALLOW_POSTMESSAGE_POPUP__,\n\n BRIDGE_TIMEOUT: 5000,\n CHILD_WINDOW_TIMEOUT: 5000,\n\n ACK_TIMEOUT: (window.navigator.userAgent.match(/MSIE/i) !== -1 && !__TEST__) ? 10000 : 2000,\n RES_TIMEOUT: __TEST__ ? 2000 : -1,\n \n ALLOWED_POST_MESSAGE_METHODS: {\n [ CONSTANTS.SEND_STRATEGIES.POST_MESSAGE ]: true,\n [ CONSTANTS.SEND_STRATEGIES.BRIDGE ]: true,\n [ CONSTANTS.SEND_STRATEGIES.GLOBAL ]: true\n },\n\n ALLOW_SAME_ORIGIN: false\n};\n\nif (window.location.href.indexOf(CONSTANTS.FILE_PROTOCOL) === 0) {\n CONFIG.ALLOW_POSTMESSAGE_POPUP = true;\n}\n","/* @flow */\n\nexport * from './config';\nexport * from './constants';\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","/* @flow */\n/* eslint max-lines: off */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nexport { noop, once, uniqueID, isLocalStorageEnabled } from 'belter/src';\n\nconst moduleGlobal = {};\n\nexport function getGlobal() : Object {\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n return moduleGlobal;\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport function memoize(method : (...args : $ReadOnlyArray) => R, options : { time? : number } = {}) : ((...args : $ReadOnlyArray) => R) {\n\n const cache : { [key : string] : { time : number, value : R } } = {};\n\n // eslint-disable-next-line no-unused-vars, flowtype/no-weak-types\n return function memoizedFunction(...args : $ReadOnlyArray) : R {\n\n let key : string;\n\n try {\n key = JSON.stringify(Array.prototype.slice.call(arguments));\n } catch (err) {\n throw new Error(`Arguments not serializable -- can not be used to memoize`);\n }\n\n const time = options.time;\n\n if (cache[key] && time && (Date.now() - cache[key].time) < time) {\n delete cache[key];\n }\n\n const glob = getGlobal();\n\n if (glob.__CACHE_START_TIME__ && cache[key] && cache[key].time < glob.__CACHE_START_TIME__) {\n delete cache[key];\n }\n\n if (cache[key]) {\n return cache[key].value;\n }\n\n cache[key] = {\n time: Date.now(),\n value: method.apply(this, arguments)\n };\n\n return cache[key].value;\n };\n}\n\nexport function hashStr(str : string) : number {\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n hash += str[i].charCodeAt(0) * Math.pow((i % 10) + 1, 5);\n }\n return Math.floor(Math.pow(Math.sqrt(hash), 5));\n}\n\nexport function strHashStr(str : string) : string {\n let hash = '';\n\n for (let i = 0; i < str.length; i++) {\n let total = (str[i].charCodeAt(0) * i);\n\n if (str[i + 1]) {\n total += (str[i + 1].charCodeAt(0) * (i - 1));\n }\n\n hash += String.fromCharCode(97 + (Math.abs(total) % 26));\n }\n\n return hash;\n}\n\nexport function match(str : string, pattern : RegExp) : ?string {\n const regmatch = str.match(pattern);\n if (regmatch) {\n return regmatch[1];\n }\n}\n\nexport function safeJSON(item : mixed) : string {\n return JSON.stringify(item, (key, val) => {\n\n if (typeof val === 'function') {\n return `<${ typeof val }>`;\n }\n\n try {\n JSON.stringify(val);\n } catch (err) {\n return `<${ typeof val }>`;\n }\n\n return val;\n });\n}\n\ntype Listener = {|\n listen : (method : Function) => {\n cancel : () => void\n },\n once : (method : Function) => void,\n trigger : (...args : $ReadOnlyArray) => void\n|};\n\nexport function eventEmitter() : Listener {\n\n const listeners = [];\n\n return {\n listen(method : Function) : { cancel : () => void } {\n listeners.push(method);\n\n return {\n cancel() {\n listeners.splice(listeners.indexOf(method), 1);\n }\n };\n },\n\n once(method : Function) {\n const listener = this.listen(function onceListener() {\n method.apply(null, arguments);\n listener.cancel();\n });\n },\n\n trigger(...args : $ReadOnlyArray) {\n for (const listener of listeners) {\n listener(...args);\n }\n }\n };\n}\n\nexport function awaitKey(obj : Object, key : string) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n\n let value = obj[key];\n\n if (value) {\n return resolve(value);\n }\n\n delete obj[key];\n\n Object.defineProperty(obj, key, {\n\n configurable: true,\n\n set(item) {\n value = item;\n\n if (value) {\n resolve(value);\n }\n },\n\n get() : mixed {\n return value;\n }\n });\n });\n}\n\nexport function stringifyError(err : mixed, level : number = 1) : string {\n\n if (level >= 3) {\n return 'stringifyError stack overflow';\n }\n\n try {\n if (!err) {\n return ``;\n }\n\n if (typeof err === 'string') {\n return err;\n }\n\n if (err instanceof Error) {\n const stack = err && err.stack;\n const message = err && err.message;\n\n if (stack && message) {\n if (stack.indexOf(message) !== -1) {\n return stack;\n } else {\n return `${ message }\\n${ stack }`;\n }\n } else if (stack) {\n return stack;\n } else if (message) {\n return message;\n }\n }\n\n if (typeof err.toString === 'function') {\n return err.toString();\n }\n\n return Object.prototype.toString.call(err);\n\n } catch (newErr) { // eslint-disable-line unicorn/catch-error-name\n return `Error while stringifying error: ${ stringifyError(newErr, level + 1) }`;\n }\n}\n\nexport function stringifyErrorMessage(err : mixed) : string {\n\n const defaultMessage = ``;\n\n if (!err) {\n return defaultMessage;\n }\n\n if (err instanceof Error) {\n return err.message || defaultMessage;\n }\n\n if (typeof err.message === 'string') {\n return err.message || defaultMessage;\n }\n\n return defaultMessage;\n}\n\nexport function stringify(item : mixed) : string {\n if (typeof item === 'string') {\n return item;\n }\n\n if (item && typeof item.toString === 'function') {\n return item.toString();\n }\n\n return Object.prototype.toString.call(item);\n}\n\nexport function domainMatches(hostname : string, domain : string) : boolean {\n hostname = hostname.split('://')[1];\n const index = hostname.indexOf(domain);\n return (index !== -1 && hostname.slice(index) === domain);\n}\n\nexport function patchMethod(obj : Object, name : string, handler : Function) {\n const original = obj[name];\n\n obj[name] = function patchedMethod() : mixed {\n return handler({\n context: this,\n args: Array.prototype.slice.call(arguments),\n original,\n callOriginal: () => original.apply(this, arguments)\n });\n };\n}\n\nexport function isObject(obj : mixed) : boolean {\n return (typeof obj === 'object' && obj !== null);\n}\n\nexport function extend(obj : T, source : Object) : T {\n if (!source) {\n return obj;\n }\n\n if (Object.assign) { // eslint-disable-line compat/compat\n return Object.assign(obj, source); // eslint-disable-line compat/compat\n }\n\n for (const key in source) {\n if (source.hasOwnProperty(key)) {\n obj[key] = source[key];\n }\n }\n\n return obj;\n}\n\nexport function deepExtend (obj : T, source : Object) : T {\n if (!source) {\n return obj;\n }\n\n for (const key in source) {\n if (source.hasOwnProperty(key)) {\n if (isObject(obj[key]) && isObject(source[key])) {\n deepExtend(obj[key], source[key]);\n } else {\n obj[key] = source[key];\n }\n }\n }\n\n return obj;\n}\n\nexport function hasValue(obj : { [string] : T }, value : T) : boolean {\n for (const key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] === value) {\n return true;\n }\n }\n return false;\n}\n\nexport function contains(arr : $ReadOnlyArray, value : T) : boolean {\n return arr.indexOf(value) !== -1;\n}\n\n// eslint-disable-next-line flowtype/no-mutable-array\nexport function sortBy(arr : Array, order : $ReadOnlyArray) : Array {\n return arr.sort((a : T, b : T) => {\n return order.indexOf(a) - order.indexOf(b);\n });\n}\n\nexport function reverseMap(obj : { [string] : string }) : { [string] : string } {\n const result = {};\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n result[obj[key]] = key;\n }\n }\n return result;\n}\n\n// eslint-disable-next-line flowtype/no-mutable-array\nexport function arrayRemove(arr : Array, item : T) {\n arr.splice(arr.indexOf(item), 1);\n}\n\nexport function identity(item : T) : T {\n return item;\n}\n\nexport function values(obj : { [string] : T }) : $ReadOnlyArray {\n const result = [];\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n result.push(obj[key]);\n }\n }\n return result;\n}\n\nexport function perc(pixels : number, percentage : number) : number {\n return Math.round((pixels * percentage) / 100);\n}\n\nexport function min(...args : $ReadOnlyArray) : number {\n return Math.min(...args);\n}\n\nexport function max(...args : $ReadOnlyArray) : number {\n return Math.max(...args);\n}\n\nexport function regexMap(str : string, regex : RegExp, handler : () => T) : $ReadOnlyArray {\n const results = [];\n\n // $FlowFixMe\n str.replace(regex, function regexMapMatcher() {\n results.push(handler.apply(null, arguments));\n });\n\n return results;\n}\n","/* @flow */\n\nimport { isSameDomain, isSameTopWindow, isActuallySameDomain, getActualDomain, getDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONSTANTS } from '../../conf';\nimport { needsGlobalMessagingForBrowser } from '../../lib';\n\nexport let SEND_MESSAGE_STRATEGIES = {};\n\n\nSEND_MESSAGE_STRATEGIES[CONSTANTS.SEND_STRATEGIES.POST_MESSAGE] = (win : CrossDomainWindowType, serializedMessage : string, domain : (string | Array)) => {\n\n if (__POST_ROBOT__.__IE_POPUP_SUPPORT__) {\n try {\n require('../../compat').emulateIERestrictions(window, win);\n } catch (err) {\n return;\n }\n }\n\n let domains;\n\n if (Array.isArray(domain)) {\n domains = domain;\n } else if (typeof domain === 'string') {\n domains = [ domain ];\n } else {\n domains = [ CONSTANTS.WILDCARD ];\n }\n\n domains = domains.map(dom => {\n\n if (dom.indexOf(CONSTANTS.MOCK_PROTOCOL) === 0) {\n\n if (window.location.protocol === CONSTANTS.FILE_PROTOCOL) {\n return CONSTANTS.WILDCARD;\n }\n\n if (!isActuallySameDomain(win)) {\n throw new Error(`Attempting to send messsage to mock domain ${ dom }, but window is actually cross-domain`);\n }\n\n // $FlowFixMe\n return getActualDomain(win);\n }\n\n if (dom.indexOf(CONSTANTS.FILE_PROTOCOL) === 0) {\n return CONSTANTS.WILDCARD;\n }\n\n return dom;\n });\n\n domains.forEach(dom => {\n return win.postMessage(serializedMessage, dom);\n });\n};\n\nif (__POST_ROBOT__.__IE_POPUP_SUPPORT__) {\n\n let { sendBridgeMessage, needsBridgeForBrowser, isBridge } = require('../../bridge');\n\n SEND_MESSAGE_STRATEGIES[CONSTANTS.SEND_STRATEGIES.BRIDGE] = (win : CrossDomainWindowType, serializedMessage : string, domain : string) => {\n\n if (!needsBridgeForBrowser() && !isBridge()) {\n return;\n }\n\n if (isSameDomain(win)) {\n throw new Error(`Post message through bridge disabled between same domain windows`);\n }\n\n if (isSameTopWindow(window, win) !== false) {\n throw new Error(`Can only use bridge to communicate between two different windows, not between frames`);\n }\n\n return sendBridgeMessage(win, serializedMessage, domain);\n };\n}\n\nif (__POST_ROBOT__.__IE_POPUP_SUPPORT__ || __POST_ROBOT__.__GLOBAL_MESSAGE_SUPPORT__) {\n \n SEND_MESSAGE_STRATEGIES[CONSTANTS.SEND_STRATEGIES.GLOBAL] = (win : CrossDomainWindowType, serializedMessage : string) => {\n\n if (!needsGlobalMessagingForBrowser()) {\n return;\n }\n\n if (!isSameDomain(win)) {\n throw new Error(`Post message through global disabled between different domain windows`);\n }\n\n if (isSameTopWindow(window, win) !== false) {\n throw new Error(`Can only use global to communicate between two different windows, not between frames`);\n }\n\n // $FlowFixMe\n let foreignGlobal = win[CONSTANTS.WINDOW_PROPS.POSTROBOT];\n\n if (!foreignGlobal) {\n throw new Error(`Can not find postRobot global on foreign window`);\n }\n\n return foreignGlobal.receiveMessage({\n source: window,\n origin: getDomain(),\n data: serializedMessage\n });\n };\n}\n","/* @flow */\n\nimport { getDomain, isWindowClosed, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { CONSTANTS, CONFIG, POST_MESSAGE_NAMES_LIST } from '../../conf';\nimport { uniqueID, serializeMethods, getWindowType, jsonStringify, stringifyError } from '../../lib';\n\nimport { SEND_MESSAGE_STRATEGIES } from './strategies';\n\n\nfunction buildMessage(win : CrossDomainWindowType, message : Object, options = {}) : Object {\n\n let id = uniqueID();\n let type = getWindowType();\n let sourceDomain = getDomain(window);\n\n return {\n ...message,\n ...options,\n sourceDomain,\n id: message.id || id,\n windowType: type\n };\n}\n\n\nexport function sendMessage(win : CrossDomainWindowType, message : Object, domain : string | Array) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n message = buildMessage(win, message, {\n data: serializeMethods(win, domain, message.data),\n domain\n });\n\n let level;\n\n if (__DEBUG__) {\n if (POST_MESSAGE_NAMES_LIST.indexOf(message.name) !== -1 || message.type === CONSTANTS.POST_MESSAGE_TYPE.ACK) {\n level = 'debug';\n } else if (message.ack === 'error') {\n level = 'error';\n } else {\n level = 'info';\n }\n\n // eslint-disable-next-line no-console\n console[level]('postrobot_send', message.type.replace(/^postrobot_message_/, ''), '::', message.name, '::', domain || CONSTANTS.WILDCARD, '\\n\\n', message);\n }\n\n if (win === window && !CONFIG.ALLOW_SAME_ORIGIN) {\n throw new Error('Attemping to send message to self');\n }\n\n if (isWindowClosed(win)) {\n throw new Error('Window is closed');\n }\n\n let messages = [];\n\n let serializedMessage = jsonStringify({\n [ CONSTANTS.WINDOW_PROPS.POSTROBOT ]: message\n }, null, 2);\n\n return ZalgoPromise.map(Object.keys(SEND_MESSAGE_STRATEGIES), strategyName => {\n\n return ZalgoPromise.try(() => {\n\n if (!CONFIG.ALLOWED_POST_MESSAGE_METHODS[strategyName]) {\n throw new Error(`Strategy disallowed: ${ strategyName }`);\n }\n\n return SEND_MESSAGE_STRATEGIES[strategyName](win, serializedMessage, domain);\n\n }).then(() => {\n messages.push(`${ strategyName }: success`);\n return true;\n }, err => {\n messages.push(`${ strategyName }: ${ stringifyError(err) }\\n`);\n return false;\n });\n\n }).then(results => {\n\n let success = results.some(Boolean);\n let status = `${ message.type } ${ message.name } ${ success ? 'success' : 'error' }:\\n - ${ messages.join('\\n - ') }\\n`;\n\n if (!success) {\n throw new Error(status);\n }\n });\n });\n}\n","/* @flow */\n\nimport { type ZalgoPromise } from 'zalgo-promise/src';\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { matchDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { global } from '../global';\nimport { isRegex } from '../lib';\nimport { CONSTANTS } from '../conf';\n\nexport function resetListeners() {\n global.responseListeners = {};\n global.requestListeners = {};\n}\n\nglobal.responseListeners = global.responseListeners || {};\nglobal.requestListeners = global.requestListeners || {};\nglobal.WINDOW_WILDCARD = global.WINDOW_WILDCARD || new (function WindowWildcard() { /* pass */ })();\n\nglobal.erroredResponseListeners = global.erroredResponseListeners || {};\n\nconst __DOMAIN_REGEX__ = '__domain_regex__';\n\nexport type RequestListenerType = {\n handler : ({ source : CrossDomainWindowType, origin : string, data : Object }) => (mixed | ZalgoPromise),\n handleError : (err : mixed) => void,\n window : ?CrossDomainWindowType,\n name : string,\n domain : string | RegExp | Array\n};\n\nexport type ResponseListenerType = {\n name : string,\n window : CrossDomainWindowType,\n domain : (string | Array | RegExp),\n respond : (err : ?mixed, result : ?Object) => void,\n ack? : ?boolean\n};\n\nexport function addResponseListener(hash : string, listener : ResponseListenerType) {\n global.responseListeners[hash] = listener;\n}\n\nexport function getResponseListener(hash : string) : ResponseListenerType {\n return global.responseListeners[hash];\n}\n\nexport function deleteResponseListener(hash : string) {\n delete global.responseListeners[hash];\n}\n\nexport function markResponseListenerErrored(hash : string) {\n global.erroredResponseListeners[hash] = true;\n}\n\nexport function isResponseListenerErrored(hash : string) : boolean {\n return Boolean(global.erroredResponseListeners[hash]);\n}\n\nexport function getRequestListener({ name, win, domain } : { name : string, win : ?CrossDomainWindowType, domain : ?(string | RegExp) }) : ?RequestListenerType {\n\n if (win === CONSTANTS.WILDCARD) {\n win = null;\n }\n\n if (domain === CONSTANTS.WILDCARD) {\n domain = null;\n }\n\n if (!name) {\n throw new Error(`Name required to get request listener`);\n }\n\n let nameListeners = global.requestListeners[name];\n\n if (!nameListeners) {\n return;\n }\n\n for (let winQualifier of [ win, global.WINDOW_WILDCARD ]) {\n\n let winListeners = winQualifier && nameListeners.get(winQualifier);\n\n if (!winListeners) {\n continue;\n }\n\n if (domain && typeof domain === 'string') {\n if (winListeners[domain]) {\n return winListeners[domain];\n }\n\n if (winListeners[__DOMAIN_REGEX__]) {\n for (let { regex, listener } of winListeners[__DOMAIN_REGEX__]) {\n if (matchDomain(regex, domain)) {\n return listener;\n }\n }\n }\n }\n\n if (winListeners[CONSTANTS.WILDCARD]) {\n return winListeners[CONSTANTS.WILDCARD];\n }\n }\n}\n\n// eslint-disable-next-line complexity\nexport function addRequestListener({ name, win, domain } : { name : string, win : ?CrossDomainWindowType, domain : ?(string | RegExp | Array) }, listener : RequestListenerType) : { cancel : () => void } {\n\n if (!name || typeof name !== 'string') {\n throw new Error(`Name required to add request listener`);\n }\n\n if (Array.isArray(win)) {\n let listenersCollection = [];\n\n for (let item of win) {\n listenersCollection.push(addRequestListener({ name, domain, win: item }, listener));\n }\n\n return {\n cancel() {\n for (let cancelListener of listenersCollection) {\n cancelListener.cancel();\n }\n }\n };\n }\n\n if (Array.isArray(domain)) {\n let listenersCollection = [];\n\n for (let item of domain) {\n listenersCollection.push(addRequestListener({ name, win, domain: item }, listener));\n }\n\n return {\n cancel() {\n for (let cancelListener of listenersCollection) {\n cancelListener.cancel();\n }\n }\n };\n }\n\n let existingListener = getRequestListener({ name, win, domain });\n\n if (!win || win === CONSTANTS.WILDCARD) {\n win = global.WINDOW_WILDCARD;\n }\n\n domain = domain || CONSTANTS.WILDCARD;\n\n if (existingListener) {\n if (win && domain) {\n throw new Error(`Request listener already exists for ${ name } on domain ${ domain.toString() } for ${ win === global.WINDOW_WILDCARD ? 'wildcard' : 'specified' } window`);\n } else if (win) {\n throw new Error(`Request listener already exists for ${ name } for ${ win === global.WINDOW_WILDCARD ? 'wildcard' : 'specified' } window`);\n } else if (domain) {\n throw new Error(`Request listener already exists for ${ name } on domain ${ domain.toString() }`);\n } else {\n throw new Error(`Request listener already exists for ${ name }`);\n }\n }\n\n let requestListeners = global.requestListeners;\n\n let nameListeners = requestListeners[name];\n\n if (!nameListeners) {\n nameListeners = new WeakMap();\n requestListeners[name] = nameListeners;\n }\n\n let winListeners = nameListeners.get(win);\n\n if (!winListeners) {\n winListeners = {};\n nameListeners.set(win, winListeners);\n }\n\n let strDomain = domain.toString();\n\n let regexListeners = winListeners[__DOMAIN_REGEX__];\n let regexListener;\n\n if (isRegex(domain)) {\n\n if (!regexListeners) {\n regexListeners = [];\n winListeners[__DOMAIN_REGEX__] = regexListeners;\n }\n\n regexListener = { regex: domain, listener };\n\n regexListeners.push(regexListener);\n\n } else {\n winListeners[strDomain] = listener;\n }\n\n return {\n cancel() {\n if (!winListeners) {\n return;\n }\n\n delete winListeners[strDomain];\n\n if (win && Object.keys(winListeners).length === 0) {\n nameListeners.delete(win);\n }\n\n if (regexListener) {\n regexListeners.splice(regexListeners.indexOf(regexListener, 1));\n }\n }\n\n };\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { isWindowClosed, matchDomain, stringifyDomainPattern, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONSTANTS } from '../../conf';\nimport { stringifyError, noop } from '../../lib';\nimport { sendMessage } from '../send';\nimport { getRequestListener, getResponseListener, deleteResponseListener, isResponseListenerErrored } from '../listeners';\n\nexport let RECEIVE_MESSAGE_TYPES = {\n\n [ CONSTANTS.POST_MESSAGE_TYPE.ACK ](source : CrossDomainWindowType, origin : string, message : Object) {\n\n if (isResponseListenerErrored(message.hash)) {\n return;\n }\n\n let options = getResponseListener(message.hash);\n\n if (!options) {\n throw new Error(`No handler found for post message ack for message: ${ message.name } from ${ origin } in ${ window.location.protocol }//${ window.location.host }${ window.location.pathname }`);\n }\n\n if (!matchDomain(options.domain, origin)) {\n throw new Error(`Ack origin ${ origin } does not match domain ${ options.domain.toString() }`);\n }\n\n options.ack = true;\n },\n\n [ CONSTANTS.POST_MESSAGE_TYPE.REQUEST ](source : CrossDomainWindowType, origin : string, message : Object) : ZalgoPromise {\n\n let options = getRequestListener({ name: message.name, win: source, domain: origin });\n\n function respond(data) : ZalgoPromise {\n\n if (message.fireAndForget || isWindowClosed(source)) {\n return ZalgoPromise.resolve();\n }\n\n return sendMessage(source, {\n target: message.originalSource,\n hash: message.hash,\n name: message.name,\n ...data\n }, origin);\n }\n\n return ZalgoPromise.all([\n\n respond({\n type: CONSTANTS.POST_MESSAGE_TYPE.ACK\n }),\n\n ZalgoPromise.try(() => {\n\n if (!options) {\n throw new Error(`No handler found for post message: ${ message.name } from ${ origin } in ${ window.location.protocol }//${ window.location.host }${ window.location.pathname }`);\n }\n\n if (!matchDomain(options.domain, origin)) {\n throw new Error(`Request origin ${ origin } does not match domain ${ options.domain.toString() }`);\n }\n\n let data = message.data;\n\n return options.handler({ source, origin, data });\n\n }).then(data => {\n\n return respond({\n type: CONSTANTS.POST_MESSAGE_TYPE.RESPONSE,\n ack: CONSTANTS.POST_MESSAGE_ACK.SUCCESS,\n data\n });\n\n }, err => {\n\n let error = stringifyError(err).replace(/^Error: /, '');\n // $FlowFixMe\n let code = err.code;\n\n return respond({\n type: CONSTANTS.POST_MESSAGE_TYPE.RESPONSE,\n ack: CONSTANTS.POST_MESSAGE_ACK.ERROR,\n error,\n code\n });\n })\n\n ]).then(noop).catch(err => {\n\n if (options && options.handleError) {\n return options.handleError(err);\n } else {\n throw err;\n }\n });\n },\n\n [ CONSTANTS.POST_MESSAGE_TYPE.RESPONSE ](source : CrossDomainWindowType, origin : string, message : Object) : void | ZalgoPromise {\n\n if (isResponseListenerErrored(message.hash)) {\n return;\n }\n\n let options = getResponseListener(message.hash);\n\n if (!options) {\n throw new Error(`No handler found for post message response for message: ${ message.name } from ${ origin } in ${ window.location.protocol }//${ window.location.host }${ window.location.pathname }`);\n }\n\n if (!matchDomain(options.domain, origin)) {\n throw new Error(`Response origin ${ origin } does not match domain ${ stringifyDomainPattern(options.domain) }`);\n }\n\n deleteResponseListener(message.hash);\n\n if (message.ack === CONSTANTS.POST_MESSAGE_ACK.ERROR) {\n let err = new Error(message.error);\n if (message.code) {\n // $FlowFixMe\n err.code = message.code;\n }\n return options.respond(err, null);\n } else if (message.ack === CONSTANTS.POST_MESSAGE_ACK.SUCCESS) {\n let data = message.data || message.response;\n\n return options.respond(null, { source, origin, data });\n }\n }\n};\n","/* @flow */\n\nimport { isWindowClosed, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONSTANTS, POST_MESSAGE_NAMES_LIST } from '../../conf';\nimport { deserializeMethods, jsonParse, addEventListener, noop } from '../../lib';\nimport { global } from '../../global';\n\nimport { RECEIVE_MESSAGE_TYPES } from './types';\n\nglobal.receivedMessages = global.receivedMessages || [];\n\ntype MessageEvent = {\n source : CrossDomainWindowType,\n origin : string,\n data : string\n};\n\nfunction parseMessage(message : string) : ?Object {\n\n let parsedMessage;\n\n try {\n parsedMessage = jsonParse(message);\n } catch (err) {\n return;\n }\n\n if (!parsedMessage) {\n return;\n }\n\n if (typeof parsedMessage !== 'object' || parsedMessage === null) {\n return;\n }\n\n parsedMessage = parsedMessage[CONSTANTS.WINDOW_PROPS.POSTROBOT];\n\n if (!parsedMessage || typeof parsedMessage !== 'object' || parsedMessage === null) {\n return;\n }\n\n if (!parsedMessage.type || typeof parsedMessage.type !== 'string') {\n return;\n }\n\n if (!RECEIVE_MESSAGE_TYPES[parsedMessage.type]) {\n return;\n }\n\n return parsedMessage;\n}\n\n\nexport function receiveMessage(event : MessageEvent) {\n\n if (!window || window.closed) {\n return;\n }\n\n try {\n if (!event.source) {\n return;\n }\n } catch (err) {\n return;\n }\n\n let { source, origin, data } = event;\n\n let message = parseMessage(data);\n\n if (!message) {\n return;\n }\n\n if (!message.sourceDomain || typeof message.sourceDomain !== 'string') {\n throw new Error(`Expected message to have sourceDomain`);\n }\n\n if (message.sourceDomain.indexOf(CONSTANTS.MOCK_PROTOCOL) === 0 || message.sourceDomain.indexOf(CONSTANTS.FILE_PROTOCOL) === 0) {\n origin = message.sourceDomain;\n }\n\n if (global.receivedMessages.indexOf(message.id) === -1) {\n global.receivedMessages.push(message.id);\n } else {\n return;\n }\n\n if (__DEBUG__) {\n let level;\n\n if (POST_MESSAGE_NAMES_LIST.indexOf(message.name) !== -1 || message.type === CONSTANTS.POST_MESSAGE_TYPE.ACK) {\n level = 'debug';\n } else if (message.ack === 'error') {\n level = 'error';\n } else {\n level = 'info';\n }\n \n // eslint-disable-next-line no-console\n console[level]('postrobot_receive', message.type.replace(/^postrobot_message_/, ''), '::', message.name, '::', origin, '\\n\\n', message);\n }\n\n if (isWindowClosed(source) && !message.fireAndForget) {\n return;\n }\n\n if (message.data) {\n message.data = deserializeMethods(source, origin, message.data);\n }\n\n RECEIVE_MESSAGE_TYPES[message.type](source, origin, message);\n}\n\nexport function messageListener(event : { source : CrossDomainWindowType, origin : string, data : string, sourceElement : CrossDomainWindowType, originalEvent? : { origin : string } }) {\n\n try {\n noop(event.source);\n } catch (err) {\n return;\n }\n\n // $FlowFixMe\n let messageEvent : MessageEvent = {\n source: event.source || event.sourceElement,\n origin: event.origin || (event.originalEvent && event.originalEvent.origin),\n data: event.data\n };\n\n if (__POST_ROBOT__.__IE_POPUP_SUPPORT__) {\n try {\n require('../../compat').emulateIERestrictions(messageEvent.source, window);\n } catch (err) {\n return;\n }\n }\n\n receiveMessage(messageEvent);\n}\n\nexport function listenForMessages() {\n addEventListener(window, 'message', messageListener);\n}\n\nglobal.receiveMessage = receiveMessage;\n","/* @flow */\n\nexport * from './receive';\nexport * from './send';\nexport * from './listeners';\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getAncestor, isAncestor, isWindowClosed, getDomain, matchDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONFIG, CONSTANTS } from '../conf';\nimport { sendMessage, addResponseListener, deleteResponseListener, markResponseListenerErrored, type ResponseListenerType } from '../drivers';\nimport { uniqueID, onChildWindowReady, sayHello, isRegex } from '../lib';\nimport { global } from '../global';\n\nglobal.requestPromises = global.requestPromises || new WeakMap();\n\ntype WindowResolverType = CrossDomainWindowType | string | HTMLIFrameElement;\n\ntype RequestOptionsType = {\n window? : ?WindowResolverType,\n domain? : ?(string | Array | RegExp),\n name? : ?string,\n data? : ?Object,\n fireAndForget? : ?boolean,\n timeout? : ?number\n};\n\ntype ResponseMessageEvent = {\n source : CrossDomainWindowType,\n origin : string,\n data : Object\n};\n\nexport function request(options : RequestOptionsType) : ZalgoPromise {\n\n let prom = ZalgoPromise.try(() => {\n\n if (!options.name) {\n throw new Error('Expected options.name');\n }\n\n let name = options.name;\n let targetWindow : ?CrossDomainWindowType;\n let domain : string | Array | RegExp;\n\n if (typeof options.window === 'string') {\n let el = document.getElementById(options.window);\n\n if (!el) {\n throw new Error(`Expected options.window ${ Object.prototype.toString.call(options.window) } to be a valid element id`);\n }\n\n if (el.tagName.toLowerCase() !== 'iframe') {\n throw new Error(`Expected options.window ${ Object.prototype.toString.call(options.window) } to be an iframe`);\n }\n\n // $FlowFixMe\n if (!el.contentWindow) {\n throw new Error('Iframe must have contentWindow. Make sure it has a src attribute and is in the DOM.');\n }\n\n // $FlowFixMe\n targetWindow = el.contentWindow;\n\n } else if (options.window instanceof HTMLIFrameElement) {\n\n if (options.window.tagName.toLowerCase() !== 'iframe') {\n throw new Error(`Expected options.window ${ Object.prototype.toString.call(options.window) } to be an iframe`);\n }\n\n if (options.window && !options.window.contentWindow) {\n throw new Error('Iframe must have contentWindow. Make sure it has a src attribute and is in the DOM.');\n }\n\n if (options.window && options.window.contentWindow) {\n // $FlowFixMe\n targetWindow = options.window.contentWindow;\n }\n } else {\n targetWindow = options.window;\n }\n\n if (!targetWindow) {\n throw new Error('Expected options.window to be a window object, iframe, or iframe element id.');\n }\n\n const win = targetWindow;\n\n domain = options.domain || CONSTANTS.WILDCARD;\n\n let hash = `${ options.name }_${ uniqueID() }`;\n\n if (isWindowClosed(win)) {\n throw new Error('Target window is closed');\n }\n\n let hasResult = false;\n\n let requestPromises = global.requestPromises.get(win);\n\n if (!requestPromises) {\n requestPromises = [];\n global.requestPromises.set(win, requestPromises);\n }\n\n let requestPromise = ZalgoPromise.try(() => {\n\n if (isAncestor(window, win)) {\n return onChildWindowReady(win, options.timeout || CONFIG.CHILD_WINDOW_TIMEOUT);\n }\n\n }).then(({ origin } = {}) => {\n\n if (isRegex(domain) && !origin) {\n return sayHello(win);\n }\n\n }).then(({ origin } = {}) => {\n\n if (isRegex(domain)) {\n if (!matchDomain(domain, origin)) {\n throw new Error(`Remote window domain ${ origin } does not match regex: ${ domain.toString() }`);\n }\n\n domain = origin;\n }\n\n if (typeof domain !== 'string' && !Array.isArray(domain)) {\n throw new TypeError(`Expected domain to be a string or array`);\n }\n\n const actualDomain = domain;\n\n return new ZalgoPromise((resolve, reject) => {\n\n let responseListener : ResponseListenerType;\n\n if (!options.fireAndForget) {\n responseListener = {\n name,\n window: win,\n domain: actualDomain,\n respond(err, result) {\n if (!err) {\n hasResult = true;\n requestPromises.splice(requestPromises.indexOf(requestPromise, 1));\n }\n\n if (err) {\n reject(err);\n } else {\n resolve(result);\n }\n }\n };\n\n addResponseListener(hash, responseListener);\n }\n\n sendMessage(win, {\n type: CONSTANTS.POST_MESSAGE_TYPE.REQUEST,\n hash,\n name,\n data: options.data,\n fireAndForget: options.fireAndForget\n }, actualDomain).catch(reject);\n\n if (options.fireAndForget) {\n return resolve();\n }\n\n let ackTimeout = CONFIG.ACK_TIMEOUT;\n let resTimeout = options.timeout || CONFIG.RES_TIMEOUT;\n\n let cycleTime = 100;\n\n let cycle = () => {\n\n if (hasResult) {\n return;\n }\n\n if (isWindowClosed(win)) {\n\n if (!responseListener.ack) {\n return reject(new Error(`Window closed for ${ name } before ack`));\n }\n\n return reject(new Error(`Window closed for ${ name } before response`));\n }\n\n ackTimeout = Math.max(ackTimeout - cycleTime, 0);\n if (resTimeout !== -1) {\n resTimeout = Math.max(resTimeout - cycleTime, 0);\n }\n\n let hasAck = responseListener.ack;\n\n if (hasAck) {\n\n if (resTimeout === -1) {\n return;\n }\n\n cycleTime = Math.min(resTimeout, 2000);\n\n } else if (ackTimeout === 0) {\n return reject(new Error(`No ack for postMessage ${ name } in ${ getDomain() } in ${ CONFIG.ACK_TIMEOUT }ms`));\n\n } else if (resTimeout === 0) {\n return reject(new Error(`No response for postMessage ${ name } in ${ getDomain() } in ${ options.timeout || CONFIG.RES_TIMEOUT }ms`));\n }\n\n setTimeout(cycle, cycleTime);\n };\n\n setTimeout(cycle, cycleTime);\n });\n });\n\n requestPromise.catch(() => {\n markResponseListenerErrored(hash);\n deleteResponseListener(hash);\n });\n\n requestPromises.push(requestPromise);\n\n return requestPromise;\n });\n\n return prom;\n}\n\nexport function send(window : WindowResolverType, name : string, data : ?Object, options : ?RequestOptionsType) : ZalgoPromise {\n\n options = options || {};\n options.window = window;\n options.name = name;\n options.data = data;\n\n return request(options);\n}\n\nexport function sendToParent(name : string, data : ?Object, options : ?RequestOptionsType) : ZalgoPromise {\n\n let win = getAncestor();\n\n if (!win) {\n return new ZalgoPromise((resolve, reject) => reject(new Error('Window does not have a parent')));\n }\n\n return send(win, name, data, options);\n}\n\nexport function client(options : RequestOptionsType = {}) : { send : (string, ?Object) => ZalgoPromise } {\n\n if (!options.window) {\n throw new Error(`Expected options.window`);\n }\n\n const win = options.window;\n\n return {\n send(name : string, data : ?Object) : ZalgoPromise {\n return send(win, name, data, options);\n }\n };\n}\n\nglobal.send = send;\n","/* @flow */\n\nimport { isWindowClosed, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { once as onceFunction, safeInterval } from '../lib';\nimport { addRequestListener, type RequestListenerType } from '../drivers';\nimport { CONSTANTS } from '../conf';\nimport { global } from '../global';\n\ntype ErrorHandlerType = (err : mixed) => void;\ntype HandlerType = ({ source : CrossDomainWindowType, origin : string, data : Object }) => (void | mixed | ZalgoPromise);\n\ntype ServerOptionsType = {\n handler? : ?HandlerType,\n errorHandler? : ?ErrorHandlerType,\n window? : CrossDomainWindowType,\n name? : ?string,\n domain? : ?(string | RegExp | Array),\n once? : ?boolean,\n errorOnClose? : ?boolean\n};\n\nexport function listen(options : ServerOptionsType) : { cancel : () => void } {\n\n if (!options.name) {\n throw new Error('Expected options.name');\n }\n\n if (!options.handler) {\n throw new Error('Expected options.handler');\n }\n\n const name = options.name;\n const win = options.window;\n const domain = options.domain;\n\n let listenerOptions : RequestListenerType = {\n handler: options.handler,\n handleError: options.errorHandler || (err => {\n throw err;\n }),\n window: win,\n domain: domain || CONSTANTS.WILDCARD,\n name\n };\n\n let requestListener = addRequestListener({ name, win, domain }, listenerOptions);\n\n if (options.once) {\n let handler = listenerOptions.handler;\n listenerOptions.handler = onceFunction(function listenOnce() : mixed | ZalgoPromise {\n requestListener.cancel();\n return handler.apply(this, arguments);\n });\n }\n\n if (listenerOptions.window && options.errorOnClose) {\n let interval = safeInterval(() => {\n if (win && typeof win === 'object' && isWindowClosed(win)) {\n interval.cancel();\n listenerOptions.handleError(new Error('Post message target window is closed'));\n }\n }, 50);\n }\n\n return {\n cancel() {\n requestListener.cancel();\n }\n };\n}\n\nexport function on(name : string, options : ServerOptionsType | HandlerType, handler : ?HandlerType) : { cancel : () => void } {\n\n if (typeof options === 'function') {\n handler = options;\n options = {};\n }\n\n options = options || {};\n\n options.name = name;\n options.handler = handler || options.handler;\n\n return listen(options);\n}\n\nexport function once(name : string, options : ?(ServerOptionsType | HandlerType) = {}, handler : ?HandlerType) : ZalgoPromise<{ source : mixed, origin : string, data : Object }> {\n\n if (typeof options === 'function') {\n handler = options;\n options = {};\n }\n\n options = options || {};\n handler = handler || options.handler;\n let errorHandler = options.errorHandler;\n\n let promise = new ZalgoPromise((resolve, reject) => {\n\n options = options || {};\n\n options.name = name;\n options.once = true;\n\n options.handler = (event) => {\n resolve(event);\n if (handler) {\n return handler(event);\n }\n };\n\n options.errorHandler = (err) => {\n reject(err);\n if (errorHandler) {\n return errorHandler(err);\n }\n };\n });\n\n let onceListener = listen(options);\n promise.cancel = onceListener.cancel;\n\n return promise;\n}\n\nexport function listener(options : ServerOptionsType = {}) : { on : (name : string, handler : HandlerType) => { cancel : () => void } } {\n\n return {\n on(name : string, handler : HandlerType) : { cancel : () => void } {\n return on(name, options, handler);\n }\n };\n}\n\nglobal.on = on;\n","/* @flow */\n\nimport { CONSTANTS } from '../conf';\nimport { messageListener } from '../drivers';\n\nexport { CONFIG, CONSTANTS } from '../conf';\n\nexport function disable() {\n delete window[CONSTANTS.WINDOW_PROPS.POSTROBOT];\n window.removeEventListener('message', messageListener);\n}\n","/* @flow */\n\nimport { getAncestor } from 'cross-domain-utils/src';\n\nexport * from './client';\nexport * from './server';\nexport * from './config';\n\nexport let parent = getAncestor();\n","/* @flow */\n\nimport { type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { global } from './global';\n\nexport function cleanUpWindow(win : CrossDomainWindowType) {\n\n // global.tunnelWindows\n // global.bridges\n // global.popupWindowsByName\n // global.responseListeners\n // global.requestListeners\n\n let requestPromises = global.requestPromises.get(win);\n\n if (requestPromises) {\n for (let promise of requestPromises) {\n promise.reject(new Error(`No response from window - cleaned up`));\n }\n }\n\n if (global.popupWindowsByWin) {\n global.popupWindowsByWin.delete(win);\n }\n\n if (global.remoteWindows) {\n global.remoteWindows.delete(win);\n }\n\n global.requestPromises.delete(win);\n global.methods.delete(win);\n global.readyPromises.delete(win);\n}\n","/* @flow */\n\nimport { initOnReady, listenForMethods } from './lib';\nimport { listenForMessages } from './drivers';\nimport { global } from './global';\nimport { on, send } from './public';\n\nexport * from './public';\nexport { cleanUpWindow } from './clean';\nexport { ZalgoPromise as Promise } from 'zalgo-promise/src';\nexport let bridge = __POST_ROBOT__.__IE_POPUP_SUPPORT__ ? require('./bridge/interface') : null;\n\nexport function init() {\n if (!global.initialized) {\n listenForMessages();\n\n if (__POST_ROBOT__.__IE_POPUP_SUPPORT__) {\n require('./bridge').openTunnelToOpener();\n }\n\n initOnReady();\n listenForMethods({ on, send });\n }\n\n global.initialized = true;\n}\n\ninit();\n","/* @flow */\n\n// eslint-disable-next-line import/no-namespace\nimport * as INTERFACE from './interface';\n\nexport * from './interface';\nexport default INTERFACE;\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { isPopup, isIframe, getUserAgent } from 'cross-domain-utils/src';\n\nimport { CONFIG, CONSTANTS } from '../conf';\n\n\nexport function stringifyError(err : mixed, level : number = 1) : string {\n\n if (level >= 3) {\n return 'stringifyError stack overflow';\n }\n\n try {\n if (!err) {\n return ``;\n }\n\n if (typeof err === 'string') {\n return err;\n }\n\n if (err instanceof Error) {\n let stack = err && err.stack;\n let message = err && err.message;\n\n if (stack && message) {\n if (stack.indexOf(message) !== -1) {\n return stack;\n } else {\n return `${ message }\\n${ stack }`;\n }\n } else if (stack) {\n return stack;\n } else if (message) {\n return message;\n }\n }\n\n if (typeof err.toString === 'function') {\n return err.toString();\n }\n\n return Object.prototype.toString.call(err);\n\n } catch (newErr) { // eslint-disable-line unicorn/catch-error-name\n return `Error while stringifying error: ${ stringifyError(newErr, level + 1) }`;\n }\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport let once = (method : Function) : ((...args : Array) => T | void) => {\n if (!method) {\n return method;\n }\n let called = false;\n return function onceWrapper() : T | void {\n if (!called) {\n called = true;\n return method.apply(this, arguments);\n }\n };\n};\n\n// eslint-disable-next-line no-unused-vars\nexport function noop(...args : Array) {\n // pass\n}\n\nexport function addEventListener(obj : Object, event : string, handler : Function) : { cancel : () => void } {\n if (obj.addEventListener) {\n obj.addEventListener(event, handler);\n } else {\n obj.attachEvent(`on${ event }`, handler);\n }\n\n return {\n cancel() {\n if (obj.removeEventListener) {\n obj.removeEventListener(event, handler);\n } else {\n obj.detachEvent(`on${ event }`, handler);\n }\n }\n };\n}\n\nexport function uniqueID() : string {\n\n let chars = '0123456789abcdef';\n\n return 'xxxxxxxxxx'.replace(/./g, () => {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n });\n}\n\ntype MixedArrayType = Array;\n\nexport function eachArray(item : MixedArrayType, callback : (item : mixed, key : number) => mixed) {\n for (let i = 0; i < item.length; i++) {\n callback(item[i], i);\n }\n}\n\nexport function eachObject(item : Object, callback : (item : mixed, key : string) => mixed) {\n for (let key in item) {\n if (item.hasOwnProperty(key)) {\n callback(item[key], key);\n }\n }\n}\n\nexport function each(item : T, callback : (item : mixed, key : number | string) => mixed) {\n if (Array.isArray(item)) {\n eachArray(item, callback);\n } else if (typeof item === 'object' && item !== null) {\n eachObject(item, callback);\n }\n}\n\nexport function replaceObject(item : T, callback : (item : mixed, key : number | string) => mixed, depth : number = 1) : T {\n\n if (depth >= 100) {\n throw new Error(`Self-referential object passed, or object contained too many layers`);\n }\n\n let newobj;\n\n if (typeof item === 'object' && item !== null && !Array.isArray(item)) {\n newobj = {};\n } else if (Array.isArray(item)) {\n newobj = [];\n } else {\n throw new TypeError(`Invalid type: ${ typeof item }`);\n }\n\n each(item, (childItem, key) => {\n\n let result = callback(childItem, key);\n\n if (typeof result !== 'undefined') {\n // $FlowFixMe\n newobj[key] = result;\n } else if (typeof childItem === 'object' && childItem !== null) {\n // $FlowFixMe\n newobj[key] = replaceObject(childItem, callback, depth + 1);\n } else {\n // $FlowFixMe\n newobj[key] = childItem;\n }\n });\n\n // $FlowFixMe\n return newobj;\n}\n\nexport function safeInterval(method : Function, time : number) : { cancel : () => void } {\n let timeout;\n\n function runInterval() {\n timeout = setTimeout(runInterval, time);\n method.call();\n }\n\n timeout = setTimeout(runInterval, time);\n\n return {\n cancel() {\n clearTimeout(timeout);\n }\n };\n}\n\nexport function isRegex(item : mixed) : boolean {\n return Object.prototype.toString.call(item) === '[object RegExp]';\n}\n\n\ntype FunctionProxy = (method : T) => T;\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport let weakMapMemoize : FunctionProxy<*> = (method : (arg : any) => R) : ((...args : Array) => R) => {\n\n let weakmap = new WeakMap();\n\n // eslint-disable-next-line flowtype/no-weak-types\n return function weakmapMemoized(arg : any) : R {\n let result = weakmap.get(arg);\n\n if (typeof result !== 'undefined') {\n return result;\n }\n\n result = method.call(this, arg);\n\n if (typeof result !== 'undefined') {\n weakmap.set(arg, result);\n }\n\n return result;\n };\n};\n\nexport function getWindowType() : string {\n if (isPopup()) {\n return CONSTANTS.WINDOW_TYPES.POPUP;\n }\n if (isIframe()) {\n return CONSTANTS.WINDOW_TYPES.IFRAME;\n }\n return CONSTANTS.WINDOW_TYPES.FULLPAGE;\n}\n\nexport function jsonStringify(obj : T, replacer : ?Function, indent : number | void) : string {\n\n let objectToJSON;\n let arrayToJSON;\n\n try {\n if (JSON.stringify({}) !== '{}') {\n // $FlowFixMe\n objectToJSON = Object.prototype.toJSON;\n // $FlowFixMe\n delete Object.prototype.toJSON;\n }\n\n if (JSON.stringify({}) !== '{}') {\n throw new Error(`Can not correctly serialize JSON objects`);\n }\n\n if (JSON.stringify([]) !== '[]') {\n // $FlowFixMe\n arrayToJSON = Array.prototype.toJSON;\n // $FlowFixMe\n delete Array.prototype.toJSON;\n }\n\n if (JSON.stringify([]) !== '[]') {\n throw new Error(`Can not correctly serialize JSON objects`);\n }\n\n } catch (err) {\n throw new Error(`Can not repair JSON.stringify: ${ err.message }`);\n }\n\n let result = JSON.stringify.call(this, obj, replacer, indent);\n\n try {\n if (objectToJSON) {\n // $FlowFixMe\n Object.prototype.toJSON = objectToJSON; // eslint-disable-line no-extend-native\n }\n\n if (arrayToJSON) {\n // $FlowFixMe\n Array.prototype.toJSON = arrayToJSON; // eslint-disable-line no-extend-native\n }\n\n } catch (err) {\n throw new Error(`Can not repair JSON.stringify: ${ err.message }`);\n }\n\n\n return result;\n}\n\nexport function jsonParse(item : string) : mixed {\n return JSON.parse(item);\n}\n \nexport function needsGlobalMessagingForBrowser() : boolean {\n\n if (getUserAgent(window).match(/MSIE|trident|edge\\/12|edge\\/13/i)) {\n return true;\n }\n \n if (!CONFIG.ALLOW_POSTMESSAGE_POPUP) {\n return true;\n }\n \n return false;\n}\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { matchDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { CONSTANTS } from '../conf';\nimport { global } from '../global';\n\nimport { once, uniqueID, replaceObject, stringifyError, isRegex } from './util';\n\nglobal.methods = global.methods || new WeakMap();\n\nexport let listenForMethods = once(() => {\n global.on(CONSTANTS.POST_MESSAGE_NAMES.METHOD, { origin: CONSTANTS.WILDCARD }, ({ source, origin, data } : { source : CrossDomainWindowType, origin : string, data : Object }) => {\n\n let methods = global.methods.get(source);\n\n if (!methods) {\n throw new Error(`Could not find any methods this window has privileges to call`);\n }\n\n let meth = methods[data.id];\n\n if (!meth) {\n throw new Error(`Could not find method with id: ${ data.id }`);\n }\n\n if (!matchDomain(meth.domain, origin)) {\n throw new Error(`Method domain ${ meth.domain } does not match origin ${ origin }`);\n }\n\n return ZalgoPromise.try(() => {\n return meth.method.apply({ source, origin, data }, data.args);\n\n }).then(result => {\n\n return {\n result,\n id: data.id,\n name: data.name\n };\n });\n });\n});\n\nfunction isSerialized(item : mixed, type : string) : boolean {\n return typeof item === 'object' && item !== null && item.__type__ === type;\n}\n\ntype SerializedMethod = {\n __type__ : string,\n __id__ : string,\n __name__ : string\n};\n\nexport function serializeMethod(destination : CrossDomainWindowType, domain : string | Array, method : Function, name : string) : SerializedMethod {\n\n let id = uniqueID();\n\n let methods = global.methods.get(destination);\n\n if (!methods) {\n methods = {};\n global.methods.set(destination, methods);\n }\n\n methods[id] = { domain, method };\n\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.METHOD,\n __id__: id,\n __name__: name\n };\n}\n\ntype SerializedError = {\n __type__ : string,\n __message__ : string\n};\n\nfunction serializeError(err : mixed) : SerializedError {\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.ERROR,\n __message__: stringifyError(err),\n // $FlowFixMe\n __code__: err.code\n };\n}\n\ntype SerializePromise = {\n __type__ : string,\n __then__ : SerializedMethod\n};\n\nfunction serializePromise(destination : CrossDomainWindowType, domain : string | Array, promise : ZalgoPromise, name : string) : SerializePromise {\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.PROMISE,\n __then__: serializeMethod(destination, domain, (resolve, reject) => promise.then(resolve, reject), `${ name }.then`)\n };\n}\n\nfunction serializeZalgoPromise(destination : CrossDomainWindowType, domain : string | Array, promise : ZalgoPromise, name : string) : SerializePromise {\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.ZALGO_PROMISE,\n __then__: serializeMethod(destination, domain, (resolve, reject) => promise.then(resolve, reject), `${ name }.then`)\n };\n}\n\ntype SerializedRegex = {\n __type__ : string,\n __source__ : string\n};\n\nfunction serializeRegex(regex : RegExp) : SerializedRegex {\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.REGEX,\n __source__: regex.source\n };\n}\n\nexport function serializeMethods(destination : CrossDomainWindowType, domain : string | Array, obj : Object) : Object {\n\n return replaceObject({ obj }, (item, key) => {\n if (typeof item === 'function') {\n return serializeMethod(destination, domain, item, key.toString());\n }\n\n if (item instanceof Error) {\n return serializeError(item);\n }\n\n if (window.Promise && item instanceof window.Promise) {\n return serializePromise(destination, domain, item, key.toString());\n }\n\n if (ZalgoPromise.isPromise(item)) {\n // $FlowFixMe\n return serializeZalgoPromise(destination, domain, item, key.toString());\n }\n\n if (isRegex(item)) {\n // $FlowFixMe\n return serializeRegex(item);\n }\n }).obj;\n}\n\nexport function deserializeMethod(source : CrossDomainWindowType, origin : string, obj : Object) : Function {\n\n function wrapper() : ZalgoPromise {\n let args = Array.prototype.slice.call(arguments);\n return global.send(source, CONSTANTS.POST_MESSAGE_NAMES.METHOD, {\n id: obj.__id__,\n name: obj.__name__,\n args\n\n }, { domain: origin, timeout: -1 }).then(({ data }) => {\n return data.result;\n }, err => {\n throw err;\n });\n }\n\n wrapper.__name__ = obj.__name__;\n wrapper.__xdomain__ = true;\n\n wrapper.source = source;\n wrapper.origin = origin;\n\n return wrapper;\n}\n\nexport function deserializeError(source : CrossDomainWindowType, origin : string, obj : Object) : Error {\n let err = new Error(obj.__message__);\n if (obj.__code__) {\n // $FlowFixMe\n err.code = obj.__code__;\n }\n return err;\n}\n\nexport function deserializeZalgoPromise(source : CrossDomainWindowType, origin : string, prom : Object) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => deserializeMethod(source, origin, prom.__then__)(resolve, reject));\n}\n\nexport function deserializePromise(source : CrossDomainWindowType, origin : string, prom : Object) : ZalgoPromise {\n if (!window.Promise) {\n return deserializeZalgoPromise(source, origin, prom);\n }\n\n return new window.Promise((resolve, reject) => deserializeMethod(source, origin, prom.__then__)(resolve, reject));\n}\n\nexport function deserializeRegex(source : CrossDomainWindowType, origin : string, item : Object) : RegExp {\n // eslint-disable-next-line security/detect-non-literal-regexp\n return new RegExp(item.__source__);\n}\n\nexport function deserializeMethods(source : CrossDomainWindowType, origin : string, obj : Object) : Object {\n\n return replaceObject({ obj }, (item) => {\n if (typeof item !== 'object' || item === null) {\n return;\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.METHOD)) {\n return deserializeMethod(source, origin, item);\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.ERROR)) {\n return deserializeError(source, origin, item);\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.PROMISE)) {\n return deserializePromise(source, origin, item);\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.ZALGO_PROMISE)) {\n return deserializeZalgoPromise(source, origin, item);\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.REGEX)) {\n return deserializeRegex(source, origin, item);\n }\n\n }).obj;\n}\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { getAncestor, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { CONSTANTS } from '../conf';\nimport { global } from '../global';\n\nimport { noop } from './util';\n\nglobal.readyPromises = global.readyPromises || new WeakMap();\n\nexport function onHello(handler : ({ source? : CrossDomainWindowType, origin? : string }) => void) {\n global.on(CONSTANTS.POST_MESSAGE_NAMES.HELLO, { domain: CONSTANTS.WILDCARD }, ({ source, origin }) => {\n return handler({ source, origin });\n });\n}\n\nexport function sayHello(win : CrossDomainWindowType) : ZalgoPromise<{ origin : string }> {\n return global.send(win, CONSTANTS.POST_MESSAGE_NAMES.HELLO, {}, { domain: CONSTANTS.WILDCARD, timeout: -1 })\n .then(({ origin }) => {\n return { origin };\n });\n}\n\nexport function initOnReady() {\n\n onHello(({ source, origin }) => {\n let promise = global.readyPromises.get(source) || new ZalgoPromise();\n promise.resolve({ origin });\n global.readyPromises.set(source, promise);\n });\n\n let parent = getAncestor();\n if (parent) {\n sayHello(parent).catch(noop);\n }\n}\n\nexport function onChildWindowReady(win : mixed, timeout : number = 5000, name : string = 'Window') : ZalgoPromise<{ origin : string }> {\n\n let promise = global.readyPromises.get(win);\n\n if (promise) {\n return promise;\n }\n\n promise = new ZalgoPromise();\n global.readyPromises.set(win, promise);\n\n if (timeout !== -1) {\n setTimeout(() => promise.reject(new Error(`${ name } did not load after ${ timeout }ms`)), timeout);\n }\n\n return promise;\n}\n","/* @flow */\n\nexport * from './util';\nexport * from './serialize';\nexport * from './ready';\n","/* @flow */\n\nimport { on, send, bridge } from 'post-robot/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport type { CrossDomainWindowType, SameDomainWindowType } from 'cross-domain-utils/src';\n\nimport { isPayPalDomain, noop, getScriptVersion, extendUrl } from '../lib';\nimport { config } from '../config';\n\nfunction match(str : string, pattern : RegExp) : ?string {\n const regmatch : ?$ReadOnlyArray = str.match(pattern);\n if (regmatch) {\n return regmatch[1];\n }\n}\n\nlet onAuthorize : ?Function;\n\n// Post-Bridge\n\nif (isPayPalDomain()) {\n on('onLegacyPaymentAuthorize', { window: window.parent }, ({ data } : { data : { method : Function } }) => {\n onAuthorize = data.method;\n });\n}\n\n// Button / Merchant\n\nexport function onLegacyPaymentAuthorize(method : Function) : ZalgoPromise {\n onAuthorize = method;\n\n return ZalgoPromise.try(() => {\n if (bridge && !isPayPalDomain()) {\n return bridge.openBridge(extendUrl(config.postBridgeUrl, { version: getScriptVersion() }), config.postBridgeDomain).then((postBridge : CrossDomainWindowType) => {\n return send(postBridge, 'onLegacyPaymentAuthorize', { method }, { domain: config.paypalDomain })\n .then(noop);\n });\n }\n });\n}\n\nwindow.onLegacyPaymentAuthorize = onLegacyPaymentAuthorize;\n\n// Post-Bridge / Button\n\nwindow.watchForLegacyFallback = (win : SameDomainWindowType) => {\n const interval = setInterval(() => {\n try {\n const isLegacy = (win.document.body.innerHTML.indexOf('merchantpaymentweb') !== -1 ||\n win.document.body.innerHTML.indexOf('wapapp') !== -1);\n\n if (!isLegacy || win.ppxoWatching || win.closed) {\n return;\n }\n\n win.ppxoWatching = true;\n\n const XMLHttpRequestsend = win.XMLHttpRequest.prototype.send;\n\n win.XMLHttpRequest.prototype.send = function overrideXMLHttpRequestSend() : void {\n\n if (this._patched) {\n return XMLHttpRequestsend.apply(this, arguments);\n }\n\n this._patched = true;\n\n const self = this;\n let onload = this.onload;\n\n function listener() : void {\n\n if (self.readyState === self.DONE && self.status === 200 && self.responseText) {\n\n try {\n const response = JSON.parse(self.responseText.replace('while (1);', ''));\n\n if (response.type === 'redirect' && response.url && onAuthorize) {\n\n const url = response.url;\n\n clearInterval(interval);\n win.close();\n\n onAuthorize({\n returnUrl: url,\n paymentToken: match(url, /token=((EC-)?[A-Z0-9]+)/),\n billingToken: match(url, /ba_token=((BA-)?[A-Z0-9]+)/),\n payerID: match(url, /PayerID=([A-Z0-9]+)/),\n paymentID: match(url, /paymentId=((PAY-)?[A-Z0-9]+)/)\n });\n\n onAuthorize = null;\n\n if (win.PAYPAL && win.PAYPAL.Checkout && win.PAYPAL.Checkout.XhrResponse && win.PAYPAL.Checkout.XhrResponse.RESPONSE_TYPES) {\n Object.defineProperty(win.PAYPAL.Checkout.XhrResponse.RESPONSE_TYPES, 'Redirect', {\n value: Math.random().toString()\n });\n }\n\n if (win.mob && win.mob.Xhr && win.mob.Xhr.prototype._xhrOnReady) {\n win.mob.Xhr.prototype._xhrOnReady = noop;\n }\n }\n\n } catch (err) {\n return;\n }\n }\n\n if (onload) {\n return onload.apply(this, arguments);\n }\n }\n\n if (this.onload !== listener) {\n\n try {\n\n delete this.onload;\n this.addEventListener('load', listener);\n\n // $FlowFixMe\n Object.defineProperty(this, 'onload', {\n get() : Function {\n return listener;\n },\n set(handler) {\n onload = handler;\n }\n });\n\n } catch (err) {\n\n // pass\n }\n\n }\n\n return XMLHttpRequestsend.apply(this, arguments);\n };\n\n } catch (err) {\n // pass\n }\n }, 100);\n};\n\n\nwindow.onLegacyFallback = window.watchForLegacyFallback;\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { info, track, warn, flush as flushLogs, immediateFlush } from 'beaver-logger/client';\nimport { create, CONSTANTS, PopupOpenError } from 'zoid/src';\nimport { type Component } from 'zoid/src/component/component';\nimport type { CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { base64encode } from 'belter/src';\n\nimport { isDevice, request, getQueryParam, redirect as redir, patchMethod,\n setLogLevel, getSessionID, getBrowserLocale, supportsPopups, memoize,\n getDomainSetting, getScriptVersion, getButtonSessionID, isPayPalDomain,\n isEligible, getCurrentScriptUrl } from '../lib';\nimport { config } from '../config';\nimport { ENV, FPTI, PAYMENT_TYPE, CHECKOUT_OVERLAY_COLOR, ATTRIBUTE } from '../constants';\nimport { onLegacyPaymentAuthorize } from '../compat';\nimport { determineParameterFromToken, determineUrl } from '../integrations';\n\nimport { containerTemplate, componentTemplate } from './template';\n\nfunction addHeader(name, value) : void {\n\n if (!window.$Api) {\n return;\n }\n\n if (window.$Api.addHeader) {\n return window.$Api.addHeader(name, value);\n }\n}\n\n// eslint-disable-next-line flowtype/require-exact-type\ntype CheckoutPropsType = {\n payment? : () => ZalgoPromise,\n onAuthorize : ({ returnUrl : string }, { redirect : (?CrossDomainWindowType, ?string) => ZalgoPromise }) => ?ZalgoPromise,\n onShippingChange? : (address : {}) => ?ZalgoPromise,\n onCancel? : ({ cancelUrl : string }, { redirect : (?CrossDomainWindowType, ?string) => ZalgoPromise }) => ?ZalgoPromise,\n fallback? : (string) => ?ZalgoPromise,\n fundingSource? : string,\n logLevel? : string,\n env? : string,\n stage? : string,\n stageUrl? : string,\n localhostUrl? : string,\n checkoutUri? : string,\n authCode? : string\n};\n\nexport const Checkout : Component = create({\n\n tag: 'paypal-checkout',\n name: 'ppcheckout',\n\n scrolling: true,\n\n buildUrl(props) : ZalgoPromise {\n const env = props.env || config.env;\n\n if (!props.payment) {\n throw new Error(`Can not build url without payment prop`);\n }\n\n return props.payment().then(token => {\n if (!token) {\n throw new Error(`Expected payment id or token to be passed, got ${ token }`);\n }\n\n return determineUrl(env, props.fundingSource, token);\n });\n },\n\n get unsafeRenderTo() : boolean {\n return config.env === ENV.LOCAL;\n },\n\n get domain() : Object {\n return {\n ...config.paypalDomains\n };\n },\n\n get bridgeUrl() : Object {\n return config.metaFrameUrls;\n },\n\n get bridgeDomain() : Object {\n return config.paypalDomains;\n },\n\n contexts: {\n iframe: (!supportsPopups()),\n popup: true\n },\n\n get version() : string {\n return getScriptVersion();\n },\n\n validate() {\n if (!isEligible()) {\n warn('checkout_render_ineligible');\n }\n },\n\n prerenderTemplate: componentTemplate,\n containerTemplate,\n\n props: {\n\n sessionID: {\n type: 'string',\n required: false,\n def() : string {\n return getSessionID();\n },\n queryParam: true\n },\n\n buttonSessionID: {\n type: 'string',\n required: false,\n def() : ?string {\n return getButtonSessionID();\n },\n queryParam: true\n },\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n },\n\n meta: {\n type: 'object',\n required: false,\n def() : Object {\n const meta = window.xprops && window.xprops.meta;\n return meta || {};\n }\n },\n\n stage: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.STAGE || env === ENV.LOCAL) {\n return config.stage;\n }\n }\n },\n\n stageUrl: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.STAGE || env === ENV.LOCAL) {\n return config.stageUrl;\n }\n }\n },\n\n authCode: {\n type: 'string',\n required: false,\n def() : string {\n return config.authCode;\n },\n queryParam: 'code'\n },\n\n localhostUrl: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.LOCAL) {\n return config.localhostUrl;\n }\n }\n },\n\n checkoutUri: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : ?string {\n return config.checkoutUri;\n }\n },\n\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n allowDelegate: true,\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n }\n },\n\n\n client: {\n type: 'object',\n required: false,\n def() : { [string] : string } {\n return {};\n },\n sendToChild: false,\n\n validate(client, props) {\n const env = props.env || config.env;\n\n if (!client[env]) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (client[env].match(/^(.)\\1+$/)) {\n throw new Error(`Invalid client ID: ${ client[env] }`);\n }\n }\n },\n\n payment: {\n type: 'function',\n required: false,\n memoize: true,\n promisify: true,\n queryParam(payment) : ZalgoPromise {\n return payment().then(token => {\n return determineParameterFromToken(token);\n });\n },\n queryValue(payment) : ZalgoPromise {\n return payment();\n },\n childDecorate(payment) : () => ZalgoPromise {\n const token = getQueryParam('token');\n\n return token\n ? memoize(() => ZalgoPromise.resolve(token))\n : payment;\n },\n validate(payment, props) {\n if (!payment && !props.url) {\n throw new Error(`Expected either props.payment or props.url to be passed`);\n }\n },\n alias: 'billingAgreement'\n },\n\n style: {\n type: 'object',\n required: false,\n allowDelegate: true,\n def() : Object {\n return {};\n },\n validate(style) {\n if (style.overlayColor && style.overlayColor !== CHECKOUT_OVERLAY_COLOR.BLACK && style.overlayColor !== CHECKOUT_OVERLAY_COLOR.WHITE) {\n throw new Error(`Invalid background color: ${ style.overlayColor }`);\n }\n }\n },\n\n commit: {\n type: 'boolean',\n required: false\n },\n\n experience: {\n type: 'object',\n required: false,\n def() : Object {\n return {};\n }\n },\n\n fundingSource: {\n type: 'string',\n required: false,\n queryParam: true\n },\n\n fundingOffered: {\n type: 'object',\n required: false,\n queryParam: true,\n def() : Object {\n const elements = Array.prototype.slice.call(document.querySelectorAll(`[${ ATTRIBUTE.FUNDING_SOURCE }]`));\n\n const fundingSources = elements.map(el => {\n return el.getAttribute(ATTRIBUTE.FUNDING_SOURCE);\n });\n\n // $FlowFixMe\n return fundingSources;\n },\n queryValue: (val) => {\n return val.join(',');\n }\n },\n\n onAuthorize: {\n type: 'function',\n required: true,\n once: true,\n \n decorate(original) : Function | void {\n if (original) {\n return function decorateOnAuthorize(data, actions = {}) : ZalgoPromise {\n\n if (data && !data.intent) {\n warn(`checkout_authorize_no_intent`, { paymentID: data.paymentID, token: data.paymentToken });\n }\n\n const close = () => {\n return ZalgoPromise.try(() => {\n if (actions.close) {\n return actions.close();\n }\n }).then(() => {\n return this.closeComponent();\n });\n };\n\n const redirect = (win, url) => {\n return ZalgoPromise.all([\n redir(win || window.top, url || data.returnUrl),\n close()\n ]);\n };\n\n return ZalgoPromise.try(() => {\n\n try {\n const isButton = window.location.href.indexOf('/smart/button') !== -1;\n const isGuest = this.window.location.href.indexOf('/webapps/xoonboarding') !== -1;\n\n if (isButton && isGuest) {\n return request({\n win: this.window,\n method: 'get',\n url: '/webapps/xoonboarding/api/auth'\n }).then(result => {\n if (result && result.data && result.data.access_token) {\n addHeader('x-paypal-internal-euat', result.data.access_token);\n }\n }).catch(() => {\n // pass\n });\n }\n\n } catch (err) {\n // pass\n }\n\n }).then(() => {\n return original.call(this, data, { ...actions, close, redirect });\n }).catch(err => {\n return this.error(err);\n }).finally(() => {\n return this.close();\n });\n };\n }\n }\n },\n\n onShippingChange: {\n type: 'function',\n required: false\n },\n\n onAuth: {\n type: 'function',\n required: false,\n sameDomain: true,\n childDecorate(original : Function) : ?Function {\n if (original) {\n return function wrapOnAuth(data : string | Object) : Object {\n if (typeof data === 'string') {\n data = { accessToken: data };\n }\n return original(data);\n };\n }\n }\n },\n\n accessToken: {\n type: 'function',\n required: false\n },\n\n onCancel: {\n type: 'function',\n required: false,\n once: true,\n noop: true,\n\n decorate(original) : Function {\n return function decorateOnCancel(data, actions = {}) : ZalgoPromise {\n\n const close = () => {\n return ZalgoPromise.try(() => {\n if (actions.close) {\n return actions.close();\n }\n }).then(() => {\n return this.closeComponent();\n });\n };\n\n const redirect = (win, url) => {\n return ZalgoPromise.all([\n redir(win || window.top, url || data.cancelUrl),\n close()\n ]);\n };\n\n return ZalgoPromise.try(() => {\n return original.call(this, data, { ...actions, close, redirect });\n }).finally(() => {\n this.close();\n });\n };\n }\n },\n\n init: {\n type: 'function',\n required: false,\n once: true,\n noop: true,\n\n decorate(original) : Function {\n return function decorateInit(data) : void {\n info('checkout_init');\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CHECKOUT_INIT,\n [ FPTI.KEY.CONTEXT_TYPE ]: FPTI.CONTEXT_TYPE[PAYMENT_TYPE.EC_TOKEN],\n [ FPTI.KEY.TOKEN ]: data.paymentToken,\n [ FPTI.KEY.SELLER_ID ]: data.merchantID,\n [ FPTI.KEY.CONTEXT_ID ]: data.paymentToken\n });\n\n flushLogs();\n\n this.paymentToken = data.paymentToken;\n this.cancelUrl = data.cancelUrl;\n\n return original.apply(this, arguments);\n };\n }\n },\n\n onClose: {\n type: 'function',\n required: false,\n once: true,\n promisify: true,\n noop: true,\n\n decorate(original) : Function {\n return function decorateOnClose(reason) : ZalgoPromise {\n\n const onClose = original.apply(this, arguments);\n\n const CLOSE_REASONS = CONSTANTS.CLOSE_REASONS;\n\n const shouldCancel =\n this.props.onCancel &&\n [ CLOSE_REASONS.CLOSE_DETECTED, CLOSE_REASONS.USER_CLOSED ].indexOf(reason) !== -1;\n\n if (shouldCancel) {\n info(`close_trigger_cancel`);\n return this.props.onCancel({\n paymentToken: this.paymentToken,\n cancelUrl: this.cancelUrl\n }).then(() => onClose);\n }\n\n return onClose;\n };\n }\n },\n\n onError: {\n type: 'function',\n required: false,\n promisify: true,\n noop: true,\n once: true\n },\n\n fallback: {\n type: 'function',\n required: false,\n once: true,\n\n def() : Function {\n return function defaultFallback(url) : ZalgoPromise {\n warn('fallback', { url });\n\n if (getDomainSetting('allow_full_page_fallback')) {\n window.top.location = url;\n return this.close();\n }\n\n return onLegacyPaymentAuthorize(this.props.onAuthorize);\n };\n }\n },\n\n logLevel: {\n type: 'string',\n required: false,\n get value() : string {\n return config.logLevel;\n }\n },\n \n test: {\n type: 'object',\n required: false,\n def() : Object {\n return window.__test__ || { action: 'checkout' };\n }\n },\n\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n }\n },\n\n get dimensions() : { width : string, height : string } {\n\n if (isDevice()) {\n return {\n width: '100%',\n height: '590px'\n };\n }\n\n return {\n width: '500px',\n height: '590px'\n };\n }\n});\n\nif (Checkout.isChild() && Checkout.xchild && Checkout.xprops) {\n\n if (Checkout.xprops && Checkout.xprops.logLevel) {\n setLogLevel(Checkout.xprops.logLevel);\n }\n\n Checkout.xchild.onProps(xprops => {\n patchMethod(xprops, 'onAuthorize', ({ callOriginal, args: [ data ] }) => {\n if (data && !data.intent) {\n warn(`hermes_authorize_no_intent`, { paymentID: data.paymentID, token: data.paymentToken });\n\n try {\n const intent = window.injector.get('$CheckoutCartModel').instance(data.paymentToken).payment_action;\n warn(`hermes_intent`, { paymentID: data.paymentID, token: data.paymentToken, intent });\n } catch (err) {\n // pass\n }\n\n immediateFlush();\n }\n return callOriginal();\n });\n });\n}\n\npatchMethod(Checkout, 'init', ({ args: [ props, _context ], original, context }) => {\n return original.call(context, props, _context, 'body');\n});\n\npatchMethod(Checkout, 'render', ({ args: [ props ], original, context }) => {\n return original.call(context, props, 'body');\n});\n\npatchMethod(Checkout, 'renderTo', ({ args: [ win, props ], original, context }) => {\n\n const payment = props.payment();\n props.payment = () => payment;\n\n return original.call(context, win, props, 'body').catch(err => {\n if (err instanceof PopupOpenError && isPayPalDomain()) {\n Checkout.contexts.iframe = true;\n return original.call(context, win, props, 'body');\n }\n throw err;\n });\n});\n\n","/* @flow */\n\nexport * from './component';\n","/* @flow */\n\nexport function getUserAgent() : string {\n return window.navigator.mockUserAgent || window.navigator.userAgent;\n}\n\nexport function isDevice(userAgent? : string = getUserAgent()) : boolean {\n if (userAgent.match(/Android|webOS|iPhone|iPad|iPod|bada|Symbian|Palm|CriOS|BlackBerry|IEMobile|WindowsMobile|Opera Mini/i)) {\n return true;\n }\n\n return false;\n}\n\nexport function isWebView() : boolean {\n let userAgent = getUserAgent();\n return (/(iPhone|iPod|iPad|Macintosh).*AppleWebKit(?!.*Safari)/i).test(userAgent) ||\n (/\\bwv\\b/).test(userAgent) ||\n (/Android.*Version\\/(\\d)\\.(\\d)/i).test(userAgent);\n}\n\nexport function isStandAlone() : boolean {\n return (window.navigator.standalone === true || window.matchMedia('(display-mode: standalone)').matches);\n}\n\nexport function isFacebookWebView(ua? : string = getUserAgent()) : boolean {\n return (ua.indexOf('FBAN') !== -1) || (ua.indexOf('FBAV') !== -1);\n}\n\nexport function isFirefoxIOS(ua? : string = getUserAgent()) : boolean {\n return (/FxiOS/i).test(ua);\n}\n\nexport function isEdgeIOS(ua? : string = getUserAgent()) : boolean {\n return (/EdgiOS/i).test(ua);\n}\n\nexport function isOperaMini(ua? : string = getUserAgent()) : boolean {\n return ua.indexOf('Opera Mini') > -1;\n}\n\nexport function isAndroid(ua? : string = getUserAgent()) : boolean {\n return (/Android/).test(ua);\n}\n\nexport function isIos(ua? : string = getUserAgent()) : boolean {\n return (/iPhone|iPod|iPad/).test(ua);\n}\n\nexport function isGoogleSearchApp(ua? : string = getUserAgent()) : boolean {\n return (/\\bGSA\\b/).test(ua);\n}\n\nexport function isQQBrowser(ua? : string = getUserAgent()) : boolean {\n return (/QQBrowser/).test(ua);\n}\n\nexport function isIosWebview(ua? : string = getUserAgent()) : boolean {\n if (isIos(ua)) {\n if (isGoogleSearchApp(ua)) {\n return true;\n }\n return (/.+AppleWebKit(?!.*Safari)/).test(ua);\n }\n return false;\n}\n\nexport function isAndroidWebview(ua? : string = getUserAgent()) : boolean {\n if (isAndroid(ua)) {\n return (/Version\\/[\\d.]+/).test(ua) && !isOperaMini(ua);\n }\n return false;\n}\n\nexport function isIE() : boolean {\n\n if (window.document.documentMode) {\n return true;\n }\n\n return Boolean(\n window.navigator &&\n window.navigator.userAgent &&\n (/Edge|MSIE|rv:11/i).test(window.navigator.userAgent)\n );\n}\n\nexport function isIECompHeader() : boolean {\n let mHttp = window.document.querySelector('meta[http-equiv=\"X-UA-Compatible\"]');\n let mContent = window.document.querySelector('meta[content=\"IE=edge\"]');\n if (mHttp && mContent) {\n return true;\n }\n return false;\n}\n\nexport function isElectron() : boolean {\n if (typeof process !== 'undefined' && process.versions && process.versions.electron) {\n return true;\n }\n return false;\n}\n\nexport function isIEIntranet() : boolean {\n\n // This status check only works for older versions of IE with document.documentMode set\n\n if (window.document.documentMode) {\n try {\n let status = window.status;\n\n window.status = 'testIntranetMode';\n\n if (window.status === 'testIntranetMode') {\n window.status = status;\n\n return true;\n }\n\n return false;\n\n } catch (err) {\n\n return false;\n }\n }\n\n return false;\n}\n\nexport function isMacOsCna() : boolean {\n let userAgent = getUserAgent();\n return (/Macintosh.*AppleWebKit(?!.*Safari)/i).test(userAgent);\n}\n\nexport function supportsPopups(ua? : string = getUserAgent()) : boolean {\n return !(isIosWebview(ua) || isAndroidWebview(ua) || isOperaMini(ua) ||\n isFirefoxIOS(ua) || isEdgeIOS(ua) || isFacebookWebView(ua) || isQQBrowser(ua) || isElectron() || isMacOsCna() || isStandAlone());\n}\n\nexport function isChrome(ua? : string = getUserAgent()) : boolean {\n return (/Chrome|Chromium|CriOS/).test(ua);\n}\n\nexport function isSafari(ua? : string = getUserAgent()) : boolean {\n return (/Safari/).test(ua) && !isChrome(ua);\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\n\nimport type { CancelableType } from './types';\n\nexport function getFunctionName (fn : T) : string {\n return fn.name || fn.__name__ || fn.displayName || 'anonymous';\n}\n\nexport function setFunctionName (fn : T, name : string) : T {\n try {\n delete fn.name;\n fn.name = name;\n } catch (err) {\n // pass\n }\n\n fn.__name__ = fn.displayName = name;\n return fn;\n}\n\nexport function base64encode(str : string) : string {\n if (typeof btoa === 'function') {\n return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, (m, p1) => {\n return String.fromCharCode(parseInt(p1, 16));\n }));\n }\n\n if (typeof Buffer !== 'undefined') {\n return Buffer.from(str, 'utf8').toString('base64');\n }\n\n throw new Error(`Can not find window.btoa or Buffer`);\n}\n\nexport function base64decode(str : string) : string {\n if (typeof atob === 'function') {\n return decodeURIComponent(Array.prototype.map.call(atob(str), c => {\n // eslint-disable-next-line prefer-template\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\n }).join(''));\n }\n\n if (typeof Buffer !== 'undefined') {\n return Buffer.from(str, 'base64').toString('utf8');\n }\n\n throw new Error(`Can not find window.atob or Buffer`);\n}\n\nexport function uniqueID() : string {\n\n let chars = '0123456789abcdef';\n\n let randomID = 'xxxxxxxxxx'.replace(/./g, () => {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n });\n\n let timeID = base64encode(\n new Date().toISOString().slice(11, 19).replace('T', '.')\n ).replace(/[^a-zA-Z0-9]/g, '').toLowerCase();\n\n return `${ randomID }_${ timeID }`;\n}\n\nexport function getGlobal() : Object {\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n if (typeof __GLOBAL__ !== 'undefined') {\n return __GLOBAL__;\n }\n throw new Error(`No global found`);\n}\n\nlet objectIDs;\n\nexport function getObjectID(obj : Object) : string {\n\n objectIDs = objectIDs || new WeakMap();\n\n if (obj === null || obj === undefined || (typeof obj !== 'object' && typeof obj !== 'function')) {\n throw new Error(`Invalid object`);\n }\n\n let uid = objectIDs.get(obj);\n\n if (!uid) {\n uid = `${ typeof obj }:${ uniqueID() }`;\n objectIDs.set(obj, uid);\n }\n\n return uid;\n}\n\nfunction serializeArgs(args : Array) : string {\n try {\n return JSON.stringify(Array.prototype.slice.call(args), (subkey, val) => {\n if (typeof val === 'function') {\n return `memoize[${ getObjectID(val) }]`;\n }\n return val;\n });\n } catch (err) {\n throw new Error(`Arguments not serializable -- can not be used to memoize`);\n }\n}\nexport function memoize) => R, X : { (...args : Array) : R, displayName : string, reset : () => void }>(method : F, options : { time? : number, thisNamespace? : boolean } = {}) : X {\n let cacheMap = new WeakMap();\n\n // $FlowFixMe\n let memoizedFunction : X = function memoizedFunction(...args : Array) : R {\n let cache = cacheMap.getOrSet(options.thisNamespace ? this : method, () => ({}));\n\n let key : string = serializeArgs(args);\n\n let cacheTime = options.time;\n if (cache[key] && cacheTime && (Date.now() - cache[key].time) < cacheTime) {\n delete cache[key];\n }\n\n if (cache[key]) {\n return cache[key].value;\n }\n\n let time = Date.now();\n let value = method.apply(this, arguments);\n\n cache[key] = { time, value };\n\n return cache[key].value;\n };\n\n memoizedFunction.reset = () => {\n cacheMap.delete(options.thisNamespace ? this : method);\n };\n\n return setFunctionName(memoizedFunction, `${ getFunctionName(method) }::memoized`);\n}\n\nexport function promiseIdentity(item : ZalgoPromise | T) : ZalgoPromise {\n // $FlowFixMe\n return ZalgoPromise.resolve(item);\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport function memoizePromise(method : (...args : Array) => ZalgoPromise) : ((...args : Array) => ZalgoPromise) {\n let cache = {};\n\n // eslint-disable-next-line flowtype/no-weak-types\n function memoizedPromiseFunction(...args : Array) : ZalgoPromise {\n let key : string = serializeArgs(args);\n\n if (cache.hasOwnProperty(key)) {\n return cache[key];\n }\n\n cache[key] = ZalgoPromise.try(() => method.apply(this, arguments))\n .finally(() => {\n delete cache[key];\n });\n\n return cache[key];\n }\n\n memoizedPromiseFunction.reset = () => {\n cache = {};\n };\n\n return setFunctionName(memoizedPromiseFunction, `${ getFunctionName(method) }::promiseMemoized`);\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport function promisify(method : (...args : Array) => R, options : { name? : string } = {}) : ((...args : Array) => ZalgoPromise) {\n function promisifiedFunction() : ZalgoPromise {\n return ZalgoPromise.try(method, this, arguments);\n }\n\n if (options.name) {\n promisifiedFunction.displayName = `${ options.name }:promisified`;\n }\n\n return setFunctionName(promisifiedFunction, `${ getFunctionName(method) }::promisified`);\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport function inlineMemoize(method : (...args : Array) => R, logic : (...args : Array) => R, args : Array = []) : R {\n // $FlowFixMe\n let cache = method.__inline_memoize_cache__ = method.__inline_memoize_cache__ || {};\n let key = serializeArgs(args);\n\n if (cache.hasOwnProperty(key)) {\n return cache[key];\n }\n \n let result = cache[key] = logic(...args);\n\n return result;\n}\n\n// eslint-disable-next-line no-unused-vars\nexport function noop(...args : Array) {\n // pass\n}\n\nexport function once(method : Function) : Function {\n let called = false;\n\n const onceFunction = function() : mixed {\n if (!called) {\n called = true;\n return method.apply(this, arguments);\n }\n };\n\n return setFunctionName(onceFunction, `${ getFunctionName(method) }::once`);\n}\n\nexport function hashStr(str : string) : number {\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n hash += str[i].charCodeAt(0) * Math.pow((i % 10) + 1, 5);\n }\n return Math.floor(Math.pow(Math.sqrt(hash), 5));\n}\n\nexport function strHashStr(str : string) : string {\n let hash = '';\n\n for (let i = 0; i < str.length; i++) {\n let total = (str[i].charCodeAt(0) * i);\n\n if (str[i + 1]) {\n total += (str[i + 1].charCodeAt(0) * (i - 1));\n }\n\n hash += String.fromCharCode(97 + (Math.abs(total) % 26));\n }\n\n return hash;\n}\n\nexport function match(str : string, pattern : RegExp) : ?string {\n let regmatch = str.match(pattern);\n if (regmatch) {\n return regmatch[1];\n }\n}\n\nexport function awaitKey(obj : Object, key : string) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n\n let value = obj[key];\n\n if (value) {\n return resolve(value);\n }\n\n delete obj[key];\n\n Object.defineProperty(obj, key, {\n\n configurable: true,\n\n set(item) {\n value = item;\n\n if (value) {\n resolve(value);\n }\n },\n\n get() : mixed {\n return value;\n }\n });\n });\n}\n\nexport function stringifyError(err : mixed, level : number = 1) : string {\n\n if (level >= 3) {\n return 'stringifyError stack overflow';\n }\n\n try {\n if (!err) {\n return ``;\n }\n\n if (typeof err === 'string') {\n return err;\n }\n\n if (err instanceof Error) {\n let stack = err && err.stack;\n let message = err && err.message;\n\n if (stack && message) {\n if (stack.indexOf(message) !== -1) {\n return stack;\n } else {\n return `${ message }\\n${ stack }`;\n }\n } else if (stack) {\n return stack;\n } else if (message) {\n return message;\n }\n }\n\n if (err && err.toString && typeof err.toString === 'function') {\n // $FlowFixMe\n return err.toString();\n }\n\n return Object.prototype.toString.call(err);\n\n } catch (newErr) { // eslint-disable-line unicorn/catch-error-name\n return `Error while stringifying error: ${ stringifyError(newErr, level + 1) }`;\n }\n}\n\nexport function stringifyErrorMessage(err : mixed) : string {\n\n let defaultMessage = ``;\n\n if (!err) {\n return defaultMessage;\n }\n\n if (err instanceof Error) {\n return err.message || defaultMessage;\n }\n\n if (typeof err.message === 'string') {\n return err.message || defaultMessage;\n }\n\n return defaultMessage;\n}\n\nexport function stringify(item : mixed) : string {\n if (typeof item === 'string') {\n return item;\n }\n\n if (item && item.toString && typeof item.toString === 'function') {\n // $FlowFixMe\n return item.toString();\n }\n\n return Object.prototype.toString.call(item);\n}\n\nexport function domainMatches(hostname : string, domain : string) : boolean {\n hostname = hostname.split('://')[1];\n let index = hostname.indexOf(domain);\n return (index !== -1 && hostname.slice(index) === domain);\n}\n\nexport function patchMethod(obj : Object, name : string, handler : Function) {\n let original = obj[name];\n\n obj[name] = function patchedMethod() : mixed {\n return handler({\n context: this,\n args: Array.prototype.slice.call(arguments),\n original,\n callOriginal: () => original.apply(this, arguments)\n });\n };\n}\n\nexport function extend(obj : T, source : Object) : T {\n if (!source) {\n return obj;\n }\n\n if (Object.assign) {\n return Object.assign(obj, source);\n }\n\n for (let key in source) {\n if (source.hasOwnProperty(key)) {\n obj[key] = source[key];\n }\n }\n\n return obj;\n}\n\nexport function values(obj : { [string] : T }) : Array {\n let result = [];\n for (let key in obj) {\n if (obj.hasOwnProperty(key)) {\n result.push(obj[key]);\n }\n }\n return result;\n}\n\nexport function perc(pixels : number, percentage : number) : number {\n return Math.round((pixels * percentage) / 100);\n}\n\nexport function min(...args : Array) : number {\n return Math.min(...args);\n}\n\nexport function max(...args : Array) : number {\n return Math.max(...args);\n}\n\nexport function regexMap(str : string, regexp : RegExp, handler : () => T) : Array {\n let results = [];\n\n // $FlowFixMe\n str.replace(regexp, function regexMapMatcher(item) {\n results.push(handler ? handler.apply(null, arguments) : item);\n });\n\n // $FlowFixMe\n return results;\n}\n\nexport function svgToBase64(svg : string) : string {\n return `data:image/svg+xml;base64,${ base64encode(svg) }`;\n}\n\nexport function objFilter(obj : { [string] : T }, filter? : (T, ?string) => mixed = Boolean) : { [string] : R } {\n let result = {};\n\n for (let key in obj) {\n if (!obj.hasOwnProperty(key) || !filter(obj[key], key)) {\n continue;\n }\n\n result[key] = obj[key];\n }\n\n return result;\n}\n\nexport function identity (item : T) : T {\n return item;\n}\n\nexport function regexTokenize(text : string, regexp : RegExp) : Array {\n let result = [];\n text.replace(regexp, token => {\n result.push(token);\n return '';\n });\n return result;\n}\n\nexport function promiseDebounce(method : () => ZalgoPromise | T, delay : number = 50) : () => ZalgoPromise {\n\n let promise;\n let timeout;\n\n const promiseDebounced = function() : ZalgoPromise {\n if (timeout) {\n clearTimeout(timeout);\n }\n\n let localPromise = promise = promise || new ZalgoPromise();\n\n timeout = setTimeout(() => {\n promise = null;\n timeout = null;\n\n ZalgoPromise.try(method).then(\n result => { localPromise.resolve(result); },\n err => { localPromise.reject(err); }\n );\n }, delay);\n\n return localPromise;\n };\n\n return setFunctionName(promiseDebounced, `${ getFunctionName(method) }::promiseDebounced`);\n}\n\nexport function safeInterval(method : Function, time : number) : { cancel : () => void } {\n\n let timeout;\n\n function loop() {\n timeout = setTimeout(() => {\n method();\n loop();\n }, time);\n }\n\n loop();\n\n return {\n cancel() {\n clearTimeout(timeout);\n }\n };\n}\n\nexport function isInteger(str : string) : boolean {\n return Boolean(str.match(/^[0-9]+$/));\n}\n\nexport function isFloat(str : string) : boolean {\n return Boolean(str.match(/^[0-9]+\\.[0-9]+$/));\n}\n\nexport function serializePrimitive(value : string | number | boolean) : string {\n return value.toString();\n}\n\nexport function deserializePrimitive(value : string) : string | number | boolean {\n if (value === 'true') {\n return true;\n } else if (value === 'false') {\n return false;\n } else if (isInteger(value)) {\n return parseInt(value, 10);\n } else if (isFloat(value)) {\n return parseFloat(value);\n } else {\n return value;\n }\n}\n\nexport function dotify(obj : Object, prefix : string = '', newobj : Object = {}) : { [string] : string } {\n prefix = prefix ? `${ prefix }.` : prefix;\n for (let key in obj) {\n if (!obj.hasOwnProperty(key) || obj[key] === undefined || obj[key] === null || typeof obj[key] === 'function') {\n continue;\n } else if (obj[key] && Array.isArray(obj[key]) && obj[key].length && obj[key].every(val => typeof val !== 'object')) {\n newobj[`${ prefix }${ key }[]`] = obj[key].join(',');\n } else if (obj[key] && typeof obj[key] === 'object') {\n newobj = dotify(obj[key], `${ prefix }${ key }`, newobj);\n } else {\n newobj[`${ prefix }${ key }`] = serializePrimitive(obj[key]);\n }\n }\n return newobj;\n}\n\nexport function undotify(obj : { [string] : string }) : Object {\n \n let result = {};\n\n for (let key in obj) {\n if (!obj.hasOwnProperty(key) || typeof obj[key] !== 'string') {\n continue;\n }\n\n let value = obj[key];\n\n if (key.match(/^.+\\[\\]$/)) {\n key = key.slice(0, key.length - 2);\n value = value.split(',').map(deserializePrimitive);\n } else {\n value = deserializePrimitive(value);\n }\n\n let keyResult = result;\n let parts = key.split('.');\n for (let i = 0; i < parts.length; i++) {\n let part = parts[i];\n let isLast = (i + 1 === parts.length);\n let isIndex = !isLast && isInteger(parts[i + 1]);\n\n if (part === 'constructor' || part === 'prototype' || part === '__proto__') {\n throw new Error(`Disallowed key: ${ part }`);\n }\n\n if (isLast) {\n // $FlowFixMe\n keyResult[part] = value;\n } else {\n // $FlowFixMe\n keyResult = keyResult[part] = keyResult[part] || (isIndex ? [] : {});\n }\n }\n }\n\n return result;\n}\n\nexport type EventEmitterType = {\n on : (eventName : string, handler : Function) => CancelableType,\n once : (eventName : string, handler : Function) => CancelableType,\n trigger : (eventName : string, ...args : $ReadOnlyArray) => ZalgoPromise,\n triggerOnce : (eventName : string, ...args : $ReadOnlyArray) => ZalgoPromise\n};\n\nexport function eventEmitter() : EventEmitterType {\n let triggered = {};\n let handlers = {};\n\n return {\n\n on(eventName : string, handler : Function) : CancelableType {\n let handlerList = handlers[eventName] = handlers[eventName] || [];\n\n handlerList.push(handler);\n\n let cancelled = false;\n\n return {\n cancel() {\n if (!cancelled) {\n cancelled = true;\n handlerList.splice(handlerList.indexOf(handler), 1);\n }\n\n }\n };\n },\n\n once(eventName : string, handler : Function) : CancelableType {\n\n let listener = this.on(eventName, () => {\n listener.cancel();\n handler();\n });\n\n return listener;\n },\n\n trigger(eventName : string, ...args : $ReadOnlyArray) : ZalgoPromise {\n\n let handlerList = handlers[eventName];\n let promises = [];\n\n if (handlerList) {\n for (let handler of handlerList) {\n promises.push(ZalgoPromise.try(() => handler(...args)));\n }\n }\n\n return ZalgoPromise.all(promises).then(noop);\n },\n\n triggerOnce(eventName : string, ...args : $ReadOnlyArray) : ZalgoPromise {\n\n if (triggered[eventName]) {\n return ZalgoPromise.resolve();\n }\n\n triggered[eventName] = true;\n return this.trigger(eventName, ...args);\n }\n };\n}\n\nexport function camelToDasherize(string : string) : string {\n return string.replace(/([A-Z])/g, (g) => {\n return `-${ g.toLowerCase() }`;\n });\n}\n\nexport function dasherizeToCamel(string : string) : string {\n return string.replace(/-([a-z])/g, (g) => {\n return g[1].toUpperCase();\n });\n}\n\nexport function capitalizeFirstLetter(string : string) : string {\n return string.charAt(0).toUpperCase() + string.slice(1).toLowerCase();\n}\n\nexport function get(item : Object, path : string, def : mixed) : mixed {\n\n if (!path) {\n return def;\n }\n\n let pathParts = path.split('.');\n\n // Loop through each section of our key path\n\n for (let i = 0; i < pathParts.length; i++) {\n\n // If we have an object, we can get the key\n if (typeof item === 'object' && item !== null) {\n item = item[pathParts[i]];\n\n // Otherwise, we should return the default (undefined if not provided)\n } else {\n return def;\n }\n }\n\n // If our final result is undefined, we should return the default\n\n return item === undefined ? def : item;\n}\n\nexport function safeTimeout(method : Function, time : number) {\n\n let interval = safeInterval(() => {\n time -= 100;\n if (time <= 0) {\n interval.cancel();\n method();\n }\n }, 100);\n}\n\nexport function defineLazyProp(obj : Object | Array, key : string | number, getter : () => T) {\n if (Array.isArray(obj)) {\n if (typeof key !== 'number') {\n throw new TypeError(`Array key must be number`);\n }\n } else if (typeof obj === 'object' && obj !== null) {\n if (typeof key !== 'string') {\n throw new TypeError(`Object key must be string`);\n }\n }\n \n Object.defineProperty(obj, key, {\n configurable: true,\n enumerable: true,\n get: () => {\n // $FlowFixMe\n delete obj[key];\n let value = getter();\n // $FlowFixMe\n obj[key] = value;\n return value;\n },\n set: (value : T) => {\n // $FlowFixMe\n delete obj[key];\n // $FlowFixMe\n obj[key] = value;\n }\n });\n}\n\nexport function arrayFrom(item : Iterable) : Array { // eslint-disable-line no-undef\n return Array.prototype.slice.call(item);\n}\n\nexport function isObject(item : mixed) : boolean {\n return (typeof item === 'object' && item !== null);\n}\n\nexport function isObjectObject(obj : mixed) : boolean {\n return isObject(obj) && Object.prototype.toString.call(obj) === '[object Object]';\n}\n\nexport function isPlainObject(obj : mixed) : boolean {\n if (!isObjectObject(obj)) {\n return false;\n }\n\n // $FlowFixMe\n let constructor = obj.constructor;\n\n if (typeof constructor !== 'function') {\n return false;\n }\n\n let prototype = constructor.prototype;\n\n if (!isObjectObject(prototype)) {\n return false;\n }\n\n if (!prototype.hasOwnProperty('isPrototypeOf')) {\n return false;\n }\n\n return true;\n}\n\nexport function replaceObject | Object> (item : T, replacer : (mixed, string | number, string) => mixed, fullKey : string = '') : T {\n\n if (Array.isArray(item)) {\n let length = item.length;\n let result : Array = [];\n\n for (let i = 0; i < length; i++) {\n\n \n defineLazyProp(result, i, () => {\n let itemKey = fullKey ? `${ fullKey }.${ i }` : `${ i }`;\n let el = item[i];\n\n let child = replacer(el, i, itemKey);\n\n if (isPlainObject(child) || Array.isArray(child)) {\n // $FlowFixMe\n child = replaceObject(child, replacer, itemKey);\n }\n\n return child;\n });\n }\n\n // $FlowFixMe\n return result;\n } else if (isPlainObject(item)) {\n let result = {};\n\n for (let key in item) {\n if (!item.hasOwnProperty(key)) {\n continue;\n }\n\n defineLazyProp(result, key, () => {\n let itemKey = fullKey ? `${ fullKey }.${ key }` : `${ key }`;\n // $FlowFixMe\n let el = item[key];\n\n let child = replacer(el, key, itemKey);\n\n if (isPlainObject(child) || Array.isArray(child)) {\n // $FlowFixMe\n child = replaceObject(child, replacer, itemKey);\n }\n\n return child;\n });\n }\n\n // $FlowFixMe\n return result;\n } else {\n throw new Error(`Pass an object or array`);\n }\n}\n\n\nexport function copyProp(source : Object, target : Object, name : string, def : mixed) {\n if (source.hasOwnProperty(name)) {\n let descriptor = Object.getOwnPropertyDescriptor(source, name);\n // $FlowFixMe\n Object.defineProperty(target, name, descriptor);\n\n } else {\n target[name] = def;\n }\n}\n\ntype RegexResultType = {\n text : string,\n groups : Array,\n start : number,\n end : number,\n length : number,\n replace : (text : string) => string\n};\n\nexport function regex(pattern : string | RegExp, string : string, start : number = 0) : ?RegexResultType {\n\n if (typeof pattern === 'string') {\n // eslint-disable-next-line security/detect-non-literal-regexp\n pattern = new RegExp(pattern);\n }\n\n let result = string.slice(start).match(pattern);\n\n if (!result) {\n return;\n }\n\n // $FlowFixMe\n let index : number = result.index;\n let regmatch = result[0];\n\n return {\n text: regmatch,\n groups: result.slice(1),\n start: start + index,\n end: start + index + regmatch.length,\n length: regmatch.length,\n\n replace(text : string) : string {\n\n if (!regmatch) {\n return '';\n }\n\n return `${ regmatch.slice(0, start + index) }${ text }${ regmatch.slice(index + regmatch.length) }`;\n }\n };\n}\n\nexport function regexAll(pattern : string | RegExp, string : string) : Array {\n\n let matches = [];\n let start = 0;\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n let regmatch = regex(pattern, string, start);\n\n if (!regmatch) {\n break;\n }\n\n matches.push(regmatch);\n start = match.end;\n }\n\n return matches;\n}\n\nexport function isDefined(value : ?mixed) : boolean {\n return value !== null && value !== undefined;\n}\n\nexport function cycle(method : Function) : ZalgoPromise {\n return ZalgoPromise.try(method).then(() => cycle(method));\n}\n\nexport function debounce(method : (...args : Array) => T, time : number = 100) : (...args : Array) => void {\n\n let timeout;\n\n const debounceWrapper = function() {\n clearTimeout(timeout);\n\n timeout = setTimeout(() => {\n return method.apply(this, arguments);\n }, time);\n };\n\n return setFunctionName(debounceWrapper, `${ getFunctionName(method) }::debounced`);\n}\n\nexport function isRegex(item : mixed) : boolean {\n return Object.prototype.toString.call(item) === '[object RegExp]';\n}\n\ntype FunctionProxy = (method : T) => T;\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport let weakMapMemoize : FunctionProxy<*> = (method : (arg : any) => R) : ((...args : Array) => R) => {\n\n let weakmap = new WeakMap();\n\n // eslint-disable-next-line flowtype/no-weak-types\n return function weakmapMemoized(arg : any) : R {\n return weakmap.getOrSet(arg, () => method.call(this, arg));\n };\n};\n\ntype FunctionPromiseProxy) => ZalgoPromise> = (T) => T;\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport let weakMapMemoizePromise : FunctionPromiseProxy<*, *> = (method : (arg : any) => ZalgoPromise) : ((...args : Array) => ZalgoPromise) => {\n\n let weakmap = new WeakMap();\n\n // eslint-disable-next-line flowtype/no-weak-types\n return function weakmapMemoizedPromise(arg : any) : ZalgoPromise {\n return weakmap.getOrSet(arg, () =>\n method.call(this, arg).finally(() => {\n weakmap.delete(arg);\n })\n );\n };\n};\n\nexport function getOrSet(obj : O, key : string, getter : () => T) : T {\n if (obj.hasOwnProperty(key)) {\n return obj[key];\n }\n\n const val = getter();\n obj[key] = val;\n return val;\n}\n\nexport type CleanupType = {|\n set : (string, T) => T, // eslint-disable-line no-undef\n register : (Function) => void,\n all : () => ZalgoPromise\n|};\n\nexport function cleanup(obj : Object) : CleanupType {\n\n const tasks = [];\n let cleaned = false;\n\n return {\n set(name : string, item : T) : T {\n if (!cleaned) {\n obj[name] = item;\n this.register(() => {\n delete obj[name];\n });\n }\n return item;\n },\n\n register(method : Function) {\n if (cleaned) {\n method();\n } else {\n tasks.push(once(method));\n }\n },\n\n all() : ZalgoPromise {\n const results = [];\n cleaned = true;\n\n while (tasks.length) {\n const task = tasks.pop();\n results.push(task());\n }\n\n return ZalgoPromise.all(results).then(noop);\n }\n };\n}\n\nexport function tryCatch(fn : () => T) : {| result : T, error : void |} | {| result : void, error : mixed |} {\n let result;\n let error;\n\n try {\n result = fn();\n } catch (err) {\n error = err;\n }\n \n // $FlowFixMe\n return { result, error };\n}\n\nexport function removeFromArray>(arr : T, item : X) {\n const index = arr.indexOf(item);\n if (index !== -1) {\n arr.splice(index, 1);\n }\n}\n\nexport function assertExists(name : string, thing : void | null | T) : T {\n if (thing === null || typeof thing === 'undefined') {\n throw new Error(`Expected ${ name } to be present`);\n }\n \n return thing;\n}\n \nexport function unique(arr : $ReadOnlyArray) : $ReadOnlyArray {\n const result = {};\n for (const item of arr) {\n // eslint-disable-next-line const-immutable/no-mutation\n result[item] = true;\n }\n return Object.keys(result);\n}\n","/* @flow */\n\nexport const KEY_CODES = {\n ENTER: 13\n};\n","/* @flow */\n/* eslint max-lines: off */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { linkFrameWindow, isWindowClosed,\n type SameDomainWindowType, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\n\nimport { inlineMemoize, noop, stringify, capitalizeFirstLetter,\n once, extend, safeInterval, uniqueID, arrayFrom } from './util';\nimport { isDevice } from './device';\nimport { KEY_CODES } from './constants';\nimport type { CancelableType } from './types';\n\ntype ElementRefType = string | HTMLElement;\n\nexport function isDocumentReady() : boolean {\n return Boolean(document.body) && document.readyState === 'complete';\n}\n\nexport function urlEncode(str : string) : string {\n return str.replace(/\\?/g, '%3F').replace(/&/g, '%26').replace(/#/g, '%23').replace(/\\+/g, '%2B');\n}\n\nexport function waitForWindowReady() : ZalgoPromise {\n return inlineMemoize(waitForWindowReady, () : ZalgoPromise => {\n return new ZalgoPromise(resolve => {\n if (isDocumentReady()) {\n resolve();\n }\n\n window.addEventListener('load', () => resolve());\n });\n });\n}\n\nexport function waitForDocumentReady() : ZalgoPromise {\n return inlineMemoize(waitForDocumentReady, () : ZalgoPromise => {\n return new ZalgoPromise(resolve => {\n\n if (isDocumentReady()) {\n return resolve();\n }\n\n let interval = setInterval(() => {\n if (isDocumentReady()) {\n clearInterval(interval);\n return resolve();\n }\n }, 10);\n });\n });\n}\n\nexport function waitForDocumentBody() : ZalgoPromise {\n return waitForDocumentReady().then(() => {\n if (document.body) {\n return document.body;\n }\n\n throw new Error('Document ready but document.body not present');\n });\n}\n\nexport function parseQuery(queryString : string) : Object {\n return inlineMemoize(parseQuery, () : Object => {\n let params = {};\n\n if (!queryString) {\n return params;\n }\n\n if (queryString.indexOf('=') === -1) {\n return params;\n }\n\n for (let pair of queryString.split('&')) {\n pair = pair.split('=');\n\n if (pair[0] && pair[1]) {\n params[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n }\n\n return params;\n }, [ queryString ]);\n}\n\n\nexport function getQueryParam(name : string) : string {\n return parseQuery(window.location.search.slice(1))[name];\n}\n\nexport function urlWillRedirectPage(url : string) : boolean {\n\n if (url.indexOf('#') === -1) {\n return true;\n }\n\n if (url.indexOf('#') === 0) {\n return false;\n }\n\n if (url.split('#')[0] === window.location.href.split('#')[0]) {\n return false;\n }\n\n return true;\n}\n\nexport function formatQuery(obj : { [ string ] : string } = {}) : string {\n\n return Object.keys(obj).filter(key => {\n return typeof obj[key] === 'string';\n }).map(key => {\n return `${ urlEncode(key) }=${ urlEncode(obj[key]) }`;\n }).join('&');\n}\n\nexport function extendQuery(originalQuery : string, props : { [ string ] : string } = {}) : string {\n\n if (!props || !Object.keys(props).length) {\n return originalQuery;\n }\n\n return formatQuery({\n ...parseQuery(originalQuery),\n ...props\n });\n}\n\nexport function extendUrl(url : string, options : { query? : { [string] : string }, hash? : { [string] : string } } = {}) : string {\n\n let query = options.query || {};\n let hash = options.hash || {};\n\n let originalUrl;\n let originalQuery;\n let originalHash;\n\n [ originalUrl, originalHash ] = url.split('#');\n [ originalUrl, originalQuery ] = originalUrl.split('?');\n\n let queryString = extendQuery(originalQuery, query);\n let hashString = extendQuery(originalHash, hash);\n\n if (queryString) {\n originalUrl = `${ originalUrl }?${ queryString }`;\n }\n\n if (hashString) {\n originalUrl = `${ originalUrl }#${ hashString }`;\n }\n\n return originalUrl;\n}\n\nexport function redirect(url : string, win : CrossDomainWindowType = window) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n win.location = url;\n if (!urlWillRedirectPage(url)) {\n resolve();\n }\n });\n}\n\nexport function hasMetaViewPort() : boolean {\n let meta = document.querySelector('meta[name=viewport]');\n\n if (isDevice() && window.screen.width < 660 && !meta) {\n return false;\n }\n\n return true;\n}\n\nexport function isElementVisible(el : HTMLElement) : boolean {\n return Boolean(el.offsetWidth || el.offsetHeight || el.getClientRects().length);\n}\n\nexport function enablePerformance() : boolean {\n return inlineMemoize(enablePerformance, () : boolean => {\n /* eslint-disable compat/compat */\n return Boolean(\n window.performance &&\n performance.now &&\n performance.timing &&\n performance.timing.connectEnd &&\n performance.timing.navigationStart &&\n (Math.abs(performance.now() - Date.now()) > 1000) &&\n (performance.now() - (performance.timing.connectEnd - performance.timing.navigationStart)) > 0\n );\n /* eslint-enable compat/compat */\n });\n}\n\nexport function getPageRenderTime() : ZalgoPromise {\n return waitForDocumentReady().then(() => {\n\n if (!enablePerformance()) {\n return;\n }\n\n let timing = window.performance.timing;\n\n if (timing.connectEnd && timing.domInteractive) {\n return timing.domInteractive - timing.connectEnd;\n }\n });\n}\n\nexport function htmlEncode(html : string = '') : string {\n return html.toString()\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(/\\//g, '/');\n}\n\nexport function isBrowser() : boolean {\n return (typeof window !== 'undefined');\n}\n\nexport function querySelectorAll(selector : string, doc : HTMLElement = window.document) : Array {\n return Array.prototype.slice.call(doc.querySelectorAll(selector));\n}\n\nexport function onClick(element : HTMLElement, handler : (Event) => void) {\n element.addEventListener('touchstart', noop);\n element.addEventListener('click', handler);\n element.addEventListener('keypress', (event : Event) => {\n // $FlowFixMe\n if (event.keyCode === KEY_CODES.ENTER) {\n return handler(event);\n }\n });\n}\n\nexport function getScript({ host = window.location.host, path } : { host? : string, path : string }) : ?HTMLScriptElement {\n return inlineMemoize(getScript, () : ?HTMLScriptElement => {\n\n let url = `${ host }${ path }`;\n let scripts = Array.prototype.slice.call(document.getElementsByTagName('script'));\n\n for (let script of scripts) {\n if (!script.src) {\n continue;\n }\n\n let src = script.src.replace(/^https?:\\/\\//, '').split('?')[0];\n\n if (src === url) {\n return script;\n }\n }\n }, [ path ]);\n}\n\nexport function isLocalStorageEnabled() : boolean {\n return inlineMemoize(isLocalStorageEnabled, () => {\n try {\n if (typeof window === 'undefined') {\n return false;\n }\n\n if (window.localStorage) {\n let value = Math.random().toString();\n window.localStorage.setItem('__test__localStorage__', value);\n let result = window.localStorage.getItem('__test__localStorage__');\n window.localStorage.removeItem('__test__localStorage__');\n if (value === result) {\n return true;\n }\n }\n } catch (err) {\n // pass\n }\n return false;\n });\n}\n\nexport function getBrowserLocales() : Array<{ country? : string, lang : string }> {\n let nav = window.navigator;\n\n let locales = nav.languages\n ? Array.prototype.slice.apply(nav.languages)\n : [];\n\n if (nav.language) {\n locales.push(nav.language);\n }\n\n if (nav.userLanguage) {\n locales.push(nav.userLanguage);\n }\n\n return locales.map(locale => {\n\n if (locale && locale.match(/^[a-z]{2}[-_][A-Z]{2}$/)) {\n let [ lang, country ] = locale.split(/[-_]/);\n return { country, lang };\n }\n\n if (locale && locale.match(/^[a-z]{2}$/)) {\n return { lang: locale };\n }\n\n return null;\n\n }).filter(Boolean);\n}\n\n\nexport function appendChild(container : HTMLElement, child : HTMLElement | Text) {\n container.appendChild(child);\n}\n\nexport function isElement(element : mixed) : boolean {\n\n if (element instanceof window.Element) {\n return true;\n }\n\n if (element !== null && typeof element === 'object' && element.nodeType === 1 && typeof element.style === 'object' && typeof element.ownerDocument === 'object') {\n return true;\n }\n\n return false;\n}\n\nexport function getElementSafe(id : ElementRefType, doc : Document | HTMLElement = document) : ?HTMLElement {\n\n if (isElement(id)) {\n // $FlowFixMe\n return id;\n }\n\n if (typeof id === 'string') {\n return doc.querySelector(id);\n }\n}\n\nexport function getElement(id : ElementRefType, doc : Document | HTMLElement = document) : HTMLElement {\n\n let element = getElementSafe(id, doc);\n\n if (element) {\n return element;\n }\n\n throw new Error(`Can not find element: ${ stringify(id) }`);\n}\n\nexport function elementReady(id : ElementRefType) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n let name = stringify(id);\n let el = getElementSafe(id);\n\n if (el) {\n return resolve(el);\n }\n\n if (isDocumentReady()) {\n return reject(new Error(`Document is ready and element ${ name } does not exist`));\n }\n\n let interval = setInterval(() => {\n\n el = getElementSafe(id);\n\n if (el) {\n clearInterval(interval);\n return resolve(el);\n }\n\n if (isDocumentReady()) {\n clearInterval(interval);\n return reject(new Error(`Document is ready and element ${ name } does not exist`));\n }\n }, 10);\n });\n}\n\nexport function PopupOpenError(message : string) {\n this.message = message;\n}\n\nPopupOpenError.prototype = Object.create(Error.prototype);\n\ntype PopupOptions = {|\n name? : string,\n width? : number,\n height? : number,\n top? : number,\n left? : number,\n status? : 0 | 1,\n resizable? : 0 | 1,\n toolbar? : 0 | 1,\n menubar? : 0 | 1,\n scrollbars? : 0 | 1\n|};\n\nexport function popup(url : string, options? : PopupOptions) : CrossDomainWindowType {\n\n // $FlowFixMe\n options = options || {};\n\n let { width, height } = options;\n\n let top = 0;\n let left = 0;\n\n if (width) {\n if (window.outerWidth) {\n left = Math.round((window.outerWidth - width) / 2) + window.screenX;\n } else if (window.screen.width) {\n left = Math.round((window.screen.width - width) / 2);\n }\n }\n\n if (height) {\n if (window.outerHeight) {\n top = Math.round((window.outerHeight - height) / 2) + window.screenY;\n } else if (window.screen.height) {\n top = Math.round((window.screen.height - height) / 2);\n }\n }\n\n if (width && height) {\n options = {\n top,\n left,\n width,\n height,\n status: 1,\n toolbar: 0,\n menubar: 0,\n resizable: 1,\n scrollbars: 1,\n ...options\n };\n }\n\n let name = options.name || '';\n delete options.name;\n\n // eslint-disable-next-line array-callback-return\n let params = Object.keys(options).map(key => {\n // $FlowFixMe\n if (options[key] !== null && options[key] !== undefined) {\n return `${ key }=${ stringify(options[key]) }`;\n }\n }).filter(Boolean).join(',');\n\n let win;\n\n try {\n win = window.open(url, name, params, true);\n } catch (err) {\n throw new PopupOpenError(`Can not open popup window - ${ err.stack || err.message }`);\n }\n\n if (isWindowClosed(win)) {\n let err = new PopupOpenError(`Can not open popup window - blocked`);\n throw err;\n }\n\n window.addEventListener('unload', () => win.close());\n\n return win;\n}\n\n\nexport function writeToWindow(win : SameDomainWindowType, html : string) {\n try {\n win.document.open();\n win.document.write(html);\n win.document.close();\n } catch (err) {\n try {\n win.location = `javascript: document.open(); document.write(${ JSON.stringify(html) }); document.close();`;\n } catch (err2) {\n // pass\n }\n }\n}\n\nexport function writeElementToWindow(win : SameDomainWindowType, el : HTMLElement) {\n\n let tag = el.tagName.toLowerCase();\n\n if (tag !== 'html') {\n throw new Error(`Expected element to be html, got ${ tag }`);\n }\n\n let documentElement = win.document.documentElement;\n\n for (const child of arrayFrom(documentElement.children)) {\n documentElement.removeChild(child);\n }\n\n for (const child of arrayFrom(el.children)) {\n documentElement.appendChild(child);\n }\n}\n\nexport function setStyle(el : HTMLElement, styleText : string, doc : Document = window.document) {\n // $FlowFixMe\n if (el.styleSheet) {\n // $FlowFixMe\n el.styleSheet.cssText = styleText;\n } else {\n el.appendChild(doc.createTextNode(styleText));\n }\n}\n\nexport type ElementOptionsType = {\n style? : { [ string ] : string },\n id? : string,\n class? : ?Array,\n attributes? : { [ string ] : string },\n styleSheet? : ?string,\n html? : ?string\n};\n\nlet awaitFrameLoadPromises : WeakMap>;\n\nexport function awaitFrameLoad(frame : HTMLIFrameElement) : ZalgoPromise {\n awaitFrameLoadPromises = awaitFrameLoadPromises || new WeakMap();\n\n if (awaitFrameLoadPromises.has(frame)) {\n let promise = awaitFrameLoadPromises.get(frame);\n if (promise) {\n return promise;\n }\n }\n\n let promise = new ZalgoPromise((resolve, reject) => {\n frame.addEventListener('load', () => {\n linkFrameWindow(frame);\n resolve(frame);\n });\n\n frame.addEventListener('error', (err : Event) => {\n if (frame.contentWindow) {\n resolve(frame);\n } else {\n reject(err);\n }\n });\n });\n\n awaitFrameLoadPromises.set(frame, promise);\n\n return promise;\n}\n\nexport function awaitFrameWindow(frame : HTMLIFrameElement) : ZalgoPromise {\n return awaitFrameLoad(frame).then(loadedFrame => {\n\n if (!loadedFrame.contentWindow) {\n throw new Error(`Could not find window in iframe`);\n }\n\n return loadedFrame.contentWindow;\n });\n}\n\nexport function createElement(tag : string = 'div', options : ElementOptionsType = {}, container : ?HTMLElement) : HTMLElement {\n\n tag = tag.toLowerCase();\n let element = document.createElement(tag);\n\n if (options.style) {\n extend(element.style, options.style);\n }\n\n if (options.class) {\n element.className = options.class.join(' ');\n }\n\n if (options.id) {\n element.setAttribute('id', options.id);\n }\n\n if (options.attributes) {\n for (let key of Object.keys(options.attributes)) {\n element.setAttribute(key, options.attributes[key]);\n }\n }\n\n if (options.styleSheet) {\n setStyle(element, options.styleSheet);\n }\n\n if (container) {\n appendChild(container, element);\n }\n\n if (options.html) {\n if (tag === 'iframe') {\n // $FlowFixMe\n if (!container || !element.contentWindow) {\n throw new Error(`Iframe html can not be written unless container provided and iframe in DOM`);\n }\n\n // $FlowFixMe\n writeToWindow(element.contentWindow, options.html);\n\n } else {\n element.innerHTML = options.html;\n }\n }\n\n return element;\n}\n\n\nexport type IframeElementOptionsType = {\n style? : { [ string ] : string },\n class? : ?Array,\n attributes? : { [ string ] : string },\n styleSheet? : ?string,\n html? : ?string,\n url? : ?string\n};\n\nexport function iframe(options : IframeElementOptionsType = {}, container : ?HTMLElement) : HTMLIFrameElement {\n\n let attributes = options.attributes || {};\n let style = options.style || {};\n\n let frame = createElement('iframe', {\n attributes: {\n allowTransparency: 'true',\n ...attributes\n },\n style: {\n backgroundColor: 'transparent',\n border: 'none',\n ...style\n },\n html: options.html,\n class: options.class\n });\n\n const isIE = window.navigator.userAgent.match(/MSIE|Edge/i);\n \n if (!frame.hasAttribute('id')) {\n frame.setAttribute('id', uniqueID());\n }\n\n // $FlowFixMe\n awaitFrameLoad(frame);\n\n if (container) {\n let el = getElement(container);\n el.appendChild(frame);\n }\n\n if (options.url || isIE) {\n frame.setAttribute('src', options.url || 'about:blank');\n }\n\n // $FlowFixMe\n return frame;\n}\n\nexport function addEventListener(obj : HTMLElement, event : string, handler : (event : Event) => void) : CancelableType {\n obj.addEventListener(event, handler);\n return {\n cancel() {\n obj.removeEventListener(event, handler);\n }\n };\n}\n\nexport function bindEvents(element : HTMLElement, eventNames : Array, handler : (event : Event) => void) : CancelableType {\n\n handler = once(handler);\n\n for (let eventName of eventNames) {\n element.addEventListener(eventName, handler);\n }\n\n return {\n cancel: once(() => {\n for (let eventName of eventNames) {\n element.removeEventListener(eventName, handler);\n }\n })\n };\n}\n\nconst VENDOR_PREFIXES = [ 'webkit', 'moz', 'ms', 'o' ];\n\nexport function setVendorCSS(element : HTMLElement, name : string, value : string) {\n\n // $FlowFixMe\n element.style[name] = value;\n\n let capitalizedName = capitalizeFirstLetter(name);\n\n for (let prefix of VENDOR_PREFIXES) {\n // $FlowFixMe\n element.style[`${ prefix }${ capitalizedName }`] = value;\n }\n}\n\nconst ANIMATION_START_EVENTS = [ 'animationstart', 'webkitAnimationStart', 'oAnimationStart', 'MSAnimationStart' ];\nconst ANIMATION_END_EVENTS = [ 'animationend', 'webkitAnimationEnd', 'oAnimationEnd', 'MSAnimationEnd' ];\n\nexport function animate(element : ElementRefType, name : string, clean : (Function) => void, timeout : number = 1000) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n let el = getElement(element);\n\n if (!el) {\n return resolve();\n }\n\n let hasStarted = false;\n\n let startTimeout;\n let endTimeout;\n let startEvent;\n let endEvent;\n\n function cleanUp() {\n clearTimeout(startTimeout);\n clearTimeout(endTimeout);\n startEvent.cancel();\n endEvent.cancel();\n }\n\n startEvent = bindEvents(el, ANIMATION_START_EVENTS, event => {\n\n // $FlowFixMe\n if (event.target !== el || event.animationName !== name) {\n return;\n }\n\n clearTimeout(startTimeout);\n\n event.stopPropagation();\n\n startEvent.cancel();\n hasStarted = true;\n\n endTimeout = setTimeout(() => {\n cleanUp();\n resolve();\n }, timeout);\n });\n\n endEvent = bindEvents(el, ANIMATION_END_EVENTS, event => {\n\n // $FlowFixMe\n if (event.target !== el || event.animationName !== name) {\n return;\n }\n\n cleanUp();\n\n // $FlowFixMe\n if (typeof event.animationName === 'string' && event.animationName !== name) {\n return reject(`Expected animation name to be ${ name }, found ${ event.animationName }`);\n }\n\n return resolve();\n });\n\n setVendorCSS(el, 'animationName', name);\n\n startTimeout = setTimeout(() => {\n if (!hasStarted) {\n cleanUp();\n return resolve();\n }\n }, 200);\n\n if (clean) {\n clean(cleanUp);\n }\n });\n}\n\nconst STYLE = {\n\n DISPLAY: {\n NONE: 'none',\n BLOCK: 'block'\n },\n\n VISIBILITY: {\n VISIBLE: 'visible',\n HIDDEN: 'hidden'\n },\n\n IMPORTANT: 'important'\n};\n\nexport function makeElementVisible(element : HTMLElement) {\n element.style.setProperty('visibility', '');\n}\n\nexport function makeElementInvisible(element : HTMLElement) {\n element.style.setProperty('visibility', STYLE.VISIBILITY.HIDDEN, STYLE.IMPORTANT);\n}\n\n\nexport function showElement(element : HTMLElement) {\n element.style.setProperty('display', '');\n}\n\nexport function hideElement(element : HTMLElement) {\n element.style.setProperty('display', STYLE.DISPLAY.NONE, STYLE.IMPORTANT);\n}\n\nexport function destroyElement(element : HTMLElement) {\n if (element && element.parentNode) {\n element.parentNode.removeChild(element);\n }\n}\n\nexport function showAndAnimate(element : HTMLElement, name : string, clean : (Function) => void) : ZalgoPromise {\n let animation = animate(element, name, clean);\n showElement(element);\n return animation;\n}\n\nexport function animateAndHide(element : HTMLElement, name : string, clean : (Function) => void) : ZalgoPromise {\n return animate(element, name, clean).then(() => {\n hideElement(element);\n });\n}\n\nexport function addClass(element : HTMLElement, name : string) {\n element.classList.add(name);\n}\n\nexport function removeClass(element : HTMLElement, name : string) {\n element.classList.remove(name);\n}\n\nexport function isElementClosed(el : HTMLElement) : boolean {\n if (!el || !el.parentNode) {\n return true;\n }\n return false;\n}\n\nexport function watchElementForClose(element : HTMLElement, handler : () => mixed) : CancelableType {\n handler = once(handler);\n\n let interval;\n\n if (isElementClosed(element)) {\n handler();\n } else {\n interval = safeInterval(() => {\n if (isElementClosed(element)) {\n interval.cancel();\n handler();\n }\n }, 50);\n }\n\n return {\n cancel() {\n if (interval) {\n interval.cancel();\n }\n }\n };\n}\n\nexport function fixScripts(el : HTMLElement, doc : Document = window.document) {\n for (let script of querySelectorAll('script', el)) {\n let parentNode = script.parentNode;\n\n if (!parentNode) {\n continue;\n }\n\n let newScript = doc.createElement('script');\n newScript.text = script.textContent;\n parentNode.replaceChild(newScript, script);\n }\n}\n\ntype OnResizeOptions = {|\n width? : boolean,\n height? : boolean,\n interval? : number,\n win? : SameDomainWindowType\n|};\n\nexport function onResize(el : HTMLElement, handler : ({ width : number, height : number }) => void, { width = true, height = true, interval = 100, win = window } : OnResizeOptions = {}) : {} {\n let currentWidth = el.offsetWidth;\n let currentHeight = el.offsetHeight;\n\n handler({ width: currentWidth, height: currentHeight });\n\n let check = () => {\n let newWidth = el.offsetWidth;\n let newHeight = el.offsetHeight;\n\n if ((width && newWidth !== currentWidth) || (height && newHeight !== currentHeight)) {\n handler({ width: newWidth, height: newHeight });\n }\n\n currentWidth = newWidth;\n currentHeight = newHeight;\n };\n\n let observer;\n let timeout;\n\n if (typeof win.ResizeObserver !== 'undefined') {\n observer = new win.ResizeObserver(check);\n observer.observe(el);\n\n } else if (typeof win.MutationObserver !== 'undefined') {\n observer = new win.MutationObserver(check);\n observer.observe(el, {\n attributes: true,\n childList: true,\n subtree: true,\n characterData: false\n });\n win.addEventListener('resize', check);\n } else {\n let loop = () => {\n check();\n timeout = setTimeout(loop, interval);\n };\n loop();\n }\n\n return {\n cancel: () => {\n observer.disconnect();\n window.removeEventListener('resize', check);\n clearTimeout(timeout);\n }\n };\n}\n\nexport function getResourceLoadTime(url : string) : ?number {\n\n if (!enablePerformance()) {\n return;\n }\n\n if (!window.performance || typeof window.performance.getEntries !== 'function') {\n return;\n }\n\n const entries = window.performance.getEntries();\n\n for (let i = 0; i < entries.length; i++) {\n const entry = entries[i];\n\n if (entry && entry.name && entry.name.indexOf(url) === 0 && typeof entry.duration === 'number') {\n return Math.floor(entry.duration);\n }\n }\n}\n","/* @flow */\n\nimport { uniqueID, getGlobal, inlineMemoize } from './util';\nimport { isLocalStorageEnabled } from './dom';\n\ntype Getter = (handler : (Object) => T) => T;\n\nexport type Storage = {\n getState : Getter<*>,\n getID : () => string,\n getSessionState : Getter<*>,\n getSessionID : () => string\n};\n\nconst DEFAULT_SESSION_STORAGE = 20 * 60 * 1000;\n\nexport function getStorage({ name, lifetime = DEFAULT_SESSION_STORAGE } : { name : string, lifetime? : number }) : Storage {\n return inlineMemoize(getStorage, () => {\n const STORAGE_KEY = `__${ name }_storage__`;\n\n let accessedStorage;\n\n function getState(handler : (storage : Object) => T) : T {\n\n let localStorageEnabled = isLocalStorageEnabled();\n let storage;\n\n if (accessedStorage) {\n storage = accessedStorage;\n }\n\n if (!storage && localStorageEnabled) {\n let rawStorage = window.localStorage.getItem(STORAGE_KEY);\n\n if (rawStorage) {\n storage = JSON.parse(rawStorage);\n }\n }\n\n if (!storage) {\n storage = getGlobal()[STORAGE_KEY];\n }\n\n if (!storage) {\n storage = {\n id: uniqueID()\n };\n }\n\n if (!storage.id) {\n storage.id = uniqueID();\n }\n\n accessedStorage = storage;\n\n let result = handler(storage);\n\n if (localStorageEnabled) {\n window.localStorage.setItem(STORAGE_KEY, JSON.stringify(storage));\n } else {\n getGlobal()[STORAGE_KEY] = storage;\n }\n\n accessedStorage = null;\n\n return result;\n }\n\n function getID() : string {\n return getState(storage => storage.id);\n }\n\n function getSession(handler : (state : Object) => T) : T {\n return getState(storage => {\n\n let session = storage.__session__;\n let now = Date.now();\n\n if (session && ((now - session.created) > lifetime)) {\n session = null;\n }\n\n if (!session) {\n session = {\n guid: uniqueID(),\n created: now\n };\n }\n\n storage.__session__ = session;\n\n return handler(session);\n });\n }\n\n function getSessionState(handler : (state : Object) => T) : T {\n return getSession(session => {\n session.state = session.state || {};\n return handler(session.state);\n });\n }\n\n function getSessionID() : string {\n return getSession(session => session.guid);\n }\n\n return {\n getState,\n getID,\n getSessionState,\n getSessionID\n };\n }, [ { name, lifetime } ]);\n}\n","/* @flow */\n\nimport { noop } from './util';\nimport { getStorage } from './storage';\n\nfunction getBelterExperimentStorage() : Object {\n return getStorage({ name: 'belter_experiment' });\n}\n\nfunction isEventUnique(name : string) : boolean {\n return getBelterExperimentStorage().getSessionState(state => {\n state.loggedBeacons = state.loggedBeacons || [];\n\n if (state.loggedBeacons.indexOf(name) === -1) {\n state.loggedBeacons.push(name);\n return true;\n }\n\n return false;\n });\n}\n\nexport type Experiment = {\n isEnabled : () => boolean,\n isDisabled : () => boolean,\n getTreatment : () => string,\n log : (string, payload? : { [string] : ?string }) => Experiment,\n logStart : (payload? : { [string] : ?string }) => Experiment,\n logComplete : (payload? : { [string] : ?string }) => Experiment\n};\n\nfunction getThrottlePercentile(name : string) : number {\n return getBelterExperimentStorage().getState(state => {\n state.throttlePercentiles = state.throttlePercentiles || {};\n state.throttlePercentiles[name] = state.throttlePercentiles[name] || Math.floor(Math.random() * 100);\n return state.throttlePercentiles[name];\n });\n}\n\nconst THROTTLE_GROUP = {\n TEST: 'test',\n CONTROL: 'control',\n THROTTLE: 'throttle'\n};\n\ntype ExperimentOptions = {\n name : string,\n sample? : number,\n logTreatment? : ({ name : string, treatment : string, payload : { [string] : ?string } }) => void,\n logCheckpoint? : ({ name : string, treatment : string, checkpoint : string, payload : { [string] : ?string } }) => void\n};\n\nexport function experiment({ name, sample = 50, logTreatment = noop, logCheckpoint = noop } : ExperimentOptions) : Experiment {\n\n let throttle = getThrottlePercentile(name);\n\n let group;\n\n if (throttle < sample) {\n group = THROTTLE_GROUP.TEST;\n } else if ((sample >= 50) || ((sample <= throttle) && (throttle < (sample * 2)))) {\n group = THROTTLE_GROUP.CONTROL;\n } else {\n group = THROTTLE_GROUP.THROTTLE;\n }\n\n let treatment = `${ name }_${ group }`;\n\n let started = false;\n let forced = false;\n\n try {\n if (window.localStorage && window.localStorage.getItem(name)) {\n forced = true;\n }\n } catch (err) {\n // pass\n }\n\n return {\n\n isEnabled() : boolean {\n return (group === THROTTLE_GROUP.TEST) || forced;\n },\n\n isDisabled() : boolean {\n return (group !== THROTTLE_GROUP.TEST) && !forced;\n },\n\n getTreatment() : string {\n return treatment;\n },\n\n log(checkpoint : string, payload? : { [string] : ?string } = {}) : Experiment {\n if (!started) {\n return this;\n }\n\n if (isEventUnique(`${ name }_${ treatment }_${ JSON.stringify(payload) }`)) {\n logTreatment({ name, treatment, payload });\n }\n\n if (isEventUnique(`${ name }_${ treatment }_${ checkpoint }_${ JSON.stringify(payload) }`)) {\n logCheckpoint({ name, treatment, checkpoint, payload });\n }\n\n return this;\n },\n\n logStart(payload? : { [string] : ?string } = {}) : Experiment {\n started = true;\n return this.log(`start`, payload);\n },\n\n logComplete(payload? : { [string] : ?string } = {}) : Experiment {\n return this.log(`complete`, payload);\n }\n };\n}\n","/* @flow */\n\nimport { getGlobal } from './util';\n\nexport function getGlobalNameSpace({ name, version = 'latest' } : { name : string, version? : string }) : { get : (string, defValue? : T) => T } {\n\n let global = getGlobal();\n let globalKey = `__${ name }__${ version }_global__`;\n\n let namespace = global[globalKey] = global[globalKey] || {};\n\n return {\n get: (key : string, defValue? : T) : T => {\n // $FlowFixMe\n defValue = defValue || {};\n let item = namespace[key] = namespace[key] || defValue;\n return item;\n }\n };\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { type SameDomainWindowType } from 'cross-domain-utils/src';\n\ntype RequestOptionsType = {\n url : string,\n method? : string,\n headers? : { [key : string] : string },\n json? : $ReadOnlyArray | Object,\n data? : { [key : string] : string },\n body? : string,\n win? : SameDomainWindowType,\n timeout? : number\n};\n\ntype ResponseType = {\n status : number,\n headers : { [string] : string },\n body : Object\n};\n\nconst HEADERS = {\n CONTENT_TYPE: 'content-type',\n ACCEPT: 'accept'\n};\n\nlet headerBuilders = [];\n\nfunction parseHeaders(rawHeaders : string = '') : { [string] : string } {\n let result = {};\n for (let line of rawHeaders.trim().split('\\n')) {\n let [ key, ...values ] = line.split(':');\n result[key.toLowerCase()] = values.join(':').trim();\n }\n return result;\n}\n\nexport function request({ url, method = 'get', headers = {}, json, data, body, win = window, timeout = 0 } : RequestOptionsType) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n if ((json && data) || (json && body) || (data && json)) {\n throw new Error(`Only options.json or options.data or options.body should be passed`);\n }\n\n let normalizedHeaders = {};\n\n for (let key of Object.keys(headers)) {\n normalizedHeaders[key.toLowerCase()] = headers[key];\n }\n\n if (json) {\n normalizedHeaders[HEADERS.CONTENT_TYPE] = normalizedHeaders[HEADERS.CONTENT_TYPE] || 'application/json';\n } else if (data || body) {\n normalizedHeaders[HEADERS.CONTENT_TYPE] = normalizedHeaders[HEADERS.CONTENT_TYPE] || 'application/x-www-form-urlencoded; charset=utf-8';\n }\n\n normalizedHeaders[HEADERS.ACCEPT] = normalizedHeaders[HEADERS.ACCEPT] || 'application/json';\n\n for (let headerBuilder of headerBuilders) {\n let builtHeaders = headerBuilder();\n\n for (let key of Object.keys(builtHeaders)) {\n normalizedHeaders[key.toLowerCase()] = builtHeaders[key];\n }\n }\n\n let xhr = new win.XMLHttpRequest();\n\n xhr.addEventListener('load', function xhrLoad() : void {\n\n let responseHeaders = parseHeaders(this.getAllResponseHeaders());\n\n if (!this.status) {\n return reject(new Error(`Request to ${ method.toLowerCase() } ${ url } failed: no response status code.`));\n }\n \n let contentType = responseHeaders['content-type'];\n let isJSON = contentType && (contentType.indexOf('application/json') === 0 || contentType.indexOf('text/json') === 0);\n let responseBody = this.responseText;\n\n try {\n responseBody = JSON.parse(responseBody);\n } catch (err) {\n if (isJSON) {\n return reject(new Error(`Invalid json: ${ this.responseText }.`));\n }\n }\n\n let res = {\n status: this.status,\n headers: responseHeaders,\n body: responseBody\n };\n\n return resolve(res);\n\n }, false);\n\n xhr.addEventListener('error', (evt) => {\n reject(new Error(`Request to ${ method.toLowerCase() } ${ url } failed: ${ evt.toString() }.`));\n }, false);\n\n xhr.open(method, url, true);\n\n for (let key in normalizedHeaders) {\n if (normalizedHeaders.hasOwnProperty(key)) {\n xhr.setRequestHeader(key, normalizedHeaders[key]);\n }\n }\n\n if (json) {\n body = JSON.stringify(json);\n } else if (data) {\n body = Object.keys(data).map(key => {\n return `${ encodeURIComponent(key) }=${ data ? encodeURIComponent(data[key]) : '' }`;\n }).join('&');\n }\n\n xhr.timeout = timeout;\n xhr.ontimeout = function xhrTimeout() {\n reject(new Error(`Request to ${ method.toLowerCase() } ${ url } has timed out`));\n };\n\n xhr.send(body);\n });\n}\n\nexport function addHeaderBuilder(method : () => { [string] : string }) {\n headerBuilders.push(method);\n}\n","/* @flow */\n\n// export something to force webpack to see this as an ES module\nexport const TYPES = true;\n\ndeclare var __TEST__ : boolean;\n\nexport type JSONPrimitive = string | boolean | number;\nexport type JSONObject = { [string] : JSONPrimitive | JSONObject } | Array;\nexport type JSONType = JSONObject | JSONPrimitive;\n\nexport type CancelableType = {\n cancel : () => void\n};\n","/* @flow */\n\nimport { memoize, promisify } from './util';\n\nexport function memoized(target : Object, name : string, descriptor : Object) {\n descriptor.value = memoize(descriptor.value, { name, thisNamespace: true });\n}\n\nexport function promise(target : Object, name : string, descriptor : Object) {\n descriptor.value = promisify(descriptor.value, { name });\n}\n","/* @flow */\n\nexport function isPerc(str : string) : boolean {\n return typeof str === 'string' && (/^[0-9]+%$/).test(str);\n}\n\nexport function isPx(str : string) : boolean {\n return typeof str === 'string' && (/^[0-9]+px$/).test(str);\n}\n\nexport function toNum(val : string | number) : number {\n\n if (typeof val === 'number') {\n return val;\n }\n\n let match = val.match(/^([0-9]+)(px|%)$/);\n\n if (!match) {\n throw new Error(`Could not match css value from ${ val }`);\n }\n\n return parseInt(match[1], 10);\n}\n\nexport function toPx(val : number | string) : string {\n return `${ toNum(val) }px`;\n}\n\nexport function toCSS(val : number | string) : string {\n\n if (typeof val === 'number') {\n return toPx(val);\n }\n\n return isPerc(val) ? val : toPx(val);\n}\n\nexport function percOf(num : number, perc : string) : number {\n return parseInt(num * toNum(perc) / 100, 10);\n}\n\nexport function normalizeDimension(dim : string | number, max : number) : number {\n if (typeof dim === 'number') {\n return dim;\n } else if (isPerc(dim)) {\n return percOf(max, dim);\n } else if (isPx(dim)) {\n return toNum(dim);\n } else {\n throw new Error(`Can not normalize dimension: ${ dim }`);\n }\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { noop, tryCatch, removeFromArray } from './util';\n\ntype Prom = Promise | ZalgoPromise; // eslint-disable-line no-restricted-globals, promise/no-native\n\ntype Handler = >(name : string, fn? : (...args : A) => T) => (...args : A) => T; // eslint-disable-line no-undef\ntype Wrapper = ({ expect : Handler, avoid : Handler, expectError : Handler, error : Handler }) => (Prom | void);\n\nexport function wrapPromise(method : Wrapper, { timeout = 5000 } : { timeout? : number } = {}) : ZalgoPromise {\n let expected : Array = [];\n let promises : Array> = [];\n\n let timer = setTimeout(() => {\n if (expected.length) {\n promises.push(ZalgoPromise.asyncReject(new Error(`Expected ${ expected[0] } to be called`)));\n }\n }, timeout);\n\n let expect : Handler = (name, fn = noop) => {\n expected.push(name);\n \n // $FlowFixMe\n return function expectWrapper(...args) : * {\n removeFromArray(expected, name);\n\n // $FlowFixMe\n let { result, error } = tryCatch(() => fn.call(this, ...args));\n\n if (error) {\n promises.push(ZalgoPromise.asyncReject(error));\n throw error;\n }\n\n promises.push(ZalgoPromise.resolve(result));\n return result;\n };\n };\n\n let avoid : Handler = (name : string, fn = noop) => {\n\n // $FlowFixMe\n return function avoidWrapper(...args) : * {\n promises.push(ZalgoPromise.asyncReject(new Error(`Expected ${ name } to not be called`)));\n // $FlowFixMe\n return fn.call(this, ...args);\n };\n };\n\n let expectError : Handler = (name, fn = noop) => {\n expected.push(name);\n\n // $FlowFixMe\n return function expectErrorWrapper(...args) : * {\n removeFromArray(expected, name);\n\n // $FlowFixMe\n let { result, error } = tryCatch(() => fn.call(this, ...args));\n\n if (error) {\n throw error;\n }\n\n promises.push(ZalgoPromise.resolve(result).then(() => {\n throw new Error(`Expected ${ name } to throw an error`);\n }, noop));\n return result;\n };\n };\n\n promises.push(ZalgoPromise.try(() => method({ expect, avoid, expectError, error: avoid })));\n\n let drain = () => {\n return ZalgoPromise.try(() => {\n if (promises.length) {\n return promises.pop();\n }\n }).then(() => {\n if (promises.length) {\n return drain();\n }\n if (expected.length) {\n return ZalgoPromise.delay(10).then(drain);\n }\n });\n };\n\n return drain().then(() => {\n clearTimeout(timer);\n });\n}\n","/* @flow */\n\nexport * from './device';\nexport * from './dom';\nexport * from './experiment';\nexport * from './global';\nexport * from './storage';\nexport * from './util';\nexport * from './http';\nexport * from './types';\nexport * from './decorators';\nexport * from './css';\nexport * from './test';\n","/* @flow */\n\nexport function hasNativeWeakMap() : boolean {\n\n if (typeof WeakMap === 'undefined') {\n return false;\n }\n\n if (typeof Object.freeze === 'undefined') {\n return false;\n }\n\n try {\n\n let testWeakMap = new WeakMap();\n let testKey = {};\n let testValue = '__testvalue__';\n\n Object.freeze(testKey);\n\n testWeakMap.set(testKey, testValue);\n\n if (testWeakMap.get(testKey) === testValue) {\n return true;\n }\n\n return false;\n\n } catch (err) {\n\n return false;\n }\n}\n","/* @flow */\n\nexport function safeIndexOf(collection : Array, item : T) : number {\n for (let i = 0; i < collection.length; i++) {\n\n try {\n if (collection[i] === item) {\n return i;\n }\n } catch (err) {\n // pass\n }\n }\n\n return -1;\n}\n\n// eslint-disable-next-line no-unused-vars\nexport function noop(...args : Array) {\n // pass\n}\n","/* @flow */\n\nimport { isWindow, isWindowClosed } from 'cross-domain-utils/src';\n\nimport { hasNativeWeakMap } from './native';\nimport { noop, safeIndexOf } from './util';\n\nexport class CrossDomainSafeWeakMap {\n\n name : string\n weakmap : ?WeakMap\n keys : Array\n values : Array\n\n constructor() {\n // eslint-disable-next-line no-bitwise\n this.name = `__weakmap_${ Math.random() * 1e9 >>> 0 }__`;\n\n if (hasNativeWeakMap()) {\n try {\n this.weakmap = new WeakMap();\n } catch (err) {\n // pass\n }\n }\n\n this.keys = [];\n this.values = [];\n }\n\n _cleanupClosedWindows() {\n\n let weakmap = this.weakmap;\n let keys = this.keys;\n\n for (let i = 0; i < keys.length; i++) {\n let value = keys[i];\n\n if (isWindow(value) && isWindowClosed(value)) {\n\n if (weakmap) {\n try {\n weakmap.delete(value);\n } catch (err) {\n // pass\n }\n }\n\n keys.splice(i, 1);\n this.values.splice(i, 1);\n\n i -= 1;\n }\n }\n }\n\n isSafeToReadWrite(key : K) : boolean {\n\n if (isWindow(key)) {\n return false;\n }\n\n try {\n noop(key && key.self);\n noop(key && key[this.name]);\n } catch (err) {\n return false;\n }\n\n return true;\n }\n\n set(key : K, value : V) {\n\n if (!key) {\n throw new Error(`WeakMap expected key`);\n }\n\n let weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n weakmap.set(key, value);\n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (this.isSafeToReadWrite(key)) {\n try {\n let name = this.name;\n let entry = key[name];\n\n if (entry && entry[0] === key) {\n entry[1] = value;\n } else {\n Object.defineProperty(key, name, {\n value: [ key, value ],\n writable: true\n });\n }\n\n return;\n\n } catch (err) {\n // pass\n }\n }\n\n this._cleanupClosedWindows();\n\n let keys = this.keys;\n let values = this.values;\n let index = safeIndexOf(keys, key);\n\n if (index === -1) {\n keys.push(key);\n values.push(value);\n } else {\n values[index] = value;\n }\n }\n\n get(key : K) : V | void {\n\n if (!key) {\n throw new Error(`WeakMap expected key`);\n }\n\n let weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n if (weakmap.has(key)) {\n return weakmap.get(key);\n }\n \n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (this.isSafeToReadWrite(key)) {\n try {\n let entry = key[this.name];\n\n if (entry && entry[0] === key) {\n return entry[1];\n }\n\n return;\n } catch (err) {\n // pass\n }\n }\n\n this._cleanupClosedWindows();\n\n let keys = this.keys;\n let index = safeIndexOf(keys, key);\n\n if (index === -1) {\n return;\n }\n\n return this.values[index];\n }\n\n delete(key : K) {\n\n if (!key) {\n throw new Error(`WeakMap expected key`);\n }\n\n let weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n weakmap.delete(key);\n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (this.isSafeToReadWrite(key)) {\n try {\n let entry = key[this.name];\n\n if (entry && entry[0] === key) {\n entry[0] = entry[1] = undefined;\n }\n } catch (err) {\n // pass\n }\n }\n\n this._cleanupClosedWindows();\n\n let keys = this.keys;\n let index = safeIndexOf(keys, key);\n\n if (index !== -1) {\n keys.splice(index, 1);\n this.values.splice(index, 1);\n }\n }\n\n has(key : K) : boolean {\n\n if (!key) {\n throw new Error(`WeakMap expected key`);\n }\n\n let weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n if (weakmap.has(key)) {\n return true;\n }\n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (this.isSafeToReadWrite(key)) {\n try {\n let entry = key[this.name];\n\n if (entry && entry[0] === key) {\n return true;\n }\n\n return false;\n } catch (err) {\n // pass\n }\n }\n\n this._cleanupClosedWindows();\n\n let index = safeIndexOf(this.keys, key);\n return index !== -1;\n }\n\n getOrSet(key : K, getter : () => V) : V {\n if (this.has(key)) {\n // $FlowFixMe\n return this.get(key);\n }\n\n let value = getter();\n this.set(key, value);\n return value;\n }\n}\n","/* @flow */\n\nexport { CrossDomainSafeWeakMap as WeakMap } from './weakmap';\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst P24_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#d03238',\n secondary: '#b3b1b1'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#d03238',\n secondary: '#b3b1b1'\n }\n};\n\nexport function p24Logo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!P24_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } p24 logo available`);\n }\n\n const { primary, secondary } = P24_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst SOFORT_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#2C2E2F',\n secondary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#EB6F93',\n secondary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#EB6F93',\n secondary: '#FFFFFF'\n }\n};\n\nexport function sofortLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!SOFORT_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } sofort logo available`);\n }\n\n const { primary, secondary } = SOFORT_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst IDEAL_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff',\n tertiary: '#2C2E2F'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#000000',\n secondary: '#FFFFFF',\n tertiary: '#CD0067'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#000000',\n secondary: '#FFFFFF',\n tertiary: '#CD0067'\n }\n};\n\nexport function idealLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!IDEAL_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } ideal logo available`);\n }\n\n const { primary, secondary, tertiary } = IDEAL_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst GIROPAY_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#000000',\n tertiary: '#2C2E2F'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#FFFFFF',\n secondary: '#003A7D',\n tertiary: '#ED1C24'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#FFFFFF',\n secondary: '#003A7D',\n tertiary: '#ED1C24'\n }\n};\n\nexport function giropayLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!GIROPAY_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } giropay logo available`);\n }\n\n const { primary, secondary, tertiary } = GIROPAY_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst EPS_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff',\n tertiary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#71706F',\n secondary: '#FFFFFF',\n tertiary: '#C8036F'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#71706F',\n secondary: '#FFFFFF',\n tertiary: '#C8036F'\n }\n};\n\nexport function epsLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!EPS_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } eps logo available`);\n }\n\n const { primary, secondary, tertiary } = EPS_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst MYBANK_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff',\n tertiary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#1A4B67',\n secondary: '#00C0EE',\n tertiary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#1A4B67',\n secondary: '#00C0EE',\n tertiary: '#FFFFFF'\n }\n};\n\nexport function mybankLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!MYBANK_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } mybank logo available`);\n }\n\n const { primary, secondary, tertiary } = MYBANK_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst BANCONTACT_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#1A4B67',\n secondary: '#00C0EE'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#005498',\n secondary: '#FFD800'\n }\n};\n\nexport function bancontactLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!BANCONTACT_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } bancontact logo available`);\n }\n\n const { primary, secondary } = BANCONTACT_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst PAYU_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.DEFAULT ]: {\n primary: '#A6d71c',\n secondary: '#3C932A',\n tertiary: '#6CC62E',\n quaternary: '#278D30'\n },\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#FFFFFF',\n secondary: '#FFFFFF',\n tertiary: '#000000',\n quaternary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#A6d71c',\n secondary: '#3C932A',\n tertiary: '#6CC62E',\n quaternary: '#278D30'\n }\n};\n\nexport function payuLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!PAYU_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } payu logo available`);\n }\n\n const { primary, secondary, tertiary, quaternary } = PAYU_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst VERKKOPANKKI_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#FFFFFF',\n secondary: '#FFFFFF',\n tertiary: '#000000',\n quaternary: '#000000',\n quinary: '#FFFFFF',\n senary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#FFFFFF',\n secondary: '#CACCC8',\n tertiary: '#2D59A1',\n quaternary: '#1F3364',\n quinary: '#4E4E4E',\n senary: '#1B4482'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#FFFFFF',\n secondary: '#CACCC8',\n tertiary: '#2D59A1',\n quaternary: '#1F3364',\n quinary: '#4E4E4E',\n senary: '#1B4482'\n }\n};\n\nexport function verkkopankkiLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!VERKKOPANKKI_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } verkkopankki logo available`);\n }\n\n const { primary, secondary, tertiary, quaternary, quinary, senary } = VERKKOPANKKI_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst BLIK_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#FFFFFF',\n secondary: '#FFFFFF',\n tertiary: '#000000',\n quaternary: '#000000',\n quinary: '#000000',\n senary: '#000000'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#4D4D4F',\n secondary: '#000000',\n tertiary: '#FF0000',\n quaternary: '#E83E49',\n quinary: '#FF00FF',\n senary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#4D4D4F',\n secondary: '#000000',\n tertiary: '#FF0000',\n quaternary: '#E83E49',\n quinary: '#FF00FF',\n senary: '#FFFFFF'\n }\n};\n\nexport function blikLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!BLIK_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } blik logo available`);\n }\n\n const { primary, secondary, tertiary, quaternary, quinary, senary } = BLIK_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst TRUSTLY_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#FFFFFF',\n secondary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#020202',\n secondary: '#64CC07'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#020202',\n secondary: '#64CC07'\n }\n};\n\nexport function trustlyLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!TRUSTLY_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } trustly logo available`);\n }\n\n const { primary, secondary } = TRUSTLY_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst MAXIMA_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#004A91',\n secondary: '#ED1921'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#004A91',\n secondary: '#ED1921'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#004A91',\n secondary: '#ED1921'\n }\n};\n\nexport function maximaLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!MAXIMA_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } maxima logo available`);\n }\n\n const { primary, secondary } = MAXIMA_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst BOLETO_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#1A1919',\n secondary: '#FFFFFE'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#1A1919',\n secondary: '#FFFFFE'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#1A1919',\n secondary: '#FFFFFE'\n }\n};\n\nexport function boletoLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!BOLETO_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } boleto logo available`);\n }\n\n const { primary, secondary } = BOLETO_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst OXXO_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#EC1D24',\n secondary: '#EDA42D'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#EC1D24',\n secondary: '#EDA42D'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#EC1D24',\n secondary: '#EDA42D'\n }\n};\n\nexport function oxxoLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!OXXO_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } oxxo logo available`);\n }\n\n const { primary, secondary } = OXXO_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst PAYPAL_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.BLUE ]: {\n primary: '#003087',\n secondary: '#009cde'\n },\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#333030',\n secondary: '#636363'\n }\n};\n\nexport function paypalLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!PAYPAL_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } paypal logo available`);\n }\n\n const { primary, secondary } = PAYPAL_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n );\n}\n","\n/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR, COUNTRY } from '../../constants';\nimport type { LocaleType } from '../../types';\n\nconst CREDIT_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.BLUE ]: {\n primary: '#003087',\n secondary: '#009cde'\n },\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#333030',\n secondary: '#636363'\n }\n};\n\nexport function creditLogo({ logoColor, locale } : { logoColor : $Values, locale? : LocaleType }) : JsxHTMLNode {\n\n if (!CREDIT_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } credit logo available`);\n }\n\n const { country } = locale || {};\n const { primary } = CREDIT_LOGO_COLORS[logoColor];\n\n switch (country) {\n case COUNTRY.DE:\n return (\n \n \n \n \n \n \n \n );\n default:\n return (\n \n \n \n \n \n \n \n \n );\n\n }\n}\n","/* @flow */\n\nimport { BUTTON_LOGO, BUTTON_LOGO_COLOR } from '../../constants';\n\nimport { p24Logo } from './p24';\nimport { sofortLogo } from './sofort';\nimport { idealLogo } from './ideal';\nimport { giropayLogo } from './giropay';\nimport { epsLogo } from './eps';\nimport { mybankLogo } from './mybank';\nimport { bancontactLogo } from './bancontact';\nimport { payuLogo } from './payu';\nimport { verkkopankkiLogo } from './verkkopankki';\nimport { blikLogo } from './blik';\nimport { trustlyLogo } from './trustly';\nimport { maximaLogo } from './maxima';\nimport { boletoLogo } from './boleto';\nimport { oxxoLogo } from './oxxo';\nimport pp_white from './pp_white.svg';\nimport pp_blue from './pp_blue.svg';\nimport pp_black from './pp_black.svg';\nimport { paypalLogo } from './paypal';\nimport { creditLogo } from './credit';\nimport venmo_white from './venmo_white.svg';\nimport itau from './itau.svg';\nimport venmo_blue from './venmo_blue.svg';\nimport elv from './elv.svg';\nimport elv_white from './elv_white.svg';\n\nexport const fundingLogos = {\n\n [ BUTTON_LOGO.PP ]: {\n [ BUTTON_LOGO_COLOR.WHITE ]: pp_white,\n [ BUTTON_LOGO_COLOR.BLUE ]: pp_blue,\n [ BUTTON_LOGO_COLOR.BLACK ]: pp_black\n },\n\n [ BUTTON_LOGO.PAYPAL ]: paypalLogo,\n\n [ BUTTON_LOGO.CREDIT ]: creditLogo,\n\n [ BUTTON_LOGO.VENMO ]: {\n [ BUTTON_LOGO_COLOR.WHITE ]: venmo_white,\n [ BUTTON_LOGO_COLOR.BLUE ]: venmo_blue\n },\n [ BUTTON_LOGO.ITAU ]: {\n [ BUTTON_LOGO_COLOR.WHITE ]: itau\n },\n\n [ BUTTON_LOGO.IDEAL ]: idealLogo,\n\n [ BUTTON_LOGO.ELV ]: {\n [ BUTTON_LOGO_COLOR.ANY ]: elv,\n [ BUTTON_LOGO_COLOR.WHITE ]: elv_white\n },\n\n [ BUTTON_LOGO.BANCONTACT ]: bancontactLogo,\n\n [ BUTTON_LOGO.GIROPAY ]: giropayLogo,\n\n [ BUTTON_LOGO.SOFORT ]: sofortLogo,\n\n [ BUTTON_LOGO.EPS ]: epsLogo,\n\n [ BUTTON_LOGO.MYBANK ]: mybankLogo,\n\n [ BUTTON_LOGO.P24 ]: p24Logo,\n\n [ BUTTON_LOGO.PAYU ]: payuLogo,\n\n [ BUTTON_LOGO.VERKKOPANKKI ]: verkkopankkiLogo,\n\n [ BUTTON_LOGO.BLIK ]: blikLogo,\n\n [ BUTTON_LOGO.TRUSTLY ]: trustlyLogo,\n\n [ BUTTON_LOGO.MAXIMA ]: maximaLogo,\n\n [ BUTTON_LOGO.BOLETO ]: boletoLogo,\n\n [ BUTTON_LOGO.OXXO ]: oxxoLogo\n\n};\n","/* @flow */\n\nimport { CARD } from '../../constants';\n\nimport visa from './visa.svg';\nimport amex from './amex.svg';\nimport mastercard from './mastercard.svg';\nimport maestro from './maestro.svg';\nimport discover from './discover.svg';\nimport hiper from './hiper.svg';\nimport elo from './elo.svg';\nimport jcb from './jcb.svg';\nimport cup from './cup.svg';\n\nexport const cardLogos = {\n [ CARD.VISA ]: visa,\n [ CARD.AMEX ]: amex,\n [ CARD.MASTERCARD ]: mastercard,\n [ CARD.MAESTRO ]: maestro,\n [ CARD.DISCOVER ]: discover,\n [ CARD.HIPER ]: hiper,\n [ CARD.ELO ]: elo,\n [ CARD.JCB ]: jcb,\n [ CARD.CUP ]: cup\n};\n","/* @flow */\n\nexport * from './fundingLogos';\nexport * from './cardLogos';\n","/* @flow */\n\nimport { config } from '../config';\n\nimport { uniqueID, isLocalStorageEnabled } from './util';\nimport { getQueryParam } from './dom';\nimport { isPayPalDomain } from './security';\n\nconst LOCAL_STORAGE_KEY = '__paypal_storage__';\nconst SESSION_KEY = '__paypal_session__';\nconst GLOBAL_KEY = '__paypal_global__';\n\nlet accessedStorage;\n\nexport function getStorageState(handler : (storage : Object) => T) : T {\n\n const localStorageEnabled = isLocalStorageEnabled();\n let storage;\n\n if (accessedStorage) {\n storage = accessedStorage;\n }\n\n if (!storage && localStorageEnabled) {\n const rawStorage = window.localStorage.getItem(LOCAL_STORAGE_KEY);\n\n if (rawStorage) {\n storage = JSON.parse(rawStorage);\n }\n }\n\n if (!storage) {\n storage = window[LOCAL_STORAGE_KEY];\n }\n\n if (!storage) {\n storage = {\n id: uniqueID()\n };\n }\n\n if (!storage.id) {\n storage.id = uniqueID();\n }\n\n accessedStorage = storage;\n\n const result = handler(storage);\n\n if (localStorageEnabled) {\n window.localStorage.setItem(LOCAL_STORAGE_KEY, JSON.stringify(storage));\n } else {\n window[LOCAL_STORAGE_KEY] = storage;\n }\n\n accessedStorage = null;\n\n return result;\n}\n\nexport function getStorageID() : string {\n return getStorageState(storage => storage.id);\n}\n\nexport function getSession(handler : (state : Object) => T) : T {\n return getStorageState(storage => {\n\n let session = storage[SESSION_KEY];\n const now = Date.now();\n\n if (session && ((now - session.created) > config.session_uid_lifetime)) {\n session = null;\n }\n\n if (!session) {\n session = {\n guid: uniqueID(),\n created: now\n };\n }\n\n storage[SESSION_KEY] = session;\n\n return handler(session);\n });\n}\n\nexport function getSessionState(handler : (state : Object) => T) : T {\n return getSession(session => {\n session.state = session.state || {};\n return handler(session.state);\n });\n}\n\nexport function getSessionID() : string {\n\n const xprops = window.xprops;\n\n if (xprops && xprops.sessionID) {\n return xprops.sessionID;\n }\n\n const querySessionID = getQueryParam('sessionID');\n\n if (isPayPalDomain() && querySessionID) {\n return querySessionID;\n }\n\n return getSession(session => session.guid);\n}\n\nexport function getButtonSessionID() : ?string {\n\n if (window.xprops && window.xprops.buttonSessionID) {\n return window.xprops.buttonSessionID;\n }\n\n const querySessionID = getQueryParam('buttonSessionID');\n\n if (isPayPalDomain() && querySessionID) {\n return querySessionID;\n }\n}\n\nexport function getGlobalState(handler : (state : Object) => T) : T {\n window[GLOBAL_KEY] = window[GLOBAL_KEY] || {};\n return handler(window[GLOBAL_KEY]);\n}\n","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object.keys(descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object.defineProperty(target, property, desc);\n desc = null;\n }\n\n return desc;\n}","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { on } from 'post-robot/src';\nimport { type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { copyProp, eventEmitter, type EventEmitterType, stringifyError, noop } from '../lib';\nimport type { CancelableType } from '../types';\n\nimport type { Component } from './component';\n\ntype CleanupType = {\n set : (string, T) => T, // eslint-disable-line no-undef\n register : (string | Function, ?Function) => void,\n hasTasks : () => boolean,\n all : () => ZalgoPromise,\n run : (string) => ZalgoPromise\n};\n\nfunction cleanup(obj : Object) : CleanupType {\n\n let tasks = [];\n let cleaned = false;\n\n return {\n\n set(name : string, item : T) : T {\n\n if (cleaned) {\n return item;\n }\n\n obj[name] = item;\n this.register(() => {\n delete obj[name];\n });\n return item;\n },\n\n register(name : string | Function, method : ?Function) {\n\n if (typeof name === 'function') {\n method = name;\n name = '';\n }\n\n if (typeof method !== 'function') {\n throw new TypeError(`Expected to be passed function to clean.register`);\n }\n\n if (cleaned) {\n method();\n return;\n }\n\n tasks.push({\n complete: false,\n\n name,\n\n run() {\n\n if (this.complete) {\n return;\n }\n\n this.complete = true;\n\n if (method) {\n method();\n }\n }\n });\n },\n\n hasTasks() : boolean {\n return Boolean(tasks.filter(item => !item.complete).length);\n },\n\n all() : ZalgoPromise {\n let results = [];\n\n cleaned = true;\n\n while (tasks.length) {\n results.push(tasks.pop().run());\n }\n\n return ZalgoPromise.all(results).then(() => { /* pass */ });\n },\n\n run(name : string) : ZalgoPromise {\n let results = [];\n\n for (let item of tasks) {\n if (item.name === name) {\n results.push(item.run());\n }\n }\n\n return ZalgoPromise.all(results).then(noop);\n }\n };\n}\n\n\n/* Base Component\n --------------\n\n Methods that are common between child and parent components, but are not generic or uncoupled enough to live in\n a separate library.\n*/\n\nexport class BaseComponent

{\n\n clean : CleanupType\n event : EventEmitterType\n component : Component

\n\n constructor() {\n this.clean = cleanup(this);\n this.event = eventEmitter();\n }\n\n addProp(options : Object, name : string, def : mixed) {\n copyProp(options, this, name, def);\n }\n\n on(eventName : string, handler : () => void) : CancelableType {\n return this.event.on(eventName, handler);\n }\n\n listeners() {\n throw new Error(`Expected listeners to be implemented`);\n }\n\n error(err : mixed) : ZalgoPromise {\n throw new Error(`Expected error to be implemented - got ${ stringifyError(err) }`);\n }\n\n /* Listen\n ------\n\n Listen for any post messages defined in this.listeners(). All (most) of our communication is done via\n post-messages, so this sets up an easy way to create a collection of listeners in one go.\n\n All post-messaging is done using post-robot.\n */\n\n listen(win : CrossDomainWindowType, domain : string | RegExp) {\n\n if (!win) {\n throw this.component.createError(`window to listen to not set`);\n }\n\n if (!domain) {\n throw new Error(`Must pass domain to listen to`);\n }\n\n if (!this.listeners) {\n return;\n }\n\n let listeners = this.listeners();\n\n for (let listenerName of Object.keys(listeners)) {\n\n let name = listenerName.replace(/^zoid_/, '');\n\n let errorHandler = (err) => {\n this.error(err);\n };\n\n let listener = on(listenerName, { window: win, domain, errorHandler }, ({ source, data }) => {\n this.component.log(`listener_${ name }`);\n return listeners[listenerName].call(this, source, data);\n });\n\n let errorListener = on(listenerName, { window: win, errorHandler }, ({ origin }) => {\n this.component.logError(`unexpected_listener_${ name }`, { origin, domain: domain.toString() });\n this.error(new Error(`Unexpected ${ name } message from domain ${ origin } -- expected message from ${ domain.toString() }`));\n });\n\n this.clean.register(() => {\n listener.cancel();\n errorListener.cancel();\n });\n }\n }\n}\n","/* @flow */\n\nimport { getOpener, getTop, getParent, getNthParentFromTop, getAllFramesInWindow, getAncestor, getDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport base32 from 'hi-base32';\n\nimport { memoize, uniqueID, globalFor, stringifyError } from '../lib';\nimport { WINDOW_REFERENCES } from '../constants';\nimport type { DimensionsType, PositionType } from '../types';\n\n\nfunction normalize(str : string) : string {\n return str.replace(/^[^a-z0-9A-Z]+|[^a-z0-9A-Z]+$/g, '').replace(/[^a-z0-9A-Z]+/g, '_');\n}\n\nfunction encode(str : string) : string {\n return base32.encode(str).replace(/\\=/g, '').toLowerCase(); // eslint-disable-line no-useless-escape\n}\n\nfunction decode(str : string) : string {\n return base32.decode(str.toUpperCase());\n}\n\n\n/* Build Child Window Name\n -----------------------\n\n Build a name for our child window. This should identify the following things to the child:\n\n - That the window was created by, and is owned by zoid\n - The name of the child's parent. This is so the child can identify which window created it, even when we do a\n renderTo, in which case the true parent may actually be a sibling frame in the window hierarchy\n\n We base64 encode the window name so IE doesn't die when it encounters any characters that it doesn't like.\n*/\n\nexport function buildChildWindowName(name : string, version : string, options : Object = {}) : string {\n\n options.id = uniqueID();\n options.domain = getDomain(window);\n\n let encodedName = normalize(name);\n let encodedVersion = normalize(version);\n let encodedOptions = encode(JSON.stringify(options));\n\n if (!encodedName) {\n throw new Error(`Invalid name: ${ name } - must contain alphanumeric characters`);\n }\n\n if (!encodedVersion) {\n throw new Error(`Invalid version: ${ version } - must contain alphanumeric characters`);\n }\n\n return [\n 'xcomponent',\n encodedName,\n encodedVersion,\n encodedOptions,\n ''\n ].join('__');\n}\n\nexport let isZoidComponentWindow = memoize(() => {\n if (!window.name) {\n return false;\n }\n\n let [ zoidcomp ] = window.name.split('__');\n\n if (zoidcomp !== 'xcomponent') {\n return false;\n }\n\n return true;\n});\n\n/* Parse Window Name\n -----------------\n\n The inverse of buildChildWindowName. Base64 decodes and json parses the window name to get the original props\n passed down, including the parent name. Only accepts window names built by zoid\n*/\n\nexport let getComponentMeta = memoize(() => {\n\n if (!window.name) {\n throw new Error(`Can not get component meta without window name`);\n }\n\n let [ zoidcomp, name, version, encodedOptions ] = window.name.split('__');\n\n if (zoidcomp !== 'xcomponent') {\n throw new Error(`Window not rendered by zoid - got ${ zoidcomp }`);\n }\n\n let componentMeta;\n\n try {\n componentMeta = JSON.parse(decode(encodedOptions));\n } catch (err) {\n throw new Error(`Can not decode component-meta: ${ encodedOptions } ${ stringifyError(err) }`);\n }\n\n componentMeta.name = name;\n componentMeta.version = version.replace(/_/g, '.');\n\n return componentMeta;\n});\n\nexport function getParentDomain() : string {\n return getComponentMeta().domain; // How does this work for renderTo..?\n}\n\nfunction getWindowByRef({ ref, uid, distance } : { ref : string, uid : string, distance : number }) : CrossDomainWindowType {\n\n let result;\n\n if (ref === WINDOW_REFERENCES.OPENER) {\n result = getOpener(window);\n\n } else if (ref === WINDOW_REFERENCES.TOP) {\n result = getTop(window);\n\n } else if (ref === WINDOW_REFERENCES.PARENT) {\n\n if (distance) {\n result = getNthParentFromTop(window, distance);\n } else {\n result = getParent(window);\n }\n }\n\n if (ref === WINDOW_REFERENCES.GLOBAL) {\n let ancestor = getAncestor(window);\n\n if (ancestor) {\n for (let frame of getAllFramesInWindow(ancestor)) {\n let global = globalFor(frame);\n\n if (global && global.windows && global.windows[uid]) {\n result = global.windows[uid];\n break;\n }\n }\n }\n }\n\n if (!result) {\n throw new Error(`Unable to find window by ref`);\n }\n\n return result;\n}\n\n/* Get Parent Component Window\n ---------------------------\n\n Get the parent component window, which may be different from the actual parent window\n*/\n\nexport let getParentComponentWindow = memoize(() => {\n\n let componentMeta = getComponentMeta();\n\n if (!componentMeta) {\n throw new Error(`Can not get parent component window - window not rendered by zoid`);\n }\n\n return getWindowByRef(componentMeta.componentParent);\n});\n\n\nexport let getParentRenderWindow = memoize(() => {\n\n let componentMeta = getComponentMeta();\n\n if (!componentMeta) {\n throw new Error(`Can not get parent component window - window not rendered by zoid`);\n }\n\n return getWindowByRef(componentMeta.renderParent);\n});\n\n\n/* Get Position\n ------------\n\n Calculate the position for the popup\n\n This is either\n - Specified by the user\n - The center of the screen\n\n I'd love to do this with pure css, but alas... popup windows :(\n*/\n\nexport function getPosition({ width, height } : DimensionsType) : PositionType {\n\n let x = 0;\n let y = 0;\n\n if (width) {\n if (window.outerWidth) {\n x = Math.round((window.outerWidth - width) / 2) + window.screenX;\n } else if (window.screen.width) {\n x = Math.round((window.screen.width - width) / 2);\n }\n }\n\n if (height) {\n if (window.outerHeight) {\n y = Math.round((window.outerHeight - height) / 2) + window.screenY;\n } else if (window.screen.height) {\n y = Math.round((window.screen.height - height) / 2);\n }\n }\n\n return { x, y };\n}\n","/* @flow */\n\nimport { getDomain } from 'cross-domain-utils/src';\n\nimport type { Component } from '../component';\nimport type { BuiltInPropsType, MixedPropDefinitionType } from '../component/props';\n\nexport function normalizeChildProp(component : Component

, props : (BuiltInPropsType & P), key : string, value : T) : ?T {\n\n // $FlowFixMe\n let prop : MixedPropDefinitionType

= component.getProp(key);\n\n if (!prop) {\n if (component.looseProps) {\n return value;\n } else {\n return;\n }\n }\n\n if (typeof prop.childDecorate === 'function') {\n return prop.childDecorate(value);\n }\n\n return value;\n}\n\n\nexport function normalizeChildProps

(component : Component

, props : (BuiltInPropsType & P), origin : string, required : boolean = true) : (BuiltInPropsType & P) {\n\n let result = {};\n\n for (let key of Object.keys(props)) {\n\n let prop = component.getProp(key);\n let value = props[key];\n\n if (prop && prop.sameDomain && origin !== getDomain(window)) {\n continue;\n }\n\n result[key] = normalizeChildProp(component, props, key, value);\n\n if (prop && prop.alias && !result[prop.alias]) {\n result[prop.alias] = value;\n }\n }\n\n if (required) {\n for (let key of component.getPropNames()) {\n if (!props.hasOwnProperty(key)) {\n result[key] = normalizeChildProp(component, props, key, props[key]);\n }\n }\n }\n\n // $FlowFixMe\n return result;\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { flush } from 'beaver-logger/client';\nimport { isSameDomain, matchDomain, getDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { send } from 'post-robot/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { onResize } from 'belter/src';\n\nimport { BaseComponent } from '../base';\nimport { getParentComponentWindow, getComponentMeta, getParentDomain, getParentRenderWindow } from '../window';\nimport { extend, deserializeFunctions, get, stringify,\n globalFor, setLogLevel, getElement, noop, stringifyError } from '../../lib';\nimport { POST_MESSAGE, CONTEXT_TYPES, CLOSE_REASONS, INITIAL_PROPS } from '../../constants';\nimport { RenderError } from '../../error';\nimport type { Component } from '../component';\nimport type { BuiltInPropsType } from '../component/props';\n\nimport { normalizeChildProps } from './props';\n\nexport type ChildExportsType

= {\n updateProps : (props : (BuiltInPropsType & P)) => ZalgoPromise,\n close : () => ZalgoPromise\n};\n\n/* Child Component\n ---------------\n\n This is the portion of code which runs inside the frame or popup window containing the component's implementation.\n\n When the component author calls myComponent.attach(), it creates a new instance of ChildComponent, which is then\n responsible for managing the state and messaging back up to the parent, and providing props for the component to\n utilize.\n*/\n\nexport class ChildComponent

extends BaseComponent

{\n\n component : Component

\n props : BuiltInPropsType & P\n context : string\n\n onPropHandlers : Array<(BuiltInPropsType & P) => void>\n onInit : ZalgoPromise>\n watchingForResize : boolean\n autoResize : { width : boolean, height : boolean, element? : string }\n\n constructor(component : Component

) {\n super();\n this.component = component;\n\n if (!this.hasValidParentDomain()) {\n this.error(new RenderError(`Can not be rendered by domain: ${ this.getParentDomain() }`));\n return;\n }\n\n this.component.log(`construct_child`);\n\n // The child can specify some default props if none are passed from the parent. This often makes integrations\n // a little more seamless, as applicaiton code can call props.foo() without worrying about whether the parent\n // has provided them or not, and fall-back to some default behavior.\n\n this.onPropHandlers = [];\n\n for (let item of [ this.component, window ]) {\n for (let [ name, getter ] of [ [ 'xchild', () => this ], [ 'xprops', () => this.props ] ]) {\n // $FlowFixMe\n Object.defineProperty(item, name, {\n configurable: true,\n get: () => {\n if (!this.props) {\n this.setProps(this.getInitialProps(), getParentDomain());\n }\n // $FlowFixMe\n delete item[name];\n // $FlowFixMe\n item[name] = getter();\n // $FlowFixMe\n return item[name];\n }\n });\n }\n }\n\n this.component.log(`init_child`);\n\n this.setWindows();\n\n // Send an init message to our parent. This gives us an initial set of data to use that we can use to function.\n //\n // For example:\n //\n // - What context are we\n // - What props has the parent specified\n\n this.onInit = this.sendToParent(POST_MESSAGE.INIT, {\n\n exports: this.exports()\n\n }).then(({ origin, data }) => {\n\n this.context = data.context;\n this.setProps(data.props, origin);\n\n this.watchForResize();\n\n return this;\n\n }).catch(err => {\n\n this.error(err);\n throw err;\n });\n }\n\n hasValidParentDomain() : boolean {\n return matchDomain(this.component.allowedParentDomains, this.getParentDomain());\n }\n\n init() : ZalgoPromise> {\n return this.onInit;\n }\n\n getParentDomain() : string {\n return getParentDomain();\n }\n\n onProps(handler : Function) {\n this.onPropHandlers.push(handler);\n }\n\n getParentComponentWindow() : CrossDomainWindowType {\n return getParentComponentWindow();\n }\n\n getParentRenderWindow() : CrossDomainWindowType {\n return getParentRenderWindow();\n }\n\n getInitialProps() : (BuiltInPropsType & P) {\n let componentMeta = getComponentMeta();\n\n let props = componentMeta.props;\n\n if (props.type === INITIAL_PROPS.RAW) {\n props = props.value;\n } else if (props.type === INITIAL_PROPS.UID) {\n\n let parentComponentWindow = getParentComponentWindow();\n\n if (!isSameDomain(parentComponentWindow)) {\n\n if (window.location.protocol === 'file:') {\n throw new Error(`Can not get props from file:// domain`);\n }\n\n throw new Error(`Parent component window is on a different domain - expected ${ getDomain() } - can not retrieve props`);\n }\n\n let global = globalFor(parentComponentWindow);\n\n if (!global) {\n throw new Error(`Can not find global for parent component - can not retrieve props`);\n }\n\n props = JSON.parse(global.props[componentMeta.uid]);\n\n } else {\n throw new Error(`Unrecognized props type: ${ props.type }`);\n }\n\n if (!props) {\n throw new Error(`Initial props not found`);\n }\n \n return deserializeFunctions(props, ({ fullKey, self, args }) => {\n return this.onInit.then(() => {\n let func = get(this.props, fullKey);\n\n if (typeof func !== 'function') {\n throw new TypeError(`Expected ${ fullKey } to be function, got ${ typeof func }`);\n }\n\n return func.apply(self, args);\n });\n });\n }\n\n\n setProps(props : (BuiltInPropsType & P), origin : string, required : boolean = true) {\n // $FlowFixMe\n this.props = this.props || {};\n let normalizedProps = normalizeChildProps(this.component, props, origin, required);\n extend(this.props, normalizedProps);\n if (this.props.logLevel) {\n setLogLevel(this.props.logLevel);\n }\n for (let handler of this.onPropHandlers) {\n handler.call(this, this.props);\n }\n }\n\n\n /* Send to Parent\n --------------\n\n Send a post message to our parent window.\n */\n\n sendToParent(name : string, data : ?Object = {}, options : ?Object = {}) : ZalgoPromise<{ origin : string, source : CrossDomainWindowType, data : Object }> {\n let parentWindow = getParentComponentWindow();\n\n if (!parentWindow) {\n throw new Error(`Can not find parent component window to message`);\n }\n\n this.component.log(`send_to_parent_${ name }`);\n\n return send(parentWindow, name, data, { domain: getParentDomain(), ...options });\n }\n\n\n /* Set Windows\n -----------\n\n Determine the parent window, and the parent component window. Note -- these may be different, if we were\n rendered using renderTo.\n */\n\n setWindows() {\n\n\n // Ensure we do not try to .attach() multiple times for the same component on the same page\n\n if (window.__activeZoidComponent__) {\n throw this.component.createError(`Can not attach multiple components to the same window`);\n }\n\n window.__activeZoidComponent__ = this;\n\n // Get the direct parent window\n\n if (!getParentComponentWindow()) {\n throw this.component.createError(`Can not find parent window`);\n }\n\n let componentMeta = getComponentMeta();\n\n if (componentMeta.tag !== this.component.tag) {\n throw this.component.createError(`Parent is ${ componentMeta.tag } - can not attach ${ this.component.tag }`);\n }\n\n // Note -- getting references to other windows is probably one of the hardest things to do. There's basically\n // only a few ways of doing it:\n //\n // - The window is a direct parent, in which case you can use window.parent or window.opener\n // - The window is an iframe owned by you or one of your parents, in which case you can use window.frames\n // - The window sent you a post-message, in which case you can use event.source\n //\n // If we didn't rely on winProps.parent here from the window name, we'd have to relay all of our messages through\n // our actual parent. Which is no fun at all, and pretty error prone even with the help of post-robot. So this\n // is the lesser of two evils until browsers give us something like getWindowByName(...)\n\n // If the parent window closes, we need to close ourselves. There's no point continuing to run our component\n // if there's no parent to message to.\n\n this.watchForClose();\n }\n\n watchForClose() {\n window.addEventListener('unload', () => this.checkClose());\n }\n\n enableAutoResize({ width = true, height = true } : { width : boolean, height : boolean } = {}) {\n this.autoResize = { width, height };\n this.watchForResize();\n }\n\n getAutoResize() : { width : boolean, height : boolean, element : HTMLElement } {\n\n let width = false;\n let height = false;\n\n let autoResize = this.autoResize || this.component.autoResize;\n\n if (typeof autoResize === 'object') {\n width = Boolean(autoResize.width);\n height = Boolean(autoResize.height);\n } else if (autoResize) {\n width = true;\n height = true;\n }\n\n let element;\n\n if (autoResize.element) {\n element = getElement(autoResize.element);\n } else {\n element = document.body;\n }\n\n // $FlowFixMe\n return { width, height, element };\n }\n\n watchForResize() : ?ZalgoPromise {\n\n let { width, height, element } = this.getAutoResize();\n\n if (!width && !height) {\n return;\n }\n\n if (this.context === CONTEXT_TYPES.POPUP) {\n return;\n }\n\n if (this.watchingForResize) {\n return;\n }\n\n this.watchingForResize = true;\n \n onResize(element, ({ width: newWidth, height: newHeight }) => {\n this.resize(width ? newWidth : undefined, height ? newHeight : undefined);\n }, { width, height });\n }\n\n\n exports() : ChildExportsType

{\n\n let self = this;\n\n return {\n updateProps(props : (BuiltInPropsType & P)) : ZalgoPromise {\n return ZalgoPromise.try(() => self.setProps(props, this.origin, false));\n },\n\n close() : ZalgoPromise {\n return ZalgoPromise.try(() => self.destroy());\n }\n };\n }\n\n\n /* Resize\n ------\n\n Resize the child window. Must be done on a user action like a click if we're in a popup\n */\n\n resize(width : ?number, height : ?number) : ZalgoPromise {\n return ZalgoPromise.resolve().then(() => {\n\n this.component.log(`resize`, { width: stringify(width), height: stringify(height) });\n\n if (this.context === CONTEXT_TYPES.POPUP) {\n return;\n }\n\n return this.sendToParent(POST_MESSAGE.RESIZE, { width, height }).then(noop);\n });\n }\n\n /* Hide\n ----\n\n Hide the window and any parent template\n */\n\n hide() : ZalgoPromise {\n return this.sendToParent(POST_MESSAGE.HIDE).then(noop);\n }\n\n show() : ZalgoPromise {\n return this.sendToParent(POST_MESSAGE.SHOW).then(noop);\n }\n\n userClose() : void {\n return this.close(CLOSE_REASONS.USER_CLOSED);\n }\n\n\n /* Close\n -----\n\n Close the child window\n */\n\n close(reason : string = CLOSE_REASONS.CHILD_CALL) {\n\n this.component.log(`close_child`);\n\n // Ask our parent window to close us\n\n this.sendToParent(POST_MESSAGE.CLOSE, { reason });\n }\n\n checkClose() {\n this.sendToParent(POST_MESSAGE.CHECK_CLOSE, {}, { fireAndForget: true });\n }\n\n\n destroy() : ZalgoPromise {\n return flush().then(() => {\n window.close();\n });\n }\n\n\n /* Focus\n -----\n\n Focus the child window. Must be done on a user action like a click\n */\n\n focus() {\n this.component.log(`focus`);\n\n window.focus();\n }\n\n\n /* Error\n -----\n\n Send an error back to the parent\n */\n\n error(err : mixed) : ZalgoPromise {\n\n let stringifiedError = stringifyError(err);\n\n this.component.logError(`error`, { error: stringifiedError });\n\n return this.sendToParent(POST_MESSAGE.ERROR, {\n error: stringifiedError\n }).then(noop);\n }\n}\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { cleanUpWindow } from 'post-robot/src';\nimport { findFrameByName, isSameDomain } from 'cross-domain-utils/src';\n\nimport { iframe, popup, toCSS, showElement, hideElement,\n destroyElement, normalizeDimension, watchElementForClose,\n awaitFrameWindow, addClass, removeClass, noop } from '../../lib';\nimport { CONTEXT_TYPES, DELEGATE, CLOSE_REASONS, CLASS_NAMES, DEFAULT_DIMENSIONS } from '../../constants';\nimport { getPosition, getParentComponentWindow } from '../window';\n\n\nexport type ContextDriverType = {\n\n focusable : boolean,\n renderedIntoContainerTemplate : boolean,\n allowResize : boolean,\n openOnClick : boolean,\n needsBridge : boolean,\n\n open : (?string) => ZalgoPromise,\n resize : (?(number | string), ?(number | string)) => void,\n show : () => void,\n hide : () => void,\n loadUrl : (string) => void,\n\n delegateOverrides : {\n [string] : string | Function\n },\n\n openPrerender : () => ZalgoPromise,\n switchPrerender? : () => void\n};\n\n/* Render Drivers\n --------------\n\n There are various differences in how we treat:\n\n - Opening frames and windows\n - Rendering up to the parent\n - Resizing\n - etc.\n\n based on the context we're rendering to.\n\n These render drivers split this functionality out in a driver pattern, so our component code doesn't bunch up into a\n series of if-popup-then-else-if-iframe code.\n*/\n\nexport let RENDER_DRIVERS : { [string] : ContextDriverType } = {};\n\n// Iframe context is rendered inline on the page, without any kind of parent template. It's the one context that is designed\n// to feel like a native element on the page.\n\nRENDER_DRIVERS[CONTEXT_TYPES.IFRAME] = {\n\n focusable: false,\n renderedIntoContainerTemplate: true,\n allowResize: true,\n openOnClick: false,\n needsBridge: false,\n\n open(url : ?string) : ZalgoPromise {\n\n let attributes = this.component.attributes.iframe || {};\n\n this.iframe = iframe({\n url,\n attributes: {\n name: this.childWindowName,\n title: this.component.name,\n scrolling: this.component.scrolling ? 'yes' : 'no',\n ...attributes\n },\n class: [\n CLASS_NAMES.COMPONENT_FRAME,\n CLASS_NAMES.INVISIBLE\n ]\n }, this.element);\n\n return awaitFrameWindow(this.iframe).then(frameWindow => {\n\n this.window = frameWindow;\n\n let detectClose = () => {\n return ZalgoPromise.try(() => {\n return this.props.onClose(CLOSE_REASONS.CLOSE_DETECTED);\n }).finally(() => {\n return this.destroy();\n });\n };\n\n let iframeWatcher = watchElementForClose(this.iframe, detectClose);\n let elementWatcher = watchElementForClose(this.element, detectClose);\n\n this.clean.register('destroyWindow', () => {\n\n iframeWatcher.cancel();\n elementWatcher.cancel();\n\n cleanUpWindow(this.window);\n\n delete this.window;\n\n if (this.iframe) {\n destroyElement(this.iframe);\n delete this.iframe;\n }\n });\n });\n },\n\n openPrerender() : ZalgoPromise {\n\n let attributes = this.component.attributes.iframe || {};\n\n this.prerenderIframe = iframe({\n attributes: {\n name: `__prerender__${ this.childWindowName }`,\n scrolling: this.component.scrolling ? 'yes' : 'no',\n ...attributes\n },\n class: [\n CLASS_NAMES.PRERENDER_FRAME,\n CLASS_NAMES.VISIBLE\n ]\n }, this.element);\n\n return awaitFrameWindow(this.prerenderIframe).then(prerenderFrameWindow => {\n\n this.prerenderWindow = prerenderFrameWindow;\n\n this.clean.register('destroyPrerender', () => {\n\n if (this.prerenderIframe) {\n destroyElement(this.prerenderIframe);\n delete this.prerenderIframe;\n }\n });\n });\n },\n\n switchPrerender() {\n\n addClass(this.prerenderIframe, CLASS_NAMES.INVISIBLE);\n removeClass(this.prerenderIframe, CLASS_NAMES.VISIBLE);\n\n addClass(this.iframe, CLASS_NAMES.VISIBLE);\n removeClass(this.iframe, CLASS_NAMES.INVISIBLE);\n\n setTimeout(() => {\n if (this.prerenderIframe) {\n destroyElement(this.prerenderIframe);\n }\n }, 1000);\n },\n\n delegateOverrides: {\n\n openContainer: DELEGATE.CALL_DELEGATE,\n destroyComponent: DELEGATE.CALL_DELEGATE,\n destroyContainer: DELEGATE.CALL_DELEGATE,\n cancelContainerEvents: DELEGATE.CALL_DELEGATE,\n createPrerenderTemplate: DELEGATE.CALL_DELEGATE,\n elementReady: DELEGATE.CALL_DELEGATE,\n showContainer: DELEGATE.CALL_DELEGATE,\n showComponent: DELEGATE.CALL_DELEGATE,\n hideContainer: DELEGATE.CALL_DELEGATE,\n hideComponent: DELEGATE.CALL_DELEGATE,\n hide: DELEGATE.CALL_DELEGATE,\n show: DELEGATE.CALL_DELEGATE,\n resize: DELEGATE.CALL_DELEGATE,\n loadUrl: DELEGATE.CALL_DELEGATE,\n hijackSubmit: DELEGATE.CALL_DELEGATE,\n openPrerender: DELEGATE.CALL_DELEGATE,\n switchPrerender: DELEGATE.CALL_DELEGATE,\n\n renderTemplate: DELEGATE.CALL_ORIGINAL,\n openContainerFrame: DELEGATE.CALL_ORIGINAL,\n getOutlet: DELEGATE.CALL_ORIGINAL,\n\n open(original : () => ZalgoPromise, override : () => ZalgoPromise) : () => ZalgoPromise {\n return function overrideOpen() : ZalgoPromise {\n return override.apply(this, arguments).then(() => {\n this.clean.set('window', findFrameByName(getParentComponentWindow(), this.childWindowName));\n\n if (!this.window) {\n throw new Error(`Unable to find parent component iframe window`);\n }\n });\n };\n }\n },\n\n resize(width : ?(number | string), height : ?(number | string)) {\n\n if (width) {\n this.container.style.width = toCSS(width);\n this.element.style.width = toCSS(width);\n }\n\n if (height) {\n this.container.style.height = toCSS(height);\n this.element.style.height = toCSS(height);\n }\n },\n\n show() {\n showElement(this.element);\n },\n\n hide() {\n hideElement(this.element);\n },\n\n loadUrl(url : string) {\n this.iframe.setAttribute('src', url);\n }\n};\n\nif (__ZOID__.__POPUP_SUPPORT__) {\n\n // Popup context opens up a centered popup window on the page.\n\n RENDER_DRIVERS[CONTEXT_TYPES.POPUP] = {\n\n focusable: true,\n renderedIntoContainerTemplate: false,\n allowResize: false,\n openOnClick: true,\n needsBridge: true,\n\n open(url : ?string = '') : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n let {\n width = DEFAULT_DIMENSIONS.WIDTH,\n height = DEFAULT_DIMENSIONS.HEIGHT\n } = this.component.dimensions || {};\n\n width = normalizeDimension(width, window.outerWidth);\n height = normalizeDimension(height, window.outerWidth);\n\n let { x, y } = getPosition({ width, height });\n\n let attributes = this.component.attributes.popup || {};\n\n this.window = popup(url || '', {\n name: this.childWindowName,\n width,\n height,\n top: y,\n left: x,\n status: 1,\n toolbar: 0,\n menubar: 0,\n resizable: 1,\n scrollbars: 1,\n ...attributes\n });\n\n this.prerenderWindow = this.window;\n\n this.clean.register('destroyWindow', () => {\n if (this.window) {\n this.window.close();\n cleanUpWindow(this.window);\n delete this.window;\n delete this.prerenderWindow;\n }\n });\n\n this.resize(width, height);\n });\n },\n\n openPrerender() : ZalgoPromise {\n return ZalgoPromise.try(noop);\n },\n\n resize() {\n // pass\n },\n\n hide() {\n throw new Error('Can not hide popup');\n },\n\n show() {\n throw new Error('Can not show popup');\n },\n\n delegateOverrides: {\n\n openContainer: DELEGATE.CALL_DELEGATE,\n destroyContainer: DELEGATE.CALL_DELEGATE,\n\n elementReady: DELEGATE.CALL_DELEGATE,\n\n showContainer: DELEGATE.CALL_DELEGATE,\n showComponent: DELEGATE.CALL_DELEGATE,\n hideContainer: DELEGATE.CALL_DELEGATE,\n hideComponent: DELEGATE.CALL_DELEGATE,\n\n hide: DELEGATE.CALL_DELEGATE,\n show: DELEGATE.CALL_DELEGATE,\n\n cancelContainerEvents: DELEGATE.CALL_DELEGATE,\n\n open: DELEGATE.CALL_ORIGINAL,\n loadUrl: DELEGATE.CALL_ORIGINAL,\n createPrerenderTemplate: DELEGATE.CALL_ORIGINAL,\n destroyComponent: DELEGATE.CALL_ORIGINAL,\n resize: DELEGATE.CALL_ORIGINAL,\n renderTemplate: DELEGATE.CALL_ORIGINAL,\n openContainerFrame: DELEGATE.CALL_ORIGINAL,\n getOutlet: DELEGATE.CALL_ORIGINAL\n },\n\n loadUrl(url : string) {\n\n if (isSameDomain(this.window)) {\n try {\n if (this.window.location && this.window.location.replace) {\n this.window.location.replace(url);\n return;\n }\n } catch (err) {\n // pass\n }\n }\n\n this.window.location = url;\n }\n };\n}\n","/* @flow */\n/* eslint complexity: off */\n\nimport type { Component } from '../component';\nimport type { MixedPropDefinitionType, PropsType } from '../component/props';\n\n// $FlowFixMe\nexport function validateProp(prop : MixedPropDefinitionType

, key : string, value : ?T, props : (PropsType & P), required : boolean = true) {\n\n let hasProp = value !== null && value !== undefined && value !== '';\n\n if (!hasProp) {\n if (required && prop.required !== false && !prop.hasOwnProperty('def')) {\n throw new Error(`Prop is required: ${ key }`);\n }\n\n return;\n }\n\n if (value && typeof value.then === 'function' && prop.promise) {\n return;\n }\n\n if (prop.type === 'function') {\n\n if (!(typeof value === 'function')) {\n throw new TypeError(`Prop is not of type function: ${ key }`);\n }\n\n } else if (prop.type === 'string') {\n\n if (typeof value !== 'string') {\n throw new TypeError(`Prop is not of type string: ${ key }`);\n }\n\n } else if (prop.type === 'object') {\n\n // Since we're sending everything by post-message, everything must be json serializable\n\n if (prop.sendToChild !== false) {\n try {\n JSON.stringify(value);\n } catch (err) {\n throw new Error(`Unable to serialize prop: ${ key }`);\n }\n }\n\n } else if (prop.type === 'number') {\n\n if (isNaN(parseInt(value, 10))) {\n throw new TypeError(`Prop is not a number: ${ key }`);\n }\n }\n\n if (typeof prop.validate === 'function' && value) {\n prop.validate(value, props);\n }\n}\n\n\n/* Validate Props\n --------------\n\n Validate user-defined props. Users can pass props down from the parent into the child component, but first we\n double check the values are what we expect, based on the props spec defined in the original component.\n*/\n\nexport function validateProps

(component : Component

, props : PropsType, required : boolean = true) {\n\n props = props || {};\n\n if (props.env && typeof component.url === 'object' && !component.url[props.env]) {\n throw new Error(`Invalid env: ${ props.env }`);\n }\n\n // Set aliases\n\n for (let key of component.getPropNames()) {\n\n // $FlowFixMe\n let prop = component.getProp(key);\n\n if (prop.alias && props.hasOwnProperty(prop.alias)) {\n\n let value = props[prop.alias];\n delete props[prop.alias];\n\n if (!props[key]) {\n props[key] = value;\n }\n }\n }\n\n // First make sure all of the props we were sent are actually valid prop names\n\n /*\n\n if (!component.looseProps) {\n for (let key of Object.keys(props)) {\n if (component.getPropNames().indexOf(key) === -1) {\n throw component.error(`Invalid prop: ${key}`);\n }\n }\n }\n\n */\n\n // Then loop over the props we expect, and make sure they're all present and valid\n\n for (let key of Object.keys(props)) {\n\n // $FlowFixMe\n let prop : MixedPropDefinitionType

= component.getProp(key);\n let value = props[key];\n\n if (prop) {\n // $FlowFixMe\n validateProp(prop, key, value, props, required);\n }\n }\n\n for (let key of component.getPropNames()) {\n\n // $FlowFixMe\n let prop : MixedPropDefinitionType

= component.getProp(key);\n let value = props[key];\n\n if (prop && !props.hasOwnProperty(key)) {\n validateProp(prop, key, value, props, required);\n }\n }\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { noop, denodeify, once, memoize, promisify, dotify } from '../../lib';\nimport type { Component } from '../component';\nimport type { BuiltInPropsDefinitionType, PropsType, BuiltInPropsType, MixedPropDefinitionType } from '../component/props';\n\nimport type { ParentComponent } from './index';\n\nfunction isDefined(value : ?mixed) : boolean {\n return value !== null && value !== undefined && value !== '';\n}\n\n\n/* Normalize Prop\n --------------\n\n Turn prop into normalized value, using defaults, function options, etc.\n*/\n\n// $FlowFixMe\nexport function normalizeProp(component : Component

, instance : ParentComponent

, props : (PropsType & P), key : string, value : ?T) : ?(ZalgoPromise | T) { // eslint-disable-line complexity\n\n let prop = component.getProp(key);\n\n let resultValue;\n\n if (prop.value) {\n resultValue = prop.value;\n } else if (prop.def && (!props.hasOwnProperty(key) || !isDefined(value))) {\n resultValue = prop.def.call(component, props);\n } else {\n resultValue = value;\n }\n\n if (!resultValue && prop.alias && props[prop.alias]) {\n resultValue = props[prop.alias];\n }\n\n let decorated = false;\n\n if (prop.decorate && resultValue !== null && resultValue !== undefined) {\n resultValue = prop.decorate.call(instance, resultValue, props);\n decorated = true;\n }\n\n let type = prop.type;\n\n if (type === 'boolean') {\n // $FlowFixMe\n resultValue = Boolean(resultValue);\n\n } else if (type === 'function') {\n\n if (!resultValue && prop.noop) {\n // $FlowFixMe\n resultValue = noop;\n\n if (!decorated && prop.decorate) {\n // $FlowFixMe\n resultValue = prop.decorate.call(instance, noop, props);\n }\n }\n\n if (resultValue && typeof resultValue === 'function') {\n\n resultValue = resultValue.bind(instance);\n\n // If prop.denodeify is set, denodeify the function (accepts callback -> returns promise)\n\n if (prop.denodeify) {\n // $FlowFixMe\n resultValue = denodeify(resultValue);\n }\n\n if (prop.promisify) {\n // $FlowFixMe\n resultValue = promisify(resultValue);\n }\n\n // Wrap the function in order to log when it is called\n\n let original = resultValue;\n // $FlowFixMe\n resultValue = function() : mixed {\n component.log(`call_prop_${ key }`);\n return original.apply(this, arguments);\n };\n\n // If prop.once is set, ensure the function can only be called once\n\n if (prop.once) {\n // $FlowFixMe\n resultValue = once(resultValue);\n }\n\n // If prop.memoize is set, ensure the function is memoized (first return resultValue is cached and returned for any future calls)\n\n if (prop.memoize) {\n // $FlowFixMe\n resultValue = memoize(resultValue);\n }\n }\n\n } else if (type === 'string') {\n // pass\n\n } else if (type === 'object') {\n // pass\n\n } else if (type === 'number') {\n if (resultValue !== undefined) {\n // $FlowFixMe\n resultValue = parseInt(resultValue, 10);\n }\n }\n\n // $FlowFixMe\n return resultValue;\n}\n\n\n/* Normalize Props\n ---------------\n\n Turn props into normalized values, using defaults, function options, etc.\n*/\n\nexport function normalizeProps

(component : Component

, instance : ParentComponent

, props : (PropsType & P)) : (BuiltInPropsType & P) {\n\n let result = {};\n\n // $FlowFixMe\n props = props || {};\n\n for (let key of Object.keys(props)) {\n if (component.getPropNames().indexOf(key) !== -1) {\n // $FlowFixMe\n result[key] = normalizeProp(component, instance, props, key, props[key]);\n } else {\n result[key] = props[key];\n }\n }\n\n for (let key of component.getPropNames()) {\n if (!props.hasOwnProperty(key) && (!instance.props || !instance.props.hasOwnProperty(key))) {\n\n // $FlowFixMe\n let normalizedProp = normalizeProp(component, instance, props, key, props[key]);\n\n if (normalizedProp !== undefined) {\n result[key] = normalizedProp;\n }\n }\n }\n\n // $FlowFixMe\n return result;\n}\n\n\n/* Props to Query\n --------------\n\n Turn props into an initial query string to open the component with\n\n string -> string\n bool -> 1\n object -> json\n number -> string\n*/\n\n// $FlowFixMe\nfunction getQueryParam(prop : MixedPropDefinitionType

, key : string, value : T) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (typeof prop.queryParam === 'function') {\n return prop.queryParam(value);\n } else if (typeof prop.queryParam === 'string') {\n return prop.queryParam;\n } else {\n return key;\n }\n });\n}\n\n// $FlowFixMe\nfunction getQueryValue(prop : MixedPropDefinitionType

, key : string, value : T) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (typeof prop.queryValue === 'function') {\n return prop.queryValue(value);\n } else {\n return value;\n }\n });\n}\n\nexport function propsToQuery

(propsDef : BuiltInPropsDefinitionType

, props : (BuiltInPropsType & P)) : { [string] : string } {\n\n let params = {};\n\n return ZalgoPromise.all(Object.keys(props).map(key => {\n\n let prop = propsDef[key];\n\n if (!prop) {\n return; // eslint-disable-line array-callback-return\n }\n\n return ZalgoPromise.resolve().then(() => {\n\n let value = props[key];\n\n if (!value) {\n return;\n }\n\n if (!prop.queryParam) {\n return;\n }\n\n return value;\n\n }).then(value => {\n\n if (!value) {\n return;\n }\n\n return ZalgoPromise.all([\n // $FlowFixMe\n getQueryParam(prop, key, value),\n // $FlowFixMe\n getQueryValue(prop, key, value)\n ]).then(([ queryParam, queryValue ]) => {\n\n let result;\n\n if (typeof queryValue === 'boolean') {\n result = '1';\n } else if (typeof queryValue === 'string') {\n result = queryValue.toString();\n } else if (typeof queryValue === 'function') {\n return;\n } else if (typeof queryValue === 'object' && queryValue !== null) {\n\n if (prop.serialization === 'json') {\n result = JSON.stringify(queryValue);\n } else {\n result = dotify(queryValue, key);\n\n for (let dotkey of Object.keys(result)) {\n params[dotkey] = result[dotkey];\n }\n\n return;\n }\n\n } else if (typeof queryValue === 'number') {\n result = queryValue.toString();\n }\n\n params[queryParam] = result;\n });\n });\n\n })).then(() => {\n Object.keys(params).forEach(key => {\n params[key] = escape(params[key]);\n });\n return params;\n });\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { flush } from 'beaver-logger/client';\nimport { send, bridge } from 'post-robot/src';\nimport { isSameDomain, isWindowClosed, isTop, isSameTopWindow, matchDomain, getDistanceFromTop, onCloseWindow, getDomain, assertSameDomain, type CrossDomainWindowType, type SameDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getElementSafe, onResize } from 'belter/src';\n\nimport { BaseComponent } from '../base';\nimport { buildChildWindowName, getParentDomain, getParentComponentWindow } from '../window';\nimport { addEventListener, uniqueID, elementReady, writeElementToWindow,\n noop, showAndAnimate, animateAndHide, showElement, hideElement,\n addClass, extend, serializeFunctions, extendUrl, jsxDom,\n getElement, memoized, appendChild,\n global, writeToWindow, setLogLevel, once,\n prefetchPage, awaitFrameLoad, stringify, stringifyError } from '../../lib';\nimport { POST_MESSAGE, CONTEXT_TYPES, CLASS_NAMES, ANIMATION_NAMES, CLOSE_REASONS, DELEGATE, INITIAL_PROPS, WINDOW_REFERENCES, EVENTS, DEFAULT_DIMENSIONS } from '../../constants';\nimport { RenderError } from '../../error';\nimport type { Component } from '../component';\nimport type { PropsType, BuiltInPropsType } from '../component/props';\nimport type { ChildExportsType } from '../child';\nimport type { CancelableType, Jsx, DimensionsType, ElementRefType } from '../../types';\n\nimport { RENDER_DRIVERS, type ContextDriverType } from './drivers';\nimport { validateProps } from './validate';\nimport { propsToQuery, normalizeProps } from './props';\n\nglobal.props = global.props || {};\nglobal.windows = global.windows || {};\n\nexport type RenderOptionsType = {\n id : string,\n props : PropsType,\n tag : string,\n context : string,\n outlet : HTMLElement,\n CLASS : typeof CLASS_NAMES,\n ANIMATION : typeof ANIMATION_NAMES,\n CONTEXT : typeof CONTEXT_TYPES,\n EVENT : typeof EVENTS,\n actions : {\n close : (string) => ZalgoPromise,\n focus : () => ZalgoPromise\n },\n on : (string, () => void) => CancelableType,\n jsxDom : Jsx,\n document : Document,\n container : HTMLElement,\n dimensions : DimensionsType\n};\n\n\n/* Parent Component\n ----------------\n\n This manages the state of the component on the parent window side - i.e. the window the component is being rendered into.\n\n It handles opening the necessary windows/iframes, launching the component's url, and listening for messages back from the component.\n*/\n\nexport class ParentComponent

extends BaseComponent

{\n\n html : ?ZalgoPromise\n context : string\n props : BuiltInPropsType & P\n childWindowName : string\n onInit : ZalgoPromise>\n window : CrossDomainWindowType\n handledErrors : Array\n\n container : HTMLElement\n element : HTMLElement\n outlet : HTMLElement;\n iframe : HTMLIFrameElement\n\n prerenderIframe : HTMLIFrameElement\n prerenderWindow : SameDomainWindowType\n\n childExports : ?ChildExportsType

\n timeout : ?TimeoutID // eslint-disable-line no-undef\n\n constructor(component : Component

, context : string, { props } : { props : (PropsType & P) }) {\n super();\n\n this.component = component;\n\n this.validateParentDomain();\n\n this.context = context;\n\n try {\n this.setProps(props);\n } catch (err) {\n if (props.onError) {\n props.onError(err);\n }\n throw err;\n }\n\n if (this.props.logLevel) {\n setLogLevel(this.props.logLevel);\n }\n\n this.childWindowName = this.buildChildWindowName({ renderTo: window });\n\n this.registerActiveComponent();\n\n // Options passed during renderTo. We would not ordinarily expect a user to pass these, since we depend on\n // them only when we're trying to render from a sibling to a sibling\n\n this.component.log(`construct_parent`);\n\n this.watchForUnload();\n\n this.onInit = new ZalgoPromise();\n\n this.onInit.catch(err => {\n return this.error(err);\n });\n }\n\n render(element : ElementRefType, loadUrl : boolean = true) : ZalgoPromise> {\n return this.tryInit(() => {\n\n this.component.log(`render_${ this.context }`, { context: this.context, element, loadUrl: stringify(loadUrl) });\n\n let tasks = {};\n\n tasks.onRender = this.props.onRender();\n\n tasks.getDomain = this.getDomain();\n\n tasks.elementReady = ZalgoPromise.try(() => {\n if (element) {\n return this.elementReady(element);\n }\n });\n\n tasks.openContainer = tasks.elementReady.then(() => {\n return this.openContainer(element);\n });\n\n tasks.showContainer = tasks.openContainer.then(() => {\n return this.showContainer();\n });\n\n tasks.openPrerender = tasks.openContainer.then(() => {\n return this.openPrerender();\n });\n\n tasks.switchPrerender = ZalgoPromise.all([ tasks.openPrerender, this.onInit ]).then(() => {\n return this.switchPrerender();\n });\n\n // $FlowFixMe\n tasks.open = this.driver.openOnClick\n ? this.open()\n : tasks.openContainer.then(() => this.open());\n\n tasks.listen = ZalgoPromise.hash({ domain: tasks.getDomain, open: tasks.open }).then(({ domain }) => {\n this.listen(this.window, domain);\n });\n\n tasks.watchForClose = tasks.open.then(() => {\n return this.watchForClose();\n });\n\n tasks.linkDomain = ZalgoPromise.all([ tasks.getDomain, tasks.open ]).then(([ domain ]) => {\n if (bridge && typeof domain === 'string') {\n return bridge.linkUrl(this.window, domain);\n }\n });\n\n if (!this.html) {\n tasks.createPrerenderTemplate = tasks.openPrerender.then(() => {\n return this.createPrerenderTemplate();\n });\n\n tasks.showComponent = tasks.createPrerenderTemplate.then(() => {\n return this.showComponent();\n });\n }\n\n tasks.openBridge = ZalgoPromise.all([ tasks.getDomain, tasks.open ]).then(([ domain ]) => {\n return this.openBridge(typeof domain === 'string' ? domain : null);\n });\n\n if (this.html) {\n tasks.loadHTML = tasks.open.then(() => {\n return this.loadHTML();\n });\n\n } else if (loadUrl) {\n tasks.buildUrl = this.buildUrl();\n\n tasks.loadUrl = ZalgoPromise.all([\n tasks.buildUrl,\n tasks.open,\n tasks.linkDomain,\n tasks.listen,\n tasks.open,\n tasks.openBridge,\n tasks.createPrerenderTemplate\n ]).then(([ url ]) => {\n return this.loadUrl(url);\n });\n\n tasks.runTimeout = tasks.loadUrl.then(() => {\n return this.runTimeout();\n });\n }\n\n return ZalgoPromise.hash(tasks);\n\n }).then(() => {\n return this.props.onEnter();\n }).then(() => {\n return this;\n });\n }\n\n @memoized\n getOutlet() : HTMLElement {\n let outlet = document.createElement('div');\n addClass(outlet, CLASS_NAMES.OUTLET);\n return outlet;\n }\n\n validateParentDomain() {\n let domain = getDomain();\n if (!matchDomain(this.component.allowedParentDomains, domain)) {\n throw new RenderError(`Can not be rendered by domain: ${ domain }`);\n }\n }\n\n renderTo(win : CrossDomainWindowType, element : ?string) : ZalgoPromise> {\n return this.tryInit(() => {\n\n if (win === window) {\n return this.render(element);\n }\n\n if (!isSameTopWindow(window, win)) {\n throw new Error(`Can only renderTo an adjacent frame`);\n }\n\n if (element && typeof element !== 'string') {\n throw new Error(`Element passed to renderTo must be a string selector, got ${ typeof element } ${ element }`);\n }\n\n this.checkAllowRenderTo(win);\n\n this.component.log(`render_${ this.context }_to_win`, { element: stringify(element), context: this.context });\n\n this.childWindowName = this.buildChildWindowName({ renderTo: win });\n\n this.delegate(win);\n\n return this.render(element);\n });\n }\n\n @memoized\n prefetch() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.html = this.buildUrl().then(url => {\n return prefetchPage(url).then(html => {\n\n let host = `${ url.split('/').slice(0, 3).join('/') }`;\n let uri = `/${ url.split('/').slice(3).join('/') }`;\n\n return `\n \n\n ${ html }\n\n \n `;\n });\n });\n });\n }\n\n @memoized\n loadHTML() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (!this.html) {\n throw new Error(`Html not prefetched`);\n }\n\n return this.html.then(html => {\n // $FlowFixMe\n return writeToWindow(this.window, html);\n });\n });\n }\n\n checkAllowRenderTo(win : CrossDomainWindowType) {\n\n if (!win) {\n throw this.component.createError(`Must pass window to renderTo`);\n }\n\n if (isSameDomain(win)) {\n return;\n }\n\n let origin = getDomain();\n let domain = this.component.getDomain(null, this.props.env);\n\n if (!domain) {\n throw new Error(`Could not determine domain to allow remote render`);\n }\n\n if (matchDomain(domain, origin)) {\n return;\n }\n\n throw new Error(`Can not render remotely to ${ domain.toString() } - can only render to ${ origin }`);\n }\n\n registerActiveComponent() {\n ParentComponent.activeComponents.push(this);\n\n this.clean.register(() => {\n ParentComponent.activeComponents.splice(ParentComponent.activeComponents.indexOf(this), 1);\n });\n }\n\n\n getComponentParentRef() : { ref : string, uid? : string, distance? : number } {\n let domain = this.component.getDomain(null, this.props.env);\n\n if (domain === getDomain(window)) {\n let uid = uniqueID();\n global.windows = global.windows || {};\n global.windows[uid] = window;\n this.clean.register(() => {\n delete global.windows[uid];\n });\n\n return { ref: WINDOW_REFERENCES.GLOBAL, uid };\n }\n\n if (this.context === CONTEXT_TYPES.POPUP) {\n return { ref: WINDOW_REFERENCES.OPENER };\n }\n\n if (isTop(window)) {\n return { ref: WINDOW_REFERENCES.TOP };\n }\n\n return { ref: WINDOW_REFERENCES.PARENT, distance: getDistanceFromTop(window) };\n }\n\n getRenderParentRef(renderToWindow : CrossDomainWindowType = window) : { ref : string, uid? : string, distance? : number } {\n\n if (renderToWindow === window) {\n return this.getComponentParentRef();\n }\n\n let uid = uniqueID();\n global.windows[uid] = renderToWindow;\n\n this.clean.register(() => {\n delete global.windows[uid];\n });\n\n return { ref: WINDOW_REFERENCES.GLOBAL, uid };\n }\n\n buildChildWindowName({ renderTo = window } : { renderTo : CrossDomainWindowType } = {}) : string {\n\n let childDomain = this.component.getDomain(null, this.props.env);\n let sameDomain = isSameDomain(renderTo);\n\n let uid = uniqueID();\n let tag = this.component.tag;\n let sProps = serializeFunctions(this.getPropsForChild());\n\n let componentParent = this.getComponentParentRef();\n let renderParent = this.getRenderParentRef(renderTo);\n\n let secureProps = !sameDomain && !this.component.unsafeRenderTo;\n\n let props = secureProps\n ? { type: INITIAL_PROPS.UID, uid }\n : { type: INITIAL_PROPS.RAW, value: sProps };\n\n if (props.type === INITIAL_PROPS.UID) {\n global.props[uid] = JSON.stringify(sProps);\n\n this.clean.register(() => {\n delete global.props[uid];\n });\n }\n\n return buildChildWindowName(this.component.name, this.component.version, { uid, tag, componentParent, renderParent, props, childDomain });\n }\n\n\n /* Send to Parent\n --------------\n\n Send a post message to our parent window.\n */\n\n sendToParent(name : string, data : Object) : ZalgoPromise<{ origin : string, source : CrossDomainWindowType, data : Object }> {\n let parentWindow = getParentComponentWindow();\n\n if (!parentWindow) {\n throw new Error(`Can not find parent component window to message`);\n }\n\n this.component.log(`send_to_parent_${ name }`);\n\n return send(getParentComponentWindow(), name, data, { domain: getParentDomain() });\n }\n\n\n /* Set Props\n ---------\n\n Normalize props and generate the url we'll use to render the component\n */\n\n setProps(props : (PropsType & P), required : boolean = true) {\n\n validateProps(this.component, props, required);\n if (this.component.validate) {\n this.component.validate(this.component, props);\n }\n\n // $FlowFixMe\n this.props = this.props || {};\n\n extend(this.props, normalizeProps(this.component, this, props));\n }\n\n\n /* Build Url\n ---------\n\n We build the props we're passed into the initial url. This means the component server-side can start rendering\n itself based on whatever props the merchant provides.\n */\n\n @memoized\n buildUrl() : ZalgoPromise {\n\n let propUrl : (string | void) = this.props.url;\n\n return ZalgoPromise.all([\n\n propUrl,\n // $FlowFixMe\n propsToQuery({ ...this.component.props, ...this.component.builtinProps }, this.props)\n\n ]).then(([ url, query ]) => {\n\n // Do not extend the url if it is for a different domain\n\n if (url && !this.component.getValidDomain(url)) {\n return url;\n }\n\n return ZalgoPromise.try(() => {\n\n return url || this.component.getUrl(this.props.env, this.props);\n\n }).then(finalUrl => {\n\n query.xcomponent = '1';\n return extendUrl(finalUrl, { query });\n });\n });\n }\n\n\n getDomain() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n return this.props.url;\n\n }).then(url => {\n\n let domain = this.component.getDomain(url, this.props.env);\n\n if (domain) {\n return domain;\n }\n\n if (this.component.buildUrl) {\n return ZalgoPromise.try(() => this.component.buildUrl(this.props)).then(builtUrl => {\n return this.component.getDomain(builtUrl, this.props.env);\n });\n }\n\n }).then(domain => {\n\n if (!domain) {\n throw new Error(`Could not determine domain`);\n }\n\n return domain;\n });\n }\n\n getPropsForChild() : (BuiltInPropsType & P) {\n\n let result = {};\n\n for (let key of Object.keys(this.props)) {\n let prop = this.component.getProp(key);\n\n if (!prop || prop.sendToChild !== false) {\n result[key] = this.props[key];\n }\n }\n\n // $FlowFixMe\n return result;\n }\n\n\n /* Update Props\n ------------\n\n Send new props down to the child\n */\n\n updateProps(props : (PropsType & P)) : ZalgoPromise {\n this.setProps(props, false);\n\n return this.onInit.then(() => {\n if (this.childExports) {\n return this.childExports.updateProps(this.getPropsForChild());\n } else {\n throw new Error(`Child exports were not available`);\n }\n });\n }\n\n\n openBridge(domain : ?string) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (!bridge || !this.driver.needsBridge) {\n return;\n }\n\n let needsBridgeParams : Object = { win: this.window };\n if (domain) {\n needsBridgeParams.domain = domain;\n }\n\n let needsBridge = bridge.needsBridge(needsBridgeParams);\n\n let bridgeUrl = this.component.getBridgeUrl(this.props.env);\n\n if (!bridgeUrl) {\n\n if (needsBridge && domain && !bridge.hasBridge(domain, domain)) {\n throw new Error(`Bridge url needed to render ${ this.context }`);\n }\n\n return;\n }\n\n bridgeUrl = extendUrl(bridgeUrl, { query: { version: this.component.version } });\n\n let bridgeDomain = this.component.getBridgeDomain(this.props.env);\n\n if (!bridgeDomain) {\n throw new Error(`Can not determine domain for bridge`);\n }\n\n if (needsBridge) {\n return bridge.openBridge(bridgeUrl, bridgeDomain).then(result => {\n if (result) {\n return result;\n }\n });\n }\n });\n }\n\n\n /* Open\n ----\n\n Open a new window in the desired context\n */\n\n @memoized\n open() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.component.log(`open_${ this.context }`, { windowName: this.childWindowName });\n if (this.props.win) {\n this.clean.set('window', this.props.win);\n assertSameDomain(this.window).name = this.childWindowName;\n return;\n }\n return this.driver.open.call(this);\n });\n }\n\n @memoized\n openPrerender() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.component.prerenderTemplate) {\n return this.driver.openPrerender.call(this);\n }\n });\n }\n\n @memoized\n switchPrerender() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.prerenderWindow && this.driver.switchPrerender) {\n return this.driver.switchPrerender.call(this);\n }\n });\n }\n\n get driver() : ContextDriverType {\n\n if (!this.context) {\n throw new Error('Context not set');\n }\n\n return RENDER_DRIVERS[this.context];\n }\n\n elementReady(element : ElementRefType) : ZalgoPromise {\n return elementReady(element).then(noop);\n }\n\n\n delegate(win : CrossDomainWindowType) {\n\n this.component.log(`delegate_${ this.context }`);\n\n let props = {\n uid: this.props.uid,\n dimensions: this.props.dimensions,\n onClose: this.props.onClose,\n onDisplay: this.props.onDisplay\n };\n\n for (let propName of this.component.getPropNames()) {\n let prop = this.component.getProp(propName);\n\n if (prop.allowDelegate) {\n props[propName] = this.props[propName];\n }\n }\n\n let delegate = send(win, `${ POST_MESSAGE.DELEGATE }_${ this.component.name }`, {\n\n context: this.context,\n env: this.props.env,\n\n options: {\n\n context: this.context,\n\n childWindowName: this.childWindowName,\n isWindowClosed: () => isWindowClosed(this.window),\n\n props,\n\n overrides: {\n focus: () => this.focus(),\n userClose: () => this.userClose(),\n getDomain: () => this.getDomain(),\n\n error: (err) => this.error(err),\n on: (eventName, handler) => this.on(eventName, handler)\n }\n }\n\n }).then(({ data }) => {\n\n this.clean.register(data.destroy);\n return data;\n\n }).catch(err => {\n\n throw new Error(`Unable to delegate rendering. Possibly the component is not loaded in the target window.\\n\\n${ stringifyError(err) }`);\n });\n\n let overrides = this.driver.delegateOverrides;\n\n for (let key of Object.keys(overrides)) {\n let val = overrides[key];\n\n if (val === DELEGATE.CALL_ORIGINAL) {\n continue;\n }\n\n // $FlowFixMe\n let original = this[key];\n\n // $FlowFixMe\n this[key] = function overridenFunction() : ZalgoPromise {\n return delegate.then(data => {\n\n let override = data.overrides[key];\n\n if (val === DELEGATE.CALL_DELEGATE) {\n return override.apply(this, arguments);\n }\n\n if (typeof val === 'function') {\n return val(original, override).apply(this, arguments);\n }\n\n throw new Error(`Expected delgate to be CALL_ORIGINAL, CALL_DELEGATE, or factory method`);\n });\n };\n }\n }\n\n /* Watch For Close\n ---------------\n\n Watch for the child window closing, so we can cleanup.\n Also watch for this window changing location, so we can close the component.\n */\n\n watchForClose() {\n let closeWindowListener = onCloseWindow(this.window, () => {\n this.component.log(`detect_close_child`);\n\n return ZalgoPromise.try(() => {\n return this.props.onClose(CLOSE_REASONS.CLOSE_DETECTED);\n }).finally(() => {\n return this.destroy();\n });\n }, 3000);\n\n this.clean.register('destroyCloseWindowListener', closeWindowListener.cancel);\n }\n\n watchForUnload() {\n\n // Our child has no way of knowing if we navigated off the page. So we have to listen for unload\n // and close the child manually if that happens.\n\n let onunload = once(() => {\n this.component.log(`navigate_away`);\n flush();\n this.destroyComponent();\n });\n\n let unloadWindowListener = addEventListener(window, 'unload', onunload);\n\n this.clean.register('destroyUnloadWindowListener', unloadWindowListener.cancel);\n }\n\n\n /* Load Url\n --------\n\n Load url into the child window. This is separated out because it's quite common for us to have situations\n where opening the child window and loading the url happen at different points.\n */\n\n loadUrl(url : string) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.component.log(`load_url`);\n\n if (window.location.href.split('#')[0] === url.split('#')[0]) {\n url = extendUrl(url, {\n query: {\n [ uniqueID() ]: '1'\n }\n });\n }\n\n return this.driver.loadUrl.call(this, url);\n });\n }\n\n\n hijack(targetElement : HTMLFormElement | HTMLAnchorElement) {\n targetElement.target = this.childWindowName;\n }\n\n /* Run Timeout\n -----------\n\n Set a timeout on the initial render, and call this.props.onTimeout if we don't get an init call in time.\n */\n\n runTimeout() {\n let timeout = this.props.timeout;\n\n if (timeout) {\n let id = this.timeout = setTimeout(() => {\n\n this.component.log(`timed_out`, { timeout: timeout.toString() });\n\n let error = this.component.createError(`Loading component timed out after ${ timeout } milliseconds`);\n\n this.onInit.reject(error);\n this.props.onTimeout(error);\n\n }, timeout);\n\n this.clean.register(() => {\n clearTimeout(id);\n delete this.timeout;\n });\n }\n }\n\n\n /* Listeners\n ---------\n\n Post-robot listeners to the child component window\n */\n\n listeners() : { [string] : (CrossDomainWindowType, Object) => mixed } {\n return {\n\n // The child rendered, and the component called .attach()\n // We have no way to know when the child has set up its listeners for the first time, so we have to listen\n // for this message to be sure so we can continue doing anything from the parent\n\n [ POST_MESSAGE.INIT ](source : CrossDomainWindowType, data : Object) : { props : BuiltInPropsType & P, context : string } {\n\n this.childExports = data.exports;\n\n this.onInit.resolve(this);\n\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n\n return {\n props: this.getPropsForChild(),\n context: this.context\n };\n },\n\n\n // The child has requested that we close it. Since iframes can't close themselves, we need\n // this logic to exist in the parent window\n\n [ POST_MESSAGE.CLOSE ](source : CrossDomainWindowType, data : Object) {\n this.close(data.reason);\n },\n\n [ POST_MESSAGE.CHECK_CLOSE ]() {\n this.checkClose();\n },\n\n // Iframes can't resize themselves, so they need the parent to take care of it for them.\n\n [ POST_MESSAGE.RESIZE ](source : CrossDomainWindowType, data : Object) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.driver.allowResize) {\n return this.resize(data.width, data.height);\n }\n });\n },\n\n [ POST_MESSAGE.HIDE ]() {\n this.hide();\n },\n\n [ POST_MESSAGE.SHOW ]() {\n this.show();\n },\n\n\n // The child encountered an error\n\n [ POST_MESSAGE.ERROR ](source : CrossDomainWindowType, data : Object) {\n this.error(new Error(data.error));\n }\n };\n }\n\n\n /* Resize\n ------\n\n Resize the child component window\n */\n\n resize(width : ?(number | string), height : ?(number | string)) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.component.log(`resize`, { height: stringify(height), width: stringify(width) });\n this.driver.resize.call(this, width, height);\n if (this.props.onResize) {\n this.props.onResize();\n }\n });\n }\n\n\n /* Hide\n ----\n\n Hide the component and any parent template\n */\n\n hide() : void {\n\n if (this.container) {\n hideElement(this.container);\n }\n\n return this.driver.hide.call(this);\n }\n\n show() : void {\n\n if (this.container) {\n showElement(this.container);\n }\n\n return this.driver.show.call(this);\n }\n\n\n checkClose() {\n let closeWindowListener = onCloseWindow(this.window, () => {\n this.userClose();\n }, 50, 500);\n\n this.clean.register(closeWindowListener.cancel);\n }\n\n\n userClose() : ZalgoPromise {\n return this.close(CLOSE_REASONS.USER_CLOSED);\n }\n\n\n /* Close\n -----\n\n Close the child component\n */\n\n @memoized\n close(reason : string = CLOSE_REASONS.PARENT_CALL) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n this.component.log(`close`, { reason });\n\n this.event.triggerOnce(EVENTS.CLOSE);\n return this.props.onClose(reason);\n\n }).then(() => {\n\n return ZalgoPromise.all([\n this.closeComponent(),\n this.closeContainer()\n ]);\n\n }).then(() => {\n\n return this.destroy();\n });\n }\n\n\n @memoized\n closeContainer(reason : string = CLOSE_REASONS.PARENT_CALL) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n this.event.triggerOnce(EVENTS.CLOSE);\n return this.props.onClose(reason);\n\n }).then(() => {\n\n return ZalgoPromise.all([\n this.closeComponent(reason),\n this.hideContainer()\n ]);\n\n }).then(() => {\n\n return this.destroyContainer();\n });\n }\n\n\n @memoized\n destroyContainer() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.clean.run('destroyContainerEvents');\n this.clean.run('destroyContainerTemplate');\n });\n }\n\n\n @memoized\n closeComponent(reason : string = CLOSE_REASONS.PARENT_CALL) : ZalgoPromise {\n\n let win = this.window;\n\n return ZalgoPromise.try(() => {\n\n return this.cancelContainerEvents();\n\n }).then(() => {\n\n this.event.triggerOnce(EVENTS.CLOSE);\n return this.props.onClose(reason);\n\n }).then(() => {\n\n return this.hideComponent();\n\n }).then(() => {\n\n return this.destroyComponent();\n\n }).then(() => {\n\n // IE in metro mode -- child window needs to close itself, or close will hang\n\n if (this.childExports && this.context === CONTEXT_TYPES.POPUP && !isWindowClosed(win)) {\n this.childExports.close().catch(noop);\n }\n });\n }\n\n destroyComponent() {\n this.clean.run('destroyUnloadWindowListener');\n this.clean.run('destroyCloseWindowListener');\n this.clean.run('destroyContainerEvents');\n this.clean.run('destroyWindow');\n }\n\n @memoized\n showContainer() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.props.onDisplay) {\n return this.props.onDisplay();\n }\n }).then(() => {\n if (this.container) {\n return showAndAnimate(this.container, ANIMATION_NAMES.SHOW_CONTAINER, this.clean.register);\n }\n });\n }\n\n @memoized\n showComponent() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.props.onDisplay) {\n return this.props.onDisplay();\n }\n }).then(() => {\n if (this.element) {\n return showAndAnimate(this.element, ANIMATION_NAMES.SHOW_COMPONENT, this.clean.register);\n }\n });\n }\n\n @memoized\n hideContainer() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.container) {\n return animateAndHide(this.container, ANIMATION_NAMES.HIDE_CONTAINER, this.clean.register);\n } else {\n return ZalgoPromise.resolve();\n }\n });\n }\n\n @memoized\n hideComponent() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.element) {\n return animateAndHide(this.element, ANIMATION_NAMES.HIDE_COMPONENT, this.clean.register);\n } else {\n return ZalgoPromise.resolve();\n }\n });\n }\n\n\n /* Focus\n -----\n\n Focus the child component window\n */\n\n focus() {\n\n if (this.window && !isWindowClosed(this.window)) {\n this.component.log(`focus`);\n this.window.focus();\n\n } else {\n\n throw new Error(`No window to focus`);\n }\n }\n\n\n /* Create Component Template\n -------------------------\n\n Creates an initial template and stylesheet which are loaded into the child window, to be displayed before the url is loaded\n */\n\n @memoized\n createPrerenderTemplate() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (!this.component.prerenderTemplate) {\n return ZalgoPromise.resolve();\n }\n\n return ZalgoPromise.try(() => {\n\n if (this.prerenderIframe) {\n return awaitFrameLoad(this.prerenderIframe).then(() => this.prerenderWindow);\n } else {\n return this.prerenderWindow;\n }\n\n }).then(win => {\n\n let doc;\n\n try {\n doc = win.document;\n } catch (err) {\n return;\n }\n\n let el;\n\n try {\n el = this.renderTemplate(this.component.prerenderTemplate, {\n jsxDom: jsxDom.bind(doc),\n document: doc\n });\n } catch (err) {\n this.component.logError('preprender_error', { err: err.stack ? err.stack : err.toString() });\n console.error(err.stack ? err.stack : err); // eslint-disable-line no-console\n return;\n }\n\n try {\n writeElementToWindow(win, el);\n } catch (err) {\n this.component.logError('preprender_error', { err: err.stack ? err.stack : err.toString() });\n console.error(err.stack ? err.stack : err); // eslint-disable-line no-console\n }\n\n let { width = false, height = false, element = 'body' } = (typeof this.component.autoResize === 'object' && this.component.autoResize !== null)\n ? this.component.autoResize\n : {};\n\n element = getElementSafe(element, doc);\n\n if (element && (width || height)) {\n onResize(element, ({ width: newWidth, height: newHeight }) => {\n this.resize(width ? newWidth : undefined, height ? newHeight : undefined);\n }, { width, height, win });\n }\n });\n });\n }\n\n\n /* Create Parent Template\n ----------------------\n\n Create a template and stylesheet for the parent template behind the element\n */\n\n renderTemplate(renderer : (RenderOptionsType) => HTMLElement, options : Object = {}) : HTMLElement {\n\n let {\n width = `${ DEFAULT_DIMENSIONS.WIDTH }px`,\n height = `${ DEFAULT_DIMENSIONS.HEIGHT }px`\n } = (this.component.dimensions || {});\n\n return renderer.call(this, {\n id: `${ CLASS_NAMES.ZOID }-${ this.component.tag }-${ this.props.uid }`,\n props: renderer.__xdomain__ ? null : this.props,\n tag: this.component.tag,\n context: this.context,\n outlet: this.getOutlet(),\n CLASS: CLASS_NAMES,\n ANIMATION: ANIMATION_NAMES,\n CONTEXT: CONTEXT_TYPES,\n EVENT: EVENTS,\n actions: {\n close: () => this.userClose(),\n focus: () => this.focus()\n },\n on: (eventName, handler) => this.on(eventName, handler),\n jsxDom,\n document,\n dimensions: { width, height },\n ...options\n });\n }\n\n @memoized\n openContainer(element : ?HTMLElement) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n let el;\n\n if (element) {\n el = getElement(element);\n } else {\n el = document.body;\n }\n\n if (!el) {\n throw new Error(`Could not find element to open container into`);\n }\n\n if (!this.component.containerTemplate) {\n if (this.driver.renderedIntoContainerTemplate) {\n throw new Error(`containerTemplate needed to render ${ this.context }`);\n }\n\n return;\n }\n\n let container = this.renderTemplate(this.component.containerTemplate, {\n container: el\n });\n\n this.container = container;\n hideElement(this.container);\n appendChild(el, this.container);\n\n if (this.driver.renderedIntoContainerTemplate) {\n this.element = this.getOutlet();\n hideElement(this.element);\n\n if (!this.element) {\n throw new Error('Could not find element to render component into');\n }\n\n hideElement(this.element);\n }\n\n this.clean.register('destroyContainerTemplate', () => {\n\n if (this.container && this.container.parentNode) {\n this.container.parentNode.removeChild(this.container);\n }\n\n delete this.container;\n });\n });\n }\n\n cancelContainerEvents() {\n this.clean.run('destroyContainerEvents');\n }\n\n\n /* Destroy\n -------\n\n Close the component and clean up any listeners and state\n */\n\n destroy() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.clean.hasTasks()) {\n this.component.log(`destroy`);\n flush();\n return this.clean.all();\n }\n });\n }\n\n\n tryInit(method : () => mixed) : ZalgoPromise> {\n return ZalgoPromise.try(method).catch(err => {\n this.onInit.reject(err);\n }).then(() => {\n return this.onInit;\n });\n }\n\n\n /* Error\n -----\n\n Handle an error\n */\n\n error(err : mixed) : ZalgoPromise {\n // eslint-disable-next-line promise/no-promise-in-callback\n return ZalgoPromise.try(() => {\n\n this.handledErrors = this.handledErrors || [];\n\n if (this.handledErrors.indexOf(err) !== -1) {\n // $FlowFixMe\n return;\n }\n\n this.handledErrors.push(err);\n\n this.onInit.reject(err);\n\n return this.destroy();\n\n }).then(() => {\n\n if (this.props.onError) {\n return this.props.onError(err);\n }\n\n }).catch(errErr => { // eslint-disable-line unicorn/catch-error-name\n\n throw new Error(`An error was encountered while handling error:\\n\\n ${ stringifyError(err) }\\n\\n${ stringifyError(errErr) }`);\n\n }).then(() => {\n\n if (!this.props.onError) {\n throw err;\n }\n });\n }\n\n static activeComponents : Array> = []\n\n static destroyAll() : ZalgoPromise {\n let results = [];\n\n while (ParentComponent.activeComponents.length) {\n results.push(ParentComponent.activeComponents[0].destroy());\n }\n\n return ZalgoPromise.all(results).then(noop);\n }\n}\n","/* @flow */\n\nimport { onCloseWindow, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { BaseComponent } from '../base';\nimport { ParentComponent } from '../parent';\nimport { RENDER_DRIVERS, type ContextDriverType } from '../parent/drivers';\nimport type { Component } from '../component';\nimport { noop } from '../../lib';\nimport type { CancelableType, DimensionsType } from '../../types';\n\nexport type DelegatePropsType = {\n uid : string,\n dimensions : DimensionsType,\n onClose : () => ?ZalgoPromise,\n onDisplay : () => ?ZalgoPromise\n};\n\nexport type DelegateOptionsType = {\n context : string,\n props : DelegatePropsType,\n childWindowName : string,\n isWindowClosed : () => ZalgoPromise,\n \n overrides : {\n focus : () => ZalgoPromise,\n userClose : (string) => ZalgoPromise,\n getDomain : () => ZalgoPromise,\n error : (mixed) => ZalgoPromise,\n on : (string, () => void) => CancelableType\n }\n};\n\nexport class DelegateComponent

extends BaseComponent

{\n\n source : CrossDomainWindowType\n context : string\n props : DelegatePropsType\n\n focus : () => ZalgoPromise\n userClose : (string) => ZalgoPromise\n getDomain : () => ZalgoPromise\n error : (mixed) => ZalgoPromise\n on : (string, () => void) => CancelableType\n\n childWindowName : string\n isWindowClosed : () => ZalgoPromise\n\n constructor(component : Component

, source : CrossDomainWindowType, options : DelegateOptionsType) {\n super();\n\n this.component = component;\n this.clean.set('source', source);\n\n this.context = options.context;\n\n this.props = {\n uid: options.props.uid,\n dimensions: options.props.dimensions,\n onClose: options.props.onClose,\n onDisplay: options.props.onDisplay\n };\n\n for (let propName of component.getPropNames()) {\n // $FlowFixMe\n let prop = this.component.getProp(propName);\n\n if (prop.allowDelegate) {\n this.props[propName] = options.props[propName];\n }\n }\n\n this.focus = () => {\n return ZalgoPromise.all([\n this.isWindowClosed().then(closed => {\n if (!closed) {\n window.open('', this.childWindowName);\n }\n }),\n options.overrides.focus.call(this)\n ]).then(noop);\n };\n\n this.clean.register('destroyFocusOverride', () => {\n // $FlowFixMe\n this.focus = noop;\n });\n\n this.userClose = options.overrides.userClose;\n this.getDomain = options.overrides.getDomain;\n this.error = options.overrides.error;\n this.on = options.overrides.on;\n\n let delegateOverrides = RENDER_DRIVERS[options.context].delegateOverrides;\n\n for (let key of Object.keys(delegateOverrides)) {\n // $FlowFixMe\n this[key] = ParentComponent.prototype[key];\n }\n\n this.childWindowName = options.childWindowName;\n this.isWindowClosed = options.isWindowClosed;\n\n ParentComponent.prototype.registerActiveComponent.call(this);\n\n this.watchForClose();\n }\n\n get driver() : ContextDriverType {\n\n if (!this.context) {\n throw new Error('Context not set');\n }\n\n return RENDER_DRIVERS[this.context];\n }\n\n watchForClose() {\n let closeWindowListener = onCloseWindow(this.source, () => this.destroy(), 3000);\n this.clean.register('destroyCloseWindowListener', closeWindowListener.cancel);\n }\n\n getOverrides(context : string) : { [string] : mixed } {\n\n let delegateOverrides = RENDER_DRIVERS[context].delegateOverrides;\n\n let overrides = {};\n\n let self = this;\n\n for (let key of Object.keys(delegateOverrides)) {\n overrides[key] = function delegateOverride() : mixed {\n // $FlowFixMe\n return ParentComponent.prototype[key].apply(self, arguments);\n };\n }\n\n return overrides;\n }\n\n destroy() : ZalgoPromise {\n return this.clean.all();\n }\n}\n","/* @flow */\n\nimport { PROP_TYPES_LIST, CONTEXT_TYPES_LIST } from '../../constants';\nimport { isPerc, isPx } from '../../lib';\n\nimport type { ComponentOptionsType } from './index';\n\nfunction validatePropDefinitions

(options : ComponentOptionsType

) {\n\n if (options.props && !(typeof options.props === 'object')) {\n throw new Error(`Expected options.props to be an object`);\n }\n\n if (options.props) {\n for (let key of Object.keys(options.props)) {\n\n // $FlowFixMe\n let prop = options.props[key];\n\n if (!prop || !(typeof prop === 'object')) {\n throw new Error(`Expected options.props.${ key } to be an object`);\n }\n\n if (!prop.type) {\n throw new Error(`Expected prop.type`);\n }\n\n if (PROP_TYPES_LIST.indexOf(prop.type) === -1) {\n throw new Error(`Expected prop.type to be one of ${ PROP_TYPES_LIST.join(', ') }`);\n }\n\n if (prop.required && prop.def) {\n throw new Error(`Required prop can not have a default value`);\n }\n }\n }\n}\n\n// eslint-disable-next-line complexity\nexport function validate

(options : ?ComponentOptionsType

) { // eslint-ignore-line\n\n if (!options) {\n throw new Error(`Expecred options to be passed`);\n }\n\n if (!options.tag || !options.tag.match(/^[a-z0-9-]+$/)) {\n throw new Error(`Invalid options.tag: ${ options.tag }`);\n }\n\n validatePropDefinitions(options);\n\n if (options.dimensions) {\n if (options.dimensions && !isPx(options.dimensions.width) && !isPerc(options.dimensions.width)) {\n throw new Error(`Expected options.dimensions.width to be a px or % string value`);\n }\n\n if (options.dimensions && !isPx(options.dimensions.height) && !isPerc(options.dimensions.height)) {\n throw new Error(`Expected options.dimensions.height to be a px or % string value`);\n }\n }\n\n if (options.contexts) {\n\n if (options.contexts.popup && !__ZOID__.__POPUP_SUPPORT__) {\n throw new Error(`Popups not supported in this build -- please use the full zoid.js build`);\n }\n\n let anyEnabled = false;\n\n for (let context of Object.keys(options.contexts)) {\n\n if (CONTEXT_TYPES_LIST.indexOf(context) === -1) {\n throw new Error(`Unsupported context type: ${ context }`);\n }\n\n if ((options.contexts && options.contexts[context]) || (options.contexts && options.contexts[context] === undefined)) {\n anyEnabled = true;\n }\n }\n\n if (!anyEnabled) {\n throw new Error(`No context type is enabled`);\n }\n }\n\n if (options.defaultContext) {\n if (CONTEXT_TYPES_LIST.indexOf(options.defaultContext) === -1) {\n throw new Error(`Unsupported context type: ${ options.defaultContext || 'unknown' }`);\n }\n\n if (options.contexts && options.defaultContext && !options.contexts[options.defaultContext]) {\n throw new Error(`Disallowed default context type: ${ options.defaultContext || 'unknown' }`);\n }\n }\n\n if (options.url && options.buildUrl) {\n throw new Error(`Can not pass both options.url and options.buildUrl`);\n }\n\n if (options.defaultEnv) {\n if (typeof options.defaultEnv !== 'string') {\n throw new TypeError(`Expected options.defaultEnv to be a string`);\n }\n\n if (!options.buildUrl && typeof options.url !== 'object') {\n throw new Error(`Expected options.url to be an object mapping env->url`);\n }\n\n if (options.url && typeof options.url === 'object' && !options.url[options.defaultEnv]) {\n throw new Error(`No url found for default env: ${ options.defaultEnv }`);\n }\n }\n\n if (options.url && typeof options.url === 'object') {\n\n if (!options.defaultEnv) {\n throw new Error(`Must pass options.defaultEnv with env->url mapping`);\n }\n\n for (let env of Object.keys(options.url)) {\n if (!options.url[env]) {\n throw new Error(`No url specified for env: ${ env }`);\n }\n }\n }\n\n if (options.prerenderTemplate && typeof options.prerenderTemplate !== 'function') {\n throw new Error(`Expected options.prerenderTemplate to be a function`);\n }\n\n if (options.containerTemplate && typeof options.containerTemplate !== 'function') {\n throw new Error(`Expected options.containerTemplate to be a function`);\n }\n}\n","/* @flow */\n/* @jsx jsxDom */\n\nimport { type RenderOptionsType } from '../../parent';\n\nexport function defaultContainerTemplate({ id, tag, context, CLASS, outlet, jsxDom, dimensions : { width, height } } : RenderOptionsType) : HTMLElement {\n\n return (\n

\n \n\n { outlet }\n
\n );\n}\n","/* @flow */\n/* @jsx jsxDom */\n\nimport { type RenderOptionsType } from '../../parent';\n\nexport function defaultPrerenderTemplate({ jsxDom } : RenderOptionsType) : HTMLElement {\n return (\n \n \n \n \n \n
\n
\n
\n \n \n );\n}\n","/* @flow */\n\nexport * from './container';\nexport * from './component';\n","/* @flow */\n\nimport { type ZalgoPromise } from 'zalgo-promise/src';\nimport type { SameDomainWindowType } from 'cross-domain-utils/src';\n\nimport { uniqueID } from '../../lib';\nimport { type DimensionsType } from '../../types';\n\ntype PropDefinitionType = {\n type : S,\n alias? : string,\n value? : T,\n required? : boolean,\n noop? : boolean,\n once? : boolean,\n memoize? : boolean,\n promisify? : boolean,\n queryParam? : boolean | string | (T) => (string | ZalgoPromise),\n queryValue? : (T) => (ZalgoPromise | mixed),\n sendToChild? : boolean,\n allowDelegate? : boolean,\n validate? : (T, PropsType & P) => void,\n decorate? : (T, PropsType & P) => (void | ZalgoPromise | T),\n def? : (P) => ?T,\n sameDomain? : boolean,\n serialization? : 'json' | 'dotify',\n childDecorate? : (T) => ?T,\n denodeify? : boolean\n};\n\nexport type BooleanPropDefinitionType = PropDefinitionType;\nexport type StringPropDefinitionType = PropDefinitionType;\nexport type NumberPropDefinitionType = PropDefinitionType;\nexport type FunctionPropDefinitionType = PropDefinitionType;\nexport type ObjectPropDefinitionType = PropDefinitionType;\n\nexport type MixedPropDefinitionType

= BooleanPropDefinitionType<*, P> | StringPropDefinitionType<*, P> | NumberPropDefinitionType<*, P> | FunctionPropDefinitionType<*, P> | ObjectPropDefinitionType<*, P>;\n\nexport type UserPropsDefinitionType

= {\n [string] : MixedPropDefinitionType

\n};\n\nexport type EventHandlerType = (T) => void | ZalgoPromise;\n\ntype envPropType = string;\ntype uidPropType = string;\ntype urlPropType = string;\ntype versionPropType = string;\ntype timeoutPropType = number;\ntype logLevelPropType = string;\ntype dimensionsPropType = DimensionsType;\ntype winPropType = SameDomainWindowType;\n\ntype onDisplayPropType = EventHandlerType;\ntype onEnterPropType = EventHandlerType;\ntype onRenderPropType = EventHandlerType;\ntype onClosePropType = EventHandlerType;\ntype onResizePropType = EventHandlerType;\ntype onTimeoutPropType = EventHandlerType;\ntype onErrorPropType = EventHandlerType;\n\nexport type BuiltInPropsType = {\n env : envPropType,\n uid : uidPropType,\n url? : urlPropType,\n version? : versionPropType,\n timeout? : timeoutPropType,\n logLevel : logLevelPropType,\n dimensions? : dimensionsPropType,\n win? : winPropType,\n\n onDisplay : onDisplayPropType,\n onEnter : onEnterPropType,\n onRender : onRenderPropType,\n onClose : onClosePropType,\n onResize : onResizePropType,\n onTimeout : onTimeoutPropType,\n onError? : onErrorPropType\n};\n\nexport type PropsType = {\n env? : envPropType,\n uid? : uidPropType,\n url? : urlPropType,\n version? : versionPropType,\n timeout? : timeoutPropType,\n logLevel? : logLevelPropType,\n dimensions? : dimensionsPropType,\n win? : winPropType,\n\n onDisplay? : onDisplayPropType,\n onEnter? : onEnterPropType,\n onRender? : onRenderPropType,\n onClose? : onClosePropType,\n onResize? : onResizePropType,\n onTimeout? : onTimeoutPropType,\n onError? : onErrorPropType\n};\n\nexport type BuiltInPropsDefinitionType

= {\n env : StringPropDefinitionType,\n uid : StringPropDefinitionType,\n url : StringPropDefinitionType,\n version : StringPropDefinitionType,\n timeout : NumberPropDefinitionType,\n logLevel : StringPropDefinitionType,\n dimensions : ObjectPropDefinitionType,\n win : ObjectPropDefinitionType,\n\n onDisplay : FunctionPropDefinitionType,\n onEnter : FunctionPropDefinitionType,\n onRender : FunctionPropDefinitionType,\n onClose : FunctionPropDefinitionType,\n onResize : FunctionPropDefinitionType,\n onTimeout : FunctionPropDefinitionType,\n onError : FunctionPropDefinitionType\n};\n\n/* Internal Props\n --------------\n\n We define and use certain props by default, for configuration and events that are used at the framework level.\n These follow the same format as regular props, and are classed as reserved words that may not be overriden by users.\n*/\n\nexport function getInternalProps

() : BuiltInPropsDefinitionType

{\n return {\n\n // The desired env in which the component is being rendered. Used to determine the correct url\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n def() : string {\n return this.defaultEnv;\n }\n },\n\n uid: {\n type: 'string',\n def() : string {\n return uniqueID();\n },\n queryParam: true\n },\n\n logLevel: {\n type: 'string',\n required: false,\n queryParam: true,\n def() : string {\n return this.defaultLogLevel;\n }\n },\n\n // A custom url to use to render the component\n\n url: {\n type: 'string',\n required: false,\n promise: true,\n sendToChild: false\n },\n\n win: {\n type: 'object',\n required: false,\n sendToChild: false\n },\n\n dimensions: {\n type: 'object',\n required: false\n },\n\n version: {\n type: 'string',\n required: false,\n queryParam: true,\n def() : string {\n return this.version;\n }\n },\n\n // A millisecond timeout before onTimeout is called\n\n timeout: {\n type: 'number',\n required: false,\n sendToChild: false\n },\n\n onDisplay: {\n type: 'function',\n required: false,\n noop: true,\n promisify: true,\n memoize: true,\n sendToChild: false\n },\n\n onEnter: {\n type: 'function',\n required: false,\n noop: true,\n promisify: true,\n sendToChild: false\n },\n\n // When we get an INIT message from the child\n\n onRender: {\n type: 'function',\n required: false,\n noop: true,\n promisify: true,\n sendToChild: false\n },\n\n // When the user closes the component.\n\n onClose: {\n type: 'function',\n required: false,\n noop: true,\n once: true,\n promisify: true,\n sendToChild: false\n },\n\n onResize: {\n type: 'function',\n required: false,\n noop: true,\n sendToChild: false\n },\n\n // When we time-out before getting an INIT message from the child. Defaults to onError if no handler passed.\n\n onTimeout: {\n type: 'function',\n required: false,\n memoize: true,\n promisify: true,\n sendToChild: false,\n def() : (() => void) {\n return function onTimeout(err : mixed) : void {\n if (this.props.onError) {\n return this.props.onError(err);\n }\n throw err;\n };\n }\n },\n\n // When the component experiences an error\n\n onError: {\n type: 'function',\n required: false,\n promisify: true,\n sendToChild: true,\n once: true,\n def() : (() => void) {\n return function onError(err : mixed) {\n setTimeout(() => {\n throw err;\n });\n };\n }\n }\n };\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { on, send } from 'post-robot/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getDomain, getDomainFromUrl, matchDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { BaseComponent } from '../base';\nimport { ChildComponent } from '../child';\nimport { ParentComponent, type RenderOptionsType } from '../parent';\nimport { DelegateComponent, type DelegateOptionsType } from '../delegate';\nimport { isZoidComponentWindow, getComponentMeta } from '../window';\nimport { CONTEXT_TYPES, POST_MESSAGE, WILDCARD } from '../../constants';\nimport { angular, angular2, glimmer, react, vue, script } from '../../drivers/index';\nimport { info, error, warn, setLogLevel, memoize } from '../../lib';\nimport type { EnvStringRegExp, CssDimensionsType, StringMatcherType, ElementRefType, EnvString } from '../../types';\n\nimport { validate } from './validate';\nimport { defaultContainerTemplate, defaultPrerenderTemplate } from './templates';\nimport { getInternalProps, type UserPropsDefinitionType, type BuiltInPropsDefinitionType, type PropsType, type BuiltInPropsType, type MixedPropDefinitionType } from './props';\n\nconst drivers = { angular, angular2, glimmer, react, vue, script };\n\n/* Component\n ---------\n\n This is the spec for the component. The idea is, when I call zoid.create(), it will create a new instance\n of Component with the blueprint needed to set up ParentComponents and ChildComponents.\n\n This is the one portion of code which is required by -- and shared to -- both the parent and child windows, and\n contains all of the configuration needed for them to set themselves up.\n*/\n\nexport type ComponentOptionsType

= {\n\n tag : string,\n\n url? : EnvString,\n buildUrl? : (BuiltInPropsType & P) => string | ZalgoPromise,\n\n domain? : EnvStringRegExp,\n bridgeUrl? : EnvString,\n bridgeDomain? : EnvString,\n\n props? : UserPropsDefinitionType

,\n\n dimensions? : CssDimensionsType,\n scrolling? : boolean,\n autoResize? : boolean | { width? : boolean, height? : boolean, element? : string },\n listenForResize? : boolean,\n\n defaultLogLevel? : string,\n allowedParentDomains? : StringMatcherType,\n\n version? : string,\n defaultEnv? : string,\n\n contexts? : { iframe? : boolean, popup? : boolean },\n defaultContext? : string,\n\n containerTemplate? : (RenderOptionsType) => HTMLElement,\n prerenderTemplate? : (RenderOptionsType) => HTMLElement,\n\n validate? : (Component

, UserPropsDefinitionType

) => void,\n\n unsafeRenderTo? : boolean\n};\n\nexport type ComponentDriverType = {\n global : () => ?T,\n register : (Component

, T) => mixed\n};\n\nexport class Component

extends BaseComponent

{\n\n name : string\n looseProps : boolean\n\n tag : string\n url : EnvString\n\n domain : EnvStringRegExp\n bridgeUrl : EnvString\n bridgeDomain : EnvString\n\n props : UserPropsDefinitionType

\n builtinProps : BuiltInPropsDefinitionType

\n\n dimensions : CssDimensionsType\n scrolling : boolean\n autoResize : ?(boolean | { width? : boolean, height? : boolean, element? : string })\n listenForResize : ?boolean\n\n defaultLogLevel : string\n allowedParentDomains : StringMatcherType\n\n version : string\n defaultEnv : string\n buildUrl : (BuiltInPropsType & P) => string | ZalgoPromise\n\n contexts : { iframe? : boolean, popup? : boolean }\n defaultContext : string\n\n containerTemplate : (RenderOptionsType) => HTMLElement\n prerenderTemplate : (RenderOptionsType) => HTMLElement\n\n validate : (Component

, (PropsType & P)) => void\n\n unsafeRenderTo : ?boolean\n\n driverCache : { [string] : mixed }\n\n xchild : ?ChildComponent

\n xprops : ?P\n\n constructor(options : ComponentOptionsType

) {\n super();\n validate(options);\n\n // The tag name of the component. Used by some drivers (e.g. angular) to turn the component into an html element,\n // e.g. \n\n this.addProp(options, 'tag');\n\n this.addProp(options, 'defaultLogLevel', 'info');\n\n this.addProp(options, 'allowedParentDomains', WILDCARD);\n\n // initially set log level to default log level configured when creating component\n setLogLevel(this.defaultLogLevel);\n\n if (Component.components[this.tag]) {\n throw new Error(`Can not register multiple components with the same tag`);\n }\n\n // Name of the component, used for logging. Auto-generated from the tag name by default.\n\n this.addProp(options, 'name', this.tag.replace(/-/g, '_'));\n\n // A json based spec describing what kind of props the component accepts. This is used to validate any props before\n // they are passed down to the child.\n\n this.builtinProps = getInternalProps();\n this.props = options.props || {};\n\n if (!options.props) {\n this.looseProps = true;\n }\n\n // The dimensions of the component, e.g. { width: '300px', height: '150px' }\n\n this.addProp(options, 'dimensions');\n this.addProp(options, 'scrolling');\n this.addProp(options, 'listenForResize');\n\n this.addProp(options, 'version', 'latest');\n\n // The default environment we should render to if none is specified in the parent\n\n this.addProp(options, 'defaultEnv');\n\n // A mapping of env->url, used to determine which url to load for which env\n\n this.addProp(options, 'buildUrl');\n\n this.addProp(options, 'url');\n this.addProp(options, 'domain');\n\n this.addProp(options, 'bridgeUrl');\n this.addProp(options, 'bridgeDomain');\n\n this.addProp(options, 'attributes', {});\n\n // A url to use by default to render the component, if not using envs\n\n\n // The allowed contexts. For example { iframe: true, popup: false }\n\n this.addProp(options, 'contexts', { iframe: true, popup: false });\n\n // The default context to render to\n\n this.addProp(options, 'defaultContext');\n\n // Auto Resize option\n\n this.addProp(options, 'autoResize', false);\n\n // Templates and styles for the parent page and the initial rendering of the component\n\n this.addProp(options, 'containerTemplate', defaultContainerTemplate);\n this.addProp(options, 'prerenderTemplate', defaultPrerenderTemplate);\n\n // Validation\n\n this.addProp(options, 'validate');\n\n // Security\n\n this.addProp(options, 'unsafeRenderTo', false);\n\n // A mapping of tag->component so we can reference components by string tag name\n\n Component.components[this.tag] = this;\n\n // Register all of the drivers for instantiating components. The model used is -- there's a standard javascript\n // way of rendering a component, then each other technology (e.g. react) needs to hook into that interface.\n // This makes us a little more pluggable and loosely coupled.\n this.registerDrivers();\n this.registerChild();\n this.listenDelegate();\n }\n\n @memoize\n getPropNames() : Array {\n let props = Object.keys(this.props);\n\n for (let key of Object.keys(this.builtinProps)) {\n if (props.indexOf(key) === -1) {\n props.push(key);\n }\n }\n\n return props;\n }\n\n // $FlowFixMe\n getProp(name : string) : MixedPropDefinitionType

{\n // $FlowFixMe\n return this.props[name] || this.builtinProps[name];\n }\n\n registerDrivers() {\n this.driverCache = {};\n\n for (let driverName of Object.keys(drivers)) {\n if (driverName.indexOf('_') === 0) {\n continue;\n }\n\n let driver = drivers[driverName];\n let glob = driver.global();\n if (glob) {\n this.driver(driverName, glob);\n }\n }\n }\n\n driver(name : string, dep : mixed) : mixed {\n if (!drivers[name]) {\n throw new Error(`Could not find driver for framework: ${ name }`);\n }\n\n if (!this.driverCache[name]) {\n this.driverCache[name] = drivers[name].register(this, dep);\n }\n\n return this.driverCache[name];\n }\n\n registerChild() : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n if (this.isChild()) {\n return new ChildComponent(this);\n }\n });\n }\n\n listenDelegate() {\n on(`${ POST_MESSAGE.ALLOW_DELEGATE }_${ this.name }`, () => {\n return true;\n });\n\n on(`${ POST_MESSAGE.DELEGATE }_${ this.name }`, ({ source, origin, data }) => {\n\n let domain = this.getDomain(null, data.env || this.defaultEnv);\n\n if (!domain) {\n throw new Error(`Could not determine domain to allow remote render`);\n }\n\n if (!matchDomain(domain, origin)) {\n throw new Error(`Can not render from ${ origin } - expected ${ domain.toString() }`);\n }\n\n let delegate = this.delegate(source, data.options);\n\n return {\n overrides: delegate.getOverrides(data.context),\n destroy: () => delegate.destroy()\n };\n });\n }\n\n canRenderTo(win : CrossDomainWindowType) : ZalgoPromise {\n return send(win, `${ POST_MESSAGE.ALLOW_DELEGATE }_${ this.name }`).then(({ data }) => {\n return data;\n }).catch(() => {\n return false;\n });\n }\n\n\n getValidDomain(url : ?string) : ?(string | RegExp) {\n\n if (!url) {\n return;\n }\n\n let domain = getDomainFromUrl(url);\n\n if (typeof this.domain === 'string' && domain === this.domain) {\n return domain;\n }\n\n let domains = this.domain;\n\n if (domains && typeof domains === 'object' && !(domains instanceof RegExp)) {\n for (let env of Object.keys(domains)) {\n\n if (env === 'test') {\n continue;\n }\n\n if (domain === domains[env]) {\n return domain;\n }\n }\n }\n }\n\n\n getDomain(url : ?string, env : string) : ?(string | RegExp) {\n\n let domain = this.getForEnv(this.domain, env);\n\n if (domain) {\n return domain;\n }\n\n domain = this.getValidDomain(url);\n\n if (domain) {\n return domain;\n }\n\n // $FlowFixMe\n let envUrl = this.getForEnv(this.url, env);\n\n if (envUrl) {\n // $FlowFixMe\n return getDomainFromUrl(envUrl);\n }\n\n if (url) {\n return getDomainFromUrl(url);\n }\n }\n\n getBridgeUrl(env : string) : ?string {\n // $FlowFixMe\n return this.getForEnv(this.bridgeUrl, env);\n }\n\n getForEnv(item : (string | RegExp) | { [string] : (string | RegExp) }, env : ?string) : ?(string | RegExp) {\n\n if (!item) {\n return;\n }\n\n if (typeof item === 'string' || item instanceof RegExp) {\n return item;\n }\n\n if (!env) {\n env = this.defaultEnv;\n }\n\n if (!env) {\n return;\n }\n\n if (env && typeof item === 'object' && item[env]) {\n return item[env];\n }\n }\n\n getBridgeDomain(env : string) : ?string {\n\n // $FlowFixMe\n let bridgeDomain = this.getForEnv(this.bridgeDomain, env);\n\n if (bridgeDomain) {\n // $FlowFixMe\n return bridgeDomain;\n }\n\n let bridgeUrl = this.getBridgeUrl(env);\n\n if (bridgeUrl) {\n return getDomainFromUrl(bridgeUrl);\n }\n }\n\n getUrl(env : string, props : BuiltInPropsType & P) : (string | ZalgoPromise) {\n\n // $FlowFixMe\n let url = this.getForEnv(this.url, env);\n\n if (url) {\n // $FlowFixMe\n return url;\n }\n\n if (this.buildUrl) {\n return this.buildUrl(props);\n }\n\n throw new Error(`Unable to get url`);\n }\n\n isZoidComponent() : boolean {\n return isZoidComponentWindow();\n }\n\n isChild() : boolean {\n if (!isZoidComponentWindow()) {\n return false;\n }\n\n const { tag, childDomain } = getComponentMeta();\n\n if (childDomain && childDomain !== getDomain()) {\n return false;\n }\n\n if (tag !== this.tag) {\n return false;\n }\n\n return true;\n }\n\n\n createError(message : string, tag : ?string) : Error {\n return new Error(`[${ tag || this.tag }] ${ message }`);\n }\n\n\n /* Init\n ----\n\n Shortcut to instantiate a component on a parent page, with props\n */\n\n init(props : (PropsType & P), context : ?string, element : ElementRefType) : ParentComponent

{\n return new ParentComponent(this, this.getRenderContext(context, element), { props });\n }\n\n\n delegate(source : CrossDomainWindowType, options : DelegateOptionsType) : DelegateComponent

{\n return new DelegateComponent(this, source, options);\n }\n\n validateRenderContext(context : ?string, element : ?ElementRefType) {\n if (context && !this.contexts[context]) {\n throw new Error(`[${ this.tag }] Can not render to ${ context }`);\n }\n\n if (!element && context === CONTEXT_TYPES.IFRAME) {\n throw new Error(`[${ this.tag }] Context type ${ CONTEXT_TYPES.IFRAME } requires an element selector`);\n }\n }\n\n getDefaultContext() : string {\n if (this.defaultContext) {\n return this.defaultContext;\n } else if (this.contexts[CONTEXT_TYPES.IFRAME]) {\n return CONTEXT_TYPES.IFRAME;\n } else if (this.contexts[CONTEXT_TYPES.POPUP]) {\n return CONTEXT_TYPES.POPUP;\n }\n\n throw new Error(`Can not determine default context`);\n }\n\n getRenderContext(context : ?string, element : ?ElementRefType) : string {\n context = context || this.getDefaultContext();\n this.validateRenderContext(context, element);\n return context;\n }\n\n\n /* Render\n ------\n\n Shortcut to render a parent component\n */\n\n render(props : (PropsType & P), element : ?ElementRefType) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(null, element), { props }).render(element);\n });\n }\n\n renderIframe(props : (PropsType & P), element : ElementRefType) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(CONTEXT_TYPES.IFRAME, element), { props }).render(element);\n });\n }\n\n renderPopup(props : (PropsType & P)) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(CONTEXT_TYPES.POPUP), { props }).render();\n });\n }\n\n renderTo(win : CrossDomainWindowType, props : (PropsType & P), element : ?ElementRefType) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(null, element), { props }).renderTo(win, element);\n });\n }\n\n renderIframeTo(win : CrossDomainWindowType, props : (PropsType & P), element : ElementRefType) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(CONTEXT_TYPES.IFRAME, element), { props }).renderTo(win, element);\n });\n }\n\n renderPopupTo(win : CrossDomainWindowType, props : (PropsType & P)) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(CONTEXT_TYPES.POPUP), { props }).renderTo(win);\n });\n }\n\n prerender(props : (PropsType & P), element : ElementRefType) : { render : ((PropsType & P), ElementRefType) => ZalgoPromise>, renderTo : (CrossDomainWindowType, (PropsType & P), ElementRefType) => ZalgoPromise> } {\n let instance = new ParentComponent(this, this.getRenderContext(null, element), { props });\n instance.prefetch();\n\n return {\n render(innerProps : (PropsType & P), innerElement : ElementRefType) : ZalgoPromise> {\n if (innerProps) {\n instance.updateProps(innerProps);\n }\n\n return instance.render(innerElement);\n },\n\n renderTo(win : CrossDomainWindowType, innerProps : (PropsType & P), innerElement : ElementRefType) : ZalgoPromise> {\n if (innerProps) {\n instance.updateProps(innerProps);\n }\n\n return instance.renderTo(win, innerElement);\n },\n\n get html() : ?ZalgoPromise {\n return instance.html;\n },\n\n set html(value) {\n instance.html = value;\n }\n };\n }\n\n /* Log\n ---\n\n Log an event using the component name\n */\n\n log(event : string, payload : { [ string ] : string } = {}) {\n info(this.name, event, payload);\n }\n\n\n /* Log Warning\n -----------\n\n Log a warning\n */\n\n logWarning(event : string, payload : { [ string ] : string }) {\n warn(this.name, event, payload);\n }\n\n\n /* Log Error\n ---------\n\n Log an error\n */\n\n logError(event : string, payload : { [ string ] : string }) {\n error(this.name, event, payload);\n }\n\n static components : { [string] : Component<*> } = {}\n\n static getByTag(tag : string) : Component {\n return Component.components[tag];\n }\n}\n","/* @flow */\n\nexport * from './component';\nexport * from './parent';\nexport * from './child';\n","/* @flow */\n\nimport { type ZalgoPromise } from 'zalgo-promise/src';\n// eslint-disable-next-line import/no-namespace\nimport * as _postRobot from 'post-robot/src';\n\nimport { Component, type ComponentOptionsType } from './component';\nimport { ParentComponent } from './component/parent';\n// eslint-disable-next-line import/no-namespace\nimport * as _CONSTANTS from './constants';\n\nexport function create

(options : ComponentOptionsType

) : Component

{\n return new Component(options);\n}\n\nexport function getByTag

(tag : string) : Component

{\n return Component.getByTag(tag);\n}\n\nexport { getCurrentScriptDir } from './lib';\n\nexport function destroyAll() : ZalgoPromise {\n return ParentComponent.destroyAll();\n}\nexport let postRobot = _postRobot;\n\nexport * from './error';\n\nexport const CONSTANTS = _CONSTANTS;\n\nexport type ZoidComponent

= Component

;\n","/* @flow */\n\n// eslint-disable-next-line import/no-namespace\nimport * as INTERFACE from './interface';\n\nexport * from './interface';\nexport default INTERFACE;\n","/* @flow */\n\nimport {\n getOpener,\n getTop\n} from 'cross-domain-utils/src';\n\nexport function getUserAgent() : string {\n return window.navigator.mockUserAgent || window.navigator.userAgent;\n}\n\nexport function isDevice() : boolean {\n const userAgent = getUserAgent();\n if (userAgent.match(/Android|webOS|iPhone|iPad|iPod|bada|Symbian|Palm|CriOS|BlackBerry|IEMobile|WindowsMobile|Opera Mini/i)) {\n return true;\n }\n\n return false;\n}\n\nexport function isInsidePopup() : boolean {\n // Checks to see if the top-most window is a pop-up\n return Boolean(getOpener(getTop(window) || window));\n}\n\nexport function isStandAlone() : boolean {\n // Chrome interprets pop-up windows as standalone windows\n return !isInsidePopup() && (window.navigator.standalone === true || window.matchMedia('(display-mode: standalone)').matches);\n}\n\nexport function isFacebookWebView(ua? : string = getUserAgent()) : boolean {\n return (ua.indexOf('FBAN') !== -1) || (ua.indexOf('FBAV') !== -1);\n}\n\nexport function isFirefoxIOS(ua? : string = getUserAgent()) : boolean {\n return (/FxiOS/i).test(ua);\n}\n\nexport function isEdgeIOS(ua? : string = getUserAgent()) : boolean {\n return (/EdgiOS/i).test(ua);\n}\n\nexport function isOperaMini(ua? : string = getUserAgent()) : boolean {\n return ua.indexOf('Opera Mini') > -1;\n}\n\nexport function isAndroid(ua? : string = getUserAgent()) : boolean {\n return (/Android/).test(ua);\n}\n\nexport function isIos(ua? : string = getUserAgent()) : boolean {\n return (/iPhone|iPod|iPad/).test(ua);\n}\n\nexport function isGoogleSearchApp(ua? : string = getUserAgent()) : boolean {\n return (/\\bGSA\\b/).test(ua);\n}\n\nexport function isQQBrowser(ua? : string = getUserAgent()) : boolean {\n return (/QQBrowser/).test(ua);\n}\n\nexport function isIosWebview(ua? : string = getUserAgent()) : boolean {\n if (isIos(ua)) {\n if (isGoogleSearchApp(ua)) {\n return true;\n }\n return (/.+AppleWebKit(?!.*Safari)/).test(ua);\n }\n return false;\n}\n\nexport function isAndroidWebview(ua? : string = getUserAgent()) : boolean {\n if (isAndroid(ua)) {\n return (/Version\\/[\\d.]+/).test(ua) && !isOperaMini(ua);\n }\n return false;\n}\n\nexport function isWebView() : boolean {\n return isFacebookWebView() ||\n isIosWebview() ||\n isAndroidWebview();\n}\n\nexport function isIE() : boolean {\n\n if (window.document.documentMode) {\n return true;\n }\n\n if (window.navigator && typeof window.navigator.userAgent === 'string') {\n if ((/Edge|MSIE/i).test(window.navigator.userAgent)) {\n return true;\n }\n }\n\n return false;\n}\n\n\nexport function isIE11() : boolean {\n if (!isIE()) {\n return false;\n }\n\n if (window.navigator && typeof window.navigator.userAgent === 'string') {\n if ((/MSIE 11\\.0/i).test(window.navigator.userAgent)) {\n return true;\n }\n\n if ((/Trident/i).test(window.navigator.userAgent) && (/rv:11\\.0/i).test(window.navigator.userAgent)) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function isIECompHeader() : boolean {\n const mHttp = window.document.querySelector('meta[http-equiv=\"X-UA-Compatible\"]');\n const mContent = window.document.querySelector('meta[content=\"IE=edge\"]');\n if (mHttp && mContent) {\n return true;\n }\n return false;\n}\n\nexport function isElectron() : boolean {\n const userAgent = getUserAgent();\n // here we want a case-insensitive full word boundary\n return (/\\belectron\\b/i).test(userAgent);\n}\n\nexport function isIEIntranet() : boolean {\n if (!isIE11()) {\n return false;\n }\n\n // This status check only works for older versions of IE with document.documentMode set\n\n if (window.document.documentMode) {\n try {\n const status = window.status;\n\n window.status = 'testIntranetMode';\n\n if (window.status === 'testIntranetMode') {\n window.status = status;\n\n return true;\n }\n\n return false;\n\n } catch (err) {\n\n return false;\n }\n }\n\n return false;\n}\n\nexport function isMacOsCna() : boolean {\n const userAgent = getUserAgent();\n return (/Macintosh.*AppleWebKit(?!.*Safari)/i).test(userAgent);\n}\n\nexport function supportsPopups(ua? : string = getUserAgent()) : boolean {\n return !(isIosWebview(ua) || isAndroidWebview(ua) || isOperaMini(ua) ||\n isFirefoxIOS(ua) || isEdgeIOS(ua) || isFacebookWebView(ua) || isQQBrowser(ua) || isElectron() || isMacOsCna() || isStandAlone());\n}\n","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","/* @flow */\n\nimport { type ZalgoPromise } from 'zalgo-promise/src';\nimport { getParent, isWindowClosed, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONSTANTS } from '../conf';\nimport { noop } from '../lib';\nimport { global } from '../global';\n\n/*\n HERE BE DRAGONS\n\n Warning: this file may look weird. Why save the tunnel window in an Object\n by ID, then look it up later, rather than just using the reference from the closure scope?\n\n The reason is, that ends up meaning the garbage collector can never get its hands\n on a closed window, since our closure has continued access to it -- and post-robot\n has no good way to know whether to clean up the function with the closure scope.\n\n If you're editing this file, be sure to run significant memory / GC tests afterwards.\n*/\n\nglobal.tunnelWindows = global.tunnelWindows || {};\nglobal.tunnelWindowId = 0;\n\nfunction deleteTunnelWindow(id) {\n\n try {\n if (global.tunnelWindows[id]) {\n delete global.tunnelWindows[id].source;\n }\n } catch (err) {\n // pass\n }\n\n delete global.tunnelWindows[id];\n}\n\nfunction cleanTunnelWindows() {\n let tunnelWindows = global.tunnelWindows;\n\n for (let key of Object.keys(tunnelWindows)) {\n let tunnelWindow = tunnelWindows[key];\n\n try {\n noop(tunnelWindow.source);\n } catch (err) {\n deleteTunnelWindow(key);\n continue;\n }\n\n if (isWindowClosed(tunnelWindow.source)) {\n deleteTunnelWindow(key);\n }\n }\n}\n\ntype TunnelWindowDataType = {\n name : string,\n source : CrossDomainWindowType,\n canary : () => void,\n sendMessage : (message : string) => void\n};\n\nfunction addTunnelWindow({ name, source, canary, sendMessage } : TunnelWindowDataType) : number {\n cleanTunnelWindows();\n global.tunnelWindowId += 1;\n global.tunnelWindows[global.tunnelWindowId] = { name, source, canary, sendMessage };\n return global.tunnelWindowId;\n}\n\nfunction getTunnelWindow(id : number) : TunnelWindowDataType {\n return global.tunnelWindows[id];\n}\n\nglobal.openTunnelToParent = function openTunnelToParent({ name, source, canary, sendMessage } : TunnelWindowDataType) : ZalgoPromise<{ source : CrossDomainWindowType, origin : string, data : Object }> {\n\n let parentWindow = getParent(window);\n\n if (!parentWindow) {\n throw new Error(`No parent window found to open tunnel to`);\n }\n\n let id = addTunnelWindow({ name, source, canary, sendMessage });\n\n return global.send(parentWindow, CONSTANTS.POST_MESSAGE_NAMES.OPEN_TUNNEL, {\n\n name,\n\n sendMessage() {\n\n let tunnelWindow = getTunnelWindow(id);\n\n try {\n // IE gets antsy if you try to even reference a closed window\n noop(tunnelWindow && tunnelWindow.source);\n } catch (err) {\n deleteTunnelWindow(id);\n return;\n }\n\n if (!tunnelWindow || !tunnelWindow.source || isWindowClosed(tunnelWindow.source)) {\n return;\n }\n\n try {\n tunnelWindow.canary();\n } catch (err) {\n return;\n }\n\n tunnelWindow.sendMessage.apply(this, arguments);\n }\n\n }, { domain: CONSTANTS.WILDCARD });\n};\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getDomain, isSameDomain, isOpener, isSameTopWindow, matchDomain, getUserAgent, getDomainFromUrl, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONFIG, CONSTANTS } from '../conf';\nimport { global } from '../global';\n\nexport function needsBridgeForBrowser() : boolean {\n\n if (getUserAgent(window).match(/MSIE|trident|edge\\/12|edge\\/13/i)) {\n return true;\n }\n\n if (!CONFIG.ALLOW_POSTMESSAGE_POPUP) {\n return true;\n }\n\n return false;\n}\n\nexport function needsBridgeForWin(win : CrossDomainWindowType) : boolean {\n\n if (!isSameTopWindow(window, win)) {\n return true;\n }\n\n return false;\n}\n\nexport function needsBridgeForDomain(domain : ?string, win : ?CrossDomainWindowType) : boolean {\n\n if (domain) {\n if (getDomain() !== getDomainFromUrl(domain)) {\n return true;\n }\n } else if (win) {\n if (!isSameDomain(win)) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function needsBridge({ win, domain } : { win? : CrossDomainWindowType, domain? : string }) : boolean {\n\n if (!needsBridgeForBrowser()) {\n return false;\n }\n\n if (domain && !needsBridgeForDomain(domain, win)) {\n return false;\n }\n\n if (win && !needsBridgeForWin(win)) {\n return false;\n }\n\n return true;\n}\n\nexport function getBridgeName(domain : string) : string {\n\n domain = domain || getDomainFromUrl(domain);\n\n let sanitizedDomain = domain.replace(/[^a-zA-Z0-9]+/g, '_');\n\n let id = `${ CONSTANTS.BRIDGE_NAME_PREFIX }_${ sanitizedDomain }`;\n\n return id;\n}\n\nexport function isBridge() : boolean {\n return Boolean(window.name && window.name === getBridgeName(getDomain()));\n}\n\nexport let documentBodyReady = new ZalgoPromise(resolve => {\n\n if (window.document && window.document.body) {\n return resolve(window.document.body);\n }\n\n let interval = setInterval(() => {\n if (window.document && window.document.body) {\n clearInterval(interval);\n return resolve(window.document.body);\n }\n }, 10);\n});\n\nglobal.remoteWindows = global.remoteWindows || new WeakMap();\n\nexport function registerRemoteWindow(win : CrossDomainWindowType) {\n global.remoteWindows.set(win, { sendMessagePromise: new ZalgoPromise() });\n}\n\nexport function findRemoteWindow(win : CrossDomainWindowType) : { sendMessagePromise : ZalgoPromise<(remoteWin : CrossDomainWindowType, message : string, remoteDomain : string) => void> } {\n return global.remoteWindows.get(win);\n}\n\nexport function registerRemoteSendMessage(win : CrossDomainWindowType, domain : string, sendMessage : (message : string) => void) {\n\n let remoteWindow = findRemoteWindow(win);\n\n if (!remoteWindow) {\n throw new Error(`Window not found to register sendMessage to`);\n }\n\n let sendMessageWrapper = (remoteWin : CrossDomainWindowType, message : string, remoteDomain : string) => {\n\n if (remoteWin !== win) {\n throw new Error(`Remote window does not match window`);\n }\n\n if (!matchDomain(remoteDomain, domain)) {\n throw new Error(`Remote domain ${ remoteDomain } does not match domain ${ domain }`);\n }\n\n sendMessage(message);\n };\n\n remoteWindow.sendMessagePromise.resolve(sendMessageWrapper);\n remoteWindow.sendMessagePromise = ZalgoPromise.resolve(sendMessageWrapper);\n}\n\nexport function rejectRemoteSendMessage(win : CrossDomainWindowType, err : Error) {\n\n let remoteWindow = findRemoteWindow(win);\n\n if (!remoteWindow) {\n throw new Error(`Window not found on which to reject sendMessage`);\n }\n\n remoteWindow.sendMessagePromise.asyncReject(err);\n}\n\nexport function sendBridgeMessage(win : CrossDomainWindowType, message : string, domain : string) : ZalgoPromise {\n\n let messagingChild = isOpener(window, win);\n let messagingParent = isOpener(win, window);\n\n if (!messagingChild && !messagingParent) {\n throw new Error(`Can only send messages to and from parent and popup windows`);\n }\n\n let remoteWindow = findRemoteWindow(win);\n\n if (!remoteWindow) {\n throw new Error(`Window not found to send message to`);\n }\n\n return remoteWindow.sendMessagePromise.then(sendMessage => {\n return sendMessage(win, message, domain);\n });\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { isSameDomain, getOpener, getFrames, getDomain, getFrameByName, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONSTANTS } from '../conf';\nimport { weakMapMemoize, noop } from '../lib';\nimport { global } from '../global';\n\nimport { needsBridge, registerRemoteWindow, rejectRemoteSendMessage, registerRemoteSendMessage, getBridgeName } from './common';\n\nlet awaitRemoteBridgeForWindow = weakMapMemoize((win : CrossDomainWindowType) : ZalgoPromise => {\n return ZalgoPromise.try(() => {\n for (let frame of getFrames(win)) {\n try {\n // $FlowFixMe\n if (frame && frame !== window && isSameDomain(frame) && frame[CONSTANTS.WINDOW_PROPS.POSTROBOT]) {\n return frame;\n }\n\n } catch (err) {\n continue;\n }\n }\n\n try {\n let frame = getFrameByName(win, getBridgeName(getDomain()));\n\n if (!frame) {\n return;\n }\n\n // $FlowFixMe\n if (isSameDomain(frame) && frame[CONSTANTS.WINDOW_PROPS.POSTROBOT]) {\n return frame;\n }\n\n return new ZalgoPromise(resolve => {\n\n let interval;\n let timeout;\n\n interval = setInterval(() => {\n // $FlowFixMe\n if (frame && isSameDomain(frame) && frame[CONSTANTS.WINDOW_PROPS.POSTROBOT]) {\n clearInterval(interval);\n clearTimeout(timeout);\n return resolve(frame);\n }\n }, 100);\n\n timeout = setTimeout(() => {\n clearInterval(interval);\n return resolve();\n }, 2000);\n });\n\n } catch (err) {\n // pass\n }\n });\n});\n\nexport function openTunnelToOpener() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n const opener = getOpener(window);\n\n if (!opener) {\n return;\n }\n\n if (!needsBridge({ win: opener })) {\n return;\n }\n\n registerRemoteWindow(opener);\n\n return awaitRemoteBridgeForWindow(opener).then(bridge => {\n\n if (!bridge) {\n return rejectRemoteSendMessage(opener, new Error(`Can not register with opener: no bridge found in opener`));\n }\n\n if (!window.name) {\n return rejectRemoteSendMessage(opener, new Error(`Can not register with opener: window does not have a name`));\n }\n\n return bridge[CONSTANTS.WINDOW_PROPS.POSTROBOT].openTunnelToParent({\n\n name: window.name,\n\n source: window,\n\n canary() {\n // pass\n },\n\n sendMessage(message) {\n\n try {\n noop(window);\n } catch (err) {\n return;\n }\n\n if (!window || window.closed) {\n return;\n }\n\n try {\n global.receiveMessage({\n data: message,\n origin: this.origin,\n source: this.source\n });\n } catch (err) {\n ZalgoPromise.reject(err);\n }\n }\n\n }).then(({ source, origin, data }) => {\n\n if (source !== opener) {\n throw new Error(`Source does not match opener`);\n }\n\n registerRemoteSendMessage(source, origin, data.sendMessage);\n\n }).catch(err => {\n\n rejectRemoteSendMessage(opener, err);\n throw err;\n });\n });\n });\n}\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getDomain, getFrameByName, isWindowClosed, getDomainFromUrl, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONFIG, CONSTANTS } from '../conf';\nimport { onChildWindowReady } from '../lib';\nimport { global } from '../global';\n\nimport { getBridgeName, documentBodyReady, registerRemoteSendMessage, registerRemoteWindow } from './common';\n\nglobal.bridges = global.bridges || {};\nglobal.bridgeFrames = global.bridgeFrames || {};\n\nglobal.popupWindowsByWin = global.popupWindowsByWin || new WeakMap();\nglobal.popupWindowsByName = global.popupWindowsByName || {};\n\nfunction listenForRegister(source, domain) {\n global.on(CONSTANTS.POST_MESSAGE_NAMES.OPEN_TUNNEL, { window: source, domain }, ({ origin, data }) => {\n\n if (origin !== domain) {\n throw new Error(`Domain ${ domain } does not match origin ${ origin }`);\n }\n\n if (!data.name) {\n throw new Error(`Register window expected to be passed window name`);\n }\n\n if (!data.sendMessage) {\n throw new Error(`Register window expected to be passed sendMessage method`);\n }\n\n if (!global.popupWindowsByName[data.name]) {\n throw new Error(`Window with name ${ data.name } does not exist, or was not opened by this window`);\n }\n\n if (!global.popupWindowsByName[data.name].domain) {\n throw new Error(`We do not have a registered domain for window ${ data.name }`);\n }\n\n if (global.popupWindowsByName[data.name].domain !== origin) {\n throw new Error(`Message origin ${ origin } does not matched registered window origin ${ global.popupWindowsByName[data.name].domain }`);\n }\n\n registerRemoteSendMessage(global.popupWindowsByName[data.name].win, domain, data.sendMessage);\n\n return {\n sendMessage(message) {\n\n if (!window || window.closed) {\n return;\n }\n\n let winDetails = global.popupWindowsByName[data.name];\n\n if (!winDetails) {\n return;\n }\n\n try {\n global.receiveMessage({\n data: message,\n origin: winDetails.domain,\n source: winDetails.win\n });\n } catch (err) {\n ZalgoPromise.reject(err);\n }\n }\n };\n });\n}\n\nfunction openBridgeFrame(name : string, url : string) : HTMLIFrameElement {\n\n let iframe = document.createElement(`iframe`);\n\n iframe.setAttribute(`name`, name);\n iframe.setAttribute(`id`, name);\n\n iframe.setAttribute(`style`, `display: none; margin: 0; padding: 0; border: 0px none; overflow: hidden;`);\n iframe.setAttribute(`frameborder`, `0`);\n iframe.setAttribute(`border`, `0`);\n iframe.setAttribute(`scrolling`, `no`);\n iframe.setAttribute(`allowTransparency`, `true`);\n\n iframe.setAttribute(`tabindex`, `-1`);\n iframe.setAttribute(`hidden`, `true`);\n iframe.setAttribute(`title`, ``);\n iframe.setAttribute(`role`, `presentation`);\n\n iframe.src = url;\n\n return iframe;\n}\n\nexport function hasBridge(url : string, domain : string) : boolean {\n domain = domain || getDomainFromUrl(url);\n return Boolean(global.bridges[domain]);\n}\n\nexport function openBridge(url : string, domain : string) : ZalgoPromise {\n\n domain = domain || getDomainFromUrl(url);\n\n if (global.bridges[domain]) {\n return global.bridges[domain];\n }\n\n global.bridges[domain] = ZalgoPromise.try(() => {\n\n if (getDomain() === domain) {\n throw new Error(`Can not open bridge on the same domain as current domain: ${ domain }`);\n }\n\n let name = getBridgeName(domain);\n let frame = getFrameByName(window, name);\n\n if (frame) {\n throw new Error(`Frame with name ${ name } already exists on page`);\n }\n\n let iframe = openBridgeFrame(name, url);\n global.bridgeFrames[domain] = iframe;\n\n return documentBodyReady.then(body => {\n\n body.appendChild(iframe);\n\n let bridge = iframe.contentWindow;\n\n listenForRegister(bridge, domain);\n\n return new ZalgoPromise((resolve, reject) => {\n\n iframe.onload = resolve;\n iframe.onerror = reject;\n\n }).then(() => {\n\n return onChildWindowReady(bridge, CONFIG.BRIDGE_TIMEOUT, `Bridge ${ url }`);\n\n }).then(() => {\n\n return bridge;\n });\n });\n });\n\n return global.bridges[domain];\n}\n\nlet windowOpen = window.open;\n\nwindow.open = function windowOpenWrapper(url : string, name : string, options : string, last : mixed) : mixed {\n\n let domain = url;\n\n if (url && url.indexOf(CONSTANTS.MOCK_PROTOCOL) === 0) {\n [ domain, url ] = url.split('|');\n }\n\n if (domain) {\n domain = getDomainFromUrl(domain);\n }\n\n let win = windowOpen.call(this, url, name, options, last);\n\n if (!win) {\n return win;\n }\n\n if (url) {\n registerRemoteWindow(win);\n }\n\n for (let winName of Object.keys(global.popupWindowsByName)) {\n if (isWindowClosed(global.popupWindowsByName[winName].win)) {\n delete global.popupWindowsByName[winName];\n }\n }\n\n if (name && win) {\n let winOptions = global.popupWindowsByWin.get(win) ||\n global.popupWindowsByName[name] || {};\n\n winOptions.name = winOptions.name || name;\n winOptions.win = winOptions.win || win;\n winOptions.domain = winOptions.domain || domain;\n\n global.popupWindowsByWin.set(win, winOptions);\n global.popupWindowsByName[name] = winOptions;\n }\n\n return win;\n};\n\nexport function linkUrl(win : CrossDomainWindowType, url : string) {\n\n let winOptions = global.popupWindowsByWin.get(win);\n\n if (winOptions) {\n winOptions.domain = getDomainFromUrl(url);\n registerRemoteWindow(win);\n }\n}\n\nexport function destroyBridges() {\n for (let domain of Object.keys(global.bridgeFrames)) {\n let frame = global.bridgeFrames[domain];\n if (frame.parentNode) {\n frame.parentNode.removeChild(frame);\n }\n }\n global.bridgeFrames = {};\n global.bridges = {};\n}\n","/* @flow */\n\n// eslint-disable-next-line import/no-unassigned-import\nimport './bridge';\n\nexport * from './child';\nexport * from './common';\nexport * from './parent';\n","/* @flow */\n\nimport { info } from 'beaver-logger/client';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport type { CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { LANG_TO_DEFAULT_COUNTRY, LOCALE } from '../constants';\nimport type { LocaleType } from '../types';\nimport { config } from '../config';\n\nimport { memoize } from './util';\nimport { isDevice } from './device';\n\nfunction isDocumentReady() : boolean {\n return Boolean(document.body) && document.readyState === 'complete';\n}\n\nexport const documentReady : ZalgoPromise = new ZalgoPromise(resolve => {\n\n if (isDocumentReady()) {\n return resolve();\n }\n\n const interval = setInterval(() => {\n if (isDocumentReady()) {\n clearInterval(interval);\n return resolve();\n }\n }, 10);\n});\n\nexport const documentBody : ZalgoPromise = documentReady.then(() => {\n if (document.body) {\n return document.body;\n }\n\n throw new Error('Document ready but document.body not present');\n});\n\n\nexport function loadScript(src : string, timeout : number = 0, attrs : Object = {}) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n const script = document.createElement('script');\n\n script.addEventListener('load', () => {\n resolve();\n });\n\n // For Internet explorer 8 support\n script.onreadystatechange = function scriptOnReadyStateChange() {\n if (this.readyState === 'complete' || this.readyState === 'loaded') {\n resolve();\n }\n };\n\n const scriptLoadError = new Error('script_loading_error');\n\n script.addEventListener('error', () => {\n return reject(scriptLoadError);\n });\n\n if (timeout) {\n setTimeout(() => {\n return reject(new Error('script_loading_timed_out'));\n }, timeout);\n }\n\n for (const attr of Object.keys(attrs)) {\n script.setAttribute(attr, attrs[attr]);\n }\n\n script.setAttribute('src', src);\n\n const head = document.getElementsByTagName('head')[0];\n\n head.appendChild(script);\n });\n}\n\n\nexport function isNodeList(nodes : mixed) : boolean {\n\n const result = Object.prototype.toString.call(nodes);\n\n if (result === '[object HTMLCollection]' || result === '[object NodeList]') {\n return true;\n }\n\n return false;\n}\n\nexport function isElement(item : mixed) : boolean {\n return item instanceof HTMLElement;\n}\n\nexport function getElement(item : mixed) : ?HTMLElement {\n\n if (!item) {\n return;\n }\n\n if (item instanceof HTMLElement) {\n return item;\n }\n\n if (typeof item === 'string') {\n\n if (document.querySelector) {\n const result = document.querySelector(item);\n\n if (result) {\n return result;\n }\n }\n\n return document.getElementById(item);\n }\n}\n\nexport function getElements(collection : $ReadOnlyArray | NodeList | HTMLCollection | HTMLElement | string) : $ReadOnlyArray {\n\n if (!collection) {\n return [];\n }\n\n if (collection instanceof HTMLElement || typeof collection === 'string') {\n const element = getElement(collection);\n if (element) {\n return [ element ];\n }\n return [];\n }\n\n if (Array.isArray(collection) || collection instanceof NodeList || collection instanceof HTMLCollection) {\n const result = [];\n\n for (let i = 0; i < collection.length; i++) {\n const el = getElement(collection[i]);\n if (el) {\n result.push(el);\n }\n }\n\n return result;\n }\n\n return [];\n}\n\nexport function onDocumentReady(method : () => void) : ZalgoPromise {\n return documentReady.then(method);\n}\n\nexport const parseQuery = memoize((queryString : string) : Object => {\n\n const params = {};\n\n if (!queryString) {\n return params;\n }\n\n if (queryString.indexOf('=') === -1) {\n return params;\n }\n\n for (let pair of queryString.split('&')) {\n pair = pair.split('=');\n\n if (pair[0] && pair[1]) {\n params[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n }\n\n return params;\n});\n\n\nexport function getQueryParam(name : string) : string {\n return parseQuery(window.location.search.slice(1))[name];\n}\n\nexport function urlWillRedirectPage(url : string) : boolean {\n\n if (url.indexOf('#') === -1) {\n return true;\n }\n\n if (url.indexOf('#') === 0) {\n return false;\n }\n\n if (url.split('#')[0] === window.location.href.split('#')[0]) {\n return false;\n }\n\n return true;\n}\n\nexport function extendUrl(url : string, params : { [key : string] : string } = {}) : string {\n\n const hasHash = url.indexOf('#') > 0;\n\n let [ serverUrl, hash ] = url.split('#');\n\n if (hash && !serverUrl) {\n [ serverUrl, hash ] = [ `#${ hash }`, '' ];\n }\n\n const [ originalUrl, originalQueryString ] = serverUrl.split('?');\n\n if (originalQueryString) {\n const originalQuery = parseQuery(originalQueryString);\n\n for (const key in originalQuery) {\n if (!params.hasOwnProperty(key)) {\n params[key] = originalQuery[key];\n }\n }\n }\n\n const newQueryString = Object.keys(params).filter(key => key && params[key]).sort().map(key => {\n return `${ encodeURIComponent(key) }=${ encodeURIComponent(params[key]) }`;\n }).join('&');\n\n let newUrl = originalUrl;\n\n if (newQueryString) {\n newUrl = `${ newUrl }?${ newQueryString }`;\n }\n\n if (hasHash) {\n newUrl = `${ newUrl }#${ hash || '' }`;\n }\n\n return newUrl;\n}\n\nexport function redirect(win : CrossDomainWindowType = window, url : string) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n\n info(`redirect`, { url });\n\n setTimeout(() => {\n win.location = url;\n if (!urlWillRedirectPage(url)) {\n resolve();\n }\n }, 1);\n });\n}\n\nexport function hasMetaViewPort() : boolean {\n const meta = document.querySelector('meta[name=viewport]');\n\n if (isDevice() && window.screen.width < 660 && !meta) {\n return false;\n }\n\n return true;\n}\n\nexport function getBrowserLocales() : $ReadOnlyArray {\n const nav = window.navigator;\n\n const locales = nav.languages\n ? Array.prototype.slice.apply(nav.languages)\n : [];\n\n if (nav.language) {\n locales.push(nav.language);\n }\n\n if (nav.userLanguage) {\n locales.push(nav.userLanguage);\n }\n\n return locales;\n}\n\nexport function normalizeLocale(locale : string) : ?LocaleType {\n\n if (locale && locale.match(/^[a-z]{2}[-_][A-Z]{2}$/)) {\n const [ lang, country ] = locale.split(/[-_]/);\n if (LOCALE[country] && LOCALE[country].indexOf(lang) !== -1) {\n return { country, lang };\n }\n }\n}\n\nexport function normalizeLang(lang : string) : ?LocaleType {\n\n if (lang && lang.match(/^[a-z]{2}$/)) {\n if (LANG_TO_DEFAULT_COUNTRY[lang]) {\n return { country: LANG_TO_DEFAULT_COUNTRY[lang], lang };\n }\n }\n}\n\nexport const getBrowserLocale = memoize(() : LocaleType => {\n\n const locales = getBrowserLocales();\n\n for (const locale of locales) {\n let loc = normalizeLocale(locale);\n if (loc) {\n info('better_browser_locale_full');\n return loc;\n }\n\n loc = normalizeLang(locale);\n if (loc) {\n info('better_browser_locale_lang');\n return loc;\n }\n }\n\n return config.defaultLocale;\n});\n\nexport function isElementVisible(el : HTMLElement) : boolean {\n return Boolean(el.offsetWidth || el.offsetHeight || el.getClientRects().length);\n}\n\nexport const enablePerformance = memoize(() : boolean => {\n /* eslint-disable compat/compat */\n return Boolean(\n window.performance &&\n performance.now &&\n performance.timing &&\n performance.timing.connectEnd &&\n performance.timing.navigationStart &&\n (Math.abs(performance.now() - Date.now()) > 1000) &&\n (performance.now() - (performance.timing.connectEnd - performance.timing.navigationStart)) > 0\n );\n /* eslint-enable compat/compat */\n});\n\nexport function getPageRenderTime() : ZalgoPromise {\n return documentReady.then(() => {\n\n if (!enablePerformance()) {\n return;\n }\n\n const timing = window.performance.timing; // eslint-disable-line compat/compat\n\n if (timing.connectEnd && timing.domInteractive) {\n return timing.domInteractive - timing.connectEnd;\n }\n });\n}\n\nexport function getResourceLoadTime(url : string) : ?number {\n\n if (!enablePerformance()) {\n return;\n }\n\n if (!window.performance || typeof window.performance.getEntries !== 'function') { // eslint-disable-line compat/compat\n return;\n }\n\n const entries = window.performance.getEntries(); // eslint-disable-line compat/compat\n\n for (let i = 0; i < entries.length; i++) {\n const entry = entries[i];\n\n if (entry && entry.name === url && entry.duration && entry.duration >= 0 && entry.duration <= 60000) {\n return Math.floor(entry.duration);\n }\n }\n}\n\nexport function htmlEncode(html : string = '') : string {\n return html.toString()\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(/\\//g, '/');\n}\n","/* @flow */\n\nimport { getParent, isSameDomain } from 'cross-domain-utils/src';\n\nimport { config } from '../config';\n\nimport { supportsPopups } from './device';\n\nexport function allowIframe() : boolean {\n\n if (!supportsPopups()) {\n return true;\n }\n\n const parentWindow = getParent(window);\n if (parentWindow && isSameDomain(parentWindow)) {\n return true;\n }\n\n const parentComponentWindow = window.xchild && window.xchild.getParentComponentWindow();\n if (parentComponentWindow && isSameDomain(parentComponentWindow)) {\n return true;\n }\n\n if (__TEST__) {\n return true;\n }\n\n return false;\n}\n\n\nexport function isPayPalDomain() : boolean {\n return Boolean(`${ window.location.protocol }//${ window.location.host }`.match(config.paypal_domain_regex)) || window.mockDomain === 'mock://www.paypal.com';\n}\n","/* @flow */\n\nexport function PopupOpenError(message : string) {\n this.message = message;\n}\n\nPopupOpenError.prototype = Object.create(Error.prototype);\n\nexport function IntegrationError(message : string) {\n this.message = message;\n}\n\nIntegrationError.prototype = Object.create(Error.prototype);\n\nexport function RenderError(message : string) {\n this.message = message;\n}\n\nRenderError.prototype = Object.create(Error.prototype);\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nexport type Braintree = {|\n client : {\n create : Function\n },\n paypalCheckout : {\n create : Function\n }\n|};\n\nexport type BraintreePayPalClient = {|\n createPayment : Function,\n tokenizePayment : Function\n|};\n\nexport function awaitBraintreeClient(braintree : Braintree, auth : string | ZalgoPromise) : ZalgoPromise {\n return ZalgoPromise.resolve(auth).then(authorization => {\n return braintree.client.create({ authorization });\n }).then(client => {\n return braintree.paypalCheckout.create({ client });\n });\n}\n\nconst SUPPORTED_REST_FIELDS = {\n intent: 1,\n transactions: [\n {\n amount: {\n total: 1,\n currency: 1\n }\n }\n ],\n payer: {\n external_selected_funding_instrument_type: 1,\n shipping_address: {\n line1: 1,\n line2: 1,\n city: 1,\n state: 1,\n postal_code: 1,\n country_code: 1,\n phone: 1,\n recipient_name: 1\n }\n },\n application_context: {\n brand_name: 1,\n shipping_preference: 1,\n landing_page: 1\n }\n};\n\nfunction validate(obj, supported, name) {\n\n const supportedKeys = Object.keys(supported);\n\n for (const key of Object.keys(obj)) {\n\n if (supportedKeys.indexOf(key) === -1) {\n throw new Error(`Unsupported REST key for Braintree: ${ name }.${ key }`);\n }\n\n if (typeof obj[key] === 'object') {\n validate(obj[key], supported[key], `${ name }.${ key }`);\n }\n }\n}\n\nexport function mapPaymentToBraintree(payment : Object) : Object {\n validate(payment, SUPPORTED_REST_FIELDS, 'payment');\n\n const btPayment = {};\n\n btPayment.intent = payment.intent || 'sale';\n btPayment.flow = 'checkout';\n btPayment.amount = payment.transactions[0].amount.total;\n btPayment.currency = payment.transactions[0].amount.currency;\n\n if (payment.payer) {\n if (payment.payer.external_selected_funding_instrument_type === 'CREDIT') {\n btPayment.offerCredit = true;\n }\n\n if (payment.payer.shipping_address) {\n btPayment.shippingAddressOverride = {\n line1: payment.payer.shipping_address.line1,\n line2: payment.payer.shipping_address.line2,\n city: payment.payer.shipping_address.city,\n state: payment.payer.shipping_address.state,\n postalCode: payment.payer.shipping_address.postal_code,\n countryCode: payment.payer.shipping_address.country_code,\n phone: payment.payer.shipping_address.phone,\n recipientName: payment.payer.shipping_address.recipient_name\n };\n }\n }\n\n if (payment.application_context) {\n btPayment.displayName = payment.application_context.brand_name;\n btPayment.landingPageType = payment.application_context.landing_page;\n\n if (payment.application_context) {\n if (payment.application_context.shipping_preference === 'NO_SHIPPING') {\n btPayment.enableShippingAddress = false;\n } else if (payment.application_context.shipping_preference === 'GET_FROM_FILE') {\n btPayment.enableShippingAddress = true;\n btPayment.shippingAddressEditable = true;\n } else if (payment.application_context.shipping_preference === 'SET_PROVIDED_ADDRESS') {\n btPayment.enableShippingAddress = true;\n btPayment.shippingAddressEditable = false;\n }\n }\n }\n\n return btPayment;\n}\n","/* @flow */\n\nexport * from './checkout';\nexport * from './braintree';\n// export * from './popupBridge';\n","/* @flow */\n\nexport * from './script';\nexport * from './react';\nexport * from './vue';\nexport * from './angular';\nexport * from './ember';\nexport * from './glimmer';\nexport * from './angular2';\n","/* @flow */\n\nimport { config } from '../config';\nimport { LOG_LEVEL } from '../constants';\n\nimport { getSessionID, getSessionState } from './session';\n\nconst BEACON_URL = config.loggerUrl;\nconst APP_NAME = 'checkoutjs';\n\nexport function beacon(event : string, payload : Object = {}) {\n try {\n\n payload.event = `ppxo_${ event }`;\n payload.version = __PAYPAL_CHECKOUT__.__MINOR_VERSION__;\n payload.host = window.location.host;\n payload.uid = getSessionID();\n payload.appName = APP_NAME;\n\n let query = [];\n\n for (const key in payload) {\n if (payload.hasOwnProperty(key)) {\n query.push(`${ encodeURIComponent(key) }=${ encodeURIComponent(payload[key]) }`);\n }\n }\n\n query = query.join('&');\n\n if (!__TEST__) {\n const beaconImage = new window.Image();\n beaconImage.src = `${ BEACON_URL }?${ query }`;\n }\n\n setTimeout(() => {\n if (config.logLevel === LOG_LEVEL.DEBUG) {\n if (window.console && window.console.log) {\n window.console.log('*', event, payload);\n }\n }\n }, 1);\n\n } catch (err) {\n // pass\n }\n}\n\nfunction isCheckpointUnique(name : string) : boolean {\n return getSessionState(state => {\n state.loggedBeacons = state.loggedBeacons || [];\n\n if (state.loggedBeacons.indexOf(name) === -1) {\n state.loggedBeacons.push(name);\n return true;\n }\n\n return false;\n });\n}\n\nexport function checkpoint(name : string, payload : Object = {}, options : Object = {}) : void {\n try {\n let checkpointName = name;\n\n if (options.version) {\n const version = __PAYPAL_CHECKOUT__.__MINOR_VERSION__.replace(/[^0-9]+/g, '_');\n checkpointName = `${ version }_${ checkpointName }`;\n }\n\n if (!isCheckpointUnique(checkpointName)) {\n return;\n }\n\n return beacon(checkpointName, payload);\n\n } catch (err) {\n\n // pass\n }\n}\n\n\nconst FPTI_URL = 'https://t.paypal.com/ts';\n\nfunction buildPayload() : Object {\n return {\n v: `checkout.js.${ __PAYPAL_CHECKOUT__.__MINOR_VERSION__ }`,\n t: Date.now(),\n g: new Date().getTimezoneOffset(),\n flnm: 'ec:hermes:',\n shir: 'main_ec_hermes_',\n pgrp: 'main:ec:hermes::incontext-merchant',\n page: 'main:ec:hermes::incontext-merchant',\n vers: 'member:hermes:',\n qual: 'incontext',\n tmpl: 'merchant:incontext'\n };\n}\n\nexport function fpti(payload : Object = {}) {\n\n let query = [];\n\n payload = { ...buildPayload(), ...payload };\n\n for (const key in payload) {\n if (payload.hasOwnProperty(key)) {\n query.push(`${ encodeURIComponent(key) }=${ encodeURIComponent(payload[key]) }`);\n }\n }\n\n query = query.join('&');\n\n try {\n const beaconImage = new window.Image();\n beaconImage.src = `${ FPTI_URL }?${ query }`;\n } catch (err) {\n // pass\n }\n}\n","/* @flow */\n/** @jsx jsxDom */\n\nconst checkoutComponentStyle = `\n\n body {\n width: 100%;\n height: 100%;\n overflow: hidden;\n position: fixed;\n top: 0;\n left: 0;\n margin: 0;\n }\n\n .spinner {\n height: 100%;\n width: 100%;\n position: absolute;\n z-index: 10\n }\n\n .spinner .spinWrap {\n width: 200px;\n height: 100px;\n position: absolute;\n top: 50%;\n left: 50%;\n margin-left: -100px;\n margin-top: -50px\n }\n\n .spinner .loader,\n .spinner .spinnerImage {\n height: 100px;\n width: 100px;\n position: absolute;\n top: 0;\n left: 50%;\n opacity: 1;\n filter: alpha(opacity=100)\n }\n\n .spinner .spinnerImage {\n margin: 28px 0 0 -25px;\n background: url(https://www.paypalobjects.com/images/checkout/hermes/icon_ot_spin_lock_skinny.png) no-repeat\n }\n\n .spinner .loader {\n margin: 0 0 0 -55px;\n background-color: transparent;\n -webkit-animation: rotation .7s infinite linear;\n -moz-animation: rotation .7s infinite linear;\n -o-animation: rotation .7s infinite linear;\n animation: rotation .7s infinite linear;\n border-left: 5px solid #cbcbca;\n border-right: 5px solid #cbcbca;\n border-bottom: 5px solid #cbcbca;\n border-top: 5px solid #2380be;\n border-radius: 100%\n }\n\n @-webkit-keyframes rotation {\n from {\n -webkit-transform: rotate(0deg)\n }\n to {\n -webkit-transform: rotate(359deg)\n }\n }\n @-moz-keyframes rotation {\n from {\n -moz-transform: rotate(0deg)\n }\n to {\n -moz-transform: rotate(359deg)\n }\n }\n @-o-keyframes rotation {\n from {\n -o-transform: rotate(0deg)\n }\n to {\n -o-transform: rotate(359deg)\n }\n }\n @keyframes rotation {\n from {\n transform: rotate(0deg)\n }\n to {\n transform: rotate(359deg)\n }\n }\n`;\n\nexport function componentTemplate({ jsxDom } : { jsxDom : Function }) : HTMLElement {\n\n return (\n \n \n PayPal\n \n \n \n

\n \n\n
\n

\n

\n

\n
\n \n \n );\n}\n","/* @flow */\n\nimport { CHECKOUT_OVERLAY_COLOR } from '../../../constants';\n\nexport function getContainerStyle({ id, tag, CONTEXT, CLASS, ANIMATION } : { id : string, tag : string, CONTEXT : Object, CLASS : Object, ANIMATION : Object }) : string {\n return `\n #${ id } {\n position: absolute;\n z-index: 2147483647;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n\n -webkit-transform: translate3d(0, 0, 0);\n -moz-transform: translate3d(0, 0, 0);\n -ms-transform: translate3d(0, 0, 0);\n -o-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.BLACK } {\n background-color: black;\n background-color: rgba(0, 0, 0, 0.75);\n\n background: -webkit-radial-gradient(50% 50%, ellipse closest-corner, rgba(0,0,0,1) 1%, rgba(0,0,0,0.75) 100%);\n background: -moz-radial-gradient(50% 50%, ellipse closest-corner, rgba(0,0,0,1) 1%, rgba(0,0,0,0.75) 100%);\n background: -ms-radial-gradient(50% 50%, ellipse closest-corner, rgba(0,0,0,1) 1%, rgba(0,0,0,0.75) 100%);\n background: radial-gradient(50% 50%, ellipse closest-corner, rgba(0,0,0,1) 1%, rgba(0,0,0,0.75) 100%);\n\n color: #fff;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.WHITE } {\n background-color: white;\n background-color: rgba(255, 255, 255, 0.4);\n\n background: -webkit-radial-gradient(50% 50%, ellipse closest-corner, rgba(255, 255, 255,1) 1%, rgba(255, 255, 255,0.4) 100%);\n background: -moz-radial-gradient(50% 50%, ellipse closest-corner, rgba(255, 255, 255,1) 1%, rgba(255, 255, 255,0.4) 100%);\n background: -ms-radial-gradient(50% 50%, ellipse closest-corner, rgba(255, 255, 255,1) 1%, rgba(255, 255, 255,0.4) 100%);\n background: radial-gradient(50% 50%, ellipse closest-corner, rgba(255, 255, 255,1) 1%, rgba(255, 255, 255,0.4) 100%);\n\n color: #333;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.BLACK } a {\n color: #fff;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.WHITE } a {\n color: #333;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.BLACK } .paypal-checkout-close:before,\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.BLACK } .paypal-checkout-close:after {\n background-color: #fff;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.WHITE } .paypal-checkout-close:before,\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.WHITE } .paypal-checkout-close:after {\n background-color: #111;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.POPUP } {\n cursor: pointer;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.POPUP } {\n cursor: pointer;\n }\n\n #${ id } a {\n text-decoration: none;\n }\n\n #${ id } .paypal-checkout-modal {\n font-family: \"HelveticaNeue\", \"HelveticaNeue-Light\", \"Helvetica Neue Light\", helvetica, arial, sans-serif;\n font-size: 14px;\n text-align: center;\n\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n -ms-box-sizing: border-box;\n box-sizing: border-box;\n max-width: 350px;\n top: 50%;\n left: 50%;\n position: absolute;\n transform: translateX(-50%) translateY(-50%);\n -webkit-transform: translateX(-50%) translateY(-50%);\n -moz-transform: translateX(-50%) translateY(-50%);\n -o-transform: translateX(-50%) translateY(-50%);\n -ms-transform: translateX(-50%) translateY(-50%);\n cursor: pointer;\n text-align: center;\n }\n\n #${ id }.${ tag }-loading .paypal-checkout-message, #${ id }.${ tag }-loading .paypal-checkout-continue {\n display: none;\n }\n\n .paypal-checkout-loader {\n display: none;\n }\n\n #${ id }.${ tag }-loading .paypal-checkout-loader {\n display: block;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-logo {\n cursor: pointer;\n margin-bottom: 30px;\n display: inline-block;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-logo img {\n height: 36px;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-logo img.paypal-checkout-logo-pp {\n margin-right: 10px;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-message {\n font-size: 15px;\n line-height: 1.5;\n padding: 10px 0;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-message, #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-continue {\n display: none;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-continue {\n font-size: 15px;\n line-height: 1.35;\n padding: 10px 0;\n font-weight: bold;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-continue a {\n border-bottom: 1px solid currentColor;\n }\n\n #${ id } .paypal-checkout-close {\n position: absolute;\n right: 16px;\n top: 16px;\n width: 16px;\n height: 16px;\n opacity: 0.6;\n }\n\n #${ id }.${ tag }-loading .paypal-checkout-close {\n display: none;\n }\n\n #${ id } .paypal-checkout-close:hover {\n opacity: 1;\n }\n\n #${ id } .paypal-checkout-close:before, .paypal-checkout-close:after {\n position: absolute;\n left: 8px;\n content: ' ';\n height: 16px;\n width: 2px;\n }\n\n #${ id } .paypal-checkout-close:before {\n transform: rotate(45deg);\n -webkit-transform: rotate(45deg);\n -moz-transform: rotate(45deg);\n -o-transform: rotate(45deg);\n -ms-transform: rotate(45deg);\n }\n\n #${ id } .paypal-checkout-close:after {\n transform: rotate(-45deg);\n -webkit-transform: rotate(-45deg);\n -moz-transform: rotate(-45deg);\n -o-transform: rotate(-45deg);\n -ms-transform: rotate(-45deg);\n }\n\n #${ id } .paypal-checkout-iframe-container {\n display: none;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container,\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container > .${ CLASS.OUTLET },\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container > .${ CLASS.OUTLET } > iframe {\n max-height: calc(95vh - 60px);\n max-width: 95vw;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container {\n\n display: block;\n\n position: absolute;\n\n top: 50%;\n left: 50%;\n\n min-width: 450px;\n\n transform: translate(-50%, -50%);\n -webkit-transform: translate(-50%, -50%);\n -moz-transform: translate(-50%, -50%);\n -o-transform: translate(-50%, -50%);\n -ms-transform: translate(-50%, -50%);\n\n transform: translate3d(-50%, -50%, 0);\n -webkit-transform: translate3d(-50%, -50%, 0);\n -moz-transform: translate3d(-50%, -50%, 0);\n -o-transform: translate3d(-50%, -50%, 0);\n -ms-transform: translate3d(-50%, -50%, 0);\n\n border-radius: 10px;\n overflow: hidden;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } {\n\n position: relative;\n\n -webkit-transition: all 0.3s ease;\n -moz-transition: all 0.3s ease;\n -ms-transition: all 0.3s ease;\n -o-transition: all 0.3 ease;\n transition: all 0.3s ease;\n\n -webkit-animation-duration: 0.3s;\n animation-duration: 0.3s;\n -webkit-animation-fill-mode: both;\n animation-fill-mode: both;\n\n min-width: 450px;\n max-width: 450px;\n width: 450px;\n height: 535px;\n\n background-color: white;\n\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe {\n position: absolute;\n top: 0;\n left: 0;\n transition: opacity .4s ease-in-out;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe.${ CLASS.COMPONENT_FRAME } {\n z-index: 100;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe.${ CLASS.PRERENDER_FRAME } {\n z-index: 200;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe.${ CLASS.VISIBLE } {\n opacity: 1;\n z-index: 200;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe.${ CLASS.INVISIBLE } {\n opacity: 0;\n z-index: 100;\n }\n\n @media screen and (-ms-high-contrast: active) {\n #${ id } .paypal-checkout-close {\n opacity: 1;\n }\n\n #${ id } .paypal-checkout-close:before , .paypal-checkout-close:after {\n background-color: currentColor;\n }\n }\n\n @media screen and (max-width: 470px) {\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container,\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } {\n min-width: 100%;\n min-width: calc(100% - 20px);\n min-width: -webkit-calc(100% - 20px);\n min-width: -moz-calc(100% - 20px);\n min-width: -o-calc(100% - 20px);\n min-width: -ms-calc(100% - 20px);\n\n max-width: 100%;\n max-width: calc(100% - 20px);\n max-width: -webkit-calc(100% - 20px);\n max-width: -moz-calc(100% - 20px);\n max-width: -o-calc(100% - 20px);\n max-width: -ms-calc(100% - 20px);\n }\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } iframe {\n width: 1px;\n min-width: 100%;\n height: 100%;\n }\n\n @-webkit-keyframes ${ ANIMATION.SHOW_COMPONENT } {\n from {\n opacity: 0;\n transform: scale3d(.3, .3, .3);\n -webkit-transform: scale3d(.3, .3, .3);\n }\n\n to {\n opacity: 1;\n transform: scale3d(1, 1, 1);\n -webkit-transform: scale3d(1, 1, 1);\n }\n }\n\n @keyframes ${ ANIMATION.SHOW_COMPONENT } {\n from {\n opacity: 0;\n transform: scale3d(.3, .3, .3);\n -webkit-transform: scale3d(.3, .3, .3);\n }\n\n to {\n opacity: 1;\n transform: scale3d(1, 1, 1);\n -webkit-transform: scale3d(1, 1, 1);\n }\n }\n\n @-webkit-keyframes ${ ANIMATION.HIDE_COMPONENT } {\n from {\n transform: scale3d(1, 1, 1);\n -webkit-transform: scale3d(1, 1, 1);\n }\n\n to {\n opacity: 0;\n transform: scale3d(.3, .3, .3);\n -webkit-transform: scale3d(.3, .3, .3);\n }\n }\n\n @keyframes ${ ANIMATION.HIDE_COMPONENT } {\n from {\n transform: scale3d(1, 1, 1);\n -webkit-transform: scale3d(1, 1, 1);\n }\n\n to {\n opacity: 0;\n transform: scale3d(.3, .3, .3);\n -webkit-transform: scale3d(.3, .3, .3);\n }\n }\n\n .paypal-spinner {\n height: 30px;\n width: 30px;\n display: inline-block;\n box-sizing: content-box;\n opacity: 1;\n filter: alpha(opacity=100);\n -webkit-animation: rotation .7s infinite linear;\n -moz-animation: rotation .7s infinite linear;\n -o-animation: rotation .7s infinite linear;\n animation: rotation .7s infinite linear;\n border-left: 8px solid rgba(0, 0, 0, .2);\n border-right: 8px solid rgba(0, 0, 0, .2);\n border-bottom: 8px solid rgba(0, 0, 0, .2);\n border-top: 8px solid #fff;\n border-radius: 100%\n }\n\n @-webkit-keyframes rotation {\n from {\n -webkit-transform: rotate(0deg)\n }\n to {\n -webkit-transform: rotate(359deg)\n }\n }\n @-moz-keyframes rotation {\n from {\n -moz-transform: rotate(0deg)\n }\n to {\n -moz-transform: rotate(359deg)\n }\n }\n @-o-keyframes rotation {\n from {\n -o-transform: rotate(0deg)\n }\n to {\n -o-transform: rotate(359deg)\n }\n }\n @keyframes rotation {\n from {\n transform: rotate(0deg)\n }\n to {\n transform: rotate(359deg)\n }\n }\n `;\n}\n","/* @flow */\n\nexport function getSandboxStyle({ id, ANIMATION } : { id : string, ANIMATION : Object }) : string {\n return `\n #${ id }.paypal-checkout-sandbox {\n display: block;\n position: fixed;\n top: 0;\n left: 0;\n\n width: 100%;\n height: 100%;\n width: 100vw;\n height: 100vh;\n max-width: 100%;\n max-height: 100%;\n min-width: 100%;\n min-height: 100%;\n\n z-index: 2147483647;\n\n -webkit-animation-duration: 1s;\n animation-duration: 1s;\n\n animation-fill-mode:forwards;\n animation-iteration-count: 1;\n\n -webkit-animation-fill-mode:forwards;\n -webkit-animation-iteration-count: 1;\n }\n\n #${ id }.paypal-checkout-sandbox .paypal-checkout-sandbox-iframe {\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n }\n\n @-webkit-keyframes ${ ANIMATION.SHOW_CONTAINER } {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n }\n\n @keyframes ${ ANIMATION.SHOW_CONTAINER } {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n }\n\n @-webkit-keyframes ${ ANIMATION.HIDE_CONTAINER } {\n from {\n opacity: 1;\n }\n\n 50% {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n }\n\n @keyframes ${ ANIMATION.HIDE_CONTAINER } {\n from {\n opacity: 1;\n }\n\n 50% {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n }\n `;\n}\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { base64encode } from 'belter/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { fundingLogos } from '../../resources';\nimport { BUTTON_LOGO_COLOR, CHECKOUT_OVERLAY_COLOR } from '../../constants';\nimport { isIos } from '../../lib';\n\nimport { containerContent } from './containerContent';\nimport { getContainerStyle } from './containerStyle';\nimport { getSandboxStyle } from './sandboxStyle';\n\nconst LOGO_COLOR = {\n [ CHECKOUT_OVERLAY_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ CHECKOUT_OVERLAY_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n};\n\nexport {\n getContainerStyle,\n getSandboxStyle\n};\n\n// eslint-disable-next-line flowtype/require-exact-type\nexport type ContainerTemplateOptions = {\n id : string,\n props : Object,\n CLASS : Object,\n ANIMATION : Object,\n CONTEXT : Object,\n EVENT : Object,\n dimensions : {\n width : number,\n height : number\n },\n actions : Object,\n tag : string,\n context : string,\n outlet : HTMLElement,\n on : Function,\n jsxDom : Function\n};\n\nexport function containerTemplate({ id, props, CLASS, ANIMATION, CONTEXT, EVENT, on, tag, context, actions, outlet, jsxDom } : ContainerTemplateOptions) : HTMLElement {\n\n const [ lang, country ] = props.locale.split('_');\n\n const content = containerContent[country][lang];\n\n function close(event) {\n event.preventDefault();\n event.stopPropagation();\n actions.close();\n }\n\n function focus(event) {\n event.preventDefault();\n event.stopPropagation();\n\n if (isIos()) {\n // eslint-disable-next-line no-alert\n window.alert('Please switch tabs to reactivate the PayPal window');\n } else {\n ZalgoPromise.try(actions.focus).catch(actions.close);\n }\n }\n\n const style = props.style || {};\n const overlayColor = style.overlayColor || CHECKOUT_OVERLAY_COLOR.BLACK;\n const logoColor = LOGO_COLOR[overlayColor];\n\n const ppLogo = (typeof fundingLogos.pp === 'function')\n ? fundingLogos.pp({ logoColor })\n : fundingLogos.pp[logoColor];\n\n const paypalLogo = (typeof fundingLogos.paypal === 'function')\n ? fundingLogos.paypal({ logoColor })\n : fundingLogos.paypal[logoColor];\n\n const el = (\n
\n \n
\n
\n \n \n
\n
\n {content.windowMessage}\n
\n
\n
\n
\n
\n
\n\n
\n {outlet}\n
\n\n \n
\n );\n\n const container = (\n \n \n { el }\n \n \n );\n\n on(EVENT.CLOSE, () => {\n el.className += ` ${ tag }-loading`;\n });\n\n return (\n
\n \n\n \n
\n );\n}\n","/* @flow */\n\nexport * from './componentTemplate';\nexport * from './containerTemplate';\n","/* @flow */\n\nimport { config } from '../config';\nimport { FUNDING, PAYMENT_TYPE } from '../constants';\n\nexport function determineParameterFromToken(token : string) : string {\n return (token && token.indexOf('BA-') === 0) ? 'ba_token' : 'token';\n}\n\nexport function getPaymentType(payment : string) : string {\n if (payment.indexOf('BA-') === 0) {\n return PAYMENT_TYPE.BA_TOKEN;\n } else if (payment.indexOf('PAY-') === 0 || payment.indexOf('PAYID-') === 0) {\n return PAYMENT_TYPE.PAY_ID;\n } else if (payment.indexOf('EC-') === 0) {\n return PAYMENT_TYPE.EC_TOKEN;\n }\n\n return PAYMENT_TYPE.EC_TOKEN;\n}\n\nexport function determineUrl(env : string, fundingSource : ?string, payment : string) : string {\n\n const paymentType = getPaymentType(payment);\n\n if (paymentType === PAYMENT_TYPE.BA_TOKEN) {\n return config.billingUrls[env];\n }\n\n if (fundingSource === FUNDING.CARD || fundingSource === FUNDING.ELV) {\n return config.guestUrls[env];\n }\n\n if (fundingSource === FUNDING.IDEAL || fundingSource === FUNDING.BANCONTACT || fundingSource === FUNDING.GIROPAY ||\n fundingSource === FUNDING.SOFORT || fundingSource === FUNDING.EPS || fundingSource === FUNDING.MYBANK ||\n fundingSource === FUNDING.P24 || fundingSource === FUNDING.PAYU || fundingSource === FUNDING.VERKKOPANKKI ||\n fundingSource === FUNDING.BLIK || fundingSource === FUNDING.TRUSTLY || fundingSource === FUNDING.MAXIMA ||\n fundingSource === FUNDING.BOLETO || fundingSource === FUNDING.OXXO) {\n return config.altpayUrls[env];\n }\n\n return config.checkoutUrls[env];\n}\n","/* @flow */\n\nexport function extendNamespace(xports : Object, namespaces : $ReadOnlyArray = [], childnamespaces : $ReadOnlyArray = []) : Object {\n\n for (const name of namespaces) {\n const namespace = window[name];\n\n if (!namespace) {\n continue;\n }\n\n for (const childname of childnamespaces) {\n let childnamespace = xports[childname];\n\n if (namespace[childname]) {\n childnamespace = { ...namespace[childname], ...childnamespace };\n }\n\n xports = { ...namespace, ...xports, [ childname ]: childnamespace };\n }\n }\n\n for (const name of namespaces) {\n window[name] = xports;\n }\n\n return xports;\n}\n","/* @flow */\n/* eslint max-lines: off */\n\nexport const containerContent = {\n 'AT': {\n 'de': {\n 'windowMessage': 'Sie sehen das sichere Browserfenster von PayPal nicht? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ZW': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ZM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ZA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'YT': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'YE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'WS': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'WF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'VU': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'VG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'VE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'VC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'VA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'UY': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'UG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TV': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'TT': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'TO': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'TN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'TM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'TD': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'TC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'SZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SV': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'ST': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SR': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'SO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'SM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SL': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SH': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'SB': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'SA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'RW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'RS': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'RE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'QA': {\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PY': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'PW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'PN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'PM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'PF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'PA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'OM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'NU': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'NR': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'NP': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'NI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'NG': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'NE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'NC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MV': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'MU': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MT': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MS': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'MR': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MQ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MN': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'ML': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'MK': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MH': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'MG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ME': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MD': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MC': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'MA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'LS': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'LK': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'LI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'LC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'LA': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'KZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'KY': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'KW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'KN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'KM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'KI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'KH': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'KG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'KE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'JO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'JM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'IS': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'HR': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'HN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'GY': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'GW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GT': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'GP': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'GM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GL': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'da': {\n 'windowMessage': 'Kan du ikke se PayPals sikre browser? Vi hj\\u00E6lper dig med at genstarte vinduet, s\\u00E5 du kan betale.',\n 'continue': 'Forts\\u00E6t'\n }\n },\n 'GI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GD': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'GA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'FO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'da': {\n 'windowMessage': 'Kan du ikke se PayPals sikre browser? Vi hj\\u00E6lper dig med at genstarte vinduet, s\\u00E5 du kan betale.',\n 'continue': 'Forts\\u00E6t'\n }\n },\n 'FM': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'FK': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'FJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'ET': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ER': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'EG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'EC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'DZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'DO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'DM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'DJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'CY': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CV': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CR': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'CO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'CM': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'CL': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'CK': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CI': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'CG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CD': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'BZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'BY': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BT': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'BS': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'BO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'BN': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'BM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'BJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'BI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'BH': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'BG': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'BB': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'BA': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'AO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'AM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AL': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'AG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'AE': {\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AD': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n }\n },\n 'GB': {\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 PayPal\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\'ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AR': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'US': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Click to Continue'\n }\n },\n 'VN': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment. ',\n 'continue': 'Continue'\n }\n },\n 'UA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TW': {\n 'zh': {\n 'windowMessage': '\\u770B\\u4E0D\\u5230\\u5B89\\u5168\\u9023\\u7DDA\\u7684 PayPal \\u700F\\u89BD\\u5668\\uFF1F\\u6211\\u5011\\u5C07\\u6703\\u91CD\\u65B0\\u555F\\u52D5\\u8996\\u7A97\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002\\u00A0 ',\n 'continue': '\\u7E7C\\u7E8C'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TR': {\n 'tr': {\n 'windowMessage': 'G\\u00FCvenli PayPal taray\\u0131c\\u0131s\\u0131n\\u0131 g\\u00F6rm\\u00FCyor musunuz? Al\\u0131\\u015Fveri\\u015Finizi tamamlamak i\\u00E7in pencereyi yeniden ba\\u015Flatman\\u0131za yard\\u0131mc\\u0131 olaca\\u011F\\u0131z.\\u00A0 ',\n 'continue': 'Devam'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TH': {\n 'th': {\n 'windowMessage': '\\u0E16\\u0E49\\u0E32\\u0E04\\u0E38\\u0E13\\u0E44\\u0E21\\u0E48\\u0E40\\u0E2B\\u0E47\\u0E19\\u0E40\\u0E1A\\u0E23\\u0E32\\u0E27\\u0E4C\\u0E40\\u0E0B\\u0E2D\\u0E23\\u0E4C\\u0E17\\u0E35\\u0E48\\u0E21\\u0E35\\u0E23\\u0E30\\u0E1A\\u0E1A\\u0E04\\u0E27\\u0E32\\u0E21\\u0E1B\\u0E25\\u0E2D\\u0E14\\u0E20\\u0E31\\u0E22\\u0E02\\u0E2D\\u0E07 PayPal \\u0E40\\u0E23\\u0E32\\u0E08\\u0E30\\u0E0A\\u0E48\\u0E27\\u0E22\\u0E04\\u0E38\\u0E13\\u0E40\\u0E1B\\u0E34\\u0E14\\u0E2B\\u0E19\\u0E49\\u0E32\\u0E15\\u0E48\\u0E32\\u0E07\\u0E2D\\u0E35\\u0E01\\u0E04\\u0E23\\u0E31\\u0E49\\u0E07\\u0E40\\u0E1E\\u0E37\\u0E48\\u0E2D\\u0E0A\\u0E33\\u0E23\\u0E30\\u0E40\\u0E07\\u0E34\\u0E19\\u0E43\\u0E2B\\u0E49\\u0E40\\u0E23\\u0E35\\u0E22\\u0E1A\\u0E23\\u0E49\\u0E2D\\u0E22 ',\n 'continue': '\\u0E14\\u0E33\\u0E40\\u0E19\\u0E34\\u0E19\\u0E01\\u0E32\\u0E23\\u0E15\\u0E48\\u0E2D'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SK': {\n 'sk': {\n 'windowMessage': 'Nezobrazuje sa v\\u00e1m zabezpe\\u010den\\u00fd prehliada\\u010d PayPal? Pom\\u00f4\\u017eeme v\\u00e1m znova otvori\\u0165 okno, aby ste mohli n\\u00e1kup dokon\\u010di\\u0165.\\u00A0 ',\n 'continue': 'Pokra\\u010dova\\u0165'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SG': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SE': {\n 'sv': {\n 'windowMessage': 'Ser du inte den s\\u00E4kra PayPal-webbl\\u00E4saren? Vi hj\\u00E4lper dig att starta om f\\u00F6nstret f\\u00F6r att slutf\\u00F6ra ditt k\\u00F6p. ',\n 'continue': 'Forts\\u00E4tt'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'RU': {\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'RO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PT': {\n 'pt': {\n 'windowMessage': 'N\\u00E3o v\\u00EA a indica\\u00E7\\u00E3o de sess\\u00E3o segura PayPal no browser? Vamos ajudar a reabrir a janela para que possa concluir a sua compra.',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PL': {\n 'pl': {\n 'windowMessage': 'Nie widzisz bezpiecznej przegl\\u0105darki PayPal? Pomo\\u017Cemy Ci ponownie uruchomi\\u0107 to okno w celu dokonania zakupu.\\u00A0 ',\n 'continue': 'Kontynuuj'\n },\n 'en': {\n 'windowMessage': 'You don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PH': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre paiement.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Le ayudaremos a abrir de nuevo la ventana para completar su pago.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NO': {\n 'no': {\n 'windowMessage': 'Ser du ikke den sikre PayPal-nettleseren? Vi hjelper deg med \\u00E5 starte vinduet p\\u00E5 nytt s\\u00E5 du kan fullf\\u00F8re kj\\u00F8pet.\\u00A0 ',\n 'continue': 'Fortsett'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NL': {\n 'nl': {\n 'windowMessage': 'Ziet u geen beveiligde PayPal-browser? We helpen u het venster opnieuw te openen om uw aankoop te voltooien.\\u00A0 ',\n 'continue': 'Doorgaan'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MY': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MX': {\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'LV': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'LU': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'de': {\n 'windowMessage': 'Das PayPal-Fenster wird nicht angezeigt? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n }\n },\n 'LT': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'KR': {\n 'ko': {\n 'windowMessage': '\\uBCF4\\uC548 PayPal \\uBE0C\\uB77C\\uC6B0\\uC800\\uAC00 \\uBCF4\\uC774\\uC9C0 \\uC54A\\uC73C\\uC2E0\\uAC00\\uC694? \\uCC3D\\uC744 \\uB2E4\\uC2DC \\uC2E4\\uD589\\uD558\\uC5EC \\uACB0\\uC81C\\uB97C \\uC644\\uB8CC\\uD560 \\uC218 \\uC788\\uB3C4\\uB85D \\uB3C4\\uC640\\uB4DC\\uB9AC\\uACA0\\uC2B5\\uB2C8\\uB2E4.\\u00A0 ',\n 'continue': '\\uACC4\\uC18D'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'JP': {\n 'ja': {\n 'windowMessage': '\\u30BB\\u30AD\\u30E5\\u30A2\\u306A\\u30D6\\u30E9\\u30A6\\u30B6\\u304C\\u8868\\u793A\\u3055\\u308C\\u306A\\u3044\\u5834\\u5408\\u306F\\u3001\\u30A6\\u30A3\\u30F3\\u30C9\\u30A6\\u3092\\u518D\\u8D77\\u52D5\\u3057\\u3066\\u3001\\u652F\\u6255\\u3044\\u3092\\u5B8C\\u4E86\\u3067\\u304D\\u308B\\u3088\\u3046\\u304A\\u624B\\u4F1D\\u3044\\u3044\\u305F\\u3057\\u307E\\u3059\\u3002',\n 'continue': '\\u7D9A\\u884C'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment. ',\n 'continue': 'Continue'\n }\n },\n 'IT': {\n 'it': {\n 'windowMessage': 'Non vedi la pagina sicura di PayPal? Ti aiuteremo a riaprire la finestra per completare l\\'acquisto.\\u00A0 ',\n 'continue': 'Continua'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'IN': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'IL': {\n 'he': {\n 'windowMessage': '\\u05DC\\u05D0 \\u05E8\\u05D5\\u05D0\\u05D4 \\u05D0\\u05EA \\u05D3\\u05E4\\u05D3\\u05E4\\u05DF PayPal \\u05D4\\u05DE\\u05D0\\u05D5\\u05D1\\u05D8\\u05D7? \\u05E0\\u05E2\\u05D6\\u05D5\\u05E8 \\u05DC\\u05DA \\u05DC\\u05E4\\u05EA\\u05D5\\u05D7 \\u05DE\\u05D7\\u05D3\\u05E9 \\u05D0\\u05EA \\u05D4\\u05D7\\u05DC\\u05D5\\u05DF \\u05DB\\u05D3\\u05D9 \\u05DC\\u05D4\\u05E9\\u05DC\\u05D9\\u05DD \\u05D0\\u05EA \\u05D4\\u05E7\\u05E0\\u05D9\\u05D9\\u05D4 \\u05E9\\u05DC\\u05DA.\\u00A0 ',\n 'continue': '\\u05D4\\u05DE\\u05E9\\u05DA'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'IE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'HU': {\n 'hu': {\n 'windowMessage': 'Nem l\\u00e1tja a biztons\\u00e1gos PayPal-b\\u00f6ng\\u00e9sz\\u0151t? Seg\\u00edt\\u00fcnk \\u00fajra bet\\u00f6lteni az ablakot, hogy befejezhesse a v\\u00e1s\\u00e1rl\\u00e1st.\\u00A0 ',\n 'continue': 'Folytat\\u00e1s'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ID': {\n 'id': {\n 'windowMessage': 'Browser PayPal yang aman tidak terlihat? Kami akan membantu menampilkan ulang jendela untuk menyelesaikan pembayaran Anda.\\u00A0 ',\n 'continue': 'Lanjutkan'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'HK': {\n 'zh': {\n 'windowMessage': '\\u770B\\u4E0D\\u5230\\u5B89\\u5168\\u7684 PayPal \\u700F\\u89BD\\u5668\\u8996\\u7A97\\uFF1F\\u6211\\u5011\\u6703\\u52A9\\u4F60\\u91CD\\u65B0\\u958B\\u555F\\u8996\\u7A97\\uFF0C\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002',\n 'continue': '\\u7E7C\\u7E8C'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GROUP-LATAM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'GROUP-EMEA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'pt': {\n 'windowMessage': 'N\\u00E3o v\\u00EA a indica\\u00E7\\u00E3o de sess\\u00E3o segura PayPal no browser? Vamos ajudar a reabrir a janela para que possa concluir a sua compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'de': {\n 'windowMessage': 'Sie sehen das sichere Browserfenster von PayPal nicht? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n },\n 'da': {\n 'windowMessage': 'Kan du ikke se PayPals sikre browser? Vi hj\\u00E6lper dig med at genstarte vinduet, s\\u00E5 du kan betale.',\n 'continue': 'Forts\\u00E6t'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'GROUP-APAC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ko': {\n 'windowMessage': '\\uBCF4\\uC548 PayPal \\uBE0C\\uB77C\\uC6B0\\uC800\\uAC00 \\uBCF4\\uC774\\uC9C0 \\uC54A\\uC73C\\uC2E0\\uAC00\\uC694? \\uCC3D\\uC744 \\uB2E4\\uC2DC \\uC2E4\\uD589\\uD558\\uC5EC \\uAD6C\\uB9E4\\uB97C \\uC644\\uB8CC\\uD560 \\uC218 \\uC788\\uB3C4\\uB85D \\uB3C4\\uC640\\uB4DC\\uB9AC\\uACA0\\uC2B5\\uB2C8\\uB2E4. ',\n 'continue': '\\uACC4\\uC18D'\n },\n 'id': {\n 'windowMessage': 'Browser PayPal yang aman tidak terlihat? Kami akan membantu menampilkan ulang jendela untuk menyelesaikan pembelian Anda. ',\n 'continue': 'Lanjutkan'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'GR': {\n 'el': {\n 'windowMessage': '\\u0394\\u03b5\\u03bd \\u03b2\\u03bb\\u03ad\\u03c0\\u03b5\\u03c4\\u03b5 \\u03c4\\u03bf \\u03b1\\u03c3\\u03c6\\u03b1\\u03bb\\u03ad\\u03c2 \\u03c0\\u03c1\\u03cc\\u03b3\\u03c1\\u03b1\\u03bc\\u03bc\\u03b1 \\u03c0\\u03b5\\u03c1\\u03b9\\u03ae\\u03b3\\u03b7\\u03c3\\u03b7\\u03c2 PayPal; \\u0398\\u03b1 \\u03c3\\u03b1\\u03c2 \\u03b2\\u03bf\\u03b7\\u03b8\\u03ae\\u03c3\\u03bf\\u03c5\\u03bc\\u03b5 \\u03bd\\u03b1 \\u03b5\\u03c0\\u03b1\\u03bd\\u03b5\\u03ba\\u03ba\\u03b9\\u03bd\\u03ae\\u03c3\\u03b5\\u03c4\\u03b5 \\u03c4\\u03bf \\u03c0\\u03b1\\u03c1\\u03ac\\u03b8\\u03c5\\u03c1\\u03bf \\u03b3\\u03b9\\u03b1 \\u03bd\\u03b1 \\u03bf\\u03bb\\u03bf\\u03ba\\u03bb\\u03b7\\u03c1\\u03ce\\u03c3\\u03b5\\u03c4\\u03b5 \\u03c4\\u03b7\\u03bd \\u03b1\\u03b3\\u03bf\\u03c1\\u03ac \\u03c3\\u03b1\\u03c2.\\u00A0 ',\n 'continue': '\\u03a3\\u03c5\\u03bd\\u03ad\\u03c7\\u03b5\\u03b9\\u03b1'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'FR': {\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 PayPal\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ES': {\n 'es': {\n 'windowMessage': '\\u00BFNo ve el s\\u00EDmbolo de navegaci\\u00F3n segura de PayPal? Le ayudaremos a abrir de nuevo la ventana para completar la compra. ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'FI': {\n 'fi': {\n 'windowMessage': 'Eik\\u00f6 suojattua PayPal-selainta n\\u00e4y? Autamme avaamaan ikkunan uudelleen oston viimeistely\\u00e4 varten.\\u00A0 ',\n 'continue': 'Jatka'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'EE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'DK': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'da': {\n 'windowMessage': 'Kan du ikke se PayPals sikre browser? Vi hj\\u00E6lper dig med at genstarte vinduet, s\\u00E5 du kan betale.',\n 'continue': 'Forts\\u00E6t'\n }\n },\n 'CZ': {\n 'cs': {\n 'windowMessage': 'Nezobrazuje se v\\u00e1m bezpe\\u010dn\\u00fd prohl\\u00ed\\u017ee\\u010d PayPal? Pom\\u016f\\u017eeme v\\u00e1m okno znovu otev\\u0159\\u00edt, abyste mohli n\\u00e1kup dokon\\u010dit.',\n 'continue': 'Pokra\\u010dovat'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'DE': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'de': {\n 'windowMessage': 'Sie sehen das sichere Browserfenster von PayPal nicht? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n }\n },\n 'CH': {\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 PayPal\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'de': {\n 'windowMessage': 'Sie sehen das sichere Browserfenster von PayPal nicht? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n }\n },\n 'CA': {\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 de PayPal\\u00A0? Nous vous aiderons \\u00E0 relancer la fen\\u00EAtre afin d\\'effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you relaunch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'C2': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BE': {\n 'nl': {\n 'windowMessage': 'Ziet u de beveiligde PayPal-browser niet? We helpen u het venster opnieuw te openen om uw aankoop te voltooien.\\u00A0 ',\n 'continue': 'Doorgaan'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 PayPal\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BR': {\n 'pt': {\n 'windowMessage': 'N\\u00E3o est\\u00E1 vendo o navegador seguro do PayPal? Ajudaremos voc\\u00EA a reabrir a janela para concluir a compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AU': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\'ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n }\n};\n","/*\n * [hi-base32]{@link https://github.com/emn178/hi-base32}\n *\n * @version 0.5.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var root = typeof window === 'object' ? window : {};\n var NODE_JS = !root.HI_BASE32_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n }\n var COMMON_JS = !root.HI_BASE32_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var BASE32_ENCODE_CHAR = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'.split('');\n var BASE32_DECODE_CHAR = {\n 'A': 0, 'B': 1, 'C': 2, 'D': 3, 'E': 4, 'F': 5, 'G': 6, 'H': 7, 'I': 8,\n 'J': 9, 'K': 10, 'L': 11, 'M': 12, 'N': 13, 'O': 14, 'P': 15, 'Q': 16,\n 'R': 17, 'S': 18, 'T': 19, 'U': 20, 'V': 21, 'W': 22, 'X': 23, 'Y': 24,\n 'Z': 25, '2': 26, '3': 27, '4': 28, '5': 29, '6': 30, '7': 31\n };\n\n var blocks = [0, 0, 0, 0, 0, 0, 0, 0];\n\n var throwInvalidUtf8 = function (position, partial) {\n if (partial.length > 10) {\n partial = '...' + partial.substr(-10);\n }\n var err = new Error('Decoded data is not valid UTF-8.'\n + ' Maybe try base32.decode.asBytes()?'\n + ' Partial data after reading ' + position + ' bytes: ' + partial + ' <-');\n err.position = position;\n throw err;\n };\n\n var toUtf8String = function (bytes) {\n var str = '', length = bytes.length, i = 0, followingChars = 0, b, c;\n while (i < length) {\n b = bytes[i++];\n if (b <= 0x7F) {\n str += String.fromCharCode(b);\n continue;\n } else if (b > 0xBF && b <= 0xDF) {\n c = b & 0x1F;\n followingChars = 1;\n } else if (b <= 0xEF) {\n c = b & 0x0F;\n followingChars = 2;\n } else if (b <= 0xF7) {\n c = b & 0x07;\n followingChars = 3;\n } else {\n throwInvalidUtf8(i, str);\n }\n\n for (var j = 0; j < followingChars; ++j) {\n b = bytes[i++];\n if (b < 0x80 || b > 0xBF) {\n throwInvalidUtf8(i, str);\n }\n c <<= 6;\n c += b & 0x3F;\n }\n if (c >= 0xD800 && c <= 0xDFFF) {\n throwInvalidUtf8(i, str);\n }\n if (c > 0x10FFFF) {\n throwInvalidUtf8(i, str);\n }\n\n if (c <= 0xFFFF) {\n str += String.fromCharCode(c);\n } else {\n c -= 0x10000;\n str += String.fromCharCode((c >> 10) + 0xD800);\n str += String.fromCharCode((c & 0x3FF) + 0xDC00);\n }\n }\n return str;\n };\n\n var decodeAsBytes = function (base32Str) {\n if (!/^[A-Z2-7=]+$/.test(base32Str)) {\n throw new Error('Invalid base32 characters');\n }\n base32Str = base32Str.replace(/=/g, '');\n var v1, v2, v3, v4, v5, v6, v7, v8, bytes = [], index = 0, length = base32Str.length;\n\n // 4 char to 3 bytes\n for (var i = 0, count = length >> 3 << 3; i < count;) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v8 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255;\n bytes[index++] = (v4 << 4 | v5 >>> 1) & 255;\n bytes[index++] = (v5 << 7 | v6 << 2 | v7 >>> 3) & 255;\n bytes[index++] = (v7 << 5 | v8) & 255;\n }\n\n // remain bytes\n var remain = length - count;\n if (remain === 2) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n } else if (remain === 4) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255;\n } else if (remain === 5) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255;\n bytes[index++] = (v4 << 4 | v5 >>> 1) & 255;\n } else if (remain === 7) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255;\n bytes[index++] = (v4 << 4 | v5 >>> 1) & 255;\n bytes[index++] = (v5 << 7 | v6 << 2 | v7 >>> 3) & 255;\n }\n return bytes;\n };\n\n var encodeAscii = function (str) {\n var v1, v2, v3, v4, v5, base32Str = '', length = str.length;\n for (var i = 0, count = parseInt(length / 5) * 5; i < count;) {\n v1 = str.charCodeAt(i++);\n v2 = str.charCodeAt(i++);\n v3 = str.charCodeAt(i++);\n v4 = str.charCodeAt(i++);\n v5 = str.charCodeAt(i++);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3 | v5 >>> 5) & 31] +\n BASE32_ENCODE_CHAR[v5 & 31];\n }\n\n // remain char\n var remain = length - count;\n if (remain === 1) {\n v1 = str.charCodeAt(i);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2) & 31] +\n '======';\n } else if (remain === 2) {\n v1 = str.charCodeAt(i++);\n v2 = str.charCodeAt(i);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4) & 31] +\n '====';\n } else if (remain === 3) {\n v1 = str.charCodeAt(i++);\n v2 = str.charCodeAt(i++);\n v3 = str.charCodeAt(i);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1) & 31] +\n '===';\n } else if (remain === 4) {\n v1 = str.charCodeAt(i++);\n v2 = str.charCodeAt(i++);\n v3 = str.charCodeAt(i++);\n v4 = str.charCodeAt(i);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3) & 31] +\n '=';\n }\n return base32Str;\n };\n\n var encodeUtf8 = function (str) {\n var v1, v2, v3, v4, v5, code, end = false, base32Str = '',\n index = 0, i, start = 0, bytes = 0, length = str.length;\n do {\n blocks[0] = blocks[5];\n blocks[1] = blocks[6];\n blocks[2] = blocks[7];\n for (i = start; index < length && i < 5; ++index) {\n code = str.charCodeAt(index);\n if (code < 0x80) {\n blocks[i++] = code;\n } else if (code < 0x800) {\n blocks[i++] = 0xc0 | (code >> 6);\n blocks[i++] = 0x80 | (code & 0x3f);\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i++] = 0xe0 | (code >> 12);\n blocks[i++] = 0x80 | ((code >> 6) & 0x3f);\n blocks[i++] = 0x80 | (code & 0x3f);\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++index) & 0x3ff));\n blocks[i++] = 0xf0 | (code >> 18);\n blocks[i++] = 0x80 | ((code >> 12) & 0x3f);\n blocks[i++] = 0x80 | ((code >> 6) & 0x3f);\n blocks[i++] = 0x80 | (code & 0x3f);\n }\n }\n bytes += i - start;\n start = i - 5;\n if (index === length) {\n ++index;\n }\n if (index > length && i < 6) {\n end = true;\n }\n v1 = blocks[0];\n if (i > 4) {\n v2 = blocks[1];\n v3 = blocks[2];\n v4 = blocks[3];\n v5 = blocks[4];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3 | v5 >>> 5) & 31] +\n BASE32_ENCODE_CHAR[v5 & 31];\n } else if (i === 1) {\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2) & 31] +\n '======';\n } else if (i === 2) {\n v2 = blocks[1];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4) & 31] +\n '====';\n } else if (i === 3) {\n v2 = blocks[1];\n v3 = blocks[2];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1) & 31] +\n '===';\n } else {\n v2 = blocks[1];\n v3 = blocks[2];\n v4 = blocks[3];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3) & 31] +\n '=';\n }\n } while (!end);\n return base32Str;\n };\n\n var encodeBytes = function (bytes) {\n var v1, v2, v3, v4, v5, base32Str = '', length = bytes.length;\n for (var i = 0, count = parseInt(length / 5) * 5; i < count;) {\n v1 = bytes[i++];\n v2 = bytes[i++];\n v3 = bytes[i++];\n v4 = bytes[i++];\n v5 = bytes[i++];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3 | v5 >>> 5) & 31] +\n BASE32_ENCODE_CHAR[v5 & 31];\n }\n\n // remain char\n var remain = length - count;\n if (remain === 1) {\n v1 = bytes[i];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2) & 31] +\n '======';\n } else if (remain === 2) {\n v1 = bytes[i++];\n v2 = bytes[i];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4) & 31] +\n '====';\n } else if (remain === 3) {\n v1 = bytes[i++];\n v2 = bytes[i++];\n v3 = bytes[i];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1) & 31] +\n '===';\n } else if (remain === 4) {\n v1 = bytes[i++];\n v2 = bytes[i++];\n v3 = bytes[i++];\n v4 = bytes[i];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3) & 31] +\n '=';\n }\n return base32Str;\n };\n\n var encode = function (input, asciiOnly) {\n var notString = typeof(input) !== 'string';\n if (notString && input.constructor === ArrayBuffer) {\n input = new Uint8Array(input);\n }\n if (notString) {\n return encodeBytes(input);\n } else if (asciiOnly) {\n return encodeAscii(input);\n } else {\n return encodeUtf8(input);\n }\n };\n\n var decode = function (base32Str, asciiOnly) {\n if (!asciiOnly) {\n return toUtf8String(decodeAsBytes(base32Str));\n }\n if (!/^[A-Z2-7=]+$/.test(base32Str)) {\n throw new Error('Invalid base32 characters');\n }\n var v1, v2, v3, v4, v5, v6, v7, v8, str = '', length = base32Str.indexOf('=');\n if (length === -1) {\n length = base32Str.length;\n }\n\n // 8 char to 5 bytes\n for (var i = 0, count = length >> 3 << 3; i < count;) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v8 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255) +\n String.fromCharCode((v2 << 6 | v3 << 1 | v4 >>> 4) & 255) +\n String.fromCharCode((v4 << 4 | v5 >>> 1) & 255) +\n String.fromCharCode((v5 << 7 | v6 << 2 | v7 >>> 3) & 255) +\n String.fromCharCode((v7 << 5 | v8) & 255);\n }\n\n // remain bytes\n var remain = length - count;\n if (remain === 2) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255);\n } else if (remain === 4) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255) +\n String.fromCharCode((v2 << 6 | v3 << 1 | v4 >>> 4) & 255);\n } else if (remain === 5) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255) +\n String.fromCharCode((v2 << 6 | v3 << 1 | v4 >>> 4) & 255) +\n String.fromCharCode((v4 << 4 | v5 >>> 1) & 255);\n } else if (remain === 7) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255) +\n String.fromCharCode((v2 << 6 | v3 << 1 | v4 >>> 4) & 255) +\n String.fromCharCode((v4 << 4 | v5 >>> 1) & 255) +\n String.fromCharCode((v5 << 7 | v6 << 2 | v7 >>> 3) & 255);\n }\n return str;\n };\n\n var exports = {\n encode: encode,\n decode: decode\n };\n decode.asBytes = decodeAsBytes;\n\n if (COMMON_JS) {\n module.exports = exports;\n } else {\n root.base32 = exports;\n if (AMD) {\n define(function() {\n return exports;\n });\n }\n }\n})();\n","/* @flow */\n\nimport type { Component, ComponentDriverType } from '../component/component';\n\nexport let script : ComponentDriverType<*, Document> = {\n\n global() : ?Document {\n return window.document;\n },\n\n register(component : Component<*>, document : Document) {\n\n function render(element : HTMLElement) {\n\n if (!element || !element.tagName || element.tagName.toLowerCase() !== 'script') {\n return;\n }\n\n // $FlowFixMe\n if (!element.attributes.type || element.attributes.type.value !== 'application/x-component' || !element.parentNode) {\n return;\n }\n\n let tag = element.getAttribute('data-component');\n\n if (!tag || tag !== component.tag) {\n return;\n }\n\n component.log(`instantiate_script_component`);\n\n let props : { [string] : mixed } = element.innerText\n ? eval(`(${ element.innerText })`) // eslint-disable-line no-eval, security/detect-eval-with-expression\n : {};\n\n let container = document.createElement('div');\n\n if (!element.parentNode) {\n throw new Error(`Element has no parent`);\n }\n\n element.parentNode.replaceChild(container, element);\n\n // $FlowFixMe\n component.render(props, container);\n }\n\n function scan() {\n let scriptTags = Array.prototype.slice.call(document.getElementsByTagName('script'));\n\n for (let element of scriptTags) {\n render(element);\n }\n }\n\n scan();\n document.addEventListener('DOMContentLoaded', scan);\n window.addEventListener('load', scan);\n\n document.addEventListener('DOMNodeInserted', event => {\n // $FlowFixMe\n render(event.target);\n });\n }\n};\n","/* @flow */\n\nimport { extend } from '../lib';\nimport type { Component, ComponentDriverType } from '../component/component';\n\ndeclare class ReactClassType {\n\n}\n\ntype ReactElementType = {\n\n};\n\ntype ReactType = {\n createClass : ({ render : ReactElementType, componentDidMount : () => void, componentDidUpdate : () => void }) => (typeof ReactClassType),\n createElement : (string, ?{ [string] : mixed }, ...children : Array) => ReactElementType\n};\n\ntype ReactDomType = {\n findDOMNode : (ReactElementType) => HTMLElement\n};\n\ntype ReactLibraryType = { React : ReactType, ReactDOM : ReactDomType };\n\nexport let react : ComponentDriverType<*, ReactLibraryType> = {\n\n global() : ?ReactLibraryType {\n if (window.React && window.ReactDOM) {\n return {\n React: window.React,\n ReactDOM: window.ReactDOM\n };\n }\n },\n\n register(component : Component<*>, { React, ReactDOM } : ReactLibraryType) : (typeof ReactClassType) {\n\n if (React.createClass) {\n\n // $FlowFixMe\n component.react = React.createClass({\n\n render() : ReactElementType {\n return React.createElement('div', null);\n },\n\n componentDidMount() {\n component.log(`instantiate_react_component`);\n\n let el = ReactDOM.findDOMNode(this);\n\n let parent = component.init(extend({}, this.props), null, el);\n\n this.setState({ parent });\n\n parent.render(el);\n },\n\n componentDidUpdate() {\n\n if (this.state && this.state.parent) {\n this.state.parent.updateProps(extend({}, this.props));\n }\n },\n\n componentWillUnmount() {\n if (this.state && this.state.parent) {\n this.state.parent.destroy();\n }\n }\n });\n } else {\n // $FlowFixMe\n component.react = class extends React.Component {\n render() : ReactElementType {\n return React.createElement('div', null);\n }\n\n componentDidMount() {\n component.log(`instantiate_react_component`);\n\n let el = ReactDOM.findDOMNode(this);\n\n let parent = component.init(extend({}, this.props), null, el);\n\n this.setState({ parent });\n\n parent.render(el);\n }\n\n componentDidUpdate() {\n\n if (this.state && this.state.parent) {\n this.state.parent.updateProps(extend({}, this.props));\n }\n }\n\n componentWillUnmount() {\n if (this.state && this.state.parent) {\n this.state.parent.destroy();\n }\n }\n };\n }\n\n return component.react;\n }\n};\n","/* @flow */\n\nimport type { Component, ComponentDriverType } from '../component/component';\nimport { extend } from '../lib';\n\ntype VueComponent = {\n render : (Function) => Element,\n inheritAttrs : boolean,\n mounted : () => void,\n beforeUpdate : () => void\n};\n\nexport let vue : ComponentDriverType<*, void> = {\n\n global() {\n // pass\n },\n\n register

(component : Component

) : VueComponent {\n\n return {\n render(createElement) : Element {\n return createElement('div');\n },\n\n inheritAttrs: false,\n\n mounted() {\n let el = this.$el;\n\n // $FlowFixMe\n this.parent = component.init(extend({}, this.$attrs), null, el);\n\n this.parent.render(el);\n },\n\n beforeUpdate() {\n \n if (this.parent && this.$attrs) {\n this.parent.updateProps(extend({}, this.$attrs));\n }\n }\n };\n }\n};\n","/* @flow */\n\nimport { dasherizeToCamel, replaceObject } from '../lib';\nimport type { Component, ComponentDriverType } from '../component/component';\n\ntype AngularModule = {\n directive : (string, () => {\n scope : { [string] : '=' | '@' },\n restrict : string,\n controller : Array\n }) => AngularModule\n};\n\ntype Angular = {\n module : (string, Array) => AngularModule\n};\n\nexport let angular : ComponentDriverType<*, Angular> = {\n\n global() : ?Angular {\n return window.angular;\n },\n\n register(component : Component<*>, ng : Angular) : AngularModule {\n\n let module = ng.module(component.tag, []).directive(dasherizeToCamel(component.tag), () => {\n\n let scope = {};\n\n for (let key of component.getPropNames()) {\n scope[key] = '=';\n }\n\n if (component.looseProps) {\n scope.props = '=';\n }\n\n return {\n scope,\n\n restrict: 'E',\n\n controller: [ '$scope', '$element', ($scope, $element) => {\n\n if (component.looseProps && !$scope.props) {\n throw new Error(`For angular bindings to work, prop definitions must be passed to zoid.create`);\n }\n\n component.log(`instantiate_angular_component`);\n\n function safeApply() {\n if ($scope.$root.$$phase !== '$apply' && $scope.$root.$$phase !== '$digest') {\n try {\n $scope.$apply();\n } catch (err) {\n // pass\n }\n }\n }\n\n let getProps = () => {\n\n let scopeProps;\n\n if ($scope.props) {\n scopeProps = $scope.props;\n } else {\n scopeProps = {};\n for (let key of Object.keys(scope)) {\n if ($scope[key] !== undefined) {\n scopeProps[key] = $scope[key];\n }\n }\n }\n\n scopeProps = replaceObject(scopeProps, {\n 'function': (value) => {\n return function angularWrapped() : mixed {\n let result = value.apply(this, arguments);\n safeApply();\n return result;\n };\n }\n });\n\n return scopeProps;\n };\n\n let parent = component.init(getProps(), null, $element[0]);\n parent.render($element[0]);\n\n $scope.$watch(() => {\n parent.updateProps(getProps());\n });\n } ]\n };\n });\n\n return module;\n }\n};\n","/* @flow */\n\nimport type { Component, ComponentDriverType } from '../component/component';\n\ndeclare class GlimmerComponentType {\n element : HTMLElement,\n args : Object\n}\n\nexport let glimmer : ComponentDriverType<*, (typeof GlimmerComponentType)> = {\n\n global() {\n // pass\n },\n\n register(component : Component<*>, GlimmerComponent : (typeof GlimmerComponentType)) : (typeof GlimmerComponentType) {\n return class extends GlimmerComponent {\n didInsertElement() {\n component.render({ ...this.args }, this.element);\n }\n };\n }\n};\n","/* @flow */\n/* eslint new-cap: 0 */\n\nimport { replaceObject } from '../lib';\nimport type { Component, ComponentDriverType } from '../component/component';\n\ntype Angular2Injection = {};\n\ntype Angular2Component = {};\n\ntype Angular2Module = {};\n\ntype Angular2 = {\n Component : ({ selector : string, template : string, inputs : Array }) => {\n Class : ({ constructor : Array, ngOnInit : () => void, ngOnChanges : () => void }) => Angular2Component\n },\n NgModule : ({ declarations : Array, exports : Array }) => {\n Class : ({ constructor : () => void }) => Angular2Module\n },\n ElementRef : Angular2Injection,\n NgZone : Angular2Injection\n};\n\n\nexport let angular2 : ComponentDriverType<*, Angular2> = {\n\n global() {\n // pass\n },\n\n register(zoid : Component<*>, { Component : AngularComponent, NgModule, ElementRef, NgZone }) : Angular2Module {\n\n zoid.log('initializing angular2 component');\n\n let getProps = (component) => {\n return replaceObject({ ...component.internalProps, ...component.props }, {\n 'function': (value) => {\n if (typeof value === 'function') {\n return function angular2Wrapped() : void {\n return component.zone.run(() => value.apply(this, arguments));\n };\n }\n }\n });\n };\n\n const ComponentInstance =\n AngularComponent({\n selector: zoid.tag,\n template: '

',\n inputs: [ 'props' ]\n }).Class({\n constructor: [ ElementRef, NgZone, function angularConstructor(elementRef, zone) {\n this.elementRef = elementRef;\n this.zone = zone;\n } ],\n ngOnInit () {\n const targetElement = this.elementRef.nativeElement;\n const parent = zoid.init(getProps(this), null, targetElement);\n parent.render(targetElement);\n this.parent = parent;\n },\n ngOnChanges() {\n if (this.parent) {\n this.parent.updateProps(getProps(this));\n }\n }\n });\n\n\n const ModuleInstance = NgModule({\n declarations: [ ComponentInstance ],\n exports: [ ComponentInstance ]\n }).Class({\n constructor () {\n // pass\n }\n });\n\n return ModuleInstance;\n }\n};\n","/*!\n * Bowser - a browser detector\n * https://github.com/ded/bowser\n * MIT License | (c) Dustin Diaz 2015\n */\n!function(e,t,n){typeof module!=\"undefined\"&&module.exports?module.exports=n():typeof define==\"function\"&&define.amd?define(t,n):e[t]=n()}(this,\"bowser\",function(){function t(t){function n(e){var n=t.match(e);return n&&n.length>1&&n[1]||\"\"}function r(e){var n=t.match(e);return n&&n.length>1&&n[2]||\"\"}function C(e){switch(e){case\"NT\":return\"NT\";case\"XP\":return\"XP\";case\"NT 5.0\":return\"2000\";case\"NT 5.1\":return\"XP\";case\"NT 5.2\":return\"2003\";case\"NT 6.0\":return\"Vista\";case\"NT 6.1\":return\"7\";case\"NT 6.2\":return\"8\";case\"NT 6.3\":return\"8.1\";case\"NT 10.0\":return\"10\";default:return undefined}}var i=n(/(ipod|iphone|ipad)/i).toLowerCase(),o=/like android/i.test(t),u=!o&&/android/i.test(t),a=/nexus\\s*[0-6]\\s*/i.test(t),f=!a&&/nexus\\s*[0-9]+/i.test(t),l=/CrOS/.test(t),c=/silk/i.test(t),h=/sailfish/i.test(t),p=/tizen/i.test(t),d=/(web|hpw)(o|0)s/i.test(t),v=/windows phone/i.test(t),m=/SamsungBrowser/i.test(t),g=!v&&/windows/i.test(t),y=!i&&!c&&/macintosh/i.test(t),b=!u&&!h&&!p&&!d&&/linux/i.test(t),w=r(/edg([ea]|ios)\\/(\\d+(\\.\\d+)?)/i),E=n(/version\\/(\\d+(\\.\\d+)?)/i),S=/tablet/i.test(t)&&!/tablet pc/i.test(t),x=!S&&/[^-]mobi/i.test(t),T=/xbox/i.test(t),N;/opera/i.test(t)?N={name:\"Opera\",opera:e,version:E||n(/(?:opera|opr|opios)[\\s\\/](\\d+(\\.\\d+)?)/i)}:/opr\\/|opios/i.test(t)?N={name:\"Opera\",opera:e,version:n(/(?:opr|opios)[\\s\\/](\\d+(\\.\\d+)?)/i)||E}:/SamsungBrowser/i.test(t)?N={name:\"Samsung Internet for Android\",samsungBrowser:e,version:E||n(/(?:SamsungBrowser)[\\s\\/](\\d+(\\.\\d+)?)/i)}:/Whale/i.test(t)?N={name:\"NAVER Whale browser\",whale:e,version:n(/(?:whale)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/MZBrowser/i.test(t)?N={name:\"MZ Browser\",mzbrowser:e,version:n(/(?:MZBrowser)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/coast/i.test(t)?N={name:\"Opera Coast\",coast:e,version:E||n(/(?:coast)[\\s\\/](\\d+(\\.\\d+)?)/i)}:/focus/i.test(t)?N={name:\"Focus\",focus:e,version:n(/(?:focus)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/yabrowser/i.test(t)?N={name:\"Yandex Browser\",yandexbrowser:e,version:E||n(/(?:yabrowser)[\\s\\/](\\d+(\\.\\d+)?)/i)}:/ucbrowser/i.test(t)?N={name:\"UC Browser\",ucbrowser:e,version:n(/(?:ucbrowser)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/mxios/i.test(t)?N={name:\"Maxthon\",maxthon:e,version:n(/(?:mxios)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/epiphany/i.test(t)?N={name:\"Epiphany\",epiphany:e,version:n(/(?:epiphany)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/puffin/i.test(t)?N={name:\"Puffin\",puffin:e,version:n(/(?:puffin)[\\s\\/](\\d+(?:\\.\\d+)?)/i)}:/sleipnir/i.test(t)?N={name:\"Sleipnir\",sleipnir:e,version:n(/(?:sleipnir)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/k-meleon/i.test(t)?N={name:\"K-Meleon\",kMeleon:e,version:n(/(?:k-meleon)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:v?(N={name:\"Windows Phone\",osname:\"Windows Phone\",windowsphone:e},w?(N.msedge=e,N.version=w):(N.msie=e,N.version=n(/iemobile\\/(\\d+(\\.\\d+)?)/i))):/msie|trident/i.test(t)?N={name:\"Internet Explorer\",msie:e,version:n(/(?:msie |rv:)(\\d+(\\.\\d+)?)/i)}:l?N={name:\"Chrome\",osname:\"Chrome OS\",chromeos:e,chromeBook:e,chrome:e,version:n(/(?:chrome|crios|crmo)\\/(\\d+(\\.\\d+)?)/i)}:/edg([ea]|ios)/i.test(t)?N={name:\"Microsoft Edge\",msedge:e,version:w}:/vivaldi/i.test(t)?N={name:\"Vivaldi\",vivaldi:e,version:n(/vivaldi\\/(\\d+(\\.\\d+)?)/i)||E}:h?N={name:\"Sailfish\",osname:\"Sailfish OS\",sailfish:e,version:n(/sailfish\\s?browser\\/(\\d+(\\.\\d+)?)/i)}:/seamonkey\\//i.test(t)?N={name:\"SeaMonkey\",seamonkey:e,version:n(/seamonkey\\/(\\d+(\\.\\d+)?)/i)}:/firefox|iceweasel|fxios/i.test(t)?(N={name:\"Firefox\",firefox:e,version:n(/(?:firefox|iceweasel|fxios)[ \\/](\\d+(\\.\\d+)?)/i)},/\\((mobile|tablet);[^\\)]*rv:[\\d\\.]+\\)/i.test(t)&&(N.firefoxos=e,N.osname=\"Firefox OS\")):c?N={name:\"Amazon Silk\",silk:e,version:n(/silk\\/(\\d+(\\.\\d+)?)/i)}:/phantom/i.test(t)?N={name:\"PhantomJS\",phantom:e,version:n(/phantomjs\\/(\\d+(\\.\\d+)?)/i)}:/slimerjs/i.test(t)?N={name:\"SlimerJS\",slimer:e,version:n(/slimerjs\\/(\\d+(\\.\\d+)?)/i)}:/blackberry|\\bbb\\d+/i.test(t)||/rim\\stablet/i.test(t)?N={name:\"BlackBerry\",osname:\"BlackBerry OS\",blackberry:e,version:E||n(/blackberry[\\d]+\\/(\\d+(\\.\\d+)?)/i)}:d?(N={name:\"WebOS\",osname:\"WebOS\",webos:e,version:E||n(/w(?:eb)?osbrowser\\/(\\d+(\\.\\d+)?)/i)},/touchpad\\//i.test(t)&&(N.touchpad=e)):/bada/i.test(t)?N={name:\"Bada\",osname:\"Bada\",bada:e,version:n(/dolfin\\/(\\d+(\\.\\d+)?)/i)}:p?N={name:\"Tizen\",osname:\"Tizen\",tizen:e,version:n(/(?:tizen\\s?)?browser\\/(\\d+(\\.\\d+)?)/i)||E}:/qupzilla/i.test(t)?N={name:\"QupZilla\",qupzilla:e,version:n(/(?:qupzilla)[\\s\\/](\\d+(?:\\.\\d+)+)/i)||E}:/chromium/i.test(t)?N={name:\"Chromium\",chromium:e,version:n(/(?:chromium)[\\s\\/](\\d+(?:\\.\\d+)?)/i)||E}:/chrome|crios|crmo/i.test(t)?N={name:\"Chrome\",chrome:e,version:n(/(?:chrome|crios|crmo)\\/(\\d+(\\.\\d+)?)/i)}:u?N={name:\"Android\",version:E}:/safari|applewebkit/i.test(t)?(N={name:\"Safari\",safari:e},E&&(N.version=E)):i?(N={name:i==\"iphone\"?\"iPhone\":i==\"ipad\"?\"iPad\":\"iPod\"},E&&(N.version=E)):/googlebot/i.test(t)?N={name:\"Googlebot\",googlebot:e,version:n(/googlebot\\/(\\d+(\\.\\d+))/i)||E}:N={name:n(/^(.*)\\/(.*) /),version:r(/^(.*)\\/(.*) /)},!N.msedge&&/(apple)?webkit/i.test(t)?(/(apple)?webkit\\/537\\.36/i.test(t)?(N.name=N.name||\"Blink\",N.blink=e):(N.name=N.name||\"Webkit\",N.webkit=e),!N.version&&E&&(N.version=E)):!N.opera&&/gecko\\//i.test(t)&&(N.name=N.name||\"Gecko\",N.gecko=e,N.version=N.version||n(/gecko\\/(\\d+(\\.\\d+)?)/i)),!N.windowsphone&&(u||N.silk)?(N.android=e,N.osname=\"Android\"):!N.windowsphone&&i?(N[i]=e,N.ios=e,N.osname=\"iOS\"):y?(N.mac=e,N.osname=\"macOS\"):T?(N.xbox=e,N.osname=\"Xbox\"):g?(N.windows=e,N.osname=\"Windows\"):b&&(N.linux=e,N.osname=\"Linux\");var k=\"\";N.windows?k=C(n(/Windows ((NT|XP)( \\d\\d?.\\d)?)/i)):N.windowsphone?k=n(/windows phone (?:os)?\\s?(\\d+(\\.\\d+)*)/i):N.mac?(k=n(/Mac OS X (\\d+([_\\.\\s]\\d+)*)/i),k=k.replace(/[_\\s]/g,\".\")):i?(k=n(/os (\\d+([_\\s]\\d+)*) like mac os x/i),k=k.replace(/[_\\s]/g,\".\")):u?k=n(/android[ \\/-](\\d+(\\.\\d+)*)/i):N.webos?k=n(/(?:web|hpw)os\\/(\\d+(\\.\\d+)*)/i):N.blackberry?k=n(/rim\\stablet\\sos\\s(\\d+(\\.\\d+)*)/i):N.bada?k=n(/bada\\/(\\d+(\\.\\d+)*)/i):N.tizen&&(k=n(/tizen[\\/\\s](\\d+(\\.\\d+)*)/i)),k&&(N.osversion=k);var L=!N.windows&&k.split(\".\")[0];if(S||f||i==\"ipad\"||u&&(L==3||L>=4&&!x)||N.silk)N.tablet=e;else if(x||i==\"iphone\"||i==\"ipod\"||u||a||N.blackberry||N.webos||N.bada)N.mobile=e;return N.msedge||N.msie&&N.version>=10||N.yandexbrowser&&N.version>=15||N.vivaldi&&N.version>=1||N.chrome&&N.version>=20||N.samsungBrowser&&N.version>=4||N.whale&&s([N.version,\"1.0\"])===1||N.mzbrowser&&s([N.version,\"6.0\"])===1||N.focus&&s([N.version,\"1.0\"])===1||N.firefox&&N.version>=20||N.safari&&N.version>=6||N.opera&&N.version>=10||N.ios&&N.osversion&&N.osversion.split(\".\")[0]>=6||N.blackberry&&N.version>=10.1||N.chromium&&N.version>=20?N.a=e:N.msie&&N.version<10||N.chrome&&N.version<20||N.firefox&&N.version<20||N.safari&&N.version<6||N.opera&&N.version<10||N.ios&&N.osversion&&N.osversion.split(\".\")[0]<6||N.chromium&&N.version<20?N.c=e:N.x=e,N}function r(e){return e.split(\".\").length}function i(e,t){var n=[],r;if(Array.prototype.map)return Array.prototype.map.call(e,t);for(r=0;r=0){if(n[0][t]>n[1][t])return 1;if(n[0][t]!==n[1][t])return-1;if(t===0)return 0}}function o(e,r,i){var o=n;typeof r==\"string\"&&(i=r,r=void 0),r===void 0&&(r=!1),i&&(o=t(i));var u=\"\"+o.version;for(var a in e)if(e.hasOwnProperty(a)&&o[a]){if(typeof e[a]!=\"string\")throw new Error(\"Browser version in the minVersion map should be a string: \"+a+\": \"+String(e));return s([u,e[a]])<0}return r}function u(e,t,n){return!o(e,t,n)}var e=!0,n=t(typeof navigator!=\"undefined\"?navigator.userAgent||\"\":\"\");return n.test=function(e){for(var t=0;t\\n \\n \\n \\n \\n \\n \\n \\n \\n\\n\"","module.exports = \"\\n \\n \\n \\n\\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n \\n \\n \\n \\n \\n \\n \\n\\n\"","module.exports = \"\\n\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n \\n \\n \\n \\n \\n \\n \\n\\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n\\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n unionpay\\n Created with Sketch.\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","// get successful control from form and assemble into object\n// http://www.w3.org/TR/html401/interact/forms.html#h-17.13.2\n\n// types which indicate a submit action and are not successful controls\n// these will be ignored\nvar k_r_submitter = /^(?:submit|button|image|reset|file)$/i;\n\n// node names which could be successful controls\nvar k_r_success_contrls = /^(?:input|select|textarea|keygen)/i;\n\n// Matches bracket notation.\nvar brackets = /(\\[[^\\[\\]]*\\])/g;\n\n// serializes form fields\n// @param form MUST be an HTMLForm element\n// @param options is an optional argument to configure the serialization. Default output\n// with no options specified is a url encoded string\n// - hash: [true | false] Configure the output type. If true, the output will\n// be a js object.\n// - serializer: [function] Optional serializer function to override the default one.\n// The function takes 3 arguments (result, key, value) and should return new result\n// hash and url encoded str serializers are provided with this module\n// - disabled: [true | false]. If true serialize disabled fields.\n// - empty: [true | false]. If true serialize empty fields\nfunction serialize(form, options) {\n if (typeof options != 'object') {\n options = { hash: !!options };\n }\n else if (options.hash === undefined) {\n options.hash = true;\n }\n\n var result = (options.hash) ? {} : '';\n var serializer = options.serializer || ((options.hash) ? hash_serializer : str_serialize);\n\n var elements = form && form.elements ? form.elements : [];\n\n //Object store each radio and set if it's empty or not\n var radio_store = Object.create(null);\n\n for (var i=0 ; i\n \n
\n
\n \n \n
\n
\n {content.windowMessage}\n
\n
\n
\n
\n
\n
\n\n
\n {outlet}\n
\n\n \n
\n );\n\n const container = (\n \n \n { el }\n \n \n );\n\n on(EVENT.CLOSE, () => {\n el.className += ` ${ tag }-loading`;\n });\n\n return (\n
\n \n\n \n
\n );\n}\n\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { create } from 'zoid/src';\nimport { type Component } from 'zoid/src/component/component';\nimport { base64encode } from 'belter/src';\n\nimport { ENV } from '../constants';\nimport { getButtonSessionID, getBrowserLocale, getSessionID, getCurrentScriptUrl } from '../lib';\nimport { config } from '../config';\n\nimport { containerTemplate } from './template';\n\ntype BillingOptions = {|\n client : {\n [string] : (string | ZalgoPromise)\n },\n env? : string,\n locale? : string,\n logLevel : string,\n awaitPopupBridge : Function,\n meta : Object,\n commit : boolean,\n token : string\n|};\n\nexport const BillingPage : Component = create({\n tag: 'billing-page',\n name: 'billing-page',\n\n buildUrl(props) : string {\n const env = props.env || config.env;\n return `${ config.inlinedCardFieldUrls[env] }/billing`;\n },\n\n get domain() : Object {\n return {\n ...config.paypalDomains,\n [ ENV.LOCAL ]: /^http:\\/\\/localhost.paypal.com:\\d+$/\n };\n },\n\n scrolling: true,\n\n props: {\n sessionID: {\n type: 'string',\n required: false,\n def() : string {\n return getSessionID();\n },\n queryParam: true\n },\n\n\n token: {\n type: 'string',\n required: true,\n queryParam: true\n },\n\n buttonSessionID: {\n type: 'string',\n required: false,\n def() : ?string {\n return getButtonSessionID();\n },\n queryParam: true\n },\n\n commit: {\n type: 'boolean',\n required: false,\n queryParam: true\n },\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n },\n\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n allowDelegate: true,\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n }\n },\n\n cardType: {\n type: 'string',\n required: false\n },\n prefilledZipCode: {\n type: 'string',\n required: false\n },\n\n onEvent: {\n type: 'function',\n required: false,\n sameDomain: true\n },\n\n dispatch: {\n type: 'object',\n required: false,\n sameDomain: true\n },\n\n onCancel: {\n type: 'function',\n required: false,\n once: true,\n noop: true\n },\n\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n }\n },\n\n\n containerTemplate\n});\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { create } from 'zoid/src';\nimport { base64encode } from 'belter/src';\n\nimport { getBrowserLocale, getCurrentScriptUrl } from '../lib';\nimport { config } from '../config';\nimport { containerTemplate } from '../billing/template';\n\nexport const ThreeDomainSecure = create({\n tag: 'paypal-3ds',\n name: '3ds',\n\n buildUrl(props) : string {\n const env = props.env || config.env;\n return `${ config.inlinedCardFieldUrls[env] }/init3ds`;\n },\n\n get domain() : Object {\n return {\n ...config.paypalDomains\n };\n },\n\n scrolling: true,\n\n props: {\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n },\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n allowDelegate: true,\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n }\n },\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n },\n challengeUrl: {\n type: 'string'\n },\n threeDomainSecureToken: {\n type: 'string'\n },\n method: {\n type: 'string'\n },\n onSuccess: {\n type: 'function',\n required: false\n },\n onError: {\n type: 'function',\n required: false\n },\n onCancel: {\n type: 'function',\n required: true,\n allowDelegate: true\n }\n },\n\n\n containerTemplate\n});\n","/* @flow */\n\nimport { track, info } from 'beaver-logger/client';\n\nimport { config } from '../config';\nimport { FPTI, PPTM_ID } from '../constants';\nimport { stringifyError, extendUrl, loadScript, getElement, isPayPalDomain } from '../lib';\n\n\nfunction shouldCreateInitialPptmScript() : boolean {\n const id = window.location.hostname;\n\n if (!id) {\n return false;\n }\n\n if (isPayPalDomain()) {\n return false;\n }\n\n const existingScript = getElement(PPTM_ID);\n const alreadyDownloaded = Boolean(existingScript);\n\n if (alreadyDownloaded) {\n info('pptm_tried_loading_twice');\n return false;\n }\n\n return true;\n}\n\nfunction removePptm() {\n const script = getElement(PPTM_ID);\n\n if (script) {\n // $FlowFixMe\n script.parentNode.removeChild(script);\n }\n}\n\nexport function pptmFactory() : Object {\n let noContentFoundInContainer = false;\n const callback = `__pptmLoadedWithNoContent`;\n let listener;\n\n const obj = {\n /*\n In the button component, we set up a global window[callback] that will be called in pptm `onload` attribute.\n Button.render calls `reloadPptmScript`, which checks if window[callback] has been called yet (meaning, it checks\n if pptm.js was loaded before Button.render was called). If so, we'll check to see if we should reload PPTM\n now that we might have a client ID from the Button.render method.\n If pptm.js hasn't loaded yet, then we'll set up a listener to the same logic above to defer it until\n pptm.js actually loads.\n */\n reloadPptmScript(clientId : ?string) {\n const tryCreatePptmScript = () => {\n if (obj.shouldReloadPptmScript(clientId)) {\n obj.removePptm();\n obj.createPptmScript(clientId);\n } else {\n // Defer until later, since reloadPptmScript might have been called\n // before pptm loaded, so we'll still want to hook into the script load.\n listener = tryCreatePptmScript;\n }\n };\n\n tryCreatePptmScript();\n },\n listenForLoadWithNoContent() {\n window[callback] = () => {\n noContentFoundInContainer = true;\n\n if (listener) {\n listener();\n listener = undefined;\n }\n };\n },\n listenForButtonRender() {\n window.paypalDDL = window.paypalDDL || [];\n const buttonRenderEvent = window.paypalDDL.filter(e => e.event === 'paypalButtonRender');\n if (buttonRenderEvent.length === 0) {\n window.paypalDDL.push({ event: 'paypalButtonRender' });\n }\n },\n get callback() : string {\n return callback;\n },\n get noContentFoundInContainer() : boolean {\n return noContentFoundInContainer;\n },\n createPptmScript: (clientId : ?string) => {\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.PPTM,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.PPTM_LOAD\n });\n \n const params = {\n t: 'xo',\n id: window.location.hostname,\n mrid: config.merchantID,\n client_id: '',\n v: config.version,\n source: 'checkoutjs'\n };\n \n if (clientId) {\n params.client_id = clientId;\n } else {\n delete params.client_id;\n }\n \n const fullUrl = extendUrl(config.pptmUrl, params);\n \n loadScript(fullUrl, 0, {\n async: true,\n id: PPTM_ID\n }).then(() => {\n // If the snippet is empty, then fire the callback.\n // We assume non-empty pptm.js bundles with init the paypalDDL and push an event called\n // `snippetRun` to it.\n if (!(window.paypalDDL && window.paypalDDL[0] && window.paypalDDL[0].event === 'snippetRun')) {\n window[callback]();\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.PPTM,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.PPTM_LOADED\n });\n }).catch(err => {\n info('pptm_script_error', { error: stringifyError(err) });\n });\n },\n shouldCreateInitialPptmScript,\n /*\n During Button render if a client ID was provided, we'll want to refresh the\n pptm script to try to pull down a container by that value.\n We'll only do this if we're not on the PayPal domain, or if\n a merchant ID wasn't already provided (since container look-up can\n also happen by merchant ID). Note that this will only happen\n if there was no content found in the container that was pulled down\n in the `setup` script. This is important because we don't want\n to pull down multiple containers that actually contain content,\n otherwise we'll be firing duplicate tags.\n */\n shouldReloadPptmScript(clientId : ?string) : boolean {\n if (noContentFoundInContainer === false) {\n return false;\n }\n\n if (isPayPalDomain()) {\n return false;\n }\n \n // If a merchant ID was already provided, then that meant we initially\n // loaded the pptm script with that value as the main container\n // look-up value, so in this case we don't want to reload pptm.\n if (config.merchantID) {\n return false;\n }\n \n if (clientId) {\n return true;\n }\n \n return false;\n },\n removePptm\n };\n\n return obj;\n}\n","/* @flow */\n\nimport { pptmFactory } from './pptm-factory';\n\nexport const pptm = pptmFactory();\n","/* @flow */\n\nexport * from './pptm';\nexport * from './pptm-factory';\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { on, send } from 'post-robot/src';\nimport { base64encode } from 'belter/src';\nimport { info, track } from 'beaver-logger/client';\nimport { getAncestor, isSameDomain } from 'cross-domain-utils/src';\n\nimport { config } from '../config';\nimport { FPTI, PAYMENT_TYPE } from '../constants';\nimport { request, memoize, isPayPalDomain, uniqueID } from '../lib';\n\ntype ProxyRest = {\n [string] : (...args : $ReadOnlyArray) => ZalgoPromise<*>\n};\n\nlet proxyRest : ProxyRest = {};\n\nconst createAccessToken = memoize((env : string, client : { [key : string] : string }) : ZalgoPromise => {\n\n info(`rest_api_create_access_token`);\n\n env = env || config.env;\n\n const clientID : string = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (proxyRest.createAccessToken && !proxyRest.createAccessToken.source.closed) {\n return proxyRest.createAccessToken(env, client);\n }\n\n const basicAuth : string = base64encode(`${ clientID }:`);\n\n return request({\n\n method: `post`,\n url: config.authApiUrls[env],\n headers: {\n Authorization: `Basic ${ basicAuth }`\n },\n data: {\n grant_type: `client_credentials`\n }\n\n }).then(res => {\n\n if (res && res.error === 'invalid_client') {\n throw new Error(`Auth Api invalid ${ env } client id: ${ clientID }:\\n\\n${ JSON.stringify(res, null, 4) }`);\n }\n\n if (!res || !res.access_token) {\n throw new Error(`Auth Api response error:\\n\\n${ JSON.stringify(res, null, 4) }`);\n }\n\n return res.access_token;\n });\n\n}, { time: 10 * 60 * 1000 });\n\nconst createExperienceProfile = memoize((env : string, client : { [key : string] : string }, experienceDetails : Object = {}) : ZalgoPromise => {\n\n info(`rest_api_create_experience_profile`);\n\n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (proxyRest.createExperienceProfile && !proxyRest.createExperienceProfile.source.closed) {\n return proxyRest.createExperienceProfile(env, client, experienceDetails);\n }\n\n experienceDetails.temporary = true;\n experienceDetails.name = experienceDetails.name ? `${ experienceDetails.name }_${ Math.random().toString() }` : Math.random().toString();\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n return request({\n method: `post`,\n url: config.experienceApiUrls[env],\n headers: {\n Authorization: `Bearer ${ accessToken }`\n },\n json: experienceDetails\n });\n\n }).then((res) : string => {\n\n if (res && res.error) {\n throw new Error(res.error);\n }\n\n if (!res.id) {\n throw new Error(`No id in experience profile response:\\n\\n${ JSON.stringify(res, null, 4) }`);\n }\n\n return res.id;\n });\n\n}, { time: 10 * 60 * 1000 });\n\nfunction logPaymentResponse(res) {\n\n if (!res) {\n return;\n }\n\n let paymentToken;\n let paymentID;\n\n if (res.id) {\n paymentID = res.id;\n }\n\n if (res.links && res.links.length) {\n for (let i = 0; i < res.links.length; i++) {\n if (res.links[i].method === 'REDIRECT' && res.links[i].rel === 'approval_url') {\n const match = res.links[i].href.match(/token=((EC-)?[A-Z0-9]{17})/);\n if (match) {\n paymentToken = match[1];\n }\n }\n }\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.BUTTON,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CREATE_PAYMENT,\n [ FPTI.KEY.CONTEXT_TYPE ]: FPTI.CONTEXT_TYPE[PAYMENT_TYPE.PAY_ID],\n [ FPTI.KEY.PAY_ID ]: paymentID,\n [ FPTI.KEY.TOKEN ]: paymentToken,\n [ FPTI.KEY.CONTEXT_ID ]: paymentID\n });\n}\n\nfunction getDefaultReturnUrl() : string {\n return `https://www.paypal.com/checkoutnow/error`;\n}\n\nfunction createTracking(env : string, client : { [key : string] : string }, merchantID, trackingData) : Object {\n \n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n const trackingID = uniqueID();\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n const headers : Object = {\n Authorization: `Bearer ${ accessToken }`\n };\n\n return request({\n method: `put`,\n url: `${ config.trackingApiUrls[env] }/${ merchantID }/${ trackingID }`,\n headers,\n json: {\n 'tracking_id': trackingID,\n 'additional_data': trackingData\n }\n });\n\n }).then(() => {\n return trackingID;\n });\n}\n\nfunction createPayment(env : string, client : { [key : string] : string }, paymentDetails : Object) : ZalgoPromise {\n\n info(`rest_api_create_checkout_token`);\n\n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n let { payment, experience, meta, tracking } = paymentDetails;\n\n if (!payment) {\n throw new Error(`Expected payment details to be passed`);\n }\n\n if (proxyRest.createPayment && !proxyRest.createPayment.source.closed) {\n return proxyRest.createPayment(env, client, { payment, experience, meta, tracking });\n }\n\n payment = { ...payment };\n payment.intent = payment.intent || 'sale';\n payment.redirect_urls = payment.redirect_urls || {};\n payment.redirect_urls.return_url = payment.redirect_urls.return_url || getDefaultReturnUrl();\n payment.redirect_urls.cancel_url = payment.redirect_urls.cancel_url || getDefaultReturnUrl();\n payment.payer = payment.payer || {};\n payment.payer.payment_method = payment.payer.payment_method || 'paypal';\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n return ZalgoPromise.try(() => {\n\n if (experience) {\n return ZalgoPromise.resolve(createExperienceProfile(env, client, experience));\n }\n\n }).then((experienceID) : ZalgoPromise => {\n\n return ZalgoPromise.try(() => {\n\n if (tracking) {\n return ZalgoPromise.resolve(createTracking(env, client, tracking.id, tracking.data));\n }\n\n }).then((trackingID) : ZalgoPromise => {\n\n if (experienceID) {\n payment.experience_profile_id = experienceID;\n }\n\n const headers : Object = {\n Authorization: `Bearer ${ accessToken }`\n };\n\n if (trackingID) {\n headers['Paypal-Client-Metadata-Id'] = trackingID;\n }\n\n if (meta && meta.partner_attribution_id) {\n headers['PayPal-Partner-Attribution-Id'] = meta.partner_attribution_id;\n }\n\n return request({\n method: `post`,\n url: config.paymentApiUrls[env],\n headers,\n json: payment\n });\n });\n });\n\n }).then((res) : string => {\n\n logPaymentResponse(res);\n\n if (res && res.id) {\n return res.id;\n }\n\n throw new Error(`Payment Api response error:\\n\\n${ JSON.stringify(res, null, 4) }`);\n\n });\n}\n\nfunction createOrder(env : string, client : { [key : string] : string }, paymentDetails : Object) : ZalgoPromise {\n\n info(`rest_api_create_order_token`);\n\n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n let { order, meta } = paymentDetails;\n\n if (!order) {\n throw new Error(`Expected order details to be passed`);\n }\n\n if (proxyRest.createOrder && !proxyRest.createOrder.source.closed) {\n return proxyRest.createOrder(env, client, { order, meta });\n }\n\n order = { ...order };\n order.intent = order.intent || 'CAPTURE';\n order.application_context = order.application_context || {};\n order.application_context.return_url = order.application_context.return_url || getDefaultReturnUrl();\n order.application_context.cancel_url = order.application_context.cancel_url || getDefaultReturnUrl();\n order.purchase_units = order.purchase_units || [];\n order.purchase_units[0] = order.purchase_units[0] || {};\n order.purchase_units.forEach(unit => {\n unit.reference_id = unit.reference_id || Math.random().toString();\n });\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n const headers : Object = {\n Authorization: `Bearer ${ accessToken }`\n };\n\n if (meta && meta.partner_attribution_id) {\n headers['PayPal-Partner-Attribution-Id'] = meta.partner_attribution_id;\n }\n\n return request({\n method: `post`,\n url: config.orderApiUrls[env],\n headers,\n json: order\n });\n\n }).then((res) : string => {\n\n logPaymentResponse(res);\n\n if (res && res.id) {\n return res.id;\n }\n\n throw new Error(`Payment Api response error:\\n\\n${ JSON.stringify(res, null, 4) }`);\n });\n}\n\nexport function createBillingAgreement(env : string, client : { [key : string] : string }, billingDetails : Object, experienceDetails? : ?Object) : ZalgoPromise {\n\n info(`rest_api_create_billing_token`);\n\n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (proxyRest.createBillingAgreement && !proxyRest.createBillingAgreement.source.closed) {\n return proxyRest.createBillingAgreement(env, client, billingDetails, experienceDetails);\n }\n\n billingDetails = { ...billingDetails };\n billingDetails.plan = billingDetails.plan || {};\n billingDetails.plan.merchant_preferences = billingDetails.plan.merchant_preferences || {};\n billingDetails.plan.merchant_preferences.return_url = billingDetails.plan.merchant_preferences.return_url || getDefaultReturnUrl();\n billingDetails.plan.merchant_preferences.cancel_url = billingDetails.plan.merchant_preferences.cancel_url || getDefaultReturnUrl();\n billingDetails.payer = billingDetails.payer || {};\n billingDetails.payer.payment_method = billingDetails.payer.payment_method || 'paypal';\n\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n return ZalgoPromise.try(() => {\n\n if (experienceDetails) {\n return ZalgoPromise.resolve(createExperienceProfile(env, client, experienceDetails));\n }\n\n }).then((experienceID) : ZalgoPromise => {\n\n if (experienceID) {\n billingDetails.experience_profile_id = experienceID;\n }\n\n return request({\n method: `post`,\n url: config.billingApiUrls[env],\n headers: {\n Authorization: `Bearer ${ accessToken }`\n },\n json: billingDetails\n });\n });\n\n }).then(res => {\n\n if (res && res.token_id) {\n return res.token_id;\n }\n\n throw new Error(`Billing Api response error:\\n\\n${ JSON.stringify(res, null, 4) }`);\n });\n}\n\nexport const rest = {\n payment: {\n create: createPayment\n },\n order: {\n create: createOrder\n },\n billingAgreement: {\n create: createBillingAgreement\n },\n experience: {\n create: createExperienceProfile\n }\n};\n\nconst PROXY_REST = `proxy_rest`;\nconst parentWin = getAncestor();\n\non(PROXY_REST, { domain: config.paypal_domain_regex }, ({ data }) => {\n proxyRest = data;\n});\n\nif (parentWin && isPayPalDomain() && !isSameDomain(parentWin)) {\n send(parentWin, PROXY_REST, { createAccessToken, createExperienceProfile, createPayment, createBillingAgreement, createOrder })\n .catch(() => {\n // pass\n });\n}\n","/* @flow */\n\nimport { info, track, immediateFlush } from 'beaver-logger/client';\n\nimport { FPTI, PAYMENT_TYPE } from './constants';\nimport { getReturnToken, getSessionState, getDomainSetting, eventEmitter } from './lib';\n\nexport const onAuthorizeListener = eventEmitter();\n\nfunction log(experiment : string, treatment : string, token : ?string, state : string) {\n\n getSessionState(session => {\n\n let event = `${ experiment }_${ treatment }_${ state }`;\n const loggedEvents = session.loggedExperimentEvents = session.loggedExperimentEvents || [];\n const duplicate = loggedEvents.indexOf(event) !== -1;\n\n if (duplicate) {\n info(`duplicate_${ event }`);\n\n } else {\n info(event);\n loggedEvents.push(event);\n\n const edge = window.navigator && window.navigator.userAgent && window.navigator.userAgent.match(/Edge\\/[0-9]{2}/);\n\n if (edge) {\n event = info(`${ edge[0].toLowerCase().replace('/', '_') }_${ event }`);\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: state,\n [ FPTI.KEY.EXPERIMENT_NAME ]: experiment,\n [ FPTI.KEY.TREATMENT_NAME ]: treatment,\n [ FPTI.KEY.TOKEN ]: token,\n [ FPTI.KEY.CONTEXT_ID ]: token,\n [ FPTI.KEY.CONTEXT_TYPE ]: token ? FPTI.CONTEXT_TYPE[PAYMENT_TYPE.EC_TOKEN] : FPTI.CONTEXT_TYPE.BUTTON_SESSION_ID\n });\n\n immediateFlush();\n }\n });\n}\n\nexport function logExperimentTreatment({ experiment, treatment, state, token } : { experiment : string, treatment : string, state : string, token : ?string }) {\n\n if (!experiment || !treatment) {\n return;\n }\n\n getSessionState(session => {\n session.externalExperiment = experiment;\n session.externalExperimentTreatment = treatment;\n\n if (token) {\n session.externalExperimentToken = token;\n }\n });\n\n log(experiment, treatment, token, state);\n}\n\nfunction logReturn(token : string) {\n\n const {\n externalExperiment,\n externalExperimentTreatment,\n externalExperimentToken\n } = getSessionState(session => session);\n\n if (externalExperiment && externalExperimentTreatment && externalExperimentToken === token) {\n log(externalExperiment, externalExperimentTreatment, token, `complete`);\n } else {\n info(`experiment_mismatch`, {\n token,\n externalExperiment,\n externalExperimentTreatment,\n externalExperimentToken\n });\n }\n}\n\nif (getDomainSetting('log_authorize')) {\n\n onAuthorizeListener.once(({ paymentToken }) => {\n setTimeout(() => {\n logReturn(paymentToken);\n }, 1);\n });\n\n const returnToken = getReturnToken();\n\n if (returnToken) {\n setTimeout(() => {\n if (returnToken) {\n logReturn(returnToken);\n }\n }, 1);\n }\n}\n","/* @flow */\n\nimport { once, noop } from 'zoid/src/lib';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { error } from 'beaver-logger/client';\nimport type { CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { extendUrl, redirect, awaitKey, stringifyError } from '../lib';\nimport { config } from '../config';\nimport { FUNDING } from '../constants';\n\nimport { determineParameterFromToken, determineUrl } from './checkout';\n\nconst OPTYPE = {\n PAYMENT: 'payment',\n CANCEL: 'cancel'\n};\n\nconst CONTINGENCY = {\n PAYMENT_CANCELLED: 'PAYMENT_CANCELLED'\n};\n\ntype PopupBridge = {|\n open : (string) => ZalgoPromise\n|};\n\nfunction wrapPopupBridge(popupBridge : Object) : PopupBridge {\n return {\n open(url : string) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n popupBridge.onComplete = (err, result) => {\n if (!result) {\n return reject(new Error('No payload passed in popupBridge.onComplete'));\n }\n\n return err ? reject(err) : resolve(result);\n };\n\n popupBridge.onCancel = () => {\n const err = new Error(CONTINGENCY.PAYMENT_CANCELLED);\n // $FlowFixMe\n err.code = CONTINGENCY.PAYMENT_CANCELLED;\n return reject(err);\n };\n\n popupBridge.open(extendUrl(url, { redirect_uri: popupBridge.getReturnUrlPrefix() }));\n });\n }\n };\n}\n\nfunction validateCheckoutProps(props) {\n if (!props.payment) {\n throw new Error(`Expected props.payment to be passed`);\n }\n\n if (!props.onAuthorize) {\n throw new Error(`Expected props.onAuthorize to be passed`);\n }\n\n if (props.env && !config.checkoutUrls[props.env]) {\n throw new Error(`Invalid props.env: ${ props.env }`);\n }\n}\n\nfunction normalizeCheckoutProps(props : Object) : { env : string, payment : Function, onAuthorize : Function, onCancel : Function } {\n const env = props.env = props.env || config.env;\n\n const payment = props.payment;\n const onAuthorize = once(props.onAuthorize);\n const onCancel = once(props.onCancel || noop);\n\n return { env, payment, onAuthorize, onCancel };\n}\n\nfunction getUrl(props : { env : string, payment : Function, onAuthorize : Function, onCancel? : Function, commit? : boolean }) : ZalgoPromise {\n\n const { env, payment } = normalizeCheckoutProps(props);\n\n return ZalgoPromise.try(payment, { props }).then(token => {\n if (!token) {\n throw new Error(`Expected props.payment to return a payment id or token`);\n }\n\n return extendUrl(determineUrl(env, FUNDING.PAYPAL, token), {\n [determineParameterFromToken(token)]: token,\n\n useraction: props.commit ? 'commit' : '',\n native_xo: '1'\n });\n });\n}\n\nfunction extractDataFromQuery(query : Object) : Object {\n\n const data : Object = {\n paymentToken: query.token,\n billingToken: query.ba_token,\n paymentID: query.paymentId,\n payerID: query.PayerID,\n intent: query.intent\n };\n \n const { opType, return_uri, cancel_uri } = query;\n\n if (opType === OPTYPE.PAYMENT) {\n data.returnUrl = return_uri;\n\n } else if (opType === OPTYPE.CANCEL) {\n data.cancelUrl = cancel_uri;\n }\n\n return data;\n}\n\nfunction buildActions(query : Object) : Object {\n \n const actions : Object = {\n close: noop,\n closeComponent: noop\n };\n\n const { opType, return_uri, cancel_uri } = query;\n\n if (opType === OPTYPE.PAYMENT) {\n actions.redirect = (win : CrossDomainWindowType = window, redirectUrl : string = return_uri) : ZalgoPromise => {\n return redirect(win, redirectUrl);\n };\n\n } else if (opType === OPTYPE.CANCEL) {\n actions.redirect = (win : CrossDomainWindowType = window, redirectUrl : string = cancel_uri) : ZalgoPromise => {\n return redirect(win, redirectUrl);\n };\n }\n\n return actions;\n}\n\nfunction renderThroughPopupBridge(props : Object, popupBridge : PopupBridge) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n validateCheckoutProps(props);\n\n }).then(() => {\n\n return getUrl(props);\n \n }).then(url => {\n\n return popupBridge.open(url);\n\n }).then(payload => {\n\n const { opType } = payload.queryItems;\n const { onAuthorize, onCancel } = normalizeCheckoutProps(props);\n\n const data = extractDataFromQuery(payload.queryItems);\n const actions = buildActions(payload.queryItems);\n \n if (opType === OPTYPE.PAYMENT) {\n return onAuthorize(data, actions);\n\n } else if (opType === OPTYPE.CANCEL) {\n return onCancel(data, actions);\n \n } else {\n throw new Error(`Invalid opType: ${ opType }`);\n }\n\n }).catch(err => {\n\n if (err && err.code === CONTINGENCY.PAYMENT_CANCELLED) {\n const { onCancel } = normalizeCheckoutProps(props);\n return onCancel({}, {});\n }\n\n throw err;\n });\n}\n\nexport function awaitPopupBridge(Button : Object) : ZalgoPromise {\n if (Button.xprops && Button.xprops.awaitPopupBridge) {\n return Button.xprops.awaitPopupBridge();\n }\n\n return awaitKey(window, 'popupBridge').then(popupBridge => {\n return wrapPopupBridge(popupBridge);\n });\n}\n\nexport function setupPopupBridgeProxy(Checkout : Object, Button : Object) {\n\n let popupBridge;\n\n awaitPopupBridge(Button).then(bridge => {\n popupBridge = bridge;\n });\n\n function doRender(props, original) : ZalgoPromise {\n if (!popupBridge) {\n return original();\n }\n \n return renderThroughPopupBridge(props, popupBridge)\n .catch(err => {\n error(`popup_bridge_error`, { err: stringifyError(err) });\n return original();\n });\n }\n\n const render = Checkout.render;\n Checkout.render = function popupBridgeRender(props : Object) : ZalgoPromise {\n return doRender(props, () => render.apply(this, arguments));\n };\n\n const renderTo = Checkout.renderTo;\n Checkout.renderTo = function popupBridgeRenderTo(win : CrossDomainWindowType, props : Object) : ZalgoPromise {\n return doRender(props, () => renderTo.apply(this, arguments));\n };\n\n const renderPopupTo = Checkout.renderPopupTo;\n Checkout.renderPopupTo = function popupBridgeRenderPopupTo(win : CrossDomainWindowType, props : Object) : ZalgoPromise {\n return doRender(props, () => renderPopupTo.apply(this, arguments));\n };\n}\n","/* @flow */\n/* global __paypal_checkout__*/\n\nimport { FUNDING, COUNTRY, CARD, PLATFORM, DEFAULT, ENV } from '../constants';\n\nexport const FUNDING_PRIORITY = [\n FUNDING.PAYPAL,\n FUNDING.VENMO,\n FUNDING.ITAU,\n FUNDING.CREDIT,\n FUNDING.CARD,\n FUNDING.IDEAL,\n FUNDING.ELV,\n FUNDING.BANCONTACT,\n FUNDING.GIROPAY,\n FUNDING.EPS,\n FUNDING.SOFORT,\n FUNDING.MYBANK,\n FUNDING.BLIK,\n FUNDING.P24,\n FUNDING.PAYU,\n FUNDING.VERKKOPANKKI,\n FUNDING.TRUSTLY,\n FUNDING.MAXIMA,\n FUNDING.BOLETO,\n FUNDING.OXXO\n];\n\nexport const FUNDING_ORDER = [\n FUNDING.PAYPAL,\n FUNDING.VENMO,\n FUNDING.ITAU,\n FUNDING.CREDIT,\n FUNDING.IDEAL,\n FUNDING.ELV,\n FUNDING.BANCONTACT,\n FUNDING.GIROPAY,\n FUNDING.EPS,\n FUNDING.SOFORT,\n FUNDING.MYBANK,\n FUNDING.BLIK,\n FUNDING.P24,\n FUNDING.PAYU,\n FUNDING.VERKKOPANKKI,\n FUNDING.TRUSTLY,\n FUNDING.MAXIMA,\n FUNDING.BOLETO,\n FUNDING.OXXO,\n FUNDING.CARD\n];\n\nexport const FUNDING_CONFIG = {\n\n [ DEFAULT ]: {\n enabled: true,\n\n allowOptIn: true,\n allowOptOut: true,\n allowRemember: true,\n\n allowHorizontal: true,\n allowVertical: true,\n\n requireCommitAsTrue: false\n },\n\n [ FUNDING.PAYPAL ]: {\n default: true,\n\n allowOptIn: false,\n allowOptOut: false,\n\n allowHorizontal: true,\n allowVertical: true\n },\n\n [ FUNDING.CARD ]: {\n // $FlowFixMe\n default: (typeof __paypal_checkout__ === 'undefined' ? true : __paypal_checkout__.serverConfig.paypalMerchantConfiguration.creditCard.isPayPalBranded),\n\n allowHorizontal: false,\n allowVertical: true\n },\n\n [ FUNDING.VENMO ]: {\n allowOptOut: true,\n allowedCountries: [\n COUNTRY.US\n ],\n\n allowHorizontal: true,\n allowVertical: true\n },\n [ FUNDING.ITAU ]: {\n allowOptOut: true,\n allowedCountries: [\n COUNTRY.BR\n ],\n\n allowHorizontal: true,\n allowVertical: true\n },\n\n [ FUNDING.CREDIT ]: {\n allowedCountries: [\n COUNTRY.US,\n COUNTRY.GB,\n COUNTRY.DE\n ],\n defaultVerticalCountries: [\n COUNTRY.US\n ],\n platforms: [\n PLATFORM.MOBILE\n ],\n\n allowHorizontal: true,\n allowVertical: true,\n allowRemember: true\n },\n\n [ FUNDING.IDEAL ]: {\n allowedCountries: [\n COUNTRY.NL\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.ELV ]: {\n allowedCountries: [\n COUNTRY.DE\n ],\n defaultVerticalCountries: [\n COUNTRY.DE\n ],\n\n allowHorizontal: false,\n allowVertical: true\n },\n\n [ FUNDING.BANCONTACT ]: {\n allowedCountries: [\n COUNTRY.BE\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.GIROPAY ]: {\n allowedCountries: [\n COUNTRY.DE\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.SOFORT ]: {\n allowedCountries: [\n COUNTRY.DE,\n COUNTRY.AT,\n COUNTRY.BE,\n COUNTRY.ES,\n COUNTRY.IT,\n COUNTRY.NL\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.EPS ]: {\n allowedCountries: [\n COUNTRY.AT\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.MYBANK ]: {\n allowedCountries: [\n COUNTRY.IT\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.P24 ]: {\n allowedCountries: [\n COUNTRY.PL\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.PAYU ]: {\n allowedCountries: [\n COUNTRY.CZ\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.VERKKOPANKKI ]: {\n allowedCountries: [\n COUNTRY.FI\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.BLIK ]: {\n allowedCountries: [\n COUNTRY.PL\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.TRUSTLY ]: {\n allowedCountries: [\n COUNTRY.DE,\n COUNTRY.DK,\n COUNTRY.EE,\n COUNTRY.ES,\n COUNTRY.FI,\n COUNTRY.GB,\n COUNTRY.IT,\n COUNTRY.MT,\n COUNTRY.NL,\n COUNTRY.NO,\n COUNTRY.SE\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.MAXIMA ]: {\n allowedCountries: [\n COUNTRY.LT\n ],\n\n allowedEnvs: [\n ENV.LOCAL,\n ENV.STAGE,\n ENV.TEST\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.BOLETO ]: {\n allowedCountries: [\n COUNTRY.BR\n ],\n\n allowedEnvs: [\n ENV.LOCAL,\n ENV.STAGE,\n ENV.TEST\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.OXXO ]: {\n allowedCountries: [\n COUNTRY.MX\n ],\n\n allowedEnvs: [\n ENV.LOCAL,\n ENV.STAGE,\n ENV.TEST\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.ZIMPLER ]: {\n allowedCountries: [],\n\n allowHorizontal: false,\n allowVertical: false,\n requireCommitAsTrue: true\n }\n};\n\nexport const CARD_CONFIG = {\n\n [ DEFAULT ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX\n ]\n },\n\n [ COUNTRY.GB ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.DISCOVER,\n CARD.MAESTRO\n ]\n },\n\n [ COUNTRY.US ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.DISCOVER\n ]\n },\n\n [ COUNTRY.BR ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.HIPER,\n CARD.ELO\n ]\n },\n\n [ COUNTRY.JP ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.JCB\n ]\n },\n\n [ COUNTRY.CN ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.CUP\n ]\n }\n};\n\nfunction getConfig(conf : Object, category : string, key : string, def : ?T) : T {\n const categoryConfig = conf[category];\n\n if (categoryConfig && categoryConfig.hasOwnProperty(key)) {\n return categoryConfig[key];\n }\n\n if (conf[DEFAULT] && conf[DEFAULT].hasOwnProperty(key)) {\n return conf[DEFAULT][key];\n }\n\n if (arguments.length >= 4) {\n // $FlowFixMe\n return def;\n }\n\n throw new Error(`No value found for ${ category }:${ key }`);\n}\n\nexport function getFundingConfig(source : string, key : string, def : ?T) : T {\n return getConfig(FUNDING_CONFIG, source, key, def);\n}\n\nexport function getCardConfig(source : string, key : string, def : ?T) : T {\n return getConfig(CARD_CONFIG, source, key, def);\n}\n","/* @flow */\n\nimport { ENV, CARD_PRIORITY, FUNDING, BUTTON_LAYOUT, FUNDING_ELIGIBILITY_REASON } from '../constants';\nimport type { LocaleType, FundingSource, FundingSelection, FundingList } from '../types';\n\nimport { getFundingConfig, getCardConfig, FUNDING_PRIORITY, FUNDING_CONFIG } from './config';\n\nconst fundingEligibilityReasons = [];\n\nexport function isFundingIneligible(source : FundingSource, { locale, funding, layout, commit, env } :\n { locale : LocaleType, funding : FundingSelection, layout : string, commit? : boolean, env : string }) : ?string {\n\n const isVertical = layout === BUTTON_LAYOUT.VERTICAL;\n const allowSecondary = getFundingConfig(source, isVertical ? 'allowVertical' : 'allowHorizontal');\n\n if (!allowSecondary) {\n return FUNDING_ELIGIBILITY_REASON.SECONDARY_DISALLOWED;\n }\n\n if (funding.disallowed.indexOf(source) !== -1 && getFundingConfig(source, 'allowOptOut')) {\n return FUNDING_ELIGIBILITY_REASON.OPT_OUT;\n }\n\n if (funding.disallowed.indexOf(source) !== -1 && source === FUNDING.VENMO) {\n return FUNDING_ELIGIBILITY_REASON.OPT_OUT;\n }\n if (funding.disallowed.indexOf(source) !== -1 && source === FUNDING.ITAU) {\n return FUNDING_ELIGIBILITY_REASON.OPT_OUT;\n }\n\n if (getFundingConfig(source, 'allowedCountries', [ locale.country ]).indexOf(locale.country) === -1) {\n return FUNDING_ELIGIBILITY_REASON.DISALLOWED_COUNTRY;\n }\n\n if (getFundingConfig(source, 'requireCommitAsTrue') && !commit) {\n return FUNDING_ELIGIBILITY_REASON.COMMIT_NOT_SET;\n }\n\n const allowedEnvs = getFundingConfig(source, 'allowedEnvs');\n if (allowedEnvs && allowedEnvs.indexOf(env) === -1) {\n return FUNDING_ELIGIBILITY_REASON.INVALID_ENV;\n }\n}\n\nexport function isFundingAutoEligible(source : FundingSource, { locale, funding, layout } :\n { locale : LocaleType, funding : FundingSelection, layout : string }) : ?string {\n\n const isVertical = layout === BUTTON_LAYOUT.VERTICAL;\n\n if (isVertical && getFundingConfig(source, 'defaultVerticalCountries', []).indexOf(locale.country) !== -1) {\n return FUNDING_ELIGIBILITY_REASON.DEFAULT_COUNTRY;\n }\n\n if (getFundingConfig(source, 'default')) {\n return FUNDING_ELIGIBILITY_REASON.DEFAULT;\n }\n\n if (funding.allowed.indexOf(source) !== -1 && getFundingConfig(source, 'allowOptIn')) {\n return FUNDING_ELIGIBILITY_REASON.OPT_IN;\n }\n\n if (funding.remembered.indexOf(source) !== -1 && getFundingConfig(source, 'allowRemember')) {\n return FUNDING_ELIGIBILITY_REASON.REMEMBERED;\n }\n}\n\nexport function isFundingEligible(source : FundingSource, { locale, funding, env, layout, selected, commit } :\n { locale : LocaleType, funding : FundingSelection, env : string, layout : string, selected? : string, commit : boolean }) : { eligible : boolean, reason : string } {\n\n if (selected && source === selected) {\n return { eligible: true, reason: FUNDING_ELIGIBILITY_REASON.PRIMARY };\n }\n\n if (!getFundingConfig(source, 'enabled')) {\n if (!(env === ENV.TEST && getFundingConfig(source, 'test'))) {\n return { eligible: false, reason: FUNDING_ELIGIBILITY_REASON.NOT_ENABLED };\n }\n }\n\n const ineligibleReason = isFundingIneligible(source, { locale, funding, layout, commit, env });\n\n if (ineligibleReason) {\n return { eligible: false, reason: ineligibleReason };\n }\n\n const autoEligibleReason = isFundingAutoEligible(source, { locale, funding, layout });\n\n if (autoEligibleReason) {\n return { eligible: true, reason: autoEligibleReason };\n }\n\n return { eligible: false, reason: FUNDING_ELIGIBILITY_REASON.NEED_OPT_IN };\n}\n\nexport function determineEligibleFunding({ funding, selected, locale, env, layout, commit } :\n { funding : FundingSelection, selected : FundingSource, locale : LocaleType, env : string, layout : string, commit : boolean }) : FundingList {\n\n const reasons = {};\n\n const eligibleFunding = FUNDING_PRIORITY.filter(source => {\n const { eligible, reason } = isFundingEligible(source, { selected, locale, funding, env, layout, commit });\n reasons[source] = { eligible, reason, factors: { env, locale, layout } };\n return eligible;\n });\n\n fundingEligibilityReasons.push(reasons);\n\n eligibleFunding.splice(eligibleFunding.indexOf(selected), 1);\n eligibleFunding.unshift(selected);\n\n return eligibleFunding;\n}\n\nexport function determineEligibleCards({ funding, locale } :\n { funding : FundingSelection, locale : LocaleType }) : FundingList {\n\n return getCardConfig(locale.country, 'priority')\n .filter(card => funding.disallowed.indexOf(card) === -1);\n}\n\nexport function validateFunding(funding : FundingSelection = { allowed: [], disallowed: [], remembered: [] }) {\n\n if (funding.allowed) {\n for (const source of funding.allowed) {\n if (CARD_PRIORITY.indexOf(source) !== -1) {\n continue;\n }\n\n if (!FUNDING_CONFIG.hasOwnProperty(source)) {\n throw new Error(`Invalid funding source: ${ source }`);\n }\n\n if (!getFundingConfig(source, 'allowOptIn')) {\n throw new Error(`Can not allow funding source: ${ source }`);\n }\n\n if (funding.disallowed && funding.disallowed.indexOf(source) !== -1) {\n throw new Error(`Can not allow and disallow funding source: ${ source }`);\n }\n }\n }\n\n if (funding.disallowed) {\n for (const source of funding.disallowed) {\n if (CARD_PRIORITY.indexOf(source) !== -1) {\n continue;\n }\n\n if (!FUNDING_CONFIG.hasOwnProperty(source)) {\n throw new Error(`Invalid funding source: ${ source }`);\n }\n\n if (!getFundingConfig(source, 'allowOptOut')) {\n throw new Error(`Can not disallow funding source: ${ source }`);\n }\n }\n }\n}\n\nexport function logFundingEligibility() {\n fundingEligibilityReasons.forEach((reasons, i) => {\n console.log(`\\nButton ${ i + 1 }:\\n`); // eslint-disable-line no-console\n\n console.table(Object.keys(reasons).map(source => { // eslint-disable-line no-console, compat/compat\n const { reason, eligible, factors } = reasons[source];\n\n return {\n 'Funding': source,\n 'Reason': reason,\n 'Eligibility': eligible ? 'eligible' : 'ineligible',\n 'Factors': JSON.stringify(factors)\n };\n }));\n });\n}\n","/* @flow */\n/* eslint no-template-curly-in-string: off, max-lines: off */\n\nimport { FUNDING, DEFAULT, COUNTRY, BUTTON_LABEL, BUTTON_COLOR, BUTTON_LOGO_COLOR, BUTTON_SIZE,\n BUTTON_TAGLINE_COLOR, BUTTON_SHAPE, BUTTON_LAYOUT, BUTTON_LOGO } from '../constants';\n\ntype ButtonConfig = {\n [ string ] : {\n colors? : $ReadOnlyArray<$Values>\n }\n};\n\nexport const BUTTON_CONFIG : ButtonConfig = {\n\n [ DEFAULT ]: {\n\n colors: [\n BUTTON_COLOR.GOLD,\n BUTTON_COLOR.BLUE,\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n sizes: [\n BUTTON_SIZE.SMALL,\n BUTTON_SIZE.MEDIUM,\n BUTTON_SIZE.LARGE,\n BUTTON_SIZE.RESPONSIVE\n ],\n\n shapes: [\n BUTTON_SHAPE.PILL,\n BUTTON_SHAPE.RECT\n ],\n\n layouts: [\n BUTTON_LAYOUT.HORIZONTAL,\n BUTTON_LAYOUT.VERTICAL\n ],\n\n logoColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_LOGO_COLOR.BLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLUE\n },\n\n tagLineColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_TAGLINE_COLOR.BLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_TAGLINE_COLOR.BLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_TAGLINE_COLOR.BLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_TAGLINE_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_TAGLINE_COLOR.BLUE\n\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n tag: `{ content: safer_tag }`,\n dualTag: `{ content: dual_tag|safer_tag }`,\n\n defaultLocale: `en_US`,\n defaultLabel: BUTTON_LABEL.CHECKOUT,\n defaultVerticalLabel: BUTTON_LABEL.PAYPAL,\n defaultColor: BUTTON_COLOR.GOLD,\n defaultSize: BUTTON_SIZE.SMALL,\n defaultVerticalSize: BUTTON_SIZE.MEDIUM,\n defaultShape: BUTTON_SHAPE.PILL,\n defaultLayout: BUTTON_LAYOUT.HORIZONTAL,\n defaultBranding: true,\n defaultVerticalBranding: true,\n defaultFundingIcons: false,\n defaultTagline: true,\n defaultDual: ``,\n\n minimumSize: BUTTON_SIZE.TINY,\n minimumVerticalSize: BUTTON_SIZE.MEDIUM,\n\n maximumSize: BUTTON_SIZE.HUGE,\n maximumVerticalSize: BUTTON_SIZE.HUGE,\n\n minHorizontalButtons: 1,\n minVerticalButtons: 1,\n\n maxHorizontalButtons: 2,\n maxVerticalButtons: 6,\n\n allowUnbranded: false,\n allowFundingIcons: true,\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.PAYPAL ]: {\n label: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n allowPrimary: true,\n\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true\n },\n\n [ BUTTON_LABEL.CHECKOUT ]: {\n label: `{ content: checkout }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n allowPrimary: true,\n\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true\n },\n\n [ BUTTON_LABEL.PAY ]: {\n label: `{ content: pay }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n allowPrimary: true,\n\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true\n },\n\n [ BUTTON_LABEL.BUYNOW ]: {\n label: `{ content: buynow }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n defaultBranding: undefined,\n\n allowPrimary: true,\n\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true,\n\n allowUnbranded: true\n },\n\n [ BUTTON_LABEL.INSTALLMENT ]: {\n label: (style) => { return `{ content: ${ style.installmentperiod ? 'installment_period' : 'installment' } }`; },\n logoLabel: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n allowPrimary: true,\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true,\n allowSecondaryVertical: false,\n allowSecondaryHorizontal: false\n },\n\n [ BUTTON_LABEL.CREDIT ]: {\n label: ({ locale }) => {\n if (locale.country === COUNTRY.DE) {\n return `{ logo: ${ BUTTON_LOGO.CREDIT } }`;\n }\n\n return `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } } { logo: ${ BUTTON_LOGO.CREDIT } }`;\n },\n logoLabel: ({ locale }) => {\n if (locale.country === COUNTRY.DE) {\n return `{ logo: ${ BUTTON_LOGO.CREDIT } }`;\n }\n\n return `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } } { logo: ${ BUTTON_LOGO.CREDIT } }`;\n },\n\n tag: `{ content: later_tag }`,\n\n colors: [\n BUTTON_COLOR.DARKBLUE,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLUE\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n defaultColor: BUTTON_COLOR.DARKBLUE,\n\n allowPrimary: true,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false,\n\n allowFundingIcons: false\n },\n\n [ BUTTON_LABEL.VENMO ]: {\n label: `{ logo: ${ BUTTON_LOGO.VENMO } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.VENMO } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.BLUE,\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.BLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLUE\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: true,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: true\n },\n [ BUTTON_LABEL.ITAU ]: {\n label: `{ logo: ${ BUTTON_LOGO.ITAU } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.ITAU } }`,\n\n defaultColor: BUTTON_COLOR.DARKBLUE,\n\n colors: [\n BUTTON_COLOR.DARKBLUE,\n BUTTON_COLOR.BLUE,\n BUTTON_COLOR.BLACK\n ],\n\n logoColors: {\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.DARKBLUE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: true\n },\n\n [ BUTTON_LABEL.IDEAL ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.IDEAL } } Online betalen`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.IDEAL } } Online betalen`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.ELV ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.ELV } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.ELV } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.BANCONTACT ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.BANCONTACT } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.BANCONTACT } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.GIROPAY ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.GIROPAY } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.GIROPAY } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.SOFORT ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.SOFORT } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.SOFORT } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.EPS ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.EPS } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.EPS } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.MYBANK ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.MYBANK } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.MYBANK } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.P24 ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.P24 } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.P24 } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.PAYU ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.PAYU } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PAYU } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.VERKKOPANKKI ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.VERKKOPANKKI } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.VERKKOPANKKI } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.BLIK ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.BLIK } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.BLIK } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.TRUSTLY ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.TRUSTLY } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.TRUSTLY } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.MAXIMA ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.MAXIMA } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.MAXIMA } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.BOLETO ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.BOLETO } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.BOLETO } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.OXXO ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.OXXO } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.OXXO } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.CARD ]: {\n\n label: `{ cards }`,\n logoLabel: `{ cards }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.TRANSPARENT\n ],\n\n logoColors: {\n [ BUTTON_COLOR.TRANSPARENT ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.TRANSPARENT\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n }\n};\n\nexport const FUNDING_TO_DEFAULT_LABEL = {\n [ FUNDING.PAYPAL ]: BUTTON_LABEL.PAYPAL,\n [ FUNDING.VENMO ]: BUTTON_LABEL.VENMO,\n [ FUNDING.ITAU ]: BUTTON_LABEL.ITAU,\n [ FUNDING.CARD ]: BUTTON_LABEL.CARD,\n [ FUNDING.CREDIT ]: BUTTON_LABEL.CREDIT,\n [ FUNDING.IDEAL ]: BUTTON_LABEL.IDEAL,\n [ FUNDING.ELV ]: BUTTON_LABEL.ELV,\n [ FUNDING.BANCONTACT ]: BUTTON_LABEL.BANCONTACT,\n [ FUNDING.GIROPAY ]: BUTTON_LABEL.GIROPAY,\n [ FUNDING.SOFORT ]: BUTTON_LABEL.SOFORT,\n [ FUNDING.EPS ]: BUTTON_LABEL.EPS,\n [ FUNDING.P24 ]: BUTTON_LABEL.P24,\n [ FUNDING.MYBANK ]: BUTTON_LABEL.MYBANK,\n [ FUNDING.PAYU ]: BUTTON_LABEL.PAYU,\n [ FUNDING.VERKKOPANKKI]: BUTTON_LABEL.VERKKOPANKKI,\n [ FUNDING.BLIK ]: BUTTON_LABEL.BLIK,\n [ FUNDING.TRUSTLY ]: BUTTON_LABEL.TRUSTLY,\n [ FUNDING.MAXIMA ]: BUTTON_LABEL.MAXIMA,\n [ FUNDING.BOLETO ]: BUTTON_LABEL.BOLETO,\n [ FUNDING.OXXO ]: BUTTON_LABEL.OXXO\n};\n\nexport const LABEL_TO_FUNDING = {\n [ BUTTON_LABEL.PAYPAL ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.CHECKOUT ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.PAY ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.BUYNOW ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.INSTALLMENT ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.CARD ]: FUNDING.CARD,\n [ BUTTON_LABEL.CREDIT ]: FUNDING.CREDIT,\n [ BUTTON_LABEL.VENMO ]: FUNDING.VENMO,\n [ BUTTON_LABEL.ITAU ]: FUNDING.ITAU,\n [ BUTTON_LABEL.IDEAL ]: FUNDING.IDEAL,\n [ BUTTON_LABEL.BANCONTACT]: FUNDING.BANCONTACT,\n [ BUTTON_LABEL.GIROPAY]: FUNDING.GIROPAY,\n [ BUTTON_LABEL.EPS ]: FUNDING.EPS,\n [ BUTTON_LABEL.SOFORT ]: FUNDING.SOFORT,\n [ BUTTON_LABEL.P24 ]: FUNDING.P24,\n [ BUTTON_LABEL.MYBANK ]: FUNDING.MYBANK,\n [ BUTTON_LABEL.PAYU ]: FUNDING.PAYU,\n [ BUTTON_LABEL.VERKKOPANKKI ]: FUNDING.VERKKOPANKKI,\n [ BUTTON_LABEL.BLIK ]: FUNDING.BLIK,\n [ BUTTON_LABEL.TRUSTLY ]: FUNDING.TRUSTLY,\n [ BUTTON_LABEL.MAXIMA ]: FUNDING.MAXIMA,\n [ BUTTON_LABEL.BOLETO ]: FUNDING.BOLETO,\n [ BUTTON_LABEL.OXXO ]: FUNDING.OXXO\n};\n\nexport const BUTTON_RELATIVE_STYLE = {\n FUNDINGICONS: 100,\n TAGLINE: 50,\n VERTICAL_MARGIN: 30\n};\n\nexport const BUTTON_STYLE = {\n\n [ BUTTON_SIZE.TINY ]: {\n defaultWidth: 75,\n defaultHeight: 25,\n minWidth: 75,\n maxWidth: 150,\n minHeight: 25,\n maxHeight: 30,\n buttonTextMargin: 0.5,\n allowFunding: true,\n allowTagline: false,\n byPayPalHeight: 0\n },\n\n [ BUTTON_SIZE.SMALL ]: {\n defaultWidth: 150,\n defaultHeight: 25,\n minWidth: 150,\n maxWidth: 200,\n minHeight: 25,\n maxHeight: 55,\n buttonTextMargin: 0.5,\n allowFunding: true,\n allowTagline: true,\n byPayPalHeight: 0\n },\n\n [ BUTTON_SIZE.MEDIUM ]: {\n defaultWidth: 250,\n defaultHeight: 35,\n minWidth: 200,\n maxWidth: 300,\n minHeight: 35,\n maxHeight: 55,\n buttonTextMargin: 1,\n allowFunding: true,\n allowTagline: true,\n byPayPalHeight: 30\n },\n\n [ BUTTON_SIZE.LARGE ]: {\n defaultWidth: 350,\n defaultHeight: 45,\n minWidth: 300,\n maxWidth: 500,\n minHeight: 30,\n maxHeight: 55,\n buttonTextMargin: 1,\n allowFunding: true,\n allowTagline: true,\n byPayPalHeight: 30\n },\n\n [ BUTTON_SIZE.HUGE ]: {\n defaultWidth: 500,\n defaultHeight: 55,\n minWidth: 500,\n maxWidth: 750,\n minHeight: 40,\n maxHeight: 55,\n buttonTextMargin: 1.25,\n allowFunding: true,\n allowTagline: true,\n byPayPalHeight: 30\n }\n};\n\nexport function labelToFunding(label : ?string) : string {\n return label ? LABEL_TO_FUNDING[label] : FUNDING.PAYPAL;\n}\n\nexport function fundingToDefaultLabel(funding : string) : $Values {\n return FUNDING_TO_DEFAULT_LABEL[funding];\n}\n\nfunction getConfig(conf : Object, category : string, key : string, def : ?T) : T {\n const categoryConfig = conf[category];\n\n if (categoryConfig && categoryConfig.hasOwnProperty(key)) {\n return categoryConfig[key];\n }\n\n if (conf[DEFAULT] && conf[DEFAULT].hasOwnProperty(key)) {\n return conf[DEFAULT][key];\n }\n\n if (arguments.length >= 4) {\n // $FlowFixMe\n return def;\n }\n\n throw new Error(`No value found for ${ category }:${ key }`);\n}\n\nexport function getButtonConfig(label : string, key : string, def : ?T) : T {\n return getConfig(BUTTON_CONFIG, label, key, def);\n}\n","/* @flow */\n\nimport { BUTTON_LAYOUT, BUTTON_STYLE_OPTIONS, BUTTON_LABEL, BUTTON_COLOR, BUTTON_SIZE, BUTTON_SHAPE } from '../constants';\nimport { determineEligibleFunding, determineEligibleCards } from '../funding';\nimport { memoize, sortBy } from '../lib/util';\nimport type { LocaleType, FundingSelection, FundingList, CheckoutCustomizationType } from '../types';\nimport { FUNDING_ORDER } from '../funding/config';\n\nimport { getButtonConfig, labelToFunding } from './config';\n\nfunction parseLocale(locale : string) : LocaleType {\n const [ lang, country ] = locale.split('_');\n return { country, lang };\n}\n\nexport function determineMaxButtons({ label, layout, max } : { layout : string, label : string, max : number }) : number {\n\n const allowed = (layout === BUTTON_LAYOUT.HORIZONTAL)\n ? getButtonConfig(label, 'allowPrimaryHorizontal')\n : getButtonConfig(label, 'allowPrimaryVertical');\n\n if (!allowed) {\n return 1;\n }\n\n const configMax = (layout === BUTTON_LAYOUT.HORIZONTAL)\n ? getButtonConfig(label, 'maxHorizontalButtons')\n : getButtonConfig(label, 'maxVerticalButtons');\n\n return max\n ? Math.min(configMax, max)\n : configMax;\n}\n\nfunction enableTagline({ tagline, branding, fundingicons, layout }) : boolean {\n return Boolean(tagline && branding && !fundingicons && layout === BUTTON_LAYOUT.HORIZONTAL);\n}\n\ntype NormalizedProps = {|\n size : $Values,\n label : $Values,\n color : $Values,\n shape : $Values,\n locale : LocaleType,\n branding : boolean,\n fundingicons : boolean,\n tagline : boolean,\n funding : FundingSelection,\n layout : $Values,\n sources : FundingList,\n max : number,\n multiple : boolean,\n env : string,\n height : ?number,\n cards : $ReadOnlyArray,\n installmentperiod : number,\n checkoutCustomization : ?CheckoutCustomizationType\n|};\n\nexport const normalizeProps = memoize((props : Object, defs? : { locale? : LocaleType } = {}) : NormalizedProps => {\n\n let {\n env,\n locale,\n style = {},\n funding,\n commit,\n checkoutCustomization\n } = props;\n\n locale = locale ? parseLocale(locale) : (defs.locale || getButtonConfig('DEFAULT', 'defaultLocale'));\n \n // funding indicated the allowed/disallowed payment methods (including cards) passed in the integration script\n // $FlowFixMe\n funding = funding || {};\n funding.allowed = funding.allowed || [];\n funding.disallowed = funding.disallowed || [];\n funding.remembered = funding.remembered || [];\n \n const label = style[BUTTON_STYLE_OPTIONS.LABEL] || getButtonConfig('DEFAULT', (style.layout === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalLabel' : 'defaultLabel');\n const layout = style[BUTTON_STYLE_OPTIONS.LAYOUT] || getButtonConfig(label, 'defaultLayout');\n\n let {\n [ BUTTON_STYLE_OPTIONS.SIZE ]: size = getButtonConfig(label, (layout === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalSize' : 'defaultSize'),\n [ BUTTON_STYLE_OPTIONS.COLOR ]: color = getButtonConfig(label, 'defaultColor'),\n [ BUTTON_STYLE_OPTIONS.SHAPE ]: shape = getButtonConfig(label, 'defaultShape'),\n [ BUTTON_STYLE_OPTIONS.BRANDING ]: branding = getButtonConfig(label, (layout === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalBranding' : 'defaultBranding'),\n [ BUTTON_STYLE_OPTIONS.FUNDINGICONS ]: fundingicons = getButtonConfig(label, 'defaultFundingIcons'),\n [ BUTTON_STYLE_OPTIONS.TAGLINE ]: tagline = getButtonConfig(label, 'defaultTagline'),\n [ BUTTON_STYLE_OPTIONS.MAXBUTTONS ]: max,\n [ BUTTON_STYLE_OPTIONS.HEIGHT ]: height,\n [ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD ]: installmentperiod\n } = style;\n\n // max is the maximum number of buttons to be displayed in the iframe\n max = determineMaxButtons({ label, layout, max });\n\n const selected = labelToFunding(label);\n let sources = determineEligibleFunding({ funding, selected, locale, env, layout, commit });\n // sources is an array of funding sources eligible to be displayed\n sources = sortBy(sources.slice(0, max), FUNDING_ORDER);\n // multiple is a boolean value indicating whether the sources is greater than 1\n const multiple = sources.length > 1;\n\n if (multiple) {\n branding = true;\n }\n\n tagline = enableTagline({ tagline, branding, fundingicons, layout });\n\n const cards = determineEligibleCards({ funding, locale });\n \n return { size, label, locale, color, shape, branding, fundingicons,\n tagline, funding, layout, sources, max, multiple, env, height, cards, installmentperiod, checkoutCustomization };\n});\n","/* @flow */\n\nimport { BUTTON_LABEL, BUTTON_LAYOUT, BUTTON_SIZE, BUTTON_STYLE_OPTIONS, ALLOWED_INSTALLMENT_COUNTRIES, ALLOWED_INSTALLMENT_PERIOD, LOCALE } from '../constants';\n\nimport { BUTTON_CONFIG, BUTTON_STYLE, getButtonConfig } from './config';\n\nexport function validateButtonLocale(locale : string) {\n\n if (!locale) {\n throw new Error(`Expected props.locale to be set`);\n }\n\n if (!locale.match(/^[a-z]{2}[_][A-Z][A-Z0-9]$/)) {\n throw new Error(`Expected props.locale to be valid, got ${ locale }`);\n }\n\n const [ lang, country ] = locale.split('_');\n\n if (!LOCALE[country] || LOCALE[country].indexOf(lang) === -1) {\n throw new Error(`Expected props.locale to be valid`);\n }\n}\n\nexport function validateRegionSpecificButton(style : Object = {}, locale : string = 'en_US') {\n\n const country = locale.split('_')[1];\n\n const isInstallmentAllowedCountry = ALLOWED_INSTALLMENT_COUNTRIES.indexOf(country) !== -1;\n\n if (!isInstallmentAllowedCountry && style.label === BUTTON_LABEL.INSTALLMENT) {\n throw new Error(`Unexpected label: style.${ style.label } for country: ${ country }`);\n }\n\n if (!isInstallmentAllowedCountry && style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD]) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD } is invalid for country: ${ country }`);\n }\n\n if (isInstallmentAllowedCountry && style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD] && style.label !== BUTTON_LABEL.INSTALLMENT) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD } is invalid for label: style.${ style.label }`);\n }\n\n if (isInstallmentAllowedCountry && style.label === BUTTON_LABEL.INSTALLMENT && style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD]\n && typeof style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD] !== 'number') {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD } is expected to be a number`);\n }\n\n if (isInstallmentAllowedCountry && style.label === BUTTON_LABEL.INSTALLMENT && style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD]\n && ALLOWED_INSTALLMENT_PERIOD[country].indexOf(style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD]) === -1) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD }: ${ style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD] } is not a valid installment number for ${ style.label }`);\n }\n\n}\n\nexport function validateButtonStyle(style : Object = {}, props : Object) {\n\n if (!style) {\n throw new Error(`Expected props.style to be set`);\n }\n\n const label = style[BUTTON_STYLE_OPTIONS.LABEL] || getButtonConfig('DEFAULT', (style[BUTTON_STYLE_OPTIONS.LAYOUT] === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalLabel' : 'defaultLabel');\n\n if (!BUTTON_CONFIG[label]) {\n throw new Error(`Invalid button label: ${ label }, expected: ${ Object.keys(BUTTON_CONFIG[label]).join(', ') }`);\n }\n\n const {\n [ BUTTON_STYLE_OPTIONS.COLOR ]: color,\n [ BUTTON_STYLE_OPTIONS.SHAPE ]: shape,\n [ BUTTON_STYLE_OPTIONS.SIZE ]: size,\n [ BUTTON_STYLE_OPTIONS.BRANDING ]: branding,\n [ BUTTON_STYLE_OPTIONS.FUNDINGICONS ]: fundingicons,\n [ BUTTON_STYLE_OPTIONS.TAGLINE ]: tagline,\n [ BUTTON_STYLE_OPTIONS.LAYOUT ]: layout,\n [ BUTTON_STYLE_OPTIONS.MAXBUTTONS ]: maxbuttons,\n [ BUTTON_STYLE_OPTIONS.HEIGHT ]: height\n } = style;\n\n if (color && getButtonConfig(label, 'colors').indexOf(color) === -1) {\n throw new Error(`Unexpected style.${ BUTTON_STYLE_OPTIONS.COLOR } for ${ label } button: ${ color }, expected ${ getButtonConfig(label, 'colors').join(', ') }`);\n }\n\n if (shape && getButtonConfig(label, 'shapes').indexOf(shape) === -1) {\n throw new Error(`Unexpected style.${ BUTTON_STYLE_OPTIONS.SHAPE } for ${ label } button: ${ shape }, expected ${ getButtonConfig(label, 'shapes').join(', ') }`);\n }\n\n if (size && getButtonConfig(label, 'sizes').indexOf(size) === -1) {\n throw new Error(`Unexpected style.${ BUTTON_STYLE_OPTIONS.SIZE } for ${ label } button: ${ size }, expected ${ getButtonConfig(label, 'sizes').join(', ') }`);\n }\n\n if (branding === false) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.BRANDING }:false is not allowed`);\n }\n\n if (fundingicons && !getButtonConfig(label, 'allowFundingIcons')) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.FUNDINGICONS }:true is not allowed for ${ label } button`);\n }\n\n if (layout && getButtonConfig(label, 'layouts').indexOf(layout) === -1) {\n throw new Error(`Unexpected style.${ BUTTON_STYLE_OPTIONS.LAYOUT } for ${ label } button: ${ layout }, expected ${ getButtonConfig(label, 'layouts').join(', ') }`);\n }\n\n if (maxbuttons !== undefined) {\n if (typeof maxbuttons !== 'number') {\n throw new TypeError(`Expected style.${ BUTTON_STYLE_OPTIONS.MAXBUTTONS } to be a number, got: ${ maxbuttons }`);\n }\n\n if (maxbuttons < 1) {\n throw new Error(`Expected style.${ BUTTON_STYLE_OPTIONS.MAXBUTTONS } to be a at least 1, got: ${ maxbuttons }`);\n }\n\n const minButtons = (layout === BUTTON_LAYOUT.VERTICAL)\n ? getButtonConfig(label, 'minVerticalButtons')\n : getButtonConfig(label, 'minHorizontalButtons');\n\n if (maxbuttons < minButtons) {\n throw new Error(`Expected style.${ BUTTON_STYLE_OPTIONS.MAXBUTTONS } to be no fewer than ${ minButtons }, got ${ maxbuttons }`);\n }\n }\n\n if (height !== undefined) {\n if (typeof height !== 'number') {\n throw new TypeError(`Expected style.${ BUTTON_STYLE_OPTIONS.HEIGHT } to be a number, got: ${ maxbuttons }`);\n }\n\n const buttonSize = size || getButtonConfig(label, (style.layout === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalSize' : 'defaultSize');\n\n const { minHeight, maxHeight } = (size === BUTTON_SIZE.RESPONSIVE) ? {\n minHeight: BUTTON_STYLE[BUTTON_SIZE.SMALL].minHeight,\n maxHeight: BUTTON_STYLE[BUTTON_SIZE.HUGE].maxHeight\n } : BUTTON_STYLE[buttonSize];\n\n if (height < minHeight || height > maxHeight) {\n throw new Error(`Expected style.${ BUTTON_STYLE_OPTIONS.HEIGHT } to be between ${ minHeight }px and ${ maxHeight }px - got ${ height }px`);\n }\n }\n\n if (!getButtonConfig(label, 'allowPrimary')) {\n throw new Error(`${ label } can not be used as primary button label`);\n }\n\n if (layout === BUTTON_LAYOUT.VERTICAL) {\n\n if (size && [ BUTTON_SIZE.MEDIUM, BUTTON_SIZE.LARGE, BUTTON_SIZE.RESPONSIVE ].indexOf(size) === -1) {\n throw new Error(`Button must be at least ${ BUTTON_SIZE.MEDIUM } size for ${ BUTTON_LAYOUT.VERTICAL } layout`);\n }\n\n if (!getButtonConfig(label, 'allowPrimaryVertical')) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.LABEL } option is not allowed for ${ BUTTON_LAYOUT.VERTICAL } layout - got ${ label }`);\n }\n\n if (fundingicons) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.FUNDINGICONS } not allowed for ${ BUTTON_LAYOUT.VERTICAL } layout - got ${ fundingicons }`);\n }\n\n if (tagline) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.TAGLINE } is not allowed for ${ BUTTON_LAYOUT.VERTICAL } layout - got ${ tagline }`);\n }\n }\n\n validateRegionSpecificButton(style, props.locale);\n}\n\nexport function validateButtonProps(props : Object) {\n\n if (!props) {\n throw new Error(`Expected props`);\n }\n\n const { locale, style } = props;\n\n validateButtonLocale(locale);\n validateButtonStyle(style, props);\n}\n","/* @flow */\n\nexport const CLASS = {\n SHOULD_FOCUS: 'paypal-should-focus',\n\n CONTAINER: 'paypal-button-container',\n BUTTON: 'paypal-button',\n \n BUTTON_LABEL: 'paypal-button-label-container',\n\n LABEL: 'paypal-button-label',\n COLOR: 'paypal-button-color',\n LOGO_COLOR: 'paypal-button-logo-color',\n SHAPE: 'paypal-button-shape',\n BRANDING: 'paypal-button-branding',\n LAYOUT: 'paypal-button-layout',\n NUMBER: 'paypal-button-number',\n ENV: 'paypal-button-env',\n\n TAGLINE: 'paypal-button-tagline',\n TAGLINE_COLOR: 'paypal-button-tagline-color',\n FUNDINGICONS: 'paypal-button-fundingicons',\n\n TEXT: 'paypal-button-text',\n LOGO: 'paypal-button-logo',\n CARD: 'paypal-button-card',\n\n SEPARATOR: 'paypal-separator',\n HIDDEN: 'hidden',\n DOM_READY: 'dom-ready',\n \n PERSONALIZATION_TEXT: 'personalization-text'\n};\n","/* @flow */\n\nimport { CLASS } from './class';\n\nexport const pageStyle = `\n html, body {\n padding: 0;\n margin: 0;\n width: 100%;\n overflow: hidden;\n text-align: center;\n }\n\n body {\n display: inline-block;\n vertical-align: top;\n }\n\n * {\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -khtml-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n cursor: default;\n box-sizing: border-box;\n }\n \n .${ CLASS.HIDDEN } {\n position: absolute;\n visibility: hidden;\n }\n`;\n","/* @flow */\n\nimport { BUTTON_COLOR, ENV } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const buttonStyle = `\n\n .${ CLASS.CONTAINER } {\n display: block;\n white-space: nowrap;\n margin: 0;\n background: 0;\n border: 0;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n text-transform: none;\n font-weight: 500;R\n -webkit-font-smoothing: antialiased;\n font-smoothing: antialiased;\n z-index: 0;\n font-size: 0;\n width: 100%;\n box-sizing: border-box;\n }\n\n .${ CLASS.BUTTON }:not(.${ CLASS.CARD }) {\n border: 1px solid transparent;\n border-radius: 0 3px 3px 0;\n position: relative;\n width: 100%;\n box-sizing: border-box;\n border: none;\n vertical-align: top;\n cursor: pointer;\n outline: none;\n overflow: hidden;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.TRANSPARENT } {\n cursor: auto;\n }\n\n .${ CLASS.BUTTON } * {\n cursor: pointer;\n }\n\n .${ CLASS.CONTAINER }.${ CLASS.ENV }-${ ENV.TEST } .${ CLASS.TEXT } {\n font-family: Arial !important;\n background: rgba(0, 0, 0, 0.5) !important;\n color: transparent !important;\n text-shadow: none !important;\n }\n\n .${ CLASS.BUTTON }:hover {\n box-shadow: inset 0 0 100px 100px rgba(255, 255, 255, 0.2);\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.GOLD }:hover,\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.SILVER }:hover {\n box-shadow: inset 0 0 100px 100px rgba(0, 0, 0, 0.05);\n }\n\n .${ CLASS.CARD }, .${ CLASS.CARD } * {\n cursor: pointer;\n }\n\n .${ CLASS.CARD }:hover {\n filter: brightness(1.2);\n }\n\n .${ CLASS.BUTTON }:focus, .${ CLASS.CARD }:focus {\n outline: none;\n }\n\n .${ CLASS.SHOULD_FOCUS } .${ CLASS.BUTTON }:focus,\n .${ CLASS.SHOULD_FOCUS } .${ CLASS.CARD }:focus {\n outline: solid 2px Highlight;\n outline: auto 5px -webkit-focus-ring-color;\n outline-offset: -3px;\n }\n\n .${ CLASS.BUTTON }:focus {\n box-shadow: -1px -1px 18px 1px rgba(0, 0, 0, 0.25) inset;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.TRANSPARENT }:focus {\n box-shadow: none;\n outline: none;\n }\n\n .${ CLASS.LOGO } {\n padding: 0;\n display: inline-block;\n background: none;\n border: none;\n width: auto;\n }\n\n .${ CLASS.TEXT } {\n display: inline-block;\n white-space: pre;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.BUTTON_LABEL } {\n position: relative;\n top: 50%;\n transform: translateY(-50%);\n -webkit-transform: translateY(-50%);\n -moz-transform: translateY(-50%);\n -ms-transform: translateY(-50%);\n -o-transform: translateY(-50%);\n }\n \n .${ CLASS.BUTTON } > .${ CLASS.BUTTON_LABEL } > * {\n vertical-align: top;\n height: 100%;\n text-align: left;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.CARD } {\n border-radius: 4px;\n }\n\n .powered-by-paypal > .${ CLASS.TEXT } {\n vertical-align: top;\n line-height: 18px;\n }\n\n .powered-by-paypal > .${ CLASS.LOGO } {\n height: 16px;\n min-height: 16px;\n }\n\n .${ CLASS.TAGLINE } {\n max-width: 100%;\n font-weight: normal;\n display: block;\n text-align: center;\n width: auto;\n }\n\n .${ CLASS.SEPARATOR } {\n height: 80%;\n border-left: 1px solid rgba(0, 0, 0, 0.15);\n margin: 0 8px;\n display: inline-block;\n position: relative;\n top: 10%;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.BLACK } .${ CLASS.SEPARATOR } {\n border-color: rgba(255, 255, 255, 0.45);\n }\n`;\n","/* @flow */\n\nimport { BUTTON_LAYOUT } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const layoutStyle = `\n\n .${ CLASS.CONTAINER }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.VERTICAL } .${ CLASS.TAGLINE } {\n display: none;\n }\n`;\n","/* @flow */\n\nimport { BUTTON_BRANDING } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const brandingStyle = `\n\n .${ CLASS.BUTTON }.${ CLASS.BRANDING }-${ BUTTON_BRANDING.UNBRANDED } {\n min-width: 60%;\n width: auto;\n font-weight: 900;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.BRANDING }-${ BUTTON_BRANDING.UNBRANDED } .${ CLASS.LOGO } {\n display: none;\n }\n`;\n","/* @flow */\n\nimport { BUTTON_STYLE } from '../../config';\nimport { BUTTON_LABEL, BUTTON_LOGO, BUTTON_SIZE, BUTTON_LAYOUT, BUTTON_NUMBER } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const labelStyle = `\n\n .${ CLASS.BUTTON }.${ CLASS.LABEL }-${ BUTTON_LABEL.CARD } {\n border-radius: 0 !important;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LABEL }-${ BUTTON_LABEL.CREDIT } .${ CLASS.TEXT } {\n display: none !important;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.LABEL }-${ BUTTON_LABEL.CREDIT } .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LOGO.PAYPAL } {\n display: none;\n }\n\n @media only screen and (max-width : ${ BUTTON_STYLE[BUTTON_SIZE.SMALL].minWidth }px) {\n\n .${ CLASS.BUTTON }.${ CLASS.LABEL }-${ BUTTON_LABEL.CREDIT } .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LOGO.PAYPAL } {\n display: none;\n }\n }\n\n @media only screen and (min-width : ${ BUTTON_STYLE[BUTTON_SIZE.SMALL].minWidth }px) {\n\n .${ CLASS.BUTTON }.${ CLASS.LABEL }-${ BUTTON_LABEL.CREDIT } .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LOGO.PAYPAL } {\n display: inline-block;\n }\n }\n`;\n","/* @flow */\n\nimport { BUTTON_BRANDING, BUTTON_SHAPE, BUTTON_LAYOUT, BUTTON_NUMBER, BUTTON_LABEL } from '../../../constants';\nimport { BUTTON_STYLE, BUTTON_RELATIVE_STYLE } from '../../config';\nimport { max, perc } from '../../../lib/util';\n\nimport { CLASS } from './class';\n\nconst DUAL_BUTTON_MIN_RATIO = 2.8;\n\nexport function buttonResponsiveStyle({ height, cardNumber = 4 } : { height? : ?number, cardNumber? : number }) : string {\n\n return Object.keys(BUTTON_STYLE).map(size => {\n\n const style = BUTTON_STYLE[size];\n const buttonHeight = height || style.defaultHeight;\n const buttonTextMarginTop = style.buttonTextMargin;\n const minDualWidth = Math.round(buttonHeight * DUAL_BUTTON_MIN_RATIO * 2);\n\n return `\n\n @media only screen and (min-width: ${ style.minWidth }px) {\n\n .${ CLASS.CONTAINER } {\n min-width: ${ style.minWidth }px;\n max-width: ${ style.maxWidth }px;\n font-size: ${ max(perc(buttonHeight, 32), 10) }px;\n }\n\n .${ CLASS.BUTTON }:not(.${ CLASS.CARD }) {\n height: ${ buttonHeight }px;\n min-height: ${ height || style.minHeight }px;\n max-height: ${ height || style.maxHeight }px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.BRANDING }-${ BUTTON_BRANDING.UNBRANDED } .${ CLASS.BUTTON_LABEL } {\n height: 100%;\n font-size: ${ max(perc(buttonHeight, 45), 10) }px;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.BUTTON_LABEL } {\n height: ${ perc(buttonHeight, 35) + 5 }px;\n max-height: ${ perc(buttonHeight, 60) }px;\n min-height: ${ perc(buttonHeight, 40) }px;\n }\n \n .${ CLASS.BUTTON } .${ CLASS.BUTTON_LABEL } .${ CLASS.TEXT } {\n margin-top: ${ buttonTextMarginTop }px;\n }\n \n .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LABEL.EPS },\n .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LABEL.MYBANK } {\n height: ${ perc(buttonHeight, 50) + 5 }px;\n max-height: ${ perc(buttonHeight, 70) }px;\n min-height: ${ perc(buttonHeight, 40) }px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.SHAPE }-${ BUTTON_SHAPE.PILL } {\n border-radius: ${ Math.ceil(buttonHeight / 2) }px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.SHAPE }-${ BUTTON_SHAPE.RECT } {\n border-radius: 4px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.VERTICAL } {\n margin-bottom: ${ perc(buttonHeight, BUTTON_RELATIVE_STYLE.VERTICAL_MARGIN) }px;\n }\n\n .${ CLASS.SEPARATOR } {\n margin: 0 ${ perc(buttonHeight, 5) }px;\n }\n\n .${ CLASS.TAGLINE } {\n display: ${ style.allowTagline ? 'block' : 'none' };\n height: ${ perc(buttonHeight, BUTTON_RELATIVE_STYLE.TAGLINE) }px;\n line-height: ${ perc(buttonHeight, BUTTON_RELATIVE_STYLE.TAGLINE) }px;\n }\n\n .${ CLASS.FUNDINGICONS } {\n display: ${ style.allowFunding ? 'block' : 'none' };\n height: ${ perc(buttonHeight, BUTTON_RELATIVE_STYLE.FUNDINGICONS) }px;\n }\n\n .${ CLASS.CARD } {\n display: inline-block;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.CARD } {\n width: ${ (90 / cardNumber).toFixed(2) }%;\n max-width: ${ perc(buttonHeight, 160) }px;\n margin-top: 0;\n margin-left: ${ (5 / cardNumber).toFixed(2) }%;\n margin-right: ${ (5 / cardNumber).toFixed(2) }%;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.CARD } img {\n width: 100%;\n }\n\n .${ CLASS.FUNDINGICONS } .${ CLASS.CARD } {\n height: ${ perc(buttonHeight, 70) }px;\n margin-top: ${ perc(buttonHeight, 15) }px;\n margin-left: ${ perc(buttonHeight, 7) }px;\n margin-right: ${ perc(buttonHeight, 7) }px;\n }\n\n .${ CLASS.FUNDINGICONS } .${ CLASS.CARD } img {\n height: 100%;\n }\n }\n\n @media only screen and (min-width: ${ style.minWidth }px) and (max-width: ${ minDualWidth }px) {\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.NUMBER }-0 {\n width: 100%;\n margin-right: 0;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.NUMBER }-1 {\n display: none;\n }\n\n .${ CLASS.CONTAINER }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE } .${ CLASS.TAGLINE } {\n display: none;\n }\n }\n\n @media only screen and (min-width: ${ max(style.minWidth, minDualWidth) }px) {\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.NUMBER }-0 {\n display: inline-block;\n width: calc(50% - 2px);\n margin-right: 4px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.NUMBER }-1 {\n display: inline-block;\n width: calc(50% - 2px);\n }\n\n .${ CLASS.CONTAINER }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE } .${ CLASS.TAGLINE } {\n display: block;\n }\n }\n `;\n\n }).join('\\n');\n}\n","/* @flow */\n\nimport { BUTTON_COLOR } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const buttonColorStyle = `\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.GOLD } {\n background: #ffc439;\n color: #111;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.BLUE } {\n background: #009cde;\n color: #fff;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.SILVER } {\n background: #eee;\n color: #111;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.BLACK } {\n background: #2C2E2F;\n color: #fff;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.DARKBLUE } {\n background: #003087;\n color: #fff;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.TRANSPARENT } {\n background: transparent;\n color: #111;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.WHITE } {\n background: #fff;\n color: #2C2E2F;\n border: 1px solid #2C2E2F;\n }\n`;\n","/* @flow */\n\nimport { pageStyle } from './page';\nimport { buttonStyle } from './button';\nimport { layoutStyle } from './layout';\nimport { brandingStyle } from './branding';\nimport { labelStyle } from './labels';\nimport { buttonResponsiveStyle } from './responsive';\nimport { buttonColorStyle } from './color';\n\nexport function componentStyle({ height, cardNumber } : { height? : ?number, cardNumber? : number }) : string {\n return `\n ${ pageStyle }\n ${ buttonStyle }\n ${ buttonColorStyle }\n ${ layoutStyle }\n ${ brandingStyle }\n ${ labelStyle }\n ${ buttonResponsiveStyle({ height, cardNumber }) }\n `;\n}\n","/* @flow */\n\nexport { componentStyle } from './base';\nexport { CLASS } from './class';\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, type JsxHTMLNode, JsxHTMLNodeContainer } from '../../lib/jsx';\n\nimport { CLASS } from './componentStyle';\n\nexport function LoadingDots(delay : number) : JsxHTMLNode {\n return (\n
\n \n {outlet}\n
\n );\n}\n","/* @flow */\n\nexport * from './componentTemplate';\nexport * from './containerTemplate';\n\n","\n/* @flow */\n\nimport { track, flush as flushLogs } from 'beaver-logger/client';\n\nimport { Checkout } from '../checkout';\nimport { setupPopupBridgeProxy } from '../integrations/popupBridge';\nimport { getPageRenderTime, setLogLevel } from '../lib';\nimport { ATTRIBUTE, FUNDING, FPTI, BUTTON_LAYOUT, BUTTON_COLOR, BUTTON_SIZE, BUTTON_SHAPE, BUTTON_LABEL } from '../constants';\n\nimport typeof { Button } from './component';\n\nexport function setupButtonChild(ButtonComponent : Button) {\n setupPopupBridgeProxy(Checkout, ButtonComponent);\n\n getPageRenderTime().then(pageRenderTime => {\n\n const fundingSources = Array.prototype.slice.call(document.querySelectorAll(`[${ ATTRIBUTE.FUNDING_SOURCE }]`)).map(el => {\n return el.getAttribute(ATTRIBUTE.CARD) || el.getAttribute(ATTRIBUTE.FUNDING_SOURCE);\n }).filter(source => {\n return source && source !== FUNDING.CARD;\n });\n\n const xprops = ButtonComponent.xprops;\n \n if (!xprops) {\n return;\n }\n\n const {\n layout = BUTTON_LAYOUT.HORIZONTAL,\n color = BUTTON_COLOR.GOLD,\n size = BUTTON_SIZE.SMALL,\n shape = BUTTON_SHAPE.PILL,\n label = BUTTON_LABEL.CHECKOUT,\n maxbuttons,\n tagline\n } = (xprops.style || {});\n\n track({\n [FPTI.KEY.STATE]: FPTI.STATE.BUTTON,\n [FPTI.KEY.TRANSITION]: FPTI.TRANSITION.BUTTON_LOAD,\n [FPTI.KEY.BUTTON_TYPE]: FPTI.BUTTON_TYPE.IFRAME,\n [FPTI.KEY.FUNDING_LIST]: fundingSources.join(':'),\n [FPTI.KEY.FUNDING_COUNT]: fundingSources.length,\n [FPTI.KEY.PAGE_LOAD_TIME]: pageRenderTime,\n [FPTI.KEY.BUTTON_LAYOUT]: layout,\n [FPTI.KEY.BUTTON_COLOR]: color,\n [FPTI.KEY.BUTTON_SIZE]: size,\n [FPTI.KEY.BUTTON_SHAPE]: shape,\n [FPTI.KEY.BUTTON_LABEL]: label,\n [FPTI.KEY.BUTTON_WIDTH]: window.innerWidth,\n [FPTI.KEY.MAX_BUTTONS]: maxbuttons,\n [FPTI.KEY.BUTTON_TAGLINE_ENABLED]: tagline ? '1' : '0'\n });\n\n flushLogs();\n });\n\n const xprops = ButtonComponent.xprops || Checkout.xprops;\n\n if (xprops && xprops.logLevel) {\n setLogLevel(xprops.logLevel);\n }\n\n // $FlowFixMe\n if (xprops.payment && !xprops.createOrder) {\n // $FlowFixMe\n xprops.createOrder = xprops.payment;\n }\n\n // $FlowFixMe\n if (xprops.onAuthorize && !xprops.onApprove) {\n // $FlowFixMe\n xprops.onApprove = xprops.onAuthorize;\n }\n\n try {\n if (xprops && xprops.onShippingChange && window.pre &&\n window.pre.inlineGuest && window.pre.inlineGuest.res &&\n window.pre.inlineGuest.res.data && window.pre.inlineGuest.res.data.treatments) {\n window.pre.inlineGuest.res.data.treatments = [];\n }\n } catch (err) {\n // pass\n }\n}\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { create } from 'zoid/src';\nimport { type Component } from 'zoid/src/component/component';\nimport { info, warn, track, error, flush as flushLogs, immediateFlush } from 'beaver-logger/client';\nimport { getDomain } from 'cross-domain-utils/src';\nimport { base64encode } from 'belter/src';\nimport { debounce, once } from 'zoid/src/lib';\n\nimport { pptm } from '../external';\nimport { config } from '../config';\nimport { SOURCE, ENV, FPTI, FUNDING, BUTTON_LABEL, BUTTON_COLOR,\n BUTTON_SIZE, BUTTON_SHAPE, BUTTON_LAYOUT, COUNTRY } from '../constants';\nimport { redirect as redir, checkRecognizedBrowser,\n getBrowserLocale, getSessionID, request, getScriptVersion,\n isIEIntranet, isEligible, getCurrentScriptUrl,\n getDomainSetting, extendUrl, isDevice, rememberFunding,\n getRememberedFunding, memoize, uniqueID, getThrottle, getBrowser } from '../lib';\nimport { rest } from '../api';\nimport { onAuthorizeListener } from '../experiments';\nimport { getPaymentType, awaitBraintreeClient,\n mapPaymentToBraintree, type BraintreePayPalClient } from '../integrations';\nimport { awaitPopupBridge } from '../integrations/popupBridge';\nimport { validateFunding, isFundingIneligible, isFundingAutoEligible } from '../funding';\n\nimport { containerTemplate, componentTemplate } from './template';\nimport { validateButtonLocale, validateButtonStyle } from './validate';\nimport { setupButtonChild } from './child';\nimport { normalizeProps } from './props';\n\npptm.listenForLoadWithNoContent();\n\nfunction isCreditDualEligible(props) : boolean {\n\n const { label, funding, layout, locale, max, sources, env } = normalizeProps(props, { locale: getBrowserLocale() });\n const { allowed } = funding;\n const { country } = locale;\n\n if (allowed && allowed.indexOf(FUNDING.CREDIT) !== -1) {\n return false;\n }\n\n if (layout !== BUTTON_LAYOUT.HORIZONTAL) {\n return false;\n }\n\n if (max === 1) {\n return false;\n }\n\n if (label === BUTTON_LABEL.CREDIT) {\n return false;\n }\n\n if (country !== COUNTRY.US) {\n return false;\n }\n\n if (isFundingIneligible(FUNDING.CREDIT, { funding, locale, layout, env })) {\n return false;\n }\n\n if (isFundingAutoEligible(FUNDING.CREDIT, { funding, locale, layout })) {\n return false;\n }\n\n if (sources.indexOf(FUNDING.CREDIT) !== -1) {\n return false;\n }\n\n const domain = getDomain().replace(/^https?:\\/\\//, '').replace(/^www\\./, '');\n\n if (config.creditTestDomains.indexOf(domain) === -1) {\n return false;\n }\n\n return true;\n}\n\nlet creditThrottle;\n\ntype ButtonOptions = {|\n style : {|\n maxbuttons? : number,\n layout? : string,\n label? : string,\n size? : string,\n shape? : string,\n color? : string,\n tagline? : boolean\n |},\n client : {\n [string] : (string | ZalgoPromise)\n },\n funding? : { allowed? : $ReadOnlyArray, disallowed? : $ReadOnlyArray },\n env? : string,\n locale? : string,\n logLevel : string,\n awaitPopupBridge : Function,\n meta : Object,\n validate? : ({ enable : () => ZalgoPromise, disable : () => ZalgoPromise }) => void,\n stage? : string,\n stageUrl? : string,\n localhostUrl? : string,\n checkoutUri? : string,\n authCode? : string,\n enableNativeCheckout? : boolean\n|};\n\nexport const Button : Component = create({\n\n tag: 'paypal-button',\n name: 'ppbutton',\n\n buildUrl(props) : string {\n const env = props.env || config.env;\n const url = config.buttonUrls[env];\n return url;\n },\n\n contexts: {\n iframe: true,\n popup: false\n },\n\n scrolling: false,\n listenForResize: true,\n\n containerTemplate,\n\n autoResize: {\n height: true,\n width: false\n },\n\n prerenderTemplate({ props, jsxDom } : { props : Object, jsxDom : Function }) : HTMLElement {\n\n const template = (\n
\n );\n\n template.addEventListener('click', () => {\n warn('button_pre_template_click');\n\n if (isIEIntranet()) {\n warn(`button_pre_template_click_intranet_mode`);\n\n flushLogs();\n\n // eslint-disable-next-line no-alert\n alert(`IE Intranet mode is not supported by PayPal. Please disable intranet mode, or continue in an alternate browser.`);\n }\n\n if (getDomainSetting('allow_full_page_fallback')) {\n info('pre_template_force_full_page');\n\n this.props.payment().then(token => {\n window.top.location = extendUrl(config.checkoutUrl, { token });\n });\n }\n });\n\n return (\n \n \n { template }\n \n \n );\n },\n\n get version() : string {\n return getScriptVersion();\n },\n\n get domain() : Object {\n return config.paypalDomains;\n },\n\n attributes: {\n iframe: {\n allowpaymentrequest: 'allowpaymentrequest'\n }\n },\n\n validate() {\n if (!isEligible()) {\n warn('button_render_ineligible');\n }\n },\n\n props: {\n domain: {\n type: 'string',\n required: false,\n def() : string {\n return window.location.host;\n },\n queryParam: true\n },\n\n sessionID: {\n type: 'string',\n required: false,\n def() : string {\n return getSessionID();\n },\n queryParam: true\n },\n\n buttonSessionID: {\n type: 'string',\n required: false,\n def() : ?string {\n return uniqueID();\n },\n queryParam: true\n },\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n }\n },\n\n meta: {\n type: 'object',\n required: false,\n def() : Object {\n return {};\n }\n },\n\n enableNativeCheckout: {\n type: 'boolean',\n required: false,\n def() : boolean {\n return false;\n }\n },\n\n client: {\n type: 'object',\n required: false,\n def() : Object {\n return {};\n },\n\n validate(client, props) {\n const env = props.env || config.env;\n\n if (!client[env]) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (typeof client[env] === 'string') {\n if (client[env].match(/^(.)\\1+$/)) {\n throw new Error(`Invalid client ID: ${ client[env] }`);\n }\n } else if (!ZalgoPromise.isPromise(client[env])) {\n throw new Error(`Expected client token to be either a string or a promise`);\n }\n },\n\n decorate(client : Object) : Object {\n if (client && client.sandbox === 'demo_sandbox_client_id') {\n client.sandbox = 'AZDxjDScFpQtjWTOUtWKbyN_bDt4OgqaF4eYXlewfBP4-8aqX3PiV8e1GWU6liB2CUXlkA59kJXE7M6R';\n }\n\n return client;\n }\n },\n\n source: {\n type: 'string',\n required: false,\n def() : string {\n return SOURCE.MANUAL;\n }\n },\n\n prefetchLogin: {\n type: 'boolean',\n required: false\n },\n\n stage: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.STAGE || env === ENV.LOCAL) {\n return config.stage;\n }\n }\n },\n\n updateClientConfiguration: {\n type: 'boolean',\n required: false,\n def: () => {\n return true;\n }\n },\n\n stageUrl: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.STAGE || env === ENV.LOCAL) {\n return config.stageUrl;\n }\n }\n },\n\n localhostUrl: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.LOCAL) {\n return config.localhostUrl;\n }\n }\n },\n\n checkoutUri: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : ?string {\n return config.checkoutUri;\n }\n },\n\n braintree: {\n type: 'object',\n required: false,\n validate(braintree, props) {\n\n if (!braintree.paypalCheckout) {\n throw new Error(`Expected Braintree paypal-checkout component to be loaded`);\n }\n\n if (!props.client) {\n throw new Error(`Expected client prop to be passed with Braintree authorization keys`);\n }\n },\n // $FlowFixMe\n decorate(braintree, props) : ZalgoPromise {\n const env = props.env || config.env;\n // $FlowFixMe\n return ZalgoPromise.hash(props.client).then(client => {\n return awaitBraintreeClient(braintree, client[env]);\n });\n }\n },\n\n payment: {\n type: 'function',\n required: true,\n memoize: false,\n timeout: __TEST__ ? 500 : 10 * 1000,\n alias: 'billingAgreement',\n\n decorate(original) : Function {\n return function payment(data = {}) : ZalgoPromise {\n\n const actions = {\n request,\n payment: {\n create: (options) => {\n return this.props.braintree\n ? this.props.braintree.then(client => {\n return client.createPayment(mapPaymentToBraintree(options.payment || options));\n })\n : ZalgoPromise.hash(this.props.client).then(client => {\n return rest.payment.create(this.props.env, client, options);\n });\n }\n },\n order: {\n create: (options) => {\n return ZalgoPromise.hash(this.props.client).then(client => {\n return rest.order.create(this.props.env, client, options);\n });\n }\n },\n braintree: {\n create: (options) => {\n if (!this.props.braintree) {\n throw new Error(`Can not create using Braintree - no braintree client provided`);\n }\n\n return this.props.braintree.then(client => {\n return client.createPayment(options);\n });\n }\n }\n };\n\n if (getDomainSetting('memoize_payment') && this.memoizedToken) {\n return this.memoizedToken;\n }\n\n this.memoizedToken = ZalgoPromise.try(original, this, [ data, actions ]);\n\n const startTime = Date.now();\n\n this.memoizedToken = this.memoizedToken.then(token => {\n\n if (!token) {\n error(`no_token_passed_to_payment`);\n throw new Error(`No value passed to payment`);\n }\n\n const elapsed = Date.now() - startTime;\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.RECIEVE_PAYMENT,\n [ FPTI.KEY.CONTEXT_TYPE ]: FPTI.CONTEXT_TYPE[getPaymentType(token)],\n [ FPTI.KEY.CONTEXT_ID ]: token,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.RESPONSE_DURATION ]: elapsed,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n flushLogs();\n\n return token;\n });\n\n return this.memoizedToken;\n };\n }\n },\n\n authCode: {\n type: 'string',\n required: false,\n def() : string {\n return config.authCode;\n }\n },\n\n funding: {\n type: 'object',\n required: false,\n queryParam: true,\n validate({ allowed = [], disallowed = [] } : Object = {}) {\n validateFunding({ allowed, disallowed, remembered: [] });\n },\n def() : Object {\n return {};\n },\n decorate({ allowed = [], disallowed = [] } : Object = {}, props : ButtonOptions) : {} {\n\n allowed = Array.isArray(allowed) ? allowed : [];\n disallowed = Array.isArray(disallowed) ? disallowed : [];\n\n if (allowed && allowed.indexOf(FUNDING.VENMO) !== -1) {\n allowed = allowed.filter(source => (source !== FUNDING.VENMO));\n }\n if (allowed && allowed.indexOf(FUNDING.ITAU) !== -1) {\n allowed = allowed.filter(source => (source !== FUNDING.ITAU));\n }\n\n if (isCreditDualEligible(props)) {\n creditThrottle = getThrottle('dual_credit_automatic', 50);\n\n if (creditThrottle.isEnabled()) {\n allowed = [ ...allowed, FUNDING.CREDIT ];\n }\n }\n\n let remembered = getRememberedFunding(sources => sources);\n\n if (!isDevice() || getDomainSetting('disable_venmo')) {\n if (remembered && remembered.indexOf(FUNDING.VENMO) !== -1) {\n remembered = remembered.filter(source => (source !== FUNDING.VENMO));\n }\n\n if (disallowed && disallowed.indexOf(FUNDING.VENMO) === -1) {\n disallowed = [ ...disallowed, FUNDING.VENMO ];\n }\n }\n\n return {\n allowed,\n disallowed,\n remembered,\n remember(sources) {\n rememberFunding(sources);\n }\n };\n }\n },\n\n commit: {\n type: 'boolean',\n required: false,\n queryParam: true,\n queryValue: (val) => {\n return val ? 'true' : 'false';\n }\n },\n\n onRender: {\n type: 'function',\n promisify: true,\n required: false,\n noop: true,\n decorate(original) : Function {\n return function decorateOnRender() : mixed {\n const { browser = 'unrecognized', version = 'unrecognized' } = getBrowser();\n info(`button_render_browser_${ browser }_${ isDevice() ? 'mobile' : 'desktop' }_${ version }`);\n\n const style = this.props.style || {};\n\n info(`button_render`);\n info(`button_render_color_${ style.color || 'default' }`);\n info(`button_render_shape_${ style.shape || 'default' }`);\n info(`button_render_size_${ style.size || 'default' }`);\n info(`button_render_label_${ style.label || 'default' }`);\n info(`button_render_branding_${ style.branding || 'default' }`);\n info(`button_render_fundingicons_${ style.fundingicons || 'default' }`);\n info(`button_render_tagline_${ style.tagline || 'default' }`);\n\n pptm.listenForButtonRender();\n pptm.reloadPptmScript(this.props.client[this.props.env]);\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_RENDER,\n [ FPTI.KEY.BUTTON_TYPE ]: FPTI.BUTTON_TYPE.IFRAME,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.BUTTON_SOURCE ]: this.props.source\n });\n\n if (isIEIntranet()) {\n warn(`button_render_intranet_mode`);\n }\n\n if (creditThrottle) {\n creditThrottle.logStart({\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID\n });\n }\n\n flushLogs();\n\n return original.apply(this, arguments);\n };\n }\n },\n\n onAuthorize: {\n type: 'function',\n alias: 'onApprove',\n required: true,\n\n decorate(original) : Function {\n return function decorateOnAuthorize(data, actions) : void | ZalgoPromise {\n\n if (data && !data.intent) {\n warn(`button_authorize_no_intent`, { paymentID: data.paymentID, token: data.paymentToken });\n }\n\n info('button_authorize');\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CHECKOUT_AUTHORIZE,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n if (isIEIntranet()) {\n warn(`button_authorize_intranet_mode`);\n }\n\n if (!isEligible()) {\n info('button_authorize_ineligible');\n }\n\n checkRecognizedBrowser('authorize');\n\n flushLogs();\n\n const restart = actions.restart;\n actions.restart = () => {\n return restart().then(() => {\n return new ZalgoPromise();\n });\n };\n\n actions.redirect = (win, url) => {\n return ZalgoPromise.try(() => {\n if (actions.close) {\n return actions.close();\n }\n }).then(() => {\n return redir(win || window.top, url || data.returnUrl);\n });\n };\n\n actions.payment.tokenize = memoize(() => {\n if (!this.props.braintree) {\n throw new Error(`Must pass in Braintree client to tokenize payment`);\n }\n\n return this.props.braintree\n .then(client => client.tokenizePayment(data));\n });\n\n const execute = actions.payment.execute;\n actions.payment.execute = () => {\n return execute().then(result => {\n\n if (!result || !result.id || !result.intent || !result.state) {\n warn(`execute_result_missing_data`);\n return new ZalgoPromise();\n }\n\n return result;\n });\n };\n\n const get = actions.payment.get;\n\n actions.payment.get = () => {\n return get().then(result => {\n if (!result || !result.id || !result.intent || !result.state) {\n warn(`get_result_missing_data`);\n return new ZalgoPromise();\n }\n\n return result;\n });\n };\n\n actions.request = request;\n\n onAuthorizeListener.trigger({\n paymentToken: data.paymentToken\n });\n\n if (creditThrottle) {\n creditThrottle.logComplete({\n [FPTI.KEY.BUTTON_SESSION_UID]: this.props.buttonSessionID\n });\n }\n\n return ZalgoPromise.try(() => {\n\n if (this.props.braintree) {\n return actions.payment.tokenize().then(({ nonce }) => {\n // $FlowFixMe\n Object.defineProperty(data, 'nonce', {\n get: () => {\n info('nonce_getter');\n flushLogs();\n return nonce;\n }\n });\n });\n }\n\n }).then(() => {\n return original.call(this, data, actions);\n }).catch(err => {\n if (this.props.onError) {\n return this.props.onError(err);\n }\n throw err;\n });\n };\n }\n },\n\n onShippingChange: {\n type: 'function',\n required: false,\n\n decorate(original) : void | Function {\n if (!original) {\n return;\n }\n\n return function decorateOnShippingChange(data, actions) : ZalgoPromise {\n\n info('button_shipping_change');\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CHECKOUT_SHIPPING_CHANGE,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n flushLogs();\n const timeout = __TEST__ ? 500 : 10 * 1000;\n\n const patch = actions.payment.patch;\n actions.payment.patch = (patchObject) => {\n return ZalgoPromise.try(() => {\n return patch(patchObject);\n });\n };\n\n const resolve = () => ZalgoPromise.resolve();\n const reject = actions.reject || function reject() {\n throw new Error(`Missing reject action callback`);\n };\n\n return ZalgoPromise.try(() => {\n return original.call(this, data, { ...actions, resolve, reject });\n }).timeout(timeout,\n new Error(`Timed out waiting ${ timeout }ms for payment`)).catch(err => {\n if (this.props.onError) {\n this.props.onError(err);\n }\n throw err;\n });\n };\n }\n },\n\n onError: {\n type: 'function',\n required: false,\n promisify: true,\n sendToChild: true,\n once: true,\n def() : (() => void) {\n return function onError(err : mixed) {\n if (isIEIntranet()) {\n warn(`button_error_intranet_mode`);\n flushLogs();\n\n // eslint-disable-next-line no-alert\n alert(`IE Intranet mode is not supported by PayPal. Please disable intranet mode, or continue in an alternate browser.`);\n }\n\n setTimeout(() => {\n throw err;\n });\n };\n }\n },\n\n onCancel: {\n type: 'function',\n required: false,\n noop: true,\n\n decorate(original) : Function {\n return function decorateOnCancel(data, actions) : void | ZalgoPromise {\n\n info('button_cancel');\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CHECKOUT_CANCEL,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n flushLogs();\n\n const redirect = (win, url) => {\n return ZalgoPromise.all([\n redir(win || window.top, url || data.cancelUrl),\n actions.close()\n ]);\n };\n\n return original.call(this, data, { ...actions, redirect });\n };\n }\n },\n\n onClick: {\n type: 'function',\n required: false,\n noop: true,\n decorate(original) : Function {\n return function decorateOnClick(data : ?{ fundingSource : string, card? : string, flow? : string, button_version? : string }) : void {\n\n info('button_click');\n if (data && data.flow) {\n info(`pay_flow_${ data.flow }`);\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.BUTTON,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_CLICK,\n [ FPTI.KEY.BUTTON_TYPE ]: FPTI.BUTTON_TYPE.IFRAME,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.CHOSEN_FUNDING ]: data && (data.card || data.fundingSource),\n [ FPTI.KEY.PAYMENT_FLOW ]: data && data.flow,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n if (isIEIntranet()) {\n warn('button_click_intranet_mode');\n }\n\n if (creditThrottle) {\n creditThrottle.log('click', {\n [ FPTI.KEY.STATE ]: FPTI.STATE.BUTTON,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_CLICK,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID\n });\n }\n\n const { color = 'default' } = this.props.style || {};\n info(`button_click_color_${ color }`);\n\n flushLogs();\n\n return original.apply(this, arguments);\n };\n }\n },\n\n onResize: {\n type: 'function',\n required: false,\n get value() : Function {\n let initialHeight;\n const logInlineGuestOutOfViewPortOnlyOnce = once((data) => {\n info('buttons_expansion_outside_viewport', data);\n immediateFlush();\n });\n\n return function onResizeHandler() {\n const container = this.container;\n\n if (!container) {\n return;\n }\n\n if (!initialHeight) {\n initialHeight = container.offsetHeight;\n }\n\n const getScrollOffsetY = () => {\n if (window.pageYOffset) {\n return window.pageYOffset;\n }\n\n if (document.documentElement) {\n return document.documentElement.scrollTop;\n }\n\n return 0;\n };\n\n // explanation https://github.com/paypal/paypal-checkout-components/pull/1136#discussion_r298025574\n const checkIfExpansionInViewport = () => {\n try {\n const scrollOffsetY = getScrollOffsetY();\n const windowHeight = window.innerHeight;\n\n const containerOffsetY = container.getBoundingClientRect().top;\n const VISIBLE_THRESHOLD = 200; // 200px, for the first input field to be visible\n\n return scrollOffsetY + windowHeight > initialHeight + containerOffsetY + VISIBLE_THRESHOLD;\n } catch (err) {\n info('cannot_get_the_viewport_information');\n return false;\n }\n };\n\n const isContainerExpanded = container && container.offsetHeight > initialHeight;\n const isExpansionInViewport = checkIfExpansionInViewport();\n\n if (!isContainerExpanded || isExpansionInViewport) {\n return;\n }\n\n logInlineGuestOutOfViewPortOnlyOnce({\n height: container.offsetHeight,\n window: {\n width: window.innerWidth,\n height: window.innerHeight\n }\n });\n };\n },\n decorate: (original) => debounce(original)\n },\n\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n },\n\n validate: validateButtonLocale\n },\n\n style: {\n type: 'object',\n required: false,\n queryParam: true,\n alias: 'buttonStyle',\n\n def() : Object {\n return {\n color: BUTTON_COLOR.GOLD,\n shape: BUTTON_SHAPE.PILL,\n size: BUTTON_SIZE.SMALL,\n label: BUTTON_LABEL.CHECKOUT,\n fundingicons: false,\n layout: BUTTON_LAYOUT.HORIZONTAL\n };\n },\n \n decorate(style : Object) : Object {\n const { label, layout = BUTTON_LAYOUT.HORIZONTAL } = style;\n if (!label && layout === BUTTON_LAYOUT.HORIZONTAL) {\n style.label = BUTTON_LABEL.CHECKOUT;\n return style;\n } else if (!label && layout === BUTTON_LAYOUT.VERTICAL) {\n style.label = BUTTON_LABEL.PAYPAL;\n return style;\n }\n return style;\n },\n\n validate(style = {}, props) {\n validateButtonStyle(style, props);\n flushLogs();\n }\n },\n\n validate: {\n type: 'function',\n required: false,\n decorate(validate) : Function {\n // $FlowFixMe\n return function decorateValidate(actions) : mixed {\n if (!this.validateCalled) {\n this.validateCalled = true;\n return validate(actions);\n }\n };\n }\n },\n\n logLevel: {\n type: 'string',\n required: false,\n get value() : string {\n return config.logLevel;\n }\n },\n\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n },\n\n awaitPopupBridge: {\n type: 'object',\n required: false,\n value: () => awaitPopupBridge(Button)\n },\n\n getPageUrl: {\n type: 'function',\n queryParam: false,\n required: false,\n def: () => {\n return () => window.location.href;\n }\n },\n\n test: {\n type: 'object',\n required: false,\n def() : Object {\n return { action: 'checkout' };\n }\n }\n }\n});\n\nif (Button.isChild()) {\n setupButtonChild(Button);\n}\n","/* @flow */\n\nimport { info, warn, flush as flushLogs } from 'beaver-logger/client';\nimport { CONSTANTS } from 'zoid/src';\nimport { getParent, getTop } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { config } from './config';\nimport { noop, isIE, getDomainSetting, extendUrl, patchMethod, once, extend } from './lib';\nimport { Button } from './button';\nimport { Checkout } from './checkout';\nimport { BUTTON_LABEL, BUTTON_SIZE, BUTTON_COLOR } from './constants';\nimport { rest } from './api';\n\nif (isIE() && getDomainSetting('ie_full_page')) {\n // $FlowFixMe\n Checkout.renderTo = (win) => {\n info('force_ie_full_page');\n flushLogs();\n\n // $FlowFixMe\n const checkout = Checkout.init({\n onAuthorize: noop\n });\n\n checkout.delegate(win);\n\n checkout.openContainer().then(() => {\n checkout.event.triggerOnce(CONSTANTS.EVENTS.CLOSE);\n checkout.showContainer();\n });\n\n // $FlowFixMe\n Button.xprops.payment().then(token => {\n window.top.location = extendUrl(config.checkoutUrl, { token });\n }).catch(err => {\n checkout.error(err);\n });\n };\n}\n\nconst parent = getParent(window);\nconst top = getTop(window);\n\nif (top && parent) {\n let canRenderTop = (top === parent);\n\n if (!canRenderTop) {\n Checkout.canRenderTo(top).then(result => {\n canRenderTop = result;\n });\n\n patchMethod(Checkout, 'renderTo', ({ args: [ win, props, el ], original, context }) => {\n\n if (!canRenderTop) {\n win = getParent(window);\n }\n\n return original.call(context, win, props, el);\n });\n }\n}\n\npatchMethod(Checkout, 'renderTo', ({ callOriginal, args: [ , props ] }) => {\n if (getDomainSetting('allow_full_page_fallback')) {\n const handleError = once((err) => {\n try {\n // eslint-disable-next-line no-console\n console.error(err && err.stack);\n } catch (err2) {\n // pass\n }\n\n // $FlowFixMe\n return Button.xprops.payment().then(token => {\n window.top.location = extendUrl(config.checkoutUrl, { token });\n });\n });\n\n props.onError = handleError;\n return callOriginal().catch(handleError);\n }\n return callOriginal();\n});\n\nlet debounce = false;\n\npatchMethod(Checkout, 'renderTo', ({ callOriginal, args: [ , props ] }) => {\n\n if (debounce) {\n warn('button_mutliple_click_debounce');\n return new ZalgoPromise(noop);\n }\n\n debounce = true;\n\n for (const methodName of [ 'onAuthorize', 'onCancel', 'onError', 'onClose' ]) {\n const original = props[methodName];\n props[methodName] = function unDebounce() : mixed {\n debounce = false;\n if (original) {\n return original.apply(this, arguments);\n }\n };\n }\n\n return callOriginal();\n});\n\npatchMethod(rest.payment, 'create', ({ original: createOriginal, context: createContext, args: [ env, client, options, experience ] }) => {\n if (!options.payment) {\n options = { payment: options, experience };\n }\n return createOriginal.call(createContext, env, client, options);\n});\n\npatchMethod(Button.props.style, 'validate', ({ callOriginal, args: [ style ] }) => {\n\n if (!style) {\n return callOriginal();\n }\n\n if (style && style.color === 'creditblue') {\n style.color = BUTTON_COLOR.DARKBLUE;\n }\n\n if (style && style.label === 'generic') {\n style.label = BUTTON_LABEL.PAYPAL;\n }\n\n if (style && (!style.label || style.label === BUTTON_LABEL.CHECKOUT) && style.size === 'tiny') {\n warn(`unsupported_button_size_tiny`);\n style.size = BUTTON_SIZE.SMALL;\n }\n\n return callOriginal();\n});\n\npatchMethod(Button, 'render', ({ callOriginal, args: [ props ] }) => {\n\n if (props.billingAgreement) {\n props.payment = props.billingAgreement;\n delete props.billingAgreement;\n }\n\n return callOriginal();\n});\n\npatchMethod(Button.props.payment, 'decorate', ({ original, context, args: [ originalPayment ] }) => {\n return original.call(context, function payment(data : Object, actions : Object) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n patchMethod(actions.payment, 'create', ({ original: createOriginal, context: createContext, args: [ options, experience ] }) => {\n if (!options.payment) {\n options = { payment: options, experience };\n }\n return createOriginal.call(createContext, options);\n });\n\n function resolveData(token) {\n resolve(token);\n }\n\n function rejectActions(err) {\n reject(err);\n }\n\n extend(resolveData, data);\n extend(resolveData, actions);\n extend(rejectActions, actions);\n\n const ctx = {\n props: {\n env: this.props.env,\n client: this.props.client\n }\n };\n\n let result;\n\n try {\n result = originalPayment.call(ctx, resolveData, rejectActions);\n } catch (err) {\n return reject(err);\n }\n\n if (result && typeof result.then === 'function') {\n return result.then(resolve, reject);\n }\n\n if (result !== undefined) {\n return resolve(result);\n }\n });\n });\n});\n\nif (Button.isChild()) {\n if (!window.Promise) {\n window.Promise = ZalgoPromise;\n }\n}\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { create } from 'zoid/src';\nimport { type Component } from 'zoid/src/component/component';\nimport type { CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { base64encode } from 'belter/src';\n\nimport { config } from '../config';\nimport { getButtonSessionID, getBrowserLocale, getSessionID, getCurrentScriptUrl } from '../lib';\n\ntype CardOptions = {|\n client : {\n [string] : (string | ZalgoPromise)\n },\n env? : string,\n locale? : string,\n logLevel : string,\n awaitPopupBridge : Function,\n onAuthorize : ({ returnUrl : string }, { redirect : (?CrossDomainWindowType, ?string) => ZalgoPromise }) => ?ZalgoPromise,\n onCancel? : ({ cancelUrl : string }, { redirect : (?CrossDomainWindowType, ?string) => ZalgoPromise }) => ?ZalgoPromise,\n onEvent? : ({ type : string, payload : Object }) => void,\n meta : Object,\n commit : boolean,\n token : string\n|};\n\nexport const Card : Component = create({\n tag: 'card-fields',\n name: 'ppcard',\n\n buildUrl(props) : string {\n const env = props.env || config.env;\n return config.inlinedCardFieldUrls[env];\n },\n\n contexts: {\n iframe: true,\n popup: false\n },\n\n dimensions: {\n height: '300px',\n width: '100%'\n },\n\n autoResize: {\n height: true,\n width: false\n },\n\n props: {\n sessionID: {\n type: 'string',\n required: false,\n def() : string {\n return getSessionID();\n },\n queryParam: true\n },\n\n\n token: {\n type: 'string',\n required: true,\n queryParam: true\n },\n\n buttonSessionID: {\n type: 'string',\n required: false,\n def() : ?string {\n return getButtonSessionID();\n },\n queryParam: true\n },\n\n commit: {\n type: 'boolean',\n required: false,\n queryParam: true\n },\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n },\n\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n allowDelegate: true,\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n }\n },\n\n initialFormValues: {\n type: 'object',\n required: false\n },\n\n\n onAuthorize: {\n type: 'function',\n required: true,\n once: true\n },\n\n onAuth: {\n type: 'function',\n required: false,\n sameDomain: true\n },\n\n onEvent: {\n type: 'function',\n required: false,\n sameDomain: true\n },\n\n getState: {\n type: 'function',\n required: false,\n sameDomain: true\n },\n\n dispatch: {\n type: 'object',\n required: false,\n sameDomain: true\n },\n\n onCancel: {\n type: 'function',\n required: false,\n once: true,\n noop: true\n },\n\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n },\n \n style: {\n type: 'object',\n required: false,\n queryParam: true,\n def() : Object {\n return {\n cardIcons: {\n display: false\n },\n submitButton: {\n display: true\n },\n currencyConversion: {\n display: true\n }\n };\n }\n }\n }\n});\n","/* @flow */\n\nimport { info, track, debug, warn, error, flush as flushLogs } from 'beaver-logger/client';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { config } from './config';\nimport { FPTI } from './constants';\nimport { initLogger, checkForCommonErrors, setLogLevel, stringifyError,\n stringifyErrorMessage, getResourceLoadTime, isPayPalDomain, isEligible,\n getDomainSetting, once, openMetaFrame, precacheRememberedFunding,\n getCurrentScript, getRememberedFunding } from './lib';\nimport { Button } from './button';\nimport { Checkout } from './checkout';\nimport { pptm } from './external';\n\nfunction domainToEnv(domain : string) : ?string {\n for (const env of Object.keys(config.paypalUrls)) {\n if (config.paypalUrls[env] === domain) {\n return env;\n }\n }\n}\n\nfunction setDomainEnv(domain : string) {\n const currentDomainEnv = domainToEnv(domain);\n\n if (currentDomainEnv && currentDomainEnv !== 'test') {\n config.env = currentDomainEnv;\n }\n}\n\nsetDomainEnv(`${ window.location.protocol }//${ window.location.host }`);\n\nZalgoPromise.onPossiblyUnhandledException(err => {\n\n error('unhandled_error', {\n stack: stringifyError(err),\n errtype: ({}).toString.call(err)\n });\n\n track({\n [ FPTI.KEY.ERROR_CODE ]: 'checkoutjs_error',\n [ FPTI.KEY.ERROR_DESC ]: stringifyErrorMessage(err)\n });\n\n return flushLogs().catch(err2 => {\n if (window.console) {\n try {\n if (window.console.error) {\n window.console.error('Error flushing:', stringifyError(err2));\n } else if (window.console.log) {\n window.console.log('Error flushing:', stringifyError(err2));\n }\n } catch (err3) {\n setTimeout(() => {\n throw err3;\n }, 1);\n }\n }\n });\n});\n\nconst currentScript = getCurrentScript();\nconst currentProtocol = window.location.protocol.split(':')[0];\n\n\ntype ConfigOptions = {|\n env? : ?string,\n stage? : ?string,\n apiStage? : ?string,\n stageUrl? : ?string,\n localhostUrl? : ?string,\n checkoutUri? : ?string,\n state? : ?string,\n logLevel? : ?string,\n merchantID? : ?string,\n precacheRemembered? : boolean,\n authCode? : ?string\n|};\n\nfunction configure({ env, stage, stageUrl, apiStage, localhostUrl, checkoutUri, state, logLevel, merchantID, authCode } : ConfigOptions = {}) {\n\n if (env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n\n delete config.env;\n config.env = env;\n } else if (Button.xprops && Button.xprops.env) {\n delete config.env;\n // $FlowFixMe\n config.env = Button.xprops.env;\n } else if (Checkout.xprops && Checkout.xprops.env) {\n delete config.env;\n // $FlowFixMe\n config.env = Checkout.xprops.env;\n }\n\n if (stage) {\n delete config.stage;\n config.stage = stage;\n } else if (Button.xprops && Button.xprops.stage) {\n delete config.stage;\n // $FlowFixMe\n config.stage = Button.xprops.stage;\n } else if (Checkout.xprops && Checkout.xprops.stage) {\n delete config.stage;\n // $FlowFixMe\n config.stage = Checkout.xprops.stage;\n }\n\n if (stageUrl) {\n delete config.stageUrl;\n // $FlowFixMe\n config.stageUrl = stageUrl;\n } else if (Button.xprops && Button.xprops.stageUrl) {\n delete config.stageUrl;\n // $FlowFixMe\n config.stageUrl = Button.xprops.stageUrl;\n } else if (Checkout.xprops && Checkout.xprops.stageUrl) {\n delete config.stageUrl;\n // $FlowFixMe\n config.stageUrl = Checkout.xprops.stageUrl;\n }\n\n authCode = authCode || (Button.xprops && Button.xprops.authCode) || (Checkout.xprops && Checkout.xprops.authCode);\n\n if (authCode) {\n delete config.authCode;\n config.authCode = authCode;\n }\n\n if (apiStage) {\n delete config.apiStage;\n config.apiStage = apiStage;\n }\n\n localhostUrl = localhostUrl || (Button.xprops && Button.xprops.localhostUrl) || (Checkout.xprops && Checkout.xprops.localhostUrl);\n if (localhostUrl) {\n config.localhostUrl = localhostUrl;\n }\n\n checkoutUri = checkoutUri || (Button.xprops && Button.xprops.checkoutUri) || (Checkout.xprops && Checkout.xprops.checkoutUri);\n if (checkoutUri) {\n config.checkoutUri = checkoutUri;\n }\n\n if (state) {\n delete config.state;\n config.state = state;\n }\n\n if (merchantID) {\n config.merchantID = merchantID;\n }\n\n if (logLevel) {\n setLogLevel(logLevel);\n } else {\n setLogLevel(config.logLevel);\n }\n}\n\nexport const init = once(({ precacheRemembered }) => {\n\n if (!isEligible()) {\n warn('ineligible');\n }\n\n checkForCommonErrors();\n\n initLogger();\n\n if (pptm.shouldCreateInitialPptmScript()) {\n pptm.createPptmScript();\n }\n\n if (precacheRemembered) {\n precacheRememberedFunding();\n }\n\n if (getDomainSetting('force_bridge') && !isPayPalDomain()) {\n openMetaFrame(config.env);\n }\n\n info(`setup_${ config.env }`);\n\n debug(`current_protocol_${ currentProtocol }`);\n});\n\n// $FlowFixMe\nexport function setup(options : ConfigOptions = {}) {\n configure(options);\n init(options);\n}\n\nif (currentScript) {\n setup({\n env: currentScript.getAttribute('data-env'),\n stage: currentScript.getAttribute('data-stage'),\n apiStage: currentScript.getAttribute('data-api-stage'),\n stageUrl: currentScript.getAttribute('data-stage-url'),\n localhostUrl: isPayPalDomain() ? currentScript.getAttribute('data-localhost-url') : undefined,\n checkoutUri: isPayPalDomain() ? currentScript.getAttribute('data-checkout-uri') : undefined,\n state: currentScript.getAttribute('data-state'),\n logLevel: currentScript.getAttribute('data-log-level'),\n merchantID: currentScript.getAttribute('data-merchant-id'),\n authCode: currentScript.getAttribute('data-auth-code'),\n precacheRemembered: currentScript.hasAttribute('data-precache-remembered-funding')\n });\n\n} else {\n setup();\n}\n\nif (!isPayPalDomain()) {\n\n if (currentScript) {\n\n const scriptProtocol = currentScript.src.split(':')[0];\n const loadTime = getResourceLoadTime(currentScript.src);\n\n debug(`current_script_protocol_${ scriptProtocol }`);\n debug(`current_script_protocol_${ currentProtocol === scriptProtocol ? 'match' : 'mismatch' }`);\n debug(`current_script_version_${ config.version.replace(/[^0-9a-zA-Z]+/g, '_') }`);\n\n if (loadTime) {\n debug(`current_script_time`, { loadTime });\n debug(`current_script_time_${ Math.floor(loadTime / 1000) }`);\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.SCRIPT_LOAD,\n [ FPTI.KEY.TRANSITION_TIME ]: loadTime,\n [ FPTI.KEY.FUNDING_REMEMBERED ]: getRememberedFunding().join(',')\n });\n\n } else {\n\n debug(`no_current_script`);\n debug(`no_current_script_version_${ config.version.replace(/[^0-9a-zA-Z]+/g, '_') }`);\n\n if (document.currentScript) { // eslint-disable-line compat/compat\n debug(`current_script_not_recognized`, { src: document.currentScript.src }); // eslint-disable-line compat/compat\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.SCRIPT_LOAD\n });\n }\n}\n","/* @flow */\n\nimport { debug, info, warn, error, track, flush } from 'beaver-logger/client';\nimport { destroyAll as _destroyAll } from 'zoid/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport * as _postRobot from 'post-robot/src'; // eslint-disable-line import/no-namespace\n\nimport { isPayPalDomain } from './lib';\nimport { Checkout as _Checkout } from './checkout';\nimport { BillingPage as _BillingPage } from './billing';\nimport { ThreeDomainSecure as _ThreeDomainSecure } from './threeDomainSecure';\n\nimport './hacks'; // eslint-disable-line import/no-unassigned-import\n\nexport const postRobot = _postRobot;\nexport { ZalgoPromise as Promise } from 'zalgo-promise/src';\nexport { PopupOpenError } from 'zoid/src';\n\nexport { rest } from './api';\nexport { Button } from './button';\nexport { Card } from './card';\nexport { setup } from './setup';\nexport { config } from './config';\nexport { ENV, USERS, SOURCE, FUNDING, CARD } from './constants';\nexport { request, isEligible, isFundingRemembered, allowIframe as forceIframe, allowIframe as isWebView, allowIframe } from './lib';\nexport { logExperimentTreatment } from './experiments';\nexport { logFundingEligibility } from './funding';\n\nexport const onPossiblyUnhandledException = ZalgoPromise.onPossiblyUnhandledException;\n\nexport const version = __PAYPAL_CHECKOUT__.__MINOR_VERSION__;\n\nexport let checkout;\nexport let apps;\n\nif (__PAYPAL_CHECKOUT__.__LEGACY_SUPPORT__) {\n const legacy = require('./legacy');\n checkout = legacy.checkout;\n apps = legacy.apps;\n}\n\n// -------------------------------------------------------------\n\nexport let Checkout;\nexport let BillingPage;\nexport let PayPalCheckout;\nexport let destroyAll;\nexport let enableCheckoutIframe;\nexport let logger;\nexport let ThreeDomainSecure;\n\nfunction _enableCheckoutIframe() {\n _Checkout.contexts.iframe = true;\n}\n\nif (isPayPalDomain() || __TEST__) {\n Checkout = _Checkout;\n BillingPage = _BillingPage;\n ThreeDomainSecure = _ThreeDomainSecure;\n PayPalCheckout = _Checkout;\n enableCheckoutIframe = _enableCheckoutIframe;\n destroyAll = _destroyAll;\n logger = { debug, info, warn, error, track, flush };\n}\n","/* @flow */\n/* eslint import/no-default-export: off */\n\nimport * as INTERFACE from './interface'; // eslint-disable-line import/no-namespace\n\nexport * from './interface';\nexport default INTERFACE;\n","/* @flow */\n\nexport const LOG_PREFIX = `paypal_legacy`;\n\nexport const ATTRIBUTES = {\n BUTTON: 'data-paypal-button',\n MERCHANT_ID: 'data-paypal-id',\n ENV: 'data-env',\n SANDBOX: 'data-sandbox'\n};\n\nexport const CLASSES = {\n HIDDEN_BUTTON: 'paypal-button-hidden'\n};\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { debug } from 'beaver-logger/client';\nimport { bridge } from 'post-robot/src';\n\nimport { config } from '../config';\nimport { openMetaFrame, noop } from '../lib';\n\nexport function setupPostBridge(env : string) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n const metaFrameDomain : string = config.paypalDomains[env];\n\n if (!bridge || !bridge.needsBridge({ domain: metaFrameDomain })) {\n return debug(`post_bridge_not_required`, { env });\n }\n\n debug(`setup_post_bridge`, { env });\n\n return openMetaFrame(env).then(noop);\n });\n}\n","/* @flow */\n\nimport { isDevice, isEligible, supportsPopups } from '../lib';\n\nexport function isLegacyEligible() : boolean {\n\n if (!isEligible()) {\n return false;\n }\n\n if (!supportsPopups()) {\n return false;\n }\n\n if (isDevice()) {\n return false;\n }\n\n return true;\n}\n","/* @flow */\n\nimport { prefix } from 'beaver-logger/client';\n\nimport { COUNTRY, LANG, LOCALE } from '../constants';\nimport type { LocaleType } from '../types';\n\nimport { LOG_PREFIX } from './constants';\n\nconst { warn } = prefix(LOG_PREFIX);\n\nconst DEFAULT_COUNTRY = COUNTRY.US;\nconst DEFAULT_LANG = LANG.EN;\n\nexport function normalizeLocale(locale : string) : LocaleType {\n\n let [ lang, country ] = locale.split('_');\n\n if (!country) {\n if (LOCALE[lang]) {\n country = lang;\n lang = null;\n } else {\n country = DEFAULT_COUNTRY;\n }\n }\n\n if (!LOCALE[country]) {\n warn(`invalid_user_country`, { country });\n country = DEFAULT_COUNTRY;\n }\n\n if (!lang) {\n lang = DEFAULT_LANG;\n }\n\n if (LOCALE[country].indexOf(lang) === -1) {\n warn(`invalid_user_lang`, { lang });\n\n if (LOCALE[country].indexOf(DEFAULT_LANG) !== -1) {\n lang = DEFAULT_LANG;\n } else {\n lang = LOCALE[country][0];\n }\n }\n\n return { country, lang };\n}\n","/* @flow */\n\nimport { prefix } from 'beaver-logger/client';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { config } from '../config';\nimport { FPTI, BUTTON_COLOR, BUTTON_SHAPE, BUTTON_SIZE, BUTTON_LABEL } from '../constants';\nimport { loadScript, memoize, isElementVisible, stringifyError } from '../lib';\n\nimport { LOG_PREFIX } from './constants';\nimport { normalizeLocale } from './common';\n\nconst { info, debug, error } = prefix(LOG_PREFIX);\n\nconst loadButtonJS = memoize(() : ZalgoPromise => {\n\n debug(`buttonjs_load`);\n\n return loadScript(config.buttonJSUrl).catch(err => {\n info(`buttonjs_load_error_retry`, { error: stringifyError(err) });\n return loadScript(config.buttonJSUrl);\n }).then(result => {\n debug(`buttonjs_load_success`);\n return result;\n }).catch(err => {\n error(`buttonjs_load_error`, { error: stringifyError(err) });\n throw err;\n });\n});\n\nfunction renderButton(id, { container, locale, type, color, shape, size }) : ZalgoPromise {\n\n return loadButtonJS().then(() => {\n\n if (locale) {\n const { country, lang } = normalizeLocale(locale);\n locale = `${ lang }_${ country }`;\n }\n\n locale = locale || `${ config.locale.lang }_${ config.locale.country }`;\n color = color || BUTTON_COLOR.GOLD;\n shape = shape || BUTTON_SHAPE.PILL;\n size = size || BUTTON_SIZE.SMALL;\n type = type || BUTTON_LABEL.CHECKOUT;\n\n debug(`render_button_lc_${ locale }`);\n debug(`render_button_color_${ color }`);\n debug(`render_button_shape_${ shape }`);\n debug(`render_button_size_${ size }`);\n debug(`render_button_label_${ type }`);\n\n const el = window.paypal.button.create(id, { lc: locale, color, shape, size }, { type: 'button', label: type }).el;\n container.appendChild(el);\n\n try {\n info(`in_page_button_${ isElementVisible(el) ? 'visible' : 'not_visible' }`);\n\n } catch (err) {\n // pass\n }\n\n return el.childNodes[0];\n });\n}\n\n// eslint-disable-next-line flowtype/no-mutable-array\nexport function renderButtons(id : string, buttons : Array) : ZalgoPromise> {\n\n return ZalgoPromise.map(buttons, button => {\n return ZalgoPromise.try(() => {\n\n if (button.container) {\n return renderButton(id, button);\n } else {\n return button.button;\n }\n\n }).then(element => {\n\n let container;\n let type;\n const condition = button.condition;\n const click = button.click;\n\n if (button.container) {\n container = button.container;\n type = FPTI.BUTTON_TYPE.HTML;\n } else {\n container = button.button;\n type = FPTI.BUTTON_TYPE.CUSTOM;\n }\n\n return { container, element, type, condition, click };\n });\n });\n}\n\nexport function getHijackTargetElement(button : HTMLElement | HTMLButtonElement) : ?HTMLElement {\n\n // $FlowFixMe\n const form = button.form;\n\n if (form) {\n debug(`target_element_button_form`);\n return form;\n }\n\n const tagName = button.tagName && button.tagName.toLowerCase();\n\n if (tagName === 'a') {\n debug(`target_element_link`);\n return button;\n }\n\n const parentElement = button.parentElement;\n const parentTagName = parentElement && parentElement.tagName && parentElement.tagName.toLowerCase();\n\n if ((tagName === 'img' || tagName === 'button') && parentTagName === 'a') {\n debug(`target_element_parent_link`);\n // $FlowFixMe\n return parentElement;\n }\n\n const grandparentElement = parentElement && parentElement.parentElement;\n const grandparentTagName = grandparentElement && grandparentElement.tagName && grandparentElement.tagName.toLowerCase();\n\n if (tagName === 'button' && grandparentTagName === 'a') {\n debug(`target_element_grandparent_link`);\n // $FlowFixMe\n return button.parentElement && button.parentElement.parentElement;\n }\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { flush as flushLogs, prefix } from 'beaver-logger/client';\n\nimport { config } from '../config';\nimport { ENV } from '../constants';\nimport { urlWillRedirectPage, redirect as redir } from '../lib';\n\nimport { LOG_PREFIX } from './constants';\n\nconst { warn } = prefix(LOG_PREFIX);\n\nlet redirected = false;\n\nexport function logRedirect(location : string) {\n\n if (redirected) {\n warn(`multiple_redirects`);\n }\n\n if (urlWillRedirectPage(location)) {\n redirected = true;\n }\n\n flushLogs();\n}\n\nexport function redirect(url : string) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n if (!url) {\n throw new Error(`Redirect url undefined`);\n }\n\n if (config.env === ENV.TEST && urlWillRedirectPage(url)) {\n return redir(window, `#fullpageRedirect?url=${ url }`);\n }\n\n logRedirect(url);\n\n return redir(window, url);\n });\n}\n\nexport function isToken(item : string) : boolean {\n return Boolean(item && item.match(/^(EC-)?[A-Z0-9]{17}$/));\n}\n\n\n/* Parse Token\n -----------\n\n We are passed either a token, or a url containing the token. In order to run the new checkout component we need to\n strip out the token from the url in order to pass it down as a prop\n*/\n\nexport function parseToken(token : string) : ?string {\n\n if (!token) {\n return;\n }\n\n token = decodeURIComponent(decodeURIComponent(token));\n\n // We may get lucky and be passed a token straight off the bar\n\n if (token.match(/^(EC-)?[A-Z0-9]{17}$/)) {\n return token;\n }\n\n // Otherwise strip the token from the url we're sent\n\n let match = token.match(/token=((EC-)?[A-Z0-9]{17})/);\n\n if (match) {\n return match[1];\n }\n\n match = token.match(/(EC-[A-Z0-9]{17})/);\n\n if (match) {\n return match[1];\n }\n}\n\nexport function hasToken(item : string) : boolean {\n return Boolean(parseToken(item));\n}\n","/* @flow */\n\nimport { prefix } from 'beaver-logger/client';\n\nimport { config } from '../config';\nimport { ENV } from '../constants';\nimport { getElements } from '../lib';\n\nimport { normalizeLocale } from './common';\nimport { LOG_PREFIX } from './constants';\n\nconst { info, warn } = prefix(LOG_PREFIX);\n\nexport function normalizeOptions(options : Object) {\n\n // Normalize environment\n\n if (options.environment) {\n\n if (options.environment === 'live') {\n options.environment = ENV.PRODUCTION;\n }\n\n if (!config.paypalUrls[options.environment]) {\n warn('invalid_env', { badenv: options.environment });\n options.environment = config.env;\n }\n }\n\n // If we're passed a single button in options.button, turn it into an array\n\n if (options.button && !Array.isArray(options.button)) {\n info(`options_button_single_button_passed`);\n\n options.button = [ options.button ];\n }\n\n // If we're passed an array of elements in options.buttons, switch it over to options.button\n\n if (options.buttons && getElements(options.buttons).length) {\n info(`options_buttons_with_elements_passed`);\n\n options.button = options.buttons;\n delete options.buttons;\n }\n\n // If we're passed an empty options.button array, clear the value\n\n if (options.button && options.button.length === 0) {\n info(`options_button_empty`);\n\n delete options.button;\n }\n\n // If we're passed options.button and options.container, concat both under button\n\n if (options.button && options.container) {\n info(`options_button_and_container_passed`, { button: options.button, container: options.container });\n\n options.button = options.button.concat(options.container);\n delete options.container;\n }\n\n // Normalize button selectors to elements\n\n if (options.button) {\n const button = getElements(options.button);\n\n if (button.length) {\n options.button = button;\n\n } else {\n warn(`options_button_element_not_found`, { element: JSON.stringify(options.button) });\n delete options.button;\n }\n }\n\n // Normalize options.button to options.buttons\n\n if (options.button) {\n\n options.buttons = options.button.map(button => {\n return {\n button,\n click: options.click,\n condition: options.condition\n };\n });\n\n delete options.click;\n delete options.condition;\n delete options.button;\n }\n\n // Normalize array of buttons\n\n else if (options.buttons && Array.isArray(options.buttons)) {\n\n const buttons = [];\n\n options.buttons.forEach(button => {\n\n if (!button) {\n return;\n }\n\n if (button.container && button.container !== options.container) {\n warn(`mismatched_container_and_button_passed`, { options: options.container, button: button.container });\n }\n\n getElements(button.container || button.button).forEach(element => {\n buttons.push({\n\n [ button.container ? 'container' : 'button' ]: element,\n\n click: button.click || options.click,\n condition: button.condition || options.condition,\n type: button.type || options.type,\n locale: button.locale || options.locale,\n color: button.color || options.color,\n shape: button.shape || options.shape,\n size: button.size || options.size\n });\n });\n });\n\n delete options.buttons;\n delete options.click;\n delete options.condition;\n delete options.button;\n delete options.type;\n delete options.locale;\n delete options.color;\n delete options.shape;\n delete options.size;\n\n if (buttons.length) {\n options.buttons = buttons;\n }\n }\n\n // Otherwise normalize container into array of buttons\n\n else if (options.container && !Array.isArray(options.buttons)) {\n\n const buttons = [];\n\n getElements(options.container).forEach((container, i) => {\n buttons.push({\n container,\n click: options.click,\n condition: options.condition,\n type: Array.isArray(options.type) ? options.type[i] : options.type,\n locale: Array.isArray(options.locale) ? options.locale[i] : options.locale,\n color: Array.isArray(options.color) ? options.color[i] : options.color,\n shape: Array.isArray(options.shape) ? options.shape[i] : options.shape,\n size: Array.isArray(options.size) ? options.size[i] : options.size\n });\n });\n\n delete options.container;\n delete options.buttons;\n delete options.click;\n delete options.condition;\n delete options.button;\n delete options.type;\n delete options.locale;\n delete options.color;\n delete options.shape;\n delete options.size;\n\n if (buttons.length) {\n options.buttons = buttons;\n }\n }\n\n if (!options.buttons) {\n options.buttons = [];\n }\n}\n\nexport function setupConfig(options : Object) {\n\n if (options.environment && config.paypalUrls[options.environment]) {\n config.env = options.environment;\n }\n\n if (options.locale) {\n config.locale = normalizeLocale(options.locale);\n config.customCountry = true;\n }\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { prefix, flush as flushLogs } from 'beaver-logger/client';\nimport formSerialize from 'form-serialize';\n\nimport { Checkout } from '../checkout';\nimport { config } from '../config';\nimport { ENV, FPTI } from '../constants';\nimport { supportsPopups, once, safeJSON, extendUrl, stringifyError, request } from '../lib';\n\nimport { setupPostBridge } from './postBridge';\nimport { isLegacyEligible } from './eligibility';\nimport { LOG_PREFIX } from './constants';\nimport { renderButtons, getHijackTargetElement } from './button';\nimport { redirect, logRedirect, parseToken } from './util';\nimport { normalizeOptions, setupConfig } from './options';\n\nconst { info, debug, warn, error, track } = prefix(LOG_PREFIX);\n\nexport const checkout = {};\nexport const apps = { checkout, Checkout: checkout };\n\nexport function reset() {\n\n debug('reset');\n\n // Once our callback has been called, we can set the global methods to their original values\n\n checkout.initXO = initXO; // eslint-disable-line no-use-before-define\n checkout.startFlow = startFlow; // eslint-disable-line no-use-before-define\n checkout.closeFlow = closeFlow; // eslint-disable-line no-use-before-define\n}\n\ncheckout.reset = reset;\n\n// $FlowFixMe\nObject.defineProperty(checkout, 'urlPrefix', {\n get() : string {\n return `${ config.checkoutUrl }${ config.checkoutUrl.indexOf('?') === -1 ? '?' : '&' }token=`;\n }\n});\n\nfunction matchUrlAndPaymentToken(item) : { url : string, paymentToken : ?string } {\n\n if (!item || !item.trim()) {\n error(`startflow_no_url_or_token`, { item });\n throw new Error(`startflow_no_url_or_token`);\n }\n\n\n const paymentToken = parseToken(item);\n let url = (paymentToken && paymentToken === item) ? '' : item;\n\n if (url) {\n\n if (!url.match(/^https?:\\/\\/|^\\//)) {\n if (paymentToken) {\n info(`startflow_relative_url_with_token`, { url });\n } else {\n info(`startflow_relative_url_no_token`, { url });\n }\n\n if (url.toLowerCase().indexOf('ec-') === 0 && paymentToken) {\n url = `${ config.checkoutUrl }${ url }`;\n }\n\n } else if (paymentToken) {\n if (url.indexOf('.paypal.com') !== -1) {\n debug(`startflow_paypalurl_with_token`, { url });\n } else {\n debug(`startflow_url_with_token`, { url });\n }\n\n } else {\n debug(`startflow_url_no_token`, { url });\n }\n\n } else {\n\n if (paymentToken) {\n url = extendUrl(config.checkoutUrl, { token: paymentToken });\n debug(`startflow_with_token`, { url });\n } else {\n error(`startflow_no_url_or_token`, { url });\n throw new Error(`Could not determine url or token from \"${ item }\"`);\n }\n }\n\n return { paymentToken, url };\n}\n\nfunction checkUrlAgainstEnv(url : string) {\n\n const paypalUrls = config.paypalUrls;\n\n for (const env of Object.keys(paypalUrls)) {\n const paypalUrl = paypalUrls[env];\n\n if (env === ENV.TEST || env === ENV.DEMO) {\n continue;\n }\n\n if (env !== config.env) {\n if (url.indexOf(paypalUrl) === 0 || url.indexOf(paypalUrl.replace('//www.', '//')) === 0) {\n warn(`mismatched_env_startflow_url`, { env: config.env, url });\n redirect(url);\n throw new Error(`${ url } is not a ${ config.env } url`);\n }\n }\n }\n}\n\n/* Get Token\n ---------\n\n Normally in the component world, getToken would be a user-provided function which passes a callback, and expects\n that callback to be called with either an error, or an EC token.\n\n In our case, we can emulate these callback calls by setting over the startFlow and closeFlow globals, and using\n them as our success and failure cases.\n\n Note: this method is set to `precall: true` mode. This means that it will be called the moment the component is\n inited on the page. This means that the moment we initialize, we're ready to start accepting a token via one of the\n global methods.\n*/\n\nfunction awaitPaymentTokenAndUrl(event? : ?Event, targetElement? : ?HTMLElement) : { url : ZalgoPromise, paymentToken : ZalgoPromise } {\n\n const paymentTokenAndUrl = new ZalgoPromise((resolve) => {\n\n if (event && targetElement && (Math.random() < 0.001 || window.enablev3ajax)) {\n let method;\n let url;\n let body;\n let contentType;\n\n info('gettoken_targetelement_start');\n flushLogs();\n \n if (targetElement.tagName.toLowerCase() === 'a') {\n method = 'get';\n url = targetElement.getAttribute('href');\n } else if (targetElement.tagName.toLowerCase() === 'form') {\n method = (targetElement.getAttribute('method') || 'get').toLowerCase();\n url = targetElement.getAttribute('action');\n body = formSerialize(targetElement);\n contentType = targetElement.getAttribute('enctype') || 'application/x-www-form-urlencoded';\n }\n \n if (method && url) {\n event.preventDefault();\n\n request({\n method,\n url,\n body,\n headers: {\n 'Accept': 'application/paypal-json-token',\n 'Content-type': contentType || ''\n }\n }).then(json => {\n const urlAndPaymentToken = matchUrlAndPaymentToken(json.token);\n resolve(urlAndPaymentToken);\n info('gettoken_targetelement_success', urlAndPaymentToken);\n flushLogs();\n\n }).catch(err => {\n warn('gettoken_targetelement_error', {\n // $FlowFixMe\n err: err.stack || err.toString()\n });\n flushLogs();\n });\n \n } else {\n warn('gettoken_targetelement_no_method_or_url');\n flushLogs();\n }\n }\n\n\n checkout.initXO = () => {\n warn(`gettoken_initxo`);\n };\n\n // startFlow is our 'success' case - we get a token, and we can pass it back to the caller\n\n checkout.startFlow = once((item) => {\n debug(`gettoken_startflow`, { item });\n\n const { url, paymentToken } = matchUrlAndPaymentToken(item);\n\n checkUrlAgainstEnv(url);\n\n return resolve({ url, paymentToken });\n });\n });\n\n const url = paymentTokenAndUrl.then(result => result.url);\n const paymentToken = paymentTokenAndUrl.then(result => result.paymentToken);\n\n return { url, paymentToken };\n}\n\n\n/* Init PayPal Checkout\n --------------------\n\n Initialize the Checkout component with some standard props:\n\n - Pass in env from global state (saved during setup() call)\n - Return to success url on payment authorize\n - Return to cancel url on cancel\n*/\n\nlet paypalCheckoutInited = false;\nlet closeFlowCalled = false;\n\nfunction initPayPalCheckout(props = {}) : Object {\n\n info(`init_checkout`);\n\n if (paypalCheckoutInited && config.env !== ENV.TEST) {\n warn(`multiple_init_paypal_checkout`);\n }\n\n if (closeFlowCalled) {\n debug(`init_after_closeflow`);\n }\n\n paypalCheckoutInited = true;\n\n const paypalCheckout = Checkout.init({\n\n onAuthorize(data, actions) : ZalgoPromise {\n info(`payment_authorized`);\n logRedirect(data.returnUrl);\n return actions.redirect(window);\n },\n\n onCancel(data, actions) : ?ZalgoPromise {\n if (data.cancelUrl) {\n info(`payment_canceled`);\n logRedirect(data.cancelUrl);\n return actions.redirect(window);\n }\n },\n\n fallback(url) : ZalgoPromise {\n error(`fallback_handler`, { url });\n this.destroy();\n return redirect(url);\n },\n\n ...props\n });\n\n checkout.closeFlow = (closeUrl? : string) => {\n warn(`closeflow`);\n\n closeFlowCalled = true;\n\n reset();\n\n paypalCheckout.destroy();\n\n if (closeUrl) {\n warn(`closeflow_with_url`, { closeUrl });\n return redirect(closeUrl);\n }\n };\n\n return paypalCheckout;\n}\n\nfunction renderPayPalCheckout(props : Object = {}, hijackTarget? : ?Element) : ZalgoPromise {\n\n const urlProp = ZalgoPromise.resolve(props.url);\n\n const paymentToken = new ZalgoPromise(resolve => {\n props.init = (data) => {\n resolve(data.paymentToken);\n };\n });\n\n const errorHandler = once(err => {\n\n error(`component_error`, { error: stringifyError(err) });\n\n if (hijackTarget) {\n warn(`render_error_hijack_revert_target`);\n hijackTarget.removeAttribute('target');\n }\n\n // eslint-disable-next-line promise/no-promise-in-callback\n urlProp.then(url => {\n warn(`render_error_redirect_using_url`);\n return redirect(url);\n });\n\n // eslint-disable-next-line promise/no-promise-in-callback\n paymentToken.then(token => {\n warn(`render_error_redirect_using_token`);\n return redirect(extendUrl(config.checkoutUrl, { token }));\n });\n });\n\n props.onError = errorHandler;\n\n let paypalCheckout;\n\n if (hijackTarget) {\n\n delete props.url;\n\n paypalCheckout = initPayPalCheckout(props);\n\n paypalCheckout.hijack(hijackTarget);\n paypalCheckout.runTimeout();\n\n urlProp.then(url => {\n warn(`hijack_then_url_passed`);\n paypalCheckout.loadUrl(url);\n });\n\n } else {\n\n paypalCheckout = initPayPalCheckout(props);\n }\n\n const render = paypalCheckout.render(null, !hijackTarget);\n\n checkout.win = paypalCheckout.window;\n\n return render.catch(errorHandler);\n}\n\n\nfunction handleClick(clickHandler, event) {\n debug(`button_click_handler`);\n\n try {\n clickHandler(event);\n } catch (err) {\n error(`click_handler_error`, { error: stringifyError(err) });\n }\n}\n\nfunction handleClickHijack(event, element) : void {\n\n const targetElement = getHijackTargetElement(element);\n\n if (!targetElement) {\n return error(`target_element_not_found`);\n }\n\n info(`init_paypal_checkout_hijack`);\n\n const { url, paymentToken } = awaitPaymentTokenAndUrl(event, targetElement);\n\n let token;\n \n paymentToken.then(result => {\n token = result;\n });\n\n renderPayPalCheckout({ url, payment: () => ZalgoPromise.resolve(token) }, targetElement);\n}\n\nfunction listenClick(container, button, clickHandler, condition, tracker) : void {\n\n const element : HTMLElement = (container.tagName.toLowerCase() === 'a') ? container : button;\n\n const isClick = (typeof clickHandler === 'function');\n\n if (element.hasAttribute('data-paypal-click-listener')) {\n return warn(`button_already_has_paypal_click_listener`);\n }\n\n element.setAttribute('data-paypal-click-listener', '');\n\n const targetElement = getHijackTargetElement(element);\n\n if (targetElement && isClick) {\n info(`button_link_or_form`);\n }\n\n element.addEventListener('click', (event : Event) => {\n\n tracker();\n\n const eligible = isLegacyEligible();\n\n if (supportsPopups()) {\n debug(`click_popups_supported`);\n\n if (!eligible) {\n debug(`click_popups_supported_but_ineligible`);\n }\n } else {\n debug(`click_popups_not_supported`);\n\n if (eligible) {\n debug(`click_popups_not_supported_but_eligible`);\n }\n }\n\n if (!isClick) {\n\n if (!eligible) {\n return debug(`ineligible_listenclick`);\n }\n }\n\n info(`button_click`);\n\n if (typeof condition === 'function') {\n if (condition.call()) {\n info(`button_click_condition_enabled`);\n } else {\n return info(`button_click_condition_disabled`);\n }\n }\n\n if (isClick) {\n return handleClick(clickHandler, event);\n\n } else {\n return handleClickHijack(event, element);\n }\n });\n}\n\nfunction instrumentButtonRender(type : string) {\n info(`render_${ type }_button`);\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_RENDER,\n [ FPTI.KEY.BUTTON_TYPE ]: type\n });\n\n flushLogs();\n}\n\nfunction instrumentButtonClick(type : string) {\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_CLICK,\n [ FPTI.KEY.BUTTON_TYPE ]: type\n });\n flushLogs();\n}\n\n\n/* Setup\n -----\n\n Emulate window.paypal.checkout.setup.\n\n The purpose of this method is to:\n\n - Set up configuration for the incontext flow\n - Render a button to initiate the checkout window\n*/\n\nlet setupCalled = false;\n\nexport function setup(id : string, options : Object = {}) : ZalgoPromise {\n\n id = id || 'merchant';\n\n info(`setup`, {\n id,\n env: options.environment,\n options: safeJSON(options)\n });\n\n if (setupCalled) {\n debug(`setup_called_multiple_times`);\n }\n\n setupCalled = true;\n\n normalizeOptions(options);\n setupConfig(options);\n\n setupPostBridge(config.env);\n\n return ZalgoPromise.try(() => {\n\n // If there are no buttons passed, can only assume there's a custom paypal button with a custom listener\n\n if (!options.buttons.length) {\n return instrumentButtonRender(FPTI.BUTTON_TYPE.CUSTOM);\n }\n\n // Otherwise render whatever buttons we were asked to, and listen for them to be clicked\n\n return renderButtons(id, options.buttons).then(buttons => {\n\n buttons.forEach(button => {\n instrumentButtonRender(button.type);\n\n listenClick(button.container, button.element, button.click, button.condition, () => {\n instrumentButtonClick(button.type);\n });\n });\n });\n });\n}\n\ncheckout.setup = setup;\n\n/* Init XO\n -------\n\n Emulate paypal.checkout.initXO\n\n Normally this would be used only to open the checkout page. But here we can just kick off the whole flow, since\n getToken will handle loading the token into the window for us.\n*/\n\nfunction initXO() : void {\n\n debug(`initxo`);\n\n if (!isLegacyEligible()) {\n return debug(`ineligible_initxo`);\n }\n\n const { url, paymentToken } = awaitPaymentTokenAndUrl();\n\n info(`init_paypal_checkout_initxo`);\n\n renderPayPalCheckout({ url, payment: () => paymentToken });\n}\n\ncheckout.initXO = initXO;\n\n\n/* Start Flow\n ----------\n\n Emulate paypal.checkout.startFlow\n\n Normally this would be used to load the url into the browser after the window has already been opened. Again, we\n can just kick off the whole flow here, on the off chance that a merchant calls us on button click. Normally this\n method will have been patched over in getToken.\n*/\n\nfunction startFlow(item : string) {\n debug(`startflow`, { item });\n\n const { paymentToken, url } = matchUrlAndPaymentToken(item);\n\n checkUrlAgainstEnv(url);\n\n if (!isLegacyEligible()) {\n debug(`ineligible_startflow_global`, { url });\n redirect(url);\n return;\n }\n\n info(`init_paypal_checkout_startflow`);\n\n renderPayPalCheckout({ url, payment: () => ZalgoPromise.resolve(paymentToken) });\n}\n\ncheckout.startFlow = startFlow;\n\n\n/* Close Flow\n ----------\n\n Emulate paypal.checkout.closeFlow\n\n Close the component in case of any error on the merchant side.\n*/\n\nfunction closeFlow(closeUrl? : string) {\n warn(`closeflow_not_opened`);\n\n if (closeUrl) {\n warn(`closeflow_with_url`, { closeUrl });\n redirect(closeUrl);\n\n }\n}\n\ncheckout.closeFlow = closeFlow;\n","/* @flow */\n\nimport { prefix } from 'beaver-logger/client';\n\nimport { onDocumentReady } from '../lib';\nimport { ENV } from '../constants';\n\nimport { LOG_PREFIX, ATTRIBUTES, CLASSES } from './constants';\nimport { setup } from './interface';\n\nconst { error, debug } = prefix(LOG_PREFIX);\n\n/* PayPal Checkout Ready\n ---------------------\n\n Call window.paypalCheckoutReady on document ready, if it has been defined by the merchant\n*/\n\nfunction invokeReady(method) {\n\n onDocumentReady(() => {\n debug(`paypal_checkout_ready`);\n setTimeout(() => {\n\n if (!window.paypal) {\n error(`paypal_checkout_ready_no_window_paypal`);\n }\n\n method();\n }, 1);\n });\n}\n\nfunction onKey(obj : Object, key : string, callback : Function) {\n\n if (!obj) {\n return;\n }\n\n let value = obj[key];\n\n if (value) {\n value = callback(value) || value;\n }\n\n try {\n\n delete obj[key];\n\n Object.defineProperty(obj, key, {\n\n configurable: true,\n\n set(item) {\n value = item;\n\n if (value) {\n value = callback(value) || value;\n }\n },\n\n get() : mixed {\n return value;\n }\n });\n\n } catch (err) {\n // pass\n }\n}\n\nonKey(window, 'paypalCheckoutReady', method => {\n\n if (typeof method === 'function') {\n\n const oneTimeReady = function () : void {\n if (!method.called) {\n method.called = true;\n return method.apply(this, arguments);\n }\n };\n\n invokeReady(oneTimeReady);\n\n return oneTimeReady;\n }\n});\n\n\n/* Scan for buttons\n ----------------\n\n Scan for any buttons on the page with a data-paypal-button attribute and auto-attach the PaypalCheckout component to them\n*/\n\nonDocumentReady(() => {\n\n const buttons = Array.prototype.slice.call(document.querySelectorAll(`[${ ATTRIBUTES.BUTTON }]`));\n\n if (buttons && buttons.length) {\n debug(`data_paypal_button`, { number: buttons.length });\n\n for (const button of buttons) {\n\n const id = button.getAttribute(ATTRIBUTES.MERCHANT_ID);\n\n let environment;\n\n if (button.hasAttribute(ATTRIBUTES.ENV)) {\n environment = button.getAttribute(ATTRIBUTES.ENV);\n } else if (button.hasAttribute(ATTRIBUTES.SANDBOX)) {\n environment = ENV.SANDBOX;\n }\n\n setup(id, { environment, button });\n }\n }\n\n // Show hidden buttons\n\n Array.prototype.slice.call(document.getElementsByClassName(CLASSES.HIDDEN_BUTTON)).forEach(el => {\n el.className = el.className.replace(CLASSES.HIDDEN_BUTTON, '');\n });\n});\n","/* @flow */\n\nimport './ready'; // eslint-disable-line import/no-unassigned-import\n\nexport * from './button';\nexport * from './constants';\nexport * from './interface';\n"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/checkout.4.0.307.min.js b/dist/checkout.4.0.308.min.js similarity index 82% rename from dist/checkout.4.0.307.min.js rename to dist/checkout.4.0.308.min.js index 4500abdd3c..8470967229 100644 --- a/dist/checkout.4.0.307.min.js +++ b/dist/checkout.4.0.308.min.js @@ -1,2 +1,2 @@ -!function(e){var o={};function a(t){if(o[t])return o[t].exports;var r=o[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,a),r.l=!0,r.exports}a.m=e,a.c=o,a.d=function(e,o,t){a.o(e,o)||Object.defineProperty(e,o,{enumerable:!0,get:t})},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.t=function(e,o){if(1&o&&(e=a(e)),8&o)return e;if(4&o&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(a.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&o&&"string"!=typeof e)for(var r in e)a.d(t,r,function(o){return e[o]}.bind(null,r));return t},a.n=function(e){var o=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(o,"a",o),o},a.o=function(e,o){return{}.hasOwnProperty.call(e,o)},a.p="",a(a.s=62)}([function(e,o,a){"use strict";var t,r,n,l={LABEL:"label",SIZE:"size",SHAPE:"shape",COLOR:"color",LAYOUT:"layout",MAXBUTTONS:"maxbuttons",FUNDINGICONS:"fundingicons",BRANDING:"branding",TAGLINE:"tagline",HEIGHT:"height",INSTALLMENTPERIOD:"installmentperiod"},p={PAYPAL:"paypal",CHECKOUT:"checkout",PAY:"pay",CREDIT:"credit",CARD:"card",BUYNOW:"buynow",INSTALLMENT:"installment",VENMO:"venmo",ITAU:"itau",IDEAL:"ideal",ELV:"elv",BANCONTACT:"bancontact",GIROPAY:"giropay",SOFORT:"sofort",EPS:"eps",MYBANK:"mybank",P24:"p24",PAYU:"payu",VERKKOPANKKI:"verkkopankki",BLIK:"blik",TRUSTLY:"trustly",MAXIMA:"maxima",BOLETO:"boleto",OXXO:"oxxo"},i={GOLD:"gold",BLUE:"blue",SILVER:"silver",BLACK:"black",DARKBLUE:"darkblue",WHITE:"white",TRANSPARENT:"transparent"},c={BLUE:"blue",WHITE:"white",BLACK:"black",ANY:"any"},u={TINY:"tiny",SMALL:"small",MEDIUM:"medium",LARGE:"large",HUGE:"huge",RESPONSIVE:"responsive"},s={BLACK:"black",BLUE:"blue"},y={PILL:"pill",RECT:"rect"},g={BRANDED:"branded",UNBRANDED:"unbranded"},d={HORIZONTAL:"horizontal",VERTICAL:"vertical"},h={SINGLE:"single",MULTIPLE:"multiple"},w={PP:"pp",PAYPAL:"paypal",VENMO:"venmo",ITAU:"itau",CREDIT:"credit",IDEAL:"ideal",ELV:"elv",BANCONTACT:"bancontact",GIROPAY:"giropay",SOFORT:"sofort",EPS:"eps",MYBANK:"mybank",P24:"p24",PAYU:"payu",VERKKOPANKKI:"verkkopankki",BLIK:"blik",TRUSTLY:"trustly",MAXIMA:"maxima",BOLETO:"boleto",OXXO:"oxxo"},f={BLACK:"black",WHITE:"white"},m={PAYPAL:"paypal",VENMO:"venmo",ITAU:"itau",CREDIT:"credit",CARD:"card",IDEAL:"ideal",ELV:"elv",BANCONTACT:"bancontact",GIROPAY:"giropay",SOFORT:"sofort",EPS:"eps",MYBANK:"mybank",P24:"p24",ZIMPLER:"zimpler",PAYU:"payu",VERKKOPANKKI:"verkkopankki",BLIK:"blik",TRUSTLY:"trustly",MAXIMA:"maxima",BOLETO:"boleto",OXXO:"oxxo"},C={VISA:"visa",MASTERCARD:"mastercard",AMEX:"amex",DISCOVER:"discover",SWITCH:"switch",MAESTRO:"maestro",HIPER:"hiper",ELO:"elo",JCB:"jcb",CUP:"cup",COFINOGA:"cofinoga",COFIDIS:"cofidis",CETELEM:"cetelem",CBNATIONALE:"cbnationale"},v={PRIMARY:"The funding source is the primary source",NOT_ENABLED:"The funding source is not currently enabled for use",SECONDARY_DISALLOWED:"The funding source is disallowed as a secondary button",OPT_OUT:"The funding source was disallowed in funding.disallowed",OPT_IN:"The funding source was allowed in funding.allowed",DISALLOWED_COUNTRY:"The funding source is not enabled for the current locale",DEFAULT_COUNTRY:"The funding source is enabled by default for the current locale",DEFAULT:"The funding source is enabled by default for all users",REMEMBERED:"The funding source was remembered for the current user",NEED_OPT_IN:"The funding source needs to be allowed in funding.allowed",COMMIT_NOT_SET:"The funding source is not enabled when commit is not set as true",INVALID_ENV:"The funding source is not supported in this environment"},b=[C.VISA,C.MASTERCARD,C.AMEX,C.DISCOVER,C.SWITCH,C.MAESTRO,C.HIPER,C.ELO,C.JCB,C.CUP,C.COFINOGA,C.COFIDIS,C.CETELEM,C.CBNATIONALE],P={LOCAL:"local",STAGE:"stage",SANDBOX:"sandbox",PRODUCTION:"production",TEST:"test",DEMO:"demo"},L={ALL:"all",REMEMBERED:"remembered"},E={MANUAL:"manual",BUTTON_FACTORY:"button_factory"},O={DEBUG:"debug",INFO:"info",WARN:"warn",ERROR:"error"},_={EC_TOKEN:"ec_token",BA_TOKEN:"ba_token",PAY_ID:"pay_id"},T={BUTTON:"data-button",FUNDING_SOURCE:"data-funding-source",CARD:"data-card",VERSION:"data-version",LAYOUT:"data-layout",SIZE:"data-size"},A={DESKTOP:"desktop",MOBILE:"mobile"},N={KEY:{FEED:"feed_name",STATE:"state_name",TRANSITION:"transition_name",BUTTON_TYPE:"button_type",SESSION_UID:"page_session_id",BUTTON_SESSION_UID:"button_session_id",TOKEN:"token",CONTEXT_ID:"context_id",CONTEXT_TYPE:"context_type",REFERER:"referer_url",PAY_ID:"pay_id",SELLER_ID:"seller_id",DATA_SOURCE:"serverside_data_source",BUTTON_SOURCE:"button_source",ERROR_CODE:"ext_error_code",ERROR_DESC:"ext_error_desc",PAGE_LOAD_TIME:"page_load_time",EXPERIMENT_NAME:"pxp_exp_id",TREATMENT_NAME:"pxp_trtmnt_id",TRANSITION_TIME:"transition_time",FUNDING_LIST:"eligible_payment_methods",FUNDING_COUNT:"eligible_payment_count",CHOSEN_FUNDING:"selected_payment_method",BUTTON_LAYOUT:"button_layout",BUTTON_COLOR:"button_color",BUTTON_SIZE:"button_size",BUTTON_SHAPE:"button_shape",BUTTON_LABEL:"button_label",BUTTON_WIDTH:"button_width",VERSION:"checkoutjs_version",MAX_BUTTONS:"max_buttons",FUNDING_REMEMBERED:"funding_remembered",BUTTON_TAGLINE_ENABLED:"button_tagline_enabled",RESPONSE_DURATION:"response_duration",PAYMENT_FLOW:"payment_flow",BUTTON_VERSION:"button_version"},BUTTON_TYPE:{IFRAME:"iframe",HTML:"html",CUSTOM:"custom"},DATA_SOURCE:{CHECKOUT:"checkout"},CONTEXT_TYPE:(t={BUTTON_SESSION_ID:"button_session_id"},t[_.PAY_ID]="Pay-ID",t[_.EC_TOKEN]="EC-Token",t[_.BA_TOKEN]="EC-Token",t),FEED:{CHECKOUTJS:"checkoutjs"},STATE:{LOAD:"checkoutjs_load",BUTTON:"checkoutjs_button",CHECKOUT:"checkoutjs_checkout",PPTM:"checkoutjs_pptm"},TRANSITION:{SCRIPT_LOAD:"process_script_load",BUTTON_RENDER:"process_button_render",BUTTON_LOAD:"process_button_load",BUTTON_CLICK:"process_button_click",BUTTON_RENDER_INTRANET_MODE:"process_button_render_intranet_mode",BUTTON_CLICK_INTRANET_MODE:"process_button_click_intranet_mode",CREATE_PAYMENT:"process_create_payment",RECIEVE_PAYMENT:"process_recieve_payment",CHECKOUT_INIT:"process_checkout_init",CHECKOUT_AUTHORIZE:"process_checkout_authorize",CHECKOUT_SHIPPING_CHANGE:"process_checkout_shipping_change",CHECKOUT_CANCEL:"process_checkout_cancel",CHECKOUT_ERROR:"process_checkout_error",EXTERNAL_EXPERIMENT:"process_external_experiment",EXTERNAL_EXPERIMENT_COMPLETE:"process_external_experiment_complete",PPTM_LOAD:"process_pptm_load",PPTM_LOADED:"process_pptm_loaded"}},k={AD:"AD",AE:"AE",AG:"AG",AI:"AI",AL:"AL",AM:"AM",AN:"AN",AO:"AO",AR:"AR",AT:"AT",AU:"AU",AW:"AW",AZ:"AZ",BA:"BA",BB:"BB",BE:"BE",BF:"BF",BG:"BG",BH:"BH",BI:"BI",BJ:"BJ",BM:"BM",BN:"BN",BO:"BO",BR:"BR",BS:"BS",BT:"BT",BW:"BW",BY:"BY",BZ:"BZ",C2:"C2",CA:"CA",CD:"CD",CG:"CG",CH:"CH",CI:"CI",CK:"CK",CL:"CL",CM:"CM",CN:"CN",CO:"CO",CR:"CR",CV:"CV",CY:"CY",CZ:"CZ",DE:"DE",DJ:"DJ",DK:"DK",DM:"DM",DO:"DO",DZ:"DZ",EC:"EC",EE:"EE",EG:"EG",ER:"ER",ES:"ES",ET:"ET",FI:"FI",FJ:"FJ",FK:"FK",FM:"FM",FO:"FO",FR:"FR",GA:"GA",GB:"GB",GD:"GD",GE:"GE",GF:"GF",GI:"GI",GL:"GL",GM:"GM",GN:"GN",GP:"GP",GR:"GR",GT:"GT",GW:"GW",GY:"GY",HK:"HK",HN:"HN",HR:"HR",HU:"HU",ID:"ID",IE:"IE",IL:"IL",IN:"IN",IS:"IS",IT:"IT",JM:"JM",JO:"JO",JP:"JP",KE:"KE",KG:"KG",KH:"KH",KI:"KI",KM:"KM",KN:"KN",KR:"KR",KW:"KW",KY:"KY",KZ:"KZ",LA:"LA",LC:"LC",LI:"LI",LK:"LK",LS:"LS",LT:"LT",LU:"LU",LV:"LV",MA:"MA",MC:"MC",MD:"MD",ME:"ME",MG:"MG",MH:"MH",MK:"MK",ML:"ML",MN:"MN",MQ:"MQ",MR:"MR",MS:"MS",MT:"MT",MU:"MU",MV:"MV",MW:"MW",MX:"MX",MY:"MY",MZ:"MZ",NA:"NA",NC:"NC",NE:"NE",NF:"NF",NG:"NG",NI:"NI",NL:"NL",NO:"NO",NP:"NP",NR:"NR",NU:"NU",NZ:"NZ",OM:"OM",PA:"PA",PE:"PE",PF:"PF",PG:"PG",PH:"PH",PL:"PL",PM:"PM",PN:"PN",PT:"PT",PW:"PW",PY:"PY",QA:"QA",RE:"RE",RO:"RO",RS:"RS",RU:"RU",RW:"RW",SA:"SA",SB:"SB",SC:"SC",SE:"SE",SG:"SG",SH:"SH",SI:"SI",SJ:"SJ",SK:"SK",SL:"SL",SM:"SM",SN:"SN",SO:"SO",SR:"SR",ST:"ST",SV:"SV",SZ:"SZ",TC:"TC",TD:"TD",TG:"TG",TH:"TH",TJ:"TJ",TM:"TM",TN:"TN",TO:"TO",TR:"TR",TT:"TT",TV:"TV",TW:"TW",TZ:"TZ",UA:"UA",UG:"UG",US:"US",UY:"UY",VA:"VA",VC:"VC",VE:"VE",VG:"VG",VN:"VN",VU:"VU",WF:"WF",WS:"WS",YE:"YE",YT:"YT",ZA:"ZA",ZM:"ZM",ZW:"ZW"},B={AR:"ar",CS:"cs",DA:"da",DE:"de",EL:"el",EN:"en",ES:"es",FI:"fi",FR:"fr",HE:"he",HU:"hu",ID:"id",IT:"it",JA:"ja",KO:"ko",NL:"nl",NO:"no",PL:"pl",PT:"pt",RU:"ru",SK:"sk",SV:"sv",TH:"th",TR:"tr",ZH:"zh"},M=((r={})[B.AR]=k.SA,r[B.CS]=k.CZ,r[B.DA]=k.DK,r[B.DE]=k.DE,r[B.EL]=k.GR,r[B.EN]=k.US,r[B.ES]=k.ES,r[B.FI]=k.FI,r[B.FR]=k.FR,r[B.HE]=k.IL,r[B.HU]=k.HU,r[B.ID]=k.ID,r[B.IT]=k.IT,r[B.JA]=k.JP,r[B.KO]=k.KR,r[B.NL]=k.NL,r[B.NO]=k.NO,r[B.PL]=k.PL,r[B.PT]=k.PT,r[B.RU]=k.RU,r[B.SK]=k.SK,r[B.SV]=k.SE,r[B.TH]=k.TH,r[B.TR]=k.TR,r[B.ZH]=k.CN,r),S=[k.BR,k.MX],I={BR:[2,3,4,5,6,7,8,9,10,11,12],MX:[3,6,9,12]},j=((n={})[k.AD]=[B.EN,B.FR,B.ES,B.ZH],n[k.AE]=[B.EN,B.FR,B.ES,B.ZH,B.AR],n[k.AG]=[B.EN,B.FR,B.ES,B.ZH],n[k.AI]=[B.EN,B.FR,B.ES,B.ZH],n[k.AL]=[B.EN],n[k.AM]=[B.EN,B.FR,B.ES,B.ZH],n[k.AN]=[B.EN,B.FR,B.ES,B.ZH],n[k.AO]=[B.EN,B.FR,B.ES,B.ZH],n[k.AR]=[B.ES,B.EN],n[k.AT]=[B.DE,B.EN],n[k.AU]=[B.EN],n[k.AW]=[B.EN,B.FR,B.ES,B.ZH],n[k.AZ]=[B.EN,B.FR,B.ES,B.ZH],n[k.BA]=[B.EN],n[k.BB]=[B.EN,B.FR,B.ES,B.ZH],n[k.BE]=[B.EN,B.NL,B.FR],n[k.BF]=[B.FR,B.EN,B.ES,B.ZH],n[k.BG]=[B.EN],n[k.BH]=[B.AR,B.EN,B.FR,B.ES,B.ZH],n[k.BI]=[B.FR,B.EN,B.ES,B.ZH],n[k.BJ]=[B.FR,B.EN,B.ES,B.ZH],n[k.BM]=[B.EN,B.FR,B.ES,B.ZH],n[k.BN]=[B.EN],n[k.BO]=[B.ES,B.EN,B.FR,B.ZH],n[k.BR]=[B.PT,B.EN],n[k.BS]=[B.EN,B.FR,B.ES,B.ZH],n[k.BT]=[B.EN],n[k.BW]=[B.EN,B.FR,B.ES,B.ZH],n[k.BY]=[B.EN],n[k.BZ]=[B.EN,B.ES,B.FR,B.ZH],n[k.C2]=[B.ZH,B.EN],n[k.CA]=[B.EN,B.FR],n[k.CD]=[B.FR,B.EN,B.ES,B.ZH],n[k.CG]=[B.EN,B.FR,B.ES,B.ZH],n[k.CH]=[B.DE,B.FR,B.EN],n[k.CI]=[B.FR,B.EN],n[k.CK]=[B.EN,B.FR,B.ES,B.ZH],n[k.CL]=[B.ES,B.EN,B.FR,B.ZH],n[k.CM]=[B.FR,B.EN],n[k.CN]=[B.ZH],n[k.CO]=[B.ES,B.EN,B.FR,B.ZH],n[k.CR]=[B.ES,B.EN,B.FR,B.ZH],n[k.CV]=[B.EN,B.FR,B.ES,B.ZH],n[k.CY]=[B.EN],n[k.CZ]=[B.CS,B.EN,B.FR,B.ES,B.ZH],n[k.DE]=[B.DE,B.EN],n[k.DJ]=[B.FR,B.EN,B.ES,B.ZH],n[k.DK]=[B.DA,B.EN],n[k.DM]=[B.EN,B.FR,B.ES,B.ZH],n[k.DO]=[B.ES,B.EN,B.FR,B.ZH],n[k.DZ]=[B.AR,B.EN,B.FR,B.ES,B.ZH],n[k.EC]=[B.ES,B.EN,B.FR,B.ZH],n[k.EE]=[B.EN,B.RU,B.FR,B.ES,B.ZH],n[k.EG]=[B.AR,B.EN,B.FR,B.ES,B.ZH],n[k.ER]=[B.EN,B.FR,B.ES,B.ZH],n[k.ES]=[B.ES,B.EN],n[k.ET]=[B.EN,B.FR,B.ES,B.ZH],n[k.FI]=[B.FI,B.EN,B.FR,B.ES,B.ZH],n[k.FJ]=[B.EN,B.FR,B.ES,B.ZH],n[k.FK]=[B.EN,B.FR,B.ES,B.ZH],n[k.FM]=[B.EN],n[k.FO]=[B.DA,B.EN,B.FR,B.ES,B.ZH],n[k.FR]=[B.FR,B.EN],n[k.GA]=[B.FR,B.EN,B.ES,B.ZH],n[k.GB]=[B.EN],n[k.GD]=[B.EN,B.FR,B.ES,B.ZH],n[k.GE]=[B.EN,B.FR,B.ES,B.ZH],n[k.GF]=[B.EN,B.FR,B.ES,B.ZH],n[k.GI]=[B.EN,B.FR,B.ES,B.ZH],n[k.GL]=[B.DA,B.EN,B.FR,B.ES,B.ZH],n[k.GM]=[B.EN,B.FR,B.ES,B.ZH],n[k.GN]=[B.FR,B.EN,B.ES,B.ZH],n[k.GP]=[B.EN,B.FR,B.ES,B.ZH],n[k.GR]=[B.EL,B.EN,B.FR,B.ES,B.ZH],n[k.GT]=[B.ES,B.EN,B.FR,B.ZH],n[k.GW]=[B.EN,B.FR,B.ES,B.ZH],n[k.GY]=[B.EN,B.FR,B.ES,B.ZH],n[k.HK]=[B.EN,B.ZH],n[k.HN]=[B.ES,B.EN,B.FR,B.ZH],n[k.HR]=[B.EN],n[k.HU]=[B.HU,B.EN,B.FR,B.ES,B.ZH],n[k.ID]=[B.ID,B.EN],n[k.IE]=[B.EN,B.FR,B.ES,B.ZH],n[k.IL]=[B.HE,B.EN],n[k.IN]=[B.EN],n[k.IS]=[B.EN],n[k.IT]=[B.IT,B.EN],n[k.JM]=[B.EN,B.ES,B.FR,B.ZH],n[k.JO]=[B.AR,B.EN,B.FR,B.ES,B.ZH],n[k.JP]=[B.JA,B.EN],n[k.KE]=[B.EN,B.FR,B.ES,B.ZH],n[k.KG]=[B.EN,B.FR,B.ES,B.ZH],n[k.KH]=[B.EN],n[k.KI]=[B.EN,B.FR,B.ES,B.ZH],n[k.KM]=[B.FR,B.EN,B.ES,B.ZH],n[k.KN]=[B.EN,B.FR,B.ES,B.ZH],n[k.KR]=[B.KO,B.EN],n[k.KW]=[B.AR,B.EN,B.FR,B.ES,B.ZH],n[k.KY]=[B.EN,B.FR,B.ES,B.ZH],n[k.KZ]=[B.EN,B.FR,B.ES,B.ZH],n[k.LA]=[B.EN],n[k.LC]=[B.EN,B.FR,B.ES,B.ZH],n[k.LI]=[B.EN,B.FR,B.ES,B.ZH],n[k.LK]=[B.EN],n[k.LS]=[B.EN,B.FR,B.ES,B.ZH],n[k.LT]=[B.EN,B.RU,B.FR,B.ES,B.ZH],n[k.LU]=[B.EN,B.DE,B.FR,B.ES,B.ZH],n[k.LV]=[B.EN,B.RU,B.FR,B.ES,B.ZH],n[k.MA]=[B.AR,B.EN,B.FR,B.ES,B.ZH],n[k.MC]=[B.FR,B.EN],n[k.MD]=[B.EN],n[k.ME]=[B.EN],n[k.MG]=[B.EN,B.FR,B.ES,B.ZH],n[k.MH]=[B.EN,B.FR,B.ES,B.ZH],n[k.MK]=[B.EN],n[k.ML]=[B.FR,B.EN,B.ES,B.ZH],n[k.MN]=[B.EN],n[k.MQ]=[B.EN,B.FR,B.ES,B.ZH],n[k.MR]=[B.EN,B.FR,B.ES,B.ZH],n[k.MS]=[B.EN,B.FR,B.ES,B.ZH],n[k.MT]=[B.EN],n[k.MU]=[B.EN,B.FR,B.ES,B.ZH],n[k.MV]=[B.EN],n[k.MW]=[B.EN,B.FR,B.ES,B.ZH],n[k.MX]=[B.ES,B.EN],n[k.MY]=[B.EN],n[k.MZ]=[B.EN,B.FR,B.ES,B.ZH],n[k.NA]=[B.EN,B.FR,B.ES,B.ZH],n[k.NC]=[B.EN,B.FR,B.ES,B.ZH],n[k.NE]=[B.FR,B.EN,B.ES,B.ZH],n[k.NF]=[B.EN,B.FR,B.ES,B.ZH],n[k.NG]=[B.EN],n[k.NI]=[B.ES,B.EN,B.FR,B.ZH],n[k.NL]=[B.NL,B.EN],n[k.NO]=[B.NO,B.EN],n[k.NP]=[B.EN],n[k.NR]=[B.EN,B.FR,B.ES,B.ZH],n[k.NU]=[B.EN,B.FR,B.ES,B.ZH],n[k.NZ]=[B.EN,B.FR,B.ES,B.ZH],n[k.OM]=[B.AR,B.EN,B.FR,B.ES,B.ZH],n[k.PA]=[B.ES,B.EN,B.FR,B.ZH],n[k.PE]=[B.ES,B.EN,B.FR,B.ZH],n[k.PF]=[B.EN,B.FR,B.ES,B.ZH],n[k.PG]=[B.EN,B.FR,B.ES,B.ZH],n[k.PH]=[B.EN],n[k.PL]=[B.PL,B.EN],n[k.PM]=[B.EN,B.FR,B.ES,B.ZH],n[k.PN]=[B.EN,B.FR,B.ES,B.ZH],n[k.PT]=[B.PT,B.EN],n[k.PW]=[B.EN,B.FR,B.ES,B.ZH],n[k.PY]=[B.ES,B.EN],n[k.QA]=[B.EN,B.FR,B.ES,B.ZH,B.AR],n[k.RE]=[B.EN,B.FR,B.ES,B.ZH],n[k.RO]=[B.EN,B.FR,B.ES,B.ZH],n[k.RS]=[B.EN,B.FR,B.ES,B.ZH],n[k.RU]=[B.RU,B.EN],n[k.RW]=[B.FR,B.EN,B.ES,B.ZH],n[k.SA]=[B.AR,B.EN,B.FR,B.ES,B.ZH],n[k.SB]=[B.EN,B.FR,B.ES,B.ZH],n[k.SC]=[B.FR,B.EN,B.ES,B.ZH],n[k.SE]=[B.SV,B.EN],n[k.SG]=[B.EN],n[k.SH]=[B.EN,B.FR,B.ES,B.ZH],n[k.SI]=[B.EN,B.FR,B.ES,B.ZH],n[k.SJ]=[B.EN,B.FR,B.ES,B.ZH],n[k.SK]=[B.SK,B.EN,B.FR,B.ES,B.ZH],n[k.SL]=[B.EN,B.FR,B.ES,B.ZH],n[k.SM]=[B.EN,B.FR,B.ES,B.ZH],n[k.SN]=[B.FR,B.EN,B.ES,B.ZH],n[k.SO]=[B.EN,B.FR,B.ES,B.ZH],n[k.SR]=[B.EN,B.FR,B.ES,B.ZH],n[k.ST]=[B.EN,B.FR,B.ES,B.ZH],n[k.SV]=[B.ES,B.EN,B.FR,B.ZH],n[k.SZ]=[B.EN,B.FR,B.ES,B.ZH],n[k.TC]=[B.EN,B.FR,B.ES,B.ZH],n[k.TD]=[B.FR,B.EN,B.ES,B.ZH],n[k.TG]=[B.FR,B.EN,B.ES,B.ZH],n[k.TH]=[B.TH,B.EN],n[k.TJ]=[B.EN,B.FR,B.ES,B.ZH],n[k.TM]=[B.EN,B.FR,B.ES,B.ZH],n[k.TN]=[B.AR,B.EN,B.FR,B.ES,B.ZH],n[k.TO]=[B.EN],n[k.TR]=[B.TR,B.EN],n[k.TT]=[B.EN,B.FR,B.ES,B.ZH],n[k.TV]=[B.EN,B.FR,B.ES,B.ZH],n[k.TW]=[B.ZH,B.EN],n[k.TZ]=[B.EN,B.FR,B.ES,B.ZH],n[k.UA]=[B.EN,B.RU,B.FR,B.ES,B.ZH],n[k.UG]=[B.EN,B.FR,B.ES,B.ZH],n[k.US]=[B.EN,B.FR,B.ES,B.ZH],n[k.UY]=[B.ES,B.EN,B.FR,B.ZH],n[k.VA]=[B.EN,B.FR,B.ES,B.ZH],n[k.VC]=[B.EN,B.FR,B.ES,B.ZH],n[k.VE]=[B.ES,B.EN,B.FR,B.ZH],n[k.VG]=[B.EN,B.FR,B.ES,B.ZH],n[k.VN]=[B.EN],n[k.VU]=[B.EN,B.FR,B.ES,B.ZH],n[k.WF]=[B.EN,B.FR,B.ES,B.ZH],n[k.WS]=[B.EN],n[k.YE]=[B.AR,B.EN,B.FR,B.ES,B.ZH],n[k.YT]=[B.EN,B.FR,B.ES,B.ZH],n[k.ZA]=[B.EN,B.FR,B.ES,B.ZH],n[k.ZM]=[B.EN,B.FR,B.ES,B.ZH],n[k.ZW]=[B.EN],n);a.d(o,"m",(function(){return l})),a.d(o,"f",(function(){return p})),a.d(o,"e",(function(){return i})),a.d(o,"i",(function(){return c})),a.d(o,"l",(function(){return u})),a.d(o,"n",(function(){return s})),a.d(o,"k",(function(){return y})),a.d(o,"d",(function(){return g})),a.d(o,"g",(function(){return d})),a.d(o,"j",(function(){return h})),a.d(o,"h",(function(){return w})),a.d(o,"q",(function(){return f})),a.d(o,"v",(function(){return m})),a.d(o,"o",(function(){return C})),a.d(o,"w",(function(){return v})),a.d(o,"p",(function(){return b})),a.d(o,"u",(function(){return N})),a.d(o,"r",(function(){return k})),a.d(o,"x",(function(){return B})),a.d(o,"y",(function(){return M})),a.d(o,"a",(function(){return S})),a.d(o,"b",(function(){return I})),a.d(o,"t",(function(){return P})),a.d(o,"F",(function(){return L})),a.d(o,"E",(function(){return E})),a.d(o,"A",(function(){return O})),a.d(o,"B",(function(){return _})),a.d(o,"D",(function(){return"xo-pptm"})),a.d(o,"c",(function(){return T})),a.d(o,"C",(function(){return A})),a.d(o,"s",(function(){return"default"})),a.d(o,"z",(function(){return j}))},function(e,o,a){"use strict";a.d(o,"a",(function(){return p})),a.d(o,"c",(function(){return i})),a.d(o,"b",(function(){return c}));var t=a(22),r=a(12);function n(e){return void 0===e&&(e=""),e.toString().replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'").replace(/\//g,"/")}var l=function(){function e(e,o,a){this.name=void 0,this.props=void 0,this.children=void 0,this.name=e,this.props=o,this.children=a}var o=e.prototype;return o.toString=function(){return"<"+this.name+(this.props?" ":"")+(this.props?this.propsToString():"")+">"+this.childrenToString()+""},o.propsToString=function(){var e=this.props;return e?Object.keys(e).filter((function(o){return"innerHTML"!==o&&e&&!1!==e[o]})).map((function(o){return e&&!0===e[o]?""+n(o):e?n(o)+'="'+n(e[o])+'"':""})).join(" "):""},o.childrenToString=function(){if(this.props&&this.props.innerHTML)return this.props.innerHTML;if(!this.children)return"";var o="";return function a(t){for(var r=0;r2?a-2:0),r=2;r/.test(r)?o.break(r):o.text(r):r}));return new p(a)}},function(e,o,a){"use strict";function t(e){try{if(!e)return!1;if("undefined"!=typeof Promise&&e instanceof Promise)return!0;if("undefined"!=typeof window&&"function"==typeof window.Window&&e instanceof window.Window)return!1;if("undefined"!=typeof window&&"function"==typeof window.constructor&&e instanceof window.constructor)return!1;var o={}.toString;if(o){var a=o.call(e);if("[object Window]"===a||"[object global]"===a||"[object DOMWindow]"===a)return!1}if("function"==typeof e.then)return!0}catch(e){return!1}return!1}var r,n=[],l=[],p=0;function i(){if(!p&&r){var e=r;r=null,e.resolve()}}function c(){p+=1}function u(){p-=1,i()}var s=function(){function e(e){var o=this;if(this.resolved=void 0,this.rejected=void 0,this.errorHandled=void 0,this.value=void 0,this.error=void 0,this.handlers=void 0,this.dispatching=void 0,this.stack=void 0,this.resolved=!1,this.rejected=!1,this.errorHandled=!1,this.handlers=[],e){var a,t,r=!1,n=!1,l=!1;c();try{e((function(e){l?o.resolve(e):(r=!0,a=e)}),(function(e){l?o.reject(e):(n=!0,t=e)}))}catch(e){return u(),void this.reject(e)}u(),l=!0,r?this.resolve(a):n&&this.reject(t)}}var o=e.prototype;return o.resolve=function(e){if(this.resolved||this.rejected)return this;if(t(e))throw new Error("Can not resolve promise with another promise");return this.resolved=!0,this.value=e,this.dispatch(),this},o.reject=function(e){var o=this;if(this.resolved||this.rejected)return this;if(t(e))throw new Error("Can not reject promise with another promise");if(!e){var a=e&&"function"==typeof e.toString?e.toString():{}.toString.call(e);e=new Error("Expected reject to be called with Error, got "+a)}return this.rejected=!0,this.error=e,this.errorHandled||setTimeout((function(){o.errorHandled||function(e,o){if(-1===n.indexOf(e)){n.push(e),setTimeout((function(){throw e}),1);for(var a=0;a'}),3!==function(e,o,a){}.bind({a:1}).length&&Object(l.q)("function_bind_arrity_overwritten"),window.opener&&window.parent!==window&&Object(l.q)("window_has_opener_and_parent"),window.name&&0===window.name.indexOf("__prerender")&&Object(l.q)("prerender_running_checkoutjs");var e={};(function(){return this}).bind(e)()!==e&&Object(l.q)("function_bind_broken"),window.Window&&window.constructor&&window.Window!==window.constructor&&Object(l.q)("window_constructor_does_not_match_window"),Object.assign&&JSON.stringify({a:1,b:2,c:3})!=JSON.stringify({a:1,b:2,c:3})&&Object(l.q)("object_assign_broken")}var O=a(11),_=a(2),T={CONTENT_TYPE:"content-type",ACCEPT:"accept"},A=[],N=[];function k(e){var o=e.url,a=e.method,t=void 0===a?"get":a,r=e.headers,n=void 0===r?{}:r,l=e.json,p=e.data,i=e.body,c=e.win,u=void 0===c?window:c,s=e.timeout,y=void 0===s?0:s;return"/demo/checkout/api/braintree/client-token/"===o?_.a.resolve("eyJ2ZXJzaW9uIjoyLCJhdXRob3JpemF0aW9uRmluZ2VycHJpbnQiOiJjMDFhZmRkM2Y1OTJmNWVhNTNlMzE5MWQwYmIyMWVjYjM5NzNlZGM1MzkwNDZiMjJmNTA2ODEyNzIzZmRlMTJifGNsaWVudF9pZD1jbGllbnRfaWQkc2FuZGJveCQ0ZHByYmZjNnBoNTk1Y2NqXHUwMDI2Y3JlYXRlZF9hdD0yMDE3LTA0LTI2VDIzOjI2OjU5Ljg3OTA3ODYwNiswMDAwXHUwMDI2bWVyY2hhbnRfaWQ9M3cydHR2d2QyNDY1NDhoZCIsImNvbmZpZ1VybCI6Imh0dHBzOi8vYXBpLnNhbmRib3guYnJhaW50cmVlZ2F0ZXdheS5jb206NDQzL21lcmNoYW50cy8zdzJ0dHZ3ZDI0NjU0OGhkL2NsaWVudF9hcGkvdjEvY29uZmlndXJhdGlvbiIsImNoYWxsZW5nZXMiOltdLCJlbnZpcm9ubWVudCI6InNhbmRib3giLCJjbGllbnRBcGlVcmwiOiJodHRwczovL2FwaS5zYW5kYm94LmJyYWludHJlZWdhdGV3YXkuY29tOjQ0My9tZXJjaGFudHMvM3cydHR2d2QyNDY1NDhoZC9jbGllbnRfYXBpIiwiYXNzZXRzVXJsIjoiaHR0cHM6Ly9hc3NldHMuYnJhaW50cmVlZ2F0ZXdheS5jb20iLCJhdXRoVXJsIjoiaHR0cHM6Ly9hdXRoLnZlbm1vLnNhbmRib3guYnJhaW50cmVlZ2F0ZXdheS5jb20iLCJhbmFseXRpY3MiOnsidXJsIjoiaHR0cHM6Ly9jbGllbnQtYW5hbHl0aWNzLnNhbmRib3guYnJhaW50cmVlZ2F0ZXdheS5jb20vM3cydHR2d2QyNDY1NDhoZCJ9LCJ0aHJlZURTZWN1cmVFbmFibGVkIjpmYWxzZSwicGF5cGFsRW5hYmxlZCI6dHJ1ZSwicGF5cGFsIjp7ImRpc3BsYXlOYW1lIjoiYmFyY28uMDMtZmFjaWxpdGF0b3JAZ21haWwuY29tIiwiY2xpZW50SWQiOiJBV3VZdnFnMGtaN2Y5S0V4TVpqZU53T3RjQV8yZVhnOWpMZy1QSnBGX0pnYk44M0YyVml5aEdnV2JCNDg4RGU3MFpucGRBZEI2TUNqekNqSyIsInByaXZhY3lVcmwiOiJodHRwczovL2V4YW1wbGUuY29tIiwidXNlckFncmVlbWVudFVybCI6Imh0dHBzOi8vZXhhbXBsZS5jb20iLCJiYXNlVXJsIjoiaHR0cHM6Ly9hc3NldHMuYnJhaW50cmVlZ2F0ZXdheS5jb20iLCJhc3NldHNVcmwiOiJodHRwczovL2NoZWNrb3V0LnBheXBhbC5jb20iLCJkaXJlY3RCYXNlVXJsIjpudWxsLCJhbGxvd0h0dHAiOnRydWUsImVudmlyb25tZW50Tm9OZXR3b3JrIjpmYWxzZSwiZW52aXJvbm1lbnQiOiJvZmZsaW5lIiwidW52ZXR0ZWRNZXJjaGFudCI6ZmFsc2UsImJyYWludHJlZUNsaWVudElkIjoibWFzdGVyY2xpZW50MyIsImJpbGxpbmdBZ3JlZW1lbnRzRW5hYmxlZCI6dHJ1ZSwibWVyY2hhbnRBY2NvdW50SWQiOiJVU0QiLCJjdXJyZW5jeUlzb0NvZGUiOiJVU0QifSwiY29pbmJhc2VFbmFibGVkIjpmYWxzZSwibWVyY2hhbnRJZCI6IjN3MnR0dndkMjQ2NTQ4aGQiLCJ2ZW5tbyI6Im9mZiJ9"):new _.a((function(e,a){if(l&&p||l&&i||p&&l)throw new Error("Only options.json or options.data or options.body should be passed");for(var r={},c=0,s=Object.keys(n);c=400){var c="Request to "+t.toLowerCase()+" "+o+" failed with "+this.status+" error. Correlation id: "+n;return i&&("object"==typeof i&&null!==i&&(i=JSON.stringify(i,null,4)),c=c+"\n\n"+i+"\n"),a(new Error(c))}return e(i)}),!1),C.addEventListener("error",(function(e){var r=this.getResponseHeader("paypal-debug-id");a(new Error("Request to "+t.toLowerCase()+" "+o+" failed: "+e.toString()+". Correlation id: "+r))}),!1),C.open(t,o,!0),r)r.hasOwnProperty(v)&&C.setRequestHeader(v,r[v]);l?i=JSON.stringify(l):p&&(i=Object.keys(p).map((function(e){return encodeURIComponent(e)+"="+(p?encodeURIComponent(p[e]):"")})).join("&")),C.timeout=y,C.ontimeout=function(){a(new Error("Request to "+t.toLowerCase()+" "+o+" has timed out"))},C.send(i)}))}Object(l.c)((function(){return{prev_corr_ids:N.join(",")}})),k.get=function(e,o){return void 0===o&&(o={}),k(Object(O.a)({method:"get",url:e},o))},k.post=function(e,o,a){return void 0===a&&(a={}),k(Object(O.a)({method:"post",url:e,data:o},a))},k.addHeaderBuilder=function(e){A.push(e)},a(29);var B={TEST:"test",CONTROL:"control",THROTTLE:"throttle"};function M(e,o,a){void 0===a&&(a=!0);var t,r=Object(u.e)(),n=a?function(e){return Object(u.f)((function(o){return o.throttlePercentiles=o.throttlePercentiles||{},o.throttlePercentiles[e]=o.throttlePercentiles[e]||Math.floor(100*Math.random()),o.throttlePercentiles[e]}))}(e):Math.floor(100*Math.random()),p=e+"_"+(t=n=50||o<=n&&n<2*o?B.CONTROL:B.THROTTLE),i=!1,s=!1;try{window.localStorage&&window.localStorage.getItem(e)&&(s=!0)}catch(e){}return{isEnabled:function(){return t===B.TEST||s},isDisabled:function(){return t!==B.TEST&&!s},getTreatment:function(){return p},log:function(o,a){var t;if(void 0===a&&(a={}),!i)return this;var n=e+"_"+p+"_"+o;return Object(l.k)(n,Object(O.a)({},a,{expuid:r})),Object(l.p)(Object(O.a)(((t={})[c.u.KEY.EXPERIMENT_NAME]=e,t[c.u.KEY.TREATMENT_NAME]=p,t),a)),Object(l.h)(),this},logStart:function(e){return void 0===e&&(e={}),i=!0,this.log("start",e)},logComplete:function(e){return void 0===e&&(e={}),i?this.log("complete",e):this}}}function S(){var e=Object(r.g)(window.location.href,/token=((EC-)?[A-Z0-9]+)/),o=Object(r.g)(window.location.href,/PayerID=([A-Z0-9]+)/);if(e&&o)return e}a(32);var I=Object(r.i)((function(){for(var e=[].slice.call(document.getElementsByTagName("script")),o=0;o3&&e()},n.send(JSON.stringify(t).replace(/&/g,"%26"))}))}(0,h.uri,e,o,a)};function v(){return C}function b(e){C=e}var P=!1;function L(e,o,a){if("undefined"!=typeof window&&window.console&&window.console.log){if(!P)return setTimeout((function(){return L(e,o,a)}),1);var t=h.logLevel;if(window.LOG_LEVEL&&(t=window.LOG_LEVEL),!(w.indexOf(e)>w.indexOf(t))){a=a||{};var r=[o];Boolean(window.document.documentMode)&&(a=JSON.stringify(a)),r.push(a),(a.error||a.warning)&&r.push("\n\n",a.error||a.warning);try{window.console[e]&&window.console[e].apply?window.console[e].apply(window.console,r):window.console.log&&window.console.log.apply&&window.console.log.apply(window.console,r)}catch(e){}}}}function E(e){var o=(void 0===e?{}:e).fireAndForget,a=void 0!==o&&o;if("undefined"!=typeof window&&h.uri&&(f.length||m.length)){for(var t={},r=0;r-1&&A()}function k(e,o,a){if("undefined"!=typeof window){h.prefix&&(o=h.prefix+"_"+o),"string"==typeof(a=a||{})?a={message:a}:a instanceof Error&&(a={error:a.stack||a.toString()});try{JSON.stringify(a)}catch(e){return}a.timestamp=Date.now();for(var t=0;t1e3&&performance.now()-(performance.timing.connectEnd-performance.timing.navigationStart)>0;function x(){return R?performance.now():Date.now()}function z(e){return{startTime:e=void 0!==e?e:x(),elapsed:function(){return parseInt(x()-e,10)},reset:function(){e=x()}}}function U(){if(R){var e=window.performance.timing;return parseInt(e.connectEnd-e.navigationStart,10)}}var F=z(),W=z(U());var H=!1;function V(e){var o,a,t;n(h,e||{}),H||(H=!0,h.logPerformance&&function(){if(!R)return S("no_performance_data");s((function(){var e={};return e.client_elapsed=F.elapsed(),R&&(e.req_elapsed=W.elapsed()),e})),new r.a((function(e){"undefined"!=typeof document&&"complete"===document.readyState&&e(),window.addEventListener("load",e)})).then((function(){var e={};["connectEnd","connectStart","domComplete","domContentLoadedEventEnd","domContentLoadedEventStart","domInteractive","domLoading","domainLookupEnd","domainLookupStart","fetchStart","loadEventEnd","loadEventStart","navigationStart","redirectEnd","redirectStart","requestStart","responseEnd","responseStart","secureConnectionStart","unloadEventEnd","unloadEventStart"].forEach((function(o){e[o]=parseInt(window.performance.timing[o],10)||0}));var o=e.connectEnd-e.navigationStart;e.connectEnd&&Object.keys(e).forEach((function(a){var t=e[a];t&&S("timing_"+a,{client_elapsed:parseInt(t-e.connectEnd-(F.startTime-o),10),req_elapsed:parseInt(t-e.connectEnd,10)})})),S("timing",e),S("memory",window.performance.memory),S("navigation",window.performance.navigation),window.performance.getEntries&&window.performance.getEntries().forEach((function(e){["link","script","img","css"].indexOf(e.initiatorType)>-1&&S(e.initiatorType,e)}))}))}(),h.heartbeat&&(a=z(),t=0,o=h.heartbeatInterval,function e(){setTimeout((function(){(function(){if(!(h.heartbeatMaxThreshold&&t>h.heartbeatMaxThreshold)){t+=1;var e=a.elapsed(),o=e-h.heartbeatInterval,r={count:t,elapsed:e};h.heartbeatTooBusy&&(r.lag=o,o>=h.heartbeatTooBusyThreshold&&S("toobusy",r)),S("heartbeat",r)}})(),e()}),o)}()),h.logUnload&&(window.addEventListener("beforeunload",(function(){S("window_beforeunload"),E({fireAndForget:!0})})),window.addEventListener("unload",(function(){S("window_unload"),E({fireAndForget:!0})}))),h.flushInterval&&setInterval(A,h.flushInterval),window.beaverLogQueue&&(window.beaverLogQueue.forEach((function(e){k(e.level,e.event,e)})),delete window.beaverLogQueue))}var G,Z=l(),K=l(),Y=h.initial_state_name;function q(){G=x()}function X(e){G=G||U();var o,a=x();void 0!==G&&(o=parseInt(a-G,0));var t="transition_"+Y+"_to_"+e;S(t,{duration:o}),D({transition:t,transition_time:o}),E(),G=a,Y=e,K=l()}function J(e){q(),X(e)}s((function(){return{windowID:Z,pageID:K}})),y((function(){return{state:"ui_"+Y}})),a.d(o,"i",(function(){return v})),a.d(o,"o",(function(){return b})),a.d(o,"j",(function(){return E})),a.d(o,"h",(function(){return A})),a.d(o,"n",(function(){return B})),a.d(o,"f",(function(){return M})),a.d(o,"k",(function(){return S})),a.d(o,"q",(function(){return I})),a.d(o,"g",(function(){return j})),a.d(o,"p",(function(){return D})),a.d(o,"l",(function(){return V})),a.d(o,"c",(function(){return s})),a.d(o,"b",(function(){return y})),a.d(o,"d",(function(){return g})),a.d(o,"a",(function(){return d})),a.d(o,"e",(function(){return h})),a.d(o,"m",(function(){return w}))},function(e,o,a){"use strict";var t=a(11),r=a(7),n=a(2),l=a(17),p=a(26);function i(e){return e.replace(/\?/g,"%3F").replace(/&/g,"%26").replace(/#/g,"%23").replace(/\+/g,"%2B")}function c(e){return e.replace(/-([a-z])/g,(function(e){return e[1].toUpperCase()}))}function u(e,o){if(!o)return e;for(var a in o)o.hasOwnProperty(a)&&(e[a]=o[a]);return e}function s(){var e="0123456789abcdef";return"xxxxxxxxxx".replace(/./g,(function(){return e.charAt(Math.floor(Math.random()*e.length))}))}function y(e,o,a){if(!o)return a;for(var t=o.split("."),r=0;r3)throw new Error("Expected only text content for "+e+" tag");j(r,a,t)}else if("iframe"===e){if(arguments.length>3)throw new Error("Expected only single child node for iframe");r.addEventListener("load",(function(){var e=r.contentWindow;if(!e)throw new Error("Expected frame to have contentWindow");"string"==typeof a?S(e,a):I(e,a)}))}else if("script"===e){if("string"!=typeof a)throw new TypeError("Expected "+e+" tag content to be string, got "+typeof a);if(arguments.length>3)throw new Error("Expected only text content for "+e+" tag");r.text=a}else for(var l=2;l=e.length?n.a.resolve(e.apply(o,a)):new n.a((function(t,r){a.push((function(e,o){if(e&&!(e instanceof Error))throw new Error("Passed non-Error object in callback: [ "+e+" ] -- callbacks should either be called with callback(new Error(...)) or callback(null, result).");return e?r(e):t(o)})),e.apply(o,a)}))}}function de(e){return function(){var o=arguments,a=this;return n.a.try((function(){return e.apply(a,o)}))}}function he(e){return"string"==typeof e&&/^[0-9]+%$/.test(e)}function we(e){return"string"==typeof e&&/^[0-9]+px$/.test(e)}function fe(e){if("number"==typeof e)return e;var o=e.match(/^([0-9]+)(px|%)$/);if(!o)throw new Error("Could not match css value from "+e);return parseInt(o[1],10)}function me(e){return fe(e)+"px"}function Ce(e){return"number"==typeof e?me(e):he(e)?e:me(e)}function ve(e,o){if("number"==typeof e)return e;if(he(e))return parseInt(o*fe(e)/100,10);if(we(e))return fe(e);throw new Error("Can not normalize dimension: "+e)}function be(e,o,a){var t=a.value;a.value=function(){return this.__memoized__=this.__memoized__||{},this.__memoized__.hasOwnProperty(o)||(this.__memoized__[o]=t.apply(this,arguments)),this.__memoized__[o]},a.value.displayName=o+":memoized"}var Pe=a(13),Le=a(5);function Ee(e){if(-1===Le.m.indexOf(e))throw new Error("Invalid logLevel: "+e);Le.e.logLevel=e,Pe.CONFIG.LOG_LEVEL=e,window.LOG_LEVEL=e}function Oe(e,o,a){void 0===a&&(a={}),Object(Le.k)("xc_"+e+"_"+o,a)}function _e(e,o,a){void 0===a&&(a={}),Object(Le.q)("xc_"+e+"_"+o,a)}function Te(e,o,a){void 0===a&&(a={}),Object(Le.g)("xc_"+e+"_"+o,a)}var Ae=a(8);function Ne(e){if(Object(r.v)(e))return e[Ae.__ZOID__]||(e[Ae.__ZOID__]={}),e[Ae.__ZOID__]}var ke=function(){var e=Ne(window);if(!e)throw new Error("Could not get local global");return e}();a.d(o,"d",(function(){return T})),a.d(o,"u",(function(){return N})),a.d(o,"n",(function(){return B})),a.d(o,"I",(function(){return M})),a.d(o,"Y",(function(){return S})),a.d(o,"X",(function(){return I})),a.d(o,"e",(function(){return R})),a.d(o,"f",(function(){return x})),a.d(o,"y",(function(){return z})),a.d(o,"b",(function(){return U})),a.d(o,"r",(function(){return H})),a.d(o,"Q",(function(){return $})),a.d(o,"x",(function(){return ee})),a.d(o,"l",(function(){return oe})),a.d(o,"P",(function(){return ae})),a.d(o,"c",(function(){return te})),a.d(o,"a",(function(){return re})),a.d(o,"L",(function(){return ne})),a.d(o,"t",(function(){return le})),a.d(o,"W",(function(){return ie})),a.d(o,"J",(function(){return ce})),a.d(o,"C",(function(){return ye})),a.d(o,"F",(function(){return b})),a.d(o,"H",(function(){return P})),a.d(o,"D",(function(){return L})),a.d(o,"i",(function(){return E})),a.d(o,"N",(function(){return O})),a.d(o,"k",(function(){return _})),a.d(o,"j",(function(){return ge})),a.d(o,"K",(function(){return de})),a.d(o,"h",(function(){return c})),a.d(o,"q",(function(){return u})),a.d(o,"U",(function(){return s})),a.d(o,"s",(function(){return y})),a.d(o,"M",(function(){return g})),a.d(o,"g",(function(){return d})),a.d(o,"m",(function(){return h})),a.d(o,"R",(function(){return m})),a.d(o,"S",(function(){return C})),a.d(o,"p",(function(){return v})),a.d(o,"A",(function(){return he})),a.d(o,"B",(function(){return we})),a.d(o,"T",(function(){return Ce})),a.d(o,"G",(function(){return ve})),a.d(o,"E",(function(){return be})),a.d(o,"O",(function(){return Ee})),a.d(o,"z",(function(){return Oe})),a.d(o,"V",(function(){return _e})),a.d(o,"o",(function(){return Te})),a.d(o,"w",(function(){return Ne})),a.d(o,"v",(function(){return ke}))},function(e,o,a){"use strict";function t(e){return"[object RegExp]"==={}.toString.call(e)}var r={MOCK:"mock:",FILE:"file:",ABOUT:"about:"},n="*",l="Call was rejected by callee.\r\n";function p(e){return void 0===e&&(e=window),e.location.protocol===r.ABOUT}function i(e){if(void 0===e&&(e=window),e)try{if(e.parent&&e.parent!==e)return e.parent}catch(e){}}function c(e){if(void 0===e&&(e=window),e&&!i(e))try{return e.opener}catch(e){}}function u(e){try{return!0}catch(e){}return!1}function s(e){void 0===e&&(e=window);var o=e.location;if(!o)throw new Error("Can not read window location");var a=o.protocol;if(!a)throw new Error("Can not read window protocol");if(a===r.FILE)return r.FILE+"//";if(a===r.ABOUT){var t=i(e);return t&&u()?s(t):r.ABOUT+"//"}var n=o.host;if(!n)throw new Error("Can not read window host");return a+"//"+n}function y(e){void 0===e&&(e=window);var o=s(e);return o&&e.mockDomain&&0===e.mockDomain.indexOf(r.MOCK)?e.mockDomain:o}function g(e){try{if(e===window)return!0}catch(e){}try{var o=Object.getOwnPropertyDescriptor(e,"location");if(o&&!1===o.enumerable)return!1}catch(e){}try{if(p(e)&&u())return!0}catch(e){}try{if(s(e)===s(window))return!0}catch(e){}return!1}function d(e){if(!g(e))return!1;try{if(e===window)return!0;if(p(e)&&u())return!0;if(y(window)===y(e))return!0}catch(e){}return!1}function h(e){if(!d(e))throw new Error("Expected window to be same domain");return e}function w(e,o){if(!e||!o)return!1;var a=i(o);return a?a===e:-1!==function(e){var o=[];try{for(;e.parent!==e;)o.push(e.parent),e=e.parent}catch(e){}return o}(o).indexOf(e)}function f(e){var o,a,t=[];try{o=e.frames}catch(a){o=e}try{a=o.length}catch(e){}if(0===a)return t;if(a){for(var r=0;r";try{JSON.stringify(o)}catch(e){return"<"+typeof o+">"}return o}))}function u(){var e=[];return{listen:function(o){return e.push(o),{cancel:function(){e.splice(e.indexOf(o),1)}}},once:function(e){var o=this.listen((function(){e.apply(null,arguments),o.cancel()}))},trigger:function(){for(var o=0;o=3)return"stringifyError stack overflow";try{if(!e)return"";if("string"==typeof e)return e;if(e instanceof Error){var a=e&&e.stack,t=e&&e.message;if(a&&t)return-1!==a.indexOf(t)?a:t+"\n"+a;if(a)return a;if(t)return t}return"function"==typeof e.toString?e.toString():{}.toString.call(e)}catch(e){return"Error while stringifying error: "+y(e,o+1)}}function g(e){var o="";return e?e instanceof Error?e.message||o:"string"==typeof e.message&&e.message||o:o}function d(e,o){var a=(e=e.split("://")[1]).indexOf(o);return-1!==a&&e.slice(a)===o}function h(e,o,a){var t=e[o];e[o]=function(){var e=arguments,o=this;return a({context:this,args:[].slice.call(arguments),original:t,callOriginal:function(){return t.apply(o,e)}})}}function w(e,o){if(!o)return e;if(Object.assign)return Object.assign(e,o);for(var a in o)o.hasOwnProperty(a)&&(e[a]=o[a]);return e}function f(e,o){return e.sort((function(e,a){return o.indexOf(e)-o.indexOf(a)}))}function m(e){return e}function C(e){var o=[];for(var a in e)e.hasOwnProperty(a)&&o.push(e[a]);return o}function v(e,o){return Math.round(e*o/100)}function b(){return Math.max.apply(Math,arguments)}function P(e,o,a){var t=[];return e.replace(o,(function(){t.push(a.apply(null,arguments))})),t}},function(e,o,a){"use strict";a.r(o);var t={};a.r(t),a.d(t,"cleanUpWindow",(function(){return D})),a.d(t,"Promise",(function(){return c.a})),a.d(t,"bridge",(function(){return R})),a.d(t,"init",(function(){return x})),a.d(t,"parent",(function(){return j})),a.d(t,"request",(function(){return _})),a.d(t,"send",(function(){return T})),a.d(t,"sendToParent",(function(){return A})),a.d(t,"client",(function(){return N})),a.d(t,"listen",(function(){return k})),a.d(t,"on",(function(){return B})),a.d(t,"once",(function(){return M})),a.d(t,"listener",(function(){return S})),a.d(t,"CONFIG",(function(){return l.a})),a.d(t,"CONSTANTS",(function(){return l.b})),a.d(t,"disable",(function(){return I}));var r=a(14),n=a(7),l=a(10),p=a(9),i=a(11),c=a(2),u={};u[l.b.SEND_STRATEGIES.POST_MESSAGE]=function(e,o,t){try{a(43).emulateIERestrictions(window,e)}catch(e){return}(Array.isArray(t)?t:"string"==typeof t?[t]:[l.b.WILDCARD]).map((function(o){if(0===o.indexOf(l.b.MOCK_PROTOCOL)){if(window.location.protocol===l.b.FILE_PROTOCOL)return l.b.WILDCARD;if(!Object(n.q)(e))throw new Error("Attempting to send messsage to mock domain "+o+", but window is actually cross-domain");return Object(n.d)(e)}return 0===o.indexOf(l.b.FILE_PROTOCOL)?l.b.WILDCARD:o})).forEach((function(a){return e.postMessage(o,a)}))};var s=a(23),y=s.sendBridgeMessage,g=s.needsBridgeForBrowser,d=s.isBridge;function h(e,o,a){return c.a.try((function(){var t;if(o=function(e,o,a){void 0===a&&(a={});var t=Object(r.q)(),l=Object(r.c)(),p=Object(n.h)(window);return Object(i.a)({},o,{},a,{sourceDomain:p,id:o.id||t,windowType:l})}(0,o,{data:Object(r.o)(e,a,o.data),domain:a}),e===window&&!l.a.ALLOW_SAME_ORIGIN)throw new Error("Attemping to send message to self");if(Object(n.z)(e))throw new Error("Window is closed");var p=[],s=Object(r.g)(((t={})[l.b.WINDOW_PROPS.POSTROBOT]=o,t),null,2);return c.a.map(Object.keys(u),(function(o){return c.a.try((function(){if(!l.a.ALLOWED_POST_MESSAGE_METHODS[o])throw new Error("Strategy disallowed: "+o);return u[o](e,s,a)})).then((function(){return p.push(o+": success"),!0}),(function(e){return p.push(o+": "+Object(r.p)(e)+"\n"),!1}))})).then((function(e){var a=e.some(Boolean),t=o.type+" "+o.name+" "+(a?"success":"error")+":\n - "+p.join("\n - ")+"\n";if(!a)throw new Error(t)}))}))}u[l.b.SEND_STRATEGIES.BRIDGE]=function(e,o,a){if(g()||d()){if(Object(n.v)(e))throw new Error("Post message through bridge disabled between same domain windows");if(!1!==Object(n.w)(window,e))throw new Error("Can only use bridge to communicate between two different windows, not between frames");return y(e,o,a)}},u[l.b.SEND_STRATEGIES.GLOBAL]=function(e,o){if(Object(r.i)()){if(!Object(n.v)(e))throw new Error("Post message through global disabled between different domain windows");if(!1!==Object(n.w)(window,e))throw new Error("Can only use global to communicate between two different windows, not between frames");var a=e[l.b.WINDOW_PROPS.POSTROBOT];if(!a)throw new Error("Can not find postRobot global on foreign window");return a.receiveMessage({source:window,origin:Object(n.h)(),data:o})}};var w=a(17);p.a.responseListeners=p.a.responseListeners||{},p.a.requestListeners=p.a.requestListeners||{},p.a.WINDOW_WILDCARD=p.a.WINDOW_WILDCARD||new function(){},p.a.erroredResponseListeners=p.a.erroredResponseListeners||{};var f,m="__domain_regex__";function C(e){return p.a.responseListeners[e]}function v(e){delete p.a.responseListeners[e]}function b(e){return Boolean(p.a.erroredResponseListeners[e])}function P(e){var o=e.name,a=e.win,t=e.domain;if(a===l.b.WILDCARD&&(a=null),t===l.b.WILDCARD&&(t=null),!o)throw new Error("Name required to get request listener");var r=p.a.requestListeners[o];if(r)for(var i=0,c=[a,p.a.WINDOW_WILDCARD];i=3)return"stringifyError stack overflow";try{if(!e)return"";if("string"==typeof e)return e;if(e instanceof Error){var a=e&&e.stack,t=e&&e.message;if(a&&t)return-1!==a.indexOf(t)?a:t+"\n"+a;if(a)return a;if(t)return t}return"function"==typeof e.toString?e.toString():{}.toString.call(e)}catch(e){return"Error while stringifying error: "+l(e,o+1)}}var p=function(e){if(!e)return e;var o=!1;return function(){if(!o)return o=!0,e.apply(this,arguments)}};function i(){}function c(e,o,a){return e.addEventListener?e.addEventListener(o,a):e.attachEvent("on"+o,a),{cancel:function(){e.removeEventListener?e.removeEventListener(o,a):e.detachEvent("on"+o,a)}}}function u(){var e="0123456789abcdef";return"xxxxxxxxxx".replace(/./g,(function(){return e.charAt(Math.floor(Math.random()*e.length))}))}function s(e,o,a){if(void 0===a&&(a=1),a>=100)throw new Error("Self-referential object passed, or object contained too many layers");var t;if("object"!=typeof e||null===e||Array.isArray(e)){if(!Array.isArray(e))throw new TypeError("Invalid type: "+typeof e);t=[]}else t={};return function(e,o){Array.isArray(e)?function(e,o){for(var a=0;a>>0)+"__",function(){if("undefined"==typeof WeakMap)return!1;if(void 0===Object.freeze)return!1;try{var e=new WeakMap,o={};return Object.freeze(o),e.set(o,"__testvalue__"),"__testvalue__"===e.get(o)}catch(e){return!1}}())try{this.weakmap=new WeakMap}catch(e){}this.keys=[],this.values=[]}var o=e.prototype;return o._cleanupClosedWindows=function(){for(var e=this.weakmap,o=this.keys,a=0;ar.a.session_uid_lifetime&&(a=null),a||(a={guid:Object(n.s)(),created:t}),o[c]=a,e(a)}))}function d(e){return g((function(o){return o.state=o.state||{},e(o.state)}))}function h(){var e=window.xprops;if(e&&e.sessionID)return e.sessionID;var o=Object(l.f)("sessionID");return Object(p.b)()&&o?o:g((function(e){return e.guid}))}function w(){if(window.xprops&&window.xprops.buttonSessionID)return window.xprops.buttonSessionID;var e=Object(l.f)("buttonSessionID");return Object(p.b)()&&e?e:void 0}function f(e){return window[u]=window[u]||{},e(window[u])}},function(e,o,a){"use strict";var t={};a.r(t),a.d(t,"create",(function(){return Y})),a.d(t,"getByTag",(function(){return q})),a.d(t,"getCurrentScriptDir",(function(){return u.t})),a.d(t,"destroyAll",(function(){return X})),a.d(t,"postRobot",(function(){return J})),a.d(t,"CONSTANTS",(function(){return Q})),a.d(t,"PopupOpenError",(function(){return O.b})),a.d(t,"IntegrationError",(function(){return O.a})),a.d(t,"RenderError",(function(){return O.c}));var r=a(13);function n(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}var l=a(22);function p(e,o,a,t,r){var n={};return Object.keys(t).forEach((function(e){n[e]=t[e]})),n.enumerable=!!n.enumerable,n.configurable=!!n.configurable,("value"in n||n.initializer)&&(n.writable=!0),n=a.slice().reverse().reduce((function(a,t){return t(e,o,a)||a}),n),r&&void 0!==n.initializer&&(n.value=n.initializer?n.initializer.call(r):void 0,n.initializer=void 0),void 0===n.initializer&&(Object.defineProperty(e,o,n),n=null),n}var i=a(2),c=a(7),u=a(6),s=function(){function e(){var e,o,a;this.clean=void 0,this.event=void 0,this.component=void 0,this.clean=(e=this,o=[],a=!1,{set:function(o,t){return a?t:(e[o]=t,this.register((function(){delete e[o]})),t)},register:function(e,t){if("function"==typeof e&&(t=e,e=""),"function"!=typeof t)throw new TypeError("Expected to be passed function to clean.register");a?t():o.push({complete:!1,name:e,run:function(){this.complete||(this.complete=!0,t&&t())}})},hasTasks:function(){return Boolean(o.filter((function(e){return!e.complete})).length)},all:function(){var e=[];for(a=!0;o.length;)e.push(o.pop().run());return i.a.all(e).then((function(){}))},run:function(e){for(var a=[],t=0;t\n\n '+o+"\n\n \n `;\n });\n });\n });\n }\n\n @memoized\n loadHTML() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (!this.html) {\n throw new Error(`Html not prefetched`);\n }\n\n return this.html.then(html => {\n // $FlowFixMe\n return writeToWindow(this.window, html);\n });\n });\n }\n\n checkAllowRenderTo(win : CrossDomainWindowType) {\n\n if (!win) {\n throw this.component.createError(`Must pass window to renderTo`);\n }\n\n if (isSameDomain(win)) {\n return;\n }\n\n let origin = getDomain();\n let domain = this.component.getDomain(null, this.props.env);\n\n if (!domain) {\n throw new Error(`Could not determine domain to allow remote render`);\n }\n\n if (matchDomain(domain, origin)) {\n return;\n }\n\n throw new Error(`Can not render remotely to ${ domain.toString() } - can only render to ${ origin }`);\n }\n\n registerActiveComponent() {\n ParentComponent.activeComponents.push(this);\n\n this.clean.register(() => {\n ParentComponent.activeComponents.splice(ParentComponent.activeComponents.indexOf(this), 1);\n });\n }\n\n\n getComponentParentRef() : { ref : string, uid? : string, distance? : number } {\n let domain = this.component.getDomain(null, this.props.env);\n\n if (domain === getDomain(window)) {\n let uid = uniqueID();\n global.windows = global.windows || {};\n global.windows[uid] = window;\n this.clean.register(() => {\n delete global.windows[uid];\n });\n\n return { ref: WINDOW_REFERENCES.GLOBAL, uid };\n }\n\n if (this.context === CONTEXT_TYPES.POPUP) {\n return { ref: WINDOW_REFERENCES.OPENER };\n }\n\n if (isTop(window)) {\n return { ref: WINDOW_REFERENCES.TOP };\n }\n\n return { ref: WINDOW_REFERENCES.PARENT, distance: getDistanceFromTop(window) };\n }\n\n getRenderParentRef(renderToWindow : CrossDomainWindowType = window) : { ref : string, uid? : string, distance? : number } {\n\n if (renderToWindow === window) {\n return this.getComponentParentRef();\n }\n\n let uid = uniqueID();\n global.windows[uid] = renderToWindow;\n\n this.clean.register(() => {\n delete global.windows[uid];\n });\n\n return { ref: WINDOW_REFERENCES.GLOBAL, uid };\n }\n\n buildChildWindowName({ renderTo = window } : { renderTo : CrossDomainWindowType } = {}) : string {\n\n let childDomain = this.component.getDomain(null, this.props.env);\n let sameDomain = isSameDomain(renderTo);\n\n let uid = uniqueID();\n let tag = this.component.tag;\n let sProps = serializeFunctions(this.getPropsForChild());\n\n let componentParent = this.getComponentParentRef();\n let renderParent = this.getRenderParentRef(renderTo);\n\n let secureProps = !sameDomain && !this.component.unsafeRenderTo;\n\n let props = secureProps\n ? { type: INITIAL_PROPS.UID, uid }\n : { type: INITIAL_PROPS.RAW, value: sProps };\n\n if (props.type === INITIAL_PROPS.UID) {\n global.props[uid] = JSON.stringify(sProps);\n\n this.clean.register(() => {\n delete global.props[uid];\n });\n }\n\n return buildChildWindowName(this.component.name, this.component.version, { uid, tag, componentParent, renderParent, props, childDomain });\n }\n\n\n /* Send to Parent\n --------------\n\n Send a post message to our parent window.\n */\n\n sendToParent(name : string, data : Object) : ZalgoPromise<{ origin : string, source : CrossDomainWindowType, data : Object }> {\n let parentWindow = getParentComponentWindow();\n\n if (!parentWindow) {\n throw new Error(`Can not find parent component window to message`);\n }\n\n this.component.log(`send_to_parent_${ name }`);\n\n return send(getParentComponentWindow(), name, data, { domain: getParentDomain() });\n }\n\n\n /* Set Props\n ---------\n\n Normalize props and generate the url we'll use to render the component\n */\n\n setProps(props : (PropsType & P), required : boolean = true) {\n\n validateProps(this.component, props, required);\n if (this.component.validate) {\n this.component.validate(this.component, props);\n }\n\n // $FlowFixMe\n this.props = this.props || {};\n\n extend(this.props, normalizeProps(this.component, this, props));\n }\n\n\n /* Build Url\n ---------\n\n We build the props we're passed into the initial url. This means the component server-side can start rendering\n itself based on whatever props the merchant provides.\n */\n\n @memoized\n buildUrl() : ZalgoPromise {\n\n let propUrl : (string | void) = this.props.url;\n\n return ZalgoPromise.all([\n\n propUrl,\n // $FlowFixMe\n propsToQuery({ ...this.component.props, ...this.component.builtinProps }, this.props)\n\n ]).then(([ url, query ]) => {\n\n // Do not extend the url if it is for a different domain\n\n if (url && !this.component.getValidDomain(url)) {\n return url;\n }\n\n return ZalgoPromise.try(() => {\n\n return url || this.component.getUrl(this.props.env, this.props);\n\n }).then(finalUrl => {\n\n query.xcomponent = '1';\n return extendUrl(finalUrl, { query });\n });\n });\n }\n\n\n getDomain() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n return this.props.url;\n\n }).then(url => {\n\n let domain = this.component.getDomain(url, this.props.env);\n\n if (domain) {\n return domain;\n }\n\n if (this.component.buildUrl) {\n return ZalgoPromise.try(() => this.component.buildUrl(this.props)).then(builtUrl => {\n return this.component.getDomain(builtUrl, this.props.env);\n });\n }\n\n }).then(domain => {\n\n if (!domain) {\n throw new Error(`Could not determine domain`);\n }\n\n return domain;\n });\n }\n\n getPropsForChild() : (BuiltInPropsType & P) {\n\n let result = {};\n\n for (let key of Object.keys(this.props)) {\n let prop = this.component.getProp(key);\n\n if (!prop || prop.sendToChild !== false) {\n result[key] = this.props[key];\n }\n }\n\n // $FlowFixMe\n return result;\n }\n\n\n /* Update Props\n ------------\n\n Send new props down to the child\n */\n\n updateProps(props : (PropsType & P)) : ZalgoPromise {\n this.setProps(props, false);\n\n return this.onInit.then(() => {\n if (this.childExports) {\n return this.childExports.updateProps(this.getPropsForChild());\n } else {\n throw new Error(`Child exports were not available`);\n }\n });\n }\n\n\n openBridge(domain : ?string) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (!bridge || !this.driver.needsBridge) {\n return;\n }\n\n let needsBridgeParams : Object = { win: this.window };\n if (domain) {\n needsBridgeParams.domain = domain;\n }\n\n let needsBridge = bridge.needsBridge(needsBridgeParams);\n\n let bridgeUrl = this.component.getBridgeUrl(this.props.env);\n\n if (!bridgeUrl) {\n\n if (needsBridge && domain && !bridge.hasBridge(domain, domain)) {\n throw new Error(`Bridge url needed to render ${ this.context }`);\n }\n\n return;\n }\n\n bridgeUrl = extendUrl(bridgeUrl, { query: { version: this.component.version } });\n\n let bridgeDomain = this.component.getBridgeDomain(this.props.env);\n\n if (!bridgeDomain) {\n throw new Error(`Can not determine domain for bridge`);\n }\n\n if (needsBridge) {\n return bridge.openBridge(bridgeUrl, bridgeDomain).then(result => {\n if (result) {\n return result;\n }\n });\n }\n });\n }\n\n\n /* Open\n ----\n\n Open a new window in the desired context\n */\n\n @memoized\n open() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.component.log(`open_${ this.context }`, { windowName: this.childWindowName });\n if (this.props.win) {\n this.clean.set('window', this.props.win);\n assertSameDomain(this.window).name = this.childWindowName;\n return;\n }\n return this.driver.open.call(this);\n });\n }\n\n @memoized\n openPrerender() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.component.prerenderTemplate) {\n return this.driver.openPrerender.call(this);\n }\n });\n }\n\n @memoized\n switchPrerender() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.prerenderWindow && this.driver.switchPrerender) {\n return this.driver.switchPrerender.call(this);\n }\n });\n }\n\n get driver() : ContextDriverType {\n\n if (!this.context) {\n throw new Error('Context not set');\n }\n\n return RENDER_DRIVERS[this.context];\n }\n\n elementReady(element : ElementRefType) : ZalgoPromise {\n return elementReady(element).then(noop);\n }\n\n\n delegate(win : CrossDomainWindowType) {\n\n this.component.log(`delegate_${ this.context }`);\n\n let props = {\n uid: this.props.uid,\n dimensions: this.props.dimensions,\n onClose: this.props.onClose,\n onDisplay: this.props.onDisplay\n };\n\n for (let propName of this.component.getPropNames()) {\n let prop = this.component.getProp(propName);\n\n if (prop.allowDelegate) {\n props[propName] = this.props[propName];\n }\n }\n\n let delegate = send(win, `${ POST_MESSAGE.DELEGATE }_${ this.component.name }`, {\n\n context: this.context,\n env: this.props.env,\n\n options: {\n\n context: this.context,\n\n childWindowName: this.childWindowName,\n isWindowClosed: () => isWindowClosed(this.window),\n\n props,\n\n overrides: {\n focus: () => this.focus(),\n userClose: () => this.userClose(),\n getDomain: () => this.getDomain(),\n\n error: (err) => this.error(err),\n on: (eventName, handler) => this.on(eventName, handler)\n }\n }\n\n }).then(({ data }) => {\n\n this.clean.register(data.destroy);\n return data;\n\n }).catch(err => {\n\n throw new Error(`Unable to delegate rendering. Possibly the component is not loaded in the target window.\\n\\n${ stringifyError(err) }`);\n });\n\n let overrides = this.driver.delegateOverrides;\n\n for (let key of Object.keys(overrides)) {\n let val = overrides[key];\n\n if (val === DELEGATE.CALL_ORIGINAL) {\n continue;\n }\n\n // $FlowFixMe\n let original = this[key];\n\n // $FlowFixMe\n this[key] = function overridenFunction() : ZalgoPromise {\n return delegate.then(data => {\n\n let override = data.overrides[key];\n\n if (val === DELEGATE.CALL_DELEGATE) {\n return override.apply(this, arguments);\n }\n\n if (typeof val === 'function') {\n return val(original, override).apply(this, arguments);\n }\n\n throw new Error(`Expected delgate to be CALL_ORIGINAL, CALL_DELEGATE, or factory method`);\n });\n };\n }\n }\n\n /* Watch For Close\n ---------------\n\n Watch for the child window closing, so we can cleanup.\n Also watch for this window changing location, so we can close the component.\n */\n\n watchForClose() {\n let closeWindowListener = onCloseWindow(this.window, () => {\n this.component.log(`detect_close_child`);\n\n return ZalgoPromise.try(() => {\n return this.props.onClose(CLOSE_REASONS.CLOSE_DETECTED);\n }).finally(() => {\n return this.destroy();\n });\n }, 3000);\n\n this.clean.register('destroyCloseWindowListener', closeWindowListener.cancel);\n }\n\n watchForUnload() {\n\n // Our child has no way of knowing if we navigated off the page. So we have to listen for unload\n // and close the child manually if that happens.\n\n let onunload = once(() => {\n this.component.log(`navigate_away`);\n flush();\n this.destroyComponent();\n });\n\n let unloadWindowListener = addEventListener(window, 'unload', onunload);\n\n this.clean.register('destroyUnloadWindowListener', unloadWindowListener.cancel);\n }\n\n\n /* Load Url\n --------\n\n Load url into the child window. This is separated out because it's quite common for us to have situations\n where opening the child window and loading the url happen at different points.\n */\n\n loadUrl(url : string) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.component.log(`load_url`);\n\n if (window.location.href.split('#')[0] === url.split('#')[0]) {\n url = extendUrl(url, {\n query: {\n [ uniqueID() ]: '1'\n }\n });\n }\n\n return this.driver.loadUrl.call(this, url);\n });\n }\n\n\n hijack(targetElement : HTMLFormElement | HTMLAnchorElement) {\n targetElement.target = this.childWindowName;\n }\n\n /* Run Timeout\n -----------\n\n Set a timeout on the initial render, and call this.props.onTimeout if we don't get an init call in time.\n */\n\n runTimeout() {\n let timeout = this.props.timeout;\n\n if (timeout) {\n let id = this.timeout = setTimeout(() => {\n\n this.component.log(`timed_out`, { timeout: timeout.toString() });\n\n let error = this.component.createError(`Loading component timed out after ${ timeout } milliseconds`);\n\n this.onInit.reject(error);\n this.props.onTimeout(error);\n\n }, timeout);\n\n this.clean.register(() => {\n clearTimeout(id);\n delete this.timeout;\n });\n }\n }\n\n\n /* Listeners\n ---------\n\n Post-robot listeners to the child component window\n */\n\n listeners() : { [string] : (CrossDomainWindowType, Object) => mixed } {\n return {\n\n // The child rendered, and the component called .attach()\n // We have no way to know when the child has set up its listeners for the first time, so we have to listen\n // for this message to be sure so we can continue doing anything from the parent\n\n [ POST_MESSAGE.INIT ](source : CrossDomainWindowType, data : Object) : { props : BuiltInPropsType & P, context : string } {\n\n this.childExports = data.exports;\n\n this.onInit.resolve(this);\n\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n\n return {\n props: this.getPropsForChild(),\n context: this.context\n };\n },\n\n\n // The child has requested that we close it. Since iframes can't close themselves, we need\n // this logic to exist in the parent window\n\n [ POST_MESSAGE.CLOSE ](source : CrossDomainWindowType, data : Object) {\n this.close(data.reason);\n },\n\n [ POST_MESSAGE.CHECK_CLOSE ]() {\n this.checkClose();\n },\n\n // Iframes can't resize themselves, so they need the parent to take care of it for them.\n\n [ POST_MESSAGE.RESIZE ](source : CrossDomainWindowType, data : Object) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.driver.allowResize) {\n return this.resize(data.width, data.height);\n }\n });\n },\n\n [ POST_MESSAGE.HIDE ]() {\n this.hide();\n },\n\n [ POST_MESSAGE.SHOW ]() {\n this.show();\n },\n\n\n // The child encountered an error\n\n [ POST_MESSAGE.ERROR ](source : CrossDomainWindowType, data : Object) {\n this.error(new Error(data.error));\n }\n };\n }\n\n\n /* Resize\n ------\n\n Resize the child component window\n */\n\n resize(width : ?(number | string), height : ?(number | string)) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.component.log(`resize`, { height: stringify(height), width: stringify(width) });\n this.driver.resize.call(this, width, height);\n if (this.props.onResize) {\n this.props.onResize();\n }\n });\n }\n\n\n /* Hide\n ----\n\n Hide the component and any parent template\n */\n\n hide() : void {\n\n if (this.container) {\n hideElement(this.container);\n }\n\n return this.driver.hide.call(this);\n }\n\n show() : void {\n\n if (this.container) {\n showElement(this.container);\n }\n\n return this.driver.show.call(this);\n }\n\n\n checkClose() {\n let closeWindowListener = onCloseWindow(this.window, () => {\n this.userClose();\n }, 50, 500);\n\n this.clean.register(closeWindowListener.cancel);\n }\n\n\n userClose() : ZalgoPromise {\n return this.close(CLOSE_REASONS.USER_CLOSED);\n }\n\n\n /* Close\n -----\n\n Close the child component\n */\n\n @memoized\n close(reason : string = CLOSE_REASONS.PARENT_CALL) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n this.component.log(`close`, { reason });\n\n this.event.triggerOnce(EVENTS.CLOSE);\n return this.props.onClose(reason);\n\n }).then(() => {\n\n return ZalgoPromise.all([\n this.closeComponent(),\n this.closeContainer()\n ]);\n\n }).then(() => {\n\n return this.destroy();\n });\n }\n\n\n @memoized\n closeContainer(reason : string = CLOSE_REASONS.PARENT_CALL) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n this.event.triggerOnce(EVENTS.CLOSE);\n return this.props.onClose(reason);\n\n }).then(() => {\n\n return ZalgoPromise.all([\n this.closeComponent(reason),\n this.hideContainer()\n ]);\n\n }).then(() => {\n\n return this.destroyContainer();\n });\n }\n\n\n @memoized\n destroyContainer() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.clean.run('destroyContainerEvents');\n this.clean.run('destroyContainerTemplate');\n });\n }\n\n\n @memoized\n closeComponent(reason : string = CLOSE_REASONS.PARENT_CALL) : ZalgoPromise {\n\n let win = this.window;\n\n return ZalgoPromise.try(() => {\n\n return this.cancelContainerEvents();\n\n }).then(() => {\n\n this.event.triggerOnce(EVENTS.CLOSE);\n return this.props.onClose(reason);\n\n }).then(() => {\n\n return this.hideComponent();\n\n }).then(() => {\n\n return this.destroyComponent();\n\n }).then(() => {\n\n // IE in metro mode -- child window needs to close itself, or close will hang\n\n if (this.childExports && this.context === CONTEXT_TYPES.POPUP && !isWindowClosed(win)) {\n this.childExports.close().catch(noop);\n }\n });\n }\n\n destroyComponent() {\n this.clean.run('destroyUnloadWindowListener');\n this.clean.run('destroyCloseWindowListener');\n this.clean.run('destroyContainerEvents');\n this.clean.run('destroyWindow');\n }\n\n @memoized\n showContainer() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.props.onDisplay) {\n return this.props.onDisplay();\n }\n }).then(() => {\n if (this.container) {\n return showAndAnimate(this.container, ANIMATION_NAMES.SHOW_CONTAINER, this.clean.register);\n }\n });\n }\n\n @memoized\n showComponent() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.props.onDisplay) {\n return this.props.onDisplay();\n }\n }).then(() => {\n if (this.element) {\n return showAndAnimate(this.element, ANIMATION_NAMES.SHOW_COMPONENT, this.clean.register);\n }\n });\n }\n\n @memoized\n hideContainer() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.container) {\n return animateAndHide(this.container, ANIMATION_NAMES.HIDE_CONTAINER, this.clean.register);\n } else {\n return ZalgoPromise.resolve();\n }\n });\n }\n\n @memoized\n hideComponent() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.element) {\n return animateAndHide(this.element, ANIMATION_NAMES.HIDE_COMPONENT, this.clean.register);\n } else {\n return ZalgoPromise.resolve();\n }\n });\n }\n\n\n /* Focus\n -----\n\n Focus the child component window\n */\n\n focus() {\n\n if (this.window && !isWindowClosed(this.window)) {\n this.component.log(`focus`);\n this.window.focus();\n\n } else {\n\n throw new Error(`No window to focus`);\n }\n }\n\n\n /* Create Component Template\n -------------------------\n\n Creates an initial template and stylesheet which are loaded into the child window, to be displayed before the url is loaded\n */\n\n @memoized\n createPrerenderTemplate() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (!this.component.prerenderTemplate) {\n return ZalgoPromise.resolve();\n }\n\n return ZalgoPromise.try(() => {\n\n if (this.prerenderIframe) {\n return awaitFrameLoad(this.prerenderIframe).then(() => this.prerenderWindow);\n } else {\n return this.prerenderWindow;\n }\n\n }).then(win => {\n\n let doc;\n\n try {\n doc = win.document;\n } catch (err) {\n return;\n }\n\n let el;\n\n try {\n el = this.renderTemplate(this.component.prerenderTemplate, {\n jsxDom: jsxDom.bind(doc),\n document: doc\n });\n } catch (err) {\n this.component.logError('preprender_error', { err: err.stack ? err.stack : err.toString() });\n console.error(err.stack ? err.stack : err); // eslint-disable-line no-console\n return;\n }\n\n try {\n writeElementToWindow(win, el);\n } catch (err) {\n this.component.logError('preprender_error', { err: err.stack ? err.stack : err.toString() });\n console.error(err.stack ? err.stack : err); // eslint-disable-line no-console\n }\n\n let { width = false, height = false, element = 'body' } = (typeof this.component.autoResize === 'object' && this.component.autoResize !== null)\n ? this.component.autoResize\n : {};\n\n element = getElementSafe(element, doc);\n\n if (element && (width || height)) {\n onResize(element, ({ width: newWidth, height: newHeight }) => {\n this.resize(width ? newWidth : undefined, height ? newHeight : undefined);\n }, { width, height, win });\n }\n });\n });\n }\n\n\n /* Create Parent Template\n ----------------------\n\n Create a template and stylesheet for the parent template behind the element\n */\n\n renderTemplate(renderer : (RenderOptionsType) => HTMLElement, options : Object = {}) : HTMLElement {\n\n let {\n width = `${ DEFAULT_DIMENSIONS.WIDTH }px`,\n height = `${ DEFAULT_DIMENSIONS.HEIGHT }px`\n } = (this.component.dimensions || {});\n\n return renderer.call(this, {\n id: `${ CLASS_NAMES.ZOID }-${ this.component.tag }-${ this.props.uid }`,\n props: renderer.__xdomain__ ? null : this.props,\n tag: this.component.tag,\n context: this.context,\n outlet: this.getOutlet(),\n CLASS: CLASS_NAMES,\n ANIMATION: ANIMATION_NAMES,\n CONTEXT: CONTEXT_TYPES,\n EVENT: EVENTS,\n actions: {\n close: () => this.userClose(),\n focus: () => this.focus()\n },\n on: (eventName, handler) => this.on(eventName, handler),\n jsxDom,\n document,\n dimensions: { width, height },\n ...options\n });\n }\n\n @memoized\n openContainer(element : ?HTMLElement) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n let el;\n\n if (element) {\n el = getElement(element);\n } else {\n el = document.body;\n }\n\n if (!el) {\n throw new Error(`Could not find element to open container into`);\n }\n\n if (!this.component.containerTemplate) {\n if (this.driver.renderedIntoContainerTemplate) {\n throw new Error(`containerTemplate needed to render ${ this.context }`);\n }\n\n return;\n }\n\n let container = this.renderTemplate(this.component.containerTemplate, {\n container: el\n });\n\n this.container = container;\n hideElement(this.container);\n appendChild(el, this.container);\n\n if (this.driver.renderedIntoContainerTemplate) {\n this.element = this.getOutlet();\n hideElement(this.element);\n\n if (!this.element) {\n throw new Error('Could not find element to render component into');\n }\n\n hideElement(this.element);\n }\n\n this.clean.register('destroyContainerTemplate', () => {\n\n if (this.container && this.container.parentNode) {\n this.container.parentNode.removeChild(this.container);\n }\n\n delete this.container;\n });\n });\n }\n\n cancelContainerEvents() {\n this.clean.run('destroyContainerEvents');\n }\n\n\n /* Destroy\n -------\n\n Close the component and clean up any listeners and state\n */\n\n destroy() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.clean.hasTasks()) {\n this.component.log(`destroy`);\n flush();\n return this.clean.all();\n }\n });\n }\n\n\n tryInit(method : () => mixed) : ZalgoPromise> {\n return ZalgoPromise.try(method).catch(err => {\n this.onInit.reject(err);\n }).then(() => {\n return this.onInit;\n });\n }\n\n\n /* Error\n -----\n\n Handle an error\n */\n\n error(err : mixed) : ZalgoPromise {\n // eslint-disable-next-line promise/no-promise-in-callback\n return ZalgoPromise.try(() => {\n\n this.handledErrors = this.handledErrors || [];\n\n if (this.handledErrors.indexOf(err) !== -1) {\n // $FlowFixMe\n return;\n }\n\n this.handledErrors.push(err);\n\n this.onInit.reject(err);\n\n return this.destroy();\n\n }).then(() => {\n\n if (this.props.onError) {\n return this.props.onError(err);\n }\n\n }).catch(errErr => { // eslint-disable-line unicorn/catch-error-name\n\n throw new Error(`An error was encountered while handling error:\\n\\n ${ stringifyError(err) }\\n\\n${ stringifyError(errErr) }`);\n\n }).then(() => {\n\n if (!this.props.onError) {\n throw err;\n }\n });\n }\n\n static activeComponents : Array> = []\n\n static destroyAll() : ZalgoPromise {\n let results = [];\n\n while (ParentComponent.activeComponents.length) {\n results.push(ParentComponent.activeComponents[0].destroy());\n }\n\n return ZalgoPromise.all(results).then(noop);\n }\n}\n","/* @flow */\n\nimport { onCloseWindow, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { BaseComponent } from '../base';\nimport { ParentComponent } from '../parent';\nimport { RENDER_DRIVERS, type ContextDriverType } from '../parent/drivers';\nimport type { Component } from '../component';\nimport { noop } from '../../lib';\nimport type { CancelableType, DimensionsType } from '../../types';\n\nexport type DelegatePropsType = {\n uid : string,\n dimensions : DimensionsType,\n onClose : () => ?ZalgoPromise,\n onDisplay : () => ?ZalgoPromise\n};\n\nexport type DelegateOptionsType = {\n context : string,\n props : DelegatePropsType,\n childWindowName : string,\n isWindowClosed : () => ZalgoPromise,\n \n overrides : {\n focus : () => ZalgoPromise,\n userClose : (string) => ZalgoPromise,\n getDomain : () => ZalgoPromise,\n error : (mixed) => ZalgoPromise,\n on : (string, () => void) => CancelableType\n }\n};\n\nexport class DelegateComponent

extends BaseComponent

{\n\n source : CrossDomainWindowType\n context : string\n props : DelegatePropsType\n\n focus : () => ZalgoPromise\n userClose : (string) => ZalgoPromise\n getDomain : () => ZalgoPromise\n error : (mixed) => ZalgoPromise\n on : (string, () => void) => CancelableType\n\n childWindowName : string\n isWindowClosed : () => ZalgoPromise\n\n constructor(component : Component

, source : CrossDomainWindowType, options : DelegateOptionsType) {\n super();\n\n this.component = component;\n this.clean.set('source', source);\n\n this.context = options.context;\n\n this.props = {\n uid: options.props.uid,\n dimensions: options.props.dimensions,\n onClose: options.props.onClose,\n onDisplay: options.props.onDisplay\n };\n\n for (let propName of component.getPropNames()) {\n // $FlowFixMe\n let prop = this.component.getProp(propName);\n\n if (prop.allowDelegate) {\n this.props[propName] = options.props[propName];\n }\n }\n\n this.focus = () => {\n return ZalgoPromise.all([\n this.isWindowClosed().then(closed => {\n if (!closed) {\n window.open('', this.childWindowName);\n }\n }),\n options.overrides.focus.call(this)\n ]).then(noop);\n };\n\n this.clean.register('destroyFocusOverride', () => {\n // $FlowFixMe\n this.focus = noop;\n });\n\n this.userClose = options.overrides.userClose;\n this.getDomain = options.overrides.getDomain;\n this.error = options.overrides.error;\n this.on = options.overrides.on;\n\n let delegateOverrides = RENDER_DRIVERS[options.context].delegateOverrides;\n\n for (let key of Object.keys(delegateOverrides)) {\n // $FlowFixMe\n this[key] = ParentComponent.prototype[key];\n }\n\n this.childWindowName = options.childWindowName;\n this.isWindowClosed = options.isWindowClosed;\n\n ParentComponent.prototype.registerActiveComponent.call(this);\n\n this.watchForClose();\n }\n\n get driver() : ContextDriverType {\n\n if (!this.context) {\n throw new Error('Context not set');\n }\n\n return RENDER_DRIVERS[this.context];\n }\n\n watchForClose() {\n let closeWindowListener = onCloseWindow(this.source, () => this.destroy(), 3000);\n this.clean.register('destroyCloseWindowListener', closeWindowListener.cancel);\n }\n\n getOverrides(context : string) : { [string] : mixed } {\n\n let delegateOverrides = RENDER_DRIVERS[context].delegateOverrides;\n\n let overrides = {};\n\n let self = this;\n\n for (let key of Object.keys(delegateOverrides)) {\n overrides[key] = function delegateOverride() : mixed {\n // $FlowFixMe\n return ParentComponent.prototype[key].apply(self, arguments);\n };\n }\n\n return overrides;\n }\n\n destroy() : ZalgoPromise {\n return this.clean.all();\n }\n}\n","/* @flow */\n/* @jsx jsxDom */\n\nimport { type RenderOptionsType } from '../../parent';\n\nexport function defaultContainerTemplate({ id, tag, context, CLASS, outlet, jsxDom, dimensions : { width, height } } : RenderOptionsType) : HTMLElement {\n\n return (\n

\n \n\n { outlet }\n
\n );\n}\n","/* @flow */\n/* @jsx jsxDom */\n\nimport { type RenderOptionsType } from '../../parent';\n\nexport function defaultPrerenderTemplate({ jsxDom } : RenderOptionsType) : HTMLElement {\n return (\n \n \n \n \n \n
\n
\n
\n \n \n );\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { on, send } from 'post-robot/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getDomain, getDomainFromUrl, matchDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { BaseComponent } from '../base';\nimport { ChildComponent } from '../child';\nimport { ParentComponent, type RenderOptionsType } from '../parent';\nimport { DelegateComponent, type DelegateOptionsType } from '../delegate';\nimport { isZoidComponentWindow, getComponentMeta } from '../window';\nimport { CONTEXT_TYPES, POST_MESSAGE, WILDCARD } from '../../constants';\nimport { angular, angular2, glimmer, react, vue, script } from '../../drivers/index';\nimport { info, error, warn, setLogLevel, memoize } from '../../lib';\nimport type { EnvStringRegExp, CssDimensionsType, StringMatcherType, ElementRefType, EnvString } from '../../types';\n\nimport { validate } from './validate';\nimport { defaultContainerTemplate, defaultPrerenderTemplate } from './templates';\nimport { getInternalProps, type UserPropsDefinitionType, type BuiltInPropsDefinitionType, type PropsType, type BuiltInPropsType, type MixedPropDefinitionType } from './props';\n\nconst drivers = { angular, angular2, glimmer, react, vue, script };\n\n/* Component\n ---------\n\n This is the spec for the component. The idea is, when I call zoid.create(), it will create a new instance\n of Component with the blueprint needed to set up ParentComponents and ChildComponents.\n\n This is the one portion of code which is required by -- and shared to -- both the parent and child windows, and\n contains all of the configuration needed for them to set themselves up.\n*/\n\nexport type ComponentOptionsType

= {\n\n tag : string,\n\n url? : EnvString,\n buildUrl? : (BuiltInPropsType & P) => string | ZalgoPromise,\n\n domain? : EnvStringRegExp,\n bridgeUrl? : EnvString,\n bridgeDomain? : EnvString,\n\n props? : UserPropsDefinitionType

,\n\n dimensions? : CssDimensionsType,\n scrolling? : boolean,\n autoResize? : boolean | { width? : boolean, height? : boolean, element? : string },\n listenForResize? : boolean,\n\n defaultLogLevel? : string,\n allowedParentDomains? : StringMatcherType,\n\n version? : string,\n defaultEnv? : string,\n\n contexts? : { iframe? : boolean, popup? : boolean },\n defaultContext? : string,\n\n containerTemplate? : (RenderOptionsType) => HTMLElement,\n prerenderTemplate? : (RenderOptionsType) => HTMLElement,\n\n validate? : (Component

, UserPropsDefinitionType

) => void,\n\n unsafeRenderTo? : boolean\n};\n\nexport type ComponentDriverType = {\n global : () => ?T,\n register : (Component

, T) => mixed\n};\n\nexport class Component

extends BaseComponent

{\n\n name : string\n looseProps : boolean\n\n tag : string\n url : EnvString\n\n domain : EnvStringRegExp\n bridgeUrl : EnvString\n bridgeDomain : EnvString\n\n props : UserPropsDefinitionType

\n builtinProps : BuiltInPropsDefinitionType

\n\n dimensions : CssDimensionsType\n scrolling : boolean\n autoResize : ?(boolean | { width? : boolean, height? : boolean, element? : string })\n listenForResize : ?boolean\n\n defaultLogLevel : string\n allowedParentDomains : StringMatcherType\n\n version : string\n defaultEnv : string\n buildUrl : (BuiltInPropsType & P) => string | ZalgoPromise\n\n contexts : { iframe? : boolean, popup? : boolean }\n defaultContext : string\n\n containerTemplate : (RenderOptionsType) => HTMLElement\n prerenderTemplate : (RenderOptionsType) => HTMLElement\n\n validate : (Component

, (PropsType & P)) => void\n\n unsafeRenderTo : ?boolean\n\n driverCache : { [string] : mixed }\n\n xchild : ?ChildComponent

\n xprops : ?P\n\n constructor(options : ComponentOptionsType

) {\n super();\n validate(options);\n\n // The tag name of the component. Used by some drivers (e.g. angular) to turn the component into an html element,\n // e.g. \n\n this.addProp(options, 'tag');\n\n this.addProp(options, 'defaultLogLevel', 'info');\n\n this.addProp(options, 'allowedParentDomains', WILDCARD);\n\n // initially set log level to default log level configured when creating component\n setLogLevel(this.defaultLogLevel);\n\n if (Component.components[this.tag]) {\n throw new Error(`Can not register multiple components with the same tag`);\n }\n\n // Name of the component, used for logging. Auto-generated from the tag name by default.\n\n this.addProp(options, 'name', this.tag.replace(/-/g, '_'));\n\n // A json based spec describing what kind of props the component accepts. This is used to validate any props before\n // they are passed down to the child.\n\n this.builtinProps = getInternalProps();\n this.props = options.props || {};\n\n if (!options.props) {\n this.looseProps = true;\n }\n\n // The dimensions of the component, e.g. { width: '300px', height: '150px' }\n\n this.addProp(options, 'dimensions');\n this.addProp(options, 'scrolling');\n this.addProp(options, 'listenForResize');\n\n this.addProp(options, 'version', 'latest');\n\n // The default environment we should render to if none is specified in the parent\n\n this.addProp(options, 'defaultEnv');\n\n // A mapping of env->url, used to determine which url to load for which env\n\n this.addProp(options, 'buildUrl');\n\n this.addProp(options, 'url');\n this.addProp(options, 'domain');\n\n this.addProp(options, 'bridgeUrl');\n this.addProp(options, 'bridgeDomain');\n\n this.addProp(options, 'attributes', {});\n\n // A url to use by default to render the component, if not using envs\n\n\n // The allowed contexts. For example { iframe: true, popup: false }\n\n this.addProp(options, 'contexts', { iframe: true, popup: false });\n\n // The default context to render to\n\n this.addProp(options, 'defaultContext');\n\n // Auto Resize option\n\n this.addProp(options, 'autoResize', false);\n\n // Templates and styles for the parent page and the initial rendering of the component\n\n this.addProp(options, 'containerTemplate', defaultContainerTemplate);\n this.addProp(options, 'prerenderTemplate', defaultPrerenderTemplate);\n\n // Validation\n\n this.addProp(options, 'validate');\n\n // Security\n\n this.addProp(options, 'unsafeRenderTo', false);\n\n // A mapping of tag->component so we can reference components by string tag name\n\n Component.components[this.tag] = this;\n\n // Register all of the drivers for instantiating components. The model used is -- there's a standard javascript\n // way of rendering a component, then each other technology (e.g. react) needs to hook into that interface.\n // This makes us a little more pluggable and loosely coupled.\n this.registerDrivers();\n this.registerChild();\n this.listenDelegate();\n }\n\n @memoize\n getPropNames() : Array {\n let props = Object.keys(this.props);\n\n for (let key of Object.keys(this.builtinProps)) {\n if (props.indexOf(key) === -1) {\n props.push(key);\n }\n }\n\n return props;\n }\n\n // $FlowFixMe\n getProp(name : string) : MixedPropDefinitionType

{\n // $FlowFixMe\n return this.props[name] || this.builtinProps[name];\n }\n\n registerDrivers() {\n this.driverCache = {};\n\n for (let driverName of Object.keys(drivers)) {\n if (driverName.indexOf('_') === 0) {\n continue;\n }\n\n let driver = drivers[driverName];\n let glob = driver.global();\n if (glob) {\n this.driver(driverName, glob);\n }\n }\n }\n\n driver(name : string, dep : mixed) : mixed {\n if (!drivers[name]) {\n throw new Error(`Could not find driver for framework: ${ name }`);\n }\n\n if (!this.driverCache[name]) {\n this.driverCache[name] = drivers[name].register(this, dep);\n }\n\n return this.driverCache[name];\n }\n\n registerChild() : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n if (this.isChild()) {\n return new ChildComponent(this);\n }\n });\n }\n\n listenDelegate() {\n on(`${ POST_MESSAGE.ALLOW_DELEGATE }_${ this.name }`, () => {\n return true;\n });\n\n on(`${ POST_MESSAGE.DELEGATE }_${ this.name }`, ({ source, origin, data }) => {\n\n let domain = this.getDomain(null, data.env || this.defaultEnv);\n\n if (!domain) {\n throw new Error(`Could not determine domain to allow remote render`);\n }\n\n if (!matchDomain(domain, origin)) {\n throw new Error(`Can not render from ${ origin } - expected ${ domain.toString() }`);\n }\n\n let delegate = this.delegate(source, data.options);\n\n return {\n overrides: delegate.getOverrides(data.context),\n destroy: () => delegate.destroy()\n };\n });\n }\n\n canRenderTo(win : CrossDomainWindowType) : ZalgoPromise {\n return send(win, `${ POST_MESSAGE.ALLOW_DELEGATE }_${ this.name }`).then(({ data }) => {\n return data;\n }).catch(() => {\n return false;\n });\n }\n\n\n getValidDomain(url : ?string) : ?(string | RegExp) {\n\n if (!url) {\n return;\n }\n\n let domain = getDomainFromUrl(url);\n\n if (typeof this.domain === 'string' && domain === this.domain) {\n return domain;\n }\n\n let domains = this.domain;\n\n if (domains && typeof domains === 'object' && !(domains instanceof RegExp)) {\n for (let env of Object.keys(domains)) {\n\n if (env === 'test') {\n continue;\n }\n\n if (domain === domains[env]) {\n return domain;\n }\n }\n }\n }\n\n\n getDomain(url : ?string, env : string) : ?(string | RegExp) {\n\n let domain = this.getForEnv(this.domain, env);\n\n if (domain) {\n return domain;\n }\n\n domain = this.getValidDomain(url);\n\n if (domain) {\n return domain;\n }\n\n // $FlowFixMe\n let envUrl = this.getForEnv(this.url, env);\n\n if (envUrl) {\n // $FlowFixMe\n return getDomainFromUrl(envUrl);\n }\n\n if (url) {\n return getDomainFromUrl(url);\n }\n }\n\n getBridgeUrl(env : string) : ?string {\n // $FlowFixMe\n return this.getForEnv(this.bridgeUrl, env);\n }\n\n getForEnv(item : (string | RegExp) | { [string] : (string | RegExp) }, env : ?string) : ?(string | RegExp) {\n\n if (!item) {\n return;\n }\n\n if (typeof item === 'string' || item instanceof RegExp) {\n return item;\n }\n\n if (!env) {\n env = this.defaultEnv;\n }\n\n if (!env) {\n return;\n }\n\n if (env && typeof item === 'object' && item[env]) {\n return item[env];\n }\n }\n\n getBridgeDomain(env : string) : ?string {\n\n // $FlowFixMe\n let bridgeDomain = this.getForEnv(this.bridgeDomain, env);\n\n if (bridgeDomain) {\n // $FlowFixMe\n return bridgeDomain;\n }\n\n let bridgeUrl = this.getBridgeUrl(env);\n\n if (bridgeUrl) {\n return getDomainFromUrl(bridgeUrl);\n }\n }\n\n getUrl(env : string, props : BuiltInPropsType & P) : (string | ZalgoPromise) {\n\n // $FlowFixMe\n let url = this.getForEnv(this.url, env);\n\n if (url) {\n // $FlowFixMe\n return url;\n }\n\n if (this.buildUrl) {\n return this.buildUrl(props);\n }\n\n throw new Error(`Unable to get url`);\n }\n\n isZoidComponent() : boolean {\n return isZoidComponentWindow();\n }\n\n isChild() : boolean {\n if (!isZoidComponentWindow()) {\n return false;\n }\n\n const { tag, childDomain } = getComponentMeta();\n\n if (childDomain && childDomain !== getDomain()) {\n return false;\n }\n\n if (tag !== this.tag) {\n return false;\n }\n\n return true;\n }\n\n\n createError(message : string, tag : ?string) : Error {\n return new Error(`[${ tag || this.tag }] ${ message }`);\n }\n\n\n /* Init\n ----\n\n Shortcut to instantiate a component on a parent page, with props\n */\n\n init(props : (PropsType & P), context : ?string, element : ElementRefType) : ParentComponent

{\n return new ParentComponent(this, this.getRenderContext(context, element), { props });\n }\n\n\n delegate(source : CrossDomainWindowType, options : DelegateOptionsType) : DelegateComponent

{\n return new DelegateComponent(this, source, options);\n }\n\n validateRenderContext(context : ?string, element : ?ElementRefType) {\n if (context && !this.contexts[context]) {\n throw new Error(`[${ this.tag }] Can not render to ${ context }`);\n }\n\n if (!element && context === CONTEXT_TYPES.IFRAME) {\n throw new Error(`[${ this.tag }] Context type ${ CONTEXT_TYPES.IFRAME } requires an element selector`);\n }\n }\n\n getDefaultContext() : string {\n if (this.defaultContext) {\n return this.defaultContext;\n } else if (this.contexts[CONTEXT_TYPES.IFRAME]) {\n return CONTEXT_TYPES.IFRAME;\n } else if (this.contexts[CONTEXT_TYPES.POPUP]) {\n return CONTEXT_TYPES.POPUP;\n }\n\n throw new Error(`Can not determine default context`);\n }\n\n getRenderContext(context : ?string, element : ?ElementRefType) : string {\n context = context || this.getDefaultContext();\n this.validateRenderContext(context, element);\n return context;\n }\n\n\n /* Render\n ------\n\n Shortcut to render a parent component\n */\n\n render(props : (PropsType & P), element : ?ElementRefType) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(null, element), { props }).render(element);\n });\n }\n\n renderIframe(props : (PropsType & P), element : ElementRefType) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(CONTEXT_TYPES.IFRAME, element), { props }).render(element);\n });\n }\n\n renderPopup(props : (PropsType & P)) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(CONTEXT_TYPES.POPUP), { props }).render();\n });\n }\n\n renderTo(win : CrossDomainWindowType, props : (PropsType & P), element : ?ElementRefType) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(null, element), { props }).renderTo(win, element);\n });\n }\n\n renderIframeTo(win : CrossDomainWindowType, props : (PropsType & P), element : ElementRefType) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(CONTEXT_TYPES.IFRAME, element), { props }).renderTo(win, element);\n });\n }\n\n renderPopupTo(win : CrossDomainWindowType, props : (PropsType & P)) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(CONTEXT_TYPES.POPUP), { props }).renderTo(win);\n });\n }\n\n prerender(props : (PropsType & P), element : ElementRefType) : { render : ((PropsType & P), ElementRefType) => ZalgoPromise>, renderTo : (CrossDomainWindowType, (PropsType & P), ElementRefType) => ZalgoPromise> } {\n let instance = new ParentComponent(this, this.getRenderContext(null, element), { props });\n instance.prefetch();\n\n return {\n render(innerProps : (PropsType & P), innerElement : ElementRefType) : ZalgoPromise> {\n if (innerProps) {\n instance.updateProps(innerProps);\n }\n\n return instance.render(innerElement);\n },\n\n renderTo(win : CrossDomainWindowType, innerProps : (PropsType & P), innerElement : ElementRefType) : ZalgoPromise> {\n if (innerProps) {\n instance.updateProps(innerProps);\n }\n\n return instance.renderTo(win, innerElement);\n },\n\n get html() : ?ZalgoPromise {\n return instance.html;\n },\n\n set html(value) {\n instance.html = value;\n }\n };\n }\n\n /* Log\n ---\n\n Log an event using the component name\n */\n\n log(event : string, payload : { [ string ] : string } = {}) {\n info(this.name, event, payload);\n }\n\n\n /* Log Warning\n -----------\n\n Log a warning\n */\n\n logWarning(event : string, payload : { [ string ] : string }) {\n warn(this.name, event, payload);\n }\n\n\n /* Log Error\n ---------\n\n Log an error\n */\n\n logError(event : string, payload : { [ string ] : string }) {\n error(this.name, event, payload);\n }\n\n static components : { [string] : Component<*> } = {}\n\n static getByTag(tag : string) : Component {\n return Component.components[tag];\n }\n}\n","/* @flow */\n\nimport { PROP_TYPES_LIST, CONTEXT_TYPES_LIST } from '../../constants';\nimport { isPerc, isPx } from '../../lib';\n\nimport type { ComponentOptionsType } from './index';\n\nfunction validatePropDefinitions

(options : ComponentOptionsType

) {\n\n if (options.props && !(typeof options.props === 'object')) {\n throw new Error(`Expected options.props to be an object`);\n }\n\n if (options.props) {\n for (let key of Object.keys(options.props)) {\n\n // $FlowFixMe\n let prop = options.props[key];\n\n if (!prop || !(typeof prop === 'object')) {\n throw new Error(`Expected options.props.${ key } to be an object`);\n }\n\n if (!prop.type) {\n throw new Error(`Expected prop.type`);\n }\n\n if (PROP_TYPES_LIST.indexOf(prop.type) === -1) {\n throw new Error(`Expected prop.type to be one of ${ PROP_TYPES_LIST.join(', ') }`);\n }\n\n if (prop.required && prop.def) {\n throw new Error(`Required prop can not have a default value`);\n }\n }\n }\n}\n\n// eslint-disable-next-line complexity\nexport function validate

(options : ?ComponentOptionsType

) { // eslint-ignore-line\n\n if (!options) {\n throw new Error(`Expecred options to be passed`);\n }\n\n if (!options.tag || !options.tag.match(/^[a-z0-9-]+$/)) {\n throw new Error(`Invalid options.tag: ${ options.tag }`);\n }\n\n validatePropDefinitions(options);\n\n if (options.dimensions) {\n if (options.dimensions && !isPx(options.dimensions.width) && !isPerc(options.dimensions.width)) {\n throw new Error(`Expected options.dimensions.width to be a px or % string value`);\n }\n\n if (options.dimensions && !isPx(options.dimensions.height) && !isPerc(options.dimensions.height)) {\n throw new Error(`Expected options.dimensions.height to be a px or % string value`);\n }\n }\n\n if (options.contexts) {\n\n if (options.contexts.popup && !__ZOID__.__POPUP_SUPPORT__) {\n throw new Error(`Popups not supported in this build -- please use the full zoid.js build`);\n }\n\n let anyEnabled = false;\n\n for (let context of Object.keys(options.contexts)) {\n\n if (CONTEXT_TYPES_LIST.indexOf(context) === -1) {\n throw new Error(`Unsupported context type: ${ context }`);\n }\n\n if ((options.contexts && options.contexts[context]) || (options.contexts && options.contexts[context] === undefined)) {\n anyEnabled = true;\n }\n }\n\n if (!anyEnabled) {\n throw new Error(`No context type is enabled`);\n }\n }\n\n if (options.defaultContext) {\n if (CONTEXT_TYPES_LIST.indexOf(options.defaultContext) === -1) {\n throw new Error(`Unsupported context type: ${ options.defaultContext || 'unknown' }`);\n }\n\n if (options.contexts && options.defaultContext && !options.contexts[options.defaultContext]) {\n throw new Error(`Disallowed default context type: ${ options.defaultContext || 'unknown' }`);\n }\n }\n\n if (options.url && options.buildUrl) {\n throw new Error(`Can not pass both options.url and options.buildUrl`);\n }\n\n if (options.defaultEnv) {\n if (typeof options.defaultEnv !== 'string') {\n throw new TypeError(`Expected options.defaultEnv to be a string`);\n }\n\n if (!options.buildUrl && typeof options.url !== 'object') {\n throw new Error(`Expected options.url to be an object mapping env->url`);\n }\n\n if (options.url && typeof options.url === 'object' && !options.url[options.defaultEnv]) {\n throw new Error(`No url found for default env: ${ options.defaultEnv }`);\n }\n }\n\n if (options.url && typeof options.url === 'object') {\n\n if (!options.defaultEnv) {\n throw new Error(`Must pass options.defaultEnv with env->url mapping`);\n }\n\n for (let env of Object.keys(options.url)) {\n if (!options.url[env]) {\n throw new Error(`No url specified for env: ${ env }`);\n }\n }\n }\n\n if (options.prerenderTemplate && typeof options.prerenderTemplate !== 'function') {\n throw new Error(`Expected options.prerenderTemplate to be a function`);\n }\n\n if (options.containerTemplate && typeof options.containerTemplate !== 'function') {\n throw new Error(`Expected options.containerTemplate to be a function`);\n }\n}\n","/* @flow */\n\nimport { type ZalgoPromise } from 'zalgo-promise/src';\nimport type { SameDomainWindowType } from 'cross-domain-utils/src';\n\nimport { uniqueID } from '../../lib';\nimport { type DimensionsType } from '../../types';\n\ntype PropDefinitionType = {\n type : S,\n alias? : string,\n value? : T,\n required? : boolean,\n noop? : boolean,\n once? : boolean,\n memoize? : boolean,\n promisify? : boolean,\n queryParam? : boolean | string | (T) => (string | ZalgoPromise),\n queryValue? : (T) => (ZalgoPromise | mixed),\n sendToChild? : boolean,\n allowDelegate? : boolean,\n validate? : (T, PropsType & P) => void,\n decorate? : (T, PropsType & P) => (void | ZalgoPromise | T),\n def? : (P) => ?T,\n sameDomain? : boolean,\n serialization? : 'json' | 'dotify',\n childDecorate? : (T) => ?T,\n denodeify? : boolean\n};\n\nexport type BooleanPropDefinitionType = PropDefinitionType;\nexport type StringPropDefinitionType = PropDefinitionType;\nexport type NumberPropDefinitionType = PropDefinitionType;\nexport type FunctionPropDefinitionType = PropDefinitionType;\nexport type ObjectPropDefinitionType = PropDefinitionType;\n\nexport type MixedPropDefinitionType

= BooleanPropDefinitionType<*, P> | StringPropDefinitionType<*, P> | NumberPropDefinitionType<*, P> | FunctionPropDefinitionType<*, P> | ObjectPropDefinitionType<*, P>;\n\nexport type UserPropsDefinitionType

= {\n [string] : MixedPropDefinitionType

\n};\n\nexport type EventHandlerType = (T) => void | ZalgoPromise;\n\ntype envPropType = string;\ntype uidPropType = string;\ntype urlPropType = string;\ntype versionPropType = string;\ntype timeoutPropType = number;\ntype logLevelPropType = string;\ntype dimensionsPropType = DimensionsType;\ntype winPropType = SameDomainWindowType;\n\ntype onDisplayPropType = EventHandlerType;\ntype onEnterPropType = EventHandlerType;\ntype onRenderPropType = EventHandlerType;\ntype onClosePropType = EventHandlerType;\ntype onResizePropType = EventHandlerType;\ntype onTimeoutPropType = EventHandlerType;\ntype onErrorPropType = EventHandlerType;\n\nexport type BuiltInPropsType = {\n env : envPropType,\n uid : uidPropType,\n url? : urlPropType,\n version? : versionPropType,\n timeout? : timeoutPropType,\n logLevel : logLevelPropType,\n dimensions? : dimensionsPropType,\n win? : winPropType,\n\n onDisplay : onDisplayPropType,\n onEnter : onEnterPropType,\n onRender : onRenderPropType,\n onClose : onClosePropType,\n onResize : onResizePropType,\n onTimeout : onTimeoutPropType,\n onError? : onErrorPropType\n};\n\nexport type PropsType = {\n env? : envPropType,\n uid? : uidPropType,\n url? : urlPropType,\n version? : versionPropType,\n timeout? : timeoutPropType,\n logLevel? : logLevelPropType,\n dimensions? : dimensionsPropType,\n win? : winPropType,\n\n onDisplay? : onDisplayPropType,\n onEnter? : onEnterPropType,\n onRender? : onRenderPropType,\n onClose? : onClosePropType,\n onResize? : onResizePropType,\n onTimeout? : onTimeoutPropType,\n onError? : onErrorPropType\n};\n\nexport type BuiltInPropsDefinitionType

= {\n env : StringPropDefinitionType,\n uid : StringPropDefinitionType,\n url : StringPropDefinitionType,\n version : StringPropDefinitionType,\n timeout : NumberPropDefinitionType,\n logLevel : StringPropDefinitionType,\n dimensions : ObjectPropDefinitionType,\n win : ObjectPropDefinitionType,\n\n onDisplay : FunctionPropDefinitionType,\n onEnter : FunctionPropDefinitionType,\n onRender : FunctionPropDefinitionType,\n onClose : FunctionPropDefinitionType,\n onResize : FunctionPropDefinitionType,\n onTimeout : FunctionPropDefinitionType,\n onError : FunctionPropDefinitionType\n};\n\n/* Internal Props\n --------------\n\n We define and use certain props by default, for configuration and events that are used at the framework level.\n These follow the same format as regular props, and are classed as reserved words that may not be overriden by users.\n*/\n\nexport function getInternalProps

() : BuiltInPropsDefinitionType

{\n return {\n\n // The desired env in which the component is being rendered. Used to determine the correct url\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n def() : string {\n return this.defaultEnv;\n }\n },\n\n uid: {\n type: 'string',\n def() : string {\n return uniqueID();\n },\n queryParam: true\n },\n\n logLevel: {\n type: 'string',\n required: false,\n queryParam: true,\n def() : string {\n return this.defaultLogLevel;\n }\n },\n\n // A custom url to use to render the component\n\n url: {\n type: 'string',\n required: false,\n promise: true,\n sendToChild: false\n },\n\n win: {\n type: 'object',\n required: false,\n sendToChild: false\n },\n\n dimensions: {\n type: 'object',\n required: false\n },\n\n version: {\n type: 'string',\n required: false,\n queryParam: true,\n def() : string {\n return this.version;\n }\n },\n\n // A millisecond timeout before onTimeout is called\n\n timeout: {\n type: 'number',\n required: false,\n sendToChild: false\n },\n\n onDisplay: {\n type: 'function',\n required: false,\n noop: true,\n promisify: true,\n memoize: true,\n sendToChild: false\n },\n\n onEnter: {\n type: 'function',\n required: false,\n noop: true,\n promisify: true,\n sendToChild: false\n },\n\n // When we get an INIT message from the child\n\n onRender: {\n type: 'function',\n required: false,\n noop: true,\n promisify: true,\n sendToChild: false\n },\n\n // When the user closes the component.\n\n onClose: {\n type: 'function',\n required: false,\n noop: true,\n once: true,\n promisify: true,\n sendToChild: false\n },\n\n onResize: {\n type: 'function',\n required: false,\n noop: true,\n sendToChild: false\n },\n\n // When we time-out before getting an INIT message from the child. Defaults to onError if no handler passed.\n\n onTimeout: {\n type: 'function',\n required: false,\n memoize: true,\n promisify: true,\n sendToChild: false,\n def() : (() => void) {\n return function onTimeout(err : mixed) : void {\n if (this.props.onError) {\n return this.props.onError(err);\n }\n throw err;\n };\n }\n },\n\n // When the component experiences an error\n\n onError: {\n type: 'function',\n required: false,\n promisify: true,\n sendToChild: true,\n once: true,\n def() : (() => void) {\n return function onError(err : mixed) {\n setTimeout(() => {\n throw err;\n });\n };\n }\n }\n };\n}\n","/* @flow */\n\nimport { type ZalgoPromise } from 'zalgo-promise/src';\n// eslint-disable-next-line import/no-namespace\nimport * as _postRobot from 'post-robot/src';\n\nimport { Component, type ComponentOptionsType } from './component';\nimport { ParentComponent } from './component/parent';\n// eslint-disable-next-line import/no-namespace\nimport * as _CONSTANTS from './constants';\n\nexport function create

(options : ComponentOptionsType

) : Component

{\n return new Component(options);\n}\n\nexport function getByTag

(tag : string) : Component

{\n return Component.getByTag(tag);\n}\n\nexport { getCurrentScriptDir } from './lib';\n\nexport function destroyAll() : ZalgoPromise {\n return ParentComponent.destroyAll();\n}\nexport let postRobot = _postRobot;\n\nexport * from './error';\n\nexport const CONSTANTS = _CONSTANTS;\n\nexport type ZoidComponent

= Component

;\n","/* @flow */\n\n// eslint-disable-next-line import/no-namespace\nimport * as INTERFACE from './interface';\n\nexport * from './interface';\nexport default INTERFACE;\n","/* @flow */\n\nimport {\n getOpener,\n getTop\n} from 'cross-domain-utils/src';\n\nexport function getUserAgent() : string {\n return window.navigator.mockUserAgent || window.navigator.userAgent;\n}\n\nexport function isDevice() : boolean {\n const userAgent = getUserAgent();\n if (userAgent.match(/Android|webOS|iPhone|iPad|iPod|bada|Symbian|Palm|CriOS|BlackBerry|IEMobile|WindowsMobile|Opera Mini/i)) {\n return true;\n }\n\n return false;\n}\n\nexport function isInsidePopup() : boolean {\n // Checks to see if the top-most window is a pop-up\n return Boolean(getOpener(getTop(window) || window));\n}\n\nexport function isStandAlone() : boolean {\n // Chrome interprets pop-up windows as standalone windows\n return !isInsidePopup() && (window.navigator.standalone === true || window.matchMedia('(display-mode: standalone)').matches);\n}\n\nexport function isFacebookWebView(ua? : string = getUserAgent()) : boolean {\n return (ua.indexOf('FBAN') !== -1) || (ua.indexOf('FBAV') !== -1);\n}\n\nexport function isFirefoxIOS(ua? : string = getUserAgent()) : boolean {\n return (/FxiOS/i).test(ua);\n}\n\nexport function isEdgeIOS(ua? : string = getUserAgent()) : boolean {\n return (/EdgiOS/i).test(ua);\n}\n\nexport function isOperaMini(ua? : string = getUserAgent()) : boolean {\n return ua.indexOf('Opera Mini') > -1;\n}\n\nexport function isAndroid(ua? : string = getUserAgent()) : boolean {\n return (/Android/).test(ua);\n}\n\nexport function isIos(ua? : string = getUserAgent()) : boolean {\n return (/iPhone|iPod|iPad/).test(ua);\n}\n\nexport function isGoogleSearchApp(ua? : string = getUserAgent()) : boolean {\n return (/\\bGSA\\b/).test(ua);\n}\n\nexport function isQQBrowser(ua? : string = getUserAgent()) : boolean {\n return (/QQBrowser/).test(ua);\n}\n\nexport function isIosWebview(ua? : string = getUserAgent()) : boolean {\n if (isIos(ua)) {\n if (isGoogleSearchApp(ua)) {\n return true;\n }\n return (/.+AppleWebKit(?!.*Safari)/).test(ua);\n }\n return false;\n}\n\nexport function isAndroidWebview(ua? : string = getUserAgent()) : boolean {\n if (isAndroid(ua)) {\n return (/Version\\/[\\d.]+/).test(ua) && !isOperaMini(ua);\n }\n return false;\n}\n\nexport function isWebView() : boolean {\n return isFacebookWebView() ||\n isIosWebview() ||\n isAndroidWebview();\n}\n\nexport function isIE() : boolean {\n\n if (window.document.documentMode) {\n return true;\n }\n\n if (window.navigator && typeof window.navigator.userAgent === 'string') {\n if ((/Edge|MSIE/i).test(window.navigator.userAgent)) {\n return true;\n }\n }\n\n return false;\n}\n\n\nexport function isIE11() : boolean {\n if (!isIE()) {\n return false;\n }\n\n if (window.navigator && typeof window.navigator.userAgent === 'string') {\n if ((/MSIE 11\\.0/i).test(window.navigator.userAgent)) {\n return true;\n }\n\n if ((/Trident/i).test(window.navigator.userAgent) && (/rv:11\\.0/i).test(window.navigator.userAgent)) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function isIECompHeader() : boolean {\n const mHttp = window.document.querySelector('meta[http-equiv=\"X-UA-Compatible\"]');\n const mContent = window.document.querySelector('meta[content=\"IE=edge\"]');\n if (mHttp && mContent) {\n return true;\n }\n return false;\n}\n\nexport function isElectron() : boolean {\n const userAgent = getUserAgent();\n // here we want a case-insensitive full word boundary\n return (/\\belectron\\b/i).test(userAgent);\n}\n\nexport function isIEIntranet() : boolean {\n if (!isIE11()) {\n return false;\n }\n\n // This status check only works for older versions of IE with document.documentMode set\n\n if (window.document.documentMode) {\n try {\n const status = window.status;\n\n window.status = 'testIntranetMode';\n\n if (window.status === 'testIntranetMode') {\n window.status = status;\n\n return true;\n }\n\n return false;\n\n } catch (err) {\n\n return false;\n }\n }\n\n return false;\n}\n\nexport function isMacOsCna() : boolean {\n const userAgent = getUserAgent();\n return (/Macintosh.*AppleWebKit(?!.*Safari)/i).test(userAgent);\n}\n\nexport function supportsPopups(ua? : string = getUserAgent()) : boolean {\n return !(isIosWebview(ua) || isAndroidWebview(ua) || isOperaMini(ua) ||\n isFirefoxIOS(ua) || isEdgeIOS(ua) || isFacebookWebView(ua) || isQQBrowser(ua) || isElectron() || isMacOsCna() || isStandAlone());\n}\n","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","/* @flow */\n\nimport { type ZalgoPromise } from 'zalgo-promise/src';\nimport { getParent, isWindowClosed, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONSTANTS } from '../conf';\nimport { noop } from '../lib';\nimport { global } from '../global';\n\n/*\n HERE BE DRAGONS\n\n Warning: this file may look weird. Why save the tunnel window in an Object\n by ID, then look it up later, rather than just using the reference from the closure scope?\n\n The reason is, that ends up meaning the garbage collector can never get its hands\n on a closed window, since our closure has continued access to it -- and post-robot\n has no good way to know whether to clean up the function with the closure scope.\n\n If you're editing this file, be sure to run significant memory / GC tests afterwards.\n*/\n\nglobal.tunnelWindows = global.tunnelWindows || {};\nglobal.tunnelWindowId = 0;\n\nfunction deleteTunnelWindow(id) {\n\n try {\n if (global.tunnelWindows[id]) {\n delete global.tunnelWindows[id].source;\n }\n } catch (err) {\n // pass\n }\n\n delete global.tunnelWindows[id];\n}\n\nfunction cleanTunnelWindows() {\n let tunnelWindows = global.tunnelWindows;\n\n for (let key of Object.keys(tunnelWindows)) {\n let tunnelWindow = tunnelWindows[key];\n\n try {\n noop(tunnelWindow.source);\n } catch (err) {\n deleteTunnelWindow(key);\n continue;\n }\n\n if (isWindowClosed(tunnelWindow.source)) {\n deleteTunnelWindow(key);\n }\n }\n}\n\ntype TunnelWindowDataType = {\n name : string,\n source : CrossDomainWindowType,\n canary : () => void,\n sendMessage : (message : string) => void\n};\n\nfunction addTunnelWindow({ name, source, canary, sendMessage } : TunnelWindowDataType) : number {\n cleanTunnelWindows();\n global.tunnelWindowId += 1;\n global.tunnelWindows[global.tunnelWindowId] = { name, source, canary, sendMessage };\n return global.tunnelWindowId;\n}\n\nfunction getTunnelWindow(id : number) : TunnelWindowDataType {\n return global.tunnelWindows[id];\n}\n\nglobal.openTunnelToParent = function openTunnelToParent({ name, source, canary, sendMessage } : TunnelWindowDataType) : ZalgoPromise<{ source : CrossDomainWindowType, origin : string, data : Object }> {\n\n let parentWindow = getParent(window);\n\n if (!parentWindow) {\n throw new Error(`No parent window found to open tunnel to`);\n }\n\n let id = addTunnelWindow({ name, source, canary, sendMessage });\n\n return global.send(parentWindow, CONSTANTS.POST_MESSAGE_NAMES.OPEN_TUNNEL, {\n\n name,\n\n sendMessage() {\n\n let tunnelWindow = getTunnelWindow(id);\n\n try {\n // IE gets antsy if you try to even reference a closed window\n noop(tunnelWindow && tunnelWindow.source);\n } catch (err) {\n deleteTunnelWindow(id);\n return;\n }\n\n if (!tunnelWindow || !tunnelWindow.source || isWindowClosed(tunnelWindow.source)) {\n return;\n }\n\n try {\n tunnelWindow.canary();\n } catch (err) {\n return;\n }\n\n tunnelWindow.sendMessage.apply(this, arguments);\n }\n\n }, { domain: CONSTANTS.WILDCARD });\n};\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getDomain, isSameDomain, isOpener, isSameTopWindow, matchDomain, getUserAgent, getDomainFromUrl, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONFIG, CONSTANTS } from '../conf';\nimport { global } from '../global';\n\nexport function needsBridgeForBrowser() : boolean {\n\n if (getUserAgent(window).match(/MSIE|trident|edge\\/12|edge\\/13/i)) {\n return true;\n }\n\n if (!CONFIG.ALLOW_POSTMESSAGE_POPUP) {\n return true;\n }\n\n return false;\n}\n\nexport function needsBridgeForWin(win : CrossDomainWindowType) : boolean {\n\n if (!isSameTopWindow(window, win)) {\n return true;\n }\n\n return false;\n}\n\nexport function needsBridgeForDomain(domain : ?string, win : ?CrossDomainWindowType) : boolean {\n\n if (domain) {\n if (getDomain() !== getDomainFromUrl(domain)) {\n return true;\n }\n } else if (win) {\n if (!isSameDomain(win)) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function needsBridge({ win, domain } : { win? : CrossDomainWindowType, domain? : string }) : boolean {\n\n if (!needsBridgeForBrowser()) {\n return false;\n }\n\n if (domain && !needsBridgeForDomain(domain, win)) {\n return false;\n }\n\n if (win && !needsBridgeForWin(win)) {\n return false;\n }\n\n return true;\n}\n\nexport function getBridgeName(domain : string) : string {\n\n domain = domain || getDomainFromUrl(domain);\n\n let sanitizedDomain = domain.replace(/[^a-zA-Z0-9]+/g, '_');\n\n let id = `${ CONSTANTS.BRIDGE_NAME_PREFIX }_${ sanitizedDomain }`;\n\n return id;\n}\n\nexport function isBridge() : boolean {\n return Boolean(window.name && window.name === getBridgeName(getDomain()));\n}\n\nexport let documentBodyReady = new ZalgoPromise(resolve => {\n\n if (window.document && window.document.body) {\n return resolve(window.document.body);\n }\n\n let interval = setInterval(() => {\n if (window.document && window.document.body) {\n clearInterval(interval);\n return resolve(window.document.body);\n }\n }, 10);\n});\n\nglobal.remoteWindows = global.remoteWindows || new WeakMap();\n\nexport function registerRemoteWindow(win : CrossDomainWindowType) {\n global.remoteWindows.set(win, { sendMessagePromise: new ZalgoPromise() });\n}\n\nexport function findRemoteWindow(win : CrossDomainWindowType) : { sendMessagePromise : ZalgoPromise<(remoteWin : CrossDomainWindowType, message : string, remoteDomain : string) => void> } {\n return global.remoteWindows.get(win);\n}\n\nexport function registerRemoteSendMessage(win : CrossDomainWindowType, domain : string, sendMessage : (message : string) => void) {\n\n let remoteWindow = findRemoteWindow(win);\n\n if (!remoteWindow) {\n throw new Error(`Window not found to register sendMessage to`);\n }\n\n let sendMessageWrapper = (remoteWin : CrossDomainWindowType, message : string, remoteDomain : string) => {\n\n if (remoteWin !== win) {\n throw new Error(`Remote window does not match window`);\n }\n\n if (!matchDomain(remoteDomain, domain)) {\n throw new Error(`Remote domain ${ remoteDomain } does not match domain ${ domain }`);\n }\n\n sendMessage(message);\n };\n\n remoteWindow.sendMessagePromise.resolve(sendMessageWrapper);\n remoteWindow.sendMessagePromise = ZalgoPromise.resolve(sendMessageWrapper);\n}\n\nexport function rejectRemoteSendMessage(win : CrossDomainWindowType, err : Error) {\n\n let remoteWindow = findRemoteWindow(win);\n\n if (!remoteWindow) {\n throw new Error(`Window not found on which to reject sendMessage`);\n }\n\n remoteWindow.sendMessagePromise.asyncReject(err);\n}\n\nexport function sendBridgeMessage(win : CrossDomainWindowType, message : string, domain : string) : ZalgoPromise {\n\n let messagingChild = isOpener(window, win);\n let messagingParent = isOpener(win, window);\n\n if (!messagingChild && !messagingParent) {\n throw new Error(`Can only send messages to and from parent and popup windows`);\n }\n\n let remoteWindow = findRemoteWindow(win);\n\n if (!remoteWindow) {\n throw new Error(`Window not found to send message to`);\n }\n\n return remoteWindow.sendMessagePromise.then(sendMessage => {\n return sendMessage(win, message, domain);\n });\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { isSameDomain, getOpener, getFrames, getDomain, getFrameByName, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONSTANTS } from '../conf';\nimport { weakMapMemoize, noop } from '../lib';\nimport { global } from '../global';\n\nimport { needsBridge, registerRemoteWindow, rejectRemoteSendMessage, registerRemoteSendMessage, getBridgeName } from './common';\n\nlet awaitRemoteBridgeForWindow = weakMapMemoize((win : CrossDomainWindowType) : ZalgoPromise => {\n return ZalgoPromise.try(() => {\n for (let frame of getFrames(win)) {\n try {\n // $FlowFixMe\n if (frame && frame !== window && isSameDomain(frame) && frame[CONSTANTS.WINDOW_PROPS.POSTROBOT]) {\n return frame;\n }\n\n } catch (err) {\n continue;\n }\n }\n\n try {\n let frame = getFrameByName(win, getBridgeName(getDomain()));\n\n if (!frame) {\n return;\n }\n\n // $FlowFixMe\n if (isSameDomain(frame) && frame[CONSTANTS.WINDOW_PROPS.POSTROBOT]) {\n return frame;\n }\n\n return new ZalgoPromise(resolve => {\n\n let interval;\n let timeout;\n\n interval = setInterval(() => {\n // $FlowFixMe\n if (frame && isSameDomain(frame) && frame[CONSTANTS.WINDOW_PROPS.POSTROBOT]) {\n clearInterval(interval);\n clearTimeout(timeout);\n return resolve(frame);\n }\n }, 100);\n\n timeout = setTimeout(() => {\n clearInterval(interval);\n return resolve();\n }, 2000);\n });\n\n } catch (err) {\n // pass\n }\n });\n});\n\nexport function openTunnelToOpener() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n const opener = getOpener(window);\n\n if (!opener) {\n return;\n }\n\n if (!needsBridge({ win: opener })) {\n return;\n }\n\n registerRemoteWindow(opener);\n\n return awaitRemoteBridgeForWindow(opener).then(bridge => {\n\n if (!bridge) {\n return rejectRemoteSendMessage(opener, new Error(`Can not register with opener: no bridge found in opener`));\n }\n\n if (!window.name) {\n return rejectRemoteSendMessage(opener, new Error(`Can not register with opener: window does not have a name`));\n }\n\n return bridge[CONSTANTS.WINDOW_PROPS.POSTROBOT].openTunnelToParent({\n\n name: window.name,\n\n source: window,\n\n canary() {\n // pass\n },\n\n sendMessage(message) {\n\n try {\n noop(window);\n } catch (err) {\n return;\n }\n\n if (!window || window.closed) {\n return;\n }\n\n try {\n global.receiveMessage({\n data: message,\n origin: this.origin,\n source: this.source\n });\n } catch (err) {\n ZalgoPromise.reject(err);\n }\n }\n\n }).then(({ source, origin, data }) => {\n\n if (source !== opener) {\n throw new Error(`Source does not match opener`);\n }\n\n registerRemoteSendMessage(source, origin, data.sendMessage);\n\n }).catch(err => {\n\n rejectRemoteSendMessage(opener, err);\n throw err;\n });\n });\n });\n}\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getDomain, getFrameByName, isWindowClosed, getDomainFromUrl, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONFIG, CONSTANTS } from '../conf';\nimport { onChildWindowReady } from '../lib';\nimport { global } from '../global';\n\nimport { getBridgeName, documentBodyReady, registerRemoteSendMessage, registerRemoteWindow } from './common';\n\nglobal.bridges = global.bridges || {};\nglobal.bridgeFrames = global.bridgeFrames || {};\n\nglobal.popupWindowsByWin = global.popupWindowsByWin || new WeakMap();\nglobal.popupWindowsByName = global.popupWindowsByName || {};\n\nfunction listenForRegister(source, domain) {\n global.on(CONSTANTS.POST_MESSAGE_NAMES.OPEN_TUNNEL, { window: source, domain }, ({ origin, data }) => {\n\n if (origin !== domain) {\n throw new Error(`Domain ${ domain } does not match origin ${ origin }`);\n }\n\n if (!data.name) {\n throw new Error(`Register window expected to be passed window name`);\n }\n\n if (!data.sendMessage) {\n throw new Error(`Register window expected to be passed sendMessage method`);\n }\n\n if (!global.popupWindowsByName[data.name]) {\n throw new Error(`Window with name ${ data.name } does not exist, or was not opened by this window`);\n }\n\n if (!global.popupWindowsByName[data.name].domain) {\n throw new Error(`We do not have a registered domain for window ${ data.name }`);\n }\n\n if (global.popupWindowsByName[data.name].domain !== origin) {\n throw new Error(`Message origin ${ origin } does not matched registered window origin ${ global.popupWindowsByName[data.name].domain }`);\n }\n\n registerRemoteSendMessage(global.popupWindowsByName[data.name].win, domain, data.sendMessage);\n\n return {\n sendMessage(message) {\n\n if (!window || window.closed) {\n return;\n }\n\n let winDetails = global.popupWindowsByName[data.name];\n\n if (!winDetails) {\n return;\n }\n\n try {\n global.receiveMessage({\n data: message,\n origin: winDetails.domain,\n source: winDetails.win\n });\n } catch (err) {\n ZalgoPromise.reject(err);\n }\n }\n };\n });\n}\n\nfunction openBridgeFrame(name : string, url : string) : HTMLIFrameElement {\n\n let iframe = document.createElement(`iframe`);\n\n iframe.setAttribute(`name`, name);\n iframe.setAttribute(`id`, name);\n\n iframe.setAttribute(`style`, `display: none; margin: 0; padding: 0; border: 0px none; overflow: hidden;`);\n iframe.setAttribute(`frameborder`, `0`);\n iframe.setAttribute(`border`, `0`);\n iframe.setAttribute(`scrolling`, `no`);\n iframe.setAttribute(`allowTransparency`, `true`);\n\n iframe.setAttribute(`tabindex`, `-1`);\n iframe.setAttribute(`hidden`, `true`);\n iframe.setAttribute(`title`, ``);\n iframe.setAttribute(`role`, `presentation`);\n\n iframe.src = url;\n\n return iframe;\n}\n\nexport function hasBridge(url : string, domain : string) : boolean {\n domain = domain || getDomainFromUrl(url);\n return Boolean(global.bridges[domain]);\n}\n\nexport function openBridge(url : string, domain : string) : ZalgoPromise {\n\n domain = domain || getDomainFromUrl(url);\n\n if (global.bridges[domain]) {\n return global.bridges[domain];\n }\n\n global.bridges[domain] = ZalgoPromise.try(() => {\n\n if (getDomain() === domain) {\n throw new Error(`Can not open bridge on the same domain as current domain: ${ domain }`);\n }\n\n let name = getBridgeName(domain);\n let frame = getFrameByName(window, name);\n\n if (frame) {\n throw new Error(`Frame with name ${ name } already exists on page`);\n }\n\n let iframe = openBridgeFrame(name, url);\n global.bridgeFrames[domain] = iframe;\n\n return documentBodyReady.then(body => {\n\n body.appendChild(iframe);\n\n let bridge = iframe.contentWindow;\n\n listenForRegister(bridge, domain);\n\n return new ZalgoPromise((resolve, reject) => {\n\n iframe.onload = resolve;\n iframe.onerror = reject;\n\n }).then(() => {\n\n return onChildWindowReady(bridge, CONFIG.BRIDGE_TIMEOUT, `Bridge ${ url }`);\n\n }).then(() => {\n\n return bridge;\n });\n });\n });\n\n return global.bridges[domain];\n}\n\nlet windowOpen = window.open;\n\nwindow.open = function windowOpenWrapper(url : string, name : string, options : string, last : mixed) : mixed {\n\n let domain = url;\n\n if (url && url.indexOf(CONSTANTS.MOCK_PROTOCOL) === 0) {\n [ domain, url ] = url.split('|');\n }\n\n if (domain) {\n domain = getDomainFromUrl(domain);\n }\n\n let win = windowOpen.call(this, url, name, options, last);\n\n if (!win) {\n return win;\n }\n\n if (url) {\n registerRemoteWindow(win);\n }\n\n for (let winName of Object.keys(global.popupWindowsByName)) {\n if (isWindowClosed(global.popupWindowsByName[winName].win)) {\n delete global.popupWindowsByName[winName];\n }\n }\n\n if (name && win) {\n let winOptions = global.popupWindowsByWin.get(win) ||\n global.popupWindowsByName[name] || {};\n\n winOptions.name = winOptions.name || name;\n winOptions.win = winOptions.win || win;\n winOptions.domain = winOptions.domain || domain;\n\n global.popupWindowsByWin.set(win, winOptions);\n global.popupWindowsByName[name] = winOptions;\n }\n\n return win;\n};\n\nexport function linkUrl(win : CrossDomainWindowType, url : string) {\n\n let winOptions = global.popupWindowsByWin.get(win);\n\n if (winOptions) {\n winOptions.domain = getDomainFromUrl(url);\n registerRemoteWindow(win);\n }\n}\n\nexport function destroyBridges() {\n for (let domain of Object.keys(global.bridgeFrames)) {\n let frame = global.bridgeFrames[domain];\n if (frame.parentNode) {\n frame.parentNode.removeChild(frame);\n }\n }\n global.bridgeFrames = {};\n global.bridges = {};\n}\n","/* @flow */\n\n// eslint-disable-next-line import/no-unassigned-import\nimport './bridge';\n\nexport * from './child';\nexport * from './common';\nexport * from './parent';\n","/* @flow */\n\nimport { info } from 'beaver-logger/client';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport type { CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { LANG_TO_DEFAULT_COUNTRY, LOCALE } from '../constants';\nimport type { LocaleType } from '../types';\nimport { config } from '../config';\n\nimport { memoize } from './util';\nimport { isDevice } from './device';\n\nfunction isDocumentReady() : boolean {\n return Boolean(document.body) && document.readyState === 'complete';\n}\n\nexport const documentReady : ZalgoPromise = new ZalgoPromise(resolve => {\n\n if (isDocumentReady()) {\n return resolve();\n }\n\n const interval = setInterval(() => {\n if (isDocumentReady()) {\n clearInterval(interval);\n return resolve();\n }\n }, 10);\n});\n\nexport const documentBody : ZalgoPromise = documentReady.then(() => {\n if (document.body) {\n return document.body;\n }\n\n throw new Error('Document ready but document.body not present');\n});\n\n\nexport function loadScript(src : string, timeout : number = 0, attrs : Object = {}) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n const script = document.createElement('script');\n\n script.addEventListener('load', () => {\n resolve();\n });\n\n // For Internet explorer 8 support\n script.onreadystatechange = function scriptOnReadyStateChange() {\n if (this.readyState === 'complete' || this.readyState === 'loaded') {\n resolve();\n }\n };\n\n const scriptLoadError = new Error('script_loading_error');\n\n script.addEventListener('error', () => {\n return reject(scriptLoadError);\n });\n\n if (timeout) {\n setTimeout(() => {\n return reject(new Error('script_loading_timed_out'));\n }, timeout);\n }\n\n for (const attr of Object.keys(attrs)) {\n script.setAttribute(attr, attrs[attr]);\n }\n\n script.setAttribute('src', src);\n\n const head = document.getElementsByTagName('head')[0];\n\n head.appendChild(script);\n });\n}\n\n\nexport function isNodeList(nodes : mixed) : boolean {\n\n const result = Object.prototype.toString.call(nodes);\n\n if (result === '[object HTMLCollection]' || result === '[object NodeList]') {\n return true;\n }\n\n return false;\n}\n\nexport function isElement(item : mixed) : boolean {\n return item instanceof HTMLElement;\n}\n\nexport function getElement(item : mixed) : ?HTMLElement {\n\n if (!item) {\n return;\n }\n\n if (item instanceof HTMLElement) {\n return item;\n }\n\n if (typeof item === 'string') {\n\n if (document.querySelector) {\n const result = document.querySelector(item);\n\n if (result) {\n return result;\n }\n }\n\n return document.getElementById(item);\n }\n}\n\nexport function getElements(collection : $ReadOnlyArray | NodeList | HTMLCollection | HTMLElement | string) : $ReadOnlyArray {\n\n if (!collection) {\n return [];\n }\n\n if (collection instanceof HTMLElement || typeof collection === 'string') {\n const element = getElement(collection);\n if (element) {\n return [ element ];\n }\n return [];\n }\n\n if (Array.isArray(collection) || collection instanceof NodeList || collection instanceof HTMLCollection) {\n const result = [];\n\n for (let i = 0; i < collection.length; i++) {\n const el = getElement(collection[i]);\n if (el) {\n result.push(el);\n }\n }\n\n return result;\n }\n\n return [];\n}\n\nexport function onDocumentReady(method : () => void) : ZalgoPromise {\n return documentReady.then(method);\n}\n\nexport const parseQuery = memoize((queryString : string) : Object => {\n\n const params = {};\n\n if (!queryString) {\n return params;\n }\n\n if (queryString.indexOf('=') === -1) {\n return params;\n }\n\n for (let pair of queryString.split('&')) {\n pair = pair.split('=');\n\n if (pair[0] && pair[1]) {\n params[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n }\n\n return params;\n});\n\n\nexport function getQueryParam(name : string) : string {\n return parseQuery(window.location.search.slice(1))[name];\n}\n\nexport function urlWillRedirectPage(url : string) : boolean {\n\n if (url.indexOf('#') === -1) {\n return true;\n }\n\n if (url.indexOf('#') === 0) {\n return false;\n }\n\n if (url.split('#')[0] === window.location.href.split('#')[0]) {\n return false;\n }\n\n return true;\n}\n\nexport function extendUrl(url : string, params : { [key : string] : string } = {}) : string {\n\n const hasHash = url.indexOf('#') > 0;\n\n let [ serverUrl, hash ] = url.split('#');\n\n if (hash && !serverUrl) {\n [ serverUrl, hash ] = [ `#${ hash }`, '' ];\n }\n\n const [ originalUrl, originalQueryString ] = serverUrl.split('?');\n\n if (originalQueryString) {\n const originalQuery = parseQuery(originalQueryString);\n\n for (const key in originalQuery) {\n if (!params.hasOwnProperty(key)) {\n params[key] = originalQuery[key];\n }\n }\n }\n\n const newQueryString = Object.keys(params).filter(key => key && params[key]).sort().map(key => {\n return `${ encodeURIComponent(key) }=${ encodeURIComponent(params[key]) }`;\n }).join('&');\n\n let newUrl = originalUrl;\n\n if (newQueryString) {\n newUrl = `${ newUrl }?${ newQueryString }`;\n }\n\n if (hasHash) {\n newUrl = `${ newUrl }#${ hash || '' }`;\n }\n\n return newUrl;\n}\n\nexport function redirect(win : CrossDomainWindowType = window, url : string) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n\n info(`redirect`, { url });\n\n setTimeout(() => {\n win.location = url;\n if (!urlWillRedirectPage(url)) {\n resolve();\n }\n }, 1);\n });\n}\n\nexport function hasMetaViewPort() : boolean {\n const meta = document.querySelector('meta[name=viewport]');\n\n if (isDevice() && window.screen.width < 660 && !meta) {\n return false;\n }\n\n return true;\n}\n\nexport function getBrowserLocales() : $ReadOnlyArray {\n const nav = window.navigator;\n\n const locales = nav.languages\n ? Array.prototype.slice.apply(nav.languages)\n : [];\n\n if (nav.language) {\n locales.push(nav.language);\n }\n\n if (nav.userLanguage) {\n locales.push(nav.userLanguage);\n }\n\n return locales;\n}\n\nexport function normalizeLocale(locale : string) : ?LocaleType {\n\n if (locale && locale.match(/^[a-z]{2}[-_][A-Z]{2}$/)) {\n const [ lang, country ] = locale.split(/[-_]/);\n if (LOCALE[country] && LOCALE[country].indexOf(lang) !== -1) {\n return { country, lang };\n }\n }\n}\n\nexport function normalizeLang(lang : string) : ?LocaleType {\n\n if (lang && lang.match(/^[a-z]{2}$/)) {\n if (LANG_TO_DEFAULT_COUNTRY[lang]) {\n return { country: LANG_TO_DEFAULT_COUNTRY[lang], lang };\n }\n }\n}\n\nexport const getBrowserLocale = memoize(() : LocaleType => {\n\n const locales = getBrowserLocales();\n\n for (const locale of locales) {\n let loc = normalizeLocale(locale);\n if (loc) {\n info('better_browser_locale_full');\n return loc;\n }\n\n loc = normalizeLang(locale);\n if (loc) {\n info('better_browser_locale_lang');\n return loc;\n }\n }\n\n return config.defaultLocale;\n});\n\nexport function isElementVisible(el : HTMLElement) : boolean {\n return Boolean(el.offsetWidth || el.offsetHeight || el.getClientRects().length);\n}\n\nexport const enablePerformance = memoize(() : boolean => {\n /* eslint-disable compat/compat */\n return Boolean(\n window.performance &&\n performance.now &&\n performance.timing &&\n performance.timing.connectEnd &&\n performance.timing.navigationStart &&\n (Math.abs(performance.now() - Date.now()) > 1000) &&\n (performance.now() - (performance.timing.connectEnd - performance.timing.navigationStart)) > 0\n );\n /* eslint-enable compat/compat */\n});\n\nexport function getPageRenderTime() : ZalgoPromise {\n return documentReady.then(() => {\n\n if (!enablePerformance()) {\n return;\n }\n\n const timing = window.performance.timing; // eslint-disable-line compat/compat\n\n if (timing.connectEnd && timing.domInteractive) {\n return timing.domInteractive - timing.connectEnd;\n }\n });\n}\n\nexport function getResourceLoadTime(url : string) : ?number {\n\n if (!enablePerformance()) {\n return;\n }\n\n if (!window.performance || typeof window.performance.getEntries !== 'function') { // eslint-disable-line compat/compat\n return;\n }\n\n const entries = window.performance.getEntries(); // eslint-disable-line compat/compat\n\n for (let i = 0; i < entries.length; i++) {\n const entry = entries[i];\n\n if (entry && entry.name === url && entry.duration && entry.duration >= 0 && entry.duration <= 60000) {\n return Math.floor(entry.duration);\n }\n }\n}\n\nexport function htmlEncode(html : string = '') : string {\n return html.toString()\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(/\\//g, '/');\n}\n","/* @flow */\n\nimport { getParent, isSameDomain } from 'cross-domain-utils/src';\n\nimport { config } from '../config';\n\nimport { supportsPopups } from './device';\n\nexport function allowIframe() : boolean {\n\n if (!supportsPopups()) {\n return true;\n }\n\n const parentWindow = getParent(window);\n if (parentWindow && isSameDomain(parentWindow)) {\n return true;\n }\n\n const parentComponentWindow = window.xchild && window.xchild.getParentComponentWindow();\n if (parentComponentWindow && isSameDomain(parentComponentWindow)) {\n return true;\n }\n\n if (__TEST__) {\n return true;\n }\n\n return false;\n}\n\n\nexport function isPayPalDomain() : boolean {\n return Boolean(`${ window.location.protocol }//${ window.location.host }`.match(config.paypal_domain_regex)) || window.mockDomain === 'mock://www.paypal.com';\n}\n","/* @flow */\n\nexport function PopupOpenError(message : string) {\n this.message = message;\n}\n\nPopupOpenError.prototype = Object.create(Error.prototype);\n\nexport function IntegrationError(message : string) {\n this.message = message;\n}\n\nIntegrationError.prototype = Object.create(Error.prototype);\n\nexport function RenderError(message : string) {\n this.message = message;\n}\n\nRenderError.prototype = Object.create(Error.prototype);\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nexport type Braintree = {|\n client : {\n create : Function\n },\n paypalCheckout : {\n create : Function\n }\n|};\n\nexport type BraintreePayPalClient = {|\n createPayment : Function,\n tokenizePayment : Function\n|};\n\nexport function awaitBraintreeClient(braintree : Braintree, auth : string | ZalgoPromise) : ZalgoPromise {\n return ZalgoPromise.resolve(auth).then(authorization => {\n return braintree.client.create({ authorization });\n }).then(client => {\n return braintree.paypalCheckout.create({ client });\n });\n}\n\nconst SUPPORTED_REST_FIELDS = {\n intent: 1,\n transactions: [\n {\n amount: {\n total: 1,\n currency: 1\n }\n }\n ],\n payer: {\n external_selected_funding_instrument_type: 1,\n shipping_address: {\n line1: 1,\n line2: 1,\n city: 1,\n state: 1,\n postal_code: 1,\n country_code: 1,\n phone: 1,\n recipient_name: 1\n }\n },\n application_context: {\n brand_name: 1,\n shipping_preference: 1,\n landing_page: 1\n }\n};\n\nfunction validate(obj, supported, name) {\n\n const supportedKeys = Object.keys(supported);\n\n for (const key of Object.keys(obj)) {\n\n if (supportedKeys.indexOf(key) === -1) {\n throw new Error(`Unsupported REST key for Braintree: ${ name }.${ key }`);\n }\n\n if (typeof obj[key] === 'object') {\n validate(obj[key], supported[key], `${ name }.${ key }`);\n }\n }\n}\n\nexport function mapPaymentToBraintree(payment : Object) : Object {\n validate(payment, SUPPORTED_REST_FIELDS, 'payment');\n\n const btPayment = {};\n\n btPayment.intent = payment.intent || 'sale';\n btPayment.flow = 'checkout';\n btPayment.amount = payment.transactions[0].amount.total;\n btPayment.currency = payment.transactions[0].amount.currency;\n\n if (payment.payer) {\n if (payment.payer.external_selected_funding_instrument_type === 'CREDIT') {\n btPayment.offerCredit = true;\n }\n\n if (payment.payer.shipping_address) {\n btPayment.shippingAddressOverride = {\n line1: payment.payer.shipping_address.line1,\n line2: payment.payer.shipping_address.line2,\n city: payment.payer.shipping_address.city,\n state: payment.payer.shipping_address.state,\n postalCode: payment.payer.shipping_address.postal_code,\n countryCode: payment.payer.shipping_address.country_code,\n phone: payment.payer.shipping_address.phone,\n recipientName: payment.payer.shipping_address.recipient_name\n };\n }\n }\n\n if (payment.application_context) {\n btPayment.displayName = payment.application_context.brand_name;\n btPayment.landingPageType = payment.application_context.landing_page;\n\n if (payment.application_context) {\n if (payment.application_context.shipping_preference === 'NO_SHIPPING') {\n btPayment.enableShippingAddress = false;\n } else if (payment.application_context.shipping_preference === 'GET_FROM_FILE') {\n btPayment.enableShippingAddress = true;\n btPayment.shippingAddressEditable = true;\n } else if (payment.application_context.shipping_preference === 'SET_PROVIDED_ADDRESS') {\n btPayment.enableShippingAddress = true;\n btPayment.shippingAddressEditable = false;\n }\n }\n }\n\n return btPayment;\n}\n","/* @flow */\n\nexport * from './checkout';\nexport * from './braintree';\n// export * from './popupBridge';\n","/* @flow */\n\nexport * from './script';\nexport * from './react';\nexport * from './vue';\nexport * from './angular';\nexport * from './ember';\nexport * from './glimmer';\nexport * from './angular2';\n","/* @flow */\n\nimport { config } from '../config';\nimport { LOG_LEVEL } from '../constants';\n\nimport { getSessionID, getSessionState } from './session';\n\nconst BEACON_URL = config.loggerUrl;\nconst APP_NAME = 'checkoutjs';\n\nexport function beacon(event : string, payload : Object = {}) {\n try {\n\n payload.event = `ppxo_${ event }`;\n payload.version = __PAYPAL_CHECKOUT__.__MINOR_VERSION__;\n payload.host = window.location.host;\n payload.uid = getSessionID();\n payload.appName = APP_NAME;\n\n let query = [];\n\n for (const key in payload) {\n if (payload.hasOwnProperty(key)) {\n query.push(`${ encodeURIComponent(key) }=${ encodeURIComponent(payload[key]) }`);\n }\n }\n\n query = query.join('&');\n\n if (!__TEST__) {\n const beaconImage = new window.Image();\n beaconImage.src = `${ BEACON_URL }?${ query }`;\n }\n\n setTimeout(() => {\n if (config.logLevel === LOG_LEVEL.DEBUG) {\n if (window.console && window.console.log) {\n window.console.log('*', event, payload);\n }\n }\n }, 1);\n\n } catch (err) {\n // pass\n }\n}\n\nfunction isCheckpointUnique(name : string) : boolean {\n return getSessionState(state => {\n state.loggedBeacons = state.loggedBeacons || [];\n\n if (state.loggedBeacons.indexOf(name) === -1) {\n state.loggedBeacons.push(name);\n return true;\n }\n\n return false;\n });\n}\n\nexport function checkpoint(name : string, payload : Object = {}, options : Object = {}) : void {\n try {\n let checkpointName = name;\n\n if (options.version) {\n const version = __PAYPAL_CHECKOUT__.__MINOR_VERSION__.replace(/[^0-9]+/g, '_');\n checkpointName = `${ version }_${ checkpointName }`;\n }\n\n if (!isCheckpointUnique(checkpointName)) {\n return;\n }\n\n return beacon(checkpointName, payload);\n\n } catch (err) {\n\n // pass\n }\n}\n\n\nconst FPTI_URL = 'https://t.paypal.com/ts';\n\nfunction buildPayload() : Object {\n return {\n v: `checkout.js.${ __PAYPAL_CHECKOUT__.__MINOR_VERSION__ }`,\n t: Date.now(),\n g: new Date().getTimezoneOffset(),\n flnm: 'ec:hermes:',\n shir: 'main_ec_hermes_',\n pgrp: 'main:ec:hermes::incontext-merchant',\n page: 'main:ec:hermes::incontext-merchant',\n vers: 'member:hermes:',\n qual: 'incontext',\n tmpl: 'merchant:incontext'\n };\n}\n\nexport function fpti(payload : Object = {}) {\n\n let query = [];\n\n payload = { ...buildPayload(), ...payload };\n\n for (const key in payload) {\n if (payload.hasOwnProperty(key)) {\n query.push(`${ encodeURIComponent(key) }=${ encodeURIComponent(payload[key]) }`);\n }\n }\n\n query = query.join('&');\n\n try {\n const beaconImage = new window.Image();\n beaconImage.src = `${ FPTI_URL }?${ query }`;\n } catch (err) {\n // pass\n }\n}\n","/* @flow */\n/** @jsx jsxDom */\n\nconst checkoutComponentStyle = `\n\n body {\n width: 100%;\n height: 100%;\n overflow: hidden;\n position: fixed;\n top: 0;\n left: 0;\n margin: 0;\n }\n\n .spinner {\n height: 100%;\n width: 100%;\n position: absolute;\n z-index: 10\n }\n\n .spinner .spinWrap {\n width: 200px;\n height: 100px;\n position: absolute;\n top: 50%;\n left: 50%;\n margin-left: -100px;\n margin-top: -50px\n }\n\n .spinner .loader,\n .spinner .spinnerImage {\n height: 100px;\n width: 100px;\n position: absolute;\n top: 0;\n left: 50%;\n opacity: 1;\n filter: alpha(opacity=100)\n }\n\n .spinner .spinnerImage {\n margin: 28px 0 0 -25px;\n background: url(https://www.paypalobjects.com/images/checkout/hermes/icon_ot_spin_lock_skinny.png) no-repeat\n }\n\n .spinner .loader {\n margin: 0 0 0 -55px;\n background-color: transparent;\n -webkit-animation: rotation .7s infinite linear;\n -moz-animation: rotation .7s infinite linear;\n -o-animation: rotation .7s infinite linear;\n animation: rotation .7s infinite linear;\n border-left: 5px solid #cbcbca;\n border-right: 5px solid #cbcbca;\n border-bottom: 5px solid #cbcbca;\n border-top: 5px solid #2380be;\n border-radius: 100%\n }\n\n @-webkit-keyframes rotation {\n from {\n -webkit-transform: rotate(0deg)\n }\n to {\n -webkit-transform: rotate(359deg)\n }\n }\n @-moz-keyframes rotation {\n from {\n -moz-transform: rotate(0deg)\n }\n to {\n -moz-transform: rotate(359deg)\n }\n }\n @-o-keyframes rotation {\n from {\n -o-transform: rotate(0deg)\n }\n to {\n -o-transform: rotate(359deg)\n }\n }\n @keyframes rotation {\n from {\n transform: rotate(0deg)\n }\n to {\n transform: rotate(359deg)\n }\n }\n`;\n\nexport function componentTemplate({ jsxDom } : { jsxDom : Function }) : HTMLElement {\n\n return (\n \n \n PayPal\n \n \n \n

\n \n\n
\n

\n

\n

\n
\n \n \n );\n}\n","/* @flow */\n\nimport { CHECKOUT_OVERLAY_COLOR } from '../../../constants';\n\nexport function getContainerStyle({ id, tag, CONTEXT, CLASS, ANIMATION } : { id : string, tag : string, CONTEXT : Object, CLASS : Object, ANIMATION : Object }) : string {\n return `\n #${ id } {\n position: absolute;\n z-index: 2147483647;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n\n -webkit-transform: translate3d(0, 0, 0);\n -moz-transform: translate3d(0, 0, 0);\n -ms-transform: translate3d(0, 0, 0);\n -o-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.BLACK } {\n background-color: black;\n background-color: rgba(0, 0, 0, 0.75);\n\n background: -webkit-radial-gradient(50% 50%, ellipse closest-corner, rgba(0,0,0,1) 1%, rgba(0,0,0,0.75) 100%);\n background: -moz-radial-gradient(50% 50%, ellipse closest-corner, rgba(0,0,0,1) 1%, rgba(0,0,0,0.75) 100%);\n background: -ms-radial-gradient(50% 50%, ellipse closest-corner, rgba(0,0,0,1) 1%, rgba(0,0,0,0.75) 100%);\n background: radial-gradient(50% 50%, ellipse closest-corner, rgba(0,0,0,1) 1%, rgba(0,0,0,0.75) 100%);\n\n color: #fff;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.WHITE } {\n background-color: white;\n background-color: rgba(255, 255, 255, 0.4);\n\n background: -webkit-radial-gradient(50% 50%, ellipse closest-corner, rgba(255, 255, 255,1) 1%, rgba(255, 255, 255,0.4) 100%);\n background: -moz-radial-gradient(50% 50%, ellipse closest-corner, rgba(255, 255, 255,1) 1%, rgba(255, 255, 255,0.4) 100%);\n background: -ms-radial-gradient(50% 50%, ellipse closest-corner, rgba(255, 255, 255,1) 1%, rgba(255, 255, 255,0.4) 100%);\n background: radial-gradient(50% 50%, ellipse closest-corner, rgba(255, 255, 255,1) 1%, rgba(255, 255, 255,0.4) 100%);\n\n color: #333;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.BLACK } a {\n color: #fff;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.WHITE } a {\n color: #333;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.BLACK } .paypal-checkout-close:before,\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.BLACK } .paypal-checkout-close:after {\n background-color: #fff;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.WHITE } .paypal-checkout-close:before,\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.WHITE } .paypal-checkout-close:after {\n background-color: #111;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.POPUP } {\n cursor: pointer;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.POPUP } {\n cursor: pointer;\n }\n\n #${ id } a {\n text-decoration: none;\n }\n\n #${ id } .paypal-checkout-modal {\n font-family: \"HelveticaNeue\", \"HelveticaNeue-Light\", \"Helvetica Neue Light\", helvetica, arial, sans-serif;\n font-size: 14px;\n text-align: center;\n\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n -ms-box-sizing: border-box;\n box-sizing: border-box;\n max-width: 350px;\n top: 50%;\n left: 50%;\n position: absolute;\n transform: translateX(-50%) translateY(-50%);\n -webkit-transform: translateX(-50%) translateY(-50%);\n -moz-transform: translateX(-50%) translateY(-50%);\n -o-transform: translateX(-50%) translateY(-50%);\n -ms-transform: translateX(-50%) translateY(-50%);\n cursor: pointer;\n text-align: center;\n }\n\n #${ id }.${ tag }-loading .paypal-checkout-message, #${ id }.${ tag }-loading .paypal-checkout-continue {\n display: none;\n }\n\n .paypal-checkout-loader {\n display: none;\n }\n\n #${ id }.${ tag }-loading .paypal-checkout-loader {\n display: block;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-logo {\n cursor: pointer;\n margin-bottom: 30px;\n display: inline-block;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-logo img {\n height: 36px;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-logo img.paypal-checkout-logo-pp {\n margin-right: 10px;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-message {\n font-size: 15px;\n line-height: 1.5;\n padding: 10px 0;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-message, #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-continue {\n display: none;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-continue {\n font-size: 15px;\n line-height: 1.35;\n padding: 10px 0;\n font-weight: bold;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-continue a {\n border-bottom: 1px solid currentColor;\n }\n\n #${ id } .paypal-checkout-close {\n position: absolute;\n right: 16px;\n top: 16px;\n width: 16px;\n height: 16px;\n opacity: 0.6;\n }\n\n #${ id }.${ tag }-loading .paypal-checkout-close {\n display: none;\n }\n\n #${ id } .paypal-checkout-close:hover {\n opacity: 1;\n }\n\n #${ id } .paypal-checkout-close:before, .paypal-checkout-close:after {\n position: absolute;\n left: 8px;\n content: ' ';\n height: 16px;\n width: 2px;\n }\n\n #${ id } .paypal-checkout-close:before {\n transform: rotate(45deg);\n -webkit-transform: rotate(45deg);\n -moz-transform: rotate(45deg);\n -o-transform: rotate(45deg);\n -ms-transform: rotate(45deg);\n }\n\n #${ id } .paypal-checkout-close:after {\n transform: rotate(-45deg);\n -webkit-transform: rotate(-45deg);\n -moz-transform: rotate(-45deg);\n -o-transform: rotate(-45deg);\n -ms-transform: rotate(-45deg);\n }\n\n #${ id } .paypal-checkout-iframe-container {\n display: none;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container,\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container > .${ CLASS.OUTLET },\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container > .${ CLASS.OUTLET } > iframe {\n max-height: calc(95vh - 60px);\n max-width: 95vw;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container {\n\n display: block;\n\n position: absolute;\n\n top: 50%;\n left: 50%;\n\n min-width: 450px;\n\n transform: translate(-50%, -50%);\n -webkit-transform: translate(-50%, -50%);\n -moz-transform: translate(-50%, -50%);\n -o-transform: translate(-50%, -50%);\n -ms-transform: translate(-50%, -50%);\n\n transform: translate3d(-50%, -50%, 0);\n -webkit-transform: translate3d(-50%, -50%, 0);\n -moz-transform: translate3d(-50%, -50%, 0);\n -o-transform: translate3d(-50%, -50%, 0);\n -ms-transform: translate3d(-50%, -50%, 0);\n\n border-radius: 10px;\n overflow: hidden;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } {\n\n position: relative;\n\n -webkit-transition: all 0.3s ease;\n -moz-transition: all 0.3s ease;\n -ms-transition: all 0.3s ease;\n -o-transition: all 0.3 ease;\n transition: all 0.3s ease;\n\n -webkit-animation-duration: 0.3s;\n animation-duration: 0.3s;\n -webkit-animation-fill-mode: both;\n animation-fill-mode: both;\n\n min-width: 450px;\n max-width: 450px;\n width: 450px;\n height: 535px;\n\n background-color: white;\n\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe {\n position: absolute;\n top: 0;\n left: 0;\n transition: opacity .4s ease-in-out;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe.${ CLASS.COMPONENT_FRAME } {\n z-index: 100;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe.${ CLASS.PRERENDER_FRAME } {\n z-index: 200;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe.${ CLASS.VISIBLE } {\n opacity: 1;\n z-index: 200;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe.${ CLASS.INVISIBLE } {\n opacity: 0;\n z-index: 100;\n }\n\n @media screen and (-ms-high-contrast: active) {\n #${ id } .paypal-checkout-close {\n opacity: 1;\n }\n\n #${ id } .paypal-checkout-close:before , .paypal-checkout-close:after {\n background-color: currentColor;\n }\n }\n\n @media screen and (max-width: 470px) {\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container,\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } {\n min-width: 100%;\n min-width: calc(100% - 20px);\n min-width: -webkit-calc(100% - 20px);\n min-width: -moz-calc(100% - 20px);\n min-width: -o-calc(100% - 20px);\n min-width: -ms-calc(100% - 20px);\n\n max-width: 100%;\n max-width: calc(100% - 20px);\n max-width: -webkit-calc(100% - 20px);\n max-width: -moz-calc(100% - 20px);\n max-width: -o-calc(100% - 20px);\n max-width: -ms-calc(100% - 20px);\n }\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } iframe {\n width: 1px;\n min-width: 100%;\n height: 100%;\n }\n\n @-webkit-keyframes ${ ANIMATION.SHOW_COMPONENT } {\n from {\n opacity: 0;\n transform: scale3d(.3, .3, .3);\n -webkit-transform: scale3d(.3, .3, .3);\n }\n\n to {\n opacity: 1;\n transform: scale3d(1, 1, 1);\n -webkit-transform: scale3d(1, 1, 1);\n }\n }\n\n @keyframes ${ ANIMATION.SHOW_COMPONENT } {\n from {\n opacity: 0;\n transform: scale3d(.3, .3, .3);\n -webkit-transform: scale3d(.3, .3, .3);\n }\n\n to {\n opacity: 1;\n transform: scale3d(1, 1, 1);\n -webkit-transform: scale3d(1, 1, 1);\n }\n }\n\n @-webkit-keyframes ${ ANIMATION.HIDE_COMPONENT } {\n from {\n transform: scale3d(1, 1, 1);\n -webkit-transform: scale3d(1, 1, 1);\n }\n\n to {\n opacity: 0;\n transform: scale3d(.3, .3, .3);\n -webkit-transform: scale3d(.3, .3, .3);\n }\n }\n\n @keyframes ${ ANIMATION.HIDE_COMPONENT } {\n from {\n transform: scale3d(1, 1, 1);\n -webkit-transform: scale3d(1, 1, 1);\n }\n\n to {\n opacity: 0;\n transform: scale3d(.3, .3, .3);\n -webkit-transform: scale3d(.3, .3, .3);\n }\n }\n\n .paypal-spinner {\n height: 30px;\n width: 30px;\n display: inline-block;\n box-sizing: content-box;\n opacity: 1;\n filter: alpha(opacity=100);\n -webkit-animation: rotation .7s infinite linear;\n -moz-animation: rotation .7s infinite linear;\n -o-animation: rotation .7s infinite linear;\n animation: rotation .7s infinite linear;\n border-left: 8px solid rgba(0, 0, 0, .2);\n border-right: 8px solid rgba(0, 0, 0, .2);\n border-bottom: 8px solid rgba(0, 0, 0, .2);\n border-top: 8px solid #fff;\n border-radius: 100%\n }\n\n @-webkit-keyframes rotation {\n from {\n -webkit-transform: rotate(0deg)\n }\n to {\n -webkit-transform: rotate(359deg)\n }\n }\n @-moz-keyframes rotation {\n from {\n -moz-transform: rotate(0deg)\n }\n to {\n -moz-transform: rotate(359deg)\n }\n }\n @-o-keyframes rotation {\n from {\n -o-transform: rotate(0deg)\n }\n to {\n -o-transform: rotate(359deg)\n }\n }\n @keyframes rotation {\n from {\n transform: rotate(0deg)\n }\n to {\n transform: rotate(359deg)\n }\n }\n `;\n}\n","/* @flow */\n\nexport function getSandboxStyle({ id, ANIMATION } : { id : string, ANIMATION : Object }) : string {\n return `\n #${ id }.paypal-checkout-sandbox {\n display: block;\n position: fixed;\n top: 0;\n left: 0;\n\n width: 100%;\n height: 100%;\n width: 100vw;\n height: 100vh;\n max-width: 100%;\n max-height: 100%;\n min-width: 100%;\n min-height: 100%;\n\n z-index: 2147483647;\n\n -webkit-animation-duration: 1s;\n animation-duration: 1s;\n\n animation-fill-mode:forwards;\n animation-iteration-count: 1;\n\n -webkit-animation-fill-mode:forwards;\n -webkit-animation-iteration-count: 1;\n }\n\n #${ id }.paypal-checkout-sandbox .paypal-checkout-sandbox-iframe {\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n }\n\n @-webkit-keyframes ${ ANIMATION.SHOW_CONTAINER } {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n }\n\n @keyframes ${ ANIMATION.SHOW_CONTAINER } {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n }\n\n @-webkit-keyframes ${ ANIMATION.HIDE_CONTAINER } {\n from {\n opacity: 1;\n }\n\n 50% {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n }\n\n @keyframes ${ ANIMATION.HIDE_CONTAINER } {\n from {\n opacity: 1;\n }\n\n 50% {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n }\n `;\n}\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { base64encode } from 'belter/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { fundingLogos } from '../../resources';\nimport { BUTTON_LOGO_COLOR, CHECKOUT_OVERLAY_COLOR } from '../../constants';\nimport { isIos } from '../../lib';\n\nimport { containerContent } from './containerContent';\nimport { getContainerStyle } from './containerStyle';\nimport { getSandboxStyle } from './sandboxStyle';\n\nconst LOGO_COLOR = {\n [ CHECKOUT_OVERLAY_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ CHECKOUT_OVERLAY_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n};\n\nexport {\n getContainerStyle,\n getSandboxStyle\n};\n\n// eslint-disable-next-line flowtype/require-exact-type\nexport type ContainerTemplateOptions = {\n id : string,\n props : Object,\n CLASS : Object,\n ANIMATION : Object,\n CONTEXT : Object,\n EVENT : Object,\n dimensions : {\n width : number,\n height : number\n },\n actions : Object,\n tag : string,\n context : string,\n outlet : HTMLElement,\n on : Function,\n jsxDom : Function\n};\n\nexport function containerTemplate({ id, props, CLASS, ANIMATION, CONTEXT, EVENT, on, tag, context, actions, outlet, jsxDom } : ContainerTemplateOptions) : HTMLElement {\n\n const [ lang, country ] = props.locale.split('_');\n\n const content = containerContent[country][lang];\n\n function close(event) {\n event.preventDefault();\n event.stopPropagation();\n actions.close();\n }\n\n function focus(event) {\n event.preventDefault();\n event.stopPropagation();\n\n if (isIos()) {\n // eslint-disable-next-line no-alert\n window.alert('Please switch tabs to reactivate the PayPal window');\n } else {\n ZalgoPromise.try(actions.focus).catch(actions.close);\n }\n }\n\n const style = props.style || {};\n const overlayColor = style.overlayColor || CHECKOUT_OVERLAY_COLOR.BLACK;\n const logoColor = LOGO_COLOR[overlayColor];\n\n const ppLogo = (typeof fundingLogos.pp === 'function')\n ? fundingLogos.pp({ logoColor })\n : fundingLogos.pp[logoColor];\n\n const paypalLogo = (typeof fundingLogos.paypal === 'function')\n ? fundingLogos.paypal({ logoColor })\n : fundingLogos.paypal[logoColor];\n\n const el = (\n
\n \n
\n
\n \n \n
\n
\n {content.windowMessage}\n
\n
\n
\n
\n
\n
\n\n
\n {outlet}\n
\n\n \n
\n );\n\n const container = (\n \n \n { el }\n \n \n );\n\n on(EVENT.CLOSE, () => {\n el.className += ` ${ tag }-loading`;\n });\n\n return (\n
\n \n\n \n
\n );\n}\n","/* @flow */\n\nexport * from './componentTemplate';\nexport * from './containerTemplate';\n","/* @flow */\n\nimport { config } from '../config';\nimport { FUNDING, PAYMENT_TYPE } from '../constants';\n\nexport function determineParameterFromToken(token : string) : string {\n return (token && token.indexOf('BA-') === 0) ? 'ba_token' : 'token';\n}\n\nexport function getPaymentType(payment : string) : string {\n if (payment.indexOf('BA-') === 0) {\n return PAYMENT_TYPE.BA_TOKEN;\n } else if (payment.indexOf('PAY-') === 0 || payment.indexOf('PAYID-') === 0) {\n return PAYMENT_TYPE.PAY_ID;\n } else if (payment.indexOf('EC-') === 0) {\n return PAYMENT_TYPE.EC_TOKEN;\n }\n\n return PAYMENT_TYPE.EC_TOKEN;\n}\n\nexport function determineUrl(env : string, fundingSource : ?string, payment : string) : string {\n\n const paymentType = getPaymentType(payment);\n\n if (paymentType === PAYMENT_TYPE.BA_TOKEN) {\n return config.billingUrls[env];\n }\n\n if (fundingSource === FUNDING.CARD || fundingSource === FUNDING.ELV) {\n return config.guestUrls[env];\n }\n\n if (fundingSource === FUNDING.IDEAL || fundingSource === FUNDING.BANCONTACT || fundingSource === FUNDING.GIROPAY ||\n fundingSource === FUNDING.SOFORT || fundingSource === FUNDING.EPS || fundingSource === FUNDING.MYBANK ||\n fundingSource === FUNDING.P24 || fundingSource === FUNDING.PAYU || fundingSource === FUNDING.VERKKOPANKKI ||\n fundingSource === FUNDING.BLIK || fundingSource === FUNDING.TRUSTLY || fundingSource === FUNDING.MAXIMA ||\n fundingSource === FUNDING.BOLETO || fundingSource === FUNDING.OXXO) {\n return config.altpayUrls[env];\n }\n\n return config.checkoutUrls[env];\n}\n","/* @flow */\n\nexport function extendNamespace(xports : Object, namespaces : $ReadOnlyArray = [], childnamespaces : $ReadOnlyArray = []) : Object {\n\n for (const name of namespaces) {\n const namespace = window[name];\n\n if (!namespace) {\n continue;\n }\n\n for (const childname of childnamespaces) {\n let childnamespace = xports[childname];\n\n if (namespace[childname]) {\n childnamespace = { ...namespace[childname], ...childnamespace };\n }\n\n xports = { ...namespace, ...xports, [ childname ]: childnamespace };\n }\n }\n\n for (const name of namespaces) {\n window[name] = xports;\n }\n\n return xports;\n}\n","/* @flow */\n/* eslint max-lines: off */\n\nexport const containerContent = {\n 'AT': {\n 'de': {\n 'windowMessage': 'Sie sehen das sichere Browserfenster von PayPal nicht? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ZW': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ZM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ZA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'YT': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'YE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'WS': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'WF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'VU': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'VG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'VE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'VC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'VA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'UY': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'UG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TV': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'TT': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'TO': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'TN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'TM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'TD': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'TC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'SZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SV': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'ST': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SR': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'SO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'SM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SL': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SH': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'SB': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'SA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'RW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'RS': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'RE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'QA': {\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PY': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'PW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'PN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'PM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'PF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'PA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'OM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'NU': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'NR': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'NP': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'NI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'NG': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'NE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'NC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MV': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'MU': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MT': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MS': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'MR': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MQ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MN': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'ML': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'MK': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MH': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'MG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ME': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MD': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MC': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'MA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'LS': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'LK': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'LI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'LC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'LA': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'KZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'KY': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'KW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'KN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'KM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'KI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'KH': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'KG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'KE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'JO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'JM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'IS': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'HR': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'HN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'GY': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'GW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GT': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'GP': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'GM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GL': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'da': {\n 'windowMessage': 'Kan du ikke se PayPals sikre browser? Vi hj\\u00E6lper dig med at genstarte vinduet, s\\u00E5 du kan betale.',\n 'continue': 'Forts\\u00E6t'\n }\n },\n 'GI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GD': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'GA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'FO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'da': {\n 'windowMessage': 'Kan du ikke se PayPals sikre browser? Vi hj\\u00E6lper dig med at genstarte vinduet, s\\u00E5 du kan betale.',\n 'continue': 'Forts\\u00E6t'\n }\n },\n 'FM': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'FK': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'FJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'ET': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ER': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'EG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'EC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'DZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'DO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'DM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'DJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'CY': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CV': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CR': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'CO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'CM': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'CL': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'CK': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CI': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'CG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CD': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'BZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'BY': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BT': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'BS': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'BO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'BN': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'BM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'BJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'BI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'BH': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'BG': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'BB': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'BA': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'AO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'AM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AL': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'AG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'AE': {\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AD': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n }\n },\n 'GB': {\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 PayPal\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\'ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AR': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'US': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Click to Continue'\n }\n },\n 'VN': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment. ',\n 'continue': 'Continue'\n }\n },\n 'UA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TW': {\n 'zh': {\n 'windowMessage': '\\u770B\\u4E0D\\u5230\\u5B89\\u5168\\u9023\\u7DDA\\u7684 PayPal \\u700F\\u89BD\\u5668\\uFF1F\\u6211\\u5011\\u5C07\\u6703\\u91CD\\u65B0\\u555F\\u52D5\\u8996\\u7A97\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002\\u00A0 ',\n 'continue': '\\u7E7C\\u7E8C'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TR': {\n 'tr': {\n 'windowMessage': 'G\\u00FCvenli PayPal taray\\u0131c\\u0131s\\u0131n\\u0131 g\\u00F6rm\\u00FCyor musunuz? Al\\u0131\\u015Fveri\\u015Finizi tamamlamak i\\u00E7in pencereyi yeniden ba\\u015Flatman\\u0131za yard\\u0131mc\\u0131 olaca\\u011F\\u0131z.\\u00A0 ',\n 'continue': 'Devam'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TH': {\n 'th': {\n 'windowMessage': '\\u0E16\\u0E49\\u0E32\\u0E04\\u0E38\\u0E13\\u0E44\\u0E21\\u0E48\\u0E40\\u0E2B\\u0E47\\u0E19\\u0E40\\u0E1A\\u0E23\\u0E32\\u0E27\\u0E4C\\u0E40\\u0E0B\\u0E2D\\u0E23\\u0E4C\\u0E17\\u0E35\\u0E48\\u0E21\\u0E35\\u0E23\\u0E30\\u0E1A\\u0E1A\\u0E04\\u0E27\\u0E32\\u0E21\\u0E1B\\u0E25\\u0E2D\\u0E14\\u0E20\\u0E31\\u0E22\\u0E02\\u0E2D\\u0E07 PayPal \\u0E40\\u0E23\\u0E32\\u0E08\\u0E30\\u0E0A\\u0E48\\u0E27\\u0E22\\u0E04\\u0E38\\u0E13\\u0E40\\u0E1B\\u0E34\\u0E14\\u0E2B\\u0E19\\u0E49\\u0E32\\u0E15\\u0E48\\u0E32\\u0E07\\u0E2D\\u0E35\\u0E01\\u0E04\\u0E23\\u0E31\\u0E49\\u0E07\\u0E40\\u0E1E\\u0E37\\u0E48\\u0E2D\\u0E0A\\u0E33\\u0E23\\u0E30\\u0E40\\u0E07\\u0E34\\u0E19\\u0E43\\u0E2B\\u0E49\\u0E40\\u0E23\\u0E35\\u0E22\\u0E1A\\u0E23\\u0E49\\u0E2D\\u0E22 ',\n 'continue': '\\u0E14\\u0E33\\u0E40\\u0E19\\u0E34\\u0E19\\u0E01\\u0E32\\u0E23\\u0E15\\u0E48\\u0E2D'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SK': {\n 'sk': {\n 'windowMessage': 'Nezobrazuje sa v\\u00e1m zabezpe\\u010den\\u00fd prehliada\\u010d PayPal? Pom\\u00f4\\u017eeme v\\u00e1m znova otvori\\u0165 okno, aby ste mohli n\\u00e1kup dokon\\u010di\\u0165.\\u00A0 ',\n 'continue': 'Pokra\\u010dova\\u0165'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SG': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SE': {\n 'sv': {\n 'windowMessage': 'Ser du inte den s\\u00E4kra PayPal-webbl\\u00E4saren? Vi hj\\u00E4lper dig att starta om f\\u00F6nstret f\\u00F6r att slutf\\u00F6ra ditt k\\u00F6p. ',\n 'continue': 'Forts\\u00E4tt'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'RU': {\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'RO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PT': {\n 'pt': {\n 'windowMessage': 'N\\u00E3o v\\u00EA a indica\\u00E7\\u00E3o de sess\\u00E3o segura PayPal no browser? Vamos ajudar a reabrir a janela para que possa concluir a sua compra.',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PL': {\n 'pl': {\n 'windowMessage': 'Nie widzisz bezpiecznej przegl\\u0105darki PayPal? Pomo\\u017Cemy Ci ponownie uruchomi\\u0107 to okno w celu dokonania zakupu.\\u00A0 ',\n 'continue': 'Kontynuuj'\n },\n 'en': {\n 'windowMessage': 'You don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PH': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre paiement.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Le ayudaremos a abrir de nuevo la ventana para completar su pago.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NO': {\n 'no': {\n 'windowMessage': 'Ser du ikke den sikre PayPal-nettleseren? Vi hjelper deg med \\u00E5 starte vinduet p\\u00E5 nytt s\\u00E5 du kan fullf\\u00F8re kj\\u00F8pet.\\u00A0 ',\n 'continue': 'Fortsett'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NL': {\n 'nl': {\n 'windowMessage': 'Ziet u geen beveiligde PayPal-browser? We helpen u het venster opnieuw te openen om uw aankoop te voltooien.\\u00A0 ',\n 'continue': 'Doorgaan'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MY': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MX': {\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'LV': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'LU': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'de': {\n 'windowMessage': 'Das PayPal-Fenster wird nicht angezeigt? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n }\n },\n 'LT': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'KR': {\n 'ko': {\n 'windowMessage': '\\uBCF4\\uC548 PayPal \\uBE0C\\uB77C\\uC6B0\\uC800\\uAC00 \\uBCF4\\uC774\\uC9C0 \\uC54A\\uC73C\\uC2E0\\uAC00\\uC694? \\uCC3D\\uC744 \\uB2E4\\uC2DC \\uC2E4\\uD589\\uD558\\uC5EC \\uACB0\\uC81C\\uB97C \\uC644\\uB8CC\\uD560 \\uC218 \\uC788\\uB3C4\\uB85D \\uB3C4\\uC640\\uB4DC\\uB9AC\\uACA0\\uC2B5\\uB2C8\\uB2E4.\\u00A0 ',\n 'continue': '\\uACC4\\uC18D'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'JP': {\n 'ja': {\n 'windowMessage': '\\u30BB\\u30AD\\u30E5\\u30A2\\u306A\\u30D6\\u30E9\\u30A6\\u30B6\\u304C\\u8868\\u793A\\u3055\\u308C\\u306A\\u3044\\u5834\\u5408\\u306F\\u3001\\u30A6\\u30A3\\u30F3\\u30C9\\u30A6\\u3092\\u518D\\u8D77\\u52D5\\u3057\\u3066\\u3001\\u652F\\u6255\\u3044\\u3092\\u5B8C\\u4E86\\u3067\\u304D\\u308B\\u3088\\u3046\\u304A\\u624B\\u4F1D\\u3044\\u3044\\u305F\\u3057\\u307E\\u3059\\u3002',\n 'continue': '\\u7D9A\\u884C'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment. ',\n 'continue': 'Continue'\n }\n },\n 'IT': {\n 'it': {\n 'windowMessage': 'Non vedi la pagina sicura di PayPal? Ti aiuteremo a riaprire la finestra per completare l\\'acquisto.\\u00A0 ',\n 'continue': 'Continua'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'IN': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'IL': {\n 'he': {\n 'windowMessage': '\\u05DC\\u05D0 \\u05E8\\u05D5\\u05D0\\u05D4 \\u05D0\\u05EA \\u05D3\\u05E4\\u05D3\\u05E4\\u05DF PayPal \\u05D4\\u05DE\\u05D0\\u05D5\\u05D1\\u05D8\\u05D7? \\u05E0\\u05E2\\u05D6\\u05D5\\u05E8 \\u05DC\\u05DA \\u05DC\\u05E4\\u05EA\\u05D5\\u05D7 \\u05DE\\u05D7\\u05D3\\u05E9 \\u05D0\\u05EA \\u05D4\\u05D7\\u05DC\\u05D5\\u05DF \\u05DB\\u05D3\\u05D9 \\u05DC\\u05D4\\u05E9\\u05DC\\u05D9\\u05DD \\u05D0\\u05EA \\u05D4\\u05E7\\u05E0\\u05D9\\u05D9\\u05D4 \\u05E9\\u05DC\\u05DA.\\u00A0 ',\n 'continue': '\\u05D4\\u05DE\\u05E9\\u05DA'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'IE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'HU': {\n 'hu': {\n 'windowMessage': 'Nem l\\u00e1tja a biztons\\u00e1gos PayPal-b\\u00f6ng\\u00e9sz\\u0151t? Seg\\u00edt\\u00fcnk \\u00fajra bet\\u00f6lteni az ablakot, hogy befejezhesse a v\\u00e1s\\u00e1rl\\u00e1st.\\u00A0 ',\n 'continue': 'Folytat\\u00e1s'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ID': {\n 'id': {\n 'windowMessage': 'Browser PayPal yang aman tidak terlihat? Kami akan membantu menampilkan ulang jendela untuk menyelesaikan pembayaran Anda.\\u00A0 ',\n 'continue': 'Lanjutkan'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'HK': {\n 'zh': {\n 'windowMessage': '\\u770B\\u4E0D\\u5230\\u5B89\\u5168\\u7684 PayPal \\u700F\\u89BD\\u5668\\u8996\\u7A97\\uFF1F\\u6211\\u5011\\u6703\\u52A9\\u4F60\\u91CD\\u65B0\\u958B\\u555F\\u8996\\u7A97\\uFF0C\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002',\n 'continue': '\\u7E7C\\u7E8C'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GROUP-LATAM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'GROUP-EMEA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'pt': {\n 'windowMessage': 'N\\u00E3o v\\u00EA a indica\\u00E7\\u00E3o de sess\\u00E3o segura PayPal no browser? Vamos ajudar a reabrir a janela para que possa concluir a sua compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'de': {\n 'windowMessage': 'Sie sehen das sichere Browserfenster von PayPal nicht? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n },\n 'da': {\n 'windowMessage': 'Kan du ikke se PayPals sikre browser? Vi hj\\u00E6lper dig med at genstarte vinduet, s\\u00E5 du kan betale.',\n 'continue': 'Forts\\u00E6t'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'GROUP-APAC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ko': {\n 'windowMessage': '\\uBCF4\\uC548 PayPal \\uBE0C\\uB77C\\uC6B0\\uC800\\uAC00 \\uBCF4\\uC774\\uC9C0 \\uC54A\\uC73C\\uC2E0\\uAC00\\uC694? \\uCC3D\\uC744 \\uB2E4\\uC2DC \\uC2E4\\uD589\\uD558\\uC5EC \\uAD6C\\uB9E4\\uB97C \\uC644\\uB8CC\\uD560 \\uC218 \\uC788\\uB3C4\\uB85D \\uB3C4\\uC640\\uB4DC\\uB9AC\\uACA0\\uC2B5\\uB2C8\\uB2E4. ',\n 'continue': '\\uACC4\\uC18D'\n },\n 'id': {\n 'windowMessage': 'Browser PayPal yang aman tidak terlihat? Kami akan membantu menampilkan ulang jendela untuk menyelesaikan pembelian Anda. ',\n 'continue': 'Lanjutkan'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'GR': {\n 'el': {\n 'windowMessage': '\\u0394\\u03b5\\u03bd \\u03b2\\u03bb\\u03ad\\u03c0\\u03b5\\u03c4\\u03b5 \\u03c4\\u03bf \\u03b1\\u03c3\\u03c6\\u03b1\\u03bb\\u03ad\\u03c2 \\u03c0\\u03c1\\u03cc\\u03b3\\u03c1\\u03b1\\u03bc\\u03bc\\u03b1 \\u03c0\\u03b5\\u03c1\\u03b9\\u03ae\\u03b3\\u03b7\\u03c3\\u03b7\\u03c2 PayPal; \\u0398\\u03b1 \\u03c3\\u03b1\\u03c2 \\u03b2\\u03bf\\u03b7\\u03b8\\u03ae\\u03c3\\u03bf\\u03c5\\u03bc\\u03b5 \\u03bd\\u03b1 \\u03b5\\u03c0\\u03b1\\u03bd\\u03b5\\u03ba\\u03ba\\u03b9\\u03bd\\u03ae\\u03c3\\u03b5\\u03c4\\u03b5 \\u03c4\\u03bf \\u03c0\\u03b1\\u03c1\\u03ac\\u03b8\\u03c5\\u03c1\\u03bf \\u03b3\\u03b9\\u03b1 \\u03bd\\u03b1 \\u03bf\\u03bb\\u03bf\\u03ba\\u03bb\\u03b7\\u03c1\\u03ce\\u03c3\\u03b5\\u03c4\\u03b5 \\u03c4\\u03b7\\u03bd \\u03b1\\u03b3\\u03bf\\u03c1\\u03ac \\u03c3\\u03b1\\u03c2.\\u00A0 ',\n 'continue': '\\u03a3\\u03c5\\u03bd\\u03ad\\u03c7\\u03b5\\u03b9\\u03b1'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'FR': {\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 PayPal\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ES': {\n 'es': {\n 'windowMessage': '\\u00BFNo ve el s\\u00EDmbolo de navegaci\\u00F3n segura de PayPal? Le ayudaremos a abrir de nuevo la ventana para completar la compra. ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'FI': {\n 'fi': {\n 'windowMessage': 'Eik\\u00f6 suojattua PayPal-selainta n\\u00e4y? Autamme avaamaan ikkunan uudelleen oston viimeistely\\u00e4 varten.\\u00A0 ',\n 'continue': 'Jatka'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'EE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'DK': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'da': {\n 'windowMessage': 'Kan du ikke se PayPals sikre browser? Vi hj\\u00E6lper dig med at genstarte vinduet, s\\u00E5 du kan betale.',\n 'continue': 'Forts\\u00E6t'\n }\n },\n 'CZ': {\n 'cs': {\n 'windowMessage': 'Nezobrazuje se v\\u00e1m bezpe\\u010dn\\u00fd prohl\\u00ed\\u017ee\\u010d PayPal? Pom\\u016f\\u017eeme v\\u00e1m okno znovu otev\\u0159\\u00edt, abyste mohli n\\u00e1kup dokon\\u010dit.',\n 'continue': 'Pokra\\u010dovat'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'DE': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'de': {\n 'windowMessage': 'Sie sehen das sichere Browserfenster von PayPal nicht? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n }\n },\n 'CH': {\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 PayPal\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'de': {\n 'windowMessage': 'Sie sehen das sichere Browserfenster von PayPal nicht? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n }\n },\n 'CA': {\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 de PayPal\\u00A0? Nous vous aiderons \\u00E0 relancer la fen\\u00EAtre afin d\\'effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you relaunch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'C2': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BE': {\n 'nl': {\n 'windowMessage': 'Ziet u de beveiligde PayPal-browser niet? We helpen u het venster opnieuw te openen om uw aankoop te voltooien.\\u00A0 ',\n 'continue': 'Doorgaan'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 PayPal\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BR': {\n 'pt': {\n 'windowMessage': 'N\\u00E3o est\\u00E1 vendo o navegador seguro do PayPal? Ajudaremos voc\\u00EA a reabrir a janela para concluir a compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AU': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\'ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n }\n};\n","/*\n * [hi-base32]{@link https://github.com/emn178/hi-base32}\n *\n * @version 0.5.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var root = typeof window === 'object' ? window : {};\n var NODE_JS = !root.HI_BASE32_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n }\n var COMMON_JS = !root.HI_BASE32_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var BASE32_ENCODE_CHAR = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'.split('');\n var BASE32_DECODE_CHAR = {\n 'A': 0, 'B': 1, 'C': 2, 'D': 3, 'E': 4, 'F': 5, 'G': 6, 'H': 7, 'I': 8,\n 'J': 9, 'K': 10, 'L': 11, 'M': 12, 'N': 13, 'O': 14, 'P': 15, 'Q': 16,\n 'R': 17, 'S': 18, 'T': 19, 'U': 20, 'V': 21, 'W': 22, 'X': 23, 'Y': 24,\n 'Z': 25, '2': 26, '3': 27, '4': 28, '5': 29, '6': 30, '7': 31\n };\n\n var blocks = [0, 0, 0, 0, 0, 0, 0, 0];\n\n var throwInvalidUtf8 = function (position, partial) {\n if (partial.length > 10) {\n partial = '...' + partial.substr(-10);\n }\n var err = new Error('Decoded data is not valid UTF-8.'\n + ' Maybe try base32.decode.asBytes()?'\n + ' Partial data after reading ' + position + ' bytes: ' + partial + ' <-');\n err.position = position;\n throw err;\n };\n\n var toUtf8String = function (bytes) {\n var str = '', length = bytes.length, i = 0, followingChars = 0, b, c;\n while (i < length) {\n b = bytes[i++];\n if (b <= 0x7F) {\n str += String.fromCharCode(b);\n continue;\n } else if (b > 0xBF && b <= 0xDF) {\n c = b & 0x1F;\n followingChars = 1;\n } else if (b <= 0xEF) {\n c = b & 0x0F;\n followingChars = 2;\n } else if (b <= 0xF7) {\n c = b & 0x07;\n followingChars = 3;\n } else {\n throwInvalidUtf8(i, str);\n }\n\n for (var j = 0; j < followingChars; ++j) {\n b = bytes[i++];\n if (b < 0x80 || b > 0xBF) {\n throwInvalidUtf8(i, str);\n }\n c <<= 6;\n c += b & 0x3F;\n }\n if (c >= 0xD800 && c <= 0xDFFF) {\n throwInvalidUtf8(i, str);\n }\n if (c > 0x10FFFF) {\n throwInvalidUtf8(i, str);\n }\n\n if (c <= 0xFFFF) {\n str += String.fromCharCode(c);\n } else {\n c -= 0x10000;\n str += String.fromCharCode((c >> 10) + 0xD800);\n str += String.fromCharCode((c & 0x3FF) + 0xDC00);\n }\n }\n return str;\n };\n\n var decodeAsBytes = function (base32Str) {\n if (!/^[A-Z2-7=]+$/.test(base32Str)) {\n throw new Error('Invalid base32 characters');\n }\n base32Str = base32Str.replace(/=/g, '');\n var v1, v2, v3, v4, v5, v6, v7, v8, bytes = [], index = 0, length = base32Str.length;\n\n // 4 char to 3 bytes\n for (var i = 0, count = length >> 3 << 3; i < count;) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v8 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255;\n bytes[index++] = (v4 << 4 | v5 >>> 1) & 255;\n bytes[index++] = (v5 << 7 | v6 << 2 | v7 >>> 3) & 255;\n bytes[index++] = (v7 << 5 | v8) & 255;\n }\n\n // remain bytes\n var remain = length - count;\n if (remain === 2) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n } else if (remain === 4) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255;\n } else if (remain === 5) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255;\n bytes[index++] = (v4 << 4 | v5 >>> 1) & 255;\n } else if (remain === 7) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255;\n bytes[index++] = (v4 << 4 | v5 >>> 1) & 255;\n bytes[index++] = (v5 << 7 | v6 << 2 | v7 >>> 3) & 255;\n }\n return bytes;\n };\n\n var encodeAscii = function (str) {\n var v1, v2, v3, v4, v5, base32Str = '', length = str.length;\n for (var i = 0, count = parseInt(length / 5) * 5; i < count;) {\n v1 = str.charCodeAt(i++);\n v2 = str.charCodeAt(i++);\n v3 = str.charCodeAt(i++);\n v4 = str.charCodeAt(i++);\n v5 = str.charCodeAt(i++);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3 | v5 >>> 5) & 31] +\n BASE32_ENCODE_CHAR[v5 & 31];\n }\n\n // remain char\n var remain = length - count;\n if (remain === 1) {\n v1 = str.charCodeAt(i);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2) & 31] +\n '======';\n } else if (remain === 2) {\n v1 = str.charCodeAt(i++);\n v2 = str.charCodeAt(i);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4) & 31] +\n '====';\n } else if (remain === 3) {\n v1 = str.charCodeAt(i++);\n v2 = str.charCodeAt(i++);\n v3 = str.charCodeAt(i);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1) & 31] +\n '===';\n } else if (remain === 4) {\n v1 = str.charCodeAt(i++);\n v2 = str.charCodeAt(i++);\n v3 = str.charCodeAt(i++);\n v4 = str.charCodeAt(i);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3) & 31] +\n '=';\n }\n return base32Str;\n };\n\n var encodeUtf8 = function (str) {\n var v1, v2, v3, v4, v5, code, end = false, base32Str = '',\n index = 0, i, start = 0, bytes = 0, length = str.length;\n do {\n blocks[0] = blocks[5];\n blocks[1] = blocks[6];\n blocks[2] = blocks[7];\n for (i = start; index < length && i < 5; ++index) {\n code = str.charCodeAt(index);\n if (code < 0x80) {\n blocks[i++] = code;\n } else if (code < 0x800) {\n blocks[i++] = 0xc0 | (code >> 6);\n blocks[i++] = 0x80 | (code & 0x3f);\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i++] = 0xe0 | (code >> 12);\n blocks[i++] = 0x80 | ((code >> 6) & 0x3f);\n blocks[i++] = 0x80 | (code & 0x3f);\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++index) & 0x3ff));\n blocks[i++] = 0xf0 | (code >> 18);\n blocks[i++] = 0x80 | ((code >> 12) & 0x3f);\n blocks[i++] = 0x80 | ((code >> 6) & 0x3f);\n blocks[i++] = 0x80 | (code & 0x3f);\n }\n }\n bytes += i - start;\n start = i - 5;\n if (index === length) {\n ++index;\n }\n if (index > length && i < 6) {\n end = true;\n }\n v1 = blocks[0];\n if (i > 4) {\n v2 = blocks[1];\n v3 = blocks[2];\n v4 = blocks[3];\n v5 = blocks[4];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3 | v5 >>> 5) & 31] +\n BASE32_ENCODE_CHAR[v5 & 31];\n } else if (i === 1) {\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2) & 31] +\n '======';\n } else if (i === 2) {\n v2 = blocks[1];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4) & 31] +\n '====';\n } else if (i === 3) {\n v2 = blocks[1];\n v3 = blocks[2];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1) & 31] +\n '===';\n } else {\n v2 = blocks[1];\n v3 = blocks[2];\n v4 = blocks[3];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3) & 31] +\n '=';\n }\n } while (!end);\n return base32Str;\n };\n\n var encodeBytes = function (bytes) {\n var v1, v2, v3, v4, v5, base32Str = '', length = bytes.length;\n for (var i = 0, count = parseInt(length / 5) * 5; i < count;) {\n v1 = bytes[i++];\n v2 = bytes[i++];\n v3 = bytes[i++];\n v4 = bytes[i++];\n v5 = bytes[i++];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3 | v5 >>> 5) & 31] +\n BASE32_ENCODE_CHAR[v5 & 31];\n }\n\n // remain char\n var remain = length - count;\n if (remain === 1) {\n v1 = bytes[i];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2) & 31] +\n '======';\n } else if (remain === 2) {\n v1 = bytes[i++];\n v2 = bytes[i];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4) & 31] +\n '====';\n } else if (remain === 3) {\n v1 = bytes[i++];\n v2 = bytes[i++];\n v3 = bytes[i];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1) & 31] +\n '===';\n } else if (remain === 4) {\n v1 = bytes[i++];\n v2 = bytes[i++];\n v3 = bytes[i++];\n v4 = bytes[i];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3) & 31] +\n '=';\n }\n return base32Str;\n };\n\n var encode = function (input, asciiOnly) {\n var notString = typeof(input) !== 'string';\n if (notString && input.constructor === ArrayBuffer) {\n input = new Uint8Array(input);\n }\n if (notString) {\n return encodeBytes(input);\n } else if (asciiOnly) {\n return encodeAscii(input);\n } else {\n return encodeUtf8(input);\n }\n };\n\n var decode = function (base32Str, asciiOnly) {\n if (!asciiOnly) {\n return toUtf8String(decodeAsBytes(base32Str));\n }\n if (!/^[A-Z2-7=]+$/.test(base32Str)) {\n throw new Error('Invalid base32 characters');\n }\n var v1, v2, v3, v4, v5, v6, v7, v8, str = '', length = base32Str.indexOf('=');\n if (length === -1) {\n length = base32Str.length;\n }\n\n // 8 char to 5 bytes\n for (var i = 0, count = length >> 3 << 3; i < count;) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v8 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255) +\n String.fromCharCode((v2 << 6 | v3 << 1 | v4 >>> 4) & 255) +\n String.fromCharCode((v4 << 4 | v5 >>> 1) & 255) +\n String.fromCharCode((v5 << 7 | v6 << 2 | v7 >>> 3) & 255) +\n String.fromCharCode((v7 << 5 | v8) & 255);\n }\n\n // remain bytes\n var remain = length - count;\n if (remain === 2) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255);\n } else if (remain === 4) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255) +\n String.fromCharCode((v2 << 6 | v3 << 1 | v4 >>> 4) & 255);\n } else if (remain === 5) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255) +\n String.fromCharCode((v2 << 6 | v3 << 1 | v4 >>> 4) & 255) +\n String.fromCharCode((v4 << 4 | v5 >>> 1) & 255);\n } else if (remain === 7) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255) +\n String.fromCharCode((v2 << 6 | v3 << 1 | v4 >>> 4) & 255) +\n String.fromCharCode((v4 << 4 | v5 >>> 1) & 255) +\n String.fromCharCode((v5 << 7 | v6 << 2 | v7 >>> 3) & 255);\n }\n return str;\n };\n\n var exports = {\n encode: encode,\n decode: decode\n };\n decode.asBytes = decodeAsBytes;\n\n if (COMMON_JS) {\n module.exports = exports;\n } else {\n root.base32 = exports;\n if (AMD) {\n define(function() {\n return exports;\n });\n }\n }\n})();\n","/* @flow */\n\nimport type { Component, ComponentDriverType } from '../component/component';\n\nexport let script : ComponentDriverType<*, Document> = {\n\n global() : ?Document {\n return window.document;\n },\n\n register(component : Component<*>, document : Document) {\n\n function render(element : HTMLElement) {\n\n if (!element || !element.tagName || element.tagName.toLowerCase() !== 'script') {\n return;\n }\n\n // $FlowFixMe\n if (!element.attributes.type || element.attributes.type.value !== 'application/x-component' || !element.parentNode) {\n return;\n }\n\n let tag = element.getAttribute('data-component');\n\n if (!tag || tag !== component.tag) {\n return;\n }\n\n component.log(`instantiate_script_component`);\n\n let props : { [string] : mixed } = element.innerText\n ? eval(`(${ element.innerText })`) // eslint-disable-line no-eval, security/detect-eval-with-expression\n : {};\n\n let container = document.createElement('div');\n\n if (!element.parentNode) {\n throw new Error(`Element has no parent`);\n }\n\n element.parentNode.replaceChild(container, element);\n\n // $FlowFixMe\n component.render(props, container);\n }\n\n function scan() {\n let scriptTags = Array.prototype.slice.call(document.getElementsByTagName('script'));\n\n for (let element of scriptTags) {\n render(element);\n }\n }\n\n scan();\n document.addEventListener('DOMContentLoaded', scan);\n window.addEventListener('load', scan);\n\n document.addEventListener('DOMNodeInserted', event => {\n // $FlowFixMe\n render(event.target);\n });\n }\n};\n","/* @flow */\n\nimport { extend } from '../lib';\nimport type { Component, ComponentDriverType } from '../component/component';\n\ndeclare class ReactClassType {\n\n}\n\ntype ReactElementType = {\n\n};\n\ntype ReactType = {\n createClass : ({ render : ReactElementType, componentDidMount : () => void, componentDidUpdate : () => void }) => (typeof ReactClassType),\n createElement : (string, ?{ [string] : mixed }, ...children : Array) => ReactElementType\n};\n\ntype ReactDomType = {\n findDOMNode : (ReactElementType) => HTMLElement\n};\n\ntype ReactLibraryType = { React : ReactType, ReactDOM : ReactDomType };\n\nexport let react : ComponentDriverType<*, ReactLibraryType> = {\n\n global() : ?ReactLibraryType {\n if (window.React && window.ReactDOM) {\n return {\n React: window.React,\n ReactDOM: window.ReactDOM\n };\n }\n },\n\n register(component : Component<*>, { React, ReactDOM } : ReactLibraryType) : (typeof ReactClassType) {\n\n if (React.createClass) {\n\n // $FlowFixMe\n component.react = React.createClass({\n\n render() : ReactElementType {\n return React.createElement('div', null);\n },\n\n componentDidMount() {\n component.log(`instantiate_react_component`);\n\n let el = ReactDOM.findDOMNode(this);\n\n let parent = component.init(extend({}, this.props), null, el);\n\n this.setState({ parent });\n\n parent.render(el);\n },\n\n componentDidUpdate() {\n\n if (this.state && this.state.parent) {\n this.state.parent.updateProps(extend({}, this.props));\n }\n },\n\n componentWillUnmount() {\n if (this.state && this.state.parent) {\n this.state.parent.destroy();\n }\n }\n });\n } else {\n // $FlowFixMe\n component.react = class extends React.Component {\n render() : ReactElementType {\n return React.createElement('div', null);\n }\n\n componentDidMount() {\n component.log(`instantiate_react_component`);\n\n let el = ReactDOM.findDOMNode(this);\n\n let parent = component.init(extend({}, this.props), null, el);\n\n this.setState({ parent });\n\n parent.render(el);\n }\n\n componentDidUpdate() {\n\n if (this.state && this.state.parent) {\n this.state.parent.updateProps(extend({}, this.props));\n }\n }\n\n componentWillUnmount() {\n if (this.state && this.state.parent) {\n this.state.parent.destroy();\n }\n }\n };\n }\n\n return component.react;\n }\n};\n","/* @flow */\n\nimport type { Component, ComponentDriverType } from '../component/component';\nimport { extend } from '../lib';\n\ntype VueComponent = {\n render : (Function) => Element,\n inheritAttrs : boolean,\n mounted : () => void,\n beforeUpdate : () => void\n};\n\nexport let vue : ComponentDriverType<*, void> = {\n\n global() {\n // pass\n },\n\n register

(component : Component

) : VueComponent {\n\n return {\n render(createElement) : Element {\n return createElement('div');\n },\n\n inheritAttrs: false,\n\n mounted() {\n let el = this.$el;\n\n // $FlowFixMe\n this.parent = component.init(extend({}, this.$attrs), null, el);\n\n this.parent.render(el);\n },\n\n beforeUpdate() {\n \n if (this.parent && this.$attrs) {\n this.parent.updateProps(extend({}, this.$attrs));\n }\n }\n };\n }\n};\n","/* @flow */\n\nimport { dasherizeToCamel, replaceObject } from '../lib';\nimport type { Component, ComponentDriverType } from '../component/component';\n\ntype AngularModule = {\n directive : (string, () => {\n scope : { [string] : '=' | '@' },\n restrict : string,\n controller : Array\n }) => AngularModule\n};\n\ntype Angular = {\n module : (string, Array) => AngularModule\n};\n\nexport let angular : ComponentDriverType<*, Angular> = {\n\n global() : ?Angular {\n return window.angular;\n },\n\n register(component : Component<*>, ng : Angular) : AngularModule {\n\n let module = ng.module(component.tag, []).directive(dasherizeToCamel(component.tag), () => {\n\n let scope = {};\n\n for (let key of component.getPropNames()) {\n scope[key] = '=';\n }\n\n if (component.looseProps) {\n scope.props = '=';\n }\n\n return {\n scope,\n\n restrict: 'E',\n\n controller: [ '$scope', '$element', ($scope, $element) => {\n\n if (component.looseProps && !$scope.props) {\n throw new Error(`For angular bindings to work, prop definitions must be passed to zoid.create`);\n }\n\n component.log(`instantiate_angular_component`);\n\n function safeApply() {\n if ($scope.$root.$$phase !== '$apply' && $scope.$root.$$phase !== '$digest') {\n try {\n $scope.$apply();\n } catch (err) {\n // pass\n }\n }\n }\n\n let getProps = () => {\n\n let scopeProps;\n\n if ($scope.props) {\n scopeProps = $scope.props;\n } else {\n scopeProps = {};\n for (let key of Object.keys(scope)) {\n if ($scope[key] !== undefined) {\n scopeProps[key] = $scope[key];\n }\n }\n }\n\n scopeProps = replaceObject(scopeProps, {\n 'function': (value) => {\n return function angularWrapped() : mixed {\n let result = value.apply(this, arguments);\n safeApply();\n return result;\n };\n }\n });\n\n return scopeProps;\n };\n\n let parent = component.init(getProps(), null, $element[0]);\n parent.render($element[0]);\n\n $scope.$watch(() => {\n parent.updateProps(getProps());\n });\n } ]\n };\n });\n\n return module;\n }\n};\n","/* @flow */\n\nimport type { Component, ComponentDriverType } from '../component/component';\n\ndeclare class GlimmerComponentType {\n element : HTMLElement,\n args : Object\n}\n\nexport let glimmer : ComponentDriverType<*, (typeof GlimmerComponentType)> = {\n\n global() {\n // pass\n },\n\n register(component : Component<*>, GlimmerComponent : (typeof GlimmerComponentType)) : (typeof GlimmerComponentType) {\n return class extends GlimmerComponent {\n didInsertElement() {\n component.render({ ...this.args }, this.element);\n }\n };\n }\n};\n","/* @flow */\n/* eslint new-cap: 0 */\n\nimport { replaceObject } from '../lib';\nimport type { Component, ComponentDriverType } from '../component/component';\n\ntype Angular2Injection = {};\n\ntype Angular2Component = {};\n\ntype Angular2Module = {};\n\ntype Angular2 = {\n Component : ({ selector : string, template : string, inputs : Array }) => {\n Class : ({ constructor : Array, ngOnInit : () => void, ngOnChanges : () => void }) => Angular2Component\n },\n NgModule : ({ declarations : Array, exports : Array }) => {\n Class : ({ constructor : () => void }) => Angular2Module\n },\n ElementRef : Angular2Injection,\n NgZone : Angular2Injection\n};\n\n\nexport let angular2 : ComponentDriverType<*, Angular2> = {\n\n global() {\n // pass\n },\n\n register(zoid : Component<*>, { Component : AngularComponent, NgModule, ElementRef, NgZone }) : Angular2Module {\n\n zoid.log('initializing angular2 component');\n\n let getProps = (component) => {\n return replaceObject({ ...component.internalProps, ...component.props }, {\n 'function': (value) => {\n if (typeof value === 'function') {\n return function angular2Wrapped() : void {\n return component.zone.run(() => value.apply(this, arguments));\n };\n }\n }\n });\n };\n\n const ComponentInstance =\n AngularComponent({\n selector: zoid.tag,\n template: '

',\n inputs: [ 'props' ]\n }).Class({\n constructor: [ ElementRef, NgZone, function angularConstructor(elementRef, zone) {\n this.elementRef = elementRef;\n this.zone = zone;\n } ],\n ngOnInit () {\n const targetElement = this.elementRef.nativeElement;\n const parent = zoid.init(getProps(this), null, targetElement);\n parent.render(targetElement);\n this.parent = parent;\n },\n ngOnChanges() {\n if (this.parent) {\n this.parent.updateProps(getProps(this));\n }\n }\n });\n\n\n const ModuleInstance = NgModule({\n declarations: [ ComponentInstance ],\n exports: [ ComponentInstance ]\n }).Class({\n constructor () {\n // pass\n }\n });\n\n return ModuleInstance;\n }\n};\n","/*!\n * Bowser - a browser detector\n * https://github.com/ded/bowser\n * MIT License | (c) Dustin Diaz 2015\n */\n!function(e,t,n){typeof module!=\"undefined\"&&module.exports?module.exports=n():typeof define==\"function\"&&define.amd?define(t,n):e[t]=n()}(this,\"bowser\",function(){function t(t){function n(e){var n=t.match(e);return n&&n.length>1&&n[1]||\"\"}function r(e){var n=t.match(e);return n&&n.length>1&&n[2]||\"\"}function C(e){switch(e){case\"NT\":return\"NT\";case\"XP\":return\"XP\";case\"NT 5.0\":return\"2000\";case\"NT 5.1\":return\"XP\";case\"NT 5.2\":return\"2003\";case\"NT 6.0\":return\"Vista\";case\"NT 6.1\":return\"7\";case\"NT 6.2\":return\"8\";case\"NT 6.3\":return\"8.1\";case\"NT 10.0\":return\"10\";default:return undefined}}var i=n(/(ipod|iphone|ipad)/i).toLowerCase(),o=/like android/i.test(t),u=!o&&/android/i.test(t),a=/nexus\\s*[0-6]\\s*/i.test(t),f=!a&&/nexus\\s*[0-9]+/i.test(t),l=/CrOS/.test(t),c=/silk/i.test(t),h=/sailfish/i.test(t),p=/tizen/i.test(t),d=/(web|hpw)(o|0)s/i.test(t),v=/windows phone/i.test(t),m=/SamsungBrowser/i.test(t),g=!v&&/windows/i.test(t),y=!i&&!c&&/macintosh/i.test(t),b=!u&&!h&&!p&&!d&&/linux/i.test(t),w=r(/edg([ea]|ios)\\/(\\d+(\\.\\d+)?)/i),E=n(/version\\/(\\d+(\\.\\d+)?)/i),S=/tablet/i.test(t)&&!/tablet pc/i.test(t),x=!S&&/[^-]mobi/i.test(t),T=/xbox/i.test(t),N;/opera/i.test(t)?N={name:\"Opera\",opera:e,version:E||n(/(?:opera|opr|opios)[\\s\\/](\\d+(\\.\\d+)?)/i)}:/opr\\/|opios/i.test(t)?N={name:\"Opera\",opera:e,version:n(/(?:opr|opios)[\\s\\/](\\d+(\\.\\d+)?)/i)||E}:/SamsungBrowser/i.test(t)?N={name:\"Samsung Internet for Android\",samsungBrowser:e,version:E||n(/(?:SamsungBrowser)[\\s\\/](\\d+(\\.\\d+)?)/i)}:/Whale/i.test(t)?N={name:\"NAVER Whale browser\",whale:e,version:n(/(?:whale)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/MZBrowser/i.test(t)?N={name:\"MZ Browser\",mzbrowser:e,version:n(/(?:MZBrowser)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/coast/i.test(t)?N={name:\"Opera Coast\",coast:e,version:E||n(/(?:coast)[\\s\\/](\\d+(\\.\\d+)?)/i)}:/focus/i.test(t)?N={name:\"Focus\",focus:e,version:n(/(?:focus)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/yabrowser/i.test(t)?N={name:\"Yandex Browser\",yandexbrowser:e,version:E||n(/(?:yabrowser)[\\s\\/](\\d+(\\.\\d+)?)/i)}:/ucbrowser/i.test(t)?N={name:\"UC Browser\",ucbrowser:e,version:n(/(?:ucbrowser)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/mxios/i.test(t)?N={name:\"Maxthon\",maxthon:e,version:n(/(?:mxios)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/epiphany/i.test(t)?N={name:\"Epiphany\",epiphany:e,version:n(/(?:epiphany)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/puffin/i.test(t)?N={name:\"Puffin\",puffin:e,version:n(/(?:puffin)[\\s\\/](\\d+(?:\\.\\d+)?)/i)}:/sleipnir/i.test(t)?N={name:\"Sleipnir\",sleipnir:e,version:n(/(?:sleipnir)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/k-meleon/i.test(t)?N={name:\"K-Meleon\",kMeleon:e,version:n(/(?:k-meleon)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:v?(N={name:\"Windows Phone\",osname:\"Windows Phone\",windowsphone:e},w?(N.msedge=e,N.version=w):(N.msie=e,N.version=n(/iemobile\\/(\\d+(\\.\\d+)?)/i))):/msie|trident/i.test(t)?N={name:\"Internet Explorer\",msie:e,version:n(/(?:msie |rv:)(\\d+(\\.\\d+)?)/i)}:l?N={name:\"Chrome\",osname:\"Chrome OS\",chromeos:e,chromeBook:e,chrome:e,version:n(/(?:chrome|crios|crmo)\\/(\\d+(\\.\\d+)?)/i)}:/edg([ea]|ios)/i.test(t)?N={name:\"Microsoft Edge\",msedge:e,version:w}:/vivaldi/i.test(t)?N={name:\"Vivaldi\",vivaldi:e,version:n(/vivaldi\\/(\\d+(\\.\\d+)?)/i)||E}:h?N={name:\"Sailfish\",osname:\"Sailfish OS\",sailfish:e,version:n(/sailfish\\s?browser\\/(\\d+(\\.\\d+)?)/i)}:/seamonkey\\//i.test(t)?N={name:\"SeaMonkey\",seamonkey:e,version:n(/seamonkey\\/(\\d+(\\.\\d+)?)/i)}:/firefox|iceweasel|fxios/i.test(t)?(N={name:\"Firefox\",firefox:e,version:n(/(?:firefox|iceweasel|fxios)[ \\/](\\d+(\\.\\d+)?)/i)},/\\((mobile|tablet);[^\\)]*rv:[\\d\\.]+\\)/i.test(t)&&(N.firefoxos=e,N.osname=\"Firefox OS\")):c?N={name:\"Amazon Silk\",silk:e,version:n(/silk\\/(\\d+(\\.\\d+)?)/i)}:/phantom/i.test(t)?N={name:\"PhantomJS\",phantom:e,version:n(/phantomjs\\/(\\d+(\\.\\d+)?)/i)}:/slimerjs/i.test(t)?N={name:\"SlimerJS\",slimer:e,version:n(/slimerjs\\/(\\d+(\\.\\d+)?)/i)}:/blackberry|\\bbb\\d+/i.test(t)||/rim\\stablet/i.test(t)?N={name:\"BlackBerry\",osname:\"BlackBerry OS\",blackberry:e,version:E||n(/blackberry[\\d]+\\/(\\d+(\\.\\d+)?)/i)}:d?(N={name:\"WebOS\",osname:\"WebOS\",webos:e,version:E||n(/w(?:eb)?osbrowser\\/(\\d+(\\.\\d+)?)/i)},/touchpad\\//i.test(t)&&(N.touchpad=e)):/bada/i.test(t)?N={name:\"Bada\",osname:\"Bada\",bada:e,version:n(/dolfin\\/(\\d+(\\.\\d+)?)/i)}:p?N={name:\"Tizen\",osname:\"Tizen\",tizen:e,version:n(/(?:tizen\\s?)?browser\\/(\\d+(\\.\\d+)?)/i)||E}:/qupzilla/i.test(t)?N={name:\"QupZilla\",qupzilla:e,version:n(/(?:qupzilla)[\\s\\/](\\d+(?:\\.\\d+)+)/i)||E}:/chromium/i.test(t)?N={name:\"Chromium\",chromium:e,version:n(/(?:chromium)[\\s\\/](\\d+(?:\\.\\d+)?)/i)||E}:/chrome|crios|crmo/i.test(t)?N={name:\"Chrome\",chrome:e,version:n(/(?:chrome|crios|crmo)\\/(\\d+(\\.\\d+)?)/i)}:u?N={name:\"Android\",version:E}:/safari|applewebkit/i.test(t)?(N={name:\"Safari\",safari:e},E&&(N.version=E)):i?(N={name:i==\"iphone\"?\"iPhone\":i==\"ipad\"?\"iPad\":\"iPod\"},E&&(N.version=E)):/googlebot/i.test(t)?N={name:\"Googlebot\",googlebot:e,version:n(/googlebot\\/(\\d+(\\.\\d+))/i)||E}:N={name:n(/^(.*)\\/(.*) /),version:r(/^(.*)\\/(.*) /)},!N.msedge&&/(apple)?webkit/i.test(t)?(/(apple)?webkit\\/537\\.36/i.test(t)?(N.name=N.name||\"Blink\",N.blink=e):(N.name=N.name||\"Webkit\",N.webkit=e),!N.version&&E&&(N.version=E)):!N.opera&&/gecko\\//i.test(t)&&(N.name=N.name||\"Gecko\",N.gecko=e,N.version=N.version||n(/gecko\\/(\\d+(\\.\\d+)?)/i)),!N.windowsphone&&(u||N.silk)?(N.android=e,N.osname=\"Android\"):!N.windowsphone&&i?(N[i]=e,N.ios=e,N.osname=\"iOS\"):y?(N.mac=e,N.osname=\"macOS\"):T?(N.xbox=e,N.osname=\"Xbox\"):g?(N.windows=e,N.osname=\"Windows\"):b&&(N.linux=e,N.osname=\"Linux\");var k=\"\";N.windows?k=C(n(/Windows ((NT|XP)( \\d\\d?.\\d)?)/i)):N.windowsphone?k=n(/windows phone (?:os)?\\s?(\\d+(\\.\\d+)*)/i):N.mac?(k=n(/Mac OS X (\\d+([_\\.\\s]\\d+)*)/i),k=k.replace(/[_\\s]/g,\".\")):i?(k=n(/os (\\d+([_\\s]\\d+)*) like mac os x/i),k=k.replace(/[_\\s]/g,\".\")):u?k=n(/android[ \\/-](\\d+(\\.\\d+)*)/i):N.webos?k=n(/(?:web|hpw)os\\/(\\d+(\\.\\d+)*)/i):N.blackberry?k=n(/rim\\stablet\\sos\\s(\\d+(\\.\\d+)*)/i):N.bada?k=n(/bada\\/(\\d+(\\.\\d+)*)/i):N.tizen&&(k=n(/tizen[\\/\\s](\\d+(\\.\\d+)*)/i)),k&&(N.osversion=k);var L=!N.windows&&k.split(\".\")[0];if(S||f||i==\"ipad\"||u&&(L==3||L>=4&&!x)||N.silk)N.tablet=e;else if(x||i==\"iphone\"||i==\"ipod\"||u||a||N.blackberry||N.webos||N.bada)N.mobile=e;return N.msedge||N.msie&&N.version>=10||N.yandexbrowser&&N.version>=15||N.vivaldi&&N.version>=1||N.chrome&&N.version>=20||N.samsungBrowser&&N.version>=4||N.whale&&s([N.version,\"1.0\"])===1||N.mzbrowser&&s([N.version,\"6.0\"])===1||N.focus&&s([N.version,\"1.0\"])===1||N.firefox&&N.version>=20||N.safari&&N.version>=6||N.opera&&N.version>=10||N.ios&&N.osversion&&N.osversion.split(\".\")[0]>=6||N.blackberry&&N.version>=10.1||N.chromium&&N.version>=20?N.a=e:N.msie&&N.version<10||N.chrome&&N.version<20||N.firefox&&N.version<20||N.safari&&N.version<6||N.opera&&N.version<10||N.ios&&N.osversion&&N.osversion.split(\".\")[0]<6||N.chromium&&N.version<20?N.c=e:N.x=e,N}function r(e){return e.split(\".\").length}function i(e,t){var n=[],r;if(Array.prototype.map)return Array.prototype.map.call(e,t);for(r=0;r=0){if(n[0][t]>n[1][t])return 1;if(n[0][t]!==n[1][t])return-1;if(t===0)return 0}}function o(e,r,i){var o=n;typeof r==\"string\"&&(i=r,r=void 0),r===void 0&&(r=!1),i&&(o=t(i));var u=\"\"+o.version;for(var a in e)if(e.hasOwnProperty(a)&&o[a]){if(typeof e[a]!=\"string\")throw new Error(\"Browser version in the minVersion map should be a string: \"+a+\": \"+String(e));return s([u,e[a]])<0}return r}function u(e,t,n){return!o(e,t,n)}var e=!0,n=t(typeof navigator!=\"undefined\"?navigator.userAgent||\"\":\"\");return n.test=function(e){for(var t=0;t\\n \\n \\n \\n \\n \\n \\n \\n \\n\\n\"","module.exports = \"\\n \\n \\n \\n\\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n \\n \\n \\n \\n \\n \\n \\n\\n\"","module.exports = \"\\n\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n \\n \\n \\n \\n \\n \\n \\n\\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n\\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n unionpay\\n Created with Sketch.\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","// get successful control from form and assemble into object\n// http://www.w3.org/TR/html401/interact/forms.html#h-17.13.2\n\n// types which indicate a submit action and are not successful controls\n// these will be ignored\nvar k_r_submitter = /^(?:submit|button|image|reset|file)$/i;\n\n// node names which could be successful controls\nvar k_r_success_contrls = /^(?:input|select|textarea|keygen)/i;\n\n// Matches bracket notation.\nvar brackets = /(\\[[^\\[\\]]*\\])/g;\n\n// serializes form fields\n// @param form MUST be an HTMLForm element\n// @param options is an optional argument to configure the serialization. Default output\n// with no options specified is a url encoded string\n// - hash: [true | false] Configure the output type. If true, the output will\n// be a js object.\n// - serializer: [function] Optional serializer function to override the default one.\n// The function takes 3 arguments (result, key, value) and should return new result\n// hash and url encoded str serializers are provided with this module\n// - disabled: [true | false]. If true serialize disabled fields.\n// - empty: [true | false]. If true serialize empty fields\nfunction serialize(form, options) {\n if (typeof options != 'object') {\n options = { hash: !!options };\n }\n else if (options.hash === undefined) {\n options.hash = true;\n }\n\n var result = (options.hash) ? {} : '';\n var serializer = options.serializer || ((options.hash) ? hash_serializer : str_serialize);\n\n var elements = form && form.elements ? form.elements : [];\n\n //Object store each radio and set if it's empty or not\n var radio_store = Object.create(null);\n\n for (var i=0 ; i\n \n
\n
\n \n \n
\n
\n {content.windowMessage}\n
\n
\n
\n
\n
\n
\n\n
\n {outlet}\n
\n\n \n
\n );\n\n const container = (\n \n \n { el }\n \n \n );\n\n on(EVENT.CLOSE, () => {\n el.className += ` ${ tag }-loading`;\n });\n\n return (\n
\n \n\n \n
\n );\n}\n\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { create } from 'zoid/src';\nimport { type Component } from 'zoid/src/component/component';\nimport { base64encode } from 'belter/src';\n\nimport { ENV } from '../constants';\nimport { getButtonSessionID, getBrowserLocale, getSessionID, getCurrentScriptUrl } from '../lib';\nimport { config } from '../config';\n\nimport { containerTemplate } from './template';\n\ntype BillingOptions = {|\n client : {\n [string] : (string | ZalgoPromise)\n },\n env? : string,\n locale? : string,\n logLevel : string,\n awaitPopupBridge : Function,\n meta : Object,\n commit : boolean,\n token : string\n|};\n\nexport const BillingPage : Component = create({\n tag: 'billing-page',\n name: 'billing-page',\n\n buildUrl(props) : string {\n const env = props.env || config.env;\n return `${ config.inlinedCardFieldUrls[env] }/billing`;\n },\n\n get domain() : Object {\n return {\n ...config.paypalDomains,\n [ ENV.LOCAL ]: /^http:\\/\\/localhost.paypal.com:\\d+$/\n };\n },\n\n scrolling: true,\n\n props: {\n sessionID: {\n type: 'string',\n required: false,\n def() : string {\n return getSessionID();\n },\n queryParam: true\n },\n\n\n token: {\n type: 'string',\n required: true,\n queryParam: true\n },\n\n buttonSessionID: {\n type: 'string',\n required: false,\n def() : ?string {\n return getButtonSessionID();\n },\n queryParam: true\n },\n\n commit: {\n type: 'boolean',\n required: false,\n queryParam: true\n },\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n },\n\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n allowDelegate: true,\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n }\n },\n\n cardType: {\n type: 'string',\n required: false\n },\n prefilledZipCode: {\n type: 'string',\n required: false\n },\n\n onEvent: {\n type: 'function',\n required: false,\n sameDomain: true\n },\n\n dispatch: {\n type: 'object',\n required: false,\n sameDomain: true\n },\n\n onCancel: {\n type: 'function',\n required: false,\n once: true,\n noop: true\n },\n\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n }\n },\n\n\n containerTemplate\n});\n","/* @flow */\n\nimport { track, info } from 'beaver-logger/client';\n\nimport { config } from '../config';\nimport { FPTI, PPTM_ID } from '../constants';\nimport { stringifyError, extendUrl, loadScript, getElement, isPayPalDomain } from '../lib';\n\n\nfunction shouldCreateInitialPptmScript() : boolean {\n const id = window.location.hostname;\n\n if (!id) {\n return false;\n }\n\n if (isPayPalDomain()) {\n return false;\n }\n\n const existingScript = getElement(PPTM_ID);\n const alreadyDownloaded = Boolean(existingScript);\n\n if (alreadyDownloaded) {\n info('pptm_tried_loading_twice');\n return false;\n }\n\n return true;\n}\n\nfunction removePptm() {\n const script = getElement(PPTM_ID);\n\n if (script) {\n // $FlowFixMe\n script.parentNode.removeChild(script);\n }\n}\n\nexport function pptmFactory() : Object {\n let noContentFoundInContainer = false;\n const callback = `__pptmLoadedWithNoContent`;\n let listener;\n\n const obj = {\n /*\n In the button component, we set up a global window[callback] that will be called in pptm `onload` attribute.\n Button.render calls `reloadPptmScript`, which checks if window[callback] has been called yet (meaning, it checks\n if pptm.js was loaded before Button.render was called). If so, we'll check to see if we should reload PPTM\n now that we might have a client ID from the Button.render method.\n If pptm.js hasn't loaded yet, then we'll set up a listener to the same logic above to defer it until\n pptm.js actually loads.\n */\n reloadPptmScript(clientId : ?string) {\n const tryCreatePptmScript = () => {\n if (obj.shouldReloadPptmScript(clientId)) {\n obj.removePptm();\n obj.createPptmScript(clientId);\n } else {\n // Defer until later, since reloadPptmScript might have been called\n // before pptm loaded, so we'll still want to hook into the script load.\n listener = tryCreatePptmScript;\n }\n };\n\n tryCreatePptmScript();\n },\n listenForLoadWithNoContent() {\n window[callback] = () => {\n noContentFoundInContainer = true;\n\n if (listener) {\n listener();\n listener = undefined;\n }\n };\n },\n listenForButtonRender() {\n window.paypalDDL = window.paypalDDL || [];\n const buttonRenderEvent = window.paypalDDL.filter(e => e.event === 'paypalButtonRender');\n if (buttonRenderEvent.length === 0) {\n window.paypalDDL.push({ event: 'paypalButtonRender' });\n }\n },\n get callback() : string {\n return callback;\n },\n get noContentFoundInContainer() : boolean {\n return noContentFoundInContainer;\n },\n createPptmScript: (clientId : ?string) => {\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.PPTM,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.PPTM_LOAD\n });\n \n const params = {\n t: 'xo',\n id: window.location.hostname,\n mrid: config.merchantID,\n client_id: '',\n v: config.version,\n source: 'checkoutjs'\n };\n \n if (clientId) {\n params.client_id = clientId;\n } else {\n delete params.client_id;\n }\n \n const fullUrl = extendUrl(config.pptmUrl, params);\n \n loadScript(fullUrl, 0, {\n async: true,\n id: PPTM_ID\n }).then(() => {\n // If the snippet is empty, then fire the callback.\n // We assume non-empty pptm.js bundles with init the paypalDDL and push an event called\n // `snippetRun` to it.\n if (!(window.paypalDDL && window.paypalDDL[0] && window.paypalDDL[0].event === 'snippetRun')) {\n window[callback]();\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.PPTM,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.PPTM_LOADED\n });\n }).catch(err => {\n info('pptm_script_error', { error: stringifyError(err) });\n });\n },\n shouldCreateInitialPptmScript,\n /*\n During Button render if a client ID was provided, we'll want to refresh the\n pptm script to try to pull down a container by that value.\n We'll only do this if we're not on the PayPal domain, or if\n a merchant ID wasn't already provided (since container look-up can\n also happen by merchant ID). Note that this will only happen\n if there was no content found in the container that was pulled down\n in the `setup` script. This is important because we don't want\n to pull down multiple containers that actually contain content,\n otherwise we'll be firing duplicate tags.\n */\n shouldReloadPptmScript(clientId : ?string) : boolean {\n if (noContentFoundInContainer === false) {\n return false;\n }\n\n if (isPayPalDomain()) {\n return false;\n }\n \n // If a merchant ID was already provided, then that meant we initially\n // loaded the pptm script with that value as the main container\n // look-up value, so in this case we don't want to reload pptm.\n if (config.merchantID) {\n return false;\n }\n \n if (clientId) {\n return true;\n }\n \n return false;\n },\n removePptm\n };\n\n return obj;\n}\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { create } from 'zoid/src';\nimport { base64encode } from 'belter/src';\n\nimport { getBrowserLocale, getCurrentScriptUrl } from '../lib';\nimport { config } from '../config';\nimport { containerTemplate } from '../billing/template';\n\nexport const ThreeDomainSecure = create({\n tag: 'paypal-3ds',\n name: '3ds',\n\n buildUrl(props) : string {\n const env = props.env || config.env;\n return `${ config.inlinedCardFieldUrls[env] }/init3ds`;\n },\n\n get domain() : Object {\n return {\n ...config.paypalDomains\n };\n },\n\n scrolling: true,\n\n props: {\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n },\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n allowDelegate: true,\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n }\n },\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n },\n challengeUrl: {\n type: 'string'\n },\n threeDomainSecureToken: {\n type: 'string'\n },\n method: {\n type: 'string'\n },\n onSuccess: {\n type: 'function',\n required: false\n },\n onError: {\n type: 'function',\n required: false\n },\n onCancel: {\n type: 'function',\n required: true,\n allowDelegate: true\n }\n },\n\n\n containerTemplate\n});\n","/* @flow */\n\nimport { pptmFactory } from './pptm-factory';\n\nexport const pptm = pptmFactory();\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { on, send } from 'post-robot/src';\nimport { base64encode } from 'belter/src';\nimport { info, track } from 'beaver-logger/client';\nimport { getAncestor, isSameDomain } from 'cross-domain-utils/src';\n\nimport { config } from '../config';\nimport { FPTI, PAYMENT_TYPE } from '../constants';\nimport { request, memoize, isPayPalDomain, uniqueID } from '../lib';\n\ntype ProxyRest = {\n [string] : (...args : $ReadOnlyArray) => ZalgoPromise<*>\n};\n\nlet proxyRest : ProxyRest = {};\n\nconst createAccessToken = memoize((env : string, client : { [key : string] : string }) : ZalgoPromise => {\n\n info(`rest_api_create_access_token`);\n\n env = env || config.env;\n\n const clientID : string = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (proxyRest.createAccessToken && !proxyRest.createAccessToken.source.closed) {\n return proxyRest.createAccessToken(env, client);\n }\n\n const basicAuth : string = base64encode(`${ clientID }:`);\n\n return request({\n\n method: `post`,\n url: config.authApiUrls[env],\n headers: {\n Authorization: `Basic ${ basicAuth }`\n },\n data: {\n grant_type: `client_credentials`\n }\n\n }).then(res => {\n\n if (res && res.error === 'invalid_client') {\n throw new Error(`Auth Api invalid ${ env } client id: ${ clientID }:\\n\\n${ JSON.stringify(res, null, 4) }`);\n }\n\n if (!res || !res.access_token) {\n throw new Error(`Auth Api response error:\\n\\n${ JSON.stringify(res, null, 4) }`);\n }\n\n return res.access_token;\n });\n\n}, { time: 10 * 60 * 1000 });\n\nconst createExperienceProfile = memoize((env : string, client : { [key : string] : string }, experienceDetails : Object = {}) : ZalgoPromise => {\n\n info(`rest_api_create_experience_profile`);\n\n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (proxyRest.createExperienceProfile && !proxyRest.createExperienceProfile.source.closed) {\n return proxyRest.createExperienceProfile(env, client, experienceDetails);\n }\n\n experienceDetails.temporary = true;\n experienceDetails.name = experienceDetails.name ? `${ experienceDetails.name }_${ Math.random().toString() }` : Math.random().toString();\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n return request({\n method: `post`,\n url: config.experienceApiUrls[env],\n headers: {\n Authorization: `Bearer ${ accessToken }`\n },\n json: experienceDetails\n });\n\n }).then((res) : string => {\n\n if (res && res.error) {\n throw new Error(res.error);\n }\n\n if (!res.id) {\n throw new Error(`No id in experience profile response:\\n\\n${ JSON.stringify(res, null, 4) }`);\n }\n\n return res.id;\n });\n\n}, { time: 10 * 60 * 1000 });\n\nfunction logPaymentResponse(res) {\n\n if (!res) {\n return;\n }\n\n let paymentToken;\n let paymentID;\n\n if (res.id) {\n paymentID = res.id;\n }\n\n if (res.links && res.links.length) {\n for (let i = 0; i < res.links.length; i++) {\n if (res.links[i].method === 'REDIRECT' && res.links[i].rel === 'approval_url') {\n const match = res.links[i].href.match(/token=((EC-)?[A-Z0-9]{17})/);\n if (match) {\n paymentToken = match[1];\n }\n }\n }\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.BUTTON,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CREATE_PAYMENT,\n [ FPTI.KEY.CONTEXT_TYPE ]: FPTI.CONTEXT_TYPE[PAYMENT_TYPE.PAY_ID],\n [ FPTI.KEY.PAY_ID ]: paymentID,\n [ FPTI.KEY.TOKEN ]: paymentToken,\n [ FPTI.KEY.CONTEXT_ID ]: paymentID\n });\n}\n\nfunction getDefaultReturnUrl() : string {\n return `https://www.paypal.com/checkoutnow/error`;\n}\n\nfunction createTracking(env : string, client : { [key : string] : string }, merchantID, trackingData) : Object {\n \n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n const trackingID = uniqueID();\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n const headers : Object = {\n Authorization: `Bearer ${ accessToken }`\n };\n\n return request({\n method: `put`,\n url: `${ config.trackingApiUrls[env] }/${ merchantID }/${ trackingID }`,\n headers,\n json: {\n 'tracking_id': trackingID,\n 'additional_data': trackingData\n }\n });\n\n }).then(() => {\n return trackingID;\n });\n}\n\nfunction createPayment(env : string, client : { [key : string] : string }, paymentDetails : Object) : ZalgoPromise {\n\n info(`rest_api_create_checkout_token`);\n\n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n let { payment, experience, meta, tracking } = paymentDetails;\n\n if (!payment) {\n throw new Error(`Expected payment details to be passed`);\n }\n\n if (proxyRest.createPayment && !proxyRest.createPayment.source.closed) {\n return proxyRest.createPayment(env, client, { payment, experience, meta, tracking });\n }\n\n payment = { ...payment };\n payment.intent = payment.intent || 'sale';\n payment.redirect_urls = payment.redirect_urls || {};\n payment.redirect_urls.return_url = payment.redirect_urls.return_url || getDefaultReturnUrl();\n payment.redirect_urls.cancel_url = payment.redirect_urls.cancel_url || getDefaultReturnUrl();\n payment.payer = payment.payer || {};\n payment.payer.payment_method = payment.payer.payment_method || 'paypal';\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n return ZalgoPromise.try(() => {\n\n if (experience) {\n return ZalgoPromise.resolve(createExperienceProfile(env, client, experience));\n }\n\n }).then((experienceID) : ZalgoPromise => {\n\n return ZalgoPromise.try(() => {\n\n if (tracking) {\n return ZalgoPromise.resolve(createTracking(env, client, tracking.id, tracking.data));\n }\n\n }).then((trackingID) : ZalgoPromise => {\n\n if (experienceID) {\n payment.experience_profile_id = experienceID;\n }\n\n const headers : Object = {\n Authorization: `Bearer ${ accessToken }`\n };\n\n if (trackingID) {\n headers['Paypal-Client-Metadata-Id'] = trackingID;\n }\n\n if (meta && meta.partner_attribution_id) {\n headers['PayPal-Partner-Attribution-Id'] = meta.partner_attribution_id;\n }\n\n return request({\n method: `post`,\n url: config.paymentApiUrls[env],\n headers,\n json: payment\n });\n });\n });\n\n }).then((res) : string => {\n\n logPaymentResponse(res);\n\n if (res && res.id) {\n return res.id;\n }\n\n throw new Error(`Payment Api response error:\\n\\n${ JSON.stringify(res, null, 4) }`);\n\n });\n}\n\nfunction createOrder(env : string, client : { [key : string] : string }, paymentDetails : Object) : ZalgoPromise {\n\n info(`rest_api_create_order_token`);\n\n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n let { order, meta } = paymentDetails;\n\n if (!order) {\n throw new Error(`Expected order details to be passed`);\n }\n\n if (proxyRest.createOrder && !proxyRest.createOrder.source.closed) {\n return proxyRest.createOrder(env, client, { order, meta });\n }\n\n order = { ...order };\n order.intent = order.intent || 'CAPTURE';\n order.application_context = order.application_context || {};\n order.application_context.return_url = order.application_context.return_url || getDefaultReturnUrl();\n order.application_context.cancel_url = order.application_context.cancel_url || getDefaultReturnUrl();\n order.purchase_units = order.purchase_units || [];\n order.purchase_units[0] = order.purchase_units[0] || {};\n order.purchase_units.forEach(unit => {\n unit.reference_id = unit.reference_id || Math.random().toString();\n });\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n const headers : Object = {\n Authorization: `Bearer ${ accessToken }`\n };\n\n if (meta && meta.partner_attribution_id) {\n headers['PayPal-Partner-Attribution-Id'] = meta.partner_attribution_id;\n }\n\n return request({\n method: `post`,\n url: config.orderApiUrls[env],\n headers,\n json: order\n });\n\n }).then((res) : string => {\n\n logPaymentResponse(res);\n\n if (res && res.id) {\n return res.id;\n }\n\n throw new Error(`Payment Api response error:\\n\\n${ JSON.stringify(res, null, 4) }`);\n });\n}\n\nexport function createBillingAgreement(env : string, client : { [key : string] : string }, billingDetails : Object, experienceDetails? : ?Object) : ZalgoPromise {\n\n info(`rest_api_create_billing_token`);\n\n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (proxyRest.createBillingAgreement && !proxyRest.createBillingAgreement.source.closed) {\n return proxyRest.createBillingAgreement(env, client, billingDetails, experienceDetails);\n }\n\n billingDetails = { ...billingDetails };\n billingDetails.plan = billingDetails.plan || {};\n billingDetails.plan.merchant_preferences = billingDetails.plan.merchant_preferences || {};\n billingDetails.plan.merchant_preferences.return_url = billingDetails.plan.merchant_preferences.return_url || getDefaultReturnUrl();\n billingDetails.plan.merchant_preferences.cancel_url = billingDetails.plan.merchant_preferences.cancel_url || getDefaultReturnUrl();\n billingDetails.payer = billingDetails.payer || {};\n billingDetails.payer.payment_method = billingDetails.payer.payment_method || 'paypal';\n\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n return ZalgoPromise.try(() => {\n\n if (experienceDetails) {\n return ZalgoPromise.resolve(createExperienceProfile(env, client, experienceDetails));\n }\n\n }).then((experienceID) : ZalgoPromise => {\n\n if (experienceID) {\n billingDetails.experience_profile_id = experienceID;\n }\n\n return request({\n method: `post`,\n url: config.billingApiUrls[env],\n headers: {\n Authorization: `Bearer ${ accessToken }`\n },\n json: billingDetails\n });\n });\n\n }).then(res => {\n\n if (res && res.token_id) {\n return res.token_id;\n }\n\n throw new Error(`Billing Api response error:\\n\\n${ JSON.stringify(res, null, 4) }`);\n });\n}\n\nexport const rest = {\n payment: {\n create: createPayment\n },\n order: {\n create: createOrder\n },\n billingAgreement: {\n create: createBillingAgreement\n },\n experience: {\n create: createExperienceProfile\n }\n};\n\nconst PROXY_REST = `proxy_rest`;\nconst parentWin = getAncestor();\n\non(PROXY_REST, { domain: config.paypal_domain_regex }, ({ data }) => {\n proxyRest = data;\n});\n\nif (parentWin && isPayPalDomain() && !isSameDomain(parentWin)) {\n send(parentWin, PROXY_REST, { createAccessToken, createExperienceProfile, createPayment, createBillingAgreement, createOrder })\n .catch(() => {\n // pass\n });\n}\n","/* @flow */\n\nimport { info, track, immediateFlush } from 'beaver-logger/client';\n\nimport { FPTI, PAYMENT_TYPE } from './constants';\nimport { getReturnToken, getSessionState, getDomainSetting, eventEmitter } from './lib';\n\nexport const onAuthorizeListener = eventEmitter();\n\nfunction log(experiment : string, treatment : string, token : ?string, state : string) {\n\n getSessionState(session => {\n\n let event = `${ experiment }_${ treatment }_${ state }`;\n const loggedEvents = session.loggedExperimentEvents = session.loggedExperimentEvents || [];\n const duplicate = loggedEvents.indexOf(event) !== -1;\n\n if (duplicate) {\n info(`duplicate_${ event }`);\n\n } else {\n info(event);\n loggedEvents.push(event);\n\n const edge = window.navigator && window.navigator.userAgent && window.navigator.userAgent.match(/Edge\\/[0-9]{2}/);\n\n if (edge) {\n event = info(`${ edge[0].toLowerCase().replace('/', '_') }_${ event }`);\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: state,\n [ FPTI.KEY.EXPERIMENT_NAME ]: experiment,\n [ FPTI.KEY.TREATMENT_NAME ]: treatment,\n [ FPTI.KEY.TOKEN ]: token,\n [ FPTI.KEY.CONTEXT_ID ]: token,\n [ FPTI.KEY.CONTEXT_TYPE ]: token ? FPTI.CONTEXT_TYPE[PAYMENT_TYPE.EC_TOKEN] : FPTI.CONTEXT_TYPE.BUTTON_SESSION_ID\n });\n\n immediateFlush();\n }\n });\n}\n\nexport function logExperimentTreatment({ experiment, treatment, state, token } : { experiment : string, treatment : string, state : string, token : ?string }) {\n\n if (!experiment || !treatment) {\n return;\n }\n\n getSessionState(session => {\n session.externalExperiment = experiment;\n session.externalExperimentTreatment = treatment;\n\n if (token) {\n session.externalExperimentToken = token;\n }\n });\n\n log(experiment, treatment, token, state);\n}\n\nfunction logReturn(token : string) {\n\n const {\n externalExperiment,\n externalExperimentTreatment,\n externalExperimentToken\n } = getSessionState(session => session);\n\n if (externalExperiment && externalExperimentTreatment && externalExperimentToken === token) {\n log(externalExperiment, externalExperimentTreatment, token, `complete`);\n } else {\n info(`experiment_mismatch`, {\n token,\n externalExperiment,\n externalExperimentTreatment,\n externalExperimentToken\n });\n }\n}\n\nif (getDomainSetting('log_authorize')) {\n\n onAuthorizeListener.once(({ paymentToken }) => {\n setTimeout(() => {\n logReturn(paymentToken);\n }, 1);\n });\n\n const returnToken = getReturnToken();\n\n if (returnToken) {\n setTimeout(() => {\n if (returnToken) {\n logReturn(returnToken);\n }\n }, 1);\n }\n}\n","/* @flow */\n\nimport { once, noop } from 'zoid/src/lib';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { error } from 'beaver-logger/client';\nimport type { CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { extendUrl, redirect, awaitKey, stringifyError } from '../lib';\nimport { config } from '../config';\nimport { FUNDING } from '../constants';\n\nimport { determineParameterFromToken, determineUrl } from './checkout';\n\nconst OPTYPE = {\n PAYMENT: 'payment',\n CANCEL: 'cancel'\n};\n\nconst CONTINGENCY = {\n PAYMENT_CANCELLED: 'PAYMENT_CANCELLED'\n};\n\ntype PopupBridge = {|\n open : (string) => ZalgoPromise\n|};\n\nfunction wrapPopupBridge(popupBridge : Object) : PopupBridge {\n return {\n open(url : string) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n popupBridge.onComplete = (err, result) => {\n if (!result) {\n return reject(new Error('No payload passed in popupBridge.onComplete'));\n }\n\n return err ? reject(err) : resolve(result);\n };\n\n popupBridge.onCancel = () => {\n const err = new Error(CONTINGENCY.PAYMENT_CANCELLED);\n // $FlowFixMe\n err.code = CONTINGENCY.PAYMENT_CANCELLED;\n return reject(err);\n };\n\n popupBridge.open(extendUrl(url, { redirect_uri: popupBridge.getReturnUrlPrefix() }));\n });\n }\n };\n}\n\nfunction validateCheckoutProps(props) {\n if (!props.payment) {\n throw new Error(`Expected props.payment to be passed`);\n }\n\n if (!props.onAuthorize) {\n throw new Error(`Expected props.onAuthorize to be passed`);\n }\n\n if (props.env && !config.checkoutUrls[props.env]) {\n throw new Error(`Invalid props.env: ${ props.env }`);\n }\n}\n\nfunction normalizeCheckoutProps(props : Object) : { env : string, payment : Function, onAuthorize : Function, onCancel : Function } {\n const env = props.env = props.env || config.env;\n\n const payment = props.payment;\n const onAuthorize = once(props.onAuthorize);\n const onCancel = once(props.onCancel || noop);\n\n return { env, payment, onAuthorize, onCancel };\n}\n\nfunction getUrl(props : { env : string, payment : Function, onAuthorize : Function, onCancel? : Function, commit? : boolean }) : ZalgoPromise {\n\n const { env, payment } = normalizeCheckoutProps(props);\n\n return ZalgoPromise.try(payment, { props }).then(token => {\n if (!token) {\n throw new Error(`Expected props.payment to return a payment id or token`);\n }\n\n return extendUrl(determineUrl(env, FUNDING.PAYPAL, token), {\n [determineParameterFromToken(token)]: token,\n\n useraction: props.commit ? 'commit' : '',\n native_xo: '1'\n });\n });\n}\n\nfunction extractDataFromQuery(query : Object) : Object {\n\n const data : Object = {\n paymentToken: query.token,\n billingToken: query.ba_token,\n paymentID: query.paymentId,\n payerID: query.PayerID,\n intent: query.intent\n };\n \n const { opType, return_uri, cancel_uri } = query;\n\n if (opType === OPTYPE.PAYMENT) {\n data.returnUrl = return_uri;\n\n } else if (opType === OPTYPE.CANCEL) {\n data.cancelUrl = cancel_uri;\n }\n\n return data;\n}\n\nfunction buildActions(query : Object) : Object {\n \n const actions : Object = {\n close: noop,\n closeComponent: noop\n };\n\n const { opType, return_uri, cancel_uri } = query;\n\n if (opType === OPTYPE.PAYMENT) {\n actions.redirect = (win : CrossDomainWindowType = window, redirectUrl : string = return_uri) : ZalgoPromise => {\n return redirect(win, redirectUrl);\n };\n\n } else if (opType === OPTYPE.CANCEL) {\n actions.redirect = (win : CrossDomainWindowType = window, redirectUrl : string = cancel_uri) : ZalgoPromise => {\n return redirect(win, redirectUrl);\n };\n }\n\n return actions;\n}\n\nfunction renderThroughPopupBridge(props : Object, popupBridge : PopupBridge) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n validateCheckoutProps(props);\n\n }).then(() => {\n\n return getUrl(props);\n \n }).then(url => {\n\n return popupBridge.open(url);\n\n }).then(payload => {\n\n const { opType } = payload.queryItems;\n const { onAuthorize, onCancel } = normalizeCheckoutProps(props);\n\n const data = extractDataFromQuery(payload.queryItems);\n const actions = buildActions(payload.queryItems);\n \n if (opType === OPTYPE.PAYMENT) {\n return onAuthorize(data, actions);\n\n } else if (opType === OPTYPE.CANCEL) {\n return onCancel(data, actions);\n \n } else {\n throw new Error(`Invalid opType: ${ opType }`);\n }\n\n }).catch(err => {\n\n if (err && err.code === CONTINGENCY.PAYMENT_CANCELLED) {\n const { onCancel } = normalizeCheckoutProps(props);\n return onCancel({}, {});\n }\n\n throw err;\n });\n}\n\nexport function awaitPopupBridge(Button : Object) : ZalgoPromise {\n if (Button.xprops && Button.xprops.awaitPopupBridge) {\n return Button.xprops.awaitPopupBridge();\n }\n\n return awaitKey(window, 'popupBridge').then(popupBridge => {\n return wrapPopupBridge(popupBridge);\n });\n}\n\nexport function setupPopupBridgeProxy(Checkout : Object, Button : Object) {\n\n let popupBridge;\n\n awaitPopupBridge(Button).then(bridge => {\n popupBridge = bridge;\n });\n\n function doRender(props, original) : ZalgoPromise {\n if (!popupBridge) {\n return original();\n }\n \n return renderThroughPopupBridge(props, popupBridge)\n .catch(err => {\n error(`popup_bridge_error`, { err: stringifyError(err) });\n return original();\n });\n }\n\n const render = Checkout.render;\n Checkout.render = function popupBridgeRender(props : Object) : ZalgoPromise {\n return doRender(props, () => render.apply(this, arguments));\n };\n\n const renderTo = Checkout.renderTo;\n Checkout.renderTo = function popupBridgeRenderTo(win : CrossDomainWindowType, props : Object) : ZalgoPromise {\n return doRender(props, () => renderTo.apply(this, arguments));\n };\n\n const renderPopupTo = Checkout.renderPopupTo;\n Checkout.renderPopupTo = function popupBridgeRenderPopupTo(win : CrossDomainWindowType, props : Object) : ZalgoPromise {\n return doRender(props, () => renderPopupTo.apply(this, arguments));\n };\n}\n","/* @flow */\n/* global __paypal_checkout__*/\n\nimport { FUNDING, COUNTRY, CARD, PLATFORM, DEFAULT, ENV } from '../constants';\n\nexport const FUNDING_PRIORITY = [\n FUNDING.PAYPAL,\n FUNDING.VENMO,\n FUNDING.ITAU,\n FUNDING.CREDIT,\n FUNDING.CARD,\n FUNDING.IDEAL,\n FUNDING.ELV,\n FUNDING.BANCONTACT,\n FUNDING.GIROPAY,\n FUNDING.EPS,\n FUNDING.SOFORT,\n FUNDING.MYBANK,\n FUNDING.BLIK,\n FUNDING.P24,\n FUNDING.PAYU,\n FUNDING.VERKKOPANKKI,\n FUNDING.TRUSTLY,\n FUNDING.MAXIMA,\n FUNDING.BOLETO,\n FUNDING.OXXO\n];\n\nexport const FUNDING_ORDER = [\n FUNDING.PAYPAL,\n FUNDING.VENMO,\n FUNDING.ITAU,\n FUNDING.CREDIT,\n FUNDING.IDEAL,\n FUNDING.ELV,\n FUNDING.BANCONTACT,\n FUNDING.GIROPAY,\n FUNDING.EPS,\n FUNDING.SOFORT,\n FUNDING.MYBANK,\n FUNDING.BLIK,\n FUNDING.P24,\n FUNDING.PAYU,\n FUNDING.VERKKOPANKKI,\n FUNDING.TRUSTLY,\n FUNDING.MAXIMA,\n FUNDING.BOLETO,\n FUNDING.OXXO,\n FUNDING.CARD\n];\n\nexport const FUNDING_CONFIG = {\n\n [ DEFAULT ]: {\n enabled: true,\n\n allowOptIn: true,\n allowOptOut: true,\n allowRemember: true,\n\n allowHorizontal: true,\n allowVertical: true,\n\n requireCommitAsTrue: false\n },\n\n [ FUNDING.PAYPAL ]: {\n default: true,\n\n allowOptIn: false,\n allowOptOut: false,\n\n allowHorizontal: true,\n allowVertical: true\n },\n\n [ FUNDING.CARD ]: {\n // $FlowFixMe\n default: (typeof __paypal_checkout__ === 'undefined' ? true : __paypal_checkout__.serverConfig.paypalMerchantConfiguration.creditCard.isPayPalBranded),\n\n allowHorizontal: false,\n allowVertical: true\n },\n\n [ FUNDING.VENMO ]: {\n allowOptOut: true,\n allowedCountries: [\n COUNTRY.US\n ],\n\n allowHorizontal: true,\n allowVertical: true\n },\n [ FUNDING.ITAU ]: {\n allowOptOut: true,\n allowedCountries: [\n COUNTRY.BR\n ],\n\n allowHorizontal: true,\n allowVertical: true\n },\n\n [ FUNDING.CREDIT ]: {\n allowedCountries: [\n COUNTRY.US,\n COUNTRY.GB,\n COUNTRY.DE\n ],\n defaultVerticalCountries: [\n COUNTRY.US\n ],\n platforms: [\n PLATFORM.MOBILE\n ],\n\n allowHorizontal: true,\n allowVertical: true,\n allowRemember: true\n },\n\n [ FUNDING.IDEAL ]: {\n allowedCountries: [\n COUNTRY.NL\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.ELV ]: {\n allowedCountries: [\n COUNTRY.DE\n ],\n defaultVerticalCountries: [\n COUNTRY.DE\n ],\n\n allowHorizontal: false,\n allowVertical: true\n },\n\n [ FUNDING.BANCONTACT ]: {\n allowedCountries: [\n COUNTRY.BE\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.GIROPAY ]: {\n allowedCountries: [\n COUNTRY.DE\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.SOFORT ]: {\n allowedCountries: [\n COUNTRY.DE,\n COUNTRY.AT,\n COUNTRY.BE,\n COUNTRY.ES,\n COUNTRY.IT,\n COUNTRY.NL\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.EPS ]: {\n allowedCountries: [\n COUNTRY.AT\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.MYBANK ]: {\n allowedCountries: [\n COUNTRY.IT\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.P24 ]: {\n allowedCountries: [\n COUNTRY.PL\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.PAYU ]: {\n allowedCountries: [\n COUNTRY.CZ\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.VERKKOPANKKI ]: {\n allowedCountries: [\n COUNTRY.FI\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.BLIK ]: {\n allowedCountries: [\n COUNTRY.PL\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.TRUSTLY ]: {\n allowedCountries: [\n COUNTRY.DE,\n COUNTRY.DK,\n COUNTRY.EE,\n COUNTRY.ES,\n COUNTRY.FI,\n COUNTRY.GB,\n COUNTRY.IT,\n COUNTRY.MT,\n COUNTRY.NL,\n COUNTRY.NO,\n COUNTRY.SE\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.MAXIMA ]: {\n allowedCountries: [\n COUNTRY.LT\n ],\n\n allowedEnvs: [\n ENV.LOCAL,\n ENV.STAGE,\n ENV.TEST\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.BOLETO ]: {\n allowedCountries: [\n COUNTRY.BR\n ],\n\n allowedEnvs: [\n ENV.LOCAL,\n ENV.STAGE,\n ENV.TEST\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.OXXO ]: {\n allowedCountries: [\n COUNTRY.MX\n ],\n\n allowedEnvs: [\n ENV.LOCAL,\n ENV.STAGE,\n ENV.TEST\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.ZIMPLER ]: {\n allowedCountries: [],\n\n allowHorizontal: false,\n allowVertical: false,\n requireCommitAsTrue: true\n }\n};\n\nexport const CARD_CONFIG = {\n\n [ DEFAULT ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX\n ]\n },\n\n [ COUNTRY.GB ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.DISCOVER,\n CARD.MAESTRO\n ]\n },\n\n [ COUNTRY.US ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.DISCOVER\n ]\n },\n\n [ COUNTRY.BR ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.HIPER,\n CARD.ELO\n ]\n },\n\n [ COUNTRY.JP ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.JCB\n ]\n },\n\n [ COUNTRY.CN ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.CUP\n ]\n }\n};\n\nfunction getConfig(conf : Object, category : string, key : string, def : ?T) : T {\n const categoryConfig = conf[category];\n\n if (categoryConfig && categoryConfig.hasOwnProperty(key)) {\n return categoryConfig[key];\n }\n\n if (conf[DEFAULT] && conf[DEFAULT].hasOwnProperty(key)) {\n return conf[DEFAULT][key];\n }\n\n if (arguments.length >= 4) {\n // $FlowFixMe\n return def;\n }\n\n throw new Error(`No value found for ${ category }:${ key }`);\n}\n\nexport function getFundingConfig(source : string, key : string, def : ?T) : T {\n return getConfig(FUNDING_CONFIG, source, key, def);\n}\n\nexport function getCardConfig(source : string, key : string, def : ?T) : T {\n return getConfig(CARD_CONFIG, source, key, def);\n}\n","/* @flow */\n\nimport { ENV, CARD_PRIORITY, FUNDING, BUTTON_LAYOUT, FUNDING_ELIGIBILITY_REASON } from '../constants';\nimport type { LocaleType, FundingSource, FundingSelection, FundingList } from '../types';\n\nimport { getFundingConfig, getCardConfig, FUNDING_PRIORITY, FUNDING_CONFIG } from './config';\n\nconst fundingEligibilityReasons = [];\n\nexport function isFundingIneligible(source : FundingSource, { locale, funding, layout, commit, env } :\n { locale : LocaleType, funding : FundingSelection, layout : string, commit? : boolean, env : string }) : ?string {\n\n const isVertical = layout === BUTTON_LAYOUT.VERTICAL;\n const allowSecondary = getFundingConfig(source, isVertical ? 'allowVertical' : 'allowHorizontal');\n\n if (!allowSecondary) {\n return FUNDING_ELIGIBILITY_REASON.SECONDARY_DISALLOWED;\n }\n\n if (funding.disallowed.indexOf(source) !== -1 && getFundingConfig(source, 'allowOptOut')) {\n return FUNDING_ELIGIBILITY_REASON.OPT_OUT;\n }\n\n if (funding.disallowed.indexOf(source) !== -1 && source === FUNDING.VENMO) {\n return FUNDING_ELIGIBILITY_REASON.OPT_OUT;\n }\n if (funding.disallowed.indexOf(source) !== -1 && source === FUNDING.ITAU) {\n return FUNDING_ELIGIBILITY_REASON.OPT_OUT;\n }\n\n if (getFundingConfig(source, 'allowedCountries', [ locale.country ]).indexOf(locale.country) === -1) {\n return FUNDING_ELIGIBILITY_REASON.DISALLOWED_COUNTRY;\n }\n\n if (getFundingConfig(source, 'requireCommitAsTrue') && !commit) {\n return FUNDING_ELIGIBILITY_REASON.COMMIT_NOT_SET;\n }\n\n const allowedEnvs = getFundingConfig(source, 'allowedEnvs');\n if (allowedEnvs && allowedEnvs.indexOf(env) === -1) {\n return FUNDING_ELIGIBILITY_REASON.INVALID_ENV;\n }\n}\n\nexport function isFundingAutoEligible(source : FundingSource, { locale, funding, layout } :\n { locale : LocaleType, funding : FundingSelection, layout : string }) : ?string {\n\n const isVertical = layout === BUTTON_LAYOUT.VERTICAL;\n\n if (isVertical && getFundingConfig(source, 'defaultVerticalCountries', []).indexOf(locale.country) !== -1) {\n return FUNDING_ELIGIBILITY_REASON.DEFAULT_COUNTRY;\n }\n\n if (getFundingConfig(source, 'default')) {\n return FUNDING_ELIGIBILITY_REASON.DEFAULT;\n }\n\n if (funding.allowed.indexOf(source) !== -1 && getFundingConfig(source, 'allowOptIn')) {\n return FUNDING_ELIGIBILITY_REASON.OPT_IN;\n }\n\n if (funding.remembered.indexOf(source) !== -1 && getFundingConfig(source, 'allowRemember')) {\n return FUNDING_ELIGIBILITY_REASON.REMEMBERED;\n }\n}\n\nexport function isFundingEligible(source : FundingSource, { locale, funding, env, layout, selected, commit } :\n { locale : LocaleType, funding : FundingSelection, env : string, layout : string, selected? : string, commit : boolean }) : { eligible : boolean, reason : string } {\n\n if (selected && source === selected) {\n return { eligible: true, reason: FUNDING_ELIGIBILITY_REASON.PRIMARY };\n }\n\n if (!getFundingConfig(source, 'enabled')) {\n if (!(env === ENV.TEST && getFundingConfig(source, 'test'))) {\n return { eligible: false, reason: FUNDING_ELIGIBILITY_REASON.NOT_ENABLED };\n }\n }\n\n const ineligibleReason = isFundingIneligible(source, { locale, funding, layout, commit, env });\n\n if (ineligibleReason) {\n return { eligible: false, reason: ineligibleReason };\n }\n\n const autoEligibleReason = isFundingAutoEligible(source, { locale, funding, layout });\n\n if (autoEligibleReason) {\n return { eligible: true, reason: autoEligibleReason };\n }\n\n return { eligible: false, reason: FUNDING_ELIGIBILITY_REASON.NEED_OPT_IN };\n}\n\nexport function determineEligibleFunding({ funding, selected, locale, env, layout, commit } :\n { funding : FundingSelection, selected : FundingSource, locale : LocaleType, env : string, layout : string, commit : boolean }) : FundingList {\n\n const reasons = {};\n\n const eligibleFunding = FUNDING_PRIORITY.filter(source => {\n const { eligible, reason } = isFundingEligible(source, { selected, locale, funding, env, layout, commit });\n reasons[source] = { eligible, reason, factors: { env, locale, layout } };\n return eligible;\n });\n\n fundingEligibilityReasons.push(reasons);\n\n eligibleFunding.splice(eligibleFunding.indexOf(selected), 1);\n eligibleFunding.unshift(selected);\n\n return eligibleFunding;\n}\n\nexport function determineEligibleCards({ funding, locale } :\n { funding : FundingSelection, locale : LocaleType }) : FundingList {\n\n return getCardConfig(locale.country, 'priority')\n .filter(card => funding.disallowed.indexOf(card) === -1);\n}\n\nexport function validateFunding(funding : FundingSelection = { allowed: [], disallowed: [], remembered: [] }) {\n\n if (funding.allowed) {\n for (const source of funding.allowed) {\n if (CARD_PRIORITY.indexOf(source) !== -1) {\n continue;\n }\n\n if (!FUNDING_CONFIG.hasOwnProperty(source)) {\n throw new Error(`Invalid funding source: ${ source }`);\n }\n\n if (!getFundingConfig(source, 'allowOptIn')) {\n throw new Error(`Can not allow funding source: ${ source }`);\n }\n\n if (funding.disallowed && funding.disallowed.indexOf(source) !== -1) {\n throw new Error(`Can not allow and disallow funding source: ${ source }`);\n }\n }\n }\n\n if (funding.disallowed) {\n for (const source of funding.disallowed) {\n if (CARD_PRIORITY.indexOf(source) !== -1) {\n continue;\n }\n\n if (!FUNDING_CONFIG.hasOwnProperty(source)) {\n throw new Error(`Invalid funding source: ${ source }`);\n }\n\n if (!getFundingConfig(source, 'allowOptOut')) {\n throw new Error(`Can not disallow funding source: ${ source }`);\n }\n }\n }\n}\n\nexport function logFundingEligibility() {\n fundingEligibilityReasons.forEach((reasons, i) => {\n console.log(`\\nButton ${ i + 1 }:\\n`); // eslint-disable-line no-console\n\n console.table(Object.keys(reasons).map(source => { // eslint-disable-line no-console, compat/compat\n const { reason, eligible, factors } = reasons[source];\n\n return {\n 'Funding': source,\n 'Reason': reason,\n 'Eligibility': eligible ? 'eligible' : 'ineligible',\n 'Factors': JSON.stringify(factors)\n };\n }));\n });\n}\n","/* @flow */\n/* eslint no-template-curly-in-string: off, max-lines: off */\n\nimport { FUNDING, DEFAULT, COUNTRY, BUTTON_LABEL, BUTTON_COLOR, BUTTON_LOGO_COLOR, BUTTON_SIZE,\n BUTTON_TAGLINE_COLOR, BUTTON_SHAPE, BUTTON_LAYOUT, BUTTON_LOGO } from '../constants';\n\ntype ButtonConfig = {\n [ string ] : {\n colors? : $ReadOnlyArray<$Values>\n }\n};\n\nexport const BUTTON_CONFIG : ButtonConfig = {\n\n [ DEFAULT ]: {\n\n colors: [\n BUTTON_COLOR.GOLD,\n BUTTON_COLOR.BLUE,\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n sizes: [\n BUTTON_SIZE.SMALL,\n BUTTON_SIZE.MEDIUM,\n BUTTON_SIZE.LARGE,\n BUTTON_SIZE.RESPONSIVE\n ],\n\n shapes: [\n BUTTON_SHAPE.PILL,\n BUTTON_SHAPE.RECT\n ],\n\n layouts: [\n BUTTON_LAYOUT.HORIZONTAL,\n BUTTON_LAYOUT.VERTICAL\n ],\n\n logoColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_LOGO_COLOR.BLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLUE\n },\n\n tagLineColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_TAGLINE_COLOR.BLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_TAGLINE_COLOR.BLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_TAGLINE_COLOR.BLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_TAGLINE_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_TAGLINE_COLOR.BLUE\n\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n tag: `{ content: safer_tag }`,\n dualTag: `{ content: dual_tag|safer_tag }`,\n\n defaultLocale: `en_US`,\n defaultLabel: BUTTON_LABEL.CHECKOUT,\n defaultVerticalLabel: BUTTON_LABEL.PAYPAL,\n defaultColor: BUTTON_COLOR.GOLD,\n defaultSize: BUTTON_SIZE.SMALL,\n defaultVerticalSize: BUTTON_SIZE.MEDIUM,\n defaultShape: BUTTON_SHAPE.PILL,\n defaultLayout: BUTTON_LAYOUT.HORIZONTAL,\n defaultBranding: true,\n defaultVerticalBranding: true,\n defaultFundingIcons: false,\n defaultTagline: true,\n defaultDual: ``,\n\n minimumSize: BUTTON_SIZE.TINY,\n minimumVerticalSize: BUTTON_SIZE.MEDIUM,\n\n maximumSize: BUTTON_SIZE.HUGE,\n maximumVerticalSize: BUTTON_SIZE.HUGE,\n\n minHorizontalButtons: 1,\n minVerticalButtons: 1,\n\n maxHorizontalButtons: 2,\n maxVerticalButtons: 6,\n\n allowUnbranded: false,\n allowFundingIcons: true,\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.PAYPAL ]: {\n label: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n allowPrimary: true,\n\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true\n },\n\n [ BUTTON_LABEL.CHECKOUT ]: {\n label: `{ content: checkout }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n allowPrimary: true,\n\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true\n },\n\n [ BUTTON_LABEL.PAY ]: {\n label: `{ content: pay }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n allowPrimary: true,\n\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true\n },\n\n [ BUTTON_LABEL.BUYNOW ]: {\n label: `{ content: buynow }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n defaultBranding: undefined,\n\n allowPrimary: true,\n\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true,\n\n allowUnbranded: true\n },\n\n [ BUTTON_LABEL.INSTALLMENT ]: {\n label: (style) => { return `{ content: ${ style.installmentperiod ? 'installment_period' : 'installment' } }`; },\n logoLabel: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n allowPrimary: true,\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true,\n allowSecondaryVertical: false,\n allowSecondaryHorizontal: false\n },\n\n [ BUTTON_LABEL.CREDIT ]: {\n label: ({ locale }) => {\n if (locale.country === COUNTRY.DE) {\n return `{ logo: ${ BUTTON_LOGO.CREDIT } }`;\n }\n\n return `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } } { logo: ${ BUTTON_LOGO.CREDIT } }`;\n },\n logoLabel: ({ locale }) => {\n if (locale.country === COUNTRY.DE) {\n return `{ logo: ${ BUTTON_LOGO.CREDIT } }`;\n }\n\n return `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } } { logo: ${ BUTTON_LOGO.CREDIT } }`;\n },\n\n tag: `{ content: later_tag }`,\n\n colors: [\n BUTTON_COLOR.DARKBLUE,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLUE\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n defaultColor: BUTTON_COLOR.DARKBLUE,\n\n allowPrimary: true,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false,\n\n allowFundingIcons: false\n },\n\n [ BUTTON_LABEL.VENMO ]: {\n label: `{ logo: ${ BUTTON_LOGO.VENMO } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.VENMO } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.BLUE,\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.BLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLUE\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: true,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: true\n },\n [ BUTTON_LABEL.ITAU ]: {\n label: `{ logo: ${ BUTTON_LOGO.ITAU } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.ITAU } }`,\n\n defaultColor: BUTTON_COLOR.DARKBLUE,\n\n colors: [\n BUTTON_COLOR.DARKBLUE,\n BUTTON_COLOR.BLUE,\n BUTTON_COLOR.BLACK\n ],\n\n logoColors: {\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.DARKBLUE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: true\n },\n\n [ BUTTON_LABEL.IDEAL ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.IDEAL } } Online betalen`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.IDEAL } } Online betalen`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.ELV ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.ELV } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.ELV } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.BANCONTACT ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.BANCONTACT } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.BANCONTACT } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.GIROPAY ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.GIROPAY } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.GIROPAY } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.SOFORT ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.SOFORT } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.SOFORT } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.EPS ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.EPS } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.EPS } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.MYBANK ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.MYBANK } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.MYBANK } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.P24 ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.P24 } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.P24 } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.PAYU ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.PAYU } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PAYU } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.VERKKOPANKKI ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.VERKKOPANKKI } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.VERKKOPANKKI } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.BLIK ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.BLIK } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.BLIK } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.TRUSTLY ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.TRUSTLY } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.TRUSTLY } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.MAXIMA ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.MAXIMA } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.MAXIMA } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.BOLETO ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.BOLETO } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.BOLETO } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.OXXO ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.OXXO } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.OXXO } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.CARD ]: {\n\n label: `{ cards }`,\n logoLabel: `{ cards }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.TRANSPARENT\n ],\n\n logoColors: {\n [ BUTTON_COLOR.TRANSPARENT ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.TRANSPARENT\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n }\n};\n\nexport const FUNDING_TO_DEFAULT_LABEL = {\n [ FUNDING.PAYPAL ]: BUTTON_LABEL.PAYPAL,\n [ FUNDING.VENMO ]: BUTTON_LABEL.VENMO,\n [ FUNDING.ITAU ]: BUTTON_LABEL.ITAU,\n [ FUNDING.CARD ]: BUTTON_LABEL.CARD,\n [ FUNDING.CREDIT ]: BUTTON_LABEL.CREDIT,\n [ FUNDING.IDEAL ]: BUTTON_LABEL.IDEAL,\n [ FUNDING.ELV ]: BUTTON_LABEL.ELV,\n [ FUNDING.BANCONTACT ]: BUTTON_LABEL.BANCONTACT,\n [ FUNDING.GIROPAY ]: BUTTON_LABEL.GIROPAY,\n [ FUNDING.SOFORT ]: BUTTON_LABEL.SOFORT,\n [ FUNDING.EPS ]: BUTTON_LABEL.EPS,\n [ FUNDING.P24 ]: BUTTON_LABEL.P24,\n [ FUNDING.MYBANK ]: BUTTON_LABEL.MYBANK,\n [ FUNDING.PAYU ]: BUTTON_LABEL.PAYU,\n [ FUNDING.VERKKOPANKKI]: BUTTON_LABEL.VERKKOPANKKI,\n [ FUNDING.BLIK ]: BUTTON_LABEL.BLIK,\n [ FUNDING.TRUSTLY ]: BUTTON_LABEL.TRUSTLY,\n [ FUNDING.MAXIMA ]: BUTTON_LABEL.MAXIMA,\n [ FUNDING.BOLETO ]: BUTTON_LABEL.BOLETO,\n [ FUNDING.OXXO ]: BUTTON_LABEL.OXXO\n};\n\nexport const LABEL_TO_FUNDING = {\n [ BUTTON_LABEL.PAYPAL ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.CHECKOUT ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.PAY ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.BUYNOW ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.INSTALLMENT ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.CARD ]: FUNDING.CARD,\n [ BUTTON_LABEL.CREDIT ]: FUNDING.CREDIT,\n [ BUTTON_LABEL.VENMO ]: FUNDING.VENMO,\n [ BUTTON_LABEL.ITAU ]: FUNDING.ITAU,\n [ BUTTON_LABEL.IDEAL ]: FUNDING.IDEAL,\n [ BUTTON_LABEL.BANCONTACT]: FUNDING.BANCONTACT,\n [ BUTTON_LABEL.GIROPAY]: FUNDING.GIROPAY,\n [ BUTTON_LABEL.EPS ]: FUNDING.EPS,\n [ BUTTON_LABEL.SOFORT ]: FUNDING.SOFORT,\n [ BUTTON_LABEL.P24 ]: FUNDING.P24,\n [ BUTTON_LABEL.MYBANK ]: FUNDING.MYBANK,\n [ BUTTON_LABEL.PAYU ]: FUNDING.PAYU,\n [ BUTTON_LABEL.VERKKOPANKKI ]: FUNDING.VERKKOPANKKI,\n [ BUTTON_LABEL.BLIK ]: FUNDING.BLIK,\n [ BUTTON_LABEL.TRUSTLY ]: FUNDING.TRUSTLY,\n [ BUTTON_LABEL.MAXIMA ]: FUNDING.MAXIMA,\n [ BUTTON_LABEL.BOLETO ]: FUNDING.BOLETO,\n [ BUTTON_LABEL.OXXO ]: FUNDING.OXXO\n};\n\nexport const BUTTON_RELATIVE_STYLE = {\n FUNDINGICONS: 100,\n TAGLINE: 50,\n VERTICAL_MARGIN: 30\n};\n\nexport const BUTTON_STYLE = {\n\n [ BUTTON_SIZE.TINY ]: {\n defaultWidth: 75,\n defaultHeight: 25,\n minWidth: 75,\n maxWidth: 150,\n minHeight: 25,\n maxHeight: 30,\n buttonTextMargin: 0.5,\n allowFunding: true,\n allowTagline: false,\n byPayPalHeight: 0\n },\n\n [ BUTTON_SIZE.SMALL ]: {\n defaultWidth: 150,\n defaultHeight: 25,\n minWidth: 150,\n maxWidth: 200,\n minHeight: 25,\n maxHeight: 55,\n buttonTextMargin: 0.5,\n allowFunding: true,\n allowTagline: true,\n byPayPalHeight: 0\n },\n\n [ BUTTON_SIZE.MEDIUM ]: {\n defaultWidth: 250,\n defaultHeight: 35,\n minWidth: 200,\n maxWidth: 300,\n minHeight: 35,\n maxHeight: 55,\n buttonTextMargin: 1,\n allowFunding: true,\n allowTagline: true,\n byPayPalHeight: 30\n },\n\n [ BUTTON_SIZE.LARGE ]: {\n defaultWidth: 350,\n defaultHeight: 45,\n minWidth: 300,\n maxWidth: 500,\n minHeight: 30,\n maxHeight: 55,\n buttonTextMargin: 1,\n allowFunding: true,\n allowTagline: true,\n byPayPalHeight: 30\n },\n\n [ BUTTON_SIZE.HUGE ]: {\n defaultWidth: 500,\n defaultHeight: 55,\n minWidth: 500,\n maxWidth: 750,\n minHeight: 40,\n maxHeight: 55,\n buttonTextMargin: 1.25,\n allowFunding: true,\n allowTagline: true,\n byPayPalHeight: 30\n }\n};\n\nexport function labelToFunding(label : ?string) : string {\n return label ? LABEL_TO_FUNDING[label] : FUNDING.PAYPAL;\n}\n\nexport function fundingToDefaultLabel(funding : string) : $Values {\n return FUNDING_TO_DEFAULT_LABEL[funding];\n}\n\nfunction getConfig(conf : Object, category : string, key : string, def : ?T) : T {\n const categoryConfig = conf[category];\n\n if (categoryConfig && categoryConfig.hasOwnProperty(key)) {\n return categoryConfig[key];\n }\n\n if (conf[DEFAULT] && conf[DEFAULT].hasOwnProperty(key)) {\n return conf[DEFAULT][key];\n }\n\n if (arguments.length >= 4) {\n // $FlowFixMe\n return def;\n }\n\n throw new Error(`No value found for ${ category }:${ key }`);\n}\n\nexport function getButtonConfig(label : string, key : string, def : ?T) : T {\n return getConfig(BUTTON_CONFIG, label, key, def);\n}\n","/* @flow */\n\nimport { BUTTON_LAYOUT, BUTTON_STYLE_OPTIONS, BUTTON_LABEL, BUTTON_COLOR, BUTTON_SIZE, BUTTON_SHAPE } from '../constants';\nimport { determineEligibleFunding, determineEligibleCards } from '../funding';\nimport { memoize, sortBy } from '../lib/util';\nimport type { LocaleType, FundingSelection, FundingList, CheckoutCustomizationType } from '../types';\nimport { FUNDING_ORDER } from '../funding/config';\n\nimport { getButtonConfig, labelToFunding } from './config';\n\nfunction parseLocale(locale : string) : LocaleType {\n const [ lang, country ] = locale.split('_');\n return { country, lang };\n}\n\nexport function determineMaxButtons({ label, layout, max } : { layout : string, label : string, max : number }) : number {\n\n const allowed = (layout === BUTTON_LAYOUT.HORIZONTAL)\n ? getButtonConfig(label, 'allowPrimaryHorizontal')\n : getButtonConfig(label, 'allowPrimaryVertical');\n\n if (!allowed) {\n return 1;\n }\n\n const configMax = (layout === BUTTON_LAYOUT.HORIZONTAL)\n ? getButtonConfig(label, 'maxHorizontalButtons')\n : getButtonConfig(label, 'maxVerticalButtons');\n\n return max\n ? Math.min(configMax, max)\n : configMax;\n}\n\nfunction enableTagline({ tagline, branding, fundingicons, layout }) : boolean {\n return Boolean(tagline && branding && !fundingicons && layout === BUTTON_LAYOUT.HORIZONTAL);\n}\n\ntype NormalizedProps = {|\n size : $Values,\n label : $Values,\n color : $Values,\n shape : $Values,\n locale : LocaleType,\n branding : boolean,\n fundingicons : boolean,\n tagline : boolean,\n funding : FundingSelection,\n layout : $Values,\n sources : FundingList,\n max : number,\n multiple : boolean,\n env : string,\n height : ?number,\n cards : $ReadOnlyArray,\n installmentperiod : number,\n checkoutCustomization : ?CheckoutCustomizationType\n|};\n\nexport const normalizeProps = memoize((props : Object, defs? : { locale? : LocaleType } = {}) : NormalizedProps => {\n\n let {\n env,\n locale,\n style = {},\n funding,\n commit,\n checkoutCustomization\n } = props;\n\n locale = locale ? parseLocale(locale) : (defs.locale || getButtonConfig('DEFAULT', 'defaultLocale'));\n \n // funding indicated the allowed/disallowed payment methods (including cards) passed in the integration script\n // $FlowFixMe\n funding = funding || {};\n funding.allowed = funding.allowed || [];\n funding.disallowed = funding.disallowed || [];\n funding.remembered = funding.remembered || [];\n \n const label = style[BUTTON_STYLE_OPTIONS.LABEL] || getButtonConfig('DEFAULT', (style.layout === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalLabel' : 'defaultLabel');\n const layout = style[BUTTON_STYLE_OPTIONS.LAYOUT] || getButtonConfig(label, 'defaultLayout');\n\n let {\n [ BUTTON_STYLE_OPTIONS.SIZE ]: size = getButtonConfig(label, (layout === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalSize' : 'defaultSize'),\n [ BUTTON_STYLE_OPTIONS.COLOR ]: color = getButtonConfig(label, 'defaultColor'),\n [ BUTTON_STYLE_OPTIONS.SHAPE ]: shape = getButtonConfig(label, 'defaultShape'),\n [ BUTTON_STYLE_OPTIONS.BRANDING ]: branding = getButtonConfig(label, (layout === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalBranding' : 'defaultBranding'),\n [ BUTTON_STYLE_OPTIONS.FUNDINGICONS ]: fundingicons = getButtonConfig(label, 'defaultFundingIcons'),\n [ BUTTON_STYLE_OPTIONS.TAGLINE ]: tagline = getButtonConfig(label, 'defaultTagline'),\n [ BUTTON_STYLE_OPTIONS.MAXBUTTONS ]: max,\n [ BUTTON_STYLE_OPTIONS.HEIGHT ]: height,\n [ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD ]: installmentperiod\n } = style;\n\n // max is the maximum number of buttons to be displayed in the iframe\n max = determineMaxButtons({ label, layout, max });\n\n const selected = labelToFunding(label);\n let sources = determineEligibleFunding({ funding, selected, locale, env, layout, commit });\n // sources is an array of funding sources eligible to be displayed\n sources = sortBy(sources.slice(0, max), FUNDING_ORDER);\n // multiple is a boolean value indicating whether the sources is greater than 1\n const multiple = sources.length > 1;\n\n if (multiple) {\n branding = true;\n }\n\n tagline = enableTagline({ tagline, branding, fundingicons, layout });\n\n const cards = determineEligibleCards({ funding, locale });\n \n return { size, label, locale, color, shape, branding, fundingicons,\n tagline, funding, layout, sources, max, multiple, env, height, cards, installmentperiod, checkoutCustomization };\n});\n","/* @flow */\n\nimport { BUTTON_LABEL, BUTTON_LAYOUT, BUTTON_SIZE, BUTTON_STYLE_OPTIONS, ALLOWED_INSTALLMENT_COUNTRIES, ALLOWED_INSTALLMENT_PERIOD, LOCALE } from '../constants';\n\nimport { BUTTON_CONFIG, BUTTON_STYLE, getButtonConfig } from './config';\n\nexport function validateButtonLocale(locale : string) {\n\n if (!locale) {\n throw new Error(`Expected props.locale to be set`);\n }\n\n if (!locale.match(/^[a-z]{2}[_][A-Z][A-Z0-9]$/)) {\n throw new Error(`Expected props.locale to be valid, got ${ locale }`);\n }\n\n const [ lang, country ] = locale.split('_');\n\n if (!LOCALE[country] || LOCALE[country].indexOf(lang) === -1) {\n throw new Error(`Expected props.locale to be valid`);\n }\n}\n\nexport function validateRegionSpecificButton(style : Object = {}, locale : string = 'en_US') {\n\n const country = locale.split('_')[1];\n\n const isInstallmentAllowedCountry = ALLOWED_INSTALLMENT_COUNTRIES.indexOf(country) !== -1;\n\n if (!isInstallmentAllowedCountry && style.label === BUTTON_LABEL.INSTALLMENT) {\n throw new Error(`Unexpected label: style.${ style.label } for country: ${ country }`);\n }\n\n if (!isInstallmentAllowedCountry && style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD]) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD } is invalid for country: ${ country }`);\n }\n\n if (isInstallmentAllowedCountry && style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD] && style.label !== BUTTON_LABEL.INSTALLMENT) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD } is invalid for label: style.${ style.label }`);\n }\n\n if (isInstallmentAllowedCountry && style.label === BUTTON_LABEL.INSTALLMENT && style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD]\n && typeof style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD] !== 'number') {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD } is expected to be a number`);\n }\n\n if (isInstallmentAllowedCountry && style.label === BUTTON_LABEL.INSTALLMENT && style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD]\n && ALLOWED_INSTALLMENT_PERIOD[country].indexOf(style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD]) === -1) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD }: ${ style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD] } is not a valid installment number for ${ style.label }`);\n }\n\n}\n\nexport function validateButtonStyle(style : Object = {}, props : Object) {\n\n if (!style) {\n throw new Error(`Expected props.style to be set`);\n }\n\n const label = style[BUTTON_STYLE_OPTIONS.LABEL] || getButtonConfig('DEFAULT', (style[BUTTON_STYLE_OPTIONS.LAYOUT] === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalLabel' : 'defaultLabel');\n\n if (!BUTTON_CONFIG[label]) {\n throw new Error(`Invalid button label: ${ label }, expected: ${ Object.keys(BUTTON_CONFIG[label]).join(', ') }`);\n }\n\n const {\n [ BUTTON_STYLE_OPTIONS.COLOR ]: color,\n [ BUTTON_STYLE_OPTIONS.SHAPE ]: shape,\n [ BUTTON_STYLE_OPTIONS.SIZE ]: size,\n [ BUTTON_STYLE_OPTIONS.BRANDING ]: branding,\n [ BUTTON_STYLE_OPTIONS.FUNDINGICONS ]: fundingicons,\n [ BUTTON_STYLE_OPTIONS.TAGLINE ]: tagline,\n [ BUTTON_STYLE_OPTIONS.LAYOUT ]: layout,\n [ BUTTON_STYLE_OPTIONS.MAXBUTTONS ]: maxbuttons,\n [ BUTTON_STYLE_OPTIONS.HEIGHT ]: height\n } = style;\n\n if (color && getButtonConfig(label, 'colors').indexOf(color) === -1) {\n throw new Error(`Unexpected style.${ BUTTON_STYLE_OPTIONS.COLOR } for ${ label } button: ${ color }, expected ${ getButtonConfig(label, 'colors').join(', ') }`);\n }\n\n if (shape && getButtonConfig(label, 'shapes').indexOf(shape) === -1) {\n throw new Error(`Unexpected style.${ BUTTON_STYLE_OPTIONS.SHAPE } for ${ label } button: ${ shape }, expected ${ getButtonConfig(label, 'shapes').join(', ') }`);\n }\n\n if (size && getButtonConfig(label, 'sizes').indexOf(size) === -1) {\n throw new Error(`Unexpected style.${ BUTTON_STYLE_OPTIONS.SIZE } for ${ label } button: ${ size }, expected ${ getButtonConfig(label, 'sizes').join(', ') }`);\n }\n\n if (branding === false) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.BRANDING }:false is not allowed`);\n }\n\n if (fundingicons && !getButtonConfig(label, 'allowFundingIcons')) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.FUNDINGICONS }:true is not allowed for ${ label } button`);\n }\n\n if (layout && getButtonConfig(label, 'layouts').indexOf(layout) === -1) {\n throw new Error(`Unexpected style.${ BUTTON_STYLE_OPTIONS.LAYOUT } for ${ label } button: ${ layout }, expected ${ getButtonConfig(label, 'layouts').join(', ') }`);\n }\n\n if (maxbuttons !== undefined) {\n if (typeof maxbuttons !== 'number') {\n throw new TypeError(`Expected style.${ BUTTON_STYLE_OPTIONS.MAXBUTTONS } to be a number, got: ${ maxbuttons }`);\n }\n\n if (maxbuttons < 1) {\n throw new Error(`Expected style.${ BUTTON_STYLE_OPTIONS.MAXBUTTONS } to be a at least 1, got: ${ maxbuttons }`);\n }\n\n const minButtons = (layout === BUTTON_LAYOUT.VERTICAL)\n ? getButtonConfig(label, 'minVerticalButtons')\n : getButtonConfig(label, 'minHorizontalButtons');\n\n if (maxbuttons < minButtons) {\n throw new Error(`Expected style.${ BUTTON_STYLE_OPTIONS.MAXBUTTONS } to be no fewer than ${ minButtons }, got ${ maxbuttons }`);\n }\n }\n\n if (height !== undefined) {\n if (typeof height !== 'number') {\n throw new TypeError(`Expected style.${ BUTTON_STYLE_OPTIONS.HEIGHT } to be a number, got: ${ maxbuttons }`);\n }\n\n const buttonSize = size || getButtonConfig(label, (style.layout === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalSize' : 'defaultSize');\n\n const { minHeight, maxHeight } = (size === BUTTON_SIZE.RESPONSIVE) ? {\n minHeight: BUTTON_STYLE[BUTTON_SIZE.SMALL].minHeight,\n maxHeight: BUTTON_STYLE[BUTTON_SIZE.HUGE].maxHeight\n } : BUTTON_STYLE[buttonSize];\n\n if (height < minHeight || height > maxHeight) {\n throw new Error(`Expected style.${ BUTTON_STYLE_OPTIONS.HEIGHT } to be between ${ minHeight }px and ${ maxHeight }px - got ${ height }px`);\n }\n }\n\n if (!getButtonConfig(label, 'allowPrimary')) {\n throw new Error(`${ label } can not be used as primary button label`);\n }\n\n if (layout === BUTTON_LAYOUT.VERTICAL) {\n\n if (size && [ BUTTON_SIZE.MEDIUM, BUTTON_SIZE.LARGE, BUTTON_SIZE.RESPONSIVE ].indexOf(size) === -1) {\n throw new Error(`Button must be at least ${ BUTTON_SIZE.MEDIUM } size for ${ BUTTON_LAYOUT.VERTICAL } layout`);\n }\n\n if (!getButtonConfig(label, 'allowPrimaryVertical')) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.LABEL } option is not allowed for ${ BUTTON_LAYOUT.VERTICAL } layout - got ${ label }`);\n }\n\n if (fundingicons) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.FUNDINGICONS } not allowed for ${ BUTTON_LAYOUT.VERTICAL } layout - got ${ fundingicons }`);\n }\n\n if (tagline) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.TAGLINE } is not allowed for ${ BUTTON_LAYOUT.VERTICAL } layout - got ${ tagline }`);\n }\n }\n\n validateRegionSpecificButton(style, props.locale);\n}\n\nexport function validateButtonProps(props : Object) {\n\n if (!props) {\n throw new Error(`Expected props`);\n }\n\n const { locale, style } = props;\n\n validateButtonLocale(locale);\n validateButtonStyle(style, props);\n}\n","/* @flow */\n\nexport const CLASS = {\n SHOULD_FOCUS: 'paypal-should-focus',\n\n CONTAINER: 'paypal-button-container',\n BUTTON: 'paypal-button',\n \n BUTTON_LABEL: 'paypal-button-label-container',\n\n LABEL: 'paypal-button-label',\n COLOR: 'paypal-button-color',\n LOGO_COLOR: 'paypal-button-logo-color',\n SHAPE: 'paypal-button-shape',\n BRANDING: 'paypal-button-branding',\n LAYOUT: 'paypal-button-layout',\n NUMBER: 'paypal-button-number',\n ENV: 'paypal-button-env',\n\n TAGLINE: 'paypal-button-tagline',\n TAGLINE_COLOR: 'paypal-button-tagline-color',\n FUNDINGICONS: 'paypal-button-fundingicons',\n\n TEXT: 'paypal-button-text',\n LOGO: 'paypal-button-logo',\n CARD: 'paypal-button-card',\n\n SEPARATOR: 'paypal-separator',\n HIDDEN: 'hidden',\n DOM_READY: 'dom-ready',\n \n PERSONALIZATION_TEXT: 'personalization-text'\n};\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { create } from 'zoid/src';\nimport { type Component } from 'zoid/src/component/component';\nimport { info, warn, track, error, flush as flushLogs, immediateFlush } from 'beaver-logger/client';\nimport { getDomain } from 'cross-domain-utils/src';\nimport { base64encode } from 'belter/src';\nimport { debounce, once } from 'zoid/src/lib';\n\nimport { pptm } from '../external';\nimport { config } from '../config';\nimport { SOURCE, ENV, FPTI, FUNDING, BUTTON_LABEL, BUTTON_COLOR,\n BUTTON_SIZE, BUTTON_SHAPE, BUTTON_LAYOUT, COUNTRY } from '../constants';\nimport { redirect as redir, checkRecognizedBrowser,\n getBrowserLocale, getSessionID, request, getScriptVersion,\n isIEIntranet, isEligible, getCurrentScriptUrl,\n getDomainSetting, extendUrl, isDevice, rememberFunding,\n getRememberedFunding, memoize, uniqueID, getThrottle, getBrowser } from '../lib';\nimport { rest } from '../api';\nimport { onAuthorizeListener } from '../experiments';\nimport { getPaymentType, awaitBraintreeClient,\n mapPaymentToBraintree, type BraintreePayPalClient } from '../integrations';\nimport { awaitPopupBridge } from '../integrations/popupBridge';\nimport { validateFunding, isFundingIneligible, isFundingAutoEligible } from '../funding';\n\nimport { containerTemplate, componentTemplate } from './template';\nimport { validateButtonLocale, validateButtonStyle } from './validate';\nimport { setupButtonChild } from './child';\nimport { normalizeProps } from './props';\n\npptm.listenForLoadWithNoContent();\n\nfunction isCreditDualEligible(props) : boolean {\n\n const { label, funding, layout, locale, max, sources, env } = normalizeProps(props, { locale: getBrowserLocale() });\n const { allowed } = funding;\n const { country } = locale;\n\n if (allowed && allowed.indexOf(FUNDING.CREDIT) !== -1) {\n return false;\n }\n\n if (layout !== BUTTON_LAYOUT.HORIZONTAL) {\n return false;\n }\n\n if (max === 1) {\n return false;\n }\n\n if (label === BUTTON_LABEL.CREDIT) {\n return false;\n }\n\n if (country !== COUNTRY.US) {\n return false;\n }\n\n if (isFundingIneligible(FUNDING.CREDIT, { funding, locale, layout, env })) {\n return false;\n }\n\n if (isFundingAutoEligible(FUNDING.CREDIT, { funding, locale, layout })) {\n return false;\n }\n\n if (sources.indexOf(FUNDING.CREDIT) !== -1) {\n return false;\n }\n\n const domain = getDomain().replace(/^https?:\\/\\//, '').replace(/^www\\./, '');\n\n if (config.creditTestDomains.indexOf(domain) === -1) {\n return false;\n }\n\n return true;\n}\n\nlet creditThrottle;\n\ntype ButtonOptions = {|\n style : {|\n maxbuttons? : number,\n layout? : string,\n label? : string,\n size? : string,\n shape? : string,\n color? : string,\n tagline? : boolean\n |},\n client : {\n [string] : (string | ZalgoPromise)\n },\n funding? : { allowed? : $ReadOnlyArray, disallowed? : $ReadOnlyArray },\n env? : string,\n locale? : string,\n logLevel : string,\n awaitPopupBridge : Function,\n meta : Object,\n validate? : ({ enable : () => ZalgoPromise, disable : () => ZalgoPromise }) => void,\n stage? : string,\n stageUrl? : string,\n localhostUrl? : string,\n checkoutUri? : string,\n authCode? : string,\n enableNativeCheckout? : boolean\n|};\n\nexport const Button : Component = create({\n\n tag: 'paypal-button',\n name: 'ppbutton',\n\n buildUrl(props) : string {\n const env = props.env || config.env;\n const url = config.buttonUrls[env];\n return url;\n },\n\n contexts: {\n iframe: true,\n popup: false\n },\n\n scrolling: false,\n listenForResize: true,\n\n containerTemplate,\n\n autoResize: {\n height: true,\n width: false\n },\n\n prerenderTemplate({ props, jsxDom } : { props : Object, jsxDom : Function }) : HTMLElement {\n\n const template = (\n
\n );\n\n template.addEventListener('click', () => {\n warn('button_pre_template_click');\n\n if (isIEIntranet()) {\n warn(`button_pre_template_click_intranet_mode`);\n\n flushLogs();\n\n // eslint-disable-next-line no-alert\n alert(`IE Intranet mode is not supported by PayPal. Please disable intranet mode, or continue in an alternate browser.`);\n }\n\n if (getDomainSetting('allow_full_page_fallback')) {\n info('pre_template_force_full_page');\n\n this.props.payment().then(token => {\n window.top.location = extendUrl(config.checkoutUrl, { token });\n });\n }\n });\n\n return (\n \n \n { template }\n \n \n );\n },\n\n get version() : string {\n return getScriptVersion();\n },\n\n get domain() : Object {\n return config.paypalDomains;\n },\n\n attributes: {\n iframe: {\n allowpaymentrequest: 'allowpaymentrequest'\n }\n },\n\n validate() {\n if (!isEligible()) {\n warn('button_render_ineligible');\n }\n },\n\n props: {\n domain: {\n type: 'string',\n required: false,\n def() : string {\n return window.location.host;\n },\n queryParam: true\n },\n\n sessionID: {\n type: 'string',\n required: false,\n def() : string {\n return getSessionID();\n },\n queryParam: true\n },\n\n buttonSessionID: {\n type: 'string',\n required: false,\n def() : ?string {\n return uniqueID();\n },\n queryParam: true\n },\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n }\n },\n\n meta: {\n type: 'object',\n required: false,\n def() : Object {\n return {};\n }\n },\n\n enableNativeCheckout: {\n type: 'boolean',\n required: false,\n def() : boolean {\n return false;\n }\n },\n\n client: {\n type: 'object',\n required: false,\n def() : Object {\n return {};\n },\n\n validate(client, props) {\n const env = props.env || config.env;\n\n if (!client[env]) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (typeof client[env] === 'string') {\n if (client[env].match(/^(.)\\1+$/)) {\n throw new Error(`Invalid client ID: ${ client[env] }`);\n }\n } else if (!ZalgoPromise.isPromise(client[env])) {\n throw new Error(`Expected client token to be either a string or a promise`);\n }\n },\n\n decorate(client : Object) : Object {\n if (client && client.sandbox === 'demo_sandbox_client_id') {\n client.sandbox = 'AZDxjDScFpQtjWTOUtWKbyN_bDt4OgqaF4eYXlewfBP4-8aqX3PiV8e1GWU6liB2CUXlkA59kJXE7M6R';\n }\n\n return client;\n }\n },\n\n source: {\n type: 'string',\n required: false,\n def() : string {\n return SOURCE.MANUAL;\n }\n },\n\n prefetchLogin: {\n type: 'boolean',\n required: false\n },\n\n stage: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.STAGE || env === ENV.LOCAL) {\n return config.stage;\n }\n }\n },\n\n updateClientConfiguration: {\n type: 'boolean',\n required: false,\n def: () => {\n return true;\n }\n },\n\n stageUrl: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.STAGE || env === ENV.LOCAL) {\n return config.stageUrl;\n }\n }\n },\n\n localhostUrl: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.LOCAL) {\n return config.localhostUrl;\n }\n }\n },\n\n checkoutUri: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : ?string {\n return config.checkoutUri;\n }\n },\n\n braintree: {\n type: 'object',\n required: false,\n validate(braintree, props) {\n\n if (!braintree.paypalCheckout) {\n throw new Error(`Expected Braintree paypal-checkout component to be loaded`);\n }\n\n if (!props.client) {\n throw new Error(`Expected client prop to be passed with Braintree authorization keys`);\n }\n },\n // $FlowFixMe\n decorate(braintree, props) : ZalgoPromise {\n const env = props.env || config.env;\n // $FlowFixMe\n return ZalgoPromise.hash(props.client).then(client => {\n return awaitBraintreeClient(braintree, client[env]);\n });\n }\n },\n\n payment: {\n type: 'function',\n required: true,\n memoize: false,\n timeout: __TEST__ ? 500 : 10 * 1000,\n alias: 'billingAgreement',\n\n decorate(original) : Function {\n return function payment(data = {}) : ZalgoPromise {\n\n const actions = {\n request,\n payment: {\n create: (options) => {\n return this.props.braintree\n ? this.props.braintree.then(client => {\n return client.createPayment(mapPaymentToBraintree(options.payment || options));\n })\n : ZalgoPromise.hash(this.props.client).then(client => {\n return rest.payment.create(this.props.env, client, options);\n });\n }\n },\n order: {\n create: (options) => {\n return ZalgoPromise.hash(this.props.client).then(client => {\n return rest.order.create(this.props.env, client, options);\n });\n }\n },\n braintree: {\n create: (options) => {\n if (!this.props.braintree) {\n throw new Error(`Can not create using Braintree - no braintree client provided`);\n }\n\n return this.props.braintree.then(client => {\n return client.createPayment(options);\n });\n }\n }\n };\n\n if (getDomainSetting('memoize_payment') && this.memoizedToken) {\n return this.memoizedToken;\n }\n\n this.memoizedToken = ZalgoPromise.try(original, this, [ data, actions ]);\n\n const startTime = Date.now();\n\n this.memoizedToken = this.memoizedToken.then(token => {\n\n if (!token) {\n error(`no_token_passed_to_payment`);\n throw new Error(`No value passed to payment`);\n }\n\n const elapsed = Date.now() - startTime;\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.RECIEVE_PAYMENT,\n [ FPTI.KEY.CONTEXT_TYPE ]: FPTI.CONTEXT_TYPE[getPaymentType(token)],\n [ FPTI.KEY.CONTEXT_ID ]: token,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.RESPONSE_DURATION ]: elapsed,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n flushLogs();\n\n return token;\n });\n\n return this.memoizedToken;\n };\n }\n },\n\n authCode: {\n type: 'string',\n required: false,\n def() : string {\n return config.authCode;\n }\n },\n\n funding: {\n type: 'object',\n required: false,\n queryParam: true,\n validate({ allowed = [], disallowed = [] } : Object = {}) {\n validateFunding({ allowed, disallowed, remembered: [] });\n },\n def() : Object {\n return {};\n },\n decorate({ allowed = [], disallowed = [] } : Object = {}, props : ButtonOptions) : {} {\n\n allowed = Array.isArray(allowed) ? allowed : [];\n disallowed = Array.isArray(disallowed) ? disallowed : [];\n\n if (allowed && allowed.indexOf(FUNDING.VENMO) !== -1) {\n allowed = allowed.filter(source => (source !== FUNDING.VENMO));\n }\n if (allowed && allowed.indexOf(FUNDING.ITAU) !== -1) {\n allowed = allowed.filter(source => (source !== FUNDING.ITAU));\n }\n\n if (isCreditDualEligible(props)) {\n creditThrottle = getThrottle('dual_credit_automatic', 50);\n\n if (creditThrottle.isEnabled()) {\n allowed = [ ...allowed, FUNDING.CREDIT ];\n }\n }\n\n let remembered = getRememberedFunding(sources => sources);\n\n if (!isDevice() || getDomainSetting('disable_venmo')) {\n if (remembered && remembered.indexOf(FUNDING.VENMO) !== -1) {\n remembered = remembered.filter(source => (source !== FUNDING.VENMO));\n }\n\n if (disallowed && disallowed.indexOf(FUNDING.VENMO) === -1) {\n disallowed = [ ...disallowed, FUNDING.VENMO ];\n }\n }\n\n return {\n allowed,\n disallowed,\n remembered,\n remember(sources) {\n rememberFunding(sources);\n }\n };\n }\n },\n\n commit: {\n type: 'boolean',\n required: false,\n queryParam: true,\n queryValue: (val) => {\n return val ? 'true' : 'false';\n }\n },\n\n onRender: {\n type: 'function',\n promisify: true,\n required: false,\n noop: true,\n decorate(original) : Function {\n return function decorateOnRender() : mixed {\n const { browser = 'unrecognized', version = 'unrecognized' } = getBrowser();\n info(`button_render_browser_${ browser }_${ isDevice() ? 'mobile' : 'desktop' }_${ version }`);\n\n const style = this.props.style || {};\n\n info(`button_render`);\n info(`button_render_color_${ style.color || 'default' }`);\n info(`button_render_shape_${ style.shape || 'default' }`);\n info(`button_render_size_${ style.size || 'default' }`);\n info(`button_render_label_${ style.label || 'default' }`);\n info(`button_render_branding_${ style.branding || 'default' }`);\n info(`button_render_fundingicons_${ style.fundingicons || 'default' }`);\n info(`button_render_tagline_${ style.tagline || 'default' }`);\n\n pptm.listenForButtonRender();\n pptm.reloadPptmScript(this.props.client[this.props.env]);\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_RENDER,\n [ FPTI.KEY.BUTTON_TYPE ]: FPTI.BUTTON_TYPE.IFRAME,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.BUTTON_SOURCE ]: this.props.source\n });\n\n if (isIEIntranet()) {\n warn(`button_render_intranet_mode`);\n }\n\n if (creditThrottle) {\n creditThrottle.logStart({\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID\n });\n }\n\n flushLogs();\n\n return original.apply(this, arguments);\n };\n }\n },\n\n onAuthorize: {\n type: 'function',\n alias: 'onApprove',\n required: true,\n\n decorate(original) : Function {\n return function decorateOnAuthorize(data, actions) : void | ZalgoPromise {\n\n if (data && !data.intent) {\n warn(`button_authorize_no_intent`, { paymentID: data.paymentID, token: data.paymentToken });\n }\n\n info('button_authorize');\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CHECKOUT_AUTHORIZE,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n if (isIEIntranet()) {\n warn(`button_authorize_intranet_mode`);\n }\n\n if (!isEligible()) {\n info('button_authorize_ineligible');\n }\n\n checkRecognizedBrowser('authorize');\n\n flushLogs();\n\n const restart = actions.restart;\n actions.restart = () => {\n return restart().then(() => {\n return new ZalgoPromise();\n });\n };\n\n actions.redirect = (win, url) => {\n return ZalgoPromise.try(() => {\n if (actions.close) {\n return actions.close();\n }\n }).then(() => {\n return redir(win || window.top, url || data.returnUrl);\n });\n };\n\n actions.payment.tokenize = memoize(() => {\n if (!this.props.braintree) {\n throw new Error(`Must pass in Braintree client to tokenize payment`);\n }\n\n return this.props.braintree\n .then(client => client.tokenizePayment(data));\n });\n\n const execute = actions.payment.execute;\n actions.payment.execute = () => {\n return execute().then(result => {\n\n if (!result || !result.id || !result.intent || !result.state) {\n warn(`execute_result_missing_data`);\n return new ZalgoPromise();\n }\n\n return result;\n });\n };\n\n const get = actions.payment.get;\n\n actions.payment.get = () => {\n return get().then(result => {\n if (!result || !result.id || !result.intent || !result.state) {\n warn(`get_result_missing_data`);\n return new ZalgoPromise();\n }\n\n return result;\n });\n };\n\n actions.request = request;\n\n onAuthorizeListener.trigger({\n paymentToken: data.paymentToken\n });\n\n if (creditThrottle) {\n creditThrottle.logComplete({\n [FPTI.KEY.BUTTON_SESSION_UID]: this.props.buttonSessionID\n });\n }\n\n return ZalgoPromise.try(() => {\n\n if (this.props.braintree) {\n return actions.payment.tokenize().then(({ nonce }) => {\n // $FlowFixMe\n Object.defineProperty(data, 'nonce', {\n get: () => {\n info('nonce_getter');\n flushLogs();\n return nonce;\n }\n });\n });\n }\n\n }).then(() => {\n return original.call(this, data, actions);\n }).catch(err => {\n if (this.props.onError) {\n return this.props.onError(err);\n }\n throw err;\n });\n };\n }\n },\n\n onShippingChange: {\n type: 'function',\n required: false,\n\n decorate(original) : void | Function {\n if (!original) {\n return;\n }\n\n return function decorateOnShippingChange(data, actions) : ZalgoPromise {\n\n info('button_shipping_change');\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CHECKOUT_SHIPPING_CHANGE,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n flushLogs();\n const timeout = __TEST__ ? 500 : 10 * 1000;\n\n const patch = actions.payment.patch;\n actions.payment.patch = (patchObject) => {\n return ZalgoPromise.try(() => {\n return patch(patchObject);\n });\n };\n\n const resolve = () => ZalgoPromise.resolve();\n const reject = actions.reject || function reject() {\n throw new Error(`Missing reject action callback`);\n };\n\n return ZalgoPromise.try(() => {\n return original.call(this, data, { ...actions, resolve, reject });\n }).timeout(timeout,\n new Error(`Timed out waiting ${ timeout }ms for payment`)).catch(err => {\n if (this.props.onError) {\n this.props.onError(err);\n }\n throw err;\n });\n };\n }\n },\n\n onError: {\n type: 'function',\n required: false,\n promisify: true,\n sendToChild: true,\n once: true,\n def() : (() => void) {\n return function onError(err : mixed) {\n if (isIEIntranet()) {\n warn(`button_error_intranet_mode`);\n flushLogs();\n\n // eslint-disable-next-line no-alert\n alert(`IE Intranet mode is not supported by PayPal. Please disable intranet mode, or continue in an alternate browser.`);\n }\n\n setTimeout(() => {\n throw err;\n });\n };\n }\n },\n\n onCancel: {\n type: 'function',\n required: false,\n noop: true,\n\n decorate(original) : Function {\n return function decorateOnCancel(data, actions) : void | ZalgoPromise {\n\n info('button_cancel');\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CHECKOUT_CANCEL,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n flushLogs();\n\n const redirect = (win, url) => {\n return ZalgoPromise.all([\n redir(win || window.top, url || data.cancelUrl),\n actions.close()\n ]);\n };\n\n return original.call(this, data, { ...actions, redirect });\n };\n }\n },\n\n onClick: {\n type: 'function',\n required: false,\n noop: true,\n decorate(original) : Function {\n return function decorateOnClick(data : ?{ fundingSource : string, card? : string, flow? : string, button_version? : string }) : void {\n\n info('button_click');\n if (data && data.flow) {\n info(`pay_flow_${ data.flow }`);\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.BUTTON,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_CLICK,\n [ FPTI.KEY.BUTTON_TYPE ]: FPTI.BUTTON_TYPE.IFRAME,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.CHOSEN_FUNDING ]: data && (data.card || data.fundingSource),\n [ FPTI.KEY.PAYMENT_FLOW ]: data && data.flow,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n if (isIEIntranet()) {\n warn('button_click_intranet_mode');\n }\n\n if (creditThrottle) {\n creditThrottle.log('click', {\n [ FPTI.KEY.STATE ]: FPTI.STATE.BUTTON,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_CLICK,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID\n });\n }\n\n const { color = 'default' } = this.props.style || {};\n info(`button_click_color_${ color }`);\n\n flushLogs();\n\n return original.apply(this, arguments);\n };\n }\n },\n\n onResize: {\n type: 'function',\n required: false,\n get value() : Function {\n let initialHeight;\n const logInlineGuestOutOfViewPortOnlyOnce = once((data) => {\n info('buttons_expansion_outside_viewport', data);\n immediateFlush();\n });\n\n return function onResizeHandler() {\n const container = this.container;\n\n if (!container) {\n return;\n }\n\n if (!initialHeight) {\n initialHeight = container.offsetHeight;\n }\n\n const getScrollOffsetY = () => {\n if (window.pageYOffset) {\n return window.pageYOffset;\n }\n\n if (document.documentElement) {\n return document.documentElement.scrollTop;\n }\n\n return 0;\n };\n\n // explanation https://github.com/paypal/paypal-checkout-components/pull/1136#discussion_r298025574\n const checkIfExpansionInViewport = () => {\n try {\n const scrollOffsetY = getScrollOffsetY();\n const windowHeight = window.innerHeight;\n\n const containerOffsetY = container.getBoundingClientRect().top;\n const VISIBLE_THRESHOLD = 200; // 200px, for the first input field to be visible\n\n return scrollOffsetY + windowHeight > initialHeight + containerOffsetY + VISIBLE_THRESHOLD;\n } catch (err) {\n info('cannot_get_the_viewport_information');\n return false;\n }\n };\n\n const isContainerExpanded = container && container.offsetHeight > initialHeight;\n const isExpansionInViewport = checkIfExpansionInViewport();\n\n if (!isContainerExpanded || isExpansionInViewport) {\n return;\n }\n\n logInlineGuestOutOfViewPortOnlyOnce({\n height: container.offsetHeight,\n window: {\n width: window.innerWidth,\n height: window.innerHeight\n }\n });\n };\n },\n decorate: (original) => debounce(original)\n },\n\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n },\n\n validate: validateButtonLocale\n },\n\n style: {\n type: 'object',\n required: false,\n queryParam: true,\n alias: 'buttonStyle',\n\n def() : Object {\n return {\n color: BUTTON_COLOR.GOLD,\n shape: BUTTON_SHAPE.PILL,\n size: BUTTON_SIZE.SMALL,\n label: BUTTON_LABEL.CHECKOUT,\n fundingicons: false,\n layout: BUTTON_LAYOUT.HORIZONTAL\n };\n },\n \n decorate(style : Object) : Object {\n const { label, layout = BUTTON_LAYOUT.HORIZONTAL } = style;\n if (!label && layout === BUTTON_LAYOUT.HORIZONTAL) {\n style.label = BUTTON_LABEL.CHECKOUT;\n return style;\n } else if (!label && layout === BUTTON_LAYOUT.VERTICAL) {\n style.label = BUTTON_LABEL.PAYPAL;\n return style;\n }\n return style;\n },\n\n validate(style = {}, props) {\n validateButtonStyle(style, props);\n flushLogs();\n }\n },\n\n validate: {\n type: 'function',\n required: false,\n decorate(validate) : Function {\n // $FlowFixMe\n return function decorateValidate(actions) : mixed {\n if (!this.validateCalled) {\n this.validateCalled = true;\n return validate(actions);\n }\n };\n }\n },\n\n logLevel: {\n type: 'string',\n required: false,\n get value() : string {\n return config.logLevel;\n }\n },\n\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n },\n\n awaitPopupBridge: {\n type: 'object',\n required: false,\n value: () => awaitPopupBridge(Button)\n },\n\n getPageUrl: {\n type: 'function',\n queryParam: false,\n required: false,\n def: () => {\n return () => window.location.href;\n }\n },\n\n test: {\n type: 'object',\n required: false,\n def() : Object {\n return { action: 'checkout' };\n }\n }\n }\n});\n\nif (Button.isChild()) {\n setupButtonChild(Button);\n}\n","/* @flow */\n\nimport { CLASS } from './class';\n\nexport const pageStyle = `\n html, body {\n padding: 0;\n margin: 0;\n width: 100%;\n overflow: hidden;\n text-align: center;\n }\n\n body {\n display: inline-block;\n vertical-align: top;\n }\n\n * {\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -khtml-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n cursor: default;\n box-sizing: border-box;\n }\n \n .${ CLASS.HIDDEN } {\n position: absolute;\n visibility: hidden;\n }\n`;\n","/* @flow */\n\nimport { BUTTON_COLOR, ENV } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const buttonStyle = `\n\n .${ CLASS.CONTAINER } {\n display: block;\n white-space: nowrap;\n margin: 0;\n background: 0;\n border: 0;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n text-transform: none;\n font-weight: 500;R\n -webkit-font-smoothing: antialiased;\n font-smoothing: antialiased;\n z-index: 0;\n font-size: 0;\n width: 100%;\n box-sizing: border-box;\n }\n\n .${ CLASS.BUTTON }:not(.${ CLASS.CARD }) {\n border: 1px solid transparent;\n border-radius: 0 3px 3px 0;\n position: relative;\n width: 100%;\n box-sizing: border-box;\n border: none;\n vertical-align: top;\n cursor: pointer;\n outline: none;\n overflow: hidden;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.TRANSPARENT } {\n cursor: auto;\n }\n\n .${ CLASS.BUTTON } * {\n cursor: pointer;\n }\n\n .${ CLASS.CONTAINER }.${ CLASS.ENV }-${ ENV.TEST } .${ CLASS.TEXT } {\n font-family: Arial !important;\n background: rgba(0, 0, 0, 0.5) !important;\n color: transparent !important;\n text-shadow: none !important;\n }\n\n .${ CLASS.BUTTON }:hover {\n box-shadow: inset 0 0 100px 100px rgba(255, 255, 255, 0.2);\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.GOLD }:hover,\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.SILVER }:hover {\n box-shadow: inset 0 0 100px 100px rgba(0, 0, 0, 0.05);\n }\n\n .${ CLASS.CARD }, .${ CLASS.CARD } * {\n cursor: pointer;\n }\n\n .${ CLASS.CARD }:hover {\n filter: brightness(1.2);\n }\n\n .${ CLASS.BUTTON }:focus, .${ CLASS.CARD }:focus {\n outline: none;\n }\n\n .${ CLASS.SHOULD_FOCUS } .${ CLASS.BUTTON }:focus,\n .${ CLASS.SHOULD_FOCUS } .${ CLASS.CARD }:focus {\n outline: solid 2px Highlight;\n outline: auto 5px -webkit-focus-ring-color;\n outline-offset: -3px;\n }\n\n .${ CLASS.BUTTON }:focus {\n box-shadow: -1px -1px 18px 1px rgba(0, 0, 0, 0.25) inset;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.TRANSPARENT }:focus {\n box-shadow: none;\n outline: none;\n }\n\n .${ CLASS.LOGO } {\n padding: 0;\n display: inline-block;\n background: none;\n border: none;\n width: auto;\n }\n\n .${ CLASS.TEXT } {\n display: inline-block;\n white-space: pre;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.BUTTON_LABEL } {\n position: relative;\n top: 50%;\n transform: translateY(-50%);\n -webkit-transform: translateY(-50%);\n -moz-transform: translateY(-50%);\n -ms-transform: translateY(-50%);\n -o-transform: translateY(-50%);\n }\n \n .${ CLASS.BUTTON } > .${ CLASS.BUTTON_LABEL } > * {\n vertical-align: top;\n height: 100%;\n text-align: left;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.CARD } {\n border-radius: 4px;\n }\n\n .powered-by-paypal > .${ CLASS.TEXT } {\n vertical-align: top;\n line-height: 18px;\n }\n\n .powered-by-paypal > .${ CLASS.LOGO } {\n height: 16px;\n min-height: 16px;\n }\n\n .${ CLASS.TAGLINE } {\n max-width: 100%;\n font-weight: normal;\n display: block;\n text-align: center;\n width: auto;\n }\n\n .${ CLASS.SEPARATOR } {\n height: 80%;\n border-left: 1px solid rgba(0, 0, 0, 0.15);\n margin: 0 8px;\n display: inline-block;\n position: relative;\n top: 10%;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.BLACK } .${ CLASS.SEPARATOR } {\n border-color: rgba(255, 255, 255, 0.45);\n }\n`;\n","/* @flow */\n\nimport { BUTTON_LAYOUT } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const layoutStyle = `\n\n .${ CLASS.CONTAINER }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.VERTICAL } .${ CLASS.TAGLINE } {\n display: none;\n }\n`;\n","/* @flow */\n\nimport { BUTTON_BRANDING } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const brandingStyle = `\n\n .${ CLASS.BUTTON }.${ CLASS.BRANDING }-${ BUTTON_BRANDING.UNBRANDED } {\n min-width: 60%;\n width: auto;\n font-weight: 900;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.BRANDING }-${ BUTTON_BRANDING.UNBRANDED } .${ CLASS.LOGO } {\n display: none;\n }\n`;\n","/* @flow */\n\nimport { BUTTON_STYLE } from '../../config';\nimport { BUTTON_LABEL, BUTTON_LOGO, BUTTON_SIZE, BUTTON_LAYOUT, BUTTON_NUMBER } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const labelStyle = `\n\n .${ CLASS.BUTTON }.${ CLASS.LABEL }-${ BUTTON_LABEL.CARD } {\n border-radius: 0 !important;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LABEL }-${ BUTTON_LABEL.CREDIT } .${ CLASS.TEXT } {\n display: none !important;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.LABEL }-${ BUTTON_LABEL.CREDIT } .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LOGO.PAYPAL } {\n display: none;\n }\n\n @media only screen and (max-width : ${ BUTTON_STYLE[BUTTON_SIZE.SMALL].minWidth }px) {\n\n .${ CLASS.BUTTON }.${ CLASS.LABEL }-${ BUTTON_LABEL.CREDIT } .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LOGO.PAYPAL } {\n display: none;\n }\n }\n\n @media only screen and (min-width : ${ BUTTON_STYLE[BUTTON_SIZE.SMALL].minWidth }px) {\n\n .${ CLASS.BUTTON }.${ CLASS.LABEL }-${ BUTTON_LABEL.CREDIT } .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LOGO.PAYPAL } {\n display: inline-block;\n }\n }\n`;\n","/* @flow */\n\nimport { BUTTON_BRANDING, BUTTON_SHAPE, BUTTON_LAYOUT, BUTTON_NUMBER, BUTTON_LABEL } from '../../../constants';\nimport { BUTTON_STYLE, BUTTON_RELATIVE_STYLE } from '../../config';\nimport { max, perc } from '../../../lib/util';\n\nimport { CLASS } from './class';\n\nconst DUAL_BUTTON_MIN_RATIO = 2.8;\n\nexport function buttonResponsiveStyle({ height, cardNumber = 4 } : { height? : ?number, cardNumber? : number }) : string {\n\n return Object.keys(BUTTON_STYLE).map(size => {\n\n const style = BUTTON_STYLE[size];\n const buttonHeight = height || style.defaultHeight;\n const buttonTextMarginTop = style.buttonTextMargin;\n const minDualWidth = Math.round(buttonHeight * DUAL_BUTTON_MIN_RATIO * 2);\n\n return `\n\n @media only screen and (min-width: ${ style.minWidth }px) {\n\n .${ CLASS.CONTAINER } {\n min-width: ${ style.minWidth }px;\n max-width: ${ style.maxWidth }px;\n font-size: ${ max(perc(buttonHeight, 32), 10) }px;\n }\n\n .${ CLASS.BUTTON }:not(.${ CLASS.CARD }) {\n height: ${ buttonHeight }px;\n min-height: ${ height || style.minHeight }px;\n max-height: ${ height || style.maxHeight }px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.BRANDING }-${ BUTTON_BRANDING.UNBRANDED } .${ CLASS.BUTTON_LABEL } {\n height: 100%;\n font-size: ${ max(perc(buttonHeight, 45), 10) }px;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.BUTTON_LABEL } {\n height: ${ perc(buttonHeight, 35) + 5 }px;\n max-height: ${ perc(buttonHeight, 60) }px;\n min-height: ${ perc(buttonHeight, 40) }px;\n }\n \n .${ CLASS.BUTTON } .${ CLASS.BUTTON_LABEL } .${ CLASS.TEXT } {\n margin-top: ${ buttonTextMarginTop }px;\n }\n \n .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LABEL.EPS },\n .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LABEL.MYBANK } {\n height: ${ perc(buttonHeight, 50) + 5 }px;\n max-height: ${ perc(buttonHeight, 70) }px;\n min-height: ${ perc(buttonHeight, 40) }px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.SHAPE }-${ BUTTON_SHAPE.PILL } {\n border-radius: ${ Math.ceil(buttonHeight / 2) }px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.SHAPE }-${ BUTTON_SHAPE.RECT } {\n border-radius: 4px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.VERTICAL } {\n margin-bottom: ${ perc(buttonHeight, BUTTON_RELATIVE_STYLE.VERTICAL_MARGIN) }px;\n }\n\n .${ CLASS.SEPARATOR } {\n margin: 0 ${ perc(buttonHeight, 5) }px;\n }\n\n .${ CLASS.TAGLINE } {\n display: ${ style.allowTagline ? 'block' : 'none' };\n height: ${ perc(buttonHeight, BUTTON_RELATIVE_STYLE.TAGLINE) }px;\n line-height: ${ perc(buttonHeight, BUTTON_RELATIVE_STYLE.TAGLINE) }px;\n }\n\n .${ CLASS.FUNDINGICONS } {\n display: ${ style.allowFunding ? 'block' : 'none' };\n height: ${ perc(buttonHeight, BUTTON_RELATIVE_STYLE.FUNDINGICONS) }px;\n }\n\n .${ CLASS.CARD } {\n display: inline-block;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.CARD } {\n width: ${ (90 / cardNumber).toFixed(2) }%;\n max-width: ${ perc(buttonHeight, 160) }px;\n margin-top: 0;\n margin-left: ${ (5 / cardNumber).toFixed(2) }%;\n margin-right: ${ (5 / cardNumber).toFixed(2) }%;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.CARD } img {\n width: 100%;\n }\n\n .${ CLASS.FUNDINGICONS } .${ CLASS.CARD } {\n height: ${ perc(buttonHeight, 70) }px;\n margin-top: ${ perc(buttonHeight, 15) }px;\n margin-left: ${ perc(buttonHeight, 7) }px;\n margin-right: ${ perc(buttonHeight, 7) }px;\n }\n\n .${ CLASS.FUNDINGICONS } .${ CLASS.CARD } img {\n height: 100%;\n }\n }\n\n @media only screen and (min-width: ${ style.minWidth }px) and (max-width: ${ minDualWidth }px) {\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.NUMBER }-0 {\n width: 100%;\n margin-right: 0;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.NUMBER }-1 {\n display: none;\n }\n\n .${ CLASS.CONTAINER }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE } .${ CLASS.TAGLINE } {\n display: none;\n }\n }\n\n @media only screen and (min-width: ${ max(style.minWidth, minDualWidth) }px) {\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.NUMBER }-0 {\n display: inline-block;\n width: calc(50% - 2px);\n margin-right: 4px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.NUMBER }-1 {\n display: inline-block;\n width: calc(50% - 2px);\n }\n\n .${ CLASS.CONTAINER }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE } .${ CLASS.TAGLINE } {\n display: block;\n }\n }\n `;\n\n }).join('\\n');\n}\n","/* @flow */\n\nimport { BUTTON_COLOR } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const buttonColorStyle = `\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.GOLD } {\n background: #ffc439;\n color: #111;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.BLUE } {\n background: #009cde;\n color: #fff;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.SILVER } {\n background: #eee;\n color: #111;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.BLACK } {\n background: #2C2E2F;\n color: #fff;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.DARKBLUE } {\n background: #003087;\n color: #fff;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.TRANSPARENT } {\n background: transparent;\n color: #111;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.WHITE } {\n background: #fff;\n color: #2C2E2F;\n border: 1px solid #2C2E2F;\n }\n`;\n","/* @flow */\n/* eslint max-lines: off */\n\nexport const componentContent = {\n 'AD': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'AE': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n },\n 'ar': {\n 'checkout': 'السداد بواسطة {logo:pp} {logo:paypal}',\n 'safer_tag': 'الطريقة الأسهل والأكثر أماناً في الدفع',\n 'later_tag': 'اشترِ الآن، وسدّد على دفعات',\n 'pay': 'دفع بواسطة {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} شراء الآن',\n 'poweredBy': 'مدعوم من {logo:paypal}'\n }\n },\n 'AG': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'AI': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'AL': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'AM': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'AN': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'AO': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'AR': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'AT': {\n 'de': {\n 'checkout': 'Direkt zu {logo:pp} {logo:paypal}',\n 'safer_tag': 'Einfach schneller und sicherer bezahlen',\n 'later_tag': 'Kaufen Sie jetzt und bezahlen Sie nach und nach.',\n 'pay': 'Mit {logo:paypal} zahlen',\n 'buynow': '{logo:pp} {logo:paypal} Jetzt kaufen',\n 'poweredBy': 'Abgewickelt durch {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'AU': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'AW': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'AZ': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'BA': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'BB': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'BE': {\n 'en': {\n 'checkout': 'Pay with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, faster way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'nl': {\n 'checkout': 'Betalen met {logo:pp} {logo:paypal}',\n 'safer_tag': 'De veiligere en snellere manier om te betalen.',\n 'later_tag': 'Koop nu. Betaal later.',\n 'pay': 'Betalen met {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Nu kopen',\n 'poweredBy': 'Mogelijk gemaakt door {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Le réflexe sécurité pour payer',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n }\n },\n 'BF': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'BG': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'BH': {\n 'ar': {\n 'checkout': 'السداد بواسطة {logo:pp} {logo:paypal}',\n 'safer_tag': 'الطريقة الأسهل والأكثر أماناً في الدفع',\n 'later_tag': 'اشترِ الآن، وسدّد على دفعات',\n 'pay': 'دفع بواسطة {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} شراء الآن',\n 'poweredBy': 'مدعوم من {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'BI': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'BJ': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'BM': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'BN': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'BO': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'BR': {\n 'pt': {\n 'checkout': '{logo:pp} {logo:paypal} Finalizar',\n 'safer_tag': 'A maneira fácil e segura de pagar.',\n 'later_tag': 'Compre agora e pague depois.',\n 'pay': 'Pague com {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar agora',\n 'installment': '{logo:pp} {logo:paypal} Pagamentos
parcelados',\n 'installment_period': '{logo:pp} {logo:paypal} Pague em at\\u00e9
[installmentperiod]x sem juros',\n 'poweredBy': 'Com tecnologia {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'installment': '{logo:pp} {logo:paypal} Interest free
payments',\n 'installment_period': '{logo:pp} {logo:paypal} Pay up to [installmentperiod]x
without interest',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'BS': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'BT': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'BW': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'BY': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'BZ': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'C2': {\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式。',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay.',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'CA': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': '{logo:pp} {logo:paypal} Payer',\n 'safer_tag': 'Votre réflexe sécurité pour payer',\n 'later_tag': 'Acheter. Payer plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n }\n },\n 'CD': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'CG': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'CH': {\n 'de': {\n 'checkout': 'Direkt zu {logo:pp} {logo:paypal}',\n 'safer_tag': 'Einfach schneller und sicherer bezahlen',\n 'later_tag': 'Kaufen Sie jetzt und bezahlen Sie nach und nach.',\n 'pay': 'Mit {logo:paypal} zahlen',\n 'buynow': '{logo:pp} {logo:paypal} Jetzt kaufen',\n 'poweredBy': 'Abgewickelt durch {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Le réflexe sécurité pour payer',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'CI': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'CK': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'CL': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'CM': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'CN': {\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'CO': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'CR': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'CV': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'CY': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'CZ': {\n 'cs': {\n 'checkout': 'Zaplatit přes {logo:pp} {logo:paypal}',\n 'safer_tag': 'Jednodušší a bezpečnější způsob placení',\n 'later_tag': 'Nakupujte nyní, plaťte později.',\n 'pay': 'Zaplatit přes {logo: paypal}',\n 'buynow': 'Koupit ihned přes {logo:pp} {logo:paypal}',\n 'poweredBy': 'Využívá službu {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'DE': {\n 'de': {\n 'checkout': 'Direkt zu {logo:pp} {logo:paypal}',\n 'safer_tag': 'Überall schnell und sicher bezahlen.',\n 'later_tag': 'Jetzt bei uns bequem in Raten zahlen.',\n 'pay': 'Mit {logo:paypal} zahlen',\n 'buynow': '{logo:pp} {logo:paypal} Jetzt kaufen',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'DJ': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'DK': {\n 'da': {\n 'checkout': '{logo:pp} {logo:paypal} Betal',\n 'safer_tag': 'Betal nemt og sikkert',\n 'later_tag': 'Køb nu, betal senere.',\n 'pay': 'Betal med {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Køb nu',\n 'poweredBy': 'Leveret af {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'DM': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'DO': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'DZ': {\n 'ar': {\n 'checkout': 'السداد بواسطة {logo:pp} {logo:paypal}',\n 'safer_tag': 'الطريقة الأسهل والأكثر أماناً في الدفع',\n 'later_tag': 'اشترِ الآن، وسدّد على دفعات',\n 'pay': 'دفع بواسطة {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} شراء الآن',\n 'poweredBy': 'مدعوم من {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'EC': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'EE': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'ru': {\n 'checkout': 'Оформить заказ через {logo:pp} {logo:paypal}',\n 'safer_tag': 'Более безопасный и простой способ оплаты.',\n 'later_tag': 'Покупайте сейчас, платите потом.',\n 'pay': 'Оплатить через {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Купить сейчас',\n 'poweredBy': 'Обработано {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'EG': {\n 'ar': {\n 'checkout': 'السداد بواسطة {logo:pp} {logo:paypal}',\n 'safer_tag': 'الطريقة الأسهل والأكثر أماناً في الدفع',\n 'later_tag': 'اشترِ الآن، وسدّد على دفعات',\n 'pay': 'دفع بواسطة {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} شراء الآن',\n 'poweredBy': 'مدعوم من {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'ER': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'ES': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Tecnología de {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'ET': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'FI': {\n 'fi': {\n 'checkout': '{logo:pp} {logo:paypal}-maksu',\n 'safer_tag': 'Turvallisempi ja helpompi maksutapa',\n 'later_tag': 'Osta nyt. Maksa vähitellen.',\n 'pay': '{logo:paypal}-maksu',\n 'buynow': '{logo:pp} {logo:paypal} Osta nyt',\n 'poweredBy': 'Palvelun tarjoaa {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'FJ': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'FK': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'FM': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'FO': {\n 'da': {\n 'checkout': 'Betal med {logo:pp} {logo:paypal}',\n 'safer_tag': 'Betal nemt og sikkert',\n 'later_tag': 'Køb nu, betal senere.',\n 'pay': 'Betal med {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Køb nu',\n 'poweredBy': 'Leveret af {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'FR': {\n 'fr': {\n 'checkout': '{logo:pp} {logo:paypal} Payer',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Pay',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'GA': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'GB': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'GD': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'GE': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'GF': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'GI': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'GL': {\n 'da': {\n 'checkout': 'Betal med {logo:pp} {logo:paypal}',\n 'safer_tag': 'Betal nemt og sikkert',\n 'later_tag': 'Køb nu, betal senere.',\n 'pay': 'Betal med {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Køb nu',\n 'poweredBy': 'Leveret af {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'GM': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'GN': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'GP': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'GR': {\n 'el': {\n 'checkout': 'Ολοκλήρωση αγοράς μέσω {logo:pp} {logo:paypal}',\n 'safer_tag': 'Ο ασφαλέστερος και ευκολότερος τρόπος πληρωμής',\n 'later_tag': 'Αγοράστε τώρα. Πληρώστε σε δόσεις.',\n 'pay': 'Πληρωμή μέσω {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Αγορά τώρα',\n 'poweredBy': 'Με την υποστήριξη του {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'GT': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'GW': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'GY': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'HK': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal} 結帳',\n 'safer_tag': '更安全、更方便的付款方式',\n 'later_tag': '先購買,後付款。',\n 'pay': '使用 {logo:paypal} 付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即買',\n 'poweredBy': '支援方: {logo:paypal}'\n }\n },\n 'HN': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'HR': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'HU': {\n 'hu': {\n 'checkout': '{logo:pp} {logo:paypal}-fizetés',\n 'safer_tag': 'Biztonságosabb, könnyebb fizetési mód.',\n 'later_tag': 'Vásároljon most. Fizessen később.',\n 'pay': '{logo:paypal}-fizetés',\n 'buynow': '{logo:pp} {logo:paypal} Vásárlás',\n 'poweredBy': 'Üzemeltető: {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'ID': {\n 'id': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'Cara yang lebih mudah dan aman untuk membayar.',\n 'later_tag': 'Beli Sekarang. Bayar dalam Jangka Waktu Tertentu.',\n 'pay': 'Bayar dengan {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Beli Sekarang',\n 'poweredBy': 'Ditunjang teknologi {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'IE': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'IL': {\n 'he': {\n 'checkout': '{logo:pp} {logo:paypal} שלם',\n 'safer_tag': '.הדרך הקלה והבטוחה יותר לשלם',\n 'later_tag': 'קנה עכשיו. שלם לאורך זמן.',\n 'pay': 'שלם באמצעות {logo:paypal}‏',\n 'buynow': '{logo:pp} {logo:paypal} קנה עכשיו',\n 'poweredBy': '{logo:paypal} מופעל על-ידי'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'IN': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay.',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'IS': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'IT': {\n 'it': {\n 'checkout': '{logo:pp} {logo:paypal} Paga adesso',\n 'safer_tag': 'Il modo rapido e sicuro per pagare',\n 'later_tag': 'Acquista ora. Paga più tardi.',\n 'pay': 'Paga con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Paga adesso',\n 'poweredBy': 'Con tecnologia {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'JM': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'JO': {\n 'ar': {\n 'checkout': 'السداد بواسطة {logo:pp} {logo:paypal}',\n 'safer_tag': 'الطريقة الأسهل والأكثر أماناً في الدفع',\n 'later_tag': 'اشترِ الآن، وسدّد على دفعات',\n 'pay': 'دفع بواسطة {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} شراء الآن',\n 'poweredBy': 'مدعوم من {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'JP': {\n 'ja': {\n 'checkout': '{logo:pp} {logo:paypal}で支払う',\n 'safer_tag': 'より安全・簡単にお支払い',\n 'later_tag': '今すぐ購入して、分割してお支払い。',\n 'pay': '{logo:paypal}で支払う',\n 'buynow': '{logo:pp} {logo:paypal} 購入',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'KE': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'KG': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'KH': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'KI': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'KM': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'KN': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'KR': {\n 'ko': {\n 'checkout': '{logo:pp} {logo:paypal} 체크 아웃',\n 'safer_tag': '더 안전하고 빠른 결제 방법',\n 'later_tag': '지금 구매하고 천천히 결제하세요.',\n 'pay': '{logo:paypal}로 지불하기',\n 'buynow': '{logo:pp} {logo:paypal} 바로 구매',\n 'poweredBy': '제공: {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay.',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'KW': {\n 'ar': {\n 'checkout': 'السداد بواسطة {logo:pp} {logo:paypal}',\n 'safer_tag': 'الطريقة الأسهل والأكثر أماناً في الدفع',\n 'later_tag': 'اشترِ الآن، وسدّد على دفعات',\n 'pay': 'دفع بواسطة {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} شراء الآن',\n 'poweredBy': 'مدعوم من {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'KY': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'KZ': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'LA': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'LC': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'LI': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'LK': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'LS': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'LT': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'ru': {\n 'checkout': 'Оформить заказ через {logo:pp} {logo:paypal}',\n 'safer_tag': 'Более безопасный и простой способ оплаты.',\n 'later_tag': 'Покупайте сейчас, платите потом.',\n 'pay': 'Оплатить через {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Купить сейчас',\n 'poweredBy': 'Обработано {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'LU': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'de': {\n 'checkout': 'Direkt zu {logo:pp} {logo:paypal}',\n 'safer_tag': 'Einfach schneller und sicherer bezahlen',\n 'later_tag': 'Kaufen Sie jetzt und bezahlen Sie nach und nach.',\n 'pay': 'Mit {logo:paypal} zahlen',\n 'buynow': '{logo:pp} {logo:paypal} Jetzt kaufen',\n 'poweredBy': 'Abgewickelt durch {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'LV': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'ru': {\n 'checkout': 'Оформить заказ через {logo:pp} {logo:paypal}',\n 'safer_tag': 'Более безопасный и простой способ оплаты.',\n 'later_tag': 'Покупайте сейчас, платите потом.',\n 'pay': 'Оплатить через {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Купить сейчас',\n 'poweredBy': 'Обработано {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'MA': {\n 'ar': {\n 'checkout': 'السداد بواسطة {logo:pp} {logo:paypal}',\n 'safer_tag': 'الطريقة الأسهل والأكثر أماناً في الدفع',\n 'later_tag': 'اشترِ الآن، وسدّد على دفعات',\n 'pay': 'دفع بواسطة {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} شراء الآن',\n 'poweredBy': 'مدعوم من {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'MC': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'MD': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'ME': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'MG': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'MH': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'MK': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'ML': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'MN': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'MQ': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'MR': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'MS': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'MT': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'MU': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'MV': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'MW': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'MX': {\n 'es': {\n 'checkout': 'Pagar con {logo:pp} {logo:paypal}',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'installment': '{logo:pp} {logo:paypal} Pagos en
mensualidades',\n 'installment_period': '{logo:pp} {logo:paypal} Pague hasta en
[installmentperiod] mensualidades',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, faster way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'installment': '{logo:pp} {logo:paypal} Interest free
payments',\n 'installment_period': '{logo:pp} {logo:paypal} Pay up to [installmentperiod]x
without interest',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'MY': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay.',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'MZ': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'NA': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'NC': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'NE': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'NF': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'NG': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'NI': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'NL': {\n 'nl': {\n 'checkout': '{logo:pp} {logo:paypal} Betalen',\n 'safer_tag': 'Een veilige en makkelijke manier om te betalen.',\n 'later_tag': 'Koop nu. Betaal later.',\n 'pay': 'Betalen met {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Nu kopen',\n 'poweredBy': 'Mogelijk gemaakt door {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'NO': {\n 'no': {\n 'checkout': '{logo:pp} {logo:paypal} Betal',\n 'safer_tag': 'En trygg og enkel betalingsmetode',\n 'later_tag': 'Kjøp nå, betal senere.',\n 'pay': 'Betal med {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Kjøp nå',\n 'poweredBy': 'Leveres av {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'NP': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'NR': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'NU': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'NZ': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay.',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': '{logo:pp} {logo:paypal} Payer',\n 'safer_tag': 'Un réflexe sécurité.',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar.',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式。',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'OM': {\n 'ar': {\n 'checkout': 'السداد بواسطة {logo:pp} {logo:paypal}',\n 'safer_tag': 'الطريقة الأسهل والأكثر أماناً في الدفع',\n 'later_tag': 'اشترِ الآن، وسدّد على دفعات',\n 'pay': 'دفع بواسطة {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} شراء الآن',\n 'poweredBy': 'مدعوم من {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'PA': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'PE': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'PF': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'PG': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'PH': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay.',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'PL': {\n 'pl': {\n 'checkout': '{logo:pp} {logo:paypal} Do kasy',\n 'safer_tag': 'Płać wygodnie i bezpiecznie',\n 'later_tag': 'Kup teraz. Płać w ratach',\n 'pay': 'Zapłać z {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Kup teraz',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'PM': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'PN': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'PT': {\n 'pt': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A forma rápida e segura de pagar',\n 'later_tag': 'Compre agora. Vá pagando.',\n 'pay': 'Pagar com {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar agora',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'PW': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'PY': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'QA': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n },\n 'ar': {\n 'checkout': 'السداد بواسطة {logo:pp} {logo:paypal}',\n 'safer_tag': 'الطريقة الأسهل والأكثر أماناً في الدفع',\n 'later_tag': 'اشترِ الآن، وسدّد على دفعات',\n 'pay': 'دفع بواسطة {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} شراء الآن',\n 'poweredBy': 'مدعوم من {logo:paypal}'\n }\n },\n 'RE': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'RO': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'RS': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'RU': {\n 'ru': {\n 'checkout': '{logo:pp} {logo:paypal} Оформить покупку',\n 'safer_tag': 'Более безопасный и простой способ оплаты.',\n 'later_tag': 'Покупайте сейчас, платите потом.',\n 'pay': 'Оплатить через {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Купить сейчас',\n 'poweredBy': 'Обработано {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'RW': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SA': {\n 'ar': {\n 'checkout': 'السداد بواسطة {logo:pp} {logo:paypal}',\n 'safer_tag': 'الطريقة الأسهل والأكثر أماناً في الدفع',\n 'later_tag': 'اشترِ الآن، وسدّد على دفعات',\n 'pay': 'دفع بواسطة {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} شراء الآن',\n 'poweredBy': 'مدعوم من {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SB': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SC': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SE': {\n 'sv': {\n 'checkout': '{logo:pp} {logo:paypal} Betala',\n 'safer_tag': 'Ett tryggt och smidigt sätt att betala',\n 'later_tag': 'Köp nu, betala senare',\n 'pay': 'Betala med {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Köp nu',\n 'poweredBy': 'Tillhandahålls av {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'SG': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay.',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'SH': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SI': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SJ': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SK': {\n 'sk': {\n 'checkout': 'Zaplatiť cez {logo:pp} {logo:paypal}',\n 'safer_tag': 'Jednoduchší a bezpečnejší spôsob platby',\n 'later_tag': 'Nakúpte teraz, zaplaťte postupne',\n 'pay': 'Zaplatiť cez {logo: paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Kúpiť',\n 'poweredBy': 'Používa technológiu {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SL': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SM': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SN': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SO': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SR': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'ST': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SV': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SZ': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'TC': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'TD': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'TG': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'TH': {\n 'th': {\n 'checkout': '{logo:pp} {logo:paypal} ชำระเงิน',\n 'safer_tag': 'วิธีชำระเงินที่ปลอดภัยและง่ายกว่า',\n 'later_tag': 'ซื้อวันนี้ แล้วค่อยๆ จ่ายทีหลัง',\n 'pay': 'ชำระเงินด้วย {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} ซื้อทันที',\n 'poweredBy': 'ให้บริการโดย {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'TJ': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'TM': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'TN': {\n 'ar': {\n 'checkout': 'السداد بواسطة {logo:pp} {logo:paypal}',\n 'safer_tag': 'الطريقة الأسهل والأكثر أماناً في الدفع',\n 'later_tag': 'اشترِ الآن، وسدّد على دفعات',\n 'pay': 'دفع بواسطة {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} شراء الآن',\n 'poweredBy': 'مدعوم من {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'TO': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'TR': {\n 'tr': {\n 'checkout': '{logo:pp} {logo:paypal} ile Satın Alın',\n 'safer_tag': 'Ödeme yapmanın daha güvenli ve kolay yolu',\n 'later_tag': 'Şimdi Alın. Daha Sonra Ödeyin.',\n 'pay': '{logo:paypal} ile Öde',\n 'buynow': '{logo:pp} {logo:paypal} Hemen Satın Alın',\n 'poweredBy': 'Çalıştıran {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'TT': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'TV': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'TW': {\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal} 結帳',\n 'safer_tag': '更安全、更方便的付款方式',\n 'later_tag': '先購買,後付款。',\n 'pay': '使用 {logo:paypal} 付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即購',\n 'poweredBy': '服務提供者: {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'TZ': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'UA': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'ru': {\n 'checkout': 'Оформить заказ через {logo:pp} {logo:paypal}',\n 'safer_tag': 'Более безопасный и простой способ оплаты.',\n 'later_tag': 'Покупайте сейчас, платите потом.',\n 'pay': 'Оплатить через {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Купить сейчас',\n 'poweredBy': 'Обработано {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'UG': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'US': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'dual_tag': 'Two easy ways to pay',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': '{logo:pp} {logo:paypal} Payer',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': 'Pagar con {logo:pp} {logo:paypal}',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '使用{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'UY': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'VA': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'VC': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'VE': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'VG': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'VN': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay.',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'VU': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'WF': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'WS': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'YE': {\n 'ar': {\n 'checkout': 'السداد بواسطة {logo:pp} {logo:paypal}',\n 'safer_tag': 'الطريقة الأسهل والأكثر أماناً في الدفع',\n 'later_tag': 'اشترِ الآن، وسدّد على دفعات',\n 'pay': 'دفع بواسطة {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} شراء الآن',\n 'poweredBy': 'مدعوم من {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'YT': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'ZA': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'ZM': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'ZW': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n }\n};\n","// eslint-disable-line max-lines\n/* @flow */\n/** @jsx jsxToHTML */\n\nimport { base64encode } from 'belter/src';\n\nimport { BUTTON_SIZE, BUTTON_BRANDING, BUTTON_NUMBER, BUTTON_LOGO_COLOR, BUTTON_LABEL, BUTTON_LAYOUT, ENV, ATTRIBUTE, FUNDING } from '../../constants';\nimport { getButtonConfig, labelToFunding, fundingToDefaultLabel } from '../config';\nimport { normalizeProps } from '../props';\nimport { jsxToHTML, type JsxHTMLNode, type ChildType, jsxRender } from '../../lib/jsx';\nimport { fundingLogos, cardLogos } from '../../resources';\nimport { validateButtonProps } from '../validate';\nimport type { LocaleType, FundingSource, FundingSelection, FundingList, CheckoutCustomizationType } from '../../types';\n\nimport { Tagline, Beacon } from './miscComponent';\nimport { componentStyle, CLASS } from './componentStyle';\nimport { getComponentScript } from './componentScript';\nimport { componentContent } from './content';\n\nconst allowedPersonalizationLabels = [ BUTTON_LABEL.CHECKOUT, BUTTON_LABEL.BUYNOW, BUTTON_LABEL.PAY ];\n\nfunction getCommonButtonClasses({ layout, shape, branding, multiple, env }) : string {\n return [\n `${ CLASS.LAYOUT }-${ layout }`,\n `${ CLASS.SHAPE }-${ shape }`,\n `${ CLASS.BRANDING }-${ branding ? BUTTON_BRANDING.BRANDED : BUTTON_BRANDING.UNBRANDED }`,\n `${ CLASS.NUMBER }-${ multiple ? BUTTON_NUMBER.MULTIPLE : BUTTON_NUMBER.SINGLE }`,\n `${ CLASS.ENV }-${ env }`,\n `${ CLASS.SHOULD_FOCUS }`\n ].join(' ');\n}\n\nfunction getButtonClasses({ label, color, logoColor }) : string {\n return [\n `${ CLASS.LABEL }-${ label }`,\n `${ CLASS.COLOR }-${ color }`,\n `${ CLASS.LOGO_COLOR }-${ logoColor }`\n ].join(' ');\n}\n\nfunction getLocaleContent(locale : LocaleType) : Object {\n const { country, lang } = locale;\n return componentContent[country][lang];\n}\n\nfunction determineLabel({ label, source, multiple, layout } : { label : $Values, source : FundingSource, multiple : boolean, layout : $Values }) : $Values {\n\n const defaultLabel = fundingToDefaultLabel(source);\n const labelMatchesFunding = (labelToFunding(label) === source);\n\n // If chosen label is not for this funding source, display the default label\n if (!labelMatchesFunding) {\n return defaultLabel;\n }\n\n // If there are multiple horizontal buttons, display the default label\n if (multiple && layout === BUTTON_LAYOUT.HORIZONTAL) {\n return defaultLabel;\n }\n\n return label;\n}\n\nfunction determineButtons({ label, color, sources, multiple, layout } : { label : $Values, color : string, sources : FundingList, multiple : boolean, layout : $Values }) :\n $ReadOnlyArray<{ label : $Values, color : string, source : FundingSource }> {\n\n return sources.map((source, i) => {\n\n const buttonLabel = determineLabel({ label, source, multiple, layout });\n\n const buttonColor = (multiple && i > 0)\n ? getButtonConfig(buttonLabel, 'secondaryColors')[color]\n : color;\n\n return {\n source,\n label: buttonLabel,\n color: buttonColor\n };\n });\n}\n\nfunction renderCards({ cards, layout, size } :\n { cards : $ReadOnlyArray, layout? : string, size? : string }) : $ReadOnlyArray {\n return cards.map(name => {\n const logo = cardLogos[name];\n\n return (\n \n \n
\n );\n });\n}\n\nfunction renderFundingIcons({ cards, fundingicons, size, layout } :\n { cards : $ReadOnlyArray, fundingicons : boolean, layout : string, size : string }) : ?JsxHTMLNode {\n\n if (!fundingicons) {\n return;\n }\n\n return
{ renderCards({ cards, size, layout }) }
;\n}\n\nfunction renderPersonalizationButtonText(text) : JsxHTMLNode {\n const className = `${ CLASS.TEXT } ${ CLASS.PERSONALIZATION_TEXT }`;\n return { text };\n}\n\nfunction getButtonTextAnimationStyle({ personalizedButtonText, branding, allowedAnimation }) : ?JsxHTMLNode {\n if (__TEST__) {\n return null;\n }\n \n if (!branding) {\n return;\n }\n \n if (!allowedAnimation) {\n return;\n }\n \n const MIN_WIDTH = 300;\n const LABEL_DURATION = 1;\n const PERSONALIZATION_DURATION = 5;\n const DELAY = 0;\n \n const COMPRESSED = `\n max-width: 0%;\n opacity: 0;\n `;\n \n const EXPANDED = `\n max-width: 100%;\n opacity: 1;\n `;\n \n const HIDDEN = `\n position: absolute;\n visibility: hidden;\n `;\n \n const VISIBLE = `\n position: static;\n visibility: visible;\n `;\n \n const DOM_READY = '.dom-ready';\n const PAYPAL_BUTTON = `.${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.PAYPAL }]`;\n \n const PAYPAL_LOGO = `${ PAYPAL_BUTTON } .${ CLASS.LOGO }.${ CLASS.LOGO }-${ FUNDING.PAYPAL }`;\n const BUTTON_TEXT = `${ PAYPAL_BUTTON } .${ CLASS.TEXT }:not(.personalization-text)`;\n const PERSONALIZATION_TEXT = `${ PAYPAL_BUTTON } .personalization-text`;\n \n return (\n \n {outlet}\n \n );\n}\n","\n/* @flow */\n\nimport { track, flush as flushLogs } from 'beaver-logger/client';\n\nimport { Checkout } from '../checkout';\nimport { setupPopupBridgeProxy } from '../integrations/popupBridge';\nimport { getPageRenderTime, setLogLevel } from '../lib';\nimport { ATTRIBUTE, FUNDING, FPTI, BUTTON_LAYOUT, BUTTON_COLOR, BUTTON_SIZE, BUTTON_SHAPE, BUTTON_LABEL } from '../constants';\n\nimport typeof { Button } from './component';\n\nexport function setupButtonChild(ButtonComponent : Button) {\n setupPopupBridgeProxy(Checkout, ButtonComponent);\n\n getPageRenderTime().then(pageRenderTime => {\n\n const fundingSources = Array.prototype.slice.call(document.querySelectorAll(`[${ ATTRIBUTE.FUNDING_SOURCE }]`)).map(el => {\n return el.getAttribute(ATTRIBUTE.CARD) || el.getAttribute(ATTRIBUTE.FUNDING_SOURCE);\n }).filter(source => {\n return source && source !== FUNDING.CARD;\n });\n\n const xprops = ButtonComponent.xprops;\n \n if (!xprops) {\n return;\n }\n\n const {\n layout = BUTTON_LAYOUT.HORIZONTAL,\n color = BUTTON_COLOR.GOLD,\n size = BUTTON_SIZE.SMALL,\n shape = BUTTON_SHAPE.PILL,\n label = BUTTON_LABEL.CHECKOUT,\n maxbuttons,\n tagline\n } = (xprops.style || {});\n\n track({\n [FPTI.KEY.STATE]: FPTI.STATE.BUTTON,\n [FPTI.KEY.TRANSITION]: FPTI.TRANSITION.BUTTON_LOAD,\n [FPTI.KEY.BUTTON_TYPE]: FPTI.BUTTON_TYPE.IFRAME,\n [FPTI.KEY.FUNDING_LIST]: fundingSources.join(':'),\n [FPTI.KEY.FUNDING_COUNT]: fundingSources.length,\n [FPTI.KEY.PAGE_LOAD_TIME]: pageRenderTime,\n [FPTI.KEY.BUTTON_LAYOUT]: layout,\n [FPTI.KEY.BUTTON_COLOR]: color,\n [FPTI.KEY.BUTTON_SIZE]: size,\n [FPTI.KEY.BUTTON_SHAPE]: shape,\n [FPTI.KEY.BUTTON_LABEL]: label,\n [FPTI.KEY.BUTTON_WIDTH]: window.innerWidth,\n [FPTI.KEY.MAX_BUTTONS]: maxbuttons,\n [FPTI.KEY.BUTTON_TAGLINE_ENABLED]: tagline ? '1' : '0'\n });\n\n flushLogs();\n });\n\n const xprops = ButtonComponent.xprops || Checkout.xprops;\n\n if (xprops && xprops.logLevel) {\n setLogLevel(xprops.logLevel);\n }\n\n // $FlowFixMe\n if (xprops.payment && !xprops.createOrder) {\n // $FlowFixMe\n xprops.createOrder = xprops.payment;\n }\n\n // $FlowFixMe\n if (xprops.onAuthorize && !xprops.onApprove) {\n // $FlowFixMe\n xprops.onApprove = xprops.onAuthorize;\n }\n\n try {\n if (xprops && xprops.onShippingChange && window.pre &&\n window.pre.inlineGuest && window.pre.inlineGuest.res &&\n window.pre.inlineGuest.res.data && window.pre.inlineGuest.res.data.treatments) {\n window.pre.inlineGuest.res.data.treatments = [];\n }\n } catch (err) {\n // pass\n }\n}\n","/* @flow */\n\nimport { info, warn, flush as flushLogs } from 'beaver-logger/client';\nimport { CONSTANTS } from 'zoid/src';\nimport { getParent, getTop } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { config } from './config';\nimport { noop, isIE, getDomainSetting, extendUrl, patchMethod, once, extend } from './lib';\nimport { Button } from './button';\nimport { Checkout } from './checkout';\nimport { BUTTON_LABEL, BUTTON_SIZE, BUTTON_COLOR } from './constants';\nimport { rest } from './api';\n\nif (isIE() && getDomainSetting('ie_full_page')) {\n // $FlowFixMe\n Checkout.renderTo = (win) => {\n info('force_ie_full_page');\n flushLogs();\n\n // $FlowFixMe\n const checkout = Checkout.init({\n onAuthorize: noop\n });\n\n checkout.delegate(win);\n\n checkout.openContainer().then(() => {\n checkout.event.triggerOnce(CONSTANTS.EVENTS.CLOSE);\n checkout.showContainer();\n });\n\n // $FlowFixMe\n Button.xprops.payment().then(token => {\n window.top.location = extendUrl(config.checkoutUrl, { token });\n }).catch(err => {\n checkout.error(err);\n });\n };\n}\n\nconst parent = getParent(window);\nconst top = getTop(window);\n\nif (top && parent) {\n let canRenderTop = (top === parent);\n\n if (!canRenderTop) {\n Checkout.canRenderTo(top).then(result => {\n canRenderTop = result;\n });\n\n patchMethod(Checkout, 'renderTo', ({ args: [ win, props, el ], original, context }) => {\n\n if (!canRenderTop) {\n win = getParent(window);\n }\n\n return original.call(context, win, props, el);\n });\n }\n}\n\npatchMethod(Checkout, 'renderTo', ({ callOriginal, args: [ , props ] }) => {\n if (getDomainSetting('allow_full_page_fallback')) {\n const handleError = once((err) => {\n try {\n // eslint-disable-next-line no-console\n console.error(err && err.stack);\n } catch (err2) {\n // pass\n }\n\n // $FlowFixMe\n return Button.xprops.payment().then(token => {\n window.top.location = extendUrl(config.checkoutUrl, { token });\n });\n });\n\n props.onError = handleError;\n return callOriginal().catch(handleError);\n }\n return callOriginal();\n});\n\nlet debounce = false;\n\npatchMethod(Checkout, 'renderTo', ({ callOriginal, args: [ , props ] }) => {\n\n if (debounce) {\n warn('button_mutliple_click_debounce');\n return new ZalgoPromise(noop);\n }\n\n debounce = true;\n\n for (const methodName of [ 'onAuthorize', 'onCancel', 'onError', 'onClose' ]) {\n const original = props[methodName];\n props[methodName] = function unDebounce() : mixed {\n debounce = false;\n if (original) {\n return original.apply(this, arguments);\n }\n };\n }\n\n return callOriginal();\n});\n\npatchMethod(rest.payment, 'create', ({ original: createOriginal, context: createContext, args: [ env, client, options, experience ] }) => {\n if (!options.payment) {\n options = { payment: options, experience };\n }\n return createOriginal.call(createContext, env, client, options);\n});\n\npatchMethod(Button.props.style, 'validate', ({ callOriginal, args: [ style ] }) => {\n\n if (!style) {\n return callOriginal();\n }\n\n if (style && style.color === 'creditblue') {\n style.color = BUTTON_COLOR.DARKBLUE;\n }\n\n if (style && style.label === 'generic') {\n style.label = BUTTON_LABEL.PAYPAL;\n }\n\n if (style && (!style.label || style.label === BUTTON_LABEL.CHECKOUT) && style.size === 'tiny') {\n warn(`unsupported_button_size_tiny`);\n style.size = BUTTON_SIZE.SMALL;\n }\n\n return callOriginal();\n});\n\npatchMethod(Button, 'render', ({ callOriginal, args: [ props ] }) => {\n\n if (props.billingAgreement) {\n props.payment = props.billingAgreement;\n delete props.billingAgreement;\n }\n\n return callOriginal();\n});\n\npatchMethod(Button.props.payment, 'decorate', ({ original, context, args: [ originalPayment ] }) => {\n return original.call(context, function payment(data : Object, actions : Object) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n patchMethod(actions.payment, 'create', ({ original: createOriginal, context: createContext, args: [ options, experience ] }) => {\n if (!options.payment) {\n options = { payment: options, experience };\n }\n return createOriginal.call(createContext, options);\n });\n\n function resolveData(token) {\n resolve(token);\n }\n\n function rejectActions(err) {\n reject(err);\n }\n\n extend(resolveData, data);\n extend(resolveData, actions);\n extend(rejectActions, actions);\n\n const ctx = {\n props: {\n env: this.props.env,\n client: this.props.client\n }\n };\n\n let result;\n\n try {\n result = originalPayment.call(ctx, resolveData, rejectActions);\n } catch (err) {\n return reject(err);\n }\n\n if (result && typeof result.then === 'function') {\n return result.then(resolve, reject);\n }\n\n if (result !== undefined) {\n return resolve(result);\n }\n });\n });\n});\n\nif (Button.isChild()) {\n if (!window.Promise) {\n window.Promise = ZalgoPromise;\n }\n}\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { create } from 'zoid/src';\nimport { type Component } from 'zoid/src/component/component';\nimport type { CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { base64encode } from 'belter/src';\n\nimport { config } from '../config';\nimport { getButtonSessionID, getBrowserLocale, getSessionID, getCurrentScriptUrl } from '../lib';\n\ntype CardOptions = {|\n client : {\n [string] : (string | ZalgoPromise)\n },\n env? : string,\n locale? : string,\n logLevel : string,\n awaitPopupBridge : Function,\n onAuthorize : ({ returnUrl : string }, { redirect : (?CrossDomainWindowType, ?string) => ZalgoPromise }) => ?ZalgoPromise,\n onCancel? : ({ cancelUrl : string }, { redirect : (?CrossDomainWindowType, ?string) => ZalgoPromise }) => ?ZalgoPromise,\n onEvent? : ({ type : string, payload : Object }) => void,\n meta : Object,\n commit : boolean,\n token : string\n|};\n\nexport const Card : Component = create({\n tag: 'card-fields',\n name: 'ppcard',\n\n buildUrl(props) : string {\n const env = props.env || config.env;\n return config.inlinedCardFieldUrls[env];\n },\n\n contexts: {\n iframe: true,\n popup: false\n },\n\n dimensions: {\n height: '300px',\n width: '100%'\n },\n\n autoResize: {\n height: true,\n width: false\n },\n\n props: {\n sessionID: {\n type: 'string',\n required: false,\n def() : string {\n return getSessionID();\n },\n queryParam: true\n },\n\n\n token: {\n type: 'string',\n required: true,\n queryParam: true\n },\n\n buttonSessionID: {\n type: 'string',\n required: false,\n def() : ?string {\n return getButtonSessionID();\n },\n queryParam: true\n },\n\n commit: {\n type: 'boolean',\n required: false,\n queryParam: true\n },\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n },\n\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n allowDelegate: true,\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n }\n },\n\n initialFormValues: {\n type: 'object',\n required: false\n },\n\n\n onAuthorize: {\n type: 'function',\n required: true,\n once: true\n },\n\n onAuth: {\n type: 'function',\n required: false,\n sameDomain: true\n },\n\n onEvent: {\n type: 'function',\n required: false,\n sameDomain: true\n },\n\n getState: {\n type: 'function',\n required: false,\n sameDomain: true\n },\n\n dispatch: {\n type: 'object',\n required: false,\n sameDomain: true\n },\n\n onCancel: {\n type: 'function',\n required: false,\n once: true,\n noop: true\n },\n\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n },\n \n style: {\n type: 'object',\n required: false,\n queryParam: true,\n def() : Object {\n return {\n cardIcons: {\n display: false\n },\n submitButton: {\n display: true\n },\n currencyConversion: {\n display: true\n }\n };\n }\n }\n }\n});\n","/* @flow */\n\nimport { info, track, debug, warn, error, flush as flushLogs } from 'beaver-logger/client';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { config } from './config';\nimport { FPTI } from './constants';\nimport { initLogger, checkForCommonErrors, setLogLevel, stringifyError,\n stringifyErrorMessage, getResourceLoadTime, isPayPalDomain, isEligible,\n getDomainSetting, once, openMetaFrame, precacheRememberedFunding,\n getCurrentScript, getRememberedFunding } from './lib';\nimport { Button } from './button';\nimport { Checkout } from './checkout';\nimport { pptm } from './external';\n\nfunction domainToEnv(domain : string) : ?string {\n for (const env of Object.keys(config.paypalUrls)) {\n if (config.paypalUrls[env] === domain) {\n return env;\n }\n }\n}\n\nfunction setDomainEnv(domain : string) {\n const currentDomainEnv = domainToEnv(domain);\n\n if (currentDomainEnv && currentDomainEnv !== 'test') {\n config.env = currentDomainEnv;\n }\n}\n\nsetDomainEnv(`${ window.location.protocol }//${ window.location.host }`);\n\nZalgoPromise.onPossiblyUnhandledException(err => {\n\n error('unhandled_error', {\n stack: stringifyError(err),\n errtype: ({}).toString.call(err)\n });\n\n track({\n [ FPTI.KEY.ERROR_CODE ]: 'checkoutjs_error',\n [ FPTI.KEY.ERROR_DESC ]: stringifyErrorMessage(err)\n });\n\n return flushLogs().catch(err2 => {\n if (window.console) {\n try {\n if (window.console.error) {\n window.console.error('Error flushing:', stringifyError(err2));\n } else if (window.console.log) {\n window.console.log('Error flushing:', stringifyError(err2));\n }\n } catch (err3) {\n setTimeout(() => {\n throw err3;\n }, 1);\n }\n }\n });\n});\n\nconst currentScript = getCurrentScript();\nconst currentProtocol = window.location.protocol.split(':')[0];\n\n\ntype ConfigOptions = {|\n env? : ?string,\n stage? : ?string,\n apiStage? : ?string,\n stageUrl? : ?string,\n localhostUrl? : ?string,\n checkoutUri? : ?string,\n state? : ?string,\n logLevel? : ?string,\n merchantID? : ?string,\n precacheRemembered? : boolean,\n authCode? : ?string\n|};\n\nfunction configure({ env, stage, stageUrl, apiStage, localhostUrl, checkoutUri, state, logLevel, merchantID, authCode } : ConfigOptions = {}) {\n\n if (env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n\n delete config.env;\n config.env = env;\n } else if (Button.xprops && Button.xprops.env) {\n delete config.env;\n // $FlowFixMe\n config.env = Button.xprops.env;\n } else if (Checkout.xprops && Checkout.xprops.env) {\n delete config.env;\n // $FlowFixMe\n config.env = Checkout.xprops.env;\n }\n\n if (stage) {\n delete config.stage;\n config.stage = stage;\n } else if (Button.xprops && Button.xprops.stage) {\n delete config.stage;\n // $FlowFixMe\n config.stage = Button.xprops.stage;\n } else if (Checkout.xprops && Checkout.xprops.stage) {\n delete config.stage;\n // $FlowFixMe\n config.stage = Checkout.xprops.stage;\n }\n\n if (stageUrl) {\n delete config.stageUrl;\n // $FlowFixMe\n config.stageUrl = stageUrl;\n } else if (Button.xprops && Button.xprops.stageUrl) {\n delete config.stageUrl;\n // $FlowFixMe\n config.stageUrl = Button.xprops.stageUrl;\n } else if (Checkout.xprops && Checkout.xprops.stageUrl) {\n delete config.stageUrl;\n // $FlowFixMe\n config.stageUrl = Checkout.xprops.stageUrl;\n }\n\n authCode = authCode || (Button.xprops && Button.xprops.authCode) || (Checkout.xprops && Checkout.xprops.authCode);\n\n if (authCode) {\n delete config.authCode;\n config.authCode = authCode;\n }\n\n if (apiStage) {\n delete config.apiStage;\n config.apiStage = apiStage;\n }\n\n localhostUrl = localhostUrl || (Button.xprops && Button.xprops.localhostUrl) || (Checkout.xprops && Checkout.xprops.localhostUrl);\n if (localhostUrl) {\n config.localhostUrl = localhostUrl;\n }\n\n checkoutUri = checkoutUri || (Button.xprops && Button.xprops.checkoutUri) || (Checkout.xprops && Checkout.xprops.checkoutUri);\n if (checkoutUri) {\n config.checkoutUri = checkoutUri;\n }\n\n if (state) {\n delete config.state;\n config.state = state;\n }\n\n if (merchantID) {\n config.merchantID = merchantID;\n }\n\n if (logLevel) {\n setLogLevel(logLevel);\n } else {\n setLogLevel(config.logLevel);\n }\n}\n\nexport const init = once(({ precacheRemembered }) => {\n\n if (!isEligible()) {\n warn('ineligible');\n }\n\n checkForCommonErrors();\n\n initLogger();\n\n if (pptm.shouldCreateInitialPptmScript()) {\n pptm.createPptmScript();\n }\n\n if (precacheRemembered) {\n precacheRememberedFunding();\n }\n\n if (getDomainSetting('force_bridge') && !isPayPalDomain()) {\n openMetaFrame(config.env);\n }\n\n info(`setup_${ config.env }`);\n\n debug(`current_protocol_${ currentProtocol }`);\n});\n\n// $FlowFixMe\nexport function setup(options : ConfigOptions = {}) {\n configure(options);\n init(options);\n}\n\nif (currentScript) {\n setup({\n env: currentScript.getAttribute('data-env'),\n stage: currentScript.getAttribute('data-stage'),\n apiStage: currentScript.getAttribute('data-api-stage'),\n stageUrl: currentScript.getAttribute('data-stage-url'),\n localhostUrl: isPayPalDomain() ? currentScript.getAttribute('data-localhost-url') : undefined,\n checkoutUri: isPayPalDomain() ? currentScript.getAttribute('data-checkout-uri') : undefined,\n state: currentScript.getAttribute('data-state'),\n logLevel: currentScript.getAttribute('data-log-level'),\n merchantID: currentScript.getAttribute('data-merchant-id'),\n authCode: currentScript.getAttribute('data-auth-code'),\n precacheRemembered: currentScript.hasAttribute('data-precache-remembered-funding')\n });\n\n} else {\n setup();\n}\n\nif (!isPayPalDomain()) {\n\n if (currentScript) {\n\n const scriptProtocol = currentScript.src.split(':')[0];\n const loadTime = getResourceLoadTime(currentScript.src);\n\n debug(`current_script_protocol_${ scriptProtocol }`);\n debug(`current_script_protocol_${ currentProtocol === scriptProtocol ? 'match' : 'mismatch' }`);\n debug(`current_script_version_${ config.version.replace(/[^0-9a-zA-Z]+/g, '_') }`);\n\n if (loadTime) {\n debug(`current_script_time`, { loadTime });\n debug(`current_script_time_${ Math.floor(loadTime / 1000) }`);\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.SCRIPT_LOAD,\n [ FPTI.KEY.TRANSITION_TIME ]: loadTime,\n [ FPTI.KEY.FUNDING_REMEMBERED ]: getRememberedFunding().join(',')\n });\n\n } else {\n\n debug(`no_current_script`);\n debug(`no_current_script_version_${ config.version.replace(/[^0-9a-zA-Z]+/g, '_') }`);\n\n if (document.currentScript) { // eslint-disable-line compat/compat\n debug(`current_script_not_recognized`, { src: document.currentScript.src }); // eslint-disable-line compat/compat\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.SCRIPT_LOAD\n });\n }\n}\n","/* @flow */\n\nimport { debug, info, warn, error, track, flush } from 'beaver-logger/client';\nimport { destroyAll as _destroyAll } from 'zoid/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport * as _postRobot from 'post-robot/src'; // eslint-disable-line import/no-namespace\n\nimport { isPayPalDomain } from './lib';\nimport { Checkout as _Checkout } from './checkout';\nimport { BillingPage as _BillingPage } from './billing';\nimport { ThreeDomainSecure as _ThreeDomainSecure } from './threeDomainSecure';\n\nimport './hacks'; // eslint-disable-line import/no-unassigned-import\n\nexport const postRobot = _postRobot;\nexport { ZalgoPromise as Promise } from 'zalgo-promise/src';\nexport { PopupOpenError } from 'zoid/src';\n\nexport { rest } from './api';\nexport { Button } from './button';\nexport { Card } from './card';\nexport { setup } from './setup';\nexport { config } from './config';\nexport { ENV, USERS, SOURCE, FUNDING, CARD } from './constants';\nexport { request, isEligible, isFundingRemembered, allowIframe as forceIframe, allowIframe as isWebView, allowIframe } from './lib';\nexport { logExperimentTreatment } from './experiments';\nexport { logFundingEligibility } from './funding';\n\nexport const onPossiblyUnhandledException = ZalgoPromise.onPossiblyUnhandledException;\n\nexport const version = __PAYPAL_CHECKOUT__.__MINOR_VERSION__;\n\nexport let checkout;\nexport let apps;\n\nif (__PAYPAL_CHECKOUT__.__LEGACY_SUPPORT__) {\n const legacy = require('./legacy');\n checkout = legacy.checkout;\n apps = legacy.apps;\n}\n\n// -------------------------------------------------------------\n\nexport let Checkout;\nexport let BillingPage;\nexport let PayPalCheckout;\nexport let destroyAll;\nexport let enableCheckoutIframe;\nexport let logger;\nexport let ThreeDomainSecure;\n\nfunction _enableCheckoutIframe() {\n _Checkout.contexts.iframe = true;\n}\n\nif (isPayPalDomain() || __TEST__) {\n Checkout = _Checkout;\n BillingPage = _BillingPage;\n ThreeDomainSecure = _ThreeDomainSecure;\n PayPalCheckout = _Checkout;\n enableCheckoutIframe = _enableCheckoutIframe;\n destroyAll = _destroyAll;\n logger = { debug, info, warn, error, track, flush };\n}\n","/* @flow */\n/* eslint import/no-default-export: off */\n\nimport * as INTERFACE from './interface'; // eslint-disable-line import/no-namespace\n\nexport * from './interface';\nexport default INTERFACE;\n","/* @flow */\n\nexport const LOG_PREFIX = `paypal_legacy`;\n\nexport const ATTRIBUTES = {\n BUTTON: 'data-paypal-button',\n MERCHANT_ID: 'data-paypal-id',\n ENV: 'data-env',\n SANDBOX: 'data-sandbox'\n};\n\nexport const CLASSES = {\n HIDDEN_BUTTON: 'paypal-button-hidden'\n};\n","/* @flow */\n\nimport { isDevice, isEligible, supportsPopups } from '../lib';\n\nexport function isLegacyEligible() : boolean {\n\n if (!isEligible()) {\n return false;\n }\n\n if (!supportsPopups()) {\n return false;\n }\n\n if (isDevice()) {\n return false;\n }\n\n return true;\n}\n","/* @flow */\n\nimport { prefix } from 'beaver-logger/client';\n\nimport { COUNTRY, LANG, LOCALE } from '../constants';\nimport type { LocaleType } from '../types';\n\nimport { LOG_PREFIX } from './constants';\n\nconst { warn } = prefix(LOG_PREFIX);\n\nconst DEFAULT_COUNTRY = COUNTRY.US;\nconst DEFAULT_LANG = LANG.EN;\n\nexport function normalizeLocale(locale : string) : LocaleType {\n\n let [ lang, country ] = locale.split('_');\n\n if (!country) {\n if (LOCALE[lang]) {\n country = lang;\n lang = null;\n } else {\n country = DEFAULT_COUNTRY;\n }\n }\n\n if (!LOCALE[country]) {\n warn(`invalid_user_country`, { country });\n country = DEFAULT_COUNTRY;\n }\n\n if (!lang) {\n lang = DEFAULT_LANG;\n }\n\n if (LOCALE[country].indexOf(lang) === -1) {\n warn(`invalid_user_lang`, { lang });\n\n if (LOCALE[country].indexOf(DEFAULT_LANG) !== -1) {\n lang = DEFAULT_LANG;\n } else {\n lang = LOCALE[country][0];\n }\n }\n\n return { country, lang };\n}\n","/* @flow */\n\nimport { prefix } from 'beaver-logger/client';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { config } from '../config';\nimport { FPTI, BUTTON_COLOR, BUTTON_SHAPE, BUTTON_SIZE, BUTTON_LABEL } from '../constants';\nimport { loadScript, memoize, isElementVisible, stringifyError } from '../lib';\n\nimport { LOG_PREFIX } from './constants';\nimport { normalizeLocale } from './common';\n\nconst { info, debug, error } = prefix(LOG_PREFIX);\n\nconst loadButtonJS = memoize(() : ZalgoPromise => {\n\n debug(`buttonjs_load`);\n\n return loadScript(config.buttonJSUrl).catch(err => {\n info(`buttonjs_load_error_retry`, { error: stringifyError(err) });\n return loadScript(config.buttonJSUrl);\n }).then(result => {\n debug(`buttonjs_load_success`);\n return result;\n }).catch(err => {\n error(`buttonjs_load_error`, { error: stringifyError(err) });\n throw err;\n });\n});\n\nfunction renderButton(id, { container, locale, type, color, shape, size }) : ZalgoPromise {\n\n return loadButtonJS().then(() => {\n\n if (locale) {\n const { country, lang } = normalizeLocale(locale);\n locale = `${ lang }_${ country }`;\n }\n\n locale = locale || `${ config.locale.lang }_${ config.locale.country }`;\n color = color || BUTTON_COLOR.GOLD;\n shape = shape || BUTTON_SHAPE.PILL;\n size = size || BUTTON_SIZE.SMALL;\n type = type || BUTTON_LABEL.CHECKOUT;\n\n debug(`render_button_lc_${ locale }`);\n debug(`render_button_color_${ color }`);\n debug(`render_button_shape_${ shape }`);\n debug(`render_button_size_${ size }`);\n debug(`render_button_label_${ type }`);\n\n const el = window.paypal.button.create(id, { lc: locale, color, shape, size }, { type: 'button', label: type }).el;\n container.appendChild(el);\n\n try {\n info(`in_page_button_${ isElementVisible(el) ? 'visible' : 'not_visible' }`);\n\n } catch (err) {\n // pass\n }\n\n return el.childNodes[0];\n });\n}\n\n// eslint-disable-next-line flowtype/no-mutable-array\nexport function renderButtons(id : string, buttons : Array) : ZalgoPromise> {\n\n return ZalgoPromise.map(buttons, button => {\n return ZalgoPromise.try(() => {\n\n if (button.container) {\n return renderButton(id, button);\n } else {\n return button.button;\n }\n\n }).then(element => {\n\n let container;\n let type;\n const condition = button.condition;\n const click = button.click;\n\n if (button.container) {\n container = button.container;\n type = FPTI.BUTTON_TYPE.HTML;\n } else {\n container = button.button;\n type = FPTI.BUTTON_TYPE.CUSTOM;\n }\n\n return { container, element, type, condition, click };\n });\n });\n}\n\nexport function getHijackTargetElement(button : HTMLElement | HTMLButtonElement) : ?HTMLElement {\n\n // $FlowFixMe\n const form = button.form;\n\n if (form) {\n debug(`target_element_button_form`);\n return form;\n }\n\n const tagName = button.tagName && button.tagName.toLowerCase();\n\n if (tagName === 'a') {\n debug(`target_element_link`);\n return button;\n }\n\n const parentElement = button.parentElement;\n const parentTagName = parentElement && parentElement.tagName && parentElement.tagName.toLowerCase();\n\n if ((tagName === 'img' || tagName === 'button') && parentTagName === 'a') {\n debug(`target_element_parent_link`);\n // $FlowFixMe\n return parentElement;\n }\n\n const grandparentElement = parentElement && parentElement.parentElement;\n const grandparentTagName = grandparentElement && grandparentElement.tagName && grandparentElement.tagName.toLowerCase();\n\n if (tagName === 'button' && grandparentTagName === 'a') {\n debug(`target_element_grandparent_link`);\n // $FlowFixMe\n return button.parentElement && button.parentElement.parentElement;\n }\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { flush as flushLogs, prefix } from 'beaver-logger/client';\n\nimport { config } from '../config';\nimport { ENV } from '../constants';\nimport { urlWillRedirectPage, redirect as redir } from '../lib';\n\nimport { LOG_PREFIX } from './constants';\n\nconst { warn } = prefix(LOG_PREFIX);\n\nlet redirected = false;\n\nexport function logRedirect(location : string) {\n\n if (redirected) {\n warn(`multiple_redirects`);\n }\n\n if (urlWillRedirectPage(location)) {\n redirected = true;\n }\n\n flushLogs();\n}\n\nexport function redirect(url : string) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n if (!url) {\n throw new Error(`Redirect url undefined`);\n }\n\n if (config.env === ENV.TEST && urlWillRedirectPage(url)) {\n return redir(window, `#fullpageRedirect?url=${ url }`);\n }\n\n logRedirect(url);\n\n return redir(window, url);\n });\n}\n\nexport function isToken(item : string) : boolean {\n return Boolean(item && item.match(/^(EC-)?[A-Z0-9]{17}$/));\n}\n\n\n/* Parse Token\n -----------\n\n We are passed either a token, or a url containing the token. In order to run the new checkout component we need to\n strip out the token from the url in order to pass it down as a prop\n*/\n\nexport function parseToken(token : string) : ?string {\n\n if (!token) {\n return;\n }\n\n token = decodeURIComponent(decodeURIComponent(token));\n\n // We may get lucky and be passed a token straight off the bar\n\n if (token.match(/^(EC-)?[A-Z0-9]{17}$/)) {\n return token;\n }\n\n // Otherwise strip the token from the url we're sent\n\n let match = token.match(/token=((EC-)?[A-Z0-9]{17})/);\n\n if (match) {\n return match[1];\n }\n\n match = token.match(/(EC-[A-Z0-9]{17})/);\n\n if (match) {\n return match[1];\n }\n}\n\nexport function hasToken(item : string) : boolean {\n return Boolean(parseToken(item));\n}\n","/* @flow */\n\nimport { prefix } from 'beaver-logger/client';\n\nimport { config } from '../config';\nimport { ENV } from '../constants';\nimport { getElements } from '../lib';\n\nimport { normalizeLocale } from './common';\nimport { LOG_PREFIX } from './constants';\n\nconst { info, warn } = prefix(LOG_PREFIX);\n\nexport function normalizeOptions(options : Object) {\n\n // Normalize environment\n\n if (options.environment) {\n\n if (options.environment === 'live') {\n options.environment = ENV.PRODUCTION;\n }\n\n if (!config.paypalUrls[options.environment]) {\n warn('invalid_env', { badenv: options.environment });\n options.environment = config.env;\n }\n }\n\n // If we're passed a single button in options.button, turn it into an array\n\n if (options.button && !Array.isArray(options.button)) {\n info(`options_button_single_button_passed`);\n\n options.button = [ options.button ];\n }\n\n // If we're passed an array of elements in options.buttons, switch it over to options.button\n\n if (options.buttons && getElements(options.buttons).length) {\n info(`options_buttons_with_elements_passed`);\n\n options.button = options.buttons;\n delete options.buttons;\n }\n\n // If we're passed an empty options.button array, clear the value\n\n if (options.button && options.button.length === 0) {\n info(`options_button_empty`);\n\n delete options.button;\n }\n\n // If we're passed options.button and options.container, concat both under button\n\n if (options.button && options.container) {\n info(`options_button_and_container_passed`, { button: options.button, container: options.container });\n\n options.button = options.button.concat(options.container);\n delete options.container;\n }\n\n // Normalize button selectors to elements\n\n if (options.button) {\n const button = getElements(options.button);\n\n if (button.length) {\n options.button = button;\n\n } else {\n warn(`options_button_element_not_found`, { element: JSON.stringify(options.button) });\n delete options.button;\n }\n }\n\n // Normalize options.button to options.buttons\n\n if (options.button) {\n\n options.buttons = options.button.map(button => {\n return {\n button,\n click: options.click,\n condition: options.condition\n };\n });\n\n delete options.click;\n delete options.condition;\n delete options.button;\n }\n\n // Normalize array of buttons\n\n else if (options.buttons && Array.isArray(options.buttons)) {\n\n const buttons = [];\n\n options.buttons.forEach(button => {\n\n if (!button) {\n return;\n }\n\n if (button.container && button.container !== options.container) {\n warn(`mismatched_container_and_button_passed`, { options: options.container, button: button.container });\n }\n\n getElements(button.container || button.button).forEach(element => {\n buttons.push({\n\n [ button.container ? 'container' : 'button' ]: element,\n\n click: button.click || options.click,\n condition: button.condition || options.condition,\n type: button.type || options.type,\n locale: button.locale || options.locale,\n color: button.color || options.color,\n shape: button.shape || options.shape,\n size: button.size || options.size\n });\n });\n });\n\n delete options.buttons;\n delete options.click;\n delete options.condition;\n delete options.button;\n delete options.type;\n delete options.locale;\n delete options.color;\n delete options.shape;\n delete options.size;\n\n if (buttons.length) {\n options.buttons = buttons;\n }\n }\n\n // Otherwise normalize container into array of buttons\n\n else if (options.container && !Array.isArray(options.buttons)) {\n\n const buttons = [];\n\n getElements(options.container).forEach((container, i) => {\n buttons.push({\n container,\n click: options.click,\n condition: options.condition,\n type: Array.isArray(options.type) ? options.type[i] : options.type,\n locale: Array.isArray(options.locale) ? options.locale[i] : options.locale,\n color: Array.isArray(options.color) ? options.color[i] : options.color,\n shape: Array.isArray(options.shape) ? options.shape[i] : options.shape,\n size: Array.isArray(options.size) ? options.size[i] : options.size\n });\n });\n\n delete options.container;\n delete options.buttons;\n delete options.click;\n delete options.condition;\n delete options.button;\n delete options.type;\n delete options.locale;\n delete options.color;\n delete options.shape;\n delete options.size;\n\n if (buttons.length) {\n options.buttons = buttons;\n }\n }\n\n if (!options.buttons) {\n options.buttons = [];\n }\n}\n\nexport function setupConfig(options : Object) {\n\n if (options.environment && config.paypalUrls[options.environment]) {\n config.env = options.environment;\n }\n\n if (options.locale) {\n config.locale = normalizeLocale(options.locale);\n config.customCountry = true;\n }\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { prefix, flush as flushLogs } from 'beaver-logger/client';\nimport formSerialize from 'form-serialize';\n\nimport { Checkout } from '../checkout';\nimport { config } from '../config';\nimport { ENV, FPTI } from '../constants';\nimport { supportsPopups, once, safeJSON, extendUrl, stringifyError, request } from '../lib';\n\nimport { setupPostBridge } from './postBridge';\nimport { isLegacyEligible } from './eligibility';\nimport { LOG_PREFIX } from './constants';\nimport { renderButtons, getHijackTargetElement } from './button';\nimport { redirect, logRedirect, parseToken } from './util';\nimport { normalizeOptions, setupConfig } from './options';\n\nconst { info, debug, warn, error, track } = prefix(LOG_PREFIX);\n\nexport const checkout = {};\nexport const apps = { checkout, Checkout: checkout };\n\nexport function reset() {\n\n debug('reset');\n\n // Once our callback has been called, we can set the global methods to their original values\n\n checkout.initXO = initXO; // eslint-disable-line no-use-before-define\n checkout.startFlow = startFlow; // eslint-disable-line no-use-before-define\n checkout.closeFlow = closeFlow; // eslint-disable-line no-use-before-define\n}\n\ncheckout.reset = reset;\n\n// $FlowFixMe\nObject.defineProperty(checkout, 'urlPrefix', {\n get() : string {\n return `${ config.checkoutUrl }${ config.checkoutUrl.indexOf('?') === -1 ? '?' : '&' }token=`;\n }\n});\n\nfunction matchUrlAndPaymentToken(item) : { url : string, paymentToken : ?string } {\n\n if (!item || !item.trim()) {\n error(`startflow_no_url_or_token`, { item });\n throw new Error(`startflow_no_url_or_token`);\n }\n\n\n const paymentToken = parseToken(item);\n let url = (paymentToken && paymentToken === item) ? '' : item;\n\n if (url) {\n\n if (!url.match(/^https?:\\/\\/|^\\//)) {\n if (paymentToken) {\n info(`startflow_relative_url_with_token`, { url });\n } else {\n info(`startflow_relative_url_no_token`, { url });\n }\n\n if (url.toLowerCase().indexOf('ec-') === 0 && paymentToken) {\n url = `${ config.checkoutUrl }${ url }`;\n }\n\n } else if (paymentToken) {\n if (url.indexOf('.paypal.com') !== -1) {\n debug(`startflow_paypalurl_with_token`, { url });\n } else {\n debug(`startflow_url_with_token`, { url });\n }\n\n } else {\n debug(`startflow_url_no_token`, { url });\n }\n\n } else {\n\n if (paymentToken) {\n url = extendUrl(config.checkoutUrl, { token: paymentToken });\n debug(`startflow_with_token`, { url });\n } else {\n error(`startflow_no_url_or_token`, { url });\n throw new Error(`Could not determine url or token from \"${ item }\"`);\n }\n }\n\n return { paymentToken, url };\n}\n\nfunction checkUrlAgainstEnv(url : string) {\n\n const paypalUrls = config.paypalUrls;\n\n for (const env of Object.keys(paypalUrls)) {\n const paypalUrl = paypalUrls[env];\n\n if (env === ENV.TEST || env === ENV.DEMO) {\n continue;\n }\n\n if (env !== config.env) {\n if (url.indexOf(paypalUrl) === 0 || url.indexOf(paypalUrl.replace('//www.', '//')) === 0) {\n warn(`mismatched_env_startflow_url`, { env: config.env, url });\n redirect(url);\n throw new Error(`${ url } is not a ${ config.env } url`);\n }\n }\n }\n}\n\n/* Get Token\n ---------\n\n Normally in the component world, getToken would be a user-provided function which passes a callback, and expects\n that callback to be called with either an error, or an EC token.\n\n In our case, we can emulate these callback calls by setting over the startFlow and closeFlow globals, and using\n them as our success and failure cases.\n\n Note: this method is set to `precall: true` mode. This means that it will be called the moment the component is\n inited on the page. This means that the moment we initialize, we're ready to start accepting a token via one of the\n global methods.\n*/\n\nfunction awaitPaymentTokenAndUrl(event? : ?Event, targetElement? : ?HTMLElement) : { url : ZalgoPromise, paymentToken : ZalgoPromise } {\n\n const paymentTokenAndUrl = new ZalgoPromise((resolve) => {\n\n if (event && targetElement && (Math.random() < 0.001 || window.enablev3ajax)) {\n let method;\n let url;\n let body;\n let contentType;\n\n info('gettoken_targetelement_start');\n flushLogs();\n \n if (targetElement.tagName.toLowerCase() === 'a') {\n method = 'get';\n url = targetElement.getAttribute('href');\n } else if (targetElement.tagName.toLowerCase() === 'form') {\n method = (targetElement.getAttribute('method') || 'get').toLowerCase();\n url = targetElement.getAttribute('action');\n body = formSerialize(targetElement);\n contentType = targetElement.getAttribute('enctype') || 'application/x-www-form-urlencoded';\n }\n \n if (method && url) {\n event.preventDefault();\n\n request({\n method,\n url,\n body,\n headers: {\n 'Accept': 'application/paypal-json-token',\n 'Content-type': contentType || ''\n }\n }).then(json => {\n const urlAndPaymentToken = matchUrlAndPaymentToken(json.token);\n resolve(urlAndPaymentToken);\n info('gettoken_targetelement_success', urlAndPaymentToken);\n flushLogs();\n\n }).catch(err => {\n warn('gettoken_targetelement_error', {\n // $FlowFixMe\n err: err.stack || err.toString()\n });\n flushLogs();\n });\n \n } else {\n warn('gettoken_targetelement_no_method_or_url');\n flushLogs();\n }\n }\n\n\n checkout.initXO = () => {\n warn(`gettoken_initxo`);\n };\n\n // startFlow is our 'success' case - we get a token, and we can pass it back to the caller\n\n checkout.startFlow = once((item) => {\n debug(`gettoken_startflow`, { item });\n\n const { url, paymentToken } = matchUrlAndPaymentToken(item);\n\n checkUrlAgainstEnv(url);\n\n return resolve({ url, paymentToken });\n });\n });\n\n const url = paymentTokenAndUrl.then(result => result.url);\n const paymentToken = paymentTokenAndUrl.then(result => result.paymentToken);\n\n return { url, paymentToken };\n}\n\n\n/* Init PayPal Checkout\n --------------------\n\n Initialize the Checkout component with some standard props:\n\n - Pass in env from global state (saved during setup() call)\n - Return to success url on payment authorize\n - Return to cancel url on cancel\n*/\n\nlet paypalCheckoutInited = false;\nlet closeFlowCalled = false;\n\nfunction initPayPalCheckout(props = {}) : Object {\n\n info(`init_checkout`);\n\n if (paypalCheckoutInited && config.env !== ENV.TEST) {\n warn(`multiple_init_paypal_checkout`);\n }\n\n if (closeFlowCalled) {\n debug(`init_after_closeflow`);\n }\n\n paypalCheckoutInited = true;\n\n const paypalCheckout = Checkout.init({\n\n onAuthorize(data, actions) : ZalgoPromise {\n info(`payment_authorized`);\n logRedirect(data.returnUrl);\n return actions.redirect(window);\n },\n\n onCancel(data, actions) : ?ZalgoPromise {\n if (data.cancelUrl) {\n info(`payment_canceled`);\n logRedirect(data.cancelUrl);\n return actions.redirect(window);\n }\n },\n\n fallback(url) : ZalgoPromise {\n error(`fallback_handler`, { url });\n this.destroy();\n return redirect(url);\n },\n\n ...props\n });\n\n checkout.closeFlow = (closeUrl? : string) => {\n warn(`closeflow`);\n\n closeFlowCalled = true;\n\n reset();\n\n paypalCheckout.destroy();\n\n if (closeUrl) {\n warn(`closeflow_with_url`, { closeUrl });\n return redirect(closeUrl);\n }\n };\n\n return paypalCheckout;\n}\n\nfunction renderPayPalCheckout(props : Object = {}, hijackTarget? : ?Element) : ZalgoPromise {\n\n const urlProp = ZalgoPromise.resolve(props.url);\n\n const paymentToken = new ZalgoPromise(resolve => {\n props.init = (data) => {\n resolve(data.paymentToken);\n };\n });\n\n const errorHandler = once(err => {\n\n error(`component_error`, { error: stringifyError(err) });\n\n if (hijackTarget) {\n warn(`render_error_hijack_revert_target`);\n hijackTarget.removeAttribute('target');\n }\n\n // eslint-disable-next-line promise/no-promise-in-callback\n urlProp.then(url => {\n warn(`render_error_redirect_using_url`);\n return redirect(url);\n });\n\n // eslint-disable-next-line promise/no-promise-in-callback\n paymentToken.then(token => {\n warn(`render_error_redirect_using_token`);\n return redirect(extendUrl(config.checkoutUrl, { token }));\n });\n });\n\n props.onError = errorHandler;\n\n let paypalCheckout;\n\n if (hijackTarget) {\n\n delete props.url;\n\n paypalCheckout = initPayPalCheckout(props);\n\n paypalCheckout.hijack(hijackTarget);\n paypalCheckout.runTimeout();\n\n urlProp.then(url => {\n warn(`hijack_then_url_passed`);\n paypalCheckout.loadUrl(url);\n });\n\n } else {\n\n paypalCheckout = initPayPalCheckout(props);\n }\n\n const render = paypalCheckout.render(null, !hijackTarget);\n\n checkout.win = paypalCheckout.window;\n\n return render.catch(errorHandler);\n}\n\n\nfunction handleClick(clickHandler, event) {\n debug(`button_click_handler`);\n\n try {\n clickHandler(event);\n } catch (err) {\n error(`click_handler_error`, { error: stringifyError(err) });\n }\n}\n\nfunction handleClickHijack(event, element) : void {\n\n const targetElement = getHijackTargetElement(element);\n\n if (!targetElement) {\n return error(`target_element_not_found`);\n }\n\n info(`init_paypal_checkout_hijack`);\n\n const { url, paymentToken } = awaitPaymentTokenAndUrl(event, targetElement);\n\n let token;\n \n paymentToken.then(result => {\n token = result;\n });\n\n renderPayPalCheckout({ url, payment: () => ZalgoPromise.resolve(token) }, targetElement);\n}\n\nfunction listenClick(container, button, clickHandler, condition, tracker) : void {\n\n const element : HTMLElement = (container.tagName.toLowerCase() === 'a') ? container : button;\n\n const isClick = (typeof clickHandler === 'function');\n\n if (element.hasAttribute('data-paypal-click-listener')) {\n return warn(`button_already_has_paypal_click_listener`);\n }\n\n element.setAttribute('data-paypal-click-listener', '');\n\n const targetElement = getHijackTargetElement(element);\n\n if (targetElement && isClick) {\n info(`button_link_or_form`);\n }\n\n element.addEventListener('click', (event : Event) => {\n\n tracker();\n\n const eligible = isLegacyEligible();\n\n if (supportsPopups()) {\n debug(`click_popups_supported`);\n\n if (!eligible) {\n debug(`click_popups_supported_but_ineligible`);\n }\n } else {\n debug(`click_popups_not_supported`);\n\n if (eligible) {\n debug(`click_popups_not_supported_but_eligible`);\n }\n }\n\n if (!isClick) {\n\n if (!eligible) {\n return debug(`ineligible_listenclick`);\n }\n }\n\n info(`button_click`);\n\n if (typeof condition === 'function') {\n if (condition.call()) {\n info(`button_click_condition_enabled`);\n } else {\n return info(`button_click_condition_disabled`);\n }\n }\n\n if (isClick) {\n return handleClick(clickHandler, event);\n\n } else {\n return handleClickHijack(event, element);\n }\n });\n}\n\nfunction instrumentButtonRender(type : string) {\n info(`render_${ type }_button`);\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_RENDER,\n [ FPTI.KEY.BUTTON_TYPE ]: type\n });\n\n flushLogs();\n}\n\nfunction instrumentButtonClick(type : string) {\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_CLICK,\n [ FPTI.KEY.BUTTON_TYPE ]: type\n });\n flushLogs();\n}\n\n\n/* Setup\n -----\n\n Emulate window.paypal.checkout.setup.\n\n The purpose of this method is to:\n\n - Set up configuration for the incontext flow\n - Render a button to initiate the checkout window\n*/\n\nlet setupCalled = false;\n\nexport function setup(id : string, options : Object = {}) : ZalgoPromise {\n\n id = id || 'merchant';\n\n info(`setup`, {\n id,\n env: options.environment,\n options: safeJSON(options)\n });\n\n if (setupCalled) {\n debug(`setup_called_multiple_times`);\n }\n\n setupCalled = true;\n\n normalizeOptions(options);\n setupConfig(options);\n\n setupPostBridge(config.env);\n\n return ZalgoPromise.try(() => {\n\n // If there are no buttons passed, can only assume there's a custom paypal button with a custom listener\n\n if (!options.buttons.length) {\n return instrumentButtonRender(FPTI.BUTTON_TYPE.CUSTOM);\n }\n\n // Otherwise render whatever buttons we were asked to, and listen for them to be clicked\n\n return renderButtons(id, options.buttons).then(buttons => {\n\n buttons.forEach(button => {\n instrumentButtonRender(button.type);\n\n listenClick(button.container, button.element, button.click, button.condition, () => {\n instrumentButtonClick(button.type);\n });\n });\n });\n });\n}\n\ncheckout.setup = setup;\n\n/* Init XO\n -------\n\n Emulate paypal.checkout.initXO\n\n Normally this would be used only to open the checkout page. But here we can just kick off the whole flow, since\n getToken will handle loading the token into the window for us.\n*/\n\nfunction initXO() : void {\n\n debug(`initxo`);\n\n if (!isLegacyEligible()) {\n return debug(`ineligible_initxo`);\n }\n\n const { url, paymentToken } = awaitPaymentTokenAndUrl();\n\n info(`init_paypal_checkout_initxo`);\n\n renderPayPalCheckout({ url, payment: () => paymentToken });\n}\n\ncheckout.initXO = initXO;\n\n\n/* Start Flow\n ----------\n\n Emulate paypal.checkout.startFlow\n\n Normally this would be used to load the url into the browser after the window has already been opened. Again, we\n can just kick off the whole flow here, on the off chance that a merchant calls us on button click. Normally this\n method will have been patched over in getToken.\n*/\n\nfunction startFlow(item : string) {\n debug(`startflow`, { item });\n\n const { paymentToken, url } = matchUrlAndPaymentToken(item);\n\n checkUrlAgainstEnv(url);\n\n if (!isLegacyEligible()) {\n debug(`ineligible_startflow_global`, { url });\n redirect(url);\n return;\n }\n\n info(`init_paypal_checkout_startflow`);\n\n renderPayPalCheckout({ url, payment: () => ZalgoPromise.resolve(paymentToken) });\n}\n\ncheckout.startFlow = startFlow;\n\n\n/* Close Flow\n ----------\n\n Emulate paypal.checkout.closeFlow\n\n Close the component in case of any error on the merchant side.\n*/\n\nfunction closeFlow(closeUrl? : string) {\n warn(`closeflow_not_opened`);\n\n if (closeUrl) {\n warn(`closeflow_with_url`, { closeUrl });\n redirect(closeUrl);\n\n }\n}\n\ncheckout.closeFlow = closeFlow;\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { debug } from 'beaver-logger/client';\nimport { bridge } from 'post-robot/src';\n\nimport { config } from '../config';\nimport { openMetaFrame, noop } from '../lib';\n\nexport function setupPostBridge(env : string) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n const metaFrameDomain : string = config.paypalDomains[env];\n\n if (!bridge || !bridge.needsBridge({ domain: metaFrameDomain })) {\n return debug(`post_bridge_not_required`, { env });\n }\n\n debug(`setup_post_bridge`, { env });\n\n return openMetaFrame(env).then(noop);\n });\n}\n","/* @flow */\n\nimport { prefix } from 'beaver-logger/client';\n\nimport { onDocumentReady } from '../lib';\nimport { ENV } from '../constants';\n\nimport { LOG_PREFIX, ATTRIBUTES, CLASSES } from './constants';\nimport { setup } from './interface';\n\nconst { error, debug } = prefix(LOG_PREFIX);\n\n/* PayPal Checkout Ready\n ---------------------\n\n Call window.paypalCheckoutReady on document ready, if it has been defined by the merchant\n*/\n\nfunction invokeReady(method) {\n\n onDocumentReady(() => {\n debug(`paypal_checkout_ready`);\n setTimeout(() => {\n\n if (!window.paypal) {\n error(`paypal_checkout_ready_no_window_paypal`);\n }\n\n method();\n }, 1);\n });\n}\n\nfunction onKey(obj : Object, key : string, callback : Function) {\n\n if (!obj) {\n return;\n }\n\n let value = obj[key];\n\n if (value) {\n value = callback(value) || value;\n }\n\n try {\n\n delete obj[key];\n\n Object.defineProperty(obj, key, {\n\n configurable: true,\n\n set(item) {\n value = item;\n\n if (value) {\n value = callback(value) || value;\n }\n },\n\n get() : mixed {\n return value;\n }\n });\n\n } catch (err) {\n // pass\n }\n}\n\nonKey(window, 'paypalCheckoutReady', method => {\n\n if (typeof method === 'function') {\n\n const oneTimeReady = function () : void {\n if (!method.called) {\n method.called = true;\n return method.apply(this, arguments);\n }\n };\n\n invokeReady(oneTimeReady);\n\n return oneTimeReady;\n }\n});\n\n\n/* Scan for buttons\n ----------------\n\n Scan for any buttons on the page with a data-paypal-button attribute and auto-attach the PaypalCheckout component to them\n*/\n\nonDocumentReady(() => {\n\n const buttons = Array.prototype.slice.call(document.querySelectorAll(`[${ ATTRIBUTES.BUTTON }]`));\n\n if (buttons && buttons.length) {\n debug(`data_paypal_button`, { number: buttons.length });\n\n for (const button of buttons) {\n\n const id = button.getAttribute(ATTRIBUTES.MERCHANT_ID);\n\n let environment;\n\n if (button.hasAttribute(ATTRIBUTES.ENV)) {\n environment = button.getAttribute(ATTRIBUTES.ENV);\n } else if (button.hasAttribute(ATTRIBUTES.SANDBOX)) {\n environment = ENV.SANDBOX;\n }\n\n setup(id, { environment, button });\n }\n }\n\n // Show hidden buttons\n\n Array.prototype.slice.call(document.getElementsByClassName(CLASSES.HIDDEN_BUTTON)).forEach(el => {\n el.className = el.className.replace(CLASSES.HIDDEN_BUTTON, '');\n });\n});\n","/* @flow */\n\nimport './ready'; // eslint-disable-line import/no-unassigned-import\n\nexport * from './button';\nexport * from './constants';\nexport * from './interface';\n"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/checkout.button.render.js b/dist/checkout.button.render.js index 45685158ef..39780ef4ff 100644 --- a/dist/checkout.button.render.js +++ b/dist/checkout.button.render.js @@ -5311,7 +5311,7 @@ var BUTTON_CONFIG = (_BUTTON_CONFIG = {}, _BUTTON_CONFIG[DEFAULT] = { allowPrimaryHorizontal: true }, _BUTTON_CONFIG[BUTTON_LABEL.PAY] = { label: "{ content: pay }", - logoLabel: "{ logo: " + BUTTON_LOGO.PP + " } { logo: " + BUTTON_LOGO.PAYPAL + " }", + logoLabel: "{ logo: " + BUTTON_LOGO.PAYPAL + " }", allowPrimary: true, allowPrimaryVertical: true, allowPrimaryHorizontal: true @@ -15382,7 +15382,7 @@ function componentTemplate(_ref19) { }); var scriptNode = renderScript(); var labelPowerByPayPal = cards.length > 0 ? renderPowerByPaypalLogo(normalizeProps(props)) : null; - return jsxToHTML("div", _extends({}, (_ref20 = {}, _ref20[ATTRIBUTE.VERSION] = "4.0.307", _ref20), { + return jsxToHTML("div", _extends({}, (_ref20 = {}, _ref20[ATTRIBUTE.VERSION] = "4.0.308", _ref20), { class: CLASS.CONTAINER + " " + getCommonButtonClasses({ layout: layout, shape: shape, diff --git a/dist/checkout.js b/dist/checkout.js index 1b1589526c..3f7991ad14 100644 --- a/dist/checkout.js +++ b/dist/checkout.js @@ -1447,7 +1447,7 @@ function initLogger() { country: config["a" /* config */].locale.country, lang: config["a" /* config */].locale.lang, uid: Object(session["c" /* getSessionID */])(), - ver: "4.0.307" + ver: "4.0.308" }; }); Object(client["a" /* addHeaderBuilder */])(function () { @@ -2026,7 +2026,7 @@ function getScriptVersion() { if ( true && isPayPalObjects()) { return false ? undefined : "4"; } else { - return false ? undefined : "4.0.307"; + return false ? undefined : "4.0.308"; } } function getCurrentScriptUrl() { @@ -2042,7 +2042,7 @@ function getCurrentScriptUrl() { return scriptUrl; } - return "https://www.paypalobjects.com/api/checkout." + "4.0.307" + ( false ? undefined : '') + ".js"; + return "https://www.paypalobjects.com/api/checkout." + "4.0.308" + ( false ? undefined : '') + ".js"; } function getDomainSetting(name, def) { var hostname = window.xchild ? window.xchild.getParentDomain() : Object(cross_domain_utils_src["h" /* getDomain */])(); @@ -2410,7 +2410,7 @@ var config = { scriptUrl: false ? undefined : "//www.paypalobjects.com/api/" + "checkout.js", // eslint-disable-next-line security/detect-unsafe-regex, unicorn/no-unsafe-regex paypal_domain_regex: /^(https?|mock):\/\/[a-zA-Z0-9_.-]+\.paypal\.com(:\d+)?$/, - version: "4.0.307", + version: "4.0.308", cors: true, env: getDefaultEnv(), state: 'checkoutjs', @@ -20616,7 +20616,7 @@ function beacon(event, payload) { try { payload.event = "ppxo_" + event; - payload.version = "4.0.307"; + payload.version = "4.0.308"; payload.host = window.location.host; payload.uid = Object(_session__WEBPACK_IMPORTED_MODULE_3__[/* getSessionID */ "c"])(); payload.appName = APP_NAME; @@ -20672,7 +20672,7 @@ function checkpoint(name, payload, options) { var checkpointName = name; if (options.version) { - var version = "4.0.307".replace(/[^0-9]+/g, '_'); + var version = "4.0.308".replace(/[^0-9]+/g, '_'); checkpointName = version + "_" + checkpointName; } @@ -20689,7 +20689,7 @@ var FPTI_URL = 'https://t.paypal.com/ts'; function buildPayload() { return { - v: "checkout.js." + "4.0.307", + v: "checkout.js." + "4.0.308", t: Date.now(), g: new Date().getTimezoneOffset(), flnm: 'ec:hermes:', @@ -25811,17 +25811,17 @@ __webpack_require__.r(__webpack_exports__); if (false) {} -if (window.paypal && window.paypal.version === "4.0.307") { +if (window.paypal && window.paypal.version === "4.0.308") { Object(_lib_beacon__WEBPACK_IMPORTED_MODULE_0__[/* beacon */ "a"])('bootstrap_already_loaded_same_version', { - version: "4.0.307" + version: "4.0.308" }); - throw new Error("PayPal Checkout Integration Script with same version (" + "4.0.307" + ") already loaded on page"); -} else if (window.paypal && window.paypal.version && window.paypal.version !== "4.0.307" && window.paypal.Button && window.paypal.Button.render) { + throw new Error("PayPal Checkout Integration Script with same version (" + "4.0.308" + ") already loaded on page"); +} else if (window.paypal && window.paypal.version && window.paypal.version !== "4.0.308" && window.paypal.Button && window.paypal.Button.render) { Object(_lib_beacon__WEBPACK_IMPORTED_MODULE_0__[/* beacon */ "a"])('bootstrap_already_loaded_different_version', { existingVersion: window.paypal.version, - version: "4.0.307" + version: "4.0.308" }); - throw new Error("PayPal Checkout Integration Script with different version (" + window.paypal.version + ") already loaded on page, current version: " + "4.0.307"); + throw new Error("PayPal Checkout Integration Script with different version (" + window.paypal.version + ") already loaded on page, current version: " + "4.0.308"); } else { try { var _interface = __webpack_require__(66); @@ -27651,7 +27651,7 @@ var BUTTON_CONFIG = (_BUTTON_CONFIG = {}, _BUTTON_CONFIG[constants["s" /* DEFAUL allowPrimaryHorizontal: true }, _BUTTON_CONFIG[constants["f" /* BUTTON_LABEL */].PAY] = { label: "{ content: pay }", - logoLabel: "{ logo: " + constants["h" /* BUTTON_LOGO */].PP + " } { logo: " + constants["h" /* BUTTON_LOGO */].PAYPAL + " }", + logoLabel: "{ logo: " + constants["h" /* BUTTON_LOGO */].PAYPAL + " }", allowPrimary: true, allowPrimaryVertical: true, allowPrimaryHorizontal: true @@ -35051,7 +35051,7 @@ function componentTemplate(_ref19) { }); var scriptNode = renderScript(); var labelPowerByPayPal = cards.length > 0 ? renderPowerByPaypalLogo(normalizeProps(props)) : null; - return Object(jsx["c" /* jsxToHTML */])("div", Object(esm_extends["a" /* default */])({}, (_ref20 = {}, _ref20[constants["c" /* ATTRIBUTE */].VERSION] = "4.0.307", _ref20), { + return Object(jsx["c" /* jsxToHTML */])("div", Object(esm_extends["a" /* default */])({}, (_ref20 = {}, _ref20[constants["c" /* ATTRIBUTE */].VERSION] = "4.0.308", _ref20), { class: class_CLASS.CONTAINER + " " + getCommonButtonClasses({ layout: layout, shape: shape, @@ -36794,7 +36794,7 @@ var postRobot = post_robot_src; var onPossiblyUnhandledException = zalgo_promise_src["a" /* ZalgoPromise */].onPossiblyUnhandledException; -var interface_version = "4.0.307"; +var interface_version = "4.0.308"; var interface_checkout; var apps; diff --git a/dist/checkout.js.map b/dist/checkout.js.map index d38044e614..b0a5e1fe94 100644 --- a/dist/checkout.js.map +++ b/dist/checkout.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/constants/button.js","webpack:///./src/constants/checkout.js","webpack:///./src/constants/funding.js","webpack:///./src/constants/misc.js","webpack:///./src/constants/fpti.js","webpack:///./src/constants/country.js","webpack:///./src/constants/locale.js","webpack:///./src/constants/index.js","webpack:///./src/lib/jsx.js","webpack:///./node_modules/zalgo-promise/src/utils.js","webpack:///./node_modules/zalgo-promise/src/exceptions.js","webpack:///./node_modules/zalgo-promise/src/flush.js","webpack:///./node_modules/zalgo-promise/src/promise.js","webpack:///./node_modules/zalgo-promise/src/index.js","webpack:///./src/lib/proxy.js","webpack:///./src/lib/logger.js","webpack:///./src/lib/eligibility.js","webpack:///./src/lib/errors.js","webpack:///./src/lib/http.js","webpack:///./src/lib/throttle.js","webpack:///./src/lib/script.js","webpack:///./src/lib/meta.js","webpack:///./src/lib/funding.js","webpack:///./src/lib/index.js","webpack:///./src/config/config.js","webpack:///./src/config/index.js","webpack:///./node_modules/beaver-logger/client/util.js","webpack:///./node_modules/beaver-logger/client/builders.js","webpack:///./node_modules/beaver-logger/client/config.js","webpack:///./node_modules/beaver-logger/client/logger.js","webpack:///./node_modules/beaver-logger/client/performance.js","webpack:///./node_modules/beaver-logger/client/init.js","webpack:///./node_modules/beaver-logger/client/transitions.js","webpack:///./node_modules/beaver-logger/client/interface.js","webpack:///./node_modules/beaver-logger/client/index.js","webpack:///./node_modules/zoid/src/lib/util.js","webpack:///./node_modules/zoid/src/lib/fn.js","webpack:///./node_modules/zoid/src/lib/dom.js","webpack:///./node_modules/zoid/src/lib/promise.js","webpack:///./node_modules/zoid/src/lib/css.js","webpack:///./node_modules/zoid/src/lib/decorators.js","webpack:///./node_modules/zoid/src/lib/logger.js","webpack:///./node_modules/zoid/src/lib/global.js","webpack:///./node_modules/zoid/src/lib/index.js","webpack:///./node_modules/cross-domain-utils/src/util.js","webpack:///./node_modules/cross-domain-utils/src/constants.js","webpack:///./node_modules/cross-domain-utils/src/utils.js","webpack:///./node_modules/cross-domain-utils/src/types.js","webpack:///./node_modules/cross-domain-utils/src/index.js","webpack:///./node_modules/zoid/src/constants.js","webpack:///./node_modules/post-robot/src/global.js","webpack:///./node_modules/post-robot/src/conf/constants.js","webpack:///./node_modules/post-robot/src/conf/config.js","webpack:///./node_modules/post-robot/src/conf/index.js","webpack:///./node_modules/@babel/runtime/helpers/esm/extends.js","webpack:///./src/lib/util.js","webpack:///./node_modules/post-robot/src/drivers/send/strategies.js","webpack:///./node_modules/post-robot/src/drivers/send/index.js","webpack:///./node_modules/post-robot/src/drivers/listeners.js","webpack:///./node_modules/post-robot/src/drivers/receive/types.js","webpack:///./node_modules/post-robot/src/drivers/receive/index.js","webpack:///./node_modules/post-robot/src/drivers/index.js","webpack:///./node_modules/post-robot/src/public/client.js","webpack:///./node_modules/post-robot/src/public/server.js","webpack:///./node_modules/post-robot/src/public/config.js","webpack:///./node_modules/post-robot/src/public/index.js","webpack:///./node_modules/post-robot/src/clean.js","webpack:///./node_modules/post-robot/src/interface.js","webpack:///./node_modules/post-robot/src/index.js","webpack:///./node_modules/post-robot/src/lib/util.js","webpack:///./node_modules/post-robot/src/lib/serialize.js","webpack:///./node_modules/post-robot/src/lib/ready.js","webpack:///./node_modules/post-robot/src/lib/index.js","webpack:///./src/compat/fallback.js","webpack:///./src/checkout/component.js","webpack:///./src/checkout/index.js","webpack:///./node_modules/belter/src/device.js","webpack:///./node_modules/belter/src/util.js","webpack:///./node_modules/belter/src/constants.js","webpack:///./node_modules/belter/src/dom.js","webpack:///./node_modules/belter/src/storage.js","webpack:///./node_modules/belter/src/experiment.js","webpack:///./node_modules/belter/src/global.js","webpack:///./node_modules/belter/src/http.js","webpack:///./node_modules/belter/src/types.js","webpack:///./node_modules/belter/src/decorators.js","webpack:///./node_modules/belter/src/css.js","webpack:///./node_modules/belter/src/test.js","webpack:///./node_modules/belter/src/index.js","webpack:///./node_modules/cross-domain-safe-weakmap/src/native.js","webpack:///./node_modules/cross-domain-safe-weakmap/src/util.js","webpack:///./node_modules/cross-domain-safe-weakmap/src/weakmap.js","webpack:///./node_modules/cross-domain-safe-weakmap/src/index.js","webpack:///./src/resources/fundingLogos/p24.jsx","webpack:///./src/resources/fundingLogos/sofort.jsx","webpack:///./src/resources/fundingLogos/ideal.jsx","webpack:///./src/resources/fundingLogos/giropay.jsx","webpack:///./src/resources/fundingLogos/eps.jsx","webpack:///./src/resources/fundingLogos/mybank.jsx","webpack:///./src/resources/fundingLogos/bancontact.jsx","webpack:///./src/resources/fundingLogos/payu.jsx","webpack:///./src/resources/fundingLogos/verkkopankki.jsx","webpack:///./src/resources/fundingLogos/blik.jsx","webpack:///./src/resources/fundingLogos/trustly.jsx","webpack:///./src/resources/fundingLogos/maxima.jsx","webpack:///./src/resources/fundingLogos/boleto.jsx","webpack:///./src/resources/fundingLogos/oxxo.jsx","webpack:///./src/resources/fundingLogos/paypal.jsx","webpack:///./src/resources/fundingLogos/credit.jsx","webpack:///./src/resources/fundingLogos/index.js","webpack:///./src/resources/cardLogos/index.js","webpack:///./src/resources/index.js","webpack:///./src/lib/session.js","webpack:///./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack:///./node_modules/@babel/runtime/helpers/esm/applyDecoratedDescriptor.js","webpack:///./node_modules/zoid/src/component/base.js","webpack:///./node_modules/zoid/src/component/window.js","webpack:///./node_modules/zoid/src/component/child/props.js","webpack:///./node_modules/zoid/src/component/child/index.js","webpack:///./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack:///./node_modules/zoid/src/component/parent/drivers.js","webpack:///./node_modules/zoid/src/component/parent/validate.js","webpack:///./node_modules/zoid/src/component/parent/props.js","webpack:///./node_modules/zoid/src/component/parent/index.js","webpack:///./node_modules/zoid/src/component/delegate/index.js","webpack:///./node_modules/zoid/src/component/component/validate.js","webpack:///./node_modules/zoid/src/component/component/templates/container.jsx","webpack:///./node_modules/zoid/src/component/component/templates/component.jsx","webpack:///./node_modules/zoid/src/component/component/templates/index.js","webpack:///./node_modules/zoid/src/component/component/props.js","webpack:///./node_modules/zoid/src/component/component/index.js","webpack:///./node_modules/zoid/src/component/index.js","webpack:///./node_modules/zoid/src/interface.js","webpack:///./node_modules/zoid/src/index.js","webpack:///./src/lib/device.js","webpack:///./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack:///./node_modules/post-robot/src/bridge/bridge.js","webpack:///./node_modules/post-robot/src/bridge/common.js","webpack:///./node_modules/post-robot/src/bridge/child.js","webpack:///./node_modules/post-robot/src/bridge/parent.js","webpack:///./node_modules/post-robot/src/bridge/index.js","webpack:///./src/lib/dom.js","webpack:///./node_modules/zoid/src/error.js","webpack:///./src/lib/security.js","webpack:///./src/integrations/braintree.js","webpack:///./src/integrations/index.js","webpack:///./node_modules/zoid/src/drivers/index.js","webpack:///./src/lib/beacon.js","webpack:///./src/checkout/template/componentTemplate.jsx","webpack:///./src/checkout/template/containerStyle/base.js","webpack:///./src/checkout/template/sandboxStyle/base.js","webpack:///./src/checkout/template/containerTemplate.jsx","webpack:///./src/checkout/template/index.js","webpack:///./src/integrations/checkout.js","webpack:///./src/lib/namespace.js","webpack:///./src/checkout/template/containerContent.js","webpack:///./node_modules/hi-base32/src/base32.js","webpack:///./node_modules/zoid/src/drivers/script.js","webpack:///./node_modules/zoid/src/drivers/react.js","webpack:///./node_modules/zoid/src/drivers/vue.js","webpack:///./node_modules/zoid/src/drivers/angular.js","webpack:///./node_modules/zoid/src/drivers/glimmer.js","webpack:///./node_modules/zoid/src/drivers/angular2.js","webpack:///./node_modules/bowser/bowser.min.js","webpack:///./node_modules/post-robot/src/compat/ie.js","webpack:///./node_modules/post-robot/src/compat/index.js","webpack:///./src/resources/fundingLogos/pp_white.svg","webpack:///./src/resources/fundingLogos/pp_blue.svg","webpack:///./src/resources/fundingLogos/pp_black.svg","webpack:///./src/resources/fundingLogos/venmo_white.svg","webpack:///./src/resources/fundingLogos/itau.svg","webpack:///./src/resources/fundingLogos/venmo_blue.svg","webpack:///./src/resources/fundingLogos/elv.svg","webpack:///./src/resources/fundingLogos/elv_white.svg","webpack:///./src/resources/cardLogos/visa.svg","webpack:///./src/resources/cardLogos/amex.svg","webpack:///./src/resources/cardLogos/mastercard.svg","webpack:///./src/resources/cardLogos/maestro.svg","webpack:///./src/resources/cardLogos/discover.svg","webpack:///./src/resources/cardLogos/hiper.svg","webpack:///./src/resources/cardLogos/elo.svg","webpack:///./src/resources/cardLogos/jcb.svg","webpack:///./src/resources/cardLogos/cup.svg","webpack:///./node_modules/form-serialize/index.js","webpack:///./src/load.js","webpack:///./node_modules/post-robot/src/bridge/interface.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///(webpack)/buildin/amd-define.js","webpack:///./src/billing/template/containerTemplate.jsx","webpack:///./src/billing/index.js","webpack:///./src/threeDomainSecure/index.js","webpack:///./src/external/pptm-factory.js","webpack:///./src/external/pptm.js","webpack:///./src/external/index.js","webpack:///./src/api/rest.js","webpack:///./src/experiments.js","webpack:///./src/integrations/popupBridge.js","webpack:///./src/funding/config.js","webpack:///./src/funding/funding.js","webpack:///./src/button/config.js","webpack:///./src/button/props.js","webpack:///./src/button/validate.js","webpack:///./src/button/template/componentStyle/class.js","webpack:///./src/button/template/componentStyle/page.js","webpack:///./src/button/template/componentStyle/button.js","webpack:///./src/button/template/componentStyle/layout.js","webpack:///./src/button/template/componentStyle/branding.js","webpack:///./src/button/template/componentStyle/labels.js","webpack:///./src/button/template/componentStyle/responsive.js","webpack:///./src/button/template/componentStyle/color.js","webpack:///./src/button/template/componentStyle/base.js","webpack:///./src/button/template/componentStyle/index.js","webpack:///./src/button/template/miscComponent.jsx","webpack:///./src/button/template/componentScript.js","webpack:///./src/button/template/content.js","webpack:///./src/button/template/componentTemplate.jsx","webpack:///./src/button/template/containerTemplate.jsx","webpack:///./src/button/template/index.js","webpack:///./src/button/child.js","webpack:///./src/button/component.jsx","webpack:///./src/hacks.js","webpack:///./src/card/index.js","webpack:///./src/setup.js","webpack:///./src/interface.js","webpack:///./src/index.js","webpack:///./src/legacy/constants.js","webpack:///./src/legacy/postBridge.js","webpack:///./src/legacy/eligibility.js","webpack:///./src/legacy/common.js","webpack:///./src/legacy/button.js","webpack:///./src/legacy/util.js","webpack:///./src/legacy/options.js","webpack:///./src/legacy/interface.js","webpack:///./src/legacy/ready.js","webpack:///./src/legacy/index.js"],"names":["BUTTON_STYLE_OPTIONS","LABEL","SIZE","SHAPE","COLOR","LAYOUT","MAXBUTTONS","FUNDINGICONS","BRANDING","TAGLINE","HEIGHT","INSTALLMENTPERIOD","BUTTON_LABEL","PAYPAL","CHECKOUT","PAY","CREDIT","CARD","BUYNOW","INSTALLMENT","VENMO","ITAU","IDEAL","ELV","BANCONTACT","GIROPAY","SOFORT","EPS","MYBANK","P24","PAYU","VERKKOPANKKI","BLIK","TRUSTLY","MAXIMA","BOLETO","OXXO","BUTTON_COLOR","GOLD","BLUE","SILVER","BLACK","DARKBLUE","WHITE","TRANSPARENT","BUTTON_LOGO_COLOR","ANY","BUTTON_SIZE","TINY","SMALL","MEDIUM","LARGE","HUGE","RESPONSIVE","BUTTON_TAGLINE_COLOR","BUTTON_SHAPE","PILL","RECT","BUTTON_BRANDING","BRANDED","UNBRANDED","BUTTON_LAYOUT","HORIZONTAL","VERTICAL","BUTTON_NUMBER","SINGLE","MULTIPLE","BUTTON_LOGO","PP","CHECKOUT_OVERLAY_COLOR","FUNDING","ZIMPLER","VISA","MASTERCARD","AMEX","DISCOVER","SWITCH","MAESTRO","HIPER","ELO","JCB","CUP","COFINOGA","COFIDIS","CETELEM","CBNATIONALE","FUNDING_ELIGIBILITY_REASON","PRIMARY","NOT_ENABLED","SECONDARY_DISALLOWED","OPT_OUT","OPT_IN","DISALLOWED_COUNTRY","DEFAULT_COUNTRY","DEFAULT","REMEMBERED","NEED_OPT_IN","COMMIT_NOT_SET","INVALID_ENV","CARD_PRIORITY","ENV","LOCAL","STAGE","SANDBOX","PRODUCTION","TEST","DEMO","USERS","ALL","SOURCE","MANUAL","BUTTON_FACTORY","LOG_LEVEL","DEBUG","INFO","WARN","ERROR","PAYMENT_TYPE","EC_TOKEN","BA_TOKEN","PAY_ID","PPTM_ID","ATTRIBUTE","BUTTON","FUNDING_SOURCE","VERSION","PLATFORM","DESKTOP","MOBILE","FPTI","KEY","FEED","STATE","TRANSITION","BUTTON_TYPE","SESSION_UID","BUTTON_SESSION_UID","TOKEN","CONTEXT_ID","CONTEXT_TYPE","REFERER","SELLER_ID","DATA_SOURCE","BUTTON_SOURCE","ERROR_CODE","ERROR_DESC","PAGE_LOAD_TIME","EXPERIMENT_NAME","TREATMENT_NAME","TRANSITION_TIME","FUNDING_LIST","FUNDING_COUNT","CHOSEN_FUNDING","BUTTON_WIDTH","MAX_BUTTONS","FUNDING_REMEMBERED","BUTTON_TAGLINE_ENABLED","RESPONSE_DURATION","PAYMENT_FLOW","BUTTON_VERSION","IFRAME","HTML","CUSTOM","BUTTON_SESSION_ID","CHECKOUTJS","LOAD","PPTM","SCRIPT_LOAD","BUTTON_RENDER","BUTTON_LOAD","BUTTON_CLICK","BUTTON_RENDER_INTRANET_MODE","BUTTON_CLICK_INTRANET_MODE","CREATE_PAYMENT","RECIEVE_PAYMENT","CHECKOUT_INIT","CHECKOUT_AUTHORIZE","CHECKOUT_SHIPPING_CHANGE","CHECKOUT_CANCEL","CHECKOUT_ERROR","EXTERNAL_EXPERIMENT","EXTERNAL_EXPERIMENT_COMPLETE","PPTM_LOAD","PPTM_LOADED","COUNTRY","AD","AE","AG","AI","AL","AM","AN","AO","AR","AT","AU","AW","AZ","BA","BB","BE","BF","BG","BH","BI","BJ","BM","BN","BO","BR","BS","BT","BW","BY","BZ","C2","CA","CD","CG","CH","CI","CK","CL","CM","CN","CO","CR","CV","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GI","GL","GM","GN","GP","GR","GT","GW","GY","HK","HN","HR","HU","ID","IE","IL","IN","IS","IT","JM","JO","JP","KE","KG","KH","KI","KM","KN","KR","KW","KY","KZ","LA","LC","LI","LK","LS","LT","LU","LV","MA","MC","MD","ME","MG","MH","MK","ML","MN","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PL","PM","PN","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","ST","SV","SZ","TC","TD","TG","TH","TJ","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","US","UY","VA","VC","VE","VG","VN","VU","WF","WS","YE","YT","ZA","ZM","ZW","LANG","CS","DA","EL","EN","HE","JA","KO","ZH","LANG_TO_DEFAULT_COUNTRY","ALLOWED_INSTALLMENT_COUNTRIES","ALLOWED_INSTALLMENT_PERIOD","LOCALE","htmlEncode","html","toString","replace","JsxHTMLNode","name","props","children","propsToString","childrenToString","Object","keys","filter","key","map","join","innerHTML","result","iterate","child","undefined","Array","isArray","JsxHTMLNodeContainer","jsxToHTML","jsxRender","template","renderers","nodes","regexMap","match","type","value","text","Error","trim","test","break","isPromise","item","Promise","window","Window","constructor","call","then","err","dispatchedErrors","possiblyUnhandledPromiseHandlers","dispatchPossiblyUnhandledError","promise","indexOf","push","setTimeout","__DEBUG__","j","length","onPossiblyUnhandledException","handler","cancel","splice","activeCount","flushPromise","flushActive","resolve","startActive","endActive","awaitActive","Zalgo","ZalgoPromise","resolved","rejected","errorHandled","error","handlers","dispatching","stack","isAsync","res","reject","dispatch","prototype","asyncReject","chain","firstPromise","secondPromise","i","onSuccess","onError","catch","finally","onFinally","try","timeout","time","clearTimeout","toPromise","TypeError","all","promises","count","results","prom","hash","items","method","context","args","apply","delay","flush","proxyMethod","win","originalMethod","getDomain","config","paypalDomain","isSameDomain","send","noop","methods","on","domain","paypal_domain_regex","data","postMessageProxy","isWindowClosed","source","arguments","getRefererDomain","xchild","getParentDomain","location","host","setupProxyLogTransport","once","setTransport","getParent","getTransport","getToken","root","token","isPayPalDomain","queryToken","getQueryParam","initLogger","addPayloadBuilder","referer","path","pathname","env","country","locale","lang","uid","getSessionID","ver","__PAYPAL_CHECKOUT__","__MINOR_VERSION__","addHeaderBuilder","addMetaBuilder","state","addTrackingBuilder","payload","sessionID","paymentToken","buttonSessionID","getButtonSessionID","contextType","contextID","merchantID","version","prefix","protocol","PROTOCOL","FILE","init","uri","loggerUrl","heartbeat","logPerformance","logLevel","__DEFAULT_LOG_LEVEL__","setLogLevel","logLevels","loggerConfig","POSTROBOT_CONFIG","bowserCache","getBowser","userAgent","getUserAgent","require","bowser","getBrowser","SUPPORTED_BROWSERS","browser","isBrowserEligible","isIEIntranet","compareVersions","eligibilityResults","isEligible","navigator","hasOwnProperty","checkRecognizedBrowser","mobile","android","ios","info","flushLogs","logWarn","console","warn","log","checkForCommonErrors","JSON","stringify","toJSON","isIE","isIECompHeader","message","foo","bar","baz","zomg","bind","a","opener","parent","returnContext","assign","b","c","HEADERS","CONTENT_TYPE","ACCEPT","headerBuilders","corrids","prev_corr_ids","parseHeaders","rawHeaders","split","line","values","toLowerCase","request","url","headers","json","body","normalizedHeaders","headerBuilder","builtHeaders","xhr","XMLHttpRequest","addEventListener","xhrLoad","responseHeaders","getAllResponseHeaders","corrID","status","contentType","isJSON","responseText","parse","xhrError","evt","getResponseHeader","open","setRequestHeader","encodeURIComponent","ontimeout","xhrTimeout","get","options","post","getThrottlePercentile","getStorageState","storage","throttlePercentiles","Math","floor","random","THROTTLE_GROUP","CONTROL","THROTTLE","getThrottle","sample","sticky","getStorageID","percentile","group","treatment","started","forced","localStorage","getItem","isEnabled","isDisabled","getTreatment","checkpointName","checkpoint","expuid","track","logStart","logComplete","getReturnToken","href","payer","getCurrentScript","memoize","scripts","slice","document","getElementsByTagName","script","src","scriptUrl","hasAttribute","currentScript","debug","isPayPalObjects","Boolean","getScriptVersion","__MIN__","getCurrentScriptUrl","getDomainSetting","def","hostname","domain_settings","domainMatches","openMetaFrame","iframeEligible","iframeEligibleReason","rememberedFunding","metaFrameUrl","metaFrameUrls","metaFrameDomain","paypalDomains","bridge","metaListener","openBridge","extendUrl","getRememberedFunding","identity","hasRememberedFunding","getSessionState","session","recentlyCheckedRemembered","isRememberedFunding","getRememberedFundingPromises","getGlobalState","global","rememberFundingPromises","getRememberedFundingPromise","flushRememberedFundingPromises","sources","rememberFunding","isDevice","loadMeta","isFundingRemembered","precacheRememberedFunding","getDefaultEnv","__TEST__","locales","__FILE_NAME__","cors","stage","stageDomain","stageUrl","apiStageUrl","apiStage","localhostUrl","ports","default","val","authCode","throttles","v4_mobile_device","ie_full_page","allow_full_page_fallback","memoize_payment","force_bridge","log_authorize","disable_venmo","creditTestDomains","customCountry","msie","firefox","chrome","safari","opera","msedge","samsungBrowser","silk","ucbrowser","vivaldi","session_uid_lifetime","_apiStage","button","checkout","guest","altpay","paypalUrls","port","wwwApiUrls","corsApiUrls","apiUrls","local","sandbox","production","checkoutUri","checkoutUris","altpayUris","guestUris","billingUris","buttonUris","inlinedCardFieldUris","postBridgeUris","legacyCheckoutUris","buttonJSUrls","buttonJSUrl","loginUri","hermesLoggerUri","loggerUri","loggerThrottlePercentage","pptmUri","postBridgeUri","paymentStandardUri","authApiUri","paymentApiUri","orderApiUri","billingApiUri","experienceApiUri","trackingApiUri","checkoutUrls","demo","guestUrls","altpayUrls","billingUrls","buttonUrls","inlinedCardFieldUrls","loginUrls","paymentsStandardUrls","legacyCheckoutUrls","authApiUrls","paymentApiUrls","orderApiUrls","billingApiUrls","experienceApiUrls","trackingApiUrls","_paypalUrl","paypalUrl","corsApiUrl","wwwApiUrl","apiUrl","checkoutUrl","billingUrl","buttonUrl","legacyCheckoutUrl","postBridgeUrl","postBridgeDomain","isTestExperiment","pptmUrl","authApiUrl","paymentApiUrl","orderApiUrl","billingApiUrl","experienceApiUrl","defaultLocale","extend","dest","over","isSameProtocol","ajax","fireAndForget","XRequest","ActiveXObject","XDomainRequest","req","toUpperCase","headerName","onreadystatechange","readyState","promiseDebounce","interval","debounce","resolver","rejector","onWindowReady","safeInterval","loop","uniqueID","chars","charAt","documentMode","payloadBuilders","metaBuilders","trackingBuilders","builder","initial_state_name","flushInterval","debounceInterval","sizeLimit","silent","heartbeatConsoleLog","heartbeatInterval","heartbeatTooBusy","heartbeatTooBusyThreshold","autoLog","logUnload","buffer","tracking","transport","newTransport","loaded","print","level","event","warning","immediateFlush","hasBuffer","hasTracking","meta","events","enqueue","timestamp","Date","now","enablePerformance","performance","timing","connectEnd","navigationStart","abs","timer","startTime","elapsed","parseInt","reset","reqStartElapsed","clientTimer","reqTimer","initHeartBeat","heartBeatTimer","heartbeatCount","heartbeatMaxThreshold","lag","heartbeatPayload","noConsole","initPerformance","client_elapsed","req_elapsed","forEach","offset","memory","navigation","getEntries","resource","initiatorType","initiated","conf","setInterval","beaverLogQueue","windowID","pageID","currentState","startTransition","endTransition","toState","currentTime","elapsedTime","transitionName","duration","transition","transition_time","INTERFACE","urlEncode","str","camelToDasherize","string","g","dasherizeToCamel","obj","stringifyWithFunctions","safeGet","prop","capitalizeFirstLetter","pathParts","runInterval","safeTimeout","each","callback","len","replaceObject","replacers","fullKey","defineProperty","configurable","enumerable","itemKey","replacer","replaced","set","copyProp","target","descriptor","getOwnPropertyDescriptor","dotify","newobj","every","objectIDs","WeakMap","getObjectID","regex","pattern","start","RegExp","index","groups","end","regexAll","matches","substr","startIndex","itemCount","stringifyError","eventEmitter","triggered","eventName","handlerList","cancelled","listener","trigger","triggerOnce","called","onceWrapper","memoizeWrapper","cacheKey","debounceWrapper","serializeFunctions","__type__","deserializeFunctions","deserializedFunctionWrapper","self","appendChild","container","isElement","element","Element","nodeType","style","ownerDocument","querySelectorAll","el","selector","getElementSafe","id","getElementById","querySelector","getElement","documentReady","clearInterval","isDocumentReady","elementReady","popup","params","PopupOpenError","writeToWindow","write","close","err2","writeElementToWindow","tag","tagName","documentElement","removeChild","setStyle","styleText","doc","styleSheet","cssText","createTextNode","createElement","class","className","attributes","setAttribute","contentWindow","awaitFrameLoadPromises","awaitFrameLoad","frame","has","linkFrameWindow","awaitFrameWindow","loadedFrame","iframe","frameBorder","allowTransparency","backgroundColor","removeEventListener","scanForJavascript","parseQuery","queryString","pair","decodeURIComponent","search","formatQuery","extendQuery","originalQuery","query","originalUrl","originalHash","hashString","elementStoppedMoving","getBoundingClientRect","top","bottom","left","right","width","height","getCurrentDimensions","offsetWidth","offsetHeight","changeStyle","styles","setOverflow","overflow","overflowX","overflowY","dimensionsDiff","one","two","threshold","trackDimensions","currentDimensions","check","newDimensions","changed","dimensions","onDimensionsChange","tracker","onWindowResize","dimensionsMatchViewport","innerWidth","innerHeight","bindEvents","eventNames","VENDOR_PREFIXES","setVendorCSS","capitalizedName","CSSRule","KEYFRAMES_RULE","WEBKIT_KEYFRAMES_RULE","MOZ_KEYFRAMES_RULE","O_KEYFRAMES_RULE","MS_KEYFRAMES_RULE","isValidAnimation","stylesheets","styleSheets","cssRules","cssRule","ANIMATION_START_EVENTS","ANIMATION_END_EVENTS","animate","clean","hasStarted","startTimeout","endTimeout","startEvent","endEvent","cleanUp","animationName","stopPropagation","STYLE","DISPLAY","NONE","BLOCK","VISIBILITY","VISIBLE","HIDDEN","IMPORTANT","makeElementVisible","setProperty","makeElementInvisible","showElement","hideElement","destroyElement","parentNode","showAndAnimate","animation","animateAndHide","addClass","classList","add","removeClass","remove","getCurrentScriptDir","getElementName","isElementClosed","watchElementForClose","getHttpType","onload","onerror","getHTML","getCSS","getScript","prefetchPage","JSX_EVENTS","onClick","fixScripts","newScript","textContent","replaceChild","jsxDom","content","textNode","denodeify","denodeifyWrapper","promisify","promisifyWRapper","cycle","isPerc","isPx","toNum","toPx","toCSS","percOf","num","perc","normalizeDimension","dim","max","memoized","memoizedFunction","__memoized__","displayName","promisifiedFunction","CONFIG","logInfo","logError","globalFor","__ZOID__","localGlobal","isRegex","MOCK","ABOUT","WILDCARD","WINDOW_TYPE","POPUP","IE_WIN_ACCESS_ERROR","isFileProtocol","isAboutProtocol","getOpener","canReadFromWindow","getActualDomain","mockDomain","isBlankDomain","isActuallySameDomain","desc","assertSameDomain","getParents","isAncestorParent","childParent","getFrames","frames","getAllChildFrames","childFrame","getTop","getNextOpener","getUltimateTop","getAllFramesInWindow","getAllWindows","isTop","isFrameWindowClosed","contains","safeIndexOf","collection","iframeWindows","iframeFrames","allowMock","closed","mockclosed","iframeIndex","cleanIframes","mockUserAgent","getFrameByName","winFrames","findChildFrameByName","namedFrame","findFrameByName","isParent","frameParent","isOpener","getAncestor","getAncestors","ancestor","isAncestor","actualParent","isPopup","isIframe","isFullpage","anyMatch","collection1","collection2","item1","item2","getDistanceFromTop","distance","getNthParent","n","getNthParentFromTop","isSameTopWindow","win1","win2","top1","top2","allFrames1","allFrames2","opener1","opener2","matchDomain","origin","some","subpattern","stringifyDomainPattern","getDomainFromUrl","onCloseWindow","maxtime","Infinity","isWindow","__cross_domain_utils_window_check__","isBrowser","isCurrentDomain","isMockDomain","normalizeMockUrl","closeWindow","getFrameForWindow","frameElement","TYPES","ZOID","POST_MESSAGE","INIT","PROPS","PROP_CALLBACK","CLOSE","CHECK_CLOSE","REDIRECT","RESIZE","DELEGATE","ALLOW_DELEGATE","HIDE","SHOW","PROP_TYPES","STRING","OBJECT","FUNCTION","BOOLEAN","NUMBER","INITIAL_PROPS","RAW","UID","WINDOW_REFERENCES","OPENER","TOP","PARENT","GLOBAL","PROP_TYPES_LIST","CONTEXT_TYPES","CLASS_NAMES","OUTLET","COMPONENT_FRAME","PRERENDER_FRAME","INVISIBLE","EVENTS","ATTRIBUTES","IFRAME_PLACEHOLDER","ANIMATION_NAMES","SHOW_CONTAINER","SHOW_COMPONENT","HIDE_CONTAINER","HIDE_COMPONENT","EVENT_NAMES","CLICK","CLOSE_REASONS","PARENT_CALL","CHILD_CALL","CLOSE_DETECTED","USER_CLOSED","PARENT_CLOSE_DETECTED","CONTEXT_TYPES_LIST","CALL_ORIGINAL","CALL_DELEGATE","DEFAULT_DIMENSIONS","WIDTH","CONSTANTS","WINDOW_PROPS","POSTROBOT","registerSelf","POST_MESSAGE_TYPE","REQUEST","RESPONSE","ACK","POST_MESSAGE_ACK","SUCCESS","POST_MESSAGE_NAMES","METHOD","HELLO","OPEN_TUNNEL","WINDOW_TYPES","FULLPAGE","SERIALIZATION_TYPES","PROMISE","ZALGO_PROMISE","REGEX","SEND_STRATEGIES","BRIDGE","MOCK_PROTOCOL","FILE_PROTOCOL","BRIDGE_NAME_PREFIX","POSTROBOT_PROXY","POST_MESSAGE_NAMES_LIST","ALLOW_POSTMESSAGE_POPUP","__ALLOW_POSTMESSAGE_POPUP__","__POST_ROBOT__","BRIDGE_TIMEOUT","CHILD_WINDOW_TIMEOUT","ACK_TIMEOUT","RES_TIMEOUT","ALLOWED_POST_MESSAGE_METHODS","ALLOW_SAME_ORIGIN","_extends","moduleGlobal","getGlobal","cache","glob","__CACHE_START_TIME__","hashStr","charCodeAt","pow","sqrt","strHashStr","total","String","fromCharCode","regmatch","safeJSON","listeners","listen","onceListener","awaitKey","newErr","stringifyErrorMessage","defaultMessage","patchMethod","original","patchedMethod","callOriginal","isObject","deepExtend","hasValue","arr","sortBy","order","sort","reverseMap","arrayRemove","pixels","percentage","round","min","regexMapMatcher","SEND_MESSAGE_STRATEGIES","serializedMessage","emulateIERestrictions","domains","dom","postMessage","sendBridgeMessage","needsBridgeForBrowser","isBridge","needsGlobalMessagingForBrowser","foreignGlobal","receiveMessage","buildMessage","getWindowType","sourceDomain","windowType","sendMessage","serializeMethods","messages","jsonStringify","strategyName","success","resetListeners","responseListeners","requestListeners","WINDOW_WILDCARD","WindowWildcard","erroredResponseListeners","__DOMAIN_REGEX__","addResponseListener","getResponseListener","deleteResponseListener","markResponseListenerErrored","isResponseListenerErrored","getRequestListener","nameListeners","winQualifier","winListeners","addRequestListener","listenersCollection","cancelListener","existingListener","strDomain","regexListeners","regexListener","delete","RECEIVE_MESSAGE_TYPES","ack","respond","originalSource","code","handleError","response","receivedMessages","parseMessage","parsedMessage","jsonParse","deserializeMethods","messageListener","messageEvent","sourceElement","originalEvent","listenForMessages","requestPromises","targetWindow","HTMLIFrameElement","hasResult","requestPromise","onChildWindowReady","sayHello","actualDomain","responseListener","ackTimeout","resTimeout","cycleTime","hasAck","sendToParent","client","listenerOptions","errorHandler","requestListener","onceFunction","listenOnce","errorOnClose","disable","cleanUpWindow","popupWindowsByWin","remoteWindows","readyPromises","initialized","openTunnelToOpener","initOnReady","listenForMethods","attachEvent","detachEvent","eachArray","eachObject","depth","childItem","weakMapMemoize","weakmap","weakmapMemoized","arg","indent","objectToJSON","arrayToJSON","meth","isSerialized","serializeMethod","destination","__id__","__name__","serializeError","__message__","__code__","serializePromise","__then__","serializeZalgoPromise","serializeRegex","__source__","deserializeMethod","wrapper","__xdomain__","deserializeError","deserializeZalgoPromise","deserializePromise","deserializeRegex","onHello","onAuthorize","onLegacyPaymentAuthorize","postBridge","watchForLegacyFallback","isLegacy","ppxoWatching","XMLHttpRequestsend","overrideXMLHttpRequestSend","_patched","DONE","returnUrl","billingToken","payerID","paymentID","Checkout","XhrResponse","RESPONSE_TYPES","mob","Xhr","_xhrOnReady","onLegacyFallback","addHeader","$Api","create","scrolling","buildUrl","payment","determineUrl","fundingSource","unsafeRenderTo","bridgeUrl","bridgeDomain","contexts","supportsPopups","validate","prerenderTemplate","componentTemplate","containerTemplate","required","queryParam","xprops","allowDelegate","getBrowserLocale","sendToChild","determineParameterFromToken","queryValue","childDecorate","alias","overlayColor","commit","experience","fundingOffered","elements","fundingSources","getAttribute","decorate","decorateOnAuthorize","actions","intent","closeComponent","redirect","redir","isButton","isGuest","access_token","onShippingChange","onAuth","sameDomain","wrapOnAuth","accessToken","onCancel","decorateOnCancel","cancelUrl","decorateInit","onClose","decorateOnClose","reason","shouldCancel","fallback","defaultFallback","__test__","action","sdkMeta","base64encode","isChild","onProps","injector","instance","payment_action","_context","isWebView","isStandAlone","standalone","matchMedia","isFacebookWebView","ua","isFirefoxIOS","isEdgeIOS","isOperaMini","isAndroid","isIos","isGoogleSearchApp","isQQBrowser","isIosWebview","isAndroidWebview","mHttp","mContent","isElectron","process","versions","electron","isMacOsCna","isChrome","isSafari","getFunctionName","fn","setFunctionName","btoa","m","p1","Buffer","from","base64decode","atob","randomID","timeID","toISOString","__GLOBAL__","serializeArgs","subkey","cacheMap","getOrSet","thisNamespace","cacheTime","promiseIdentity","memoizePromise","memoizedPromiseFunction","inlineMemoize","logic","__inline_memoize_cache__","regexp","svgToBase64","svg","objFilter","regexTokenize","promiseDebounced","localPromise","isInteger","isFloat","serializePrimitive","deserializePrimitive","parseFloat","undotify","keyResult","parts","part","isLast","isIndex","defineLazyProp","getter","arrayFrom","isObjectObject","isPlainObject","isDefined","weakMapMemoizePromise","weakmapMemoizedPromise","cleanup","tasks","cleaned","register","task","pop","tryCatch","removeFromArray","assertExists","thing","unique","KEY_CODES","ENTER","waitForWindowReady","waitForDocumentReady","waitForDocumentBody","urlWillRedirectPage","hasMetaViewPort","screen","isElementVisible","getClientRects","getPageRenderTime","domInteractive","keyCode","isLocalStorageEnabled","setItem","removeItem","getBrowserLocales","nav","languages","language","userLanguage","outerWidth","screenX","outerHeight","screenY","toolbar","menubar","resizable","scrollbars","border","onResize","currentWidth","currentHeight","newWidth","newHeight","observer","ResizeObserver","observe","MutationObserver","childList","subtree","characterData","disconnect","getResourceLoadTime","entries","entry","DEFAULT_SESSION_STORAGE","getStorage","lifetime","STORAGE_KEY","accessedStorage","getState","localStorageEnabled","rawStorage","getID","getSession","__session__","created","guid","getBelterExperimentStorage","isEventUnique","loggedBeacons","experiment","logTreatment","logCheckpoint","throttle","getGlobalNameSpace","globalKey","namespace","defValue","responseBody","wrapPromise","expected","expect","expectWrapper","avoid","avoidWrapper","expectError","expectErrorWrapper","drain","hasNativeWeakMap","freeze","testWeakMap","testKey","testValue","CrossDomainSafeWeakMap","_cleanupClosedWindows","isSafeToReadWrite","writable","P24_LOGO_COLORS","primary","secondary","p24Logo","logoColor","SOFORT_LOGO_COLORS","sofortLogo","IDEAL_LOGO_COLORS","tertiary","idealLogo","GIROPAY_LOGO_COLORS","giropayLogo","EPS_LOGO_COLORS","epsLogo","MYBANK_LOGO_COLORS","mybankLogo","BANCONTACT_LOGO_COLORS","bancontactLogo","PAYU_LOGO_COLORS","quaternary","payuLogo","VERKKOPANKKI_LOGO_COLORS","quinary","senary","verkkopankkiLogo","BLIK_LOGO_COLORS","blikLogo","TRUSTLY_LOGO_COLORS","trustlyLogo","MAXIMA_LOGO_COLORS","maximaLogo","BOLETO_LOGO_COLORS","boletoLogo","OXXO_LOGO_COLORS","oxxoLogo","PAYPAL_LOGO_COLORS","paypalLogo","CREDIT_LOGO_COLORS","creditLogo","fundingLogos","pp_white","pp_blue","pp_black","venmo_white","venmo_blue","itau","elv","elv_white","cardLogos","visa","amex","mastercard","maestro","discover","hiper","elo","jcb","cup","LOCAL_STORAGE_KEY","SESSION_KEY","GLOBAL_KEY","querySessionID","_assertThisInitialized","ReferenceError","_applyDecoratedDescriptor","property","decorators","initializer","reverse","reduce","decorator","complete","run","hasTasks","BaseComponent","component","addProp","createError","listenerName","errorListener","normalize","encode","base32","decode","buildChildWindowName","encodedName","encodedVersion","encodedOptions","isZoidComponentWindow","zoidcomp","getComponentMeta","componentMeta","getWindowByRef","ref","windows","getParentComponentWindow","componentParent","getParentRenderWindow","renderParent","getPosition","x","y","normalizeChildProp","getProp","looseProps","normalizeChildProps","getPropNames","ChildComponent","onPropHandlers","onInit","watchingForResize","autoResize","hasValidParentDomain","RenderError","setProps","getInitialProps","setWindows","exports","watchForResize","allowedParentDomains","parentComponentWindow","func","normalizedProps","parentWindow","__activeZoidComponent__","watchForClose","checkClose","enableAutoResize","getAutoResize","resize","updateProps","destroy","hide","show","userClose","focus","stringifiedError","_defineProperties","_createClass","Constructor","protoProps","staticProps","RENDER_DRIVERS","focusable","renderedIntoContainerTemplate","allowResize","openOnClick","needsBridge","childWindowName","title","frameWindow","detectClose","iframeWatcher","elementWatcher","openPrerender","prerenderIframe","prerenderFrameWindow","prerenderWindow","switchPrerender","delegateOverrides","openContainer","destroyComponent","destroyContainer","cancelContainerEvents","createPrerenderTemplate","showContainer","showComponent","hideContainer","hideComponent","loadUrl","hijackSubmit","renderTemplate","openContainerFrame","getOutlet","override","overrideOpen","validateProp","hasProp","isNaN","validateProps","normalizeProp","resultValue","decorated","normalizeProps","normalizedProp","getQueryValue","propsToQuery","propsDef","serialization","dotkey","escape","ParentComponent","handledErrors","outlet","childExports","validateParentDomain","renderTo","registerActiveComponent","watchForUnload","render","tryInit","onRender","driver","linkDomain","linkUrl","loadHTML","runTimeout","onEnter","checkAllowRenderTo","delegate","prefetch","activeComponents","getComponentParentRef","getRenderParentRef","renderToWindow","childDomain","sProps","getPropsForChild","secureProps","propUrl","builtinProps","getValidDomain","getUrl","finalUrl","xcomponent","builtUrl","needsBridgeParams","getBridgeUrl","hasBridge","getBridgeDomain","windowName","onDisplay","propName","overrides","overridenFunction","closeWindowListener","onunload","unloadWindowListener","hijack","targetElement","onTimeout","closeContainer","renderer","CLASS","ANIMATION","CONTEXT","EVENT","errErr","destroyAll","DelegateComponent","getOverrides","delegateOverride","validatePropDefinitions","anyEnabled","defaultContext","defaultEnv","defaultContainerTemplate","defaultPrerenderTemplate","getInternalProps","defaultLogLevel","drivers","angular","angular2","glimmer","react","vue","Component","listenForResize","driverCache","components","registerDrivers","registerChild","listenDelegate","driverName","dep","canRenderTo","getForEnv","envUrl","isZoidComponent","getRenderContext","validateRenderContext","getDefaultContext","renderIframe","renderPopup","renderIframeTo","renderPopupTo","prerender","innerProps","innerElement","logWarning","getByTag","postRobot","_postRobot","_CONSTANTS","isInsidePopup","isIE11","_inheritsLoose","subClass","superClass","__proto__","tunnelWindows","tunnelWindowId","deleteTunnelWindow","cleanTunnelWindows","tunnelWindow","addTunnelWindow","canary","getTunnelWindow","openTunnelToParent","needsBridgeForWin","needsBridgeForDomain","getBridgeName","sanitizedDomain","documentBodyReady","registerRemoteWindow","sendMessagePromise","findRemoteWindow","registerRemoteSendMessage","remoteWindow","sendMessageWrapper","remoteWin","remoteDomain","rejectRemoteSendMessage","messagingChild","messagingParent","awaitRemoteBridgeForWindow","bridges","bridgeFrames","popupWindowsByName","listenForRegister","winDetails","openBridgeFrame","windowOpen","windowOpenWrapper","last","winName","winOptions","destroyBridges","documentBody","loadScript","attrs","scriptOnReadyStateChange","scriptLoadError","attr","head","isNodeList","HTMLElement","getElements","NodeList","HTMLCollection","onDocumentReady","hasHash","serverUrl","originalQueryString","newQueryString","newUrl","normalizeLocale","normalizeLang","loc","IntegrationError","allowIframe","awaitBraintreeClient","braintree","auth","authorization","paypalCheckout","SUPPORTED_REST_FIELDS","transactions","amount","currency","external_selected_funding_instrument_type","shipping_address","line1","line2","city","postal_code","country_code","phone","recipient_name","application_context","brand_name","shipping_preference","landing_page","supported","supportedKeys","mapPaymentToBraintree","btPayment","flow","offerCredit","shippingAddressOverride","postalCode","countryCode","recipientName","landingPageType","enableShippingAddress","shippingAddressEditable","BEACON_URL","APP_NAME","beacon","appName","beaconImage","Image","isCheckpointUnique","FPTI_URL","buildPayload","v","t","getTimezoneOffset","flnm","shir","pgrp","page","vers","qual","tmpl","fpti","checkoutComponentStyle","getContainerStyle","getSandboxStyle","LOGO_COLOR","containerContent","preventDefault","alert","ppLogo","pp","paypal","windowMessage","continue","getPaymentType","paymentType","extendNamespace","xports","namespaces","childnamespaces","childname","childnamespace","NODE_JS","HI_BASE32_NO_NODE_JS","node","COMMON_JS","HI_BASE32_NO_COMMON_JS","module","AMD","define","BASE32_ENCODE_CHAR","BASE32_DECODE_CHAR","blocks","throwInvalidUtf8","position","partial","toUtf8String","bytes","followingChars","decodeAsBytes","base32Str","v1","v2","v3","v4","v5","v6","v7","v8","remain","encodeAscii","encodeUtf8","encodeBytes","input","asciiOnly","notString","ArrayBuffer","Uint8Array","asBytes","innerText","eval","scan","scriptTags","React","ReactDOM","createClass","componentDidMount","findDOMNode","setState","componentDidUpdate","componentWillUnmount","inheritAttrs","mounted","$el","$attrs","beforeUpdate","ng","directive","scope","restrict","controller","$scope","$element","safeApply","$root","$$phase","$apply","getProps","scopeProps","angularWrapped","$watch","GlimmerComponent","didInsertElement","zoid","AngularComponent","NgModule","ElementRef","NgZone","internalProps","angular2Wrapped","zone","ComponentInstance","inputs","Class","angularConstructor","elementRef","ngOnInit","nativeElement","ngOnChanges","ModuleInstance","declarations","e","r","C","o","u","f","l","h","p","d","w","E","S","T","N","whale","mzbrowser","coast","yandexbrowser","maxthon","epiphany","puffin","sleipnir","kMeleon","osname","windowsphone","chromeos","chromeBook","sailfish","seamonkey","firefoxos","phantom","slimer","blackberry","webos","touchpad","bada","tizen","qupzilla","chromium","googlebot","blink","webkit","gecko","mac","xbox","linux","k","osversion","L","tablet","s","isUnsupportedBrowser","_detect","detect","sourceWindow","k_r_submitter","k_r_success_contrls","brackets","serialize","form","serializer","hash_serializer","str_serialize","radio_store","disabled","nodeName","checked","empty","selectOptions","isSelectedOptions","option","allowedEmpty","selected","parse_keys","exec","hash_assign","shift","between","_values","existing","Button","existingVersion","_interface","errtype","containerStyle","BillingPage","cardType","prefilledZipCode","onEvent","ThreeDomainSecure","challengeUrl","threeDomainSecureToken","shouldCreateInitialPptmScript","existingScript","alreadyDownloaded","removePptm","pptmFactory","noContentFoundInContainer","reloadPptmScript","clientId","tryCreatePptmScript","shouldReloadPptmScript","createPptmScript","listenForLoadWithNoContent","listenForButtonRender","paypalDDL","buttonRenderEvent","mrid","client_id","fullUrl","async","pptm","proxyRest","createAccessToken","clientID","basicAuth","Authorization","grant_type","createExperienceProfile","experienceDetails","temporary","logPaymentResponse","links","rel","getDefaultReturnUrl","createTracking","trackingData","trackingID","createPayment","paymentDetails","redirect_urls","return_url","cancel_url","payment_method","experienceID","experience_profile_id","partner_attribution_id","createOrder","purchase_units","unit","reference_id","createBillingAgreement","billingDetails","plan","merchant_preferences","token_id","rest","billingAgreement","PROXY_REST","parentWin","onAuthorizeListener","loggedEvents","loggedExperimentEvents","duplicate","edge","logExperimentTreatment","externalExperiment","externalExperimentTreatment","externalExperimentToken","logReturn","returnToken","OPTYPE","PAYMENT","CANCEL","CONTINGENCY","PAYMENT_CANCELLED","wrapPopupBridge","popupBridge","onComplete","redirect_uri","getReturnUrlPrefix","validateCheckoutProps","normalizeCheckoutProps","useraction","native_xo","extractDataFromQuery","ba_token","paymentId","PayerID","opType","return_uri","cancel_uri","buildActions","redirectUrl","renderThroughPopupBridge","queryItems","awaitPopupBridge","setupPopupBridgeProxy","doRender","popupBridgeRender","popupBridgeRenderTo","popupBridgeRenderPopupTo","FUNDING_PRIORITY","FUNDING_ORDER","FUNDING_CONFIG","enabled","allowOptIn","allowOptOut","allowRemember","allowHorizontal","allowVertical","requireCommitAsTrue","__paypal_checkout__","serverConfig","paypalMerchantConfiguration","creditCard","isPayPalBranded","allowedCountries","defaultVerticalCountries","platforms","allowedEnvs","CARD_CONFIG","priority","getConfig","category","categoryConfig","getFundingConfig","getCardConfig","fundingEligibilityReasons","isFundingIneligible","funding","layout","isVertical","allowSecondary","disallowed","isFundingAutoEligible","allowed","remembered","isFundingEligible","eligible","ineligibleReason","autoEligibleReason","determineEligibleFunding","reasons","eligibleFunding","factors","unshift","determineEligibleCards","card","validateFunding","logFundingEligibility","table","BUTTON_CONFIG","colors","sizes","shapes","layouts","logoColors","tagLineColors","secondaryColors","dualTag","defaultLabel","defaultVerticalLabel","defaultColor","defaultSize","defaultVerticalSize","defaultShape","defaultLayout","defaultBranding","defaultVerticalBranding","defaultFundingIcons","defaultTagline","defaultDual","minimumSize","minimumVerticalSize","maximumSize","maximumVerticalSize","minHorizontalButtons","minVerticalButtons","maxHorizontalButtons","maxVerticalButtons","allowUnbranded","allowFundingIcons","allowPrimary","allowPrimaryVertical","allowPrimaryHorizontal","label","logoLabel","installmentperiod","allowSecondaryVertical","allowSecondaryHorizontal","FUNDING_TO_DEFAULT_LABEL","LABEL_TO_FUNDING","BUTTON_RELATIVE_STYLE","VERTICAL_MARGIN","BUTTON_STYLE","defaultWidth","defaultHeight","minWidth","maxWidth","minHeight","maxHeight","buttonTextMargin","allowFunding","allowTagline","byPayPalHeight","labelToFunding","fundingToDefaultLabel","getButtonConfig","parseLocale","determineMaxButtons","configMax","enableTagline","tagline","branding","fundingicons","defs","checkoutCustomization","size","color","shape","multiple","cards","validateButtonLocale","validateRegionSpecificButton","isInstallmentAllowedCountry","validateButtonStyle","maxbuttons","minButtons","buttonSize","validateButtonProps","SHOULD_FOCUS","CONTAINER","TAGLINE_COLOR","TEXT","LOGO","SEPARATOR","DOM_READY","PERSONALIZATION_TEXT","pageStyle","buttonStyle","layoutStyle","brandingStyle","labelStyle","DUAL_BUTTON_MIN_RATIO","buttonResponsiveStyle","cardNumber","buttonHeight","buttonTextMarginTop","minDualWidth","ceil","toFixed","buttonColorStyle","componentStyle","LoadingDots","Beacon","impression","Tagline","tagColor","getComponentScript","OPTIONAL","SELECTOR","TAG","toArray","parentElement","sum","getAllChildren","getOptionalIndex","getElementsTotalWidth","getOptionalParents","optional","getOptionalChildren","first","second","optionalParent","allChildren","optionalChildren","toggleOptionals","parentWidth","usedWidth","optionalChild","setupTabOutlineEvent","buttonsContainer","getElementsByClassName","tabKeyCode","handleMouseDownOnce","handleFirstTab","setDomReady","load","componentContent","allowedPersonalizationLabels","getCommonButtonClasses","getButtonClasses","getLocaleContent","determineLabel","labelMatchesFunding","determineButtons","buttonLabel","buttonColor","renderCards","logo","renderFundingIcons","renderPersonalizationButtonText","getButtonTextAnimationStyle","personalizedButtonText","allowedAnimation","MIN_WIDTH","LABEL_DURATION","PERSONALIZATION_DURATION","DELAY","COMPRESSED","EXPANDED","PAYPAL_BUTTON","PAYPAL_LOGO","BUTTON_TEXT","renderContent","dynamicContent","contentString","contentVariable","separator","renderButtonTextDiv","contentText","renderButton","morsText","buttonText","__WEB__","hasTabIndex","renderTagline","renderScript","renderStyle","renderPowerByPaypalLogo","isCardDisallowed","buttonNodes","taglineNode","fundingiconNode","styleNode","scriptNode","labelPowerByPayPal","possibleSizes","possibleSize","sizeA","sizeB","setupButtonChild","ButtonComponent","pageRenderTime","onApprove","pre","inlineGuest","treatments","isCreditDualEligible","creditThrottle","allowpaymentrequest","enableNativeCheckout","prefetchLogin","updateClientConfiguration","memoizedToken","button_version","remember","decorateOnRender","restart","tokenize","tokenizePayment","execute","nonce","decorateOnShippingChange","patch","patchObject","decorateOnClick","initialHeight","logInlineGuestOutOfViewPortOnlyOnce","onResizeHandler","getScrollOffsetY","pageYOffset","scrollTop","checkIfExpansionInViewport","scrollOffsetY","windowHeight","containerOffsetY","VISIBLE_THRESHOLD","isContainerExpanded","isExpansionInViewport","decorateValidate","validateCalled","getPageUrl","canRenderTop","methodName","unDebounce","createOriginal","createContext","originalPayment","resolveData","rejectActions","ctx","Card","initialFormValues","cardIcons","display","submitButton","currencyConversion","domainToEnv","setDomainEnv","currentDomainEnv","err3","currentProtocol","configure","precacheRemembered","setup","scriptProtocol","loadTime","apps","legacy","PayPalCheckout","enableCheckoutIframe","logger","_enableCheckoutIframe","_Checkout","_BillingPage","_ThreeDomainSecure","_destroyAll","LOG_PREFIX","MERCHANT_ID","CLASSES","HIDDEN_BUTTON","setupPostBridge","isLegacyEligible","DEFAULT_LANG","loadButtonJS","lc","childNodes","renderButtons","buttons","condition","click","getHijackTargetElement","parentTagName","grandparentElement","grandparentTagName","redirected","logRedirect","isToken","parseToken","hasToken","normalizeOptions","environment","badenv","concat","setupConfig","initXO","startFlow","closeFlow","matchUrlAndPaymentToken","checkUrlAgainstEnv","awaitPaymentTokenAndUrl","paymentTokenAndUrl","enablev3ajax","formSerialize","urlAndPaymentToken","paypalCheckoutInited","closeFlowCalled","initPayPalCheckout","closeUrl","renderPayPalCheckout","hijackTarget","urlProp","removeAttribute","handleClick","clickHandler","handleClickHijack","listenClick","isClick","instrumentButtonRender","instrumentButtonClick","setupCalled","invokeReady","onKey","oneTimeReady","number"],"mappings":"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","file":"checkout.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 62);\n","/* @flow */\n\nimport type { Enum } from '../types';\n\ntype BUTTON_STYLE_OPTIONS_ENUM =\n Enum<'label' | 'size' | 'shape' | 'color' | 'layout' |\n 'fundingicons' | 'maxbuttons' | 'branding' | 'tagline' | 'height' | 'installmentperiod'>;\n\nexport const BUTTON_STYLE_OPTIONS : BUTTON_STYLE_OPTIONS_ENUM = {\n LABEL: 'label',\n SIZE: 'size',\n SHAPE: 'shape',\n COLOR: 'color',\n LAYOUT: 'layout',\n MAXBUTTONS: 'maxbuttons',\n FUNDINGICONS: 'fundingicons',\n BRANDING: 'branding',\n TAGLINE: 'tagline',\n HEIGHT: 'height',\n INSTALLMENTPERIOD: 'installmentperiod'\n};\n\ntype BUTTON_LABEL_ENUM =\n Enum<'paypal' | 'checkout' | 'pay' | 'credit' |\n 'card' | 'buynow' | 'installment' | 'venmo' | 'itau' | 'ideal' | 'elv' | 'bancontact' | 'giropay' | 'sofort' | 'eps' | 'mybank' | 'p24' | 'payu' | 'verkkopankki' | 'blik' | 'trustly' | 'maxima' | 'boleto' | 'oxxo'>;\n\nexport const BUTTON_LABEL : BUTTON_LABEL_ENUM = {\n PAYPAL: 'paypal',\n CHECKOUT: 'checkout',\n PAY: 'pay',\n CREDIT: 'credit',\n CARD: 'card',\n BUYNOW: 'buynow',\n INSTALLMENT: 'installment',\n VENMO: 'venmo',\n ITAU: 'itau',\n IDEAL: 'ideal',\n ELV: 'elv',\n BANCONTACT: 'bancontact',\n GIROPAY: 'giropay',\n SOFORT: 'sofort',\n EPS: 'eps',\n MYBANK: 'mybank',\n P24: 'p24',\n PAYU: 'payu',\n VERKKOPANKKI: 'verkkopankki',\n BLIK: 'blik',\n TRUSTLY: 'trustly',\n MAXIMA: 'maxima',\n BOLETO: 'boleto',\n OXXO: 'oxxo'\n};\n\ntype BUTTON_COLOR_ENUM =\n Enum<'gold' | 'blue' | 'silver' | 'black' | 'darkblue' | 'transparent' | 'white'>;\n\nexport const BUTTON_COLOR : BUTTON_COLOR_ENUM = {\n GOLD: 'gold',\n BLUE: 'blue',\n SILVER: 'silver',\n BLACK: 'black',\n DARKBLUE: 'darkblue',\n WHITE: 'white',\n TRANSPARENT: 'transparent'\n};\n\ntype BUTTON_LOGO_COLOR_ENUM =\n Enum<'blue' | 'white' | 'black' | 'any'>;\n\nexport const BUTTON_LOGO_COLOR : BUTTON_LOGO_COLOR_ENUM = {\n BLUE: 'blue',\n WHITE: 'white',\n BLACK: 'black',\n ANY: 'any'\n};\n\ntype BUTTON_SIZE_ENUM =\n Enum<'tiny' | 'small' | 'medium' | 'large' | 'huge' | 'responsive'>;\n\nexport const BUTTON_SIZE : BUTTON_SIZE_ENUM = {\n TINY: 'tiny',\n SMALL: 'small',\n MEDIUM: 'medium',\n LARGE: 'large',\n HUGE: 'huge',\n RESPONSIVE: 'responsive'\n};\n\ntype BUTTON_TAGLINE_COLOR_ENUM =\n Enum<'black' | 'blue'>;\n\nexport const BUTTON_TAGLINE_COLOR : BUTTON_TAGLINE_COLOR_ENUM = {\n BLACK: 'black',\n BLUE: 'blue'\n};\n\ntype BUTTON_SHAPE_ENUM =\n Enum<'pill' | 'rect'>;\n\nexport const BUTTON_SHAPE : BUTTON_SHAPE_ENUM = {\n PILL: 'pill',\n RECT: 'rect'\n};\n\ntype BUTTON_BRANDING_ENUM =\n Enum<'branded' | 'unbranded'>;\n\nexport const BUTTON_BRANDING : BUTTON_BRANDING_ENUM = {\n BRANDED: 'branded',\n UNBRANDED: 'unbranded'\n};\n\ntype BUTTON_LAYOUT_ENUM =\n Enum<'horizontal' | 'vertical'>;\n\nexport const BUTTON_LAYOUT : BUTTON_LAYOUT_ENUM = {\n HORIZONTAL: 'horizontal',\n VERTICAL: 'vertical'\n};\n\ntype BUTTON_NUMBER_ENUM =\n Enum<'single' | 'multiple'>;\n\nexport const BUTTON_NUMBER : BUTTON_NUMBER_ENUM = {\n SINGLE: 'single',\n MULTIPLE: 'multiple'\n};\n\ntype BUTTON_LOGO_ENUM =\n Enum<'pp' | 'paypal' | 'venmo' | 'itau' | 'credit' | 'ideal' | 'elv' | 'bancontact' | 'giropay' | 'sofort' | 'eps' | 'mybank' | 'p24' | 'payu' | 'verkkopankki' | 'blik' | 'trustly' | 'maxima' | 'boleto' | 'oxxo'>;\n\nexport const BUTTON_LOGO : BUTTON_LOGO_ENUM = {\n PP: 'pp',\n PAYPAL: 'paypal',\n VENMO: 'venmo',\n ITAU: 'itau',\n CREDIT: 'credit',\n IDEAL: 'ideal',\n ELV: 'elv',\n BANCONTACT: 'bancontact',\n GIROPAY: 'giropay',\n SOFORT: 'sofort',\n EPS: 'eps',\n MYBANK: 'mybank',\n P24: 'p24',\n PAYU: 'payu',\n VERKKOPANKKI: 'verkkopankki',\n BLIK: 'blik',\n TRUSTLY: 'trustly',\n MAXIMA: 'maxima',\n BOLETO: 'boleto',\n OXXO: 'oxxo'\n};\n","/* @flow */\n\nexport const CHECKOUT_OVERLAY_COLOR = {\n BLACK: 'black',\n WHITE: 'white'\n};\n","/* @flow */\n\nexport const FUNDING = {\n PAYPAL: 'paypal',\n VENMO: 'venmo',\n ITAU: 'itau',\n CREDIT: 'credit',\n CARD: 'card',\n IDEAL: 'ideal',\n ELV: 'elv',\n BANCONTACT: 'bancontact',\n GIROPAY: 'giropay',\n SOFORT: 'sofort',\n EPS: 'eps',\n MYBANK: 'mybank',\n P24: 'p24',\n ZIMPLER: 'zimpler',\n PAYU: 'payu',\n VERKKOPANKKI: 'verkkopankki',\n BLIK: 'blik',\n TRUSTLY: 'trustly',\n MAXIMA: 'maxima',\n BOLETO: 'boleto',\n OXXO: 'oxxo'\n};\n\nexport const CARD = {\n VISA: 'visa',\n MASTERCARD: 'mastercard',\n AMEX: 'amex',\n DISCOVER: 'discover',\n SWITCH: 'switch',\n MAESTRO: 'maestro',\n HIPER: 'hiper',\n ELO: 'elo',\n JCB: 'jcb',\n CUP: 'cup',\n COFINOGA: 'cofinoga',\n COFIDIS: 'cofidis',\n CETELEM: 'cetelem',\n CBNATIONALE: 'cbnationale'\n};\n\nexport const FUNDING_ELIGIBILITY_REASON = {\n PRIMARY: 'The funding source is the primary source',\n NOT_ENABLED: 'The funding source is not currently enabled for use',\n SECONDARY_DISALLOWED: 'The funding source is disallowed as a secondary button',\n OPT_OUT: 'The funding source was disallowed in funding.disallowed',\n OPT_IN: 'The funding source was allowed in funding.allowed',\n DISALLOWED_COUNTRY: 'The funding source is not enabled for the current locale',\n DEFAULT_COUNTRY: 'The funding source is enabled by default for the current locale',\n DEFAULT: 'The funding source is enabled by default for all users',\n REMEMBERED: 'The funding source was remembered for the current user',\n NEED_OPT_IN: 'The funding source needs to be allowed in funding.allowed',\n COMMIT_NOT_SET: 'The funding source is not enabled when commit is not set as true',\n INVALID_ENV: 'The funding source is not supported in this environment'\n};\n\nexport const CARD_PRIORITY = [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.DISCOVER,\n CARD.SWITCH,\n CARD.MAESTRO,\n CARD.HIPER,\n CARD.ELO,\n CARD.JCB,\n CARD.CUP,\n CARD.COFINOGA,\n CARD.COFIDIS,\n CARD.CETELEM,\n CARD.CBNATIONALE\n];\n","/* @flow */\n\nexport const ENV = {\n LOCAL: 'local',\n STAGE: 'stage',\n SANDBOX: 'sandbox',\n PRODUCTION: 'production',\n TEST: 'test',\n DEMO: 'demo'\n};\n\nexport const USERS = {\n ALL: 'all',\n REMEMBERED: 'remembered'\n};\n\nexport const SOURCE = {\n MANUAL: 'manual',\n BUTTON_FACTORY: 'button_factory'\n};\n\nexport const LOG_LEVEL = {\n DEBUG: 'debug',\n INFO: 'info',\n WARN: 'warn',\n ERROR: 'error'\n};\n\nexport const PAYMENT_TYPE = {\n EC_TOKEN: 'ec_token',\n BA_TOKEN: 'ba_token',\n PAY_ID: 'pay_id'\n};\n\nexport const PPTM_ID = 'xo-pptm';\n\nexport const ATTRIBUTE = {\n BUTTON: 'data-button',\n FUNDING_SOURCE: 'data-funding-source',\n CARD: 'data-card',\n VERSION: 'data-version',\n LAYOUT: 'data-layout',\n SIZE: 'data-size'\n};\n\nexport const PLATFORM = {\n DESKTOP: 'desktop',\n MOBILE: 'mobile'\n};\n\nexport const DEFAULT = 'default';\n\n\n","/* @flow */\n\nimport { PAYMENT_TYPE } from './misc';\n\nexport const FPTI = {\n\n KEY: {\n FEED: 'feed_name',\n STATE: 'state_name',\n TRANSITION: 'transition_name',\n BUTTON_TYPE: 'button_type',\n SESSION_UID: 'page_session_id',\n BUTTON_SESSION_UID: 'button_session_id',\n TOKEN: 'token',\n CONTEXT_ID: 'context_id',\n CONTEXT_TYPE: 'context_type',\n REFERER: 'referer_url',\n PAY_ID: 'pay_id',\n SELLER_ID: 'seller_id',\n DATA_SOURCE: 'serverside_data_source',\n BUTTON_SOURCE: 'button_source',\n ERROR_CODE: 'ext_error_code',\n ERROR_DESC: 'ext_error_desc',\n PAGE_LOAD_TIME: 'page_load_time',\n EXPERIMENT_NAME: 'pxp_exp_id',\n TREATMENT_NAME: 'pxp_trtmnt_id',\n TRANSITION_TIME: 'transition_time',\n FUNDING_LIST: 'eligible_payment_methods',\n FUNDING_COUNT: 'eligible_payment_count',\n CHOSEN_FUNDING: 'selected_payment_method',\n BUTTON_LAYOUT: 'button_layout',\n BUTTON_COLOR: 'button_color',\n BUTTON_SIZE: 'button_size',\n BUTTON_SHAPE: 'button_shape',\n BUTTON_LABEL: 'button_label',\n BUTTON_WIDTH: 'button_width',\n VERSION: 'checkoutjs_version',\n MAX_BUTTONS: 'max_buttons',\n FUNDING_REMEMBERED: 'funding_remembered',\n BUTTON_TAGLINE_ENABLED: 'button_tagline_enabled',\n RESPONSE_DURATION: 'response_duration',\n PAYMENT_FLOW: 'payment_flow',\n BUTTON_VERSION: 'button_version'\n },\n\n BUTTON_TYPE: {\n IFRAME: 'iframe',\n HTML: 'html',\n CUSTOM: 'custom'\n },\n\n DATA_SOURCE: {\n CHECKOUT: 'checkout'\n },\n\n CONTEXT_TYPE: {\n BUTTON_SESSION_ID: 'button_session_id',\n [ PAYMENT_TYPE.PAY_ID ]: 'Pay-ID',\n [ PAYMENT_TYPE.EC_TOKEN ]: 'EC-Token',\n [ PAYMENT_TYPE.BA_TOKEN ]: 'EC-Token'\n },\n\n FEED: {\n CHECKOUTJS: 'checkoutjs'\n },\n\n STATE: {\n LOAD: 'checkoutjs_load',\n BUTTON: 'checkoutjs_button',\n CHECKOUT: 'checkoutjs_checkout',\n PPTM: 'checkoutjs_pptm'\n },\n\n TRANSITION: {\n SCRIPT_LOAD: 'process_script_load',\n\n BUTTON_RENDER: 'process_button_render',\n BUTTON_LOAD: 'process_button_load',\n BUTTON_CLICK: 'process_button_click',\n\n BUTTON_RENDER_INTRANET_MODE: 'process_button_render_intranet_mode',\n BUTTON_CLICK_INTRANET_MODE: 'process_button_click_intranet_mode',\n\n CREATE_PAYMENT: 'process_create_payment',\n RECIEVE_PAYMENT: 'process_recieve_payment',\n\n CHECKOUT_INIT: 'process_checkout_init',\n CHECKOUT_AUTHORIZE: 'process_checkout_authorize',\n CHECKOUT_SHIPPING_CHANGE: 'process_checkout_shipping_change',\n CHECKOUT_CANCEL: 'process_checkout_cancel',\n CHECKOUT_ERROR: 'process_checkout_error',\n\n EXTERNAL_EXPERIMENT: 'process_external_experiment',\n EXTERNAL_EXPERIMENT_COMPLETE: 'process_external_experiment_complete',\n\n PPTM_LOAD: 'process_pptm_load',\n PPTM_LOADED: 'process_pptm_loaded'\n }\n};\n","/* @flow */\n\nexport const COUNTRY = {\n AD: 'AD',\n AE: 'AE',\n AG: 'AG',\n AI: 'AI',\n AL: 'AL',\n AM: 'AM',\n AN: 'AN',\n AO: 'AO',\n AR: 'AR',\n AT: 'AT',\n AU: 'AU',\n AW: 'AW',\n AZ: 'AZ',\n BA: 'BA',\n BB: 'BB',\n BE: 'BE',\n BF: 'BF',\n BG: 'BG',\n BH: 'BH',\n BI: 'BI',\n BJ: 'BJ',\n BM: 'BM',\n BN: 'BN',\n BO: 'BO',\n BR: 'BR',\n BS: 'BS',\n BT: 'BT',\n BW: 'BW',\n BY: 'BY',\n BZ: 'BZ',\n C2: 'C2',\n CA: 'CA',\n CD: 'CD',\n CG: 'CG',\n CH: 'CH',\n CI: 'CI',\n CK: 'CK',\n CL: 'CL',\n CM: 'CM',\n CN: 'CN',\n CO: 'CO',\n CR: 'CR',\n CV: 'CV',\n CY: 'CY',\n CZ: 'CZ',\n DE: 'DE',\n DJ: 'DJ',\n DK: 'DK',\n DM: 'DM',\n DO: 'DO',\n DZ: 'DZ',\n EC: 'EC',\n EE: 'EE',\n EG: 'EG',\n ER: 'ER',\n ES: 'ES',\n ET: 'ET',\n FI: 'FI',\n FJ: 'FJ',\n FK: 'FK',\n FM: 'FM',\n FO: 'FO',\n FR: 'FR',\n GA: 'GA',\n GB: 'GB',\n GD: 'GD',\n GE: 'GE',\n GF: 'GF',\n GI: 'GI',\n GL: 'GL',\n GM: 'GM',\n GN: 'GN',\n GP: 'GP',\n GR: 'GR',\n GT: 'GT',\n GW: 'GW',\n GY: 'GY',\n HK: 'HK',\n HN: 'HN',\n HR: 'HR',\n HU: 'HU',\n ID: 'ID',\n IE: 'IE',\n IL: 'IL',\n IN: 'IN',\n IS: 'IS',\n IT: 'IT',\n JM: 'JM',\n JO: 'JO',\n JP: 'JP',\n KE: 'KE',\n KG: 'KG',\n KH: 'KH',\n KI: 'KI',\n KM: 'KM',\n KN: 'KN',\n KR: 'KR',\n KW: 'KW',\n KY: 'KY',\n KZ: 'KZ',\n LA: 'LA',\n LC: 'LC',\n LI: 'LI',\n LK: 'LK',\n LS: 'LS',\n LT: 'LT',\n LU: 'LU',\n LV: 'LV',\n MA: 'MA',\n MC: 'MC',\n MD: 'MD',\n ME: 'ME',\n MG: 'MG',\n MH: 'MH',\n MK: 'MK',\n ML: 'ML',\n MN: 'MN',\n MQ: 'MQ',\n MR: 'MR',\n MS: 'MS',\n MT: 'MT',\n MU: 'MU',\n MV: 'MV',\n MW: 'MW',\n MX: 'MX',\n MY: 'MY',\n MZ: 'MZ',\n NA: 'NA',\n NC: 'NC',\n NE: 'NE',\n NF: 'NF',\n NG: 'NG',\n NI: 'NI',\n NL: 'NL',\n NO: 'NO',\n NP: 'NP',\n NR: 'NR',\n NU: 'NU',\n NZ: 'NZ',\n OM: 'OM',\n PA: 'PA',\n PE: 'PE',\n PF: 'PF',\n PG: 'PG',\n PH: 'PH',\n PL: 'PL',\n PM: 'PM',\n PN: 'PN',\n PT: 'PT',\n PW: 'PW',\n PY: 'PY',\n QA: 'QA',\n RE: 'RE',\n RO: 'RO',\n RS: 'RS',\n RU: 'RU',\n RW: 'RW',\n SA: 'SA',\n SB: 'SB',\n SC: 'SC',\n SE: 'SE',\n SG: 'SG',\n SH: 'SH',\n SI: 'SI',\n SJ: 'SJ',\n SK: 'SK',\n SL: 'SL',\n SM: 'SM',\n SN: 'SN',\n SO: 'SO',\n SR: 'SR',\n ST: 'ST',\n SV: 'SV',\n SZ: 'SZ',\n TC: 'TC',\n TD: 'TD',\n TG: 'TG',\n TH: 'TH',\n TJ: 'TJ',\n TM: 'TM',\n TN: 'TN',\n TO: 'TO',\n TR: 'TR',\n TT: 'TT',\n TV: 'TV',\n TW: 'TW',\n TZ: 'TZ',\n UA: 'UA',\n UG: 'UG',\n US: 'US',\n UY: 'UY',\n VA: 'VA',\n VC: 'VC',\n VE: 'VE',\n VG: 'VG',\n VN: 'VN',\n VU: 'VU',\n WF: 'WF',\n WS: 'WS',\n YE: 'YE',\n YT: 'YT',\n ZA: 'ZA',\n ZM: 'ZM',\n ZW: 'ZW'\n};\n\nexport const LANG = {\n AR: 'ar',\n CS: 'cs',\n DA: 'da',\n DE: 'de',\n EL: 'el',\n EN: 'en',\n ES: 'es',\n FI: 'fi',\n FR: 'fr',\n HE: 'he',\n HU: 'hu',\n ID: 'id',\n IT: 'it',\n JA: 'ja',\n KO: 'ko',\n NL: 'nl',\n NO: 'no',\n PL: 'pl',\n PT: 'pt',\n RU: 'ru',\n SK: 'sk',\n SV: 'sv',\n TH: 'th',\n TR: 'tr',\n ZH: 'zh'\n};\n\nexport const LANG_TO_DEFAULT_COUNTRY = {\n [LANG.AR]: COUNTRY.SA,\n [LANG.CS]: COUNTRY.CZ,\n [LANG.DA]: COUNTRY.DK,\n [LANG.DE]: COUNTRY.DE,\n [LANG.EL]: COUNTRY.GR,\n [LANG.EN]: COUNTRY.US,\n [LANG.ES]: COUNTRY.ES,\n [LANG.FI]: COUNTRY.FI,\n [LANG.FR]: COUNTRY.FR,\n [LANG.HE]: COUNTRY.IL,\n [LANG.HU]: COUNTRY.HU,\n [LANG.ID]: COUNTRY.ID,\n [LANG.IT]: COUNTRY.IT,\n [LANG.JA]: COUNTRY.JP,\n [LANG.KO]: COUNTRY.KR,\n [LANG.NL]: COUNTRY.NL,\n [LANG.NO]: COUNTRY.NO,\n [LANG.PL]: COUNTRY.PL,\n [LANG.PT]: COUNTRY.PT,\n [LANG.RU]: COUNTRY.RU,\n [LANG.SK]: COUNTRY.SK,\n [LANG.SV]: COUNTRY.SE,\n [LANG.TH]: COUNTRY.TH,\n [LANG.TR]: COUNTRY.TR,\n [LANG.ZH]: COUNTRY.CN\n};\n\nexport const ALLOWED_INSTALLMENT_COUNTRIES = [ COUNTRY.BR, COUNTRY.MX ];\nexport const ALLOWED_INSTALLMENT_PERIOD = {\n BR: [ 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ],\n MX: [ 3, 6, 9, 12 ]\n};\n","/* @flow */\n\nimport { COUNTRY, LANG } from './country';\n\nexport const LOCALE = {\n [COUNTRY.AD]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AE]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH, LANG.AR ],\n [COUNTRY.AG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AI]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AL]: [ LANG.EN ],\n [COUNTRY.AM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AN]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AO]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AR]: [ LANG.ES, LANG.EN ],\n [COUNTRY.AT]: [ LANG.DE, LANG.EN ],\n [COUNTRY.AU]: [ LANG.EN ],\n [COUNTRY.AW]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BA]: [ LANG.EN ],\n [COUNTRY.BB]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BE]: [ LANG.EN, LANG.NL, LANG.FR ],\n [COUNTRY.BF]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.BG]: [ LANG.EN ],\n [COUNTRY.BH]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BI]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.BJ]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.BM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BN]: [ LANG.EN ],\n [COUNTRY.BO]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.BR]: [ LANG.PT, LANG.EN ],\n [COUNTRY.BS]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BT]: [ LANG.EN ],\n [COUNTRY.BW]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BY]: [ LANG.EN ],\n [COUNTRY.BZ]: [ LANG.EN, LANG.ES, LANG.FR, LANG.ZH ],\n [COUNTRY.C2]: [ LANG.ZH, LANG.EN ],\n [COUNTRY.CA]: [ LANG.EN, LANG.FR ],\n [COUNTRY.CD]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.CG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.CH]: [ LANG.DE, LANG.FR, LANG.EN ],\n [COUNTRY.CI]: [ LANG.FR, LANG.EN ],\n [COUNTRY.CK]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.CL]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.CM]: [ LANG.FR, LANG.EN ],\n [COUNTRY.CN]: [ LANG.ZH ],\n [COUNTRY.CO]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.CR]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.CV]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.CY]: [ LANG.EN ],\n [COUNTRY.CZ]: [ LANG.CS, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.DE]: [ LANG.DE, LANG.EN ],\n [COUNTRY.DJ]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.DK]: [ LANG.DA, LANG.EN ],\n [COUNTRY.DM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.DO]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.DZ]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.EC]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.EE]: [ LANG.EN, LANG.RU, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.EG]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ER]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ES]: [ LANG.ES, LANG.EN ],\n [COUNTRY.ET]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.FI]: [ LANG.FI, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.FJ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.FK]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.FM]: [ LANG.EN ],\n [COUNTRY.FO]: [ LANG.DA, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.FR]: [ LANG.FR, LANG.EN ],\n [COUNTRY.GA]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.GB]: [ LANG.EN ],\n [COUNTRY.GD]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GE]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GF]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GI]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GL]: [ LANG.DA, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GN]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.GP]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GR]: [ LANG.EL, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GT]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.GW]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GY]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.HK]: [ LANG.EN, LANG.ZH ],\n [COUNTRY.HN]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.HR]: [ LANG.EN ],\n [COUNTRY.HU]: [ LANG.HU, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ID]: [ LANG.ID, LANG.EN ],\n [COUNTRY.IE]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.IL]: [ LANG.HE, LANG.EN ],\n [COUNTRY.IN]: [ LANG.EN ],\n [COUNTRY.IS]: [ LANG.EN ],\n [COUNTRY.IT]: [ LANG.IT, LANG.EN ],\n [COUNTRY.JM]: [ LANG.EN, LANG.ES, LANG.FR, LANG.ZH ],\n [COUNTRY.JO]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.JP]: [ LANG.JA, LANG.EN ],\n [COUNTRY.KE]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KH]: [ LANG.EN ],\n [COUNTRY.KI]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KM]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.KN]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KR]: [ LANG.KO, LANG.EN ],\n [COUNTRY.KW]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KY]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LA]: [ LANG.EN ],\n [COUNTRY.LC]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LI]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LK]: [ LANG.EN ],\n [COUNTRY.LS]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LT]: [ LANG.EN, LANG.RU, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LU]: [ LANG.EN, LANG.DE, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LV]: [ LANG.EN, LANG.RU, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MA]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MC]: [ LANG.FR, LANG.EN ],\n [COUNTRY.MD]: [ LANG.EN ],\n [COUNTRY.ME]: [ LANG.EN ],\n [COUNTRY.MG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MH]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MK]: [ LANG.EN ],\n [COUNTRY.ML]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.MN]: [ LANG.EN ],\n [COUNTRY.MQ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MR]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MS]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MT]: [ LANG.EN ],\n [COUNTRY.MU]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MV]: [ LANG.EN ],\n [COUNTRY.MW]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MX]: [ LANG.ES, LANG.EN ],\n [COUNTRY.MY]: [ LANG.EN ],\n [COUNTRY.MZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NA]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NC]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NE]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.NF]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NG]: [ LANG.EN ],\n [COUNTRY.NI]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.NL]: [ LANG.NL, LANG.EN ],\n [COUNTRY.NO]: [ LANG.NO, LANG.EN ],\n [COUNTRY.NP]: [ LANG.EN ],\n [COUNTRY.NR]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NU]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.OM]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PA]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.PE]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.PF]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PH]: [ LANG.EN ],\n [COUNTRY.PL]: [ LANG.PL, LANG.EN ],\n [COUNTRY.PM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PN]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PT]: [ LANG.PT, LANG.EN ],\n [COUNTRY.PW]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PY]: [ LANG.ES, LANG.EN ],\n [COUNTRY.QA]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH, LANG.AR ],\n [COUNTRY.RE]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.RO]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.RS]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.RU]: [ LANG.RU, LANG.EN ],\n [COUNTRY.RW]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.SA]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SB]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SC]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.SE]: [ LANG.SV, LANG.EN ],\n [COUNTRY.SG]: [ LANG.EN ],\n [COUNTRY.SH]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SI]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SJ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SK]: [ LANG.SK, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SL]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SN]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.SO]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SR]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ST]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SV]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.SZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TC]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TD]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.TG]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.TH]: [ LANG.TH, LANG.EN ],\n [COUNTRY.TJ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TN]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TO]: [ LANG.EN ],\n [COUNTRY.TR]: [ LANG.TR, LANG.EN ],\n [COUNTRY.TT]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TV]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TW]: [ LANG.ZH, LANG.EN ],\n [COUNTRY.TZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.UA]: [ LANG.EN, LANG.RU, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.UG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.US]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.UY]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.VA]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.VC]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.VE]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.VG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.VN]: [ LANG.EN ],\n [COUNTRY.VU]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.WF]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.WS]: [ LANG.EN ],\n [COUNTRY.YE]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.YT]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ZA]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ZM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ZW]: [ LANG.EN ]\n};\n","/* @flow */\n\nexport * from './button';\nexport * from './checkout';\nexport * from './funding';\nexport * from './fpti';\nexport * from './country';\nexport * from './misc';\nexport * from './locale';\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { regexMap } from './util';\n\n// eslint-disable-next-line no-use-before-define\nexport type ChildType = $ReadOnlyArray | JsxHTMLNode | string | void | null;\nexport type ChildrenType = $ReadOnlyArray;\ntype PropsType = ?{ class? : string, id? : string, innerHTML? : string };\n\nfunction htmlEncode(html : string = '') : string {\n return html.toString()\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(/\\//g, '/');\n}\n\nexport class JsxHTMLNode {\n name : string\n props : PropsType\n children : ChildrenType\n\n constructor(name : string, props : PropsType, children : ChildrenType) {\n this.name = name;\n this.props = props;\n this.children = children;\n }\n\n toString() : string {\n return `<${ this.name }${ this.props ? ' ' : '' }${ this.props ? this.propsToString() : '' }>${ this.childrenToString() }`;\n }\n\n propsToString() : string {\n const props = this.props;\n\n if (!props) {\n return '';\n }\n\n return Object.keys(props).filter(key => {\n return key !== 'innerHTML' && props && props[key] !== false;\n }).map(key => {\n if (props && props[key] === true) {\n return `${ htmlEncode(key) }`;\n }\n return props ? `${ htmlEncode(key) }=\"${ htmlEncode(props[key]) }\"` : '';\n }).join(' ');\n }\n\n childrenToString() : string {\n\n if (this.props && this.props.innerHTML) {\n return this.props.innerHTML;\n }\n\n if (!this.children) {\n return '';\n }\n\n let result = '';\n\n function iterate(children) {\n for (const child of children) {\n\n if (child === null || child === undefined) {\n continue;\n }\n\n if (Array.isArray(child)) {\n iterate(child);\n } else if (child instanceof JsxHTMLNode) {\n result += child.toString();\n } else {\n result += htmlEncode(child);\n }\n }\n }\n\n iterate(this.children);\n\n return result;\n }\n}\n\nexport class JsxHTMLNodeContainer extends JsxHTMLNode {\n\n\n constructor(children : ChildrenType) {\n super('', {}, children);\n }\n\n toString() : string {\n return this.childrenToString();\n }\n}\n\nexport function jsxToHTML(name : string, props : PropsType, ...children : ChildrenType) : JsxHTMLNode {\n return new JsxHTMLNode(name, props, children);\n}\n\nexport function jsxRender(template : string, renderers : { [string] : (string) =>?(JsxHTMLNode | $ReadOnlyArray) }) : JsxHTMLNode {\n\n // eslint-disable-next-line security/detect-unsafe-regex, unicorn/no-unsafe-regex\n const nodes = regexMap(template, /\\{\\s*([a-z]+)(?::\\s*([^} ]+))?\\s*\\}|([^${}]+)/g, (match, type, value, text) => {\n if (type) {\n if (!renderers[type]) {\n throw new Error(`Can not render type: ${ type }`);\n }\n\n return renderers[type](value);\n } else if (text && text.trim()) {\n\n if (!renderers.text) {\n return text;\n }\n\n if ((/
/).test(text)) {\n return renderers.break(text);\n } else {\n return renderers.text(text);\n }\n } else {\n return text;\n }\n });\n\n return new JsxHTMLNodeContainer(nodes);\n}\n","/* @flow */\n\nexport function isPromise(item : mixed) : boolean {\n try {\n if (!item) {\n return false;\n }\n\n if (typeof Promise !== 'undefined' && item instanceof Promise) {\n return true;\n }\n\n if (typeof window !== 'undefined' && typeof window.Window === 'function' && item instanceof window.Window) {\n return false;\n }\n\n if (typeof window !== 'undefined' && typeof window.constructor === 'function' && item instanceof window.constructor) {\n return false;\n }\n\n let toString = ({}).toString;\n\n if (toString) {\n let name = toString.call(item);\n\n if (name === '[object Window]' || name === '[object global]' || name === '[object DOMWindow]') {\n return false;\n }\n }\n\n if (typeof item.then === 'function') {\n return true;\n }\n } catch (err) {\n return false;\n }\n\n return false;\n}\n","/* @flow */\n\nimport type { ZalgoPromise } from './promise';\n\nconst dispatchedErrors = [];\nconst possiblyUnhandledPromiseHandlers : Array<(mixed, promise? : ZalgoPromise) => void> = [];\n\nexport function dispatchPossiblyUnhandledError(err : mixed, promise : ZalgoPromise) {\n\n if (dispatchedErrors.indexOf(err) !== -1) {\n return;\n }\n\n dispatchedErrors.push(err);\n\n setTimeout(() => {\n if (__DEBUG__) {\n // $FlowFixMe\n throw new Error(`${ err.stack || err.toString() }\\n\\nFrom promise:\\n\\n${ promise.stack }`);\n }\n\n throw err;\n }, 1);\n\n for (let j = 0; j < possiblyUnhandledPromiseHandlers.length; j++) {\n // $FlowFixMe\n possiblyUnhandledPromiseHandlers[j](err, promise);\n }\n}\n\nexport function onPossiblyUnhandledException(handler : (mixed, promise? : ZalgoPromise) => void) : { cancel : () => void } {\n possiblyUnhandledPromiseHandlers.push(handler);\n\n return {\n cancel() {\n possiblyUnhandledPromiseHandlers.splice(possiblyUnhandledPromiseHandlers.indexOf(handler), 1);\n }\n };\n}\n","/* @flow */\n\nimport type { ZalgoPromise } from './promise';\n\nlet activeCount = 0;\nlet flushPromise;\n\nfunction flushActive() {\n if (!activeCount && flushPromise) {\n const promise = flushPromise;\n flushPromise = null;\n promise.resolve();\n }\n}\n\nexport function startActive() {\n activeCount += 1;\n}\n\nexport function endActive() {\n activeCount -= 1;\n flushActive();\n}\n\nexport function awaitActive(Zalgo : Class>) : ZalgoPromise { // eslint-disable-line no-undef\n let promise = flushPromise = flushPromise || new Zalgo();\n flushActive();\n return promise;\n}\n","/* @flow */\n\nimport { isPromise } from './utils';\nimport { onPossiblyUnhandledException, dispatchPossiblyUnhandledError } from './exceptions';\nimport { startActive, endActive, awaitActive } from './flush';\n\nexport class ZalgoPromise {\n\n resolved : boolean\n rejected : boolean\n errorHandled : boolean\n value : R\n error : mixed\n handlers : Array<{\n promise : ZalgoPromise<*>,\n onSuccess : void | (result : R) => mixed,\n onError : void | (error : mixed) => mixed\n }>\n dispatching : boolean\n stack : string\n\n constructor(handler : ?(resolve : (result : R) => void, reject : (error : mixed) => void) => void) {\n\n this.resolved = false;\n this.rejected = false;\n this.errorHandled = false;\n\n this.handlers = [];\n\n if (handler) {\n\n let result;\n let error;\n let resolved = false;\n let rejected = false;\n let isAsync = false;\n\n startActive();\n\n try {\n handler(res => {\n if (isAsync) {\n this.resolve(res);\n } else {\n resolved = true;\n result = res;\n }\n\n }, err => {\n if (isAsync) {\n this.reject(err);\n } else {\n rejected = true;\n error = err;\n }\n });\n\n } catch (err) {\n endActive();\n this.reject(err);\n return;\n }\n\n endActive();\n\n isAsync = true;\n\n if (resolved) {\n // $FlowFixMe\n this.resolve(result);\n } else if (rejected) {\n this.reject(error);\n }\n }\n\n if (__DEBUG__) {\n try {\n throw new Error(`ZalgoPromise`);\n } catch (err) {\n this.stack = err.stack;\n }\n }\n }\n\n resolve(result : R) : ZalgoPromise {\n if (this.resolved || this.rejected) {\n return this;\n }\n\n if (isPromise(result)) {\n throw new Error('Can not resolve promise with another promise');\n }\n\n this.resolved = true;\n this.value = result;\n this.dispatch();\n\n return this;\n }\n\n reject(error : mixed) : ZalgoPromise {\n if (this.resolved || this.rejected) {\n return this;\n }\n\n if (isPromise(error)) {\n throw new Error('Can not reject promise with another promise');\n }\n\n if (!error) {\n // $FlowFixMe\n let err = (error && typeof error.toString === 'function' ? error.toString() : Object.prototype.toString.call(error));\n error = new Error(`Expected reject to be called with Error, got ${ err }`);\n }\n\n this.rejected = true;\n this.error = error;\n\n if (!this.errorHandled) {\n setTimeout(() => {\n if (!this.errorHandled) {\n dispatchPossiblyUnhandledError(error, this);\n }\n }, 1);\n }\n\n this.dispatch();\n\n return this;\n }\n\n asyncReject(error : mixed) : ZalgoPromise {\n this.errorHandled = true;\n this.reject(error);\n return this;\n }\n \n dispatch() {\n\n let { dispatching, resolved, rejected, handlers } = this;\n\n if (dispatching) {\n return;\n }\n\n if (!resolved && !rejected) {\n return;\n }\n\n this.dispatching = true;\n startActive();\n\n const chain = (firstPromise : ZalgoPromise, secondPromise : ZalgoPromise) => {\n return firstPromise.then(res => {\n secondPromise.resolve(res);\n }, err => {\n secondPromise.reject(err);\n });\n };\n\n for (let i = 0; i < handlers.length; i++) {\n\n let { onSuccess, onError, promise } = handlers[i];\n\n let result;\n\n if (resolved) {\n\n try {\n result = onSuccess ? onSuccess(this.value) : this.value;\n } catch (err) {\n promise.reject(err);\n continue;\n }\n\n } else if (rejected) {\n\n if (!onError) {\n promise.reject(this.error);\n continue;\n }\n\n try {\n result = onError(this.error);\n } catch (err) {\n promise.reject(err);\n continue;\n }\n }\n\n if (result instanceof ZalgoPromise && (result.resolved || result.rejected)) {\n\n if (result.resolved) {\n promise.resolve(result.value);\n } else {\n promise.reject(result.error);\n }\n\n result.errorHandled = true;\n\n } else if (isPromise(result)) {\n\n if (result instanceof ZalgoPromise && (result.resolved || result.rejected)) {\n if (result.resolved) {\n promise.resolve(result.value);\n } else {\n promise.reject(result.error);\n }\n\n } else {\n // $FlowFixMe\n chain(result, promise);\n }\n\n } else {\n\n promise.resolve(result);\n }\n }\n\n handlers.length = 0;\n this.dispatching = false;\n endActive();\n }\n\n then(onSuccess : void | (result : R) => (ZalgoPromise | Y), onError : void | (error : mixed) => (ZalgoPromise | Y)) : ZalgoPromise {\n\n if (onSuccess && typeof onSuccess !== 'function' && !onSuccess.call) {\n throw new Error('Promise.then expected a function for success handler');\n }\n\n if (onError && typeof onError !== 'function' && !onError.call) {\n throw new Error('Promise.then expected a function for error handler');\n }\n\n let promise : ZalgoPromise = new ZalgoPromise();\n\n this.handlers.push({\n promise,\n onSuccess,\n onError\n });\n\n this.errorHandled = true;\n\n this.dispatch();\n\n return promise;\n }\n\n catch(onError : (error : mixed) => ZalgoPromise | Y) : ZalgoPromise {\n return this.then(undefined, onError);\n }\n\n finally(onFinally : () => mixed) : ZalgoPromise {\n\n if (onFinally && typeof onFinally !== 'function' && !onFinally.call) {\n throw new Error('Promise.finally expected a function');\n }\n\n return this.then((result) => {\n return ZalgoPromise.try(onFinally)\n .then(() => {\n return result;\n });\n }, (err) => {\n return ZalgoPromise.try(onFinally)\n .then(() => {\n throw err;\n });\n });\n }\n\n timeout(time : number, err : ?Error) : ZalgoPromise {\n\n if (this.resolved || this.rejected) {\n return this;\n }\n\n let timeout = setTimeout(() => {\n\n if (this.resolved || this.rejected) {\n return;\n }\n\n this.reject(err || new Error(`Promise timed out after ${ time }ms`));\n\n }, time);\n\n return this.then(result => {\n clearTimeout(timeout);\n return result;\n });\n }\n\n // $FlowFixMe\n toPromise() : Promise {\n // $FlowFixMe\n if (typeof Promise === 'undefined') {\n throw new TypeError(`Could not find Promise`);\n }\n // $FlowFixMe\n return Promise.resolve(this); // eslint-disable-line compat/compat\n }\n\n static resolve(value : X | ZalgoPromise) : ZalgoPromise {\n\n if (value instanceof ZalgoPromise) {\n return value;\n }\n\n if (isPromise(value)) {\n // $FlowFixMe\n return new ZalgoPromise((resolve, reject) => value.then(resolve, reject));\n }\n\n return new ZalgoPromise().resolve(value);\n }\n\n static reject(error : mixed) : ZalgoPromise {\n return new ZalgoPromise().reject(error);\n }\n\n static asyncReject(error : mixed) : ZalgoPromise {\n return new ZalgoPromise().asyncReject(error);\n }\n\n static all>(promises : X) : ZalgoPromise<$TupleMap(ZalgoPromise | Y) => Y>> { // eslint-disable-line no-undef\n\n let promise = new ZalgoPromise();\n let count = promises.length;\n let results = [];\n\n if (!count) {\n promise.resolve(results);\n return promise;\n }\n\n const chain = (i : number, firstPromise : ZalgoPromise, secondPromise : ZalgoPromise) => {\n return firstPromise.then(res => {\n results[i] = res;\n count -= 1;\n if (count === 0) {\n promise.resolve(results);\n }\n }, err => {\n secondPromise.reject(err);\n });\n };\n\n for (let i = 0; i < promises.length; i++) {\n let prom = promises[i];\n\n if (prom instanceof ZalgoPromise) {\n if (prom.resolved) {\n results[i] = prom.value;\n count -= 1;\n continue;\n }\n } else if (!isPromise(prom)) {\n results[i] = prom;\n count -= 1;\n continue;\n }\n\n chain(i, ZalgoPromise.resolve(prom), promise);\n }\n\n if (count === 0) {\n promise.resolve(results);\n }\n\n return promise;\n }\n\n static hash(promises : O) : ZalgoPromise<$ObjMap(ZalgoPromise | Y) => Y>> { // eslint-disable-line no-undef\n let result = {};\n \n return ZalgoPromise.all(Object.keys(promises).map(key => {\n return ZalgoPromise.resolve(promises[key]).then(value => {\n result[key] = value;\n });\n })).then(() => {\n return result;\n });\n }\n\n static map(items : Array, method : (T) => (ZalgoPromise | X)) : ZalgoPromise> {\n // $FlowFixMe\n return ZalgoPromise.all(items.map(method));\n }\n\n static onPossiblyUnhandledException(handler : (err : mixed) => void) : { cancel : () => void } {\n return onPossiblyUnhandledException(handler);\n }\n\n static try>(method : (...args : A) => (ZalgoPromise | Y), context : ?C, args : ?A) : ZalgoPromise {\n\n if (method && typeof method !== 'function' && !method.call) {\n throw new Error('Promise.try expected a function');\n }\n\n let result;\n\n startActive();\n \n try {\n // $FlowFixMe\n result = method.apply(context, args || []);\n } catch (err) {\n endActive();\n return ZalgoPromise.reject(err);\n }\n\n endActive();\n\n return ZalgoPromise.resolve(result);\n }\n\n static delay(delay : number) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n setTimeout(resolve, delay);\n });\n }\n\n static isPromise(value : mixed) : boolean {\n\n if (value && value instanceof ZalgoPromise) {\n return true;\n }\n\n return isPromise(value);\n }\n\n static flush() : ZalgoPromise {\n return awaitActive(ZalgoPromise);\n }\n}\n","/* @flow */\n\nexport { ZalgoPromise } from './promise';\n","/* @flow */\n\nimport { on, send } from 'post-robot/src';\nimport { isWindowClosed, getDomain, isSameDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { config } from '../config';\n\nimport { noop } from './util';\n\nexport function proxyMethod(name : string, win : ?CrossDomainWindowType, originalMethod : Function) : Function {\n\n if (win && getDomain() === config.paypalDomain && !isSameDomain(win)) {\n\n if (win) {\n send(win, `proxy_${ name }`, { originalMethod }).catch(noop);\n }\n\n return originalMethod;\n }\n\n let methods = [];\n\n on(`proxy_${ name }`, { domain: config.paypal_domain_regex }, ({ data }) => {\n methods.push(data.originalMethod);\n });\n\n return function postMessageProxy() : mixed {\n\n methods = methods.filter(method => !isWindowClosed(method.source));\n\n if (methods.length) {\n return methods[methods.length - 1].apply(this, arguments).catch(() => {\n return originalMethod.apply(this, arguments);\n });\n }\n\n return originalMethod.apply(this, arguments);\n };\n}\n","/* @flow */\n\nimport { CONFIG as POSTROBOT_CONFIG } from 'post-robot/src';\nimport { setTransport, getTransport, addPayloadBuilder, addHeaderBuilder, addMetaBuilder,\n addTrackingBuilder, init, logLevels, config as loggerConfig } from 'beaver-logger/client';\nimport { getParent, PROTOCOL } from 'cross-domain-utils/src';\n\nimport { config } from '../config';\nimport { FPTI, PAYMENT_TYPE } from '../constants';\n\nimport { getSessionID, getButtonSessionID } from './session';\nimport { proxyMethod } from './proxy';\nimport { once } from './util';\nimport { getQueryParam } from './dom';\nimport { isPayPalDomain } from './security';\n\nfunction getRefererDomain() : string {\n return (window.xchild && window.xchild.getParentDomain)\n ? window.xchild.getParentDomain()\n : window.location.host;\n}\n\nconst setupProxyLogTransport = once(() => {\n setTransport(proxyMethod('log', getParent(window), getTransport()));\n});\n\nfunction getToken() : ?string {\n if (window.root && window.root.token) {\n return window.root.token;\n }\n\n if (isPayPalDomain()) {\n const queryToken = getQueryParam('token');\n\n if (queryToken) {\n return queryToken;\n }\n }\n}\n\nexport function initLogger() {\n\n setupProxyLogTransport();\n\n addPayloadBuilder(() => {\n return {\n referer: getRefererDomain(),\n host: window.location.host,\n path: window.location.pathname,\n env: config.env,\n country: config.locale.country,\n lang: config.locale.lang,\n uid: getSessionID(),\n ver: __PAYPAL_CHECKOUT__.__MINOR_VERSION__\n };\n });\n\n addHeaderBuilder(() => {\n return {\n 'x-app-name': 'checkoutjs'\n };\n });\n\n addMetaBuilder(() => {\n return {\n state: config.state\n };\n });\n\n addTrackingBuilder((payload = {}) => {\n\n const sessionID = getSessionID();\n const paymentToken = getToken();\n const buttonSessionID = payload[FPTI.KEY.BUTTON_SESSION_UID] || getButtonSessionID();\n\n let contextType;\n let contextID;\n\n if (paymentToken) {\n contextType = FPTI.CONTEXT_TYPE[PAYMENT_TYPE.EC_TOKEN];\n contextID = paymentToken;\n } else if (buttonSessionID) {\n contextType = FPTI.CONTEXT_TYPE.BUTTON_SESSION_ID;\n contextID = buttonSessionID;\n } else {\n contextType = payload[FPTI.KEY.CONTEXT_TYPE];\n contextID = payload[FPTI.KEY.CONTEXT_ID];\n }\n\n return {\n [ FPTI.KEY.FEED ]: FPTI.FEED.CHECKOUTJS,\n [ FPTI.KEY.DATA_SOURCE ]: FPTI.DATA_SOURCE.CHECKOUT,\n [ FPTI.KEY.CONTEXT_TYPE ]: contextType,\n [ FPTI.KEY.CONTEXT_ID ]: contextID,\n [ FPTI.KEY.SELLER_ID ]: config.merchantID,\n [ FPTI.KEY.SESSION_UID ]: sessionID,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: buttonSessionID,\n [ FPTI.KEY.VERSION ]: config.version,\n [ FPTI.KEY.TOKEN ]: paymentToken,\n [ FPTI.KEY.REFERER ]: getRefererDomain()\n };\n });\n\n const prefix = 'ppxo';\n\n if (window.location.protocol !== PROTOCOL.FILE) {\n init({\n uri: config.loggerUrl,\n heartbeat: false,\n logPerformance: false,\n prefix,\n logLevel: __PAYPAL_CHECKOUT__.__DEFAULT_LOG_LEVEL__\n });\n }\n}\n\nexport function setLogLevel(logLevel : string) {\n\n if (logLevels.indexOf(logLevel) === -1) {\n throw new Error(`Invalid logLevel: ${ logLevel }`);\n }\n\n config.logLevel = logLevel;\n loggerConfig.logLevel = logLevel;\n POSTROBOT_CONFIG.LOG_LEVEL = logLevel;\n window.LOG_LEVEL = logLevel;\n}\n","/* @flow */\n\nimport { info, flush as flushLogs } from 'beaver-logger/client';\n\nimport { config } from '../config';\n\nimport { isIEIntranet, getUserAgent } from './device';\nimport { once } from './util';\n\nconst bowserCache = {};\n\nfunction getBowser() : Object {\n\n const userAgent = getUserAgent();\n\n if (bowserCache[userAgent]) {\n return bowserCache[userAgent];\n }\n\n delete require.cache[require.resolve('bowser/bowser.min')];\n const bowser = require('bowser/bowser.min');\n\n bowserCache[userAgent] = bowser;\n\n return bowser;\n}\n\nexport function getBrowser() : { browser? : string, version? : string } {\n\n const bowser = getBowser();\n\n for (const browser of Object.keys(config.SUPPORTED_BROWSERS)) {\n if (bowser[browser]) {\n return { browser, version: bowser.version };\n }\n }\n\n return {};\n}\n\nfunction isBrowserEligible() : boolean {\n\n if (isIEIntranet()) {\n return false;\n }\n\n const bowser = getBowser();\n const { browser, version } = getBrowser();\n\n if (browser && version && bowser.compareVersions([ version, config.SUPPORTED_BROWSERS[browser] ]) === -1) {\n return false;\n }\n\n return true;\n}\n\nconst eligibilityResults = {};\n\nexport function isEligible() : boolean {\n\n if (isIEIntranet()) {\n return false;\n }\n\n const userAgent = window.navigator.userAgent;\n\n if (userAgent && eligibilityResults.hasOwnProperty(userAgent)) {\n return eligibilityResults[userAgent];\n }\n\n const result = isBrowserEligible();\n\n eligibilityResults[userAgent] = result;\n\n return result;\n}\n\nexport const checkRecognizedBrowser = once((state : string) => {\n\n const { browser } = getBrowser();\n\n if (!browser) {\n const { name, version, mobile, android, ios } = getBowser();\n info(`unrecognized_browser_${ state }`, { name, version, mobile, android, ios });\n flushLogs();\n }\n});\n","/* @flow */\n\nimport { warn } from 'beaver-logger/client';\n\nimport { isIE, isIEIntranet, isIECompHeader } from './device';\n\nfunction logWarn(err) : void {\n if (window.console) {\n if (window.console.warn) {\n return window.console.warn(err);\n }\n\n if (window.console.log) {\n return window.console.log(err);\n }\n }\n}\n\nexport function checkForCommonErrors() {\n\n if (JSON.stringify([]) !== '[]') {\n // $FlowFixMe\n if (Array.prototype.toJSON) {\n logWarn(`Custom Array.prototype.toJSON is causing incorrect json serialization of arrays. This is likely to cause issues. Probable cause is Prototype.js`);\n } else {\n logWarn(`JSON.stringify is doing incorrect serialization of arrays. This is likely to cause issues.`);\n }\n\n warn(`json_stringify_array_broken`);\n }\n\n if (JSON.stringify({}) !== '{}') {\n logWarn(`JSON.stringify is doing incorrect serialization of objects. This is likely to cause issues.`);\n\n warn(`json_stringify_object_broken`);\n }\n\n if (isIEIntranet()) {\n warn(`ie_intranet_mode`);\n }\n\n if (isIE() && !isIECompHeader()) {\n warn(`ie_meta_compatibility_header_missing`, {\n message: `Drop tag: ` });\n }\n\n // eslint-disable-next-line no-unused-vars\n function foo(bar, baz, zomg) {\n // pass;\n }\n\n if (foo.bind({ a: 1 }).length !== 3) {\n warn(`function_bind_arrity_overwritten`);\n }\n\n if (window.opener && window.parent !== window) {\n warn(`window_has_opener_and_parent`);\n }\n\n if (window.name && window.name.indexOf('__prerender') === 0) {\n warn(`prerender_running_checkoutjs`);\n }\n\n const context = {};\n\n function returnContext() : typeof context {\n return this;\n }\n\n if (returnContext.bind(context)() !== context) {\n warn(`function_bind_broken`);\n }\n\n if (window.Window && window.constructor && window.Window !== window.constructor) {\n warn(`window_constructor_does_not_match_window`);\n }\n\n // $FlowFixMe\n if (Object.assign && JSON.stringify({ a: 1, b: 2, c: 3 }) !== JSON.stringify({ a: 1, b: 2, c: 3 })) { // eslint-disable-line no-self-compare, compat/compat\n warn(`object_assign_broken`);\n }\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { addPayloadBuilder } from 'beaver-logger/client';\nimport { type SameDomainWindowType } from 'cross-domain-utils/src';\n\ntype RequestOptionsType = {|\n url : string,\n method? : string,\n headers? : { [key : string] : string },\n json? : Object,\n data? : { [key : string] : string },\n body? : string,\n win? : SameDomainWindowType,\n timeout? : number\n|};\n\nconst HEADERS = {\n CONTENT_TYPE: 'content-type',\n ACCEPT: 'accept'\n};\n\nconst headerBuilders = [];\nconst corrids = [];\n\naddPayloadBuilder(() => {\n return {\n prev_corr_ids: corrids.join(',')\n };\n});\n\nfunction parseHeaders(rawHeaders : string = '') : { [string] : string } {\n const result = {};\n for (const line of rawHeaders.trim().split('\\n')) {\n const [ key, ...values ] = line.split(':');\n result[key.toLowerCase()] = values.join(':').trim();\n }\n return result;\n}\n\nexport function request({ url, method = 'get', headers = {}, json, data, body, win = window, timeout = 0 } : RequestOptionsType) : ZalgoPromise {\n\n if (url === '/demo/checkout/api/braintree/client-token/') {\n // $FlowFixMe\n return ZalgoPromise.resolve('eyJ2ZXJzaW9uIjoyLCJhdXRob3JpemF0aW9uRmluZ2VycHJpbnQiOiJjMDFhZmRkM2Y1OTJmNWVhNTNlMzE5MWQwYmIyMWVjYjM5NzNlZGM1MzkwNDZiMjJmNTA2ODEyNzIzZmRlMTJifGNsaWVudF9pZD1jbGllbnRfaWQkc2FuZGJveCQ0ZHByYmZjNnBoNTk1Y2NqXHUwMDI2Y3JlYXRlZF9hdD0yMDE3LTA0LTI2VDIzOjI2OjU5Ljg3OTA3ODYwNiswMDAwXHUwMDI2bWVyY2hhbnRfaWQ9M3cydHR2d2QyNDY1NDhoZCIsImNvbmZpZ1VybCI6Imh0dHBzOi8vYXBpLnNhbmRib3guYnJhaW50cmVlZ2F0ZXdheS5jb206NDQzL21lcmNoYW50cy8zdzJ0dHZ3ZDI0NjU0OGhkL2NsaWVudF9hcGkvdjEvY29uZmlndXJhdGlvbiIsImNoYWxsZW5nZXMiOltdLCJlbnZpcm9ubWVudCI6InNhbmRib3giLCJjbGllbnRBcGlVcmwiOiJodHRwczovL2FwaS5zYW5kYm94LmJyYWludHJlZWdhdGV3YXkuY29tOjQ0My9tZXJjaGFudHMvM3cydHR2d2QyNDY1NDhoZC9jbGllbnRfYXBpIiwiYXNzZXRzVXJsIjoiaHR0cHM6Ly9hc3NldHMuYnJhaW50cmVlZ2F0ZXdheS5jb20iLCJhdXRoVXJsIjoiaHR0cHM6Ly9hdXRoLnZlbm1vLnNhbmRib3guYnJhaW50cmVlZ2F0ZXdheS5jb20iLCJhbmFseXRpY3MiOnsidXJsIjoiaHR0cHM6Ly9jbGllbnQtYW5hbHl0aWNzLnNhbmRib3guYnJhaW50cmVlZ2F0ZXdheS5jb20vM3cydHR2d2QyNDY1NDhoZCJ9LCJ0aHJlZURTZWN1cmVFbmFibGVkIjpmYWxzZSwicGF5cGFsRW5hYmxlZCI6dHJ1ZSwicGF5cGFsIjp7ImRpc3BsYXlOYW1lIjoiYmFyY28uMDMtZmFjaWxpdGF0b3JAZ21haWwuY29tIiwiY2xpZW50SWQiOiJBV3VZdnFnMGtaN2Y5S0V4TVpqZU53T3RjQV8yZVhnOWpMZy1QSnBGX0pnYk44M0YyVml5aEdnV2JCNDg4RGU3MFpucGRBZEI2TUNqekNqSyIsInByaXZhY3lVcmwiOiJodHRwczovL2V4YW1wbGUuY29tIiwidXNlckFncmVlbWVudFVybCI6Imh0dHBzOi8vZXhhbXBsZS5jb20iLCJiYXNlVXJsIjoiaHR0cHM6Ly9hc3NldHMuYnJhaW50cmVlZ2F0ZXdheS5jb20iLCJhc3NldHNVcmwiOiJodHRwczovL2NoZWNrb3V0LnBheXBhbC5jb20iLCJkaXJlY3RCYXNlVXJsIjpudWxsLCJhbGxvd0h0dHAiOnRydWUsImVudmlyb25tZW50Tm9OZXR3b3JrIjpmYWxzZSwiZW52aXJvbm1lbnQiOiJvZmZsaW5lIiwidW52ZXR0ZWRNZXJjaGFudCI6ZmFsc2UsImJyYWludHJlZUNsaWVudElkIjoibWFzdGVyY2xpZW50MyIsImJpbGxpbmdBZ3JlZW1lbnRzRW5hYmxlZCI6dHJ1ZSwibWVyY2hhbnRBY2NvdW50SWQiOiJVU0QiLCJjdXJyZW5jeUlzb0NvZGUiOiJVU0QifSwiY29pbmJhc2VFbmFibGVkIjpmYWxzZSwibWVyY2hhbnRJZCI6IjN3MnR0dndkMjQ2NTQ4aGQiLCJ2ZW5tbyI6Im9mZiJ9');\n }\n\n return new ZalgoPromise((resolve, reject) => {\n\n if ((json && data) || (json && body) || (data && json)) {\n throw new Error(`Only options.json or options.data or options.body should be passed`);\n }\n\n const normalizedHeaders = {};\n\n for (const key of Object.keys(headers)) {\n normalizedHeaders[key.toLowerCase()] = headers[key];\n }\n\n if (json) {\n normalizedHeaders[HEADERS.CONTENT_TYPE] = normalizedHeaders[HEADERS.CONTENT_TYPE] || 'application/json';\n } else if (data || body) {\n normalizedHeaders[HEADERS.CONTENT_TYPE] = normalizedHeaders[HEADERS.CONTENT_TYPE] || 'application/x-www-form-urlencoded; charset=utf-8';\n }\n\n normalizedHeaders[HEADERS.ACCEPT] = normalizedHeaders[HEADERS.ACCEPT] || 'application/json';\n\n for (const headerBuilder of headerBuilders) {\n const builtHeaders = headerBuilder();\n\n for (const key of Object.keys(builtHeaders)) {\n normalizedHeaders[key.toLowerCase()] = builtHeaders[key];\n }\n }\n\n const xhr = new win.XMLHttpRequest();\n\n xhr.addEventListener('load', function xhrLoad() : void {\n\n const responseHeaders = parseHeaders(this.getAllResponseHeaders());\n const corrID = responseHeaders['paypal-debug-id'] || 'unknown';\n\n if (responseHeaders['paypal-debug-id']) {\n corrids.push(responseHeaders['paypal-debug-id']);\n }\n\n if (!this.status) {\n return reject(new Error(`Request to ${ method.toLowerCase() } ${ url } failed: no response status code. Correlation id: ${ corrID }`));\n }\n \n const contentType = responseHeaders['content-type'];\n const isJSON = contentType && (contentType.indexOf('application/json') === 0 || contentType.indexOf('text/json') === 0);\n let res = this.responseText;\n\n try {\n res = JSON.parse(this.responseText);\n } catch (err) {\n if (isJSON) {\n return reject(new Error(`Invalid json: ${ this.responseText }. Correlation id: ${ corrID }`));\n }\n }\n\n if (this.status >= 400) {\n let message = `Request to ${ method.toLowerCase() } ${ url } failed with ${ this.status } error. Correlation id: ${ corrID }`;\n\n if (res) {\n if (typeof res === 'object' && res !== null) {\n res = JSON.stringify(res, null, 4);\n }\n\n message = `${ message }\\n\\n${ res }\\n`;\n }\n\n return reject(new Error(message));\n }\n\n return resolve(res);\n\n }, false);\n\n xhr.addEventListener('error', function xhrError(evt) {\n const corrID = this.getResponseHeader('paypal-debug-id');\n reject(new Error(`Request to ${ method.toLowerCase() } ${ url } failed: ${ evt.toString() }. Correlation id: ${ corrID }`));\n }, false);\n\n xhr.open(method, url, true);\n\n for (const key in normalizedHeaders) {\n if (normalizedHeaders.hasOwnProperty(key)) {\n xhr.setRequestHeader(key, normalizedHeaders[key]);\n }\n }\n\n if (json) {\n body = JSON.stringify(json);\n } else if (data) {\n body = Object.keys(data).map(key => {\n return `${ encodeURIComponent(key) }=${ data ? encodeURIComponent(data[key]) : '' }`;\n }).join('&');\n }\n\n xhr.timeout = timeout;\n xhr.ontimeout = function xhrTimeout() {\n reject(new Error(`Request to ${ method.toLowerCase() } ${ url } has timed out`));\n };\n\n xhr.send(body);\n });\n}\n\nrequest.get = (url : string, options = {}) => {\n return request({ method: 'get', url, ...options });\n};\n\nrequest.post = (url : string, data, options = {}) => {\n return request({ method: 'post', url, data, ...options });\n};\n\nrequest.addHeaderBuilder = (method) => {\n headerBuilders.push(method);\n};\n","/* @flow */\n\nimport { info, track, flush as flushLogs } from 'beaver-logger/client';\n\nimport { FPTI } from '../constants';\n\nimport { match } from './util';\nimport { getStorageState, getStorageID } from './session';\n\ntype Throttle = {|\n isEnabled : () => boolean,\n isDisabled : () => boolean,\n getTreatment : () => string,\n log : (string, payload? : { [string] : ?string }) => Throttle,\n logStart : (payload? : { [string] : ?string }) => Throttle,\n logComplete : (payload? : { [string] : ?string }) => Throttle\n|};\n\nfunction getThrottlePercentile(name : string) : number {\n return getStorageState(storage => {\n storage.throttlePercentiles = storage.throttlePercentiles || {};\n storage.throttlePercentiles[name] = storage.throttlePercentiles[name] || Math.floor(Math.random() * 100);\n return storage.throttlePercentiles[name];\n });\n}\n\nconst THROTTLE_GROUP = {\n TEST: 'test',\n CONTROL: 'control',\n THROTTLE: 'throttle'\n};\n\nexport function getThrottle(name : string, sample : number, sticky : boolean = true) : Throttle {\n\n const uid = getStorageID();\n\n const percentile = sticky ? getThrottlePercentile(name) : Math.floor(Math.random() * 100);\n\n let group;\n\n if (percentile < sample) {\n group = THROTTLE_GROUP.TEST;\n } else if ((sample >= 50) || ((sample <= percentile) && (percentile < (sample * 2)))) {\n group = THROTTLE_GROUP.CONTROL;\n } else {\n group = THROTTLE_GROUP.THROTTLE;\n }\n\n const treatment = `${ name }_${ group }`;\n\n let started = false;\n let forced = false;\n\n try {\n if (window.localStorage && window.localStorage.getItem(name)) {\n forced = true;\n }\n } catch (err) {\n // pass\n }\n\n return {\n\n isEnabled() : boolean {\n return (group === THROTTLE_GROUP.TEST) || forced;\n },\n\n isDisabled() : boolean {\n return (group !== THROTTLE_GROUP.TEST) && !forced;\n },\n\n getTreatment() : string {\n return treatment;\n },\n\n log(checkpointName : string, payload? : { [string] : ?string } = {}) : Throttle {\n if (!started) {\n return this;\n }\n\n const checkpoint = `${ name }_${ treatment }_${ checkpointName }`;\n info(checkpoint, { ...payload, expuid: uid });\n\n track({\n [ FPTI.KEY.EXPERIMENT_NAME ]: name,\n [ FPTI.KEY.TREATMENT_NAME ]: treatment,\n ...payload\n });\n\n flushLogs();\n return this;\n },\n\n logStart(payload? : { [string] : ?string } = {}) : Throttle {\n started = true;\n return this.log(`start`, payload);\n },\n\n logComplete(payload? : { [string] : ?string } = {}) : Throttle {\n if (!started) {\n return this;\n }\n\n return this.log(`complete`, payload);\n }\n };\n}\n\nexport function getReturnToken() : ?string {\n\n const token = match(window.location.href, /token=((EC-)?[A-Z0-9]+)/);\n const payer = match(window.location.href, /PayerID=([A-Z0-9]+)/);\n\n if (token && payer) {\n return token;\n }\n}\n","/* @flow */\n\nimport { debug } from 'beaver-logger/client';\nimport { getDomain } from 'cross-domain-utils/src';\n\nimport { config } from '../config';\n\nimport { memoize, domainMatches } from './util';\n\nexport const getCurrentScript = memoize(() : ?HTMLScriptElement => {\n\n const scripts = Array.prototype.slice.call(document.getElementsByTagName('script'));\n\n for (const script of scripts) {\n if (script.src && (script.src.replace(/^https?:/, '').split('?')[0] === config.scriptUrl || script.hasAttribute('data-paypal-checkout'))) {\n return script;\n }\n\n if (script.src && (script.src.indexOf('paypal.checkout.v4.js') !== -1)) {\n return script;\n }\n }\n\n if (document.currentScript) { // eslint-disable-line compat/compat\n debug(`current_script_not_recognized`, { src: document.currentScript.src }); // eslint-disable-line compat/compat\n }\n});\n\nexport function isPayPalObjects() : boolean {\n return Boolean(getCurrentScript());\n}\n\nexport function getScriptVersion() : string {\n if (__PAYPAL_CHECKOUT__.__MAJOR__ && isPayPalObjects()) {\n return __MIN__ ? 'min' : __PAYPAL_CHECKOUT__.__MAJOR_VERSION__;\n } else {\n return __MIN__ ? `${ __PAYPAL_CHECKOUT__.__MINOR_VERSION__ }.min` : __PAYPAL_CHECKOUT__.__MINOR_VERSION__;\n }\n}\n\nexport function getCurrentScriptUrl() : string {\n const script = getCurrentScript();\n\n if (script && typeof script.src === 'string') {\n let scriptUrl = script.src;\n\n if (scriptUrl.indexOf('http://www.paypalobjects.com') === 0) {\n scriptUrl = scriptUrl.replace('http://', 'https://');\n }\n\n return scriptUrl;\n }\n\n return `https://www.paypalobjects.com/api/checkout.${ __PAYPAL_CHECKOUT__.__MINOR_VERSION__ }${ __MIN__ ? '.min' : '' }.js`;\n}\n\nexport function getDomainSetting(name : string, def : ?T) : ?T {\n\n const hostname = window.xchild\n ? window.xchild.getParentDomain()\n : getDomain();\n\n if (config.domain_settings) {\n for (const domain of Object.keys(config.domain_settings)) {\n if (domainMatches(hostname, domain)) {\n return config.domain_settings[domain][name];\n }\n }\n }\n\n return def;\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { once, bridge } from 'post-robot/src';\n\nimport { config } from '../config';\n\nimport { isIEIntranet } from './device';\nimport { memoize } from './util';\nimport { getScriptVersion } from './script';\nimport { extendUrl } from './dom';\n\ntype FrameMetaData = {|\n iframeEligible : boolean,\n iframeEligibleReason : string,\n // eslint-disable-next-line flowtype/no-mutable-array\n rememberedFunding : Array\n|};\n\nexport const openMetaFrame = memoize((env : string = config.env) : ZalgoPromise => {\n return ZalgoPromise.try(() => {\n\n if (isIEIntranet()) {\n return {\n iframeEligible: false,\n iframeEligibleReason: 'ie_intranet',\n rememberedFunding: []\n };\n }\n\n const metaFrameUrl : string = config.metaFrameUrls[env];\n const metaFrameDomain : string = config.paypalDomains[env];\n\n return ZalgoPromise.try(() => {\n if (!bridge) {\n throw new Error(`Opening meta window without bridge support is not currently supported`);\n }\n\n const metaListener = once('meta', { domain: metaFrameDomain });\n\n return bridge.openBridge(extendUrl(metaFrameUrl, { version: getScriptVersion() }), metaFrameDomain)\n .then(() => metaListener)\n .then(({ data }) => data);\n });\n });\n});\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { FUNDING } from '../constants';\nimport type { FundingSource, FundingList } from '../types';\n\nimport { getStorageState, getGlobalState, getSessionState } from './session';\nimport { isDevice } from './device';\nimport { openMetaFrame } from './meta';\nimport { identity } from './util';\n\n// $FlowFixMe\nexport function getRememberedFunding(handler? : (rememberedFunding : FundingList) => T = identity) : T {\n return getStorageState(storage => {\n storage.rememberedFunding = storage.rememberedFunding || [];\n return handler(storage.rememberedFunding);\n });\n}\n\nfunction hasRememberedFunding(source : FundingSource) : ?boolean {\n\n if (getRememberedFunding(rememberedFunding => rememberedFunding.indexOf(source) !== -1)) {\n return true;\n }\n\n if (getSessionState(session => session.recentlyCheckedRemembered)) {\n return true;\n }\n\n return false;\n}\n\n\nfunction isRememberedFunding(source : FundingSource) : boolean {\n\n if (getRememberedFunding(rememberedFunding => rememberedFunding.indexOf(source) !== -1)) {\n return true;\n }\n\n if (getSessionState(session => session.recentlyCheckedRemembered)) {\n return false;\n }\n\n throw new Error(`Can not find remembered funding result`);\n}\n\nfunction getRememberedFundingPromises() : { [FundingSource] : ZalgoPromise } {\n return getGlobalState(global => {\n global.rememberFundingPromises = global.rememberFundingPromises || {};\n return global.rememberFundingPromises;\n });\n}\n\nfunction getRememberedFundingPromise(source : FundingSource) : ZalgoPromise {\n const promises = getRememberedFundingPromises();\n const promise = promises[source] = promises[source] || new ZalgoPromise();\n if (hasRememberedFunding(source)) {\n promise.resolve(isRememberedFunding(source));\n }\n return promise;\n}\n\nfunction flushRememberedFundingPromises() {\n const promises = getRememberedFundingPromises();\n const rememberedFunding = getRememberedFunding(sources => sources);\n\n for (const source of Object.keys(promises)) {\n promises[source].resolve(rememberedFunding.indexOf(source) !== -1);\n }\n}\n\nexport function rememberFunding(sources : FundingList) {\n getRememberedFunding(rememberedFunding => {\n for (const source of sources) {\n\n if (source === FUNDING.VENMO && !isDevice()) {\n continue;\n }\n if (rememberedFunding.indexOf(source) === -1) {\n rememberedFunding.push(source);\n }\n }\n\n flushRememberedFundingPromises();\n });\n\n getSessionState(session => {\n session.recentlyCheckedRemembered = true;\n });\n}\n\nfunction loadMeta() : ZalgoPromise {\n return openMetaFrame().then(({ rememberedFunding }) => {\n rememberFunding(rememberedFunding || []);\n });\n}\n\nexport function isFundingRemembered(source : FundingSource = FUNDING.PAYPAL) : ZalgoPromise {\n\n if (hasRememberedFunding(source)) {\n return getRememberedFundingPromise(source);\n }\n\n return loadMeta().then(() => {\n return getRememberedFundingPromise(source);\n });\n}\n\nexport function precacheRememberedFunding() : ZalgoPromise {\n if (!getSessionState(session => session.recentlyCheckedRemembered)) {\n return loadMeta();\n }\n return ZalgoPromise.resolve();\n}\n","/* @flow */\n\nexport * from './device';\nexport * from './util';\nexport * from './logger';\nexport * from './eligibility';\nexport * from './errors';\nexport * from './dom';\nexport * from './http';\nexport * from './beacon';\nexport * from './throttle';\nexport * from './namespace';\nexport * from './session';\nexport * from './proxy';\nexport * from './meta';\nexport * from './funding';\nexport * from './script';\nexport * from './jsx';\nexport * from './security';\n","/* @flow weak */\n/* eslint max-lines: 0 */\n\nimport { ENV, COUNTRY, LANG, LOCALE } from '../constants';\n\nfunction getDefaultEnv() : $Values {\n if (__TEST__) {\n return ENV.TEST;\n }\n\n if (typeof window === 'undefined' || typeof window.location === 'undefined') {\n return ENV.PRODUCTION;\n }\n\n if (window.location.host.indexOf('localhost.paypal.com') !== -1) {\n return ENV.LOCAL;\n }\n\n if (window.location.host.indexOf('qa.paypal.com') !== -1) {\n return ENV.STAGE;\n }\n\n if (window.location.host.indexOf('sandbox.paypal.com') !== -1) {\n return ENV.SANDBOX;\n }\n\n return ENV.PRODUCTION;\n}\n\nexport const config = {\n\n locales: LOCALE,\n\n scriptUrl: __TEST__\n ? `//${ window.location.host }/base/src/load.js`\n : `//www.paypalobjects.com/api/${ __FILE_NAME__ }`,\n\n // eslint-disable-next-line security/detect-unsafe-regex, unicorn/no-unsafe-regex\n paypal_domain_regex: /^(https?|mock):\\/\\/[a-zA-Z0-9_.-]+\\.paypal\\.com(:\\d+)?$/,\n\n version: __PAYPAL_CHECKOUT__.__MINOR_VERSION__,\n\n cors: true,\n\n env: getDefaultEnv(),\n\n state: 'checkoutjs',\n\n locale: {\n country: COUNTRY.US,\n lang: LANG.EN\n },\n\n stage: 'msmaster',\n stageDomain: 'qa.paypal.com',\n\n get stageUrl() : string {\n return `${ config.stage }.${ config.stageDomain }`;\n },\n\n get apiStageUrl() : string {\n return `${ config.apiStage }.${ config.stageDomain }`;\n },\n\n get localhostUrl() : string {\n return `http://localhost.paypal.com:${ config.ports.default }`;\n },\n\n set localhostUrl(val) {\n delete this.localhostUrl;\n this.localhostUrl = val;\n },\n\n merchantID: '',\n authCode: '',\n\n logLevel: __PAYPAL_CHECKOUT__.__DEFAULT_LOG_LEVEL__,\n\n throttles: {\n v4_mobile_device: 0\n },\n\n domain_settings: {\n 'walmart.com': {\n ie_full_page: false,\n allow_full_page_fallback: true,\n memoize_payment: true,\n force_bridge: true,\n log_authorize: true\n },\n\n 'ulta.com': {\n disable_venmo: true\n },\n\n 'barnesandnoble.com': {\n disable_venmo: true\n },\n\n 'bn.com': {\n disable_venmo: true\n },\n\n 'agoratix.com': {\n disable_venmo: true\n },\n\n 'tractorsupply.com': {\n disable_venmo: true\n },\n\n 'etsy.com': {\n ie_full_page: false,\n allow_full_page_fallback: true,\n memoize_payment: true,\n force_bridge: true,\n log_authorize: true\n },\n\n 'ticketmaster.com': {\n disable_venmo: true\n },\n\n 'livenation.com': {\n disable_venmo: true\n },\n\n 'frontgatetickets.com': {\n disable_venmo: true\n },\n\n 'williams-sonoma.com': {\n disable_venmo: true\n },\n\n 'westelm.com': {\n disable_venmo: true\n },\n\n 'markandgraham.com': {\n disable_venmo: true\n },\n\n 'potterybarn.com': {\n disable_venmo: true\n },\n\n 'potterybarnkids.com': {\n disable_venmo: true\n },\n\n 'pbteen.com': {\n disable_venmo: true\n },\n\n 'beallsflorida.com': {\n disable_venmo: true\n },\n\n 'therealreal.com': {\n disable_venmo: true\n },\n\n 'liveaquaria.com': {\n disable_venmo: true\n },\n\n 'drsfostersmith.com': {\n disable_venmo: true\n },\n\n 'boxed.com': {\n disable_venmo: true\n },\n\n 'bevisible.com': {\n disable_venmo: true\n },\n\n 'moeller.org': {\n disable_venmo: true\n },\n\n 'searshometownstores.com': {\n disable_venmo: true\n },\n\n 'searshardwarestores.com': {\n disable_venmo: true\n },\n\n 'searshomeapplianceshowroom.com': {\n disable_venmo: true\n },\n\n 'barkshop.com': {\n disable_venmo: true\n },\n\n 'vividseats.com': {\n disable_venmo: true\n },\n\n 'getcargo.today': {\n disable_venmo: true\n },\n\n 'smartdestinations.com': {\n disable_venmo: true\n },\n\n 'philadelphiapass.com': {\n disable_venmo: true\n },\n\n 'thesydneypass.com': {\n disable_venmo: true\n },\n\n '3secondlash.com': {\n disable_venmo: true\n },\n\n 'newyorkpass.com': {\n disable_venmo: true\n },\n\n 'dndbeyond.com': {\n disable_venmo: true\n },\n\n 'app.zapbuy.it': {\n disable_venmo: true\n },\n\n 'gamersaloon.com': {\n disable_venmo: true\n },\n\n '1800contacts.com': {\n disable_venmo: true\n },\n\n 'shopchatters.ca': {\n disable_venmo: true\n },\n\n 'shopguyswin.ca': {\n disable_venmo: true\n },\n\n 'jjill.com': {\n disable_venmo: true\n },\n\n 'qvc.com': {\n disable_venmo: true\n },\n\n 'stelladot.com': {\n disable_venmo: true\n },\n\n 'keepcollective.com': {\n disable_venmo: true\n },\n\n 'everskin.com': {\n disable_venmo: true\n },\n\n 'zulily.com': {\n disable_venmo: true\n },\n\n 'freshly.com': {\n disable_venmo: true\n },\n\n 'buypeticare.com': {\n disable_venmo: true\n },\n\n 'getownzone.com': {\n disable_venmo: true\n },\n\n 'uncommongoods.com': {\n disable_venmo: true\n },\n\n 'onegold.com': {\n disable_venmo: true\n },\n\n 'universitytees.com': {\n disable_venmo: true\n },\n\n 'revolve.com': {\n disable_venmo: true\n },\n\n 'functionofbeauty.com': {\n disable_venmo: true\n },\n\n 'givebutter.com': {\n disable_venmo: true\n },\n\n 'hausmart.com': {\n disable_venmo: true\n },\n\n 'derbyjackpot.com': {\n disable_venmo: true\n },\n\n 'ancestry.com': {\n disable_venmo: true\n },\n\n 'boats.net': {\n disable_venmo: true\n },\n\n 'partzilla.com': {\n disable_venmo: true\n },\n\n 'firedog.com': {\n disable_venmo: true\n },\n\n 'chick-fil-a.com': {\n disable_venmo: true\n },\n\n 'roku.com': {\n disable_venmo: true\n },\n\n 'barkbox.com': {\n disable_venmo: true\n },\n\n 'neimanmarcus.com': {\n disable_venmo: true\n },\n\n 'lastcall.com': {\n disable_venmo: true\n },\n\n 'horchow.com': {\n disable_venmo: true\n },\n\n 'bergdorfgoodman.com': {\n disable_venmo: true\n },\n\n 'fwrd.com': {\n disable_venmo: true\n },\n\n 'plunderdesign.com': {\n disable_venmo: true\n },\n\n 'stitchfix.com': {\n disable_venmo: true\n },\n\n 'revzilla.com': {\n disable_venmo: true\n },\n\n 'cyclegear.com': {\n disable_venmo: true\n },\n\n 'chegg.com': {\n disable_venmo: true\n },\n\n 'youniqueproducts.com': {\n disable_venmo: true\n },\n\n 'archives.com': {\n disable_venmo: true\n },\n\n 'hautelook.com': {\n disable_venmo: true\n },\n\n 'nordstromrack.com': {\n disable_venmo: true\n },\n\n 'motherhoodcanada.ca': {\n disable_venmo: true\n },\n\n 'atomtickets.com': {\n disable_venmo: true\n },\n\n 'trademore.com': {\n disable_venmo: true\n },\n\n 'lasheaseoffer.com': {\n disable_venmo: true\n },\n\n 'rookie.paypalsixthman.com': {\n disable_venmo: true\n },\n\n '1800Contacts.com': {\n disable_venmo: true\n },\n\n 'hulu.com': {\n disable_venmo: true\n },\n\n 'grubhub.com': {\n disable_venmo: true\n },\n\n 'eat24.com': {\n disable_venmo: true\n },\n\n 'seamless.com': {\n disable_venmo: true\n },\n\n 'freshfeetscrubber.com': {\n disable_venmo: true\n },\n\n 'opensky.com': {\n disable_venmo: true\n },\n\n 'dotandbo.com': {\n disable_venmo: true\n },\n\n 'storenvy.com': {\n disable_venmo: true\n },\n\n 'gemafina.com': {\n disable_venmo: true\n },\n\n 'pickperfect.com': {\n disable_venmo: true\n },\n\n '55mulberry.com': {\n disable_venmo: true\n },\n \n 'hollar.com': {\n disable_venmo: true\n },\n\n 'bjs.com': {\n disable_venmo: true\n },\n\n 'playsugarhouse.com': {\n disable_venmo: true\n },\n\n 'lakeshorelearning.com': {\n disable_venmo: true\n },\n\n 'llmhq.com': {\n disable_venmo: true\n },\n\n 'gainful.com': {\n disable_venmo: true\n },\n\n 'modaoperandi.com': {\n disable_venmo: true\n },\n \n 'play.jackpocket.com': {\n disable_venmo: true\n },\n\n 'crepeerase.com': {\n disable_venmo: true\n },\n\n 'specificbeauty.com': {\n disable_venmo: true\n },\n\n 'meaningfulbeauty.com': {\n disable_venmo: true\n },\n\n 'smileactives.com ': {\n disable_venmo: true\n },\n\n 'mally.com': {\n disable_venmo: true\n },\n\n 'westmorebeauty.com': {\n disable_venmo: true\n },\n\n 'subd.com': {\n disable_venmo: true\n },\n\n 'seacalmskin.com': {\n disable_venmo: true\n },\n \n 'whittier.edu': {\n disable_venmo: true\n },\n \n 'curology.com': {\n disable_venmo: true\n },\n \n 'monoprice.com': {\n disable_venmo: true\n },\n \n 'dominos.com': {\n disable_venmo: true\n },\n \n 'audiobooks.com': {\n disable_venmo: true\n },\n \n '1aauto.com': {\n disable_venmo: true\n },\n\n 'greatwolf.com': {\n disable_venmo: true\n },\n\n 'cvs.com': {\n disable_venmo: true\n },\n\n 'gilt.com': {\n disable_venmo: true\n },\n\n 'ruelala.com': {\n disable_venmo: true\n }\n },\n\n creditTestDomains: [ 'bluesuncorp.co.uk', 'nationsphotolab.com', 'plexusworldwide.com', 'nshss.org', 'bissell.com', 'mobstub.com', 'vuoriclothing.com', 'tape4backup.com', 'avivamiento.com', 'rhododendron.org', 'whiterabbitjapan.com', 'atsracing.net', 'thehilltopgallery.com', 'weedtraqr.com', 'worldpantry.com', 'ciraconnect.com', 'mymalls.com', 'prowinch.com', 'zodiacpoolsystems.com', 'everlywell.com', 'candlewarmers.com', 'chop.edu', 'incruises.com', 'flikn.com', 'didforsale.com', 'mcc.org', 'sygu.net', 'merchbar.com', 'eduinconline.com', 'us.livebetterwith.com', 'bakemeawish.com', 'judolaunch.com', 'eventcartel.com', 'tapatalk.com', 'telescope.com', 'covenant.edu', 'aquatruwater.com', 'spingo.com', 'usu.edu', 'getcelerity.com', 'brandless.com', 'saberigniter.com', 'euromodeltrains.com', 'gofasttrader.com', 'megamodzplanet.com', 'draftanalyzer.com', 'lovewithoutboundaries.com', 'filterpop.com', 'seekverify.com', 'photoandgo.com', 'sightseeingpass.com', 'bigoanddukes.com', 'thethirstyduck.com', 'thebrushguys.com', '907delivery.com', 'mauisails.com', 'drive.net', 'channelmax.net', 'modernrebelco.com', 'enchanteddiamonds.com', 'ibabbleon.com', 'fullgenomes.com', 'conn-comp.com', 'wingware.com', 'paradigmgoods.com', 'theneptunegroup.com', 'kidzartworks.com', 'unirealm.com', 'ncfarmsinc.com', 'oneofakindantiques.com', 'servers4less.com', 'stumpthespread.com', 'marketwagon.com', 'monsterhouseplans.com', 'canterburychoral.org', 'teacupnordic.org', 'thethirstyduck.com', 'medialoot.com', 'theartistunion.com', 'yourglamourzone.com', 'breckstables.com', 'mackephotography.com', 'dsaj.org', 'massluminosity.com', 'tespa.org', 'versatilearts.net', 'yecup.org', 'divinebusinessmanagement.com', 'captivatebeautyservices.com', 'class4me.com', 'wcsonlineuniversity.com', 'pvplive.com', 'kyneteks.com', 'rare-paper.com', 'bpg.bpgsim.biz', 'geodegallery.com', 'way.com', 'kringle.com', 'talentedmrsalas.ph', 'litcharts.com', 'purpletreephotography.com', 'apache.org', 'neopackage.com', 'globaldance.tv', 'integral.studio', 'airdoctorpro.com', 'ivoryandiron.com', 'yuengling.com', 'averysbranchfarms.com', 'amberreinink.com', 'skinnymechocolate.com', 'bmbl.net', 'ncwatercolor.net', 'astrograph.com', 'localadventures.mx', 'ripcurl.com', 'worldfootbrakechallenge.com', 'shespeakssales.com', 'obrienguitars.com', 'jadenikkolephoto.com', 'americavoice.com', 'cassiexie.com', 'aamastateconvention.org', 'rellesflorist.com', 'passionnobby.com', 'bodybyheidi.com', 'roqos.com', 'prijector.com', 'maryswanson.net', 'tsghobbies.com', 'erinlaytonphotography.com', 'darter.org', 'fountainpenhospital.com', 'myzestfullife.com', 'pcog.org', 'alisabethdesigns.com', 'katiemathisphoto.com', 'strictlybellaphotography.com', 'maptools.com', 'sites.google.com', 'gallerr.com', 'southfloridatrikke.com', 'caviar.tv', 'mintingmasters.com', 'prospectorsguild.com', 'inktale.com', 'prettygirlgoods.com', 'laceycahill.com', 'daniellenowak.com', 't212.org', 'scmsinc.com', 'babypaloozanc.com', 'tetrisonline.com', 'grdd.net', 'cdspg.info', 'airshipapparel.com', 'waft.com', 'extendpets.com', 'supplyhub.com', 'hlbsusa.com', 'jaderollerbeauty.com', 'theparentingjunkie.com', 'schagringas.com', 'yourscribemate.com', 'sportscollectibles.com', 'thedivinenoise.com', 'hometeamsonline.com', 'trademarkpress.com', 'destinationenglish.us', 'jacquesflowers.com', 'aliszhatchphotography.com', 'rusticfoundry.com', 'ahhhmassage.net', 'frezzor.com', 'mandelininc.com', 'kayleejackson.com', 'monkinstitute.org', 'eddiebsbbq.com', 'morningstarmediaservices.com', 'kinevative.com', 'orivet.com', 'digitalprinthouse.net', 'dynamicgenius.com', 'allpartsusa.com', 'flowersbydavid.net', 'nwvoices.org', 'leaptrade.com', 'tulsaschoolpics.com', 'alioth.io', 'windowflair.com', 'vitcom.net', 'simplybeautifulfashions.com', 'christinabenton.com', 'fromthedaughter.com', 'hometowngraphics.net', 'fibanalysis.com', 'creativejobscentral.com', 'sandbox.gg', 'jt-digitalmedia.com', 'kodable.com', 'birthingstone.com', 'taranicholephoto.com', 'hillyfieldsflorist.com', 'charitynoelphoto.com', 'auxdelicesfoods.com', 'terilynnphotography.com', 'folieadeuxevents.com', 'karensfloral.com', 'montgomerydiveclub.com', 'rainbowplastics.com', 'confettionthedancefloor.com', 'vomozmedia.com', 'neatmod.com', 'getnaturafled.com', 'callingpost.com', 'iamfamily.org', 'pedigreeonline.com', 'typeboost.io', 'in-n-outpetdoor.com', 'nerdstockgc.com', 'keiadmin.com', 'createdbykaui.com', 'aikophoto.com', 'lonestar.ink', 'stlfurs.com', 'treasurelistings.com', 'thecubicle.us', 'redclaypaper.com', 'blushhousemedia.com', 'documentsanddesigns.com', 'whitneyleighphotography.shootproof.com', 'amaryllisday.com', 'hermanproav.com', 'felicemedia.com', 'withloveplacenta.com', 'store.brgadgets.co', 'klowephoto.com', 'spenceraustinconsulting.com', 'sno-eagles.org', 'dsatallahassee.org', 'bakupages.com', 'neswc.com', 'josiebrooksphotography.com', 'brisksale.com', 'legalwhoosh.com', 'jasmineeaster.com', 'swatstudios.com', 'facebook.com', 'shakershell.com', 'alexiswinslow.com', 'mixeddimensions.com', 'sweetpproductions.com', 'lbeaphotography.com', 'otlseatfillers.com', 'jdtickets.com', 'catholicar.com', 'masque.com', 'smalltownstudio.net', 'goherbalife.com', 'itzyourz.com', 'magazinespeedloader.com', 'dreammachines.io', 'dallasdieteticalliance.org', 'http:', 'medair.org', 'unbridledambition.com', 'sarasprints.com', 'wiperecord.com', 'showmyrabbit.com', 'cctrendsshop.com', 'rachelalessandra.com', 'otherworld-apothecary.com', 'melissaannphoto.com', 'girlceo.co', 'seasidemexico.com', 'telosid.com', 'instin.com', 'marinecorpsmustang.org', 'lancityconnect.com', 'hps1.org', 'karenware.com', 'livecurriculum.com', 'spellingstars.com', 'vektorfootball.com', 'zaltv.com', 'nebraskamayflower.org', 'ethiopianspices.com', 'immitranslate.com', 'rafaelmagic.com.com', 'bahc1.org', 'newenamel.com', 'bhchp.org', 'buybulkamerica.com', 'sourcepoint.com', 'squarestripsports.com', 'wix.com', 'wilderootsphotography.com', 'goodsalt.com', 'systemongrid.com', 'designmil.org', 'freshtrendhq.com', 'valisimofashions.com', 'buyneatly.com', 'getbeauty.us', 'intellimidia.com' ],\n \n customCountry: false,\n\n SUPPORTED_BROWSERS: {\n msie: '11',\n firefox: '30',\n chrome: '27',\n safari: '7',\n opera: '16',\n msedge: '12',\n samsungBrowser: '2.1',\n silk: '59.3',\n ucbrowser: '10.0.0.488',\n vivaldi: '1.91'\n },\n\n session_uid_lifetime: 5 * 60 * 1000,\n\n _apiStage: '',\n\n get apiStage() : string {\n return config._apiStage || config.stage;\n },\n\n set apiStage(value) {\n config._apiStage = value;\n },\n\n ports: {\n default: 8000,\n button: 8000,\n checkout: 8000,\n guest: 8001,\n altpay: 3000\n },\n\n get paypalUrls() : Object {\n return {\n [ ENV.LOCAL ]: config.localhostUrl,\n [ ENV.STAGE ]: `https://www.${ config.stageUrl }`,\n [ ENV.SANDBOX ]: `https://www.sandbox.paypal.com`,\n [ ENV.PRODUCTION ]: `https://www.paypal.com`,\n [ ENV.TEST ]: `${ window.location.protocol }//${ window.location.host }`,\n [ ENV.DEMO ]: `${ window.location.protocol }//localhost.paypal.com:${ window.location.port }`\n };\n },\n\n get paypalDomains() : Object {\n return {\n [ ENV.LOCAL ]: 'http://localhost.paypal.com:8000',\n [ ENV.STAGE ]: `https://www.${ config.stageUrl }`,\n [ ENV.SANDBOX ]: `https://www.sandbox.paypal.com`,\n [ ENV.PRODUCTION ]: `https://www.paypal.com`,\n [ ENV.TEST ]: `mock://www.paypal.com`,\n [ ENV.DEMO ]: `${ window.location.protocol }//localhost.paypal.com:${ window.location.port }`\n };\n },\n\n get wwwApiUrls() : Object {\n return {\n [ ENV.LOCAL ]: `https://www.${ config.stageUrl }`,\n [ ENV.STAGE ]: `https://www.${ config.stageUrl }`,\n [ ENV.SANDBOX ]: `https://www.sandbox.paypal.com`,\n [ ENV.PRODUCTION ]: `https://www.paypal.com`,\n [ ENV.TEST ]: `${ window.location.protocol }//${ window.location.host }`\n };\n },\n\n get corsApiUrls() : Object {\n return {\n [ ENV.LOCAL ]: `https://${ config.apiStageUrl }:12326`,\n [ ENV.STAGE ]: `https://${ config.apiStageUrl }:12326`,\n [ ENV.SANDBOX ]: `https://cors.api.sandbox.paypal.com`,\n [ ENV.PRODUCTION ]: `https://cors.api.paypal.com`,\n [ ENV.TEST ]: `${ window.location.protocol }//${ window.location.host }`\n };\n },\n\n get apiUrls() : Object {\n\n const domain = `${ window.location.protocol }//${ window.location.host }`;\n const corsApiUrls = config.corsApiUrls;\n const wwwApiUrls = config.wwwApiUrls;\n\n return {\n [ ENV.LOCAL ]: domain === wwwApiUrls.local ? wwwApiUrls.local : corsApiUrls.local,\n [ ENV.STAGE ]: domain === wwwApiUrls.stage ? wwwApiUrls.stage : corsApiUrls.stage,\n [ ENV.SANDBOX ]: domain === wwwApiUrls.sandbox ? wwwApiUrls.sandbox : corsApiUrls.sandbox,\n [ ENV.PRODUCTION ]: domain === wwwApiUrls.production ? wwwApiUrls.production : corsApiUrls.production,\n [ ENV.TEST ]: domain === wwwApiUrls.test ? wwwApiUrls.test : corsApiUrls.test\n };\n },\n\n get checkoutUri() : ?string {\n return null;\n },\n\n set checkoutUri(val) {\n delete this.checkoutUri;\n this.checkoutUri = val;\n },\n\n get checkoutUris() : Object {\n if (config.checkoutUri) {\n return {\n [ ENV.LOCAL ]: config.checkoutUri,\n [ ENV.STAGE ]: config.checkoutUri,\n [ ENV.SANDBOX ]: config.checkoutUri,\n [ ENV.PRODUCTION ]: config.checkoutUri,\n [ ENV.TEST ]: config.checkoutUri,\n [ ENV.DEMO ]: config.checkoutUri\n };\n }\n\n return {\n [ ENV.LOCAL ]: `/webapps/hermes`,\n [ ENV.STAGE ]: `/webapps/hermes`,\n [ ENV.SANDBOX ]: `/checkoutnow`,\n [ ENV.PRODUCTION ]: `/checkoutnow`,\n [ ENV.TEST ]: `/base/test/windows/checkout/index.htm?checkouturl=true`,\n [ ENV.DEMO ]: `/demo/dev/checkout.htm`\n };\n },\n\n altpayUris: {\n [ ENV.LOCAL ]: `/latinumcheckout`,\n [ ENV.STAGE ]: `/latinumcheckout`,\n [ ENV.SANDBOX ]: `/latinumcheckout`,\n [ ENV.PRODUCTION ]: `/latinumcheckout`,\n [ ENV.TEST ]: `/base/test/windows/checkout/index.htm?checkouturl=true`,\n [ ENV.DEMO ]: `/demo/dev/checkout.htm`\n },\n\n guestUris: {\n [ ENV.LOCAL ]: `/webapps/xoonboarding`,\n [ ENV.STAGE ]: `/webapps/xoonboarding`,\n [ ENV.SANDBOX ]: `/webapps/xoonboarding`,\n [ ENV.PRODUCTION ]: `/webapps/xoonboarding`,\n [ ENV.TEST ]: `/base/test/windows/checkout/index.htm?guesturl=true`,\n [ ENV.DEMO ]: `/demo/dev/guest.htm`\n },\n\n billingUris: {\n [ ENV.LOCAL ]: `/webapps/hermes/agreements`,\n [ ENV.STAGE ]: `/webapps/hermes/agreements`,\n [ ENV.SANDBOX ]: `/agreements/approve`,\n [ ENV.PRODUCTION ]: `/agreements/approve`,\n [ ENV.TEST ]: `/base/test/windows/checkout/index.htm?billingurl=true`,\n [ ENV.DEMO ]: `/demo/dev/checkout.htm`\n },\n\n buttonUris: {\n [ ENV.LOCAL ]: `/smart/button`,\n [ ENV.STAGE ]: `/smart/button`,\n [ ENV.SANDBOX ]: `/smart/button`,\n [ ENV.PRODUCTION ]: `/smart/button`,\n [ ENV.TEST ]: `/base/test/windows/button/index.htm`,\n [ ENV.DEMO ]: `/demo/dev/button.htm`\n },\n\n inlinedCardFieldUris: {\n [ ENV.LOCAL ]: `/smart/card-fields`,\n [ ENV.STAGE ]: `/smart/card-fields`,\n [ ENV.SANDBOX ]: `/smart/card-fields`,\n [ ENV.PRODUCTION ]: `/smart/card-fields`,\n [ ENV.TEST ]: `/base/test/windows/card-fields/index.htm`,\n [ ENV.DEMO ]: `/demo/dev/card.htm`\n },\n\n postBridgeUris: {\n [ ENV.LOCAL ]: `/webapps/hermes/component-meta`,\n [ ENV.STAGE ]: `/webapps/hermes/component-meta`,\n [ ENV.SANDBOX ]: `/webapps/hermes/component-meta`,\n [ ENV.PRODUCTION ]: `/webapps/hermes/component-meta`,\n [ ENV.TEST ]: `/base/test/windows/component-meta/index.htm`,\n [ ENV.DEMO ]: `/demo/dev/bridge.htm`\n },\n\n legacyCheckoutUris: {\n [ ENV.LOCAL ]: `/cgi-bin/webscr?cmd=_express-checkout&xo_node_fallback=true`,\n [ ENV.STAGE ]: `/cgi-bin/webscr?cmd=_express-checkout&xo_node_fallback=true`,\n [ ENV.SANDBOX ]: `/cgi-bin/webscr?cmd=_express-checkout&xo_node_fallback=true`,\n [ ENV.PRODUCTION ]: `/cgi-bin/webscr?cmd=_express-checkout&xo_node_fallback=true`,\n [ ENV.TEST ]: `#fallback`\n },\n\n buttonJSUrls: {\n [ ENV.LOCAL ]: `https://www.paypalobjects.com/api/button.js`,\n [ ENV.STAGE ]: `https://www.paypalobjects.com/api/button.js`,\n [ ENV.SANDBOX ]: `https://www.paypalobjects.com/api/button.js`,\n [ ENV.PRODUCTION ]: `https://www.paypalobjects.com/api/button.js`,\n [ ENV.TEST ]: `/base/test/lib/button.js`,\n [ ENV.DEMO ]: `https://www.paypalobjects.com/api/button.js`\n },\n\n get buttonJSUrl() : string {\n return config.buttonJSUrls[config.env];\n },\n\n loginUri: `/signin/`,\n\n hermesLoggerUri: `/webapps/hermes/api/logger`,\n\n loggerUri: `/xoplatform/logger/api/logger`,\n\n loggerThrottlePercentage: 1.0, // 100%\n\n pptmUri: `/tagmanager/pptm.js`,\n\n get postBridgeUri() : string {\n return `${ config.postBridgeUris[config.env] }?xcomponent=1`;\n },\n\n paymentStandardUri: `/webapps/xorouter?cmd=_s-xclick`,\n\n authApiUri: `/v1/oauth2/token`,\n paymentApiUri: `/v1/payments/payment`,\n orderApiUri: `/v2/checkout/orders`,\n billingApiUri: `/v1/billing-agreements/agreement-tokens`,\n experienceApiUri: `/v1/payment-experience/web-profiles`,\n trackingApiUri: `/v1/risk/transaction-contexts`,\n\n get checkoutUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local }${ config.checkoutUris.local.replace(`:${ config.ports.default }`, `:${ config.ports.checkout }`) }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.checkoutUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.checkoutUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.checkoutUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.checkoutUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.test }${ config.checkoutUris.demo }`\n };\n },\n\n get guestUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local.replace(`:${ config.ports.default }`, `:${ config.ports.guest }`) }${ config.guestUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.guestUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.guestUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.guestUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.guestUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.test }${ config.guestUris.demo }`\n };\n },\n\n get altpayUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local.replace(`:${ config.ports.default }`, `:${ config.ports.altpay }`) }${ config.altpayUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.altpayUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.altpayUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.altpayUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.altpayUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.test }${ config.altpayUris.demo }`\n };\n },\n\n get billingUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local.replace(`:${ config.ports.default }`, `:${ config.ports.checkout }`) }${ config.billingUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.billingUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.billingUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.billingUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.billingUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.test }${ config.billingUris.demo }`\n };\n },\n\n get buttonUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local.replace(`:${ config.ports.default }`, `:${ config.ports.button }`) }${ config.buttonUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.buttonUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.buttonUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.buttonUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.buttonUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.demo }${ config.buttonUris.demo }`\n };\n },\n\n get inlinedCardFieldUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local.replace(`:${ config.ports.default }`, `:${ config.ports.button }`) }${ config.inlinedCardFieldUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.inlinedCardFieldUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.inlinedCardFieldUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.inlinedCardFieldUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.inlinedCardFieldUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.demo }${ config.inlinedCardFieldUris.demo }`\n };\n },\n\n get loginUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.stage }${ config.loginUri }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.loginUri }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.loginUri }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.loginUri }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.loginUri }`\n };\n },\n\n get paymentsStandardUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local }${ config.paymentStandardUri }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.paymentStandardUri }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.paymentStandardUri }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.paymentStandardUri }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.paymentStandardUri }`\n };\n },\n\n get metaFrameUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local }${ config.postBridgeUri }&env=local`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.postBridgeUri }&env=stage&stage=${ config.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.postBridgeUri }&env=sandbox`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.postBridgeUri }&env=production`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.postBridgeUri }&env=test`,\n [ ENV.DEMO ]: `${ paypalUrls.demo }${ config.postBridgeUri }&env=demo`\n };\n },\n\n get legacyCheckoutUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.stage }${ config.legacyCheckoutUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.legacyCheckoutUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.legacyCheckoutUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.legacyCheckoutUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.legacyCheckoutUris.test }`\n };\n },\n\n get authApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const authApiUri = config.authApiUri;\n\n return {\n [ ENV.LOCAL ]: `${ apiUrls.local }${ authApiUri }`,\n [ ENV.STAGE ]: `${ apiUrls.stage }${ authApiUri }`,\n [ ENV.SANDBOX ]: `${ apiUrls.sandbox }${ authApiUri }`,\n [ ENV.PRODUCTION ]: `${ apiUrls.production }${ authApiUri }`,\n [ ENV.TEST ]: `${ apiUrls.test }${ authApiUri }`\n };\n },\n\n get paymentApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const paymentApiUri = config.paymentApiUri;\n\n return {\n [ ENV.LOCAL ]: `${ apiUrls.local }${ paymentApiUri }`,\n [ ENV.STAGE ]: `${ apiUrls.stage }${ paymentApiUri }`,\n [ ENV.SANDBOX ]: `${ apiUrls.sandbox }${ paymentApiUri }`,\n [ ENV.PRODUCTION ]: `${ apiUrls.production }${ paymentApiUri }`,\n [ ENV.TEST ]: `${ apiUrls.test }${ paymentApiUri }`\n };\n },\n\n get orderApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const orderApiUri = config.orderApiUri;\n\n return {\n [ENV.LOCAL]: `${ apiUrls.local }${ orderApiUri }`,\n [ENV.STAGE]: `${ apiUrls.stage }${ orderApiUri }`,\n [ENV.SANDBOX]: `${ apiUrls.sandbox }${ orderApiUri }`,\n [ENV.PRODUCTION]: `${ apiUrls.production }${ orderApiUri }`,\n [ENV.TEST]: `${ apiUrls.test }${ orderApiUri }`\n };\n },\n\n get billingApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const billingApiUri = config.billingApiUri;\n\n return {\n [ ENV.LOCAL ]: `${ apiUrls.local }${ billingApiUri }`,\n [ ENV.STAGE ]: `${ apiUrls.stage }${ billingApiUri }`,\n [ ENV.SANDBOX ]: `${ apiUrls.sandbox }${ billingApiUri }`,\n [ ENV.PRODUCTION ]: `${ apiUrls.production }${ billingApiUri }`,\n [ ENV.TEST ]: `${ apiUrls.test }${ billingApiUri }`\n };\n },\n\n get experienceApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const experienceApiUri = config.experienceApiUri;\n\n return {\n [ ENV.LOCAL ]: `${ apiUrls.local }${ experienceApiUri }`,\n [ ENV.STAGE ]: `${ apiUrls.stage }${ experienceApiUri }`,\n [ ENV.SANDBOX ]: `${ apiUrls.sandbox }${ experienceApiUri }`,\n [ ENV.PRODUCTION ]: `${ apiUrls.production }${ experienceApiUri }`,\n [ ENV.TEST ]: `${ apiUrls.test }${ experienceApiUri }`\n };\n },\n\n get trackingApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const trackingApiUri = config.trackingApiUri;\n\n return {\n [ ENV.LOCAL ]: `${ apiUrls.local }${ trackingApiUri }`,\n [ ENV.STAGE ]: `${ apiUrls.stage }${ trackingApiUri }`,\n [ ENV.SANDBOX ]: `${ apiUrls.sandbox }${ trackingApiUri }`,\n [ ENV.PRODUCTION ]: `${ apiUrls.production }${ trackingApiUri }`,\n [ ENV.TEST ]: `${ apiUrls.test }${ trackingApiUri }`\n };\n },\n\n _paypalUrl: '',\n\n get paypalUrl() : string {\n return this._paypalUrl || config.paypalUrls[config.env];\n },\n\n set paypalUrl(value) {\n this._paypalUrl = value;\n },\n\n get paypalDomain() : string {\n return config.paypalDomains[config.env];\n },\n\n get corsApiUrl() : string {\n return config.corsApiUrls[config.env];\n },\n\n get wwwApiUrl() : string {\n return config.wwwApiUrls[config.env];\n },\n\n get apiUrl() : string {\n\n const domain = `${ window.location.protocol }//${ window.location.host }`;\n const corsApiUrl = config.corsApiUrl;\n const wwwApiUrl = config.wwwApiUrl;\n\n return domain === wwwApiUrl ? wwwApiUrl : corsApiUrl;\n },\n\n get checkoutUrl() : string {\n return `${ config.paypalUrl }${ config.checkoutUris[config.env] }`;\n },\n\n get billingUrl() : string {\n return `${ config.paypalUrl }${ config.billingUris[config.env] }`;\n },\n\n get buttonUrl() : string {\n return `${ config.paypalUrl }${ config.buttonUris[config.env] }`;\n },\n\n get legacyCheckoutUrl() : string {\n return config.legacyCheckoutUrls[config.env];\n },\n\n get postBridgeUrl() : string {\n return `${ config.paypalUrl }${ config.postBridgeUri }`;\n },\n\n get postBridgeDomain() : string {\n return `${ config.paypalDomain }`;\n },\n\n get loggerUrl() : string {\n const isTestExperiment = Math.random() < config.loggerThrottlePercentage;\n const loggerUrl = isTestExperiment ? config.loggerUri : config.hermesLoggerUri;\n\n return `${ config.paypalUrl }${ loggerUrl }`;\n },\n\n get pptmUrl() : string {\n return `${ config.paypalUrls[config.env] }${ config.pptmUri }`;\n },\n\n get authApiUrl() : string {\n return `${ config.apiUrl }${ config.authApiUri }`;\n },\n\n get paymentApiUrl() : string {\n return `${ config.apiUrl }${ config.paymentApiUri }`;\n },\n\n get orderApiUrl() : string {\n return `${ config.apiUrl }${ config.orderApiUri }`;\n },\n\n get billingApiUrl() : string {\n return `${ config.apiUrl }${ config.billingApiUri }`;\n },\n\n get experienceApiUrl() : string {\n return `${ config.apiUrl }${ config.experienceApiUri }`;\n },\n\n defaultLocale: {\n country: COUNTRY.US,\n lang: LANG.EN\n }\n};\n","/* @flow */\n\nexport * from './config';\n","\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nexport function extend(dest, src, over=true) {\n dest = dest || {};\n src = src || {};\n\n for (let i in src) {\n if (src.hasOwnProperty(i)) {\n if (over || !dest.hasOwnProperty(i)) {\n dest[i] = src[i];\n }\n }\n }\n\n return dest;\n}\n\nexport function isSameProtocol(url) {\n return window.location.protocol === url.split('/')[0];\n}\n\nexport function isSameDomain(url) {\n let match = url.match(/https?:\\/\\/[^/]+/);\n\n if (!match) {\n return true;\n }\n\n return match[0] === `${window.location.protocol}//${window.location.host}`;\n}\n\nexport function ajax(method, url, headers={}, data={}, { fireAndForget = false } = {}) {\n\n return new ZalgoPromise(resolve => {\n let XRequest = window.XMLHttpRequest || window.ActiveXObject;\n\n if (window.XDomainRequest && !isSameDomain(url)) {\n\n if (!isSameProtocol(url)) {\n return resolve();\n }\n\n XRequest = window.XDomainRequest;\n }\n\n let req = new XRequest('MSXML2.XMLHTTP.3.0');\n req.open(method.toUpperCase(), url, true);\n\n if (typeof req.setRequestHeader === 'function') {\n req.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n req.setRequestHeader('Content-type', 'application/json');\n\n for (let headerName in headers) {\n if (headers.hasOwnProperty(headerName)) {\n req.setRequestHeader(headerName, headers[headerName]);\n }\n }\n }\n\n if (fireAndForget) {\n resolve();\n } else {\n req.onreadystatechange = () => {\n if (req.readyState > 3) {\n resolve();\n }\n };\n }\n\n req.send(JSON.stringify(data).replace(/&/g, '%26'));\n });\n}\n\nexport function promiseDebounce(method, interval) {\n\n let debounce = {};\n\n return function() {\n let args = arguments;\n\n if (debounce.timeout) {\n clearTimeout(debounce.timeout);\n delete debounce.timeout;\n }\n\n debounce.timeout = setTimeout(() => {\n\n let resolver = debounce.resolver;\n let rejector = debounce.rejector;\n\n delete debounce.promise;\n delete debounce.resolver;\n delete debounce.rejector;\n delete debounce.timeout;\n\n return ZalgoPromise.resolve().then(() => {\n return method.apply(null, args);\n }).then(resolver, rejector);\n\n }, interval);\n\n debounce.promise = debounce.promise || new ZalgoPromise((resolver, rejector) => {\n debounce.resolver = resolver;\n debounce.rejector = rejector;\n });\n\n return debounce.promise;\n };\n}\n\nexport function onWindowReady() : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n if (typeof document !== 'undefined' && document.readyState === 'complete') {\n resolve();\n }\n\n window.addEventListener('load', resolve);\n });\n}\n\nexport function safeInterval(method, time) {\n\n let timeout;\n\n function loop() {\n timeout = setTimeout(() => {\n method();\n loop();\n }, time);\n }\n\n loop();\n\n return {\n cancel() {\n clearTimeout(timeout);\n }\n };\n}\n\nexport function uniqueID() {\n let chars = '0123456789abcdef';\n\n return 'xxxxxxxxxx'.replace(/./g, () => {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n });\n}\n\nexport function isIE() {\n return Boolean(window.document.documentMode);\n}\n","\nexport let payloadBuilders = [];\nexport let metaBuilders = [];\nexport let trackingBuilders = [];\nexport let headerBuilders = [];\n\nexport function addPayloadBuilder(builder) {\n payloadBuilders.push(builder);\n}\n\nexport function addMetaBuilder(builder) {\n metaBuilders.push(builder);\n}\n\nexport function addTrackingBuilder(builder) {\n trackingBuilders.push(builder);\n}\n\nexport function addHeaderBuilder(builder) {\n headerBuilders.push(builder);\n}","\nexport let config = {\n\n uri: '',\n prefix: '',\n\n initial_state_name: 'init',\n\n flushInterval: 10 * 60 * 1000,\n debounceInterval: 10,\n\n sizeLimit: 300,\n\n // Supress `console.log`s when `true`\n // Recommended for production usage\n silent: false,\n\n heartbeat: true,\n heartbeatConsoleLog: true,\n heartbeatInterval: 5000,\n heartbeatTooBusy: false,\n heartbeatTooBusyThreshold: 10000,\n\n logLevel: 'warn',\n\n autoLog: ['warn', 'error'],\n\n logUnload: true,\n logPerformance: true\n};\n\nexport let logLevels = [ 'error', 'warn', 'info', 'debug' ];\n","\nimport { extend, promiseDebounce, ajax, isIE } from './util';\nimport { payloadBuilders, metaBuilders, trackingBuilders, headerBuilders } from './builders';\nimport { config, logLevels } from './config';\n\nexport let buffer = [];\nexport let tracking = [];\n\nlet transport = (headers, data, options) => {\n return ajax('post', config.uri, headers, data, options);\n}\n\nexport function getTransport() {\n return transport;\n}\n\nexport function setTransport(newTransport) {\n transport = newTransport;\n}\n\nlet loaded = false;\n\nsetTimeout(() => {\n loaded = true;\n}, 1);\n\nexport function print(level, event, payload) {\n\n if (typeof window === 'undefined' || !window.console || !window.console.log) {\n return;\n }\n\n if (!loaded) {\n return setTimeout(() => print(level, event, payload), 1);\n }\n\n let logLevel = config.logLevel;\n\n if (window.LOG_LEVEL) {\n logLevel = window.LOG_LEVEL;\n }\n\n if (logLevels.indexOf(level) > logLevels.indexOf(logLevel)) {\n return;\n }\n\n payload = payload || {};\n\n let args = [event];\n\n if(isIE()){\n payload = JSON.stringify(payload);\n }\n\n args.push(payload);\n\n if (payload.error || payload.warning) {\n args.push('\\n\\n', payload.error || payload.warning);\n }\n\n try {\n if (window.console[level] && window.console[level].apply) {\n window.console[level].apply(window.console, args);\n } else if (window.console.log && window.console.log.apply) {\n window.console.log.apply(window.console, args);\n }\n } catch (err) {\n // pass\n }\n}\n\nexport function immediateFlush({ fireAndForget = false } = {}) {\n\n if (typeof window === 'undefined') {\n return;\n }\n\n if (!config.uri) {\n return;\n }\n\n let hasBuffer = buffer.length;\n let hasTracking = tracking.length;\n\n if (!hasBuffer && !hasTracking) {\n return;\n }\n\n let meta = {};\n\n for (let builder of metaBuilders) {\n try {\n extend(meta, builder(meta), false);\n } catch (err) {\n console.error('Error in custom meta builder:', err.stack || err.toString());\n }\n }\n\n let headers = {};\n\n for (let builder of headerBuilders) {\n try {\n extend(headers, builder(headers), false);\n } catch (err) {\n console.error('Error in custom header builder:', err.stack || err.toString());\n }\n }\n\n let events = buffer;\n\n let req = transport(headers, {\n events,\n meta,\n tracking\n }, {\n fireAndForget\n });\n\n buffer = [];\n tracking = [];\n\n return req;\n}\n\nexport let flush = promiseDebounce(immediateFlush, config.debounceInterval);\n\n\nfunction enqueue(level, event, payload) {\n\n buffer.push({\n level,\n event,\n payload\n });\n\n if (config.autoLog.indexOf(level) > -1) {\n flush();\n }\n}\n\n\nexport function log(level, event, payload) {\n\n if (typeof window === 'undefined') {\n return;\n }\n\n if (config.prefix) {\n event = `${config.prefix}_${event}`;\n }\n\n payload = payload || {};\n\n if (typeof payload === 'string') {\n payload = {\n message: payload\n };\n } else if (payload instanceof Error) {\n payload = {\n error: payload.stack || payload.toString()\n }\n }\n\n try {\n JSON.stringify(payload);\n } catch (err) {\n return;\n }\n\n payload.timestamp = Date.now();\n\n for (let builder of payloadBuilders) {\n try {\n extend(payload, builder(payload), false);\n } catch (err) {\n console.error('Error in custom payload builder:', err.stack || err.toString());\n }\n }\n\n if (!config.silent) {\n print(level, event, payload);\n }\n\n if (buffer.length === config.sizeLimit) {\n enqueue('info', 'logger_max_buffer_length');\n }\n else if (buffer.length < config.sizeLimit) {\n enqueue(level, event, payload);\n }\n}\n\nexport function prefix(name) {\n\n return {\n debug(event, payload) {\n return log('debug', `${name}_${event}`, payload);\n },\n\n info(event, payload) {\n return log('info', `${name}_${event}`, payload);\n },\n\n warn(event, payload) {\n return log('warn', `${name}_${event}`, payload);\n },\n\n error(event, payload) {\n return log('error', `${name}_${event}`, payload);\n },\n\n track(payload) {\n return track(payload);\n },\n\n flush() {\n return flush();\n }\n };\n}\n\nexport function debug(event, payload) {\n return log('debug', event, payload);\n}\n\nexport function info(event, payload) {\n return log('info', event, payload);\n}\n\nexport function warn(event, payload) {\n return log('warn', event, payload);\n}\n\nexport function error(event, payload) {\n return log('error', event, payload);\n}\n\nexport function track(payload) {\n\n if (typeof window === 'undefined') {\n return;\n }\n\n if (payload) {\n\n try {\n JSON.stringify(payload);\n } catch (err) {\n return;\n }\n\n for (let builder of trackingBuilders) {\n try {\n extend(payload, builder(payload), false);\n } catch (err) {\n console.error('Error in custom tracking builder:', err.stack || err.toString());\n }\n }\n\n print('debug', 'tracking', payload);\n\n tracking.push(payload);\n }\n}\n","\nimport { config } from './config';\nimport { info } from './logger';\nimport { addPayloadBuilder } from './builders'\nimport { onWindowReady, safeInterval } from './util';\n\nlet enablePerformance = window &&\n window.performance &&\n performance.now &&\n performance.timing &&\n performance.timing.connectEnd &&\n performance.timing.navigationStart &&\n (Math.abs(performance.now() - Date.now()) > 1000) &&\n (performance.now() - (performance.timing.connectEnd - performance.timing.navigationStart)) > 0;\n\n\nexport function now() {\n if (enablePerformance) {\n return performance.now();\n } else {\n return Date.now();\n }\n}\n\nfunction timer(startTime) {\n startTime = startTime !== undefined ? startTime : now();\n\n return {\n startTime,\n\n elapsed() {\n return parseInt(now() - startTime, 10);\n },\n\n reset() {\n startTime = now();\n }\n };\n}\n\nexport function reqStartElapsed() {\n if (enablePerformance) {\n let timing = window.performance.timing;\n return parseInt(timing.connectEnd - timing.navigationStart, 10);\n }\n}\n\nexport let clientTimer = timer();\nexport let reqTimer = timer(reqStartElapsed());\n\nexport function initHeartBeat() {\n\n let heartBeatTimer = timer();\n let heartbeatCount = 0;\n\n safeInterval(() => {\n\n if (config.heartbeatMaxThreshold && (heartbeatCount > config.heartbeatMaxThreshold)) {\n return;\n }\n\n heartbeatCount += 1;\n\n let elapsed = heartBeatTimer.elapsed();\n let lag = elapsed - config.heartbeatInterval;\n\n let heartbeatPayload = {\n count: heartbeatCount,\n elapsed\n };\n\n if (config.heartbeatTooBusy) {\n heartbeatPayload.lag = lag;\n\n if (lag >= config.heartbeatTooBusyThreshold) {\n info('toobusy', heartbeatPayload, {\n noConsole: !config.heartbeatConsoleLog\n });\n }\n }\n\n info('heartbeat', heartbeatPayload, {\n noConsole: !config.heartbeatConsoleLog\n });\n\n }, config.heartbeatInterval);\n}\n\nexport function initPerformance() {\n\n if (!enablePerformance) {\n return info('no_performance_data');\n }\n\n addPayloadBuilder(() => {\n\n let payload = {};\n\n payload.client_elapsed = clientTimer.elapsed();\n\n if (enablePerformance) {\n payload.req_elapsed = reqTimer.elapsed();\n }\n\n return payload;\n });\n\n onWindowReady().then(() => {\n\n let keys = [\n 'connectEnd', 'connectStart', 'domComplete', 'domContentLoadedEventEnd',\n 'domContentLoadedEventStart', 'domInteractive', 'domLoading', 'domainLookupEnd',\n 'domainLookupStart', 'fetchStart', 'loadEventEnd', 'loadEventStart', 'navigationStart',\n 'redirectEnd', 'redirectStart', 'requestStart', 'responseEnd', 'responseStart',\n 'secureConnectionStart', 'unloadEventEnd', 'unloadEventStart'\n ];\n\n let timing = {};\n\n keys.forEach(key => {\n timing[key] = parseInt(window.performance.timing[key], 10) || 0;\n });\n\n let offset = timing.connectEnd - timing.navigationStart;\n\n if (timing.connectEnd) {\n Object.keys(timing).forEach(name => {\n let time = timing[name];\n if (time) {\n info(`timing_${name}`, {\n client_elapsed: parseInt(time - timing.connectEnd - (clientTimer.startTime - offset), 10),\n req_elapsed: parseInt(time - timing.connectEnd, 10)\n });\n }\n });\n }\n\n info('timing', timing);\n info('memory', window.performance.memory);\n info('navigation', window.performance.navigation);\n\n if (window.performance.getEntries) {\n window.performance.getEntries().forEach(resource => {\n if (['link', 'script', 'img', 'css'].indexOf(resource.initiatorType) > -1) {\n info(resource.initiatorType, resource);\n }\n });\n }\n });\n}\n","\nimport { config } from './config';\nimport { extend } from './util';\nimport { initPerformance, initHeartBeat } from './performance';\nimport { log, info, flush, immediateFlush } from './logger';\n\nlet initiated = false;\n\nexport function init(conf) {\n extend(config, conf || {});\n\n if (initiated) {\n return;\n }\n\n initiated = true;\n\n if (config.logPerformance) {\n initPerformance();\n }\n\n if (config.heartbeat) {\n initHeartBeat();\n }\n\n if (config.logUnload) {\n window.addEventListener('beforeunload', () => {\n info('window_beforeunload');\n immediateFlush({ fireAndForget: true });\n });\n\n window.addEventListener('unload', () => {\n info('window_unload');\n immediateFlush({ fireAndForget: true });\n });\n }\n\n if (config.flushInterval) {\n setInterval(flush, config.flushInterval);\n }\n\n if (window.beaverLogQueue) {\n window.beaverLogQueue.forEach(payload => {\n log(payload.level, payload.event, payload);\n });\n delete window.beaverLogQueue;\n }\n}\n","\nimport { reqStartElapsed, now } from './performance';\nimport { info, immediateFlush, track } from './logger';\nimport { addMetaBuilder, addPayloadBuilder } from './builders';\nimport { uniqueID } from './util';\nimport { config } from './config';\n\nlet windowID = uniqueID();\nlet pageID = uniqueID();\n\nlet currentState = config.initial_state_name;\nlet startTime;\n\nexport function startTransition() {\n startTime = now();\n}\n\nexport function endTransition(toState) {\n startTime = startTime || reqStartElapsed();\n\n let currentTime = now();\n let elapsedTime;\n\n if (startTime !== undefined) {\n elapsedTime = parseInt(currentTime - startTime, 0);\n }\n\n let transitionName = `transition_${currentState}_to_${toState}`;\n\n info(transitionName, {\n duration: elapsedTime\n });\n\n track({\n transition: transitionName,\n transition_time: elapsedTime\n });\n\n immediateFlush();\n\n startTime = currentTime;\n currentState = toState;\n pageID = uniqueID();\n}\n\nexport function transition(toState) {\n startTransition();\n endTransition(toState);\n}\n\naddPayloadBuilder(() => {\n return {\n windowID,\n pageID\n }\n});\n\naddMetaBuilder(() => {\n return {\n state: `ui_${currentState}`\n };\n});\n","\nexport * from './logger';\nexport * from './init';\nexport * from './transitions';\nexport * from './builders';\nexport * from './config';","\nimport * as INTERFACE from './interface';\nexport * from './interface';\nexport default INTERFACE;","/* @flow */\n/* eslint max-lines: off */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\n\nimport type { CancelableType } from '../types';\n\n/* Url Encode\n ----------\n\n Replace ? and & with encoded values. Allows other values (to create more readable urls than encodeUriComponent)\n*/\n\nexport function urlEncode(str : string) : string {\n return str.replace(/\\?/g, '%3F').replace(/&/g, '%26').replace(/#/g, '%23').replace(/\\+/g, '%2B');\n}\n\n\n/* Camel To Dasherize\n ------------------\n\n Convert camelCaseText to dasherized-text\n*/\n\nexport function camelToDasherize(string : string) : string {\n return string.replace(/([A-Z])/g, (g) => {\n return `-${ g.toLowerCase() }`;\n });\n}\n\n\n/* Dasherize to Camel\n ------------------\n\n Convert dasherized-text to camelCaseText\n*/\n\nexport function dasherizeToCamel(string : string) : string {\n return string.replace(/-([a-z])/g, (g) => {\n return g[1].toUpperCase();\n });\n}\n\n\n/* Extend\n ------\n\n Extend one object with another\n*/\n\nexport function extend(obj : Object, source : ?Object) : Object {\n if (!source) {\n return obj;\n }\n\n for (let key in source) {\n if (source.hasOwnProperty(key)) {\n obj[key] = source[key];\n }\n }\n\n return obj;\n}\n\n\n/* Values\n ------\n\n Get all of the values from an object as an array\n*/\n\nexport function values(obj : Object) : Array {\n let results = [];\n\n for (let key in obj) {\n if (obj.hasOwnProperty(key)) {\n results.push(obj[key]);\n }\n }\n\n return results;\n}\n\n\n/* Unique ID\n ---------\n\n Generate a unique, random hex id\n*/\n\nexport function uniqueID() : string {\n\n let chars = '0123456789abcdef';\n\n return 'xxxxxxxxxx'.replace(/./g, () => {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n });\n}\n\n/* Stringify with Functions\n ------------------------\n\n JSON Stringify with added support for functions\n*/\n\nexport function stringifyWithFunctions(obj : Object) : string {\n return JSON.stringify(obj, (key, val) => {\n if (typeof val === 'function') {\n return val.toString();\n }\n return val;\n });\n}\n\n\n/* Safe Get\n --------\n\n Get a property without throwing error\n*/\n\nexport function safeGet(obj : Object, prop : string) : mixed {\n\n let result;\n\n try {\n result = obj[prop];\n } catch (err) {\n // pass\n }\n\n return result;\n}\n\n\n/* Capitalize First Letter\n -----------------------\n*/\n\nexport function capitalizeFirstLetter(string : string) : string {\n return string.charAt(0).toUpperCase() + string.slice(1).toLowerCase();\n}\n\n\n/* Get\n ---\n\n Recursively gets a deep path from an object, returning a default value if any level is not found\n*/\n\nexport function get(item : Object, path : string, def : mixed) : mixed {\n\n if (!path) {\n return def;\n }\n\n let pathParts = path.split('.');\n\n // Loop through each section of our key path\n\n for (let i = 0; i < pathParts.length; i++) {\n\n // If we have an object, we can get the key\n\n if (typeof item === 'object' && item !== null) {\n item = item[pathParts[i]];\n\n // Otherwise, we should return the default (undefined if not provided)\n } else {\n return def;\n }\n }\n\n // If our final result is undefined, we should return the default\n\n return item === undefined ? def : item;\n}\n\n\n/* Safe Interval\n -------------\n\n Implement setInterval using setTimeout, to avoid stacking up calls from setInterval\n*/\n\nexport function safeInterval(method : Function, time : number) : CancelableType {\n\n let timeout;\n\n function runInterval() {\n timeout = setTimeout(runInterval, time);\n method.call();\n }\n\n timeout = setTimeout(runInterval, time);\n\n return {\n cancel() {\n clearTimeout(timeout);\n }\n };\n}\n\n/* Safe Interval\n -------------\n\n Run timeouts at 100ms intervals so we can account for busy browsers\n*/\n\nexport function safeTimeout(method : Function, time : number) {\n\n let interval = safeInterval(() => {\n time -= 100;\n if (time <= 0) {\n interval.cancel();\n method();\n }\n }, 100);\n}\n\n\nexport function each(item : Array | Object, callback : Function) {\n\n if (!item) {\n return;\n }\n\n if (Array.isArray(item)) {\n let len = item.length;\n for (let i = 0; i < len; i++) {\n callback(item[i], i);\n }\n\n } else if (typeof item === 'object') {\n let keys = Object.keys(item);\n let len = keys.length;\n for (let i = 0; i < len; i++) {\n let key = keys[i];\n callback(item[key], key);\n }\n }\n}\n\n\nexport function replaceObject> (item : T, replacers : { [string] : Function }, fullKey : string = '') : T {\n\n if (Array.isArray(item)) {\n let length = item.length;\n let result = [];\n\n for (let i = 0; i < length; i++) {\n Object.defineProperty(result, i, {\n configurable: true,\n enumerable: true,\n get: () => {\n let itemKey = fullKey ? `${ fullKey }.${ i }` : `${ i }`;\n let child = item[i];\n\n let type = (typeof child);\n let replacer = replacers[type];\n if (replacer) {\n let replaced = replacer(child, i, itemKey);\n if (typeof replaced !== 'undefined') {\n result[i] = replaced;\n return result[i];\n }\n }\n\n if (typeof child === 'object' && child !== null) {\n result[i] = replaceObject(child, replacers, itemKey);\n return result[i];\n }\n\n result[i] = child;\n return result[i];\n },\n set: (value) => {\n delete result[i];\n result[i] = value;\n }\n });\n }\n\n // $FlowFixMe\n return result;\n } else if (typeof item === 'object' && item !== null) {\n let result = {};\n\n for (let key in item) {\n if (!item.hasOwnProperty(key)) {\n continue;\n }\n\n Object.defineProperty(result, key, {\n configurable: true,\n enumerable: true,\n get: () => {\n let itemKey = fullKey ? `${ fullKey }.${ key }` : `${ key }`;\n // $FlowFixMe\n let child = item[key];\n\n let type = (typeof child);\n let replacer = replacers[type];\n if (replacer) {\n let replaced = replacer(child, key, itemKey);\n if (typeof replaced !== 'undefined') {\n result[key] = replaced;\n return result[key];\n }\n }\n\n if (typeof child === 'object' && child !== null) {\n result[key] = replaceObject(child, replacers, itemKey);\n return result[key];\n }\n\n result[key] = child;\n return result[key];\n },\n set: (value) => {\n delete result[key];\n result[key] = value;\n }\n });\n }\n\n // $FlowFixMe\n return result;\n } else {\n throw new Error(`Pass an object or array`);\n }\n}\n\n\nexport function copyProp(source : Object, target : Object, name : string, def : mixed) {\n if (source.hasOwnProperty(name)) {\n let descriptor = Object.getOwnPropertyDescriptor(source, name);\n // $FlowFixMe\n Object.defineProperty(target, name, descriptor);\n\n } else {\n target[name] = def;\n }\n}\n\nexport function dotify(obj : Object, prefix : string = '', newobj : Object = {}) : { [string] : string } {\n prefix = prefix ? `${ prefix }.` : prefix;\n for (let key in obj) {\n if (obj[key] === undefined || obj[key] === null || typeof obj[key] === 'function') {\n continue;\n } else if (obj[key] && Array.isArray(obj[key]) && obj[key].length && obj[key].every(val => typeof val !== 'object')) {\n newobj[`${ prefix }${ key }`] = obj[key].join(',');\n } else if (obj[key] && typeof obj[key] === 'object') {\n newobj = dotify(obj[key], `${ prefix }${ key }`, newobj);\n } else {\n newobj[`${ prefix }${ key }`] = obj[key].toString();\n }\n }\n return newobj;\n}\n\nlet objectIDs = new WeakMap();\n\nexport function getObjectID(obj : Object) : string {\n\n if (obj === null || obj === undefined || (typeof obj !== 'object' && typeof obj !== 'function')) {\n throw new Error(`Invalid object`);\n }\n\n let uid = objectIDs.get(obj);\n\n if (!uid) {\n uid = `${ typeof obj }:${ uniqueID() }`;\n objectIDs.set(obj, uid);\n }\n\n return uid;\n}\n\ntype RegexResultType = {\n text : string,\n groups : Array,\n start : number,\n end : number,\n length : number,\n replace : (text : string) => string\n};\n\nexport function regex(pattern : string | RegExp, string : string, start : number = 0) : ?RegexResultType {\n\n if (typeof pattern === 'string') {\n // eslint-disable-next-line security/detect-non-literal-regexp\n pattern = new RegExp(pattern);\n }\n\n let result = string.slice(start).match(pattern);\n\n if (!result) {\n return;\n }\n\n // $FlowFixMe\n let index : number = result.index;\n let match = result[0];\n\n return {\n text: match,\n groups: result.slice(1),\n start: start + index,\n end: start + index + match.length,\n length: match.length,\n\n replace(text : string) : string {\n\n if (!match) {\n return '';\n }\n\n return `${ match.slice(0, start + index) }${ text }${ match.slice(index + match.length) }`;\n }\n };\n}\n\nexport function regexAll(pattern : string | RegExp, string : string) : Array {\n\n let matches = [];\n let start = 0;\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n let match = regex(pattern, string, start);\n\n if (!match) {\n break;\n }\n\n matches.push(match);\n start = match.end;\n }\n\n return matches;\n}\n\nexport function count(str : string, substr : string) : number {\n\n let startIndex = 0;\n let itemCount = 0;\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n let index = str.indexOf(substr, startIndex);\n\n if (index === -1) {\n break;\n }\n\n startIndex = index;\n itemCount += 1;\n }\n\n return itemCount;\n}\n\nexport function stringify(item : mixed) : string {\n if (typeof item === 'string') {\n return item;\n }\n\n if (item && typeof item.toString === 'function') {\n return item.toString();\n }\n\n return Object.prototype.toString.call(item);\n}\n\nexport function stringifyError(err : mixed) : string {\n if (err) {\n // $FlowFixMe\n let { stack, message } = err;\n\n if (typeof stack === 'string') {\n return stack;\n }\n\n if (typeof message === 'string') {\n return message;\n }\n }\n\n return stringify(err);\n}\n\nexport type EventEmitterType = {\n on : (eventName : string, handler : Function) => CancelableType,\n once : (eventName : string, handler : Function) => CancelableType,\n trigger : (eventName : string) => void,\n triggerOnce : (eventName : string) => void\n};\n\nexport function eventEmitter() : EventEmitterType {\n\n let triggered = {};\n let handlers = {};\n\n return {\n\n on(eventName : string, handler : Function) : CancelableType {\n\n let handlerList = handlers[eventName] = handlers[eventName] || [];\n\n handlerList.push(handler);\n\n let cancelled = false;\n\n return {\n cancel() {\n if (!cancelled) {\n cancelled = true;\n handlerList.splice(handlerList.indexOf(handler), 1);\n }\n\n }\n };\n },\n\n once(eventName : string, handler : Function) : CancelableType {\n\n let listener = this.on(eventName, () => {\n listener.cancel();\n handler();\n });\n\n return listener;\n },\n\n trigger(eventName : string) {\n\n let handlerList = handlers[eventName];\n\n if (handlerList) {\n for (let handler of handlerList) {\n handler();\n }\n }\n },\n\n triggerOnce(eventName : string) {\n\n if (triggered[eventName]) {\n return;\n }\n\n triggered[eventName] = true;\n this.trigger(eventName);\n }\n };\n}\n","/* @flow */\n\nimport { getObjectID, replaceObject } from './util';\n\n\n/* Noop\n ----\n\n Do nothing, zilch, nada, zip\n*/\n\nexport function noop() {\n // pass\n}\n\n\n/* Once\n ----\n\n Create a wrapper function which only allows the inner function to run once, otherwise is a noop\n*/\n\nexport function once(method : (...args : Array) => T) : (...args : Array) => T {\n\n let called = false;\n let result;\n\n // eslint-disable-next-line no-unused-vars\n return function onceWrapper(...args : Array) : T {\n if (called) {\n return result;\n }\n\n called = true;\n result = method.apply(this, arguments);\n return result;\n };\n}\n\n\n/* Memoize\n -------\n\n Create a wrapper function which caches the result of the first call, then for subsequent calls returns the cached value\n*/\n\nexport function memoize(method : (...args : Array) => T) : (...args : Array) => T {\n\n let results = {};\n\n // eslint-disable-next-line no-unused-vars\n return function memoizeWrapper(...args : Array) : T {\n\n let cacheKey;\n\n try {\n cacheKey = JSON.stringify(Array.prototype.slice.call(arguments), (key, val) => {\n\n if (typeof val === 'function') {\n return `zoid:memoize[${ getObjectID(val) }]`;\n }\n\n return val;\n });\n\n } catch (err) {\n throw new Error('Arguments not serializable -- can not be used to memoize');\n }\n\n if (!results.hasOwnProperty(cacheKey)) {\n results[cacheKey] = method.apply(this, arguments);\n }\n\n return results[cacheKey];\n };\n}\n\nexport function debounce(method : (...args : Array) => T, time : number = 100) : (...args : Array) => void {\n\n let timeout;\n\n return function debounceWrapper() {\n clearTimeout(timeout);\n\n timeout = setTimeout(() => {\n return method.apply(this, arguments);\n }, time);\n };\n}\n\nexport function serializeFunctions>(obj : T) : T {\n return replaceObject(obj, {\n 'function': () => {\n return {\n __type__: '__function__'\n };\n }\n });\n}\n\nexport function deserializeFunctions>(obj : T, handler : Function) : T {\n return replaceObject(obj, {\n 'object': (value, key, fullKey) => {\n if (value && value.__type__ === '__function__') {\n return function deserializedFunctionWrapper() : mixed {\n return handler({ key, fullKey, self: this, args: arguments });\n };\n }\n }\n });\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { isWindowClosed, linkFrameWindow, type CrossDomainWindowType, type SameDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\n\nimport { PopupOpenError } from '../error';\nimport type { ElementRefType, CancelableType } from '../types';\n\nimport { once, memoize, debounce } from './fn';\nimport { extend, safeInterval, urlEncode, capitalizeFirstLetter, stringify } from './util';\n\nexport function appendChild(container : HTMLElement, child : HTMLElement | Text) {\n container.appendChild(child);\n}\n\nfunction isElement(element : mixed) : boolean {\n\n if (element instanceof window.Element) {\n return true;\n }\n\n if (element !== null && typeof element === 'object' && element.nodeType === 1 && typeof element.style === 'object' && typeof element.ownerDocument === 'object') {\n return true;\n }\n\n return false;\n}\n\nexport function querySelectorAll(el : HTMLElement, selector : string) : Array {\n return Array.prototype.slice.call(el.querySelectorAll(selector));\n}\n\n/* Get Element\n -----------\n\n Gets an element based on\n\n - Element id\n - CSS Query selector\n*/\n\nexport function getElementSafe(id : ElementRefType) : ?HTMLElement {\n\n if (isElement(id)) {\n // $FlowFixMe\n return id;\n }\n\n if (typeof id === 'string') {\n let element = document.getElementById(id);\n\n if (element) {\n return element;\n }\n\n if (document.querySelector) {\n element = document.querySelector(id);\n }\n\n if (element) {\n return element;\n }\n }\n}\n\nexport function getElement(id : ElementRefType) : HTMLElement {\n\n let element = getElementSafe(id);\n\n if (element) {\n return element;\n }\n\n throw new Error(`Can not find element: ${ stringify(id) }`);\n}\n\n\nexport let documentReady = new ZalgoPromise(resolve => {\n\n if (window.document.readyState === 'complete') {\n return resolve(window.document);\n }\n\n let interval = setInterval(() => {\n if (window.document.readyState === 'complete') {\n clearInterval(interval);\n return resolve(window.document);\n }\n }, 10);\n});\n\nexport function isDocumentReady() : boolean {\n return window.document.readyState === 'complete';\n}\n\nexport function elementReady(id : ElementRefType) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n let name = stringify(id);\n let el = getElementSafe(id);\n\n if (el) {\n return resolve(el);\n }\n\n if (isDocumentReady()) {\n return reject(new Error(`Document is ready and element ${ name } does not exist`));\n }\n\n let interval = setInterval(() => {\n\n el = getElementSafe(id);\n\n if (el) {\n clearInterval(interval);\n return resolve(el);\n }\n\n if (isDocumentReady()) {\n clearInterval(interval);\n return reject(new Error(`Document is ready and element ${ name } does not exist`));\n }\n }, 10);\n });\n}\n\n\n/* Popup\n -----\n\n Open a popup window with the specified option map\n*/\n\nexport function popup(url : string, options : { [ string ] : mixed }) : CrossDomainWindowType {\n\n // eslint-disable-next-line array-callback-return\n let params = Object.keys(options).map((key) => {\n if (options[key]) {\n return `${ key }=${ stringify(options[key]) }`;\n }\n }).filter(Boolean).join(',');\n\n let win;\n\n try {\n win = window.open(url, options.name, params, true);\n } catch (err) {\n throw new PopupOpenError(`Can not open popup window - ${ err.stack || err.message }`);\n }\n\n if (isWindowClosed(win)) {\n let err = new PopupOpenError(`Can not open popup window - blocked`);\n throw err;\n }\n\n return win;\n}\n\n\nexport function writeToWindow(win : SameDomainWindowType, html : string) {\n try {\n win.document.open();\n win.document.write(html);\n win.document.close();\n } catch (err) {\n try {\n win.location = `javascript: document.open(); document.write(${ JSON.stringify(html) }); document.close();`;\n } catch (err2) {\n // pass\n }\n }\n}\n\nexport function writeElementToWindow(win : SameDomainWindowType, el : HTMLElement) {\n\n let tag = el.tagName.toLowerCase();\n\n if (tag !== 'html') {\n throw new Error(`Expected element to be html, got ${ tag }`);\n }\n\n let documentElement = win.document.documentElement;\n\n while (documentElement.children && documentElement.children.length) {\n documentElement.removeChild(documentElement.children[0]);\n }\n\n while (el.children.length) {\n documentElement.appendChild(el.children[0]);\n }\n}\n\nexport function setStyle(el : HTMLElement, styleText : string, doc : Document = window.document) {\n // $FlowFixMe\n if (el.styleSheet) {\n // $FlowFixMe\n el.styleSheet.cssText = styleText;\n } else {\n el.appendChild(doc.createTextNode(styleText));\n }\n}\n\n/* Create Element\n --------------\n\n Create an element with style, html, classes, attributes etc. and append it to the specified container\n*/\n\nexport type ElementOptionsType = {\n style? : { [ string ] : string },\n class? : ?Array,\n attributes? : { [ string ] : string },\n styleSheet? : ?string,\n html? : ?string\n};\n\nexport function createElement(tag : string = 'div', options : ElementOptionsType = {}, container : ?HTMLElement) : HTMLElement {\n\n tag = tag.toLowerCase();\n let element = document.createElement(tag);\n\n if (options.style) {\n extend(element.style, options.style);\n }\n\n if (options.class) {\n element.className = options.class.join(' ');\n }\n\n if (options.attributes) {\n for (let key of Object.keys(options.attributes)) {\n element.setAttribute(key, options.attributes[key]);\n }\n }\n\n if (options.styleSheet) {\n setStyle(element, options.styleSheet);\n }\n\n if (container) {\n appendChild(container, element);\n }\n\n if (options.html) {\n if (tag === 'iframe') {\n // $FlowFixMe\n if (!container || !element.contentWindow) {\n throw new Error(`Iframe html can not be written unless container provided and iframe in DOM`);\n }\n\n // $FlowFixMe\n writeToWindow(element.contentWindow, options.html);\n\n } else {\n element.innerHTML = options.html;\n }\n }\n\n return element;\n}\n\nlet awaitFrameLoadPromises : WeakMap> = new WeakMap();\n\nexport function awaitFrameLoad(frame : HTMLIFrameElement) : ZalgoPromise {\n\n if (awaitFrameLoadPromises.has(frame)) {\n let promise = awaitFrameLoadPromises.get(frame);\n if (promise) {\n return promise;\n }\n }\n\n let promise = new ZalgoPromise((resolve, reject) => {\n frame.addEventListener('load', () => {\n linkFrameWindow(frame);\n resolve(frame);\n });\n\n frame.addEventListener('error', (err : Event) => {\n if (frame.contentWindow) {\n resolve(frame);\n } else {\n reject(err);\n }\n });\n });\n\n awaitFrameLoadPromises.set(frame, promise);\n\n return promise;\n}\n\nexport function awaitFrameWindow(frame : HTMLIFrameElement) : ZalgoPromise {\n\n if (frame.contentWindow) {\n return ZalgoPromise.resolve(frame.contentWindow);\n }\n\n return awaitFrameLoad(frame).then(loadedFrame => {\n\n if (!loadedFrame.contentWindow) {\n throw new Error(`Could not find window in iframe`);\n }\n\n return loadedFrame.contentWindow;\n });\n}\n\n\n/* Iframe\n ------\n\n Open an iframe with the specified container, url, and option property map\n*/\n\nexport type IframeElementOptionsType = {\n style? : { [ string ] : string },\n class? : ?Array,\n attributes? : { [ string ] : string },\n styleSheet? : ?string,\n html? : ?string,\n url? : ?string\n};\n\nexport function iframe(options : IframeElementOptionsType = {}, container : HTMLElement) : HTMLIFrameElement {\n\n let el = getElement(container);\n\n let attributes = options.attributes || {};\n let style = options.style || {};\n\n let frame = createElement('iframe', {\n attributes: {\n frameBorder: '0',\n allowTransparency: 'true',\n ...attributes\n },\n style: {\n backgroundColor: 'transparent',\n ...style\n },\n html: options.html,\n class: options.class\n });\n\n // $FlowFixMe\n awaitFrameLoad(frame);\n\n el.appendChild(frame);\n\n if (options.url || window.navigator.userAgent.match(/MSIE|Edge/i)) {\n frame.setAttribute('src', options.url || 'about:blank');\n }\n\n // $FlowFixMe\n return frame;\n}\n\n/* Add Event Listener\n ------------------\n\n Add DOM Event listener with cancel\n*/\n\nexport function addEventListener(obj : HTMLElement, event : string, handler : (event : Event) => void) : CancelableType {\n obj.addEventListener(event, handler);\n return {\n cancel() {\n obj.removeEventListener(event, handler);\n }\n };\n}\n\n/* Scan For Javascript\n -------------------\n\n Check if the string contains anything which could conceivably be run as javascript if the string is set to innerHTML\n*/\n\nexport function scanForJavascript(str : string) : string {\n\n if (!str) {\n return str;\n }\n\n if (str.match(/ {\n\n let params = {};\n\n if (!queryString) {\n return params;\n }\n\n if (queryString.indexOf('=') === -1) {\n throw new Error(`Can not parse query string params: ${ queryString }`);\n }\n\n for (let pair of queryString.split('&')) {\n pair = pair.split('=');\n\n if (pair[0] && pair[1]) {\n params[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n }\n\n return params;\n});\n\n\nexport function getQueryParam(name : string) : ?string {\n return parseQuery(window.location.search.slice(1))[name];\n}\n\nexport function formatQuery(obj : { [ string ] : string } = {}) : string {\n\n return Object.keys(obj).filter(key => {\n return typeof obj[key] === 'string';\n }).map(key => {\n return `${ urlEncode(key) }=${ urlEncode(obj[key]) }`;\n }).join('&');\n}\n\nexport function extendQuery(originalQuery : string, props : { [ string ] : string } = {}) : string {\n\n if (!props || !Object.keys(props).length) {\n return originalQuery;\n }\n\n return formatQuery({\n ...parseQuery(originalQuery),\n ...props\n });\n}\n\nexport function extendUrl(url : string, options : { query? : { [ string ] : string }, hash? : { [ string ] : string } } = {}) : string {\n\n let query = options.query || {};\n let hash = options.hash || {};\n\n let originalUrl;\n let originalQuery;\n let originalHash;\n\n [ originalUrl, originalHash ] = url.split('#');\n [ originalUrl, originalQuery ] = originalUrl.split('?');\n\n let queryString = extendQuery(originalQuery, query);\n let hashString = extendQuery(originalHash, hash);\n\n if (queryString) {\n originalUrl = `${ originalUrl }?${ queryString }`;\n }\n\n if (hashString) {\n originalUrl = `${ originalUrl }#${ hashString }`;\n }\n\n return originalUrl;\n}\n\n\nexport function elementStoppedMoving(element : ElementRefType, timeout : number = 5000) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n let el = getElement(element);\n\n let start = el.getBoundingClientRect();\n\n let interval;\n let timer;\n\n interval = setInterval(() => {\n let end = el.getBoundingClientRect();\n\n if (start.top === end.top && start.bottom === end.bottom && start.left === end.left && start.right === end.right && start.width === end.width && start.height === end.height) {\n clearTimeout(timer);\n clearInterval(interval);\n return resolve();\n }\n\n start = end;\n\n }, 50);\n\n timer = setTimeout(() => {\n clearInterval(interval);\n reject(new Error(`Timed out waiting for element to stop animating after ${ timeout }ms`));\n }, timeout);\n });\n}\n\nexport function getCurrentDimensions(el : HTMLElement) : { width : number, height : number } {\n return {\n width: el.offsetWidth,\n height: el.offsetHeight\n };\n}\n\nexport function changeStyle(el : HTMLElement, styles : { [ string ] : string }) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n\n for (let key of Object.keys(styles)) {\n // $FlowFixMe\n el.style[key] = styles[key];\n }\n\n setTimeout(resolve, 1);\n });\n}\n\nexport function setOverflow(el : HTMLElement, value : string = 'auto') : { reset : () => void } {\n\n let { overflow, overflowX, overflowY } = el.style;\n\n el.style.overflow = el.style.overflowX = el.style.overflowY = value;\n\n return {\n reset() {\n el.style.overflow = overflow;\n el.style.overflowX = overflowX;\n el.style.overflowY = overflowY;\n }\n };\n}\n\nfunction dimensionsDiff(one : { width : number, height : number }, two : { width : number, height : number }, { width = true, height = true, threshold = 0 } : { width : boolean, height : boolean, threshold : number }) : boolean {\n\n if (width && Math.abs(one.width - two.width) > threshold) {\n return true;\n }\n\n if (height && Math.abs(one.height - two.height) > threshold) {\n return true;\n }\n\n return false;\n}\n\nexport function trackDimensions(el : HTMLElement, { width = true, height = true, threshold = 0 } : { width : boolean, height : boolean, threshold : number }) : { check : () => { changed : boolean, dimensions : { width : number, height : number } }, reset : () => void } {\n\n let currentDimensions = getCurrentDimensions(el);\n\n return {\n check() : { changed : boolean, dimensions : { width : number, height : number } } {\n let newDimensions = getCurrentDimensions(el);\n\n return {\n changed: dimensionsDiff(currentDimensions, newDimensions, { width, height, threshold }),\n dimensions: newDimensions\n };\n },\n\n reset() {\n currentDimensions = getCurrentDimensions(el);\n }\n };\n}\n\nexport function onDimensionsChange(el : HTMLElement, { width = true, height = true, delay = 50, threshold = 0 } : { width? : boolean, height? : boolean, delay? : number, threshold? : number }) : ZalgoPromise<{ width : number, height : number }> {\n\n return new ZalgoPromise(resolve => {\n\n let tracker = trackDimensions(el, { width, height, threshold });\n\n let interval;\n\n let resolver = debounce((dimensions) => {\n clearInterval(interval);\n return resolve(dimensions);\n }, delay * 4);\n\n interval = setInterval(() => {\n let { changed, dimensions } = tracker.check();\n if (changed) {\n tracker.reset();\n return resolver(dimensions);\n }\n }, delay);\n\n function onWindowResize() {\n let { changed, dimensions } = tracker.check();\n if (changed) {\n tracker.reset();\n window.removeEventListener('resize', onWindowResize);\n resolver(dimensions);\n }\n }\n\n window.addEventListener('resize', onWindowResize);\n });\n}\n\n\nexport function dimensionsMatchViewport(el : HTMLElement, { width, height } : { width : number, height : number }) : boolean {\n\n let dimensions = getCurrentDimensions(el);\n\n if (width && dimensions.width !== window.innerWidth) {\n return false;\n }\n\n if (height && dimensions.height !== window.innerHeight) {\n return false;\n }\n\n return true;\n}\n\n\nexport function bindEvents(element : HTMLElement, eventNames : Array, handler : (event : Event) => void) : CancelableType {\n\n handler = once(handler);\n\n for (let eventName of eventNames) {\n element.addEventListener(eventName, handler);\n }\n\n return {\n cancel: once(() => {\n for (let eventName of eventNames) {\n element.removeEventListener(eventName, handler);\n }\n })\n };\n}\n\nconst VENDOR_PREFIXES = [ 'webkit', 'moz', 'ms', 'o' ];\n\nexport function setVendorCSS(element : HTMLElement, name : string, value : string) {\n\n // $FlowFixMe\n element.style[name] = value;\n\n let capitalizedName = capitalizeFirstLetter(name);\n\n for (let prefix of VENDOR_PREFIXES) {\n // $FlowFixMe\n element.style[`${ prefix }${ capitalizedName }`] = value;\n }\n}\n\n\nlet CSSRule = window.CSSRule;\n\nconst KEYFRAMES_RULE = CSSRule.KEYFRAMES_RULE || CSSRule.WEBKIT_KEYFRAMES_RULE || CSSRule.MOZ_KEYFRAMES_RULE ||\n CSSRule.O_KEYFRAMES_RULE || CSSRule.MS_KEYFRAMES_RULE;\n\nfunction isValidAnimation(element : HTMLElement, name : string) : boolean {\n\n let stylesheets = element.ownerDocument.styleSheets;\n\n try {\n for (let i = 0; i < stylesheets.length; i++) {\n\n // $FlowFixMe\n let cssRules = stylesheets[i].cssRules;\n\n if (!cssRules) {\n continue;\n }\n\n for (let j = 0; j < cssRules.length; j++) {\n\n let cssRule = cssRules[j];\n\n if (!cssRule) {\n continue;\n }\n\n if (cssRule.type === KEYFRAMES_RULE && cssRule.name === name) {\n return true;\n }\n }\n }\n } catch (err) {\n\n return false;\n }\n\n\n return false;\n}\n\n\nconst ANIMATION_START_EVENTS = [ 'animationstart', 'webkitAnimationStart', 'oAnimationStart', 'MSAnimationStart' ];\nconst ANIMATION_END_EVENTS = [ 'animationend', 'webkitAnimationEnd', 'oAnimationEnd', 'MSAnimationEnd' ];\n\nexport function animate(element : ElementRefType, name : string, clean : (Function) => void, timeout : number = 1000) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n let el = getElement(element);\n\n if (!el || !isValidAnimation(el, name)) {\n return resolve();\n }\n\n let hasStarted = false;\n\n let startTimeout;\n let endTimeout;\n let startEvent;\n let endEvent;\n\n function cleanUp() {\n setVendorCSS(el, 'animationName', '');\n clearTimeout(startTimeout);\n clearTimeout(endTimeout);\n startEvent.cancel();\n endEvent.cancel();\n }\n\n startEvent = bindEvents(el, ANIMATION_START_EVENTS, event => {\n\n // $FlowFixMe\n if (event.target !== el || event.animationName !== name) {\n return;\n }\n\n clearTimeout(startTimeout);\n\n event.stopPropagation();\n\n startEvent.cancel();\n hasStarted = true;\n\n endTimeout = setTimeout(() => {\n cleanUp();\n resolve();\n }, timeout);\n });\n\n endEvent = bindEvents(el, ANIMATION_END_EVENTS, event => {\n\n // $FlowFixMe\n if (event.target !== el || event.animationName !== name) {\n return;\n }\n\n cleanUp();\n\n // $FlowFixMe\n if (typeof event.animationName === 'string' && event.animationName !== name) {\n return reject(`Expected animation name to be ${ name }, found ${ event.animationName }`);\n }\n\n return resolve();\n });\n\n setVendorCSS(el, 'animationName', name);\n\n startTimeout = setTimeout(() => {\n if (!hasStarted) {\n cleanUp();\n return resolve();\n }\n }, 200);\n\n if (clean) {\n clean(cleanUp);\n }\n });\n}\n\nconst STYLE = {\n\n DISPLAY: {\n NONE: 'none',\n BLOCK: 'block'\n },\n\n VISIBILITY: {\n VISIBLE: 'visible',\n HIDDEN: 'hidden'\n },\n\n IMPORTANT: 'important'\n};\n\nexport function makeElementVisible(element : HTMLElement) {\n element.style.setProperty('visibility', '');\n}\n\nexport function makeElementInvisible(element : HTMLElement) {\n element.style.setProperty('visibility', STYLE.VISIBILITY.HIDDEN, STYLE.IMPORTANT);\n}\n\n\nexport function showElement(element : HTMLElement) {\n element.style.setProperty('display', '');\n}\n\nexport function hideElement(element : HTMLElement) {\n element.style.setProperty('display', STYLE.DISPLAY.NONE, STYLE.IMPORTANT);\n}\n\nexport function destroyElement(element : HTMLElement) {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n}\n\nexport function showAndAnimate(element : HTMLElement, name : string, clean : (Function) => void) : ZalgoPromise {\n let animation = animate(element, name, clean);\n showElement(element);\n return animation;\n}\n\nexport function animateAndHide(element : HTMLElement, name : string, clean : (Function) => void) : ZalgoPromise {\n return animate(element, name, clean).then(() => {\n hideElement(element);\n });\n}\n\nexport function addClass(element : HTMLElement, name : string) {\n if (element.classList) {\n element.classList.add(name);\n } else if (element.className.split(/\\s+/).indexOf(name) === -1) {\n element.className += ` ${ name }`;\n }\n}\n\nexport function removeClass(element : HTMLElement, name : string) {\n if (element.classList) {\n element.classList.remove(name);\n } else if (element.className.split(/\\s+/).indexOf(name) !== -1) {\n element.className = element.className.replace(name, '');\n }\n}\n\nexport function getCurrentScriptDir() : string {\n // eslint-disable-next-line no-console\n console.warn(`Do not use zoid.getCurrentScriptDir() in production -- browser support is limited`);\n\n // eslint-disable-next-line compat/compat\n if (document.currentScript) {\n // eslint-disable-next-line compat/compat\n return document.currentScript.src.split('/').slice(0, -1).join('/');\n }\n\n return '.';\n}\n\nexport function getElementName(element : ElementRefType) : string {\n\n if (typeof element === 'string') {\n return element;\n }\n\n if (!element || !element.tagName) {\n return '';\n }\n\n let name = element.tagName.toLowerCase();\n\n if (element.id) {\n name += `#${ element.id }`;\n } else if (element.className) {\n name += `.${ element.className.split(' ').join('.') }`;\n }\n\n return name;\n}\n\nexport function isElementClosed(el : HTMLElement) : boolean {\n if (!el || !el.parentNode) {\n return true;\n }\n return false;\n}\n\nexport function watchElementForClose(element : HTMLElement, handler : () => mixed) : CancelableType {\n handler = once(handler);\n\n let interval;\n\n if (isElementClosed(element)) {\n handler();\n } else {\n interval = safeInterval(() => {\n if (isElementClosed(element)) {\n interval.cancel();\n handler();\n }\n }, 50);\n }\n\n return {\n cancel() {\n if (interval) {\n interval.cancel();\n }\n }\n };\n}\n\nexport function getHttpType(contentType : string, url : string) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n let req = new window.XMLHttpRequest();\n\n req.open('GET', url);\n req.setRequestHeader('Accept', contentType);\n req.send(null);\n\n req.onload = () => {\n resolve(req.responseText);\n };\n\n req.onerror = () => {\n return reject(new Error(`prefetch failed`));\n };\n });\n}\n\nexport function getHTML(url : string) : ZalgoPromise {\n return getHttpType('text/html', url);\n}\n\nexport function getCSS(url : string) : ZalgoPromise {\n return getHttpType('text/css', url);\n}\n\nexport function getScript(url : string) : ZalgoPromise {\n return getHttpType('*/*', url);\n}\n\nexport function prefetchPage(url : string) : ZalgoPromise {\n return getHTML(url);\n}\n\nconst JSX_EVENTS = {\n onClick: 'click'\n};\n\nexport function fixScripts(el : HTMLElement, doc : Document = window.document) {\n for (let script of querySelectorAll(el, 'script')) {\n let newScript = doc.createElement('script');\n newScript.text = script.textContent;\n script.parentNode.replaceChild(newScript, script);\n }\n}\n\nexport function jsxDom(name : string, props : ?{ [ string ] : mixed }, content : ElementRefType) : HTMLElement {\n\n name = name.toLowerCase();\n\n let doc = (this && this.createElement)\n ? this\n : window.document;\n\n let el = doc.createElement(name);\n\n for (let prop in props) {\n if (prop in JSX_EVENTS) {\n el.addEventListener(JSX_EVENTS[prop], props[prop]);\n } else if (prop === 'innerHTML') {\n el.innerHTML = props[prop];\n fixScripts(el, doc);\n } else {\n el.setAttribute(prop, props[prop]);\n }\n }\n\n if (name === 'style') {\n\n if (typeof content !== 'string') {\n throw new TypeError(`Expected ${ name } tag content to be string, got ${ typeof content }`);\n }\n\n if (arguments.length > 3) {\n throw new Error(`Expected only text content for ${ name } tag`);\n }\n\n setStyle(el, content, doc);\n\n } else if (name === 'iframe') {\n\n if (arguments.length > 3) {\n throw new Error(`Expected only single child node for iframe`);\n }\n\n el.addEventListener('load', () => {\n let win = el.contentWindow;\n\n if (!win) {\n throw new Error(`Expected frame to have contentWindow`);\n }\n\n if (typeof content === 'string') {\n writeToWindow(win, content);\n } else {\n writeElementToWindow(win, content);\n }\n });\n\n } else if (name === 'script') {\n\n if (typeof content !== 'string') {\n throw new TypeError(`Expected ${ name } tag content to be string, got ${ typeof content }`);\n }\n\n if (arguments.length > 3) {\n throw new Error(`Expected only text content for ${ name } tag`);\n }\n\n el.text = content;\n\n } else {\n for (let i = 2; i < arguments.length; i++) {\n if (typeof arguments[i] === 'string') {\n let textNode = doc.createTextNode(arguments[i]);\n appendChild(el, textNode);\n } else {\n appendChild(el, arguments[i]);\n }\n }\n }\n\n return el;\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\n\n/* DeNodeify\n ---------\n\n Turns a method from a function which accepts a callback, into a function which returns a promise.\n*/\n\nexport function denodeify(method : (...args : Array) => T) : (...args : Array) => ZalgoPromise {\n\n return function denodeifyWrapper() : ZalgoPromise {\n\n let self = this;\n let args = Array.prototype.slice.call(arguments);\n\n if (args.length >= method.length) {\n return ZalgoPromise.resolve(method.apply(self, args));\n }\n\n return new ZalgoPromise((resolve, reject) => {\n args.push((err, result) => {\n\n if (err && !(err instanceof Error)) {\n throw new Error(`Passed non-Error object in callback: [ ${ err } ] -- callbacks should either be called with callback(new Error(...)) or callback(null, result).`);\n }\n\n return err ? reject(err) : resolve(result);\n });\n method.apply(self, args);\n });\n };\n}\n\nexport function promisify(method : (...args : Array) => T | ZalgoPromise) : (...args : Array) => ZalgoPromise {\n return function promisifyWRapper() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n return method.apply(this, arguments);\n });\n };\n}\n\nexport function delay(time : number = 1) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n setTimeout(resolve, time);\n });\n}\n\nexport function cycle(method : Function) : ZalgoPromise {\n return ZalgoPromise.try(method).then(() => cycle(method));\n}\n","/* @flow */\n\nexport function isPerc(str : string) : boolean {\n return typeof str === 'string' && (/^[0-9]+%$/).test(str);\n}\n\nexport function isPx(str : string) : boolean {\n return typeof str === 'string' && (/^[0-9]+px$/).test(str);\n}\n\nexport function toNum(val : string | number) : number {\n\n if (typeof val === 'number') {\n return val;\n }\n\n let match = val.match(/^([0-9]+)(px|%)$/);\n\n if (!match) {\n throw new Error(`Could not match css value from ${ val }`);\n }\n\n return parseInt(match[1], 10);\n}\n\nexport function toPx(val : number | string) : string {\n return `${ toNum(val) }px`;\n}\n\nexport function toCSS(val : number | string) : string {\n\n if (typeof val === 'number') {\n return toPx(val);\n }\n\n return isPerc(val) ? val : toPx(val);\n}\n\nexport function percOf(num : number, perc : string) : number {\n return parseInt(num * toNum(perc) / 100, 10);\n}\n\nexport function normalizeDimension(dim : string | number, max : number) : number {\n if (typeof dim === 'number') {\n return dim;\n } else if (isPerc(dim)) {\n return percOf(max, dim);\n } else if (isPx(dim)) {\n return toNum(dim);\n } else {\n throw new Error(`Can not normalize dimension: ${ dim }`);\n }\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nexport function memoized(target : Object, name : string, descriptor : Object) {\n let method = descriptor.value;\n\n descriptor.value = function memoizedFunction() : T {\n\n this.__memoized__ = this.__memoized__ || {};\n\n if (!this.__memoized__.hasOwnProperty(name)) {\n this.__memoized__[name] = method.apply(this, arguments);\n }\n\n return this.__memoized__[name];\n };\n\n descriptor.value.displayName = `${ name }:memoized`;\n}\n\nexport function promise(target : Object, name : string, descriptor : Object) {\n let method = descriptor.value;\n\n descriptor.value = function promisifiedFunction() : ZalgoPromise {\n return ZalgoPromise.try(method, this, arguments);\n };\n\n descriptor.value.displayName = `${ name }:promisified`;\n}\n","/* @flow */\n\nimport { CONFIG } from 'post-robot/src';\nimport { config, logLevels, info as logInfo, warn as logWarn, error as logError } from 'beaver-logger/client';\n\nexport function setLogLevel(logLevel : string) {\n if (logLevels.indexOf(logLevel) === -1) {\n throw new Error(`Invalid logLevel: ${ logLevel }`);\n }\n config.logLevel = logLevel;\n CONFIG.LOG_LEVEL = logLevel;\n window.LOG_LEVEL = logLevel;\n}\n\nexport function info(name : string, event : string, payload : Object = {}) {\n logInfo(`xc_${ name }_${ event }`, payload);\n}\n\n\n/* Log Warning\n -----------\n\n Log a warning\n*/\n\nexport function warn(name : string, event : string, payload : Object = {}) {\n logWarn(`xc_${ name }_${ event }`, payload);\n}\n\n\n/* Log Error\n ---------\n\n Log an error\n*/\n\nexport function error(name : string, event : string, payload : Object = {}) {\n logError(`xc_${ name }_${ event }`, payload);\n}\n","/* @flow */\n\nimport { isSameDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { __ZOID__ } from '../constants';\n\nexport function globalFor(win : CrossDomainWindowType) : ?Object {\n\n if (!isSameDomain(win)) {\n return;\n }\n\n if (!win[__ZOID__]) {\n win[__ZOID__] = {};\n }\n\n return win[__ZOID__];\n}\n\nexport function localGlobal() : Object {\n let global = globalFor(window);\n\n if (!global) {\n throw new Error(`Could not get local global`);\n }\n\n return global;\n}\n\nexport let global = localGlobal();\n","/* @flow */\n\nexport * from './dom';\nexport * from './fn';\nexport * from './promise';\nexport * from './util';\nexport * from './css';\nexport * from './decorators';\nexport * from './logger';\nexport * from './global';\n","/* @flow */\n\nexport function isRegex(item : mixed) : boolean {\n return Object.prototype.toString.call(item) === '[object RegExp]';\n}\n\n// eslint-disable-next-line no-unused-vars\nexport function noop(...args : Array) {\n // pass\n}\n","/* @flow */\n\nexport const PROTOCOL = {\n MOCK: ('mock:' : 'mock:'),\n FILE: ('file:' : 'file:'),\n ABOUT: ('about:' : 'about:')\n};\n\nexport const WILDCARD = '*';\n\nexport const WINDOW_TYPE = {\n IFRAME: ('iframe' : 'iframe'),\n POPUP: ('popup' : 'popup')\n};\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { isRegex, noop } from './util';\nimport type { CrossDomainWindowType, SameDomainWindowType, DomainMatcher } from './types';\nimport { PROTOCOL, WILDCARD } from './constants';\n\nlet IE_WIN_ACCESS_ERROR = 'Call was rejected by callee.\\r\\n';\n\nexport function isFileProtocol(win : SameDomainWindowType = window) : boolean {\n return win.location.protocol === PROTOCOL.FILE;\n}\n\nexport function isAboutProtocol(win : SameDomainWindowType = window) : boolean {\n return win.location.protocol === PROTOCOL.ABOUT;\n}\n\nexport function getParent(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n\n if (!win) {\n return;\n }\n\n try {\n if (win.parent && win.parent !== win) {\n return win.parent;\n }\n } catch (err) {\n // pass\n }\n}\n\nexport function getOpener(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n\n if (!win) {\n return;\n }\n\n // Make sure we're not actually an iframe which has had window.open() called on us\n if (getParent(win)) {\n return;\n }\n\n try {\n return win.opener;\n } catch (err) {\n // pass\n }\n}\n\nexport function canReadFromWindow(win : CrossDomainWindowType | SameDomainWindowType) : boolean {\n try {\n // $FlowFixMe\n noop(win && win.location && win.location.href);\n return true;\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\nexport function getActualDomain(win? : SameDomainWindowType = window) : string {\n\n let location = win.location;\n\n if (!location) {\n throw new Error(`Can not read window location`);\n }\n\n let protocol = location.protocol;\n\n if (!protocol) {\n throw new Error(`Can not read window protocol`);\n }\n\n if (protocol === PROTOCOL.FILE) {\n return `${ PROTOCOL.FILE }//`;\n }\n\n if (protocol === PROTOCOL.ABOUT) {\n\n let parent = getParent(win);\n if (parent && canReadFromWindow(parent)) {\n // $FlowFixMe\n return getActualDomain(parent);\n }\n\n return `${ PROTOCOL.ABOUT }//`;\n }\n\n let host = location.host;\n\n if (!host) {\n throw new Error(`Can not read window host`);\n }\n\n return `${ protocol }//${ host }`;\n}\n\nexport function getDomain(win? : SameDomainWindowType = window) : string {\n\n let domain = getActualDomain(win);\n\n if (domain && win.mockDomain && win.mockDomain.indexOf(PROTOCOL.MOCK) === 0) {\n return win.mockDomain;\n }\n\n return domain;\n}\n\nexport function isBlankDomain(win : CrossDomainWindowType) : boolean {\n try {\n // $FlowFixMe\n if (!win.location.href) {\n return true;\n }\n\n if (win.location.href === 'about:blank') {\n return true;\n }\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\nexport function isActuallySameDomain(win : CrossDomainWindowType) : boolean {\n\n try {\n if (win === window) {\n return true;\n }\n\n } catch (err) {\n // pass\n }\n\n try {\n let desc = Object.getOwnPropertyDescriptor(win, 'location');\n\n if (desc && desc.enumerable === false) {\n return false;\n }\n\n } catch (err) {\n // pass\n }\n\n try {\n // $FlowFixMe\n if (isAboutProtocol(win) && canReadFromWindow(win)) {\n return true;\n }\n } catch (err) {\n // pass\n }\n\n try {\n // $FlowFixMe\n if (getActualDomain(win) === getActualDomain(window)) {\n return true;\n }\n\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\nexport function isSameDomain(win : CrossDomainWindowType | SameDomainWindowType) : boolean {\n\n if (!isActuallySameDomain(win)) {\n return false;\n }\n\n try {\n\n if (win === window) {\n return true;\n }\n\n // $FlowFixMe\n if (isAboutProtocol(win) && canReadFromWindow(win)) {\n return true;\n }\n\n // $FlowFixMe\n if (getDomain(window) === getDomain(win)) {\n return true;\n }\n\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\n\nexport function assertSameDomain(win : CrossDomainWindowType | SameDomainWindowType) : SameDomainWindowType {\n if (!isSameDomain(win)) {\n throw new Error(`Expected window to be same domain`);\n }\n\n // $FlowFixMe\n return win;\n}\n\nexport function getParents(win : CrossDomainWindowType) : Array {\n\n let result = [];\n\n try {\n\n while (win.parent !== win) {\n result.push(win.parent);\n win = win.parent;\n }\n\n } catch (err) {\n // pass\n }\n\n return result;\n}\n\nexport function isAncestorParent(parent : CrossDomainWindowType, child : CrossDomainWindowType) : boolean {\n\n if (!parent || !child) {\n return false;\n }\n\n let childParent = getParent(child);\n\n if (childParent) {\n return childParent === parent;\n }\n\n if (getParents(child).indexOf(parent) !== -1) {\n return true;\n }\n\n return false;\n}\n\nexport function getFrames(win : CrossDomainWindowType) : Array {\n\n let result = [];\n\n let frames;\n\n try {\n frames = win.frames;\n } catch (err) {\n frames = win;\n }\n\n let len;\n\n try {\n len = frames.length;\n } catch (err) {\n // pass\n }\n\n if (len === 0) {\n return result;\n }\n\n if (len) {\n for (let i = 0; i < len; i++) {\n\n let frame;\n\n try {\n frame = frames[i];\n } catch (err) {\n continue;\n }\n\n result.push(frame);\n }\n\n return result;\n }\n\n for (let i = 0; i < 100; i++) {\n let frame;\n\n try {\n frame = frames[i];\n } catch (err) {\n return result;\n }\n\n if (!frame) {\n return result;\n }\n\n result.push(frame);\n }\n\n return result;\n}\n\n\nexport function getAllChildFrames(win : CrossDomainWindowType) : Array {\n\n let result = [];\n\n for (let frame of getFrames(win)) {\n result.push(frame);\n\n for (let childFrame of getAllChildFrames(frame)) {\n result.push(childFrame);\n }\n }\n\n return result;\n}\n\nexport function getTop(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n\n try {\n if (win.top) {\n return win.top;\n }\n } catch (err) {\n // pass\n }\n\n if (getParent(win) === win) {\n return win;\n }\n\n try {\n if (isAncestorParent(window, win) && window.top) {\n return window.top;\n }\n } catch (err) {\n // pass\n }\n\n try {\n if (isAncestorParent(win, window) && window.top) {\n return window.top;\n }\n } catch (err) {\n // pass\n }\n\n for (let frame of getAllChildFrames(win)) {\n try {\n if (frame.top) {\n return frame.top;\n }\n } catch (err) {\n // pass\n }\n\n if (getParent(frame) === frame) {\n return frame;\n }\n }\n}\n\nexport function getNextOpener(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n return getOpener(getTop(win) || win);\n}\n\nexport function getUltimateTop(win? : CrossDomainWindowType = window) : CrossDomainWindowType {\n let opener = getNextOpener(win);\n\n if (opener) {\n return getUltimateTop(opener);\n }\n\n return top;\n}\n\nexport function getAllFramesInWindow(win : CrossDomainWindowType) : Array {\n let top = getTop(win);\n\n if (!top) {\n throw new Error(`Can not determine top window`);\n }\n\n return [ ...getAllChildFrames(top), top ];\n}\n\nexport function getAllWindows(win? : CrossDomainWindowType = window) : $ReadOnlyArray {\n let frames = getAllFramesInWindow(win);\n let opener = getNextOpener(win);\n\n if (opener) {\n return [ ...getAllWindows(opener), ...frames ];\n } else {\n return frames;\n }\n}\n\nexport function isTop(win : CrossDomainWindowType) : boolean {\n return win === getTop(win);\n}\n\nexport function isFrameWindowClosed(frame : HTMLIFrameElement) : boolean {\n\n if (!frame.contentWindow) {\n return true;\n }\n\n if (!frame.parentNode) {\n return true;\n }\n\n let doc = frame.ownerDocument;\n\n if (doc && doc.documentElement && !doc.documentElement.contains(frame)) {\n return true;\n }\n\n return false;\n}\n\nfunction safeIndexOf(collection : Array, item : T) : number {\n for (let i = 0; i < collection.length; i++) {\n\n try {\n if (collection[i] === item) {\n return i;\n }\n } catch (err) {\n // pass\n }\n }\n\n return -1;\n}\n\nlet iframeWindows = [];\nlet iframeFrames = [];\n\nexport function isWindowClosed(win : CrossDomainWindowType, allowMock : boolean = true) : boolean {\n\n try {\n if (win === window) {\n return false;\n }\n } catch (err) {\n return true;\n }\n\n try {\n if (!win) {\n return true;\n }\n\n } catch (err) {\n return true;\n }\n\n try {\n if (win.closed) {\n return true;\n }\n\n } catch (err) {\n\n // I love you so much IE\n\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return false;\n }\n\n return true;\n }\n\n\n if (allowMock && isSameDomain(win)) {\n try {\n // $FlowFixMe\n if (win.mockclosed) {\n return true;\n }\n } catch (err) {\n // pass\n }\n }\n\n // Mobile safari\n\n try {\n if (!win.parent || !win.top) {\n return true;\n }\n } catch (err) {\n // pass\n }\n\n // Yes, this actually happens in IE. win === win errors out when the window\n // is from an iframe, and the iframe was removed from the page.\n\n try {\n noop(win === win); // eslint-disable-line no-self-compare\n } catch (err) {\n return true;\n }\n\n // IE orphaned frame\n\n let iframeIndex = safeIndexOf(iframeWindows, win);\n\n if (iframeIndex !== -1) {\n let frame = iframeFrames[iframeIndex];\n\n if (frame && isFrameWindowClosed(frame)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction cleanIframes() {\n for (let i = 0; i < iframeWindows.length; i++) {\n let closed = false;\n\n try {\n closed = iframeWindows[i].closed;\n } catch (err) {\n // pass\n }\n\n if (closed) {\n iframeFrames.splice(i, 1);\n iframeWindows.splice(i, 1);\n }\n }\n}\n\nexport function linkFrameWindow(frame : HTMLIFrameElement) {\n\n cleanIframes();\n\n if (frame && frame.contentWindow) {\n try {\n iframeWindows.push(frame.contentWindow);\n iframeFrames.push(frame);\n } catch (err) {\n // pass\n }\n }\n}\n\nexport function getUserAgent(win : ?SameDomainWindowType) : string {\n win = win || window;\n return win.navigator.mockUserAgent || win.navigator.userAgent;\n}\n\n\nexport function getFrameByName(win : CrossDomainWindowType, name : string) : ?CrossDomainWindowType {\n\n let winFrames = getFrames(win);\n\n for (let childFrame of winFrames) {\n try {\n // $FlowFixMe\n if (isSameDomain(childFrame) && childFrame.name === name && winFrames.indexOf(childFrame) !== -1) {\n return childFrame;\n }\n } catch (err) {\n // pass\n }\n }\n\n try {\n // $FlowFixMe\n if (winFrames.indexOf(win.frames[name]) !== -1) {\n // $FlowFixMe\n return win.frames[name];\n }\n } catch (err) {\n // pass\n }\n\n try {\n if (winFrames.indexOf(win[name]) !== -1) {\n return win[name];\n }\n } catch (err) {\n // pass\n }\n}\n\nexport function findChildFrameByName(win : CrossDomainWindowType, name : string) : ?CrossDomainWindowType {\n\n let frame = getFrameByName(win, name);\n\n if (frame) {\n return frame;\n }\n\n for (let childFrame of getFrames(win)) {\n let namedFrame = findChildFrameByName(childFrame, name);\n\n if (namedFrame) {\n return namedFrame;\n }\n }\n}\n\nexport function findFrameByName(win : CrossDomainWindowType, name : string) : ?CrossDomainWindowType {\n\n let frame;\n\n frame = getFrameByName(win, name);\n\n if (frame) {\n return frame;\n }\n\n let top = getTop(win) || win;\n\n return findChildFrameByName(top, name);\n}\n\nexport function isParent(win : CrossDomainWindowType, frame : CrossDomainWindowType) : boolean {\n\n let frameParent = getParent(frame);\n\n if (frameParent) {\n return frameParent === win;\n }\n\n for (let childFrame of getFrames(win)) {\n if (childFrame === frame) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function isOpener(parent : CrossDomainWindowType, child : CrossDomainWindowType) : boolean {\n\n return parent === getOpener(child);\n}\n\nexport function getAncestor(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n win = win || window;\n\n let opener = getOpener(win);\n\n if (opener) {\n return opener;\n }\n\n let parent = getParent(win);\n\n if (parent) {\n return parent;\n }\n}\n\nexport function getAncestors(win : CrossDomainWindowType) : Array {\n\n let results = [];\n\n let ancestor = win;\n\n while (ancestor) {\n ancestor = getAncestor(ancestor);\n if (ancestor) {\n results.push(ancestor);\n }\n }\n\n return results;\n}\n\n\nexport function isAncestor(parent : CrossDomainWindowType, child : CrossDomainWindowType) : boolean {\n\n let actualParent = getAncestor(child);\n\n if (actualParent) {\n if (actualParent === parent) {\n return true;\n }\n\n return false;\n }\n\n if (child === parent) {\n return false;\n }\n\n if (getTop(child) === child) {\n return false;\n }\n\n for (let frame of getFrames(parent)) {\n if (frame === child) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function isPopup(win? : CrossDomainWindowType = window) : boolean {\n return Boolean(getOpener(win));\n}\n\nexport function isIframe(win? : CrossDomainWindowType = window) : boolean {\n return Boolean(getParent(win));\n}\n\nexport function isFullpage(win? : CrossDomainWindowType = window) : boolean {\n return Boolean(!isIframe(win) && !isPopup(win));\n}\n\nfunction anyMatch(collection1, collection2) : boolean {\n\n for (let item1 of collection1) {\n for (let item2 of collection2) {\n if (item1 === item2) {\n return true;\n }\n }\n }\n\n return false;\n}\n\nexport function getDistanceFromTop(win : CrossDomainWindowType = window) : number {\n let distance = 0;\n let parent = win;\n\n while (parent) {\n parent = getParent(parent);\n if (parent) {\n distance += 1;\n }\n }\n\n return distance;\n}\n\nexport function getNthParent(win : CrossDomainWindowType, n : number = 1) : ?CrossDomainWindowType {\n let parent = win;\n\n for (let i = 0; i < n; i++) {\n if (!parent) {\n return;\n }\n\n parent = getParent(parent);\n }\n\n return parent;\n}\n\nexport function getNthParentFromTop(win : CrossDomainWindowType, n : number = 1) : ?CrossDomainWindowType {\n return getNthParent(win, getDistanceFromTop(win) - n);\n}\n\nexport function isSameTopWindow(win1 : CrossDomainWindowType, win2 : CrossDomainWindowType) : boolean {\n\n let top1 = getTop(win1) || win1;\n let top2 = getTop(win2) || win2;\n\n try {\n if (top1 && top2) {\n if (top1 === top2) {\n return true;\n }\n\n return false;\n }\n } catch (err) {\n // pass\n }\n\n let allFrames1 = getAllFramesInWindow(win1);\n let allFrames2 = getAllFramesInWindow(win2);\n\n if (anyMatch(allFrames1, allFrames2)) {\n return true;\n }\n\n let opener1 = getOpener(top1);\n let opener2 = getOpener(top2);\n\n if (opener1 && anyMatch(getAllFramesInWindow(opener1), allFrames2)) {\n return false;\n }\n\n if (opener2 && anyMatch(getAllFramesInWindow(opener2), allFrames1)) {\n return false;\n }\n\n return false;\n}\n\nexport function matchDomain(pattern : DomainMatcher, origin : DomainMatcher) : boolean {\n\n if (typeof pattern === 'string') {\n\n if (typeof origin === 'string') {\n return pattern === WILDCARD || origin === pattern;\n }\n\n if (isRegex(origin)) {\n return false;\n }\n\n if (Array.isArray(origin)) {\n return false;\n }\n }\n\n if (isRegex(pattern)) {\n\n if (isRegex(origin)) {\n return pattern.toString() === origin.toString();\n }\n\n if (Array.isArray(origin)) {\n return false;\n }\n\n // $FlowFixMe\n return Boolean(origin.match(pattern));\n }\n\n if (Array.isArray(pattern)) {\n\n if (Array.isArray(origin)) {\n return JSON.stringify(pattern) === JSON.stringify(origin);\n }\n\n if (isRegex(origin)) {\n return false;\n }\n\n return pattern.some(subpattern => matchDomain(subpattern, origin));\n }\n\n return false;\n}\n\nexport function stringifyDomainPattern(pattern : DomainMatcher) : string {\n if (Array.isArray(pattern)) {\n return `(${ pattern.join(' | ') })`;\n } else if (isRegex(pattern)) {\n return `RegExp(${ pattern.toString() }`;\n } else {\n return pattern.toString();\n }\n}\n\nexport function getDomainFromUrl(url : string) : string {\n\n let domain;\n\n if (url.match(/^(https?|mock|file):\\/\\//)) {\n domain = url;\n } else {\n return getDomain();\n }\n\n domain = domain.split('/').slice(0, 3).join('/');\n\n return domain;\n}\n\nexport function onCloseWindow(win : CrossDomainWindowType, callback : Function, delay : number = 1000, maxtime : number = Infinity) : { cancel : () => void } {\n\n let timeout;\n\n let check = () => {\n\n if (isWindowClosed(win)) {\n\n if (timeout) {\n clearTimeout(timeout);\n }\n\n return callback();\n }\n\n if (maxtime <= 0) {\n clearTimeout(timeout);\n } else {\n maxtime -= delay;\n timeout = setTimeout(check, delay);\n }\n };\n\n check();\n\n return {\n cancel() {\n if (timeout) {\n clearTimeout(timeout);\n }\n }\n };\n}\n\n// eslint-disable-next-line complexity\nexport function isWindow(obj : Object) : boolean {\n\n try {\n if (obj === window) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (Object.prototype.toString.call(obj) === '[object Window]') {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (window.Window && obj instanceof window.Window) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (obj && obj.self === obj) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (obj && obj.parent === obj) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (obj && obj.top === obj) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (noop(obj === obj) === '__unlikely_value__') { // eslint-disable-line no-self-compare\n return false;\n }\n\n } catch (err) {\n return true;\n }\n\n try {\n if (obj && obj.__cross_domain_utils_window_check__ === '__unlikely_value__') {\n return false;\n }\n\n } catch (err) {\n return true;\n }\n\n return false;\n}\n\nexport function isBrowser() : boolean {\n return (typeof window !== 'undefined' && typeof window.location !== 'undefined');\n}\n\nexport function isCurrentDomain(domain : string) : boolean {\n if (!isBrowser()) {\n return false;\n }\n\n return (getDomain() === domain);\n}\n\nexport function isMockDomain(domain : string) : boolean {\n return domain.indexOf(PROTOCOL.MOCK) === 0;\n}\n\nexport function normalizeMockUrl(url : string) : string {\n if (!isMockDomain(getDomainFromUrl(url))) {\n return url;\n }\n\n if (!__TEST__) {\n throw new Error(`Mock urls not supported out of test mode`);\n }\n\n return url.replace(/^mock:\\/\\/[^/]+/, getActualDomain(window));\n}\n\nexport function closeWindow(win : CrossDomainWindowType) {\n try {\n win.close();\n } catch (err) {\n // pass\n }\n}\n\nexport function getFrameForWindow(win : CrossDomainWindowType) : ?HTMLElement {\n if (isSameDomain(win)) {\n return assertSameDomain(win).frameElement;\n }\n\n for (const frame of document.querySelectorAll('iframe')) {\n if (frame && frame.contentWindow && frame.contentWindow === win) {\n return frame;\n }\n }\n}\n","/* @flow */\n\n// export something to force webpack to see this as an ES module\nexport const TYPES = true;\n\nexport type CrossDomainLocationType = {|\n\n|};\n\nexport type CrossDomainWindowType = {|\n location : string | CrossDomainLocationType,\n self : CrossDomainWindowType,\n closed : boolean,\n open : (string, string, string) => CrossDomainWindowType,\n close : () => void,\n focus : () => void,\n top : CrossDomainWindowType,\n frames : Array,\n opener ? : CrossDomainWindowType,\n parent : CrossDomainWindowType,\n length : number,\n postMessage : (string, string) => void\n|};\n\nexport type SameDomainWindowType = Object & {\n location : string | Object,\n self : CrossDomainWindowType,\n closed : boolean,\n open : (string, string, string) => CrossDomainWindowType,\n close : () => void,\n focus : () => void,\n XMLHttpRequest : typeof XMLHttpRequest,\n document : Document,\n navigator : {\n userAgent : string,\n mockUserAgent? : string\n }\n};\n\nexport type DomainMatcher = string | Array | $ReadOnlyArray | RegExp;\n","/* @flow */\n\nexport * from './utils';\nexport * from './types';\nexport * from './constants';\n","/* @flow */\n\nexport const ZOID = `zoid`;\n\nexport const __ZOID__ = `__${ ZOID }__`;\n\nexport const POST_MESSAGE = {\n INIT: `${ ZOID }_init`,\n PROPS: `${ ZOID }_props`,\n PROP_CALLBACK: `${ ZOID }_prop_callback`,\n CLOSE: `${ ZOID }_close`,\n CHECK_CLOSE: `${ ZOID }_check_close`,\n REDIRECT: `${ ZOID }_redirect`,\n RESIZE: `${ ZOID }_resize`,\n DELEGATE: `${ ZOID }_delegate`,\n ALLOW_DELEGATE: `${ ZOID }_allow_delegate`,\n ERROR: `${ ZOID }_error`,\n HIDE: `${ ZOID }_hide`,\n SHOW: `${ ZOID }_show`\n};\n\nexport const PROP_TYPES = {\n STRING: `string`,\n OBJECT: `object`,\n FUNCTION: `function`,\n BOOLEAN: `boolean`,\n NUMBER: `number`\n};\n\nexport const INITIAL_PROPS = {\n RAW: 'raw',\n UID: 'uid'\n};\n\nexport const WINDOW_REFERENCES = {\n OPENER: `opener`,\n TOP: `top`,\n PARENT: `parent`,\n GLOBAL: `global`\n};\n\nexport const PROP_TYPES_LIST : Array = Object.keys(PROP_TYPES).map(key => PROP_TYPES[key]);\n\nexport const CONTEXT_TYPES = {\n IFRAME: `iframe`,\n POPUP: `popup`\n};\n\nexport const CLASS_NAMES = {\n ZOID: `${ ZOID }`,\n OUTLET: `${ ZOID }-outlet`,\n COMPONENT_FRAME: `${ ZOID }-component-frame`,\n PRERENDER_FRAME: `${ ZOID }-prerender-frame`,\n VISIBLE: `${ ZOID }-visible`,\n INVISIBLE: `${ ZOID }-invisible`\n};\n\nexport const EVENTS = {\n CLOSE: `${ ZOID }-close`\n};\n\nexport const ATTRIBUTES = {\n IFRAME_PLACEHOLDER: `data-zoid-${ ZOID }-placeholder`\n};\n\nexport const ANIMATION_NAMES = {\n SHOW_CONTAINER: `${ ZOID }-show-container`,\n SHOW_COMPONENT: `${ ZOID }-show-component`,\n HIDE_CONTAINER: `${ ZOID }-hide-container`,\n HIDE_COMPONENT: `${ ZOID }-hide-component`\n};\n\nexport const EVENT_NAMES = {\n CLICK: 'click'\n};\n\nexport const CLOSE_REASONS = {\n PARENT_CALL: 'parent_call',\n CHILD_CALL: 'child_call',\n CLOSE_DETECTED: 'close_detected',\n USER_CLOSED: 'user_closed',\n PARENT_CLOSE_DETECTED: 'parent_close_detected'\n};\n\nexport const CONTEXT_TYPES_LIST : Array = Object.keys(CONTEXT_TYPES).map(key => CONTEXT_TYPES[key]);\n\nexport const DELEGATE = {\n CALL_ORIGINAL: 'call_original',\n CALL_DELEGATE: 'call_delegate'\n};\n\nexport const WILDCARD = '*';\n\nexport const DEFAULT_DIMENSIONS = {\n WIDTH: 300,\n HEIGHT: 150\n};\n","/* @flow */\n\nimport { CONSTANTS } from './conf';\n\nexport let global : Object = window[CONSTANTS.WINDOW_PROPS.POSTROBOT] = window[CONSTANTS.WINDOW_PROPS.POSTROBOT] || {};\n\n// Backwards compatibility\n\nglobal.registerSelf = () => {\n // pass\n};\n","/* @flow */\n\nexport let CONSTANTS = {\n\n POST_MESSAGE_TYPE: {\n REQUEST: 'postrobot_message_request',\n RESPONSE: 'postrobot_message_response',\n ACK: 'postrobot_message_ack'\n },\n\n POST_MESSAGE_ACK: {\n SUCCESS: 'success',\n ERROR: 'error'\n },\n\n POST_MESSAGE_NAMES: {\n METHOD: 'postrobot_method',\n HELLO: 'postrobot_ready',\n OPEN_TUNNEL: 'postrobot_open_tunnel'\n },\n\n WINDOW_TYPES: {\n FULLPAGE: 'fullpage',\n POPUP: 'popup',\n IFRAME: 'iframe'\n },\n\n WINDOW_PROPS: {\n POSTROBOT: '__postRobot__'\n },\n\n SERIALIZATION_TYPES: {\n METHOD: 'postrobot_method',\n ERROR: 'postrobot_error',\n PROMISE: 'postrobot_promise',\n ZALGO_PROMISE: 'postrobot_zalgo_promise',\n REGEX: 'regex'\n },\n\n SEND_STRATEGIES: {\n POST_MESSAGE: 'postrobot_post_message',\n BRIDGE: 'postrobot_bridge',\n GLOBAL: 'postrobot_global'\n },\n\n MOCK_PROTOCOL: 'mock:',\n FILE_PROTOCOL: 'file:',\n\n BRIDGE_NAME_PREFIX: '__postrobot_bridge__',\n POSTROBOT_PROXY: '__postrobot_proxy__',\n\n WILDCARD: '*'\n};\n\nexport const POST_MESSAGE_NAMES = {\n METHOD: 'postrobot_method',\n HELLO: 'postrobot_hello',\n OPEN_TUNNEL: 'postrobot_open_tunnel'\n};\n\nexport let POST_MESSAGE_NAMES_LIST : Array = Object.keys(POST_MESSAGE_NAMES)\n .map(key => POST_MESSAGE_NAMES[key]);\n","/* @flow */\n\nimport { CONSTANTS } from './constants';\n\nexport let CONFIG : Object = {\n\n ALLOW_POSTMESSAGE_POPUP: ('__ALLOW_POSTMESSAGE_POPUP__' in window)\n ? window.__ALLOW_POSTMESSAGE_POPUP__\n : __POST_ROBOT__.__ALLOW_POSTMESSAGE_POPUP__,\n\n BRIDGE_TIMEOUT: 5000,\n CHILD_WINDOW_TIMEOUT: 5000,\n\n ACK_TIMEOUT: (window.navigator.userAgent.match(/MSIE/i) !== -1 && !__TEST__) ? 10000 : 2000,\n RES_TIMEOUT: __TEST__ ? 2000 : -1,\n \n ALLOWED_POST_MESSAGE_METHODS: {\n [ CONSTANTS.SEND_STRATEGIES.POST_MESSAGE ]: true,\n [ CONSTANTS.SEND_STRATEGIES.BRIDGE ]: true,\n [ CONSTANTS.SEND_STRATEGIES.GLOBAL ]: true\n },\n\n ALLOW_SAME_ORIGIN: false\n};\n\nif (window.location.href.indexOf(CONSTANTS.FILE_PROTOCOL) === 0) {\n CONFIG.ALLOW_POSTMESSAGE_POPUP = true;\n}\n","/* @flow */\n\nexport * from './config';\nexport * from './constants';\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","/* @flow */\n/* eslint max-lines: off */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nexport { noop, once, uniqueID, isLocalStorageEnabled } from 'belter/src';\n\nconst moduleGlobal = {};\n\nexport function getGlobal() : Object {\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n return moduleGlobal;\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport function memoize(method : (...args : $ReadOnlyArray) => R, options : { time? : number } = {}) : ((...args : $ReadOnlyArray) => R) {\n\n const cache : { [key : string] : { time : number, value : R } } = {};\n\n // eslint-disable-next-line no-unused-vars, flowtype/no-weak-types\n return function memoizedFunction(...args : $ReadOnlyArray) : R {\n\n let key : string;\n\n try {\n key = JSON.stringify(Array.prototype.slice.call(arguments));\n } catch (err) {\n throw new Error(`Arguments not serializable -- can not be used to memoize`);\n }\n\n const time = options.time;\n\n if (cache[key] && time && (Date.now() - cache[key].time) < time) {\n delete cache[key];\n }\n\n const glob = getGlobal();\n\n if (glob.__CACHE_START_TIME__ && cache[key] && cache[key].time < glob.__CACHE_START_TIME__) {\n delete cache[key];\n }\n\n if (cache[key]) {\n return cache[key].value;\n }\n\n cache[key] = {\n time: Date.now(),\n value: method.apply(this, arguments)\n };\n\n return cache[key].value;\n };\n}\n\nexport function hashStr(str : string) : number {\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n hash += str[i].charCodeAt(0) * Math.pow((i % 10) + 1, 5);\n }\n return Math.floor(Math.pow(Math.sqrt(hash), 5));\n}\n\nexport function strHashStr(str : string) : string {\n let hash = '';\n\n for (let i = 0; i < str.length; i++) {\n let total = (str[i].charCodeAt(0) * i);\n\n if (str[i + 1]) {\n total += (str[i + 1].charCodeAt(0) * (i - 1));\n }\n\n hash += String.fromCharCode(97 + (Math.abs(total) % 26));\n }\n\n return hash;\n}\n\nexport function match(str : string, pattern : RegExp) : ?string {\n const regmatch = str.match(pattern);\n if (regmatch) {\n return regmatch[1];\n }\n}\n\nexport function safeJSON(item : mixed) : string {\n return JSON.stringify(item, (key, val) => {\n\n if (typeof val === 'function') {\n return `<${ typeof val }>`;\n }\n\n try {\n JSON.stringify(val);\n } catch (err) {\n return `<${ typeof val }>`;\n }\n\n return val;\n });\n}\n\ntype Listener = {|\n listen : (method : Function) => {\n cancel : () => void\n },\n once : (method : Function) => void,\n trigger : (...args : $ReadOnlyArray) => void\n|};\n\nexport function eventEmitter() : Listener {\n\n const listeners = [];\n\n return {\n listen(method : Function) : { cancel : () => void } {\n listeners.push(method);\n\n return {\n cancel() {\n listeners.splice(listeners.indexOf(method), 1);\n }\n };\n },\n\n once(method : Function) {\n const listener = this.listen(function onceListener() {\n method.apply(null, arguments);\n listener.cancel();\n });\n },\n\n trigger(...args : $ReadOnlyArray) {\n for (const listener of listeners) {\n listener(...args);\n }\n }\n };\n}\n\nexport function awaitKey(obj : Object, key : string) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n\n let value = obj[key];\n\n if (value) {\n return resolve(value);\n }\n\n delete obj[key];\n\n Object.defineProperty(obj, key, {\n\n configurable: true,\n\n set(item) {\n value = item;\n\n if (value) {\n resolve(value);\n }\n },\n\n get() : mixed {\n return value;\n }\n });\n });\n}\n\nexport function stringifyError(err : mixed, level : number = 1) : string {\n\n if (level >= 3) {\n return 'stringifyError stack overflow';\n }\n\n try {\n if (!err) {\n return ``;\n }\n\n if (typeof err === 'string') {\n return err;\n }\n\n if (err instanceof Error) {\n const stack = err && err.stack;\n const message = err && err.message;\n\n if (stack && message) {\n if (stack.indexOf(message) !== -1) {\n return stack;\n } else {\n return `${ message }\\n${ stack }`;\n }\n } else if (stack) {\n return stack;\n } else if (message) {\n return message;\n }\n }\n\n if (typeof err.toString === 'function') {\n return err.toString();\n }\n\n return Object.prototype.toString.call(err);\n\n } catch (newErr) { // eslint-disable-line unicorn/catch-error-name\n return `Error while stringifying error: ${ stringifyError(newErr, level + 1) }`;\n }\n}\n\nexport function stringifyErrorMessage(err : mixed) : string {\n\n const defaultMessage = ``;\n\n if (!err) {\n return defaultMessage;\n }\n\n if (err instanceof Error) {\n return err.message || defaultMessage;\n }\n\n if (typeof err.message === 'string') {\n return err.message || defaultMessage;\n }\n\n return defaultMessage;\n}\n\nexport function stringify(item : mixed) : string {\n if (typeof item === 'string') {\n return item;\n }\n\n if (item && typeof item.toString === 'function') {\n return item.toString();\n }\n\n return Object.prototype.toString.call(item);\n}\n\nexport function domainMatches(hostname : string, domain : string) : boolean {\n hostname = hostname.split('://')[1];\n const index = hostname.indexOf(domain);\n return (index !== -1 && hostname.slice(index) === domain);\n}\n\nexport function patchMethod(obj : Object, name : string, handler : Function) {\n const original = obj[name];\n\n obj[name] = function patchedMethod() : mixed {\n return handler({\n context: this,\n args: Array.prototype.slice.call(arguments),\n original,\n callOriginal: () => original.apply(this, arguments)\n });\n };\n}\n\nexport function isObject(obj : mixed) : boolean {\n return (typeof obj === 'object' && obj !== null);\n}\n\nexport function extend(obj : T, source : Object) : T {\n if (!source) {\n return obj;\n }\n\n if (Object.assign) { // eslint-disable-line compat/compat\n return Object.assign(obj, source); // eslint-disable-line compat/compat\n }\n\n for (const key in source) {\n if (source.hasOwnProperty(key)) {\n obj[key] = source[key];\n }\n }\n\n return obj;\n}\n\nexport function deepExtend (obj : T, source : Object) : T {\n if (!source) {\n return obj;\n }\n\n for (const key in source) {\n if (source.hasOwnProperty(key)) {\n if (isObject(obj[key]) && isObject(source[key])) {\n deepExtend(obj[key], source[key]);\n } else {\n obj[key] = source[key];\n }\n }\n }\n\n return obj;\n}\n\nexport function hasValue(obj : { [string] : T }, value : T) : boolean {\n for (const key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] === value) {\n return true;\n }\n }\n return false;\n}\n\nexport function contains(arr : $ReadOnlyArray, value : T) : boolean {\n return arr.indexOf(value) !== -1;\n}\n\n// eslint-disable-next-line flowtype/no-mutable-array\nexport function sortBy(arr : Array, order : $ReadOnlyArray) : Array {\n return arr.sort((a : T, b : T) => {\n return order.indexOf(a) - order.indexOf(b);\n });\n}\n\nexport function reverseMap(obj : { [string] : string }) : { [string] : string } {\n const result = {};\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n result[obj[key]] = key;\n }\n }\n return result;\n}\n\n// eslint-disable-next-line flowtype/no-mutable-array\nexport function arrayRemove(arr : Array, item : T) {\n arr.splice(arr.indexOf(item), 1);\n}\n\nexport function identity(item : T) : T {\n return item;\n}\n\nexport function values(obj : { [string] : T }) : $ReadOnlyArray {\n const result = [];\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n result.push(obj[key]);\n }\n }\n return result;\n}\n\nexport function perc(pixels : number, percentage : number) : number {\n return Math.round((pixels * percentage) / 100);\n}\n\nexport function min(...args : $ReadOnlyArray) : number {\n return Math.min(...args);\n}\n\nexport function max(...args : $ReadOnlyArray) : number {\n return Math.max(...args);\n}\n\nexport function regexMap(str : string, regex : RegExp, handler : () => T) : $ReadOnlyArray {\n const results = [];\n\n // $FlowFixMe\n str.replace(regex, function regexMapMatcher() {\n results.push(handler.apply(null, arguments));\n });\n\n return results;\n}\n","/* @flow */\n\nimport { isSameDomain, isSameTopWindow, isActuallySameDomain, getActualDomain, getDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONSTANTS } from '../../conf';\nimport { needsGlobalMessagingForBrowser } from '../../lib';\n\nexport let SEND_MESSAGE_STRATEGIES = {};\n\n\nSEND_MESSAGE_STRATEGIES[CONSTANTS.SEND_STRATEGIES.POST_MESSAGE] = (win : CrossDomainWindowType, serializedMessage : string, domain : (string | Array)) => {\n\n if (__POST_ROBOT__.__IE_POPUP_SUPPORT__) {\n try {\n require('../../compat').emulateIERestrictions(window, win);\n } catch (err) {\n return;\n }\n }\n\n let domains;\n\n if (Array.isArray(domain)) {\n domains = domain;\n } else if (typeof domain === 'string') {\n domains = [ domain ];\n } else {\n domains = [ CONSTANTS.WILDCARD ];\n }\n\n domains = domains.map(dom => {\n\n if (dom.indexOf(CONSTANTS.MOCK_PROTOCOL) === 0) {\n\n if (window.location.protocol === CONSTANTS.FILE_PROTOCOL) {\n return CONSTANTS.WILDCARD;\n }\n\n if (!isActuallySameDomain(win)) {\n throw new Error(`Attempting to send messsage to mock domain ${ dom }, but window is actually cross-domain`);\n }\n\n // $FlowFixMe\n return getActualDomain(win);\n }\n\n if (dom.indexOf(CONSTANTS.FILE_PROTOCOL) === 0) {\n return CONSTANTS.WILDCARD;\n }\n\n return dom;\n });\n\n domains.forEach(dom => {\n return win.postMessage(serializedMessage, dom);\n });\n};\n\nif (__POST_ROBOT__.__IE_POPUP_SUPPORT__) {\n\n let { sendBridgeMessage, needsBridgeForBrowser, isBridge } = require('../../bridge');\n\n SEND_MESSAGE_STRATEGIES[CONSTANTS.SEND_STRATEGIES.BRIDGE] = (win : CrossDomainWindowType, serializedMessage : string, domain : string) => {\n\n if (!needsBridgeForBrowser() && !isBridge()) {\n return;\n }\n\n if (isSameDomain(win)) {\n throw new Error(`Post message through bridge disabled between same domain windows`);\n }\n\n if (isSameTopWindow(window, win) !== false) {\n throw new Error(`Can only use bridge to communicate between two different windows, not between frames`);\n }\n\n return sendBridgeMessage(win, serializedMessage, domain);\n };\n}\n\nif (__POST_ROBOT__.__IE_POPUP_SUPPORT__ || __POST_ROBOT__.__GLOBAL_MESSAGE_SUPPORT__) {\n \n SEND_MESSAGE_STRATEGIES[CONSTANTS.SEND_STRATEGIES.GLOBAL] = (win : CrossDomainWindowType, serializedMessage : string) => {\n\n if (!needsGlobalMessagingForBrowser()) {\n return;\n }\n\n if (!isSameDomain(win)) {\n throw new Error(`Post message through global disabled between different domain windows`);\n }\n\n if (isSameTopWindow(window, win) !== false) {\n throw new Error(`Can only use global to communicate between two different windows, not between frames`);\n }\n\n // $FlowFixMe\n let foreignGlobal = win[CONSTANTS.WINDOW_PROPS.POSTROBOT];\n\n if (!foreignGlobal) {\n throw new Error(`Can not find postRobot global on foreign window`);\n }\n\n return foreignGlobal.receiveMessage({\n source: window,\n origin: getDomain(),\n data: serializedMessage\n });\n };\n}\n","/* @flow */\n\nimport { getDomain, isWindowClosed, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { CONSTANTS, CONFIG, POST_MESSAGE_NAMES_LIST } from '../../conf';\nimport { uniqueID, serializeMethods, getWindowType, jsonStringify, stringifyError } from '../../lib';\n\nimport { SEND_MESSAGE_STRATEGIES } from './strategies';\n\n\nfunction buildMessage(win : CrossDomainWindowType, message : Object, options = {}) : Object {\n\n let id = uniqueID();\n let type = getWindowType();\n let sourceDomain = getDomain(window);\n\n return {\n ...message,\n ...options,\n sourceDomain,\n id: message.id || id,\n windowType: type\n };\n}\n\n\nexport function sendMessage(win : CrossDomainWindowType, message : Object, domain : string | Array) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n message = buildMessage(win, message, {\n data: serializeMethods(win, domain, message.data),\n domain\n });\n\n let level;\n\n if (__DEBUG__) {\n if (POST_MESSAGE_NAMES_LIST.indexOf(message.name) !== -1 || message.type === CONSTANTS.POST_MESSAGE_TYPE.ACK) {\n level = 'debug';\n } else if (message.ack === 'error') {\n level = 'error';\n } else {\n level = 'info';\n }\n\n // eslint-disable-next-line no-console\n console[level]('postrobot_send', message.type.replace(/^postrobot_message_/, ''), '::', message.name, '::', domain || CONSTANTS.WILDCARD, '\\n\\n', message);\n }\n\n if (win === window && !CONFIG.ALLOW_SAME_ORIGIN) {\n throw new Error('Attemping to send message to self');\n }\n\n if (isWindowClosed(win)) {\n throw new Error('Window is closed');\n }\n\n let messages = [];\n\n let serializedMessage = jsonStringify({\n [ CONSTANTS.WINDOW_PROPS.POSTROBOT ]: message\n }, null, 2);\n\n return ZalgoPromise.map(Object.keys(SEND_MESSAGE_STRATEGIES), strategyName => {\n\n return ZalgoPromise.try(() => {\n\n if (!CONFIG.ALLOWED_POST_MESSAGE_METHODS[strategyName]) {\n throw new Error(`Strategy disallowed: ${ strategyName }`);\n }\n\n return SEND_MESSAGE_STRATEGIES[strategyName](win, serializedMessage, domain);\n\n }).then(() => {\n messages.push(`${ strategyName }: success`);\n return true;\n }, err => {\n messages.push(`${ strategyName }: ${ stringifyError(err) }\\n`);\n return false;\n });\n\n }).then(results => {\n\n let success = results.some(Boolean);\n let status = `${ message.type } ${ message.name } ${ success ? 'success' : 'error' }:\\n - ${ messages.join('\\n - ') }\\n`;\n\n if (!success) {\n throw new Error(status);\n }\n });\n });\n}\n","/* @flow */\n\nimport { type ZalgoPromise } from 'zalgo-promise/src';\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { matchDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { global } from '../global';\nimport { isRegex } from '../lib';\nimport { CONSTANTS } from '../conf';\n\nexport function resetListeners() {\n global.responseListeners = {};\n global.requestListeners = {};\n}\n\nglobal.responseListeners = global.responseListeners || {};\nglobal.requestListeners = global.requestListeners || {};\nglobal.WINDOW_WILDCARD = global.WINDOW_WILDCARD || new (function WindowWildcard() { /* pass */ })();\n\nglobal.erroredResponseListeners = global.erroredResponseListeners || {};\n\nconst __DOMAIN_REGEX__ = '__domain_regex__';\n\nexport type RequestListenerType = {\n handler : ({ source : CrossDomainWindowType, origin : string, data : Object }) => (mixed | ZalgoPromise),\n handleError : (err : mixed) => void,\n window : ?CrossDomainWindowType,\n name : string,\n domain : string | RegExp | Array\n};\n\nexport type ResponseListenerType = {\n name : string,\n window : CrossDomainWindowType,\n domain : (string | Array | RegExp),\n respond : (err : ?mixed, result : ?Object) => void,\n ack? : ?boolean\n};\n\nexport function addResponseListener(hash : string, listener : ResponseListenerType) {\n global.responseListeners[hash] = listener;\n}\n\nexport function getResponseListener(hash : string) : ResponseListenerType {\n return global.responseListeners[hash];\n}\n\nexport function deleteResponseListener(hash : string) {\n delete global.responseListeners[hash];\n}\n\nexport function markResponseListenerErrored(hash : string) {\n global.erroredResponseListeners[hash] = true;\n}\n\nexport function isResponseListenerErrored(hash : string) : boolean {\n return Boolean(global.erroredResponseListeners[hash]);\n}\n\nexport function getRequestListener({ name, win, domain } : { name : string, win : ?CrossDomainWindowType, domain : ?(string | RegExp) }) : ?RequestListenerType {\n\n if (win === CONSTANTS.WILDCARD) {\n win = null;\n }\n\n if (domain === CONSTANTS.WILDCARD) {\n domain = null;\n }\n\n if (!name) {\n throw new Error(`Name required to get request listener`);\n }\n\n let nameListeners = global.requestListeners[name];\n\n if (!nameListeners) {\n return;\n }\n\n for (let winQualifier of [ win, global.WINDOW_WILDCARD ]) {\n\n let winListeners = winQualifier && nameListeners.get(winQualifier);\n\n if (!winListeners) {\n continue;\n }\n\n if (domain && typeof domain === 'string') {\n if (winListeners[domain]) {\n return winListeners[domain];\n }\n\n if (winListeners[__DOMAIN_REGEX__]) {\n for (let { regex, listener } of winListeners[__DOMAIN_REGEX__]) {\n if (matchDomain(regex, domain)) {\n return listener;\n }\n }\n }\n }\n\n if (winListeners[CONSTANTS.WILDCARD]) {\n return winListeners[CONSTANTS.WILDCARD];\n }\n }\n}\n\n// eslint-disable-next-line complexity\nexport function addRequestListener({ name, win, domain } : { name : string, win : ?CrossDomainWindowType, domain : ?(string | RegExp | Array) }, listener : RequestListenerType) : { cancel : () => void } {\n\n if (!name || typeof name !== 'string') {\n throw new Error(`Name required to add request listener`);\n }\n\n if (Array.isArray(win)) {\n let listenersCollection = [];\n\n for (let item of win) {\n listenersCollection.push(addRequestListener({ name, domain, win: item }, listener));\n }\n\n return {\n cancel() {\n for (let cancelListener of listenersCollection) {\n cancelListener.cancel();\n }\n }\n };\n }\n\n if (Array.isArray(domain)) {\n let listenersCollection = [];\n\n for (let item of domain) {\n listenersCollection.push(addRequestListener({ name, win, domain: item }, listener));\n }\n\n return {\n cancel() {\n for (let cancelListener of listenersCollection) {\n cancelListener.cancel();\n }\n }\n };\n }\n\n let existingListener = getRequestListener({ name, win, domain });\n\n if (!win || win === CONSTANTS.WILDCARD) {\n win = global.WINDOW_WILDCARD;\n }\n\n domain = domain || CONSTANTS.WILDCARD;\n\n if (existingListener) {\n if (win && domain) {\n throw new Error(`Request listener already exists for ${ name } on domain ${ domain.toString() } for ${ win === global.WINDOW_WILDCARD ? 'wildcard' : 'specified' } window`);\n } else if (win) {\n throw new Error(`Request listener already exists for ${ name } for ${ win === global.WINDOW_WILDCARD ? 'wildcard' : 'specified' } window`);\n } else if (domain) {\n throw new Error(`Request listener already exists for ${ name } on domain ${ domain.toString() }`);\n } else {\n throw new Error(`Request listener already exists for ${ name }`);\n }\n }\n\n let requestListeners = global.requestListeners;\n\n let nameListeners = requestListeners[name];\n\n if (!nameListeners) {\n nameListeners = new WeakMap();\n requestListeners[name] = nameListeners;\n }\n\n let winListeners = nameListeners.get(win);\n\n if (!winListeners) {\n winListeners = {};\n nameListeners.set(win, winListeners);\n }\n\n let strDomain = domain.toString();\n\n let regexListeners = winListeners[__DOMAIN_REGEX__];\n let regexListener;\n\n if (isRegex(domain)) {\n\n if (!regexListeners) {\n regexListeners = [];\n winListeners[__DOMAIN_REGEX__] = regexListeners;\n }\n\n regexListener = { regex: domain, listener };\n\n regexListeners.push(regexListener);\n\n } else {\n winListeners[strDomain] = listener;\n }\n\n return {\n cancel() {\n if (!winListeners) {\n return;\n }\n\n delete winListeners[strDomain];\n\n if (win && Object.keys(winListeners).length === 0) {\n nameListeners.delete(win);\n }\n\n if (regexListener) {\n regexListeners.splice(regexListeners.indexOf(regexListener, 1));\n }\n }\n\n };\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { isWindowClosed, matchDomain, stringifyDomainPattern, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONSTANTS } from '../../conf';\nimport { stringifyError, noop } from '../../lib';\nimport { sendMessage } from '../send';\nimport { getRequestListener, getResponseListener, deleteResponseListener, isResponseListenerErrored } from '../listeners';\n\nexport let RECEIVE_MESSAGE_TYPES = {\n\n [ CONSTANTS.POST_MESSAGE_TYPE.ACK ](source : CrossDomainWindowType, origin : string, message : Object) {\n\n if (isResponseListenerErrored(message.hash)) {\n return;\n }\n\n let options = getResponseListener(message.hash);\n\n if (!options) {\n throw new Error(`No handler found for post message ack for message: ${ message.name } from ${ origin } in ${ window.location.protocol }//${ window.location.host }${ window.location.pathname }`);\n }\n\n if (!matchDomain(options.domain, origin)) {\n throw new Error(`Ack origin ${ origin } does not match domain ${ options.domain.toString() }`);\n }\n\n options.ack = true;\n },\n\n [ CONSTANTS.POST_MESSAGE_TYPE.REQUEST ](source : CrossDomainWindowType, origin : string, message : Object) : ZalgoPromise {\n\n let options = getRequestListener({ name: message.name, win: source, domain: origin });\n\n function respond(data) : ZalgoPromise {\n\n if (message.fireAndForget || isWindowClosed(source)) {\n return ZalgoPromise.resolve();\n }\n\n return sendMessage(source, {\n target: message.originalSource,\n hash: message.hash,\n name: message.name,\n ...data\n }, origin);\n }\n\n return ZalgoPromise.all([\n\n respond({\n type: CONSTANTS.POST_MESSAGE_TYPE.ACK\n }),\n\n ZalgoPromise.try(() => {\n\n if (!options) {\n throw new Error(`No handler found for post message: ${ message.name } from ${ origin } in ${ window.location.protocol }//${ window.location.host }${ window.location.pathname }`);\n }\n\n if (!matchDomain(options.domain, origin)) {\n throw new Error(`Request origin ${ origin } does not match domain ${ options.domain.toString() }`);\n }\n\n let data = message.data;\n\n return options.handler({ source, origin, data });\n\n }).then(data => {\n\n return respond({\n type: CONSTANTS.POST_MESSAGE_TYPE.RESPONSE,\n ack: CONSTANTS.POST_MESSAGE_ACK.SUCCESS,\n data\n });\n\n }, err => {\n\n let error = stringifyError(err).replace(/^Error: /, '');\n // $FlowFixMe\n let code = err.code;\n\n return respond({\n type: CONSTANTS.POST_MESSAGE_TYPE.RESPONSE,\n ack: CONSTANTS.POST_MESSAGE_ACK.ERROR,\n error,\n code\n });\n })\n\n ]).then(noop).catch(err => {\n\n if (options && options.handleError) {\n return options.handleError(err);\n } else {\n throw err;\n }\n });\n },\n\n [ CONSTANTS.POST_MESSAGE_TYPE.RESPONSE ](source : CrossDomainWindowType, origin : string, message : Object) : void | ZalgoPromise {\n\n if (isResponseListenerErrored(message.hash)) {\n return;\n }\n\n let options = getResponseListener(message.hash);\n\n if (!options) {\n throw new Error(`No handler found for post message response for message: ${ message.name } from ${ origin } in ${ window.location.protocol }//${ window.location.host }${ window.location.pathname }`);\n }\n\n if (!matchDomain(options.domain, origin)) {\n throw new Error(`Response origin ${ origin } does not match domain ${ stringifyDomainPattern(options.domain) }`);\n }\n\n deleteResponseListener(message.hash);\n\n if (message.ack === CONSTANTS.POST_MESSAGE_ACK.ERROR) {\n let err = new Error(message.error);\n if (message.code) {\n // $FlowFixMe\n err.code = message.code;\n }\n return options.respond(err, null);\n } else if (message.ack === CONSTANTS.POST_MESSAGE_ACK.SUCCESS) {\n let data = message.data || message.response;\n\n return options.respond(null, { source, origin, data });\n }\n }\n};\n","/* @flow */\n\nimport { isWindowClosed, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONSTANTS, POST_MESSAGE_NAMES_LIST } from '../../conf';\nimport { deserializeMethods, jsonParse, addEventListener, noop } from '../../lib';\nimport { global } from '../../global';\n\nimport { RECEIVE_MESSAGE_TYPES } from './types';\n\nglobal.receivedMessages = global.receivedMessages || [];\n\ntype MessageEvent = {\n source : CrossDomainWindowType,\n origin : string,\n data : string\n};\n\nfunction parseMessage(message : string) : ?Object {\n\n let parsedMessage;\n\n try {\n parsedMessage = jsonParse(message);\n } catch (err) {\n return;\n }\n\n if (!parsedMessage) {\n return;\n }\n\n if (typeof parsedMessage !== 'object' || parsedMessage === null) {\n return;\n }\n\n parsedMessage = parsedMessage[CONSTANTS.WINDOW_PROPS.POSTROBOT];\n\n if (!parsedMessage || typeof parsedMessage !== 'object' || parsedMessage === null) {\n return;\n }\n\n if (!parsedMessage.type || typeof parsedMessage.type !== 'string') {\n return;\n }\n\n if (!RECEIVE_MESSAGE_TYPES[parsedMessage.type]) {\n return;\n }\n\n return parsedMessage;\n}\n\n\nexport function receiveMessage(event : MessageEvent) {\n\n if (!window || window.closed) {\n return;\n }\n\n try {\n if (!event.source) {\n return;\n }\n } catch (err) {\n return;\n }\n\n let { source, origin, data } = event;\n\n let message = parseMessage(data);\n\n if (!message) {\n return;\n }\n\n if (!message.sourceDomain || typeof message.sourceDomain !== 'string') {\n throw new Error(`Expected message to have sourceDomain`);\n }\n\n if (message.sourceDomain.indexOf(CONSTANTS.MOCK_PROTOCOL) === 0 || message.sourceDomain.indexOf(CONSTANTS.FILE_PROTOCOL) === 0) {\n origin = message.sourceDomain;\n }\n\n if (global.receivedMessages.indexOf(message.id) === -1) {\n global.receivedMessages.push(message.id);\n } else {\n return;\n }\n\n if (__DEBUG__) {\n let level;\n\n if (POST_MESSAGE_NAMES_LIST.indexOf(message.name) !== -1 || message.type === CONSTANTS.POST_MESSAGE_TYPE.ACK) {\n level = 'debug';\n } else if (message.ack === 'error') {\n level = 'error';\n } else {\n level = 'info';\n }\n \n // eslint-disable-next-line no-console\n console[level]('postrobot_receive', message.type.replace(/^postrobot_message_/, ''), '::', message.name, '::', origin, '\\n\\n', message);\n }\n\n if (isWindowClosed(source) && !message.fireAndForget) {\n return;\n }\n\n if (message.data) {\n message.data = deserializeMethods(source, origin, message.data);\n }\n\n RECEIVE_MESSAGE_TYPES[message.type](source, origin, message);\n}\n\nexport function messageListener(event : { source : CrossDomainWindowType, origin : string, data : string, sourceElement : CrossDomainWindowType, originalEvent? : { origin : string } }) {\n\n try {\n noop(event.source);\n } catch (err) {\n return;\n }\n\n // $FlowFixMe\n let messageEvent : MessageEvent = {\n source: event.source || event.sourceElement,\n origin: event.origin || (event.originalEvent && event.originalEvent.origin),\n data: event.data\n };\n\n if (__POST_ROBOT__.__IE_POPUP_SUPPORT__) {\n try {\n require('../../compat').emulateIERestrictions(messageEvent.source, window);\n } catch (err) {\n return;\n }\n }\n\n receiveMessage(messageEvent);\n}\n\nexport function listenForMessages() {\n addEventListener(window, 'message', messageListener);\n}\n\nglobal.receiveMessage = receiveMessage;\n","/* @flow */\n\nexport * from './receive';\nexport * from './send';\nexport * from './listeners';\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getAncestor, isAncestor, isWindowClosed, getDomain, matchDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONFIG, CONSTANTS } from '../conf';\nimport { sendMessage, addResponseListener, deleteResponseListener, markResponseListenerErrored, type ResponseListenerType } from '../drivers';\nimport { uniqueID, onChildWindowReady, sayHello, isRegex } from '../lib';\nimport { global } from '../global';\n\nglobal.requestPromises = global.requestPromises || new WeakMap();\n\ntype WindowResolverType = CrossDomainWindowType | string | HTMLIFrameElement;\n\ntype RequestOptionsType = {\n window? : ?WindowResolverType,\n domain? : ?(string | Array | RegExp),\n name? : ?string,\n data? : ?Object,\n fireAndForget? : ?boolean,\n timeout? : ?number\n};\n\ntype ResponseMessageEvent = {\n source : CrossDomainWindowType,\n origin : string,\n data : Object\n};\n\nexport function request(options : RequestOptionsType) : ZalgoPromise {\n\n let prom = ZalgoPromise.try(() => {\n\n if (!options.name) {\n throw new Error('Expected options.name');\n }\n\n let name = options.name;\n let targetWindow : ?CrossDomainWindowType;\n let domain : string | Array | RegExp;\n\n if (typeof options.window === 'string') {\n let el = document.getElementById(options.window);\n\n if (!el) {\n throw new Error(`Expected options.window ${ Object.prototype.toString.call(options.window) } to be a valid element id`);\n }\n\n if (el.tagName.toLowerCase() !== 'iframe') {\n throw new Error(`Expected options.window ${ Object.prototype.toString.call(options.window) } to be an iframe`);\n }\n\n // $FlowFixMe\n if (!el.contentWindow) {\n throw new Error('Iframe must have contentWindow. Make sure it has a src attribute and is in the DOM.');\n }\n\n // $FlowFixMe\n targetWindow = el.contentWindow;\n\n } else if (options.window instanceof HTMLIFrameElement) {\n\n if (options.window.tagName.toLowerCase() !== 'iframe') {\n throw new Error(`Expected options.window ${ Object.prototype.toString.call(options.window) } to be an iframe`);\n }\n\n if (options.window && !options.window.contentWindow) {\n throw new Error('Iframe must have contentWindow. Make sure it has a src attribute and is in the DOM.');\n }\n\n if (options.window && options.window.contentWindow) {\n // $FlowFixMe\n targetWindow = options.window.contentWindow;\n }\n } else {\n targetWindow = options.window;\n }\n\n if (!targetWindow) {\n throw new Error('Expected options.window to be a window object, iframe, or iframe element id.');\n }\n\n const win = targetWindow;\n\n domain = options.domain || CONSTANTS.WILDCARD;\n\n let hash = `${ options.name }_${ uniqueID() }`;\n\n if (isWindowClosed(win)) {\n throw new Error('Target window is closed');\n }\n\n let hasResult = false;\n\n let requestPromises = global.requestPromises.get(win);\n\n if (!requestPromises) {\n requestPromises = [];\n global.requestPromises.set(win, requestPromises);\n }\n\n let requestPromise = ZalgoPromise.try(() => {\n\n if (isAncestor(window, win)) {\n return onChildWindowReady(win, options.timeout || CONFIG.CHILD_WINDOW_TIMEOUT);\n }\n\n }).then(({ origin } = {}) => {\n\n if (isRegex(domain) && !origin) {\n return sayHello(win);\n }\n\n }).then(({ origin } = {}) => {\n\n if (isRegex(domain)) {\n if (!matchDomain(domain, origin)) {\n throw new Error(`Remote window domain ${ origin } does not match regex: ${ domain.toString() }`);\n }\n\n domain = origin;\n }\n\n if (typeof domain !== 'string' && !Array.isArray(domain)) {\n throw new TypeError(`Expected domain to be a string or array`);\n }\n\n const actualDomain = domain;\n\n return new ZalgoPromise((resolve, reject) => {\n\n let responseListener : ResponseListenerType;\n\n if (!options.fireAndForget) {\n responseListener = {\n name,\n window: win,\n domain: actualDomain,\n respond(err, result) {\n if (!err) {\n hasResult = true;\n requestPromises.splice(requestPromises.indexOf(requestPromise, 1));\n }\n\n if (err) {\n reject(err);\n } else {\n resolve(result);\n }\n }\n };\n\n addResponseListener(hash, responseListener);\n }\n\n sendMessage(win, {\n type: CONSTANTS.POST_MESSAGE_TYPE.REQUEST,\n hash,\n name,\n data: options.data,\n fireAndForget: options.fireAndForget\n }, actualDomain).catch(reject);\n\n if (options.fireAndForget) {\n return resolve();\n }\n\n let ackTimeout = CONFIG.ACK_TIMEOUT;\n let resTimeout = options.timeout || CONFIG.RES_TIMEOUT;\n\n let cycleTime = 100;\n\n let cycle = () => {\n\n if (hasResult) {\n return;\n }\n\n if (isWindowClosed(win)) {\n\n if (!responseListener.ack) {\n return reject(new Error(`Window closed for ${ name } before ack`));\n }\n\n return reject(new Error(`Window closed for ${ name } before response`));\n }\n\n ackTimeout = Math.max(ackTimeout - cycleTime, 0);\n if (resTimeout !== -1) {\n resTimeout = Math.max(resTimeout - cycleTime, 0);\n }\n\n let hasAck = responseListener.ack;\n\n if (hasAck) {\n\n if (resTimeout === -1) {\n return;\n }\n\n cycleTime = Math.min(resTimeout, 2000);\n\n } else if (ackTimeout === 0) {\n return reject(new Error(`No ack for postMessage ${ name } in ${ getDomain() } in ${ CONFIG.ACK_TIMEOUT }ms`));\n\n } else if (resTimeout === 0) {\n return reject(new Error(`No response for postMessage ${ name } in ${ getDomain() } in ${ options.timeout || CONFIG.RES_TIMEOUT }ms`));\n }\n\n setTimeout(cycle, cycleTime);\n };\n\n setTimeout(cycle, cycleTime);\n });\n });\n\n requestPromise.catch(() => {\n markResponseListenerErrored(hash);\n deleteResponseListener(hash);\n });\n\n requestPromises.push(requestPromise);\n\n return requestPromise;\n });\n\n return prom;\n}\n\nexport function send(window : WindowResolverType, name : string, data : ?Object, options : ?RequestOptionsType) : ZalgoPromise {\n\n options = options || {};\n options.window = window;\n options.name = name;\n options.data = data;\n\n return request(options);\n}\n\nexport function sendToParent(name : string, data : ?Object, options : ?RequestOptionsType) : ZalgoPromise {\n\n let win = getAncestor();\n\n if (!win) {\n return new ZalgoPromise((resolve, reject) => reject(new Error('Window does not have a parent')));\n }\n\n return send(win, name, data, options);\n}\n\nexport function client(options : RequestOptionsType = {}) : { send : (string, ?Object) => ZalgoPromise } {\n\n if (!options.window) {\n throw new Error(`Expected options.window`);\n }\n\n const win = options.window;\n\n return {\n send(name : string, data : ?Object) : ZalgoPromise {\n return send(win, name, data, options);\n }\n };\n}\n\nglobal.send = send;\n","/* @flow */\n\nimport { isWindowClosed, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { once as onceFunction, safeInterval } from '../lib';\nimport { addRequestListener, type RequestListenerType } from '../drivers';\nimport { CONSTANTS } from '../conf';\nimport { global } from '../global';\n\ntype ErrorHandlerType = (err : mixed) => void;\ntype HandlerType = ({ source : CrossDomainWindowType, origin : string, data : Object }) => (void | mixed | ZalgoPromise);\n\ntype ServerOptionsType = {\n handler? : ?HandlerType,\n errorHandler? : ?ErrorHandlerType,\n window? : CrossDomainWindowType,\n name? : ?string,\n domain? : ?(string | RegExp | Array),\n once? : ?boolean,\n errorOnClose? : ?boolean\n};\n\nexport function listen(options : ServerOptionsType) : { cancel : () => void } {\n\n if (!options.name) {\n throw new Error('Expected options.name');\n }\n\n if (!options.handler) {\n throw new Error('Expected options.handler');\n }\n\n const name = options.name;\n const win = options.window;\n const domain = options.domain;\n\n let listenerOptions : RequestListenerType = {\n handler: options.handler,\n handleError: options.errorHandler || (err => {\n throw err;\n }),\n window: win,\n domain: domain || CONSTANTS.WILDCARD,\n name\n };\n\n let requestListener = addRequestListener({ name, win, domain }, listenerOptions);\n\n if (options.once) {\n let handler = listenerOptions.handler;\n listenerOptions.handler = onceFunction(function listenOnce() : mixed | ZalgoPromise {\n requestListener.cancel();\n return handler.apply(this, arguments);\n });\n }\n\n if (listenerOptions.window && options.errorOnClose) {\n let interval = safeInterval(() => {\n if (win && typeof win === 'object' && isWindowClosed(win)) {\n interval.cancel();\n listenerOptions.handleError(new Error('Post message target window is closed'));\n }\n }, 50);\n }\n\n return {\n cancel() {\n requestListener.cancel();\n }\n };\n}\n\nexport function on(name : string, options : ServerOptionsType | HandlerType, handler : ?HandlerType) : { cancel : () => void } {\n\n if (typeof options === 'function') {\n handler = options;\n options = {};\n }\n\n options = options || {};\n\n options.name = name;\n options.handler = handler || options.handler;\n\n return listen(options);\n}\n\nexport function once(name : string, options : ?(ServerOptionsType | HandlerType) = {}, handler : ?HandlerType) : ZalgoPromise<{ source : mixed, origin : string, data : Object }> {\n\n if (typeof options === 'function') {\n handler = options;\n options = {};\n }\n\n options = options || {};\n handler = handler || options.handler;\n let errorHandler = options.errorHandler;\n\n let promise = new ZalgoPromise((resolve, reject) => {\n\n options = options || {};\n\n options.name = name;\n options.once = true;\n\n options.handler = (event) => {\n resolve(event);\n if (handler) {\n return handler(event);\n }\n };\n\n options.errorHandler = (err) => {\n reject(err);\n if (errorHandler) {\n return errorHandler(err);\n }\n };\n });\n\n let onceListener = listen(options);\n promise.cancel = onceListener.cancel;\n\n return promise;\n}\n\nexport function listener(options : ServerOptionsType = {}) : { on : (name : string, handler : HandlerType) => { cancel : () => void } } {\n\n return {\n on(name : string, handler : HandlerType) : { cancel : () => void } {\n return on(name, options, handler);\n }\n };\n}\n\nglobal.on = on;\n","/* @flow */\n\nimport { CONSTANTS } from '../conf';\nimport { messageListener } from '../drivers';\n\nexport { CONFIG, CONSTANTS } from '../conf';\n\nexport function disable() {\n delete window[CONSTANTS.WINDOW_PROPS.POSTROBOT];\n window.removeEventListener('message', messageListener);\n}\n","/* @flow */\n\nimport { getAncestor } from 'cross-domain-utils/src';\n\nexport * from './client';\nexport * from './server';\nexport * from './config';\n\nexport let parent = getAncestor();\n","/* @flow */\n\nimport { type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { global } from './global';\n\nexport function cleanUpWindow(win : CrossDomainWindowType) {\n\n // global.tunnelWindows\n // global.bridges\n // global.popupWindowsByName\n // global.responseListeners\n // global.requestListeners\n\n let requestPromises = global.requestPromises.get(win);\n\n if (requestPromises) {\n for (let promise of requestPromises) {\n promise.reject(new Error(`No response from window - cleaned up`));\n }\n }\n\n if (global.popupWindowsByWin) {\n global.popupWindowsByWin.delete(win);\n }\n\n if (global.remoteWindows) {\n global.remoteWindows.delete(win);\n }\n\n global.requestPromises.delete(win);\n global.methods.delete(win);\n global.readyPromises.delete(win);\n}\n","/* @flow */\n\nimport { initOnReady, listenForMethods } from './lib';\nimport { listenForMessages } from './drivers';\nimport { global } from './global';\nimport { on, send } from './public';\n\nexport * from './public';\nexport { cleanUpWindow } from './clean';\nexport { ZalgoPromise as Promise } from 'zalgo-promise/src';\nexport let bridge = __POST_ROBOT__.__IE_POPUP_SUPPORT__ ? require('./bridge/interface') : null;\n\nexport function init() {\n if (!global.initialized) {\n listenForMessages();\n\n if (__POST_ROBOT__.__IE_POPUP_SUPPORT__) {\n require('./bridge').openTunnelToOpener();\n }\n\n initOnReady();\n listenForMethods({ on, send });\n }\n\n global.initialized = true;\n}\n\ninit();\n","/* @flow */\n\n// eslint-disable-next-line import/no-namespace\nimport * as INTERFACE from './interface';\n\nexport * from './interface';\nexport default INTERFACE;\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { isPopup, isIframe, getUserAgent } from 'cross-domain-utils/src';\n\nimport { CONFIG, CONSTANTS } from '../conf';\n\n\nexport function stringifyError(err : mixed, level : number = 1) : string {\n\n if (level >= 3) {\n return 'stringifyError stack overflow';\n }\n\n try {\n if (!err) {\n return ``;\n }\n\n if (typeof err === 'string') {\n return err;\n }\n\n if (err instanceof Error) {\n let stack = err && err.stack;\n let message = err && err.message;\n\n if (stack && message) {\n if (stack.indexOf(message) !== -1) {\n return stack;\n } else {\n return `${ message }\\n${ stack }`;\n }\n } else if (stack) {\n return stack;\n } else if (message) {\n return message;\n }\n }\n\n if (typeof err.toString === 'function') {\n return err.toString();\n }\n\n return Object.prototype.toString.call(err);\n\n } catch (newErr) { // eslint-disable-line unicorn/catch-error-name\n return `Error while stringifying error: ${ stringifyError(newErr, level + 1) }`;\n }\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport let once = (method : Function) : ((...args : Array) => T | void) => {\n if (!method) {\n return method;\n }\n let called = false;\n return function onceWrapper() : T | void {\n if (!called) {\n called = true;\n return method.apply(this, arguments);\n }\n };\n};\n\n// eslint-disable-next-line no-unused-vars\nexport function noop(...args : Array) {\n // pass\n}\n\nexport function addEventListener(obj : Object, event : string, handler : Function) : { cancel : () => void } {\n if (obj.addEventListener) {\n obj.addEventListener(event, handler);\n } else {\n obj.attachEvent(`on${ event }`, handler);\n }\n\n return {\n cancel() {\n if (obj.removeEventListener) {\n obj.removeEventListener(event, handler);\n } else {\n obj.detachEvent(`on${ event }`, handler);\n }\n }\n };\n}\n\nexport function uniqueID() : string {\n\n let chars = '0123456789abcdef';\n\n return 'xxxxxxxxxx'.replace(/./g, () => {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n });\n}\n\ntype MixedArrayType = Array;\n\nexport function eachArray(item : MixedArrayType, callback : (item : mixed, key : number) => mixed) {\n for (let i = 0; i < item.length; i++) {\n callback(item[i], i);\n }\n}\n\nexport function eachObject(item : Object, callback : (item : mixed, key : string) => mixed) {\n for (let key in item) {\n if (item.hasOwnProperty(key)) {\n callback(item[key], key);\n }\n }\n}\n\nexport function each(item : T, callback : (item : mixed, key : number | string) => mixed) {\n if (Array.isArray(item)) {\n eachArray(item, callback);\n } else if (typeof item === 'object' && item !== null) {\n eachObject(item, callback);\n }\n}\n\nexport function replaceObject(item : T, callback : (item : mixed, key : number | string) => mixed, depth : number = 1) : T {\n\n if (depth >= 100) {\n throw new Error(`Self-referential object passed, or object contained too many layers`);\n }\n\n let newobj;\n\n if (typeof item === 'object' && item !== null && !Array.isArray(item)) {\n newobj = {};\n } else if (Array.isArray(item)) {\n newobj = [];\n } else {\n throw new TypeError(`Invalid type: ${ typeof item }`);\n }\n\n each(item, (childItem, key) => {\n\n let result = callback(childItem, key);\n\n if (typeof result !== 'undefined') {\n // $FlowFixMe\n newobj[key] = result;\n } else if (typeof childItem === 'object' && childItem !== null) {\n // $FlowFixMe\n newobj[key] = replaceObject(childItem, callback, depth + 1);\n } else {\n // $FlowFixMe\n newobj[key] = childItem;\n }\n });\n\n // $FlowFixMe\n return newobj;\n}\n\nexport function safeInterval(method : Function, time : number) : { cancel : () => void } {\n let timeout;\n\n function runInterval() {\n timeout = setTimeout(runInterval, time);\n method.call();\n }\n\n timeout = setTimeout(runInterval, time);\n\n return {\n cancel() {\n clearTimeout(timeout);\n }\n };\n}\n\nexport function isRegex(item : mixed) : boolean {\n return Object.prototype.toString.call(item) === '[object RegExp]';\n}\n\n\ntype FunctionProxy = (method : T) => T;\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport let weakMapMemoize : FunctionProxy<*> = (method : (arg : any) => R) : ((...args : Array) => R) => {\n\n let weakmap = new WeakMap();\n\n // eslint-disable-next-line flowtype/no-weak-types\n return function weakmapMemoized(arg : any) : R {\n let result = weakmap.get(arg);\n\n if (typeof result !== 'undefined') {\n return result;\n }\n\n result = method.call(this, arg);\n\n if (typeof result !== 'undefined') {\n weakmap.set(arg, result);\n }\n\n return result;\n };\n};\n\nexport function getWindowType() : string {\n if (isPopup()) {\n return CONSTANTS.WINDOW_TYPES.POPUP;\n }\n if (isIframe()) {\n return CONSTANTS.WINDOW_TYPES.IFRAME;\n }\n return CONSTANTS.WINDOW_TYPES.FULLPAGE;\n}\n\nexport function jsonStringify(obj : T, replacer : ?Function, indent : number | void) : string {\n\n let objectToJSON;\n let arrayToJSON;\n\n try {\n if (JSON.stringify({}) !== '{}') {\n // $FlowFixMe\n objectToJSON = Object.prototype.toJSON;\n // $FlowFixMe\n delete Object.prototype.toJSON;\n }\n\n if (JSON.stringify({}) !== '{}') {\n throw new Error(`Can not correctly serialize JSON objects`);\n }\n\n if (JSON.stringify([]) !== '[]') {\n // $FlowFixMe\n arrayToJSON = Array.prototype.toJSON;\n // $FlowFixMe\n delete Array.prototype.toJSON;\n }\n\n if (JSON.stringify([]) !== '[]') {\n throw new Error(`Can not correctly serialize JSON objects`);\n }\n\n } catch (err) {\n throw new Error(`Can not repair JSON.stringify: ${ err.message }`);\n }\n\n let result = JSON.stringify.call(this, obj, replacer, indent);\n\n try {\n if (objectToJSON) {\n // $FlowFixMe\n Object.prototype.toJSON = objectToJSON; // eslint-disable-line no-extend-native\n }\n\n if (arrayToJSON) {\n // $FlowFixMe\n Array.prototype.toJSON = arrayToJSON; // eslint-disable-line no-extend-native\n }\n\n } catch (err) {\n throw new Error(`Can not repair JSON.stringify: ${ err.message }`);\n }\n\n\n return result;\n}\n\nexport function jsonParse(item : string) : mixed {\n return JSON.parse(item);\n}\n \nexport function needsGlobalMessagingForBrowser() : boolean {\n\n if (getUserAgent(window).match(/MSIE|trident|edge\\/12|edge\\/13/i)) {\n return true;\n }\n \n if (!CONFIG.ALLOW_POSTMESSAGE_POPUP) {\n return true;\n }\n \n return false;\n}\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { matchDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { CONSTANTS } from '../conf';\nimport { global } from '../global';\n\nimport { once, uniqueID, replaceObject, stringifyError, isRegex } from './util';\n\nglobal.methods = global.methods || new WeakMap();\n\nexport let listenForMethods = once(() => {\n global.on(CONSTANTS.POST_MESSAGE_NAMES.METHOD, { origin: CONSTANTS.WILDCARD }, ({ source, origin, data } : { source : CrossDomainWindowType, origin : string, data : Object }) => {\n\n let methods = global.methods.get(source);\n\n if (!methods) {\n throw new Error(`Could not find any methods this window has privileges to call`);\n }\n\n let meth = methods[data.id];\n\n if (!meth) {\n throw new Error(`Could not find method with id: ${ data.id }`);\n }\n\n if (!matchDomain(meth.domain, origin)) {\n throw new Error(`Method domain ${ meth.domain } does not match origin ${ origin }`);\n }\n\n return ZalgoPromise.try(() => {\n return meth.method.apply({ source, origin, data }, data.args);\n\n }).then(result => {\n\n return {\n result,\n id: data.id,\n name: data.name\n };\n });\n });\n});\n\nfunction isSerialized(item : mixed, type : string) : boolean {\n return typeof item === 'object' && item !== null && item.__type__ === type;\n}\n\ntype SerializedMethod = {\n __type__ : string,\n __id__ : string,\n __name__ : string\n};\n\nexport function serializeMethod(destination : CrossDomainWindowType, domain : string | Array, method : Function, name : string) : SerializedMethod {\n\n let id = uniqueID();\n\n let methods = global.methods.get(destination);\n\n if (!methods) {\n methods = {};\n global.methods.set(destination, methods);\n }\n\n methods[id] = { domain, method };\n\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.METHOD,\n __id__: id,\n __name__: name\n };\n}\n\ntype SerializedError = {\n __type__ : string,\n __message__ : string\n};\n\nfunction serializeError(err : mixed) : SerializedError {\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.ERROR,\n __message__: stringifyError(err),\n // $FlowFixMe\n __code__: err.code\n };\n}\n\ntype SerializePromise = {\n __type__ : string,\n __then__ : SerializedMethod\n};\n\nfunction serializePromise(destination : CrossDomainWindowType, domain : string | Array, promise : ZalgoPromise, name : string) : SerializePromise {\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.PROMISE,\n __then__: serializeMethod(destination, domain, (resolve, reject) => promise.then(resolve, reject), `${ name }.then`)\n };\n}\n\nfunction serializeZalgoPromise(destination : CrossDomainWindowType, domain : string | Array, promise : ZalgoPromise, name : string) : SerializePromise {\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.ZALGO_PROMISE,\n __then__: serializeMethod(destination, domain, (resolve, reject) => promise.then(resolve, reject), `${ name }.then`)\n };\n}\n\ntype SerializedRegex = {\n __type__ : string,\n __source__ : string\n};\n\nfunction serializeRegex(regex : RegExp) : SerializedRegex {\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.REGEX,\n __source__: regex.source\n };\n}\n\nexport function serializeMethods(destination : CrossDomainWindowType, domain : string | Array, obj : Object) : Object {\n\n return replaceObject({ obj }, (item, key) => {\n if (typeof item === 'function') {\n return serializeMethod(destination, domain, item, key.toString());\n }\n\n if (item instanceof Error) {\n return serializeError(item);\n }\n\n if (window.Promise && item instanceof window.Promise) {\n return serializePromise(destination, domain, item, key.toString());\n }\n\n if (ZalgoPromise.isPromise(item)) {\n // $FlowFixMe\n return serializeZalgoPromise(destination, domain, item, key.toString());\n }\n\n if (isRegex(item)) {\n // $FlowFixMe\n return serializeRegex(item);\n }\n }).obj;\n}\n\nexport function deserializeMethod(source : CrossDomainWindowType, origin : string, obj : Object) : Function {\n\n function wrapper() : ZalgoPromise {\n let args = Array.prototype.slice.call(arguments);\n return global.send(source, CONSTANTS.POST_MESSAGE_NAMES.METHOD, {\n id: obj.__id__,\n name: obj.__name__,\n args\n\n }, { domain: origin, timeout: -1 }).then(({ data }) => {\n return data.result;\n }, err => {\n throw err;\n });\n }\n\n wrapper.__name__ = obj.__name__;\n wrapper.__xdomain__ = true;\n\n wrapper.source = source;\n wrapper.origin = origin;\n\n return wrapper;\n}\n\nexport function deserializeError(source : CrossDomainWindowType, origin : string, obj : Object) : Error {\n let err = new Error(obj.__message__);\n if (obj.__code__) {\n // $FlowFixMe\n err.code = obj.__code__;\n }\n return err;\n}\n\nexport function deserializeZalgoPromise(source : CrossDomainWindowType, origin : string, prom : Object) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => deserializeMethod(source, origin, prom.__then__)(resolve, reject));\n}\n\nexport function deserializePromise(source : CrossDomainWindowType, origin : string, prom : Object) : ZalgoPromise {\n if (!window.Promise) {\n return deserializeZalgoPromise(source, origin, prom);\n }\n\n return new window.Promise((resolve, reject) => deserializeMethod(source, origin, prom.__then__)(resolve, reject));\n}\n\nexport function deserializeRegex(source : CrossDomainWindowType, origin : string, item : Object) : RegExp {\n // eslint-disable-next-line security/detect-non-literal-regexp\n return new RegExp(item.__source__);\n}\n\nexport function deserializeMethods(source : CrossDomainWindowType, origin : string, obj : Object) : Object {\n\n return replaceObject({ obj }, (item) => {\n if (typeof item !== 'object' || item === null) {\n return;\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.METHOD)) {\n return deserializeMethod(source, origin, item);\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.ERROR)) {\n return deserializeError(source, origin, item);\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.PROMISE)) {\n return deserializePromise(source, origin, item);\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.ZALGO_PROMISE)) {\n return deserializeZalgoPromise(source, origin, item);\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.REGEX)) {\n return deserializeRegex(source, origin, item);\n }\n\n }).obj;\n}\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { getAncestor, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { CONSTANTS } from '../conf';\nimport { global } from '../global';\n\nimport { noop } from './util';\n\nglobal.readyPromises = global.readyPromises || new WeakMap();\n\nexport function onHello(handler : ({ source? : CrossDomainWindowType, origin? : string }) => void) {\n global.on(CONSTANTS.POST_MESSAGE_NAMES.HELLO, { domain: CONSTANTS.WILDCARD }, ({ source, origin }) => {\n return handler({ source, origin });\n });\n}\n\nexport function sayHello(win : CrossDomainWindowType) : ZalgoPromise<{ origin : string }> {\n return global.send(win, CONSTANTS.POST_MESSAGE_NAMES.HELLO, {}, { domain: CONSTANTS.WILDCARD, timeout: -1 })\n .then(({ origin }) => {\n return { origin };\n });\n}\n\nexport function initOnReady() {\n\n onHello(({ source, origin }) => {\n let promise = global.readyPromises.get(source) || new ZalgoPromise();\n promise.resolve({ origin });\n global.readyPromises.set(source, promise);\n });\n\n let parent = getAncestor();\n if (parent) {\n sayHello(parent).catch(noop);\n }\n}\n\nexport function onChildWindowReady(win : mixed, timeout : number = 5000, name : string = 'Window') : ZalgoPromise<{ origin : string }> {\n\n let promise = global.readyPromises.get(win);\n\n if (promise) {\n return promise;\n }\n\n promise = new ZalgoPromise();\n global.readyPromises.set(win, promise);\n\n if (timeout !== -1) {\n setTimeout(() => promise.reject(new Error(`${ name } did not load after ${ timeout }ms`)), timeout);\n }\n\n return promise;\n}\n","/* @flow */\n\nexport * from './util';\nexport * from './serialize';\nexport * from './ready';\n","/* @flow */\n\nimport { on, send, bridge } from 'post-robot/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport type { CrossDomainWindowType, SameDomainWindowType } from 'cross-domain-utils/src';\n\nimport { isPayPalDomain, noop, getScriptVersion, extendUrl } from '../lib';\nimport { config } from '../config';\n\nfunction match(str : string, pattern : RegExp) : ?string {\n const regmatch : ?$ReadOnlyArray = str.match(pattern);\n if (regmatch) {\n return regmatch[1];\n }\n}\n\nlet onAuthorize : ?Function;\n\n// Post-Bridge\n\nif (isPayPalDomain()) {\n on('onLegacyPaymentAuthorize', { window: window.parent }, ({ data } : { data : { method : Function } }) => {\n onAuthorize = data.method;\n });\n}\n\n// Button / Merchant\n\nexport function onLegacyPaymentAuthorize(method : Function) : ZalgoPromise {\n onAuthorize = method;\n\n return ZalgoPromise.try(() => {\n if (bridge && !isPayPalDomain()) {\n return bridge.openBridge(extendUrl(config.postBridgeUrl, { version: getScriptVersion() }), config.postBridgeDomain).then((postBridge : CrossDomainWindowType) => {\n return send(postBridge, 'onLegacyPaymentAuthorize', { method }, { domain: config.paypalDomain })\n .then(noop);\n });\n }\n });\n}\n\nwindow.onLegacyPaymentAuthorize = onLegacyPaymentAuthorize;\n\n// Post-Bridge / Button\n\nwindow.watchForLegacyFallback = (win : SameDomainWindowType) => {\n const interval = setInterval(() => {\n try {\n const isLegacy = (win.document.body.innerHTML.indexOf('merchantpaymentweb') !== -1 ||\n win.document.body.innerHTML.indexOf('wapapp') !== -1);\n\n if (!isLegacy || win.ppxoWatching || win.closed) {\n return;\n }\n\n win.ppxoWatching = true;\n\n const XMLHttpRequestsend = win.XMLHttpRequest.prototype.send;\n\n win.XMLHttpRequest.prototype.send = function overrideXMLHttpRequestSend() : void {\n\n if (this._patched) {\n return XMLHttpRequestsend.apply(this, arguments);\n }\n\n this._patched = true;\n\n const self = this;\n let onload = this.onload;\n\n function listener() : void {\n\n if (self.readyState === self.DONE && self.status === 200 && self.responseText) {\n\n try {\n const response = JSON.parse(self.responseText.replace('while (1);', ''));\n\n if (response.type === 'redirect' && response.url && onAuthorize) {\n\n const url = response.url;\n\n clearInterval(interval);\n win.close();\n\n onAuthorize({\n returnUrl: url,\n paymentToken: match(url, /token=((EC-)?[A-Z0-9]+)/),\n billingToken: match(url, /ba_token=((BA-)?[A-Z0-9]+)/),\n payerID: match(url, /PayerID=([A-Z0-9]+)/),\n paymentID: match(url, /paymentId=((PAY-)?[A-Z0-9]+)/)\n });\n\n onAuthorize = null;\n\n if (win.PAYPAL && win.PAYPAL.Checkout && win.PAYPAL.Checkout.XhrResponse && win.PAYPAL.Checkout.XhrResponse.RESPONSE_TYPES) {\n Object.defineProperty(win.PAYPAL.Checkout.XhrResponse.RESPONSE_TYPES, 'Redirect', {\n value: Math.random().toString()\n });\n }\n\n if (win.mob && win.mob.Xhr && win.mob.Xhr.prototype._xhrOnReady) {\n win.mob.Xhr.prototype._xhrOnReady = noop;\n }\n }\n\n } catch (err) {\n return;\n }\n }\n\n if (onload) {\n return onload.apply(this, arguments);\n }\n }\n\n if (this.onload !== listener) {\n\n try {\n\n delete this.onload;\n this.addEventListener('load', listener);\n\n // $FlowFixMe\n Object.defineProperty(this, 'onload', {\n get() : Function {\n return listener;\n },\n set(handler) {\n onload = handler;\n }\n });\n\n } catch (err) {\n\n // pass\n }\n\n }\n\n return XMLHttpRequestsend.apply(this, arguments);\n };\n\n } catch (err) {\n // pass\n }\n }, 100);\n};\n\n\nwindow.onLegacyFallback = window.watchForLegacyFallback;\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { info, track, warn, flush as flushLogs, immediateFlush } from 'beaver-logger/client';\nimport { create, CONSTANTS, PopupOpenError } from 'zoid/src';\nimport { type Component } from 'zoid/src/component/component';\nimport type { CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { base64encode } from 'belter/src';\n\nimport { isDevice, request, getQueryParam, redirect as redir, patchMethod,\n setLogLevel, getSessionID, getBrowserLocale, supportsPopups, memoize,\n getDomainSetting, getScriptVersion, getButtonSessionID, isPayPalDomain,\n isEligible, getCurrentScriptUrl } from '../lib';\nimport { config } from '../config';\nimport { ENV, FPTI, PAYMENT_TYPE, CHECKOUT_OVERLAY_COLOR, ATTRIBUTE } from '../constants';\nimport { onLegacyPaymentAuthorize } from '../compat';\nimport { determineParameterFromToken, determineUrl } from '../integrations';\n\nimport { containerTemplate, componentTemplate } from './template';\n\nfunction addHeader(name, value) : void {\n\n if (!window.$Api) {\n return;\n }\n\n if (window.$Api.addHeader) {\n return window.$Api.addHeader(name, value);\n }\n}\n\n// eslint-disable-next-line flowtype/require-exact-type\ntype CheckoutPropsType = {\n payment? : () => ZalgoPromise,\n onAuthorize : ({ returnUrl : string }, { redirect : (?CrossDomainWindowType, ?string) => ZalgoPromise }) => ?ZalgoPromise,\n onShippingChange? : (address : {}) => ?ZalgoPromise,\n onCancel? : ({ cancelUrl : string }, { redirect : (?CrossDomainWindowType, ?string) => ZalgoPromise }) => ?ZalgoPromise,\n fallback? : (string) => ?ZalgoPromise,\n fundingSource? : string,\n logLevel? : string,\n env? : string,\n stage? : string,\n stageUrl? : string,\n localhostUrl? : string,\n checkoutUri? : string,\n authCode? : string\n};\n\nexport const Checkout : Component = create({\n\n tag: 'paypal-checkout',\n name: 'ppcheckout',\n\n scrolling: true,\n\n buildUrl(props) : ZalgoPromise {\n const env = props.env || config.env;\n\n if (!props.payment) {\n throw new Error(`Can not build url without payment prop`);\n }\n\n return props.payment().then(token => {\n if (!token) {\n throw new Error(`Expected payment id or token to be passed, got ${ token }`);\n }\n\n return determineUrl(env, props.fundingSource, token);\n });\n },\n\n get unsafeRenderTo() : boolean {\n return config.env === ENV.LOCAL;\n },\n\n get domain() : Object {\n return {\n ...config.paypalDomains\n };\n },\n\n get bridgeUrl() : Object {\n return config.metaFrameUrls;\n },\n\n get bridgeDomain() : Object {\n return config.paypalDomains;\n },\n\n contexts: {\n iframe: (!supportsPopups()),\n popup: true\n },\n\n get version() : string {\n return getScriptVersion();\n },\n\n validate() {\n if (!isEligible()) {\n warn('checkout_render_ineligible');\n }\n },\n\n prerenderTemplate: componentTemplate,\n containerTemplate,\n\n props: {\n\n sessionID: {\n type: 'string',\n required: false,\n def() : string {\n return getSessionID();\n },\n queryParam: true\n },\n\n buttonSessionID: {\n type: 'string',\n required: false,\n def() : ?string {\n return getButtonSessionID();\n },\n queryParam: true\n },\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n },\n\n meta: {\n type: 'object',\n required: false,\n def() : Object {\n const meta = window.xprops && window.xprops.meta;\n return meta || {};\n }\n },\n\n stage: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.STAGE || env === ENV.LOCAL) {\n return config.stage;\n }\n }\n },\n\n stageUrl: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.STAGE || env === ENV.LOCAL) {\n return config.stageUrl;\n }\n }\n },\n\n authCode: {\n type: 'string',\n required: false,\n def() : string {\n return config.authCode;\n },\n queryParam: 'code'\n },\n\n localhostUrl: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.LOCAL) {\n return config.localhostUrl;\n }\n }\n },\n\n checkoutUri: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : ?string {\n return config.checkoutUri;\n }\n },\n\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n allowDelegate: true,\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n }\n },\n\n\n client: {\n type: 'object',\n required: false,\n def() : { [string] : string } {\n return {};\n },\n sendToChild: false,\n\n validate(client, props) {\n const env = props.env || config.env;\n\n if (!client[env]) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (client[env].match(/^(.)\\1+$/)) {\n throw new Error(`Invalid client ID: ${ client[env] }`);\n }\n }\n },\n\n payment: {\n type: 'function',\n required: false,\n memoize: true,\n promisify: true,\n queryParam(payment) : ZalgoPromise {\n return payment().then(token => {\n return determineParameterFromToken(token);\n });\n },\n queryValue(payment) : ZalgoPromise {\n return payment();\n },\n childDecorate(payment) : () => ZalgoPromise {\n const token = getQueryParam('token');\n\n return token\n ? memoize(() => ZalgoPromise.resolve(token))\n : payment;\n },\n validate(payment, props) {\n if (!payment && !props.url) {\n throw new Error(`Expected either props.payment or props.url to be passed`);\n }\n },\n alias: 'billingAgreement'\n },\n\n style: {\n type: 'object',\n required: false,\n allowDelegate: true,\n def() : Object {\n return {};\n },\n validate(style) {\n if (style.overlayColor && style.overlayColor !== CHECKOUT_OVERLAY_COLOR.BLACK && style.overlayColor !== CHECKOUT_OVERLAY_COLOR.WHITE) {\n throw new Error(`Invalid background color: ${ style.overlayColor }`);\n }\n }\n },\n\n commit: {\n type: 'boolean',\n required: false\n },\n\n experience: {\n type: 'object',\n required: false,\n def() : Object {\n return {};\n }\n },\n\n fundingSource: {\n type: 'string',\n required: false,\n queryParam: true\n },\n\n fundingOffered: {\n type: 'object',\n required: false,\n queryParam: true,\n def() : Object {\n const elements = Array.prototype.slice.call(document.querySelectorAll(`[${ ATTRIBUTE.FUNDING_SOURCE }]`));\n\n const fundingSources = elements.map(el => {\n return el.getAttribute(ATTRIBUTE.FUNDING_SOURCE);\n });\n\n // $FlowFixMe\n return fundingSources;\n },\n queryValue: (val) => {\n return val.join(',');\n }\n },\n\n onAuthorize: {\n type: 'function',\n required: true,\n once: true,\n \n decorate(original) : Function | void {\n if (original) {\n return function decorateOnAuthorize(data, actions = {}) : ZalgoPromise {\n\n if (data && !data.intent) {\n warn(`checkout_authorize_no_intent`, { paymentID: data.paymentID, token: data.paymentToken });\n }\n\n const close = () => {\n return ZalgoPromise.try(() => {\n if (actions.close) {\n return actions.close();\n }\n }).then(() => {\n return this.closeComponent();\n });\n };\n\n const redirect = (win, url) => {\n return ZalgoPromise.all([\n redir(win || window.top, url || data.returnUrl),\n close()\n ]);\n };\n\n return ZalgoPromise.try(() => {\n\n try {\n const isButton = window.location.href.indexOf('/smart/button') !== -1;\n const isGuest = this.window.location.href.indexOf('/webapps/xoonboarding') !== -1;\n\n if (isButton && isGuest) {\n return request({\n win: this.window,\n method: 'get',\n url: '/webapps/xoonboarding/api/auth'\n }).then(result => {\n if (result && result.data && result.data.access_token) {\n addHeader('x-paypal-internal-euat', result.data.access_token);\n }\n }).catch(() => {\n // pass\n });\n }\n\n } catch (err) {\n // pass\n }\n\n }).then(() => {\n return original.call(this, data, { ...actions, close, redirect });\n }).catch(err => {\n return this.error(err);\n }).finally(() => {\n return this.close();\n });\n };\n }\n }\n },\n\n onShippingChange: {\n type: 'function',\n required: false\n },\n\n onAuth: {\n type: 'function',\n required: false,\n sameDomain: true,\n childDecorate(original : Function) : ?Function {\n if (original) {\n return function wrapOnAuth(data : string | Object) : Object {\n if (typeof data === 'string') {\n data = { accessToken: data };\n }\n return original(data);\n };\n }\n }\n },\n\n accessToken: {\n type: 'function',\n required: false\n },\n\n onCancel: {\n type: 'function',\n required: false,\n once: true,\n noop: true,\n\n decorate(original) : Function {\n return function decorateOnCancel(data, actions = {}) : ZalgoPromise {\n\n const close = () => {\n return ZalgoPromise.try(() => {\n if (actions.close) {\n return actions.close();\n }\n }).then(() => {\n return this.closeComponent();\n });\n };\n\n const redirect = (win, url) => {\n return ZalgoPromise.all([\n redir(win || window.top, url || data.cancelUrl),\n close()\n ]);\n };\n\n return ZalgoPromise.try(() => {\n return original.call(this, data, { ...actions, close, redirect });\n }).finally(() => {\n this.close();\n });\n };\n }\n },\n\n init: {\n type: 'function',\n required: false,\n once: true,\n noop: true,\n\n decorate(original) : Function {\n return function decorateInit(data) : void {\n info('checkout_init');\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CHECKOUT_INIT,\n [ FPTI.KEY.CONTEXT_TYPE ]: FPTI.CONTEXT_TYPE[PAYMENT_TYPE.EC_TOKEN],\n [ FPTI.KEY.TOKEN ]: data.paymentToken,\n [ FPTI.KEY.SELLER_ID ]: data.merchantID,\n [ FPTI.KEY.CONTEXT_ID ]: data.paymentToken\n });\n\n flushLogs();\n\n this.paymentToken = data.paymentToken;\n this.cancelUrl = data.cancelUrl;\n\n return original.apply(this, arguments);\n };\n }\n },\n\n onClose: {\n type: 'function',\n required: false,\n once: true,\n promisify: true,\n noop: true,\n\n decorate(original) : Function {\n return function decorateOnClose(reason) : ZalgoPromise {\n\n const onClose = original.apply(this, arguments);\n\n const CLOSE_REASONS = CONSTANTS.CLOSE_REASONS;\n\n const shouldCancel =\n this.props.onCancel &&\n [ CLOSE_REASONS.CLOSE_DETECTED, CLOSE_REASONS.USER_CLOSED ].indexOf(reason) !== -1;\n\n if (shouldCancel) {\n info(`close_trigger_cancel`);\n return this.props.onCancel({\n paymentToken: this.paymentToken,\n cancelUrl: this.cancelUrl\n }).then(() => onClose);\n }\n\n return onClose;\n };\n }\n },\n\n onError: {\n type: 'function',\n required: false,\n promisify: true,\n noop: true,\n once: true\n },\n\n fallback: {\n type: 'function',\n required: false,\n once: true,\n\n def() : Function {\n return function defaultFallback(url) : ZalgoPromise {\n warn('fallback', { url });\n\n if (getDomainSetting('allow_full_page_fallback')) {\n window.top.location = url;\n return this.close();\n }\n\n return onLegacyPaymentAuthorize(this.props.onAuthorize);\n };\n }\n },\n\n logLevel: {\n type: 'string',\n required: false,\n get value() : string {\n return config.logLevel;\n }\n },\n \n test: {\n type: 'object',\n required: false,\n def() : Object {\n return window.__test__ || { action: 'checkout' };\n }\n },\n\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n }\n },\n\n get dimensions() : { width : string, height : string } {\n\n if (isDevice()) {\n return {\n width: '100%',\n height: '590px'\n };\n }\n\n return {\n width: '500px',\n height: '590px'\n };\n }\n});\n\nif (Checkout.isChild() && Checkout.xchild && Checkout.xprops) {\n\n if (Checkout.xprops && Checkout.xprops.logLevel) {\n setLogLevel(Checkout.xprops.logLevel);\n }\n\n Checkout.xchild.onProps(xprops => {\n patchMethod(xprops, 'onAuthorize', ({ callOriginal, args: [ data ] }) => {\n if (data && !data.intent) {\n warn(`hermes_authorize_no_intent`, { paymentID: data.paymentID, token: data.paymentToken });\n\n try {\n const intent = window.injector.get('$CheckoutCartModel').instance(data.paymentToken).payment_action;\n warn(`hermes_intent`, { paymentID: data.paymentID, token: data.paymentToken, intent });\n } catch (err) {\n // pass\n }\n\n immediateFlush();\n }\n return callOriginal();\n });\n });\n}\n\npatchMethod(Checkout, 'init', ({ args: [ props, _context ], original, context }) => {\n return original.call(context, props, _context, 'body');\n});\n\npatchMethod(Checkout, 'render', ({ args: [ props ], original, context }) => {\n return original.call(context, props, 'body');\n});\n\npatchMethod(Checkout, 'renderTo', ({ args: [ win, props ], original, context }) => {\n\n const payment = props.payment();\n props.payment = () => payment;\n\n return original.call(context, win, props, 'body').catch(err => {\n if (err instanceof PopupOpenError && isPayPalDomain()) {\n Checkout.contexts.iframe = true;\n return original.call(context, win, props, 'body');\n }\n throw err;\n });\n});\n\n","/* @flow */\n\nexport * from './component';\n","/* @flow */\n\nexport function getUserAgent() : string {\n return window.navigator.mockUserAgent || window.navigator.userAgent;\n}\n\nexport function isDevice(userAgent? : string = getUserAgent()) : boolean {\n if (userAgent.match(/Android|webOS|iPhone|iPad|iPod|bada|Symbian|Palm|CriOS|BlackBerry|IEMobile|WindowsMobile|Opera Mini/i)) {\n return true;\n }\n\n return false;\n}\n\nexport function isWebView() : boolean {\n let userAgent = getUserAgent();\n return (/(iPhone|iPod|iPad|Macintosh).*AppleWebKit(?!.*Safari)/i).test(userAgent) ||\n (/\\bwv\\b/).test(userAgent) ||\n (/Android.*Version\\/(\\d)\\.(\\d)/i).test(userAgent);\n}\n\nexport function isStandAlone() : boolean {\n return (window.navigator.standalone === true || window.matchMedia('(display-mode: standalone)').matches);\n}\n\nexport function isFacebookWebView(ua? : string = getUserAgent()) : boolean {\n return (ua.indexOf('FBAN') !== -1) || (ua.indexOf('FBAV') !== -1);\n}\n\nexport function isFirefoxIOS(ua? : string = getUserAgent()) : boolean {\n return (/FxiOS/i).test(ua);\n}\n\nexport function isEdgeIOS(ua? : string = getUserAgent()) : boolean {\n return (/EdgiOS/i).test(ua);\n}\n\nexport function isOperaMini(ua? : string = getUserAgent()) : boolean {\n return ua.indexOf('Opera Mini') > -1;\n}\n\nexport function isAndroid(ua? : string = getUserAgent()) : boolean {\n return (/Android/).test(ua);\n}\n\nexport function isIos(ua? : string = getUserAgent()) : boolean {\n return (/iPhone|iPod|iPad/).test(ua);\n}\n\nexport function isGoogleSearchApp(ua? : string = getUserAgent()) : boolean {\n return (/\\bGSA\\b/).test(ua);\n}\n\nexport function isQQBrowser(ua? : string = getUserAgent()) : boolean {\n return (/QQBrowser/).test(ua);\n}\n\nexport function isIosWebview(ua? : string = getUserAgent()) : boolean {\n if (isIos(ua)) {\n if (isGoogleSearchApp(ua)) {\n return true;\n }\n return (/.+AppleWebKit(?!.*Safari)/).test(ua);\n }\n return false;\n}\n\nexport function isAndroidWebview(ua? : string = getUserAgent()) : boolean {\n if (isAndroid(ua)) {\n return (/Version\\/[\\d.]+/).test(ua) && !isOperaMini(ua);\n }\n return false;\n}\n\nexport function isIE() : boolean {\n\n if (window.document.documentMode) {\n return true;\n }\n\n return Boolean(\n window.navigator &&\n window.navigator.userAgent &&\n (/Edge|MSIE|rv:11/i).test(window.navigator.userAgent)\n );\n}\n\nexport function isIECompHeader() : boolean {\n let mHttp = window.document.querySelector('meta[http-equiv=\"X-UA-Compatible\"]');\n let mContent = window.document.querySelector('meta[content=\"IE=edge\"]');\n if (mHttp && mContent) {\n return true;\n }\n return false;\n}\n\nexport function isElectron() : boolean {\n if (typeof process !== 'undefined' && process.versions && process.versions.electron) {\n return true;\n }\n return false;\n}\n\nexport function isIEIntranet() : boolean {\n\n // This status check only works for older versions of IE with document.documentMode set\n\n if (window.document.documentMode) {\n try {\n let status = window.status;\n\n window.status = 'testIntranetMode';\n\n if (window.status === 'testIntranetMode') {\n window.status = status;\n\n return true;\n }\n\n return false;\n\n } catch (err) {\n\n return false;\n }\n }\n\n return false;\n}\n\nexport function isMacOsCna() : boolean {\n let userAgent = getUserAgent();\n return (/Macintosh.*AppleWebKit(?!.*Safari)/i).test(userAgent);\n}\n\nexport function supportsPopups(ua? : string = getUserAgent()) : boolean {\n return !(isIosWebview(ua) || isAndroidWebview(ua) || isOperaMini(ua) ||\n isFirefoxIOS(ua) || isEdgeIOS(ua) || isFacebookWebView(ua) || isQQBrowser(ua) || isElectron() || isMacOsCna() || isStandAlone());\n}\n\nexport function isChrome(ua? : string = getUserAgent()) : boolean {\n return (/Chrome|Chromium|CriOS/).test(ua);\n}\n\nexport function isSafari(ua? : string = getUserAgent()) : boolean {\n return (/Safari/).test(ua) && !isChrome(ua);\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\n\nimport type { CancelableType } from './types';\n\nexport function getFunctionName (fn : T) : string {\n return fn.name || fn.__name__ || fn.displayName || 'anonymous';\n}\n\nexport function setFunctionName (fn : T, name : string) : T {\n try {\n delete fn.name;\n fn.name = name;\n } catch (err) {\n // pass\n }\n\n fn.__name__ = fn.displayName = name;\n return fn;\n}\n\nexport function base64encode(str : string) : string {\n if (typeof btoa === 'function') {\n return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, (m, p1) => {\n return String.fromCharCode(parseInt(p1, 16));\n }));\n }\n\n if (typeof Buffer !== 'undefined') {\n return Buffer.from(str, 'utf8').toString('base64');\n }\n\n throw new Error(`Can not find window.btoa or Buffer`);\n}\n\nexport function base64decode(str : string) : string {\n if (typeof atob === 'function') {\n return decodeURIComponent(Array.prototype.map.call(atob(str), c => {\n // eslint-disable-next-line prefer-template\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\n }).join(''));\n }\n\n if (typeof Buffer !== 'undefined') {\n return Buffer.from(str, 'base64').toString('utf8');\n }\n\n throw new Error(`Can not find window.atob or Buffer`);\n}\n\nexport function uniqueID() : string {\n\n let chars = '0123456789abcdef';\n\n let randomID = 'xxxxxxxxxx'.replace(/./g, () => {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n });\n\n let timeID = base64encode(\n new Date().toISOString().slice(11, 19).replace('T', '.')\n ).replace(/[^a-zA-Z0-9]/g, '').toLowerCase();\n\n return `${ randomID }_${ timeID }`;\n}\n\nexport function getGlobal() : Object {\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n if (typeof __GLOBAL__ !== 'undefined') {\n return __GLOBAL__;\n }\n throw new Error(`No global found`);\n}\n\nlet objectIDs;\n\nexport function getObjectID(obj : Object) : string {\n\n objectIDs = objectIDs || new WeakMap();\n\n if (obj === null || obj === undefined || (typeof obj !== 'object' && typeof obj !== 'function')) {\n throw new Error(`Invalid object`);\n }\n\n let uid = objectIDs.get(obj);\n\n if (!uid) {\n uid = `${ typeof obj }:${ uniqueID() }`;\n objectIDs.set(obj, uid);\n }\n\n return uid;\n}\n\nfunction serializeArgs(args : Array) : string {\n try {\n return JSON.stringify(Array.prototype.slice.call(args), (subkey, val) => {\n if (typeof val === 'function') {\n return `memoize[${ getObjectID(val) }]`;\n }\n return val;\n });\n } catch (err) {\n throw new Error(`Arguments not serializable -- can not be used to memoize`);\n }\n}\nexport function memoize) => R, X : { (...args : Array) : R, displayName : string, reset : () => void }>(method : F, options : { time? : number, thisNamespace? : boolean } = {}) : X {\n let cacheMap = new WeakMap();\n\n // $FlowFixMe\n let memoizedFunction : X = function memoizedFunction(...args : Array) : R {\n let cache = cacheMap.getOrSet(options.thisNamespace ? this : method, () => ({}));\n\n let key : string = serializeArgs(args);\n\n let cacheTime = options.time;\n if (cache[key] && cacheTime && (Date.now() - cache[key].time) < cacheTime) {\n delete cache[key];\n }\n\n if (cache[key]) {\n return cache[key].value;\n }\n\n let time = Date.now();\n let value = method.apply(this, arguments);\n\n cache[key] = { time, value };\n\n return cache[key].value;\n };\n\n memoizedFunction.reset = () => {\n cacheMap.delete(options.thisNamespace ? this : method);\n };\n\n return setFunctionName(memoizedFunction, `${ getFunctionName(method) }::memoized`);\n}\n\nexport function promiseIdentity(item : ZalgoPromise | T) : ZalgoPromise {\n // $FlowFixMe\n return ZalgoPromise.resolve(item);\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport function memoizePromise(method : (...args : Array) => ZalgoPromise) : ((...args : Array) => ZalgoPromise) {\n let cache = {};\n\n // eslint-disable-next-line flowtype/no-weak-types\n function memoizedPromiseFunction(...args : Array) : ZalgoPromise {\n let key : string = serializeArgs(args);\n\n if (cache.hasOwnProperty(key)) {\n return cache[key];\n }\n\n cache[key] = ZalgoPromise.try(() => method.apply(this, arguments))\n .finally(() => {\n delete cache[key];\n });\n\n return cache[key];\n }\n\n memoizedPromiseFunction.reset = () => {\n cache = {};\n };\n\n return setFunctionName(memoizedPromiseFunction, `${ getFunctionName(method) }::promiseMemoized`);\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport function promisify(method : (...args : Array) => R, options : { name? : string } = {}) : ((...args : Array) => ZalgoPromise) {\n function promisifiedFunction() : ZalgoPromise {\n return ZalgoPromise.try(method, this, arguments);\n }\n\n if (options.name) {\n promisifiedFunction.displayName = `${ options.name }:promisified`;\n }\n\n return setFunctionName(promisifiedFunction, `${ getFunctionName(method) }::promisified`);\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport function inlineMemoize(method : (...args : Array) => R, logic : (...args : Array) => R, args : Array = []) : R {\n // $FlowFixMe\n let cache = method.__inline_memoize_cache__ = method.__inline_memoize_cache__ || {};\n let key = serializeArgs(args);\n\n if (cache.hasOwnProperty(key)) {\n return cache[key];\n }\n \n let result = cache[key] = logic(...args);\n\n return result;\n}\n\n// eslint-disable-next-line no-unused-vars\nexport function noop(...args : Array) {\n // pass\n}\n\nexport function once(method : Function) : Function {\n let called = false;\n\n const onceFunction = function() : mixed {\n if (!called) {\n called = true;\n return method.apply(this, arguments);\n }\n };\n\n return setFunctionName(onceFunction, `${ getFunctionName(method) }::once`);\n}\n\nexport function hashStr(str : string) : number {\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n hash += str[i].charCodeAt(0) * Math.pow((i % 10) + 1, 5);\n }\n return Math.floor(Math.pow(Math.sqrt(hash), 5));\n}\n\nexport function strHashStr(str : string) : string {\n let hash = '';\n\n for (let i = 0; i < str.length; i++) {\n let total = (str[i].charCodeAt(0) * i);\n\n if (str[i + 1]) {\n total += (str[i + 1].charCodeAt(0) * (i - 1));\n }\n\n hash += String.fromCharCode(97 + (Math.abs(total) % 26));\n }\n\n return hash;\n}\n\nexport function match(str : string, pattern : RegExp) : ?string {\n let regmatch = str.match(pattern);\n if (regmatch) {\n return regmatch[1];\n }\n}\n\nexport function awaitKey(obj : Object, key : string) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n\n let value = obj[key];\n\n if (value) {\n return resolve(value);\n }\n\n delete obj[key];\n\n Object.defineProperty(obj, key, {\n\n configurable: true,\n\n set(item) {\n value = item;\n\n if (value) {\n resolve(value);\n }\n },\n\n get() : mixed {\n return value;\n }\n });\n });\n}\n\nexport function stringifyError(err : mixed, level : number = 1) : string {\n\n if (level >= 3) {\n return 'stringifyError stack overflow';\n }\n\n try {\n if (!err) {\n return ``;\n }\n\n if (typeof err === 'string') {\n return err;\n }\n\n if (err instanceof Error) {\n let stack = err && err.stack;\n let message = err && err.message;\n\n if (stack && message) {\n if (stack.indexOf(message) !== -1) {\n return stack;\n } else {\n return `${ message }\\n${ stack }`;\n }\n } else if (stack) {\n return stack;\n } else if (message) {\n return message;\n }\n }\n\n if (err && err.toString && typeof err.toString === 'function') {\n // $FlowFixMe\n return err.toString();\n }\n\n return Object.prototype.toString.call(err);\n\n } catch (newErr) { // eslint-disable-line unicorn/catch-error-name\n return `Error while stringifying error: ${ stringifyError(newErr, level + 1) }`;\n }\n}\n\nexport function stringifyErrorMessage(err : mixed) : string {\n\n let defaultMessage = ``;\n\n if (!err) {\n return defaultMessage;\n }\n\n if (err instanceof Error) {\n return err.message || defaultMessage;\n }\n\n if (typeof err.message === 'string') {\n return err.message || defaultMessage;\n }\n\n return defaultMessage;\n}\n\nexport function stringify(item : mixed) : string {\n if (typeof item === 'string') {\n return item;\n }\n\n if (item && item.toString && typeof item.toString === 'function') {\n // $FlowFixMe\n return item.toString();\n }\n\n return Object.prototype.toString.call(item);\n}\n\nexport function domainMatches(hostname : string, domain : string) : boolean {\n hostname = hostname.split('://')[1];\n let index = hostname.indexOf(domain);\n return (index !== -1 && hostname.slice(index) === domain);\n}\n\nexport function patchMethod(obj : Object, name : string, handler : Function) {\n let original = obj[name];\n\n obj[name] = function patchedMethod() : mixed {\n return handler({\n context: this,\n args: Array.prototype.slice.call(arguments),\n original,\n callOriginal: () => original.apply(this, arguments)\n });\n };\n}\n\nexport function extend(obj : T, source : Object) : T {\n if (!source) {\n return obj;\n }\n\n if (Object.assign) {\n return Object.assign(obj, source);\n }\n\n for (let key in source) {\n if (source.hasOwnProperty(key)) {\n obj[key] = source[key];\n }\n }\n\n return obj;\n}\n\nexport function values(obj : { [string] : T }) : Array {\n let result = [];\n for (let key in obj) {\n if (obj.hasOwnProperty(key)) {\n result.push(obj[key]);\n }\n }\n return result;\n}\n\nexport function perc(pixels : number, percentage : number) : number {\n return Math.round((pixels * percentage) / 100);\n}\n\nexport function min(...args : Array) : number {\n return Math.min(...args);\n}\n\nexport function max(...args : Array) : number {\n return Math.max(...args);\n}\n\nexport function regexMap(str : string, regexp : RegExp, handler : () => T) : Array {\n let results = [];\n\n // $FlowFixMe\n str.replace(regexp, function regexMapMatcher(item) {\n results.push(handler ? handler.apply(null, arguments) : item);\n });\n\n // $FlowFixMe\n return results;\n}\n\nexport function svgToBase64(svg : string) : string {\n return `data:image/svg+xml;base64,${ base64encode(svg) }`;\n}\n\nexport function objFilter(obj : { [string] : T }, filter? : (T, ?string) => mixed = Boolean) : { [string] : R } {\n let result = {};\n\n for (let key in obj) {\n if (!obj.hasOwnProperty(key) || !filter(obj[key], key)) {\n continue;\n }\n\n result[key] = obj[key];\n }\n\n return result;\n}\n\nexport function identity (item : T) : T {\n return item;\n}\n\nexport function regexTokenize(text : string, regexp : RegExp) : Array {\n let result = [];\n text.replace(regexp, token => {\n result.push(token);\n return '';\n });\n return result;\n}\n\nexport function promiseDebounce(method : () => ZalgoPromise | T, delay : number = 50) : () => ZalgoPromise {\n\n let promise;\n let timeout;\n\n const promiseDebounced = function() : ZalgoPromise {\n if (timeout) {\n clearTimeout(timeout);\n }\n\n let localPromise = promise = promise || new ZalgoPromise();\n\n timeout = setTimeout(() => {\n promise = null;\n timeout = null;\n\n ZalgoPromise.try(method).then(\n result => { localPromise.resolve(result); },\n err => { localPromise.reject(err); }\n );\n }, delay);\n\n return localPromise;\n };\n\n return setFunctionName(promiseDebounced, `${ getFunctionName(method) }::promiseDebounced`);\n}\n\nexport function safeInterval(method : Function, time : number) : { cancel : () => void } {\n\n let timeout;\n\n function loop() {\n timeout = setTimeout(() => {\n method();\n loop();\n }, time);\n }\n\n loop();\n\n return {\n cancel() {\n clearTimeout(timeout);\n }\n };\n}\n\nexport function isInteger(str : string) : boolean {\n return Boolean(str.match(/^[0-9]+$/));\n}\n\nexport function isFloat(str : string) : boolean {\n return Boolean(str.match(/^[0-9]+\\.[0-9]+$/));\n}\n\nexport function serializePrimitive(value : string | number | boolean) : string {\n return value.toString();\n}\n\nexport function deserializePrimitive(value : string) : string | number | boolean {\n if (value === 'true') {\n return true;\n } else if (value === 'false') {\n return false;\n } else if (isInteger(value)) {\n return parseInt(value, 10);\n } else if (isFloat(value)) {\n return parseFloat(value);\n } else {\n return value;\n }\n}\n\nexport function dotify(obj : Object, prefix : string = '', newobj : Object = {}) : { [string] : string } {\n prefix = prefix ? `${ prefix }.` : prefix;\n for (let key in obj) {\n if (!obj.hasOwnProperty(key) || obj[key] === undefined || obj[key] === null || typeof obj[key] === 'function') {\n continue;\n } else if (obj[key] && Array.isArray(obj[key]) && obj[key].length && obj[key].every(val => typeof val !== 'object')) {\n newobj[`${ prefix }${ key }[]`] = obj[key].join(',');\n } else if (obj[key] && typeof obj[key] === 'object') {\n newobj = dotify(obj[key], `${ prefix }${ key }`, newobj);\n } else {\n newobj[`${ prefix }${ key }`] = serializePrimitive(obj[key]);\n }\n }\n return newobj;\n}\n\nexport function undotify(obj : { [string] : string }) : Object {\n \n let result = {};\n\n for (let key in obj) {\n if (!obj.hasOwnProperty(key) || typeof obj[key] !== 'string') {\n continue;\n }\n\n let value = obj[key];\n\n if (key.match(/^.+\\[\\]$/)) {\n key = key.slice(0, key.length - 2);\n value = value.split(',').map(deserializePrimitive);\n } else {\n value = deserializePrimitive(value);\n }\n\n let keyResult = result;\n let parts = key.split('.');\n for (let i = 0; i < parts.length; i++) {\n let part = parts[i];\n let isLast = (i + 1 === parts.length);\n let isIndex = !isLast && isInteger(parts[i + 1]);\n\n if (part === 'constructor' || part === 'prototype' || part === '__proto__') {\n throw new Error(`Disallowed key: ${ part }`);\n }\n\n if (isLast) {\n // $FlowFixMe\n keyResult[part] = value;\n } else {\n // $FlowFixMe\n keyResult = keyResult[part] = keyResult[part] || (isIndex ? [] : {});\n }\n }\n }\n\n return result;\n}\n\nexport type EventEmitterType = {\n on : (eventName : string, handler : Function) => CancelableType,\n once : (eventName : string, handler : Function) => CancelableType,\n trigger : (eventName : string, ...args : $ReadOnlyArray) => ZalgoPromise,\n triggerOnce : (eventName : string, ...args : $ReadOnlyArray) => ZalgoPromise\n};\n\nexport function eventEmitter() : EventEmitterType {\n let triggered = {};\n let handlers = {};\n\n return {\n\n on(eventName : string, handler : Function) : CancelableType {\n let handlerList = handlers[eventName] = handlers[eventName] || [];\n\n handlerList.push(handler);\n\n let cancelled = false;\n\n return {\n cancel() {\n if (!cancelled) {\n cancelled = true;\n handlerList.splice(handlerList.indexOf(handler), 1);\n }\n\n }\n };\n },\n\n once(eventName : string, handler : Function) : CancelableType {\n\n let listener = this.on(eventName, () => {\n listener.cancel();\n handler();\n });\n\n return listener;\n },\n\n trigger(eventName : string, ...args : $ReadOnlyArray) : ZalgoPromise {\n\n let handlerList = handlers[eventName];\n let promises = [];\n\n if (handlerList) {\n for (let handler of handlerList) {\n promises.push(ZalgoPromise.try(() => handler(...args)));\n }\n }\n\n return ZalgoPromise.all(promises).then(noop);\n },\n\n triggerOnce(eventName : string, ...args : $ReadOnlyArray) : ZalgoPromise {\n\n if (triggered[eventName]) {\n return ZalgoPromise.resolve();\n }\n\n triggered[eventName] = true;\n return this.trigger(eventName, ...args);\n }\n };\n}\n\nexport function camelToDasherize(string : string) : string {\n return string.replace(/([A-Z])/g, (g) => {\n return `-${ g.toLowerCase() }`;\n });\n}\n\nexport function dasherizeToCamel(string : string) : string {\n return string.replace(/-([a-z])/g, (g) => {\n return g[1].toUpperCase();\n });\n}\n\nexport function capitalizeFirstLetter(string : string) : string {\n return string.charAt(0).toUpperCase() + string.slice(1).toLowerCase();\n}\n\nexport function get(item : Object, path : string, def : mixed) : mixed {\n\n if (!path) {\n return def;\n }\n\n let pathParts = path.split('.');\n\n // Loop through each section of our key path\n\n for (let i = 0; i < pathParts.length; i++) {\n\n // If we have an object, we can get the key\n if (typeof item === 'object' && item !== null) {\n item = item[pathParts[i]];\n\n // Otherwise, we should return the default (undefined if not provided)\n } else {\n return def;\n }\n }\n\n // If our final result is undefined, we should return the default\n\n return item === undefined ? def : item;\n}\n\nexport function safeTimeout(method : Function, time : number) {\n\n let interval = safeInterval(() => {\n time -= 100;\n if (time <= 0) {\n interval.cancel();\n method();\n }\n }, 100);\n}\n\nexport function defineLazyProp(obj : Object | Array, key : string | number, getter : () => T) {\n if (Array.isArray(obj)) {\n if (typeof key !== 'number') {\n throw new TypeError(`Array key must be number`);\n }\n } else if (typeof obj === 'object' && obj !== null) {\n if (typeof key !== 'string') {\n throw new TypeError(`Object key must be string`);\n }\n }\n \n Object.defineProperty(obj, key, {\n configurable: true,\n enumerable: true,\n get: () => {\n // $FlowFixMe\n delete obj[key];\n let value = getter();\n // $FlowFixMe\n obj[key] = value;\n return value;\n },\n set: (value : T) => {\n // $FlowFixMe\n delete obj[key];\n // $FlowFixMe\n obj[key] = value;\n }\n });\n}\n\nexport function arrayFrom(item : Iterable) : Array { // eslint-disable-line no-undef\n return Array.prototype.slice.call(item);\n}\n\nexport function isObject(item : mixed) : boolean {\n return (typeof item === 'object' && item !== null);\n}\n\nexport function isObjectObject(obj : mixed) : boolean {\n return isObject(obj) && Object.prototype.toString.call(obj) === '[object Object]';\n}\n\nexport function isPlainObject(obj : mixed) : boolean {\n if (!isObjectObject(obj)) {\n return false;\n }\n\n // $FlowFixMe\n let constructor = obj.constructor;\n\n if (typeof constructor !== 'function') {\n return false;\n }\n\n let prototype = constructor.prototype;\n\n if (!isObjectObject(prototype)) {\n return false;\n }\n\n if (!prototype.hasOwnProperty('isPrototypeOf')) {\n return false;\n }\n\n return true;\n}\n\nexport function replaceObject | Object> (item : T, replacer : (mixed, string | number, string) => mixed, fullKey : string = '') : T {\n\n if (Array.isArray(item)) {\n let length = item.length;\n let result : Array = [];\n\n for (let i = 0; i < length; i++) {\n\n \n defineLazyProp(result, i, () => {\n let itemKey = fullKey ? `${ fullKey }.${ i }` : `${ i }`;\n let el = item[i];\n\n let child = replacer(el, i, itemKey);\n\n if (isPlainObject(child) || Array.isArray(child)) {\n // $FlowFixMe\n child = replaceObject(child, replacer, itemKey);\n }\n\n return child;\n });\n }\n\n // $FlowFixMe\n return result;\n } else if (isPlainObject(item)) {\n let result = {};\n\n for (let key in item) {\n if (!item.hasOwnProperty(key)) {\n continue;\n }\n\n defineLazyProp(result, key, () => {\n let itemKey = fullKey ? `${ fullKey }.${ key }` : `${ key }`;\n // $FlowFixMe\n let el = item[key];\n\n let child = replacer(el, key, itemKey);\n\n if (isPlainObject(child) || Array.isArray(child)) {\n // $FlowFixMe\n child = replaceObject(child, replacer, itemKey);\n }\n\n return child;\n });\n }\n\n // $FlowFixMe\n return result;\n } else {\n throw new Error(`Pass an object or array`);\n }\n}\n\n\nexport function copyProp(source : Object, target : Object, name : string, def : mixed) {\n if (source.hasOwnProperty(name)) {\n let descriptor = Object.getOwnPropertyDescriptor(source, name);\n // $FlowFixMe\n Object.defineProperty(target, name, descriptor);\n\n } else {\n target[name] = def;\n }\n}\n\ntype RegexResultType = {\n text : string,\n groups : Array,\n start : number,\n end : number,\n length : number,\n replace : (text : string) => string\n};\n\nexport function regex(pattern : string | RegExp, string : string, start : number = 0) : ?RegexResultType {\n\n if (typeof pattern === 'string') {\n // eslint-disable-next-line security/detect-non-literal-regexp\n pattern = new RegExp(pattern);\n }\n\n let result = string.slice(start).match(pattern);\n\n if (!result) {\n return;\n }\n\n // $FlowFixMe\n let index : number = result.index;\n let regmatch = result[0];\n\n return {\n text: regmatch,\n groups: result.slice(1),\n start: start + index,\n end: start + index + regmatch.length,\n length: regmatch.length,\n\n replace(text : string) : string {\n\n if (!regmatch) {\n return '';\n }\n\n return `${ regmatch.slice(0, start + index) }${ text }${ regmatch.slice(index + regmatch.length) }`;\n }\n };\n}\n\nexport function regexAll(pattern : string | RegExp, string : string) : Array {\n\n let matches = [];\n let start = 0;\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n let regmatch = regex(pattern, string, start);\n\n if (!regmatch) {\n break;\n }\n\n matches.push(regmatch);\n start = match.end;\n }\n\n return matches;\n}\n\nexport function isDefined(value : ?mixed) : boolean {\n return value !== null && value !== undefined;\n}\n\nexport function cycle(method : Function) : ZalgoPromise {\n return ZalgoPromise.try(method).then(() => cycle(method));\n}\n\nexport function debounce(method : (...args : Array) => T, time : number = 100) : (...args : Array) => void {\n\n let timeout;\n\n const debounceWrapper = function() {\n clearTimeout(timeout);\n\n timeout = setTimeout(() => {\n return method.apply(this, arguments);\n }, time);\n };\n\n return setFunctionName(debounceWrapper, `${ getFunctionName(method) }::debounced`);\n}\n\nexport function isRegex(item : mixed) : boolean {\n return Object.prototype.toString.call(item) === '[object RegExp]';\n}\n\ntype FunctionProxy = (method : T) => T;\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport let weakMapMemoize : FunctionProxy<*> = (method : (arg : any) => R) : ((...args : Array) => R) => {\n\n let weakmap = new WeakMap();\n\n // eslint-disable-next-line flowtype/no-weak-types\n return function weakmapMemoized(arg : any) : R {\n return weakmap.getOrSet(arg, () => method.call(this, arg));\n };\n};\n\ntype FunctionPromiseProxy) => ZalgoPromise> = (T) => T;\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport let weakMapMemoizePromise : FunctionPromiseProxy<*, *> = (method : (arg : any) => ZalgoPromise) : ((...args : Array) => ZalgoPromise) => {\n\n let weakmap = new WeakMap();\n\n // eslint-disable-next-line flowtype/no-weak-types\n return function weakmapMemoizedPromise(arg : any) : ZalgoPromise {\n return weakmap.getOrSet(arg, () =>\n method.call(this, arg).finally(() => {\n weakmap.delete(arg);\n })\n );\n };\n};\n\nexport function getOrSet(obj : O, key : string, getter : () => T) : T {\n if (obj.hasOwnProperty(key)) {\n return obj[key];\n }\n\n const val = getter();\n obj[key] = val;\n return val;\n}\n\nexport type CleanupType = {|\n set : (string, T) => T, // eslint-disable-line no-undef\n register : (Function) => void,\n all : () => ZalgoPromise\n|};\n\nexport function cleanup(obj : Object) : CleanupType {\n\n const tasks = [];\n let cleaned = false;\n\n return {\n set(name : string, item : T) : T {\n if (!cleaned) {\n obj[name] = item;\n this.register(() => {\n delete obj[name];\n });\n }\n return item;\n },\n\n register(method : Function) {\n if (cleaned) {\n method();\n } else {\n tasks.push(once(method));\n }\n },\n\n all() : ZalgoPromise {\n const results = [];\n cleaned = true;\n\n while (tasks.length) {\n const task = tasks.pop();\n results.push(task());\n }\n\n return ZalgoPromise.all(results).then(noop);\n }\n };\n}\n\nexport function tryCatch(fn : () => T) : {| result : T, error : void |} | {| result : void, error : mixed |} {\n let result;\n let error;\n\n try {\n result = fn();\n } catch (err) {\n error = err;\n }\n \n // $FlowFixMe\n return { result, error };\n}\n\nexport function removeFromArray>(arr : T, item : X) {\n const index = arr.indexOf(item);\n if (index !== -1) {\n arr.splice(index, 1);\n }\n}\n\nexport function assertExists(name : string, thing : void | null | T) : T {\n if (thing === null || typeof thing === 'undefined') {\n throw new Error(`Expected ${ name } to be present`);\n }\n \n return thing;\n}\n \nexport function unique(arr : $ReadOnlyArray) : $ReadOnlyArray {\n const result = {};\n for (const item of arr) {\n // eslint-disable-next-line const-immutable/no-mutation\n result[item] = true;\n }\n return Object.keys(result);\n}\n","/* @flow */\n\nexport const KEY_CODES = {\n ENTER: 13\n};\n","/* @flow */\n/* eslint max-lines: off */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { linkFrameWindow, isWindowClosed,\n type SameDomainWindowType, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\n\nimport { inlineMemoize, noop, stringify, capitalizeFirstLetter,\n once, extend, safeInterval, uniqueID, arrayFrom } from './util';\nimport { isDevice } from './device';\nimport { KEY_CODES } from './constants';\nimport type { CancelableType } from './types';\n\ntype ElementRefType = string | HTMLElement;\n\nexport function isDocumentReady() : boolean {\n return Boolean(document.body) && document.readyState === 'complete';\n}\n\nexport function urlEncode(str : string) : string {\n return str.replace(/\\?/g, '%3F').replace(/&/g, '%26').replace(/#/g, '%23').replace(/\\+/g, '%2B');\n}\n\nexport function waitForWindowReady() : ZalgoPromise {\n return inlineMemoize(waitForWindowReady, () : ZalgoPromise => {\n return new ZalgoPromise(resolve => {\n if (isDocumentReady()) {\n resolve();\n }\n\n window.addEventListener('load', () => resolve());\n });\n });\n}\n\nexport function waitForDocumentReady() : ZalgoPromise {\n return inlineMemoize(waitForDocumentReady, () : ZalgoPromise => {\n return new ZalgoPromise(resolve => {\n\n if (isDocumentReady()) {\n return resolve();\n }\n\n let interval = setInterval(() => {\n if (isDocumentReady()) {\n clearInterval(interval);\n return resolve();\n }\n }, 10);\n });\n });\n}\n\nexport function waitForDocumentBody() : ZalgoPromise {\n return waitForDocumentReady().then(() => {\n if (document.body) {\n return document.body;\n }\n\n throw new Error('Document ready but document.body not present');\n });\n}\n\nexport function parseQuery(queryString : string) : Object {\n return inlineMemoize(parseQuery, () : Object => {\n let params = {};\n\n if (!queryString) {\n return params;\n }\n\n if (queryString.indexOf('=') === -1) {\n return params;\n }\n\n for (let pair of queryString.split('&')) {\n pair = pair.split('=');\n\n if (pair[0] && pair[1]) {\n params[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n }\n\n return params;\n }, [ queryString ]);\n}\n\n\nexport function getQueryParam(name : string) : string {\n return parseQuery(window.location.search.slice(1))[name];\n}\n\nexport function urlWillRedirectPage(url : string) : boolean {\n\n if (url.indexOf('#') === -1) {\n return true;\n }\n\n if (url.indexOf('#') === 0) {\n return false;\n }\n\n if (url.split('#')[0] === window.location.href.split('#')[0]) {\n return false;\n }\n\n return true;\n}\n\nexport function formatQuery(obj : { [ string ] : string } = {}) : string {\n\n return Object.keys(obj).filter(key => {\n return typeof obj[key] === 'string';\n }).map(key => {\n return `${ urlEncode(key) }=${ urlEncode(obj[key]) }`;\n }).join('&');\n}\n\nexport function extendQuery(originalQuery : string, props : { [ string ] : string } = {}) : string {\n\n if (!props || !Object.keys(props).length) {\n return originalQuery;\n }\n\n return formatQuery({\n ...parseQuery(originalQuery),\n ...props\n });\n}\n\nexport function extendUrl(url : string, options : { query? : { [string] : string }, hash? : { [string] : string } } = {}) : string {\n\n let query = options.query || {};\n let hash = options.hash || {};\n\n let originalUrl;\n let originalQuery;\n let originalHash;\n\n [ originalUrl, originalHash ] = url.split('#');\n [ originalUrl, originalQuery ] = originalUrl.split('?');\n\n let queryString = extendQuery(originalQuery, query);\n let hashString = extendQuery(originalHash, hash);\n\n if (queryString) {\n originalUrl = `${ originalUrl }?${ queryString }`;\n }\n\n if (hashString) {\n originalUrl = `${ originalUrl }#${ hashString }`;\n }\n\n return originalUrl;\n}\n\nexport function redirect(url : string, win : CrossDomainWindowType = window) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n win.location = url;\n if (!urlWillRedirectPage(url)) {\n resolve();\n }\n });\n}\n\nexport function hasMetaViewPort() : boolean {\n let meta = document.querySelector('meta[name=viewport]');\n\n if (isDevice() && window.screen.width < 660 && !meta) {\n return false;\n }\n\n return true;\n}\n\nexport function isElementVisible(el : HTMLElement) : boolean {\n return Boolean(el.offsetWidth || el.offsetHeight || el.getClientRects().length);\n}\n\nexport function enablePerformance() : boolean {\n return inlineMemoize(enablePerformance, () : boolean => {\n /* eslint-disable compat/compat */\n return Boolean(\n window.performance &&\n performance.now &&\n performance.timing &&\n performance.timing.connectEnd &&\n performance.timing.navigationStart &&\n (Math.abs(performance.now() - Date.now()) > 1000) &&\n (performance.now() - (performance.timing.connectEnd - performance.timing.navigationStart)) > 0\n );\n /* eslint-enable compat/compat */\n });\n}\n\nexport function getPageRenderTime() : ZalgoPromise {\n return waitForDocumentReady().then(() => {\n\n if (!enablePerformance()) {\n return;\n }\n\n let timing = window.performance.timing;\n\n if (timing.connectEnd && timing.domInteractive) {\n return timing.domInteractive - timing.connectEnd;\n }\n });\n}\n\nexport function htmlEncode(html : string = '') : string {\n return html.toString()\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(/\\//g, '/');\n}\n\nexport function isBrowser() : boolean {\n return (typeof window !== 'undefined');\n}\n\nexport function querySelectorAll(selector : string, doc : HTMLElement = window.document) : Array {\n return Array.prototype.slice.call(doc.querySelectorAll(selector));\n}\n\nexport function onClick(element : HTMLElement, handler : (Event) => void) {\n element.addEventListener('touchstart', noop);\n element.addEventListener('click', handler);\n element.addEventListener('keypress', (event : Event) => {\n // $FlowFixMe\n if (event.keyCode === KEY_CODES.ENTER) {\n return handler(event);\n }\n });\n}\n\nexport function getScript({ host = window.location.host, path } : { host? : string, path : string }) : ?HTMLScriptElement {\n return inlineMemoize(getScript, () : ?HTMLScriptElement => {\n\n let url = `${ host }${ path }`;\n let scripts = Array.prototype.slice.call(document.getElementsByTagName('script'));\n\n for (let script of scripts) {\n if (!script.src) {\n continue;\n }\n\n let src = script.src.replace(/^https?:\\/\\//, '').split('?')[0];\n\n if (src === url) {\n return script;\n }\n }\n }, [ path ]);\n}\n\nexport function isLocalStorageEnabled() : boolean {\n return inlineMemoize(isLocalStorageEnabled, () => {\n try {\n if (typeof window === 'undefined') {\n return false;\n }\n\n if (window.localStorage) {\n let value = Math.random().toString();\n window.localStorage.setItem('__test__localStorage__', value);\n let result = window.localStorage.getItem('__test__localStorage__');\n window.localStorage.removeItem('__test__localStorage__');\n if (value === result) {\n return true;\n }\n }\n } catch (err) {\n // pass\n }\n return false;\n });\n}\n\nexport function getBrowserLocales() : Array<{ country? : string, lang : string }> {\n let nav = window.navigator;\n\n let locales = nav.languages\n ? Array.prototype.slice.apply(nav.languages)\n : [];\n\n if (nav.language) {\n locales.push(nav.language);\n }\n\n if (nav.userLanguage) {\n locales.push(nav.userLanguage);\n }\n\n return locales.map(locale => {\n\n if (locale && locale.match(/^[a-z]{2}[-_][A-Z]{2}$/)) {\n let [ lang, country ] = locale.split(/[-_]/);\n return { country, lang };\n }\n\n if (locale && locale.match(/^[a-z]{2}$/)) {\n return { lang: locale };\n }\n\n return null;\n\n }).filter(Boolean);\n}\n\n\nexport function appendChild(container : HTMLElement, child : HTMLElement | Text) {\n container.appendChild(child);\n}\n\nexport function isElement(element : mixed) : boolean {\n\n if (element instanceof window.Element) {\n return true;\n }\n\n if (element !== null && typeof element === 'object' && element.nodeType === 1 && typeof element.style === 'object' && typeof element.ownerDocument === 'object') {\n return true;\n }\n\n return false;\n}\n\nexport function getElementSafe(id : ElementRefType, doc : Document | HTMLElement = document) : ?HTMLElement {\n\n if (isElement(id)) {\n // $FlowFixMe\n return id;\n }\n\n if (typeof id === 'string') {\n return doc.querySelector(id);\n }\n}\n\nexport function getElement(id : ElementRefType, doc : Document | HTMLElement = document) : HTMLElement {\n\n let element = getElementSafe(id, doc);\n\n if (element) {\n return element;\n }\n\n throw new Error(`Can not find element: ${ stringify(id) }`);\n}\n\nexport function elementReady(id : ElementRefType) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n let name = stringify(id);\n let el = getElementSafe(id);\n\n if (el) {\n return resolve(el);\n }\n\n if (isDocumentReady()) {\n return reject(new Error(`Document is ready and element ${ name } does not exist`));\n }\n\n let interval = setInterval(() => {\n\n el = getElementSafe(id);\n\n if (el) {\n clearInterval(interval);\n return resolve(el);\n }\n\n if (isDocumentReady()) {\n clearInterval(interval);\n return reject(new Error(`Document is ready and element ${ name } does not exist`));\n }\n }, 10);\n });\n}\n\nexport function PopupOpenError(message : string) {\n this.message = message;\n}\n\nPopupOpenError.prototype = Object.create(Error.prototype);\n\ntype PopupOptions = {|\n name? : string,\n width? : number,\n height? : number,\n top? : number,\n left? : number,\n status? : 0 | 1,\n resizable? : 0 | 1,\n toolbar? : 0 | 1,\n menubar? : 0 | 1,\n scrollbars? : 0 | 1\n|};\n\nexport function popup(url : string, options? : PopupOptions) : CrossDomainWindowType {\n\n // $FlowFixMe\n options = options || {};\n\n let { width, height } = options;\n\n let top = 0;\n let left = 0;\n\n if (width) {\n if (window.outerWidth) {\n left = Math.round((window.outerWidth - width) / 2) + window.screenX;\n } else if (window.screen.width) {\n left = Math.round((window.screen.width - width) / 2);\n }\n }\n\n if (height) {\n if (window.outerHeight) {\n top = Math.round((window.outerHeight - height) / 2) + window.screenY;\n } else if (window.screen.height) {\n top = Math.round((window.screen.height - height) / 2);\n }\n }\n\n if (width && height) {\n options = {\n top,\n left,\n width,\n height,\n status: 1,\n toolbar: 0,\n menubar: 0,\n resizable: 1,\n scrollbars: 1,\n ...options\n };\n }\n\n let name = options.name || '';\n delete options.name;\n\n // eslint-disable-next-line array-callback-return\n let params = Object.keys(options).map(key => {\n // $FlowFixMe\n if (options[key] !== null && options[key] !== undefined) {\n return `${ key }=${ stringify(options[key]) }`;\n }\n }).filter(Boolean).join(',');\n\n let win;\n\n try {\n win = window.open(url, name, params, true);\n } catch (err) {\n throw new PopupOpenError(`Can not open popup window - ${ err.stack || err.message }`);\n }\n\n if (isWindowClosed(win)) {\n let err = new PopupOpenError(`Can not open popup window - blocked`);\n throw err;\n }\n\n window.addEventListener('unload', () => win.close());\n\n return win;\n}\n\n\nexport function writeToWindow(win : SameDomainWindowType, html : string) {\n try {\n win.document.open();\n win.document.write(html);\n win.document.close();\n } catch (err) {\n try {\n win.location = `javascript: document.open(); document.write(${ JSON.stringify(html) }); document.close();`;\n } catch (err2) {\n // pass\n }\n }\n}\n\nexport function writeElementToWindow(win : SameDomainWindowType, el : HTMLElement) {\n\n let tag = el.tagName.toLowerCase();\n\n if (tag !== 'html') {\n throw new Error(`Expected element to be html, got ${ tag }`);\n }\n\n let documentElement = win.document.documentElement;\n\n for (const child of arrayFrom(documentElement.children)) {\n documentElement.removeChild(child);\n }\n\n for (const child of arrayFrom(el.children)) {\n documentElement.appendChild(child);\n }\n}\n\nexport function setStyle(el : HTMLElement, styleText : string, doc : Document = window.document) {\n // $FlowFixMe\n if (el.styleSheet) {\n // $FlowFixMe\n el.styleSheet.cssText = styleText;\n } else {\n el.appendChild(doc.createTextNode(styleText));\n }\n}\n\nexport type ElementOptionsType = {\n style? : { [ string ] : string },\n id? : string,\n class? : ?Array,\n attributes? : { [ string ] : string },\n styleSheet? : ?string,\n html? : ?string\n};\n\nlet awaitFrameLoadPromises : WeakMap>;\n\nexport function awaitFrameLoad(frame : HTMLIFrameElement) : ZalgoPromise {\n awaitFrameLoadPromises = awaitFrameLoadPromises || new WeakMap();\n\n if (awaitFrameLoadPromises.has(frame)) {\n let promise = awaitFrameLoadPromises.get(frame);\n if (promise) {\n return promise;\n }\n }\n\n let promise = new ZalgoPromise((resolve, reject) => {\n frame.addEventListener('load', () => {\n linkFrameWindow(frame);\n resolve(frame);\n });\n\n frame.addEventListener('error', (err : Event) => {\n if (frame.contentWindow) {\n resolve(frame);\n } else {\n reject(err);\n }\n });\n });\n\n awaitFrameLoadPromises.set(frame, promise);\n\n return promise;\n}\n\nexport function awaitFrameWindow(frame : HTMLIFrameElement) : ZalgoPromise {\n return awaitFrameLoad(frame).then(loadedFrame => {\n\n if (!loadedFrame.contentWindow) {\n throw new Error(`Could not find window in iframe`);\n }\n\n return loadedFrame.contentWindow;\n });\n}\n\nexport function createElement(tag : string = 'div', options : ElementOptionsType = {}, container : ?HTMLElement) : HTMLElement {\n\n tag = tag.toLowerCase();\n let element = document.createElement(tag);\n\n if (options.style) {\n extend(element.style, options.style);\n }\n\n if (options.class) {\n element.className = options.class.join(' ');\n }\n\n if (options.id) {\n element.setAttribute('id', options.id);\n }\n\n if (options.attributes) {\n for (let key of Object.keys(options.attributes)) {\n element.setAttribute(key, options.attributes[key]);\n }\n }\n\n if (options.styleSheet) {\n setStyle(element, options.styleSheet);\n }\n\n if (container) {\n appendChild(container, element);\n }\n\n if (options.html) {\n if (tag === 'iframe') {\n // $FlowFixMe\n if (!container || !element.contentWindow) {\n throw new Error(`Iframe html can not be written unless container provided and iframe in DOM`);\n }\n\n // $FlowFixMe\n writeToWindow(element.contentWindow, options.html);\n\n } else {\n element.innerHTML = options.html;\n }\n }\n\n return element;\n}\n\n\nexport type IframeElementOptionsType = {\n style? : { [ string ] : string },\n class? : ?Array,\n attributes? : { [ string ] : string },\n styleSheet? : ?string,\n html? : ?string,\n url? : ?string\n};\n\nexport function iframe(options : IframeElementOptionsType = {}, container : ?HTMLElement) : HTMLIFrameElement {\n\n let attributes = options.attributes || {};\n let style = options.style || {};\n\n let frame = createElement('iframe', {\n attributes: {\n allowTransparency: 'true',\n ...attributes\n },\n style: {\n backgroundColor: 'transparent',\n border: 'none',\n ...style\n },\n html: options.html,\n class: options.class\n });\n\n const isIE = window.navigator.userAgent.match(/MSIE|Edge/i);\n \n if (!frame.hasAttribute('id')) {\n frame.setAttribute('id', uniqueID());\n }\n\n // $FlowFixMe\n awaitFrameLoad(frame);\n\n if (container) {\n let el = getElement(container);\n el.appendChild(frame);\n }\n\n if (options.url || isIE) {\n frame.setAttribute('src', options.url || 'about:blank');\n }\n\n // $FlowFixMe\n return frame;\n}\n\nexport function addEventListener(obj : HTMLElement, event : string, handler : (event : Event) => void) : CancelableType {\n obj.addEventListener(event, handler);\n return {\n cancel() {\n obj.removeEventListener(event, handler);\n }\n };\n}\n\nexport function bindEvents(element : HTMLElement, eventNames : Array, handler : (event : Event) => void) : CancelableType {\n\n handler = once(handler);\n\n for (let eventName of eventNames) {\n element.addEventListener(eventName, handler);\n }\n\n return {\n cancel: once(() => {\n for (let eventName of eventNames) {\n element.removeEventListener(eventName, handler);\n }\n })\n };\n}\n\nconst VENDOR_PREFIXES = [ 'webkit', 'moz', 'ms', 'o' ];\n\nexport function setVendorCSS(element : HTMLElement, name : string, value : string) {\n\n // $FlowFixMe\n element.style[name] = value;\n\n let capitalizedName = capitalizeFirstLetter(name);\n\n for (let prefix of VENDOR_PREFIXES) {\n // $FlowFixMe\n element.style[`${ prefix }${ capitalizedName }`] = value;\n }\n}\n\nconst ANIMATION_START_EVENTS = [ 'animationstart', 'webkitAnimationStart', 'oAnimationStart', 'MSAnimationStart' ];\nconst ANIMATION_END_EVENTS = [ 'animationend', 'webkitAnimationEnd', 'oAnimationEnd', 'MSAnimationEnd' ];\n\nexport function animate(element : ElementRefType, name : string, clean : (Function) => void, timeout : number = 1000) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n let el = getElement(element);\n\n if (!el) {\n return resolve();\n }\n\n let hasStarted = false;\n\n let startTimeout;\n let endTimeout;\n let startEvent;\n let endEvent;\n\n function cleanUp() {\n clearTimeout(startTimeout);\n clearTimeout(endTimeout);\n startEvent.cancel();\n endEvent.cancel();\n }\n\n startEvent = bindEvents(el, ANIMATION_START_EVENTS, event => {\n\n // $FlowFixMe\n if (event.target !== el || event.animationName !== name) {\n return;\n }\n\n clearTimeout(startTimeout);\n\n event.stopPropagation();\n\n startEvent.cancel();\n hasStarted = true;\n\n endTimeout = setTimeout(() => {\n cleanUp();\n resolve();\n }, timeout);\n });\n\n endEvent = bindEvents(el, ANIMATION_END_EVENTS, event => {\n\n // $FlowFixMe\n if (event.target !== el || event.animationName !== name) {\n return;\n }\n\n cleanUp();\n\n // $FlowFixMe\n if (typeof event.animationName === 'string' && event.animationName !== name) {\n return reject(`Expected animation name to be ${ name }, found ${ event.animationName }`);\n }\n\n return resolve();\n });\n\n setVendorCSS(el, 'animationName', name);\n\n startTimeout = setTimeout(() => {\n if (!hasStarted) {\n cleanUp();\n return resolve();\n }\n }, 200);\n\n if (clean) {\n clean(cleanUp);\n }\n });\n}\n\nconst STYLE = {\n\n DISPLAY: {\n NONE: 'none',\n BLOCK: 'block'\n },\n\n VISIBILITY: {\n VISIBLE: 'visible',\n HIDDEN: 'hidden'\n },\n\n IMPORTANT: 'important'\n};\n\nexport function makeElementVisible(element : HTMLElement) {\n element.style.setProperty('visibility', '');\n}\n\nexport function makeElementInvisible(element : HTMLElement) {\n element.style.setProperty('visibility', STYLE.VISIBILITY.HIDDEN, STYLE.IMPORTANT);\n}\n\n\nexport function showElement(element : HTMLElement) {\n element.style.setProperty('display', '');\n}\n\nexport function hideElement(element : HTMLElement) {\n element.style.setProperty('display', STYLE.DISPLAY.NONE, STYLE.IMPORTANT);\n}\n\nexport function destroyElement(element : HTMLElement) {\n if (element && element.parentNode) {\n element.parentNode.removeChild(element);\n }\n}\n\nexport function showAndAnimate(element : HTMLElement, name : string, clean : (Function) => void) : ZalgoPromise {\n let animation = animate(element, name, clean);\n showElement(element);\n return animation;\n}\n\nexport function animateAndHide(element : HTMLElement, name : string, clean : (Function) => void) : ZalgoPromise {\n return animate(element, name, clean).then(() => {\n hideElement(element);\n });\n}\n\nexport function addClass(element : HTMLElement, name : string) {\n element.classList.add(name);\n}\n\nexport function removeClass(element : HTMLElement, name : string) {\n element.classList.remove(name);\n}\n\nexport function isElementClosed(el : HTMLElement) : boolean {\n if (!el || !el.parentNode) {\n return true;\n }\n return false;\n}\n\nexport function watchElementForClose(element : HTMLElement, handler : () => mixed) : CancelableType {\n handler = once(handler);\n\n let interval;\n\n if (isElementClosed(element)) {\n handler();\n } else {\n interval = safeInterval(() => {\n if (isElementClosed(element)) {\n interval.cancel();\n handler();\n }\n }, 50);\n }\n\n return {\n cancel() {\n if (interval) {\n interval.cancel();\n }\n }\n };\n}\n\nexport function fixScripts(el : HTMLElement, doc : Document = window.document) {\n for (let script of querySelectorAll('script', el)) {\n let parentNode = script.parentNode;\n\n if (!parentNode) {\n continue;\n }\n\n let newScript = doc.createElement('script');\n newScript.text = script.textContent;\n parentNode.replaceChild(newScript, script);\n }\n}\n\ntype OnResizeOptions = {|\n width? : boolean,\n height? : boolean,\n interval? : number,\n win? : SameDomainWindowType\n|};\n\nexport function onResize(el : HTMLElement, handler : ({ width : number, height : number }) => void, { width = true, height = true, interval = 100, win = window } : OnResizeOptions = {}) : {} {\n let currentWidth = el.offsetWidth;\n let currentHeight = el.offsetHeight;\n\n handler({ width: currentWidth, height: currentHeight });\n\n let check = () => {\n let newWidth = el.offsetWidth;\n let newHeight = el.offsetHeight;\n\n if ((width && newWidth !== currentWidth) || (height && newHeight !== currentHeight)) {\n handler({ width: newWidth, height: newHeight });\n }\n\n currentWidth = newWidth;\n currentHeight = newHeight;\n };\n\n let observer;\n let timeout;\n\n if (typeof win.ResizeObserver !== 'undefined') {\n observer = new win.ResizeObserver(check);\n observer.observe(el);\n\n } else if (typeof win.MutationObserver !== 'undefined') {\n observer = new win.MutationObserver(check);\n observer.observe(el, {\n attributes: true,\n childList: true,\n subtree: true,\n characterData: false\n });\n win.addEventListener('resize', check);\n } else {\n let loop = () => {\n check();\n timeout = setTimeout(loop, interval);\n };\n loop();\n }\n\n return {\n cancel: () => {\n observer.disconnect();\n window.removeEventListener('resize', check);\n clearTimeout(timeout);\n }\n };\n}\n\nexport function getResourceLoadTime(url : string) : ?number {\n\n if (!enablePerformance()) {\n return;\n }\n\n if (!window.performance || typeof window.performance.getEntries !== 'function') {\n return;\n }\n\n const entries = window.performance.getEntries();\n\n for (let i = 0; i < entries.length; i++) {\n const entry = entries[i];\n\n if (entry && entry.name && entry.name.indexOf(url) === 0 && typeof entry.duration === 'number') {\n return Math.floor(entry.duration);\n }\n }\n}\n","/* @flow */\n\nimport { uniqueID, getGlobal, inlineMemoize } from './util';\nimport { isLocalStorageEnabled } from './dom';\n\ntype Getter = (handler : (Object) => T) => T;\n\nexport type Storage = {\n getState : Getter<*>,\n getID : () => string,\n getSessionState : Getter<*>,\n getSessionID : () => string\n};\n\nconst DEFAULT_SESSION_STORAGE = 20 * 60 * 1000;\n\nexport function getStorage({ name, lifetime = DEFAULT_SESSION_STORAGE } : { name : string, lifetime? : number }) : Storage {\n return inlineMemoize(getStorage, () => {\n const STORAGE_KEY = `__${ name }_storage__`;\n\n let accessedStorage;\n\n function getState(handler : (storage : Object) => T) : T {\n\n let localStorageEnabled = isLocalStorageEnabled();\n let storage;\n\n if (accessedStorage) {\n storage = accessedStorage;\n }\n\n if (!storage && localStorageEnabled) {\n let rawStorage = window.localStorage.getItem(STORAGE_KEY);\n\n if (rawStorage) {\n storage = JSON.parse(rawStorage);\n }\n }\n\n if (!storage) {\n storage = getGlobal()[STORAGE_KEY];\n }\n\n if (!storage) {\n storage = {\n id: uniqueID()\n };\n }\n\n if (!storage.id) {\n storage.id = uniqueID();\n }\n\n accessedStorage = storage;\n\n let result = handler(storage);\n\n if (localStorageEnabled) {\n window.localStorage.setItem(STORAGE_KEY, JSON.stringify(storage));\n } else {\n getGlobal()[STORAGE_KEY] = storage;\n }\n\n accessedStorage = null;\n\n return result;\n }\n\n function getID() : string {\n return getState(storage => storage.id);\n }\n\n function getSession(handler : (state : Object) => T) : T {\n return getState(storage => {\n\n let session = storage.__session__;\n let now = Date.now();\n\n if (session && ((now - session.created) > lifetime)) {\n session = null;\n }\n\n if (!session) {\n session = {\n guid: uniqueID(),\n created: now\n };\n }\n\n storage.__session__ = session;\n\n return handler(session);\n });\n }\n\n function getSessionState(handler : (state : Object) => T) : T {\n return getSession(session => {\n session.state = session.state || {};\n return handler(session.state);\n });\n }\n\n function getSessionID() : string {\n return getSession(session => session.guid);\n }\n\n return {\n getState,\n getID,\n getSessionState,\n getSessionID\n };\n }, [ { name, lifetime } ]);\n}\n","/* @flow */\n\nimport { noop } from './util';\nimport { getStorage } from './storage';\n\nfunction getBelterExperimentStorage() : Object {\n return getStorage({ name: 'belter_experiment' });\n}\n\nfunction isEventUnique(name : string) : boolean {\n return getBelterExperimentStorage().getSessionState(state => {\n state.loggedBeacons = state.loggedBeacons || [];\n\n if (state.loggedBeacons.indexOf(name) === -1) {\n state.loggedBeacons.push(name);\n return true;\n }\n\n return false;\n });\n}\n\nexport type Experiment = {\n isEnabled : () => boolean,\n isDisabled : () => boolean,\n getTreatment : () => string,\n log : (string, payload? : { [string] : ?string }) => Experiment,\n logStart : (payload? : { [string] : ?string }) => Experiment,\n logComplete : (payload? : { [string] : ?string }) => Experiment\n};\n\nfunction getThrottlePercentile(name : string) : number {\n return getBelterExperimentStorage().getState(state => {\n state.throttlePercentiles = state.throttlePercentiles || {};\n state.throttlePercentiles[name] = state.throttlePercentiles[name] || Math.floor(Math.random() * 100);\n return state.throttlePercentiles[name];\n });\n}\n\nconst THROTTLE_GROUP = {\n TEST: 'test',\n CONTROL: 'control',\n THROTTLE: 'throttle'\n};\n\ntype ExperimentOptions = {\n name : string,\n sample? : number,\n logTreatment? : ({ name : string, treatment : string, payload : { [string] : ?string } }) => void,\n logCheckpoint? : ({ name : string, treatment : string, checkpoint : string, payload : { [string] : ?string } }) => void\n};\n\nexport function experiment({ name, sample = 50, logTreatment = noop, logCheckpoint = noop } : ExperimentOptions) : Experiment {\n\n let throttle = getThrottlePercentile(name);\n\n let group;\n\n if (throttle < sample) {\n group = THROTTLE_GROUP.TEST;\n } else if ((sample >= 50) || ((sample <= throttle) && (throttle < (sample * 2)))) {\n group = THROTTLE_GROUP.CONTROL;\n } else {\n group = THROTTLE_GROUP.THROTTLE;\n }\n\n let treatment = `${ name }_${ group }`;\n\n let started = false;\n let forced = false;\n\n try {\n if (window.localStorage && window.localStorage.getItem(name)) {\n forced = true;\n }\n } catch (err) {\n // pass\n }\n\n return {\n\n isEnabled() : boolean {\n return (group === THROTTLE_GROUP.TEST) || forced;\n },\n\n isDisabled() : boolean {\n return (group !== THROTTLE_GROUP.TEST) && !forced;\n },\n\n getTreatment() : string {\n return treatment;\n },\n\n log(checkpoint : string, payload? : { [string] : ?string } = {}) : Experiment {\n if (!started) {\n return this;\n }\n\n if (isEventUnique(`${ name }_${ treatment }_${ JSON.stringify(payload) }`)) {\n logTreatment({ name, treatment, payload });\n }\n\n if (isEventUnique(`${ name }_${ treatment }_${ checkpoint }_${ JSON.stringify(payload) }`)) {\n logCheckpoint({ name, treatment, checkpoint, payload });\n }\n\n return this;\n },\n\n logStart(payload? : { [string] : ?string } = {}) : Experiment {\n started = true;\n return this.log(`start`, payload);\n },\n\n logComplete(payload? : { [string] : ?string } = {}) : Experiment {\n return this.log(`complete`, payload);\n }\n };\n}\n","/* @flow */\n\nimport { getGlobal } from './util';\n\nexport function getGlobalNameSpace({ name, version = 'latest' } : { name : string, version? : string }) : { get : (string, defValue? : T) => T } {\n\n let global = getGlobal();\n let globalKey = `__${ name }__${ version }_global__`;\n\n let namespace = global[globalKey] = global[globalKey] || {};\n\n return {\n get: (key : string, defValue? : T) : T => {\n // $FlowFixMe\n defValue = defValue || {};\n let item = namespace[key] = namespace[key] || defValue;\n return item;\n }\n };\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { type SameDomainWindowType } from 'cross-domain-utils/src';\n\ntype RequestOptionsType = {\n url : string,\n method? : string,\n headers? : { [key : string] : string },\n json? : $ReadOnlyArray | Object,\n data? : { [key : string] : string },\n body? : string,\n win? : SameDomainWindowType,\n timeout? : number\n};\n\ntype ResponseType = {\n status : number,\n headers : { [string] : string },\n body : Object\n};\n\nconst HEADERS = {\n CONTENT_TYPE: 'content-type',\n ACCEPT: 'accept'\n};\n\nlet headerBuilders = [];\n\nfunction parseHeaders(rawHeaders : string = '') : { [string] : string } {\n let result = {};\n for (let line of rawHeaders.trim().split('\\n')) {\n let [ key, ...values ] = line.split(':');\n result[key.toLowerCase()] = values.join(':').trim();\n }\n return result;\n}\n\nexport function request({ url, method = 'get', headers = {}, json, data, body, win = window, timeout = 0 } : RequestOptionsType) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n if ((json && data) || (json && body) || (data && json)) {\n throw new Error(`Only options.json or options.data or options.body should be passed`);\n }\n\n let normalizedHeaders = {};\n\n for (let key of Object.keys(headers)) {\n normalizedHeaders[key.toLowerCase()] = headers[key];\n }\n\n if (json) {\n normalizedHeaders[HEADERS.CONTENT_TYPE] = normalizedHeaders[HEADERS.CONTENT_TYPE] || 'application/json';\n } else if (data || body) {\n normalizedHeaders[HEADERS.CONTENT_TYPE] = normalizedHeaders[HEADERS.CONTENT_TYPE] || 'application/x-www-form-urlencoded; charset=utf-8';\n }\n\n normalizedHeaders[HEADERS.ACCEPT] = normalizedHeaders[HEADERS.ACCEPT] || 'application/json';\n\n for (let headerBuilder of headerBuilders) {\n let builtHeaders = headerBuilder();\n\n for (let key of Object.keys(builtHeaders)) {\n normalizedHeaders[key.toLowerCase()] = builtHeaders[key];\n }\n }\n\n let xhr = new win.XMLHttpRequest();\n\n xhr.addEventListener('load', function xhrLoad() : void {\n\n let responseHeaders = parseHeaders(this.getAllResponseHeaders());\n\n if (!this.status) {\n return reject(new Error(`Request to ${ method.toLowerCase() } ${ url } failed: no response status code.`));\n }\n \n let contentType = responseHeaders['content-type'];\n let isJSON = contentType && (contentType.indexOf('application/json') === 0 || contentType.indexOf('text/json') === 0);\n let responseBody = this.responseText;\n\n try {\n responseBody = JSON.parse(responseBody);\n } catch (err) {\n if (isJSON) {\n return reject(new Error(`Invalid json: ${ this.responseText }.`));\n }\n }\n\n let res = {\n status: this.status,\n headers: responseHeaders,\n body: responseBody\n };\n\n return resolve(res);\n\n }, false);\n\n xhr.addEventListener('error', (evt) => {\n reject(new Error(`Request to ${ method.toLowerCase() } ${ url } failed: ${ evt.toString() }.`));\n }, false);\n\n xhr.open(method, url, true);\n\n for (let key in normalizedHeaders) {\n if (normalizedHeaders.hasOwnProperty(key)) {\n xhr.setRequestHeader(key, normalizedHeaders[key]);\n }\n }\n\n if (json) {\n body = JSON.stringify(json);\n } else if (data) {\n body = Object.keys(data).map(key => {\n return `${ encodeURIComponent(key) }=${ data ? encodeURIComponent(data[key]) : '' }`;\n }).join('&');\n }\n\n xhr.timeout = timeout;\n xhr.ontimeout = function xhrTimeout() {\n reject(new Error(`Request to ${ method.toLowerCase() } ${ url } has timed out`));\n };\n\n xhr.send(body);\n });\n}\n\nexport function addHeaderBuilder(method : () => { [string] : string }) {\n headerBuilders.push(method);\n}\n","/* @flow */\n\n// export something to force webpack to see this as an ES module\nexport const TYPES = true;\n\ndeclare var __TEST__ : boolean;\n\nexport type JSONPrimitive = string | boolean | number;\nexport type JSONObject = { [string] : JSONPrimitive | JSONObject } | Array;\nexport type JSONType = JSONObject | JSONPrimitive;\n\nexport type CancelableType = {\n cancel : () => void\n};\n","/* @flow */\n\nimport { memoize, promisify } from './util';\n\nexport function memoized(target : Object, name : string, descriptor : Object) {\n descriptor.value = memoize(descriptor.value, { name, thisNamespace: true });\n}\n\nexport function promise(target : Object, name : string, descriptor : Object) {\n descriptor.value = promisify(descriptor.value, { name });\n}\n","/* @flow */\n\nexport function isPerc(str : string) : boolean {\n return typeof str === 'string' && (/^[0-9]+%$/).test(str);\n}\n\nexport function isPx(str : string) : boolean {\n return typeof str === 'string' && (/^[0-9]+px$/).test(str);\n}\n\nexport function toNum(val : string | number) : number {\n\n if (typeof val === 'number') {\n return val;\n }\n\n let match = val.match(/^([0-9]+)(px|%)$/);\n\n if (!match) {\n throw new Error(`Could not match css value from ${ val }`);\n }\n\n return parseInt(match[1], 10);\n}\n\nexport function toPx(val : number | string) : string {\n return `${ toNum(val) }px`;\n}\n\nexport function toCSS(val : number | string) : string {\n\n if (typeof val === 'number') {\n return toPx(val);\n }\n\n return isPerc(val) ? val : toPx(val);\n}\n\nexport function percOf(num : number, perc : string) : number {\n return parseInt(num * toNum(perc) / 100, 10);\n}\n\nexport function normalizeDimension(dim : string | number, max : number) : number {\n if (typeof dim === 'number') {\n return dim;\n } else if (isPerc(dim)) {\n return percOf(max, dim);\n } else if (isPx(dim)) {\n return toNum(dim);\n } else {\n throw new Error(`Can not normalize dimension: ${ dim }`);\n }\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { noop, tryCatch, removeFromArray } from './util';\n\ntype Prom = Promise | ZalgoPromise; // eslint-disable-line no-restricted-globals, promise/no-native\n\ntype Handler = >(name : string, fn? : (...args : A) => T) => (...args : A) => T; // eslint-disable-line no-undef\ntype Wrapper = ({ expect : Handler, avoid : Handler, expectError : Handler, error : Handler }) => (Prom | void);\n\nexport function wrapPromise(method : Wrapper, { timeout = 5000 } : { timeout? : number } = {}) : ZalgoPromise {\n let expected : Array = [];\n let promises : Array> = [];\n\n let timer = setTimeout(() => {\n if (expected.length) {\n promises.push(ZalgoPromise.asyncReject(new Error(`Expected ${ expected[0] } to be called`)));\n }\n }, timeout);\n\n let expect : Handler = (name, fn = noop) => {\n expected.push(name);\n \n // $FlowFixMe\n return function expectWrapper(...args) : * {\n removeFromArray(expected, name);\n\n // $FlowFixMe\n let { result, error } = tryCatch(() => fn.call(this, ...args));\n\n if (error) {\n promises.push(ZalgoPromise.asyncReject(error));\n throw error;\n }\n\n promises.push(ZalgoPromise.resolve(result));\n return result;\n };\n };\n\n let avoid : Handler = (name : string, fn = noop) => {\n\n // $FlowFixMe\n return function avoidWrapper(...args) : * {\n promises.push(ZalgoPromise.asyncReject(new Error(`Expected ${ name } to not be called`)));\n // $FlowFixMe\n return fn.call(this, ...args);\n };\n };\n\n let expectError : Handler = (name, fn = noop) => {\n expected.push(name);\n\n // $FlowFixMe\n return function expectErrorWrapper(...args) : * {\n removeFromArray(expected, name);\n\n // $FlowFixMe\n let { result, error } = tryCatch(() => fn.call(this, ...args));\n\n if (error) {\n throw error;\n }\n\n promises.push(ZalgoPromise.resolve(result).then(() => {\n throw new Error(`Expected ${ name } to throw an error`);\n }, noop));\n return result;\n };\n };\n\n promises.push(ZalgoPromise.try(() => method({ expect, avoid, expectError, error: avoid })));\n\n let drain = () => {\n return ZalgoPromise.try(() => {\n if (promises.length) {\n return promises.pop();\n }\n }).then(() => {\n if (promises.length) {\n return drain();\n }\n if (expected.length) {\n return ZalgoPromise.delay(10).then(drain);\n }\n });\n };\n\n return drain().then(() => {\n clearTimeout(timer);\n });\n}\n","/* @flow */\n\nexport * from './device';\nexport * from './dom';\nexport * from './experiment';\nexport * from './global';\nexport * from './storage';\nexport * from './util';\nexport * from './http';\nexport * from './types';\nexport * from './decorators';\nexport * from './css';\nexport * from './test';\n","/* @flow */\n\nexport function hasNativeWeakMap() : boolean {\n\n if (typeof WeakMap === 'undefined') {\n return false;\n }\n\n if (typeof Object.freeze === 'undefined') {\n return false;\n }\n\n try {\n\n let testWeakMap = new WeakMap();\n let testKey = {};\n let testValue = '__testvalue__';\n\n Object.freeze(testKey);\n\n testWeakMap.set(testKey, testValue);\n\n if (testWeakMap.get(testKey) === testValue) {\n return true;\n }\n\n return false;\n\n } catch (err) {\n\n return false;\n }\n}\n","/* @flow */\n\nexport function safeIndexOf(collection : Array, item : T) : number {\n for (let i = 0; i < collection.length; i++) {\n\n try {\n if (collection[i] === item) {\n return i;\n }\n } catch (err) {\n // pass\n }\n }\n\n return -1;\n}\n\n// eslint-disable-next-line no-unused-vars\nexport function noop(...args : Array) {\n // pass\n}\n","/* @flow */\n\nimport { isWindow, isWindowClosed } from 'cross-domain-utils/src';\n\nimport { hasNativeWeakMap } from './native';\nimport { noop, safeIndexOf } from './util';\n\nexport class CrossDomainSafeWeakMap {\n\n name : string\n weakmap : ?WeakMap\n keys : Array\n values : Array\n\n constructor() {\n // eslint-disable-next-line no-bitwise\n this.name = `__weakmap_${ Math.random() * 1e9 >>> 0 }__`;\n\n if (hasNativeWeakMap()) {\n try {\n this.weakmap = new WeakMap();\n } catch (err) {\n // pass\n }\n }\n\n this.keys = [];\n this.values = [];\n }\n\n _cleanupClosedWindows() {\n\n let weakmap = this.weakmap;\n let keys = this.keys;\n\n for (let i = 0; i < keys.length; i++) {\n let value = keys[i];\n\n if (isWindow(value) && isWindowClosed(value)) {\n\n if (weakmap) {\n try {\n weakmap.delete(value);\n } catch (err) {\n // pass\n }\n }\n\n keys.splice(i, 1);\n this.values.splice(i, 1);\n\n i -= 1;\n }\n }\n }\n\n isSafeToReadWrite(key : K) : boolean {\n\n if (isWindow(key)) {\n return false;\n }\n\n try {\n noop(key && key.self);\n noop(key && key[this.name]);\n } catch (err) {\n return false;\n }\n\n return true;\n }\n\n set(key : K, value : V) {\n\n if (!key) {\n throw new Error(`WeakMap expected key`);\n }\n\n let weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n weakmap.set(key, value);\n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (this.isSafeToReadWrite(key)) {\n try {\n let name = this.name;\n let entry = key[name];\n\n if (entry && entry[0] === key) {\n entry[1] = value;\n } else {\n Object.defineProperty(key, name, {\n value: [ key, value ],\n writable: true\n });\n }\n\n return;\n\n } catch (err) {\n // pass\n }\n }\n\n this._cleanupClosedWindows();\n\n let keys = this.keys;\n let values = this.values;\n let index = safeIndexOf(keys, key);\n\n if (index === -1) {\n keys.push(key);\n values.push(value);\n } else {\n values[index] = value;\n }\n }\n\n get(key : K) : V | void {\n\n if (!key) {\n throw new Error(`WeakMap expected key`);\n }\n\n let weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n if (weakmap.has(key)) {\n return weakmap.get(key);\n }\n \n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (this.isSafeToReadWrite(key)) {\n try {\n let entry = key[this.name];\n\n if (entry && entry[0] === key) {\n return entry[1];\n }\n\n return;\n } catch (err) {\n // pass\n }\n }\n\n this._cleanupClosedWindows();\n\n let keys = this.keys;\n let index = safeIndexOf(keys, key);\n\n if (index === -1) {\n return;\n }\n\n return this.values[index];\n }\n\n delete(key : K) {\n\n if (!key) {\n throw new Error(`WeakMap expected key`);\n }\n\n let weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n weakmap.delete(key);\n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (this.isSafeToReadWrite(key)) {\n try {\n let entry = key[this.name];\n\n if (entry && entry[0] === key) {\n entry[0] = entry[1] = undefined;\n }\n } catch (err) {\n // pass\n }\n }\n\n this._cleanupClosedWindows();\n\n let keys = this.keys;\n let index = safeIndexOf(keys, key);\n\n if (index !== -1) {\n keys.splice(index, 1);\n this.values.splice(index, 1);\n }\n }\n\n has(key : K) : boolean {\n\n if (!key) {\n throw new Error(`WeakMap expected key`);\n }\n\n let weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n if (weakmap.has(key)) {\n return true;\n }\n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (this.isSafeToReadWrite(key)) {\n try {\n let entry = key[this.name];\n\n if (entry && entry[0] === key) {\n return true;\n }\n\n return false;\n } catch (err) {\n // pass\n }\n }\n\n this._cleanupClosedWindows();\n\n let index = safeIndexOf(this.keys, key);\n return index !== -1;\n }\n\n getOrSet(key : K, getter : () => V) : V {\n if (this.has(key)) {\n // $FlowFixMe\n return this.get(key);\n }\n\n let value = getter();\n this.set(key, value);\n return value;\n }\n}\n","/* @flow */\n\nexport { CrossDomainSafeWeakMap as WeakMap } from './weakmap';\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst P24_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#d03238',\n secondary: '#b3b1b1'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#d03238',\n secondary: '#b3b1b1'\n }\n};\n\nexport function p24Logo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!P24_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } p24 logo available`);\n }\n\n const { primary, secondary } = P24_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst SOFORT_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#2C2E2F',\n secondary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#EB6F93',\n secondary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#EB6F93',\n secondary: '#FFFFFF'\n }\n};\n\nexport function sofortLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!SOFORT_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } sofort logo available`);\n }\n\n const { primary, secondary } = SOFORT_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst IDEAL_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff',\n tertiary: '#2C2E2F'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#000000',\n secondary: '#FFFFFF',\n tertiary: '#CD0067'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#000000',\n secondary: '#FFFFFF',\n tertiary: '#CD0067'\n }\n};\n\nexport function idealLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!IDEAL_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } ideal logo available`);\n }\n\n const { primary, secondary, tertiary } = IDEAL_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst GIROPAY_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#000000',\n tertiary: '#2C2E2F'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#FFFFFF',\n secondary: '#003A7D',\n tertiary: '#ED1C24'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#FFFFFF',\n secondary: '#003A7D',\n tertiary: '#ED1C24'\n }\n};\n\nexport function giropayLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!GIROPAY_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } giropay logo available`);\n }\n\n const { primary, secondary, tertiary } = GIROPAY_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst EPS_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff',\n tertiary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#71706F',\n secondary: '#FFFFFF',\n tertiary: '#C8036F'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#71706F',\n secondary: '#FFFFFF',\n tertiary: '#C8036F'\n }\n};\n\nexport function epsLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!EPS_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } eps logo available`);\n }\n\n const { primary, secondary, tertiary } = EPS_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst MYBANK_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff',\n tertiary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#1A4B67',\n secondary: '#00C0EE',\n tertiary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#1A4B67',\n secondary: '#00C0EE',\n tertiary: '#FFFFFF'\n }\n};\n\nexport function mybankLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!MYBANK_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } mybank logo available`);\n }\n\n const { primary, secondary, tertiary } = MYBANK_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst BANCONTACT_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#1A4B67',\n secondary: '#00C0EE'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#005498',\n secondary: '#FFD800'\n }\n};\n\nexport function bancontactLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!BANCONTACT_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } bancontact logo available`);\n }\n\n const { primary, secondary } = BANCONTACT_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst PAYU_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.DEFAULT ]: {\n primary: '#A6d71c',\n secondary: '#3C932A',\n tertiary: '#6CC62E',\n quaternary: '#278D30'\n },\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#FFFFFF',\n secondary: '#FFFFFF',\n tertiary: '#000000',\n quaternary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#A6d71c',\n secondary: '#3C932A',\n tertiary: '#6CC62E',\n quaternary: '#278D30'\n }\n};\n\nexport function payuLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!PAYU_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } payu logo available`);\n }\n\n const { primary, secondary, tertiary, quaternary } = PAYU_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst VERKKOPANKKI_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#FFFFFF',\n secondary: '#FFFFFF',\n tertiary: '#000000',\n quaternary: '#000000',\n quinary: '#FFFFFF',\n senary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#FFFFFF',\n secondary: '#CACCC8',\n tertiary: '#2D59A1',\n quaternary: '#1F3364',\n quinary: '#4E4E4E',\n senary: '#1B4482'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#FFFFFF',\n secondary: '#CACCC8',\n tertiary: '#2D59A1',\n quaternary: '#1F3364',\n quinary: '#4E4E4E',\n senary: '#1B4482'\n }\n};\n\nexport function verkkopankkiLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!VERKKOPANKKI_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } verkkopankki logo available`);\n }\n\n const { primary, secondary, tertiary, quaternary, quinary, senary } = VERKKOPANKKI_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst BLIK_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#FFFFFF',\n secondary: '#FFFFFF',\n tertiary: '#000000',\n quaternary: '#000000',\n quinary: '#000000',\n senary: '#000000'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#4D4D4F',\n secondary: '#000000',\n tertiary: '#FF0000',\n quaternary: '#E83E49',\n quinary: '#FF00FF',\n senary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#4D4D4F',\n secondary: '#000000',\n tertiary: '#FF0000',\n quaternary: '#E83E49',\n quinary: '#FF00FF',\n senary: '#FFFFFF'\n }\n};\n\nexport function blikLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!BLIK_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } blik logo available`);\n }\n\n const { primary, secondary, tertiary, quaternary, quinary, senary } = BLIK_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst TRUSTLY_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#FFFFFF',\n secondary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#020202',\n secondary: '#64CC07'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#020202',\n secondary: '#64CC07'\n }\n};\n\nexport function trustlyLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!TRUSTLY_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } trustly logo available`);\n }\n\n const { primary, secondary } = TRUSTLY_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst MAXIMA_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#004A91',\n secondary: '#ED1921'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#004A91',\n secondary: '#ED1921'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#004A91',\n secondary: '#ED1921'\n }\n};\n\nexport function maximaLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!MAXIMA_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } maxima logo available`);\n }\n\n const { primary, secondary } = MAXIMA_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst BOLETO_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#1A1919',\n secondary: '#FFFFFE'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#1A1919',\n secondary: '#FFFFFE'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#1A1919',\n secondary: '#FFFFFE'\n }\n};\n\nexport function boletoLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!BOLETO_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } boleto logo available`);\n }\n\n const { primary, secondary } = BOLETO_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst OXXO_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#EC1D24',\n secondary: '#EDA42D'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#EC1D24',\n secondary: '#EDA42D'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#EC1D24',\n secondary: '#EDA42D'\n }\n};\n\nexport function oxxoLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!OXXO_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } oxxo logo available`);\n }\n\n const { primary, secondary } = OXXO_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst PAYPAL_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.BLUE ]: {\n primary: '#003087',\n secondary: '#009cde'\n },\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#333030',\n secondary: '#636363'\n }\n};\n\nexport function paypalLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!PAYPAL_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } paypal logo available`);\n }\n\n const { primary, secondary } = PAYPAL_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n );\n}\n","\n/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR, COUNTRY } from '../../constants';\nimport type { LocaleType } from '../../types';\n\nconst CREDIT_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.BLUE ]: {\n primary: '#003087',\n secondary: '#009cde'\n },\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#333030',\n secondary: '#636363'\n }\n};\n\nexport function creditLogo({ logoColor, locale } : { logoColor : $Values, locale? : LocaleType }) : JsxHTMLNode {\n\n if (!CREDIT_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } credit logo available`);\n }\n\n const { country } = locale || {};\n const { primary } = CREDIT_LOGO_COLORS[logoColor];\n\n switch (country) {\n case COUNTRY.DE:\n return (\n \n \n \n \n \n \n \n );\n default:\n return (\n \n \n \n \n \n \n \n \n );\n\n }\n}\n","/* @flow */\n\nimport { BUTTON_LOGO, BUTTON_LOGO_COLOR } from '../../constants';\n\nimport { p24Logo } from './p24';\nimport { sofortLogo } from './sofort';\nimport { idealLogo } from './ideal';\nimport { giropayLogo } from './giropay';\nimport { epsLogo } from './eps';\nimport { mybankLogo } from './mybank';\nimport { bancontactLogo } from './bancontact';\nimport { payuLogo } from './payu';\nimport { verkkopankkiLogo } from './verkkopankki';\nimport { blikLogo } from './blik';\nimport { trustlyLogo } from './trustly';\nimport { maximaLogo } from './maxima';\nimport { boletoLogo } from './boleto';\nimport { oxxoLogo } from './oxxo';\nimport pp_white from './pp_white.svg';\nimport pp_blue from './pp_blue.svg';\nimport pp_black from './pp_black.svg';\nimport { paypalLogo } from './paypal';\nimport { creditLogo } from './credit';\nimport venmo_white from './venmo_white.svg';\nimport itau from './itau.svg';\nimport venmo_blue from './venmo_blue.svg';\nimport elv from './elv.svg';\nimport elv_white from './elv_white.svg';\n\nexport const fundingLogos = {\n\n [ BUTTON_LOGO.PP ]: {\n [ BUTTON_LOGO_COLOR.WHITE ]: pp_white,\n [ BUTTON_LOGO_COLOR.BLUE ]: pp_blue,\n [ BUTTON_LOGO_COLOR.BLACK ]: pp_black\n },\n\n [ BUTTON_LOGO.PAYPAL ]: paypalLogo,\n\n [ BUTTON_LOGO.CREDIT ]: creditLogo,\n\n [ BUTTON_LOGO.VENMO ]: {\n [ BUTTON_LOGO_COLOR.WHITE ]: venmo_white,\n [ BUTTON_LOGO_COLOR.BLUE ]: venmo_blue\n },\n [ BUTTON_LOGO.ITAU ]: {\n [ BUTTON_LOGO_COLOR.WHITE ]: itau\n },\n\n [ BUTTON_LOGO.IDEAL ]: idealLogo,\n\n [ BUTTON_LOGO.ELV ]: {\n [ BUTTON_LOGO_COLOR.ANY ]: elv,\n [ BUTTON_LOGO_COLOR.WHITE ]: elv_white\n },\n\n [ BUTTON_LOGO.BANCONTACT ]: bancontactLogo,\n\n [ BUTTON_LOGO.GIROPAY ]: giropayLogo,\n\n [ BUTTON_LOGO.SOFORT ]: sofortLogo,\n\n [ BUTTON_LOGO.EPS ]: epsLogo,\n\n [ BUTTON_LOGO.MYBANK ]: mybankLogo,\n\n [ BUTTON_LOGO.P24 ]: p24Logo,\n\n [ BUTTON_LOGO.PAYU ]: payuLogo,\n\n [ BUTTON_LOGO.VERKKOPANKKI ]: verkkopankkiLogo,\n\n [ BUTTON_LOGO.BLIK ]: blikLogo,\n\n [ BUTTON_LOGO.TRUSTLY ]: trustlyLogo,\n\n [ BUTTON_LOGO.MAXIMA ]: maximaLogo,\n\n [ BUTTON_LOGO.BOLETO ]: boletoLogo,\n\n [ BUTTON_LOGO.OXXO ]: oxxoLogo\n\n};\n","/* @flow */\n\nimport { CARD } from '../../constants';\n\nimport visa from './visa.svg';\nimport amex from './amex.svg';\nimport mastercard from './mastercard.svg';\nimport maestro from './maestro.svg';\nimport discover from './discover.svg';\nimport hiper from './hiper.svg';\nimport elo from './elo.svg';\nimport jcb from './jcb.svg';\nimport cup from './cup.svg';\n\nexport const cardLogos = {\n [ CARD.VISA ]: visa,\n [ CARD.AMEX ]: amex,\n [ CARD.MASTERCARD ]: mastercard,\n [ CARD.MAESTRO ]: maestro,\n [ CARD.DISCOVER ]: discover,\n [ CARD.HIPER ]: hiper,\n [ CARD.ELO ]: elo,\n [ CARD.JCB ]: jcb,\n [ CARD.CUP ]: cup\n};\n","/* @flow */\n\nexport * from './fundingLogos';\nexport * from './cardLogos';\n","/* @flow */\n\nimport { config } from '../config';\n\nimport { uniqueID, isLocalStorageEnabled } from './util';\nimport { getQueryParam } from './dom';\nimport { isPayPalDomain } from './security';\n\nconst LOCAL_STORAGE_KEY = '__paypal_storage__';\nconst SESSION_KEY = '__paypal_session__';\nconst GLOBAL_KEY = '__paypal_global__';\n\nlet accessedStorage;\n\nexport function getStorageState(handler : (storage : Object) => T) : T {\n\n const localStorageEnabled = isLocalStorageEnabled();\n let storage;\n\n if (accessedStorage) {\n storage = accessedStorage;\n }\n\n if (!storage && localStorageEnabled) {\n const rawStorage = window.localStorage.getItem(LOCAL_STORAGE_KEY);\n\n if (rawStorage) {\n storage = JSON.parse(rawStorage);\n }\n }\n\n if (!storage) {\n storage = window[LOCAL_STORAGE_KEY];\n }\n\n if (!storage) {\n storage = {\n id: uniqueID()\n };\n }\n\n if (!storage.id) {\n storage.id = uniqueID();\n }\n\n accessedStorage = storage;\n\n const result = handler(storage);\n\n if (localStorageEnabled) {\n window.localStorage.setItem(LOCAL_STORAGE_KEY, JSON.stringify(storage));\n } else {\n window[LOCAL_STORAGE_KEY] = storage;\n }\n\n accessedStorage = null;\n\n return result;\n}\n\nexport function getStorageID() : string {\n return getStorageState(storage => storage.id);\n}\n\nexport function getSession(handler : (state : Object) => T) : T {\n return getStorageState(storage => {\n\n let session = storage[SESSION_KEY];\n const now = Date.now();\n\n if (session && ((now - session.created) > config.session_uid_lifetime)) {\n session = null;\n }\n\n if (!session) {\n session = {\n guid: uniqueID(),\n created: now\n };\n }\n\n storage[SESSION_KEY] = session;\n\n return handler(session);\n });\n}\n\nexport function getSessionState(handler : (state : Object) => T) : T {\n return getSession(session => {\n session.state = session.state || {};\n return handler(session.state);\n });\n}\n\nexport function getSessionID() : string {\n\n const xprops = window.xprops;\n\n if (xprops && xprops.sessionID) {\n return xprops.sessionID;\n }\n\n const querySessionID = getQueryParam('sessionID');\n\n if (isPayPalDomain() && querySessionID) {\n return querySessionID;\n }\n\n return getSession(session => session.guid);\n}\n\nexport function getButtonSessionID() : ?string {\n\n if (window.xprops && window.xprops.buttonSessionID) {\n return window.xprops.buttonSessionID;\n }\n\n const querySessionID = getQueryParam('buttonSessionID');\n\n if (isPayPalDomain() && querySessionID) {\n return querySessionID;\n }\n}\n\nexport function getGlobalState(handler : (state : Object) => T) : T {\n window[GLOBAL_KEY] = window[GLOBAL_KEY] || {};\n return handler(window[GLOBAL_KEY]);\n}\n","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object.keys(descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object.defineProperty(target, property, desc);\n desc = null;\n }\n\n return desc;\n}","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { on } from 'post-robot/src';\nimport { type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { copyProp, eventEmitter, type EventEmitterType, stringifyError, noop } from '../lib';\nimport type { CancelableType } from '../types';\n\nimport type { Component } from './component';\n\ntype CleanupType = {\n set : (string, T) => T, // eslint-disable-line no-undef\n register : (string | Function, ?Function) => void,\n hasTasks : () => boolean,\n all : () => ZalgoPromise,\n run : (string) => ZalgoPromise\n};\n\nfunction cleanup(obj : Object) : CleanupType {\n\n let tasks = [];\n let cleaned = false;\n\n return {\n\n set(name : string, item : T) : T {\n\n if (cleaned) {\n return item;\n }\n\n obj[name] = item;\n this.register(() => {\n delete obj[name];\n });\n return item;\n },\n\n register(name : string | Function, method : ?Function) {\n\n if (typeof name === 'function') {\n method = name;\n name = '';\n }\n\n if (typeof method !== 'function') {\n throw new TypeError(`Expected to be passed function to clean.register`);\n }\n\n if (cleaned) {\n method();\n return;\n }\n\n tasks.push({\n complete: false,\n\n name,\n\n run() {\n\n if (this.complete) {\n return;\n }\n\n this.complete = true;\n\n if (method) {\n method();\n }\n }\n });\n },\n\n hasTasks() : boolean {\n return Boolean(tasks.filter(item => !item.complete).length);\n },\n\n all() : ZalgoPromise {\n let results = [];\n\n cleaned = true;\n\n while (tasks.length) {\n results.push(tasks.pop().run());\n }\n\n return ZalgoPromise.all(results).then(() => { /* pass */ });\n },\n\n run(name : string) : ZalgoPromise {\n let results = [];\n\n for (let item of tasks) {\n if (item.name === name) {\n results.push(item.run());\n }\n }\n\n return ZalgoPromise.all(results).then(noop);\n }\n };\n}\n\n\n/* Base Component\n --------------\n\n Methods that are common between child and parent components, but are not generic or uncoupled enough to live in\n a separate library.\n*/\n\nexport class BaseComponent

{\n\n clean : CleanupType\n event : EventEmitterType\n component : Component

\n\n constructor() {\n this.clean = cleanup(this);\n this.event = eventEmitter();\n }\n\n addProp(options : Object, name : string, def : mixed) {\n copyProp(options, this, name, def);\n }\n\n on(eventName : string, handler : () => void) : CancelableType {\n return this.event.on(eventName, handler);\n }\n\n listeners() {\n throw new Error(`Expected listeners to be implemented`);\n }\n\n error(err : mixed) : ZalgoPromise {\n throw new Error(`Expected error to be implemented - got ${ stringifyError(err) }`);\n }\n\n /* Listen\n ------\n\n Listen for any post messages defined in this.listeners(). All (most) of our communication is done via\n post-messages, so this sets up an easy way to create a collection of listeners in one go.\n\n All post-messaging is done using post-robot.\n */\n\n listen(win : CrossDomainWindowType, domain : string | RegExp) {\n\n if (!win) {\n throw this.component.createError(`window to listen to not set`);\n }\n\n if (!domain) {\n throw new Error(`Must pass domain to listen to`);\n }\n\n if (!this.listeners) {\n return;\n }\n\n let listeners = this.listeners();\n\n for (let listenerName of Object.keys(listeners)) {\n\n let name = listenerName.replace(/^zoid_/, '');\n\n let errorHandler = (err) => {\n this.error(err);\n };\n\n let listener = on(listenerName, { window: win, domain, errorHandler }, ({ source, data }) => {\n this.component.log(`listener_${ name }`);\n return listeners[listenerName].call(this, source, data);\n });\n\n let errorListener = on(listenerName, { window: win, errorHandler }, ({ origin }) => {\n this.component.logError(`unexpected_listener_${ name }`, { origin, domain: domain.toString() });\n this.error(new Error(`Unexpected ${ name } message from domain ${ origin } -- expected message from ${ domain.toString() }`));\n });\n\n this.clean.register(() => {\n listener.cancel();\n errorListener.cancel();\n });\n }\n }\n}\n","/* @flow */\n\nimport { getOpener, getTop, getParent, getNthParentFromTop, getAllFramesInWindow, getAncestor, getDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport base32 from 'hi-base32';\n\nimport { memoize, uniqueID, globalFor, stringifyError } from '../lib';\nimport { WINDOW_REFERENCES } from '../constants';\nimport type { DimensionsType, PositionType } from '../types';\n\n\nfunction normalize(str : string) : string {\n return str.replace(/^[^a-z0-9A-Z]+|[^a-z0-9A-Z]+$/g, '').replace(/[^a-z0-9A-Z]+/g, '_');\n}\n\nfunction encode(str : string) : string {\n return base32.encode(str).replace(/\\=/g, '').toLowerCase(); // eslint-disable-line no-useless-escape\n}\n\nfunction decode(str : string) : string {\n return base32.decode(str.toUpperCase());\n}\n\n\n/* Build Child Window Name\n -----------------------\n\n Build a name for our child window. This should identify the following things to the child:\n\n - That the window was created by, and is owned by zoid\n - The name of the child's parent. This is so the child can identify which window created it, even when we do a\n renderTo, in which case the true parent may actually be a sibling frame in the window hierarchy\n\n We base64 encode the window name so IE doesn't die when it encounters any characters that it doesn't like.\n*/\n\nexport function buildChildWindowName(name : string, version : string, options : Object = {}) : string {\n\n options.id = uniqueID();\n options.domain = getDomain(window);\n\n let encodedName = normalize(name);\n let encodedVersion = normalize(version);\n let encodedOptions = encode(JSON.stringify(options));\n\n if (!encodedName) {\n throw new Error(`Invalid name: ${ name } - must contain alphanumeric characters`);\n }\n\n if (!encodedVersion) {\n throw new Error(`Invalid version: ${ version } - must contain alphanumeric characters`);\n }\n\n return [\n 'xcomponent',\n encodedName,\n encodedVersion,\n encodedOptions,\n ''\n ].join('__');\n}\n\nexport let isZoidComponentWindow = memoize(() => {\n if (!window.name) {\n return false;\n }\n\n let [ zoidcomp ] = window.name.split('__');\n\n if (zoidcomp !== 'xcomponent') {\n return false;\n }\n\n return true;\n});\n\n/* Parse Window Name\n -----------------\n\n The inverse of buildChildWindowName. Base64 decodes and json parses the window name to get the original props\n passed down, including the parent name. Only accepts window names built by zoid\n*/\n\nexport let getComponentMeta = memoize(() => {\n\n if (!window.name) {\n throw new Error(`Can not get component meta without window name`);\n }\n\n let [ zoidcomp, name, version, encodedOptions ] = window.name.split('__');\n\n if (zoidcomp !== 'xcomponent') {\n throw new Error(`Window not rendered by zoid - got ${ zoidcomp }`);\n }\n\n let componentMeta;\n\n try {\n componentMeta = JSON.parse(decode(encodedOptions));\n } catch (err) {\n throw new Error(`Can not decode component-meta: ${ encodedOptions } ${ stringifyError(err) }`);\n }\n\n componentMeta.name = name;\n componentMeta.version = version.replace(/_/g, '.');\n\n return componentMeta;\n});\n\nexport function getParentDomain() : string {\n return getComponentMeta().domain; // How does this work for renderTo..?\n}\n\nfunction getWindowByRef({ ref, uid, distance } : { ref : string, uid : string, distance : number }) : CrossDomainWindowType {\n\n let result;\n\n if (ref === WINDOW_REFERENCES.OPENER) {\n result = getOpener(window);\n\n } else if (ref === WINDOW_REFERENCES.TOP) {\n result = getTop(window);\n\n } else if (ref === WINDOW_REFERENCES.PARENT) {\n\n if (distance) {\n result = getNthParentFromTop(window, distance);\n } else {\n result = getParent(window);\n }\n }\n\n if (ref === WINDOW_REFERENCES.GLOBAL) {\n let ancestor = getAncestor(window);\n\n if (ancestor) {\n for (let frame of getAllFramesInWindow(ancestor)) {\n let global = globalFor(frame);\n\n if (global && global.windows && global.windows[uid]) {\n result = global.windows[uid];\n break;\n }\n }\n }\n }\n\n if (!result) {\n throw new Error(`Unable to find window by ref`);\n }\n\n return result;\n}\n\n/* Get Parent Component Window\n ---------------------------\n\n Get the parent component window, which may be different from the actual parent window\n*/\n\nexport let getParentComponentWindow = memoize(() => {\n\n let componentMeta = getComponentMeta();\n\n if (!componentMeta) {\n throw new Error(`Can not get parent component window - window not rendered by zoid`);\n }\n\n return getWindowByRef(componentMeta.componentParent);\n});\n\n\nexport let getParentRenderWindow = memoize(() => {\n\n let componentMeta = getComponentMeta();\n\n if (!componentMeta) {\n throw new Error(`Can not get parent component window - window not rendered by zoid`);\n }\n\n return getWindowByRef(componentMeta.renderParent);\n});\n\n\n/* Get Position\n ------------\n\n Calculate the position for the popup\n\n This is either\n - Specified by the user\n - The center of the screen\n\n I'd love to do this with pure css, but alas... popup windows :(\n*/\n\nexport function getPosition({ width, height } : DimensionsType) : PositionType {\n\n let x = 0;\n let y = 0;\n\n if (width) {\n if (window.outerWidth) {\n x = Math.round((window.outerWidth - width) / 2) + window.screenX;\n } else if (window.screen.width) {\n x = Math.round((window.screen.width - width) / 2);\n }\n }\n\n if (height) {\n if (window.outerHeight) {\n y = Math.round((window.outerHeight - height) / 2) + window.screenY;\n } else if (window.screen.height) {\n y = Math.round((window.screen.height - height) / 2);\n }\n }\n\n return { x, y };\n}\n","/* @flow */\n\nimport { getDomain } from 'cross-domain-utils/src';\n\nimport type { Component } from '../component';\nimport type { BuiltInPropsType, MixedPropDefinitionType } from '../component/props';\n\nexport function normalizeChildProp(component : Component

, props : (BuiltInPropsType & P), key : string, value : T) : ?T {\n\n // $FlowFixMe\n let prop : MixedPropDefinitionType

= component.getProp(key);\n\n if (!prop) {\n if (component.looseProps) {\n return value;\n } else {\n return;\n }\n }\n\n if (typeof prop.childDecorate === 'function') {\n return prop.childDecorate(value);\n }\n\n return value;\n}\n\n\nexport function normalizeChildProps

(component : Component

, props : (BuiltInPropsType & P), origin : string, required : boolean = true) : (BuiltInPropsType & P) {\n\n let result = {};\n\n for (let key of Object.keys(props)) {\n\n let prop = component.getProp(key);\n let value = props[key];\n\n if (prop && prop.sameDomain && origin !== getDomain(window)) {\n continue;\n }\n\n result[key] = normalizeChildProp(component, props, key, value);\n\n if (prop && prop.alias && !result[prop.alias]) {\n result[prop.alias] = value;\n }\n }\n\n if (required) {\n for (let key of component.getPropNames()) {\n if (!props.hasOwnProperty(key)) {\n result[key] = normalizeChildProp(component, props, key, props[key]);\n }\n }\n }\n\n // $FlowFixMe\n return result;\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { flush } from 'beaver-logger/client';\nimport { isSameDomain, matchDomain, getDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { send } from 'post-robot/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { onResize } from 'belter/src';\n\nimport { BaseComponent } from '../base';\nimport { getParentComponentWindow, getComponentMeta, getParentDomain, getParentRenderWindow } from '../window';\nimport { extend, deserializeFunctions, get, stringify,\n globalFor, setLogLevel, getElement, noop, stringifyError } from '../../lib';\nimport { POST_MESSAGE, CONTEXT_TYPES, CLOSE_REASONS, INITIAL_PROPS } from '../../constants';\nimport { RenderError } from '../../error';\nimport type { Component } from '../component';\nimport type { BuiltInPropsType } from '../component/props';\n\nimport { normalizeChildProps } from './props';\n\nexport type ChildExportsType

= {\n updateProps : (props : (BuiltInPropsType & P)) => ZalgoPromise,\n close : () => ZalgoPromise\n};\n\n/* Child Component\n ---------------\n\n This is the portion of code which runs inside the frame or popup window containing the component's implementation.\n\n When the component author calls myComponent.attach(), it creates a new instance of ChildComponent, which is then\n responsible for managing the state and messaging back up to the parent, and providing props for the component to\n utilize.\n*/\n\nexport class ChildComponent

extends BaseComponent

{\n\n component : Component

\n props : BuiltInPropsType & P\n context : string\n\n onPropHandlers : Array<(BuiltInPropsType & P) => void>\n onInit : ZalgoPromise>\n watchingForResize : boolean\n autoResize : { width : boolean, height : boolean, element? : string }\n\n constructor(component : Component

) {\n super();\n this.component = component;\n\n if (!this.hasValidParentDomain()) {\n this.error(new RenderError(`Can not be rendered by domain: ${ this.getParentDomain() }`));\n return;\n }\n\n this.component.log(`construct_child`);\n\n // The child can specify some default props if none are passed from the parent. This often makes integrations\n // a little more seamless, as applicaiton code can call props.foo() without worrying about whether the parent\n // has provided them or not, and fall-back to some default behavior.\n\n this.onPropHandlers = [];\n\n for (let item of [ this.component, window ]) {\n for (let [ name, getter ] of [ [ 'xchild', () => this ], [ 'xprops', () => this.props ] ]) {\n // $FlowFixMe\n Object.defineProperty(item, name, {\n configurable: true,\n get: () => {\n if (!this.props) {\n this.setProps(this.getInitialProps(), getParentDomain());\n }\n // $FlowFixMe\n delete item[name];\n // $FlowFixMe\n item[name] = getter();\n // $FlowFixMe\n return item[name];\n }\n });\n }\n }\n\n this.component.log(`init_child`);\n\n this.setWindows();\n\n // Send an init message to our parent. This gives us an initial set of data to use that we can use to function.\n //\n // For example:\n //\n // - What context are we\n // - What props has the parent specified\n\n this.onInit = this.sendToParent(POST_MESSAGE.INIT, {\n\n exports: this.exports()\n\n }).then(({ origin, data }) => {\n\n this.context = data.context;\n this.setProps(data.props, origin);\n\n this.watchForResize();\n\n return this;\n\n }).catch(err => {\n\n this.error(err);\n throw err;\n });\n }\n\n hasValidParentDomain() : boolean {\n return matchDomain(this.component.allowedParentDomains, this.getParentDomain());\n }\n\n init() : ZalgoPromise> {\n return this.onInit;\n }\n\n getParentDomain() : string {\n return getParentDomain();\n }\n\n onProps(handler : Function) {\n this.onPropHandlers.push(handler);\n }\n\n getParentComponentWindow() : CrossDomainWindowType {\n return getParentComponentWindow();\n }\n\n getParentRenderWindow() : CrossDomainWindowType {\n return getParentRenderWindow();\n }\n\n getInitialProps() : (BuiltInPropsType & P) {\n let componentMeta = getComponentMeta();\n\n let props = componentMeta.props;\n\n if (props.type === INITIAL_PROPS.RAW) {\n props = props.value;\n } else if (props.type === INITIAL_PROPS.UID) {\n\n let parentComponentWindow = getParentComponentWindow();\n\n if (!isSameDomain(parentComponentWindow)) {\n\n if (window.location.protocol === 'file:') {\n throw new Error(`Can not get props from file:// domain`);\n }\n\n throw new Error(`Parent component window is on a different domain - expected ${ getDomain() } - can not retrieve props`);\n }\n\n let global = globalFor(parentComponentWindow);\n\n if (!global) {\n throw new Error(`Can not find global for parent component - can not retrieve props`);\n }\n\n props = JSON.parse(global.props[componentMeta.uid]);\n\n } else {\n throw new Error(`Unrecognized props type: ${ props.type }`);\n }\n\n if (!props) {\n throw new Error(`Initial props not found`);\n }\n \n return deserializeFunctions(props, ({ fullKey, self, args }) => {\n return this.onInit.then(() => {\n let func = get(this.props, fullKey);\n\n if (typeof func !== 'function') {\n throw new TypeError(`Expected ${ fullKey } to be function, got ${ typeof func }`);\n }\n\n return func.apply(self, args);\n });\n });\n }\n\n\n setProps(props : (BuiltInPropsType & P), origin : string, required : boolean = true) {\n // $FlowFixMe\n this.props = this.props || {};\n let normalizedProps = normalizeChildProps(this.component, props, origin, required);\n extend(this.props, normalizedProps);\n if (this.props.logLevel) {\n setLogLevel(this.props.logLevel);\n }\n for (let handler of this.onPropHandlers) {\n handler.call(this, this.props);\n }\n }\n\n\n /* Send to Parent\n --------------\n\n Send a post message to our parent window.\n */\n\n sendToParent(name : string, data : ?Object = {}, options : ?Object = {}) : ZalgoPromise<{ origin : string, source : CrossDomainWindowType, data : Object }> {\n let parentWindow = getParentComponentWindow();\n\n if (!parentWindow) {\n throw new Error(`Can not find parent component window to message`);\n }\n\n this.component.log(`send_to_parent_${ name }`);\n\n return send(parentWindow, name, data, { domain: getParentDomain(), ...options });\n }\n\n\n /* Set Windows\n -----------\n\n Determine the parent window, and the parent component window. Note -- these may be different, if we were\n rendered using renderTo.\n */\n\n setWindows() {\n\n\n // Ensure we do not try to .attach() multiple times for the same component on the same page\n\n if (window.__activeZoidComponent__) {\n throw this.component.createError(`Can not attach multiple components to the same window`);\n }\n\n window.__activeZoidComponent__ = this;\n\n // Get the direct parent window\n\n if (!getParentComponentWindow()) {\n throw this.component.createError(`Can not find parent window`);\n }\n\n let componentMeta = getComponentMeta();\n\n if (componentMeta.tag !== this.component.tag) {\n throw this.component.createError(`Parent is ${ componentMeta.tag } - can not attach ${ this.component.tag }`);\n }\n\n // Note -- getting references to other windows is probably one of the hardest things to do. There's basically\n // only a few ways of doing it:\n //\n // - The window is a direct parent, in which case you can use window.parent or window.opener\n // - The window is an iframe owned by you or one of your parents, in which case you can use window.frames\n // - The window sent you a post-message, in which case you can use event.source\n //\n // If we didn't rely on winProps.parent here from the window name, we'd have to relay all of our messages through\n // our actual parent. Which is no fun at all, and pretty error prone even with the help of post-robot. So this\n // is the lesser of two evils until browsers give us something like getWindowByName(...)\n\n // If the parent window closes, we need to close ourselves. There's no point continuing to run our component\n // if there's no parent to message to.\n\n this.watchForClose();\n }\n\n watchForClose() {\n window.addEventListener('unload', () => this.checkClose());\n }\n\n enableAutoResize({ width = true, height = true } : { width : boolean, height : boolean } = {}) {\n this.autoResize = { width, height };\n this.watchForResize();\n }\n\n getAutoResize() : { width : boolean, height : boolean, element : HTMLElement } {\n\n let width = false;\n let height = false;\n\n let autoResize = this.autoResize || this.component.autoResize;\n\n if (typeof autoResize === 'object') {\n width = Boolean(autoResize.width);\n height = Boolean(autoResize.height);\n } else if (autoResize) {\n width = true;\n height = true;\n }\n\n let element;\n\n if (autoResize.element) {\n element = getElement(autoResize.element);\n } else {\n element = document.body;\n }\n\n // $FlowFixMe\n return { width, height, element };\n }\n\n watchForResize() : ?ZalgoPromise {\n\n let { width, height, element } = this.getAutoResize();\n\n if (!width && !height) {\n return;\n }\n\n if (this.context === CONTEXT_TYPES.POPUP) {\n return;\n }\n\n if (this.watchingForResize) {\n return;\n }\n\n this.watchingForResize = true;\n \n onResize(element, ({ width: newWidth, height: newHeight }) => {\n this.resize(width ? newWidth : undefined, height ? newHeight : undefined);\n }, { width, height });\n }\n\n\n exports() : ChildExportsType

{\n\n let self = this;\n\n return {\n updateProps(props : (BuiltInPropsType & P)) : ZalgoPromise {\n return ZalgoPromise.try(() => self.setProps(props, this.origin, false));\n },\n\n close() : ZalgoPromise {\n return ZalgoPromise.try(() => self.destroy());\n }\n };\n }\n\n\n /* Resize\n ------\n\n Resize the child window. Must be done on a user action like a click if we're in a popup\n */\n\n resize(width : ?number, height : ?number) : ZalgoPromise {\n return ZalgoPromise.resolve().then(() => {\n\n this.component.log(`resize`, { width: stringify(width), height: stringify(height) });\n\n if (this.context === CONTEXT_TYPES.POPUP) {\n return;\n }\n\n return this.sendToParent(POST_MESSAGE.RESIZE, { width, height }).then(noop);\n });\n }\n\n /* Hide\n ----\n\n Hide the window and any parent template\n */\n\n hide() : ZalgoPromise {\n return this.sendToParent(POST_MESSAGE.HIDE).then(noop);\n }\n\n show() : ZalgoPromise {\n return this.sendToParent(POST_MESSAGE.SHOW).then(noop);\n }\n\n userClose() : void {\n return this.close(CLOSE_REASONS.USER_CLOSED);\n }\n\n\n /* Close\n -----\n\n Close the child window\n */\n\n close(reason : string = CLOSE_REASONS.CHILD_CALL) {\n\n this.component.log(`close_child`);\n\n // Ask our parent window to close us\n\n this.sendToParent(POST_MESSAGE.CLOSE, { reason });\n }\n\n checkClose() {\n this.sendToParent(POST_MESSAGE.CHECK_CLOSE, {}, { fireAndForget: true });\n }\n\n\n destroy() : ZalgoPromise {\n return flush().then(() => {\n window.close();\n });\n }\n\n\n /* Focus\n -----\n\n Focus the child window. Must be done on a user action like a click\n */\n\n focus() {\n this.component.log(`focus`);\n\n window.focus();\n }\n\n\n /* Error\n -----\n\n Send an error back to the parent\n */\n\n error(err : mixed) : ZalgoPromise {\n\n let stringifiedError = stringifyError(err);\n\n this.component.logError(`error`, { error: stringifiedError });\n\n return this.sendToParent(POST_MESSAGE.ERROR, {\n error: stringifiedError\n }).then(noop);\n }\n}\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { cleanUpWindow } from 'post-robot/src';\nimport { findFrameByName, isSameDomain } from 'cross-domain-utils/src';\n\nimport { iframe, popup, toCSS, showElement, hideElement,\n destroyElement, normalizeDimension, watchElementForClose,\n awaitFrameWindow, addClass, removeClass, noop } from '../../lib';\nimport { CONTEXT_TYPES, DELEGATE, CLOSE_REASONS, CLASS_NAMES, DEFAULT_DIMENSIONS } from '../../constants';\nimport { getPosition, getParentComponentWindow } from '../window';\n\n\nexport type ContextDriverType = {\n\n focusable : boolean,\n renderedIntoContainerTemplate : boolean,\n allowResize : boolean,\n openOnClick : boolean,\n needsBridge : boolean,\n\n open : (?string) => ZalgoPromise,\n resize : (?(number | string), ?(number | string)) => void,\n show : () => void,\n hide : () => void,\n loadUrl : (string) => void,\n\n delegateOverrides : {\n [string] : string | Function\n },\n\n openPrerender : () => ZalgoPromise,\n switchPrerender? : () => void\n};\n\n/* Render Drivers\n --------------\n\n There are various differences in how we treat:\n\n - Opening frames and windows\n - Rendering up to the parent\n - Resizing\n - etc.\n\n based on the context we're rendering to.\n\n These render drivers split this functionality out in a driver pattern, so our component code doesn't bunch up into a\n series of if-popup-then-else-if-iframe code.\n*/\n\nexport let RENDER_DRIVERS : { [string] : ContextDriverType } = {};\n\n// Iframe context is rendered inline on the page, without any kind of parent template. It's the one context that is designed\n// to feel like a native element on the page.\n\nRENDER_DRIVERS[CONTEXT_TYPES.IFRAME] = {\n\n focusable: false,\n renderedIntoContainerTemplate: true,\n allowResize: true,\n openOnClick: false,\n needsBridge: false,\n\n open(url : ?string) : ZalgoPromise {\n\n let attributes = this.component.attributes.iframe || {};\n\n this.iframe = iframe({\n url,\n attributes: {\n name: this.childWindowName,\n title: this.component.name,\n scrolling: this.component.scrolling ? 'yes' : 'no',\n ...attributes\n },\n class: [\n CLASS_NAMES.COMPONENT_FRAME,\n CLASS_NAMES.INVISIBLE\n ]\n }, this.element);\n\n return awaitFrameWindow(this.iframe).then(frameWindow => {\n\n this.window = frameWindow;\n\n let detectClose = () => {\n return ZalgoPromise.try(() => {\n return this.props.onClose(CLOSE_REASONS.CLOSE_DETECTED);\n }).finally(() => {\n return this.destroy();\n });\n };\n\n let iframeWatcher = watchElementForClose(this.iframe, detectClose);\n let elementWatcher = watchElementForClose(this.element, detectClose);\n\n this.clean.register('destroyWindow', () => {\n\n iframeWatcher.cancel();\n elementWatcher.cancel();\n\n cleanUpWindow(this.window);\n\n delete this.window;\n\n if (this.iframe) {\n destroyElement(this.iframe);\n delete this.iframe;\n }\n });\n });\n },\n\n openPrerender() : ZalgoPromise {\n\n let attributes = this.component.attributes.iframe || {};\n\n this.prerenderIframe = iframe({\n attributes: {\n name: `__prerender__${ this.childWindowName }`,\n scrolling: this.component.scrolling ? 'yes' : 'no',\n ...attributes\n },\n class: [\n CLASS_NAMES.PRERENDER_FRAME,\n CLASS_NAMES.VISIBLE\n ]\n }, this.element);\n\n return awaitFrameWindow(this.prerenderIframe).then(prerenderFrameWindow => {\n\n this.prerenderWindow = prerenderFrameWindow;\n\n this.clean.register('destroyPrerender', () => {\n\n if (this.prerenderIframe) {\n destroyElement(this.prerenderIframe);\n delete this.prerenderIframe;\n }\n });\n });\n },\n\n switchPrerender() {\n\n addClass(this.prerenderIframe, CLASS_NAMES.INVISIBLE);\n removeClass(this.prerenderIframe, CLASS_NAMES.VISIBLE);\n\n addClass(this.iframe, CLASS_NAMES.VISIBLE);\n removeClass(this.iframe, CLASS_NAMES.INVISIBLE);\n\n setTimeout(() => {\n if (this.prerenderIframe) {\n destroyElement(this.prerenderIframe);\n }\n }, 1000);\n },\n\n delegateOverrides: {\n\n openContainer: DELEGATE.CALL_DELEGATE,\n destroyComponent: DELEGATE.CALL_DELEGATE,\n destroyContainer: DELEGATE.CALL_DELEGATE,\n cancelContainerEvents: DELEGATE.CALL_DELEGATE,\n createPrerenderTemplate: DELEGATE.CALL_DELEGATE,\n elementReady: DELEGATE.CALL_DELEGATE,\n showContainer: DELEGATE.CALL_DELEGATE,\n showComponent: DELEGATE.CALL_DELEGATE,\n hideContainer: DELEGATE.CALL_DELEGATE,\n hideComponent: DELEGATE.CALL_DELEGATE,\n hide: DELEGATE.CALL_DELEGATE,\n show: DELEGATE.CALL_DELEGATE,\n resize: DELEGATE.CALL_DELEGATE,\n loadUrl: DELEGATE.CALL_DELEGATE,\n hijackSubmit: DELEGATE.CALL_DELEGATE,\n openPrerender: DELEGATE.CALL_DELEGATE,\n switchPrerender: DELEGATE.CALL_DELEGATE,\n\n renderTemplate: DELEGATE.CALL_ORIGINAL,\n openContainerFrame: DELEGATE.CALL_ORIGINAL,\n getOutlet: DELEGATE.CALL_ORIGINAL,\n\n open(original : () => ZalgoPromise, override : () => ZalgoPromise) : () => ZalgoPromise {\n return function overrideOpen() : ZalgoPromise {\n return override.apply(this, arguments).then(() => {\n this.clean.set('window', findFrameByName(getParentComponentWindow(), this.childWindowName));\n\n if (!this.window) {\n throw new Error(`Unable to find parent component iframe window`);\n }\n });\n };\n }\n },\n\n resize(width : ?(number | string), height : ?(number | string)) {\n\n if (width) {\n this.container.style.width = toCSS(width);\n this.element.style.width = toCSS(width);\n }\n\n if (height) {\n this.container.style.height = toCSS(height);\n this.element.style.height = toCSS(height);\n }\n },\n\n show() {\n showElement(this.element);\n },\n\n hide() {\n hideElement(this.element);\n },\n\n loadUrl(url : string) {\n this.iframe.setAttribute('src', url);\n }\n};\n\nif (__ZOID__.__POPUP_SUPPORT__) {\n\n // Popup context opens up a centered popup window on the page.\n\n RENDER_DRIVERS[CONTEXT_TYPES.POPUP] = {\n\n focusable: true,\n renderedIntoContainerTemplate: false,\n allowResize: false,\n openOnClick: true,\n needsBridge: true,\n\n open(url : ?string = '') : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n let {\n width = DEFAULT_DIMENSIONS.WIDTH,\n height = DEFAULT_DIMENSIONS.HEIGHT\n } = this.component.dimensions || {};\n\n width = normalizeDimension(width, window.outerWidth);\n height = normalizeDimension(height, window.outerWidth);\n\n let { x, y } = getPosition({ width, height });\n\n let attributes = this.component.attributes.popup || {};\n\n this.window = popup(url || '', {\n name: this.childWindowName,\n width,\n height,\n top: y,\n left: x,\n status: 1,\n toolbar: 0,\n menubar: 0,\n resizable: 1,\n scrollbars: 1,\n ...attributes\n });\n\n this.prerenderWindow = this.window;\n\n this.clean.register('destroyWindow', () => {\n if (this.window) {\n this.window.close();\n cleanUpWindow(this.window);\n delete this.window;\n delete this.prerenderWindow;\n }\n });\n\n this.resize(width, height);\n });\n },\n\n openPrerender() : ZalgoPromise {\n return ZalgoPromise.try(noop);\n },\n\n resize() {\n // pass\n },\n\n hide() {\n throw new Error('Can not hide popup');\n },\n\n show() {\n throw new Error('Can not show popup');\n },\n\n delegateOverrides: {\n\n openContainer: DELEGATE.CALL_DELEGATE,\n destroyContainer: DELEGATE.CALL_DELEGATE,\n\n elementReady: DELEGATE.CALL_DELEGATE,\n\n showContainer: DELEGATE.CALL_DELEGATE,\n showComponent: DELEGATE.CALL_DELEGATE,\n hideContainer: DELEGATE.CALL_DELEGATE,\n hideComponent: DELEGATE.CALL_DELEGATE,\n\n hide: DELEGATE.CALL_DELEGATE,\n show: DELEGATE.CALL_DELEGATE,\n\n cancelContainerEvents: DELEGATE.CALL_DELEGATE,\n\n open: DELEGATE.CALL_ORIGINAL,\n loadUrl: DELEGATE.CALL_ORIGINAL,\n createPrerenderTemplate: DELEGATE.CALL_ORIGINAL,\n destroyComponent: DELEGATE.CALL_ORIGINAL,\n resize: DELEGATE.CALL_ORIGINAL,\n renderTemplate: DELEGATE.CALL_ORIGINAL,\n openContainerFrame: DELEGATE.CALL_ORIGINAL,\n getOutlet: DELEGATE.CALL_ORIGINAL\n },\n\n loadUrl(url : string) {\n\n if (isSameDomain(this.window)) {\n try {\n if (this.window.location && this.window.location.replace) {\n this.window.location.replace(url);\n return;\n }\n } catch (err) {\n // pass\n }\n }\n\n this.window.location = url;\n }\n };\n}\n","/* @flow */\n/* eslint complexity: off */\n\nimport type { Component } from '../component';\nimport type { MixedPropDefinitionType, PropsType } from '../component/props';\n\n// $FlowFixMe\nexport function validateProp(prop : MixedPropDefinitionType

, key : string, value : ?T, props : (PropsType & P), required : boolean = true) {\n\n let hasProp = value !== null && value !== undefined && value !== '';\n\n if (!hasProp) {\n if (required && prop.required !== false && !prop.hasOwnProperty('def')) {\n throw new Error(`Prop is required: ${ key }`);\n }\n\n return;\n }\n\n if (value && typeof value.then === 'function' && prop.promise) {\n return;\n }\n\n if (prop.type === 'function') {\n\n if (!(typeof value === 'function')) {\n throw new TypeError(`Prop is not of type function: ${ key }`);\n }\n\n } else if (prop.type === 'string') {\n\n if (typeof value !== 'string') {\n throw new TypeError(`Prop is not of type string: ${ key }`);\n }\n\n } else if (prop.type === 'object') {\n\n // Since we're sending everything by post-message, everything must be json serializable\n\n if (prop.sendToChild !== false) {\n try {\n JSON.stringify(value);\n } catch (err) {\n throw new Error(`Unable to serialize prop: ${ key }`);\n }\n }\n\n } else if (prop.type === 'number') {\n\n if (isNaN(parseInt(value, 10))) {\n throw new TypeError(`Prop is not a number: ${ key }`);\n }\n }\n\n if (typeof prop.validate === 'function' && value) {\n prop.validate(value, props);\n }\n}\n\n\n/* Validate Props\n --------------\n\n Validate user-defined props. Users can pass props down from the parent into the child component, but first we\n double check the values are what we expect, based on the props spec defined in the original component.\n*/\n\nexport function validateProps

(component : Component

, props : PropsType, required : boolean = true) {\n\n props = props || {};\n\n if (props.env && typeof component.url === 'object' && !component.url[props.env]) {\n throw new Error(`Invalid env: ${ props.env }`);\n }\n\n // Set aliases\n\n for (let key of component.getPropNames()) {\n\n // $FlowFixMe\n let prop = component.getProp(key);\n\n if (prop.alias && props.hasOwnProperty(prop.alias)) {\n\n let value = props[prop.alias];\n delete props[prop.alias];\n\n if (!props[key]) {\n props[key] = value;\n }\n }\n }\n\n // First make sure all of the props we were sent are actually valid prop names\n\n /*\n\n if (!component.looseProps) {\n for (let key of Object.keys(props)) {\n if (component.getPropNames().indexOf(key) === -1) {\n throw component.error(`Invalid prop: ${key}`);\n }\n }\n }\n\n */\n\n // Then loop over the props we expect, and make sure they're all present and valid\n\n for (let key of Object.keys(props)) {\n\n // $FlowFixMe\n let prop : MixedPropDefinitionType

= component.getProp(key);\n let value = props[key];\n\n if (prop) {\n // $FlowFixMe\n validateProp(prop, key, value, props, required);\n }\n }\n\n for (let key of component.getPropNames()) {\n\n // $FlowFixMe\n let prop : MixedPropDefinitionType

= component.getProp(key);\n let value = props[key];\n\n if (prop && !props.hasOwnProperty(key)) {\n validateProp(prop, key, value, props, required);\n }\n }\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { noop, denodeify, once, memoize, promisify, dotify } from '../../lib';\nimport type { Component } from '../component';\nimport type { BuiltInPropsDefinitionType, PropsType, BuiltInPropsType, MixedPropDefinitionType } from '../component/props';\n\nimport type { ParentComponent } from './index';\n\nfunction isDefined(value : ?mixed) : boolean {\n return value !== null && value !== undefined && value !== '';\n}\n\n\n/* Normalize Prop\n --------------\n\n Turn prop into normalized value, using defaults, function options, etc.\n*/\n\n// $FlowFixMe\nexport function normalizeProp(component : Component

, instance : ParentComponent

, props : (PropsType & P), key : string, value : ?T) : ?(ZalgoPromise | T) { // eslint-disable-line complexity\n\n let prop = component.getProp(key);\n\n let resultValue;\n\n if (prop.value) {\n resultValue = prop.value;\n } else if (prop.def && (!props.hasOwnProperty(key) || !isDefined(value))) {\n resultValue = prop.def.call(component, props);\n } else {\n resultValue = value;\n }\n\n if (!resultValue && prop.alias && props[prop.alias]) {\n resultValue = props[prop.alias];\n }\n\n let decorated = false;\n\n if (prop.decorate && resultValue !== null && resultValue !== undefined) {\n resultValue = prop.decorate.call(instance, resultValue, props);\n decorated = true;\n }\n\n let type = prop.type;\n\n if (type === 'boolean') {\n // $FlowFixMe\n resultValue = Boolean(resultValue);\n\n } else if (type === 'function') {\n\n if (!resultValue && prop.noop) {\n // $FlowFixMe\n resultValue = noop;\n\n if (!decorated && prop.decorate) {\n // $FlowFixMe\n resultValue = prop.decorate.call(instance, noop, props);\n }\n }\n\n if (resultValue && typeof resultValue === 'function') {\n\n resultValue = resultValue.bind(instance);\n\n // If prop.denodeify is set, denodeify the function (accepts callback -> returns promise)\n\n if (prop.denodeify) {\n // $FlowFixMe\n resultValue = denodeify(resultValue);\n }\n\n if (prop.promisify) {\n // $FlowFixMe\n resultValue = promisify(resultValue);\n }\n\n // Wrap the function in order to log when it is called\n\n let original = resultValue;\n // $FlowFixMe\n resultValue = function() : mixed {\n component.log(`call_prop_${ key }`);\n return original.apply(this, arguments);\n };\n\n // If prop.once is set, ensure the function can only be called once\n\n if (prop.once) {\n // $FlowFixMe\n resultValue = once(resultValue);\n }\n\n // If prop.memoize is set, ensure the function is memoized (first return resultValue is cached and returned for any future calls)\n\n if (prop.memoize) {\n // $FlowFixMe\n resultValue = memoize(resultValue);\n }\n }\n\n } else if (type === 'string') {\n // pass\n\n } else if (type === 'object') {\n // pass\n\n } else if (type === 'number') {\n if (resultValue !== undefined) {\n // $FlowFixMe\n resultValue = parseInt(resultValue, 10);\n }\n }\n\n // $FlowFixMe\n return resultValue;\n}\n\n\n/* Normalize Props\n ---------------\n\n Turn props into normalized values, using defaults, function options, etc.\n*/\n\nexport function normalizeProps

(component : Component

, instance : ParentComponent

, props : (PropsType & P)) : (BuiltInPropsType & P) {\n\n let result = {};\n\n // $FlowFixMe\n props = props || {};\n\n for (let key of Object.keys(props)) {\n if (component.getPropNames().indexOf(key) !== -1) {\n // $FlowFixMe\n result[key] = normalizeProp(component, instance, props, key, props[key]);\n } else {\n result[key] = props[key];\n }\n }\n\n for (let key of component.getPropNames()) {\n if (!props.hasOwnProperty(key) && (!instance.props || !instance.props.hasOwnProperty(key))) {\n\n // $FlowFixMe\n let normalizedProp = normalizeProp(component, instance, props, key, props[key]);\n\n if (normalizedProp !== undefined) {\n result[key] = normalizedProp;\n }\n }\n }\n\n // $FlowFixMe\n return result;\n}\n\n\n/* Props to Query\n --------------\n\n Turn props into an initial query string to open the component with\n\n string -> string\n bool -> 1\n object -> json\n number -> string\n*/\n\n// $FlowFixMe\nfunction getQueryParam(prop : MixedPropDefinitionType

, key : string, value : T) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (typeof prop.queryParam === 'function') {\n return prop.queryParam(value);\n } else if (typeof prop.queryParam === 'string') {\n return prop.queryParam;\n } else {\n return key;\n }\n });\n}\n\n// $FlowFixMe\nfunction getQueryValue(prop : MixedPropDefinitionType

, key : string, value : T) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (typeof prop.queryValue === 'function') {\n return prop.queryValue(value);\n } else {\n return value;\n }\n });\n}\n\nexport function propsToQuery

(propsDef : BuiltInPropsDefinitionType

, props : (BuiltInPropsType & P)) : { [string] : string } {\n\n let params = {};\n\n return ZalgoPromise.all(Object.keys(props).map(key => {\n\n let prop = propsDef[key];\n\n if (!prop) {\n return; // eslint-disable-line array-callback-return\n }\n\n return ZalgoPromise.resolve().then(() => {\n\n let value = props[key];\n\n if (!value) {\n return;\n }\n\n if (!prop.queryParam) {\n return;\n }\n\n return value;\n\n }).then(value => {\n\n if (!value) {\n return;\n }\n\n return ZalgoPromise.all([\n // $FlowFixMe\n getQueryParam(prop, key, value),\n // $FlowFixMe\n getQueryValue(prop, key, value)\n ]).then(([ queryParam, queryValue ]) => {\n\n let result;\n\n if (typeof queryValue === 'boolean') {\n result = '1';\n } else if (typeof queryValue === 'string') {\n result = queryValue.toString();\n } else if (typeof queryValue === 'function') {\n return;\n } else if (typeof queryValue === 'object' && queryValue !== null) {\n\n if (prop.serialization === 'json') {\n result = JSON.stringify(queryValue);\n } else {\n result = dotify(queryValue, key);\n\n for (let dotkey of Object.keys(result)) {\n params[dotkey] = result[dotkey];\n }\n\n return;\n }\n\n } else if (typeof queryValue === 'number') {\n result = queryValue.toString();\n }\n\n params[queryParam] = result;\n });\n });\n\n })).then(() => {\n Object.keys(params).forEach(key => {\n params[key] = escape(params[key]);\n });\n return params;\n });\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { flush } from 'beaver-logger/client';\nimport { send, bridge } from 'post-robot/src';\nimport { isSameDomain, isWindowClosed, isTop, isSameTopWindow, matchDomain, getDistanceFromTop, onCloseWindow, getDomain, assertSameDomain, type CrossDomainWindowType, type SameDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getElementSafe, onResize } from 'belter/src';\n\nimport { BaseComponent } from '../base';\nimport { buildChildWindowName, getParentDomain, getParentComponentWindow } from '../window';\nimport { addEventListener, uniqueID, elementReady, writeElementToWindow,\n noop, showAndAnimate, animateAndHide, showElement, hideElement,\n addClass, extend, serializeFunctions, extendUrl, jsxDom,\n getElement, memoized, appendChild,\n global, writeToWindow, setLogLevel, once,\n prefetchPage, awaitFrameLoad, stringify, stringifyError } from '../../lib';\nimport { POST_MESSAGE, CONTEXT_TYPES, CLASS_NAMES, ANIMATION_NAMES, CLOSE_REASONS, DELEGATE, INITIAL_PROPS, WINDOW_REFERENCES, EVENTS, DEFAULT_DIMENSIONS } from '../../constants';\nimport { RenderError } from '../../error';\nimport type { Component } from '../component';\nimport type { PropsType, BuiltInPropsType } from '../component/props';\nimport type { ChildExportsType } from '../child';\nimport type { CancelableType, Jsx, DimensionsType, ElementRefType } from '../../types';\n\nimport { RENDER_DRIVERS, type ContextDriverType } from './drivers';\nimport { validateProps } from './validate';\nimport { propsToQuery, normalizeProps } from './props';\n\nglobal.props = global.props || {};\nglobal.windows = global.windows || {};\n\nexport type RenderOptionsType = {\n id : string,\n props : PropsType,\n tag : string,\n context : string,\n outlet : HTMLElement,\n CLASS : typeof CLASS_NAMES,\n ANIMATION : typeof ANIMATION_NAMES,\n CONTEXT : typeof CONTEXT_TYPES,\n EVENT : typeof EVENTS,\n actions : {\n close : (string) => ZalgoPromise,\n focus : () => ZalgoPromise\n },\n on : (string, () => void) => CancelableType,\n jsxDom : Jsx,\n document : Document,\n container : HTMLElement,\n dimensions : DimensionsType\n};\n\n\n/* Parent Component\n ----------------\n\n This manages the state of the component on the parent window side - i.e. the window the component is being rendered into.\n\n It handles opening the necessary windows/iframes, launching the component's url, and listening for messages back from the component.\n*/\n\nexport class ParentComponent

extends BaseComponent

{\n\n html : ?ZalgoPromise\n context : string\n props : BuiltInPropsType & P\n childWindowName : string\n onInit : ZalgoPromise>\n window : CrossDomainWindowType\n handledErrors : Array\n\n container : HTMLElement\n element : HTMLElement\n outlet : HTMLElement;\n iframe : HTMLIFrameElement\n\n prerenderIframe : HTMLIFrameElement\n prerenderWindow : SameDomainWindowType\n\n childExports : ?ChildExportsType

\n timeout : ?TimeoutID // eslint-disable-line no-undef\n\n constructor(component : Component

, context : string, { props } : { props : (PropsType & P) }) {\n super();\n\n this.component = component;\n\n this.validateParentDomain();\n\n this.context = context;\n\n try {\n this.setProps(props);\n } catch (err) {\n if (props.onError) {\n props.onError(err);\n }\n throw err;\n }\n\n if (this.props.logLevel) {\n setLogLevel(this.props.logLevel);\n }\n\n this.childWindowName = this.buildChildWindowName({ renderTo: window });\n\n this.registerActiveComponent();\n\n // Options passed during renderTo. We would not ordinarily expect a user to pass these, since we depend on\n // them only when we're trying to render from a sibling to a sibling\n\n this.component.log(`construct_parent`);\n\n this.watchForUnload();\n\n this.onInit = new ZalgoPromise();\n\n this.onInit.catch(err => {\n return this.error(err);\n });\n }\n\n render(element : ElementRefType, loadUrl : boolean = true) : ZalgoPromise> {\n return this.tryInit(() => {\n\n this.component.log(`render_${ this.context }`, { context: this.context, element, loadUrl: stringify(loadUrl) });\n\n let tasks = {};\n\n tasks.onRender = this.props.onRender();\n\n tasks.getDomain = this.getDomain();\n\n tasks.elementReady = ZalgoPromise.try(() => {\n if (element) {\n return this.elementReady(element);\n }\n });\n\n tasks.openContainer = tasks.elementReady.then(() => {\n return this.openContainer(element);\n });\n\n tasks.showContainer = tasks.openContainer.then(() => {\n return this.showContainer();\n });\n\n tasks.openPrerender = tasks.openContainer.then(() => {\n return this.openPrerender();\n });\n\n tasks.switchPrerender = ZalgoPromise.all([ tasks.openPrerender, this.onInit ]).then(() => {\n return this.switchPrerender();\n });\n\n // $FlowFixMe\n tasks.open = this.driver.openOnClick\n ? this.open()\n : tasks.openContainer.then(() => this.open());\n\n tasks.listen = ZalgoPromise.hash({ domain: tasks.getDomain, open: tasks.open }).then(({ domain }) => {\n this.listen(this.window, domain);\n });\n\n tasks.watchForClose = tasks.open.then(() => {\n return this.watchForClose();\n });\n\n tasks.linkDomain = ZalgoPromise.all([ tasks.getDomain, tasks.open ]).then(([ domain ]) => {\n if (bridge && typeof domain === 'string') {\n return bridge.linkUrl(this.window, domain);\n }\n });\n\n if (!this.html) {\n tasks.createPrerenderTemplate = tasks.openPrerender.then(() => {\n return this.createPrerenderTemplate();\n });\n\n tasks.showComponent = tasks.createPrerenderTemplate.then(() => {\n return this.showComponent();\n });\n }\n\n tasks.openBridge = ZalgoPromise.all([ tasks.getDomain, tasks.open ]).then(([ domain ]) => {\n return this.openBridge(typeof domain === 'string' ? domain : null);\n });\n\n if (this.html) {\n tasks.loadHTML = tasks.open.then(() => {\n return this.loadHTML();\n });\n\n } else if (loadUrl) {\n tasks.buildUrl = this.buildUrl();\n\n tasks.loadUrl = ZalgoPromise.all([\n tasks.buildUrl,\n tasks.open,\n tasks.linkDomain,\n tasks.listen,\n tasks.open,\n tasks.openBridge,\n tasks.createPrerenderTemplate\n ]).then(([ url ]) => {\n return this.loadUrl(url);\n });\n\n tasks.runTimeout = tasks.loadUrl.then(() => {\n return this.runTimeout();\n });\n }\n\n return ZalgoPromise.hash(tasks);\n\n }).then(() => {\n return this.props.onEnter();\n }).then(() => {\n return this;\n });\n }\n\n @memoized\n getOutlet() : HTMLElement {\n let outlet = document.createElement('div');\n addClass(outlet, CLASS_NAMES.OUTLET);\n return outlet;\n }\n\n validateParentDomain() {\n let domain = getDomain();\n if (!matchDomain(this.component.allowedParentDomains, domain)) {\n throw new RenderError(`Can not be rendered by domain: ${ domain }`);\n }\n }\n\n renderTo(win : CrossDomainWindowType, element : ?string) : ZalgoPromise> {\n return this.tryInit(() => {\n\n if (win === window) {\n return this.render(element);\n }\n\n if (!isSameTopWindow(window, win)) {\n throw new Error(`Can only renderTo an adjacent frame`);\n }\n\n if (element && typeof element !== 'string') {\n throw new Error(`Element passed to renderTo must be a string selector, got ${ typeof element } ${ element }`);\n }\n\n this.checkAllowRenderTo(win);\n\n this.component.log(`render_${ this.context }_to_win`, { element: stringify(element), context: this.context });\n\n this.childWindowName = this.buildChildWindowName({ renderTo: win });\n\n this.delegate(win);\n\n return this.render(element);\n });\n }\n\n @memoized\n prefetch() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.html = this.buildUrl().then(url => {\n return prefetchPage(url).then(html => {\n\n let host = `${ url.split('/').slice(0, 3).join('/') }`;\n let uri = `/${ url.split('/').slice(3).join('/') }`;\n\n return `\n \n\n ${ html }\n\n \n `;\n });\n });\n });\n }\n\n @memoized\n loadHTML() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (!this.html) {\n throw new Error(`Html not prefetched`);\n }\n\n return this.html.then(html => {\n // $FlowFixMe\n return writeToWindow(this.window, html);\n });\n });\n }\n\n checkAllowRenderTo(win : CrossDomainWindowType) {\n\n if (!win) {\n throw this.component.createError(`Must pass window to renderTo`);\n }\n\n if (isSameDomain(win)) {\n return;\n }\n\n let origin = getDomain();\n let domain = this.component.getDomain(null, this.props.env);\n\n if (!domain) {\n throw new Error(`Could not determine domain to allow remote render`);\n }\n\n if (matchDomain(domain, origin)) {\n return;\n }\n\n throw new Error(`Can not render remotely to ${ domain.toString() } - can only render to ${ origin }`);\n }\n\n registerActiveComponent() {\n ParentComponent.activeComponents.push(this);\n\n this.clean.register(() => {\n ParentComponent.activeComponents.splice(ParentComponent.activeComponents.indexOf(this), 1);\n });\n }\n\n\n getComponentParentRef() : { ref : string, uid? : string, distance? : number } {\n let domain = this.component.getDomain(null, this.props.env);\n\n if (domain === getDomain(window)) {\n let uid = uniqueID();\n global.windows = global.windows || {};\n global.windows[uid] = window;\n this.clean.register(() => {\n delete global.windows[uid];\n });\n\n return { ref: WINDOW_REFERENCES.GLOBAL, uid };\n }\n\n if (this.context === CONTEXT_TYPES.POPUP) {\n return { ref: WINDOW_REFERENCES.OPENER };\n }\n\n if (isTop(window)) {\n return { ref: WINDOW_REFERENCES.TOP };\n }\n\n return { ref: WINDOW_REFERENCES.PARENT, distance: getDistanceFromTop(window) };\n }\n\n getRenderParentRef(renderToWindow : CrossDomainWindowType = window) : { ref : string, uid? : string, distance? : number } {\n\n if (renderToWindow === window) {\n return this.getComponentParentRef();\n }\n\n let uid = uniqueID();\n global.windows[uid] = renderToWindow;\n\n this.clean.register(() => {\n delete global.windows[uid];\n });\n\n return { ref: WINDOW_REFERENCES.GLOBAL, uid };\n }\n\n buildChildWindowName({ renderTo = window } : { renderTo : CrossDomainWindowType } = {}) : string {\n\n let childDomain = this.component.getDomain(null, this.props.env);\n let sameDomain = isSameDomain(renderTo);\n\n let uid = uniqueID();\n let tag = this.component.tag;\n let sProps = serializeFunctions(this.getPropsForChild());\n\n let componentParent = this.getComponentParentRef();\n let renderParent = this.getRenderParentRef(renderTo);\n\n let secureProps = !sameDomain && !this.component.unsafeRenderTo;\n\n let props = secureProps\n ? { type: INITIAL_PROPS.UID, uid }\n : { type: INITIAL_PROPS.RAW, value: sProps };\n\n if (props.type === INITIAL_PROPS.UID) {\n global.props[uid] = JSON.stringify(sProps);\n\n this.clean.register(() => {\n delete global.props[uid];\n });\n }\n\n return buildChildWindowName(this.component.name, this.component.version, { uid, tag, componentParent, renderParent, props, childDomain });\n }\n\n\n /* Send to Parent\n --------------\n\n Send a post message to our parent window.\n */\n\n sendToParent(name : string, data : Object) : ZalgoPromise<{ origin : string, source : CrossDomainWindowType, data : Object }> {\n let parentWindow = getParentComponentWindow();\n\n if (!parentWindow) {\n throw new Error(`Can not find parent component window to message`);\n }\n\n this.component.log(`send_to_parent_${ name }`);\n\n return send(getParentComponentWindow(), name, data, { domain: getParentDomain() });\n }\n\n\n /* Set Props\n ---------\n\n Normalize props and generate the url we'll use to render the component\n */\n\n setProps(props : (PropsType & P), required : boolean = true) {\n\n validateProps(this.component, props, required);\n if (this.component.validate) {\n this.component.validate(this.component, props);\n }\n\n // $FlowFixMe\n this.props = this.props || {};\n\n extend(this.props, normalizeProps(this.component, this, props));\n }\n\n\n /* Build Url\n ---------\n\n We build the props we're passed into the initial url. This means the component server-side can start rendering\n itself based on whatever props the merchant provides.\n */\n\n @memoized\n buildUrl() : ZalgoPromise {\n\n let propUrl : (string | void) = this.props.url;\n\n return ZalgoPromise.all([\n\n propUrl,\n // $FlowFixMe\n propsToQuery({ ...this.component.props, ...this.component.builtinProps }, this.props)\n\n ]).then(([ url, query ]) => {\n\n // Do not extend the url if it is for a different domain\n\n if (url && !this.component.getValidDomain(url)) {\n return url;\n }\n\n return ZalgoPromise.try(() => {\n\n return url || this.component.getUrl(this.props.env, this.props);\n\n }).then(finalUrl => {\n\n query.xcomponent = '1';\n return extendUrl(finalUrl, { query });\n });\n });\n }\n\n\n getDomain() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n return this.props.url;\n\n }).then(url => {\n\n let domain = this.component.getDomain(url, this.props.env);\n\n if (domain) {\n return domain;\n }\n\n if (this.component.buildUrl) {\n return ZalgoPromise.try(() => this.component.buildUrl(this.props)).then(builtUrl => {\n return this.component.getDomain(builtUrl, this.props.env);\n });\n }\n\n }).then(domain => {\n\n if (!domain) {\n throw new Error(`Could not determine domain`);\n }\n\n return domain;\n });\n }\n\n getPropsForChild() : (BuiltInPropsType & P) {\n\n let result = {};\n\n for (let key of Object.keys(this.props)) {\n let prop = this.component.getProp(key);\n\n if (!prop || prop.sendToChild !== false) {\n result[key] = this.props[key];\n }\n }\n\n // $FlowFixMe\n return result;\n }\n\n\n /* Update Props\n ------------\n\n Send new props down to the child\n */\n\n updateProps(props : (PropsType & P)) : ZalgoPromise {\n this.setProps(props, false);\n\n return this.onInit.then(() => {\n if (this.childExports) {\n return this.childExports.updateProps(this.getPropsForChild());\n } else {\n throw new Error(`Child exports were not available`);\n }\n });\n }\n\n\n openBridge(domain : ?string) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (!bridge || !this.driver.needsBridge) {\n return;\n }\n\n let needsBridgeParams : Object = { win: this.window };\n if (domain) {\n needsBridgeParams.domain = domain;\n }\n\n let needsBridge = bridge.needsBridge(needsBridgeParams);\n\n let bridgeUrl = this.component.getBridgeUrl(this.props.env);\n\n if (!bridgeUrl) {\n\n if (needsBridge && domain && !bridge.hasBridge(domain, domain)) {\n throw new Error(`Bridge url needed to render ${ this.context }`);\n }\n\n return;\n }\n\n bridgeUrl = extendUrl(bridgeUrl, { query: { version: this.component.version } });\n\n let bridgeDomain = this.component.getBridgeDomain(this.props.env);\n\n if (!bridgeDomain) {\n throw new Error(`Can not determine domain for bridge`);\n }\n\n if (needsBridge) {\n return bridge.openBridge(bridgeUrl, bridgeDomain).then(result => {\n if (result) {\n return result;\n }\n });\n }\n });\n }\n\n\n /* Open\n ----\n\n Open a new window in the desired context\n */\n\n @memoized\n open() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.component.log(`open_${ this.context }`, { windowName: this.childWindowName });\n if (this.props.win) {\n this.clean.set('window', this.props.win);\n assertSameDomain(this.window).name = this.childWindowName;\n return;\n }\n return this.driver.open.call(this);\n });\n }\n\n @memoized\n openPrerender() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.component.prerenderTemplate) {\n return this.driver.openPrerender.call(this);\n }\n });\n }\n\n @memoized\n switchPrerender() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.prerenderWindow && this.driver.switchPrerender) {\n return this.driver.switchPrerender.call(this);\n }\n });\n }\n\n get driver() : ContextDriverType {\n\n if (!this.context) {\n throw new Error('Context not set');\n }\n\n return RENDER_DRIVERS[this.context];\n }\n\n elementReady(element : ElementRefType) : ZalgoPromise {\n return elementReady(element).then(noop);\n }\n\n\n delegate(win : CrossDomainWindowType) {\n\n this.component.log(`delegate_${ this.context }`);\n\n let props = {\n uid: this.props.uid,\n dimensions: this.props.dimensions,\n onClose: this.props.onClose,\n onDisplay: this.props.onDisplay\n };\n\n for (let propName of this.component.getPropNames()) {\n let prop = this.component.getProp(propName);\n\n if (prop.allowDelegate) {\n props[propName] = this.props[propName];\n }\n }\n\n let delegate = send(win, `${ POST_MESSAGE.DELEGATE }_${ this.component.name }`, {\n\n context: this.context,\n env: this.props.env,\n\n options: {\n\n context: this.context,\n\n childWindowName: this.childWindowName,\n isWindowClosed: () => isWindowClosed(this.window),\n\n props,\n\n overrides: {\n focus: () => this.focus(),\n userClose: () => this.userClose(),\n getDomain: () => this.getDomain(),\n\n error: (err) => this.error(err),\n on: (eventName, handler) => this.on(eventName, handler)\n }\n }\n\n }).then(({ data }) => {\n\n this.clean.register(data.destroy);\n return data;\n\n }).catch(err => {\n\n throw new Error(`Unable to delegate rendering. Possibly the component is not loaded in the target window.\\n\\n${ stringifyError(err) }`);\n });\n\n let overrides = this.driver.delegateOverrides;\n\n for (let key of Object.keys(overrides)) {\n let val = overrides[key];\n\n if (val === DELEGATE.CALL_ORIGINAL) {\n continue;\n }\n\n // $FlowFixMe\n let original = this[key];\n\n // $FlowFixMe\n this[key] = function overridenFunction() : ZalgoPromise {\n return delegate.then(data => {\n\n let override = data.overrides[key];\n\n if (val === DELEGATE.CALL_DELEGATE) {\n return override.apply(this, arguments);\n }\n\n if (typeof val === 'function') {\n return val(original, override).apply(this, arguments);\n }\n\n throw new Error(`Expected delgate to be CALL_ORIGINAL, CALL_DELEGATE, or factory method`);\n });\n };\n }\n }\n\n /* Watch For Close\n ---------------\n\n Watch for the child window closing, so we can cleanup.\n Also watch for this window changing location, so we can close the component.\n */\n\n watchForClose() {\n let closeWindowListener = onCloseWindow(this.window, () => {\n this.component.log(`detect_close_child`);\n\n return ZalgoPromise.try(() => {\n return this.props.onClose(CLOSE_REASONS.CLOSE_DETECTED);\n }).finally(() => {\n return this.destroy();\n });\n }, 3000);\n\n this.clean.register('destroyCloseWindowListener', closeWindowListener.cancel);\n }\n\n watchForUnload() {\n\n // Our child has no way of knowing if we navigated off the page. So we have to listen for unload\n // and close the child manually if that happens.\n\n let onunload = once(() => {\n this.component.log(`navigate_away`);\n flush();\n this.destroyComponent();\n });\n\n let unloadWindowListener = addEventListener(window, 'unload', onunload);\n\n this.clean.register('destroyUnloadWindowListener', unloadWindowListener.cancel);\n }\n\n\n /* Load Url\n --------\n\n Load url into the child window. This is separated out because it's quite common for us to have situations\n where opening the child window and loading the url happen at different points.\n */\n\n loadUrl(url : string) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.component.log(`load_url`);\n\n if (window.location.href.split('#')[0] === url.split('#')[0]) {\n url = extendUrl(url, {\n query: {\n [ uniqueID() ]: '1'\n }\n });\n }\n\n return this.driver.loadUrl.call(this, url);\n });\n }\n\n\n hijack(targetElement : HTMLFormElement | HTMLAnchorElement) {\n targetElement.target = this.childWindowName;\n }\n\n /* Run Timeout\n -----------\n\n Set a timeout on the initial render, and call this.props.onTimeout if we don't get an init call in time.\n */\n\n runTimeout() {\n let timeout = this.props.timeout;\n\n if (timeout) {\n let id = this.timeout = setTimeout(() => {\n\n this.component.log(`timed_out`, { timeout: timeout.toString() });\n\n let error = this.component.createError(`Loading component timed out after ${ timeout } milliseconds`);\n\n this.onInit.reject(error);\n this.props.onTimeout(error);\n\n }, timeout);\n\n this.clean.register(() => {\n clearTimeout(id);\n delete this.timeout;\n });\n }\n }\n\n\n /* Listeners\n ---------\n\n Post-robot listeners to the child component window\n */\n\n listeners() : { [string] : (CrossDomainWindowType, Object) => mixed } {\n return {\n\n // The child rendered, and the component called .attach()\n // We have no way to know when the child has set up its listeners for the first time, so we have to listen\n // for this message to be sure so we can continue doing anything from the parent\n\n [ POST_MESSAGE.INIT ](source : CrossDomainWindowType, data : Object) : { props : BuiltInPropsType & P, context : string } {\n\n this.childExports = data.exports;\n\n this.onInit.resolve(this);\n\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n\n return {\n props: this.getPropsForChild(),\n context: this.context\n };\n },\n\n\n // The child has requested that we close it. Since iframes can't close themselves, we need\n // this logic to exist in the parent window\n\n [ POST_MESSAGE.CLOSE ](source : CrossDomainWindowType, data : Object) {\n this.close(data.reason);\n },\n\n [ POST_MESSAGE.CHECK_CLOSE ]() {\n this.checkClose();\n },\n\n // Iframes can't resize themselves, so they need the parent to take care of it for them.\n\n [ POST_MESSAGE.RESIZE ](source : CrossDomainWindowType, data : Object) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.driver.allowResize) {\n return this.resize(data.width, data.height);\n }\n });\n },\n\n [ POST_MESSAGE.HIDE ]() {\n this.hide();\n },\n\n [ POST_MESSAGE.SHOW ]() {\n this.show();\n },\n\n\n // The child encountered an error\n\n [ POST_MESSAGE.ERROR ](source : CrossDomainWindowType, data : Object) {\n this.error(new Error(data.error));\n }\n };\n }\n\n\n /* Resize\n ------\n\n Resize the child component window\n */\n\n resize(width : ?(number | string), height : ?(number | string)) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.component.log(`resize`, { height: stringify(height), width: stringify(width) });\n this.driver.resize.call(this, width, height);\n if (this.props.onResize) {\n this.props.onResize();\n }\n });\n }\n\n\n /* Hide\n ----\n\n Hide the component and any parent template\n */\n\n hide() : void {\n\n if (this.container) {\n hideElement(this.container);\n }\n\n return this.driver.hide.call(this);\n }\n\n show() : void {\n\n if (this.container) {\n showElement(this.container);\n }\n\n return this.driver.show.call(this);\n }\n\n\n checkClose() {\n let closeWindowListener = onCloseWindow(this.window, () => {\n this.userClose();\n }, 50, 500);\n\n this.clean.register(closeWindowListener.cancel);\n }\n\n\n userClose() : ZalgoPromise {\n return this.close(CLOSE_REASONS.USER_CLOSED);\n }\n\n\n /* Close\n -----\n\n Close the child component\n */\n\n @memoized\n close(reason : string = CLOSE_REASONS.PARENT_CALL) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n this.component.log(`close`, { reason });\n\n this.event.triggerOnce(EVENTS.CLOSE);\n return this.props.onClose(reason);\n\n }).then(() => {\n\n return ZalgoPromise.all([\n this.closeComponent(),\n this.closeContainer()\n ]);\n\n }).then(() => {\n\n return this.destroy();\n });\n }\n\n\n @memoized\n closeContainer(reason : string = CLOSE_REASONS.PARENT_CALL) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n this.event.triggerOnce(EVENTS.CLOSE);\n return this.props.onClose(reason);\n\n }).then(() => {\n\n return ZalgoPromise.all([\n this.closeComponent(reason),\n this.hideContainer()\n ]);\n\n }).then(() => {\n\n return this.destroyContainer();\n });\n }\n\n\n @memoized\n destroyContainer() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.clean.run('destroyContainerEvents');\n this.clean.run('destroyContainerTemplate');\n });\n }\n\n\n @memoized\n closeComponent(reason : string = CLOSE_REASONS.PARENT_CALL) : ZalgoPromise {\n\n let win = this.window;\n\n return ZalgoPromise.try(() => {\n\n return this.cancelContainerEvents();\n\n }).then(() => {\n\n this.event.triggerOnce(EVENTS.CLOSE);\n return this.props.onClose(reason);\n\n }).then(() => {\n\n return this.hideComponent();\n\n }).then(() => {\n\n return this.destroyComponent();\n\n }).then(() => {\n\n // IE in metro mode -- child window needs to close itself, or close will hang\n\n if (this.childExports && this.context === CONTEXT_TYPES.POPUP && !isWindowClosed(win)) {\n this.childExports.close().catch(noop);\n }\n });\n }\n\n destroyComponent() {\n this.clean.run('destroyUnloadWindowListener');\n this.clean.run('destroyCloseWindowListener');\n this.clean.run('destroyContainerEvents');\n this.clean.run('destroyWindow');\n }\n\n @memoized\n showContainer() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.props.onDisplay) {\n return this.props.onDisplay();\n }\n }).then(() => {\n if (this.container) {\n return showAndAnimate(this.container, ANIMATION_NAMES.SHOW_CONTAINER, this.clean.register);\n }\n });\n }\n\n @memoized\n showComponent() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.props.onDisplay) {\n return this.props.onDisplay();\n }\n }).then(() => {\n if (this.element) {\n return showAndAnimate(this.element, ANIMATION_NAMES.SHOW_COMPONENT, this.clean.register);\n }\n });\n }\n\n @memoized\n hideContainer() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.container) {\n return animateAndHide(this.container, ANIMATION_NAMES.HIDE_CONTAINER, this.clean.register);\n } else {\n return ZalgoPromise.resolve();\n }\n });\n }\n\n @memoized\n hideComponent() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.element) {\n return animateAndHide(this.element, ANIMATION_NAMES.HIDE_COMPONENT, this.clean.register);\n } else {\n return ZalgoPromise.resolve();\n }\n });\n }\n\n\n /* Focus\n -----\n\n Focus the child component window\n */\n\n focus() {\n\n if (this.window && !isWindowClosed(this.window)) {\n this.component.log(`focus`);\n this.window.focus();\n\n } else {\n\n throw new Error(`No window to focus`);\n }\n }\n\n\n /* Create Component Template\n -------------------------\n\n Creates an initial template and stylesheet which are loaded into the child window, to be displayed before the url is loaded\n */\n\n @memoized\n createPrerenderTemplate() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (!this.component.prerenderTemplate) {\n return ZalgoPromise.resolve();\n }\n\n return ZalgoPromise.try(() => {\n\n if (this.prerenderIframe) {\n return awaitFrameLoad(this.prerenderIframe).then(() => this.prerenderWindow);\n } else {\n return this.prerenderWindow;\n }\n\n }).then(win => {\n\n let doc;\n\n try {\n doc = win.document;\n } catch (err) {\n return;\n }\n\n let el;\n\n try {\n el = this.renderTemplate(this.component.prerenderTemplate, {\n jsxDom: jsxDom.bind(doc),\n document: doc\n });\n } catch (err) {\n this.component.logError('preprender_error', { err: err.stack ? err.stack : err.toString() });\n console.error(err.stack ? err.stack : err); // eslint-disable-line no-console\n return;\n }\n\n try {\n writeElementToWindow(win, el);\n } catch (err) {\n this.component.logError('preprender_error', { err: err.stack ? err.stack : err.toString() });\n console.error(err.stack ? err.stack : err); // eslint-disable-line no-console\n }\n\n let { width = false, height = false, element = 'body' } = (typeof this.component.autoResize === 'object' && this.component.autoResize !== null)\n ? this.component.autoResize\n : {};\n\n element = getElementSafe(element, doc);\n\n if (element && (width || height)) {\n onResize(element, ({ width: newWidth, height: newHeight }) => {\n this.resize(width ? newWidth : undefined, height ? newHeight : undefined);\n }, { width, height, win });\n }\n });\n });\n }\n\n\n /* Create Parent Template\n ----------------------\n\n Create a template and stylesheet for the parent template behind the element\n */\n\n renderTemplate(renderer : (RenderOptionsType) => HTMLElement, options : Object = {}) : HTMLElement {\n\n let {\n width = `${ DEFAULT_DIMENSIONS.WIDTH }px`,\n height = `${ DEFAULT_DIMENSIONS.HEIGHT }px`\n } = (this.component.dimensions || {});\n\n return renderer.call(this, {\n id: `${ CLASS_NAMES.ZOID }-${ this.component.tag }-${ this.props.uid }`,\n props: renderer.__xdomain__ ? null : this.props,\n tag: this.component.tag,\n context: this.context,\n outlet: this.getOutlet(),\n CLASS: CLASS_NAMES,\n ANIMATION: ANIMATION_NAMES,\n CONTEXT: CONTEXT_TYPES,\n EVENT: EVENTS,\n actions: {\n close: () => this.userClose(),\n focus: () => this.focus()\n },\n on: (eventName, handler) => this.on(eventName, handler),\n jsxDom,\n document,\n dimensions: { width, height },\n ...options\n });\n }\n\n @memoized\n openContainer(element : ?HTMLElement) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n let el;\n\n if (element) {\n el = getElement(element);\n } else {\n el = document.body;\n }\n\n if (!el) {\n throw new Error(`Could not find element to open container into`);\n }\n\n if (!this.component.containerTemplate) {\n if (this.driver.renderedIntoContainerTemplate) {\n throw new Error(`containerTemplate needed to render ${ this.context }`);\n }\n\n return;\n }\n\n let container = this.renderTemplate(this.component.containerTemplate, {\n container: el\n });\n\n this.container = container;\n hideElement(this.container);\n appendChild(el, this.container);\n\n if (this.driver.renderedIntoContainerTemplate) {\n this.element = this.getOutlet();\n hideElement(this.element);\n\n if (!this.element) {\n throw new Error('Could not find element to render component into');\n }\n\n hideElement(this.element);\n }\n\n this.clean.register('destroyContainerTemplate', () => {\n\n if (this.container && this.container.parentNode) {\n this.container.parentNode.removeChild(this.container);\n }\n\n delete this.container;\n });\n });\n }\n\n cancelContainerEvents() {\n this.clean.run('destroyContainerEvents');\n }\n\n\n /* Destroy\n -------\n\n Close the component and clean up any listeners and state\n */\n\n destroy() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.clean.hasTasks()) {\n this.component.log(`destroy`);\n flush();\n return this.clean.all();\n }\n });\n }\n\n\n tryInit(method : () => mixed) : ZalgoPromise> {\n return ZalgoPromise.try(method).catch(err => {\n this.onInit.reject(err);\n }).then(() => {\n return this.onInit;\n });\n }\n\n\n /* Error\n -----\n\n Handle an error\n */\n\n error(err : mixed) : ZalgoPromise {\n // eslint-disable-next-line promise/no-promise-in-callback\n return ZalgoPromise.try(() => {\n\n this.handledErrors = this.handledErrors || [];\n\n if (this.handledErrors.indexOf(err) !== -1) {\n // $FlowFixMe\n return;\n }\n\n this.handledErrors.push(err);\n\n this.onInit.reject(err);\n\n return this.destroy();\n\n }).then(() => {\n\n if (this.props.onError) {\n return this.props.onError(err);\n }\n\n }).catch(errErr => { // eslint-disable-line unicorn/catch-error-name\n\n throw new Error(`An error was encountered while handling error:\\n\\n ${ stringifyError(err) }\\n\\n${ stringifyError(errErr) }`);\n\n }).then(() => {\n\n if (!this.props.onError) {\n throw err;\n }\n });\n }\n\n static activeComponents : Array> = []\n\n static destroyAll() : ZalgoPromise {\n let results = [];\n\n while (ParentComponent.activeComponents.length) {\n results.push(ParentComponent.activeComponents[0].destroy());\n }\n\n return ZalgoPromise.all(results).then(noop);\n }\n}\n","/* @flow */\n\nimport { onCloseWindow, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { BaseComponent } from '../base';\nimport { ParentComponent } from '../parent';\nimport { RENDER_DRIVERS, type ContextDriverType } from '../parent/drivers';\nimport type { Component } from '../component';\nimport { noop } from '../../lib';\nimport type { CancelableType, DimensionsType } from '../../types';\n\nexport type DelegatePropsType = {\n uid : string,\n dimensions : DimensionsType,\n onClose : () => ?ZalgoPromise,\n onDisplay : () => ?ZalgoPromise\n};\n\nexport type DelegateOptionsType = {\n context : string,\n props : DelegatePropsType,\n childWindowName : string,\n isWindowClosed : () => ZalgoPromise,\n \n overrides : {\n focus : () => ZalgoPromise,\n userClose : (string) => ZalgoPromise,\n getDomain : () => ZalgoPromise,\n error : (mixed) => ZalgoPromise,\n on : (string, () => void) => CancelableType\n }\n};\n\nexport class DelegateComponent

extends BaseComponent

{\n\n source : CrossDomainWindowType\n context : string\n props : DelegatePropsType\n\n focus : () => ZalgoPromise\n userClose : (string) => ZalgoPromise\n getDomain : () => ZalgoPromise\n error : (mixed) => ZalgoPromise\n on : (string, () => void) => CancelableType\n\n childWindowName : string\n isWindowClosed : () => ZalgoPromise\n\n constructor(component : Component

, source : CrossDomainWindowType, options : DelegateOptionsType) {\n super();\n\n this.component = component;\n this.clean.set('source', source);\n\n this.context = options.context;\n\n this.props = {\n uid: options.props.uid,\n dimensions: options.props.dimensions,\n onClose: options.props.onClose,\n onDisplay: options.props.onDisplay\n };\n\n for (let propName of component.getPropNames()) {\n // $FlowFixMe\n let prop = this.component.getProp(propName);\n\n if (prop.allowDelegate) {\n this.props[propName] = options.props[propName];\n }\n }\n\n this.focus = () => {\n return ZalgoPromise.all([\n this.isWindowClosed().then(closed => {\n if (!closed) {\n window.open('', this.childWindowName);\n }\n }),\n options.overrides.focus.call(this)\n ]).then(noop);\n };\n\n this.clean.register('destroyFocusOverride', () => {\n // $FlowFixMe\n this.focus = noop;\n });\n\n this.userClose = options.overrides.userClose;\n this.getDomain = options.overrides.getDomain;\n this.error = options.overrides.error;\n this.on = options.overrides.on;\n\n let delegateOverrides = RENDER_DRIVERS[options.context].delegateOverrides;\n\n for (let key of Object.keys(delegateOverrides)) {\n // $FlowFixMe\n this[key] = ParentComponent.prototype[key];\n }\n\n this.childWindowName = options.childWindowName;\n this.isWindowClosed = options.isWindowClosed;\n\n ParentComponent.prototype.registerActiveComponent.call(this);\n\n this.watchForClose();\n }\n\n get driver() : ContextDriverType {\n\n if (!this.context) {\n throw new Error('Context not set');\n }\n\n return RENDER_DRIVERS[this.context];\n }\n\n watchForClose() {\n let closeWindowListener = onCloseWindow(this.source, () => this.destroy(), 3000);\n this.clean.register('destroyCloseWindowListener', closeWindowListener.cancel);\n }\n\n getOverrides(context : string) : { [string] : mixed } {\n\n let delegateOverrides = RENDER_DRIVERS[context].delegateOverrides;\n\n let overrides = {};\n\n let self = this;\n\n for (let key of Object.keys(delegateOverrides)) {\n overrides[key] = function delegateOverride() : mixed {\n // $FlowFixMe\n return ParentComponent.prototype[key].apply(self, arguments);\n };\n }\n\n return overrides;\n }\n\n destroy() : ZalgoPromise {\n return this.clean.all();\n }\n}\n","/* @flow */\n\nimport { PROP_TYPES_LIST, CONTEXT_TYPES_LIST } from '../../constants';\nimport { isPerc, isPx } from '../../lib';\n\nimport type { ComponentOptionsType } from './index';\n\nfunction validatePropDefinitions

(options : ComponentOptionsType

) {\n\n if (options.props && !(typeof options.props === 'object')) {\n throw new Error(`Expected options.props to be an object`);\n }\n\n if (options.props) {\n for (let key of Object.keys(options.props)) {\n\n // $FlowFixMe\n let prop = options.props[key];\n\n if (!prop || !(typeof prop === 'object')) {\n throw new Error(`Expected options.props.${ key } to be an object`);\n }\n\n if (!prop.type) {\n throw new Error(`Expected prop.type`);\n }\n\n if (PROP_TYPES_LIST.indexOf(prop.type) === -1) {\n throw new Error(`Expected prop.type to be one of ${ PROP_TYPES_LIST.join(', ') }`);\n }\n\n if (prop.required && prop.def) {\n throw new Error(`Required prop can not have a default value`);\n }\n }\n }\n}\n\n// eslint-disable-next-line complexity\nexport function validate

(options : ?ComponentOptionsType

) { // eslint-ignore-line\n\n if (!options) {\n throw new Error(`Expecred options to be passed`);\n }\n\n if (!options.tag || !options.tag.match(/^[a-z0-9-]+$/)) {\n throw new Error(`Invalid options.tag: ${ options.tag }`);\n }\n\n validatePropDefinitions(options);\n\n if (options.dimensions) {\n if (options.dimensions && !isPx(options.dimensions.width) && !isPerc(options.dimensions.width)) {\n throw new Error(`Expected options.dimensions.width to be a px or % string value`);\n }\n\n if (options.dimensions && !isPx(options.dimensions.height) && !isPerc(options.dimensions.height)) {\n throw new Error(`Expected options.dimensions.height to be a px or % string value`);\n }\n }\n\n if (options.contexts) {\n\n if (options.contexts.popup && !__ZOID__.__POPUP_SUPPORT__) {\n throw new Error(`Popups not supported in this build -- please use the full zoid.js build`);\n }\n\n let anyEnabled = false;\n\n for (let context of Object.keys(options.contexts)) {\n\n if (CONTEXT_TYPES_LIST.indexOf(context) === -1) {\n throw new Error(`Unsupported context type: ${ context }`);\n }\n\n if ((options.contexts && options.contexts[context]) || (options.contexts && options.contexts[context] === undefined)) {\n anyEnabled = true;\n }\n }\n\n if (!anyEnabled) {\n throw new Error(`No context type is enabled`);\n }\n }\n\n if (options.defaultContext) {\n if (CONTEXT_TYPES_LIST.indexOf(options.defaultContext) === -1) {\n throw new Error(`Unsupported context type: ${ options.defaultContext || 'unknown' }`);\n }\n\n if (options.contexts && options.defaultContext && !options.contexts[options.defaultContext]) {\n throw new Error(`Disallowed default context type: ${ options.defaultContext || 'unknown' }`);\n }\n }\n\n if (options.url && options.buildUrl) {\n throw new Error(`Can not pass both options.url and options.buildUrl`);\n }\n\n if (options.defaultEnv) {\n if (typeof options.defaultEnv !== 'string') {\n throw new TypeError(`Expected options.defaultEnv to be a string`);\n }\n\n if (!options.buildUrl && typeof options.url !== 'object') {\n throw new Error(`Expected options.url to be an object mapping env->url`);\n }\n\n if (options.url && typeof options.url === 'object' && !options.url[options.defaultEnv]) {\n throw new Error(`No url found for default env: ${ options.defaultEnv }`);\n }\n }\n\n if (options.url && typeof options.url === 'object') {\n\n if (!options.defaultEnv) {\n throw new Error(`Must pass options.defaultEnv with env->url mapping`);\n }\n\n for (let env of Object.keys(options.url)) {\n if (!options.url[env]) {\n throw new Error(`No url specified for env: ${ env }`);\n }\n }\n }\n\n if (options.prerenderTemplate && typeof options.prerenderTemplate !== 'function') {\n throw new Error(`Expected options.prerenderTemplate to be a function`);\n }\n\n if (options.containerTemplate && typeof options.containerTemplate !== 'function') {\n throw new Error(`Expected options.containerTemplate to be a function`);\n }\n}\n","/* @flow */\n/* @jsx jsxDom */\n\nimport { type RenderOptionsType } from '../../parent';\n\nexport function defaultContainerTemplate({ id, tag, context, CLASS, outlet, jsxDom, dimensions : { width, height } } : RenderOptionsType) : HTMLElement {\n\n return (\n

\n \n\n { outlet }\n
\n );\n}\n","/* @flow */\n/* @jsx jsxDom */\n\nimport { type RenderOptionsType } from '../../parent';\n\nexport function defaultPrerenderTemplate({ jsxDom } : RenderOptionsType) : HTMLElement {\n return (\n \n \n \n \n \n
\n
\n
\n \n \n );\n}\n","/* @flow */\n\nexport * from './container';\nexport * from './component';\n","/* @flow */\n\nimport { type ZalgoPromise } from 'zalgo-promise/src';\nimport type { SameDomainWindowType } from 'cross-domain-utils/src';\n\nimport { uniqueID } from '../../lib';\nimport { type DimensionsType } from '../../types';\n\ntype PropDefinitionType = {\n type : S,\n alias? : string,\n value? : T,\n required? : boolean,\n noop? : boolean,\n once? : boolean,\n memoize? : boolean,\n promisify? : boolean,\n queryParam? : boolean | string | (T) => (string | ZalgoPromise),\n queryValue? : (T) => (ZalgoPromise | mixed),\n sendToChild? : boolean,\n allowDelegate? : boolean,\n validate? : (T, PropsType & P) => void,\n decorate? : (T, PropsType & P) => (void | ZalgoPromise | T),\n def? : (P) => ?T,\n sameDomain? : boolean,\n serialization? : 'json' | 'dotify',\n childDecorate? : (T) => ?T,\n denodeify? : boolean\n};\n\nexport type BooleanPropDefinitionType = PropDefinitionType;\nexport type StringPropDefinitionType = PropDefinitionType;\nexport type NumberPropDefinitionType = PropDefinitionType;\nexport type FunctionPropDefinitionType = PropDefinitionType;\nexport type ObjectPropDefinitionType = PropDefinitionType;\n\nexport type MixedPropDefinitionType

= BooleanPropDefinitionType<*, P> | StringPropDefinitionType<*, P> | NumberPropDefinitionType<*, P> | FunctionPropDefinitionType<*, P> | ObjectPropDefinitionType<*, P>;\n\nexport type UserPropsDefinitionType

= {\n [string] : MixedPropDefinitionType

\n};\n\nexport type EventHandlerType = (T) => void | ZalgoPromise;\n\ntype envPropType = string;\ntype uidPropType = string;\ntype urlPropType = string;\ntype versionPropType = string;\ntype timeoutPropType = number;\ntype logLevelPropType = string;\ntype dimensionsPropType = DimensionsType;\ntype winPropType = SameDomainWindowType;\n\ntype onDisplayPropType = EventHandlerType;\ntype onEnterPropType = EventHandlerType;\ntype onRenderPropType = EventHandlerType;\ntype onClosePropType = EventHandlerType;\ntype onResizePropType = EventHandlerType;\ntype onTimeoutPropType = EventHandlerType;\ntype onErrorPropType = EventHandlerType;\n\nexport type BuiltInPropsType = {\n env : envPropType,\n uid : uidPropType,\n url? : urlPropType,\n version? : versionPropType,\n timeout? : timeoutPropType,\n logLevel : logLevelPropType,\n dimensions? : dimensionsPropType,\n win? : winPropType,\n\n onDisplay : onDisplayPropType,\n onEnter : onEnterPropType,\n onRender : onRenderPropType,\n onClose : onClosePropType,\n onResize : onResizePropType,\n onTimeout : onTimeoutPropType,\n onError? : onErrorPropType\n};\n\nexport type PropsType = {\n env? : envPropType,\n uid? : uidPropType,\n url? : urlPropType,\n version? : versionPropType,\n timeout? : timeoutPropType,\n logLevel? : logLevelPropType,\n dimensions? : dimensionsPropType,\n win? : winPropType,\n\n onDisplay? : onDisplayPropType,\n onEnter? : onEnterPropType,\n onRender? : onRenderPropType,\n onClose? : onClosePropType,\n onResize? : onResizePropType,\n onTimeout? : onTimeoutPropType,\n onError? : onErrorPropType\n};\n\nexport type BuiltInPropsDefinitionType

= {\n env : StringPropDefinitionType,\n uid : StringPropDefinitionType,\n url : StringPropDefinitionType,\n version : StringPropDefinitionType,\n timeout : NumberPropDefinitionType,\n logLevel : StringPropDefinitionType,\n dimensions : ObjectPropDefinitionType,\n win : ObjectPropDefinitionType,\n\n onDisplay : FunctionPropDefinitionType,\n onEnter : FunctionPropDefinitionType,\n onRender : FunctionPropDefinitionType,\n onClose : FunctionPropDefinitionType,\n onResize : FunctionPropDefinitionType,\n onTimeout : FunctionPropDefinitionType,\n onError : FunctionPropDefinitionType\n};\n\n/* Internal Props\n --------------\n\n We define and use certain props by default, for configuration and events that are used at the framework level.\n These follow the same format as regular props, and are classed as reserved words that may not be overriden by users.\n*/\n\nexport function getInternalProps

() : BuiltInPropsDefinitionType

{\n return {\n\n // The desired env in which the component is being rendered. Used to determine the correct url\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n def() : string {\n return this.defaultEnv;\n }\n },\n\n uid: {\n type: 'string',\n def() : string {\n return uniqueID();\n },\n queryParam: true\n },\n\n logLevel: {\n type: 'string',\n required: false,\n queryParam: true,\n def() : string {\n return this.defaultLogLevel;\n }\n },\n\n // A custom url to use to render the component\n\n url: {\n type: 'string',\n required: false,\n promise: true,\n sendToChild: false\n },\n\n win: {\n type: 'object',\n required: false,\n sendToChild: false\n },\n\n dimensions: {\n type: 'object',\n required: false\n },\n\n version: {\n type: 'string',\n required: false,\n queryParam: true,\n def() : string {\n return this.version;\n }\n },\n\n // A millisecond timeout before onTimeout is called\n\n timeout: {\n type: 'number',\n required: false,\n sendToChild: false\n },\n\n onDisplay: {\n type: 'function',\n required: false,\n noop: true,\n promisify: true,\n memoize: true,\n sendToChild: false\n },\n\n onEnter: {\n type: 'function',\n required: false,\n noop: true,\n promisify: true,\n sendToChild: false\n },\n\n // When we get an INIT message from the child\n\n onRender: {\n type: 'function',\n required: false,\n noop: true,\n promisify: true,\n sendToChild: false\n },\n\n // When the user closes the component.\n\n onClose: {\n type: 'function',\n required: false,\n noop: true,\n once: true,\n promisify: true,\n sendToChild: false\n },\n\n onResize: {\n type: 'function',\n required: false,\n noop: true,\n sendToChild: false\n },\n\n // When we time-out before getting an INIT message from the child. Defaults to onError if no handler passed.\n\n onTimeout: {\n type: 'function',\n required: false,\n memoize: true,\n promisify: true,\n sendToChild: false,\n def() : (() => void) {\n return function onTimeout(err : mixed) : void {\n if (this.props.onError) {\n return this.props.onError(err);\n }\n throw err;\n };\n }\n },\n\n // When the component experiences an error\n\n onError: {\n type: 'function',\n required: false,\n promisify: true,\n sendToChild: true,\n once: true,\n def() : (() => void) {\n return function onError(err : mixed) {\n setTimeout(() => {\n throw err;\n });\n };\n }\n }\n };\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { on, send } from 'post-robot/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getDomain, getDomainFromUrl, matchDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { BaseComponent } from '../base';\nimport { ChildComponent } from '../child';\nimport { ParentComponent, type RenderOptionsType } from '../parent';\nimport { DelegateComponent, type DelegateOptionsType } from '../delegate';\nimport { isZoidComponentWindow, getComponentMeta } from '../window';\nimport { CONTEXT_TYPES, POST_MESSAGE, WILDCARD } from '../../constants';\nimport { angular, angular2, glimmer, react, vue, script } from '../../drivers/index';\nimport { info, error, warn, setLogLevel, memoize } from '../../lib';\nimport type { EnvStringRegExp, CssDimensionsType, StringMatcherType, ElementRefType, EnvString } from '../../types';\n\nimport { validate } from './validate';\nimport { defaultContainerTemplate, defaultPrerenderTemplate } from './templates';\nimport { getInternalProps, type UserPropsDefinitionType, type BuiltInPropsDefinitionType, type PropsType, type BuiltInPropsType, type MixedPropDefinitionType } from './props';\n\nconst drivers = { angular, angular2, glimmer, react, vue, script };\n\n/* Component\n ---------\n\n This is the spec for the component. The idea is, when I call zoid.create(), it will create a new instance\n of Component with the blueprint needed to set up ParentComponents and ChildComponents.\n\n This is the one portion of code which is required by -- and shared to -- both the parent and child windows, and\n contains all of the configuration needed for them to set themselves up.\n*/\n\nexport type ComponentOptionsType

= {\n\n tag : string,\n\n url? : EnvString,\n buildUrl? : (BuiltInPropsType & P) => string | ZalgoPromise,\n\n domain? : EnvStringRegExp,\n bridgeUrl? : EnvString,\n bridgeDomain? : EnvString,\n\n props? : UserPropsDefinitionType

,\n\n dimensions? : CssDimensionsType,\n scrolling? : boolean,\n autoResize? : boolean | { width? : boolean, height? : boolean, element? : string },\n listenForResize? : boolean,\n\n defaultLogLevel? : string,\n allowedParentDomains? : StringMatcherType,\n\n version? : string,\n defaultEnv? : string,\n\n contexts? : { iframe? : boolean, popup? : boolean },\n defaultContext? : string,\n\n containerTemplate? : (RenderOptionsType) => HTMLElement,\n prerenderTemplate? : (RenderOptionsType) => HTMLElement,\n\n validate? : (Component

, UserPropsDefinitionType

) => void,\n\n unsafeRenderTo? : boolean\n};\n\nexport type ComponentDriverType = {\n global : () => ?T,\n register : (Component

, T) => mixed\n};\n\nexport class Component

extends BaseComponent

{\n\n name : string\n looseProps : boolean\n\n tag : string\n url : EnvString\n\n domain : EnvStringRegExp\n bridgeUrl : EnvString\n bridgeDomain : EnvString\n\n props : UserPropsDefinitionType

\n builtinProps : BuiltInPropsDefinitionType

\n\n dimensions : CssDimensionsType\n scrolling : boolean\n autoResize : ?(boolean | { width? : boolean, height? : boolean, element? : string })\n listenForResize : ?boolean\n\n defaultLogLevel : string\n allowedParentDomains : StringMatcherType\n\n version : string\n defaultEnv : string\n buildUrl : (BuiltInPropsType & P) => string | ZalgoPromise\n\n contexts : { iframe? : boolean, popup? : boolean }\n defaultContext : string\n\n containerTemplate : (RenderOptionsType) => HTMLElement\n prerenderTemplate : (RenderOptionsType) => HTMLElement\n\n validate : (Component

, (PropsType & P)) => void\n\n unsafeRenderTo : ?boolean\n\n driverCache : { [string] : mixed }\n\n xchild : ?ChildComponent

\n xprops : ?P\n\n constructor(options : ComponentOptionsType

) {\n super();\n validate(options);\n\n // The tag name of the component. Used by some drivers (e.g. angular) to turn the component into an html element,\n // e.g. \n\n this.addProp(options, 'tag');\n\n this.addProp(options, 'defaultLogLevel', 'info');\n\n this.addProp(options, 'allowedParentDomains', WILDCARD);\n\n // initially set log level to default log level configured when creating component\n setLogLevel(this.defaultLogLevel);\n\n if (Component.components[this.tag]) {\n throw new Error(`Can not register multiple components with the same tag`);\n }\n\n // Name of the component, used for logging. Auto-generated from the tag name by default.\n\n this.addProp(options, 'name', this.tag.replace(/-/g, '_'));\n\n // A json based spec describing what kind of props the component accepts. This is used to validate any props before\n // they are passed down to the child.\n\n this.builtinProps = getInternalProps();\n this.props = options.props || {};\n\n if (!options.props) {\n this.looseProps = true;\n }\n\n // The dimensions of the component, e.g. { width: '300px', height: '150px' }\n\n this.addProp(options, 'dimensions');\n this.addProp(options, 'scrolling');\n this.addProp(options, 'listenForResize');\n\n this.addProp(options, 'version', 'latest');\n\n // The default environment we should render to if none is specified in the parent\n\n this.addProp(options, 'defaultEnv');\n\n // A mapping of env->url, used to determine which url to load for which env\n\n this.addProp(options, 'buildUrl');\n\n this.addProp(options, 'url');\n this.addProp(options, 'domain');\n\n this.addProp(options, 'bridgeUrl');\n this.addProp(options, 'bridgeDomain');\n\n this.addProp(options, 'attributes', {});\n\n // A url to use by default to render the component, if not using envs\n\n\n // The allowed contexts. For example { iframe: true, popup: false }\n\n this.addProp(options, 'contexts', { iframe: true, popup: false });\n\n // The default context to render to\n\n this.addProp(options, 'defaultContext');\n\n // Auto Resize option\n\n this.addProp(options, 'autoResize', false);\n\n // Templates and styles for the parent page and the initial rendering of the component\n\n this.addProp(options, 'containerTemplate', defaultContainerTemplate);\n this.addProp(options, 'prerenderTemplate', defaultPrerenderTemplate);\n\n // Validation\n\n this.addProp(options, 'validate');\n\n // Security\n\n this.addProp(options, 'unsafeRenderTo', false);\n\n // A mapping of tag->component so we can reference components by string tag name\n\n Component.components[this.tag] = this;\n\n // Register all of the drivers for instantiating components. The model used is -- there's a standard javascript\n // way of rendering a component, then each other technology (e.g. react) needs to hook into that interface.\n // This makes us a little more pluggable and loosely coupled.\n this.registerDrivers();\n this.registerChild();\n this.listenDelegate();\n }\n\n @memoize\n getPropNames() : Array {\n let props = Object.keys(this.props);\n\n for (let key of Object.keys(this.builtinProps)) {\n if (props.indexOf(key) === -1) {\n props.push(key);\n }\n }\n\n return props;\n }\n\n // $FlowFixMe\n getProp(name : string) : MixedPropDefinitionType

{\n // $FlowFixMe\n return this.props[name] || this.builtinProps[name];\n }\n\n registerDrivers() {\n this.driverCache = {};\n\n for (let driverName of Object.keys(drivers)) {\n if (driverName.indexOf('_') === 0) {\n continue;\n }\n\n let driver = drivers[driverName];\n let glob = driver.global();\n if (glob) {\n this.driver(driverName, glob);\n }\n }\n }\n\n driver(name : string, dep : mixed) : mixed {\n if (!drivers[name]) {\n throw new Error(`Could not find driver for framework: ${ name }`);\n }\n\n if (!this.driverCache[name]) {\n this.driverCache[name] = drivers[name].register(this, dep);\n }\n\n return this.driverCache[name];\n }\n\n registerChild() : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n if (this.isChild()) {\n return new ChildComponent(this);\n }\n });\n }\n\n listenDelegate() {\n on(`${ POST_MESSAGE.ALLOW_DELEGATE }_${ this.name }`, () => {\n return true;\n });\n\n on(`${ POST_MESSAGE.DELEGATE }_${ this.name }`, ({ source, origin, data }) => {\n\n let domain = this.getDomain(null, data.env || this.defaultEnv);\n\n if (!domain) {\n throw new Error(`Could not determine domain to allow remote render`);\n }\n\n if (!matchDomain(domain, origin)) {\n throw new Error(`Can not render from ${ origin } - expected ${ domain.toString() }`);\n }\n\n let delegate = this.delegate(source, data.options);\n\n return {\n overrides: delegate.getOverrides(data.context),\n destroy: () => delegate.destroy()\n };\n });\n }\n\n canRenderTo(win : CrossDomainWindowType) : ZalgoPromise {\n return send(win, `${ POST_MESSAGE.ALLOW_DELEGATE }_${ this.name }`).then(({ data }) => {\n return data;\n }).catch(() => {\n return false;\n });\n }\n\n\n getValidDomain(url : ?string) : ?(string | RegExp) {\n\n if (!url) {\n return;\n }\n\n let domain = getDomainFromUrl(url);\n\n if (typeof this.domain === 'string' && domain === this.domain) {\n return domain;\n }\n\n let domains = this.domain;\n\n if (domains && typeof domains === 'object' && !(domains instanceof RegExp)) {\n for (let env of Object.keys(domains)) {\n\n if (env === 'test') {\n continue;\n }\n\n if (domain === domains[env]) {\n return domain;\n }\n }\n }\n }\n\n\n getDomain(url : ?string, env : string) : ?(string | RegExp) {\n\n let domain = this.getForEnv(this.domain, env);\n\n if (domain) {\n return domain;\n }\n\n domain = this.getValidDomain(url);\n\n if (domain) {\n return domain;\n }\n\n // $FlowFixMe\n let envUrl = this.getForEnv(this.url, env);\n\n if (envUrl) {\n // $FlowFixMe\n return getDomainFromUrl(envUrl);\n }\n\n if (url) {\n return getDomainFromUrl(url);\n }\n }\n\n getBridgeUrl(env : string) : ?string {\n // $FlowFixMe\n return this.getForEnv(this.bridgeUrl, env);\n }\n\n getForEnv(item : (string | RegExp) | { [string] : (string | RegExp) }, env : ?string) : ?(string | RegExp) {\n\n if (!item) {\n return;\n }\n\n if (typeof item === 'string' || item instanceof RegExp) {\n return item;\n }\n\n if (!env) {\n env = this.defaultEnv;\n }\n\n if (!env) {\n return;\n }\n\n if (env && typeof item === 'object' && item[env]) {\n return item[env];\n }\n }\n\n getBridgeDomain(env : string) : ?string {\n\n // $FlowFixMe\n let bridgeDomain = this.getForEnv(this.bridgeDomain, env);\n\n if (bridgeDomain) {\n // $FlowFixMe\n return bridgeDomain;\n }\n\n let bridgeUrl = this.getBridgeUrl(env);\n\n if (bridgeUrl) {\n return getDomainFromUrl(bridgeUrl);\n }\n }\n\n getUrl(env : string, props : BuiltInPropsType & P) : (string | ZalgoPromise) {\n\n // $FlowFixMe\n let url = this.getForEnv(this.url, env);\n\n if (url) {\n // $FlowFixMe\n return url;\n }\n\n if (this.buildUrl) {\n return this.buildUrl(props);\n }\n\n throw new Error(`Unable to get url`);\n }\n\n isZoidComponent() : boolean {\n return isZoidComponentWindow();\n }\n\n isChild() : boolean {\n if (!isZoidComponentWindow()) {\n return false;\n }\n\n const { tag, childDomain } = getComponentMeta();\n\n if (childDomain && childDomain !== getDomain()) {\n return false;\n }\n\n if (tag !== this.tag) {\n return false;\n }\n\n return true;\n }\n\n\n createError(message : string, tag : ?string) : Error {\n return new Error(`[${ tag || this.tag }] ${ message }`);\n }\n\n\n /* Init\n ----\n\n Shortcut to instantiate a component on a parent page, with props\n */\n\n init(props : (PropsType & P), context : ?string, element : ElementRefType) : ParentComponent

{\n return new ParentComponent(this, this.getRenderContext(context, element), { props });\n }\n\n\n delegate(source : CrossDomainWindowType, options : DelegateOptionsType) : DelegateComponent

{\n return new DelegateComponent(this, source, options);\n }\n\n validateRenderContext(context : ?string, element : ?ElementRefType) {\n if (context && !this.contexts[context]) {\n throw new Error(`[${ this.tag }] Can not render to ${ context }`);\n }\n\n if (!element && context === CONTEXT_TYPES.IFRAME) {\n throw new Error(`[${ this.tag }] Context type ${ CONTEXT_TYPES.IFRAME } requires an element selector`);\n }\n }\n\n getDefaultContext() : string {\n if (this.defaultContext) {\n return this.defaultContext;\n } else if (this.contexts[CONTEXT_TYPES.IFRAME]) {\n return CONTEXT_TYPES.IFRAME;\n } else if (this.contexts[CONTEXT_TYPES.POPUP]) {\n return CONTEXT_TYPES.POPUP;\n }\n\n throw new Error(`Can not determine default context`);\n }\n\n getRenderContext(context : ?string, element : ?ElementRefType) : string {\n context = context || this.getDefaultContext();\n this.validateRenderContext(context, element);\n return context;\n }\n\n\n /* Render\n ------\n\n Shortcut to render a parent component\n */\n\n render(props : (PropsType & P), element : ?ElementRefType) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(null, element), { props }).render(element);\n });\n }\n\n renderIframe(props : (PropsType & P), element : ElementRefType) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(CONTEXT_TYPES.IFRAME, element), { props }).render(element);\n });\n }\n\n renderPopup(props : (PropsType & P)) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(CONTEXT_TYPES.POPUP), { props }).render();\n });\n }\n\n renderTo(win : CrossDomainWindowType, props : (PropsType & P), element : ?ElementRefType) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(null, element), { props }).renderTo(win, element);\n });\n }\n\n renderIframeTo(win : CrossDomainWindowType, props : (PropsType & P), element : ElementRefType) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(CONTEXT_TYPES.IFRAME, element), { props }).renderTo(win, element);\n });\n }\n\n renderPopupTo(win : CrossDomainWindowType, props : (PropsType & P)) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(CONTEXT_TYPES.POPUP), { props }).renderTo(win);\n });\n }\n\n prerender(props : (PropsType & P), element : ElementRefType) : { render : ((PropsType & P), ElementRefType) => ZalgoPromise>, renderTo : (CrossDomainWindowType, (PropsType & P), ElementRefType) => ZalgoPromise> } {\n let instance = new ParentComponent(this, this.getRenderContext(null, element), { props });\n instance.prefetch();\n\n return {\n render(innerProps : (PropsType & P), innerElement : ElementRefType) : ZalgoPromise> {\n if (innerProps) {\n instance.updateProps(innerProps);\n }\n\n return instance.render(innerElement);\n },\n\n renderTo(win : CrossDomainWindowType, innerProps : (PropsType & P), innerElement : ElementRefType) : ZalgoPromise> {\n if (innerProps) {\n instance.updateProps(innerProps);\n }\n\n return instance.renderTo(win, innerElement);\n },\n\n get html() : ?ZalgoPromise {\n return instance.html;\n },\n\n set html(value) {\n instance.html = value;\n }\n };\n }\n\n /* Log\n ---\n\n Log an event using the component name\n */\n\n log(event : string, payload : { [ string ] : string } = {}) {\n info(this.name, event, payload);\n }\n\n\n /* Log Warning\n -----------\n\n Log a warning\n */\n\n logWarning(event : string, payload : { [ string ] : string }) {\n warn(this.name, event, payload);\n }\n\n\n /* Log Error\n ---------\n\n Log an error\n */\n\n logError(event : string, payload : { [ string ] : string }) {\n error(this.name, event, payload);\n }\n\n static components : { [string] : Component<*> } = {}\n\n static getByTag(tag : string) : Component {\n return Component.components[tag];\n }\n}\n","/* @flow */\n\nexport * from './component';\nexport * from './parent';\nexport * from './child';\n","/* @flow */\n\nimport { type ZalgoPromise } from 'zalgo-promise/src';\n// eslint-disable-next-line import/no-namespace\nimport * as _postRobot from 'post-robot/src';\n\nimport { Component, type ComponentOptionsType } from './component';\nimport { ParentComponent } from './component/parent';\n// eslint-disable-next-line import/no-namespace\nimport * as _CONSTANTS from './constants';\n\nexport function create

(options : ComponentOptionsType

) : Component

{\n return new Component(options);\n}\n\nexport function getByTag

(tag : string) : Component

{\n return Component.getByTag(tag);\n}\n\nexport { getCurrentScriptDir } from './lib';\n\nexport function destroyAll() : ZalgoPromise {\n return ParentComponent.destroyAll();\n}\nexport let postRobot = _postRobot;\n\nexport * from './error';\n\nexport const CONSTANTS = _CONSTANTS;\n\nexport type ZoidComponent

= Component

;\n","/* @flow */\n\n// eslint-disable-next-line import/no-namespace\nimport * as INTERFACE from './interface';\n\nexport * from './interface';\nexport default INTERFACE;\n","/* @flow */\n\nimport {\n getOpener,\n getTop\n} from 'cross-domain-utils/src';\n\nexport function getUserAgent() : string {\n return window.navigator.mockUserAgent || window.navigator.userAgent;\n}\n\nexport function isDevice() : boolean {\n const userAgent = getUserAgent();\n if (userAgent.match(/Android|webOS|iPhone|iPad|iPod|bada|Symbian|Palm|CriOS|BlackBerry|IEMobile|WindowsMobile|Opera Mini/i)) {\n return true;\n }\n\n return false;\n}\n\nexport function isInsidePopup() : boolean {\n // Checks to see if the top-most window is a pop-up\n return Boolean(getOpener(getTop(window) || window));\n}\n\nexport function isStandAlone() : boolean {\n // Chrome interprets pop-up windows as standalone windows\n return !isInsidePopup() && (window.navigator.standalone === true || window.matchMedia('(display-mode: standalone)').matches);\n}\n\nexport function isFacebookWebView(ua? : string = getUserAgent()) : boolean {\n return (ua.indexOf('FBAN') !== -1) || (ua.indexOf('FBAV') !== -1);\n}\n\nexport function isFirefoxIOS(ua? : string = getUserAgent()) : boolean {\n return (/FxiOS/i).test(ua);\n}\n\nexport function isEdgeIOS(ua? : string = getUserAgent()) : boolean {\n return (/EdgiOS/i).test(ua);\n}\n\nexport function isOperaMini(ua? : string = getUserAgent()) : boolean {\n return ua.indexOf('Opera Mini') > -1;\n}\n\nexport function isAndroid(ua? : string = getUserAgent()) : boolean {\n return (/Android/).test(ua);\n}\n\nexport function isIos(ua? : string = getUserAgent()) : boolean {\n return (/iPhone|iPod|iPad/).test(ua);\n}\n\nexport function isGoogleSearchApp(ua? : string = getUserAgent()) : boolean {\n return (/\\bGSA\\b/).test(ua);\n}\n\nexport function isQQBrowser(ua? : string = getUserAgent()) : boolean {\n return (/QQBrowser/).test(ua);\n}\n\nexport function isIosWebview(ua? : string = getUserAgent()) : boolean {\n if (isIos(ua)) {\n if (isGoogleSearchApp(ua)) {\n return true;\n }\n return (/.+AppleWebKit(?!.*Safari)/).test(ua);\n }\n return false;\n}\n\nexport function isAndroidWebview(ua? : string = getUserAgent()) : boolean {\n if (isAndroid(ua)) {\n return (/Version\\/[\\d.]+/).test(ua) && !isOperaMini(ua);\n }\n return false;\n}\n\nexport function isWebView() : boolean {\n return isFacebookWebView() ||\n isIosWebview() ||\n isAndroidWebview();\n}\n\nexport function isIE() : boolean {\n\n if (window.document.documentMode) {\n return true;\n }\n\n if (window.navigator && typeof window.navigator.userAgent === 'string') {\n if ((/Edge|MSIE/i).test(window.navigator.userAgent)) {\n return true;\n }\n }\n\n return false;\n}\n\n\nexport function isIE11() : boolean {\n if (!isIE()) {\n return false;\n }\n\n if (window.navigator && typeof window.navigator.userAgent === 'string') {\n if ((/MSIE 11\\.0/i).test(window.navigator.userAgent)) {\n return true;\n }\n\n if ((/Trident/i).test(window.navigator.userAgent) && (/rv:11\\.0/i).test(window.navigator.userAgent)) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function isIECompHeader() : boolean {\n const mHttp = window.document.querySelector('meta[http-equiv=\"X-UA-Compatible\"]');\n const mContent = window.document.querySelector('meta[content=\"IE=edge\"]');\n if (mHttp && mContent) {\n return true;\n }\n return false;\n}\n\nexport function isElectron() : boolean {\n const userAgent = getUserAgent();\n // here we want a case-insensitive full word boundary\n return (/\\belectron\\b/i).test(userAgent);\n}\n\nexport function isIEIntranet() : boolean {\n if (!isIE11()) {\n return false;\n }\n\n // This status check only works for older versions of IE with document.documentMode set\n\n if (window.document.documentMode) {\n try {\n const status = window.status;\n\n window.status = 'testIntranetMode';\n\n if (window.status === 'testIntranetMode') {\n window.status = status;\n\n return true;\n }\n\n return false;\n\n } catch (err) {\n\n return false;\n }\n }\n\n return false;\n}\n\nexport function isMacOsCna() : boolean {\n const userAgent = getUserAgent();\n return (/Macintosh.*AppleWebKit(?!.*Safari)/i).test(userAgent);\n}\n\nexport function supportsPopups(ua? : string = getUserAgent()) : boolean {\n return !(isIosWebview(ua) || isAndroidWebview(ua) || isOperaMini(ua) ||\n isFirefoxIOS(ua) || isEdgeIOS(ua) || isFacebookWebView(ua) || isQQBrowser(ua) || isElectron() || isMacOsCna() || isStandAlone());\n}\n","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","/* @flow */\n\nimport { type ZalgoPromise } from 'zalgo-promise/src';\nimport { getParent, isWindowClosed, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONSTANTS } from '../conf';\nimport { noop } from '../lib';\nimport { global } from '../global';\n\n/*\n HERE BE DRAGONS\n\n Warning: this file may look weird. Why save the tunnel window in an Object\n by ID, then look it up later, rather than just using the reference from the closure scope?\n\n The reason is, that ends up meaning the garbage collector can never get its hands\n on a closed window, since our closure has continued access to it -- and post-robot\n has no good way to know whether to clean up the function with the closure scope.\n\n If you're editing this file, be sure to run significant memory / GC tests afterwards.\n*/\n\nglobal.tunnelWindows = global.tunnelWindows || {};\nglobal.tunnelWindowId = 0;\n\nfunction deleteTunnelWindow(id) {\n\n try {\n if (global.tunnelWindows[id]) {\n delete global.tunnelWindows[id].source;\n }\n } catch (err) {\n // pass\n }\n\n delete global.tunnelWindows[id];\n}\n\nfunction cleanTunnelWindows() {\n let tunnelWindows = global.tunnelWindows;\n\n for (let key of Object.keys(tunnelWindows)) {\n let tunnelWindow = tunnelWindows[key];\n\n try {\n noop(tunnelWindow.source);\n } catch (err) {\n deleteTunnelWindow(key);\n continue;\n }\n\n if (isWindowClosed(tunnelWindow.source)) {\n deleteTunnelWindow(key);\n }\n }\n}\n\ntype TunnelWindowDataType = {\n name : string,\n source : CrossDomainWindowType,\n canary : () => void,\n sendMessage : (message : string) => void\n};\n\nfunction addTunnelWindow({ name, source, canary, sendMessage } : TunnelWindowDataType) : number {\n cleanTunnelWindows();\n global.tunnelWindowId += 1;\n global.tunnelWindows[global.tunnelWindowId] = { name, source, canary, sendMessage };\n return global.tunnelWindowId;\n}\n\nfunction getTunnelWindow(id : number) : TunnelWindowDataType {\n return global.tunnelWindows[id];\n}\n\nglobal.openTunnelToParent = function openTunnelToParent({ name, source, canary, sendMessage } : TunnelWindowDataType) : ZalgoPromise<{ source : CrossDomainWindowType, origin : string, data : Object }> {\n\n let parentWindow = getParent(window);\n\n if (!parentWindow) {\n throw new Error(`No parent window found to open tunnel to`);\n }\n\n let id = addTunnelWindow({ name, source, canary, sendMessage });\n\n return global.send(parentWindow, CONSTANTS.POST_MESSAGE_NAMES.OPEN_TUNNEL, {\n\n name,\n\n sendMessage() {\n\n let tunnelWindow = getTunnelWindow(id);\n\n try {\n // IE gets antsy if you try to even reference a closed window\n noop(tunnelWindow && tunnelWindow.source);\n } catch (err) {\n deleteTunnelWindow(id);\n return;\n }\n\n if (!tunnelWindow || !tunnelWindow.source || isWindowClosed(tunnelWindow.source)) {\n return;\n }\n\n try {\n tunnelWindow.canary();\n } catch (err) {\n return;\n }\n\n tunnelWindow.sendMessage.apply(this, arguments);\n }\n\n }, { domain: CONSTANTS.WILDCARD });\n};\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getDomain, isSameDomain, isOpener, isSameTopWindow, matchDomain, getUserAgent, getDomainFromUrl, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONFIG, CONSTANTS } from '../conf';\nimport { global } from '../global';\n\nexport function needsBridgeForBrowser() : boolean {\n\n if (getUserAgent(window).match(/MSIE|trident|edge\\/12|edge\\/13/i)) {\n return true;\n }\n\n if (!CONFIG.ALLOW_POSTMESSAGE_POPUP) {\n return true;\n }\n\n return false;\n}\n\nexport function needsBridgeForWin(win : CrossDomainWindowType) : boolean {\n\n if (!isSameTopWindow(window, win)) {\n return true;\n }\n\n return false;\n}\n\nexport function needsBridgeForDomain(domain : ?string, win : ?CrossDomainWindowType) : boolean {\n\n if (domain) {\n if (getDomain() !== getDomainFromUrl(domain)) {\n return true;\n }\n } else if (win) {\n if (!isSameDomain(win)) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function needsBridge({ win, domain } : { win? : CrossDomainWindowType, domain? : string }) : boolean {\n\n if (!needsBridgeForBrowser()) {\n return false;\n }\n\n if (domain && !needsBridgeForDomain(domain, win)) {\n return false;\n }\n\n if (win && !needsBridgeForWin(win)) {\n return false;\n }\n\n return true;\n}\n\nexport function getBridgeName(domain : string) : string {\n\n domain = domain || getDomainFromUrl(domain);\n\n let sanitizedDomain = domain.replace(/[^a-zA-Z0-9]+/g, '_');\n\n let id = `${ CONSTANTS.BRIDGE_NAME_PREFIX }_${ sanitizedDomain }`;\n\n return id;\n}\n\nexport function isBridge() : boolean {\n return Boolean(window.name && window.name === getBridgeName(getDomain()));\n}\n\nexport let documentBodyReady = new ZalgoPromise(resolve => {\n\n if (window.document && window.document.body) {\n return resolve(window.document.body);\n }\n\n let interval = setInterval(() => {\n if (window.document && window.document.body) {\n clearInterval(interval);\n return resolve(window.document.body);\n }\n }, 10);\n});\n\nglobal.remoteWindows = global.remoteWindows || new WeakMap();\n\nexport function registerRemoteWindow(win : CrossDomainWindowType) {\n global.remoteWindows.set(win, { sendMessagePromise: new ZalgoPromise() });\n}\n\nexport function findRemoteWindow(win : CrossDomainWindowType) : { sendMessagePromise : ZalgoPromise<(remoteWin : CrossDomainWindowType, message : string, remoteDomain : string) => void> } {\n return global.remoteWindows.get(win);\n}\n\nexport function registerRemoteSendMessage(win : CrossDomainWindowType, domain : string, sendMessage : (message : string) => void) {\n\n let remoteWindow = findRemoteWindow(win);\n\n if (!remoteWindow) {\n throw new Error(`Window not found to register sendMessage to`);\n }\n\n let sendMessageWrapper = (remoteWin : CrossDomainWindowType, message : string, remoteDomain : string) => {\n\n if (remoteWin !== win) {\n throw new Error(`Remote window does not match window`);\n }\n\n if (!matchDomain(remoteDomain, domain)) {\n throw new Error(`Remote domain ${ remoteDomain } does not match domain ${ domain }`);\n }\n\n sendMessage(message);\n };\n\n remoteWindow.sendMessagePromise.resolve(sendMessageWrapper);\n remoteWindow.sendMessagePromise = ZalgoPromise.resolve(sendMessageWrapper);\n}\n\nexport function rejectRemoteSendMessage(win : CrossDomainWindowType, err : Error) {\n\n let remoteWindow = findRemoteWindow(win);\n\n if (!remoteWindow) {\n throw new Error(`Window not found on which to reject sendMessage`);\n }\n\n remoteWindow.sendMessagePromise.asyncReject(err);\n}\n\nexport function sendBridgeMessage(win : CrossDomainWindowType, message : string, domain : string) : ZalgoPromise {\n\n let messagingChild = isOpener(window, win);\n let messagingParent = isOpener(win, window);\n\n if (!messagingChild && !messagingParent) {\n throw new Error(`Can only send messages to and from parent and popup windows`);\n }\n\n let remoteWindow = findRemoteWindow(win);\n\n if (!remoteWindow) {\n throw new Error(`Window not found to send message to`);\n }\n\n return remoteWindow.sendMessagePromise.then(sendMessage => {\n return sendMessage(win, message, domain);\n });\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { isSameDomain, getOpener, getFrames, getDomain, getFrameByName, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONSTANTS } from '../conf';\nimport { weakMapMemoize, noop } from '../lib';\nimport { global } from '../global';\n\nimport { needsBridge, registerRemoteWindow, rejectRemoteSendMessage, registerRemoteSendMessage, getBridgeName } from './common';\n\nlet awaitRemoteBridgeForWindow = weakMapMemoize((win : CrossDomainWindowType) : ZalgoPromise => {\n return ZalgoPromise.try(() => {\n for (let frame of getFrames(win)) {\n try {\n // $FlowFixMe\n if (frame && frame !== window && isSameDomain(frame) && frame[CONSTANTS.WINDOW_PROPS.POSTROBOT]) {\n return frame;\n }\n\n } catch (err) {\n continue;\n }\n }\n\n try {\n let frame = getFrameByName(win, getBridgeName(getDomain()));\n\n if (!frame) {\n return;\n }\n\n // $FlowFixMe\n if (isSameDomain(frame) && frame[CONSTANTS.WINDOW_PROPS.POSTROBOT]) {\n return frame;\n }\n\n return new ZalgoPromise(resolve => {\n\n let interval;\n let timeout;\n\n interval = setInterval(() => {\n // $FlowFixMe\n if (frame && isSameDomain(frame) && frame[CONSTANTS.WINDOW_PROPS.POSTROBOT]) {\n clearInterval(interval);\n clearTimeout(timeout);\n return resolve(frame);\n }\n }, 100);\n\n timeout = setTimeout(() => {\n clearInterval(interval);\n return resolve();\n }, 2000);\n });\n\n } catch (err) {\n // pass\n }\n });\n});\n\nexport function openTunnelToOpener() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n const opener = getOpener(window);\n\n if (!opener) {\n return;\n }\n\n if (!needsBridge({ win: opener })) {\n return;\n }\n\n registerRemoteWindow(opener);\n\n return awaitRemoteBridgeForWindow(opener).then(bridge => {\n\n if (!bridge) {\n return rejectRemoteSendMessage(opener, new Error(`Can not register with opener: no bridge found in opener`));\n }\n\n if (!window.name) {\n return rejectRemoteSendMessage(opener, new Error(`Can not register with opener: window does not have a name`));\n }\n\n return bridge[CONSTANTS.WINDOW_PROPS.POSTROBOT].openTunnelToParent({\n\n name: window.name,\n\n source: window,\n\n canary() {\n // pass\n },\n\n sendMessage(message) {\n\n try {\n noop(window);\n } catch (err) {\n return;\n }\n\n if (!window || window.closed) {\n return;\n }\n\n try {\n global.receiveMessage({\n data: message,\n origin: this.origin,\n source: this.source\n });\n } catch (err) {\n ZalgoPromise.reject(err);\n }\n }\n\n }).then(({ source, origin, data }) => {\n\n if (source !== opener) {\n throw new Error(`Source does not match opener`);\n }\n\n registerRemoteSendMessage(source, origin, data.sendMessage);\n\n }).catch(err => {\n\n rejectRemoteSendMessage(opener, err);\n throw err;\n });\n });\n });\n}\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getDomain, getFrameByName, isWindowClosed, getDomainFromUrl, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONFIG, CONSTANTS } from '../conf';\nimport { onChildWindowReady } from '../lib';\nimport { global } from '../global';\n\nimport { getBridgeName, documentBodyReady, registerRemoteSendMessage, registerRemoteWindow } from './common';\n\nglobal.bridges = global.bridges || {};\nglobal.bridgeFrames = global.bridgeFrames || {};\n\nglobal.popupWindowsByWin = global.popupWindowsByWin || new WeakMap();\nglobal.popupWindowsByName = global.popupWindowsByName || {};\n\nfunction listenForRegister(source, domain) {\n global.on(CONSTANTS.POST_MESSAGE_NAMES.OPEN_TUNNEL, { window: source, domain }, ({ origin, data }) => {\n\n if (origin !== domain) {\n throw new Error(`Domain ${ domain } does not match origin ${ origin }`);\n }\n\n if (!data.name) {\n throw new Error(`Register window expected to be passed window name`);\n }\n\n if (!data.sendMessage) {\n throw new Error(`Register window expected to be passed sendMessage method`);\n }\n\n if (!global.popupWindowsByName[data.name]) {\n throw new Error(`Window with name ${ data.name } does not exist, or was not opened by this window`);\n }\n\n if (!global.popupWindowsByName[data.name].domain) {\n throw new Error(`We do not have a registered domain for window ${ data.name }`);\n }\n\n if (global.popupWindowsByName[data.name].domain !== origin) {\n throw new Error(`Message origin ${ origin } does not matched registered window origin ${ global.popupWindowsByName[data.name].domain }`);\n }\n\n registerRemoteSendMessage(global.popupWindowsByName[data.name].win, domain, data.sendMessage);\n\n return {\n sendMessage(message) {\n\n if (!window || window.closed) {\n return;\n }\n\n let winDetails = global.popupWindowsByName[data.name];\n\n if (!winDetails) {\n return;\n }\n\n try {\n global.receiveMessage({\n data: message,\n origin: winDetails.domain,\n source: winDetails.win\n });\n } catch (err) {\n ZalgoPromise.reject(err);\n }\n }\n };\n });\n}\n\nfunction openBridgeFrame(name : string, url : string) : HTMLIFrameElement {\n\n let iframe = document.createElement(`iframe`);\n\n iframe.setAttribute(`name`, name);\n iframe.setAttribute(`id`, name);\n\n iframe.setAttribute(`style`, `display: none; margin: 0; padding: 0; border: 0px none; overflow: hidden;`);\n iframe.setAttribute(`frameborder`, `0`);\n iframe.setAttribute(`border`, `0`);\n iframe.setAttribute(`scrolling`, `no`);\n iframe.setAttribute(`allowTransparency`, `true`);\n\n iframe.setAttribute(`tabindex`, `-1`);\n iframe.setAttribute(`hidden`, `true`);\n iframe.setAttribute(`title`, ``);\n iframe.setAttribute(`role`, `presentation`);\n\n iframe.src = url;\n\n return iframe;\n}\n\nexport function hasBridge(url : string, domain : string) : boolean {\n domain = domain || getDomainFromUrl(url);\n return Boolean(global.bridges[domain]);\n}\n\nexport function openBridge(url : string, domain : string) : ZalgoPromise {\n\n domain = domain || getDomainFromUrl(url);\n\n if (global.bridges[domain]) {\n return global.bridges[domain];\n }\n\n global.bridges[domain] = ZalgoPromise.try(() => {\n\n if (getDomain() === domain) {\n throw new Error(`Can not open bridge on the same domain as current domain: ${ domain }`);\n }\n\n let name = getBridgeName(domain);\n let frame = getFrameByName(window, name);\n\n if (frame) {\n throw new Error(`Frame with name ${ name } already exists on page`);\n }\n\n let iframe = openBridgeFrame(name, url);\n global.bridgeFrames[domain] = iframe;\n\n return documentBodyReady.then(body => {\n\n body.appendChild(iframe);\n\n let bridge = iframe.contentWindow;\n\n listenForRegister(bridge, domain);\n\n return new ZalgoPromise((resolve, reject) => {\n\n iframe.onload = resolve;\n iframe.onerror = reject;\n\n }).then(() => {\n\n return onChildWindowReady(bridge, CONFIG.BRIDGE_TIMEOUT, `Bridge ${ url }`);\n\n }).then(() => {\n\n return bridge;\n });\n });\n });\n\n return global.bridges[domain];\n}\n\nlet windowOpen = window.open;\n\nwindow.open = function windowOpenWrapper(url : string, name : string, options : string, last : mixed) : mixed {\n\n let domain = url;\n\n if (url && url.indexOf(CONSTANTS.MOCK_PROTOCOL) === 0) {\n [ domain, url ] = url.split('|');\n }\n\n if (domain) {\n domain = getDomainFromUrl(domain);\n }\n\n let win = windowOpen.call(this, url, name, options, last);\n\n if (!win) {\n return win;\n }\n\n if (url) {\n registerRemoteWindow(win);\n }\n\n for (let winName of Object.keys(global.popupWindowsByName)) {\n if (isWindowClosed(global.popupWindowsByName[winName].win)) {\n delete global.popupWindowsByName[winName];\n }\n }\n\n if (name && win) {\n let winOptions = global.popupWindowsByWin.get(win) ||\n global.popupWindowsByName[name] || {};\n\n winOptions.name = winOptions.name || name;\n winOptions.win = winOptions.win || win;\n winOptions.domain = winOptions.domain || domain;\n\n global.popupWindowsByWin.set(win, winOptions);\n global.popupWindowsByName[name] = winOptions;\n }\n\n return win;\n};\n\nexport function linkUrl(win : CrossDomainWindowType, url : string) {\n\n let winOptions = global.popupWindowsByWin.get(win);\n\n if (winOptions) {\n winOptions.domain = getDomainFromUrl(url);\n registerRemoteWindow(win);\n }\n}\n\nexport function destroyBridges() {\n for (let domain of Object.keys(global.bridgeFrames)) {\n let frame = global.bridgeFrames[domain];\n if (frame.parentNode) {\n frame.parentNode.removeChild(frame);\n }\n }\n global.bridgeFrames = {};\n global.bridges = {};\n}\n","/* @flow */\n\n// eslint-disable-next-line import/no-unassigned-import\nimport './bridge';\n\nexport * from './child';\nexport * from './common';\nexport * from './parent';\n","/* @flow */\n\nimport { info } from 'beaver-logger/client';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport type { CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { LANG_TO_DEFAULT_COUNTRY, LOCALE } from '../constants';\nimport type { LocaleType } from '../types';\nimport { config } from '../config';\n\nimport { memoize } from './util';\nimport { isDevice } from './device';\n\nfunction isDocumentReady() : boolean {\n return Boolean(document.body) && document.readyState === 'complete';\n}\n\nexport const documentReady : ZalgoPromise = new ZalgoPromise(resolve => {\n\n if (isDocumentReady()) {\n return resolve();\n }\n\n const interval = setInterval(() => {\n if (isDocumentReady()) {\n clearInterval(interval);\n return resolve();\n }\n }, 10);\n});\n\nexport const documentBody : ZalgoPromise = documentReady.then(() => {\n if (document.body) {\n return document.body;\n }\n\n throw new Error('Document ready but document.body not present');\n});\n\n\nexport function loadScript(src : string, timeout : number = 0, attrs : Object = {}) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n const script = document.createElement('script');\n\n script.addEventListener('load', () => {\n resolve();\n });\n\n // For Internet explorer 8 support\n script.onreadystatechange = function scriptOnReadyStateChange() {\n if (this.readyState === 'complete' || this.readyState === 'loaded') {\n resolve();\n }\n };\n\n const scriptLoadError = new Error('script_loading_error');\n\n script.addEventListener('error', () => {\n return reject(scriptLoadError);\n });\n\n if (timeout) {\n setTimeout(() => {\n return reject(new Error('script_loading_timed_out'));\n }, timeout);\n }\n\n for (const attr of Object.keys(attrs)) {\n script.setAttribute(attr, attrs[attr]);\n }\n\n script.setAttribute('src', src);\n\n const head = document.getElementsByTagName('head')[0];\n\n head.appendChild(script);\n });\n}\n\n\nexport function isNodeList(nodes : mixed) : boolean {\n\n const result = Object.prototype.toString.call(nodes);\n\n if (result === '[object HTMLCollection]' || result === '[object NodeList]') {\n return true;\n }\n\n return false;\n}\n\nexport function isElement(item : mixed) : boolean {\n return item instanceof HTMLElement;\n}\n\nexport function getElement(item : mixed) : ?HTMLElement {\n\n if (!item) {\n return;\n }\n\n if (item instanceof HTMLElement) {\n return item;\n }\n\n if (typeof item === 'string') {\n\n if (document.querySelector) {\n const result = document.querySelector(item);\n\n if (result) {\n return result;\n }\n }\n\n return document.getElementById(item);\n }\n}\n\nexport function getElements(collection : $ReadOnlyArray | NodeList | HTMLCollection | HTMLElement | string) : $ReadOnlyArray {\n\n if (!collection) {\n return [];\n }\n\n if (collection instanceof HTMLElement || typeof collection === 'string') {\n const element = getElement(collection);\n if (element) {\n return [ element ];\n }\n return [];\n }\n\n if (Array.isArray(collection) || collection instanceof NodeList || collection instanceof HTMLCollection) {\n const result = [];\n\n for (let i = 0; i < collection.length; i++) {\n const el = getElement(collection[i]);\n if (el) {\n result.push(el);\n }\n }\n\n return result;\n }\n\n return [];\n}\n\nexport function onDocumentReady(method : () => void) : ZalgoPromise {\n return documentReady.then(method);\n}\n\nexport const parseQuery = memoize((queryString : string) : Object => {\n\n const params = {};\n\n if (!queryString) {\n return params;\n }\n\n if (queryString.indexOf('=') === -1) {\n return params;\n }\n\n for (let pair of queryString.split('&')) {\n pair = pair.split('=');\n\n if (pair[0] && pair[1]) {\n params[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n }\n\n return params;\n});\n\n\nexport function getQueryParam(name : string) : string {\n return parseQuery(window.location.search.slice(1))[name];\n}\n\nexport function urlWillRedirectPage(url : string) : boolean {\n\n if (url.indexOf('#') === -1) {\n return true;\n }\n\n if (url.indexOf('#') === 0) {\n return false;\n }\n\n if (url.split('#')[0] === window.location.href.split('#')[0]) {\n return false;\n }\n\n return true;\n}\n\nexport function extendUrl(url : string, params : { [key : string] : string } = {}) : string {\n\n const hasHash = url.indexOf('#') > 0;\n\n let [ serverUrl, hash ] = url.split('#');\n\n if (hash && !serverUrl) {\n [ serverUrl, hash ] = [ `#${ hash }`, '' ];\n }\n\n const [ originalUrl, originalQueryString ] = serverUrl.split('?');\n\n if (originalQueryString) {\n const originalQuery = parseQuery(originalQueryString);\n\n for (const key in originalQuery) {\n if (!params.hasOwnProperty(key)) {\n params[key] = originalQuery[key];\n }\n }\n }\n\n const newQueryString = Object.keys(params).filter(key => key && params[key]).sort().map(key => {\n return `${ encodeURIComponent(key) }=${ encodeURIComponent(params[key]) }`;\n }).join('&');\n\n let newUrl = originalUrl;\n\n if (newQueryString) {\n newUrl = `${ newUrl }?${ newQueryString }`;\n }\n\n if (hasHash) {\n newUrl = `${ newUrl }#${ hash || '' }`;\n }\n\n return newUrl;\n}\n\nexport function redirect(win : CrossDomainWindowType = window, url : string) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n\n info(`redirect`, { url });\n\n setTimeout(() => {\n win.location = url;\n if (!urlWillRedirectPage(url)) {\n resolve();\n }\n }, 1);\n });\n}\n\nexport function hasMetaViewPort() : boolean {\n const meta = document.querySelector('meta[name=viewport]');\n\n if (isDevice() && window.screen.width < 660 && !meta) {\n return false;\n }\n\n return true;\n}\n\nexport function getBrowserLocales() : $ReadOnlyArray {\n const nav = window.navigator;\n\n const locales = nav.languages\n ? Array.prototype.slice.apply(nav.languages)\n : [];\n\n if (nav.language) {\n locales.push(nav.language);\n }\n\n if (nav.userLanguage) {\n locales.push(nav.userLanguage);\n }\n\n return locales;\n}\n\nexport function normalizeLocale(locale : string) : ?LocaleType {\n\n if (locale && locale.match(/^[a-z]{2}[-_][A-Z]{2}$/)) {\n const [ lang, country ] = locale.split(/[-_]/);\n if (LOCALE[country] && LOCALE[country].indexOf(lang) !== -1) {\n return { country, lang };\n }\n }\n}\n\nexport function normalizeLang(lang : string) : ?LocaleType {\n\n if (lang && lang.match(/^[a-z]{2}$/)) {\n if (LANG_TO_DEFAULT_COUNTRY[lang]) {\n return { country: LANG_TO_DEFAULT_COUNTRY[lang], lang };\n }\n }\n}\n\nexport const getBrowserLocale = memoize(() : LocaleType => {\n\n const locales = getBrowserLocales();\n\n for (const locale of locales) {\n let loc = normalizeLocale(locale);\n if (loc) {\n info('better_browser_locale_full');\n return loc;\n }\n\n loc = normalizeLang(locale);\n if (loc) {\n info('better_browser_locale_lang');\n return loc;\n }\n }\n\n return config.defaultLocale;\n});\n\nexport function isElementVisible(el : HTMLElement) : boolean {\n return Boolean(el.offsetWidth || el.offsetHeight || el.getClientRects().length);\n}\n\nexport const enablePerformance = memoize(() : boolean => {\n /* eslint-disable compat/compat */\n return Boolean(\n window.performance &&\n performance.now &&\n performance.timing &&\n performance.timing.connectEnd &&\n performance.timing.navigationStart &&\n (Math.abs(performance.now() - Date.now()) > 1000) &&\n (performance.now() - (performance.timing.connectEnd - performance.timing.navigationStart)) > 0\n );\n /* eslint-enable compat/compat */\n});\n\nexport function getPageRenderTime() : ZalgoPromise {\n return documentReady.then(() => {\n\n if (!enablePerformance()) {\n return;\n }\n\n const timing = window.performance.timing; // eslint-disable-line compat/compat\n\n if (timing.connectEnd && timing.domInteractive) {\n return timing.domInteractive - timing.connectEnd;\n }\n });\n}\n\nexport function getResourceLoadTime(url : string) : ?number {\n\n if (!enablePerformance()) {\n return;\n }\n\n if (!window.performance || typeof window.performance.getEntries !== 'function') { // eslint-disable-line compat/compat\n return;\n }\n\n const entries = window.performance.getEntries(); // eslint-disable-line compat/compat\n\n for (let i = 0; i < entries.length; i++) {\n const entry = entries[i];\n\n if (entry && entry.name === url && entry.duration && entry.duration >= 0 && entry.duration <= 60000) {\n return Math.floor(entry.duration);\n }\n }\n}\n\nexport function htmlEncode(html : string = '') : string {\n return html.toString()\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(/\\//g, '/');\n}\n","/* @flow */\n\nexport function PopupOpenError(message : string) {\n this.message = message;\n}\n\nPopupOpenError.prototype = Object.create(Error.prototype);\n\nexport function IntegrationError(message : string) {\n this.message = message;\n}\n\nIntegrationError.prototype = Object.create(Error.prototype);\n\nexport function RenderError(message : string) {\n this.message = message;\n}\n\nRenderError.prototype = Object.create(Error.prototype);\n","/* @flow */\n\nimport { getParent, isSameDomain } from 'cross-domain-utils/src';\n\nimport { config } from '../config';\n\nimport { supportsPopups } from './device';\n\nexport function allowIframe() : boolean {\n\n if (!supportsPopups()) {\n return true;\n }\n\n const parentWindow = getParent(window);\n if (parentWindow && isSameDomain(parentWindow)) {\n return true;\n }\n\n const parentComponentWindow = window.xchild && window.xchild.getParentComponentWindow();\n if (parentComponentWindow && isSameDomain(parentComponentWindow)) {\n return true;\n }\n\n if (__TEST__) {\n return true;\n }\n\n return false;\n}\n\n\nexport function isPayPalDomain() : boolean {\n return Boolean(`${ window.location.protocol }//${ window.location.host }`.match(config.paypal_domain_regex)) || window.mockDomain === 'mock://www.paypal.com';\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nexport type Braintree = {|\n client : {\n create : Function\n },\n paypalCheckout : {\n create : Function\n }\n|};\n\nexport type BraintreePayPalClient = {|\n createPayment : Function,\n tokenizePayment : Function\n|};\n\nexport function awaitBraintreeClient(braintree : Braintree, auth : string | ZalgoPromise) : ZalgoPromise {\n return ZalgoPromise.resolve(auth).then(authorization => {\n return braintree.client.create({ authorization });\n }).then(client => {\n return braintree.paypalCheckout.create({ client });\n });\n}\n\nconst SUPPORTED_REST_FIELDS = {\n intent: 1,\n transactions: [\n {\n amount: {\n total: 1,\n currency: 1\n }\n }\n ],\n payer: {\n external_selected_funding_instrument_type: 1,\n shipping_address: {\n line1: 1,\n line2: 1,\n city: 1,\n state: 1,\n postal_code: 1,\n country_code: 1,\n phone: 1,\n recipient_name: 1\n }\n },\n application_context: {\n brand_name: 1,\n shipping_preference: 1,\n landing_page: 1\n }\n};\n\nfunction validate(obj, supported, name) {\n\n const supportedKeys = Object.keys(supported);\n\n for (const key of Object.keys(obj)) {\n\n if (supportedKeys.indexOf(key) === -1) {\n throw new Error(`Unsupported REST key for Braintree: ${ name }.${ key }`);\n }\n\n if (typeof obj[key] === 'object') {\n validate(obj[key], supported[key], `${ name }.${ key }`);\n }\n }\n}\n\nexport function mapPaymentToBraintree(payment : Object) : Object {\n validate(payment, SUPPORTED_REST_FIELDS, 'payment');\n\n const btPayment = {};\n\n btPayment.intent = payment.intent || 'sale';\n btPayment.flow = 'checkout';\n btPayment.amount = payment.transactions[0].amount.total;\n btPayment.currency = payment.transactions[0].amount.currency;\n\n if (payment.payer) {\n if (payment.payer.external_selected_funding_instrument_type === 'CREDIT') {\n btPayment.offerCredit = true;\n }\n\n if (payment.payer.shipping_address) {\n btPayment.shippingAddressOverride = {\n line1: payment.payer.shipping_address.line1,\n line2: payment.payer.shipping_address.line2,\n city: payment.payer.shipping_address.city,\n state: payment.payer.shipping_address.state,\n postalCode: payment.payer.shipping_address.postal_code,\n countryCode: payment.payer.shipping_address.country_code,\n phone: payment.payer.shipping_address.phone,\n recipientName: payment.payer.shipping_address.recipient_name\n };\n }\n }\n\n if (payment.application_context) {\n btPayment.displayName = payment.application_context.brand_name;\n btPayment.landingPageType = payment.application_context.landing_page;\n\n if (payment.application_context) {\n if (payment.application_context.shipping_preference === 'NO_SHIPPING') {\n btPayment.enableShippingAddress = false;\n } else if (payment.application_context.shipping_preference === 'GET_FROM_FILE') {\n btPayment.enableShippingAddress = true;\n btPayment.shippingAddressEditable = true;\n } else if (payment.application_context.shipping_preference === 'SET_PROVIDED_ADDRESS') {\n btPayment.enableShippingAddress = true;\n btPayment.shippingAddressEditable = false;\n }\n }\n }\n\n return btPayment;\n}\n","/* @flow */\n\nexport * from './checkout';\nexport * from './braintree';\n// export * from './popupBridge';\n","/* @flow */\n\nexport * from './script';\nexport * from './react';\nexport * from './vue';\nexport * from './angular';\nexport * from './ember';\nexport * from './glimmer';\nexport * from './angular2';\n","/* @flow */\n\nimport { config } from '../config';\nimport { LOG_LEVEL } from '../constants';\n\nimport { getSessionID, getSessionState } from './session';\n\nconst BEACON_URL = config.loggerUrl;\nconst APP_NAME = 'checkoutjs';\n\nexport function beacon(event : string, payload : Object = {}) {\n try {\n\n payload.event = `ppxo_${ event }`;\n payload.version = __PAYPAL_CHECKOUT__.__MINOR_VERSION__;\n payload.host = window.location.host;\n payload.uid = getSessionID();\n payload.appName = APP_NAME;\n\n let query = [];\n\n for (const key in payload) {\n if (payload.hasOwnProperty(key)) {\n query.push(`${ encodeURIComponent(key) }=${ encodeURIComponent(payload[key]) }`);\n }\n }\n\n query = query.join('&');\n\n if (!__TEST__) {\n const beaconImage = new window.Image();\n beaconImage.src = `${ BEACON_URL }?${ query }`;\n }\n\n setTimeout(() => {\n if (config.logLevel === LOG_LEVEL.DEBUG) {\n if (window.console && window.console.log) {\n window.console.log('*', event, payload);\n }\n }\n }, 1);\n\n } catch (err) {\n // pass\n }\n}\n\nfunction isCheckpointUnique(name : string) : boolean {\n return getSessionState(state => {\n state.loggedBeacons = state.loggedBeacons || [];\n\n if (state.loggedBeacons.indexOf(name) === -1) {\n state.loggedBeacons.push(name);\n return true;\n }\n\n return false;\n });\n}\n\nexport function checkpoint(name : string, payload : Object = {}, options : Object = {}) : void {\n try {\n let checkpointName = name;\n\n if (options.version) {\n const version = __PAYPAL_CHECKOUT__.__MINOR_VERSION__.replace(/[^0-9]+/g, '_');\n checkpointName = `${ version }_${ checkpointName }`;\n }\n\n if (!isCheckpointUnique(checkpointName)) {\n return;\n }\n\n return beacon(checkpointName, payload);\n\n } catch (err) {\n\n // pass\n }\n}\n\n\nconst FPTI_URL = 'https://t.paypal.com/ts';\n\nfunction buildPayload() : Object {\n return {\n v: `checkout.js.${ __PAYPAL_CHECKOUT__.__MINOR_VERSION__ }`,\n t: Date.now(),\n g: new Date().getTimezoneOffset(),\n flnm: 'ec:hermes:',\n shir: 'main_ec_hermes_',\n pgrp: 'main:ec:hermes::incontext-merchant',\n page: 'main:ec:hermes::incontext-merchant',\n vers: 'member:hermes:',\n qual: 'incontext',\n tmpl: 'merchant:incontext'\n };\n}\n\nexport function fpti(payload : Object = {}) {\n\n let query = [];\n\n payload = { ...buildPayload(), ...payload };\n\n for (const key in payload) {\n if (payload.hasOwnProperty(key)) {\n query.push(`${ encodeURIComponent(key) }=${ encodeURIComponent(payload[key]) }`);\n }\n }\n\n query = query.join('&');\n\n try {\n const beaconImage = new window.Image();\n beaconImage.src = `${ FPTI_URL }?${ query }`;\n } catch (err) {\n // pass\n }\n}\n","/* @flow */\n/** @jsx jsxDom */\n\nconst checkoutComponentStyle = `\n\n body {\n width: 100%;\n height: 100%;\n overflow: hidden;\n position: fixed;\n top: 0;\n left: 0;\n margin: 0;\n }\n\n .spinner {\n height: 100%;\n width: 100%;\n position: absolute;\n z-index: 10\n }\n\n .spinner .spinWrap {\n width: 200px;\n height: 100px;\n position: absolute;\n top: 50%;\n left: 50%;\n margin-left: -100px;\n margin-top: -50px\n }\n\n .spinner .loader,\n .spinner .spinnerImage {\n height: 100px;\n width: 100px;\n position: absolute;\n top: 0;\n left: 50%;\n opacity: 1;\n filter: alpha(opacity=100)\n }\n\n .spinner .spinnerImage {\n margin: 28px 0 0 -25px;\n background: url(https://www.paypalobjects.com/images/checkout/hermes/icon_ot_spin_lock_skinny.png) no-repeat\n }\n\n .spinner .loader {\n margin: 0 0 0 -55px;\n background-color: transparent;\n -webkit-animation: rotation .7s infinite linear;\n -moz-animation: rotation .7s infinite linear;\n -o-animation: rotation .7s infinite linear;\n animation: rotation .7s infinite linear;\n border-left: 5px solid #cbcbca;\n border-right: 5px solid #cbcbca;\n border-bottom: 5px solid #cbcbca;\n border-top: 5px solid #2380be;\n border-radius: 100%\n }\n\n @-webkit-keyframes rotation {\n from {\n -webkit-transform: rotate(0deg)\n }\n to {\n -webkit-transform: rotate(359deg)\n }\n }\n @-moz-keyframes rotation {\n from {\n -moz-transform: rotate(0deg)\n }\n to {\n -moz-transform: rotate(359deg)\n }\n }\n @-o-keyframes rotation {\n from {\n -o-transform: rotate(0deg)\n }\n to {\n -o-transform: rotate(359deg)\n }\n }\n @keyframes rotation {\n from {\n transform: rotate(0deg)\n }\n to {\n transform: rotate(359deg)\n }\n }\n`;\n\nexport function componentTemplate({ jsxDom } : { jsxDom : Function }) : HTMLElement {\n\n return (\n \n \n PayPal\n \n \n \n

\n \n\n
\n

\n

\n

\n
\n \n \n );\n}\n","/* @flow */\n\nimport { CHECKOUT_OVERLAY_COLOR } from '../../../constants';\n\nexport function getContainerStyle({ id, tag, CONTEXT, CLASS, ANIMATION } : { id : string, tag : string, CONTEXT : Object, CLASS : Object, ANIMATION : Object }) : string {\n return `\n #${ id } {\n position: absolute;\n z-index: 2147483647;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n\n -webkit-transform: translate3d(0, 0, 0);\n -moz-transform: translate3d(0, 0, 0);\n -ms-transform: translate3d(0, 0, 0);\n -o-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.BLACK } {\n background-color: black;\n background-color: rgba(0, 0, 0, 0.75);\n\n background: -webkit-radial-gradient(50% 50%, ellipse closest-corner, rgba(0,0,0,1) 1%, rgba(0,0,0,0.75) 100%);\n background: -moz-radial-gradient(50% 50%, ellipse closest-corner, rgba(0,0,0,1) 1%, rgba(0,0,0,0.75) 100%);\n background: -ms-radial-gradient(50% 50%, ellipse closest-corner, rgba(0,0,0,1) 1%, rgba(0,0,0,0.75) 100%);\n background: radial-gradient(50% 50%, ellipse closest-corner, rgba(0,0,0,1) 1%, rgba(0,0,0,0.75) 100%);\n\n color: #fff;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.WHITE } {\n background-color: white;\n background-color: rgba(255, 255, 255, 0.4);\n\n background: -webkit-radial-gradient(50% 50%, ellipse closest-corner, rgba(255, 255, 255,1) 1%, rgba(255, 255, 255,0.4) 100%);\n background: -moz-radial-gradient(50% 50%, ellipse closest-corner, rgba(255, 255, 255,1) 1%, rgba(255, 255, 255,0.4) 100%);\n background: -ms-radial-gradient(50% 50%, ellipse closest-corner, rgba(255, 255, 255,1) 1%, rgba(255, 255, 255,0.4) 100%);\n background: radial-gradient(50% 50%, ellipse closest-corner, rgba(255, 255, 255,1) 1%, rgba(255, 255, 255,0.4) 100%);\n\n color: #333;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.BLACK } a {\n color: #fff;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.WHITE } a {\n color: #333;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.BLACK } .paypal-checkout-close:before,\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.BLACK } .paypal-checkout-close:after {\n background-color: #fff;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.WHITE } .paypal-checkout-close:before,\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.WHITE } .paypal-checkout-close:after {\n background-color: #111;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.POPUP } {\n cursor: pointer;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.POPUP } {\n cursor: pointer;\n }\n\n #${ id } a {\n text-decoration: none;\n }\n\n #${ id } .paypal-checkout-modal {\n font-family: \"HelveticaNeue\", \"HelveticaNeue-Light\", \"Helvetica Neue Light\", helvetica, arial, sans-serif;\n font-size: 14px;\n text-align: center;\n\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n -ms-box-sizing: border-box;\n box-sizing: border-box;\n max-width: 350px;\n top: 50%;\n left: 50%;\n position: absolute;\n transform: translateX(-50%) translateY(-50%);\n -webkit-transform: translateX(-50%) translateY(-50%);\n -moz-transform: translateX(-50%) translateY(-50%);\n -o-transform: translateX(-50%) translateY(-50%);\n -ms-transform: translateX(-50%) translateY(-50%);\n cursor: pointer;\n text-align: center;\n }\n\n #${ id }.${ tag }-loading .paypal-checkout-message, #${ id }.${ tag }-loading .paypal-checkout-continue {\n display: none;\n }\n\n .paypal-checkout-loader {\n display: none;\n }\n\n #${ id }.${ tag }-loading .paypal-checkout-loader {\n display: block;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-logo {\n cursor: pointer;\n margin-bottom: 30px;\n display: inline-block;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-logo img {\n height: 36px;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-logo img.paypal-checkout-logo-pp {\n margin-right: 10px;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-message {\n font-size: 15px;\n line-height: 1.5;\n padding: 10px 0;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-message, #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-continue {\n display: none;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-continue {\n font-size: 15px;\n line-height: 1.35;\n padding: 10px 0;\n font-weight: bold;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-continue a {\n border-bottom: 1px solid currentColor;\n }\n\n #${ id } .paypal-checkout-close {\n position: absolute;\n right: 16px;\n top: 16px;\n width: 16px;\n height: 16px;\n opacity: 0.6;\n }\n\n #${ id }.${ tag }-loading .paypal-checkout-close {\n display: none;\n }\n\n #${ id } .paypal-checkout-close:hover {\n opacity: 1;\n }\n\n #${ id } .paypal-checkout-close:before, .paypal-checkout-close:after {\n position: absolute;\n left: 8px;\n content: ' ';\n height: 16px;\n width: 2px;\n }\n\n #${ id } .paypal-checkout-close:before {\n transform: rotate(45deg);\n -webkit-transform: rotate(45deg);\n -moz-transform: rotate(45deg);\n -o-transform: rotate(45deg);\n -ms-transform: rotate(45deg);\n }\n\n #${ id } .paypal-checkout-close:after {\n transform: rotate(-45deg);\n -webkit-transform: rotate(-45deg);\n -moz-transform: rotate(-45deg);\n -o-transform: rotate(-45deg);\n -ms-transform: rotate(-45deg);\n }\n\n #${ id } .paypal-checkout-iframe-container {\n display: none;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container,\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container > .${ CLASS.OUTLET },\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container > .${ CLASS.OUTLET } > iframe {\n max-height: calc(95vh - 60px);\n max-width: 95vw;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container {\n\n display: block;\n\n position: absolute;\n\n top: 50%;\n left: 50%;\n\n min-width: 450px;\n\n transform: translate(-50%, -50%);\n -webkit-transform: translate(-50%, -50%);\n -moz-transform: translate(-50%, -50%);\n -o-transform: translate(-50%, -50%);\n -ms-transform: translate(-50%, -50%);\n\n transform: translate3d(-50%, -50%, 0);\n -webkit-transform: translate3d(-50%, -50%, 0);\n -moz-transform: translate3d(-50%, -50%, 0);\n -o-transform: translate3d(-50%, -50%, 0);\n -ms-transform: translate3d(-50%, -50%, 0);\n\n border-radius: 10px;\n overflow: hidden;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } {\n\n position: relative;\n\n -webkit-transition: all 0.3s ease;\n -moz-transition: all 0.3s ease;\n -ms-transition: all 0.3s ease;\n -o-transition: all 0.3 ease;\n transition: all 0.3s ease;\n\n -webkit-animation-duration: 0.3s;\n animation-duration: 0.3s;\n -webkit-animation-fill-mode: both;\n animation-fill-mode: both;\n\n min-width: 450px;\n max-width: 450px;\n width: 450px;\n height: 535px;\n\n background-color: white;\n\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe {\n position: absolute;\n top: 0;\n left: 0;\n transition: opacity .4s ease-in-out;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe.${ CLASS.COMPONENT_FRAME } {\n z-index: 100;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe.${ CLASS.PRERENDER_FRAME } {\n z-index: 200;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe.${ CLASS.VISIBLE } {\n opacity: 1;\n z-index: 200;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe.${ CLASS.INVISIBLE } {\n opacity: 0;\n z-index: 100;\n }\n\n @media screen and (-ms-high-contrast: active) {\n #${ id } .paypal-checkout-close {\n opacity: 1;\n }\n\n #${ id } .paypal-checkout-close:before , .paypal-checkout-close:after {\n background-color: currentColor;\n }\n }\n\n @media screen and (max-width: 470px) {\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container,\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } {\n min-width: 100%;\n min-width: calc(100% - 20px);\n min-width: -webkit-calc(100% - 20px);\n min-width: -moz-calc(100% - 20px);\n min-width: -o-calc(100% - 20px);\n min-width: -ms-calc(100% - 20px);\n\n max-width: 100%;\n max-width: calc(100% - 20px);\n max-width: -webkit-calc(100% - 20px);\n max-width: -moz-calc(100% - 20px);\n max-width: -o-calc(100% - 20px);\n max-width: -ms-calc(100% - 20px);\n }\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } iframe {\n width: 1px;\n min-width: 100%;\n height: 100%;\n }\n\n @-webkit-keyframes ${ ANIMATION.SHOW_COMPONENT } {\n from {\n opacity: 0;\n transform: scale3d(.3, .3, .3);\n -webkit-transform: scale3d(.3, .3, .3);\n }\n\n to {\n opacity: 1;\n transform: scale3d(1, 1, 1);\n -webkit-transform: scale3d(1, 1, 1);\n }\n }\n\n @keyframes ${ ANIMATION.SHOW_COMPONENT } {\n from {\n opacity: 0;\n transform: scale3d(.3, .3, .3);\n -webkit-transform: scale3d(.3, .3, .3);\n }\n\n to {\n opacity: 1;\n transform: scale3d(1, 1, 1);\n -webkit-transform: scale3d(1, 1, 1);\n }\n }\n\n @-webkit-keyframes ${ ANIMATION.HIDE_COMPONENT } {\n from {\n transform: scale3d(1, 1, 1);\n -webkit-transform: scale3d(1, 1, 1);\n }\n\n to {\n opacity: 0;\n transform: scale3d(.3, .3, .3);\n -webkit-transform: scale3d(.3, .3, .3);\n }\n }\n\n @keyframes ${ ANIMATION.HIDE_COMPONENT } {\n from {\n transform: scale3d(1, 1, 1);\n -webkit-transform: scale3d(1, 1, 1);\n }\n\n to {\n opacity: 0;\n transform: scale3d(.3, .3, .3);\n -webkit-transform: scale3d(.3, .3, .3);\n }\n }\n\n .paypal-spinner {\n height: 30px;\n width: 30px;\n display: inline-block;\n box-sizing: content-box;\n opacity: 1;\n filter: alpha(opacity=100);\n -webkit-animation: rotation .7s infinite linear;\n -moz-animation: rotation .7s infinite linear;\n -o-animation: rotation .7s infinite linear;\n animation: rotation .7s infinite linear;\n border-left: 8px solid rgba(0, 0, 0, .2);\n border-right: 8px solid rgba(0, 0, 0, .2);\n border-bottom: 8px solid rgba(0, 0, 0, .2);\n border-top: 8px solid #fff;\n border-radius: 100%\n }\n\n @-webkit-keyframes rotation {\n from {\n -webkit-transform: rotate(0deg)\n }\n to {\n -webkit-transform: rotate(359deg)\n }\n }\n @-moz-keyframes rotation {\n from {\n -moz-transform: rotate(0deg)\n }\n to {\n -moz-transform: rotate(359deg)\n }\n }\n @-o-keyframes rotation {\n from {\n -o-transform: rotate(0deg)\n }\n to {\n -o-transform: rotate(359deg)\n }\n }\n @keyframes rotation {\n from {\n transform: rotate(0deg)\n }\n to {\n transform: rotate(359deg)\n }\n }\n `;\n}\n","/* @flow */\n\nexport function getSandboxStyle({ id, ANIMATION } : { id : string, ANIMATION : Object }) : string {\n return `\n #${ id }.paypal-checkout-sandbox {\n display: block;\n position: fixed;\n top: 0;\n left: 0;\n\n width: 100%;\n height: 100%;\n width: 100vw;\n height: 100vh;\n max-width: 100%;\n max-height: 100%;\n min-width: 100%;\n min-height: 100%;\n\n z-index: 2147483647;\n\n -webkit-animation-duration: 1s;\n animation-duration: 1s;\n\n animation-fill-mode:forwards;\n animation-iteration-count: 1;\n\n -webkit-animation-fill-mode:forwards;\n -webkit-animation-iteration-count: 1;\n }\n\n #${ id }.paypal-checkout-sandbox .paypal-checkout-sandbox-iframe {\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n }\n\n @-webkit-keyframes ${ ANIMATION.SHOW_CONTAINER } {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n }\n\n @keyframes ${ ANIMATION.SHOW_CONTAINER } {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n }\n\n @-webkit-keyframes ${ ANIMATION.HIDE_CONTAINER } {\n from {\n opacity: 1;\n }\n\n 50% {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n }\n\n @keyframes ${ ANIMATION.HIDE_CONTAINER } {\n from {\n opacity: 1;\n }\n\n 50% {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n }\n `;\n}\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { base64encode } from 'belter/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { fundingLogos } from '../../resources';\nimport { BUTTON_LOGO_COLOR, CHECKOUT_OVERLAY_COLOR } from '../../constants';\nimport { isIos } from '../../lib';\n\nimport { containerContent } from './containerContent';\nimport { getContainerStyle } from './containerStyle';\nimport { getSandboxStyle } from './sandboxStyle';\n\nconst LOGO_COLOR = {\n [ CHECKOUT_OVERLAY_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ CHECKOUT_OVERLAY_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n};\n\nexport {\n getContainerStyle,\n getSandboxStyle\n};\n\n// eslint-disable-next-line flowtype/require-exact-type\nexport type ContainerTemplateOptions = {\n id : string,\n props : Object,\n CLASS : Object,\n ANIMATION : Object,\n CONTEXT : Object,\n EVENT : Object,\n dimensions : {\n width : number,\n height : number\n },\n actions : Object,\n tag : string,\n context : string,\n outlet : HTMLElement,\n on : Function,\n jsxDom : Function\n};\n\nexport function containerTemplate({ id, props, CLASS, ANIMATION, CONTEXT, EVENT, on, tag, context, actions, outlet, jsxDom } : ContainerTemplateOptions) : HTMLElement {\n\n const [ lang, country ] = props.locale.split('_');\n\n const content = containerContent[country][lang];\n\n function close(event) {\n event.preventDefault();\n event.stopPropagation();\n actions.close();\n }\n\n function focus(event) {\n event.preventDefault();\n event.stopPropagation();\n\n if (isIos()) {\n // eslint-disable-next-line no-alert\n window.alert('Please switch tabs to reactivate the PayPal window');\n } else {\n ZalgoPromise.try(actions.focus).catch(actions.close);\n }\n }\n\n const style = props.style || {};\n const overlayColor = style.overlayColor || CHECKOUT_OVERLAY_COLOR.BLACK;\n const logoColor = LOGO_COLOR[overlayColor];\n\n const ppLogo = (typeof fundingLogos.pp === 'function')\n ? fundingLogos.pp({ logoColor })\n : fundingLogos.pp[logoColor];\n\n const paypalLogo = (typeof fundingLogos.paypal === 'function')\n ? fundingLogos.paypal({ logoColor })\n : fundingLogos.paypal[logoColor];\n\n const el = (\n
\n \n
\n
\n \n \n
\n
\n {content.windowMessage}\n
\n
\n
\n
\n
\n
\n\n
\n {outlet}\n
\n\n \n
\n );\n\n const container = (\n \n \n { el }\n \n \n );\n\n on(EVENT.CLOSE, () => {\n el.className += ` ${ tag }-loading`;\n });\n\n return (\n
\n \n\n \n
\n );\n}\n","/* @flow */\n\nexport * from './componentTemplate';\nexport * from './containerTemplate';\n","/* @flow */\n\nimport { config } from '../config';\nimport { FUNDING, PAYMENT_TYPE } from '../constants';\n\nexport function determineParameterFromToken(token : string) : string {\n return (token && token.indexOf('BA-') === 0) ? 'ba_token' : 'token';\n}\n\nexport function getPaymentType(payment : string) : string {\n if (payment.indexOf('BA-') === 0) {\n return PAYMENT_TYPE.BA_TOKEN;\n } else if (payment.indexOf('PAY-') === 0 || payment.indexOf('PAYID-') === 0) {\n return PAYMENT_TYPE.PAY_ID;\n } else if (payment.indexOf('EC-') === 0) {\n return PAYMENT_TYPE.EC_TOKEN;\n }\n\n return PAYMENT_TYPE.EC_TOKEN;\n}\n\nexport function determineUrl(env : string, fundingSource : ?string, payment : string) : string {\n\n const paymentType = getPaymentType(payment);\n\n if (paymentType === PAYMENT_TYPE.BA_TOKEN) {\n return config.billingUrls[env];\n }\n\n if (fundingSource === FUNDING.CARD || fundingSource === FUNDING.ELV) {\n return config.guestUrls[env];\n }\n\n if (fundingSource === FUNDING.IDEAL || fundingSource === FUNDING.BANCONTACT || fundingSource === FUNDING.GIROPAY ||\n fundingSource === FUNDING.SOFORT || fundingSource === FUNDING.EPS || fundingSource === FUNDING.MYBANK ||\n fundingSource === FUNDING.P24 || fundingSource === FUNDING.PAYU || fundingSource === FUNDING.VERKKOPANKKI ||\n fundingSource === FUNDING.BLIK || fundingSource === FUNDING.TRUSTLY || fundingSource === FUNDING.MAXIMA ||\n fundingSource === FUNDING.BOLETO || fundingSource === FUNDING.OXXO) {\n return config.altpayUrls[env];\n }\n\n return config.checkoutUrls[env];\n}\n","/* @flow */\n\nexport function extendNamespace(xports : Object, namespaces : $ReadOnlyArray = [], childnamespaces : $ReadOnlyArray = []) : Object {\n\n for (const name of namespaces) {\n const namespace = window[name];\n\n if (!namespace) {\n continue;\n }\n\n for (const childname of childnamespaces) {\n let childnamespace = xports[childname];\n\n if (namespace[childname]) {\n childnamespace = { ...namespace[childname], ...childnamespace };\n }\n\n xports = { ...namespace, ...xports, [ childname ]: childnamespace };\n }\n }\n\n for (const name of namespaces) {\n window[name] = xports;\n }\n\n return xports;\n}\n","/* @flow */\n/* eslint max-lines: off */\n\nexport const containerContent = {\n 'AT': {\n 'de': {\n 'windowMessage': 'Sie sehen das sichere Browserfenster von PayPal nicht? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ZW': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ZM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ZA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'YT': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'YE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'WS': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'WF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'VU': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'VG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'VE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'VC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'VA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'UY': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'UG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TV': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'TT': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'TO': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'TN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'TM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'TD': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'TC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'SZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SV': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'ST': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SR': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'SO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'SM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SL': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SH': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'SB': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'SA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'RW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'RS': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'RE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'QA': {\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PY': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'PW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'PN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'PM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'PF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'PA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'OM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'NU': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'NR': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'NP': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'NI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'NG': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'NE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'NC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MV': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'MU': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MT': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MS': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'MR': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MQ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MN': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'ML': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'MK': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MH': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'MG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ME': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MD': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MC': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'MA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'LS': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'LK': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'LI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'LC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'LA': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'KZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'KY': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'KW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'KN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'KM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'KI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'KH': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'KG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'KE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'JO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'JM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'IS': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'HR': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'HN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'GY': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'GW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GT': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'GP': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'GM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GL': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'da': {\n 'windowMessage': 'Kan du ikke se PayPals sikre browser? Vi hj\\u00E6lper dig med at genstarte vinduet, s\\u00E5 du kan betale.',\n 'continue': 'Forts\\u00E6t'\n }\n },\n 'GI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GD': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'GA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'FO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'da': {\n 'windowMessage': 'Kan du ikke se PayPals sikre browser? Vi hj\\u00E6lper dig med at genstarte vinduet, s\\u00E5 du kan betale.',\n 'continue': 'Forts\\u00E6t'\n }\n },\n 'FM': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'FK': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'FJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'ET': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ER': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'EG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'EC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'DZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'DO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'DM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'DJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'CY': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CV': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CR': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'CO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'CM': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'CL': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'CK': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CI': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'CG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CD': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'BZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'BY': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BT': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'BS': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'BO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'BN': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'BM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'BJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'BI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'BH': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'BG': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'BB': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'BA': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'AO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'AM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AL': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'AG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'AE': {\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AD': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n }\n },\n 'GB': {\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 PayPal\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\'ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AR': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'US': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Click to Continue'\n }\n },\n 'VN': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment. ',\n 'continue': 'Continue'\n }\n },\n 'UA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TW': {\n 'zh': {\n 'windowMessage': '\\u770B\\u4E0D\\u5230\\u5B89\\u5168\\u9023\\u7DDA\\u7684 PayPal \\u700F\\u89BD\\u5668\\uFF1F\\u6211\\u5011\\u5C07\\u6703\\u91CD\\u65B0\\u555F\\u52D5\\u8996\\u7A97\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002\\u00A0 ',\n 'continue': '\\u7E7C\\u7E8C'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TR': {\n 'tr': {\n 'windowMessage': 'G\\u00FCvenli PayPal taray\\u0131c\\u0131s\\u0131n\\u0131 g\\u00F6rm\\u00FCyor musunuz? Al\\u0131\\u015Fveri\\u015Finizi tamamlamak i\\u00E7in pencereyi yeniden ba\\u015Flatman\\u0131za yard\\u0131mc\\u0131 olaca\\u011F\\u0131z.\\u00A0 ',\n 'continue': 'Devam'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TH': {\n 'th': {\n 'windowMessage': '\\u0E16\\u0E49\\u0E32\\u0E04\\u0E38\\u0E13\\u0E44\\u0E21\\u0E48\\u0E40\\u0E2B\\u0E47\\u0E19\\u0E40\\u0E1A\\u0E23\\u0E32\\u0E27\\u0E4C\\u0E40\\u0E0B\\u0E2D\\u0E23\\u0E4C\\u0E17\\u0E35\\u0E48\\u0E21\\u0E35\\u0E23\\u0E30\\u0E1A\\u0E1A\\u0E04\\u0E27\\u0E32\\u0E21\\u0E1B\\u0E25\\u0E2D\\u0E14\\u0E20\\u0E31\\u0E22\\u0E02\\u0E2D\\u0E07 PayPal \\u0E40\\u0E23\\u0E32\\u0E08\\u0E30\\u0E0A\\u0E48\\u0E27\\u0E22\\u0E04\\u0E38\\u0E13\\u0E40\\u0E1B\\u0E34\\u0E14\\u0E2B\\u0E19\\u0E49\\u0E32\\u0E15\\u0E48\\u0E32\\u0E07\\u0E2D\\u0E35\\u0E01\\u0E04\\u0E23\\u0E31\\u0E49\\u0E07\\u0E40\\u0E1E\\u0E37\\u0E48\\u0E2D\\u0E0A\\u0E33\\u0E23\\u0E30\\u0E40\\u0E07\\u0E34\\u0E19\\u0E43\\u0E2B\\u0E49\\u0E40\\u0E23\\u0E35\\u0E22\\u0E1A\\u0E23\\u0E49\\u0E2D\\u0E22 ',\n 'continue': '\\u0E14\\u0E33\\u0E40\\u0E19\\u0E34\\u0E19\\u0E01\\u0E32\\u0E23\\u0E15\\u0E48\\u0E2D'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SK': {\n 'sk': {\n 'windowMessage': 'Nezobrazuje sa v\\u00e1m zabezpe\\u010den\\u00fd prehliada\\u010d PayPal? Pom\\u00f4\\u017eeme v\\u00e1m znova otvori\\u0165 okno, aby ste mohli n\\u00e1kup dokon\\u010di\\u0165.\\u00A0 ',\n 'continue': 'Pokra\\u010dova\\u0165'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SG': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SE': {\n 'sv': {\n 'windowMessage': 'Ser du inte den s\\u00E4kra PayPal-webbl\\u00E4saren? Vi hj\\u00E4lper dig att starta om f\\u00F6nstret f\\u00F6r att slutf\\u00F6ra ditt k\\u00F6p. ',\n 'continue': 'Forts\\u00E4tt'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'RU': {\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'RO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PT': {\n 'pt': {\n 'windowMessage': 'N\\u00E3o v\\u00EA a indica\\u00E7\\u00E3o de sess\\u00E3o segura PayPal no browser? Vamos ajudar a reabrir a janela para que possa concluir a sua compra.',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PL': {\n 'pl': {\n 'windowMessage': 'Nie widzisz bezpiecznej przegl\\u0105darki PayPal? Pomo\\u017Cemy Ci ponownie uruchomi\\u0107 to okno w celu dokonania zakupu.\\u00A0 ',\n 'continue': 'Kontynuuj'\n },\n 'en': {\n 'windowMessage': 'You don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PH': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre paiement.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Le ayudaremos a abrir de nuevo la ventana para completar su pago.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NO': {\n 'no': {\n 'windowMessage': 'Ser du ikke den sikre PayPal-nettleseren? Vi hjelper deg med \\u00E5 starte vinduet p\\u00E5 nytt s\\u00E5 du kan fullf\\u00F8re kj\\u00F8pet.\\u00A0 ',\n 'continue': 'Fortsett'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NL': {\n 'nl': {\n 'windowMessage': 'Ziet u geen beveiligde PayPal-browser? We helpen u het venster opnieuw te openen om uw aankoop te voltooien.\\u00A0 ',\n 'continue': 'Doorgaan'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MY': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MX': {\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'LV': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'LU': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'de': {\n 'windowMessage': 'Das PayPal-Fenster wird nicht angezeigt? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n }\n },\n 'LT': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'KR': {\n 'ko': {\n 'windowMessage': '\\uBCF4\\uC548 PayPal \\uBE0C\\uB77C\\uC6B0\\uC800\\uAC00 \\uBCF4\\uC774\\uC9C0 \\uC54A\\uC73C\\uC2E0\\uAC00\\uC694? \\uCC3D\\uC744 \\uB2E4\\uC2DC \\uC2E4\\uD589\\uD558\\uC5EC \\uACB0\\uC81C\\uB97C \\uC644\\uB8CC\\uD560 \\uC218 \\uC788\\uB3C4\\uB85D \\uB3C4\\uC640\\uB4DC\\uB9AC\\uACA0\\uC2B5\\uB2C8\\uB2E4.\\u00A0 ',\n 'continue': '\\uACC4\\uC18D'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'JP': {\n 'ja': {\n 'windowMessage': '\\u30BB\\u30AD\\u30E5\\u30A2\\u306A\\u30D6\\u30E9\\u30A6\\u30B6\\u304C\\u8868\\u793A\\u3055\\u308C\\u306A\\u3044\\u5834\\u5408\\u306F\\u3001\\u30A6\\u30A3\\u30F3\\u30C9\\u30A6\\u3092\\u518D\\u8D77\\u52D5\\u3057\\u3066\\u3001\\u652F\\u6255\\u3044\\u3092\\u5B8C\\u4E86\\u3067\\u304D\\u308B\\u3088\\u3046\\u304A\\u624B\\u4F1D\\u3044\\u3044\\u305F\\u3057\\u307E\\u3059\\u3002',\n 'continue': '\\u7D9A\\u884C'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment. ',\n 'continue': 'Continue'\n }\n },\n 'IT': {\n 'it': {\n 'windowMessage': 'Non vedi la pagina sicura di PayPal? Ti aiuteremo a riaprire la finestra per completare l\\'acquisto.\\u00A0 ',\n 'continue': 'Continua'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'IN': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'IL': {\n 'he': {\n 'windowMessage': '\\u05DC\\u05D0 \\u05E8\\u05D5\\u05D0\\u05D4 \\u05D0\\u05EA \\u05D3\\u05E4\\u05D3\\u05E4\\u05DF PayPal \\u05D4\\u05DE\\u05D0\\u05D5\\u05D1\\u05D8\\u05D7? \\u05E0\\u05E2\\u05D6\\u05D5\\u05E8 \\u05DC\\u05DA \\u05DC\\u05E4\\u05EA\\u05D5\\u05D7 \\u05DE\\u05D7\\u05D3\\u05E9 \\u05D0\\u05EA \\u05D4\\u05D7\\u05DC\\u05D5\\u05DF \\u05DB\\u05D3\\u05D9 \\u05DC\\u05D4\\u05E9\\u05DC\\u05D9\\u05DD \\u05D0\\u05EA \\u05D4\\u05E7\\u05E0\\u05D9\\u05D9\\u05D4 \\u05E9\\u05DC\\u05DA.\\u00A0 ',\n 'continue': '\\u05D4\\u05DE\\u05E9\\u05DA'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'IE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'HU': {\n 'hu': {\n 'windowMessage': 'Nem l\\u00e1tja a biztons\\u00e1gos PayPal-b\\u00f6ng\\u00e9sz\\u0151t? Seg\\u00edt\\u00fcnk \\u00fajra bet\\u00f6lteni az ablakot, hogy befejezhesse a v\\u00e1s\\u00e1rl\\u00e1st.\\u00A0 ',\n 'continue': 'Folytat\\u00e1s'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ID': {\n 'id': {\n 'windowMessage': 'Browser PayPal yang aman tidak terlihat? Kami akan membantu menampilkan ulang jendela untuk menyelesaikan pembayaran Anda.\\u00A0 ',\n 'continue': 'Lanjutkan'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'HK': {\n 'zh': {\n 'windowMessage': '\\u770B\\u4E0D\\u5230\\u5B89\\u5168\\u7684 PayPal \\u700F\\u89BD\\u5668\\u8996\\u7A97\\uFF1F\\u6211\\u5011\\u6703\\u52A9\\u4F60\\u91CD\\u65B0\\u958B\\u555F\\u8996\\u7A97\\uFF0C\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002',\n 'continue': '\\u7E7C\\u7E8C'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GROUP-LATAM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'GROUP-EMEA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'pt': {\n 'windowMessage': 'N\\u00E3o v\\u00EA a indica\\u00E7\\u00E3o de sess\\u00E3o segura PayPal no browser? Vamos ajudar a reabrir a janela para que possa concluir a sua compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'de': {\n 'windowMessage': 'Sie sehen das sichere Browserfenster von PayPal nicht? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n },\n 'da': {\n 'windowMessage': 'Kan du ikke se PayPals sikre browser? Vi hj\\u00E6lper dig med at genstarte vinduet, s\\u00E5 du kan betale.',\n 'continue': 'Forts\\u00E6t'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'GROUP-APAC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ko': {\n 'windowMessage': '\\uBCF4\\uC548 PayPal \\uBE0C\\uB77C\\uC6B0\\uC800\\uAC00 \\uBCF4\\uC774\\uC9C0 \\uC54A\\uC73C\\uC2E0\\uAC00\\uC694? \\uCC3D\\uC744 \\uB2E4\\uC2DC \\uC2E4\\uD589\\uD558\\uC5EC \\uAD6C\\uB9E4\\uB97C \\uC644\\uB8CC\\uD560 \\uC218 \\uC788\\uB3C4\\uB85D \\uB3C4\\uC640\\uB4DC\\uB9AC\\uACA0\\uC2B5\\uB2C8\\uB2E4. ',\n 'continue': '\\uACC4\\uC18D'\n },\n 'id': {\n 'windowMessage': 'Browser PayPal yang aman tidak terlihat? Kami akan membantu menampilkan ulang jendela untuk menyelesaikan pembelian Anda. ',\n 'continue': 'Lanjutkan'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'GR': {\n 'el': {\n 'windowMessage': '\\u0394\\u03b5\\u03bd \\u03b2\\u03bb\\u03ad\\u03c0\\u03b5\\u03c4\\u03b5 \\u03c4\\u03bf \\u03b1\\u03c3\\u03c6\\u03b1\\u03bb\\u03ad\\u03c2 \\u03c0\\u03c1\\u03cc\\u03b3\\u03c1\\u03b1\\u03bc\\u03bc\\u03b1 \\u03c0\\u03b5\\u03c1\\u03b9\\u03ae\\u03b3\\u03b7\\u03c3\\u03b7\\u03c2 PayPal; \\u0398\\u03b1 \\u03c3\\u03b1\\u03c2 \\u03b2\\u03bf\\u03b7\\u03b8\\u03ae\\u03c3\\u03bf\\u03c5\\u03bc\\u03b5 \\u03bd\\u03b1 \\u03b5\\u03c0\\u03b1\\u03bd\\u03b5\\u03ba\\u03ba\\u03b9\\u03bd\\u03ae\\u03c3\\u03b5\\u03c4\\u03b5 \\u03c4\\u03bf \\u03c0\\u03b1\\u03c1\\u03ac\\u03b8\\u03c5\\u03c1\\u03bf \\u03b3\\u03b9\\u03b1 \\u03bd\\u03b1 \\u03bf\\u03bb\\u03bf\\u03ba\\u03bb\\u03b7\\u03c1\\u03ce\\u03c3\\u03b5\\u03c4\\u03b5 \\u03c4\\u03b7\\u03bd \\u03b1\\u03b3\\u03bf\\u03c1\\u03ac \\u03c3\\u03b1\\u03c2.\\u00A0 ',\n 'continue': '\\u03a3\\u03c5\\u03bd\\u03ad\\u03c7\\u03b5\\u03b9\\u03b1'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'FR': {\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 PayPal\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ES': {\n 'es': {\n 'windowMessage': '\\u00BFNo ve el s\\u00EDmbolo de navegaci\\u00F3n segura de PayPal? Le ayudaremos a abrir de nuevo la ventana para completar la compra. ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'FI': {\n 'fi': {\n 'windowMessage': 'Eik\\u00f6 suojattua PayPal-selainta n\\u00e4y? Autamme avaamaan ikkunan uudelleen oston viimeistely\\u00e4 varten.\\u00A0 ',\n 'continue': 'Jatka'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'EE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'DK': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'da': {\n 'windowMessage': 'Kan du ikke se PayPals sikre browser? Vi hj\\u00E6lper dig med at genstarte vinduet, s\\u00E5 du kan betale.',\n 'continue': 'Forts\\u00E6t'\n }\n },\n 'CZ': {\n 'cs': {\n 'windowMessage': 'Nezobrazuje se v\\u00e1m bezpe\\u010dn\\u00fd prohl\\u00ed\\u017ee\\u010d PayPal? Pom\\u016f\\u017eeme v\\u00e1m okno znovu otev\\u0159\\u00edt, abyste mohli n\\u00e1kup dokon\\u010dit.',\n 'continue': 'Pokra\\u010dovat'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'DE': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'de': {\n 'windowMessage': 'Sie sehen das sichere Browserfenster von PayPal nicht? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n }\n },\n 'CH': {\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 PayPal\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'de': {\n 'windowMessage': 'Sie sehen das sichere Browserfenster von PayPal nicht? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n }\n },\n 'CA': {\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 de PayPal\\u00A0? Nous vous aiderons \\u00E0 relancer la fen\\u00EAtre afin d\\'effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you relaunch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'C2': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BE': {\n 'nl': {\n 'windowMessage': 'Ziet u de beveiligde PayPal-browser niet? We helpen u het venster opnieuw te openen om uw aankoop te voltooien.\\u00A0 ',\n 'continue': 'Doorgaan'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 PayPal\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BR': {\n 'pt': {\n 'windowMessage': 'N\\u00E3o est\\u00E1 vendo o navegador seguro do PayPal? Ajudaremos voc\\u00EA a reabrir a janela para concluir a compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AU': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\'ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n }\n};\n","/*\n * [hi-base32]{@link https://github.com/emn178/hi-base32}\n *\n * @version 0.5.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var root = typeof window === 'object' ? window : {};\n var NODE_JS = !root.HI_BASE32_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n }\n var COMMON_JS = !root.HI_BASE32_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var BASE32_ENCODE_CHAR = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'.split('');\n var BASE32_DECODE_CHAR = {\n 'A': 0, 'B': 1, 'C': 2, 'D': 3, 'E': 4, 'F': 5, 'G': 6, 'H': 7, 'I': 8,\n 'J': 9, 'K': 10, 'L': 11, 'M': 12, 'N': 13, 'O': 14, 'P': 15, 'Q': 16,\n 'R': 17, 'S': 18, 'T': 19, 'U': 20, 'V': 21, 'W': 22, 'X': 23, 'Y': 24,\n 'Z': 25, '2': 26, '3': 27, '4': 28, '5': 29, '6': 30, '7': 31\n };\n\n var blocks = [0, 0, 0, 0, 0, 0, 0, 0];\n\n var throwInvalidUtf8 = function (position, partial) {\n if (partial.length > 10) {\n partial = '...' + partial.substr(-10);\n }\n var err = new Error('Decoded data is not valid UTF-8.'\n + ' Maybe try base32.decode.asBytes()?'\n + ' Partial data after reading ' + position + ' bytes: ' + partial + ' <-');\n err.position = position;\n throw err;\n };\n\n var toUtf8String = function (bytes) {\n var str = '', length = bytes.length, i = 0, followingChars = 0, b, c;\n while (i < length) {\n b = bytes[i++];\n if (b <= 0x7F) {\n str += String.fromCharCode(b);\n continue;\n } else if (b > 0xBF && b <= 0xDF) {\n c = b & 0x1F;\n followingChars = 1;\n } else if (b <= 0xEF) {\n c = b & 0x0F;\n followingChars = 2;\n } else if (b <= 0xF7) {\n c = b & 0x07;\n followingChars = 3;\n } else {\n throwInvalidUtf8(i, str);\n }\n\n for (var j = 0; j < followingChars; ++j) {\n b = bytes[i++];\n if (b < 0x80 || b > 0xBF) {\n throwInvalidUtf8(i, str);\n }\n c <<= 6;\n c += b & 0x3F;\n }\n if (c >= 0xD800 && c <= 0xDFFF) {\n throwInvalidUtf8(i, str);\n }\n if (c > 0x10FFFF) {\n throwInvalidUtf8(i, str);\n }\n\n if (c <= 0xFFFF) {\n str += String.fromCharCode(c);\n } else {\n c -= 0x10000;\n str += String.fromCharCode((c >> 10) + 0xD800);\n str += String.fromCharCode((c & 0x3FF) + 0xDC00);\n }\n }\n return str;\n };\n\n var decodeAsBytes = function (base32Str) {\n if (!/^[A-Z2-7=]+$/.test(base32Str)) {\n throw new Error('Invalid base32 characters');\n }\n base32Str = base32Str.replace(/=/g, '');\n var v1, v2, v3, v4, v5, v6, v7, v8, bytes = [], index = 0, length = base32Str.length;\n\n // 4 char to 3 bytes\n for (var i = 0, count = length >> 3 << 3; i < count;) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v8 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255;\n bytes[index++] = (v4 << 4 | v5 >>> 1) & 255;\n bytes[index++] = (v5 << 7 | v6 << 2 | v7 >>> 3) & 255;\n bytes[index++] = (v7 << 5 | v8) & 255;\n }\n\n // remain bytes\n var remain = length - count;\n if (remain === 2) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n } else if (remain === 4) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255;\n } else if (remain === 5) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255;\n bytes[index++] = (v4 << 4 | v5 >>> 1) & 255;\n } else if (remain === 7) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255;\n bytes[index++] = (v4 << 4 | v5 >>> 1) & 255;\n bytes[index++] = (v5 << 7 | v6 << 2 | v7 >>> 3) & 255;\n }\n return bytes;\n };\n\n var encodeAscii = function (str) {\n var v1, v2, v3, v4, v5, base32Str = '', length = str.length;\n for (var i = 0, count = parseInt(length / 5) * 5; i < count;) {\n v1 = str.charCodeAt(i++);\n v2 = str.charCodeAt(i++);\n v3 = str.charCodeAt(i++);\n v4 = str.charCodeAt(i++);\n v5 = str.charCodeAt(i++);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3 | v5 >>> 5) & 31] +\n BASE32_ENCODE_CHAR[v5 & 31];\n }\n\n // remain char\n var remain = length - count;\n if (remain === 1) {\n v1 = str.charCodeAt(i);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2) & 31] +\n '======';\n } else if (remain === 2) {\n v1 = str.charCodeAt(i++);\n v2 = str.charCodeAt(i);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4) & 31] +\n '====';\n } else if (remain === 3) {\n v1 = str.charCodeAt(i++);\n v2 = str.charCodeAt(i++);\n v3 = str.charCodeAt(i);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1) & 31] +\n '===';\n } else if (remain === 4) {\n v1 = str.charCodeAt(i++);\n v2 = str.charCodeAt(i++);\n v3 = str.charCodeAt(i++);\n v4 = str.charCodeAt(i);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3) & 31] +\n '=';\n }\n return base32Str;\n };\n\n var encodeUtf8 = function (str) {\n var v1, v2, v3, v4, v5, code, end = false, base32Str = '',\n index = 0, i, start = 0, bytes = 0, length = str.length;\n do {\n blocks[0] = blocks[5];\n blocks[1] = blocks[6];\n blocks[2] = blocks[7];\n for (i = start; index < length && i < 5; ++index) {\n code = str.charCodeAt(index);\n if (code < 0x80) {\n blocks[i++] = code;\n } else if (code < 0x800) {\n blocks[i++] = 0xc0 | (code >> 6);\n blocks[i++] = 0x80 | (code & 0x3f);\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i++] = 0xe0 | (code >> 12);\n blocks[i++] = 0x80 | ((code >> 6) & 0x3f);\n blocks[i++] = 0x80 | (code & 0x3f);\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++index) & 0x3ff));\n blocks[i++] = 0xf0 | (code >> 18);\n blocks[i++] = 0x80 | ((code >> 12) & 0x3f);\n blocks[i++] = 0x80 | ((code >> 6) & 0x3f);\n blocks[i++] = 0x80 | (code & 0x3f);\n }\n }\n bytes += i - start;\n start = i - 5;\n if (index === length) {\n ++index;\n }\n if (index > length && i < 6) {\n end = true;\n }\n v1 = blocks[0];\n if (i > 4) {\n v2 = blocks[1];\n v3 = blocks[2];\n v4 = blocks[3];\n v5 = blocks[4];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3 | v5 >>> 5) & 31] +\n BASE32_ENCODE_CHAR[v5 & 31];\n } else if (i === 1) {\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2) & 31] +\n '======';\n } else if (i === 2) {\n v2 = blocks[1];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4) & 31] +\n '====';\n } else if (i === 3) {\n v2 = blocks[1];\n v3 = blocks[2];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1) & 31] +\n '===';\n } else {\n v2 = blocks[1];\n v3 = blocks[2];\n v4 = blocks[3];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3) & 31] +\n '=';\n }\n } while (!end);\n return base32Str;\n };\n\n var encodeBytes = function (bytes) {\n var v1, v2, v3, v4, v5, base32Str = '', length = bytes.length;\n for (var i = 0, count = parseInt(length / 5) * 5; i < count;) {\n v1 = bytes[i++];\n v2 = bytes[i++];\n v3 = bytes[i++];\n v4 = bytes[i++];\n v5 = bytes[i++];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3 | v5 >>> 5) & 31] +\n BASE32_ENCODE_CHAR[v5 & 31];\n }\n\n // remain char\n var remain = length - count;\n if (remain === 1) {\n v1 = bytes[i];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2) & 31] +\n '======';\n } else if (remain === 2) {\n v1 = bytes[i++];\n v2 = bytes[i];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4) & 31] +\n '====';\n } else if (remain === 3) {\n v1 = bytes[i++];\n v2 = bytes[i++];\n v3 = bytes[i];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1) & 31] +\n '===';\n } else if (remain === 4) {\n v1 = bytes[i++];\n v2 = bytes[i++];\n v3 = bytes[i++];\n v4 = bytes[i];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3) & 31] +\n '=';\n }\n return base32Str;\n };\n\n var encode = function (input, asciiOnly) {\n var notString = typeof(input) !== 'string';\n if (notString && input.constructor === ArrayBuffer) {\n input = new Uint8Array(input);\n }\n if (notString) {\n return encodeBytes(input);\n } else if (asciiOnly) {\n return encodeAscii(input);\n } else {\n return encodeUtf8(input);\n }\n };\n\n var decode = function (base32Str, asciiOnly) {\n if (!asciiOnly) {\n return toUtf8String(decodeAsBytes(base32Str));\n }\n if (!/^[A-Z2-7=]+$/.test(base32Str)) {\n throw new Error('Invalid base32 characters');\n }\n var v1, v2, v3, v4, v5, v6, v7, v8, str = '', length = base32Str.indexOf('=');\n if (length === -1) {\n length = base32Str.length;\n }\n\n // 8 char to 5 bytes\n for (var i = 0, count = length >> 3 << 3; i < count;) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v8 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255) +\n String.fromCharCode((v2 << 6 | v3 << 1 | v4 >>> 4) & 255) +\n String.fromCharCode((v4 << 4 | v5 >>> 1) & 255) +\n String.fromCharCode((v5 << 7 | v6 << 2 | v7 >>> 3) & 255) +\n String.fromCharCode((v7 << 5 | v8) & 255);\n }\n\n // remain bytes\n var remain = length - count;\n if (remain === 2) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255);\n } else if (remain === 4) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255) +\n String.fromCharCode((v2 << 6 | v3 << 1 | v4 >>> 4) & 255);\n } else if (remain === 5) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255) +\n String.fromCharCode((v2 << 6 | v3 << 1 | v4 >>> 4) & 255) +\n String.fromCharCode((v4 << 4 | v5 >>> 1) & 255);\n } else if (remain === 7) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255) +\n String.fromCharCode((v2 << 6 | v3 << 1 | v4 >>> 4) & 255) +\n String.fromCharCode((v4 << 4 | v5 >>> 1) & 255) +\n String.fromCharCode((v5 << 7 | v6 << 2 | v7 >>> 3) & 255);\n }\n return str;\n };\n\n var exports = {\n encode: encode,\n decode: decode\n };\n decode.asBytes = decodeAsBytes;\n\n if (COMMON_JS) {\n module.exports = exports;\n } else {\n root.base32 = exports;\n if (AMD) {\n define(function() {\n return exports;\n });\n }\n }\n})();\n","/* @flow */\n\nimport type { Component, ComponentDriverType } from '../component/component';\n\nexport let script : ComponentDriverType<*, Document> = {\n\n global() : ?Document {\n return window.document;\n },\n\n register(component : Component<*>, document : Document) {\n\n function render(element : HTMLElement) {\n\n if (!element || !element.tagName || element.tagName.toLowerCase() !== 'script') {\n return;\n }\n\n // $FlowFixMe\n if (!element.attributes.type || element.attributes.type.value !== 'application/x-component' || !element.parentNode) {\n return;\n }\n\n let tag = element.getAttribute('data-component');\n\n if (!tag || tag !== component.tag) {\n return;\n }\n\n component.log(`instantiate_script_component`);\n\n let props : { [string] : mixed } = element.innerText\n ? eval(`(${ element.innerText })`) // eslint-disable-line no-eval, security/detect-eval-with-expression\n : {};\n\n let container = document.createElement('div');\n\n if (!element.parentNode) {\n throw new Error(`Element has no parent`);\n }\n\n element.parentNode.replaceChild(container, element);\n\n // $FlowFixMe\n component.render(props, container);\n }\n\n function scan() {\n let scriptTags = Array.prototype.slice.call(document.getElementsByTagName('script'));\n\n for (let element of scriptTags) {\n render(element);\n }\n }\n\n scan();\n document.addEventListener('DOMContentLoaded', scan);\n window.addEventListener('load', scan);\n\n document.addEventListener('DOMNodeInserted', event => {\n // $FlowFixMe\n render(event.target);\n });\n }\n};\n","/* @flow */\n\nimport { extend } from '../lib';\nimport type { Component, ComponentDriverType } from '../component/component';\n\ndeclare class ReactClassType {\n\n}\n\ntype ReactElementType = {\n\n};\n\ntype ReactType = {\n createClass : ({ render : ReactElementType, componentDidMount : () => void, componentDidUpdate : () => void }) => (typeof ReactClassType),\n createElement : (string, ?{ [string] : mixed }, ...children : Array) => ReactElementType\n};\n\ntype ReactDomType = {\n findDOMNode : (ReactElementType) => HTMLElement\n};\n\ntype ReactLibraryType = { React : ReactType, ReactDOM : ReactDomType };\n\nexport let react : ComponentDriverType<*, ReactLibraryType> = {\n\n global() : ?ReactLibraryType {\n if (window.React && window.ReactDOM) {\n return {\n React: window.React,\n ReactDOM: window.ReactDOM\n };\n }\n },\n\n register(component : Component<*>, { React, ReactDOM } : ReactLibraryType) : (typeof ReactClassType) {\n\n if (React.createClass) {\n\n // $FlowFixMe\n component.react = React.createClass({\n\n render() : ReactElementType {\n return React.createElement('div', null);\n },\n\n componentDidMount() {\n component.log(`instantiate_react_component`);\n\n let el = ReactDOM.findDOMNode(this);\n\n let parent = component.init(extend({}, this.props), null, el);\n\n this.setState({ parent });\n\n parent.render(el);\n },\n\n componentDidUpdate() {\n\n if (this.state && this.state.parent) {\n this.state.parent.updateProps(extend({}, this.props));\n }\n },\n\n componentWillUnmount() {\n if (this.state && this.state.parent) {\n this.state.parent.destroy();\n }\n }\n });\n } else {\n // $FlowFixMe\n component.react = class extends React.Component {\n render() : ReactElementType {\n return React.createElement('div', null);\n }\n\n componentDidMount() {\n component.log(`instantiate_react_component`);\n\n let el = ReactDOM.findDOMNode(this);\n\n let parent = component.init(extend({}, this.props), null, el);\n\n this.setState({ parent });\n\n parent.render(el);\n }\n\n componentDidUpdate() {\n\n if (this.state && this.state.parent) {\n this.state.parent.updateProps(extend({}, this.props));\n }\n }\n\n componentWillUnmount() {\n if (this.state && this.state.parent) {\n this.state.parent.destroy();\n }\n }\n };\n }\n\n return component.react;\n }\n};\n","/* @flow */\n\nimport type { Component, ComponentDriverType } from '../component/component';\nimport { extend } from '../lib';\n\ntype VueComponent = {\n render : (Function) => Element,\n inheritAttrs : boolean,\n mounted : () => void,\n beforeUpdate : () => void\n};\n\nexport let vue : ComponentDriverType<*, void> = {\n\n global() {\n // pass\n },\n\n register

(component : Component

) : VueComponent {\n\n return {\n render(createElement) : Element {\n return createElement('div');\n },\n\n inheritAttrs: false,\n\n mounted() {\n let el = this.$el;\n\n // $FlowFixMe\n this.parent = component.init(extend({}, this.$attrs), null, el);\n\n this.parent.render(el);\n },\n\n beforeUpdate() {\n \n if (this.parent && this.$attrs) {\n this.parent.updateProps(extend({}, this.$attrs));\n }\n }\n };\n }\n};\n","/* @flow */\n\nimport { dasherizeToCamel, replaceObject } from '../lib';\nimport type { Component, ComponentDriverType } from '../component/component';\n\ntype AngularModule = {\n directive : (string, () => {\n scope : { [string] : '=' | '@' },\n restrict : string,\n controller : Array\n }) => AngularModule\n};\n\ntype Angular = {\n module : (string, Array) => AngularModule\n};\n\nexport let angular : ComponentDriverType<*, Angular> = {\n\n global() : ?Angular {\n return window.angular;\n },\n\n register(component : Component<*>, ng : Angular) : AngularModule {\n\n let module = ng.module(component.tag, []).directive(dasherizeToCamel(component.tag), () => {\n\n let scope = {};\n\n for (let key of component.getPropNames()) {\n scope[key] = '=';\n }\n\n if (component.looseProps) {\n scope.props = '=';\n }\n\n return {\n scope,\n\n restrict: 'E',\n\n controller: [ '$scope', '$element', ($scope, $element) => {\n\n if (component.looseProps && !$scope.props) {\n throw new Error(`For angular bindings to work, prop definitions must be passed to zoid.create`);\n }\n\n component.log(`instantiate_angular_component`);\n\n function safeApply() {\n if ($scope.$root.$$phase !== '$apply' && $scope.$root.$$phase !== '$digest') {\n try {\n $scope.$apply();\n } catch (err) {\n // pass\n }\n }\n }\n\n let getProps = () => {\n\n let scopeProps;\n\n if ($scope.props) {\n scopeProps = $scope.props;\n } else {\n scopeProps = {};\n for (let key of Object.keys(scope)) {\n if ($scope[key] !== undefined) {\n scopeProps[key] = $scope[key];\n }\n }\n }\n\n scopeProps = replaceObject(scopeProps, {\n 'function': (value) => {\n return function angularWrapped() : mixed {\n let result = value.apply(this, arguments);\n safeApply();\n return result;\n };\n }\n });\n\n return scopeProps;\n };\n\n let parent = component.init(getProps(), null, $element[0]);\n parent.render($element[0]);\n\n $scope.$watch(() => {\n parent.updateProps(getProps());\n });\n } ]\n };\n });\n\n return module;\n }\n};\n","/* @flow */\n\nimport type { Component, ComponentDriverType } from '../component/component';\n\ndeclare class GlimmerComponentType {\n element : HTMLElement,\n args : Object\n}\n\nexport let glimmer : ComponentDriverType<*, (typeof GlimmerComponentType)> = {\n\n global() {\n // pass\n },\n\n register(component : Component<*>, GlimmerComponent : (typeof GlimmerComponentType)) : (typeof GlimmerComponentType) {\n return class extends GlimmerComponent {\n didInsertElement() {\n component.render({ ...this.args }, this.element);\n }\n };\n }\n};\n","/* @flow */\n/* eslint new-cap: 0 */\n\nimport { replaceObject } from '../lib';\nimport type { Component, ComponentDriverType } from '../component/component';\n\ntype Angular2Injection = {};\n\ntype Angular2Component = {};\n\ntype Angular2Module = {};\n\ntype Angular2 = {\n Component : ({ selector : string, template : string, inputs : Array }) => {\n Class : ({ constructor : Array, ngOnInit : () => void, ngOnChanges : () => void }) => Angular2Component\n },\n NgModule : ({ declarations : Array, exports : Array }) => {\n Class : ({ constructor : () => void }) => Angular2Module\n },\n ElementRef : Angular2Injection,\n NgZone : Angular2Injection\n};\n\n\nexport let angular2 : ComponentDriverType<*, Angular2> = {\n\n global() {\n // pass\n },\n\n register(zoid : Component<*>, { Component : AngularComponent, NgModule, ElementRef, NgZone }) : Angular2Module {\n\n zoid.log('initializing angular2 component');\n\n let getProps = (component) => {\n return replaceObject({ ...component.internalProps, ...component.props }, {\n 'function': (value) => {\n if (typeof value === 'function') {\n return function angular2Wrapped() : void {\n return component.zone.run(() => value.apply(this, arguments));\n };\n }\n }\n });\n };\n\n const ComponentInstance =\n AngularComponent({\n selector: zoid.tag,\n template: '

',\n inputs: [ 'props' ]\n }).Class({\n constructor: [ ElementRef, NgZone, function angularConstructor(elementRef, zone) {\n this.elementRef = elementRef;\n this.zone = zone;\n } ],\n ngOnInit () {\n const targetElement = this.elementRef.nativeElement;\n const parent = zoid.init(getProps(this), null, targetElement);\n parent.render(targetElement);\n this.parent = parent;\n },\n ngOnChanges() {\n if (this.parent) {\n this.parent.updateProps(getProps(this));\n }\n }\n });\n\n\n const ModuleInstance = NgModule({\n declarations: [ ComponentInstance ],\n exports: [ ComponentInstance ]\n }).Class({\n constructor () {\n // pass\n }\n });\n\n return ModuleInstance;\n }\n};\n","/*!\n * Bowser - a browser detector\n * https://github.com/ded/bowser\n * MIT License | (c) Dustin Diaz 2015\n */\n!function(e,t,n){typeof module!=\"undefined\"&&module.exports?module.exports=n():typeof define==\"function\"&&define.amd?define(t,n):e[t]=n()}(this,\"bowser\",function(){function t(t){function n(e){var n=t.match(e);return n&&n.length>1&&n[1]||\"\"}function r(e){var n=t.match(e);return n&&n.length>1&&n[2]||\"\"}function C(e){switch(e){case\"NT\":return\"NT\";case\"XP\":return\"XP\";case\"NT 5.0\":return\"2000\";case\"NT 5.1\":return\"XP\";case\"NT 5.2\":return\"2003\";case\"NT 6.0\":return\"Vista\";case\"NT 6.1\":return\"7\";case\"NT 6.2\":return\"8\";case\"NT 6.3\":return\"8.1\";case\"NT 10.0\":return\"10\";default:return undefined}}var i=n(/(ipod|iphone|ipad)/i).toLowerCase(),o=/like android/i.test(t),u=!o&&/android/i.test(t),a=/nexus\\s*[0-6]\\s*/i.test(t),f=!a&&/nexus\\s*[0-9]+/i.test(t),l=/CrOS/.test(t),c=/silk/i.test(t),h=/sailfish/i.test(t),p=/tizen/i.test(t),d=/(web|hpw)(o|0)s/i.test(t),v=/windows phone/i.test(t),m=/SamsungBrowser/i.test(t),g=!v&&/windows/i.test(t),y=!i&&!c&&/macintosh/i.test(t),b=!u&&!h&&!p&&!d&&/linux/i.test(t),w=r(/edg([ea]|ios)\\/(\\d+(\\.\\d+)?)/i),E=n(/version\\/(\\d+(\\.\\d+)?)/i),S=/tablet/i.test(t)&&!/tablet pc/i.test(t),x=!S&&/[^-]mobi/i.test(t),T=/xbox/i.test(t),N;/opera/i.test(t)?N={name:\"Opera\",opera:e,version:E||n(/(?:opera|opr|opios)[\\s\\/](\\d+(\\.\\d+)?)/i)}:/opr\\/|opios/i.test(t)?N={name:\"Opera\",opera:e,version:n(/(?:opr|opios)[\\s\\/](\\d+(\\.\\d+)?)/i)||E}:/SamsungBrowser/i.test(t)?N={name:\"Samsung Internet for Android\",samsungBrowser:e,version:E||n(/(?:SamsungBrowser)[\\s\\/](\\d+(\\.\\d+)?)/i)}:/Whale/i.test(t)?N={name:\"NAVER Whale browser\",whale:e,version:n(/(?:whale)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/MZBrowser/i.test(t)?N={name:\"MZ Browser\",mzbrowser:e,version:n(/(?:MZBrowser)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/coast/i.test(t)?N={name:\"Opera Coast\",coast:e,version:E||n(/(?:coast)[\\s\\/](\\d+(\\.\\d+)?)/i)}:/focus/i.test(t)?N={name:\"Focus\",focus:e,version:n(/(?:focus)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/yabrowser/i.test(t)?N={name:\"Yandex Browser\",yandexbrowser:e,version:E||n(/(?:yabrowser)[\\s\\/](\\d+(\\.\\d+)?)/i)}:/ucbrowser/i.test(t)?N={name:\"UC Browser\",ucbrowser:e,version:n(/(?:ucbrowser)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/mxios/i.test(t)?N={name:\"Maxthon\",maxthon:e,version:n(/(?:mxios)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/epiphany/i.test(t)?N={name:\"Epiphany\",epiphany:e,version:n(/(?:epiphany)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/puffin/i.test(t)?N={name:\"Puffin\",puffin:e,version:n(/(?:puffin)[\\s\\/](\\d+(?:\\.\\d+)?)/i)}:/sleipnir/i.test(t)?N={name:\"Sleipnir\",sleipnir:e,version:n(/(?:sleipnir)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/k-meleon/i.test(t)?N={name:\"K-Meleon\",kMeleon:e,version:n(/(?:k-meleon)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:v?(N={name:\"Windows Phone\",osname:\"Windows Phone\",windowsphone:e},w?(N.msedge=e,N.version=w):(N.msie=e,N.version=n(/iemobile\\/(\\d+(\\.\\d+)?)/i))):/msie|trident/i.test(t)?N={name:\"Internet Explorer\",msie:e,version:n(/(?:msie |rv:)(\\d+(\\.\\d+)?)/i)}:l?N={name:\"Chrome\",osname:\"Chrome OS\",chromeos:e,chromeBook:e,chrome:e,version:n(/(?:chrome|crios|crmo)\\/(\\d+(\\.\\d+)?)/i)}:/edg([ea]|ios)/i.test(t)?N={name:\"Microsoft Edge\",msedge:e,version:w}:/vivaldi/i.test(t)?N={name:\"Vivaldi\",vivaldi:e,version:n(/vivaldi\\/(\\d+(\\.\\d+)?)/i)||E}:h?N={name:\"Sailfish\",osname:\"Sailfish OS\",sailfish:e,version:n(/sailfish\\s?browser\\/(\\d+(\\.\\d+)?)/i)}:/seamonkey\\//i.test(t)?N={name:\"SeaMonkey\",seamonkey:e,version:n(/seamonkey\\/(\\d+(\\.\\d+)?)/i)}:/firefox|iceweasel|fxios/i.test(t)?(N={name:\"Firefox\",firefox:e,version:n(/(?:firefox|iceweasel|fxios)[ \\/](\\d+(\\.\\d+)?)/i)},/\\((mobile|tablet);[^\\)]*rv:[\\d\\.]+\\)/i.test(t)&&(N.firefoxos=e,N.osname=\"Firefox OS\")):c?N={name:\"Amazon Silk\",silk:e,version:n(/silk\\/(\\d+(\\.\\d+)?)/i)}:/phantom/i.test(t)?N={name:\"PhantomJS\",phantom:e,version:n(/phantomjs\\/(\\d+(\\.\\d+)?)/i)}:/slimerjs/i.test(t)?N={name:\"SlimerJS\",slimer:e,version:n(/slimerjs\\/(\\d+(\\.\\d+)?)/i)}:/blackberry|\\bbb\\d+/i.test(t)||/rim\\stablet/i.test(t)?N={name:\"BlackBerry\",osname:\"BlackBerry OS\",blackberry:e,version:E||n(/blackberry[\\d]+\\/(\\d+(\\.\\d+)?)/i)}:d?(N={name:\"WebOS\",osname:\"WebOS\",webos:e,version:E||n(/w(?:eb)?osbrowser\\/(\\d+(\\.\\d+)?)/i)},/touchpad\\//i.test(t)&&(N.touchpad=e)):/bada/i.test(t)?N={name:\"Bada\",osname:\"Bada\",bada:e,version:n(/dolfin\\/(\\d+(\\.\\d+)?)/i)}:p?N={name:\"Tizen\",osname:\"Tizen\",tizen:e,version:n(/(?:tizen\\s?)?browser\\/(\\d+(\\.\\d+)?)/i)||E}:/qupzilla/i.test(t)?N={name:\"QupZilla\",qupzilla:e,version:n(/(?:qupzilla)[\\s\\/](\\d+(?:\\.\\d+)+)/i)||E}:/chromium/i.test(t)?N={name:\"Chromium\",chromium:e,version:n(/(?:chromium)[\\s\\/](\\d+(?:\\.\\d+)?)/i)||E}:/chrome|crios|crmo/i.test(t)?N={name:\"Chrome\",chrome:e,version:n(/(?:chrome|crios|crmo)\\/(\\d+(\\.\\d+)?)/i)}:u?N={name:\"Android\",version:E}:/safari|applewebkit/i.test(t)?(N={name:\"Safari\",safari:e},E&&(N.version=E)):i?(N={name:i==\"iphone\"?\"iPhone\":i==\"ipad\"?\"iPad\":\"iPod\"},E&&(N.version=E)):/googlebot/i.test(t)?N={name:\"Googlebot\",googlebot:e,version:n(/googlebot\\/(\\d+(\\.\\d+))/i)||E}:N={name:n(/^(.*)\\/(.*) /),version:r(/^(.*)\\/(.*) /)},!N.msedge&&/(apple)?webkit/i.test(t)?(/(apple)?webkit\\/537\\.36/i.test(t)?(N.name=N.name||\"Blink\",N.blink=e):(N.name=N.name||\"Webkit\",N.webkit=e),!N.version&&E&&(N.version=E)):!N.opera&&/gecko\\//i.test(t)&&(N.name=N.name||\"Gecko\",N.gecko=e,N.version=N.version||n(/gecko\\/(\\d+(\\.\\d+)?)/i)),!N.windowsphone&&(u||N.silk)?(N.android=e,N.osname=\"Android\"):!N.windowsphone&&i?(N[i]=e,N.ios=e,N.osname=\"iOS\"):y?(N.mac=e,N.osname=\"macOS\"):T?(N.xbox=e,N.osname=\"Xbox\"):g?(N.windows=e,N.osname=\"Windows\"):b&&(N.linux=e,N.osname=\"Linux\");var k=\"\";N.windows?k=C(n(/Windows ((NT|XP)( \\d\\d?.\\d)?)/i)):N.windowsphone?k=n(/windows phone (?:os)?\\s?(\\d+(\\.\\d+)*)/i):N.mac?(k=n(/Mac OS X (\\d+([_\\.\\s]\\d+)*)/i),k=k.replace(/[_\\s]/g,\".\")):i?(k=n(/os (\\d+([_\\s]\\d+)*) like mac os x/i),k=k.replace(/[_\\s]/g,\".\")):u?k=n(/android[ \\/-](\\d+(\\.\\d+)*)/i):N.webos?k=n(/(?:web|hpw)os\\/(\\d+(\\.\\d+)*)/i):N.blackberry?k=n(/rim\\stablet\\sos\\s(\\d+(\\.\\d+)*)/i):N.bada?k=n(/bada\\/(\\d+(\\.\\d+)*)/i):N.tizen&&(k=n(/tizen[\\/\\s](\\d+(\\.\\d+)*)/i)),k&&(N.osversion=k);var L=!N.windows&&k.split(\".\")[0];if(S||f||i==\"ipad\"||u&&(L==3||L>=4&&!x)||N.silk)N.tablet=e;else if(x||i==\"iphone\"||i==\"ipod\"||u||a||N.blackberry||N.webos||N.bada)N.mobile=e;return N.msedge||N.msie&&N.version>=10||N.yandexbrowser&&N.version>=15||N.vivaldi&&N.version>=1||N.chrome&&N.version>=20||N.samsungBrowser&&N.version>=4||N.whale&&s([N.version,\"1.0\"])===1||N.mzbrowser&&s([N.version,\"6.0\"])===1||N.focus&&s([N.version,\"1.0\"])===1||N.firefox&&N.version>=20||N.safari&&N.version>=6||N.opera&&N.version>=10||N.ios&&N.osversion&&N.osversion.split(\".\")[0]>=6||N.blackberry&&N.version>=10.1||N.chromium&&N.version>=20?N.a=e:N.msie&&N.version<10||N.chrome&&N.version<20||N.firefox&&N.version<20||N.safari&&N.version<6||N.opera&&N.version<10||N.ios&&N.osversion&&N.osversion.split(\".\")[0]<6||N.chromium&&N.version<20?N.c=e:N.x=e,N}function r(e){return e.split(\".\").length}function i(e,t){var n=[],r;if(Array.prototype.map)return Array.prototype.map.call(e,t);for(r=0;r=0){if(n[0][t]>n[1][t])return 1;if(n[0][t]!==n[1][t])return-1;if(t===0)return 0}}function o(e,r,i){var o=n;typeof r==\"string\"&&(i=r,r=void 0),r===void 0&&(r=!1),i&&(o=t(i));var u=\"\"+o.version;for(var a in e)if(e.hasOwnProperty(a)&&o[a]){if(typeof e[a]!=\"string\")throw new Error(\"Browser version in the minVersion map should be a string: \"+a+\": \"+String(e));return s([u,e[a]])<0}return r}function u(e,t,n){return!o(e,t,n)}var e=!0,n=t(typeof navigator!=\"undefined\"?navigator.userAgent||\"\":\"\");return n.test=function(e){for(var t=0;t\\n \\n \\n \\n \\n \\n \\n \\n \\n\\n\"","module.exports = \"\\n \\n \\n \\n\\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n \\n \\n \\n \\n \\n \\n \\n\\n\"","module.exports = \"\\n\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n \\n \\n \\n \\n \\n \\n \\n\\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n\\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n unionpay\\n Created with Sketch.\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","// get successful control from form and assemble into object\n// http://www.w3.org/TR/html401/interact/forms.html#h-17.13.2\n\n// types which indicate a submit action and are not successful controls\n// these will be ignored\nvar k_r_submitter = /^(?:submit|button|image|reset|file)$/i;\n\n// node names which could be successful controls\nvar k_r_success_contrls = /^(?:input|select|textarea|keygen)/i;\n\n// Matches bracket notation.\nvar brackets = /(\\[[^\\[\\]]*\\])/g;\n\n// serializes form fields\n// @param form MUST be an HTMLForm element\n// @param options is an optional argument to configure the serialization. Default output\n// with no options specified is a url encoded string\n// - hash: [true | false] Configure the output type. If true, the output will\n// be a js object.\n// - serializer: [function] Optional serializer function to override the default one.\n// The function takes 3 arguments (result, key, value) and should return new result\n// hash and url encoded str serializers are provided with this module\n// - disabled: [true | false]. If true serialize disabled fields.\n// - empty: [true | false]. If true serialize empty fields\nfunction serialize(form, options) {\n if (typeof options != 'object') {\n options = { hash: !!options };\n }\n else if (options.hash === undefined) {\n options.hash = true;\n }\n\n var result = (options.hash) ? {} : '';\n var serializer = options.serializer || ((options.hash) ? hash_serializer : str_serialize);\n\n var elements = form && form.elements ? form.elements : [];\n\n //Object store each radio and set if it's empty or not\n var radio_store = Object.create(null);\n\n for (var i=0 ; i\n \n
\n
\n \n \n
\n
\n {content.windowMessage}\n
\n
\n
\n
\n
\n
\n\n
\n {outlet}\n
\n\n \n
\n );\n\n const container = (\n \n \n { el }\n \n \n );\n\n on(EVENT.CLOSE, () => {\n el.className += ` ${ tag }-loading`;\n });\n\n return (\n
\n \n\n \n
\n );\n}\n\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { create } from 'zoid/src';\nimport { type Component } from 'zoid/src/component/component';\nimport { base64encode } from 'belter/src';\n\nimport { ENV } from '../constants';\nimport { getButtonSessionID, getBrowserLocale, getSessionID, getCurrentScriptUrl } from '../lib';\nimport { config } from '../config';\n\nimport { containerTemplate } from './template';\n\ntype BillingOptions = {|\n client : {\n [string] : (string | ZalgoPromise)\n },\n env? : string,\n locale? : string,\n logLevel : string,\n awaitPopupBridge : Function,\n meta : Object,\n commit : boolean,\n token : string\n|};\n\nexport const BillingPage : Component = create({\n tag: 'billing-page',\n name: 'billing-page',\n\n buildUrl(props) : string {\n const env = props.env || config.env;\n return `${ config.inlinedCardFieldUrls[env] }/billing`;\n },\n\n get domain() : Object {\n return {\n ...config.paypalDomains,\n [ ENV.LOCAL ]: /^http:\\/\\/localhost.paypal.com:\\d+$/\n };\n },\n\n scrolling: true,\n\n props: {\n sessionID: {\n type: 'string',\n required: false,\n def() : string {\n return getSessionID();\n },\n queryParam: true\n },\n\n\n token: {\n type: 'string',\n required: true,\n queryParam: true\n },\n\n buttonSessionID: {\n type: 'string',\n required: false,\n def() : ?string {\n return getButtonSessionID();\n },\n queryParam: true\n },\n\n commit: {\n type: 'boolean',\n required: false,\n queryParam: true\n },\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n },\n\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n allowDelegate: true,\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n }\n },\n\n cardType: {\n type: 'string',\n required: false\n },\n prefilledZipCode: {\n type: 'string',\n required: false\n },\n\n onEvent: {\n type: 'function',\n required: false,\n sameDomain: true\n },\n\n dispatch: {\n type: 'object',\n required: false,\n sameDomain: true\n },\n\n onCancel: {\n type: 'function',\n required: false,\n once: true,\n noop: true\n },\n\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n }\n },\n\n\n containerTemplate\n});\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { create } from 'zoid/src';\nimport { base64encode } from 'belter/src';\n\nimport { getBrowserLocale, getCurrentScriptUrl } from '../lib';\nimport { config } from '../config';\nimport { containerTemplate } from '../billing/template';\n\nexport const ThreeDomainSecure = create({\n tag: 'paypal-3ds',\n name: '3ds',\n\n buildUrl(props) : string {\n const env = props.env || config.env;\n return `${ config.inlinedCardFieldUrls[env] }/init3ds`;\n },\n\n get domain() : Object {\n return {\n ...config.paypalDomains\n };\n },\n\n scrolling: true,\n\n props: {\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n },\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n allowDelegate: true,\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n }\n },\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n },\n challengeUrl: {\n type: 'string'\n },\n threeDomainSecureToken: {\n type: 'string'\n },\n method: {\n type: 'string'\n },\n onSuccess: {\n type: 'function',\n required: false\n },\n onError: {\n type: 'function',\n required: false\n },\n onCancel: {\n type: 'function',\n required: true,\n allowDelegate: true\n }\n },\n\n\n containerTemplate\n});\n","/* @flow */\n\nimport { track, info } from 'beaver-logger/client';\n\nimport { config } from '../config';\nimport { FPTI, PPTM_ID } from '../constants';\nimport { stringifyError, extendUrl, loadScript, getElement, isPayPalDomain } from '../lib';\n\n\nfunction shouldCreateInitialPptmScript() : boolean {\n const id = window.location.hostname;\n\n if (!id) {\n return false;\n }\n\n if (isPayPalDomain()) {\n return false;\n }\n\n const existingScript = getElement(PPTM_ID);\n const alreadyDownloaded = Boolean(existingScript);\n\n if (alreadyDownloaded) {\n info('pptm_tried_loading_twice');\n return false;\n }\n\n return true;\n}\n\nfunction removePptm() {\n const script = getElement(PPTM_ID);\n\n if (script) {\n // $FlowFixMe\n script.parentNode.removeChild(script);\n }\n}\n\nexport function pptmFactory() : Object {\n let noContentFoundInContainer = false;\n const callback = `__pptmLoadedWithNoContent`;\n let listener;\n\n const obj = {\n /*\n In the button component, we set up a global window[callback] that will be called in pptm `onload` attribute.\n Button.render calls `reloadPptmScript`, which checks if window[callback] has been called yet (meaning, it checks\n if pptm.js was loaded before Button.render was called). If so, we'll check to see if we should reload PPTM\n now that we might have a client ID from the Button.render method.\n If pptm.js hasn't loaded yet, then we'll set up a listener to the same logic above to defer it until\n pptm.js actually loads.\n */\n reloadPptmScript(clientId : ?string) {\n const tryCreatePptmScript = () => {\n if (obj.shouldReloadPptmScript(clientId)) {\n obj.removePptm();\n obj.createPptmScript(clientId);\n } else {\n // Defer until later, since reloadPptmScript might have been called\n // before pptm loaded, so we'll still want to hook into the script load.\n listener = tryCreatePptmScript;\n }\n };\n\n tryCreatePptmScript();\n },\n listenForLoadWithNoContent() {\n window[callback] = () => {\n noContentFoundInContainer = true;\n\n if (listener) {\n listener();\n listener = undefined;\n }\n };\n },\n listenForButtonRender() {\n window.paypalDDL = window.paypalDDL || [];\n const buttonRenderEvent = window.paypalDDL.filter(e => e.event === 'paypalButtonRender');\n if (buttonRenderEvent.length === 0) {\n window.paypalDDL.push({ event: 'paypalButtonRender' });\n }\n },\n get callback() : string {\n return callback;\n },\n get noContentFoundInContainer() : boolean {\n return noContentFoundInContainer;\n },\n createPptmScript: (clientId : ?string) => {\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.PPTM,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.PPTM_LOAD\n });\n \n const params = {\n t: 'xo',\n id: window.location.hostname,\n mrid: config.merchantID,\n client_id: '',\n v: config.version,\n source: 'checkoutjs'\n };\n \n if (clientId) {\n params.client_id = clientId;\n } else {\n delete params.client_id;\n }\n \n const fullUrl = extendUrl(config.pptmUrl, params);\n \n loadScript(fullUrl, 0, {\n async: true,\n id: PPTM_ID\n }).then(() => {\n // If the snippet is empty, then fire the callback.\n // We assume non-empty pptm.js bundles with init the paypalDDL and push an event called\n // `snippetRun` to it.\n if (!(window.paypalDDL && window.paypalDDL[0] && window.paypalDDL[0].event === 'snippetRun')) {\n window[callback]();\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.PPTM,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.PPTM_LOADED\n });\n }).catch(err => {\n info('pptm_script_error', { error: stringifyError(err) });\n });\n },\n shouldCreateInitialPptmScript,\n /*\n During Button render if a client ID was provided, we'll want to refresh the\n pptm script to try to pull down a container by that value.\n We'll only do this if we're not on the PayPal domain, or if\n a merchant ID wasn't already provided (since container look-up can\n also happen by merchant ID). Note that this will only happen\n if there was no content found in the container that was pulled down\n in the `setup` script. This is important because we don't want\n to pull down multiple containers that actually contain content,\n otherwise we'll be firing duplicate tags.\n */\n shouldReloadPptmScript(clientId : ?string) : boolean {\n if (noContentFoundInContainer === false) {\n return false;\n }\n\n if (isPayPalDomain()) {\n return false;\n }\n \n // If a merchant ID was already provided, then that meant we initially\n // loaded the pptm script with that value as the main container\n // look-up value, so in this case we don't want to reload pptm.\n if (config.merchantID) {\n return false;\n }\n \n if (clientId) {\n return true;\n }\n \n return false;\n },\n removePptm\n };\n\n return obj;\n}\n","/* @flow */\n\nimport { pptmFactory } from './pptm-factory';\n\nexport const pptm = pptmFactory();\n","/* @flow */\n\nexport * from './pptm';\nexport * from './pptm-factory';\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { on, send } from 'post-robot/src';\nimport { base64encode } from 'belter/src';\nimport { info, track } from 'beaver-logger/client';\nimport { getAncestor, isSameDomain } from 'cross-domain-utils/src';\n\nimport { config } from '../config';\nimport { FPTI, PAYMENT_TYPE } from '../constants';\nimport { request, memoize, isPayPalDomain, uniqueID } from '../lib';\n\ntype ProxyRest = {\n [string] : (...args : $ReadOnlyArray) => ZalgoPromise<*>\n};\n\nlet proxyRest : ProxyRest = {};\n\nconst createAccessToken = memoize((env : string, client : { [key : string] : string }) : ZalgoPromise => {\n\n info(`rest_api_create_access_token`);\n\n env = env || config.env;\n\n const clientID : string = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (proxyRest.createAccessToken && !proxyRest.createAccessToken.source.closed) {\n return proxyRest.createAccessToken(env, client);\n }\n\n const basicAuth : string = base64encode(`${ clientID }:`);\n\n return request({\n\n method: `post`,\n url: config.authApiUrls[env],\n headers: {\n Authorization: `Basic ${ basicAuth }`\n },\n data: {\n grant_type: `client_credentials`\n }\n\n }).then(res => {\n\n if (res && res.error === 'invalid_client') {\n throw new Error(`Auth Api invalid ${ env } client id: ${ clientID }:\\n\\n${ JSON.stringify(res, null, 4) }`);\n }\n\n if (!res || !res.access_token) {\n throw new Error(`Auth Api response error:\\n\\n${ JSON.stringify(res, null, 4) }`);\n }\n\n return res.access_token;\n });\n\n}, { time: 10 * 60 * 1000 });\n\nconst createExperienceProfile = memoize((env : string, client : { [key : string] : string }, experienceDetails : Object = {}) : ZalgoPromise => {\n\n info(`rest_api_create_experience_profile`);\n\n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (proxyRest.createExperienceProfile && !proxyRest.createExperienceProfile.source.closed) {\n return proxyRest.createExperienceProfile(env, client, experienceDetails);\n }\n\n experienceDetails.temporary = true;\n experienceDetails.name = experienceDetails.name ? `${ experienceDetails.name }_${ Math.random().toString() }` : Math.random().toString();\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n return request({\n method: `post`,\n url: config.experienceApiUrls[env],\n headers: {\n Authorization: `Bearer ${ accessToken }`\n },\n json: experienceDetails\n });\n\n }).then((res) : string => {\n\n if (res && res.error) {\n throw new Error(res.error);\n }\n\n if (!res.id) {\n throw new Error(`No id in experience profile response:\\n\\n${ JSON.stringify(res, null, 4) }`);\n }\n\n return res.id;\n });\n\n}, { time: 10 * 60 * 1000 });\n\nfunction logPaymentResponse(res) {\n\n if (!res) {\n return;\n }\n\n let paymentToken;\n let paymentID;\n\n if (res.id) {\n paymentID = res.id;\n }\n\n if (res.links && res.links.length) {\n for (let i = 0; i < res.links.length; i++) {\n if (res.links[i].method === 'REDIRECT' && res.links[i].rel === 'approval_url') {\n const match = res.links[i].href.match(/token=((EC-)?[A-Z0-9]{17})/);\n if (match) {\n paymentToken = match[1];\n }\n }\n }\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.BUTTON,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CREATE_PAYMENT,\n [ FPTI.KEY.CONTEXT_TYPE ]: FPTI.CONTEXT_TYPE[PAYMENT_TYPE.PAY_ID],\n [ FPTI.KEY.PAY_ID ]: paymentID,\n [ FPTI.KEY.TOKEN ]: paymentToken,\n [ FPTI.KEY.CONTEXT_ID ]: paymentID\n });\n}\n\nfunction getDefaultReturnUrl() : string {\n return `https://www.paypal.com/checkoutnow/error`;\n}\n\nfunction createTracking(env : string, client : { [key : string] : string }, merchantID, trackingData) : Object {\n \n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n const trackingID = uniqueID();\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n const headers : Object = {\n Authorization: `Bearer ${ accessToken }`\n };\n\n return request({\n method: `put`,\n url: `${ config.trackingApiUrls[env] }/${ merchantID }/${ trackingID }`,\n headers,\n json: {\n 'tracking_id': trackingID,\n 'additional_data': trackingData\n }\n });\n\n }).then(() => {\n return trackingID;\n });\n}\n\nfunction createPayment(env : string, client : { [key : string] : string }, paymentDetails : Object) : ZalgoPromise {\n\n info(`rest_api_create_checkout_token`);\n\n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n let { payment, experience, meta, tracking } = paymentDetails;\n\n if (!payment) {\n throw new Error(`Expected payment details to be passed`);\n }\n\n if (proxyRest.createPayment && !proxyRest.createPayment.source.closed) {\n return proxyRest.createPayment(env, client, { payment, experience, meta, tracking });\n }\n\n payment = { ...payment };\n payment.intent = payment.intent || 'sale';\n payment.redirect_urls = payment.redirect_urls || {};\n payment.redirect_urls.return_url = payment.redirect_urls.return_url || getDefaultReturnUrl();\n payment.redirect_urls.cancel_url = payment.redirect_urls.cancel_url || getDefaultReturnUrl();\n payment.payer = payment.payer || {};\n payment.payer.payment_method = payment.payer.payment_method || 'paypal';\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n return ZalgoPromise.try(() => {\n\n if (experience) {\n return ZalgoPromise.resolve(createExperienceProfile(env, client, experience));\n }\n\n }).then((experienceID) : ZalgoPromise => {\n\n return ZalgoPromise.try(() => {\n\n if (tracking) {\n return ZalgoPromise.resolve(createTracking(env, client, tracking.id, tracking.data));\n }\n\n }).then((trackingID) : ZalgoPromise => {\n\n if (experienceID) {\n payment.experience_profile_id = experienceID;\n }\n\n const headers : Object = {\n Authorization: `Bearer ${ accessToken }`\n };\n\n if (trackingID) {\n headers['Paypal-Client-Metadata-Id'] = trackingID;\n }\n\n if (meta && meta.partner_attribution_id) {\n headers['PayPal-Partner-Attribution-Id'] = meta.partner_attribution_id;\n }\n\n return request({\n method: `post`,\n url: config.paymentApiUrls[env],\n headers,\n json: payment\n });\n });\n });\n\n }).then((res) : string => {\n\n logPaymentResponse(res);\n\n if (res && res.id) {\n return res.id;\n }\n\n throw new Error(`Payment Api response error:\\n\\n${ JSON.stringify(res, null, 4) }`);\n\n });\n}\n\nfunction createOrder(env : string, client : { [key : string] : string }, paymentDetails : Object) : ZalgoPromise {\n\n info(`rest_api_create_order_token`);\n\n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n let { order, meta } = paymentDetails;\n\n if (!order) {\n throw new Error(`Expected order details to be passed`);\n }\n\n if (proxyRest.createOrder && !proxyRest.createOrder.source.closed) {\n return proxyRest.createOrder(env, client, { order, meta });\n }\n\n order = { ...order };\n order.intent = order.intent || 'CAPTURE';\n order.application_context = order.application_context || {};\n order.application_context.return_url = order.application_context.return_url || getDefaultReturnUrl();\n order.application_context.cancel_url = order.application_context.cancel_url || getDefaultReturnUrl();\n order.purchase_units = order.purchase_units || [];\n order.purchase_units[0] = order.purchase_units[0] || {};\n order.purchase_units.forEach(unit => {\n unit.reference_id = unit.reference_id || Math.random().toString();\n });\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n const headers : Object = {\n Authorization: `Bearer ${ accessToken }`\n };\n\n if (meta && meta.partner_attribution_id) {\n headers['PayPal-Partner-Attribution-Id'] = meta.partner_attribution_id;\n }\n\n return request({\n method: `post`,\n url: config.orderApiUrls[env],\n headers,\n json: order\n });\n\n }).then((res) : string => {\n\n logPaymentResponse(res);\n\n if (res && res.id) {\n return res.id;\n }\n\n throw new Error(`Payment Api response error:\\n\\n${ JSON.stringify(res, null, 4) }`);\n });\n}\n\nexport function createBillingAgreement(env : string, client : { [key : string] : string }, billingDetails : Object, experienceDetails? : ?Object) : ZalgoPromise {\n\n info(`rest_api_create_billing_token`);\n\n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (proxyRest.createBillingAgreement && !proxyRest.createBillingAgreement.source.closed) {\n return proxyRest.createBillingAgreement(env, client, billingDetails, experienceDetails);\n }\n\n billingDetails = { ...billingDetails };\n billingDetails.plan = billingDetails.plan || {};\n billingDetails.plan.merchant_preferences = billingDetails.plan.merchant_preferences || {};\n billingDetails.plan.merchant_preferences.return_url = billingDetails.plan.merchant_preferences.return_url || getDefaultReturnUrl();\n billingDetails.plan.merchant_preferences.cancel_url = billingDetails.plan.merchant_preferences.cancel_url || getDefaultReturnUrl();\n billingDetails.payer = billingDetails.payer || {};\n billingDetails.payer.payment_method = billingDetails.payer.payment_method || 'paypal';\n\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n return ZalgoPromise.try(() => {\n\n if (experienceDetails) {\n return ZalgoPromise.resolve(createExperienceProfile(env, client, experienceDetails));\n }\n\n }).then((experienceID) : ZalgoPromise => {\n\n if (experienceID) {\n billingDetails.experience_profile_id = experienceID;\n }\n\n return request({\n method: `post`,\n url: config.billingApiUrls[env],\n headers: {\n Authorization: `Bearer ${ accessToken }`\n },\n json: billingDetails\n });\n });\n\n }).then(res => {\n\n if (res && res.token_id) {\n return res.token_id;\n }\n\n throw new Error(`Billing Api response error:\\n\\n${ JSON.stringify(res, null, 4) }`);\n });\n}\n\nexport const rest = {\n payment: {\n create: createPayment\n },\n order: {\n create: createOrder\n },\n billingAgreement: {\n create: createBillingAgreement\n },\n experience: {\n create: createExperienceProfile\n }\n};\n\nconst PROXY_REST = `proxy_rest`;\nconst parentWin = getAncestor();\n\non(PROXY_REST, { domain: config.paypal_domain_regex }, ({ data }) => {\n proxyRest = data;\n});\n\nif (parentWin && isPayPalDomain() && !isSameDomain(parentWin)) {\n send(parentWin, PROXY_REST, { createAccessToken, createExperienceProfile, createPayment, createBillingAgreement, createOrder })\n .catch(() => {\n // pass\n });\n}\n","/* @flow */\n\nimport { info, track, immediateFlush } from 'beaver-logger/client';\n\nimport { FPTI, PAYMENT_TYPE } from './constants';\nimport { getReturnToken, getSessionState, getDomainSetting, eventEmitter } from './lib';\n\nexport const onAuthorizeListener = eventEmitter();\n\nfunction log(experiment : string, treatment : string, token : ?string, state : string) {\n\n getSessionState(session => {\n\n let event = `${ experiment }_${ treatment }_${ state }`;\n const loggedEvents = session.loggedExperimentEvents = session.loggedExperimentEvents || [];\n const duplicate = loggedEvents.indexOf(event) !== -1;\n\n if (duplicate) {\n info(`duplicate_${ event }`);\n\n } else {\n info(event);\n loggedEvents.push(event);\n\n const edge = window.navigator && window.navigator.userAgent && window.navigator.userAgent.match(/Edge\\/[0-9]{2}/);\n\n if (edge) {\n event = info(`${ edge[0].toLowerCase().replace('/', '_') }_${ event }`);\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: state,\n [ FPTI.KEY.EXPERIMENT_NAME ]: experiment,\n [ FPTI.KEY.TREATMENT_NAME ]: treatment,\n [ FPTI.KEY.TOKEN ]: token,\n [ FPTI.KEY.CONTEXT_ID ]: token,\n [ FPTI.KEY.CONTEXT_TYPE ]: token ? FPTI.CONTEXT_TYPE[PAYMENT_TYPE.EC_TOKEN] : FPTI.CONTEXT_TYPE.BUTTON_SESSION_ID\n });\n\n immediateFlush();\n }\n });\n}\n\nexport function logExperimentTreatment({ experiment, treatment, state, token } : { experiment : string, treatment : string, state : string, token : ?string }) {\n\n if (!experiment || !treatment) {\n return;\n }\n\n getSessionState(session => {\n session.externalExperiment = experiment;\n session.externalExperimentTreatment = treatment;\n\n if (token) {\n session.externalExperimentToken = token;\n }\n });\n\n log(experiment, treatment, token, state);\n}\n\nfunction logReturn(token : string) {\n\n const {\n externalExperiment,\n externalExperimentTreatment,\n externalExperimentToken\n } = getSessionState(session => session);\n\n if (externalExperiment && externalExperimentTreatment && externalExperimentToken === token) {\n log(externalExperiment, externalExperimentTreatment, token, `complete`);\n } else {\n info(`experiment_mismatch`, {\n token,\n externalExperiment,\n externalExperimentTreatment,\n externalExperimentToken\n });\n }\n}\n\nif (getDomainSetting('log_authorize')) {\n\n onAuthorizeListener.once(({ paymentToken }) => {\n setTimeout(() => {\n logReturn(paymentToken);\n }, 1);\n });\n\n const returnToken = getReturnToken();\n\n if (returnToken) {\n setTimeout(() => {\n if (returnToken) {\n logReturn(returnToken);\n }\n }, 1);\n }\n}\n","/* @flow */\n\nimport { once, noop } from 'zoid/src/lib';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { error } from 'beaver-logger/client';\nimport type { CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { extendUrl, redirect, awaitKey, stringifyError } from '../lib';\nimport { config } from '../config';\nimport { FUNDING } from '../constants';\n\nimport { determineParameterFromToken, determineUrl } from './checkout';\n\nconst OPTYPE = {\n PAYMENT: 'payment',\n CANCEL: 'cancel'\n};\n\nconst CONTINGENCY = {\n PAYMENT_CANCELLED: 'PAYMENT_CANCELLED'\n};\n\ntype PopupBridge = {|\n open : (string) => ZalgoPromise\n|};\n\nfunction wrapPopupBridge(popupBridge : Object) : PopupBridge {\n return {\n open(url : string) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n popupBridge.onComplete = (err, result) => {\n if (!result) {\n return reject(new Error('No payload passed in popupBridge.onComplete'));\n }\n\n return err ? reject(err) : resolve(result);\n };\n\n popupBridge.onCancel = () => {\n const err = new Error(CONTINGENCY.PAYMENT_CANCELLED);\n // $FlowFixMe\n err.code = CONTINGENCY.PAYMENT_CANCELLED;\n return reject(err);\n };\n\n popupBridge.open(extendUrl(url, { redirect_uri: popupBridge.getReturnUrlPrefix() }));\n });\n }\n };\n}\n\nfunction validateCheckoutProps(props) {\n if (!props.payment) {\n throw new Error(`Expected props.payment to be passed`);\n }\n\n if (!props.onAuthorize) {\n throw new Error(`Expected props.onAuthorize to be passed`);\n }\n\n if (props.env && !config.checkoutUrls[props.env]) {\n throw new Error(`Invalid props.env: ${ props.env }`);\n }\n}\n\nfunction normalizeCheckoutProps(props : Object) : { env : string, payment : Function, onAuthorize : Function, onCancel : Function } {\n const env = props.env = props.env || config.env;\n\n const payment = props.payment;\n const onAuthorize = once(props.onAuthorize);\n const onCancel = once(props.onCancel || noop);\n\n return { env, payment, onAuthorize, onCancel };\n}\n\nfunction getUrl(props : { env : string, payment : Function, onAuthorize : Function, onCancel? : Function, commit? : boolean }) : ZalgoPromise {\n\n const { env, payment } = normalizeCheckoutProps(props);\n\n return ZalgoPromise.try(payment, { props }).then(token => {\n if (!token) {\n throw new Error(`Expected props.payment to return a payment id or token`);\n }\n\n return extendUrl(determineUrl(env, FUNDING.PAYPAL, token), {\n [determineParameterFromToken(token)]: token,\n\n useraction: props.commit ? 'commit' : '',\n native_xo: '1'\n });\n });\n}\n\nfunction extractDataFromQuery(query : Object) : Object {\n\n const data : Object = {\n paymentToken: query.token,\n billingToken: query.ba_token,\n paymentID: query.paymentId,\n payerID: query.PayerID,\n intent: query.intent\n };\n \n const { opType, return_uri, cancel_uri } = query;\n\n if (opType === OPTYPE.PAYMENT) {\n data.returnUrl = return_uri;\n\n } else if (opType === OPTYPE.CANCEL) {\n data.cancelUrl = cancel_uri;\n }\n\n return data;\n}\n\nfunction buildActions(query : Object) : Object {\n \n const actions : Object = {\n close: noop,\n closeComponent: noop\n };\n\n const { opType, return_uri, cancel_uri } = query;\n\n if (opType === OPTYPE.PAYMENT) {\n actions.redirect = (win : CrossDomainWindowType = window, redirectUrl : string = return_uri) : ZalgoPromise => {\n return redirect(win, redirectUrl);\n };\n\n } else if (opType === OPTYPE.CANCEL) {\n actions.redirect = (win : CrossDomainWindowType = window, redirectUrl : string = cancel_uri) : ZalgoPromise => {\n return redirect(win, redirectUrl);\n };\n }\n\n return actions;\n}\n\nfunction renderThroughPopupBridge(props : Object, popupBridge : PopupBridge) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n validateCheckoutProps(props);\n\n }).then(() => {\n\n return getUrl(props);\n \n }).then(url => {\n\n return popupBridge.open(url);\n\n }).then(payload => {\n\n const { opType } = payload.queryItems;\n const { onAuthorize, onCancel } = normalizeCheckoutProps(props);\n\n const data = extractDataFromQuery(payload.queryItems);\n const actions = buildActions(payload.queryItems);\n \n if (opType === OPTYPE.PAYMENT) {\n return onAuthorize(data, actions);\n\n } else if (opType === OPTYPE.CANCEL) {\n return onCancel(data, actions);\n \n } else {\n throw new Error(`Invalid opType: ${ opType }`);\n }\n\n }).catch(err => {\n\n if (err && err.code === CONTINGENCY.PAYMENT_CANCELLED) {\n const { onCancel } = normalizeCheckoutProps(props);\n return onCancel({}, {});\n }\n\n throw err;\n });\n}\n\nexport function awaitPopupBridge(Button : Object) : ZalgoPromise {\n if (Button.xprops && Button.xprops.awaitPopupBridge) {\n return Button.xprops.awaitPopupBridge();\n }\n\n return awaitKey(window, 'popupBridge').then(popupBridge => {\n return wrapPopupBridge(popupBridge);\n });\n}\n\nexport function setupPopupBridgeProxy(Checkout : Object, Button : Object) {\n\n let popupBridge;\n\n awaitPopupBridge(Button).then(bridge => {\n popupBridge = bridge;\n });\n\n function doRender(props, original) : ZalgoPromise {\n if (!popupBridge) {\n return original();\n }\n \n return renderThroughPopupBridge(props, popupBridge)\n .catch(err => {\n error(`popup_bridge_error`, { err: stringifyError(err) });\n return original();\n });\n }\n\n const render = Checkout.render;\n Checkout.render = function popupBridgeRender(props : Object) : ZalgoPromise {\n return doRender(props, () => render.apply(this, arguments));\n };\n\n const renderTo = Checkout.renderTo;\n Checkout.renderTo = function popupBridgeRenderTo(win : CrossDomainWindowType, props : Object) : ZalgoPromise {\n return doRender(props, () => renderTo.apply(this, arguments));\n };\n\n const renderPopupTo = Checkout.renderPopupTo;\n Checkout.renderPopupTo = function popupBridgeRenderPopupTo(win : CrossDomainWindowType, props : Object) : ZalgoPromise {\n return doRender(props, () => renderPopupTo.apply(this, arguments));\n };\n}\n","/* @flow */\n/* global __paypal_checkout__*/\n\nimport { FUNDING, COUNTRY, CARD, PLATFORM, DEFAULT, ENV } from '../constants';\n\nexport const FUNDING_PRIORITY = [\n FUNDING.PAYPAL,\n FUNDING.VENMO,\n FUNDING.ITAU,\n FUNDING.CREDIT,\n FUNDING.CARD,\n FUNDING.IDEAL,\n FUNDING.ELV,\n FUNDING.BANCONTACT,\n FUNDING.GIROPAY,\n FUNDING.EPS,\n FUNDING.SOFORT,\n FUNDING.MYBANK,\n FUNDING.BLIK,\n FUNDING.P24,\n FUNDING.PAYU,\n FUNDING.VERKKOPANKKI,\n FUNDING.TRUSTLY,\n FUNDING.MAXIMA,\n FUNDING.BOLETO,\n FUNDING.OXXO\n];\n\nexport const FUNDING_ORDER = [\n FUNDING.PAYPAL,\n FUNDING.VENMO,\n FUNDING.ITAU,\n FUNDING.CREDIT,\n FUNDING.IDEAL,\n FUNDING.ELV,\n FUNDING.BANCONTACT,\n FUNDING.GIROPAY,\n FUNDING.EPS,\n FUNDING.SOFORT,\n FUNDING.MYBANK,\n FUNDING.BLIK,\n FUNDING.P24,\n FUNDING.PAYU,\n FUNDING.VERKKOPANKKI,\n FUNDING.TRUSTLY,\n FUNDING.MAXIMA,\n FUNDING.BOLETO,\n FUNDING.OXXO,\n FUNDING.CARD\n];\n\nexport const FUNDING_CONFIG = {\n\n [ DEFAULT ]: {\n enabled: true,\n\n allowOptIn: true,\n allowOptOut: true,\n allowRemember: true,\n\n allowHorizontal: true,\n allowVertical: true,\n\n requireCommitAsTrue: false\n },\n\n [ FUNDING.PAYPAL ]: {\n default: true,\n\n allowOptIn: false,\n allowOptOut: false,\n\n allowHorizontal: true,\n allowVertical: true\n },\n\n [ FUNDING.CARD ]: {\n // $FlowFixMe\n default: (typeof __paypal_checkout__ === 'undefined' ? true : __paypal_checkout__.serverConfig.paypalMerchantConfiguration.creditCard.isPayPalBranded),\n\n allowHorizontal: false,\n allowVertical: true\n },\n\n [ FUNDING.VENMO ]: {\n allowOptOut: true,\n allowedCountries: [\n COUNTRY.US\n ],\n\n allowHorizontal: true,\n allowVertical: true\n },\n [ FUNDING.ITAU ]: {\n allowOptOut: true,\n allowedCountries: [\n COUNTRY.BR\n ],\n\n allowHorizontal: true,\n allowVertical: true\n },\n\n [ FUNDING.CREDIT ]: {\n allowedCountries: [\n COUNTRY.US,\n COUNTRY.GB,\n COUNTRY.DE\n ],\n defaultVerticalCountries: [\n COUNTRY.US\n ],\n platforms: [\n PLATFORM.MOBILE\n ],\n\n allowHorizontal: true,\n allowVertical: true,\n allowRemember: true\n },\n\n [ FUNDING.IDEAL ]: {\n allowedCountries: [\n COUNTRY.NL\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.ELV ]: {\n allowedCountries: [\n COUNTRY.DE\n ],\n defaultVerticalCountries: [\n COUNTRY.DE\n ],\n\n allowHorizontal: false,\n allowVertical: true\n },\n\n [ FUNDING.BANCONTACT ]: {\n allowedCountries: [\n COUNTRY.BE\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.GIROPAY ]: {\n allowedCountries: [\n COUNTRY.DE\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.SOFORT ]: {\n allowedCountries: [\n COUNTRY.DE,\n COUNTRY.AT,\n COUNTRY.BE,\n COUNTRY.ES,\n COUNTRY.IT,\n COUNTRY.NL\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.EPS ]: {\n allowedCountries: [\n COUNTRY.AT\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.MYBANK ]: {\n allowedCountries: [\n COUNTRY.IT\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.P24 ]: {\n allowedCountries: [\n COUNTRY.PL\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.PAYU ]: {\n allowedCountries: [\n COUNTRY.CZ\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.VERKKOPANKKI ]: {\n allowedCountries: [\n COUNTRY.FI\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.BLIK ]: {\n allowedCountries: [\n COUNTRY.PL\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.TRUSTLY ]: {\n allowedCountries: [\n COUNTRY.DE,\n COUNTRY.DK,\n COUNTRY.EE,\n COUNTRY.ES,\n COUNTRY.FI,\n COUNTRY.GB,\n COUNTRY.IT,\n COUNTRY.MT,\n COUNTRY.NL,\n COUNTRY.NO,\n COUNTRY.SE\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.MAXIMA ]: {\n allowedCountries: [\n COUNTRY.LT\n ],\n\n allowedEnvs: [\n ENV.LOCAL,\n ENV.STAGE,\n ENV.TEST\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.BOLETO ]: {\n allowedCountries: [\n COUNTRY.BR\n ],\n\n allowedEnvs: [\n ENV.LOCAL,\n ENV.STAGE,\n ENV.TEST\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.OXXO ]: {\n allowedCountries: [\n COUNTRY.MX\n ],\n\n allowedEnvs: [\n ENV.LOCAL,\n ENV.STAGE,\n ENV.TEST\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.ZIMPLER ]: {\n allowedCountries: [],\n\n allowHorizontal: false,\n allowVertical: false,\n requireCommitAsTrue: true\n }\n};\n\nexport const CARD_CONFIG = {\n\n [ DEFAULT ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX\n ]\n },\n\n [ COUNTRY.GB ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.DISCOVER,\n CARD.MAESTRO\n ]\n },\n\n [ COUNTRY.US ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.DISCOVER\n ]\n },\n\n [ COUNTRY.BR ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.HIPER,\n CARD.ELO\n ]\n },\n\n [ COUNTRY.JP ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.JCB\n ]\n },\n\n [ COUNTRY.CN ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.CUP\n ]\n }\n};\n\nfunction getConfig(conf : Object, category : string, key : string, def : ?T) : T {\n const categoryConfig = conf[category];\n\n if (categoryConfig && categoryConfig.hasOwnProperty(key)) {\n return categoryConfig[key];\n }\n\n if (conf[DEFAULT] && conf[DEFAULT].hasOwnProperty(key)) {\n return conf[DEFAULT][key];\n }\n\n if (arguments.length >= 4) {\n // $FlowFixMe\n return def;\n }\n\n throw new Error(`No value found for ${ category }:${ key }`);\n}\n\nexport function getFundingConfig(source : string, key : string, def : ?T) : T {\n return getConfig(FUNDING_CONFIG, source, key, def);\n}\n\nexport function getCardConfig(source : string, key : string, def : ?T) : T {\n return getConfig(CARD_CONFIG, source, key, def);\n}\n","/* @flow */\n\nimport { ENV, CARD_PRIORITY, FUNDING, BUTTON_LAYOUT, FUNDING_ELIGIBILITY_REASON } from '../constants';\nimport type { LocaleType, FundingSource, FundingSelection, FundingList } from '../types';\n\nimport { getFundingConfig, getCardConfig, FUNDING_PRIORITY, FUNDING_CONFIG } from './config';\n\nconst fundingEligibilityReasons = [];\n\nexport function isFundingIneligible(source : FundingSource, { locale, funding, layout, commit, env } :\n { locale : LocaleType, funding : FundingSelection, layout : string, commit? : boolean, env : string }) : ?string {\n\n const isVertical = layout === BUTTON_LAYOUT.VERTICAL;\n const allowSecondary = getFundingConfig(source, isVertical ? 'allowVertical' : 'allowHorizontal');\n\n if (!allowSecondary) {\n return FUNDING_ELIGIBILITY_REASON.SECONDARY_DISALLOWED;\n }\n\n if (funding.disallowed.indexOf(source) !== -1 && getFundingConfig(source, 'allowOptOut')) {\n return FUNDING_ELIGIBILITY_REASON.OPT_OUT;\n }\n\n if (funding.disallowed.indexOf(source) !== -1 && source === FUNDING.VENMO) {\n return FUNDING_ELIGIBILITY_REASON.OPT_OUT;\n }\n if (funding.disallowed.indexOf(source) !== -1 && source === FUNDING.ITAU) {\n return FUNDING_ELIGIBILITY_REASON.OPT_OUT;\n }\n\n if (getFundingConfig(source, 'allowedCountries', [ locale.country ]).indexOf(locale.country) === -1) {\n return FUNDING_ELIGIBILITY_REASON.DISALLOWED_COUNTRY;\n }\n\n if (getFundingConfig(source, 'requireCommitAsTrue') && !commit) {\n return FUNDING_ELIGIBILITY_REASON.COMMIT_NOT_SET;\n }\n\n const allowedEnvs = getFundingConfig(source, 'allowedEnvs');\n if (allowedEnvs && allowedEnvs.indexOf(env) === -1) {\n return FUNDING_ELIGIBILITY_REASON.INVALID_ENV;\n }\n}\n\nexport function isFundingAutoEligible(source : FundingSource, { locale, funding, layout } :\n { locale : LocaleType, funding : FundingSelection, layout : string }) : ?string {\n\n const isVertical = layout === BUTTON_LAYOUT.VERTICAL;\n\n if (isVertical && getFundingConfig(source, 'defaultVerticalCountries', []).indexOf(locale.country) !== -1) {\n return FUNDING_ELIGIBILITY_REASON.DEFAULT_COUNTRY;\n }\n\n if (getFundingConfig(source, 'default')) {\n return FUNDING_ELIGIBILITY_REASON.DEFAULT;\n }\n\n if (funding.allowed.indexOf(source) !== -1 && getFundingConfig(source, 'allowOptIn')) {\n return FUNDING_ELIGIBILITY_REASON.OPT_IN;\n }\n\n if (funding.remembered.indexOf(source) !== -1 && getFundingConfig(source, 'allowRemember')) {\n return FUNDING_ELIGIBILITY_REASON.REMEMBERED;\n }\n}\n\nexport function isFundingEligible(source : FundingSource, { locale, funding, env, layout, selected, commit } :\n { locale : LocaleType, funding : FundingSelection, env : string, layout : string, selected? : string, commit : boolean }) : { eligible : boolean, reason : string } {\n\n if (selected && source === selected) {\n return { eligible: true, reason: FUNDING_ELIGIBILITY_REASON.PRIMARY };\n }\n\n if (!getFundingConfig(source, 'enabled')) {\n if (!(env === ENV.TEST && getFundingConfig(source, 'test'))) {\n return { eligible: false, reason: FUNDING_ELIGIBILITY_REASON.NOT_ENABLED };\n }\n }\n\n const ineligibleReason = isFundingIneligible(source, { locale, funding, layout, commit, env });\n\n if (ineligibleReason) {\n return { eligible: false, reason: ineligibleReason };\n }\n\n const autoEligibleReason = isFundingAutoEligible(source, { locale, funding, layout });\n\n if (autoEligibleReason) {\n return { eligible: true, reason: autoEligibleReason };\n }\n\n return { eligible: false, reason: FUNDING_ELIGIBILITY_REASON.NEED_OPT_IN };\n}\n\nexport function determineEligibleFunding({ funding, selected, locale, env, layout, commit } :\n { funding : FundingSelection, selected : FundingSource, locale : LocaleType, env : string, layout : string, commit : boolean }) : FundingList {\n\n const reasons = {};\n\n const eligibleFunding = FUNDING_PRIORITY.filter(source => {\n const { eligible, reason } = isFundingEligible(source, { selected, locale, funding, env, layout, commit });\n reasons[source] = { eligible, reason, factors: { env, locale, layout } };\n return eligible;\n });\n\n fundingEligibilityReasons.push(reasons);\n\n eligibleFunding.splice(eligibleFunding.indexOf(selected), 1);\n eligibleFunding.unshift(selected);\n\n return eligibleFunding;\n}\n\nexport function determineEligibleCards({ funding, locale } :\n { funding : FundingSelection, locale : LocaleType }) : FundingList {\n\n return getCardConfig(locale.country, 'priority')\n .filter(card => funding.disallowed.indexOf(card) === -1);\n}\n\nexport function validateFunding(funding : FundingSelection = { allowed: [], disallowed: [], remembered: [] }) {\n\n if (funding.allowed) {\n for (const source of funding.allowed) {\n if (CARD_PRIORITY.indexOf(source) !== -1) {\n continue;\n }\n\n if (!FUNDING_CONFIG.hasOwnProperty(source)) {\n throw new Error(`Invalid funding source: ${ source }`);\n }\n\n if (!getFundingConfig(source, 'allowOptIn')) {\n throw new Error(`Can not allow funding source: ${ source }`);\n }\n\n if (funding.disallowed && funding.disallowed.indexOf(source) !== -1) {\n throw new Error(`Can not allow and disallow funding source: ${ source }`);\n }\n }\n }\n\n if (funding.disallowed) {\n for (const source of funding.disallowed) {\n if (CARD_PRIORITY.indexOf(source) !== -1) {\n continue;\n }\n\n if (!FUNDING_CONFIG.hasOwnProperty(source)) {\n throw new Error(`Invalid funding source: ${ source }`);\n }\n\n if (!getFundingConfig(source, 'allowOptOut')) {\n throw new Error(`Can not disallow funding source: ${ source }`);\n }\n }\n }\n}\n\nexport function logFundingEligibility() {\n fundingEligibilityReasons.forEach((reasons, i) => {\n console.log(`\\nButton ${ i + 1 }:\\n`); // eslint-disable-line no-console\n\n console.table(Object.keys(reasons).map(source => { // eslint-disable-line no-console, compat/compat\n const { reason, eligible, factors } = reasons[source];\n\n return {\n 'Funding': source,\n 'Reason': reason,\n 'Eligibility': eligible ? 'eligible' : 'ineligible',\n 'Factors': JSON.stringify(factors)\n };\n }));\n });\n}\n","/* @flow */\n/* eslint no-template-curly-in-string: off, max-lines: off */\n\nimport { FUNDING, DEFAULT, COUNTRY, BUTTON_LABEL, BUTTON_COLOR, BUTTON_LOGO_COLOR, BUTTON_SIZE,\n BUTTON_TAGLINE_COLOR, BUTTON_SHAPE, BUTTON_LAYOUT, BUTTON_LOGO } from '../constants';\n\ntype ButtonConfig = {\n [ string ] : {\n colors? : $ReadOnlyArray<$Values>\n }\n};\n\nexport const BUTTON_CONFIG : ButtonConfig = {\n\n [ DEFAULT ]: {\n\n colors: [\n BUTTON_COLOR.GOLD,\n BUTTON_COLOR.BLUE,\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n sizes: [\n BUTTON_SIZE.SMALL,\n BUTTON_SIZE.MEDIUM,\n BUTTON_SIZE.LARGE,\n BUTTON_SIZE.RESPONSIVE\n ],\n\n shapes: [\n BUTTON_SHAPE.PILL,\n BUTTON_SHAPE.RECT\n ],\n\n layouts: [\n BUTTON_LAYOUT.HORIZONTAL,\n BUTTON_LAYOUT.VERTICAL\n ],\n\n logoColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_LOGO_COLOR.BLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLUE\n },\n\n tagLineColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_TAGLINE_COLOR.BLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_TAGLINE_COLOR.BLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_TAGLINE_COLOR.BLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_TAGLINE_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_TAGLINE_COLOR.BLUE\n\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n tag: `{ content: safer_tag }`,\n dualTag: `{ content: dual_tag|safer_tag }`,\n\n defaultLocale: `en_US`,\n defaultLabel: BUTTON_LABEL.CHECKOUT,\n defaultVerticalLabel: BUTTON_LABEL.PAYPAL,\n defaultColor: BUTTON_COLOR.GOLD,\n defaultSize: BUTTON_SIZE.SMALL,\n defaultVerticalSize: BUTTON_SIZE.MEDIUM,\n defaultShape: BUTTON_SHAPE.PILL,\n defaultLayout: BUTTON_LAYOUT.HORIZONTAL,\n defaultBranding: true,\n defaultVerticalBranding: true,\n defaultFundingIcons: false,\n defaultTagline: true,\n defaultDual: ``,\n\n minimumSize: BUTTON_SIZE.TINY,\n minimumVerticalSize: BUTTON_SIZE.MEDIUM,\n\n maximumSize: BUTTON_SIZE.HUGE,\n maximumVerticalSize: BUTTON_SIZE.HUGE,\n\n minHorizontalButtons: 1,\n minVerticalButtons: 1,\n\n maxHorizontalButtons: 2,\n maxVerticalButtons: 6,\n\n allowUnbranded: false,\n allowFundingIcons: true,\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.PAYPAL ]: {\n label: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n allowPrimary: true,\n\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true\n },\n\n [ BUTTON_LABEL.CHECKOUT ]: {\n label: `{ content: checkout }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n allowPrimary: true,\n\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true\n },\n\n [ BUTTON_LABEL.PAY ]: {\n label: `{ content: pay }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n allowPrimary: true,\n\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true\n },\n\n [ BUTTON_LABEL.BUYNOW ]: {\n label: `{ content: buynow }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n defaultBranding: undefined,\n\n allowPrimary: true,\n\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true,\n\n allowUnbranded: true\n },\n\n [ BUTTON_LABEL.INSTALLMENT ]: {\n label: (style) => { return `{ content: ${ style.installmentperiod ? 'installment_period' : 'installment' } }`; },\n logoLabel: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n allowPrimary: true,\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true,\n allowSecondaryVertical: false,\n allowSecondaryHorizontal: false\n },\n\n [ BUTTON_LABEL.CREDIT ]: {\n label: ({ locale }) => {\n if (locale.country === COUNTRY.DE) {\n return `{ logo: ${ BUTTON_LOGO.CREDIT } }`;\n }\n\n return `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } } { logo: ${ BUTTON_LOGO.CREDIT } }`;\n },\n logoLabel: ({ locale }) => {\n if (locale.country === COUNTRY.DE) {\n return `{ logo: ${ BUTTON_LOGO.CREDIT } }`;\n }\n\n return `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } } { logo: ${ BUTTON_LOGO.CREDIT } }`;\n },\n\n tag: `{ content: later_tag }`,\n\n colors: [\n BUTTON_COLOR.DARKBLUE,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLUE\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n defaultColor: BUTTON_COLOR.DARKBLUE,\n\n allowPrimary: true,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false,\n\n allowFundingIcons: false\n },\n\n [ BUTTON_LABEL.VENMO ]: {\n label: `{ logo: ${ BUTTON_LOGO.VENMO } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.VENMO } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.BLUE,\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.BLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLUE\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: true,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: true\n },\n [ BUTTON_LABEL.ITAU ]: {\n label: `{ logo: ${ BUTTON_LOGO.ITAU } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.ITAU } }`,\n\n defaultColor: BUTTON_COLOR.DARKBLUE,\n\n colors: [\n BUTTON_COLOR.DARKBLUE,\n BUTTON_COLOR.BLUE,\n BUTTON_COLOR.BLACK\n ],\n\n logoColors: {\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.DARKBLUE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: true\n },\n\n [ BUTTON_LABEL.IDEAL ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.IDEAL } } Online betalen`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.IDEAL } } Online betalen`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.ELV ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.ELV } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.ELV } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.BANCONTACT ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.BANCONTACT } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.BANCONTACT } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.GIROPAY ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.GIROPAY } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.GIROPAY } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.SOFORT ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.SOFORT } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.SOFORT } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.EPS ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.EPS } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.EPS } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.MYBANK ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.MYBANK } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.MYBANK } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.P24 ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.P24 } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.P24 } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.PAYU ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.PAYU } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PAYU } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.VERKKOPANKKI ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.VERKKOPANKKI } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.VERKKOPANKKI } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.BLIK ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.BLIK } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.BLIK } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.TRUSTLY ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.TRUSTLY } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.TRUSTLY } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.MAXIMA ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.MAXIMA } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.MAXIMA } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.BOLETO ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.BOLETO } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.BOLETO } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.OXXO ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.OXXO } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.OXXO } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.CARD ]: {\n\n label: `{ cards }`,\n logoLabel: `{ cards }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.TRANSPARENT\n ],\n\n logoColors: {\n [ BUTTON_COLOR.TRANSPARENT ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.TRANSPARENT\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n }\n};\n\nexport const FUNDING_TO_DEFAULT_LABEL = {\n [ FUNDING.PAYPAL ]: BUTTON_LABEL.PAYPAL,\n [ FUNDING.VENMO ]: BUTTON_LABEL.VENMO,\n [ FUNDING.ITAU ]: BUTTON_LABEL.ITAU,\n [ FUNDING.CARD ]: BUTTON_LABEL.CARD,\n [ FUNDING.CREDIT ]: BUTTON_LABEL.CREDIT,\n [ FUNDING.IDEAL ]: BUTTON_LABEL.IDEAL,\n [ FUNDING.ELV ]: BUTTON_LABEL.ELV,\n [ FUNDING.BANCONTACT ]: BUTTON_LABEL.BANCONTACT,\n [ FUNDING.GIROPAY ]: BUTTON_LABEL.GIROPAY,\n [ FUNDING.SOFORT ]: BUTTON_LABEL.SOFORT,\n [ FUNDING.EPS ]: BUTTON_LABEL.EPS,\n [ FUNDING.P24 ]: BUTTON_LABEL.P24,\n [ FUNDING.MYBANK ]: BUTTON_LABEL.MYBANK,\n [ FUNDING.PAYU ]: BUTTON_LABEL.PAYU,\n [ FUNDING.VERKKOPANKKI]: BUTTON_LABEL.VERKKOPANKKI,\n [ FUNDING.BLIK ]: BUTTON_LABEL.BLIK,\n [ FUNDING.TRUSTLY ]: BUTTON_LABEL.TRUSTLY,\n [ FUNDING.MAXIMA ]: BUTTON_LABEL.MAXIMA,\n [ FUNDING.BOLETO ]: BUTTON_LABEL.BOLETO,\n [ FUNDING.OXXO ]: BUTTON_LABEL.OXXO\n};\n\nexport const LABEL_TO_FUNDING = {\n [ BUTTON_LABEL.PAYPAL ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.CHECKOUT ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.PAY ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.BUYNOW ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.INSTALLMENT ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.CARD ]: FUNDING.CARD,\n [ BUTTON_LABEL.CREDIT ]: FUNDING.CREDIT,\n [ BUTTON_LABEL.VENMO ]: FUNDING.VENMO,\n [ BUTTON_LABEL.ITAU ]: FUNDING.ITAU,\n [ BUTTON_LABEL.IDEAL ]: FUNDING.IDEAL,\n [ BUTTON_LABEL.BANCONTACT]: FUNDING.BANCONTACT,\n [ BUTTON_LABEL.GIROPAY]: FUNDING.GIROPAY,\n [ BUTTON_LABEL.EPS ]: FUNDING.EPS,\n [ BUTTON_LABEL.SOFORT ]: FUNDING.SOFORT,\n [ BUTTON_LABEL.P24 ]: FUNDING.P24,\n [ BUTTON_LABEL.MYBANK ]: FUNDING.MYBANK,\n [ BUTTON_LABEL.PAYU ]: FUNDING.PAYU,\n [ BUTTON_LABEL.VERKKOPANKKI ]: FUNDING.VERKKOPANKKI,\n [ BUTTON_LABEL.BLIK ]: FUNDING.BLIK,\n [ BUTTON_LABEL.TRUSTLY ]: FUNDING.TRUSTLY,\n [ BUTTON_LABEL.MAXIMA ]: FUNDING.MAXIMA,\n [ BUTTON_LABEL.BOLETO ]: FUNDING.BOLETO,\n [ BUTTON_LABEL.OXXO ]: FUNDING.OXXO\n};\n\nexport const BUTTON_RELATIVE_STYLE = {\n FUNDINGICONS: 100,\n TAGLINE: 50,\n VERTICAL_MARGIN: 30\n};\n\nexport const BUTTON_STYLE = {\n\n [ BUTTON_SIZE.TINY ]: {\n defaultWidth: 75,\n defaultHeight: 25,\n minWidth: 75,\n maxWidth: 150,\n minHeight: 25,\n maxHeight: 30,\n buttonTextMargin: 0.5,\n allowFunding: true,\n allowTagline: false,\n byPayPalHeight: 0\n },\n\n [ BUTTON_SIZE.SMALL ]: {\n defaultWidth: 150,\n defaultHeight: 25,\n minWidth: 150,\n maxWidth: 200,\n minHeight: 25,\n maxHeight: 55,\n buttonTextMargin: 0.5,\n allowFunding: true,\n allowTagline: true,\n byPayPalHeight: 0\n },\n\n [ BUTTON_SIZE.MEDIUM ]: {\n defaultWidth: 250,\n defaultHeight: 35,\n minWidth: 200,\n maxWidth: 300,\n minHeight: 35,\n maxHeight: 55,\n buttonTextMargin: 1,\n allowFunding: true,\n allowTagline: true,\n byPayPalHeight: 30\n },\n\n [ BUTTON_SIZE.LARGE ]: {\n defaultWidth: 350,\n defaultHeight: 45,\n minWidth: 300,\n maxWidth: 500,\n minHeight: 30,\n maxHeight: 55,\n buttonTextMargin: 1,\n allowFunding: true,\n allowTagline: true,\n byPayPalHeight: 30\n },\n\n [ BUTTON_SIZE.HUGE ]: {\n defaultWidth: 500,\n defaultHeight: 55,\n minWidth: 500,\n maxWidth: 750,\n minHeight: 40,\n maxHeight: 55,\n buttonTextMargin: 1.25,\n allowFunding: true,\n allowTagline: true,\n byPayPalHeight: 30\n }\n};\n\nexport function labelToFunding(label : ?string) : string {\n return label ? LABEL_TO_FUNDING[label] : FUNDING.PAYPAL;\n}\n\nexport function fundingToDefaultLabel(funding : string) : $Values {\n return FUNDING_TO_DEFAULT_LABEL[funding];\n}\n\nfunction getConfig(conf : Object, category : string, key : string, def : ?T) : T {\n const categoryConfig = conf[category];\n\n if (categoryConfig && categoryConfig.hasOwnProperty(key)) {\n return categoryConfig[key];\n }\n\n if (conf[DEFAULT] && conf[DEFAULT].hasOwnProperty(key)) {\n return conf[DEFAULT][key];\n }\n\n if (arguments.length >= 4) {\n // $FlowFixMe\n return def;\n }\n\n throw new Error(`No value found for ${ category }:${ key }`);\n}\n\nexport function getButtonConfig(label : string, key : string, def : ?T) : T {\n return getConfig(BUTTON_CONFIG, label, key, def);\n}\n","/* @flow */\n\nimport { BUTTON_LAYOUT, BUTTON_STYLE_OPTIONS, BUTTON_LABEL, BUTTON_COLOR, BUTTON_SIZE, BUTTON_SHAPE } from '../constants';\nimport { determineEligibleFunding, determineEligibleCards } from '../funding';\nimport { memoize, sortBy } from '../lib/util';\nimport type { LocaleType, FundingSelection, FundingList, CheckoutCustomizationType } from '../types';\nimport { FUNDING_ORDER } from '../funding/config';\n\nimport { getButtonConfig, labelToFunding } from './config';\n\nfunction parseLocale(locale : string) : LocaleType {\n const [ lang, country ] = locale.split('_');\n return { country, lang };\n}\n\nexport function determineMaxButtons({ label, layout, max } : { layout : string, label : string, max : number }) : number {\n\n const allowed = (layout === BUTTON_LAYOUT.HORIZONTAL)\n ? getButtonConfig(label, 'allowPrimaryHorizontal')\n : getButtonConfig(label, 'allowPrimaryVertical');\n\n if (!allowed) {\n return 1;\n }\n\n const configMax = (layout === BUTTON_LAYOUT.HORIZONTAL)\n ? getButtonConfig(label, 'maxHorizontalButtons')\n : getButtonConfig(label, 'maxVerticalButtons');\n\n return max\n ? Math.min(configMax, max)\n : configMax;\n}\n\nfunction enableTagline({ tagline, branding, fundingicons, layout }) : boolean {\n return Boolean(tagline && branding && !fundingicons && layout === BUTTON_LAYOUT.HORIZONTAL);\n}\n\ntype NormalizedProps = {|\n size : $Values,\n label : $Values,\n color : $Values,\n shape : $Values,\n locale : LocaleType,\n branding : boolean,\n fundingicons : boolean,\n tagline : boolean,\n funding : FundingSelection,\n layout : $Values,\n sources : FundingList,\n max : number,\n multiple : boolean,\n env : string,\n height : ?number,\n cards : $ReadOnlyArray,\n installmentperiod : number,\n checkoutCustomization : ?CheckoutCustomizationType\n|};\n\nexport const normalizeProps = memoize((props : Object, defs? : { locale? : LocaleType } = {}) : NormalizedProps => {\n\n let {\n env,\n locale,\n style = {},\n funding,\n commit,\n checkoutCustomization\n } = props;\n\n locale = locale ? parseLocale(locale) : (defs.locale || getButtonConfig('DEFAULT', 'defaultLocale'));\n \n // funding indicated the allowed/disallowed payment methods (including cards) passed in the integration script\n // $FlowFixMe\n funding = funding || {};\n funding.allowed = funding.allowed || [];\n funding.disallowed = funding.disallowed || [];\n funding.remembered = funding.remembered || [];\n \n const label = style[BUTTON_STYLE_OPTIONS.LABEL] || getButtonConfig('DEFAULT', (style.layout === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalLabel' : 'defaultLabel');\n const layout = style[BUTTON_STYLE_OPTIONS.LAYOUT] || getButtonConfig(label, 'defaultLayout');\n\n let {\n [ BUTTON_STYLE_OPTIONS.SIZE ]: size = getButtonConfig(label, (layout === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalSize' : 'defaultSize'),\n [ BUTTON_STYLE_OPTIONS.COLOR ]: color = getButtonConfig(label, 'defaultColor'),\n [ BUTTON_STYLE_OPTIONS.SHAPE ]: shape = getButtonConfig(label, 'defaultShape'),\n [ BUTTON_STYLE_OPTIONS.BRANDING ]: branding = getButtonConfig(label, (layout === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalBranding' : 'defaultBranding'),\n [ BUTTON_STYLE_OPTIONS.FUNDINGICONS ]: fundingicons = getButtonConfig(label, 'defaultFundingIcons'),\n [ BUTTON_STYLE_OPTIONS.TAGLINE ]: tagline = getButtonConfig(label, 'defaultTagline'),\n [ BUTTON_STYLE_OPTIONS.MAXBUTTONS ]: max,\n [ BUTTON_STYLE_OPTIONS.HEIGHT ]: height,\n [ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD ]: installmentperiod\n } = style;\n\n // max is the maximum number of buttons to be displayed in the iframe\n max = determineMaxButtons({ label, layout, max });\n\n const selected = labelToFunding(label);\n let sources = determineEligibleFunding({ funding, selected, locale, env, layout, commit });\n // sources is an array of funding sources eligible to be displayed\n sources = sortBy(sources.slice(0, max), FUNDING_ORDER);\n // multiple is a boolean value indicating whether the sources is greater than 1\n const multiple = sources.length > 1;\n\n if (multiple) {\n branding = true;\n }\n\n tagline = enableTagline({ tagline, branding, fundingicons, layout });\n\n const cards = determineEligibleCards({ funding, locale });\n \n return { size, label, locale, color, shape, branding, fundingicons,\n tagline, funding, layout, sources, max, multiple, env, height, cards, installmentperiod, checkoutCustomization };\n});\n","/* @flow */\n\nimport { BUTTON_LABEL, BUTTON_LAYOUT, BUTTON_SIZE, BUTTON_STYLE_OPTIONS, ALLOWED_INSTALLMENT_COUNTRIES, ALLOWED_INSTALLMENT_PERIOD, LOCALE } from '../constants';\n\nimport { BUTTON_CONFIG, BUTTON_STYLE, getButtonConfig } from './config';\n\nexport function validateButtonLocale(locale : string) {\n\n if (!locale) {\n throw new Error(`Expected props.locale to be set`);\n }\n\n if (!locale.match(/^[a-z]{2}[_][A-Z][A-Z0-9]$/)) {\n throw new Error(`Expected props.locale to be valid, got ${ locale }`);\n }\n\n const [ lang, country ] = locale.split('_');\n\n if (!LOCALE[country] || LOCALE[country].indexOf(lang) === -1) {\n throw new Error(`Expected props.locale to be valid`);\n }\n}\n\nexport function validateRegionSpecificButton(style : Object = {}, locale : string = 'en_US') {\n\n const country = locale.split('_')[1];\n\n const isInstallmentAllowedCountry = ALLOWED_INSTALLMENT_COUNTRIES.indexOf(country) !== -1;\n\n if (!isInstallmentAllowedCountry && style.label === BUTTON_LABEL.INSTALLMENT) {\n throw new Error(`Unexpected label: style.${ style.label } for country: ${ country }`);\n }\n\n if (!isInstallmentAllowedCountry && style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD]) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD } is invalid for country: ${ country }`);\n }\n\n if (isInstallmentAllowedCountry && style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD] && style.label !== BUTTON_LABEL.INSTALLMENT) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD } is invalid for label: style.${ style.label }`);\n }\n\n if (isInstallmentAllowedCountry && style.label === BUTTON_LABEL.INSTALLMENT && style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD]\n && typeof style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD] !== 'number') {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD } is expected to be a number`);\n }\n\n if (isInstallmentAllowedCountry && style.label === BUTTON_LABEL.INSTALLMENT && style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD]\n && ALLOWED_INSTALLMENT_PERIOD[country].indexOf(style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD]) === -1) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD }: ${ style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD] } is not a valid installment number for ${ style.label }`);\n }\n\n}\n\nexport function validateButtonStyle(style : Object = {}, props : Object) {\n\n if (!style) {\n throw new Error(`Expected props.style to be set`);\n }\n\n const label = style[BUTTON_STYLE_OPTIONS.LABEL] || getButtonConfig('DEFAULT', (style[BUTTON_STYLE_OPTIONS.LAYOUT] === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalLabel' : 'defaultLabel');\n\n if (!BUTTON_CONFIG[label]) {\n throw new Error(`Invalid button label: ${ label }, expected: ${ Object.keys(BUTTON_CONFIG[label]).join(', ') }`);\n }\n\n const {\n [ BUTTON_STYLE_OPTIONS.COLOR ]: color,\n [ BUTTON_STYLE_OPTIONS.SHAPE ]: shape,\n [ BUTTON_STYLE_OPTIONS.SIZE ]: size,\n [ BUTTON_STYLE_OPTIONS.BRANDING ]: branding,\n [ BUTTON_STYLE_OPTIONS.FUNDINGICONS ]: fundingicons,\n [ BUTTON_STYLE_OPTIONS.TAGLINE ]: tagline,\n [ BUTTON_STYLE_OPTIONS.LAYOUT ]: layout,\n [ BUTTON_STYLE_OPTIONS.MAXBUTTONS ]: maxbuttons,\n [ BUTTON_STYLE_OPTIONS.HEIGHT ]: height\n } = style;\n\n if (color && getButtonConfig(label, 'colors').indexOf(color) === -1) {\n throw new Error(`Unexpected style.${ BUTTON_STYLE_OPTIONS.COLOR } for ${ label } button: ${ color }, expected ${ getButtonConfig(label, 'colors').join(', ') }`);\n }\n\n if (shape && getButtonConfig(label, 'shapes').indexOf(shape) === -1) {\n throw new Error(`Unexpected style.${ BUTTON_STYLE_OPTIONS.SHAPE } for ${ label } button: ${ shape }, expected ${ getButtonConfig(label, 'shapes').join(', ') }`);\n }\n\n if (size && getButtonConfig(label, 'sizes').indexOf(size) === -1) {\n throw new Error(`Unexpected style.${ BUTTON_STYLE_OPTIONS.SIZE } for ${ label } button: ${ size }, expected ${ getButtonConfig(label, 'sizes').join(', ') }`);\n }\n\n if (branding === false) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.BRANDING }:false is not allowed`);\n }\n\n if (fundingicons && !getButtonConfig(label, 'allowFundingIcons')) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.FUNDINGICONS }:true is not allowed for ${ label } button`);\n }\n\n if (layout && getButtonConfig(label, 'layouts').indexOf(layout) === -1) {\n throw new Error(`Unexpected style.${ BUTTON_STYLE_OPTIONS.LAYOUT } for ${ label } button: ${ layout }, expected ${ getButtonConfig(label, 'layouts').join(', ') }`);\n }\n\n if (maxbuttons !== undefined) {\n if (typeof maxbuttons !== 'number') {\n throw new TypeError(`Expected style.${ BUTTON_STYLE_OPTIONS.MAXBUTTONS } to be a number, got: ${ maxbuttons }`);\n }\n\n if (maxbuttons < 1) {\n throw new Error(`Expected style.${ BUTTON_STYLE_OPTIONS.MAXBUTTONS } to be a at least 1, got: ${ maxbuttons }`);\n }\n\n const minButtons = (layout === BUTTON_LAYOUT.VERTICAL)\n ? getButtonConfig(label, 'minVerticalButtons')\n : getButtonConfig(label, 'minHorizontalButtons');\n\n if (maxbuttons < minButtons) {\n throw new Error(`Expected style.${ BUTTON_STYLE_OPTIONS.MAXBUTTONS } to be no fewer than ${ minButtons }, got ${ maxbuttons }`);\n }\n }\n\n if (height !== undefined) {\n if (typeof height !== 'number') {\n throw new TypeError(`Expected style.${ BUTTON_STYLE_OPTIONS.HEIGHT } to be a number, got: ${ maxbuttons }`);\n }\n\n const buttonSize = size || getButtonConfig(label, (style.layout === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalSize' : 'defaultSize');\n\n const { minHeight, maxHeight } = (size === BUTTON_SIZE.RESPONSIVE) ? {\n minHeight: BUTTON_STYLE[BUTTON_SIZE.SMALL].minHeight,\n maxHeight: BUTTON_STYLE[BUTTON_SIZE.HUGE].maxHeight\n } : BUTTON_STYLE[buttonSize];\n\n if (height < minHeight || height > maxHeight) {\n throw new Error(`Expected style.${ BUTTON_STYLE_OPTIONS.HEIGHT } to be between ${ minHeight }px and ${ maxHeight }px - got ${ height }px`);\n }\n }\n\n if (!getButtonConfig(label, 'allowPrimary')) {\n throw new Error(`${ label } can not be used as primary button label`);\n }\n\n if (layout === BUTTON_LAYOUT.VERTICAL) {\n\n if (size && [ BUTTON_SIZE.MEDIUM, BUTTON_SIZE.LARGE, BUTTON_SIZE.RESPONSIVE ].indexOf(size) === -1) {\n throw new Error(`Button must be at least ${ BUTTON_SIZE.MEDIUM } size for ${ BUTTON_LAYOUT.VERTICAL } layout`);\n }\n\n if (!getButtonConfig(label, 'allowPrimaryVertical')) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.LABEL } option is not allowed for ${ BUTTON_LAYOUT.VERTICAL } layout - got ${ label }`);\n }\n\n if (fundingicons) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.FUNDINGICONS } not allowed for ${ BUTTON_LAYOUT.VERTICAL } layout - got ${ fundingicons }`);\n }\n\n if (tagline) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.TAGLINE } is not allowed for ${ BUTTON_LAYOUT.VERTICAL } layout - got ${ tagline }`);\n }\n }\n\n validateRegionSpecificButton(style, props.locale);\n}\n\nexport function validateButtonProps(props : Object) {\n\n if (!props) {\n throw new Error(`Expected props`);\n }\n\n const { locale, style } = props;\n\n validateButtonLocale(locale);\n validateButtonStyle(style, props);\n}\n","/* @flow */\n\nexport const CLASS = {\n SHOULD_FOCUS: 'paypal-should-focus',\n\n CONTAINER: 'paypal-button-container',\n BUTTON: 'paypal-button',\n \n BUTTON_LABEL: 'paypal-button-label-container',\n\n LABEL: 'paypal-button-label',\n COLOR: 'paypal-button-color',\n LOGO_COLOR: 'paypal-button-logo-color',\n SHAPE: 'paypal-button-shape',\n BRANDING: 'paypal-button-branding',\n LAYOUT: 'paypal-button-layout',\n NUMBER: 'paypal-button-number',\n ENV: 'paypal-button-env',\n\n TAGLINE: 'paypal-button-tagline',\n TAGLINE_COLOR: 'paypal-button-tagline-color',\n FUNDINGICONS: 'paypal-button-fundingicons',\n\n TEXT: 'paypal-button-text',\n LOGO: 'paypal-button-logo',\n CARD: 'paypal-button-card',\n\n SEPARATOR: 'paypal-separator',\n HIDDEN: 'hidden',\n DOM_READY: 'dom-ready',\n \n PERSONALIZATION_TEXT: 'personalization-text'\n};\n","/* @flow */\n\nimport { CLASS } from './class';\n\nexport const pageStyle = `\n html, body {\n padding: 0;\n margin: 0;\n width: 100%;\n overflow: hidden;\n text-align: center;\n }\n\n body {\n display: inline-block;\n vertical-align: top;\n }\n\n * {\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -khtml-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n cursor: default;\n box-sizing: border-box;\n }\n \n .${ CLASS.HIDDEN } {\n position: absolute;\n visibility: hidden;\n }\n`;\n","/* @flow */\n\nimport { BUTTON_COLOR, ENV } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const buttonStyle = `\n\n .${ CLASS.CONTAINER } {\n display: block;\n white-space: nowrap;\n margin: 0;\n background: 0;\n border: 0;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n text-transform: none;\n font-weight: 500;R\n -webkit-font-smoothing: antialiased;\n font-smoothing: antialiased;\n z-index: 0;\n font-size: 0;\n width: 100%;\n box-sizing: border-box;\n }\n\n .${ CLASS.BUTTON }:not(.${ CLASS.CARD }) {\n border: 1px solid transparent;\n border-radius: 0 3px 3px 0;\n position: relative;\n width: 100%;\n box-sizing: border-box;\n border: none;\n vertical-align: top;\n cursor: pointer;\n outline: none;\n overflow: hidden;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.TRANSPARENT } {\n cursor: auto;\n }\n\n .${ CLASS.BUTTON } * {\n cursor: pointer;\n }\n\n .${ CLASS.CONTAINER }.${ CLASS.ENV }-${ ENV.TEST } .${ CLASS.TEXT } {\n font-family: Arial !important;\n background: rgba(0, 0, 0, 0.5) !important;\n color: transparent !important;\n text-shadow: none !important;\n }\n\n .${ CLASS.BUTTON }:hover {\n box-shadow: inset 0 0 100px 100px rgba(255, 255, 255, 0.2);\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.GOLD }:hover,\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.SILVER }:hover {\n box-shadow: inset 0 0 100px 100px rgba(0, 0, 0, 0.05);\n }\n\n .${ CLASS.CARD }, .${ CLASS.CARD } * {\n cursor: pointer;\n }\n\n .${ CLASS.CARD }:hover {\n filter: brightness(1.2);\n }\n\n .${ CLASS.BUTTON }:focus, .${ CLASS.CARD }:focus {\n outline: none;\n }\n\n .${ CLASS.SHOULD_FOCUS } .${ CLASS.BUTTON }:focus,\n .${ CLASS.SHOULD_FOCUS } .${ CLASS.CARD }:focus {\n outline: solid 2px Highlight;\n outline: auto 5px -webkit-focus-ring-color;\n outline-offset: -3px;\n }\n\n .${ CLASS.BUTTON }:focus {\n box-shadow: -1px -1px 18px 1px rgba(0, 0, 0, 0.25) inset;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.TRANSPARENT }:focus {\n box-shadow: none;\n outline: none;\n }\n\n .${ CLASS.LOGO } {\n padding: 0;\n display: inline-block;\n background: none;\n border: none;\n width: auto;\n }\n\n .${ CLASS.TEXT } {\n display: inline-block;\n white-space: pre;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.BUTTON_LABEL } {\n position: relative;\n top: 50%;\n transform: translateY(-50%);\n -webkit-transform: translateY(-50%);\n -moz-transform: translateY(-50%);\n -ms-transform: translateY(-50%);\n -o-transform: translateY(-50%);\n }\n \n .${ CLASS.BUTTON } > .${ CLASS.BUTTON_LABEL } > * {\n vertical-align: top;\n height: 100%;\n text-align: left;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.CARD } {\n border-radius: 4px;\n }\n\n .powered-by-paypal > .${ CLASS.TEXT } {\n vertical-align: top;\n line-height: 18px;\n }\n\n .powered-by-paypal > .${ CLASS.LOGO } {\n height: 16px;\n min-height: 16px;\n }\n\n .${ CLASS.TAGLINE } {\n max-width: 100%;\n font-weight: normal;\n display: block;\n text-align: center;\n width: auto;\n }\n\n .${ CLASS.SEPARATOR } {\n height: 80%;\n border-left: 1px solid rgba(0, 0, 0, 0.15);\n margin: 0 8px;\n display: inline-block;\n position: relative;\n top: 10%;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.BLACK } .${ CLASS.SEPARATOR } {\n border-color: rgba(255, 255, 255, 0.45);\n }\n`;\n","/* @flow */\n\nimport { BUTTON_LAYOUT } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const layoutStyle = `\n\n .${ CLASS.CONTAINER }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.VERTICAL } .${ CLASS.TAGLINE } {\n display: none;\n }\n`;\n","/* @flow */\n\nimport { BUTTON_BRANDING } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const brandingStyle = `\n\n .${ CLASS.BUTTON }.${ CLASS.BRANDING }-${ BUTTON_BRANDING.UNBRANDED } {\n min-width: 60%;\n width: auto;\n font-weight: 900;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.BRANDING }-${ BUTTON_BRANDING.UNBRANDED } .${ CLASS.LOGO } {\n display: none;\n }\n`;\n","/* @flow */\n\nimport { BUTTON_STYLE } from '../../config';\nimport { BUTTON_LABEL, BUTTON_LOGO, BUTTON_SIZE, BUTTON_LAYOUT, BUTTON_NUMBER } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const labelStyle = `\n\n .${ CLASS.BUTTON }.${ CLASS.LABEL }-${ BUTTON_LABEL.CARD } {\n border-radius: 0 !important;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LABEL }-${ BUTTON_LABEL.CREDIT } .${ CLASS.TEXT } {\n display: none !important;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.LABEL }-${ BUTTON_LABEL.CREDIT } .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LOGO.PAYPAL } {\n display: none;\n }\n\n @media only screen and (max-width : ${ BUTTON_STYLE[BUTTON_SIZE.SMALL].minWidth }px) {\n\n .${ CLASS.BUTTON }.${ CLASS.LABEL }-${ BUTTON_LABEL.CREDIT } .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LOGO.PAYPAL } {\n display: none;\n }\n }\n\n @media only screen and (min-width : ${ BUTTON_STYLE[BUTTON_SIZE.SMALL].minWidth }px) {\n\n .${ CLASS.BUTTON }.${ CLASS.LABEL }-${ BUTTON_LABEL.CREDIT } .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LOGO.PAYPAL } {\n display: inline-block;\n }\n }\n`;\n","/* @flow */\n\nimport { BUTTON_BRANDING, BUTTON_SHAPE, BUTTON_LAYOUT, BUTTON_NUMBER, BUTTON_LABEL } from '../../../constants';\nimport { BUTTON_STYLE, BUTTON_RELATIVE_STYLE } from '../../config';\nimport { max, perc } from '../../../lib/util';\n\nimport { CLASS } from './class';\n\nconst DUAL_BUTTON_MIN_RATIO = 2.8;\n\nexport function buttonResponsiveStyle({ height, cardNumber = 4 } : { height? : ?number, cardNumber? : number }) : string {\n\n return Object.keys(BUTTON_STYLE).map(size => {\n\n const style = BUTTON_STYLE[size];\n const buttonHeight = height || style.defaultHeight;\n const buttonTextMarginTop = style.buttonTextMargin;\n const minDualWidth = Math.round(buttonHeight * DUAL_BUTTON_MIN_RATIO * 2);\n\n return `\n\n @media only screen and (min-width: ${ style.minWidth }px) {\n\n .${ CLASS.CONTAINER } {\n min-width: ${ style.minWidth }px;\n max-width: ${ style.maxWidth }px;\n font-size: ${ max(perc(buttonHeight, 32), 10) }px;\n }\n\n .${ CLASS.BUTTON }:not(.${ CLASS.CARD }) {\n height: ${ buttonHeight }px;\n min-height: ${ height || style.minHeight }px;\n max-height: ${ height || style.maxHeight }px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.BRANDING }-${ BUTTON_BRANDING.UNBRANDED } .${ CLASS.BUTTON_LABEL } {\n height: 100%;\n font-size: ${ max(perc(buttonHeight, 45), 10) }px;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.BUTTON_LABEL } {\n height: ${ perc(buttonHeight, 35) + 5 }px;\n max-height: ${ perc(buttonHeight, 60) }px;\n min-height: ${ perc(buttonHeight, 40) }px;\n }\n \n .${ CLASS.BUTTON } .${ CLASS.BUTTON_LABEL } .${ CLASS.TEXT } {\n margin-top: ${ buttonTextMarginTop }px;\n }\n \n .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LABEL.EPS },\n .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LABEL.MYBANK } {\n height: ${ perc(buttonHeight, 50) + 5 }px;\n max-height: ${ perc(buttonHeight, 70) }px;\n min-height: ${ perc(buttonHeight, 40) }px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.SHAPE }-${ BUTTON_SHAPE.PILL } {\n border-radius: ${ Math.ceil(buttonHeight / 2) }px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.SHAPE }-${ BUTTON_SHAPE.RECT } {\n border-radius: 4px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.VERTICAL } {\n margin-bottom: ${ perc(buttonHeight, BUTTON_RELATIVE_STYLE.VERTICAL_MARGIN) }px;\n }\n\n .${ CLASS.SEPARATOR } {\n margin: 0 ${ perc(buttonHeight, 5) }px;\n }\n\n .${ CLASS.TAGLINE } {\n display: ${ style.allowTagline ? 'block' : 'none' };\n height: ${ perc(buttonHeight, BUTTON_RELATIVE_STYLE.TAGLINE) }px;\n line-height: ${ perc(buttonHeight, BUTTON_RELATIVE_STYLE.TAGLINE) }px;\n }\n\n .${ CLASS.FUNDINGICONS } {\n display: ${ style.allowFunding ? 'block' : 'none' };\n height: ${ perc(buttonHeight, BUTTON_RELATIVE_STYLE.FUNDINGICONS) }px;\n }\n\n .${ CLASS.CARD } {\n display: inline-block;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.CARD } {\n width: ${ (90 / cardNumber).toFixed(2) }%;\n max-width: ${ perc(buttonHeight, 160) }px;\n margin-top: 0;\n margin-left: ${ (5 / cardNumber).toFixed(2) }%;\n margin-right: ${ (5 / cardNumber).toFixed(2) }%;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.CARD } img {\n width: 100%;\n }\n\n .${ CLASS.FUNDINGICONS } .${ CLASS.CARD } {\n height: ${ perc(buttonHeight, 70) }px;\n margin-top: ${ perc(buttonHeight, 15) }px;\n margin-left: ${ perc(buttonHeight, 7) }px;\n margin-right: ${ perc(buttonHeight, 7) }px;\n }\n\n .${ CLASS.FUNDINGICONS } .${ CLASS.CARD } img {\n height: 100%;\n }\n }\n\n @media only screen and (min-width: ${ style.minWidth }px) and (max-width: ${ minDualWidth }px) {\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.NUMBER }-0 {\n width: 100%;\n margin-right: 0;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.NUMBER }-1 {\n display: none;\n }\n\n .${ CLASS.CONTAINER }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE } .${ CLASS.TAGLINE } {\n display: none;\n }\n }\n\n @media only screen and (min-width: ${ max(style.minWidth, minDualWidth) }px) {\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.NUMBER }-0 {\n display: inline-block;\n width: calc(50% - 2px);\n margin-right: 4px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.NUMBER }-1 {\n display: inline-block;\n width: calc(50% - 2px);\n }\n\n .${ CLASS.CONTAINER }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE } .${ CLASS.TAGLINE } {\n display: block;\n }\n }\n `;\n\n }).join('\\n');\n}\n","/* @flow */\n\nimport { BUTTON_COLOR } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const buttonColorStyle = `\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.GOLD } {\n background: #ffc439;\n color: #111;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.BLUE } {\n background: #009cde;\n color: #fff;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.SILVER } {\n background: #eee;\n color: #111;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.BLACK } {\n background: #2C2E2F;\n color: #fff;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.DARKBLUE } {\n background: #003087;\n color: #fff;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.TRANSPARENT } {\n background: transparent;\n color: #111;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.WHITE } {\n background: #fff;\n color: #2C2E2F;\n border: 1px solid #2C2E2F;\n }\n`;\n","/* @flow */\n\nimport { pageStyle } from './page';\nimport { buttonStyle } from './button';\nimport { layoutStyle } from './layout';\nimport { brandingStyle } from './branding';\nimport { labelStyle } from './labels';\nimport { buttonResponsiveStyle } from './responsive';\nimport { buttonColorStyle } from './color';\n\nexport function componentStyle({ height, cardNumber } : { height? : ?number, cardNumber? : number }) : string {\n return `\n ${ pageStyle }\n ${ buttonStyle }\n ${ buttonColorStyle }\n ${ layoutStyle }\n ${ brandingStyle }\n ${ labelStyle }\n ${ buttonResponsiveStyle({ height, cardNumber }) }\n `;\n}\n","/* @flow */\n\nexport { componentStyle } from './base';\nexport { CLASS } from './class';\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, type JsxHTMLNode, JsxHTMLNodeContainer } from '../../lib/jsx';\n\nimport { CLASS } from './componentStyle';\n\nexport function LoadingDots(delay : number) : JsxHTMLNode {\n return (\n
\n \n {outlet}\n
\n );\n}\n","/* @flow */\n\nexport * from './componentTemplate';\nexport * from './containerTemplate';\n\n","\n/* @flow */\n\nimport { track, flush as flushLogs } from 'beaver-logger/client';\n\nimport { Checkout } from '../checkout';\nimport { setupPopupBridgeProxy } from '../integrations/popupBridge';\nimport { getPageRenderTime, setLogLevel } from '../lib';\nimport { ATTRIBUTE, FUNDING, FPTI, BUTTON_LAYOUT, BUTTON_COLOR, BUTTON_SIZE, BUTTON_SHAPE, BUTTON_LABEL } from '../constants';\n\nimport typeof { Button } from './component';\n\nexport function setupButtonChild(ButtonComponent : Button) {\n setupPopupBridgeProxy(Checkout, ButtonComponent);\n\n getPageRenderTime().then(pageRenderTime => {\n\n const fundingSources = Array.prototype.slice.call(document.querySelectorAll(`[${ ATTRIBUTE.FUNDING_SOURCE }]`)).map(el => {\n return el.getAttribute(ATTRIBUTE.CARD) || el.getAttribute(ATTRIBUTE.FUNDING_SOURCE);\n }).filter(source => {\n return source && source !== FUNDING.CARD;\n });\n\n const xprops = ButtonComponent.xprops;\n \n if (!xprops) {\n return;\n }\n\n const {\n layout = BUTTON_LAYOUT.HORIZONTAL,\n color = BUTTON_COLOR.GOLD,\n size = BUTTON_SIZE.SMALL,\n shape = BUTTON_SHAPE.PILL,\n label = BUTTON_LABEL.CHECKOUT,\n maxbuttons,\n tagline\n } = (xprops.style || {});\n\n track({\n [FPTI.KEY.STATE]: FPTI.STATE.BUTTON,\n [FPTI.KEY.TRANSITION]: FPTI.TRANSITION.BUTTON_LOAD,\n [FPTI.KEY.BUTTON_TYPE]: FPTI.BUTTON_TYPE.IFRAME,\n [FPTI.KEY.FUNDING_LIST]: fundingSources.join(':'),\n [FPTI.KEY.FUNDING_COUNT]: fundingSources.length,\n [FPTI.KEY.PAGE_LOAD_TIME]: pageRenderTime,\n [FPTI.KEY.BUTTON_LAYOUT]: layout,\n [FPTI.KEY.BUTTON_COLOR]: color,\n [FPTI.KEY.BUTTON_SIZE]: size,\n [FPTI.KEY.BUTTON_SHAPE]: shape,\n [FPTI.KEY.BUTTON_LABEL]: label,\n [FPTI.KEY.BUTTON_WIDTH]: window.innerWidth,\n [FPTI.KEY.MAX_BUTTONS]: maxbuttons,\n [FPTI.KEY.BUTTON_TAGLINE_ENABLED]: tagline ? '1' : '0'\n });\n\n flushLogs();\n });\n\n const xprops = ButtonComponent.xprops || Checkout.xprops;\n\n if (xprops && xprops.logLevel) {\n setLogLevel(xprops.logLevel);\n }\n\n // $FlowFixMe\n if (xprops.payment && !xprops.createOrder) {\n // $FlowFixMe\n xprops.createOrder = xprops.payment;\n }\n\n // $FlowFixMe\n if (xprops.onAuthorize && !xprops.onApprove) {\n // $FlowFixMe\n xprops.onApprove = xprops.onAuthorize;\n }\n\n try {\n if (xprops && xprops.onShippingChange && window.pre &&\n window.pre.inlineGuest && window.pre.inlineGuest.res &&\n window.pre.inlineGuest.res.data && window.pre.inlineGuest.res.data.treatments) {\n window.pre.inlineGuest.res.data.treatments = [];\n }\n } catch (err) {\n // pass\n }\n}\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { create } from 'zoid/src';\nimport { type Component } from 'zoid/src/component/component';\nimport { info, warn, track, error, flush as flushLogs, immediateFlush } from 'beaver-logger/client';\nimport { getDomain } from 'cross-domain-utils/src';\nimport { base64encode } from 'belter/src';\nimport { debounce, once } from 'zoid/src/lib';\n\nimport { pptm } from '../external';\nimport { config } from '../config';\nimport { SOURCE, ENV, FPTI, FUNDING, BUTTON_LABEL, BUTTON_COLOR,\n BUTTON_SIZE, BUTTON_SHAPE, BUTTON_LAYOUT, COUNTRY } from '../constants';\nimport { redirect as redir, checkRecognizedBrowser,\n getBrowserLocale, getSessionID, request, getScriptVersion,\n isIEIntranet, isEligible, getCurrentScriptUrl,\n getDomainSetting, extendUrl, isDevice, rememberFunding,\n getRememberedFunding, memoize, uniqueID, getThrottle, getBrowser } from '../lib';\nimport { rest } from '../api';\nimport { onAuthorizeListener } from '../experiments';\nimport { getPaymentType, awaitBraintreeClient,\n mapPaymentToBraintree, type BraintreePayPalClient } from '../integrations';\nimport { awaitPopupBridge } from '../integrations/popupBridge';\nimport { validateFunding, isFundingIneligible, isFundingAutoEligible } from '../funding';\n\nimport { containerTemplate, componentTemplate } from './template';\nimport { validateButtonLocale, validateButtonStyle } from './validate';\nimport { setupButtonChild } from './child';\nimport { normalizeProps } from './props';\n\npptm.listenForLoadWithNoContent();\n\nfunction isCreditDualEligible(props) : boolean {\n\n const { label, funding, layout, locale, max, sources, env } = normalizeProps(props, { locale: getBrowserLocale() });\n const { allowed } = funding;\n const { country } = locale;\n\n if (allowed && allowed.indexOf(FUNDING.CREDIT) !== -1) {\n return false;\n }\n\n if (layout !== BUTTON_LAYOUT.HORIZONTAL) {\n return false;\n }\n\n if (max === 1) {\n return false;\n }\n\n if (label === BUTTON_LABEL.CREDIT) {\n return false;\n }\n\n if (country !== COUNTRY.US) {\n return false;\n }\n\n if (isFundingIneligible(FUNDING.CREDIT, { funding, locale, layout, env })) {\n return false;\n }\n\n if (isFundingAutoEligible(FUNDING.CREDIT, { funding, locale, layout })) {\n return false;\n }\n\n if (sources.indexOf(FUNDING.CREDIT) !== -1) {\n return false;\n }\n\n const domain = getDomain().replace(/^https?:\\/\\//, '').replace(/^www\\./, '');\n\n if (config.creditTestDomains.indexOf(domain) === -1) {\n return false;\n }\n\n return true;\n}\n\nlet creditThrottle;\n\ntype ButtonOptions = {|\n style : {|\n maxbuttons? : number,\n layout? : string,\n label? : string,\n size? : string,\n shape? : string,\n color? : string,\n tagline? : boolean\n |},\n client : {\n [string] : (string | ZalgoPromise)\n },\n funding? : { allowed? : $ReadOnlyArray, disallowed? : $ReadOnlyArray },\n env? : string,\n locale? : string,\n logLevel : string,\n awaitPopupBridge : Function,\n meta : Object,\n validate? : ({ enable : () => ZalgoPromise, disable : () => ZalgoPromise }) => void,\n stage? : string,\n stageUrl? : string,\n localhostUrl? : string,\n checkoutUri? : string,\n authCode? : string,\n enableNativeCheckout? : boolean\n|};\n\nexport const Button : Component = create({\n\n tag: 'paypal-button',\n name: 'ppbutton',\n\n buildUrl(props) : string {\n const env = props.env || config.env;\n const url = config.buttonUrls[env];\n return url;\n },\n\n contexts: {\n iframe: true,\n popup: false\n },\n\n scrolling: false,\n listenForResize: true,\n\n containerTemplate,\n\n autoResize: {\n height: true,\n width: false\n },\n\n prerenderTemplate({ props, jsxDom } : { props : Object, jsxDom : Function }) : HTMLElement {\n\n const template = (\n
\n );\n\n template.addEventListener('click', () => {\n warn('button_pre_template_click');\n\n if (isIEIntranet()) {\n warn(`button_pre_template_click_intranet_mode`);\n\n flushLogs();\n\n // eslint-disable-next-line no-alert\n alert(`IE Intranet mode is not supported by PayPal. Please disable intranet mode, or continue in an alternate browser.`);\n }\n\n if (getDomainSetting('allow_full_page_fallback')) {\n info('pre_template_force_full_page');\n\n this.props.payment().then(token => {\n window.top.location = extendUrl(config.checkoutUrl, { token });\n });\n }\n });\n\n return (\n \n \n { template }\n \n \n );\n },\n\n get version() : string {\n return getScriptVersion();\n },\n\n get domain() : Object {\n return config.paypalDomains;\n },\n\n attributes: {\n iframe: {\n allowpaymentrequest: 'allowpaymentrequest'\n }\n },\n\n validate() {\n if (!isEligible()) {\n warn('button_render_ineligible');\n }\n },\n\n props: {\n domain: {\n type: 'string',\n required: false,\n def() : string {\n return window.location.host;\n },\n queryParam: true\n },\n\n sessionID: {\n type: 'string',\n required: false,\n def() : string {\n return getSessionID();\n },\n queryParam: true\n },\n\n buttonSessionID: {\n type: 'string',\n required: false,\n def() : ?string {\n return uniqueID();\n },\n queryParam: true\n },\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n }\n },\n\n meta: {\n type: 'object',\n required: false,\n def() : Object {\n return {};\n }\n },\n\n enableNativeCheckout: {\n type: 'boolean',\n required: false,\n def() : boolean {\n return false;\n }\n },\n\n client: {\n type: 'object',\n required: false,\n def() : Object {\n return {};\n },\n\n validate(client, props) {\n const env = props.env || config.env;\n\n if (!client[env]) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (typeof client[env] === 'string') {\n if (client[env].match(/^(.)\\1+$/)) {\n throw new Error(`Invalid client ID: ${ client[env] }`);\n }\n } else if (!ZalgoPromise.isPromise(client[env])) {\n throw new Error(`Expected client token to be either a string or a promise`);\n }\n },\n\n decorate(client : Object) : Object {\n if (client && client.sandbox === 'demo_sandbox_client_id') {\n client.sandbox = 'AZDxjDScFpQtjWTOUtWKbyN_bDt4OgqaF4eYXlewfBP4-8aqX3PiV8e1GWU6liB2CUXlkA59kJXE7M6R';\n }\n\n return client;\n }\n },\n\n source: {\n type: 'string',\n required: false,\n def() : string {\n return SOURCE.MANUAL;\n }\n },\n\n prefetchLogin: {\n type: 'boolean',\n required: false\n },\n\n stage: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.STAGE || env === ENV.LOCAL) {\n return config.stage;\n }\n }\n },\n\n updateClientConfiguration: {\n type: 'boolean',\n required: false,\n def: () => {\n return true;\n }\n },\n\n stageUrl: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.STAGE || env === ENV.LOCAL) {\n return config.stageUrl;\n }\n }\n },\n\n localhostUrl: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.LOCAL) {\n return config.localhostUrl;\n }\n }\n },\n\n checkoutUri: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : ?string {\n return config.checkoutUri;\n }\n },\n\n braintree: {\n type: 'object',\n required: false,\n validate(braintree, props) {\n\n if (!braintree.paypalCheckout) {\n throw new Error(`Expected Braintree paypal-checkout component to be loaded`);\n }\n\n if (!props.client) {\n throw new Error(`Expected client prop to be passed with Braintree authorization keys`);\n }\n },\n // $FlowFixMe\n decorate(braintree, props) : ZalgoPromise {\n const env = props.env || config.env;\n // $FlowFixMe\n return ZalgoPromise.hash(props.client).then(client => {\n return awaitBraintreeClient(braintree, client[env]);\n });\n }\n },\n\n payment: {\n type: 'function',\n required: true,\n memoize: false,\n timeout: __TEST__ ? 500 : 10 * 1000,\n alias: 'billingAgreement',\n\n decorate(original) : Function {\n return function payment(data = {}) : ZalgoPromise {\n\n const actions = {\n request,\n payment: {\n create: (options) => {\n return this.props.braintree\n ? this.props.braintree.then(client => {\n return client.createPayment(mapPaymentToBraintree(options.payment || options));\n })\n : ZalgoPromise.hash(this.props.client).then(client => {\n return rest.payment.create(this.props.env, client, options);\n });\n }\n },\n order: {\n create: (options) => {\n return ZalgoPromise.hash(this.props.client).then(client => {\n return rest.order.create(this.props.env, client, options);\n });\n }\n },\n braintree: {\n create: (options) => {\n if (!this.props.braintree) {\n throw new Error(`Can not create using Braintree - no braintree client provided`);\n }\n\n return this.props.braintree.then(client => {\n return client.createPayment(options);\n });\n }\n }\n };\n\n if (getDomainSetting('memoize_payment') && this.memoizedToken) {\n return this.memoizedToken;\n }\n\n this.memoizedToken = ZalgoPromise.try(original, this, [ data, actions ]);\n\n const startTime = Date.now();\n\n this.memoizedToken = this.memoizedToken.then(token => {\n\n if (!token) {\n error(`no_token_passed_to_payment`);\n throw new Error(`No value passed to payment`);\n }\n\n const elapsed = Date.now() - startTime;\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.RECIEVE_PAYMENT,\n [ FPTI.KEY.CONTEXT_TYPE ]: FPTI.CONTEXT_TYPE[getPaymentType(token)],\n [ FPTI.KEY.CONTEXT_ID ]: token,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.RESPONSE_DURATION ]: elapsed,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n flushLogs();\n\n return token;\n });\n\n return this.memoizedToken;\n };\n }\n },\n\n authCode: {\n type: 'string',\n required: false,\n def() : string {\n return config.authCode;\n }\n },\n\n funding: {\n type: 'object',\n required: false,\n queryParam: true,\n validate({ allowed = [], disallowed = [] } : Object = {}) {\n validateFunding({ allowed, disallowed, remembered: [] });\n },\n def() : Object {\n return {};\n },\n decorate({ allowed = [], disallowed = [] } : Object = {}, props : ButtonOptions) : {} {\n\n allowed = Array.isArray(allowed) ? allowed : [];\n disallowed = Array.isArray(disallowed) ? disallowed : [];\n\n if (allowed && allowed.indexOf(FUNDING.VENMO) !== -1) {\n allowed = allowed.filter(source => (source !== FUNDING.VENMO));\n }\n if (allowed && allowed.indexOf(FUNDING.ITAU) !== -1) {\n allowed = allowed.filter(source => (source !== FUNDING.ITAU));\n }\n\n if (isCreditDualEligible(props)) {\n creditThrottle = getThrottle('dual_credit_automatic', 50);\n\n if (creditThrottle.isEnabled()) {\n allowed = [ ...allowed, FUNDING.CREDIT ];\n }\n }\n\n let remembered = getRememberedFunding(sources => sources);\n\n if (!isDevice() || getDomainSetting('disable_venmo')) {\n if (remembered && remembered.indexOf(FUNDING.VENMO) !== -1) {\n remembered = remembered.filter(source => (source !== FUNDING.VENMO));\n }\n\n if (disallowed && disallowed.indexOf(FUNDING.VENMO) === -1) {\n disallowed = [ ...disallowed, FUNDING.VENMO ];\n }\n }\n\n return {\n allowed,\n disallowed,\n remembered,\n remember(sources) {\n rememberFunding(sources);\n }\n };\n }\n },\n\n commit: {\n type: 'boolean',\n required: false,\n queryParam: true,\n queryValue: (val) => {\n return val ? 'true' : 'false';\n }\n },\n\n onRender: {\n type: 'function',\n promisify: true,\n required: false,\n noop: true,\n decorate(original) : Function {\n return function decorateOnRender() : mixed {\n const { browser = 'unrecognized', version = 'unrecognized' } = getBrowser();\n info(`button_render_browser_${ browser }_${ isDevice() ? 'mobile' : 'desktop' }_${ version }`);\n\n const style = this.props.style || {};\n\n info(`button_render`);\n info(`button_render_color_${ style.color || 'default' }`);\n info(`button_render_shape_${ style.shape || 'default' }`);\n info(`button_render_size_${ style.size || 'default' }`);\n info(`button_render_label_${ style.label || 'default' }`);\n info(`button_render_branding_${ style.branding || 'default' }`);\n info(`button_render_fundingicons_${ style.fundingicons || 'default' }`);\n info(`button_render_tagline_${ style.tagline || 'default' }`);\n\n pptm.listenForButtonRender();\n pptm.reloadPptmScript(this.props.client[this.props.env]);\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_RENDER,\n [ FPTI.KEY.BUTTON_TYPE ]: FPTI.BUTTON_TYPE.IFRAME,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.BUTTON_SOURCE ]: this.props.source\n });\n\n if (isIEIntranet()) {\n warn(`button_render_intranet_mode`);\n }\n\n if (creditThrottle) {\n creditThrottle.logStart({\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID\n });\n }\n\n flushLogs();\n\n return original.apply(this, arguments);\n };\n }\n },\n\n onAuthorize: {\n type: 'function',\n alias: 'onApprove',\n required: true,\n\n decorate(original) : Function {\n return function decorateOnAuthorize(data, actions) : void | ZalgoPromise {\n\n if (data && !data.intent) {\n warn(`button_authorize_no_intent`, { paymentID: data.paymentID, token: data.paymentToken });\n }\n\n info('button_authorize');\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CHECKOUT_AUTHORIZE,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n if (isIEIntranet()) {\n warn(`button_authorize_intranet_mode`);\n }\n\n if (!isEligible()) {\n info('button_authorize_ineligible');\n }\n\n checkRecognizedBrowser('authorize');\n\n flushLogs();\n\n const restart = actions.restart;\n actions.restart = () => {\n return restart().then(() => {\n return new ZalgoPromise();\n });\n };\n\n actions.redirect = (win, url) => {\n return ZalgoPromise.try(() => {\n if (actions.close) {\n return actions.close();\n }\n }).then(() => {\n return redir(win || window.top, url || data.returnUrl);\n });\n };\n\n actions.payment.tokenize = memoize(() => {\n if (!this.props.braintree) {\n throw new Error(`Must pass in Braintree client to tokenize payment`);\n }\n\n return this.props.braintree\n .then(client => client.tokenizePayment(data));\n });\n\n const execute = actions.payment.execute;\n actions.payment.execute = () => {\n return execute().then(result => {\n\n if (!result || !result.id || !result.intent || !result.state) {\n warn(`execute_result_missing_data`);\n return new ZalgoPromise();\n }\n\n return result;\n });\n };\n\n const get = actions.payment.get;\n\n actions.payment.get = () => {\n return get().then(result => {\n if (!result || !result.id || !result.intent || !result.state) {\n warn(`get_result_missing_data`);\n return new ZalgoPromise();\n }\n\n return result;\n });\n };\n\n actions.request = request;\n\n onAuthorizeListener.trigger({\n paymentToken: data.paymentToken\n });\n\n if (creditThrottle) {\n creditThrottle.logComplete({\n [FPTI.KEY.BUTTON_SESSION_UID]: this.props.buttonSessionID\n });\n }\n\n return ZalgoPromise.try(() => {\n\n if (this.props.braintree) {\n return actions.payment.tokenize().then(({ nonce }) => {\n // $FlowFixMe\n Object.defineProperty(data, 'nonce', {\n get: () => {\n info('nonce_getter');\n flushLogs();\n return nonce;\n }\n });\n });\n }\n\n }).then(() => {\n return original.call(this, data, actions);\n }).catch(err => {\n if (this.props.onError) {\n return this.props.onError(err);\n }\n throw err;\n });\n };\n }\n },\n\n onShippingChange: {\n type: 'function',\n required: false,\n\n decorate(original) : void | Function {\n if (!original) {\n return;\n }\n\n return function decorateOnShippingChange(data, actions) : ZalgoPromise {\n\n info('button_shipping_change');\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CHECKOUT_SHIPPING_CHANGE,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n flushLogs();\n const timeout = __TEST__ ? 500 : 10 * 1000;\n\n const patch = actions.payment.patch;\n actions.payment.patch = (patchObject) => {\n return ZalgoPromise.try(() => {\n return patch(patchObject);\n });\n };\n\n const resolve = () => ZalgoPromise.resolve();\n const reject = actions.reject || function reject() {\n throw new Error(`Missing reject action callback`);\n };\n\n return ZalgoPromise.try(() => {\n return original.call(this, data, { ...actions, resolve, reject });\n }).timeout(timeout,\n new Error(`Timed out waiting ${ timeout }ms for payment`)).catch(err => {\n if (this.props.onError) {\n this.props.onError(err);\n }\n throw err;\n });\n };\n }\n },\n\n onError: {\n type: 'function',\n required: false,\n promisify: true,\n sendToChild: true,\n once: true,\n def() : (() => void) {\n return function onError(err : mixed) {\n if (isIEIntranet()) {\n warn(`button_error_intranet_mode`);\n flushLogs();\n\n // eslint-disable-next-line no-alert\n alert(`IE Intranet mode is not supported by PayPal. Please disable intranet mode, or continue in an alternate browser.`);\n }\n\n setTimeout(() => {\n throw err;\n });\n };\n }\n },\n\n onCancel: {\n type: 'function',\n required: false,\n noop: true,\n\n decorate(original) : Function {\n return function decorateOnCancel(data, actions) : void | ZalgoPromise {\n\n info('button_cancel');\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CHECKOUT_CANCEL,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n flushLogs();\n\n const redirect = (win, url) => {\n return ZalgoPromise.all([\n redir(win || window.top, url || data.cancelUrl),\n actions.close()\n ]);\n };\n\n return original.call(this, data, { ...actions, redirect });\n };\n }\n },\n\n onClick: {\n type: 'function',\n required: false,\n noop: true,\n decorate(original) : Function {\n return function decorateOnClick(data : ?{ fundingSource : string, card? : string, flow? : string, button_version? : string }) : void {\n\n info('button_click');\n if (data && data.flow) {\n info(`pay_flow_${ data.flow }`);\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.BUTTON,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_CLICK,\n [ FPTI.KEY.BUTTON_TYPE ]: FPTI.BUTTON_TYPE.IFRAME,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.CHOSEN_FUNDING ]: data && (data.card || data.fundingSource),\n [ FPTI.KEY.PAYMENT_FLOW ]: data && data.flow,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n if (isIEIntranet()) {\n warn('button_click_intranet_mode');\n }\n\n if (creditThrottle) {\n creditThrottle.log('click', {\n [ FPTI.KEY.STATE ]: FPTI.STATE.BUTTON,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_CLICK,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID\n });\n }\n\n const { color = 'default' } = this.props.style || {};\n info(`button_click_color_${ color }`);\n\n flushLogs();\n\n return original.apply(this, arguments);\n };\n }\n },\n\n onResize: {\n type: 'function',\n required: false,\n get value() : Function {\n let initialHeight;\n const logInlineGuestOutOfViewPortOnlyOnce = once((data) => {\n info('buttons_expansion_outside_viewport', data);\n immediateFlush();\n });\n\n return function onResizeHandler() {\n const container = this.container;\n\n if (!container) {\n return;\n }\n\n if (!initialHeight) {\n initialHeight = container.offsetHeight;\n }\n\n const getScrollOffsetY = () => {\n if (window.pageYOffset) {\n return window.pageYOffset;\n }\n\n if (document.documentElement) {\n return document.documentElement.scrollTop;\n }\n\n return 0;\n };\n\n // explanation https://github.com/paypal/paypal-checkout-components/pull/1136#discussion_r298025574\n const checkIfExpansionInViewport = () => {\n try {\n const scrollOffsetY = getScrollOffsetY();\n const windowHeight = window.innerHeight;\n\n const containerOffsetY = container.getBoundingClientRect().top;\n const VISIBLE_THRESHOLD = 200; // 200px, for the first input field to be visible\n\n return scrollOffsetY + windowHeight > initialHeight + containerOffsetY + VISIBLE_THRESHOLD;\n } catch (err) {\n info('cannot_get_the_viewport_information');\n return false;\n }\n };\n\n const isContainerExpanded = container && container.offsetHeight > initialHeight;\n const isExpansionInViewport = checkIfExpansionInViewport();\n\n if (!isContainerExpanded || isExpansionInViewport) {\n return;\n }\n\n logInlineGuestOutOfViewPortOnlyOnce({\n height: container.offsetHeight,\n window: {\n width: window.innerWidth,\n height: window.innerHeight\n }\n });\n };\n },\n decorate: (original) => debounce(original)\n },\n\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n },\n\n validate: validateButtonLocale\n },\n\n style: {\n type: 'object',\n required: false,\n queryParam: true,\n alias: 'buttonStyle',\n\n def() : Object {\n return {\n color: BUTTON_COLOR.GOLD,\n shape: BUTTON_SHAPE.PILL,\n size: BUTTON_SIZE.SMALL,\n label: BUTTON_LABEL.CHECKOUT,\n fundingicons: false,\n layout: BUTTON_LAYOUT.HORIZONTAL\n };\n },\n \n decorate(style : Object) : Object {\n const { label, layout = BUTTON_LAYOUT.HORIZONTAL } = style;\n if (!label && layout === BUTTON_LAYOUT.HORIZONTAL) {\n style.label = BUTTON_LABEL.CHECKOUT;\n return style;\n } else if (!label && layout === BUTTON_LAYOUT.VERTICAL) {\n style.label = BUTTON_LABEL.PAYPAL;\n return style;\n }\n return style;\n },\n\n validate(style = {}, props) {\n validateButtonStyle(style, props);\n flushLogs();\n }\n },\n\n validate: {\n type: 'function',\n required: false,\n decorate(validate) : Function {\n // $FlowFixMe\n return function decorateValidate(actions) : mixed {\n if (!this.validateCalled) {\n this.validateCalled = true;\n return validate(actions);\n }\n };\n }\n },\n\n logLevel: {\n type: 'string',\n required: false,\n get value() : string {\n return config.logLevel;\n }\n },\n\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n },\n\n awaitPopupBridge: {\n type: 'object',\n required: false,\n value: () => awaitPopupBridge(Button)\n },\n\n getPageUrl: {\n type: 'function',\n queryParam: false,\n required: false,\n def: () => {\n return () => window.location.href;\n }\n },\n\n test: {\n type: 'object',\n required: false,\n def() : Object {\n return { action: 'checkout' };\n }\n }\n }\n});\n\nif (Button.isChild()) {\n setupButtonChild(Button);\n}\n","/* @flow */\n\nimport { info, warn, flush as flushLogs } from 'beaver-logger/client';\nimport { CONSTANTS } from 'zoid/src';\nimport { getParent, getTop } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { config } from './config';\nimport { noop, isIE, getDomainSetting, extendUrl, patchMethod, once, extend } from './lib';\nimport { Button } from './button';\nimport { Checkout } from './checkout';\nimport { BUTTON_LABEL, BUTTON_SIZE, BUTTON_COLOR } from './constants';\nimport { rest } from './api';\n\nif (isIE() && getDomainSetting('ie_full_page')) {\n // $FlowFixMe\n Checkout.renderTo = (win) => {\n info('force_ie_full_page');\n flushLogs();\n\n // $FlowFixMe\n const checkout = Checkout.init({\n onAuthorize: noop\n });\n\n checkout.delegate(win);\n\n checkout.openContainer().then(() => {\n checkout.event.triggerOnce(CONSTANTS.EVENTS.CLOSE);\n checkout.showContainer();\n });\n\n // $FlowFixMe\n Button.xprops.payment().then(token => {\n window.top.location = extendUrl(config.checkoutUrl, { token });\n }).catch(err => {\n checkout.error(err);\n });\n };\n}\n\nconst parent = getParent(window);\nconst top = getTop(window);\n\nif (top && parent) {\n let canRenderTop = (top === parent);\n\n if (!canRenderTop) {\n Checkout.canRenderTo(top).then(result => {\n canRenderTop = result;\n });\n\n patchMethod(Checkout, 'renderTo', ({ args: [ win, props, el ], original, context }) => {\n\n if (!canRenderTop) {\n win = getParent(window);\n }\n\n return original.call(context, win, props, el);\n });\n }\n}\n\npatchMethod(Checkout, 'renderTo', ({ callOriginal, args: [ , props ] }) => {\n if (getDomainSetting('allow_full_page_fallback')) {\n const handleError = once((err) => {\n try {\n // eslint-disable-next-line no-console\n console.error(err && err.stack);\n } catch (err2) {\n // pass\n }\n\n // $FlowFixMe\n return Button.xprops.payment().then(token => {\n window.top.location = extendUrl(config.checkoutUrl, { token });\n });\n });\n\n props.onError = handleError;\n return callOriginal().catch(handleError);\n }\n return callOriginal();\n});\n\nlet debounce = false;\n\npatchMethod(Checkout, 'renderTo', ({ callOriginal, args: [ , props ] }) => {\n\n if (debounce) {\n warn('button_mutliple_click_debounce');\n return new ZalgoPromise(noop);\n }\n\n debounce = true;\n\n for (const methodName of [ 'onAuthorize', 'onCancel', 'onError', 'onClose' ]) {\n const original = props[methodName];\n props[methodName] = function unDebounce() : mixed {\n debounce = false;\n if (original) {\n return original.apply(this, arguments);\n }\n };\n }\n\n return callOriginal();\n});\n\npatchMethod(rest.payment, 'create', ({ original: createOriginal, context: createContext, args: [ env, client, options, experience ] }) => {\n if (!options.payment) {\n options = { payment: options, experience };\n }\n return createOriginal.call(createContext, env, client, options);\n});\n\npatchMethod(Button.props.style, 'validate', ({ callOriginal, args: [ style ] }) => {\n\n if (!style) {\n return callOriginal();\n }\n\n if (style && style.color === 'creditblue') {\n style.color = BUTTON_COLOR.DARKBLUE;\n }\n\n if (style && style.label === 'generic') {\n style.label = BUTTON_LABEL.PAYPAL;\n }\n\n if (style && (!style.label || style.label === BUTTON_LABEL.CHECKOUT) && style.size === 'tiny') {\n warn(`unsupported_button_size_tiny`);\n style.size = BUTTON_SIZE.SMALL;\n }\n\n return callOriginal();\n});\n\npatchMethod(Button, 'render', ({ callOriginal, args: [ props ] }) => {\n\n if (props.billingAgreement) {\n props.payment = props.billingAgreement;\n delete props.billingAgreement;\n }\n\n return callOriginal();\n});\n\npatchMethod(Button.props.payment, 'decorate', ({ original, context, args: [ originalPayment ] }) => {\n return original.call(context, function payment(data : Object, actions : Object) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n patchMethod(actions.payment, 'create', ({ original: createOriginal, context: createContext, args: [ options, experience ] }) => {\n if (!options.payment) {\n options = { payment: options, experience };\n }\n return createOriginal.call(createContext, options);\n });\n\n function resolveData(token) {\n resolve(token);\n }\n\n function rejectActions(err) {\n reject(err);\n }\n\n extend(resolveData, data);\n extend(resolveData, actions);\n extend(rejectActions, actions);\n\n const ctx = {\n props: {\n env: this.props.env,\n client: this.props.client\n }\n };\n\n let result;\n\n try {\n result = originalPayment.call(ctx, resolveData, rejectActions);\n } catch (err) {\n return reject(err);\n }\n\n if (result && typeof result.then === 'function') {\n return result.then(resolve, reject);\n }\n\n if (result !== undefined) {\n return resolve(result);\n }\n });\n });\n});\n\nif (Button.isChild()) {\n if (!window.Promise) {\n window.Promise = ZalgoPromise;\n }\n}\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { create } from 'zoid/src';\nimport { type Component } from 'zoid/src/component/component';\nimport type { CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { base64encode } from 'belter/src';\n\nimport { config } from '../config';\nimport { getButtonSessionID, getBrowserLocale, getSessionID, getCurrentScriptUrl } from '../lib';\n\ntype CardOptions = {|\n client : {\n [string] : (string | ZalgoPromise)\n },\n env? : string,\n locale? : string,\n logLevel : string,\n awaitPopupBridge : Function,\n onAuthorize : ({ returnUrl : string }, { redirect : (?CrossDomainWindowType, ?string) => ZalgoPromise }) => ?ZalgoPromise,\n onCancel? : ({ cancelUrl : string }, { redirect : (?CrossDomainWindowType, ?string) => ZalgoPromise }) => ?ZalgoPromise,\n onEvent? : ({ type : string, payload : Object }) => void,\n meta : Object,\n commit : boolean,\n token : string\n|};\n\nexport const Card : Component = create({\n tag: 'card-fields',\n name: 'ppcard',\n\n buildUrl(props) : string {\n const env = props.env || config.env;\n return config.inlinedCardFieldUrls[env];\n },\n\n contexts: {\n iframe: true,\n popup: false\n },\n\n dimensions: {\n height: '300px',\n width: '100%'\n },\n\n autoResize: {\n height: true,\n width: false\n },\n\n props: {\n sessionID: {\n type: 'string',\n required: false,\n def() : string {\n return getSessionID();\n },\n queryParam: true\n },\n\n\n token: {\n type: 'string',\n required: true,\n queryParam: true\n },\n\n buttonSessionID: {\n type: 'string',\n required: false,\n def() : ?string {\n return getButtonSessionID();\n },\n queryParam: true\n },\n\n commit: {\n type: 'boolean',\n required: false,\n queryParam: true\n },\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n },\n\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n allowDelegate: true,\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n }\n },\n\n initialFormValues: {\n type: 'object',\n required: false\n },\n\n\n onAuthorize: {\n type: 'function',\n required: true,\n once: true\n },\n\n onAuth: {\n type: 'function',\n required: false,\n sameDomain: true\n },\n\n onEvent: {\n type: 'function',\n required: false,\n sameDomain: true\n },\n\n getState: {\n type: 'function',\n required: false,\n sameDomain: true\n },\n\n dispatch: {\n type: 'object',\n required: false,\n sameDomain: true\n },\n\n onCancel: {\n type: 'function',\n required: false,\n once: true,\n noop: true\n },\n\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n },\n \n style: {\n type: 'object',\n required: false,\n queryParam: true,\n def() : Object {\n return {\n cardIcons: {\n display: false\n },\n submitButton: {\n display: true\n },\n currencyConversion: {\n display: true\n }\n };\n }\n }\n }\n});\n","/* @flow */\n\nimport { info, track, debug, warn, error, flush as flushLogs } from 'beaver-logger/client';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { config } from './config';\nimport { FPTI } from './constants';\nimport { initLogger, checkForCommonErrors, setLogLevel, stringifyError,\n stringifyErrorMessage, getResourceLoadTime, isPayPalDomain, isEligible,\n getDomainSetting, once, openMetaFrame, precacheRememberedFunding,\n getCurrentScript, getRememberedFunding } from './lib';\nimport { Button } from './button';\nimport { Checkout } from './checkout';\nimport { pptm } from './external';\n\nfunction domainToEnv(domain : string) : ?string {\n for (const env of Object.keys(config.paypalUrls)) {\n if (config.paypalUrls[env] === domain) {\n return env;\n }\n }\n}\n\nfunction setDomainEnv(domain : string) {\n const currentDomainEnv = domainToEnv(domain);\n\n if (currentDomainEnv && currentDomainEnv !== 'test') {\n config.env = currentDomainEnv;\n }\n}\n\nsetDomainEnv(`${ window.location.protocol }//${ window.location.host }`);\n\nZalgoPromise.onPossiblyUnhandledException(err => {\n\n error('unhandled_error', {\n stack: stringifyError(err),\n errtype: ({}).toString.call(err)\n });\n\n track({\n [ FPTI.KEY.ERROR_CODE ]: 'checkoutjs_error',\n [ FPTI.KEY.ERROR_DESC ]: stringifyErrorMessage(err)\n });\n\n return flushLogs().catch(err2 => {\n if (window.console) {\n try {\n if (window.console.error) {\n window.console.error('Error flushing:', stringifyError(err2));\n } else if (window.console.log) {\n window.console.log('Error flushing:', stringifyError(err2));\n }\n } catch (err3) {\n setTimeout(() => {\n throw err3;\n }, 1);\n }\n }\n });\n});\n\nconst currentScript = getCurrentScript();\nconst currentProtocol = window.location.protocol.split(':')[0];\n\n\ntype ConfigOptions = {|\n env? : ?string,\n stage? : ?string,\n apiStage? : ?string,\n stageUrl? : ?string,\n localhostUrl? : ?string,\n checkoutUri? : ?string,\n state? : ?string,\n logLevel? : ?string,\n merchantID? : ?string,\n precacheRemembered? : boolean,\n authCode? : ?string\n|};\n\nfunction configure({ env, stage, stageUrl, apiStage, localhostUrl, checkoutUri, state, logLevel, merchantID, authCode } : ConfigOptions = {}) {\n\n if (env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n\n delete config.env;\n config.env = env;\n } else if (Button.xprops && Button.xprops.env) {\n delete config.env;\n // $FlowFixMe\n config.env = Button.xprops.env;\n } else if (Checkout.xprops && Checkout.xprops.env) {\n delete config.env;\n // $FlowFixMe\n config.env = Checkout.xprops.env;\n }\n\n if (stage) {\n delete config.stage;\n config.stage = stage;\n } else if (Button.xprops && Button.xprops.stage) {\n delete config.stage;\n // $FlowFixMe\n config.stage = Button.xprops.stage;\n } else if (Checkout.xprops && Checkout.xprops.stage) {\n delete config.stage;\n // $FlowFixMe\n config.stage = Checkout.xprops.stage;\n }\n\n if (stageUrl) {\n delete config.stageUrl;\n // $FlowFixMe\n config.stageUrl = stageUrl;\n } else if (Button.xprops && Button.xprops.stageUrl) {\n delete config.stageUrl;\n // $FlowFixMe\n config.stageUrl = Button.xprops.stageUrl;\n } else if (Checkout.xprops && Checkout.xprops.stageUrl) {\n delete config.stageUrl;\n // $FlowFixMe\n config.stageUrl = Checkout.xprops.stageUrl;\n }\n\n authCode = authCode || (Button.xprops && Button.xprops.authCode) || (Checkout.xprops && Checkout.xprops.authCode);\n\n if (authCode) {\n delete config.authCode;\n config.authCode = authCode;\n }\n\n if (apiStage) {\n delete config.apiStage;\n config.apiStage = apiStage;\n }\n\n localhostUrl = localhostUrl || (Button.xprops && Button.xprops.localhostUrl) || (Checkout.xprops && Checkout.xprops.localhostUrl);\n if (localhostUrl) {\n config.localhostUrl = localhostUrl;\n }\n\n checkoutUri = checkoutUri || (Button.xprops && Button.xprops.checkoutUri) || (Checkout.xprops && Checkout.xprops.checkoutUri);\n if (checkoutUri) {\n config.checkoutUri = checkoutUri;\n }\n\n if (state) {\n delete config.state;\n config.state = state;\n }\n\n if (merchantID) {\n config.merchantID = merchantID;\n }\n\n if (logLevel) {\n setLogLevel(logLevel);\n } else {\n setLogLevel(config.logLevel);\n }\n}\n\nexport const init = once(({ precacheRemembered }) => {\n\n if (!isEligible()) {\n warn('ineligible');\n }\n\n checkForCommonErrors();\n\n initLogger();\n\n if (pptm.shouldCreateInitialPptmScript()) {\n pptm.createPptmScript();\n }\n\n if (precacheRemembered) {\n precacheRememberedFunding();\n }\n\n if (getDomainSetting('force_bridge') && !isPayPalDomain()) {\n openMetaFrame(config.env);\n }\n\n info(`setup_${ config.env }`);\n\n debug(`current_protocol_${ currentProtocol }`);\n});\n\n// $FlowFixMe\nexport function setup(options : ConfigOptions = {}) {\n configure(options);\n init(options);\n}\n\nif (currentScript) {\n setup({\n env: currentScript.getAttribute('data-env'),\n stage: currentScript.getAttribute('data-stage'),\n apiStage: currentScript.getAttribute('data-api-stage'),\n stageUrl: currentScript.getAttribute('data-stage-url'),\n localhostUrl: isPayPalDomain() ? currentScript.getAttribute('data-localhost-url') : undefined,\n checkoutUri: isPayPalDomain() ? currentScript.getAttribute('data-checkout-uri') : undefined,\n state: currentScript.getAttribute('data-state'),\n logLevel: currentScript.getAttribute('data-log-level'),\n merchantID: currentScript.getAttribute('data-merchant-id'),\n authCode: currentScript.getAttribute('data-auth-code'),\n precacheRemembered: currentScript.hasAttribute('data-precache-remembered-funding')\n });\n\n} else {\n setup();\n}\n\nif (!isPayPalDomain()) {\n\n if (currentScript) {\n\n const scriptProtocol = currentScript.src.split(':')[0];\n const loadTime = getResourceLoadTime(currentScript.src);\n\n debug(`current_script_protocol_${ scriptProtocol }`);\n debug(`current_script_protocol_${ currentProtocol === scriptProtocol ? 'match' : 'mismatch' }`);\n debug(`current_script_version_${ config.version.replace(/[^0-9a-zA-Z]+/g, '_') }`);\n\n if (loadTime) {\n debug(`current_script_time`, { loadTime });\n debug(`current_script_time_${ Math.floor(loadTime / 1000) }`);\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.SCRIPT_LOAD,\n [ FPTI.KEY.TRANSITION_TIME ]: loadTime,\n [ FPTI.KEY.FUNDING_REMEMBERED ]: getRememberedFunding().join(',')\n });\n\n } else {\n\n debug(`no_current_script`);\n debug(`no_current_script_version_${ config.version.replace(/[^0-9a-zA-Z]+/g, '_') }`);\n\n if (document.currentScript) { // eslint-disable-line compat/compat\n debug(`current_script_not_recognized`, { src: document.currentScript.src }); // eslint-disable-line compat/compat\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.SCRIPT_LOAD\n });\n }\n}\n","/* @flow */\n\nimport { debug, info, warn, error, track, flush } from 'beaver-logger/client';\nimport { destroyAll as _destroyAll } from 'zoid/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport * as _postRobot from 'post-robot/src'; // eslint-disable-line import/no-namespace\n\nimport { isPayPalDomain } from './lib';\nimport { Checkout as _Checkout } from './checkout';\nimport { BillingPage as _BillingPage } from './billing';\nimport { ThreeDomainSecure as _ThreeDomainSecure } from './threeDomainSecure';\n\nimport './hacks'; // eslint-disable-line import/no-unassigned-import\n\nexport const postRobot = _postRobot;\nexport { ZalgoPromise as Promise } from 'zalgo-promise/src';\nexport { PopupOpenError } from 'zoid/src';\n\nexport { rest } from './api';\nexport { Button } from './button';\nexport { Card } from './card';\nexport { setup } from './setup';\nexport { config } from './config';\nexport { ENV, USERS, SOURCE, FUNDING, CARD } from './constants';\nexport { request, isEligible, isFundingRemembered, allowIframe as forceIframe, allowIframe as isWebView, allowIframe } from './lib';\nexport { logExperimentTreatment } from './experiments';\nexport { logFundingEligibility } from './funding';\n\nexport const onPossiblyUnhandledException = ZalgoPromise.onPossiblyUnhandledException;\n\nexport const version = __PAYPAL_CHECKOUT__.__MINOR_VERSION__;\n\nexport let checkout;\nexport let apps;\n\nif (__PAYPAL_CHECKOUT__.__LEGACY_SUPPORT__) {\n const legacy = require('./legacy');\n checkout = legacy.checkout;\n apps = legacy.apps;\n}\n\n// -------------------------------------------------------------\n\nexport let Checkout;\nexport let BillingPage;\nexport let PayPalCheckout;\nexport let destroyAll;\nexport let enableCheckoutIframe;\nexport let logger;\nexport let ThreeDomainSecure;\n\nfunction _enableCheckoutIframe() {\n _Checkout.contexts.iframe = true;\n}\n\nif (isPayPalDomain() || __TEST__) {\n Checkout = _Checkout;\n BillingPage = _BillingPage;\n ThreeDomainSecure = _ThreeDomainSecure;\n PayPalCheckout = _Checkout;\n enableCheckoutIframe = _enableCheckoutIframe;\n destroyAll = _destroyAll;\n logger = { debug, info, warn, error, track, flush };\n}\n","/* @flow */\n/* eslint import/no-default-export: off */\n\nimport * as INTERFACE from './interface'; // eslint-disable-line import/no-namespace\n\nexport * from './interface';\nexport default INTERFACE;\n","/* @flow */\n\nexport const LOG_PREFIX = `paypal_legacy`;\n\nexport const ATTRIBUTES = {\n BUTTON: 'data-paypal-button',\n MERCHANT_ID: 'data-paypal-id',\n ENV: 'data-env',\n SANDBOX: 'data-sandbox'\n};\n\nexport const CLASSES = {\n HIDDEN_BUTTON: 'paypal-button-hidden'\n};\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { debug } from 'beaver-logger/client';\nimport { bridge } from 'post-robot/src';\n\nimport { config } from '../config';\nimport { openMetaFrame, noop } from '../lib';\n\nexport function setupPostBridge(env : string) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n const metaFrameDomain : string = config.paypalDomains[env];\n\n if (!bridge || !bridge.needsBridge({ domain: metaFrameDomain })) {\n return debug(`post_bridge_not_required`, { env });\n }\n\n debug(`setup_post_bridge`, { env });\n\n return openMetaFrame(env).then(noop);\n });\n}\n","/* @flow */\n\nimport { isDevice, isEligible, supportsPopups } from '../lib';\n\nexport function isLegacyEligible() : boolean {\n\n if (!isEligible()) {\n return false;\n }\n\n if (!supportsPopups()) {\n return false;\n }\n\n if (isDevice()) {\n return false;\n }\n\n return true;\n}\n","/* @flow */\n\nimport { prefix } from 'beaver-logger/client';\n\nimport { COUNTRY, LANG, LOCALE } from '../constants';\nimport type { LocaleType } from '../types';\n\nimport { LOG_PREFIX } from './constants';\n\nconst { warn } = prefix(LOG_PREFIX);\n\nconst DEFAULT_COUNTRY = COUNTRY.US;\nconst DEFAULT_LANG = LANG.EN;\n\nexport function normalizeLocale(locale : string) : LocaleType {\n\n let [ lang, country ] = locale.split('_');\n\n if (!country) {\n if (LOCALE[lang]) {\n country = lang;\n lang = null;\n } else {\n country = DEFAULT_COUNTRY;\n }\n }\n\n if (!LOCALE[country]) {\n warn(`invalid_user_country`, { country });\n country = DEFAULT_COUNTRY;\n }\n\n if (!lang) {\n lang = DEFAULT_LANG;\n }\n\n if (LOCALE[country].indexOf(lang) === -1) {\n warn(`invalid_user_lang`, { lang });\n\n if (LOCALE[country].indexOf(DEFAULT_LANG) !== -1) {\n lang = DEFAULT_LANG;\n } else {\n lang = LOCALE[country][0];\n }\n }\n\n return { country, lang };\n}\n","/* @flow */\n\nimport { prefix } from 'beaver-logger/client';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { config } from '../config';\nimport { FPTI, BUTTON_COLOR, BUTTON_SHAPE, BUTTON_SIZE, BUTTON_LABEL } from '../constants';\nimport { loadScript, memoize, isElementVisible, stringifyError } from '../lib';\n\nimport { LOG_PREFIX } from './constants';\nimport { normalizeLocale } from './common';\n\nconst { info, debug, error } = prefix(LOG_PREFIX);\n\nconst loadButtonJS = memoize(() : ZalgoPromise => {\n\n debug(`buttonjs_load`);\n\n return loadScript(config.buttonJSUrl).catch(err => {\n info(`buttonjs_load_error_retry`, { error: stringifyError(err) });\n return loadScript(config.buttonJSUrl);\n }).then(result => {\n debug(`buttonjs_load_success`);\n return result;\n }).catch(err => {\n error(`buttonjs_load_error`, { error: stringifyError(err) });\n throw err;\n });\n});\n\nfunction renderButton(id, { container, locale, type, color, shape, size }) : ZalgoPromise {\n\n return loadButtonJS().then(() => {\n\n if (locale) {\n const { country, lang } = normalizeLocale(locale);\n locale = `${ lang }_${ country }`;\n }\n\n locale = locale || `${ config.locale.lang }_${ config.locale.country }`;\n color = color || BUTTON_COLOR.GOLD;\n shape = shape || BUTTON_SHAPE.PILL;\n size = size || BUTTON_SIZE.SMALL;\n type = type || BUTTON_LABEL.CHECKOUT;\n\n debug(`render_button_lc_${ locale }`);\n debug(`render_button_color_${ color }`);\n debug(`render_button_shape_${ shape }`);\n debug(`render_button_size_${ size }`);\n debug(`render_button_label_${ type }`);\n\n const el = window.paypal.button.create(id, { lc: locale, color, shape, size }, { type: 'button', label: type }).el;\n container.appendChild(el);\n\n try {\n info(`in_page_button_${ isElementVisible(el) ? 'visible' : 'not_visible' }`);\n\n } catch (err) {\n // pass\n }\n\n return el.childNodes[0];\n });\n}\n\n// eslint-disable-next-line flowtype/no-mutable-array\nexport function renderButtons(id : string, buttons : Array) : ZalgoPromise> {\n\n return ZalgoPromise.map(buttons, button => {\n return ZalgoPromise.try(() => {\n\n if (button.container) {\n return renderButton(id, button);\n } else {\n return button.button;\n }\n\n }).then(element => {\n\n let container;\n let type;\n const condition = button.condition;\n const click = button.click;\n\n if (button.container) {\n container = button.container;\n type = FPTI.BUTTON_TYPE.HTML;\n } else {\n container = button.button;\n type = FPTI.BUTTON_TYPE.CUSTOM;\n }\n\n return { container, element, type, condition, click };\n });\n });\n}\n\nexport function getHijackTargetElement(button : HTMLElement | HTMLButtonElement) : ?HTMLElement {\n\n // $FlowFixMe\n const form = button.form;\n\n if (form) {\n debug(`target_element_button_form`);\n return form;\n }\n\n const tagName = button.tagName && button.tagName.toLowerCase();\n\n if (tagName === 'a') {\n debug(`target_element_link`);\n return button;\n }\n\n const parentElement = button.parentElement;\n const parentTagName = parentElement && parentElement.tagName && parentElement.tagName.toLowerCase();\n\n if ((tagName === 'img' || tagName === 'button') && parentTagName === 'a') {\n debug(`target_element_parent_link`);\n // $FlowFixMe\n return parentElement;\n }\n\n const grandparentElement = parentElement && parentElement.parentElement;\n const grandparentTagName = grandparentElement && grandparentElement.tagName && grandparentElement.tagName.toLowerCase();\n\n if (tagName === 'button' && grandparentTagName === 'a') {\n debug(`target_element_grandparent_link`);\n // $FlowFixMe\n return button.parentElement && button.parentElement.parentElement;\n }\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { flush as flushLogs, prefix } from 'beaver-logger/client';\n\nimport { config } from '../config';\nimport { ENV } from '../constants';\nimport { urlWillRedirectPage, redirect as redir } from '../lib';\n\nimport { LOG_PREFIX } from './constants';\n\nconst { warn } = prefix(LOG_PREFIX);\n\nlet redirected = false;\n\nexport function logRedirect(location : string) {\n\n if (redirected) {\n warn(`multiple_redirects`);\n }\n\n if (urlWillRedirectPage(location)) {\n redirected = true;\n }\n\n flushLogs();\n}\n\nexport function redirect(url : string) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n if (!url) {\n throw new Error(`Redirect url undefined`);\n }\n\n if (config.env === ENV.TEST && urlWillRedirectPage(url)) {\n return redir(window, `#fullpageRedirect?url=${ url }`);\n }\n\n logRedirect(url);\n\n return redir(window, url);\n });\n}\n\nexport function isToken(item : string) : boolean {\n return Boolean(item && item.match(/^(EC-)?[A-Z0-9]{17}$/));\n}\n\n\n/* Parse Token\n -----------\n\n We are passed either a token, or a url containing the token. In order to run the new checkout component we need to\n strip out the token from the url in order to pass it down as a prop\n*/\n\nexport function parseToken(token : string) : ?string {\n\n if (!token) {\n return;\n }\n\n token = decodeURIComponent(decodeURIComponent(token));\n\n // We may get lucky and be passed a token straight off the bar\n\n if (token.match(/^(EC-)?[A-Z0-9]{17}$/)) {\n return token;\n }\n\n // Otherwise strip the token from the url we're sent\n\n let match = token.match(/token=((EC-)?[A-Z0-9]{17})/);\n\n if (match) {\n return match[1];\n }\n\n match = token.match(/(EC-[A-Z0-9]{17})/);\n\n if (match) {\n return match[1];\n }\n}\n\nexport function hasToken(item : string) : boolean {\n return Boolean(parseToken(item));\n}\n","/* @flow */\n\nimport { prefix } from 'beaver-logger/client';\n\nimport { config } from '../config';\nimport { ENV } from '../constants';\nimport { getElements } from '../lib';\n\nimport { normalizeLocale } from './common';\nimport { LOG_PREFIX } from './constants';\n\nconst { info, warn } = prefix(LOG_PREFIX);\n\nexport function normalizeOptions(options : Object) {\n\n // Normalize environment\n\n if (options.environment) {\n\n if (options.environment === 'live') {\n options.environment = ENV.PRODUCTION;\n }\n\n if (!config.paypalUrls[options.environment]) {\n warn('invalid_env', { badenv: options.environment });\n options.environment = config.env;\n }\n }\n\n // If we're passed a single button in options.button, turn it into an array\n\n if (options.button && !Array.isArray(options.button)) {\n info(`options_button_single_button_passed`);\n\n options.button = [ options.button ];\n }\n\n // If we're passed an array of elements in options.buttons, switch it over to options.button\n\n if (options.buttons && getElements(options.buttons).length) {\n info(`options_buttons_with_elements_passed`);\n\n options.button = options.buttons;\n delete options.buttons;\n }\n\n // If we're passed an empty options.button array, clear the value\n\n if (options.button && options.button.length === 0) {\n info(`options_button_empty`);\n\n delete options.button;\n }\n\n // If we're passed options.button and options.container, concat both under button\n\n if (options.button && options.container) {\n info(`options_button_and_container_passed`, { button: options.button, container: options.container });\n\n options.button = options.button.concat(options.container);\n delete options.container;\n }\n\n // Normalize button selectors to elements\n\n if (options.button) {\n const button = getElements(options.button);\n\n if (button.length) {\n options.button = button;\n\n } else {\n warn(`options_button_element_not_found`, { element: JSON.stringify(options.button) });\n delete options.button;\n }\n }\n\n // Normalize options.button to options.buttons\n\n if (options.button) {\n\n options.buttons = options.button.map(button => {\n return {\n button,\n click: options.click,\n condition: options.condition\n };\n });\n\n delete options.click;\n delete options.condition;\n delete options.button;\n }\n\n // Normalize array of buttons\n\n else if (options.buttons && Array.isArray(options.buttons)) {\n\n const buttons = [];\n\n options.buttons.forEach(button => {\n\n if (!button) {\n return;\n }\n\n if (button.container && button.container !== options.container) {\n warn(`mismatched_container_and_button_passed`, { options: options.container, button: button.container });\n }\n\n getElements(button.container || button.button).forEach(element => {\n buttons.push({\n\n [ button.container ? 'container' : 'button' ]: element,\n\n click: button.click || options.click,\n condition: button.condition || options.condition,\n type: button.type || options.type,\n locale: button.locale || options.locale,\n color: button.color || options.color,\n shape: button.shape || options.shape,\n size: button.size || options.size\n });\n });\n });\n\n delete options.buttons;\n delete options.click;\n delete options.condition;\n delete options.button;\n delete options.type;\n delete options.locale;\n delete options.color;\n delete options.shape;\n delete options.size;\n\n if (buttons.length) {\n options.buttons = buttons;\n }\n }\n\n // Otherwise normalize container into array of buttons\n\n else if (options.container && !Array.isArray(options.buttons)) {\n\n const buttons = [];\n\n getElements(options.container).forEach((container, i) => {\n buttons.push({\n container,\n click: options.click,\n condition: options.condition,\n type: Array.isArray(options.type) ? options.type[i] : options.type,\n locale: Array.isArray(options.locale) ? options.locale[i] : options.locale,\n color: Array.isArray(options.color) ? options.color[i] : options.color,\n shape: Array.isArray(options.shape) ? options.shape[i] : options.shape,\n size: Array.isArray(options.size) ? options.size[i] : options.size\n });\n });\n\n delete options.container;\n delete options.buttons;\n delete options.click;\n delete options.condition;\n delete options.button;\n delete options.type;\n delete options.locale;\n delete options.color;\n delete options.shape;\n delete options.size;\n\n if (buttons.length) {\n options.buttons = buttons;\n }\n }\n\n if (!options.buttons) {\n options.buttons = [];\n }\n}\n\nexport function setupConfig(options : Object) {\n\n if (options.environment && config.paypalUrls[options.environment]) {\n config.env = options.environment;\n }\n\n if (options.locale) {\n config.locale = normalizeLocale(options.locale);\n config.customCountry = true;\n }\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { prefix, flush as flushLogs } from 'beaver-logger/client';\nimport formSerialize from 'form-serialize';\n\nimport { Checkout } from '../checkout';\nimport { config } from '../config';\nimport { ENV, FPTI } from '../constants';\nimport { supportsPopups, once, safeJSON, extendUrl, stringifyError, request } from '../lib';\n\nimport { setupPostBridge } from './postBridge';\nimport { isLegacyEligible } from './eligibility';\nimport { LOG_PREFIX } from './constants';\nimport { renderButtons, getHijackTargetElement } from './button';\nimport { redirect, logRedirect, parseToken } from './util';\nimport { normalizeOptions, setupConfig } from './options';\n\nconst { info, debug, warn, error, track } = prefix(LOG_PREFIX);\n\nexport const checkout = {};\nexport const apps = { checkout, Checkout: checkout };\n\nexport function reset() {\n\n debug('reset');\n\n // Once our callback has been called, we can set the global methods to their original values\n\n checkout.initXO = initXO; // eslint-disable-line no-use-before-define\n checkout.startFlow = startFlow; // eslint-disable-line no-use-before-define\n checkout.closeFlow = closeFlow; // eslint-disable-line no-use-before-define\n}\n\ncheckout.reset = reset;\n\n// $FlowFixMe\nObject.defineProperty(checkout, 'urlPrefix', {\n get() : string {\n return `${ config.checkoutUrl }${ config.checkoutUrl.indexOf('?') === -1 ? '?' : '&' }token=`;\n }\n});\n\nfunction matchUrlAndPaymentToken(item) : { url : string, paymentToken : ?string } {\n\n if (!item || !item.trim()) {\n error(`startflow_no_url_or_token`, { item });\n throw new Error(`startflow_no_url_or_token`);\n }\n\n\n const paymentToken = parseToken(item);\n let url = (paymentToken && paymentToken === item) ? '' : item;\n\n if (url) {\n\n if (!url.match(/^https?:\\/\\/|^\\//)) {\n if (paymentToken) {\n info(`startflow_relative_url_with_token`, { url });\n } else {\n info(`startflow_relative_url_no_token`, { url });\n }\n\n if (url.toLowerCase().indexOf('ec-') === 0 && paymentToken) {\n url = `${ config.checkoutUrl }${ url }`;\n }\n\n } else if (paymentToken) {\n if (url.indexOf('.paypal.com') !== -1) {\n debug(`startflow_paypalurl_with_token`, { url });\n } else {\n debug(`startflow_url_with_token`, { url });\n }\n\n } else {\n debug(`startflow_url_no_token`, { url });\n }\n\n } else {\n\n if (paymentToken) {\n url = extendUrl(config.checkoutUrl, { token: paymentToken });\n debug(`startflow_with_token`, { url });\n } else {\n error(`startflow_no_url_or_token`, { url });\n throw new Error(`Could not determine url or token from \"${ item }\"`);\n }\n }\n\n return { paymentToken, url };\n}\n\nfunction checkUrlAgainstEnv(url : string) {\n\n const paypalUrls = config.paypalUrls;\n\n for (const env of Object.keys(paypalUrls)) {\n const paypalUrl = paypalUrls[env];\n\n if (env === ENV.TEST || env === ENV.DEMO) {\n continue;\n }\n\n if (env !== config.env) {\n if (url.indexOf(paypalUrl) === 0 || url.indexOf(paypalUrl.replace('//www.', '//')) === 0) {\n warn(`mismatched_env_startflow_url`, { env: config.env, url });\n redirect(url);\n throw new Error(`${ url } is not a ${ config.env } url`);\n }\n }\n }\n}\n\n/* Get Token\n ---------\n\n Normally in the component world, getToken would be a user-provided function which passes a callback, and expects\n that callback to be called with either an error, or an EC token.\n\n In our case, we can emulate these callback calls by setting over the startFlow and closeFlow globals, and using\n them as our success and failure cases.\n\n Note: this method is set to `precall: true` mode. This means that it will be called the moment the component is\n inited on the page. This means that the moment we initialize, we're ready to start accepting a token via one of the\n global methods.\n*/\n\nfunction awaitPaymentTokenAndUrl(event? : ?Event, targetElement? : ?HTMLElement) : { url : ZalgoPromise, paymentToken : ZalgoPromise } {\n\n const paymentTokenAndUrl = new ZalgoPromise((resolve) => {\n\n if (event && targetElement && (Math.random() < 0.001 || window.enablev3ajax)) {\n let method;\n let url;\n let body;\n let contentType;\n\n info('gettoken_targetelement_start');\n flushLogs();\n \n if (targetElement.tagName.toLowerCase() === 'a') {\n method = 'get';\n url = targetElement.getAttribute('href');\n } else if (targetElement.tagName.toLowerCase() === 'form') {\n method = (targetElement.getAttribute('method') || 'get').toLowerCase();\n url = targetElement.getAttribute('action');\n body = formSerialize(targetElement);\n contentType = targetElement.getAttribute('enctype') || 'application/x-www-form-urlencoded';\n }\n \n if (method && url) {\n event.preventDefault();\n\n request({\n method,\n url,\n body,\n headers: {\n 'Accept': 'application/paypal-json-token',\n 'Content-type': contentType || ''\n }\n }).then(json => {\n const urlAndPaymentToken = matchUrlAndPaymentToken(json.token);\n resolve(urlAndPaymentToken);\n info('gettoken_targetelement_success', urlAndPaymentToken);\n flushLogs();\n\n }).catch(err => {\n warn('gettoken_targetelement_error', {\n // $FlowFixMe\n err: err.stack || err.toString()\n });\n flushLogs();\n });\n \n } else {\n warn('gettoken_targetelement_no_method_or_url');\n flushLogs();\n }\n }\n\n\n checkout.initXO = () => {\n warn(`gettoken_initxo`);\n };\n\n // startFlow is our 'success' case - we get a token, and we can pass it back to the caller\n\n checkout.startFlow = once((item) => {\n debug(`gettoken_startflow`, { item });\n\n const { url, paymentToken } = matchUrlAndPaymentToken(item);\n\n checkUrlAgainstEnv(url);\n\n return resolve({ url, paymentToken });\n });\n });\n\n const url = paymentTokenAndUrl.then(result => result.url);\n const paymentToken = paymentTokenAndUrl.then(result => result.paymentToken);\n\n return { url, paymentToken };\n}\n\n\n/* Init PayPal Checkout\n --------------------\n\n Initialize the Checkout component with some standard props:\n\n - Pass in env from global state (saved during setup() call)\n - Return to success url on payment authorize\n - Return to cancel url on cancel\n*/\n\nlet paypalCheckoutInited = false;\nlet closeFlowCalled = false;\n\nfunction initPayPalCheckout(props = {}) : Object {\n\n info(`init_checkout`);\n\n if (paypalCheckoutInited && config.env !== ENV.TEST) {\n warn(`multiple_init_paypal_checkout`);\n }\n\n if (closeFlowCalled) {\n debug(`init_after_closeflow`);\n }\n\n paypalCheckoutInited = true;\n\n const paypalCheckout = Checkout.init({\n\n onAuthorize(data, actions) : ZalgoPromise {\n info(`payment_authorized`);\n logRedirect(data.returnUrl);\n return actions.redirect(window);\n },\n\n onCancel(data, actions) : ?ZalgoPromise {\n if (data.cancelUrl) {\n info(`payment_canceled`);\n logRedirect(data.cancelUrl);\n return actions.redirect(window);\n }\n },\n\n fallback(url) : ZalgoPromise {\n error(`fallback_handler`, { url });\n this.destroy();\n return redirect(url);\n },\n\n ...props\n });\n\n checkout.closeFlow = (closeUrl? : string) => {\n warn(`closeflow`);\n\n closeFlowCalled = true;\n\n reset();\n\n paypalCheckout.destroy();\n\n if (closeUrl) {\n warn(`closeflow_with_url`, { closeUrl });\n return redirect(closeUrl);\n }\n };\n\n return paypalCheckout;\n}\n\nfunction renderPayPalCheckout(props : Object = {}, hijackTarget? : ?Element) : ZalgoPromise {\n\n const urlProp = ZalgoPromise.resolve(props.url);\n\n const paymentToken = new ZalgoPromise(resolve => {\n props.init = (data) => {\n resolve(data.paymentToken);\n };\n });\n\n const errorHandler = once(err => {\n\n error(`component_error`, { error: stringifyError(err) });\n\n if (hijackTarget) {\n warn(`render_error_hijack_revert_target`);\n hijackTarget.removeAttribute('target');\n }\n\n // eslint-disable-next-line promise/no-promise-in-callback\n urlProp.then(url => {\n warn(`render_error_redirect_using_url`);\n return redirect(url);\n });\n\n // eslint-disable-next-line promise/no-promise-in-callback\n paymentToken.then(token => {\n warn(`render_error_redirect_using_token`);\n return redirect(extendUrl(config.checkoutUrl, { token }));\n });\n });\n\n props.onError = errorHandler;\n\n let paypalCheckout;\n\n if (hijackTarget) {\n\n delete props.url;\n\n paypalCheckout = initPayPalCheckout(props);\n\n paypalCheckout.hijack(hijackTarget);\n paypalCheckout.runTimeout();\n\n urlProp.then(url => {\n warn(`hijack_then_url_passed`);\n paypalCheckout.loadUrl(url);\n });\n\n } else {\n\n paypalCheckout = initPayPalCheckout(props);\n }\n\n const render = paypalCheckout.render(null, !hijackTarget);\n\n checkout.win = paypalCheckout.window;\n\n return render.catch(errorHandler);\n}\n\n\nfunction handleClick(clickHandler, event) {\n debug(`button_click_handler`);\n\n try {\n clickHandler(event);\n } catch (err) {\n error(`click_handler_error`, { error: stringifyError(err) });\n }\n}\n\nfunction handleClickHijack(event, element) : void {\n\n const targetElement = getHijackTargetElement(element);\n\n if (!targetElement) {\n return error(`target_element_not_found`);\n }\n\n info(`init_paypal_checkout_hijack`);\n\n const { url, paymentToken } = awaitPaymentTokenAndUrl(event, targetElement);\n\n let token;\n \n paymentToken.then(result => {\n token = result;\n });\n\n renderPayPalCheckout({ url, payment: () => ZalgoPromise.resolve(token) }, targetElement);\n}\n\nfunction listenClick(container, button, clickHandler, condition, tracker) : void {\n\n const element : HTMLElement = (container.tagName.toLowerCase() === 'a') ? container : button;\n\n const isClick = (typeof clickHandler === 'function');\n\n if (element.hasAttribute('data-paypal-click-listener')) {\n return warn(`button_already_has_paypal_click_listener`);\n }\n\n element.setAttribute('data-paypal-click-listener', '');\n\n const targetElement = getHijackTargetElement(element);\n\n if (targetElement && isClick) {\n info(`button_link_or_form`);\n }\n\n element.addEventListener('click', (event : Event) => {\n\n tracker();\n\n const eligible = isLegacyEligible();\n\n if (supportsPopups()) {\n debug(`click_popups_supported`);\n\n if (!eligible) {\n debug(`click_popups_supported_but_ineligible`);\n }\n } else {\n debug(`click_popups_not_supported`);\n\n if (eligible) {\n debug(`click_popups_not_supported_but_eligible`);\n }\n }\n\n if (!isClick) {\n\n if (!eligible) {\n return debug(`ineligible_listenclick`);\n }\n }\n\n info(`button_click`);\n\n if (typeof condition === 'function') {\n if (condition.call()) {\n info(`button_click_condition_enabled`);\n } else {\n return info(`button_click_condition_disabled`);\n }\n }\n\n if (isClick) {\n return handleClick(clickHandler, event);\n\n } else {\n return handleClickHijack(event, element);\n }\n });\n}\n\nfunction instrumentButtonRender(type : string) {\n info(`render_${ type }_button`);\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_RENDER,\n [ FPTI.KEY.BUTTON_TYPE ]: type\n });\n\n flushLogs();\n}\n\nfunction instrumentButtonClick(type : string) {\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_CLICK,\n [ FPTI.KEY.BUTTON_TYPE ]: type\n });\n flushLogs();\n}\n\n\n/* Setup\n -----\n\n Emulate window.paypal.checkout.setup.\n\n The purpose of this method is to:\n\n - Set up configuration for the incontext flow\n - Render a button to initiate the checkout window\n*/\n\nlet setupCalled = false;\n\nexport function setup(id : string, options : Object = {}) : ZalgoPromise {\n\n id = id || 'merchant';\n\n info(`setup`, {\n id,\n env: options.environment,\n options: safeJSON(options)\n });\n\n if (setupCalled) {\n debug(`setup_called_multiple_times`);\n }\n\n setupCalled = true;\n\n normalizeOptions(options);\n setupConfig(options);\n\n setupPostBridge(config.env);\n\n return ZalgoPromise.try(() => {\n\n // If there are no buttons passed, can only assume there's a custom paypal button with a custom listener\n\n if (!options.buttons.length) {\n return instrumentButtonRender(FPTI.BUTTON_TYPE.CUSTOM);\n }\n\n // Otherwise render whatever buttons we were asked to, and listen for them to be clicked\n\n return renderButtons(id, options.buttons).then(buttons => {\n\n buttons.forEach(button => {\n instrumentButtonRender(button.type);\n\n listenClick(button.container, button.element, button.click, button.condition, () => {\n instrumentButtonClick(button.type);\n });\n });\n });\n });\n}\n\ncheckout.setup = setup;\n\n/* Init XO\n -------\n\n Emulate paypal.checkout.initXO\n\n Normally this would be used only to open the checkout page. But here we can just kick off the whole flow, since\n getToken will handle loading the token into the window for us.\n*/\n\nfunction initXO() : void {\n\n debug(`initxo`);\n\n if (!isLegacyEligible()) {\n return debug(`ineligible_initxo`);\n }\n\n const { url, paymentToken } = awaitPaymentTokenAndUrl();\n\n info(`init_paypal_checkout_initxo`);\n\n renderPayPalCheckout({ url, payment: () => paymentToken });\n}\n\ncheckout.initXO = initXO;\n\n\n/* Start Flow\n ----------\n\n Emulate paypal.checkout.startFlow\n\n Normally this would be used to load the url into the browser after the window has already been opened. Again, we\n can just kick off the whole flow here, on the off chance that a merchant calls us on button click. Normally this\n method will have been patched over in getToken.\n*/\n\nfunction startFlow(item : string) {\n debug(`startflow`, { item });\n\n const { paymentToken, url } = matchUrlAndPaymentToken(item);\n\n checkUrlAgainstEnv(url);\n\n if (!isLegacyEligible()) {\n debug(`ineligible_startflow_global`, { url });\n redirect(url);\n return;\n }\n\n info(`init_paypal_checkout_startflow`);\n\n renderPayPalCheckout({ url, payment: () => ZalgoPromise.resolve(paymentToken) });\n}\n\ncheckout.startFlow = startFlow;\n\n\n/* Close Flow\n ----------\n\n Emulate paypal.checkout.closeFlow\n\n Close the component in case of any error on the merchant side.\n*/\n\nfunction closeFlow(closeUrl? : string) {\n warn(`closeflow_not_opened`);\n\n if (closeUrl) {\n warn(`closeflow_with_url`, { closeUrl });\n redirect(closeUrl);\n\n }\n}\n\ncheckout.closeFlow = closeFlow;\n","/* @flow */\n\nimport { prefix } from 'beaver-logger/client';\n\nimport { onDocumentReady } from '../lib';\nimport { ENV } from '../constants';\n\nimport { LOG_PREFIX, ATTRIBUTES, CLASSES } from './constants';\nimport { setup } from './interface';\n\nconst { error, debug } = prefix(LOG_PREFIX);\n\n/* PayPal Checkout Ready\n ---------------------\n\n Call window.paypalCheckoutReady on document ready, if it has been defined by the merchant\n*/\n\nfunction invokeReady(method) {\n\n onDocumentReady(() => {\n debug(`paypal_checkout_ready`);\n setTimeout(() => {\n\n if (!window.paypal) {\n error(`paypal_checkout_ready_no_window_paypal`);\n }\n\n method();\n }, 1);\n });\n}\n\nfunction onKey(obj : Object, key : string, callback : Function) {\n\n if (!obj) {\n return;\n }\n\n let value = obj[key];\n\n if (value) {\n value = callback(value) || value;\n }\n\n try {\n\n delete obj[key];\n\n Object.defineProperty(obj, key, {\n\n configurable: true,\n\n set(item) {\n value = item;\n\n if (value) {\n value = callback(value) || value;\n }\n },\n\n get() : mixed {\n return value;\n }\n });\n\n } catch (err) {\n // pass\n }\n}\n\nonKey(window, 'paypalCheckoutReady', method => {\n\n if (typeof method === 'function') {\n\n const oneTimeReady = function () : void {\n if (!method.called) {\n method.called = true;\n return method.apply(this, arguments);\n }\n };\n\n invokeReady(oneTimeReady);\n\n return oneTimeReady;\n }\n});\n\n\n/* Scan for buttons\n ----------------\n\n Scan for any buttons on the page with a data-paypal-button attribute and auto-attach the PaypalCheckout component to them\n*/\n\nonDocumentReady(() => {\n\n const buttons = Array.prototype.slice.call(document.querySelectorAll(`[${ ATTRIBUTES.BUTTON }]`));\n\n if (buttons && buttons.length) {\n debug(`data_paypal_button`, { number: buttons.length });\n\n for (const button of buttons) {\n\n const id = button.getAttribute(ATTRIBUTES.MERCHANT_ID);\n\n let environment;\n\n if (button.hasAttribute(ATTRIBUTES.ENV)) {\n environment = button.getAttribute(ATTRIBUTES.ENV);\n } else if (button.hasAttribute(ATTRIBUTES.SANDBOX)) {\n environment = ENV.SANDBOX;\n }\n\n setup(id, { environment, button });\n }\n }\n\n // Show hidden buttons\n\n Array.prototype.slice.call(document.getElementsByClassName(CLASSES.HIDDEN_BUTTON)).forEach(el => {\n el.className = el.className.replace(CLASSES.HIDDEN_BUTTON, '');\n });\n});\n","/* @flow */\n\nimport './ready'; // eslint-disable-line import/no-unassigned-import\n\nexport * from './button';\nexport * from './constants';\nexport * from './interface';\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/constants/button.js","webpack:///./src/constants/checkout.js","webpack:///./src/constants/funding.js","webpack:///./src/constants/misc.js","webpack:///./src/constants/fpti.js","webpack:///./src/constants/country.js","webpack:///./src/constants/locale.js","webpack:///./src/constants/index.js","webpack:///./src/lib/jsx.js","webpack:///./node_modules/zalgo-promise/src/utils.js","webpack:///./node_modules/zalgo-promise/src/exceptions.js","webpack:///./node_modules/zalgo-promise/src/flush.js","webpack:///./node_modules/zalgo-promise/src/promise.js","webpack:///./node_modules/zalgo-promise/src/index.js","webpack:///./src/lib/proxy.js","webpack:///./src/lib/logger.js","webpack:///./src/lib/eligibility.js","webpack:///./src/lib/errors.js","webpack:///./src/lib/http.js","webpack:///./src/lib/throttle.js","webpack:///./src/lib/script.js","webpack:///./src/lib/meta.js","webpack:///./src/lib/funding.js","webpack:///./src/lib/index.js","webpack:///./src/config/config.js","webpack:///./src/config/index.js","webpack:///./node_modules/beaver-logger/client/util.js","webpack:///./node_modules/beaver-logger/client/builders.js","webpack:///./node_modules/beaver-logger/client/config.js","webpack:///./node_modules/beaver-logger/client/logger.js","webpack:///./node_modules/beaver-logger/client/performance.js","webpack:///./node_modules/beaver-logger/client/init.js","webpack:///./node_modules/beaver-logger/client/transitions.js","webpack:///./node_modules/beaver-logger/client/interface.js","webpack:///./node_modules/beaver-logger/client/index.js","webpack:///./node_modules/zoid/src/lib/util.js","webpack:///./node_modules/zoid/src/lib/fn.js","webpack:///./node_modules/zoid/src/lib/dom.js","webpack:///./node_modules/zoid/src/lib/promise.js","webpack:///./node_modules/zoid/src/lib/css.js","webpack:///./node_modules/zoid/src/lib/decorators.js","webpack:///./node_modules/zoid/src/lib/logger.js","webpack:///./node_modules/zoid/src/lib/global.js","webpack:///./node_modules/zoid/src/lib/index.js","webpack:///./node_modules/cross-domain-utils/src/util.js","webpack:///./node_modules/cross-domain-utils/src/constants.js","webpack:///./node_modules/cross-domain-utils/src/utils.js","webpack:///./node_modules/cross-domain-utils/src/types.js","webpack:///./node_modules/cross-domain-utils/src/index.js","webpack:///./node_modules/zoid/src/constants.js","webpack:///./node_modules/post-robot/src/global.js","webpack:///./node_modules/post-robot/src/conf/constants.js","webpack:///./node_modules/post-robot/src/conf/config.js","webpack:///./node_modules/post-robot/src/conf/index.js","webpack:///./node_modules/@babel/runtime/helpers/esm/extends.js","webpack:///./src/lib/util.js","webpack:///./node_modules/post-robot/src/drivers/send/strategies.js","webpack:///./node_modules/post-robot/src/drivers/send/index.js","webpack:///./node_modules/post-robot/src/drivers/listeners.js","webpack:///./node_modules/post-robot/src/drivers/receive/types.js","webpack:///./node_modules/post-robot/src/drivers/receive/index.js","webpack:///./node_modules/post-robot/src/drivers/index.js","webpack:///./node_modules/post-robot/src/public/client.js","webpack:///./node_modules/post-robot/src/public/server.js","webpack:///./node_modules/post-robot/src/public/config.js","webpack:///./node_modules/post-robot/src/public/index.js","webpack:///./node_modules/post-robot/src/clean.js","webpack:///./node_modules/post-robot/src/interface.js","webpack:///./node_modules/post-robot/src/index.js","webpack:///./node_modules/post-robot/src/lib/util.js","webpack:///./node_modules/post-robot/src/lib/serialize.js","webpack:///./node_modules/post-robot/src/lib/ready.js","webpack:///./node_modules/post-robot/src/lib/index.js","webpack:///./src/compat/fallback.js","webpack:///./src/checkout/component.js","webpack:///./src/checkout/index.js","webpack:///./node_modules/belter/src/device.js","webpack:///./node_modules/belter/src/util.js","webpack:///./node_modules/belter/src/constants.js","webpack:///./node_modules/belter/src/dom.js","webpack:///./node_modules/belter/src/storage.js","webpack:///./node_modules/belter/src/experiment.js","webpack:///./node_modules/belter/src/global.js","webpack:///./node_modules/belter/src/http.js","webpack:///./node_modules/belter/src/types.js","webpack:///./node_modules/belter/src/decorators.js","webpack:///./node_modules/belter/src/css.js","webpack:///./node_modules/belter/src/test.js","webpack:///./node_modules/belter/src/index.js","webpack:///./node_modules/cross-domain-safe-weakmap/src/native.js","webpack:///./node_modules/cross-domain-safe-weakmap/src/util.js","webpack:///./node_modules/cross-domain-safe-weakmap/src/weakmap.js","webpack:///./node_modules/cross-domain-safe-weakmap/src/index.js","webpack:///./src/resources/fundingLogos/p24.jsx","webpack:///./src/resources/fundingLogos/sofort.jsx","webpack:///./src/resources/fundingLogos/ideal.jsx","webpack:///./src/resources/fundingLogos/giropay.jsx","webpack:///./src/resources/fundingLogos/eps.jsx","webpack:///./src/resources/fundingLogos/mybank.jsx","webpack:///./src/resources/fundingLogos/bancontact.jsx","webpack:///./src/resources/fundingLogos/payu.jsx","webpack:///./src/resources/fundingLogos/verkkopankki.jsx","webpack:///./src/resources/fundingLogos/blik.jsx","webpack:///./src/resources/fundingLogos/trustly.jsx","webpack:///./src/resources/fundingLogos/maxima.jsx","webpack:///./src/resources/fundingLogos/boleto.jsx","webpack:///./src/resources/fundingLogos/oxxo.jsx","webpack:///./src/resources/fundingLogos/paypal.jsx","webpack:///./src/resources/fundingLogos/credit.jsx","webpack:///./src/resources/fundingLogos/index.js","webpack:///./src/resources/cardLogos/index.js","webpack:///./src/resources/index.js","webpack:///./src/lib/session.js","webpack:///./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack:///./node_modules/@babel/runtime/helpers/esm/applyDecoratedDescriptor.js","webpack:///./node_modules/zoid/src/component/base.js","webpack:///./node_modules/zoid/src/component/window.js","webpack:///./node_modules/zoid/src/component/child/props.js","webpack:///./node_modules/zoid/src/component/child/index.js","webpack:///./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack:///./node_modules/zoid/src/component/parent/drivers.js","webpack:///./node_modules/zoid/src/component/parent/validate.js","webpack:///./node_modules/zoid/src/component/parent/props.js","webpack:///./node_modules/zoid/src/component/parent/index.js","webpack:///./node_modules/zoid/src/component/delegate/index.js","webpack:///./node_modules/zoid/src/component/component/validate.js","webpack:///./node_modules/zoid/src/component/component/templates/container.jsx","webpack:///./node_modules/zoid/src/component/component/templates/component.jsx","webpack:///./node_modules/zoid/src/component/component/templates/index.js","webpack:///./node_modules/zoid/src/component/component/props.js","webpack:///./node_modules/zoid/src/component/component/index.js","webpack:///./node_modules/zoid/src/component/index.js","webpack:///./node_modules/zoid/src/interface.js","webpack:///./node_modules/zoid/src/index.js","webpack:///./src/lib/device.js","webpack:///./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack:///./node_modules/post-robot/src/bridge/bridge.js","webpack:///./node_modules/post-robot/src/bridge/common.js","webpack:///./node_modules/post-robot/src/bridge/child.js","webpack:///./node_modules/post-robot/src/bridge/parent.js","webpack:///./node_modules/post-robot/src/bridge/index.js","webpack:///./src/lib/dom.js","webpack:///./node_modules/zoid/src/error.js","webpack:///./src/lib/security.js","webpack:///./src/integrations/braintree.js","webpack:///./src/integrations/index.js","webpack:///./node_modules/zoid/src/drivers/index.js","webpack:///./src/lib/beacon.js","webpack:///./src/checkout/template/componentTemplate.jsx","webpack:///./src/checkout/template/containerStyle/base.js","webpack:///./src/checkout/template/sandboxStyle/base.js","webpack:///./src/checkout/template/containerTemplate.jsx","webpack:///./src/checkout/template/index.js","webpack:///./src/integrations/checkout.js","webpack:///./src/lib/namespace.js","webpack:///./src/checkout/template/containerContent.js","webpack:///./node_modules/hi-base32/src/base32.js","webpack:///./node_modules/zoid/src/drivers/script.js","webpack:///./node_modules/zoid/src/drivers/react.js","webpack:///./node_modules/zoid/src/drivers/vue.js","webpack:///./node_modules/zoid/src/drivers/angular.js","webpack:///./node_modules/zoid/src/drivers/glimmer.js","webpack:///./node_modules/zoid/src/drivers/angular2.js","webpack:///./node_modules/bowser/bowser.min.js","webpack:///./node_modules/post-robot/src/compat/ie.js","webpack:///./node_modules/post-robot/src/compat/index.js","webpack:///./src/resources/fundingLogos/pp_white.svg","webpack:///./src/resources/fundingLogos/pp_blue.svg","webpack:///./src/resources/fundingLogos/pp_black.svg","webpack:///./src/resources/fundingLogos/venmo_white.svg","webpack:///./src/resources/fundingLogos/itau.svg","webpack:///./src/resources/fundingLogos/venmo_blue.svg","webpack:///./src/resources/fundingLogos/elv.svg","webpack:///./src/resources/fundingLogos/elv_white.svg","webpack:///./src/resources/cardLogos/visa.svg","webpack:///./src/resources/cardLogos/amex.svg","webpack:///./src/resources/cardLogos/mastercard.svg","webpack:///./src/resources/cardLogos/maestro.svg","webpack:///./src/resources/cardLogos/discover.svg","webpack:///./src/resources/cardLogos/hiper.svg","webpack:///./src/resources/cardLogos/elo.svg","webpack:///./src/resources/cardLogos/jcb.svg","webpack:///./src/resources/cardLogos/cup.svg","webpack:///./node_modules/form-serialize/index.js","webpack:///./src/load.js","webpack:///./node_modules/post-robot/src/bridge/interface.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///(webpack)/buildin/amd-define.js","webpack:///./src/billing/template/containerTemplate.jsx","webpack:///./src/billing/index.js","webpack:///./src/threeDomainSecure/index.js","webpack:///./src/external/pptm-factory.js","webpack:///./src/external/pptm.js","webpack:///./src/external/index.js","webpack:///./src/api/rest.js","webpack:///./src/experiments.js","webpack:///./src/integrations/popupBridge.js","webpack:///./src/funding/config.js","webpack:///./src/funding/funding.js","webpack:///./src/button/config.js","webpack:///./src/button/props.js","webpack:///./src/button/validate.js","webpack:///./src/button/template/componentStyle/class.js","webpack:///./src/button/template/componentStyle/page.js","webpack:///./src/button/template/componentStyle/button.js","webpack:///./src/button/template/componentStyle/layout.js","webpack:///./src/button/template/componentStyle/branding.js","webpack:///./src/button/template/componentStyle/labels.js","webpack:///./src/button/template/componentStyle/responsive.js","webpack:///./src/button/template/componentStyle/color.js","webpack:///./src/button/template/componentStyle/base.js","webpack:///./src/button/template/componentStyle/index.js","webpack:///./src/button/template/miscComponent.jsx","webpack:///./src/button/template/componentScript.js","webpack:///./src/button/template/content.js","webpack:///./src/button/template/componentTemplate.jsx","webpack:///./src/button/template/containerTemplate.jsx","webpack:///./src/button/template/index.js","webpack:///./src/button/child.js","webpack:///./src/button/component.jsx","webpack:///./src/hacks.js","webpack:///./src/card/index.js","webpack:///./src/setup.js","webpack:///./src/interface.js","webpack:///./src/index.js","webpack:///./src/legacy/constants.js","webpack:///./src/legacy/postBridge.js","webpack:///./src/legacy/eligibility.js","webpack:///./src/legacy/common.js","webpack:///./src/legacy/button.js","webpack:///./src/legacy/util.js","webpack:///./src/legacy/options.js","webpack:///./src/legacy/interface.js","webpack:///./src/legacy/ready.js","webpack:///./src/legacy/index.js"],"names":["BUTTON_STYLE_OPTIONS","LABEL","SIZE","SHAPE","COLOR","LAYOUT","MAXBUTTONS","FUNDINGICONS","BRANDING","TAGLINE","HEIGHT","INSTALLMENTPERIOD","BUTTON_LABEL","PAYPAL","CHECKOUT","PAY","CREDIT","CARD","BUYNOW","INSTALLMENT","VENMO","ITAU","IDEAL","ELV","BANCONTACT","GIROPAY","SOFORT","EPS","MYBANK","P24","PAYU","VERKKOPANKKI","BLIK","TRUSTLY","MAXIMA","BOLETO","OXXO","BUTTON_COLOR","GOLD","BLUE","SILVER","BLACK","DARKBLUE","WHITE","TRANSPARENT","BUTTON_LOGO_COLOR","ANY","BUTTON_SIZE","TINY","SMALL","MEDIUM","LARGE","HUGE","RESPONSIVE","BUTTON_TAGLINE_COLOR","BUTTON_SHAPE","PILL","RECT","BUTTON_BRANDING","BRANDED","UNBRANDED","BUTTON_LAYOUT","HORIZONTAL","VERTICAL","BUTTON_NUMBER","SINGLE","MULTIPLE","BUTTON_LOGO","PP","CHECKOUT_OVERLAY_COLOR","FUNDING","ZIMPLER","VISA","MASTERCARD","AMEX","DISCOVER","SWITCH","MAESTRO","HIPER","ELO","JCB","CUP","COFINOGA","COFIDIS","CETELEM","CBNATIONALE","FUNDING_ELIGIBILITY_REASON","PRIMARY","NOT_ENABLED","SECONDARY_DISALLOWED","OPT_OUT","OPT_IN","DISALLOWED_COUNTRY","DEFAULT_COUNTRY","DEFAULT","REMEMBERED","NEED_OPT_IN","COMMIT_NOT_SET","INVALID_ENV","CARD_PRIORITY","ENV","LOCAL","STAGE","SANDBOX","PRODUCTION","TEST","DEMO","USERS","ALL","SOURCE","MANUAL","BUTTON_FACTORY","LOG_LEVEL","DEBUG","INFO","WARN","ERROR","PAYMENT_TYPE","EC_TOKEN","BA_TOKEN","PAY_ID","PPTM_ID","ATTRIBUTE","BUTTON","FUNDING_SOURCE","VERSION","PLATFORM","DESKTOP","MOBILE","FPTI","KEY","FEED","STATE","TRANSITION","BUTTON_TYPE","SESSION_UID","BUTTON_SESSION_UID","TOKEN","CONTEXT_ID","CONTEXT_TYPE","REFERER","SELLER_ID","DATA_SOURCE","BUTTON_SOURCE","ERROR_CODE","ERROR_DESC","PAGE_LOAD_TIME","EXPERIMENT_NAME","TREATMENT_NAME","TRANSITION_TIME","FUNDING_LIST","FUNDING_COUNT","CHOSEN_FUNDING","BUTTON_WIDTH","MAX_BUTTONS","FUNDING_REMEMBERED","BUTTON_TAGLINE_ENABLED","RESPONSE_DURATION","PAYMENT_FLOW","BUTTON_VERSION","IFRAME","HTML","CUSTOM","BUTTON_SESSION_ID","CHECKOUTJS","LOAD","PPTM","SCRIPT_LOAD","BUTTON_RENDER","BUTTON_LOAD","BUTTON_CLICK","BUTTON_RENDER_INTRANET_MODE","BUTTON_CLICK_INTRANET_MODE","CREATE_PAYMENT","RECIEVE_PAYMENT","CHECKOUT_INIT","CHECKOUT_AUTHORIZE","CHECKOUT_SHIPPING_CHANGE","CHECKOUT_CANCEL","CHECKOUT_ERROR","EXTERNAL_EXPERIMENT","EXTERNAL_EXPERIMENT_COMPLETE","PPTM_LOAD","PPTM_LOADED","COUNTRY","AD","AE","AG","AI","AL","AM","AN","AO","AR","AT","AU","AW","AZ","BA","BB","BE","BF","BG","BH","BI","BJ","BM","BN","BO","BR","BS","BT","BW","BY","BZ","C2","CA","CD","CG","CH","CI","CK","CL","CM","CN","CO","CR","CV","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GI","GL","GM","GN","GP","GR","GT","GW","GY","HK","HN","HR","HU","ID","IE","IL","IN","IS","IT","JM","JO","JP","KE","KG","KH","KI","KM","KN","KR","KW","KY","KZ","LA","LC","LI","LK","LS","LT","LU","LV","MA","MC","MD","ME","MG","MH","MK","ML","MN","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PL","PM","PN","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","ST","SV","SZ","TC","TD","TG","TH","TJ","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","US","UY","VA","VC","VE","VG","VN","VU","WF","WS","YE","YT","ZA","ZM","ZW","LANG","CS","DA","EL","EN","HE","JA","KO","ZH","LANG_TO_DEFAULT_COUNTRY","ALLOWED_INSTALLMENT_COUNTRIES","ALLOWED_INSTALLMENT_PERIOD","LOCALE","htmlEncode","html","toString","replace","JsxHTMLNode","name","props","children","propsToString","childrenToString","Object","keys","filter","key","map","join","innerHTML","result","iterate","child","undefined","Array","isArray","JsxHTMLNodeContainer","jsxToHTML","jsxRender","template","renderers","nodes","regexMap","match","type","value","text","Error","trim","test","break","isPromise","item","Promise","window","Window","constructor","call","then","err","dispatchedErrors","possiblyUnhandledPromiseHandlers","dispatchPossiblyUnhandledError","promise","indexOf","push","setTimeout","__DEBUG__","j","length","onPossiblyUnhandledException","handler","cancel","splice","activeCount","flushPromise","flushActive","resolve","startActive","endActive","awaitActive","Zalgo","ZalgoPromise","resolved","rejected","errorHandled","error","handlers","dispatching","stack","isAsync","res","reject","dispatch","prototype","asyncReject","chain","firstPromise","secondPromise","i","onSuccess","onError","catch","finally","onFinally","try","timeout","time","clearTimeout","toPromise","TypeError","all","promises","count","results","prom","hash","items","method","context","args","apply","delay","flush","proxyMethod","win","originalMethod","getDomain","config","paypalDomain","isSameDomain","send","noop","methods","on","domain","paypal_domain_regex","data","postMessageProxy","isWindowClosed","source","arguments","getRefererDomain","xchild","getParentDomain","location","host","setupProxyLogTransport","once","setTransport","getParent","getTransport","getToken","root","token","isPayPalDomain","queryToken","getQueryParam","initLogger","addPayloadBuilder","referer","path","pathname","env","country","locale","lang","uid","getSessionID","ver","__PAYPAL_CHECKOUT__","__MINOR_VERSION__","addHeaderBuilder","addMetaBuilder","state","addTrackingBuilder","payload","sessionID","paymentToken","buttonSessionID","getButtonSessionID","contextType","contextID","merchantID","version","prefix","protocol","PROTOCOL","FILE","init","uri","loggerUrl","heartbeat","logPerformance","logLevel","__DEFAULT_LOG_LEVEL__","setLogLevel","logLevels","loggerConfig","POSTROBOT_CONFIG","bowserCache","getBowser","userAgent","getUserAgent","require","bowser","getBrowser","SUPPORTED_BROWSERS","browser","isBrowserEligible","isIEIntranet","compareVersions","eligibilityResults","isEligible","navigator","hasOwnProperty","checkRecognizedBrowser","mobile","android","ios","info","flushLogs","logWarn","console","warn","log","checkForCommonErrors","JSON","stringify","toJSON","isIE","isIECompHeader","message","foo","bar","baz","zomg","bind","a","opener","parent","returnContext","assign","b","c","HEADERS","CONTENT_TYPE","ACCEPT","headerBuilders","corrids","prev_corr_ids","parseHeaders","rawHeaders","split","line","values","toLowerCase","request","url","headers","json","body","normalizedHeaders","headerBuilder","builtHeaders","xhr","XMLHttpRequest","addEventListener","xhrLoad","responseHeaders","getAllResponseHeaders","corrID","status","contentType","isJSON","responseText","parse","xhrError","evt","getResponseHeader","open","setRequestHeader","encodeURIComponent","ontimeout","xhrTimeout","get","options","post","getThrottlePercentile","getStorageState","storage","throttlePercentiles","Math","floor","random","THROTTLE_GROUP","CONTROL","THROTTLE","getThrottle","sample","sticky","getStorageID","percentile","group","treatment","started","forced","localStorage","getItem","isEnabled","isDisabled","getTreatment","checkpointName","checkpoint","expuid","track","logStart","logComplete","getReturnToken","href","payer","getCurrentScript","memoize","scripts","slice","document","getElementsByTagName","script","src","scriptUrl","hasAttribute","currentScript","debug","isPayPalObjects","Boolean","getScriptVersion","__MIN__","getCurrentScriptUrl","getDomainSetting","def","hostname","domain_settings","domainMatches","openMetaFrame","iframeEligible","iframeEligibleReason","rememberedFunding","metaFrameUrl","metaFrameUrls","metaFrameDomain","paypalDomains","bridge","metaListener","openBridge","extendUrl","getRememberedFunding","identity","hasRememberedFunding","getSessionState","session","recentlyCheckedRemembered","isRememberedFunding","getRememberedFundingPromises","getGlobalState","global","rememberFundingPromises","getRememberedFundingPromise","flushRememberedFundingPromises","sources","rememberFunding","isDevice","loadMeta","isFundingRemembered","precacheRememberedFunding","getDefaultEnv","__TEST__","locales","__FILE_NAME__","cors","stage","stageDomain","stageUrl","apiStageUrl","apiStage","localhostUrl","ports","default","val","authCode","throttles","v4_mobile_device","ie_full_page","allow_full_page_fallback","memoize_payment","force_bridge","log_authorize","disable_venmo","creditTestDomains","customCountry","msie","firefox","chrome","safari","opera","msedge","samsungBrowser","silk","ucbrowser","vivaldi","session_uid_lifetime","_apiStage","button","checkout","guest","altpay","paypalUrls","port","wwwApiUrls","corsApiUrls","apiUrls","local","sandbox","production","checkoutUri","checkoutUris","altpayUris","guestUris","billingUris","buttonUris","inlinedCardFieldUris","postBridgeUris","legacyCheckoutUris","buttonJSUrls","buttonJSUrl","loginUri","hermesLoggerUri","loggerUri","loggerThrottlePercentage","pptmUri","postBridgeUri","paymentStandardUri","authApiUri","paymentApiUri","orderApiUri","billingApiUri","experienceApiUri","trackingApiUri","checkoutUrls","demo","guestUrls","altpayUrls","billingUrls","buttonUrls","inlinedCardFieldUrls","loginUrls","paymentsStandardUrls","legacyCheckoutUrls","authApiUrls","paymentApiUrls","orderApiUrls","billingApiUrls","experienceApiUrls","trackingApiUrls","_paypalUrl","paypalUrl","corsApiUrl","wwwApiUrl","apiUrl","checkoutUrl","billingUrl","buttonUrl","legacyCheckoutUrl","postBridgeUrl","postBridgeDomain","isTestExperiment","pptmUrl","authApiUrl","paymentApiUrl","orderApiUrl","billingApiUrl","experienceApiUrl","defaultLocale","extend","dest","over","isSameProtocol","ajax","fireAndForget","XRequest","ActiveXObject","XDomainRequest","req","toUpperCase","headerName","onreadystatechange","readyState","promiseDebounce","interval","debounce","resolver","rejector","onWindowReady","safeInterval","loop","uniqueID","chars","charAt","documentMode","payloadBuilders","metaBuilders","trackingBuilders","builder","initial_state_name","flushInterval","debounceInterval","sizeLimit","silent","heartbeatConsoleLog","heartbeatInterval","heartbeatTooBusy","heartbeatTooBusyThreshold","autoLog","logUnload","buffer","tracking","transport","newTransport","loaded","print","level","event","warning","immediateFlush","hasBuffer","hasTracking","meta","events","enqueue","timestamp","Date","now","enablePerformance","performance","timing","connectEnd","navigationStart","abs","timer","startTime","elapsed","parseInt","reset","reqStartElapsed","clientTimer","reqTimer","initHeartBeat","heartBeatTimer","heartbeatCount","heartbeatMaxThreshold","lag","heartbeatPayload","noConsole","initPerformance","client_elapsed","req_elapsed","forEach","offset","memory","navigation","getEntries","resource","initiatorType","initiated","conf","setInterval","beaverLogQueue","windowID","pageID","currentState","startTransition","endTransition","toState","currentTime","elapsedTime","transitionName","duration","transition","transition_time","INTERFACE","urlEncode","str","camelToDasherize","string","g","dasherizeToCamel","obj","stringifyWithFunctions","safeGet","prop","capitalizeFirstLetter","pathParts","runInterval","safeTimeout","each","callback","len","replaceObject","replacers","fullKey","defineProperty","configurable","enumerable","itemKey","replacer","replaced","set","copyProp","target","descriptor","getOwnPropertyDescriptor","dotify","newobj","every","objectIDs","WeakMap","getObjectID","regex","pattern","start","RegExp","index","groups","end","regexAll","matches","substr","startIndex","itemCount","stringifyError","eventEmitter","triggered","eventName","handlerList","cancelled","listener","trigger","triggerOnce","called","onceWrapper","memoizeWrapper","cacheKey","debounceWrapper","serializeFunctions","__type__","deserializeFunctions","deserializedFunctionWrapper","self","appendChild","container","isElement","element","Element","nodeType","style","ownerDocument","querySelectorAll","el","selector","getElementSafe","id","getElementById","querySelector","getElement","documentReady","clearInterval","isDocumentReady","elementReady","popup","params","PopupOpenError","writeToWindow","write","close","err2","writeElementToWindow","tag","tagName","documentElement","removeChild","setStyle","styleText","doc","styleSheet","cssText","createTextNode","createElement","class","className","attributes","setAttribute","contentWindow","awaitFrameLoadPromises","awaitFrameLoad","frame","has","linkFrameWindow","awaitFrameWindow","loadedFrame","iframe","frameBorder","allowTransparency","backgroundColor","removeEventListener","scanForJavascript","parseQuery","queryString","pair","decodeURIComponent","search","formatQuery","extendQuery","originalQuery","query","originalUrl","originalHash","hashString","elementStoppedMoving","getBoundingClientRect","top","bottom","left","right","width","height","getCurrentDimensions","offsetWidth","offsetHeight","changeStyle","styles","setOverflow","overflow","overflowX","overflowY","dimensionsDiff","one","two","threshold","trackDimensions","currentDimensions","check","newDimensions","changed","dimensions","onDimensionsChange","tracker","onWindowResize","dimensionsMatchViewport","innerWidth","innerHeight","bindEvents","eventNames","VENDOR_PREFIXES","setVendorCSS","capitalizedName","CSSRule","KEYFRAMES_RULE","WEBKIT_KEYFRAMES_RULE","MOZ_KEYFRAMES_RULE","O_KEYFRAMES_RULE","MS_KEYFRAMES_RULE","isValidAnimation","stylesheets","styleSheets","cssRules","cssRule","ANIMATION_START_EVENTS","ANIMATION_END_EVENTS","animate","clean","hasStarted","startTimeout","endTimeout","startEvent","endEvent","cleanUp","animationName","stopPropagation","STYLE","DISPLAY","NONE","BLOCK","VISIBILITY","VISIBLE","HIDDEN","IMPORTANT","makeElementVisible","setProperty","makeElementInvisible","showElement","hideElement","destroyElement","parentNode","showAndAnimate","animation","animateAndHide","addClass","classList","add","removeClass","remove","getCurrentScriptDir","getElementName","isElementClosed","watchElementForClose","getHttpType","onload","onerror","getHTML","getCSS","getScript","prefetchPage","JSX_EVENTS","onClick","fixScripts","newScript","textContent","replaceChild","jsxDom","content","textNode","denodeify","denodeifyWrapper","promisify","promisifyWRapper","cycle","isPerc","isPx","toNum","toPx","toCSS","percOf","num","perc","normalizeDimension","dim","max","memoized","memoizedFunction","__memoized__","displayName","promisifiedFunction","CONFIG","logInfo","logError","globalFor","__ZOID__","localGlobal","isRegex","MOCK","ABOUT","WILDCARD","WINDOW_TYPE","POPUP","IE_WIN_ACCESS_ERROR","isFileProtocol","isAboutProtocol","getOpener","canReadFromWindow","getActualDomain","mockDomain","isBlankDomain","isActuallySameDomain","desc","assertSameDomain","getParents","isAncestorParent","childParent","getFrames","frames","getAllChildFrames","childFrame","getTop","getNextOpener","getUltimateTop","getAllFramesInWindow","getAllWindows","isTop","isFrameWindowClosed","contains","safeIndexOf","collection","iframeWindows","iframeFrames","allowMock","closed","mockclosed","iframeIndex","cleanIframes","mockUserAgent","getFrameByName","winFrames","findChildFrameByName","namedFrame","findFrameByName","isParent","frameParent","isOpener","getAncestor","getAncestors","ancestor","isAncestor","actualParent","isPopup","isIframe","isFullpage","anyMatch","collection1","collection2","item1","item2","getDistanceFromTop","distance","getNthParent","n","getNthParentFromTop","isSameTopWindow","win1","win2","top1","top2","allFrames1","allFrames2","opener1","opener2","matchDomain","origin","some","subpattern","stringifyDomainPattern","getDomainFromUrl","onCloseWindow","maxtime","Infinity","isWindow","__cross_domain_utils_window_check__","isBrowser","isCurrentDomain","isMockDomain","normalizeMockUrl","closeWindow","getFrameForWindow","frameElement","TYPES","ZOID","POST_MESSAGE","INIT","PROPS","PROP_CALLBACK","CLOSE","CHECK_CLOSE","REDIRECT","RESIZE","DELEGATE","ALLOW_DELEGATE","HIDE","SHOW","PROP_TYPES","STRING","OBJECT","FUNCTION","BOOLEAN","NUMBER","INITIAL_PROPS","RAW","UID","WINDOW_REFERENCES","OPENER","TOP","PARENT","GLOBAL","PROP_TYPES_LIST","CONTEXT_TYPES","CLASS_NAMES","OUTLET","COMPONENT_FRAME","PRERENDER_FRAME","INVISIBLE","EVENTS","ATTRIBUTES","IFRAME_PLACEHOLDER","ANIMATION_NAMES","SHOW_CONTAINER","SHOW_COMPONENT","HIDE_CONTAINER","HIDE_COMPONENT","EVENT_NAMES","CLICK","CLOSE_REASONS","PARENT_CALL","CHILD_CALL","CLOSE_DETECTED","USER_CLOSED","PARENT_CLOSE_DETECTED","CONTEXT_TYPES_LIST","CALL_ORIGINAL","CALL_DELEGATE","DEFAULT_DIMENSIONS","WIDTH","CONSTANTS","WINDOW_PROPS","POSTROBOT","registerSelf","POST_MESSAGE_TYPE","REQUEST","RESPONSE","ACK","POST_MESSAGE_ACK","SUCCESS","POST_MESSAGE_NAMES","METHOD","HELLO","OPEN_TUNNEL","WINDOW_TYPES","FULLPAGE","SERIALIZATION_TYPES","PROMISE","ZALGO_PROMISE","REGEX","SEND_STRATEGIES","BRIDGE","MOCK_PROTOCOL","FILE_PROTOCOL","BRIDGE_NAME_PREFIX","POSTROBOT_PROXY","POST_MESSAGE_NAMES_LIST","ALLOW_POSTMESSAGE_POPUP","__ALLOW_POSTMESSAGE_POPUP__","__POST_ROBOT__","BRIDGE_TIMEOUT","CHILD_WINDOW_TIMEOUT","ACK_TIMEOUT","RES_TIMEOUT","ALLOWED_POST_MESSAGE_METHODS","ALLOW_SAME_ORIGIN","_extends","moduleGlobal","getGlobal","cache","glob","__CACHE_START_TIME__","hashStr","charCodeAt","pow","sqrt","strHashStr","total","String","fromCharCode","regmatch","safeJSON","listeners","listen","onceListener","awaitKey","newErr","stringifyErrorMessage","defaultMessage","patchMethod","original","patchedMethod","callOriginal","isObject","deepExtend","hasValue","arr","sortBy","order","sort","reverseMap","arrayRemove","pixels","percentage","round","min","regexMapMatcher","SEND_MESSAGE_STRATEGIES","serializedMessage","emulateIERestrictions","domains","dom","postMessage","sendBridgeMessage","needsBridgeForBrowser","isBridge","needsGlobalMessagingForBrowser","foreignGlobal","receiveMessage","buildMessage","getWindowType","sourceDomain","windowType","sendMessage","serializeMethods","messages","jsonStringify","strategyName","success","resetListeners","responseListeners","requestListeners","WINDOW_WILDCARD","WindowWildcard","erroredResponseListeners","__DOMAIN_REGEX__","addResponseListener","getResponseListener","deleteResponseListener","markResponseListenerErrored","isResponseListenerErrored","getRequestListener","nameListeners","winQualifier","winListeners","addRequestListener","listenersCollection","cancelListener","existingListener","strDomain","regexListeners","regexListener","delete","RECEIVE_MESSAGE_TYPES","ack","respond","originalSource","code","handleError","response","receivedMessages","parseMessage","parsedMessage","jsonParse","deserializeMethods","messageListener","messageEvent","sourceElement","originalEvent","listenForMessages","requestPromises","targetWindow","HTMLIFrameElement","hasResult","requestPromise","onChildWindowReady","sayHello","actualDomain","responseListener","ackTimeout","resTimeout","cycleTime","hasAck","sendToParent","client","listenerOptions","errorHandler","requestListener","onceFunction","listenOnce","errorOnClose","disable","cleanUpWindow","popupWindowsByWin","remoteWindows","readyPromises","initialized","openTunnelToOpener","initOnReady","listenForMethods","attachEvent","detachEvent","eachArray","eachObject","depth","childItem","weakMapMemoize","weakmap","weakmapMemoized","arg","indent","objectToJSON","arrayToJSON","meth","isSerialized","serializeMethod","destination","__id__","__name__","serializeError","__message__","__code__","serializePromise","__then__","serializeZalgoPromise","serializeRegex","__source__","deserializeMethod","wrapper","__xdomain__","deserializeError","deserializeZalgoPromise","deserializePromise","deserializeRegex","onHello","onAuthorize","onLegacyPaymentAuthorize","postBridge","watchForLegacyFallback","isLegacy","ppxoWatching","XMLHttpRequestsend","overrideXMLHttpRequestSend","_patched","DONE","returnUrl","billingToken","payerID","paymentID","Checkout","XhrResponse","RESPONSE_TYPES","mob","Xhr","_xhrOnReady","onLegacyFallback","addHeader","$Api","create","scrolling","buildUrl","payment","determineUrl","fundingSource","unsafeRenderTo","bridgeUrl","bridgeDomain","contexts","supportsPopups","validate","prerenderTemplate","componentTemplate","containerTemplate","required","queryParam","xprops","allowDelegate","getBrowserLocale","sendToChild","determineParameterFromToken","queryValue","childDecorate","alias","overlayColor","commit","experience","fundingOffered","elements","fundingSources","getAttribute","decorate","decorateOnAuthorize","actions","intent","closeComponent","redirect","redir","isButton","isGuest","access_token","onShippingChange","onAuth","sameDomain","wrapOnAuth","accessToken","onCancel","decorateOnCancel","cancelUrl","decorateInit","onClose","decorateOnClose","reason","shouldCancel","fallback","defaultFallback","__test__","action","sdkMeta","base64encode","isChild","onProps","injector","instance","payment_action","_context","isWebView","isStandAlone","standalone","matchMedia","isFacebookWebView","ua","isFirefoxIOS","isEdgeIOS","isOperaMini","isAndroid","isIos","isGoogleSearchApp","isQQBrowser","isIosWebview","isAndroidWebview","mHttp","mContent","isElectron","process","versions","electron","isMacOsCna","isChrome","isSafari","getFunctionName","fn","setFunctionName","btoa","m","p1","Buffer","from","base64decode","atob","randomID","timeID","toISOString","__GLOBAL__","serializeArgs","subkey","cacheMap","getOrSet","thisNamespace","cacheTime","promiseIdentity","memoizePromise","memoizedPromiseFunction","inlineMemoize","logic","__inline_memoize_cache__","regexp","svgToBase64","svg","objFilter","regexTokenize","promiseDebounced","localPromise","isInteger","isFloat","serializePrimitive","deserializePrimitive","parseFloat","undotify","keyResult","parts","part","isLast","isIndex","defineLazyProp","getter","arrayFrom","isObjectObject","isPlainObject","isDefined","weakMapMemoizePromise","weakmapMemoizedPromise","cleanup","tasks","cleaned","register","task","pop","tryCatch","removeFromArray","assertExists","thing","unique","KEY_CODES","ENTER","waitForWindowReady","waitForDocumentReady","waitForDocumentBody","urlWillRedirectPage","hasMetaViewPort","screen","isElementVisible","getClientRects","getPageRenderTime","domInteractive","keyCode","isLocalStorageEnabled","setItem","removeItem","getBrowserLocales","nav","languages","language","userLanguage","outerWidth","screenX","outerHeight","screenY","toolbar","menubar","resizable","scrollbars","border","onResize","currentWidth","currentHeight","newWidth","newHeight","observer","ResizeObserver","observe","MutationObserver","childList","subtree","characterData","disconnect","getResourceLoadTime","entries","entry","DEFAULT_SESSION_STORAGE","getStorage","lifetime","STORAGE_KEY","accessedStorage","getState","localStorageEnabled","rawStorage","getID","getSession","__session__","created","guid","getBelterExperimentStorage","isEventUnique","loggedBeacons","experiment","logTreatment","logCheckpoint","throttle","getGlobalNameSpace","globalKey","namespace","defValue","responseBody","wrapPromise","expected","expect","expectWrapper","avoid","avoidWrapper","expectError","expectErrorWrapper","drain","hasNativeWeakMap","freeze","testWeakMap","testKey","testValue","CrossDomainSafeWeakMap","_cleanupClosedWindows","isSafeToReadWrite","writable","P24_LOGO_COLORS","primary","secondary","p24Logo","logoColor","SOFORT_LOGO_COLORS","sofortLogo","IDEAL_LOGO_COLORS","tertiary","idealLogo","GIROPAY_LOGO_COLORS","giropayLogo","EPS_LOGO_COLORS","epsLogo","MYBANK_LOGO_COLORS","mybankLogo","BANCONTACT_LOGO_COLORS","bancontactLogo","PAYU_LOGO_COLORS","quaternary","payuLogo","VERKKOPANKKI_LOGO_COLORS","quinary","senary","verkkopankkiLogo","BLIK_LOGO_COLORS","blikLogo","TRUSTLY_LOGO_COLORS","trustlyLogo","MAXIMA_LOGO_COLORS","maximaLogo","BOLETO_LOGO_COLORS","boletoLogo","OXXO_LOGO_COLORS","oxxoLogo","PAYPAL_LOGO_COLORS","paypalLogo","CREDIT_LOGO_COLORS","creditLogo","fundingLogos","pp_white","pp_blue","pp_black","venmo_white","venmo_blue","itau","elv","elv_white","cardLogos","visa","amex","mastercard","maestro","discover","hiper","elo","jcb","cup","LOCAL_STORAGE_KEY","SESSION_KEY","GLOBAL_KEY","querySessionID","_assertThisInitialized","ReferenceError","_applyDecoratedDescriptor","property","decorators","initializer","reverse","reduce","decorator","complete","run","hasTasks","BaseComponent","component","addProp","createError","listenerName","errorListener","normalize","encode","base32","decode","buildChildWindowName","encodedName","encodedVersion","encodedOptions","isZoidComponentWindow","zoidcomp","getComponentMeta","componentMeta","getWindowByRef","ref","windows","getParentComponentWindow","componentParent","getParentRenderWindow","renderParent","getPosition","x","y","normalizeChildProp","getProp","looseProps","normalizeChildProps","getPropNames","ChildComponent","onPropHandlers","onInit","watchingForResize","autoResize","hasValidParentDomain","RenderError","setProps","getInitialProps","setWindows","exports","watchForResize","allowedParentDomains","parentComponentWindow","func","normalizedProps","parentWindow","__activeZoidComponent__","watchForClose","checkClose","enableAutoResize","getAutoResize","resize","updateProps","destroy","hide","show","userClose","focus","stringifiedError","_defineProperties","_createClass","Constructor","protoProps","staticProps","RENDER_DRIVERS","focusable","renderedIntoContainerTemplate","allowResize","openOnClick","needsBridge","childWindowName","title","frameWindow","detectClose","iframeWatcher","elementWatcher","openPrerender","prerenderIframe","prerenderFrameWindow","prerenderWindow","switchPrerender","delegateOverrides","openContainer","destroyComponent","destroyContainer","cancelContainerEvents","createPrerenderTemplate","showContainer","showComponent","hideContainer","hideComponent","loadUrl","hijackSubmit","renderTemplate","openContainerFrame","getOutlet","override","overrideOpen","validateProp","hasProp","isNaN","validateProps","normalizeProp","resultValue","decorated","normalizeProps","normalizedProp","getQueryValue","propsToQuery","propsDef","serialization","dotkey","escape","ParentComponent","handledErrors","outlet","childExports","validateParentDomain","renderTo","registerActiveComponent","watchForUnload","render","tryInit","onRender","driver","linkDomain","linkUrl","loadHTML","runTimeout","onEnter","checkAllowRenderTo","delegate","prefetch","activeComponents","getComponentParentRef","getRenderParentRef","renderToWindow","childDomain","sProps","getPropsForChild","secureProps","propUrl","builtinProps","getValidDomain","getUrl","finalUrl","xcomponent","builtUrl","needsBridgeParams","getBridgeUrl","hasBridge","getBridgeDomain","windowName","onDisplay","propName","overrides","overridenFunction","closeWindowListener","onunload","unloadWindowListener","hijack","targetElement","onTimeout","closeContainer","renderer","CLASS","ANIMATION","CONTEXT","EVENT","errErr","destroyAll","DelegateComponent","getOverrides","delegateOverride","validatePropDefinitions","anyEnabled","defaultContext","defaultEnv","defaultContainerTemplate","defaultPrerenderTemplate","getInternalProps","defaultLogLevel","drivers","angular","angular2","glimmer","react","vue","Component","listenForResize","driverCache","components","registerDrivers","registerChild","listenDelegate","driverName","dep","canRenderTo","getForEnv","envUrl","isZoidComponent","getRenderContext","validateRenderContext","getDefaultContext","renderIframe","renderPopup","renderIframeTo","renderPopupTo","prerender","innerProps","innerElement","logWarning","getByTag","postRobot","_postRobot","_CONSTANTS","isInsidePopup","isIE11","_inheritsLoose","subClass","superClass","__proto__","tunnelWindows","tunnelWindowId","deleteTunnelWindow","cleanTunnelWindows","tunnelWindow","addTunnelWindow","canary","getTunnelWindow","openTunnelToParent","needsBridgeForWin","needsBridgeForDomain","getBridgeName","sanitizedDomain","documentBodyReady","registerRemoteWindow","sendMessagePromise","findRemoteWindow","registerRemoteSendMessage","remoteWindow","sendMessageWrapper","remoteWin","remoteDomain","rejectRemoteSendMessage","messagingChild","messagingParent","awaitRemoteBridgeForWindow","bridges","bridgeFrames","popupWindowsByName","listenForRegister","winDetails","openBridgeFrame","windowOpen","windowOpenWrapper","last","winName","winOptions","destroyBridges","documentBody","loadScript","attrs","scriptOnReadyStateChange","scriptLoadError","attr","head","isNodeList","HTMLElement","getElements","NodeList","HTMLCollection","onDocumentReady","hasHash","serverUrl","originalQueryString","newQueryString","newUrl","normalizeLocale","normalizeLang","loc","IntegrationError","allowIframe","awaitBraintreeClient","braintree","auth","authorization","paypalCheckout","SUPPORTED_REST_FIELDS","transactions","amount","currency","external_selected_funding_instrument_type","shipping_address","line1","line2","city","postal_code","country_code","phone","recipient_name","application_context","brand_name","shipping_preference","landing_page","supported","supportedKeys","mapPaymentToBraintree","btPayment","flow","offerCredit","shippingAddressOverride","postalCode","countryCode","recipientName","landingPageType","enableShippingAddress","shippingAddressEditable","BEACON_URL","APP_NAME","beacon","appName","beaconImage","Image","isCheckpointUnique","FPTI_URL","buildPayload","v","t","getTimezoneOffset","flnm","shir","pgrp","page","vers","qual","tmpl","fpti","checkoutComponentStyle","getContainerStyle","getSandboxStyle","LOGO_COLOR","containerContent","preventDefault","alert","ppLogo","pp","paypal","windowMessage","continue","getPaymentType","paymentType","extendNamespace","xports","namespaces","childnamespaces","childname","childnamespace","NODE_JS","HI_BASE32_NO_NODE_JS","node","COMMON_JS","HI_BASE32_NO_COMMON_JS","module","AMD","define","BASE32_ENCODE_CHAR","BASE32_DECODE_CHAR","blocks","throwInvalidUtf8","position","partial","toUtf8String","bytes","followingChars","decodeAsBytes","base32Str","v1","v2","v3","v4","v5","v6","v7","v8","remain","encodeAscii","encodeUtf8","encodeBytes","input","asciiOnly","notString","ArrayBuffer","Uint8Array","asBytes","innerText","eval","scan","scriptTags","React","ReactDOM","createClass","componentDidMount","findDOMNode","setState","componentDidUpdate","componentWillUnmount","inheritAttrs","mounted","$el","$attrs","beforeUpdate","ng","directive","scope","restrict","controller","$scope","$element","safeApply","$root","$$phase","$apply","getProps","scopeProps","angularWrapped","$watch","GlimmerComponent","didInsertElement","zoid","AngularComponent","NgModule","ElementRef","NgZone","internalProps","angular2Wrapped","zone","ComponentInstance","inputs","Class","angularConstructor","elementRef","ngOnInit","nativeElement","ngOnChanges","ModuleInstance","declarations","e","r","C","o","u","f","l","h","p","d","w","E","S","T","N","whale","mzbrowser","coast","yandexbrowser","maxthon","epiphany","puffin","sleipnir","kMeleon","osname","windowsphone","chromeos","chromeBook","sailfish","seamonkey","firefoxos","phantom","slimer","blackberry","webos","touchpad","bada","tizen","qupzilla","chromium","googlebot","blink","webkit","gecko","mac","xbox","linux","k","osversion","L","tablet","s","isUnsupportedBrowser","_detect","detect","sourceWindow","k_r_submitter","k_r_success_contrls","brackets","serialize","form","serializer","hash_serializer","str_serialize","radio_store","disabled","nodeName","checked","empty","selectOptions","isSelectedOptions","option","allowedEmpty","selected","parse_keys","exec","hash_assign","shift","between","_values","existing","Button","existingVersion","_interface","errtype","containerStyle","BillingPage","cardType","prefilledZipCode","onEvent","ThreeDomainSecure","challengeUrl","threeDomainSecureToken","shouldCreateInitialPptmScript","existingScript","alreadyDownloaded","removePptm","pptmFactory","noContentFoundInContainer","reloadPptmScript","clientId","tryCreatePptmScript","shouldReloadPptmScript","createPptmScript","listenForLoadWithNoContent","listenForButtonRender","paypalDDL","buttonRenderEvent","mrid","client_id","fullUrl","async","pptm","proxyRest","createAccessToken","clientID","basicAuth","Authorization","grant_type","createExperienceProfile","experienceDetails","temporary","logPaymentResponse","links","rel","getDefaultReturnUrl","createTracking","trackingData","trackingID","createPayment","paymentDetails","redirect_urls","return_url","cancel_url","payment_method","experienceID","experience_profile_id","partner_attribution_id","createOrder","purchase_units","unit","reference_id","createBillingAgreement","billingDetails","plan","merchant_preferences","token_id","rest","billingAgreement","PROXY_REST","parentWin","onAuthorizeListener","loggedEvents","loggedExperimentEvents","duplicate","edge","logExperimentTreatment","externalExperiment","externalExperimentTreatment","externalExperimentToken","logReturn","returnToken","OPTYPE","PAYMENT","CANCEL","CONTINGENCY","PAYMENT_CANCELLED","wrapPopupBridge","popupBridge","onComplete","redirect_uri","getReturnUrlPrefix","validateCheckoutProps","normalizeCheckoutProps","useraction","native_xo","extractDataFromQuery","ba_token","paymentId","PayerID","opType","return_uri","cancel_uri","buildActions","redirectUrl","renderThroughPopupBridge","queryItems","awaitPopupBridge","setupPopupBridgeProxy","doRender","popupBridgeRender","popupBridgeRenderTo","popupBridgeRenderPopupTo","FUNDING_PRIORITY","FUNDING_ORDER","FUNDING_CONFIG","enabled","allowOptIn","allowOptOut","allowRemember","allowHorizontal","allowVertical","requireCommitAsTrue","__paypal_checkout__","serverConfig","paypalMerchantConfiguration","creditCard","isPayPalBranded","allowedCountries","defaultVerticalCountries","platforms","allowedEnvs","CARD_CONFIG","priority","getConfig","category","categoryConfig","getFundingConfig","getCardConfig","fundingEligibilityReasons","isFundingIneligible","funding","layout","isVertical","allowSecondary","disallowed","isFundingAutoEligible","allowed","remembered","isFundingEligible","eligible","ineligibleReason","autoEligibleReason","determineEligibleFunding","reasons","eligibleFunding","factors","unshift","determineEligibleCards","card","validateFunding","logFundingEligibility","table","BUTTON_CONFIG","colors","sizes","shapes","layouts","logoColors","tagLineColors","secondaryColors","dualTag","defaultLabel","defaultVerticalLabel","defaultColor","defaultSize","defaultVerticalSize","defaultShape","defaultLayout","defaultBranding","defaultVerticalBranding","defaultFundingIcons","defaultTagline","defaultDual","minimumSize","minimumVerticalSize","maximumSize","maximumVerticalSize","minHorizontalButtons","minVerticalButtons","maxHorizontalButtons","maxVerticalButtons","allowUnbranded","allowFundingIcons","allowPrimary","allowPrimaryVertical","allowPrimaryHorizontal","label","logoLabel","installmentperiod","allowSecondaryVertical","allowSecondaryHorizontal","FUNDING_TO_DEFAULT_LABEL","LABEL_TO_FUNDING","BUTTON_RELATIVE_STYLE","VERTICAL_MARGIN","BUTTON_STYLE","defaultWidth","defaultHeight","minWidth","maxWidth","minHeight","maxHeight","buttonTextMargin","allowFunding","allowTagline","byPayPalHeight","labelToFunding","fundingToDefaultLabel","getButtonConfig","parseLocale","determineMaxButtons","configMax","enableTagline","tagline","branding","fundingicons","defs","checkoutCustomization","size","color","shape","multiple","cards","validateButtonLocale","validateRegionSpecificButton","isInstallmentAllowedCountry","validateButtonStyle","maxbuttons","minButtons","buttonSize","validateButtonProps","SHOULD_FOCUS","CONTAINER","TAGLINE_COLOR","TEXT","LOGO","SEPARATOR","DOM_READY","PERSONALIZATION_TEXT","pageStyle","buttonStyle","layoutStyle","brandingStyle","labelStyle","DUAL_BUTTON_MIN_RATIO","buttonResponsiveStyle","cardNumber","buttonHeight","buttonTextMarginTop","minDualWidth","ceil","toFixed","buttonColorStyle","componentStyle","LoadingDots","Beacon","impression","Tagline","tagColor","getComponentScript","OPTIONAL","SELECTOR","TAG","toArray","parentElement","sum","getAllChildren","getOptionalIndex","getElementsTotalWidth","getOptionalParents","optional","getOptionalChildren","first","second","optionalParent","allChildren","optionalChildren","toggleOptionals","parentWidth","usedWidth","optionalChild","setupTabOutlineEvent","buttonsContainer","getElementsByClassName","tabKeyCode","handleMouseDownOnce","handleFirstTab","setDomReady","load","componentContent","allowedPersonalizationLabels","getCommonButtonClasses","getButtonClasses","getLocaleContent","determineLabel","labelMatchesFunding","determineButtons","buttonLabel","buttonColor","renderCards","logo","renderFundingIcons","renderPersonalizationButtonText","getButtonTextAnimationStyle","personalizedButtonText","allowedAnimation","MIN_WIDTH","LABEL_DURATION","PERSONALIZATION_DURATION","DELAY","COMPRESSED","EXPANDED","PAYPAL_BUTTON","PAYPAL_LOGO","BUTTON_TEXT","renderContent","dynamicContent","contentString","contentVariable","separator","renderButtonTextDiv","contentText","renderButton","morsText","buttonText","__WEB__","hasTabIndex","renderTagline","renderScript","renderStyle","renderPowerByPaypalLogo","isCardDisallowed","buttonNodes","taglineNode","fundingiconNode","styleNode","scriptNode","labelPowerByPayPal","possibleSizes","possibleSize","sizeA","sizeB","setupButtonChild","ButtonComponent","pageRenderTime","onApprove","pre","inlineGuest","treatments","isCreditDualEligible","creditThrottle","allowpaymentrequest","enableNativeCheckout","prefetchLogin","updateClientConfiguration","memoizedToken","button_version","remember","decorateOnRender","restart","tokenize","tokenizePayment","execute","nonce","decorateOnShippingChange","patch","patchObject","decorateOnClick","initialHeight","logInlineGuestOutOfViewPortOnlyOnce","onResizeHandler","getScrollOffsetY","pageYOffset","scrollTop","checkIfExpansionInViewport","scrollOffsetY","windowHeight","containerOffsetY","VISIBLE_THRESHOLD","isContainerExpanded","isExpansionInViewport","decorateValidate","validateCalled","getPageUrl","canRenderTop","methodName","unDebounce","createOriginal","createContext","originalPayment","resolveData","rejectActions","ctx","Card","initialFormValues","cardIcons","display","submitButton","currencyConversion","domainToEnv","setDomainEnv","currentDomainEnv","err3","currentProtocol","configure","precacheRemembered","setup","scriptProtocol","loadTime","apps","legacy","PayPalCheckout","enableCheckoutIframe","logger","_enableCheckoutIframe","_Checkout","_BillingPage","_ThreeDomainSecure","_destroyAll","LOG_PREFIX","MERCHANT_ID","CLASSES","HIDDEN_BUTTON","setupPostBridge","isLegacyEligible","DEFAULT_LANG","loadButtonJS","lc","childNodes","renderButtons","buttons","condition","click","getHijackTargetElement","parentTagName","grandparentElement","grandparentTagName","redirected","logRedirect","isToken","parseToken","hasToken","normalizeOptions","environment","badenv","concat","setupConfig","initXO","startFlow","closeFlow","matchUrlAndPaymentToken","checkUrlAgainstEnv","awaitPaymentTokenAndUrl","paymentTokenAndUrl","enablev3ajax","formSerialize","urlAndPaymentToken","paypalCheckoutInited","closeFlowCalled","initPayPalCheckout","closeUrl","renderPayPalCheckout","hijackTarget","urlProp","removeAttribute","handleClick","clickHandler","handleClickHijack","listenClick","isClick","instrumentButtonRender","instrumentButtonClick","setupCalled","invokeReady","onKey","oneTimeReady","number"],"mappings":"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","file":"checkout.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 62);\n","/* @flow */\n\nimport type { Enum } from '../types';\n\ntype BUTTON_STYLE_OPTIONS_ENUM =\n Enum<'label' | 'size' | 'shape' | 'color' | 'layout' |\n 'fundingicons' | 'maxbuttons' | 'branding' | 'tagline' | 'height' | 'installmentperiod'>;\n\nexport const BUTTON_STYLE_OPTIONS : BUTTON_STYLE_OPTIONS_ENUM = {\n LABEL: 'label',\n SIZE: 'size',\n SHAPE: 'shape',\n COLOR: 'color',\n LAYOUT: 'layout',\n MAXBUTTONS: 'maxbuttons',\n FUNDINGICONS: 'fundingicons',\n BRANDING: 'branding',\n TAGLINE: 'tagline',\n HEIGHT: 'height',\n INSTALLMENTPERIOD: 'installmentperiod'\n};\n\ntype BUTTON_LABEL_ENUM =\n Enum<'paypal' | 'checkout' | 'pay' | 'credit' |\n 'card' | 'buynow' | 'installment' | 'venmo' | 'itau' | 'ideal' | 'elv' | 'bancontact' | 'giropay' | 'sofort' | 'eps' | 'mybank' | 'p24' | 'payu' | 'verkkopankki' | 'blik' | 'trustly' | 'maxima' | 'boleto' | 'oxxo'>;\n\nexport const BUTTON_LABEL : BUTTON_LABEL_ENUM = {\n PAYPAL: 'paypal',\n CHECKOUT: 'checkout',\n PAY: 'pay',\n CREDIT: 'credit',\n CARD: 'card',\n BUYNOW: 'buynow',\n INSTALLMENT: 'installment',\n VENMO: 'venmo',\n ITAU: 'itau',\n IDEAL: 'ideal',\n ELV: 'elv',\n BANCONTACT: 'bancontact',\n GIROPAY: 'giropay',\n SOFORT: 'sofort',\n EPS: 'eps',\n MYBANK: 'mybank',\n P24: 'p24',\n PAYU: 'payu',\n VERKKOPANKKI: 'verkkopankki',\n BLIK: 'blik',\n TRUSTLY: 'trustly',\n MAXIMA: 'maxima',\n BOLETO: 'boleto',\n OXXO: 'oxxo'\n};\n\ntype BUTTON_COLOR_ENUM =\n Enum<'gold' | 'blue' | 'silver' | 'black' | 'darkblue' | 'transparent' | 'white'>;\n\nexport const BUTTON_COLOR : BUTTON_COLOR_ENUM = {\n GOLD: 'gold',\n BLUE: 'blue',\n SILVER: 'silver',\n BLACK: 'black',\n DARKBLUE: 'darkblue',\n WHITE: 'white',\n TRANSPARENT: 'transparent'\n};\n\ntype BUTTON_LOGO_COLOR_ENUM =\n Enum<'blue' | 'white' | 'black' | 'any'>;\n\nexport const BUTTON_LOGO_COLOR : BUTTON_LOGO_COLOR_ENUM = {\n BLUE: 'blue',\n WHITE: 'white',\n BLACK: 'black',\n ANY: 'any'\n};\n\ntype BUTTON_SIZE_ENUM =\n Enum<'tiny' | 'small' | 'medium' | 'large' | 'huge' | 'responsive'>;\n\nexport const BUTTON_SIZE : BUTTON_SIZE_ENUM = {\n TINY: 'tiny',\n SMALL: 'small',\n MEDIUM: 'medium',\n LARGE: 'large',\n HUGE: 'huge',\n RESPONSIVE: 'responsive'\n};\n\ntype BUTTON_TAGLINE_COLOR_ENUM =\n Enum<'black' | 'blue'>;\n\nexport const BUTTON_TAGLINE_COLOR : BUTTON_TAGLINE_COLOR_ENUM = {\n BLACK: 'black',\n BLUE: 'blue'\n};\n\ntype BUTTON_SHAPE_ENUM =\n Enum<'pill' | 'rect'>;\n\nexport const BUTTON_SHAPE : BUTTON_SHAPE_ENUM = {\n PILL: 'pill',\n RECT: 'rect'\n};\n\ntype BUTTON_BRANDING_ENUM =\n Enum<'branded' | 'unbranded'>;\n\nexport const BUTTON_BRANDING : BUTTON_BRANDING_ENUM = {\n BRANDED: 'branded',\n UNBRANDED: 'unbranded'\n};\n\ntype BUTTON_LAYOUT_ENUM =\n Enum<'horizontal' | 'vertical'>;\n\nexport const BUTTON_LAYOUT : BUTTON_LAYOUT_ENUM = {\n HORIZONTAL: 'horizontal',\n VERTICAL: 'vertical'\n};\n\ntype BUTTON_NUMBER_ENUM =\n Enum<'single' | 'multiple'>;\n\nexport const BUTTON_NUMBER : BUTTON_NUMBER_ENUM = {\n SINGLE: 'single',\n MULTIPLE: 'multiple'\n};\n\ntype BUTTON_LOGO_ENUM =\n Enum<'pp' | 'paypal' | 'venmo' | 'itau' | 'credit' | 'ideal' | 'elv' | 'bancontact' | 'giropay' | 'sofort' | 'eps' | 'mybank' | 'p24' | 'payu' | 'verkkopankki' | 'blik' | 'trustly' | 'maxima' | 'boleto' | 'oxxo'>;\n\nexport const BUTTON_LOGO : BUTTON_LOGO_ENUM = {\n PP: 'pp',\n PAYPAL: 'paypal',\n VENMO: 'venmo',\n ITAU: 'itau',\n CREDIT: 'credit',\n IDEAL: 'ideal',\n ELV: 'elv',\n BANCONTACT: 'bancontact',\n GIROPAY: 'giropay',\n SOFORT: 'sofort',\n EPS: 'eps',\n MYBANK: 'mybank',\n P24: 'p24',\n PAYU: 'payu',\n VERKKOPANKKI: 'verkkopankki',\n BLIK: 'blik',\n TRUSTLY: 'trustly',\n MAXIMA: 'maxima',\n BOLETO: 'boleto',\n OXXO: 'oxxo'\n};\n","/* @flow */\n\nexport const CHECKOUT_OVERLAY_COLOR = {\n BLACK: 'black',\n WHITE: 'white'\n};\n","/* @flow */\n\nexport const FUNDING = {\n PAYPAL: 'paypal',\n VENMO: 'venmo',\n ITAU: 'itau',\n CREDIT: 'credit',\n CARD: 'card',\n IDEAL: 'ideal',\n ELV: 'elv',\n BANCONTACT: 'bancontact',\n GIROPAY: 'giropay',\n SOFORT: 'sofort',\n EPS: 'eps',\n MYBANK: 'mybank',\n P24: 'p24',\n ZIMPLER: 'zimpler',\n PAYU: 'payu',\n VERKKOPANKKI: 'verkkopankki',\n BLIK: 'blik',\n TRUSTLY: 'trustly',\n MAXIMA: 'maxima',\n BOLETO: 'boleto',\n OXXO: 'oxxo'\n};\n\nexport const CARD = {\n VISA: 'visa',\n MASTERCARD: 'mastercard',\n AMEX: 'amex',\n DISCOVER: 'discover',\n SWITCH: 'switch',\n MAESTRO: 'maestro',\n HIPER: 'hiper',\n ELO: 'elo',\n JCB: 'jcb',\n CUP: 'cup',\n COFINOGA: 'cofinoga',\n COFIDIS: 'cofidis',\n CETELEM: 'cetelem',\n CBNATIONALE: 'cbnationale'\n};\n\nexport const FUNDING_ELIGIBILITY_REASON = {\n PRIMARY: 'The funding source is the primary source',\n NOT_ENABLED: 'The funding source is not currently enabled for use',\n SECONDARY_DISALLOWED: 'The funding source is disallowed as a secondary button',\n OPT_OUT: 'The funding source was disallowed in funding.disallowed',\n OPT_IN: 'The funding source was allowed in funding.allowed',\n DISALLOWED_COUNTRY: 'The funding source is not enabled for the current locale',\n DEFAULT_COUNTRY: 'The funding source is enabled by default for the current locale',\n DEFAULT: 'The funding source is enabled by default for all users',\n REMEMBERED: 'The funding source was remembered for the current user',\n NEED_OPT_IN: 'The funding source needs to be allowed in funding.allowed',\n COMMIT_NOT_SET: 'The funding source is not enabled when commit is not set as true',\n INVALID_ENV: 'The funding source is not supported in this environment'\n};\n\nexport const CARD_PRIORITY = [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.DISCOVER,\n CARD.SWITCH,\n CARD.MAESTRO,\n CARD.HIPER,\n CARD.ELO,\n CARD.JCB,\n CARD.CUP,\n CARD.COFINOGA,\n CARD.COFIDIS,\n CARD.CETELEM,\n CARD.CBNATIONALE\n];\n","/* @flow */\n\nexport const ENV = {\n LOCAL: 'local',\n STAGE: 'stage',\n SANDBOX: 'sandbox',\n PRODUCTION: 'production',\n TEST: 'test',\n DEMO: 'demo'\n};\n\nexport const USERS = {\n ALL: 'all',\n REMEMBERED: 'remembered'\n};\n\nexport const SOURCE = {\n MANUAL: 'manual',\n BUTTON_FACTORY: 'button_factory'\n};\n\nexport const LOG_LEVEL = {\n DEBUG: 'debug',\n INFO: 'info',\n WARN: 'warn',\n ERROR: 'error'\n};\n\nexport const PAYMENT_TYPE = {\n EC_TOKEN: 'ec_token',\n BA_TOKEN: 'ba_token',\n PAY_ID: 'pay_id'\n};\n\nexport const PPTM_ID = 'xo-pptm';\n\nexport const ATTRIBUTE = {\n BUTTON: 'data-button',\n FUNDING_SOURCE: 'data-funding-source',\n CARD: 'data-card',\n VERSION: 'data-version',\n LAYOUT: 'data-layout',\n SIZE: 'data-size'\n};\n\nexport const PLATFORM = {\n DESKTOP: 'desktop',\n MOBILE: 'mobile'\n};\n\nexport const DEFAULT = 'default';\n\n\n","/* @flow */\n\nimport { PAYMENT_TYPE } from './misc';\n\nexport const FPTI = {\n\n KEY: {\n FEED: 'feed_name',\n STATE: 'state_name',\n TRANSITION: 'transition_name',\n BUTTON_TYPE: 'button_type',\n SESSION_UID: 'page_session_id',\n BUTTON_SESSION_UID: 'button_session_id',\n TOKEN: 'token',\n CONTEXT_ID: 'context_id',\n CONTEXT_TYPE: 'context_type',\n REFERER: 'referer_url',\n PAY_ID: 'pay_id',\n SELLER_ID: 'seller_id',\n DATA_SOURCE: 'serverside_data_source',\n BUTTON_SOURCE: 'button_source',\n ERROR_CODE: 'ext_error_code',\n ERROR_DESC: 'ext_error_desc',\n PAGE_LOAD_TIME: 'page_load_time',\n EXPERIMENT_NAME: 'pxp_exp_id',\n TREATMENT_NAME: 'pxp_trtmnt_id',\n TRANSITION_TIME: 'transition_time',\n FUNDING_LIST: 'eligible_payment_methods',\n FUNDING_COUNT: 'eligible_payment_count',\n CHOSEN_FUNDING: 'selected_payment_method',\n BUTTON_LAYOUT: 'button_layout',\n BUTTON_COLOR: 'button_color',\n BUTTON_SIZE: 'button_size',\n BUTTON_SHAPE: 'button_shape',\n BUTTON_LABEL: 'button_label',\n BUTTON_WIDTH: 'button_width',\n VERSION: 'checkoutjs_version',\n MAX_BUTTONS: 'max_buttons',\n FUNDING_REMEMBERED: 'funding_remembered',\n BUTTON_TAGLINE_ENABLED: 'button_tagline_enabled',\n RESPONSE_DURATION: 'response_duration',\n PAYMENT_FLOW: 'payment_flow',\n BUTTON_VERSION: 'button_version'\n },\n\n BUTTON_TYPE: {\n IFRAME: 'iframe',\n HTML: 'html',\n CUSTOM: 'custom'\n },\n\n DATA_SOURCE: {\n CHECKOUT: 'checkout'\n },\n\n CONTEXT_TYPE: {\n BUTTON_SESSION_ID: 'button_session_id',\n [ PAYMENT_TYPE.PAY_ID ]: 'Pay-ID',\n [ PAYMENT_TYPE.EC_TOKEN ]: 'EC-Token',\n [ PAYMENT_TYPE.BA_TOKEN ]: 'EC-Token'\n },\n\n FEED: {\n CHECKOUTJS: 'checkoutjs'\n },\n\n STATE: {\n LOAD: 'checkoutjs_load',\n BUTTON: 'checkoutjs_button',\n CHECKOUT: 'checkoutjs_checkout',\n PPTM: 'checkoutjs_pptm'\n },\n\n TRANSITION: {\n SCRIPT_LOAD: 'process_script_load',\n\n BUTTON_RENDER: 'process_button_render',\n BUTTON_LOAD: 'process_button_load',\n BUTTON_CLICK: 'process_button_click',\n\n BUTTON_RENDER_INTRANET_MODE: 'process_button_render_intranet_mode',\n BUTTON_CLICK_INTRANET_MODE: 'process_button_click_intranet_mode',\n\n CREATE_PAYMENT: 'process_create_payment',\n RECIEVE_PAYMENT: 'process_recieve_payment',\n\n CHECKOUT_INIT: 'process_checkout_init',\n CHECKOUT_AUTHORIZE: 'process_checkout_authorize',\n CHECKOUT_SHIPPING_CHANGE: 'process_checkout_shipping_change',\n CHECKOUT_CANCEL: 'process_checkout_cancel',\n CHECKOUT_ERROR: 'process_checkout_error',\n\n EXTERNAL_EXPERIMENT: 'process_external_experiment',\n EXTERNAL_EXPERIMENT_COMPLETE: 'process_external_experiment_complete',\n\n PPTM_LOAD: 'process_pptm_load',\n PPTM_LOADED: 'process_pptm_loaded'\n }\n};\n","/* @flow */\n\nexport const COUNTRY = {\n AD: 'AD',\n AE: 'AE',\n AG: 'AG',\n AI: 'AI',\n AL: 'AL',\n AM: 'AM',\n AN: 'AN',\n AO: 'AO',\n AR: 'AR',\n AT: 'AT',\n AU: 'AU',\n AW: 'AW',\n AZ: 'AZ',\n BA: 'BA',\n BB: 'BB',\n BE: 'BE',\n BF: 'BF',\n BG: 'BG',\n BH: 'BH',\n BI: 'BI',\n BJ: 'BJ',\n BM: 'BM',\n BN: 'BN',\n BO: 'BO',\n BR: 'BR',\n BS: 'BS',\n BT: 'BT',\n BW: 'BW',\n BY: 'BY',\n BZ: 'BZ',\n C2: 'C2',\n CA: 'CA',\n CD: 'CD',\n CG: 'CG',\n CH: 'CH',\n CI: 'CI',\n CK: 'CK',\n CL: 'CL',\n CM: 'CM',\n CN: 'CN',\n CO: 'CO',\n CR: 'CR',\n CV: 'CV',\n CY: 'CY',\n CZ: 'CZ',\n DE: 'DE',\n DJ: 'DJ',\n DK: 'DK',\n DM: 'DM',\n DO: 'DO',\n DZ: 'DZ',\n EC: 'EC',\n EE: 'EE',\n EG: 'EG',\n ER: 'ER',\n ES: 'ES',\n ET: 'ET',\n FI: 'FI',\n FJ: 'FJ',\n FK: 'FK',\n FM: 'FM',\n FO: 'FO',\n FR: 'FR',\n GA: 'GA',\n GB: 'GB',\n GD: 'GD',\n GE: 'GE',\n GF: 'GF',\n GI: 'GI',\n GL: 'GL',\n GM: 'GM',\n GN: 'GN',\n GP: 'GP',\n GR: 'GR',\n GT: 'GT',\n GW: 'GW',\n GY: 'GY',\n HK: 'HK',\n HN: 'HN',\n HR: 'HR',\n HU: 'HU',\n ID: 'ID',\n IE: 'IE',\n IL: 'IL',\n IN: 'IN',\n IS: 'IS',\n IT: 'IT',\n JM: 'JM',\n JO: 'JO',\n JP: 'JP',\n KE: 'KE',\n KG: 'KG',\n KH: 'KH',\n KI: 'KI',\n KM: 'KM',\n KN: 'KN',\n KR: 'KR',\n KW: 'KW',\n KY: 'KY',\n KZ: 'KZ',\n LA: 'LA',\n LC: 'LC',\n LI: 'LI',\n LK: 'LK',\n LS: 'LS',\n LT: 'LT',\n LU: 'LU',\n LV: 'LV',\n MA: 'MA',\n MC: 'MC',\n MD: 'MD',\n ME: 'ME',\n MG: 'MG',\n MH: 'MH',\n MK: 'MK',\n ML: 'ML',\n MN: 'MN',\n MQ: 'MQ',\n MR: 'MR',\n MS: 'MS',\n MT: 'MT',\n MU: 'MU',\n MV: 'MV',\n MW: 'MW',\n MX: 'MX',\n MY: 'MY',\n MZ: 'MZ',\n NA: 'NA',\n NC: 'NC',\n NE: 'NE',\n NF: 'NF',\n NG: 'NG',\n NI: 'NI',\n NL: 'NL',\n NO: 'NO',\n NP: 'NP',\n NR: 'NR',\n NU: 'NU',\n NZ: 'NZ',\n OM: 'OM',\n PA: 'PA',\n PE: 'PE',\n PF: 'PF',\n PG: 'PG',\n PH: 'PH',\n PL: 'PL',\n PM: 'PM',\n PN: 'PN',\n PT: 'PT',\n PW: 'PW',\n PY: 'PY',\n QA: 'QA',\n RE: 'RE',\n RO: 'RO',\n RS: 'RS',\n RU: 'RU',\n RW: 'RW',\n SA: 'SA',\n SB: 'SB',\n SC: 'SC',\n SE: 'SE',\n SG: 'SG',\n SH: 'SH',\n SI: 'SI',\n SJ: 'SJ',\n SK: 'SK',\n SL: 'SL',\n SM: 'SM',\n SN: 'SN',\n SO: 'SO',\n SR: 'SR',\n ST: 'ST',\n SV: 'SV',\n SZ: 'SZ',\n TC: 'TC',\n TD: 'TD',\n TG: 'TG',\n TH: 'TH',\n TJ: 'TJ',\n TM: 'TM',\n TN: 'TN',\n TO: 'TO',\n TR: 'TR',\n TT: 'TT',\n TV: 'TV',\n TW: 'TW',\n TZ: 'TZ',\n UA: 'UA',\n UG: 'UG',\n US: 'US',\n UY: 'UY',\n VA: 'VA',\n VC: 'VC',\n VE: 'VE',\n VG: 'VG',\n VN: 'VN',\n VU: 'VU',\n WF: 'WF',\n WS: 'WS',\n YE: 'YE',\n YT: 'YT',\n ZA: 'ZA',\n ZM: 'ZM',\n ZW: 'ZW'\n};\n\nexport const LANG = {\n AR: 'ar',\n CS: 'cs',\n DA: 'da',\n DE: 'de',\n EL: 'el',\n EN: 'en',\n ES: 'es',\n FI: 'fi',\n FR: 'fr',\n HE: 'he',\n HU: 'hu',\n ID: 'id',\n IT: 'it',\n JA: 'ja',\n KO: 'ko',\n NL: 'nl',\n NO: 'no',\n PL: 'pl',\n PT: 'pt',\n RU: 'ru',\n SK: 'sk',\n SV: 'sv',\n TH: 'th',\n TR: 'tr',\n ZH: 'zh'\n};\n\nexport const LANG_TO_DEFAULT_COUNTRY = {\n [LANG.AR]: COUNTRY.SA,\n [LANG.CS]: COUNTRY.CZ,\n [LANG.DA]: COUNTRY.DK,\n [LANG.DE]: COUNTRY.DE,\n [LANG.EL]: COUNTRY.GR,\n [LANG.EN]: COUNTRY.US,\n [LANG.ES]: COUNTRY.ES,\n [LANG.FI]: COUNTRY.FI,\n [LANG.FR]: COUNTRY.FR,\n [LANG.HE]: COUNTRY.IL,\n [LANG.HU]: COUNTRY.HU,\n [LANG.ID]: COUNTRY.ID,\n [LANG.IT]: COUNTRY.IT,\n [LANG.JA]: COUNTRY.JP,\n [LANG.KO]: COUNTRY.KR,\n [LANG.NL]: COUNTRY.NL,\n [LANG.NO]: COUNTRY.NO,\n [LANG.PL]: COUNTRY.PL,\n [LANG.PT]: COUNTRY.PT,\n [LANG.RU]: COUNTRY.RU,\n [LANG.SK]: COUNTRY.SK,\n [LANG.SV]: COUNTRY.SE,\n [LANG.TH]: COUNTRY.TH,\n [LANG.TR]: COUNTRY.TR,\n [LANG.ZH]: COUNTRY.CN\n};\n\nexport const ALLOWED_INSTALLMENT_COUNTRIES = [ COUNTRY.BR, COUNTRY.MX ];\nexport const ALLOWED_INSTALLMENT_PERIOD = {\n BR: [ 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ],\n MX: [ 3, 6, 9, 12 ]\n};\n","/* @flow */\n\nimport { COUNTRY, LANG } from './country';\n\nexport const LOCALE = {\n [COUNTRY.AD]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AE]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH, LANG.AR ],\n [COUNTRY.AG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AI]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AL]: [ LANG.EN ],\n [COUNTRY.AM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AN]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AO]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AR]: [ LANG.ES, LANG.EN ],\n [COUNTRY.AT]: [ LANG.DE, LANG.EN ],\n [COUNTRY.AU]: [ LANG.EN ],\n [COUNTRY.AW]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BA]: [ LANG.EN ],\n [COUNTRY.BB]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BE]: [ LANG.EN, LANG.NL, LANG.FR ],\n [COUNTRY.BF]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.BG]: [ LANG.EN ],\n [COUNTRY.BH]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BI]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.BJ]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.BM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BN]: [ LANG.EN ],\n [COUNTRY.BO]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.BR]: [ LANG.PT, LANG.EN ],\n [COUNTRY.BS]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BT]: [ LANG.EN ],\n [COUNTRY.BW]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BY]: [ LANG.EN ],\n [COUNTRY.BZ]: [ LANG.EN, LANG.ES, LANG.FR, LANG.ZH ],\n [COUNTRY.C2]: [ LANG.ZH, LANG.EN ],\n [COUNTRY.CA]: [ LANG.EN, LANG.FR ],\n [COUNTRY.CD]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.CG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.CH]: [ LANG.DE, LANG.FR, LANG.EN ],\n [COUNTRY.CI]: [ LANG.FR, LANG.EN ],\n [COUNTRY.CK]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.CL]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.CM]: [ LANG.FR, LANG.EN ],\n [COUNTRY.CN]: [ LANG.ZH ],\n [COUNTRY.CO]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.CR]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.CV]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.CY]: [ LANG.EN ],\n [COUNTRY.CZ]: [ LANG.CS, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.DE]: [ LANG.DE, LANG.EN ],\n [COUNTRY.DJ]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.DK]: [ LANG.DA, LANG.EN ],\n [COUNTRY.DM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.DO]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.DZ]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.EC]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.EE]: [ LANG.EN, LANG.RU, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.EG]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ER]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ES]: [ LANG.ES, LANG.EN ],\n [COUNTRY.ET]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.FI]: [ LANG.FI, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.FJ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.FK]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.FM]: [ LANG.EN ],\n [COUNTRY.FO]: [ LANG.DA, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.FR]: [ LANG.FR, LANG.EN ],\n [COUNTRY.GA]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.GB]: [ LANG.EN ],\n [COUNTRY.GD]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GE]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GF]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GI]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GL]: [ LANG.DA, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GN]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.GP]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GR]: [ LANG.EL, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GT]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.GW]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GY]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.HK]: [ LANG.EN, LANG.ZH ],\n [COUNTRY.HN]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.HR]: [ LANG.EN ],\n [COUNTRY.HU]: [ LANG.HU, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ID]: [ LANG.ID, LANG.EN ],\n [COUNTRY.IE]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.IL]: [ LANG.HE, LANG.EN ],\n [COUNTRY.IN]: [ LANG.EN ],\n [COUNTRY.IS]: [ LANG.EN ],\n [COUNTRY.IT]: [ LANG.IT, LANG.EN ],\n [COUNTRY.JM]: [ LANG.EN, LANG.ES, LANG.FR, LANG.ZH ],\n [COUNTRY.JO]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.JP]: [ LANG.JA, LANG.EN ],\n [COUNTRY.KE]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KH]: [ LANG.EN ],\n [COUNTRY.KI]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KM]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.KN]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KR]: [ LANG.KO, LANG.EN ],\n [COUNTRY.KW]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KY]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LA]: [ LANG.EN ],\n [COUNTRY.LC]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LI]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LK]: [ LANG.EN ],\n [COUNTRY.LS]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LT]: [ LANG.EN, LANG.RU, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LU]: [ LANG.EN, LANG.DE, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LV]: [ LANG.EN, LANG.RU, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MA]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MC]: [ LANG.FR, LANG.EN ],\n [COUNTRY.MD]: [ LANG.EN ],\n [COUNTRY.ME]: [ LANG.EN ],\n [COUNTRY.MG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MH]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MK]: [ LANG.EN ],\n [COUNTRY.ML]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.MN]: [ LANG.EN ],\n [COUNTRY.MQ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MR]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MS]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MT]: [ LANG.EN ],\n [COUNTRY.MU]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MV]: [ LANG.EN ],\n [COUNTRY.MW]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MX]: [ LANG.ES, LANG.EN ],\n [COUNTRY.MY]: [ LANG.EN ],\n [COUNTRY.MZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NA]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NC]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NE]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.NF]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NG]: [ LANG.EN ],\n [COUNTRY.NI]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.NL]: [ LANG.NL, LANG.EN ],\n [COUNTRY.NO]: [ LANG.NO, LANG.EN ],\n [COUNTRY.NP]: [ LANG.EN ],\n [COUNTRY.NR]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NU]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.OM]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PA]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.PE]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.PF]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PH]: [ LANG.EN ],\n [COUNTRY.PL]: [ LANG.PL, LANG.EN ],\n [COUNTRY.PM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PN]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PT]: [ LANG.PT, LANG.EN ],\n [COUNTRY.PW]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PY]: [ LANG.ES, LANG.EN ],\n [COUNTRY.QA]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH, LANG.AR ],\n [COUNTRY.RE]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.RO]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.RS]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.RU]: [ LANG.RU, LANG.EN ],\n [COUNTRY.RW]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.SA]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SB]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SC]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.SE]: [ LANG.SV, LANG.EN ],\n [COUNTRY.SG]: [ LANG.EN ],\n [COUNTRY.SH]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SI]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SJ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SK]: [ LANG.SK, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SL]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SN]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.SO]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SR]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ST]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SV]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.SZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TC]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TD]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.TG]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.TH]: [ LANG.TH, LANG.EN ],\n [COUNTRY.TJ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TN]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TO]: [ LANG.EN ],\n [COUNTRY.TR]: [ LANG.TR, LANG.EN ],\n [COUNTRY.TT]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TV]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TW]: [ LANG.ZH, LANG.EN ],\n [COUNTRY.TZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.UA]: [ LANG.EN, LANG.RU, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.UG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.US]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.UY]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.VA]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.VC]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.VE]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.VG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.VN]: [ LANG.EN ],\n [COUNTRY.VU]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.WF]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.WS]: [ LANG.EN ],\n [COUNTRY.YE]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.YT]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ZA]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ZM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ZW]: [ LANG.EN ]\n};\n","/* @flow */\n\nexport * from './button';\nexport * from './checkout';\nexport * from './funding';\nexport * from './fpti';\nexport * from './country';\nexport * from './misc';\nexport * from './locale';\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { regexMap } from './util';\n\n// eslint-disable-next-line no-use-before-define\nexport type ChildType = $ReadOnlyArray | JsxHTMLNode | string | void | null;\nexport type ChildrenType = $ReadOnlyArray;\ntype PropsType = ?{ class? : string, id? : string, innerHTML? : string };\n\nfunction htmlEncode(html : string = '') : string {\n return html.toString()\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(/\\//g, '/');\n}\n\nexport class JsxHTMLNode {\n name : string\n props : PropsType\n children : ChildrenType\n\n constructor(name : string, props : PropsType, children : ChildrenType) {\n this.name = name;\n this.props = props;\n this.children = children;\n }\n\n toString() : string {\n return `<${ this.name }${ this.props ? ' ' : '' }${ this.props ? this.propsToString() : '' }>${ this.childrenToString() }`;\n }\n\n propsToString() : string {\n const props = this.props;\n\n if (!props) {\n return '';\n }\n\n return Object.keys(props).filter(key => {\n return key !== 'innerHTML' && props && props[key] !== false;\n }).map(key => {\n if (props && props[key] === true) {\n return `${ htmlEncode(key) }`;\n }\n return props ? `${ htmlEncode(key) }=\"${ htmlEncode(props[key]) }\"` : '';\n }).join(' ');\n }\n\n childrenToString() : string {\n\n if (this.props && this.props.innerHTML) {\n return this.props.innerHTML;\n }\n\n if (!this.children) {\n return '';\n }\n\n let result = '';\n\n function iterate(children) {\n for (const child of children) {\n\n if (child === null || child === undefined) {\n continue;\n }\n\n if (Array.isArray(child)) {\n iterate(child);\n } else if (child instanceof JsxHTMLNode) {\n result += child.toString();\n } else {\n result += htmlEncode(child);\n }\n }\n }\n\n iterate(this.children);\n\n return result;\n }\n}\n\nexport class JsxHTMLNodeContainer extends JsxHTMLNode {\n\n\n constructor(children : ChildrenType) {\n super('', {}, children);\n }\n\n toString() : string {\n return this.childrenToString();\n }\n}\n\nexport function jsxToHTML(name : string, props : PropsType, ...children : ChildrenType) : JsxHTMLNode {\n return new JsxHTMLNode(name, props, children);\n}\n\nexport function jsxRender(template : string, renderers : { [string] : (string) =>?(JsxHTMLNode | $ReadOnlyArray) }) : JsxHTMLNode {\n\n // eslint-disable-next-line security/detect-unsafe-regex, unicorn/no-unsafe-regex\n const nodes = regexMap(template, /\\{\\s*([a-z]+)(?::\\s*([^} ]+))?\\s*\\}|([^${}]+)/g, (match, type, value, text) => {\n if (type) {\n if (!renderers[type]) {\n throw new Error(`Can not render type: ${ type }`);\n }\n\n return renderers[type](value);\n } else if (text && text.trim()) {\n\n if (!renderers.text) {\n return text;\n }\n\n if ((/
/).test(text)) {\n return renderers.break(text);\n } else {\n return renderers.text(text);\n }\n } else {\n return text;\n }\n });\n\n return new JsxHTMLNodeContainer(nodes);\n}\n","/* @flow */\n\nexport function isPromise(item : mixed) : boolean {\n try {\n if (!item) {\n return false;\n }\n\n if (typeof Promise !== 'undefined' && item instanceof Promise) {\n return true;\n }\n\n if (typeof window !== 'undefined' && typeof window.Window === 'function' && item instanceof window.Window) {\n return false;\n }\n\n if (typeof window !== 'undefined' && typeof window.constructor === 'function' && item instanceof window.constructor) {\n return false;\n }\n\n let toString = ({}).toString;\n\n if (toString) {\n let name = toString.call(item);\n\n if (name === '[object Window]' || name === '[object global]' || name === '[object DOMWindow]') {\n return false;\n }\n }\n\n if (typeof item.then === 'function') {\n return true;\n }\n } catch (err) {\n return false;\n }\n\n return false;\n}\n","/* @flow */\n\nimport type { ZalgoPromise } from './promise';\n\nconst dispatchedErrors = [];\nconst possiblyUnhandledPromiseHandlers : Array<(mixed, promise? : ZalgoPromise) => void> = [];\n\nexport function dispatchPossiblyUnhandledError(err : mixed, promise : ZalgoPromise) {\n\n if (dispatchedErrors.indexOf(err) !== -1) {\n return;\n }\n\n dispatchedErrors.push(err);\n\n setTimeout(() => {\n if (__DEBUG__) {\n // $FlowFixMe\n throw new Error(`${ err.stack || err.toString() }\\n\\nFrom promise:\\n\\n${ promise.stack }`);\n }\n\n throw err;\n }, 1);\n\n for (let j = 0; j < possiblyUnhandledPromiseHandlers.length; j++) {\n // $FlowFixMe\n possiblyUnhandledPromiseHandlers[j](err, promise);\n }\n}\n\nexport function onPossiblyUnhandledException(handler : (mixed, promise? : ZalgoPromise) => void) : { cancel : () => void } {\n possiblyUnhandledPromiseHandlers.push(handler);\n\n return {\n cancel() {\n possiblyUnhandledPromiseHandlers.splice(possiblyUnhandledPromiseHandlers.indexOf(handler), 1);\n }\n };\n}\n","/* @flow */\n\nimport type { ZalgoPromise } from './promise';\n\nlet activeCount = 0;\nlet flushPromise;\n\nfunction flushActive() {\n if (!activeCount && flushPromise) {\n const promise = flushPromise;\n flushPromise = null;\n promise.resolve();\n }\n}\n\nexport function startActive() {\n activeCount += 1;\n}\n\nexport function endActive() {\n activeCount -= 1;\n flushActive();\n}\n\nexport function awaitActive(Zalgo : Class>) : ZalgoPromise { // eslint-disable-line no-undef\n let promise = flushPromise = flushPromise || new Zalgo();\n flushActive();\n return promise;\n}\n","/* @flow */\n\nimport { isPromise } from './utils';\nimport { onPossiblyUnhandledException, dispatchPossiblyUnhandledError } from './exceptions';\nimport { startActive, endActive, awaitActive } from './flush';\n\nexport class ZalgoPromise {\n\n resolved : boolean\n rejected : boolean\n errorHandled : boolean\n value : R\n error : mixed\n handlers : Array<{\n promise : ZalgoPromise<*>,\n onSuccess : void | (result : R) => mixed,\n onError : void | (error : mixed) => mixed\n }>\n dispatching : boolean\n stack : string\n\n constructor(handler : ?(resolve : (result : R) => void, reject : (error : mixed) => void) => void) {\n\n this.resolved = false;\n this.rejected = false;\n this.errorHandled = false;\n\n this.handlers = [];\n\n if (handler) {\n\n let result;\n let error;\n let resolved = false;\n let rejected = false;\n let isAsync = false;\n\n startActive();\n\n try {\n handler(res => {\n if (isAsync) {\n this.resolve(res);\n } else {\n resolved = true;\n result = res;\n }\n\n }, err => {\n if (isAsync) {\n this.reject(err);\n } else {\n rejected = true;\n error = err;\n }\n });\n\n } catch (err) {\n endActive();\n this.reject(err);\n return;\n }\n\n endActive();\n\n isAsync = true;\n\n if (resolved) {\n // $FlowFixMe\n this.resolve(result);\n } else if (rejected) {\n this.reject(error);\n }\n }\n\n if (__DEBUG__) {\n try {\n throw new Error(`ZalgoPromise`);\n } catch (err) {\n this.stack = err.stack;\n }\n }\n }\n\n resolve(result : R) : ZalgoPromise {\n if (this.resolved || this.rejected) {\n return this;\n }\n\n if (isPromise(result)) {\n throw new Error('Can not resolve promise with another promise');\n }\n\n this.resolved = true;\n this.value = result;\n this.dispatch();\n\n return this;\n }\n\n reject(error : mixed) : ZalgoPromise {\n if (this.resolved || this.rejected) {\n return this;\n }\n\n if (isPromise(error)) {\n throw new Error('Can not reject promise with another promise');\n }\n\n if (!error) {\n // $FlowFixMe\n let err = (error && typeof error.toString === 'function' ? error.toString() : Object.prototype.toString.call(error));\n error = new Error(`Expected reject to be called with Error, got ${ err }`);\n }\n\n this.rejected = true;\n this.error = error;\n\n if (!this.errorHandled) {\n setTimeout(() => {\n if (!this.errorHandled) {\n dispatchPossiblyUnhandledError(error, this);\n }\n }, 1);\n }\n\n this.dispatch();\n\n return this;\n }\n\n asyncReject(error : mixed) : ZalgoPromise {\n this.errorHandled = true;\n this.reject(error);\n return this;\n }\n \n dispatch() {\n\n let { dispatching, resolved, rejected, handlers } = this;\n\n if (dispatching) {\n return;\n }\n\n if (!resolved && !rejected) {\n return;\n }\n\n this.dispatching = true;\n startActive();\n\n const chain = (firstPromise : ZalgoPromise, secondPromise : ZalgoPromise) => {\n return firstPromise.then(res => {\n secondPromise.resolve(res);\n }, err => {\n secondPromise.reject(err);\n });\n };\n\n for (let i = 0; i < handlers.length; i++) {\n\n let { onSuccess, onError, promise } = handlers[i];\n\n let result;\n\n if (resolved) {\n\n try {\n result = onSuccess ? onSuccess(this.value) : this.value;\n } catch (err) {\n promise.reject(err);\n continue;\n }\n\n } else if (rejected) {\n\n if (!onError) {\n promise.reject(this.error);\n continue;\n }\n\n try {\n result = onError(this.error);\n } catch (err) {\n promise.reject(err);\n continue;\n }\n }\n\n if (result instanceof ZalgoPromise && (result.resolved || result.rejected)) {\n\n if (result.resolved) {\n promise.resolve(result.value);\n } else {\n promise.reject(result.error);\n }\n\n result.errorHandled = true;\n\n } else if (isPromise(result)) {\n\n if (result instanceof ZalgoPromise && (result.resolved || result.rejected)) {\n if (result.resolved) {\n promise.resolve(result.value);\n } else {\n promise.reject(result.error);\n }\n\n } else {\n // $FlowFixMe\n chain(result, promise);\n }\n\n } else {\n\n promise.resolve(result);\n }\n }\n\n handlers.length = 0;\n this.dispatching = false;\n endActive();\n }\n\n then(onSuccess : void | (result : R) => (ZalgoPromise | Y), onError : void | (error : mixed) => (ZalgoPromise | Y)) : ZalgoPromise {\n\n if (onSuccess && typeof onSuccess !== 'function' && !onSuccess.call) {\n throw new Error('Promise.then expected a function for success handler');\n }\n\n if (onError && typeof onError !== 'function' && !onError.call) {\n throw new Error('Promise.then expected a function for error handler');\n }\n\n let promise : ZalgoPromise = new ZalgoPromise();\n\n this.handlers.push({\n promise,\n onSuccess,\n onError\n });\n\n this.errorHandled = true;\n\n this.dispatch();\n\n return promise;\n }\n\n catch(onError : (error : mixed) => ZalgoPromise | Y) : ZalgoPromise {\n return this.then(undefined, onError);\n }\n\n finally(onFinally : () => mixed) : ZalgoPromise {\n\n if (onFinally && typeof onFinally !== 'function' && !onFinally.call) {\n throw new Error('Promise.finally expected a function');\n }\n\n return this.then((result) => {\n return ZalgoPromise.try(onFinally)\n .then(() => {\n return result;\n });\n }, (err) => {\n return ZalgoPromise.try(onFinally)\n .then(() => {\n throw err;\n });\n });\n }\n\n timeout(time : number, err : ?Error) : ZalgoPromise {\n\n if (this.resolved || this.rejected) {\n return this;\n }\n\n let timeout = setTimeout(() => {\n\n if (this.resolved || this.rejected) {\n return;\n }\n\n this.reject(err || new Error(`Promise timed out after ${ time }ms`));\n\n }, time);\n\n return this.then(result => {\n clearTimeout(timeout);\n return result;\n });\n }\n\n // $FlowFixMe\n toPromise() : Promise {\n // $FlowFixMe\n if (typeof Promise === 'undefined') {\n throw new TypeError(`Could not find Promise`);\n }\n // $FlowFixMe\n return Promise.resolve(this); // eslint-disable-line compat/compat\n }\n\n static resolve(value : X | ZalgoPromise) : ZalgoPromise {\n\n if (value instanceof ZalgoPromise) {\n return value;\n }\n\n if (isPromise(value)) {\n // $FlowFixMe\n return new ZalgoPromise((resolve, reject) => value.then(resolve, reject));\n }\n\n return new ZalgoPromise().resolve(value);\n }\n\n static reject(error : mixed) : ZalgoPromise {\n return new ZalgoPromise().reject(error);\n }\n\n static asyncReject(error : mixed) : ZalgoPromise {\n return new ZalgoPromise().asyncReject(error);\n }\n\n static all>(promises : X) : ZalgoPromise<$TupleMap(ZalgoPromise | Y) => Y>> { // eslint-disable-line no-undef\n\n let promise = new ZalgoPromise();\n let count = promises.length;\n let results = [];\n\n if (!count) {\n promise.resolve(results);\n return promise;\n }\n\n const chain = (i : number, firstPromise : ZalgoPromise, secondPromise : ZalgoPromise) => {\n return firstPromise.then(res => {\n results[i] = res;\n count -= 1;\n if (count === 0) {\n promise.resolve(results);\n }\n }, err => {\n secondPromise.reject(err);\n });\n };\n\n for (let i = 0; i < promises.length; i++) {\n let prom = promises[i];\n\n if (prom instanceof ZalgoPromise) {\n if (prom.resolved) {\n results[i] = prom.value;\n count -= 1;\n continue;\n }\n } else if (!isPromise(prom)) {\n results[i] = prom;\n count -= 1;\n continue;\n }\n\n chain(i, ZalgoPromise.resolve(prom), promise);\n }\n\n if (count === 0) {\n promise.resolve(results);\n }\n\n return promise;\n }\n\n static hash(promises : O) : ZalgoPromise<$ObjMap(ZalgoPromise | Y) => Y>> { // eslint-disable-line no-undef\n let result = {};\n \n return ZalgoPromise.all(Object.keys(promises).map(key => {\n return ZalgoPromise.resolve(promises[key]).then(value => {\n result[key] = value;\n });\n })).then(() => {\n return result;\n });\n }\n\n static map(items : Array, method : (T) => (ZalgoPromise | X)) : ZalgoPromise> {\n // $FlowFixMe\n return ZalgoPromise.all(items.map(method));\n }\n\n static onPossiblyUnhandledException(handler : (err : mixed) => void) : { cancel : () => void } {\n return onPossiblyUnhandledException(handler);\n }\n\n static try>(method : (...args : A) => (ZalgoPromise | Y), context : ?C, args : ?A) : ZalgoPromise {\n\n if (method && typeof method !== 'function' && !method.call) {\n throw new Error('Promise.try expected a function');\n }\n\n let result;\n\n startActive();\n \n try {\n // $FlowFixMe\n result = method.apply(context, args || []);\n } catch (err) {\n endActive();\n return ZalgoPromise.reject(err);\n }\n\n endActive();\n\n return ZalgoPromise.resolve(result);\n }\n\n static delay(delay : number) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n setTimeout(resolve, delay);\n });\n }\n\n static isPromise(value : mixed) : boolean {\n\n if (value && value instanceof ZalgoPromise) {\n return true;\n }\n\n return isPromise(value);\n }\n\n static flush() : ZalgoPromise {\n return awaitActive(ZalgoPromise);\n }\n}\n","/* @flow */\n\nexport { ZalgoPromise } from './promise';\n","/* @flow */\n\nimport { on, send } from 'post-robot/src';\nimport { isWindowClosed, getDomain, isSameDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { config } from '../config';\n\nimport { noop } from './util';\n\nexport function proxyMethod(name : string, win : ?CrossDomainWindowType, originalMethod : Function) : Function {\n\n if (win && getDomain() === config.paypalDomain && !isSameDomain(win)) {\n\n if (win) {\n send(win, `proxy_${ name }`, { originalMethod }).catch(noop);\n }\n\n return originalMethod;\n }\n\n let methods = [];\n\n on(`proxy_${ name }`, { domain: config.paypal_domain_regex }, ({ data }) => {\n methods.push(data.originalMethod);\n });\n\n return function postMessageProxy() : mixed {\n\n methods = methods.filter(method => !isWindowClosed(method.source));\n\n if (methods.length) {\n return methods[methods.length - 1].apply(this, arguments).catch(() => {\n return originalMethod.apply(this, arguments);\n });\n }\n\n return originalMethod.apply(this, arguments);\n };\n}\n","/* @flow */\n\nimport { CONFIG as POSTROBOT_CONFIG } from 'post-robot/src';\nimport { setTransport, getTransport, addPayloadBuilder, addHeaderBuilder, addMetaBuilder,\n addTrackingBuilder, init, logLevels, config as loggerConfig } from 'beaver-logger/client';\nimport { getParent, PROTOCOL } from 'cross-domain-utils/src';\n\nimport { config } from '../config';\nimport { FPTI, PAYMENT_TYPE } from '../constants';\n\nimport { getSessionID, getButtonSessionID } from './session';\nimport { proxyMethod } from './proxy';\nimport { once } from './util';\nimport { getQueryParam } from './dom';\nimport { isPayPalDomain } from './security';\n\nfunction getRefererDomain() : string {\n return (window.xchild && window.xchild.getParentDomain)\n ? window.xchild.getParentDomain()\n : window.location.host;\n}\n\nconst setupProxyLogTransport = once(() => {\n setTransport(proxyMethod('log', getParent(window), getTransport()));\n});\n\nfunction getToken() : ?string {\n if (window.root && window.root.token) {\n return window.root.token;\n }\n\n if (isPayPalDomain()) {\n const queryToken = getQueryParam('token');\n\n if (queryToken) {\n return queryToken;\n }\n }\n}\n\nexport function initLogger() {\n\n setupProxyLogTransport();\n\n addPayloadBuilder(() => {\n return {\n referer: getRefererDomain(),\n host: window.location.host,\n path: window.location.pathname,\n env: config.env,\n country: config.locale.country,\n lang: config.locale.lang,\n uid: getSessionID(),\n ver: __PAYPAL_CHECKOUT__.__MINOR_VERSION__\n };\n });\n\n addHeaderBuilder(() => {\n return {\n 'x-app-name': 'checkoutjs'\n };\n });\n\n addMetaBuilder(() => {\n return {\n state: config.state\n };\n });\n\n addTrackingBuilder((payload = {}) => {\n\n const sessionID = getSessionID();\n const paymentToken = getToken();\n const buttonSessionID = payload[FPTI.KEY.BUTTON_SESSION_UID] || getButtonSessionID();\n\n let contextType;\n let contextID;\n\n if (paymentToken) {\n contextType = FPTI.CONTEXT_TYPE[PAYMENT_TYPE.EC_TOKEN];\n contextID = paymentToken;\n } else if (buttonSessionID) {\n contextType = FPTI.CONTEXT_TYPE.BUTTON_SESSION_ID;\n contextID = buttonSessionID;\n } else {\n contextType = payload[FPTI.KEY.CONTEXT_TYPE];\n contextID = payload[FPTI.KEY.CONTEXT_ID];\n }\n\n return {\n [ FPTI.KEY.FEED ]: FPTI.FEED.CHECKOUTJS,\n [ FPTI.KEY.DATA_SOURCE ]: FPTI.DATA_SOURCE.CHECKOUT,\n [ FPTI.KEY.CONTEXT_TYPE ]: contextType,\n [ FPTI.KEY.CONTEXT_ID ]: contextID,\n [ FPTI.KEY.SELLER_ID ]: config.merchantID,\n [ FPTI.KEY.SESSION_UID ]: sessionID,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: buttonSessionID,\n [ FPTI.KEY.VERSION ]: config.version,\n [ FPTI.KEY.TOKEN ]: paymentToken,\n [ FPTI.KEY.REFERER ]: getRefererDomain()\n };\n });\n\n const prefix = 'ppxo';\n\n if (window.location.protocol !== PROTOCOL.FILE) {\n init({\n uri: config.loggerUrl,\n heartbeat: false,\n logPerformance: false,\n prefix,\n logLevel: __PAYPAL_CHECKOUT__.__DEFAULT_LOG_LEVEL__\n });\n }\n}\n\nexport function setLogLevel(logLevel : string) {\n\n if (logLevels.indexOf(logLevel) === -1) {\n throw new Error(`Invalid logLevel: ${ logLevel }`);\n }\n\n config.logLevel = logLevel;\n loggerConfig.logLevel = logLevel;\n POSTROBOT_CONFIG.LOG_LEVEL = logLevel;\n window.LOG_LEVEL = logLevel;\n}\n","/* @flow */\n\nimport { info, flush as flushLogs } from 'beaver-logger/client';\n\nimport { config } from '../config';\n\nimport { isIEIntranet, getUserAgent } from './device';\nimport { once } from './util';\n\nconst bowserCache = {};\n\nfunction getBowser() : Object {\n\n const userAgent = getUserAgent();\n\n if (bowserCache[userAgent]) {\n return bowserCache[userAgent];\n }\n\n delete require.cache[require.resolve('bowser/bowser.min')];\n const bowser = require('bowser/bowser.min');\n\n bowserCache[userAgent] = bowser;\n\n return bowser;\n}\n\nexport function getBrowser() : { browser? : string, version? : string } {\n\n const bowser = getBowser();\n\n for (const browser of Object.keys(config.SUPPORTED_BROWSERS)) {\n if (bowser[browser]) {\n return { browser, version: bowser.version };\n }\n }\n\n return {};\n}\n\nfunction isBrowserEligible() : boolean {\n\n if (isIEIntranet()) {\n return false;\n }\n\n const bowser = getBowser();\n const { browser, version } = getBrowser();\n\n if (browser && version && bowser.compareVersions([ version, config.SUPPORTED_BROWSERS[browser] ]) === -1) {\n return false;\n }\n\n return true;\n}\n\nconst eligibilityResults = {};\n\nexport function isEligible() : boolean {\n\n if (isIEIntranet()) {\n return false;\n }\n\n const userAgent = window.navigator.userAgent;\n\n if (userAgent && eligibilityResults.hasOwnProperty(userAgent)) {\n return eligibilityResults[userAgent];\n }\n\n const result = isBrowserEligible();\n\n eligibilityResults[userAgent] = result;\n\n return result;\n}\n\nexport const checkRecognizedBrowser = once((state : string) => {\n\n const { browser } = getBrowser();\n\n if (!browser) {\n const { name, version, mobile, android, ios } = getBowser();\n info(`unrecognized_browser_${ state }`, { name, version, mobile, android, ios });\n flushLogs();\n }\n});\n","/* @flow */\n\nimport { warn } from 'beaver-logger/client';\n\nimport { isIE, isIEIntranet, isIECompHeader } from './device';\n\nfunction logWarn(err) : void {\n if (window.console) {\n if (window.console.warn) {\n return window.console.warn(err);\n }\n\n if (window.console.log) {\n return window.console.log(err);\n }\n }\n}\n\nexport function checkForCommonErrors() {\n\n if (JSON.stringify([]) !== '[]') {\n // $FlowFixMe\n if (Array.prototype.toJSON) {\n logWarn(`Custom Array.prototype.toJSON is causing incorrect json serialization of arrays. This is likely to cause issues. Probable cause is Prototype.js`);\n } else {\n logWarn(`JSON.stringify is doing incorrect serialization of arrays. This is likely to cause issues.`);\n }\n\n warn(`json_stringify_array_broken`);\n }\n\n if (JSON.stringify({}) !== '{}') {\n logWarn(`JSON.stringify is doing incorrect serialization of objects. This is likely to cause issues.`);\n\n warn(`json_stringify_object_broken`);\n }\n\n if (isIEIntranet()) {\n warn(`ie_intranet_mode`);\n }\n\n if (isIE() && !isIECompHeader()) {\n warn(`ie_meta_compatibility_header_missing`, {\n message: `Drop tag: ` });\n }\n\n // eslint-disable-next-line no-unused-vars\n function foo(bar, baz, zomg) {\n // pass;\n }\n\n if (foo.bind({ a: 1 }).length !== 3) {\n warn(`function_bind_arrity_overwritten`);\n }\n\n if (window.opener && window.parent !== window) {\n warn(`window_has_opener_and_parent`);\n }\n\n if (window.name && window.name.indexOf('__prerender') === 0) {\n warn(`prerender_running_checkoutjs`);\n }\n\n const context = {};\n\n function returnContext() : typeof context {\n return this;\n }\n\n if (returnContext.bind(context)() !== context) {\n warn(`function_bind_broken`);\n }\n\n if (window.Window && window.constructor && window.Window !== window.constructor) {\n warn(`window_constructor_does_not_match_window`);\n }\n\n // $FlowFixMe\n if (Object.assign && JSON.stringify({ a: 1, b: 2, c: 3 }) !== JSON.stringify({ a: 1, b: 2, c: 3 })) { // eslint-disable-line no-self-compare, compat/compat\n warn(`object_assign_broken`);\n }\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { addPayloadBuilder } from 'beaver-logger/client';\nimport { type SameDomainWindowType } from 'cross-domain-utils/src';\n\ntype RequestOptionsType = {|\n url : string,\n method? : string,\n headers? : { [key : string] : string },\n json? : Object,\n data? : { [key : string] : string },\n body? : string,\n win? : SameDomainWindowType,\n timeout? : number\n|};\n\nconst HEADERS = {\n CONTENT_TYPE: 'content-type',\n ACCEPT: 'accept'\n};\n\nconst headerBuilders = [];\nconst corrids = [];\n\naddPayloadBuilder(() => {\n return {\n prev_corr_ids: corrids.join(',')\n };\n});\n\nfunction parseHeaders(rawHeaders : string = '') : { [string] : string } {\n const result = {};\n for (const line of rawHeaders.trim().split('\\n')) {\n const [ key, ...values ] = line.split(':');\n result[key.toLowerCase()] = values.join(':').trim();\n }\n return result;\n}\n\nexport function request({ url, method = 'get', headers = {}, json, data, body, win = window, timeout = 0 } : RequestOptionsType) : ZalgoPromise {\n\n if (url === '/demo/checkout/api/braintree/client-token/') {\n // $FlowFixMe\n return ZalgoPromise.resolve('eyJ2ZXJzaW9uIjoyLCJhdXRob3JpemF0aW9uRmluZ2VycHJpbnQiOiJjMDFhZmRkM2Y1OTJmNWVhNTNlMzE5MWQwYmIyMWVjYjM5NzNlZGM1MzkwNDZiMjJmNTA2ODEyNzIzZmRlMTJifGNsaWVudF9pZD1jbGllbnRfaWQkc2FuZGJveCQ0ZHByYmZjNnBoNTk1Y2NqXHUwMDI2Y3JlYXRlZF9hdD0yMDE3LTA0LTI2VDIzOjI2OjU5Ljg3OTA3ODYwNiswMDAwXHUwMDI2bWVyY2hhbnRfaWQ9M3cydHR2d2QyNDY1NDhoZCIsImNvbmZpZ1VybCI6Imh0dHBzOi8vYXBpLnNhbmRib3guYnJhaW50cmVlZ2F0ZXdheS5jb206NDQzL21lcmNoYW50cy8zdzJ0dHZ3ZDI0NjU0OGhkL2NsaWVudF9hcGkvdjEvY29uZmlndXJhdGlvbiIsImNoYWxsZW5nZXMiOltdLCJlbnZpcm9ubWVudCI6InNhbmRib3giLCJjbGllbnRBcGlVcmwiOiJodHRwczovL2FwaS5zYW5kYm94LmJyYWludHJlZWdhdGV3YXkuY29tOjQ0My9tZXJjaGFudHMvM3cydHR2d2QyNDY1NDhoZC9jbGllbnRfYXBpIiwiYXNzZXRzVXJsIjoiaHR0cHM6Ly9hc3NldHMuYnJhaW50cmVlZ2F0ZXdheS5jb20iLCJhdXRoVXJsIjoiaHR0cHM6Ly9hdXRoLnZlbm1vLnNhbmRib3guYnJhaW50cmVlZ2F0ZXdheS5jb20iLCJhbmFseXRpY3MiOnsidXJsIjoiaHR0cHM6Ly9jbGllbnQtYW5hbHl0aWNzLnNhbmRib3guYnJhaW50cmVlZ2F0ZXdheS5jb20vM3cydHR2d2QyNDY1NDhoZCJ9LCJ0aHJlZURTZWN1cmVFbmFibGVkIjpmYWxzZSwicGF5cGFsRW5hYmxlZCI6dHJ1ZSwicGF5cGFsIjp7ImRpc3BsYXlOYW1lIjoiYmFyY28uMDMtZmFjaWxpdGF0b3JAZ21haWwuY29tIiwiY2xpZW50SWQiOiJBV3VZdnFnMGtaN2Y5S0V4TVpqZU53T3RjQV8yZVhnOWpMZy1QSnBGX0pnYk44M0YyVml5aEdnV2JCNDg4RGU3MFpucGRBZEI2TUNqekNqSyIsInByaXZhY3lVcmwiOiJodHRwczovL2V4YW1wbGUuY29tIiwidXNlckFncmVlbWVudFVybCI6Imh0dHBzOi8vZXhhbXBsZS5jb20iLCJiYXNlVXJsIjoiaHR0cHM6Ly9hc3NldHMuYnJhaW50cmVlZ2F0ZXdheS5jb20iLCJhc3NldHNVcmwiOiJodHRwczovL2NoZWNrb3V0LnBheXBhbC5jb20iLCJkaXJlY3RCYXNlVXJsIjpudWxsLCJhbGxvd0h0dHAiOnRydWUsImVudmlyb25tZW50Tm9OZXR3b3JrIjpmYWxzZSwiZW52aXJvbm1lbnQiOiJvZmZsaW5lIiwidW52ZXR0ZWRNZXJjaGFudCI6ZmFsc2UsImJyYWludHJlZUNsaWVudElkIjoibWFzdGVyY2xpZW50MyIsImJpbGxpbmdBZ3JlZW1lbnRzRW5hYmxlZCI6dHJ1ZSwibWVyY2hhbnRBY2NvdW50SWQiOiJVU0QiLCJjdXJyZW5jeUlzb0NvZGUiOiJVU0QifSwiY29pbmJhc2VFbmFibGVkIjpmYWxzZSwibWVyY2hhbnRJZCI6IjN3MnR0dndkMjQ2NTQ4aGQiLCJ2ZW5tbyI6Im9mZiJ9');\n }\n\n return new ZalgoPromise((resolve, reject) => {\n\n if ((json && data) || (json && body) || (data && json)) {\n throw new Error(`Only options.json or options.data or options.body should be passed`);\n }\n\n const normalizedHeaders = {};\n\n for (const key of Object.keys(headers)) {\n normalizedHeaders[key.toLowerCase()] = headers[key];\n }\n\n if (json) {\n normalizedHeaders[HEADERS.CONTENT_TYPE] = normalizedHeaders[HEADERS.CONTENT_TYPE] || 'application/json';\n } else if (data || body) {\n normalizedHeaders[HEADERS.CONTENT_TYPE] = normalizedHeaders[HEADERS.CONTENT_TYPE] || 'application/x-www-form-urlencoded; charset=utf-8';\n }\n\n normalizedHeaders[HEADERS.ACCEPT] = normalizedHeaders[HEADERS.ACCEPT] || 'application/json';\n\n for (const headerBuilder of headerBuilders) {\n const builtHeaders = headerBuilder();\n\n for (const key of Object.keys(builtHeaders)) {\n normalizedHeaders[key.toLowerCase()] = builtHeaders[key];\n }\n }\n\n const xhr = new win.XMLHttpRequest();\n\n xhr.addEventListener('load', function xhrLoad() : void {\n\n const responseHeaders = parseHeaders(this.getAllResponseHeaders());\n const corrID = responseHeaders['paypal-debug-id'] || 'unknown';\n\n if (responseHeaders['paypal-debug-id']) {\n corrids.push(responseHeaders['paypal-debug-id']);\n }\n\n if (!this.status) {\n return reject(new Error(`Request to ${ method.toLowerCase() } ${ url } failed: no response status code. Correlation id: ${ corrID }`));\n }\n \n const contentType = responseHeaders['content-type'];\n const isJSON = contentType && (contentType.indexOf('application/json') === 0 || contentType.indexOf('text/json') === 0);\n let res = this.responseText;\n\n try {\n res = JSON.parse(this.responseText);\n } catch (err) {\n if (isJSON) {\n return reject(new Error(`Invalid json: ${ this.responseText }. Correlation id: ${ corrID }`));\n }\n }\n\n if (this.status >= 400) {\n let message = `Request to ${ method.toLowerCase() } ${ url } failed with ${ this.status } error. Correlation id: ${ corrID }`;\n\n if (res) {\n if (typeof res === 'object' && res !== null) {\n res = JSON.stringify(res, null, 4);\n }\n\n message = `${ message }\\n\\n${ res }\\n`;\n }\n\n return reject(new Error(message));\n }\n\n return resolve(res);\n\n }, false);\n\n xhr.addEventListener('error', function xhrError(evt) {\n const corrID = this.getResponseHeader('paypal-debug-id');\n reject(new Error(`Request to ${ method.toLowerCase() } ${ url } failed: ${ evt.toString() }. Correlation id: ${ corrID }`));\n }, false);\n\n xhr.open(method, url, true);\n\n for (const key in normalizedHeaders) {\n if (normalizedHeaders.hasOwnProperty(key)) {\n xhr.setRequestHeader(key, normalizedHeaders[key]);\n }\n }\n\n if (json) {\n body = JSON.stringify(json);\n } else if (data) {\n body = Object.keys(data).map(key => {\n return `${ encodeURIComponent(key) }=${ data ? encodeURIComponent(data[key]) : '' }`;\n }).join('&');\n }\n\n xhr.timeout = timeout;\n xhr.ontimeout = function xhrTimeout() {\n reject(new Error(`Request to ${ method.toLowerCase() } ${ url } has timed out`));\n };\n\n xhr.send(body);\n });\n}\n\nrequest.get = (url : string, options = {}) => {\n return request({ method: 'get', url, ...options });\n};\n\nrequest.post = (url : string, data, options = {}) => {\n return request({ method: 'post', url, data, ...options });\n};\n\nrequest.addHeaderBuilder = (method) => {\n headerBuilders.push(method);\n};\n","/* @flow */\n\nimport { info, track, flush as flushLogs } from 'beaver-logger/client';\n\nimport { FPTI } from '../constants';\n\nimport { match } from './util';\nimport { getStorageState, getStorageID } from './session';\n\ntype Throttle = {|\n isEnabled : () => boolean,\n isDisabled : () => boolean,\n getTreatment : () => string,\n log : (string, payload? : { [string] : ?string }) => Throttle,\n logStart : (payload? : { [string] : ?string }) => Throttle,\n logComplete : (payload? : { [string] : ?string }) => Throttle\n|};\n\nfunction getThrottlePercentile(name : string) : number {\n return getStorageState(storage => {\n storage.throttlePercentiles = storage.throttlePercentiles || {};\n storage.throttlePercentiles[name] = storage.throttlePercentiles[name] || Math.floor(Math.random() * 100);\n return storage.throttlePercentiles[name];\n });\n}\n\nconst THROTTLE_GROUP = {\n TEST: 'test',\n CONTROL: 'control',\n THROTTLE: 'throttle'\n};\n\nexport function getThrottle(name : string, sample : number, sticky : boolean = true) : Throttle {\n\n const uid = getStorageID();\n\n const percentile = sticky ? getThrottlePercentile(name) : Math.floor(Math.random() * 100);\n\n let group;\n\n if (percentile < sample) {\n group = THROTTLE_GROUP.TEST;\n } else if ((sample >= 50) || ((sample <= percentile) && (percentile < (sample * 2)))) {\n group = THROTTLE_GROUP.CONTROL;\n } else {\n group = THROTTLE_GROUP.THROTTLE;\n }\n\n const treatment = `${ name }_${ group }`;\n\n let started = false;\n let forced = false;\n\n try {\n if (window.localStorage && window.localStorage.getItem(name)) {\n forced = true;\n }\n } catch (err) {\n // pass\n }\n\n return {\n\n isEnabled() : boolean {\n return (group === THROTTLE_GROUP.TEST) || forced;\n },\n\n isDisabled() : boolean {\n return (group !== THROTTLE_GROUP.TEST) && !forced;\n },\n\n getTreatment() : string {\n return treatment;\n },\n\n log(checkpointName : string, payload? : { [string] : ?string } = {}) : Throttle {\n if (!started) {\n return this;\n }\n\n const checkpoint = `${ name }_${ treatment }_${ checkpointName }`;\n info(checkpoint, { ...payload, expuid: uid });\n\n track({\n [ FPTI.KEY.EXPERIMENT_NAME ]: name,\n [ FPTI.KEY.TREATMENT_NAME ]: treatment,\n ...payload\n });\n\n flushLogs();\n return this;\n },\n\n logStart(payload? : { [string] : ?string } = {}) : Throttle {\n started = true;\n return this.log(`start`, payload);\n },\n\n logComplete(payload? : { [string] : ?string } = {}) : Throttle {\n if (!started) {\n return this;\n }\n\n return this.log(`complete`, payload);\n }\n };\n}\n\nexport function getReturnToken() : ?string {\n\n const token = match(window.location.href, /token=((EC-)?[A-Z0-9]+)/);\n const payer = match(window.location.href, /PayerID=([A-Z0-9]+)/);\n\n if (token && payer) {\n return token;\n }\n}\n","/* @flow */\n\nimport { debug } from 'beaver-logger/client';\nimport { getDomain } from 'cross-domain-utils/src';\n\nimport { config } from '../config';\n\nimport { memoize, domainMatches } from './util';\n\nexport const getCurrentScript = memoize(() : ?HTMLScriptElement => {\n\n const scripts = Array.prototype.slice.call(document.getElementsByTagName('script'));\n\n for (const script of scripts) {\n if (script.src && (script.src.replace(/^https?:/, '').split('?')[0] === config.scriptUrl || script.hasAttribute('data-paypal-checkout'))) {\n return script;\n }\n\n if (script.src && (script.src.indexOf('paypal.checkout.v4.js') !== -1)) {\n return script;\n }\n }\n\n if (document.currentScript) { // eslint-disable-line compat/compat\n debug(`current_script_not_recognized`, { src: document.currentScript.src }); // eslint-disable-line compat/compat\n }\n});\n\nexport function isPayPalObjects() : boolean {\n return Boolean(getCurrentScript());\n}\n\nexport function getScriptVersion() : string {\n if (__PAYPAL_CHECKOUT__.__MAJOR__ && isPayPalObjects()) {\n return __MIN__ ? 'min' : __PAYPAL_CHECKOUT__.__MAJOR_VERSION__;\n } else {\n return __MIN__ ? `${ __PAYPAL_CHECKOUT__.__MINOR_VERSION__ }.min` : __PAYPAL_CHECKOUT__.__MINOR_VERSION__;\n }\n}\n\nexport function getCurrentScriptUrl() : string {\n const script = getCurrentScript();\n\n if (script && typeof script.src === 'string') {\n let scriptUrl = script.src;\n\n if (scriptUrl.indexOf('http://www.paypalobjects.com') === 0) {\n scriptUrl = scriptUrl.replace('http://', 'https://');\n }\n\n return scriptUrl;\n }\n\n return `https://www.paypalobjects.com/api/checkout.${ __PAYPAL_CHECKOUT__.__MINOR_VERSION__ }${ __MIN__ ? '.min' : '' }.js`;\n}\n\nexport function getDomainSetting(name : string, def : ?T) : ?T {\n\n const hostname = window.xchild\n ? window.xchild.getParentDomain()\n : getDomain();\n\n if (config.domain_settings) {\n for (const domain of Object.keys(config.domain_settings)) {\n if (domainMatches(hostname, domain)) {\n return config.domain_settings[domain][name];\n }\n }\n }\n\n return def;\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { once, bridge } from 'post-robot/src';\n\nimport { config } from '../config';\n\nimport { isIEIntranet } from './device';\nimport { memoize } from './util';\nimport { getScriptVersion } from './script';\nimport { extendUrl } from './dom';\n\ntype FrameMetaData = {|\n iframeEligible : boolean,\n iframeEligibleReason : string,\n // eslint-disable-next-line flowtype/no-mutable-array\n rememberedFunding : Array\n|};\n\nexport const openMetaFrame = memoize((env : string = config.env) : ZalgoPromise => {\n return ZalgoPromise.try(() => {\n\n if (isIEIntranet()) {\n return {\n iframeEligible: false,\n iframeEligibleReason: 'ie_intranet',\n rememberedFunding: []\n };\n }\n\n const metaFrameUrl : string = config.metaFrameUrls[env];\n const metaFrameDomain : string = config.paypalDomains[env];\n\n return ZalgoPromise.try(() => {\n if (!bridge) {\n throw new Error(`Opening meta window without bridge support is not currently supported`);\n }\n\n const metaListener = once('meta', { domain: metaFrameDomain });\n\n return bridge.openBridge(extendUrl(metaFrameUrl, { version: getScriptVersion() }), metaFrameDomain)\n .then(() => metaListener)\n .then(({ data }) => data);\n });\n });\n});\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { FUNDING } from '../constants';\nimport type { FundingSource, FundingList } from '../types';\n\nimport { getStorageState, getGlobalState, getSessionState } from './session';\nimport { isDevice } from './device';\nimport { openMetaFrame } from './meta';\nimport { identity } from './util';\n\n// $FlowFixMe\nexport function getRememberedFunding(handler? : (rememberedFunding : FundingList) => T = identity) : T {\n return getStorageState(storage => {\n storage.rememberedFunding = storage.rememberedFunding || [];\n return handler(storage.rememberedFunding);\n });\n}\n\nfunction hasRememberedFunding(source : FundingSource) : ?boolean {\n\n if (getRememberedFunding(rememberedFunding => rememberedFunding.indexOf(source) !== -1)) {\n return true;\n }\n\n if (getSessionState(session => session.recentlyCheckedRemembered)) {\n return true;\n }\n\n return false;\n}\n\n\nfunction isRememberedFunding(source : FundingSource) : boolean {\n\n if (getRememberedFunding(rememberedFunding => rememberedFunding.indexOf(source) !== -1)) {\n return true;\n }\n\n if (getSessionState(session => session.recentlyCheckedRemembered)) {\n return false;\n }\n\n throw new Error(`Can not find remembered funding result`);\n}\n\nfunction getRememberedFundingPromises() : { [FundingSource] : ZalgoPromise } {\n return getGlobalState(global => {\n global.rememberFundingPromises = global.rememberFundingPromises || {};\n return global.rememberFundingPromises;\n });\n}\n\nfunction getRememberedFundingPromise(source : FundingSource) : ZalgoPromise {\n const promises = getRememberedFundingPromises();\n const promise = promises[source] = promises[source] || new ZalgoPromise();\n if (hasRememberedFunding(source)) {\n promise.resolve(isRememberedFunding(source));\n }\n return promise;\n}\n\nfunction flushRememberedFundingPromises() {\n const promises = getRememberedFundingPromises();\n const rememberedFunding = getRememberedFunding(sources => sources);\n\n for (const source of Object.keys(promises)) {\n promises[source].resolve(rememberedFunding.indexOf(source) !== -1);\n }\n}\n\nexport function rememberFunding(sources : FundingList) {\n getRememberedFunding(rememberedFunding => {\n for (const source of sources) {\n\n if (source === FUNDING.VENMO && !isDevice()) {\n continue;\n }\n if (rememberedFunding.indexOf(source) === -1) {\n rememberedFunding.push(source);\n }\n }\n\n flushRememberedFundingPromises();\n });\n\n getSessionState(session => {\n session.recentlyCheckedRemembered = true;\n });\n}\n\nfunction loadMeta() : ZalgoPromise {\n return openMetaFrame().then(({ rememberedFunding }) => {\n rememberFunding(rememberedFunding || []);\n });\n}\n\nexport function isFundingRemembered(source : FundingSource = FUNDING.PAYPAL) : ZalgoPromise {\n\n if (hasRememberedFunding(source)) {\n return getRememberedFundingPromise(source);\n }\n\n return loadMeta().then(() => {\n return getRememberedFundingPromise(source);\n });\n}\n\nexport function precacheRememberedFunding() : ZalgoPromise {\n if (!getSessionState(session => session.recentlyCheckedRemembered)) {\n return loadMeta();\n }\n return ZalgoPromise.resolve();\n}\n","/* @flow */\n\nexport * from './device';\nexport * from './util';\nexport * from './logger';\nexport * from './eligibility';\nexport * from './errors';\nexport * from './dom';\nexport * from './http';\nexport * from './beacon';\nexport * from './throttle';\nexport * from './namespace';\nexport * from './session';\nexport * from './proxy';\nexport * from './meta';\nexport * from './funding';\nexport * from './script';\nexport * from './jsx';\nexport * from './security';\n","/* @flow weak */\n/* eslint max-lines: 0 */\n\nimport { ENV, COUNTRY, LANG, LOCALE } from '../constants';\n\nfunction getDefaultEnv() : $Values {\n if (__TEST__) {\n return ENV.TEST;\n }\n\n if (typeof window === 'undefined' || typeof window.location === 'undefined') {\n return ENV.PRODUCTION;\n }\n\n if (window.location.host.indexOf('localhost.paypal.com') !== -1) {\n return ENV.LOCAL;\n }\n\n if (window.location.host.indexOf('qa.paypal.com') !== -1) {\n return ENV.STAGE;\n }\n\n if (window.location.host.indexOf('sandbox.paypal.com') !== -1) {\n return ENV.SANDBOX;\n }\n\n return ENV.PRODUCTION;\n}\n\nexport const config = {\n\n locales: LOCALE,\n\n scriptUrl: __TEST__\n ? `//${ window.location.host }/base/src/load.js`\n : `//www.paypalobjects.com/api/${ __FILE_NAME__ }`,\n\n // eslint-disable-next-line security/detect-unsafe-regex, unicorn/no-unsafe-regex\n paypal_domain_regex: /^(https?|mock):\\/\\/[a-zA-Z0-9_.-]+\\.paypal\\.com(:\\d+)?$/,\n\n version: __PAYPAL_CHECKOUT__.__MINOR_VERSION__,\n\n cors: true,\n\n env: getDefaultEnv(),\n\n state: 'checkoutjs',\n\n locale: {\n country: COUNTRY.US,\n lang: LANG.EN\n },\n\n stage: 'msmaster',\n stageDomain: 'qa.paypal.com',\n\n get stageUrl() : string {\n return `${ config.stage }.${ config.stageDomain }`;\n },\n\n get apiStageUrl() : string {\n return `${ config.apiStage }.${ config.stageDomain }`;\n },\n\n get localhostUrl() : string {\n return `http://localhost.paypal.com:${ config.ports.default }`;\n },\n\n set localhostUrl(val) {\n delete this.localhostUrl;\n this.localhostUrl = val;\n },\n\n merchantID: '',\n authCode: '',\n\n logLevel: __PAYPAL_CHECKOUT__.__DEFAULT_LOG_LEVEL__,\n\n throttles: {\n v4_mobile_device: 0\n },\n\n domain_settings: {\n 'walmart.com': {\n ie_full_page: false,\n allow_full_page_fallback: true,\n memoize_payment: true,\n force_bridge: true,\n log_authorize: true\n },\n\n 'ulta.com': {\n disable_venmo: true\n },\n\n 'barnesandnoble.com': {\n disable_venmo: true\n },\n\n 'bn.com': {\n disable_venmo: true\n },\n\n 'agoratix.com': {\n disable_venmo: true\n },\n\n 'tractorsupply.com': {\n disable_venmo: true\n },\n\n 'etsy.com': {\n ie_full_page: false,\n allow_full_page_fallback: true,\n memoize_payment: true,\n force_bridge: true,\n log_authorize: true\n },\n\n 'ticketmaster.com': {\n disable_venmo: true\n },\n\n 'livenation.com': {\n disable_venmo: true\n },\n\n 'frontgatetickets.com': {\n disable_venmo: true\n },\n\n 'williams-sonoma.com': {\n disable_venmo: true\n },\n\n 'westelm.com': {\n disable_venmo: true\n },\n\n 'markandgraham.com': {\n disable_venmo: true\n },\n\n 'potterybarn.com': {\n disable_venmo: true\n },\n\n 'potterybarnkids.com': {\n disable_venmo: true\n },\n\n 'pbteen.com': {\n disable_venmo: true\n },\n\n 'beallsflorida.com': {\n disable_venmo: true\n },\n\n 'therealreal.com': {\n disable_venmo: true\n },\n\n 'liveaquaria.com': {\n disable_venmo: true\n },\n\n 'drsfostersmith.com': {\n disable_venmo: true\n },\n\n 'boxed.com': {\n disable_venmo: true\n },\n\n 'bevisible.com': {\n disable_venmo: true\n },\n\n 'moeller.org': {\n disable_venmo: true\n },\n\n 'searshometownstores.com': {\n disable_venmo: true\n },\n\n 'searshardwarestores.com': {\n disable_venmo: true\n },\n\n 'searshomeapplianceshowroom.com': {\n disable_venmo: true\n },\n\n 'barkshop.com': {\n disable_venmo: true\n },\n\n 'vividseats.com': {\n disable_venmo: true\n },\n\n 'getcargo.today': {\n disable_venmo: true\n },\n\n 'smartdestinations.com': {\n disable_venmo: true\n },\n\n 'philadelphiapass.com': {\n disable_venmo: true\n },\n\n 'thesydneypass.com': {\n disable_venmo: true\n },\n\n '3secondlash.com': {\n disable_venmo: true\n },\n\n 'newyorkpass.com': {\n disable_venmo: true\n },\n\n 'dndbeyond.com': {\n disable_venmo: true\n },\n\n 'app.zapbuy.it': {\n disable_venmo: true\n },\n\n 'gamersaloon.com': {\n disable_venmo: true\n },\n\n '1800contacts.com': {\n disable_venmo: true\n },\n\n 'shopchatters.ca': {\n disable_venmo: true\n },\n\n 'shopguyswin.ca': {\n disable_venmo: true\n },\n\n 'jjill.com': {\n disable_venmo: true\n },\n\n 'qvc.com': {\n disable_venmo: true\n },\n\n 'stelladot.com': {\n disable_venmo: true\n },\n\n 'keepcollective.com': {\n disable_venmo: true\n },\n\n 'everskin.com': {\n disable_venmo: true\n },\n\n 'zulily.com': {\n disable_venmo: true\n },\n\n 'freshly.com': {\n disable_venmo: true\n },\n\n 'buypeticare.com': {\n disable_venmo: true\n },\n\n 'getownzone.com': {\n disable_venmo: true\n },\n\n 'uncommongoods.com': {\n disable_venmo: true\n },\n\n 'onegold.com': {\n disable_venmo: true\n },\n\n 'universitytees.com': {\n disable_venmo: true\n },\n\n 'revolve.com': {\n disable_venmo: true\n },\n\n 'functionofbeauty.com': {\n disable_venmo: true\n },\n\n 'givebutter.com': {\n disable_venmo: true\n },\n\n 'hausmart.com': {\n disable_venmo: true\n },\n\n 'derbyjackpot.com': {\n disable_venmo: true\n },\n\n 'ancestry.com': {\n disable_venmo: true\n },\n\n 'boats.net': {\n disable_venmo: true\n },\n\n 'partzilla.com': {\n disable_venmo: true\n },\n\n 'firedog.com': {\n disable_venmo: true\n },\n\n 'chick-fil-a.com': {\n disable_venmo: true\n },\n\n 'roku.com': {\n disable_venmo: true\n },\n\n 'barkbox.com': {\n disable_venmo: true\n },\n\n 'neimanmarcus.com': {\n disable_venmo: true\n },\n\n 'lastcall.com': {\n disable_venmo: true\n },\n\n 'horchow.com': {\n disable_venmo: true\n },\n\n 'bergdorfgoodman.com': {\n disable_venmo: true\n },\n\n 'fwrd.com': {\n disable_venmo: true\n },\n\n 'plunderdesign.com': {\n disable_venmo: true\n },\n\n 'stitchfix.com': {\n disable_venmo: true\n },\n\n 'revzilla.com': {\n disable_venmo: true\n },\n\n 'cyclegear.com': {\n disable_venmo: true\n },\n\n 'chegg.com': {\n disable_venmo: true\n },\n\n 'youniqueproducts.com': {\n disable_venmo: true\n },\n\n 'archives.com': {\n disable_venmo: true\n },\n\n 'hautelook.com': {\n disable_venmo: true\n },\n\n 'nordstromrack.com': {\n disable_venmo: true\n },\n\n 'motherhoodcanada.ca': {\n disable_venmo: true\n },\n\n 'atomtickets.com': {\n disable_venmo: true\n },\n\n 'trademore.com': {\n disable_venmo: true\n },\n\n 'lasheaseoffer.com': {\n disable_venmo: true\n },\n\n 'rookie.paypalsixthman.com': {\n disable_venmo: true\n },\n\n '1800Contacts.com': {\n disable_venmo: true\n },\n\n 'hulu.com': {\n disable_venmo: true\n },\n\n 'grubhub.com': {\n disable_venmo: true\n },\n\n 'eat24.com': {\n disable_venmo: true\n },\n\n 'seamless.com': {\n disable_venmo: true\n },\n\n 'freshfeetscrubber.com': {\n disable_venmo: true\n },\n\n 'opensky.com': {\n disable_venmo: true\n },\n\n 'dotandbo.com': {\n disable_venmo: true\n },\n\n 'storenvy.com': {\n disable_venmo: true\n },\n\n 'gemafina.com': {\n disable_venmo: true\n },\n\n 'pickperfect.com': {\n disable_venmo: true\n },\n\n '55mulberry.com': {\n disable_venmo: true\n },\n \n 'hollar.com': {\n disable_venmo: true\n },\n\n 'bjs.com': {\n disable_venmo: true\n },\n\n 'playsugarhouse.com': {\n disable_venmo: true\n },\n\n 'lakeshorelearning.com': {\n disable_venmo: true\n },\n\n 'llmhq.com': {\n disable_venmo: true\n },\n\n 'gainful.com': {\n disable_venmo: true\n },\n\n 'modaoperandi.com': {\n disable_venmo: true\n },\n \n 'play.jackpocket.com': {\n disable_venmo: true\n },\n\n 'crepeerase.com': {\n disable_venmo: true\n },\n\n 'specificbeauty.com': {\n disable_venmo: true\n },\n\n 'meaningfulbeauty.com': {\n disable_venmo: true\n },\n\n 'smileactives.com ': {\n disable_venmo: true\n },\n\n 'mally.com': {\n disable_venmo: true\n },\n\n 'westmorebeauty.com': {\n disable_venmo: true\n },\n\n 'subd.com': {\n disable_venmo: true\n },\n\n 'seacalmskin.com': {\n disable_venmo: true\n },\n \n 'whittier.edu': {\n disable_venmo: true\n },\n \n 'curology.com': {\n disable_venmo: true\n },\n \n 'monoprice.com': {\n disable_venmo: true\n },\n \n 'dominos.com': {\n disable_venmo: true\n },\n \n 'audiobooks.com': {\n disable_venmo: true\n },\n \n '1aauto.com': {\n disable_venmo: true\n },\n\n 'greatwolf.com': {\n disable_venmo: true\n },\n\n 'cvs.com': {\n disable_venmo: true\n },\n\n 'gilt.com': {\n disable_venmo: true\n },\n\n 'ruelala.com': {\n disable_venmo: true\n }\n },\n\n creditTestDomains: [ 'bluesuncorp.co.uk', 'nationsphotolab.com', 'plexusworldwide.com', 'nshss.org', 'bissell.com', 'mobstub.com', 'vuoriclothing.com', 'tape4backup.com', 'avivamiento.com', 'rhododendron.org', 'whiterabbitjapan.com', 'atsracing.net', 'thehilltopgallery.com', 'weedtraqr.com', 'worldpantry.com', 'ciraconnect.com', 'mymalls.com', 'prowinch.com', 'zodiacpoolsystems.com', 'everlywell.com', 'candlewarmers.com', 'chop.edu', 'incruises.com', 'flikn.com', 'didforsale.com', 'mcc.org', 'sygu.net', 'merchbar.com', 'eduinconline.com', 'us.livebetterwith.com', 'bakemeawish.com', 'judolaunch.com', 'eventcartel.com', 'tapatalk.com', 'telescope.com', 'covenant.edu', 'aquatruwater.com', 'spingo.com', 'usu.edu', 'getcelerity.com', 'brandless.com', 'saberigniter.com', 'euromodeltrains.com', 'gofasttrader.com', 'megamodzplanet.com', 'draftanalyzer.com', 'lovewithoutboundaries.com', 'filterpop.com', 'seekverify.com', 'photoandgo.com', 'sightseeingpass.com', 'bigoanddukes.com', 'thethirstyduck.com', 'thebrushguys.com', '907delivery.com', 'mauisails.com', 'drive.net', 'channelmax.net', 'modernrebelco.com', 'enchanteddiamonds.com', 'ibabbleon.com', 'fullgenomes.com', 'conn-comp.com', 'wingware.com', 'paradigmgoods.com', 'theneptunegroup.com', 'kidzartworks.com', 'unirealm.com', 'ncfarmsinc.com', 'oneofakindantiques.com', 'servers4less.com', 'stumpthespread.com', 'marketwagon.com', 'monsterhouseplans.com', 'canterburychoral.org', 'teacupnordic.org', 'thethirstyduck.com', 'medialoot.com', 'theartistunion.com', 'yourglamourzone.com', 'breckstables.com', 'mackephotography.com', 'dsaj.org', 'massluminosity.com', 'tespa.org', 'versatilearts.net', 'yecup.org', 'divinebusinessmanagement.com', 'captivatebeautyservices.com', 'class4me.com', 'wcsonlineuniversity.com', 'pvplive.com', 'kyneteks.com', 'rare-paper.com', 'bpg.bpgsim.biz', 'geodegallery.com', 'way.com', 'kringle.com', 'talentedmrsalas.ph', 'litcharts.com', 'purpletreephotography.com', 'apache.org', 'neopackage.com', 'globaldance.tv', 'integral.studio', 'airdoctorpro.com', 'ivoryandiron.com', 'yuengling.com', 'averysbranchfarms.com', 'amberreinink.com', 'skinnymechocolate.com', 'bmbl.net', 'ncwatercolor.net', 'astrograph.com', 'localadventures.mx', 'ripcurl.com', 'worldfootbrakechallenge.com', 'shespeakssales.com', 'obrienguitars.com', 'jadenikkolephoto.com', 'americavoice.com', 'cassiexie.com', 'aamastateconvention.org', 'rellesflorist.com', 'passionnobby.com', 'bodybyheidi.com', 'roqos.com', 'prijector.com', 'maryswanson.net', 'tsghobbies.com', 'erinlaytonphotography.com', 'darter.org', 'fountainpenhospital.com', 'myzestfullife.com', 'pcog.org', 'alisabethdesigns.com', 'katiemathisphoto.com', 'strictlybellaphotography.com', 'maptools.com', 'sites.google.com', 'gallerr.com', 'southfloridatrikke.com', 'caviar.tv', 'mintingmasters.com', 'prospectorsguild.com', 'inktale.com', 'prettygirlgoods.com', 'laceycahill.com', 'daniellenowak.com', 't212.org', 'scmsinc.com', 'babypaloozanc.com', 'tetrisonline.com', 'grdd.net', 'cdspg.info', 'airshipapparel.com', 'waft.com', 'extendpets.com', 'supplyhub.com', 'hlbsusa.com', 'jaderollerbeauty.com', 'theparentingjunkie.com', 'schagringas.com', 'yourscribemate.com', 'sportscollectibles.com', 'thedivinenoise.com', 'hometeamsonline.com', 'trademarkpress.com', 'destinationenglish.us', 'jacquesflowers.com', 'aliszhatchphotography.com', 'rusticfoundry.com', 'ahhhmassage.net', 'frezzor.com', 'mandelininc.com', 'kayleejackson.com', 'monkinstitute.org', 'eddiebsbbq.com', 'morningstarmediaservices.com', 'kinevative.com', 'orivet.com', 'digitalprinthouse.net', 'dynamicgenius.com', 'allpartsusa.com', 'flowersbydavid.net', 'nwvoices.org', 'leaptrade.com', 'tulsaschoolpics.com', 'alioth.io', 'windowflair.com', 'vitcom.net', 'simplybeautifulfashions.com', 'christinabenton.com', 'fromthedaughter.com', 'hometowngraphics.net', 'fibanalysis.com', 'creativejobscentral.com', 'sandbox.gg', 'jt-digitalmedia.com', 'kodable.com', 'birthingstone.com', 'taranicholephoto.com', 'hillyfieldsflorist.com', 'charitynoelphoto.com', 'auxdelicesfoods.com', 'terilynnphotography.com', 'folieadeuxevents.com', 'karensfloral.com', 'montgomerydiveclub.com', 'rainbowplastics.com', 'confettionthedancefloor.com', 'vomozmedia.com', 'neatmod.com', 'getnaturafled.com', 'callingpost.com', 'iamfamily.org', 'pedigreeonline.com', 'typeboost.io', 'in-n-outpetdoor.com', 'nerdstockgc.com', 'keiadmin.com', 'createdbykaui.com', 'aikophoto.com', 'lonestar.ink', 'stlfurs.com', 'treasurelistings.com', 'thecubicle.us', 'redclaypaper.com', 'blushhousemedia.com', 'documentsanddesigns.com', 'whitneyleighphotography.shootproof.com', 'amaryllisday.com', 'hermanproav.com', 'felicemedia.com', 'withloveplacenta.com', 'store.brgadgets.co', 'klowephoto.com', 'spenceraustinconsulting.com', 'sno-eagles.org', 'dsatallahassee.org', 'bakupages.com', 'neswc.com', 'josiebrooksphotography.com', 'brisksale.com', 'legalwhoosh.com', 'jasmineeaster.com', 'swatstudios.com', 'facebook.com', 'shakershell.com', 'alexiswinslow.com', 'mixeddimensions.com', 'sweetpproductions.com', 'lbeaphotography.com', 'otlseatfillers.com', 'jdtickets.com', 'catholicar.com', 'masque.com', 'smalltownstudio.net', 'goherbalife.com', 'itzyourz.com', 'magazinespeedloader.com', 'dreammachines.io', 'dallasdieteticalliance.org', 'http:', 'medair.org', 'unbridledambition.com', 'sarasprints.com', 'wiperecord.com', 'showmyrabbit.com', 'cctrendsshop.com', 'rachelalessandra.com', 'otherworld-apothecary.com', 'melissaannphoto.com', 'girlceo.co', 'seasidemexico.com', 'telosid.com', 'instin.com', 'marinecorpsmustang.org', 'lancityconnect.com', 'hps1.org', 'karenware.com', 'livecurriculum.com', 'spellingstars.com', 'vektorfootball.com', 'zaltv.com', 'nebraskamayflower.org', 'ethiopianspices.com', 'immitranslate.com', 'rafaelmagic.com.com', 'bahc1.org', 'newenamel.com', 'bhchp.org', 'buybulkamerica.com', 'sourcepoint.com', 'squarestripsports.com', 'wix.com', 'wilderootsphotography.com', 'goodsalt.com', 'systemongrid.com', 'designmil.org', 'freshtrendhq.com', 'valisimofashions.com', 'buyneatly.com', 'getbeauty.us', 'intellimidia.com' ],\n \n customCountry: false,\n\n SUPPORTED_BROWSERS: {\n msie: '11',\n firefox: '30',\n chrome: '27',\n safari: '7',\n opera: '16',\n msedge: '12',\n samsungBrowser: '2.1',\n silk: '59.3',\n ucbrowser: '10.0.0.488',\n vivaldi: '1.91'\n },\n\n session_uid_lifetime: 5 * 60 * 1000,\n\n _apiStage: '',\n\n get apiStage() : string {\n return config._apiStage || config.stage;\n },\n\n set apiStage(value) {\n config._apiStage = value;\n },\n\n ports: {\n default: 8000,\n button: 8000,\n checkout: 8000,\n guest: 8001,\n altpay: 3000\n },\n\n get paypalUrls() : Object {\n return {\n [ ENV.LOCAL ]: config.localhostUrl,\n [ ENV.STAGE ]: `https://www.${ config.stageUrl }`,\n [ ENV.SANDBOX ]: `https://www.sandbox.paypal.com`,\n [ ENV.PRODUCTION ]: `https://www.paypal.com`,\n [ ENV.TEST ]: `${ window.location.protocol }//${ window.location.host }`,\n [ ENV.DEMO ]: `${ window.location.protocol }//localhost.paypal.com:${ window.location.port }`\n };\n },\n\n get paypalDomains() : Object {\n return {\n [ ENV.LOCAL ]: 'http://localhost.paypal.com:8000',\n [ ENV.STAGE ]: `https://www.${ config.stageUrl }`,\n [ ENV.SANDBOX ]: `https://www.sandbox.paypal.com`,\n [ ENV.PRODUCTION ]: `https://www.paypal.com`,\n [ ENV.TEST ]: `mock://www.paypal.com`,\n [ ENV.DEMO ]: `${ window.location.protocol }//localhost.paypal.com:${ window.location.port }`\n };\n },\n\n get wwwApiUrls() : Object {\n return {\n [ ENV.LOCAL ]: `https://www.${ config.stageUrl }`,\n [ ENV.STAGE ]: `https://www.${ config.stageUrl }`,\n [ ENV.SANDBOX ]: `https://www.sandbox.paypal.com`,\n [ ENV.PRODUCTION ]: `https://www.paypal.com`,\n [ ENV.TEST ]: `${ window.location.protocol }//${ window.location.host }`\n };\n },\n\n get corsApiUrls() : Object {\n return {\n [ ENV.LOCAL ]: `https://${ config.apiStageUrl }:12326`,\n [ ENV.STAGE ]: `https://${ config.apiStageUrl }:12326`,\n [ ENV.SANDBOX ]: `https://cors.api.sandbox.paypal.com`,\n [ ENV.PRODUCTION ]: `https://cors.api.paypal.com`,\n [ ENV.TEST ]: `${ window.location.protocol }//${ window.location.host }`\n };\n },\n\n get apiUrls() : Object {\n\n const domain = `${ window.location.protocol }//${ window.location.host }`;\n const corsApiUrls = config.corsApiUrls;\n const wwwApiUrls = config.wwwApiUrls;\n\n return {\n [ ENV.LOCAL ]: domain === wwwApiUrls.local ? wwwApiUrls.local : corsApiUrls.local,\n [ ENV.STAGE ]: domain === wwwApiUrls.stage ? wwwApiUrls.stage : corsApiUrls.stage,\n [ ENV.SANDBOX ]: domain === wwwApiUrls.sandbox ? wwwApiUrls.sandbox : corsApiUrls.sandbox,\n [ ENV.PRODUCTION ]: domain === wwwApiUrls.production ? wwwApiUrls.production : corsApiUrls.production,\n [ ENV.TEST ]: domain === wwwApiUrls.test ? wwwApiUrls.test : corsApiUrls.test\n };\n },\n\n get checkoutUri() : ?string {\n return null;\n },\n\n set checkoutUri(val) {\n delete this.checkoutUri;\n this.checkoutUri = val;\n },\n\n get checkoutUris() : Object {\n if (config.checkoutUri) {\n return {\n [ ENV.LOCAL ]: config.checkoutUri,\n [ ENV.STAGE ]: config.checkoutUri,\n [ ENV.SANDBOX ]: config.checkoutUri,\n [ ENV.PRODUCTION ]: config.checkoutUri,\n [ ENV.TEST ]: config.checkoutUri,\n [ ENV.DEMO ]: config.checkoutUri\n };\n }\n\n return {\n [ ENV.LOCAL ]: `/webapps/hermes`,\n [ ENV.STAGE ]: `/webapps/hermes`,\n [ ENV.SANDBOX ]: `/checkoutnow`,\n [ ENV.PRODUCTION ]: `/checkoutnow`,\n [ ENV.TEST ]: `/base/test/windows/checkout/index.htm?checkouturl=true`,\n [ ENV.DEMO ]: `/demo/dev/checkout.htm`\n };\n },\n\n altpayUris: {\n [ ENV.LOCAL ]: `/latinumcheckout`,\n [ ENV.STAGE ]: `/latinumcheckout`,\n [ ENV.SANDBOX ]: `/latinumcheckout`,\n [ ENV.PRODUCTION ]: `/latinumcheckout`,\n [ ENV.TEST ]: `/base/test/windows/checkout/index.htm?checkouturl=true`,\n [ ENV.DEMO ]: `/demo/dev/checkout.htm`\n },\n\n guestUris: {\n [ ENV.LOCAL ]: `/webapps/xoonboarding`,\n [ ENV.STAGE ]: `/webapps/xoonboarding`,\n [ ENV.SANDBOX ]: `/webapps/xoonboarding`,\n [ ENV.PRODUCTION ]: `/webapps/xoonboarding`,\n [ ENV.TEST ]: `/base/test/windows/checkout/index.htm?guesturl=true`,\n [ ENV.DEMO ]: `/demo/dev/guest.htm`\n },\n\n billingUris: {\n [ ENV.LOCAL ]: `/webapps/hermes/agreements`,\n [ ENV.STAGE ]: `/webapps/hermes/agreements`,\n [ ENV.SANDBOX ]: `/agreements/approve`,\n [ ENV.PRODUCTION ]: `/agreements/approve`,\n [ ENV.TEST ]: `/base/test/windows/checkout/index.htm?billingurl=true`,\n [ ENV.DEMO ]: `/demo/dev/checkout.htm`\n },\n\n buttonUris: {\n [ ENV.LOCAL ]: `/smart/button`,\n [ ENV.STAGE ]: `/smart/button`,\n [ ENV.SANDBOX ]: `/smart/button`,\n [ ENV.PRODUCTION ]: `/smart/button`,\n [ ENV.TEST ]: `/base/test/windows/button/index.htm`,\n [ ENV.DEMO ]: `/demo/dev/button.htm`\n },\n\n inlinedCardFieldUris: {\n [ ENV.LOCAL ]: `/smart/card-fields`,\n [ ENV.STAGE ]: `/smart/card-fields`,\n [ ENV.SANDBOX ]: `/smart/card-fields`,\n [ ENV.PRODUCTION ]: `/smart/card-fields`,\n [ ENV.TEST ]: `/base/test/windows/card-fields/index.htm`,\n [ ENV.DEMO ]: `/demo/dev/card.htm`\n },\n\n postBridgeUris: {\n [ ENV.LOCAL ]: `/webapps/hermes/component-meta`,\n [ ENV.STAGE ]: `/webapps/hermes/component-meta`,\n [ ENV.SANDBOX ]: `/webapps/hermes/component-meta`,\n [ ENV.PRODUCTION ]: `/webapps/hermes/component-meta`,\n [ ENV.TEST ]: `/base/test/windows/component-meta/index.htm`,\n [ ENV.DEMO ]: `/demo/dev/bridge.htm`\n },\n\n legacyCheckoutUris: {\n [ ENV.LOCAL ]: `/cgi-bin/webscr?cmd=_express-checkout&xo_node_fallback=true`,\n [ ENV.STAGE ]: `/cgi-bin/webscr?cmd=_express-checkout&xo_node_fallback=true`,\n [ ENV.SANDBOX ]: `/cgi-bin/webscr?cmd=_express-checkout&xo_node_fallback=true`,\n [ ENV.PRODUCTION ]: `/cgi-bin/webscr?cmd=_express-checkout&xo_node_fallback=true`,\n [ ENV.TEST ]: `#fallback`\n },\n\n buttonJSUrls: {\n [ ENV.LOCAL ]: `https://www.paypalobjects.com/api/button.js`,\n [ ENV.STAGE ]: `https://www.paypalobjects.com/api/button.js`,\n [ ENV.SANDBOX ]: `https://www.paypalobjects.com/api/button.js`,\n [ ENV.PRODUCTION ]: `https://www.paypalobjects.com/api/button.js`,\n [ ENV.TEST ]: `/base/test/lib/button.js`,\n [ ENV.DEMO ]: `https://www.paypalobjects.com/api/button.js`\n },\n\n get buttonJSUrl() : string {\n return config.buttonJSUrls[config.env];\n },\n\n loginUri: `/signin/`,\n\n hermesLoggerUri: `/webapps/hermes/api/logger`,\n\n loggerUri: `/xoplatform/logger/api/logger`,\n\n loggerThrottlePercentage: 1.0, // 100%\n\n pptmUri: `/tagmanager/pptm.js`,\n\n get postBridgeUri() : string {\n return `${ config.postBridgeUris[config.env] }?xcomponent=1`;\n },\n\n paymentStandardUri: `/webapps/xorouter?cmd=_s-xclick`,\n\n authApiUri: `/v1/oauth2/token`,\n paymentApiUri: `/v1/payments/payment`,\n orderApiUri: `/v2/checkout/orders`,\n billingApiUri: `/v1/billing-agreements/agreement-tokens`,\n experienceApiUri: `/v1/payment-experience/web-profiles`,\n trackingApiUri: `/v1/risk/transaction-contexts`,\n\n get checkoutUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local }${ config.checkoutUris.local.replace(`:${ config.ports.default }`, `:${ config.ports.checkout }`) }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.checkoutUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.checkoutUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.checkoutUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.checkoutUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.test }${ config.checkoutUris.demo }`\n };\n },\n\n get guestUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local.replace(`:${ config.ports.default }`, `:${ config.ports.guest }`) }${ config.guestUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.guestUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.guestUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.guestUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.guestUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.test }${ config.guestUris.demo }`\n };\n },\n\n get altpayUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local.replace(`:${ config.ports.default }`, `:${ config.ports.altpay }`) }${ config.altpayUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.altpayUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.altpayUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.altpayUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.altpayUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.test }${ config.altpayUris.demo }`\n };\n },\n\n get billingUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local.replace(`:${ config.ports.default }`, `:${ config.ports.checkout }`) }${ config.billingUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.billingUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.billingUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.billingUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.billingUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.test }${ config.billingUris.demo }`\n };\n },\n\n get buttonUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local.replace(`:${ config.ports.default }`, `:${ config.ports.button }`) }${ config.buttonUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.buttonUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.buttonUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.buttonUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.buttonUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.demo }${ config.buttonUris.demo }`\n };\n },\n\n get inlinedCardFieldUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local.replace(`:${ config.ports.default }`, `:${ config.ports.button }`) }${ config.inlinedCardFieldUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.inlinedCardFieldUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.inlinedCardFieldUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.inlinedCardFieldUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.inlinedCardFieldUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.demo }${ config.inlinedCardFieldUris.demo }`\n };\n },\n\n get loginUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.stage }${ config.loginUri }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.loginUri }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.loginUri }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.loginUri }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.loginUri }`\n };\n },\n\n get paymentsStandardUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local }${ config.paymentStandardUri }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.paymentStandardUri }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.paymentStandardUri }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.paymentStandardUri }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.paymentStandardUri }`\n };\n },\n\n get metaFrameUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local }${ config.postBridgeUri }&env=local`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.postBridgeUri }&env=stage&stage=${ config.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.postBridgeUri }&env=sandbox`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.postBridgeUri }&env=production`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.postBridgeUri }&env=test`,\n [ ENV.DEMO ]: `${ paypalUrls.demo }${ config.postBridgeUri }&env=demo`\n };\n },\n\n get legacyCheckoutUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.stage }${ config.legacyCheckoutUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.legacyCheckoutUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.legacyCheckoutUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.legacyCheckoutUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.legacyCheckoutUris.test }`\n };\n },\n\n get authApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const authApiUri = config.authApiUri;\n\n return {\n [ ENV.LOCAL ]: `${ apiUrls.local }${ authApiUri }`,\n [ ENV.STAGE ]: `${ apiUrls.stage }${ authApiUri }`,\n [ ENV.SANDBOX ]: `${ apiUrls.sandbox }${ authApiUri }`,\n [ ENV.PRODUCTION ]: `${ apiUrls.production }${ authApiUri }`,\n [ ENV.TEST ]: `${ apiUrls.test }${ authApiUri }`\n };\n },\n\n get paymentApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const paymentApiUri = config.paymentApiUri;\n\n return {\n [ ENV.LOCAL ]: `${ apiUrls.local }${ paymentApiUri }`,\n [ ENV.STAGE ]: `${ apiUrls.stage }${ paymentApiUri }`,\n [ ENV.SANDBOX ]: `${ apiUrls.sandbox }${ paymentApiUri }`,\n [ ENV.PRODUCTION ]: `${ apiUrls.production }${ paymentApiUri }`,\n [ ENV.TEST ]: `${ apiUrls.test }${ paymentApiUri }`\n };\n },\n\n get orderApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const orderApiUri = config.orderApiUri;\n\n return {\n [ENV.LOCAL]: `${ apiUrls.local }${ orderApiUri }`,\n [ENV.STAGE]: `${ apiUrls.stage }${ orderApiUri }`,\n [ENV.SANDBOX]: `${ apiUrls.sandbox }${ orderApiUri }`,\n [ENV.PRODUCTION]: `${ apiUrls.production }${ orderApiUri }`,\n [ENV.TEST]: `${ apiUrls.test }${ orderApiUri }`\n };\n },\n\n get billingApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const billingApiUri = config.billingApiUri;\n\n return {\n [ ENV.LOCAL ]: `${ apiUrls.local }${ billingApiUri }`,\n [ ENV.STAGE ]: `${ apiUrls.stage }${ billingApiUri }`,\n [ ENV.SANDBOX ]: `${ apiUrls.sandbox }${ billingApiUri }`,\n [ ENV.PRODUCTION ]: `${ apiUrls.production }${ billingApiUri }`,\n [ ENV.TEST ]: `${ apiUrls.test }${ billingApiUri }`\n };\n },\n\n get experienceApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const experienceApiUri = config.experienceApiUri;\n\n return {\n [ ENV.LOCAL ]: `${ apiUrls.local }${ experienceApiUri }`,\n [ ENV.STAGE ]: `${ apiUrls.stage }${ experienceApiUri }`,\n [ ENV.SANDBOX ]: `${ apiUrls.sandbox }${ experienceApiUri }`,\n [ ENV.PRODUCTION ]: `${ apiUrls.production }${ experienceApiUri }`,\n [ ENV.TEST ]: `${ apiUrls.test }${ experienceApiUri }`\n };\n },\n\n get trackingApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const trackingApiUri = config.trackingApiUri;\n\n return {\n [ ENV.LOCAL ]: `${ apiUrls.local }${ trackingApiUri }`,\n [ ENV.STAGE ]: `${ apiUrls.stage }${ trackingApiUri }`,\n [ ENV.SANDBOX ]: `${ apiUrls.sandbox }${ trackingApiUri }`,\n [ ENV.PRODUCTION ]: `${ apiUrls.production }${ trackingApiUri }`,\n [ ENV.TEST ]: `${ apiUrls.test }${ trackingApiUri }`\n };\n },\n\n _paypalUrl: '',\n\n get paypalUrl() : string {\n return this._paypalUrl || config.paypalUrls[config.env];\n },\n\n set paypalUrl(value) {\n this._paypalUrl = value;\n },\n\n get paypalDomain() : string {\n return config.paypalDomains[config.env];\n },\n\n get corsApiUrl() : string {\n return config.corsApiUrls[config.env];\n },\n\n get wwwApiUrl() : string {\n return config.wwwApiUrls[config.env];\n },\n\n get apiUrl() : string {\n\n const domain = `${ window.location.protocol }//${ window.location.host }`;\n const corsApiUrl = config.corsApiUrl;\n const wwwApiUrl = config.wwwApiUrl;\n\n return domain === wwwApiUrl ? wwwApiUrl : corsApiUrl;\n },\n\n get checkoutUrl() : string {\n return `${ config.paypalUrl }${ config.checkoutUris[config.env] }`;\n },\n\n get billingUrl() : string {\n return `${ config.paypalUrl }${ config.billingUris[config.env] }`;\n },\n\n get buttonUrl() : string {\n return `${ config.paypalUrl }${ config.buttonUris[config.env] }`;\n },\n\n get legacyCheckoutUrl() : string {\n return config.legacyCheckoutUrls[config.env];\n },\n\n get postBridgeUrl() : string {\n return `${ config.paypalUrl }${ config.postBridgeUri }`;\n },\n\n get postBridgeDomain() : string {\n return `${ config.paypalDomain }`;\n },\n\n get loggerUrl() : string {\n const isTestExperiment = Math.random() < config.loggerThrottlePercentage;\n const loggerUrl = isTestExperiment ? config.loggerUri : config.hermesLoggerUri;\n\n return `${ config.paypalUrl }${ loggerUrl }`;\n },\n\n get pptmUrl() : string {\n return `${ config.paypalUrls[config.env] }${ config.pptmUri }`;\n },\n\n get authApiUrl() : string {\n return `${ config.apiUrl }${ config.authApiUri }`;\n },\n\n get paymentApiUrl() : string {\n return `${ config.apiUrl }${ config.paymentApiUri }`;\n },\n\n get orderApiUrl() : string {\n return `${ config.apiUrl }${ config.orderApiUri }`;\n },\n\n get billingApiUrl() : string {\n return `${ config.apiUrl }${ config.billingApiUri }`;\n },\n\n get experienceApiUrl() : string {\n return `${ config.apiUrl }${ config.experienceApiUri }`;\n },\n\n defaultLocale: {\n country: COUNTRY.US,\n lang: LANG.EN\n }\n};\n","/* @flow */\n\nexport * from './config';\n","\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nexport function extend(dest, src, over=true) {\n dest = dest || {};\n src = src || {};\n\n for (let i in src) {\n if (src.hasOwnProperty(i)) {\n if (over || !dest.hasOwnProperty(i)) {\n dest[i] = src[i];\n }\n }\n }\n\n return dest;\n}\n\nexport function isSameProtocol(url) {\n return window.location.protocol === url.split('/')[0];\n}\n\nexport function isSameDomain(url) {\n let match = url.match(/https?:\\/\\/[^/]+/);\n\n if (!match) {\n return true;\n }\n\n return match[0] === `${window.location.protocol}//${window.location.host}`;\n}\n\nexport function ajax(method, url, headers={}, data={}, { fireAndForget = false } = {}) {\n\n return new ZalgoPromise(resolve => {\n let XRequest = window.XMLHttpRequest || window.ActiveXObject;\n\n if (window.XDomainRequest && !isSameDomain(url)) {\n\n if (!isSameProtocol(url)) {\n return resolve();\n }\n\n XRequest = window.XDomainRequest;\n }\n\n let req = new XRequest('MSXML2.XMLHTTP.3.0');\n req.open(method.toUpperCase(), url, true);\n\n if (typeof req.setRequestHeader === 'function') {\n req.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n req.setRequestHeader('Content-type', 'application/json');\n\n for (let headerName in headers) {\n if (headers.hasOwnProperty(headerName)) {\n req.setRequestHeader(headerName, headers[headerName]);\n }\n }\n }\n\n if (fireAndForget) {\n resolve();\n } else {\n req.onreadystatechange = () => {\n if (req.readyState > 3) {\n resolve();\n }\n };\n }\n\n req.send(JSON.stringify(data).replace(/&/g, '%26'));\n });\n}\n\nexport function promiseDebounce(method, interval) {\n\n let debounce = {};\n\n return function() {\n let args = arguments;\n\n if (debounce.timeout) {\n clearTimeout(debounce.timeout);\n delete debounce.timeout;\n }\n\n debounce.timeout = setTimeout(() => {\n\n let resolver = debounce.resolver;\n let rejector = debounce.rejector;\n\n delete debounce.promise;\n delete debounce.resolver;\n delete debounce.rejector;\n delete debounce.timeout;\n\n return ZalgoPromise.resolve().then(() => {\n return method.apply(null, args);\n }).then(resolver, rejector);\n\n }, interval);\n\n debounce.promise = debounce.promise || new ZalgoPromise((resolver, rejector) => {\n debounce.resolver = resolver;\n debounce.rejector = rejector;\n });\n\n return debounce.promise;\n };\n}\n\nexport function onWindowReady() : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n if (typeof document !== 'undefined' && document.readyState === 'complete') {\n resolve();\n }\n\n window.addEventListener('load', resolve);\n });\n}\n\nexport function safeInterval(method, time) {\n\n let timeout;\n\n function loop() {\n timeout = setTimeout(() => {\n method();\n loop();\n }, time);\n }\n\n loop();\n\n return {\n cancel() {\n clearTimeout(timeout);\n }\n };\n}\n\nexport function uniqueID() {\n let chars = '0123456789abcdef';\n\n return 'xxxxxxxxxx'.replace(/./g, () => {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n });\n}\n\nexport function isIE() {\n return Boolean(window.document.documentMode);\n}\n","\nexport let payloadBuilders = [];\nexport let metaBuilders = [];\nexport let trackingBuilders = [];\nexport let headerBuilders = [];\n\nexport function addPayloadBuilder(builder) {\n payloadBuilders.push(builder);\n}\n\nexport function addMetaBuilder(builder) {\n metaBuilders.push(builder);\n}\n\nexport function addTrackingBuilder(builder) {\n trackingBuilders.push(builder);\n}\n\nexport function addHeaderBuilder(builder) {\n headerBuilders.push(builder);\n}","\nexport let config = {\n\n uri: '',\n prefix: '',\n\n initial_state_name: 'init',\n\n flushInterval: 10 * 60 * 1000,\n debounceInterval: 10,\n\n sizeLimit: 300,\n\n // Supress `console.log`s when `true`\n // Recommended for production usage\n silent: false,\n\n heartbeat: true,\n heartbeatConsoleLog: true,\n heartbeatInterval: 5000,\n heartbeatTooBusy: false,\n heartbeatTooBusyThreshold: 10000,\n\n logLevel: 'warn',\n\n autoLog: ['warn', 'error'],\n\n logUnload: true,\n logPerformance: true\n};\n\nexport let logLevels = [ 'error', 'warn', 'info', 'debug' ];\n","\nimport { extend, promiseDebounce, ajax, isIE } from './util';\nimport { payloadBuilders, metaBuilders, trackingBuilders, headerBuilders } from './builders';\nimport { config, logLevels } from './config';\n\nexport let buffer = [];\nexport let tracking = [];\n\nlet transport = (headers, data, options) => {\n return ajax('post', config.uri, headers, data, options);\n}\n\nexport function getTransport() {\n return transport;\n}\n\nexport function setTransport(newTransport) {\n transport = newTransport;\n}\n\nlet loaded = false;\n\nsetTimeout(() => {\n loaded = true;\n}, 1);\n\nexport function print(level, event, payload) {\n\n if (typeof window === 'undefined' || !window.console || !window.console.log) {\n return;\n }\n\n if (!loaded) {\n return setTimeout(() => print(level, event, payload), 1);\n }\n\n let logLevel = config.logLevel;\n\n if (window.LOG_LEVEL) {\n logLevel = window.LOG_LEVEL;\n }\n\n if (logLevels.indexOf(level) > logLevels.indexOf(logLevel)) {\n return;\n }\n\n payload = payload || {};\n\n let args = [event];\n\n if(isIE()){\n payload = JSON.stringify(payload);\n }\n\n args.push(payload);\n\n if (payload.error || payload.warning) {\n args.push('\\n\\n', payload.error || payload.warning);\n }\n\n try {\n if (window.console[level] && window.console[level].apply) {\n window.console[level].apply(window.console, args);\n } else if (window.console.log && window.console.log.apply) {\n window.console.log.apply(window.console, args);\n }\n } catch (err) {\n // pass\n }\n}\n\nexport function immediateFlush({ fireAndForget = false } = {}) {\n\n if (typeof window === 'undefined') {\n return;\n }\n\n if (!config.uri) {\n return;\n }\n\n let hasBuffer = buffer.length;\n let hasTracking = tracking.length;\n\n if (!hasBuffer && !hasTracking) {\n return;\n }\n\n let meta = {};\n\n for (let builder of metaBuilders) {\n try {\n extend(meta, builder(meta), false);\n } catch (err) {\n console.error('Error in custom meta builder:', err.stack || err.toString());\n }\n }\n\n let headers = {};\n\n for (let builder of headerBuilders) {\n try {\n extend(headers, builder(headers), false);\n } catch (err) {\n console.error('Error in custom header builder:', err.stack || err.toString());\n }\n }\n\n let events = buffer;\n\n let req = transport(headers, {\n events,\n meta,\n tracking\n }, {\n fireAndForget\n });\n\n buffer = [];\n tracking = [];\n\n return req;\n}\n\nexport let flush = promiseDebounce(immediateFlush, config.debounceInterval);\n\n\nfunction enqueue(level, event, payload) {\n\n buffer.push({\n level,\n event,\n payload\n });\n\n if (config.autoLog.indexOf(level) > -1) {\n flush();\n }\n}\n\n\nexport function log(level, event, payload) {\n\n if (typeof window === 'undefined') {\n return;\n }\n\n if (config.prefix) {\n event = `${config.prefix}_${event}`;\n }\n\n payload = payload || {};\n\n if (typeof payload === 'string') {\n payload = {\n message: payload\n };\n } else if (payload instanceof Error) {\n payload = {\n error: payload.stack || payload.toString()\n }\n }\n\n try {\n JSON.stringify(payload);\n } catch (err) {\n return;\n }\n\n payload.timestamp = Date.now();\n\n for (let builder of payloadBuilders) {\n try {\n extend(payload, builder(payload), false);\n } catch (err) {\n console.error('Error in custom payload builder:', err.stack || err.toString());\n }\n }\n\n if (!config.silent) {\n print(level, event, payload);\n }\n\n if (buffer.length === config.sizeLimit) {\n enqueue('info', 'logger_max_buffer_length');\n }\n else if (buffer.length < config.sizeLimit) {\n enqueue(level, event, payload);\n }\n}\n\nexport function prefix(name) {\n\n return {\n debug(event, payload) {\n return log('debug', `${name}_${event}`, payload);\n },\n\n info(event, payload) {\n return log('info', `${name}_${event}`, payload);\n },\n\n warn(event, payload) {\n return log('warn', `${name}_${event}`, payload);\n },\n\n error(event, payload) {\n return log('error', `${name}_${event}`, payload);\n },\n\n track(payload) {\n return track(payload);\n },\n\n flush() {\n return flush();\n }\n };\n}\n\nexport function debug(event, payload) {\n return log('debug', event, payload);\n}\n\nexport function info(event, payload) {\n return log('info', event, payload);\n}\n\nexport function warn(event, payload) {\n return log('warn', event, payload);\n}\n\nexport function error(event, payload) {\n return log('error', event, payload);\n}\n\nexport function track(payload) {\n\n if (typeof window === 'undefined') {\n return;\n }\n\n if (payload) {\n\n try {\n JSON.stringify(payload);\n } catch (err) {\n return;\n }\n\n for (let builder of trackingBuilders) {\n try {\n extend(payload, builder(payload), false);\n } catch (err) {\n console.error('Error in custom tracking builder:', err.stack || err.toString());\n }\n }\n\n print('debug', 'tracking', payload);\n\n tracking.push(payload);\n }\n}\n","\nimport { config } from './config';\nimport { info } from './logger';\nimport { addPayloadBuilder } from './builders'\nimport { onWindowReady, safeInterval } from './util';\n\nlet enablePerformance = window &&\n window.performance &&\n performance.now &&\n performance.timing &&\n performance.timing.connectEnd &&\n performance.timing.navigationStart &&\n (Math.abs(performance.now() - Date.now()) > 1000) &&\n (performance.now() - (performance.timing.connectEnd - performance.timing.navigationStart)) > 0;\n\n\nexport function now() {\n if (enablePerformance) {\n return performance.now();\n } else {\n return Date.now();\n }\n}\n\nfunction timer(startTime) {\n startTime = startTime !== undefined ? startTime : now();\n\n return {\n startTime,\n\n elapsed() {\n return parseInt(now() - startTime, 10);\n },\n\n reset() {\n startTime = now();\n }\n };\n}\n\nexport function reqStartElapsed() {\n if (enablePerformance) {\n let timing = window.performance.timing;\n return parseInt(timing.connectEnd - timing.navigationStart, 10);\n }\n}\n\nexport let clientTimer = timer();\nexport let reqTimer = timer(reqStartElapsed());\n\nexport function initHeartBeat() {\n\n let heartBeatTimer = timer();\n let heartbeatCount = 0;\n\n safeInterval(() => {\n\n if (config.heartbeatMaxThreshold && (heartbeatCount > config.heartbeatMaxThreshold)) {\n return;\n }\n\n heartbeatCount += 1;\n\n let elapsed = heartBeatTimer.elapsed();\n let lag = elapsed - config.heartbeatInterval;\n\n let heartbeatPayload = {\n count: heartbeatCount,\n elapsed\n };\n\n if (config.heartbeatTooBusy) {\n heartbeatPayload.lag = lag;\n\n if (lag >= config.heartbeatTooBusyThreshold) {\n info('toobusy', heartbeatPayload, {\n noConsole: !config.heartbeatConsoleLog\n });\n }\n }\n\n info('heartbeat', heartbeatPayload, {\n noConsole: !config.heartbeatConsoleLog\n });\n\n }, config.heartbeatInterval);\n}\n\nexport function initPerformance() {\n\n if (!enablePerformance) {\n return info('no_performance_data');\n }\n\n addPayloadBuilder(() => {\n\n let payload = {};\n\n payload.client_elapsed = clientTimer.elapsed();\n\n if (enablePerformance) {\n payload.req_elapsed = reqTimer.elapsed();\n }\n\n return payload;\n });\n\n onWindowReady().then(() => {\n\n let keys = [\n 'connectEnd', 'connectStart', 'domComplete', 'domContentLoadedEventEnd',\n 'domContentLoadedEventStart', 'domInteractive', 'domLoading', 'domainLookupEnd',\n 'domainLookupStart', 'fetchStart', 'loadEventEnd', 'loadEventStart', 'navigationStart',\n 'redirectEnd', 'redirectStart', 'requestStart', 'responseEnd', 'responseStart',\n 'secureConnectionStart', 'unloadEventEnd', 'unloadEventStart'\n ];\n\n let timing = {};\n\n keys.forEach(key => {\n timing[key] = parseInt(window.performance.timing[key], 10) || 0;\n });\n\n let offset = timing.connectEnd - timing.navigationStart;\n\n if (timing.connectEnd) {\n Object.keys(timing).forEach(name => {\n let time = timing[name];\n if (time) {\n info(`timing_${name}`, {\n client_elapsed: parseInt(time - timing.connectEnd - (clientTimer.startTime - offset), 10),\n req_elapsed: parseInt(time - timing.connectEnd, 10)\n });\n }\n });\n }\n\n info('timing', timing);\n info('memory', window.performance.memory);\n info('navigation', window.performance.navigation);\n\n if (window.performance.getEntries) {\n window.performance.getEntries().forEach(resource => {\n if (['link', 'script', 'img', 'css'].indexOf(resource.initiatorType) > -1) {\n info(resource.initiatorType, resource);\n }\n });\n }\n });\n}\n","\nimport { config } from './config';\nimport { extend } from './util';\nimport { initPerformance, initHeartBeat } from './performance';\nimport { log, info, flush, immediateFlush } from './logger';\n\nlet initiated = false;\n\nexport function init(conf) {\n extend(config, conf || {});\n\n if (initiated) {\n return;\n }\n\n initiated = true;\n\n if (config.logPerformance) {\n initPerformance();\n }\n\n if (config.heartbeat) {\n initHeartBeat();\n }\n\n if (config.logUnload) {\n window.addEventListener('beforeunload', () => {\n info('window_beforeunload');\n immediateFlush({ fireAndForget: true });\n });\n\n window.addEventListener('unload', () => {\n info('window_unload');\n immediateFlush({ fireAndForget: true });\n });\n }\n\n if (config.flushInterval) {\n setInterval(flush, config.flushInterval);\n }\n\n if (window.beaverLogQueue) {\n window.beaverLogQueue.forEach(payload => {\n log(payload.level, payload.event, payload);\n });\n delete window.beaverLogQueue;\n }\n}\n","\nimport { reqStartElapsed, now } from './performance';\nimport { info, immediateFlush, track } from './logger';\nimport { addMetaBuilder, addPayloadBuilder } from './builders';\nimport { uniqueID } from './util';\nimport { config } from './config';\n\nlet windowID = uniqueID();\nlet pageID = uniqueID();\n\nlet currentState = config.initial_state_name;\nlet startTime;\n\nexport function startTransition() {\n startTime = now();\n}\n\nexport function endTransition(toState) {\n startTime = startTime || reqStartElapsed();\n\n let currentTime = now();\n let elapsedTime;\n\n if (startTime !== undefined) {\n elapsedTime = parseInt(currentTime - startTime, 0);\n }\n\n let transitionName = `transition_${currentState}_to_${toState}`;\n\n info(transitionName, {\n duration: elapsedTime\n });\n\n track({\n transition: transitionName,\n transition_time: elapsedTime\n });\n\n immediateFlush();\n\n startTime = currentTime;\n currentState = toState;\n pageID = uniqueID();\n}\n\nexport function transition(toState) {\n startTransition();\n endTransition(toState);\n}\n\naddPayloadBuilder(() => {\n return {\n windowID,\n pageID\n }\n});\n\naddMetaBuilder(() => {\n return {\n state: `ui_${currentState}`\n };\n});\n","\nexport * from './logger';\nexport * from './init';\nexport * from './transitions';\nexport * from './builders';\nexport * from './config';","\nimport * as INTERFACE from './interface';\nexport * from './interface';\nexport default INTERFACE;","/* @flow */\n/* eslint max-lines: off */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\n\nimport type { CancelableType } from '../types';\n\n/* Url Encode\n ----------\n\n Replace ? and & with encoded values. Allows other values (to create more readable urls than encodeUriComponent)\n*/\n\nexport function urlEncode(str : string) : string {\n return str.replace(/\\?/g, '%3F').replace(/&/g, '%26').replace(/#/g, '%23').replace(/\\+/g, '%2B');\n}\n\n\n/* Camel To Dasherize\n ------------------\n\n Convert camelCaseText to dasherized-text\n*/\n\nexport function camelToDasherize(string : string) : string {\n return string.replace(/([A-Z])/g, (g) => {\n return `-${ g.toLowerCase() }`;\n });\n}\n\n\n/* Dasherize to Camel\n ------------------\n\n Convert dasherized-text to camelCaseText\n*/\n\nexport function dasherizeToCamel(string : string) : string {\n return string.replace(/-([a-z])/g, (g) => {\n return g[1].toUpperCase();\n });\n}\n\n\n/* Extend\n ------\n\n Extend one object with another\n*/\n\nexport function extend(obj : Object, source : ?Object) : Object {\n if (!source) {\n return obj;\n }\n\n for (let key in source) {\n if (source.hasOwnProperty(key)) {\n obj[key] = source[key];\n }\n }\n\n return obj;\n}\n\n\n/* Values\n ------\n\n Get all of the values from an object as an array\n*/\n\nexport function values(obj : Object) : Array {\n let results = [];\n\n for (let key in obj) {\n if (obj.hasOwnProperty(key)) {\n results.push(obj[key]);\n }\n }\n\n return results;\n}\n\n\n/* Unique ID\n ---------\n\n Generate a unique, random hex id\n*/\n\nexport function uniqueID() : string {\n\n let chars = '0123456789abcdef';\n\n return 'xxxxxxxxxx'.replace(/./g, () => {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n });\n}\n\n/* Stringify with Functions\n ------------------------\n\n JSON Stringify with added support for functions\n*/\n\nexport function stringifyWithFunctions(obj : Object) : string {\n return JSON.stringify(obj, (key, val) => {\n if (typeof val === 'function') {\n return val.toString();\n }\n return val;\n });\n}\n\n\n/* Safe Get\n --------\n\n Get a property without throwing error\n*/\n\nexport function safeGet(obj : Object, prop : string) : mixed {\n\n let result;\n\n try {\n result = obj[prop];\n } catch (err) {\n // pass\n }\n\n return result;\n}\n\n\n/* Capitalize First Letter\n -----------------------\n*/\n\nexport function capitalizeFirstLetter(string : string) : string {\n return string.charAt(0).toUpperCase() + string.slice(1).toLowerCase();\n}\n\n\n/* Get\n ---\n\n Recursively gets a deep path from an object, returning a default value if any level is not found\n*/\n\nexport function get(item : Object, path : string, def : mixed) : mixed {\n\n if (!path) {\n return def;\n }\n\n let pathParts = path.split('.');\n\n // Loop through each section of our key path\n\n for (let i = 0; i < pathParts.length; i++) {\n\n // If we have an object, we can get the key\n\n if (typeof item === 'object' && item !== null) {\n item = item[pathParts[i]];\n\n // Otherwise, we should return the default (undefined if not provided)\n } else {\n return def;\n }\n }\n\n // If our final result is undefined, we should return the default\n\n return item === undefined ? def : item;\n}\n\n\n/* Safe Interval\n -------------\n\n Implement setInterval using setTimeout, to avoid stacking up calls from setInterval\n*/\n\nexport function safeInterval(method : Function, time : number) : CancelableType {\n\n let timeout;\n\n function runInterval() {\n timeout = setTimeout(runInterval, time);\n method.call();\n }\n\n timeout = setTimeout(runInterval, time);\n\n return {\n cancel() {\n clearTimeout(timeout);\n }\n };\n}\n\n/* Safe Interval\n -------------\n\n Run timeouts at 100ms intervals so we can account for busy browsers\n*/\n\nexport function safeTimeout(method : Function, time : number) {\n\n let interval = safeInterval(() => {\n time -= 100;\n if (time <= 0) {\n interval.cancel();\n method();\n }\n }, 100);\n}\n\n\nexport function each(item : Array | Object, callback : Function) {\n\n if (!item) {\n return;\n }\n\n if (Array.isArray(item)) {\n let len = item.length;\n for (let i = 0; i < len; i++) {\n callback(item[i], i);\n }\n\n } else if (typeof item === 'object') {\n let keys = Object.keys(item);\n let len = keys.length;\n for (let i = 0; i < len; i++) {\n let key = keys[i];\n callback(item[key], key);\n }\n }\n}\n\n\nexport function replaceObject> (item : T, replacers : { [string] : Function }, fullKey : string = '') : T {\n\n if (Array.isArray(item)) {\n let length = item.length;\n let result = [];\n\n for (let i = 0; i < length; i++) {\n Object.defineProperty(result, i, {\n configurable: true,\n enumerable: true,\n get: () => {\n let itemKey = fullKey ? `${ fullKey }.${ i }` : `${ i }`;\n let child = item[i];\n\n let type = (typeof child);\n let replacer = replacers[type];\n if (replacer) {\n let replaced = replacer(child, i, itemKey);\n if (typeof replaced !== 'undefined') {\n result[i] = replaced;\n return result[i];\n }\n }\n\n if (typeof child === 'object' && child !== null) {\n result[i] = replaceObject(child, replacers, itemKey);\n return result[i];\n }\n\n result[i] = child;\n return result[i];\n },\n set: (value) => {\n delete result[i];\n result[i] = value;\n }\n });\n }\n\n // $FlowFixMe\n return result;\n } else if (typeof item === 'object' && item !== null) {\n let result = {};\n\n for (let key in item) {\n if (!item.hasOwnProperty(key)) {\n continue;\n }\n\n Object.defineProperty(result, key, {\n configurable: true,\n enumerable: true,\n get: () => {\n let itemKey = fullKey ? `${ fullKey }.${ key }` : `${ key }`;\n // $FlowFixMe\n let child = item[key];\n\n let type = (typeof child);\n let replacer = replacers[type];\n if (replacer) {\n let replaced = replacer(child, key, itemKey);\n if (typeof replaced !== 'undefined') {\n result[key] = replaced;\n return result[key];\n }\n }\n\n if (typeof child === 'object' && child !== null) {\n result[key] = replaceObject(child, replacers, itemKey);\n return result[key];\n }\n\n result[key] = child;\n return result[key];\n },\n set: (value) => {\n delete result[key];\n result[key] = value;\n }\n });\n }\n\n // $FlowFixMe\n return result;\n } else {\n throw new Error(`Pass an object or array`);\n }\n}\n\n\nexport function copyProp(source : Object, target : Object, name : string, def : mixed) {\n if (source.hasOwnProperty(name)) {\n let descriptor = Object.getOwnPropertyDescriptor(source, name);\n // $FlowFixMe\n Object.defineProperty(target, name, descriptor);\n\n } else {\n target[name] = def;\n }\n}\n\nexport function dotify(obj : Object, prefix : string = '', newobj : Object = {}) : { [string] : string } {\n prefix = prefix ? `${ prefix }.` : prefix;\n for (let key in obj) {\n if (obj[key] === undefined || obj[key] === null || typeof obj[key] === 'function') {\n continue;\n } else if (obj[key] && Array.isArray(obj[key]) && obj[key].length && obj[key].every(val => typeof val !== 'object')) {\n newobj[`${ prefix }${ key }`] = obj[key].join(',');\n } else if (obj[key] && typeof obj[key] === 'object') {\n newobj = dotify(obj[key], `${ prefix }${ key }`, newobj);\n } else {\n newobj[`${ prefix }${ key }`] = obj[key].toString();\n }\n }\n return newobj;\n}\n\nlet objectIDs = new WeakMap();\n\nexport function getObjectID(obj : Object) : string {\n\n if (obj === null || obj === undefined || (typeof obj !== 'object' && typeof obj !== 'function')) {\n throw new Error(`Invalid object`);\n }\n\n let uid = objectIDs.get(obj);\n\n if (!uid) {\n uid = `${ typeof obj }:${ uniqueID() }`;\n objectIDs.set(obj, uid);\n }\n\n return uid;\n}\n\ntype RegexResultType = {\n text : string,\n groups : Array,\n start : number,\n end : number,\n length : number,\n replace : (text : string) => string\n};\n\nexport function regex(pattern : string | RegExp, string : string, start : number = 0) : ?RegexResultType {\n\n if (typeof pattern === 'string') {\n // eslint-disable-next-line security/detect-non-literal-regexp\n pattern = new RegExp(pattern);\n }\n\n let result = string.slice(start).match(pattern);\n\n if (!result) {\n return;\n }\n\n // $FlowFixMe\n let index : number = result.index;\n let match = result[0];\n\n return {\n text: match,\n groups: result.slice(1),\n start: start + index,\n end: start + index + match.length,\n length: match.length,\n\n replace(text : string) : string {\n\n if (!match) {\n return '';\n }\n\n return `${ match.slice(0, start + index) }${ text }${ match.slice(index + match.length) }`;\n }\n };\n}\n\nexport function regexAll(pattern : string | RegExp, string : string) : Array {\n\n let matches = [];\n let start = 0;\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n let match = regex(pattern, string, start);\n\n if (!match) {\n break;\n }\n\n matches.push(match);\n start = match.end;\n }\n\n return matches;\n}\n\nexport function count(str : string, substr : string) : number {\n\n let startIndex = 0;\n let itemCount = 0;\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n let index = str.indexOf(substr, startIndex);\n\n if (index === -1) {\n break;\n }\n\n startIndex = index;\n itemCount += 1;\n }\n\n return itemCount;\n}\n\nexport function stringify(item : mixed) : string {\n if (typeof item === 'string') {\n return item;\n }\n\n if (item && typeof item.toString === 'function') {\n return item.toString();\n }\n\n return Object.prototype.toString.call(item);\n}\n\nexport function stringifyError(err : mixed) : string {\n if (err) {\n // $FlowFixMe\n let { stack, message } = err;\n\n if (typeof stack === 'string') {\n return stack;\n }\n\n if (typeof message === 'string') {\n return message;\n }\n }\n\n return stringify(err);\n}\n\nexport type EventEmitterType = {\n on : (eventName : string, handler : Function) => CancelableType,\n once : (eventName : string, handler : Function) => CancelableType,\n trigger : (eventName : string) => void,\n triggerOnce : (eventName : string) => void\n};\n\nexport function eventEmitter() : EventEmitterType {\n\n let triggered = {};\n let handlers = {};\n\n return {\n\n on(eventName : string, handler : Function) : CancelableType {\n\n let handlerList = handlers[eventName] = handlers[eventName] || [];\n\n handlerList.push(handler);\n\n let cancelled = false;\n\n return {\n cancel() {\n if (!cancelled) {\n cancelled = true;\n handlerList.splice(handlerList.indexOf(handler), 1);\n }\n\n }\n };\n },\n\n once(eventName : string, handler : Function) : CancelableType {\n\n let listener = this.on(eventName, () => {\n listener.cancel();\n handler();\n });\n\n return listener;\n },\n\n trigger(eventName : string) {\n\n let handlerList = handlers[eventName];\n\n if (handlerList) {\n for (let handler of handlerList) {\n handler();\n }\n }\n },\n\n triggerOnce(eventName : string) {\n\n if (triggered[eventName]) {\n return;\n }\n\n triggered[eventName] = true;\n this.trigger(eventName);\n }\n };\n}\n","/* @flow */\n\nimport { getObjectID, replaceObject } from './util';\n\n\n/* Noop\n ----\n\n Do nothing, zilch, nada, zip\n*/\n\nexport function noop() {\n // pass\n}\n\n\n/* Once\n ----\n\n Create a wrapper function which only allows the inner function to run once, otherwise is a noop\n*/\n\nexport function once(method : (...args : Array) => T) : (...args : Array) => T {\n\n let called = false;\n let result;\n\n // eslint-disable-next-line no-unused-vars\n return function onceWrapper(...args : Array) : T {\n if (called) {\n return result;\n }\n\n called = true;\n result = method.apply(this, arguments);\n return result;\n };\n}\n\n\n/* Memoize\n -------\n\n Create a wrapper function which caches the result of the first call, then for subsequent calls returns the cached value\n*/\n\nexport function memoize(method : (...args : Array) => T) : (...args : Array) => T {\n\n let results = {};\n\n // eslint-disable-next-line no-unused-vars\n return function memoizeWrapper(...args : Array) : T {\n\n let cacheKey;\n\n try {\n cacheKey = JSON.stringify(Array.prototype.slice.call(arguments), (key, val) => {\n\n if (typeof val === 'function') {\n return `zoid:memoize[${ getObjectID(val) }]`;\n }\n\n return val;\n });\n\n } catch (err) {\n throw new Error('Arguments not serializable -- can not be used to memoize');\n }\n\n if (!results.hasOwnProperty(cacheKey)) {\n results[cacheKey] = method.apply(this, arguments);\n }\n\n return results[cacheKey];\n };\n}\n\nexport function debounce(method : (...args : Array) => T, time : number = 100) : (...args : Array) => void {\n\n let timeout;\n\n return function debounceWrapper() {\n clearTimeout(timeout);\n\n timeout = setTimeout(() => {\n return method.apply(this, arguments);\n }, time);\n };\n}\n\nexport function serializeFunctions>(obj : T) : T {\n return replaceObject(obj, {\n 'function': () => {\n return {\n __type__: '__function__'\n };\n }\n });\n}\n\nexport function deserializeFunctions>(obj : T, handler : Function) : T {\n return replaceObject(obj, {\n 'object': (value, key, fullKey) => {\n if (value && value.__type__ === '__function__') {\n return function deserializedFunctionWrapper() : mixed {\n return handler({ key, fullKey, self: this, args: arguments });\n };\n }\n }\n });\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { isWindowClosed, linkFrameWindow, type CrossDomainWindowType, type SameDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\n\nimport { PopupOpenError } from '../error';\nimport type { ElementRefType, CancelableType } from '../types';\n\nimport { once, memoize, debounce } from './fn';\nimport { extend, safeInterval, urlEncode, capitalizeFirstLetter, stringify } from './util';\n\nexport function appendChild(container : HTMLElement, child : HTMLElement | Text) {\n container.appendChild(child);\n}\n\nfunction isElement(element : mixed) : boolean {\n\n if (element instanceof window.Element) {\n return true;\n }\n\n if (element !== null && typeof element === 'object' && element.nodeType === 1 && typeof element.style === 'object' && typeof element.ownerDocument === 'object') {\n return true;\n }\n\n return false;\n}\n\nexport function querySelectorAll(el : HTMLElement, selector : string) : Array {\n return Array.prototype.slice.call(el.querySelectorAll(selector));\n}\n\n/* Get Element\n -----------\n\n Gets an element based on\n\n - Element id\n - CSS Query selector\n*/\n\nexport function getElementSafe(id : ElementRefType) : ?HTMLElement {\n\n if (isElement(id)) {\n // $FlowFixMe\n return id;\n }\n\n if (typeof id === 'string') {\n let element = document.getElementById(id);\n\n if (element) {\n return element;\n }\n\n if (document.querySelector) {\n element = document.querySelector(id);\n }\n\n if (element) {\n return element;\n }\n }\n}\n\nexport function getElement(id : ElementRefType) : HTMLElement {\n\n let element = getElementSafe(id);\n\n if (element) {\n return element;\n }\n\n throw new Error(`Can not find element: ${ stringify(id) }`);\n}\n\n\nexport let documentReady = new ZalgoPromise(resolve => {\n\n if (window.document.readyState === 'complete') {\n return resolve(window.document);\n }\n\n let interval = setInterval(() => {\n if (window.document.readyState === 'complete') {\n clearInterval(interval);\n return resolve(window.document);\n }\n }, 10);\n});\n\nexport function isDocumentReady() : boolean {\n return window.document.readyState === 'complete';\n}\n\nexport function elementReady(id : ElementRefType) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n let name = stringify(id);\n let el = getElementSafe(id);\n\n if (el) {\n return resolve(el);\n }\n\n if (isDocumentReady()) {\n return reject(new Error(`Document is ready and element ${ name } does not exist`));\n }\n\n let interval = setInterval(() => {\n\n el = getElementSafe(id);\n\n if (el) {\n clearInterval(interval);\n return resolve(el);\n }\n\n if (isDocumentReady()) {\n clearInterval(interval);\n return reject(new Error(`Document is ready and element ${ name } does not exist`));\n }\n }, 10);\n });\n}\n\n\n/* Popup\n -----\n\n Open a popup window with the specified option map\n*/\n\nexport function popup(url : string, options : { [ string ] : mixed }) : CrossDomainWindowType {\n\n // eslint-disable-next-line array-callback-return\n let params = Object.keys(options).map((key) => {\n if (options[key]) {\n return `${ key }=${ stringify(options[key]) }`;\n }\n }).filter(Boolean).join(',');\n\n let win;\n\n try {\n win = window.open(url, options.name, params, true);\n } catch (err) {\n throw new PopupOpenError(`Can not open popup window - ${ err.stack || err.message }`);\n }\n\n if (isWindowClosed(win)) {\n let err = new PopupOpenError(`Can not open popup window - blocked`);\n throw err;\n }\n\n return win;\n}\n\n\nexport function writeToWindow(win : SameDomainWindowType, html : string) {\n try {\n win.document.open();\n win.document.write(html);\n win.document.close();\n } catch (err) {\n try {\n win.location = `javascript: document.open(); document.write(${ JSON.stringify(html) }); document.close();`;\n } catch (err2) {\n // pass\n }\n }\n}\n\nexport function writeElementToWindow(win : SameDomainWindowType, el : HTMLElement) {\n\n let tag = el.tagName.toLowerCase();\n\n if (tag !== 'html') {\n throw new Error(`Expected element to be html, got ${ tag }`);\n }\n\n let documentElement = win.document.documentElement;\n\n while (documentElement.children && documentElement.children.length) {\n documentElement.removeChild(documentElement.children[0]);\n }\n\n while (el.children.length) {\n documentElement.appendChild(el.children[0]);\n }\n}\n\nexport function setStyle(el : HTMLElement, styleText : string, doc : Document = window.document) {\n // $FlowFixMe\n if (el.styleSheet) {\n // $FlowFixMe\n el.styleSheet.cssText = styleText;\n } else {\n el.appendChild(doc.createTextNode(styleText));\n }\n}\n\n/* Create Element\n --------------\n\n Create an element with style, html, classes, attributes etc. and append it to the specified container\n*/\n\nexport type ElementOptionsType = {\n style? : { [ string ] : string },\n class? : ?Array,\n attributes? : { [ string ] : string },\n styleSheet? : ?string,\n html? : ?string\n};\n\nexport function createElement(tag : string = 'div', options : ElementOptionsType = {}, container : ?HTMLElement) : HTMLElement {\n\n tag = tag.toLowerCase();\n let element = document.createElement(tag);\n\n if (options.style) {\n extend(element.style, options.style);\n }\n\n if (options.class) {\n element.className = options.class.join(' ');\n }\n\n if (options.attributes) {\n for (let key of Object.keys(options.attributes)) {\n element.setAttribute(key, options.attributes[key]);\n }\n }\n\n if (options.styleSheet) {\n setStyle(element, options.styleSheet);\n }\n\n if (container) {\n appendChild(container, element);\n }\n\n if (options.html) {\n if (tag === 'iframe') {\n // $FlowFixMe\n if (!container || !element.contentWindow) {\n throw new Error(`Iframe html can not be written unless container provided and iframe in DOM`);\n }\n\n // $FlowFixMe\n writeToWindow(element.contentWindow, options.html);\n\n } else {\n element.innerHTML = options.html;\n }\n }\n\n return element;\n}\n\nlet awaitFrameLoadPromises : WeakMap> = new WeakMap();\n\nexport function awaitFrameLoad(frame : HTMLIFrameElement) : ZalgoPromise {\n\n if (awaitFrameLoadPromises.has(frame)) {\n let promise = awaitFrameLoadPromises.get(frame);\n if (promise) {\n return promise;\n }\n }\n\n let promise = new ZalgoPromise((resolve, reject) => {\n frame.addEventListener('load', () => {\n linkFrameWindow(frame);\n resolve(frame);\n });\n\n frame.addEventListener('error', (err : Event) => {\n if (frame.contentWindow) {\n resolve(frame);\n } else {\n reject(err);\n }\n });\n });\n\n awaitFrameLoadPromises.set(frame, promise);\n\n return promise;\n}\n\nexport function awaitFrameWindow(frame : HTMLIFrameElement) : ZalgoPromise {\n\n if (frame.contentWindow) {\n return ZalgoPromise.resolve(frame.contentWindow);\n }\n\n return awaitFrameLoad(frame).then(loadedFrame => {\n\n if (!loadedFrame.contentWindow) {\n throw new Error(`Could not find window in iframe`);\n }\n\n return loadedFrame.contentWindow;\n });\n}\n\n\n/* Iframe\n ------\n\n Open an iframe with the specified container, url, and option property map\n*/\n\nexport type IframeElementOptionsType = {\n style? : { [ string ] : string },\n class? : ?Array,\n attributes? : { [ string ] : string },\n styleSheet? : ?string,\n html? : ?string,\n url? : ?string\n};\n\nexport function iframe(options : IframeElementOptionsType = {}, container : HTMLElement) : HTMLIFrameElement {\n\n let el = getElement(container);\n\n let attributes = options.attributes || {};\n let style = options.style || {};\n\n let frame = createElement('iframe', {\n attributes: {\n frameBorder: '0',\n allowTransparency: 'true',\n ...attributes\n },\n style: {\n backgroundColor: 'transparent',\n ...style\n },\n html: options.html,\n class: options.class\n });\n\n // $FlowFixMe\n awaitFrameLoad(frame);\n\n el.appendChild(frame);\n\n if (options.url || window.navigator.userAgent.match(/MSIE|Edge/i)) {\n frame.setAttribute('src', options.url || 'about:blank');\n }\n\n // $FlowFixMe\n return frame;\n}\n\n/* Add Event Listener\n ------------------\n\n Add DOM Event listener with cancel\n*/\n\nexport function addEventListener(obj : HTMLElement, event : string, handler : (event : Event) => void) : CancelableType {\n obj.addEventListener(event, handler);\n return {\n cancel() {\n obj.removeEventListener(event, handler);\n }\n };\n}\n\n/* Scan For Javascript\n -------------------\n\n Check if the string contains anything which could conceivably be run as javascript if the string is set to innerHTML\n*/\n\nexport function scanForJavascript(str : string) : string {\n\n if (!str) {\n return str;\n }\n\n if (str.match(/ {\n\n let params = {};\n\n if (!queryString) {\n return params;\n }\n\n if (queryString.indexOf('=') === -1) {\n throw new Error(`Can not parse query string params: ${ queryString }`);\n }\n\n for (let pair of queryString.split('&')) {\n pair = pair.split('=');\n\n if (pair[0] && pair[1]) {\n params[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n }\n\n return params;\n});\n\n\nexport function getQueryParam(name : string) : ?string {\n return parseQuery(window.location.search.slice(1))[name];\n}\n\nexport function formatQuery(obj : { [ string ] : string } = {}) : string {\n\n return Object.keys(obj).filter(key => {\n return typeof obj[key] === 'string';\n }).map(key => {\n return `${ urlEncode(key) }=${ urlEncode(obj[key]) }`;\n }).join('&');\n}\n\nexport function extendQuery(originalQuery : string, props : { [ string ] : string } = {}) : string {\n\n if (!props || !Object.keys(props).length) {\n return originalQuery;\n }\n\n return formatQuery({\n ...parseQuery(originalQuery),\n ...props\n });\n}\n\nexport function extendUrl(url : string, options : { query? : { [ string ] : string }, hash? : { [ string ] : string } } = {}) : string {\n\n let query = options.query || {};\n let hash = options.hash || {};\n\n let originalUrl;\n let originalQuery;\n let originalHash;\n\n [ originalUrl, originalHash ] = url.split('#');\n [ originalUrl, originalQuery ] = originalUrl.split('?');\n\n let queryString = extendQuery(originalQuery, query);\n let hashString = extendQuery(originalHash, hash);\n\n if (queryString) {\n originalUrl = `${ originalUrl }?${ queryString }`;\n }\n\n if (hashString) {\n originalUrl = `${ originalUrl }#${ hashString }`;\n }\n\n return originalUrl;\n}\n\n\nexport function elementStoppedMoving(element : ElementRefType, timeout : number = 5000) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n let el = getElement(element);\n\n let start = el.getBoundingClientRect();\n\n let interval;\n let timer;\n\n interval = setInterval(() => {\n let end = el.getBoundingClientRect();\n\n if (start.top === end.top && start.bottom === end.bottom && start.left === end.left && start.right === end.right && start.width === end.width && start.height === end.height) {\n clearTimeout(timer);\n clearInterval(interval);\n return resolve();\n }\n\n start = end;\n\n }, 50);\n\n timer = setTimeout(() => {\n clearInterval(interval);\n reject(new Error(`Timed out waiting for element to stop animating after ${ timeout }ms`));\n }, timeout);\n });\n}\n\nexport function getCurrentDimensions(el : HTMLElement) : { width : number, height : number } {\n return {\n width: el.offsetWidth,\n height: el.offsetHeight\n };\n}\n\nexport function changeStyle(el : HTMLElement, styles : { [ string ] : string }) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n\n for (let key of Object.keys(styles)) {\n // $FlowFixMe\n el.style[key] = styles[key];\n }\n\n setTimeout(resolve, 1);\n });\n}\n\nexport function setOverflow(el : HTMLElement, value : string = 'auto') : { reset : () => void } {\n\n let { overflow, overflowX, overflowY } = el.style;\n\n el.style.overflow = el.style.overflowX = el.style.overflowY = value;\n\n return {\n reset() {\n el.style.overflow = overflow;\n el.style.overflowX = overflowX;\n el.style.overflowY = overflowY;\n }\n };\n}\n\nfunction dimensionsDiff(one : { width : number, height : number }, two : { width : number, height : number }, { width = true, height = true, threshold = 0 } : { width : boolean, height : boolean, threshold : number }) : boolean {\n\n if (width && Math.abs(one.width - two.width) > threshold) {\n return true;\n }\n\n if (height && Math.abs(one.height - two.height) > threshold) {\n return true;\n }\n\n return false;\n}\n\nexport function trackDimensions(el : HTMLElement, { width = true, height = true, threshold = 0 } : { width : boolean, height : boolean, threshold : number }) : { check : () => { changed : boolean, dimensions : { width : number, height : number } }, reset : () => void } {\n\n let currentDimensions = getCurrentDimensions(el);\n\n return {\n check() : { changed : boolean, dimensions : { width : number, height : number } } {\n let newDimensions = getCurrentDimensions(el);\n\n return {\n changed: dimensionsDiff(currentDimensions, newDimensions, { width, height, threshold }),\n dimensions: newDimensions\n };\n },\n\n reset() {\n currentDimensions = getCurrentDimensions(el);\n }\n };\n}\n\nexport function onDimensionsChange(el : HTMLElement, { width = true, height = true, delay = 50, threshold = 0 } : { width? : boolean, height? : boolean, delay? : number, threshold? : number }) : ZalgoPromise<{ width : number, height : number }> {\n\n return new ZalgoPromise(resolve => {\n\n let tracker = trackDimensions(el, { width, height, threshold });\n\n let interval;\n\n let resolver = debounce((dimensions) => {\n clearInterval(interval);\n return resolve(dimensions);\n }, delay * 4);\n\n interval = setInterval(() => {\n let { changed, dimensions } = tracker.check();\n if (changed) {\n tracker.reset();\n return resolver(dimensions);\n }\n }, delay);\n\n function onWindowResize() {\n let { changed, dimensions } = tracker.check();\n if (changed) {\n tracker.reset();\n window.removeEventListener('resize', onWindowResize);\n resolver(dimensions);\n }\n }\n\n window.addEventListener('resize', onWindowResize);\n });\n}\n\n\nexport function dimensionsMatchViewport(el : HTMLElement, { width, height } : { width : number, height : number }) : boolean {\n\n let dimensions = getCurrentDimensions(el);\n\n if (width && dimensions.width !== window.innerWidth) {\n return false;\n }\n\n if (height && dimensions.height !== window.innerHeight) {\n return false;\n }\n\n return true;\n}\n\n\nexport function bindEvents(element : HTMLElement, eventNames : Array, handler : (event : Event) => void) : CancelableType {\n\n handler = once(handler);\n\n for (let eventName of eventNames) {\n element.addEventListener(eventName, handler);\n }\n\n return {\n cancel: once(() => {\n for (let eventName of eventNames) {\n element.removeEventListener(eventName, handler);\n }\n })\n };\n}\n\nconst VENDOR_PREFIXES = [ 'webkit', 'moz', 'ms', 'o' ];\n\nexport function setVendorCSS(element : HTMLElement, name : string, value : string) {\n\n // $FlowFixMe\n element.style[name] = value;\n\n let capitalizedName = capitalizeFirstLetter(name);\n\n for (let prefix of VENDOR_PREFIXES) {\n // $FlowFixMe\n element.style[`${ prefix }${ capitalizedName }`] = value;\n }\n}\n\n\nlet CSSRule = window.CSSRule;\n\nconst KEYFRAMES_RULE = CSSRule.KEYFRAMES_RULE || CSSRule.WEBKIT_KEYFRAMES_RULE || CSSRule.MOZ_KEYFRAMES_RULE ||\n CSSRule.O_KEYFRAMES_RULE || CSSRule.MS_KEYFRAMES_RULE;\n\nfunction isValidAnimation(element : HTMLElement, name : string) : boolean {\n\n let stylesheets = element.ownerDocument.styleSheets;\n\n try {\n for (let i = 0; i < stylesheets.length; i++) {\n\n // $FlowFixMe\n let cssRules = stylesheets[i].cssRules;\n\n if (!cssRules) {\n continue;\n }\n\n for (let j = 0; j < cssRules.length; j++) {\n\n let cssRule = cssRules[j];\n\n if (!cssRule) {\n continue;\n }\n\n if (cssRule.type === KEYFRAMES_RULE && cssRule.name === name) {\n return true;\n }\n }\n }\n } catch (err) {\n\n return false;\n }\n\n\n return false;\n}\n\n\nconst ANIMATION_START_EVENTS = [ 'animationstart', 'webkitAnimationStart', 'oAnimationStart', 'MSAnimationStart' ];\nconst ANIMATION_END_EVENTS = [ 'animationend', 'webkitAnimationEnd', 'oAnimationEnd', 'MSAnimationEnd' ];\n\nexport function animate(element : ElementRefType, name : string, clean : (Function) => void, timeout : number = 1000) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n let el = getElement(element);\n\n if (!el || !isValidAnimation(el, name)) {\n return resolve();\n }\n\n let hasStarted = false;\n\n let startTimeout;\n let endTimeout;\n let startEvent;\n let endEvent;\n\n function cleanUp() {\n setVendorCSS(el, 'animationName', '');\n clearTimeout(startTimeout);\n clearTimeout(endTimeout);\n startEvent.cancel();\n endEvent.cancel();\n }\n\n startEvent = bindEvents(el, ANIMATION_START_EVENTS, event => {\n\n // $FlowFixMe\n if (event.target !== el || event.animationName !== name) {\n return;\n }\n\n clearTimeout(startTimeout);\n\n event.stopPropagation();\n\n startEvent.cancel();\n hasStarted = true;\n\n endTimeout = setTimeout(() => {\n cleanUp();\n resolve();\n }, timeout);\n });\n\n endEvent = bindEvents(el, ANIMATION_END_EVENTS, event => {\n\n // $FlowFixMe\n if (event.target !== el || event.animationName !== name) {\n return;\n }\n\n cleanUp();\n\n // $FlowFixMe\n if (typeof event.animationName === 'string' && event.animationName !== name) {\n return reject(`Expected animation name to be ${ name }, found ${ event.animationName }`);\n }\n\n return resolve();\n });\n\n setVendorCSS(el, 'animationName', name);\n\n startTimeout = setTimeout(() => {\n if (!hasStarted) {\n cleanUp();\n return resolve();\n }\n }, 200);\n\n if (clean) {\n clean(cleanUp);\n }\n });\n}\n\nconst STYLE = {\n\n DISPLAY: {\n NONE: 'none',\n BLOCK: 'block'\n },\n\n VISIBILITY: {\n VISIBLE: 'visible',\n HIDDEN: 'hidden'\n },\n\n IMPORTANT: 'important'\n};\n\nexport function makeElementVisible(element : HTMLElement) {\n element.style.setProperty('visibility', '');\n}\n\nexport function makeElementInvisible(element : HTMLElement) {\n element.style.setProperty('visibility', STYLE.VISIBILITY.HIDDEN, STYLE.IMPORTANT);\n}\n\n\nexport function showElement(element : HTMLElement) {\n element.style.setProperty('display', '');\n}\n\nexport function hideElement(element : HTMLElement) {\n element.style.setProperty('display', STYLE.DISPLAY.NONE, STYLE.IMPORTANT);\n}\n\nexport function destroyElement(element : HTMLElement) {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n}\n\nexport function showAndAnimate(element : HTMLElement, name : string, clean : (Function) => void) : ZalgoPromise {\n let animation = animate(element, name, clean);\n showElement(element);\n return animation;\n}\n\nexport function animateAndHide(element : HTMLElement, name : string, clean : (Function) => void) : ZalgoPromise {\n return animate(element, name, clean).then(() => {\n hideElement(element);\n });\n}\n\nexport function addClass(element : HTMLElement, name : string) {\n if (element.classList) {\n element.classList.add(name);\n } else if (element.className.split(/\\s+/).indexOf(name) === -1) {\n element.className += ` ${ name }`;\n }\n}\n\nexport function removeClass(element : HTMLElement, name : string) {\n if (element.classList) {\n element.classList.remove(name);\n } else if (element.className.split(/\\s+/).indexOf(name) !== -1) {\n element.className = element.className.replace(name, '');\n }\n}\n\nexport function getCurrentScriptDir() : string {\n // eslint-disable-next-line no-console\n console.warn(`Do not use zoid.getCurrentScriptDir() in production -- browser support is limited`);\n\n // eslint-disable-next-line compat/compat\n if (document.currentScript) {\n // eslint-disable-next-line compat/compat\n return document.currentScript.src.split('/').slice(0, -1).join('/');\n }\n\n return '.';\n}\n\nexport function getElementName(element : ElementRefType) : string {\n\n if (typeof element === 'string') {\n return element;\n }\n\n if (!element || !element.tagName) {\n return '';\n }\n\n let name = element.tagName.toLowerCase();\n\n if (element.id) {\n name += `#${ element.id }`;\n } else if (element.className) {\n name += `.${ element.className.split(' ').join('.') }`;\n }\n\n return name;\n}\n\nexport function isElementClosed(el : HTMLElement) : boolean {\n if (!el || !el.parentNode) {\n return true;\n }\n return false;\n}\n\nexport function watchElementForClose(element : HTMLElement, handler : () => mixed) : CancelableType {\n handler = once(handler);\n\n let interval;\n\n if (isElementClosed(element)) {\n handler();\n } else {\n interval = safeInterval(() => {\n if (isElementClosed(element)) {\n interval.cancel();\n handler();\n }\n }, 50);\n }\n\n return {\n cancel() {\n if (interval) {\n interval.cancel();\n }\n }\n };\n}\n\nexport function getHttpType(contentType : string, url : string) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n let req = new window.XMLHttpRequest();\n\n req.open('GET', url);\n req.setRequestHeader('Accept', contentType);\n req.send(null);\n\n req.onload = () => {\n resolve(req.responseText);\n };\n\n req.onerror = () => {\n return reject(new Error(`prefetch failed`));\n };\n });\n}\n\nexport function getHTML(url : string) : ZalgoPromise {\n return getHttpType('text/html', url);\n}\n\nexport function getCSS(url : string) : ZalgoPromise {\n return getHttpType('text/css', url);\n}\n\nexport function getScript(url : string) : ZalgoPromise {\n return getHttpType('*/*', url);\n}\n\nexport function prefetchPage(url : string) : ZalgoPromise {\n return getHTML(url);\n}\n\nconst JSX_EVENTS = {\n onClick: 'click'\n};\n\nexport function fixScripts(el : HTMLElement, doc : Document = window.document) {\n for (let script of querySelectorAll(el, 'script')) {\n let newScript = doc.createElement('script');\n newScript.text = script.textContent;\n script.parentNode.replaceChild(newScript, script);\n }\n}\n\nexport function jsxDom(name : string, props : ?{ [ string ] : mixed }, content : ElementRefType) : HTMLElement {\n\n name = name.toLowerCase();\n\n let doc = (this && this.createElement)\n ? this\n : window.document;\n\n let el = doc.createElement(name);\n\n for (let prop in props) {\n if (prop in JSX_EVENTS) {\n el.addEventListener(JSX_EVENTS[prop], props[prop]);\n } else if (prop === 'innerHTML') {\n el.innerHTML = props[prop];\n fixScripts(el, doc);\n } else {\n el.setAttribute(prop, props[prop]);\n }\n }\n\n if (name === 'style') {\n\n if (typeof content !== 'string') {\n throw new TypeError(`Expected ${ name } tag content to be string, got ${ typeof content }`);\n }\n\n if (arguments.length > 3) {\n throw new Error(`Expected only text content for ${ name } tag`);\n }\n\n setStyle(el, content, doc);\n\n } else if (name === 'iframe') {\n\n if (arguments.length > 3) {\n throw new Error(`Expected only single child node for iframe`);\n }\n\n el.addEventListener('load', () => {\n let win = el.contentWindow;\n\n if (!win) {\n throw new Error(`Expected frame to have contentWindow`);\n }\n\n if (typeof content === 'string') {\n writeToWindow(win, content);\n } else {\n writeElementToWindow(win, content);\n }\n });\n\n } else if (name === 'script') {\n\n if (typeof content !== 'string') {\n throw new TypeError(`Expected ${ name } tag content to be string, got ${ typeof content }`);\n }\n\n if (arguments.length > 3) {\n throw new Error(`Expected only text content for ${ name } tag`);\n }\n\n el.text = content;\n\n } else {\n for (let i = 2; i < arguments.length; i++) {\n if (typeof arguments[i] === 'string') {\n let textNode = doc.createTextNode(arguments[i]);\n appendChild(el, textNode);\n } else {\n appendChild(el, arguments[i]);\n }\n }\n }\n\n return el;\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\n\n/* DeNodeify\n ---------\n\n Turns a method from a function which accepts a callback, into a function which returns a promise.\n*/\n\nexport function denodeify(method : (...args : Array) => T) : (...args : Array) => ZalgoPromise {\n\n return function denodeifyWrapper() : ZalgoPromise {\n\n let self = this;\n let args = Array.prototype.slice.call(arguments);\n\n if (args.length >= method.length) {\n return ZalgoPromise.resolve(method.apply(self, args));\n }\n\n return new ZalgoPromise((resolve, reject) => {\n args.push((err, result) => {\n\n if (err && !(err instanceof Error)) {\n throw new Error(`Passed non-Error object in callback: [ ${ err } ] -- callbacks should either be called with callback(new Error(...)) or callback(null, result).`);\n }\n\n return err ? reject(err) : resolve(result);\n });\n method.apply(self, args);\n });\n };\n}\n\nexport function promisify(method : (...args : Array) => T | ZalgoPromise) : (...args : Array) => ZalgoPromise {\n return function promisifyWRapper() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n return method.apply(this, arguments);\n });\n };\n}\n\nexport function delay(time : number = 1) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n setTimeout(resolve, time);\n });\n}\n\nexport function cycle(method : Function) : ZalgoPromise {\n return ZalgoPromise.try(method).then(() => cycle(method));\n}\n","/* @flow */\n\nexport function isPerc(str : string) : boolean {\n return typeof str === 'string' && (/^[0-9]+%$/).test(str);\n}\n\nexport function isPx(str : string) : boolean {\n return typeof str === 'string' && (/^[0-9]+px$/).test(str);\n}\n\nexport function toNum(val : string | number) : number {\n\n if (typeof val === 'number') {\n return val;\n }\n\n let match = val.match(/^([0-9]+)(px|%)$/);\n\n if (!match) {\n throw new Error(`Could not match css value from ${ val }`);\n }\n\n return parseInt(match[1], 10);\n}\n\nexport function toPx(val : number | string) : string {\n return `${ toNum(val) }px`;\n}\n\nexport function toCSS(val : number | string) : string {\n\n if (typeof val === 'number') {\n return toPx(val);\n }\n\n return isPerc(val) ? val : toPx(val);\n}\n\nexport function percOf(num : number, perc : string) : number {\n return parseInt(num * toNum(perc) / 100, 10);\n}\n\nexport function normalizeDimension(dim : string | number, max : number) : number {\n if (typeof dim === 'number') {\n return dim;\n } else if (isPerc(dim)) {\n return percOf(max, dim);\n } else if (isPx(dim)) {\n return toNum(dim);\n } else {\n throw new Error(`Can not normalize dimension: ${ dim }`);\n }\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nexport function memoized(target : Object, name : string, descriptor : Object) {\n let method = descriptor.value;\n\n descriptor.value = function memoizedFunction() : T {\n\n this.__memoized__ = this.__memoized__ || {};\n\n if (!this.__memoized__.hasOwnProperty(name)) {\n this.__memoized__[name] = method.apply(this, arguments);\n }\n\n return this.__memoized__[name];\n };\n\n descriptor.value.displayName = `${ name }:memoized`;\n}\n\nexport function promise(target : Object, name : string, descriptor : Object) {\n let method = descriptor.value;\n\n descriptor.value = function promisifiedFunction() : ZalgoPromise {\n return ZalgoPromise.try(method, this, arguments);\n };\n\n descriptor.value.displayName = `${ name }:promisified`;\n}\n","/* @flow */\n\nimport { CONFIG } from 'post-robot/src';\nimport { config, logLevels, info as logInfo, warn as logWarn, error as logError } from 'beaver-logger/client';\n\nexport function setLogLevel(logLevel : string) {\n if (logLevels.indexOf(logLevel) === -1) {\n throw new Error(`Invalid logLevel: ${ logLevel }`);\n }\n config.logLevel = logLevel;\n CONFIG.LOG_LEVEL = logLevel;\n window.LOG_LEVEL = logLevel;\n}\n\nexport function info(name : string, event : string, payload : Object = {}) {\n logInfo(`xc_${ name }_${ event }`, payload);\n}\n\n\n/* Log Warning\n -----------\n\n Log a warning\n*/\n\nexport function warn(name : string, event : string, payload : Object = {}) {\n logWarn(`xc_${ name }_${ event }`, payload);\n}\n\n\n/* Log Error\n ---------\n\n Log an error\n*/\n\nexport function error(name : string, event : string, payload : Object = {}) {\n logError(`xc_${ name }_${ event }`, payload);\n}\n","/* @flow */\n\nimport { isSameDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { __ZOID__ } from '../constants';\n\nexport function globalFor(win : CrossDomainWindowType) : ?Object {\n\n if (!isSameDomain(win)) {\n return;\n }\n\n if (!win[__ZOID__]) {\n win[__ZOID__] = {};\n }\n\n return win[__ZOID__];\n}\n\nexport function localGlobal() : Object {\n let global = globalFor(window);\n\n if (!global) {\n throw new Error(`Could not get local global`);\n }\n\n return global;\n}\n\nexport let global = localGlobal();\n","/* @flow */\n\nexport * from './dom';\nexport * from './fn';\nexport * from './promise';\nexport * from './util';\nexport * from './css';\nexport * from './decorators';\nexport * from './logger';\nexport * from './global';\n","/* @flow */\n\nexport function isRegex(item : mixed) : boolean {\n return Object.prototype.toString.call(item) === '[object RegExp]';\n}\n\n// eslint-disable-next-line no-unused-vars\nexport function noop(...args : Array) {\n // pass\n}\n","/* @flow */\n\nexport const PROTOCOL = {\n MOCK: ('mock:' : 'mock:'),\n FILE: ('file:' : 'file:'),\n ABOUT: ('about:' : 'about:')\n};\n\nexport const WILDCARD = '*';\n\nexport const WINDOW_TYPE = {\n IFRAME: ('iframe' : 'iframe'),\n POPUP: ('popup' : 'popup')\n};\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { isRegex, noop } from './util';\nimport type { CrossDomainWindowType, SameDomainWindowType, DomainMatcher } from './types';\nimport { PROTOCOL, WILDCARD } from './constants';\n\nlet IE_WIN_ACCESS_ERROR = 'Call was rejected by callee.\\r\\n';\n\nexport function isFileProtocol(win : SameDomainWindowType = window) : boolean {\n return win.location.protocol === PROTOCOL.FILE;\n}\n\nexport function isAboutProtocol(win : SameDomainWindowType = window) : boolean {\n return win.location.protocol === PROTOCOL.ABOUT;\n}\n\nexport function getParent(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n\n if (!win) {\n return;\n }\n\n try {\n if (win.parent && win.parent !== win) {\n return win.parent;\n }\n } catch (err) {\n // pass\n }\n}\n\nexport function getOpener(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n\n if (!win) {\n return;\n }\n\n // Make sure we're not actually an iframe which has had window.open() called on us\n if (getParent(win)) {\n return;\n }\n\n try {\n return win.opener;\n } catch (err) {\n // pass\n }\n}\n\nexport function canReadFromWindow(win : CrossDomainWindowType | SameDomainWindowType) : boolean {\n try {\n // $FlowFixMe\n noop(win && win.location && win.location.href);\n return true;\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\nexport function getActualDomain(win? : SameDomainWindowType = window) : string {\n\n let location = win.location;\n\n if (!location) {\n throw new Error(`Can not read window location`);\n }\n\n let protocol = location.protocol;\n\n if (!protocol) {\n throw new Error(`Can not read window protocol`);\n }\n\n if (protocol === PROTOCOL.FILE) {\n return `${ PROTOCOL.FILE }//`;\n }\n\n if (protocol === PROTOCOL.ABOUT) {\n\n let parent = getParent(win);\n if (parent && canReadFromWindow(parent)) {\n // $FlowFixMe\n return getActualDomain(parent);\n }\n\n return `${ PROTOCOL.ABOUT }//`;\n }\n\n let host = location.host;\n\n if (!host) {\n throw new Error(`Can not read window host`);\n }\n\n return `${ protocol }//${ host }`;\n}\n\nexport function getDomain(win? : SameDomainWindowType = window) : string {\n\n let domain = getActualDomain(win);\n\n if (domain && win.mockDomain && win.mockDomain.indexOf(PROTOCOL.MOCK) === 0) {\n return win.mockDomain;\n }\n\n return domain;\n}\n\nexport function isBlankDomain(win : CrossDomainWindowType) : boolean {\n try {\n // $FlowFixMe\n if (!win.location.href) {\n return true;\n }\n\n if (win.location.href === 'about:blank') {\n return true;\n }\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\nexport function isActuallySameDomain(win : CrossDomainWindowType) : boolean {\n\n try {\n if (win === window) {\n return true;\n }\n\n } catch (err) {\n // pass\n }\n\n try {\n let desc = Object.getOwnPropertyDescriptor(win, 'location');\n\n if (desc && desc.enumerable === false) {\n return false;\n }\n\n } catch (err) {\n // pass\n }\n\n try {\n // $FlowFixMe\n if (isAboutProtocol(win) && canReadFromWindow(win)) {\n return true;\n }\n } catch (err) {\n // pass\n }\n\n try {\n // $FlowFixMe\n if (getActualDomain(win) === getActualDomain(window)) {\n return true;\n }\n\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\nexport function isSameDomain(win : CrossDomainWindowType | SameDomainWindowType) : boolean {\n\n if (!isActuallySameDomain(win)) {\n return false;\n }\n\n try {\n\n if (win === window) {\n return true;\n }\n\n // $FlowFixMe\n if (isAboutProtocol(win) && canReadFromWindow(win)) {\n return true;\n }\n\n // $FlowFixMe\n if (getDomain(window) === getDomain(win)) {\n return true;\n }\n\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\n\nexport function assertSameDomain(win : CrossDomainWindowType | SameDomainWindowType) : SameDomainWindowType {\n if (!isSameDomain(win)) {\n throw new Error(`Expected window to be same domain`);\n }\n\n // $FlowFixMe\n return win;\n}\n\nexport function getParents(win : CrossDomainWindowType) : Array {\n\n let result = [];\n\n try {\n\n while (win.parent !== win) {\n result.push(win.parent);\n win = win.parent;\n }\n\n } catch (err) {\n // pass\n }\n\n return result;\n}\n\nexport function isAncestorParent(parent : CrossDomainWindowType, child : CrossDomainWindowType) : boolean {\n\n if (!parent || !child) {\n return false;\n }\n\n let childParent = getParent(child);\n\n if (childParent) {\n return childParent === parent;\n }\n\n if (getParents(child).indexOf(parent) !== -1) {\n return true;\n }\n\n return false;\n}\n\nexport function getFrames(win : CrossDomainWindowType) : Array {\n\n let result = [];\n\n let frames;\n\n try {\n frames = win.frames;\n } catch (err) {\n frames = win;\n }\n\n let len;\n\n try {\n len = frames.length;\n } catch (err) {\n // pass\n }\n\n if (len === 0) {\n return result;\n }\n\n if (len) {\n for (let i = 0; i < len; i++) {\n\n let frame;\n\n try {\n frame = frames[i];\n } catch (err) {\n continue;\n }\n\n result.push(frame);\n }\n\n return result;\n }\n\n for (let i = 0; i < 100; i++) {\n let frame;\n\n try {\n frame = frames[i];\n } catch (err) {\n return result;\n }\n\n if (!frame) {\n return result;\n }\n\n result.push(frame);\n }\n\n return result;\n}\n\n\nexport function getAllChildFrames(win : CrossDomainWindowType) : Array {\n\n let result = [];\n\n for (let frame of getFrames(win)) {\n result.push(frame);\n\n for (let childFrame of getAllChildFrames(frame)) {\n result.push(childFrame);\n }\n }\n\n return result;\n}\n\nexport function getTop(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n\n try {\n if (win.top) {\n return win.top;\n }\n } catch (err) {\n // pass\n }\n\n if (getParent(win) === win) {\n return win;\n }\n\n try {\n if (isAncestorParent(window, win) && window.top) {\n return window.top;\n }\n } catch (err) {\n // pass\n }\n\n try {\n if (isAncestorParent(win, window) && window.top) {\n return window.top;\n }\n } catch (err) {\n // pass\n }\n\n for (let frame of getAllChildFrames(win)) {\n try {\n if (frame.top) {\n return frame.top;\n }\n } catch (err) {\n // pass\n }\n\n if (getParent(frame) === frame) {\n return frame;\n }\n }\n}\n\nexport function getNextOpener(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n return getOpener(getTop(win) || win);\n}\n\nexport function getUltimateTop(win? : CrossDomainWindowType = window) : CrossDomainWindowType {\n let opener = getNextOpener(win);\n\n if (opener) {\n return getUltimateTop(opener);\n }\n\n return top;\n}\n\nexport function getAllFramesInWindow(win : CrossDomainWindowType) : Array {\n let top = getTop(win);\n\n if (!top) {\n throw new Error(`Can not determine top window`);\n }\n\n return [ ...getAllChildFrames(top), top ];\n}\n\nexport function getAllWindows(win? : CrossDomainWindowType = window) : $ReadOnlyArray {\n let frames = getAllFramesInWindow(win);\n let opener = getNextOpener(win);\n\n if (opener) {\n return [ ...getAllWindows(opener), ...frames ];\n } else {\n return frames;\n }\n}\n\nexport function isTop(win : CrossDomainWindowType) : boolean {\n return win === getTop(win);\n}\n\nexport function isFrameWindowClosed(frame : HTMLIFrameElement) : boolean {\n\n if (!frame.contentWindow) {\n return true;\n }\n\n if (!frame.parentNode) {\n return true;\n }\n\n let doc = frame.ownerDocument;\n\n if (doc && doc.documentElement && !doc.documentElement.contains(frame)) {\n return true;\n }\n\n return false;\n}\n\nfunction safeIndexOf(collection : Array, item : T) : number {\n for (let i = 0; i < collection.length; i++) {\n\n try {\n if (collection[i] === item) {\n return i;\n }\n } catch (err) {\n // pass\n }\n }\n\n return -1;\n}\n\nlet iframeWindows = [];\nlet iframeFrames = [];\n\nexport function isWindowClosed(win : CrossDomainWindowType, allowMock : boolean = true) : boolean {\n\n try {\n if (win === window) {\n return false;\n }\n } catch (err) {\n return true;\n }\n\n try {\n if (!win) {\n return true;\n }\n\n } catch (err) {\n return true;\n }\n\n try {\n if (win.closed) {\n return true;\n }\n\n } catch (err) {\n\n // I love you so much IE\n\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return false;\n }\n\n return true;\n }\n\n\n if (allowMock && isSameDomain(win)) {\n try {\n // $FlowFixMe\n if (win.mockclosed) {\n return true;\n }\n } catch (err) {\n // pass\n }\n }\n\n // Mobile safari\n\n try {\n if (!win.parent || !win.top) {\n return true;\n }\n } catch (err) {\n // pass\n }\n\n // Yes, this actually happens in IE. win === win errors out when the window\n // is from an iframe, and the iframe was removed from the page.\n\n try {\n noop(win === win); // eslint-disable-line no-self-compare\n } catch (err) {\n return true;\n }\n\n // IE orphaned frame\n\n let iframeIndex = safeIndexOf(iframeWindows, win);\n\n if (iframeIndex !== -1) {\n let frame = iframeFrames[iframeIndex];\n\n if (frame && isFrameWindowClosed(frame)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction cleanIframes() {\n for (let i = 0; i < iframeWindows.length; i++) {\n let closed = false;\n\n try {\n closed = iframeWindows[i].closed;\n } catch (err) {\n // pass\n }\n\n if (closed) {\n iframeFrames.splice(i, 1);\n iframeWindows.splice(i, 1);\n }\n }\n}\n\nexport function linkFrameWindow(frame : HTMLIFrameElement) {\n\n cleanIframes();\n\n if (frame && frame.contentWindow) {\n try {\n iframeWindows.push(frame.contentWindow);\n iframeFrames.push(frame);\n } catch (err) {\n // pass\n }\n }\n}\n\nexport function getUserAgent(win : ?SameDomainWindowType) : string {\n win = win || window;\n return win.navigator.mockUserAgent || win.navigator.userAgent;\n}\n\n\nexport function getFrameByName(win : CrossDomainWindowType, name : string) : ?CrossDomainWindowType {\n\n let winFrames = getFrames(win);\n\n for (let childFrame of winFrames) {\n try {\n // $FlowFixMe\n if (isSameDomain(childFrame) && childFrame.name === name && winFrames.indexOf(childFrame) !== -1) {\n return childFrame;\n }\n } catch (err) {\n // pass\n }\n }\n\n try {\n // $FlowFixMe\n if (winFrames.indexOf(win.frames[name]) !== -1) {\n // $FlowFixMe\n return win.frames[name];\n }\n } catch (err) {\n // pass\n }\n\n try {\n if (winFrames.indexOf(win[name]) !== -1) {\n return win[name];\n }\n } catch (err) {\n // pass\n }\n}\n\nexport function findChildFrameByName(win : CrossDomainWindowType, name : string) : ?CrossDomainWindowType {\n\n let frame = getFrameByName(win, name);\n\n if (frame) {\n return frame;\n }\n\n for (let childFrame of getFrames(win)) {\n let namedFrame = findChildFrameByName(childFrame, name);\n\n if (namedFrame) {\n return namedFrame;\n }\n }\n}\n\nexport function findFrameByName(win : CrossDomainWindowType, name : string) : ?CrossDomainWindowType {\n\n let frame;\n\n frame = getFrameByName(win, name);\n\n if (frame) {\n return frame;\n }\n\n let top = getTop(win) || win;\n\n return findChildFrameByName(top, name);\n}\n\nexport function isParent(win : CrossDomainWindowType, frame : CrossDomainWindowType) : boolean {\n\n let frameParent = getParent(frame);\n\n if (frameParent) {\n return frameParent === win;\n }\n\n for (let childFrame of getFrames(win)) {\n if (childFrame === frame) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function isOpener(parent : CrossDomainWindowType, child : CrossDomainWindowType) : boolean {\n\n return parent === getOpener(child);\n}\n\nexport function getAncestor(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n win = win || window;\n\n let opener = getOpener(win);\n\n if (opener) {\n return opener;\n }\n\n let parent = getParent(win);\n\n if (parent) {\n return parent;\n }\n}\n\nexport function getAncestors(win : CrossDomainWindowType) : Array {\n\n let results = [];\n\n let ancestor = win;\n\n while (ancestor) {\n ancestor = getAncestor(ancestor);\n if (ancestor) {\n results.push(ancestor);\n }\n }\n\n return results;\n}\n\n\nexport function isAncestor(parent : CrossDomainWindowType, child : CrossDomainWindowType) : boolean {\n\n let actualParent = getAncestor(child);\n\n if (actualParent) {\n if (actualParent === parent) {\n return true;\n }\n\n return false;\n }\n\n if (child === parent) {\n return false;\n }\n\n if (getTop(child) === child) {\n return false;\n }\n\n for (let frame of getFrames(parent)) {\n if (frame === child) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function isPopup(win? : CrossDomainWindowType = window) : boolean {\n return Boolean(getOpener(win));\n}\n\nexport function isIframe(win? : CrossDomainWindowType = window) : boolean {\n return Boolean(getParent(win));\n}\n\nexport function isFullpage(win? : CrossDomainWindowType = window) : boolean {\n return Boolean(!isIframe(win) && !isPopup(win));\n}\n\nfunction anyMatch(collection1, collection2) : boolean {\n\n for (let item1 of collection1) {\n for (let item2 of collection2) {\n if (item1 === item2) {\n return true;\n }\n }\n }\n\n return false;\n}\n\nexport function getDistanceFromTop(win : CrossDomainWindowType = window) : number {\n let distance = 0;\n let parent = win;\n\n while (parent) {\n parent = getParent(parent);\n if (parent) {\n distance += 1;\n }\n }\n\n return distance;\n}\n\nexport function getNthParent(win : CrossDomainWindowType, n : number = 1) : ?CrossDomainWindowType {\n let parent = win;\n\n for (let i = 0; i < n; i++) {\n if (!parent) {\n return;\n }\n\n parent = getParent(parent);\n }\n\n return parent;\n}\n\nexport function getNthParentFromTop(win : CrossDomainWindowType, n : number = 1) : ?CrossDomainWindowType {\n return getNthParent(win, getDistanceFromTop(win) - n);\n}\n\nexport function isSameTopWindow(win1 : CrossDomainWindowType, win2 : CrossDomainWindowType) : boolean {\n\n let top1 = getTop(win1) || win1;\n let top2 = getTop(win2) || win2;\n\n try {\n if (top1 && top2) {\n if (top1 === top2) {\n return true;\n }\n\n return false;\n }\n } catch (err) {\n // pass\n }\n\n let allFrames1 = getAllFramesInWindow(win1);\n let allFrames2 = getAllFramesInWindow(win2);\n\n if (anyMatch(allFrames1, allFrames2)) {\n return true;\n }\n\n let opener1 = getOpener(top1);\n let opener2 = getOpener(top2);\n\n if (opener1 && anyMatch(getAllFramesInWindow(opener1), allFrames2)) {\n return false;\n }\n\n if (opener2 && anyMatch(getAllFramesInWindow(opener2), allFrames1)) {\n return false;\n }\n\n return false;\n}\n\nexport function matchDomain(pattern : DomainMatcher, origin : DomainMatcher) : boolean {\n\n if (typeof pattern === 'string') {\n\n if (typeof origin === 'string') {\n return pattern === WILDCARD || origin === pattern;\n }\n\n if (isRegex(origin)) {\n return false;\n }\n\n if (Array.isArray(origin)) {\n return false;\n }\n }\n\n if (isRegex(pattern)) {\n\n if (isRegex(origin)) {\n return pattern.toString() === origin.toString();\n }\n\n if (Array.isArray(origin)) {\n return false;\n }\n\n // $FlowFixMe\n return Boolean(origin.match(pattern));\n }\n\n if (Array.isArray(pattern)) {\n\n if (Array.isArray(origin)) {\n return JSON.stringify(pattern) === JSON.stringify(origin);\n }\n\n if (isRegex(origin)) {\n return false;\n }\n\n return pattern.some(subpattern => matchDomain(subpattern, origin));\n }\n\n return false;\n}\n\nexport function stringifyDomainPattern(pattern : DomainMatcher) : string {\n if (Array.isArray(pattern)) {\n return `(${ pattern.join(' | ') })`;\n } else if (isRegex(pattern)) {\n return `RegExp(${ pattern.toString() }`;\n } else {\n return pattern.toString();\n }\n}\n\nexport function getDomainFromUrl(url : string) : string {\n\n let domain;\n\n if (url.match(/^(https?|mock|file):\\/\\//)) {\n domain = url;\n } else {\n return getDomain();\n }\n\n domain = domain.split('/').slice(0, 3).join('/');\n\n return domain;\n}\n\nexport function onCloseWindow(win : CrossDomainWindowType, callback : Function, delay : number = 1000, maxtime : number = Infinity) : { cancel : () => void } {\n\n let timeout;\n\n let check = () => {\n\n if (isWindowClosed(win)) {\n\n if (timeout) {\n clearTimeout(timeout);\n }\n\n return callback();\n }\n\n if (maxtime <= 0) {\n clearTimeout(timeout);\n } else {\n maxtime -= delay;\n timeout = setTimeout(check, delay);\n }\n };\n\n check();\n\n return {\n cancel() {\n if (timeout) {\n clearTimeout(timeout);\n }\n }\n };\n}\n\n// eslint-disable-next-line complexity\nexport function isWindow(obj : Object) : boolean {\n\n try {\n if (obj === window) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (Object.prototype.toString.call(obj) === '[object Window]') {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (window.Window && obj instanceof window.Window) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (obj && obj.self === obj) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (obj && obj.parent === obj) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (obj && obj.top === obj) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (noop(obj === obj) === '__unlikely_value__') { // eslint-disable-line no-self-compare\n return false;\n }\n\n } catch (err) {\n return true;\n }\n\n try {\n if (obj && obj.__cross_domain_utils_window_check__ === '__unlikely_value__') {\n return false;\n }\n\n } catch (err) {\n return true;\n }\n\n return false;\n}\n\nexport function isBrowser() : boolean {\n return (typeof window !== 'undefined' && typeof window.location !== 'undefined');\n}\n\nexport function isCurrentDomain(domain : string) : boolean {\n if (!isBrowser()) {\n return false;\n }\n\n return (getDomain() === domain);\n}\n\nexport function isMockDomain(domain : string) : boolean {\n return domain.indexOf(PROTOCOL.MOCK) === 0;\n}\n\nexport function normalizeMockUrl(url : string) : string {\n if (!isMockDomain(getDomainFromUrl(url))) {\n return url;\n }\n\n if (!__TEST__) {\n throw new Error(`Mock urls not supported out of test mode`);\n }\n\n return url.replace(/^mock:\\/\\/[^/]+/, getActualDomain(window));\n}\n\nexport function closeWindow(win : CrossDomainWindowType) {\n try {\n win.close();\n } catch (err) {\n // pass\n }\n}\n\nexport function getFrameForWindow(win : CrossDomainWindowType) : ?HTMLElement {\n if (isSameDomain(win)) {\n return assertSameDomain(win).frameElement;\n }\n\n for (const frame of document.querySelectorAll('iframe')) {\n if (frame && frame.contentWindow && frame.contentWindow === win) {\n return frame;\n }\n }\n}\n","/* @flow */\n\n// export something to force webpack to see this as an ES module\nexport const TYPES = true;\n\nexport type CrossDomainLocationType = {|\n\n|};\n\nexport type CrossDomainWindowType = {|\n location : string | CrossDomainLocationType,\n self : CrossDomainWindowType,\n closed : boolean,\n open : (string, string, string) => CrossDomainWindowType,\n close : () => void,\n focus : () => void,\n top : CrossDomainWindowType,\n frames : Array,\n opener ? : CrossDomainWindowType,\n parent : CrossDomainWindowType,\n length : number,\n postMessage : (string, string) => void\n|};\n\nexport type SameDomainWindowType = Object & {\n location : string | Object,\n self : CrossDomainWindowType,\n closed : boolean,\n open : (string, string, string) => CrossDomainWindowType,\n close : () => void,\n focus : () => void,\n XMLHttpRequest : typeof XMLHttpRequest,\n document : Document,\n navigator : {\n userAgent : string,\n mockUserAgent? : string\n }\n};\n\nexport type DomainMatcher = string | Array | $ReadOnlyArray | RegExp;\n","/* @flow */\n\nexport * from './utils';\nexport * from './types';\nexport * from './constants';\n","/* @flow */\n\nexport const ZOID = `zoid`;\n\nexport const __ZOID__ = `__${ ZOID }__`;\n\nexport const POST_MESSAGE = {\n INIT: `${ ZOID }_init`,\n PROPS: `${ ZOID }_props`,\n PROP_CALLBACK: `${ ZOID }_prop_callback`,\n CLOSE: `${ ZOID }_close`,\n CHECK_CLOSE: `${ ZOID }_check_close`,\n REDIRECT: `${ ZOID }_redirect`,\n RESIZE: `${ ZOID }_resize`,\n DELEGATE: `${ ZOID }_delegate`,\n ALLOW_DELEGATE: `${ ZOID }_allow_delegate`,\n ERROR: `${ ZOID }_error`,\n HIDE: `${ ZOID }_hide`,\n SHOW: `${ ZOID }_show`\n};\n\nexport const PROP_TYPES = {\n STRING: `string`,\n OBJECT: `object`,\n FUNCTION: `function`,\n BOOLEAN: `boolean`,\n NUMBER: `number`\n};\n\nexport const INITIAL_PROPS = {\n RAW: 'raw',\n UID: 'uid'\n};\n\nexport const WINDOW_REFERENCES = {\n OPENER: `opener`,\n TOP: `top`,\n PARENT: `parent`,\n GLOBAL: `global`\n};\n\nexport const PROP_TYPES_LIST : Array = Object.keys(PROP_TYPES).map(key => PROP_TYPES[key]);\n\nexport const CONTEXT_TYPES = {\n IFRAME: `iframe`,\n POPUP: `popup`\n};\n\nexport const CLASS_NAMES = {\n ZOID: `${ ZOID }`,\n OUTLET: `${ ZOID }-outlet`,\n COMPONENT_FRAME: `${ ZOID }-component-frame`,\n PRERENDER_FRAME: `${ ZOID }-prerender-frame`,\n VISIBLE: `${ ZOID }-visible`,\n INVISIBLE: `${ ZOID }-invisible`\n};\n\nexport const EVENTS = {\n CLOSE: `${ ZOID }-close`\n};\n\nexport const ATTRIBUTES = {\n IFRAME_PLACEHOLDER: `data-zoid-${ ZOID }-placeholder`\n};\n\nexport const ANIMATION_NAMES = {\n SHOW_CONTAINER: `${ ZOID }-show-container`,\n SHOW_COMPONENT: `${ ZOID }-show-component`,\n HIDE_CONTAINER: `${ ZOID }-hide-container`,\n HIDE_COMPONENT: `${ ZOID }-hide-component`\n};\n\nexport const EVENT_NAMES = {\n CLICK: 'click'\n};\n\nexport const CLOSE_REASONS = {\n PARENT_CALL: 'parent_call',\n CHILD_CALL: 'child_call',\n CLOSE_DETECTED: 'close_detected',\n USER_CLOSED: 'user_closed',\n PARENT_CLOSE_DETECTED: 'parent_close_detected'\n};\n\nexport const CONTEXT_TYPES_LIST : Array = Object.keys(CONTEXT_TYPES).map(key => CONTEXT_TYPES[key]);\n\nexport const DELEGATE = {\n CALL_ORIGINAL: 'call_original',\n CALL_DELEGATE: 'call_delegate'\n};\n\nexport const WILDCARD = '*';\n\nexport const DEFAULT_DIMENSIONS = {\n WIDTH: 300,\n HEIGHT: 150\n};\n","/* @flow */\n\nimport { CONSTANTS } from './conf';\n\nexport let global : Object = window[CONSTANTS.WINDOW_PROPS.POSTROBOT] = window[CONSTANTS.WINDOW_PROPS.POSTROBOT] || {};\n\n// Backwards compatibility\n\nglobal.registerSelf = () => {\n // pass\n};\n","/* @flow */\n\nexport let CONSTANTS = {\n\n POST_MESSAGE_TYPE: {\n REQUEST: 'postrobot_message_request',\n RESPONSE: 'postrobot_message_response',\n ACK: 'postrobot_message_ack'\n },\n\n POST_MESSAGE_ACK: {\n SUCCESS: 'success',\n ERROR: 'error'\n },\n\n POST_MESSAGE_NAMES: {\n METHOD: 'postrobot_method',\n HELLO: 'postrobot_ready',\n OPEN_TUNNEL: 'postrobot_open_tunnel'\n },\n\n WINDOW_TYPES: {\n FULLPAGE: 'fullpage',\n POPUP: 'popup',\n IFRAME: 'iframe'\n },\n\n WINDOW_PROPS: {\n POSTROBOT: '__postRobot__'\n },\n\n SERIALIZATION_TYPES: {\n METHOD: 'postrobot_method',\n ERROR: 'postrobot_error',\n PROMISE: 'postrobot_promise',\n ZALGO_PROMISE: 'postrobot_zalgo_promise',\n REGEX: 'regex'\n },\n\n SEND_STRATEGIES: {\n POST_MESSAGE: 'postrobot_post_message',\n BRIDGE: 'postrobot_bridge',\n GLOBAL: 'postrobot_global'\n },\n\n MOCK_PROTOCOL: 'mock:',\n FILE_PROTOCOL: 'file:',\n\n BRIDGE_NAME_PREFIX: '__postrobot_bridge__',\n POSTROBOT_PROXY: '__postrobot_proxy__',\n\n WILDCARD: '*'\n};\n\nexport const POST_MESSAGE_NAMES = {\n METHOD: 'postrobot_method',\n HELLO: 'postrobot_hello',\n OPEN_TUNNEL: 'postrobot_open_tunnel'\n};\n\nexport let POST_MESSAGE_NAMES_LIST : Array = Object.keys(POST_MESSAGE_NAMES)\n .map(key => POST_MESSAGE_NAMES[key]);\n","/* @flow */\n\nimport { CONSTANTS } from './constants';\n\nexport let CONFIG : Object = {\n\n ALLOW_POSTMESSAGE_POPUP: ('__ALLOW_POSTMESSAGE_POPUP__' in window)\n ? window.__ALLOW_POSTMESSAGE_POPUP__\n : __POST_ROBOT__.__ALLOW_POSTMESSAGE_POPUP__,\n\n BRIDGE_TIMEOUT: 5000,\n CHILD_WINDOW_TIMEOUT: 5000,\n\n ACK_TIMEOUT: (window.navigator.userAgent.match(/MSIE/i) !== -1 && !__TEST__) ? 10000 : 2000,\n RES_TIMEOUT: __TEST__ ? 2000 : -1,\n \n ALLOWED_POST_MESSAGE_METHODS: {\n [ CONSTANTS.SEND_STRATEGIES.POST_MESSAGE ]: true,\n [ CONSTANTS.SEND_STRATEGIES.BRIDGE ]: true,\n [ CONSTANTS.SEND_STRATEGIES.GLOBAL ]: true\n },\n\n ALLOW_SAME_ORIGIN: false\n};\n\nif (window.location.href.indexOf(CONSTANTS.FILE_PROTOCOL) === 0) {\n CONFIG.ALLOW_POSTMESSAGE_POPUP = true;\n}\n","/* @flow */\n\nexport * from './config';\nexport * from './constants';\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","/* @flow */\n/* eslint max-lines: off */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nexport { noop, once, uniqueID, isLocalStorageEnabled } from 'belter/src';\n\nconst moduleGlobal = {};\n\nexport function getGlobal() : Object {\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n return moduleGlobal;\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport function memoize(method : (...args : $ReadOnlyArray) => R, options : { time? : number } = {}) : ((...args : $ReadOnlyArray) => R) {\n\n const cache : { [key : string] : { time : number, value : R } } = {};\n\n // eslint-disable-next-line no-unused-vars, flowtype/no-weak-types\n return function memoizedFunction(...args : $ReadOnlyArray) : R {\n\n let key : string;\n\n try {\n key = JSON.stringify(Array.prototype.slice.call(arguments));\n } catch (err) {\n throw new Error(`Arguments not serializable -- can not be used to memoize`);\n }\n\n const time = options.time;\n\n if (cache[key] && time && (Date.now() - cache[key].time) < time) {\n delete cache[key];\n }\n\n const glob = getGlobal();\n\n if (glob.__CACHE_START_TIME__ && cache[key] && cache[key].time < glob.__CACHE_START_TIME__) {\n delete cache[key];\n }\n\n if (cache[key]) {\n return cache[key].value;\n }\n\n cache[key] = {\n time: Date.now(),\n value: method.apply(this, arguments)\n };\n\n return cache[key].value;\n };\n}\n\nexport function hashStr(str : string) : number {\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n hash += str[i].charCodeAt(0) * Math.pow((i % 10) + 1, 5);\n }\n return Math.floor(Math.pow(Math.sqrt(hash), 5));\n}\n\nexport function strHashStr(str : string) : string {\n let hash = '';\n\n for (let i = 0; i < str.length; i++) {\n let total = (str[i].charCodeAt(0) * i);\n\n if (str[i + 1]) {\n total += (str[i + 1].charCodeAt(0) * (i - 1));\n }\n\n hash += String.fromCharCode(97 + (Math.abs(total) % 26));\n }\n\n return hash;\n}\n\nexport function match(str : string, pattern : RegExp) : ?string {\n const regmatch = str.match(pattern);\n if (regmatch) {\n return regmatch[1];\n }\n}\n\nexport function safeJSON(item : mixed) : string {\n return JSON.stringify(item, (key, val) => {\n\n if (typeof val === 'function') {\n return `<${ typeof val }>`;\n }\n\n try {\n JSON.stringify(val);\n } catch (err) {\n return `<${ typeof val }>`;\n }\n\n return val;\n });\n}\n\ntype Listener = {|\n listen : (method : Function) => {\n cancel : () => void\n },\n once : (method : Function) => void,\n trigger : (...args : $ReadOnlyArray) => void\n|};\n\nexport function eventEmitter() : Listener {\n\n const listeners = [];\n\n return {\n listen(method : Function) : { cancel : () => void } {\n listeners.push(method);\n\n return {\n cancel() {\n listeners.splice(listeners.indexOf(method), 1);\n }\n };\n },\n\n once(method : Function) {\n const listener = this.listen(function onceListener() {\n method.apply(null, arguments);\n listener.cancel();\n });\n },\n\n trigger(...args : $ReadOnlyArray) {\n for (const listener of listeners) {\n listener(...args);\n }\n }\n };\n}\n\nexport function awaitKey(obj : Object, key : string) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n\n let value = obj[key];\n\n if (value) {\n return resolve(value);\n }\n\n delete obj[key];\n\n Object.defineProperty(obj, key, {\n\n configurable: true,\n\n set(item) {\n value = item;\n\n if (value) {\n resolve(value);\n }\n },\n\n get() : mixed {\n return value;\n }\n });\n });\n}\n\nexport function stringifyError(err : mixed, level : number = 1) : string {\n\n if (level >= 3) {\n return 'stringifyError stack overflow';\n }\n\n try {\n if (!err) {\n return ``;\n }\n\n if (typeof err === 'string') {\n return err;\n }\n\n if (err instanceof Error) {\n const stack = err && err.stack;\n const message = err && err.message;\n\n if (stack && message) {\n if (stack.indexOf(message) !== -1) {\n return stack;\n } else {\n return `${ message }\\n${ stack }`;\n }\n } else if (stack) {\n return stack;\n } else if (message) {\n return message;\n }\n }\n\n if (typeof err.toString === 'function') {\n return err.toString();\n }\n\n return Object.prototype.toString.call(err);\n\n } catch (newErr) { // eslint-disable-line unicorn/catch-error-name\n return `Error while stringifying error: ${ stringifyError(newErr, level + 1) }`;\n }\n}\n\nexport function stringifyErrorMessage(err : mixed) : string {\n\n const defaultMessage = ``;\n\n if (!err) {\n return defaultMessage;\n }\n\n if (err instanceof Error) {\n return err.message || defaultMessage;\n }\n\n if (typeof err.message === 'string') {\n return err.message || defaultMessage;\n }\n\n return defaultMessage;\n}\n\nexport function stringify(item : mixed) : string {\n if (typeof item === 'string') {\n return item;\n }\n\n if (item && typeof item.toString === 'function') {\n return item.toString();\n }\n\n return Object.prototype.toString.call(item);\n}\n\nexport function domainMatches(hostname : string, domain : string) : boolean {\n hostname = hostname.split('://')[1];\n const index = hostname.indexOf(domain);\n return (index !== -1 && hostname.slice(index) === domain);\n}\n\nexport function patchMethod(obj : Object, name : string, handler : Function) {\n const original = obj[name];\n\n obj[name] = function patchedMethod() : mixed {\n return handler({\n context: this,\n args: Array.prototype.slice.call(arguments),\n original,\n callOriginal: () => original.apply(this, arguments)\n });\n };\n}\n\nexport function isObject(obj : mixed) : boolean {\n return (typeof obj === 'object' && obj !== null);\n}\n\nexport function extend(obj : T, source : Object) : T {\n if (!source) {\n return obj;\n }\n\n if (Object.assign) { // eslint-disable-line compat/compat\n return Object.assign(obj, source); // eslint-disable-line compat/compat\n }\n\n for (const key in source) {\n if (source.hasOwnProperty(key)) {\n obj[key] = source[key];\n }\n }\n\n return obj;\n}\n\nexport function deepExtend (obj : T, source : Object) : T {\n if (!source) {\n return obj;\n }\n\n for (const key in source) {\n if (source.hasOwnProperty(key)) {\n if (isObject(obj[key]) && isObject(source[key])) {\n deepExtend(obj[key], source[key]);\n } else {\n obj[key] = source[key];\n }\n }\n }\n\n return obj;\n}\n\nexport function hasValue(obj : { [string] : T }, value : T) : boolean {\n for (const key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] === value) {\n return true;\n }\n }\n return false;\n}\n\nexport function contains(arr : $ReadOnlyArray, value : T) : boolean {\n return arr.indexOf(value) !== -1;\n}\n\n// eslint-disable-next-line flowtype/no-mutable-array\nexport function sortBy(arr : Array, order : $ReadOnlyArray) : Array {\n return arr.sort((a : T, b : T) => {\n return order.indexOf(a) - order.indexOf(b);\n });\n}\n\nexport function reverseMap(obj : { [string] : string }) : { [string] : string } {\n const result = {};\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n result[obj[key]] = key;\n }\n }\n return result;\n}\n\n// eslint-disable-next-line flowtype/no-mutable-array\nexport function arrayRemove(arr : Array, item : T) {\n arr.splice(arr.indexOf(item), 1);\n}\n\nexport function identity(item : T) : T {\n return item;\n}\n\nexport function values(obj : { [string] : T }) : $ReadOnlyArray {\n const result = [];\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n result.push(obj[key]);\n }\n }\n return result;\n}\n\nexport function perc(pixels : number, percentage : number) : number {\n return Math.round((pixels * percentage) / 100);\n}\n\nexport function min(...args : $ReadOnlyArray) : number {\n return Math.min(...args);\n}\n\nexport function max(...args : $ReadOnlyArray) : number {\n return Math.max(...args);\n}\n\nexport function regexMap(str : string, regex : RegExp, handler : () => T) : $ReadOnlyArray {\n const results = [];\n\n // $FlowFixMe\n str.replace(regex, function regexMapMatcher() {\n results.push(handler.apply(null, arguments));\n });\n\n return results;\n}\n","/* @flow */\n\nimport { isSameDomain, isSameTopWindow, isActuallySameDomain, getActualDomain, getDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONSTANTS } from '../../conf';\nimport { needsGlobalMessagingForBrowser } from '../../lib';\n\nexport let SEND_MESSAGE_STRATEGIES = {};\n\n\nSEND_MESSAGE_STRATEGIES[CONSTANTS.SEND_STRATEGIES.POST_MESSAGE] = (win : CrossDomainWindowType, serializedMessage : string, domain : (string | Array)) => {\n\n if (__POST_ROBOT__.__IE_POPUP_SUPPORT__) {\n try {\n require('../../compat').emulateIERestrictions(window, win);\n } catch (err) {\n return;\n }\n }\n\n let domains;\n\n if (Array.isArray(domain)) {\n domains = domain;\n } else if (typeof domain === 'string') {\n domains = [ domain ];\n } else {\n domains = [ CONSTANTS.WILDCARD ];\n }\n\n domains = domains.map(dom => {\n\n if (dom.indexOf(CONSTANTS.MOCK_PROTOCOL) === 0) {\n\n if (window.location.protocol === CONSTANTS.FILE_PROTOCOL) {\n return CONSTANTS.WILDCARD;\n }\n\n if (!isActuallySameDomain(win)) {\n throw new Error(`Attempting to send messsage to mock domain ${ dom }, but window is actually cross-domain`);\n }\n\n // $FlowFixMe\n return getActualDomain(win);\n }\n\n if (dom.indexOf(CONSTANTS.FILE_PROTOCOL) === 0) {\n return CONSTANTS.WILDCARD;\n }\n\n return dom;\n });\n\n domains.forEach(dom => {\n return win.postMessage(serializedMessage, dom);\n });\n};\n\nif (__POST_ROBOT__.__IE_POPUP_SUPPORT__) {\n\n let { sendBridgeMessage, needsBridgeForBrowser, isBridge } = require('../../bridge');\n\n SEND_MESSAGE_STRATEGIES[CONSTANTS.SEND_STRATEGIES.BRIDGE] = (win : CrossDomainWindowType, serializedMessage : string, domain : string) => {\n\n if (!needsBridgeForBrowser() && !isBridge()) {\n return;\n }\n\n if (isSameDomain(win)) {\n throw new Error(`Post message through bridge disabled between same domain windows`);\n }\n\n if (isSameTopWindow(window, win) !== false) {\n throw new Error(`Can only use bridge to communicate between two different windows, not between frames`);\n }\n\n return sendBridgeMessage(win, serializedMessage, domain);\n };\n}\n\nif (__POST_ROBOT__.__IE_POPUP_SUPPORT__ || __POST_ROBOT__.__GLOBAL_MESSAGE_SUPPORT__) {\n \n SEND_MESSAGE_STRATEGIES[CONSTANTS.SEND_STRATEGIES.GLOBAL] = (win : CrossDomainWindowType, serializedMessage : string) => {\n\n if (!needsGlobalMessagingForBrowser()) {\n return;\n }\n\n if (!isSameDomain(win)) {\n throw new Error(`Post message through global disabled between different domain windows`);\n }\n\n if (isSameTopWindow(window, win) !== false) {\n throw new Error(`Can only use global to communicate between two different windows, not between frames`);\n }\n\n // $FlowFixMe\n let foreignGlobal = win[CONSTANTS.WINDOW_PROPS.POSTROBOT];\n\n if (!foreignGlobal) {\n throw new Error(`Can not find postRobot global on foreign window`);\n }\n\n return foreignGlobal.receiveMessage({\n source: window,\n origin: getDomain(),\n data: serializedMessage\n });\n };\n}\n","/* @flow */\n\nimport { getDomain, isWindowClosed, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { CONSTANTS, CONFIG, POST_MESSAGE_NAMES_LIST } from '../../conf';\nimport { uniqueID, serializeMethods, getWindowType, jsonStringify, stringifyError } from '../../lib';\n\nimport { SEND_MESSAGE_STRATEGIES } from './strategies';\n\n\nfunction buildMessage(win : CrossDomainWindowType, message : Object, options = {}) : Object {\n\n let id = uniqueID();\n let type = getWindowType();\n let sourceDomain = getDomain(window);\n\n return {\n ...message,\n ...options,\n sourceDomain,\n id: message.id || id,\n windowType: type\n };\n}\n\n\nexport function sendMessage(win : CrossDomainWindowType, message : Object, domain : string | Array) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n message = buildMessage(win, message, {\n data: serializeMethods(win, domain, message.data),\n domain\n });\n\n let level;\n\n if (__DEBUG__) {\n if (POST_MESSAGE_NAMES_LIST.indexOf(message.name) !== -1 || message.type === CONSTANTS.POST_MESSAGE_TYPE.ACK) {\n level = 'debug';\n } else if (message.ack === 'error') {\n level = 'error';\n } else {\n level = 'info';\n }\n\n // eslint-disable-next-line no-console\n console[level]('postrobot_send', message.type.replace(/^postrobot_message_/, ''), '::', message.name, '::', domain || CONSTANTS.WILDCARD, '\\n\\n', message);\n }\n\n if (win === window && !CONFIG.ALLOW_SAME_ORIGIN) {\n throw new Error('Attemping to send message to self');\n }\n\n if (isWindowClosed(win)) {\n throw new Error('Window is closed');\n }\n\n let messages = [];\n\n let serializedMessage = jsonStringify({\n [ CONSTANTS.WINDOW_PROPS.POSTROBOT ]: message\n }, null, 2);\n\n return ZalgoPromise.map(Object.keys(SEND_MESSAGE_STRATEGIES), strategyName => {\n\n return ZalgoPromise.try(() => {\n\n if (!CONFIG.ALLOWED_POST_MESSAGE_METHODS[strategyName]) {\n throw new Error(`Strategy disallowed: ${ strategyName }`);\n }\n\n return SEND_MESSAGE_STRATEGIES[strategyName](win, serializedMessage, domain);\n\n }).then(() => {\n messages.push(`${ strategyName }: success`);\n return true;\n }, err => {\n messages.push(`${ strategyName }: ${ stringifyError(err) }\\n`);\n return false;\n });\n\n }).then(results => {\n\n let success = results.some(Boolean);\n let status = `${ message.type } ${ message.name } ${ success ? 'success' : 'error' }:\\n - ${ messages.join('\\n - ') }\\n`;\n\n if (!success) {\n throw new Error(status);\n }\n });\n });\n}\n","/* @flow */\n\nimport { type ZalgoPromise } from 'zalgo-promise/src';\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { matchDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { global } from '../global';\nimport { isRegex } from '../lib';\nimport { CONSTANTS } from '../conf';\n\nexport function resetListeners() {\n global.responseListeners = {};\n global.requestListeners = {};\n}\n\nglobal.responseListeners = global.responseListeners || {};\nglobal.requestListeners = global.requestListeners || {};\nglobal.WINDOW_WILDCARD = global.WINDOW_WILDCARD || new (function WindowWildcard() { /* pass */ })();\n\nglobal.erroredResponseListeners = global.erroredResponseListeners || {};\n\nconst __DOMAIN_REGEX__ = '__domain_regex__';\n\nexport type RequestListenerType = {\n handler : ({ source : CrossDomainWindowType, origin : string, data : Object }) => (mixed | ZalgoPromise),\n handleError : (err : mixed) => void,\n window : ?CrossDomainWindowType,\n name : string,\n domain : string | RegExp | Array\n};\n\nexport type ResponseListenerType = {\n name : string,\n window : CrossDomainWindowType,\n domain : (string | Array | RegExp),\n respond : (err : ?mixed, result : ?Object) => void,\n ack? : ?boolean\n};\n\nexport function addResponseListener(hash : string, listener : ResponseListenerType) {\n global.responseListeners[hash] = listener;\n}\n\nexport function getResponseListener(hash : string) : ResponseListenerType {\n return global.responseListeners[hash];\n}\n\nexport function deleteResponseListener(hash : string) {\n delete global.responseListeners[hash];\n}\n\nexport function markResponseListenerErrored(hash : string) {\n global.erroredResponseListeners[hash] = true;\n}\n\nexport function isResponseListenerErrored(hash : string) : boolean {\n return Boolean(global.erroredResponseListeners[hash]);\n}\n\nexport function getRequestListener({ name, win, domain } : { name : string, win : ?CrossDomainWindowType, domain : ?(string | RegExp) }) : ?RequestListenerType {\n\n if (win === CONSTANTS.WILDCARD) {\n win = null;\n }\n\n if (domain === CONSTANTS.WILDCARD) {\n domain = null;\n }\n\n if (!name) {\n throw new Error(`Name required to get request listener`);\n }\n\n let nameListeners = global.requestListeners[name];\n\n if (!nameListeners) {\n return;\n }\n\n for (let winQualifier of [ win, global.WINDOW_WILDCARD ]) {\n\n let winListeners = winQualifier && nameListeners.get(winQualifier);\n\n if (!winListeners) {\n continue;\n }\n\n if (domain && typeof domain === 'string') {\n if (winListeners[domain]) {\n return winListeners[domain];\n }\n\n if (winListeners[__DOMAIN_REGEX__]) {\n for (let { regex, listener } of winListeners[__DOMAIN_REGEX__]) {\n if (matchDomain(regex, domain)) {\n return listener;\n }\n }\n }\n }\n\n if (winListeners[CONSTANTS.WILDCARD]) {\n return winListeners[CONSTANTS.WILDCARD];\n }\n }\n}\n\n// eslint-disable-next-line complexity\nexport function addRequestListener({ name, win, domain } : { name : string, win : ?CrossDomainWindowType, domain : ?(string | RegExp | Array) }, listener : RequestListenerType) : { cancel : () => void } {\n\n if (!name || typeof name !== 'string') {\n throw new Error(`Name required to add request listener`);\n }\n\n if (Array.isArray(win)) {\n let listenersCollection = [];\n\n for (let item of win) {\n listenersCollection.push(addRequestListener({ name, domain, win: item }, listener));\n }\n\n return {\n cancel() {\n for (let cancelListener of listenersCollection) {\n cancelListener.cancel();\n }\n }\n };\n }\n\n if (Array.isArray(domain)) {\n let listenersCollection = [];\n\n for (let item of domain) {\n listenersCollection.push(addRequestListener({ name, win, domain: item }, listener));\n }\n\n return {\n cancel() {\n for (let cancelListener of listenersCollection) {\n cancelListener.cancel();\n }\n }\n };\n }\n\n let existingListener = getRequestListener({ name, win, domain });\n\n if (!win || win === CONSTANTS.WILDCARD) {\n win = global.WINDOW_WILDCARD;\n }\n\n domain = domain || CONSTANTS.WILDCARD;\n\n if (existingListener) {\n if (win && domain) {\n throw new Error(`Request listener already exists for ${ name } on domain ${ domain.toString() } for ${ win === global.WINDOW_WILDCARD ? 'wildcard' : 'specified' } window`);\n } else if (win) {\n throw new Error(`Request listener already exists for ${ name } for ${ win === global.WINDOW_WILDCARD ? 'wildcard' : 'specified' } window`);\n } else if (domain) {\n throw new Error(`Request listener already exists for ${ name } on domain ${ domain.toString() }`);\n } else {\n throw new Error(`Request listener already exists for ${ name }`);\n }\n }\n\n let requestListeners = global.requestListeners;\n\n let nameListeners = requestListeners[name];\n\n if (!nameListeners) {\n nameListeners = new WeakMap();\n requestListeners[name] = nameListeners;\n }\n\n let winListeners = nameListeners.get(win);\n\n if (!winListeners) {\n winListeners = {};\n nameListeners.set(win, winListeners);\n }\n\n let strDomain = domain.toString();\n\n let regexListeners = winListeners[__DOMAIN_REGEX__];\n let regexListener;\n\n if (isRegex(domain)) {\n\n if (!regexListeners) {\n regexListeners = [];\n winListeners[__DOMAIN_REGEX__] = regexListeners;\n }\n\n regexListener = { regex: domain, listener };\n\n regexListeners.push(regexListener);\n\n } else {\n winListeners[strDomain] = listener;\n }\n\n return {\n cancel() {\n if (!winListeners) {\n return;\n }\n\n delete winListeners[strDomain];\n\n if (win && Object.keys(winListeners).length === 0) {\n nameListeners.delete(win);\n }\n\n if (regexListener) {\n regexListeners.splice(regexListeners.indexOf(regexListener, 1));\n }\n }\n\n };\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { isWindowClosed, matchDomain, stringifyDomainPattern, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONSTANTS } from '../../conf';\nimport { stringifyError, noop } from '../../lib';\nimport { sendMessage } from '../send';\nimport { getRequestListener, getResponseListener, deleteResponseListener, isResponseListenerErrored } from '../listeners';\n\nexport let RECEIVE_MESSAGE_TYPES = {\n\n [ CONSTANTS.POST_MESSAGE_TYPE.ACK ](source : CrossDomainWindowType, origin : string, message : Object) {\n\n if (isResponseListenerErrored(message.hash)) {\n return;\n }\n\n let options = getResponseListener(message.hash);\n\n if (!options) {\n throw new Error(`No handler found for post message ack for message: ${ message.name } from ${ origin } in ${ window.location.protocol }//${ window.location.host }${ window.location.pathname }`);\n }\n\n if (!matchDomain(options.domain, origin)) {\n throw new Error(`Ack origin ${ origin } does not match domain ${ options.domain.toString() }`);\n }\n\n options.ack = true;\n },\n\n [ CONSTANTS.POST_MESSAGE_TYPE.REQUEST ](source : CrossDomainWindowType, origin : string, message : Object) : ZalgoPromise {\n\n let options = getRequestListener({ name: message.name, win: source, domain: origin });\n\n function respond(data) : ZalgoPromise {\n\n if (message.fireAndForget || isWindowClosed(source)) {\n return ZalgoPromise.resolve();\n }\n\n return sendMessage(source, {\n target: message.originalSource,\n hash: message.hash,\n name: message.name,\n ...data\n }, origin);\n }\n\n return ZalgoPromise.all([\n\n respond({\n type: CONSTANTS.POST_MESSAGE_TYPE.ACK\n }),\n\n ZalgoPromise.try(() => {\n\n if (!options) {\n throw new Error(`No handler found for post message: ${ message.name } from ${ origin } in ${ window.location.protocol }//${ window.location.host }${ window.location.pathname }`);\n }\n\n if (!matchDomain(options.domain, origin)) {\n throw new Error(`Request origin ${ origin } does not match domain ${ options.domain.toString() }`);\n }\n\n let data = message.data;\n\n return options.handler({ source, origin, data });\n\n }).then(data => {\n\n return respond({\n type: CONSTANTS.POST_MESSAGE_TYPE.RESPONSE,\n ack: CONSTANTS.POST_MESSAGE_ACK.SUCCESS,\n data\n });\n\n }, err => {\n\n let error = stringifyError(err).replace(/^Error: /, '');\n // $FlowFixMe\n let code = err.code;\n\n return respond({\n type: CONSTANTS.POST_MESSAGE_TYPE.RESPONSE,\n ack: CONSTANTS.POST_MESSAGE_ACK.ERROR,\n error,\n code\n });\n })\n\n ]).then(noop).catch(err => {\n\n if (options && options.handleError) {\n return options.handleError(err);\n } else {\n throw err;\n }\n });\n },\n\n [ CONSTANTS.POST_MESSAGE_TYPE.RESPONSE ](source : CrossDomainWindowType, origin : string, message : Object) : void | ZalgoPromise {\n\n if (isResponseListenerErrored(message.hash)) {\n return;\n }\n\n let options = getResponseListener(message.hash);\n\n if (!options) {\n throw new Error(`No handler found for post message response for message: ${ message.name } from ${ origin } in ${ window.location.protocol }//${ window.location.host }${ window.location.pathname }`);\n }\n\n if (!matchDomain(options.domain, origin)) {\n throw new Error(`Response origin ${ origin } does not match domain ${ stringifyDomainPattern(options.domain) }`);\n }\n\n deleteResponseListener(message.hash);\n\n if (message.ack === CONSTANTS.POST_MESSAGE_ACK.ERROR) {\n let err = new Error(message.error);\n if (message.code) {\n // $FlowFixMe\n err.code = message.code;\n }\n return options.respond(err, null);\n } else if (message.ack === CONSTANTS.POST_MESSAGE_ACK.SUCCESS) {\n let data = message.data || message.response;\n\n return options.respond(null, { source, origin, data });\n }\n }\n};\n","/* @flow */\n\nimport { isWindowClosed, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONSTANTS, POST_MESSAGE_NAMES_LIST } from '../../conf';\nimport { deserializeMethods, jsonParse, addEventListener, noop } from '../../lib';\nimport { global } from '../../global';\n\nimport { RECEIVE_MESSAGE_TYPES } from './types';\n\nglobal.receivedMessages = global.receivedMessages || [];\n\ntype MessageEvent = {\n source : CrossDomainWindowType,\n origin : string,\n data : string\n};\n\nfunction parseMessage(message : string) : ?Object {\n\n let parsedMessage;\n\n try {\n parsedMessage = jsonParse(message);\n } catch (err) {\n return;\n }\n\n if (!parsedMessage) {\n return;\n }\n\n if (typeof parsedMessage !== 'object' || parsedMessage === null) {\n return;\n }\n\n parsedMessage = parsedMessage[CONSTANTS.WINDOW_PROPS.POSTROBOT];\n\n if (!parsedMessage || typeof parsedMessage !== 'object' || parsedMessage === null) {\n return;\n }\n\n if (!parsedMessage.type || typeof parsedMessage.type !== 'string') {\n return;\n }\n\n if (!RECEIVE_MESSAGE_TYPES[parsedMessage.type]) {\n return;\n }\n\n return parsedMessage;\n}\n\n\nexport function receiveMessage(event : MessageEvent) {\n\n if (!window || window.closed) {\n return;\n }\n\n try {\n if (!event.source) {\n return;\n }\n } catch (err) {\n return;\n }\n\n let { source, origin, data } = event;\n\n let message = parseMessage(data);\n\n if (!message) {\n return;\n }\n\n if (!message.sourceDomain || typeof message.sourceDomain !== 'string') {\n throw new Error(`Expected message to have sourceDomain`);\n }\n\n if (message.sourceDomain.indexOf(CONSTANTS.MOCK_PROTOCOL) === 0 || message.sourceDomain.indexOf(CONSTANTS.FILE_PROTOCOL) === 0) {\n origin = message.sourceDomain;\n }\n\n if (global.receivedMessages.indexOf(message.id) === -1) {\n global.receivedMessages.push(message.id);\n } else {\n return;\n }\n\n if (__DEBUG__) {\n let level;\n\n if (POST_MESSAGE_NAMES_LIST.indexOf(message.name) !== -1 || message.type === CONSTANTS.POST_MESSAGE_TYPE.ACK) {\n level = 'debug';\n } else if (message.ack === 'error') {\n level = 'error';\n } else {\n level = 'info';\n }\n \n // eslint-disable-next-line no-console\n console[level]('postrobot_receive', message.type.replace(/^postrobot_message_/, ''), '::', message.name, '::', origin, '\\n\\n', message);\n }\n\n if (isWindowClosed(source) && !message.fireAndForget) {\n return;\n }\n\n if (message.data) {\n message.data = deserializeMethods(source, origin, message.data);\n }\n\n RECEIVE_MESSAGE_TYPES[message.type](source, origin, message);\n}\n\nexport function messageListener(event : { source : CrossDomainWindowType, origin : string, data : string, sourceElement : CrossDomainWindowType, originalEvent? : { origin : string } }) {\n\n try {\n noop(event.source);\n } catch (err) {\n return;\n }\n\n // $FlowFixMe\n let messageEvent : MessageEvent = {\n source: event.source || event.sourceElement,\n origin: event.origin || (event.originalEvent && event.originalEvent.origin),\n data: event.data\n };\n\n if (__POST_ROBOT__.__IE_POPUP_SUPPORT__) {\n try {\n require('../../compat').emulateIERestrictions(messageEvent.source, window);\n } catch (err) {\n return;\n }\n }\n\n receiveMessage(messageEvent);\n}\n\nexport function listenForMessages() {\n addEventListener(window, 'message', messageListener);\n}\n\nglobal.receiveMessage = receiveMessage;\n","/* @flow */\n\nexport * from './receive';\nexport * from './send';\nexport * from './listeners';\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getAncestor, isAncestor, isWindowClosed, getDomain, matchDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONFIG, CONSTANTS } from '../conf';\nimport { sendMessage, addResponseListener, deleteResponseListener, markResponseListenerErrored, type ResponseListenerType } from '../drivers';\nimport { uniqueID, onChildWindowReady, sayHello, isRegex } from '../lib';\nimport { global } from '../global';\n\nglobal.requestPromises = global.requestPromises || new WeakMap();\n\ntype WindowResolverType = CrossDomainWindowType | string | HTMLIFrameElement;\n\ntype RequestOptionsType = {\n window? : ?WindowResolverType,\n domain? : ?(string | Array | RegExp),\n name? : ?string,\n data? : ?Object,\n fireAndForget? : ?boolean,\n timeout? : ?number\n};\n\ntype ResponseMessageEvent = {\n source : CrossDomainWindowType,\n origin : string,\n data : Object\n};\n\nexport function request(options : RequestOptionsType) : ZalgoPromise {\n\n let prom = ZalgoPromise.try(() => {\n\n if (!options.name) {\n throw new Error('Expected options.name');\n }\n\n let name = options.name;\n let targetWindow : ?CrossDomainWindowType;\n let domain : string | Array | RegExp;\n\n if (typeof options.window === 'string') {\n let el = document.getElementById(options.window);\n\n if (!el) {\n throw new Error(`Expected options.window ${ Object.prototype.toString.call(options.window) } to be a valid element id`);\n }\n\n if (el.tagName.toLowerCase() !== 'iframe') {\n throw new Error(`Expected options.window ${ Object.prototype.toString.call(options.window) } to be an iframe`);\n }\n\n // $FlowFixMe\n if (!el.contentWindow) {\n throw new Error('Iframe must have contentWindow. Make sure it has a src attribute and is in the DOM.');\n }\n\n // $FlowFixMe\n targetWindow = el.contentWindow;\n\n } else if (options.window instanceof HTMLIFrameElement) {\n\n if (options.window.tagName.toLowerCase() !== 'iframe') {\n throw new Error(`Expected options.window ${ Object.prototype.toString.call(options.window) } to be an iframe`);\n }\n\n if (options.window && !options.window.contentWindow) {\n throw new Error('Iframe must have contentWindow. Make sure it has a src attribute and is in the DOM.');\n }\n\n if (options.window && options.window.contentWindow) {\n // $FlowFixMe\n targetWindow = options.window.contentWindow;\n }\n } else {\n targetWindow = options.window;\n }\n\n if (!targetWindow) {\n throw new Error('Expected options.window to be a window object, iframe, or iframe element id.');\n }\n\n const win = targetWindow;\n\n domain = options.domain || CONSTANTS.WILDCARD;\n\n let hash = `${ options.name }_${ uniqueID() }`;\n\n if (isWindowClosed(win)) {\n throw new Error('Target window is closed');\n }\n\n let hasResult = false;\n\n let requestPromises = global.requestPromises.get(win);\n\n if (!requestPromises) {\n requestPromises = [];\n global.requestPromises.set(win, requestPromises);\n }\n\n let requestPromise = ZalgoPromise.try(() => {\n\n if (isAncestor(window, win)) {\n return onChildWindowReady(win, options.timeout || CONFIG.CHILD_WINDOW_TIMEOUT);\n }\n\n }).then(({ origin } = {}) => {\n\n if (isRegex(domain) && !origin) {\n return sayHello(win);\n }\n\n }).then(({ origin } = {}) => {\n\n if (isRegex(domain)) {\n if (!matchDomain(domain, origin)) {\n throw new Error(`Remote window domain ${ origin } does not match regex: ${ domain.toString() }`);\n }\n\n domain = origin;\n }\n\n if (typeof domain !== 'string' && !Array.isArray(domain)) {\n throw new TypeError(`Expected domain to be a string or array`);\n }\n\n const actualDomain = domain;\n\n return new ZalgoPromise((resolve, reject) => {\n\n let responseListener : ResponseListenerType;\n\n if (!options.fireAndForget) {\n responseListener = {\n name,\n window: win,\n domain: actualDomain,\n respond(err, result) {\n if (!err) {\n hasResult = true;\n requestPromises.splice(requestPromises.indexOf(requestPromise, 1));\n }\n\n if (err) {\n reject(err);\n } else {\n resolve(result);\n }\n }\n };\n\n addResponseListener(hash, responseListener);\n }\n\n sendMessage(win, {\n type: CONSTANTS.POST_MESSAGE_TYPE.REQUEST,\n hash,\n name,\n data: options.data,\n fireAndForget: options.fireAndForget\n }, actualDomain).catch(reject);\n\n if (options.fireAndForget) {\n return resolve();\n }\n\n let ackTimeout = CONFIG.ACK_TIMEOUT;\n let resTimeout = options.timeout || CONFIG.RES_TIMEOUT;\n\n let cycleTime = 100;\n\n let cycle = () => {\n\n if (hasResult) {\n return;\n }\n\n if (isWindowClosed(win)) {\n\n if (!responseListener.ack) {\n return reject(new Error(`Window closed for ${ name } before ack`));\n }\n\n return reject(new Error(`Window closed for ${ name } before response`));\n }\n\n ackTimeout = Math.max(ackTimeout - cycleTime, 0);\n if (resTimeout !== -1) {\n resTimeout = Math.max(resTimeout - cycleTime, 0);\n }\n\n let hasAck = responseListener.ack;\n\n if (hasAck) {\n\n if (resTimeout === -1) {\n return;\n }\n\n cycleTime = Math.min(resTimeout, 2000);\n\n } else if (ackTimeout === 0) {\n return reject(new Error(`No ack for postMessage ${ name } in ${ getDomain() } in ${ CONFIG.ACK_TIMEOUT }ms`));\n\n } else if (resTimeout === 0) {\n return reject(new Error(`No response for postMessage ${ name } in ${ getDomain() } in ${ options.timeout || CONFIG.RES_TIMEOUT }ms`));\n }\n\n setTimeout(cycle, cycleTime);\n };\n\n setTimeout(cycle, cycleTime);\n });\n });\n\n requestPromise.catch(() => {\n markResponseListenerErrored(hash);\n deleteResponseListener(hash);\n });\n\n requestPromises.push(requestPromise);\n\n return requestPromise;\n });\n\n return prom;\n}\n\nexport function send(window : WindowResolverType, name : string, data : ?Object, options : ?RequestOptionsType) : ZalgoPromise {\n\n options = options || {};\n options.window = window;\n options.name = name;\n options.data = data;\n\n return request(options);\n}\n\nexport function sendToParent(name : string, data : ?Object, options : ?RequestOptionsType) : ZalgoPromise {\n\n let win = getAncestor();\n\n if (!win) {\n return new ZalgoPromise((resolve, reject) => reject(new Error('Window does not have a parent')));\n }\n\n return send(win, name, data, options);\n}\n\nexport function client(options : RequestOptionsType = {}) : { send : (string, ?Object) => ZalgoPromise } {\n\n if (!options.window) {\n throw new Error(`Expected options.window`);\n }\n\n const win = options.window;\n\n return {\n send(name : string, data : ?Object) : ZalgoPromise {\n return send(win, name, data, options);\n }\n };\n}\n\nglobal.send = send;\n","/* @flow */\n\nimport { isWindowClosed, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { once as onceFunction, safeInterval } from '../lib';\nimport { addRequestListener, type RequestListenerType } from '../drivers';\nimport { CONSTANTS } from '../conf';\nimport { global } from '../global';\n\ntype ErrorHandlerType = (err : mixed) => void;\ntype HandlerType = ({ source : CrossDomainWindowType, origin : string, data : Object }) => (void | mixed | ZalgoPromise);\n\ntype ServerOptionsType = {\n handler? : ?HandlerType,\n errorHandler? : ?ErrorHandlerType,\n window? : CrossDomainWindowType,\n name? : ?string,\n domain? : ?(string | RegExp | Array),\n once? : ?boolean,\n errorOnClose? : ?boolean\n};\n\nexport function listen(options : ServerOptionsType) : { cancel : () => void } {\n\n if (!options.name) {\n throw new Error('Expected options.name');\n }\n\n if (!options.handler) {\n throw new Error('Expected options.handler');\n }\n\n const name = options.name;\n const win = options.window;\n const domain = options.domain;\n\n let listenerOptions : RequestListenerType = {\n handler: options.handler,\n handleError: options.errorHandler || (err => {\n throw err;\n }),\n window: win,\n domain: domain || CONSTANTS.WILDCARD,\n name\n };\n\n let requestListener = addRequestListener({ name, win, domain }, listenerOptions);\n\n if (options.once) {\n let handler = listenerOptions.handler;\n listenerOptions.handler = onceFunction(function listenOnce() : mixed | ZalgoPromise {\n requestListener.cancel();\n return handler.apply(this, arguments);\n });\n }\n\n if (listenerOptions.window && options.errorOnClose) {\n let interval = safeInterval(() => {\n if (win && typeof win === 'object' && isWindowClosed(win)) {\n interval.cancel();\n listenerOptions.handleError(new Error('Post message target window is closed'));\n }\n }, 50);\n }\n\n return {\n cancel() {\n requestListener.cancel();\n }\n };\n}\n\nexport function on(name : string, options : ServerOptionsType | HandlerType, handler : ?HandlerType) : { cancel : () => void } {\n\n if (typeof options === 'function') {\n handler = options;\n options = {};\n }\n\n options = options || {};\n\n options.name = name;\n options.handler = handler || options.handler;\n\n return listen(options);\n}\n\nexport function once(name : string, options : ?(ServerOptionsType | HandlerType) = {}, handler : ?HandlerType) : ZalgoPromise<{ source : mixed, origin : string, data : Object }> {\n\n if (typeof options === 'function') {\n handler = options;\n options = {};\n }\n\n options = options || {};\n handler = handler || options.handler;\n let errorHandler = options.errorHandler;\n\n let promise = new ZalgoPromise((resolve, reject) => {\n\n options = options || {};\n\n options.name = name;\n options.once = true;\n\n options.handler = (event) => {\n resolve(event);\n if (handler) {\n return handler(event);\n }\n };\n\n options.errorHandler = (err) => {\n reject(err);\n if (errorHandler) {\n return errorHandler(err);\n }\n };\n });\n\n let onceListener = listen(options);\n promise.cancel = onceListener.cancel;\n\n return promise;\n}\n\nexport function listener(options : ServerOptionsType = {}) : { on : (name : string, handler : HandlerType) => { cancel : () => void } } {\n\n return {\n on(name : string, handler : HandlerType) : { cancel : () => void } {\n return on(name, options, handler);\n }\n };\n}\n\nglobal.on = on;\n","/* @flow */\n\nimport { CONSTANTS } from '../conf';\nimport { messageListener } from '../drivers';\n\nexport { CONFIG, CONSTANTS } from '../conf';\n\nexport function disable() {\n delete window[CONSTANTS.WINDOW_PROPS.POSTROBOT];\n window.removeEventListener('message', messageListener);\n}\n","/* @flow */\n\nimport { getAncestor } from 'cross-domain-utils/src';\n\nexport * from './client';\nexport * from './server';\nexport * from './config';\n\nexport let parent = getAncestor();\n","/* @flow */\n\nimport { type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { global } from './global';\n\nexport function cleanUpWindow(win : CrossDomainWindowType) {\n\n // global.tunnelWindows\n // global.bridges\n // global.popupWindowsByName\n // global.responseListeners\n // global.requestListeners\n\n let requestPromises = global.requestPromises.get(win);\n\n if (requestPromises) {\n for (let promise of requestPromises) {\n promise.reject(new Error(`No response from window - cleaned up`));\n }\n }\n\n if (global.popupWindowsByWin) {\n global.popupWindowsByWin.delete(win);\n }\n\n if (global.remoteWindows) {\n global.remoteWindows.delete(win);\n }\n\n global.requestPromises.delete(win);\n global.methods.delete(win);\n global.readyPromises.delete(win);\n}\n","/* @flow */\n\nimport { initOnReady, listenForMethods } from './lib';\nimport { listenForMessages } from './drivers';\nimport { global } from './global';\nimport { on, send } from './public';\n\nexport * from './public';\nexport { cleanUpWindow } from './clean';\nexport { ZalgoPromise as Promise } from 'zalgo-promise/src';\nexport let bridge = __POST_ROBOT__.__IE_POPUP_SUPPORT__ ? require('./bridge/interface') : null;\n\nexport function init() {\n if (!global.initialized) {\n listenForMessages();\n\n if (__POST_ROBOT__.__IE_POPUP_SUPPORT__) {\n require('./bridge').openTunnelToOpener();\n }\n\n initOnReady();\n listenForMethods({ on, send });\n }\n\n global.initialized = true;\n}\n\ninit();\n","/* @flow */\n\n// eslint-disable-next-line import/no-namespace\nimport * as INTERFACE from './interface';\n\nexport * from './interface';\nexport default INTERFACE;\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { isPopup, isIframe, getUserAgent } from 'cross-domain-utils/src';\n\nimport { CONFIG, CONSTANTS } from '../conf';\n\n\nexport function stringifyError(err : mixed, level : number = 1) : string {\n\n if (level >= 3) {\n return 'stringifyError stack overflow';\n }\n\n try {\n if (!err) {\n return ``;\n }\n\n if (typeof err === 'string') {\n return err;\n }\n\n if (err instanceof Error) {\n let stack = err && err.stack;\n let message = err && err.message;\n\n if (stack && message) {\n if (stack.indexOf(message) !== -1) {\n return stack;\n } else {\n return `${ message }\\n${ stack }`;\n }\n } else if (stack) {\n return stack;\n } else if (message) {\n return message;\n }\n }\n\n if (typeof err.toString === 'function') {\n return err.toString();\n }\n\n return Object.prototype.toString.call(err);\n\n } catch (newErr) { // eslint-disable-line unicorn/catch-error-name\n return `Error while stringifying error: ${ stringifyError(newErr, level + 1) }`;\n }\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport let once = (method : Function) : ((...args : Array) => T | void) => {\n if (!method) {\n return method;\n }\n let called = false;\n return function onceWrapper() : T | void {\n if (!called) {\n called = true;\n return method.apply(this, arguments);\n }\n };\n};\n\n// eslint-disable-next-line no-unused-vars\nexport function noop(...args : Array) {\n // pass\n}\n\nexport function addEventListener(obj : Object, event : string, handler : Function) : { cancel : () => void } {\n if (obj.addEventListener) {\n obj.addEventListener(event, handler);\n } else {\n obj.attachEvent(`on${ event }`, handler);\n }\n\n return {\n cancel() {\n if (obj.removeEventListener) {\n obj.removeEventListener(event, handler);\n } else {\n obj.detachEvent(`on${ event }`, handler);\n }\n }\n };\n}\n\nexport function uniqueID() : string {\n\n let chars = '0123456789abcdef';\n\n return 'xxxxxxxxxx'.replace(/./g, () => {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n });\n}\n\ntype MixedArrayType = Array;\n\nexport function eachArray(item : MixedArrayType, callback : (item : mixed, key : number) => mixed) {\n for (let i = 0; i < item.length; i++) {\n callback(item[i], i);\n }\n}\n\nexport function eachObject(item : Object, callback : (item : mixed, key : string) => mixed) {\n for (let key in item) {\n if (item.hasOwnProperty(key)) {\n callback(item[key], key);\n }\n }\n}\n\nexport function each(item : T, callback : (item : mixed, key : number | string) => mixed) {\n if (Array.isArray(item)) {\n eachArray(item, callback);\n } else if (typeof item === 'object' && item !== null) {\n eachObject(item, callback);\n }\n}\n\nexport function replaceObject(item : T, callback : (item : mixed, key : number | string) => mixed, depth : number = 1) : T {\n\n if (depth >= 100) {\n throw new Error(`Self-referential object passed, or object contained too many layers`);\n }\n\n let newobj;\n\n if (typeof item === 'object' && item !== null && !Array.isArray(item)) {\n newobj = {};\n } else if (Array.isArray(item)) {\n newobj = [];\n } else {\n throw new TypeError(`Invalid type: ${ typeof item }`);\n }\n\n each(item, (childItem, key) => {\n\n let result = callback(childItem, key);\n\n if (typeof result !== 'undefined') {\n // $FlowFixMe\n newobj[key] = result;\n } else if (typeof childItem === 'object' && childItem !== null) {\n // $FlowFixMe\n newobj[key] = replaceObject(childItem, callback, depth + 1);\n } else {\n // $FlowFixMe\n newobj[key] = childItem;\n }\n });\n\n // $FlowFixMe\n return newobj;\n}\n\nexport function safeInterval(method : Function, time : number) : { cancel : () => void } {\n let timeout;\n\n function runInterval() {\n timeout = setTimeout(runInterval, time);\n method.call();\n }\n\n timeout = setTimeout(runInterval, time);\n\n return {\n cancel() {\n clearTimeout(timeout);\n }\n };\n}\n\nexport function isRegex(item : mixed) : boolean {\n return Object.prototype.toString.call(item) === '[object RegExp]';\n}\n\n\ntype FunctionProxy = (method : T) => T;\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport let weakMapMemoize : FunctionProxy<*> = (method : (arg : any) => R) : ((...args : Array) => R) => {\n\n let weakmap = new WeakMap();\n\n // eslint-disable-next-line flowtype/no-weak-types\n return function weakmapMemoized(arg : any) : R {\n let result = weakmap.get(arg);\n\n if (typeof result !== 'undefined') {\n return result;\n }\n\n result = method.call(this, arg);\n\n if (typeof result !== 'undefined') {\n weakmap.set(arg, result);\n }\n\n return result;\n };\n};\n\nexport function getWindowType() : string {\n if (isPopup()) {\n return CONSTANTS.WINDOW_TYPES.POPUP;\n }\n if (isIframe()) {\n return CONSTANTS.WINDOW_TYPES.IFRAME;\n }\n return CONSTANTS.WINDOW_TYPES.FULLPAGE;\n}\n\nexport function jsonStringify(obj : T, replacer : ?Function, indent : number | void) : string {\n\n let objectToJSON;\n let arrayToJSON;\n\n try {\n if (JSON.stringify({}) !== '{}') {\n // $FlowFixMe\n objectToJSON = Object.prototype.toJSON;\n // $FlowFixMe\n delete Object.prototype.toJSON;\n }\n\n if (JSON.stringify({}) !== '{}') {\n throw new Error(`Can not correctly serialize JSON objects`);\n }\n\n if (JSON.stringify([]) !== '[]') {\n // $FlowFixMe\n arrayToJSON = Array.prototype.toJSON;\n // $FlowFixMe\n delete Array.prototype.toJSON;\n }\n\n if (JSON.stringify([]) !== '[]') {\n throw new Error(`Can not correctly serialize JSON objects`);\n }\n\n } catch (err) {\n throw new Error(`Can not repair JSON.stringify: ${ err.message }`);\n }\n\n let result = JSON.stringify.call(this, obj, replacer, indent);\n\n try {\n if (objectToJSON) {\n // $FlowFixMe\n Object.prototype.toJSON = objectToJSON; // eslint-disable-line no-extend-native\n }\n\n if (arrayToJSON) {\n // $FlowFixMe\n Array.prototype.toJSON = arrayToJSON; // eslint-disable-line no-extend-native\n }\n\n } catch (err) {\n throw new Error(`Can not repair JSON.stringify: ${ err.message }`);\n }\n\n\n return result;\n}\n\nexport function jsonParse(item : string) : mixed {\n return JSON.parse(item);\n}\n \nexport function needsGlobalMessagingForBrowser() : boolean {\n\n if (getUserAgent(window).match(/MSIE|trident|edge\\/12|edge\\/13/i)) {\n return true;\n }\n \n if (!CONFIG.ALLOW_POSTMESSAGE_POPUP) {\n return true;\n }\n \n return false;\n}\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { matchDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { CONSTANTS } from '../conf';\nimport { global } from '../global';\n\nimport { once, uniqueID, replaceObject, stringifyError, isRegex } from './util';\n\nglobal.methods = global.methods || new WeakMap();\n\nexport let listenForMethods = once(() => {\n global.on(CONSTANTS.POST_MESSAGE_NAMES.METHOD, { origin: CONSTANTS.WILDCARD }, ({ source, origin, data } : { source : CrossDomainWindowType, origin : string, data : Object }) => {\n\n let methods = global.methods.get(source);\n\n if (!methods) {\n throw new Error(`Could not find any methods this window has privileges to call`);\n }\n\n let meth = methods[data.id];\n\n if (!meth) {\n throw new Error(`Could not find method with id: ${ data.id }`);\n }\n\n if (!matchDomain(meth.domain, origin)) {\n throw new Error(`Method domain ${ meth.domain } does not match origin ${ origin }`);\n }\n\n return ZalgoPromise.try(() => {\n return meth.method.apply({ source, origin, data }, data.args);\n\n }).then(result => {\n\n return {\n result,\n id: data.id,\n name: data.name\n };\n });\n });\n});\n\nfunction isSerialized(item : mixed, type : string) : boolean {\n return typeof item === 'object' && item !== null && item.__type__ === type;\n}\n\ntype SerializedMethod = {\n __type__ : string,\n __id__ : string,\n __name__ : string\n};\n\nexport function serializeMethod(destination : CrossDomainWindowType, domain : string | Array, method : Function, name : string) : SerializedMethod {\n\n let id = uniqueID();\n\n let methods = global.methods.get(destination);\n\n if (!methods) {\n methods = {};\n global.methods.set(destination, methods);\n }\n\n methods[id] = { domain, method };\n\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.METHOD,\n __id__: id,\n __name__: name\n };\n}\n\ntype SerializedError = {\n __type__ : string,\n __message__ : string\n};\n\nfunction serializeError(err : mixed) : SerializedError {\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.ERROR,\n __message__: stringifyError(err),\n // $FlowFixMe\n __code__: err.code\n };\n}\n\ntype SerializePromise = {\n __type__ : string,\n __then__ : SerializedMethod\n};\n\nfunction serializePromise(destination : CrossDomainWindowType, domain : string | Array, promise : ZalgoPromise, name : string) : SerializePromise {\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.PROMISE,\n __then__: serializeMethod(destination, domain, (resolve, reject) => promise.then(resolve, reject), `${ name }.then`)\n };\n}\n\nfunction serializeZalgoPromise(destination : CrossDomainWindowType, domain : string | Array, promise : ZalgoPromise, name : string) : SerializePromise {\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.ZALGO_PROMISE,\n __then__: serializeMethod(destination, domain, (resolve, reject) => promise.then(resolve, reject), `${ name }.then`)\n };\n}\n\ntype SerializedRegex = {\n __type__ : string,\n __source__ : string\n};\n\nfunction serializeRegex(regex : RegExp) : SerializedRegex {\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.REGEX,\n __source__: regex.source\n };\n}\n\nexport function serializeMethods(destination : CrossDomainWindowType, domain : string | Array, obj : Object) : Object {\n\n return replaceObject({ obj }, (item, key) => {\n if (typeof item === 'function') {\n return serializeMethod(destination, domain, item, key.toString());\n }\n\n if (item instanceof Error) {\n return serializeError(item);\n }\n\n if (window.Promise && item instanceof window.Promise) {\n return serializePromise(destination, domain, item, key.toString());\n }\n\n if (ZalgoPromise.isPromise(item)) {\n // $FlowFixMe\n return serializeZalgoPromise(destination, domain, item, key.toString());\n }\n\n if (isRegex(item)) {\n // $FlowFixMe\n return serializeRegex(item);\n }\n }).obj;\n}\n\nexport function deserializeMethod(source : CrossDomainWindowType, origin : string, obj : Object) : Function {\n\n function wrapper() : ZalgoPromise {\n let args = Array.prototype.slice.call(arguments);\n return global.send(source, CONSTANTS.POST_MESSAGE_NAMES.METHOD, {\n id: obj.__id__,\n name: obj.__name__,\n args\n\n }, { domain: origin, timeout: -1 }).then(({ data }) => {\n return data.result;\n }, err => {\n throw err;\n });\n }\n\n wrapper.__name__ = obj.__name__;\n wrapper.__xdomain__ = true;\n\n wrapper.source = source;\n wrapper.origin = origin;\n\n return wrapper;\n}\n\nexport function deserializeError(source : CrossDomainWindowType, origin : string, obj : Object) : Error {\n let err = new Error(obj.__message__);\n if (obj.__code__) {\n // $FlowFixMe\n err.code = obj.__code__;\n }\n return err;\n}\n\nexport function deserializeZalgoPromise(source : CrossDomainWindowType, origin : string, prom : Object) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => deserializeMethod(source, origin, prom.__then__)(resolve, reject));\n}\n\nexport function deserializePromise(source : CrossDomainWindowType, origin : string, prom : Object) : ZalgoPromise {\n if (!window.Promise) {\n return deserializeZalgoPromise(source, origin, prom);\n }\n\n return new window.Promise((resolve, reject) => deserializeMethod(source, origin, prom.__then__)(resolve, reject));\n}\n\nexport function deserializeRegex(source : CrossDomainWindowType, origin : string, item : Object) : RegExp {\n // eslint-disable-next-line security/detect-non-literal-regexp\n return new RegExp(item.__source__);\n}\n\nexport function deserializeMethods(source : CrossDomainWindowType, origin : string, obj : Object) : Object {\n\n return replaceObject({ obj }, (item) => {\n if (typeof item !== 'object' || item === null) {\n return;\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.METHOD)) {\n return deserializeMethod(source, origin, item);\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.ERROR)) {\n return deserializeError(source, origin, item);\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.PROMISE)) {\n return deserializePromise(source, origin, item);\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.ZALGO_PROMISE)) {\n return deserializeZalgoPromise(source, origin, item);\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.REGEX)) {\n return deserializeRegex(source, origin, item);\n }\n\n }).obj;\n}\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { getAncestor, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { CONSTANTS } from '../conf';\nimport { global } from '../global';\n\nimport { noop } from './util';\n\nglobal.readyPromises = global.readyPromises || new WeakMap();\n\nexport function onHello(handler : ({ source? : CrossDomainWindowType, origin? : string }) => void) {\n global.on(CONSTANTS.POST_MESSAGE_NAMES.HELLO, { domain: CONSTANTS.WILDCARD }, ({ source, origin }) => {\n return handler({ source, origin });\n });\n}\n\nexport function sayHello(win : CrossDomainWindowType) : ZalgoPromise<{ origin : string }> {\n return global.send(win, CONSTANTS.POST_MESSAGE_NAMES.HELLO, {}, { domain: CONSTANTS.WILDCARD, timeout: -1 })\n .then(({ origin }) => {\n return { origin };\n });\n}\n\nexport function initOnReady() {\n\n onHello(({ source, origin }) => {\n let promise = global.readyPromises.get(source) || new ZalgoPromise();\n promise.resolve({ origin });\n global.readyPromises.set(source, promise);\n });\n\n let parent = getAncestor();\n if (parent) {\n sayHello(parent).catch(noop);\n }\n}\n\nexport function onChildWindowReady(win : mixed, timeout : number = 5000, name : string = 'Window') : ZalgoPromise<{ origin : string }> {\n\n let promise = global.readyPromises.get(win);\n\n if (promise) {\n return promise;\n }\n\n promise = new ZalgoPromise();\n global.readyPromises.set(win, promise);\n\n if (timeout !== -1) {\n setTimeout(() => promise.reject(new Error(`${ name } did not load after ${ timeout }ms`)), timeout);\n }\n\n return promise;\n}\n","/* @flow */\n\nexport * from './util';\nexport * from './serialize';\nexport * from './ready';\n","/* @flow */\n\nimport { on, send, bridge } from 'post-robot/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport type { CrossDomainWindowType, SameDomainWindowType } from 'cross-domain-utils/src';\n\nimport { isPayPalDomain, noop, getScriptVersion, extendUrl } from '../lib';\nimport { config } from '../config';\n\nfunction match(str : string, pattern : RegExp) : ?string {\n const regmatch : ?$ReadOnlyArray = str.match(pattern);\n if (regmatch) {\n return regmatch[1];\n }\n}\n\nlet onAuthorize : ?Function;\n\n// Post-Bridge\n\nif (isPayPalDomain()) {\n on('onLegacyPaymentAuthorize', { window: window.parent }, ({ data } : { data : { method : Function } }) => {\n onAuthorize = data.method;\n });\n}\n\n// Button / Merchant\n\nexport function onLegacyPaymentAuthorize(method : Function) : ZalgoPromise {\n onAuthorize = method;\n\n return ZalgoPromise.try(() => {\n if (bridge && !isPayPalDomain()) {\n return bridge.openBridge(extendUrl(config.postBridgeUrl, { version: getScriptVersion() }), config.postBridgeDomain).then((postBridge : CrossDomainWindowType) => {\n return send(postBridge, 'onLegacyPaymentAuthorize', { method }, { domain: config.paypalDomain })\n .then(noop);\n });\n }\n });\n}\n\nwindow.onLegacyPaymentAuthorize = onLegacyPaymentAuthorize;\n\n// Post-Bridge / Button\n\nwindow.watchForLegacyFallback = (win : SameDomainWindowType) => {\n const interval = setInterval(() => {\n try {\n const isLegacy = (win.document.body.innerHTML.indexOf('merchantpaymentweb') !== -1 ||\n win.document.body.innerHTML.indexOf('wapapp') !== -1);\n\n if (!isLegacy || win.ppxoWatching || win.closed) {\n return;\n }\n\n win.ppxoWatching = true;\n\n const XMLHttpRequestsend = win.XMLHttpRequest.prototype.send;\n\n win.XMLHttpRequest.prototype.send = function overrideXMLHttpRequestSend() : void {\n\n if (this._patched) {\n return XMLHttpRequestsend.apply(this, arguments);\n }\n\n this._patched = true;\n\n const self = this;\n let onload = this.onload;\n\n function listener() : void {\n\n if (self.readyState === self.DONE && self.status === 200 && self.responseText) {\n\n try {\n const response = JSON.parse(self.responseText.replace('while (1);', ''));\n\n if (response.type === 'redirect' && response.url && onAuthorize) {\n\n const url = response.url;\n\n clearInterval(interval);\n win.close();\n\n onAuthorize({\n returnUrl: url,\n paymentToken: match(url, /token=((EC-)?[A-Z0-9]+)/),\n billingToken: match(url, /ba_token=((BA-)?[A-Z0-9]+)/),\n payerID: match(url, /PayerID=([A-Z0-9]+)/),\n paymentID: match(url, /paymentId=((PAY-)?[A-Z0-9]+)/)\n });\n\n onAuthorize = null;\n\n if (win.PAYPAL && win.PAYPAL.Checkout && win.PAYPAL.Checkout.XhrResponse && win.PAYPAL.Checkout.XhrResponse.RESPONSE_TYPES) {\n Object.defineProperty(win.PAYPAL.Checkout.XhrResponse.RESPONSE_TYPES, 'Redirect', {\n value: Math.random().toString()\n });\n }\n\n if (win.mob && win.mob.Xhr && win.mob.Xhr.prototype._xhrOnReady) {\n win.mob.Xhr.prototype._xhrOnReady = noop;\n }\n }\n\n } catch (err) {\n return;\n }\n }\n\n if (onload) {\n return onload.apply(this, arguments);\n }\n }\n\n if (this.onload !== listener) {\n\n try {\n\n delete this.onload;\n this.addEventListener('load', listener);\n\n // $FlowFixMe\n Object.defineProperty(this, 'onload', {\n get() : Function {\n return listener;\n },\n set(handler) {\n onload = handler;\n }\n });\n\n } catch (err) {\n\n // pass\n }\n\n }\n\n return XMLHttpRequestsend.apply(this, arguments);\n };\n\n } catch (err) {\n // pass\n }\n }, 100);\n};\n\n\nwindow.onLegacyFallback = window.watchForLegacyFallback;\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { info, track, warn, flush as flushLogs, immediateFlush } from 'beaver-logger/client';\nimport { create, CONSTANTS, PopupOpenError } from 'zoid/src';\nimport { type Component } from 'zoid/src/component/component';\nimport type { CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { base64encode } from 'belter/src';\n\nimport { isDevice, request, getQueryParam, redirect as redir, patchMethod,\n setLogLevel, getSessionID, getBrowserLocale, supportsPopups, memoize,\n getDomainSetting, getScriptVersion, getButtonSessionID, isPayPalDomain,\n isEligible, getCurrentScriptUrl } from '../lib';\nimport { config } from '../config';\nimport { ENV, FPTI, PAYMENT_TYPE, CHECKOUT_OVERLAY_COLOR, ATTRIBUTE } from '../constants';\nimport { onLegacyPaymentAuthorize } from '../compat';\nimport { determineParameterFromToken, determineUrl } from '../integrations';\n\nimport { containerTemplate, componentTemplate } from './template';\n\nfunction addHeader(name, value) : void {\n\n if (!window.$Api) {\n return;\n }\n\n if (window.$Api.addHeader) {\n return window.$Api.addHeader(name, value);\n }\n}\n\n// eslint-disable-next-line flowtype/require-exact-type\ntype CheckoutPropsType = {\n payment? : () => ZalgoPromise,\n onAuthorize : ({ returnUrl : string }, { redirect : (?CrossDomainWindowType, ?string) => ZalgoPromise }) => ?ZalgoPromise,\n onShippingChange? : (address : {}) => ?ZalgoPromise,\n onCancel? : ({ cancelUrl : string }, { redirect : (?CrossDomainWindowType, ?string) => ZalgoPromise }) => ?ZalgoPromise,\n fallback? : (string) => ?ZalgoPromise,\n fundingSource? : string,\n logLevel? : string,\n env? : string,\n stage? : string,\n stageUrl? : string,\n localhostUrl? : string,\n checkoutUri? : string,\n authCode? : string\n};\n\nexport const Checkout : Component = create({\n\n tag: 'paypal-checkout',\n name: 'ppcheckout',\n\n scrolling: true,\n\n buildUrl(props) : ZalgoPromise {\n const env = props.env || config.env;\n\n if (!props.payment) {\n throw new Error(`Can not build url without payment prop`);\n }\n\n return props.payment().then(token => {\n if (!token) {\n throw new Error(`Expected payment id or token to be passed, got ${ token }`);\n }\n\n return determineUrl(env, props.fundingSource, token);\n });\n },\n\n get unsafeRenderTo() : boolean {\n return config.env === ENV.LOCAL;\n },\n\n get domain() : Object {\n return {\n ...config.paypalDomains\n };\n },\n\n get bridgeUrl() : Object {\n return config.metaFrameUrls;\n },\n\n get bridgeDomain() : Object {\n return config.paypalDomains;\n },\n\n contexts: {\n iframe: (!supportsPopups()),\n popup: true\n },\n\n get version() : string {\n return getScriptVersion();\n },\n\n validate() {\n if (!isEligible()) {\n warn('checkout_render_ineligible');\n }\n },\n\n prerenderTemplate: componentTemplate,\n containerTemplate,\n\n props: {\n\n sessionID: {\n type: 'string',\n required: false,\n def() : string {\n return getSessionID();\n },\n queryParam: true\n },\n\n buttonSessionID: {\n type: 'string',\n required: false,\n def() : ?string {\n return getButtonSessionID();\n },\n queryParam: true\n },\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n },\n\n meta: {\n type: 'object',\n required: false,\n def() : Object {\n const meta = window.xprops && window.xprops.meta;\n return meta || {};\n }\n },\n\n stage: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.STAGE || env === ENV.LOCAL) {\n return config.stage;\n }\n }\n },\n\n stageUrl: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.STAGE || env === ENV.LOCAL) {\n return config.stageUrl;\n }\n }\n },\n\n authCode: {\n type: 'string',\n required: false,\n def() : string {\n return config.authCode;\n },\n queryParam: 'code'\n },\n\n localhostUrl: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.LOCAL) {\n return config.localhostUrl;\n }\n }\n },\n\n checkoutUri: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : ?string {\n return config.checkoutUri;\n }\n },\n\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n allowDelegate: true,\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n }\n },\n\n\n client: {\n type: 'object',\n required: false,\n def() : { [string] : string } {\n return {};\n },\n sendToChild: false,\n\n validate(client, props) {\n const env = props.env || config.env;\n\n if (!client[env]) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (client[env].match(/^(.)\\1+$/)) {\n throw new Error(`Invalid client ID: ${ client[env] }`);\n }\n }\n },\n\n payment: {\n type: 'function',\n required: false,\n memoize: true,\n promisify: true,\n queryParam(payment) : ZalgoPromise {\n return payment().then(token => {\n return determineParameterFromToken(token);\n });\n },\n queryValue(payment) : ZalgoPromise {\n return payment();\n },\n childDecorate(payment) : () => ZalgoPromise {\n const token = getQueryParam('token');\n\n return token\n ? memoize(() => ZalgoPromise.resolve(token))\n : payment;\n },\n validate(payment, props) {\n if (!payment && !props.url) {\n throw new Error(`Expected either props.payment or props.url to be passed`);\n }\n },\n alias: 'billingAgreement'\n },\n\n style: {\n type: 'object',\n required: false,\n allowDelegate: true,\n def() : Object {\n return {};\n },\n validate(style) {\n if (style.overlayColor && style.overlayColor !== CHECKOUT_OVERLAY_COLOR.BLACK && style.overlayColor !== CHECKOUT_OVERLAY_COLOR.WHITE) {\n throw new Error(`Invalid background color: ${ style.overlayColor }`);\n }\n }\n },\n\n commit: {\n type: 'boolean',\n required: false\n },\n\n experience: {\n type: 'object',\n required: false,\n def() : Object {\n return {};\n }\n },\n\n fundingSource: {\n type: 'string',\n required: false,\n queryParam: true\n },\n\n fundingOffered: {\n type: 'object',\n required: false,\n queryParam: true,\n def() : Object {\n const elements = Array.prototype.slice.call(document.querySelectorAll(`[${ ATTRIBUTE.FUNDING_SOURCE }]`));\n\n const fundingSources = elements.map(el => {\n return el.getAttribute(ATTRIBUTE.FUNDING_SOURCE);\n });\n\n // $FlowFixMe\n return fundingSources;\n },\n queryValue: (val) => {\n return val.join(',');\n }\n },\n\n onAuthorize: {\n type: 'function',\n required: true,\n once: true,\n \n decorate(original) : Function | void {\n if (original) {\n return function decorateOnAuthorize(data, actions = {}) : ZalgoPromise {\n\n if (data && !data.intent) {\n warn(`checkout_authorize_no_intent`, { paymentID: data.paymentID, token: data.paymentToken });\n }\n\n const close = () => {\n return ZalgoPromise.try(() => {\n if (actions.close) {\n return actions.close();\n }\n }).then(() => {\n return this.closeComponent();\n });\n };\n\n const redirect = (win, url) => {\n return ZalgoPromise.all([\n redir(win || window.top, url || data.returnUrl),\n close()\n ]);\n };\n\n return ZalgoPromise.try(() => {\n\n try {\n const isButton = window.location.href.indexOf('/smart/button') !== -1;\n const isGuest = this.window.location.href.indexOf('/webapps/xoonboarding') !== -1;\n\n if (isButton && isGuest) {\n return request({\n win: this.window,\n method: 'get',\n url: '/webapps/xoonboarding/api/auth'\n }).then(result => {\n if (result && result.data && result.data.access_token) {\n addHeader('x-paypal-internal-euat', result.data.access_token);\n }\n }).catch(() => {\n // pass\n });\n }\n\n } catch (err) {\n // pass\n }\n\n }).then(() => {\n return original.call(this, data, { ...actions, close, redirect });\n }).catch(err => {\n return this.error(err);\n }).finally(() => {\n return this.close();\n });\n };\n }\n }\n },\n\n onShippingChange: {\n type: 'function',\n required: false\n },\n\n onAuth: {\n type: 'function',\n required: false,\n sameDomain: true,\n childDecorate(original : Function) : ?Function {\n if (original) {\n return function wrapOnAuth(data : string | Object) : Object {\n if (typeof data === 'string') {\n data = { accessToken: data };\n }\n return original(data);\n };\n }\n }\n },\n\n accessToken: {\n type: 'function',\n required: false\n },\n\n onCancel: {\n type: 'function',\n required: false,\n once: true,\n noop: true,\n\n decorate(original) : Function {\n return function decorateOnCancel(data, actions = {}) : ZalgoPromise {\n\n const close = () => {\n return ZalgoPromise.try(() => {\n if (actions.close) {\n return actions.close();\n }\n }).then(() => {\n return this.closeComponent();\n });\n };\n\n const redirect = (win, url) => {\n return ZalgoPromise.all([\n redir(win || window.top, url || data.cancelUrl),\n close()\n ]);\n };\n\n return ZalgoPromise.try(() => {\n return original.call(this, data, { ...actions, close, redirect });\n }).finally(() => {\n this.close();\n });\n };\n }\n },\n\n init: {\n type: 'function',\n required: false,\n once: true,\n noop: true,\n\n decorate(original) : Function {\n return function decorateInit(data) : void {\n info('checkout_init');\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CHECKOUT_INIT,\n [ FPTI.KEY.CONTEXT_TYPE ]: FPTI.CONTEXT_TYPE[PAYMENT_TYPE.EC_TOKEN],\n [ FPTI.KEY.TOKEN ]: data.paymentToken,\n [ FPTI.KEY.SELLER_ID ]: data.merchantID,\n [ FPTI.KEY.CONTEXT_ID ]: data.paymentToken\n });\n\n flushLogs();\n\n this.paymentToken = data.paymentToken;\n this.cancelUrl = data.cancelUrl;\n\n return original.apply(this, arguments);\n };\n }\n },\n\n onClose: {\n type: 'function',\n required: false,\n once: true,\n promisify: true,\n noop: true,\n\n decorate(original) : Function {\n return function decorateOnClose(reason) : ZalgoPromise {\n\n const onClose = original.apply(this, arguments);\n\n const CLOSE_REASONS = CONSTANTS.CLOSE_REASONS;\n\n const shouldCancel =\n this.props.onCancel &&\n [ CLOSE_REASONS.CLOSE_DETECTED, CLOSE_REASONS.USER_CLOSED ].indexOf(reason) !== -1;\n\n if (shouldCancel) {\n info(`close_trigger_cancel`);\n return this.props.onCancel({\n paymentToken: this.paymentToken,\n cancelUrl: this.cancelUrl\n }).then(() => onClose);\n }\n\n return onClose;\n };\n }\n },\n\n onError: {\n type: 'function',\n required: false,\n promisify: true,\n noop: true,\n once: true\n },\n\n fallback: {\n type: 'function',\n required: false,\n once: true,\n\n def() : Function {\n return function defaultFallback(url) : ZalgoPromise {\n warn('fallback', { url });\n\n if (getDomainSetting('allow_full_page_fallback')) {\n window.top.location = url;\n return this.close();\n }\n\n return onLegacyPaymentAuthorize(this.props.onAuthorize);\n };\n }\n },\n\n logLevel: {\n type: 'string',\n required: false,\n get value() : string {\n return config.logLevel;\n }\n },\n \n test: {\n type: 'object',\n required: false,\n def() : Object {\n return window.__test__ || { action: 'checkout' };\n }\n },\n\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n }\n },\n\n get dimensions() : { width : string, height : string } {\n\n if (isDevice()) {\n return {\n width: '100%',\n height: '590px'\n };\n }\n\n return {\n width: '500px',\n height: '590px'\n };\n }\n});\n\nif (Checkout.isChild() && Checkout.xchild && Checkout.xprops) {\n\n if (Checkout.xprops && Checkout.xprops.logLevel) {\n setLogLevel(Checkout.xprops.logLevel);\n }\n\n Checkout.xchild.onProps(xprops => {\n patchMethod(xprops, 'onAuthorize', ({ callOriginal, args: [ data ] }) => {\n if (data && !data.intent) {\n warn(`hermes_authorize_no_intent`, { paymentID: data.paymentID, token: data.paymentToken });\n\n try {\n const intent = window.injector.get('$CheckoutCartModel').instance(data.paymentToken).payment_action;\n warn(`hermes_intent`, { paymentID: data.paymentID, token: data.paymentToken, intent });\n } catch (err) {\n // pass\n }\n\n immediateFlush();\n }\n return callOriginal();\n });\n });\n}\n\npatchMethod(Checkout, 'init', ({ args: [ props, _context ], original, context }) => {\n return original.call(context, props, _context, 'body');\n});\n\npatchMethod(Checkout, 'render', ({ args: [ props ], original, context }) => {\n return original.call(context, props, 'body');\n});\n\npatchMethod(Checkout, 'renderTo', ({ args: [ win, props ], original, context }) => {\n\n const payment = props.payment();\n props.payment = () => payment;\n\n return original.call(context, win, props, 'body').catch(err => {\n if (err instanceof PopupOpenError && isPayPalDomain()) {\n Checkout.contexts.iframe = true;\n return original.call(context, win, props, 'body');\n }\n throw err;\n });\n});\n\n","/* @flow */\n\nexport * from './component';\n","/* @flow */\n\nexport function getUserAgent() : string {\n return window.navigator.mockUserAgent || window.navigator.userAgent;\n}\n\nexport function isDevice(userAgent? : string = getUserAgent()) : boolean {\n if (userAgent.match(/Android|webOS|iPhone|iPad|iPod|bada|Symbian|Palm|CriOS|BlackBerry|IEMobile|WindowsMobile|Opera Mini/i)) {\n return true;\n }\n\n return false;\n}\n\nexport function isWebView() : boolean {\n let userAgent = getUserAgent();\n return (/(iPhone|iPod|iPad|Macintosh).*AppleWebKit(?!.*Safari)/i).test(userAgent) ||\n (/\\bwv\\b/).test(userAgent) ||\n (/Android.*Version\\/(\\d)\\.(\\d)/i).test(userAgent);\n}\n\nexport function isStandAlone() : boolean {\n return (window.navigator.standalone === true || window.matchMedia('(display-mode: standalone)').matches);\n}\n\nexport function isFacebookWebView(ua? : string = getUserAgent()) : boolean {\n return (ua.indexOf('FBAN') !== -1) || (ua.indexOf('FBAV') !== -1);\n}\n\nexport function isFirefoxIOS(ua? : string = getUserAgent()) : boolean {\n return (/FxiOS/i).test(ua);\n}\n\nexport function isEdgeIOS(ua? : string = getUserAgent()) : boolean {\n return (/EdgiOS/i).test(ua);\n}\n\nexport function isOperaMini(ua? : string = getUserAgent()) : boolean {\n return ua.indexOf('Opera Mini') > -1;\n}\n\nexport function isAndroid(ua? : string = getUserAgent()) : boolean {\n return (/Android/).test(ua);\n}\n\nexport function isIos(ua? : string = getUserAgent()) : boolean {\n return (/iPhone|iPod|iPad/).test(ua);\n}\n\nexport function isGoogleSearchApp(ua? : string = getUserAgent()) : boolean {\n return (/\\bGSA\\b/).test(ua);\n}\n\nexport function isQQBrowser(ua? : string = getUserAgent()) : boolean {\n return (/QQBrowser/).test(ua);\n}\n\nexport function isIosWebview(ua? : string = getUserAgent()) : boolean {\n if (isIos(ua)) {\n if (isGoogleSearchApp(ua)) {\n return true;\n }\n return (/.+AppleWebKit(?!.*Safari)/).test(ua);\n }\n return false;\n}\n\nexport function isAndroidWebview(ua? : string = getUserAgent()) : boolean {\n if (isAndroid(ua)) {\n return (/Version\\/[\\d.]+/).test(ua) && !isOperaMini(ua);\n }\n return false;\n}\n\nexport function isIE() : boolean {\n\n if (window.document.documentMode) {\n return true;\n }\n\n return Boolean(\n window.navigator &&\n window.navigator.userAgent &&\n (/Edge|MSIE|rv:11/i).test(window.navigator.userAgent)\n );\n}\n\nexport function isIECompHeader() : boolean {\n let mHttp = window.document.querySelector('meta[http-equiv=\"X-UA-Compatible\"]');\n let mContent = window.document.querySelector('meta[content=\"IE=edge\"]');\n if (mHttp && mContent) {\n return true;\n }\n return false;\n}\n\nexport function isElectron() : boolean {\n if (typeof process !== 'undefined' && process.versions && process.versions.electron) {\n return true;\n }\n return false;\n}\n\nexport function isIEIntranet() : boolean {\n\n // This status check only works for older versions of IE with document.documentMode set\n\n if (window.document.documentMode) {\n try {\n let status = window.status;\n\n window.status = 'testIntranetMode';\n\n if (window.status === 'testIntranetMode') {\n window.status = status;\n\n return true;\n }\n\n return false;\n\n } catch (err) {\n\n return false;\n }\n }\n\n return false;\n}\n\nexport function isMacOsCna() : boolean {\n let userAgent = getUserAgent();\n return (/Macintosh.*AppleWebKit(?!.*Safari)/i).test(userAgent);\n}\n\nexport function supportsPopups(ua? : string = getUserAgent()) : boolean {\n return !(isIosWebview(ua) || isAndroidWebview(ua) || isOperaMini(ua) ||\n isFirefoxIOS(ua) || isEdgeIOS(ua) || isFacebookWebView(ua) || isQQBrowser(ua) || isElectron() || isMacOsCna() || isStandAlone());\n}\n\nexport function isChrome(ua? : string = getUserAgent()) : boolean {\n return (/Chrome|Chromium|CriOS/).test(ua);\n}\n\nexport function isSafari(ua? : string = getUserAgent()) : boolean {\n return (/Safari/).test(ua) && !isChrome(ua);\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\n\nimport type { CancelableType } from './types';\n\nexport function getFunctionName (fn : T) : string {\n return fn.name || fn.__name__ || fn.displayName || 'anonymous';\n}\n\nexport function setFunctionName (fn : T, name : string) : T {\n try {\n delete fn.name;\n fn.name = name;\n } catch (err) {\n // pass\n }\n\n fn.__name__ = fn.displayName = name;\n return fn;\n}\n\nexport function base64encode(str : string) : string {\n if (typeof btoa === 'function') {\n return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, (m, p1) => {\n return String.fromCharCode(parseInt(p1, 16));\n }));\n }\n\n if (typeof Buffer !== 'undefined') {\n return Buffer.from(str, 'utf8').toString('base64');\n }\n\n throw new Error(`Can not find window.btoa or Buffer`);\n}\n\nexport function base64decode(str : string) : string {\n if (typeof atob === 'function') {\n return decodeURIComponent(Array.prototype.map.call(atob(str), c => {\n // eslint-disable-next-line prefer-template\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\n }).join(''));\n }\n\n if (typeof Buffer !== 'undefined') {\n return Buffer.from(str, 'base64').toString('utf8');\n }\n\n throw new Error(`Can not find window.atob or Buffer`);\n}\n\nexport function uniqueID() : string {\n\n let chars = '0123456789abcdef';\n\n let randomID = 'xxxxxxxxxx'.replace(/./g, () => {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n });\n\n let timeID = base64encode(\n new Date().toISOString().slice(11, 19).replace('T', '.')\n ).replace(/[^a-zA-Z0-9]/g, '').toLowerCase();\n\n return `${ randomID }_${ timeID }`;\n}\n\nexport function getGlobal() : Object {\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n if (typeof __GLOBAL__ !== 'undefined') {\n return __GLOBAL__;\n }\n throw new Error(`No global found`);\n}\n\nlet objectIDs;\n\nexport function getObjectID(obj : Object) : string {\n\n objectIDs = objectIDs || new WeakMap();\n\n if (obj === null || obj === undefined || (typeof obj !== 'object' && typeof obj !== 'function')) {\n throw new Error(`Invalid object`);\n }\n\n let uid = objectIDs.get(obj);\n\n if (!uid) {\n uid = `${ typeof obj }:${ uniqueID() }`;\n objectIDs.set(obj, uid);\n }\n\n return uid;\n}\n\nfunction serializeArgs(args : Array) : string {\n try {\n return JSON.stringify(Array.prototype.slice.call(args), (subkey, val) => {\n if (typeof val === 'function') {\n return `memoize[${ getObjectID(val) }]`;\n }\n return val;\n });\n } catch (err) {\n throw new Error(`Arguments not serializable -- can not be used to memoize`);\n }\n}\nexport function memoize) => R, X : { (...args : Array) : R, displayName : string, reset : () => void }>(method : F, options : { time? : number, thisNamespace? : boolean } = {}) : X {\n let cacheMap = new WeakMap();\n\n // $FlowFixMe\n let memoizedFunction : X = function memoizedFunction(...args : Array) : R {\n let cache = cacheMap.getOrSet(options.thisNamespace ? this : method, () => ({}));\n\n let key : string = serializeArgs(args);\n\n let cacheTime = options.time;\n if (cache[key] && cacheTime && (Date.now() - cache[key].time) < cacheTime) {\n delete cache[key];\n }\n\n if (cache[key]) {\n return cache[key].value;\n }\n\n let time = Date.now();\n let value = method.apply(this, arguments);\n\n cache[key] = { time, value };\n\n return cache[key].value;\n };\n\n memoizedFunction.reset = () => {\n cacheMap.delete(options.thisNamespace ? this : method);\n };\n\n return setFunctionName(memoizedFunction, `${ getFunctionName(method) }::memoized`);\n}\n\nexport function promiseIdentity(item : ZalgoPromise | T) : ZalgoPromise {\n // $FlowFixMe\n return ZalgoPromise.resolve(item);\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport function memoizePromise(method : (...args : Array) => ZalgoPromise) : ((...args : Array) => ZalgoPromise) {\n let cache = {};\n\n // eslint-disable-next-line flowtype/no-weak-types\n function memoizedPromiseFunction(...args : Array) : ZalgoPromise {\n let key : string = serializeArgs(args);\n\n if (cache.hasOwnProperty(key)) {\n return cache[key];\n }\n\n cache[key] = ZalgoPromise.try(() => method.apply(this, arguments))\n .finally(() => {\n delete cache[key];\n });\n\n return cache[key];\n }\n\n memoizedPromiseFunction.reset = () => {\n cache = {};\n };\n\n return setFunctionName(memoizedPromiseFunction, `${ getFunctionName(method) }::promiseMemoized`);\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport function promisify(method : (...args : Array) => R, options : { name? : string } = {}) : ((...args : Array) => ZalgoPromise) {\n function promisifiedFunction() : ZalgoPromise {\n return ZalgoPromise.try(method, this, arguments);\n }\n\n if (options.name) {\n promisifiedFunction.displayName = `${ options.name }:promisified`;\n }\n\n return setFunctionName(promisifiedFunction, `${ getFunctionName(method) }::promisified`);\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport function inlineMemoize(method : (...args : Array) => R, logic : (...args : Array) => R, args : Array = []) : R {\n // $FlowFixMe\n let cache = method.__inline_memoize_cache__ = method.__inline_memoize_cache__ || {};\n let key = serializeArgs(args);\n\n if (cache.hasOwnProperty(key)) {\n return cache[key];\n }\n \n let result = cache[key] = logic(...args);\n\n return result;\n}\n\n// eslint-disable-next-line no-unused-vars\nexport function noop(...args : Array) {\n // pass\n}\n\nexport function once(method : Function) : Function {\n let called = false;\n\n const onceFunction = function() : mixed {\n if (!called) {\n called = true;\n return method.apply(this, arguments);\n }\n };\n\n return setFunctionName(onceFunction, `${ getFunctionName(method) }::once`);\n}\n\nexport function hashStr(str : string) : number {\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n hash += str[i].charCodeAt(0) * Math.pow((i % 10) + 1, 5);\n }\n return Math.floor(Math.pow(Math.sqrt(hash), 5));\n}\n\nexport function strHashStr(str : string) : string {\n let hash = '';\n\n for (let i = 0; i < str.length; i++) {\n let total = (str[i].charCodeAt(0) * i);\n\n if (str[i + 1]) {\n total += (str[i + 1].charCodeAt(0) * (i - 1));\n }\n\n hash += String.fromCharCode(97 + (Math.abs(total) % 26));\n }\n\n return hash;\n}\n\nexport function match(str : string, pattern : RegExp) : ?string {\n let regmatch = str.match(pattern);\n if (regmatch) {\n return regmatch[1];\n }\n}\n\nexport function awaitKey(obj : Object, key : string) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n\n let value = obj[key];\n\n if (value) {\n return resolve(value);\n }\n\n delete obj[key];\n\n Object.defineProperty(obj, key, {\n\n configurable: true,\n\n set(item) {\n value = item;\n\n if (value) {\n resolve(value);\n }\n },\n\n get() : mixed {\n return value;\n }\n });\n });\n}\n\nexport function stringifyError(err : mixed, level : number = 1) : string {\n\n if (level >= 3) {\n return 'stringifyError stack overflow';\n }\n\n try {\n if (!err) {\n return ``;\n }\n\n if (typeof err === 'string') {\n return err;\n }\n\n if (err instanceof Error) {\n let stack = err && err.stack;\n let message = err && err.message;\n\n if (stack && message) {\n if (stack.indexOf(message) !== -1) {\n return stack;\n } else {\n return `${ message }\\n${ stack }`;\n }\n } else if (stack) {\n return stack;\n } else if (message) {\n return message;\n }\n }\n\n if (err && err.toString && typeof err.toString === 'function') {\n // $FlowFixMe\n return err.toString();\n }\n\n return Object.prototype.toString.call(err);\n\n } catch (newErr) { // eslint-disable-line unicorn/catch-error-name\n return `Error while stringifying error: ${ stringifyError(newErr, level + 1) }`;\n }\n}\n\nexport function stringifyErrorMessage(err : mixed) : string {\n\n let defaultMessage = ``;\n\n if (!err) {\n return defaultMessage;\n }\n\n if (err instanceof Error) {\n return err.message || defaultMessage;\n }\n\n if (typeof err.message === 'string') {\n return err.message || defaultMessage;\n }\n\n return defaultMessage;\n}\n\nexport function stringify(item : mixed) : string {\n if (typeof item === 'string') {\n return item;\n }\n\n if (item && item.toString && typeof item.toString === 'function') {\n // $FlowFixMe\n return item.toString();\n }\n\n return Object.prototype.toString.call(item);\n}\n\nexport function domainMatches(hostname : string, domain : string) : boolean {\n hostname = hostname.split('://')[1];\n let index = hostname.indexOf(domain);\n return (index !== -1 && hostname.slice(index) === domain);\n}\n\nexport function patchMethod(obj : Object, name : string, handler : Function) {\n let original = obj[name];\n\n obj[name] = function patchedMethod() : mixed {\n return handler({\n context: this,\n args: Array.prototype.slice.call(arguments),\n original,\n callOriginal: () => original.apply(this, arguments)\n });\n };\n}\n\nexport function extend(obj : T, source : Object) : T {\n if (!source) {\n return obj;\n }\n\n if (Object.assign) {\n return Object.assign(obj, source);\n }\n\n for (let key in source) {\n if (source.hasOwnProperty(key)) {\n obj[key] = source[key];\n }\n }\n\n return obj;\n}\n\nexport function values(obj : { [string] : T }) : Array {\n let result = [];\n for (let key in obj) {\n if (obj.hasOwnProperty(key)) {\n result.push(obj[key]);\n }\n }\n return result;\n}\n\nexport function perc(pixels : number, percentage : number) : number {\n return Math.round((pixels * percentage) / 100);\n}\n\nexport function min(...args : Array) : number {\n return Math.min(...args);\n}\n\nexport function max(...args : Array) : number {\n return Math.max(...args);\n}\n\nexport function regexMap(str : string, regexp : RegExp, handler : () => T) : Array {\n let results = [];\n\n // $FlowFixMe\n str.replace(regexp, function regexMapMatcher(item) {\n results.push(handler ? handler.apply(null, arguments) : item);\n });\n\n // $FlowFixMe\n return results;\n}\n\nexport function svgToBase64(svg : string) : string {\n return `data:image/svg+xml;base64,${ base64encode(svg) }`;\n}\n\nexport function objFilter(obj : { [string] : T }, filter? : (T, ?string) => mixed = Boolean) : { [string] : R } {\n let result = {};\n\n for (let key in obj) {\n if (!obj.hasOwnProperty(key) || !filter(obj[key], key)) {\n continue;\n }\n\n result[key] = obj[key];\n }\n\n return result;\n}\n\nexport function identity (item : T) : T {\n return item;\n}\n\nexport function regexTokenize(text : string, regexp : RegExp) : Array {\n let result = [];\n text.replace(regexp, token => {\n result.push(token);\n return '';\n });\n return result;\n}\n\nexport function promiseDebounce(method : () => ZalgoPromise | T, delay : number = 50) : () => ZalgoPromise {\n\n let promise;\n let timeout;\n\n const promiseDebounced = function() : ZalgoPromise {\n if (timeout) {\n clearTimeout(timeout);\n }\n\n let localPromise = promise = promise || new ZalgoPromise();\n\n timeout = setTimeout(() => {\n promise = null;\n timeout = null;\n\n ZalgoPromise.try(method).then(\n result => { localPromise.resolve(result); },\n err => { localPromise.reject(err); }\n );\n }, delay);\n\n return localPromise;\n };\n\n return setFunctionName(promiseDebounced, `${ getFunctionName(method) }::promiseDebounced`);\n}\n\nexport function safeInterval(method : Function, time : number) : { cancel : () => void } {\n\n let timeout;\n\n function loop() {\n timeout = setTimeout(() => {\n method();\n loop();\n }, time);\n }\n\n loop();\n\n return {\n cancel() {\n clearTimeout(timeout);\n }\n };\n}\n\nexport function isInteger(str : string) : boolean {\n return Boolean(str.match(/^[0-9]+$/));\n}\n\nexport function isFloat(str : string) : boolean {\n return Boolean(str.match(/^[0-9]+\\.[0-9]+$/));\n}\n\nexport function serializePrimitive(value : string | number | boolean) : string {\n return value.toString();\n}\n\nexport function deserializePrimitive(value : string) : string | number | boolean {\n if (value === 'true') {\n return true;\n } else if (value === 'false') {\n return false;\n } else if (isInteger(value)) {\n return parseInt(value, 10);\n } else if (isFloat(value)) {\n return parseFloat(value);\n } else {\n return value;\n }\n}\n\nexport function dotify(obj : Object, prefix : string = '', newobj : Object = {}) : { [string] : string } {\n prefix = prefix ? `${ prefix }.` : prefix;\n for (let key in obj) {\n if (!obj.hasOwnProperty(key) || obj[key] === undefined || obj[key] === null || typeof obj[key] === 'function') {\n continue;\n } else if (obj[key] && Array.isArray(obj[key]) && obj[key].length && obj[key].every(val => typeof val !== 'object')) {\n newobj[`${ prefix }${ key }[]`] = obj[key].join(',');\n } else if (obj[key] && typeof obj[key] === 'object') {\n newobj = dotify(obj[key], `${ prefix }${ key }`, newobj);\n } else {\n newobj[`${ prefix }${ key }`] = serializePrimitive(obj[key]);\n }\n }\n return newobj;\n}\n\nexport function undotify(obj : { [string] : string }) : Object {\n \n let result = {};\n\n for (let key in obj) {\n if (!obj.hasOwnProperty(key) || typeof obj[key] !== 'string') {\n continue;\n }\n\n let value = obj[key];\n\n if (key.match(/^.+\\[\\]$/)) {\n key = key.slice(0, key.length - 2);\n value = value.split(',').map(deserializePrimitive);\n } else {\n value = deserializePrimitive(value);\n }\n\n let keyResult = result;\n let parts = key.split('.');\n for (let i = 0; i < parts.length; i++) {\n let part = parts[i];\n let isLast = (i + 1 === parts.length);\n let isIndex = !isLast && isInteger(parts[i + 1]);\n\n if (part === 'constructor' || part === 'prototype' || part === '__proto__') {\n throw new Error(`Disallowed key: ${ part }`);\n }\n\n if (isLast) {\n // $FlowFixMe\n keyResult[part] = value;\n } else {\n // $FlowFixMe\n keyResult = keyResult[part] = keyResult[part] || (isIndex ? [] : {});\n }\n }\n }\n\n return result;\n}\n\nexport type EventEmitterType = {\n on : (eventName : string, handler : Function) => CancelableType,\n once : (eventName : string, handler : Function) => CancelableType,\n trigger : (eventName : string, ...args : $ReadOnlyArray) => ZalgoPromise,\n triggerOnce : (eventName : string, ...args : $ReadOnlyArray) => ZalgoPromise\n};\n\nexport function eventEmitter() : EventEmitterType {\n let triggered = {};\n let handlers = {};\n\n return {\n\n on(eventName : string, handler : Function) : CancelableType {\n let handlerList = handlers[eventName] = handlers[eventName] || [];\n\n handlerList.push(handler);\n\n let cancelled = false;\n\n return {\n cancel() {\n if (!cancelled) {\n cancelled = true;\n handlerList.splice(handlerList.indexOf(handler), 1);\n }\n\n }\n };\n },\n\n once(eventName : string, handler : Function) : CancelableType {\n\n let listener = this.on(eventName, () => {\n listener.cancel();\n handler();\n });\n\n return listener;\n },\n\n trigger(eventName : string, ...args : $ReadOnlyArray) : ZalgoPromise {\n\n let handlerList = handlers[eventName];\n let promises = [];\n\n if (handlerList) {\n for (let handler of handlerList) {\n promises.push(ZalgoPromise.try(() => handler(...args)));\n }\n }\n\n return ZalgoPromise.all(promises).then(noop);\n },\n\n triggerOnce(eventName : string, ...args : $ReadOnlyArray) : ZalgoPromise {\n\n if (triggered[eventName]) {\n return ZalgoPromise.resolve();\n }\n\n triggered[eventName] = true;\n return this.trigger(eventName, ...args);\n }\n };\n}\n\nexport function camelToDasherize(string : string) : string {\n return string.replace(/([A-Z])/g, (g) => {\n return `-${ g.toLowerCase() }`;\n });\n}\n\nexport function dasherizeToCamel(string : string) : string {\n return string.replace(/-([a-z])/g, (g) => {\n return g[1].toUpperCase();\n });\n}\n\nexport function capitalizeFirstLetter(string : string) : string {\n return string.charAt(0).toUpperCase() + string.slice(1).toLowerCase();\n}\n\nexport function get(item : Object, path : string, def : mixed) : mixed {\n\n if (!path) {\n return def;\n }\n\n let pathParts = path.split('.');\n\n // Loop through each section of our key path\n\n for (let i = 0; i < pathParts.length; i++) {\n\n // If we have an object, we can get the key\n if (typeof item === 'object' && item !== null) {\n item = item[pathParts[i]];\n\n // Otherwise, we should return the default (undefined if not provided)\n } else {\n return def;\n }\n }\n\n // If our final result is undefined, we should return the default\n\n return item === undefined ? def : item;\n}\n\nexport function safeTimeout(method : Function, time : number) {\n\n let interval = safeInterval(() => {\n time -= 100;\n if (time <= 0) {\n interval.cancel();\n method();\n }\n }, 100);\n}\n\nexport function defineLazyProp(obj : Object | Array, key : string | number, getter : () => T) {\n if (Array.isArray(obj)) {\n if (typeof key !== 'number') {\n throw new TypeError(`Array key must be number`);\n }\n } else if (typeof obj === 'object' && obj !== null) {\n if (typeof key !== 'string') {\n throw new TypeError(`Object key must be string`);\n }\n }\n \n Object.defineProperty(obj, key, {\n configurable: true,\n enumerable: true,\n get: () => {\n // $FlowFixMe\n delete obj[key];\n let value = getter();\n // $FlowFixMe\n obj[key] = value;\n return value;\n },\n set: (value : T) => {\n // $FlowFixMe\n delete obj[key];\n // $FlowFixMe\n obj[key] = value;\n }\n });\n}\n\nexport function arrayFrom(item : Iterable) : Array { // eslint-disable-line no-undef\n return Array.prototype.slice.call(item);\n}\n\nexport function isObject(item : mixed) : boolean {\n return (typeof item === 'object' && item !== null);\n}\n\nexport function isObjectObject(obj : mixed) : boolean {\n return isObject(obj) && Object.prototype.toString.call(obj) === '[object Object]';\n}\n\nexport function isPlainObject(obj : mixed) : boolean {\n if (!isObjectObject(obj)) {\n return false;\n }\n\n // $FlowFixMe\n let constructor = obj.constructor;\n\n if (typeof constructor !== 'function') {\n return false;\n }\n\n let prototype = constructor.prototype;\n\n if (!isObjectObject(prototype)) {\n return false;\n }\n\n if (!prototype.hasOwnProperty('isPrototypeOf')) {\n return false;\n }\n\n return true;\n}\n\nexport function replaceObject | Object> (item : T, replacer : (mixed, string | number, string) => mixed, fullKey : string = '') : T {\n\n if (Array.isArray(item)) {\n let length = item.length;\n let result : Array = [];\n\n for (let i = 0; i < length; i++) {\n\n \n defineLazyProp(result, i, () => {\n let itemKey = fullKey ? `${ fullKey }.${ i }` : `${ i }`;\n let el = item[i];\n\n let child = replacer(el, i, itemKey);\n\n if (isPlainObject(child) || Array.isArray(child)) {\n // $FlowFixMe\n child = replaceObject(child, replacer, itemKey);\n }\n\n return child;\n });\n }\n\n // $FlowFixMe\n return result;\n } else if (isPlainObject(item)) {\n let result = {};\n\n for (let key in item) {\n if (!item.hasOwnProperty(key)) {\n continue;\n }\n\n defineLazyProp(result, key, () => {\n let itemKey = fullKey ? `${ fullKey }.${ key }` : `${ key }`;\n // $FlowFixMe\n let el = item[key];\n\n let child = replacer(el, key, itemKey);\n\n if (isPlainObject(child) || Array.isArray(child)) {\n // $FlowFixMe\n child = replaceObject(child, replacer, itemKey);\n }\n\n return child;\n });\n }\n\n // $FlowFixMe\n return result;\n } else {\n throw new Error(`Pass an object or array`);\n }\n}\n\n\nexport function copyProp(source : Object, target : Object, name : string, def : mixed) {\n if (source.hasOwnProperty(name)) {\n let descriptor = Object.getOwnPropertyDescriptor(source, name);\n // $FlowFixMe\n Object.defineProperty(target, name, descriptor);\n\n } else {\n target[name] = def;\n }\n}\n\ntype RegexResultType = {\n text : string,\n groups : Array,\n start : number,\n end : number,\n length : number,\n replace : (text : string) => string\n};\n\nexport function regex(pattern : string | RegExp, string : string, start : number = 0) : ?RegexResultType {\n\n if (typeof pattern === 'string') {\n // eslint-disable-next-line security/detect-non-literal-regexp\n pattern = new RegExp(pattern);\n }\n\n let result = string.slice(start).match(pattern);\n\n if (!result) {\n return;\n }\n\n // $FlowFixMe\n let index : number = result.index;\n let regmatch = result[0];\n\n return {\n text: regmatch,\n groups: result.slice(1),\n start: start + index,\n end: start + index + regmatch.length,\n length: regmatch.length,\n\n replace(text : string) : string {\n\n if (!regmatch) {\n return '';\n }\n\n return `${ regmatch.slice(0, start + index) }${ text }${ regmatch.slice(index + regmatch.length) }`;\n }\n };\n}\n\nexport function regexAll(pattern : string | RegExp, string : string) : Array {\n\n let matches = [];\n let start = 0;\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n let regmatch = regex(pattern, string, start);\n\n if (!regmatch) {\n break;\n }\n\n matches.push(regmatch);\n start = match.end;\n }\n\n return matches;\n}\n\nexport function isDefined(value : ?mixed) : boolean {\n return value !== null && value !== undefined;\n}\n\nexport function cycle(method : Function) : ZalgoPromise {\n return ZalgoPromise.try(method).then(() => cycle(method));\n}\n\nexport function debounce(method : (...args : Array) => T, time : number = 100) : (...args : Array) => void {\n\n let timeout;\n\n const debounceWrapper = function() {\n clearTimeout(timeout);\n\n timeout = setTimeout(() => {\n return method.apply(this, arguments);\n }, time);\n };\n\n return setFunctionName(debounceWrapper, `${ getFunctionName(method) }::debounced`);\n}\n\nexport function isRegex(item : mixed) : boolean {\n return Object.prototype.toString.call(item) === '[object RegExp]';\n}\n\ntype FunctionProxy = (method : T) => T;\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport let weakMapMemoize : FunctionProxy<*> = (method : (arg : any) => R) : ((...args : Array) => R) => {\n\n let weakmap = new WeakMap();\n\n // eslint-disable-next-line flowtype/no-weak-types\n return function weakmapMemoized(arg : any) : R {\n return weakmap.getOrSet(arg, () => method.call(this, arg));\n };\n};\n\ntype FunctionPromiseProxy) => ZalgoPromise> = (T) => T;\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport let weakMapMemoizePromise : FunctionPromiseProxy<*, *> = (method : (arg : any) => ZalgoPromise) : ((...args : Array) => ZalgoPromise) => {\n\n let weakmap = new WeakMap();\n\n // eslint-disable-next-line flowtype/no-weak-types\n return function weakmapMemoizedPromise(arg : any) : ZalgoPromise {\n return weakmap.getOrSet(arg, () =>\n method.call(this, arg).finally(() => {\n weakmap.delete(arg);\n })\n );\n };\n};\n\nexport function getOrSet(obj : O, key : string, getter : () => T) : T {\n if (obj.hasOwnProperty(key)) {\n return obj[key];\n }\n\n const val = getter();\n obj[key] = val;\n return val;\n}\n\nexport type CleanupType = {|\n set : (string, T) => T, // eslint-disable-line no-undef\n register : (Function) => void,\n all : () => ZalgoPromise\n|};\n\nexport function cleanup(obj : Object) : CleanupType {\n\n const tasks = [];\n let cleaned = false;\n\n return {\n set(name : string, item : T) : T {\n if (!cleaned) {\n obj[name] = item;\n this.register(() => {\n delete obj[name];\n });\n }\n return item;\n },\n\n register(method : Function) {\n if (cleaned) {\n method();\n } else {\n tasks.push(once(method));\n }\n },\n\n all() : ZalgoPromise {\n const results = [];\n cleaned = true;\n\n while (tasks.length) {\n const task = tasks.pop();\n results.push(task());\n }\n\n return ZalgoPromise.all(results).then(noop);\n }\n };\n}\n\nexport function tryCatch(fn : () => T) : {| result : T, error : void |} | {| result : void, error : mixed |} {\n let result;\n let error;\n\n try {\n result = fn();\n } catch (err) {\n error = err;\n }\n \n // $FlowFixMe\n return { result, error };\n}\n\nexport function removeFromArray>(arr : T, item : X) {\n const index = arr.indexOf(item);\n if (index !== -1) {\n arr.splice(index, 1);\n }\n}\n\nexport function assertExists(name : string, thing : void | null | T) : T {\n if (thing === null || typeof thing === 'undefined') {\n throw new Error(`Expected ${ name } to be present`);\n }\n \n return thing;\n}\n \nexport function unique(arr : $ReadOnlyArray) : $ReadOnlyArray {\n const result = {};\n for (const item of arr) {\n // eslint-disable-next-line const-immutable/no-mutation\n result[item] = true;\n }\n return Object.keys(result);\n}\n","/* @flow */\n\nexport const KEY_CODES = {\n ENTER: 13\n};\n","/* @flow */\n/* eslint max-lines: off */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { linkFrameWindow, isWindowClosed,\n type SameDomainWindowType, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\n\nimport { inlineMemoize, noop, stringify, capitalizeFirstLetter,\n once, extend, safeInterval, uniqueID, arrayFrom } from './util';\nimport { isDevice } from './device';\nimport { KEY_CODES } from './constants';\nimport type { CancelableType } from './types';\n\ntype ElementRefType = string | HTMLElement;\n\nexport function isDocumentReady() : boolean {\n return Boolean(document.body) && document.readyState === 'complete';\n}\n\nexport function urlEncode(str : string) : string {\n return str.replace(/\\?/g, '%3F').replace(/&/g, '%26').replace(/#/g, '%23').replace(/\\+/g, '%2B');\n}\n\nexport function waitForWindowReady() : ZalgoPromise {\n return inlineMemoize(waitForWindowReady, () : ZalgoPromise => {\n return new ZalgoPromise(resolve => {\n if (isDocumentReady()) {\n resolve();\n }\n\n window.addEventListener('load', () => resolve());\n });\n });\n}\n\nexport function waitForDocumentReady() : ZalgoPromise {\n return inlineMemoize(waitForDocumentReady, () : ZalgoPromise => {\n return new ZalgoPromise(resolve => {\n\n if (isDocumentReady()) {\n return resolve();\n }\n\n let interval = setInterval(() => {\n if (isDocumentReady()) {\n clearInterval(interval);\n return resolve();\n }\n }, 10);\n });\n });\n}\n\nexport function waitForDocumentBody() : ZalgoPromise {\n return waitForDocumentReady().then(() => {\n if (document.body) {\n return document.body;\n }\n\n throw new Error('Document ready but document.body not present');\n });\n}\n\nexport function parseQuery(queryString : string) : Object {\n return inlineMemoize(parseQuery, () : Object => {\n let params = {};\n\n if (!queryString) {\n return params;\n }\n\n if (queryString.indexOf('=') === -1) {\n return params;\n }\n\n for (let pair of queryString.split('&')) {\n pair = pair.split('=');\n\n if (pair[0] && pair[1]) {\n params[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n }\n\n return params;\n }, [ queryString ]);\n}\n\n\nexport function getQueryParam(name : string) : string {\n return parseQuery(window.location.search.slice(1))[name];\n}\n\nexport function urlWillRedirectPage(url : string) : boolean {\n\n if (url.indexOf('#') === -1) {\n return true;\n }\n\n if (url.indexOf('#') === 0) {\n return false;\n }\n\n if (url.split('#')[0] === window.location.href.split('#')[0]) {\n return false;\n }\n\n return true;\n}\n\nexport function formatQuery(obj : { [ string ] : string } = {}) : string {\n\n return Object.keys(obj).filter(key => {\n return typeof obj[key] === 'string';\n }).map(key => {\n return `${ urlEncode(key) }=${ urlEncode(obj[key]) }`;\n }).join('&');\n}\n\nexport function extendQuery(originalQuery : string, props : { [ string ] : string } = {}) : string {\n\n if (!props || !Object.keys(props).length) {\n return originalQuery;\n }\n\n return formatQuery({\n ...parseQuery(originalQuery),\n ...props\n });\n}\n\nexport function extendUrl(url : string, options : { query? : { [string] : string }, hash? : { [string] : string } } = {}) : string {\n\n let query = options.query || {};\n let hash = options.hash || {};\n\n let originalUrl;\n let originalQuery;\n let originalHash;\n\n [ originalUrl, originalHash ] = url.split('#');\n [ originalUrl, originalQuery ] = originalUrl.split('?');\n\n let queryString = extendQuery(originalQuery, query);\n let hashString = extendQuery(originalHash, hash);\n\n if (queryString) {\n originalUrl = `${ originalUrl }?${ queryString }`;\n }\n\n if (hashString) {\n originalUrl = `${ originalUrl }#${ hashString }`;\n }\n\n return originalUrl;\n}\n\nexport function redirect(url : string, win : CrossDomainWindowType = window) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n win.location = url;\n if (!urlWillRedirectPage(url)) {\n resolve();\n }\n });\n}\n\nexport function hasMetaViewPort() : boolean {\n let meta = document.querySelector('meta[name=viewport]');\n\n if (isDevice() && window.screen.width < 660 && !meta) {\n return false;\n }\n\n return true;\n}\n\nexport function isElementVisible(el : HTMLElement) : boolean {\n return Boolean(el.offsetWidth || el.offsetHeight || el.getClientRects().length);\n}\n\nexport function enablePerformance() : boolean {\n return inlineMemoize(enablePerformance, () : boolean => {\n /* eslint-disable compat/compat */\n return Boolean(\n window.performance &&\n performance.now &&\n performance.timing &&\n performance.timing.connectEnd &&\n performance.timing.navigationStart &&\n (Math.abs(performance.now() - Date.now()) > 1000) &&\n (performance.now() - (performance.timing.connectEnd - performance.timing.navigationStart)) > 0\n );\n /* eslint-enable compat/compat */\n });\n}\n\nexport function getPageRenderTime() : ZalgoPromise {\n return waitForDocumentReady().then(() => {\n\n if (!enablePerformance()) {\n return;\n }\n\n let timing = window.performance.timing;\n\n if (timing.connectEnd && timing.domInteractive) {\n return timing.domInteractive - timing.connectEnd;\n }\n });\n}\n\nexport function htmlEncode(html : string = '') : string {\n return html.toString()\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(/\\//g, '/');\n}\n\nexport function isBrowser() : boolean {\n return (typeof window !== 'undefined');\n}\n\nexport function querySelectorAll(selector : string, doc : HTMLElement = window.document) : Array {\n return Array.prototype.slice.call(doc.querySelectorAll(selector));\n}\n\nexport function onClick(element : HTMLElement, handler : (Event) => void) {\n element.addEventListener('touchstart', noop);\n element.addEventListener('click', handler);\n element.addEventListener('keypress', (event : Event) => {\n // $FlowFixMe\n if (event.keyCode === KEY_CODES.ENTER) {\n return handler(event);\n }\n });\n}\n\nexport function getScript({ host = window.location.host, path } : { host? : string, path : string }) : ?HTMLScriptElement {\n return inlineMemoize(getScript, () : ?HTMLScriptElement => {\n\n let url = `${ host }${ path }`;\n let scripts = Array.prototype.slice.call(document.getElementsByTagName('script'));\n\n for (let script of scripts) {\n if (!script.src) {\n continue;\n }\n\n let src = script.src.replace(/^https?:\\/\\//, '').split('?')[0];\n\n if (src === url) {\n return script;\n }\n }\n }, [ path ]);\n}\n\nexport function isLocalStorageEnabled() : boolean {\n return inlineMemoize(isLocalStorageEnabled, () => {\n try {\n if (typeof window === 'undefined') {\n return false;\n }\n\n if (window.localStorage) {\n let value = Math.random().toString();\n window.localStorage.setItem('__test__localStorage__', value);\n let result = window.localStorage.getItem('__test__localStorage__');\n window.localStorage.removeItem('__test__localStorage__');\n if (value === result) {\n return true;\n }\n }\n } catch (err) {\n // pass\n }\n return false;\n });\n}\n\nexport function getBrowserLocales() : Array<{ country? : string, lang : string }> {\n let nav = window.navigator;\n\n let locales = nav.languages\n ? Array.prototype.slice.apply(nav.languages)\n : [];\n\n if (nav.language) {\n locales.push(nav.language);\n }\n\n if (nav.userLanguage) {\n locales.push(nav.userLanguage);\n }\n\n return locales.map(locale => {\n\n if (locale && locale.match(/^[a-z]{2}[-_][A-Z]{2}$/)) {\n let [ lang, country ] = locale.split(/[-_]/);\n return { country, lang };\n }\n\n if (locale && locale.match(/^[a-z]{2}$/)) {\n return { lang: locale };\n }\n\n return null;\n\n }).filter(Boolean);\n}\n\n\nexport function appendChild(container : HTMLElement, child : HTMLElement | Text) {\n container.appendChild(child);\n}\n\nexport function isElement(element : mixed) : boolean {\n\n if (element instanceof window.Element) {\n return true;\n }\n\n if (element !== null && typeof element === 'object' && element.nodeType === 1 && typeof element.style === 'object' && typeof element.ownerDocument === 'object') {\n return true;\n }\n\n return false;\n}\n\nexport function getElementSafe(id : ElementRefType, doc : Document | HTMLElement = document) : ?HTMLElement {\n\n if (isElement(id)) {\n // $FlowFixMe\n return id;\n }\n\n if (typeof id === 'string') {\n return doc.querySelector(id);\n }\n}\n\nexport function getElement(id : ElementRefType, doc : Document | HTMLElement = document) : HTMLElement {\n\n let element = getElementSafe(id, doc);\n\n if (element) {\n return element;\n }\n\n throw new Error(`Can not find element: ${ stringify(id) }`);\n}\n\nexport function elementReady(id : ElementRefType) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n let name = stringify(id);\n let el = getElementSafe(id);\n\n if (el) {\n return resolve(el);\n }\n\n if (isDocumentReady()) {\n return reject(new Error(`Document is ready and element ${ name } does not exist`));\n }\n\n let interval = setInterval(() => {\n\n el = getElementSafe(id);\n\n if (el) {\n clearInterval(interval);\n return resolve(el);\n }\n\n if (isDocumentReady()) {\n clearInterval(interval);\n return reject(new Error(`Document is ready and element ${ name } does not exist`));\n }\n }, 10);\n });\n}\n\nexport function PopupOpenError(message : string) {\n this.message = message;\n}\n\nPopupOpenError.prototype = Object.create(Error.prototype);\n\ntype PopupOptions = {|\n name? : string,\n width? : number,\n height? : number,\n top? : number,\n left? : number,\n status? : 0 | 1,\n resizable? : 0 | 1,\n toolbar? : 0 | 1,\n menubar? : 0 | 1,\n scrollbars? : 0 | 1\n|};\n\nexport function popup(url : string, options? : PopupOptions) : CrossDomainWindowType {\n\n // $FlowFixMe\n options = options || {};\n\n let { width, height } = options;\n\n let top = 0;\n let left = 0;\n\n if (width) {\n if (window.outerWidth) {\n left = Math.round((window.outerWidth - width) / 2) + window.screenX;\n } else if (window.screen.width) {\n left = Math.round((window.screen.width - width) / 2);\n }\n }\n\n if (height) {\n if (window.outerHeight) {\n top = Math.round((window.outerHeight - height) / 2) + window.screenY;\n } else if (window.screen.height) {\n top = Math.round((window.screen.height - height) / 2);\n }\n }\n\n if (width && height) {\n options = {\n top,\n left,\n width,\n height,\n status: 1,\n toolbar: 0,\n menubar: 0,\n resizable: 1,\n scrollbars: 1,\n ...options\n };\n }\n\n let name = options.name || '';\n delete options.name;\n\n // eslint-disable-next-line array-callback-return\n let params = Object.keys(options).map(key => {\n // $FlowFixMe\n if (options[key] !== null && options[key] !== undefined) {\n return `${ key }=${ stringify(options[key]) }`;\n }\n }).filter(Boolean).join(',');\n\n let win;\n\n try {\n win = window.open(url, name, params, true);\n } catch (err) {\n throw new PopupOpenError(`Can not open popup window - ${ err.stack || err.message }`);\n }\n\n if (isWindowClosed(win)) {\n let err = new PopupOpenError(`Can not open popup window - blocked`);\n throw err;\n }\n\n window.addEventListener('unload', () => win.close());\n\n return win;\n}\n\n\nexport function writeToWindow(win : SameDomainWindowType, html : string) {\n try {\n win.document.open();\n win.document.write(html);\n win.document.close();\n } catch (err) {\n try {\n win.location = `javascript: document.open(); document.write(${ JSON.stringify(html) }); document.close();`;\n } catch (err2) {\n // pass\n }\n }\n}\n\nexport function writeElementToWindow(win : SameDomainWindowType, el : HTMLElement) {\n\n let tag = el.tagName.toLowerCase();\n\n if (tag !== 'html') {\n throw new Error(`Expected element to be html, got ${ tag }`);\n }\n\n let documentElement = win.document.documentElement;\n\n for (const child of arrayFrom(documentElement.children)) {\n documentElement.removeChild(child);\n }\n\n for (const child of arrayFrom(el.children)) {\n documentElement.appendChild(child);\n }\n}\n\nexport function setStyle(el : HTMLElement, styleText : string, doc : Document = window.document) {\n // $FlowFixMe\n if (el.styleSheet) {\n // $FlowFixMe\n el.styleSheet.cssText = styleText;\n } else {\n el.appendChild(doc.createTextNode(styleText));\n }\n}\n\nexport type ElementOptionsType = {\n style? : { [ string ] : string },\n id? : string,\n class? : ?Array,\n attributes? : { [ string ] : string },\n styleSheet? : ?string,\n html? : ?string\n};\n\nlet awaitFrameLoadPromises : WeakMap>;\n\nexport function awaitFrameLoad(frame : HTMLIFrameElement) : ZalgoPromise {\n awaitFrameLoadPromises = awaitFrameLoadPromises || new WeakMap();\n\n if (awaitFrameLoadPromises.has(frame)) {\n let promise = awaitFrameLoadPromises.get(frame);\n if (promise) {\n return promise;\n }\n }\n\n let promise = new ZalgoPromise((resolve, reject) => {\n frame.addEventListener('load', () => {\n linkFrameWindow(frame);\n resolve(frame);\n });\n\n frame.addEventListener('error', (err : Event) => {\n if (frame.contentWindow) {\n resolve(frame);\n } else {\n reject(err);\n }\n });\n });\n\n awaitFrameLoadPromises.set(frame, promise);\n\n return promise;\n}\n\nexport function awaitFrameWindow(frame : HTMLIFrameElement) : ZalgoPromise {\n return awaitFrameLoad(frame).then(loadedFrame => {\n\n if (!loadedFrame.contentWindow) {\n throw new Error(`Could not find window in iframe`);\n }\n\n return loadedFrame.contentWindow;\n });\n}\n\nexport function createElement(tag : string = 'div', options : ElementOptionsType = {}, container : ?HTMLElement) : HTMLElement {\n\n tag = tag.toLowerCase();\n let element = document.createElement(tag);\n\n if (options.style) {\n extend(element.style, options.style);\n }\n\n if (options.class) {\n element.className = options.class.join(' ');\n }\n\n if (options.id) {\n element.setAttribute('id', options.id);\n }\n\n if (options.attributes) {\n for (let key of Object.keys(options.attributes)) {\n element.setAttribute(key, options.attributes[key]);\n }\n }\n\n if (options.styleSheet) {\n setStyle(element, options.styleSheet);\n }\n\n if (container) {\n appendChild(container, element);\n }\n\n if (options.html) {\n if (tag === 'iframe') {\n // $FlowFixMe\n if (!container || !element.contentWindow) {\n throw new Error(`Iframe html can not be written unless container provided and iframe in DOM`);\n }\n\n // $FlowFixMe\n writeToWindow(element.contentWindow, options.html);\n\n } else {\n element.innerHTML = options.html;\n }\n }\n\n return element;\n}\n\n\nexport type IframeElementOptionsType = {\n style? : { [ string ] : string },\n class? : ?Array,\n attributes? : { [ string ] : string },\n styleSheet? : ?string,\n html? : ?string,\n url? : ?string\n};\n\nexport function iframe(options : IframeElementOptionsType = {}, container : ?HTMLElement) : HTMLIFrameElement {\n\n let attributes = options.attributes || {};\n let style = options.style || {};\n\n let frame = createElement('iframe', {\n attributes: {\n allowTransparency: 'true',\n ...attributes\n },\n style: {\n backgroundColor: 'transparent',\n border: 'none',\n ...style\n },\n html: options.html,\n class: options.class\n });\n\n const isIE = window.navigator.userAgent.match(/MSIE|Edge/i);\n \n if (!frame.hasAttribute('id')) {\n frame.setAttribute('id', uniqueID());\n }\n\n // $FlowFixMe\n awaitFrameLoad(frame);\n\n if (container) {\n let el = getElement(container);\n el.appendChild(frame);\n }\n\n if (options.url || isIE) {\n frame.setAttribute('src', options.url || 'about:blank');\n }\n\n // $FlowFixMe\n return frame;\n}\n\nexport function addEventListener(obj : HTMLElement, event : string, handler : (event : Event) => void) : CancelableType {\n obj.addEventListener(event, handler);\n return {\n cancel() {\n obj.removeEventListener(event, handler);\n }\n };\n}\n\nexport function bindEvents(element : HTMLElement, eventNames : Array, handler : (event : Event) => void) : CancelableType {\n\n handler = once(handler);\n\n for (let eventName of eventNames) {\n element.addEventListener(eventName, handler);\n }\n\n return {\n cancel: once(() => {\n for (let eventName of eventNames) {\n element.removeEventListener(eventName, handler);\n }\n })\n };\n}\n\nconst VENDOR_PREFIXES = [ 'webkit', 'moz', 'ms', 'o' ];\n\nexport function setVendorCSS(element : HTMLElement, name : string, value : string) {\n\n // $FlowFixMe\n element.style[name] = value;\n\n let capitalizedName = capitalizeFirstLetter(name);\n\n for (let prefix of VENDOR_PREFIXES) {\n // $FlowFixMe\n element.style[`${ prefix }${ capitalizedName }`] = value;\n }\n}\n\nconst ANIMATION_START_EVENTS = [ 'animationstart', 'webkitAnimationStart', 'oAnimationStart', 'MSAnimationStart' ];\nconst ANIMATION_END_EVENTS = [ 'animationend', 'webkitAnimationEnd', 'oAnimationEnd', 'MSAnimationEnd' ];\n\nexport function animate(element : ElementRefType, name : string, clean : (Function) => void, timeout : number = 1000) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n let el = getElement(element);\n\n if (!el) {\n return resolve();\n }\n\n let hasStarted = false;\n\n let startTimeout;\n let endTimeout;\n let startEvent;\n let endEvent;\n\n function cleanUp() {\n clearTimeout(startTimeout);\n clearTimeout(endTimeout);\n startEvent.cancel();\n endEvent.cancel();\n }\n\n startEvent = bindEvents(el, ANIMATION_START_EVENTS, event => {\n\n // $FlowFixMe\n if (event.target !== el || event.animationName !== name) {\n return;\n }\n\n clearTimeout(startTimeout);\n\n event.stopPropagation();\n\n startEvent.cancel();\n hasStarted = true;\n\n endTimeout = setTimeout(() => {\n cleanUp();\n resolve();\n }, timeout);\n });\n\n endEvent = bindEvents(el, ANIMATION_END_EVENTS, event => {\n\n // $FlowFixMe\n if (event.target !== el || event.animationName !== name) {\n return;\n }\n\n cleanUp();\n\n // $FlowFixMe\n if (typeof event.animationName === 'string' && event.animationName !== name) {\n return reject(`Expected animation name to be ${ name }, found ${ event.animationName }`);\n }\n\n return resolve();\n });\n\n setVendorCSS(el, 'animationName', name);\n\n startTimeout = setTimeout(() => {\n if (!hasStarted) {\n cleanUp();\n return resolve();\n }\n }, 200);\n\n if (clean) {\n clean(cleanUp);\n }\n });\n}\n\nconst STYLE = {\n\n DISPLAY: {\n NONE: 'none',\n BLOCK: 'block'\n },\n\n VISIBILITY: {\n VISIBLE: 'visible',\n HIDDEN: 'hidden'\n },\n\n IMPORTANT: 'important'\n};\n\nexport function makeElementVisible(element : HTMLElement) {\n element.style.setProperty('visibility', '');\n}\n\nexport function makeElementInvisible(element : HTMLElement) {\n element.style.setProperty('visibility', STYLE.VISIBILITY.HIDDEN, STYLE.IMPORTANT);\n}\n\n\nexport function showElement(element : HTMLElement) {\n element.style.setProperty('display', '');\n}\n\nexport function hideElement(element : HTMLElement) {\n element.style.setProperty('display', STYLE.DISPLAY.NONE, STYLE.IMPORTANT);\n}\n\nexport function destroyElement(element : HTMLElement) {\n if (element && element.parentNode) {\n element.parentNode.removeChild(element);\n }\n}\n\nexport function showAndAnimate(element : HTMLElement, name : string, clean : (Function) => void) : ZalgoPromise {\n let animation = animate(element, name, clean);\n showElement(element);\n return animation;\n}\n\nexport function animateAndHide(element : HTMLElement, name : string, clean : (Function) => void) : ZalgoPromise {\n return animate(element, name, clean).then(() => {\n hideElement(element);\n });\n}\n\nexport function addClass(element : HTMLElement, name : string) {\n element.classList.add(name);\n}\n\nexport function removeClass(element : HTMLElement, name : string) {\n element.classList.remove(name);\n}\n\nexport function isElementClosed(el : HTMLElement) : boolean {\n if (!el || !el.parentNode) {\n return true;\n }\n return false;\n}\n\nexport function watchElementForClose(element : HTMLElement, handler : () => mixed) : CancelableType {\n handler = once(handler);\n\n let interval;\n\n if (isElementClosed(element)) {\n handler();\n } else {\n interval = safeInterval(() => {\n if (isElementClosed(element)) {\n interval.cancel();\n handler();\n }\n }, 50);\n }\n\n return {\n cancel() {\n if (interval) {\n interval.cancel();\n }\n }\n };\n}\n\nexport function fixScripts(el : HTMLElement, doc : Document = window.document) {\n for (let script of querySelectorAll('script', el)) {\n let parentNode = script.parentNode;\n\n if (!parentNode) {\n continue;\n }\n\n let newScript = doc.createElement('script');\n newScript.text = script.textContent;\n parentNode.replaceChild(newScript, script);\n }\n}\n\ntype OnResizeOptions = {|\n width? : boolean,\n height? : boolean,\n interval? : number,\n win? : SameDomainWindowType\n|};\n\nexport function onResize(el : HTMLElement, handler : ({ width : number, height : number }) => void, { width = true, height = true, interval = 100, win = window } : OnResizeOptions = {}) : {} {\n let currentWidth = el.offsetWidth;\n let currentHeight = el.offsetHeight;\n\n handler({ width: currentWidth, height: currentHeight });\n\n let check = () => {\n let newWidth = el.offsetWidth;\n let newHeight = el.offsetHeight;\n\n if ((width && newWidth !== currentWidth) || (height && newHeight !== currentHeight)) {\n handler({ width: newWidth, height: newHeight });\n }\n\n currentWidth = newWidth;\n currentHeight = newHeight;\n };\n\n let observer;\n let timeout;\n\n if (typeof win.ResizeObserver !== 'undefined') {\n observer = new win.ResizeObserver(check);\n observer.observe(el);\n\n } else if (typeof win.MutationObserver !== 'undefined') {\n observer = new win.MutationObserver(check);\n observer.observe(el, {\n attributes: true,\n childList: true,\n subtree: true,\n characterData: false\n });\n win.addEventListener('resize', check);\n } else {\n let loop = () => {\n check();\n timeout = setTimeout(loop, interval);\n };\n loop();\n }\n\n return {\n cancel: () => {\n observer.disconnect();\n window.removeEventListener('resize', check);\n clearTimeout(timeout);\n }\n };\n}\n\nexport function getResourceLoadTime(url : string) : ?number {\n\n if (!enablePerformance()) {\n return;\n }\n\n if (!window.performance || typeof window.performance.getEntries !== 'function') {\n return;\n }\n\n const entries = window.performance.getEntries();\n\n for (let i = 0; i < entries.length; i++) {\n const entry = entries[i];\n\n if (entry && entry.name && entry.name.indexOf(url) === 0 && typeof entry.duration === 'number') {\n return Math.floor(entry.duration);\n }\n }\n}\n","/* @flow */\n\nimport { uniqueID, getGlobal, inlineMemoize } from './util';\nimport { isLocalStorageEnabled } from './dom';\n\ntype Getter = (handler : (Object) => T) => T;\n\nexport type Storage = {\n getState : Getter<*>,\n getID : () => string,\n getSessionState : Getter<*>,\n getSessionID : () => string\n};\n\nconst DEFAULT_SESSION_STORAGE = 20 * 60 * 1000;\n\nexport function getStorage({ name, lifetime = DEFAULT_SESSION_STORAGE } : { name : string, lifetime? : number }) : Storage {\n return inlineMemoize(getStorage, () => {\n const STORAGE_KEY = `__${ name }_storage__`;\n\n let accessedStorage;\n\n function getState(handler : (storage : Object) => T) : T {\n\n let localStorageEnabled = isLocalStorageEnabled();\n let storage;\n\n if (accessedStorage) {\n storage = accessedStorage;\n }\n\n if (!storage && localStorageEnabled) {\n let rawStorage = window.localStorage.getItem(STORAGE_KEY);\n\n if (rawStorage) {\n storage = JSON.parse(rawStorage);\n }\n }\n\n if (!storage) {\n storage = getGlobal()[STORAGE_KEY];\n }\n\n if (!storage) {\n storage = {\n id: uniqueID()\n };\n }\n\n if (!storage.id) {\n storage.id = uniqueID();\n }\n\n accessedStorage = storage;\n\n let result = handler(storage);\n\n if (localStorageEnabled) {\n window.localStorage.setItem(STORAGE_KEY, JSON.stringify(storage));\n } else {\n getGlobal()[STORAGE_KEY] = storage;\n }\n\n accessedStorage = null;\n\n return result;\n }\n\n function getID() : string {\n return getState(storage => storage.id);\n }\n\n function getSession(handler : (state : Object) => T) : T {\n return getState(storage => {\n\n let session = storage.__session__;\n let now = Date.now();\n\n if (session && ((now - session.created) > lifetime)) {\n session = null;\n }\n\n if (!session) {\n session = {\n guid: uniqueID(),\n created: now\n };\n }\n\n storage.__session__ = session;\n\n return handler(session);\n });\n }\n\n function getSessionState(handler : (state : Object) => T) : T {\n return getSession(session => {\n session.state = session.state || {};\n return handler(session.state);\n });\n }\n\n function getSessionID() : string {\n return getSession(session => session.guid);\n }\n\n return {\n getState,\n getID,\n getSessionState,\n getSessionID\n };\n }, [ { name, lifetime } ]);\n}\n","/* @flow */\n\nimport { noop } from './util';\nimport { getStorage } from './storage';\n\nfunction getBelterExperimentStorage() : Object {\n return getStorage({ name: 'belter_experiment' });\n}\n\nfunction isEventUnique(name : string) : boolean {\n return getBelterExperimentStorage().getSessionState(state => {\n state.loggedBeacons = state.loggedBeacons || [];\n\n if (state.loggedBeacons.indexOf(name) === -1) {\n state.loggedBeacons.push(name);\n return true;\n }\n\n return false;\n });\n}\n\nexport type Experiment = {\n isEnabled : () => boolean,\n isDisabled : () => boolean,\n getTreatment : () => string,\n log : (string, payload? : { [string] : ?string }) => Experiment,\n logStart : (payload? : { [string] : ?string }) => Experiment,\n logComplete : (payload? : { [string] : ?string }) => Experiment\n};\n\nfunction getThrottlePercentile(name : string) : number {\n return getBelterExperimentStorage().getState(state => {\n state.throttlePercentiles = state.throttlePercentiles || {};\n state.throttlePercentiles[name] = state.throttlePercentiles[name] || Math.floor(Math.random() * 100);\n return state.throttlePercentiles[name];\n });\n}\n\nconst THROTTLE_GROUP = {\n TEST: 'test',\n CONTROL: 'control',\n THROTTLE: 'throttle'\n};\n\ntype ExperimentOptions = {\n name : string,\n sample? : number,\n logTreatment? : ({ name : string, treatment : string, payload : { [string] : ?string } }) => void,\n logCheckpoint? : ({ name : string, treatment : string, checkpoint : string, payload : { [string] : ?string } }) => void\n};\n\nexport function experiment({ name, sample = 50, logTreatment = noop, logCheckpoint = noop } : ExperimentOptions) : Experiment {\n\n let throttle = getThrottlePercentile(name);\n\n let group;\n\n if (throttle < sample) {\n group = THROTTLE_GROUP.TEST;\n } else if ((sample >= 50) || ((sample <= throttle) && (throttle < (sample * 2)))) {\n group = THROTTLE_GROUP.CONTROL;\n } else {\n group = THROTTLE_GROUP.THROTTLE;\n }\n\n let treatment = `${ name }_${ group }`;\n\n let started = false;\n let forced = false;\n\n try {\n if (window.localStorage && window.localStorage.getItem(name)) {\n forced = true;\n }\n } catch (err) {\n // pass\n }\n\n return {\n\n isEnabled() : boolean {\n return (group === THROTTLE_GROUP.TEST) || forced;\n },\n\n isDisabled() : boolean {\n return (group !== THROTTLE_GROUP.TEST) && !forced;\n },\n\n getTreatment() : string {\n return treatment;\n },\n\n log(checkpoint : string, payload? : { [string] : ?string } = {}) : Experiment {\n if (!started) {\n return this;\n }\n\n if (isEventUnique(`${ name }_${ treatment }_${ JSON.stringify(payload) }`)) {\n logTreatment({ name, treatment, payload });\n }\n\n if (isEventUnique(`${ name }_${ treatment }_${ checkpoint }_${ JSON.stringify(payload) }`)) {\n logCheckpoint({ name, treatment, checkpoint, payload });\n }\n\n return this;\n },\n\n logStart(payload? : { [string] : ?string } = {}) : Experiment {\n started = true;\n return this.log(`start`, payload);\n },\n\n logComplete(payload? : { [string] : ?string } = {}) : Experiment {\n return this.log(`complete`, payload);\n }\n };\n}\n","/* @flow */\n\nimport { getGlobal } from './util';\n\nexport function getGlobalNameSpace({ name, version = 'latest' } : { name : string, version? : string }) : { get : (string, defValue? : T) => T } {\n\n let global = getGlobal();\n let globalKey = `__${ name }__${ version }_global__`;\n\n let namespace = global[globalKey] = global[globalKey] || {};\n\n return {\n get: (key : string, defValue? : T) : T => {\n // $FlowFixMe\n defValue = defValue || {};\n let item = namespace[key] = namespace[key] || defValue;\n return item;\n }\n };\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { type SameDomainWindowType } from 'cross-domain-utils/src';\n\ntype RequestOptionsType = {\n url : string,\n method? : string,\n headers? : { [key : string] : string },\n json? : $ReadOnlyArray | Object,\n data? : { [key : string] : string },\n body? : string,\n win? : SameDomainWindowType,\n timeout? : number\n};\n\ntype ResponseType = {\n status : number,\n headers : { [string] : string },\n body : Object\n};\n\nconst HEADERS = {\n CONTENT_TYPE: 'content-type',\n ACCEPT: 'accept'\n};\n\nlet headerBuilders = [];\n\nfunction parseHeaders(rawHeaders : string = '') : { [string] : string } {\n let result = {};\n for (let line of rawHeaders.trim().split('\\n')) {\n let [ key, ...values ] = line.split(':');\n result[key.toLowerCase()] = values.join(':').trim();\n }\n return result;\n}\n\nexport function request({ url, method = 'get', headers = {}, json, data, body, win = window, timeout = 0 } : RequestOptionsType) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n if ((json && data) || (json && body) || (data && json)) {\n throw new Error(`Only options.json or options.data or options.body should be passed`);\n }\n\n let normalizedHeaders = {};\n\n for (let key of Object.keys(headers)) {\n normalizedHeaders[key.toLowerCase()] = headers[key];\n }\n\n if (json) {\n normalizedHeaders[HEADERS.CONTENT_TYPE] = normalizedHeaders[HEADERS.CONTENT_TYPE] || 'application/json';\n } else if (data || body) {\n normalizedHeaders[HEADERS.CONTENT_TYPE] = normalizedHeaders[HEADERS.CONTENT_TYPE] || 'application/x-www-form-urlencoded; charset=utf-8';\n }\n\n normalizedHeaders[HEADERS.ACCEPT] = normalizedHeaders[HEADERS.ACCEPT] || 'application/json';\n\n for (let headerBuilder of headerBuilders) {\n let builtHeaders = headerBuilder();\n\n for (let key of Object.keys(builtHeaders)) {\n normalizedHeaders[key.toLowerCase()] = builtHeaders[key];\n }\n }\n\n let xhr = new win.XMLHttpRequest();\n\n xhr.addEventListener('load', function xhrLoad() : void {\n\n let responseHeaders = parseHeaders(this.getAllResponseHeaders());\n\n if (!this.status) {\n return reject(new Error(`Request to ${ method.toLowerCase() } ${ url } failed: no response status code.`));\n }\n \n let contentType = responseHeaders['content-type'];\n let isJSON = contentType && (contentType.indexOf('application/json') === 0 || contentType.indexOf('text/json') === 0);\n let responseBody = this.responseText;\n\n try {\n responseBody = JSON.parse(responseBody);\n } catch (err) {\n if (isJSON) {\n return reject(new Error(`Invalid json: ${ this.responseText }.`));\n }\n }\n\n let res = {\n status: this.status,\n headers: responseHeaders,\n body: responseBody\n };\n\n return resolve(res);\n\n }, false);\n\n xhr.addEventListener('error', (evt) => {\n reject(new Error(`Request to ${ method.toLowerCase() } ${ url } failed: ${ evt.toString() }.`));\n }, false);\n\n xhr.open(method, url, true);\n\n for (let key in normalizedHeaders) {\n if (normalizedHeaders.hasOwnProperty(key)) {\n xhr.setRequestHeader(key, normalizedHeaders[key]);\n }\n }\n\n if (json) {\n body = JSON.stringify(json);\n } else if (data) {\n body = Object.keys(data).map(key => {\n return `${ encodeURIComponent(key) }=${ data ? encodeURIComponent(data[key]) : '' }`;\n }).join('&');\n }\n\n xhr.timeout = timeout;\n xhr.ontimeout = function xhrTimeout() {\n reject(new Error(`Request to ${ method.toLowerCase() } ${ url } has timed out`));\n };\n\n xhr.send(body);\n });\n}\n\nexport function addHeaderBuilder(method : () => { [string] : string }) {\n headerBuilders.push(method);\n}\n","/* @flow */\n\n// export something to force webpack to see this as an ES module\nexport const TYPES = true;\n\ndeclare var __TEST__ : boolean;\n\nexport type JSONPrimitive = string | boolean | number;\nexport type JSONObject = { [string] : JSONPrimitive | JSONObject } | Array;\nexport type JSONType = JSONObject | JSONPrimitive;\n\nexport type CancelableType = {\n cancel : () => void\n};\n","/* @flow */\n\nimport { memoize, promisify } from './util';\n\nexport function memoized(target : Object, name : string, descriptor : Object) {\n descriptor.value = memoize(descriptor.value, { name, thisNamespace: true });\n}\n\nexport function promise(target : Object, name : string, descriptor : Object) {\n descriptor.value = promisify(descriptor.value, { name });\n}\n","/* @flow */\n\nexport function isPerc(str : string) : boolean {\n return typeof str === 'string' && (/^[0-9]+%$/).test(str);\n}\n\nexport function isPx(str : string) : boolean {\n return typeof str === 'string' && (/^[0-9]+px$/).test(str);\n}\n\nexport function toNum(val : string | number) : number {\n\n if (typeof val === 'number') {\n return val;\n }\n\n let match = val.match(/^([0-9]+)(px|%)$/);\n\n if (!match) {\n throw new Error(`Could not match css value from ${ val }`);\n }\n\n return parseInt(match[1], 10);\n}\n\nexport function toPx(val : number | string) : string {\n return `${ toNum(val) }px`;\n}\n\nexport function toCSS(val : number | string) : string {\n\n if (typeof val === 'number') {\n return toPx(val);\n }\n\n return isPerc(val) ? val : toPx(val);\n}\n\nexport function percOf(num : number, perc : string) : number {\n return parseInt(num * toNum(perc) / 100, 10);\n}\n\nexport function normalizeDimension(dim : string | number, max : number) : number {\n if (typeof dim === 'number') {\n return dim;\n } else if (isPerc(dim)) {\n return percOf(max, dim);\n } else if (isPx(dim)) {\n return toNum(dim);\n } else {\n throw new Error(`Can not normalize dimension: ${ dim }`);\n }\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { noop, tryCatch, removeFromArray } from './util';\n\ntype Prom = Promise | ZalgoPromise; // eslint-disable-line no-restricted-globals, promise/no-native\n\ntype Handler = >(name : string, fn? : (...args : A) => T) => (...args : A) => T; // eslint-disable-line no-undef\ntype Wrapper = ({ expect : Handler, avoid : Handler, expectError : Handler, error : Handler }) => (Prom | void);\n\nexport function wrapPromise(method : Wrapper, { timeout = 5000 } : { timeout? : number } = {}) : ZalgoPromise {\n let expected : Array = [];\n let promises : Array> = [];\n\n let timer = setTimeout(() => {\n if (expected.length) {\n promises.push(ZalgoPromise.asyncReject(new Error(`Expected ${ expected[0] } to be called`)));\n }\n }, timeout);\n\n let expect : Handler = (name, fn = noop) => {\n expected.push(name);\n \n // $FlowFixMe\n return function expectWrapper(...args) : * {\n removeFromArray(expected, name);\n\n // $FlowFixMe\n let { result, error } = tryCatch(() => fn.call(this, ...args));\n\n if (error) {\n promises.push(ZalgoPromise.asyncReject(error));\n throw error;\n }\n\n promises.push(ZalgoPromise.resolve(result));\n return result;\n };\n };\n\n let avoid : Handler = (name : string, fn = noop) => {\n\n // $FlowFixMe\n return function avoidWrapper(...args) : * {\n promises.push(ZalgoPromise.asyncReject(new Error(`Expected ${ name } to not be called`)));\n // $FlowFixMe\n return fn.call(this, ...args);\n };\n };\n\n let expectError : Handler = (name, fn = noop) => {\n expected.push(name);\n\n // $FlowFixMe\n return function expectErrorWrapper(...args) : * {\n removeFromArray(expected, name);\n\n // $FlowFixMe\n let { result, error } = tryCatch(() => fn.call(this, ...args));\n\n if (error) {\n throw error;\n }\n\n promises.push(ZalgoPromise.resolve(result).then(() => {\n throw new Error(`Expected ${ name } to throw an error`);\n }, noop));\n return result;\n };\n };\n\n promises.push(ZalgoPromise.try(() => method({ expect, avoid, expectError, error: avoid })));\n\n let drain = () => {\n return ZalgoPromise.try(() => {\n if (promises.length) {\n return promises.pop();\n }\n }).then(() => {\n if (promises.length) {\n return drain();\n }\n if (expected.length) {\n return ZalgoPromise.delay(10).then(drain);\n }\n });\n };\n\n return drain().then(() => {\n clearTimeout(timer);\n });\n}\n","/* @flow */\n\nexport * from './device';\nexport * from './dom';\nexport * from './experiment';\nexport * from './global';\nexport * from './storage';\nexport * from './util';\nexport * from './http';\nexport * from './types';\nexport * from './decorators';\nexport * from './css';\nexport * from './test';\n","/* @flow */\n\nexport function hasNativeWeakMap() : boolean {\n\n if (typeof WeakMap === 'undefined') {\n return false;\n }\n\n if (typeof Object.freeze === 'undefined') {\n return false;\n }\n\n try {\n\n let testWeakMap = new WeakMap();\n let testKey = {};\n let testValue = '__testvalue__';\n\n Object.freeze(testKey);\n\n testWeakMap.set(testKey, testValue);\n\n if (testWeakMap.get(testKey) === testValue) {\n return true;\n }\n\n return false;\n\n } catch (err) {\n\n return false;\n }\n}\n","/* @flow */\n\nexport function safeIndexOf(collection : Array, item : T) : number {\n for (let i = 0; i < collection.length; i++) {\n\n try {\n if (collection[i] === item) {\n return i;\n }\n } catch (err) {\n // pass\n }\n }\n\n return -1;\n}\n\n// eslint-disable-next-line no-unused-vars\nexport function noop(...args : Array) {\n // pass\n}\n","/* @flow */\n\nimport { isWindow, isWindowClosed } from 'cross-domain-utils/src';\n\nimport { hasNativeWeakMap } from './native';\nimport { noop, safeIndexOf } from './util';\n\nexport class CrossDomainSafeWeakMap {\n\n name : string\n weakmap : ?WeakMap\n keys : Array\n values : Array\n\n constructor() {\n // eslint-disable-next-line no-bitwise\n this.name = `__weakmap_${ Math.random() * 1e9 >>> 0 }__`;\n\n if (hasNativeWeakMap()) {\n try {\n this.weakmap = new WeakMap();\n } catch (err) {\n // pass\n }\n }\n\n this.keys = [];\n this.values = [];\n }\n\n _cleanupClosedWindows() {\n\n let weakmap = this.weakmap;\n let keys = this.keys;\n\n for (let i = 0; i < keys.length; i++) {\n let value = keys[i];\n\n if (isWindow(value) && isWindowClosed(value)) {\n\n if (weakmap) {\n try {\n weakmap.delete(value);\n } catch (err) {\n // pass\n }\n }\n\n keys.splice(i, 1);\n this.values.splice(i, 1);\n\n i -= 1;\n }\n }\n }\n\n isSafeToReadWrite(key : K) : boolean {\n\n if (isWindow(key)) {\n return false;\n }\n\n try {\n noop(key && key.self);\n noop(key && key[this.name]);\n } catch (err) {\n return false;\n }\n\n return true;\n }\n\n set(key : K, value : V) {\n\n if (!key) {\n throw new Error(`WeakMap expected key`);\n }\n\n let weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n weakmap.set(key, value);\n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (this.isSafeToReadWrite(key)) {\n try {\n let name = this.name;\n let entry = key[name];\n\n if (entry && entry[0] === key) {\n entry[1] = value;\n } else {\n Object.defineProperty(key, name, {\n value: [ key, value ],\n writable: true\n });\n }\n\n return;\n\n } catch (err) {\n // pass\n }\n }\n\n this._cleanupClosedWindows();\n\n let keys = this.keys;\n let values = this.values;\n let index = safeIndexOf(keys, key);\n\n if (index === -1) {\n keys.push(key);\n values.push(value);\n } else {\n values[index] = value;\n }\n }\n\n get(key : K) : V | void {\n\n if (!key) {\n throw new Error(`WeakMap expected key`);\n }\n\n let weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n if (weakmap.has(key)) {\n return weakmap.get(key);\n }\n \n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (this.isSafeToReadWrite(key)) {\n try {\n let entry = key[this.name];\n\n if (entry && entry[0] === key) {\n return entry[1];\n }\n\n return;\n } catch (err) {\n // pass\n }\n }\n\n this._cleanupClosedWindows();\n\n let keys = this.keys;\n let index = safeIndexOf(keys, key);\n\n if (index === -1) {\n return;\n }\n\n return this.values[index];\n }\n\n delete(key : K) {\n\n if (!key) {\n throw new Error(`WeakMap expected key`);\n }\n\n let weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n weakmap.delete(key);\n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (this.isSafeToReadWrite(key)) {\n try {\n let entry = key[this.name];\n\n if (entry && entry[0] === key) {\n entry[0] = entry[1] = undefined;\n }\n } catch (err) {\n // pass\n }\n }\n\n this._cleanupClosedWindows();\n\n let keys = this.keys;\n let index = safeIndexOf(keys, key);\n\n if (index !== -1) {\n keys.splice(index, 1);\n this.values.splice(index, 1);\n }\n }\n\n has(key : K) : boolean {\n\n if (!key) {\n throw new Error(`WeakMap expected key`);\n }\n\n let weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n if (weakmap.has(key)) {\n return true;\n }\n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (this.isSafeToReadWrite(key)) {\n try {\n let entry = key[this.name];\n\n if (entry && entry[0] === key) {\n return true;\n }\n\n return false;\n } catch (err) {\n // pass\n }\n }\n\n this._cleanupClosedWindows();\n\n let index = safeIndexOf(this.keys, key);\n return index !== -1;\n }\n\n getOrSet(key : K, getter : () => V) : V {\n if (this.has(key)) {\n // $FlowFixMe\n return this.get(key);\n }\n\n let value = getter();\n this.set(key, value);\n return value;\n }\n}\n","/* @flow */\n\nexport { CrossDomainSafeWeakMap as WeakMap } from './weakmap';\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst P24_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#d03238',\n secondary: '#b3b1b1'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#d03238',\n secondary: '#b3b1b1'\n }\n};\n\nexport function p24Logo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!P24_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } p24 logo available`);\n }\n\n const { primary, secondary } = P24_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst SOFORT_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#2C2E2F',\n secondary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#EB6F93',\n secondary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#EB6F93',\n secondary: '#FFFFFF'\n }\n};\n\nexport function sofortLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!SOFORT_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } sofort logo available`);\n }\n\n const { primary, secondary } = SOFORT_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst IDEAL_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff',\n tertiary: '#2C2E2F'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#000000',\n secondary: '#FFFFFF',\n tertiary: '#CD0067'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#000000',\n secondary: '#FFFFFF',\n tertiary: '#CD0067'\n }\n};\n\nexport function idealLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!IDEAL_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } ideal logo available`);\n }\n\n const { primary, secondary, tertiary } = IDEAL_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst GIROPAY_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#000000',\n tertiary: '#2C2E2F'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#FFFFFF',\n secondary: '#003A7D',\n tertiary: '#ED1C24'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#FFFFFF',\n secondary: '#003A7D',\n tertiary: '#ED1C24'\n }\n};\n\nexport function giropayLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!GIROPAY_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } giropay logo available`);\n }\n\n const { primary, secondary, tertiary } = GIROPAY_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst EPS_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff',\n tertiary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#71706F',\n secondary: '#FFFFFF',\n tertiary: '#C8036F'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#71706F',\n secondary: '#FFFFFF',\n tertiary: '#C8036F'\n }\n};\n\nexport function epsLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!EPS_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } eps logo available`);\n }\n\n const { primary, secondary, tertiary } = EPS_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst MYBANK_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff',\n tertiary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#1A4B67',\n secondary: '#00C0EE',\n tertiary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#1A4B67',\n secondary: '#00C0EE',\n tertiary: '#FFFFFF'\n }\n};\n\nexport function mybankLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!MYBANK_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } mybank logo available`);\n }\n\n const { primary, secondary, tertiary } = MYBANK_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst BANCONTACT_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#1A4B67',\n secondary: '#00C0EE'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#005498',\n secondary: '#FFD800'\n }\n};\n\nexport function bancontactLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!BANCONTACT_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } bancontact logo available`);\n }\n\n const { primary, secondary } = BANCONTACT_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst PAYU_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.DEFAULT ]: {\n primary: '#A6d71c',\n secondary: '#3C932A',\n tertiary: '#6CC62E',\n quaternary: '#278D30'\n },\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#FFFFFF',\n secondary: '#FFFFFF',\n tertiary: '#000000',\n quaternary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#A6d71c',\n secondary: '#3C932A',\n tertiary: '#6CC62E',\n quaternary: '#278D30'\n }\n};\n\nexport function payuLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!PAYU_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } payu logo available`);\n }\n\n const { primary, secondary, tertiary, quaternary } = PAYU_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst VERKKOPANKKI_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#FFFFFF',\n secondary: '#FFFFFF',\n tertiary: '#000000',\n quaternary: '#000000',\n quinary: '#FFFFFF',\n senary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#FFFFFF',\n secondary: '#CACCC8',\n tertiary: '#2D59A1',\n quaternary: '#1F3364',\n quinary: '#4E4E4E',\n senary: '#1B4482'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#FFFFFF',\n secondary: '#CACCC8',\n tertiary: '#2D59A1',\n quaternary: '#1F3364',\n quinary: '#4E4E4E',\n senary: '#1B4482'\n }\n};\n\nexport function verkkopankkiLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!VERKKOPANKKI_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } verkkopankki logo available`);\n }\n\n const { primary, secondary, tertiary, quaternary, quinary, senary } = VERKKOPANKKI_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst BLIK_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#FFFFFF',\n secondary: '#FFFFFF',\n tertiary: '#000000',\n quaternary: '#000000',\n quinary: '#000000',\n senary: '#000000'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#4D4D4F',\n secondary: '#000000',\n tertiary: '#FF0000',\n quaternary: '#E83E49',\n quinary: '#FF00FF',\n senary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#4D4D4F',\n secondary: '#000000',\n tertiary: '#FF0000',\n quaternary: '#E83E49',\n quinary: '#FF00FF',\n senary: '#FFFFFF'\n }\n};\n\nexport function blikLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!BLIK_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } blik logo available`);\n }\n\n const { primary, secondary, tertiary, quaternary, quinary, senary } = BLIK_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst TRUSTLY_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#FFFFFF',\n secondary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#020202',\n secondary: '#64CC07'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#020202',\n secondary: '#64CC07'\n }\n};\n\nexport function trustlyLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!TRUSTLY_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } trustly logo available`);\n }\n\n const { primary, secondary } = TRUSTLY_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst MAXIMA_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#004A91',\n secondary: '#ED1921'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#004A91',\n secondary: '#ED1921'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#004A91',\n secondary: '#ED1921'\n }\n};\n\nexport function maximaLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!MAXIMA_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } maxima logo available`);\n }\n\n const { primary, secondary } = MAXIMA_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst BOLETO_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#1A1919',\n secondary: '#FFFFFE'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#1A1919',\n secondary: '#FFFFFE'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#1A1919',\n secondary: '#FFFFFE'\n }\n};\n\nexport function boletoLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!BOLETO_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } boleto logo available`);\n }\n\n const { primary, secondary } = BOLETO_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst OXXO_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#EC1D24',\n secondary: '#EDA42D'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#EC1D24',\n secondary: '#EDA42D'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#EC1D24',\n secondary: '#EDA42D'\n }\n};\n\nexport function oxxoLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!OXXO_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } oxxo logo available`);\n }\n\n const { primary, secondary } = OXXO_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst PAYPAL_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.BLUE ]: {\n primary: '#003087',\n secondary: '#009cde'\n },\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#333030',\n secondary: '#636363'\n }\n};\n\nexport function paypalLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!PAYPAL_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } paypal logo available`);\n }\n\n const { primary, secondary } = PAYPAL_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n );\n}\n","\n/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR, COUNTRY } from '../../constants';\nimport type { LocaleType } from '../../types';\n\nconst CREDIT_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.BLUE ]: {\n primary: '#003087',\n secondary: '#009cde'\n },\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#333030',\n secondary: '#636363'\n }\n};\n\nexport function creditLogo({ logoColor, locale } : { logoColor : $Values, locale? : LocaleType }) : JsxHTMLNode {\n\n if (!CREDIT_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } credit logo available`);\n }\n\n const { country } = locale || {};\n const { primary } = CREDIT_LOGO_COLORS[logoColor];\n\n switch (country) {\n case COUNTRY.DE:\n return (\n \n \n \n \n \n \n \n );\n default:\n return (\n \n \n \n \n \n \n \n \n );\n\n }\n}\n","/* @flow */\n\nimport { BUTTON_LOGO, BUTTON_LOGO_COLOR } from '../../constants';\n\nimport { p24Logo } from './p24';\nimport { sofortLogo } from './sofort';\nimport { idealLogo } from './ideal';\nimport { giropayLogo } from './giropay';\nimport { epsLogo } from './eps';\nimport { mybankLogo } from './mybank';\nimport { bancontactLogo } from './bancontact';\nimport { payuLogo } from './payu';\nimport { verkkopankkiLogo } from './verkkopankki';\nimport { blikLogo } from './blik';\nimport { trustlyLogo } from './trustly';\nimport { maximaLogo } from './maxima';\nimport { boletoLogo } from './boleto';\nimport { oxxoLogo } from './oxxo';\nimport pp_white from './pp_white.svg';\nimport pp_blue from './pp_blue.svg';\nimport pp_black from './pp_black.svg';\nimport { paypalLogo } from './paypal';\nimport { creditLogo } from './credit';\nimport venmo_white from './venmo_white.svg';\nimport itau from './itau.svg';\nimport venmo_blue from './venmo_blue.svg';\nimport elv from './elv.svg';\nimport elv_white from './elv_white.svg';\n\nexport const fundingLogos = {\n\n [ BUTTON_LOGO.PP ]: {\n [ BUTTON_LOGO_COLOR.WHITE ]: pp_white,\n [ BUTTON_LOGO_COLOR.BLUE ]: pp_blue,\n [ BUTTON_LOGO_COLOR.BLACK ]: pp_black\n },\n\n [ BUTTON_LOGO.PAYPAL ]: paypalLogo,\n\n [ BUTTON_LOGO.CREDIT ]: creditLogo,\n\n [ BUTTON_LOGO.VENMO ]: {\n [ BUTTON_LOGO_COLOR.WHITE ]: venmo_white,\n [ BUTTON_LOGO_COLOR.BLUE ]: venmo_blue\n },\n [ BUTTON_LOGO.ITAU ]: {\n [ BUTTON_LOGO_COLOR.WHITE ]: itau\n },\n\n [ BUTTON_LOGO.IDEAL ]: idealLogo,\n\n [ BUTTON_LOGO.ELV ]: {\n [ BUTTON_LOGO_COLOR.ANY ]: elv,\n [ BUTTON_LOGO_COLOR.WHITE ]: elv_white\n },\n\n [ BUTTON_LOGO.BANCONTACT ]: bancontactLogo,\n\n [ BUTTON_LOGO.GIROPAY ]: giropayLogo,\n\n [ BUTTON_LOGO.SOFORT ]: sofortLogo,\n\n [ BUTTON_LOGO.EPS ]: epsLogo,\n\n [ BUTTON_LOGO.MYBANK ]: mybankLogo,\n\n [ BUTTON_LOGO.P24 ]: p24Logo,\n\n [ BUTTON_LOGO.PAYU ]: payuLogo,\n\n [ BUTTON_LOGO.VERKKOPANKKI ]: verkkopankkiLogo,\n\n [ BUTTON_LOGO.BLIK ]: blikLogo,\n\n [ BUTTON_LOGO.TRUSTLY ]: trustlyLogo,\n\n [ BUTTON_LOGO.MAXIMA ]: maximaLogo,\n\n [ BUTTON_LOGO.BOLETO ]: boletoLogo,\n\n [ BUTTON_LOGO.OXXO ]: oxxoLogo\n\n};\n","/* @flow */\n\nimport { CARD } from '../../constants';\n\nimport visa from './visa.svg';\nimport amex from './amex.svg';\nimport mastercard from './mastercard.svg';\nimport maestro from './maestro.svg';\nimport discover from './discover.svg';\nimport hiper from './hiper.svg';\nimport elo from './elo.svg';\nimport jcb from './jcb.svg';\nimport cup from './cup.svg';\n\nexport const cardLogos = {\n [ CARD.VISA ]: visa,\n [ CARD.AMEX ]: amex,\n [ CARD.MASTERCARD ]: mastercard,\n [ CARD.MAESTRO ]: maestro,\n [ CARD.DISCOVER ]: discover,\n [ CARD.HIPER ]: hiper,\n [ CARD.ELO ]: elo,\n [ CARD.JCB ]: jcb,\n [ CARD.CUP ]: cup\n};\n","/* @flow */\n\nexport * from './fundingLogos';\nexport * from './cardLogos';\n","/* @flow */\n\nimport { config } from '../config';\n\nimport { uniqueID, isLocalStorageEnabled } from './util';\nimport { getQueryParam } from './dom';\nimport { isPayPalDomain } from './security';\n\nconst LOCAL_STORAGE_KEY = '__paypal_storage__';\nconst SESSION_KEY = '__paypal_session__';\nconst GLOBAL_KEY = '__paypal_global__';\n\nlet accessedStorage;\n\nexport function getStorageState(handler : (storage : Object) => T) : T {\n\n const localStorageEnabled = isLocalStorageEnabled();\n let storage;\n\n if (accessedStorage) {\n storage = accessedStorage;\n }\n\n if (!storage && localStorageEnabled) {\n const rawStorage = window.localStorage.getItem(LOCAL_STORAGE_KEY);\n\n if (rawStorage) {\n storage = JSON.parse(rawStorage);\n }\n }\n\n if (!storage) {\n storage = window[LOCAL_STORAGE_KEY];\n }\n\n if (!storage) {\n storage = {\n id: uniqueID()\n };\n }\n\n if (!storage.id) {\n storage.id = uniqueID();\n }\n\n accessedStorage = storage;\n\n const result = handler(storage);\n\n if (localStorageEnabled) {\n window.localStorage.setItem(LOCAL_STORAGE_KEY, JSON.stringify(storage));\n } else {\n window[LOCAL_STORAGE_KEY] = storage;\n }\n\n accessedStorage = null;\n\n return result;\n}\n\nexport function getStorageID() : string {\n return getStorageState(storage => storage.id);\n}\n\nexport function getSession(handler : (state : Object) => T) : T {\n return getStorageState(storage => {\n\n let session = storage[SESSION_KEY];\n const now = Date.now();\n\n if (session && ((now - session.created) > config.session_uid_lifetime)) {\n session = null;\n }\n\n if (!session) {\n session = {\n guid: uniqueID(),\n created: now\n };\n }\n\n storage[SESSION_KEY] = session;\n\n return handler(session);\n });\n}\n\nexport function getSessionState(handler : (state : Object) => T) : T {\n return getSession(session => {\n session.state = session.state || {};\n return handler(session.state);\n });\n}\n\nexport function getSessionID() : string {\n\n const xprops = window.xprops;\n\n if (xprops && xprops.sessionID) {\n return xprops.sessionID;\n }\n\n const querySessionID = getQueryParam('sessionID');\n\n if (isPayPalDomain() && querySessionID) {\n return querySessionID;\n }\n\n return getSession(session => session.guid);\n}\n\nexport function getButtonSessionID() : ?string {\n\n if (window.xprops && window.xprops.buttonSessionID) {\n return window.xprops.buttonSessionID;\n }\n\n const querySessionID = getQueryParam('buttonSessionID');\n\n if (isPayPalDomain() && querySessionID) {\n return querySessionID;\n }\n}\n\nexport function getGlobalState(handler : (state : Object) => T) : T {\n window[GLOBAL_KEY] = window[GLOBAL_KEY] || {};\n return handler(window[GLOBAL_KEY]);\n}\n","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object.keys(descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object.defineProperty(target, property, desc);\n desc = null;\n }\n\n return desc;\n}","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { on } from 'post-robot/src';\nimport { type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { copyProp, eventEmitter, type EventEmitterType, stringifyError, noop } from '../lib';\nimport type { CancelableType } from '../types';\n\nimport type { Component } from './component';\n\ntype CleanupType = {\n set : (string, T) => T, // eslint-disable-line no-undef\n register : (string | Function, ?Function) => void,\n hasTasks : () => boolean,\n all : () => ZalgoPromise,\n run : (string) => ZalgoPromise\n};\n\nfunction cleanup(obj : Object) : CleanupType {\n\n let tasks = [];\n let cleaned = false;\n\n return {\n\n set(name : string, item : T) : T {\n\n if (cleaned) {\n return item;\n }\n\n obj[name] = item;\n this.register(() => {\n delete obj[name];\n });\n return item;\n },\n\n register(name : string | Function, method : ?Function) {\n\n if (typeof name === 'function') {\n method = name;\n name = '';\n }\n\n if (typeof method !== 'function') {\n throw new TypeError(`Expected to be passed function to clean.register`);\n }\n\n if (cleaned) {\n method();\n return;\n }\n\n tasks.push({\n complete: false,\n\n name,\n\n run() {\n\n if (this.complete) {\n return;\n }\n\n this.complete = true;\n\n if (method) {\n method();\n }\n }\n });\n },\n\n hasTasks() : boolean {\n return Boolean(tasks.filter(item => !item.complete).length);\n },\n\n all() : ZalgoPromise {\n let results = [];\n\n cleaned = true;\n\n while (tasks.length) {\n results.push(tasks.pop().run());\n }\n\n return ZalgoPromise.all(results).then(() => { /* pass */ });\n },\n\n run(name : string) : ZalgoPromise {\n let results = [];\n\n for (let item of tasks) {\n if (item.name === name) {\n results.push(item.run());\n }\n }\n\n return ZalgoPromise.all(results).then(noop);\n }\n };\n}\n\n\n/* Base Component\n --------------\n\n Methods that are common between child and parent components, but are not generic or uncoupled enough to live in\n a separate library.\n*/\n\nexport class BaseComponent

{\n\n clean : CleanupType\n event : EventEmitterType\n component : Component

\n\n constructor() {\n this.clean = cleanup(this);\n this.event = eventEmitter();\n }\n\n addProp(options : Object, name : string, def : mixed) {\n copyProp(options, this, name, def);\n }\n\n on(eventName : string, handler : () => void) : CancelableType {\n return this.event.on(eventName, handler);\n }\n\n listeners() {\n throw new Error(`Expected listeners to be implemented`);\n }\n\n error(err : mixed) : ZalgoPromise {\n throw new Error(`Expected error to be implemented - got ${ stringifyError(err) }`);\n }\n\n /* Listen\n ------\n\n Listen for any post messages defined in this.listeners(). All (most) of our communication is done via\n post-messages, so this sets up an easy way to create a collection of listeners in one go.\n\n All post-messaging is done using post-robot.\n */\n\n listen(win : CrossDomainWindowType, domain : string | RegExp) {\n\n if (!win) {\n throw this.component.createError(`window to listen to not set`);\n }\n\n if (!domain) {\n throw new Error(`Must pass domain to listen to`);\n }\n\n if (!this.listeners) {\n return;\n }\n\n let listeners = this.listeners();\n\n for (let listenerName of Object.keys(listeners)) {\n\n let name = listenerName.replace(/^zoid_/, '');\n\n let errorHandler = (err) => {\n this.error(err);\n };\n\n let listener = on(listenerName, { window: win, domain, errorHandler }, ({ source, data }) => {\n this.component.log(`listener_${ name }`);\n return listeners[listenerName].call(this, source, data);\n });\n\n let errorListener = on(listenerName, { window: win, errorHandler }, ({ origin }) => {\n this.component.logError(`unexpected_listener_${ name }`, { origin, domain: domain.toString() });\n this.error(new Error(`Unexpected ${ name } message from domain ${ origin } -- expected message from ${ domain.toString() }`));\n });\n\n this.clean.register(() => {\n listener.cancel();\n errorListener.cancel();\n });\n }\n }\n}\n","/* @flow */\n\nimport { getOpener, getTop, getParent, getNthParentFromTop, getAllFramesInWindow, getAncestor, getDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport base32 from 'hi-base32';\n\nimport { memoize, uniqueID, globalFor, stringifyError } from '../lib';\nimport { WINDOW_REFERENCES } from '../constants';\nimport type { DimensionsType, PositionType } from '../types';\n\n\nfunction normalize(str : string) : string {\n return str.replace(/^[^a-z0-9A-Z]+|[^a-z0-9A-Z]+$/g, '').replace(/[^a-z0-9A-Z]+/g, '_');\n}\n\nfunction encode(str : string) : string {\n return base32.encode(str).replace(/\\=/g, '').toLowerCase(); // eslint-disable-line no-useless-escape\n}\n\nfunction decode(str : string) : string {\n return base32.decode(str.toUpperCase());\n}\n\n\n/* Build Child Window Name\n -----------------------\n\n Build a name for our child window. This should identify the following things to the child:\n\n - That the window was created by, and is owned by zoid\n - The name of the child's parent. This is so the child can identify which window created it, even when we do a\n renderTo, in which case the true parent may actually be a sibling frame in the window hierarchy\n\n We base64 encode the window name so IE doesn't die when it encounters any characters that it doesn't like.\n*/\n\nexport function buildChildWindowName(name : string, version : string, options : Object = {}) : string {\n\n options.id = uniqueID();\n options.domain = getDomain(window);\n\n let encodedName = normalize(name);\n let encodedVersion = normalize(version);\n let encodedOptions = encode(JSON.stringify(options));\n\n if (!encodedName) {\n throw new Error(`Invalid name: ${ name } - must contain alphanumeric characters`);\n }\n\n if (!encodedVersion) {\n throw new Error(`Invalid version: ${ version } - must contain alphanumeric characters`);\n }\n\n return [\n 'xcomponent',\n encodedName,\n encodedVersion,\n encodedOptions,\n ''\n ].join('__');\n}\n\nexport let isZoidComponentWindow = memoize(() => {\n if (!window.name) {\n return false;\n }\n\n let [ zoidcomp ] = window.name.split('__');\n\n if (zoidcomp !== 'xcomponent') {\n return false;\n }\n\n return true;\n});\n\n/* Parse Window Name\n -----------------\n\n The inverse of buildChildWindowName. Base64 decodes and json parses the window name to get the original props\n passed down, including the parent name. Only accepts window names built by zoid\n*/\n\nexport let getComponentMeta = memoize(() => {\n\n if (!window.name) {\n throw new Error(`Can not get component meta without window name`);\n }\n\n let [ zoidcomp, name, version, encodedOptions ] = window.name.split('__');\n\n if (zoidcomp !== 'xcomponent') {\n throw new Error(`Window not rendered by zoid - got ${ zoidcomp }`);\n }\n\n let componentMeta;\n\n try {\n componentMeta = JSON.parse(decode(encodedOptions));\n } catch (err) {\n throw new Error(`Can not decode component-meta: ${ encodedOptions } ${ stringifyError(err) }`);\n }\n\n componentMeta.name = name;\n componentMeta.version = version.replace(/_/g, '.');\n\n return componentMeta;\n});\n\nexport function getParentDomain() : string {\n return getComponentMeta().domain; // How does this work for renderTo..?\n}\n\nfunction getWindowByRef({ ref, uid, distance } : { ref : string, uid : string, distance : number }) : CrossDomainWindowType {\n\n let result;\n\n if (ref === WINDOW_REFERENCES.OPENER) {\n result = getOpener(window);\n\n } else if (ref === WINDOW_REFERENCES.TOP) {\n result = getTop(window);\n\n } else if (ref === WINDOW_REFERENCES.PARENT) {\n\n if (distance) {\n result = getNthParentFromTop(window, distance);\n } else {\n result = getParent(window);\n }\n }\n\n if (ref === WINDOW_REFERENCES.GLOBAL) {\n let ancestor = getAncestor(window);\n\n if (ancestor) {\n for (let frame of getAllFramesInWindow(ancestor)) {\n let global = globalFor(frame);\n\n if (global && global.windows && global.windows[uid]) {\n result = global.windows[uid];\n break;\n }\n }\n }\n }\n\n if (!result) {\n throw new Error(`Unable to find window by ref`);\n }\n\n return result;\n}\n\n/* Get Parent Component Window\n ---------------------------\n\n Get the parent component window, which may be different from the actual parent window\n*/\n\nexport let getParentComponentWindow = memoize(() => {\n\n let componentMeta = getComponentMeta();\n\n if (!componentMeta) {\n throw new Error(`Can not get parent component window - window not rendered by zoid`);\n }\n\n return getWindowByRef(componentMeta.componentParent);\n});\n\n\nexport let getParentRenderWindow = memoize(() => {\n\n let componentMeta = getComponentMeta();\n\n if (!componentMeta) {\n throw new Error(`Can not get parent component window - window not rendered by zoid`);\n }\n\n return getWindowByRef(componentMeta.renderParent);\n});\n\n\n/* Get Position\n ------------\n\n Calculate the position for the popup\n\n This is either\n - Specified by the user\n - The center of the screen\n\n I'd love to do this with pure css, but alas... popup windows :(\n*/\n\nexport function getPosition({ width, height } : DimensionsType) : PositionType {\n\n let x = 0;\n let y = 0;\n\n if (width) {\n if (window.outerWidth) {\n x = Math.round((window.outerWidth - width) / 2) + window.screenX;\n } else if (window.screen.width) {\n x = Math.round((window.screen.width - width) / 2);\n }\n }\n\n if (height) {\n if (window.outerHeight) {\n y = Math.round((window.outerHeight - height) / 2) + window.screenY;\n } else if (window.screen.height) {\n y = Math.round((window.screen.height - height) / 2);\n }\n }\n\n return { x, y };\n}\n","/* @flow */\n\nimport { getDomain } from 'cross-domain-utils/src';\n\nimport type { Component } from '../component';\nimport type { BuiltInPropsType, MixedPropDefinitionType } from '../component/props';\n\nexport function normalizeChildProp(component : Component

, props : (BuiltInPropsType & P), key : string, value : T) : ?T {\n\n // $FlowFixMe\n let prop : MixedPropDefinitionType

= component.getProp(key);\n\n if (!prop) {\n if (component.looseProps) {\n return value;\n } else {\n return;\n }\n }\n\n if (typeof prop.childDecorate === 'function') {\n return prop.childDecorate(value);\n }\n\n return value;\n}\n\n\nexport function normalizeChildProps

(component : Component

, props : (BuiltInPropsType & P), origin : string, required : boolean = true) : (BuiltInPropsType & P) {\n\n let result = {};\n\n for (let key of Object.keys(props)) {\n\n let prop = component.getProp(key);\n let value = props[key];\n\n if (prop && prop.sameDomain && origin !== getDomain(window)) {\n continue;\n }\n\n result[key] = normalizeChildProp(component, props, key, value);\n\n if (prop && prop.alias && !result[prop.alias]) {\n result[prop.alias] = value;\n }\n }\n\n if (required) {\n for (let key of component.getPropNames()) {\n if (!props.hasOwnProperty(key)) {\n result[key] = normalizeChildProp(component, props, key, props[key]);\n }\n }\n }\n\n // $FlowFixMe\n return result;\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { flush } from 'beaver-logger/client';\nimport { isSameDomain, matchDomain, getDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { send } from 'post-robot/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { onResize } from 'belter/src';\n\nimport { BaseComponent } from '../base';\nimport { getParentComponentWindow, getComponentMeta, getParentDomain, getParentRenderWindow } from '../window';\nimport { extend, deserializeFunctions, get, stringify,\n globalFor, setLogLevel, getElement, noop, stringifyError } from '../../lib';\nimport { POST_MESSAGE, CONTEXT_TYPES, CLOSE_REASONS, INITIAL_PROPS } from '../../constants';\nimport { RenderError } from '../../error';\nimport type { Component } from '../component';\nimport type { BuiltInPropsType } from '../component/props';\n\nimport { normalizeChildProps } from './props';\n\nexport type ChildExportsType

= {\n updateProps : (props : (BuiltInPropsType & P)) => ZalgoPromise,\n close : () => ZalgoPromise\n};\n\n/* Child Component\n ---------------\n\n This is the portion of code which runs inside the frame or popup window containing the component's implementation.\n\n When the component author calls myComponent.attach(), it creates a new instance of ChildComponent, which is then\n responsible for managing the state and messaging back up to the parent, and providing props for the component to\n utilize.\n*/\n\nexport class ChildComponent

extends BaseComponent

{\n\n component : Component

\n props : BuiltInPropsType & P\n context : string\n\n onPropHandlers : Array<(BuiltInPropsType & P) => void>\n onInit : ZalgoPromise>\n watchingForResize : boolean\n autoResize : { width : boolean, height : boolean, element? : string }\n\n constructor(component : Component

) {\n super();\n this.component = component;\n\n if (!this.hasValidParentDomain()) {\n this.error(new RenderError(`Can not be rendered by domain: ${ this.getParentDomain() }`));\n return;\n }\n\n this.component.log(`construct_child`);\n\n // The child can specify some default props if none are passed from the parent. This often makes integrations\n // a little more seamless, as applicaiton code can call props.foo() without worrying about whether the parent\n // has provided them or not, and fall-back to some default behavior.\n\n this.onPropHandlers = [];\n\n for (let item of [ this.component, window ]) {\n for (let [ name, getter ] of [ [ 'xchild', () => this ], [ 'xprops', () => this.props ] ]) {\n // $FlowFixMe\n Object.defineProperty(item, name, {\n configurable: true,\n get: () => {\n if (!this.props) {\n this.setProps(this.getInitialProps(), getParentDomain());\n }\n // $FlowFixMe\n delete item[name];\n // $FlowFixMe\n item[name] = getter();\n // $FlowFixMe\n return item[name];\n }\n });\n }\n }\n\n this.component.log(`init_child`);\n\n this.setWindows();\n\n // Send an init message to our parent. This gives us an initial set of data to use that we can use to function.\n //\n // For example:\n //\n // - What context are we\n // - What props has the parent specified\n\n this.onInit = this.sendToParent(POST_MESSAGE.INIT, {\n\n exports: this.exports()\n\n }).then(({ origin, data }) => {\n\n this.context = data.context;\n this.setProps(data.props, origin);\n\n this.watchForResize();\n\n return this;\n\n }).catch(err => {\n\n this.error(err);\n throw err;\n });\n }\n\n hasValidParentDomain() : boolean {\n return matchDomain(this.component.allowedParentDomains, this.getParentDomain());\n }\n\n init() : ZalgoPromise> {\n return this.onInit;\n }\n\n getParentDomain() : string {\n return getParentDomain();\n }\n\n onProps(handler : Function) {\n this.onPropHandlers.push(handler);\n }\n\n getParentComponentWindow() : CrossDomainWindowType {\n return getParentComponentWindow();\n }\n\n getParentRenderWindow() : CrossDomainWindowType {\n return getParentRenderWindow();\n }\n\n getInitialProps() : (BuiltInPropsType & P) {\n let componentMeta = getComponentMeta();\n\n let props = componentMeta.props;\n\n if (props.type === INITIAL_PROPS.RAW) {\n props = props.value;\n } else if (props.type === INITIAL_PROPS.UID) {\n\n let parentComponentWindow = getParentComponentWindow();\n\n if (!isSameDomain(parentComponentWindow)) {\n\n if (window.location.protocol === 'file:') {\n throw new Error(`Can not get props from file:// domain`);\n }\n\n throw new Error(`Parent component window is on a different domain - expected ${ getDomain() } - can not retrieve props`);\n }\n\n let global = globalFor(parentComponentWindow);\n\n if (!global) {\n throw new Error(`Can not find global for parent component - can not retrieve props`);\n }\n\n props = JSON.parse(global.props[componentMeta.uid]);\n\n } else {\n throw new Error(`Unrecognized props type: ${ props.type }`);\n }\n\n if (!props) {\n throw new Error(`Initial props not found`);\n }\n \n return deserializeFunctions(props, ({ fullKey, self, args }) => {\n return this.onInit.then(() => {\n let func = get(this.props, fullKey);\n\n if (typeof func !== 'function') {\n throw new TypeError(`Expected ${ fullKey } to be function, got ${ typeof func }`);\n }\n\n return func.apply(self, args);\n });\n });\n }\n\n\n setProps(props : (BuiltInPropsType & P), origin : string, required : boolean = true) {\n // $FlowFixMe\n this.props = this.props || {};\n let normalizedProps = normalizeChildProps(this.component, props, origin, required);\n extend(this.props, normalizedProps);\n if (this.props.logLevel) {\n setLogLevel(this.props.logLevel);\n }\n for (let handler of this.onPropHandlers) {\n handler.call(this, this.props);\n }\n }\n\n\n /* Send to Parent\n --------------\n\n Send a post message to our parent window.\n */\n\n sendToParent(name : string, data : ?Object = {}, options : ?Object = {}) : ZalgoPromise<{ origin : string, source : CrossDomainWindowType, data : Object }> {\n let parentWindow = getParentComponentWindow();\n\n if (!parentWindow) {\n throw new Error(`Can not find parent component window to message`);\n }\n\n this.component.log(`send_to_parent_${ name }`);\n\n return send(parentWindow, name, data, { domain: getParentDomain(), ...options });\n }\n\n\n /* Set Windows\n -----------\n\n Determine the parent window, and the parent component window. Note -- these may be different, if we were\n rendered using renderTo.\n */\n\n setWindows() {\n\n\n // Ensure we do not try to .attach() multiple times for the same component on the same page\n\n if (window.__activeZoidComponent__) {\n throw this.component.createError(`Can not attach multiple components to the same window`);\n }\n\n window.__activeZoidComponent__ = this;\n\n // Get the direct parent window\n\n if (!getParentComponentWindow()) {\n throw this.component.createError(`Can not find parent window`);\n }\n\n let componentMeta = getComponentMeta();\n\n if (componentMeta.tag !== this.component.tag) {\n throw this.component.createError(`Parent is ${ componentMeta.tag } - can not attach ${ this.component.tag }`);\n }\n\n // Note -- getting references to other windows is probably one of the hardest things to do. There's basically\n // only a few ways of doing it:\n //\n // - The window is a direct parent, in which case you can use window.parent or window.opener\n // - The window is an iframe owned by you or one of your parents, in which case you can use window.frames\n // - The window sent you a post-message, in which case you can use event.source\n //\n // If we didn't rely on winProps.parent here from the window name, we'd have to relay all of our messages through\n // our actual parent. Which is no fun at all, and pretty error prone even with the help of post-robot. So this\n // is the lesser of two evils until browsers give us something like getWindowByName(...)\n\n // If the parent window closes, we need to close ourselves. There's no point continuing to run our component\n // if there's no parent to message to.\n\n this.watchForClose();\n }\n\n watchForClose() {\n window.addEventListener('unload', () => this.checkClose());\n }\n\n enableAutoResize({ width = true, height = true } : { width : boolean, height : boolean } = {}) {\n this.autoResize = { width, height };\n this.watchForResize();\n }\n\n getAutoResize() : { width : boolean, height : boolean, element : HTMLElement } {\n\n let width = false;\n let height = false;\n\n let autoResize = this.autoResize || this.component.autoResize;\n\n if (typeof autoResize === 'object') {\n width = Boolean(autoResize.width);\n height = Boolean(autoResize.height);\n } else if (autoResize) {\n width = true;\n height = true;\n }\n\n let element;\n\n if (autoResize.element) {\n element = getElement(autoResize.element);\n } else {\n element = document.body;\n }\n\n // $FlowFixMe\n return { width, height, element };\n }\n\n watchForResize() : ?ZalgoPromise {\n\n let { width, height, element } = this.getAutoResize();\n\n if (!width && !height) {\n return;\n }\n\n if (this.context === CONTEXT_TYPES.POPUP) {\n return;\n }\n\n if (this.watchingForResize) {\n return;\n }\n\n this.watchingForResize = true;\n \n onResize(element, ({ width: newWidth, height: newHeight }) => {\n this.resize(width ? newWidth : undefined, height ? newHeight : undefined);\n }, { width, height });\n }\n\n\n exports() : ChildExportsType

{\n\n let self = this;\n\n return {\n updateProps(props : (BuiltInPropsType & P)) : ZalgoPromise {\n return ZalgoPromise.try(() => self.setProps(props, this.origin, false));\n },\n\n close() : ZalgoPromise {\n return ZalgoPromise.try(() => self.destroy());\n }\n };\n }\n\n\n /* Resize\n ------\n\n Resize the child window. Must be done on a user action like a click if we're in a popup\n */\n\n resize(width : ?number, height : ?number) : ZalgoPromise {\n return ZalgoPromise.resolve().then(() => {\n\n this.component.log(`resize`, { width: stringify(width), height: stringify(height) });\n\n if (this.context === CONTEXT_TYPES.POPUP) {\n return;\n }\n\n return this.sendToParent(POST_MESSAGE.RESIZE, { width, height }).then(noop);\n });\n }\n\n /* Hide\n ----\n\n Hide the window and any parent template\n */\n\n hide() : ZalgoPromise {\n return this.sendToParent(POST_MESSAGE.HIDE).then(noop);\n }\n\n show() : ZalgoPromise {\n return this.sendToParent(POST_MESSAGE.SHOW).then(noop);\n }\n\n userClose() : void {\n return this.close(CLOSE_REASONS.USER_CLOSED);\n }\n\n\n /* Close\n -----\n\n Close the child window\n */\n\n close(reason : string = CLOSE_REASONS.CHILD_CALL) {\n\n this.component.log(`close_child`);\n\n // Ask our parent window to close us\n\n this.sendToParent(POST_MESSAGE.CLOSE, { reason });\n }\n\n checkClose() {\n this.sendToParent(POST_MESSAGE.CHECK_CLOSE, {}, { fireAndForget: true });\n }\n\n\n destroy() : ZalgoPromise {\n return flush().then(() => {\n window.close();\n });\n }\n\n\n /* Focus\n -----\n\n Focus the child window. Must be done on a user action like a click\n */\n\n focus() {\n this.component.log(`focus`);\n\n window.focus();\n }\n\n\n /* Error\n -----\n\n Send an error back to the parent\n */\n\n error(err : mixed) : ZalgoPromise {\n\n let stringifiedError = stringifyError(err);\n\n this.component.logError(`error`, { error: stringifiedError });\n\n return this.sendToParent(POST_MESSAGE.ERROR, {\n error: stringifiedError\n }).then(noop);\n }\n}\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { cleanUpWindow } from 'post-robot/src';\nimport { findFrameByName, isSameDomain } from 'cross-domain-utils/src';\n\nimport { iframe, popup, toCSS, showElement, hideElement,\n destroyElement, normalizeDimension, watchElementForClose,\n awaitFrameWindow, addClass, removeClass, noop } from '../../lib';\nimport { CONTEXT_TYPES, DELEGATE, CLOSE_REASONS, CLASS_NAMES, DEFAULT_DIMENSIONS } from '../../constants';\nimport { getPosition, getParentComponentWindow } from '../window';\n\n\nexport type ContextDriverType = {\n\n focusable : boolean,\n renderedIntoContainerTemplate : boolean,\n allowResize : boolean,\n openOnClick : boolean,\n needsBridge : boolean,\n\n open : (?string) => ZalgoPromise,\n resize : (?(number | string), ?(number | string)) => void,\n show : () => void,\n hide : () => void,\n loadUrl : (string) => void,\n\n delegateOverrides : {\n [string] : string | Function\n },\n\n openPrerender : () => ZalgoPromise,\n switchPrerender? : () => void\n};\n\n/* Render Drivers\n --------------\n\n There are various differences in how we treat:\n\n - Opening frames and windows\n - Rendering up to the parent\n - Resizing\n - etc.\n\n based on the context we're rendering to.\n\n These render drivers split this functionality out in a driver pattern, so our component code doesn't bunch up into a\n series of if-popup-then-else-if-iframe code.\n*/\n\nexport let RENDER_DRIVERS : { [string] : ContextDriverType } = {};\n\n// Iframe context is rendered inline on the page, without any kind of parent template. It's the one context that is designed\n// to feel like a native element on the page.\n\nRENDER_DRIVERS[CONTEXT_TYPES.IFRAME] = {\n\n focusable: false,\n renderedIntoContainerTemplate: true,\n allowResize: true,\n openOnClick: false,\n needsBridge: false,\n\n open(url : ?string) : ZalgoPromise {\n\n let attributes = this.component.attributes.iframe || {};\n\n this.iframe = iframe({\n url,\n attributes: {\n name: this.childWindowName,\n title: this.component.name,\n scrolling: this.component.scrolling ? 'yes' : 'no',\n ...attributes\n },\n class: [\n CLASS_NAMES.COMPONENT_FRAME,\n CLASS_NAMES.INVISIBLE\n ]\n }, this.element);\n\n return awaitFrameWindow(this.iframe).then(frameWindow => {\n\n this.window = frameWindow;\n\n let detectClose = () => {\n return ZalgoPromise.try(() => {\n return this.props.onClose(CLOSE_REASONS.CLOSE_DETECTED);\n }).finally(() => {\n return this.destroy();\n });\n };\n\n let iframeWatcher = watchElementForClose(this.iframe, detectClose);\n let elementWatcher = watchElementForClose(this.element, detectClose);\n\n this.clean.register('destroyWindow', () => {\n\n iframeWatcher.cancel();\n elementWatcher.cancel();\n\n cleanUpWindow(this.window);\n\n delete this.window;\n\n if (this.iframe) {\n destroyElement(this.iframe);\n delete this.iframe;\n }\n });\n });\n },\n\n openPrerender() : ZalgoPromise {\n\n let attributes = this.component.attributes.iframe || {};\n\n this.prerenderIframe = iframe({\n attributes: {\n name: `__prerender__${ this.childWindowName }`,\n scrolling: this.component.scrolling ? 'yes' : 'no',\n ...attributes\n },\n class: [\n CLASS_NAMES.PRERENDER_FRAME,\n CLASS_NAMES.VISIBLE\n ]\n }, this.element);\n\n return awaitFrameWindow(this.prerenderIframe).then(prerenderFrameWindow => {\n\n this.prerenderWindow = prerenderFrameWindow;\n\n this.clean.register('destroyPrerender', () => {\n\n if (this.prerenderIframe) {\n destroyElement(this.prerenderIframe);\n delete this.prerenderIframe;\n }\n });\n });\n },\n\n switchPrerender() {\n\n addClass(this.prerenderIframe, CLASS_NAMES.INVISIBLE);\n removeClass(this.prerenderIframe, CLASS_NAMES.VISIBLE);\n\n addClass(this.iframe, CLASS_NAMES.VISIBLE);\n removeClass(this.iframe, CLASS_NAMES.INVISIBLE);\n\n setTimeout(() => {\n if (this.prerenderIframe) {\n destroyElement(this.prerenderIframe);\n }\n }, 1000);\n },\n\n delegateOverrides: {\n\n openContainer: DELEGATE.CALL_DELEGATE,\n destroyComponent: DELEGATE.CALL_DELEGATE,\n destroyContainer: DELEGATE.CALL_DELEGATE,\n cancelContainerEvents: DELEGATE.CALL_DELEGATE,\n createPrerenderTemplate: DELEGATE.CALL_DELEGATE,\n elementReady: DELEGATE.CALL_DELEGATE,\n showContainer: DELEGATE.CALL_DELEGATE,\n showComponent: DELEGATE.CALL_DELEGATE,\n hideContainer: DELEGATE.CALL_DELEGATE,\n hideComponent: DELEGATE.CALL_DELEGATE,\n hide: DELEGATE.CALL_DELEGATE,\n show: DELEGATE.CALL_DELEGATE,\n resize: DELEGATE.CALL_DELEGATE,\n loadUrl: DELEGATE.CALL_DELEGATE,\n hijackSubmit: DELEGATE.CALL_DELEGATE,\n openPrerender: DELEGATE.CALL_DELEGATE,\n switchPrerender: DELEGATE.CALL_DELEGATE,\n\n renderTemplate: DELEGATE.CALL_ORIGINAL,\n openContainerFrame: DELEGATE.CALL_ORIGINAL,\n getOutlet: DELEGATE.CALL_ORIGINAL,\n\n open(original : () => ZalgoPromise, override : () => ZalgoPromise) : () => ZalgoPromise {\n return function overrideOpen() : ZalgoPromise {\n return override.apply(this, arguments).then(() => {\n this.clean.set('window', findFrameByName(getParentComponentWindow(), this.childWindowName));\n\n if (!this.window) {\n throw new Error(`Unable to find parent component iframe window`);\n }\n });\n };\n }\n },\n\n resize(width : ?(number | string), height : ?(number | string)) {\n\n if (width) {\n this.container.style.width = toCSS(width);\n this.element.style.width = toCSS(width);\n }\n\n if (height) {\n this.container.style.height = toCSS(height);\n this.element.style.height = toCSS(height);\n }\n },\n\n show() {\n showElement(this.element);\n },\n\n hide() {\n hideElement(this.element);\n },\n\n loadUrl(url : string) {\n this.iframe.setAttribute('src', url);\n }\n};\n\nif (__ZOID__.__POPUP_SUPPORT__) {\n\n // Popup context opens up a centered popup window on the page.\n\n RENDER_DRIVERS[CONTEXT_TYPES.POPUP] = {\n\n focusable: true,\n renderedIntoContainerTemplate: false,\n allowResize: false,\n openOnClick: true,\n needsBridge: true,\n\n open(url : ?string = '') : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n let {\n width = DEFAULT_DIMENSIONS.WIDTH,\n height = DEFAULT_DIMENSIONS.HEIGHT\n } = this.component.dimensions || {};\n\n width = normalizeDimension(width, window.outerWidth);\n height = normalizeDimension(height, window.outerWidth);\n\n let { x, y } = getPosition({ width, height });\n\n let attributes = this.component.attributes.popup || {};\n\n this.window = popup(url || '', {\n name: this.childWindowName,\n width,\n height,\n top: y,\n left: x,\n status: 1,\n toolbar: 0,\n menubar: 0,\n resizable: 1,\n scrollbars: 1,\n ...attributes\n });\n\n this.prerenderWindow = this.window;\n\n this.clean.register('destroyWindow', () => {\n if (this.window) {\n this.window.close();\n cleanUpWindow(this.window);\n delete this.window;\n delete this.prerenderWindow;\n }\n });\n\n this.resize(width, height);\n });\n },\n\n openPrerender() : ZalgoPromise {\n return ZalgoPromise.try(noop);\n },\n\n resize() {\n // pass\n },\n\n hide() {\n throw new Error('Can not hide popup');\n },\n\n show() {\n throw new Error('Can not show popup');\n },\n\n delegateOverrides: {\n\n openContainer: DELEGATE.CALL_DELEGATE,\n destroyContainer: DELEGATE.CALL_DELEGATE,\n\n elementReady: DELEGATE.CALL_DELEGATE,\n\n showContainer: DELEGATE.CALL_DELEGATE,\n showComponent: DELEGATE.CALL_DELEGATE,\n hideContainer: DELEGATE.CALL_DELEGATE,\n hideComponent: DELEGATE.CALL_DELEGATE,\n\n hide: DELEGATE.CALL_DELEGATE,\n show: DELEGATE.CALL_DELEGATE,\n\n cancelContainerEvents: DELEGATE.CALL_DELEGATE,\n\n open: DELEGATE.CALL_ORIGINAL,\n loadUrl: DELEGATE.CALL_ORIGINAL,\n createPrerenderTemplate: DELEGATE.CALL_ORIGINAL,\n destroyComponent: DELEGATE.CALL_ORIGINAL,\n resize: DELEGATE.CALL_ORIGINAL,\n renderTemplate: DELEGATE.CALL_ORIGINAL,\n openContainerFrame: DELEGATE.CALL_ORIGINAL,\n getOutlet: DELEGATE.CALL_ORIGINAL\n },\n\n loadUrl(url : string) {\n\n if (isSameDomain(this.window)) {\n try {\n if (this.window.location && this.window.location.replace) {\n this.window.location.replace(url);\n return;\n }\n } catch (err) {\n // pass\n }\n }\n\n this.window.location = url;\n }\n };\n}\n","/* @flow */\n/* eslint complexity: off */\n\nimport type { Component } from '../component';\nimport type { MixedPropDefinitionType, PropsType } from '../component/props';\n\n// $FlowFixMe\nexport function validateProp(prop : MixedPropDefinitionType

, key : string, value : ?T, props : (PropsType & P), required : boolean = true) {\n\n let hasProp = value !== null && value !== undefined && value !== '';\n\n if (!hasProp) {\n if (required && prop.required !== false && !prop.hasOwnProperty('def')) {\n throw new Error(`Prop is required: ${ key }`);\n }\n\n return;\n }\n\n if (value && typeof value.then === 'function' && prop.promise) {\n return;\n }\n\n if (prop.type === 'function') {\n\n if (!(typeof value === 'function')) {\n throw new TypeError(`Prop is not of type function: ${ key }`);\n }\n\n } else if (prop.type === 'string') {\n\n if (typeof value !== 'string') {\n throw new TypeError(`Prop is not of type string: ${ key }`);\n }\n\n } else if (prop.type === 'object') {\n\n // Since we're sending everything by post-message, everything must be json serializable\n\n if (prop.sendToChild !== false) {\n try {\n JSON.stringify(value);\n } catch (err) {\n throw new Error(`Unable to serialize prop: ${ key }`);\n }\n }\n\n } else if (prop.type === 'number') {\n\n if (isNaN(parseInt(value, 10))) {\n throw new TypeError(`Prop is not a number: ${ key }`);\n }\n }\n\n if (typeof prop.validate === 'function' && value) {\n prop.validate(value, props);\n }\n}\n\n\n/* Validate Props\n --------------\n\n Validate user-defined props. Users can pass props down from the parent into the child component, but first we\n double check the values are what we expect, based on the props spec defined in the original component.\n*/\n\nexport function validateProps

(component : Component

, props : PropsType, required : boolean = true) {\n\n props = props || {};\n\n if (props.env && typeof component.url === 'object' && !component.url[props.env]) {\n throw new Error(`Invalid env: ${ props.env }`);\n }\n\n // Set aliases\n\n for (let key of component.getPropNames()) {\n\n // $FlowFixMe\n let prop = component.getProp(key);\n\n if (prop.alias && props.hasOwnProperty(prop.alias)) {\n\n let value = props[prop.alias];\n delete props[prop.alias];\n\n if (!props[key]) {\n props[key] = value;\n }\n }\n }\n\n // First make sure all of the props we were sent are actually valid prop names\n\n /*\n\n if (!component.looseProps) {\n for (let key of Object.keys(props)) {\n if (component.getPropNames().indexOf(key) === -1) {\n throw component.error(`Invalid prop: ${key}`);\n }\n }\n }\n\n */\n\n // Then loop over the props we expect, and make sure they're all present and valid\n\n for (let key of Object.keys(props)) {\n\n // $FlowFixMe\n let prop : MixedPropDefinitionType

= component.getProp(key);\n let value = props[key];\n\n if (prop) {\n // $FlowFixMe\n validateProp(prop, key, value, props, required);\n }\n }\n\n for (let key of component.getPropNames()) {\n\n // $FlowFixMe\n let prop : MixedPropDefinitionType

= component.getProp(key);\n let value = props[key];\n\n if (prop && !props.hasOwnProperty(key)) {\n validateProp(prop, key, value, props, required);\n }\n }\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { noop, denodeify, once, memoize, promisify, dotify } from '../../lib';\nimport type { Component } from '../component';\nimport type { BuiltInPropsDefinitionType, PropsType, BuiltInPropsType, MixedPropDefinitionType } from '../component/props';\n\nimport type { ParentComponent } from './index';\n\nfunction isDefined(value : ?mixed) : boolean {\n return value !== null && value !== undefined && value !== '';\n}\n\n\n/* Normalize Prop\n --------------\n\n Turn prop into normalized value, using defaults, function options, etc.\n*/\n\n// $FlowFixMe\nexport function normalizeProp(component : Component

, instance : ParentComponent

, props : (PropsType & P), key : string, value : ?T) : ?(ZalgoPromise | T) { // eslint-disable-line complexity\n\n let prop = component.getProp(key);\n\n let resultValue;\n\n if (prop.value) {\n resultValue = prop.value;\n } else if (prop.def && (!props.hasOwnProperty(key) || !isDefined(value))) {\n resultValue = prop.def.call(component, props);\n } else {\n resultValue = value;\n }\n\n if (!resultValue && prop.alias && props[prop.alias]) {\n resultValue = props[prop.alias];\n }\n\n let decorated = false;\n\n if (prop.decorate && resultValue !== null && resultValue !== undefined) {\n resultValue = prop.decorate.call(instance, resultValue, props);\n decorated = true;\n }\n\n let type = prop.type;\n\n if (type === 'boolean') {\n // $FlowFixMe\n resultValue = Boolean(resultValue);\n\n } else if (type === 'function') {\n\n if (!resultValue && prop.noop) {\n // $FlowFixMe\n resultValue = noop;\n\n if (!decorated && prop.decorate) {\n // $FlowFixMe\n resultValue = prop.decorate.call(instance, noop, props);\n }\n }\n\n if (resultValue && typeof resultValue === 'function') {\n\n resultValue = resultValue.bind(instance);\n\n // If prop.denodeify is set, denodeify the function (accepts callback -> returns promise)\n\n if (prop.denodeify) {\n // $FlowFixMe\n resultValue = denodeify(resultValue);\n }\n\n if (prop.promisify) {\n // $FlowFixMe\n resultValue = promisify(resultValue);\n }\n\n // Wrap the function in order to log when it is called\n\n let original = resultValue;\n // $FlowFixMe\n resultValue = function() : mixed {\n component.log(`call_prop_${ key }`);\n return original.apply(this, arguments);\n };\n\n // If prop.once is set, ensure the function can only be called once\n\n if (prop.once) {\n // $FlowFixMe\n resultValue = once(resultValue);\n }\n\n // If prop.memoize is set, ensure the function is memoized (first return resultValue is cached and returned for any future calls)\n\n if (prop.memoize) {\n // $FlowFixMe\n resultValue = memoize(resultValue);\n }\n }\n\n } else if (type === 'string') {\n // pass\n\n } else if (type === 'object') {\n // pass\n\n } else if (type === 'number') {\n if (resultValue !== undefined) {\n // $FlowFixMe\n resultValue = parseInt(resultValue, 10);\n }\n }\n\n // $FlowFixMe\n return resultValue;\n}\n\n\n/* Normalize Props\n ---------------\n\n Turn props into normalized values, using defaults, function options, etc.\n*/\n\nexport function normalizeProps

(component : Component

, instance : ParentComponent

, props : (PropsType & P)) : (BuiltInPropsType & P) {\n\n let result = {};\n\n // $FlowFixMe\n props = props || {};\n\n for (let key of Object.keys(props)) {\n if (component.getPropNames().indexOf(key) !== -1) {\n // $FlowFixMe\n result[key] = normalizeProp(component, instance, props, key, props[key]);\n } else {\n result[key] = props[key];\n }\n }\n\n for (let key of component.getPropNames()) {\n if (!props.hasOwnProperty(key) && (!instance.props || !instance.props.hasOwnProperty(key))) {\n\n // $FlowFixMe\n let normalizedProp = normalizeProp(component, instance, props, key, props[key]);\n\n if (normalizedProp !== undefined) {\n result[key] = normalizedProp;\n }\n }\n }\n\n // $FlowFixMe\n return result;\n}\n\n\n/* Props to Query\n --------------\n\n Turn props into an initial query string to open the component with\n\n string -> string\n bool -> 1\n object -> json\n number -> string\n*/\n\n// $FlowFixMe\nfunction getQueryParam(prop : MixedPropDefinitionType

, key : string, value : T) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (typeof prop.queryParam === 'function') {\n return prop.queryParam(value);\n } else if (typeof prop.queryParam === 'string') {\n return prop.queryParam;\n } else {\n return key;\n }\n });\n}\n\n// $FlowFixMe\nfunction getQueryValue(prop : MixedPropDefinitionType

, key : string, value : T) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (typeof prop.queryValue === 'function') {\n return prop.queryValue(value);\n } else {\n return value;\n }\n });\n}\n\nexport function propsToQuery

(propsDef : BuiltInPropsDefinitionType

, props : (BuiltInPropsType & P)) : { [string] : string } {\n\n let params = {};\n\n return ZalgoPromise.all(Object.keys(props).map(key => {\n\n let prop = propsDef[key];\n\n if (!prop) {\n return; // eslint-disable-line array-callback-return\n }\n\n return ZalgoPromise.resolve().then(() => {\n\n let value = props[key];\n\n if (!value) {\n return;\n }\n\n if (!prop.queryParam) {\n return;\n }\n\n return value;\n\n }).then(value => {\n\n if (!value) {\n return;\n }\n\n return ZalgoPromise.all([\n // $FlowFixMe\n getQueryParam(prop, key, value),\n // $FlowFixMe\n getQueryValue(prop, key, value)\n ]).then(([ queryParam, queryValue ]) => {\n\n let result;\n\n if (typeof queryValue === 'boolean') {\n result = '1';\n } else if (typeof queryValue === 'string') {\n result = queryValue.toString();\n } else if (typeof queryValue === 'function') {\n return;\n } else if (typeof queryValue === 'object' && queryValue !== null) {\n\n if (prop.serialization === 'json') {\n result = JSON.stringify(queryValue);\n } else {\n result = dotify(queryValue, key);\n\n for (let dotkey of Object.keys(result)) {\n params[dotkey] = result[dotkey];\n }\n\n return;\n }\n\n } else if (typeof queryValue === 'number') {\n result = queryValue.toString();\n }\n\n params[queryParam] = result;\n });\n });\n\n })).then(() => {\n Object.keys(params).forEach(key => {\n params[key] = escape(params[key]);\n });\n return params;\n });\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { flush } from 'beaver-logger/client';\nimport { send, bridge } from 'post-robot/src';\nimport { isSameDomain, isWindowClosed, isTop, isSameTopWindow, matchDomain, getDistanceFromTop, onCloseWindow, getDomain, assertSameDomain, type CrossDomainWindowType, type SameDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getElementSafe, onResize } from 'belter/src';\n\nimport { BaseComponent } from '../base';\nimport { buildChildWindowName, getParentDomain, getParentComponentWindow } from '../window';\nimport { addEventListener, uniqueID, elementReady, writeElementToWindow,\n noop, showAndAnimate, animateAndHide, showElement, hideElement,\n addClass, extend, serializeFunctions, extendUrl, jsxDom,\n getElement, memoized, appendChild,\n global, writeToWindow, setLogLevel, once,\n prefetchPage, awaitFrameLoad, stringify, stringifyError } from '../../lib';\nimport { POST_MESSAGE, CONTEXT_TYPES, CLASS_NAMES, ANIMATION_NAMES, CLOSE_REASONS, DELEGATE, INITIAL_PROPS, WINDOW_REFERENCES, EVENTS, DEFAULT_DIMENSIONS } from '../../constants';\nimport { RenderError } from '../../error';\nimport type { Component } from '../component';\nimport type { PropsType, BuiltInPropsType } from '../component/props';\nimport type { ChildExportsType } from '../child';\nimport type { CancelableType, Jsx, DimensionsType, ElementRefType } from '../../types';\n\nimport { RENDER_DRIVERS, type ContextDriverType } from './drivers';\nimport { validateProps } from './validate';\nimport { propsToQuery, normalizeProps } from './props';\n\nglobal.props = global.props || {};\nglobal.windows = global.windows || {};\n\nexport type RenderOptionsType = {\n id : string,\n props : PropsType,\n tag : string,\n context : string,\n outlet : HTMLElement,\n CLASS : typeof CLASS_NAMES,\n ANIMATION : typeof ANIMATION_NAMES,\n CONTEXT : typeof CONTEXT_TYPES,\n EVENT : typeof EVENTS,\n actions : {\n close : (string) => ZalgoPromise,\n focus : () => ZalgoPromise\n },\n on : (string, () => void) => CancelableType,\n jsxDom : Jsx,\n document : Document,\n container : HTMLElement,\n dimensions : DimensionsType\n};\n\n\n/* Parent Component\n ----------------\n\n This manages the state of the component on the parent window side - i.e. the window the component is being rendered into.\n\n It handles opening the necessary windows/iframes, launching the component's url, and listening for messages back from the component.\n*/\n\nexport class ParentComponent

extends BaseComponent

{\n\n html : ?ZalgoPromise\n context : string\n props : BuiltInPropsType & P\n childWindowName : string\n onInit : ZalgoPromise>\n window : CrossDomainWindowType\n handledErrors : Array\n\n container : HTMLElement\n element : HTMLElement\n outlet : HTMLElement;\n iframe : HTMLIFrameElement\n\n prerenderIframe : HTMLIFrameElement\n prerenderWindow : SameDomainWindowType\n\n childExports : ?ChildExportsType

\n timeout : ?TimeoutID // eslint-disable-line no-undef\n\n constructor(component : Component

, context : string, { props } : { props : (PropsType & P) }) {\n super();\n\n this.component = component;\n\n this.validateParentDomain();\n\n this.context = context;\n\n try {\n this.setProps(props);\n } catch (err) {\n if (props.onError) {\n props.onError(err);\n }\n throw err;\n }\n\n if (this.props.logLevel) {\n setLogLevel(this.props.logLevel);\n }\n\n this.childWindowName = this.buildChildWindowName({ renderTo: window });\n\n this.registerActiveComponent();\n\n // Options passed during renderTo. We would not ordinarily expect a user to pass these, since we depend on\n // them only when we're trying to render from a sibling to a sibling\n\n this.component.log(`construct_parent`);\n\n this.watchForUnload();\n\n this.onInit = new ZalgoPromise();\n\n this.onInit.catch(err => {\n return this.error(err);\n });\n }\n\n render(element : ElementRefType, loadUrl : boolean = true) : ZalgoPromise> {\n return this.tryInit(() => {\n\n this.component.log(`render_${ this.context }`, { context: this.context, element, loadUrl: stringify(loadUrl) });\n\n let tasks = {};\n\n tasks.onRender = this.props.onRender();\n\n tasks.getDomain = this.getDomain();\n\n tasks.elementReady = ZalgoPromise.try(() => {\n if (element) {\n return this.elementReady(element);\n }\n });\n\n tasks.openContainer = tasks.elementReady.then(() => {\n return this.openContainer(element);\n });\n\n tasks.showContainer = tasks.openContainer.then(() => {\n return this.showContainer();\n });\n\n tasks.openPrerender = tasks.openContainer.then(() => {\n return this.openPrerender();\n });\n\n tasks.switchPrerender = ZalgoPromise.all([ tasks.openPrerender, this.onInit ]).then(() => {\n return this.switchPrerender();\n });\n\n // $FlowFixMe\n tasks.open = this.driver.openOnClick\n ? this.open()\n : tasks.openContainer.then(() => this.open());\n\n tasks.listen = ZalgoPromise.hash({ domain: tasks.getDomain, open: tasks.open }).then(({ domain }) => {\n this.listen(this.window, domain);\n });\n\n tasks.watchForClose = tasks.open.then(() => {\n return this.watchForClose();\n });\n\n tasks.linkDomain = ZalgoPromise.all([ tasks.getDomain, tasks.open ]).then(([ domain ]) => {\n if (bridge && typeof domain === 'string') {\n return bridge.linkUrl(this.window, domain);\n }\n });\n\n if (!this.html) {\n tasks.createPrerenderTemplate = tasks.openPrerender.then(() => {\n return this.createPrerenderTemplate();\n });\n\n tasks.showComponent = tasks.createPrerenderTemplate.then(() => {\n return this.showComponent();\n });\n }\n\n tasks.openBridge = ZalgoPromise.all([ tasks.getDomain, tasks.open ]).then(([ domain ]) => {\n return this.openBridge(typeof domain === 'string' ? domain : null);\n });\n\n if (this.html) {\n tasks.loadHTML = tasks.open.then(() => {\n return this.loadHTML();\n });\n\n } else if (loadUrl) {\n tasks.buildUrl = this.buildUrl();\n\n tasks.loadUrl = ZalgoPromise.all([\n tasks.buildUrl,\n tasks.open,\n tasks.linkDomain,\n tasks.listen,\n tasks.open,\n tasks.openBridge,\n tasks.createPrerenderTemplate\n ]).then(([ url ]) => {\n return this.loadUrl(url);\n });\n\n tasks.runTimeout = tasks.loadUrl.then(() => {\n return this.runTimeout();\n });\n }\n\n return ZalgoPromise.hash(tasks);\n\n }).then(() => {\n return this.props.onEnter();\n }).then(() => {\n return this;\n });\n }\n\n @memoized\n getOutlet() : HTMLElement {\n let outlet = document.createElement('div');\n addClass(outlet, CLASS_NAMES.OUTLET);\n return outlet;\n }\n\n validateParentDomain() {\n let domain = getDomain();\n if (!matchDomain(this.component.allowedParentDomains, domain)) {\n throw new RenderError(`Can not be rendered by domain: ${ domain }`);\n }\n }\n\n renderTo(win : CrossDomainWindowType, element : ?string) : ZalgoPromise> {\n return this.tryInit(() => {\n\n if (win === window) {\n return this.render(element);\n }\n\n if (!isSameTopWindow(window, win)) {\n throw new Error(`Can only renderTo an adjacent frame`);\n }\n\n if (element && typeof element !== 'string') {\n throw new Error(`Element passed to renderTo must be a string selector, got ${ typeof element } ${ element }`);\n }\n\n this.checkAllowRenderTo(win);\n\n this.component.log(`render_${ this.context }_to_win`, { element: stringify(element), context: this.context });\n\n this.childWindowName = this.buildChildWindowName({ renderTo: win });\n\n this.delegate(win);\n\n return this.render(element);\n });\n }\n\n @memoized\n prefetch() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.html = this.buildUrl().then(url => {\n return prefetchPage(url).then(html => {\n\n let host = `${ url.split('/').slice(0, 3).join('/') }`;\n let uri = `/${ url.split('/').slice(3).join('/') }`;\n\n return `\n \n\n ${ html }\n\n \n `;\n });\n });\n });\n }\n\n @memoized\n loadHTML() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (!this.html) {\n throw new Error(`Html not prefetched`);\n }\n\n return this.html.then(html => {\n // $FlowFixMe\n return writeToWindow(this.window, html);\n });\n });\n }\n\n checkAllowRenderTo(win : CrossDomainWindowType) {\n\n if (!win) {\n throw this.component.createError(`Must pass window to renderTo`);\n }\n\n if (isSameDomain(win)) {\n return;\n }\n\n let origin = getDomain();\n let domain = this.component.getDomain(null, this.props.env);\n\n if (!domain) {\n throw new Error(`Could not determine domain to allow remote render`);\n }\n\n if (matchDomain(domain, origin)) {\n return;\n }\n\n throw new Error(`Can not render remotely to ${ domain.toString() } - can only render to ${ origin }`);\n }\n\n registerActiveComponent() {\n ParentComponent.activeComponents.push(this);\n\n this.clean.register(() => {\n ParentComponent.activeComponents.splice(ParentComponent.activeComponents.indexOf(this), 1);\n });\n }\n\n\n getComponentParentRef() : { ref : string, uid? : string, distance? : number } {\n let domain = this.component.getDomain(null, this.props.env);\n\n if (domain === getDomain(window)) {\n let uid = uniqueID();\n global.windows = global.windows || {};\n global.windows[uid] = window;\n this.clean.register(() => {\n delete global.windows[uid];\n });\n\n return { ref: WINDOW_REFERENCES.GLOBAL, uid };\n }\n\n if (this.context === CONTEXT_TYPES.POPUP) {\n return { ref: WINDOW_REFERENCES.OPENER };\n }\n\n if (isTop(window)) {\n return { ref: WINDOW_REFERENCES.TOP };\n }\n\n return { ref: WINDOW_REFERENCES.PARENT, distance: getDistanceFromTop(window) };\n }\n\n getRenderParentRef(renderToWindow : CrossDomainWindowType = window) : { ref : string, uid? : string, distance? : number } {\n\n if (renderToWindow === window) {\n return this.getComponentParentRef();\n }\n\n let uid = uniqueID();\n global.windows[uid] = renderToWindow;\n\n this.clean.register(() => {\n delete global.windows[uid];\n });\n\n return { ref: WINDOW_REFERENCES.GLOBAL, uid };\n }\n\n buildChildWindowName({ renderTo = window } : { renderTo : CrossDomainWindowType } = {}) : string {\n\n let childDomain = this.component.getDomain(null, this.props.env);\n let sameDomain = isSameDomain(renderTo);\n\n let uid = uniqueID();\n let tag = this.component.tag;\n let sProps = serializeFunctions(this.getPropsForChild());\n\n let componentParent = this.getComponentParentRef();\n let renderParent = this.getRenderParentRef(renderTo);\n\n let secureProps = !sameDomain && !this.component.unsafeRenderTo;\n\n let props = secureProps\n ? { type: INITIAL_PROPS.UID, uid }\n : { type: INITIAL_PROPS.RAW, value: sProps };\n\n if (props.type === INITIAL_PROPS.UID) {\n global.props[uid] = JSON.stringify(sProps);\n\n this.clean.register(() => {\n delete global.props[uid];\n });\n }\n\n return buildChildWindowName(this.component.name, this.component.version, { uid, tag, componentParent, renderParent, props, childDomain });\n }\n\n\n /* Send to Parent\n --------------\n\n Send a post message to our parent window.\n */\n\n sendToParent(name : string, data : Object) : ZalgoPromise<{ origin : string, source : CrossDomainWindowType, data : Object }> {\n let parentWindow = getParentComponentWindow();\n\n if (!parentWindow) {\n throw new Error(`Can not find parent component window to message`);\n }\n\n this.component.log(`send_to_parent_${ name }`);\n\n return send(getParentComponentWindow(), name, data, { domain: getParentDomain() });\n }\n\n\n /* Set Props\n ---------\n\n Normalize props and generate the url we'll use to render the component\n */\n\n setProps(props : (PropsType & P), required : boolean = true) {\n\n validateProps(this.component, props, required);\n if (this.component.validate) {\n this.component.validate(this.component, props);\n }\n\n // $FlowFixMe\n this.props = this.props || {};\n\n extend(this.props, normalizeProps(this.component, this, props));\n }\n\n\n /* Build Url\n ---------\n\n We build the props we're passed into the initial url. This means the component server-side can start rendering\n itself based on whatever props the merchant provides.\n */\n\n @memoized\n buildUrl() : ZalgoPromise {\n\n let propUrl : (string | void) = this.props.url;\n\n return ZalgoPromise.all([\n\n propUrl,\n // $FlowFixMe\n propsToQuery({ ...this.component.props, ...this.component.builtinProps }, this.props)\n\n ]).then(([ url, query ]) => {\n\n // Do not extend the url if it is for a different domain\n\n if (url && !this.component.getValidDomain(url)) {\n return url;\n }\n\n return ZalgoPromise.try(() => {\n\n return url || this.component.getUrl(this.props.env, this.props);\n\n }).then(finalUrl => {\n\n query.xcomponent = '1';\n return extendUrl(finalUrl, { query });\n });\n });\n }\n\n\n getDomain() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n return this.props.url;\n\n }).then(url => {\n\n let domain = this.component.getDomain(url, this.props.env);\n\n if (domain) {\n return domain;\n }\n\n if (this.component.buildUrl) {\n return ZalgoPromise.try(() => this.component.buildUrl(this.props)).then(builtUrl => {\n return this.component.getDomain(builtUrl, this.props.env);\n });\n }\n\n }).then(domain => {\n\n if (!domain) {\n throw new Error(`Could not determine domain`);\n }\n\n return domain;\n });\n }\n\n getPropsForChild() : (BuiltInPropsType & P) {\n\n let result = {};\n\n for (let key of Object.keys(this.props)) {\n let prop = this.component.getProp(key);\n\n if (!prop || prop.sendToChild !== false) {\n result[key] = this.props[key];\n }\n }\n\n // $FlowFixMe\n return result;\n }\n\n\n /* Update Props\n ------------\n\n Send new props down to the child\n */\n\n updateProps(props : (PropsType & P)) : ZalgoPromise {\n this.setProps(props, false);\n\n return this.onInit.then(() => {\n if (this.childExports) {\n return this.childExports.updateProps(this.getPropsForChild());\n } else {\n throw new Error(`Child exports were not available`);\n }\n });\n }\n\n\n openBridge(domain : ?string) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (!bridge || !this.driver.needsBridge) {\n return;\n }\n\n let needsBridgeParams : Object = { win: this.window };\n if (domain) {\n needsBridgeParams.domain = domain;\n }\n\n let needsBridge = bridge.needsBridge(needsBridgeParams);\n\n let bridgeUrl = this.component.getBridgeUrl(this.props.env);\n\n if (!bridgeUrl) {\n\n if (needsBridge && domain && !bridge.hasBridge(domain, domain)) {\n throw new Error(`Bridge url needed to render ${ this.context }`);\n }\n\n return;\n }\n\n bridgeUrl = extendUrl(bridgeUrl, { query: { version: this.component.version } });\n\n let bridgeDomain = this.component.getBridgeDomain(this.props.env);\n\n if (!bridgeDomain) {\n throw new Error(`Can not determine domain for bridge`);\n }\n\n if (needsBridge) {\n return bridge.openBridge(bridgeUrl, bridgeDomain).then(result => {\n if (result) {\n return result;\n }\n });\n }\n });\n }\n\n\n /* Open\n ----\n\n Open a new window in the desired context\n */\n\n @memoized\n open() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.component.log(`open_${ this.context }`, { windowName: this.childWindowName });\n if (this.props.win) {\n this.clean.set('window', this.props.win);\n assertSameDomain(this.window).name = this.childWindowName;\n return;\n }\n return this.driver.open.call(this);\n });\n }\n\n @memoized\n openPrerender() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.component.prerenderTemplate) {\n return this.driver.openPrerender.call(this);\n }\n });\n }\n\n @memoized\n switchPrerender() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.prerenderWindow && this.driver.switchPrerender) {\n return this.driver.switchPrerender.call(this);\n }\n });\n }\n\n get driver() : ContextDriverType {\n\n if (!this.context) {\n throw new Error('Context not set');\n }\n\n return RENDER_DRIVERS[this.context];\n }\n\n elementReady(element : ElementRefType) : ZalgoPromise {\n return elementReady(element).then(noop);\n }\n\n\n delegate(win : CrossDomainWindowType) {\n\n this.component.log(`delegate_${ this.context }`);\n\n let props = {\n uid: this.props.uid,\n dimensions: this.props.dimensions,\n onClose: this.props.onClose,\n onDisplay: this.props.onDisplay\n };\n\n for (let propName of this.component.getPropNames()) {\n let prop = this.component.getProp(propName);\n\n if (prop.allowDelegate) {\n props[propName] = this.props[propName];\n }\n }\n\n let delegate = send(win, `${ POST_MESSAGE.DELEGATE }_${ this.component.name }`, {\n\n context: this.context,\n env: this.props.env,\n\n options: {\n\n context: this.context,\n\n childWindowName: this.childWindowName,\n isWindowClosed: () => isWindowClosed(this.window),\n\n props,\n\n overrides: {\n focus: () => this.focus(),\n userClose: () => this.userClose(),\n getDomain: () => this.getDomain(),\n\n error: (err) => this.error(err),\n on: (eventName, handler) => this.on(eventName, handler)\n }\n }\n\n }).then(({ data }) => {\n\n this.clean.register(data.destroy);\n return data;\n\n }).catch(err => {\n\n throw new Error(`Unable to delegate rendering. Possibly the component is not loaded in the target window.\\n\\n${ stringifyError(err) }`);\n });\n\n let overrides = this.driver.delegateOverrides;\n\n for (let key of Object.keys(overrides)) {\n let val = overrides[key];\n\n if (val === DELEGATE.CALL_ORIGINAL) {\n continue;\n }\n\n // $FlowFixMe\n let original = this[key];\n\n // $FlowFixMe\n this[key] = function overridenFunction() : ZalgoPromise {\n return delegate.then(data => {\n\n let override = data.overrides[key];\n\n if (val === DELEGATE.CALL_DELEGATE) {\n return override.apply(this, arguments);\n }\n\n if (typeof val === 'function') {\n return val(original, override).apply(this, arguments);\n }\n\n throw new Error(`Expected delgate to be CALL_ORIGINAL, CALL_DELEGATE, or factory method`);\n });\n };\n }\n }\n\n /* Watch For Close\n ---------------\n\n Watch for the child window closing, so we can cleanup.\n Also watch for this window changing location, so we can close the component.\n */\n\n watchForClose() {\n let closeWindowListener = onCloseWindow(this.window, () => {\n this.component.log(`detect_close_child`);\n\n return ZalgoPromise.try(() => {\n return this.props.onClose(CLOSE_REASONS.CLOSE_DETECTED);\n }).finally(() => {\n return this.destroy();\n });\n }, 3000);\n\n this.clean.register('destroyCloseWindowListener', closeWindowListener.cancel);\n }\n\n watchForUnload() {\n\n // Our child has no way of knowing if we navigated off the page. So we have to listen for unload\n // and close the child manually if that happens.\n\n let onunload = once(() => {\n this.component.log(`navigate_away`);\n flush();\n this.destroyComponent();\n });\n\n let unloadWindowListener = addEventListener(window, 'unload', onunload);\n\n this.clean.register('destroyUnloadWindowListener', unloadWindowListener.cancel);\n }\n\n\n /* Load Url\n --------\n\n Load url into the child window. This is separated out because it's quite common for us to have situations\n where opening the child window and loading the url happen at different points.\n */\n\n loadUrl(url : string) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.component.log(`load_url`);\n\n if (window.location.href.split('#')[0] === url.split('#')[0]) {\n url = extendUrl(url, {\n query: {\n [ uniqueID() ]: '1'\n }\n });\n }\n\n return this.driver.loadUrl.call(this, url);\n });\n }\n\n\n hijack(targetElement : HTMLFormElement | HTMLAnchorElement) {\n targetElement.target = this.childWindowName;\n }\n\n /* Run Timeout\n -----------\n\n Set a timeout on the initial render, and call this.props.onTimeout if we don't get an init call in time.\n */\n\n runTimeout() {\n let timeout = this.props.timeout;\n\n if (timeout) {\n let id = this.timeout = setTimeout(() => {\n\n this.component.log(`timed_out`, { timeout: timeout.toString() });\n\n let error = this.component.createError(`Loading component timed out after ${ timeout } milliseconds`);\n\n this.onInit.reject(error);\n this.props.onTimeout(error);\n\n }, timeout);\n\n this.clean.register(() => {\n clearTimeout(id);\n delete this.timeout;\n });\n }\n }\n\n\n /* Listeners\n ---------\n\n Post-robot listeners to the child component window\n */\n\n listeners() : { [string] : (CrossDomainWindowType, Object) => mixed } {\n return {\n\n // The child rendered, and the component called .attach()\n // We have no way to know when the child has set up its listeners for the first time, so we have to listen\n // for this message to be sure so we can continue doing anything from the parent\n\n [ POST_MESSAGE.INIT ](source : CrossDomainWindowType, data : Object) : { props : BuiltInPropsType & P, context : string } {\n\n this.childExports = data.exports;\n\n this.onInit.resolve(this);\n\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n\n return {\n props: this.getPropsForChild(),\n context: this.context\n };\n },\n\n\n // The child has requested that we close it. Since iframes can't close themselves, we need\n // this logic to exist in the parent window\n\n [ POST_MESSAGE.CLOSE ](source : CrossDomainWindowType, data : Object) {\n this.close(data.reason);\n },\n\n [ POST_MESSAGE.CHECK_CLOSE ]() {\n this.checkClose();\n },\n\n // Iframes can't resize themselves, so they need the parent to take care of it for them.\n\n [ POST_MESSAGE.RESIZE ](source : CrossDomainWindowType, data : Object) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.driver.allowResize) {\n return this.resize(data.width, data.height);\n }\n });\n },\n\n [ POST_MESSAGE.HIDE ]() {\n this.hide();\n },\n\n [ POST_MESSAGE.SHOW ]() {\n this.show();\n },\n\n\n // The child encountered an error\n\n [ POST_MESSAGE.ERROR ](source : CrossDomainWindowType, data : Object) {\n this.error(new Error(data.error));\n }\n };\n }\n\n\n /* Resize\n ------\n\n Resize the child component window\n */\n\n resize(width : ?(number | string), height : ?(number | string)) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.component.log(`resize`, { height: stringify(height), width: stringify(width) });\n this.driver.resize.call(this, width, height);\n if (this.props.onResize) {\n this.props.onResize();\n }\n });\n }\n\n\n /* Hide\n ----\n\n Hide the component and any parent template\n */\n\n hide() : void {\n\n if (this.container) {\n hideElement(this.container);\n }\n\n return this.driver.hide.call(this);\n }\n\n show() : void {\n\n if (this.container) {\n showElement(this.container);\n }\n\n return this.driver.show.call(this);\n }\n\n\n checkClose() {\n let closeWindowListener = onCloseWindow(this.window, () => {\n this.userClose();\n }, 50, 500);\n\n this.clean.register(closeWindowListener.cancel);\n }\n\n\n userClose() : ZalgoPromise {\n return this.close(CLOSE_REASONS.USER_CLOSED);\n }\n\n\n /* Close\n -----\n\n Close the child component\n */\n\n @memoized\n close(reason : string = CLOSE_REASONS.PARENT_CALL) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n this.component.log(`close`, { reason });\n\n this.event.triggerOnce(EVENTS.CLOSE);\n return this.props.onClose(reason);\n\n }).then(() => {\n\n return ZalgoPromise.all([\n this.closeComponent(),\n this.closeContainer()\n ]);\n\n }).then(() => {\n\n return this.destroy();\n });\n }\n\n\n @memoized\n closeContainer(reason : string = CLOSE_REASONS.PARENT_CALL) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n this.event.triggerOnce(EVENTS.CLOSE);\n return this.props.onClose(reason);\n\n }).then(() => {\n\n return ZalgoPromise.all([\n this.closeComponent(reason),\n this.hideContainer()\n ]);\n\n }).then(() => {\n\n return this.destroyContainer();\n });\n }\n\n\n @memoized\n destroyContainer() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.clean.run('destroyContainerEvents');\n this.clean.run('destroyContainerTemplate');\n });\n }\n\n\n @memoized\n closeComponent(reason : string = CLOSE_REASONS.PARENT_CALL) : ZalgoPromise {\n\n let win = this.window;\n\n return ZalgoPromise.try(() => {\n\n return this.cancelContainerEvents();\n\n }).then(() => {\n\n this.event.triggerOnce(EVENTS.CLOSE);\n return this.props.onClose(reason);\n\n }).then(() => {\n\n return this.hideComponent();\n\n }).then(() => {\n\n return this.destroyComponent();\n\n }).then(() => {\n\n // IE in metro mode -- child window needs to close itself, or close will hang\n\n if (this.childExports && this.context === CONTEXT_TYPES.POPUP && !isWindowClosed(win)) {\n this.childExports.close().catch(noop);\n }\n });\n }\n\n destroyComponent() {\n this.clean.run('destroyUnloadWindowListener');\n this.clean.run('destroyCloseWindowListener');\n this.clean.run('destroyContainerEvents');\n this.clean.run('destroyWindow');\n }\n\n @memoized\n showContainer() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.props.onDisplay) {\n return this.props.onDisplay();\n }\n }).then(() => {\n if (this.container) {\n return showAndAnimate(this.container, ANIMATION_NAMES.SHOW_CONTAINER, this.clean.register);\n }\n });\n }\n\n @memoized\n showComponent() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.props.onDisplay) {\n return this.props.onDisplay();\n }\n }).then(() => {\n if (this.element) {\n return showAndAnimate(this.element, ANIMATION_NAMES.SHOW_COMPONENT, this.clean.register);\n }\n });\n }\n\n @memoized\n hideContainer() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.container) {\n return animateAndHide(this.container, ANIMATION_NAMES.HIDE_CONTAINER, this.clean.register);\n } else {\n return ZalgoPromise.resolve();\n }\n });\n }\n\n @memoized\n hideComponent() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.element) {\n return animateAndHide(this.element, ANIMATION_NAMES.HIDE_COMPONENT, this.clean.register);\n } else {\n return ZalgoPromise.resolve();\n }\n });\n }\n\n\n /* Focus\n -----\n\n Focus the child component window\n */\n\n focus() {\n\n if (this.window && !isWindowClosed(this.window)) {\n this.component.log(`focus`);\n this.window.focus();\n\n } else {\n\n throw new Error(`No window to focus`);\n }\n }\n\n\n /* Create Component Template\n -------------------------\n\n Creates an initial template and stylesheet which are loaded into the child window, to be displayed before the url is loaded\n */\n\n @memoized\n createPrerenderTemplate() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (!this.component.prerenderTemplate) {\n return ZalgoPromise.resolve();\n }\n\n return ZalgoPromise.try(() => {\n\n if (this.prerenderIframe) {\n return awaitFrameLoad(this.prerenderIframe).then(() => this.prerenderWindow);\n } else {\n return this.prerenderWindow;\n }\n\n }).then(win => {\n\n let doc;\n\n try {\n doc = win.document;\n } catch (err) {\n return;\n }\n\n let el;\n\n try {\n el = this.renderTemplate(this.component.prerenderTemplate, {\n jsxDom: jsxDom.bind(doc),\n document: doc\n });\n } catch (err) {\n this.component.logError('preprender_error', { err: err.stack ? err.stack : err.toString() });\n console.error(err.stack ? err.stack : err); // eslint-disable-line no-console\n return;\n }\n\n try {\n writeElementToWindow(win, el);\n } catch (err) {\n this.component.logError('preprender_error', { err: err.stack ? err.stack : err.toString() });\n console.error(err.stack ? err.stack : err); // eslint-disable-line no-console\n }\n\n let { width = false, height = false, element = 'body' } = (typeof this.component.autoResize === 'object' && this.component.autoResize !== null)\n ? this.component.autoResize\n : {};\n\n element = getElementSafe(element, doc);\n\n if (element && (width || height)) {\n onResize(element, ({ width: newWidth, height: newHeight }) => {\n this.resize(width ? newWidth : undefined, height ? newHeight : undefined);\n }, { width, height, win });\n }\n });\n });\n }\n\n\n /* Create Parent Template\n ----------------------\n\n Create a template and stylesheet for the parent template behind the element\n */\n\n renderTemplate(renderer : (RenderOptionsType) => HTMLElement, options : Object = {}) : HTMLElement {\n\n let {\n width = `${ DEFAULT_DIMENSIONS.WIDTH }px`,\n height = `${ DEFAULT_DIMENSIONS.HEIGHT }px`\n } = (this.component.dimensions || {});\n\n return renderer.call(this, {\n id: `${ CLASS_NAMES.ZOID }-${ this.component.tag }-${ this.props.uid }`,\n props: renderer.__xdomain__ ? null : this.props,\n tag: this.component.tag,\n context: this.context,\n outlet: this.getOutlet(),\n CLASS: CLASS_NAMES,\n ANIMATION: ANIMATION_NAMES,\n CONTEXT: CONTEXT_TYPES,\n EVENT: EVENTS,\n actions: {\n close: () => this.userClose(),\n focus: () => this.focus()\n },\n on: (eventName, handler) => this.on(eventName, handler),\n jsxDom,\n document,\n dimensions: { width, height },\n ...options\n });\n }\n\n @memoized\n openContainer(element : ?HTMLElement) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n let el;\n\n if (element) {\n el = getElement(element);\n } else {\n el = document.body;\n }\n\n if (!el) {\n throw new Error(`Could not find element to open container into`);\n }\n\n if (!this.component.containerTemplate) {\n if (this.driver.renderedIntoContainerTemplate) {\n throw new Error(`containerTemplate needed to render ${ this.context }`);\n }\n\n return;\n }\n\n let container = this.renderTemplate(this.component.containerTemplate, {\n container: el\n });\n\n this.container = container;\n hideElement(this.container);\n appendChild(el, this.container);\n\n if (this.driver.renderedIntoContainerTemplate) {\n this.element = this.getOutlet();\n hideElement(this.element);\n\n if (!this.element) {\n throw new Error('Could not find element to render component into');\n }\n\n hideElement(this.element);\n }\n\n this.clean.register('destroyContainerTemplate', () => {\n\n if (this.container && this.container.parentNode) {\n this.container.parentNode.removeChild(this.container);\n }\n\n delete this.container;\n });\n });\n }\n\n cancelContainerEvents() {\n this.clean.run('destroyContainerEvents');\n }\n\n\n /* Destroy\n -------\n\n Close the component and clean up any listeners and state\n */\n\n destroy() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.clean.hasTasks()) {\n this.component.log(`destroy`);\n flush();\n return this.clean.all();\n }\n });\n }\n\n\n tryInit(method : () => mixed) : ZalgoPromise> {\n return ZalgoPromise.try(method).catch(err => {\n this.onInit.reject(err);\n }).then(() => {\n return this.onInit;\n });\n }\n\n\n /* Error\n -----\n\n Handle an error\n */\n\n error(err : mixed) : ZalgoPromise {\n // eslint-disable-next-line promise/no-promise-in-callback\n return ZalgoPromise.try(() => {\n\n this.handledErrors = this.handledErrors || [];\n\n if (this.handledErrors.indexOf(err) !== -1) {\n // $FlowFixMe\n return;\n }\n\n this.handledErrors.push(err);\n\n this.onInit.reject(err);\n\n return this.destroy();\n\n }).then(() => {\n\n if (this.props.onError) {\n return this.props.onError(err);\n }\n\n }).catch(errErr => { // eslint-disable-line unicorn/catch-error-name\n\n throw new Error(`An error was encountered while handling error:\\n\\n ${ stringifyError(err) }\\n\\n${ stringifyError(errErr) }`);\n\n }).then(() => {\n\n if (!this.props.onError) {\n throw err;\n }\n });\n }\n\n static activeComponents : Array> = []\n\n static destroyAll() : ZalgoPromise {\n let results = [];\n\n while (ParentComponent.activeComponents.length) {\n results.push(ParentComponent.activeComponents[0].destroy());\n }\n\n return ZalgoPromise.all(results).then(noop);\n }\n}\n","/* @flow */\n\nimport { onCloseWindow, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { BaseComponent } from '../base';\nimport { ParentComponent } from '../parent';\nimport { RENDER_DRIVERS, type ContextDriverType } from '../parent/drivers';\nimport type { Component } from '../component';\nimport { noop } from '../../lib';\nimport type { CancelableType, DimensionsType } from '../../types';\n\nexport type DelegatePropsType = {\n uid : string,\n dimensions : DimensionsType,\n onClose : () => ?ZalgoPromise,\n onDisplay : () => ?ZalgoPromise\n};\n\nexport type DelegateOptionsType = {\n context : string,\n props : DelegatePropsType,\n childWindowName : string,\n isWindowClosed : () => ZalgoPromise,\n \n overrides : {\n focus : () => ZalgoPromise,\n userClose : (string) => ZalgoPromise,\n getDomain : () => ZalgoPromise,\n error : (mixed) => ZalgoPromise,\n on : (string, () => void) => CancelableType\n }\n};\n\nexport class DelegateComponent

extends BaseComponent

{\n\n source : CrossDomainWindowType\n context : string\n props : DelegatePropsType\n\n focus : () => ZalgoPromise\n userClose : (string) => ZalgoPromise\n getDomain : () => ZalgoPromise\n error : (mixed) => ZalgoPromise\n on : (string, () => void) => CancelableType\n\n childWindowName : string\n isWindowClosed : () => ZalgoPromise\n\n constructor(component : Component

, source : CrossDomainWindowType, options : DelegateOptionsType) {\n super();\n\n this.component = component;\n this.clean.set('source', source);\n\n this.context = options.context;\n\n this.props = {\n uid: options.props.uid,\n dimensions: options.props.dimensions,\n onClose: options.props.onClose,\n onDisplay: options.props.onDisplay\n };\n\n for (let propName of component.getPropNames()) {\n // $FlowFixMe\n let prop = this.component.getProp(propName);\n\n if (prop.allowDelegate) {\n this.props[propName] = options.props[propName];\n }\n }\n\n this.focus = () => {\n return ZalgoPromise.all([\n this.isWindowClosed().then(closed => {\n if (!closed) {\n window.open('', this.childWindowName);\n }\n }),\n options.overrides.focus.call(this)\n ]).then(noop);\n };\n\n this.clean.register('destroyFocusOverride', () => {\n // $FlowFixMe\n this.focus = noop;\n });\n\n this.userClose = options.overrides.userClose;\n this.getDomain = options.overrides.getDomain;\n this.error = options.overrides.error;\n this.on = options.overrides.on;\n\n let delegateOverrides = RENDER_DRIVERS[options.context].delegateOverrides;\n\n for (let key of Object.keys(delegateOverrides)) {\n // $FlowFixMe\n this[key] = ParentComponent.prototype[key];\n }\n\n this.childWindowName = options.childWindowName;\n this.isWindowClosed = options.isWindowClosed;\n\n ParentComponent.prototype.registerActiveComponent.call(this);\n\n this.watchForClose();\n }\n\n get driver() : ContextDriverType {\n\n if (!this.context) {\n throw new Error('Context not set');\n }\n\n return RENDER_DRIVERS[this.context];\n }\n\n watchForClose() {\n let closeWindowListener = onCloseWindow(this.source, () => this.destroy(), 3000);\n this.clean.register('destroyCloseWindowListener', closeWindowListener.cancel);\n }\n\n getOverrides(context : string) : { [string] : mixed } {\n\n let delegateOverrides = RENDER_DRIVERS[context].delegateOverrides;\n\n let overrides = {};\n\n let self = this;\n\n for (let key of Object.keys(delegateOverrides)) {\n overrides[key] = function delegateOverride() : mixed {\n // $FlowFixMe\n return ParentComponent.prototype[key].apply(self, arguments);\n };\n }\n\n return overrides;\n }\n\n destroy() : ZalgoPromise {\n return this.clean.all();\n }\n}\n","/* @flow */\n\nimport { PROP_TYPES_LIST, CONTEXT_TYPES_LIST } from '../../constants';\nimport { isPerc, isPx } from '../../lib';\n\nimport type { ComponentOptionsType } from './index';\n\nfunction validatePropDefinitions

(options : ComponentOptionsType

) {\n\n if (options.props && !(typeof options.props === 'object')) {\n throw new Error(`Expected options.props to be an object`);\n }\n\n if (options.props) {\n for (let key of Object.keys(options.props)) {\n\n // $FlowFixMe\n let prop = options.props[key];\n\n if (!prop || !(typeof prop === 'object')) {\n throw new Error(`Expected options.props.${ key } to be an object`);\n }\n\n if (!prop.type) {\n throw new Error(`Expected prop.type`);\n }\n\n if (PROP_TYPES_LIST.indexOf(prop.type) === -1) {\n throw new Error(`Expected prop.type to be one of ${ PROP_TYPES_LIST.join(', ') }`);\n }\n\n if (prop.required && prop.def) {\n throw new Error(`Required prop can not have a default value`);\n }\n }\n }\n}\n\n// eslint-disable-next-line complexity\nexport function validate

(options : ?ComponentOptionsType

) { // eslint-ignore-line\n\n if (!options) {\n throw new Error(`Expecred options to be passed`);\n }\n\n if (!options.tag || !options.tag.match(/^[a-z0-9-]+$/)) {\n throw new Error(`Invalid options.tag: ${ options.tag }`);\n }\n\n validatePropDefinitions(options);\n\n if (options.dimensions) {\n if (options.dimensions && !isPx(options.dimensions.width) && !isPerc(options.dimensions.width)) {\n throw new Error(`Expected options.dimensions.width to be a px or % string value`);\n }\n\n if (options.dimensions && !isPx(options.dimensions.height) && !isPerc(options.dimensions.height)) {\n throw new Error(`Expected options.dimensions.height to be a px or % string value`);\n }\n }\n\n if (options.contexts) {\n\n if (options.contexts.popup && !__ZOID__.__POPUP_SUPPORT__) {\n throw new Error(`Popups not supported in this build -- please use the full zoid.js build`);\n }\n\n let anyEnabled = false;\n\n for (let context of Object.keys(options.contexts)) {\n\n if (CONTEXT_TYPES_LIST.indexOf(context) === -1) {\n throw new Error(`Unsupported context type: ${ context }`);\n }\n\n if ((options.contexts && options.contexts[context]) || (options.contexts && options.contexts[context] === undefined)) {\n anyEnabled = true;\n }\n }\n\n if (!anyEnabled) {\n throw new Error(`No context type is enabled`);\n }\n }\n\n if (options.defaultContext) {\n if (CONTEXT_TYPES_LIST.indexOf(options.defaultContext) === -1) {\n throw new Error(`Unsupported context type: ${ options.defaultContext || 'unknown' }`);\n }\n\n if (options.contexts && options.defaultContext && !options.contexts[options.defaultContext]) {\n throw new Error(`Disallowed default context type: ${ options.defaultContext || 'unknown' }`);\n }\n }\n\n if (options.url && options.buildUrl) {\n throw new Error(`Can not pass both options.url and options.buildUrl`);\n }\n\n if (options.defaultEnv) {\n if (typeof options.defaultEnv !== 'string') {\n throw new TypeError(`Expected options.defaultEnv to be a string`);\n }\n\n if (!options.buildUrl && typeof options.url !== 'object') {\n throw new Error(`Expected options.url to be an object mapping env->url`);\n }\n\n if (options.url && typeof options.url === 'object' && !options.url[options.defaultEnv]) {\n throw new Error(`No url found for default env: ${ options.defaultEnv }`);\n }\n }\n\n if (options.url && typeof options.url === 'object') {\n\n if (!options.defaultEnv) {\n throw new Error(`Must pass options.defaultEnv with env->url mapping`);\n }\n\n for (let env of Object.keys(options.url)) {\n if (!options.url[env]) {\n throw new Error(`No url specified for env: ${ env }`);\n }\n }\n }\n\n if (options.prerenderTemplate && typeof options.prerenderTemplate !== 'function') {\n throw new Error(`Expected options.prerenderTemplate to be a function`);\n }\n\n if (options.containerTemplate && typeof options.containerTemplate !== 'function') {\n throw new Error(`Expected options.containerTemplate to be a function`);\n }\n}\n","/* @flow */\n/* @jsx jsxDom */\n\nimport { type RenderOptionsType } from '../../parent';\n\nexport function defaultContainerTemplate({ id, tag, context, CLASS, outlet, jsxDom, dimensions : { width, height } } : RenderOptionsType) : HTMLElement {\n\n return (\n

\n \n\n { outlet }\n
\n );\n}\n","/* @flow */\n/* @jsx jsxDom */\n\nimport { type RenderOptionsType } from '../../parent';\n\nexport function defaultPrerenderTemplate({ jsxDom } : RenderOptionsType) : HTMLElement {\n return (\n \n \n \n \n \n
\n
\n
\n \n \n );\n}\n","/* @flow */\n\nexport * from './container';\nexport * from './component';\n","/* @flow */\n\nimport { type ZalgoPromise } from 'zalgo-promise/src';\nimport type { SameDomainWindowType } from 'cross-domain-utils/src';\n\nimport { uniqueID } from '../../lib';\nimport { type DimensionsType } from '../../types';\n\ntype PropDefinitionType = {\n type : S,\n alias? : string,\n value? : T,\n required? : boolean,\n noop? : boolean,\n once? : boolean,\n memoize? : boolean,\n promisify? : boolean,\n queryParam? : boolean | string | (T) => (string | ZalgoPromise),\n queryValue? : (T) => (ZalgoPromise | mixed),\n sendToChild? : boolean,\n allowDelegate? : boolean,\n validate? : (T, PropsType & P) => void,\n decorate? : (T, PropsType & P) => (void | ZalgoPromise | T),\n def? : (P) => ?T,\n sameDomain? : boolean,\n serialization? : 'json' | 'dotify',\n childDecorate? : (T) => ?T,\n denodeify? : boolean\n};\n\nexport type BooleanPropDefinitionType = PropDefinitionType;\nexport type StringPropDefinitionType = PropDefinitionType;\nexport type NumberPropDefinitionType = PropDefinitionType;\nexport type FunctionPropDefinitionType = PropDefinitionType;\nexport type ObjectPropDefinitionType = PropDefinitionType;\n\nexport type MixedPropDefinitionType

= BooleanPropDefinitionType<*, P> | StringPropDefinitionType<*, P> | NumberPropDefinitionType<*, P> | FunctionPropDefinitionType<*, P> | ObjectPropDefinitionType<*, P>;\n\nexport type UserPropsDefinitionType

= {\n [string] : MixedPropDefinitionType

\n};\n\nexport type EventHandlerType = (T) => void | ZalgoPromise;\n\ntype envPropType = string;\ntype uidPropType = string;\ntype urlPropType = string;\ntype versionPropType = string;\ntype timeoutPropType = number;\ntype logLevelPropType = string;\ntype dimensionsPropType = DimensionsType;\ntype winPropType = SameDomainWindowType;\n\ntype onDisplayPropType = EventHandlerType;\ntype onEnterPropType = EventHandlerType;\ntype onRenderPropType = EventHandlerType;\ntype onClosePropType = EventHandlerType;\ntype onResizePropType = EventHandlerType;\ntype onTimeoutPropType = EventHandlerType;\ntype onErrorPropType = EventHandlerType;\n\nexport type BuiltInPropsType = {\n env : envPropType,\n uid : uidPropType,\n url? : urlPropType,\n version? : versionPropType,\n timeout? : timeoutPropType,\n logLevel : logLevelPropType,\n dimensions? : dimensionsPropType,\n win? : winPropType,\n\n onDisplay : onDisplayPropType,\n onEnter : onEnterPropType,\n onRender : onRenderPropType,\n onClose : onClosePropType,\n onResize : onResizePropType,\n onTimeout : onTimeoutPropType,\n onError? : onErrorPropType\n};\n\nexport type PropsType = {\n env? : envPropType,\n uid? : uidPropType,\n url? : urlPropType,\n version? : versionPropType,\n timeout? : timeoutPropType,\n logLevel? : logLevelPropType,\n dimensions? : dimensionsPropType,\n win? : winPropType,\n\n onDisplay? : onDisplayPropType,\n onEnter? : onEnterPropType,\n onRender? : onRenderPropType,\n onClose? : onClosePropType,\n onResize? : onResizePropType,\n onTimeout? : onTimeoutPropType,\n onError? : onErrorPropType\n};\n\nexport type BuiltInPropsDefinitionType

= {\n env : StringPropDefinitionType,\n uid : StringPropDefinitionType,\n url : StringPropDefinitionType,\n version : StringPropDefinitionType,\n timeout : NumberPropDefinitionType,\n logLevel : StringPropDefinitionType,\n dimensions : ObjectPropDefinitionType,\n win : ObjectPropDefinitionType,\n\n onDisplay : FunctionPropDefinitionType,\n onEnter : FunctionPropDefinitionType,\n onRender : FunctionPropDefinitionType,\n onClose : FunctionPropDefinitionType,\n onResize : FunctionPropDefinitionType,\n onTimeout : FunctionPropDefinitionType,\n onError : FunctionPropDefinitionType\n};\n\n/* Internal Props\n --------------\n\n We define and use certain props by default, for configuration and events that are used at the framework level.\n These follow the same format as regular props, and are classed as reserved words that may not be overriden by users.\n*/\n\nexport function getInternalProps

() : BuiltInPropsDefinitionType

{\n return {\n\n // The desired env in which the component is being rendered. Used to determine the correct url\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n def() : string {\n return this.defaultEnv;\n }\n },\n\n uid: {\n type: 'string',\n def() : string {\n return uniqueID();\n },\n queryParam: true\n },\n\n logLevel: {\n type: 'string',\n required: false,\n queryParam: true,\n def() : string {\n return this.defaultLogLevel;\n }\n },\n\n // A custom url to use to render the component\n\n url: {\n type: 'string',\n required: false,\n promise: true,\n sendToChild: false\n },\n\n win: {\n type: 'object',\n required: false,\n sendToChild: false\n },\n\n dimensions: {\n type: 'object',\n required: false\n },\n\n version: {\n type: 'string',\n required: false,\n queryParam: true,\n def() : string {\n return this.version;\n }\n },\n\n // A millisecond timeout before onTimeout is called\n\n timeout: {\n type: 'number',\n required: false,\n sendToChild: false\n },\n\n onDisplay: {\n type: 'function',\n required: false,\n noop: true,\n promisify: true,\n memoize: true,\n sendToChild: false\n },\n\n onEnter: {\n type: 'function',\n required: false,\n noop: true,\n promisify: true,\n sendToChild: false\n },\n\n // When we get an INIT message from the child\n\n onRender: {\n type: 'function',\n required: false,\n noop: true,\n promisify: true,\n sendToChild: false\n },\n\n // When the user closes the component.\n\n onClose: {\n type: 'function',\n required: false,\n noop: true,\n once: true,\n promisify: true,\n sendToChild: false\n },\n\n onResize: {\n type: 'function',\n required: false,\n noop: true,\n sendToChild: false\n },\n\n // When we time-out before getting an INIT message from the child. Defaults to onError if no handler passed.\n\n onTimeout: {\n type: 'function',\n required: false,\n memoize: true,\n promisify: true,\n sendToChild: false,\n def() : (() => void) {\n return function onTimeout(err : mixed) : void {\n if (this.props.onError) {\n return this.props.onError(err);\n }\n throw err;\n };\n }\n },\n\n // When the component experiences an error\n\n onError: {\n type: 'function',\n required: false,\n promisify: true,\n sendToChild: true,\n once: true,\n def() : (() => void) {\n return function onError(err : mixed) {\n setTimeout(() => {\n throw err;\n });\n };\n }\n }\n };\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { on, send } from 'post-robot/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getDomain, getDomainFromUrl, matchDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { BaseComponent } from '../base';\nimport { ChildComponent } from '../child';\nimport { ParentComponent, type RenderOptionsType } from '../parent';\nimport { DelegateComponent, type DelegateOptionsType } from '../delegate';\nimport { isZoidComponentWindow, getComponentMeta } from '../window';\nimport { CONTEXT_TYPES, POST_MESSAGE, WILDCARD } from '../../constants';\nimport { angular, angular2, glimmer, react, vue, script } from '../../drivers/index';\nimport { info, error, warn, setLogLevel, memoize } from '../../lib';\nimport type { EnvStringRegExp, CssDimensionsType, StringMatcherType, ElementRefType, EnvString } from '../../types';\n\nimport { validate } from './validate';\nimport { defaultContainerTemplate, defaultPrerenderTemplate } from './templates';\nimport { getInternalProps, type UserPropsDefinitionType, type BuiltInPropsDefinitionType, type PropsType, type BuiltInPropsType, type MixedPropDefinitionType } from './props';\n\nconst drivers = { angular, angular2, glimmer, react, vue, script };\n\n/* Component\n ---------\n\n This is the spec for the component. The idea is, when I call zoid.create(), it will create a new instance\n of Component with the blueprint needed to set up ParentComponents and ChildComponents.\n\n This is the one portion of code which is required by -- and shared to -- both the parent and child windows, and\n contains all of the configuration needed for them to set themselves up.\n*/\n\nexport type ComponentOptionsType

= {\n\n tag : string,\n\n url? : EnvString,\n buildUrl? : (BuiltInPropsType & P) => string | ZalgoPromise,\n\n domain? : EnvStringRegExp,\n bridgeUrl? : EnvString,\n bridgeDomain? : EnvString,\n\n props? : UserPropsDefinitionType

,\n\n dimensions? : CssDimensionsType,\n scrolling? : boolean,\n autoResize? : boolean | { width? : boolean, height? : boolean, element? : string },\n listenForResize? : boolean,\n\n defaultLogLevel? : string,\n allowedParentDomains? : StringMatcherType,\n\n version? : string,\n defaultEnv? : string,\n\n contexts? : { iframe? : boolean, popup? : boolean },\n defaultContext? : string,\n\n containerTemplate? : (RenderOptionsType) => HTMLElement,\n prerenderTemplate? : (RenderOptionsType) => HTMLElement,\n\n validate? : (Component

, UserPropsDefinitionType

) => void,\n\n unsafeRenderTo? : boolean\n};\n\nexport type ComponentDriverType = {\n global : () => ?T,\n register : (Component

, T) => mixed\n};\n\nexport class Component

extends BaseComponent

{\n\n name : string\n looseProps : boolean\n\n tag : string\n url : EnvString\n\n domain : EnvStringRegExp\n bridgeUrl : EnvString\n bridgeDomain : EnvString\n\n props : UserPropsDefinitionType

\n builtinProps : BuiltInPropsDefinitionType

\n\n dimensions : CssDimensionsType\n scrolling : boolean\n autoResize : ?(boolean | { width? : boolean, height? : boolean, element? : string })\n listenForResize : ?boolean\n\n defaultLogLevel : string\n allowedParentDomains : StringMatcherType\n\n version : string\n defaultEnv : string\n buildUrl : (BuiltInPropsType & P) => string | ZalgoPromise\n\n contexts : { iframe? : boolean, popup? : boolean }\n defaultContext : string\n\n containerTemplate : (RenderOptionsType) => HTMLElement\n prerenderTemplate : (RenderOptionsType) => HTMLElement\n\n validate : (Component

, (PropsType & P)) => void\n\n unsafeRenderTo : ?boolean\n\n driverCache : { [string] : mixed }\n\n xchild : ?ChildComponent

\n xprops : ?P\n\n constructor(options : ComponentOptionsType

) {\n super();\n validate(options);\n\n // The tag name of the component. Used by some drivers (e.g. angular) to turn the component into an html element,\n // e.g. \n\n this.addProp(options, 'tag');\n\n this.addProp(options, 'defaultLogLevel', 'info');\n\n this.addProp(options, 'allowedParentDomains', WILDCARD);\n\n // initially set log level to default log level configured when creating component\n setLogLevel(this.defaultLogLevel);\n\n if (Component.components[this.tag]) {\n throw new Error(`Can not register multiple components with the same tag`);\n }\n\n // Name of the component, used for logging. Auto-generated from the tag name by default.\n\n this.addProp(options, 'name', this.tag.replace(/-/g, '_'));\n\n // A json based spec describing what kind of props the component accepts. This is used to validate any props before\n // they are passed down to the child.\n\n this.builtinProps = getInternalProps();\n this.props = options.props || {};\n\n if (!options.props) {\n this.looseProps = true;\n }\n\n // The dimensions of the component, e.g. { width: '300px', height: '150px' }\n\n this.addProp(options, 'dimensions');\n this.addProp(options, 'scrolling');\n this.addProp(options, 'listenForResize');\n\n this.addProp(options, 'version', 'latest');\n\n // The default environment we should render to if none is specified in the parent\n\n this.addProp(options, 'defaultEnv');\n\n // A mapping of env->url, used to determine which url to load for which env\n\n this.addProp(options, 'buildUrl');\n\n this.addProp(options, 'url');\n this.addProp(options, 'domain');\n\n this.addProp(options, 'bridgeUrl');\n this.addProp(options, 'bridgeDomain');\n\n this.addProp(options, 'attributes', {});\n\n // A url to use by default to render the component, if not using envs\n\n\n // The allowed contexts. For example { iframe: true, popup: false }\n\n this.addProp(options, 'contexts', { iframe: true, popup: false });\n\n // The default context to render to\n\n this.addProp(options, 'defaultContext');\n\n // Auto Resize option\n\n this.addProp(options, 'autoResize', false);\n\n // Templates and styles for the parent page and the initial rendering of the component\n\n this.addProp(options, 'containerTemplate', defaultContainerTemplate);\n this.addProp(options, 'prerenderTemplate', defaultPrerenderTemplate);\n\n // Validation\n\n this.addProp(options, 'validate');\n\n // Security\n\n this.addProp(options, 'unsafeRenderTo', false);\n\n // A mapping of tag->component so we can reference components by string tag name\n\n Component.components[this.tag] = this;\n\n // Register all of the drivers for instantiating components. The model used is -- there's a standard javascript\n // way of rendering a component, then each other technology (e.g. react) needs to hook into that interface.\n // This makes us a little more pluggable and loosely coupled.\n this.registerDrivers();\n this.registerChild();\n this.listenDelegate();\n }\n\n @memoize\n getPropNames() : Array {\n let props = Object.keys(this.props);\n\n for (let key of Object.keys(this.builtinProps)) {\n if (props.indexOf(key) === -1) {\n props.push(key);\n }\n }\n\n return props;\n }\n\n // $FlowFixMe\n getProp(name : string) : MixedPropDefinitionType

{\n // $FlowFixMe\n return this.props[name] || this.builtinProps[name];\n }\n\n registerDrivers() {\n this.driverCache = {};\n\n for (let driverName of Object.keys(drivers)) {\n if (driverName.indexOf('_') === 0) {\n continue;\n }\n\n let driver = drivers[driverName];\n let glob = driver.global();\n if (glob) {\n this.driver(driverName, glob);\n }\n }\n }\n\n driver(name : string, dep : mixed) : mixed {\n if (!drivers[name]) {\n throw new Error(`Could not find driver for framework: ${ name }`);\n }\n\n if (!this.driverCache[name]) {\n this.driverCache[name] = drivers[name].register(this, dep);\n }\n\n return this.driverCache[name];\n }\n\n registerChild() : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n if (this.isChild()) {\n return new ChildComponent(this);\n }\n });\n }\n\n listenDelegate() {\n on(`${ POST_MESSAGE.ALLOW_DELEGATE }_${ this.name }`, () => {\n return true;\n });\n\n on(`${ POST_MESSAGE.DELEGATE }_${ this.name }`, ({ source, origin, data }) => {\n\n let domain = this.getDomain(null, data.env || this.defaultEnv);\n\n if (!domain) {\n throw new Error(`Could not determine domain to allow remote render`);\n }\n\n if (!matchDomain(domain, origin)) {\n throw new Error(`Can not render from ${ origin } - expected ${ domain.toString() }`);\n }\n\n let delegate = this.delegate(source, data.options);\n\n return {\n overrides: delegate.getOverrides(data.context),\n destroy: () => delegate.destroy()\n };\n });\n }\n\n canRenderTo(win : CrossDomainWindowType) : ZalgoPromise {\n return send(win, `${ POST_MESSAGE.ALLOW_DELEGATE }_${ this.name }`).then(({ data }) => {\n return data;\n }).catch(() => {\n return false;\n });\n }\n\n\n getValidDomain(url : ?string) : ?(string | RegExp) {\n\n if (!url) {\n return;\n }\n\n let domain = getDomainFromUrl(url);\n\n if (typeof this.domain === 'string' && domain === this.domain) {\n return domain;\n }\n\n let domains = this.domain;\n\n if (domains && typeof domains === 'object' && !(domains instanceof RegExp)) {\n for (let env of Object.keys(domains)) {\n\n if (env === 'test') {\n continue;\n }\n\n if (domain === domains[env]) {\n return domain;\n }\n }\n }\n }\n\n\n getDomain(url : ?string, env : string) : ?(string | RegExp) {\n\n let domain = this.getForEnv(this.domain, env);\n\n if (domain) {\n return domain;\n }\n\n domain = this.getValidDomain(url);\n\n if (domain) {\n return domain;\n }\n\n // $FlowFixMe\n let envUrl = this.getForEnv(this.url, env);\n\n if (envUrl) {\n // $FlowFixMe\n return getDomainFromUrl(envUrl);\n }\n\n if (url) {\n return getDomainFromUrl(url);\n }\n }\n\n getBridgeUrl(env : string) : ?string {\n // $FlowFixMe\n return this.getForEnv(this.bridgeUrl, env);\n }\n\n getForEnv(item : (string | RegExp) | { [string] : (string | RegExp) }, env : ?string) : ?(string | RegExp) {\n\n if (!item) {\n return;\n }\n\n if (typeof item === 'string' || item instanceof RegExp) {\n return item;\n }\n\n if (!env) {\n env = this.defaultEnv;\n }\n\n if (!env) {\n return;\n }\n\n if (env && typeof item === 'object' && item[env]) {\n return item[env];\n }\n }\n\n getBridgeDomain(env : string) : ?string {\n\n // $FlowFixMe\n let bridgeDomain = this.getForEnv(this.bridgeDomain, env);\n\n if (bridgeDomain) {\n // $FlowFixMe\n return bridgeDomain;\n }\n\n let bridgeUrl = this.getBridgeUrl(env);\n\n if (bridgeUrl) {\n return getDomainFromUrl(bridgeUrl);\n }\n }\n\n getUrl(env : string, props : BuiltInPropsType & P) : (string | ZalgoPromise) {\n\n // $FlowFixMe\n let url = this.getForEnv(this.url, env);\n\n if (url) {\n // $FlowFixMe\n return url;\n }\n\n if (this.buildUrl) {\n return this.buildUrl(props);\n }\n\n throw new Error(`Unable to get url`);\n }\n\n isZoidComponent() : boolean {\n return isZoidComponentWindow();\n }\n\n isChild() : boolean {\n if (!isZoidComponentWindow()) {\n return false;\n }\n\n const { tag, childDomain } = getComponentMeta();\n\n if (childDomain && childDomain !== getDomain()) {\n return false;\n }\n\n if (tag !== this.tag) {\n return false;\n }\n\n return true;\n }\n\n\n createError(message : string, tag : ?string) : Error {\n return new Error(`[${ tag || this.tag }] ${ message }`);\n }\n\n\n /* Init\n ----\n\n Shortcut to instantiate a component on a parent page, with props\n */\n\n init(props : (PropsType & P), context : ?string, element : ElementRefType) : ParentComponent

{\n return new ParentComponent(this, this.getRenderContext(context, element), { props });\n }\n\n\n delegate(source : CrossDomainWindowType, options : DelegateOptionsType) : DelegateComponent

{\n return new DelegateComponent(this, source, options);\n }\n\n validateRenderContext(context : ?string, element : ?ElementRefType) {\n if (context && !this.contexts[context]) {\n throw new Error(`[${ this.tag }] Can not render to ${ context }`);\n }\n\n if (!element && context === CONTEXT_TYPES.IFRAME) {\n throw new Error(`[${ this.tag }] Context type ${ CONTEXT_TYPES.IFRAME } requires an element selector`);\n }\n }\n\n getDefaultContext() : string {\n if (this.defaultContext) {\n return this.defaultContext;\n } else if (this.contexts[CONTEXT_TYPES.IFRAME]) {\n return CONTEXT_TYPES.IFRAME;\n } else if (this.contexts[CONTEXT_TYPES.POPUP]) {\n return CONTEXT_TYPES.POPUP;\n }\n\n throw new Error(`Can not determine default context`);\n }\n\n getRenderContext(context : ?string, element : ?ElementRefType) : string {\n context = context || this.getDefaultContext();\n this.validateRenderContext(context, element);\n return context;\n }\n\n\n /* Render\n ------\n\n Shortcut to render a parent component\n */\n\n render(props : (PropsType & P), element : ?ElementRefType) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(null, element), { props }).render(element);\n });\n }\n\n renderIframe(props : (PropsType & P), element : ElementRefType) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(CONTEXT_TYPES.IFRAME, element), { props }).render(element);\n });\n }\n\n renderPopup(props : (PropsType & P)) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(CONTEXT_TYPES.POPUP), { props }).render();\n });\n }\n\n renderTo(win : CrossDomainWindowType, props : (PropsType & P), element : ?ElementRefType) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(null, element), { props }).renderTo(win, element);\n });\n }\n\n renderIframeTo(win : CrossDomainWindowType, props : (PropsType & P), element : ElementRefType) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(CONTEXT_TYPES.IFRAME, element), { props }).renderTo(win, element);\n });\n }\n\n renderPopupTo(win : CrossDomainWindowType, props : (PropsType & P)) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(CONTEXT_TYPES.POPUP), { props }).renderTo(win);\n });\n }\n\n prerender(props : (PropsType & P), element : ElementRefType) : { render : ((PropsType & P), ElementRefType) => ZalgoPromise>, renderTo : (CrossDomainWindowType, (PropsType & P), ElementRefType) => ZalgoPromise> } {\n let instance = new ParentComponent(this, this.getRenderContext(null, element), { props });\n instance.prefetch();\n\n return {\n render(innerProps : (PropsType & P), innerElement : ElementRefType) : ZalgoPromise> {\n if (innerProps) {\n instance.updateProps(innerProps);\n }\n\n return instance.render(innerElement);\n },\n\n renderTo(win : CrossDomainWindowType, innerProps : (PropsType & P), innerElement : ElementRefType) : ZalgoPromise> {\n if (innerProps) {\n instance.updateProps(innerProps);\n }\n\n return instance.renderTo(win, innerElement);\n },\n\n get html() : ?ZalgoPromise {\n return instance.html;\n },\n\n set html(value) {\n instance.html = value;\n }\n };\n }\n\n /* Log\n ---\n\n Log an event using the component name\n */\n\n log(event : string, payload : { [ string ] : string } = {}) {\n info(this.name, event, payload);\n }\n\n\n /* Log Warning\n -----------\n\n Log a warning\n */\n\n logWarning(event : string, payload : { [ string ] : string }) {\n warn(this.name, event, payload);\n }\n\n\n /* Log Error\n ---------\n\n Log an error\n */\n\n logError(event : string, payload : { [ string ] : string }) {\n error(this.name, event, payload);\n }\n\n static components : { [string] : Component<*> } = {}\n\n static getByTag(tag : string) : Component {\n return Component.components[tag];\n }\n}\n","/* @flow */\n\nexport * from './component';\nexport * from './parent';\nexport * from './child';\n","/* @flow */\n\nimport { type ZalgoPromise } from 'zalgo-promise/src';\n// eslint-disable-next-line import/no-namespace\nimport * as _postRobot from 'post-robot/src';\n\nimport { Component, type ComponentOptionsType } from './component';\nimport { ParentComponent } from './component/parent';\n// eslint-disable-next-line import/no-namespace\nimport * as _CONSTANTS from './constants';\n\nexport function create

(options : ComponentOptionsType

) : Component

{\n return new Component(options);\n}\n\nexport function getByTag

(tag : string) : Component

{\n return Component.getByTag(tag);\n}\n\nexport { getCurrentScriptDir } from './lib';\n\nexport function destroyAll() : ZalgoPromise {\n return ParentComponent.destroyAll();\n}\nexport let postRobot = _postRobot;\n\nexport * from './error';\n\nexport const CONSTANTS = _CONSTANTS;\n\nexport type ZoidComponent

= Component

;\n","/* @flow */\n\n// eslint-disable-next-line import/no-namespace\nimport * as INTERFACE from './interface';\n\nexport * from './interface';\nexport default INTERFACE;\n","/* @flow */\n\nimport {\n getOpener,\n getTop\n} from 'cross-domain-utils/src';\n\nexport function getUserAgent() : string {\n return window.navigator.mockUserAgent || window.navigator.userAgent;\n}\n\nexport function isDevice() : boolean {\n const userAgent = getUserAgent();\n if (userAgent.match(/Android|webOS|iPhone|iPad|iPod|bada|Symbian|Palm|CriOS|BlackBerry|IEMobile|WindowsMobile|Opera Mini/i)) {\n return true;\n }\n\n return false;\n}\n\nexport function isInsidePopup() : boolean {\n // Checks to see if the top-most window is a pop-up\n return Boolean(getOpener(getTop(window) || window));\n}\n\nexport function isStandAlone() : boolean {\n // Chrome interprets pop-up windows as standalone windows\n return !isInsidePopup() && (window.navigator.standalone === true || window.matchMedia('(display-mode: standalone)').matches);\n}\n\nexport function isFacebookWebView(ua? : string = getUserAgent()) : boolean {\n return (ua.indexOf('FBAN') !== -1) || (ua.indexOf('FBAV') !== -1);\n}\n\nexport function isFirefoxIOS(ua? : string = getUserAgent()) : boolean {\n return (/FxiOS/i).test(ua);\n}\n\nexport function isEdgeIOS(ua? : string = getUserAgent()) : boolean {\n return (/EdgiOS/i).test(ua);\n}\n\nexport function isOperaMini(ua? : string = getUserAgent()) : boolean {\n return ua.indexOf('Opera Mini') > -1;\n}\n\nexport function isAndroid(ua? : string = getUserAgent()) : boolean {\n return (/Android/).test(ua);\n}\n\nexport function isIos(ua? : string = getUserAgent()) : boolean {\n return (/iPhone|iPod|iPad/).test(ua);\n}\n\nexport function isGoogleSearchApp(ua? : string = getUserAgent()) : boolean {\n return (/\\bGSA\\b/).test(ua);\n}\n\nexport function isQQBrowser(ua? : string = getUserAgent()) : boolean {\n return (/QQBrowser/).test(ua);\n}\n\nexport function isIosWebview(ua? : string = getUserAgent()) : boolean {\n if (isIos(ua)) {\n if (isGoogleSearchApp(ua)) {\n return true;\n }\n return (/.+AppleWebKit(?!.*Safari)/).test(ua);\n }\n return false;\n}\n\nexport function isAndroidWebview(ua? : string = getUserAgent()) : boolean {\n if (isAndroid(ua)) {\n return (/Version\\/[\\d.]+/).test(ua) && !isOperaMini(ua);\n }\n return false;\n}\n\nexport function isWebView() : boolean {\n return isFacebookWebView() ||\n isIosWebview() ||\n isAndroidWebview();\n}\n\nexport function isIE() : boolean {\n\n if (window.document.documentMode) {\n return true;\n }\n\n if (window.navigator && typeof window.navigator.userAgent === 'string') {\n if ((/Edge|MSIE/i).test(window.navigator.userAgent)) {\n return true;\n }\n }\n\n return false;\n}\n\n\nexport function isIE11() : boolean {\n if (!isIE()) {\n return false;\n }\n\n if (window.navigator && typeof window.navigator.userAgent === 'string') {\n if ((/MSIE 11\\.0/i).test(window.navigator.userAgent)) {\n return true;\n }\n\n if ((/Trident/i).test(window.navigator.userAgent) && (/rv:11\\.0/i).test(window.navigator.userAgent)) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function isIECompHeader() : boolean {\n const mHttp = window.document.querySelector('meta[http-equiv=\"X-UA-Compatible\"]');\n const mContent = window.document.querySelector('meta[content=\"IE=edge\"]');\n if (mHttp && mContent) {\n return true;\n }\n return false;\n}\n\nexport function isElectron() : boolean {\n const userAgent = getUserAgent();\n // here we want a case-insensitive full word boundary\n return (/\\belectron\\b/i).test(userAgent);\n}\n\nexport function isIEIntranet() : boolean {\n if (!isIE11()) {\n return false;\n }\n\n // This status check only works for older versions of IE with document.documentMode set\n\n if (window.document.documentMode) {\n try {\n const status = window.status;\n\n window.status = 'testIntranetMode';\n\n if (window.status === 'testIntranetMode') {\n window.status = status;\n\n return true;\n }\n\n return false;\n\n } catch (err) {\n\n return false;\n }\n }\n\n return false;\n}\n\nexport function isMacOsCna() : boolean {\n const userAgent = getUserAgent();\n return (/Macintosh.*AppleWebKit(?!.*Safari)/i).test(userAgent);\n}\n\nexport function supportsPopups(ua? : string = getUserAgent()) : boolean {\n return !(isIosWebview(ua) || isAndroidWebview(ua) || isOperaMini(ua) ||\n isFirefoxIOS(ua) || isEdgeIOS(ua) || isFacebookWebView(ua) || isQQBrowser(ua) || isElectron() || isMacOsCna() || isStandAlone());\n}\n","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","/* @flow */\n\nimport { type ZalgoPromise } from 'zalgo-promise/src';\nimport { getParent, isWindowClosed, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONSTANTS } from '../conf';\nimport { noop } from '../lib';\nimport { global } from '../global';\n\n/*\n HERE BE DRAGONS\n\n Warning: this file may look weird. Why save the tunnel window in an Object\n by ID, then look it up later, rather than just using the reference from the closure scope?\n\n The reason is, that ends up meaning the garbage collector can never get its hands\n on a closed window, since our closure has continued access to it -- and post-robot\n has no good way to know whether to clean up the function with the closure scope.\n\n If you're editing this file, be sure to run significant memory / GC tests afterwards.\n*/\n\nglobal.tunnelWindows = global.tunnelWindows || {};\nglobal.tunnelWindowId = 0;\n\nfunction deleteTunnelWindow(id) {\n\n try {\n if (global.tunnelWindows[id]) {\n delete global.tunnelWindows[id].source;\n }\n } catch (err) {\n // pass\n }\n\n delete global.tunnelWindows[id];\n}\n\nfunction cleanTunnelWindows() {\n let tunnelWindows = global.tunnelWindows;\n\n for (let key of Object.keys(tunnelWindows)) {\n let tunnelWindow = tunnelWindows[key];\n\n try {\n noop(tunnelWindow.source);\n } catch (err) {\n deleteTunnelWindow(key);\n continue;\n }\n\n if (isWindowClosed(tunnelWindow.source)) {\n deleteTunnelWindow(key);\n }\n }\n}\n\ntype TunnelWindowDataType = {\n name : string,\n source : CrossDomainWindowType,\n canary : () => void,\n sendMessage : (message : string) => void\n};\n\nfunction addTunnelWindow({ name, source, canary, sendMessage } : TunnelWindowDataType) : number {\n cleanTunnelWindows();\n global.tunnelWindowId += 1;\n global.tunnelWindows[global.tunnelWindowId] = { name, source, canary, sendMessage };\n return global.tunnelWindowId;\n}\n\nfunction getTunnelWindow(id : number) : TunnelWindowDataType {\n return global.tunnelWindows[id];\n}\n\nglobal.openTunnelToParent = function openTunnelToParent({ name, source, canary, sendMessage } : TunnelWindowDataType) : ZalgoPromise<{ source : CrossDomainWindowType, origin : string, data : Object }> {\n\n let parentWindow = getParent(window);\n\n if (!parentWindow) {\n throw new Error(`No parent window found to open tunnel to`);\n }\n\n let id = addTunnelWindow({ name, source, canary, sendMessage });\n\n return global.send(parentWindow, CONSTANTS.POST_MESSAGE_NAMES.OPEN_TUNNEL, {\n\n name,\n\n sendMessage() {\n\n let tunnelWindow = getTunnelWindow(id);\n\n try {\n // IE gets antsy if you try to even reference a closed window\n noop(tunnelWindow && tunnelWindow.source);\n } catch (err) {\n deleteTunnelWindow(id);\n return;\n }\n\n if (!tunnelWindow || !tunnelWindow.source || isWindowClosed(tunnelWindow.source)) {\n return;\n }\n\n try {\n tunnelWindow.canary();\n } catch (err) {\n return;\n }\n\n tunnelWindow.sendMessage.apply(this, arguments);\n }\n\n }, { domain: CONSTANTS.WILDCARD });\n};\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getDomain, isSameDomain, isOpener, isSameTopWindow, matchDomain, getUserAgent, getDomainFromUrl, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONFIG, CONSTANTS } from '../conf';\nimport { global } from '../global';\n\nexport function needsBridgeForBrowser() : boolean {\n\n if (getUserAgent(window).match(/MSIE|trident|edge\\/12|edge\\/13/i)) {\n return true;\n }\n\n if (!CONFIG.ALLOW_POSTMESSAGE_POPUP) {\n return true;\n }\n\n return false;\n}\n\nexport function needsBridgeForWin(win : CrossDomainWindowType) : boolean {\n\n if (!isSameTopWindow(window, win)) {\n return true;\n }\n\n return false;\n}\n\nexport function needsBridgeForDomain(domain : ?string, win : ?CrossDomainWindowType) : boolean {\n\n if (domain) {\n if (getDomain() !== getDomainFromUrl(domain)) {\n return true;\n }\n } else if (win) {\n if (!isSameDomain(win)) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function needsBridge({ win, domain } : { win? : CrossDomainWindowType, domain? : string }) : boolean {\n\n if (!needsBridgeForBrowser()) {\n return false;\n }\n\n if (domain && !needsBridgeForDomain(domain, win)) {\n return false;\n }\n\n if (win && !needsBridgeForWin(win)) {\n return false;\n }\n\n return true;\n}\n\nexport function getBridgeName(domain : string) : string {\n\n domain = domain || getDomainFromUrl(domain);\n\n let sanitizedDomain = domain.replace(/[^a-zA-Z0-9]+/g, '_');\n\n let id = `${ CONSTANTS.BRIDGE_NAME_PREFIX }_${ sanitizedDomain }`;\n\n return id;\n}\n\nexport function isBridge() : boolean {\n return Boolean(window.name && window.name === getBridgeName(getDomain()));\n}\n\nexport let documentBodyReady = new ZalgoPromise(resolve => {\n\n if (window.document && window.document.body) {\n return resolve(window.document.body);\n }\n\n let interval = setInterval(() => {\n if (window.document && window.document.body) {\n clearInterval(interval);\n return resolve(window.document.body);\n }\n }, 10);\n});\n\nglobal.remoteWindows = global.remoteWindows || new WeakMap();\n\nexport function registerRemoteWindow(win : CrossDomainWindowType) {\n global.remoteWindows.set(win, { sendMessagePromise: new ZalgoPromise() });\n}\n\nexport function findRemoteWindow(win : CrossDomainWindowType) : { sendMessagePromise : ZalgoPromise<(remoteWin : CrossDomainWindowType, message : string, remoteDomain : string) => void> } {\n return global.remoteWindows.get(win);\n}\n\nexport function registerRemoteSendMessage(win : CrossDomainWindowType, domain : string, sendMessage : (message : string) => void) {\n\n let remoteWindow = findRemoteWindow(win);\n\n if (!remoteWindow) {\n throw new Error(`Window not found to register sendMessage to`);\n }\n\n let sendMessageWrapper = (remoteWin : CrossDomainWindowType, message : string, remoteDomain : string) => {\n\n if (remoteWin !== win) {\n throw new Error(`Remote window does not match window`);\n }\n\n if (!matchDomain(remoteDomain, domain)) {\n throw new Error(`Remote domain ${ remoteDomain } does not match domain ${ domain }`);\n }\n\n sendMessage(message);\n };\n\n remoteWindow.sendMessagePromise.resolve(sendMessageWrapper);\n remoteWindow.sendMessagePromise = ZalgoPromise.resolve(sendMessageWrapper);\n}\n\nexport function rejectRemoteSendMessage(win : CrossDomainWindowType, err : Error) {\n\n let remoteWindow = findRemoteWindow(win);\n\n if (!remoteWindow) {\n throw new Error(`Window not found on which to reject sendMessage`);\n }\n\n remoteWindow.sendMessagePromise.asyncReject(err);\n}\n\nexport function sendBridgeMessage(win : CrossDomainWindowType, message : string, domain : string) : ZalgoPromise {\n\n let messagingChild = isOpener(window, win);\n let messagingParent = isOpener(win, window);\n\n if (!messagingChild && !messagingParent) {\n throw new Error(`Can only send messages to and from parent and popup windows`);\n }\n\n let remoteWindow = findRemoteWindow(win);\n\n if (!remoteWindow) {\n throw new Error(`Window not found to send message to`);\n }\n\n return remoteWindow.sendMessagePromise.then(sendMessage => {\n return sendMessage(win, message, domain);\n });\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { isSameDomain, getOpener, getFrames, getDomain, getFrameByName, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONSTANTS } from '../conf';\nimport { weakMapMemoize, noop } from '../lib';\nimport { global } from '../global';\n\nimport { needsBridge, registerRemoteWindow, rejectRemoteSendMessage, registerRemoteSendMessage, getBridgeName } from './common';\n\nlet awaitRemoteBridgeForWindow = weakMapMemoize((win : CrossDomainWindowType) : ZalgoPromise => {\n return ZalgoPromise.try(() => {\n for (let frame of getFrames(win)) {\n try {\n // $FlowFixMe\n if (frame && frame !== window && isSameDomain(frame) && frame[CONSTANTS.WINDOW_PROPS.POSTROBOT]) {\n return frame;\n }\n\n } catch (err) {\n continue;\n }\n }\n\n try {\n let frame = getFrameByName(win, getBridgeName(getDomain()));\n\n if (!frame) {\n return;\n }\n\n // $FlowFixMe\n if (isSameDomain(frame) && frame[CONSTANTS.WINDOW_PROPS.POSTROBOT]) {\n return frame;\n }\n\n return new ZalgoPromise(resolve => {\n\n let interval;\n let timeout;\n\n interval = setInterval(() => {\n // $FlowFixMe\n if (frame && isSameDomain(frame) && frame[CONSTANTS.WINDOW_PROPS.POSTROBOT]) {\n clearInterval(interval);\n clearTimeout(timeout);\n return resolve(frame);\n }\n }, 100);\n\n timeout = setTimeout(() => {\n clearInterval(interval);\n return resolve();\n }, 2000);\n });\n\n } catch (err) {\n // pass\n }\n });\n});\n\nexport function openTunnelToOpener() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n const opener = getOpener(window);\n\n if (!opener) {\n return;\n }\n\n if (!needsBridge({ win: opener })) {\n return;\n }\n\n registerRemoteWindow(opener);\n\n return awaitRemoteBridgeForWindow(opener).then(bridge => {\n\n if (!bridge) {\n return rejectRemoteSendMessage(opener, new Error(`Can not register with opener: no bridge found in opener`));\n }\n\n if (!window.name) {\n return rejectRemoteSendMessage(opener, new Error(`Can not register with opener: window does not have a name`));\n }\n\n return bridge[CONSTANTS.WINDOW_PROPS.POSTROBOT].openTunnelToParent({\n\n name: window.name,\n\n source: window,\n\n canary() {\n // pass\n },\n\n sendMessage(message) {\n\n try {\n noop(window);\n } catch (err) {\n return;\n }\n\n if (!window || window.closed) {\n return;\n }\n\n try {\n global.receiveMessage({\n data: message,\n origin: this.origin,\n source: this.source\n });\n } catch (err) {\n ZalgoPromise.reject(err);\n }\n }\n\n }).then(({ source, origin, data }) => {\n\n if (source !== opener) {\n throw new Error(`Source does not match opener`);\n }\n\n registerRemoteSendMessage(source, origin, data.sendMessage);\n\n }).catch(err => {\n\n rejectRemoteSendMessage(opener, err);\n throw err;\n });\n });\n });\n}\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getDomain, getFrameByName, isWindowClosed, getDomainFromUrl, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONFIG, CONSTANTS } from '../conf';\nimport { onChildWindowReady } from '../lib';\nimport { global } from '../global';\n\nimport { getBridgeName, documentBodyReady, registerRemoteSendMessage, registerRemoteWindow } from './common';\n\nglobal.bridges = global.bridges || {};\nglobal.bridgeFrames = global.bridgeFrames || {};\n\nglobal.popupWindowsByWin = global.popupWindowsByWin || new WeakMap();\nglobal.popupWindowsByName = global.popupWindowsByName || {};\n\nfunction listenForRegister(source, domain) {\n global.on(CONSTANTS.POST_MESSAGE_NAMES.OPEN_TUNNEL, { window: source, domain }, ({ origin, data }) => {\n\n if (origin !== domain) {\n throw new Error(`Domain ${ domain } does not match origin ${ origin }`);\n }\n\n if (!data.name) {\n throw new Error(`Register window expected to be passed window name`);\n }\n\n if (!data.sendMessage) {\n throw new Error(`Register window expected to be passed sendMessage method`);\n }\n\n if (!global.popupWindowsByName[data.name]) {\n throw new Error(`Window with name ${ data.name } does not exist, or was not opened by this window`);\n }\n\n if (!global.popupWindowsByName[data.name].domain) {\n throw new Error(`We do not have a registered domain for window ${ data.name }`);\n }\n\n if (global.popupWindowsByName[data.name].domain !== origin) {\n throw new Error(`Message origin ${ origin } does not matched registered window origin ${ global.popupWindowsByName[data.name].domain }`);\n }\n\n registerRemoteSendMessage(global.popupWindowsByName[data.name].win, domain, data.sendMessage);\n\n return {\n sendMessage(message) {\n\n if (!window || window.closed) {\n return;\n }\n\n let winDetails = global.popupWindowsByName[data.name];\n\n if (!winDetails) {\n return;\n }\n\n try {\n global.receiveMessage({\n data: message,\n origin: winDetails.domain,\n source: winDetails.win\n });\n } catch (err) {\n ZalgoPromise.reject(err);\n }\n }\n };\n });\n}\n\nfunction openBridgeFrame(name : string, url : string) : HTMLIFrameElement {\n\n let iframe = document.createElement(`iframe`);\n\n iframe.setAttribute(`name`, name);\n iframe.setAttribute(`id`, name);\n\n iframe.setAttribute(`style`, `display: none; margin: 0; padding: 0; border: 0px none; overflow: hidden;`);\n iframe.setAttribute(`frameborder`, `0`);\n iframe.setAttribute(`border`, `0`);\n iframe.setAttribute(`scrolling`, `no`);\n iframe.setAttribute(`allowTransparency`, `true`);\n\n iframe.setAttribute(`tabindex`, `-1`);\n iframe.setAttribute(`hidden`, `true`);\n iframe.setAttribute(`title`, ``);\n iframe.setAttribute(`role`, `presentation`);\n\n iframe.src = url;\n\n return iframe;\n}\n\nexport function hasBridge(url : string, domain : string) : boolean {\n domain = domain || getDomainFromUrl(url);\n return Boolean(global.bridges[domain]);\n}\n\nexport function openBridge(url : string, domain : string) : ZalgoPromise {\n\n domain = domain || getDomainFromUrl(url);\n\n if (global.bridges[domain]) {\n return global.bridges[domain];\n }\n\n global.bridges[domain] = ZalgoPromise.try(() => {\n\n if (getDomain() === domain) {\n throw new Error(`Can not open bridge on the same domain as current domain: ${ domain }`);\n }\n\n let name = getBridgeName(domain);\n let frame = getFrameByName(window, name);\n\n if (frame) {\n throw new Error(`Frame with name ${ name } already exists on page`);\n }\n\n let iframe = openBridgeFrame(name, url);\n global.bridgeFrames[domain] = iframe;\n\n return documentBodyReady.then(body => {\n\n body.appendChild(iframe);\n\n let bridge = iframe.contentWindow;\n\n listenForRegister(bridge, domain);\n\n return new ZalgoPromise((resolve, reject) => {\n\n iframe.onload = resolve;\n iframe.onerror = reject;\n\n }).then(() => {\n\n return onChildWindowReady(bridge, CONFIG.BRIDGE_TIMEOUT, `Bridge ${ url }`);\n\n }).then(() => {\n\n return bridge;\n });\n });\n });\n\n return global.bridges[domain];\n}\n\nlet windowOpen = window.open;\n\nwindow.open = function windowOpenWrapper(url : string, name : string, options : string, last : mixed) : mixed {\n\n let domain = url;\n\n if (url && url.indexOf(CONSTANTS.MOCK_PROTOCOL) === 0) {\n [ domain, url ] = url.split('|');\n }\n\n if (domain) {\n domain = getDomainFromUrl(domain);\n }\n\n let win = windowOpen.call(this, url, name, options, last);\n\n if (!win) {\n return win;\n }\n\n if (url) {\n registerRemoteWindow(win);\n }\n\n for (let winName of Object.keys(global.popupWindowsByName)) {\n if (isWindowClosed(global.popupWindowsByName[winName].win)) {\n delete global.popupWindowsByName[winName];\n }\n }\n\n if (name && win) {\n let winOptions = global.popupWindowsByWin.get(win) ||\n global.popupWindowsByName[name] || {};\n\n winOptions.name = winOptions.name || name;\n winOptions.win = winOptions.win || win;\n winOptions.domain = winOptions.domain || domain;\n\n global.popupWindowsByWin.set(win, winOptions);\n global.popupWindowsByName[name] = winOptions;\n }\n\n return win;\n};\n\nexport function linkUrl(win : CrossDomainWindowType, url : string) {\n\n let winOptions = global.popupWindowsByWin.get(win);\n\n if (winOptions) {\n winOptions.domain = getDomainFromUrl(url);\n registerRemoteWindow(win);\n }\n}\n\nexport function destroyBridges() {\n for (let domain of Object.keys(global.bridgeFrames)) {\n let frame = global.bridgeFrames[domain];\n if (frame.parentNode) {\n frame.parentNode.removeChild(frame);\n }\n }\n global.bridgeFrames = {};\n global.bridges = {};\n}\n","/* @flow */\n\n// eslint-disable-next-line import/no-unassigned-import\nimport './bridge';\n\nexport * from './child';\nexport * from './common';\nexport * from './parent';\n","/* @flow */\n\nimport { info } from 'beaver-logger/client';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport type { CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { LANG_TO_DEFAULT_COUNTRY, LOCALE } from '../constants';\nimport type { LocaleType } from '../types';\nimport { config } from '../config';\n\nimport { memoize } from './util';\nimport { isDevice } from './device';\n\nfunction isDocumentReady() : boolean {\n return Boolean(document.body) && document.readyState === 'complete';\n}\n\nexport const documentReady : ZalgoPromise = new ZalgoPromise(resolve => {\n\n if (isDocumentReady()) {\n return resolve();\n }\n\n const interval = setInterval(() => {\n if (isDocumentReady()) {\n clearInterval(interval);\n return resolve();\n }\n }, 10);\n});\n\nexport const documentBody : ZalgoPromise = documentReady.then(() => {\n if (document.body) {\n return document.body;\n }\n\n throw new Error('Document ready but document.body not present');\n});\n\n\nexport function loadScript(src : string, timeout : number = 0, attrs : Object = {}) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n const script = document.createElement('script');\n\n script.addEventListener('load', () => {\n resolve();\n });\n\n // For Internet explorer 8 support\n script.onreadystatechange = function scriptOnReadyStateChange() {\n if (this.readyState === 'complete' || this.readyState === 'loaded') {\n resolve();\n }\n };\n\n const scriptLoadError = new Error('script_loading_error');\n\n script.addEventListener('error', () => {\n return reject(scriptLoadError);\n });\n\n if (timeout) {\n setTimeout(() => {\n return reject(new Error('script_loading_timed_out'));\n }, timeout);\n }\n\n for (const attr of Object.keys(attrs)) {\n script.setAttribute(attr, attrs[attr]);\n }\n\n script.setAttribute('src', src);\n\n const head = document.getElementsByTagName('head')[0];\n\n head.appendChild(script);\n });\n}\n\n\nexport function isNodeList(nodes : mixed) : boolean {\n\n const result = Object.prototype.toString.call(nodes);\n\n if (result === '[object HTMLCollection]' || result === '[object NodeList]') {\n return true;\n }\n\n return false;\n}\n\nexport function isElement(item : mixed) : boolean {\n return item instanceof HTMLElement;\n}\n\nexport function getElement(item : mixed) : ?HTMLElement {\n\n if (!item) {\n return;\n }\n\n if (item instanceof HTMLElement) {\n return item;\n }\n\n if (typeof item === 'string') {\n\n if (document.querySelector) {\n const result = document.querySelector(item);\n\n if (result) {\n return result;\n }\n }\n\n return document.getElementById(item);\n }\n}\n\nexport function getElements(collection : $ReadOnlyArray | NodeList | HTMLCollection | HTMLElement | string) : $ReadOnlyArray {\n\n if (!collection) {\n return [];\n }\n\n if (collection instanceof HTMLElement || typeof collection === 'string') {\n const element = getElement(collection);\n if (element) {\n return [ element ];\n }\n return [];\n }\n\n if (Array.isArray(collection) || collection instanceof NodeList || collection instanceof HTMLCollection) {\n const result = [];\n\n for (let i = 0; i < collection.length; i++) {\n const el = getElement(collection[i]);\n if (el) {\n result.push(el);\n }\n }\n\n return result;\n }\n\n return [];\n}\n\nexport function onDocumentReady(method : () => void) : ZalgoPromise {\n return documentReady.then(method);\n}\n\nexport const parseQuery = memoize((queryString : string) : Object => {\n\n const params = {};\n\n if (!queryString) {\n return params;\n }\n\n if (queryString.indexOf('=') === -1) {\n return params;\n }\n\n for (let pair of queryString.split('&')) {\n pair = pair.split('=');\n\n if (pair[0] && pair[1]) {\n params[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n }\n\n return params;\n});\n\n\nexport function getQueryParam(name : string) : string {\n return parseQuery(window.location.search.slice(1))[name];\n}\n\nexport function urlWillRedirectPage(url : string) : boolean {\n\n if (url.indexOf('#') === -1) {\n return true;\n }\n\n if (url.indexOf('#') === 0) {\n return false;\n }\n\n if (url.split('#')[0] === window.location.href.split('#')[0]) {\n return false;\n }\n\n return true;\n}\n\nexport function extendUrl(url : string, params : { [key : string] : string } = {}) : string {\n\n const hasHash = url.indexOf('#') > 0;\n\n let [ serverUrl, hash ] = url.split('#');\n\n if (hash && !serverUrl) {\n [ serverUrl, hash ] = [ `#${ hash }`, '' ];\n }\n\n const [ originalUrl, originalQueryString ] = serverUrl.split('?');\n\n if (originalQueryString) {\n const originalQuery = parseQuery(originalQueryString);\n\n for (const key in originalQuery) {\n if (!params.hasOwnProperty(key)) {\n params[key] = originalQuery[key];\n }\n }\n }\n\n const newQueryString = Object.keys(params).filter(key => key && params[key]).sort().map(key => {\n return `${ encodeURIComponent(key) }=${ encodeURIComponent(params[key]) }`;\n }).join('&');\n\n let newUrl = originalUrl;\n\n if (newQueryString) {\n newUrl = `${ newUrl }?${ newQueryString }`;\n }\n\n if (hasHash) {\n newUrl = `${ newUrl }#${ hash || '' }`;\n }\n\n return newUrl;\n}\n\nexport function redirect(win : CrossDomainWindowType = window, url : string) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n\n info(`redirect`, { url });\n\n setTimeout(() => {\n win.location = url;\n if (!urlWillRedirectPage(url)) {\n resolve();\n }\n }, 1);\n });\n}\n\nexport function hasMetaViewPort() : boolean {\n const meta = document.querySelector('meta[name=viewport]');\n\n if (isDevice() && window.screen.width < 660 && !meta) {\n return false;\n }\n\n return true;\n}\n\nexport function getBrowserLocales() : $ReadOnlyArray {\n const nav = window.navigator;\n\n const locales = nav.languages\n ? Array.prototype.slice.apply(nav.languages)\n : [];\n\n if (nav.language) {\n locales.push(nav.language);\n }\n\n if (nav.userLanguage) {\n locales.push(nav.userLanguage);\n }\n\n return locales;\n}\n\nexport function normalizeLocale(locale : string) : ?LocaleType {\n\n if (locale && locale.match(/^[a-z]{2}[-_][A-Z]{2}$/)) {\n const [ lang, country ] = locale.split(/[-_]/);\n if (LOCALE[country] && LOCALE[country].indexOf(lang) !== -1) {\n return { country, lang };\n }\n }\n}\n\nexport function normalizeLang(lang : string) : ?LocaleType {\n\n if (lang && lang.match(/^[a-z]{2}$/)) {\n if (LANG_TO_DEFAULT_COUNTRY[lang]) {\n return { country: LANG_TO_DEFAULT_COUNTRY[lang], lang };\n }\n }\n}\n\nexport const getBrowserLocale = memoize(() : LocaleType => {\n\n const locales = getBrowserLocales();\n\n for (const locale of locales) {\n let loc = normalizeLocale(locale);\n if (loc) {\n info('better_browser_locale_full');\n return loc;\n }\n\n loc = normalizeLang(locale);\n if (loc) {\n info('better_browser_locale_lang');\n return loc;\n }\n }\n\n return config.defaultLocale;\n});\n\nexport function isElementVisible(el : HTMLElement) : boolean {\n return Boolean(el.offsetWidth || el.offsetHeight || el.getClientRects().length);\n}\n\nexport const enablePerformance = memoize(() : boolean => {\n /* eslint-disable compat/compat */\n return Boolean(\n window.performance &&\n performance.now &&\n performance.timing &&\n performance.timing.connectEnd &&\n performance.timing.navigationStart &&\n (Math.abs(performance.now() - Date.now()) > 1000) &&\n (performance.now() - (performance.timing.connectEnd - performance.timing.navigationStart)) > 0\n );\n /* eslint-enable compat/compat */\n});\n\nexport function getPageRenderTime() : ZalgoPromise {\n return documentReady.then(() => {\n\n if (!enablePerformance()) {\n return;\n }\n\n const timing = window.performance.timing; // eslint-disable-line compat/compat\n\n if (timing.connectEnd && timing.domInteractive) {\n return timing.domInteractive - timing.connectEnd;\n }\n });\n}\n\nexport function getResourceLoadTime(url : string) : ?number {\n\n if (!enablePerformance()) {\n return;\n }\n\n if (!window.performance || typeof window.performance.getEntries !== 'function') { // eslint-disable-line compat/compat\n return;\n }\n\n const entries = window.performance.getEntries(); // eslint-disable-line compat/compat\n\n for (let i = 0; i < entries.length; i++) {\n const entry = entries[i];\n\n if (entry && entry.name === url && entry.duration && entry.duration >= 0 && entry.duration <= 60000) {\n return Math.floor(entry.duration);\n }\n }\n}\n\nexport function htmlEncode(html : string = '') : string {\n return html.toString()\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(/\\//g, '/');\n}\n","/* @flow */\n\nexport function PopupOpenError(message : string) {\n this.message = message;\n}\n\nPopupOpenError.prototype = Object.create(Error.prototype);\n\nexport function IntegrationError(message : string) {\n this.message = message;\n}\n\nIntegrationError.prototype = Object.create(Error.prototype);\n\nexport function RenderError(message : string) {\n this.message = message;\n}\n\nRenderError.prototype = Object.create(Error.prototype);\n","/* @flow */\n\nimport { getParent, isSameDomain } from 'cross-domain-utils/src';\n\nimport { config } from '../config';\n\nimport { supportsPopups } from './device';\n\nexport function allowIframe() : boolean {\n\n if (!supportsPopups()) {\n return true;\n }\n\n const parentWindow = getParent(window);\n if (parentWindow && isSameDomain(parentWindow)) {\n return true;\n }\n\n const parentComponentWindow = window.xchild && window.xchild.getParentComponentWindow();\n if (parentComponentWindow && isSameDomain(parentComponentWindow)) {\n return true;\n }\n\n if (__TEST__) {\n return true;\n }\n\n return false;\n}\n\n\nexport function isPayPalDomain() : boolean {\n return Boolean(`${ window.location.protocol }//${ window.location.host }`.match(config.paypal_domain_regex)) || window.mockDomain === 'mock://www.paypal.com';\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nexport type Braintree = {|\n client : {\n create : Function\n },\n paypalCheckout : {\n create : Function\n }\n|};\n\nexport type BraintreePayPalClient = {|\n createPayment : Function,\n tokenizePayment : Function\n|};\n\nexport function awaitBraintreeClient(braintree : Braintree, auth : string | ZalgoPromise) : ZalgoPromise {\n return ZalgoPromise.resolve(auth).then(authorization => {\n return braintree.client.create({ authorization });\n }).then(client => {\n return braintree.paypalCheckout.create({ client });\n });\n}\n\nconst SUPPORTED_REST_FIELDS = {\n intent: 1,\n transactions: [\n {\n amount: {\n total: 1,\n currency: 1\n }\n }\n ],\n payer: {\n external_selected_funding_instrument_type: 1,\n shipping_address: {\n line1: 1,\n line2: 1,\n city: 1,\n state: 1,\n postal_code: 1,\n country_code: 1,\n phone: 1,\n recipient_name: 1\n }\n },\n application_context: {\n brand_name: 1,\n shipping_preference: 1,\n landing_page: 1\n }\n};\n\nfunction validate(obj, supported, name) {\n\n const supportedKeys = Object.keys(supported);\n\n for (const key of Object.keys(obj)) {\n\n if (supportedKeys.indexOf(key) === -1) {\n throw new Error(`Unsupported REST key for Braintree: ${ name }.${ key }`);\n }\n\n if (typeof obj[key] === 'object') {\n validate(obj[key], supported[key], `${ name }.${ key }`);\n }\n }\n}\n\nexport function mapPaymentToBraintree(payment : Object) : Object {\n validate(payment, SUPPORTED_REST_FIELDS, 'payment');\n\n const btPayment = {};\n\n btPayment.intent = payment.intent || 'sale';\n btPayment.flow = 'checkout';\n btPayment.amount = payment.transactions[0].amount.total;\n btPayment.currency = payment.transactions[0].amount.currency;\n\n if (payment.payer) {\n if (payment.payer.external_selected_funding_instrument_type === 'CREDIT') {\n btPayment.offerCredit = true;\n }\n\n if (payment.payer.shipping_address) {\n btPayment.shippingAddressOverride = {\n line1: payment.payer.shipping_address.line1,\n line2: payment.payer.shipping_address.line2,\n city: payment.payer.shipping_address.city,\n state: payment.payer.shipping_address.state,\n postalCode: payment.payer.shipping_address.postal_code,\n countryCode: payment.payer.shipping_address.country_code,\n phone: payment.payer.shipping_address.phone,\n recipientName: payment.payer.shipping_address.recipient_name\n };\n }\n }\n\n if (payment.application_context) {\n btPayment.displayName = payment.application_context.brand_name;\n btPayment.landingPageType = payment.application_context.landing_page;\n\n if (payment.application_context) {\n if (payment.application_context.shipping_preference === 'NO_SHIPPING') {\n btPayment.enableShippingAddress = false;\n } else if (payment.application_context.shipping_preference === 'GET_FROM_FILE') {\n btPayment.enableShippingAddress = true;\n btPayment.shippingAddressEditable = true;\n } else if (payment.application_context.shipping_preference === 'SET_PROVIDED_ADDRESS') {\n btPayment.enableShippingAddress = true;\n btPayment.shippingAddressEditable = false;\n }\n }\n }\n\n return btPayment;\n}\n","/* @flow */\n\nexport * from './checkout';\nexport * from './braintree';\n// export * from './popupBridge';\n","/* @flow */\n\nexport * from './script';\nexport * from './react';\nexport * from './vue';\nexport * from './angular';\nexport * from './ember';\nexport * from './glimmer';\nexport * from './angular2';\n","/* @flow */\n\nimport { config } from '../config';\nimport { LOG_LEVEL } from '../constants';\n\nimport { getSessionID, getSessionState } from './session';\n\nconst BEACON_URL = config.loggerUrl;\nconst APP_NAME = 'checkoutjs';\n\nexport function beacon(event : string, payload : Object = {}) {\n try {\n\n payload.event = `ppxo_${ event }`;\n payload.version = __PAYPAL_CHECKOUT__.__MINOR_VERSION__;\n payload.host = window.location.host;\n payload.uid = getSessionID();\n payload.appName = APP_NAME;\n\n let query = [];\n\n for (const key in payload) {\n if (payload.hasOwnProperty(key)) {\n query.push(`${ encodeURIComponent(key) }=${ encodeURIComponent(payload[key]) }`);\n }\n }\n\n query = query.join('&');\n\n if (!__TEST__) {\n const beaconImage = new window.Image();\n beaconImage.src = `${ BEACON_URL }?${ query }`;\n }\n\n setTimeout(() => {\n if (config.logLevel === LOG_LEVEL.DEBUG) {\n if (window.console && window.console.log) {\n window.console.log('*', event, payload);\n }\n }\n }, 1);\n\n } catch (err) {\n // pass\n }\n}\n\nfunction isCheckpointUnique(name : string) : boolean {\n return getSessionState(state => {\n state.loggedBeacons = state.loggedBeacons || [];\n\n if (state.loggedBeacons.indexOf(name) === -1) {\n state.loggedBeacons.push(name);\n return true;\n }\n\n return false;\n });\n}\n\nexport function checkpoint(name : string, payload : Object = {}, options : Object = {}) : void {\n try {\n let checkpointName = name;\n\n if (options.version) {\n const version = __PAYPAL_CHECKOUT__.__MINOR_VERSION__.replace(/[^0-9]+/g, '_');\n checkpointName = `${ version }_${ checkpointName }`;\n }\n\n if (!isCheckpointUnique(checkpointName)) {\n return;\n }\n\n return beacon(checkpointName, payload);\n\n } catch (err) {\n\n // pass\n }\n}\n\n\nconst FPTI_URL = 'https://t.paypal.com/ts';\n\nfunction buildPayload() : Object {\n return {\n v: `checkout.js.${ __PAYPAL_CHECKOUT__.__MINOR_VERSION__ }`,\n t: Date.now(),\n g: new Date().getTimezoneOffset(),\n flnm: 'ec:hermes:',\n shir: 'main_ec_hermes_',\n pgrp: 'main:ec:hermes::incontext-merchant',\n page: 'main:ec:hermes::incontext-merchant',\n vers: 'member:hermes:',\n qual: 'incontext',\n tmpl: 'merchant:incontext'\n };\n}\n\nexport function fpti(payload : Object = {}) {\n\n let query = [];\n\n payload = { ...buildPayload(), ...payload };\n\n for (const key in payload) {\n if (payload.hasOwnProperty(key)) {\n query.push(`${ encodeURIComponent(key) }=${ encodeURIComponent(payload[key]) }`);\n }\n }\n\n query = query.join('&');\n\n try {\n const beaconImage = new window.Image();\n beaconImage.src = `${ FPTI_URL }?${ query }`;\n } catch (err) {\n // pass\n }\n}\n","/* @flow */\n/** @jsx jsxDom */\n\nconst checkoutComponentStyle = `\n\n body {\n width: 100%;\n height: 100%;\n overflow: hidden;\n position: fixed;\n top: 0;\n left: 0;\n margin: 0;\n }\n\n .spinner {\n height: 100%;\n width: 100%;\n position: absolute;\n z-index: 10\n }\n\n .spinner .spinWrap {\n width: 200px;\n height: 100px;\n position: absolute;\n top: 50%;\n left: 50%;\n margin-left: -100px;\n margin-top: -50px\n }\n\n .spinner .loader,\n .spinner .spinnerImage {\n height: 100px;\n width: 100px;\n position: absolute;\n top: 0;\n left: 50%;\n opacity: 1;\n filter: alpha(opacity=100)\n }\n\n .spinner .spinnerImage {\n margin: 28px 0 0 -25px;\n background: url(https://www.paypalobjects.com/images/checkout/hermes/icon_ot_spin_lock_skinny.png) no-repeat\n }\n\n .spinner .loader {\n margin: 0 0 0 -55px;\n background-color: transparent;\n -webkit-animation: rotation .7s infinite linear;\n -moz-animation: rotation .7s infinite linear;\n -o-animation: rotation .7s infinite linear;\n animation: rotation .7s infinite linear;\n border-left: 5px solid #cbcbca;\n border-right: 5px solid #cbcbca;\n border-bottom: 5px solid #cbcbca;\n border-top: 5px solid #2380be;\n border-radius: 100%\n }\n\n @-webkit-keyframes rotation {\n from {\n -webkit-transform: rotate(0deg)\n }\n to {\n -webkit-transform: rotate(359deg)\n }\n }\n @-moz-keyframes rotation {\n from {\n -moz-transform: rotate(0deg)\n }\n to {\n -moz-transform: rotate(359deg)\n }\n }\n @-o-keyframes rotation {\n from {\n -o-transform: rotate(0deg)\n }\n to {\n -o-transform: rotate(359deg)\n }\n }\n @keyframes rotation {\n from {\n transform: rotate(0deg)\n }\n to {\n transform: rotate(359deg)\n }\n }\n`;\n\nexport function componentTemplate({ jsxDom } : { jsxDom : Function }) : HTMLElement {\n\n return (\n \n \n PayPal\n \n \n \n

\n \n\n
\n

\n

\n

\n
\n \n \n );\n}\n","/* @flow */\n\nimport { CHECKOUT_OVERLAY_COLOR } from '../../../constants';\n\nexport function getContainerStyle({ id, tag, CONTEXT, CLASS, ANIMATION } : { id : string, tag : string, CONTEXT : Object, CLASS : Object, ANIMATION : Object }) : string {\n return `\n #${ id } {\n position: absolute;\n z-index: 2147483647;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n\n -webkit-transform: translate3d(0, 0, 0);\n -moz-transform: translate3d(0, 0, 0);\n -ms-transform: translate3d(0, 0, 0);\n -o-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.BLACK } {\n background-color: black;\n background-color: rgba(0, 0, 0, 0.75);\n\n background: -webkit-radial-gradient(50% 50%, ellipse closest-corner, rgba(0,0,0,1) 1%, rgba(0,0,0,0.75) 100%);\n background: -moz-radial-gradient(50% 50%, ellipse closest-corner, rgba(0,0,0,1) 1%, rgba(0,0,0,0.75) 100%);\n background: -ms-radial-gradient(50% 50%, ellipse closest-corner, rgba(0,0,0,1) 1%, rgba(0,0,0,0.75) 100%);\n background: radial-gradient(50% 50%, ellipse closest-corner, rgba(0,0,0,1) 1%, rgba(0,0,0,0.75) 100%);\n\n color: #fff;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.WHITE } {\n background-color: white;\n background-color: rgba(255, 255, 255, 0.4);\n\n background: -webkit-radial-gradient(50% 50%, ellipse closest-corner, rgba(255, 255, 255,1) 1%, rgba(255, 255, 255,0.4) 100%);\n background: -moz-radial-gradient(50% 50%, ellipse closest-corner, rgba(255, 255, 255,1) 1%, rgba(255, 255, 255,0.4) 100%);\n background: -ms-radial-gradient(50% 50%, ellipse closest-corner, rgba(255, 255, 255,1) 1%, rgba(255, 255, 255,0.4) 100%);\n background: radial-gradient(50% 50%, ellipse closest-corner, rgba(255, 255, 255,1) 1%, rgba(255, 255, 255,0.4) 100%);\n\n color: #333;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.BLACK } a {\n color: #fff;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.WHITE } a {\n color: #333;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.BLACK } .paypal-checkout-close:before,\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.BLACK } .paypal-checkout-close:after {\n background-color: #fff;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.WHITE } .paypal-checkout-close:before,\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.WHITE } .paypal-checkout-close:after {\n background-color: #111;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.POPUP } {\n cursor: pointer;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.POPUP } {\n cursor: pointer;\n }\n\n #${ id } a {\n text-decoration: none;\n }\n\n #${ id } .paypal-checkout-modal {\n font-family: \"HelveticaNeue\", \"HelveticaNeue-Light\", \"Helvetica Neue Light\", helvetica, arial, sans-serif;\n font-size: 14px;\n text-align: center;\n\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n -ms-box-sizing: border-box;\n box-sizing: border-box;\n max-width: 350px;\n top: 50%;\n left: 50%;\n position: absolute;\n transform: translateX(-50%) translateY(-50%);\n -webkit-transform: translateX(-50%) translateY(-50%);\n -moz-transform: translateX(-50%) translateY(-50%);\n -o-transform: translateX(-50%) translateY(-50%);\n -ms-transform: translateX(-50%) translateY(-50%);\n cursor: pointer;\n text-align: center;\n }\n\n #${ id }.${ tag }-loading .paypal-checkout-message, #${ id }.${ tag }-loading .paypal-checkout-continue {\n display: none;\n }\n\n .paypal-checkout-loader {\n display: none;\n }\n\n #${ id }.${ tag }-loading .paypal-checkout-loader {\n display: block;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-logo {\n cursor: pointer;\n margin-bottom: 30px;\n display: inline-block;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-logo img {\n height: 36px;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-logo img.paypal-checkout-logo-pp {\n margin-right: 10px;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-message {\n font-size: 15px;\n line-height: 1.5;\n padding: 10px 0;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-message, #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-continue {\n display: none;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-continue {\n font-size: 15px;\n line-height: 1.35;\n padding: 10px 0;\n font-weight: bold;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-continue a {\n border-bottom: 1px solid currentColor;\n }\n\n #${ id } .paypal-checkout-close {\n position: absolute;\n right: 16px;\n top: 16px;\n width: 16px;\n height: 16px;\n opacity: 0.6;\n }\n\n #${ id }.${ tag }-loading .paypal-checkout-close {\n display: none;\n }\n\n #${ id } .paypal-checkout-close:hover {\n opacity: 1;\n }\n\n #${ id } .paypal-checkout-close:before, .paypal-checkout-close:after {\n position: absolute;\n left: 8px;\n content: ' ';\n height: 16px;\n width: 2px;\n }\n\n #${ id } .paypal-checkout-close:before {\n transform: rotate(45deg);\n -webkit-transform: rotate(45deg);\n -moz-transform: rotate(45deg);\n -o-transform: rotate(45deg);\n -ms-transform: rotate(45deg);\n }\n\n #${ id } .paypal-checkout-close:after {\n transform: rotate(-45deg);\n -webkit-transform: rotate(-45deg);\n -moz-transform: rotate(-45deg);\n -o-transform: rotate(-45deg);\n -ms-transform: rotate(-45deg);\n }\n\n #${ id } .paypal-checkout-iframe-container {\n display: none;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container,\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container > .${ CLASS.OUTLET },\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container > .${ CLASS.OUTLET } > iframe {\n max-height: calc(95vh - 60px);\n max-width: 95vw;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container {\n\n display: block;\n\n position: absolute;\n\n top: 50%;\n left: 50%;\n\n min-width: 450px;\n\n transform: translate(-50%, -50%);\n -webkit-transform: translate(-50%, -50%);\n -moz-transform: translate(-50%, -50%);\n -o-transform: translate(-50%, -50%);\n -ms-transform: translate(-50%, -50%);\n\n transform: translate3d(-50%, -50%, 0);\n -webkit-transform: translate3d(-50%, -50%, 0);\n -moz-transform: translate3d(-50%, -50%, 0);\n -o-transform: translate3d(-50%, -50%, 0);\n -ms-transform: translate3d(-50%, -50%, 0);\n\n border-radius: 10px;\n overflow: hidden;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } {\n\n position: relative;\n\n -webkit-transition: all 0.3s ease;\n -moz-transition: all 0.3s ease;\n -ms-transition: all 0.3s ease;\n -o-transition: all 0.3 ease;\n transition: all 0.3s ease;\n\n -webkit-animation-duration: 0.3s;\n animation-duration: 0.3s;\n -webkit-animation-fill-mode: both;\n animation-fill-mode: both;\n\n min-width: 450px;\n max-width: 450px;\n width: 450px;\n height: 535px;\n\n background-color: white;\n\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe {\n position: absolute;\n top: 0;\n left: 0;\n transition: opacity .4s ease-in-out;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe.${ CLASS.COMPONENT_FRAME } {\n z-index: 100;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe.${ CLASS.PRERENDER_FRAME } {\n z-index: 200;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe.${ CLASS.VISIBLE } {\n opacity: 1;\n z-index: 200;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe.${ CLASS.INVISIBLE } {\n opacity: 0;\n z-index: 100;\n }\n\n @media screen and (-ms-high-contrast: active) {\n #${ id } .paypal-checkout-close {\n opacity: 1;\n }\n\n #${ id } .paypal-checkout-close:before , .paypal-checkout-close:after {\n background-color: currentColor;\n }\n }\n\n @media screen and (max-width: 470px) {\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container,\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } {\n min-width: 100%;\n min-width: calc(100% - 20px);\n min-width: -webkit-calc(100% - 20px);\n min-width: -moz-calc(100% - 20px);\n min-width: -o-calc(100% - 20px);\n min-width: -ms-calc(100% - 20px);\n\n max-width: 100%;\n max-width: calc(100% - 20px);\n max-width: -webkit-calc(100% - 20px);\n max-width: -moz-calc(100% - 20px);\n max-width: -o-calc(100% - 20px);\n max-width: -ms-calc(100% - 20px);\n }\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } iframe {\n width: 1px;\n min-width: 100%;\n height: 100%;\n }\n\n @-webkit-keyframes ${ ANIMATION.SHOW_COMPONENT } {\n from {\n opacity: 0;\n transform: scale3d(.3, .3, .3);\n -webkit-transform: scale3d(.3, .3, .3);\n }\n\n to {\n opacity: 1;\n transform: scale3d(1, 1, 1);\n -webkit-transform: scale3d(1, 1, 1);\n }\n }\n\n @keyframes ${ ANIMATION.SHOW_COMPONENT } {\n from {\n opacity: 0;\n transform: scale3d(.3, .3, .3);\n -webkit-transform: scale3d(.3, .3, .3);\n }\n\n to {\n opacity: 1;\n transform: scale3d(1, 1, 1);\n -webkit-transform: scale3d(1, 1, 1);\n }\n }\n\n @-webkit-keyframes ${ ANIMATION.HIDE_COMPONENT } {\n from {\n transform: scale3d(1, 1, 1);\n -webkit-transform: scale3d(1, 1, 1);\n }\n\n to {\n opacity: 0;\n transform: scale3d(.3, .3, .3);\n -webkit-transform: scale3d(.3, .3, .3);\n }\n }\n\n @keyframes ${ ANIMATION.HIDE_COMPONENT } {\n from {\n transform: scale3d(1, 1, 1);\n -webkit-transform: scale3d(1, 1, 1);\n }\n\n to {\n opacity: 0;\n transform: scale3d(.3, .3, .3);\n -webkit-transform: scale3d(.3, .3, .3);\n }\n }\n\n .paypal-spinner {\n height: 30px;\n width: 30px;\n display: inline-block;\n box-sizing: content-box;\n opacity: 1;\n filter: alpha(opacity=100);\n -webkit-animation: rotation .7s infinite linear;\n -moz-animation: rotation .7s infinite linear;\n -o-animation: rotation .7s infinite linear;\n animation: rotation .7s infinite linear;\n border-left: 8px solid rgba(0, 0, 0, .2);\n border-right: 8px solid rgba(0, 0, 0, .2);\n border-bottom: 8px solid rgba(0, 0, 0, .2);\n border-top: 8px solid #fff;\n border-radius: 100%\n }\n\n @-webkit-keyframes rotation {\n from {\n -webkit-transform: rotate(0deg)\n }\n to {\n -webkit-transform: rotate(359deg)\n }\n }\n @-moz-keyframes rotation {\n from {\n -moz-transform: rotate(0deg)\n }\n to {\n -moz-transform: rotate(359deg)\n }\n }\n @-o-keyframes rotation {\n from {\n -o-transform: rotate(0deg)\n }\n to {\n -o-transform: rotate(359deg)\n }\n }\n @keyframes rotation {\n from {\n transform: rotate(0deg)\n }\n to {\n transform: rotate(359deg)\n }\n }\n `;\n}\n","/* @flow */\n\nexport function getSandboxStyle({ id, ANIMATION } : { id : string, ANIMATION : Object }) : string {\n return `\n #${ id }.paypal-checkout-sandbox {\n display: block;\n position: fixed;\n top: 0;\n left: 0;\n\n width: 100%;\n height: 100%;\n width: 100vw;\n height: 100vh;\n max-width: 100%;\n max-height: 100%;\n min-width: 100%;\n min-height: 100%;\n\n z-index: 2147483647;\n\n -webkit-animation-duration: 1s;\n animation-duration: 1s;\n\n animation-fill-mode:forwards;\n animation-iteration-count: 1;\n\n -webkit-animation-fill-mode:forwards;\n -webkit-animation-iteration-count: 1;\n }\n\n #${ id }.paypal-checkout-sandbox .paypal-checkout-sandbox-iframe {\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n }\n\n @-webkit-keyframes ${ ANIMATION.SHOW_CONTAINER } {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n }\n\n @keyframes ${ ANIMATION.SHOW_CONTAINER } {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n }\n\n @-webkit-keyframes ${ ANIMATION.HIDE_CONTAINER } {\n from {\n opacity: 1;\n }\n\n 50% {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n }\n\n @keyframes ${ ANIMATION.HIDE_CONTAINER } {\n from {\n opacity: 1;\n }\n\n 50% {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n }\n `;\n}\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { base64encode } from 'belter/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { fundingLogos } from '../../resources';\nimport { BUTTON_LOGO_COLOR, CHECKOUT_OVERLAY_COLOR } from '../../constants';\nimport { isIos } from '../../lib';\n\nimport { containerContent } from './containerContent';\nimport { getContainerStyle } from './containerStyle';\nimport { getSandboxStyle } from './sandboxStyle';\n\nconst LOGO_COLOR = {\n [ CHECKOUT_OVERLAY_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ CHECKOUT_OVERLAY_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n};\n\nexport {\n getContainerStyle,\n getSandboxStyle\n};\n\n// eslint-disable-next-line flowtype/require-exact-type\nexport type ContainerTemplateOptions = {\n id : string,\n props : Object,\n CLASS : Object,\n ANIMATION : Object,\n CONTEXT : Object,\n EVENT : Object,\n dimensions : {\n width : number,\n height : number\n },\n actions : Object,\n tag : string,\n context : string,\n outlet : HTMLElement,\n on : Function,\n jsxDom : Function\n};\n\nexport function containerTemplate({ id, props, CLASS, ANIMATION, CONTEXT, EVENT, on, tag, context, actions, outlet, jsxDom } : ContainerTemplateOptions) : HTMLElement {\n\n const [ lang, country ] = props.locale.split('_');\n\n const content = containerContent[country][lang];\n\n function close(event) {\n event.preventDefault();\n event.stopPropagation();\n actions.close();\n }\n\n function focus(event) {\n event.preventDefault();\n event.stopPropagation();\n\n if (isIos()) {\n // eslint-disable-next-line no-alert\n window.alert('Please switch tabs to reactivate the PayPal window');\n } else {\n ZalgoPromise.try(actions.focus).catch(actions.close);\n }\n }\n\n const style = props.style || {};\n const overlayColor = style.overlayColor || CHECKOUT_OVERLAY_COLOR.BLACK;\n const logoColor = LOGO_COLOR[overlayColor];\n\n const ppLogo = (typeof fundingLogos.pp === 'function')\n ? fundingLogos.pp({ logoColor })\n : fundingLogos.pp[logoColor];\n\n const paypalLogo = (typeof fundingLogos.paypal === 'function')\n ? fundingLogos.paypal({ logoColor })\n : fundingLogos.paypal[logoColor];\n\n const el = (\n
\n \n
\n
\n \n \n
\n
\n {content.windowMessage}\n
\n
\n
\n
\n
\n
\n\n
\n {outlet}\n
\n\n \n
\n );\n\n const container = (\n \n \n { el }\n \n \n );\n\n on(EVENT.CLOSE, () => {\n el.className += ` ${ tag }-loading`;\n });\n\n return (\n
\n \n\n \n
\n );\n}\n","/* @flow */\n\nexport * from './componentTemplate';\nexport * from './containerTemplate';\n","/* @flow */\n\nimport { config } from '../config';\nimport { FUNDING, PAYMENT_TYPE } from '../constants';\n\nexport function determineParameterFromToken(token : string) : string {\n return (token && token.indexOf('BA-') === 0) ? 'ba_token' : 'token';\n}\n\nexport function getPaymentType(payment : string) : string {\n if (payment.indexOf('BA-') === 0) {\n return PAYMENT_TYPE.BA_TOKEN;\n } else if (payment.indexOf('PAY-') === 0 || payment.indexOf('PAYID-') === 0) {\n return PAYMENT_TYPE.PAY_ID;\n } else if (payment.indexOf('EC-') === 0) {\n return PAYMENT_TYPE.EC_TOKEN;\n }\n\n return PAYMENT_TYPE.EC_TOKEN;\n}\n\nexport function determineUrl(env : string, fundingSource : ?string, payment : string) : string {\n\n const paymentType = getPaymentType(payment);\n\n if (paymentType === PAYMENT_TYPE.BA_TOKEN) {\n return config.billingUrls[env];\n }\n\n if (fundingSource === FUNDING.CARD || fundingSource === FUNDING.ELV) {\n return config.guestUrls[env];\n }\n\n if (fundingSource === FUNDING.IDEAL || fundingSource === FUNDING.BANCONTACT || fundingSource === FUNDING.GIROPAY ||\n fundingSource === FUNDING.SOFORT || fundingSource === FUNDING.EPS || fundingSource === FUNDING.MYBANK ||\n fundingSource === FUNDING.P24 || fundingSource === FUNDING.PAYU || fundingSource === FUNDING.VERKKOPANKKI ||\n fundingSource === FUNDING.BLIK || fundingSource === FUNDING.TRUSTLY || fundingSource === FUNDING.MAXIMA ||\n fundingSource === FUNDING.BOLETO || fundingSource === FUNDING.OXXO) {\n return config.altpayUrls[env];\n }\n\n return config.checkoutUrls[env];\n}\n","/* @flow */\n\nexport function extendNamespace(xports : Object, namespaces : $ReadOnlyArray = [], childnamespaces : $ReadOnlyArray = []) : Object {\n\n for (const name of namespaces) {\n const namespace = window[name];\n\n if (!namespace) {\n continue;\n }\n\n for (const childname of childnamespaces) {\n let childnamespace = xports[childname];\n\n if (namespace[childname]) {\n childnamespace = { ...namespace[childname], ...childnamespace };\n }\n\n xports = { ...namespace, ...xports, [ childname ]: childnamespace };\n }\n }\n\n for (const name of namespaces) {\n window[name] = xports;\n }\n\n return xports;\n}\n","/* @flow */\n/* eslint max-lines: off */\n\nexport const containerContent = {\n 'AT': {\n 'de': {\n 'windowMessage': 'Sie sehen das sichere Browserfenster von PayPal nicht? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ZW': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ZM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ZA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'YT': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'YE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'WS': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'WF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'VU': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'VG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'VE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'VC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'VA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'UY': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'UG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TV': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'TT': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'TO': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'TN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'TM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'TD': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'TC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'SZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SV': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'ST': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SR': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'SO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'SM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SL': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SH': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'SB': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'SA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'RW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'RS': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'RE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'QA': {\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PY': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'PW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'PN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'PM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'PF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'PA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'OM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'NU': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'NR': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'NP': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'NI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'NG': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'NE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'NC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MV': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'MU': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MT': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MS': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'MR': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MQ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MN': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'ML': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'MK': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MH': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'MG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ME': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MD': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MC': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'MA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'LS': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'LK': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'LI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'LC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'LA': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'KZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'KY': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'KW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'KN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'KM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'KI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'KH': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'KG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'KE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'JO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'JM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'IS': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'HR': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'HN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'GY': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'GW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GT': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'GP': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'GM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GL': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'da': {\n 'windowMessage': 'Kan du ikke se PayPals sikre browser? Vi hj\\u00E6lper dig med at genstarte vinduet, s\\u00E5 du kan betale.',\n 'continue': 'Forts\\u00E6t'\n }\n },\n 'GI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GD': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'GA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'FO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'da': {\n 'windowMessage': 'Kan du ikke se PayPals sikre browser? Vi hj\\u00E6lper dig med at genstarte vinduet, s\\u00E5 du kan betale.',\n 'continue': 'Forts\\u00E6t'\n }\n },\n 'FM': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'FK': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'FJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'ET': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ER': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'EG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'EC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'DZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'DO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'DM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'DJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'CY': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CV': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CR': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'CO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'CM': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'CL': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'CK': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CI': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'CG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CD': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'BZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'BY': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BT': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'BS': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'BO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'BN': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'BM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'BJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'BI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'BH': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'BG': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'BB': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'BA': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'AO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'AM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AL': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'AG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'AE': {\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AD': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n }\n },\n 'GB': {\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 PayPal\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\'ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AR': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'US': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Click to Continue'\n }\n },\n 'VN': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment. ',\n 'continue': 'Continue'\n }\n },\n 'UA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TW': {\n 'zh': {\n 'windowMessage': '\\u770B\\u4E0D\\u5230\\u5B89\\u5168\\u9023\\u7DDA\\u7684 PayPal \\u700F\\u89BD\\u5668\\uFF1F\\u6211\\u5011\\u5C07\\u6703\\u91CD\\u65B0\\u555F\\u52D5\\u8996\\u7A97\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002\\u00A0 ',\n 'continue': '\\u7E7C\\u7E8C'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TR': {\n 'tr': {\n 'windowMessage': 'G\\u00FCvenli PayPal taray\\u0131c\\u0131s\\u0131n\\u0131 g\\u00F6rm\\u00FCyor musunuz? Al\\u0131\\u015Fveri\\u015Finizi tamamlamak i\\u00E7in pencereyi yeniden ba\\u015Flatman\\u0131za yard\\u0131mc\\u0131 olaca\\u011F\\u0131z.\\u00A0 ',\n 'continue': 'Devam'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TH': {\n 'th': {\n 'windowMessage': '\\u0E16\\u0E49\\u0E32\\u0E04\\u0E38\\u0E13\\u0E44\\u0E21\\u0E48\\u0E40\\u0E2B\\u0E47\\u0E19\\u0E40\\u0E1A\\u0E23\\u0E32\\u0E27\\u0E4C\\u0E40\\u0E0B\\u0E2D\\u0E23\\u0E4C\\u0E17\\u0E35\\u0E48\\u0E21\\u0E35\\u0E23\\u0E30\\u0E1A\\u0E1A\\u0E04\\u0E27\\u0E32\\u0E21\\u0E1B\\u0E25\\u0E2D\\u0E14\\u0E20\\u0E31\\u0E22\\u0E02\\u0E2D\\u0E07 PayPal \\u0E40\\u0E23\\u0E32\\u0E08\\u0E30\\u0E0A\\u0E48\\u0E27\\u0E22\\u0E04\\u0E38\\u0E13\\u0E40\\u0E1B\\u0E34\\u0E14\\u0E2B\\u0E19\\u0E49\\u0E32\\u0E15\\u0E48\\u0E32\\u0E07\\u0E2D\\u0E35\\u0E01\\u0E04\\u0E23\\u0E31\\u0E49\\u0E07\\u0E40\\u0E1E\\u0E37\\u0E48\\u0E2D\\u0E0A\\u0E33\\u0E23\\u0E30\\u0E40\\u0E07\\u0E34\\u0E19\\u0E43\\u0E2B\\u0E49\\u0E40\\u0E23\\u0E35\\u0E22\\u0E1A\\u0E23\\u0E49\\u0E2D\\u0E22 ',\n 'continue': '\\u0E14\\u0E33\\u0E40\\u0E19\\u0E34\\u0E19\\u0E01\\u0E32\\u0E23\\u0E15\\u0E48\\u0E2D'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SK': {\n 'sk': {\n 'windowMessage': 'Nezobrazuje sa v\\u00e1m zabezpe\\u010den\\u00fd prehliada\\u010d PayPal? Pom\\u00f4\\u017eeme v\\u00e1m znova otvori\\u0165 okno, aby ste mohli n\\u00e1kup dokon\\u010di\\u0165.\\u00A0 ',\n 'continue': 'Pokra\\u010dova\\u0165'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SG': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SE': {\n 'sv': {\n 'windowMessage': 'Ser du inte den s\\u00E4kra PayPal-webbl\\u00E4saren? Vi hj\\u00E4lper dig att starta om f\\u00F6nstret f\\u00F6r att slutf\\u00F6ra ditt k\\u00F6p. ',\n 'continue': 'Forts\\u00E4tt'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'RU': {\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'RO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PT': {\n 'pt': {\n 'windowMessage': 'N\\u00E3o v\\u00EA a indica\\u00E7\\u00E3o de sess\\u00E3o segura PayPal no browser? Vamos ajudar a reabrir a janela para que possa concluir a sua compra.',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PL': {\n 'pl': {\n 'windowMessage': 'Nie widzisz bezpiecznej przegl\\u0105darki PayPal? Pomo\\u017Cemy Ci ponownie uruchomi\\u0107 to okno w celu dokonania zakupu.\\u00A0 ',\n 'continue': 'Kontynuuj'\n },\n 'en': {\n 'windowMessage': 'You don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PH': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre paiement.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Le ayudaremos a abrir de nuevo la ventana para completar su pago.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NO': {\n 'no': {\n 'windowMessage': 'Ser du ikke den sikre PayPal-nettleseren? Vi hjelper deg med \\u00E5 starte vinduet p\\u00E5 nytt s\\u00E5 du kan fullf\\u00F8re kj\\u00F8pet.\\u00A0 ',\n 'continue': 'Fortsett'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NL': {\n 'nl': {\n 'windowMessage': 'Ziet u geen beveiligde PayPal-browser? We helpen u het venster opnieuw te openen om uw aankoop te voltooien.\\u00A0 ',\n 'continue': 'Doorgaan'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MY': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MX': {\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'LV': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'LU': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'de': {\n 'windowMessage': 'Das PayPal-Fenster wird nicht angezeigt? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n }\n },\n 'LT': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'KR': {\n 'ko': {\n 'windowMessage': '\\uBCF4\\uC548 PayPal \\uBE0C\\uB77C\\uC6B0\\uC800\\uAC00 \\uBCF4\\uC774\\uC9C0 \\uC54A\\uC73C\\uC2E0\\uAC00\\uC694? \\uCC3D\\uC744 \\uB2E4\\uC2DC \\uC2E4\\uD589\\uD558\\uC5EC \\uACB0\\uC81C\\uB97C \\uC644\\uB8CC\\uD560 \\uC218 \\uC788\\uB3C4\\uB85D \\uB3C4\\uC640\\uB4DC\\uB9AC\\uACA0\\uC2B5\\uB2C8\\uB2E4.\\u00A0 ',\n 'continue': '\\uACC4\\uC18D'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'JP': {\n 'ja': {\n 'windowMessage': '\\u30BB\\u30AD\\u30E5\\u30A2\\u306A\\u30D6\\u30E9\\u30A6\\u30B6\\u304C\\u8868\\u793A\\u3055\\u308C\\u306A\\u3044\\u5834\\u5408\\u306F\\u3001\\u30A6\\u30A3\\u30F3\\u30C9\\u30A6\\u3092\\u518D\\u8D77\\u52D5\\u3057\\u3066\\u3001\\u652F\\u6255\\u3044\\u3092\\u5B8C\\u4E86\\u3067\\u304D\\u308B\\u3088\\u3046\\u304A\\u624B\\u4F1D\\u3044\\u3044\\u305F\\u3057\\u307E\\u3059\\u3002',\n 'continue': '\\u7D9A\\u884C'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment. ',\n 'continue': 'Continue'\n }\n },\n 'IT': {\n 'it': {\n 'windowMessage': 'Non vedi la pagina sicura di PayPal? Ti aiuteremo a riaprire la finestra per completare l\\'acquisto.\\u00A0 ',\n 'continue': 'Continua'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'IN': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'IL': {\n 'he': {\n 'windowMessage': '\\u05DC\\u05D0 \\u05E8\\u05D5\\u05D0\\u05D4 \\u05D0\\u05EA \\u05D3\\u05E4\\u05D3\\u05E4\\u05DF PayPal \\u05D4\\u05DE\\u05D0\\u05D5\\u05D1\\u05D8\\u05D7? \\u05E0\\u05E2\\u05D6\\u05D5\\u05E8 \\u05DC\\u05DA \\u05DC\\u05E4\\u05EA\\u05D5\\u05D7 \\u05DE\\u05D7\\u05D3\\u05E9 \\u05D0\\u05EA \\u05D4\\u05D7\\u05DC\\u05D5\\u05DF \\u05DB\\u05D3\\u05D9 \\u05DC\\u05D4\\u05E9\\u05DC\\u05D9\\u05DD \\u05D0\\u05EA \\u05D4\\u05E7\\u05E0\\u05D9\\u05D9\\u05D4 \\u05E9\\u05DC\\u05DA.\\u00A0 ',\n 'continue': '\\u05D4\\u05DE\\u05E9\\u05DA'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'IE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'HU': {\n 'hu': {\n 'windowMessage': 'Nem l\\u00e1tja a biztons\\u00e1gos PayPal-b\\u00f6ng\\u00e9sz\\u0151t? Seg\\u00edt\\u00fcnk \\u00fajra bet\\u00f6lteni az ablakot, hogy befejezhesse a v\\u00e1s\\u00e1rl\\u00e1st.\\u00A0 ',\n 'continue': 'Folytat\\u00e1s'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ID': {\n 'id': {\n 'windowMessage': 'Browser PayPal yang aman tidak terlihat? Kami akan membantu menampilkan ulang jendela untuk menyelesaikan pembayaran Anda.\\u00A0 ',\n 'continue': 'Lanjutkan'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'HK': {\n 'zh': {\n 'windowMessage': '\\u770B\\u4E0D\\u5230\\u5B89\\u5168\\u7684 PayPal \\u700F\\u89BD\\u5668\\u8996\\u7A97\\uFF1F\\u6211\\u5011\\u6703\\u52A9\\u4F60\\u91CD\\u65B0\\u958B\\u555F\\u8996\\u7A97\\uFF0C\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002',\n 'continue': '\\u7E7C\\u7E8C'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GROUP-LATAM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'GROUP-EMEA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'pt': {\n 'windowMessage': 'N\\u00E3o v\\u00EA a indica\\u00E7\\u00E3o de sess\\u00E3o segura PayPal no browser? Vamos ajudar a reabrir a janela para que possa concluir a sua compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'de': {\n 'windowMessage': 'Sie sehen das sichere Browserfenster von PayPal nicht? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n },\n 'da': {\n 'windowMessage': 'Kan du ikke se PayPals sikre browser? Vi hj\\u00E6lper dig med at genstarte vinduet, s\\u00E5 du kan betale.',\n 'continue': 'Forts\\u00E6t'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'GROUP-APAC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ko': {\n 'windowMessage': '\\uBCF4\\uC548 PayPal \\uBE0C\\uB77C\\uC6B0\\uC800\\uAC00 \\uBCF4\\uC774\\uC9C0 \\uC54A\\uC73C\\uC2E0\\uAC00\\uC694? \\uCC3D\\uC744 \\uB2E4\\uC2DC \\uC2E4\\uD589\\uD558\\uC5EC \\uAD6C\\uB9E4\\uB97C \\uC644\\uB8CC\\uD560 \\uC218 \\uC788\\uB3C4\\uB85D \\uB3C4\\uC640\\uB4DC\\uB9AC\\uACA0\\uC2B5\\uB2C8\\uB2E4. ',\n 'continue': '\\uACC4\\uC18D'\n },\n 'id': {\n 'windowMessage': 'Browser PayPal yang aman tidak terlihat? Kami akan membantu menampilkan ulang jendela untuk menyelesaikan pembelian Anda. ',\n 'continue': 'Lanjutkan'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'GR': {\n 'el': {\n 'windowMessage': '\\u0394\\u03b5\\u03bd \\u03b2\\u03bb\\u03ad\\u03c0\\u03b5\\u03c4\\u03b5 \\u03c4\\u03bf \\u03b1\\u03c3\\u03c6\\u03b1\\u03bb\\u03ad\\u03c2 \\u03c0\\u03c1\\u03cc\\u03b3\\u03c1\\u03b1\\u03bc\\u03bc\\u03b1 \\u03c0\\u03b5\\u03c1\\u03b9\\u03ae\\u03b3\\u03b7\\u03c3\\u03b7\\u03c2 PayPal; \\u0398\\u03b1 \\u03c3\\u03b1\\u03c2 \\u03b2\\u03bf\\u03b7\\u03b8\\u03ae\\u03c3\\u03bf\\u03c5\\u03bc\\u03b5 \\u03bd\\u03b1 \\u03b5\\u03c0\\u03b1\\u03bd\\u03b5\\u03ba\\u03ba\\u03b9\\u03bd\\u03ae\\u03c3\\u03b5\\u03c4\\u03b5 \\u03c4\\u03bf \\u03c0\\u03b1\\u03c1\\u03ac\\u03b8\\u03c5\\u03c1\\u03bf \\u03b3\\u03b9\\u03b1 \\u03bd\\u03b1 \\u03bf\\u03bb\\u03bf\\u03ba\\u03bb\\u03b7\\u03c1\\u03ce\\u03c3\\u03b5\\u03c4\\u03b5 \\u03c4\\u03b7\\u03bd \\u03b1\\u03b3\\u03bf\\u03c1\\u03ac \\u03c3\\u03b1\\u03c2.\\u00A0 ',\n 'continue': '\\u03a3\\u03c5\\u03bd\\u03ad\\u03c7\\u03b5\\u03b9\\u03b1'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'FR': {\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 PayPal\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ES': {\n 'es': {\n 'windowMessage': '\\u00BFNo ve el s\\u00EDmbolo de navegaci\\u00F3n segura de PayPal? Le ayudaremos a abrir de nuevo la ventana para completar la compra. ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'FI': {\n 'fi': {\n 'windowMessage': 'Eik\\u00f6 suojattua PayPal-selainta n\\u00e4y? Autamme avaamaan ikkunan uudelleen oston viimeistely\\u00e4 varten.\\u00A0 ',\n 'continue': 'Jatka'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'EE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'DK': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'da': {\n 'windowMessage': 'Kan du ikke se PayPals sikre browser? Vi hj\\u00E6lper dig med at genstarte vinduet, s\\u00E5 du kan betale.',\n 'continue': 'Forts\\u00E6t'\n }\n },\n 'CZ': {\n 'cs': {\n 'windowMessage': 'Nezobrazuje se v\\u00e1m bezpe\\u010dn\\u00fd prohl\\u00ed\\u017ee\\u010d PayPal? Pom\\u016f\\u017eeme v\\u00e1m okno znovu otev\\u0159\\u00edt, abyste mohli n\\u00e1kup dokon\\u010dit.',\n 'continue': 'Pokra\\u010dovat'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'DE': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'de': {\n 'windowMessage': 'Sie sehen das sichere Browserfenster von PayPal nicht? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n }\n },\n 'CH': {\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 PayPal\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'de': {\n 'windowMessage': 'Sie sehen das sichere Browserfenster von PayPal nicht? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n }\n },\n 'CA': {\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 de PayPal\\u00A0? Nous vous aiderons \\u00E0 relancer la fen\\u00EAtre afin d\\'effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you relaunch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'C2': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BE': {\n 'nl': {\n 'windowMessage': 'Ziet u de beveiligde PayPal-browser niet? We helpen u het venster opnieuw te openen om uw aankoop te voltooien.\\u00A0 ',\n 'continue': 'Doorgaan'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 PayPal\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BR': {\n 'pt': {\n 'windowMessage': 'N\\u00E3o est\\u00E1 vendo o navegador seguro do PayPal? Ajudaremos voc\\u00EA a reabrir a janela para concluir a compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AU': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\'ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n }\n};\n","/*\n * [hi-base32]{@link https://github.com/emn178/hi-base32}\n *\n * @version 0.5.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var root = typeof window === 'object' ? window : {};\n var NODE_JS = !root.HI_BASE32_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n }\n var COMMON_JS = !root.HI_BASE32_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var BASE32_ENCODE_CHAR = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'.split('');\n var BASE32_DECODE_CHAR = {\n 'A': 0, 'B': 1, 'C': 2, 'D': 3, 'E': 4, 'F': 5, 'G': 6, 'H': 7, 'I': 8,\n 'J': 9, 'K': 10, 'L': 11, 'M': 12, 'N': 13, 'O': 14, 'P': 15, 'Q': 16,\n 'R': 17, 'S': 18, 'T': 19, 'U': 20, 'V': 21, 'W': 22, 'X': 23, 'Y': 24,\n 'Z': 25, '2': 26, '3': 27, '4': 28, '5': 29, '6': 30, '7': 31\n };\n\n var blocks = [0, 0, 0, 0, 0, 0, 0, 0];\n\n var throwInvalidUtf8 = function (position, partial) {\n if (partial.length > 10) {\n partial = '...' + partial.substr(-10);\n }\n var err = new Error('Decoded data is not valid UTF-8.'\n + ' Maybe try base32.decode.asBytes()?'\n + ' Partial data after reading ' + position + ' bytes: ' + partial + ' <-');\n err.position = position;\n throw err;\n };\n\n var toUtf8String = function (bytes) {\n var str = '', length = bytes.length, i = 0, followingChars = 0, b, c;\n while (i < length) {\n b = bytes[i++];\n if (b <= 0x7F) {\n str += String.fromCharCode(b);\n continue;\n } else if (b > 0xBF && b <= 0xDF) {\n c = b & 0x1F;\n followingChars = 1;\n } else if (b <= 0xEF) {\n c = b & 0x0F;\n followingChars = 2;\n } else if (b <= 0xF7) {\n c = b & 0x07;\n followingChars = 3;\n } else {\n throwInvalidUtf8(i, str);\n }\n\n for (var j = 0; j < followingChars; ++j) {\n b = bytes[i++];\n if (b < 0x80 || b > 0xBF) {\n throwInvalidUtf8(i, str);\n }\n c <<= 6;\n c += b & 0x3F;\n }\n if (c >= 0xD800 && c <= 0xDFFF) {\n throwInvalidUtf8(i, str);\n }\n if (c > 0x10FFFF) {\n throwInvalidUtf8(i, str);\n }\n\n if (c <= 0xFFFF) {\n str += String.fromCharCode(c);\n } else {\n c -= 0x10000;\n str += String.fromCharCode((c >> 10) + 0xD800);\n str += String.fromCharCode((c & 0x3FF) + 0xDC00);\n }\n }\n return str;\n };\n\n var decodeAsBytes = function (base32Str) {\n if (!/^[A-Z2-7=]+$/.test(base32Str)) {\n throw new Error('Invalid base32 characters');\n }\n base32Str = base32Str.replace(/=/g, '');\n var v1, v2, v3, v4, v5, v6, v7, v8, bytes = [], index = 0, length = base32Str.length;\n\n // 4 char to 3 bytes\n for (var i = 0, count = length >> 3 << 3; i < count;) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v8 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255;\n bytes[index++] = (v4 << 4 | v5 >>> 1) & 255;\n bytes[index++] = (v5 << 7 | v6 << 2 | v7 >>> 3) & 255;\n bytes[index++] = (v7 << 5 | v8) & 255;\n }\n\n // remain bytes\n var remain = length - count;\n if (remain === 2) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n } else if (remain === 4) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255;\n } else if (remain === 5) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255;\n bytes[index++] = (v4 << 4 | v5 >>> 1) & 255;\n } else if (remain === 7) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255;\n bytes[index++] = (v4 << 4 | v5 >>> 1) & 255;\n bytes[index++] = (v5 << 7 | v6 << 2 | v7 >>> 3) & 255;\n }\n return bytes;\n };\n\n var encodeAscii = function (str) {\n var v1, v2, v3, v4, v5, base32Str = '', length = str.length;\n for (var i = 0, count = parseInt(length / 5) * 5; i < count;) {\n v1 = str.charCodeAt(i++);\n v2 = str.charCodeAt(i++);\n v3 = str.charCodeAt(i++);\n v4 = str.charCodeAt(i++);\n v5 = str.charCodeAt(i++);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3 | v5 >>> 5) & 31] +\n BASE32_ENCODE_CHAR[v5 & 31];\n }\n\n // remain char\n var remain = length - count;\n if (remain === 1) {\n v1 = str.charCodeAt(i);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2) & 31] +\n '======';\n } else if (remain === 2) {\n v1 = str.charCodeAt(i++);\n v2 = str.charCodeAt(i);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4) & 31] +\n '====';\n } else if (remain === 3) {\n v1 = str.charCodeAt(i++);\n v2 = str.charCodeAt(i++);\n v3 = str.charCodeAt(i);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1) & 31] +\n '===';\n } else if (remain === 4) {\n v1 = str.charCodeAt(i++);\n v2 = str.charCodeAt(i++);\n v3 = str.charCodeAt(i++);\n v4 = str.charCodeAt(i);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3) & 31] +\n '=';\n }\n return base32Str;\n };\n\n var encodeUtf8 = function (str) {\n var v1, v2, v3, v4, v5, code, end = false, base32Str = '',\n index = 0, i, start = 0, bytes = 0, length = str.length;\n do {\n blocks[0] = blocks[5];\n blocks[1] = blocks[6];\n blocks[2] = blocks[7];\n for (i = start; index < length && i < 5; ++index) {\n code = str.charCodeAt(index);\n if (code < 0x80) {\n blocks[i++] = code;\n } else if (code < 0x800) {\n blocks[i++] = 0xc0 | (code >> 6);\n blocks[i++] = 0x80 | (code & 0x3f);\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i++] = 0xe0 | (code >> 12);\n blocks[i++] = 0x80 | ((code >> 6) & 0x3f);\n blocks[i++] = 0x80 | (code & 0x3f);\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++index) & 0x3ff));\n blocks[i++] = 0xf0 | (code >> 18);\n blocks[i++] = 0x80 | ((code >> 12) & 0x3f);\n blocks[i++] = 0x80 | ((code >> 6) & 0x3f);\n blocks[i++] = 0x80 | (code & 0x3f);\n }\n }\n bytes += i - start;\n start = i - 5;\n if (index === length) {\n ++index;\n }\n if (index > length && i < 6) {\n end = true;\n }\n v1 = blocks[0];\n if (i > 4) {\n v2 = blocks[1];\n v3 = blocks[2];\n v4 = blocks[3];\n v5 = blocks[4];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3 | v5 >>> 5) & 31] +\n BASE32_ENCODE_CHAR[v5 & 31];\n } else if (i === 1) {\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2) & 31] +\n '======';\n } else if (i === 2) {\n v2 = blocks[1];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4) & 31] +\n '====';\n } else if (i === 3) {\n v2 = blocks[1];\n v3 = blocks[2];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1) & 31] +\n '===';\n } else {\n v2 = blocks[1];\n v3 = blocks[2];\n v4 = blocks[3];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3) & 31] +\n '=';\n }\n } while (!end);\n return base32Str;\n };\n\n var encodeBytes = function (bytes) {\n var v1, v2, v3, v4, v5, base32Str = '', length = bytes.length;\n for (var i = 0, count = parseInt(length / 5) * 5; i < count;) {\n v1 = bytes[i++];\n v2 = bytes[i++];\n v3 = bytes[i++];\n v4 = bytes[i++];\n v5 = bytes[i++];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3 | v5 >>> 5) & 31] +\n BASE32_ENCODE_CHAR[v5 & 31];\n }\n\n // remain char\n var remain = length - count;\n if (remain === 1) {\n v1 = bytes[i];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2) & 31] +\n '======';\n } else if (remain === 2) {\n v1 = bytes[i++];\n v2 = bytes[i];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4) & 31] +\n '====';\n } else if (remain === 3) {\n v1 = bytes[i++];\n v2 = bytes[i++];\n v3 = bytes[i];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1) & 31] +\n '===';\n } else if (remain === 4) {\n v1 = bytes[i++];\n v2 = bytes[i++];\n v3 = bytes[i++];\n v4 = bytes[i];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3) & 31] +\n '=';\n }\n return base32Str;\n };\n\n var encode = function (input, asciiOnly) {\n var notString = typeof(input) !== 'string';\n if (notString && input.constructor === ArrayBuffer) {\n input = new Uint8Array(input);\n }\n if (notString) {\n return encodeBytes(input);\n } else if (asciiOnly) {\n return encodeAscii(input);\n } else {\n return encodeUtf8(input);\n }\n };\n\n var decode = function (base32Str, asciiOnly) {\n if (!asciiOnly) {\n return toUtf8String(decodeAsBytes(base32Str));\n }\n if (!/^[A-Z2-7=]+$/.test(base32Str)) {\n throw new Error('Invalid base32 characters');\n }\n var v1, v2, v3, v4, v5, v6, v7, v8, str = '', length = base32Str.indexOf('=');\n if (length === -1) {\n length = base32Str.length;\n }\n\n // 8 char to 5 bytes\n for (var i = 0, count = length >> 3 << 3; i < count;) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v8 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255) +\n String.fromCharCode((v2 << 6 | v3 << 1 | v4 >>> 4) & 255) +\n String.fromCharCode((v4 << 4 | v5 >>> 1) & 255) +\n String.fromCharCode((v5 << 7 | v6 << 2 | v7 >>> 3) & 255) +\n String.fromCharCode((v7 << 5 | v8) & 255);\n }\n\n // remain bytes\n var remain = length - count;\n if (remain === 2) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255);\n } else if (remain === 4) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255) +\n String.fromCharCode((v2 << 6 | v3 << 1 | v4 >>> 4) & 255);\n } else if (remain === 5) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255) +\n String.fromCharCode((v2 << 6 | v3 << 1 | v4 >>> 4) & 255) +\n String.fromCharCode((v4 << 4 | v5 >>> 1) & 255);\n } else if (remain === 7) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255) +\n String.fromCharCode((v2 << 6 | v3 << 1 | v4 >>> 4) & 255) +\n String.fromCharCode((v4 << 4 | v5 >>> 1) & 255) +\n String.fromCharCode((v5 << 7 | v6 << 2 | v7 >>> 3) & 255);\n }\n return str;\n };\n\n var exports = {\n encode: encode,\n decode: decode\n };\n decode.asBytes = decodeAsBytes;\n\n if (COMMON_JS) {\n module.exports = exports;\n } else {\n root.base32 = exports;\n if (AMD) {\n define(function() {\n return exports;\n });\n }\n }\n})();\n","/* @flow */\n\nimport type { Component, ComponentDriverType } from '../component/component';\n\nexport let script : ComponentDriverType<*, Document> = {\n\n global() : ?Document {\n return window.document;\n },\n\n register(component : Component<*>, document : Document) {\n\n function render(element : HTMLElement) {\n\n if (!element || !element.tagName || element.tagName.toLowerCase() !== 'script') {\n return;\n }\n\n // $FlowFixMe\n if (!element.attributes.type || element.attributes.type.value !== 'application/x-component' || !element.parentNode) {\n return;\n }\n\n let tag = element.getAttribute('data-component');\n\n if (!tag || tag !== component.tag) {\n return;\n }\n\n component.log(`instantiate_script_component`);\n\n let props : { [string] : mixed } = element.innerText\n ? eval(`(${ element.innerText })`) // eslint-disable-line no-eval, security/detect-eval-with-expression\n : {};\n\n let container = document.createElement('div');\n\n if (!element.parentNode) {\n throw new Error(`Element has no parent`);\n }\n\n element.parentNode.replaceChild(container, element);\n\n // $FlowFixMe\n component.render(props, container);\n }\n\n function scan() {\n let scriptTags = Array.prototype.slice.call(document.getElementsByTagName('script'));\n\n for (let element of scriptTags) {\n render(element);\n }\n }\n\n scan();\n document.addEventListener('DOMContentLoaded', scan);\n window.addEventListener('load', scan);\n\n document.addEventListener('DOMNodeInserted', event => {\n // $FlowFixMe\n render(event.target);\n });\n }\n};\n","/* @flow */\n\nimport { extend } from '../lib';\nimport type { Component, ComponentDriverType } from '../component/component';\n\ndeclare class ReactClassType {\n\n}\n\ntype ReactElementType = {\n\n};\n\ntype ReactType = {\n createClass : ({ render : ReactElementType, componentDidMount : () => void, componentDidUpdate : () => void }) => (typeof ReactClassType),\n createElement : (string, ?{ [string] : mixed }, ...children : Array) => ReactElementType\n};\n\ntype ReactDomType = {\n findDOMNode : (ReactElementType) => HTMLElement\n};\n\ntype ReactLibraryType = { React : ReactType, ReactDOM : ReactDomType };\n\nexport let react : ComponentDriverType<*, ReactLibraryType> = {\n\n global() : ?ReactLibraryType {\n if (window.React && window.ReactDOM) {\n return {\n React: window.React,\n ReactDOM: window.ReactDOM\n };\n }\n },\n\n register(component : Component<*>, { React, ReactDOM } : ReactLibraryType) : (typeof ReactClassType) {\n\n if (React.createClass) {\n\n // $FlowFixMe\n component.react = React.createClass({\n\n render() : ReactElementType {\n return React.createElement('div', null);\n },\n\n componentDidMount() {\n component.log(`instantiate_react_component`);\n\n let el = ReactDOM.findDOMNode(this);\n\n let parent = component.init(extend({}, this.props), null, el);\n\n this.setState({ parent });\n\n parent.render(el);\n },\n\n componentDidUpdate() {\n\n if (this.state && this.state.parent) {\n this.state.parent.updateProps(extend({}, this.props));\n }\n },\n\n componentWillUnmount() {\n if (this.state && this.state.parent) {\n this.state.parent.destroy();\n }\n }\n });\n } else {\n // $FlowFixMe\n component.react = class extends React.Component {\n render() : ReactElementType {\n return React.createElement('div', null);\n }\n\n componentDidMount() {\n component.log(`instantiate_react_component`);\n\n let el = ReactDOM.findDOMNode(this);\n\n let parent = component.init(extend({}, this.props), null, el);\n\n this.setState({ parent });\n\n parent.render(el);\n }\n\n componentDidUpdate() {\n\n if (this.state && this.state.parent) {\n this.state.parent.updateProps(extend({}, this.props));\n }\n }\n\n componentWillUnmount() {\n if (this.state && this.state.parent) {\n this.state.parent.destroy();\n }\n }\n };\n }\n\n return component.react;\n }\n};\n","/* @flow */\n\nimport type { Component, ComponentDriverType } from '../component/component';\nimport { extend } from '../lib';\n\ntype VueComponent = {\n render : (Function) => Element,\n inheritAttrs : boolean,\n mounted : () => void,\n beforeUpdate : () => void\n};\n\nexport let vue : ComponentDriverType<*, void> = {\n\n global() {\n // pass\n },\n\n register

(component : Component

) : VueComponent {\n\n return {\n render(createElement) : Element {\n return createElement('div');\n },\n\n inheritAttrs: false,\n\n mounted() {\n let el = this.$el;\n\n // $FlowFixMe\n this.parent = component.init(extend({}, this.$attrs), null, el);\n\n this.parent.render(el);\n },\n\n beforeUpdate() {\n \n if (this.parent && this.$attrs) {\n this.parent.updateProps(extend({}, this.$attrs));\n }\n }\n };\n }\n};\n","/* @flow */\n\nimport { dasherizeToCamel, replaceObject } from '../lib';\nimport type { Component, ComponentDriverType } from '../component/component';\n\ntype AngularModule = {\n directive : (string, () => {\n scope : { [string] : '=' | '@' },\n restrict : string,\n controller : Array\n }) => AngularModule\n};\n\ntype Angular = {\n module : (string, Array) => AngularModule\n};\n\nexport let angular : ComponentDriverType<*, Angular> = {\n\n global() : ?Angular {\n return window.angular;\n },\n\n register(component : Component<*>, ng : Angular) : AngularModule {\n\n let module = ng.module(component.tag, []).directive(dasherizeToCamel(component.tag), () => {\n\n let scope = {};\n\n for (let key of component.getPropNames()) {\n scope[key] = '=';\n }\n\n if (component.looseProps) {\n scope.props = '=';\n }\n\n return {\n scope,\n\n restrict: 'E',\n\n controller: [ '$scope', '$element', ($scope, $element) => {\n\n if (component.looseProps && !$scope.props) {\n throw new Error(`For angular bindings to work, prop definitions must be passed to zoid.create`);\n }\n\n component.log(`instantiate_angular_component`);\n\n function safeApply() {\n if ($scope.$root.$$phase !== '$apply' && $scope.$root.$$phase !== '$digest') {\n try {\n $scope.$apply();\n } catch (err) {\n // pass\n }\n }\n }\n\n let getProps = () => {\n\n let scopeProps;\n\n if ($scope.props) {\n scopeProps = $scope.props;\n } else {\n scopeProps = {};\n for (let key of Object.keys(scope)) {\n if ($scope[key] !== undefined) {\n scopeProps[key] = $scope[key];\n }\n }\n }\n\n scopeProps = replaceObject(scopeProps, {\n 'function': (value) => {\n return function angularWrapped() : mixed {\n let result = value.apply(this, arguments);\n safeApply();\n return result;\n };\n }\n });\n\n return scopeProps;\n };\n\n let parent = component.init(getProps(), null, $element[0]);\n parent.render($element[0]);\n\n $scope.$watch(() => {\n parent.updateProps(getProps());\n });\n } ]\n };\n });\n\n return module;\n }\n};\n","/* @flow */\n\nimport type { Component, ComponentDriverType } from '../component/component';\n\ndeclare class GlimmerComponentType {\n element : HTMLElement,\n args : Object\n}\n\nexport let glimmer : ComponentDriverType<*, (typeof GlimmerComponentType)> = {\n\n global() {\n // pass\n },\n\n register(component : Component<*>, GlimmerComponent : (typeof GlimmerComponentType)) : (typeof GlimmerComponentType) {\n return class extends GlimmerComponent {\n didInsertElement() {\n component.render({ ...this.args }, this.element);\n }\n };\n }\n};\n","/* @flow */\n/* eslint new-cap: 0 */\n\nimport { replaceObject } from '../lib';\nimport type { Component, ComponentDriverType } from '../component/component';\n\ntype Angular2Injection = {};\n\ntype Angular2Component = {};\n\ntype Angular2Module = {};\n\ntype Angular2 = {\n Component : ({ selector : string, template : string, inputs : Array }) => {\n Class : ({ constructor : Array, ngOnInit : () => void, ngOnChanges : () => void }) => Angular2Component\n },\n NgModule : ({ declarations : Array, exports : Array }) => {\n Class : ({ constructor : () => void }) => Angular2Module\n },\n ElementRef : Angular2Injection,\n NgZone : Angular2Injection\n};\n\n\nexport let angular2 : ComponentDriverType<*, Angular2> = {\n\n global() {\n // pass\n },\n\n register(zoid : Component<*>, { Component : AngularComponent, NgModule, ElementRef, NgZone }) : Angular2Module {\n\n zoid.log('initializing angular2 component');\n\n let getProps = (component) => {\n return replaceObject({ ...component.internalProps, ...component.props }, {\n 'function': (value) => {\n if (typeof value === 'function') {\n return function angular2Wrapped() : void {\n return component.zone.run(() => value.apply(this, arguments));\n };\n }\n }\n });\n };\n\n const ComponentInstance =\n AngularComponent({\n selector: zoid.tag,\n template: '

',\n inputs: [ 'props' ]\n }).Class({\n constructor: [ ElementRef, NgZone, function angularConstructor(elementRef, zone) {\n this.elementRef = elementRef;\n this.zone = zone;\n } ],\n ngOnInit () {\n const targetElement = this.elementRef.nativeElement;\n const parent = zoid.init(getProps(this), null, targetElement);\n parent.render(targetElement);\n this.parent = parent;\n },\n ngOnChanges() {\n if (this.parent) {\n this.parent.updateProps(getProps(this));\n }\n }\n });\n\n\n const ModuleInstance = NgModule({\n declarations: [ ComponentInstance ],\n exports: [ ComponentInstance ]\n }).Class({\n constructor () {\n // pass\n }\n });\n\n return ModuleInstance;\n }\n};\n","/*!\n * Bowser - a browser detector\n * https://github.com/ded/bowser\n * MIT License | (c) Dustin Diaz 2015\n */\n!function(e,t,n){typeof module!=\"undefined\"&&module.exports?module.exports=n():typeof define==\"function\"&&define.amd?define(t,n):e[t]=n()}(this,\"bowser\",function(){function t(t){function n(e){var n=t.match(e);return n&&n.length>1&&n[1]||\"\"}function r(e){var n=t.match(e);return n&&n.length>1&&n[2]||\"\"}function C(e){switch(e){case\"NT\":return\"NT\";case\"XP\":return\"XP\";case\"NT 5.0\":return\"2000\";case\"NT 5.1\":return\"XP\";case\"NT 5.2\":return\"2003\";case\"NT 6.0\":return\"Vista\";case\"NT 6.1\":return\"7\";case\"NT 6.2\":return\"8\";case\"NT 6.3\":return\"8.1\";case\"NT 10.0\":return\"10\";default:return undefined}}var i=n(/(ipod|iphone|ipad)/i).toLowerCase(),o=/like android/i.test(t),u=!o&&/android/i.test(t),a=/nexus\\s*[0-6]\\s*/i.test(t),f=!a&&/nexus\\s*[0-9]+/i.test(t),l=/CrOS/.test(t),c=/silk/i.test(t),h=/sailfish/i.test(t),p=/tizen/i.test(t),d=/(web|hpw)(o|0)s/i.test(t),v=/windows phone/i.test(t),m=/SamsungBrowser/i.test(t),g=!v&&/windows/i.test(t),y=!i&&!c&&/macintosh/i.test(t),b=!u&&!h&&!p&&!d&&/linux/i.test(t),w=r(/edg([ea]|ios)\\/(\\d+(\\.\\d+)?)/i),E=n(/version\\/(\\d+(\\.\\d+)?)/i),S=/tablet/i.test(t)&&!/tablet pc/i.test(t),x=!S&&/[^-]mobi/i.test(t),T=/xbox/i.test(t),N;/opera/i.test(t)?N={name:\"Opera\",opera:e,version:E||n(/(?:opera|opr|opios)[\\s\\/](\\d+(\\.\\d+)?)/i)}:/opr\\/|opios/i.test(t)?N={name:\"Opera\",opera:e,version:n(/(?:opr|opios)[\\s\\/](\\d+(\\.\\d+)?)/i)||E}:/SamsungBrowser/i.test(t)?N={name:\"Samsung Internet for Android\",samsungBrowser:e,version:E||n(/(?:SamsungBrowser)[\\s\\/](\\d+(\\.\\d+)?)/i)}:/Whale/i.test(t)?N={name:\"NAVER Whale browser\",whale:e,version:n(/(?:whale)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/MZBrowser/i.test(t)?N={name:\"MZ Browser\",mzbrowser:e,version:n(/(?:MZBrowser)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/coast/i.test(t)?N={name:\"Opera Coast\",coast:e,version:E||n(/(?:coast)[\\s\\/](\\d+(\\.\\d+)?)/i)}:/focus/i.test(t)?N={name:\"Focus\",focus:e,version:n(/(?:focus)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/yabrowser/i.test(t)?N={name:\"Yandex Browser\",yandexbrowser:e,version:E||n(/(?:yabrowser)[\\s\\/](\\d+(\\.\\d+)?)/i)}:/ucbrowser/i.test(t)?N={name:\"UC Browser\",ucbrowser:e,version:n(/(?:ucbrowser)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/mxios/i.test(t)?N={name:\"Maxthon\",maxthon:e,version:n(/(?:mxios)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/epiphany/i.test(t)?N={name:\"Epiphany\",epiphany:e,version:n(/(?:epiphany)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/puffin/i.test(t)?N={name:\"Puffin\",puffin:e,version:n(/(?:puffin)[\\s\\/](\\d+(?:\\.\\d+)?)/i)}:/sleipnir/i.test(t)?N={name:\"Sleipnir\",sleipnir:e,version:n(/(?:sleipnir)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/k-meleon/i.test(t)?N={name:\"K-Meleon\",kMeleon:e,version:n(/(?:k-meleon)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:v?(N={name:\"Windows Phone\",osname:\"Windows Phone\",windowsphone:e},w?(N.msedge=e,N.version=w):(N.msie=e,N.version=n(/iemobile\\/(\\d+(\\.\\d+)?)/i))):/msie|trident/i.test(t)?N={name:\"Internet Explorer\",msie:e,version:n(/(?:msie |rv:)(\\d+(\\.\\d+)?)/i)}:l?N={name:\"Chrome\",osname:\"Chrome OS\",chromeos:e,chromeBook:e,chrome:e,version:n(/(?:chrome|crios|crmo)\\/(\\d+(\\.\\d+)?)/i)}:/edg([ea]|ios)/i.test(t)?N={name:\"Microsoft Edge\",msedge:e,version:w}:/vivaldi/i.test(t)?N={name:\"Vivaldi\",vivaldi:e,version:n(/vivaldi\\/(\\d+(\\.\\d+)?)/i)||E}:h?N={name:\"Sailfish\",osname:\"Sailfish OS\",sailfish:e,version:n(/sailfish\\s?browser\\/(\\d+(\\.\\d+)?)/i)}:/seamonkey\\//i.test(t)?N={name:\"SeaMonkey\",seamonkey:e,version:n(/seamonkey\\/(\\d+(\\.\\d+)?)/i)}:/firefox|iceweasel|fxios/i.test(t)?(N={name:\"Firefox\",firefox:e,version:n(/(?:firefox|iceweasel|fxios)[ \\/](\\d+(\\.\\d+)?)/i)},/\\((mobile|tablet);[^\\)]*rv:[\\d\\.]+\\)/i.test(t)&&(N.firefoxos=e,N.osname=\"Firefox OS\")):c?N={name:\"Amazon Silk\",silk:e,version:n(/silk\\/(\\d+(\\.\\d+)?)/i)}:/phantom/i.test(t)?N={name:\"PhantomJS\",phantom:e,version:n(/phantomjs\\/(\\d+(\\.\\d+)?)/i)}:/slimerjs/i.test(t)?N={name:\"SlimerJS\",slimer:e,version:n(/slimerjs\\/(\\d+(\\.\\d+)?)/i)}:/blackberry|\\bbb\\d+/i.test(t)||/rim\\stablet/i.test(t)?N={name:\"BlackBerry\",osname:\"BlackBerry OS\",blackberry:e,version:E||n(/blackberry[\\d]+\\/(\\d+(\\.\\d+)?)/i)}:d?(N={name:\"WebOS\",osname:\"WebOS\",webos:e,version:E||n(/w(?:eb)?osbrowser\\/(\\d+(\\.\\d+)?)/i)},/touchpad\\//i.test(t)&&(N.touchpad=e)):/bada/i.test(t)?N={name:\"Bada\",osname:\"Bada\",bada:e,version:n(/dolfin\\/(\\d+(\\.\\d+)?)/i)}:p?N={name:\"Tizen\",osname:\"Tizen\",tizen:e,version:n(/(?:tizen\\s?)?browser\\/(\\d+(\\.\\d+)?)/i)||E}:/qupzilla/i.test(t)?N={name:\"QupZilla\",qupzilla:e,version:n(/(?:qupzilla)[\\s\\/](\\d+(?:\\.\\d+)+)/i)||E}:/chromium/i.test(t)?N={name:\"Chromium\",chromium:e,version:n(/(?:chromium)[\\s\\/](\\d+(?:\\.\\d+)?)/i)||E}:/chrome|crios|crmo/i.test(t)?N={name:\"Chrome\",chrome:e,version:n(/(?:chrome|crios|crmo)\\/(\\d+(\\.\\d+)?)/i)}:u?N={name:\"Android\",version:E}:/safari|applewebkit/i.test(t)?(N={name:\"Safari\",safari:e},E&&(N.version=E)):i?(N={name:i==\"iphone\"?\"iPhone\":i==\"ipad\"?\"iPad\":\"iPod\"},E&&(N.version=E)):/googlebot/i.test(t)?N={name:\"Googlebot\",googlebot:e,version:n(/googlebot\\/(\\d+(\\.\\d+))/i)||E}:N={name:n(/^(.*)\\/(.*) /),version:r(/^(.*)\\/(.*) /)},!N.msedge&&/(apple)?webkit/i.test(t)?(/(apple)?webkit\\/537\\.36/i.test(t)?(N.name=N.name||\"Blink\",N.blink=e):(N.name=N.name||\"Webkit\",N.webkit=e),!N.version&&E&&(N.version=E)):!N.opera&&/gecko\\//i.test(t)&&(N.name=N.name||\"Gecko\",N.gecko=e,N.version=N.version||n(/gecko\\/(\\d+(\\.\\d+)?)/i)),!N.windowsphone&&(u||N.silk)?(N.android=e,N.osname=\"Android\"):!N.windowsphone&&i?(N[i]=e,N.ios=e,N.osname=\"iOS\"):y?(N.mac=e,N.osname=\"macOS\"):T?(N.xbox=e,N.osname=\"Xbox\"):g?(N.windows=e,N.osname=\"Windows\"):b&&(N.linux=e,N.osname=\"Linux\");var k=\"\";N.windows?k=C(n(/Windows ((NT|XP)( \\d\\d?.\\d)?)/i)):N.windowsphone?k=n(/windows phone (?:os)?\\s?(\\d+(\\.\\d+)*)/i):N.mac?(k=n(/Mac OS X (\\d+([_\\.\\s]\\d+)*)/i),k=k.replace(/[_\\s]/g,\".\")):i?(k=n(/os (\\d+([_\\s]\\d+)*) like mac os x/i),k=k.replace(/[_\\s]/g,\".\")):u?k=n(/android[ \\/-](\\d+(\\.\\d+)*)/i):N.webos?k=n(/(?:web|hpw)os\\/(\\d+(\\.\\d+)*)/i):N.blackberry?k=n(/rim\\stablet\\sos\\s(\\d+(\\.\\d+)*)/i):N.bada?k=n(/bada\\/(\\d+(\\.\\d+)*)/i):N.tizen&&(k=n(/tizen[\\/\\s](\\d+(\\.\\d+)*)/i)),k&&(N.osversion=k);var L=!N.windows&&k.split(\".\")[0];if(S||f||i==\"ipad\"||u&&(L==3||L>=4&&!x)||N.silk)N.tablet=e;else if(x||i==\"iphone\"||i==\"ipod\"||u||a||N.blackberry||N.webos||N.bada)N.mobile=e;return N.msedge||N.msie&&N.version>=10||N.yandexbrowser&&N.version>=15||N.vivaldi&&N.version>=1||N.chrome&&N.version>=20||N.samsungBrowser&&N.version>=4||N.whale&&s([N.version,\"1.0\"])===1||N.mzbrowser&&s([N.version,\"6.0\"])===1||N.focus&&s([N.version,\"1.0\"])===1||N.firefox&&N.version>=20||N.safari&&N.version>=6||N.opera&&N.version>=10||N.ios&&N.osversion&&N.osversion.split(\".\")[0]>=6||N.blackberry&&N.version>=10.1||N.chromium&&N.version>=20?N.a=e:N.msie&&N.version<10||N.chrome&&N.version<20||N.firefox&&N.version<20||N.safari&&N.version<6||N.opera&&N.version<10||N.ios&&N.osversion&&N.osversion.split(\".\")[0]<6||N.chromium&&N.version<20?N.c=e:N.x=e,N}function r(e){return e.split(\".\").length}function i(e,t){var n=[],r;if(Array.prototype.map)return Array.prototype.map.call(e,t);for(r=0;r=0){if(n[0][t]>n[1][t])return 1;if(n[0][t]!==n[1][t])return-1;if(t===0)return 0}}function o(e,r,i){var o=n;typeof r==\"string\"&&(i=r,r=void 0),r===void 0&&(r=!1),i&&(o=t(i));var u=\"\"+o.version;for(var a in e)if(e.hasOwnProperty(a)&&o[a]){if(typeof e[a]!=\"string\")throw new Error(\"Browser version in the minVersion map should be a string: \"+a+\": \"+String(e));return s([u,e[a]])<0}return r}function u(e,t,n){return!o(e,t,n)}var e=!0,n=t(typeof navigator!=\"undefined\"?navigator.userAgent||\"\":\"\");return n.test=function(e){for(var t=0;t\\n \\n \\n \\n \\n \\n \\n \\n \\n\\n\"","module.exports = \"\\n \\n \\n \\n\\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n \\n \\n \\n \\n \\n \\n \\n\\n\"","module.exports = \"\\n\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n \\n \\n \\n \\n \\n \\n \\n\\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n\\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n unionpay\\n Created with Sketch.\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","// get successful control from form and assemble into object\n// http://www.w3.org/TR/html401/interact/forms.html#h-17.13.2\n\n// types which indicate a submit action and are not successful controls\n// these will be ignored\nvar k_r_submitter = /^(?:submit|button|image|reset|file)$/i;\n\n// node names which could be successful controls\nvar k_r_success_contrls = /^(?:input|select|textarea|keygen)/i;\n\n// Matches bracket notation.\nvar brackets = /(\\[[^\\[\\]]*\\])/g;\n\n// serializes form fields\n// @param form MUST be an HTMLForm element\n// @param options is an optional argument to configure the serialization. Default output\n// with no options specified is a url encoded string\n// - hash: [true | false] Configure the output type. If true, the output will\n// be a js object.\n// - serializer: [function] Optional serializer function to override the default one.\n// The function takes 3 arguments (result, key, value) and should return new result\n// hash and url encoded str serializers are provided with this module\n// - disabled: [true | false]. If true serialize disabled fields.\n// - empty: [true | false]. If true serialize empty fields\nfunction serialize(form, options) {\n if (typeof options != 'object') {\n options = { hash: !!options };\n }\n else if (options.hash === undefined) {\n options.hash = true;\n }\n\n var result = (options.hash) ? {} : '';\n var serializer = options.serializer || ((options.hash) ? hash_serializer : str_serialize);\n\n var elements = form && form.elements ? form.elements : [];\n\n //Object store each radio and set if it's empty or not\n var radio_store = Object.create(null);\n\n for (var i=0 ; i\n \n
\n
\n \n \n
\n
\n {content.windowMessage}\n
\n
\n
\n
\n
\n
\n\n
\n {outlet}\n
\n\n \n
\n );\n\n const container = (\n \n \n { el }\n \n \n );\n\n on(EVENT.CLOSE, () => {\n el.className += ` ${ tag }-loading`;\n });\n\n return (\n
\n \n\n \n
\n );\n}\n\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { create } from 'zoid/src';\nimport { type Component } from 'zoid/src/component/component';\nimport { base64encode } from 'belter/src';\n\nimport { ENV } from '../constants';\nimport { getButtonSessionID, getBrowserLocale, getSessionID, getCurrentScriptUrl } from '../lib';\nimport { config } from '../config';\n\nimport { containerTemplate } from './template';\n\ntype BillingOptions = {|\n client : {\n [string] : (string | ZalgoPromise)\n },\n env? : string,\n locale? : string,\n logLevel : string,\n awaitPopupBridge : Function,\n meta : Object,\n commit : boolean,\n token : string\n|};\n\nexport const BillingPage : Component = create({\n tag: 'billing-page',\n name: 'billing-page',\n\n buildUrl(props) : string {\n const env = props.env || config.env;\n return `${ config.inlinedCardFieldUrls[env] }/billing`;\n },\n\n get domain() : Object {\n return {\n ...config.paypalDomains,\n [ ENV.LOCAL ]: /^http:\\/\\/localhost.paypal.com:\\d+$/\n };\n },\n\n scrolling: true,\n\n props: {\n sessionID: {\n type: 'string',\n required: false,\n def() : string {\n return getSessionID();\n },\n queryParam: true\n },\n\n\n token: {\n type: 'string',\n required: true,\n queryParam: true\n },\n\n buttonSessionID: {\n type: 'string',\n required: false,\n def() : ?string {\n return getButtonSessionID();\n },\n queryParam: true\n },\n\n commit: {\n type: 'boolean',\n required: false,\n queryParam: true\n },\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n },\n\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n allowDelegate: true,\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n }\n },\n\n cardType: {\n type: 'string',\n required: false\n },\n prefilledZipCode: {\n type: 'string',\n required: false\n },\n\n onEvent: {\n type: 'function',\n required: false,\n sameDomain: true\n },\n\n dispatch: {\n type: 'object',\n required: false,\n sameDomain: true\n },\n\n onCancel: {\n type: 'function',\n required: false,\n once: true,\n noop: true\n },\n\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n }\n },\n\n\n containerTemplate\n});\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { create } from 'zoid/src';\nimport { base64encode } from 'belter/src';\n\nimport { getBrowserLocale, getCurrentScriptUrl } from '../lib';\nimport { config } from '../config';\nimport { containerTemplate } from '../billing/template';\n\nexport const ThreeDomainSecure = create({\n tag: 'paypal-3ds',\n name: '3ds',\n\n buildUrl(props) : string {\n const env = props.env || config.env;\n return `${ config.inlinedCardFieldUrls[env] }/init3ds`;\n },\n\n get domain() : Object {\n return {\n ...config.paypalDomains\n };\n },\n\n scrolling: true,\n\n props: {\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n },\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n allowDelegate: true,\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n }\n },\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n },\n challengeUrl: {\n type: 'string'\n },\n threeDomainSecureToken: {\n type: 'string'\n },\n method: {\n type: 'string'\n },\n onSuccess: {\n type: 'function',\n required: false\n },\n onError: {\n type: 'function',\n required: false\n },\n onCancel: {\n type: 'function',\n required: true,\n allowDelegate: true\n }\n },\n\n\n containerTemplate\n});\n","/* @flow */\n\nimport { track, info } from 'beaver-logger/client';\n\nimport { config } from '../config';\nimport { FPTI, PPTM_ID } from '../constants';\nimport { stringifyError, extendUrl, loadScript, getElement, isPayPalDomain } from '../lib';\n\n\nfunction shouldCreateInitialPptmScript() : boolean {\n const id = window.location.hostname;\n\n if (!id) {\n return false;\n }\n\n if (isPayPalDomain()) {\n return false;\n }\n\n const existingScript = getElement(PPTM_ID);\n const alreadyDownloaded = Boolean(existingScript);\n\n if (alreadyDownloaded) {\n info('pptm_tried_loading_twice');\n return false;\n }\n\n return true;\n}\n\nfunction removePptm() {\n const script = getElement(PPTM_ID);\n\n if (script) {\n // $FlowFixMe\n script.parentNode.removeChild(script);\n }\n}\n\nexport function pptmFactory() : Object {\n let noContentFoundInContainer = false;\n const callback = `__pptmLoadedWithNoContent`;\n let listener;\n\n const obj = {\n /*\n In the button component, we set up a global window[callback] that will be called in pptm `onload` attribute.\n Button.render calls `reloadPptmScript`, which checks if window[callback] has been called yet (meaning, it checks\n if pptm.js was loaded before Button.render was called). If so, we'll check to see if we should reload PPTM\n now that we might have a client ID from the Button.render method.\n If pptm.js hasn't loaded yet, then we'll set up a listener to the same logic above to defer it until\n pptm.js actually loads.\n */\n reloadPptmScript(clientId : ?string) {\n const tryCreatePptmScript = () => {\n if (obj.shouldReloadPptmScript(clientId)) {\n obj.removePptm();\n obj.createPptmScript(clientId);\n } else {\n // Defer until later, since reloadPptmScript might have been called\n // before pptm loaded, so we'll still want to hook into the script load.\n listener = tryCreatePptmScript;\n }\n };\n\n tryCreatePptmScript();\n },\n listenForLoadWithNoContent() {\n window[callback] = () => {\n noContentFoundInContainer = true;\n\n if (listener) {\n listener();\n listener = undefined;\n }\n };\n },\n listenForButtonRender() {\n window.paypalDDL = window.paypalDDL || [];\n const buttonRenderEvent = window.paypalDDL.filter(e => e.event === 'paypalButtonRender');\n if (buttonRenderEvent.length === 0) {\n window.paypalDDL.push({ event: 'paypalButtonRender' });\n }\n },\n get callback() : string {\n return callback;\n },\n get noContentFoundInContainer() : boolean {\n return noContentFoundInContainer;\n },\n createPptmScript: (clientId : ?string) => {\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.PPTM,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.PPTM_LOAD\n });\n \n const params = {\n t: 'xo',\n id: window.location.hostname,\n mrid: config.merchantID,\n client_id: '',\n v: config.version,\n source: 'checkoutjs'\n };\n \n if (clientId) {\n params.client_id = clientId;\n } else {\n delete params.client_id;\n }\n \n const fullUrl = extendUrl(config.pptmUrl, params);\n \n loadScript(fullUrl, 0, {\n async: true,\n id: PPTM_ID\n }).then(() => {\n // If the snippet is empty, then fire the callback.\n // We assume non-empty pptm.js bundles with init the paypalDDL and push an event called\n // `snippetRun` to it.\n if (!(window.paypalDDL && window.paypalDDL[0] && window.paypalDDL[0].event === 'snippetRun')) {\n window[callback]();\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.PPTM,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.PPTM_LOADED\n });\n }).catch(err => {\n info('pptm_script_error', { error: stringifyError(err) });\n });\n },\n shouldCreateInitialPptmScript,\n /*\n During Button render if a client ID was provided, we'll want to refresh the\n pptm script to try to pull down a container by that value.\n We'll only do this if we're not on the PayPal domain, or if\n a merchant ID wasn't already provided (since container look-up can\n also happen by merchant ID). Note that this will only happen\n if there was no content found in the container that was pulled down\n in the `setup` script. This is important because we don't want\n to pull down multiple containers that actually contain content,\n otherwise we'll be firing duplicate tags.\n */\n shouldReloadPptmScript(clientId : ?string) : boolean {\n if (noContentFoundInContainer === false) {\n return false;\n }\n\n if (isPayPalDomain()) {\n return false;\n }\n \n // If a merchant ID was already provided, then that meant we initially\n // loaded the pptm script with that value as the main container\n // look-up value, so in this case we don't want to reload pptm.\n if (config.merchantID) {\n return false;\n }\n \n if (clientId) {\n return true;\n }\n \n return false;\n },\n removePptm\n };\n\n return obj;\n}\n","/* @flow */\n\nimport { pptmFactory } from './pptm-factory';\n\nexport const pptm = pptmFactory();\n","/* @flow */\n\nexport * from './pptm';\nexport * from './pptm-factory';\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { on, send } from 'post-robot/src';\nimport { base64encode } from 'belter/src';\nimport { info, track } from 'beaver-logger/client';\nimport { getAncestor, isSameDomain } from 'cross-domain-utils/src';\n\nimport { config } from '../config';\nimport { FPTI, PAYMENT_TYPE } from '../constants';\nimport { request, memoize, isPayPalDomain, uniqueID } from '../lib';\n\ntype ProxyRest = {\n [string] : (...args : $ReadOnlyArray) => ZalgoPromise<*>\n};\n\nlet proxyRest : ProxyRest = {};\n\nconst createAccessToken = memoize((env : string, client : { [key : string] : string }) : ZalgoPromise => {\n\n info(`rest_api_create_access_token`);\n\n env = env || config.env;\n\n const clientID : string = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (proxyRest.createAccessToken && !proxyRest.createAccessToken.source.closed) {\n return proxyRest.createAccessToken(env, client);\n }\n\n const basicAuth : string = base64encode(`${ clientID }:`);\n\n return request({\n\n method: `post`,\n url: config.authApiUrls[env],\n headers: {\n Authorization: `Basic ${ basicAuth }`\n },\n data: {\n grant_type: `client_credentials`\n }\n\n }).then(res => {\n\n if (res && res.error === 'invalid_client') {\n throw new Error(`Auth Api invalid ${ env } client id: ${ clientID }:\\n\\n${ JSON.stringify(res, null, 4) }`);\n }\n\n if (!res || !res.access_token) {\n throw new Error(`Auth Api response error:\\n\\n${ JSON.stringify(res, null, 4) }`);\n }\n\n return res.access_token;\n });\n\n}, { time: 10 * 60 * 1000 });\n\nconst createExperienceProfile = memoize((env : string, client : { [key : string] : string }, experienceDetails : Object = {}) : ZalgoPromise => {\n\n info(`rest_api_create_experience_profile`);\n\n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (proxyRest.createExperienceProfile && !proxyRest.createExperienceProfile.source.closed) {\n return proxyRest.createExperienceProfile(env, client, experienceDetails);\n }\n\n experienceDetails.temporary = true;\n experienceDetails.name = experienceDetails.name ? `${ experienceDetails.name }_${ Math.random().toString() }` : Math.random().toString();\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n return request({\n method: `post`,\n url: config.experienceApiUrls[env],\n headers: {\n Authorization: `Bearer ${ accessToken }`\n },\n json: experienceDetails\n });\n\n }).then((res) : string => {\n\n if (res && res.error) {\n throw new Error(res.error);\n }\n\n if (!res.id) {\n throw new Error(`No id in experience profile response:\\n\\n${ JSON.stringify(res, null, 4) }`);\n }\n\n return res.id;\n });\n\n}, { time: 10 * 60 * 1000 });\n\nfunction logPaymentResponse(res) {\n\n if (!res) {\n return;\n }\n\n let paymentToken;\n let paymentID;\n\n if (res.id) {\n paymentID = res.id;\n }\n\n if (res.links && res.links.length) {\n for (let i = 0; i < res.links.length; i++) {\n if (res.links[i].method === 'REDIRECT' && res.links[i].rel === 'approval_url') {\n const match = res.links[i].href.match(/token=((EC-)?[A-Z0-9]{17})/);\n if (match) {\n paymentToken = match[1];\n }\n }\n }\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.BUTTON,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CREATE_PAYMENT,\n [ FPTI.KEY.CONTEXT_TYPE ]: FPTI.CONTEXT_TYPE[PAYMENT_TYPE.PAY_ID],\n [ FPTI.KEY.PAY_ID ]: paymentID,\n [ FPTI.KEY.TOKEN ]: paymentToken,\n [ FPTI.KEY.CONTEXT_ID ]: paymentID\n });\n}\n\nfunction getDefaultReturnUrl() : string {\n return `https://www.paypal.com/checkoutnow/error`;\n}\n\nfunction createTracking(env : string, client : { [key : string] : string }, merchantID, trackingData) : Object {\n \n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n const trackingID = uniqueID();\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n const headers : Object = {\n Authorization: `Bearer ${ accessToken }`\n };\n\n return request({\n method: `put`,\n url: `${ config.trackingApiUrls[env] }/${ merchantID }/${ trackingID }`,\n headers,\n json: {\n 'tracking_id': trackingID,\n 'additional_data': trackingData\n }\n });\n\n }).then(() => {\n return trackingID;\n });\n}\n\nfunction createPayment(env : string, client : { [key : string] : string }, paymentDetails : Object) : ZalgoPromise {\n\n info(`rest_api_create_checkout_token`);\n\n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n let { payment, experience, meta, tracking } = paymentDetails;\n\n if (!payment) {\n throw new Error(`Expected payment details to be passed`);\n }\n\n if (proxyRest.createPayment && !proxyRest.createPayment.source.closed) {\n return proxyRest.createPayment(env, client, { payment, experience, meta, tracking });\n }\n\n payment = { ...payment };\n payment.intent = payment.intent || 'sale';\n payment.redirect_urls = payment.redirect_urls || {};\n payment.redirect_urls.return_url = payment.redirect_urls.return_url || getDefaultReturnUrl();\n payment.redirect_urls.cancel_url = payment.redirect_urls.cancel_url || getDefaultReturnUrl();\n payment.payer = payment.payer || {};\n payment.payer.payment_method = payment.payer.payment_method || 'paypal';\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n return ZalgoPromise.try(() => {\n\n if (experience) {\n return ZalgoPromise.resolve(createExperienceProfile(env, client, experience));\n }\n\n }).then((experienceID) : ZalgoPromise => {\n\n return ZalgoPromise.try(() => {\n\n if (tracking) {\n return ZalgoPromise.resolve(createTracking(env, client, tracking.id, tracking.data));\n }\n\n }).then((trackingID) : ZalgoPromise => {\n\n if (experienceID) {\n payment.experience_profile_id = experienceID;\n }\n\n const headers : Object = {\n Authorization: `Bearer ${ accessToken }`\n };\n\n if (trackingID) {\n headers['Paypal-Client-Metadata-Id'] = trackingID;\n }\n\n if (meta && meta.partner_attribution_id) {\n headers['PayPal-Partner-Attribution-Id'] = meta.partner_attribution_id;\n }\n\n return request({\n method: `post`,\n url: config.paymentApiUrls[env],\n headers,\n json: payment\n });\n });\n });\n\n }).then((res) : string => {\n\n logPaymentResponse(res);\n\n if (res && res.id) {\n return res.id;\n }\n\n throw new Error(`Payment Api response error:\\n\\n${ JSON.stringify(res, null, 4) }`);\n\n });\n}\n\nfunction createOrder(env : string, client : { [key : string] : string }, paymentDetails : Object) : ZalgoPromise {\n\n info(`rest_api_create_order_token`);\n\n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n let { order, meta } = paymentDetails;\n\n if (!order) {\n throw new Error(`Expected order details to be passed`);\n }\n\n if (proxyRest.createOrder && !proxyRest.createOrder.source.closed) {\n return proxyRest.createOrder(env, client, { order, meta });\n }\n\n order = { ...order };\n order.intent = order.intent || 'CAPTURE';\n order.application_context = order.application_context || {};\n order.application_context.return_url = order.application_context.return_url || getDefaultReturnUrl();\n order.application_context.cancel_url = order.application_context.cancel_url || getDefaultReturnUrl();\n order.purchase_units = order.purchase_units || [];\n order.purchase_units[0] = order.purchase_units[0] || {};\n order.purchase_units.forEach(unit => {\n unit.reference_id = unit.reference_id || Math.random().toString();\n });\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n const headers : Object = {\n Authorization: `Bearer ${ accessToken }`\n };\n\n if (meta && meta.partner_attribution_id) {\n headers['PayPal-Partner-Attribution-Id'] = meta.partner_attribution_id;\n }\n\n return request({\n method: `post`,\n url: config.orderApiUrls[env],\n headers,\n json: order\n });\n\n }).then((res) : string => {\n\n logPaymentResponse(res);\n\n if (res && res.id) {\n return res.id;\n }\n\n throw new Error(`Payment Api response error:\\n\\n${ JSON.stringify(res, null, 4) }`);\n });\n}\n\nexport function createBillingAgreement(env : string, client : { [key : string] : string }, billingDetails : Object, experienceDetails? : ?Object) : ZalgoPromise {\n\n info(`rest_api_create_billing_token`);\n\n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (proxyRest.createBillingAgreement && !proxyRest.createBillingAgreement.source.closed) {\n return proxyRest.createBillingAgreement(env, client, billingDetails, experienceDetails);\n }\n\n billingDetails = { ...billingDetails };\n billingDetails.plan = billingDetails.plan || {};\n billingDetails.plan.merchant_preferences = billingDetails.plan.merchant_preferences || {};\n billingDetails.plan.merchant_preferences.return_url = billingDetails.plan.merchant_preferences.return_url || getDefaultReturnUrl();\n billingDetails.plan.merchant_preferences.cancel_url = billingDetails.plan.merchant_preferences.cancel_url || getDefaultReturnUrl();\n billingDetails.payer = billingDetails.payer || {};\n billingDetails.payer.payment_method = billingDetails.payer.payment_method || 'paypal';\n\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n return ZalgoPromise.try(() => {\n\n if (experienceDetails) {\n return ZalgoPromise.resolve(createExperienceProfile(env, client, experienceDetails));\n }\n\n }).then((experienceID) : ZalgoPromise => {\n\n if (experienceID) {\n billingDetails.experience_profile_id = experienceID;\n }\n\n return request({\n method: `post`,\n url: config.billingApiUrls[env],\n headers: {\n Authorization: `Bearer ${ accessToken }`\n },\n json: billingDetails\n });\n });\n\n }).then(res => {\n\n if (res && res.token_id) {\n return res.token_id;\n }\n\n throw new Error(`Billing Api response error:\\n\\n${ JSON.stringify(res, null, 4) }`);\n });\n}\n\nexport const rest = {\n payment: {\n create: createPayment\n },\n order: {\n create: createOrder\n },\n billingAgreement: {\n create: createBillingAgreement\n },\n experience: {\n create: createExperienceProfile\n }\n};\n\nconst PROXY_REST = `proxy_rest`;\nconst parentWin = getAncestor();\n\non(PROXY_REST, { domain: config.paypal_domain_regex }, ({ data }) => {\n proxyRest = data;\n});\n\nif (parentWin && isPayPalDomain() && !isSameDomain(parentWin)) {\n send(parentWin, PROXY_REST, { createAccessToken, createExperienceProfile, createPayment, createBillingAgreement, createOrder })\n .catch(() => {\n // pass\n });\n}\n","/* @flow */\n\nimport { info, track, immediateFlush } from 'beaver-logger/client';\n\nimport { FPTI, PAYMENT_TYPE } from './constants';\nimport { getReturnToken, getSessionState, getDomainSetting, eventEmitter } from './lib';\n\nexport const onAuthorizeListener = eventEmitter();\n\nfunction log(experiment : string, treatment : string, token : ?string, state : string) {\n\n getSessionState(session => {\n\n let event = `${ experiment }_${ treatment }_${ state }`;\n const loggedEvents = session.loggedExperimentEvents = session.loggedExperimentEvents || [];\n const duplicate = loggedEvents.indexOf(event) !== -1;\n\n if (duplicate) {\n info(`duplicate_${ event }`);\n\n } else {\n info(event);\n loggedEvents.push(event);\n\n const edge = window.navigator && window.navigator.userAgent && window.navigator.userAgent.match(/Edge\\/[0-9]{2}/);\n\n if (edge) {\n event = info(`${ edge[0].toLowerCase().replace('/', '_') }_${ event }`);\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: state,\n [ FPTI.KEY.EXPERIMENT_NAME ]: experiment,\n [ FPTI.KEY.TREATMENT_NAME ]: treatment,\n [ FPTI.KEY.TOKEN ]: token,\n [ FPTI.KEY.CONTEXT_ID ]: token,\n [ FPTI.KEY.CONTEXT_TYPE ]: token ? FPTI.CONTEXT_TYPE[PAYMENT_TYPE.EC_TOKEN] : FPTI.CONTEXT_TYPE.BUTTON_SESSION_ID\n });\n\n immediateFlush();\n }\n });\n}\n\nexport function logExperimentTreatment({ experiment, treatment, state, token } : { experiment : string, treatment : string, state : string, token : ?string }) {\n\n if (!experiment || !treatment) {\n return;\n }\n\n getSessionState(session => {\n session.externalExperiment = experiment;\n session.externalExperimentTreatment = treatment;\n\n if (token) {\n session.externalExperimentToken = token;\n }\n });\n\n log(experiment, treatment, token, state);\n}\n\nfunction logReturn(token : string) {\n\n const {\n externalExperiment,\n externalExperimentTreatment,\n externalExperimentToken\n } = getSessionState(session => session);\n\n if (externalExperiment && externalExperimentTreatment && externalExperimentToken === token) {\n log(externalExperiment, externalExperimentTreatment, token, `complete`);\n } else {\n info(`experiment_mismatch`, {\n token,\n externalExperiment,\n externalExperimentTreatment,\n externalExperimentToken\n });\n }\n}\n\nif (getDomainSetting('log_authorize')) {\n\n onAuthorizeListener.once(({ paymentToken }) => {\n setTimeout(() => {\n logReturn(paymentToken);\n }, 1);\n });\n\n const returnToken = getReturnToken();\n\n if (returnToken) {\n setTimeout(() => {\n if (returnToken) {\n logReturn(returnToken);\n }\n }, 1);\n }\n}\n","/* @flow */\n\nimport { once, noop } from 'zoid/src/lib';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { error } from 'beaver-logger/client';\nimport type { CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { extendUrl, redirect, awaitKey, stringifyError } from '../lib';\nimport { config } from '../config';\nimport { FUNDING } from '../constants';\n\nimport { determineParameterFromToken, determineUrl } from './checkout';\n\nconst OPTYPE = {\n PAYMENT: 'payment',\n CANCEL: 'cancel'\n};\n\nconst CONTINGENCY = {\n PAYMENT_CANCELLED: 'PAYMENT_CANCELLED'\n};\n\ntype PopupBridge = {|\n open : (string) => ZalgoPromise\n|};\n\nfunction wrapPopupBridge(popupBridge : Object) : PopupBridge {\n return {\n open(url : string) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n popupBridge.onComplete = (err, result) => {\n if (!result) {\n return reject(new Error('No payload passed in popupBridge.onComplete'));\n }\n\n return err ? reject(err) : resolve(result);\n };\n\n popupBridge.onCancel = () => {\n const err = new Error(CONTINGENCY.PAYMENT_CANCELLED);\n // $FlowFixMe\n err.code = CONTINGENCY.PAYMENT_CANCELLED;\n return reject(err);\n };\n\n popupBridge.open(extendUrl(url, { redirect_uri: popupBridge.getReturnUrlPrefix() }));\n });\n }\n };\n}\n\nfunction validateCheckoutProps(props) {\n if (!props.payment) {\n throw new Error(`Expected props.payment to be passed`);\n }\n\n if (!props.onAuthorize) {\n throw new Error(`Expected props.onAuthorize to be passed`);\n }\n\n if (props.env && !config.checkoutUrls[props.env]) {\n throw new Error(`Invalid props.env: ${ props.env }`);\n }\n}\n\nfunction normalizeCheckoutProps(props : Object) : { env : string, payment : Function, onAuthorize : Function, onCancel : Function } {\n const env = props.env = props.env || config.env;\n\n const payment = props.payment;\n const onAuthorize = once(props.onAuthorize);\n const onCancel = once(props.onCancel || noop);\n\n return { env, payment, onAuthorize, onCancel };\n}\n\nfunction getUrl(props : { env : string, payment : Function, onAuthorize : Function, onCancel? : Function, commit? : boolean }) : ZalgoPromise {\n\n const { env, payment } = normalizeCheckoutProps(props);\n\n return ZalgoPromise.try(payment, { props }).then(token => {\n if (!token) {\n throw new Error(`Expected props.payment to return a payment id or token`);\n }\n\n return extendUrl(determineUrl(env, FUNDING.PAYPAL, token), {\n [determineParameterFromToken(token)]: token,\n\n useraction: props.commit ? 'commit' : '',\n native_xo: '1'\n });\n });\n}\n\nfunction extractDataFromQuery(query : Object) : Object {\n\n const data : Object = {\n paymentToken: query.token,\n billingToken: query.ba_token,\n paymentID: query.paymentId,\n payerID: query.PayerID,\n intent: query.intent\n };\n \n const { opType, return_uri, cancel_uri } = query;\n\n if (opType === OPTYPE.PAYMENT) {\n data.returnUrl = return_uri;\n\n } else if (opType === OPTYPE.CANCEL) {\n data.cancelUrl = cancel_uri;\n }\n\n return data;\n}\n\nfunction buildActions(query : Object) : Object {\n \n const actions : Object = {\n close: noop,\n closeComponent: noop\n };\n\n const { opType, return_uri, cancel_uri } = query;\n\n if (opType === OPTYPE.PAYMENT) {\n actions.redirect = (win : CrossDomainWindowType = window, redirectUrl : string = return_uri) : ZalgoPromise => {\n return redirect(win, redirectUrl);\n };\n\n } else if (opType === OPTYPE.CANCEL) {\n actions.redirect = (win : CrossDomainWindowType = window, redirectUrl : string = cancel_uri) : ZalgoPromise => {\n return redirect(win, redirectUrl);\n };\n }\n\n return actions;\n}\n\nfunction renderThroughPopupBridge(props : Object, popupBridge : PopupBridge) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n validateCheckoutProps(props);\n\n }).then(() => {\n\n return getUrl(props);\n \n }).then(url => {\n\n return popupBridge.open(url);\n\n }).then(payload => {\n\n const { opType } = payload.queryItems;\n const { onAuthorize, onCancel } = normalizeCheckoutProps(props);\n\n const data = extractDataFromQuery(payload.queryItems);\n const actions = buildActions(payload.queryItems);\n \n if (opType === OPTYPE.PAYMENT) {\n return onAuthorize(data, actions);\n\n } else if (opType === OPTYPE.CANCEL) {\n return onCancel(data, actions);\n \n } else {\n throw new Error(`Invalid opType: ${ opType }`);\n }\n\n }).catch(err => {\n\n if (err && err.code === CONTINGENCY.PAYMENT_CANCELLED) {\n const { onCancel } = normalizeCheckoutProps(props);\n return onCancel({}, {});\n }\n\n throw err;\n });\n}\n\nexport function awaitPopupBridge(Button : Object) : ZalgoPromise {\n if (Button.xprops && Button.xprops.awaitPopupBridge) {\n return Button.xprops.awaitPopupBridge();\n }\n\n return awaitKey(window, 'popupBridge').then(popupBridge => {\n return wrapPopupBridge(popupBridge);\n });\n}\n\nexport function setupPopupBridgeProxy(Checkout : Object, Button : Object) {\n\n let popupBridge;\n\n awaitPopupBridge(Button).then(bridge => {\n popupBridge = bridge;\n });\n\n function doRender(props, original) : ZalgoPromise {\n if (!popupBridge) {\n return original();\n }\n \n return renderThroughPopupBridge(props, popupBridge)\n .catch(err => {\n error(`popup_bridge_error`, { err: stringifyError(err) });\n return original();\n });\n }\n\n const render = Checkout.render;\n Checkout.render = function popupBridgeRender(props : Object) : ZalgoPromise {\n return doRender(props, () => render.apply(this, arguments));\n };\n\n const renderTo = Checkout.renderTo;\n Checkout.renderTo = function popupBridgeRenderTo(win : CrossDomainWindowType, props : Object) : ZalgoPromise {\n return doRender(props, () => renderTo.apply(this, arguments));\n };\n\n const renderPopupTo = Checkout.renderPopupTo;\n Checkout.renderPopupTo = function popupBridgeRenderPopupTo(win : CrossDomainWindowType, props : Object) : ZalgoPromise {\n return doRender(props, () => renderPopupTo.apply(this, arguments));\n };\n}\n","/* @flow */\n/* global __paypal_checkout__*/\n\nimport { FUNDING, COUNTRY, CARD, PLATFORM, DEFAULT, ENV } from '../constants';\n\nexport const FUNDING_PRIORITY = [\n FUNDING.PAYPAL,\n FUNDING.VENMO,\n FUNDING.ITAU,\n FUNDING.CREDIT,\n FUNDING.CARD,\n FUNDING.IDEAL,\n FUNDING.ELV,\n FUNDING.BANCONTACT,\n FUNDING.GIROPAY,\n FUNDING.EPS,\n FUNDING.SOFORT,\n FUNDING.MYBANK,\n FUNDING.BLIK,\n FUNDING.P24,\n FUNDING.PAYU,\n FUNDING.VERKKOPANKKI,\n FUNDING.TRUSTLY,\n FUNDING.MAXIMA,\n FUNDING.BOLETO,\n FUNDING.OXXO\n];\n\nexport const FUNDING_ORDER = [\n FUNDING.PAYPAL,\n FUNDING.VENMO,\n FUNDING.ITAU,\n FUNDING.CREDIT,\n FUNDING.IDEAL,\n FUNDING.ELV,\n FUNDING.BANCONTACT,\n FUNDING.GIROPAY,\n FUNDING.EPS,\n FUNDING.SOFORT,\n FUNDING.MYBANK,\n FUNDING.BLIK,\n FUNDING.P24,\n FUNDING.PAYU,\n FUNDING.VERKKOPANKKI,\n FUNDING.TRUSTLY,\n FUNDING.MAXIMA,\n FUNDING.BOLETO,\n FUNDING.OXXO,\n FUNDING.CARD\n];\n\nexport const FUNDING_CONFIG = {\n\n [ DEFAULT ]: {\n enabled: true,\n\n allowOptIn: true,\n allowOptOut: true,\n allowRemember: true,\n\n allowHorizontal: true,\n allowVertical: true,\n\n requireCommitAsTrue: false\n },\n\n [ FUNDING.PAYPAL ]: {\n default: true,\n\n allowOptIn: false,\n allowOptOut: false,\n\n allowHorizontal: true,\n allowVertical: true\n },\n\n [ FUNDING.CARD ]: {\n // $FlowFixMe\n default: (typeof __paypal_checkout__ === 'undefined' ? true : __paypal_checkout__.serverConfig.paypalMerchantConfiguration.creditCard.isPayPalBranded),\n\n allowHorizontal: false,\n allowVertical: true\n },\n\n [ FUNDING.VENMO ]: {\n allowOptOut: true,\n allowedCountries: [\n COUNTRY.US\n ],\n\n allowHorizontal: true,\n allowVertical: true\n },\n [ FUNDING.ITAU ]: {\n allowOptOut: true,\n allowedCountries: [\n COUNTRY.BR\n ],\n\n allowHorizontal: true,\n allowVertical: true\n },\n\n [ FUNDING.CREDIT ]: {\n allowedCountries: [\n COUNTRY.US,\n COUNTRY.GB,\n COUNTRY.DE\n ],\n defaultVerticalCountries: [\n COUNTRY.US\n ],\n platforms: [\n PLATFORM.MOBILE\n ],\n\n allowHorizontal: true,\n allowVertical: true,\n allowRemember: true\n },\n\n [ FUNDING.IDEAL ]: {\n allowedCountries: [\n COUNTRY.NL\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.ELV ]: {\n allowedCountries: [\n COUNTRY.DE\n ],\n defaultVerticalCountries: [\n COUNTRY.DE\n ],\n\n allowHorizontal: false,\n allowVertical: true\n },\n\n [ FUNDING.BANCONTACT ]: {\n allowedCountries: [\n COUNTRY.BE\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.GIROPAY ]: {\n allowedCountries: [\n COUNTRY.DE\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.SOFORT ]: {\n allowedCountries: [\n COUNTRY.DE,\n COUNTRY.AT,\n COUNTRY.BE,\n COUNTRY.ES,\n COUNTRY.IT,\n COUNTRY.NL\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.EPS ]: {\n allowedCountries: [\n COUNTRY.AT\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.MYBANK ]: {\n allowedCountries: [\n COUNTRY.IT\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.P24 ]: {\n allowedCountries: [\n COUNTRY.PL\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.PAYU ]: {\n allowedCountries: [\n COUNTRY.CZ\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.VERKKOPANKKI ]: {\n allowedCountries: [\n COUNTRY.FI\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.BLIK ]: {\n allowedCountries: [\n COUNTRY.PL\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.TRUSTLY ]: {\n allowedCountries: [\n COUNTRY.DE,\n COUNTRY.DK,\n COUNTRY.EE,\n COUNTRY.ES,\n COUNTRY.FI,\n COUNTRY.GB,\n COUNTRY.IT,\n COUNTRY.MT,\n COUNTRY.NL,\n COUNTRY.NO,\n COUNTRY.SE\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.MAXIMA ]: {\n allowedCountries: [\n COUNTRY.LT\n ],\n\n allowedEnvs: [\n ENV.LOCAL,\n ENV.STAGE,\n ENV.TEST\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.BOLETO ]: {\n allowedCountries: [\n COUNTRY.BR\n ],\n\n allowedEnvs: [\n ENV.LOCAL,\n ENV.STAGE,\n ENV.TEST\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.OXXO ]: {\n allowedCountries: [\n COUNTRY.MX\n ],\n\n allowedEnvs: [\n ENV.LOCAL,\n ENV.STAGE,\n ENV.TEST\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.ZIMPLER ]: {\n allowedCountries: [],\n\n allowHorizontal: false,\n allowVertical: false,\n requireCommitAsTrue: true\n }\n};\n\nexport const CARD_CONFIG = {\n\n [ DEFAULT ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX\n ]\n },\n\n [ COUNTRY.GB ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.DISCOVER,\n CARD.MAESTRO\n ]\n },\n\n [ COUNTRY.US ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.DISCOVER\n ]\n },\n\n [ COUNTRY.BR ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.HIPER,\n CARD.ELO\n ]\n },\n\n [ COUNTRY.JP ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.JCB\n ]\n },\n\n [ COUNTRY.CN ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.CUP\n ]\n }\n};\n\nfunction getConfig(conf : Object, category : string, key : string, def : ?T) : T {\n const categoryConfig = conf[category];\n\n if (categoryConfig && categoryConfig.hasOwnProperty(key)) {\n return categoryConfig[key];\n }\n\n if (conf[DEFAULT] && conf[DEFAULT].hasOwnProperty(key)) {\n return conf[DEFAULT][key];\n }\n\n if (arguments.length >= 4) {\n // $FlowFixMe\n return def;\n }\n\n throw new Error(`No value found for ${ category }:${ key }`);\n}\n\nexport function getFundingConfig(source : string, key : string, def : ?T) : T {\n return getConfig(FUNDING_CONFIG, source, key, def);\n}\n\nexport function getCardConfig(source : string, key : string, def : ?T) : T {\n return getConfig(CARD_CONFIG, source, key, def);\n}\n","/* @flow */\n\nimport { ENV, CARD_PRIORITY, FUNDING, BUTTON_LAYOUT, FUNDING_ELIGIBILITY_REASON } from '../constants';\nimport type { LocaleType, FundingSource, FundingSelection, FundingList } from '../types';\n\nimport { getFundingConfig, getCardConfig, FUNDING_PRIORITY, FUNDING_CONFIG } from './config';\n\nconst fundingEligibilityReasons = [];\n\nexport function isFundingIneligible(source : FundingSource, { locale, funding, layout, commit, env } :\n { locale : LocaleType, funding : FundingSelection, layout : string, commit? : boolean, env : string }) : ?string {\n\n const isVertical = layout === BUTTON_LAYOUT.VERTICAL;\n const allowSecondary = getFundingConfig(source, isVertical ? 'allowVertical' : 'allowHorizontal');\n\n if (!allowSecondary) {\n return FUNDING_ELIGIBILITY_REASON.SECONDARY_DISALLOWED;\n }\n\n if (funding.disallowed.indexOf(source) !== -1 && getFundingConfig(source, 'allowOptOut')) {\n return FUNDING_ELIGIBILITY_REASON.OPT_OUT;\n }\n\n if (funding.disallowed.indexOf(source) !== -1 && source === FUNDING.VENMO) {\n return FUNDING_ELIGIBILITY_REASON.OPT_OUT;\n }\n if (funding.disallowed.indexOf(source) !== -1 && source === FUNDING.ITAU) {\n return FUNDING_ELIGIBILITY_REASON.OPT_OUT;\n }\n\n if (getFundingConfig(source, 'allowedCountries', [ locale.country ]).indexOf(locale.country) === -1) {\n return FUNDING_ELIGIBILITY_REASON.DISALLOWED_COUNTRY;\n }\n\n if (getFundingConfig(source, 'requireCommitAsTrue') && !commit) {\n return FUNDING_ELIGIBILITY_REASON.COMMIT_NOT_SET;\n }\n\n const allowedEnvs = getFundingConfig(source, 'allowedEnvs');\n if (allowedEnvs && allowedEnvs.indexOf(env) === -1) {\n return FUNDING_ELIGIBILITY_REASON.INVALID_ENV;\n }\n}\n\nexport function isFundingAutoEligible(source : FundingSource, { locale, funding, layout } :\n { locale : LocaleType, funding : FundingSelection, layout : string }) : ?string {\n\n const isVertical = layout === BUTTON_LAYOUT.VERTICAL;\n\n if (isVertical && getFundingConfig(source, 'defaultVerticalCountries', []).indexOf(locale.country) !== -1) {\n return FUNDING_ELIGIBILITY_REASON.DEFAULT_COUNTRY;\n }\n\n if (getFundingConfig(source, 'default')) {\n return FUNDING_ELIGIBILITY_REASON.DEFAULT;\n }\n\n if (funding.allowed.indexOf(source) !== -1 && getFundingConfig(source, 'allowOptIn')) {\n return FUNDING_ELIGIBILITY_REASON.OPT_IN;\n }\n\n if (funding.remembered.indexOf(source) !== -1 && getFundingConfig(source, 'allowRemember')) {\n return FUNDING_ELIGIBILITY_REASON.REMEMBERED;\n }\n}\n\nexport function isFundingEligible(source : FundingSource, { locale, funding, env, layout, selected, commit } :\n { locale : LocaleType, funding : FundingSelection, env : string, layout : string, selected? : string, commit : boolean }) : { eligible : boolean, reason : string } {\n\n if (selected && source === selected) {\n return { eligible: true, reason: FUNDING_ELIGIBILITY_REASON.PRIMARY };\n }\n\n if (!getFundingConfig(source, 'enabled')) {\n if (!(env === ENV.TEST && getFundingConfig(source, 'test'))) {\n return { eligible: false, reason: FUNDING_ELIGIBILITY_REASON.NOT_ENABLED };\n }\n }\n\n const ineligibleReason = isFundingIneligible(source, { locale, funding, layout, commit, env });\n\n if (ineligibleReason) {\n return { eligible: false, reason: ineligibleReason };\n }\n\n const autoEligibleReason = isFundingAutoEligible(source, { locale, funding, layout });\n\n if (autoEligibleReason) {\n return { eligible: true, reason: autoEligibleReason };\n }\n\n return { eligible: false, reason: FUNDING_ELIGIBILITY_REASON.NEED_OPT_IN };\n}\n\nexport function determineEligibleFunding({ funding, selected, locale, env, layout, commit } :\n { funding : FundingSelection, selected : FundingSource, locale : LocaleType, env : string, layout : string, commit : boolean }) : FundingList {\n\n const reasons = {};\n\n const eligibleFunding = FUNDING_PRIORITY.filter(source => {\n const { eligible, reason } = isFundingEligible(source, { selected, locale, funding, env, layout, commit });\n reasons[source] = { eligible, reason, factors: { env, locale, layout } };\n return eligible;\n });\n\n fundingEligibilityReasons.push(reasons);\n\n eligibleFunding.splice(eligibleFunding.indexOf(selected), 1);\n eligibleFunding.unshift(selected);\n\n return eligibleFunding;\n}\n\nexport function determineEligibleCards({ funding, locale } :\n { funding : FundingSelection, locale : LocaleType }) : FundingList {\n\n return getCardConfig(locale.country, 'priority')\n .filter(card => funding.disallowed.indexOf(card) === -1);\n}\n\nexport function validateFunding(funding : FundingSelection = { allowed: [], disallowed: [], remembered: [] }) {\n\n if (funding.allowed) {\n for (const source of funding.allowed) {\n if (CARD_PRIORITY.indexOf(source) !== -1) {\n continue;\n }\n\n if (!FUNDING_CONFIG.hasOwnProperty(source)) {\n throw new Error(`Invalid funding source: ${ source }`);\n }\n\n if (!getFundingConfig(source, 'allowOptIn')) {\n throw new Error(`Can not allow funding source: ${ source }`);\n }\n\n if (funding.disallowed && funding.disallowed.indexOf(source) !== -1) {\n throw new Error(`Can not allow and disallow funding source: ${ source }`);\n }\n }\n }\n\n if (funding.disallowed) {\n for (const source of funding.disallowed) {\n if (CARD_PRIORITY.indexOf(source) !== -1) {\n continue;\n }\n\n if (!FUNDING_CONFIG.hasOwnProperty(source)) {\n throw new Error(`Invalid funding source: ${ source }`);\n }\n\n if (!getFundingConfig(source, 'allowOptOut')) {\n throw new Error(`Can not disallow funding source: ${ source }`);\n }\n }\n }\n}\n\nexport function logFundingEligibility() {\n fundingEligibilityReasons.forEach((reasons, i) => {\n console.log(`\\nButton ${ i + 1 }:\\n`); // eslint-disable-line no-console\n\n console.table(Object.keys(reasons).map(source => { // eslint-disable-line no-console, compat/compat\n const { reason, eligible, factors } = reasons[source];\n\n return {\n 'Funding': source,\n 'Reason': reason,\n 'Eligibility': eligible ? 'eligible' : 'ineligible',\n 'Factors': JSON.stringify(factors)\n };\n }));\n });\n}\n","/* @flow */\n/* eslint no-template-curly-in-string: off, max-lines: off */\n\nimport { FUNDING, DEFAULT, COUNTRY, BUTTON_LABEL, BUTTON_COLOR, BUTTON_LOGO_COLOR, BUTTON_SIZE,\n BUTTON_TAGLINE_COLOR, BUTTON_SHAPE, BUTTON_LAYOUT, BUTTON_LOGO } from '../constants';\n\ntype ButtonConfig = {\n [ string ] : {\n colors? : $ReadOnlyArray<$Values>\n }\n};\n\nexport const BUTTON_CONFIG : ButtonConfig = {\n\n [ DEFAULT ]: {\n\n colors: [\n BUTTON_COLOR.GOLD,\n BUTTON_COLOR.BLUE,\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n sizes: [\n BUTTON_SIZE.SMALL,\n BUTTON_SIZE.MEDIUM,\n BUTTON_SIZE.LARGE,\n BUTTON_SIZE.RESPONSIVE\n ],\n\n shapes: [\n BUTTON_SHAPE.PILL,\n BUTTON_SHAPE.RECT\n ],\n\n layouts: [\n BUTTON_LAYOUT.HORIZONTAL,\n BUTTON_LAYOUT.VERTICAL\n ],\n\n logoColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_LOGO_COLOR.BLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLUE\n },\n\n tagLineColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_TAGLINE_COLOR.BLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_TAGLINE_COLOR.BLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_TAGLINE_COLOR.BLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_TAGLINE_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_TAGLINE_COLOR.BLUE\n\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n tag: `{ content: safer_tag }`,\n dualTag: `{ content: dual_tag|safer_tag }`,\n\n defaultLocale: `en_US`,\n defaultLabel: BUTTON_LABEL.CHECKOUT,\n defaultVerticalLabel: BUTTON_LABEL.PAYPAL,\n defaultColor: BUTTON_COLOR.GOLD,\n defaultSize: BUTTON_SIZE.SMALL,\n defaultVerticalSize: BUTTON_SIZE.MEDIUM,\n defaultShape: BUTTON_SHAPE.PILL,\n defaultLayout: BUTTON_LAYOUT.HORIZONTAL,\n defaultBranding: true,\n defaultVerticalBranding: true,\n defaultFundingIcons: false,\n defaultTagline: true,\n defaultDual: ``,\n\n minimumSize: BUTTON_SIZE.TINY,\n minimumVerticalSize: BUTTON_SIZE.MEDIUM,\n\n maximumSize: BUTTON_SIZE.HUGE,\n maximumVerticalSize: BUTTON_SIZE.HUGE,\n\n minHorizontalButtons: 1,\n minVerticalButtons: 1,\n\n maxHorizontalButtons: 2,\n maxVerticalButtons: 6,\n\n allowUnbranded: false,\n allowFundingIcons: true,\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.PAYPAL ]: {\n label: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n allowPrimary: true,\n\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true\n },\n\n [ BUTTON_LABEL.CHECKOUT ]: {\n label: `{ content: checkout }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n allowPrimary: true,\n\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true\n },\n\n [ BUTTON_LABEL.PAY ]: {\n label: `{ content: pay }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n allowPrimary: true,\n\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true\n },\n\n [ BUTTON_LABEL.BUYNOW ]: {\n label: `{ content: buynow }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n defaultBranding: undefined,\n\n allowPrimary: true,\n\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true,\n\n allowUnbranded: true\n },\n\n [ BUTTON_LABEL.INSTALLMENT ]: {\n label: (style) => { return `{ content: ${ style.installmentperiod ? 'installment_period' : 'installment' } }`; },\n logoLabel: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n allowPrimary: true,\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true,\n allowSecondaryVertical: false,\n allowSecondaryHorizontal: false\n },\n\n [ BUTTON_LABEL.CREDIT ]: {\n label: ({ locale }) => {\n if (locale.country === COUNTRY.DE) {\n return `{ logo: ${ BUTTON_LOGO.CREDIT } }`;\n }\n\n return `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } } { logo: ${ BUTTON_LOGO.CREDIT } }`;\n },\n logoLabel: ({ locale }) => {\n if (locale.country === COUNTRY.DE) {\n return `{ logo: ${ BUTTON_LOGO.CREDIT } }`;\n }\n\n return `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } } { logo: ${ BUTTON_LOGO.CREDIT } }`;\n },\n\n tag: `{ content: later_tag }`,\n\n colors: [\n BUTTON_COLOR.DARKBLUE,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLUE\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n defaultColor: BUTTON_COLOR.DARKBLUE,\n\n allowPrimary: true,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false,\n\n allowFundingIcons: false\n },\n\n [ BUTTON_LABEL.VENMO ]: {\n label: `{ logo: ${ BUTTON_LOGO.VENMO } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.VENMO } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.BLUE,\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.BLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLUE\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: true,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: true\n },\n [ BUTTON_LABEL.ITAU ]: {\n label: `{ logo: ${ BUTTON_LOGO.ITAU } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.ITAU } }`,\n\n defaultColor: BUTTON_COLOR.DARKBLUE,\n\n colors: [\n BUTTON_COLOR.DARKBLUE,\n BUTTON_COLOR.BLUE,\n BUTTON_COLOR.BLACK\n ],\n\n logoColors: {\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.DARKBLUE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: true\n },\n\n [ BUTTON_LABEL.IDEAL ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.IDEAL } } Online betalen`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.IDEAL } } Online betalen`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.ELV ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.ELV } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.ELV } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.BANCONTACT ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.BANCONTACT } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.BANCONTACT } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.GIROPAY ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.GIROPAY } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.GIROPAY } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.SOFORT ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.SOFORT } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.SOFORT } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.EPS ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.EPS } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.EPS } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.MYBANK ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.MYBANK } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.MYBANK } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.P24 ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.P24 } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.P24 } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.PAYU ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.PAYU } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PAYU } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.VERKKOPANKKI ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.VERKKOPANKKI } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.VERKKOPANKKI } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.BLIK ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.BLIK } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.BLIK } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.TRUSTLY ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.TRUSTLY } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.TRUSTLY } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.MAXIMA ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.MAXIMA } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.MAXIMA } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.BOLETO ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.BOLETO } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.BOLETO } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.OXXO ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.OXXO } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.OXXO } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.CARD ]: {\n\n label: `{ cards }`,\n logoLabel: `{ cards }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.TRANSPARENT\n ],\n\n logoColors: {\n [ BUTTON_COLOR.TRANSPARENT ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.TRANSPARENT\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n }\n};\n\nexport const FUNDING_TO_DEFAULT_LABEL = {\n [ FUNDING.PAYPAL ]: BUTTON_LABEL.PAYPAL,\n [ FUNDING.VENMO ]: BUTTON_LABEL.VENMO,\n [ FUNDING.ITAU ]: BUTTON_LABEL.ITAU,\n [ FUNDING.CARD ]: BUTTON_LABEL.CARD,\n [ FUNDING.CREDIT ]: BUTTON_LABEL.CREDIT,\n [ FUNDING.IDEAL ]: BUTTON_LABEL.IDEAL,\n [ FUNDING.ELV ]: BUTTON_LABEL.ELV,\n [ FUNDING.BANCONTACT ]: BUTTON_LABEL.BANCONTACT,\n [ FUNDING.GIROPAY ]: BUTTON_LABEL.GIROPAY,\n [ FUNDING.SOFORT ]: BUTTON_LABEL.SOFORT,\n [ FUNDING.EPS ]: BUTTON_LABEL.EPS,\n [ FUNDING.P24 ]: BUTTON_LABEL.P24,\n [ FUNDING.MYBANK ]: BUTTON_LABEL.MYBANK,\n [ FUNDING.PAYU ]: BUTTON_LABEL.PAYU,\n [ FUNDING.VERKKOPANKKI]: BUTTON_LABEL.VERKKOPANKKI,\n [ FUNDING.BLIK ]: BUTTON_LABEL.BLIK,\n [ FUNDING.TRUSTLY ]: BUTTON_LABEL.TRUSTLY,\n [ FUNDING.MAXIMA ]: BUTTON_LABEL.MAXIMA,\n [ FUNDING.BOLETO ]: BUTTON_LABEL.BOLETO,\n [ FUNDING.OXXO ]: BUTTON_LABEL.OXXO\n};\n\nexport const LABEL_TO_FUNDING = {\n [ BUTTON_LABEL.PAYPAL ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.CHECKOUT ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.PAY ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.BUYNOW ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.INSTALLMENT ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.CARD ]: FUNDING.CARD,\n [ BUTTON_LABEL.CREDIT ]: FUNDING.CREDIT,\n [ BUTTON_LABEL.VENMO ]: FUNDING.VENMO,\n [ BUTTON_LABEL.ITAU ]: FUNDING.ITAU,\n [ BUTTON_LABEL.IDEAL ]: FUNDING.IDEAL,\n [ BUTTON_LABEL.BANCONTACT]: FUNDING.BANCONTACT,\n [ BUTTON_LABEL.GIROPAY]: FUNDING.GIROPAY,\n [ BUTTON_LABEL.EPS ]: FUNDING.EPS,\n [ BUTTON_LABEL.SOFORT ]: FUNDING.SOFORT,\n [ BUTTON_LABEL.P24 ]: FUNDING.P24,\n [ BUTTON_LABEL.MYBANK ]: FUNDING.MYBANK,\n [ BUTTON_LABEL.PAYU ]: FUNDING.PAYU,\n [ BUTTON_LABEL.VERKKOPANKKI ]: FUNDING.VERKKOPANKKI,\n [ BUTTON_LABEL.BLIK ]: FUNDING.BLIK,\n [ BUTTON_LABEL.TRUSTLY ]: FUNDING.TRUSTLY,\n [ BUTTON_LABEL.MAXIMA ]: FUNDING.MAXIMA,\n [ BUTTON_LABEL.BOLETO ]: FUNDING.BOLETO,\n [ BUTTON_LABEL.OXXO ]: FUNDING.OXXO\n};\n\nexport const BUTTON_RELATIVE_STYLE = {\n FUNDINGICONS: 100,\n TAGLINE: 50,\n VERTICAL_MARGIN: 30\n};\n\nexport const BUTTON_STYLE = {\n\n [ BUTTON_SIZE.TINY ]: {\n defaultWidth: 75,\n defaultHeight: 25,\n minWidth: 75,\n maxWidth: 150,\n minHeight: 25,\n maxHeight: 30,\n buttonTextMargin: 0.5,\n allowFunding: true,\n allowTagline: false,\n byPayPalHeight: 0\n },\n\n [ BUTTON_SIZE.SMALL ]: {\n defaultWidth: 150,\n defaultHeight: 25,\n minWidth: 150,\n maxWidth: 200,\n minHeight: 25,\n maxHeight: 55,\n buttonTextMargin: 0.5,\n allowFunding: true,\n allowTagline: true,\n byPayPalHeight: 0\n },\n\n [ BUTTON_SIZE.MEDIUM ]: {\n defaultWidth: 250,\n defaultHeight: 35,\n minWidth: 200,\n maxWidth: 300,\n minHeight: 35,\n maxHeight: 55,\n buttonTextMargin: 1,\n allowFunding: true,\n allowTagline: true,\n byPayPalHeight: 30\n },\n\n [ BUTTON_SIZE.LARGE ]: {\n defaultWidth: 350,\n defaultHeight: 45,\n minWidth: 300,\n maxWidth: 500,\n minHeight: 30,\n maxHeight: 55,\n buttonTextMargin: 1,\n allowFunding: true,\n allowTagline: true,\n byPayPalHeight: 30\n },\n\n [ BUTTON_SIZE.HUGE ]: {\n defaultWidth: 500,\n defaultHeight: 55,\n minWidth: 500,\n maxWidth: 750,\n minHeight: 40,\n maxHeight: 55,\n buttonTextMargin: 1.25,\n allowFunding: true,\n allowTagline: true,\n byPayPalHeight: 30\n }\n};\n\nexport function labelToFunding(label : ?string) : string {\n return label ? LABEL_TO_FUNDING[label] : FUNDING.PAYPAL;\n}\n\nexport function fundingToDefaultLabel(funding : string) : $Values {\n return FUNDING_TO_DEFAULT_LABEL[funding];\n}\n\nfunction getConfig(conf : Object, category : string, key : string, def : ?T) : T {\n const categoryConfig = conf[category];\n\n if (categoryConfig && categoryConfig.hasOwnProperty(key)) {\n return categoryConfig[key];\n }\n\n if (conf[DEFAULT] && conf[DEFAULT].hasOwnProperty(key)) {\n return conf[DEFAULT][key];\n }\n\n if (arguments.length >= 4) {\n // $FlowFixMe\n return def;\n }\n\n throw new Error(`No value found for ${ category }:${ key }`);\n}\n\nexport function getButtonConfig(label : string, key : string, def : ?T) : T {\n return getConfig(BUTTON_CONFIG, label, key, def);\n}\n","/* @flow */\n\nimport { BUTTON_LAYOUT, BUTTON_STYLE_OPTIONS, BUTTON_LABEL, BUTTON_COLOR, BUTTON_SIZE, BUTTON_SHAPE } from '../constants';\nimport { determineEligibleFunding, determineEligibleCards } from '../funding';\nimport { memoize, sortBy } from '../lib/util';\nimport type { LocaleType, FundingSelection, FundingList, CheckoutCustomizationType } from '../types';\nimport { FUNDING_ORDER } from '../funding/config';\n\nimport { getButtonConfig, labelToFunding } from './config';\n\nfunction parseLocale(locale : string) : LocaleType {\n const [ lang, country ] = locale.split('_');\n return { country, lang };\n}\n\nexport function determineMaxButtons({ label, layout, max } : { layout : string, label : string, max : number }) : number {\n\n const allowed = (layout === BUTTON_LAYOUT.HORIZONTAL)\n ? getButtonConfig(label, 'allowPrimaryHorizontal')\n : getButtonConfig(label, 'allowPrimaryVertical');\n\n if (!allowed) {\n return 1;\n }\n\n const configMax = (layout === BUTTON_LAYOUT.HORIZONTAL)\n ? getButtonConfig(label, 'maxHorizontalButtons')\n : getButtonConfig(label, 'maxVerticalButtons');\n\n return max\n ? Math.min(configMax, max)\n : configMax;\n}\n\nfunction enableTagline({ tagline, branding, fundingicons, layout }) : boolean {\n return Boolean(tagline && branding && !fundingicons && layout === BUTTON_LAYOUT.HORIZONTAL);\n}\n\ntype NormalizedProps = {|\n size : $Values,\n label : $Values,\n color : $Values,\n shape : $Values,\n locale : LocaleType,\n branding : boolean,\n fundingicons : boolean,\n tagline : boolean,\n funding : FundingSelection,\n layout : $Values,\n sources : FundingList,\n max : number,\n multiple : boolean,\n env : string,\n height : ?number,\n cards : $ReadOnlyArray,\n installmentperiod : number,\n checkoutCustomization : ?CheckoutCustomizationType\n|};\n\nexport const normalizeProps = memoize((props : Object, defs? : { locale? : LocaleType } = {}) : NormalizedProps => {\n\n let {\n env,\n locale,\n style = {},\n funding,\n commit,\n checkoutCustomization\n } = props;\n\n locale = locale ? parseLocale(locale) : (defs.locale || getButtonConfig('DEFAULT', 'defaultLocale'));\n \n // funding indicated the allowed/disallowed payment methods (including cards) passed in the integration script\n // $FlowFixMe\n funding = funding || {};\n funding.allowed = funding.allowed || [];\n funding.disallowed = funding.disallowed || [];\n funding.remembered = funding.remembered || [];\n \n const label = style[BUTTON_STYLE_OPTIONS.LABEL] || getButtonConfig('DEFAULT', (style.layout === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalLabel' : 'defaultLabel');\n const layout = style[BUTTON_STYLE_OPTIONS.LAYOUT] || getButtonConfig(label, 'defaultLayout');\n\n let {\n [ BUTTON_STYLE_OPTIONS.SIZE ]: size = getButtonConfig(label, (layout === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalSize' : 'defaultSize'),\n [ BUTTON_STYLE_OPTIONS.COLOR ]: color = getButtonConfig(label, 'defaultColor'),\n [ BUTTON_STYLE_OPTIONS.SHAPE ]: shape = getButtonConfig(label, 'defaultShape'),\n [ BUTTON_STYLE_OPTIONS.BRANDING ]: branding = getButtonConfig(label, (layout === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalBranding' : 'defaultBranding'),\n [ BUTTON_STYLE_OPTIONS.FUNDINGICONS ]: fundingicons = getButtonConfig(label, 'defaultFundingIcons'),\n [ BUTTON_STYLE_OPTIONS.TAGLINE ]: tagline = getButtonConfig(label, 'defaultTagline'),\n [ BUTTON_STYLE_OPTIONS.MAXBUTTONS ]: max,\n [ BUTTON_STYLE_OPTIONS.HEIGHT ]: height,\n [ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD ]: installmentperiod\n } = style;\n\n // max is the maximum number of buttons to be displayed in the iframe\n max = determineMaxButtons({ label, layout, max });\n\n const selected = labelToFunding(label);\n let sources = determineEligibleFunding({ funding, selected, locale, env, layout, commit });\n // sources is an array of funding sources eligible to be displayed\n sources = sortBy(sources.slice(0, max), FUNDING_ORDER);\n // multiple is a boolean value indicating whether the sources is greater than 1\n const multiple = sources.length > 1;\n\n if (multiple) {\n branding = true;\n }\n\n tagline = enableTagline({ tagline, branding, fundingicons, layout });\n\n const cards = determineEligibleCards({ funding, locale });\n \n return { size, label, locale, color, shape, branding, fundingicons,\n tagline, funding, layout, sources, max, multiple, env, height, cards, installmentperiod, checkoutCustomization };\n});\n","/* @flow */\n\nimport { BUTTON_LABEL, BUTTON_LAYOUT, BUTTON_SIZE, BUTTON_STYLE_OPTIONS, ALLOWED_INSTALLMENT_COUNTRIES, ALLOWED_INSTALLMENT_PERIOD, LOCALE } from '../constants';\n\nimport { BUTTON_CONFIG, BUTTON_STYLE, getButtonConfig } from './config';\n\nexport function validateButtonLocale(locale : string) {\n\n if (!locale) {\n throw new Error(`Expected props.locale to be set`);\n }\n\n if (!locale.match(/^[a-z]{2}[_][A-Z][A-Z0-9]$/)) {\n throw new Error(`Expected props.locale to be valid, got ${ locale }`);\n }\n\n const [ lang, country ] = locale.split('_');\n\n if (!LOCALE[country] || LOCALE[country].indexOf(lang) === -1) {\n throw new Error(`Expected props.locale to be valid`);\n }\n}\n\nexport function validateRegionSpecificButton(style : Object = {}, locale : string = 'en_US') {\n\n const country = locale.split('_')[1];\n\n const isInstallmentAllowedCountry = ALLOWED_INSTALLMENT_COUNTRIES.indexOf(country) !== -1;\n\n if (!isInstallmentAllowedCountry && style.label === BUTTON_LABEL.INSTALLMENT) {\n throw new Error(`Unexpected label: style.${ style.label } for country: ${ country }`);\n }\n\n if (!isInstallmentAllowedCountry && style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD]) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD } is invalid for country: ${ country }`);\n }\n\n if (isInstallmentAllowedCountry && style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD] && style.label !== BUTTON_LABEL.INSTALLMENT) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD } is invalid for label: style.${ style.label }`);\n }\n\n if (isInstallmentAllowedCountry && style.label === BUTTON_LABEL.INSTALLMENT && style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD]\n && typeof style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD] !== 'number') {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD } is expected to be a number`);\n }\n\n if (isInstallmentAllowedCountry && style.label === BUTTON_LABEL.INSTALLMENT && style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD]\n && ALLOWED_INSTALLMENT_PERIOD[country].indexOf(style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD]) === -1) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD }: ${ style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD] } is not a valid installment number for ${ style.label }`);\n }\n\n}\n\nexport function validateButtonStyle(style : Object = {}, props : Object) {\n\n if (!style) {\n throw new Error(`Expected props.style to be set`);\n }\n\n const label = style[BUTTON_STYLE_OPTIONS.LABEL] || getButtonConfig('DEFAULT', (style[BUTTON_STYLE_OPTIONS.LAYOUT] === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalLabel' : 'defaultLabel');\n\n if (!BUTTON_CONFIG[label]) {\n throw new Error(`Invalid button label: ${ label }, expected: ${ Object.keys(BUTTON_CONFIG[label]).join(', ') }`);\n }\n\n const {\n [ BUTTON_STYLE_OPTIONS.COLOR ]: color,\n [ BUTTON_STYLE_OPTIONS.SHAPE ]: shape,\n [ BUTTON_STYLE_OPTIONS.SIZE ]: size,\n [ BUTTON_STYLE_OPTIONS.BRANDING ]: branding,\n [ BUTTON_STYLE_OPTIONS.FUNDINGICONS ]: fundingicons,\n [ BUTTON_STYLE_OPTIONS.TAGLINE ]: tagline,\n [ BUTTON_STYLE_OPTIONS.LAYOUT ]: layout,\n [ BUTTON_STYLE_OPTIONS.MAXBUTTONS ]: maxbuttons,\n [ BUTTON_STYLE_OPTIONS.HEIGHT ]: height\n } = style;\n\n if (color && getButtonConfig(label, 'colors').indexOf(color) === -1) {\n throw new Error(`Unexpected style.${ BUTTON_STYLE_OPTIONS.COLOR } for ${ label } button: ${ color }, expected ${ getButtonConfig(label, 'colors').join(', ') }`);\n }\n\n if (shape && getButtonConfig(label, 'shapes').indexOf(shape) === -1) {\n throw new Error(`Unexpected style.${ BUTTON_STYLE_OPTIONS.SHAPE } for ${ label } button: ${ shape }, expected ${ getButtonConfig(label, 'shapes').join(', ') }`);\n }\n\n if (size && getButtonConfig(label, 'sizes').indexOf(size) === -1) {\n throw new Error(`Unexpected style.${ BUTTON_STYLE_OPTIONS.SIZE } for ${ label } button: ${ size }, expected ${ getButtonConfig(label, 'sizes').join(', ') }`);\n }\n\n if (branding === false) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.BRANDING }:false is not allowed`);\n }\n\n if (fundingicons && !getButtonConfig(label, 'allowFundingIcons')) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.FUNDINGICONS }:true is not allowed for ${ label } button`);\n }\n\n if (layout && getButtonConfig(label, 'layouts').indexOf(layout) === -1) {\n throw new Error(`Unexpected style.${ BUTTON_STYLE_OPTIONS.LAYOUT } for ${ label } button: ${ layout }, expected ${ getButtonConfig(label, 'layouts').join(', ') }`);\n }\n\n if (maxbuttons !== undefined) {\n if (typeof maxbuttons !== 'number') {\n throw new TypeError(`Expected style.${ BUTTON_STYLE_OPTIONS.MAXBUTTONS } to be a number, got: ${ maxbuttons }`);\n }\n\n if (maxbuttons < 1) {\n throw new Error(`Expected style.${ BUTTON_STYLE_OPTIONS.MAXBUTTONS } to be a at least 1, got: ${ maxbuttons }`);\n }\n\n const minButtons = (layout === BUTTON_LAYOUT.VERTICAL)\n ? getButtonConfig(label, 'minVerticalButtons')\n : getButtonConfig(label, 'minHorizontalButtons');\n\n if (maxbuttons < minButtons) {\n throw new Error(`Expected style.${ BUTTON_STYLE_OPTIONS.MAXBUTTONS } to be no fewer than ${ minButtons }, got ${ maxbuttons }`);\n }\n }\n\n if (height !== undefined) {\n if (typeof height !== 'number') {\n throw new TypeError(`Expected style.${ BUTTON_STYLE_OPTIONS.HEIGHT } to be a number, got: ${ maxbuttons }`);\n }\n\n const buttonSize = size || getButtonConfig(label, (style.layout === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalSize' : 'defaultSize');\n\n const { minHeight, maxHeight } = (size === BUTTON_SIZE.RESPONSIVE) ? {\n minHeight: BUTTON_STYLE[BUTTON_SIZE.SMALL].minHeight,\n maxHeight: BUTTON_STYLE[BUTTON_SIZE.HUGE].maxHeight\n } : BUTTON_STYLE[buttonSize];\n\n if (height < minHeight || height > maxHeight) {\n throw new Error(`Expected style.${ BUTTON_STYLE_OPTIONS.HEIGHT } to be between ${ minHeight }px and ${ maxHeight }px - got ${ height }px`);\n }\n }\n\n if (!getButtonConfig(label, 'allowPrimary')) {\n throw new Error(`${ label } can not be used as primary button label`);\n }\n\n if (layout === BUTTON_LAYOUT.VERTICAL) {\n\n if (size && [ BUTTON_SIZE.MEDIUM, BUTTON_SIZE.LARGE, BUTTON_SIZE.RESPONSIVE ].indexOf(size) === -1) {\n throw new Error(`Button must be at least ${ BUTTON_SIZE.MEDIUM } size for ${ BUTTON_LAYOUT.VERTICAL } layout`);\n }\n\n if (!getButtonConfig(label, 'allowPrimaryVertical')) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.LABEL } option is not allowed for ${ BUTTON_LAYOUT.VERTICAL } layout - got ${ label }`);\n }\n\n if (fundingicons) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.FUNDINGICONS } not allowed for ${ BUTTON_LAYOUT.VERTICAL } layout - got ${ fundingicons }`);\n }\n\n if (tagline) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.TAGLINE } is not allowed for ${ BUTTON_LAYOUT.VERTICAL } layout - got ${ tagline }`);\n }\n }\n\n validateRegionSpecificButton(style, props.locale);\n}\n\nexport function validateButtonProps(props : Object) {\n\n if (!props) {\n throw new Error(`Expected props`);\n }\n\n const { locale, style } = props;\n\n validateButtonLocale(locale);\n validateButtonStyle(style, props);\n}\n","/* @flow */\n\nexport const CLASS = {\n SHOULD_FOCUS: 'paypal-should-focus',\n\n CONTAINER: 'paypal-button-container',\n BUTTON: 'paypal-button',\n \n BUTTON_LABEL: 'paypal-button-label-container',\n\n LABEL: 'paypal-button-label',\n COLOR: 'paypal-button-color',\n LOGO_COLOR: 'paypal-button-logo-color',\n SHAPE: 'paypal-button-shape',\n BRANDING: 'paypal-button-branding',\n LAYOUT: 'paypal-button-layout',\n NUMBER: 'paypal-button-number',\n ENV: 'paypal-button-env',\n\n TAGLINE: 'paypal-button-tagline',\n TAGLINE_COLOR: 'paypal-button-tagline-color',\n FUNDINGICONS: 'paypal-button-fundingicons',\n\n TEXT: 'paypal-button-text',\n LOGO: 'paypal-button-logo',\n CARD: 'paypal-button-card',\n\n SEPARATOR: 'paypal-separator',\n HIDDEN: 'hidden',\n DOM_READY: 'dom-ready',\n \n PERSONALIZATION_TEXT: 'personalization-text'\n};\n","/* @flow */\n\nimport { CLASS } from './class';\n\nexport const pageStyle = `\n html, body {\n padding: 0;\n margin: 0;\n width: 100%;\n overflow: hidden;\n text-align: center;\n }\n\n body {\n display: inline-block;\n vertical-align: top;\n }\n\n * {\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -khtml-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n cursor: default;\n box-sizing: border-box;\n }\n \n .${ CLASS.HIDDEN } {\n position: absolute;\n visibility: hidden;\n }\n`;\n","/* @flow */\n\nimport { BUTTON_COLOR, ENV } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const buttonStyle = `\n\n .${ CLASS.CONTAINER } {\n display: block;\n white-space: nowrap;\n margin: 0;\n background: 0;\n border: 0;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n text-transform: none;\n font-weight: 500;R\n -webkit-font-smoothing: antialiased;\n font-smoothing: antialiased;\n z-index: 0;\n font-size: 0;\n width: 100%;\n box-sizing: border-box;\n }\n\n .${ CLASS.BUTTON }:not(.${ CLASS.CARD }) {\n border: 1px solid transparent;\n border-radius: 0 3px 3px 0;\n position: relative;\n width: 100%;\n box-sizing: border-box;\n border: none;\n vertical-align: top;\n cursor: pointer;\n outline: none;\n overflow: hidden;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.TRANSPARENT } {\n cursor: auto;\n }\n\n .${ CLASS.BUTTON } * {\n cursor: pointer;\n }\n\n .${ CLASS.CONTAINER }.${ CLASS.ENV }-${ ENV.TEST } .${ CLASS.TEXT } {\n font-family: Arial !important;\n background: rgba(0, 0, 0, 0.5) !important;\n color: transparent !important;\n text-shadow: none !important;\n }\n\n .${ CLASS.BUTTON }:hover {\n box-shadow: inset 0 0 100px 100px rgba(255, 255, 255, 0.2);\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.GOLD }:hover,\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.SILVER }:hover {\n box-shadow: inset 0 0 100px 100px rgba(0, 0, 0, 0.05);\n }\n\n .${ CLASS.CARD }, .${ CLASS.CARD } * {\n cursor: pointer;\n }\n\n .${ CLASS.CARD }:hover {\n filter: brightness(1.2);\n }\n\n .${ CLASS.BUTTON }:focus, .${ CLASS.CARD }:focus {\n outline: none;\n }\n\n .${ CLASS.SHOULD_FOCUS } .${ CLASS.BUTTON }:focus,\n .${ CLASS.SHOULD_FOCUS } .${ CLASS.CARD }:focus {\n outline: solid 2px Highlight;\n outline: auto 5px -webkit-focus-ring-color;\n outline-offset: -3px;\n }\n\n .${ CLASS.BUTTON }:focus {\n box-shadow: -1px -1px 18px 1px rgba(0, 0, 0, 0.25) inset;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.TRANSPARENT }:focus {\n box-shadow: none;\n outline: none;\n }\n\n .${ CLASS.LOGO } {\n padding: 0;\n display: inline-block;\n background: none;\n border: none;\n width: auto;\n }\n\n .${ CLASS.TEXT } {\n display: inline-block;\n white-space: pre;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.BUTTON_LABEL } {\n position: relative;\n top: 50%;\n transform: translateY(-50%);\n -webkit-transform: translateY(-50%);\n -moz-transform: translateY(-50%);\n -ms-transform: translateY(-50%);\n -o-transform: translateY(-50%);\n }\n \n .${ CLASS.BUTTON } > .${ CLASS.BUTTON_LABEL } > * {\n vertical-align: top;\n height: 100%;\n text-align: left;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.CARD } {\n border-radius: 4px;\n }\n\n .powered-by-paypal > .${ CLASS.TEXT } {\n vertical-align: top;\n line-height: 18px;\n }\n\n .powered-by-paypal > .${ CLASS.LOGO } {\n height: 16px;\n min-height: 16px;\n }\n\n .${ CLASS.TAGLINE } {\n max-width: 100%;\n font-weight: normal;\n display: block;\n text-align: center;\n width: auto;\n }\n\n .${ CLASS.SEPARATOR } {\n height: 80%;\n border-left: 1px solid rgba(0, 0, 0, 0.15);\n margin: 0 8px;\n display: inline-block;\n position: relative;\n top: 10%;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.BLACK } .${ CLASS.SEPARATOR } {\n border-color: rgba(255, 255, 255, 0.45);\n }\n`;\n","/* @flow */\n\nimport { BUTTON_LAYOUT } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const layoutStyle = `\n\n .${ CLASS.CONTAINER }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.VERTICAL } .${ CLASS.TAGLINE } {\n display: none;\n }\n`;\n","/* @flow */\n\nimport { BUTTON_BRANDING } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const brandingStyle = `\n\n .${ CLASS.BUTTON }.${ CLASS.BRANDING }-${ BUTTON_BRANDING.UNBRANDED } {\n min-width: 60%;\n width: auto;\n font-weight: 900;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.BRANDING }-${ BUTTON_BRANDING.UNBRANDED } .${ CLASS.LOGO } {\n display: none;\n }\n`;\n","/* @flow */\n\nimport { BUTTON_STYLE } from '../../config';\nimport { BUTTON_LABEL, BUTTON_LOGO, BUTTON_SIZE, BUTTON_LAYOUT, BUTTON_NUMBER } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const labelStyle = `\n\n .${ CLASS.BUTTON }.${ CLASS.LABEL }-${ BUTTON_LABEL.CARD } {\n border-radius: 0 !important;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LABEL }-${ BUTTON_LABEL.CREDIT } .${ CLASS.TEXT } {\n display: none !important;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.LABEL }-${ BUTTON_LABEL.CREDIT } .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LOGO.PAYPAL } {\n display: none;\n }\n\n @media only screen and (max-width : ${ BUTTON_STYLE[BUTTON_SIZE.SMALL].minWidth }px) {\n\n .${ CLASS.BUTTON }.${ CLASS.LABEL }-${ BUTTON_LABEL.CREDIT } .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LOGO.PAYPAL } {\n display: none;\n }\n }\n\n @media only screen and (min-width : ${ BUTTON_STYLE[BUTTON_SIZE.SMALL].minWidth }px) {\n\n .${ CLASS.BUTTON }.${ CLASS.LABEL }-${ BUTTON_LABEL.CREDIT } .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LOGO.PAYPAL } {\n display: inline-block;\n }\n }\n`;\n","/* @flow */\n\nimport { BUTTON_BRANDING, BUTTON_SHAPE, BUTTON_LAYOUT, BUTTON_NUMBER, BUTTON_LABEL } from '../../../constants';\nimport { BUTTON_STYLE, BUTTON_RELATIVE_STYLE } from '../../config';\nimport { max, perc } from '../../../lib/util';\n\nimport { CLASS } from './class';\n\nconst DUAL_BUTTON_MIN_RATIO = 2.8;\n\nexport function buttonResponsiveStyle({ height, cardNumber = 4 } : { height? : ?number, cardNumber? : number }) : string {\n\n return Object.keys(BUTTON_STYLE).map(size => {\n\n const style = BUTTON_STYLE[size];\n const buttonHeight = height || style.defaultHeight;\n const buttonTextMarginTop = style.buttonTextMargin;\n const minDualWidth = Math.round(buttonHeight * DUAL_BUTTON_MIN_RATIO * 2);\n\n return `\n\n @media only screen and (min-width: ${ style.minWidth }px) {\n\n .${ CLASS.CONTAINER } {\n min-width: ${ style.minWidth }px;\n max-width: ${ style.maxWidth }px;\n font-size: ${ max(perc(buttonHeight, 32), 10) }px;\n }\n\n .${ CLASS.BUTTON }:not(.${ CLASS.CARD }) {\n height: ${ buttonHeight }px;\n min-height: ${ height || style.minHeight }px;\n max-height: ${ height || style.maxHeight }px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.BRANDING }-${ BUTTON_BRANDING.UNBRANDED } .${ CLASS.BUTTON_LABEL } {\n height: 100%;\n font-size: ${ max(perc(buttonHeight, 45), 10) }px;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.BUTTON_LABEL } {\n height: ${ perc(buttonHeight, 35) + 5 }px;\n max-height: ${ perc(buttonHeight, 60) }px;\n min-height: ${ perc(buttonHeight, 40) }px;\n }\n \n .${ CLASS.BUTTON } .${ CLASS.BUTTON_LABEL } .${ CLASS.TEXT } {\n margin-top: ${ buttonTextMarginTop }px;\n }\n \n .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LABEL.EPS },\n .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LABEL.MYBANK } {\n height: ${ perc(buttonHeight, 50) + 5 }px;\n max-height: ${ perc(buttonHeight, 70) }px;\n min-height: ${ perc(buttonHeight, 40) }px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.SHAPE }-${ BUTTON_SHAPE.PILL } {\n border-radius: ${ Math.ceil(buttonHeight / 2) }px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.SHAPE }-${ BUTTON_SHAPE.RECT } {\n border-radius: 4px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.VERTICAL } {\n margin-bottom: ${ perc(buttonHeight, BUTTON_RELATIVE_STYLE.VERTICAL_MARGIN) }px;\n }\n\n .${ CLASS.SEPARATOR } {\n margin: 0 ${ perc(buttonHeight, 5) }px;\n }\n\n .${ CLASS.TAGLINE } {\n display: ${ style.allowTagline ? 'block' : 'none' };\n height: ${ perc(buttonHeight, BUTTON_RELATIVE_STYLE.TAGLINE) }px;\n line-height: ${ perc(buttonHeight, BUTTON_RELATIVE_STYLE.TAGLINE) }px;\n }\n\n .${ CLASS.FUNDINGICONS } {\n display: ${ style.allowFunding ? 'block' : 'none' };\n height: ${ perc(buttonHeight, BUTTON_RELATIVE_STYLE.FUNDINGICONS) }px;\n }\n\n .${ CLASS.CARD } {\n display: inline-block;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.CARD } {\n width: ${ (90 / cardNumber).toFixed(2) }%;\n max-width: ${ perc(buttonHeight, 160) }px;\n margin-top: 0;\n margin-left: ${ (5 / cardNumber).toFixed(2) }%;\n margin-right: ${ (5 / cardNumber).toFixed(2) }%;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.CARD } img {\n width: 100%;\n }\n\n .${ CLASS.FUNDINGICONS } .${ CLASS.CARD } {\n height: ${ perc(buttonHeight, 70) }px;\n margin-top: ${ perc(buttonHeight, 15) }px;\n margin-left: ${ perc(buttonHeight, 7) }px;\n margin-right: ${ perc(buttonHeight, 7) }px;\n }\n\n .${ CLASS.FUNDINGICONS } .${ CLASS.CARD } img {\n height: 100%;\n }\n }\n\n @media only screen and (min-width: ${ style.minWidth }px) and (max-width: ${ minDualWidth }px) {\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.NUMBER }-0 {\n width: 100%;\n margin-right: 0;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.NUMBER }-1 {\n display: none;\n }\n\n .${ CLASS.CONTAINER }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE } .${ CLASS.TAGLINE } {\n display: none;\n }\n }\n\n @media only screen and (min-width: ${ max(style.minWidth, minDualWidth) }px) {\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.NUMBER }-0 {\n display: inline-block;\n width: calc(50% - 2px);\n margin-right: 4px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.NUMBER }-1 {\n display: inline-block;\n width: calc(50% - 2px);\n }\n\n .${ CLASS.CONTAINER }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE } .${ CLASS.TAGLINE } {\n display: block;\n }\n }\n `;\n\n }).join('\\n');\n}\n","/* @flow */\n\nimport { BUTTON_COLOR } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const buttonColorStyle = `\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.GOLD } {\n background: #ffc439;\n color: #111;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.BLUE } {\n background: #009cde;\n color: #fff;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.SILVER } {\n background: #eee;\n color: #111;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.BLACK } {\n background: #2C2E2F;\n color: #fff;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.DARKBLUE } {\n background: #003087;\n color: #fff;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.TRANSPARENT } {\n background: transparent;\n color: #111;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.WHITE } {\n background: #fff;\n color: #2C2E2F;\n border: 1px solid #2C2E2F;\n }\n`;\n","/* @flow */\n\nimport { pageStyle } from './page';\nimport { buttonStyle } from './button';\nimport { layoutStyle } from './layout';\nimport { brandingStyle } from './branding';\nimport { labelStyle } from './labels';\nimport { buttonResponsiveStyle } from './responsive';\nimport { buttonColorStyle } from './color';\n\nexport function componentStyle({ height, cardNumber } : { height? : ?number, cardNumber? : number }) : string {\n return `\n ${ pageStyle }\n ${ buttonStyle }\n ${ buttonColorStyle }\n ${ layoutStyle }\n ${ brandingStyle }\n ${ labelStyle }\n ${ buttonResponsiveStyle({ height, cardNumber }) }\n `;\n}\n","/* @flow */\n\nexport { componentStyle } from './base';\nexport { CLASS } from './class';\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, type JsxHTMLNode, JsxHTMLNodeContainer } from '../../lib/jsx';\n\nimport { CLASS } from './componentStyle';\n\nexport function LoadingDots(delay : number) : JsxHTMLNode {\n return (\n
\n \n {outlet}\n
\n );\n}\n","/* @flow */\n\nexport * from './componentTemplate';\nexport * from './containerTemplate';\n\n","\n/* @flow */\n\nimport { track, flush as flushLogs } from 'beaver-logger/client';\n\nimport { Checkout } from '../checkout';\nimport { setupPopupBridgeProxy } from '../integrations/popupBridge';\nimport { getPageRenderTime, setLogLevel } from '../lib';\nimport { ATTRIBUTE, FUNDING, FPTI, BUTTON_LAYOUT, BUTTON_COLOR, BUTTON_SIZE, BUTTON_SHAPE, BUTTON_LABEL } from '../constants';\n\nimport typeof { Button } from './component';\n\nexport function setupButtonChild(ButtonComponent : Button) {\n setupPopupBridgeProxy(Checkout, ButtonComponent);\n\n getPageRenderTime().then(pageRenderTime => {\n\n const fundingSources = Array.prototype.slice.call(document.querySelectorAll(`[${ ATTRIBUTE.FUNDING_SOURCE }]`)).map(el => {\n return el.getAttribute(ATTRIBUTE.CARD) || el.getAttribute(ATTRIBUTE.FUNDING_SOURCE);\n }).filter(source => {\n return source && source !== FUNDING.CARD;\n });\n\n const xprops = ButtonComponent.xprops;\n \n if (!xprops) {\n return;\n }\n\n const {\n layout = BUTTON_LAYOUT.HORIZONTAL,\n color = BUTTON_COLOR.GOLD,\n size = BUTTON_SIZE.SMALL,\n shape = BUTTON_SHAPE.PILL,\n label = BUTTON_LABEL.CHECKOUT,\n maxbuttons,\n tagline\n } = (xprops.style || {});\n\n track({\n [FPTI.KEY.STATE]: FPTI.STATE.BUTTON,\n [FPTI.KEY.TRANSITION]: FPTI.TRANSITION.BUTTON_LOAD,\n [FPTI.KEY.BUTTON_TYPE]: FPTI.BUTTON_TYPE.IFRAME,\n [FPTI.KEY.FUNDING_LIST]: fundingSources.join(':'),\n [FPTI.KEY.FUNDING_COUNT]: fundingSources.length,\n [FPTI.KEY.PAGE_LOAD_TIME]: pageRenderTime,\n [FPTI.KEY.BUTTON_LAYOUT]: layout,\n [FPTI.KEY.BUTTON_COLOR]: color,\n [FPTI.KEY.BUTTON_SIZE]: size,\n [FPTI.KEY.BUTTON_SHAPE]: shape,\n [FPTI.KEY.BUTTON_LABEL]: label,\n [FPTI.KEY.BUTTON_WIDTH]: window.innerWidth,\n [FPTI.KEY.MAX_BUTTONS]: maxbuttons,\n [FPTI.KEY.BUTTON_TAGLINE_ENABLED]: tagline ? '1' : '0'\n });\n\n flushLogs();\n });\n\n const xprops = ButtonComponent.xprops || Checkout.xprops;\n\n if (xprops && xprops.logLevel) {\n setLogLevel(xprops.logLevel);\n }\n\n // $FlowFixMe\n if (xprops.payment && !xprops.createOrder) {\n // $FlowFixMe\n xprops.createOrder = xprops.payment;\n }\n\n // $FlowFixMe\n if (xprops.onAuthorize && !xprops.onApprove) {\n // $FlowFixMe\n xprops.onApprove = xprops.onAuthorize;\n }\n\n try {\n if (xprops && xprops.onShippingChange && window.pre &&\n window.pre.inlineGuest && window.pre.inlineGuest.res &&\n window.pre.inlineGuest.res.data && window.pre.inlineGuest.res.data.treatments) {\n window.pre.inlineGuest.res.data.treatments = [];\n }\n } catch (err) {\n // pass\n }\n}\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { create } from 'zoid/src';\nimport { type Component } from 'zoid/src/component/component';\nimport { info, warn, track, error, flush as flushLogs, immediateFlush } from 'beaver-logger/client';\nimport { getDomain } from 'cross-domain-utils/src';\nimport { base64encode } from 'belter/src';\nimport { debounce, once } from 'zoid/src/lib';\n\nimport { pptm } from '../external';\nimport { config } from '../config';\nimport { SOURCE, ENV, FPTI, FUNDING, BUTTON_LABEL, BUTTON_COLOR,\n BUTTON_SIZE, BUTTON_SHAPE, BUTTON_LAYOUT, COUNTRY } from '../constants';\nimport { redirect as redir, checkRecognizedBrowser,\n getBrowserLocale, getSessionID, request, getScriptVersion,\n isIEIntranet, isEligible, getCurrentScriptUrl,\n getDomainSetting, extendUrl, isDevice, rememberFunding,\n getRememberedFunding, memoize, uniqueID, getThrottle, getBrowser } from '../lib';\nimport { rest } from '../api';\nimport { onAuthorizeListener } from '../experiments';\nimport { getPaymentType, awaitBraintreeClient,\n mapPaymentToBraintree, type BraintreePayPalClient } from '../integrations';\nimport { awaitPopupBridge } from '../integrations/popupBridge';\nimport { validateFunding, isFundingIneligible, isFundingAutoEligible } from '../funding';\n\nimport { containerTemplate, componentTemplate } from './template';\nimport { validateButtonLocale, validateButtonStyle } from './validate';\nimport { setupButtonChild } from './child';\nimport { normalizeProps } from './props';\n\npptm.listenForLoadWithNoContent();\n\nfunction isCreditDualEligible(props) : boolean {\n\n const { label, funding, layout, locale, max, sources, env } = normalizeProps(props, { locale: getBrowserLocale() });\n const { allowed } = funding;\n const { country } = locale;\n\n if (allowed && allowed.indexOf(FUNDING.CREDIT) !== -1) {\n return false;\n }\n\n if (layout !== BUTTON_LAYOUT.HORIZONTAL) {\n return false;\n }\n\n if (max === 1) {\n return false;\n }\n\n if (label === BUTTON_LABEL.CREDIT) {\n return false;\n }\n\n if (country !== COUNTRY.US) {\n return false;\n }\n\n if (isFundingIneligible(FUNDING.CREDIT, { funding, locale, layout, env })) {\n return false;\n }\n\n if (isFundingAutoEligible(FUNDING.CREDIT, { funding, locale, layout })) {\n return false;\n }\n\n if (sources.indexOf(FUNDING.CREDIT) !== -1) {\n return false;\n }\n\n const domain = getDomain().replace(/^https?:\\/\\//, '').replace(/^www\\./, '');\n\n if (config.creditTestDomains.indexOf(domain) === -1) {\n return false;\n }\n\n return true;\n}\n\nlet creditThrottle;\n\ntype ButtonOptions = {|\n style : {|\n maxbuttons? : number,\n layout? : string,\n label? : string,\n size? : string,\n shape? : string,\n color? : string,\n tagline? : boolean\n |},\n client : {\n [string] : (string | ZalgoPromise)\n },\n funding? : { allowed? : $ReadOnlyArray, disallowed? : $ReadOnlyArray },\n env? : string,\n locale? : string,\n logLevel : string,\n awaitPopupBridge : Function,\n meta : Object,\n validate? : ({ enable : () => ZalgoPromise, disable : () => ZalgoPromise }) => void,\n stage? : string,\n stageUrl? : string,\n localhostUrl? : string,\n checkoutUri? : string,\n authCode? : string,\n enableNativeCheckout? : boolean\n|};\n\nexport const Button : Component = create({\n\n tag: 'paypal-button',\n name: 'ppbutton',\n\n buildUrl(props) : string {\n const env = props.env || config.env;\n const url = config.buttonUrls[env];\n return url;\n },\n\n contexts: {\n iframe: true,\n popup: false\n },\n\n scrolling: false,\n listenForResize: true,\n\n containerTemplate,\n\n autoResize: {\n height: true,\n width: false\n },\n\n prerenderTemplate({ props, jsxDom } : { props : Object, jsxDom : Function }) : HTMLElement {\n\n const template = (\n
\n );\n\n template.addEventListener('click', () => {\n warn('button_pre_template_click');\n\n if (isIEIntranet()) {\n warn(`button_pre_template_click_intranet_mode`);\n\n flushLogs();\n\n // eslint-disable-next-line no-alert\n alert(`IE Intranet mode is not supported by PayPal. Please disable intranet mode, or continue in an alternate browser.`);\n }\n\n if (getDomainSetting('allow_full_page_fallback')) {\n info('pre_template_force_full_page');\n\n this.props.payment().then(token => {\n window.top.location = extendUrl(config.checkoutUrl, { token });\n });\n }\n });\n\n return (\n \n \n { template }\n \n \n );\n },\n\n get version() : string {\n return getScriptVersion();\n },\n\n get domain() : Object {\n return config.paypalDomains;\n },\n\n attributes: {\n iframe: {\n allowpaymentrequest: 'allowpaymentrequest'\n }\n },\n\n validate() {\n if (!isEligible()) {\n warn('button_render_ineligible');\n }\n },\n\n props: {\n domain: {\n type: 'string',\n required: false,\n def() : string {\n return window.location.host;\n },\n queryParam: true\n },\n\n sessionID: {\n type: 'string',\n required: false,\n def() : string {\n return getSessionID();\n },\n queryParam: true\n },\n\n buttonSessionID: {\n type: 'string',\n required: false,\n def() : ?string {\n return uniqueID();\n },\n queryParam: true\n },\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n }\n },\n\n meta: {\n type: 'object',\n required: false,\n def() : Object {\n return {};\n }\n },\n\n enableNativeCheckout: {\n type: 'boolean',\n required: false,\n def() : boolean {\n return false;\n }\n },\n\n client: {\n type: 'object',\n required: false,\n def() : Object {\n return {};\n },\n\n validate(client, props) {\n const env = props.env || config.env;\n\n if (!client[env]) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (typeof client[env] === 'string') {\n if (client[env].match(/^(.)\\1+$/)) {\n throw new Error(`Invalid client ID: ${ client[env] }`);\n }\n } else if (!ZalgoPromise.isPromise(client[env])) {\n throw new Error(`Expected client token to be either a string or a promise`);\n }\n },\n\n decorate(client : Object) : Object {\n if (client && client.sandbox === 'demo_sandbox_client_id') {\n client.sandbox = 'AZDxjDScFpQtjWTOUtWKbyN_bDt4OgqaF4eYXlewfBP4-8aqX3PiV8e1GWU6liB2CUXlkA59kJXE7M6R';\n }\n\n return client;\n }\n },\n\n source: {\n type: 'string',\n required: false,\n def() : string {\n return SOURCE.MANUAL;\n }\n },\n\n prefetchLogin: {\n type: 'boolean',\n required: false\n },\n\n stage: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.STAGE || env === ENV.LOCAL) {\n return config.stage;\n }\n }\n },\n\n updateClientConfiguration: {\n type: 'boolean',\n required: false,\n def: () => {\n return true;\n }\n },\n\n stageUrl: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.STAGE || env === ENV.LOCAL) {\n return config.stageUrl;\n }\n }\n },\n\n localhostUrl: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.LOCAL) {\n return config.localhostUrl;\n }\n }\n },\n\n checkoutUri: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : ?string {\n return config.checkoutUri;\n }\n },\n\n braintree: {\n type: 'object',\n required: false,\n validate(braintree, props) {\n\n if (!braintree.paypalCheckout) {\n throw new Error(`Expected Braintree paypal-checkout component to be loaded`);\n }\n\n if (!props.client) {\n throw new Error(`Expected client prop to be passed with Braintree authorization keys`);\n }\n },\n // $FlowFixMe\n decorate(braintree, props) : ZalgoPromise {\n const env = props.env || config.env;\n // $FlowFixMe\n return ZalgoPromise.hash(props.client).then(client => {\n return awaitBraintreeClient(braintree, client[env]);\n });\n }\n },\n\n payment: {\n type: 'function',\n required: true,\n memoize: false,\n timeout: __TEST__ ? 500 : 10 * 1000,\n alias: 'billingAgreement',\n\n decorate(original) : Function {\n return function payment(data = {}) : ZalgoPromise {\n\n const actions = {\n request,\n payment: {\n create: (options) => {\n return this.props.braintree\n ? this.props.braintree.then(client => {\n return client.createPayment(mapPaymentToBraintree(options.payment || options));\n })\n : ZalgoPromise.hash(this.props.client).then(client => {\n return rest.payment.create(this.props.env, client, options);\n });\n }\n },\n order: {\n create: (options) => {\n return ZalgoPromise.hash(this.props.client).then(client => {\n return rest.order.create(this.props.env, client, options);\n });\n }\n },\n braintree: {\n create: (options) => {\n if (!this.props.braintree) {\n throw new Error(`Can not create using Braintree - no braintree client provided`);\n }\n\n return this.props.braintree.then(client => {\n return client.createPayment(options);\n });\n }\n }\n };\n\n if (getDomainSetting('memoize_payment') && this.memoizedToken) {\n return this.memoizedToken;\n }\n\n this.memoizedToken = ZalgoPromise.try(original, this, [ data, actions ]);\n\n const startTime = Date.now();\n\n this.memoizedToken = this.memoizedToken.then(token => {\n\n if (!token) {\n error(`no_token_passed_to_payment`);\n throw new Error(`No value passed to payment`);\n }\n\n const elapsed = Date.now() - startTime;\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.RECIEVE_PAYMENT,\n [ FPTI.KEY.CONTEXT_TYPE ]: FPTI.CONTEXT_TYPE[getPaymentType(token)],\n [ FPTI.KEY.CONTEXT_ID ]: token,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.RESPONSE_DURATION ]: elapsed,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n flushLogs();\n\n return token;\n });\n\n return this.memoizedToken;\n };\n }\n },\n\n authCode: {\n type: 'string',\n required: false,\n def() : string {\n return config.authCode;\n }\n },\n\n funding: {\n type: 'object',\n required: false,\n queryParam: true,\n validate({ allowed = [], disallowed = [] } : Object = {}) {\n validateFunding({ allowed, disallowed, remembered: [] });\n },\n def() : Object {\n return {};\n },\n decorate({ allowed = [], disallowed = [] } : Object = {}, props : ButtonOptions) : {} {\n\n allowed = Array.isArray(allowed) ? allowed : [];\n disallowed = Array.isArray(disallowed) ? disallowed : [];\n\n if (allowed && allowed.indexOf(FUNDING.VENMO) !== -1) {\n allowed = allowed.filter(source => (source !== FUNDING.VENMO));\n }\n if (allowed && allowed.indexOf(FUNDING.ITAU) !== -1) {\n allowed = allowed.filter(source => (source !== FUNDING.ITAU));\n }\n\n if (isCreditDualEligible(props)) {\n creditThrottle = getThrottle('dual_credit_automatic', 50);\n\n if (creditThrottle.isEnabled()) {\n allowed = [ ...allowed, FUNDING.CREDIT ];\n }\n }\n\n let remembered = getRememberedFunding(sources => sources);\n\n if (!isDevice() || getDomainSetting('disable_venmo')) {\n if (remembered && remembered.indexOf(FUNDING.VENMO) !== -1) {\n remembered = remembered.filter(source => (source !== FUNDING.VENMO));\n }\n\n if (disallowed && disallowed.indexOf(FUNDING.VENMO) === -1) {\n disallowed = [ ...disallowed, FUNDING.VENMO ];\n }\n }\n\n return {\n allowed,\n disallowed,\n remembered,\n remember(sources) {\n rememberFunding(sources);\n }\n };\n }\n },\n\n commit: {\n type: 'boolean',\n required: false,\n queryParam: true,\n queryValue: (val) => {\n return val ? 'true' : 'false';\n }\n },\n\n onRender: {\n type: 'function',\n promisify: true,\n required: false,\n noop: true,\n decorate(original) : Function {\n return function decorateOnRender() : mixed {\n const { browser = 'unrecognized', version = 'unrecognized' } = getBrowser();\n info(`button_render_browser_${ browser }_${ isDevice() ? 'mobile' : 'desktop' }_${ version }`);\n\n const style = this.props.style || {};\n\n info(`button_render`);\n info(`button_render_color_${ style.color || 'default' }`);\n info(`button_render_shape_${ style.shape || 'default' }`);\n info(`button_render_size_${ style.size || 'default' }`);\n info(`button_render_label_${ style.label || 'default' }`);\n info(`button_render_branding_${ style.branding || 'default' }`);\n info(`button_render_fundingicons_${ style.fundingicons || 'default' }`);\n info(`button_render_tagline_${ style.tagline || 'default' }`);\n\n pptm.listenForButtonRender();\n pptm.reloadPptmScript(this.props.client[this.props.env]);\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_RENDER,\n [ FPTI.KEY.BUTTON_TYPE ]: FPTI.BUTTON_TYPE.IFRAME,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.BUTTON_SOURCE ]: this.props.source\n });\n\n if (isIEIntranet()) {\n warn(`button_render_intranet_mode`);\n }\n\n if (creditThrottle) {\n creditThrottle.logStart({\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID\n });\n }\n\n flushLogs();\n\n return original.apply(this, arguments);\n };\n }\n },\n\n onAuthorize: {\n type: 'function',\n alias: 'onApprove',\n required: true,\n\n decorate(original) : Function {\n return function decorateOnAuthorize(data, actions) : void | ZalgoPromise {\n\n if (data && !data.intent) {\n warn(`button_authorize_no_intent`, { paymentID: data.paymentID, token: data.paymentToken });\n }\n\n info('button_authorize');\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CHECKOUT_AUTHORIZE,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n if (isIEIntranet()) {\n warn(`button_authorize_intranet_mode`);\n }\n\n if (!isEligible()) {\n info('button_authorize_ineligible');\n }\n\n checkRecognizedBrowser('authorize');\n\n flushLogs();\n\n const restart = actions.restart;\n actions.restart = () => {\n return restart().then(() => {\n return new ZalgoPromise();\n });\n };\n\n actions.redirect = (win, url) => {\n return ZalgoPromise.try(() => {\n if (actions.close) {\n return actions.close();\n }\n }).then(() => {\n return redir(win || window.top, url || data.returnUrl);\n });\n };\n\n actions.payment.tokenize = memoize(() => {\n if (!this.props.braintree) {\n throw new Error(`Must pass in Braintree client to tokenize payment`);\n }\n\n return this.props.braintree\n .then(client => client.tokenizePayment(data));\n });\n\n const execute = actions.payment.execute;\n actions.payment.execute = () => {\n return execute().then(result => {\n\n if (!result || !result.id || !result.intent || !result.state) {\n warn(`execute_result_missing_data`);\n return new ZalgoPromise();\n }\n\n return result;\n });\n };\n\n const get = actions.payment.get;\n\n actions.payment.get = () => {\n return get().then(result => {\n if (!result || !result.id || !result.intent || !result.state) {\n warn(`get_result_missing_data`);\n return new ZalgoPromise();\n }\n\n return result;\n });\n };\n\n actions.request = request;\n\n onAuthorizeListener.trigger({\n paymentToken: data.paymentToken\n });\n\n if (creditThrottle) {\n creditThrottle.logComplete({\n [FPTI.KEY.BUTTON_SESSION_UID]: this.props.buttonSessionID\n });\n }\n\n return ZalgoPromise.try(() => {\n\n if (this.props.braintree) {\n return actions.payment.tokenize().then(({ nonce }) => {\n // $FlowFixMe\n Object.defineProperty(data, 'nonce', {\n get: () => {\n info('nonce_getter');\n flushLogs();\n return nonce;\n }\n });\n });\n }\n\n }).then(() => {\n return original.call(this, data, actions);\n }).catch(err => {\n if (this.props.onError) {\n return this.props.onError(err);\n }\n throw err;\n });\n };\n }\n },\n\n onShippingChange: {\n type: 'function',\n required: false,\n\n decorate(original) : void | Function {\n if (!original) {\n return;\n }\n\n return function decorateOnShippingChange(data, actions) : ZalgoPromise {\n\n info('button_shipping_change');\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CHECKOUT_SHIPPING_CHANGE,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n flushLogs();\n const timeout = __TEST__ ? 500 : 10 * 1000;\n\n const patch = actions.payment.patch;\n actions.payment.patch = (patchObject) => {\n return ZalgoPromise.try(() => {\n return patch(patchObject);\n });\n };\n\n const resolve = () => ZalgoPromise.resolve();\n const reject = actions.reject || function reject() {\n throw new Error(`Missing reject action callback`);\n };\n\n return ZalgoPromise.try(() => {\n return original.call(this, data, { ...actions, resolve, reject });\n }).timeout(timeout,\n new Error(`Timed out waiting ${ timeout }ms for payment`)).catch(err => {\n if (this.props.onError) {\n this.props.onError(err);\n }\n throw err;\n });\n };\n }\n },\n\n onError: {\n type: 'function',\n required: false,\n promisify: true,\n sendToChild: true,\n once: true,\n def() : (() => void) {\n return function onError(err : mixed) {\n if (isIEIntranet()) {\n warn(`button_error_intranet_mode`);\n flushLogs();\n\n // eslint-disable-next-line no-alert\n alert(`IE Intranet mode is not supported by PayPal. Please disable intranet mode, or continue in an alternate browser.`);\n }\n\n setTimeout(() => {\n throw err;\n });\n };\n }\n },\n\n onCancel: {\n type: 'function',\n required: false,\n noop: true,\n\n decorate(original) : Function {\n return function decorateOnCancel(data, actions) : void | ZalgoPromise {\n\n info('button_cancel');\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CHECKOUT_CANCEL,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n flushLogs();\n\n const redirect = (win, url) => {\n return ZalgoPromise.all([\n redir(win || window.top, url || data.cancelUrl),\n actions.close()\n ]);\n };\n\n return original.call(this, data, { ...actions, redirect });\n };\n }\n },\n\n onClick: {\n type: 'function',\n required: false,\n noop: true,\n decorate(original) : Function {\n return function decorateOnClick(data : ?{ fundingSource : string, card? : string, flow? : string, button_version? : string }) : void {\n\n info('button_click');\n if (data && data.flow) {\n info(`pay_flow_${ data.flow }`);\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.BUTTON,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_CLICK,\n [ FPTI.KEY.BUTTON_TYPE ]: FPTI.BUTTON_TYPE.IFRAME,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.CHOSEN_FUNDING ]: data && (data.card || data.fundingSource),\n [ FPTI.KEY.PAYMENT_FLOW ]: data && data.flow,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n if (isIEIntranet()) {\n warn('button_click_intranet_mode');\n }\n\n if (creditThrottle) {\n creditThrottle.log('click', {\n [ FPTI.KEY.STATE ]: FPTI.STATE.BUTTON,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_CLICK,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID\n });\n }\n\n const { color = 'default' } = this.props.style || {};\n info(`button_click_color_${ color }`);\n\n flushLogs();\n\n return original.apply(this, arguments);\n };\n }\n },\n\n onResize: {\n type: 'function',\n required: false,\n get value() : Function {\n let initialHeight;\n const logInlineGuestOutOfViewPortOnlyOnce = once((data) => {\n info('buttons_expansion_outside_viewport', data);\n immediateFlush();\n });\n\n return function onResizeHandler() {\n const container = this.container;\n\n if (!container) {\n return;\n }\n\n if (!initialHeight) {\n initialHeight = container.offsetHeight;\n }\n\n const getScrollOffsetY = () => {\n if (window.pageYOffset) {\n return window.pageYOffset;\n }\n\n if (document.documentElement) {\n return document.documentElement.scrollTop;\n }\n\n return 0;\n };\n\n // explanation https://github.com/paypal/paypal-checkout-components/pull/1136#discussion_r298025574\n const checkIfExpansionInViewport = () => {\n try {\n const scrollOffsetY = getScrollOffsetY();\n const windowHeight = window.innerHeight;\n\n const containerOffsetY = container.getBoundingClientRect().top;\n const VISIBLE_THRESHOLD = 200; // 200px, for the first input field to be visible\n\n return scrollOffsetY + windowHeight > initialHeight + containerOffsetY + VISIBLE_THRESHOLD;\n } catch (err) {\n info('cannot_get_the_viewport_information');\n return false;\n }\n };\n\n const isContainerExpanded = container && container.offsetHeight > initialHeight;\n const isExpansionInViewport = checkIfExpansionInViewport();\n\n if (!isContainerExpanded || isExpansionInViewport) {\n return;\n }\n\n logInlineGuestOutOfViewPortOnlyOnce({\n height: container.offsetHeight,\n window: {\n width: window.innerWidth,\n height: window.innerHeight\n }\n });\n };\n },\n decorate: (original) => debounce(original)\n },\n\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n },\n\n validate: validateButtonLocale\n },\n\n style: {\n type: 'object',\n required: false,\n queryParam: true,\n alias: 'buttonStyle',\n\n def() : Object {\n return {\n color: BUTTON_COLOR.GOLD,\n shape: BUTTON_SHAPE.PILL,\n size: BUTTON_SIZE.SMALL,\n label: BUTTON_LABEL.CHECKOUT,\n fundingicons: false,\n layout: BUTTON_LAYOUT.HORIZONTAL\n };\n },\n \n decorate(style : Object) : Object {\n const { label, layout = BUTTON_LAYOUT.HORIZONTAL } = style;\n if (!label && layout === BUTTON_LAYOUT.HORIZONTAL) {\n style.label = BUTTON_LABEL.CHECKOUT;\n return style;\n } else if (!label && layout === BUTTON_LAYOUT.VERTICAL) {\n style.label = BUTTON_LABEL.PAYPAL;\n return style;\n }\n return style;\n },\n\n validate(style = {}, props) {\n validateButtonStyle(style, props);\n flushLogs();\n }\n },\n\n validate: {\n type: 'function',\n required: false,\n decorate(validate) : Function {\n // $FlowFixMe\n return function decorateValidate(actions) : mixed {\n if (!this.validateCalled) {\n this.validateCalled = true;\n return validate(actions);\n }\n };\n }\n },\n\n logLevel: {\n type: 'string',\n required: false,\n get value() : string {\n return config.logLevel;\n }\n },\n\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n },\n\n awaitPopupBridge: {\n type: 'object',\n required: false,\n value: () => awaitPopupBridge(Button)\n },\n\n getPageUrl: {\n type: 'function',\n queryParam: false,\n required: false,\n def: () => {\n return () => window.location.href;\n }\n },\n\n test: {\n type: 'object',\n required: false,\n def() : Object {\n return { action: 'checkout' };\n }\n }\n }\n});\n\nif (Button.isChild()) {\n setupButtonChild(Button);\n}\n","/* @flow */\n\nimport { info, warn, flush as flushLogs } from 'beaver-logger/client';\nimport { CONSTANTS } from 'zoid/src';\nimport { getParent, getTop } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { config } from './config';\nimport { noop, isIE, getDomainSetting, extendUrl, patchMethod, once, extend } from './lib';\nimport { Button } from './button';\nimport { Checkout } from './checkout';\nimport { BUTTON_LABEL, BUTTON_SIZE, BUTTON_COLOR } from './constants';\nimport { rest } from './api';\n\nif (isIE() && getDomainSetting('ie_full_page')) {\n // $FlowFixMe\n Checkout.renderTo = (win) => {\n info('force_ie_full_page');\n flushLogs();\n\n // $FlowFixMe\n const checkout = Checkout.init({\n onAuthorize: noop\n });\n\n checkout.delegate(win);\n\n checkout.openContainer().then(() => {\n checkout.event.triggerOnce(CONSTANTS.EVENTS.CLOSE);\n checkout.showContainer();\n });\n\n // $FlowFixMe\n Button.xprops.payment().then(token => {\n window.top.location = extendUrl(config.checkoutUrl, { token });\n }).catch(err => {\n checkout.error(err);\n });\n };\n}\n\nconst parent = getParent(window);\nconst top = getTop(window);\n\nif (top && parent) {\n let canRenderTop = (top === parent);\n\n if (!canRenderTop) {\n Checkout.canRenderTo(top).then(result => {\n canRenderTop = result;\n });\n\n patchMethod(Checkout, 'renderTo', ({ args: [ win, props, el ], original, context }) => {\n\n if (!canRenderTop) {\n win = getParent(window);\n }\n\n return original.call(context, win, props, el);\n });\n }\n}\n\npatchMethod(Checkout, 'renderTo', ({ callOriginal, args: [ , props ] }) => {\n if (getDomainSetting('allow_full_page_fallback')) {\n const handleError = once((err) => {\n try {\n // eslint-disable-next-line no-console\n console.error(err && err.stack);\n } catch (err2) {\n // pass\n }\n\n // $FlowFixMe\n return Button.xprops.payment().then(token => {\n window.top.location = extendUrl(config.checkoutUrl, { token });\n });\n });\n\n props.onError = handleError;\n return callOriginal().catch(handleError);\n }\n return callOriginal();\n});\n\nlet debounce = false;\n\npatchMethod(Checkout, 'renderTo', ({ callOriginal, args: [ , props ] }) => {\n\n if (debounce) {\n warn('button_mutliple_click_debounce');\n return new ZalgoPromise(noop);\n }\n\n debounce = true;\n\n for (const methodName of [ 'onAuthorize', 'onCancel', 'onError', 'onClose' ]) {\n const original = props[methodName];\n props[methodName] = function unDebounce() : mixed {\n debounce = false;\n if (original) {\n return original.apply(this, arguments);\n }\n };\n }\n\n return callOriginal();\n});\n\npatchMethod(rest.payment, 'create', ({ original: createOriginal, context: createContext, args: [ env, client, options, experience ] }) => {\n if (!options.payment) {\n options = { payment: options, experience };\n }\n return createOriginal.call(createContext, env, client, options);\n});\n\npatchMethod(Button.props.style, 'validate', ({ callOriginal, args: [ style ] }) => {\n\n if (!style) {\n return callOriginal();\n }\n\n if (style && style.color === 'creditblue') {\n style.color = BUTTON_COLOR.DARKBLUE;\n }\n\n if (style && style.label === 'generic') {\n style.label = BUTTON_LABEL.PAYPAL;\n }\n\n if (style && (!style.label || style.label === BUTTON_LABEL.CHECKOUT) && style.size === 'tiny') {\n warn(`unsupported_button_size_tiny`);\n style.size = BUTTON_SIZE.SMALL;\n }\n\n return callOriginal();\n});\n\npatchMethod(Button, 'render', ({ callOriginal, args: [ props ] }) => {\n\n if (props.billingAgreement) {\n props.payment = props.billingAgreement;\n delete props.billingAgreement;\n }\n\n return callOriginal();\n});\n\npatchMethod(Button.props.payment, 'decorate', ({ original, context, args: [ originalPayment ] }) => {\n return original.call(context, function payment(data : Object, actions : Object) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n patchMethod(actions.payment, 'create', ({ original: createOriginal, context: createContext, args: [ options, experience ] }) => {\n if (!options.payment) {\n options = { payment: options, experience };\n }\n return createOriginal.call(createContext, options);\n });\n\n function resolveData(token) {\n resolve(token);\n }\n\n function rejectActions(err) {\n reject(err);\n }\n\n extend(resolveData, data);\n extend(resolveData, actions);\n extend(rejectActions, actions);\n\n const ctx = {\n props: {\n env: this.props.env,\n client: this.props.client\n }\n };\n\n let result;\n\n try {\n result = originalPayment.call(ctx, resolveData, rejectActions);\n } catch (err) {\n return reject(err);\n }\n\n if (result && typeof result.then === 'function') {\n return result.then(resolve, reject);\n }\n\n if (result !== undefined) {\n return resolve(result);\n }\n });\n });\n});\n\nif (Button.isChild()) {\n if (!window.Promise) {\n window.Promise = ZalgoPromise;\n }\n}\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { create } from 'zoid/src';\nimport { type Component } from 'zoid/src/component/component';\nimport type { CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { base64encode } from 'belter/src';\n\nimport { config } from '../config';\nimport { getButtonSessionID, getBrowserLocale, getSessionID, getCurrentScriptUrl } from '../lib';\n\ntype CardOptions = {|\n client : {\n [string] : (string | ZalgoPromise)\n },\n env? : string,\n locale? : string,\n logLevel : string,\n awaitPopupBridge : Function,\n onAuthorize : ({ returnUrl : string }, { redirect : (?CrossDomainWindowType, ?string) => ZalgoPromise }) => ?ZalgoPromise,\n onCancel? : ({ cancelUrl : string }, { redirect : (?CrossDomainWindowType, ?string) => ZalgoPromise }) => ?ZalgoPromise,\n onEvent? : ({ type : string, payload : Object }) => void,\n meta : Object,\n commit : boolean,\n token : string\n|};\n\nexport const Card : Component = create({\n tag: 'card-fields',\n name: 'ppcard',\n\n buildUrl(props) : string {\n const env = props.env || config.env;\n return config.inlinedCardFieldUrls[env];\n },\n\n contexts: {\n iframe: true,\n popup: false\n },\n\n dimensions: {\n height: '300px',\n width: '100%'\n },\n\n autoResize: {\n height: true,\n width: false\n },\n\n props: {\n sessionID: {\n type: 'string',\n required: false,\n def() : string {\n return getSessionID();\n },\n queryParam: true\n },\n\n\n token: {\n type: 'string',\n required: true,\n queryParam: true\n },\n\n buttonSessionID: {\n type: 'string',\n required: false,\n def() : ?string {\n return getButtonSessionID();\n },\n queryParam: true\n },\n\n commit: {\n type: 'boolean',\n required: false,\n queryParam: true\n },\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n },\n\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n allowDelegate: true,\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n }\n },\n\n initialFormValues: {\n type: 'object',\n required: false\n },\n\n\n onAuthorize: {\n type: 'function',\n required: true,\n once: true\n },\n\n onAuth: {\n type: 'function',\n required: false,\n sameDomain: true\n },\n\n onEvent: {\n type: 'function',\n required: false,\n sameDomain: true\n },\n\n getState: {\n type: 'function',\n required: false,\n sameDomain: true\n },\n\n dispatch: {\n type: 'object',\n required: false,\n sameDomain: true\n },\n\n onCancel: {\n type: 'function',\n required: false,\n once: true,\n noop: true\n },\n\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n },\n \n style: {\n type: 'object',\n required: false,\n queryParam: true,\n def() : Object {\n return {\n cardIcons: {\n display: false\n },\n submitButton: {\n display: true\n },\n currencyConversion: {\n display: true\n }\n };\n }\n }\n }\n});\n","/* @flow */\n\nimport { info, track, debug, warn, error, flush as flushLogs } from 'beaver-logger/client';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { config } from './config';\nimport { FPTI } from './constants';\nimport { initLogger, checkForCommonErrors, setLogLevel, stringifyError,\n stringifyErrorMessage, getResourceLoadTime, isPayPalDomain, isEligible,\n getDomainSetting, once, openMetaFrame, precacheRememberedFunding,\n getCurrentScript, getRememberedFunding } from './lib';\nimport { Button } from './button';\nimport { Checkout } from './checkout';\nimport { pptm } from './external';\n\nfunction domainToEnv(domain : string) : ?string {\n for (const env of Object.keys(config.paypalUrls)) {\n if (config.paypalUrls[env] === domain) {\n return env;\n }\n }\n}\n\nfunction setDomainEnv(domain : string) {\n const currentDomainEnv = domainToEnv(domain);\n\n if (currentDomainEnv && currentDomainEnv !== 'test') {\n config.env = currentDomainEnv;\n }\n}\n\nsetDomainEnv(`${ window.location.protocol }//${ window.location.host }`);\n\nZalgoPromise.onPossiblyUnhandledException(err => {\n\n error('unhandled_error', {\n stack: stringifyError(err),\n errtype: ({}).toString.call(err)\n });\n\n track({\n [ FPTI.KEY.ERROR_CODE ]: 'checkoutjs_error',\n [ FPTI.KEY.ERROR_DESC ]: stringifyErrorMessage(err)\n });\n\n return flushLogs().catch(err2 => {\n if (window.console) {\n try {\n if (window.console.error) {\n window.console.error('Error flushing:', stringifyError(err2));\n } else if (window.console.log) {\n window.console.log('Error flushing:', stringifyError(err2));\n }\n } catch (err3) {\n setTimeout(() => {\n throw err3;\n }, 1);\n }\n }\n });\n});\n\nconst currentScript = getCurrentScript();\nconst currentProtocol = window.location.protocol.split(':')[0];\n\n\ntype ConfigOptions = {|\n env? : ?string,\n stage? : ?string,\n apiStage? : ?string,\n stageUrl? : ?string,\n localhostUrl? : ?string,\n checkoutUri? : ?string,\n state? : ?string,\n logLevel? : ?string,\n merchantID? : ?string,\n precacheRemembered? : boolean,\n authCode? : ?string\n|};\n\nfunction configure({ env, stage, stageUrl, apiStage, localhostUrl, checkoutUri, state, logLevel, merchantID, authCode } : ConfigOptions = {}) {\n\n if (env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n\n delete config.env;\n config.env = env;\n } else if (Button.xprops && Button.xprops.env) {\n delete config.env;\n // $FlowFixMe\n config.env = Button.xprops.env;\n } else if (Checkout.xprops && Checkout.xprops.env) {\n delete config.env;\n // $FlowFixMe\n config.env = Checkout.xprops.env;\n }\n\n if (stage) {\n delete config.stage;\n config.stage = stage;\n } else if (Button.xprops && Button.xprops.stage) {\n delete config.stage;\n // $FlowFixMe\n config.stage = Button.xprops.stage;\n } else if (Checkout.xprops && Checkout.xprops.stage) {\n delete config.stage;\n // $FlowFixMe\n config.stage = Checkout.xprops.stage;\n }\n\n if (stageUrl) {\n delete config.stageUrl;\n // $FlowFixMe\n config.stageUrl = stageUrl;\n } else if (Button.xprops && Button.xprops.stageUrl) {\n delete config.stageUrl;\n // $FlowFixMe\n config.stageUrl = Button.xprops.stageUrl;\n } else if (Checkout.xprops && Checkout.xprops.stageUrl) {\n delete config.stageUrl;\n // $FlowFixMe\n config.stageUrl = Checkout.xprops.stageUrl;\n }\n\n authCode = authCode || (Button.xprops && Button.xprops.authCode) || (Checkout.xprops && Checkout.xprops.authCode);\n\n if (authCode) {\n delete config.authCode;\n config.authCode = authCode;\n }\n\n if (apiStage) {\n delete config.apiStage;\n config.apiStage = apiStage;\n }\n\n localhostUrl = localhostUrl || (Button.xprops && Button.xprops.localhostUrl) || (Checkout.xprops && Checkout.xprops.localhostUrl);\n if (localhostUrl) {\n config.localhostUrl = localhostUrl;\n }\n\n checkoutUri = checkoutUri || (Button.xprops && Button.xprops.checkoutUri) || (Checkout.xprops && Checkout.xprops.checkoutUri);\n if (checkoutUri) {\n config.checkoutUri = checkoutUri;\n }\n\n if (state) {\n delete config.state;\n config.state = state;\n }\n\n if (merchantID) {\n config.merchantID = merchantID;\n }\n\n if (logLevel) {\n setLogLevel(logLevel);\n } else {\n setLogLevel(config.logLevel);\n }\n}\n\nexport const init = once(({ precacheRemembered }) => {\n\n if (!isEligible()) {\n warn('ineligible');\n }\n\n checkForCommonErrors();\n\n initLogger();\n\n if (pptm.shouldCreateInitialPptmScript()) {\n pptm.createPptmScript();\n }\n\n if (precacheRemembered) {\n precacheRememberedFunding();\n }\n\n if (getDomainSetting('force_bridge') && !isPayPalDomain()) {\n openMetaFrame(config.env);\n }\n\n info(`setup_${ config.env }`);\n\n debug(`current_protocol_${ currentProtocol }`);\n});\n\n// $FlowFixMe\nexport function setup(options : ConfigOptions = {}) {\n configure(options);\n init(options);\n}\n\nif (currentScript) {\n setup({\n env: currentScript.getAttribute('data-env'),\n stage: currentScript.getAttribute('data-stage'),\n apiStage: currentScript.getAttribute('data-api-stage'),\n stageUrl: currentScript.getAttribute('data-stage-url'),\n localhostUrl: isPayPalDomain() ? currentScript.getAttribute('data-localhost-url') : undefined,\n checkoutUri: isPayPalDomain() ? currentScript.getAttribute('data-checkout-uri') : undefined,\n state: currentScript.getAttribute('data-state'),\n logLevel: currentScript.getAttribute('data-log-level'),\n merchantID: currentScript.getAttribute('data-merchant-id'),\n authCode: currentScript.getAttribute('data-auth-code'),\n precacheRemembered: currentScript.hasAttribute('data-precache-remembered-funding')\n });\n\n} else {\n setup();\n}\n\nif (!isPayPalDomain()) {\n\n if (currentScript) {\n\n const scriptProtocol = currentScript.src.split(':')[0];\n const loadTime = getResourceLoadTime(currentScript.src);\n\n debug(`current_script_protocol_${ scriptProtocol }`);\n debug(`current_script_protocol_${ currentProtocol === scriptProtocol ? 'match' : 'mismatch' }`);\n debug(`current_script_version_${ config.version.replace(/[^0-9a-zA-Z]+/g, '_') }`);\n\n if (loadTime) {\n debug(`current_script_time`, { loadTime });\n debug(`current_script_time_${ Math.floor(loadTime / 1000) }`);\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.SCRIPT_LOAD,\n [ FPTI.KEY.TRANSITION_TIME ]: loadTime,\n [ FPTI.KEY.FUNDING_REMEMBERED ]: getRememberedFunding().join(',')\n });\n\n } else {\n\n debug(`no_current_script`);\n debug(`no_current_script_version_${ config.version.replace(/[^0-9a-zA-Z]+/g, '_') }`);\n\n if (document.currentScript) { // eslint-disable-line compat/compat\n debug(`current_script_not_recognized`, { src: document.currentScript.src }); // eslint-disable-line compat/compat\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.SCRIPT_LOAD\n });\n }\n}\n","/* @flow */\n\nimport { debug, info, warn, error, track, flush } from 'beaver-logger/client';\nimport { destroyAll as _destroyAll } from 'zoid/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport * as _postRobot from 'post-robot/src'; // eslint-disable-line import/no-namespace\n\nimport { isPayPalDomain } from './lib';\nimport { Checkout as _Checkout } from './checkout';\nimport { BillingPage as _BillingPage } from './billing';\nimport { ThreeDomainSecure as _ThreeDomainSecure } from './threeDomainSecure';\n\nimport './hacks'; // eslint-disable-line import/no-unassigned-import\n\nexport const postRobot = _postRobot;\nexport { ZalgoPromise as Promise } from 'zalgo-promise/src';\nexport { PopupOpenError } from 'zoid/src';\n\nexport { rest } from './api';\nexport { Button } from './button';\nexport { Card } from './card';\nexport { setup } from './setup';\nexport { config } from './config';\nexport { ENV, USERS, SOURCE, FUNDING, CARD } from './constants';\nexport { request, isEligible, isFundingRemembered, allowIframe as forceIframe, allowIframe as isWebView, allowIframe } from './lib';\nexport { logExperimentTreatment } from './experiments';\nexport { logFundingEligibility } from './funding';\n\nexport const onPossiblyUnhandledException = ZalgoPromise.onPossiblyUnhandledException;\n\nexport const version = __PAYPAL_CHECKOUT__.__MINOR_VERSION__;\n\nexport let checkout;\nexport let apps;\n\nif (__PAYPAL_CHECKOUT__.__LEGACY_SUPPORT__) {\n const legacy = require('./legacy');\n checkout = legacy.checkout;\n apps = legacy.apps;\n}\n\n// -------------------------------------------------------------\n\nexport let Checkout;\nexport let BillingPage;\nexport let PayPalCheckout;\nexport let destroyAll;\nexport let enableCheckoutIframe;\nexport let logger;\nexport let ThreeDomainSecure;\n\nfunction _enableCheckoutIframe() {\n _Checkout.contexts.iframe = true;\n}\n\nif (isPayPalDomain() || __TEST__) {\n Checkout = _Checkout;\n BillingPage = _BillingPage;\n ThreeDomainSecure = _ThreeDomainSecure;\n PayPalCheckout = _Checkout;\n enableCheckoutIframe = _enableCheckoutIframe;\n destroyAll = _destroyAll;\n logger = { debug, info, warn, error, track, flush };\n}\n","/* @flow */\n/* eslint import/no-default-export: off */\n\nimport * as INTERFACE from './interface'; // eslint-disable-line import/no-namespace\n\nexport * from './interface';\nexport default INTERFACE;\n","/* @flow */\n\nexport const LOG_PREFIX = `paypal_legacy`;\n\nexport const ATTRIBUTES = {\n BUTTON: 'data-paypal-button',\n MERCHANT_ID: 'data-paypal-id',\n ENV: 'data-env',\n SANDBOX: 'data-sandbox'\n};\n\nexport const CLASSES = {\n HIDDEN_BUTTON: 'paypal-button-hidden'\n};\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { debug } from 'beaver-logger/client';\nimport { bridge } from 'post-robot/src';\n\nimport { config } from '../config';\nimport { openMetaFrame, noop } from '../lib';\n\nexport function setupPostBridge(env : string) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n const metaFrameDomain : string = config.paypalDomains[env];\n\n if (!bridge || !bridge.needsBridge({ domain: metaFrameDomain })) {\n return debug(`post_bridge_not_required`, { env });\n }\n\n debug(`setup_post_bridge`, { env });\n\n return openMetaFrame(env).then(noop);\n });\n}\n","/* @flow */\n\nimport { isDevice, isEligible, supportsPopups } from '../lib';\n\nexport function isLegacyEligible() : boolean {\n\n if (!isEligible()) {\n return false;\n }\n\n if (!supportsPopups()) {\n return false;\n }\n\n if (isDevice()) {\n return false;\n }\n\n return true;\n}\n","/* @flow */\n\nimport { prefix } from 'beaver-logger/client';\n\nimport { COUNTRY, LANG, LOCALE } from '../constants';\nimport type { LocaleType } from '../types';\n\nimport { LOG_PREFIX } from './constants';\n\nconst { warn } = prefix(LOG_PREFIX);\n\nconst DEFAULT_COUNTRY = COUNTRY.US;\nconst DEFAULT_LANG = LANG.EN;\n\nexport function normalizeLocale(locale : string) : LocaleType {\n\n let [ lang, country ] = locale.split('_');\n\n if (!country) {\n if (LOCALE[lang]) {\n country = lang;\n lang = null;\n } else {\n country = DEFAULT_COUNTRY;\n }\n }\n\n if (!LOCALE[country]) {\n warn(`invalid_user_country`, { country });\n country = DEFAULT_COUNTRY;\n }\n\n if (!lang) {\n lang = DEFAULT_LANG;\n }\n\n if (LOCALE[country].indexOf(lang) === -1) {\n warn(`invalid_user_lang`, { lang });\n\n if (LOCALE[country].indexOf(DEFAULT_LANG) !== -1) {\n lang = DEFAULT_LANG;\n } else {\n lang = LOCALE[country][0];\n }\n }\n\n return { country, lang };\n}\n","/* @flow */\n\nimport { prefix } from 'beaver-logger/client';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { config } from '../config';\nimport { FPTI, BUTTON_COLOR, BUTTON_SHAPE, BUTTON_SIZE, BUTTON_LABEL } from '../constants';\nimport { loadScript, memoize, isElementVisible, stringifyError } from '../lib';\n\nimport { LOG_PREFIX } from './constants';\nimport { normalizeLocale } from './common';\n\nconst { info, debug, error } = prefix(LOG_PREFIX);\n\nconst loadButtonJS = memoize(() : ZalgoPromise => {\n\n debug(`buttonjs_load`);\n\n return loadScript(config.buttonJSUrl).catch(err => {\n info(`buttonjs_load_error_retry`, { error: stringifyError(err) });\n return loadScript(config.buttonJSUrl);\n }).then(result => {\n debug(`buttonjs_load_success`);\n return result;\n }).catch(err => {\n error(`buttonjs_load_error`, { error: stringifyError(err) });\n throw err;\n });\n});\n\nfunction renderButton(id, { container, locale, type, color, shape, size }) : ZalgoPromise {\n\n return loadButtonJS().then(() => {\n\n if (locale) {\n const { country, lang } = normalizeLocale(locale);\n locale = `${ lang }_${ country }`;\n }\n\n locale = locale || `${ config.locale.lang }_${ config.locale.country }`;\n color = color || BUTTON_COLOR.GOLD;\n shape = shape || BUTTON_SHAPE.PILL;\n size = size || BUTTON_SIZE.SMALL;\n type = type || BUTTON_LABEL.CHECKOUT;\n\n debug(`render_button_lc_${ locale }`);\n debug(`render_button_color_${ color }`);\n debug(`render_button_shape_${ shape }`);\n debug(`render_button_size_${ size }`);\n debug(`render_button_label_${ type }`);\n\n const el = window.paypal.button.create(id, { lc: locale, color, shape, size }, { type: 'button', label: type }).el;\n container.appendChild(el);\n\n try {\n info(`in_page_button_${ isElementVisible(el) ? 'visible' : 'not_visible' }`);\n\n } catch (err) {\n // pass\n }\n\n return el.childNodes[0];\n });\n}\n\n// eslint-disable-next-line flowtype/no-mutable-array\nexport function renderButtons(id : string, buttons : Array) : ZalgoPromise> {\n\n return ZalgoPromise.map(buttons, button => {\n return ZalgoPromise.try(() => {\n\n if (button.container) {\n return renderButton(id, button);\n } else {\n return button.button;\n }\n\n }).then(element => {\n\n let container;\n let type;\n const condition = button.condition;\n const click = button.click;\n\n if (button.container) {\n container = button.container;\n type = FPTI.BUTTON_TYPE.HTML;\n } else {\n container = button.button;\n type = FPTI.BUTTON_TYPE.CUSTOM;\n }\n\n return { container, element, type, condition, click };\n });\n });\n}\n\nexport function getHijackTargetElement(button : HTMLElement | HTMLButtonElement) : ?HTMLElement {\n\n // $FlowFixMe\n const form = button.form;\n\n if (form) {\n debug(`target_element_button_form`);\n return form;\n }\n\n const tagName = button.tagName && button.tagName.toLowerCase();\n\n if (tagName === 'a') {\n debug(`target_element_link`);\n return button;\n }\n\n const parentElement = button.parentElement;\n const parentTagName = parentElement && parentElement.tagName && parentElement.tagName.toLowerCase();\n\n if ((tagName === 'img' || tagName === 'button') && parentTagName === 'a') {\n debug(`target_element_parent_link`);\n // $FlowFixMe\n return parentElement;\n }\n\n const grandparentElement = parentElement && parentElement.parentElement;\n const grandparentTagName = grandparentElement && grandparentElement.tagName && grandparentElement.tagName.toLowerCase();\n\n if (tagName === 'button' && grandparentTagName === 'a') {\n debug(`target_element_grandparent_link`);\n // $FlowFixMe\n return button.parentElement && button.parentElement.parentElement;\n }\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { flush as flushLogs, prefix } from 'beaver-logger/client';\n\nimport { config } from '../config';\nimport { ENV } from '../constants';\nimport { urlWillRedirectPage, redirect as redir } from '../lib';\n\nimport { LOG_PREFIX } from './constants';\n\nconst { warn } = prefix(LOG_PREFIX);\n\nlet redirected = false;\n\nexport function logRedirect(location : string) {\n\n if (redirected) {\n warn(`multiple_redirects`);\n }\n\n if (urlWillRedirectPage(location)) {\n redirected = true;\n }\n\n flushLogs();\n}\n\nexport function redirect(url : string) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n if (!url) {\n throw new Error(`Redirect url undefined`);\n }\n\n if (config.env === ENV.TEST && urlWillRedirectPage(url)) {\n return redir(window, `#fullpageRedirect?url=${ url }`);\n }\n\n logRedirect(url);\n\n return redir(window, url);\n });\n}\n\nexport function isToken(item : string) : boolean {\n return Boolean(item && item.match(/^(EC-)?[A-Z0-9]{17}$/));\n}\n\n\n/* Parse Token\n -----------\n\n We are passed either a token, or a url containing the token. In order to run the new checkout component we need to\n strip out the token from the url in order to pass it down as a prop\n*/\n\nexport function parseToken(token : string) : ?string {\n\n if (!token) {\n return;\n }\n\n token = decodeURIComponent(decodeURIComponent(token));\n\n // We may get lucky and be passed a token straight off the bar\n\n if (token.match(/^(EC-)?[A-Z0-9]{17}$/)) {\n return token;\n }\n\n // Otherwise strip the token from the url we're sent\n\n let match = token.match(/token=((EC-)?[A-Z0-9]{17})/);\n\n if (match) {\n return match[1];\n }\n\n match = token.match(/(EC-[A-Z0-9]{17})/);\n\n if (match) {\n return match[1];\n }\n}\n\nexport function hasToken(item : string) : boolean {\n return Boolean(parseToken(item));\n}\n","/* @flow */\n\nimport { prefix } from 'beaver-logger/client';\n\nimport { config } from '../config';\nimport { ENV } from '../constants';\nimport { getElements } from '../lib';\n\nimport { normalizeLocale } from './common';\nimport { LOG_PREFIX } from './constants';\n\nconst { info, warn } = prefix(LOG_PREFIX);\n\nexport function normalizeOptions(options : Object) {\n\n // Normalize environment\n\n if (options.environment) {\n\n if (options.environment === 'live') {\n options.environment = ENV.PRODUCTION;\n }\n\n if (!config.paypalUrls[options.environment]) {\n warn('invalid_env', { badenv: options.environment });\n options.environment = config.env;\n }\n }\n\n // If we're passed a single button in options.button, turn it into an array\n\n if (options.button && !Array.isArray(options.button)) {\n info(`options_button_single_button_passed`);\n\n options.button = [ options.button ];\n }\n\n // If we're passed an array of elements in options.buttons, switch it over to options.button\n\n if (options.buttons && getElements(options.buttons).length) {\n info(`options_buttons_with_elements_passed`);\n\n options.button = options.buttons;\n delete options.buttons;\n }\n\n // If we're passed an empty options.button array, clear the value\n\n if (options.button && options.button.length === 0) {\n info(`options_button_empty`);\n\n delete options.button;\n }\n\n // If we're passed options.button and options.container, concat both under button\n\n if (options.button && options.container) {\n info(`options_button_and_container_passed`, { button: options.button, container: options.container });\n\n options.button = options.button.concat(options.container);\n delete options.container;\n }\n\n // Normalize button selectors to elements\n\n if (options.button) {\n const button = getElements(options.button);\n\n if (button.length) {\n options.button = button;\n\n } else {\n warn(`options_button_element_not_found`, { element: JSON.stringify(options.button) });\n delete options.button;\n }\n }\n\n // Normalize options.button to options.buttons\n\n if (options.button) {\n\n options.buttons = options.button.map(button => {\n return {\n button,\n click: options.click,\n condition: options.condition\n };\n });\n\n delete options.click;\n delete options.condition;\n delete options.button;\n }\n\n // Normalize array of buttons\n\n else if (options.buttons && Array.isArray(options.buttons)) {\n\n const buttons = [];\n\n options.buttons.forEach(button => {\n\n if (!button) {\n return;\n }\n\n if (button.container && button.container !== options.container) {\n warn(`mismatched_container_and_button_passed`, { options: options.container, button: button.container });\n }\n\n getElements(button.container || button.button).forEach(element => {\n buttons.push({\n\n [ button.container ? 'container' : 'button' ]: element,\n\n click: button.click || options.click,\n condition: button.condition || options.condition,\n type: button.type || options.type,\n locale: button.locale || options.locale,\n color: button.color || options.color,\n shape: button.shape || options.shape,\n size: button.size || options.size\n });\n });\n });\n\n delete options.buttons;\n delete options.click;\n delete options.condition;\n delete options.button;\n delete options.type;\n delete options.locale;\n delete options.color;\n delete options.shape;\n delete options.size;\n\n if (buttons.length) {\n options.buttons = buttons;\n }\n }\n\n // Otherwise normalize container into array of buttons\n\n else if (options.container && !Array.isArray(options.buttons)) {\n\n const buttons = [];\n\n getElements(options.container).forEach((container, i) => {\n buttons.push({\n container,\n click: options.click,\n condition: options.condition,\n type: Array.isArray(options.type) ? options.type[i] : options.type,\n locale: Array.isArray(options.locale) ? options.locale[i] : options.locale,\n color: Array.isArray(options.color) ? options.color[i] : options.color,\n shape: Array.isArray(options.shape) ? options.shape[i] : options.shape,\n size: Array.isArray(options.size) ? options.size[i] : options.size\n });\n });\n\n delete options.container;\n delete options.buttons;\n delete options.click;\n delete options.condition;\n delete options.button;\n delete options.type;\n delete options.locale;\n delete options.color;\n delete options.shape;\n delete options.size;\n\n if (buttons.length) {\n options.buttons = buttons;\n }\n }\n\n if (!options.buttons) {\n options.buttons = [];\n }\n}\n\nexport function setupConfig(options : Object) {\n\n if (options.environment && config.paypalUrls[options.environment]) {\n config.env = options.environment;\n }\n\n if (options.locale) {\n config.locale = normalizeLocale(options.locale);\n config.customCountry = true;\n }\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { prefix, flush as flushLogs } from 'beaver-logger/client';\nimport formSerialize from 'form-serialize';\n\nimport { Checkout } from '../checkout';\nimport { config } from '../config';\nimport { ENV, FPTI } from '../constants';\nimport { supportsPopups, once, safeJSON, extendUrl, stringifyError, request } from '../lib';\n\nimport { setupPostBridge } from './postBridge';\nimport { isLegacyEligible } from './eligibility';\nimport { LOG_PREFIX } from './constants';\nimport { renderButtons, getHijackTargetElement } from './button';\nimport { redirect, logRedirect, parseToken } from './util';\nimport { normalizeOptions, setupConfig } from './options';\n\nconst { info, debug, warn, error, track } = prefix(LOG_PREFIX);\n\nexport const checkout = {};\nexport const apps = { checkout, Checkout: checkout };\n\nexport function reset() {\n\n debug('reset');\n\n // Once our callback has been called, we can set the global methods to their original values\n\n checkout.initXO = initXO; // eslint-disable-line no-use-before-define\n checkout.startFlow = startFlow; // eslint-disable-line no-use-before-define\n checkout.closeFlow = closeFlow; // eslint-disable-line no-use-before-define\n}\n\ncheckout.reset = reset;\n\n// $FlowFixMe\nObject.defineProperty(checkout, 'urlPrefix', {\n get() : string {\n return `${ config.checkoutUrl }${ config.checkoutUrl.indexOf('?') === -1 ? '?' : '&' }token=`;\n }\n});\n\nfunction matchUrlAndPaymentToken(item) : { url : string, paymentToken : ?string } {\n\n if (!item || !item.trim()) {\n error(`startflow_no_url_or_token`, { item });\n throw new Error(`startflow_no_url_or_token`);\n }\n\n\n const paymentToken = parseToken(item);\n let url = (paymentToken && paymentToken === item) ? '' : item;\n\n if (url) {\n\n if (!url.match(/^https?:\\/\\/|^\\//)) {\n if (paymentToken) {\n info(`startflow_relative_url_with_token`, { url });\n } else {\n info(`startflow_relative_url_no_token`, { url });\n }\n\n if (url.toLowerCase().indexOf('ec-') === 0 && paymentToken) {\n url = `${ config.checkoutUrl }${ url }`;\n }\n\n } else if (paymentToken) {\n if (url.indexOf('.paypal.com') !== -1) {\n debug(`startflow_paypalurl_with_token`, { url });\n } else {\n debug(`startflow_url_with_token`, { url });\n }\n\n } else {\n debug(`startflow_url_no_token`, { url });\n }\n\n } else {\n\n if (paymentToken) {\n url = extendUrl(config.checkoutUrl, { token: paymentToken });\n debug(`startflow_with_token`, { url });\n } else {\n error(`startflow_no_url_or_token`, { url });\n throw new Error(`Could not determine url or token from \"${ item }\"`);\n }\n }\n\n return { paymentToken, url };\n}\n\nfunction checkUrlAgainstEnv(url : string) {\n\n const paypalUrls = config.paypalUrls;\n\n for (const env of Object.keys(paypalUrls)) {\n const paypalUrl = paypalUrls[env];\n\n if (env === ENV.TEST || env === ENV.DEMO) {\n continue;\n }\n\n if (env !== config.env) {\n if (url.indexOf(paypalUrl) === 0 || url.indexOf(paypalUrl.replace('//www.', '//')) === 0) {\n warn(`mismatched_env_startflow_url`, { env: config.env, url });\n redirect(url);\n throw new Error(`${ url } is not a ${ config.env } url`);\n }\n }\n }\n}\n\n/* Get Token\n ---------\n\n Normally in the component world, getToken would be a user-provided function which passes a callback, and expects\n that callback to be called with either an error, or an EC token.\n\n In our case, we can emulate these callback calls by setting over the startFlow and closeFlow globals, and using\n them as our success and failure cases.\n\n Note: this method is set to `precall: true` mode. This means that it will be called the moment the component is\n inited on the page. This means that the moment we initialize, we're ready to start accepting a token via one of the\n global methods.\n*/\n\nfunction awaitPaymentTokenAndUrl(event? : ?Event, targetElement? : ?HTMLElement) : { url : ZalgoPromise, paymentToken : ZalgoPromise } {\n\n const paymentTokenAndUrl = new ZalgoPromise((resolve) => {\n\n if (event && targetElement && (Math.random() < 0.001 || window.enablev3ajax)) {\n let method;\n let url;\n let body;\n let contentType;\n\n info('gettoken_targetelement_start');\n flushLogs();\n \n if (targetElement.tagName.toLowerCase() === 'a') {\n method = 'get';\n url = targetElement.getAttribute('href');\n } else if (targetElement.tagName.toLowerCase() === 'form') {\n method = (targetElement.getAttribute('method') || 'get').toLowerCase();\n url = targetElement.getAttribute('action');\n body = formSerialize(targetElement);\n contentType = targetElement.getAttribute('enctype') || 'application/x-www-form-urlencoded';\n }\n \n if (method && url) {\n event.preventDefault();\n\n request({\n method,\n url,\n body,\n headers: {\n 'Accept': 'application/paypal-json-token',\n 'Content-type': contentType || ''\n }\n }).then(json => {\n const urlAndPaymentToken = matchUrlAndPaymentToken(json.token);\n resolve(urlAndPaymentToken);\n info('gettoken_targetelement_success', urlAndPaymentToken);\n flushLogs();\n\n }).catch(err => {\n warn('gettoken_targetelement_error', {\n // $FlowFixMe\n err: err.stack || err.toString()\n });\n flushLogs();\n });\n \n } else {\n warn('gettoken_targetelement_no_method_or_url');\n flushLogs();\n }\n }\n\n\n checkout.initXO = () => {\n warn(`gettoken_initxo`);\n };\n\n // startFlow is our 'success' case - we get a token, and we can pass it back to the caller\n\n checkout.startFlow = once((item) => {\n debug(`gettoken_startflow`, { item });\n\n const { url, paymentToken } = matchUrlAndPaymentToken(item);\n\n checkUrlAgainstEnv(url);\n\n return resolve({ url, paymentToken });\n });\n });\n\n const url = paymentTokenAndUrl.then(result => result.url);\n const paymentToken = paymentTokenAndUrl.then(result => result.paymentToken);\n\n return { url, paymentToken };\n}\n\n\n/* Init PayPal Checkout\n --------------------\n\n Initialize the Checkout component with some standard props:\n\n - Pass in env from global state (saved during setup() call)\n - Return to success url on payment authorize\n - Return to cancel url on cancel\n*/\n\nlet paypalCheckoutInited = false;\nlet closeFlowCalled = false;\n\nfunction initPayPalCheckout(props = {}) : Object {\n\n info(`init_checkout`);\n\n if (paypalCheckoutInited && config.env !== ENV.TEST) {\n warn(`multiple_init_paypal_checkout`);\n }\n\n if (closeFlowCalled) {\n debug(`init_after_closeflow`);\n }\n\n paypalCheckoutInited = true;\n\n const paypalCheckout = Checkout.init({\n\n onAuthorize(data, actions) : ZalgoPromise {\n info(`payment_authorized`);\n logRedirect(data.returnUrl);\n return actions.redirect(window);\n },\n\n onCancel(data, actions) : ?ZalgoPromise {\n if (data.cancelUrl) {\n info(`payment_canceled`);\n logRedirect(data.cancelUrl);\n return actions.redirect(window);\n }\n },\n\n fallback(url) : ZalgoPromise {\n error(`fallback_handler`, { url });\n this.destroy();\n return redirect(url);\n },\n\n ...props\n });\n\n checkout.closeFlow = (closeUrl? : string) => {\n warn(`closeflow`);\n\n closeFlowCalled = true;\n\n reset();\n\n paypalCheckout.destroy();\n\n if (closeUrl) {\n warn(`closeflow_with_url`, { closeUrl });\n return redirect(closeUrl);\n }\n };\n\n return paypalCheckout;\n}\n\nfunction renderPayPalCheckout(props : Object = {}, hijackTarget? : ?Element) : ZalgoPromise {\n\n const urlProp = ZalgoPromise.resolve(props.url);\n\n const paymentToken = new ZalgoPromise(resolve => {\n props.init = (data) => {\n resolve(data.paymentToken);\n };\n });\n\n const errorHandler = once(err => {\n\n error(`component_error`, { error: stringifyError(err) });\n\n if (hijackTarget) {\n warn(`render_error_hijack_revert_target`);\n hijackTarget.removeAttribute('target');\n }\n\n // eslint-disable-next-line promise/no-promise-in-callback\n urlProp.then(url => {\n warn(`render_error_redirect_using_url`);\n return redirect(url);\n });\n\n // eslint-disable-next-line promise/no-promise-in-callback\n paymentToken.then(token => {\n warn(`render_error_redirect_using_token`);\n return redirect(extendUrl(config.checkoutUrl, { token }));\n });\n });\n\n props.onError = errorHandler;\n\n let paypalCheckout;\n\n if (hijackTarget) {\n\n delete props.url;\n\n paypalCheckout = initPayPalCheckout(props);\n\n paypalCheckout.hijack(hijackTarget);\n paypalCheckout.runTimeout();\n\n urlProp.then(url => {\n warn(`hijack_then_url_passed`);\n paypalCheckout.loadUrl(url);\n });\n\n } else {\n\n paypalCheckout = initPayPalCheckout(props);\n }\n\n const render = paypalCheckout.render(null, !hijackTarget);\n\n checkout.win = paypalCheckout.window;\n\n return render.catch(errorHandler);\n}\n\n\nfunction handleClick(clickHandler, event) {\n debug(`button_click_handler`);\n\n try {\n clickHandler(event);\n } catch (err) {\n error(`click_handler_error`, { error: stringifyError(err) });\n }\n}\n\nfunction handleClickHijack(event, element) : void {\n\n const targetElement = getHijackTargetElement(element);\n\n if (!targetElement) {\n return error(`target_element_not_found`);\n }\n\n info(`init_paypal_checkout_hijack`);\n\n const { url, paymentToken } = awaitPaymentTokenAndUrl(event, targetElement);\n\n let token;\n \n paymentToken.then(result => {\n token = result;\n });\n\n renderPayPalCheckout({ url, payment: () => ZalgoPromise.resolve(token) }, targetElement);\n}\n\nfunction listenClick(container, button, clickHandler, condition, tracker) : void {\n\n const element : HTMLElement = (container.tagName.toLowerCase() === 'a') ? container : button;\n\n const isClick = (typeof clickHandler === 'function');\n\n if (element.hasAttribute('data-paypal-click-listener')) {\n return warn(`button_already_has_paypal_click_listener`);\n }\n\n element.setAttribute('data-paypal-click-listener', '');\n\n const targetElement = getHijackTargetElement(element);\n\n if (targetElement && isClick) {\n info(`button_link_or_form`);\n }\n\n element.addEventListener('click', (event : Event) => {\n\n tracker();\n\n const eligible = isLegacyEligible();\n\n if (supportsPopups()) {\n debug(`click_popups_supported`);\n\n if (!eligible) {\n debug(`click_popups_supported_but_ineligible`);\n }\n } else {\n debug(`click_popups_not_supported`);\n\n if (eligible) {\n debug(`click_popups_not_supported_but_eligible`);\n }\n }\n\n if (!isClick) {\n\n if (!eligible) {\n return debug(`ineligible_listenclick`);\n }\n }\n\n info(`button_click`);\n\n if (typeof condition === 'function') {\n if (condition.call()) {\n info(`button_click_condition_enabled`);\n } else {\n return info(`button_click_condition_disabled`);\n }\n }\n\n if (isClick) {\n return handleClick(clickHandler, event);\n\n } else {\n return handleClickHijack(event, element);\n }\n });\n}\n\nfunction instrumentButtonRender(type : string) {\n info(`render_${ type }_button`);\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_RENDER,\n [ FPTI.KEY.BUTTON_TYPE ]: type\n });\n\n flushLogs();\n}\n\nfunction instrumentButtonClick(type : string) {\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_CLICK,\n [ FPTI.KEY.BUTTON_TYPE ]: type\n });\n flushLogs();\n}\n\n\n/* Setup\n -----\n\n Emulate window.paypal.checkout.setup.\n\n The purpose of this method is to:\n\n - Set up configuration for the incontext flow\n - Render a button to initiate the checkout window\n*/\n\nlet setupCalled = false;\n\nexport function setup(id : string, options : Object = {}) : ZalgoPromise {\n\n id = id || 'merchant';\n\n info(`setup`, {\n id,\n env: options.environment,\n options: safeJSON(options)\n });\n\n if (setupCalled) {\n debug(`setup_called_multiple_times`);\n }\n\n setupCalled = true;\n\n normalizeOptions(options);\n setupConfig(options);\n\n setupPostBridge(config.env);\n\n return ZalgoPromise.try(() => {\n\n // If there are no buttons passed, can only assume there's a custom paypal button with a custom listener\n\n if (!options.buttons.length) {\n return instrumentButtonRender(FPTI.BUTTON_TYPE.CUSTOM);\n }\n\n // Otherwise render whatever buttons we were asked to, and listen for them to be clicked\n\n return renderButtons(id, options.buttons).then(buttons => {\n\n buttons.forEach(button => {\n instrumentButtonRender(button.type);\n\n listenClick(button.container, button.element, button.click, button.condition, () => {\n instrumentButtonClick(button.type);\n });\n });\n });\n });\n}\n\ncheckout.setup = setup;\n\n/* Init XO\n -------\n\n Emulate paypal.checkout.initXO\n\n Normally this would be used only to open the checkout page. But here we can just kick off the whole flow, since\n getToken will handle loading the token into the window for us.\n*/\n\nfunction initXO() : void {\n\n debug(`initxo`);\n\n if (!isLegacyEligible()) {\n return debug(`ineligible_initxo`);\n }\n\n const { url, paymentToken } = awaitPaymentTokenAndUrl();\n\n info(`init_paypal_checkout_initxo`);\n\n renderPayPalCheckout({ url, payment: () => paymentToken });\n}\n\ncheckout.initXO = initXO;\n\n\n/* Start Flow\n ----------\n\n Emulate paypal.checkout.startFlow\n\n Normally this would be used to load the url into the browser after the window has already been opened. Again, we\n can just kick off the whole flow here, on the off chance that a merchant calls us on button click. Normally this\n method will have been patched over in getToken.\n*/\n\nfunction startFlow(item : string) {\n debug(`startflow`, { item });\n\n const { paymentToken, url } = matchUrlAndPaymentToken(item);\n\n checkUrlAgainstEnv(url);\n\n if (!isLegacyEligible()) {\n debug(`ineligible_startflow_global`, { url });\n redirect(url);\n return;\n }\n\n info(`init_paypal_checkout_startflow`);\n\n renderPayPalCheckout({ url, payment: () => ZalgoPromise.resolve(paymentToken) });\n}\n\ncheckout.startFlow = startFlow;\n\n\n/* Close Flow\n ----------\n\n Emulate paypal.checkout.closeFlow\n\n Close the component in case of any error on the merchant side.\n*/\n\nfunction closeFlow(closeUrl? : string) {\n warn(`closeflow_not_opened`);\n\n if (closeUrl) {\n warn(`closeflow_with_url`, { closeUrl });\n redirect(closeUrl);\n\n }\n}\n\ncheckout.closeFlow = closeFlow;\n","/* @flow */\n\nimport { prefix } from 'beaver-logger/client';\n\nimport { onDocumentReady } from '../lib';\nimport { ENV } from '../constants';\n\nimport { LOG_PREFIX, ATTRIBUTES, CLASSES } from './constants';\nimport { setup } from './interface';\n\nconst { error, debug } = prefix(LOG_PREFIX);\n\n/* PayPal Checkout Ready\n ---------------------\n\n Call window.paypalCheckoutReady on document ready, if it has been defined by the merchant\n*/\n\nfunction invokeReady(method) {\n\n onDocumentReady(() => {\n debug(`paypal_checkout_ready`);\n setTimeout(() => {\n\n if (!window.paypal) {\n error(`paypal_checkout_ready_no_window_paypal`);\n }\n\n method();\n }, 1);\n });\n}\n\nfunction onKey(obj : Object, key : string, callback : Function) {\n\n if (!obj) {\n return;\n }\n\n let value = obj[key];\n\n if (value) {\n value = callback(value) || value;\n }\n\n try {\n\n delete obj[key];\n\n Object.defineProperty(obj, key, {\n\n configurable: true,\n\n set(item) {\n value = item;\n\n if (value) {\n value = callback(value) || value;\n }\n },\n\n get() : mixed {\n return value;\n }\n });\n\n } catch (err) {\n // pass\n }\n}\n\nonKey(window, 'paypalCheckoutReady', method => {\n\n if (typeof method === 'function') {\n\n const oneTimeReady = function () : void {\n if (!method.called) {\n method.called = true;\n return method.apply(this, arguments);\n }\n };\n\n invokeReady(oneTimeReady);\n\n return oneTimeReady;\n }\n});\n\n\n/* Scan for buttons\n ----------------\n\n Scan for any buttons on the page with a data-paypal-button attribute and auto-attach the PaypalCheckout component to them\n*/\n\nonDocumentReady(() => {\n\n const buttons = Array.prototype.slice.call(document.querySelectorAll(`[${ ATTRIBUTES.BUTTON }]`));\n\n if (buttons && buttons.length) {\n debug(`data_paypal_button`, { number: buttons.length });\n\n for (const button of buttons) {\n\n const id = button.getAttribute(ATTRIBUTES.MERCHANT_ID);\n\n let environment;\n\n if (button.hasAttribute(ATTRIBUTES.ENV)) {\n environment = button.getAttribute(ATTRIBUTES.ENV);\n } else if (button.hasAttribute(ATTRIBUTES.SANDBOX)) {\n environment = ENV.SANDBOX;\n }\n\n setup(id, { environment, button });\n }\n }\n\n // Show hidden buttons\n\n Array.prototype.slice.call(document.getElementsByClassName(CLASSES.HIDDEN_BUTTON)).forEach(el => {\n el.className = el.className.replace(CLASSES.HIDDEN_BUTTON, '');\n });\n});\n","/* @flow */\n\nimport './ready'; // eslint-disable-line import/no-unassigned-import\n\nexport * from './button';\nexport * from './constants';\nexport * from './interface';\n"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/checkout.lib.js b/dist/checkout.lib.js index 9b6a5e9017..3bbb118e3d 100644 --- a/dist/checkout.lib.js +++ b/dist/checkout.lib.js @@ -2140,7 +2140,7 @@ function initLogger() { country: config["a" /* config */].locale.country, lang: config["a" /* config */].locale.lang, uid: getSessionID(), - ver: "4.0.307" + ver: "4.0.308" }; }); Object(client["a" /* addHeaderBuilder */])(function () { @@ -2584,7 +2584,7 @@ function beacon(event, payload) { try { payload.event = "ppxo_" + event; - payload.version = "4.0.307"; + payload.version = "4.0.308"; payload.host = window.location.host; payload.uid = getSessionID(); payload.appName = APP_NAME; @@ -2640,7 +2640,7 @@ function beacon_checkpoint(name, payload, options) { var checkpointName = name; if (options.version) { - var version = "4.0.307".replace(/[^0-9]+/g, '_'); + var version = "4.0.308".replace(/[^0-9]+/g, '_'); checkpointName = version + "_" + checkpointName; } @@ -2657,7 +2657,7 @@ var FPTI_URL = 'https://t.paypal.com/ts'; function buildPayload() { return { - v: "checkout.js." + "4.0.307", + v: "checkout.js." + "4.0.308", t: Date.now(), g: new Date().getTimezoneOffset(), flnm: 'ec:hermes:', @@ -2870,7 +2870,7 @@ function isPayPalObjects() { } function getScriptVersion() { if (false) {} else { - return false ? undefined : "4.0.307"; + return false ? undefined : "4.0.308"; } } function getCurrentScriptUrl() { @@ -2886,7 +2886,7 @@ function getCurrentScriptUrl() { return scriptUrl; } - return "https://www.paypalobjects.com/api/checkout." + "4.0.307" + ( false ? undefined : '') + ".js"; + return "https://www.paypalobjects.com/api/checkout." + "4.0.308" + ( false ? undefined : '') + ".js"; } function getDomainSetting(name, def) { var hostname = window.xchild ? window.xchild.getParentDomain() : Object(cross_domain_utils_src["h" /* getDomain */])(); @@ -3254,7 +3254,7 @@ var config = { scriptUrl: false ? undefined : "//www.paypalobjects.com/api/" + "checkout.lib.js", // eslint-disable-next-line security/detect-unsafe-regex, unicorn/no-unsafe-regex paypal_domain_regex: /^(https?|mock):\/\/[a-zA-Z0-9_.-]+\.paypal\.com(:\d+)?$/, - version: "4.0.307", + version: "4.0.308", cors: true, env: getDefaultEnv(), state: 'checkoutjs', @@ -27492,7 +27492,7 @@ var BUTTON_CONFIG = (_BUTTON_CONFIG = {}, _BUTTON_CONFIG[constants["s" /* DEFAUL allowPrimaryHorizontal: true }, _BUTTON_CONFIG[constants["f" /* BUTTON_LABEL */].PAY] = { label: "{ content: pay }", - logoLabel: "{ logo: " + constants["h" /* BUTTON_LOGO */].PP + " } { logo: " + constants["h" /* BUTTON_LOGO */].PAYPAL + " }", + logoLabel: "{ logo: " + constants["h" /* BUTTON_LOGO */].PAYPAL + " }", allowPrimary: true, allowPrimaryVertical: true, allowPrimaryHorizontal: true @@ -34892,7 +34892,7 @@ function componentTemplate(_ref19) { }); var scriptNode = renderScript(); var labelPowerByPayPal = cards.length > 0 ? renderPowerByPaypalLogo(normalizeProps(props)) : null; - return Object(jsx["c" /* jsxToHTML */])("div", Object(esm_extends["a" /* default */])({}, (_ref20 = {}, _ref20[constants["c" /* ATTRIBUTE */].VERSION] = "4.0.307", _ref20), { + return Object(jsx["c" /* jsxToHTML */])("div", Object(esm_extends["a" /* default */])({}, (_ref20 = {}, _ref20[constants["c" /* ATTRIBUTE */].VERSION] = "4.0.308", _ref20), { class: class_CLASS.CONTAINER + " " + getCommonButtonClasses({ layout: layout, shape: shape, @@ -36635,7 +36635,7 @@ var postRobot = post_robot_src; var onPossiblyUnhandledException = zalgo_promise_src["a" /* ZalgoPromise */].onPossiblyUnhandledException; -var interface_version = "4.0.307"; +var interface_version = "4.0.308"; var interface_checkout; var apps; diff --git a/dist/checkout.lib.js.map b/dist/checkout.lib.js.map index b719823455..4105134285 100644 --- a/dist/checkout.lib.js.map +++ b/dist/checkout.lib.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://paypal/webpack/universalModuleDefinition","webpack://paypal/webpack/bootstrap","webpack://paypal/./src/constants/button.js","webpack://paypal/./src/constants/checkout.js","webpack://paypal/./src/constants/funding.js","webpack://paypal/./src/constants/misc.js","webpack://paypal/./src/constants/fpti.js","webpack://paypal/./src/constants/country.js","webpack://paypal/./src/constants/locale.js","webpack://paypal/./src/constants/index.js","webpack://paypal/./src/lib/jsx.js","webpack://paypal/./node_modules/zalgo-promise/src/utils.js","webpack://paypal/./node_modules/zalgo-promise/src/exceptions.js","webpack://paypal/./node_modules/zalgo-promise/src/flush.js","webpack://paypal/./node_modules/zalgo-promise/src/promise.js","webpack://paypal/./node_modules/zalgo-promise/src/index.js","webpack://paypal/./src/lib/device.js","webpack://paypal/./src/lib/dom.js","webpack://paypal/./src/lib/security.js","webpack://paypal/./src/lib/session.js","webpack://paypal/./src/lib/proxy.js","webpack://paypal/./src/lib/logger.js","webpack://paypal/./src/lib/eligibility.js","webpack://paypal/./src/lib/errors.js","webpack://paypal/./src/lib/http.js","webpack://paypal/./src/lib/beacon.js","webpack://paypal/./src/lib/throttle.js","webpack://paypal/./src/lib/namespace.js","webpack://paypal/./src/lib/script.js","webpack://paypal/./src/lib/meta.js","webpack://paypal/./src/lib/funding.js","webpack://paypal/./src/lib/index.js","webpack://paypal/./src/config/config.js","webpack://paypal/./src/config/index.js","webpack://paypal/./node_modules/beaver-logger/client/util.js","webpack://paypal/./node_modules/beaver-logger/client/builders.js","webpack://paypal/./node_modules/beaver-logger/client/config.js","webpack://paypal/./node_modules/beaver-logger/client/logger.js","webpack://paypal/./node_modules/beaver-logger/client/performance.js","webpack://paypal/./node_modules/beaver-logger/client/init.js","webpack://paypal/./node_modules/beaver-logger/client/transitions.js","webpack://paypal/./node_modules/beaver-logger/client/interface.js","webpack://paypal/./node_modules/beaver-logger/client/index.js","webpack://paypal/./node_modules/zoid/src/lib/util.js","webpack://paypal/./node_modules/zoid/src/lib/fn.js","webpack://paypal/./node_modules/zoid/src/lib/dom.js","webpack://paypal/./node_modules/zoid/src/lib/promise.js","webpack://paypal/./node_modules/zoid/src/lib/css.js","webpack://paypal/./node_modules/zoid/src/lib/decorators.js","webpack://paypal/./node_modules/zoid/src/lib/logger.js","webpack://paypal/./node_modules/zoid/src/lib/global.js","webpack://paypal/./node_modules/zoid/src/lib/index.js","webpack://paypal/./node_modules/cross-domain-utils/src/util.js","webpack://paypal/./node_modules/cross-domain-utils/src/constants.js","webpack://paypal/./node_modules/cross-domain-utils/src/utils.js","webpack://paypal/./node_modules/cross-domain-utils/src/types.js","webpack://paypal/./node_modules/cross-domain-utils/src/index.js","webpack://paypal/./node_modules/zoid/src/constants.js","webpack://paypal/./node_modules/post-robot/src/global.js","webpack://paypal/./node_modules/post-robot/src/conf/constants.js","webpack://paypal/./node_modules/post-robot/src/conf/config.js","webpack://paypal/./node_modules/post-robot/src/conf/index.js","webpack://paypal/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://paypal/./src/lib/util.js","webpack://paypal/./node_modules/post-robot/src/drivers/send/strategies.js","webpack://paypal/./node_modules/post-robot/src/drivers/send/index.js","webpack://paypal/./node_modules/post-robot/src/drivers/listeners.js","webpack://paypal/./node_modules/post-robot/src/drivers/receive/types.js","webpack://paypal/./node_modules/post-robot/src/drivers/receive/index.js","webpack://paypal/./node_modules/post-robot/src/drivers/index.js","webpack://paypal/./node_modules/post-robot/src/public/client.js","webpack://paypal/./node_modules/post-robot/src/public/server.js","webpack://paypal/./node_modules/post-robot/src/public/config.js","webpack://paypal/./node_modules/post-robot/src/public/index.js","webpack://paypal/./node_modules/post-robot/src/clean.js","webpack://paypal/./node_modules/post-robot/src/interface.js","webpack://paypal/./node_modules/post-robot/src/index.js","webpack://paypal/./node_modules/post-robot/src/lib/util.js","webpack://paypal/./node_modules/post-robot/src/lib/serialize.js","webpack://paypal/./node_modules/post-robot/src/lib/ready.js","webpack://paypal/./node_modules/post-robot/src/lib/index.js","webpack://paypal/./src/compat/fallback.js","webpack://paypal/./src/checkout/component.js","webpack://paypal/./src/checkout/index.js","webpack://paypal/./node_modules/belter/src/device.js","webpack://paypal/./node_modules/belter/src/util.js","webpack://paypal/./node_modules/belter/src/constants.js","webpack://paypal/./node_modules/belter/src/dom.js","webpack://paypal/./node_modules/belter/src/storage.js","webpack://paypal/./node_modules/belter/src/experiment.js","webpack://paypal/./node_modules/belter/src/global.js","webpack://paypal/./node_modules/belter/src/http.js","webpack://paypal/./node_modules/belter/src/types.js","webpack://paypal/./node_modules/belter/src/decorators.js","webpack://paypal/./node_modules/belter/src/css.js","webpack://paypal/./node_modules/belter/src/test.js","webpack://paypal/./node_modules/belter/src/index.js","webpack://paypal/./node_modules/cross-domain-safe-weakmap/src/native.js","webpack://paypal/./node_modules/cross-domain-safe-weakmap/src/util.js","webpack://paypal/./node_modules/cross-domain-safe-weakmap/src/weakmap.js","webpack://paypal/./node_modules/cross-domain-safe-weakmap/src/index.js","webpack://paypal/./src/resources/fundingLogos/p24.jsx","webpack://paypal/./src/resources/fundingLogos/sofort.jsx","webpack://paypal/./src/resources/fundingLogos/ideal.jsx","webpack://paypal/./src/resources/fundingLogos/giropay.jsx","webpack://paypal/./src/resources/fundingLogos/eps.jsx","webpack://paypal/./src/resources/fundingLogos/mybank.jsx","webpack://paypal/./src/resources/fundingLogos/bancontact.jsx","webpack://paypal/./src/resources/fundingLogos/payu.jsx","webpack://paypal/./src/resources/fundingLogos/verkkopankki.jsx","webpack://paypal/./src/resources/fundingLogos/blik.jsx","webpack://paypal/./src/resources/fundingLogos/trustly.jsx","webpack://paypal/./src/resources/fundingLogos/maxima.jsx","webpack://paypal/./src/resources/fundingLogos/boleto.jsx","webpack://paypal/./src/resources/fundingLogos/oxxo.jsx","webpack://paypal/./src/resources/fundingLogos/paypal.jsx","webpack://paypal/./src/resources/fundingLogos/credit.jsx","webpack://paypal/./src/resources/fundingLogos/index.js","webpack://paypal/./src/resources/cardLogos/index.js","webpack://paypal/./src/resources/index.js","webpack://paypal/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://paypal/./node_modules/@babel/runtime/helpers/esm/applyDecoratedDescriptor.js","webpack://paypal/./node_modules/zoid/src/component/base.js","webpack://paypal/./node_modules/zoid/src/component/window.js","webpack://paypal/./node_modules/zoid/src/component/child/props.js","webpack://paypal/./node_modules/zoid/src/component/child/index.js","webpack://paypal/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://paypal/./node_modules/zoid/src/component/parent/drivers.js","webpack://paypal/./node_modules/zoid/src/component/parent/validate.js","webpack://paypal/./node_modules/zoid/src/component/parent/props.js","webpack://paypal/./node_modules/zoid/src/component/parent/index.js","webpack://paypal/./node_modules/zoid/src/component/delegate/index.js","webpack://paypal/./node_modules/zoid/src/component/component/validate.js","webpack://paypal/./node_modules/zoid/src/component/component/templates/container.jsx","webpack://paypal/./node_modules/zoid/src/component/component/templates/component.jsx","webpack://paypal/./node_modules/zoid/src/component/component/templates/index.js","webpack://paypal/./node_modules/zoid/src/component/component/props.js","webpack://paypal/./node_modules/zoid/src/component/component/index.js","webpack://paypal/./node_modules/zoid/src/component/index.js","webpack://paypal/./node_modules/zoid/src/interface.js","webpack://paypal/./node_modules/zoid/src/index.js","webpack://paypal/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://paypal/./node_modules/post-robot/src/bridge/bridge.js","webpack://paypal/./node_modules/post-robot/src/bridge/common.js","webpack://paypal/./node_modules/post-robot/src/bridge/child.js","webpack://paypal/./node_modules/post-robot/src/bridge/parent.js","webpack://paypal/./node_modules/post-robot/src/bridge/index.js","webpack://paypal/./node_modules/zoid/src/error.js","webpack://paypal/./src/integrations/braintree.js","webpack://paypal/./src/integrations/index.js","webpack://paypal/./node_modules/zoid/src/drivers/index.js","webpack://paypal/./src/checkout/template/componentTemplate.jsx","webpack://paypal/./src/checkout/template/containerStyle/base.js","webpack://paypal/./src/checkout/template/sandboxStyle/base.js","webpack://paypal/./src/checkout/template/containerTemplate.jsx","webpack://paypal/./src/checkout/template/index.js","webpack://paypal/./src/integrations/checkout.js","webpack://paypal/./src/checkout/template/containerContent.js","webpack://paypal/./node_modules/hi-base32/src/base32.js","webpack://paypal/./node_modules/zoid/src/drivers/script.js","webpack://paypal/./node_modules/zoid/src/drivers/react.js","webpack://paypal/./node_modules/zoid/src/drivers/vue.js","webpack://paypal/./node_modules/zoid/src/drivers/angular.js","webpack://paypal/./node_modules/zoid/src/drivers/glimmer.js","webpack://paypal/./node_modules/zoid/src/drivers/angular2.js","webpack://paypal/./node_modules/bowser/bowser.min.js","webpack://paypal/./node_modules/post-robot/src/compat/ie.js","webpack://paypal/./node_modules/post-robot/src/compat/index.js","webpack://paypal/./src/resources/fundingLogos/pp_white.svg","webpack://paypal/./src/resources/fundingLogos/pp_blue.svg","webpack://paypal/./src/resources/fundingLogos/pp_black.svg","webpack://paypal/./src/resources/fundingLogos/venmo_white.svg","webpack://paypal/./src/resources/fundingLogos/itau.svg","webpack://paypal/./src/resources/fundingLogos/venmo_blue.svg","webpack://paypal/./src/resources/fundingLogos/elv.svg","webpack://paypal/./src/resources/fundingLogos/elv_white.svg","webpack://paypal/./src/resources/cardLogos/visa.svg","webpack://paypal/./src/resources/cardLogos/amex.svg","webpack://paypal/./src/resources/cardLogos/mastercard.svg","webpack://paypal/./src/resources/cardLogos/maestro.svg","webpack://paypal/./src/resources/cardLogos/discover.svg","webpack://paypal/./src/resources/cardLogos/hiper.svg","webpack://paypal/./src/resources/cardLogos/elo.svg","webpack://paypal/./src/resources/cardLogos/jcb.svg","webpack://paypal/./src/resources/cardLogos/cup.svg","webpack://paypal/./node_modules/form-serialize/index.js","webpack://paypal/./node_modules/post-robot/src/bridge/interface.js","webpack://paypal/(webpack)/buildin/amd-options.js","webpack://paypal/(webpack)/buildin/amd-define.js","webpack://paypal/./src/billing/template/containerTemplate.jsx","webpack://paypal/./src/billing/index.js","webpack://paypal/./src/threeDomainSecure/index.js","webpack://paypal/./src/external/pptm-factory.js","webpack://paypal/./src/external/pptm.js","webpack://paypal/./src/external/index.js","webpack://paypal/./src/api/rest.js","webpack://paypal/./src/experiments.js","webpack://paypal/./src/integrations/popupBridge.js","webpack://paypal/./src/funding/config.js","webpack://paypal/./src/funding/funding.js","webpack://paypal/./src/button/config.js","webpack://paypal/./src/button/props.js","webpack://paypal/./src/button/validate.js","webpack://paypal/./src/button/template/componentStyle/class.js","webpack://paypal/./src/button/template/componentStyle/page.js","webpack://paypal/./src/button/template/componentStyle/button.js","webpack://paypal/./src/button/template/componentStyle/layout.js","webpack://paypal/./src/button/template/componentStyle/branding.js","webpack://paypal/./src/button/template/componentStyle/labels.js","webpack://paypal/./src/button/template/componentStyle/responsive.js","webpack://paypal/./src/button/template/componentStyle/color.js","webpack://paypal/./src/button/template/componentStyle/base.js","webpack://paypal/./src/button/template/componentStyle/index.js","webpack://paypal/./src/button/template/miscComponent.jsx","webpack://paypal/./src/button/template/componentScript.js","webpack://paypal/./src/button/template/content.js","webpack://paypal/./src/button/template/componentTemplate.jsx","webpack://paypal/./src/button/template/containerTemplate.jsx","webpack://paypal/./src/button/template/index.js","webpack://paypal/./src/button/child.js","webpack://paypal/./src/button/component.jsx","webpack://paypal/./src/hacks.js","webpack://paypal/./src/card/index.js","webpack://paypal/./src/setup.js","webpack://paypal/./src/interface.js","webpack://paypal/./src/index.js","webpack://paypal/./src/legacy/constants.js","webpack://paypal/./src/legacy/postBridge.js","webpack://paypal/./src/legacy/eligibility.js","webpack://paypal/./src/legacy/common.js","webpack://paypal/./src/legacy/button.js","webpack://paypal/./src/legacy/util.js","webpack://paypal/./src/legacy/options.js","webpack://paypal/./src/legacy/interface.js","webpack://paypal/./src/legacy/ready.js","webpack://paypal/./src/legacy/index.js"],"names":["BUTTON_STYLE_OPTIONS","LABEL","SIZE","SHAPE","COLOR","LAYOUT","MAXBUTTONS","FUNDINGICONS","BRANDING","TAGLINE","HEIGHT","INSTALLMENTPERIOD","BUTTON_LABEL","PAYPAL","CHECKOUT","PAY","CREDIT","CARD","BUYNOW","INSTALLMENT","VENMO","ITAU","IDEAL","ELV","BANCONTACT","GIROPAY","SOFORT","EPS","MYBANK","P24","PAYU","VERKKOPANKKI","BLIK","TRUSTLY","MAXIMA","BOLETO","OXXO","BUTTON_COLOR","GOLD","BLUE","SILVER","BLACK","DARKBLUE","WHITE","TRANSPARENT","BUTTON_LOGO_COLOR","ANY","BUTTON_SIZE","TINY","SMALL","MEDIUM","LARGE","HUGE","RESPONSIVE","BUTTON_TAGLINE_COLOR","BUTTON_SHAPE","PILL","RECT","BUTTON_BRANDING","BRANDED","UNBRANDED","BUTTON_LAYOUT","HORIZONTAL","VERTICAL","BUTTON_NUMBER","SINGLE","MULTIPLE","BUTTON_LOGO","PP","CHECKOUT_OVERLAY_COLOR","FUNDING","ZIMPLER","VISA","MASTERCARD","AMEX","DISCOVER","SWITCH","MAESTRO","HIPER","ELO","JCB","CUP","COFINOGA","COFIDIS","CETELEM","CBNATIONALE","FUNDING_ELIGIBILITY_REASON","PRIMARY","NOT_ENABLED","SECONDARY_DISALLOWED","OPT_OUT","OPT_IN","DISALLOWED_COUNTRY","DEFAULT_COUNTRY","DEFAULT","REMEMBERED","NEED_OPT_IN","COMMIT_NOT_SET","INVALID_ENV","CARD_PRIORITY","ENV","LOCAL","STAGE","SANDBOX","PRODUCTION","TEST","DEMO","USERS","ALL","SOURCE","MANUAL","BUTTON_FACTORY","LOG_LEVEL","DEBUG","INFO","WARN","ERROR","PAYMENT_TYPE","EC_TOKEN","BA_TOKEN","PAY_ID","PPTM_ID","ATTRIBUTE","BUTTON","FUNDING_SOURCE","VERSION","PLATFORM","DESKTOP","MOBILE","FPTI","KEY","FEED","STATE","TRANSITION","BUTTON_TYPE","SESSION_UID","BUTTON_SESSION_UID","TOKEN","CONTEXT_ID","CONTEXT_TYPE","REFERER","SELLER_ID","DATA_SOURCE","BUTTON_SOURCE","ERROR_CODE","ERROR_DESC","PAGE_LOAD_TIME","EXPERIMENT_NAME","TREATMENT_NAME","TRANSITION_TIME","FUNDING_LIST","FUNDING_COUNT","CHOSEN_FUNDING","BUTTON_WIDTH","MAX_BUTTONS","FUNDING_REMEMBERED","BUTTON_TAGLINE_ENABLED","RESPONSE_DURATION","PAYMENT_FLOW","BUTTON_VERSION","IFRAME","HTML","CUSTOM","BUTTON_SESSION_ID","CHECKOUTJS","LOAD","PPTM","SCRIPT_LOAD","BUTTON_RENDER","BUTTON_LOAD","BUTTON_CLICK","BUTTON_RENDER_INTRANET_MODE","BUTTON_CLICK_INTRANET_MODE","CREATE_PAYMENT","RECIEVE_PAYMENT","CHECKOUT_INIT","CHECKOUT_AUTHORIZE","CHECKOUT_SHIPPING_CHANGE","CHECKOUT_CANCEL","CHECKOUT_ERROR","EXTERNAL_EXPERIMENT","EXTERNAL_EXPERIMENT_COMPLETE","PPTM_LOAD","PPTM_LOADED","COUNTRY","AD","AE","AG","AI","AL","AM","AN","AO","AR","AT","AU","AW","AZ","BA","BB","BE","BF","BG","BH","BI","BJ","BM","BN","BO","BR","BS","BT","BW","BY","BZ","C2","CA","CD","CG","CH","CI","CK","CL","CM","CN","CO","CR","CV","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GI","GL","GM","GN","GP","GR","GT","GW","GY","HK","HN","HR","HU","ID","IE","IL","IN","IS","IT","JM","JO","JP","KE","KG","KH","KI","KM","KN","KR","KW","KY","KZ","LA","LC","LI","LK","LS","LT","LU","LV","MA","MC","MD","ME","MG","MH","MK","ML","MN","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PL","PM","PN","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","ST","SV","SZ","TC","TD","TG","TH","TJ","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","US","UY","VA","VC","VE","VG","VN","VU","WF","WS","YE","YT","ZA","ZM","ZW","LANG","CS","DA","EL","EN","HE","JA","KO","ZH","LANG_TO_DEFAULT_COUNTRY","ALLOWED_INSTALLMENT_COUNTRIES","ALLOWED_INSTALLMENT_PERIOD","LOCALE","htmlEncode","html","toString","replace","JsxHTMLNode","name","props","children","propsToString","childrenToString","Object","keys","filter","key","map","join","innerHTML","result","iterate","child","undefined","Array","isArray","JsxHTMLNodeContainer","jsxToHTML","jsxRender","template","renderers","nodes","regexMap","match","type","value","text","Error","trim","test","break","isPromise","item","Promise","window","Window","constructor","call","then","err","dispatchedErrors","possiblyUnhandledPromiseHandlers","dispatchPossiblyUnhandledError","promise","indexOf","push","setTimeout","__DEBUG__","j","length","onPossiblyUnhandledException","handler","cancel","splice","activeCount","flushPromise","flushActive","resolve","startActive","endActive","awaitActive","Zalgo","ZalgoPromise","resolved","rejected","errorHandled","error","handlers","dispatching","stack","isAsync","res","reject","dispatch","prototype","asyncReject","chain","firstPromise","secondPromise","i","onSuccess","onError","catch","finally","onFinally","try","timeout","time","clearTimeout","toPromise","TypeError","all","promises","count","results","prom","hash","items","method","context","args","apply","delay","flush","getUserAgent","navigator","mockUserAgent","userAgent","isDevice","isInsidePopup","Boolean","getOpener","getTop","isStandAlone","standalone","matchMedia","matches","isFacebookWebView","ua","isFirefoxIOS","isEdgeIOS","isOperaMini","isAndroid","isIos","isGoogleSearchApp","isQQBrowser","isIosWebview","isAndroidWebview","isWebView","isIE","document","documentMode","isIE11","isIECompHeader","mHttp","querySelector","mContent","isElectron","isIEIntranet","status","isMacOsCna","supportsPopups","isDocumentReady","body","readyState","documentReady","interval","setInterval","clearInterval","documentBody","loadScript","src","attrs","script","createElement","addEventListener","onreadystatechange","scriptOnReadyStateChange","scriptLoadError","attr","setAttribute","head","getElementsByTagName","appendChild","isNodeList","isElement","HTMLElement","getElement","getElementById","getElements","collection","element","NodeList","HTMLCollection","el","onDocumentReady","parseQuery","memoize","queryString","params","split","pair","decodeURIComponent","getQueryParam","location","search","slice","urlWillRedirectPage","url","href","extendUrl","hasHash","serverUrl","originalUrl","originalQueryString","originalQuery","hasOwnProperty","newQueryString","sort","encodeURIComponent","newUrl","redirect","win","info","hasMetaViewPort","meta","screen","width","getBrowserLocales","nav","locales","languages","language","userLanguage","normalizeLocale","locale","lang","country","normalizeLang","getBrowserLocale","loc","config","defaultLocale","isElementVisible","offsetWidth","offsetHeight","getClientRects","enablePerformance","performance","now","timing","connectEnd","navigationStart","Math","abs","Date","getPageRenderTime","domInteractive","getResourceLoadTime","getEntries","entries","entry","duration","floor","allowIframe","parentWindow","getParent","isSameDomain","parentComponentWindow","xchild","getParentComponentWindow","__TEST__","isPayPalDomain","protocol","host","paypal_domain_regex","mockDomain","LOCAL_STORAGE_KEY","SESSION_KEY","GLOBAL_KEY","accessedStorage","getStorageState","localStorageEnabled","isLocalStorageEnabled","storage","rawStorage","localStorage","getItem","JSON","parse","id","uniqueID","setItem","stringify","getStorageID","getSession","session","created","session_uid_lifetime","guid","getSessionState","state","getSessionID","xprops","sessionID","querySessionID","getButtonSessionID","buttonSessionID","getGlobalState","proxyMethod","originalMethod","getDomain","paypalDomain","send","noop","methods","on","domain","data","postMessageProxy","isWindowClosed","source","arguments","getRefererDomain","getParentDomain","setupProxyLogTransport","once","setTransport","getTransport","getToken","root","token","queryToken","initLogger","addPayloadBuilder","referer","path","pathname","env","uid","ver","__PAYPAL_CHECKOUT__","__MINOR_VERSION__","addHeaderBuilder","addMetaBuilder","addTrackingBuilder","payload","paymentToken","contextType","contextID","merchantID","version","prefix","PROTOCOL","FILE","init","uri","loggerUrl","heartbeat","logPerformance","logLevel","__DEFAULT_LOG_LEVEL__","setLogLevel","logLevels","loggerConfig","POSTROBOT_CONFIG","bowserCache","getBowser","require","bowser","getBrowser","SUPPORTED_BROWSERS","browser","isBrowserEligible","compareVersions","eligibilityResults","isEligible","checkRecognizedBrowser","mobile","android","ios","flushLogs","logWarn","console","warn","log","checkForCommonErrors","toJSON","message","foo","bar","baz","zomg","bind","a","opener","parent","returnContext","assign","b","c","HEADERS","CONTENT_TYPE","ACCEPT","headerBuilders","corrids","prev_corr_ids","parseHeaders","rawHeaders","line","values","toLowerCase","request","headers","json","normalizedHeaders","headerBuilder","builtHeaders","xhr","XMLHttpRequest","xhrLoad","responseHeaders","getAllResponseHeaders","corrID","contentType","isJSON","responseText","xhrError","evt","getResponseHeader","open","setRequestHeader","ontimeout","xhrTimeout","get","options","post","BEACON_URL","APP_NAME","beacon","event","appName","query","beaconImage","Image","isCheckpointUnique","loggedBeacons","checkpoint","checkpointName","FPTI_URL","buildPayload","v","t","g","getTimezoneOffset","flnm","shir","pgrp","page","vers","qual","tmpl","fpti","getThrottlePercentile","throttlePercentiles","random","THROTTLE_GROUP","CONTROL","THROTTLE","getThrottle","sample","sticky","percentile","group","treatment","started","forced","isEnabled","isDisabled","getTreatment","expuid","track","logStart","logComplete","getReturnToken","payer","extendNamespace","xports","namespaces","childnamespaces","namespace","childname","childnamespace","getCurrentScript","scripts","scriptUrl","hasAttribute","currentScript","debug","isPayPalObjects","getScriptVersion","__MIN__","getCurrentScriptUrl","getDomainSetting","def","hostname","domain_settings","domainMatches","openMetaFrame","iframeEligible","iframeEligibleReason","rememberedFunding","metaFrameUrl","metaFrameUrls","metaFrameDomain","paypalDomains","bridge","metaListener","openBridge","getRememberedFunding","identity","hasRememberedFunding","recentlyCheckedRemembered","isRememberedFunding","getRememberedFundingPromises","global","rememberFundingPromises","getRememberedFundingPromise","flushRememberedFundingPromises","sources","rememberFunding","loadMeta","isFundingRemembered","precacheRememberedFunding","getDefaultEnv","__FILE_NAME__","cors","stage","stageDomain","stageUrl","apiStageUrl","apiStage","localhostUrl","ports","default","val","authCode","throttles","v4_mobile_device","ie_full_page","allow_full_page_fallback","memoize_payment","force_bridge","log_authorize","disable_venmo","creditTestDomains","customCountry","msie","firefox","chrome","safari","opera","msedge","samsungBrowser","silk","ucbrowser","vivaldi","_apiStage","button","checkout","guest","altpay","paypalUrls","port","wwwApiUrls","corsApiUrls","apiUrls","local","sandbox","production","checkoutUri","checkoutUris","altpayUris","guestUris","billingUris","buttonUris","inlinedCardFieldUris","postBridgeUris","legacyCheckoutUris","buttonJSUrls","buttonJSUrl","loginUri","hermesLoggerUri","loggerUri","loggerThrottlePercentage","pptmUri","postBridgeUri","paymentStandardUri","authApiUri","paymentApiUri","orderApiUri","billingApiUri","experienceApiUri","trackingApiUri","checkoutUrls","demo","guestUrls","altpayUrls","billingUrls","buttonUrls","inlinedCardFieldUrls","loginUrls","paymentsStandardUrls","legacyCheckoutUrls","authApiUrls","paymentApiUrls","orderApiUrls","billingApiUrls","experienceApiUrls","trackingApiUrls","_paypalUrl","paypalUrl","corsApiUrl","wwwApiUrl","apiUrl","checkoutUrl","billingUrl","buttonUrl","legacyCheckoutUrl","postBridgeUrl","postBridgeDomain","isTestExperiment","pptmUrl","authApiUrl","paymentApiUrl","orderApiUrl","billingApiUrl","experienceApiUrl","extend","dest","over","isSameProtocol","ajax","fireAndForget","XRequest","ActiveXObject","XDomainRequest","req","toUpperCase","headerName","promiseDebounce","debounce","resolver","rejector","onWindowReady","safeInterval","loop","chars","charAt","payloadBuilders","metaBuilders","trackingBuilders","builder","initial_state_name","flushInterval","debounceInterval","sizeLimit","silent","heartbeatConsoleLog","heartbeatInterval","heartbeatTooBusy","heartbeatTooBusyThreshold","autoLog","logUnload","buffer","tracking","transport","newTransport","loaded","print","level","warning","immediateFlush","hasBuffer","hasTracking","events","enqueue","timestamp","timer","startTime","elapsed","parseInt","reset","reqStartElapsed","clientTimer","reqTimer","initHeartBeat","heartBeatTimer","heartbeatCount","heartbeatMaxThreshold","lag","heartbeatPayload","noConsole","initPerformance","client_elapsed","req_elapsed","forEach","offset","memory","navigation","resource","initiatorType","initiated","conf","beaverLogQueue","windowID","pageID","currentState","startTransition","endTransition","toState","currentTime","elapsedTime","transitionName","transition","transition_time","INTERFACE","urlEncode","str","camelToDasherize","string","dasherizeToCamel","obj","stringifyWithFunctions","safeGet","prop","capitalizeFirstLetter","pathParts","runInterval","safeTimeout","each","callback","len","replaceObject","replacers","fullKey","defineProperty","configurable","enumerable","itemKey","replacer","replaced","set","copyProp","target","descriptor","getOwnPropertyDescriptor","dotify","newobj","every","objectIDs","WeakMap","getObjectID","regex","pattern","start","RegExp","index","groups","end","regexAll","substr","startIndex","itemCount","stringifyError","eventEmitter","triggered","eventName","handlerList","cancelled","listener","trigger","triggerOnce","called","onceWrapper","memoizeWrapper","cacheKey","debounceWrapper","serializeFunctions","__type__","deserializeFunctions","deserializedFunctionWrapper","self","container","Element","nodeType","style","ownerDocument","querySelectorAll","selector","getElementSafe","elementReady","popup","PopupOpenError","writeToWindow","write","close","err2","writeElementToWindow","tag","tagName","documentElement","removeChild","setStyle","styleText","doc","styleSheet","cssText","createTextNode","class","className","attributes","contentWindow","awaitFrameLoadPromises","awaitFrameLoad","frame","has","linkFrameWindow","awaitFrameWindow","loadedFrame","iframe","frameBorder","allowTransparency","backgroundColor","removeEventListener","scanForJavascript","formatQuery","extendQuery","originalHash","hashString","elementStoppedMoving","getBoundingClientRect","top","bottom","left","right","height","getCurrentDimensions","changeStyle","styles","setOverflow","overflow","overflowX","overflowY","dimensionsDiff","one","two","threshold","trackDimensions","currentDimensions","check","newDimensions","changed","dimensions","onDimensionsChange","tracker","onWindowResize","dimensionsMatchViewport","innerWidth","innerHeight","bindEvents","eventNames","VENDOR_PREFIXES","setVendorCSS","capitalizedName","CSSRule","KEYFRAMES_RULE","WEBKIT_KEYFRAMES_RULE","MOZ_KEYFRAMES_RULE","O_KEYFRAMES_RULE","MS_KEYFRAMES_RULE","isValidAnimation","stylesheets","styleSheets","cssRules","cssRule","ANIMATION_START_EVENTS","ANIMATION_END_EVENTS","animate","clean","hasStarted","startTimeout","endTimeout","startEvent","endEvent","cleanUp","animationName","stopPropagation","STYLE","DISPLAY","NONE","BLOCK","VISIBILITY","VISIBLE","HIDDEN","IMPORTANT","makeElementVisible","setProperty","makeElementInvisible","showElement","hideElement","destroyElement","parentNode","showAndAnimate","animation","animateAndHide","addClass","classList","add","removeClass","remove","getCurrentScriptDir","getElementName","isElementClosed","watchElementForClose","getHttpType","onload","onerror","getHTML","getCSS","getScript","prefetchPage","JSX_EVENTS","onClick","fixScripts","newScript","textContent","replaceChild","jsxDom","content","textNode","denodeify","denodeifyWrapper","promisify","promisifyWRapper","cycle","isPerc","isPx","toNum","toPx","toCSS","percOf","num","perc","normalizeDimension","dim","max","memoized","memoizedFunction","__memoized__","displayName","promisifiedFunction","CONFIG","logInfo","logError","globalFor","__ZOID__","localGlobal","isRegex","MOCK","ABOUT","WILDCARD","WINDOW_TYPE","POPUP","IE_WIN_ACCESS_ERROR","isFileProtocol","isAboutProtocol","canReadFromWindow","getActualDomain","isBlankDomain","isActuallySameDomain","desc","assertSameDomain","getParents","isAncestorParent","childParent","getFrames","frames","getAllChildFrames","childFrame","getNextOpener","getUltimateTop","getAllFramesInWindow","getAllWindows","isTop","isFrameWindowClosed","contains","safeIndexOf","iframeWindows","iframeFrames","allowMock","closed","mockclosed","iframeIndex","cleanIframes","getFrameByName","winFrames","findChildFrameByName","namedFrame","findFrameByName","isParent","frameParent","isOpener","getAncestor","getAncestors","ancestor","isAncestor","actualParent","isPopup","isIframe","isFullpage","anyMatch","collection1","collection2","item1","item2","getDistanceFromTop","distance","getNthParent","n","getNthParentFromTop","isSameTopWindow","win1","win2","top1","top2","allFrames1","allFrames2","opener1","opener2","matchDomain","origin","some","subpattern","stringifyDomainPattern","getDomainFromUrl","onCloseWindow","maxtime","Infinity","isWindow","__cross_domain_utils_window_check__","isBrowser","isCurrentDomain","isMockDomain","normalizeMockUrl","closeWindow","getFrameForWindow","frameElement","TYPES","ZOID","POST_MESSAGE","INIT","PROPS","PROP_CALLBACK","CLOSE","CHECK_CLOSE","REDIRECT","RESIZE","DELEGATE","ALLOW_DELEGATE","HIDE","SHOW","PROP_TYPES","STRING","OBJECT","FUNCTION","BOOLEAN","NUMBER","INITIAL_PROPS","RAW","UID","WINDOW_REFERENCES","OPENER","TOP","PARENT","GLOBAL","PROP_TYPES_LIST","CONTEXT_TYPES","CLASS_NAMES","OUTLET","COMPONENT_FRAME","PRERENDER_FRAME","INVISIBLE","EVENTS","ATTRIBUTES","IFRAME_PLACEHOLDER","ANIMATION_NAMES","SHOW_CONTAINER","SHOW_COMPONENT","HIDE_CONTAINER","HIDE_COMPONENT","EVENT_NAMES","CLICK","CLOSE_REASONS","PARENT_CALL","CHILD_CALL","CLOSE_DETECTED","USER_CLOSED","PARENT_CLOSE_DETECTED","CONTEXT_TYPES_LIST","CALL_ORIGINAL","CALL_DELEGATE","DEFAULT_DIMENSIONS","WIDTH","CONSTANTS","WINDOW_PROPS","POSTROBOT","registerSelf","POST_MESSAGE_TYPE","REQUEST","RESPONSE","ACK","POST_MESSAGE_ACK","SUCCESS","POST_MESSAGE_NAMES","METHOD","HELLO","OPEN_TUNNEL","WINDOW_TYPES","FULLPAGE","SERIALIZATION_TYPES","PROMISE","ZALGO_PROMISE","REGEX","SEND_STRATEGIES","BRIDGE","MOCK_PROTOCOL","FILE_PROTOCOL","BRIDGE_NAME_PREFIX","POSTROBOT_PROXY","POST_MESSAGE_NAMES_LIST","ALLOW_POSTMESSAGE_POPUP","__ALLOW_POSTMESSAGE_POPUP__","__POST_ROBOT__","BRIDGE_TIMEOUT","CHILD_WINDOW_TIMEOUT","ACK_TIMEOUT","RES_TIMEOUT","ALLOWED_POST_MESSAGE_METHODS","ALLOW_SAME_ORIGIN","_extends","moduleGlobal","getGlobal","cache","glob","__CACHE_START_TIME__","hashStr","charCodeAt","pow","sqrt","strHashStr","total","String","fromCharCode","regmatch","safeJSON","listeners","listen","onceListener","awaitKey","newErr","stringifyErrorMessage","defaultMessage","patchMethod","original","patchedMethod","callOriginal","isObject","deepExtend","hasValue","arr","sortBy","order","reverseMap","arrayRemove","pixels","percentage","round","min","regexMapMatcher","SEND_MESSAGE_STRATEGIES","serializedMessage","emulateIERestrictions","domains","dom","postMessage","sendBridgeMessage","needsBridgeForBrowser","isBridge","needsGlobalMessagingForBrowser","foreignGlobal","receiveMessage","buildMessage","getWindowType","sourceDomain","windowType","sendMessage","serializeMethods","messages","jsonStringify","strategyName","success","resetListeners","responseListeners","requestListeners","WINDOW_WILDCARD","WindowWildcard","erroredResponseListeners","__DOMAIN_REGEX__","addResponseListener","getResponseListener","deleteResponseListener","markResponseListenerErrored","isResponseListenerErrored","getRequestListener","nameListeners","winQualifier","winListeners","addRequestListener","listenersCollection","cancelListener","existingListener","strDomain","regexListeners","regexListener","delete","RECEIVE_MESSAGE_TYPES","ack","respond","originalSource","code","handleError","response","receivedMessages","parseMessage","parsedMessage","jsonParse","deserializeMethods","messageListener","messageEvent","sourceElement","originalEvent","listenForMessages","requestPromises","targetWindow","HTMLIFrameElement","hasResult","requestPromise","onChildWindowReady","sayHello","actualDomain","responseListener","ackTimeout","resTimeout","cycleTime","hasAck","sendToParent","client","listenerOptions","errorHandler","requestListener","onceFunction","listenOnce","errorOnClose","disable","cleanUpWindow","popupWindowsByWin","remoteWindows","readyPromises","initialized","openTunnelToOpener","initOnReady","listenForMethods","attachEvent","detachEvent","eachArray","eachObject","depth","childItem","weakMapMemoize","weakmap","weakmapMemoized","arg","indent","objectToJSON","arrayToJSON","meth","isSerialized","serializeMethod","destination","__id__","__name__","serializeError","__message__","__code__","serializePromise","__then__","serializeZalgoPromise","serializeRegex","__source__","deserializeMethod","wrapper","__xdomain__","deserializeError","deserializeZalgoPromise","deserializePromise","deserializeRegex","onHello","onAuthorize","onLegacyPaymentAuthorize","postBridge","watchForLegacyFallback","isLegacy","ppxoWatching","XMLHttpRequestsend","overrideXMLHttpRequestSend","_patched","DONE","returnUrl","billingToken","payerID","paymentID","Checkout","XhrResponse","RESPONSE_TYPES","mob","Xhr","_xhrOnReady","onLegacyFallback","addHeader","$Api","create","scrolling","buildUrl","payment","determineUrl","fundingSource","unsafeRenderTo","bridgeUrl","bridgeDomain","contexts","validate","prerenderTemplate","componentTemplate","containerTemplate","required","queryParam","allowDelegate","sendToChild","determineParameterFromToken","queryValue","childDecorate","alias","overlayColor","commit","experience","fundingOffered","elements","fundingSources","getAttribute","decorate","decorateOnAuthorize","actions","intent","closeComponent","redir","isButton","isGuest","access_token","onShippingChange","onAuth","sameDomain","wrapOnAuth","accessToken","onCancel","decorateOnCancel","cancelUrl","decorateInit","onClose","decorateOnClose","reason","shouldCancel","fallback","defaultFallback","__test__","action","sdkMeta","base64encode","isChild","onProps","injector","instance","payment_action","_context","process","versions","electron","isChrome","isSafari","getFunctionName","fn","setFunctionName","btoa","m","p1","Buffer","from","base64decode","atob","randomID","timeID","toISOString","__GLOBAL__","serializeArgs","subkey","cacheMap","getOrSet","thisNamespace","cacheTime","promiseIdentity","memoizePromise","memoizedPromiseFunction","inlineMemoize","logic","__inline_memoize_cache__","regexp","svgToBase64","svg","objFilter","regexTokenize","promiseDebounced","localPromise","isInteger","isFloat","serializePrimitive","deserializePrimitive","parseFloat","undotify","keyResult","parts","part","isLast","isIndex","defineLazyProp","getter","arrayFrom","isObjectObject","isPlainObject","isDefined","weakMapMemoizePromise","weakmapMemoizedPromise","cleanup","tasks","cleaned","register","task","pop","tryCatch","removeFromArray","assertExists","thing","unique","KEY_CODES","ENTER","waitForWindowReady","waitForDocumentReady","waitForDocumentBody","keyCode","removeItem","outerWidth","screenX","outerHeight","screenY","toolbar","menubar","resizable","scrollbars","border","onResize","currentWidth","currentHeight","newWidth","newHeight","observer","ResizeObserver","observe","MutationObserver","childList","subtree","characterData","disconnect","DEFAULT_SESSION_STORAGE","getStorage","lifetime","STORAGE_KEY","getState","getID","__session__","getBelterExperimentStorage","isEventUnique","experiment","logTreatment","logCheckpoint","throttle","getGlobalNameSpace","globalKey","defValue","responseBody","wrapPromise","expected","expect","expectWrapper","avoid","avoidWrapper","expectError","expectErrorWrapper","drain","hasNativeWeakMap","freeze","testWeakMap","testKey","testValue","CrossDomainSafeWeakMap","_cleanupClosedWindows","isSafeToReadWrite","writable","P24_LOGO_COLORS","primary","secondary","p24Logo","logoColor","SOFORT_LOGO_COLORS","sofortLogo","IDEAL_LOGO_COLORS","tertiary","idealLogo","GIROPAY_LOGO_COLORS","giropayLogo","EPS_LOGO_COLORS","epsLogo","MYBANK_LOGO_COLORS","mybankLogo","BANCONTACT_LOGO_COLORS","bancontactLogo","PAYU_LOGO_COLORS","quaternary","payuLogo","VERKKOPANKKI_LOGO_COLORS","quinary","senary","verkkopankkiLogo","BLIK_LOGO_COLORS","blikLogo","TRUSTLY_LOGO_COLORS","trustlyLogo","MAXIMA_LOGO_COLORS","maximaLogo","BOLETO_LOGO_COLORS","boletoLogo","OXXO_LOGO_COLORS","oxxoLogo","PAYPAL_LOGO_COLORS","paypalLogo","CREDIT_LOGO_COLORS","creditLogo","fundingLogos","pp_white","pp_blue","pp_black","venmo_white","venmo_blue","itau","elv","elv_white","cardLogos","visa","amex","mastercard","maestro","discover","hiper","elo","jcb","cup","_assertThisInitialized","ReferenceError","_applyDecoratedDescriptor","property","decorators","initializer","reverse","reduce","decorator","complete","run","hasTasks","BaseComponent","component","addProp","createError","listenerName","errorListener","normalize","encode","base32","decode","buildChildWindowName","encodedName","encodedVersion","encodedOptions","isZoidComponentWindow","zoidcomp","getComponentMeta","componentMeta","getWindowByRef","ref","windows","componentParent","getParentRenderWindow","renderParent","getPosition","x","y","normalizeChildProp","getProp","looseProps","normalizeChildProps","getPropNames","ChildComponent","onPropHandlers","onInit","watchingForResize","autoResize","hasValidParentDomain","RenderError","setProps","getInitialProps","setWindows","exports","watchForResize","allowedParentDomains","func","normalizedProps","__activeZoidComponent__","watchForClose","checkClose","enableAutoResize","getAutoResize","resize","updateProps","destroy","hide","show","userClose","focus","stringifiedError","_defineProperties","_createClass","Constructor","protoProps","staticProps","RENDER_DRIVERS","focusable","renderedIntoContainerTemplate","allowResize","openOnClick","needsBridge","childWindowName","title","frameWindow","detectClose","iframeWatcher","elementWatcher","openPrerender","prerenderIframe","prerenderFrameWindow","prerenderWindow","switchPrerender","delegateOverrides","openContainer","destroyComponent","destroyContainer","cancelContainerEvents","createPrerenderTemplate","showContainer","showComponent","hideContainer","hideComponent","loadUrl","hijackSubmit","renderTemplate","openContainerFrame","getOutlet","override","overrideOpen","validateProp","hasProp","isNaN","validateProps","normalizeProp","resultValue","decorated","normalizeProps","normalizedProp","getQueryValue","propsToQuery","propsDef","serialization","dotkey","escape","ParentComponent","handledErrors","outlet","childExports","validateParentDomain","renderTo","registerActiveComponent","watchForUnload","render","tryInit","onRender","driver","linkDomain","linkUrl","loadHTML","runTimeout","onEnter","checkAllowRenderTo","delegate","prefetch","activeComponents","getComponentParentRef","getRenderParentRef","renderToWindow","childDomain","sProps","getPropsForChild","secureProps","propUrl","builtinProps","getValidDomain","getUrl","finalUrl","xcomponent","builtUrl","needsBridgeParams","getBridgeUrl","hasBridge","getBridgeDomain","windowName","onDisplay","propName","overrides","overridenFunction","closeWindowListener","onunload","unloadWindowListener","hijack","targetElement","onTimeout","closeContainer","renderer","CLASS","ANIMATION","CONTEXT","EVENT","errErr","destroyAll","DelegateComponent","getOverrides","delegateOverride","validatePropDefinitions","anyEnabled","defaultContext","defaultEnv","defaultContainerTemplate","defaultPrerenderTemplate","getInternalProps","defaultLogLevel","drivers","angular","angular2","glimmer","react","vue","Component","listenForResize","driverCache","components","registerDrivers","registerChild","listenDelegate","driverName","dep","canRenderTo","getForEnv","envUrl","isZoidComponent","getRenderContext","validateRenderContext","getDefaultContext","renderIframe","renderPopup","renderIframeTo","renderPopupTo","prerender","innerProps","innerElement","logWarning","getByTag","postRobot","_postRobot","_CONSTANTS","_inheritsLoose","subClass","superClass","__proto__","tunnelWindows","tunnelWindowId","deleteTunnelWindow","cleanTunnelWindows","tunnelWindow","addTunnelWindow","canary","getTunnelWindow","openTunnelToParent","needsBridgeForWin","needsBridgeForDomain","getBridgeName","sanitizedDomain","documentBodyReady","registerRemoteWindow","sendMessagePromise","findRemoteWindow","registerRemoteSendMessage","remoteWindow","sendMessageWrapper","remoteWin","remoteDomain","rejectRemoteSendMessage","messagingChild","messagingParent","awaitRemoteBridgeForWindow","bridges","bridgeFrames","popupWindowsByName","listenForRegister","winDetails","openBridgeFrame","windowOpen","windowOpenWrapper","last","winName","winOptions","destroyBridges","IntegrationError","awaitBraintreeClient","braintree","auth","authorization","paypalCheckout","SUPPORTED_REST_FIELDS","transactions","amount","currency","external_selected_funding_instrument_type","shipping_address","line1","line2","city","postal_code","country_code","phone","recipient_name","application_context","brand_name","shipping_preference","landing_page","supported","supportedKeys","mapPaymentToBraintree","btPayment","flow","offerCredit","shippingAddressOverride","postalCode","countryCode","recipientName","landingPageType","enableShippingAddress","shippingAddressEditable","checkoutComponentStyle","getContainerStyle","getSandboxStyle","LOGO_COLOR","containerContent","preventDefault","alert","ppLogo","pp","paypal","windowMessage","continue","getPaymentType","paymentType","NODE_JS","HI_BASE32_NO_NODE_JS","node","COMMON_JS","HI_BASE32_NO_COMMON_JS","module","AMD","define","BASE32_ENCODE_CHAR","BASE32_DECODE_CHAR","blocks","throwInvalidUtf8","position","partial","toUtf8String","bytes","followingChars","decodeAsBytes","base32Str","v1","v2","v3","v4","v5","v6","v7","v8","remain","encodeAscii","encodeUtf8","encodeBytes","input","asciiOnly","notString","ArrayBuffer","Uint8Array","asBytes","innerText","eval","scan","scriptTags","React","ReactDOM","createClass","componentDidMount","findDOMNode","setState","componentDidUpdate","componentWillUnmount","inheritAttrs","mounted","$el","$attrs","beforeUpdate","ng","directive","scope","restrict","controller","$scope","$element","safeApply","$root","$$phase","$apply","getProps","scopeProps","angularWrapped","$watch","GlimmerComponent","didInsertElement","zoid","AngularComponent","NgModule","ElementRef","NgZone","internalProps","angular2Wrapped","zone","ComponentInstance","inputs","Class","angularConstructor","elementRef","ngOnInit","nativeElement","ngOnChanges","ModuleInstance","declarations","e","r","C","o","u","f","l","h","p","d","w","E","S","T","N","whale","mzbrowser","coast","yandexbrowser","maxthon","epiphany","puffin","sleipnir","kMeleon","osname","windowsphone","chromeos","chromeBook","sailfish","seamonkey","firefoxos","phantom","slimer","blackberry","webos","touchpad","bada","tizen","qupzilla","chromium","googlebot","blink","webkit","gecko","mac","xbox","linux","k","osversion","L","tablet","s","isUnsupportedBrowser","_detect","detect","sourceWindow","k_r_submitter","k_r_success_contrls","brackets","serialize","form","serializer","hash_serializer","str_serialize","radio_store","disabled","nodeName","checked","empty","selectOptions","isSelectedOptions","option","allowedEmpty","selected","parse_keys","exec","hash_assign","shift","between","_values","existing","containerStyle","BillingPage","cardType","prefilledZipCode","onEvent","ThreeDomainSecure","challengeUrl","threeDomainSecureToken","shouldCreateInitialPptmScript","existingScript","alreadyDownloaded","removePptm","pptmFactory","noContentFoundInContainer","reloadPptmScript","clientId","tryCreatePptmScript","shouldReloadPptmScript","createPptmScript","listenForLoadWithNoContent","listenForButtonRender","paypalDDL","buttonRenderEvent","mrid","client_id","fullUrl","async","pptm","proxyRest","createAccessToken","clientID","basicAuth","Authorization","grant_type","createExperienceProfile","experienceDetails","temporary","logPaymentResponse","links","rel","getDefaultReturnUrl","createTracking","trackingData","trackingID","createPayment","paymentDetails","redirect_urls","return_url","cancel_url","payment_method","experienceID","experience_profile_id","partner_attribution_id","createOrder","purchase_units","unit","reference_id","createBillingAgreement","billingDetails","plan","merchant_preferences","token_id","rest","billingAgreement","PROXY_REST","parentWin","onAuthorizeListener","loggedEvents","loggedExperimentEvents","duplicate","edge","logExperimentTreatment","externalExperiment","externalExperimentTreatment","externalExperimentToken","logReturn","returnToken","OPTYPE","PAYMENT","CANCEL","CONTINGENCY","PAYMENT_CANCELLED","wrapPopupBridge","popupBridge","onComplete","redirect_uri","getReturnUrlPrefix","validateCheckoutProps","normalizeCheckoutProps","useraction","native_xo","extractDataFromQuery","ba_token","paymentId","PayerID","opType","return_uri","cancel_uri","buildActions","redirectUrl","renderThroughPopupBridge","queryItems","awaitPopupBridge","Button","setupPopupBridgeProxy","doRender","popupBridgeRender","popupBridgeRenderTo","popupBridgeRenderPopupTo","FUNDING_PRIORITY","FUNDING_ORDER","FUNDING_CONFIG","enabled","allowOptIn","allowOptOut","allowRemember","allowHorizontal","allowVertical","requireCommitAsTrue","__paypal_checkout__","serverConfig","paypalMerchantConfiguration","creditCard","isPayPalBranded","allowedCountries","defaultVerticalCountries","platforms","allowedEnvs","CARD_CONFIG","priority","getConfig","category","categoryConfig","getFundingConfig","getCardConfig","fundingEligibilityReasons","isFundingIneligible","funding","layout","isVertical","allowSecondary","disallowed","isFundingAutoEligible","allowed","remembered","isFundingEligible","eligible","ineligibleReason","autoEligibleReason","determineEligibleFunding","reasons","eligibleFunding","factors","unshift","determineEligibleCards","card","validateFunding","logFundingEligibility","table","BUTTON_CONFIG","colors","sizes","shapes","layouts","logoColors","tagLineColors","secondaryColors","dualTag","defaultLabel","defaultVerticalLabel","defaultColor","defaultSize","defaultVerticalSize","defaultShape","defaultLayout","defaultBranding","defaultVerticalBranding","defaultFundingIcons","defaultTagline","defaultDual","minimumSize","minimumVerticalSize","maximumSize","maximumVerticalSize","minHorizontalButtons","minVerticalButtons","maxHorizontalButtons","maxVerticalButtons","allowUnbranded","allowFundingIcons","allowPrimary","allowPrimaryVertical","allowPrimaryHorizontal","label","logoLabel","installmentperiod","allowSecondaryVertical","allowSecondaryHorizontal","FUNDING_TO_DEFAULT_LABEL","LABEL_TO_FUNDING","BUTTON_RELATIVE_STYLE","VERTICAL_MARGIN","BUTTON_STYLE","defaultWidth","defaultHeight","minWidth","maxWidth","minHeight","maxHeight","buttonTextMargin","allowFunding","allowTagline","byPayPalHeight","labelToFunding","fundingToDefaultLabel","getButtonConfig","parseLocale","determineMaxButtons","configMax","enableTagline","tagline","branding","fundingicons","defs","checkoutCustomization","size","color","shape","multiple","cards","validateButtonLocale","validateRegionSpecificButton","isInstallmentAllowedCountry","validateButtonStyle","maxbuttons","minButtons","buttonSize","validateButtonProps","SHOULD_FOCUS","CONTAINER","TAGLINE_COLOR","TEXT","LOGO","SEPARATOR","DOM_READY","PERSONALIZATION_TEXT","pageStyle","buttonStyle","layoutStyle","brandingStyle","labelStyle","DUAL_BUTTON_MIN_RATIO","buttonResponsiveStyle","cardNumber","buttonHeight","buttonTextMarginTop","minDualWidth","ceil","toFixed","buttonColorStyle","componentStyle","LoadingDots","Beacon","impression","Tagline","tagColor","getComponentScript","OPTIONAL","SELECTOR","TAG","toArray","parentElement","sum","getAllChildren","getOptionalIndex","getElementsTotalWidth","getOptionalParents","optional","getOptionalChildren","first","second","optionalParent","allChildren","optionalChildren","toggleOptionals","parentWidth","usedWidth","optionalChild","setupTabOutlineEvent","buttonsContainer","getElementsByClassName","tabKeyCode","handleMouseDownOnce","handleFirstTab","setDomReady","load","componentContent","allowedPersonalizationLabels","getCommonButtonClasses","getButtonClasses","getLocaleContent","determineLabel","labelMatchesFunding","determineButtons","buttonLabel","buttonColor","renderCards","logo","renderFundingIcons","renderPersonalizationButtonText","getButtonTextAnimationStyle","personalizedButtonText","allowedAnimation","MIN_WIDTH","LABEL_DURATION","PERSONALIZATION_DURATION","DELAY","COMPRESSED","EXPANDED","PAYPAL_BUTTON","PAYPAL_LOGO","BUTTON_TEXT","renderContent","dynamicContent","contentString","contentVariable","separator","renderButtonTextDiv","contentText","renderButton","morsText","buttonText","__WEB__","hasTabIndex","renderTagline","renderScript","renderStyle","renderPowerByPaypalLogo","isCardDisallowed","buttonNodes","taglineNode","fundingiconNode","styleNode","scriptNode","labelPowerByPayPal","possibleSizes","possibleSize","sizeA","sizeB","setupButtonChild","ButtonComponent","pageRenderTime","onApprove","pre","inlineGuest","treatments","isCreditDualEligible","creditThrottle","allowpaymentrequest","enableNativeCheckout","prefetchLogin","updateClientConfiguration","memoizedToken","button_version","remember","decorateOnRender","restart","tokenize","tokenizePayment","execute","nonce","decorateOnShippingChange","patch","patchObject","decorateOnClick","initialHeight","logInlineGuestOutOfViewPortOnlyOnce","onResizeHandler","getScrollOffsetY","pageYOffset","scrollTop","checkIfExpansionInViewport","scrollOffsetY","windowHeight","containerOffsetY","VISIBLE_THRESHOLD","isContainerExpanded","isExpansionInViewport","decorateValidate","validateCalled","getPageUrl","canRenderTop","methodName","unDebounce","createOriginal","createContext","originalPayment","resolveData","rejectActions","ctx","Card","initialFormValues","cardIcons","display","submitButton","currencyConversion","domainToEnv","setDomainEnv","currentDomainEnv","errtype","err3","currentProtocol","configure","precacheRemembered","setup","scriptProtocol","loadTime","apps","legacy","PayPalCheckout","enableCheckoutIframe","logger","_enableCheckoutIframe","_Checkout","_BillingPage","_ThreeDomainSecure","_destroyAll","LOG_PREFIX","MERCHANT_ID","CLASSES","HIDDEN_BUTTON","setupPostBridge","isLegacyEligible","DEFAULT_LANG","loadButtonJS","lc","childNodes","renderButtons","buttons","condition","click","getHijackTargetElement","parentTagName","grandparentElement","grandparentTagName","redirected","logRedirect","isToken","parseToken","hasToken","normalizeOptions","environment","badenv","concat","setupConfig","initXO","startFlow","closeFlow","matchUrlAndPaymentToken","checkUrlAgainstEnv","awaitPaymentTokenAndUrl","paymentTokenAndUrl","enablev3ajax","formSerialize","urlAndPaymentToken","paypalCheckoutInited","closeFlowCalled","initPayPalCheckout","closeUrl","renderPayPalCheckout","hijackTarget","urlProp","removeAttribute","handleClick","clickHandler","handleClickHijack","listenClick","isClick","instrumentButtonRender","instrumentButtonClick","setupCalled","invokeReady","onKey","oneTimeReady","number"],"mappings":"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","file":"checkout.lib.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"paypal\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"paypal\"] = factory();\n\telse\n\t\troot[\"paypal\"] = factory();\n})((typeof self !== 'undefined' ? self : this), function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 59);\n","/* @flow */\n\nimport type { Enum } from '../types';\n\ntype BUTTON_STYLE_OPTIONS_ENUM =\n Enum<'label' | 'size' | 'shape' | 'color' | 'layout' |\n 'fundingicons' | 'maxbuttons' | 'branding' | 'tagline' | 'height' | 'installmentperiod'>;\n\nexport const BUTTON_STYLE_OPTIONS : BUTTON_STYLE_OPTIONS_ENUM = {\n LABEL: 'label',\n SIZE: 'size',\n SHAPE: 'shape',\n COLOR: 'color',\n LAYOUT: 'layout',\n MAXBUTTONS: 'maxbuttons',\n FUNDINGICONS: 'fundingicons',\n BRANDING: 'branding',\n TAGLINE: 'tagline',\n HEIGHT: 'height',\n INSTALLMENTPERIOD: 'installmentperiod'\n};\n\ntype BUTTON_LABEL_ENUM =\n Enum<'paypal' | 'checkout' | 'pay' | 'credit' |\n 'card' | 'buynow' | 'installment' | 'venmo' | 'itau' | 'ideal' | 'elv' | 'bancontact' | 'giropay' | 'sofort' | 'eps' | 'mybank' | 'p24' | 'payu' | 'verkkopankki' | 'blik' | 'trustly' | 'maxima' | 'boleto' | 'oxxo'>;\n\nexport const BUTTON_LABEL : BUTTON_LABEL_ENUM = {\n PAYPAL: 'paypal',\n CHECKOUT: 'checkout',\n PAY: 'pay',\n CREDIT: 'credit',\n CARD: 'card',\n BUYNOW: 'buynow',\n INSTALLMENT: 'installment',\n VENMO: 'venmo',\n ITAU: 'itau',\n IDEAL: 'ideal',\n ELV: 'elv',\n BANCONTACT: 'bancontact',\n GIROPAY: 'giropay',\n SOFORT: 'sofort',\n EPS: 'eps',\n MYBANK: 'mybank',\n P24: 'p24',\n PAYU: 'payu',\n VERKKOPANKKI: 'verkkopankki',\n BLIK: 'blik',\n TRUSTLY: 'trustly',\n MAXIMA: 'maxima',\n BOLETO: 'boleto',\n OXXO: 'oxxo'\n};\n\ntype BUTTON_COLOR_ENUM =\n Enum<'gold' | 'blue' | 'silver' | 'black' | 'darkblue' | 'transparent' | 'white'>;\n\nexport const BUTTON_COLOR : BUTTON_COLOR_ENUM = {\n GOLD: 'gold',\n BLUE: 'blue',\n SILVER: 'silver',\n BLACK: 'black',\n DARKBLUE: 'darkblue',\n WHITE: 'white',\n TRANSPARENT: 'transparent'\n};\n\ntype BUTTON_LOGO_COLOR_ENUM =\n Enum<'blue' | 'white' | 'black' | 'any'>;\n\nexport const BUTTON_LOGO_COLOR : BUTTON_LOGO_COLOR_ENUM = {\n BLUE: 'blue',\n WHITE: 'white',\n BLACK: 'black',\n ANY: 'any'\n};\n\ntype BUTTON_SIZE_ENUM =\n Enum<'tiny' | 'small' | 'medium' | 'large' | 'huge' | 'responsive'>;\n\nexport const BUTTON_SIZE : BUTTON_SIZE_ENUM = {\n TINY: 'tiny',\n SMALL: 'small',\n MEDIUM: 'medium',\n LARGE: 'large',\n HUGE: 'huge',\n RESPONSIVE: 'responsive'\n};\n\ntype BUTTON_TAGLINE_COLOR_ENUM =\n Enum<'black' | 'blue'>;\n\nexport const BUTTON_TAGLINE_COLOR : BUTTON_TAGLINE_COLOR_ENUM = {\n BLACK: 'black',\n BLUE: 'blue'\n};\n\ntype BUTTON_SHAPE_ENUM =\n Enum<'pill' | 'rect'>;\n\nexport const BUTTON_SHAPE : BUTTON_SHAPE_ENUM = {\n PILL: 'pill',\n RECT: 'rect'\n};\n\ntype BUTTON_BRANDING_ENUM =\n Enum<'branded' | 'unbranded'>;\n\nexport const BUTTON_BRANDING : BUTTON_BRANDING_ENUM = {\n BRANDED: 'branded',\n UNBRANDED: 'unbranded'\n};\n\ntype BUTTON_LAYOUT_ENUM =\n Enum<'horizontal' | 'vertical'>;\n\nexport const BUTTON_LAYOUT : BUTTON_LAYOUT_ENUM = {\n HORIZONTAL: 'horizontal',\n VERTICAL: 'vertical'\n};\n\ntype BUTTON_NUMBER_ENUM =\n Enum<'single' | 'multiple'>;\n\nexport const BUTTON_NUMBER : BUTTON_NUMBER_ENUM = {\n SINGLE: 'single',\n MULTIPLE: 'multiple'\n};\n\ntype BUTTON_LOGO_ENUM =\n Enum<'pp' | 'paypal' | 'venmo' | 'itau' | 'credit' | 'ideal' | 'elv' | 'bancontact' | 'giropay' | 'sofort' | 'eps' | 'mybank' | 'p24' | 'payu' | 'verkkopankki' | 'blik' | 'trustly' | 'maxima' | 'boleto' | 'oxxo'>;\n\nexport const BUTTON_LOGO : BUTTON_LOGO_ENUM = {\n PP: 'pp',\n PAYPAL: 'paypal',\n VENMO: 'venmo',\n ITAU: 'itau',\n CREDIT: 'credit',\n IDEAL: 'ideal',\n ELV: 'elv',\n BANCONTACT: 'bancontact',\n GIROPAY: 'giropay',\n SOFORT: 'sofort',\n EPS: 'eps',\n MYBANK: 'mybank',\n P24: 'p24',\n PAYU: 'payu',\n VERKKOPANKKI: 'verkkopankki',\n BLIK: 'blik',\n TRUSTLY: 'trustly',\n MAXIMA: 'maxima',\n BOLETO: 'boleto',\n OXXO: 'oxxo'\n};\n","/* @flow */\n\nexport const CHECKOUT_OVERLAY_COLOR = {\n BLACK: 'black',\n WHITE: 'white'\n};\n","/* @flow */\n\nexport const FUNDING = {\n PAYPAL: 'paypal',\n VENMO: 'venmo',\n ITAU: 'itau',\n CREDIT: 'credit',\n CARD: 'card',\n IDEAL: 'ideal',\n ELV: 'elv',\n BANCONTACT: 'bancontact',\n GIROPAY: 'giropay',\n SOFORT: 'sofort',\n EPS: 'eps',\n MYBANK: 'mybank',\n P24: 'p24',\n ZIMPLER: 'zimpler',\n PAYU: 'payu',\n VERKKOPANKKI: 'verkkopankki',\n BLIK: 'blik',\n TRUSTLY: 'trustly',\n MAXIMA: 'maxima',\n BOLETO: 'boleto',\n OXXO: 'oxxo'\n};\n\nexport const CARD = {\n VISA: 'visa',\n MASTERCARD: 'mastercard',\n AMEX: 'amex',\n DISCOVER: 'discover',\n SWITCH: 'switch',\n MAESTRO: 'maestro',\n HIPER: 'hiper',\n ELO: 'elo',\n JCB: 'jcb',\n CUP: 'cup',\n COFINOGA: 'cofinoga',\n COFIDIS: 'cofidis',\n CETELEM: 'cetelem',\n CBNATIONALE: 'cbnationale'\n};\n\nexport const FUNDING_ELIGIBILITY_REASON = {\n PRIMARY: 'The funding source is the primary source',\n NOT_ENABLED: 'The funding source is not currently enabled for use',\n SECONDARY_DISALLOWED: 'The funding source is disallowed as a secondary button',\n OPT_OUT: 'The funding source was disallowed in funding.disallowed',\n OPT_IN: 'The funding source was allowed in funding.allowed',\n DISALLOWED_COUNTRY: 'The funding source is not enabled for the current locale',\n DEFAULT_COUNTRY: 'The funding source is enabled by default for the current locale',\n DEFAULT: 'The funding source is enabled by default for all users',\n REMEMBERED: 'The funding source was remembered for the current user',\n NEED_OPT_IN: 'The funding source needs to be allowed in funding.allowed',\n COMMIT_NOT_SET: 'The funding source is not enabled when commit is not set as true',\n INVALID_ENV: 'The funding source is not supported in this environment'\n};\n\nexport const CARD_PRIORITY = [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.DISCOVER,\n CARD.SWITCH,\n CARD.MAESTRO,\n CARD.HIPER,\n CARD.ELO,\n CARD.JCB,\n CARD.CUP,\n CARD.COFINOGA,\n CARD.COFIDIS,\n CARD.CETELEM,\n CARD.CBNATIONALE\n];\n","/* @flow */\n\nexport const ENV = {\n LOCAL: 'local',\n STAGE: 'stage',\n SANDBOX: 'sandbox',\n PRODUCTION: 'production',\n TEST: 'test',\n DEMO: 'demo'\n};\n\nexport const USERS = {\n ALL: 'all',\n REMEMBERED: 'remembered'\n};\n\nexport const SOURCE = {\n MANUAL: 'manual',\n BUTTON_FACTORY: 'button_factory'\n};\n\nexport const LOG_LEVEL = {\n DEBUG: 'debug',\n INFO: 'info',\n WARN: 'warn',\n ERROR: 'error'\n};\n\nexport const PAYMENT_TYPE = {\n EC_TOKEN: 'ec_token',\n BA_TOKEN: 'ba_token',\n PAY_ID: 'pay_id'\n};\n\nexport const PPTM_ID = 'xo-pptm';\n\nexport const ATTRIBUTE = {\n BUTTON: 'data-button',\n FUNDING_SOURCE: 'data-funding-source',\n CARD: 'data-card',\n VERSION: 'data-version',\n LAYOUT: 'data-layout',\n SIZE: 'data-size'\n};\n\nexport const PLATFORM = {\n DESKTOP: 'desktop',\n MOBILE: 'mobile'\n};\n\nexport const DEFAULT = 'default';\n\n\n","/* @flow */\n\nimport { PAYMENT_TYPE } from './misc';\n\nexport const FPTI = {\n\n KEY: {\n FEED: 'feed_name',\n STATE: 'state_name',\n TRANSITION: 'transition_name',\n BUTTON_TYPE: 'button_type',\n SESSION_UID: 'page_session_id',\n BUTTON_SESSION_UID: 'button_session_id',\n TOKEN: 'token',\n CONTEXT_ID: 'context_id',\n CONTEXT_TYPE: 'context_type',\n REFERER: 'referer_url',\n PAY_ID: 'pay_id',\n SELLER_ID: 'seller_id',\n DATA_SOURCE: 'serverside_data_source',\n BUTTON_SOURCE: 'button_source',\n ERROR_CODE: 'ext_error_code',\n ERROR_DESC: 'ext_error_desc',\n PAGE_LOAD_TIME: 'page_load_time',\n EXPERIMENT_NAME: 'pxp_exp_id',\n TREATMENT_NAME: 'pxp_trtmnt_id',\n TRANSITION_TIME: 'transition_time',\n FUNDING_LIST: 'eligible_payment_methods',\n FUNDING_COUNT: 'eligible_payment_count',\n CHOSEN_FUNDING: 'selected_payment_method',\n BUTTON_LAYOUT: 'button_layout',\n BUTTON_COLOR: 'button_color',\n BUTTON_SIZE: 'button_size',\n BUTTON_SHAPE: 'button_shape',\n BUTTON_LABEL: 'button_label',\n BUTTON_WIDTH: 'button_width',\n VERSION: 'checkoutjs_version',\n MAX_BUTTONS: 'max_buttons',\n FUNDING_REMEMBERED: 'funding_remembered',\n BUTTON_TAGLINE_ENABLED: 'button_tagline_enabled',\n RESPONSE_DURATION: 'response_duration',\n PAYMENT_FLOW: 'payment_flow',\n BUTTON_VERSION: 'button_version'\n },\n\n BUTTON_TYPE: {\n IFRAME: 'iframe',\n HTML: 'html',\n CUSTOM: 'custom'\n },\n\n DATA_SOURCE: {\n CHECKOUT: 'checkout'\n },\n\n CONTEXT_TYPE: {\n BUTTON_SESSION_ID: 'button_session_id',\n [ PAYMENT_TYPE.PAY_ID ]: 'Pay-ID',\n [ PAYMENT_TYPE.EC_TOKEN ]: 'EC-Token',\n [ PAYMENT_TYPE.BA_TOKEN ]: 'EC-Token'\n },\n\n FEED: {\n CHECKOUTJS: 'checkoutjs'\n },\n\n STATE: {\n LOAD: 'checkoutjs_load',\n BUTTON: 'checkoutjs_button',\n CHECKOUT: 'checkoutjs_checkout',\n PPTM: 'checkoutjs_pptm'\n },\n\n TRANSITION: {\n SCRIPT_LOAD: 'process_script_load',\n\n BUTTON_RENDER: 'process_button_render',\n BUTTON_LOAD: 'process_button_load',\n BUTTON_CLICK: 'process_button_click',\n\n BUTTON_RENDER_INTRANET_MODE: 'process_button_render_intranet_mode',\n BUTTON_CLICK_INTRANET_MODE: 'process_button_click_intranet_mode',\n\n CREATE_PAYMENT: 'process_create_payment',\n RECIEVE_PAYMENT: 'process_recieve_payment',\n\n CHECKOUT_INIT: 'process_checkout_init',\n CHECKOUT_AUTHORIZE: 'process_checkout_authorize',\n CHECKOUT_SHIPPING_CHANGE: 'process_checkout_shipping_change',\n CHECKOUT_CANCEL: 'process_checkout_cancel',\n CHECKOUT_ERROR: 'process_checkout_error',\n\n EXTERNAL_EXPERIMENT: 'process_external_experiment',\n EXTERNAL_EXPERIMENT_COMPLETE: 'process_external_experiment_complete',\n\n PPTM_LOAD: 'process_pptm_load',\n PPTM_LOADED: 'process_pptm_loaded'\n }\n};\n","/* @flow */\n\nexport const COUNTRY = {\n AD: 'AD',\n AE: 'AE',\n AG: 'AG',\n AI: 'AI',\n AL: 'AL',\n AM: 'AM',\n AN: 'AN',\n AO: 'AO',\n AR: 'AR',\n AT: 'AT',\n AU: 'AU',\n AW: 'AW',\n AZ: 'AZ',\n BA: 'BA',\n BB: 'BB',\n BE: 'BE',\n BF: 'BF',\n BG: 'BG',\n BH: 'BH',\n BI: 'BI',\n BJ: 'BJ',\n BM: 'BM',\n BN: 'BN',\n BO: 'BO',\n BR: 'BR',\n BS: 'BS',\n BT: 'BT',\n BW: 'BW',\n BY: 'BY',\n BZ: 'BZ',\n C2: 'C2',\n CA: 'CA',\n CD: 'CD',\n CG: 'CG',\n CH: 'CH',\n CI: 'CI',\n CK: 'CK',\n CL: 'CL',\n CM: 'CM',\n CN: 'CN',\n CO: 'CO',\n CR: 'CR',\n CV: 'CV',\n CY: 'CY',\n CZ: 'CZ',\n DE: 'DE',\n DJ: 'DJ',\n DK: 'DK',\n DM: 'DM',\n DO: 'DO',\n DZ: 'DZ',\n EC: 'EC',\n EE: 'EE',\n EG: 'EG',\n ER: 'ER',\n ES: 'ES',\n ET: 'ET',\n FI: 'FI',\n FJ: 'FJ',\n FK: 'FK',\n FM: 'FM',\n FO: 'FO',\n FR: 'FR',\n GA: 'GA',\n GB: 'GB',\n GD: 'GD',\n GE: 'GE',\n GF: 'GF',\n GI: 'GI',\n GL: 'GL',\n GM: 'GM',\n GN: 'GN',\n GP: 'GP',\n GR: 'GR',\n GT: 'GT',\n GW: 'GW',\n GY: 'GY',\n HK: 'HK',\n HN: 'HN',\n HR: 'HR',\n HU: 'HU',\n ID: 'ID',\n IE: 'IE',\n IL: 'IL',\n IN: 'IN',\n IS: 'IS',\n IT: 'IT',\n JM: 'JM',\n JO: 'JO',\n JP: 'JP',\n KE: 'KE',\n KG: 'KG',\n KH: 'KH',\n KI: 'KI',\n KM: 'KM',\n KN: 'KN',\n KR: 'KR',\n KW: 'KW',\n KY: 'KY',\n KZ: 'KZ',\n LA: 'LA',\n LC: 'LC',\n LI: 'LI',\n LK: 'LK',\n LS: 'LS',\n LT: 'LT',\n LU: 'LU',\n LV: 'LV',\n MA: 'MA',\n MC: 'MC',\n MD: 'MD',\n ME: 'ME',\n MG: 'MG',\n MH: 'MH',\n MK: 'MK',\n ML: 'ML',\n MN: 'MN',\n MQ: 'MQ',\n MR: 'MR',\n MS: 'MS',\n MT: 'MT',\n MU: 'MU',\n MV: 'MV',\n MW: 'MW',\n MX: 'MX',\n MY: 'MY',\n MZ: 'MZ',\n NA: 'NA',\n NC: 'NC',\n NE: 'NE',\n NF: 'NF',\n NG: 'NG',\n NI: 'NI',\n NL: 'NL',\n NO: 'NO',\n NP: 'NP',\n NR: 'NR',\n NU: 'NU',\n NZ: 'NZ',\n OM: 'OM',\n PA: 'PA',\n PE: 'PE',\n PF: 'PF',\n PG: 'PG',\n PH: 'PH',\n PL: 'PL',\n PM: 'PM',\n PN: 'PN',\n PT: 'PT',\n PW: 'PW',\n PY: 'PY',\n QA: 'QA',\n RE: 'RE',\n RO: 'RO',\n RS: 'RS',\n RU: 'RU',\n RW: 'RW',\n SA: 'SA',\n SB: 'SB',\n SC: 'SC',\n SE: 'SE',\n SG: 'SG',\n SH: 'SH',\n SI: 'SI',\n SJ: 'SJ',\n SK: 'SK',\n SL: 'SL',\n SM: 'SM',\n SN: 'SN',\n SO: 'SO',\n SR: 'SR',\n ST: 'ST',\n SV: 'SV',\n SZ: 'SZ',\n TC: 'TC',\n TD: 'TD',\n TG: 'TG',\n TH: 'TH',\n TJ: 'TJ',\n TM: 'TM',\n TN: 'TN',\n TO: 'TO',\n TR: 'TR',\n TT: 'TT',\n TV: 'TV',\n TW: 'TW',\n TZ: 'TZ',\n UA: 'UA',\n UG: 'UG',\n US: 'US',\n UY: 'UY',\n VA: 'VA',\n VC: 'VC',\n VE: 'VE',\n VG: 'VG',\n VN: 'VN',\n VU: 'VU',\n WF: 'WF',\n WS: 'WS',\n YE: 'YE',\n YT: 'YT',\n ZA: 'ZA',\n ZM: 'ZM',\n ZW: 'ZW'\n};\n\nexport const LANG = {\n AR: 'ar',\n CS: 'cs',\n DA: 'da',\n DE: 'de',\n EL: 'el',\n EN: 'en',\n ES: 'es',\n FI: 'fi',\n FR: 'fr',\n HE: 'he',\n HU: 'hu',\n ID: 'id',\n IT: 'it',\n JA: 'ja',\n KO: 'ko',\n NL: 'nl',\n NO: 'no',\n PL: 'pl',\n PT: 'pt',\n RU: 'ru',\n SK: 'sk',\n SV: 'sv',\n TH: 'th',\n TR: 'tr',\n ZH: 'zh'\n};\n\nexport const LANG_TO_DEFAULT_COUNTRY = {\n [LANG.AR]: COUNTRY.SA,\n [LANG.CS]: COUNTRY.CZ,\n [LANG.DA]: COUNTRY.DK,\n [LANG.DE]: COUNTRY.DE,\n [LANG.EL]: COUNTRY.GR,\n [LANG.EN]: COUNTRY.US,\n [LANG.ES]: COUNTRY.ES,\n [LANG.FI]: COUNTRY.FI,\n [LANG.FR]: COUNTRY.FR,\n [LANG.HE]: COUNTRY.IL,\n [LANG.HU]: COUNTRY.HU,\n [LANG.ID]: COUNTRY.ID,\n [LANG.IT]: COUNTRY.IT,\n [LANG.JA]: COUNTRY.JP,\n [LANG.KO]: COUNTRY.KR,\n [LANG.NL]: COUNTRY.NL,\n [LANG.NO]: COUNTRY.NO,\n [LANG.PL]: COUNTRY.PL,\n [LANG.PT]: COUNTRY.PT,\n [LANG.RU]: COUNTRY.RU,\n [LANG.SK]: COUNTRY.SK,\n [LANG.SV]: COUNTRY.SE,\n [LANG.TH]: COUNTRY.TH,\n [LANG.TR]: COUNTRY.TR,\n [LANG.ZH]: COUNTRY.CN\n};\n\nexport const ALLOWED_INSTALLMENT_COUNTRIES = [ COUNTRY.BR, COUNTRY.MX ];\nexport const ALLOWED_INSTALLMENT_PERIOD = {\n BR: [ 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ],\n MX: [ 3, 6, 9, 12 ]\n};\n","/* @flow */\n\nimport { COUNTRY, LANG } from './country';\n\nexport const LOCALE = {\n [COUNTRY.AD]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AE]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH, LANG.AR ],\n [COUNTRY.AG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AI]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AL]: [ LANG.EN ],\n [COUNTRY.AM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AN]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AO]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AR]: [ LANG.ES, LANG.EN ],\n [COUNTRY.AT]: [ LANG.DE, LANG.EN ],\n [COUNTRY.AU]: [ LANG.EN ],\n [COUNTRY.AW]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BA]: [ LANG.EN ],\n [COUNTRY.BB]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BE]: [ LANG.EN, LANG.NL, LANG.FR ],\n [COUNTRY.BF]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.BG]: [ LANG.EN ],\n [COUNTRY.BH]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BI]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.BJ]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.BM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BN]: [ LANG.EN ],\n [COUNTRY.BO]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.BR]: [ LANG.PT, LANG.EN ],\n [COUNTRY.BS]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BT]: [ LANG.EN ],\n [COUNTRY.BW]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BY]: [ LANG.EN ],\n [COUNTRY.BZ]: [ LANG.EN, LANG.ES, LANG.FR, LANG.ZH ],\n [COUNTRY.C2]: [ LANG.ZH, LANG.EN ],\n [COUNTRY.CA]: [ LANG.EN, LANG.FR ],\n [COUNTRY.CD]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.CG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.CH]: [ LANG.DE, LANG.FR, LANG.EN ],\n [COUNTRY.CI]: [ LANG.FR, LANG.EN ],\n [COUNTRY.CK]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.CL]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.CM]: [ LANG.FR, LANG.EN ],\n [COUNTRY.CN]: [ LANG.ZH ],\n [COUNTRY.CO]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.CR]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.CV]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.CY]: [ LANG.EN ],\n [COUNTRY.CZ]: [ LANG.CS, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.DE]: [ LANG.DE, LANG.EN ],\n [COUNTRY.DJ]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.DK]: [ LANG.DA, LANG.EN ],\n [COUNTRY.DM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.DO]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.DZ]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.EC]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.EE]: [ LANG.EN, LANG.RU, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.EG]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ER]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ES]: [ LANG.ES, LANG.EN ],\n [COUNTRY.ET]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.FI]: [ LANG.FI, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.FJ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.FK]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.FM]: [ LANG.EN ],\n [COUNTRY.FO]: [ LANG.DA, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.FR]: [ LANG.FR, LANG.EN ],\n [COUNTRY.GA]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.GB]: [ LANG.EN ],\n [COUNTRY.GD]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GE]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GF]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GI]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GL]: [ LANG.DA, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GN]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.GP]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GR]: [ LANG.EL, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GT]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.GW]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GY]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.HK]: [ LANG.EN, LANG.ZH ],\n [COUNTRY.HN]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.HR]: [ LANG.EN ],\n [COUNTRY.HU]: [ LANG.HU, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ID]: [ LANG.ID, LANG.EN ],\n [COUNTRY.IE]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.IL]: [ LANG.HE, LANG.EN ],\n [COUNTRY.IN]: [ LANG.EN ],\n [COUNTRY.IS]: [ LANG.EN ],\n [COUNTRY.IT]: [ LANG.IT, LANG.EN ],\n [COUNTRY.JM]: [ LANG.EN, LANG.ES, LANG.FR, LANG.ZH ],\n [COUNTRY.JO]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.JP]: [ LANG.JA, LANG.EN ],\n [COUNTRY.KE]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KH]: [ LANG.EN ],\n [COUNTRY.KI]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KM]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.KN]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KR]: [ LANG.KO, LANG.EN ],\n [COUNTRY.KW]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KY]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LA]: [ LANG.EN ],\n [COUNTRY.LC]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LI]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LK]: [ LANG.EN ],\n [COUNTRY.LS]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LT]: [ LANG.EN, LANG.RU, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LU]: [ LANG.EN, LANG.DE, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LV]: [ LANG.EN, LANG.RU, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MA]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MC]: [ LANG.FR, LANG.EN ],\n [COUNTRY.MD]: [ LANG.EN ],\n [COUNTRY.ME]: [ LANG.EN ],\n [COUNTRY.MG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MH]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MK]: [ LANG.EN ],\n [COUNTRY.ML]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.MN]: [ LANG.EN ],\n [COUNTRY.MQ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MR]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MS]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MT]: [ LANG.EN ],\n [COUNTRY.MU]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MV]: [ LANG.EN ],\n [COUNTRY.MW]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MX]: [ LANG.ES, LANG.EN ],\n [COUNTRY.MY]: [ LANG.EN ],\n [COUNTRY.MZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NA]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NC]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NE]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.NF]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NG]: [ LANG.EN ],\n [COUNTRY.NI]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.NL]: [ LANG.NL, LANG.EN ],\n [COUNTRY.NO]: [ LANG.NO, LANG.EN ],\n [COUNTRY.NP]: [ LANG.EN ],\n [COUNTRY.NR]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NU]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.OM]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PA]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.PE]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.PF]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PH]: [ LANG.EN ],\n [COUNTRY.PL]: [ LANG.PL, LANG.EN ],\n [COUNTRY.PM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PN]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PT]: [ LANG.PT, LANG.EN ],\n [COUNTRY.PW]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PY]: [ LANG.ES, LANG.EN ],\n [COUNTRY.QA]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH, LANG.AR ],\n [COUNTRY.RE]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.RO]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.RS]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.RU]: [ LANG.RU, LANG.EN ],\n [COUNTRY.RW]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.SA]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SB]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SC]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.SE]: [ LANG.SV, LANG.EN ],\n [COUNTRY.SG]: [ LANG.EN ],\n [COUNTRY.SH]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SI]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SJ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SK]: [ LANG.SK, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SL]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SN]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.SO]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SR]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ST]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SV]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.SZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TC]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TD]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.TG]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.TH]: [ LANG.TH, LANG.EN ],\n [COUNTRY.TJ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TN]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TO]: [ LANG.EN ],\n [COUNTRY.TR]: [ LANG.TR, LANG.EN ],\n [COUNTRY.TT]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TV]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TW]: [ LANG.ZH, LANG.EN ],\n [COUNTRY.TZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.UA]: [ LANG.EN, LANG.RU, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.UG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.US]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.UY]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.VA]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.VC]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.VE]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.VG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.VN]: [ LANG.EN ],\n [COUNTRY.VU]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.WF]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.WS]: [ LANG.EN ],\n [COUNTRY.YE]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.YT]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ZA]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ZM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ZW]: [ LANG.EN ]\n};\n","/* @flow */\n\nexport * from './button';\nexport * from './checkout';\nexport * from './funding';\nexport * from './fpti';\nexport * from './country';\nexport * from './misc';\nexport * from './locale';\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { regexMap } from './util';\n\n// eslint-disable-next-line no-use-before-define\nexport type ChildType = $ReadOnlyArray | JsxHTMLNode | string | void | null;\nexport type ChildrenType = $ReadOnlyArray;\ntype PropsType = ?{ class? : string, id? : string, innerHTML? : string };\n\nfunction htmlEncode(html : string = '') : string {\n return html.toString()\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(/\\//g, '/');\n}\n\nexport class JsxHTMLNode {\n name : string\n props : PropsType\n children : ChildrenType\n\n constructor(name : string, props : PropsType, children : ChildrenType) {\n this.name = name;\n this.props = props;\n this.children = children;\n }\n\n toString() : string {\n return `<${ this.name }${ this.props ? ' ' : '' }${ this.props ? this.propsToString() : '' }>${ this.childrenToString() }`;\n }\n\n propsToString() : string {\n const props = this.props;\n\n if (!props) {\n return '';\n }\n\n return Object.keys(props).filter(key => {\n return key !== 'innerHTML' && props && props[key] !== false;\n }).map(key => {\n if (props && props[key] === true) {\n return `${ htmlEncode(key) }`;\n }\n return props ? `${ htmlEncode(key) }=\"${ htmlEncode(props[key]) }\"` : '';\n }).join(' ');\n }\n\n childrenToString() : string {\n\n if (this.props && this.props.innerHTML) {\n return this.props.innerHTML;\n }\n\n if (!this.children) {\n return '';\n }\n\n let result = '';\n\n function iterate(children) {\n for (const child of children) {\n\n if (child === null || child === undefined) {\n continue;\n }\n\n if (Array.isArray(child)) {\n iterate(child);\n } else if (child instanceof JsxHTMLNode) {\n result += child.toString();\n } else {\n result += htmlEncode(child);\n }\n }\n }\n\n iterate(this.children);\n\n return result;\n }\n}\n\nexport class JsxHTMLNodeContainer extends JsxHTMLNode {\n\n\n constructor(children : ChildrenType) {\n super('', {}, children);\n }\n\n toString() : string {\n return this.childrenToString();\n }\n}\n\nexport function jsxToHTML(name : string, props : PropsType, ...children : ChildrenType) : JsxHTMLNode {\n return new JsxHTMLNode(name, props, children);\n}\n\nexport function jsxRender(template : string, renderers : { [string] : (string) =>?(JsxHTMLNode | $ReadOnlyArray) }) : JsxHTMLNode {\n\n // eslint-disable-next-line security/detect-unsafe-regex, unicorn/no-unsafe-regex\n const nodes = regexMap(template, /\\{\\s*([a-z]+)(?::\\s*([^} ]+))?\\s*\\}|([^${}]+)/g, (match, type, value, text) => {\n if (type) {\n if (!renderers[type]) {\n throw new Error(`Can not render type: ${ type }`);\n }\n\n return renderers[type](value);\n } else if (text && text.trim()) {\n\n if (!renderers.text) {\n return text;\n }\n\n if ((/
/).test(text)) {\n return renderers.break(text);\n } else {\n return renderers.text(text);\n }\n } else {\n return text;\n }\n });\n\n return new JsxHTMLNodeContainer(nodes);\n}\n","/* @flow */\n\nexport function isPromise(item : mixed) : boolean {\n try {\n if (!item) {\n return false;\n }\n\n if (typeof Promise !== 'undefined' && item instanceof Promise) {\n return true;\n }\n\n if (typeof window !== 'undefined' && typeof window.Window === 'function' && item instanceof window.Window) {\n return false;\n }\n\n if (typeof window !== 'undefined' && typeof window.constructor === 'function' && item instanceof window.constructor) {\n return false;\n }\n\n let toString = ({}).toString;\n\n if (toString) {\n let name = toString.call(item);\n\n if (name === '[object Window]' || name === '[object global]' || name === '[object DOMWindow]') {\n return false;\n }\n }\n\n if (typeof item.then === 'function') {\n return true;\n }\n } catch (err) {\n return false;\n }\n\n return false;\n}\n","/* @flow */\n\nimport type { ZalgoPromise } from './promise';\n\nconst dispatchedErrors = [];\nconst possiblyUnhandledPromiseHandlers : Array<(mixed, promise? : ZalgoPromise) => void> = [];\n\nexport function dispatchPossiblyUnhandledError(err : mixed, promise : ZalgoPromise) {\n\n if (dispatchedErrors.indexOf(err) !== -1) {\n return;\n }\n\n dispatchedErrors.push(err);\n\n setTimeout(() => {\n if (__DEBUG__) {\n // $FlowFixMe\n throw new Error(`${ err.stack || err.toString() }\\n\\nFrom promise:\\n\\n${ promise.stack }`);\n }\n\n throw err;\n }, 1);\n\n for (let j = 0; j < possiblyUnhandledPromiseHandlers.length; j++) {\n // $FlowFixMe\n possiblyUnhandledPromiseHandlers[j](err, promise);\n }\n}\n\nexport function onPossiblyUnhandledException(handler : (mixed, promise? : ZalgoPromise) => void) : { cancel : () => void } {\n possiblyUnhandledPromiseHandlers.push(handler);\n\n return {\n cancel() {\n possiblyUnhandledPromiseHandlers.splice(possiblyUnhandledPromiseHandlers.indexOf(handler), 1);\n }\n };\n}\n","/* @flow */\n\nimport type { ZalgoPromise } from './promise';\n\nlet activeCount = 0;\nlet flushPromise;\n\nfunction flushActive() {\n if (!activeCount && flushPromise) {\n const promise = flushPromise;\n flushPromise = null;\n promise.resolve();\n }\n}\n\nexport function startActive() {\n activeCount += 1;\n}\n\nexport function endActive() {\n activeCount -= 1;\n flushActive();\n}\n\nexport function awaitActive(Zalgo : Class>) : ZalgoPromise { // eslint-disable-line no-undef\n let promise = flushPromise = flushPromise || new Zalgo();\n flushActive();\n return promise;\n}\n","/* @flow */\n\nimport { isPromise } from './utils';\nimport { onPossiblyUnhandledException, dispatchPossiblyUnhandledError } from './exceptions';\nimport { startActive, endActive, awaitActive } from './flush';\n\nexport class ZalgoPromise {\n\n resolved : boolean\n rejected : boolean\n errorHandled : boolean\n value : R\n error : mixed\n handlers : Array<{\n promise : ZalgoPromise<*>,\n onSuccess : void | (result : R) => mixed,\n onError : void | (error : mixed) => mixed\n }>\n dispatching : boolean\n stack : string\n\n constructor(handler : ?(resolve : (result : R) => void, reject : (error : mixed) => void) => void) {\n\n this.resolved = false;\n this.rejected = false;\n this.errorHandled = false;\n\n this.handlers = [];\n\n if (handler) {\n\n let result;\n let error;\n let resolved = false;\n let rejected = false;\n let isAsync = false;\n\n startActive();\n\n try {\n handler(res => {\n if (isAsync) {\n this.resolve(res);\n } else {\n resolved = true;\n result = res;\n }\n\n }, err => {\n if (isAsync) {\n this.reject(err);\n } else {\n rejected = true;\n error = err;\n }\n });\n\n } catch (err) {\n endActive();\n this.reject(err);\n return;\n }\n\n endActive();\n\n isAsync = true;\n\n if (resolved) {\n // $FlowFixMe\n this.resolve(result);\n } else if (rejected) {\n this.reject(error);\n }\n }\n\n if (__DEBUG__) {\n try {\n throw new Error(`ZalgoPromise`);\n } catch (err) {\n this.stack = err.stack;\n }\n }\n }\n\n resolve(result : R) : ZalgoPromise {\n if (this.resolved || this.rejected) {\n return this;\n }\n\n if (isPromise(result)) {\n throw new Error('Can not resolve promise with another promise');\n }\n\n this.resolved = true;\n this.value = result;\n this.dispatch();\n\n return this;\n }\n\n reject(error : mixed) : ZalgoPromise {\n if (this.resolved || this.rejected) {\n return this;\n }\n\n if (isPromise(error)) {\n throw new Error('Can not reject promise with another promise');\n }\n\n if (!error) {\n // $FlowFixMe\n let err = (error && typeof error.toString === 'function' ? error.toString() : Object.prototype.toString.call(error));\n error = new Error(`Expected reject to be called with Error, got ${ err }`);\n }\n\n this.rejected = true;\n this.error = error;\n\n if (!this.errorHandled) {\n setTimeout(() => {\n if (!this.errorHandled) {\n dispatchPossiblyUnhandledError(error, this);\n }\n }, 1);\n }\n\n this.dispatch();\n\n return this;\n }\n\n asyncReject(error : mixed) : ZalgoPromise {\n this.errorHandled = true;\n this.reject(error);\n return this;\n }\n \n dispatch() {\n\n let { dispatching, resolved, rejected, handlers } = this;\n\n if (dispatching) {\n return;\n }\n\n if (!resolved && !rejected) {\n return;\n }\n\n this.dispatching = true;\n startActive();\n\n const chain = (firstPromise : ZalgoPromise, secondPromise : ZalgoPromise) => {\n return firstPromise.then(res => {\n secondPromise.resolve(res);\n }, err => {\n secondPromise.reject(err);\n });\n };\n\n for (let i = 0; i < handlers.length; i++) {\n\n let { onSuccess, onError, promise } = handlers[i];\n\n let result;\n\n if (resolved) {\n\n try {\n result = onSuccess ? onSuccess(this.value) : this.value;\n } catch (err) {\n promise.reject(err);\n continue;\n }\n\n } else if (rejected) {\n\n if (!onError) {\n promise.reject(this.error);\n continue;\n }\n\n try {\n result = onError(this.error);\n } catch (err) {\n promise.reject(err);\n continue;\n }\n }\n\n if (result instanceof ZalgoPromise && (result.resolved || result.rejected)) {\n\n if (result.resolved) {\n promise.resolve(result.value);\n } else {\n promise.reject(result.error);\n }\n\n result.errorHandled = true;\n\n } else if (isPromise(result)) {\n\n if (result instanceof ZalgoPromise && (result.resolved || result.rejected)) {\n if (result.resolved) {\n promise.resolve(result.value);\n } else {\n promise.reject(result.error);\n }\n\n } else {\n // $FlowFixMe\n chain(result, promise);\n }\n\n } else {\n\n promise.resolve(result);\n }\n }\n\n handlers.length = 0;\n this.dispatching = false;\n endActive();\n }\n\n then(onSuccess : void | (result : R) => (ZalgoPromise | Y), onError : void | (error : mixed) => (ZalgoPromise | Y)) : ZalgoPromise {\n\n if (onSuccess && typeof onSuccess !== 'function' && !onSuccess.call) {\n throw new Error('Promise.then expected a function for success handler');\n }\n\n if (onError && typeof onError !== 'function' && !onError.call) {\n throw new Error('Promise.then expected a function for error handler');\n }\n\n let promise : ZalgoPromise = new ZalgoPromise();\n\n this.handlers.push({\n promise,\n onSuccess,\n onError\n });\n\n this.errorHandled = true;\n\n this.dispatch();\n\n return promise;\n }\n\n catch(onError : (error : mixed) => ZalgoPromise | Y) : ZalgoPromise {\n return this.then(undefined, onError);\n }\n\n finally(onFinally : () => mixed) : ZalgoPromise {\n\n if (onFinally && typeof onFinally !== 'function' && !onFinally.call) {\n throw new Error('Promise.finally expected a function');\n }\n\n return this.then((result) => {\n return ZalgoPromise.try(onFinally)\n .then(() => {\n return result;\n });\n }, (err) => {\n return ZalgoPromise.try(onFinally)\n .then(() => {\n throw err;\n });\n });\n }\n\n timeout(time : number, err : ?Error) : ZalgoPromise {\n\n if (this.resolved || this.rejected) {\n return this;\n }\n\n let timeout = setTimeout(() => {\n\n if (this.resolved || this.rejected) {\n return;\n }\n\n this.reject(err || new Error(`Promise timed out after ${ time }ms`));\n\n }, time);\n\n return this.then(result => {\n clearTimeout(timeout);\n return result;\n });\n }\n\n // $FlowFixMe\n toPromise() : Promise {\n // $FlowFixMe\n if (typeof Promise === 'undefined') {\n throw new TypeError(`Could not find Promise`);\n }\n // $FlowFixMe\n return Promise.resolve(this); // eslint-disable-line compat/compat\n }\n\n static resolve(value : X | ZalgoPromise) : ZalgoPromise {\n\n if (value instanceof ZalgoPromise) {\n return value;\n }\n\n if (isPromise(value)) {\n // $FlowFixMe\n return new ZalgoPromise((resolve, reject) => value.then(resolve, reject));\n }\n\n return new ZalgoPromise().resolve(value);\n }\n\n static reject(error : mixed) : ZalgoPromise {\n return new ZalgoPromise().reject(error);\n }\n\n static asyncReject(error : mixed) : ZalgoPromise {\n return new ZalgoPromise().asyncReject(error);\n }\n\n static all>(promises : X) : ZalgoPromise<$TupleMap(ZalgoPromise | Y) => Y>> { // eslint-disable-line no-undef\n\n let promise = new ZalgoPromise();\n let count = promises.length;\n let results = [];\n\n if (!count) {\n promise.resolve(results);\n return promise;\n }\n\n const chain = (i : number, firstPromise : ZalgoPromise, secondPromise : ZalgoPromise) => {\n return firstPromise.then(res => {\n results[i] = res;\n count -= 1;\n if (count === 0) {\n promise.resolve(results);\n }\n }, err => {\n secondPromise.reject(err);\n });\n };\n\n for (let i = 0; i < promises.length; i++) {\n let prom = promises[i];\n\n if (prom instanceof ZalgoPromise) {\n if (prom.resolved) {\n results[i] = prom.value;\n count -= 1;\n continue;\n }\n } else if (!isPromise(prom)) {\n results[i] = prom;\n count -= 1;\n continue;\n }\n\n chain(i, ZalgoPromise.resolve(prom), promise);\n }\n\n if (count === 0) {\n promise.resolve(results);\n }\n\n return promise;\n }\n\n static hash(promises : O) : ZalgoPromise<$ObjMap(ZalgoPromise | Y) => Y>> { // eslint-disable-line no-undef\n let result = {};\n \n return ZalgoPromise.all(Object.keys(promises).map(key => {\n return ZalgoPromise.resolve(promises[key]).then(value => {\n result[key] = value;\n });\n })).then(() => {\n return result;\n });\n }\n\n static map(items : Array, method : (T) => (ZalgoPromise | X)) : ZalgoPromise> {\n // $FlowFixMe\n return ZalgoPromise.all(items.map(method));\n }\n\n static onPossiblyUnhandledException(handler : (err : mixed) => void) : { cancel : () => void } {\n return onPossiblyUnhandledException(handler);\n }\n\n static try>(method : (...args : A) => (ZalgoPromise | Y), context : ?C, args : ?A) : ZalgoPromise {\n\n if (method && typeof method !== 'function' && !method.call) {\n throw new Error('Promise.try expected a function');\n }\n\n let result;\n\n startActive();\n \n try {\n // $FlowFixMe\n result = method.apply(context, args || []);\n } catch (err) {\n endActive();\n return ZalgoPromise.reject(err);\n }\n\n endActive();\n\n return ZalgoPromise.resolve(result);\n }\n\n static delay(delay : number) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n setTimeout(resolve, delay);\n });\n }\n\n static isPromise(value : mixed) : boolean {\n\n if (value && value instanceof ZalgoPromise) {\n return true;\n }\n\n return isPromise(value);\n }\n\n static flush() : ZalgoPromise {\n return awaitActive(ZalgoPromise);\n }\n}\n","/* @flow */\n\nexport { ZalgoPromise } from './promise';\n","/* @flow */\n\nimport {\n getOpener,\n getTop\n} from 'cross-domain-utils/src';\n\nexport function getUserAgent() : string {\n return window.navigator.mockUserAgent || window.navigator.userAgent;\n}\n\nexport function isDevice() : boolean {\n const userAgent = getUserAgent();\n if (userAgent.match(/Android|webOS|iPhone|iPad|iPod|bada|Symbian|Palm|CriOS|BlackBerry|IEMobile|WindowsMobile|Opera Mini/i)) {\n return true;\n }\n\n return false;\n}\n\nexport function isInsidePopup() : boolean {\n // Checks to see if the top-most window is a pop-up\n return Boolean(getOpener(getTop(window) || window));\n}\n\nexport function isStandAlone() : boolean {\n // Chrome interprets pop-up windows as standalone windows\n return !isInsidePopup() && (window.navigator.standalone === true || window.matchMedia('(display-mode: standalone)').matches);\n}\n\nexport function isFacebookWebView(ua? : string = getUserAgent()) : boolean {\n return (ua.indexOf('FBAN') !== -1) || (ua.indexOf('FBAV') !== -1);\n}\n\nexport function isFirefoxIOS(ua? : string = getUserAgent()) : boolean {\n return (/FxiOS/i).test(ua);\n}\n\nexport function isEdgeIOS(ua? : string = getUserAgent()) : boolean {\n return (/EdgiOS/i).test(ua);\n}\n\nexport function isOperaMini(ua? : string = getUserAgent()) : boolean {\n return ua.indexOf('Opera Mini') > -1;\n}\n\nexport function isAndroid(ua? : string = getUserAgent()) : boolean {\n return (/Android/).test(ua);\n}\n\nexport function isIos(ua? : string = getUserAgent()) : boolean {\n return (/iPhone|iPod|iPad/).test(ua);\n}\n\nexport function isGoogleSearchApp(ua? : string = getUserAgent()) : boolean {\n return (/\\bGSA\\b/).test(ua);\n}\n\nexport function isQQBrowser(ua? : string = getUserAgent()) : boolean {\n return (/QQBrowser/).test(ua);\n}\n\nexport function isIosWebview(ua? : string = getUserAgent()) : boolean {\n if (isIos(ua)) {\n if (isGoogleSearchApp(ua)) {\n return true;\n }\n return (/.+AppleWebKit(?!.*Safari)/).test(ua);\n }\n return false;\n}\n\nexport function isAndroidWebview(ua? : string = getUserAgent()) : boolean {\n if (isAndroid(ua)) {\n return (/Version\\/[\\d.]+/).test(ua) && !isOperaMini(ua);\n }\n return false;\n}\n\nexport function isWebView() : boolean {\n return isFacebookWebView() ||\n isIosWebview() ||\n isAndroidWebview();\n}\n\nexport function isIE() : boolean {\n\n if (window.document.documentMode) {\n return true;\n }\n\n if (window.navigator && typeof window.navigator.userAgent === 'string') {\n if ((/Edge|MSIE/i).test(window.navigator.userAgent)) {\n return true;\n }\n }\n\n return false;\n}\n\n\nexport function isIE11() : boolean {\n if (!isIE()) {\n return false;\n }\n\n if (window.navigator && typeof window.navigator.userAgent === 'string') {\n if ((/MSIE 11\\.0/i).test(window.navigator.userAgent)) {\n return true;\n }\n\n if ((/Trident/i).test(window.navigator.userAgent) && (/rv:11\\.0/i).test(window.navigator.userAgent)) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function isIECompHeader() : boolean {\n const mHttp = window.document.querySelector('meta[http-equiv=\"X-UA-Compatible\"]');\n const mContent = window.document.querySelector('meta[content=\"IE=edge\"]');\n if (mHttp && mContent) {\n return true;\n }\n return false;\n}\n\nexport function isElectron() : boolean {\n const userAgent = getUserAgent();\n // here we want a case-insensitive full word boundary\n return (/\\belectron\\b/i).test(userAgent);\n}\n\nexport function isIEIntranet() : boolean {\n if (!isIE11()) {\n return false;\n }\n\n // This status check only works for older versions of IE with document.documentMode set\n\n if (window.document.documentMode) {\n try {\n const status = window.status;\n\n window.status = 'testIntranetMode';\n\n if (window.status === 'testIntranetMode') {\n window.status = status;\n\n return true;\n }\n\n return false;\n\n } catch (err) {\n\n return false;\n }\n }\n\n return false;\n}\n\nexport function isMacOsCna() : boolean {\n const userAgent = getUserAgent();\n return (/Macintosh.*AppleWebKit(?!.*Safari)/i).test(userAgent);\n}\n\nexport function supportsPopups(ua? : string = getUserAgent()) : boolean {\n return !(isIosWebview(ua) || isAndroidWebview(ua) || isOperaMini(ua) ||\n isFirefoxIOS(ua) || isEdgeIOS(ua) || isFacebookWebView(ua) || isQQBrowser(ua) || isElectron() || isMacOsCna() || isStandAlone());\n}\n","/* @flow */\n\nimport { info } from 'beaver-logger/client';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport type { CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { LANG_TO_DEFAULT_COUNTRY, LOCALE } from '../constants';\nimport type { LocaleType } from '../types';\nimport { config } from '../config';\n\nimport { memoize } from './util';\nimport { isDevice } from './device';\n\nfunction isDocumentReady() : boolean {\n return Boolean(document.body) && document.readyState === 'complete';\n}\n\nexport const documentReady : ZalgoPromise = new ZalgoPromise(resolve => {\n\n if (isDocumentReady()) {\n return resolve();\n }\n\n const interval = setInterval(() => {\n if (isDocumentReady()) {\n clearInterval(interval);\n return resolve();\n }\n }, 10);\n});\n\nexport const documentBody : ZalgoPromise = documentReady.then(() => {\n if (document.body) {\n return document.body;\n }\n\n throw new Error('Document ready but document.body not present');\n});\n\n\nexport function loadScript(src : string, timeout : number = 0, attrs : Object = {}) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n const script = document.createElement('script');\n\n script.addEventListener('load', () => {\n resolve();\n });\n\n // For Internet explorer 8 support\n script.onreadystatechange = function scriptOnReadyStateChange() {\n if (this.readyState === 'complete' || this.readyState === 'loaded') {\n resolve();\n }\n };\n\n const scriptLoadError = new Error('script_loading_error');\n\n script.addEventListener('error', () => {\n return reject(scriptLoadError);\n });\n\n if (timeout) {\n setTimeout(() => {\n return reject(new Error('script_loading_timed_out'));\n }, timeout);\n }\n\n for (const attr of Object.keys(attrs)) {\n script.setAttribute(attr, attrs[attr]);\n }\n\n script.setAttribute('src', src);\n\n const head = document.getElementsByTagName('head')[0];\n\n head.appendChild(script);\n });\n}\n\n\nexport function isNodeList(nodes : mixed) : boolean {\n\n const result = Object.prototype.toString.call(nodes);\n\n if (result === '[object HTMLCollection]' || result === '[object NodeList]') {\n return true;\n }\n\n return false;\n}\n\nexport function isElement(item : mixed) : boolean {\n return item instanceof HTMLElement;\n}\n\nexport function getElement(item : mixed) : ?HTMLElement {\n\n if (!item) {\n return;\n }\n\n if (item instanceof HTMLElement) {\n return item;\n }\n\n if (typeof item === 'string') {\n\n if (document.querySelector) {\n const result = document.querySelector(item);\n\n if (result) {\n return result;\n }\n }\n\n return document.getElementById(item);\n }\n}\n\nexport function getElements(collection : $ReadOnlyArray | NodeList | HTMLCollection | HTMLElement | string) : $ReadOnlyArray {\n\n if (!collection) {\n return [];\n }\n\n if (collection instanceof HTMLElement || typeof collection === 'string') {\n const element = getElement(collection);\n if (element) {\n return [ element ];\n }\n return [];\n }\n\n if (Array.isArray(collection) || collection instanceof NodeList || collection instanceof HTMLCollection) {\n const result = [];\n\n for (let i = 0; i < collection.length; i++) {\n const el = getElement(collection[i]);\n if (el) {\n result.push(el);\n }\n }\n\n return result;\n }\n\n return [];\n}\n\nexport function onDocumentReady(method : () => void) : ZalgoPromise {\n return documentReady.then(method);\n}\n\nexport const parseQuery = memoize((queryString : string) : Object => {\n\n const params = {};\n\n if (!queryString) {\n return params;\n }\n\n if (queryString.indexOf('=') === -1) {\n return params;\n }\n\n for (let pair of queryString.split('&')) {\n pair = pair.split('=');\n\n if (pair[0] && pair[1]) {\n params[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n }\n\n return params;\n});\n\n\nexport function getQueryParam(name : string) : string {\n return parseQuery(window.location.search.slice(1))[name];\n}\n\nexport function urlWillRedirectPage(url : string) : boolean {\n\n if (url.indexOf('#') === -1) {\n return true;\n }\n\n if (url.indexOf('#') === 0) {\n return false;\n }\n\n if (url.split('#')[0] === window.location.href.split('#')[0]) {\n return false;\n }\n\n return true;\n}\n\nexport function extendUrl(url : string, params : { [key : string] : string } = {}) : string {\n\n const hasHash = url.indexOf('#') > 0;\n\n let [ serverUrl, hash ] = url.split('#');\n\n if (hash && !serverUrl) {\n [ serverUrl, hash ] = [ `#${ hash }`, '' ];\n }\n\n const [ originalUrl, originalQueryString ] = serverUrl.split('?');\n\n if (originalQueryString) {\n const originalQuery = parseQuery(originalQueryString);\n\n for (const key in originalQuery) {\n if (!params.hasOwnProperty(key)) {\n params[key] = originalQuery[key];\n }\n }\n }\n\n const newQueryString = Object.keys(params).filter(key => key && params[key]).sort().map(key => {\n return `${ encodeURIComponent(key) }=${ encodeURIComponent(params[key]) }`;\n }).join('&');\n\n let newUrl = originalUrl;\n\n if (newQueryString) {\n newUrl = `${ newUrl }?${ newQueryString }`;\n }\n\n if (hasHash) {\n newUrl = `${ newUrl }#${ hash || '' }`;\n }\n\n return newUrl;\n}\n\nexport function redirect(win : CrossDomainWindowType = window, url : string) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n\n info(`redirect`, { url });\n\n setTimeout(() => {\n win.location = url;\n if (!urlWillRedirectPage(url)) {\n resolve();\n }\n }, 1);\n });\n}\n\nexport function hasMetaViewPort() : boolean {\n const meta = document.querySelector('meta[name=viewport]');\n\n if (isDevice() && window.screen.width < 660 && !meta) {\n return false;\n }\n\n return true;\n}\n\nexport function getBrowserLocales() : $ReadOnlyArray {\n const nav = window.navigator;\n\n const locales = nav.languages\n ? Array.prototype.slice.apply(nav.languages)\n : [];\n\n if (nav.language) {\n locales.push(nav.language);\n }\n\n if (nav.userLanguage) {\n locales.push(nav.userLanguage);\n }\n\n return locales;\n}\n\nexport function normalizeLocale(locale : string) : ?LocaleType {\n\n if (locale && locale.match(/^[a-z]{2}[-_][A-Z]{2}$/)) {\n const [ lang, country ] = locale.split(/[-_]/);\n if (LOCALE[country] && LOCALE[country].indexOf(lang) !== -1) {\n return { country, lang };\n }\n }\n}\n\nexport function normalizeLang(lang : string) : ?LocaleType {\n\n if (lang && lang.match(/^[a-z]{2}$/)) {\n if (LANG_TO_DEFAULT_COUNTRY[lang]) {\n return { country: LANG_TO_DEFAULT_COUNTRY[lang], lang };\n }\n }\n}\n\nexport const getBrowserLocale = memoize(() : LocaleType => {\n\n const locales = getBrowserLocales();\n\n for (const locale of locales) {\n let loc = normalizeLocale(locale);\n if (loc) {\n info('better_browser_locale_full');\n return loc;\n }\n\n loc = normalizeLang(locale);\n if (loc) {\n info('better_browser_locale_lang');\n return loc;\n }\n }\n\n return config.defaultLocale;\n});\n\nexport function isElementVisible(el : HTMLElement) : boolean {\n return Boolean(el.offsetWidth || el.offsetHeight || el.getClientRects().length);\n}\n\nexport const enablePerformance = memoize(() : boolean => {\n /* eslint-disable compat/compat */\n return Boolean(\n window.performance &&\n performance.now &&\n performance.timing &&\n performance.timing.connectEnd &&\n performance.timing.navigationStart &&\n (Math.abs(performance.now() - Date.now()) > 1000) &&\n (performance.now() - (performance.timing.connectEnd - performance.timing.navigationStart)) > 0\n );\n /* eslint-enable compat/compat */\n});\n\nexport function getPageRenderTime() : ZalgoPromise {\n return documentReady.then(() => {\n\n if (!enablePerformance()) {\n return;\n }\n\n const timing = window.performance.timing; // eslint-disable-line compat/compat\n\n if (timing.connectEnd && timing.domInteractive) {\n return timing.domInteractive - timing.connectEnd;\n }\n });\n}\n\nexport function getResourceLoadTime(url : string) : ?number {\n\n if (!enablePerformance()) {\n return;\n }\n\n if (!window.performance || typeof window.performance.getEntries !== 'function') { // eslint-disable-line compat/compat\n return;\n }\n\n const entries = window.performance.getEntries(); // eslint-disable-line compat/compat\n\n for (let i = 0; i < entries.length; i++) {\n const entry = entries[i];\n\n if (entry && entry.name === url && entry.duration && entry.duration >= 0 && entry.duration <= 60000) {\n return Math.floor(entry.duration);\n }\n }\n}\n\nexport function htmlEncode(html : string = '') : string {\n return html.toString()\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(/\\//g, '/');\n}\n","/* @flow */\n\nimport { getParent, isSameDomain } from 'cross-domain-utils/src';\n\nimport { config } from '../config';\n\nimport { supportsPopups } from './device';\n\nexport function allowIframe() : boolean {\n\n if (!supportsPopups()) {\n return true;\n }\n\n const parentWindow = getParent(window);\n if (parentWindow && isSameDomain(parentWindow)) {\n return true;\n }\n\n const parentComponentWindow = window.xchild && window.xchild.getParentComponentWindow();\n if (parentComponentWindow && isSameDomain(parentComponentWindow)) {\n return true;\n }\n\n if (__TEST__) {\n return true;\n }\n\n return false;\n}\n\n\nexport function isPayPalDomain() : boolean {\n return Boolean(`${ window.location.protocol }//${ window.location.host }`.match(config.paypal_domain_regex)) || window.mockDomain === 'mock://www.paypal.com';\n}\n","/* @flow */\n\nimport { config } from '../config';\n\nimport { uniqueID, isLocalStorageEnabled } from './util';\nimport { getQueryParam } from './dom';\nimport { isPayPalDomain } from './security';\n\nconst LOCAL_STORAGE_KEY = '__paypal_storage__';\nconst SESSION_KEY = '__paypal_session__';\nconst GLOBAL_KEY = '__paypal_global__';\n\nlet accessedStorage;\n\nexport function getStorageState(handler : (storage : Object) => T) : T {\n\n const localStorageEnabled = isLocalStorageEnabled();\n let storage;\n\n if (accessedStorage) {\n storage = accessedStorage;\n }\n\n if (!storage && localStorageEnabled) {\n const rawStorage = window.localStorage.getItem(LOCAL_STORAGE_KEY);\n\n if (rawStorage) {\n storage = JSON.parse(rawStorage);\n }\n }\n\n if (!storage) {\n storage = window[LOCAL_STORAGE_KEY];\n }\n\n if (!storage) {\n storage = {\n id: uniqueID()\n };\n }\n\n if (!storage.id) {\n storage.id = uniqueID();\n }\n\n accessedStorage = storage;\n\n const result = handler(storage);\n\n if (localStorageEnabled) {\n window.localStorage.setItem(LOCAL_STORAGE_KEY, JSON.stringify(storage));\n } else {\n window[LOCAL_STORAGE_KEY] = storage;\n }\n\n accessedStorage = null;\n\n return result;\n}\n\nexport function getStorageID() : string {\n return getStorageState(storage => storage.id);\n}\n\nexport function getSession(handler : (state : Object) => T) : T {\n return getStorageState(storage => {\n\n let session = storage[SESSION_KEY];\n const now = Date.now();\n\n if (session && ((now - session.created) > config.session_uid_lifetime)) {\n session = null;\n }\n\n if (!session) {\n session = {\n guid: uniqueID(),\n created: now\n };\n }\n\n storage[SESSION_KEY] = session;\n\n return handler(session);\n });\n}\n\nexport function getSessionState(handler : (state : Object) => T) : T {\n return getSession(session => {\n session.state = session.state || {};\n return handler(session.state);\n });\n}\n\nexport function getSessionID() : string {\n\n const xprops = window.xprops;\n\n if (xprops && xprops.sessionID) {\n return xprops.sessionID;\n }\n\n const querySessionID = getQueryParam('sessionID');\n\n if (isPayPalDomain() && querySessionID) {\n return querySessionID;\n }\n\n return getSession(session => session.guid);\n}\n\nexport function getButtonSessionID() : ?string {\n\n if (window.xprops && window.xprops.buttonSessionID) {\n return window.xprops.buttonSessionID;\n }\n\n const querySessionID = getQueryParam('buttonSessionID');\n\n if (isPayPalDomain() && querySessionID) {\n return querySessionID;\n }\n}\n\nexport function getGlobalState(handler : (state : Object) => T) : T {\n window[GLOBAL_KEY] = window[GLOBAL_KEY] || {};\n return handler(window[GLOBAL_KEY]);\n}\n","/* @flow */\n\nimport { on, send } from 'post-robot/src';\nimport { isWindowClosed, getDomain, isSameDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { config } from '../config';\n\nimport { noop } from './util';\n\nexport function proxyMethod(name : string, win : ?CrossDomainWindowType, originalMethod : Function) : Function {\n\n if (win && getDomain() === config.paypalDomain && !isSameDomain(win)) {\n\n if (win) {\n send(win, `proxy_${ name }`, { originalMethod }).catch(noop);\n }\n\n return originalMethod;\n }\n\n let methods = [];\n\n on(`proxy_${ name }`, { domain: config.paypal_domain_regex }, ({ data }) => {\n methods.push(data.originalMethod);\n });\n\n return function postMessageProxy() : mixed {\n\n methods = methods.filter(method => !isWindowClosed(method.source));\n\n if (methods.length) {\n return methods[methods.length - 1].apply(this, arguments).catch(() => {\n return originalMethod.apply(this, arguments);\n });\n }\n\n return originalMethod.apply(this, arguments);\n };\n}\n","/* @flow */\n\nimport { CONFIG as POSTROBOT_CONFIG } from 'post-robot/src';\nimport { setTransport, getTransport, addPayloadBuilder, addHeaderBuilder, addMetaBuilder,\n addTrackingBuilder, init, logLevels, config as loggerConfig } from 'beaver-logger/client';\nimport { getParent, PROTOCOL } from 'cross-domain-utils/src';\n\nimport { config } from '../config';\nimport { FPTI, PAYMENT_TYPE } from '../constants';\n\nimport { getSessionID, getButtonSessionID } from './session';\nimport { proxyMethod } from './proxy';\nimport { once } from './util';\nimport { getQueryParam } from './dom';\nimport { isPayPalDomain } from './security';\n\nfunction getRefererDomain() : string {\n return (window.xchild && window.xchild.getParentDomain)\n ? window.xchild.getParentDomain()\n : window.location.host;\n}\n\nconst setupProxyLogTransport = once(() => {\n setTransport(proxyMethod('log', getParent(window), getTransport()));\n});\n\nfunction getToken() : ?string {\n if (window.root && window.root.token) {\n return window.root.token;\n }\n\n if (isPayPalDomain()) {\n const queryToken = getQueryParam('token');\n\n if (queryToken) {\n return queryToken;\n }\n }\n}\n\nexport function initLogger() {\n\n setupProxyLogTransport();\n\n addPayloadBuilder(() => {\n return {\n referer: getRefererDomain(),\n host: window.location.host,\n path: window.location.pathname,\n env: config.env,\n country: config.locale.country,\n lang: config.locale.lang,\n uid: getSessionID(),\n ver: __PAYPAL_CHECKOUT__.__MINOR_VERSION__\n };\n });\n\n addHeaderBuilder(() => {\n return {\n 'x-app-name': 'checkoutjs'\n };\n });\n\n addMetaBuilder(() => {\n return {\n state: config.state\n };\n });\n\n addTrackingBuilder((payload = {}) => {\n\n const sessionID = getSessionID();\n const paymentToken = getToken();\n const buttonSessionID = payload[FPTI.KEY.BUTTON_SESSION_UID] || getButtonSessionID();\n\n let contextType;\n let contextID;\n\n if (paymentToken) {\n contextType = FPTI.CONTEXT_TYPE[PAYMENT_TYPE.EC_TOKEN];\n contextID = paymentToken;\n } else if (buttonSessionID) {\n contextType = FPTI.CONTEXT_TYPE.BUTTON_SESSION_ID;\n contextID = buttonSessionID;\n } else {\n contextType = payload[FPTI.KEY.CONTEXT_TYPE];\n contextID = payload[FPTI.KEY.CONTEXT_ID];\n }\n\n return {\n [ FPTI.KEY.FEED ]: FPTI.FEED.CHECKOUTJS,\n [ FPTI.KEY.DATA_SOURCE ]: FPTI.DATA_SOURCE.CHECKOUT,\n [ FPTI.KEY.CONTEXT_TYPE ]: contextType,\n [ FPTI.KEY.CONTEXT_ID ]: contextID,\n [ FPTI.KEY.SELLER_ID ]: config.merchantID,\n [ FPTI.KEY.SESSION_UID ]: sessionID,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: buttonSessionID,\n [ FPTI.KEY.VERSION ]: config.version,\n [ FPTI.KEY.TOKEN ]: paymentToken,\n [ FPTI.KEY.REFERER ]: getRefererDomain()\n };\n });\n\n const prefix = 'ppxo';\n\n if (window.location.protocol !== PROTOCOL.FILE) {\n init({\n uri: config.loggerUrl,\n heartbeat: false,\n logPerformance: false,\n prefix,\n logLevel: __PAYPAL_CHECKOUT__.__DEFAULT_LOG_LEVEL__\n });\n }\n}\n\nexport function setLogLevel(logLevel : string) {\n\n if (logLevels.indexOf(logLevel) === -1) {\n throw new Error(`Invalid logLevel: ${ logLevel }`);\n }\n\n config.logLevel = logLevel;\n loggerConfig.logLevel = logLevel;\n POSTROBOT_CONFIG.LOG_LEVEL = logLevel;\n window.LOG_LEVEL = logLevel;\n}\n","/* @flow */\n\nimport { info, flush as flushLogs } from 'beaver-logger/client';\n\nimport { config } from '../config';\n\nimport { isIEIntranet, getUserAgent } from './device';\nimport { once } from './util';\n\nconst bowserCache = {};\n\nfunction getBowser() : Object {\n\n const userAgent = getUserAgent();\n\n if (bowserCache[userAgent]) {\n return bowserCache[userAgent];\n }\n\n delete require.cache[require.resolve('bowser/bowser.min')];\n const bowser = require('bowser/bowser.min');\n\n bowserCache[userAgent] = bowser;\n\n return bowser;\n}\n\nexport function getBrowser() : { browser? : string, version? : string } {\n\n const bowser = getBowser();\n\n for (const browser of Object.keys(config.SUPPORTED_BROWSERS)) {\n if (bowser[browser]) {\n return { browser, version: bowser.version };\n }\n }\n\n return {};\n}\n\nfunction isBrowserEligible() : boolean {\n\n if (isIEIntranet()) {\n return false;\n }\n\n const bowser = getBowser();\n const { browser, version } = getBrowser();\n\n if (browser && version && bowser.compareVersions([ version, config.SUPPORTED_BROWSERS[browser] ]) === -1) {\n return false;\n }\n\n return true;\n}\n\nconst eligibilityResults = {};\n\nexport function isEligible() : boolean {\n\n if (isIEIntranet()) {\n return false;\n }\n\n const userAgent = window.navigator.userAgent;\n\n if (userAgent && eligibilityResults.hasOwnProperty(userAgent)) {\n return eligibilityResults[userAgent];\n }\n\n const result = isBrowserEligible();\n\n eligibilityResults[userAgent] = result;\n\n return result;\n}\n\nexport const checkRecognizedBrowser = once((state : string) => {\n\n const { browser } = getBrowser();\n\n if (!browser) {\n const { name, version, mobile, android, ios } = getBowser();\n info(`unrecognized_browser_${ state }`, { name, version, mobile, android, ios });\n flushLogs();\n }\n});\n","/* @flow */\n\nimport { warn } from 'beaver-logger/client';\n\nimport { isIE, isIEIntranet, isIECompHeader } from './device';\n\nfunction logWarn(err) : void {\n if (window.console) {\n if (window.console.warn) {\n return window.console.warn(err);\n }\n\n if (window.console.log) {\n return window.console.log(err);\n }\n }\n}\n\nexport function checkForCommonErrors() {\n\n if (JSON.stringify([]) !== '[]') {\n // $FlowFixMe\n if (Array.prototype.toJSON) {\n logWarn(`Custom Array.prototype.toJSON is causing incorrect json serialization of arrays. This is likely to cause issues. Probable cause is Prototype.js`);\n } else {\n logWarn(`JSON.stringify is doing incorrect serialization of arrays. This is likely to cause issues.`);\n }\n\n warn(`json_stringify_array_broken`);\n }\n\n if (JSON.stringify({}) !== '{}') {\n logWarn(`JSON.stringify is doing incorrect serialization of objects. This is likely to cause issues.`);\n\n warn(`json_stringify_object_broken`);\n }\n\n if (isIEIntranet()) {\n warn(`ie_intranet_mode`);\n }\n\n if (isIE() && !isIECompHeader()) {\n warn(`ie_meta_compatibility_header_missing`, {\n message: `Drop tag: ` });\n }\n\n // eslint-disable-next-line no-unused-vars\n function foo(bar, baz, zomg) {\n // pass;\n }\n\n if (foo.bind({ a: 1 }).length !== 3) {\n warn(`function_bind_arrity_overwritten`);\n }\n\n if (window.opener && window.parent !== window) {\n warn(`window_has_opener_and_parent`);\n }\n\n if (window.name && window.name.indexOf('__prerender') === 0) {\n warn(`prerender_running_checkoutjs`);\n }\n\n const context = {};\n\n function returnContext() : typeof context {\n return this;\n }\n\n if (returnContext.bind(context)() !== context) {\n warn(`function_bind_broken`);\n }\n\n if (window.Window && window.constructor && window.Window !== window.constructor) {\n warn(`window_constructor_does_not_match_window`);\n }\n\n // $FlowFixMe\n if (Object.assign && JSON.stringify({ a: 1, b: 2, c: 3 }) !== JSON.stringify({ a: 1, b: 2, c: 3 })) { // eslint-disable-line no-self-compare, compat/compat\n warn(`object_assign_broken`);\n }\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { addPayloadBuilder } from 'beaver-logger/client';\nimport { type SameDomainWindowType } from 'cross-domain-utils/src';\n\ntype RequestOptionsType = {|\n url : string,\n method? : string,\n headers? : { [key : string] : string },\n json? : Object,\n data? : { [key : string] : string },\n body? : string,\n win? : SameDomainWindowType,\n timeout? : number\n|};\n\nconst HEADERS = {\n CONTENT_TYPE: 'content-type',\n ACCEPT: 'accept'\n};\n\nconst headerBuilders = [];\nconst corrids = [];\n\naddPayloadBuilder(() => {\n return {\n prev_corr_ids: corrids.join(',')\n };\n});\n\nfunction parseHeaders(rawHeaders : string = '') : { [string] : string } {\n const result = {};\n for (const line of rawHeaders.trim().split('\\n')) {\n const [ key, ...values ] = line.split(':');\n result[key.toLowerCase()] = values.join(':').trim();\n }\n return result;\n}\n\nexport function request({ url, method = 'get', headers = {}, json, data, body, win = window, timeout = 0 } : RequestOptionsType) : ZalgoPromise {\n\n if (url === '/demo/checkout/api/braintree/client-token/') {\n // $FlowFixMe\n return ZalgoPromise.resolve('eyJ2ZXJzaW9uIjoyLCJhdXRob3JpemF0aW9uRmluZ2VycHJpbnQiOiJjMDFhZmRkM2Y1OTJmNWVhNTNlMzE5MWQwYmIyMWVjYjM5NzNlZGM1MzkwNDZiMjJmNTA2ODEyNzIzZmRlMTJifGNsaWVudF9pZD1jbGllbnRfaWQkc2FuZGJveCQ0ZHByYmZjNnBoNTk1Y2NqXHUwMDI2Y3JlYXRlZF9hdD0yMDE3LTA0LTI2VDIzOjI2OjU5Ljg3OTA3ODYwNiswMDAwXHUwMDI2bWVyY2hhbnRfaWQ9M3cydHR2d2QyNDY1NDhoZCIsImNvbmZpZ1VybCI6Imh0dHBzOi8vYXBpLnNhbmRib3guYnJhaW50cmVlZ2F0ZXdheS5jb206NDQzL21lcmNoYW50cy8zdzJ0dHZ3ZDI0NjU0OGhkL2NsaWVudF9hcGkvdjEvY29uZmlndXJhdGlvbiIsImNoYWxsZW5nZXMiOltdLCJlbnZpcm9ubWVudCI6InNhbmRib3giLCJjbGllbnRBcGlVcmwiOiJodHRwczovL2FwaS5zYW5kYm94LmJyYWludHJlZWdhdGV3YXkuY29tOjQ0My9tZXJjaGFudHMvM3cydHR2d2QyNDY1NDhoZC9jbGllbnRfYXBpIiwiYXNzZXRzVXJsIjoiaHR0cHM6Ly9hc3NldHMuYnJhaW50cmVlZ2F0ZXdheS5jb20iLCJhdXRoVXJsIjoiaHR0cHM6Ly9hdXRoLnZlbm1vLnNhbmRib3guYnJhaW50cmVlZ2F0ZXdheS5jb20iLCJhbmFseXRpY3MiOnsidXJsIjoiaHR0cHM6Ly9jbGllbnQtYW5hbHl0aWNzLnNhbmRib3guYnJhaW50cmVlZ2F0ZXdheS5jb20vM3cydHR2d2QyNDY1NDhoZCJ9LCJ0aHJlZURTZWN1cmVFbmFibGVkIjpmYWxzZSwicGF5cGFsRW5hYmxlZCI6dHJ1ZSwicGF5cGFsIjp7ImRpc3BsYXlOYW1lIjoiYmFyY28uMDMtZmFjaWxpdGF0b3JAZ21haWwuY29tIiwiY2xpZW50SWQiOiJBV3VZdnFnMGtaN2Y5S0V4TVpqZU53T3RjQV8yZVhnOWpMZy1QSnBGX0pnYk44M0YyVml5aEdnV2JCNDg4RGU3MFpucGRBZEI2TUNqekNqSyIsInByaXZhY3lVcmwiOiJodHRwczovL2V4YW1wbGUuY29tIiwidXNlckFncmVlbWVudFVybCI6Imh0dHBzOi8vZXhhbXBsZS5jb20iLCJiYXNlVXJsIjoiaHR0cHM6Ly9hc3NldHMuYnJhaW50cmVlZ2F0ZXdheS5jb20iLCJhc3NldHNVcmwiOiJodHRwczovL2NoZWNrb3V0LnBheXBhbC5jb20iLCJkaXJlY3RCYXNlVXJsIjpudWxsLCJhbGxvd0h0dHAiOnRydWUsImVudmlyb25tZW50Tm9OZXR3b3JrIjpmYWxzZSwiZW52aXJvbm1lbnQiOiJvZmZsaW5lIiwidW52ZXR0ZWRNZXJjaGFudCI6ZmFsc2UsImJyYWludHJlZUNsaWVudElkIjoibWFzdGVyY2xpZW50MyIsImJpbGxpbmdBZ3JlZW1lbnRzRW5hYmxlZCI6dHJ1ZSwibWVyY2hhbnRBY2NvdW50SWQiOiJVU0QiLCJjdXJyZW5jeUlzb0NvZGUiOiJVU0QifSwiY29pbmJhc2VFbmFibGVkIjpmYWxzZSwibWVyY2hhbnRJZCI6IjN3MnR0dndkMjQ2NTQ4aGQiLCJ2ZW5tbyI6Im9mZiJ9');\n }\n\n return new ZalgoPromise((resolve, reject) => {\n\n if ((json && data) || (json && body) || (data && json)) {\n throw new Error(`Only options.json or options.data or options.body should be passed`);\n }\n\n const normalizedHeaders = {};\n\n for (const key of Object.keys(headers)) {\n normalizedHeaders[key.toLowerCase()] = headers[key];\n }\n\n if (json) {\n normalizedHeaders[HEADERS.CONTENT_TYPE] = normalizedHeaders[HEADERS.CONTENT_TYPE] || 'application/json';\n } else if (data || body) {\n normalizedHeaders[HEADERS.CONTENT_TYPE] = normalizedHeaders[HEADERS.CONTENT_TYPE] || 'application/x-www-form-urlencoded; charset=utf-8';\n }\n\n normalizedHeaders[HEADERS.ACCEPT] = normalizedHeaders[HEADERS.ACCEPT] || 'application/json';\n\n for (const headerBuilder of headerBuilders) {\n const builtHeaders = headerBuilder();\n\n for (const key of Object.keys(builtHeaders)) {\n normalizedHeaders[key.toLowerCase()] = builtHeaders[key];\n }\n }\n\n const xhr = new win.XMLHttpRequest();\n\n xhr.addEventListener('load', function xhrLoad() : void {\n\n const responseHeaders = parseHeaders(this.getAllResponseHeaders());\n const corrID = responseHeaders['paypal-debug-id'] || 'unknown';\n\n if (responseHeaders['paypal-debug-id']) {\n corrids.push(responseHeaders['paypal-debug-id']);\n }\n\n if (!this.status) {\n return reject(new Error(`Request to ${ method.toLowerCase() } ${ url } failed: no response status code. Correlation id: ${ corrID }`));\n }\n \n const contentType = responseHeaders['content-type'];\n const isJSON = contentType && (contentType.indexOf('application/json') === 0 || contentType.indexOf('text/json') === 0);\n let res = this.responseText;\n\n try {\n res = JSON.parse(this.responseText);\n } catch (err) {\n if (isJSON) {\n return reject(new Error(`Invalid json: ${ this.responseText }. Correlation id: ${ corrID }`));\n }\n }\n\n if (this.status >= 400) {\n let message = `Request to ${ method.toLowerCase() } ${ url } failed with ${ this.status } error. Correlation id: ${ corrID }`;\n\n if (res) {\n if (typeof res === 'object' && res !== null) {\n res = JSON.stringify(res, null, 4);\n }\n\n message = `${ message }\\n\\n${ res }\\n`;\n }\n\n return reject(new Error(message));\n }\n\n return resolve(res);\n\n }, false);\n\n xhr.addEventListener('error', function xhrError(evt) {\n const corrID = this.getResponseHeader('paypal-debug-id');\n reject(new Error(`Request to ${ method.toLowerCase() } ${ url } failed: ${ evt.toString() }. Correlation id: ${ corrID }`));\n }, false);\n\n xhr.open(method, url, true);\n\n for (const key in normalizedHeaders) {\n if (normalizedHeaders.hasOwnProperty(key)) {\n xhr.setRequestHeader(key, normalizedHeaders[key]);\n }\n }\n\n if (json) {\n body = JSON.stringify(json);\n } else if (data) {\n body = Object.keys(data).map(key => {\n return `${ encodeURIComponent(key) }=${ data ? encodeURIComponent(data[key]) : '' }`;\n }).join('&');\n }\n\n xhr.timeout = timeout;\n xhr.ontimeout = function xhrTimeout() {\n reject(new Error(`Request to ${ method.toLowerCase() } ${ url } has timed out`));\n };\n\n xhr.send(body);\n });\n}\n\nrequest.get = (url : string, options = {}) => {\n return request({ method: 'get', url, ...options });\n};\n\nrequest.post = (url : string, data, options = {}) => {\n return request({ method: 'post', url, data, ...options });\n};\n\nrequest.addHeaderBuilder = (method) => {\n headerBuilders.push(method);\n};\n","/* @flow */\n\nimport { config } from '../config';\nimport { LOG_LEVEL } from '../constants';\n\nimport { getSessionID, getSessionState } from './session';\n\nconst BEACON_URL = config.loggerUrl;\nconst APP_NAME = 'checkoutjs';\n\nexport function beacon(event : string, payload : Object = {}) {\n try {\n\n payload.event = `ppxo_${ event }`;\n payload.version = __PAYPAL_CHECKOUT__.__MINOR_VERSION__;\n payload.host = window.location.host;\n payload.uid = getSessionID();\n payload.appName = APP_NAME;\n\n let query = [];\n\n for (const key in payload) {\n if (payload.hasOwnProperty(key)) {\n query.push(`${ encodeURIComponent(key) }=${ encodeURIComponent(payload[key]) }`);\n }\n }\n\n query = query.join('&');\n\n if (!__TEST__) {\n const beaconImage = new window.Image();\n beaconImage.src = `${ BEACON_URL }?${ query }`;\n }\n\n setTimeout(() => {\n if (config.logLevel === LOG_LEVEL.DEBUG) {\n if (window.console && window.console.log) {\n window.console.log('*', event, payload);\n }\n }\n }, 1);\n\n } catch (err) {\n // pass\n }\n}\n\nfunction isCheckpointUnique(name : string) : boolean {\n return getSessionState(state => {\n state.loggedBeacons = state.loggedBeacons || [];\n\n if (state.loggedBeacons.indexOf(name) === -1) {\n state.loggedBeacons.push(name);\n return true;\n }\n\n return false;\n });\n}\n\nexport function checkpoint(name : string, payload : Object = {}, options : Object = {}) : void {\n try {\n let checkpointName = name;\n\n if (options.version) {\n const version = __PAYPAL_CHECKOUT__.__MINOR_VERSION__.replace(/[^0-9]+/g, '_');\n checkpointName = `${ version }_${ checkpointName }`;\n }\n\n if (!isCheckpointUnique(checkpointName)) {\n return;\n }\n\n return beacon(checkpointName, payload);\n\n } catch (err) {\n\n // pass\n }\n}\n\n\nconst FPTI_URL = 'https://t.paypal.com/ts';\n\nfunction buildPayload() : Object {\n return {\n v: `checkout.js.${ __PAYPAL_CHECKOUT__.__MINOR_VERSION__ }`,\n t: Date.now(),\n g: new Date().getTimezoneOffset(),\n flnm: 'ec:hermes:',\n shir: 'main_ec_hermes_',\n pgrp: 'main:ec:hermes::incontext-merchant',\n page: 'main:ec:hermes::incontext-merchant',\n vers: 'member:hermes:',\n qual: 'incontext',\n tmpl: 'merchant:incontext'\n };\n}\n\nexport function fpti(payload : Object = {}) {\n\n let query = [];\n\n payload = { ...buildPayload(), ...payload };\n\n for (const key in payload) {\n if (payload.hasOwnProperty(key)) {\n query.push(`${ encodeURIComponent(key) }=${ encodeURIComponent(payload[key]) }`);\n }\n }\n\n query = query.join('&');\n\n try {\n const beaconImage = new window.Image();\n beaconImage.src = `${ FPTI_URL }?${ query }`;\n } catch (err) {\n // pass\n }\n}\n","/* @flow */\n\nimport { info, track, flush as flushLogs } from 'beaver-logger/client';\n\nimport { FPTI } from '../constants';\n\nimport { match } from './util';\nimport { getStorageState, getStorageID } from './session';\n\ntype Throttle = {|\n isEnabled : () => boolean,\n isDisabled : () => boolean,\n getTreatment : () => string,\n log : (string, payload? : { [string] : ?string }) => Throttle,\n logStart : (payload? : { [string] : ?string }) => Throttle,\n logComplete : (payload? : { [string] : ?string }) => Throttle\n|};\n\nfunction getThrottlePercentile(name : string) : number {\n return getStorageState(storage => {\n storage.throttlePercentiles = storage.throttlePercentiles || {};\n storage.throttlePercentiles[name] = storage.throttlePercentiles[name] || Math.floor(Math.random() * 100);\n return storage.throttlePercentiles[name];\n });\n}\n\nconst THROTTLE_GROUP = {\n TEST: 'test',\n CONTROL: 'control',\n THROTTLE: 'throttle'\n};\n\nexport function getThrottle(name : string, sample : number, sticky : boolean = true) : Throttle {\n\n const uid = getStorageID();\n\n const percentile = sticky ? getThrottlePercentile(name) : Math.floor(Math.random() * 100);\n\n let group;\n\n if (percentile < sample) {\n group = THROTTLE_GROUP.TEST;\n } else if ((sample >= 50) || ((sample <= percentile) && (percentile < (sample * 2)))) {\n group = THROTTLE_GROUP.CONTROL;\n } else {\n group = THROTTLE_GROUP.THROTTLE;\n }\n\n const treatment = `${ name }_${ group }`;\n\n let started = false;\n let forced = false;\n\n try {\n if (window.localStorage && window.localStorage.getItem(name)) {\n forced = true;\n }\n } catch (err) {\n // pass\n }\n\n return {\n\n isEnabled() : boolean {\n return (group === THROTTLE_GROUP.TEST) || forced;\n },\n\n isDisabled() : boolean {\n return (group !== THROTTLE_GROUP.TEST) && !forced;\n },\n\n getTreatment() : string {\n return treatment;\n },\n\n log(checkpointName : string, payload? : { [string] : ?string } = {}) : Throttle {\n if (!started) {\n return this;\n }\n\n const checkpoint = `${ name }_${ treatment }_${ checkpointName }`;\n info(checkpoint, { ...payload, expuid: uid });\n\n track({\n [ FPTI.KEY.EXPERIMENT_NAME ]: name,\n [ FPTI.KEY.TREATMENT_NAME ]: treatment,\n ...payload\n });\n\n flushLogs();\n return this;\n },\n\n logStart(payload? : { [string] : ?string } = {}) : Throttle {\n started = true;\n return this.log(`start`, payload);\n },\n\n logComplete(payload? : { [string] : ?string } = {}) : Throttle {\n if (!started) {\n return this;\n }\n\n return this.log(`complete`, payload);\n }\n };\n}\n\nexport function getReturnToken() : ?string {\n\n const token = match(window.location.href, /token=((EC-)?[A-Z0-9]+)/);\n const payer = match(window.location.href, /PayerID=([A-Z0-9]+)/);\n\n if (token && payer) {\n return token;\n }\n}\n","/* @flow */\n\nexport function extendNamespace(xports : Object, namespaces : $ReadOnlyArray = [], childnamespaces : $ReadOnlyArray = []) : Object {\n\n for (const name of namespaces) {\n const namespace = window[name];\n\n if (!namespace) {\n continue;\n }\n\n for (const childname of childnamespaces) {\n let childnamespace = xports[childname];\n\n if (namespace[childname]) {\n childnamespace = { ...namespace[childname], ...childnamespace };\n }\n\n xports = { ...namespace, ...xports, [ childname ]: childnamespace };\n }\n }\n\n for (const name of namespaces) {\n window[name] = xports;\n }\n\n return xports;\n}\n","/* @flow */\n\nimport { debug } from 'beaver-logger/client';\nimport { getDomain } from 'cross-domain-utils/src';\n\nimport { config } from '../config';\n\nimport { memoize, domainMatches } from './util';\n\nexport const getCurrentScript = memoize(() : ?HTMLScriptElement => {\n\n const scripts = Array.prototype.slice.call(document.getElementsByTagName('script'));\n\n for (const script of scripts) {\n if (script.src && (script.src.replace(/^https?:/, '').split('?')[0] === config.scriptUrl || script.hasAttribute('data-paypal-checkout'))) {\n return script;\n }\n\n if (script.src && (script.src.indexOf('paypal.checkout.v4.js') !== -1)) {\n return script;\n }\n }\n\n if (document.currentScript) { // eslint-disable-line compat/compat\n debug(`current_script_not_recognized`, { src: document.currentScript.src }); // eslint-disable-line compat/compat\n }\n});\n\nexport function isPayPalObjects() : boolean {\n return Boolean(getCurrentScript());\n}\n\nexport function getScriptVersion() : string {\n if (__PAYPAL_CHECKOUT__.__MAJOR__ && isPayPalObjects()) {\n return __MIN__ ? 'min' : __PAYPAL_CHECKOUT__.__MAJOR_VERSION__;\n } else {\n return __MIN__ ? `${ __PAYPAL_CHECKOUT__.__MINOR_VERSION__ }.min` : __PAYPAL_CHECKOUT__.__MINOR_VERSION__;\n }\n}\n\nexport function getCurrentScriptUrl() : string {\n const script = getCurrentScript();\n\n if (script && typeof script.src === 'string') {\n let scriptUrl = script.src;\n\n if (scriptUrl.indexOf('http://www.paypalobjects.com') === 0) {\n scriptUrl = scriptUrl.replace('http://', 'https://');\n }\n\n return scriptUrl;\n }\n\n return `https://www.paypalobjects.com/api/checkout.${ __PAYPAL_CHECKOUT__.__MINOR_VERSION__ }${ __MIN__ ? '.min' : '' }.js`;\n}\n\nexport function getDomainSetting(name : string, def : ?T) : ?T {\n\n const hostname = window.xchild\n ? window.xchild.getParentDomain()\n : getDomain();\n\n if (config.domain_settings) {\n for (const domain of Object.keys(config.domain_settings)) {\n if (domainMatches(hostname, domain)) {\n return config.domain_settings[domain][name];\n }\n }\n }\n\n return def;\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { once, bridge } from 'post-robot/src';\n\nimport { config } from '../config';\n\nimport { isIEIntranet } from './device';\nimport { memoize } from './util';\nimport { getScriptVersion } from './script';\nimport { extendUrl } from './dom';\n\ntype FrameMetaData = {|\n iframeEligible : boolean,\n iframeEligibleReason : string,\n // eslint-disable-next-line flowtype/no-mutable-array\n rememberedFunding : Array\n|};\n\nexport const openMetaFrame = memoize((env : string = config.env) : ZalgoPromise => {\n return ZalgoPromise.try(() => {\n\n if (isIEIntranet()) {\n return {\n iframeEligible: false,\n iframeEligibleReason: 'ie_intranet',\n rememberedFunding: []\n };\n }\n\n const metaFrameUrl : string = config.metaFrameUrls[env];\n const metaFrameDomain : string = config.paypalDomains[env];\n\n return ZalgoPromise.try(() => {\n if (!bridge) {\n throw new Error(`Opening meta window without bridge support is not currently supported`);\n }\n\n const metaListener = once('meta', { domain: metaFrameDomain });\n\n return bridge.openBridge(extendUrl(metaFrameUrl, { version: getScriptVersion() }), metaFrameDomain)\n .then(() => metaListener)\n .then(({ data }) => data);\n });\n });\n});\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { FUNDING } from '../constants';\nimport type { FundingSource, FundingList } from '../types';\n\nimport { getStorageState, getGlobalState, getSessionState } from './session';\nimport { isDevice } from './device';\nimport { openMetaFrame } from './meta';\nimport { identity } from './util';\n\n// $FlowFixMe\nexport function getRememberedFunding(handler? : (rememberedFunding : FundingList) => T = identity) : T {\n return getStorageState(storage => {\n storage.rememberedFunding = storage.rememberedFunding || [];\n return handler(storage.rememberedFunding);\n });\n}\n\nfunction hasRememberedFunding(source : FundingSource) : ?boolean {\n\n if (getRememberedFunding(rememberedFunding => rememberedFunding.indexOf(source) !== -1)) {\n return true;\n }\n\n if (getSessionState(session => session.recentlyCheckedRemembered)) {\n return true;\n }\n\n return false;\n}\n\n\nfunction isRememberedFunding(source : FundingSource) : boolean {\n\n if (getRememberedFunding(rememberedFunding => rememberedFunding.indexOf(source) !== -1)) {\n return true;\n }\n\n if (getSessionState(session => session.recentlyCheckedRemembered)) {\n return false;\n }\n\n throw new Error(`Can not find remembered funding result`);\n}\n\nfunction getRememberedFundingPromises() : { [FundingSource] : ZalgoPromise } {\n return getGlobalState(global => {\n global.rememberFundingPromises = global.rememberFundingPromises || {};\n return global.rememberFundingPromises;\n });\n}\n\nfunction getRememberedFundingPromise(source : FundingSource) : ZalgoPromise {\n const promises = getRememberedFundingPromises();\n const promise = promises[source] = promises[source] || new ZalgoPromise();\n if (hasRememberedFunding(source)) {\n promise.resolve(isRememberedFunding(source));\n }\n return promise;\n}\n\nfunction flushRememberedFundingPromises() {\n const promises = getRememberedFundingPromises();\n const rememberedFunding = getRememberedFunding(sources => sources);\n\n for (const source of Object.keys(promises)) {\n promises[source].resolve(rememberedFunding.indexOf(source) !== -1);\n }\n}\n\nexport function rememberFunding(sources : FundingList) {\n getRememberedFunding(rememberedFunding => {\n for (const source of sources) {\n\n if (source === FUNDING.VENMO && !isDevice()) {\n continue;\n }\n if (rememberedFunding.indexOf(source) === -1) {\n rememberedFunding.push(source);\n }\n }\n\n flushRememberedFundingPromises();\n });\n\n getSessionState(session => {\n session.recentlyCheckedRemembered = true;\n });\n}\n\nfunction loadMeta() : ZalgoPromise {\n return openMetaFrame().then(({ rememberedFunding }) => {\n rememberFunding(rememberedFunding || []);\n });\n}\n\nexport function isFundingRemembered(source : FundingSource = FUNDING.PAYPAL) : ZalgoPromise {\n\n if (hasRememberedFunding(source)) {\n return getRememberedFundingPromise(source);\n }\n\n return loadMeta().then(() => {\n return getRememberedFundingPromise(source);\n });\n}\n\nexport function precacheRememberedFunding() : ZalgoPromise {\n if (!getSessionState(session => session.recentlyCheckedRemembered)) {\n return loadMeta();\n }\n return ZalgoPromise.resolve();\n}\n","/* @flow */\n\nexport * from './device';\nexport * from './util';\nexport * from './logger';\nexport * from './eligibility';\nexport * from './errors';\nexport * from './dom';\nexport * from './http';\nexport * from './beacon';\nexport * from './throttle';\nexport * from './namespace';\nexport * from './session';\nexport * from './proxy';\nexport * from './meta';\nexport * from './funding';\nexport * from './script';\nexport * from './jsx';\nexport * from './security';\n","/* @flow weak */\n/* eslint max-lines: 0 */\n\nimport { ENV, COUNTRY, LANG, LOCALE } from '../constants';\n\nfunction getDefaultEnv() : $Values {\n if (__TEST__) {\n return ENV.TEST;\n }\n\n if (typeof window === 'undefined' || typeof window.location === 'undefined') {\n return ENV.PRODUCTION;\n }\n\n if (window.location.host.indexOf('localhost.paypal.com') !== -1) {\n return ENV.LOCAL;\n }\n\n if (window.location.host.indexOf('qa.paypal.com') !== -1) {\n return ENV.STAGE;\n }\n\n if (window.location.host.indexOf('sandbox.paypal.com') !== -1) {\n return ENV.SANDBOX;\n }\n\n return ENV.PRODUCTION;\n}\n\nexport const config = {\n\n locales: LOCALE,\n\n scriptUrl: __TEST__\n ? `//${ window.location.host }/base/src/load.js`\n : `//www.paypalobjects.com/api/${ __FILE_NAME__ }`,\n\n // eslint-disable-next-line security/detect-unsafe-regex, unicorn/no-unsafe-regex\n paypal_domain_regex: /^(https?|mock):\\/\\/[a-zA-Z0-9_.-]+\\.paypal\\.com(:\\d+)?$/,\n\n version: __PAYPAL_CHECKOUT__.__MINOR_VERSION__,\n\n cors: true,\n\n env: getDefaultEnv(),\n\n state: 'checkoutjs',\n\n locale: {\n country: COUNTRY.US,\n lang: LANG.EN\n },\n\n stage: 'msmaster',\n stageDomain: 'qa.paypal.com',\n\n get stageUrl() : string {\n return `${ config.stage }.${ config.stageDomain }`;\n },\n\n get apiStageUrl() : string {\n return `${ config.apiStage }.${ config.stageDomain }`;\n },\n\n get localhostUrl() : string {\n return `http://localhost.paypal.com:${ config.ports.default }`;\n },\n\n set localhostUrl(val) {\n delete this.localhostUrl;\n this.localhostUrl = val;\n },\n\n merchantID: '',\n authCode: '',\n\n logLevel: __PAYPAL_CHECKOUT__.__DEFAULT_LOG_LEVEL__,\n\n throttles: {\n v4_mobile_device: 0\n },\n\n domain_settings: {\n 'walmart.com': {\n ie_full_page: false,\n allow_full_page_fallback: true,\n memoize_payment: true,\n force_bridge: true,\n log_authorize: true\n },\n\n 'ulta.com': {\n disable_venmo: true\n },\n\n 'barnesandnoble.com': {\n disable_venmo: true\n },\n\n 'bn.com': {\n disable_venmo: true\n },\n\n 'agoratix.com': {\n disable_venmo: true\n },\n\n 'tractorsupply.com': {\n disable_venmo: true\n },\n\n 'etsy.com': {\n ie_full_page: false,\n allow_full_page_fallback: true,\n memoize_payment: true,\n force_bridge: true,\n log_authorize: true\n },\n\n 'ticketmaster.com': {\n disable_venmo: true\n },\n\n 'livenation.com': {\n disable_venmo: true\n },\n\n 'frontgatetickets.com': {\n disable_venmo: true\n },\n\n 'williams-sonoma.com': {\n disable_venmo: true\n },\n\n 'westelm.com': {\n disable_venmo: true\n },\n\n 'markandgraham.com': {\n disable_venmo: true\n },\n\n 'potterybarn.com': {\n disable_venmo: true\n },\n\n 'potterybarnkids.com': {\n disable_venmo: true\n },\n\n 'pbteen.com': {\n disable_venmo: true\n },\n\n 'beallsflorida.com': {\n disable_venmo: true\n },\n\n 'therealreal.com': {\n disable_venmo: true\n },\n\n 'liveaquaria.com': {\n disable_venmo: true\n },\n\n 'drsfostersmith.com': {\n disable_venmo: true\n },\n\n 'boxed.com': {\n disable_venmo: true\n },\n\n 'bevisible.com': {\n disable_venmo: true\n },\n\n 'moeller.org': {\n disable_venmo: true\n },\n\n 'searshometownstores.com': {\n disable_venmo: true\n },\n\n 'searshardwarestores.com': {\n disable_venmo: true\n },\n\n 'searshomeapplianceshowroom.com': {\n disable_venmo: true\n },\n\n 'barkshop.com': {\n disable_venmo: true\n },\n\n 'vividseats.com': {\n disable_venmo: true\n },\n\n 'getcargo.today': {\n disable_venmo: true\n },\n\n 'smartdestinations.com': {\n disable_venmo: true\n },\n\n 'philadelphiapass.com': {\n disable_venmo: true\n },\n\n 'thesydneypass.com': {\n disable_venmo: true\n },\n\n '3secondlash.com': {\n disable_venmo: true\n },\n\n 'newyorkpass.com': {\n disable_venmo: true\n },\n\n 'dndbeyond.com': {\n disable_venmo: true\n },\n\n 'app.zapbuy.it': {\n disable_venmo: true\n },\n\n 'gamersaloon.com': {\n disable_venmo: true\n },\n\n '1800contacts.com': {\n disable_venmo: true\n },\n\n 'shopchatters.ca': {\n disable_venmo: true\n },\n\n 'shopguyswin.ca': {\n disable_venmo: true\n },\n\n 'jjill.com': {\n disable_venmo: true\n },\n\n 'qvc.com': {\n disable_venmo: true\n },\n\n 'stelladot.com': {\n disable_venmo: true\n },\n\n 'keepcollective.com': {\n disable_venmo: true\n },\n\n 'everskin.com': {\n disable_venmo: true\n },\n\n 'zulily.com': {\n disable_venmo: true\n },\n\n 'freshly.com': {\n disable_venmo: true\n },\n\n 'buypeticare.com': {\n disable_venmo: true\n },\n\n 'getownzone.com': {\n disable_venmo: true\n },\n\n 'uncommongoods.com': {\n disable_venmo: true\n },\n\n 'onegold.com': {\n disable_venmo: true\n },\n\n 'universitytees.com': {\n disable_venmo: true\n },\n\n 'revolve.com': {\n disable_venmo: true\n },\n\n 'functionofbeauty.com': {\n disable_venmo: true\n },\n\n 'givebutter.com': {\n disable_venmo: true\n },\n\n 'hausmart.com': {\n disable_venmo: true\n },\n\n 'derbyjackpot.com': {\n disable_venmo: true\n },\n\n 'ancestry.com': {\n disable_venmo: true\n },\n\n 'boats.net': {\n disable_venmo: true\n },\n\n 'partzilla.com': {\n disable_venmo: true\n },\n\n 'firedog.com': {\n disable_venmo: true\n },\n\n 'chick-fil-a.com': {\n disable_venmo: true\n },\n\n 'roku.com': {\n disable_venmo: true\n },\n\n 'barkbox.com': {\n disable_venmo: true\n },\n\n 'neimanmarcus.com': {\n disable_venmo: true\n },\n\n 'lastcall.com': {\n disable_venmo: true\n },\n\n 'horchow.com': {\n disable_venmo: true\n },\n\n 'bergdorfgoodman.com': {\n disable_venmo: true\n },\n\n 'fwrd.com': {\n disable_venmo: true\n },\n\n 'plunderdesign.com': {\n disable_venmo: true\n },\n\n 'stitchfix.com': {\n disable_venmo: true\n },\n\n 'revzilla.com': {\n disable_venmo: true\n },\n\n 'cyclegear.com': {\n disable_venmo: true\n },\n\n 'chegg.com': {\n disable_venmo: true\n },\n\n 'youniqueproducts.com': {\n disable_venmo: true\n },\n\n 'archives.com': {\n disable_venmo: true\n },\n\n 'hautelook.com': {\n disable_venmo: true\n },\n\n 'nordstromrack.com': {\n disable_venmo: true\n },\n\n 'motherhoodcanada.ca': {\n disable_venmo: true\n },\n\n 'atomtickets.com': {\n disable_venmo: true\n },\n\n 'trademore.com': {\n disable_venmo: true\n },\n\n 'lasheaseoffer.com': {\n disable_venmo: true\n },\n\n 'rookie.paypalsixthman.com': {\n disable_venmo: true\n },\n\n '1800Contacts.com': {\n disable_venmo: true\n },\n\n 'hulu.com': {\n disable_venmo: true\n },\n\n 'grubhub.com': {\n disable_venmo: true\n },\n\n 'eat24.com': {\n disable_venmo: true\n },\n\n 'seamless.com': {\n disable_venmo: true\n },\n\n 'freshfeetscrubber.com': {\n disable_venmo: true\n },\n\n 'opensky.com': {\n disable_venmo: true\n },\n\n 'dotandbo.com': {\n disable_venmo: true\n },\n\n 'storenvy.com': {\n disable_venmo: true\n },\n\n 'gemafina.com': {\n disable_venmo: true\n },\n\n 'pickperfect.com': {\n disable_venmo: true\n },\n\n '55mulberry.com': {\n disable_venmo: true\n },\n \n 'hollar.com': {\n disable_venmo: true\n },\n\n 'bjs.com': {\n disable_venmo: true\n },\n\n 'playsugarhouse.com': {\n disable_venmo: true\n },\n\n 'lakeshorelearning.com': {\n disable_venmo: true\n },\n\n 'llmhq.com': {\n disable_venmo: true\n },\n\n 'gainful.com': {\n disable_venmo: true\n },\n\n 'modaoperandi.com': {\n disable_venmo: true\n },\n \n 'play.jackpocket.com': {\n disable_venmo: true\n },\n\n 'crepeerase.com': {\n disable_venmo: true\n },\n\n 'specificbeauty.com': {\n disable_venmo: true\n },\n\n 'meaningfulbeauty.com': {\n disable_venmo: true\n },\n\n 'smileactives.com ': {\n disable_venmo: true\n },\n\n 'mally.com': {\n disable_venmo: true\n },\n\n 'westmorebeauty.com': {\n disable_venmo: true\n },\n\n 'subd.com': {\n disable_venmo: true\n },\n\n 'seacalmskin.com': {\n disable_venmo: true\n },\n \n 'whittier.edu': {\n disable_venmo: true\n },\n \n 'curology.com': {\n disable_venmo: true\n },\n \n 'monoprice.com': {\n disable_venmo: true\n },\n \n 'dominos.com': {\n disable_venmo: true\n },\n \n 'audiobooks.com': {\n disable_venmo: true\n },\n \n '1aauto.com': {\n disable_venmo: true\n },\n\n 'greatwolf.com': {\n disable_venmo: true\n },\n\n 'cvs.com': {\n disable_venmo: true\n },\n\n 'gilt.com': {\n disable_venmo: true\n },\n\n 'ruelala.com': {\n disable_venmo: true\n }\n },\n\n creditTestDomains: [ 'bluesuncorp.co.uk', 'nationsphotolab.com', 'plexusworldwide.com', 'nshss.org', 'bissell.com', 'mobstub.com', 'vuoriclothing.com', 'tape4backup.com', 'avivamiento.com', 'rhododendron.org', 'whiterabbitjapan.com', 'atsracing.net', 'thehilltopgallery.com', 'weedtraqr.com', 'worldpantry.com', 'ciraconnect.com', 'mymalls.com', 'prowinch.com', 'zodiacpoolsystems.com', 'everlywell.com', 'candlewarmers.com', 'chop.edu', 'incruises.com', 'flikn.com', 'didforsale.com', 'mcc.org', 'sygu.net', 'merchbar.com', 'eduinconline.com', 'us.livebetterwith.com', 'bakemeawish.com', 'judolaunch.com', 'eventcartel.com', 'tapatalk.com', 'telescope.com', 'covenant.edu', 'aquatruwater.com', 'spingo.com', 'usu.edu', 'getcelerity.com', 'brandless.com', 'saberigniter.com', 'euromodeltrains.com', 'gofasttrader.com', 'megamodzplanet.com', 'draftanalyzer.com', 'lovewithoutboundaries.com', 'filterpop.com', 'seekverify.com', 'photoandgo.com', 'sightseeingpass.com', 'bigoanddukes.com', 'thethirstyduck.com', 'thebrushguys.com', '907delivery.com', 'mauisails.com', 'drive.net', 'channelmax.net', 'modernrebelco.com', 'enchanteddiamonds.com', 'ibabbleon.com', 'fullgenomes.com', 'conn-comp.com', 'wingware.com', 'paradigmgoods.com', 'theneptunegroup.com', 'kidzartworks.com', 'unirealm.com', 'ncfarmsinc.com', 'oneofakindantiques.com', 'servers4less.com', 'stumpthespread.com', 'marketwagon.com', 'monsterhouseplans.com', 'canterburychoral.org', 'teacupnordic.org', 'thethirstyduck.com', 'medialoot.com', 'theartistunion.com', 'yourglamourzone.com', 'breckstables.com', 'mackephotography.com', 'dsaj.org', 'massluminosity.com', 'tespa.org', 'versatilearts.net', 'yecup.org', 'divinebusinessmanagement.com', 'captivatebeautyservices.com', 'class4me.com', 'wcsonlineuniversity.com', 'pvplive.com', 'kyneteks.com', 'rare-paper.com', 'bpg.bpgsim.biz', 'geodegallery.com', 'way.com', 'kringle.com', 'talentedmrsalas.ph', 'litcharts.com', 'purpletreephotography.com', 'apache.org', 'neopackage.com', 'globaldance.tv', 'integral.studio', 'airdoctorpro.com', 'ivoryandiron.com', 'yuengling.com', 'averysbranchfarms.com', 'amberreinink.com', 'skinnymechocolate.com', 'bmbl.net', 'ncwatercolor.net', 'astrograph.com', 'localadventures.mx', 'ripcurl.com', 'worldfootbrakechallenge.com', 'shespeakssales.com', 'obrienguitars.com', 'jadenikkolephoto.com', 'americavoice.com', 'cassiexie.com', 'aamastateconvention.org', 'rellesflorist.com', 'passionnobby.com', 'bodybyheidi.com', 'roqos.com', 'prijector.com', 'maryswanson.net', 'tsghobbies.com', 'erinlaytonphotography.com', 'darter.org', 'fountainpenhospital.com', 'myzestfullife.com', 'pcog.org', 'alisabethdesigns.com', 'katiemathisphoto.com', 'strictlybellaphotography.com', 'maptools.com', 'sites.google.com', 'gallerr.com', 'southfloridatrikke.com', 'caviar.tv', 'mintingmasters.com', 'prospectorsguild.com', 'inktale.com', 'prettygirlgoods.com', 'laceycahill.com', 'daniellenowak.com', 't212.org', 'scmsinc.com', 'babypaloozanc.com', 'tetrisonline.com', 'grdd.net', 'cdspg.info', 'airshipapparel.com', 'waft.com', 'extendpets.com', 'supplyhub.com', 'hlbsusa.com', 'jaderollerbeauty.com', 'theparentingjunkie.com', 'schagringas.com', 'yourscribemate.com', 'sportscollectibles.com', 'thedivinenoise.com', 'hometeamsonline.com', 'trademarkpress.com', 'destinationenglish.us', 'jacquesflowers.com', 'aliszhatchphotography.com', 'rusticfoundry.com', 'ahhhmassage.net', 'frezzor.com', 'mandelininc.com', 'kayleejackson.com', 'monkinstitute.org', 'eddiebsbbq.com', 'morningstarmediaservices.com', 'kinevative.com', 'orivet.com', 'digitalprinthouse.net', 'dynamicgenius.com', 'allpartsusa.com', 'flowersbydavid.net', 'nwvoices.org', 'leaptrade.com', 'tulsaschoolpics.com', 'alioth.io', 'windowflair.com', 'vitcom.net', 'simplybeautifulfashions.com', 'christinabenton.com', 'fromthedaughter.com', 'hometowngraphics.net', 'fibanalysis.com', 'creativejobscentral.com', 'sandbox.gg', 'jt-digitalmedia.com', 'kodable.com', 'birthingstone.com', 'taranicholephoto.com', 'hillyfieldsflorist.com', 'charitynoelphoto.com', 'auxdelicesfoods.com', 'terilynnphotography.com', 'folieadeuxevents.com', 'karensfloral.com', 'montgomerydiveclub.com', 'rainbowplastics.com', 'confettionthedancefloor.com', 'vomozmedia.com', 'neatmod.com', 'getnaturafled.com', 'callingpost.com', 'iamfamily.org', 'pedigreeonline.com', 'typeboost.io', 'in-n-outpetdoor.com', 'nerdstockgc.com', 'keiadmin.com', 'createdbykaui.com', 'aikophoto.com', 'lonestar.ink', 'stlfurs.com', 'treasurelistings.com', 'thecubicle.us', 'redclaypaper.com', 'blushhousemedia.com', 'documentsanddesigns.com', 'whitneyleighphotography.shootproof.com', 'amaryllisday.com', 'hermanproav.com', 'felicemedia.com', 'withloveplacenta.com', 'store.brgadgets.co', 'klowephoto.com', 'spenceraustinconsulting.com', 'sno-eagles.org', 'dsatallahassee.org', 'bakupages.com', 'neswc.com', 'josiebrooksphotography.com', 'brisksale.com', 'legalwhoosh.com', 'jasmineeaster.com', 'swatstudios.com', 'facebook.com', 'shakershell.com', 'alexiswinslow.com', 'mixeddimensions.com', 'sweetpproductions.com', 'lbeaphotography.com', 'otlseatfillers.com', 'jdtickets.com', 'catholicar.com', 'masque.com', 'smalltownstudio.net', 'goherbalife.com', 'itzyourz.com', 'magazinespeedloader.com', 'dreammachines.io', 'dallasdieteticalliance.org', 'http:', 'medair.org', 'unbridledambition.com', 'sarasprints.com', 'wiperecord.com', 'showmyrabbit.com', 'cctrendsshop.com', 'rachelalessandra.com', 'otherworld-apothecary.com', 'melissaannphoto.com', 'girlceo.co', 'seasidemexico.com', 'telosid.com', 'instin.com', 'marinecorpsmustang.org', 'lancityconnect.com', 'hps1.org', 'karenware.com', 'livecurriculum.com', 'spellingstars.com', 'vektorfootball.com', 'zaltv.com', 'nebraskamayflower.org', 'ethiopianspices.com', 'immitranslate.com', 'rafaelmagic.com.com', 'bahc1.org', 'newenamel.com', 'bhchp.org', 'buybulkamerica.com', 'sourcepoint.com', 'squarestripsports.com', 'wix.com', 'wilderootsphotography.com', 'goodsalt.com', 'systemongrid.com', 'designmil.org', 'freshtrendhq.com', 'valisimofashions.com', 'buyneatly.com', 'getbeauty.us', 'intellimidia.com' ],\n \n customCountry: false,\n\n SUPPORTED_BROWSERS: {\n msie: '11',\n firefox: '30',\n chrome: '27',\n safari: '7',\n opera: '16',\n msedge: '12',\n samsungBrowser: '2.1',\n silk: '59.3',\n ucbrowser: '10.0.0.488',\n vivaldi: '1.91'\n },\n\n session_uid_lifetime: 5 * 60 * 1000,\n\n _apiStage: '',\n\n get apiStage() : string {\n return config._apiStage || config.stage;\n },\n\n set apiStage(value) {\n config._apiStage = value;\n },\n\n ports: {\n default: 8000,\n button: 8000,\n checkout: 8000,\n guest: 8001,\n altpay: 3000\n },\n\n get paypalUrls() : Object {\n return {\n [ ENV.LOCAL ]: config.localhostUrl,\n [ ENV.STAGE ]: `https://www.${ config.stageUrl }`,\n [ ENV.SANDBOX ]: `https://www.sandbox.paypal.com`,\n [ ENV.PRODUCTION ]: `https://www.paypal.com`,\n [ ENV.TEST ]: `${ window.location.protocol }//${ window.location.host }`,\n [ ENV.DEMO ]: `${ window.location.protocol }//localhost.paypal.com:${ window.location.port }`\n };\n },\n\n get paypalDomains() : Object {\n return {\n [ ENV.LOCAL ]: 'http://localhost.paypal.com:8000',\n [ ENV.STAGE ]: `https://www.${ config.stageUrl }`,\n [ ENV.SANDBOX ]: `https://www.sandbox.paypal.com`,\n [ ENV.PRODUCTION ]: `https://www.paypal.com`,\n [ ENV.TEST ]: `mock://www.paypal.com`,\n [ ENV.DEMO ]: `${ window.location.protocol }//localhost.paypal.com:${ window.location.port }`\n };\n },\n\n get wwwApiUrls() : Object {\n return {\n [ ENV.LOCAL ]: `https://www.${ config.stageUrl }`,\n [ ENV.STAGE ]: `https://www.${ config.stageUrl }`,\n [ ENV.SANDBOX ]: `https://www.sandbox.paypal.com`,\n [ ENV.PRODUCTION ]: `https://www.paypal.com`,\n [ ENV.TEST ]: `${ window.location.protocol }//${ window.location.host }`\n };\n },\n\n get corsApiUrls() : Object {\n return {\n [ ENV.LOCAL ]: `https://${ config.apiStageUrl }:12326`,\n [ ENV.STAGE ]: `https://${ config.apiStageUrl }:12326`,\n [ ENV.SANDBOX ]: `https://cors.api.sandbox.paypal.com`,\n [ ENV.PRODUCTION ]: `https://cors.api.paypal.com`,\n [ ENV.TEST ]: `${ window.location.protocol }//${ window.location.host }`\n };\n },\n\n get apiUrls() : Object {\n\n const domain = `${ window.location.protocol }//${ window.location.host }`;\n const corsApiUrls = config.corsApiUrls;\n const wwwApiUrls = config.wwwApiUrls;\n\n return {\n [ ENV.LOCAL ]: domain === wwwApiUrls.local ? wwwApiUrls.local : corsApiUrls.local,\n [ ENV.STAGE ]: domain === wwwApiUrls.stage ? wwwApiUrls.stage : corsApiUrls.stage,\n [ ENV.SANDBOX ]: domain === wwwApiUrls.sandbox ? wwwApiUrls.sandbox : corsApiUrls.sandbox,\n [ ENV.PRODUCTION ]: domain === wwwApiUrls.production ? wwwApiUrls.production : corsApiUrls.production,\n [ ENV.TEST ]: domain === wwwApiUrls.test ? wwwApiUrls.test : corsApiUrls.test\n };\n },\n\n get checkoutUri() : ?string {\n return null;\n },\n\n set checkoutUri(val) {\n delete this.checkoutUri;\n this.checkoutUri = val;\n },\n\n get checkoutUris() : Object {\n if (config.checkoutUri) {\n return {\n [ ENV.LOCAL ]: config.checkoutUri,\n [ ENV.STAGE ]: config.checkoutUri,\n [ ENV.SANDBOX ]: config.checkoutUri,\n [ ENV.PRODUCTION ]: config.checkoutUri,\n [ ENV.TEST ]: config.checkoutUri,\n [ ENV.DEMO ]: config.checkoutUri\n };\n }\n\n return {\n [ ENV.LOCAL ]: `/webapps/hermes`,\n [ ENV.STAGE ]: `/webapps/hermes`,\n [ ENV.SANDBOX ]: `/checkoutnow`,\n [ ENV.PRODUCTION ]: `/checkoutnow`,\n [ ENV.TEST ]: `/base/test/windows/checkout/index.htm?checkouturl=true`,\n [ ENV.DEMO ]: `/demo/dev/checkout.htm`\n };\n },\n\n altpayUris: {\n [ ENV.LOCAL ]: `/latinumcheckout`,\n [ ENV.STAGE ]: `/latinumcheckout`,\n [ ENV.SANDBOX ]: `/latinumcheckout`,\n [ ENV.PRODUCTION ]: `/latinumcheckout`,\n [ ENV.TEST ]: `/base/test/windows/checkout/index.htm?checkouturl=true`,\n [ ENV.DEMO ]: `/demo/dev/checkout.htm`\n },\n\n guestUris: {\n [ ENV.LOCAL ]: `/webapps/xoonboarding`,\n [ ENV.STAGE ]: `/webapps/xoonboarding`,\n [ ENV.SANDBOX ]: `/webapps/xoonboarding`,\n [ ENV.PRODUCTION ]: `/webapps/xoonboarding`,\n [ ENV.TEST ]: `/base/test/windows/checkout/index.htm?guesturl=true`,\n [ ENV.DEMO ]: `/demo/dev/guest.htm`\n },\n\n billingUris: {\n [ ENV.LOCAL ]: `/webapps/hermes/agreements`,\n [ ENV.STAGE ]: `/webapps/hermes/agreements`,\n [ ENV.SANDBOX ]: `/agreements/approve`,\n [ ENV.PRODUCTION ]: `/agreements/approve`,\n [ ENV.TEST ]: `/base/test/windows/checkout/index.htm?billingurl=true`,\n [ ENV.DEMO ]: `/demo/dev/checkout.htm`\n },\n\n buttonUris: {\n [ ENV.LOCAL ]: `/smart/button`,\n [ ENV.STAGE ]: `/smart/button`,\n [ ENV.SANDBOX ]: `/smart/button`,\n [ ENV.PRODUCTION ]: `/smart/button`,\n [ ENV.TEST ]: `/base/test/windows/button/index.htm`,\n [ ENV.DEMO ]: `/demo/dev/button.htm`\n },\n\n inlinedCardFieldUris: {\n [ ENV.LOCAL ]: `/smart/card-fields`,\n [ ENV.STAGE ]: `/smart/card-fields`,\n [ ENV.SANDBOX ]: `/smart/card-fields`,\n [ ENV.PRODUCTION ]: `/smart/card-fields`,\n [ ENV.TEST ]: `/base/test/windows/card-fields/index.htm`,\n [ ENV.DEMO ]: `/demo/dev/card.htm`\n },\n\n postBridgeUris: {\n [ ENV.LOCAL ]: `/webapps/hermes/component-meta`,\n [ ENV.STAGE ]: `/webapps/hermes/component-meta`,\n [ ENV.SANDBOX ]: `/webapps/hermes/component-meta`,\n [ ENV.PRODUCTION ]: `/webapps/hermes/component-meta`,\n [ ENV.TEST ]: `/base/test/windows/component-meta/index.htm`,\n [ ENV.DEMO ]: `/demo/dev/bridge.htm`\n },\n\n legacyCheckoutUris: {\n [ ENV.LOCAL ]: `/cgi-bin/webscr?cmd=_express-checkout&xo_node_fallback=true`,\n [ ENV.STAGE ]: `/cgi-bin/webscr?cmd=_express-checkout&xo_node_fallback=true`,\n [ ENV.SANDBOX ]: `/cgi-bin/webscr?cmd=_express-checkout&xo_node_fallback=true`,\n [ ENV.PRODUCTION ]: `/cgi-bin/webscr?cmd=_express-checkout&xo_node_fallback=true`,\n [ ENV.TEST ]: `#fallback`\n },\n\n buttonJSUrls: {\n [ ENV.LOCAL ]: `https://www.paypalobjects.com/api/button.js`,\n [ ENV.STAGE ]: `https://www.paypalobjects.com/api/button.js`,\n [ ENV.SANDBOX ]: `https://www.paypalobjects.com/api/button.js`,\n [ ENV.PRODUCTION ]: `https://www.paypalobjects.com/api/button.js`,\n [ ENV.TEST ]: `/base/test/lib/button.js`,\n [ ENV.DEMO ]: `https://www.paypalobjects.com/api/button.js`\n },\n\n get buttonJSUrl() : string {\n return config.buttonJSUrls[config.env];\n },\n\n loginUri: `/signin/`,\n\n hermesLoggerUri: `/webapps/hermes/api/logger`,\n\n loggerUri: `/xoplatform/logger/api/logger`,\n\n loggerThrottlePercentage: 1.0, // 100%\n\n pptmUri: `/tagmanager/pptm.js`,\n\n get postBridgeUri() : string {\n return `${ config.postBridgeUris[config.env] }?xcomponent=1`;\n },\n\n paymentStandardUri: `/webapps/xorouter?cmd=_s-xclick`,\n\n authApiUri: `/v1/oauth2/token`,\n paymentApiUri: `/v1/payments/payment`,\n orderApiUri: `/v2/checkout/orders`,\n billingApiUri: `/v1/billing-agreements/agreement-tokens`,\n experienceApiUri: `/v1/payment-experience/web-profiles`,\n trackingApiUri: `/v1/risk/transaction-contexts`,\n\n get checkoutUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local }${ config.checkoutUris.local.replace(`:${ config.ports.default }`, `:${ config.ports.checkout }`) }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.checkoutUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.checkoutUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.checkoutUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.checkoutUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.test }${ config.checkoutUris.demo }`\n };\n },\n\n get guestUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local.replace(`:${ config.ports.default }`, `:${ config.ports.guest }`) }${ config.guestUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.guestUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.guestUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.guestUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.guestUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.test }${ config.guestUris.demo }`\n };\n },\n\n get altpayUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local.replace(`:${ config.ports.default }`, `:${ config.ports.altpay }`) }${ config.altpayUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.altpayUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.altpayUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.altpayUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.altpayUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.test }${ config.altpayUris.demo }`\n };\n },\n\n get billingUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local.replace(`:${ config.ports.default }`, `:${ config.ports.checkout }`) }${ config.billingUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.billingUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.billingUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.billingUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.billingUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.test }${ config.billingUris.demo }`\n };\n },\n\n get buttonUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local.replace(`:${ config.ports.default }`, `:${ config.ports.button }`) }${ config.buttonUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.buttonUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.buttonUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.buttonUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.buttonUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.demo }${ config.buttonUris.demo }`\n };\n },\n\n get inlinedCardFieldUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local.replace(`:${ config.ports.default }`, `:${ config.ports.button }`) }${ config.inlinedCardFieldUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.inlinedCardFieldUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.inlinedCardFieldUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.inlinedCardFieldUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.inlinedCardFieldUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.demo }${ config.inlinedCardFieldUris.demo }`\n };\n },\n\n get loginUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.stage }${ config.loginUri }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.loginUri }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.loginUri }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.loginUri }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.loginUri }`\n };\n },\n\n get paymentsStandardUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local }${ config.paymentStandardUri }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.paymentStandardUri }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.paymentStandardUri }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.paymentStandardUri }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.paymentStandardUri }`\n };\n },\n\n get metaFrameUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local }${ config.postBridgeUri }&env=local`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.postBridgeUri }&env=stage&stage=${ config.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.postBridgeUri }&env=sandbox`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.postBridgeUri }&env=production`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.postBridgeUri }&env=test`,\n [ ENV.DEMO ]: `${ paypalUrls.demo }${ config.postBridgeUri }&env=demo`\n };\n },\n\n get legacyCheckoutUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.stage }${ config.legacyCheckoutUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.legacyCheckoutUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.legacyCheckoutUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.legacyCheckoutUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.legacyCheckoutUris.test }`\n };\n },\n\n get authApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const authApiUri = config.authApiUri;\n\n return {\n [ ENV.LOCAL ]: `${ apiUrls.local }${ authApiUri }`,\n [ ENV.STAGE ]: `${ apiUrls.stage }${ authApiUri }`,\n [ ENV.SANDBOX ]: `${ apiUrls.sandbox }${ authApiUri }`,\n [ ENV.PRODUCTION ]: `${ apiUrls.production }${ authApiUri }`,\n [ ENV.TEST ]: `${ apiUrls.test }${ authApiUri }`\n };\n },\n\n get paymentApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const paymentApiUri = config.paymentApiUri;\n\n return {\n [ ENV.LOCAL ]: `${ apiUrls.local }${ paymentApiUri }`,\n [ ENV.STAGE ]: `${ apiUrls.stage }${ paymentApiUri }`,\n [ ENV.SANDBOX ]: `${ apiUrls.sandbox }${ paymentApiUri }`,\n [ ENV.PRODUCTION ]: `${ apiUrls.production }${ paymentApiUri }`,\n [ ENV.TEST ]: `${ apiUrls.test }${ paymentApiUri }`\n };\n },\n\n get orderApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const orderApiUri = config.orderApiUri;\n\n return {\n [ENV.LOCAL]: `${ apiUrls.local }${ orderApiUri }`,\n [ENV.STAGE]: `${ apiUrls.stage }${ orderApiUri }`,\n [ENV.SANDBOX]: `${ apiUrls.sandbox }${ orderApiUri }`,\n [ENV.PRODUCTION]: `${ apiUrls.production }${ orderApiUri }`,\n [ENV.TEST]: `${ apiUrls.test }${ orderApiUri }`\n };\n },\n\n get billingApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const billingApiUri = config.billingApiUri;\n\n return {\n [ ENV.LOCAL ]: `${ apiUrls.local }${ billingApiUri }`,\n [ ENV.STAGE ]: `${ apiUrls.stage }${ billingApiUri }`,\n [ ENV.SANDBOX ]: `${ apiUrls.sandbox }${ billingApiUri }`,\n [ ENV.PRODUCTION ]: `${ apiUrls.production }${ billingApiUri }`,\n [ ENV.TEST ]: `${ apiUrls.test }${ billingApiUri }`\n };\n },\n\n get experienceApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const experienceApiUri = config.experienceApiUri;\n\n return {\n [ ENV.LOCAL ]: `${ apiUrls.local }${ experienceApiUri }`,\n [ ENV.STAGE ]: `${ apiUrls.stage }${ experienceApiUri }`,\n [ ENV.SANDBOX ]: `${ apiUrls.sandbox }${ experienceApiUri }`,\n [ ENV.PRODUCTION ]: `${ apiUrls.production }${ experienceApiUri }`,\n [ ENV.TEST ]: `${ apiUrls.test }${ experienceApiUri }`\n };\n },\n\n get trackingApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const trackingApiUri = config.trackingApiUri;\n\n return {\n [ ENV.LOCAL ]: `${ apiUrls.local }${ trackingApiUri }`,\n [ ENV.STAGE ]: `${ apiUrls.stage }${ trackingApiUri }`,\n [ ENV.SANDBOX ]: `${ apiUrls.sandbox }${ trackingApiUri }`,\n [ ENV.PRODUCTION ]: `${ apiUrls.production }${ trackingApiUri }`,\n [ ENV.TEST ]: `${ apiUrls.test }${ trackingApiUri }`\n };\n },\n\n _paypalUrl: '',\n\n get paypalUrl() : string {\n return this._paypalUrl || config.paypalUrls[config.env];\n },\n\n set paypalUrl(value) {\n this._paypalUrl = value;\n },\n\n get paypalDomain() : string {\n return config.paypalDomains[config.env];\n },\n\n get corsApiUrl() : string {\n return config.corsApiUrls[config.env];\n },\n\n get wwwApiUrl() : string {\n return config.wwwApiUrls[config.env];\n },\n\n get apiUrl() : string {\n\n const domain = `${ window.location.protocol }//${ window.location.host }`;\n const corsApiUrl = config.corsApiUrl;\n const wwwApiUrl = config.wwwApiUrl;\n\n return domain === wwwApiUrl ? wwwApiUrl : corsApiUrl;\n },\n\n get checkoutUrl() : string {\n return `${ config.paypalUrl }${ config.checkoutUris[config.env] }`;\n },\n\n get billingUrl() : string {\n return `${ config.paypalUrl }${ config.billingUris[config.env] }`;\n },\n\n get buttonUrl() : string {\n return `${ config.paypalUrl }${ config.buttonUris[config.env] }`;\n },\n\n get legacyCheckoutUrl() : string {\n return config.legacyCheckoutUrls[config.env];\n },\n\n get postBridgeUrl() : string {\n return `${ config.paypalUrl }${ config.postBridgeUri }`;\n },\n\n get postBridgeDomain() : string {\n return `${ config.paypalDomain }`;\n },\n\n get loggerUrl() : string {\n const isTestExperiment = Math.random() < config.loggerThrottlePercentage;\n const loggerUrl = isTestExperiment ? config.loggerUri : config.hermesLoggerUri;\n\n return `${ config.paypalUrl }${ loggerUrl }`;\n },\n\n get pptmUrl() : string {\n return `${ config.paypalUrls[config.env] }${ config.pptmUri }`;\n },\n\n get authApiUrl() : string {\n return `${ config.apiUrl }${ config.authApiUri }`;\n },\n\n get paymentApiUrl() : string {\n return `${ config.apiUrl }${ config.paymentApiUri }`;\n },\n\n get orderApiUrl() : string {\n return `${ config.apiUrl }${ config.orderApiUri }`;\n },\n\n get billingApiUrl() : string {\n return `${ config.apiUrl }${ config.billingApiUri }`;\n },\n\n get experienceApiUrl() : string {\n return `${ config.apiUrl }${ config.experienceApiUri }`;\n },\n\n defaultLocale: {\n country: COUNTRY.US,\n lang: LANG.EN\n }\n};\n","/* @flow */\n\nexport * from './config';\n","\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nexport function extend(dest, src, over=true) {\n dest = dest || {};\n src = src || {};\n\n for (let i in src) {\n if (src.hasOwnProperty(i)) {\n if (over || !dest.hasOwnProperty(i)) {\n dest[i] = src[i];\n }\n }\n }\n\n return dest;\n}\n\nexport function isSameProtocol(url) {\n return window.location.protocol === url.split('/')[0];\n}\n\nexport function isSameDomain(url) {\n let match = url.match(/https?:\\/\\/[^/]+/);\n\n if (!match) {\n return true;\n }\n\n return match[0] === `${window.location.protocol}//${window.location.host}`;\n}\n\nexport function ajax(method, url, headers={}, data={}, { fireAndForget = false } = {}) {\n\n return new ZalgoPromise(resolve => {\n let XRequest = window.XMLHttpRequest || window.ActiveXObject;\n\n if (window.XDomainRequest && !isSameDomain(url)) {\n\n if (!isSameProtocol(url)) {\n return resolve();\n }\n\n XRequest = window.XDomainRequest;\n }\n\n let req = new XRequest('MSXML2.XMLHTTP.3.0');\n req.open(method.toUpperCase(), url, true);\n\n if (typeof req.setRequestHeader === 'function') {\n req.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n req.setRequestHeader('Content-type', 'application/json');\n\n for (let headerName in headers) {\n if (headers.hasOwnProperty(headerName)) {\n req.setRequestHeader(headerName, headers[headerName]);\n }\n }\n }\n\n if (fireAndForget) {\n resolve();\n } else {\n req.onreadystatechange = () => {\n if (req.readyState > 3) {\n resolve();\n }\n };\n }\n\n req.send(JSON.stringify(data).replace(/&/g, '%26'));\n });\n}\n\nexport function promiseDebounce(method, interval) {\n\n let debounce = {};\n\n return function() {\n let args = arguments;\n\n if (debounce.timeout) {\n clearTimeout(debounce.timeout);\n delete debounce.timeout;\n }\n\n debounce.timeout = setTimeout(() => {\n\n let resolver = debounce.resolver;\n let rejector = debounce.rejector;\n\n delete debounce.promise;\n delete debounce.resolver;\n delete debounce.rejector;\n delete debounce.timeout;\n\n return ZalgoPromise.resolve().then(() => {\n return method.apply(null, args);\n }).then(resolver, rejector);\n\n }, interval);\n\n debounce.promise = debounce.promise || new ZalgoPromise((resolver, rejector) => {\n debounce.resolver = resolver;\n debounce.rejector = rejector;\n });\n\n return debounce.promise;\n };\n}\n\nexport function onWindowReady() : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n if (typeof document !== 'undefined' && document.readyState === 'complete') {\n resolve();\n }\n\n window.addEventListener('load', resolve);\n });\n}\n\nexport function safeInterval(method, time) {\n\n let timeout;\n\n function loop() {\n timeout = setTimeout(() => {\n method();\n loop();\n }, time);\n }\n\n loop();\n\n return {\n cancel() {\n clearTimeout(timeout);\n }\n };\n}\n\nexport function uniqueID() {\n let chars = '0123456789abcdef';\n\n return 'xxxxxxxxxx'.replace(/./g, () => {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n });\n}\n\nexport function isIE() {\n return Boolean(window.document.documentMode);\n}\n","\nexport let payloadBuilders = [];\nexport let metaBuilders = [];\nexport let trackingBuilders = [];\nexport let headerBuilders = [];\n\nexport function addPayloadBuilder(builder) {\n payloadBuilders.push(builder);\n}\n\nexport function addMetaBuilder(builder) {\n metaBuilders.push(builder);\n}\n\nexport function addTrackingBuilder(builder) {\n trackingBuilders.push(builder);\n}\n\nexport function addHeaderBuilder(builder) {\n headerBuilders.push(builder);\n}","\nexport let config = {\n\n uri: '',\n prefix: '',\n\n initial_state_name: 'init',\n\n flushInterval: 10 * 60 * 1000,\n debounceInterval: 10,\n\n sizeLimit: 300,\n\n // Supress `console.log`s when `true`\n // Recommended for production usage\n silent: false,\n\n heartbeat: true,\n heartbeatConsoleLog: true,\n heartbeatInterval: 5000,\n heartbeatTooBusy: false,\n heartbeatTooBusyThreshold: 10000,\n\n logLevel: 'warn',\n\n autoLog: ['warn', 'error'],\n\n logUnload: true,\n logPerformance: true\n};\n\nexport let logLevels = [ 'error', 'warn', 'info', 'debug' ];\n","\nimport { extend, promiseDebounce, ajax, isIE } from './util';\nimport { payloadBuilders, metaBuilders, trackingBuilders, headerBuilders } from './builders';\nimport { config, logLevels } from './config';\n\nexport let buffer = [];\nexport let tracking = [];\n\nlet transport = (headers, data, options) => {\n return ajax('post', config.uri, headers, data, options);\n}\n\nexport function getTransport() {\n return transport;\n}\n\nexport function setTransport(newTransport) {\n transport = newTransport;\n}\n\nlet loaded = false;\n\nsetTimeout(() => {\n loaded = true;\n}, 1);\n\nexport function print(level, event, payload) {\n\n if (typeof window === 'undefined' || !window.console || !window.console.log) {\n return;\n }\n\n if (!loaded) {\n return setTimeout(() => print(level, event, payload), 1);\n }\n\n let logLevel = config.logLevel;\n\n if (window.LOG_LEVEL) {\n logLevel = window.LOG_LEVEL;\n }\n\n if (logLevels.indexOf(level) > logLevels.indexOf(logLevel)) {\n return;\n }\n\n payload = payload || {};\n\n let args = [event];\n\n if(isIE()){\n payload = JSON.stringify(payload);\n }\n\n args.push(payload);\n\n if (payload.error || payload.warning) {\n args.push('\\n\\n', payload.error || payload.warning);\n }\n\n try {\n if (window.console[level] && window.console[level].apply) {\n window.console[level].apply(window.console, args);\n } else if (window.console.log && window.console.log.apply) {\n window.console.log.apply(window.console, args);\n }\n } catch (err) {\n // pass\n }\n}\n\nexport function immediateFlush({ fireAndForget = false } = {}) {\n\n if (typeof window === 'undefined') {\n return;\n }\n\n if (!config.uri) {\n return;\n }\n\n let hasBuffer = buffer.length;\n let hasTracking = tracking.length;\n\n if (!hasBuffer && !hasTracking) {\n return;\n }\n\n let meta = {};\n\n for (let builder of metaBuilders) {\n try {\n extend(meta, builder(meta), false);\n } catch (err) {\n console.error('Error in custom meta builder:', err.stack || err.toString());\n }\n }\n\n let headers = {};\n\n for (let builder of headerBuilders) {\n try {\n extend(headers, builder(headers), false);\n } catch (err) {\n console.error('Error in custom header builder:', err.stack || err.toString());\n }\n }\n\n let events = buffer;\n\n let req = transport(headers, {\n events,\n meta,\n tracking\n }, {\n fireAndForget\n });\n\n buffer = [];\n tracking = [];\n\n return req;\n}\n\nexport let flush = promiseDebounce(immediateFlush, config.debounceInterval);\n\n\nfunction enqueue(level, event, payload) {\n\n buffer.push({\n level,\n event,\n payload\n });\n\n if (config.autoLog.indexOf(level) > -1) {\n flush();\n }\n}\n\n\nexport function log(level, event, payload) {\n\n if (typeof window === 'undefined') {\n return;\n }\n\n if (config.prefix) {\n event = `${config.prefix}_${event}`;\n }\n\n payload = payload || {};\n\n if (typeof payload === 'string') {\n payload = {\n message: payload\n };\n } else if (payload instanceof Error) {\n payload = {\n error: payload.stack || payload.toString()\n }\n }\n\n try {\n JSON.stringify(payload);\n } catch (err) {\n return;\n }\n\n payload.timestamp = Date.now();\n\n for (let builder of payloadBuilders) {\n try {\n extend(payload, builder(payload), false);\n } catch (err) {\n console.error('Error in custom payload builder:', err.stack || err.toString());\n }\n }\n\n if (!config.silent) {\n print(level, event, payload);\n }\n\n if (buffer.length === config.sizeLimit) {\n enqueue('info', 'logger_max_buffer_length');\n }\n else if (buffer.length < config.sizeLimit) {\n enqueue(level, event, payload);\n }\n}\n\nexport function prefix(name) {\n\n return {\n debug(event, payload) {\n return log('debug', `${name}_${event}`, payload);\n },\n\n info(event, payload) {\n return log('info', `${name}_${event}`, payload);\n },\n\n warn(event, payload) {\n return log('warn', `${name}_${event}`, payload);\n },\n\n error(event, payload) {\n return log('error', `${name}_${event}`, payload);\n },\n\n track(payload) {\n return track(payload);\n },\n\n flush() {\n return flush();\n }\n };\n}\n\nexport function debug(event, payload) {\n return log('debug', event, payload);\n}\n\nexport function info(event, payload) {\n return log('info', event, payload);\n}\n\nexport function warn(event, payload) {\n return log('warn', event, payload);\n}\n\nexport function error(event, payload) {\n return log('error', event, payload);\n}\n\nexport function track(payload) {\n\n if (typeof window === 'undefined') {\n return;\n }\n\n if (payload) {\n\n try {\n JSON.stringify(payload);\n } catch (err) {\n return;\n }\n\n for (let builder of trackingBuilders) {\n try {\n extend(payload, builder(payload), false);\n } catch (err) {\n console.error('Error in custom tracking builder:', err.stack || err.toString());\n }\n }\n\n print('debug', 'tracking', payload);\n\n tracking.push(payload);\n }\n}\n","\nimport { config } from './config';\nimport { info } from './logger';\nimport { addPayloadBuilder } from './builders'\nimport { onWindowReady, safeInterval } from './util';\n\nlet enablePerformance = window &&\n window.performance &&\n performance.now &&\n performance.timing &&\n performance.timing.connectEnd &&\n performance.timing.navigationStart &&\n (Math.abs(performance.now() - Date.now()) > 1000) &&\n (performance.now() - (performance.timing.connectEnd - performance.timing.navigationStart)) > 0;\n\n\nexport function now() {\n if (enablePerformance) {\n return performance.now();\n } else {\n return Date.now();\n }\n}\n\nfunction timer(startTime) {\n startTime = startTime !== undefined ? startTime : now();\n\n return {\n startTime,\n\n elapsed() {\n return parseInt(now() - startTime, 10);\n },\n\n reset() {\n startTime = now();\n }\n };\n}\n\nexport function reqStartElapsed() {\n if (enablePerformance) {\n let timing = window.performance.timing;\n return parseInt(timing.connectEnd - timing.navigationStart, 10);\n }\n}\n\nexport let clientTimer = timer();\nexport let reqTimer = timer(reqStartElapsed());\n\nexport function initHeartBeat() {\n\n let heartBeatTimer = timer();\n let heartbeatCount = 0;\n\n safeInterval(() => {\n\n if (config.heartbeatMaxThreshold && (heartbeatCount > config.heartbeatMaxThreshold)) {\n return;\n }\n\n heartbeatCount += 1;\n\n let elapsed = heartBeatTimer.elapsed();\n let lag = elapsed - config.heartbeatInterval;\n\n let heartbeatPayload = {\n count: heartbeatCount,\n elapsed\n };\n\n if (config.heartbeatTooBusy) {\n heartbeatPayload.lag = lag;\n\n if (lag >= config.heartbeatTooBusyThreshold) {\n info('toobusy', heartbeatPayload, {\n noConsole: !config.heartbeatConsoleLog\n });\n }\n }\n\n info('heartbeat', heartbeatPayload, {\n noConsole: !config.heartbeatConsoleLog\n });\n\n }, config.heartbeatInterval);\n}\n\nexport function initPerformance() {\n\n if (!enablePerformance) {\n return info('no_performance_data');\n }\n\n addPayloadBuilder(() => {\n\n let payload = {};\n\n payload.client_elapsed = clientTimer.elapsed();\n\n if (enablePerformance) {\n payload.req_elapsed = reqTimer.elapsed();\n }\n\n return payload;\n });\n\n onWindowReady().then(() => {\n\n let keys = [\n 'connectEnd', 'connectStart', 'domComplete', 'domContentLoadedEventEnd',\n 'domContentLoadedEventStart', 'domInteractive', 'domLoading', 'domainLookupEnd',\n 'domainLookupStart', 'fetchStart', 'loadEventEnd', 'loadEventStart', 'navigationStart',\n 'redirectEnd', 'redirectStart', 'requestStart', 'responseEnd', 'responseStart',\n 'secureConnectionStart', 'unloadEventEnd', 'unloadEventStart'\n ];\n\n let timing = {};\n\n keys.forEach(key => {\n timing[key] = parseInt(window.performance.timing[key], 10) || 0;\n });\n\n let offset = timing.connectEnd - timing.navigationStart;\n\n if (timing.connectEnd) {\n Object.keys(timing).forEach(name => {\n let time = timing[name];\n if (time) {\n info(`timing_${name}`, {\n client_elapsed: parseInt(time - timing.connectEnd - (clientTimer.startTime - offset), 10),\n req_elapsed: parseInt(time - timing.connectEnd, 10)\n });\n }\n });\n }\n\n info('timing', timing);\n info('memory', window.performance.memory);\n info('navigation', window.performance.navigation);\n\n if (window.performance.getEntries) {\n window.performance.getEntries().forEach(resource => {\n if (['link', 'script', 'img', 'css'].indexOf(resource.initiatorType) > -1) {\n info(resource.initiatorType, resource);\n }\n });\n }\n });\n}\n","\nimport { config } from './config';\nimport { extend } from './util';\nimport { initPerformance, initHeartBeat } from './performance';\nimport { log, info, flush, immediateFlush } from './logger';\n\nlet initiated = false;\n\nexport function init(conf) {\n extend(config, conf || {});\n\n if (initiated) {\n return;\n }\n\n initiated = true;\n\n if (config.logPerformance) {\n initPerformance();\n }\n\n if (config.heartbeat) {\n initHeartBeat();\n }\n\n if (config.logUnload) {\n window.addEventListener('beforeunload', () => {\n info('window_beforeunload');\n immediateFlush({ fireAndForget: true });\n });\n\n window.addEventListener('unload', () => {\n info('window_unload');\n immediateFlush({ fireAndForget: true });\n });\n }\n\n if (config.flushInterval) {\n setInterval(flush, config.flushInterval);\n }\n\n if (window.beaverLogQueue) {\n window.beaverLogQueue.forEach(payload => {\n log(payload.level, payload.event, payload);\n });\n delete window.beaverLogQueue;\n }\n}\n","\nimport { reqStartElapsed, now } from './performance';\nimport { info, immediateFlush, track } from './logger';\nimport { addMetaBuilder, addPayloadBuilder } from './builders';\nimport { uniqueID } from './util';\nimport { config } from './config';\n\nlet windowID = uniqueID();\nlet pageID = uniqueID();\n\nlet currentState = config.initial_state_name;\nlet startTime;\n\nexport function startTransition() {\n startTime = now();\n}\n\nexport function endTransition(toState) {\n startTime = startTime || reqStartElapsed();\n\n let currentTime = now();\n let elapsedTime;\n\n if (startTime !== undefined) {\n elapsedTime = parseInt(currentTime - startTime, 0);\n }\n\n let transitionName = `transition_${currentState}_to_${toState}`;\n\n info(transitionName, {\n duration: elapsedTime\n });\n\n track({\n transition: transitionName,\n transition_time: elapsedTime\n });\n\n immediateFlush();\n\n startTime = currentTime;\n currentState = toState;\n pageID = uniqueID();\n}\n\nexport function transition(toState) {\n startTransition();\n endTransition(toState);\n}\n\naddPayloadBuilder(() => {\n return {\n windowID,\n pageID\n }\n});\n\naddMetaBuilder(() => {\n return {\n state: `ui_${currentState}`\n };\n});\n","\nexport * from './logger';\nexport * from './init';\nexport * from './transitions';\nexport * from './builders';\nexport * from './config';","\nimport * as INTERFACE from './interface';\nexport * from './interface';\nexport default INTERFACE;","/* @flow */\n/* eslint max-lines: off */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\n\nimport type { CancelableType } from '../types';\n\n/* Url Encode\n ----------\n\n Replace ? and & with encoded values. Allows other values (to create more readable urls than encodeUriComponent)\n*/\n\nexport function urlEncode(str : string) : string {\n return str.replace(/\\?/g, '%3F').replace(/&/g, '%26').replace(/#/g, '%23').replace(/\\+/g, '%2B');\n}\n\n\n/* Camel To Dasherize\n ------------------\n\n Convert camelCaseText to dasherized-text\n*/\n\nexport function camelToDasherize(string : string) : string {\n return string.replace(/([A-Z])/g, (g) => {\n return `-${ g.toLowerCase() }`;\n });\n}\n\n\n/* Dasherize to Camel\n ------------------\n\n Convert dasherized-text to camelCaseText\n*/\n\nexport function dasherizeToCamel(string : string) : string {\n return string.replace(/-([a-z])/g, (g) => {\n return g[1].toUpperCase();\n });\n}\n\n\n/* Extend\n ------\n\n Extend one object with another\n*/\n\nexport function extend(obj : Object, source : ?Object) : Object {\n if (!source) {\n return obj;\n }\n\n for (let key in source) {\n if (source.hasOwnProperty(key)) {\n obj[key] = source[key];\n }\n }\n\n return obj;\n}\n\n\n/* Values\n ------\n\n Get all of the values from an object as an array\n*/\n\nexport function values(obj : Object) : Array {\n let results = [];\n\n for (let key in obj) {\n if (obj.hasOwnProperty(key)) {\n results.push(obj[key]);\n }\n }\n\n return results;\n}\n\n\n/* Unique ID\n ---------\n\n Generate a unique, random hex id\n*/\n\nexport function uniqueID() : string {\n\n let chars = '0123456789abcdef';\n\n return 'xxxxxxxxxx'.replace(/./g, () => {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n });\n}\n\n/* Stringify with Functions\n ------------------------\n\n JSON Stringify with added support for functions\n*/\n\nexport function stringifyWithFunctions(obj : Object) : string {\n return JSON.stringify(obj, (key, val) => {\n if (typeof val === 'function') {\n return val.toString();\n }\n return val;\n });\n}\n\n\n/* Safe Get\n --------\n\n Get a property without throwing error\n*/\n\nexport function safeGet(obj : Object, prop : string) : mixed {\n\n let result;\n\n try {\n result = obj[prop];\n } catch (err) {\n // pass\n }\n\n return result;\n}\n\n\n/* Capitalize First Letter\n -----------------------\n*/\n\nexport function capitalizeFirstLetter(string : string) : string {\n return string.charAt(0).toUpperCase() + string.slice(1).toLowerCase();\n}\n\n\n/* Get\n ---\n\n Recursively gets a deep path from an object, returning a default value if any level is not found\n*/\n\nexport function get(item : Object, path : string, def : mixed) : mixed {\n\n if (!path) {\n return def;\n }\n\n let pathParts = path.split('.');\n\n // Loop through each section of our key path\n\n for (let i = 0; i < pathParts.length; i++) {\n\n // If we have an object, we can get the key\n\n if (typeof item === 'object' && item !== null) {\n item = item[pathParts[i]];\n\n // Otherwise, we should return the default (undefined if not provided)\n } else {\n return def;\n }\n }\n\n // If our final result is undefined, we should return the default\n\n return item === undefined ? def : item;\n}\n\n\n/* Safe Interval\n -------------\n\n Implement setInterval using setTimeout, to avoid stacking up calls from setInterval\n*/\n\nexport function safeInterval(method : Function, time : number) : CancelableType {\n\n let timeout;\n\n function runInterval() {\n timeout = setTimeout(runInterval, time);\n method.call();\n }\n\n timeout = setTimeout(runInterval, time);\n\n return {\n cancel() {\n clearTimeout(timeout);\n }\n };\n}\n\n/* Safe Interval\n -------------\n\n Run timeouts at 100ms intervals so we can account for busy browsers\n*/\n\nexport function safeTimeout(method : Function, time : number) {\n\n let interval = safeInterval(() => {\n time -= 100;\n if (time <= 0) {\n interval.cancel();\n method();\n }\n }, 100);\n}\n\n\nexport function each(item : Array | Object, callback : Function) {\n\n if (!item) {\n return;\n }\n\n if (Array.isArray(item)) {\n let len = item.length;\n for (let i = 0; i < len; i++) {\n callback(item[i], i);\n }\n\n } else if (typeof item === 'object') {\n let keys = Object.keys(item);\n let len = keys.length;\n for (let i = 0; i < len; i++) {\n let key = keys[i];\n callback(item[key], key);\n }\n }\n}\n\n\nexport function replaceObject> (item : T, replacers : { [string] : Function }, fullKey : string = '') : T {\n\n if (Array.isArray(item)) {\n let length = item.length;\n let result = [];\n\n for (let i = 0; i < length; i++) {\n Object.defineProperty(result, i, {\n configurable: true,\n enumerable: true,\n get: () => {\n let itemKey = fullKey ? `${ fullKey }.${ i }` : `${ i }`;\n let child = item[i];\n\n let type = (typeof child);\n let replacer = replacers[type];\n if (replacer) {\n let replaced = replacer(child, i, itemKey);\n if (typeof replaced !== 'undefined') {\n result[i] = replaced;\n return result[i];\n }\n }\n\n if (typeof child === 'object' && child !== null) {\n result[i] = replaceObject(child, replacers, itemKey);\n return result[i];\n }\n\n result[i] = child;\n return result[i];\n },\n set: (value) => {\n delete result[i];\n result[i] = value;\n }\n });\n }\n\n // $FlowFixMe\n return result;\n } else if (typeof item === 'object' && item !== null) {\n let result = {};\n\n for (let key in item) {\n if (!item.hasOwnProperty(key)) {\n continue;\n }\n\n Object.defineProperty(result, key, {\n configurable: true,\n enumerable: true,\n get: () => {\n let itemKey = fullKey ? `${ fullKey }.${ key }` : `${ key }`;\n // $FlowFixMe\n let child = item[key];\n\n let type = (typeof child);\n let replacer = replacers[type];\n if (replacer) {\n let replaced = replacer(child, key, itemKey);\n if (typeof replaced !== 'undefined') {\n result[key] = replaced;\n return result[key];\n }\n }\n\n if (typeof child === 'object' && child !== null) {\n result[key] = replaceObject(child, replacers, itemKey);\n return result[key];\n }\n\n result[key] = child;\n return result[key];\n },\n set: (value) => {\n delete result[key];\n result[key] = value;\n }\n });\n }\n\n // $FlowFixMe\n return result;\n } else {\n throw new Error(`Pass an object or array`);\n }\n}\n\n\nexport function copyProp(source : Object, target : Object, name : string, def : mixed) {\n if (source.hasOwnProperty(name)) {\n let descriptor = Object.getOwnPropertyDescriptor(source, name);\n // $FlowFixMe\n Object.defineProperty(target, name, descriptor);\n\n } else {\n target[name] = def;\n }\n}\n\nexport function dotify(obj : Object, prefix : string = '', newobj : Object = {}) : { [string] : string } {\n prefix = prefix ? `${ prefix }.` : prefix;\n for (let key in obj) {\n if (obj[key] === undefined || obj[key] === null || typeof obj[key] === 'function') {\n continue;\n } else if (obj[key] && Array.isArray(obj[key]) && obj[key].length && obj[key].every(val => typeof val !== 'object')) {\n newobj[`${ prefix }${ key }`] = obj[key].join(',');\n } else if (obj[key] && typeof obj[key] === 'object') {\n newobj = dotify(obj[key], `${ prefix }${ key }`, newobj);\n } else {\n newobj[`${ prefix }${ key }`] = obj[key].toString();\n }\n }\n return newobj;\n}\n\nlet objectIDs = new WeakMap();\n\nexport function getObjectID(obj : Object) : string {\n\n if (obj === null || obj === undefined || (typeof obj !== 'object' && typeof obj !== 'function')) {\n throw new Error(`Invalid object`);\n }\n\n let uid = objectIDs.get(obj);\n\n if (!uid) {\n uid = `${ typeof obj }:${ uniqueID() }`;\n objectIDs.set(obj, uid);\n }\n\n return uid;\n}\n\ntype RegexResultType = {\n text : string,\n groups : Array,\n start : number,\n end : number,\n length : number,\n replace : (text : string) => string\n};\n\nexport function regex(pattern : string | RegExp, string : string, start : number = 0) : ?RegexResultType {\n\n if (typeof pattern === 'string') {\n // eslint-disable-next-line security/detect-non-literal-regexp\n pattern = new RegExp(pattern);\n }\n\n let result = string.slice(start).match(pattern);\n\n if (!result) {\n return;\n }\n\n // $FlowFixMe\n let index : number = result.index;\n let match = result[0];\n\n return {\n text: match,\n groups: result.slice(1),\n start: start + index,\n end: start + index + match.length,\n length: match.length,\n\n replace(text : string) : string {\n\n if (!match) {\n return '';\n }\n\n return `${ match.slice(0, start + index) }${ text }${ match.slice(index + match.length) }`;\n }\n };\n}\n\nexport function regexAll(pattern : string | RegExp, string : string) : Array {\n\n let matches = [];\n let start = 0;\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n let match = regex(pattern, string, start);\n\n if (!match) {\n break;\n }\n\n matches.push(match);\n start = match.end;\n }\n\n return matches;\n}\n\nexport function count(str : string, substr : string) : number {\n\n let startIndex = 0;\n let itemCount = 0;\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n let index = str.indexOf(substr, startIndex);\n\n if (index === -1) {\n break;\n }\n\n startIndex = index;\n itemCount += 1;\n }\n\n return itemCount;\n}\n\nexport function stringify(item : mixed) : string {\n if (typeof item === 'string') {\n return item;\n }\n\n if (item && typeof item.toString === 'function') {\n return item.toString();\n }\n\n return Object.prototype.toString.call(item);\n}\n\nexport function stringifyError(err : mixed) : string {\n if (err) {\n // $FlowFixMe\n let { stack, message } = err;\n\n if (typeof stack === 'string') {\n return stack;\n }\n\n if (typeof message === 'string') {\n return message;\n }\n }\n\n return stringify(err);\n}\n\nexport type EventEmitterType = {\n on : (eventName : string, handler : Function) => CancelableType,\n once : (eventName : string, handler : Function) => CancelableType,\n trigger : (eventName : string) => void,\n triggerOnce : (eventName : string) => void\n};\n\nexport function eventEmitter() : EventEmitterType {\n\n let triggered = {};\n let handlers = {};\n\n return {\n\n on(eventName : string, handler : Function) : CancelableType {\n\n let handlerList = handlers[eventName] = handlers[eventName] || [];\n\n handlerList.push(handler);\n\n let cancelled = false;\n\n return {\n cancel() {\n if (!cancelled) {\n cancelled = true;\n handlerList.splice(handlerList.indexOf(handler), 1);\n }\n\n }\n };\n },\n\n once(eventName : string, handler : Function) : CancelableType {\n\n let listener = this.on(eventName, () => {\n listener.cancel();\n handler();\n });\n\n return listener;\n },\n\n trigger(eventName : string) {\n\n let handlerList = handlers[eventName];\n\n if (handlerList) {\n for (let handler of handlerList) {\n handler();\n }\n }\n },\n\n triggerOnce(eventName : string) {\n\n if (triggered[eventName]) {\n return;\n }\n\n triggered[eventName] = true;\n this.trigger(eventName);\n }\n };\n}\n","/* @flow */\n\nimport { getObjectID, replaceObject } from './util';\n\n\n/* Noop\n ----\n\n Do nothing, zilch, nada, zip\n*/\n\nexport function noop() {\n // pass\n}\n\n\n/* Once\n ----\n\n Create a wrapper function which only allows the inner function to run once, otherwise is a noop\n*/\n\nexport function once(method : (...args : Array) => T) : (...args : Array) => T {\n\n let called = false;\n let result;\n\n // eslint-disable-next-line no-unused-vars\n return function onceWrapper(...args : Array) : T {\n if (called) {\n return result;\n }\n\n called = true;\n result = method.apply(this, arguments);\n return result;\n };\n}\n\n\n/* Memoize\n -------\n\n Create a wrapper function which caches the result of the first call, then for subsequent calls returns the cached value\n*/\n\nexport function memoize(method : (...args : Array) => T) : (...args : Array) => T {\n\n let results = {};\n\n // eslint-disable-next-line no-unused-vars\n return function memoizeWrapper(...args : Array) : T {\n\n let cacheKey;\n\n try {\n cacheKey = JSON.stringify(Array.prototype.slice.call(arguments), (key, val) => {\n\n if (typeof val === 'function') {\n return `zoid:memoize[${ getObjectID(val) }]`;\n }\n\n return val;\n });\n\n } catch (err) {\n throw new Error('Arguments not serializable -- can not be used to memoize');\n }\n\n if (!results.hasOwnProperty(cacheKey)) {\n results[cacheKey] = method.apply(this, arguments);\n }\n\n return results[cacheKey];\n };\n}\n\nexport function debounce(method : (...args : Array) => T, time : number = 100) : (...args : Array) => void {\n\n let timeout;\n\n return function debounceWrapper() {\n clearTimeout(timeout);\n\n timeout = setTimeout(() => {\n return method.apply(this, arguments);\n }, time);\n };\n}\n\nexport function serializeFunctions>(obj : T) : T {\n return replaceObject(obj, {\n 'function': () => {\n return {\n __type__: '__function__'\n };\n }\n });\n}\n\nexport function deserializeFunctions>(obj : T, handler : Function) : T {\n return replaceObject(obj, {\n 'object': (value, key, fullKey) => {\n if (value && value.__type__ === '__function__') {\n return function deserializedFunctionWrapper() : mixed {\n return handler({ key, fullKey, self: this, args: arguments });\n };\n }\n }\n });\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { isWindowClosed, linkFrameWindow, type CrossDomainWindowType, type SameDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\n\nimport { PopupOpenError } from '../error';\nimport type { ElementRefType, CancelableType } from '../types';\n\nimport { once, memoize, debounce } from './fn';\nimport { extend, safeInterval, urlEncode, capitalizeFirstLetter, stringify } from './util';\n\nexport function appendChild(container : HTMLElement, child : HTMLElement | Text) {\n container.appendChild(child);\n}\n\nfunction isElement(element : mixed) : boolean {\n\n if (element instanceof window.Element) {\n return true;\n }\n\n if (element !== null && typeof element === 'object' && element.nodeType === 1 && typeof element.style === 'object' && typeof element.ownerDocument === 'object') {\n return true;\n }\n\n return false;\n}\n\nexport function querySelectorAll(el : HTMLElement, selector : string) : Array {\n return Array.prototype.slice.call(el.querySelectorAll(selector));\n}\n\n/* Get Element\n -----------\n\n Gets an element based on\n\n - Element id\n - CSS Query selector\n*/\n\nexport function getElementSafe(id : ElementRefType) : ?HTMLElement {\n\n if (isElement(id)) {\n // $FlowFixMe\n return id;\n }\n\n if (typeof id === 'string') {\n let element = document.getElementById(id);\n\n if (element) {\n return element;\n }\n\n if (document.querySelector) {\n element = document.querySelector(id);\n }\n\n if (element) {\n return element;\n }\n }\n}\n\nexport function getElement(id : ElementRefType) : HTMLElement {\n\n let element = getElementSafe(id);\n\n if (element) {\n return element;\n }\n\n throw new Error(`Can not find element: ${ stringify(id) }`);\n}\n\n\nexport let documentReady = new ZalgoPromise(resolve => {\n\n if (window.document.readyState === 'complete') {\n return resolve(window.document);\n }\n\n let interval = setInterval(() => {\n if (window.document.readyState === 'complete') {\n clearInterval(interval);\n return resolve(window.document);\n }\n }, 10);\n});\n\nexport function isDocumentReady() : boolean {\n return window.document.readyState === 'complete';\n}\n\nexport function elementReady(id : ElementRefType) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n let name = stringify(id);\n let el = getElementSafe(id);\n\n if (el) {\n return resolve(el);\n }\n\n if (isDocumentReady()) {\n return reject(new Error(`Document is ready and element ${ name } does not exist`));\n }\n\n let interval = setInterval(() => {\n\n el = getElementSafe(id);\n\n if (el) {\n clearInterval(interval);\n return resolve(el);\n }\n\n if (isDocumentReady()) {\n clearInterval(interval);\n return reject(new Error(`Document is ready and element ${ name } does not exist`));\n }\n }, 10);\n });\n}\n\n\n/* Popup\n -----\n\n Open a popup window with the specified option map\n*/\n\nexport function popup(url : string, options : { [ string ] : mixed }) : CrossDomainWindowType {\n\n // eslint-disable-next-line array-callback-return\n let params = Object.keys(options).map((key) => {\n if (options[key]) {\n return `${ key }=${ stringify(options[key]) }`;\n }\n }).filter(Boolean).join(',');\n\n let win;\n\n try {\n win = window.open(url, options.name, params, true);\n } catch (err) {\n throw new PopupOpenError(`Can not open popup window - ${ err.stack || err.message }`);\n }\n\n if (isWindowClosed(win)) {\n let err = new PopupOpenError(`Can not open popup window - blocked`);\n throw err;\n }\n\n return win;\n}\n\n\nexport function writeToWindow(win : SameDomainWindowType, html : string) {\n try {\n win.document.open();\n win.document.write(html);\n win.document.close();\n } catch (err) {\n try {\n win.location = `javascript: document.open(); document.write(${ JSON.stringify(html) }); document.close();`;\n } catch (err2) {\n // pass\n }\n }\n}\n\nexport function writeElementToWindow(win : SameDomainWindowType, el : HTMLElement) {\n\n let tag = el.tagName.toLowerCase();\n\n if (tag !== 'html') {\n throw new Error(`Expected element to be html, got ${ tag }`);\n }\n\n let documentElement = win.document.documentElement;\n\n while (documentElement.children && documentElement.children.length) {\n documentElement.removeChild(documentElement.children[0]);\n }\n\n while (el.children.length) {\n documentElement.appendChild(el.children[0]);\n }\n}\n\nexport function setStyle(el : HTMLElement, styleText : string, doc : Document = window.document) {\n // $FlowFixMe\n if (el.styleSheet) {\n // $FlowFixMe\n el.styleSheet.cssText = styleText;\n } else {\n el.appendChild(doc.createTextNode(styleText));\n }\n}\n\n/* Create Element\n --------------\n\n Create an element with style, html, classes, attributes etc. and append it to the specified container\n*/\n\nexport type ElementOptionsType = {\n style? : { [ string ] : string },\n class? : ?Array,\n attributes? : { [ string ] : string },\n styleSheet? : ?string,\n html? : ?string\n};\n\nexport function createElement(tag : string = 'div', options : ElementOptionsType = {}, container : ?HTMLElement) : HTMLElement {\n\n tag = tag.toLowerCase();\n let element = document.createElement(tag);\n\n if (options.style) {\n extend(element.style, options.style);\n }\n\n if (options.class) {\n element.className = options.class.join(' ');\n }\n\n if (options.attributes) {\n for (let key of Object.keys(options.attributes)) {\n element.setAttribute(key, options.attributes[key]);\n }\n }\n\n if (options.styleSheet) {\n setStyle(element, options.styleSheet);\n }\n\n if (container) {\n appendChild(container, element);\n }\n\n if (options.html) {\n if (tag === 'iframe') {\n // $FlowFixMe\n if (!container || !element.contentWindow) {\n throw new Error(`Iframe html can not be written unless container provided and iframe in DOM`);\n }\n\n // $FlowFixMe\n writeToWindow(element.contentWindow, options.html);\n\n } else {\n element.innerHTML = options.html;\n }\n }\n\n return element;\n}\n\nlet awaitFrameLoadPromises : WeakMap> = new WeakMap();\n\nexport function awaitFrameLoad(frame : HTMLIFrameElement) : ZalgoPromise {\n\n if (awaitFrameLoadPromises.has(frame)) {\n let promise = awaitFrameLoadPromises.get(frame);\n if (promise) {\n return promise;\n }\n }\n\n let promise = new ZalgoPromise((resolve, reject) => {\n frame.addEventListener('load', () => {\n linkFrameWindow(frame);\n resolve(frame);\n });\n\n frame.addEventListener('error', (err : Event) => {\n if (frame.contentWindow) {\n resolve(frame);\n } else {\n reject(err);\n }\n });\n });\n\n awaitFrameLoadPromises.set(frame, promise);\n\n return promise;\n}\n\nexport function awaitFrameWindow(frame : HTMLIFrameElement) : ZalgoPromise {\n\n if (frame.contentWindow) {\n return ZalgoPromise.resolve(frame.contentWindow);\n }\n\n return awaitFrameLoad(frame).then(loadedFrame => {\n\n if (!loadedFrame.contentWindow) {\n throw new Error(`Could not find window in iframe`);\n }\n\n return loadedFrame.contentWindow;\n });\n}\n\n\n/* Iframe\n ------\n\n Open an iframe with the specified container, url, and option property map\n*/\n\nexport type IframeElementOptionsType = {\n style? : { [ string ] : string },\n class? : ?Array,\n attributes? : { [ string ] : string },\n styleSheet? : ?string,\n html? : ?string,\n url? : ?string\n};\n\nexport function iframe(options : IframeElementOptionsType = {}, container : HTMLElement) : HTMLIFrameElement {\n\n let el = getElement(container);\n\n let attributes = options.attributes || {};\n let style = options.style || {};\n\n let frame = createElement('iframe', {\n attributes: {\n frameBorder: '0',\n allowTransparency: 'true',\n ...attributes\n },\n style: {\n backgroundColor: 'transparent',\n ...style\n },\n html: options.html,\n class: options.class\n });\n\n // $FlowFixMe\n awaitFrameLoad(frame);\n\n el.appendChild(frame);\n\n if (options.url || window.navigator.userAgent.match(/MSIE|Edge/i)) {\n frame.setAttribute('src', options.url || 'about:blank');\n }\n\n // $FlowFixMe\n return frame;\n}\n\n/* Add Event Listener\n ------------------\n\n Add DOM Event listener with cancel\n*/\n\nexport function addEventListener(obj : HTMLElement, event : string, handler : (event : Event) => void) : CancelableType {\n obj.addEventListener(event, handler);\n return {\n cancel() {\n obj.removeEventListener(event, handler);\n }\n };\n}\n\n/* Scan For Javascript\n -------------------\n\n Check if the string contains anything which could conceivably be run as javascript if the string is set to innerHTML\n*/\n\nexport function scanForJavascript(str : string) : string {\n\n if (!str) {\n return str;\n }\n\n if (str.match(/ {\n\n let params = {};\n\n if (!queryString) {\n return params;\n }\n\n if (queryString.indexOf('=') === -1) {\n throw new Error(`Can not parse query string params: ${ queryString }`);\n }\n\n for (let pair of queryString.split('&')) {\n pair = pair.split('=');\n\n if (pair[0] && pair[1]) {\n params[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n }\n\n return params;\n});\n\n\nexport function getQueryParam(name : string) : ?string {\n return parseQuery(window.location.search.slice(1))[name];\n}\n\nexport function formatQuery(obj : { [ string ] : string } = {}) : string {\n\n return Object.keys(obj).filter(key => {\n return typeof obj[key] === 'string';\n }).map(key => {\n return `${ urlEncode(key) }=${ urlEncode(obj[key]) }`;\n }).join('&');\n}\n\nexport function extendQuery(originalQuery : string, props : { [ string ] : string } = {}) : string {\n\n if (!props || !Object.keys(props).length) {\n return originalQuery;\n }\n\n return formatQuery({\n ...parseQuery(originalQuery),\n ...props\n });\n}\n\nexport function extendUrl(url : string, options : { query? : { [ string ] : string }, hash? : { [ string ] : string } } = {}) : string {\n\n let query = options.query || {};\n let hash = options.hash || {};\n\n let originalUrl;\n let originalQuery;\n let originalHash;\n\n [ originalUrl, originalHash ] = url.split('#');\n [ originalUrl, originalQuery ] = originalUrl.split('?');\n\n let queryString = extendQuery(originalQuery, query);\n let hashString = extendQuery(originalHash, hash);\n\n if (queryString) {\n originalUrl = `${ originalUrl }?${ queryString }`;\n }\n\n if (hashString) {\n originalUrl = `${ originalUrl }#${ hashString }`;\n }\n\n return originalUrl;\n}\n\n\nexport function elementStoppedMoving(element : ElementRefType, timeout : number = 5000) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n let el = getElement(element);\n\n let start = el.getBoundingClientRect();\n\n let interval;\n let timer;\n\n interval = setInterval(() => {\n let end = el.getBoundingClientRect();\n\n if (start.top === end.top && start.bottom === end.bottom && start.left === end.left && start.right === end.right && start.width === end.width && start.height === end.height) {\n clearTimeout(timer);\n clearInterval(interval);\n return resolve();\n }\n\n start = end;\n\n }, 50);\n\n timer = setTimeout(() => {\n clearInterval(interval);\n reject(new Error(`Timed out waiting for element to stop animating after ${ timeout }ms`));\n }, timeout);\n });\n}\n\nexport function getCurrentDimensions(el : HTMLElement) : { width : number, height : number } {\n return {\n width: el.offsetWidth,\n height: el.offsetHeight\n };\n}\n\nexport function changeStyle(el : HTMLElement, styles : { [ string ] : string }) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n\n for (let key of Object.keys(styles)) {\n // $FlowFixMe\n el.style[key] = styles[key];\n }\n\n setTimeout(resolve, 1);\n });\n}\n\nexport function setOverflow(el : HTMLElement, value : string = 'auto') : { reset : () => void } {\n\n let { overflow, overflowX, overflowY } = el.style;\n\n el.style.overflow = el.style.overflowX = el.style.overflowY = value;\n\n return {\n reset() {\n el.style.overflow = overflow;\n el.style.overflowX = overflowX;\n el.style.overflowY = overflowY;\n }\n };\n}\n\nfunction dimensionsDiff(one : { width : number, height : number }, two : { width : number, height : number }, { width = true, height = true, threshold = 0 } : { width : boolean, height : boolean, threshold : number }) : boolean {\n\n if (width && Math.abs(one.width - two.width) > threshold) {\n return true;\n }\n\n if (height && Math.abs(one.height - two.height) > threshold) {\n return true;\n }\n\n return false;\n}\n\nexport function trackDimensions(el : HTMLElement, { width = true, height = true, threshold = 0 } : { width : boolean, height : boolean, threshold : number }) : { check : () => { changed : boolean, dimensions : { width : number, height : number } }, reset : () => void } {\n\n let currentDimensions = getCurrentDimensions(el);\n\n return {\n check() : { changed : boolean, dimensions : { width : number, height : number } } {\n let newDimensions = getCurrentDimensions(el);\n\n return {\n changed: dimensionsDiff(currentDimensions, newDimensions, { width, height, threshold }),\n dimensions: newDimensions\n };\n },\n\n reset() {\n currentDimensions = getCurrentDimensions(el);\n }\n };\n}\n\nexport function onDimensionsChange(el : HTMLElement, { width = true, height = true, delay = 50, threshold = 0 } : { width? : boolean, height? : boolean, delay? : number, threshold? : number }) : ZalgoPromise<{ width : number, height : number }> {\n\n return new ZalgoPromise(resolve => {\n\n let tracker = trackDimensions(el, { width, height, threshold });\n\n let interval;\n\n let resolver = debounce((dimensions) => {\n clearInterval(interval);\n return resolve(dimensions);\n }, delay * 4);\n\n interval = setInterval(() => {\n let { changed, dimensions } = tracker.check();\n if (changed) {\n tracker.reset();\n return resolver(dimensions);\n }\n }, delay);\n\n function onWindowResize() {\n let { changed, dimensions } = tracker.check();\n if (changed) {\n tracker.reset();\n window.removeEventListener('resize', onWindowResize);\n resolver(dimensions);\n }\n }\n\n window.addEventListener('resize', onWindowResize);\n });\n}\n\n\nexport function dimensionsMatchViewport(el : HTMLElement, { width, height } : { width : number, height : number }) : boolean {\n\n let dimensions = getCurrentDimensions(el);\n\n if (width && dimensions.width !== window.innerWidth) {\n return false;\n }\n\n if (height && dimensions.height !== window.innerHeight) {\n return false;\n }\n\n return true;\n}\n\n\nexport function bindEvents(element : HTMLElement, eventNames : Array, handler : (event : Event) => void) : CancelableType {\n\n handler = once(handler);\n\n for (let eventName of eventNames) {\n element.addEventListener(eventName, handler);\n }\n\n return {\n cancel: once(() => {\n for (let eventName of eventNames) {\n element.removeEventListener(eventName, handler);\n }\n })\n };\n}\n\nconst VENDOR_PREFIXES = [ 'webkit', 'moz', 'ms', 'o' ];\n\nexport function setVendorCSS(element : HTMLElement, name : string, value : string) {\n\n // $FlowFixMe\n element.style[name] = value;\n\n let capitalizedName = capitalizeFirstLetter(name);\n\n for (let prefix of VENDOR_PREFIXES) {\n // $FlowFixMe\n element.style[`${ prefix }${ capitalizedName }`] = value;\n }\n}\n\n\nlet CSSRule = window.CSSRule;\n\nconst KEYFRAMES_RULE = CSSRule.KEYFRAMES_RULE || CSSRule.WEBKIT_KEYFRAMES_RULE || CSSRule.MOZ_KEYFRAMES_RULE ||\n CSSRule.O_KEYFRAMES_RULE || CSSRule.MS_KEYFRAMES_RULE;\n\nfunction isValidAnimation(element : HTMLElement, name : string) : boolean {\n\n let stylesheets = element.ownerDocument.styleSheets;\n\n try {\n for (let i = 0; i < stylesheets.length; i++) {\n\n // $FlowFixMe\n let cssRules = stylesheets[i].cssRules;\n\n if (!cssRules) {\n continue;\n }\n\n for (let j = 0; j < cssRules.length; j++) {\n\n let cssRule = cssRules[j];\n\n if (!cssRule) {\n continue;\n }\n\n if (cssRule.type === KEYFRAMES_RULE && cssRule.name === name) {\n return true;\n }\n }\n }\n } catch (err) {\n\n return false;\n }\n\n\n return false;\n}\n\n\nconst ANIMATION_START_EVENTS = [ 'animationstart', 'webkitAnimationStart', 'oAnimationStart', 'MSAnimationStart' ];\nconst ANIMATION_END_EVENTS = [ 'animationend', 'webkitAnimationEnd', 'oAnimationEnd', 'MSAnimationEnd' ];\n\nexport function animate(element : ElementRefType, name : string, clean : (Function) => void, timeout : number = 1000) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n let el = getElement(element);\n\n if (!el || !isValidAnimation(el, name)) {\n return resolve();\n }\n\n let hasStarted = false;\n\n let startTimeout;\n let endTimeout;\n let startEvent;\n let endEvent;\n\n function cleanUp() {\n setVendorCSS(el, 'animationName', '');\n clearTimeout(startTimeout);\n clearTimeout(endTimeout);\n startEvent.cancel();\n endEvent.cancel();\n }\n\n startEvent = bindEvents(el, ANIMATION_START_EVENTS, event => {\n\n // $FlowFixMe\n if (event.target !== el || event.animationName !== name) {\n return;\n }\n\n clearTimeout(startTimeout);\n\n event.stopPropagation();\n\n startEvent.cancel();\n hasStarted = true;\n\n endTimeout = setTimeout(() => {\n cleanUp();\n resolve();\n }, timeout);\n });\n\n endEvent = bindEvents(el, ANIMATION_END_EVENTS, event => {\n\n // $FlowFixMe\n if (event.target !== el || event.animationName !== name) {\n return;\n }\n\n cleanUp();\n\n // $FlowFixMe\n if (typeof event.animationName === 'string' && event.animationName !== name) {\n return reject(`Expected animation name to be ${ name }, found ${ event.animationName }`);\n }\n\n return resolve();\n });\n\n setVendorCSS(el, 'animationName', name);\n\n startTimeout = setTimeout(() => {\n if (!hasStarted) {\n cleanUp();\n return resolve();\n }\n }, 200);\n\n if (clean) {\n clean(cleanUp);\n }\n });\n}\n\nconst STYLE = {\n\n DISPLAY: {\n NONE: 'none',\n BLOCK: 'block'\n },\n\n VISIBILITY: {\n VISIBLE: 'visible',\n HIDDEN: 'hidden'\n },\n\n IMPORTANT: 'important'\n};\n\nexport function makeElementVisible(element : HTMLElement) {\n element.style.setProperty('visibility', '');\n}\n\nexport function makeElementInvisible(element : HTMLElement) {\n element.style.setProperty('visibility', STYLE.VISIBILITY.HIDDEN, STYLE.IMPORTANT);\n}\n\n\nexport function showElement(element : HTMLElement) {\n element.style.setProperty('display', '');\n}\n\nexport function hideElement(element : HTMLElement) {\n element.style.setProperty('display', STYLE.DISPLAY.NONE, STYLE.IMPORTANT);\n}\n\nexport function destroyElement(element : HTMLElement) {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n}\n\nexport function showAndAnimate(element : HTMLElement, name : string, clean : (Function) => void) : ZalgoPromise {\n let animation = animate(element, name, clean);\n showElement(element);\n return animation;\n}\n\nexport function animateAndHide(element : HTMLElement, name : string, clean : (Function) => void) : ZalgoPromise {\n return animate(element, name, clean).then(() => {\n hideElement(element);\n });\n}\n\nexport function addClass(element : HTMLElement, name : string) {\n if (element.classList) {\n element.classList.add(name);\n } else if (element.className.split(/\\s+/).indexOf(name) === -1) {\n element.className += ` ${ name }`;\n }\n}\n\nexport function removeClass(element : HTMLElement, name : string) {\n if (element.classList) {\n element.classList.remove(name);\n } else if (element.className.split(/\\s+/).indexOf(name) !== -1) {\n element.className = element.className.replace(name, '');\n }\n}\n\nexport function getCurrentScriptDir() : string {\n // eslint-disable-next-line no-console\n console.warn(`Do not use zoid.getCurrentScriptDir() in production -- browser support is limited`);\n\n // eslint-disable-next-line compat/compat\n if (document.currentScript) {\n // eslint-disable-next-line compat/compat\n return document.currentScript.src.split('/').slice(0, -1).join('/');\n }\n\n return '.';\n}\n\nexport function getElementName(element : ElementRefType) : string {\n\n if (typeof element === 'string') {\n return element;\n }\n\n if (!element || !element.tagName) {\n return '';\n }\n\n let name = element.tagName.toLowerCase();\n\n if (element.id) {\n name += `#${ element.id }`;\n } else if (element.className) {\n name += `.${ element.className.split(' ').join('.') }`;\n }\n\n return name;\n}\n\nexport function isElementClosed(el : HTMLElement) : boolean {\n if (!el || !el.parentNode) {\n return true;\n }\n return false;\n}\n\nexport function watchElementForClose(element : HTMLElement, handler : () => mixed) : CancelableType {\n handler = once(handler);\n\n let interval;\n\n if (isElementClosed(element)) {\n handler();\n } else {\n interval = safeInterval(() => {\n if (isElementClosed(element)) {\n interval.cancel();\n handler();\n }\n }, 50);\n }\n\n return {\n cancel() {\n if (interval) {\n interval.cancel();\n }\n }\n };\n}\n\nexport function getHttpType(contentType : string, url : string) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n let req = new window.XMLHttpRequest();\n\n req.open('GET', url);\n req.setRequestHeader('Accept', contentType);\n req.send(null);\n\n req.onload = () => {\n resolve(req.responseText);\n };\n\n req.onerror = () => {\n return reject(new Error(`prefetch failed`));\n };\n });\n}\n\nexport function getHTML(url : string) : ZalgoPromise {\n return getHttpType('text/html', url);\n}\n\nexport function getCSS(url : string) : ZalgoPromise {\n return getHttpType('text/css', url);\n}\n\nexport function getScript(url : string) : ZalgoPromise {\n return getHttpType('*/*', url);\n}\n\nexport function prefetchPage(url : string) : ZalgoPromise {\n return getHTML(url);\n}\n\nconst JSX_EVENTS = {\n onClick: 'click'\n};\n\nexport function fixScripts(el : HTMLElement, doc : Document = window.document) {\n for (let script of querySelectorAll(el, 'script')) {\n let newScript = doc.createElement('script');\n newScript.text = script.textContent;\n script.parentNode.replaceChild(newScript, script);\n }\n}\n\nexport function jsxDom(name : string, props : ?{ [ string ] : mixed }, content : ElementRefType) : HTMLElement {\n\n name = name.toLowerCase();\n\n let doc = (this && this.createElement)\n ? this\n : window.document;\n\n let el = doc.createElement(name);\n\n for (let prop in props) {\n if (prop in JSX_EVENTS) {\n el.addEventListener(JSX_EVENTS[prop], props[prop]);\n } else if (prop === 'innerHTML') {\n el.innerHTML = props[prop];\n fixScripts(el, doc);\n } else {\n el.setAttribute(prop, props[prop]);\n }\n }\n\n if (name === 'style') {\n\n if (typeof content !== 'string') {\n throw new TypeError(`Expected ${ name } tag content to be string, got ${ typeof content }`);\n }\n\n if (arguments.length > 3) {\n throw new Error(`Expected only text content for ${ name } tag`);\n }\n\n setStyle(el, content, doc);\n\n } else if (name === 'iframe') {\n\n if (arguments.length > 3) {\n throw new Error(`Expected only single child node for iframe`);\n }\n\n el.addEventListener('load', () => {\n let win = el.contentWindow;\n\n if (!win) {\n throw new Error(`Expected frame to have contentWindow`);\n }\n\n if (typeof content === 'string') {\n writeToWindow(win, content);\n } else {\n writeElementToWindow(win, content);\n }\n });\n\n } else if (name === 'script') {\n\n if (typeof content !== 'string') {\n throw new TypeError(`Expected ${ name } tag content to be string, got ${ typeof content }`);\n }\n\n if (arguments.length > 3) {\n throw new Error(`Expected only text content for ${ name } tag`);\n }\n\n el.text = content;\n\n } else {\n for (let i = 2; i < arguments.length; i++) {\n if (typeof arguments[i] === 'string') {\n let textNode = doc.createTextNode(arguments[i]);\n appendChild(el, textNode);\n } else {\n appendChild(el, arguments[i]);\n }\n }\n }\n\n return el;\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\n\n/* DeNodeify\n ---------\n\n Turns a method from a function which accepts a callback, into a function which returns a promise.\n*/\n\nexport function denodeify(method : (...args : Array) => T) : (...args : Array) => ZalgoPromise {\n\n return function denodeifyWrapper() : ZalgoPromise {\n\n let self = this;\n let args = Array.prototype.slice.call(arguments);\n\n if (args.length >= method.length) {\n return ZalgoPromise.resolve(method.apply(self, args));\n }\n\n return new ZalgoPromise((resolve, reject) => {\n args.push((err, result) => {\n\n if (err && !(err instanceof Error)) {\n throw new Error(`Passed non-Error object in callback: [ ${ err } ] -- callbacks should either be called with callback(new Error(...)) or callback(null, result).`);\n }\n\n return err ? reject(err) : resolve(result);\n });\n method.apply(self, args);\n });\n };\n}\n\nexport function promisify(method : (...args : Array) => T | ZalgoPromise) : (...args : Array) => ZalgoPromise {\n return function promisifyWRapper() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n return method.apply(this, arguments);\n });\n };\n}\n\nexport function delay(time : number = 1) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n setTimeout(resolve, time);\n });\n}\n\nexport function cycle(method : Function) : ZalgoPromise {\n return ZalgoPromise.try(method).then(() => cycle(method));\n}\n","/* @flow */\n\nexport function isPerc(str : string) : boolean {\n return typeof str === 'string' && (/^[0-9]+%$/).test(str);\n}\n\nexport function isPx(str : string) : boolean {\n return typeof str === 'string' && (/^[0-9]+px$/).test(str);\n}\n\nexport function toNum(val : string | number) : number {\n\n if (typeof val === 'number') {\n return val;\n }\n\n let match = val.match(/^([0-9]+)(px|%)$/);\n\n if (!match) {\n throw new Error(`Could not match css value from ${ val }`);\n }\n\n return parseInt(match[1], 10);\n}\n\nexport function toPx(val : number | string) : string {\n return `${ toNum(val) }px`;\n}\n\nexport function toCSS(val : number | string) : string {\n\n if (typeof val === 'number') {\n return toPx(val);\n }\n\n return isPerc(val) ? val : toPx(val);\n}\n\nexport function percOf(num : number, perc : string) : number {\n return parseInt(num * toNum(perc) / 100, 10);\n}\n\nexport function normalizeDimension(dim : string | number, max : number) : number {\n if (typeof dim === 'number') {\n return dim;\n } else if (isPerc(dim)) {\n return percOf(max, dim);\n } else if (isPx(dim)) {\n return toNum(dim);\n } else {\n throw new Error(`Can not normalize dimension: ${ dim }`);\n }\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nexport function memoized(target : Object, name : string, descriptor : Object) {\n let method = descriptor.value;\n\n descriptor.value = function memoizedFunction() : T {\n\n this.__memoized__ = this.__memoized__ || {};\n\n if (!this.__memoized__.hasOwnProperty(name)) {\n this.__memoized__[name] = method.apply(this, arguments);\n }\n\n return this.__memoized__[name];\n };\n\n descriptor.value.displayName = `${ name }:memoized`;\n}\n\nexport function promise(target : Object, name : string, descriptor : Object) {\n let method = descriptor.value;\n\n descriptor.value = function promisifiedFunction() : ZalgoPromise {\n return ZalgoPromise.try(method, this, arguments);\n };\n\n descriptor.value.displayName = `${ name }:promisified`;\n}\n","/* @flow */\n\nimport { CONFIG } from 'post-robot/src';\nimport { config, logLevels, info as logInfo, warn as logWarn, error as logError } from 'beaver-logger/client';\n\nexport function setLogLevel(logLevel : string) {\n if (logLevels.indexOf(logLevel) === -1) {\n throw new Error(`Invalid logLevel: ${ logLevel }`);\n }\n config.logLevel = logLevel;\n CONFIG.LOG_LEVEL = logLevel;\n window.LOG_LEVEL = logLevel;\n}\n\nexport function info(name : string, event : string, payload : Object = {}) {\n logInfo(`xc_${ name }_${ event }`, payload);\n}\n\n\n/* Log Warning\n -----------\n\n Log a warning\n*/\n\nexport function warn(name : string, event : string, payload : Object = {}) {\n logWarn(`xc_${ name }_${ event }`, payload);\n}\n\n\n/* Log Error\n ---------\n\n Log an error\n*/\n\nexport function error(name : string, event : string, payload : Object = {}) {\n logError(`xc_${ name }_${ event }`, payload);\n}\n","/* @flow */\n\nimport { isSameDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { __ZOID__ } from '../constants';\n\nexport function globalFor(win : CrossDomainWindowType) : ?Object {\n\n if (!isSameDomain(win)) {\n return;\n }\n\n if (!win[__ZOID__]) {\n win[__ZOID__] = {};\n }\n\n return win[__ZOID__];\n}\n\nexport function localGlobal() : Object {\n let global = globalFor(window);\n\n if (!global) {\n throw new Error(`Could not get local global`);\n }\n\n return global;\n}\n\nexport let global = localGlobal();\n","/* @flow */\n\nexport * from './dom';\nexport * from './fn';\nexport * from './promise';\nexport * from './util';\nexport * from './css';\nexport * from './decorators';\nexport * from './logger';\nexport * from './global';\n","/* @flow */\n\nexport function isRegex(item : mixed) : boolean {\n return Object.prototype.toString.call(item) === '[object RegExp]';\n}\n\n// eslint-disable-next-line no-unused-vars\nexport function noop(...args : Array) {\n // pass\n}\n","/* @flow */\n\nexport const PROTOCOL = {\n MOCK: ('mock:' : 'mock:'),\n FILE: ('file:' : 'file:'),\n ABOUT: ('about:' : 'about:')\n};\n\nexport const WILDCARD = '*';\n\nexport const WINDOW_TYPE = {\n IFRAME: ('iframe' : 'iframe'),\n POPUP: ('popup' : 'popup')\n};\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { isRegex, noop } from './util';\nimport type { CrossDomainWindowType, SameDomainWindowType, DomainMatcher } from './types';\nimport { PROTOCOL, WILDCARD } from './constants';\n\nlet IE_WIN_ACCESS_ERROR = 'Call was rejected by callee.\\r\\n';\n\nexport function isFileProtocol(win : SameDomainWindowType = window) : boolean {\n return win.location.protocol === PROTOCOL.FILE;\n}\n\nexport function isAboutProtocol(win : SameDomainWindowType = window) : boolean {\n return win.location.protocol === PROTOCOL.ABOUT;\n}\n\nexport function getParent(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n\n if (!win) {\n return;\n }\n\n try {\n if (win.parent && win.parent !== win) {\n return win.parent;\n }\n } catch (err) {\n // pass\n }\n}\n\nexport function getOpener(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n\n if (!win) {\n return;\n }\n\n // Make sure we're not actually an iframe which has had window.open() called on us\n if (getParent(win)) {\n return;\n }\n\n try {\n return win.opener;\n } catch (err) {\n // pass\n }\n}\n\nexport function canReadFromWindow(win : CrossDomainWindowType | SameDomainWindowType) : boolean {\n try {\n // $FlowFixMe\n noop(win && win.location && win.location.href);\n return true;\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\nexport function getActualDomain(win? : SameDomainWindowType = window) : string {\n\n let location = win.location;\n\n if (!location) {\n throw new Error(`Can not read window location`);\n }\n\n let protocol = location.protocol;\n\n if (!protocol) {\n throw new Error(`Can not read window protocol`);\n }\n\n if (protocol === PROTOCOL.FILE) {\n return `${ PROTOCOL.FILE }//`;\n }\n\n if (protocol === PROTOCOL.ABOUT) {\n\n let parent = getParent(win);\n if (parent && canReadFromWindow(parent)) {\n // $FlowFixMe\n return getActualDomain(parent);\n }\n\n return `${ PROTOCOL.ABOUT }//`;\n }\n\n let host = location.host;\n\n if (!host) {\n throw new Error(`Can not read window host`);\n }\n\n return `${ protocol }//${ host }`;\n}\n\nexport function getDomain(win? : SameDomainWindowType = window) : string {\n\n let domain = getActualDomain(win);\n\n if (domain && win.mockDomain && win.mockDomain.indexOf(PROTOCOL.MOCK) === 0) {\n return win.mockDomain;\n }\n\n return domain;\n}\n\nexport function isBlankDomain(win : CrossDomainWindowType) : boolean {\n try {\n // $FlowFixMe\n if (!win.location.href) {\n return true;\n }\n\n if (win.location.href === 'about:blank') {\n return true;\n }\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\nexport function isActuallySameDomain(win : CrossDomainWindowType) : boolean {\n\n try {\n if (win === window) {\n return true;\n }\n\n } catch (err) {\n // pass\n }\n\n try {\n let desc = Object.getOwnPropertyDescriptor(win, 'location');\n\n if (desc && desc.enumerable === false) {\n return false;\n }\n\n } catch (err) {\n // pass\n }\n\n try {\n // $FlowFixMe\n if (isAboutProtocol(win) && canReadFromWindow(win)) {\n return true;\n }\n } catch (err) {\n // pass\n }\n\n try {\n // $FlowFixMe\n if (getActualDomain(win) === getActualDomain(window)) {\n return true;\n }\n\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\nexport function isSameDomain(win : CrossDomainWindowType | SameDomainWindowType) : boolean {\n\n if (!isActuallySameDomain(win)) {\n return false;\n }\n\n try {\n\n if (win === window) {\n return true;\n }\n\n // $FlowFixMe\n if (isAboutProtocol(win) && canReadFromWindow(win)) {\n return true;\n }\n\n // $FlowFixMe\n if (getDomain(window) === getDomain(win)) {\n return true;\n }\n\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\n\nexport function assertSameDomain(win : CrossDomainWindowType | SameDomainWindowType) : SameDomainWindowType {\n if (!isSameDomain(win)) {\n throw new Error(`Expected window to be same domain`);\n }\n\n // $FlowFixMe\n return win;\n}\n\nexport function getParents(win : CrossDomainWindowType) : Array {\n\n let result = [];\n\n try {\n\n while (win.parent !== win) {\n result.push(win.parent);\n win = win.parent;\n }\n\n } catch (err) {\n // pass\n }\n\n return result;\n}\n\nexport function isAncestorParent(parent : CrossDomainWindowType, child : CrossDomainWindowType) : boolean {\n\n if (!parent || !child) {\n return false;\n }\n\n let childParent = getParent(child);\n\n if (childParent) {\n return childParent === parent;\n }\n\n if (getParents(child).indexOf(parent) !== -1) {\n return true;\n }\n\n return false;\n}\n\nexport function getFrames(win : CrossDomainWindowType) : Array {\n\n let result = [];\n\n let frames;\n\n try {\n frames = win.frames;\n } catch (err) {\n frames = win;\n }\n\n let len;\n\n try {\n len = frames.length;\n } catch (err) {\n // pass\n }\n\n if (len === 0) {\n return result;\n }\n\n if (len) {\n for (let i = 0; i < len; i++) {\n\n let frame;\n\n try {\n frame = frames[i];\n } catch (err) {\n continue;\n }\n\n result.push(frame);\n }\n\n return result;\n }\n\n for (let i = 0; i < 100; i++) {\n let frame;\n\n try {\n frame = frames[i];\n } catch (err) {\n return result;\n }\n\n if (!frame) {\n return result;\n }\n\n result.push(frame);\n }\n\n return result;\n}\n\n\nexport function getAllChildFrames(win : CrossDomainWindowType) : Array {\n\n let result = [];\n\n for (let frame of getFrames(win)) {\n result.push(frame);\n\n for (let childFrame of getAllChildFrames(frame)) {\n result.push(childFrame);\n }\n }\n\n return result;\n}\n\nexport function getTop(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n\n try {\n if (win.top) {\n return win.top;\n }\n } catch (err) {\n // pass\n }\n\n if (getParent(win) === win) {\n return win;\n }\n\n try {\n if (isAncestorParent(window, win) && window.top) {\n return window.top;\n }\n } catch (err) {\n // pass\n }\n\n try {\n if (isAncestorParent(win, window) && window.top) {\n return window.top;\n }\n } catch (err) {\n // pass\n }\n\n for (let frame of getAllChildFrames(win)) {\n try {\n if (frame.top) {\n return frame.top;\n }\n } catch (err) {\n // pass\n }\n\n if (getParent(frame) === frame) {\n return frame;\n }\n }\n}\n\nexport function getNextOpener(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n return getOpener(getTop(win) || win);\n}\n\nexport function getUltimateTop(win? : CrossDomainWindowType = window) : CrossDomainWindowType {\n let opener = getNextOpener(win);\n\n if (opener) {\n return getUltimateTop(opener);\n }\n\n return top;\n}\n\nexport function getAllFramesInWindow(win : CrossDomainWindowType) : Array {\n let top = getTop(win);\n\n if (!top) {\n throw new Error(`Can not determine top window`);\n }\n\n return [ ...getAllChildFrames(top), top ];\n}\n\nexport function getAllWindows(win? : CrossDomainWindowType = window) : $ReadOnlyArray {\n let frames = getAllFramesInWindow(win);\n let opener = getNextOpener(win);\n\n if (opener) {\n return [ ...getAllWindows(opener), ...frames ];\n } else {\n return frames;\n }\n}\n\nexport function isTop(win : CrossDomainWindowType) : boolean {\n return win === getTop(win);\n}\n\nexport function isFrameWindowClosed(frame : HTMLIFrameElement) : boolean {\n\n if (!frame.contentWindow) {\n return true;\n }\n\n if (!frame.parentNode) {\n return true;\n }\n\n let doc = frame.ownerDocument;\n\n if (doc && doc.documentElement && !doc.documentElement.contains(frame)) {\n return true;\n }\n\n return false;\n}\n\nfunction safeIndexOf(collection : Array, item : T) : number {\n for (let i = 0; i < collection.length; i++) {\n\n try {\n if (collection[i] === item) {\n return i;\n }\n } catch (err) {\n // pass\n }\n }\n\n return -1;\n}\n\nlet iframeWindows = [];\nlet iframeFrames = [];\n\nexport function isWindowClosed(win : CrossDomainWindowType, allowMock : boolean = true) : boolean {\n\n try {\n if (win === window) {\n return false;\n }\n } catch (err) {\n return true;\n }\n\n try {\n if (!win) {\n return true;\n }\n\n } catch (err) {\n return true;\n }\n\n try {\n if (win.closed) {\n return true;\n }\n\n } catch (err) {\n\n // I love you so much IE\n\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return false;\n }\n\n return true;\n }\n\n\n if (allowMock && isSameDomain(win)) {\n try {\n // $FlowFixMe\n if (win.mockclosed) {\n return true;\n }\n } catch (err) {\n // pass\n }\n }\n\n // Mobile safari\n\n try {\n if (!win.parent || !win.top) {\n return true;\n }\n } catch (err) {\n // pass\n }\n\n // Yes, this actually happens in IE. win === win errors out when the window\n // is from an iframe, and the iframe was removed from the page.\n\n try {\n noop(win === win); // eslint-disable-line no-self-compare\n } catch (err) {\n return true;\n }\n\n // IE orphaned frame\n\n let iframeIndex = safeIndexOf(iframeWindows, win);\n\n if (iframeIndex !== -1) {\n let frame = iframeFrames[iframeIndex];\n\n if (frame && isFrameWindowClosed(frame)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction cleanIframes() {\n for (let i = 0; i < iframeWindows.length; i++) {\n let closed = false;\n\n try {\n closed = iframeWindows[i].closed;\n } catch (err) {\n // pass\n }\n\n if (closed) {\n iframeFrames.splice(i, 1);\n iframeWindows.splice(i, 1);\n }\n }\n}\n\nexport function linkFrameWindow(frame : HTMLIFrameElement) {\n\n cleanIframes();\n\n if (frame && frame.contentWindow) {\n try {\n iframeWindows.push(frame.contentWindow);\n iframeFrames.push(frame);\n } catch (err) {\n // pass\n }\n }\n}\n\nexport function getUserAgent(win : ?SameDomainWindowType) : string {\n win = win || window;\n return win.navigator.mockUserAgent || win.navigator.userAgent;\n}\n\n\nexport function getFrameByName(win : CrossDomainWindowType, name : string) : ?CrossDomainWindowType {\n\n let winFrames = getFrames(win);\n\n for (let childFrame of winFrames) {\n try {\n // $FlowFixMe\n if (isSameDomain(childFrame) && childFrame.name === name && winFrames.indexOf(childFrame) !== -1) {\n return childFrame;\n }\n } catch (err) {\n // pass\n }\n }\n\n try {\n // $FlowFixMe\n if (winFrames.indexOf(win.frames[name]) !== -1) {\n // $FlowFixMe\n return win.frames[name];\n }\n } catch (err) {\n // pass\n }\n\n try {\n if (winFrames.indexOf(win[name]) !== -1) {\n return win[name];\n }\n } catch (err) {\n // pass\n }\n}\n\nexport function findChildFrameByName(win : CrossDomainWindowType, name : string) : ?CrossDomainWindowType {\n\n let frame = getFrameByName(win, name);\n\n if (frame) {\n return frame;\n }\n\n for (let childFrame of getFrames(win)) {\n let namedFrame = findChildFrameByName(childFrame, name);\n\n if (namedFrame) {\n return namedFrame;\n }\n }\n}\n\nexport function findFrameByName(win : CrossDomainWindowType, name : string) : ?CrossDomainWindowType {\n\n let frame;\n\n frame = getFrameByName(win, name);\n\n if (frame) {\n return frame;\n }\n\n let top = getTop(win) || win;\n\n return findChildFrameByName(top, name);\n}\n\nexport function isParent(win : CrossDomainWindowType, frame : CrossDomainWindowType) : boolean {\n\n let frameParent = getParent(frame);\n\n if (frameParent) {\n return frameParent === win;\n }\n\n for (let childFrame of getFrames(win)) {\n if (childFrame === frame) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function isOpener(parent : CrossDomainWindowType, child : CrossDomainWindowType) : boolean {\n\n return parent === getOpener(child);\n}\n\nexport function getAncestor(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n win = win || window;\n\n let opener = getOpener(win);\n\n if (opener) {\n return opener;\n }\n\n let parent = getParent(win);\n\n if (parent) {\n return parent;\n }\n}\n\nexport function getAncestors(win : CrossDomainWindowType) : Array {\n\n let results = [];\n\n let ancestor = win;\n\n while (ancestor) {\n ancestor = getAncestor(ancestor);\n if (ancestor) {\n results.push(ancestor);\n }\n }\n\n return results;\n}\n\n\nexport function isAncestor(parent : CrossDomainWindowType, child : CrossDomainWindowType) : boolean {\n\n let actualParent = getAncestor(child);\n\n if (actualParent) {\n if (actualParent === parent) {\n return true;\n }\n\n return false;\n }\n\n if (child === parent) {\n return false;\n }\n\n if (getTop(child) === child) {\n return false;\n }\n\n for (let frame of getFrames(parent)) {\n if (frame === child) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function isPopup(win? : CrossDomainWindowType = window) : boolean {\n return Boolean(getOpener(win));\n}\n\nexport function isIframe(win? : CrossDomainWindowType = window) : boolean {\n return Boolean(getParent(win));\n}\n\nexport function isFullpage(win? : CrossDomainWindowType = window) : boolean {\n return Boolean(!isIframe(win) && !isPopup(win));\n}\n\nfunction anyMatch(collection1, collection2) : boolean {\n\n for (let item1 of collection1) {\n for (let item2 of collection2) {\n if (item1 === item2) {\n return true;\n }\n }\n }\n\n return false;\n}\n\nexport function getDistanceFromTop(win : CrossDomainWindowType = window) : number {\n let distance = 0;\n let parent = win;\n\n while (parent) {\n parent = getParent(parent);\n if (parent) {\n distance += 1;\n }\n }\n\n return distance;\n}\n\nexport function getNthParent(win : CrossDomainWindowType, n : number = 1) : ?CrossDomainWindowType {\n let parent = win;\n\n for (let i = 0; i < n; i++) {\n if (!parent) {\n return;\n }\n\n parent = getParent(parent);\n }\n\n return parent;\n}\n\nexport function getNthParentFromTop(win : CrossDomainWindowType, n : number = 1) : ?CrossDomainWindowType {\n return getNthParent(win, getDistanceFromTop(win) - n);\n}\n\nexport function isSameTopWindow(win1 : CrossDomainWindowType, win2 : CrossDomainWindowType) : boolean {\n\n let top1 = getTop(win1) || win1;\n let top2 = getTop(win2) || win2;\n\n try {\n if (top1 && top2) {\n if (top1 === top2) {\n return true;\n }\n\n return false;\n }\n } catch (err) {\n // pass\n }\n\n let allFrames1 = getAllFramesInWindow(win1);\n let allFrames2 = getAllFramesInWindow(win2);\n\n if (anyMatch(allFrames1, allFrames2)) {\n return true;\n }\n\n let opener1 = getOpener(top1);\n let opener2 = getOpener(top2);\n\n if (opener1 && anyMatch(getAllFramesInWindow(opener1), allFrames2)) {\n return false;\n }\n\n if (opener2 && anyMatch(getAllFramesInWindow(opener2), allFrames1)) {\n return false;\n }\n\n return false;\n}\n\nexport function matchDomain(pattern : DomainMatcher, origin : DomainMatcher) : boolean {\n\n if (typeof pattern === 'string') {\n\n if (typeof origin === 'string') {\n return pattern === WILDCARD || origin === pattern;\n }\n\n if (isRegex(origin)) {\n return false;\n }\n\n if (Array.isArray(origin)) {\n return false;\n }\n }\n\n if (isRegex(pattern)) {\n\n if (isRegex(origin)) {\n return pattern.toString() === origin.toString();\n }\n\n if (Array.isArray(origin)) {\n return false;\n }\n\n // $FlowFixMe\n return Boolean(origin.match(pattern));\n }\n\n if (Array.isArray(pattern)) {\n\n if (Array.isArray(origin)) {\n return JSON.stringify(pattern) === JSON.stringify(origin);\n }\n\n if (isRegex(origin)) {\n return false;\n }\n\n return pattern.some(subpattern => matchDomain(subpattern, origin));\n }\n\n return false;\n}\n\nexport function stringifyDomainPattern(pattern : DomainMatcher) : string {\n if (Array.isArray(pattern)) {\n return `(${ pattern.join(' | ') })`;\n } else if (isRegex(pattern)) {\n return `RegExp(${ pattern.toString() }`;\n } else {\n return pattern.toString();\n }\n}\n\nexport function getDomainFromUrl(url : string) : string {\n\n let domain;\n\n if (url.match(/^(https?|mock|file):\\/\\//)) {\n domain = url;\n } else {\n return getDomain();\n }\n\n domain = domain.split('/').slice(0, 3).join('/');\n\n return domain;\n}\n\nexport function onCloseWindow(win : CrossDomainWindowType, callback : Function, delay : number = 1000, maxtime : number = Infinity) : { cancel : () => void } {\n\n let timeout;\n\n let check = () => {\n\n if (isWindowClosed(win)) {\n\n if (timeout) {\n clearTimeout(timeout);\n }\n\n return callback();\n }\n\n if (maxtime <= 0) {\n clearTimeout(timeout);\n } else {\n maxtime -= delay;\n timeout = setTimeout(check, delay);\n }\n };\n\n check();\n\n return {\n cancel() {\n if (timeout) {\n clearTimeout(timeout);\n }\n }\n };\n}\n\n// eslint-disable-next-line complexity\nexport function isWindow(obj : Object) : boolean {\n\n try {\n if (obj === window) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (Object.prototype.toString.call(obj) === '[object Window]') {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (window.Window && obj instanceof window.Window) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (obj && obj.self === obj) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (obj && obj.parent === obj) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (obj && obj.top === obj) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (noop(obj === obj) === '__unlikely_value__') { // eslint-disable-line no-self-compare\n return false;\n }\n\n } catch (err) {\n return true;\n }\n\n try {\n if (obj && obj.__cross_domain_utils_window_check__ === '__unlikely_value__') {\n return false;\n }\n\n } catch (err) {\n return true;\n }\n\n return false;\n}\n\nexport function isBrowser() : boolean {\n return (typeof window !== 'undefined' && typeof window.location !== 'undefined');\n}\n\nexport function isCurrentDomain(domain : string) : boolean {\n if (!isBrowser()) {\n return false;\n }\n\n return (getDomain() === domain);\n}\n\nexport function isMockDomain(domain : string) : boolean {\n return domain.indexOf(PROTOCOL.MOCK) === 0;\n}\n\nexport function normalizeMockUrl(url : string) : string {\n if (!isMockDomain(getDomainFromUrl(url))) {\n return url;\n }\n\n if (!__TEST__) {\n throw new Error(`Mock urls not supported out of test mode`);\n }\n\n return url.replace(/^mock:\\/\\/[^/]+/, getActualDomain(window));\n}\n\nexport function closeWindow(win : CrossDomainWindowType) {\n try {\n win.close();\n } catch (err) {\n // pass\n }\n}\n\nexport function getFrameForWindow(win : CrossDomainWindowType) : ?HTMLElement {\n if (isSameDomain(win)) {\n return assertSameDomain(win).frameElement;\n }\n\n for (const frame of document.querySelectorAll('iframe')) {\n if (frame && frame.contentWindow && frame.contentWindow === win) {\n return frame;\n }\n }\n}\n","/* @flow */\n\n// export something to force webpack to see this as an ES module\nexport const TYPES = true;\n\nexport type CrossDomainLocationType = {|\n\n|};\n\nexport type CrossDomainWindowType = {|\n location : string | CrossDomainLocationType,\n self : CrossDomainWindowType,\n closed : boolean,\n open : (string, string, string) => CrossDomainWindowType,\n close : () => void,\n focus : () => void,\n top : CrossDomainWindowType,\n frames : Array,\n opener ? : CrossDomainWindowType,\n parent : CrossDomainWindowType,\n length : number,\n postMessage : (string, string) => void\n|};\n\nexport type SameDomainWindowType = Object & {\n location : string | Object,\n self : CrossDomainWindowType,\n closed : boolean,\n open : (string, string, string) => CrossDomainWindowType,\n close : () => void,\n focus : () => void,\n XMLHttpRequest : typeof XMLHttpRequest,\n document : Document,\n navigator : {\n userAgent : string,\n mockUserAgent? : string\n }\n};\n\nexport type DomainMatcher = string | Array | $ReadOnlyArray | RegExp;\n","/* @flow */\n\nexport * from './utils';\nexport * from './types';\nexport * from './constants';\n","/* @flow */\n\nexport const ZOID = `zoid`;\n\nexport const __ZOID__ = `__${ ZOID }__`;\n\nexport const POST_MESSAGE = {\n INIT: `${ ZOID }_init`,\n PROPS: `${ ZOID }_props`,\n PROP_CALLBACK: `${ ZOID }_prop_callback`,\n CLOSE: `${ ZOID }_close`,\n CHECK_CLOSE: `${ ZOID }_check_close`,\n REDIRECT: `${ ZOID }_redirect`,\n RESIZE: `${ ZOID }_resize`,\n DELEGATE: `${ ZOID }_delegate`,\n ALLOW_DELEGATE: `${ ZOID }_allow_delegate`,\n ERROR: `${ ZOID }_error`,\n HIDE: `${ ZOID }_hide`,\n SHOW: `${ ZOID }_show`\n};\n\nexport const PROP_TYPES = {\n STRING: `string`,\n OBJECT: `object`,\n FUNCTION: `function`,\n BOOLEAN: `boolean`,\n NUMBER: `number`\n};\n\nexport const INITIAL_PROPS = {\n RAW: 'raw',\n UID: 'uid'\n};\n\nexport const WINDOW_REFERENCES = {\n OPENER: `opener`,\n TOP: `top`,\n PARENT: `parent`,\n GLOBAL: `global`\n};\n\nexport const PROP_TYPES_LIST : Array = Object.keys(PROP_TYPES).map(key => PROP_TYPES[key]);\n\nexport const CONTEXT_TYPES = {\n IFRAME: `iframe`,\n POPUP: `popup`\n};\n\nexport const CLASS_NAMES = {\n ZOID: `${ ZOID }`,\n OUTLET: `${ ZOID }-outlet`,\n COMPONENT_FRAME: `${ ZOID }-component-frame`,\n PRERENDER_FRAME: `${ ZOID }-prerender-frame`,\n VISIBLE: `${ ZOID }-visible`,\n INVISIBLE: `${ ZOID }-invisible`\n};\n\nexport const EVENTS = {\n CLOSE: `${ ZOID }-close`\n};\n\nexport const ATTRIBUTES = {\n IFRAME_PLACEHOLDER: `data-zoid-${ ZOID }-placeholder`\n};\n\nexport const ANIMATION_NAMES = {\n SHOW_CONTAINER: `${ ZOID }-show-container`,\n SHOW_COMPONENT: `${ ZOID }-show-component`,\n HIDE_CONTAINER: `${ ZOID }-hide-container`,\n HIDE_COMPONENT: `${ ZOID }-hide-component`\n};\n\nexport const EVENT_NAMES = {\n CLICK: 'click'\n};\n\nexport const CLOSE_REASONS = {\n PARENT_CALL: 'parent_call',\n CHILD_CALL: 'child_call',\n CLOSE_DETECTED: 'close_detected',\n USER_CLOSED: 'user_closed',\n PARENT_CLOSE_DETECTED: 'parent_close_detected'\n};\n\nexport const CONTEXT_TYPES_LIST : Array = Object.keys(CONTEXT_TYPES).map(key => CONTEXT_TYPES[key]);\n\nexport const DELEGATE = {\n CALL_ORIGINAL: 'call_original',\n CALL_DELEGATE: 'call_delegate'\n};\n\nexport const WILDCARD = '*';\n\nexport const DEFAULT_DIMENSIONS = {\n WIDTH: 300,\n HEIGHT: 150\n};\n","/* @flow */\n\nimport { CONSTANTS } from './conf';\n\nexport let global : Object = window[CONSTANTS.WINDOW_PROPS.POSTROBOT] = window[CONSTANTS.WINDOW_PROPS.POSTROBOT] || {};\n\n// Backwards compatibility\n\nglobal.registerSelf = () => {\n // pass\n};\n","/* @flow */\n\nexport let CONSTANTS = {\n\n POST_MESSAGE_TYPE: {\n REQUEST: 'postrobot_message_request',\n RESPONSE: 'postrobot_message_response',\n ACK: 'postrobot_message_ack'\n },\n\n POST_MESSAGE_ACK: {\n SUCCESS: 'success',\n ERROR: 'error'\n },\n\n POST_MESSAGE_NAMES: {\n METHOD: 'postrobot_method',\n HELLO: 'postrobot_ready',\n OPEN_TUNNEL: 'postrobot_open_tunnel'\n },\n\n WINDOW_TYPES: {\n FULLPAGE: 'fullpage',\n POPUP: 'popup',\n IFRAME: 'iframe'\n },\n\n WINDOW_PROPS: {\n POSTROBOT: '__postRobot__'\n },\n\n SERIALIZATION_TYPES: {\n METHOD: 'postrobot_method',\n ERROR: 'postrobot_error',\n PROMISE: 'postrobot_promise',\n ZALGO_PROMISE: 'postrobot_zalgo_promise',\n REGEX: 'regex'\n },\n\n SEND_STRATEGIES: {\n POST_MESSAGE: 'postrobot_post_message',\n BRIDGE: 'postrobot_bridge',\n GLOBAL: 'postrobot_global'\n },\n\n MOCK_PROTOCOL: 'mock:',\n FILE_PROTOCOL: 'file:',\n\n BRIDGE_NAME_PREFIX: '__postrobot_bridge__',\n POSTROBOT_PROXY: '__postrobot_proxy__',\n\n WILDCARD: '*'\n};\n\nexport const POST_MESSAGE_NAMES = {\n METHOD: 'postrobot_method',\n HELLO: 'postrobot_hello',\n OPEN_TUNNEL: 'postrobot_open_tunnel'\n};\n\nexport let POST_MESSAGE_NAMES_LIST : Array = Object.keys(POST_MESSAGE_NAMES)\n .map(key => POST_MESSAGE_NAMES[key]);\n","/* @flow */\n\nimport { CONSTANTS } from './constants';\n\nexport let CONFIG : Object = {\n\n ALLOW_POSTMESSAGE_POPUP: ('__ALLOW_POSTMESSAGE_POPUP__' in window)\n ? window.__ALLOW_POSTMESSAGE_POPUP__\n : __POST_ROBOT__.__ALLOW_POSTMESSAGE_POPUP__,\n\n BRIDGE_TIMEOUT: 5000,\n CHILD_WINDOW_TIMEOUT: 5000,\n\n ACK_TIMEOUT: (window.navigator.userAgent.match(/MSIE/i) !== -1 && !__TEST__) ? 10000 : 2000,\n RES_TIMEOUT: __TEST__ ? 2000 : -1,\n \n ALLOWED_POST_MESSAGE_METHODS: {\n [ CONSTANTS.SEND_STRATEGIES.POST_MESSAGE ]: true,\n [ CONSTANTS.SEND_STRATEGIES.BRIDGE ]: true,\n [ CONSTANTS.SEND_STRATEGIES.GLOBAL ]: true\n },\n\n ALLOW_SAME_ORIGIN: false\n};\n\nif (window.location.href.indexOf(CONSTANTS.FILE_PROTOCOL) === 0) {\n CONFIG.ALLOW_POSTMESSAGE_POPUP = true;\n}\n","/* @flow */\n\nexport * from './config';\nexport * from './constants';\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","/* @flow */\n/* eslint max-lines: off */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nexport { noop, once, uniqueID, isLocalStorageEnabled } from 'belter/src';\n\nconst moduleGlobal = {};\n\nexport function getGlobal() : Object {\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n return moduleGlobal;\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport function memoize(method : (...args : $ReadOnlyArray) => R, options : { time? : number } = {}) : ((...args : $ReadOnlyArray) => R) {\n\n const cache : { [key : string] : { time : number, value : R } } = {};\n\n // eslint-disable-next-line no-unused-vars, flowtype/no-weak-types\n return function memoizedFunction(...args : $ReadOnlyArray) : R {\n\n let key : string;\n\n try {\n key = JSON.stringify(Array.prototype.slice.call(arguments));\n } catch (err) {\n throw new Error(`Arguments not serializable -- can not be used to memoize`);\n }\n\n const time = options.time;\n\n if (cache[key] && time && (Date.now() - cache[key].time) < time) {\n delete cache[key];\n }\n\n const glob = getGlobal();\n\n if (glob.__CACHE_START_TIME__ && cache[key] && cache[key].time < glob.__CACHE_START_TIME__) {\n delete cache[key];\n }\n\n if (cache[key]) {\n return cache[key].value;\n }\n\n cache[key] = {\n time: Date.now(),\n value: method.apply(this, arguments)\n };\n\n return cache[key].value;\n };\n}\n\nexport function hashStr(str : string) : number {\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n hash += str[i].charCodeAt(0) * Math.pow((i % 10) + 1, 5);\n }\n return Math.floor(Math.pow(Math.sqrt(hash), 5));\n}\n\nexport function strHashStr(str : string) : string {\n let hash = '';\n\n for (let i = 0; i < str.length; i++) {\n let total = (str[i].charCodeAt(0) * i);\n\n if (str[i + 1]) {\n total += (str[i + 1].charCodeAt(0) * (i - 1));\n }\n\n hash += String.fromCharCode(97 + (Math.abs(total) % 26));\n }\n\n return hash;\n}\n\nexport function match(str : string, pattern : RegExp) : ?string {\n const regmatch = str.match(pattern);\n if (regmatch) {\n return regmatch[1];\n }\n}\n\nexport function safeJSON(item : mixed) : string {\n return JSON.stringify(item, (key, val) => {\n\n if (typeof val === 'function') {\n return `<${ typeof val }>`;\n }\n\n try {\n JSON.stringify(val);\n } catch (err) {\n return `<${ typeof val }>`;\n }\n\n return val;\n });\n}\n\ntype Listener = {|\n listen : (method : Function) => {\n cancel : () => void\n },\n once : (method : Function) => void,\n trigger : (...args : $ReadOnlyArray) => void\n|};\n\nexport function eventEmitter() : Listener {\n\n const listeners = [];\n\n return {\n listen(method : Function) : { cancel : () => void } {\n listeners.push(method);\n\n return {\n cancel() {\n listeners.splice(listeners.indexOf(method), 1);\n }\n };\n },\n\n once(method : Function) {\n const listener = this.listen(function onceListener() {\n method.apply(null, arguments);\n listener.cancel();\n });\n },\n\n trigger(...args : $ReadOnlyArray) {\n for (const listener of listeners) {\n listener(...args);\n }\n }\n };\n}\n\nexport function awaitKey(obj : Object, key : string) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n\n let value = obj[key];\n\n if (value) {\n return resolve(value);\n }\n\n delete obj[key];\n\n Object.defineProperty(obj, key, {\n\n configurable: true,\n\n set(item) {\n value = item;\n\n if (value) {\n resolve(value);\n }\n },\n\n get() : mixed {\n return value;\n }\n });\n });\n}\n\nexport function stringifyError(err : mixed, level : number = 1) : string {\n\n if (level >= 3) {\n return 'stringifyError stack overflow';\n }\n\n try {\n if (!err) {\n return ``;\n }\n\n if (typeof err === 'string') {\n return err;\n }\n\n if (err instanceof Error) {\n const stack = err && err.stack;\n const message = err && err.message;\n\n if (stack && message) {\n if (stack.indexOf(message) !== -1) {\n return stack;\n } else {\n return `${ message }\\n${ stack }`;\n }\n } else if (stack) {\n return stack;\n } else if (message) {\n return message;\n }\n }\n\n if (typeof err.toString === 'function') {\n return err.toString();\n }\n\n return Object.prototype.toString.call(err);\n\n } catch (newErr) { // eslint-disable-line unicorn/catch-error-name\n return `Error while stringifying error: ${ stringifyError(newErr, level + 1) }`;\n }\n}\n\nexport function stringifyErrorMessage(err : mixed) : string {\n\n const defaultMessage = ``;\n\n if (!err) {\n return defaultMessage;\n }\n\n if (err instanceof Error) {\n return err.message || defaultMessage;\n }\n\n if (typeof err.message === 'string') {\n return err.message || defaultMessage;\n }\n\n return defaultMessage;\n}\n\nexport function stringify(item : mixed) : string {\n if (typeof item === 'string') {\n return item;\n }\n\n if (item && typeof item.toString === 'function') {\n return item.toString();\n }\n\n return Object.prototype.toString.call(item);\n}\n\nexport function domainMatches(hostname : string, domain : string) : boolean {\n hostname = hostname.split('://')[1];\n const index = hostname.indexOf(domain);\n return (index !== -1 && hostname.slice(index) === domain);\n}\n\nexport function patchMethod(obj : Object, name : string, handler : Function) {\n const original = obj[name];\n\n obj[name] = function patchedMethod() : mixed {\n return handler({\n context: this,\n args: Array.prototype.slice.call(arguments),\n original,\n callOriginal: () => original.apply(this, arguments)\n });\n };\n}\n\nexport function isObject(obj : mixed) : boolean {\n return (typeof obj === 'object' && obj !== null);\n}\n\nexport function extend(obj : T, source : Object) : T {\n if (!source) {\n return obj;\n }\n\n if (Object.assign) { // eslint-disable-line compat/compat\n return Object.assign(obj, source); // eslint-disable-line compat/compat\n }\n\n for (const key in source) {\n if (source.hasOwnProperty(key)) {\n obj[key] = source[key];\n }\n }\n\n return obj;\n}\n\nexport function deepExtend (obj : T, source : Object) : T {\n if (!source) {\n return obj;\n }\n\n for (const key in source) {\n if (source.hasOwnProperty(key)) {\n if (isObject(obj[key]) && isObject(source[key])) {\n deepExtend(obj[key], source[key]);\n } else {\n obj[key] = source[key];\n }\n }\n }\n\n return obj;\n}\n\nexport function hasValue(obj : { [string] : T }, value : T) : boolean {\n for (const key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] === value) {\n return true;\n }\n }\n return false;\n}\n\nexport function contains(arr : $ReadOnlyArray, value : T) : boolean {\n return arr.indexOf(value) !== -1;\n}\n\n// eslint-disable-next-line flowtype/no-mutable-array\nexport function sortBy(arr : Array, order : $ReadOnlyArray) : Array {\n return arr.sort((a : T, b : T) => {\n return order.indexOf(a) - order.indexOf(b);\n });\n}\n\nexport function reverseMap(obj : { [string] : string }) : { [string] : string } {\n const result = {};\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n result[obj[key]] = key;\n }\n }\n return result;\n}\n\n// eslint-disable-next-line flowtype/no-mutable-array\nexport function arrayRemove(arr : Array, item : T) {\n arr.splice(arr.indexOf(item), 1);\n}\n\nexport function identity(item : T) : T {\n return item;\n}\n\nexport function values(obj : { [string] : T }) : $ReadOnlyArray {\n const result = [];\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n result.push(obj[key]);\n }\n }\n return result;\n}\n\nexport function perc(pixels : number, percentage : number) : number {\n return Math.round((pixels * percentage) / 100);\n}\n\nexport function min(...args : $ReadOnlyArray) : number {\n return Math.min(...args);\n}\n\nexport function max(...args : $ReadOnlyArray) : number {\n return Math.max(...args);\n}\n\nexport function regexMap(str : string, regex : RegExp, handler : () => T) : $ReadOnlyArray {\n const results = [];\n\n // $FlowFixMe\n str.replace(regex, function regexMapMatcher() {\n results.push(handler.apply(null, arguments));\n });\n\n return results;\n}\n","/* @flow */\n\nimport { isSameDomain, isSameTopWindow, isActuallySameDomain, getActualDomain, getDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONSTANTS } from '../../conf';\nimport { needsGlobalMessagingForBrowser } from '../../lib';\n\nexport let SEND_MESSAGE_STRATEGIES = {};\n\n\nSEND_MESSAGE_STRATEGIES[CONSTANTS.SEND_STRATEGIES.POST_MESSAGE] = (win : CrossDomainWindowType, serializedMessage : string, domain : (string | Array)) => {\n\n if (__POST_ROBOT__.__IE_POPUP_SUPPORT__) {\n try {\n require('../../compat').emulateIERestrictions(window, win);\n } catch (err) {\n return;\n }\n }\n\n let domains;\n\n if (Array.isArray(domain)) {\n domains = domain;\n } else if (typeof domain === 'string') {\n domains = [ domain ];\n } else {\n domains = [ CONSTANTS.WILDCARD ];\n }\n\n domains = domains.map(dom => {\n\n if (dom.indexOf(CONSTANTS.MOCK_PROTOCOL) === 0) {\n\n if (window.location.protocol === CONSTANTS.FILE_PROTOCOL) {\n return CONSTANTS.WILDCARD;\n }\n\n if (!isActuallySameDomain(win)) {\n throw new Error(`Attempting to send messsage to mock domain ${ dom }, but window is actually cross-domain`);\n }\n\n // $FlowFixMe\n return getActualDomain(win);\n }\n\n if (dom.indexOf(CONSTANTS.FILE_PROTOCOL) === 0) {\n return CONSTANTS.WILDCARD;\n }\n\n return dom;\n });\n\n domains.forEach(dom => {\n return win.postMessage(serializedMessage, dom);\n });\n};\n\nif (__POST_ROBOT__.__IE_POPUP_SUPPORT__) {\n\n let { sendBridgeMessage, needsBridgeForBrowser, isBridge } = require('../../bridge');\n\n SEND_MESSAGE_STRATEGIES[CONSTANTS.SEND_STRATEGIES.BRIDGE] = (win : CrossDomainWindowType, serializedMessage : string, domain : string) => {\n\n if (!needsBridgeForBrowser() && !isBridge()) {\n return;\n }\n\n if (isSameDomain(win)) {\n throw new Error(`Post message through bridge disabled between same domain windows`);\n }\n\n if (isSameTopWindow(window, win) !== false) {\n throw new Error(`Can only use bridge to communicate between two different windows, not between frames`);\n }\n\n return sendBridgeMessage(win, serializedMessage, domain);\n };\n}\n\nif (__POST_ROBOT__.__IE_POPUP_SUPPORT__ || __POST_ROBOT__.__GLOBAL_MESSAGE_SUPPORT__) {\n \n SEND_MESSAGE_STRATEGIES[CONSTANTS.SEND_STRATEGIES.GLOBAL] = (win : CrossDomainWindowType, serializedMessage : string) => {\n\n if (!needsGlobalMessagingForBrowser()) {\n return;\n }\n\n if (!isSameDomain(win)) {\n throw new Error(`Post message through global disabled between different domain windows`);\n }\n\n if (isSameTopWindow(window, win) !== false) {\n throw new Error(`Can only use global to communicate between two different windows, not between frames`);\n }\n\n // $FlowFixMe\n let foreignGlobal = win[CONSTANTS.WINDOW_PROPS.POSTROBOT];\n\n if (!foreignGlobal) {\n throw new Error(`Can not find postRobot global on foreign window`);\n }\n\n return foreignGlobal.receiveMessage({\n source: window,\n origin: getDomain(),\n data: serializedMessage\n });\n };\n}\n","/* @flow */\n\nimport { getDomain, isWindowClosed, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { CONSTANTS, CONFIG, POST_MESSAGE_NAMES_LIST } from '../../conf';\nimport { uniqueID, serializeMethods, getWindowType, jsonStringify, stringifyError } from '../../lib';\n\nimport { SEND_MESSAGE_STRATEGIES } from './strategies';\n\n\nfunction buildMessage(win : CrossDomainWindowType, message : Object, options = {}) : Object {\n\n let id = uniqueID();\n let type = getWindowType();\n let sourceDomain = getDomain(window);\n\n return {\n ...message,\n ...options,\n sourceDomain,\n id: message.id || id,\n windowType: type\n };\n}\n\n\nexport function sendMessage(win : CrossDomainWindowType, message : Object, domain : string | Array) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n message = buildMessage(win, message, {\n data: serializeMethods(win, domain, message.data),\n domain\n });\n\n let level;\n\n if (__DEBUG__) {\n if (POST_MESSAGE_NAMES_LIST.indexOf(message.name) !== -1 || message.type === CONSTANTS.POST_MESSAGE_TYPE.ACK) {\n level = 'debug';\n } else if (message.ack === 'error') {\n level = 'error';\n } else {\n level = 'info';\n }\n\n // eslint-disable-next-line no-console\n console[level]('postrobot_send', message.type.replace(/^postrobot_message_/, ''), '::', message.name, '::', domain || CONSTANTS.WILDCARD, '\\n\\n', message);\n }\n\n if (win === window && !CONFIG.ALLOW_SAME_ORIGIN) {\n throw new Error('Attemping to send message to self');\n }\n\n if (isWindowClosed(win)) {\n throw new Error('Window is closed');\n }\n\n let messages = [];\n\n let serializedMessage = jsonStringify({\n [ CONSTANTS.WINDOW_PROPS.POSTROBOT ]: message\n }, null, 2);\n\n return ZalgoPromise.map(Object.keys(SEND_MESSAGE_STRATEGIES), strategyName => {\n\n return ZalgoPromise.try(() => {\n\n if (!CONFIG.ALLOWED_POST_MESSAGE_METHODS[strategyName]) {\n throw new Error(`Strategy disallowed: ${ strategyName }`);\n }\n\n return SEND_MESSAGE_STRATEGIES[strategyName](win, serializedMessage, domain);\n\n }).then(() => {\n messages.push(`${ strategyName }: success`);\n return true;\n }, err => {\n messages.push(`${ strategyName }: ${ stringifyError(err) }\\n`);\n return false;\n });\n\n }).then(results => {\n\n let success = results.some(Boolean);\n let status = `${ message.type } ${ message.name } ${ success ? 'success' : 'error' }:\\n - ${ messages.join('\\n - ') }\\n`;\n\n if (!success) {\n throw new Error(status);\n }\n });\n });\n}\n","/* @flow */\n\nimport { type ZalgoPromise } from 'zalgo-promise/src';\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { matchDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { global } from '../global';\nimport { isRegex } from '../lib';\nimport { CONSTANTS } from '../conf';\n\nexport function resetListeners() {\n global.responseListeners = {};\n global.requestListeners = {};\n}\n\nglobal.responseListeners = global.responseListeners || {};\nglobal.requestListeners = global.requestListeners || {};\nglobal.WINDOW_WILDCARD = global.WINDOW_WILDCARD || new (function WindowWildcard() { /* pass */ })();\n\nglobal.erroredResponseListeners = global.erroredResponseListeners || {};\n\nconst __DOMAIN_REGEX__ = '__domain_regex__';\n\nexport type RequestListenerType = {\n handler : ({ source : CrossDomainWindowType, origin : string, data : Object }) => (mixed | ZalgoPromise),\n handleError : (err : mixed) => void,\n window : ?CrossDomainWindowType,\n name : string,\n domain : string | RegExp | Array\n};\n\nexport type ResponseListenerType = {\n name : string,\n window : CrossDomainWindowType,\n domain : (string | Array | RegExp),\n respond : (err : ?mixed, result : ?Object) => void,\n ack? : ?boolean\n};\n\nexport function addResponseListener(hash : string, listener : ResponseListenerType) {\n global.responseListeners[hash] = listener;\n}\n\nexport function getResponseListener(hash : string) : ResponseListenerType {\n return global.responseListeners[hash];\n}\n\nexport function deleteResponseListener(hash : string) {\n delete global.responseListeners[hash];\n}\n\nexport function markResponseListenerErrored(hash : string) {\n global.erroredResponseListeners[hash] = true;\n}\n\nexport function isResponseListenerErrored(hash : string) : boolean {\n return Boolean(global.erroredResponseListeners[hash]);\n}\n\nexport function getRequestListener({ name, win, domain } : { name : string, win : ?CrossDomainWindowType, domain : ?(string | RegExp) }) : ?RequestListenerType {\n\n if (win === CONSTANTS.WILDCARD) {\n win = null;\n }\n\n if (domain === CONSTANTS.WILDCARD) {\n domain = null;\n }\n\n if (!name) {\n throw new Error(`Name required to get request listener`);\n }\n\n let nameListeners = global.requestListeners[name];\n\n if (!nameListeners) {\n return;\n }\n\n for (let winQualifier of [ win, global.WINDOW_WILDCARD ]) {\n\n let winListeners = winQualifier && nameListeners.get(winQualifier);\n\n if (!winListeners) {\n continue;\n }\n\n if (domain && typeof domain === 'string') {\n if (winListeners[domain]) {\n return winListeners[domain];\n }\n\n if (winListeners[__DOMAIN_REGEX__]) {\n for (let { regex, listener } of winListeners[__DOMAIN_REGEX__]) {\n if (matchDomain(regex, domain)) {\n return listener;\n }\n }\n }\n }\n\n if (winListeners[CONSTANTS.WILDCARD]) {\n return winListeners[CONSTANTS.WILDCARD];\n }\n }\n}\n\n// eslint-disable-next-line complexity\nexport function addRequestListener({ name, win, domain } : { name : string, win : ?CrossDomainWindowType, domain : ?(string | RegExp | Array) }, listener : RequestListenerType) : { cancel : () => void } {\n\n if (!name || typeof name !== 'string') {\n throw new Error(`Name required to add request listener`);\n }\n\n if (Array.isArray(win)) {\n let listenersCollection = [];\n\n for (let item of win) {\n listenersCollection.push(addRequestListener({ name, domain, win: item }, listener));\n }\n\n return {\n cancel() {\n for (let cancelListener of listenersCollection) {\n cancelListener.cancel();\n }\n }\n };\n }\n\n if (Array.isArray(domain)) {\n let listenersCollection = [];\n\n for (let item of domain) {\n listenersCollection.push(addRequestListener({ name, win, domain: item }, listener));\n }\n\n return {\n cancel() {\n for (let cancelListener of listenersCollection) {\n cancelListener.cancel();\n }\n }\n };\n }\n\n let existingListener = getRequestListener({ name, win, domain });\n\n if (!win || win === CONSTANTS.WILDCARD) {\n win = global.WINDOW_WILDCARD;\n }\n\n domain = domain || CONSTANTS.WILDCARD;\n\n if (existingListener) {\n if (win && domain) {\n throw new Error(`Request listener already exists for ${ name } on domain ${ domain.toString() } for ${ win === global.WINDOW_WILDCARD ? 'wildcard' : 'specified' } window`);\n } else if (win) {\n throw new Error(`Request listener already exists for ${ name } for ${ win === global.WINDOW_WILDCARD ? 'wildcard' : 'specified' } window`);\n } else if (domain) {\n throw new Error(`Request listener already exists for ${ name } on domain ${ domain.toString() }`);\n } else {\n throw new Error(`Request listener already exists for ${ name }`);\n }\n }\n\n let requestListeners = global.requestListeners;\n\n let nameListeners = requestListeners[name];\n\n if (!nameListeners) {\n nameListeners = new WeakMap();\n requestListeners[name] = nameListeners;\n }\n\n let winListeners = nameListeners.get(win);\n\n if (!winListeners) {\n winListeners = {};\n nameListeners.set(win, winListeners);\n }\n\n let strDomain = domain.toString();\n\n let regexListeners = winListeners[__DOMAIN_REGEX__];\n let regexListener;\n\n if (isRegex(domain)) {\n\n if (!regexListeners) {\n regexListeners = [];\n winListeners[__DOMAIN_REGEX__] = regexListeners;\n }\n\n regexListener = { regex: domain, listener };\n\n regexListeners.push(regexListener);\n\n } else {\n winListeners[strDomain] = listener;\n }\n\n return {\n cancel() {\n if (!winListeners) {\n return;\n }\n\n delete winListeners[strDomain];\n\n if (win && Object.keys(winListeners).length === 0) {\n nameListeners.delete(win);\n }\n\n if (regexListener) {\n regexListeners.splice(regexListeners.indexOf(regexListener, 1));\n }\n }\n\n };\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { isWindowClosed, matchDomain, stringifyDomainPattern, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONSTANTS } from '../../conf';\nimport { stringifyError, noop } from '../../lib';\nimport { sendMessage } from '../send';\nimport { getRequestListener, getResponseListener, deleteResponseListener, isResponseListenerErrored } from '../listeners';\n\nexport let RECEIVE_MESSAGE_TYPES = {\n\n [ CONSTANTS.POST_MESSAGE_TYPE.ACK ](source : CrossDomainWindowType, origin : string, message : Object) {\n\n if (isResponseListenerErrored(message.hash)) {\n return;\n }\n\n let options = getResponseListener(message.hash);\n\n if (!options) {\n throw new Error(`No handler found for post message ack for message: ${ message.name } from ${ origin } in ${ window.location.protocol }//${ window.location.host }${ window.location.pathname }`);\n }\n\n if (!matchDomain(options.domain, origin)) {\n throw new Error(`Ack origin ${ origin } does not match domain ${ options.domain.toString() }`);\n }\n\n options.ack = true;\n },\n\n [ CONSTANTS.POST_MESSAGE_TYPE.REQUEST ](source : CrossDomainWindowType, origin : string, message : Object) : ZalgoPromise {\n\n let options = getRequestListener({ name: message.name, win: source, domain: origin });\n\n function respond(data) : ZalgoPromise {\n\n if (message.fireAndForget || isWindowClosed(source)) {\n return ZalgoPromise.resolve();\n }\n\n return sendMessage(source, {\n target: message.originalSource,\n hash: message.hash,\n name: message.name,\n ...data\n }, origin);\n }\n\n return ZalgoPromise.all([\n\n respond({\n type: CONSTANTS.POST_MESSAGE_TYPE.ACK\n }),\n\n ZalgoPromise.try(() => {\n\n if (!options) {\n throw new Error(`No handler found for post message: ${ message.name } from ${ origin } in ${ window.location.protocol }//${ window.location.host }${ window.location.pathname }`);\n }\n\n if (!matchDomain(options.domain, origin)) {\n throw new Error(`Request origin ${ origin } does not match domain ${ options.domain.toString() }`);\n }\n\n let data = message.data;\n\n return options.handler({ source, origin, data });\n\n }).then(data => {\n\n return respond({\n type: CONSTANTS.POST_MESSAGE_TYPE.RESPONSE,\n ack: CONSTANTS.POST_MESSAGE_ACK.SUCCESS,\n data\n });\n\n }, err => {\n\n let error = stringifyError(err).replace(/^Error: /, '');\n // $FlowFixMe\n let code = err.code;\n\n return respond({\n type: CONSTANTS.POST_MESSAGE_TYPE.RESPONSE,\n ack: CONSTANTS.POST_MESSAGE_ACK.ERROR,\n error,\n code\n });\n })\n\n ]).then(noop).catch(err => {\n\n if (options && options.handleError) {\n return options.handleError(err);\n } else {\n throw err;\n }\n });\n },\n\n [ CONSTANTS.POST_MESSAGE_TYPE.RESPONSE ](source : CrossDomainWindowType, origin : string, message : Object) : void | ZalgoPromise {\n\n if (isResponseListenerErrored(message.hash)) {\n return;\n }\n\n let options = getResponseListener(message.hash);\n\n if (!options) {\n throw new Error(`No handler found for post message response for message: ${ message.name } from ${ origin } in ${ window.location.protocol }//${ window.location.host }${ window.location.pathname }`);\n }\n\n if (!matchDomain(options.domain, origin)) {\n throw new Error(`Response origin ${ origin } does not match domain ${ stringifyDomainPattern(options.domain) }`);\n }\n\n deleteResponseListener(message.hash);\n\n if (message.ack === CONSTANTS.POST_MESSAGE_ACK.ERROR) {\n let err = new Error(message.error);\n if (message.code) {\n // $FlowFixMe\n err.code = message.code;\n }\n return options.respond(err, null);\n } else if (message.ack === CONSTANTS.POST_MESSAGE_ACK.SUCCESS) {\n let data = message.data || message.response;\n\n return options.respond(null, { source, origin, data });\n }\n }\n};\n","/* @flow */\n\nimport { isWindowClosed, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONSTANTS, POST_MESSAGE_NAMES_LIST } from '../../conf';\nimport { deserializeMethods, jsonParse, addEventListener, noop } from '../../lib';\nimport { global } from '../../global';\n\nimport { RECEIVE_MESSAGE_TYPES } from './types';\n\nglobal.receivedMessages = global.receivedMessages || [];\n\ntype MessageEvent = {\n source : CrossDomainWindowType,\n origin : string,\n data : string\n};\n\nfunction parseMessage(message : string) : ?Object {\n\n let parsedMessage;\n\n try {\n parsedMessage = jsonParse(message);\n } catch (err) {\n return;\n }\n\n if (!parsedMessage) {\n return;\n }\n\n if (typeof parsedMessage !== 'object' || parsedMessage === null) {\n return;\n }\n\n parsedMessage = parsedMessage[CONSTANTS.WINDOW_PROPS.POSTROBOT];\n\n if (!parsedMessage || typeof parsedMessage !== 'object' || parsedMessage === null) {\n return;\n }\n\n if (!parsedMessage.type || typeof parsedMessage.type !== 'string') {\n return;\n }\n\n if (!RECEIVE_MESSAGE_TYPES[parsedMessage.type]) {\n return;\n }\n\n return parsedMessage;\n}\n\n\nexport function receiveMessage(event : MessageEvent) {\n\n if (!window || window.closed) {\n return;\n }\n\n try {\n if (!event.source) {\n return;\n }\n } catch (err) {\n return;\n }\n\n let { source, origin, data } = event;\n\n let message = parseMessage(data);\n\n if (!message) {\n return;\n }\n\n if (!message.sourceDomain || typeof message.sourceDomain !== 'string') {\n throw new Error(`Expected message to have sourceDomain`);\n }\n\n if (message.sourceDomain.indexOf(CONSTANTS.MOCK_PROTOCOL) === 0 || message.sourceDomain.indexOf(CONSTANTS.FILE_PROTOCOL) === 0) {\n origin = message.sourceDomain;\n }\n\n if (global.receivedMessages.indexOf(message.id) === -1) {\n global.receivedMessages.push(message.id);\n } else {\n return;\n }\n\n if (__DEBUG__) {\n let level;\n\n if (POST_MESSAGE_NAMES_LIST.indexOf(message.name) !== -1 || message.type === CONSTANTS.POST_MESSAGE_TYPE.ACK) {\n level = 'debug';\n } else if (message.ack === 'error') {\n level = 'error';\n } else {\n level = 'info';\n }\n \n // eslint-disable-next-line no-console\n console[level]('postrobot_receive', message.type.replace(/^postrobot_message_/, ''), '::', message.name, '::', origin, '\\n\\n', message);\n }\n\n if (isWindowClosed(source) && !message.fireAndForget) {\n return;\n }\n\n if (message.data) {\n message.data = deserializeMethods(source, origin, message.data);\n }\n\n RECEIVE_MESSAGE_TYPES[message.type](source, origin, message);\n}\n\nexport function messageListener(event : { source : CrossDomainWindowType, origin : string, data : string, sourceElement : CrossDomainWindowType, originalEvent? : { origin : string } }) {\n\n try {\n noop(event.source);\n } catch (err) {\n return;\n }\n\n // $FlowFixMe\n let messageEvent : MessageEvent = {\n source: event.source || event.sourceElement,\n origin: event.origin || (event.originalEvent && event.originalEvent.origin),\n data: event.data\n };\n\n if (__POST_ROBOT__.__IE_POPUP_SUPPORT__) {\n try {\n require('../../compat').emulateIERestrictions(messageEvent.source, window);\n } catch (err) {\n return;\n }\n }\n\n receiveMessage(messageEvent);\n}\n\nexport function listenForMessages() {\n addEventListener(window, 'message', messageListener);\n}\n\nglobal.receiveMessage = receiveMessage;\n","/* @flow */\n\nexport * from './receive';\nexport * from './send';\nexport * from './listeners';\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getAncestor, isAncestor, isWindowClosed, getDomain, matchDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONFIG, CONSTANTS } from '../conf';\nimport { sendMessage, addResponseListener, deleteResponseListener, markResponseListenerErrored, type ResponseListenerType } from '../drivers';\nimport { uniqueID, onChildWindowReady, sayHello, isRegex } from '../lib';\nimport { global } from '../global';\n\nglobal.requestPromises = global.requestPromises || new WeakMap();\n\ntype WindowResolverType = CrossDomainWindowType | string | HTMLIFrameElement;\n\ntype RequestOptionsType = {\n window? : ?WindowResolverType,\n domain? : ?(string | Array | RegExp),\n name? : ?string,\n data? : ?Object,\n fireAndForget? : ?boolean,\n timeout? : ?number\n};\n\ntype ResponseMessageEvent = {\n source : CrossDomainWindowType,\n origin : string,\n data : Object\n};\n\nexport function request(options : RequestOptionsType) : ZalgoPromise {\n\n let prom = ZalgoPromise.try(() => {\n\n if (!options.name) {\n throw new Error('Expected options.name');\n }\n\n let name = options.name;\n let targetWindow : ?CrossDomainWindowType;\n let domain : string | Array | RegExp;\n\n if (typeof options.window === 'string') {\n let el = document.getElementById(options.window);\n\n if (!el) {\n throw new Error(`Expected options.window ${ Object.prototype.toString.call(options.window) } to be a valid element id`);\n }\n\n if (el.tagName.toLowerCase() !== 'iframe') {\n throw new Error(`Expected options.window ${ Object.prototype.toString.call(options.window) } to be an iframe`);\n }\n\n // $FlowFixMe\n if (!el.contentWindow) {\n throw new Error('Iframe must have contentWindow. Make sure it has a src attribute and is in the DOM.');\n }\n\n // $FlowFixMe\n targetWindow = el.contentWindow;\n\n } else if (options.window instanceof HTMLIFrameElement) {\n\n if (options.window.tagName.toLowerCase() !== 'iframe') {\n throw new Error(`Expected options.window ${ Object.prototype.toString.call(options.window) } to be an iframe`);\n }\n\n if (options.window && !options.window.contentWindow) {\n throw new Error('Iframe must have contentWindow. Make sure it has a src attribute and is in the DOM.');\n }\n\n if (options.window && options.window.contentWindow) {\n // $FlowFixMe\n targetWindow = options.window.contentWindow;\n }\n } else {\n targetWindow = options.window;\n }\n\n if (!targetWindow) {\n throw new Error('Expected options.window to be a window object, iframe, or iframe element id.');\n }\n\n const win = targetWindow;\n\n domain = options.domain || CONSTANTS.WILDCARD;\n\n let hash = `${ options.name }_${ uniqueID() }`;\n\n if (isWindowClosed(win)) {\n throw new Error('Target window is closed');\n }\n\n let hasResult = false;\n\n let requestPromises = global.requestPromises.get(win);\n\n if (!requestPromises) {\n requestPromises = [];\n global.requestPromises.set(win, requestPromises);\n }\n\n let requestPromise = ZalgoPromise.try(() => {\n\n if (isAncestor(window, win)) {\n return onChildWindowReady(win, options.timeout || CONFIG.CHILD_WINDOW_TIMEOUT);\n }\n\n }).then(({ origin } = {}) => {\n\n if (isRegex(domain) && !origin) {\n return sayHello(win);\n }\n\n }).then(({ origin } = {}) => {\n\n if (isRegex(domain)) {\n if (!matchDomain(domain, origin)) {\n throw new Error(`Remote window domain ${ origin } does not match regex: ${ domain.toString() }`);\n }\n\n domain = origin;\n }\n\n if (typeof domain !== 'string' && !Array.isArray(domain)) {\n throw new TypeError(`Expected domain to be a string or array`);\n }\n\n const actualDomain = domain;\n\n return new ZalgoPromise((resolve, reject) => {\n\n let responseListener : ResponseListenerType;\n\n if (!options.fireAndForget) {\n responseListener = {\n name,\n window: win,\n domain: actualDomain,\n respond(err, result) {\n if (!err) {\n hasResult = true;\n requestPromises.splice(requestPromises.indexOf(requestPromise, 1));\n }\n\n if (err) {\n reject(err);\n } else {\n resolve(result);\n }\n }\n };\n\n addResponseListener(hash, responseListener);\n }\n\n sendMessage(win, {\n type: CONSTANTS.POST_MESSAGE_TYPE.REQUEST,\n hash,\n name,\n data: options.data,\n fireAndForget: options.fireAndForget\n }, actualDomain).catch(reject);\n\n if (options.fireAndForget) {\n return resolve();\n }\n\n let ackTimeout = CONFIG.ACK_TIMEOUT;\n let resTimeout = options.timeout || CONFIG.RES_TIMEOUT;\n\n let cycleTime = 100;\n\n let cycle = () => {\n\n if (hasResult) {\n return;\n }\n\n if (isWindowClosed(win)) {\n\n if (!responseListener.ack) {\n return reject(new Error(`Window closed for ${ name } before ack`));\n }\n\n return reject(new Error(`Window closed for ${ name } before response`));\n }\n\n ackTimeout = Math.max(ackTimeout - cycleTime, 0);\n if (resTimeout !== -1) {\n resTimeout = Math.max(resTimeout - cycleTime, 0);\n }\n\n let hasAck = responseListener.ack;\n\n if (hasAck) {\n\n if (resTimeout === -1) {\n return;\n }\n\n cycleTime = Math.min(resTimeout, 2000);\n\n } else if (ackTimeout === 0) {\n return reject(new Error(`No ack for postMessage ${ name } in ${ getDomain() } in ${ CONFIG.ACK_TIMEOUT }ms`));\n\n } else if (resTimeout === 0) {\n return reject(new Error(`No response for postMessage ${ name } in ${ getDomain() } in ${ options.timeout || CONFIG.RES_TIMEOUT }ms`));\n }\n\n setTimeout(cycle, cycleTime);\n };\n\n setTimeout(cycle, cycleTime);\n });\n });\n\n requestPromise.catch(() => {\n markResponseListenerErrored(hash);\n deleteResponseListener(hash);\n });\n\n requestPromises.push(requestPromise);\n\n return requestPromise;\n });\n\n return prom;\n}\n\nexport function send(window : WindowResolverType, name : string, data : ?Object, options : ?RequestOptionsType) : ZalgoPromise {\n\n options = options || {};\n options.window = window;\n options.name = name;\n options.data = data;\n\n return request(options);\n}\n\nexport function sendToParent(name : string, data : ?Object, options : ?RequestOptionsType) : ZalgoPromise {\n\n let win = getAncestor();\n\n if (!win) {\n return new ZalgoPromise((resolve, reject) => reject(new Error('Window does not have a parent')));\n }\n\n return send(win, name, data, options);\n}\n\nexport function client(options : RequestOptionsType = {}) : { send : (string, ?Object) => ZalgoPromise } {\n\n if (!options.window) {\n throw new Error(`Expected options.window`);\n }\n\n const win = options.window;\n\n return {\n send(name : string, data : ?Object) : ZalgoPromise {\n return send(win, name, data, options);\n }\n };\n}\n\nglobal.send = send;\n","/* @flow */\n\nimport { isWindowClosed, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { once as onceFunction, safeInterval } from '../lib';\nimport { addRequestListener, type RequestListenerType } from '../drivers';\nimport { CONSTANTS } from '../conf';\nimport { global } from '../global';\n\ntype ErrorHandlerType = (err : mixed) => void;\ntype HandlerType = ({ source : CrossDomainWindowType, origin : string, data : Object }) => (void | mixed | ZalgoPromise);\n\ntype ServerOptionsType = {\n handler? : ?HandlerType,\n errorHandler? : ?ErrorHandlerType,\n window? : CrossDomainWindowType,\n name? : ?string,\n domain? : ?(string | RegExp | Array),\n once? : ?boolean,\n errorOnClose? : ?boolean\n};\n\nexport function listen(options : ServerOptionsType) : { cancel : () => void } {\n\n if (!options.name) {\n throw new Error('Expected options.name');\n }\n\n if (!options.handler) {\n throw new Error('Expected options.handler');\n }\n\n const name = options.name;\n const win = options.window;\n const domain = options.domain;\n\n let listenerOptions : RequestListenerType = {\n handler: options.handler,\n handleError: options.errorHandler || (err => {\n throw err;\n }),\n window: win,\n domain: domain || CONSTANTS.WILDCARD,\n name\n };\n\n let requestListener = addRequestListener({ name, win, domain }, listenerOptions);\n\n if (options.once) {\n let handler = listenerOptions.handler;\n listenerOptions.handler = onceFunction(function listenOnce() : mixed | ZalgoPromise {\n requestListener.cancel();\n return handler.apply(this, arguments);\n });\n }\n\n if (listenerOptions.window && options.errorOnClose) {\n let interval = safeInterval(() => {\n if (win && typeof win === 'object' && isWindowClosed(win)) {\n interval.cancel();\n listenerOptions.handleError(new Error('Post message target window is closed'));\n }\n }, 50);\n }\n\n return {\n cancel() {\n requestListener.cancel();\n }\n };\n}\n\nexport function on(name : string, options : ServerOptionsType | HandlerType, handler : ?HandlerType) : { cancel : () => void } {\n\n if (typeof options === 'function') {\n handler = options;\n options = {};\n }\n\n options = options || {};\n\n options.name = name;\n options.handler = handler || options.handler;\n\n return listen(options);\n}\n\nexport function once(name : string, options : ?(ServerOptionsType | HandlerType) = {}, handler : ?HandlerType) : ZalgoPromise<{ source : mixed, origin : string, data : Object }> {\n\n if (typeof options === 'function') {\n handler = options;\n options = {};\n }\n\n options = options || {};\n handler = handler || options.handler;\n let errorHandler = options.errorHandler;\n\n let promise = new ZalgoPromise((resolve, reject) => {\n\n options = options || {};\n\n options.name = name;\n options.once = true;\n\n options.handler = (event) => {\n resolve(event);\n if (handler) {\n return handler(event);\n }\n };\n\n options.errorHandler = (err) => {\n reject(err);\n if (errorHandler) {\n return errorHandler(err);\n }\n };\n });\n\n let onceListener = listen(options);\n promise.cancel = onceListener.cancel;\n\n return promise;\n}\n\nexport function listener(options : ServerOptionsType = {}) : { on : (name : string, handler : HandlerType) => { cancel : () => void } } {\n\n return {\n on(name : string, handler : HandlerType) : { cancel : () => void } {\n return on(name, options, handler);\n }\n };\n}\n\nglobal.on = on;\n","/* @flow */\n\nimport { CONSTANTS } from '../conf';\nimport { messageListener } from '../drivers';\n\nexport { CONFIG, CONSTANTS } from '../conf';\n\nexport function disable() {\n delete window[CONSTANTS.WINDOW_PROPS.POSTROBOT];\n window.removeEventListener('message', messageListener);\n}\n","/* @flow */\n\nimport { getAncestor } from 'cross-domain-utils/src';\n\nexport * from './client';\nexport * from './server';\nexport * from './config';\n\nexport let parent = getAncestor();\n","/* @flow */\n\nimport { type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { global } from './global';\n\nexport function cleanUpWindow(win : CrossDomainWindowType) {\n\n // global.tunnelWindows\n // global.bridges\n // global.popupWindowsByName\n // global.responseListeners\n // global.requestListeners\n\n let requestPromises = global.requestPromises.get(win);\n\n if (requestPromises) {\n for (let promise of requestPromises) {\n promise.reject(new Error(`No response from window - cleaned up`));\n }\n }\n\n if (global.popupWindowsByWin) {\n global.popupWindowsByWin.delete(win);\n }\n\n if (global.remoteWindows) {\n global.remoteWindows.delete(win);\n }\n\n global.requestPromises.delete(win);\n global.methods.delete(win);\n global.readyPromises.delete(win);\n}\n","/* @flow */\n\nimport { initOnReady, listenForMethods } from './lib';\nimport { listenForMessages } from './drivers';\nimport { global } from './global';\nimport { on, send } from './public';\n\nexport * from './public';\nexport { cleanUpWindow } from './clean';\nexport { ZalgoPromise as Promise } from 'zalgo-promise/src';\nexport let bridge = __POST_ROBOT__.__IE_POPUP_SUPPORT__ ? require('./bridge/interface') : null;\n\nexport function init() {\n if (!global.initialized) {\n listenForMessages();\n\n if (__POST_ROBOT__.__IE_POPUP_SUPPORT__) {\n require('./bridge').openTunnelToOpener();\n }\n\n initOnReady();\n listenForMethods({ on, send });\n }\n\n global.initialized = true;\n}\n\ninit();\n","/* @flow */\n\n// eslint-disable-next-line import/no-namespace\nimport * as INTERFACE from './interface';\n\nexport * from './interface';\nexport default INTERFACE;\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { isPopup, isIframe, getUserAgent } from 'cross-domain-utils/src';\n\nimport { CONFIG, CONSTANTS } from '../conf';\n\n\nexport function stringifyError(err : mixed, level : number = 1) : string {\n\n if (level >= 3) {\n return 'stringifyError stack overflow';\n }\n\n try {\n if (!err) {\n return ``;\n }\n\n if (typeof err === 'string') {\n return err;\n }\n\n if (err instanceof Error) {\n let stack = err && err.stack;\n let message = err && err.message;\n\n if (stack && message) {\n if (stack.indexOf(message) !== -1) {\n return stack;\n } else {\n return `${ message }\\n${ stack }`;\n }\n } else if (stack) {\n return stack;\n } else if (message) {\n return message;\n }\n }\n\n if (typeof err.toString === 'function') {\n return err.toString();\n }\n\n return Object.prototype.toString.call(err);\n\n } catch (newErr) { // eslint-disable-line unicorn/catch-error-name\n return `Error while stringifying error: ${ stringifyError(newErr, level + 1) }`;\n }\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport let once = (method : Function) : ((...args : Array) => T | void) => {\n if (!method) {\n return method;\n }\n let called = false;\n return function onceWrapper() : T | void {\n if (!called) {\n called = true;\n return method.apply(this, arguments);\n }\n };\n};\n\n// eslint-disable-next-line no-unused-vars\nexport function noop(...args : Array) {\n // pass\n}\n\nexport function addEventListener(obj : Object, event : string, handler : Function) : { cancel : () => void } {\n if (obj.addEventListener) {\n obj.addEventListener(event, handler);\n } else {\n obj.attachEvent(`on${ event }`, handler);\n }\n\n return {\n cancel() {\n if (obj.removeEventListener) {\n obj.removeEventListener(event, handler);\n } else {\n obj.detachEvent(`on${ event }`, handler);\n }\n }\n };\n}\n\nexport function uniqueID() : string {\n\n let chars = '0123456789abcdef';\n\n return 'xxxxxxxxxx'.replace(/./g, () => {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n });\n}\n\ntype MixedArrayType = Array;\n\nexport function eachArray(item : MixedArrayType, callback : (item : mixed, key : number) => mixed) {\n for (let i = 0; i < item.length; i++) {\n callback(item[i], i);\n }\n}\n\nexport function eachObject(item : Object, callback : (item : mixed, key : string) => mixed) {\n for (let key in item) {\n if (item.hasOwnProperty(key)) {\n callback(item[key], key);\n }\n }\n}\n\nexport function each(item : T, callback : (item : mixed, key : number | string) => mixed) {\n if (Array.isArray(item)) {\n eachArray(item, callback);\n } else if (typeof item === 'object' && item !== null) {\n eachObject(item, callback);\n }\n}\n\nexport function replaceObject(item : T, callback : (item : mixed, key : number | string) => mixed, depth : number = 1) : T {\n\n if (depth >= 100) {\n throw new Error(`Self-referential object passed, or object contained too many layers`);\n }\n\n let newobj;\n\n if (typeof item === 'object' && item !== null && !Array.isArray(item)) {\n newobj = {};\n } else if (Array.isArray(item)) {\n newobj = [];\n } else {\n throw new TypeError(`Invalid type: ${ typeof item }`);\n }\n\n each(item, (childItem, key) => {\n\n let result = callback(childItem, key);\n\n if (typeof result !== 'undefined') {\n // $FlowFixMe\n newobj[key] = result;\n } else if (typeof childItem === 'object' && childItem !== null) {\n // $FlowFixMe\n newobj[key] = replaceObject(childItem, callback, depth + 1);\n } else {\n // $FlowFixMe\n newobj[key] = childItem;\n }\n });\n\n // $FlowFixMe\n return newobj;\n}\n\nexport function safeInterval(method : Function, time : number) : { cancel : () => void } {\n let timeout;\n\n function runInterval() {\n timeout = setTimeout(runInterval, time);\n method.call();\n }\n\n timeout = setTimeout(runInterval, time);\n\n return {\n cancel() {\n clearTimeout(timeout);\n }\n };\n}\n\nexport function isRegex(item : mixed) : boolean {\n return Object.prototype.toString.call(item) === '[object RegExp]';\n}\n\n\ntype FunctionProxy = (method : T) => T;\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport let weakMapMemoize : FunctionProxy<*> = (method : (arg : any) => R) : ((...args : Array) => R) => {\n\n let weakmap = new WeakMap();\n\n // eslint-disable-next-line flowtype/no-weak-types\n return function weakmapMemoized(arg : any) : R {\n let result = weakmap.get(arg);\n\n if (typeof result !== 'undefined') {\n return result;\n }\n\n result = method.call(this, arg);\n\n if (typeof result !== 'undefined') {\n weakmap.set(arg, result);\n }\n\n return result;\n };\n};\n\nexport function getWindowType() : string {\n if (isPopup()) {\n return CONSTANTS.WINDOW_TYPES.POPUP;\n }\n if (isIframe()) {\n return CONSTANTS.WINDOW_TYPES.IFRAME;\n }\n return CONSTANTS.WINDOW_TYPES.FULLPAGE;\n}\n\nexport function jsonStringify(obj : T, replacer : ?Function, indent : number | void) : string {\n\n let objectToJSON;\n let arrayToJSON;\n\n try {\n if (JSON.stringify({}) !== '{}') {\n // $FlowFixMe\n objectToJSON = Object.prototype.toJSON;\n // $FlowFixMe\n delete Object.prototype.toJSON;\n }\n\n if (JSON.stringify({}) !== '{}') {\n throw new Error(`Can not correctly serialize JSON objects`);\n }\n\n if (JSON.stringify([]) !== '[]') {\n // $FlowFixMe\n arrayToJSON = Array.prototype.toJSON;\n // $FlowFixMe\n delete Array.prototype.toJSON;\n }\n\n if (JSON.stringify([]) !== '[]') {\n throw new Error(`Can not correctly serialize JSON objects`);\n }\n\n } catch (err) {\n throw new Error(`Can not repair JSON.stringify: ${ err.message }`);\n }\n\n let result = JSON.stringify.call(this, obj, replacer, indent);\n\n try {\n if (objectToJSON) {\n // $FlowFixMe\n Object.prototype.toJSON = objectToJSON; // eslint-disable-line no-extend-native\n }\n\n if (arrayToJSON) {\n // $FlowFixMe\n Array.prototype.toJSON = arrayToJSON; // eslint-disable-line no-extend-native\n }\n\n } catch (err) {\n throw new Error(`Can not repair JSON.stringify: ${ err.message }`);\n }\n\n\n return result;\n}\n\nexport function jsonParse(item : string) : mixed {\n return JSON.parse(item);\n}\n \nexport function needsGlobalMessagingForBrowser() : boolean {\n\n if (getUserAgent(window).match(/MSIE|trident|edge\\/12|edge\\/13/i)) {\n return true;\n }\n \n if (!CONFIG.ALLOW_POSTMESSAGE_POPUP) {\n return true;\n }\n \n return false;\n}\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { matchDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { CONSTANTS } from '../conf';\nimport { global } from '../global';\n\nimport { once, uniqueID, replaceObject, stringifyError, isRegex } from './util';\n\nglobal.methods = global.methods || new WeakMap();\n\nexport let listenForMethods = once(() => {\n global.on(CONSTANTS.POST_MESSAGE_NAMES.METHOD, { origin: CONSTANTS.WILDCARD }, ({ source, origin, data } : { source : CrossDomainWindowType, origin : string, data : Object }) => {\n\n let methods = global.methods.get(source);\n\n if (!methods) {\n throw new Error(`Could not find any methods this window has privileges to call`);\n }\n\n let meth = methods[data.id];\n\n if (!meth) {\n throw new Error(`Could not find method with id: ${ data.id }`);\n }\n\n if (!matchDomain(meth.domain, origin)) {\n throw new Error(`Method domain ${ meth.domain } does not match origin ${ origin }`);\n }\n\n return ZalgoPromise.try(() => {\n return meth.method.apply({ source, origin, data }, data.args);\n\n }).then(result => {\n\n return {\n result,\n id: data.id,\n name: data.name\n };\n });\n });\n});\n\nfunction isSerialized(item : mixed, type : string) : boolean {\n return typeof item === 'object' && item !== null && item.__type__ === type;\n}\n\ntype SerializedMethod = {\n __type__ : string,\n __id__ : string,\n __name__ : string\n};\n\nexport function serializeMethod(destination : CrossDomainWindowType, domain : string | Array, method : Function, name : string) : SerializedMethod {\n\n let id = uniqueID();\n\n let methods = global.methods.get(destination);\n\n if (!methods) {\n methods = {};\n global.methods.set(destination, methods);\n }\n\n methods[id] = { domain, method };\n\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.METHOD,\n __id__: id,\n __name__: name\n };\n}\n\ntype SerializedError = {\n __type__ : string,\n __message__ : string\n};\n\nfunction serializeError(err : mixed) : SerializedError {\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.ERROR,\n __message__: stringifyError(err),\n // $FlowFixMe\n __code__: err.code\n };\n}\n\ntype SerializePromise = {\n __type__ : string,\n __then__ : SerializedMethod\n};\n\nfunction serializePromise(destination : CrossDomainWindowType, domain : string | Array, promise : ZalgoPromise, name : string) : SerializePromise {\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.PROMISE,\n __then__: serializeMethod(destination, domain, (resolve, reject) => promise.then(resolve, reject), `${ name }.then`)\n };\n}\n\nfunction serializeZalgoPromise(destination : CrossDomainWindowType, domain : string | Array, promise : ZalgoPromise, name : string) : SerializePromise {\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.ZALGO_PROMISE,\n __then__: serializeMethod(destination, domain, (resolve, reject) => promise.then(resolve, reject), `${ name }.then`)\n };\n}\n\ntype SerializedRegex = {\n __type__ : string,\n __source__ : string\n};\n\nfunction serializeRegex(regex : RegExp) : SerializedRegex {\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.REGEX,\n __source__: regex.source\n };\n}\n\nexport function serializeMethods(destination : CrossDomainWindowType, domain : string | Array, obj : Object) : Object {\n\n return replaceObject({ obj }, (item, key) => {\n if (typeof item === 'function') {\n return serializeMethod(destination, domain, item, key.toString());\n }\n\n if (item instanceof Error) {\n return serializeError(item);\n }\n\n if (window.Promise && item instanceof window.Promise) {\n return serializePromise(destination, domain, item, key.toString());\n }\n\n if (ZalgoPromise.isPromise(item)) {\n // $FlowFixMe\n return serializeZalgoPromise(destination, domain, item, key.toString());\n }\n\n if (isRegex(item)) {\n // $FlowFixMe\n return serializeRegex(item);\n }\n }).obj;\n}\n\nexport function deserializeMethod(source : CrossDomainWindowType, origin : string, obj : Object) : Function {\n\n function wrapper() : ZalgoPromise {\n let args = Array.prototype.slice.call(arguments);\n return global.send(source, CONSTANTS.POST_MESSAGE_NAMES.METHOD, {\n id: obj.__id__,\n name: obj.__name__,\n args\n\n }, { domain: origin, timeout: -1 }).then(({ data }) => {\n return data.result;\n }, err => {\n throw err;\n });\n }\n\n wrapper.__name__ = obj.__name__;\n wrapper.__xdomain__ = true;\n\n wrapper.source = source;\n wrapper.origin = origin;\n\n return wrapper;\n}\n\nexport function deserializeError(source : CrossDomainWindowType, origin : string, obj : Object) : Error {\n let err = new Error(obj.__message__);\n if (obj.__code__) {\n // $FlowFixMe\n err.code = obj.__code__;\n }\n return err;\n}\n\nexport function deserializeZalgoPromise(source : CrossDomainWindowType, origin : string, prom : Object) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => deserializeMethod(source, origin, prom.__then__)(resolve, reject));\n}\n\nexport function deserializePromise(source : CrossDomainWindowType, origin : string, prom : Object) : ZalgoPromise {\n if (!window.Promise) {\n return deserializeZalgoPromise(source, origin, prom);\n }\n\n return new window.Promise((resolve, reject) => deserializeMethod(source, origin, prom.__then__)(resolve, reject));\n}\n\nexport function deserializeRegex(source : CrossDomainWindowType, origin : string, item : Object) : RegExp {\n // eslint-disable-next-line security/detect-non-literal-regexp\n return new RegExp(item.__source__);\n}\n\nexport function deserializeMethods(source : CrossDomainWindowType, origin : string, obj : Object) : Object {\n\n return replaceObject({ obj }, (item) => {\n if (typeof item !== 'object' || item === null) {\n return;\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.METHOD)) {\n return deserializeMethod(source, origin, item);\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.ERROR)) {\n return deserializeError(source, origin, item);\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.PROMISE)) {\n return deserializePromise(source, origin, item);\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.ZALGO_PROMISE)) {\n return deserializeZalgoPromise(source, origin, item);\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.REGEX)) {\n return deserializeRegex(source, origin, item);\n }\n\n }).obj;\n}\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { getAncestor, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { CONSTANTS } from '../conf';\nimport { global } from '../global';\n\nimport { noop } from './util';\n\nglobal.readyPromises = global.readyPromises || new WeakMap();\n\nexport function onHello(handler : ({ source? : CrossDomainWindowType, origin? : string }) => void) {\n global.on(CONSTANTS.POST_MESSAGE_NAMES.HELLO, { domain: CONSTANTS.WILDCARD }, ({ source, origin }) => {\n return handler({ source, origin });\n });\n}\n\nexport function sayHello(win : CrossDomainWindowType) : ZalgoPromise<{ origin : string }> {\n return global.send(win, CONSTANTS.POST_MESSAGE_NAMES.HELLO, {}, { domain: CONSTANTS.WILDCARD, timeout: -1 })\n .then(({ origin }) => {\n return { origin };\n });\n}\n\nexport function initOnReady() {\n\n onHello(({ source, origin }) => {\n let promise = global.readyPromises.get(source) || new ZalgoPromise();\n promise.resolve({ origin });\n global.readyPromises.set(source, promise);\n });\n\n let parent = getAncestor();\n if (parent) {\n sayHello(parent).catch(noop);\n }\n}\n\nexport function onChildWindowReady(win : mixed, timeout : number = 5000, name : string = 'Window') : ZalgoPromise<{ origin : string }> {\n\n let promise = global.readyPromises.get(win);\n\n if (promise) {\n return promise;\n }\n\n promise = new ZalgoPromise();\n global.readyPromises.set(win, promise);\n\n if (timeout !== -1) {\n setTimeout(() => promise.reject(new Error(`${ name } did not load after ${ timeout }ms`)), timeout);\n }\n\n return promise;\n}\n","/* @flow */\n\nexport * from './util';\nexport * from './serialize';\nexport * from './ready';\n","/* @flow */\n\nimport { on, send, bridge } from 'post-robot/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport type { CrossDomainWindowType, SameDomainWindowType } from 'cross-domain-utils/src';\n\nimport { isPayPalDomain, noop, getScriptVersion, extendUrl } from '../lib';\nimport { config } from '../config';\n\nfunction match(str : string, pattern : RegExp) : ?string {\n const regmatch : ?$ReadOnlyArray = str.match(pattern);\n if (regmatch) {\n return regmatch[1];\n }\n}\n\nlet onAuthorize : ?Function;\n\n// Post-Bridge\n\nif (isPayPalDomain()) {\n on('onLegacyPaymentAuthorize', { window: window.parent }, ({ data } : { data : { method : Function } }) => {\n onAuthorize = data.method;\n });\n}\n\n// Button / Merchant\n\nexport function onLegacyPaymentAuthorize(method : Function) : ZalgoPromise {\n onAuthorize = method;\n\n return ZalgoPromise.try(() => {\n if (bridge && !isPayPalDomain()) {\n return bridge.openBridge(extendUrl(config.postBridgeUrl, { version: getScriptVersion() }), config.postBridgeDomain).then((postBridge : CrossDomainWindowType) => {\n return send(postBridge, 'onLegacyPaymentAuthorize', { method }, { domain: config.paypalDomain })\n .then(noop);\n });\n }\n });\n}\n\nwindow.onLegacyPaymentAuthorize = onLegacyPaymentAuthorize;\n\n// Post-Bridge / Button\n\nwindow.watchForLegacyFallback = (win : SameDomainWindowType) => {\n const interval = setInterval(() => {\n try {\n const isLegacy = (win.document.body.innerHTML.indexOf('merchantpaymentweb') !== -1 ||\n win.document.body.innerHTML.indexOf('wapapp') !== -1);\n\n if (!isLegacy || win.ppxoWatching || win.closed) {\n return;\n }\n\n win.ppxoWatching = true;\n\n const XMLHttpRequestsend = win.XMLHttpRequest.prototype.send;\n\n win.XMLHttpRequest.prototype.send = function overrideXMLHttpRequestSend() : void {\n\n if (this._patched) {\n return XMLHttpRequestsend.apply(this, arguments);\n }\n\n this._patched = true;\n\n const self = this;\n let onload = this.onload;\n\n function listener() : void {\n\n if (self.readyState === self.DONE && self.status === 200 && self.responseText) {\n\n try {\n const response = JSON.parse(self.responseText.replace('while (1);', ''));\n\n if (response.type === 'redirect' && response.url && onAuthorize) {\n\n const url = response.url;\n\n clearInterval(interval);\n win.close();\n\n onAuthorize({\n returnUrl: url,\n paymentToken: match(url, /token=((EC-)?[A-Z0-9]+)/),\n billingToken: match(url, /ba_token=((BA-)?[A-Z0-9]+)/),\n payerID: match(url, /PayerID=([A-Z0-9]+)/),\n paymentID: match(url, /paymentId=((PAY-)?[A-Z0-9]+)/)\n });\n\n onAuthorize = null;\n\n if (win.PAYPAL && win.PAYPAL.Checkout && win.PAYPAL.Checkout.XhrResponse && win.PAYPAL.Checkout.XhrResponse.RESPONSE_TYPES) {\n Object.defineProperty(win.PAYPAL.Checkout.XhrResponse.RESPONSE_TYPES, 'Redirect', {\n value: Math.random().toString()\n });\n }\n\n if (win.mob && win.mob.Xhr && win.mob.Xhr.prototype._xhrOnReady) {\n win.mob.Xhr.prototype._xhrOnReady = noop;\n }\n }\n\n } catch (err) {\n return;\n }\n }\n\n if (onload) {\n return onload.apply(this, arguments);\n }\n }\n\n if (this.onload !== listener) {\n\n try {\n\n delete this.onload;\n this.addEventListener('load', listener);\n\n // $FlowFixMe\n Object.defineProperty(this, 'onload', {\n get() : Function {\n return listener;\n },\n set(handler) {\n onload = handler;\n }\n });\n\n } catch (err) {\n\n // pass\n }\n\n }\n\n return XMLHttpRequestsend.apply(this, arguments);\n };\n\n } catch (err) {\n // pass\n }\n }, 100);\n};\n\n\nwindow.onLegacyFallback = window.watchForLegacyFallback;\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { info, track, warn, flush as flushLogs, immediateFlush } from 'beaver-logger/client';\nimport { create, CONSTANTS, PopupOpenError } from 'zoid/src';\nimport { type Component } from 'zoid/src/component/component';\nimport type { CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { base64encode } from 'belter/src';\n\nimport { isDevice, request, getQueryParam, redirect as redir, patchMethod,\n setLogLevel, getSessionID, getBrowserLocale, supportsPopups, memoize,\n getDomainSetting, getScriptVersion, getButtonSessionID, isPayPalDomain,\n isEligible, getCurrentScriptUrl } from '../lib';\nimport { config } from '../config';\nimport { ENV, FPTI, PAYMENT_TYPE, CHECKOUT_OVERLAY_COLOR, ATTRIBUTE } from '../constants';\nimport { onLegacyPaymentAuthorize } from '../compat';\nimport { determineParameterFromToken, determineUrl } from '../integrations';\n\nimport { containerTemplate, componentTemplate } from './template';\n\nfunction addHeader(name, value) : void {\n\n if (!window.$Api) {\n return;\n }\n\n if (window.$Api.addHeader) {\n return window.$Api.addHeader(name, value);\n }\n}\n\n// eslint-disable-next-line flowtype/require-exact-type\ntype CheckoutPropsType = {\n payment? : () => ZalgoPromise,\n onAuthorize : ({ returnUrl : string }, { redirect : (?CrossDomainWindowType, ?string) => ZalgoPromise }) => ?ZalgoPromise,\n onShippingChange? : (address : {}) => ?ZalgoPromise,\n onCancel? : ({ cancelUrl : string }, { redirect : (?CrossDomainWindowType, ?string) => ZalgoPromise }) => ?ZalgoPromise,\n fallback? : (string) => ?ZalgoPromise,\n fundingSource? : string,\n logLevel? : string,\n env? : string,\n stage? : string,\n stageUrl? : string,\n localhostUrl? : string,\n checkoutUri? : string,\n authCode? : string\n};\n\nexport const Checkout : Component = create({\n\n tag: 'paypal-checkout',\n name: 'ppcheckout',\n\n scrolling: true,\n\n buildUrl(props) : ZalgoPromise {\n const env = props.env || config.env;\n\n if (!props.payment) {\n throw new Error(`Can not build url without payment prop`);\n }\n\n return props.payment().then(token => {\n if (!token) {\n throw new Error(`Expected payment id or token to be passed, got ${ token }`);\n }\n\n return determineUrl(env, props.fundingSource, token);\n });\n },\n\n get unsafeRenderTo() : boolean {\n return config.env === ENV.LOCAL;\n },\n\n get domain() : Object {\n return {\n ...config.paypalDomains\n };\n },\n\n get bridgeUrl() : Object {\n return config.metaFrameUrls;\n },\n\n get bridgeDomain() : Object {\n return config.paypalDomains;\n },\n\n contexts: {\n iframe: (!supportsPopups()),\n popup: true\n },\n\n get version() : string {\n return getScriptVersion();\n },\n\n validate() {\n if (!isEligible()) {\n warn('checkout_render_ineligible');\n }\n },\n\n prerenderTemplate: componentTemplate,\n containerTemplate,\n\n props: {\n\n sessionID: {\n type: 'string',\n required: false,\n def() : string {\n return getSessionID();\n },\n queryParam: true\n },\n\n buttonSessionID: {\n type: 'string',\n required: false,\n def() : ?string {\n return getButtonSessionID();\n },\n queryParam: true\n },\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n },\n\n meta: {\n type: 'object',\n required: false,\n def() : Object {\n const meta = window.xprops && window.xprops.meta;\n return meta || {};\n }\n },\n\n stage: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.STAGE || env === ENV.LOCAL) {\n return config.stage;\n }\n }\n },\n\n stageUrl: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.STAGE || env === ENV.LOCAL) {\n return config.stageUrl;\n }\n }\n },\n\n authCode: {\n type: 'string',\n required: false,\n def() : string {\n return config.authCode;\n },\n queryParam: 'code'\n },\n\n localhostUrl: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.LOCAL) {\n return config.localhostUrl;\n }\n }\n },\n\n checkoutUri: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : ?string {\n return config.checkoutUri;\n }\n },\n\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n allowDelegate: true,\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n }\n },\n\n\n client: {\n type: 'object',\n required: false,\n def() : { [string] : string } {\n return {};\n },\n sendToChild: false,\n\n validate(client, props) {\n const env = props.env || config.env;\n\n if (!client[env]) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (client[env].match(/^(.)\\1+$/)) {\n throw new Error(`Invalid client ID: ${ client[env] }`);\n }\n }\n },\n\n payment: {\n type: 'function',\n required: false,\n memoize: true,\n promisify: true,\n queryParam(payment) : ZalgoPromise {\n return payment().then(token => {\n return determineParameterFromToken(token);\n });\n },\n queryValue(payment) : ZalgoPromise {\n return payment();\n },\n childDecorate(payment) : () => ZalgoPromise {\n const token = getQueryParam('token');\n\n return token\n ? memoize(() => ZalgoPromise.resolve(token))\n : payment;\n },\n validate(payment, props) {\n if (!payment && !props.url) {\n throw new Error(`Expected either props.payment or props.url to be passed`);\n }\n },\n alias: 'billingAgreement'\n },\n\n style: {\n type: 'object',\n required: false,\n allowDelegate: true,\n def() : Object {\n return {};\n },\n validate(style) {\n if (style.overlayColor && style.overlayColor !== CHECKOUT_OVERLAY_COLOR.BLACK && style.overlayColor !== CHECKOUT_OVERLAY_COLOR.WHITE) {\n throw new Error(`Invalid background color: ${ style.overlayColor }`);\n }\n }\n },\n\n commit: {\n type: 'boolean',\n required: false\n },\n\n experience: {\n type: 'object',\n required: false,\n def() : Object {\n return {};\n }\n },\n\n fundingSource: {\n type: 'string',\n required: false,\n queryParam: true\n },\n\n fundingOffered: {\n type: 'object',\n required: false,\n queryParam: true,\n def() : Object {\n const elements = Array.prototype.slice.call(document.querySelectorAll(`[${ ATTRIBUTE.FUNDING_SOURCE }]`));\n\n const fundingSources = elements.map(el => {\n return el.getAttribute(ATTRIBUTE.FUNDING_SOURCE);\n });\n\n // $FlowFixMe\n return fundingSources;\n },\n queryValue: (val) => {\n return val.join(',');\n }\n },\n\n onAuthorize: {\n type: 'function',\n required: true,\n once: true,\n \n decorate(original) : Function | void {\n if (original) {\n return function decorateOnAuthorize(data, actions = {}) : ZalgoPromise {\n\n if (data && !data.intent) {\n warn(`checkout_authorize_no_intent`, { paymentID: data.paymentID, token: data.paymentToken });\n }\n\n const close = () => {\n return ZalgoPromise.try(() => {\n if (actions.close) {\n return actions.close();\n }\n }).then(() => {\n return this.closeComponent();\n });\n };\n\n const redirect = (win, url) => {\n return ZalgoPromise.all([\n redir(win || window.top, url || data.returnUrl),\n close()\n ]);\n };\n\n return ZalgoPromise.try(() => {\n\n try {\n const isButton = window.location.href.indexOf('/smart/button') !== -1;\n const isGuest = this.window.location.href.indexOf('/webapps/xoonboarding') !== -1;\n\n if (isButton && isGuest) {\n return request({\n win: this.window,\n method: 'get',\n url: '/webapps/xoonboarding/api/auth'\n }).then(result => {\n if (result && result.data && result.data.access_token) {\n addHeader('x-paypal-internal-euat', result.data.access_token);\n }\n }).catch(() => {\n // pass\n });\n }\n\n } catch (err) {\n // pass\n }\n\n }).then(() => {\n return original.call(this, data, { ...actions, close, redirect });\n }).catch(err => {\n return this.error(err);\n }).finally(() => {\n return this.close();\n });\n };\n }\n }\n },\n\n onShippingChange: {\n type: 'function',\n required: false\n },\n\n onAuth: {\n type: 'function',\n required: false,\n sameDomain: true,\n childDecorate(original : Function) : ?Function {\n if (original) {\n return function wrapOnAuth(data : string | Object) : Object {\n if (typeof data === 'string') {\n data = { accessToken: data };\n }\n return original(data);\n };\n }\n }\n },\n\n accessToken: {\n type: 'function',\n required: false\n },\n\n onCancel: {\n type: 'function',\n required: false,\n once: true,\n noop: true,\n\n decorate(original) : Function {\n return function decorateOnCancel(data, actions = {}) : ZalgoPromise {\n\n const close = () => {\n return ZalgoPromise.try(() => {\n if (actions.close) {\n return actions.close();\n }\n }).then(() => {\n return this.closeComponent();\n });\n };\n\n const redirect = (win, url) => {\n return ZalgoPromise.all([\n redir(win || window.top, url || data.cancelUrl),\n close()\n ]);\n };\n\n return ZalgoPromise.try(() => {\n return original.call(this, data, { ...actions, close, redirect });\n }).finally(() => {\n this.close();\n });\n };\n }\n },\n\n init: {\n type: 'function',\n required: false,\n once: true,\n noop: true,\n\n decorate(original) : Function {\n return function decorateInit(data) : void {\n info('checkout_init');\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CHECKOUT_INIT,\n [ FPTI.KEY.CONTEXT_TYPE ]: FPTI.CONTEXT_TYPE[PAYMENT_TYPE.EC_TOKEN],\n [ FPTI.KEY.TOKEN ]: data.paymentToken,\n [ FPTI.KEY.SELLER_ID ]: data.merchantID,\n [ FPTI.KEY.CONTEXT_ID ]: data.paymentToken\n });\n\n flushLogs();\n\n this.paymentToken = data.paymentToken;\n this.cancelUrl = data.cancelUrl;\n\n return original.apply(this, arguments);\n };\n }\n },\n\n onClose: {\n type: 'function',\n required: false,\n once: true,\n promisify: true,\n noop: true,\n\n decorate(original) : Function {\n return function decorateOnClose(reason) : ZalgoPromise {\n\n const onClose = original.apply(this, arguments);\n\n const CLOSE_REASONS = CONSTANTS.CLOSE_REASONS;\n\n const shouldCancel =\n this.props.onCancel &&\n [ CLOSE_REASONS.CLOSE_DETECTED, CLOSE_REASONS.USER_CLOSED ].indexOf(reason) !== -1;\n\n if (shouldCancel) {\n info(`close_trigger_cancel`);\n return this.props.onCancel({\n paymentToken: this.paymentToken,\n cancelUrl: this.cancelUrl\n }).then(() => onClose);\n }\n\n return onClose;\n };\n }\n },\n\n onError: {\n type: 'function',\n required: false,\n promisify: true,\n noop: true,\n once: true\n },\n\n fallback: {\n type: 'function',\n required: false,\n once: true,\n\n def() : Function {\n return function defaultFallback(url) : ZalgoPromise {\n warn('fallback', { url });\n\n if (getDomainSetting('allow_full_page_fallback')) {\n window.top.location = url;\n return this.close();\n }\n\n return onLegacyPaymentAuthorize(this.props.onAuthorize);\n };\n }\n },\n\n logLevel: {\n type: 'string',\n required: false,\n get value() : string {\n return config.logLevel;\n }\n },\n \n test: {\n type: 'object',\n required: false,\n def() : Object {\n return window.__test__ || { action: 'checkout' };\n }\n },\n\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n }\n },\n\n get dimensions() : { width : string, height : string } {\n\n if (isDevice()) {\n return {\n width: '100%',\n height: '590px'\n };\n }\n\n return {\n width: '500px',\n height: '590px'\n };\n }\n});\n\nif (Checkout.isChild() && Checkout.xchild && Checkout.xprops) {\n\n if (Checkout.xprops && Checkout.xprops.logLevel) {\n setLogLevel(Checkout.xprops.logLevel);\n }\n\n Checkout.xchild.onProps(xprops => {\n patchMethod(xprops, 'onAuthorize', ({ callOriginal, args: [ data ] }) => {\n if (data && !data.intent) {\n warn(`hermes_authorize_no_intent`, { paymentID: data.paymentID, token: data.paymentToken });\n\n try {\n const intent = window.injector.get('$CheckoutCartModel').instance(data.paymentToken).payment_action;\n warn(`hermes_intent`, { paymentID: data.paymentID, token: data.paymentToken, intent });\n } catch (err) {\n // pass\n }\n\n immediateFlush();\n }\n return callOriginal();\n });\n });\n}\n\npatchMethod(Checkout, 'init', ({ args: [ props, _context ], original, context }) => {\n return original.call(context, props, _context, 'body');\n});\n\npatchMethod(Checkout, 'render', ({ args: [ props ], original, context }) => {\n return original.call(context, props, 'body');\n});\n\npatchMethod(Checkout, 'renderTo', ({ args: [ win, props ], original, context }) => {\n\n const payment = props.payment();\n props.payment = () => payment;\n\n return original.call(context, win, props, 'body').catch(err => {\n if (err instanceof PopupOpenError && isPayPalDomain()) {\n Checkout.contexts.iframe = true;\n return original.call(context, win, props, 'body');\n }\n throw err;\n });\n});\n\n","/* @flow */\n\nexport * from './component';\n","/* @flow */\n\nexport function getUserAgent() : string {\n return window.navigator.mockUserAgent || window.navigator.userAgent;\n}\n\nexport function isDevice(userAgent? : string = getUserAgent()) : boolean {\n if (userAgent.match(/Android|webOS|iPhone|iPad|iPod|bada|Symbian|Palm|CriOS|BlackBerry|IEMobile|WindowsMobile|Opera Mini/i)) {\n return true;\n }\n\n return false;\n}\n\nexport function isWebView() : boolean {\n let userAgent = getUserAgent();\n return (/(iPhone|iPod|iPad|Macintosh).*AppleWebKit(?!.*Safari)/i).test(userAgent) ||\n (/\\bwv\\b/).test(userAgent) ||\n (/Android.*Version\\/(\\d)\\.(\\d)/i).test(userAgent);\n}\n\nexport function isStandAlone() : boolean {\n return (window.navigator.standalone === true || window.matchMedia('(display-mode: standalone)').matches);\n}\n\nexport function isFacebookWebView(ua? : string = getUserAgent()) : boolean {\n return (ua.indexOf('FBAN') !== -1) || (ua.indexOf('FBAV') !== -1);\n}\n\nexport function isFirefoxIOS(ua? : string = getUserAgent()) : boolean {\n return (/FxiOS/i).test(ua);\n}\n\nexport function isEdgeIOS(ua? : string = getUserAgent()) : boolean {\n return (/EdgiOS/i).test(ua);\n}\n\nexport function isOperaMini(ua? : string = getUserAgent()) : boolean {\n return ua.indexOf('Opera Mini') > -1;\n}\n\nexport function isAndroid(ua? : string = getUserAgent()) : boolean {\n return (/Android/).test(ua);\n}\n\nexport function isIos(ua? : string = getUserAgent()) : boolean {\n return (/iPhone|iPod|iPad/).test(ua);\n}\n\nexport function isGoogleSearchApp(ua? : string = getUserAgent()) : boolean {\n return (/\\bGSA\\b/).test(ua);\n}\n\nexport function isQQBrowser(ua? : string = getUserAgent()) : boolean {\n return (/QQBrowser/).test(ua);\n}\n\nexport function isIosWebview(ua? : string = getUserAgent()) : boolean {\n if (isIos(ua)) {\n if (isGoogleSearchApp(ua)) {\n return true;\n }\n return (/.+AppleWebKit(?!.*Safari)/).test(ua);\n }\n return false;\n}\n\nexport function isAndroidWebview(ua? : string = getUserAgent()) : boolean {\n if (isAndroid(ua)) {\n return (/Version\\/[\\d.]+/).test(ua) && !isOperaMini(ua);\n }\n return false;\n}\n\nexport function isIE() : boolean {\n\n if (window.document.documentMode) {\n return true;\n }\n\n return Boolean(\n window.navigator &&\n window.navigator.userAgent &&\n (/Edge|MSIE|rv:11/i).test(window.navigator.userAgent)\n );\n}\n\nexport function isIECompHeader() : boolean {\n let mHttp = window.document.querySelector('meta[http-equiv=\"X-UA-Compatible\"]');\n let mContent = window.document.querySelector('meta[content=\"IE=edge\"]');\n if (mHttp && mContent) {\n return true;\n }\n return false;\n}\n\nexport function isElectron() : boolean {\n if (typeof process !== 'undefined' && process.versions && process.versions.electron) {\n return true;\n }\n return false;\n}\n\nexport function isIEIntranet() : boolean {\n\n // This status check only works for older versions of IE with document.documentMode set\n\n if (window.document.documentMode) {\n try {\n let status = window.status;\n\n window.status = 'testIntranetMode';\n\n if (window.status === 'testIntranetMode') {\n window.status = status;\n\n return true;\n }\n\n return false;\n\n } catch (err) {\n\n return false;\n }\n }\n\n return false;\n}\n\nexport function isMacOsCna() : boolean {\n let userAgent = getUserAgent();\n return (/Macintosh.*AppleWebKit(?!.*Safari)/i).test(userAgent);\n}\n\nexport function supportsPopups(ua? : string = getUserAgent()) : boolean {\n return !(isIosWebview(ua) || isAndroidWebview(ua) || isOperaMini(ua) ||\n isFirefoxIOS(ua) || isEdgeIOS(ua) || isFacebookWebView(ua) || isQQBrowser(ua) || isElectron() || isMacOsCna() || isStandAlone());\n}\n\nexport function isChrome(ua? : string = getUserAgent()) : boolean {\n return (/Chrome|Chromium|CriOS/).test(ua);\n}\n\nexport function isSafari(ua? : string = getUserAgent()) : boolean {\n return (/Safari/).test(ua) && !isChrome(ua);\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\n\nimport type { CancelableType } from './types';\n\nexport function getFunctionName (fn : T) : string {\n return fn.name || fn.__name__ || fn.displayName || 'anonymous';\n}\n\nexport function setFunctionName (fn : T, name : string) : T {\n try {\n delete fn.name;\n fn.name = name;\n } catch (err) {\n // pass\n }\n\n fn.__name__ = fn.displayName = name;\n return fn;\n}\n\nexport function base64encode(str : string) : string {\n if (typeof btoa === 'function') {\n return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, (m, p1) => {\n return String.fromCharCode(parseInt(p1, 16));\n }));\n }\n\n if (typeof Buffer !== 'undefined') {\n return Buffer.from(str, 'utf8').toString('base64');\n }\n\n throw new Error(`Can not find window.btoa or Buffer`);\n}\n\nexport function base64decode(str : string) : string {\n if (typeof atob === 'function') {\n return decodeURIComponent(Array.prototype.map.call(atob(str), c => {\n // eslint-disable-next-line prefer-template\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\n }).join(''));\n }\n\n if (typeof Buffer !== 'undefined') {\n return Buffer.from(str, 'base64').toString('utf8');\n }\n\n throw new Error(`Can not find window.atob or Buffer`);\n}\n\nexport function uniqueID() : string {\n\n let chars = '0123456789abcdef';\n\n let randomID = 'xxxxxxxxxx'.replace(/./g, () => {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n });\n\n let timeID = base64encode(\n new Date().toISOString().slice(11, 19).replace('T', '.')\n ).replace(/[^a-zA-Z0-9]/g, '').toLowerCase();\n\n return `${ randomID }_${ timeID }`;\n}\n\nexport function getGlobal() : Object {\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n if (typeof __GLOBAL__ !== 'undefined') {\n return __GLOBAL__;\n }\n throw new Error(`No global found`);\n}\n\nlet objectIDs;\n\nexport function getObjectID(obj : Object) : string {\n\n objectIDs = objectIDs || new WeakMap();\n\n if (obj === null || obj === undefined || (typeof obj !== 'object' && typeof obj !== 'function')) {\n throw new Error(`Invalid object`);\n }\n\n let uid = objectIDs.get(obj);\n\n if (!uid) {\n uid = `${ typeof obj }:${ uniqueID() }`;\n objectIDs.set(obj, uid);\n }\n\n return uid;\n}\n\nfunction serializeArgs(args : Array) : string {\n try {\n return JSON.stringify(Array.prototype.slice.call(args), (subkey, val) => {\n if (typeof val === 'function') {\n return `memoize[${ getObjectID(val) }]`;\n }\n return val;\n });\n } catch (err) {\n throw new Error(`Arguments not serializable -- can not be used to memoize`);\n }\n}\nexport function memoize) => R, X : { (...args : Array) : R, displayName : string, reset : () => void }>(method : F, options : { time? : number, thisNamespace? : boolean } = {}) : X {\n let cacheMap = new WeakMap();\n\n // $FlowFixMe\n let memoizedFunction : X = function memoizedFunction(...args : Array) : R {\n let cache = cacheMap.getOrSet(options.thisNamespace ? this : method, () => ({}));\n\n let key : string = serializeArgs(args);\n\n let cacheTime = options.time;\n if (cache[key] && cacheTime && (Date.now() - cache[key].time) < cacheTime) {\n delete cache[key];\n }\n\n if (cache[key]) {\n return cache[key].value;\n }\n\n let time = Date.now();\n let value = method.apply(this, arguments);\n\n cache[key] = { time, value };\n\n return cache[key].value;\n };\n\n memoizedFunction.reset = () => {\n cacheMap.delete(options.thisNamespace ? this : method);\n };\n\n return setFunctionName(memoizedFunction, `${ getFunctionName(method) }::memoized`);\n}\n\nexport function promiseIdentity(item : ZalgoPromise | T) : ZalgoPromise {\n // $FlowFixMe\n return ZalgoPromise.resolve(item);\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport function memoizePromise(method : (...args : Array) => ZalgoPromise) : ((...args : Array) => ZalgoPromise) {\n let cache = {};\n\n // eslint-disable-next-line flowtype/no-weak-types\n function memoizedPromiseFunction(...args : Array) : ZalgoPromise {\n let key : string = serializeArgs(args);\n\n if (cache.hasOwnProperty(key)) {\n return cache[key];\n }\n\n cache[key] = ZalgoPromise.try(() => method.apply(this, arguments))\n .finally(() => {\n delete cache[key];\n });\n\n return cache[key];\n }\n\n memoizedPromiseFunction.reset = () => {\n cache = {};\n };\n\n return setFunctionName(memoizedPromiseFunction, `${ getFunctionName(method) }::promiseMemoized`);\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport function promisify(method : (...args : Array) => R, options : { name? : string } = {}) : ((...args : Array) => ZalgoPromise) {\n function promisifiedFunction() : ZalgoPromise {\n return ZalgoPromise.try(method, this, arguments);\n }\n\n if (options.name) {\n promisifiedFunction.displayName = `${ options.name }:promisified`;\n }\n\n return setFunctionName(promisifiedFunction, `${ getFunctionName(method) }::promisified`);\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport function inlineMemoize(method : (...args : Array) => R, logic : (...args : Array) => R, args : Array = []) : R {\n // $FlowFixMe\n let cache = method.__inline_memoize_cache__ = method.__inline_memoize_cache__ || {};\n let key = serializeArgs(args);\n\n if (cache.hasOwnProperty(key)) {\n return cache[key];\n }\n \n let result = cache[key] = logic(...args);\n\n return result;\n}\n\n// eslint-disable-next-line no-unused-vars\nexport function noop(...args : Array) {\n // pass\n}\n\nexport function once(method : Function) : Function {\n let called = false;\n\n const onceFunction = function() : mixed {\n if (!called) {\n called = true;\n return method.apply(this, arguments);\n }\n };\n\n return setFunctionName(onceFunction, `${ getFunctionName(method) }::once`);\n}\n\nexport function hashStr(str : string) : number {\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n hash += str[i].charCodeAt(0) * Math.pow((i % 10) + 1, 5);\n }\n return Math.floor(Math.pow(Math.sqrt(hash), 5));\n}\n\nexport function strHashStr(str : string) : string {\n let hash = '';\n\n for (let i = 0; i < str.length; i++) {\n let total = (str[i].charCodeAt(0) * i);\n\n if (str[i + 1]) {\n total += (str[i + 1].charCodeAt(0) * (i - 1));\n }\n\n hash += String.fromCharCode(97 + (Math.abs(total) % 26));\n }\n\n return hash;\n}\n\nexport function match(str : string, pattern : RegExp) : ?string {\n let regmatch = str.match(pattern);\n if (regmatch) {\n return regmatch[1];\n }\n}\n\nexport function awaitKey(obj : Object, key : string) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n\n let value = obj[key];\n\n if (value) {\n return resolve(value);\n }\n\n delete obj[key];\n\n Object.defineProperty(obj, key, {\n\n configurable: true,\n\n set(item) {\n value = item;\n\n if (value) {\n resolve(value);\n }\n },\n\n get() : mixed {\n return value;\n }\n });\n });\n}\n\nexport function stringifyError(err : mixed, level : number = 1) : string {\n\n if (level >= 3) {\n return 'stringifyError stack overflow';\n }\n\n try {\n if (!err) {\n return ``;\n }\n\n if (typeof err === 'string') {\n return err;\n }\n\n if (err instanceof Error) {\n let stack = err && err.stack;\n let message = err && err.message;\n\n if (stack && message) {\n if (stack.indexOf(message) !== -1) {\n return stack;\n } else {\n return `${ message }\\n${ stack }`;\n }\n } else if (stack) {\n return stack;\n } else if (message) {\n return message;\n }\n }\n\n if (err && err.toString && typeof err.toString === 'function') {\n // $FlowFixMe\n return err.toString();\n }\n\n return Object.prototype.toString.call(err);\n\n } catch (newErr) { // eslint-disable-line unicorn/catch-error-name\n return `Error while stringifying error: ${ stringifyError(newErr, level + 1) }`;\n }\n}\n\nexport function stringifyErrorMessage(err : mixed) : string {\n\n let defaultMessage = ``;\n\n if (!err) {\n return defaultMessage;\n }\n\n if (err instanceof Error) {\n return err.message || defaultMessage;\n }\n\n if (typeof err.message === 'string') {\n return err.message || defaultMessage;\n }\n\n return defaultMessage;\n}\n\nexport function stringify(item : mixed) : string {\n if (typeof item === 'string') {\n return item;\n }\n\n if (item && item.toString && typeof item.toString === 'function') {\n // $FlowFixMe\n return item.toString();\n }\n\n return Object.prototype.toString.call(item);\n}\n\nexport function domainMatches(hostname : string, domain : string) : boolean {\n hostname = hostname.split('://')[1];\n let index = hostname.indexOf(domain);\n return (index !== -1 && hostname.slice(index) === domain);\n}\n\nexport function patchMethod(obj : Object, name : string, handler : Function) {\n let original = obj[name];\n\n obj[name] = function patchedMethod() : mixed {\n return handler({\n context: this,\n args: Array.prototype.slice.call(arguments),\n original,\n callOriginal: () => original.apply(this, arguments)\n });\n };\n}\n\nexport function extend(obj : T, source : Object) : T {\n if (!source) {\n return obj;\n }\n\n if (Object.assign) {\n return Object.assign(obj, source);\n }\n\n for (let key in source) {\n if (source.hasOwnProperty(key)) {\n obj[key] = source[key];\n }\n }\n\n return obj;\n}\n\nexport function values(obj : { [string] : T }) : Array {\n let result = [];\n for (let key in obj) {\n if (obj.hasOwnProperty(key)) {\n result.push(obj[key]);\n }\n }\n return result;\n}\n\nexport function perc(pixels : number, percentage : number) : number {\n return Math.round((pixels * percentage) / 100);\n}\n\nexport function min(...args : Array) : number {\n return Math.min(...args);\n}\n\nexport function max(...args : Array) : number {\n return Math.max(...args);\n}\n\nexport function regexMap(str : string, regexp : RegExp, handler : () => T) : Array {\n let results = [];\n\n // $FlowFixMe\n str.replace(regexp, function regexMapMatcher(item) {\n results.push(handler ? handler.apply(null, arguments) : item);\n });\n\n // $FlowFixMe\n return results;\n}\n\nexport function svgToBase64(svg : string) : string {\n return `data:image/svg+xml;base64,${ base64encode(svg) }`;\n}\n\nexport function objFilter(obj : { [string] : T }, filter? : (T, ?string) => mixed = Boolean) : { [string] : R } {\n let result = {};\n\n for (let key in obj) {\n if (!obj.hasOwnProperty(key) || !filter(obj[key], key)) {\n continue;\n }\n\n result[key] = obj[key];\n }\n\n return result;\n}\n\nexport function identity (item : T) : T {\n return item;\n}\n\nexport function regexTokenize(text : string, regexp : RegExp) : Array {\n let result = [];\n text.replace(regexp, token => {\n result.push(token);\n return '';\n });\n return result;\n}\n\nexport function promiseDebounce(method : () => ZalgoPromise | T, delay : number = 50) : () => ZalgoPromise {\n\n let promise;\n let timeout;\n\n const promiseDebounced = function() : ZalgoPromise {\n if (timeout) {\n clearTimeout(timeout);\n }\n\n let localPromise = promise = promise || new ZalgoPromise();\n\n timeout = setTimeout(() => {\n promise = null;\n timeout = null;\n\n ZalgoPromise.try(method).then(\n result => { localPromise.resolve(result); },\n err => { localPromise.reject(err); }\n );\n }, delay);\n\n return localPromise;\n };\n\n return setFunctionName(promiseDebounced, `${ getFunctionName(method) }::promiseDebounced`);\n}\n\nexport function safeInterval(method : Function, time : number) : { cancel : () => void } {\n\n let timeout;\n\n function loop() {\n timeout = setTimeout(() => {\n method();\n loop();\n }, time);\n }\n\n loop();\n\n return {\n cancel() {\n clearTimeout(timeout);\n }\n };\n}\n\nexport function isInteger(str : string) : boolean {\n return Boolean(str.match(/^[0-9]+$/));\n}\n\nexport function isFloat(str : string) : boolean {\n return Boolean(str.match(/^[0-9]+\\.[0-9]+$/));\n}\n\nexport function serializePrimitive(value : string | number | boolean) : string {\n return value.toString();\n}\n\nexport function deserializePrimitive(value : string) : string | number | boolean {\n if (value === 'true') {\n return true;\n } else if (value === 'false') {\n return false;\n } else if (isInteger(value)) {\n return parseInt(value, 10);\n } else if (isFloat(value)) {\n return parseFloat(value);\n } else {\n return value;\n }\n}\n\nexport function dotify(obj : Object, prefix : string = '', newobj : Object = {}) : { [string] : string } {\n prefix = prefix ? `${ prefix }.` : prefix;\n for (let key in obj) {\n if (!obj.hasOwnProperty(key) || obj[key] === undefined || obj[key] === null || typeof obj[key] === 'function') {\n continue;\n } else if (obj[key] && Array.isArray(obj[key]) && obj[key].length && obj[key].every(val => typeof val !== 'object')) {\n newobj[`${ prefix }${ key }[]`] = obj[key].join(',');\n } else if (obj[key] && typeof obj[key] === 'object') {\n newobj = dotify(obj[key], `${ prefix }${ key }`, newobj);\n } else {\n newobj[`${ prefix }${ key }`] = serializePrimitive(obj[key]);\n }\n }\n return newobj;\n}\n\nexport function undotify(obj : { [string] : string }) : Object {\n \n let result = {};\n\n for (let key in obj) {\n if (!obj.hasOwnProperty(key) || typeof obj[key] !== 'string') {\n continue;\n }\n\n let value = obj[key];\n\n if (key.match(/^.+\\[\\]$/)) {\n key = key.slice(0, key.length - 2);\n value = value.split(',').map(deserializePrimitive);\n } else {\n value = deserializePrimitive(value);\n }\n\n let keyResult = result;\n let parts = key.split('.');\n for (let i = 0; i < parts.length; i++) {\n let part = parts[i];\n let isLast = (i + 1 === parts.length);\n let isIndex = !isLast && isInteger(parts[i + 1]);\n\n if (part === 'constructor' || part === 'prototype' || part === '__proto__') {\n throw new Error(`Disallowed key: ${ part }`);\n }\n\n if (isLast) {\n // $FlowFixMe\n keyResult[part] = value;\n } else {\n // $FlowFixMe\n keyResult = keyResult[part] = keyResult[part] || (isIndex ? [] : {});\n }\n }\n }\n\n return result;\n}\n\nexport type EventEmitterType = {\n on : (eventName : string, handler : Function) => CancelableType,\n once : (eventName : string, handler : Function) => CancelableType,\n trigger : (eventName : string, ...args : $ReadOnlyArray) => ZalgoPromise,\n triggerOnce : (eventName : string, ...args : $ReadOnlyArray) => ZalgoPromise\n};\n\nexport function eventEmitter() : EventEmitterType {\n let triggered = {};\n let handlers = {};\n\n return {\n\n on(eventName : string, handler : Function) : CancelableType {\n let handlerList = handlers[eventName] = handlers[eventName] || [];\n\n handlerList.push(handler);\n\n let cancelled = false;\n\n return {\n cancel() {\n if (!cancelled) {\n cancelled = true;\n handlerList.splice(handlerList.indexOf(handler), 1);\n }\n\n }\n };\n },\n\n once(eventName : string, handler : Function) : CancelableType {\n\n let listener = this.on(eventName, () => {\n listener.cancel();\n handler();\n });\n\n return listener;\n },\n\n trigger(eventName : string, ...args : $ReadOnlyArray) : ZalgoPromise {\n\n let handlerList = handlers[eventName];\n let promises = [];\n\n if (handlerList) {\n for (let handler of handlerList) {\n promises.push(ZalgoPromise.try(() => handler(...args)));\n }\n }\n\n return ZalgoPromise.all(promises).then(noop);\n },\n\n triggerOnce(eventName : string, ...args : $ReadOnlyArray) : ZalgoPromise {\n\n if (triggered[eventName]) {\n return ZalgoPromise.resolve();\n }\n\n triggered[eventName] = true;\n return this.trigger(eventName, ...args);\n }\n };\n}\n\nexport function camelToDasherize(string : string) : string {\n return string.replace(/([A-Z])/g, (g) => {\n return `-${ g.toLowerCase() }`;\n });\n}\n\nexport function dasherizeToCamel(string : string) : string {\n return string.replace(/-([a-z])/g, (g) => {\n return g[1].toUpperCase();\n });\n}\n\nexport function capitalizeFirstLetter(string : string) : string {\n return string.charAt(0).toUpperCase() + string.slice(1).toLowerCase();\n}\n\nexport function get(item : Object, path : string, def : mixed) : mixed {\n\n if (!path) {\n return def;\n }\n\n let pathParts = path.split('.');\n\n // Loop through each section of our key path\n\n for (let i = 0; i < pathParts.length; i++) {\n\n // If we have an object, we can get the key\n if (typeof item === 'object' && item !== null) {\n item = item[pathParts[i]];\n\n // Otherwise, we should return the default (undefined if not provided)\n } else {\n return def;\n }\n }\n\n // If our final result is undefined, we should return the default\n\n return item === undefined ? def : item;\n}\n\nexport function safeTimeout(method : Function, time : number) {\n\n let interval = safeInterval(() => {\n time -= 100;\n if (time <= 0) {\n interval.cancel();\n method();\n }\n }, 100);\n}\n\nexport function defineLazyProp(obj : Object | Array, key : string | number, getter : () => T) {\n if (Array.isArray(obj)) {\n if (typeof key !== 'number') {\n throw new TypeError(`Array key must be number`);\n }\n } else if (typeof obj === 'object' && obj !== null) {\n if (typeof key !== 'string') {\n throw new TypeError(`Object key must be string`);\n }\n }\n \n Object.defineProperty(obj, key, {\n configurable: true,\n enumerable: true,\n get: () => {\n // $FlowFixMe\n delete obj[key];\n let value = getter();\n // $FlowFixMe\n obj[key] = value;\n return value;\n },\n set: (value : T) => {\n // $FlowFixMe\n delete obj[key];\n // $FlowFixMe\n obj[key] = value;\n }\n });\n}\n\nexport function arrayFrom(item : Iterable) : Array { // eslint-disable-line no-undef\n return Array.prototype.slice.call(item);\n}\n\nexport function isObject(item : mixed) : boolean {\n return (typeof item === 'object' && item !== null);\n}\n\nexport function isObjectObject(obj : mixed) : boolean {\n return isObject(obj) && Object.prototype.toString.call(obj) === '[object Object]';\n}\n\nexport function isPlainObject(obj : mixed) : boolean {\n if (!isObjectObject(obj)) {\n return false;\n }\n\n // $FlowFixMe\n let constructor = obj.constructor;\n\n if (typeof constructor !== 'function') {\n return false;\n }\n\n let prototype = constructor.prototype;\n\n if (!isObjectObject(prototype)) {\n return false;\n }\n\n if (!prototype.hasOwnProperty('isPrototypeOf')) {\n return false;\n }\n\n return true;\n}\n\nexport function replaceObject | Object> (item : T, replacer : (mixed, string | number, string) => mixed, fullKey : string = '') : T {\n\n if (Array.isArray(item)) {\n let length = item.length;\n let result : Array = [];\n\n for (let i = 0; i < length; i++) {\n\n \n defineLazyProp(result, i, () => {\n let itemKey = fullKey ? `${ fullKey }.${ i }` : `${ i }`;\n let el = item[i];\n\n let child = replacer(el, i, itemKey);\n\n if (isPlainObject(child) || Array.isArray(child)) {\n // $FlowFixMe\n child = replaceObject(child, replacer, itemKey);\n }\n\n return child;\n });\n }\n\n // $FlowFixMe\n return result;\n } else if (isPlainObject(item)) {\n let result = {};\n\n for (let key in item) {\n if (!item.hasOwnProperty(key)) {\n continue;\n }\n\n defineLazyProp(result, key, () => {\n let itemKey = fullKey ? `${ fullKey }.${ key }` : `${ key }`;\n // $FlowFixMe\n let el = item[key];\n\n let child = replacer(el, key, itemKey);\n\n if (isPlainObject(child) || Array.isArray(child)) {\n // $FlowFixMe\n child = replaceObject(child, replacer, itemKey);\n }\n\n return child;\n });\n }\n\n // $FlowFixMe\n return result;\n } else {\n throw new Error(`Pass an object or array`);\n }\n}\n\n\nexport function copyProp(source : Object, target : Object, name : string, def : mixed) {\n if (source.hasOwnProperty(name)) {\n let descriptor = Object.getOwnPropertyDescriptor(source, name);\n // $FlowFixMe\n Object.defineProperty(target, name, descriptor);\n\n } else {\n target[name] = def;\n }\n}\n\ntype RegexResultType = {\n text : string,\n groups : Array,\n start : number,\n end : number,\n length : number,\n replace : (text : string) => string\n};\n\nexport function regex(pattern : string | RegExp, string : string, start : number = 0) : ?RegexResultType {\n\n if (typeof pattern === 'string') {\n // eslint-disable-next-line security/detect-non-literal-regexp\n pattern = new RegExp(pattern);\n }\n\n let result = string.slice(start).match(pattern);\n\n if (!result) {\n return;\n }\n\n // $FlowFixMe\n let index : number = result.index;\n let regmatch = result[0];\n\n return {\n text: regmatch,\n groups: result.slice(1),\n start: start + index,\n end: start + index + regmatch.length,\n length: regmatch.length,\n\n replace(text : string) : string {\n\n if (!regmatch) {\n return '';\n }\n\n return `${ regmatch.slice(0, start + index) }${ text }${ regmatch.slice(index + regmatch.length) }`;\n }\n };\n}\n\nexport function regexAll(pattern : string | RegExp, string : string) : Array {\n\n let matches = [];\n let start = 0;\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n let regmatch = regex(pattern, string, start);\n\n if (!regmatch) {\n break;\n }\n\n matches.push(regmatch);\n start = match.end;\n }\n\n return matches;\n}\n\nexport function isDefined(value : ?mixed) : boolean {\n return value !== null && value !== undefined;\n}\n\nexport function cycle(method : Function) : ZalgoPromise {\n return ZalgoPromise.try(method).then(() => cycle(method));\n}\n\nexport function debounce(method : (...args : Array) => T, time : number = 100) : (...args : Array) => void {\n\n let timeout;\n\n const debounceWrapper = function() {\n clearTimeout(timeout);\n\n timeout = setTimeout(() => {\n return method.apply(this, arguments);\n }, time);\n };\n\n return setFunctionName(debounceWrapper, `${ getFunctionName(method) }::debounced`);\n}\n\nexport function isRegex(item : mixed) : boolean {\n return Object.prototype.toString.call(item) === '[object RegExp]';\n}\n\ntype FunctionProxy = (method : T) => T;\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport let weakMapMemoize : FunctionProxy<*> = (method : (arg : any) => R) : ((...args : Array) => R) => {\n\n let weakmap = new WeakMap();\n\n // eslint-disable-next-line flowtype/no-weak-types\n return function weakmapMemoized(arg : any) : R {\n return weakmap.getOrSet(arg, () => method.call(this, arg));\n };\n};\n\ntype FunctionPromiseProxy) => ZalgoPromise> = (T) => T;\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport let weakMapMemoizePromise : FunctionPromiseProxy<*, *> = (method : (arg : any) => ZalgoPromise) : ((...args : Array) => ZalgoPromise) => {\n\n let weakmap = new WeakMap();\n\n // eslint-disable-next-line flowtype/no-weak-types\n return function weakmapMemoizedPromise(arg : any) : ZalgoPromise {\n return weakmap.getOrSet(arg, () =>\n method.call(this, arg).finally(() => {\n weakmap.delete(arg);\n })\n );\n };\n};\n\nexport function getOrSet(obj : O, key : string, getter : () => T) : T {\n if (obj.hasOwnProperty(key)) {\n return obj[key];\n }\n\n const val = getter();\n obj[key] = val;\n return val;\n}\n\nexport type CleanupType = {|\n set : (string, T) => T, // eslint-disable-line no-undef\n register : (Function) => void,\n all : () => ZalgoPromise\n|};\n\nexport function cleanup(obj : Object) : CleanupType {\n\n const tasks = [];\n let cleaned = false;\n\n return {\n set(name : string, item : T) : T {\n if (!cleaned) {\n obj[name] = item;\n this.register(() => {\n delete obj[name];\n });\n }\n return item;\n },\n\n register(method : Function) {\n if (cleaned) {\n method();\n } else {\n tasks.push(once(method));\n }\n },\n\n all() : ZalgoPromise {\n const results = [];\n cleaned = true;\n\n while (tasks.length) {\n const task = tasks.pop();\n results.push(task());\n }\n\n return ZalgoPromise.all(results).then(noop);\n }\n };\n}\n\nexport function tryCatch(fn : () => T) : {| result : T, error : void |} | {| result : void, error : mixed |} {\n let result;\n let error;\n\n try {\n result = fn();\n } catch (err) {\n error = err;\n }\n \n // $FlowFixMe\n return { result, error };\n}\n\nexport function removeFromArray>(arr : T, item : X) {\n const index = arr.indexOf(item);\n if (index !== -1) {\n arr.splice(index, 1);\n }\n}\n\nexport function assertExists(name : string, thing : void | null | T) : T {\n if (thing === null || typeof thing === 'undefined') {\n throw new Error(`Expected ${ name } to be present`);\n }\n \n return thing;\n}\n \nexport function unique(arr : $ReadOnlyArray) : $ReadOnlyArray {\n const result = {};\n for (const item of arr) {\n // eslint-disable-next-line const-immutable/no-mutation\n result[item] = true;\n }\n return Object.keys(result);\n}\n","/* @flow */\n\nexport const KEY_CODES = {\n ENTER: 13\n};\n","/* @flow */\n/* eslint max-lines: off */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { linkFrameWindow, isWindowClosed,\n type SameDomainWindowType, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\n\nimport { inlineMemoize, noop, stringify, capitalizeFirstLetter,\n once, extend, safeInterval, uniqueID, arrayFrom } from './util';\nimport { isDevice } from './device';\nimport { KEY_CODES } from './constants';\nimport type { CancelableType } from './types';\n\ntype ElementRefType = string | HTMLElement;\n\nexport function isDocumentReady() : boolean {\n return Boolean(document.body) && document.readyState === 'complete';\n}\n\nexport function urlEncode(str : string) : string {\n return str.replace(/\\?/g, '%3F').replace(/&/g, '%26').replace(/#/g, '%23').replace(/\\+/g, '%2B');\n}\n\nexport function waitForWindowReady() : ZalgoPromise {\n return inlineMemoize(waitForWindowReady, () : ZalgoPromise => {\n return new ZalgoPromise(resolve => {\n if (isDocumentReady()) {\n resolve();\n }\n\n window.addEventListener('load', () => resolve());\n });\n });\n}\n\nexport function waitForDocumentReady() : ZalgoPromise {\n return inlineMemoize(waitForDocumentReady, () : ZalgoPromise => {\n return new ZalgoPromise(resolve => {\n\n if (isDocumentReady()) {\n return resolve();\n }\n\n let interval = setInterval(() => {\n if (isDocumentReady()) {\n clearInterval(interval);\n return resolve();\n }\n }, 10);\n });\n });\n}\n\nexport function waitForDocumentBody() : ZalgoPromise {\n return waitForDocumentReady().then(() => {\n if (document.body) {\n return document.body;\n }\n\n throw new Error('Document ready but document.body not present');\n });\n}\n\nexport function parseQuery(queryString : string) : Object {\n return inlineMemoize(parseQuery, () : Object => {\n let params = {};\n\n if (!queryString) {\n return params;\n }\n\n if (queryString.indexOf('=') === -1) {\n return params;\n }\n\n for (let pair of queryString.split('&')) {\n pair = pair.split('=');\n\n if (pair[0] && pair[1]) {\n params[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n }\n\n return params;\n }, [ queryString ]);\n}\n\n\nexport function getQueryParam(name : string) : string {\n return parseQuery(window.location.search.slice(1))[name];\n}\n\nexport function urlWillRedirectPage(url : string) : boolean {\n\n if (url.indexOf('#') === -1) {\n return true;\n }\n\n if (url.indexOf('#') === 0) {\n return false;\n }\n\n if (url.split('#')[0] === window.location.href.split('#')[0]) {\n return false;\n }\n\n return true;\n}\n\nexport function formatQuery(obj : { [ string ] : string } = {}) : string {\n\n return Object.keys(obj).filter(key => {\n return typeof obj[key] === 'string';\n }).map(key => {\n return `${ urlEncode(key) }=${ urlEncode(obj[key]) }`;\n }).join('&');\n}\n\nexport function extendQuery(originalQuery : string, props : { [ string ] : string } = {}) : string {\n\n if (!props || !Object.keys(props).length) {\n return originalQuery;\n }\n\n return formatQuery({\n ...parseQuery(originalQuery),\n ...props\n });\n}\n\nexport function extendUrl(url : string, options : { query? : { [string] : string }, hash? : { [string] : string } } = {}) : string {\n\n let query = options.query || {};\n let hash = options.hash || {};\n\n let originalUrl;\n let originalQuery;\n let originalHash;\n\n [ originalUrl, originalHash ] = url.split('#');\n [ originalUrl, originalQuery ] = originalUrl.split('?');\n\n let queryString = extendQuery(originalQuery, query);\n let hashString = extendQuery(originalHash, hash);\n\n if (queryString) {\n originalUrl = `${ originalUrl }?${ queryString }`;\n }\n\n if (hashString) {\n originalUrl = `${ originalUrl }#${ hashString }`;\n }\n\n return originalUrl;\n}\n\nexport function redirect(url : string, win : CrossDomainWindowType = window) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n win.location = url;\n if (!urlWillRedirectPage(url)) {\n resolve();\n }\n });\n}\n\nexport function hasMetaViewPort() : boolean {\n let meta = document.querySelector('meta[name=viewport]');\n\n if (isDevice() && window.screen.width < 660 && !meta) {\n return false;\n }\n\n return true;\n}\n\nexport function isElementVisible(el : HTMLElement) : boolean {\n return Boolean(el.offsetWidth || el.offsetHeight || el.getClientRects().length);\n}\n\nexport function enablePerformance() : boolean {\n return inlineMemoize(enablePerformance, () : boolean => {\n /* eslint-disable compat/compat */\n return Boolean(\n window.performance &&\n performance.now &&\n performance.timing &&\n performance.timing.connectEnd &&\n performance.timing.navigationStart &&\n (Math.abs(performance.now() - Date.now()) > 1000) &&\n (performance.now() - (performance.timing.connectEnd - performance.timing.navigationStart)) > 0\n );\n /* eslint-enable compat/compat */\n });\n}\n\nexport function getPageRenderTime() : ZalgoPromise {\n return waitForDocumentReady().then(() => {\n\n if (!enablePerformance()) {\n return;\n }\n\n let timing = window.performance.timing;\n\n if (timing.connectEnd && timing.domInteractive) {\n return timing.domInteractive - timing.connectEnd;\n }\n });\n}\n\nexport function htmlEncode(html : string = '') : string {\n return html.toString()\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(/\\//g, '/');\n}\n\nexport function isBrowser() : boolean {\n return (typeof window !== 'undefined');\n}\n\nexport function querySelectorAll(selector : string, doc : HTMLElement = window.document) : Array {\n return Array.prototype.slice.call(doc.querySelectorAll(selector));\n}\n\nexport function onClick(element : HTMLElement, handler : (Event) => void) {\n element.addEventListener('touchstart', noop);\n element.addEventListener('click', handler);\n element.addEventListener('keypress', (event : Event) => {\n // $FlowFixMe\n if (event.keyCode === KEY_CODES.ENTER) {\n return handler(event);\n }\n });\n}\n\nexport function getScript({ host = window.location.host, path } : { host? : string, path : string }) : ?HTMLScriptElement {\n return inlineMemoize(getScript, () : ?HTMLScriptElement => {\n\n let url = `${ host }${ path }`;\n let scripts = Array.prototype.slice.call(document.getElementsByTagName('script'));\n\n for (let script of scripts) {\n if (!script.src) {\n continue;\n }\n\n let src = script.src.replace(/^https?:\\/\\//, '').split('?')[0];\n\n if (src === url) {\n return script;\n }\n }\n }, [ path ]);\n}\n\nexport function isLocalStorageEnabled() : boolean {\n return inlineMemoize(isLocalStorageEnabled, () => {\n try {\n if (typeof window === 'undefined') {\n return false;\n }\n\n if (window.localStorage) {\n let value = Math.random().toString();\n window.localStorage.setItem('__test__localStorage__', value);\n let result = window.localStorage.getItem('__test__localStorage__');\n window.localStorage.removeItem('__test__localStorage__');\n if (value === result) {\n return true;\n }\n }\n } catch (err) {\n // pass\n }\n return false;\n });\n}\n\nexport function getBrowserLocales() : Array<{ country? : string, lang : string }> {\n let nav = window.navigator;\n\n let locales = nav.languages\n ? Array.prototype.slice.apply(nav.languages)\n : [];\n\n if (nav.language) {\n locales.push(nav.language);\n }\n\n if (nav.userLanguage) {\n locales.push(nav.userLanguage);\n }\n\n return locales.map(locale => {\n\n if (locale && locale.match(/^[a-z]{2}[-_][A-Z]{2}$/)) {\n let [ lang, country ] = locale.split(/[-_]/);\n return { country, lang };\n }\n\n if (locale && locale.match(/^[a-z]{2}$/)) {\n return { lang: locale };\n }\n\n return null;\n\n }).filter(Boolean);\n}\n\n\nexport function appendChild(container : HTMLElement, child : HTMLElement | Text) {\n container.appendChild(child);\n}\n\nexport function isElement(element : mixed) : boolean {\n\n if (element instanceof window.Element) {\n return true;\n }\n\n if (element !== null && typeof element === 'object' && element.nodeType === 1 && typeof element.style === 'object' && typeof element.ownerDocument === 'object') {\n return true;\n }\n\n return false;\n}\n\nexport function getElementSafe(id : ElementRefType, doc : Document | HTMLElement = document) : ?HTMLElement {\n\n if (isElement(id)) {\n // $FlowFixMe\n return id;\n }\n\n if (typeof id === 'string') {\n return doc.querySelector(id);\n }\n}\n\nexport function getElement(id : ElementRefType, doc : Document | HTMLElement = document) : HTMLElement {\n\n let element = getElementSafe(id, doc);\n\n if (element) {\n return element;\n }\n\n throw new Error(`Can not find element: ${ stringify(id) }`);\n}\n\nexport function elementReady(id : ElementRefType) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n let name = stringify(id);\n let el = getElementSafe(id);\n\n if (el) {\n return resolve(el);\n }\n\n if (isDocumentReady()) {\n return reject(new Error(`Document is ready and element ${ name } does not exist`));\n }\n\n let interval = setInterval(() => {\n\n el = getElementSafe(id);\n\n if (el) {\n clearInterval(interval);\n return resolve(el);\n }\n\n if (isDocumentReady()) {\n clearInterval(interval);\n return reject(new Error(`Document is ready and element ${ name } does not exist`));\n }\n }, 10);\n });\n}\n\nexport function PopupOpenError(message : string) {\n this.message = message;\n}\n\nPopupOpenError.prototype = Object.create(Error.prototype);\n\ntype PopupOptions = {|\n name? : string,\n width? : number,\n height? : number,\n top? : number,\n left? : number,\n status? : 0 | 1,\n resizable? : 0 | 1,\n toolbar? : 0 | 1,\n menubar? : 0 | 1,\n scrollbars? : 0 | 1\n|};\n\nexport function popup(url : string, options? : PopupOptions) : CrossDomainWindowType {\n\n // $FlowFixMe\n options = options || {};\n\n let { width, height } = options;\n\n let top = 0;\n let left = 0;\n\n if (width) {\n if (window.outerWidth) {\n left = Math.round((window.outerWidth - width) / 2) + window.screenX;\n } else if (window.screen.width) {\n left = Math.round((window.screen.width - width) / 2);\n }\n }\n\n if (height) {\n if (window.outerHeight) {\n top = Math.round((window.outerHeight - height) / 2) + window.screenY;\n } else if (window.screen.height) {\n top = Math.round((window.screen.height - height) / 2);\n }\n }\n\n if (width && height) {\n options = {\n top,\n left,\n width,\n height,\n status: 1,\n toolbar: 0,\n menubar: 0,\n resizable: 1,\n scrollbars: 1,\n ...options\n };\n }\n\n let name = options.name || '';\n delete options.name;\n\n // eslint-disable-next-line array-callback-return\n let params = Object.keys(options).map(key => {\n // $FlowFixMe\n if (options[key] !== null && options[key] !== undefined) {\n return `${ key }=${ stringify(options[key]) }`;\n }\n }).filter(Boolean).join(',');\n\n let win;\n\n try {\n win = window.open(url, name, params, true);\n } catch (err) {\n throw new PopupOpenError(`Can not open popup window - ${ err.stack || err.message }`);\n }\n\n if (isWindowClosed(win)) {\n let err = new PopupOpenError(`Can not open popup window - blocked`);\n throw err;\n }\n\n window.addEventListener('unload', () => win.close());\n\n return win;\n}\n\n\nexport function writeToWindow(win : SameDomainWindowType, html : string) {\n try {\n win.document.open();\n win.document.write(html);\n win.document.close();\n } catch (err) {\n try {\n win.location = `javascript: document.open(); document.write(${ JSON.stringify(html) }); document.close();`;\n } catch (err2) {\n // pass\n }\n }\n}\n\nexport function writeElementToWindow(win : SameDomainWindowType, el : HTMLElement) {\n\n let tag = el.tagName.toLowerCase();\n\n if (tag !== 'html') {\n throw new Error(`Expected element to be html, got ${ tag }`);\n }\n\n let documentElement = win.document.documentElement;\n\n for (const child of arrayFrom(documentElement.children)) {\n documentElement.removeChild(child);\n }\n\n for (const child of arrayFrom(el.children)) {\n documentElement.appendChild(child);\n }\n}\n\nexport function setStyle(el : HTMLElement, styleText : string, doc : Document = window.document) {\n // $FlowFixMe\n if (el.styleSheet) {\n // $FlowFixMe\n el.styleSheet.cssText = styleText;\n } else {\n el.appendChild(doc.createTextNode(styleText));\n }\n}\n\nexport type ElementOptionsType = {\n style? : { [ string ] : string },\n id? : string,\n class? : ?Array,\n attributes? : { [ string ] : string },\n styleSheet? : ?string,\n html? : ?string\n};\n\nlet awaitFrameLoadPromises : WeakMap>;\n\nexport function awaitFrameLoad(frame : HTMLIFrameElement) : ZalgoPromise {\n awaitFrameLoadPromises = awaitFrameLoadPromises || new WeakMap();\n\n if (awaitFrameLoadPromises.has(frame)) {\n let promise = awaitFrameLoadPromises.get(frame);\n if (promise) {\n return promise;\n }\n }\n\n let promise = new ZalgoPromise((resolve, reject) => {\n frame.addEventListener('load', () => {\n linkFrameWindow(frame);\n resolve(frame);\n });\n\n frame.addEventListener('error', (err : Event) => {\n if (frame.contentWindow) {\n resolve(frame);\n } else {\n reject(err);\n }\n });\n });\n\n awaitFrameLoadPromises.set(frame, promise);\n\n return promise;\n}\n\nexport function awaitFrameWindow(frame : HTMLIFrameElement) : ZalgoPromise {\n return awaitFrameLoad(frame).then(loadedFrame => {\n\n if (!loadedFrame.contentWindow) {\n throw new Error(`Could not find window in iframe`);\n }\n\n return loadedFrame.contentWindow;\n });\n}\n\nexport function createElement(tag : string = 'div', options : ElementOptionsType = {}, container : ?HTMLElement) : HTMLElement {\n\n tag = tag.toLowerCase();\n let element = document.createElement(tag);\n\n if (options.style) {\n extend(element.style, options.style);\n }\n\n if (options.class) {\n element.className = options.class.join(' ');\n }\n\n if (options.id) {\n element.setAttribute('id', options.id);\n }\n\n if (options.attributes) {\n for (let key of Object.keys(options.attributes)) {\n element.setAttribute(key, options.attributes[key]);\n }\n }\n\n if (options.styleSheet) {\n setStyle(element, options.styleSheet);\n }\n\n if (container) {\n appendChild(container, element);\n }\n\n if (options.html) {\n if (tag === 'iframe') {\n // $FlowFixMe\n if (!container || !element.contentWindow) {\n throw new Error(`Iframe html can not be written unless container provided and iframe in DOM`);\n }\n\n // $FlowFixMe\n writeToWindow(element.contentWindow, options.html);\n\n } else {\n element.innerHTML = options.html;\n }\n }\n\n return element;\n}\n\n\nexport type IframeElementOptionsType = {\n style? : { [ string ] : string },\n class? : ?Array,\n attributes? : { [ string ] : string },\n styleSheet? : ?string,\n html? : ?string,\n url? : ?string\n};\n\nexport function iframe(options : IframeElementOptionsType = {}, container : ?HTMLElement) : HTMLIFrameElement {\n\n let attributes = options.attributes || {};\n let style = options.style || {};\n\n let frame = createElement('iframe', {\n attributes: {\n allowTransparency: 'true',\n ...attributes\n },\n style: {\n backgroundColor: 'transparent',\n border: 'none',\n ...style\n },\n html: options.html,\n class: options.class\n });\n\n const isIE = window.navigator.userAgent.match(/MSIE|Edge/i);\n \n if (!frame.hasAttribute('id')) {\n frame.setAttribute('id', uniqueID());\n }\n\n // $FlowFixMe\n awaitFrameLoad(frame);\n\n if (container) {\n let el = getElement(container);\n el.appendChild(frame);\n }\n\n if (options.url || isIE) {\n frame.setAttribute('src', options.url || 'about:blank');\n }\n\n // $FlowFixMe\n return frame;\n}\n\nexport function addEventListener(obj : HTMLElement, event : string, handler : (event : Event) => void) : CancelableType {\n obj.addEventListener(event, handler);\n return {\n cancel() {\n obj.removeEventListener(event, handler);\n }\n };\n}\n\nexport function bindEvents(element : HTMLElement, eventNames : Array, handler : (event : Event) => void) : CancelableType {\n\n handler = once(handler);\n\n for (let eventName of eventNames) {\n element.addEventListener(eventName, handler);\n }\n\n return {\n cancel: once(() => {\n for (let eventName of eventNames) {\n element.removeEventListener(eventName, handler);\n }\n })\n };\n}\n\nconst VENDOR_PREFIXES = [ 'webkit', 'moz', 'ms', 'o' ];\n\nexport function setVendorCSS(element : HTMLElement, name : string, value : string) {\n\n // $FlowFixMe\n element.style[name] = value;\n\n let capitalizedName = capitalizeFirstLetter(name);\n\n for (let prefix of VENDOR_PREFIXES) {\n // $FlowFixMe\n element.style[`${ prefix }${ capitalizedName }`] = value;\n }\n}\n\nconst ANIMATION_START_EVENTS = [ 'animationstart', 'webkitAnimationStart', 'oAnimationStart', 'MSAnimationStart' ];\nconst ANIMATION_END_EVENTS = [ 'animationend', 'webkitAnimationEnd', 'oAnimationEnd', 'MSAnimationEnd' ];\n\nexport function animate(element : ElementRefType, name : string, clean : (Function) => void, timeout : number = 1000) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n let el = getElement(element);\n\n if (!el) {\n return resolve();\n }\n\n let hasStarted = false;\n\n let startTimeout;\n let endTimeout;\n let startEvent;\n let endEvent;\n\n function cleanUp() {\n clearTimeout(startTimeout);\n clearTimeout(endTimeout);\n startEvent.cancel();\n endEvent.cancel();\n }\n\n startEvent = bindEvents(el, ANIMATION_START_EVENTS, event => {\n\n // $FlowFixMe\n if (event.target !== el || event.animationName !== name) {\n return;\n }\n\n clearTimeout(startTimeout);\n\n event.stopPropagation();\n\n startEvent.cancel();\n hasStarted = true;\n\n endTimeout = setTimeout(() => {\n cleanUp();\n resolve();\n }, timeout);\n });\n\n endEvent = bindEvents(el, ANIMATION_END_EVENTS, event => {\n\n // $FlowFixMe\n if (event.target !== el || event.animationName !== name) {\n return;\n }\n\n cleanUp();\n\n // $FlowFixMe\n if (typeof event.animationName === 'string' && event.animationName !== name) {\n return reject(`Expected animation name to be ${ name }, found ${ event.animationName }`);\n }\n\n return resolve();\n });\n\n setVendorCSS(el, 'animationName', name);\n\n startTimeout = setTimeout(() => {\n if (!hasStarted) {\n cleanUp();\n return resolve();\n }\n }, 200);\n\n if (clean) {\n clean(cleanUp);\n }\n });\n}\n\nconst STYLE = {\n\n DISPLAY: {\n NONE: 'none',\n BLOCK: 'block'\n },\n\n VISIBILITY: {\n VISIBLE: 'visible',\n HIDDEN: 'hidden'\n },\n\n IMPORTANT: 'important'\n};\n\nexport function makeElementVisible(element : HTMLElement) {\n element.style.setProperty('visibility', '');\n}\n\nexport function makeElementInvisible(element : HTMLElement) {\n element.style.setProperty('visibility', STYLE.VISIBILITY.HIDDEN, STYLE.IMPORTANT);\n}\n\n\nexport function showElement(element : HTMLElement) {\n element.style.setProperty('display', '');\n}\n\nexport function hideElement(element : HTMLElement) {\n element.style.setProperty('display', STYLE.DISPLAY.NONE, STYLE.IMPORTANT);\n}\n\nexport function destroyElement(element : HTMLElement) {\n if (element && element.parentNode) {\n element.parentNode.removeChild(element);\n }\n}\n\nexport function showAndAnimate(element : HTMLElement, name : string, clean : (Function) => void) : ZalgoPromise {\n let animation = animate(element, name, clean);\n showElement(element);\n return animation;\n}\n\nexport function animateAndHide(element : HTMLElement, name : string, clean : (Function) => void) : ZalgoPromise {\n return animate(element, name, clean).then(() => {\n hideElement(element);\n });\n}\n\nexport function addClass(element : HTMLElement, name : string) {\n element.classList.add(name);\n}\n\nexport function removeClass(element : HTMLElement, name : string) {\n element.classList.remove(name);\n}\n\nexport function isElementClosed(el : HTMLElement) : boolean {\n if (!el || !el.parentNode) {\n return true;\n }\n return false;\n}\n\nexport function watchElementForClose(element : HTMLElement, handler : () => mixed) : CancelableType {\n handler = once(handler);\n\n let interval;\n\n if (isElementClosed(element)) {\n handler();\n } else {\n interval = safeInterval(() => {\n if (isElementClosed(element)) {\n interval.cancel();\n handler();\n }\n }, 50);\n }\n\n return {\n cancel() {\n if (interval) {\n interval.cancel();\n }\n }\n };\n}\n\nexport function fixScripts(el : HTMLElement, doc : Document = window.document) {\n for (let script of querySelectorAll('script', el)) {\n let parentNode = script.parentNode;\n\n if (!parentNode) {\n continue;\n }\n\n let newScript = doc.createElement('script');\n newScript.text = script.textContent;\n parentNode.replaceChild(newScript, script);\n }\n}\n\ntype OnResizeOptions = {|\n width? : boolean,\n height? : boolean,\n interval? : number,\n win? : SameDomainWindowType\n|};\n\nexport function onResize(el : HTMLElement, handler : ({ width : number, height : number }) => void, { width = true, height = true, interval = 100, win = window } : OnResizeOptions = {}) : {} {\n let currentWidth = el.offsetWidth;\n let currentHeight = el.offsetHeight;\n\n handler({ width: currentWidth, height: currentHeight });\n\n let check = () => {\n let newWidth = el.offsetWidth;\n let newHeight = el.offsetHeight;\n\n if ((width && newWidth !== currentWidth) || (height && newHeight !== currentHeight)) {\n handler({ width: newWidth, height: newHeight });\n }\n\n currentWidth = newWidth;\n currentHeight = newHeight;\n };\n\n let observer;\n let timeout;\n\n if (typeof win.ResizeObserver !== 'undefined') {\n observer = new win.ResizeObserver(check);\n observer.observe(el);\n\n } else if (typeof win.MutationObserver !== 'undefined') {\n observer = new win.MutationObserver(check);\n observer.observe(el, {\n attributes: true,\n childList: true,\n subtree: true,\n characterData: false\n });\n win.addEventListener('resize', check);\n } else {\n let loop = () => {\n check();\n timeout = setTimeout(loop, interval);\n };\n loop();\n }\n\n return {\n cancel: () => {\n observer.disconnect();\n window.removeEventListener('resize', check);\n clearTimeout(timeout);\n }\n };\n}\n\nexport function getResourceLoadTime(url : string) : ?number {\n\n if (!enablePerformance()) {\n return;\n }\n\n if (!window.performance || typeof window.performance.getEntries !== 'function') {\n return;\n }\n\n const entries = window.performance.getEntries();\n\n for (let i = 0; i < entries.length; i++) {\n const entry = entries[i];\n\n if (entry && entry.name && entry.name.indexOf(url) === 0 && typeof entry.duration === 'number') {\n return Math.floor(entry.duration);\n }\n }\n}\n","/* @flow */\n\nimport { uniqueID, getGlobal, inlineMemoize } from './util';\nimport { isLocalStorageEnabled } from './dom';\n\ntype Getter = (handler : (Object) => T) => T;\n\nexport type Storage = {\n getState : Getter<*>,\n getID : () => string,\n getSessionState : Getter<*>,\n getSessionID : () => string\n};\n\nconst DEFAULT_SESSION_STORAGE = 20 * 60 * 1000;\n\nexport function getStorage({ name, lifetime = DEFAULT_SESSION_STORAGE } : { name : string, lifetime? : number }) : Storage {\n return inlineMemoize(getStorage, () => {\n const STORAGE_KEY = `__${ name }_storage__`;\n\n let accessedStorage;\n\n function getState(handler : (storage : Object) => T) : T {\n\n let localStorageEnabled = isLocalStorageEnabled();\n let storage;\n\n if (accessedStorage) {\n storage = accessedStorage;\n }\n\n if (!storage && localStorageEnabled) {\n let rawStorage = window.localStorage.getItem(STORAGE_KEY);\n\n if (rawStorage) {\n storage = JSON.parse(rawStorage);\n }\n }\n\n if (!storage) {\n storage = getGlobal()[STORAGE_KEY];\n }\n\n if (!storage) {\n storage = {\n id: uniqueID()\n };\n }\n\n if (!storage.id) {\n storage.id = uniqueID();\n }\n\n accessedStorage = storage;\n\n let result = handler(storage);\n\n if (localStorageEnabled) {\n window.localStorage.setItem(STORAGE_KEY, JSON.stringify(storage));\n } else {\n getGlobal()[STORAGE_KEY] = storage;\n }\n\n accessedStorage = null;\n\n return result;\n }\n\n function getID() : string {\n return getState(storage => storage.id);\n }\n\n function getSession(handler : (state : Object) => T) : T {\n return getState(storage => {\n\n let session = storage.__session__;\n let now = Date.now();\n\n if (session && ((now - session.created) > lifetime)) {\n session = null;\n }\n\n if (!session) {\n session = {\n guid: uniqueID(),\n created: now\n };\n }\n\n storage.__session__ = session;\n\n return handler(session);\n });\n }\n\n function getSessionState(handler : (state : Object) => T) : T {\n return getSession(session => {\n session.state = session.state || {};\n return handler(session.state);\n });\n }\n\n function getSessionID() : string {\n return getSession(session => session.guid);\n }\n\n return {\n getState,\n getID,\n getSessionState,\n getSessionID\n };\n }, [ { name, lifetime } ]);\n}\n","/* @flow */\n\nimport { noop } from './util';\nimport { getStorage } from './storage';\n\nfunction getBelterExperimentStorage() : Object {\n return getStorage({ name: 'belter_experiment' });\n}\n\nfunction isEventUnique(name : string) : boolean {\n return getBelterExperimentStorage().getSessionState(state => {\n state.loggedBeacons = state.loggedBeacons || [];\n\n if (state.loggedBeacons.indexOf(name) === -1) {\n state.loggedBeacons.push(name);\n return true;\n }\n\n return false;\n });\n}\n\nexport type Experiment = {\n isEnabled : () => boolean,\n isDisabled : () => boolean,\n getTreatment : () => string,\n log : (string, payload? : { [string] : ?string }) => Experiment,\n logStart : (payload? : { [string] : ?string }) => Experiment,\n logComplete : (payload? : { [string] : ?string }) => Experiment\n};\n\nfunction getThrottlePercentile(name : string) : number {\n return getBelterExperimentStorage().getState(state => {\n state.throttlePercentiles = state.throttlePercentiles || {};\n state.throttlePercentiles[name] = state.throttlePercentiles[name] || Math.floor(Math.random() * 100);\n return state.throttlePercentiles[name];\n });\n}\n\nconst THROTTLE_GROUP = {\n TEST: 'test',\n CONTROL: 'control',\n THROTTLE: 'throttle'\n};\n\ntype ExperimentOptions = {\n name : string,\n sample? : number,\n logTreatment? : ({ name : string, treatment : string, payload : { [string] : ?string } }) => void,\n logCheckpoint? : ({ name : string, treatment : string, checkpoint : string, payload : { [string] : ?string } }) => void\n};\n\nexport function experiment({ name, sample = 50, logTreatment = noop, logCheckpoint = noop } : ExperimentOptions) : Experiment {\n\n let throttle = getThrottlePercentile(name);\n\n let group;\n\n if (throttle < sample) {\n group = THROTTLE_GROUP.TEST;\n } else if ((sample >= 50) || ((sample <= throttle) && (throttle < (sample * 2)))) {\n group = THROTTLE_GROUP.CONTROL;\n } else {\n group = THROTTLE_GROUP.THROTTLE;\n }\n\n let treatment = `${ name }_${ group }`;\n\n let started = false;\n let forced = false;\n\n try {\n if (window.localStorage && window.localStorage.getItem(name)) {\n forced = true;\n }\n } catch (err) {\n // pass\n }\n\n return {\n\n isEnabled() : boolean {\n return (group === THROTTLE_GROUP.TEST) || forced;\n },\n\n isDisabled() : boolean {\n return (group !== THROTTLE_GROUP.TEST) && !forced;\n },\n\n getTreatment() : string {\n return treatment;\n },\n\n log(checkpoint : string, payload? : { [string] : ?string } = {}) : Experiment {\n if (!started) {\n return this;\n }\n\n if (isEventUnique(`${ name }_${ treatment }_${ JSON.stringify(payload) }`)) {\n logTreatment({ name, treatment, payload });\n }\n\n if (isEventUnique(`${ name }_${ treatment }_${ checkpoint }_${ JSON.stringify(payload) }`)) {\n logCheckpoint({ name, treatment, checkpoint, payload });\n }\n\n return this;\n },\n\n logStart(payload? : { [string] : ?string } = {}) : Experiment {\n started = true;\n return this.log(`start`, payload);\n },\n\n logComplete(payload? : { [string] : ?string } = {}) : Experiment {\n return this.log(`complete`, payload);\n }\n };\n}\n","/* @flow */\n\nimport { getGlobal } from './util';\n\nexport function getGlobalNameSpace({ name, version = 'latest' } : { name : string, version? : string }) : { get : (string, defValue? : T) => T } {\n\n let global = getGlobal();\n let globalKey = `__${ name }__${ version }_global__`;\n\n let namespace = global[globalKey] = global[globalKey] || {};\n\n return {\n get: (key : string, defValue? : T) : T => {\n // $FlowFixMe\n defValue = defValue || {};\n let item = namespace[key] = namespace[key] || defValue;\n return item;\n }\n };\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { type SameDomainWindowType } from 'cross-domain-utils/src';\n\ntype RequestOptionsType = {\n url : string,\n method? : string,\n headers? : { [key : string] : string },\n json? : $ReadOnlyArray | Object,\n data? : { [key : string] : string },\n body? : string,\n win? : SameDomainWindowType,\n timeout? : number\n};\n\ntype ResponseType = {\n status : number,\n headers : { [string] : string },\n body : Object\n};\n\nconst HEADERS = {\n CONTENT_TYPE: 'content-type',\n ACCEPT: 'accept'\n};\n\nlet headerBuilders = [];\n\nfunction parseHeaders(rawHeaders : string = '') : { [string] : string } {\n let result = {};\n for (let line of rawHeaders.trim().split('\\n')) {\n let [ key, ...values ] = line.split(':');\n result[key.toLowerCase()] = values.join(':').trim();\n }\n return result;\n}\n\nexport function request({ url, method = 'get', headers = {}, json, data, body, win = window, timeout = 0 } : RequestOptionsType) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n if ((json && data) || (json && body) || (data && json)) {\n throw new Error(`Only options.json or options.data or options.body should be passed`);\n }\n\n let normalizedHeaders = {};\n\n for (let key of Object.keys(headers)) {\n normalizedHeaders[key.toLowerCase()] = headers[key];\n }\n\n if (json) {\n normalizedHeaders[HEADERS.CONTENT_TYPE] = normalizedHeaders[HEADERS.CONTENT_TYPE] || 'application/json';\n } else if (data || body) {\n normalizedHeaders[HEADERS.CONTENT_TYPE] = normalizedHeaders[HEADERS.CONTENT_TYPE] || 'application/x-www-form-urlencoded; charset=utf-8';\n }\n\n normalizedHeaders[HEADERS.ACCEPT] = normalizedHeaders[HEADERS.ACCEPT] || 'application/json';\n\n for (let headerBuilder of headerBuilders) {\n let builtHeaders = headerBuilder();\n\n for (let key of Object.keys(builtHeaders)) {\n normalizedHeaders[key.toLowerCase()] = builtHeaders[key];\n }\n }\n\n let xhr = new win.XMLHttpRequest();\n\n xhr.addEventListener('load', function xhrLoad() : void {\n\n let responseHeaders = parseHeaders(this.getAllResponseHeaders());\n\n if (!this.status) {\n return reject(new Error(`Request to ${ method.toLowerCase() } ${ url } failed: no response status code.`));\n }\n \n let contentType = responseHeaders['content-type'];\n let isJSON = contentType && (contentType.indexOf('application/json') === 0 || contentType.indexOf('text/json') === 0);\n let responseBody = this.responseText;\n\n try {\n responseBody = JSON.parse(responseBody);\n } catch (err) {\n if (isJSON) {\n return reject(new Error(`Invalid json: ${ this.responseText }.`));\n }\n }\n\n let res = {\n status: this.status,\n headers: responseHeaders,\n body: responseBody\n };\n\n return resolve(res);\n\n }, false);\n\n xhr.addEventListener('error', (evt) => {\n reject(new Error(`Request to ${ method.toLowerCase() } ${ url } failed: ${ evt.toString() }.`));\n }, false);\n\n xhr.open(method, url, true);\n\n for (let key in normalizedHeaders) {\n if (normalizedHeaders.hasOwnProperty(key)) {\n xhr.setRequestHeader(key, normalizedHeaders[key]);\n }\n }\n\n if (json) {\n body = JSON.stringify(json);\n } else if (data) {\n body = Object.keys(data).map(key => {\n return `${ encodeURIComponent(key) }=${ data ? encodeURIComponent(data[key]) : '' }`;\n }).join('&');\n }\n\n xhr.timeout = timeout;\n xhr.ontimeout = function xhrTimeout() {\n reject(new Error(`Request to ${ method.toLowerCase() } ${ url } has timed out`));\n };\n\n xhr.send(body);\n });\n}\n\nexport function addHeaderBuilder(method : () => { [string] : string }) {\n headerBuilders.push(method);\n}\n","/* @flow */\n\n// export something to force webpack to see this as an ES module\nexport const TYPES = true;\n\ndeclare var __TEST__ : boolean;\n\nexport type JSONPrimitive = string | boolean | number;\nexport type JSONObject = { [string] : JSONPrimitive | JSONObject } | Array;\nexport type JSONType = JSONObject | JSONPrimitive;\n\nexport type CancelableType = {\n cancel : () => void\n};\n","/* @flow */\n\nimport { memoize, promisify } from './util';\n\nexport function memoized(target : Object, name : string, descriptor : Object) {\n descriptor.value = memoize(descriptor.value, { name, thisNamespace: true });\n}\n\nexport function promise(target : Object, name : string, descriptor : Object) {\n descriptor.value = promisify(descriptor.value, { name });\n}\n","/* @flow */\n\nexport function isPerc(str : string) : boolean {\n return typeof str === 'string' && (/^[0-9]+%$/).test(str);\n}\n\nexport function isPx(str : string) : boolean {\n return typeof str === 'string' && (/^[0-9]+px$/).test(str);\n}\n\nexport function toNum(val : string | number) : number {\n\n if (typeof val === 'number') {\n return val;\n }\n\n let match = val.match(/^([0-9]+)(px|%)$/);\n\n if (!match) {\n throw new Error(`Could not match css value from ${ val }`);\n }\n\n return parseInt(match[1], 10);\n}\n\nexport function toPx(val : number | string) : string {\n return `${ toNum(val) }px`;\n}\n\nexport function toCSS(val : number | string) : string {\n\n if (typeof val === 'number') {\n return toPx(val);\n }\n\n return isPerc(val) ? val : toPx(val);\n}\n\nexport function percOf(num : number, perc : string) : number {\n return parseInt(num * toNum(perc) / 100, 10);\n}\n\nexport function normalizeDimension(dim : string | number, max : number) : number {\n if (typeof dim === 'number') {\n return dim;\n } else if (isPerc(dim)) {\n return percOf(max, dim);\n } else if (isPx(dim)) {\n return toNum(dim);\n } else {\n throw new Error(`Can not normalize dimension: ${ dim }`);\n }\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { noop, tryCatch, removeFromArray } from './util';\n\ntype Prom = Promise | ZalgoPromise; // eslint-disable-line no-restricted-globals, promise/no-native\n\ntype Handler = >(name : string, fn? : (...args : A) => T) => (...args : A) => T; // eslint-disable-line no-undef\ntype Wrapper = ({ expect : Handler, avoid : Handler, expectError : Handler, error : Handler }) => (Prom | void);\n\nexport function wrapPromise(method : Wrapper, { timeout = 5000 } : { timeout? : number } = {}) : ZalgoPromise {\n let expected : Array = [];\n let promises : Array> = [];\n\n let timer = setTimeout(() => {\n if (expected.length) {\n promises.push(ZalgoPromise.asyncReject(new Error(`Expected ${ expected[0] } to be called`)));\n }\n }, timeout);\n\n let expect : Handler = (name, fn = noop) => {\n expected.push(name);\n \n // $FlowFixMe\n return function expectWrapper(...args) : * {\n removeFromArray(expected, name);\n\n // $FlowFixMe\n let { result, error } = tryCatch(() => fn.call(this, ...args));\n\n if (error) {\n promises.push(ZalgoPromise.asyncReject(error));\n throw error;\n }\n\n promises.push(ZalgoPromise.resolve(result));\n return result;\n };\n };\n\n let avoid : Handler = (name : string, fn = noop) => {\n\n // $FlowFixMe\n return function avoidWrapper(...args) : * {\n promises.push(ZalgoPromise.asyncReject(new Error(`Expected ${ name } to not be called`)));\n // $FlowFixMe\n return fn.call(this, ...args);\n };\n };\n\n let expectError : Handler = (name, fn = noop) => {\n expected.push(name);\n\n // $FlowFixMe\n return function expectErrorWrapper(...args) : * {\n removeFromArray(expected, name);\n\n // $FlowFixMe\n let { result, error } = tryCatch(() => fn.call(this, ...args));\n\n if (error) {\n throw error;\n }\n\n promises.push(ZalgoPromise.resolve(result).then(() => {\n throw new Error(`Expected ${ name } to throw an error`);\n }, noop));\n return result;\n };\n };\n\n promises.push(ZalgoPromise.try(() => method({ expect, avoid, expectError, error: avoid })));\n\n let drain = () => {\n return ZalgoPromise.try(() => {\n if (promises.length) {\n return promises.pop();\n }\n }).then(() => {\n if (promises.length) {\n return drain();\n }\n if (expected.length) {\n return ZalgoPromise.delay(10).then(drain);\n }\n });\n };\n\n return drain().then(() => {\n clearTimeout(timer);\n });\n}\n","/* @flow */\n\nexport * from './device';\nexport * from './dom';\nexport * from './experiment';\nexport * from './global';\nexport * from './storage';\nexport * from './util';\nexport * from './http';\nexport * from './types';\nexport * from './decorators';\nexport * from './css';\nexport * from './test';\n","/* @flow */\n\nexport function hasNativeWeakMap() : boolean {\n\n if (typeof WeakMap === 'undefined') {\n return false;\n }\n\n if (typeof Object.freeze === 'undefined') {\n return false;\n }\n\n try {\n\n let testWeakMap = new WeakMap();\n let testKey = {};\n let testValue = '__testvalue__';\n\n Object.freeze(testKey);\n\n testWeakMap.set(testKey, testValue);\n\n if (testWeakMap.get(testKey) === testValue) {\n return true;\n }\n\n return false;\n\n } catch (err) {\n\n return false;\n }\n}\n","/* @flow */\n\nexport function safeIndexOf(collection : Array, item : T) : number {\n for (let i = 0; i < collection.length; i++) {\n\n try {\n if (collection[i] === item) {\n return i;\n }\n } catch (err) {\n // pass\n }\n }\n\n return -1;\n}\n\n// eslint-disable-next-line no-unused-vars\nexport function noop(...args : Array) {\n // pass\n}\n","/* @flow */\n\nimport { isWindow, isWindowClosed } from 'cross-domain-utils/src';\n\nimport { hasNativeWeakMap } from './native';\nimport { noop, safeIndexOf } from './util';\n\nexport class CrossDomainSafeWeakMap {\n\n name : string\n weakmap : ?WeakMap\n keys : Array\n values : Array\n\n constructor() {\n // eslint-disable-next-line no-bitwise\n this.name = `__weakmap_${ Math.random() * 1e9 >>> 0 }__`;\n\n if (hasNativeWeakMap()) {\n try {\n this.weakmap = new WeakMap();\n } catch (err) {\n // pass\n }\n }\n\n this.keys = [];\n this.values = [];\n }\n\n _cleanupClosedWindows() {\n\n let weakmap = this.weakmap;\n let keys = this.keys;\n\n for (let i = 0; i < keys.length; i++) {\n let value = keys[i];\n\n if (isWindow(value) && isWindowClosed(value)) {\n\n if (weakmap) {\n try {\n weakmap.delete(value);\n } catch (err) {\n // pass\n }\n }\n\n keys.splice(i, 1);\n this.values.splice(i, 1);\n\n i -= 1;\n }\n }\n }\n\n isSafeToReadWrite(key : K) : boolean {\n\n if (isWindow(key)) {\n return false;\n }\n\n try {\n noop(key && key.self);\n noop(key && key[this.name]);\n } catch (err) {\n return false;\n }\n\n return true;\n }\n\n set(key : K, value : V) {\n\n if (!key) {\n throw new Error(`WeakMap expected key`);\n }\n\n let weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n weakmap.set(key, value);\n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (this.isSafeToReadWrite(key)) {\n try {\n let name = this.name;\n let entry = key[name];\n\n if (entry && entry[0] === key) {\n entry[1] = value;\n } else {\n Object.defineProperty(key, name, {\n value: [ key, value ],\n writable: true\n });\n }\n\n return;\n\n } catch (err) {\n // pass\n }\n }\n\n this._cleanupClosedWindows();\n\n let keys = this.keys;\n let values = this.values;\n let index = safeIndexOf(keys, key);\n\n if (index === -1) {\n keys.push(key);\n values.push(value);\n } else {\n values[index] = value;\n }\n }\n\n get(key : K) : V | void {\n\n if (!key) {\n throw new Error(`WeakMap expected key`);\n }\n\n let weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n if (weakmap.has(key)) {\n return weakmap.get(key);\n }\n \n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (this.isSafeToReadWrite(key)) {\n try {\n let entry = key[this.name];\n\n if (entry && entry[0] === key) {\n return entry[1];\n }\n\n return;\n } catch (err) {\n // pass\n }\n }\n\n this._cleanupClosedWindows();\n\n let keys = this.keys;\n let index = safeIndexOf(keys, key);\n\n if (index === -1) {\n return;\n }\n\n return this.values[index];\n }\n\n delete(key : K) {\n\n if (!key) {\n throw new Error(`WeakMap expected key`);\n }\n\n let weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n weakmap.delete(key);\n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (this.isSafeToReadWrite(key)) {\n try {\n let entry = key[this.name];\n\n if (entry && entry[0] === key) {\n entry[0] = entry[1] = undefined;\n }\n } catch (err) {\n // pass\n }\n }\n\n this._cleanupClosedWindows();\n\n let keys = this.keys;\n let index = safeIndexOf(keys, key);\n\n if (index !== -1) {\n keys.splice(index, 1);\n this.values.splice(index, 1);\n }\n }\n\n has(key : K) : boolean {\n\n if (!key) {\n throw new Error(`WeakMap expected key`);\n }\n\n let weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n if (weakmap.has(key)) {\n return true;\n }\n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (this.isSafeToReadWrite(key)) {\n try {\n let entry = key[this.name];\n\n if (entry && entry[0] === key) {\n return true;\n }\n\n return false;\n } catch (err) {\n // pass\n }\n }\n\n this._cleanupClosedWindows();\n\n let index = safeIndexOf(this.keys, key);\n return index !== -1;\n }\n\n getOrSet(key : K, getter : () => V) : V {\n if (this.has(key)) {\n // $FlowFixMe\n return this.get(key);\n }\n\n let value = getter();\n this.set(key, value);\n return value;\n }\n}\n","/* @flow */\n\nexport { CrossDomainSafeWeakMap as WeakMap } from './weakmap';\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst P24_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#d03238',\n secondary: '#b3b1b1'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#d03238',\n secondary: '#b3b1b1'\n }\n};\n\nexport function p24Logo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!P24_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } p24 logo available`);\n }\n\n const { primary, secondary } = P24_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst SOFORT_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#2C2E2F',\n secondary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#EB6F93',\n secondary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#EB6F93',\n secondary: '#FFFFFF'\n }\n};\n\nexport function sofortLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!SOFORT_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } sofort logo available`);\n }\n\n const { primary, secondary } = SOFORT_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst IDEAL_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff',\n tertiary: '#2C2E2F'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#000000',\n secondary: '#FFFFFF',\n tertiary: '#CD0067'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#000000',\n secondary: '#FFFFFF',\n tertiary: '#CD0067'\n }\n};\n\nexport function idealLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!IDEAL_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } ideal logo available`);\n }\n\n const { primary, secondary, tertiary } = IDEAL_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst GIROPAY_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#000000',\n tertiary: '#2C2E2F'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#FFFFFF',\n secondary: '#003A7D',\n tertiary: '#ED1C24'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#FFFFFF',\n secondary: '#003A7D',\n tertiary: '#ED1C24'\n }\n};\n\nexport function giropayLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!GIROPAY_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } giropay logo available`);\n }\n\n const { primary, secondary, tertiary } = GIROPAY_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst EPS_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff',\n tertiary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#71706F',\n secondary: '#FFFFFF',\n tertiary: '#C8036F'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#71706F',\n secondary: '#FFFFFF',\n tertiary: '#C8036F'\n }\n};\n\nexport function epsLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!EPS_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } eps logo available`);\n }\n\n const { primary, secondary, tertiary } = EPS_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst MYBANK_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff',\n tertiary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#1A4B67',\n secondary: '#00C0EE',\n tertiary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#1A4B67',\n secondary: '#00C0EE',\n tertiary: '#FFFFFF'\n }\n};\n\nexport function mybankLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!MYBANK_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } mybank logo available`);\n }\n\n const { primary, secondary, tertiary } = MYBANK_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst BANCONTACT_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#1A4B67',\n secondary: '#00C0EE'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#005498',\n secondary: '#FFD800'\n }\n};\n\nexport function bancontactLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!BANCONTACT_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } bancontact logo available`);\n }\n\n const { primary, secondary } = BANCONTACT_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst PAYU_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.DEFAULT ]: {\n primary: '#A6d71c',\n secondary: '#3C932A',\n tertiary: '#6CC62E',\n quaternary: '#278D30'\n },\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#FFFFFF',\n secondary: '#FFFFFF',\n tertiary: '#000000',\n quaternary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#A6d71c',\n secondary: '#3C932A',\n tertiary: '#6CC62E',\n quaternary: '#278D30'\n }\n};\n\nexport function payuLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!PAYU_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } payu logo available`);\n }\n\n const { primary, secondary, tertiary, quaternary } = PAYU_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst VERKKOPANKKI_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#FFFFFF',\n secondary: '#FFFFFF',\n tertiary: '#000000',\n quaternary: '#000000',\n quinary: '#FFFFFF',\n senary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#FFFFFF',\n secondary: '#CACCC8',\n tertiary: '#2D59A1',\n quaternary: '#1F3364',\n quinary: '#4E4E4E',\n senary: '#1B4482'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#FFFFFF',\n secondary: '#CACCC8',\n tertiary: '#2D59A1',\n quaternary: '#1F3364',\n quinary: '#4E4E4E',\n senary: '#1B4482'\n }\n};\n\nexport function verkkopankkiLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!VERKKOPANKKI_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } verkkopankki logo available`);\n }\n\n const { primary, secondary, tertiary, quaternary, quinary, senary } = VERKKOPANKKI_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst BLIK_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#FFFFFF',\n secondary: '#FFFFFF',\n tertiary: '#000000',\n quaternary: '#000000',\n quinary: '#000000',\n senary: '#000000'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#4D4D4F',\n secondary: '#000000',\n tertiary: '#FF0000',\n quaternary: '#E83E49',\n quinary: '#FF00FF',\n senary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#4D4D4F',\n secondary: '#000000',\n tertiary: '#FF0000',\n quaternary: '#E83E49',\n quinary: '#FF00FF',\n senary: '#FFFFFF'\n }\n};\n\nexport function blikLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!BLIK_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } blik logo available`);\n }\n\n const { primary, secondary, tertiary, quaternary, quinary, senary } = BLIK_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst TRUSTLY_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#FFFFFF',\n secondary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#020202',\n secondary: '#64CC07'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#020202',\n secondary: '#64CC07'\n }\n};\n\nexport function trustlyLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!TRUSTLY_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } trustly logo available`);\n }\n\n const { primary, secondary } = TRUSTLY_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst MAXIMA_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#004A91',\n secondary: '#ED1921'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#004A91',\n secondary: '#ED1921'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#004A91',\n secondary: '#ED1921'\n }\n};\n\nexport function maximaLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!MAXIMA_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } maxima logo available`);\n }\n\n const { primary, secondary } = MAXIMA_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst BOLETO_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#1A1919',\n secondary: '#FFFFFE'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#1A1919',\n secondary: '#FFFFFE'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#1A1919',\n secondary: '#FFFFFE'\n }\n};\n\nexport function boletoLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!BOLETO_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } boleto logo available`);\n }\n\n const { primary, secondary } = BOLETO_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst OXXO_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#EC1D24',\n secondary: '#EDA42D'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#EC1D24',\n secondary: '#EDA42D'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#EC1D24',\n secondary: '#EDA42D'\n }\n};\n\nexport function oxxoLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!OXXO_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } oxxo logo available`);\n }\n\n const { primary, secondary } = OXXO_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst PAYPAL_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.BLUE ]: {\n primary: '#003087',\n secondary: '#009cde'\n },\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#333030',\n secondary: '#636363'\n }\n};\n\nexport function paypalLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!PAYPAL_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } paypal logo available`);\n }\n\n const { primary, secondary } = PAYPAL_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n );\n}\n","\n/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR, COUNTRY } from '../../constants';\nimport type { LocaleType } from '../../types';\n\nconst CREDIT_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.BLUE ]: {\n primary: '#003087',\n secondary: '#009cde'\n },\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#333030',\n secondary: '#636363'\n }\n};\n\nexport function creditLogo({ logoColor, locale } : { logoColor : $Values, locale? : LocaleType }) : JsxHTMLNode {\n\n if (!CREDIT_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } credit logo available`);\n }\n\n const { country } = locale || {};\n const { primary } = CREDIT_LOGO_COLORS[logoColor];\n\n switch (country) {\n case COUNTRY.DE:\n return (\n \n \n \n \n \n \n \n );\n default:\n return (\n \n \n \n \n \n \n \n \n );\n\n }\n}\n","/* @flow */\n\nimport { BUTTON_LOGO, BUTTON_LOGO_COLOR } from '../../constants';\n\nimport { p24Logo } from './p24';\nimport { sofortLogo } from './sofort';\nimport { idealLogo } from './ideal';\nimport { giropayLogo } from './giropay';\nimport { epsLogo } from './eps';\nimport { mybankLogo } from './mybank';\nimport { bancontactLogo } from './bancontact';\nimport { payuLogo } from './payu';\nimport { verkkopankkiLogo } from './verkkopankki';\nimport { blikLogo } from './blik';\nimport { trustlyLogo } from './trustly';\nimport { maximaLogo } from './maxima';\nimport { boletoLogo } from './boleto';\nimport { oxxoLogo } from './oxxo';\nimport pp_white from './pp_white.svg';\nimport pp_blue from './pp_blue.svg';\nimport pp_black from './pp_black.svg';\nimport { paypalLogo } from './paypal';\nimport { creditLogo } from './credit';\nimport venmo_white from './venmo_white.svg';\nimport itau from './itau.svg';\nimport venmo_blue from './venmo_blue.svg';\nimport elv from './elv.svg';\nimport elv_white from './elv_white.svg';\n\nexport const fundingLogos = {\n\n [ BUTTON_LOGO.PP ]: {\n [ BUTTON_LOGO_COLOR.WHITE ]: pp_white,\n [ BUTTON_LOGO_COLOR.BLUE ]: pp_blue,\n [ BUTTON_LOGO_COLOR.BLACK ]: pp_black\n },\n\n [ BUTTON_LOGO.PAYPAL ]: paypalLogo,\n\n [ BUTTON_LOGO.CREDIT ]: creditLogo,\n\n [ BUTTON_LOGO.VENMO ]: {\n [ BUTTON_LOGO_COLOR.WHITE ]: venmo_white,\n [ BUTTON_LOGO_COLOR.BLUE ]: venmo_blue\n },\n [ BUTTON_LOGO.ITAU ]: {\n [ BUTTON_LOGO_COLOR.WHITE ]: itau\n },\n\n [ BUTTON_LOGO.IDEAL ]: idealLogo,\n\n [ BUTTON_LOGO.ELV ]: {\n [ BUTTON_LOGO_COLOR.ANY ]: elv,\n [ BUTTON_LOGO_COLOR.WHITE ]: elv_white\n },\n\n [ BUTTON_LOGO.BANCONTACT ]: bancontactLogo,\n\n [ BUTTON_LOGO.GIROPAY ]: giropayLogo,\n\n [ BUTTON_LOGO.SOFORT ]: sofortLogo,\n\n [ BUTTON_LOGO.EPS ]: epsLogo,\n\n [ BUTTON_LOGO.MYBANK ]: mybankLogo,\n\n [ BUTTON_LOGO.P24 ]: p24Logo,\n\n [ BUTTON_LOGO.PAYU ]: payuLogo,\n\n [ BUTTON_LOGO.VERKKOPANKKI ]: verkkopankkiLogo,\n\n [ BUTTON_LOGO.BLIK ]: blikLogo,\n\n [ BUTTON_LOGO.TRUSTLY ]: trustlyLogo,\n\n [ BUTTON_LOGO.MAXIMA ]: maximaLogo,\n\n [ BUTTON_LOGO.BOLETO ]: boletoLogo,\n\n [ BUTTON_LOGO.OXXO ]: oxxoLogo\n\n};\n","/* @flow */\n\nimport { CARD } from '../../constants';\n\nimport visa from './visa.svg';\nimport amex from './amex.svg';\nimport mastercard from './mastercard.svg';\nimport maestro from './maestro.svg';\nimport discover from './discover.svg';\nimport hiper from './hiper.svg';\nimport elo from './elo.svg';\nimport jcb from './jcb.svg';\nimport cup from './cup.svg';\n\nexport const cardLogos = {\n [ CARD.VISA ]: visa,\n [ CARD.AMEX ]: amex,\n [ CARD.MASTERCARD ]: mastercard,\n [ CARD.MAESTRO ]: maestro,\n [ CARD.DISCOVER ]: discover,\n [ CARD.HIPER ]: hiper,\n [ CARD.ELO ]: elo,\n [ CARD.JCB ]: jcb,\n [ CARD.CUP ]: cup\n};\n","/* @flow */\n\nexport * from './fundingLogos';\nexport * from './cardLogos';\n","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object.keys(descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object.defineProperty(target, property, desc);\n desc = null;\n }\n\n return desc;\n}","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { on } from 'post-robot/src';\nimport { type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { copyProp, eventEmitter, type EventEmitterType, stringifyError, noop } from '../lib';\nimport type { CancelableType } from '../types';\n\nimport type { Component } from './component';\n\ntype CleanupType = {\n set : (string, T) => T, // eslint-disable-line no-undef\n register : (string | Function, ?Function) => void,\n hasTasks : () => boolean,\n all : () => ZalgoPromise,\n run : (string) => ZalgoPromise\n};\n\nfunction cleanup(obj : Object) : CleanupType {\n\n let tasks = [];\n let cleaned = false;\n\n return {\n\n set(name : string, item : T) : T {\n\n if (cleaned) {\n return item;\n }\n\n obj[name] = item;\n this.register(() => {\n delete obj[name];\n });\n return item;\n },\n\n register(name : string | Function, method : ?Function) {\n\n if (typeof name === 'function') {\n method = name;\n name = '';\n }\n\n if (typeof method !== 'function') {\n throw new TypeError(`Expected to be passed function to clean.register`);\n }\n\n if (cleaned) {\n method();\n return;\n }\n\n tasks.push({\n complete: false,\n\n name,\n\n run() {\n\n if (this.complete) {\n return;\n }\n\n this.complete = true;\n\n if (method) {\n method();\n }\n }\n });\n },\n\n hasTasks() : boolean {\n return Boolean(tasks.filter(item => !item.complete).length);\n },\n\n all() : ZalgoPromise {\n let results = [];\n\n cleaned = true;\n\n while (tasks.length) {\n results.push(tasks.pop().run());\n }\n\n return ZalgoPromise.all(results).then(() => { /* pass */ });\n },\n\n run(name : string) : ZalgoPromise {\n let results = [];\n\n for (let item of tasks) {\n if (item.name === name) {\n results.push(item.run());\n }\n }\n\n return ZalgoPromise.all(results).then(noop);\n }\n };\n}\n\n\n/* Base Component\n --------------\n\n Methods that are common between child and parent components, but are not generic or uncoupled enough to live in\n a separate library.\n*/\n\nexport class BaseComponent

{\n\n clean : CleanupType\n event : EventEmitterType\n component : Component

\n\n constructor() {\n this.clean = cleanup(this);\n this.event = eventEmitter();\n }\n\n addProp(options : Object, name : string, def : mixed) {\n copyProp(options, this, name, def);\n }\n\n on(eventName : string, handler : () => void) : CancelableType {\n return this.event.on(eventName, handler);\n }\n\n listeners() {\n throw new Error(`Expected listeners to be implemented`);\n }\n\n error(err : mixed) : ZalgoPromise {\n throw new Error(`Expected error to be implemented - got ${ stringifyError(err) }`);\n }\n\n /* Listen\n ------\n\n Listen for any post messages defined in this.listeners(). All (most) of our communication is done via\n post-messages, so this sets up an easy way to create a collection of listeners in one go.\n\n All post-messaging is done using post-robot.\n */\n\n listen(win : CrossDomainWindowType, domain : string | RegExp) {\n\n if (!win) {\n throw this.component.createError(`window to listen to not set`);\n }\n\n if (!domain) {\n throw new Error(`Must pass domain to listen to`);\n }\n\n if (!this.listeners) {\n return;\n }\n\n let listeners = this.listeners();\n\n for (let listenerName of Object.keys(listeners)) {\n\n let name = listenerName.replace(/^zoid_/, '');\n\n let errorHandler = (err) => {\n this.error(err);\n };\n\n let listener = on(listenerName, { window: win, domain, errorHandler }, ({ source, data }) => {\n this.component.log(`listener_${ name }`);\n return listeners[listenerName].call(this, source, data);\n });\n\n let errorListener = on(listenerName, { window: win, errorHandler }, ({ origin }) => {\n this.component.logError(`unexpected_listener_${ name }`, { origin, domain: domain.toString() });\n this.error(new Error(`Unexpected ${ name } message from domain ${ origin } -- expected message from ${ domain.toString() }`));\n });\n\n this.clean.register(() => {\n listener.cancel();\n errorListener.cancel();\n });\n }\n }\n}\n","/* @flow */\n\nimport { getOpener, getTop, getParent, getNthParentFromTop, getAllFramesInWindow, getAncestor, getDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport base32 from 'hi-base32';\n\nimport { memoize, uniqueID, globalFor, stringifyError } from '../lib';\nimport { WINDOW_REFERENCES } from '../constants';\nimport type { DimensionsType, PositionType } from '../types';\n\n\nfunction normalize(str : string) : string {\n return str.replace(/^[^a-z0-9A-Z]+|[^a-z0-9A-Z]+$/g, '').replace(/[^a-z0-9A-Z]+/g, '_');\n}\n\nfunction encode(str : string) : string {\n return base32.encode(str).replace(/\\=/g, '').toLowerCase(); // eslint-disable-line no-useless-escape\n}\n\nfunction decode(str : string) : string {\n return base32.decode(str.toUpperCase());\n}\n\n\n/* Build Child Window Name\n -----------------------\n\n Build a name for our child window. This should identify the following things to the child:\n\n - That the window was created by, and is owned by zoid\n - The name of the child's parent. This is so the child can identify which window created it, even when we do a\n renderTo, in which case the true parent may actually be a sibling frame in the window hierarchy\n\n We base64 encode the window name so IE doesn't die when it encounters any characters that it doesn't like.\n*/\n\nexport function buildChildWindowName(name : string, version : string, options : Object = {}) : string {\n\n options.id = uniqueID();\n options.domain = getDomain(window);\n\n let encodedName = normalize(name);\n let encodedVersion = normalize(version);\n let encodedOptions = encode(JSON.stringify(options));\n\n if (!encodedName) {\n throw new Error(`Invalid name: ${ name } - must contain alphanumeric characters`);\n }\n\n if (!encodedVersion) {\n throw new Error(`Invalid version: ${ version } - must contain alphanumeric characters`);\n }\n\n return [\n 'xcomponent',\n encodedName,\n encodedVersion,\n encodedOptions,\n ''\n ].join('__');\n}\n\nexport let isZoidComponentWindow = memoize(() => {\n if (!window.name) {\n return false;\n }\n\n let [ zoidcomp ] = window.name.split('__');\n\n if (zoidcomp !== 'xcomponent') {\n return false;\n }\n\n return true;\n});\n\n/* Parse Window Name\n -----------------\n\n The inverse of buildChildWindowName. Base64 decodes and json parses the window name to get the original props\n passed down, including the parent name. Only accepts window names built by zoid\n*/\n\nexport let getComponentMeta = memoize(() => {\n\n if (!window.name) {\n throw new Error(`Can not get component meta without window name`);\n }\n\n let [ zoidcomp, name, version, encodedOptions ] = window.name.split('__');\n\n if (zoidcomp !== 'xcomponent') {\n throw new Error(`Window not rendered by zoid - got ${ zoidcomp }`);\n }\n\n let componentMeta;\n\n try {\n componentMeta = JSON.parse(decode(encodedOptions));\n } catch (err) {\n throw new Error(`Can not decode component-meta: ${ encodedOptions } ${ stringifyError(err) }`);\n }\n\n componentMeta.name = name;\n componentMeta.version = version.replace(/_/g, '.');\n\n return componentMeta;\n});\n\nexport function getParentDomain() : string {\n return getComponentMeta().domain; // How does this work for renderTo..?\n}\n\nfunction getWindowByRef({ ref, uid, distance } : { ref : string, uid : string, distance : number }) : CrossDomainWindowType {\n\n let result;\n\n if (ref === WINDOW_REFERENCES.OPENER) {\n result = getOpener(window);\n\n } else if (ref === WINDOW_REFERENCES.TOP) {\n result = getTop(window);\n\n } else if (ref === WINDOW_REFERENCES.PARENT) {\n\n if (distance) {\n result = getNthParentFromTop(window, distance);\n } else {\n result = getParent(window);\n }\n }\n\n if (ref === WINDOW_REFERENCES.GLOBAL) {\n let ancestor = getAncestor(window);\n\n if (ancestor) {\n for (let frame of getAllFramesInWindow(ancestor)) {\n let global = globalFor(frame);\n\n if (global && global.windows && global.windows[uid]) {\n result = global.windows[uid];\n break;\n }\n }\n }\n }\n\n if (!result) {\n throw new Error(`Unable to find window by ref`);\n }\n\n return result;\n}\n\n/* Get Parent Component Window\n ---------------------------\n\n Get the parent component window, which may be different from the actual parent window\n*/\n\nexport let getParentComponentWindow = memoize(() => {\n\n let componentMeta = getComponentMeta();\n\n if (!componentMeta) {\n throw new Error(`Can not get parent component window - window not rendered by zoid`);\n }\n\n return getWindowByRef(componentMeta.componentParent);\n});\n\n\nexport let getParentRenderWindow = memoize(() => {\n\n let componentMeta = getComponentMeta();\n\n if (!componentMeta) {\n throw new Error(`Can not get parent component window - window not rendered by zoid`);\n }\n\n return getWindowByRef(componentMeta.renderParent);\n});\n\n\n/* Get Position\n ------------\n\n Calculate the position for the popup\n\n This is either\n - Specified by the user\n - The center of the screen\n\n I'd love to do this with pure css, but alas... popup windows :(\n*/\n\nexport function getPosition({ width, height } : DimensionsType) : PositionType {\n\n let x = 0;\n let y = 0;\n\n if (width) {\n if (window.outerWidth) {\n x = Math.round((window.outerWidth - width) / 2) + window.screenX;\n } else if (window.screen.width) {\n x = Math.round((window.screen.width - width) / 2);\n }\n }\n\n if (height) {\n if (window.outerHeight) {\n y = Math.round((window.outerHeight - height) / 2) + window.screenY;\n } else if (window.screen.height) {\n y = Math.round((window.screen.height - height) / 2);\n }\n }\n\n return { x, y };\n}\n","/* @flow */\n\nimport { getDomain } from 'cross-domain-utils/src';\n\nimport type { Component } from '../component';\nimport type { BuiltInPropsType, MixedPropDefinitionType } from '../component/props';\n\nexport function normalizeChildProp(component : Component

, props : (BuiltInPropsType & P), key : string, value : T) : ?T {\n\n // $FlowFixMe\n let prop : MixedPropDefinitionType

= component.getProp(key);\n\n if (!prop) {\n if (component.looseProps) {\n return value;\n } else {\n return;\n }\n }\n\n if (typeof prop.childDecorate === 'function') {\n return prop.childDecorate(value);\n }\n\n return value;\n}\n\n\nexport function normalizeChildProps

(component : Component

, props : (BuiltInPropsType & P), origin : string, required : boolean = true) : (BuiltInPropsType & P) {\n\n let result = {};\n\n for (let key of Object.keys(props)) {\n\n let prop = component.getProp(key);\n let value = props[key];\n\n if (prop && prop.sameDomain && origin !== getDomain(window)) {\n continue;\n }\n\n result[key] = normalizeChildProp(component, props, key, value);\n\n if (prop && prop.alias && !result[prop.alias]) {\n result[prop.alias] = value;\n }\n }\n\n if (required) {\n for (let key of component.getPropNames()) {\n if (!props.hasOwnProperty(key)) {\n result[key] = normalizeChildProp(component, props, key, props[key]);\n }\n }\n }\n\n // $FlowFixMe\n return result;\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { flush } from 'beaver-logger/client';\nimport { isSameDomain, matchDomain, getDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { send } from 'post-robot/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { onResize } from 'belter/src';\n\nimport { BaseComponent } from '../base';\nimport { getParentComponentWindow, getComponentMeta, getParentDomain, getParentRenderWindow } from '../window';\nimport { extend, deserializeFunctions, get, stringify,\n globalFor, setLogLevel, getElement, noop, stringifyError } from '../../lib';\nimport { POST_MESSAGE, CONTEXT_TYPES, CLOSE_REASONS, INITIAL_PROPS } from '../../constants';\nimport { RenderError } from '../../error';\nimport type { Component } from '../component';\nimport type { BuiltInPropsType } from '../component/props';\n\nimport { normalizeChildProps } from './props';\n\nexport type ChildExportsType

= {\n updateProps : (props : (BuiltInPropsType & P)) => ZalgoPromise,\n close : () => ZalgoPromise\n};\n\n/* Child Component\n ---------------\n\n This is the portion of code which runs inside the frame or popup window containing the component's implementation.\n\n When the component author calls myComponent.attach(), it creates a new instance of ChildComponent, which is then\n responsible for managing the state and messaging back up to the parent, and providing props for the component to\n utilize.\n*/\n\nexport class ChildComponent

extends BaseComponent

{\n\n component : Component

\n props : BuiltInPropsType & P\n context : string\n\n onPropHandlers : Array<(BuiltInPropsType & P) => void>\n onInit : ZalgoPromise>\n watchingForResize : boolean\n autoResize : { width : boolean, height : boolean, element? : string }\n\n constructor(component : Component

) {\n super();\n this.component = component;\n\n if (!this.hasValidParentDomain()) {\n this.error(new RenderError(`Can not be rendered by domain: ${ this.getParentDomain() }`));\n return;\n }\n\n this.component.log(`construct_child`);\n\n // The child can specify some default props if none are passed from the parent. This often makes integrations\n // a little more seamless, as applicaiton code can call props.foo() without worrying about whether the parent\n // has provided them or not, and fall-back to some default behavior.\n\n this.onPropHandlers = [];\n\n for (let item of [ this.component, window ]) {\n for (let [ name, getter ] of [ [ 'xchild', () => this ], [ 'xprops', () => this.props ] ]) {\n // $FlowFixMe\n Object.defineProperty(item, name, {\n configurable: true,\n get: () => {\n if (!this.props) {\n this.setProps(this.getInitialProps(), getParentDomain());\n }\n // $FlowFixMe\n delete item[name];\n // $FlowFixMe\n item[name] = getter();\n // $FlowFixMe\n return item[name];\n }\n });\n }\n }\n\n this.component.log(`init_child`);\n\n this.setWindows();\n\n // Send an init message to our parent. This gives us an initial set of data to use that we can use to function.\n //\n // For example:\n //\n // - What context are we\n // - What props has the parent specified\n\n this.onInit = this.sendToParent(POST_MESSAGE.INIT, {\n\n exports: this.exports()\n\n }).then(({ origin, data }) => {\n\n this.context = data.context;\n this.setProps(data.props, origin);\n\n this.watchForResize();\n\n return this;\n\n }).catch(err => {\n\n this.error(err);\n throw err;\n });\n }\n\n hasValidParentDomain() : boolean {\n return matchDomain(this.component.allowedParentDomains, this.getParentDomain());\n }\n\n init() : ZalgoPromise> {\n return this.onInit;\n }\n\n getParentDomain() : string {\n return getParentDomain();\n }\n\n onProps(handler : Function) {\n this.onPropHandlers.push(handler);\n }\n\n getParentComponentWindow() : CrossDomainWindowType {\n return getParentComponentWindow();\n }\n\n getParentRenderWindow() : CrossDomainWindowType {\n return getParentRenderWindow();\n }\n\n getInitialProps() : (BuiltInPropsType & P) {\n let componentMeta = getComponentMeta();\n\n let props = componentMeta.props;\n\n if (props.type === INITIAL_PROPS.RAW) {\n props = props.value;\n } else if (props.type === INITIAL_PROPS.UID) {\n\n let parentComponentWindow = getParentComponentWindow();\n\n if (!isSameDomain(parentComponentWindow)) {\n\n if (window.location.protocol === 'file:') {\n throw new Error(`Can not get props from file:// domain`);\n }\n\n throw new Error(`Parent component window is on a different domain - expected ${ getDomain() } - can not retrieve props`);\n }\n\n let global = globalFor(parentComponentWindow);\n\n if (!global) {\n throw new Error(`Can not find global for parent component - can not retrieve props`);\n }\n\n props = JSON.parse(global.props[componentMeta.uid]);\n\n } else {\n throw new Error(`Unrecognized props type: ${ props.type }`);\n }\n\n if (!props) {\n throw new Error(`Initial props not found`);\n }\n \n return deserializeFunctions(props, ({ fullKey, self, args }) => {\n return this.onInit.then(() => {\n let func = get(this.props, fullKey);\n\n if (typeof func !== 'function') {\n throw new TypeError(`Expected ${ fullKey } to be function, got ${ typeof func }`);\n }\n\n return func.apply(self, args);\n });\n });\n }\n\n\n setProps(props : (BuiltInPropsType & P), origin : string, required : boolean = true) {\n // $FlowFixMe\n this.props = this.props || {};\n let normalizedProps = normalizeChildProps(this.component, props, origin, required);\n extend(this.props, normalizedProps);\n if (this.props.logLevel) {\n setLogLevel(this.props.logLevel);\n }\n for (let handler of this.onPropHandlers) {\n handler.call(this, this.props);\n }\n }\n\n\n /* Send to Parent\n --------------\n\n Send a post message to our parent window.\n */\n\n sendToParent(name : string, data : ?Object = {}, options : ?Object = {}) : ZalgoPromise<{ origin : string, source : CrossDomainWindowType, data : Object }> {\n let parentWindow = getParentComponentWindow();\n\n if (!parentWindow) {\n throw new Error(`Can not find parent component window to message`);\n }\n\n this.component.log(`send_to_parent_${ name }`);\n\n return send(parentWindow, name, data, { domain: getParentDomain(), ...options });\n }\n\n\n /* Set Windows\n -----------\n\n Determine the parent window, and the parent component window. Note -- these may be different, if we were\n rendered using renderTo.\n */\n\n setWindows() {\n\n\n // Ensure we do not try to .attach() multiple times for the same component on the same page\n\n if (window.__activeZoidComponent__) {\n throw this.component.createError(`Can not attach multiple components to the same window`);\n }\n\n window.__activeZoidComponent__ = this;\n\n // Get the direct parent window\n\n if (!getParentComponentWindow()) {\n throw this.component.createError(`Can not find parent window`);\n }\n\n let componentMeta = getComponentMeta();\n\n if (componentMeta.tag !== this.component.tag) {\n throw this.component.createError(`Parent is ${ componentMeta.tag } - can not attach ${ this.component.tag }`);\n }\n\n // Note -- getting references to other windows is probably one of the hardest things to do. There's basically\n // only a few ways of doing it:\n //\n // - The window is a direct parent, in which case you can use window.parent or window.opener\n // - The window is an iframe owned by you or one of your parents, in which case you can use window.frames\n // - The window sent you a post-message, in which case you can use event.source\n //\n // If we didn't rely on winProps.parent here from the window name, we'd have to relay all of our messages through\n // our actual parent. Which is no fun at all, and pretty error prone even with the help of post-robot. So this\n // is the lesser of two evils until browsers give us something like getWindowByName(...)\n\n // If the parent window closes, we need to close ourselves. There's no point continuing to run our component\n // if there's no parent to message to.\n\n this.watchForClose();\n }\n\n watchForClose() {\n window.addEventListener('unload', () => this.checkClose());\n }\n\n enableAutoResize({ width = true, height = true } : { width : boolean, height : boolean } = {}) {\n this.autoResize = { width, height };\n this.watchForResize();\n }\n\n getAutoResize() : { width : boolean, height : boolean, element : HTMLElement } {\n\n let width = false;\n let height = false;\n\n let autoResize = this.autoResize || this.component.autoResize;\n\n if (typeof autoResize === 'object') {\n width = Boolean(autoResize.width);\n height = Boolean(autoResize.height);\n } else if (autoResize) {\n width = true;\n height = true;\n }\n\n let element;\n\n if (autoResize.element) {\n element = getElement(autoResize.element);\n } else {\n element = document.body;\n }\n\n // $FlowFixMe\n return { width, height, element };\n }\n\n watchForResize() : ?ZalgoPromise {\n\n let { width, height, element } = this.getAutoResize();\n\n if (!width && !height) {\n return;\n }\n\n if (this.context === CONTEXT_TYPES.POPUP) {\n return;\n }\n\n if (this.watchingForResize) {\n return;\n }\n\n this.watchingForResize = true;\n \n onResize(element, ({ width: newWidth, height: newHeight }) => {\n this.resize(width ? newWidth : undefined, height ? newHeight : undefined);\n }, { width, height });\n }\n\n\n exports() : ChildExportsType

{\n\n let self = this;\n\n return {\n updateProps(props : (BuiltInPropsType & P)) : ZalgoPromise {\n return ZalgoPromise.try(() => self.setProps(props, this.origin, false));\n },\n\n close() : ZalgoPromise {\n return ZalgoPromise.try(() => self.destroy());\n }\n };\n }\n\n\n /* Resize\n ------\n\n Resize the child window. Must be done on a user action like a click if we're in a popup\n */\n\n resize(width : ?number, height : ?number) : ZalgoPromise {\n return ZalgoPromise.resolve().then(() => {\n\n this.component.log(`resize`, { width: stringify(width), height: stringify(height) });\n\n if (this.context === CONTEXT_TYPES.POPUP) {\n return;\n }\n\n return this.sendToParent(POST_MESSAGE.RESIZE, { width, height }).then(noop);\n });\n }\n\n /* Hide\n ----\n\n Hide the window and any parent template\n */\n\n hide() : ZalgoPromise {\n return this.sendToParent(POST_MESSAGE.HIDE).then(noop);\n }\n\n show() : ZalgoPromise {\n return this.sendToParent(POST_MESSAGE.SHOW).then(noop);\n }\n\n userClose() : void {\n return this.close(CLOSE_REASONS.USER_CLOSED);\n }\n\n\n /* Close\n -----\n\n Close the child window\n */\n\n close(reason : string = CLOSE_REASONS.CHILD_CALL) {\n\n this.component.log(`close_child`);\n\n // Ask our parent window to close us\n\n this.sendToParent(POST_MESSAGE.CLOSE, { reason });\n }\n\n checkClose() {\n this.sendToParent(POST_MESSAGE.CHECK_CLOSE, {}, { fireAndForget: true });\n }\n\n\n destroy() : ZalgoPromise {\n return flush().then(() => {\n window.close();\n });\n }\n\n\n /* Focus\n -----\n\n Focus the child window. Must be done on a user action like a click\n */\n\n focus() {\n this.component.log(`focus`);\n\n window.focus();\n }\n\n\n /* Error\n -----\n\n Send an error back to the parent\n */\n\n error(err : mixed) : ZalgoPromise {\n\n let stringifiedError = stringifyError(err);\n\n this.component.logError(`error`, { error: stringifiedError });\n\n return this.sendToParent(POST_MESSAGE.ERROR, {\n error: stringifiedError\n }).then(noop);\n }\n}\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { cleanUpWindow } from 'post-robot/src';\nimport { findFrameByName, isSameDomain } from 'cross-domain-utils/src';\n\nimport { iframe, popup, toCSS, showElement, hideElement,\n destroyElement, normalizeDimension, watchElementForClose,\n awaitFrameWindow, addClass, removeClass, noop } from '../../lib';\nimport { CONTEXT_TYPES, DELEGATE, CLOSE_REASONS, CLASS_NAMES, DEFAULT_DIMENSIONS } from '../../constants';\nimport { getPosition, getParentComponentWindow } from '../window';\n\n\nexport type ContextDriverType = {\n\n focusable : boolean,\n renderedIntoContainerTemplate : boolean,\n allowResize : boolean,\n openOnClick : boolean,\n needsBridge : boolean,\n\n open : (?string) => ZalgoPromise,\n resize : (?(number | string), ?(number | string)) => void,\n show : () => void,\n hide : () => void,\n loadUrl : (string) => void,\n\n delegateOverrides : {\n [string] : string | Function\n },\n\n openPrerender : () => ZalgoPromise,\n switchPrerender? : () => void\n};\n\n/* Render Drivers\n --------------\n\n There are various differences in how we treat:\n\n - Opening frames and windows\n - Rendering up to the parent\n - Resizing\n - etc.\n\n based on the context we're rendering to.\n\n These render drivers split this functionality out in a driver pattern, so our component code doesn't bunch up into a\n series of if-popup-then-else-if-iframe code.\n*/\n\nexport let RENDER_DRIVERS : { [string] : ContextDriverType } = {};\n\n// Iframe context is rendered inline on the page, without any kind of parent template. It's the one context that is designed\n// to feel like a native element on the page.\n\nRENDER_DRIVERS[CONTEXT_TYPES.IFRAME] = {\n\n focusable: false,\n renderedIntoContainerTemplate: true,\n allowResize: true,\n openOnClick: false,\n needsBridge: false,\n\n open(url : ?string) : ZalgoPromise {\n\n let attributes = this.component.attributes.iframe || {};\n\n this.iframe = iframe({\n url,\n attributes: {\n name: this.childWindowName,\n title: this.component.name,\n scrolling: this.component.scrolling ? 'yes' : 'no',\n ...attributes\n },\n class: [\n CLASS_NAMES.COMPONENT_FRAME,\n CLASS_NAMES.INVISIBLE\n ]\n }, this.element);\n\n return awaitFrameWindow(this.iframe).then(frameWindow => {\n\n this.window = frameWindow;\n\n let detectClose = () => {\n return ZalgoPromise.try(() => {\n return this.props.onClose(CLOSE_REASONS.CLOSE_DETECTED);\n }).finally(() => {\n return this.destroy();\n });\n };\n\n let iframeWatcher = watchElementForClose(this.iframe, detectClose);\n let elementWatcher = watchElementForClose(this.element, detectClose);\n\n this.clean.register('destroyWindow', () => {\n\n iframeWatcher.cancel();\n elementWatcher.cancel();\n\n cleanUpWindow(this.window);\n\n delete this.window;\n\n if (this.iframe) {\n destroyElement(this.iframe);\n delete this.iframe;\n }\n });\n });\n },\n\n openPrerender() : ZalgoPromise {\n\n let attributes = this.component.attributes.iframe || {};\n\n this.prerenderIframe = iframe({\n attributes: {\n name: `__prerender__${ this.childWindowName }`,\n scrolling: this.component.scrolling ? 'yes' : 'no',\n ...attributes\n },\n class: [\n CLASS_NAMES.PRERENDER_FRAME,\n CLASS_NAMES.VISIBLE\n ]\n }, this.element);\n\n return awaitFrameWindow(this.prerenderIframe).then(prerenderFrameWindow => {\n\n this.prerenderWindow = prerenderFrameWindow;\n\n this.clean.register('destroyPrerender', () => {\n\n if (this.prerenderIframe) {\n destroyElement(this.prerenderIframe);\n delete this.prerenderIframe;\n }\n });\n });\n },\n\n switchPrerender() {\n\n addClass(this.prerenderIframe, CLASS_NAMES.INVISIBLE);\n removeClass(this.prerenderIframe, CLASS_NAMES.VISIBLE);\n\n addClass(this.iframe, CLASS_NAMES.VISIBLE);\n removeClass(this.iframe, CLASS_NAMES.INVISIBLE);\n\n setTimeout(() => {\n if (this.prerenderIframe) {\n destroyElement(this.prerenderIframe);\n }\n }, 1000);\n },\n\n delegateOverrides: {\n\n openContainer: DELEGATE.CALL_DELEGATE,\n destroyComponent: DELEGATE.CALL_DELEGATE,\n destroyContainer: DELEGATE.CALL_DELEGATE,\n cancelContainerEvents: DELEGATE.CALL_DELEGATE,\n createPrerenderTemplate: DELEGATE.CALL_DELEGATE,\n elementReady: DELEGATE.CALL_DELEGATE,\n showContainer: DELEGATE.CALL_DELEGATE,\n showComponent: DELEGATE.CALL_DELEGATE,\n hideContainer: DELEGATE.CALL_DELEGATE,\n hideComponent: DELEGATE.CALL_DELEGATE,\n hide: DELEGATE.CALL_DELEGATE,\n show: DELEGATE.CALL_DELEGATE,\n resize: DELEGATE.CALL_DELEGATE,\n loadUrl: DELEGATE.CALL_DELEGATE,\n hijackSubmit: DELEGATE.CALL_DELEGATE,\n openPrerender: DELEGATE.CALL_DELEGATE,\n switchPrerender: DELEGATE.CALL_DELEGATE,\n\n renderTemplate: DELEGATE.CALL_ORIGINAL,\n openContainerFrame: DELEGATE.CALL_ORIGINAL,\n getOutlet: DELEGATE.CALL_ORIGINAL,\n\n open(original : () => ZalgoPromise, override : () => ZalgoPromise) : () => ZalgoPromise {\n return function overrideOpen() : ZalgoPromise {\n return override.apply(this, arguments).then(() => {\n this.clean.set('window', findFrameByName(getParentComponentWindow(), this.childWindowName));\n\n if (!this.window) {\n throw new Error(`Unable to find parent component iframe window`);\n }\n });\n };\n }\n },\n\n resize(width : ?(number | string), height : ?(number | string)) {\n\n if (width) {\n this.container.style.width = toCSS(width);\n this.element.style.width = toCSS(width);\n }\n\n if (height) {\n this.container.style.height = toCSS(height);\n this.element.style.height = toCSS(height);\n }\n },\n\n show() {\n showElement(this.element);\n },\n\n hide() {\n hideElement(this.element);\n },\n\n loadUrl(url : string) {\n this.iframe.setAttribute('src', url);\n }\n};\n\nif (__ZOID__.__POPUP_SUPPORT__) {\n\n // Popup context opens up a centered popup window on the page.\n\n RENDER_DRIVERS[CONTEXT_TYPES.POPUP] = {\n\n focusable: true,\n renderedIntoContainerTemplate: false,\n allowResize: false,\n openOnClick: true,\n needsBridge: true,\n\n open(url : ?string = '') : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n let {\n width = DEFAULT_DIMENSIONS.WIDTH,\n height = DEFAULT_DIMENSIONS.HEIGHT\n } = this.component.dimensions || {};\n\n width = normalizeDimension(width, window.outerWidth);\n height = normalizeDimension(height, window.outerWidth);\n\n let { x, y } = getPosition({ width, height });\n\n let attributes = this.component.attributes.popup || {};\n\n this.window = popup(url || '', {\n name: this.childWindowName,\n width,\n height,\n top: y,\n left: x,\n status: 1,\n toolbar: 0,\n menubar: 0,\n resizable: 1,\n scrollbars: 1,\n ...attributes\n });\n\n this.prerenderWindow = this.window;\n\n this.clean.register('destroyWindow', () => {\n if (this.window) {\n this.window.close();\n cleanUpWindow(this.window);\n delete this.window;\n delete this.prerenderWindow;\n }\n });\n\n this.resize(width, height);\n });\n },\n\n openPrerender() : ZalgoPromise {\n return ZalgoPromise.try(noop);\n },\n\n resize() {\n // pass\n },\n\n hide() {\n throw new Error('Can not hide popup');\n },\n\n show() {\n throw new Error('Can not show popup');\n },\n\n delegateOverrides: {\n\n openContainer: DELEGATE.CALL_DELEGATE,\n destroyContainer: DELEGATE.CALL_DELEGATE,\n\n elementReady: DELEGATE.CALL_DELEGATE,\n\n showContainer: DELEGATE.CALL_DELEGATE,\n showComponent: DELEGATE.CALL_DELEGATE,\n hideContainer: DELEGATE.CALL_DELEGATE,\n hideComponent: DELEGATE.CALL_DELEGATE,\n\n hide: DELEGATE.CALL_DELEGATE,\n show: DELEGATE.CALL_DELEGATE,\n\n cancelContainerEvents: DELEGATE.CALL_DELEGATE,\n\n open: DELEGATE.CALL_ORIGINAL,\n loadUrl: DELEGATE.CALL_ORIGINAL,\n createPrerenderTemplate: DELEGATE.CALL_ORIGINAL,\n destroyComponent: DELEGATE.CALL_ORIGINAL,\n resize: DELEGATE.CALL_ORIGINAL,\n renderTemplate: DELEGATE.CALL_ORIGINAL,\n openContainerFrame: DELEGATE.CALL_ORIGINAL,\n getOutlet: DELEGATE.CALL_ORIGINAL\n },\n\n loadUrl(url : string) {\n\n if (isSameDomain(this.window)) {\n try {\n if (this.window.location && this.window.location.replace) {\n this.window.location.replace(url);\n return;\n }\n } catch (err) {\n // pass\n }\n }\n\n this.window.location = url;\n }\n };\n}\n","/* @flow */\n/* eslint complexity: off */\n\nimport type { Component } from '../component';\nimport type { MixedPropDefinitionType, PropsType } from '../component/props';\n\n// $FlowFixMe\nexport function validateProp(prop : MixedPropDefinitionType

, key : string, value : ?T, props : (PropsType & P), required : boolean = true) {\n\n let hasProp = value !== null && value !== undefined && value !== '';\n\n if (!hasProp) {\n if (required && prop.required !== false && !prop.hasOwnProperty('def')) {\n throw new Error(`Prop is required: ${ key }`);\n }\n\n return;\n }\n\n if (value && typeof value.then === 'function' && prop.promise) {\n return;\n }\n\n if (prop.type === 'function') {\n\n if (!(typeof value === 'function')) {\n throw new TypeError(`Prop is not of type function: ${ key }`);\n }\n\n } else if (prop.type === 'string') {\n\n if (typeof value !== 'string') {\n throw new TypeError(`Prop is not of type string: ${ key }`);\n }\n\n } else if (prop.type === 'object') {\n\n // Since we're sending everything by post-message, everything must be json serializable\n\n if (prop.sendToChild !== false) {\n try {\n JSON.stringify(value);\n } catch (err) {\n throw new Error(`Unable to serialize prop: ${ key }`);\n }\n }\n\n } else if (prop.type === 'number') {\n\n if (isNaN(parseInt(value, 10))) {\n throw new TypeError(`Prop is not a number: ${ key }`);\n }\n }\n\n if (typeof prop.validate === 'function' && value) {\n prop.validate(value, props);\n }\n}\n\n\n/* Validate Props\n --------------\n\n Validate user-defined props. Users can pass props down from the parent into the child component, but first we\n double check the values are what we expect, based on the props spec defined in the original component.\n*/\n\nexport function validateProps

(component : Component

, props : PropsType, required : boolean = true) {\n\n props = props || {};\n\n if (props.env && typeof component.url === 'object' && !component.url[props.env]) {\n throw new Error(`Invalid env: ${ props.env }`);\n }\n\n // Set aliases\n\n for (let key of component.getPropNames()) {\n\n // $FlowFixMe\n let prop = component.getProp(key);\n\n if (prop.alias && props.hasOwnProperty(prop.alias)) {\n\n let value = props[prop.alias];\n delete props[prop.alias];\n\n if (!props[key]) {\n props[key] = value;\n }\n }\n }\n\n // First make sure all of the props we were sent are actually valid prop names\n\n /*\n\n if (!component.looseProps) {\n for (let key of Object.keys(props)) {\n if (component.getPropNames().indexOf(key) === -1) {\n throw component.error(`Invalid prop: ${key}`);\n }\n }\n }\n\n */\n\n // Then loop over the props we expect, and make sure they're all present and valid\n\n for (let key of Object.keys(props)) {\n\n // $FlowFixMe\n let prop : MixedPropDefinitionType

= component.getProp(key);\n let value = props[key];\n\n if (prop) {\n // $FlowFixMe\n validateProp(prop, key, value, props, required);\n }\n }\n\n for (let key of component.getPropNames()) {\n\n // $FlowFixMe\n let prop : MixedPropDefinitionType

= component.getProp(key);\n let value = props[key];\n\n if (prop && !props.hasOwnProperty(key)) {\n validateProp(prop, key, value, props, required);\n }\n }\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { noop, denodeify, once, memoize, promisify, dotify } from '../../lib';\nimport type { Component } from '../component';\nimport type { BuiltInPropsDefinitionType, PropsType, BuiltInPropsType, MixedPropDefinitionType } from '../component/props';\n\nimport type { ParentComponent } from './index';\n\nfunction isDefined(value : ?mixed) : boolean {\n return value !== null && value !== undefined && value !== '';\n}\n\n\n/* Normalize Prop\n --------------\n\n Turn prop into normalized value, using defaults, function options, etc.\n*/\n\n// $FlowFixMe\nexport function normalizeProp(component : Component

, instance : ParentComponent

, props : (PropsType & P), key : string, value : ?T) : ?(ZalgoPromise | T) { // eslint-disable-line complexity\n\n let prop = component.getProp(key);\n\n let resultValue;\n\n if (prop.value) {\n resultValue = prop.value;\n } else if (prop.def && (!props.hasOwnProperty(key) || !isDefined(value))) {\n resultValue = prop.def.call(component, props);\n } else {\n resultValue = value;\n }\n\n if (!resultValue && prop.alias && props[prop.alias]) {\n resultValue = props[prop.alias];\n }\n\n let decorated = false;\n\n if (prop.decorate && resultValue !== null && resultValue !== undefined) {\n resultValue = prop.decorate.call(instance, resultValue, props);\n decorated = true;\n }\n\n let type = prop.type;\n\n if (type === 'boolean') {\n // $FlowFixMe\n resultValue = Boolean(resultValue);\n\n } else if (type === 'function') {\n\n if (!resultValue && prop.noop) {\n // $FlowFixMe\n resultValue = noop;\n\n if (!decorated && prop.decorate) {\n // $FlowFixMe\n resultValue = prop.decorate.call(instance, noop, props);\n }\n }\n\n if (resultValue && typeof resultValue === 'function') {\n\n resultValue = resultValue.bind(instance);\n\n // If prop.denodeify is set, denodeify the function (accepts callback -> returns promise)\n\n if (prop.denodeify) {\n // $FlowFixMe\n resultValue = denodeify(resultValue);\n }\n\n if (prop.promisify) {\n // $FlowFixMe\n resultValue = promisify(resultValue);\n }\n\n // Wrap the function in order to log when it is called\n\n let original = resultValue;\n // $FlowFixMe\n resultValue = function() : mixed {\n component.log(`call_prop_${ key }`);\n return original.apply(this, arguments);\n };\n\n // If prop.once is set, ensure the function can only be called once\n\n if (prop.once) {\n // $FlowFixMe\n resultValue = once(resultValue);\n }\n\n // If prop.memoize is set, ensure the function is memoized (first return resultValue is cached and returned for any future calls)\n\n if (prop.memoize) {\n // $FlowFixMe\n resultValue = memoize(resultValue);\n }\n }\n\n } else if (type === 'string') {\n // pass\n\n } else if (type === 'object') {\n // pass\n\n } else if (type === 'number') {\n if (resultValue !== undefined) {\n // $FlowFixMe\n resultValue = parseInt(resultValue, 10);\n }\n }\n\n // $FlowFixMe\n return resultValue;\n}\n\n\n/* Normalize Props\n ---------------\n\n Turn props into normalized values, using defaults, function options, etc.\n*/\n\nexport function normalizeProps

(component : Component

, instance : ParentComponent

, props : (PropsType & P)) : (BuiltInPropsType & P) {\n\n let result = {};\n\n // $FlowFixMe\n props = props || {};\n\n for (let key of Object.keys(props)) {\n if (component.getPropNames().indexOf(key) !== -1) {\n // $FlowFixMe\n result[key] = normalizeProp(component, instance, props, key, props[key]);\n } else {\n result[key] = props[key];\n }\n }\n\n for (let key of component.getPropNames()) {\n if (!props.hasOwnProperty(key) && (!instance.props || !instance.props.hasOwnProperty(key))) {\n\n // $FlowFixMe\n let normalizedProp = normalizeProp(component, instance, props, key, props[key]);\n\n if (normalizedProp !== undefined) {\n result[key] = normalizedProp;\n }\n }\n }\n\n // $FlowFixMe\n return result;\n}\n\n\n/* Props to Query\n --------------\n\n Turn props into an initial query string to open the component with\n\n string -> string\n bool -> 1\n object -> json\n number -> string\n*/\n\n// $FlowFixMe\nfunction getQueryParam(prop : MixedPropDefinitionType

, key : string, value : T) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (typeof prop.queryParam === 'function') {\n return prop.queryParam(value);\n } else if (typeof prop.queryParam === 'string') {\n return prop.queryParam;\n } else {\n return key;\n }\n });\n}\n\n// $FlowFixMe\nfunction getQueryValue(prop : MixedPropDefinitionType

, key : string, value : T) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (typeof prop.queryValue === 'function') {\n return prop.queryValue(value);\n } else {\n return value;\n }\n });\n}\n\nexport function propsToQuery

(propsDef : BuiltInPropsDefinitionType

, props : (BuiltInPropsType & P)) : { [string] : string } {\n\n let params = {};\n\n return ZalgoPromise.all(Object.keys(props).map(key => {\n\n let prop = propsDef[key];\n\n if (!prop) {\n return; // eslint-disable-line array-callback-return\n }\n\n return ZalgoPromise.resolve().then(() => {\n\n let value = props[key];\n\n if (!value) {\n return;\n }\n\n if (!prop.queryParam) {\n return;\n }\n\n return value;\n\n }).then(value => {\n\n if (!value) {\n return;\n }\n\n return ZalgoPromise.all([\n // $FlowFixMe\n getQueryParam(prop, key, value),\n // $FlowFixMe\n getQueryValue(prop, key, value)\n ]).then(([ queryParam, queryValue ]) => {\n\n let result;\n\n if (typeof queryValue === 'boolean') {\n result = '1';\n } else if (typeof queryValue === 'string') {\n result = queryValue.toString();\n } else if (typeof queryValue === 'function') {\n return;\n } else if (typeof queryValue === 'object' && queryValue !== null) {\n\n if (prop.serialization === 'json') {\n result = JSON.stringify(queryValue);\n } else {\n result = dotify(queryValue, key);\n\n for (let dotkey of Object.keys(result)) {\n params[dotkey] = result[dotkey];\n }\n\n return;\n }\n\n } else if (typeof queryValue === 'number') {\n result = queryValue.toString();\n }\n\n params[queryParam] = result;\n });\n });\n\n })).then(() => {\n Object.keys(params).forEach(key => {\n params[key] = escape(params[key]);\n });\n return params;\n });\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { flush } from 'beaver-logger/client';\nimport { send, bridge } from 'post-robot/src';\nimport { isSameDomain, isWindowClosed, isTop, isSameTopWindow, matchDomain, getDistanceFromTop, onCloseWindow, getDomain, assertSameDomain, type CrossDomainWindowType, type SameDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getElementSafe, onResize } from 'belter/src';\n\nimport { BaseComponent } from '../base';\nimport { buildChildWindowName, getParentDomain, getParentComponentWindow } from '../window';\nimport { addEventListener, uniqueID, elementReady, writeElementToWindow,\n noop, showAndAnimate, animateAndHide, showElement, hideElement,\n addClass, extend, serializeFunctions, extendUrl, jsxDom,\n getElement, memoized, appendChild,\n global, writeToWindow, setLogLevel, once,\n prefetchPage, awaitFrameLoad, stringify, stringifyError } from '../../lib';\nimport { POST_MESSAGE, CONTEXT_TYPES, CLASS_NAMES, ANIMATION_NAMES, CLOSE_REASONS, DELEGATE, INITIAL_PROPS, WINDOW_REFERENCES, EVENTS, DEFAULT_DIMENSIONS } from '../../constants';\nimport { RenderError } from '../../error';\nimport type { Component } from '../component';\nimport type { PropsType, BuiltInPropsType } from '../component/props';\nimport type { ChildExportsType } from '../child';\nimport type { CancelableType, Jsx, DimensionsType, ElementRefType } from '../../types';\n\nimport { RENDER_DRIVERS, type ContextDriverType } from './drivers';\nimport { validateProps } from './validate';\nimport { propsToQuery, normalizeProps } from './props';\n\nglobal.props = global.props || {};\nglobal.windows = global.windows || {};\n\nexport type RenderOptionsType = {\n id : string,\n props : PropsType,\n tag : string,\n context : string,\n outlet : HTMLElement,\n CLASS : typeof CLASS_NAMES,\n ANIMATION : typeof ANIMATION_NAMES,\n CONTEXT : typeof CONTEXT_TYPES,\n EVENT : typeof EVENTS,\n actions : {\n close : (string) => ZalgoPromise,\n focus : () => ZalgoPromise\n },\n on : (string, () => void) => CancelableType,\n jsxDom : Jsx,\n document : Document,\n container : HTMLElement,\n dimensions : DimensionsType\n};\n\n\n/* Parent Component\n ----------------\n\n This manages the state of the component on the parent window side - i.e. the window the component is being rendered into.\n\n It handles opening the necessary windows/iframes, launching the component's url, and listening for messages back from the component.\n*/\n\nexport class ParentComponent

extends BaseComponent

{\n\n html : ?ZalgoPromise\n context : string\n props : BuiltInPropsType & P\n childWindowName : string\n onInit : ZalgoPromise>\n window : CrossDomainWindowType\n handledErrors : Array\n\n container : HTMLElement\n element : HTMLElement\n outlet : HTMLElement;\n iframe : HTMLIFrameElement\n\n prerenderIframe : HTMLIFrameElement\n prerenderWindow : SameDomainWindowType\n\n childExports : ?ChildExportsType

\n timeout : ?TimeoutID // eslint-disable-line no-undef\n\n constructor(component : Component

, context : string, { props } : { props : (PropsType & P) }) {\n super();\n\n this.component = component;\n\n this.validateParentDomain();\n\n this.context = context;\n\n try {\n this.setProps(props);\n } catch (err) {\n if (props.onError) {\n props.onError(err);\n }\n throw err;\n }\n\n if (this.props.logLevel) {\n setLogLevel(this.props.logLevel);\n }\n\n this.childWindowName = this.buildChildWindowName({ renderTo: window });\n\n this.registerActiveComponent();\n\n // Options passed during renderTo. We would not ordinarily expect a user to pass these, since we depend on\n // them only when we're trying to render from a sibling to a sibling\n\n this.component.log(`construct_parent`);\n\n this.watchForUnload();\n\n this.onInit = new ZalgoPromise();\n\n this.onInit.catch(err => {\n return this.error(err);\n });\n }\n\n render(element : ElementRefType, loadUrl : boolean = true) : ZalgoPromise> {\n return this.tryInit(() => {\n\n this.component.log(`render_${ this.context }`, { context: this.context, element, loadUrl: stringify(loadUrl) });\n\n let tasks = {};\n\n tasks.onRender = this.props.onRender();\n\n tasks.getDomain = this.getDomain();\n\n tasks.elementReady = ZalgoPromise.try(() => {\n if (element) {\n return this.elementReady(element);\n }\n });\n\n tasks.openContainer = tasks.elementReady.then(() => {\n return this.openContainer(element);\n });\n\n tasks.showContainer = tasks.openContainer.then(() => {\n return this.showContainer();\n });\n\n tasks.openPrerender = tasks.openContainer.then(() => {\n return this.openPrerender();\n });\n\n tasks.switchPrerender = ZalgoPromise.all([ tasks.openPrerender, this.onInit ]).then(() => {\n return this.switchPrerender();\n });\n\n // $FlowFixMe\n tasks.open = this.driver.openOnClick\n ? this.open()\n : tasks.openContainer.then(() => this.open());\n\n tasks.listen = ZalgoPromise.hash({ domain: tasks.getDomain, open: tasks.open }).then(({ domain }) => {\n this.listen(this.window, domain);\n });\n\n tasks.watchForClose = tasks.open.then(() => {\n return this.watchForClose();\n });\n\n tasks.linkDomain = ZalgoPromise.all([ tasks.getDomain, tasks.open ]).then(([ domain ]) => {\n if (bridge && typeof domain === 'string') {\n return bridge.linkUrl(this.window, domain);\n }\n });\n\n if (!this.html) {\n tasks.createPrerenderTemplate = tasks.openPrerender.then(() => {\n return this.createPrerenderTemplate();\n });\n\n tasks.showComponent = tasks.createPrerenderTemplate.then(() => {\n return this.showComponent();\n });\n }\n\n tasks.openBridge = ZalgoPromise.all([ tasks.getDomain, tasks.open ]).then(([ domain ]) => {\n return this.openBridge(typeof domain === 'string' ? domain : null);\n });\n\n if (this.html) {\n tasks.loadHTML = tasks.open.then(() => {\n return this.loadHTML();\n });\n\n } else if (loadUrl) {\n tasks.buildUrl = this.buildUrl();\n\n tasks.loadUrl = ZalgoPromise.all([\n tasks.buildUrl,\n tasks.open,\n tasks.linkDomain,\n tasks.listen,\n tasks.open,\n tasks.openBridge,\n tasks.createPrerenderTemplate\n ]).then(([ url ]) => {\n return this.loadUrl(url);\n });\n\n tasks.runTimeout = tasks.loadUrl.then(() => {\n return this.runTimeout();\n });\n }\n\n return ZalgoPromise.hash(tasks);\n\n }).then(() => {\n return this.props.onEnter();\n }).then(() => {\n return this;\n });\n }\n\n @memoized\n getOutlet() : HTMLElement {\n let outlet = document.createElement('div');\n addClass(outlet, CLASS_NAMES.OUTLET);\n return outlet;\n }\n\n validateParentDomain() {\n let domain = getDomain();\n if (!matchDomain(this.component.allowedParentDomains, domain)) {\n throw new RenderError(`Can not be rendered by domain: ${ domain }`);\n }\n }\n\n renderTo(win : CrossDomainWindowType, element : ?string) : ZalgoPromise> {\n return this.tryInit(() => {\n\n if (win === window) {\n return this.render(element);\n }\n\n if (!isSameTopWindow(window, win)) {\n throw new Error(`Can only renderTo an adjacent frame`);\n }\n\n if (element && typeof element !== 'string') {\n throw new Error(`Element passed to renderTo must be a string selector, got ${ typeof element } ${ element }`);\n }\n\n this.checkAllowRenderTo(win);\n\n this.component.log(`render_${ this.context }_to_win`, { element: stringify(element), context: this.context });\n\n this.childWindowName = this.buildChildWindowName({ renderTo: win });\n\n this.delegate(win);\n\n return this.render(element);\n });\n }\n\n @memoized\n prefetch() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.html = this.buildUrl().then(url => {\n return prefetchPage(url).then(html => {\n\n let host = `${ url.split('/').slice(0, 3).join('/') }`;\n let uri = `/${ url.split('/').slice(3).join('/') }`;\n\n return `\n \n\n ${ html }\n\n \n `;\n });\n });\n });\n }\n\n @memoized\n loadHTML() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (!this.html) {\n throw new Error(`Html not prefetched`);\n }\n\n return this.html.then(html => {\n // $FlowFixMe\n return writeToWindow(this.window, html);\n });\n });\n }\n\n checkAllowRenderTo(win : CrossDomainWindowType) {\n\n if (!win) {\n throw this.component.createError(`Must pass window to renderTo`);\n }\n\n if (isSameDomain(win)) {\n return;\n }\n\n let origin = getDomain();\n let domain = this.component.getDomain(null, this.props.env);\n\n if (!domain) {\n throw new Error(`Could not determine domain to allow remote render`);\n }\n\n if (matchDomain(domain, origin)) {\n return;\n }\n\n throw new Error(`Can not render remotely to ${ domain.toString() } - can only render to ${ origin }`);\n }\n\n registerActiveComponent() {\n ParentComponent.activeComponents.push(this);\n\n this.clean.register(() => {\n ParentComponent.activeComponents.splice(ParentComponent.activeComponents.indexOf(this), 1);\n });\n }\n\n\n getComponentParentRef() : { ref : string, uid? : string, distance? : number } {\n let domain = this.component.getDomain(null, this.props.env);\n\n if (domain === getDomain(window)) {\n let uid = uniqueID();\n global.windows = global.windows || {};\n global.windows[uid] = window;\n this.clean.register(() => {\n delete global.windows[uid];\n });\n\n return { ref: WINDOW_REFERENCES.GLOBAL, uid };\n }\n\n if (this.context === CONTEXT_TYPES.POPUP) {\n return { ref: WINDOW_REFERENCES.OPENER };\n }\n\n if (isTop(window)) {\n return { ref: WINDOW_REFERENCES.TOP };\n }\n\n return { ref: WINDOW_REFERENCES.PARENT, distance: getDistanceFromTop(window) };\n }\n\n getRenderParentRef(renderToWindow : CrossDomainWindowType = window) : { ref : string, uid? : string, distance? : number } {\n\n if (renderToWindow === window) {\n return this.getComponentParentRef();\n }\n\n let uid = uniqueID();\n global.windows[uid] = renderToWindow;\n\n this.clean.register(() => {\n delete global.windows[uid];\n });\n\n return { ref: WINDOW_REFERENCES.GLOBAL, uid };\n }\n\n buildChildWindowName({ renderTo = window } : { renderTo : CrossDomainWindowType } = {}) : string {\n\n let childDomain = this.component.getDomain(null, this.props.env);\n let sameDomain = isSameDomain(renderTo);\n\n let uid = uniqueID();\n let tag = this.component.tag;\n let sProps = serializeFunctions(this.getPropsForChild());\n\n let componentParent = this.getComponentParentRef();\n let renderParent = this.getRenderParentRef(renderTo);\n\n let secureProps = !sameDomain && !this.component.unsafeRenderTo;\n\n let props = secureProps\n ? { type: INITIAL_PROPS.UID, uid }\n : { type: INITIAL_PROPS.RAW, value: sProps };\n\n if (props.type === INITIAL_PROPS.UID) {\n global.props[uid] = JSON.stringify(sProps);\n\n this.clean.register(() => {\n delete global.props[uid];\n });\n }\n\n return buildChildWindowName(this.component.name, this.component.version, { uid, tag, componentParent, renderParent, props, childDomain });\n }\n\n\n /* Send to Parent\n --------------\n\n Send a post message to our parent window.\n */\n\n sendToParent(name : string, data : Object) : ZalgoPromise<{ origin : string, source : CrossDomainWindowType, data : Object }> {\n let parentWindow = getParentComponentWindow();\n\n if (!parentWindow) {\n throw new Error(`Can not find parent component window to message`);\n }\n\n this.component.log(`send_to_parent_${ name }`);\n\n return send(getParentComponentWindow(), name, data, { domain: getParentDomain() });\n }\n\n\n /* Set Props\n ---------\n\n Normalize props and generate the url we'll use to render the component\n */\n\n setProps(props : (PropsType & P), required : boolean = true) {\n\n validateProps(this.component, props, required);\n if (this.component.validate) {\n this.component.validate(this.component, props);\n }\n\n // $FlowFixMe\n this.props = this.props || {};\n\n extend(this.props, normalizeProps(this.component, this, props));\n }\n\n\n /* Build Url\n ---------\n\n We build the props we're passed into the initial url. This means the component server-side can start rendering\n itself based on whatever props the merchant provides.\n */\n\n @memoized\n buildUrl() : ZalgoPromise {\n\n let propUrl : (string | void) = this.props.url;\n\n return ZalgoPromise.all([\n\n propUrl,\n // $FlowFixMe\n propsToQuery({ ...this.component.props, ...this.component.builtinProps }, this.props)\n\n ]).then(([ url, query ]) => {\n\n // Do not extend the url if it is for a different domain\n\n if (url && !this.component.getValidDomain(url)) {\n return url;\n }\n\n return ZalgoPromise.try(() => {\n\n return url || this.component.getUrl(this.props.env, this.props);\n\n }).then(finalUrl => {\n\n query.xcomponent = '1';\n return extendUrl(finalUrl, { query });\n });\n });\n }\n\n\n getDomain() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n return this.props.url;\n\n }).then(url => {\n\n let domain = this.component.getDomain(url, this.props.env);\n\n if (domain) {\n return domain;\n }\n\n if (this.component.buildUrl) {\n return ZalgoPromise.try(() => this.component.buildUrl(this.props)).then(builtUrl => {\n return this.component.getDomain(builtUrl, this.props.env);\n });\n }\n\n }).then(domain => {\n\n if (!domain) {\n throw new Error(`Could not determine domain`);\n }\n\n return domain;\n });\n }\n\n getPropsForChild() : (BuiltInPropsType & P) {\n\n let result = {};\n\n for (let key of Object.keys(this.props)) {\n let prop = this.component.getProp(key);\n\n if (!prop || prop.sendToChild !== false) {\n result[key] = this.props[key];\n }\n }\n\n // $FlowFixMe\n return result;\n }\n\n\n /* Update Props\n ------------\n\n Send new props down to the child\n */\n\n updateProps(props : (PropsType & P)) : ZalgoPromise {\n this.setProps(props, false);\n\n return this.onInit.then(() => {\n if (this.childExports) {\n return this.childExports.updateProps(this.getPropsForChild());\n } else {\n throw new Error(`Child exports were not available`);\n }\n });\n }\n\n\n openBridge(domain : ?string) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (!bridge || !this.driver.needsBridge) {\n return;\n }\n\n let needsBridgeParams : Object = { win: this.window };\n if (domain) {\n needsBridgeParams.domain = domain;\n }\n\n let needsBridge = bridge.needsBridge(needsBridgeParams);\n\n let bridgeUrl = this.component.getBridgeUrl(this.props.env);\n\n if (!bridgeUrl) {\n\n if (needsBridge && domain && !bridge.hasBridge(domain, domain)) {\n throw new Error(`Bridge url needed to render ${ this.context }`);\n }\n\n return;\n }\n\n bridgeUrl = extendUrl(bridgeUrl, { query: { version: this.component.version } });\n\n let bridgeDomain = this.component.getBridgeDomain(this.props.env);\n\n if (!bridgeDomain) {\n throw new Error(`Can not determine domain for bridge`);\n }\n\n if (needsBridge) {\n return bridge.openBridge(bridgeUrl, bridgeDomain).then(result => {\n if (result) {\n return result;\n }\n });\n }\n });\n }\n\n\n /* Open\n ----\n\n Open a new window in the desired context\n */\n\n @memoized\n open() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.component.log(`open_${ this.context }`, { windowName: this.childWindowName });\n if (this.props.win) {\n this.clean.set('window', this.props.win);\n assertSameDomain(this.window).name = this.childWindowName;\n return;\n }\n return this.driver.open.call(this);\n });\n }\n\n @memoized\n openPrerender() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.component.prerenderTemplate) {\n return this.driver.openPrerender.call(this);\n }\n });\n }\n\n @memoized\n switchPrerender() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.prerenderWindow && this.driver.switchPrerender) {\n return this.driver.switchPrerender.call(this);\n }\n });\n }\n\n get driver() : ContextDriverType {\n\n if (!this.context) {\n throw new Error('Context not set');\n }\n\n return RENDER_DRIVERS[this.context];\n }\n\n elementReady(element : ElementRefType) : ZalgoPromise {\n return elementReady(element).then(noop);\n }\n\n\n delegate(win : CrossDomainWindowType) {\n\n this.component.log(`delegate_${ this.context }`);\n\n let props = {\n uid: this.props.uid,\n dimensions: this.props.dimensions,\n onClose: this.props.onClose,\n onDisplay: this.props.onDisplay\n };\n\n for (let propName of this.component.getPropNames()) {\n let prop = this.component.getProp(propName);\n\n if (prop.allowDelegate) {\n props[propName] = this.props[propName];\n }\n }\n\n let delegate = send(win, `${ POST_MESSAGE.DELEGATE }_${ this.component.name }`, {\n\n context: this.context,\n env: this.props.env,\n\n options: {\n\n context: this.context,\n\n childWindowName: this.childWindowName,\n isWindowClosed: () => isWindowClosed(this.window),\n\n props,\n\n overrides: {\n focus: () => this.focus(),\n userClose: () => this.userClose(),\n getDomain: () => this.getDomain(),\n\n error: (err) => this.error(err),\n on: (eventName, handler) => this.on(eventName, handler)\n }\n }\n\n }).then(({ data }) => {\n\n this.clean.register(data.destroy);\n return data;\n\n }).catch(err => {\n\n throw new Error(`Unable to delegate rendering. Possibly the component is not loaded in the target window.\\n\\n${ stringifyError(err) }`);\n });\n\n let overrides = this.driver.delegateOverrides;\n\n for (let key of Object.keys(overrides)) {\n let val = overrides[key];\n\n if (val === DELEGATE.CALL_ORIGINAL) {\n continue;\n }\n\n // $FlowFixMe\n let original = this[key];\n\n // $FlowFixMe\n this[key] = function overridenFunction() : ZalgoPromise {\n return delegate.then(data => {\n\n let override = data.overrides[key];\n\n if (val === DELEGATE.CALL_DELEGATE) {\n return override.apply(this, arguments);\n }\n\n if (typeof val === 'function') {\n return val(original, override).apply(this, arguments);\n }\n\n throw new Error(`Expected delgate to be CALL_ORIGINAL, CALL_DELEGATE, or factory method`);\n });\n };\n }\n }\n\n /* Watch For Close\n ---------------\n\n Watch for the child window closing, so we can cleanup.\n Also watch for this window changing location, so we can close the component.\n */\n\n watchForClose() {\n let closeWindowListener = onCloseWindow(this.window, () => {\n this.component.log(`detect_close_child`);\n\n return ZalgoPromise.try(() => {\n return this.props.onClose(CLOSE_REASONS.CLOSE_DETECTED);\n }).finally(() => {\n return this.destroy();\n });\n }, 3000);\n\n this.clean.register('destroyCloseWindowListener', closeWindowListener.cancel);\n }\n\n watchForUnload() {\n\n // Our child has no way of knowing if we navigated off the page. So we have to listen for unload\n // and close the child manually if that happens.\n\n let onunload = once(() => {\n this.component.log(`navigate_away`);\n flush();\n this.destroyComponent();\n });\n\n let unloadWindowListener = addEventListener(window, 'unload', onunload);\n\n this.clean.register('destroyUnloadWindowListener', unloadWindowListener.cancel);\n }\n\n\n /* Load Url\n --------\n\n Load url into the child window. This is separated out because it's quite common for us to have situations\n where opening the child window and loading the url happen at different points.\n */\n\n loadUrl(url : string) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.component.log(`load_url`);\n\n if (window.location.href.split('#')[0] === url.split('#')[0]) {\n url = extendUrl(url, {\n query: {\n [ uniqueID() ]: '1'\n }\n });\n }\n\n return this.driver.loadUrl.call(this, url);\n });\n }\n\n\n hijack(targetElement : HTMLFormElement | HTMLAnchorElement) {\n targetElement.target = this.childWindowName;\n }\n\n /* Run Timeout\n -----------\n\n Set a timeout on the initial render, and call this.props.onTimeout if we don't get an init call in time.\n */\n\n runTimeout() {\n let timeout = this.props.timeout;\n\n if (timeout) {\n let id = this.timeout = setTimeout(() => {\n\n this.component.log(`timed_out`, { timeout: timeout.toString() });\n\n let error = this.component.createError(`Loading component timed out after ${ timeout } milliseconds`);\n\n this.onInit.reject(error);\n this.props.onTimeout(error);\n\n }, timeout);\n\n this.clean.register(() => {\n clearTimeout(id);\n delete this.timeout;\n });\n }\n }\n\n\n /* Listeners\n ---------\n\n Post-robot listeners to the child component window\n */\n\n listeners() : { [string] : (CrossDomainWindowType, Object) => mixed } {\n return {\n\n // The child rendered, and the component called .attach()\n // We have no way to know when the child has set up its listeners for the first time, so we have to listen\n // for this message to be sure so we can continue doing anything from the parent\n\n [ POST_MESSAGE.INIT ](source : CrossDomainWindowType, data : Object) : { props : BuiltInPropsType & P, context : string } {\n\n this.childExports = data.exports;\n\n this.onInit.resolve(this);\n\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n\n return {\n props: this.getPropsForChild(),\n context: this.context\n };\n },\n\n\n // The child has requested that we close it. Since iframes can't close themselves, we need\n // this logic to exist in the parent window\n\n [ POST_MESSAGE.CLOSE ](source : CrossDomainWindowType, data : Object) {\n this.close(data.reason);\n },\n\n [ POST_MESSAGE.CHECK_CLOSE ]() {\n this.checkClose();\n },\n\n // Iframes can't resize themselves, so they need the parent to take care of it for them.\n\n [ POST_MESSAGE.RESIZE ](source : CrossDomainWindowType, data : Object) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.driver.allowResize) {\n return this.resize(data.width, data.height);\n }\n });\n },\n\n [ POST_MESSAGE.HIDE ]() {\n this.hide();\n },\n\n [ POST_MESSAGE.SHOW ]() {\n this.show();\n },\n\n\n // The child encountered an error\n\n [ POST_MESSAGE.ERROR ](source : CrossDomainWindowType, data : Object) {\n this.error(new Error(data.error));\n }\n };\n }\n\n\n /* Resize\n ------\n\n Resize the child component window\n */\n\n resize(width : ?(number | string), height : ?(number | string)) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.component.log(`resize`, { height: stringify(height), width: stringify(width) });\n this.driver.resize.call(this, width, height);\n if (this.props.onResize) {\n this.props.onResize();\n }\n });\n }\n\n\n /* Hide\n ----\n\n Hide the component and any parent template\n */\n\n hide() : void {\n\n if (this.container) {\n hideElement(this.container);\n }\n\n return this.driver.hide.call(this);\n }\n\n show() : void {\n\n if (this.container) {\n showElement(this.container);\n }\n\n return this.driver.show.call(this);\n }\n\n\n checkClose() {\n let closeWindowListener = onCloseWindow(this.window, () => {\n this.userClose();\n }, 50, 500);\n\n this.clean.register(closeWindowListener.cancel);\n }\n\n\n userClose() : ZalgoPromise {\n return this.close(CLOSE_REASONS.USER_CLOSED);\n }\n\n\n /* Close\n -----\n\n Close the child component\n */\n\n @memoized\n close(reason : string = CLOSE_REASONS.PARENT_CALL) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n this.component.log(`close`, { reason });\n\n this.event.triggerOnce(EVENTS.CLOSE);\n return this.props.onClose(reason);\n\n }).then(() => {\n\n return ZalgoPromise.all([\n this.closeComponent(),\n this.closeContainer()\n ]);\n\n }).then(() => {\n\n return this.destroy();\n });\n }\n\n\n @memoized\n closeContainer(reason : string = CLOSE_REASONS.PARENT_CALL) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n this.event.triggerOnce(EVENTS.CLOSE);\n return this.props.onClose(reason);\n\n }).then(() => {\n\n return ZalgoPromise.all([\n this.closeComponent(reason),\n this.hideContainer()\n ]);\n\n }).then(() => {\n\n return this.destroyContainer();\n });\n }\n\n\n @memoized\n destroyContainer() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.clean.run('destroyContainerEvents');\n this.clean.run('destroyContainerTemplate');\n });\n }\n\n\n @memoized\n closeComponent(reason : string = CLOSE_REASONS.PARENT_CALL) : ZalgoPromise {\n\n let win = this.window;\n\n return ZalgoPromise.try(() => {\n\n return this.cancelContainerEvents();\n\n }).then(() => {\n\n this.event.triggerOnce(EVENTS.CLOSE);\n return this.props.onClose(reason);\n\n }).then(() => {\n\n return this.hideComponent();\n\n }).then(() => {\n\n return this.destroyComponent();\n\n }).then(() => {\n\n // IE in metro mode -- child window needs to close itself, or close will hang\n\n if (this.childExports && this.context === CONTEXT_TYPES.POPUP && !isWindowClosed(win)) {\n this.childExports.close().catch(noop);\n }\n });\n }\n\n destroyComponent() {\n this.clean.run('destroyUnloadWindowListener');\n this.clean.run('destroyCloseWindowListener');\n this.clean.run('destroyContainerEvents');\n this.clean.run('destroyWindow');\n }\n\n @memoized\n showContainer() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.props.onDisplay) {\n return this.props.onDisplay();\n }\n }).then(() => {\n if (this.container) {\n return showAndAnimate(this.container, ANIMATION_NAMES.SHOW_CONTAINER, this.clean.register);\n }\n });\n }\n\n @memoized\n showComponent() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.props.onDisplay) {\n return this.props.onDisplay();\n }\n }).then(() => {\n if (this.element) {\n return showAndAnimate(this.element, ANIMATION_NAMES.SHOW_COMPONENT, this.clean.register);\n }\n });\n }\n\n @memoized\n hideContainer() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.container) {\n return animateAndHide(this.container, ANIMATION_NAMES.HIDE_CONTAINER, this.clean.register);\n } else {\n return ZalgoPromise.resolve();\n }\n });\n }\n\n @memoized\n hideComponent() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.element) {\n return animateAndHide(this.element, ANIMATION_NAMES.HIDE_COMPONENT, this.clean.register);\n } else {\n return ZalgoPromise.resolve();\n }\n });\n }\n\n\n /* Focus\n -----\n\n Focus the child component window\n */\n\n focus() {\n\n if (this.window && !isWindowClosed(this.window)) {\n this.component.log(`focus`);\n this.window.focus();\n\n } else {\n\n throw new Error(`No window to focus`);\n }\n }\n\n\n /* Create Component Template\n -------------------------\n\n Creates an initial template and stylesheet which are loaded into the child window, to be displayed before the url is loaded\n */\n\n @memoized\n createPrerenderTemplate() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (!this.component.prerenderTemplate) {\n return ZalgoPromise.resolve();\n }\n\n return ZalgoPromise.try(() => {\n\n if (this.prerenderIframe) {\n return awaitFrameLoad(this.prerenderIframe).then(() => this.prerenderWindow);\n } else {\n return this.prerenderWindow;\n }\n\n }).then(win => {\n\n let doc;\n\n try {\n doc = win.document;\n } catch (err) {\n return;\n }\n\n let el;\n\n try {\n el = this.renderTemplate(this.component.prerenderTemplate, {\n jsxDom: jsxDom.bind(doc),\n document: doc\n });\n } catch (err) {\n this.component.logError('preprender_error', { err: err.stack ? err.stack : err.toString() });\n console.error(err.stack ? err.stack : err); // eslint-disable-line no-console\n return;\n }\n\n try {\n writeElementToWindow(win, el);\n } catch (err) {\n this.component.logError('preprender_error', { err: err.stack ? err.stack : err.toString() });\n console.error(err.stack ? err.stack : err); // eslint-disable-line no-console\n }\n\n let { width = false, height = false, element = 'body' } = (typeof this.component.autoResize === 'object' && this.component.autoResize !== null)\n ? this.component.autoResize\n : {};\n\n element = getElementSafe(element, doc);\n\n if (element && (width || height)) {\n onResize(element, ({ width: newWidth, height: newHeight }) => {\n this.resize(width ? newWidth : undefined, height ? newHeight : undefined);\n }, { width, height, win });\n }\n });\n });\n }\n\n\n /* Create Parent Template\n ----------------------\n\n Create a template and stylesheet for the parent template behind the element\n */\n\n renderTemplate(renderer : (RenderOptionsType) => HTMLElement, options : Object = {}) : HTMLElement {\n\n let {\n width = `${ DEFAULT_DIMENSIONS.WIDTH }px`,\n height = `${ DEFAULT_DIMENSIONS.HEIGHT }px`\n } = (this.component.dimensions || {});\n\n return renderer.call(this, {\n id: `${ CLASS_NAMES.ZOID }-${ this.component.tag }-${ this.props.uid }`,\n props: renderer.__xdomain__ ? null : this.props,\n tag: this.component.tag,\n context: this.context,\n outlet: this.getOutlet(),\n CLASS: CLASS_NAMES,\n ANIMATION: ANIMATION_NAMES,\n CONTEXT: CONTEXT_TYPES,\n EVENT: EVENTS,\n actions: {\n close: () => this.userClose(),\n focus: () => this.focus()\n },\n on: (eventName, handler) => this.on(eventName, handler),\n jsxDom,\n document,\n dimensions: { width, height },\n ...options\n });\n }\n\n @memoized\n openContainer(element : ?HTMLElement) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n let el;\n\n if (element) {\n el = getElement(element);\n } else {\n el = document.body;\n }\n\n if (!el) {\n throw new Error(`Could not find element to open container into`);\n }\n\n if (!this.component.containerTemplate) {\n if (this.driver.renderedIntoContainerTemplate) {\n throw new Error(`containerTemplate needed to render ${ this.context }`);\n }\n\n return;\n }\n\n let container = this.renderTemplate(this.component.containerTemplate, {\n container: el\n });\n\n this.container = container;\n hideElement(this.container);\n appendChild(el, this.container);\n\n if (this.driver.renderedIntoContainerTemplate) {\n this.element = this.getOutlet();\n hideElement(this.element);\n\n if (!this.element) {\n throw new Error('Could not find element to render component into');\n }\n\n hideElement(this.element);\n }\n\n this.clean.register('destroyContainerTemplate', () => {\n\n if (this.container && this.container.parentNode) {\n this.container.parentNode.removeChild(this.container);\n }\n\n delete this.container;\n });\n });\n }\n\n cancelContainerEvents() {\n this.clean.run('destroyContainerEvents');\n }\n\n\n /* Destroy\n -------\n\n Close the component and clean up any listeners and state\n */\n\n destroy() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.clean.hasTasks()) {\n this.component.log(`destroy`);\n flush();\n return this.clean.all();\n }\n });\n }\n\n\n tryInit(method : () => mixed) : ZalgoPromise> {\n return ZalgoPromise.try(method).catch(err => {\n this.onInit.reject(err);\n }).then(() => {\n return this.onInit;\n });\n }\n\n\n /* Error\n -----\n\n Handle an error\n */\n\n error(err : mixed) : ZalgoPromise {\n // eslint-disable-next-line promise/no-promise-in-callback\n return ZalgoPromise.try(() => {\n\n this.handledErrors = this.handledErrors || [];\n\n if (this.handledErrors.indexOf(err) !== -1) {\n // $FlowFixMe\n return;\n }\n\n this.handledErrors.push(err);\n\n this.onInit.reject(err);\n\n return this.destroy();\n\n }).then(() => {\n\n if (this.props.onError) {\n return this.props.onError(err);\n }\n\n }).catch(errErr => { // eslint-disable-line unicorn/catch-error-name\n\n throw new Error(`An error was encountered while handling error:\\n\\n ${ stringifyError(err) }\\n\\n${ stringifyError(errErr) }`);\n\n }).then(() => {\n\n if (!this.props.onError) {\n throw err;\n }\n });\n }\n\n static activeComponents : Array> = []\n\n static destroyAll() : ZalgoPromise {\n let results = [];\n\n while (ParentComponent.activeComponents.length) {\n results.push(ParentComponent.activeComponents[0].destroy());\n }\n\n return ZalgoPromise.all(results).then(noop);\n }\n}\n","/* @flow */\n\nimport { onCloseWindow, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { BaseComponent } from '../base';\nimport { ParentComponent } from '../parent';\nimport { RENDER_DRIVERS, type ContextDriverType } from '../parent/drivers';\nimport type { Component } from '../component';\nimport { noop } from '../../lib';\nimport type { CancelableType, DimensionsType } from '../../types';\n\nexport type DelegatePropsType = {\n uid : string,\n dimensions : DimensionsType,\n onClose : () => ?ZalgoPromise,\n onDisplay : () => ?ZalgoPromise\n};\n\nexport type DelegateOptionsType = {\n context : string,\n props : DelegatePropsType,\n childWindowName : string,\n isWindowClosed : () => ZalgoPromise,\n \n overrides : {\n focus : () => ZalgoPromise,\n userClose : (string) => ZalgoPromise,\n getDomain : () => ZalgoPromise,\n error : (mixed) => ZalgoPromise,\n on : (string, () => void) => CancelableType\n }\n};\n\nexport class DelegateComponent

extends BaseComponent

{\n\n source : CrossDomainWindowType\n context : string\n props : DelegatePropsType\n\n focus : () => ZalgoPromise\n userClose : (string) => ZalgoPromise\n getDomain : () => ZalgoPromise\n error : (mixed) => ZalgoPromise\n on : (string, () => void) => CancelableType\n\n childWindowName : string\n isWindowClosed : () => ZalgoPromise\n\n constructor(component : Component

, source : CrossDomainWindowType, options : DelegateOptionsType) {\n super();\n\n this.component = component;\n this.clean.set('source', source);\n\n this.context = options.context;\n\n this.props = {\n uid: options.props.uid,\n dimensions: options.props.dimensions,\n onClose: options.props.onClose,\n onDisplay: options.props.onDisplay\n };\n\n for (let propName of component.getPropNames()) {\n // $FlowFixMe\n let prop = this.component.getProp(propName);\n\n if (prop.allowDelegate) {\n this.props[propName] = options.props[propName];\n }\n }\n\n this.focus = () => {\n return ZalgoPromise.all([\n this.isWindowClosed().then(closed => {\n if (!closed) {\n window.open('', this.childWindowName);\n }\n }),\n options.overrides.focus.call(this)\n ]).then(noop);\n };\n\n this.clean.register('destroyFocusOverride', () => {\n // $FlowFixMe\n this.focus = noop;\n });\n\n this.userClose = options.overrides.userClose;\n this.getDomain = options.overrides.getDomain;\n this.error = options.overrides.error;\n this.on = options.overrides.on;\n\n let delegateOverrides = RENDER_DRIVERS[options.context].delegateOverrides;\n\n for (let key of Object.keys(delegateOverrides)) {\n // $FlowFixMe\n this[key] = ParentComponent.prototype[key];\n }\n\n this.childWindowName = options.childWindowName;\n this.isWindowClosed = options.isWindowClosed;\n\n ParentComponent.prototype.registerActiveComponent.call(this);\n\n this.watchForClose();\n }\n\n get driver() : ContextDriverType {\n\n if (!this.context) {\n throw new Error('Context not set');\n }\n\n return RENDER_DRIVERS[this.context];\n }\n\n watchForClose() {\n let closeWindowListener = onCloseWindow(this.source, () => this.destroy(), 3000);\n this.clean.register('destroyCloseWindowListener', closeWindowListener.cancel);\n }\n\n getOverrides(context : string) : { [string] : mixed } {\n\n let delegateOverrides = RENDER_DRIVERS[context].delegateOverrides;\n\n let overrides = {};\n\n let self = this;\n\n for (let key of Object.keys(delegateOverrides)) {\n overrides[key] = function delegateOverride() : mixed {\n // $FlowFixMe\n return ParentComponent.prototype[key].apply(self, arguments);\n };\n }\n\n return overrides;\n }\n\n destroy() : ZalgoPromise {\n return this.clean.all();\n }\n}\n","/* @flow */\n\nimport { PROP_TYPES_LIST, CONTEXT_TYPES_LIST } from '../../constants';\nimport { isPerc, isPx } from '../../lib';\n\nimport type { ComponentOptionsType } from './index';\n\nfunction validatePropDefinitions

(options : ComponentOptionsType

) {\n\n if (options.props && !(typeof options.props === 'object')) {\n throw new Error(`Expected options.props to be an object`);\n }\n\n if (options.props) {\n for (let key of Object.keys(options.props)) {\n\n // $FlowFixMe\n let prop = options.props[key];\n\n if (!prop || !(typeof prop === 'object')) {\n throw new Error(`Expected options.props.${ key } to be an object`);\n }\n\n if (!prop.type) {\n throw new Error(`Expected prop.type`);\n }\n\n if (PROP_TYPES_LIST.indexOf(prop.type) === -1) {\n throw new Error(`Expected prop.type to be one of ${ PROP_TYPES_LIST.join(', ') }`);\n }\n\n if (prop.required && prop.def) {\n throw new Error(`Required prop can not have a default value`);\n }\n }\n }\n}\n\n// eslint-disable-next-line complexity\nexport function validate

(options : ?ComponentOptionsType

) { // eslint-ignore-line\n\n if (!options) {\n throw new Error(`Expecred options to be passed`);\n }\n\n if (!options.tag || !options.tag.match(/^[a-z0-9-]+$/)) {\n throw new Error(`Invalid options.tag: ${ options.tag }`);\n }\n\n validatePropDefinitions(options);\n\n if (options.dimensions) {\n if (options.dimensions && !isPx(options.dimensions.width) && !isPerc(options.dimensions.width)) {\n throw new Error(`Expected options.dimensions.width to be a px or % string value`);\n }\n\n if (options.dimensions && !isPx(options.dimensions.height) && !isPerc(options.dimensions.height)) {\n throw new Error(`Expected options.dimensions.height to be a px or % string value`);\n }\n }\n\n if (options.contexts) {\n\n if (options.contexts.popup && !__ZOID__.__POPUP_SUPPORT__) {\n throw new Error(`Popups not supported in this build -- please use the full zoid.js build`);\n }\n\n let anyEnabled = false;\n\n for (let context of Object.keys(options.contexts)) {\n\n if (CONTEXT_TYPES_LIST.indexOf(context) === -1) {\n throw new Error(`Unsupported context type: ${ context }`);\n }\n\n if ((options.contexts && options.contexts[context]) || (options.contexts && options.contexts[context] === undefined)) {\n anyEnabled = true;\n }\n }\n\n if (!anyEnabled) {\n throw new Error(`No context type is enabled`);\n }\n }\n\n if (options.defaultContext) {\n if (CONTEXT_TYPES_LIST.indexOf(options.defaultContext) === -1) {\n throw new Error(`Unsupported context type: ${ options.defaultContext || 'unknown' }`);\n }\n\n if (options.contexts && options.defaultContext && !options.contexts[options.defaultContext]) {\n throw new Error(`Disallowed default context type: ${ options.defaultContext || 'unknown' }`);\n }\n }\n\n if (options.url && options.buildUrl) {\n throw new Error(`Can not pass both options.url and options.buildUrl`);\n }\n\n if (options.defaultEnv) {\n if (typeof options.defaultEnv !== 'string') {\n throw new TypeError(`Expected options.defaultEnv to be a string`);\n }\n\n if (!options.buildUrl && typeof options.url !== 'object') {\n throw new Error(`Expected options.url to be an object mapping env->url`);\n }\n\n if (options.url && typeof options.url === 'object' && !options.url[options.defaultEnv]) {\n throw new Error(`No url found for default env: ${ options.defaultEnv }`);\n }\n }\n\n if (options.url && typeof options.url === 'object') {\n\n if (!options.defaultEnv) {\n throw new Error(`Must pass options.defaultEnv with env->url mapping`);\n }\n\n for (let env of Object.keys(options.url)) {\n if (!options.url[env]) {\n throw new Error(`No url specified for env: ${ env }`);\n }\n }\n }\n\n if (options.prerenderTemplate && typeof options.prerenderTemplate !== 'function') {\n throw new Error(`Expected options.prerenderTemplate to be a function`);\n }\n\n if (options.containerTemplate && typeof options.containerTemplate !== 'function') {\n throw new Error(`Expected options.containerTemplate to be a function`);\n }\n}\n","/* @flow */\n/* @jsx jsxDom */\n\nimport { type RenderOptionsType } from '../../parent';\n\nexport function defaultContainerTemplate({ id, tag, context, CLASS, outlet, jsxDom, dimensions : { width, height } } : RenderOptionsType) : HTMLElement {\n\n return (\n

\n \n\n { outlet }\n
\n );\n}\n","/* @flow */\n/* @jsx jsxDom */\n\nimport { type RenderOptionsType } from '../../parent';\n\nexport function defaultPrerenderTemplate({ jsxDom } : RenderOptionsType) : HTMLElement {\n return (\n \n \n \n \n \n
\n
\n
\n \n \n );\n}\n","/* @flow */\n\nexport * from './container';\nexport * from './component';\n","/* @flow */\n\nimport { type ZalgoPromise } from 'zalgo-promise/src';\nimport type { SameDomainWindowType } from 'cross-domain-utils/src';\n\nimport { uniqueID } from '../../lib';\nimport { type DimensionsType } from '../../types';\n\ntype PropDefinitionType = {\n type : S,\n alias? : string,\n value? : T,\n required? : boolean,\n noop? : boolean,\n once? : boolean,\n memoize? : boolean,\n promisify? : boolean,\n queryParam? : boolean | string | (T) => (string | ZalgoPromise),\n queryValue? : (T) => (ZalgoPromise | mixed),\n sendToChild? : boolean,\n allowDelegate? : boolean,\n validate? : (T, PropsType & P) => void,\n decorate? : (T, PropsType & P) => (void | ZalgoPromise | T),\n def? : (P) => ?T,\n sameDomain? : boolean,\n serialization? : 'json' | 'dotify',\n childDecorate? : (T) => ?T,\n denodeify? : boolean\n};\n\nexport type BooleanPropDefinitionType = PropDefinitionType;\nexport type StringPropDefinitionType = PropDefinitionType;\nexport type NumberPropDefinitionType = PropDefinitionType;\nexport type FunctionPropDefinitionType = PropDefinitionType;\nexport type ObjectPropDefinitionType = PropDefinitionType;\n\nexport type MixedPropDefinitionType

= BooleanPropDefinitionType<*, P> | StringPropDefinitionType<*, P> | NumberPropDefinitionType<*, P> | FunctionPropDefinitionType<*, P> | ObjectPropDefinitionType<*, P>;\n\nexport type UserPropsDefinitionType

= {\n [string] : MixedPropDefinitionType

\n};\n\nexport type EventHandlerType = (T) => void | ZalgoPromise;\n\ntype envPropType = string;\ntype uidPropType = string;\ntype urlPropType = string;\ntype versionPropType = string;\ntype timeoutPropType = number;\ntype logLevelPropType = string;\ntype dimensionsPropType = DimensionsType;\ntype winPropType = SameDomainWindowType;\n\ntype onDisplayPropType = EventHandlerType;\ntype onEnterPropType = EventHandlerType;\ntype onRenderPropType = EventHandlerType;\ntype onClosePropType = EventHandlerType;\ntype onResizePropType = EventHandlerType;\ntype onTimeoutPropType = EventHandlerType;\ntype onErrorPropType = EventHandlerType;\n\nexport type BuiltInPropsType = {\n env : envPropType,\n uid : uidPropType,\n url? : urlPropType,\n version? : versionPropType,\n timeout? : timeoutPropType,\n logLevel : logLevelPropType,\n dimensions? : dimensionsPropType,\n win? : winPropType,\n\n onDisplay : onDisplayPropType,\n onEnter : onEnterPropType,\n onRender : onRenderPropType,\n onClose : onClosePropType,\n onResize : onResizePropType,\n onTimeout : onTimeoutPropType,\n onError? : onErrorPropType\n};\n\nexport type PropsType = {\n env? : envPropType,\n uid? : uidPropType,\n url? : urlPropType,\n version? : versionPropType,\n timeout? : timeoutPropType,\n logLevel? : logLevelPropType,\n dimensions? : dimensionsPropType,\n win? : winPropType,\n\n onDisplay? : onDisplayPropType,\n onEnter? : onEnterPropType,\n onRender? : onRenderPropType,\n onClose? : onClosePropType,\n onResize? : onResizePropType,\n onTimeout? : onTimeoutPropType,\n onError? : onErrorPropType\n};\n\nexport type BuiltInPropsDefinitionType

= {\n env : StringPropDefinitionType,\n uid : StringPropDefinitionType,\n url : StringPropDefinitionType,\n version : StringPropDefinitionType,\n timeout : NumberPropDefinitionType,\n logLevel : StringPropDefinitionType,\n dimensions : ObjectPropDefinitionType,\n win : ObjectPropDefinitionType,\n\n onDisplay : FunctionPropDefinitionType,\n onEnter : FunctionPropDefinitionType,\n onRender : FunctionPropDefinitionType,\n onClose : FunctionPropDefinitionType,\n onResize : FunctionPropDefinitionType,\n onTimeout : FunctionPropDefinitionType,\n onError : FunctionPropDefinitionType\n};\n\n/* Internal Props\n --------------\n\n We define and use certain props by default, for configuration and events that are used at the framework level.\n These follow the same format as regular props, and are classed as reserved words that may not be overriden by users.\n*/\n\nexport function getInternalProps

() : BuiltInPropsDefinitionType

{\n return {\n\n // The desired env in which the component is being rendered. Used to determine the correct url\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n def() : string {\n return this.defaultEnv;\n }\n },\n\n uid: {\n type: 'string',\n def() : string {\n return uniqueID();\n },\n queryParam: true\n },\n\n logLevel: {\n type: 'string',\n required: false,\n queryParam: true,\n def() : string {\n return this.defaultLogLevel;\n }\n },\n\n // A custom url to use to render the component\n\n url: {\n type: 'string',\n required: false,\n promise: true,\n sendToChild: false\n },\n\n win: {\n type: 'object',\n required: false,\n sendToChild: false\n },\n\n dimensions: {\n type: 'object',\n required: false\n },\n\n version: {\n type: 'string',\n required: false,\n queryParam: true,\n def() : string {\n return this.version;\n }\n },\n\n // A millisecond timeout before onTimeout is called\n\n timeout: {\n type: 'number',\n required: false,\n sendToChild: false\n },\n\n onDisplay: {\n type: 'function',\n required: false,\n noop: true,\n promisify: true,\n memoize: true,\n sendToChild: false\n },\n\n onEnter: {\n type: 'function',\n required: false,\n noop: true,\n promisify: true,\n sendToChild: false\n },\n\n // When we get an INIT message from the child\n\n onRender: {\n type: 'function',\n required: false,\n noop: true,\n promisify: true,\n sendToChild: false\n },\n\n // When the user closes the component.\n\n onClose: {\n type: 'function',\n required: false,\n noop: true,\n once: true,\n promisify: true,\n sendToChild: false\n },\n\n onResize: {\n type: 'function',\n required: false,\n noop: true,\n sendToChild: false\n },\n\n // When we time-out before getting an INIT message from the child. Defaults to onError if no handler passed.\n\n onTimeout: {\n type: 'function',\n required: false,\n memoize: true,\n promisify: true,\n sendToChild: false,\n def() : (() => void) {\n return function onTimeout(err : mixed) : void {\n if (this.props.onError) {\n return this.props.onError(err);\n }\n throw err;\n };\n }\n },\n\n // When the component experiences an error\n\n onError: {\n type: 'function',\n required: false,\n promisify: true,\n sendToChild: true,\n once: true,\n def() : (() => void) {\n return function onError(err : mixed) {\n setTimeout(() => {\n throw err;\n });\n };\n }\n }\n };\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { on, send } from 'post-robot/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getDomain, getDomainFromUrl, matchDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { BaseComponent } from '../base';\nimport { ChildComponent } from '../child';\nimport { ParentComponent, type RenderOptionsType } from '../parent';\nimport { DelegateComponent, type DelegateOptionsType } from '../delegate';\nimport { isZoidComponentWindow, getComponentMeta } from '../window';\nimport { CONTEXT_TYPES, POST_MESSAGE, WILDCARD } from '../../constants';\nimport { angular, angular2, glimmer, react, vue, script } from '../../drivers/index';\nimport { info, error, warn, setLogLevel, memoize } from '../../lib';\nimport type { EnvStringRegExp, CssDimensionsType, StringMatcherType, ElementRefType, EnvString } from '../../types';\n\nimport { validate } from './validate';\nimport { defaultContainerTemplate, defaultPrerenderTemplate } from './templates';\nimport { getInternalProps, type UserPropsDefinitionType, type BuiltInPropsDefinitionType, type PropsType, type BuiltInPropsType, type MixedPropDefinitionType } from './props';\n\nconst drivers = { angular, angular2, glimmer, react, vue, script };\n\n/* Component\n ---------\n\n This is the spec for the component. The idea is, when I call zoid.create(), it will create a new instance\n of Component with the blueprint needed to set up ParentComponents and ChildComponents.\n\n This is the one portion of code which is required by -- and shared to -- both the parent and child windows, and\n contains all of the configuration needed for them to set themselves up.\n*/\n\nexport type ComponentOptionsType

= {\n\n tag : string,\n\n url? : EnvString,\n buildUrl? : (BuiltInPropsType & P) => string | ZalgoPromise,\n\n domain? : EnvStringRegExp,\n bridgeUrl? : EnvString,\n bridgeDomain? : EnvString,\n\n props? : UserPropsDefinitionType

,\n\n dimensions? : CssDimensionsType,\n scrolling? : boolean,\n autoResize? : boolean | { width? : boolean, height? : boolean, element? : string },\n listenForResize? : boolean,\n\n defaultLogLevel? : string,\n allowedParentDomains? : StringMatcherType,\n\n version? : string,\n defaultEnv? : string,\n\n contexts? : { iframe? : boolean, popup? : boolean },\n defaultContext? : string,\n\n containerTemplate? : (RenderOptionsType) => HTMLElement,\n prerenderTemplate? : (RenderOptionsType) => HTMLElement,\n\n validate? : (Component

, UserPropsDefinitionType

) => void,\n\n unsafeRenderTo? : boolean\n};\n\nexport type ComponentDriverType = {\n global : () => ?T,\n register : (Component

, T) => mixed\n};\n\nexport class Component

extends BaseComponent

{\n\n name : string\n looseProps : boolean\n\n tag : string\n url : EnvString\n\n domain : EnvStringRegExp\n bridgeUrl : EnvString\n bridgeDomain : EnvString\n\n props : UserPropsDefinitionType

\n builtinProps : BuiltInPropsDefinitionType

\n\n dimensions : CssDimensionsType\n scrolling : boolean\n autoResize : ?(boolean | { width? : boolean, height? : boolean, element? : string })\n listenForResize : ?boolean\n\n defaultLogLevel : string\n allowedParentDomains : StringMatcherType\n\n version : string\n defaultEnv : string\n buildUrl : (BuiltInPropsType & P) => string | ZalgoPromise\n\n contexts : { iframe? : boolean, popup? : boolean }\n defaultContext : string\n\n containerTemplate : (RenderOptionsType) => HTMLElement\n prerenderTemplate : (RenderOptionsType) => HTMLElement\n\n validate : (Component

, (PropsType & P)) => void\n\n unsafeRenderTo : ?boolean\n\n driverCache : { [string] : mixed }\n\n xchild : ?ChildComponent

\n xprops : ?P\n\n constructor(options : ComponentOptionsType

) {\n super();\n validate(options);\n\n // The tag name of the component. Used by some drivers (e.g. angular) to turn the component into an html element,\n // e.g. \n\n this.addProp(options, 'tag');\n\n this.addProp(options, 'defaultLogLevel', 'info');\n\n this.addProp(options, 'allowedParentDomains', WILDCARD);\n\n // initially set log level to default log level configured when creating component\n setLogLevel(this.defaultLogLevel);\n\n if (Component.components[this.tag]) {\n throw new Error(`Can not register multiple components with the same tag`);\n }\n\n // Name of the component, used for logging. Auto-generated from the tag name by default.\n\n this.addProp(options, 'name', this.tag.replace(/-/g, '_'));\n\n // A json based spec describing what kind of props the component accepts. This is used to validate any props before\n // they are passed down to the child.\n\n this.builtinProps = getInternalProps();\n this.props = options.props || {};\n\n if (!options.props) {\n this.looseProps = true;\n }\n\n // The dimensions of the component, e.g. { width: '300px', height: '150px' }\n\n this.addProp(options, 'dimensions');\n this.addProp(options, 'scrolling');\n this.addProp(options, 'listenForResize');\n\n this.addProp(options, 'version', 'latest');\n\n // The default environment we should render to if none is specified in the parent\n\n this.addProp(options, 'defaultEnv');\n\n // A mapping of env->url, used to determine which url to load for which env\n\n this.addProp(options, 'buildUrl');\n\n this.addProp(options, 'url');\n this.addProp(options, 'domain');\n\n this.addProp(options, 'bridgeUrl');\n this.addProp(options, 'bridgeDomain');\n\n this.addProp(options, 'attributes', {});\n\n // A url to use by default to render the component, if not using envs\n\n\n // The allowed contexts. For example { iframe: true, popup: false }\n\n this.addProp(options, 'contexts', { iframe: true, popup: false });\n\n // The default context to render to\n\n this.addProp(options, 'defaultContext');\n\n // Auto Resize option\n\n this.addProp(options, 'autoResize', false);\n\n // Templates and styles for the parent page and the initial rendering of the component\n\n this.addProp(options, 'containerTemplate', defaultContainerTemplate);\n this.addProp(options, 'prerenderTemplate', defaultPrerenderTemplate);\n\n // Validation\n\n this.addProp(options, 'validate');\n\n // Security\n\n this.addProp(options, 'unsafeRenderTo', false);\n\n // A mapping of tag->component so we can reference components by string tag name\n\n Component.components[this.tag] = this;\n\n // Register all of the drivers for instantiating components. The model used is -- there's a standard javascript\n // way of rendering a component, then each other technology (e.g. react) needs to hook into that interface.\n // This makes us a little more pluggable and loosely coupled.\n this.registerDrivers();\n this.registerChild();\n this.listenDelegate();\n }\n\n @memoize\n getPropNames() : Array {\n let props = Object.keys(this.props);\n\n for (let key of Object.keys(this.builtinProps)) {\n if (props.indexOf(key) === -1) {\n props.push(key);\n }\n }\n\n return props;\n }\n\n // $FlowFixMe\n getProp(name : string) : MixedPropDefinitionType

{\n // $FlowFixMe\n return this.props[name] || this.builtinProps[name];\n }\n\n registerDrivers() {\n this.driverCache = {};\n\n for (let driverName of Object.keys(drivers)) {\n if (driverName.indexOf('_') === 0) {\n continue;\n }\n\n let driver = drivers[driverName];\n let glob = driver.global();\n if (glob) {\n this.driver(driverName, glob);\n }\n }\n }\n\n driver(name : string, dep : mixed) : mixed {\n if (!drivers[name]) {\n throw new Error(`Could not find driver for framework: ${ name }`);\n }\n\n if (!this.driverCache[name]) {\n this.driverCache[name] = drivers[name].register(this, dep);\n }\n\n return this.driverCache[name];\n }\n\n registerChild() : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n if (this.isChild()) {\n return new ChildComponent(this);\n }\n });\n }\n\n listenDelegate() {\n on(`${ POST_MESSAGE.ALLOW_DELEGATE }_${ this.name }`, () => {\n return true;\n });\n\n on(`${ POST_MESSAGE.DELEGATE }_${ this.name }`, ({ source, origin, data }) => {\n\n let domain = this.getDomain(null, data.env || this.defaultEnv);\n\n if (!domain) {\n throw new Error(`Could not determine domain to allow remote render`);\n }\n\n if (!matchDomain(domain, origin)) {\n throw new Error(`Can not render from ${ origin } - expected ${ domain.toString() }`);\n }\n\n let delegate = this.delegate(source, data.options);\n\n return {\n overrides: delegate.getOverrides(data.context),\n destroy: () => delegate.destroy()\n };\n });\n }\n\n canRenderTo(win : CrossDomainWindowType) : ZalgoPromise {\n return send(win, `${ POST_MESSAGE.ALLOW_DELEGATE }_${ this.name }`).then(({ data }) => {\n return data;\n }).catch(() => {\n return false;\n });\n }\n\n\n getValidDomain(url : ?string) : ?(string | RegExp) {\n\n if (!url) {\n return;\n }\n\n let domain = getDomainFromUrl(url);\n\n if (typeof this.domain === 'string' && domain === this.domain) {\n return domain;\n }\n\n let domains = this.domain;\n\n if (domains && typeof domains === 'object' && !(domains instanceof RegExp)) {\n for (let env of Object.keys(domains)) {\n\n if (env === 'test') {\n continue;\n }\n\n if (domain === domains[env]) {\n return domain;\n }\n }\n }\n }\n\n\n getDomain(url : ?string, env : string) : ?(string | RegExp) {\n\n let domain = this.getForEnv(this.domain, env);\n\n if (domain) {\n return domain;\n }\n\n domain = this.getValidDomain(url);\n\n if (domain) {\n return domain;\n }\n\n // $FlowFixMe\n let envUrl = this.getForEnv(this.url, env);\n\n if (envUrl) {\n // $FlowFixMe\n return getDomainFromUrl(envUrl);\n }\n\n if (url) {\n return getDomainFromUrl(url);\n }\n }\n\n getBridgeUrl(env : string) : ?string {\n // $FlowFixMe\n return this.getForEnv(this.bridgeUrl, env);\n }\n\n getForEnv(item : (string | RegExp) | { [string] : (string | RegExp) }, env : ?string) : ?(string | RegExp) {\n\n if (!item) {\n return;\n }\n\n if (typeof item === 'string' || item instanceof RegExp) {\n return item;\n }\n\n if (!env) {\n env = this.defaultEnv;\n }\n\n if (!env) {\n return;\n }\n\n if (env && typeof item === 'object' && item[env]) {\n return item[env];\n }\n }\n\n getBridgeDomain(env : string) : ?string {\n\n // $FlowFixMe\n let bridgeDomain = this.getForEnv(this.bridgeDomain, env);\n\n if (bridgeDomain) {\n // $FlowFixMe\n return bridgeDomain;\n }\n\n let bridgeUrl = this.getBridgeUrl(env);\n\n if (bridgeUrl) {\n return getDomainFromUrl(bridgeUrl);\n }\n }\n\n getUrl(env : string, props : BuiltInPropsType & P) : (string | ZalgoPromise) {\n\n // $FlowFixMe\n let url = this.getForEnv(this.url, env);\n\n if (url) {\n // $FlowFixMe\n return url;\n }\n\n if (this.buildUrl) {\n return this.buildUrl(props);\n }\n\n throw new Error(`Unable to get url`);\n }\n\n isZoidComponent() : boolean {\n return isZoidComponentWindow();\n }\n\n isChild() : boolean {\n if (!isZoidComponentWindow()) {\n return false;\n }\n\n const { tag, childDomain } = getComponentMeta();\n\n if (childDomain && childDomain !== getDomain()) {\n return false;\n }\n\n if (tag !== this.tag) {\n return false;\n }\n\n return true;\n }\n\n\n createError(message : string, tag : ?string) : Error {\n return new Error(`[${ tag || this.tag }] ${ message }`);\n }\n\n\n /* Init\n ----\n\n Shortcut to instantiate a component on a parent page, with props\n */\n\n init(props : (PropsType & P), context : ?string, element : ElementRefType) : ParentComponent

{\n return new ParentComponent(this, this.getRenderContext(context, element), { props });\n }\n\n\n delegate(source : CrossDomainWindowType, options : DelegateOptionsType) : DelegateComponent

{\n return new DelegateComponent(this, source, options);\n }\n\n validateRenderContext(context : ?string, element : ?ElementRefType) {\n if (context && !this.contexts[context]) {\n throw new Error(`[${ this.tag }] Can not render to ${ context }`);\n }\n\n if (!element && context === CONTEXT_TYPES.IFRAME) {\n throw new Error(`[${ this.tag }] Context type ${ CONTEXT_TYPES.IFRAME } requires an element selector`);\n }\n }\n\n getDefaultContext() : string {\n if (this.defaultContext) {\n return this.defaultContext;\n } else if (this.contexts[CONTEXT_TYPES.IFRAME]) {\n return CONTEXT_TYPES.IFRAME;\n } else if (this.contexts[CONTEXT_TYPES.POPUP]) {\n return CONTEXT_TYPES.POPUP;\n }\n\n throw new Error(`Can not determine default context`);\n }\n\n getRenderContext(context : ?string, element : ?ElementRefType) : string {\n context = context || this.getDefaultContext();\n this.validateRenderContext(context, element);\n return context;\n }\n\n\n /* Render\n ------\n\n Shortcut to render a parent component\n */\n\n render(props : (PropsType & P), element : ?ElementRefType) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(null, element), { props }).render(element);\n });\n }\n\n renderIframe(props : (PropsType & P), element : ElementRefType) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(CONTEXT_TYPES.IFRAME, element), { props }).render(element);\n });\n }\n\n renderPopup(props : (PropsType & P)) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(CONTEXT_TYPES.POPUP), { props }).render();\n });\n }\n\n renderTo(win : CrossDomainWindowType, props : (PropsType & P), element : ?ElementRefType) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(null, element), { props }).renderTo(win, element);\n });\n }\n\n renderIframeTo(win : CrossDomainWindowType, props : (PropsType & P), element : ElementRefType) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(CONTEXT_TYPES.IFRAME, element), { props }).renderTo(win, element);\n });\n }\n\n renderPopupTo(win : CrossDomainWindowType, props : (PropsType & P)) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(CONTEXT_TYPES.POPUP), { props }).renderTo(win);\n });\n }\n\n prerender(props : (PropsType & P), element : ElementRefType) : { render : ((PropsType & P), ElementRefType) => ZalgoPromise>, renderTo : (CrossDomainWindowType, (PropsType & P), ElementRefType) => ZalgoPromise> } {\n let instance = new ParentComponent(this, this.getRenderContext(null, element), { props });\n instance.prefetch();\n\n return {\n render(innerProps : (PropsType & P), innerElement : ElementRefType) : ZalgoPromise> {\n if (innerProps) {\n instance.updateProps(innerProps);\n }\n\n return instance.render(innerElement);\n },\n\n renderTo(win : CrossDomainWindowType, innerProps : (PropsType & P), innerElement : ElementRefType) : ZalgoPromise> {\n if (innerProps) {\n instance.updateProps(innerProps);\n }\n\n return instance.renderTo(win, innerElement);\n },\n\n get html() : ?ZalgoPromise {\n return instance.html;\n },\n\n set html(value) {\n instance.html = value;\n }\n };\n }\n\n /* Log\n ---\n\n Log an event using the component name\n */\n\n log(event : string, payload : { [ string ] : string } = {}) {\n info(this.name, event, payload);\n }\n\n\n /* Log Warning\n -----------\n\n Log a warning\n */\n\n logWarning(event : string, payload : { [ string ] : string }) {\n warn(this.name, event, payload);\n }\n\n\n /* Log Error\n ---------\n\n Log an error\n */\n\n logError(event : string, payload : { [ string ] : string }) {\n error(this.name, event, payload);\n }\n\n static components : { [string] : Component<*> } = {}\n\n static getByTag(tag : string) : Component {\n return Component.components[tag];\n }\n}\n","/* @flow */\n\nexport * from './component';\nexport * from './parent';\nexport * from './child';\n","/* @flow */\n\nimport { type ZalgoPromise } from 'zalgo-promise/src';\n// eslint-disable-next-line import/no-namespace\nimport * as _postRobot from 'post-robot/src';\n\nimport { Component, type ComponentOptionsType } from './component';\nimport { ParentComponent } from './component/parent';\n// eslint-disable-next-line import/no-namespace\nimport * as _CONSTANTS from './constants';\n\nexport function create

(options : ComponentOptionsType

) : Component

{\n return new Component(options);\n}\n\nexport function getByTag

(tag : string) : Component

{\n return Component.getByTag(tag);\n}\n\nexport { getCurrentScriptDir } from './lib';\n\nexport function destroyAll() : ZalgoPromise {\n return ParentComponent.destroyAll();\n}\nexport let postRobot = _postRobot;\n\nexport * from './error';\n\nexport const CONSTANTS = _CONSTANTS;\n\nexport type ZoidComponent

= Component

;\n","/* @flow */\n\n// eslint-disable-next-line import/no-namespace\nimport * as INTERFACE from './interface';\n\nexport * from './interface';\nexport default INTERFACE;\n","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","/* @flow */\n\nimport { type ZalgoPromise } from 'zalgo-promise/src';\nimport { getParent, isWindowClosed, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONSTANTS } from '../conf';\nimport { noop } from '../lib';\nimport { global } from '../global';\n\n/*\n HERE BE DRAGONS\n\n Warning: this file may look weird. Why save the tunnel window in an Object\n by ID, then look it up later, rather than just using the reference from the closure scope?\n\n The reason is, that ends up meaning the garbage collector can never get its hands\n on a closed window, since our closure has continued access to it -- and post-robot\n has no good way to know whether to clean up the function with the closure scope.\n\n If you're editing this file, be sure to run significant memory / GC tests afterwards.\n*/\n\nglobal.tunnelWindows = global.tunnelWindows || {};\nglobal.tunnelWindowId = 0;\n\nfunction deleteTunnelWindow(id) {\n\n try {\n if (global.tunnelWindows[id]) {\n delete global.tunnelWindows[id].source;\n }\n } catch (err) {\n // pass\n }\n\n delete global.tunnelWindows[id];\n}\n\nfunction cleanTunnelWindows() {\n let tunnelWindows = global.tunnelWindows;\n\n for (let key of Object.keys(tunnelWindows)) {\n let tunnelWindow = tunnelWindows[key];\n\n try {\n noop(tunnelWindow.source);\n } catch (err) {\n deleteTunnelWindow(key);\n continue;\n }\n\n if (isWindowClosed(tunnelWindow.source)) {\n deleteTunnelWindow(key);\n }\n }\n}\n\ntype TunnelWindowDataType = {\n name : string,\n source : CrossDomainWindowType,\n canary : () => void,\n sendMessage : (message : string) => void\n};\n\nfunction addTunnelWindow({ name, source, canary, sendMessage } : TunnelWindowDataType) : number {\n cleanTunnelWindows();\n global.tunnelWindowId += 1;\n global.tunnelWindows[global.tunnelWindowId] = { name, source, canary, sendMessage };\n return global.tunnelWindowId;\n}\n\nfunction getTunnelWindow(id : number) : TunnelWindowDataType {\n return global.tunnelWindows[id];\n}\n\nglobal.openTunnelToParent = function openTunnelToParent({ name, source, canary, sendMessage } : TunnelWindowDataType) : ZalgoPromise<{ source : CrossDomainWindowType, origin : string, data : Object }> {\n\n let parentWindow = getParent(window);\n\n if (!parentWindow) {\n throw new Error(`No parent window found to open tunnel to`);\n }\n\n let id = addTunnelWindow({ name, source, canary, sendMessage });\n\n return global.send(parentWindow, CONSTANTS.POST_MESSAGE_NAMES.OPEN_TUNNEL, {\n\n name,\n\n sendMessage() {\n\n let tunnelWindow = getTunnelWindow(id);\n\n try {\n // IE gets antsy if you try to even reference a closed window\n noop(tunnelWindow && tunnelWindow.source);\n } catch (err) {\n deleteTunnelWindow(id);\n return;\n }\n\n if (!tunnelWindow || !tunnelWindow.source || isWindowClosed(tunnelWindow.source)) {\n return;\n }\n\n try {\n tunnelWindow.canary();\n } catch (err) {\n return;\n }\n\n tunnelWindow.sendMessage.apply(this, arguments);\n }\n\n }, { domain: CONSTANTS.WILDCARD });\n};\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getDomain, isSameDomain, isOpener, isSameTopWindow, matchDomain, getUserAgent, getDomainFromUrl, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONFIG, CONSTANTS } from '../conf';\nimport { global } from '../global';\n\nexport function needsBridgeForBrowser() : boolean {\n\n if (getUserAgent(window).match(/MSIE|trident|edge\\/12|edge\\/13/i)) {\n return true;\n }\n\n if (!CONFIG.ALLOW_POSTMESSAGE_POPUP) {\n return true;\n }\n\n return false;\n}\n\nexport function needsBridgeForWin(win : CrossDomainWindowType) : boolean {\n\n if (!isSameTopWindow(window, win)) {\n return true;\n }\n\n return false;\n}\n\nexport function needsBridgeForDomain(domain : ?string, win : ?CrossDomainWindowType) : boolean {\n\n if (domain) {\n if (getDomain() !== getDomainFromUrl(domain)) {\n return true;\n }\n } else if (win) {\n if (!isSameDomain(win)) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function needsBridge({ win, domain } : { win? : CrossDomainWindowType, domain? : string }) : boolean {\n\n if (!needsBridgeForBrowser()) {\n return false;\n }\n\n if (domain && !needsBridgeForDomain(domain, win)) {\n return false;\n }\n\n if (win && !needsBridgeForWin(win)) {\n return false;\n }\n\n return true;\n}\n\nexport function getBridgeName(domain : string) : string {\n\n domain = domain || getDomainFromUrl(domain);\n\n let sanitizedDomain = domain.replace(/[^a-zA-Z0-9]+/g, '_');\n\n let id = `${ CONSTANTS.BRIDGE_NAME_PREFIX }_${ sanitizedDomain }`;\n\n return id;\n}\n\nexport function isBridge() : boolean {\n return Boolean(window.name && window.name === getBridgeName(getDomain()));\n}\n\nexport let documentBodyReady = new ZalgoPromise(resolve => {\n\n if (window.document && window.document.body) {\n return resolve(window.document.body);\n }\n\n let interval = setInterval(() => {\n if (window.document && window.document.body) {\n clearInterval(interval);\n return resolve(window.document.body);\n }\n }, 10);\n});\n\nglobal.remoteWindows = global.remoteWindows || new WeakMap();\n\nexport function registerRemoteWindow(win : CrossDomainWindowType) {\n global.remoteWindows.set(win, { sendMessagePromise: new ZalgoPromise() });\n}\n\nexport function findRemoteWindow(win : CrossDomainWindowType) : { sendMessagePromise : ZalgoPromise<(remoteWin : CrossDomainWindowType, message : string, remoteDomain : string) => void> } {\n return global.remoteWindows.get(win);\n}\n\nexport function registerRemoteSendMessage(win : CrossDomainWindowType, domain : string, sendMessage : (message : string) => void) {\n\n let remoteWindow = findRemoteWindow(win);\n\n if (!remoteWindow) {\n throw new Error(`Window not found to register sendMessage to`);\n }\n\n let sendMessageWrapper = (remoteWin : CrossDomainWindowType, message : string, remoteDomain : string) => {\n\n if (remoteWin !== win) {\n throw new Error(`Remote window does not match window`);\n }\n\n if (!matchDomain(remoteDomain, domain)) {\n throw new Error(`Remote domain ${ remoteDomain } does not match domain ${ domain }`);\n }\n\n sendMessage(message);\n };\n\n remoteWindow.sendMessagePromise.resolve(sendMessageWrapper);\n remoteWindow.sendMessagePromise = ZalgoPromise.resolve(sendMessageWrapper);\n}\n\nexport function rejectRemoteSendMessage(win : CrossDomainWindowType, err : Error) {\n\n let remoteWindow = findRemoteWindow(win);\n\n if (!remoteWindow) {\n throw new Error(`Window not found on which to reject sendMessage`);\n }\n\n remoteWindow.sendMessagePromise.asyncReject(err);\n}\n\nexport function sendBridgeMessage(win : CrossDomainWindowType, message : string, domain : string) : ZalgoPromise {\n\n let messagingChild = isOpener(window, win);\n let messagingParent = isOpener(win, window);\n\n if (!messagingChild && !messagingParent) {\n throw new Error(`Can only send messages to and from parent and popup windows`);\n }\n\n let remoteWindow = findRemoteWindow(win);\n\n if (!remoteWindow) {\n throw new Error(`Window not found to send message to`);\n }\n\n return remoteWindow.sendMessagePromise.then(sendMessage => {\n return sendMessage(win, message, domain);\n });\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { isSameDomain, getOpener, getFrames, getDomain, getFrameByName, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONSTANTS } from '../conf';\nimport { weakMapMemoize, noop } from '../lib';\nimport { global } from '../global';\n\nimport { needsBridge, registerRemoteWindow, rejectRemoteSendMessage, registerRemoteSendMessage, getBridgeName } from './common';\n\nlet awaitRemoteBridgeForWindow = weakMapMemoize((win : CrossDomainWindowType) : ZalgoPromise => {\n return ZalgoPromise.try(() => {\n for (let frame of getFrames(win)) {\n try {\n // $FlowFixMe\n if (frame && frame !== window && isSameDomain(frame) && frame[CONSTANTS.WINDOW_PROPS.POSTROBOT]) {\n return frame;\n }\n\n } catch (err) {\n continue;\n }\n }\n\n try {\n let frame = getFrameByName(win, getBridgeName(getDomain()));\n\n if (!frame) {\n return;\n }\n\n // $FlowFixMe\n if (isSameDomain(frame) && frame[CONSTANTS.WINDOW_PROPS.POSTROBOT]) {\n return frame;\n }\n\n return new ZalgoPromise(resolve => {\n\n let interval;\n let timeout;\n\n interval = setInterval(() => {\n // $FlowFixMe\n if (frame && isSameDomain(frame) && frame[CONSTANTS.WINDOW_PROPS.POSTROBOT]) {\n clearInterval(interval);\n clearTimeout(timeout);\n return resolve(frame);\n }\n }, 100);\n\n timeout = setTimeout(() => {\n clearInterval(interval);\n return resolve();\n }, 2000);\n });\n\n } catch (err) {\n // pass\n }\n });\n});\n\nexport function openTunnelToOpener() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n const opener = getOpener(window);\n\n if (!opener) {\n return;\n }\n\n if (!needsBridge({ win: opener })) {\n return;\n }\n\n registerRemoteWindow(opener);\n\n return awaitRemoteBridgeForWindow(opener).then(bridge => {\n\n if (!bridge) {\n return rejectRemoteSendMessage(opener, new Error(`Can not register with opener: no bridge found in opener`));\n }\n\n if (!window.name) {\n return rejectRemoteSendMessage(opener, new Error(`Can not register with opener: window does not have a name`));\n }\n\n return bridge[CONSTANTS.WINDOW_PROPS.POSTROBOT].openTunnelToParent({\n\n name: window.name,\n\n source: window,\n\n canary() {\n // pass\n },\n\n sendMessage(message) {\n\n try {\n noop(window);\n } catch (err) {\n return;\n }\n\n if (!window || window.closed) {\n return;\n }\n\n try {\n global.receiveMessage({\n data: message,\n origin: this.origin,\n source: this.source\n });\n } catch (err) {\n ZalgoPromise.reject(err);\n }\n }\n\n }).then(({ source, origin, data }) => {\n\n if (source !== opener) {\n throw new Error(`Source does not match opener`);\n }\n\n registerRemoteSendMessage(source, origin, data.sendMessage);\n\n }).catch(err => {\n\n rejectRemoteSendMessage(opener, err);\n throw err;\n });\n });\n });\n}\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getDomain, getFrameByName, isWindowClosed, getDomainFromUrl, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONFIG, CONSTANTS } from '../conf';\nimport { onChildWindowReady } from '../lib';\nimport { global } from '../global';\n\nimport { getBridgeName, documentBodyReady, registerRemoteSendMessage, registerRemoteWindow } from './common';\n\nglobal.bridges = global.bridges || {};\nglobal.bridgeFrames = global.bridgeFrames || {};\n\nglobal.popupWindowsByWin = global.popupWindowsByWin || new WeakMap();\nglobal.popupWindowsByName = global.popupWindowsByName || {};\n\nfunction listenForRegister(source, domain) {\n global.on(CONSTANTS.POST_MESSAGE_NAMES.OPEN_TUNNEL, { window: source, domain }, ({ origin, data }) => {\n\n if (origin !== domain) {\n throw new Error(`Domain ${ domain } does not match origin ${ origin }`);\n }\n\n if (!data.name) {\n throw new Error(`Register window expected to be passed window name`);\n }\n\n if (!data.sendMessage) {\n throw new Error(`Register window expected to be passed sendMessage method`);\n }\n\n if (!global.popupWindowsByName[data.name]) {\n throw new Error(`Window with name ${ data.name } does not exist, or was not opened by this window`);\n }\n\n if (!global.popupWindowsByName[data.name].domain) {\n throw new Error(`We do not have a registered domain for window ${ data.name }`);\n }\n\n if (global.popupWindowsByName[data.name].domain !== origin) {\n throw new Error(`Message origin ${ origin } does not matched registered window origin ${ global.popupWindowsByName[data.name].domain }`);\n }\n\n registerRemoteSendMessage(global.popupWindowsByName[data.name].win, domain, data.sendMessage);\n\n return {\n sendMessage(message) {\n\n if (!window || window.closed) {\n return;\n }\n\n let winDetails = global.popupWindowsByName[data.name];\n\n if (!winDetails) {\n return;\n }\n\n try {\n global.receiveMessage({\n data: message,\n origin: winDetails.domain,\n source: winDetails.win\n });\n } catch (err) {\n ZalgoPromise.reject(err);\n }\n }\n };\n });\n}\n\nfunction openBridgeFrame(name : string, url : string) : HTMLIFrameElement {\n\n let iframe = document.createElement(`iframe`);\n\n iframe.setAttribute(`name`, name);\n iframe.setAttribute(`id`, name);\n\n iframe.setAttribute(`style`, `display: none; margin: 0; padding: 0; border: 0px none; overflow: hidden;`);\n iframe.setAttribute(`frameborder`, `0`);\n iframe.setAttribute(`border`, `0`);\n iframe.setAttribute(`scrolling`, `no`);\n iframe.setAttribute(`allowTransparency`, `true`);\n\n iframe.setAttribute(`tabindex`, `-1`);\n iframe.setAttribute(`hidden`, `true`);\n iframe.setAttribute(`title`, ``);\n iframe.setAttribute(`role`, `presentation`);\n\n iframe.src = url;\n\n return iframe;\n}\n\nexport function hasBridge(url : string, domain : string) : boolean {\n domain = domain || getDomainFromUrl(url);\n return Boolean(global.bridges[domain]);\n}\n\nexport function openBridge(url : string, domain : string) : ZalgoPromise {\n\n domain = domain || getDomainFromUrl(url);\n\n if (global.bridges[domain]) {\n return global.bridges[domain];\n }\n\n global.bridges[domain] = ZalgoPromise.try(() => {\n\n if (getDomain() === domain) {\n throw new Error(`Can not open bridge on the same domain as current domain: ${ domain }`);\n }\n\n let name = getBridgeName(domain);\n let frame = getFrameByName(window, name);\n\n if (frame) {\n throw new Error(`Frame with name ${ name } already exists on page`);\n }\n\n let iframe = openBridgeFrame(name, url);\n global.bridgeFrames[domain] = iframe;\n\n return documentBodyReady.then(body => {\n\n body.appendChild(iframe);\n\n let bridge = iframe.contentWindow;\n\n listenForRegister(bridge, domain);\n\n return new ZalgoPromise((resolve, reject) => {\n\n iframe.onload = resolve;\n iframe.onerror = reject;\n\n }).then(() => {\n\n return onChildWindowReady(bridge, CONFIG.BRIDGE_TIMEOUT, `Bridge ${ url }`);\n\n }).then(() => {\n\n return bridge;\n });\n });\n });\n\n return global.bridges[domain];\n}\n\nlet windowOpen = window.open;\n\nwindow.open = function windowOpenWrapper(url : string, name : string, options : string, last : mixed) : mixed {\n\n let domain = url;\n\n if (url && url.indexOf(CONSTANTS.MOCK_PROTOCOL) === 0) {\n [ domain, url ] = url.split('|');\n }\n\n if (domain) {\n domain = getDomainFromUrl(domain);\n }\n\n let win = windowOpen.call(this, url, name, options, last);\n\n if (!win) {\n return win;\n }\n\n if (url) {\n registerRemoteWindow(win);\n }\n\n for (let winName of Object.keys(global.popupWindowsByName)) {\n if (isWindowClosed(global.popupWindowsByName[winName].win)) {\n delete global.popupWindowsByName[winName];\n }\n }\n\n if (name && win) {\n let winOptions = global.popupWindowsByWin.get(win) ||\n global.popupWindowsByName[name] || {};\n\n winOptions.name = winOptions.name || name;\n winOptions.win = winOptions.win || win;\n winOptions.domain = winOptions.domain || domain;\n\n global.popupWindowsByWin.set(win, winOptions);\n global.popupWindowsByName[name] = winOptions;\n }\n\n return win;\n};\n\nexport function linkUrl(win : CrossDomainWindowType, url : string) {\n\n let winOptions = global.popupWindowsByWin.get(win);\n\n if (winOptions) {\n winOptions.domain = getDomainFromUrl(url);\n registerRemoteWindow(win);\n }\n}\n\nexport function destroyBridges() {\n for (let domain of Object.keys(global.bridgeFrames)) {\n let frame = global.bridgeFrames[domain];\n if (frame.parentNode) {\n frame.parentNode.removeChild(frame);\n }\n }\n global.bridgeFrames = {};\n global.bridges = {};\n}\n","/* @flow */\n\n// eslint-disable-next-line import/no-unassigned-import\nimport './bridge';\n\nexport * from './child';\nexport * from './common';\nexport * from './parent';\n","/* @flow */\n\nexport function PopupOpenError(message : string) {\n this.message = message;\n}\n\nPopupOpenError.prototype = Object.create(Error.prototype);\n\nexport function IntegrationError(message : string) {\n this.message = message;\n}\n\nIntegrationError.prototype = Object.create(Error.prototype);\n\nexport function RenderError(message : string) {\n this.message = message;\n}\n\nRenderError.prototype = Object.create(Error.prototype);\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nexport type Braintree = {|\n client : {\n create : Function\n },\n paypalCheckout : {\n create : Function\n }\n|};\n\nexport type BraintreePayPalClient = {|\n createPayment : Function,\n tokenizePayment : Function\n|};\n\nexport function awaitBraintreeClient(braintree : Braintree, auth : string | ZalgoPromise) : ZalgoPromise {\n return ZalgoPromise.resolve(auth).then(authorization => {\n return braintree.client.create({ authorization });\n }).then(client => {\n return braintree.paypalCheckout.create({ client });\n });\n}\n\nconst SUPPORTED_REST_FIELDS = {\n intent: 1,\n transactions: [\n {\n amount: {\n total: 1,\n currency: 1\n }\n }\n ],\n payer: {\n external_selected_funding_instrument_type: 1,\n shipping_address: {\n line1: 1,\n line2: 1,\n city: 1,\n state: 1,\n postal_code: 1,\n country_code: 1,\n phone: 1,\n recipient_name: 1\n }\n },\n application_context: {\n brand_name: 1,\n shipping_preference: 1,\n landing_page: 1\n }\n};\n\nfunction validate(obj, supported, name) {\n\n const supportedKeys = Object.keys(supported);\n\n for (const key of Object.keys(obj)) {\n\n if (supportedKeys.indexOf(key) === -1) {\n throw new Error(`Unsupported REST key for Braintree: ${ name }.${ key }`);\n }\n\n if (typeof obj[key] === 'object') {\n validate(obj[key], supported[key], `${ name }.${ key }`);\n }\n }\n}\n\nexport function mapPaymentToBraintree(payment : Object) : Object {\n validate(payment, SUPPORTED_REST_FIELDS, 'payment');\n\n const btPayment = {};\n\n btPayment.intent = payment.intent || 'sale';\n btPayment.flow = 'checkout';\n btPayment.amount = payment.transactions[0].amount.total;\n btPayment.currency = payment.transactions[0].amount.currency;\n\n if (payment.payer) {\n if (payment.payer.external_selected_funding_instrument_type === 'CREDIT') {\n btPayment.offerCredit = true;\n }\n\n if (payment.payer.shipping_address) {\n btPayment.shippingAddressOverride = {\n line1: payment.payer.shipping_address.line1,\n line2: payment.payer.shipping_address.line2,\n city: payment.payer.shipping_address.city,\n state: payment.payer.shipping_address.state,\n postalCode: payment.payer.shipping_address.postal_code,\n countryCode: payment.payer.shipping_address.country_code,\n phone: payment.payer.shipping_address.phone,\n recipientName: payment.payer.shipping_address.recipient_name\n };\n }\n }\n\n if (payment.application_context) {\n btPayment.displayName = payment.application_context.brand_name;\n btPayment.landingPageType = payment.application_context.landing_page;\n\n if (payment.application_context) {\n if (payment.application_context.shipping_preference === 'NO_SHIPPING') {\n btPayment.enableShippingAddress = false;\n } else if (payment.application_context.shipping_preference === 'GET_FROM_FILE') {\n btPayment.enableShippingAddress = true;\n btPayment.shippingAddressEditable = true;\n } else if (payment.application_context.shipping_preference === 'SET_PROVIDED_ADDRESS') {\n btPayment.enableShippingAddress = true;\n btPayment.shippingAddressEditable = false;\n }\n }\n }\n\n return btPayment;\n}\n","/* @flow */\n\nexport * from './checkout';\nexport * from './braintree';\n// export * from './popupBridge';\n","/* @flow */\n\nexport * from './script';\nexport * from './react';\nexport * from './vue';\nexport * from './angular';\nexport * from './ember';\nexport * from './glimmer';\nexport * from './angular2';\n","/* @flow */\n/** @jsx jsxDom */\n\nconst checkoutComponentStyle = `\n\n body {\n width: 100%;\n height: 100%;\n overflow: hidden;\n position: fixed;\n top: 0;\n left: 0;\n margin: 0;\n }\n\n .spinner {\n height: 100%;\n width: 100%;\n position: absolute;\n z-index: 10\n }\n\n .spinner .spinWrap {\n width: 200px;\n height: 100px;\n position: absolute;\n top: 50%;\n left: 50%;\n margin-left: -100px;\n margin-top: -50px\n }\n\n .spinner .loader,\n .spinner .spinnerImage {\n height: 100px;\n width: 100px;\n position: absolute;\n top: 0;\n left: 50%;\n opacity: 1;\n filter: alpha(opacity=100)\n }\n\n .spinner .spinnerImage {\n margin: 28px 0 0 -25px;\n background: url(https://www.paypalobjects.com/images/checkout/hermes/icon_ot_spin_lock_skinny.png) no-repeat\n }\n\n .spinner .loader {\n margin: 0 0 0 -55px;\n background-color: transparent;\n -webkit-animation: rotation .7s infinite linear;\n -moz-animation: rotation .7s infinite linear;\n -o-animation: rotation .7s infinite linear;\n animation: rotation .7s infinite linear;\n border-left: 5px solid #cbcbca;\n border-right: 5px solid #cbcbca;\n border-bottom: 5px solid #cbcbca;\n border-top: 5px solid #2380be;\n border-radius: 100%\n }\n\n @-webkit-keyframes rotation {\n from {\n -webkit-transform: rotate(0deg)\n }\n to {\n -webkit-transform: rotate(359deg)\n }\n }\n @-moz-keyframes rotation {\n from {\n -moz-transform: rotate(0deg)\n }\n to {\n -moz-transform: rotate(359deg)\n }\n }\n @-o-keyframes rotation {\n from {\n -o-transform: rotate(0deg)\n }\n to {\n -o-transform: rotate(359deg)\n }\n }\n @keyframes rotation {\n from {\n transform: rotate(0deg)\n }\n to {\n transform: rotate(359deg)\n }\n }\n`;\n\nexport function componentTemplate({ jsxDom } : { jsxDom : Function }) : HTMLElement {\n\n return (\n \n \n PayPal\n \n \n \n

\n \n\n
\n

\n

\n

\n
\n \n \n );\n}\n","/* @flow */\n\nimport { CHECKOUT_OVERLAY_COLOR } from '../../../constants';\n\nexport function getContainerStyle({ id, tag, CONTEXT, CLASS, ANIMATION } : { id : string, tag : string, CONTEXT : Object, CLASS : Object, ANIMATION : Object }) : string {\n return `\n #${ id } {\n position: absolute;\n z-index: 2147483647;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n\n -webkit-transform: translate3d(0, 0, 0);\n -moz-transform: translate3d(0, 0, 0);\n -ms-transform: translate3d(0, 0, 0);\n -o-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.BLACK } {\n background-color: black;\n background-color: rgba(0, 0, 0, 0.75);\n\n background: -webkit-radial-gradient(50% 50%, ellipse closest-corner, rgba(0,0,0,1) 1%, rgba(0,0,0,0.75) 100%);\n background: -moz-radial-gradient(50% 50%, ellipse closest-corner, rgba(0,0,0,1) 1%, rgba(0,0,0,0.75) 100%);\n background: -ms-radial-gradient(50% 50%, ellipse closest-corner, rgba(0,0,0,1) 1%, rgba(0,0,0,0.75) 100%);\n background: radial-gradient(50% 50%, ellipse closest-corner, rgba(0,0,0,1) 1%, rgba(0,0,0,0.75) 100%);\n\n color: #fff;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.WHITE } {\n background-color: white;\n background-color: rgba(255, 255, 255, 0.4);\n\n background: -webkit-radial-gradient(50% 50%, ellipse closest-corner, rgba(255, 255, 255,1) 1%, rgba(255, 255, 255,0.4) 100%);\n background: -moz-radial-gradient(50% 50%, ellipse closest-corner, rgba(255, 255, 255,1) 1%, rgba(255, 255, 255,0.4) 100%);\n background: -ms-radial-gradient(50% 50%, ellipse closest-corner, rgba(255, 255, 255,1) 1%, rgba(255, 255, 255,0.4) 100%);\n background: radial-gradient(50% 50%, ellipse closest-corner, rgba(255, 255, 255,1) 1%, rgba(255, 255, 255,0.4) 100%);\n\n color: #333;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.BLACK } a {\n color: #fff;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.WHITE } a {\n color: #333;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.BLACK } .paypal-checkout-close:before,\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.BLACK } .paypal-checkout-close:after {\n background-color: #fff;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.WHITE } .paypal-checkout-close:before,\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.WHITE } .paypal-checkout-close:after {\n background-color: #111;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.POPUP } {\n cursor: pointer;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.POPUP } {\n cursor: pointer;\n }\n\n #${ id } a {\n text-decoration: none;\n }\n\n #${ id } .paypal-checkout-modal {\n font-family: \"HelveticaNeue\", \"HelveticaNeue-Light\", \"Helvetica Neue Light\", helvetica, arial, sans-serif;\n font-size: 14px;\n text-align: center;\n\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n -ms-box-sizing: border-box;\n box-sizing: border-box;\n max-width: 350px;\n top: 50%;\n left: 50%;\n position: absolute;\n transform: translateX(-50%) translateY(-50%);\n -webkit-transform: translateX(-50%) translateY(-50%);\n -moz-transform: translateX(-50%) translateY(-50%);\n -o-transform: translateX(-50%) translateY(-50%);\n -ms-transform: translateX(-50%) translateY(-50%);\n cursor: pointer;\n text-align: center;\n }\n\n #${ id }.${ tag }-loading .paypal-checkout-message, #${ id }.${ tag }-loading .paypal-checkout-continue {\n display: none;\n }\n\n .paypal-checkout-loader {\n display: none;\n }\n\n #${ id }.${ tag }-loading .paypal-checkout-loader {\n display: block;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-logo {\n cursor: pointer;\n margin-bottom: 30px;\n display: inline-block;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-logo img {\n height: 36px;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-logo img.paypal-checkout-logo-pp {\n margin-right: 10px;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-message {\n font-size: 15px;\n line-height: 1.5;\n padding: 10px 0;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-message, #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-continue {\n display: none;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-continue {\n font-size: 15px;\n line-height: 1.35;\n padding: 10px 0;\n font-weight: bold;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-continue a {\n border-bottom: 1px solid currentColor;\n }\n\n #${ id } .paypal-checkout-close {\n position: absolute;\n right: 16px;\n top: 16px;\n width: 16px;\n height: 16px;\n opacity: 0.6;\n }\n\n #${ id }.${ tag }-loading .paypal-checkout-close {\n display: none;\n }\n\n #${ id } .paypal-checkout-close:hover {\n opacity: 1;\n }\n\n #${ id } .paypal-checkout-close:before, .paypal-checkout-close:after {\n position: absolute;\n left: 8px;\n content: ' ';\n height: 16px;\n width: 2px;\n }\n\n #${ id } .paypal-checkout-close:before {\n transform: rotate(45deg);\n -webkit-transform: rotate(45deg);\n -moz-transform: rotate(45deg);\n -o-transform: rotate(45deg);\n -ms-transform: rotate(45deg);\n }\n\n #${ id } .paypal-checkout-close:after {\n transform: rotate(-45deg);\n -webkit-transform: rotate(-45deg);\n -moz-transform: rotate(-45deg);\n -o-transform: rotate(-45deg);\n -ms-transform: rotate(-45deg);\n }\n\n #${ id } .paypal-checkout-iframe-container {\n display: none;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container,\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container > .${ CLASS.OUTLET },\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container > .${ CLASS.OUTLET } > iframe {\n max-height: calc(95vh - 60px);\n max-width: 95vw;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container {\n\n display: block;\n\n position: absolute;\n\n top: 50%;\n left: 50%;\n\n min-width: 450px;\n\n transform: translate(-50%, -50%);\n -webkit-transform: translate(-50%, -50%);\n -moz-transform: translate(-50%, -50%);\n -o-transform: translate(-50%, -50%);\n -ms-transform: translate(-50%, -50%);\n\n transform: translate3d(-50%, -50%, 0);\n -webkit-transform: translate3d(-50%, -50%, 0);\n -moz-transform: translate3d(-50%, -50%, 0);\n -o-transform: translate3d(-50%, -50%, 0);\n -ms-transform: translate3d(-50%, -50%, 0);\n\n border-radius: 10px;\n overflow: hidden;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } {\n\n position: relative;\n\n -webkit-transition: all 0.3s ease;\n -moz-transition: all 0.3s ease;\n -ms-transition: all 0.3s ease;\n -o-transition: all 0.3 ease;\n transition: all 0.3s ease;\n\n -webkit-animation-duration: 0.3s;\n animation-duration: 0.3s;\n -webkit-animation-fill-mode: both;\n animation-fill-mode: both;\n\n min-width: 450px;\n max-width: 450px;\n width: 450px;\n height: 535px;\n\n background-color: white;\n\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe {\n position: absolute;\n top: 0;\n left: 0;\n transition: opacity .4s ease-in-out;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe.${ CLASS.COMPONENT_FRAME } {\n z-index: 100;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe.${ CLASS.PRERENDER_FRAME } {\n z-index: 200;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe.${ CLASS.VISIBLE } {\n opacity: 1;\n z-index: 200;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe.${ CLASS.INVISIBLE } {\n opacity: 0;\n z-index: 100;\n }\n\n @media screen and (-ms-high-contrast: active) {\n #${ id } .paypal-checkout-close {\n opacity: 1;\n }\n\n #${ id } .paypal-checkout-close:before , .paypal-checkout-close:after {\n background-color: currentColor;\n }\n }\n\n @media screen and (max-width: 470px) {\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container,\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } {\n min-width: 100%;\n min-width: calc(100% - 20px);\n min-width: -webkit-calc(100% - 20px);\n min-width: -moz-calc(100% - 20px);\n min-width: -o-calc(100% - 20px);\n min-width: -ms-calc(100% - 20px);\n\n max-width: 100%;\n max-width: calc(100% - 20px);\n max-width: -webkit-calc(100% - 20px);\n max-width: -moz-calc(100% - 20px);\n max-width: -o-calc(100% - 20px);\n max-width: -ms-calc(100% - 20px);\n }\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } iframe {\n width: 1px;\n min-width: 100%;\n height: 100%;\n }\n\n @-webkit-keyframes ${ ANIMATION.SHOW_COMPONENT } {\n from {\n opacity: 0;\n transform: scale3d(.3, .3, .3);\n -webkit-transform: scale3d(.3, .3, .3);\n }\n\n to {\n opacity: 1;\n transform: scale3d(1, 1, 1);\n -webkit-transform: scale3d(1, 1, 1);\n }\n }\n\n @keyframes ${ ANIMATION.SHOW_COMPONENT } {\n from {\n opacity: 0;\n transform: scale3d(.3, .3, .3);\n -webkit-transform: scale3d(.3, .3, .3);\n }\n\n to {\n opacity: 1;\n transform: scale3d(1, 1, 1);\n -webkit-transform: scale3d(1, 1, 1);\n }\n }\n\n @-webkit-keyframes ${ ANIMATION.HIDE_COMPONENT } {\n from {\n transform: scale3d(1, 1, 1);\n -webkit-transform: scale3d(1, 1, 1);\n }\n\n to {\n opacity: 0;\n transform: scale3d(.3, .3, .3);\n -webkit-transform: scale3d(.3, .3, .3);\n }\n }\n\n @keyframes ${ ANIMATION.HIDE_COMPONENT } {\n from {\n transform: scale3d(1, 1, 1);\n -webkit-transform: scale3d(1, 1, 1);\n }\n\n to {\n opacity: 0;\n transform: scale3d(.3, .3, .3);\n -webkit-transform: scale3d(.3, .3, .3);\n }\n }\n\n .paypal-spinner {\n height: 30px;\n width: 30px;\n display: inline-block;\n box-sizing: content-box;\n opacity: 1;\n filter: alpha(opacity=100);\n -webkit-animation: rotation .7s infinite linear;\n -moz-animation: rotation .7s infinite linear;\n -o-animation: rotation .7s infinite linear;\n animation: rotation .7s infinite linear;\n border-left: 8px solid rgba(0, 0, 0, .2);\n border-right: 8px solid rgba(0, 0, 0, .2);\n border-bottom: 8px solid rgba(0, 0, 0, .2);\n border-top: 8px solid #fff;\n border-radius: 100%\n }\n\n @-webkit-keyframes rotation {\n from {\n -webkit-transform: rotate(0deg)\n }\n to {\n -webkit-transform: rotate(359deg)\n }\n }\n @-moz-keyframes rotation {\n from {\n -moz-transform: rotate(0deg)\n }\n to {\n -moz-transform: rotate(359deg)\n }\n }\n @-o-keyframes rotation {\n from {\n -o-transform: rotate(0deg)\n }\n to {\n -o-transform: rotate(359deg)\n }\n }\n @keyframes rotation {\n from {\n transform: rotate(0deg)\n }\n to {\n transform: rotate(359deg)\n }\n }\n `;\n}\n","/* @flow */\n\nexport function getSandboxStyle({ id, ANIMATION } : { id : string, ANIMATION : Object }) : string {\n return `\n #${ id }.paypal-checkout-sandbox {\n display: block;\n position: fixed;\n top: 0;\n left: 0;\n\n width: 100%;\n height: 100%;\n width: 100vw;\n height: 100vh;\n max-width: 100%;\n max-height: 100%;\n min-width: 100%;\n min-height: 100%;\n\n z-index: 2147483647;\n\n -webkit-animation-duration: 1s;\n animation-duration: 1s;\n\n animation-fill-mode:forwards;\n animation-iteration-count: 1;\n\n -webkit-animation-fill-mode:forwards;\n -webkit-animation-iteration-count: 1;\n }\n\n #${ id }.paypal-checkout-sandbox .paypal-checkout-sandbox-iframe {\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n }\n\n @-webkit-keyframes ${ ANIMATION.SHOW_CONTAINER } {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n }\n\n @keyframes ${ ANIMATION.SHOW_CONTAINER } {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n }\n\n @-webkit-keyframes ${ ANIMATION.HIDE_CONTAINER } {\n from {\n opacity: 1;\n }\n\n 50% {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n }\n\n @keyframes ${ ANIMATION.HIDE_CONTAINER } {\n from {\n opacity: 1;\n }\n\n 50% {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n }\n `;\n}\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { base64encode } from 'belter/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { fundingLogos } from '../../resources';\nimport { BUTTON_LOGO_COLOR, CHECKOUT_OVERLAY_COLOR } from '../../constants';\nimport { isIos } from '../../lib';\n\nimport { containerContent } from './containerContent';\nimport { getContainerStyle } from './containerStyle';\nimport { getSandboxStyle } from './sandboxStyle';\n\nconst LOGO_COLOR = {\n [ CHECKOUT_OVERLAY_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ CHECKOUT_OVERLAY_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n};\n\nexport {\n getContainerStyle,\n getSandboxStyle\n};\n\n// eslint-disable-next-line flowtype/require-exact-type\nexport type ContainerTemplateOptions = {\n id : string,\n props : Object,\n CLASS : Object,\n ANIMATION : Object,\n CONTEXT : Object,\n EVENT : Object,\n dimensions : {\n width : number,\n height : number\n },\n actions : Object,\n tag : string,\n context : string,\n outlet : HTMLElement,\n on : Function,\n jsxDom : Function\n};\n\nexport function containerTemplate({ id, props, CLASS, ANIMATION, CONTEXT, EVENT, on, tag, context, actions, outlet, jsxDom } : ContainerTemplateOptions) : HTMLElement {\n\n const [ lang, country ] = props.locale.split('_');\n\n const content = containerContent[country][lang];\n\n function close(event) {\n event.preventDefault();\n event.stopPropagation();\n actions.close();\n }\n\n function focus(event) {\n event.preventDefault();\n event.stopPropagation();\n\n if (isIos()) {\n // eslint-disable-next-line no-alert\n window.alert('Please switch tabs to reactivate the PayPal window');\n } else {\n ZalgoPromise.try(actions.focus).catch(actions.close);\n }\n }\n\n const style = props.style || {};\n const overlayColor = style.overlayColor || CHECKOUT_OVERLAY_COLOR.BLACK;\n const logoColor = LOGO_COLOR[overlayColor];\n\n const ppLogo = (typeof fundingLogos.pp === 'function')\n ? fundingLogos.pp({ logoColor })\n : fundingLogos.pp[logoColor];\n\n const paypalLogo = (typeof fundingLogos.paypal === 'function')\n ? fundingLogos.paypal({ logoColor })\n : fundingLogos.paypal[logoColor];\n\n const el = (\n
\n \n
\n
\n \n \n
\n
\n {content.windowMessage}\n
\n
\n
\n
\n
\n
\n\n
\n {outlet}\n
\n\n \n
\n );\n\n const container = (\n \n \n { el }\n \n \n );\n\n on(EVENT.CLOSE, () => {\n el.className += ` ${ tag }-loading`;\n });\n\n return (\n
\n \n\n \n
\n );\n}\n","/* @flow */\n\nexport * from './componentTemplate';\nexport * from './containerTemplate';\n","/* @flow */\n\nimport { config } from '../config';\nimport { FUNDING, PAYMENT_TYPE } from '../constants';\n\nexport function determineParameterFromToken(token : string) : string {\n return (token && token.indexOf('BA-') === 0) ? 'ba_token' : 'token';\n}\n\nexport function getPaymentType(payment : string) : string {\n if (payment.indexOf('BA-') === 0) {\n return PAYMENT_TYPE.BA_TOKEN;\n } else if (payment.indexOf('PAY-') === 0 || payment.indexOf('PAYID-') === 0) {\n return PAYMENT_TYPE.PAY_ID;\n } else if (payment.indexOf('EC-') === 0) {\n return PAYMENT_TYPE.EC_TOKEN;\n }\n\n return PAYMENT_TYPE.EC_TOKEN;\n}\n\nexport function determineUrl(env : string, fundingSource : ?string, payment : string) : string {\n\n const paymentType = getPaymentType(payment);\n\n if (paymentType === PAYMENT_TYPE.BA_TOKEN) {\n return config.billingUrls[env];\n }\n\n if (fundingSource === FUNDING.CARD || fundingSource === FUNDING.ELV) {\n return config.guestUrls[env];\n }\n\n if (fundingSource === FUNDING.IDEAL || fundingSource === FUNDING.BANCONTACT || fundingSource === FUNDING.GIROPAY ||\n fundingSource === FUNDING.SOFORT || fundingSource === FUNDING.EPS || fundingSource === FUNDING.MYBANK ||\n fundingSource === FUNDING.P24 || fundingSource === FUNDING.PAYU || fundingSource === FUNDING.VERKKOPANKKI ||\n fundingSource === FUNDING.BLIK || fundingSource === FUNDING.TRUSTLY || fundingSource === FUNDING.MAXIMA ||\n fundingSource === FUNDING.BOLETO || fundingSource === FUNDING.OXXO) {\n return config.altpayUrls[env];\n }\n\n return config.checkoutUrls[env];\n}\n","/* @flow */\n/* eslint max-lines: off */\n\nexport const containerContent = {\n 'AT': {\n 'de': {\n 'windowMessage': 'Sie sehen das sichere Browserfenster von PayPal nicht? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ZW': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ZM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ZA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'YT': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'YE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'WS': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'WF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'VU': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'VG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'VE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'VC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'VA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'UY': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'UG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TV': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'TT': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'TO': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'TN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'TM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'TD': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'TC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'SZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SV': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'ST': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SR': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'SO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'SM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SL': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SH': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'SB': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'SA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'RW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'RS': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'RE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'QA': {\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PY': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'PW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'PN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'PM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'PF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'PA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'OM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'NU': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'NR': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'NP': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'NI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'NG': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'NE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'NC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MV': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'MU': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MT': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MS': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'MR': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MQ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MN': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'ML': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'MK': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MH': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'MG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ME': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MD': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MC': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'MA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'LS': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'LK': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'LI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'LC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'LA': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'KZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'KY': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'KW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'KN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'KM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'KI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'KH': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'KG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'KE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'JO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'JM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'IS': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'HR': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'HN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'GY': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'GW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GT': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'GP': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'GM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GL': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'da': {\n 'windowMessage': 'Kan du ikke se PayPals sikre browser? Vi hj\\u00E6lper dig med at genstarte vinduet, s\\u00E5 du kan betale.',\n 'continue': 'Forts\\u00E6t'\n }\n },\n 'GI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GD': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'GA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'FO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'da': {\n 'windowMessage': 'Kan du ikke se PayPals sikre browser? Vi hj\\u00E6lper dig med at genstarte vinduet, s\\u00E5 du kan betale.',\n 'continue': 'Forts\\u00E6t'\n }\n },\n 'FM': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'FK': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'FJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'ET': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ER': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'EG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'EC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'DZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'DO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'DM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'DJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'CY': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CV': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CR': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'CO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'CM': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'CL': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'CK': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CI': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'CG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CD': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'BZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'BY': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BT': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'BS': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'BO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'BN': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'BM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'BJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'BI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'BH': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'BG': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'BB': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'BA': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'AO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'AM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AL': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'AG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'AE': {\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AD': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n }\n },\n 'GB': {\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 PayPal\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\'ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AR': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'US': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Click to Continue'\n }\n },\n 'VN': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment. ',\n 'continue': 'Continue'\n }\n },\n 'UA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TW': {\n 'zh': {\n 'windowMessage': '\\u770B\\u4E0D\\u5230\\u5B89\\u5168\\u9023\\u7DDA\\u7684 PayPal \\u700F\\u89BD\\u5668\\uFF1F\\u6211\\u5011\\u5C07\\u6703\\u91CD\\u65B0\\u555F\\u52D5\\u8996\\u7A97\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002\\u00A0 ',\n 'continue': '\\u7E7C\\u7E8C'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TR': {\n 'tr': {\n 'windowMessage': 'G\\u00FCvenli PayPal taray\\u0131c\\u0131s\\u0131n\\u0131 g\\u00F6rm\\u00FCyor musunuz? Al\\u0131\\u015Fveri\\u015Finizi tamamlamak i\\u00E7in pencereyi yeniden ba\\u015Flatman\\u0131za yard\\u0131mc\\u0131 olaca\\u011F\\u0131z.\\u00A0 ',\n 'continue': 'Devam'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TH': {\n 'th': {\n 'windowMessage': '\\u0E16\\u0E49\\u0E32\\u0E04\\u0E38\\u0E13\\u0E44\\u0E21\\u0E48\\u0E40\\u0E2B\\u0E47\\u0E19\\u0E40\\u0E1A\\u0E23\\u0E32\\u0E27\\u0E4C\\u0E40\\u0E0B\\u0E2D\\u0E23\\u0E4C\\u0E17\\u0E35\\u0E48\\u0E21\\u0E35\\u0E23\\u0E30\\u0E1A\\u0E1A\\u0E04\\u0E27\\u0E32\\u0E21\\u0E1B\\u0E25\\u0E2D\\u0E14\\u0E20\\u0E31\\u0E22\\u0E02\\u0E2D\\u0E07 PayPal \\u0E40\\u0E23\\u0E32\\u0E08\\u0E30\\u0E0A\\u0E48\\u0E27\\u0E22\\u0E04\\u0E38\\u0E13\\u0E40\\u0E1B\\u0E34\\u0E14\\u0E2B\\u0E19\\u0E49\\u0E32\\u0E15\\u0E48\\u0E32\\u0E07\\u0E2D\\u0E35\\u0E01\\u0E04\\u0E23\\u0E31\\u0E49\\u0E07\\u0E40\\u0E1E\\u0E37\\u0E48\\u0E2D\\u0E0A\\u0E33\\u0E23\\u0E30\\u0E40\\u0E07\\u0E34\\u0E19\\u0E43\\u0E2B\\u0E49\\u0E40\\u0E23\\u0E35\\u0E22\\u0E1A\\u0E23\\u0E49\\u0E2D\\u0E22 ',\n 'continue': '\\u0E14\\u0E33\\u0E40\\u0E19\\u0E34\\u0E19\\u0E01\\u0E32\\u0E23\\u0E15\\u0E48\\u0E2D'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SK': {\n 'sk': {\n 'windowMessage': 'Nezobrazuje sa v\\u00e1m zabezpe\\u010den\\u00fd prehliada\\u010d PayPal? Pom\\u00f4\\u017eeme v\\u00e1m znova otvori\\u0165 okno, aby ste mohli n\\u00e1kup dokon\\u010di\\u0165.\\u00A0 ',\n 'continue': 'Pokra\\u010dova\\u0165'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SG': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SE': {\n 'sv': {\n 'windowMessage': 'Ser du inte den s\\u00E4kra PayPal-webbl\\u00E4saren? Vi hj\\u00E4lper dig att starta om f\\u00F6nstret f\\u00F6r att slutf\\u00F6ra ditt k\\u00F6p. ',\n 'continue': 'Forts\\u00E4tt'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'RU': {\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'RO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PT': {\n 'pt': {\n 'windowMessage': 'N\\u00E3o v\\u00EA a indica\\u00E7\\u00E3o de sess\\u00E3o segura PayPal no browser? Vamos ajudar a reabrir a janela para que possa concluir a sua compra.',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PL': {\n 'pl': {\n 'windowMessage': 'Nie widzisz bezpiecznej przegl\\u0105darki PayPal? Pomo\\u017Cemy Ci ponownie uruchomi\\u0107 to okno w celu dokonania zakupu.\\u00A0 ',\n 'continue': 'Kontynuuj'\n },\n 'en': {\n 'windowMessage': 'You don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PH': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre paiement.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Le ayudaremos a abrir de nuevo la ventana para completar su pago.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NO': {\n 'no': {\n 'windowMessage': 'Ser du ikke den sikre PayPal-nettleseren? Vi hjelper deg med \\u00E5 starte vinduet p\\u00E5 nytt s\\u00E5 du kan fullf\\u00F8re kj\\u00F8pet.\\u00A0 ',\n 'continue': 'Fortsett'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NL': {\n 'nl': {\n 'windowMessage': 'Ziet u geen beveiligde PayPal-browser? We helpen u het venster opnieuw te openen om uw aankoop te voltooien.\\u00A0 ',\n 'continue': 'Doorgaan'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MY': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MX': {\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'LV': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'LU': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'de': {\n 'windowMessage': 'Das PayPal-Fenster wird nicht angezeigt? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n }\n },\n 'LT': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'KR': {\n 'ko': {\n 'windowMessage': '\\uBCF4\\uC548 PayPal \\uBE0C\\uB77C\\uC6B0\\uC800\\uAC00 \\uBCF4\\uC774\\uC9C0 \\uC54A\\uC73C\\uC2E0\\uAC00\\uC694? \\uCC3D\\uC744 \\uB2E4\\uC2DC \\uC2E4\\uD589\\uD558\\uC5EC \\uACB0\\uC81C\\uB97C \\uC644\\uB8CC\\uD560 \\uC218 \\uC788\\uB3C4\\uB85D \\uB3C4\\uC640\\uB4DC\\uB9AC\\uACA0\\uC2B5\\uB2C8\\uB2E4.\\u00A0 ',\n 'continue': '\\uACC4\\uC18D'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'JP': {\n 'ja': {\n 'windowMessage': '\\u30BB\\u30AD\\u30E5\\u30A2\\u306A\\u30D6\\u30E9\\u30A6\\u30B6\\u304C\\u8868\\u793A\\u3055\\u308C\\u306A\\u3044\\u5834\\u5408\\u306F\\u3001\\u30A6\\u30A3\\u30F3\\u30C9\\u30A6\\u3092\\u518D\\u8D77\\u52D5\\u3057\\u3066\\u3001\\u652F\\u6255\\u3044\\u3092\\u5B8C\\u4E86\\u3067\\u304D\\u308B\\u3088\\u3046\\u304A\\u624B\\u4F1D\\u3044\\u3044\\u305F\\u3057\\u307E\\u3059\\u3002',\n 'continue': '\\u7D9A\\u884C'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment. ',\n 'continue': 'Continue'\n }\n },\n 'IT': {\n 'it': {\n 'windowMessage': 'Non vedi la pagina sicura di PayPal? Ti aiuteremo a riaprire la finestra per completare l\\'acquisto.\\u00A0 ',\n 'continue': 'Continua'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'IN': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'IL': {\n 'he': {\n 'windowMessage': '\\u05DC\\u05D0 \\u05E8\\u05D5\\u05D0\\u05D4 \\u05D0\\u05EA \\u05D3\\u05E4\\u05D3\\u05E4\\u05DF PayPal \\u05D4\\u05DE\\u05D0\\u05D5\\u05D1\\u05D8\\u05D7? \\u05E0\\u05E2\\u05D6\\u05D5\\u05E8 \\u05DC\\u05DA \\u05DC\\u05E4\\u05EA\\u05D5\\u05D7 \\u05DE\\u05D7\\u05D3\\u05E9 \\u05D0\\u05EA \\u05D4\\u05D7\\u05DC\\u05D5\\u05DF \\u05DB\\u05D3\\u05D9 \\u05DC\\u05D4\\u05E9\\u05DC\\u05D9\\u05DD \\u05D0\\u05EA \\u05D4\\u05E7\\u05E0\\u05D9\\u05D9\\u05D4 \\u05E9\\u05DC\\u05DA.\\u00A0 ',\n 'continue': '\\u05D4\\u05DE\\u05E9\\u05DA'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'IE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'HU': {\n 'hu': {\n 'windowMessage': 'Nem l\\u00e1tja a biztons\\u00e1gos PayPal-b\\u00f6ng\\u00e9sz\\u0151t? Seg\\u00edt\\u00fcnk \\u00fajra bet\\u00f6lteni az ablakot, hogy befejezhesse a v\\u00e1s\\u00e1rl\\u00e1st.\\u00A0 ',\n 'continue': 'Folytat\\u00e1s'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ID': {\n 'id': {\n 'windowMessage': 'Browser PayPal yang aman tidak terlihat? Kami akan membantu menampilkan ulang jendela untuk menyelesaikan pembayaran Anda.\\u00A0 ',\n 'continue': 'Lanjutkan'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'HK': {\n 'zh': {\n 'windowMessage': '\\u770B\\u4E0D\\u5230\\u5B89\\u5168\\u7684 PayPal \\u700F\\u89BD\\u5668\\u8996\\u7A97\\uFF1F\\u6211\\u5011\\u6703\\u52A9\\u4F60\\u91CD\\u65B0\\u958B\\u555F\\u8996\\u7A97\\uFF0C\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002',\n 'continue': '\\u7E7C\\u7E8C'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GROUP-LATAM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'GROUP-EMEA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'pt': {\n 'windowMessage': 'N\\u00E3o v\\u00EA a indica\\u00E7\\u00E3o de sess\\u00E3o segura PayPal no browser? Vamos ajudar a reabrir a janela para que possa concluir a sua compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'de': {\n 'windowMessage': 'Sie sehen das sichere Browserfenster von PayPal nicht? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n },\n 'da': {\n 'windowMessage': 'Kan du ikke se PayPals sikre browser? Vi hj\\u00E6lper dig med at genstarte vinduet, s\\u00E5 du kan betale.',\n 'continue': 'Forts\\u00E6t'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'GROUP-APAC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ko': {\n 'windowMessage': '\\uBCF4\\uC548 PayPal \\uBE0C\\uB77C\\uC6B0\\uC800\\uAC00 \\uBCF4\\uC774\\uC9C0 \\uC54A\\uC73C\\uC2E0\\uAC00\\uC694? \\uCC3D\\uC744 \\uB2E4\\uC2DC \\uC2E4\\uD589\\uD558\\uC5EC \\uAD6C\\uB9E4\\uB97C \\uC644\\uB8CC\\uD560 \\uC218 \\uC788\\uB3C4\\uB85D \\uB3C4\\uC640\\uB4DC\\uB9AC\\uACA0\\uC2B5\\uB2C8\\uB2E4. ',\n 'continue': '\\uACC4\\uC18D'\n },\n 'id': {\n 'windowMessage': 'Browser PayPal yang aman tidak terlihat? Kami akan membantu menampilkan ulang jendela untuk menyelesaikan pembelian Anda. ',\n 'continue': 'Lanjutkan'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'GR': {\n 'el': {\n 'windowMessage': '\\u0394\\u03b5\\u03bd \\u03b2\\u03bb\\u03ad\\u03c0\\u03b5\\u03c4\\u03b5 \\u03c4\\u03bf \\u03b1\\u03c3\\u03c6\\u03b1\\u03bb\\u03ad\\u03c2 \\u03c0\\u03c1\\u03cc\\u03b3\\u03c1\\u03b1\\u03bc\\u03bc\\u03b1 \\u03c0\\u03b5\\u03c1\\u03b9\\u03ae\\u03b3\\u03b7\\u03c3\\u03b7\\u03c2 PayPal; \\u0398\\u03b1 \\u03c3\\u03b1\\u03c2 \\u03b2\\u03bf\\u03b7\\u03b8\\u03ae\\u03c3\\u03bf\\u03c5\\u03bc\\u03b5 \\u03bd\\u03b1 \\u03b5\\u03c0\\u03b1\\u03bd\\u03b5\\u03ba\\u03ba\\u03b9\\u03bd\\u03ae\\u03c3\\u03b5\\u03c4\\u03b5 \\u03c4\\u03bf \\u03c0\\u03b1\\u03c1\\u03ac\\u03b8\\u03c5\\u03c1\\u03bf \\u03b3\\u03b9\\u03b1 \\u03bd\\u03b1 \\u03bf\\u03bb\\u03bf\\u03ba\\u03bb\\u03b7\\u03c1\\u03ce\\u03c3\\u03b5\\u03c4\\u03b5 \\u03c4\\u03b7\\u03bd \\u03b1\\u03b3\\u03bf\\u03c1\\u03ac \\u03c3\\u03b1\\u03c2.\\u00A0 ',\n 'continue': '\\u03a3\\u03c5\\u03bd\\u03ad\\u03c7\\u03b5\\u03b9\\u03b1'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'FR': {\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 PayPal\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ES': {\n 'es': {\n 'windowMessage': '\\u00BFNo ve el s\\u00EDmbolo de navegaci\\u00F3n segura de PayPal? Le ayudaremos a abrir de nuevo la ventana para completar la compra. ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'FI': {\n 'fi': {\n 'windowMessage': 'Eik\\u00f6 suojattua PayPal-selainta n\\u00e4y? Autamme avaamaan ikkunan uudelleen oston viimeistely\\u00e4 varten.\\u00A0 ',\n 'continue': 'Jatka'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'EE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'DK': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'da': {\n 'windowMessage': 'Kan du ikke se PayPals sikre browser? Vi hj\\u00E6lper dig med at genstarte vinduet, s\\u00E5 du kan betale.',\n 'continue': 'Forts\\u00E6t'\n }\n },\n 'CZ': {\n 'cs': {\n 'windowMessage': 'Nezobrazuje se v\\u00e1m bezpe\\u010dn\\u00fd prohl\\u00ed\\u017ee\\u010d PayPal? Pom\\u016f\\u017eeme v\\u00e1m okno znovu otev\\u0159\\u00edt, abyste mohli n\\u00e1kup dokon\\u010dit.',\n 'continue': 'Pokra\\u010dovat'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'DE': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'de': {\n 'windowMessage': 'Sie sehen das sichere Browserfenster von PayPal nicht? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n }\n },\n 'CH': {\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 PayPal\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'de': {\n 'windowMessage': 'Sie sehen das sichere Browserfenster von PayPal nicht? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n }\n },\n 'CA': {\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 de PayPal\\u00A0? Nous vous aiderons \\u00E0 relancer la fen\\u00EAtre afin d\\'effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you relaunch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'C2': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BE': {\n 'nl': {\n 'windowMessage': 'Ziet u de beveiligde PayPal-browser niet? We helpen u het venster opnieuw te openen om uw aankoop te voltooien.\\u00A0 ',\n 'continue': 'Doorgaan'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 PayPal\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BR': {\n 'pt': {\n 'windowMessage': 'N\\u00E3o est\\u00E1 vendo o navegador seguro do PayPal? Ajudaremos voc\\u00EA a reabrir a janela para concluir a compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AU': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\'ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n }\n};\n","/*\n * [hi-base32]{@link https://github.com/emn178/hi-base32}\n *\n * @version 0.5.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var root = typeof window === 'object' ? window : {};\n var NODE_JS = !root.HI_BASE32_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n }\n var COMMON_JS = !root.HI_BASE32_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var BASE32_ENCODE_CHAR = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'.split('');\n var BASE32_DECODE_CHAR = {\n 'A': 0, 'B': 1, 'C': 2, 'D': 3, 'E': 4, 'F': 5, 'G': 6, 'H': 7, 'I': 8,\n 'J': 9, 'K': 10, 'L': 11, 'M': 12, 'N': 13, 'O': 14, 'P': 15, 'Q': 16,\n 'R': 17, 'S': 18, 'T': 19, 'U': 20, 'V': 21, 'W': 22, 'X': 23, 'Y': 24,\n 'Z': 25, '2': 26, '3': 27, '4': 28, '5': 29, '6': 30, '7': 31\n };\n\n var blocks = [0, 0, 0, 0, 0, 0, 0, 0];\n\n var throwInvalidUtf8 = function (position, partial) {\n if (partial.length > 10) {\n partial = '...' + partial.substr(-10);\n }\n var err = new Error('Decoded data is not valid UTF-8.'\n + ' Maybe try base32.decode.asBytes()?'\n + ' Partial data after reading ' + position + ' bytes: ' + partial + ' <-');\n err.position = position;\n throw err;\n };\n\n var toUtf8String = function (bytes) {\n var str = '', length = bytes.length, i = 0, followingChars = 0, b, c;\n while (i < length) {\n b = bytes[i++];\n if (b <= 0x7F) {\n str += String.fromCharCode(b);\n continue;\n } else if (b > 0xBF && b <= 0xDF) {\n c = b & 0x1F;\n followingChars = 1;\n } else if (b <= 0xEF) {\n c = b & 0x0F;\n followingChars = 2;\n } else if (b <= 0xF7) {\n c = b & 0x07;\n followingChars = 3;\n } else {\n throwInvalidUtf8(i, str);\n }\n\n for (var j = 0; j < followingChars; ++j) {\n b = bytes[i++];\n if (b < 0x80 || b > 0xBF) {\n throwInvalidUtf8(i, str);\n }\n c <<= 6;\n c += b & 0x3F;\n }\n if (c >= 0xD800 && c <= 0xDFFF) {\n throwInvalidUtf8(i, str);\n }\n if (c > 0x10FFFF) {\n throwInvalidUtf8(i, str);\n }\n\n if (c <= 0xFFFF) {\n str += String.fromCharCode(c);\n } else {\n c -= 0x10000;\n str += String.fromCharCode((c >> 10) + 0xD800);\n str += String.fromCharCode((c & 0x3FF) + 0xDC00);\n }\n }\n return str;\n };\n\n var decodeAsBytes = function (base32Str) {\n if (!/^[A-Z2-7=]+$/.test(base32Str)) {\n throw new Error('Invalid base32 characters');\n }\n base32Str = base32Str.replace(/=/g, '');\n var v1, v2, v3, v4, v5, v6, v7, v8, bytes = [], index = 0, length = base32Str.length;\n\n // 4 char to 3 bytes\n for (var i = 0, count = length >> 3 << 3; i < count;) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v8 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255;\n bytes[index++] = (v4 << 4 | v5 >>> 1) & 255;\n bytes[index++] = (v5 << 7 | v6 << 2 | v7 >>> 3) & 255;\n bytes[index++] = (v7 << 5 | v8) & 255;\n }\n\n // remain bytes\n var remain = length - count;\n if (remain === 2) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n } else if (remain === 4) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255;\n } else if (remain === 5) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255;\n bytes[index++] = (v4 << 4 | v5 >>> 1) & 255;\n } else if (remain === 7) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255;\n bytes[index++] = (v4 << 4 | v5 >>> 1) & 255;\n bytes[index++] = (v5 << 7 | v6 << 2 | v7 >>> 3) & 255;\n }\n return bytes;\n };\n\n var encodeAscii = function (str) {\n var v1, v2, v3, v4, v5, base32Str = '', length = str.length;\n for (var i = 0, count = parseInt(length / 5) * 5; i < count;) {\n v1 = str.charCodeAt(i++);\n v2 = str.charCodeAt(i++);\n v3 = str.charCodeAt(i++);\n v4 = str.charCodeAt(i++);\n v5 = str.charCodeAt(i++);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3 | v5 >>> 5) & 31] +\n BASE32_ENCODE_CHAR[v5 & 31];\n }\n\n // remain char\n var remain = length - count;\n if (remain === 1) {\n v1 = str.charCodeAt(i);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2) & 31] +\n '======';\n } else if (remain === 2) {\n v1 = str.charCodeAt(i++);\n v2 = str.charCodeAt(i);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4) & 31] +\n '====';\n } else if (remain === 3) {\n v1 = str.charCodeAt(i++);\n v2 = str.charCodeAt(i++);\n v3 = str.charCodeAt(i);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1) & 31] +\n '===';\n } else if (remain === 4) {\n v1 = str.charCodeAt(i++);\n v2 = str.charCodeAt(i++);\n v3 = str.charCodeAt(i++);\n v4 = str.charCodeAt(i);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3) & 31] +\n '=';\n }\n return base32Str;\n };\n\n var encodeUtf8 = function (str) {\n var v1, v2, v3, v4, v5, code, end = false, base32Str = '',\n index = 0, i, start = 0, bytes = 0, length = str.length;\n do {\n blocks[0] = blocks[5];\n blocks[1] = blocks[6];\n blocks[2] = blocks[7];\n for (i = start; index < length && i < 5; ++index) {\n code = str.charCodeAt(index);\n if (code < 0x80) {\n blocks[i++] = code;\n } else if (code < 0x800) {\n blocks[i++] = 0xc0 | (code >> 6);\n blocks[i++] = 0x80 | (code & 0x3f);\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i++] = 0xe0 | (code >> 12);\n blocks[i++] = 0x80 | ((code >> 6) & 0x3f);\n blocks[i++] = 0x80 | (code & 0x3f);\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++index) & 0x3ff));\n blocks[i++] = 0xf0 | (code >> 18);\n blocks[i++] = 0x80 | ((code >> 12) & 0x3f);\n blocks[i++] = 0x80 | ((code >> 6) & 0x3f);\n blocks[i++] = 0x80 | (code & 0x3f);\n }\n }\n bytes += i - start;\n start = i - 5;\n if (index === length) {\n ++index;\n }\n if (index > length && i < 6) {\n end = true;\n }\n v1 = blocks[0];\n if (i > 4) {\n v2 = blocks[1];\n v3 = blocks[2];\n v4 = blocks[3];\n v5 = blocks[4];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3 | v5 >>> 5) & 31] +\n BASE32_ENCODE_CHAR[v5 & 31];\n } else if (i === 1) {\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2) & 31] +\n '======';\n } else if (i === 2) {\n v2 = blocks[1];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4) & 31] +\n '====';\n } else if (i === 3) {\n v2 = blocks[1];\n v3 = blocks[2];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1) & 31] +\n '===';\n } else {\n v2 = blocks[1];\n v3 = blocks[2];\n v4 = blocks[3];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3) & 31] +\n '=';\n }\n } while (!end);\n return base32Str;\n };\n\n var encodeBytes = function (bytes) {\n var v1, v2, v3, v4, v5, base32Str = '', length = bytes.length;\n for (var i = 0, count = parseInt(length / 5) * 5; i < count;) {\n v1 = bytes[i++];\n v2 = bytes[i++];\n v3 = bytes[i++];\n v4 = bytes[i++];\n v5 = bytes[i++];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3 | v5 >>> 5) & 31] +\n BASE32_ENCODE_CHAR[v5 & 31];\n }\n\n // remain char\n var remain = length - count;\n if (remain === 1) {\n v1 = bytes[i];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2) & 31] +\n '======';\n } else if (remain === 2) {\n v1 = bytes[i++];\n v2 = bytes[i];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4) & 31] +\n '====';\n } else if (remain === 3) {\n v1 = bytes[i++];\n v2 = bytes[i++];\n v3 = bytes[i];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1) & 31] +\n '===';\n } else if (remain === 4) {\n v1 = bytes[i++];\n v2 = bytes[i++];\n v3 = bytes[i++];\n v4 = bytes[i];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3) & 31] +\n '=';\n }\n return base32Str;\n };\n\n var encode = function (input, asciiOnly) {\n var notString = typeof(input) !== 'string';\n if (notString && input.constructor === ArrayBuffer) {\n input = new Uint8Array(input);\n }\n if (notString) {\n return encodeBytes(input);\n } else if (asciiOnly) {\n return encodeAscii(input);\n } else {\n return encodeUtf8(input);\n }\n };\n\n var decode = function (base32Str, asciiOnly) {\n if (!asciiOnly) {\n return toUtf8String(decodeAsBytes(base32Str));\n }\n if (!/^[A-Z2-7=]+$/.test(base32Str)) {\n throw new Error('Invalid base32 characters');\n }\n var v1, v2, v3, v4, v5, v6, v7, v8, str = '', length = base32Str.indexOf('=');\n if (length === -1) {\n length = base32Str.length;\n }\n\n // 8 char to 5 bytes\n for (var i = 0, count = length >> 3 << 3; i < count;) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v8 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255) +\n String.fromCharCode((v2 << 6 | v3 << 1 | v4 >>> 4) & 255) +\n String.fromCharCode((v4 << 4 | v5 >>> 1) & 255) +\n String.fromCharCode((v5 << 7 | v6 << 2 | v7 >>> 3) & 255) +\n String.fromCharCode((v7 << 5 | v8) & 255);\n }\n\n // remain bytes\n var remain = length - count;\n if (remain === 2) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255);\n } else if (remain === 4) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255) +\n String.fromCharCode((v2 << 6 | v3 << 1 | v4 >>> 4) & 255);\n } else if (remain === 5) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255) +\n String.fromCharCode((v2 << 6 | v3 << 1 | v4 >>> 4) & 255) +\n String.fromCharCode((v4 << 4 | v5 >>> 1) & 255);\n } else if (remain === 7) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255) +\n String.fromCharCode((v2 << 6 | v3 << 1 | v4 >>> 4) & 255) +\n String.fromCharCode((v4 << 4 | v5 >>> 1) & 255) +\n String.fromCharCode((v5 << 7 | v6 << 2 | v7 >>> 3) & 255);\n }\n return str;\n };\n\n var exports = {\n encode: encode,\n decode: decode\n };\n decode.asBytes = decodeAsBytes;\n\n if (COMMON_JS) {\n module.exports = exports;\n } else {\n root.base32 = exports;\n if (AMD) {\n define(function() {\n return exports;\n });\n }\n }\n})();\n","/* @flow */\n\nimport type { Component, ComponentDriverType } from '../component/component';\n\nexport let script : ComponentDriverType<*, Document> = {\n\n global() : ?Document {\n return window.document;\n },\n\n register(component : Component<*>, document : Document) {\n\n function render(element : HTMLElement) {\n\n if (!element || !element.tagName || element.tagName.toLowerCase() !== 'script') {\n return;\n }\n\n // $FlowFixMe\n if (!element.attributes.type || element.attributes.type.value !== 'application/x-component' || !element.parentNode) {\n return;\n }\n\n let tag = element.getAttribute('data-component');\n\n if (!tag || tag !== component.tag) {\n return;\n }\n\n component.log(`instantiate_script_component`);\n\n let props : { [string] : mixed } = element.innerText\n ? eval(`(${ element.innerText })`) // eslint-disable-line no-eval, security/detect-eval-with-expression\n : {};\n\n let container = document.createElement('div');\n\n if (!element.parentNode) {\n throw new Error(`Element has no parent`);\n }\n\n element.parentNode.replaceChild(container, element);\n\n // $FlowFixMe\n component.render(props, container);\n }\n\n function scan() {\n let scriptTags = Array.prototype.slice.call(document.getElementsByTagName('script'));\n\n for (let element of scriptTags) {\n render(element);\n }\n }\n\n scan();\n document.addEventListener('DOMContentLoaded', scan);\n window.addEventListener('load', scan);\n\n document.addEventListener('DOMNodeInserted', event => {\n // $FlowFixMe\n render(event.target);\n });\n }\n};\n","/* @flow */\n\nimport { extend } from '../lib';\nimport type { Component, ComponentDriverType } from '../component/component';\n\ndeclare class ReactClassType {\n\n}\n\ntype ReactElementType = {\n\n};\n\ntype ReactType = {\n createClass : ({ render : ReactElementType, componentDidMount : () => void, componentDidUpdate : () => void }) => (typeof ReactClassType),\n createElement : (string, ?{ [string] : mixed }, ...children : Array) => ReactElementType\n};\n\ntype ReactDomType = {\n findDOMNode : (ReactElementType) => HTMLElement\n};\n\ntype ReactLibraryType = { React : ReactType, ReactDOM : ReactDomType };\n\nexport let react : ComponentDriverType<*, ReactLibraryType> = {\n\n global() : ?ReactLibraryType {\n if (window.React && window.ReactDOM) {\n return {\n React: window.React,\n ReactDOM: window.ReactDOM\n };\n }\n },\n\n register(component : Component<*>, { React, ReactDOM } : ReactLibraryType) : (typeof ReactClassType) {\n\n if (React.createClass) {\n\n // $FlowFixMe\n component.react = React.createClass({\n\n render() : ReactElementType {\n return React.createElement('div', null);\n },\n\n componentDidMount() {\n component.log(`instantiate_react_component`);\n\n let el = ReactDOM.findDOMNode(this);\n\n let parent = component.init(extend({}, this.props), null, el);\n\n this.setState({ parent });\n\n parent.render(el);\n },\n\n componentDidUpdate() {\n\n if (this.state && this.state.parent) {\n this.state.parent.updateProps(extend({}, this.props));\n }\n },\n\n componentWillUnmount() {\n if (this.state && this.state.parent) {\n this.state.parent.destroy();\n }\n }\n });\n } else {\n // $FlowFixMe\n component.react = class extends React.Component {\n render() : ReactElementType {\n return React.createElement('div', null);\n }\n\n componentDidMount() {\n component.log(`instantiate_react_component`);\n\n let el = ReactDOM.findDOMNode(this);\n\n let parent = component.init(extend({}, this.props), null, el);\n\n this.setState({ parent });\n\n parent.render(el);\n }\n\n componentDidUpdate() {\n\n if (this.state && this.state.parent) {\n this.state.parent.updateProps(extend({}, this.props));\n }\n }\n\n componentWillUnmount() {\n if (this.state && this.state.parent) {\n this.state.parent.destroy();\n }\n }\n };\n }\n\n return component.react;\n }\n};\n","/* @flow */\n\nimport type { Component, ComponentDriverType } from '../component/component';\nimport { extend } from '../lib';\n\ntype VueComponent = {\n render : (Function) => Element,\n inheritAttrs : boolean,\n mounted : () => void,\n beforeUpdate : () => void\n};\n\nexport let vue : ComponentDriverType<*, void> = {\n\n global() {\n // pass\n },\n\n register

(component : Component

) : VueComponent {\n\n return {\n render(createElement) : Element {\n return createElement('div');\n },\n\n inheritAttrs: false,\n\n mounted() {\n let el = this.$el;\n\n // $FlowFixMe\n this.parent = component.init(extend({}, this.$attrs), null, el);\n\n this.parent.render(el);\n },\n\n beforeUpdate() {\n \n if (this.parent && this.$attrs) {\n this.parent.updateProps(extend({}, this.$attrs));\n }\n }\n };\n }\n};\n","/* @flow */\n\nimport { dasherizeToCamel, replaceObject } from '../lib';\nimport type { Component, ComponentDriverType } from '../component/component';\n\ntype AngularModule = {\n directive : (string, () => {\n scope : { [string] : '=' | '@' },\n restrict : string,\n controller : Array\n }) => AngularModule\n};\n\ntype Angular = {\n module : (string, Array) => AngularModule\n};\n\nexport let angular : ComponentDriverType<*, Angular> = {\n\n global() : ?Angular {\n return window.angular;\n },\n\n register(component : Component<*>, ng : Angular) : AngularModule {\n\n let module = ng.module(component.tag, []).directive(dasherizeToCamel(component.tag), () => {\n\n let scope = {};\n\n for (let key of component.getPropNames()) {\n scope[key] = '=';\n }\n\n if (component.looseProps) {\n scope.props = '=';\n }\n\n return {\n scope,\n\n restrict: 'E',\n\n controller: [ '$scope', '$element', ($scope, $element) => {\n\n if (component.looseProps && !$scope.props) {\n throw new Error(`For angular bindings to work, prop definitions must be passed to zoid.create`);\n }\n\n component.log(`instantiate_angular_component`);\n\n function safeApply() {\n if ($scope.$root.$$phase !== '$apply' && $scope.$root.$$phase !== '$digest') {\n try {\n $scope.$apply();\n } catch (err) {\n // pass\n }\n }\n }\n\n let getProps = () => {\n\n let scopeProps;\n\n if ($scope.props) {\n scopeProps = $scope.props;\n } else {\n scopeProps = {};\n for (let key of Object.keys(scope)) {\n if ($scope[key] !== undefined) {\n scopeProps[key] = $scope[key];\n }\n }\n }\n\n scopeProps = replaceObject(scopeProps, {\n 'function': (value) => {\n return function angularWrapped() : mixed {\n let result = value.apply(this, arguments);\n safeApply();\n return result;\n };\n }\n });\n\n return scopeProps;\n };\n\n let parent = component.init(getProps(), null, $element[0]);\n parent.render($element[0]);\n\n $scope.$watch(() => {\n parent.updateProps(getProps());\n });\n } ]\n };\n });\n\n return module;\n }\n};\n","/* @flow */\n\nimport type { Component, ComponentDriverType } from '../component/component';\n\ndeclare class GlimmerComponentType {\n element : HTMLElement,\n args : Object\n}\n\nexport let glimmer : ComponentDriverType<*, (typeof GlimmerComponentType)> = {\n\n global() {\n // pass\n },\n\n register(component : Component<*>, GlimmerComponent : (typeof GlimmerComponentType)) : (typeof GlimmerComponentType) {\n return class extends GlimmerComponent {\n didInsertElement() {\n component.render({ ...this.args }, this.element);\n }\n };\n }\n};\n","/* @flow */\n/* eslint new-cap: 0 */\n\nimport { replaceObject } from '../lib';\nimport type { Component, ComponentDriverType } from '../component/component';\n\ntype Angular2Injection = {};\n\ntype Angular2Component = {};\n\ntype Angular2Module = {};\n\ntype Angular2 = {\n Component : ({ selector : string, template : string, inputs : Array }) => {\n Class : ({ constructor : Array, ngOnInit : () => void, ngOnChanges : () => void }) => Angular2Component\n },\n NgModule : ({ declarations : Array, exports : Array }) => {\n Class : ({ constructor : () => void }) => Angular2Module\n },\n ElementRef : Angular2Injection,\n NgZone : Angular2Injection\n};\n\n\nexport let angular2 : ComponentDriverType<*, Angular2> = {\n\n global() {\n // pass\n },\n\n register(zoid : Component<*>, { Component : AngularComponent, NgModule, ElementRef, NgZone }) : Angular2Module {\n\n zoid.log('initializing angular2 component');\n\n let getProps = (component) => {\n return replaceObject({ ...component.internalProps, ...component.props }, {\n 'function': (value) => {\n if (typeof value === 'function') {\n return function angular2Wrapped() : void {\n return component.zone.run(() => value.apply(this, arguments));\n };\n }\n }\n });\n };\n\n const ComponentInstance =\n AngularComponent({\n selector: zoid.tag,\n template: '

',\n inputs: [ 'props' ]\n }).Class({\n constructor: [ ElementRef, NgZone, function angularConstructor(elementRef, zone) {\n this.elementRef = elementRef;\n this.zone = zone;\n } ],\n ngOnInit () {\n const targetElement = this.elementRef.nativeElement;\n const parent = zoid.init(getProps(this), null, targetElement);\n parent.render(targetElement);\n this.parent = parent;\n },\n ngOnChanges() {\n if (this.parent) {\n this.parent.updateProps(getProps(this));\n }\n }\n });\n\n\n const ModuleInstance = NgModule({\n declarations: [ ComponentInstance ],\n exports: [ ComponentInstance ]\n }).Class({\n constructor () {\n // pass\n }\n });\n\n return ModuleInstance;\n }\n};\n","/*!\n * Bowser - a browser detector\n * https://github.com/ded/bowser\n * MIT License | (c) Dustin Diaz 2015\n */\n!function(e,t,n){typeof module!=\"undefined\"&&module.exports?module.exports=n():typeof define==\"function\"&&define.amd?define(t,n):e[t]=n()}(this,\"bowser\",function(){function t(t){function n(e){var n=t.match(e);return n&&n.length>1&&n[1]||\"\"}function r(e){var n=t.match(e);return n&&n.length>1&&n[2]||\"\"}function C(e){switch(e){case\"NT\":return\"NT\";case\"XP\":return\"XP\";case\"NT 5.0\":return\"2000\";case\"NT 5.1\":return\"XP\";case\"NT 5.2\":return\"2003\";case\"NT 6.0\":return\"Vista\";case\"NT 6.1\":return\"7\";case\"NT 6.2\":return\"8\";case\"NT 6.3\":return\"8.1\";case\"NT 10.0\":return\"10\";default:return undefined}}var i=n(/(ipod|iphone|ipad)/i).toLowerCase(),o=/like android/i.test(t),u=!o&&/android/i.test(t),a=/nexus\\s*[0-6]\\s*/i.test(t),f=!a&&/nexus\\s*[0-9]+/i.test(t),l=/CrOS/.test(t),c=/silk/i.test(t),h=/sailfish/i.test(t),p=/tizen/i.test(t),d=/(web|hpw)(o|0)s/i.test(t),v=/windows phone/i.test(t),m=/SamsungBrowser/i.test(t),g=!v&&/windows/i.test(t),y=!i&&!c&&/macintosh/i.test(t),b=!u&&!h&&!p&&!d&&/linux/i.test(t),w=r(/edg([ea]|ios)\\/(\\d+(\\.\\d+)?)/i),E=n(/version\\/(\\d+(\\.\\d+)?)/i),S=/tablet/i.test(t)&&!/tablet pc/i.test(t),x=!S&&/[^-]mobi/i.test(t),T=/xbox/i.test(t),N;/opera/i.test(t)?N={name:\"Opera\",opera:e,version:E||n(/(?:opera|opr|opios)[\\s\\/](\\d+(\\.\\d+)?)/i)}:/opr\\/|opios/i.test(t)?N={name:\"Opera\",opera:e,version:n(/(?:opr|opios)[\\s\\/](\\d+(\\.\\d+)?)/i)||E}:/SamsungBrowser/i.test(t)?N={name:\"Samsung Internet for Android\",samsungBrowser:e,version:E||n(/(?:SamsungBrowser)[\\s\\/](\\d+(\\.\\d+)?)/i)}:/Whale/i.test(t)?N={name:\"NAVER Whale browser\",whale:e,version:n(/(?:whale)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/MZBrowser/i.test(t)?N={name:\"MZ Browser\",mzbrowser:e,version:n(/(?:MZBrowser)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/coast/i.test(t)?N={name:\"Opera Coast\",coast:e,version:E||n(/(?:coast)[\\s\\/](\\d+(\\.\\d+)?)/i)}:/focus/i.test(t)?N={name:\"Focus\",focus:e,version:n(/(?:focus)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/yabrowser/i.test(t)?N={name:\"Yandex Browser\",yandexbrowser:e,version:E||n(/(?:yabrowser)[\\s\\/](\\d+(\\.\\d+)?)/i)}:/ucbrowser/i.test(t)?N={name:\"UC Browser\",ucbrowser:e,version:n(/(?:ucbrowser)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/mxios/i.test(t)?N={name:\"Maxthon\",maxthon:e,version:n(/(?:mxios)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/epiphany/i.test(t)?N={name:\"Epiphany\",epiphany:e,version:n(/(?:epiphany)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/puffin/i.test(t)?N={name:\"Puffin\",puffin:e,version:n(/(?:puffin)[\\s\\/](\\d+(?:\\.\\d+)?)/i)}:/sleipnir/i.test(t)?N={name:\"Sleipnir\",sleipnir:e,version:n(/(?:sleipnir)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/k-meleon/i.test(t)?N={name:\"K-Meleon\",kMeleon:e,version:n(/(?:k-meleon)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:v?(N={name:\"Windows Phone\",osname:\"Windows Phone\",windowsphone:e},w?(N.msedge=e,N.version=w):(N.msie=e,N.version=n(/iemobile\\/(\\d+(\\.\\d+)?)/i))):/msie|trident/i.test(t)?N={name:\"Internet Explorer\",msie:e,version:n(/(?:msie |rv:)(\\d+(\\.\\d+)?)/i)}:l?N={name:\"Chrome\",osname:\"Chrome OS\",chromeos:e,chromeBook:e,chrome:e,version:n(/(?:chrome|crios|crmo)\\/(\\d+(\\.\\d+)?)/i)}:/edg([ea]|ios)/i.test(t)?N={name:\"Microsoft Edge\",msedge:e,version:w}:/vivaldi/i.test(t)?N={name:\"Vivaldi\",vivaldi:e,version:n(/vivaldi\\/(\\d+(\\.\\d+)?)/i)||E}:h?N={name:\"Sailfish\",osname:\"Sailfish OS\",sailfish:e,version:n(/sailfish\\s?browser\\/(\\d+(\\.\\d+)?)/i)}:/seamonkey\\//i.test(t)?N={name:\"SeaMonkey\",seamonkey:e,version:n(/seamonkey\\/(\\d+(\\.\\d+)?)/i)}:/firefox|iceweasel|fxios/i.test(t)?(N={name:\"Firefox\",firefox:e,version:n(/(?:firefox|iceweasel|fxios)[ \\/](\\d+(\\.\\d+)?)/i)},/\\((mobile|tablet);[^\\)]*rv:[\\d\\.]+\\)/i.test(t)&&(N.firefoxos=e,N.osname=\"Firefox OS\")):c?N={name:\"Amazon Silk\",silk:e,version:n(/silk\\/(\\d+(\\.\\d+)?)/i)}:/phantom/i.test(t)?N={name:\"PhantomJS\",phantom:e,version:n(/phantomjs\\/(\\d+(\\.\\d+)?)/i)}:/slimerjs/i.test(t)?N={name:\"SlimerJS\",slimer:e,version:n(/slimerjs\\/(\\d+(\\.\\d+)?)/i)}:/blackberry|\\bbb\\d+/i.test(t)||/rim\\stablet/i.test(t)?N={name:\"BlackBerry\",osname:\"BlackBerry OS\",blackberry:e,version:E||n(/blackberry[\\d]+\\/(\\d+(\\.\\d+)?)/i)}:d?(N={name:\"WebOS\",osname:\"WebOS\",webos:e,version:E||n(/w(?:eb)?osbrowser\\/(\\d+(\\.\\d+)?)/i)},/touchpad\\//i.test(t)&&(N.touchpad=e)):/bada/i.test(t)?N={name:\"Bada\",osname:\"Bada\",bada:e,version:n(/dolfin\\/(\\d+(\\.\\d+)?)/i)}:p?N={name:\"Tizen\",osname:\"Tizen\",tizen:e,version:n(/(?:tizen\\s?)?browser\\/(\\d+(\\.\\d+)?)/i)||E}:/qupzilla/i.test(t)?N={name:\"QupZilla\",qupzilla:e,version:n(/(?:qupzilla)[\\s\\/](\\d+(?:\\.\\d+)+)/i)||E}:/chromium/i.test(t)?N={name:\"Chromium\",chromium:e,version:n(/(?:chromium)[\\s\\/](\\d+(?:\\.\\d+)?)/i)||E}:/chrome|crios|crmo/i.test(t)?N={name:\"Chrome\",chrome:e,version:n(/(?:chrome|crios|crmo)\\/(\\d+(\\.\\d+)?)/i)}:u?N={name:\"Android\",version:E}:/safari|applewebkit/i.test(t)?(N={name:\"Safari\",safari:e},E&&(N.version=E)):i?(N={name:i==\"iphone\"?\"iPhone\":i==\"ipad\"?\"iPad\":\"iPod\"},E&&(N.version=E)):/googlebot/i.test(t)?N={name:\"Googlebot\",googlebot:e,version:n(/googlebot\\/(\\d+(\\.\\d+))/i)||E}:N={name:n(/^(.*)\\/(.*) /),version:r(/^(.*)\\/(.*) /)},!N.msedge&&/(apple)?webkit/i.test(t)?(/(apple)?webkit\\/537\\.36/i.test(t)?(N.name=N.name||\"Blink\",N.blink=e):(N.name=N.name||\"Webkit\",N.webkit=e),!N.version&&E&&(N.version=E)):!N.opera&&/gecko\\//i.test(t)&&(N.name=N.name||\"Gecko\",N.gecko=e,N.version=N.version||n(/gecko\\/(\\d+(\\.\\d+)?)/i)),!N.windowsphone&&(u||N.silk)?(N.android=e,N.osname=\"Android\"):!N.windowsphone&&i?(N[i]=e,N.ios=e,N.osname=\"iOS\"):y?(N.mac=e,N.osname=\"macOS\"):T?(N.xbox=e,N.osname=\"Xbox\"):g?(N.windows=e,N.osname=\"Windows\"):b&&(N.linux=e,N.osname=\"Linux\");var k=\"\";N.windows?k=C(n(/Windows ((NT|XP)( \\d\\d?.\\d)?)/i)):N.windowsphone?k=n(/windows phone (?:os)?\\s?(\\d+(\\.\\d+)*)/i):N.mac?(k=n(/Mac OS X (\\d+([_\\.\\s]\\d+)*)/i),k=k.replace(/[_\\s]/g,\".\")):i?(k=n(/os (\\d+([_\\s]\\d+)*) like mac os x/i),k=k.replace(/[_\\s]/g,\".\")):u?k=n(/android[ \\/-](\\d+(\\.\\d+)*)/i):N.webos?k=n(/(?:web|hpw)os\\/(\\d+(\\.\\d+)*)/i):N.blackberry?k=n(/rim\\stablet\\sos\\s(\\d+(\\.\\d+)*)/i):N.bada?k=n(/bada\\/(\\d+(\\.\\d+)*)/i):N.tizen&&(k=n(/tizen[\\/\\s](\\d+(\\.\\d+)*)/i)),k&&(N.osversion=k);var L=!N.windows&&k.split(\".\")[0];if(S||f||i==\"ipad\"||u&&(L==3||L>=4&&!x)||N.silk)N.tablet=e;else if(x||i==\"iphone\"||i==\"ipod\"||u||a||N.blackberry||N.webos||N.bada)N.mobile=e;return N.msedge||N.msie&&N.version>=10||N.yandexbrowser&&N.version>=15||N.vivaldi&&N.version>=1||N.chrome&&N.version>=20||N.samsungBrowser&&N.version>=4||N.whale&&s([N.version,\"1.0\"])===1||N.mzbrowser&&s([N.version,\"6.0\"])===1||N.focus&&s([N.version,\"1.0\"])===1||N.firefox&&N.version>=20||N.safari&&N.version>=6||N.opera&&N.version>=10||N.ios&&N.osversion&&N.osversion.split(\".\")[0]>=6||N.blackberry&&N.version>=10.1||N.chromium&&N.version>=20?N.a=e:N.msie&&N.version<10||N.chrome&&N.version<20||N.firefox&&N.version<20||N.safari&&N.version<6||N.opera&&N.version<10||N.ios&&N.osversion&&N.osversion.split(\".\")[0]<6||N.chromium&&N.version<20?N.c=e:N.x=e,N}function r(e){return e.split(\".\").length}function i(e,t){var n=[],r;if(Array.prototype.map)return Array.prototype.map.call(e,t);for(r=0;r=0){if(n[0][t]>n[1][t])return 1;if(n[0][t]!==n[1][t])return-1;if(t===0)return 0}}function o(e,r,i){var o=n;typeof r==\"string\"&&(i=r,r=void 0),r===void 0&&(r=!1),i&&(o=t(i));var u=\"\"+o.version;for(var a in e)if(e.hasOwnProperty(a)&&o[a]){if(typeof e[a]!=\"string\")throw new Error(\"Browser version in the minVersion map should be a string: \"+a+\": \"+String(e));return s([u,e[a]])<0}return r}function u(e,t,n){return!o(e,t,n)}var e=!0,n=t(typeof navigator!=\"undefined\"?navigator.userAgent||\"\":\"\");return n.test=function(e){for(var t=0;t\\n \\n \\n \\n \\n \\n \\n \\n \\n\\n\"","module.exports = \"\\n \\n \\n \\n\\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n \\n \\n \\n \\n \\n \\n \\n\\n\"","module.exports = \"\\n\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n \\n \\n \\n \\n \\n \\n \\n\\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n\\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n unionpay\\n Created with Sketch.\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","// get successful control from form and assemble into object\n// http://www.w3.org/TR/html401/interact/forms.html#h-17.13.2\n\n// types which indicate a submit action and are not successful controls\n// these will be ignored\nvar k_r_submitter = /^(?:submit|button|image|reset|file)$/i;\n\n// node names which could be successful controls\nvar k_r_success_contrls = /^(?:input|select|textarea|keygen)/i;\n\n// Matches bracket notation.\nvar brackets = /(\\[[^\\[\\]]*\\])/g;\n\n// serializes form fields\n// @param form MUST be an HTMLForm element\n// @param options is an optional argument to configure the serialization. Default output\n// with no options specified is a url encoded string\n// - hash: [true | false] Configure the output type. If true, the output will\n// be a js object.\n// - serializer: [function] Optional serializer function to override the default one.\n// The function takes 3 arguments (result, key, value) and should return new result\n// hash and url encoded str serializers are provided with this module\n// - disabled: [true | false]. If true serialize disabled fields.\n// - empty: [true | false]. If true serialize empty fields\nfunction serialize(form, options) {\n if (typeof options != 'object') {\n options = { hash: !!options };\n }\n else if (options.hash === undefined) {\n options.hash = true;\n }\n\n var result = (options.hash) ? {} : '';\n var serializer = options.serializer || ((options.hash) ? hash_serializer : str_serialize);\n\n var elements = form && form.elements ? form.elements : [];\n\n //Object store each radio and set if it's empty or not\n var radio_store = Object.create(null);\n\n for (var i=0 ; i\n \n
\n
\n \n \n
\n
\n {content.windowMessage}\n
\n
\n
\n
\n
\n
\n\n
\n {outlet}\n
\n\n \n
\n );\n\n const container = (\n \n \n { el }\n \n \n );\n\n on(EVENT.CLOSE, () => {\n el.className += ` ${ tag }-loading`;\n });\n\n return (\n
\n \n\n \n
\n );\n}\n\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { create } from 'zoid/src';\nimport { type Component } from 'zoid/src/component/component';\nimport { base64encode } from 'belter/src';\n\nimport { ENV } from '../constants';\nimport { getButtonSessionID, getBrowserLocale, getSessionID, getCurrentScriptUrl } from '../lib';\nimport { config } from '../config';\n\nimport { containerTemplate } from './template';\n\ntype BillingOptions = {|\n client : {\n [string] : (string | ZalgoPromise)\n },\n env? : string,\n locale? : string,\n logLevel : string,\n awaitPopupBridge : Function,\n meta : Object,\n commit : boolean,\n token : string\n|};\n\nexport const BillingPage : Component = create({\n tag: 'billing-page',\n name: 'billing-page',\n\n buildUrl(props) : string {\n const env = props.env || config.env;\n return `${ config.inlinedCardFieldUrls[env] }/billing`;\n },\n\n get domain() : Object {\n return {\n ...config.paypalDomains,\n [ ENV.LOCAL ]: /^http:\\/\\/localhost.paypal.com:\\d+$/\n };\n },\n\n scrolling: true,\n\n props: {\n sessionID: {\n type: 'string',\n required: false,\n def() : string {\n return getSessionID();\n },\n queryParam: true\n },\n\n\n token: {\n type: 'string',\n required: true,\n queryParam: true\n },\n\n buttonSessionID: {\n type: 'string',\n required: false,\n def() : ?string {\n return getButtonSessionID();\n },\n queryParam: true\n },\n\n commit: {\n type: 'boolean',\n required: false,\n queryParam: true\n },\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n },\n\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n allowDelegate: true,\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n }\n },\n\n cardType: {\n type: 'string',\n required: false\n },\n prefilledZipCode: {\n type: 'string',\n required: false\n },\n\n onEvent: {\n type: 'function',\n required: false,\n sameDomain: true\n },\n\n dispatch: {\n type: 'object',\n required: false,\n sameDomain: true\n },\n\n onCancel: {\n type: 'function',\n required: false,\n once: true,\n noop: true\n },\n\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n }\n },\n\n\n containerTemplate\n});\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { create } from 'zoid/src';\nimport { base64encode } from 'belter/src';\n\nimport { getBrowserLocale, getCurrentScriptUrl } from '../lib';\nimport { config } from '../config';\nimport { containerTemplate } from '../billing/template';\n\nexport const ThreeDomainSecure = create({\n tag: 'paypal-3ds',\n name: '3ds',\n\n buildUrl(props) : string {\n const env = props.env || config.env;\n return `${ config.inlinedCardFieldUrls[env] }/init3ds`;\n },\n\n get domain() : Object {\n return {\n ...config.paypalDomains\n };\n },\n\n scrolling: true,\n\n props: {\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n },\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n allowDelegate: true,\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n }\n },\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n },\n challengeUrl: {\n type: 'string'\n },\n threeDomainSecureToken: {\n type: 'string'\n },\n method: {\n type: 'string'\n },\n onSuccess: {\n type: 'function',\n required: false\n },\n onError: {\n type: 'function',\n required: false\n },\n onCancel: {\n type: 'function',\n required: true,\n allowDelegate: true\n }\n },\n\n\n containerTemplate\n});\n","/* @flow */\n\nimport { track, info } from 'beaver-logger/client';\n\nimport { config } from '../config';\nimport { FPTI, PPTM_ID } from '../constants';\nimport { stringifyError, extendUrl, loadScript, getElement, isPayPalDomain } from '../lib';\n\n\nfunction shouldCreateInitialPptmScript() : boolean {\n const id = window.location.hostname;\n\n if (!id) {\n return false;\n }\n\n if (isPayPalDomain()) {\n return false;\n }\n\n const existingScript = getElement(PPTM_ID);\n const alreadyDownloaded = Boolean(existingScript);\n\n if (alreadyDownloaded) {\n info('pptm_tried_loading_twice');\n return false;\n }\n\n return true;\n}\n\nfunction removePptm() {\n const script = getElement(PPTM_ID);\n\n if (script) {\n // $FlowFixMe\n script.parentNode.removeChild(script);\n }\n}\n\nexport function pptmFactory() : Object {\n let noContentFoundInContainer = false;\n const callback = `__pptmLoadedWithNoContent`;\n let listener;\n\n const obj = {\n /*\n In the button component, we set up a global window[callback] that will be called in pptm `onload` attribute.\n Button.render calls `reloadPptmScript`, which checks if window[callback] has been called yet (meaning, it checks\n if pptm.js was loaded before Button.render was called). If so, we'll check to see if we should reload PPTM\n now that we might have a client ID from the Button.render method.\n If pptm.js hasn't loaded yet, then we'll set up a listener to the same logic above to defer it until\n pptm.js actually loads.\n */\n reloadPptmScript(clientId : ?string) {\n const tryCreatePptmScript = () => {\n if (obj.shouldReloadPptmScript(clientId)) {\n obj.removePptm();\n obj.createPptmScript(clientId);\n } else {\n // Defer until later, since reloadPptmScript might have been called\n // before pptm loaded, so we'll still want to hook into the script load.\n listener = tryCreatePptmScript;\n }\n };\n\n tryCreatePptmScript();\n },\n listenForLoadWithNoContent() {\n window[callback] = () => {\n noContentFoundInContainer = true;\n\n if (listener) {\n listener();\n listener = undefined;\n }\n };\n },\n listenForButtonRender() {\n window.paypalDDL = window.paypalDDL || [];\n const buttonRenderEvent = window.paypalDDL.filter(e => e.event === 'paypalButtonRender');\n if (buttonRenderEvent.length === 0) {\n window.paypalDDL.push({ event: 'paypalButtonRender' });\n }\n },\n get callback() : string {\n return callback;\n },\n get noContentFoundInContainer() : boolean {\n return noContentFoundInContainer;\n },\n createPptmScript: (clientId : ?string) => {\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.PPTM,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.PPTM_LOAD\n });\n \n const params = {\n t: 'xo',\n id: window.location.hostname,\n mrid: config.merchantID,\n client_id: '',\n v: config.version,\n source: 'checkoutjs'\n };\n \n if (clientId) {\n params.client_id = clientId;\n } else {\n delete params.client_id;\n }\n \n const fullUrl = extendUrl(config.pptmUrl, params);\n \n loadScript(fullUrl, 0, {\n async: true,\n id: PPTM_ID\n }).then(() => {\n // If the snippet is empty, then fire the callback.\n // We assume non-empty pptm.js bundles with init the paypalDDL and push an event called\n // `snippetRun` to it.\n if (!(window.paypalDDL && window.paypalDDL[0] && window.paypalDDL[0].event === 'snippetRun')) {\n window[callback]();\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.PPTM,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.PPTM_LOADED\n });\n }).catch(err => {\n info('pptm_script_error', { error: stringifyError(err) });\n });\n },\n shouldCreateInitialPptmScript,\n /*\n During Button render if a client ID was provided, we'll want to refresh the\n pptm script to try to pull down a container by that value.\n We'll only do this if we're not on the PayPal domain, or if\n a merchant ID wasn't already provided (since container look-up can\n also happen by merchant ID). Note that this will only happen\n if there was no content found in the container that was pulled down\n in the `setup` script. This is important because we don't want\n to pull down multiple containers that actually contain content,\n otherwise we'll be firing duplicate tags.\n */\n shouldReloadPptmScript(clientId : ?string) : boolean {\n if (noContentFoundInContainer === false) {\n return false;\n }\n\n if (isPayPalDomain()) {\n return false;\n }\n \n // If a merchant ID was already provided, then that meant we initially\n // loaded the pptm script with that value as the main container\n // look-up value, so in this case we don't want to reload pptm.\n if (config.merchantID) {\n return false;\n }\n \n if (clientId) {\n return true;\n }\n \n return false;\n },\n removePptm\n };\n\n return obj;\n}\n","/* @flow */\n\nimport { pptmFactory } from './pptm-factory';\n\nexport const pptm = pptmFactory();\n","/* @flow */\n\nexport * from './pptm';\nexport * from './pptm-factory';\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { on, send } from 'post-robot/src';\nimport { base64encode } from 'belter/src';\nimport { info, track } from 'beaver-logger/client';\nimport { getAncestor, isSameDomain } from 'cross-domain-utils/src';\n\nimport { config } from '../config';\nimport { FPTI, PAYMENT_TYPE } from '../constants';\nimport { request, memoize, isPayPalDomain, uniqueID } from '../lib';\n\ntype ProxyRest = {\n [string] : (...args : $ReadOnlyArray) => ZalgoPromise<*>\n};\n\nlet proxyRest : ProxyRest = {};\n\nconst createAccessToken = memoize((env : string, client : { [key : string] : string }) : ZalgoPromise => {\n\n info(`rest_api_create_access_token`);\n\n env = env || config.env;\n\n const clientID : string = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (proxyRest.createAccessToken && !proxyRest.createAccessToken.source.closed) {\n return proxyRest.createAccessToken(env, client);\n }\n\n const basicAuth : string = base64encode(`${ clientID }:`);\n\n return request({\n\n method: `post`,\n url: config.authApiUrls[env],\n headers: {\n Authorization: `Basic ${ basicAuth }`\n },\n data: {\n grant_type: `client_credentials`\n }\n\n }).then(res => {\n\n if (res && res.error === 'invalid_client') {\n throw new Error(`Auth Api invalid ${ env } client id: ${ clientID }:\\n\\n${ JSON.stringify(res, null, 4) }`);\n }\n\n if (!res || !res.access_token) {\n throw new Error(`Auth Api response error:\\n\\n${ JSON.stringify(res, null, 4) }`);\n }\n\n return res.access_token;\n });\n\n}, { time: 10 * 60 * 1000 });\n\nconst createExperienceProfile = memoize((env : string, client : { [key : string] : string }, experienceDetails : Object = {}) : ZalgoPromise => {\n\n info(`rest_api_create_experience_profile`);\n\n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (proxyRest.createExperienceProfile && !proxyRest.createExperienceProfile.source.closed) {\n return proxyRest.createExperienceProfile(env, client, experienceDetails);\n }\n\n experienceDetails.temporary = true;\n experienceDetails.name = experienceDetails.name ? `${ experienceDetails.name }_${ Math.random().toString() }` : Math.random().toString();\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n return request({\n method: `post`,\n url: config.experienceApiUrls[env],\n headers: {\n Authorization: `Bearer ${ accessToken }`\n },\n json: experienceDetails\n });\n\n }).then((res) : string => {\n\n if (res && res.error) {\n throw new Error(res.error);\n }\n\n if (!res.id) {\n throw new Error(`No id in experience profile response:\\n\\n${ JSON.stringify(res, null, 4) }`);\n }\n\n return res.id;\n });\n\n}, { time: 10 * 60 * 1000 });\n\nfunction logPaymentResponse(res) {\n\n if (!res) {\n return;\n }\n\n let paymentToken;\n let paymentID;\n\n if (res.id) {\n paymentID = res.id;\n }\n\n if (res.links && res.links.length) {\n for (let i = 0; i < res.links.length; i++) {\n if (res.links[i].method === 'REDIRECT' && res.links[i].rel === 'approval_url') {\n const match = res.links[i].href.match(/token=((EC-)?[A-Z0-9]{17})/);\n if (match) {\n paymentToken = match[1];\n }\n }\n }\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.BUTTON,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CREATE_PAYMENT,\n [ FPTI.KEY.CONTEXT_TYPE ]: FPTI.CONTEXT_TYPE[PAYMENT_TYPE.PAY_ID],\n [ FPTI.KEY.PAY_ID ]: paymentID,\n [ FPTI.KEY.TOKEN ]: paymentToken,\n [ FPTI.KEY.CONTEXT_ID ]: paymentID\n });\n}\n\nfunction getDefaultReturnUrl() : string {\n return `https://www.paypal.com/checkoutnow/error`;\n}\n\nfunction createTracking(env : string, client : { [key : string] : string }, merchantID, trackingData) : Object {\n \n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n const trackingID = uniqueID();\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n const headers : Object = {\n Authorization: `Bearer ${ accessToken }`\n };\n\n return request({\n method: `put`,\n url: `${ config.trackingApiUrls[env] }/${ merchantID }/${ trackingID }`,\n headers,\n json: {\n 'tracking_id': trackingID,\n 'additional_data': trackingData\n }\n });\n\n }).then(() => {\n return trackingID;\n });\n}\n\nfunction createPayment(env : string, client : { [key : string] : string }, paymentDetails : Object) : ZalgoPromise {\n\n info(`rest_api_create_checkout_token`);\n\n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n let { payment, experience, meta, tracking } = paymentDetails;\n\n if (!payment) {\n throw new Error(`Expected payment details to be passed`);\n }\n\n if (proxyRest.createPayment && !proxyRest.createPayment.source.closed) {\n return proxyRest.createPayment(env, client, { payment, experience, meta, tracking });\n }\n\n payment = { ...payment };\n payment.intent = payment.intent || 'sale';\n payment.redirect_urls = payment.redirect_urls || {};\n payment.redirect_urls.return_url = payment.redirect_urls.return_url || getDefaultReturnUrl();\n payment.redirect_urls.cancel_url = payment.redirect_urls.cancel_url || getDefaultReturnUrl();\n payment.payer = payment.payer || {};\n payment.payer.payment_method = payment.payer.payment_method || 'paypal';\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n return ZalgoPromise.try(() => {\n\n if (experience) {\n return ZalgoPromise.resolve(createExperienceProfile(env, client, experience));\n }\n\n }).then((experienceID) : ZalgoPromise => {\n\n return ZalgoPromise.try(() => {\n\n if (tracking) {\n return ZalgoPromise.resolve(createTracking(env, client, tracking.id, tracking.data));\n }\n\n }).then((trackingID) : ZalgoPromise => {\n\n if (experienceID) {\n payment.experience_profile_id = experienceID;\n }\n\n const headers : Object = {\n Authorization: `Bearer ${ accessToken }`\n };\n\n if (trackingID) {\n headers['Paypal-Client-Metadata-Id'] = trackingID;\n }\n\n if (meta && meta.partner_attribution_id) {\n headers['PayPal-Partner-Attribution-Id'] = meta.partner_attribution_id;\n }\n\n return request({\n method: `post`,\n url: config.paymentApiUrls[env],\n headers,\n json: payment\n });\n });\n });\n\n }).then((res) : string => {\n\n logPaymentResponse(res);\n\n if (res && res.id) {\n return res.id;\n }\n\n throw new Error(`Payment Api response error:\\n\\n${ JSON.stringify(res, null, 4) }`);\n\n });\n}\n\nfunction createOrder(env : string, client : { [key : string] : string }, paymentDetails : Object) : ZalgoPromise {\n\n info(`rest_api_create_order_token`);\n\n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n let { order, meta } = paymentDetails;\n\n if (!order) {\n throw new Error(`Expected order details to be passed`);\n }\n\n if (proxyRest.createOrder && !proxyRest.createOrder.source.closed) {\n return proxyRest.createOrder(env, client, { order, meta });\n }\n\n order = { ...order };\n order.intent = order.intent || 'CAPTURE';\n order.application_context = order.application_context || {};\n order.application_context.return_url = order.application_context.return_url || getDefaultReturnUrl();\n order.application_context.cancel_url = order.application_context.cancel_url || getDefaultReturnUrl();\n order.purchase_units = order.purchase_units || [];\n order.purchase_units[0] = order.purchase_units[0] || {};\n order.purchase_units.forEach(unit => {\n unit.reference_id = unit.reference_id || Math.random().toString();\n });\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n const headers : Object = {\n Authorization: `Bearer ${ accessToken }`\n };\n\n if (meta && meta.partner_attribution_id) {\n headers['PayPal-Partner-Attribution-Id'] = meta.partner_attribution_id;\n }\n\n return request({\n method: `post`,\n url: config.orderApiUrls[env],\n headers,\n json: order\n });\n\n }).then((res) : string => {\n\n logPaymentResponse(res);\n\n if (res && res.id) {\n return res.id;\n }\n\n throw new Error(`Payment Api response error:\\n\\n${ JSON.stringify(res, null, 4) }`);\n });\n}\n\nexport function createBillingAgreement(env : string, client : { [key : string] : string }, billingDetails : Object, experienceDetails? : ?Object) : ZalgoPromise {\n\n info(`rest_api_create_billing_token`);\n\n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (proxyRest.createBillingAgreement && !proxyRest.createBillingAgreement.source.closed) {\n return proxyRest.createBillingAgreement(env, client, billingDetails, experienceDetails);\n }\n\n billingDetails = { ...billingDetails };\n billingDetails.plan = billingDetails.plan || {};\n billingDetails.plan.merchant_preferences = billingDetails.plan.merchant_preferences || {};\n billingDetails.plan.merchant_preferences.return_url = billingDetails.plan.merchant_preferences.return_url || getDefaultReturnUrl();\n billingDetails.plan.merchant_preferences.cancel_url = billingDetails.plan.merchant_preferences.cancel_url || getDefaultReturnUrl();\n billingDetails.payer = billingDetails.payer || {};\n billingDetails.payer.payment_method = billingDetails.payer.payment_method || 'paypal';\n\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n return ZalgoPromise.try(() => {\n\n if (experienceDetails) {\n return ZalgoPromise.resolve(createExperienceProfile(env, client, experienceDetails));\n }\n\n }).then((experienceID) : ZalgoPromise => {\n\n if (experienceID) {\n billingDetails.experience_profile_id = experienceID;\n }\n\n return request({\n method: `post`,\n url: config.billingApiUrls[env],\n headers: {\n Authorization: `Bearer ${ accessToken }`\n },\n json: billingDetails\n });\n });\n\n }).then(res => {\n\n if (res && res.token_id) {\n return res.token_id;\n }\n\n throw new Error(`Billing Api response error:\\n\\n${ JSON.stringify(res, null, 4) }`);\n });\n}\n\nexport const rest = {\n payment: {\n create: createPayment\n },\n order: {\n create: createOrder\n },\n billingAgreement: {\n create: createBillingAgreement\n },\n experience: {\n create: createExperienceProfile\n }\n};\n\nconst PROXY_REST = `proxy_rest`;\nconst parentWin = getAncestor();\n\non(PROXY_REST, { domain: config.paypal_domain_regex }, ({ data }) => {\n proxyRest = data;\n});\n\nif (parentWin && isPayPalDomain() && !isSameDomain(parentWin)) {\n send(parentWin, PROXY_REST, { createAccessToken, createExperienceProfile, createPayment, createBillingAgreement, createOrder })\n .catch(() => {\n // pass\n });\n}\n","/* @flow */\n\nimport { info, track, immediateFlush } from 'beaver-logger/client';\n\nimport { FPTI, PAYMENT_TYPE } from './constants';\nimport { getReturnToken, getSessionState, getDomainSetting, eventEmitter } from './lib';\n\nexport const onAuthorizeListener = eventEmitter();\n\nfunction log(experiment : string, treatment : string, token : ?string, state : string) {\n\n getSessionState(session => {\n\n let event = `${ experiment }_${ treatment }_${ state }`;\n const loggedEvents = session.loggedExperimentEvents = session.loggedExperimentEvents || [];\n const duplicate = loggedEvents.indexOf(event) !== -1;\n\n if (duplicate) {\n info(`duplicate_${ event }`);\n\n } else {\n info(event);\n loggedEvents.push(event);\n\n const edge = window.navigator && window.navigator.userAgent && window.navigator.userAgent.match(/Edge\\/[0-9]{2}/);\n\n if (edge) {\n event = info(`${ edge[0].toLowerCase().replace('/', '_') }_${ event }`);\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: state,\n [ FPTI.KEY.EXPERIMENT_NAME ]: experiment,\n [ FPTI.KEY.TREATMENT_NAME ]: treatment,\n [ FPTI.KEY.TOKEN ]: token,\n [ FPTI.KEY.CONTEXT_ID ]: token,\n [ FPTI.KEY.CONTEXT_TYPE ]: token ? FPTI.CONTEXT_TYPE[PAYMENT_TYPE.EC_TOKEN] : FPTI.CONTEXT_TYPE.BUTTON_SESSION_ID\n });\n\n immediateFlush();\n }\n });\n}\n\nexport function logExperimentTreatment({ experiment, treatment, state, token } : { experiment : string, treatment : string, state : string, token : ?string }) {\n\n if (!experiment || !treatment) {\n return;\n }\n\n getSessionState(session => {\n session.externalExperiment = experiment;\n session.externalExperimentTreatment = treatment;\n\n if (token) {\n session.externalExperimentToken = token;\n }\n });\n\n log(experiment, treatment, token, state);\n}\n\nfunction logReturn(token : string) {\n\n const {\n externalExperiment,\n externalExperimentTreatment,\n externalExperimentToken\n } = getSessionState(session => session);\n\n if (externalExperiment && externalExperimentTreatment && externalExperimentToken === token) {\n log(externalExperiment, externalExperimentTreatment, token, `complete`);\n } else {\n info(`experiment_mismatch`, {\n token,\n externalExperiment,\n externalExperimentTreatment,\n externalExperimentToken\n });\n }\n}\n\nif (getDomainSetting('log_authorize')) {\n\n onAuthorizeListener.once(({ paymentToken }) => {\n setTimeout(() => {\n logReturn(paymentToken);\n }, 1);\n });\n\n const returnToken = getReturnToken();\n\n if (returnToken) {\n setTimeout(() => {\n if (returnToken) {\n logReturn(returnToken);\n }\n }, 1);\n }\n}\n","/* @flow */\n\nimport { once, noop } from 'zoid/src/lib';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { error } from 'beaver-logger/client';\nimport type { CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { extendUrl, redirect, awaitKey, stringifyError } from '../lib';\nimport { config } from '../config';\nimport { FUNDING } from '../constants';\n\nimport { determineParameterFromToken, determineUrl } from './checkout';\n\nconst OPTYPE = {\n PAYMENT: 'payment',\n CANCEL: 'cancel'\n};\n\nconst CONTINGENCY = {\n PAYMENT_CANCELLED: 'PAYMENT_CANCELLED'\n};\n\ntype PopupBridge = {|\n open : (string) => ZalgoPromise\n|};\n\nfunction wrapPopupBridge(popupBridge : Object) : PopupBridge {\n return {\n open(url : string) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n popupBridge.onComplete = (err, result) => {\n if (!result) {\n return reject(new Error('No payload passed in popupBridge.onComplete'));\n }\n\n return err ? reject(err) : resolve(result);\n };\n\n popupBridge.onCancel = () => {\n const err = new Error(CONTINGENCY.PAYMENT_CANCELLED);\n // $FlowFixMe\n err.code = CONTINGENCY.PAYMENT_CANCELLED;\n return reject(err);\n };\n\n popupBridge.open(extendUrl(url, { redirect_uri: popupBridge.getReturnUrlPrefix() }));\n });\n }\n };\n}\n\nfunction validateCheckoutProps(props) {\n if (!props.payment) {\n throw new Error(`Expected props.payment to be passed`);\n }\n\n if (!props.onAuthorize) {\n throw new Error(`Expected props.onAuthorize to be passed`);\n }\n\n if (props.env && !config.checkoutUrls[props.env]) {\n throw new Error(`Invalid props.env: ${ props.env }`);\n }\n}\n\nfunction normalizeCheckoutProps(props : Object) : { env : string, payment : Function, onAuthorize : Function, onCancel : Function } {\n const env = props.env = props.env || config.env;\n\n const payment = props.payment;\n const onAuthorize = once(props.onAuthorize);\n const onCancel = once(props.onCancel || noop);\n\n return { env, payment, onAuthorize, onCancel };\n}\n\nfunction getUrl(props : { env : string, payment : Function, onAuthorize : Function, onCancel? : Function, commit? : boolean }) : ZalgoPromise {\n\n const { env, payment } = normalizeCheckoutProps(props);\n\n return ZalgoPromise.try(payment, { props }).then(token => {\n if (!token) {\n throw new Error(`Expected props.payment to return a payment id or token`);\n }\n\n return extendUrl(determineUrl(env, FUNDING.PAYPAL, token), {\n [determineParameterFromToken(token)]: token,\n\n useraction: props.commit ? 'commit' : '',\n native_xo: '1'\n });\n });\n}\n\nfunction extractDataFromQuery(query : Object) : Object {\n\n const data : Object = {\n paymentToken: query.token,\n billingToken: query.ba_token,\n paymentID: query.paymentId,\n payerID: query.PayerID,\n intent: query.intent\n };\n \n const { opType, return_uri, cancel_uri } = query;\n\n if (opType === OPTYPE.PAYMENT) {\n data.returnUrl = return_uri;\n\n } else if (opType === OPTYPE.CANCEL) {\n data.cancelUrl = cancel_uri;\n }\n\n return data;\n}\n\nfunction buildActions(query : Object) : Object {\n \n const actions : Object = {\n close: noop,\n closeComponent: noop\n };\n\n const { opType, return_uri, cancel_uri } = query;\n\n if (opType === OPTYPE.PAYMENT) {\n actions.redirect = (win : CrossDomainWindowType = window, redirectUrl : string = return_uri) : ZalgoPromise => {\n return redirect(win, redirectUrl);\n };\n\n } else if (opType === OPTYPE.CANCEL) {\n actions.redirect = (win : CrossDomainWindowType = window, redirectUrl : string = cancel_uri) : ZalgoPromise => {\n return redirect(win, redirectUrl);\n };\n }\n\n return actions;\n}\n\nfunction renderThroughPopupBridge(props : Object, popupBridge : PopupBridge) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n validateCheckoutProps(props);\n\n }).then(() => {\n\n return getUrl(props);\n \n }).then(url => {\n\n return popupBridge.open(url);\n\n }).then(payload => {\n\n const { opType } = payload.queryItems;\n const { onAuthorize, onCancel } = normalizeCheckoutProps(props);\n\n const data = extractDataFromQuery(payload.queryItems);\n const actions = buildActions(payload.queryItems);\n \n if (opType === OPTYPE.PAYMENT) {\n return onAuthorize(data, actions);\n\n } else if (opType === OPTYPE.CANCEL) {\n return onCancel(data, actions);\n \n } else {\n throw new Error(`Invalid opType: ${ opType }`);\n }\n\n }).catch(err => {\n\n if (err && err.code === CONTINGENCY.PAYMENT_CANCELLED) {\n const { onCancel } = normalizeCheckoutProps(props);\n return onCancel({}, {});\n }\n\n throw err;\n });\n}\n\nexport function awaitPopupBridge(Button : Object) : ZalgoPromise {\n if (Button.xprops && Button.xprops.awaitPopupBridge) {\n return Button.xprops.awaitPopupBridge();\n }\n\n return awaitKey(window, 'popupBridge').then(popupBridge => {\n return wrapPopupBridge(popupBridge);\n });\n}\n\nexport function setupPopupBridgeProxy(Checkout : Object, Button : Object) {\n\n let popupBridge;\n\n awaitPopupBridge(Button).then(bridge => {\n popupBridge = bridge;\n });\n\n function doRender(props, original) : ZalgoPromise {\n if (!popupBridge) {\n return original();\n }\n \n return renderThroughPopupBridge(props, popupBridge)\n .catch(err => {\n error(`popup_bridge_error`, { err: stringifyError(err) });\n return original();\n });\n }\n\n const render = Checkout.render;\n Checkout.render = function popupBridgeRender(props : Object) : ZalgoPromise {\n return doRender(props, () => render.apply(this, arguments));\n };\n\n const renderTo = Checkout.renderTo;\n Checkout.renderTo = function popupBridgeRenderTo(win : CrossDomainWindowType, props : Object) : ZalgoPromise {\n return doRender(props, () => renderTo.apply(this, arguments));\n };\n\n const renderPopupTo = Checkout.renderPopupTo;\n Checkout.renderPopupTo = function popupBridgeRenderPopupTo(win : CrossDomainWindowType, props : Object) : ZalgoPromise {\n return doRender(props, () => renderPopupTo.apply(this, arguments));\n };\n}\n","/* @flow */\n/* global __paypal_checkout__*/\n\nimport { FUNDING, COUNTRY, CARD, PLATFORM, DEFAULT, ENV } from '../constants';\n\nexport const FUNDING_PRIORITY = [\n FUNDING.PAYPAL,\n FUNDING.VENMO,\n FUNDING.ITAU,\n FUNDING.CREDIT,\n FUNDING.CARD,\n FUNDING.IDEAL,\n FUNDING.ELV,\n FUNDING.BANCONTACT,\n FUNDING.GIROPAY,\n FUNDING.EPS,\n FUNDING.SOFORT,\n FUNDING.MYBANK,\n FUNDING.BLIK,\n FUNDING.P24,\n FUNDING.PAYU,\n FUNDING.VERKKOPANKKI,\n FUNDING.TRUSTLY,\n FUNDING.MAXIMA,\n FUNDING.BOLETO,\n FUNDING.OXXO\n];\n\nexport const FUNDING_ORDER = [\n FUNDING.PAYPAL,\n FUNDING.VENMO,\n FUNDING.ITAU,\n FUNDING.CREDIT,\n FUNDING.IDEAL,\n FUNDING.ELV,\n FUNDING.BANCONTACT,\n FUNDING.GIROPAY,\n FUNDING.EPS,\n FUNDING.SOFORT,\n FUNDING.MYBANK,\n FUNDING.BLIK,\n FUNDING.P24,\n FUNDING.PAYU,\n FUNDING.VERKKOPANKKI,\n FUNDING.TRUSTLY,\n FUNDING.MAXIMA,\n FUNDING.BOLETO,\n FUNDING.OXXO,\n FUNDING.CARD\n];\n\nexport const FUNDING_CONFIG = {\n\n [ DEFAULT ]: {\n enabled: true,\n\n allowOptIn: true,\n allowOptOut: true,\n allowRemember: true,\n\n allowHorizontal: true,\n allowVertical: true,\n\n requireCommitAsTrue: false\n },\n\n [ FUNDING.PAYPAL ]: {\n default: true,\n\n allowOptIn: false,\n allowOptOut: false,\n\n allowHorizontal: true,\n allowVertical: true\n },\n\n [ FUNDING.CARD ]: {\n // $FlowFixMe\n default: (typeof __paypal_checkout__ === 'undefined' ? true : __paypal_checkout__.serverConfig.paypalMerchantConfiguration.creditCard.isPayPalBranded),\n\n allowHorizontal: false,\n allowVertical: true\n },\n\n [ FUNDING.VENMO ]: {\n allowOptOut: true,\n allowedCountries: [\n COUNTRY.US\n ],\n\n allowHorizontal: true,\n allowVertical: true\n },\n [ FUNDING.ITAU ]: {\n allowOptOut: true,\n allowedCountries: [\n COUNTRY.BR\n ],\n\n allowHorizontal: true,\n allowVertical: true\n },\n\n [ FUNDING.CREDIT ]: {\n allowedCountries: [\n COUNTRY.US,\n COUNTRY.GB,\n COUNTRY.DE\n ],\n defaultVerticalCountries: [\n COUNTRY.US\n ],\n platforms: [\n PLATFORM.MOBILE\n ],\n\n allowHorizontal: true,\n allowVertical: true,\n allowRemember: true\n },\n\n [ FUNDING.IDEAL ]: {\n allowedCountries: [\n COUNTRY.NL\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.ELV ]: {\n allowedCountries: [\n COUNTRY.DE\n ],\n defaultVerticalCountries: [\n COUNTRY.DE\n ],\n\n allowHorizontal: false,\n allowVertical: true\n },\n\n [ FUNDING.BANCONTACT ]: {\n allowedCountries: [\n COUNTRY.BE\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.GIROPAY ]: {\n allowedCountries: [\n COUNTRY.DE\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.SOFORT ]: {\n allowedCountries: [\n COUNTRY.DE,\n COUNTRY.AT,\n COUNTRY.BE,\n COUNTRY.ES,\n COUNTRY.IT,\n COUNTRY.NL\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.EPS ]: {\n allowedCountries: [\n COUNTRY.AT\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.MYBANK ]: {\n allowedCountries: [\n COUNTRY.IT\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.P24 ]: {\n allowedCountries: [\n COUNTRY.PL\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.PAYU ]: {\n allowedCountries: [\n COUNTRY.CZ\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.VERKKOPANKKI ]: {\n allowedCountries: [\n COUNTRY.FI\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.BLIK ]: {\n allowedCountries: [\n COUNTRY.PL\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.TRUSTLY ]: {\n allowedCountries: [\n COUNTRY.DE,\n COUNTRY.DK,\n COUNTRY.EE,\n COUNTRY.ES,\n COUNTRY.FI,\n COUNTRY.GB,\n COUNTRY.IT,\n COUNTRY.MT,\n COUNTRY.NL,\n COUNTRY.NO,\n COUNTRY.SE\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.MAXIMA ]: {\n allowedCountries: [\n COUNTRY.LT\n ],\n\n allowedEnvs: [\n ENV.LOCAL,\n ENV.STAGE,\n ENV.TEST\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.BOLETO ]: {\n allowedCountries: [\n COUNTRY.BR\n ],\n\n allowedEnvs: [\n ENV.LOCAL,\n ENV.STAGE,\n ENV.TEST\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.OXXO ]: {\n allowedCountries: [\n COUNTRY.MX\n ],\n\n allowedEnvs: [\n ENV.LOCAL,\n ENV.STAGE,\n ENV.TEST\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.ZIMPLER ]: {\n allowedCountries: [],\n\n allowHorizontal: false,\n allowVertical: false,\n requireCommitAsTrue: true\n }\n};\n\nexport const CARD_CONFIG = {\n\n [ DEFAULT ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX\n ]\n },\n\n [ COUNTRY.GB ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.DISCOVER,\n CARD.MAESTRO\n ]\n },\n\n [ COUNTRY.US ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.DISCOVER\n ]\n },\n\n [ COUNTRY.BR ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.HIPER,\n CARD.ELO\n ]\n },\n\n [ COUNTRY.JP ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.JCB\n ]\n },\n\n [ COUNTRY.CN ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.CUP\n ]\n }\n};\n\nfunction getConfig(conf : Object, category : string, key : string, def : ?T) : T {\n const categoryConfig = conf[category];\n\n if (categoryConfig && categoryConfig.hasOwnProperty(key)) {\n return categoryConfig[key];\n }\n\n if (conf[DEFAULT] && conf[DEFAULT].hasOwnProperty(key)) {\n return conf[DEFAULT][key];\n }\n\n if (arguments.length >= 4) {\n // $FlowFixMe\n return def;\n }\n\n throw new Error(`No value found for ${ category }:${ key }`);\n}\n\nexport function getFundingConfig(source : string, key : string, def : ?T) : T {\n return getConfig(FUNDING_CONFIG, source, key, def);\n}\n\nexport function getCardConfig(source : string, key : string, def : ?T) : T {\n return getConfig(CARD_CONFIG, source, key, def);\n}\n","/* @flow */\n\nimport { ENV, CARD_PRIORITY, FUNDING, BUTTON_LAYOUT, FUNDING_ELIGIBILITY_REASON } from '../constants';\nimport type { LocaleType, FundingSource, FundingSelection, FundingList } from '../types';\n\nimport { getFundingConfig, getCardConfig, FUNDING_PRIORITY, FUNDING_CONFIG } from './config';\n\nconst fundingEligibilityReasons = [];\n\nexport function isFundingIneligible(source : FundingSource, { locale, funding, layout, commit, env } :\n { locale : LocaleType, funding : FundingSelection, layout : string, commit? : boolean, env : string }) : ?string {\n\n const isVertical = layout === BUTTON_LAYOUT.VERTICAL;\n const allowSecondary = getFundingConfig(source, isVertical ? 'allowVertical' : 'allowHorizontal');\n\n if (!allowSecondary) {\n return FUNDING_ELIGIBILITY_REASON.SECONDARY_DISALLOWED;\n }\n\n if (funding.disallowed.indexOf(source) !== -1 && getFundingConfig(source, 'allowOptOut')) {\n return FUNDING_ELIGIBILITY_REASON.OPT_OUT;\n }\n\n if (funding.disallowed.indexOf(source) !== -1 && source === FUNDING.VENMO) {\n return FUNDING_ELIGIBILITY_REASON.OPT_OUT;\n }\n if (funding.disallowed.indexOf(source) !== -1 && source === FUNDING.ITAU) {\n return FUNDING_ELIGIBILITY_REASON.OPT_OUT;\n }\n\n if (getFundingConfig(source, 'allowedCountries', [ locale.country ]).indexOf(locale.country) === -1) {\n return FUNDING_ELIGIBILITY_REASON.DISALLOWED_COUNTRY;\n }\n\n if (getFundingConfig(source, 'requireCommitAsTrue') && !commit) {\n return FUNDING_ELIGIBILITY_REASON.COMMIT_NOT_SET;\n }\n\n const allowedEnvs = getFundingConfig(source, 'allowedEnvs');\n if (allowedEnvs && allowedEnvs.indexOf(env) === -1) {\n return FUNDING_ELIGIBILITY_REASON.INVALID_ENV;\n }\n}\n\nexport function isFundingAutoEligible(source : FundingSource, { locale, funding, layout } :\n { locale : LocaleType, funding : FundingSelection, layout : string }) : ?string {\n\n const isVertical = layout === BUTTON_LAYOUT.VERTICAL;\n\n if (isVertical && getFundingConfig(source, 'defaultVerticalCountries', []).indexOf(locale.country) !== -1) {\n return FUNDING_ELIGIBILITY_REASON.DEFAULT_COUNTRY;\n }\n\n if (getFundingConfig(source, 'default')) {\n return FUNDING_ELIGIBILITY_REASON.DEFAULT;\n }\n\n if (funding.allowed.indexOf(source) !== -1 && getFundingConfig(source, 'allowOptIn')) {\n return FUNDING_ELIGIBILITY_REASON.OPT_IN;\n }\n\n if (funding.remembered.indexOf(source) !== -1 && getFundingConfig(source, 'allowRemember')) {\n return FUNDING_ELIGIBILITY_REASON.REMEMBERED;\n }\n}\n\nexport function isFundingEligible(source : FundingSource, { locale, funding, env, layout, selected, commit } :\n { locale : LocaleType, funding : FundingSelection, env : string, layout : string, selected? : string, commit : boolean }) : { eligible : boolean, reason : string } {\n\n if (selected && source === selected) {\n return { eligible: true, reason: FUNDING_ELIGIBILITY_REASON.PRIMARY };\n }\n\n if (!getFundingConfig(source, 'enabled')) {\n if (!(env === ENV.TEST && getFundingConfig(source, 'test'))) {\n return { eligible: false, reason: FUNDING_ELIGIBILITY_REASON.NOT_ENABLED };\n }\n }\n\n const ineligibleReason = isFundingIneligible(source, { locale, funding, layout, commit, env });\n\n if (ineligibleReason) {\n return { eligible: false, reason: ineligibleReason };\n }\n\n const autoEligibleReason = isFundingAutoEligible(source, { locale, funding, layout });\n\n if (autoEligibleReason) {\n return { eligible: true, reason: autoEligibleReason };\n }\n\n return { eligible: false, reason: FUNDING_ELIGIBILITY_REASON.NEED_OPT_IN };\n}\n\nexport function determineEligibleFunding({ funding, selected, locale, env, layout, commit } :\n { funding : FundingSelection, selected : FundingSource, locale : LocaleType, env : string, layout : string, commit : boolean }) : FundingList {\n\n const reasons = {};\n\n const eligibleFunding = FUNDING_PRIORITY.filter(source => {\n const { eligible, reason } = isFundingEligible(source, { selected, locale, funding, env, layout, commit });\n reasons[source] = { eligible, reason, factors: { env, locale, layout } };\n return eligible;\n });\n\n fundingEligibilityReasons.push(reasons);\n\n eligibleFunding.splice(eligibleFunding.indexOf(selected), 1);\n eligibleFunding.unshift(selected);\n\n return eligibleFunding;\n}\n\nexport function determineEligibleCards({ funding, locale } :\n { funding : FundingSelection, locale : LocaleType }) : FundingList {\n\n return getCardConfig(locale.country, 'priority')\n .filter(card => funding.disallowed.indexOf(card) === -1);\n}\n\nexport function validateFunding(funding : FundingSelection = { allowed: [], disallowed: [], remembered: [] }) {\n\n if (funding.allowed) {\n for (const source of funding.allowed) {\n if (CARD_PRIORITY.indexOf(source) !== -1) {\n continue;\n }\n\n if (!FUNDING_CONFIG.hasOwnProperty(source)) {\n throw new Error(`Invalid funding source: ${ source }`);\n }\n\n if (!getFundingConfig(source, 'allowOptIn')) {\n throw new Error(`Can not allow funding source: ${ source }`);\n }\n\n if (funding.disallowed && funding.disallowed.indexOf(source) !== -1) {\n throw new Error(`Can not allow and disallow funding source: ${ source }`);\n }\n }\n }\n\n if (funding.disallowed) {\n for (const source of funding.disallowed) {\n if (CARD_PRIORITY.indexOf(source) !== -1) {\n continue;\n }\n\n if (!FUNDING_CONFIG.hasOwnProperty(source)) {\n throw new Error(`Invalid funding source: ${ source }`);\n }\n\n if (!getFundingConfig(source, 'allowOptOut')) {\n throw new Error(`Can not disallow funding source: ${ source }`);\n }\n }\n }\n}\n\nexport function logFundingEligibility() {\n fundingEligibilityReasons.forEach((reasons, i) => {\n console.log(`\\nButton ${ i + 1 }:\\n`); // eslint-disable-line no-console\n\n console.table(Object.keys(reasons).map(source => { // eslint-disable-line no-console, compat/compat\n const { reason, eligible, factors } = reasons[source];\n\n return {\n 'Funding': source,\n 'Reason': reason,\n 'Eligibility': eligible ? 'eligible' : 'ineligible',\n 'Factors': JSON.stringify(factors)\n };\n }));\n });\n}\n","/* @flow */\n/* eslint no-template-curly-in-string: off, max-lines: off */\n\nimport { FUNDING, DEFAULT, COUNTRY, BUTTON_LABEL, BUTTON_COLOR, BUTTON_LOGO_COLOR, BUTTON_SIZE,\n BUTTON_TAGLINE_COLOR, BUTTON_SHAPE, BUTTON_LAYOUT, BUTTON_LOGO } from '../constants';\n\ntype ButtonConfig = {\n [ string ] : {\n colors? : $ReadOnlyArray<$Values>\n }\n};\n\nexport const BUTTON_CONFIG : ButtonConfig = {\n\n [ DEFAULT ]: {\n\n colors: [\n BUTTON_COLOR.GOLD,\n BUTTON_COLOR.BLUE,\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n sizes: [\n BUTTON_SIZE.SMALL,\n BUTTON_SIZE.MEDIUM,\n BUTTON_SIZE.LARGE,\n BUTTON_SIZE.RESPONSIVE\n ],\n\n shapes: [\n BUTTON_SHAPE.PILL,\n BUTTON_SHAPE.RECT\n ],\n\n layouts: [\n BUTTON_LAYOUT.HORIZONTAL,\n BUTTON_LAYOUT.VERTICAL\n ],\n\n logoColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_LOGO_COLOR.BLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLUE\n },\n\n tagLineColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_TAGLINE_COLOR.BLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_TAGLINE_COLOR.BLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_TAGLINE_COLOR.BLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_TAGLINE_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_TAGLINE_COLOR.BLUE\n\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n tag: `{ content: safer_tag }`,\n dualTag: `{ content: dual_tag|safer_tag }`,\n\n defaultLocale: `en_US`,\n defaultLabel: BUTTON_LABEL.CHECKOUT,\n defaultVerticalLabel: BUTTON_LABEL.PAYPAL,\n defaultColor: BUTTON_COLOR.GOLD,\n defaultSize: BUTTON_SIZE.SMALL,\n defaultVerticalSize: BUTTON_SIZE.MEDIUM,\n defaultShape: BUTTON_SHAPE.PILL,\n defaultLayout: BUTTON_LAYOUT.HORIZONTAL,\n defaultBranding: true,\n defaultVerticalBranding: true,\n defaultFundingIcons: false,\n defaultTagline: true,\n defaultDual: ``,\n\n minimumSize: BUTTON_SIZE.TINY,\n minimumVerticalSize: BUTTON_SIZE.MEDIUM,\n\n maximumSize: BUTTON_SIZE.HUGE,\n maximumVerticalSize: BUTTON_SIZE.HUGE,\n\n minHorizontalButtons: 1,\n minVerticalButtons: 1,\n\n maxHorizontalButtons: 2,\n maxVerticalButtons: 6,\n\n allowUnbranded: false,\n allowFundingIcons: true,\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.PAYPAL ]: {\n label: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n allowPrimary: true,\n\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true\n },\n\n [ BUTTON_LABEL.CHECKOUT ]: {\n label: `{ content: checkout }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n allowPrimary: true,\n\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true\n },\n\n [ BUTTON_LABEL.PAY ]: {\n label: `{ content: pay }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n allowPrimary: true,\n\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true\n },\n\n [ BUTTON_LABEL.BUYNOW ]: {\n label: `{ content: buynow }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n defaultBranding: undefined,\n\n allowPrimary: true,\n\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true,\n\n allowUnbranded: true\n },\n\n [ BUTTON_LABEL.INSTALLMENT ]: {\n label: (style) => { return `{ content: ${ style.installmentperiod ? 'installment_period' : 'installment' } }`; },\n logoLabel: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n allowPrimary: true,\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true,\n allowSecondaryVertical: false,\n allowSecondaryHorizontal: false\n },\n\n [ BUTTON_LABEL.CREDIT ]: {\n label: ({ locale }) => {\n if (locale.country === COUNTRY.DE) {\n return `{ logo: ${ BUTTON_LOGO.CREDIT } }`;\n }\n\n return `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } } { logo: ${ BUTTON_LOGO.CREDIT } }`;\n },\n logoLabel: ({ locale }) => {\n if (locale.country === COUNTRY.DE) {\n return `{ logo: ${ BUTTON_LOGO.CREDIT } }`;\n }\n\n return `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } } { logo: ${ BUTTON_LOGO.CREDIT } }`;\n },\n\n tag: `{ content: later_tag }`,\n\n colors: [\n BUTTON_COLOR.DARKBLUE,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLUE\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n defaultColor: BUTTON_COLOR.DARKBLUE,\n\n allowPrimary: true,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false,\n\n allowFundingIcons: false\n },\n\n [ BUTTON_LABEL.VENMO ]: {\n label: `{ logo: ${ BUTTON_LOGO.VENMO } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.VENMO } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.BLUE,\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.BLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLUE\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: true,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: true\n },\n [ BUTTON_LABEL.ITAU ]: {\n label: `{ logo: ${ BUTTON_LOGO.ITAU } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.ITAU } }`,\n\n defaultColor: BUTTON_COLOR.DARKBLUE,\n\n colors: [\n BUTTON_COLOR.DARKBLUE,\n BUTTON_COLOR.BLUE,\n BUTTON_COLOR.BLACK\n ],\n\n logoColors: {\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.DARKBLUE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: true\n },\n\n [ BUTTON_LABEL.IDEAL ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.IDEAL } } Online betalen`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.IDEAL } } Online betalen`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.ELV ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.ELV } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.ELV } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.BANCONTACT ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.BANCONTACT } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.BANCONTACT } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.GIROPAY ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.GIROPAY } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.GIROPAY } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.SOFORT ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.SOFORT } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.SOFORT } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.EPS ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.EPS } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.EPS } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.MYBANK ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.MYBANK } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.MYBANK } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.P24 ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.P24 } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.P24 } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.PAYU ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.PAYU } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PAYU } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.VERKKOPANKKI ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.VERKKOPANKKI } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.VERKKOPANKKI } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.BLIK ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.BLIK } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.BLIK } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.TRUSTLY ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.TRUSTLY } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.TRUSTLY } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.MAXIMA ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.MAXIMA } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.MAXIMA } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.BOLETO ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.BOLETO } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.BOLETO } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.OXXO ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.OXXO } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.OXXO } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.CARD ]: {\n\n label: `{ cards }`,\n logoLabel: `{ cards }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.TRANSPARENT\n ],\n\n logoColors: {\n [ BUTTON_COLOR.TRANSPARENT ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.TRANSPARENT\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n }\n};\n\nexport const FUNDING_TO_DEFAULT_LABEL = {\n [ FUNDING.PAYPAL ]: BUTTON_LABEL.PAYPAL,\n [ FUNDING.VENMO ]: BUTTON_LABEL.VENMO,\n [ FUNDING.ITAU ]: BUTTON_LABEL.ITAU,\n [ FUNDING.CARD ]: BUTTON_LABEL.CARD,\n [ FUNDING.CREDIT ]: BUTTON_LABEL.CREDIT,\n [ FUNDING.IDEAL ]: BUTTON_LABEL.IDEAL,\n [ FUNDING.ELV ]: BUTTON_LABEL.ELV,\n [ FUNDING.BANCONTACT ]: BUTTON_LABEL.BANCONTACT,\n [ FUNDING.GIROPAY ]: BUTTON_LABEL.GIROPAY,\n [ FUNDING.SOFORT ]: BUTTON_LABEL.SOFORT,\n [ FUNDING.EPS ]: BUTTON_LABEL.EPS,\n [ FUNDING.P24 ]: BUTTON_LABEL.P24,\n [ FUNDING.MYBANK ]: BUTTON_LABEL.MYBANK,\n [ FUNDING.PAYU ]: BUTTON_LABEL.PAYU,\n [ FUNDING.VERKKOPANKKI]: BUTTON_LABEL.VERKKOPANKKI,\n [ FUNDING.BLIK ]: BUTTON_LABEL.BLIK,\n [ FUNDING.TRUSTLY ]: BUTTON_LABEL.TRUSTLY,\n [ FUNDING.MAXIMA ]: BUTTON_LABEL.MAXIMA,\n [ FUNDING.BOLETO ]: BUTTON_LABEL.BOLETO,\n [ FUNDING.OXXO ]: BUTTON_LABEL.OXXO\n};\n\nexport const LABEL_TO_FUNDING = {\n [ BUTTON_LABEL.PAYPAL ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.CHECKOUT ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.PAY ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.BUYNOW ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.INSTALLMENT ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.CARD ]: FUNDING.CARD,\n [ BUTTON_LABEL.CREDIT ]: FUNDING.CREDIT,\n [ BUTTON_LABEL.VENMO ]: FUNDING.VENMO,\n [ BUTTON_LABEL.ITAU ]: FUNDING.ITAU,\n [ BUTTON_LABEL.IDEAL ]: FUNDING.IDEAL,\n [ BUTTON_LABEL.BANCONTACT]: FUNDING.BANCONTACT,\n [ BUTTON_LABEL.GIROPAY]: FUNDING.GIROPAY,\n [ BUTTON_LABEL.EPS ]: FUNDING.EPS,\n [ BUTTON_LABEL.SOFORT ]: FUNDING.SOFORT,\n [ BUTTON_LABEL.P24 ]: FUNDING.P24,\n [ BUTTON_LABEL.MYBANK ]: FUNDING.MYBANK,\n [ BUTTON_LABEL.PAYU ]: FUNDING.PAYU,\n [ BUTTON_LABEL.VERKKOPANKKI ]: FUNDING.VERKKOPANKKI,\n [ BUTTON_LABEL.BLIK ]: FUNDING.BLIK,\n [ BUTTON_LABEL.TRUSTLY ]: FUNDING.TRUSTLY,\n [ BUTTON_LABEL.MAXIMA ]: FUNDING.MAXIMA,\n [ BUTTON_LABEL.BOLETO ]: FUNDING.BOLETO,\n [ BUTTON_LABEL.OXXO ]: FUNDING.OXXO\n};\n\nexport const BUTTON_RELATIVE_STYLE = {\n FUNDINGICONS: 100,\n TAGLINE: 50,\n VERTICAL_MARGIN: 30\n};\n\nexport const BUTTON_STYLE = {\n\n [ BUTTON_SIZE.TINY ]: {\n defaultWidth: 75,\n defaultHeight: 25,\n minWidth: 75,\n maxWidth: 150,\n minHeight: 25,\n maxHeight: 30,\n buttonTextMargin: 0.5,\n allowFunding: true,\n allowTagline: false,\n byPayPalHeight: 0\n },\n\n [ BUTTON_SIZE.SMALL ]: {\n defaultWidth: 150,\n defaultHeight: 25,\n minWidth: 150,\n maxWidth: 200,\n minHeight: 25,\n maxHeight: 55,\n buttonTextMargin: 0.5,\n allowFunding: true,\n allowTagline: true,\n byPayPalHeight: 0\n },\n\n [ BUTTON_SIZE.MEDIUM ]: {\n defaultWidth: 250,\n defaultHeight: 35,\n minWidth: 200,\n maxWidth: 300,\n minHeight: 35,\n maxHeight: 55,\n buttonTextMargin: 1,\n allowFunding: true,\n allowTagline: true,\n byPayPalHeight: 30\n },\n\n [ BUTTON_SIZE.LARGE ]: {\n defaultWidth: 350,\n defaultHeight: 45,\n minWidth: 300,\n maxWidth: 500,\n minHeight: 30,\n maxHeight: 55,\n buttonTextMargin: 1,\n allowFunding: true,\n allowTagline: true,\n byPayPalHeight: 30\n },\n\n [ BUTTON_SIZE.HUGE ]: {\n defaultWidth: 500,\n defaultHeight: 55,\n minWidth: 500,\n maxWidth: 750,\n minHeight: 40,\n maxHeight: 55,\n buttonTextMargin: 1.25,\n allowFunding: true,\n allowTagline: true,\n byPayPalHeight: 30\n }\n};\n\nexport function labelToFunding(label : ?string) : string {\n return label ? LABEL_TO_FUNDING[label] : FUNDING.PAYPAL;\n}\n\nexport function fundingToDefaultLabel(funding : string) : $Values {\n return FUNDING_TO_DEFAULT_LABEL[funding];\n}\n\nfunction getConfig(conf : Object, category : string, key : string, def : ?T) : T {\n const categoryConfig = conf[category];\n\n if (categoryConfig && categoryConfig.hasOwnProperty(key)) {\n return categoryConfig[key];\n }\n\n if (conf[DEFAULT] && conf[DEFAULT].hasOwnProperty(key)) {\n return conf[DEFAULT][key];\n }\n\n if (arguments.length >= 4) {\n // $FlowFixMe\n return def;\n }\n\n throw new Error(`No value found for ${ category }:${ key }`);\n}\n\nexport function getButtonConfig(label : string, key : string, def : ?T) : T {\n return getConfig(BUTTON_CONFIG, label, key, def);\n}\n","/* @flow */\n\nimport { BUTTON_LAYOUT, BUTTON_STYLE_OPTIONS, BUTTON_LABEL, BUTTON_COLOR, BUTTON_SIZE, BUTTON_SHAPE } from '../constants';\nimport { determineEligibleFunding, determineEligibleCards } from '../funding';\nimport { memoize, sortBy } from '../lib/util';\nimport type { LocaleType, FundingSelection, FundingList, CheckoutCustomizationType } from '../types';\nimport { FUNDING_ORDER } from '../funding/config';\n\nimport { getButtonConfig, labelToFunding } from './config';\n\nfunction parseLocale(locale : string) : LocaleType {\n const [ lang, country ] = locale.split('_');\n return { country, lang };\n}\n\nexport function determineMaxButtons({ label, layout, max } : { layout : string, label : string, max : number }) : number {\n\n const allowed = (layout === BUTTON_LAYOUT.HORIZONTAL)\n ? getButtonConfig(label, 'allowPrimaryHorizontal')\n : getButtonConfig(label, 'allowPrimaryVertical');\n\n if (!allowed) {\n return 1;\n }\n\n const configMax = (layout === BUTTON_LAYOUT.HORIZONTAL)\n ? getButtonConfig(label, 'maxHorizontalButtons')\n : getButtonConfig(label, 'maxVerticalButtons');\n\n return max\n ? Math.min(configMax, max)\n : configMax;\n}\n\nfunction enableTagline({ tagline, branding, fundingicons, layout }) : boolean {\n return Boolean(tagline && branding && !fundingicons && layout === BUTTON_LAYOUT.HORIZONTAL);\n}\n\ntype NormalizedProps = {|\n size : $Values,\n label : $Values,\n color : $Values,\n shape : $Values,\n locale : LocaleType,\n branding : boolean,\n fundingicons : boolean,\n tagline : boolean,\n funding : FundingSelection,\n layout : $Values,\n sources : FundingList,\n max : number,\n multiple : boolean,\n env : string,\n height : ?number,\n cards : $ReadOnlyArray,\n installmentperiod : number,\n checkoutCustomization : ?CheckoutCustomizationType\n|};\n\nexport const normalizeProps = memoize((props : Object, defs? : { locale? : LocaleType } = {}) : NormalizedProps => {\n\n let {\n env,\n locale,\n style = {},\n funding,\n commit,\n checkoutCustomization\n } = props;\n\n locale = locale ? parseLocale(locale) : (defs.locale || getButtonConfig('DEFAULT', 'defaultLocale'));\n \n // funding indicated the allowed/disallowed payment methods (including cards) passed in the integration script\n // $FlowFixMe\n funding = funding || {};\n funding.allowed = funding.allowed || [];\n funding.disallowed = funding.disallowed || [];\n funding.remembered = funding.remembered || [];\n \n const label = style[BUTTON_STYLE_OPTIONS.LABEL] || getButtonConfig('DEFAULT', (style.layout === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalLabel' : 'defaultLabel');\n const layout = style[BUTTON_STYLE_OPTIONS.LAYOUT] || getButtonConfig(label, 'defaultLayout');\n\n let {\n [ BUTTON_STYLE_OPTIONS.SIZE ]: size = getButtonConfig(label, (layout === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalSize' : 'defaultSize'),\n [ BUTTON_STYLE_OPTIONS.COLOR ]: color = getButtonConfig(label, 'defaultColor'),\n [ BUTTON_STYLE_OPTIONS.SHAPE ]: shape = getButtonConfig(label, 'defaultShape'),\n [ BUTTON_STYLE_OPTIONS.BRANDING ]: branding = getButtonConfig(label, (layout === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalBranding' : 'defaultBranding'),\n [ BUTTON_STYLE_OPTIONS.FUNDINGICONS ]: fundingicons = getButtonConfig(label, 'defaultFundingIcons'),\n [ BUTTON_STYLE_OPTIONS.TAGLINE ]: tagline = getButtonConfig(label, 'defaultTagline'),\n [ BUTTON_STYLE_OPTIONS.MAXBUTTONS ]: max,\n [ BUTTON_STYLE_OPTIONS.HEIGHT ]: height,\n [ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD ]: installmentperiod\n } = style;\n\n // max is the maximum number of buttons to be displayed in the iframe\n max = determineMaxButtons({ label, layout, max });\n\n const selected = labelToFunding(label);\n let sources = determineEligibleFunding({ funding, selected, locale, env, layout, commit });\n // sources is an array of funding sources eligible to be displayed\n sources = sortBy(sources.slice(0, max), FUNDING_ORDER);\n // multiple is a boolean value indicating whether the sources is greater than 1\n const multiple = sources.length > 1;\n\n if (multiple) {\n branding = true;\n }\n\n tagline = enableTagline({ tagline, branding, fundingicons, layout });\n\n const cards = determineEligibleCards({ funding, locale });\n \n return { size, label, locale, color, shape, branding, fundingicons,\n tagline, funding, layout, sources, max, multiple, env, height, cards, installmentperiod, checkoutCustomization };\n});\n","/* @flow */\n\nimport { BUTTON_LABEL, BUTTON_LAYOUT, BUTTON_SIZE, BUTTON_STYLE_OPTIONS, ALLOWED_INSTALLMENT_COUNTRIES, ALLOWED_INSTALLMENT_PERIOD, LOCALE } from '../constants';\n\nimport { BUTTON_CONFIG, BUTTON_STYLE, getButtonConfig } from './config';\n\nexport function validateButtonLocale(locale : string) {\n\n if (!locale) {\n throw new Error(`Expected props.locale to be set`);\n }\n\n if (!locale.match(/^[a-z]{2}[_][A-Z][A-Z0-9]$/)) {\n throw new Error(`Expected props.locale to be valid, got ${ locale }`);\n }\n\n const [ lang, country ] = locale.split('_');\n\n if (!LOCALE[country] || LOCALE[country].indexOf(lang) === -1) {\n throw new Error(`Expected props.locale to be valid`);\n }\n}\n\nexport function validateRegionSpecificButton(style : Object = {}, locale : string = 'en_US') {\n\n const country = locale.split('_')[1];\n\n const isInstallmentAllowedCountry = ALLOWED_INSTALLMENT_COUNTRIES.indexOf(country) !== -1;\n\n if (!isInstallmentAllowedCountry && style.label === BUTTON_LABEL.INSTALLMENT) {\n throw new Error(`Unexpected label: style.${ style.label } for country: ${ country }`);\n }\n\n if (!isInstallmentAllowedCountry && style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD]) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD } is invalid for country: ${ country }`);\n }\n\n if (isInstallmentAllowedCountry && style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD] && style.label !== BUTTON_LABEL.INSTALLMENT) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD } is invalid for label: style.${ style.label }`);\n }\n\n if (isInstallmentAllowedCountry && style.label === BUTTON_LABEL.INSTALLMENT && style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD]\n && typeof style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD] !== 'number') {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD } is expected to be a number`);\n }\n\n if (isInstallmentAllowedCountry && style.label === BUTTON_LABEL.INSTALLMENT && style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD]\n && ALLOWED_INSTALLMENT_PERIOD[country].indexOf(style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD]) === -1) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD }: ${ style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD] } is not a valid installment number for ${ style.label }`);\n }\n\n}\n\nexport function validateButtonStyle(style : Object = {}, props : Object) {\n\n if (!style) {\n throw new Error(`Expected props.style to be set`);\n }\n\n const label = style[BUTTON_STYLE_OPTIONS.LABEL] || getButtonConfig('DEFAULT', (style[BUTTON_STYLE_OPTIONS.LAYOUT] === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalLabel' : 'defaultLabel');\n\n if (!BUTTON_CONFIG[label]) {\n throw new Error(`Invalid button label: ${ label }, expected: ${ Object.keys(BUTTON_CONFIG[label]).join(', ') }`);\n }\n\n const {\n [ BUTTON_STYLE_OPTIONS.COLOR ]: color,\n [ BUTTON_STYLE_OPTIONS.SHAPE ]: shape,\n [ BUTTON_STYLE_OPTIONS.SIZE ]: size,\n [ BUTTON_STYLE_OPTIONS.BRANDING ]: branding,\n [ BUTTON_STYLE_OPTIONS.FUNDINGICONS ]: fundingicons,\n [ BUTTON_STYLE_OPTIONS.TAGLINE ]: tagline,\n [ BUTTON_STYLE_OPTIONS.LAYOUT ]: layout,\n [ BUTTON_STYLE_OPTIONS.MAXBUTTONS ]: maxbuttons,\n [ BUTTON_STYLE_OPTIONS.HEIGHT ]: height\n } = style;\n\n if (color && getButtonConfig(label, 'colors').indexOf(color) === -1) {\n throw new Error(`Unexpected style.${ BUTTON_STYLE_OPTIONS.COLOR } for ${ label } button: ${ color }, expected ${ getButtonConfig(label, 'colors').join(', ') }`);\n }\n\n if (shape && getButtonConfig(label, 'shapes').indexOf(shape) === -1) {\n throw new Error(`Unexpected style.${ BUTTON_STYLE_OPTIONS.SHAPE } for ${ label } button: ${ shape }, expected ${ getButtonConfig(label, 'shapes').join(', ') }`);\n }\n\n if (size && getButtonConfig(label, 'sizes').indexOf(size) === -1) {\n throw new Error(`Unexpected style.${ BUTTON_STYLE_OPTIONS.SIZE } for ${ label } button: ${ size }, expected ${ getButtonConfig(label, 'sizes').join(', ') }`);\n }\n\n if (branding === false) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.BRANDING }:false is not allowed`);\n }\n\n if (fundingicons && !getButtonConfig(label, 'allowFundingIcons')) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.FUNDINGICONS }:true is not allowed for ${ label } button`);\n }\n\n if (layout && getButtonConfig(label, 'layouts').indexOf(layout) === -1) {\n throw new Error(`Unexpected style.${ BUTTON_STYLE_OPTIONS.LAYOUT } for ${ label } button: ${ layout }, expected ${ getButtonConfig(label, 'layouts').join(', ') }`);\n }\n\n if (maxbuttons !== undefined) {\n if (typeof maxbuttons !== 'number') {\n throw new TypeError(`Expected style.${ BUTTON_STYLE_OPTIONS.MAXBUTTONS } to be a number, got: ${ maxbuttons }`);\n }\n\n if (maxbuttons < 1) {\n throw new Error(`Expected style.${ BUTTON_STYLE_OPTIONS.MAXBUTTONS } to be a at least 1, got: ${ maxbuttons }`);\n }\n\n const minButtons = (layout === BUTTON_LAYOUT.VERTICAL)\n ? getButtonConfig(label, 'minVerticalButtons')\n : getButtonConfig(label, 'minHorizontalButtons');\n\n if (maxbuttons < minButtons) {\n throw new Error(`Expected style.${ BUTTON_STYLE_OPTIONS.MAXBUTTONS } to be no fewer than ${ minButtons }, got ${ maxbuttons }`);\n }\n }\n\n if (height !== undefined) {\n if (typeof height !== 'number') {\n throw new TypeError(`Expected style.${ BUTTON_STYLE_OPTIONS.HEIGHT } to be a number, got: ${ maxbuttons }`);\n }\n\n const buttonSize = size || getButtonConfig(label, (style.layout === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalSize' : 'defaultSize');\n\n const { minHeight, maxHeight } = (size === BUTTON_SIZE.RESPONSIVE) ? {\n minHeight: BUTTON_STYLE[BUTTON_SIZE.SMALL].minHeight,\n maxHeight: BUTTON_STYLE[BUTTON_SIZE.HUGE].maxHeight\n } : BUTTON_STYLE[buttonSize];\n\n if (height < minHeight || height > maxHeight) {\n throw new Error(`Expected style.${ BUTTON_STYLE_OPTIONS.HEIGHT } to be between ${ minHeight }px and ${ maxHeight }px - got ${ height }px`);\n }\n }\n\n if (!getButtonConfig(label, 'allowPrimary')) {\n throw new Error(`${ label } can not be used as primary button label`);\n }\n\n if (layout === BUTTON_LAYOUT.VERTICAL) {\n\n if (size && [ BUTTON_SIZE.MEDIUM, BUTTON_SIZE.LARGE, BUTTON_SIZE.RESPONSIVE ].indexOf(size) === -1) {\n throw new Error(`Button must be at least ${ BUTTON_SIZE.MEDIUM } size for ${ BUTTON_LAYOUT.VERTICAL } layout`);\n }\n\n if (!getButtonConfig(label, 'allowPrimaryVertical')) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.LABEL } option is not allowed for ${ BUTTON_LAYOUT.VERTICAL } layout - got ${ label }`);\n }\n\n if (fundingicons) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.FUNDINGICONS } not allowed for ${ BUTTON_LAYOUT.VERTICAL } layout - got ${ fundingicons }`);\n }\n\n if (tagline) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.TAGLINE } is not allowed for ${ BUTTON_LAYOUT.VERTICAL } layout - got ${ tagline }`);\n }\n }\n\n validateRegionSpecificButton(style, props.locale);\n}\n\nexport function validateButtonProps(props : Object) {\n\n if (!props) {\n throw new Error(`Expected props`);\n }\n\n const { locale, style } = props;\n\n validateButtonLocale(locale);\n validateButtonStyle(style, props);\n}\n","/* @flow */\n\nexport const CLASS = {\n SHOULD_FOCUS: 'paypal-should-focus',\n\n CONTAINER: 'paypal-button-container',\n BUTTON: 'paypal-button',\n \n BUTTON_LABEL: 'paypal-button-label-container',\n\n LABEL: 'paypal-button-label',\n COLOR: 'paypal-button-color',\n LOGO_COLOR: 'paypal-button-logo-color',\n SHAPE: 'paypal-button-shape',\n BRANDING: 'paypal-button-branding',\n LAYOUT: 'paypal-button-layout',\n NUMBER: 'paypal-button-number',\n ENV: 'paypal-button-env',\n\n TAGLINE: 'paypal-button-tagline',\n TAGLINE_COLOR: 'paypal-button-tagline-color',\n FUNDINGICONS: 'paypal-button-fundingicons',\n\n TEXT: 'paypal-button-text',\n LOGO: 'paypal-button-logo',\n CARD: 'paypal-button-card',\n\n SEPARATOR: 'paypal-separator',\n HIDDEN: 'hidden',\n DOM_READY: 'dom-ready',\n \n PERSONALIZATION_TEXT: 'personalization-text'\n};\n","/* @flow */\n\nimport { CLASS } from './class';\n\nexport const pageStyle = `\n html, body {\n padding: 0;\n margin: 0;\n width: 100%;\n overflow: hidden;\n text-align: center;\n }\n\n body {\n display: inline-block;\n vertical-align: top;\n }\n\n * {\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -khtml-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n cursor: default;\n box-sizing: border-box;\n }\n \n .${ CLASS.HIDDEN } {\n position: absolute;\n visibility: hidden;\n }\n`;\n","/* @flow */\n\nimport { BUTTON_COLOR, ENV } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const buttonStyle = `\n\n .${ CLASS.CONTAINER } {\n display: block;\n white-space: nowrap;\n margin: 0;\n background: 0;\n border: 0;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n text-transform: none;\n font-weight: 500;R\n -webkit-font-smoothing: antialiased;\n font-smoothing: antialiased;\n z-index: 0;\n font-size: 0;\n width: 100%;\n box-sizing: border-box;\n }\n\n .${ CLASS.BUTTON }:not(.${ CLASS.CARD }) {\n border: 1px solid transparent;\n border-radius: 0 3px 3px 0;\n position: relative;\n width: 100%;\n box-sizing: border-box;\n border: none;\n vertical-align: top;\n cursor: pointer;\n outline: none;\n overflow: hidden;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.TRANSPARENT } {\n cursor: auto;\n }\n\n .${ CLASS.BUTTON } * {\n cursor: pointer;\n }\n\n .${ CLASS.CONTAINER }.${ CLASS.ENV }-${ ENV.TEST } .${ CLASS.TEXT } {\n font-family: Arial !important;\n background: rgba(0, 0, 0, 0.5) !important;\n color: transparent !important;\n text-shadow: none !important;\n }\n\n .${ CLASS.BUTTON }:hover {\n box-shadow: inset 0 0 100px 100px rgba(255, 255, 255, 0.2);\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.GOLD }:hover,\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.SILVER }:hover {\n box-shadow: inset 0 0 100px 100px rgba(0, 0, 0, 0.05);\n }\n\n .${ CLASS.CARD }, .${ CLASS.CARD } * {\n cursor: pointer;\n }\n\n .${ CLASS.CARD }:hover {\n filter: brightness(1.2);\n }\n\n .${ CLASS.BUTTON }:focus, .${ CLASS.CARD }:focus {\n outline: none;\n }\n\n .${ CLASS.SHOULD_FOCUS } .${ CLASS.BUTTON }:focus,\n .${ CLASS.SHOULD_FOCUS } .${ CLASS.CARD }:focus {\n outline: solid 2px Highlight;\n outline: auto 5px -webkit-focus-ring-color;\n outline-offset: -3px;\n }\n\n .${ CLASS.BUTTON }:focus {\n box-shadow: -1px -1px 18px 1px rgba(0, 0, 0, 0.25) inset;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.TRANSPARENT }:focus {\n box-shadow: none;\n outline: none;\n }\n\n .${ CLASS.LOGO } {\n padding: 0;\n display: inline-block;\n background: none;\n border: none;\n width: auto;\n }\n\n .${ CLASS.TEXT } {\n display: inline-block;\n white-space: pre;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.BUTTON_LABEL } {\n position: relative;\n top: 50%;\n transform: translateY(-50%);\n -webkit-transform: translateY(-50%);\n -moz-transform: translateY(-50%);\n -ms-transform: translateY(-50%);\n -o-transform: translateY(-50%);\n }\n \n .${ CLASS.BUTTON } > .${ CLASS.BUTTON_LABEL } > * {\n vertical-align: top;\n height: 100%;\n text-align: left;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.CARD } {\n border-radius: 4px;\n }\n\n .powered-by-paypal > .${ CLASS.TEXT } {\n vertical-align: top;\n line-height: 18px;\n }\n\n .powered-by-paypal > .${ CLASS.LOGO } {\n height: 16px;\n min-height: 16px;\n }\n\n .${ CLASS.TAGLINE } {\n max-width: 100%;\n font-weight: normal;\n display: block;\n text-align: center;\n width: auto;\n }\n\n .${ CLASS.SEPARATOR } {\n height: 80%;\n border-left: 1px solid rgba(0, 0, 0, 0.15);\n margin: 0 8px;\n display: inline-block;\n position: relative;\n top: 10%;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.BLACK } .${ CLASS.SEPARATOR } {\n border-color: rgba(255, 255, 255, 0.45);\n }\n`;\n","/* @flow */\n\nimport { BUTTON_LAYOUT } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const layoutStyle = `\n\n .${ CLASS.CONTAINER }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.VERTICAL } .${ CLASS.TAGLINE } {\n display: none;\n }\n`;\n","/* @flow */\n\nimport { BUTTON_BRANDING } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const brandingStyle = `\n\n .${ CLASS.BUTTON }.${ CLASS.BRANDING }-${ BUTTON_BRANDING.UNBRANDED } {\n min-width: 60%;\n width: auto;\n font-weight: 900;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.BRANDING }-${ BUTTON_BRANDING.UNBRANDED } .${ CLASS.LOGO } {\n display: none;\n }\n`;\n","/* @flow */\n\nimport { BUTTON_STYLE } from '../../config';\nimport { BUTTON_LABEL, BUTTON_LOGO, BUTTON_SIZE, BUTTON_LAYOUT, BUTTON_NUMBER } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const labelStyle = `\n\n .${ CLASS.BUTTON }.${ CLASS.LABEL }-${ BUTTON_LABEL.CARD } {\n border-radius: 0 !important;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LABEL }-${ BUTTON_LABEL.CREDIT } .${ CLASS.TEXT } {\n display: none !important;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.LABEL }-${ BUTTON_LABEL.CREDIT } .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LOGO.PAYPAL } {\n display: none;\n }\n\n @media only screen and (max-width : ${ BUTTON_STYLE[BUTTON_SIZE.SMALL].minWidth }px) {\n\n .${ CLASS.BUTTON }.${ CLASS.LABEL }-${ BUTTON_LABEL.CREDIT } .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LOGO.PAYPAL } {\n display: none;\n }\n }\n\n @media only screen and (min-width : ${ BUTTON_STYLE[BUTTON_SIZE.SMALL].minWidth }px) {\n\n .${ CLASS.BUTTON }.${ CLASS.LABEL }-${ BUTTON_LABEL.CREDIT } .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LOGO.PAYPAL } {\n display: inline-block;\n }\n }\n`;\n","/* @flow */\n\nimport { BUTTON_BRANDING, BUTTON_SHAPE, BUTTON_LAYOUT, BUTTON_NUMBER, BUTTON_LABEL } from '../../../constants';\nimport { BUTTON_STYLE, BUTTON_RELATIVE_STYLE } from '../../config';\nimport { max, perc } from '../../../lib/util';\n\nimport { CLASS } from './class';\n\nconst DUAL_BUTTON_MIN_RATIO = 2.8;\n\nexport function buttonResponsiveStyle({ height, cardNumber = 4 } : { height? : ?number, cardNumber? : number }) : string {\n\n return Object.keys(BUTTON_STYLE).map(size => {\n\n const style = BUTTON_STYLE[size];\n const buttonHeight = height || style.defaultHeight;\n const buttonTextMarginTop = style.buttonTextMargin;\n const minDualWidth = Math.round(buttonHeight * DUAL_BUTTON_MIN_RATIO * 2);\n\n return `\n\n @media only screen and (min-width: ${ style.minWidth }px) {\n\n .${ CLASS.CONTAINER } {\n min-width: ${ style.minWidth }px;\n max-width: ${ style.maxWidth }px;\n font-size: ${ max(perc(buttonHeight, 32), 10) }px;\n }\n\n .${ CLASS.BUTTON }:not(.${ CLASS.CARD }) {\n height: ${ buttonHeight }px;\n min-height: ${ height || style.minHeight }px;\n max-height: ${ height || style.maxHeight }px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.BRANDING }-${ BUTTON_BRANDING.UNBRANDED } .${ CLASS.BUTTON_LABEL } {\n height: 100%;\n font-size: ${ max(perc(buttonHeight, 45), 10) }px;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.BUTTON_LABEL } {\n height: ${ perc(buttonHeight, 35) + 5 }px;\n max-height: ${ perc(buttonHeight, 60) }px;\n min-height: ${ perc(buttonHeight, 40) }px;\n }\n \n .${ CLASS.BUTTON } .${ CLASS.BUTTON_LABEL } .${ CLASS.TEXT } {\n margin-top: ${ buttonTextMarginTop }px;\n }\n \n .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LABEL.EPS },\n .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LABEL.MYBANK } {\n height: ${ perc(buttonHeight, 50) + 5 }px;\n max-height: ${ perc(buttonHeight, 70) }px;\n min-height: ${ perc(buttonHeight, 40) }px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.SHAPE }-${ BUTTON_SHAPE.PILL } {\n border-radius: ${ Math.ceil(buttonHeight / 2) }px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.SHAPE }-${ BUTTON_SHAPE.RECT } {\n border-radius: 4px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.VERTICAL } {\n margin-bottom: ${ perc(buttonHeight, BUTTON_RELATIVE_STYLE.VERTICAL_MARGIN) }px;\n }\n\n .${ CLASS.SEPARATOR } {\n margin: 0 ${ perc(buttonHeight, 5) }px;\n }\n\n .${ CLASS.TAGLINE } {\n display: ${ style.allowTagline ? 'block' : 'none' };\n height: ${ perc(buttonHeight, BUTTON_RELATIVE_STYLE.TAGLINE) }px;\n line-height: ${ perc(buttonHeight, BUTTON_RELATIVE_STYLE.TAGLINE) }px;\n }\n\n .${ CLASS.FUNDINGICONS } {\n display: ${ style.allowFunding ? 'block' : 'none' };\n height: ${ perc(buttonHeight, BUTTON_RELATIVE_STYLE.FUNDINGICONS) }px;\n }\n\n .${ CLASS.CARD } {\n display: inline-block;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.CARD } {\n width: ${ (90 / cardNumber).toFixed(2) }%;\n max-width: ${ perc(buttonHeight, 160) }px;\n margin-top: 0;\n margin-left: ${ (5 / cardNumber).toFixed(2) }%;\n margin-right: ${ (5 / cardNumber).toFixed(2) }%;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.CARD } img {\n width: 100%;\n }\n\n .${ CLASS.FUNDINGICONS } .${ CLASS.CARD } {\n height: ${ perc(buttonHeight, 70) }px;\n margin-top: ${ perc(buttonHeight, 15) }px;\n margin-left: ${ perc(buttonHeight, 7) }px;\n margin-right: ${ perc(buttonHeight, 7) }px;\n }\n\n .${ CLASS.FUNDINGICONS } .${ CLASS.CARD } img {\n height: 100%;\n }\n }\n\n @media only screen and (min-width: ${ style.minWidth }px) and (max-width: ${ minDualWidth }px) {\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.NUMBER }-0 {\n width: 100%;\n margin-right: 0;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.NUMBER }-1 {\n display: none;\n }\n\n .${ CLASS.CONTAINER }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE } .${ CLASS.TAGLINE } {\n display: none;\n }\n }\n\n @media only screen and (min-width: ${ max(style.minWidth, minDualWidth) }px) {\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.NUMBER }-0 {\n display: inline-block;\n width: calc(50% - 2px);\n margin-right: 4px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.NUMBER }-1 {\n display: inline-block;\n width: calc(50% - 2px);\n }\n\n .${ CLASS.CONTAINER }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE } .${ CLASS.TAGLINE } {\n display: block;\n }\n }\n `;\n\n }).join('\\n');\n}\n","/* @flow */\n\nimport { BUTTON_COLOR } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const buttonColorStyle = `\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.GOLD } {\n background: #ffc439;\n color: #111;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.BLUE } {\n background: #009cde;\n color: #fff;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.SILVER } {\n background: #eee;\n color: #111;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.BLACK } {\n background: #2C2E2F;\n color: #fff;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.DARKBLUE } {\n background: #003087;\n color: #fff;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.TRANSPARENT } {\n background: transparent;\n color: #111;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.WHITE } {\n background: #fff;\n color: #2C2E2F;\n border: 1px solid #2C2E2F;\n }\n`;\n","/* @flow */\n\nimport { pageStyle } from './page';\nimport { buttonStyle } from './button';\nimport { layoutStyle } from './layout';\nimport { brandingStyle } from './branding';\nimport { labelStyle } from './labels';\nimport { buttonResponsiveStyle } from './responsive';\nimport { buttonColorStyle } from './color';\n\nexport function componentStyle({ height, cardNumber } : { height? : ?number, cardNumber? : number }) : string {\n return `\n ${ pageStyle }\n ${ buttonStyle }\n ${ buttonColorStyle }\n ${ layoutStyle }\n ${ brandingStyle }\n ${ labelStyle }\n ${ buttonResponsiveStyle({ height, cardNumber }) }\n `;\n}\n","/* @flow */\n\nexport { componentStyle } from './base';\nexport { CLASS } from './class';\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, type JsxHTMLNode, JsxHTMLNodeContainer } from '../../lib/jsx';\n\nimport { CLASS } from './componentStyle';\n\nexport function LoadingDots(delay : number) : JsxHTMLNode {\n return (\n
\n \n {outlet}\n
\n );\n}\n","/* @flow */\n\nexport * from './componentTemplate';\nexport * from './containerTemplate';\n\n","\n/* @flow */\n\nimport { track, flush as flushLogs } from 'beaver-logger/client';\n\nimport { Checkout } from '../checkout';\nimport { setupPopupBridgeProxy } from '../integrations/popupBridge';\nimport { getPageRenderTime, setLogLevel } from '../lib';\nimport { ATTRIBUTE, FUNDING, FPTI, BUTTON_LAYOUT, BUTTON_COLOR, BUTTON_SIZE, BUTTON_SHAPE, BUTTON_LABEL } from '../constants';\n\nimport typeof { Button } from './component';\n\nexport function setupButtonChild(ButtonComponent : Button) {\n setupPopupBridgeProxy(Checkout, ButtonComponent);\n\n getPageRenderTime().then(pageRenderTime => {\n\n const fundingSources = Array.prototype.slice.call(document.querySelectorAll(`[${ ATTRIBUTE.FUNDING_SOURCE }]`)).map(el => {\n return el.getAttribute(ATTRIBUTE.CARD) || el.getAttribute(ATTRIBUTE.FUNDING_SOURCE);\n }).filter(source => {\n return source && source !== FUNDING.CARD;\n });\n\n const xprops = ButtonComponent.xprops;\n \n if (!xprops) {\n return;\n }\n\n const {\n layout = BUTTON_LAYOUT.HORIZONTAL,\n color = BUTTON_COLOR.GOLD,\n size = BUTTON_SIZE.SMALL,\n shape = BUTTON_SHAPE.PILL,\n label = BUTTON_LABEL.CHECKOUT,\n maxbuttons,\n tagline\n } = (xprops.style || {});\n\n track({\n [FPTI.KEY.STATE]: FPTI.STATE.BUTTON,\n [FPTI.KEY.TRANSITION]: FPTI.TRANSITION.BUTTON_LOAD,\n [FPTI.KEY.BUTTON_TYPE]: FPTI.BUTTON_TYPE.IFRAME,\n [FPTI.KEY.FUNDING_LIST]: fundingSources.join(':'),\n [FPTI.KEY.FUNDING_COUNT]: fundingSources.length,\n [FPTI.KEY.PAGE_LOAD_TIME]: pageRenderTime,\n [FPTI.KEY.BUTTON_LAYOUT]: layout,\n [FPTI.KEY.BUTTON_COLOR]: color,\n [FPTI.KEY.BUTTON_SIZE]: size,\n [FPTI.KEY.BUTTON_SHAPE]: shape,\n [FPTI.KEY.BUTTON_LABEL]: label,\n [FPTI.KEY.BUTTON_WIDTH]: window.innerWidth,\n [FPTI.KEY.MAX_BUTTONS]: maxbuttons,\n [FPTI.KEY.BUTTON_TAGLINE_ENABLED]: tagline ? '1' : '0'\n });\n\n flushLogs();\n });\n\n const xprops = ButtonComponent.xprops || Checkout.xprops;\n\n if (xprops && xprops.logLevel) {\n setLogLevel(xprops.logLevel);\n }\n\n // $FlowFixMe\n if (xprops.payment && !xprops.createOrder) {\n // $FlowFixMe\n xprops.createOrder = xprops.payment;\n }\n\n // $FlowFixMe\n if (xprops.onAuthorize && !xprops.onApprove) {\n // $FlowFixMe\n xprops.onApprove = xprops.onAuthorize;\n }\n\n try {\n if (xprops && xprops.onShippingChange && window.pre &&\n window.pre.inlineGuest && window.pre.inlineGuest.res &&\n window.pre.inlineGuest.res.data && window.pre.inlineGuest.res.data.treatments) {\n window.pre.inlineGuest.res.data.treatments = [];\n }\n } catch (err) {\n // pass\n }\n}\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { create } from 'zoid/src';\nimport { type Component } from 'zoid/src/component/component';\nimport { info, warn, track, error, flush as flushLogs, immediateFlush } from 'beaver-logger/client';\nimport { getDomain } from 'cross-domain-utils/src';\nimport { base64encode } from 'belter/src';\nimport { debounce, once } from 'zoid/src/lib';\n\nimport { pptm } from '../external';\nimport { config } from '../config';\nimport { SOURCE, ENV, FPTI, FUNDING, BUTTON_LABEL, BUTTON_COLOR,\n BUTTON_SIZE, BUTTON_SHAPE, BUTTON_LAYOUT, COUNTRY } from '../constants';\nimport { redirect as redir, checkRecognizedBrowser,\n getBrowserLocale, getSessionID, request, getScriptVersion,\n isIEIntranet, isEligible, getCurrentScriptUrl,\n getDomainSetting, extendUrl, isDevice, rememberFunding,\n getRememberedFunding, memoize, uniqueID, getThrottle, getBrowser } from '../lib';\nimport { rest } from '../api';\nimport { onAuthorizeListener } from '../experiments';\nimport { getPaymentType, awaitBraintreeClient,\n mapPaymentToBraintree, type BraintreePayPalClient } from '../integrations';\nimport { awaitPopupBridge } from '../integrations/popupBridge';\nimport { validateFunding, isFundingIneligible, isFundingAutoEligible } from '../funding';\n\nimport { containerTemplate, componentTemplate } from './template';\nimport { validateButtonLocale, validateButtonStyle } from './validate';\nimport { setupButtonChild } from './child';\nimport { normalizeProps } from './props';\n\npptm.listenForLoadWithNoContent();\n\nfunction isCreditDualEligible(props) : boolean {\n\n const { label, funding, layout, locale, max, sources, env } = normalizeProps(props, { locale: getBrowserLocale() });\n const { allowed } = funding;\n const { country } = locale;\n\n if (allowed && allowed.indexOf(FUNDING.CREDIT) !== -1) {\n return false;\n }\n\n if (layout !== BUTTON_LAYOUT.HORIZONTAL) {\n return false;\n }\n\n if (max === 1) {\n return false;\n }\n\n if (label === BUTTON_LABEL.CREDIT) {\n return false;\n }\n\n if (country !== COUNTRY.US) {\n return false;\n }\n\n if (isFundingIneligible(FUNDING.CREDIT, { funding, locale, layout, env })) {\n return false;\n }\n\n if (isFundingAutoEligible(FUNDING.CREDIT, { funding, locale, layout })) {\n return false;\n }\n\n if (sources.indexOf(FUNDING.CREDIT) !== -1) {\n return false;\n }\n\n const domain = getDomain().replace(/^https?:\\/\\//, '').replace(/^www\\./, '');\n\n if (config.creditTestDomains.indexOf(domain) === -1) {\n return false;\n }\n\n return true;\n}\n\nlet creditThrottle;\n\ntype ButtonOptions = {|\n style : {|\n maxbuttons? : number,\n layout? : string,\n label? : string,\n size? : string,\n shape? : string,\n color? : string,\n tagline? : boolean\n |},\n client : {\n [string] : (string | ZalgoPromise)\n },\n funding? : { allowed? : $ReadOnlyArray, disallowed? : $ReadOnlyArray },\n env? : string,\n locale? : string,\n logLevel : string,\n awaitPopupBridge : Function,\n meta : Object,\n validate? : ({ enable : () => ZalgoPromise, disable : () => ZalgoPromise }) => void,\n stage? : string,\n stageUrl? : string,\n localhostUrl? : string,\n checkoutUri? : string,\n authCode? : string,\n enableNativeCheckout? : boolean\n|};\n\nexport const Button : Component = create({\n\n tag: 'paypal-button',\n name: 'ppbutton',\n\n buildUrl(props) : string {\n const env = props.env || config.env;\n const url = config.buttonUrls[env];\n return url;\n },\n\n contexts: {\n iframe: true,\n popup: false\n },\n\n scrolling: false,\n listenForResize: true,\n\n containerTemplate,\n\n autoResize: {\n height: true,\n width: false\n },\n\n prerenderTemplate({ props, jsxDom } : { props : Object, jsxDom : Function }) : HTMLElement {\n\n const template = (\n
\n );\n\n template.addEventListener('click', () => {\n warn('button_pre_template_click');\n\n if (isIEIntranet()) {\n warn(`button_pre_template_click_intranet_mode`);\n\n flushLogs();\n\n // eslint-disable-next-line no-alert\n alert(`IE Intranet mode is not supported by PayPal. Please disable intranet mode, or continue in an alternate browser.`);\n }\n\n if (getDomainSetting('allow_full_page_fallback')) {\n info('pre_template_force_full_page');\n\n this.props.payment().then(token => {\n window.top.location = extendUrl(config.checkoutUrl, { token });\n });\n }\n });\n\n return (\n \n \n { template }\n \n \n );\n },\n\n get version() : string {\n return getScriptVersion();\n },\n\n get domain() : Object {\n return config.paypalDomains;\n },\n\n attributes: {\n iframe: {\n allowpaymentrequest: 'allowpaymentrequest'\n }\n },\n\n validate() {\n if (!isEligible()) {\n warn('button_render_ineligible');\n }\n },\n\n props: {\n domain: {\n type: 'string',\n required: false,\n def() : string {\n return window.location.host;\n },\n queryParam: true\n },\n\n sessionID: {\n type: 'string',\n required: false,\n def() : string {\n return getSessionID();\n },\n queryParam: true\n },\n\n buttonSessionID: {\n type: 'string',\n required: false,\n def() : ?string {\n return uniqueID();\n },\n queryParam: true\n },\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n }\n },\n\n meta: {\n type: 'object',\n required: false,\n def() : Object {\n return {};\n }\n },\n\n enableNativeCheckout: {\n type: 'boolean',\n required: false,\n def() : boolean {\n return false;\n }\n },\n\n client: {\n type: 'object',\n required: false,\n def() : Object {\n return {};\n },\n\n validate(client, props) {\n const env = props.env || config.env;\n\n if (!client[env]) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (typeof client[env] === 'string') {\n if (client[env].match(/^(.)\\1+$/)) {\n throw new Error(`Invalid client ID: ${ client[env] }`);\n }\n } else if (!ZalgoPromise.isPromise(client[env])) {\n throw new Error(`Expected client token to be either a string or a promise`);\n }\n },\n\n decorate(client : Object) : Object {\n if (client && client.sandbox === 'demo_sandbox_client_id') {\n client.sandbox = 'AZDxjDScFpQtjWTOUtWKbyN_bDt4OgqaF4eYXlewfBP4-8aqX3PiV8e1GWU6liB2CUXlkA59kJXE7M6R';\n }\n\n return client;\n }\n },\n\n source: {\n type: 'string',\n required: false,\n def() : string {\n return SOURCE.MANUAL;\n }\n },\n\n prefetchLogin: {\n type: 'boolean',\n required: false\n },\n\n stage: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.STAGE || env === ENV.LOCAL) {\n return config.stage;\n }\n }\n },\n\n updateClientConfiguration: {\n type: 'boolean',\n required: false,\n def: () => {\n return true;\n }\n },\n\n stageUrl: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.STAGE || env === ENV.LOCAL) {\n return config.stageUrl;\n }\n }\n },\n\n localhostUrl: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.LOCAL) {\n return config.localhostUrl;\n }\n }\n },\n\n checkoutUri: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : ?string {\n return config.checkoutUri;\n }\n },\n\n braintree: {\n type: 'object',\n required: false,\n validate(braintree, props) {\n\n if (!braintree.paypalCheckout) {\n throw new Error(`Expected Braintree paypal-checkout component to be loaded`);\n }\n\n if (!props.client) {\n throw new Error(`Expected client prop to be passed with Braintree authorization keys`);\n }\n },\n // $FlowFixMe\n decorate(braintree, props) : ZalgoPromise {\n const env = props.env || config.env;\n // $FlowFixMe\n return ZalgoPromise.hash(props.client).then(client => {\n return awaitBraintreeClient(braintree, client[env]);\n });\n }\n },\n\n payment: {\n type: 'function',\n required: true,\n memoize: false,\n timeout: __TEST__ ? 500 : 10 * 1000,\n alias: 'billingAgreement',\n\n decorate(original) : Function {\n return function payment(data = {}) : ZalgoPromise {\n\n const actions = {\n request,\n payment: {\n create: (options) => {\n return this.props.braintree\n ? this.props.braintree.then(client => {\n return client.createPayment(mapPaymentToBraintree(options.payment || options));\n })\n : ZalgoPromise.hash(this.props.client).then(client => {\n return rest.payment.create(this.props.env, client, options);\n });\n }\n },\n order: {\n create: (options) => {\n return ZalgoPromise.hash(this.props.client).then(client => {\n return rest.order.create(this.props.env, client, options);\n });\n }\n },\n braintree: {\n create: (options) => {\n if (!this.props.braintree) {\n throw new Error(`Can not create using Braintree - no braintree client provided`);\n }\n\n return this.props.braintree.then(client => {\n return client.createPayment(options);\n });\n }\n }\n };\n\n if (getDomainSetting('memoize_payment') && this.memoizedToken) {\n return this.memoizedToken;\n }\n\n this.memoizedToken = ZalgoPromise.try(original, this, [ data, actions ]);\n\n const startTime = Date.now();\n\n this.memoizedToken = this.memoizedToken.then(token => {\n\n if (!token) {\n error(`no_token_passed_to_payment`);\n throw new Error(`No value passed to payment`);\n }\n\n const elapsed = Date.now() - startTime;\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.RECIEVE_PAYMENT,\n [ FPTI.KEY.CONTEXT_TYPE ]: FPTI.CONTEXT_TYPE[getPaymentType(token)],\n [ FPTI.KEY.CONTEXT_ID ]: token,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.RESPONSE_DURATION ]: elapsed,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n flushLogs();\n\n return token;\n });\n\n return this.memoizedToken;\n };\n }\n },\n\n authCode: {\n type: 'string',\n required: false,\n def() : string {\n return config.authCode;\n }\n },\n\n funding: {\n type: 'object',\n required: false,\n queryParam: true,\n validate({ allowed = [], disallowed = [] } : Object = {}) {\n validateFunding({ allowed, disallowed, remembered: [] });\n },\n def() : Object {\n return {};\n },\n decorate({ allowed = [], disallowed = [] } : Object = {}, props : ButtonOptions) : {} {\n\n allowed = Array.isArray(allowed) ? allowed : [];\n disallowed = Array.isArray(disallowed) ? disallowed : [];\n\n if (allowed && allowed.indexOf(FUNDING.VENMO) !== -1) {\n allowed = allowed.filter(source => (source !== FUNDING.VENMO));\n }\n if (allowed && allowed.indexOf(FUNDING.ITAU) !== -1) {\n allowed = allowed.filter(source => (source !== FUNDING.ITAU));\n }\n\n if (isCreditDualEligible(props)) {\n creditThrottle = getThrottle('dual_credit_automatic', 50);\n\n if (creditThrottle.isEnabled()) {\n allowed = [ ...allowed, FUNDING.CREDIT ];\n }\n }\n\n let remembered = getRememberedFunding(sources => sources);\n\n if (!isDevice() || getDomainSetting('disable_venmo')) {\n if (remembered && remembered.indexOf(FUNDING.VENMO) !== -1) {\n remembered = remembered.filter(source => (source !== FUNDING.VENMO));\n }\n\n if (disallowed && disallowed.indexOf(FUNDING.VENMO) === -1) {\n disallowed = [ ...disallowed, FUNDING.VENMO ];\n }\n }\n\n return {\n allowed,\n disallowed,\n remembered,\n remember(sources) {\n rememberFunding(sources);\n }\n };\n }\n },\n\n commit: {\n type: 'boolean',\n required: false,\n queryParam: true,\n queryValue: (val) => {\n return val ? 'true' : 'false';\n }\n },\n\n onRender: {\n type: 'function',\n promisify: true,\n required: false,\n noop: true,\n decorate(original) : Function {\n return function decorateOnRender() : mixed {\n const { browser = 'unrecognized', version = 'unrecognized' } = getBrowser();\n info(`button_render_browser_${ browser }_${ isDevice() ? 'mobile' : 'desktop' }_${ version }`);\n\n const style = this.props.style || {};\n\n info(`button_render`);\n info(`button_render_color_${ style.color || 'default' }`);\n info(`button_render_shape_${ style.shape || 'default' }`);\n info(`button_render_size_${ style.size || 'default' }`);\n info(`button_render_label_${ style.label || 'default' }`);\n info(`button_render_branding_${ style.branding || 'default' }`);\n info(`button_render_fundingicons_${ style.fundingicons || 'default' }`);\n info(`button_render_tagline_${ style.tagline || 'default' }`);\n\n pptm.listenForButtonRender();\n pptm.reloadPptmScript(this.props.client[this.props.env]);\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_RENDER,\n [ FPTI.KEY.BUTTON_TYPE ]: FPTI.BUTTON_TYPE.IFRAME,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.BUTTON_SOURCE ]: this.props.source\n });\n\n if (isIEIntranet()) {\n warn(`button_render_intranet_mode`);\n }\n\n if (creditThrottle) {\n creditThrottle.logStart({\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID\n });\n }\n\n flushLogs();\n\n return original.apply(this, arguments);\n };\n }\n },\n\n onAuthorize: {\n type: 'function',\n alias: 'onApprove',\n required: true,\n\n decorate(original) : Function {\n return function decorateOnAuthorize(data, actions) : void | ZalgoPromise {\n\n if (data && !data.intent) {\n warn(`button_authorize_no_intent`, { paymentID: data.paymentID, token: data.paymentToken });\n }\n\n info('button_authorize');\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CHECKOUT_AUTHORIZE,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n if (isIEIntranet()) {\n warn(`button_authorize_intranet_mode`);\n }\n\n if (!isEligible()) {\n info('button_authorize_ineligible');\n }\n\n checkRecognizedBrowser('authorize');\n\n flushLogs();\n\n const restart = actions.restart;\n actions.restart = () => {\n return restart().then(() => {\n return new ZalgoPromise();\n });\n };\n\n actions.redirect = (win, url) => {\n return ZalgoPromise.try(() => {\n if (actions.close) {\n return actions.close();\n }\n }).then(() => {\n return redir(win || window.top, url || data.returnUrl);\n });\n };\n\n actions.payment.tokenize = memoize(() => {\n if (!this.props.braintree) {\n throw new Error(`Must pass in Braintree client to tokenize payment`);\n }\n\n return this.props.braintree\n .then(client => client.tokenizePayment(data));\n });\n\n const execute = actions.payment.execute;\n actions.payment.execute = () => {\n return execute().then(result => {\n\n if (!result || !result.id || !result.intent || !result.state) {\n warn(`execute_result_missing_data`);\n return new ZalgoPromise();\n }\n\n return result;\n });\n };\n\n const get = actions.payment.get;\n\n actions.payment.get = () => {\n return get().then(result => {\n if (!result || !result.id || !result.intent || !result.state) {\n warn(`get_result_missing_data`);\n return new ZalgoPromise();\n }\n\n return result;\n });\n };\n\n actions.request = request;\n\n onAuthorizeListener.trigger({\n paymentToken: data.paymentToken\n });\n\n if (creditThrottle) {\n creditThrottle.logComplete({\n [FPTI.KEY.BUTTON_SESSION_UID]: this.props.buttonSessionID\n });\n }\n\n return ZalgoPromise.try(() => {\n\n if (this.props.braintree) {\n return actions.payment.tokenize().then(({ nonce }) => {\n // $FlowFixMe\n Object.defineProperty(data, 'nonce', {\n get: () => {\n info('nonce_getter');\n flushLogs();\n return nonce;\n }\n });\n });\n }\n\n }).then(() => {\n return original.call(this, data, actions);\n }).catch(err => {\n if (this.props.onError) {\n return this.props.onError(err);\n }\n throw err;\n });\n };\n }\n },\n\n onShippingChange: {\n type: 'function',\n required: false,\n\n decorate(original) : void | Function {\n if (!original) {\n return;\n }\n\n return function decorateOnShippingChange(data, actions) : ZalgoPromise {\n\n info('button_shipping_change');\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CHECKOUT_SHIPPING_CHANGE,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n flushLogs();\n const timeout = __TEST__ ? 500 : 10 * 1000;\n\n const patch = actions.payment.patch;\n actions.payment.patch = (patchObject) => {\n return ZalgoPromise.try(() => {\n return patch(patchObject);\n });\n };\n\n const resolve = () => ZalgoPromise.resolve();\n const reject = actions.reject || function reject() {\n throw new Error(`Missing reject action callback`);\n };\n\n return ZalgoPromise.try(() => {\n return original.call(this, data, { ...actions, resolve, reject });\n }).timeout(timeout,\n new Error(`Timed out waiting ${ timeout }ms for payment`)).catch(err => {\n if (this.props.onError) {\n this.props.onError(err);\n }\n throw err;\n });\n };\n }\n },\n\n onError: {\n type: 'function',\n required: false,\n promisify: true,\n sendToChild: true,\n once: true,\n def() : (() => void) {\n return function onError(err : mixed) {\n if (isIEIntranet()) {\n warn(`button_error_intranet_mode`);\n flushLogs();\n\n // eslint-disable-next-line no-alert\n alert(`IE Intranet mode is not supported by PayPal. Please disable intranet mode, or continue in an alternate browser.`);\n }\n\n setTimeout(() => {\n throw err;\n });\n };\n }\n },\n\n onCancel: {\n type: 'function',\n required: false,\n noop: true,\n\n decorate(original) : Function {\n return function decorateOnCancel(data, actions) : void | ZalgoPromise {\n\n info('button_cancel');\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CHECKOUT_CANCEL,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n flushLogs();\n\n const redirect = (win, url) => {\n return ZalgoPromise.all([\n redir(win || window.top, url || data.cancelUrl),\n actions.close()\n ]);\n };\n\n return original.call(this, data, { ...actions, redirect });\n };\n }\n },\n\n onClick: {\n type: 'function',\n required: false,\n noop: true,\n decorate(original) : Function {\n return function decorateOnClick(data : ?{ fundingSource : string, card? : string, flow? : string, button_version? : string }) : void {\n\n info('button_click');\n if (data && data.flow) {\n info(`pay_flow_${ data.flow }`);\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.BUTTON,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_CLICK,\n [ FPTI.KEY.BUTTON_TYPE ]: FPTI.BUTTON_TYPE.IFRAME,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.CHOSEN_FUNDING ]: data && (data.card || data.fundingSource),\n [ FPTI.KEY.PAYMENT_FLOW ]: data && data.flow,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n if (isIEIntranet()) {\n warn('button_click_intranet_mode');\n }\n\n if (creditThrottle) {\n creditThrottle.log('click', {\n [ FPTI.KEY.STATE ]: FPTI.STATE.BUTTON,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_CLICK,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID\n });\n }\n\n const { color = 'default' } = this.props.style || {};\n info(`button_click_color_${ color }`);\n\n flushLogs();\n\n return original.apply(this, arguments);\n };\n }\n },\n\n onResize: {\n type: 'function',\n required: false,\n get value() : Function {\n let initialHeight;\n const logInlineGuestOutOfViewPortOnlyOnce = once((data) => {\n info('buttons_expansion_outside_viewport', data);\n immediateFlush();\n });\n\n return function onResizeHandler() {\n const container = this.container;\n\n if (!container) {\n return;\n }\n\n if (!initialHeight) {\n initialHeight = container.offsetHeight;\n }\n\n const getScrollOffsetY = () => {\n if (window.pageYOffset) {\n return window.pageYOffset;\n }\n\n if (document.documentElement) {\n return document.documentElement.scrollTop;\n }\n\n return 0;\n };\n\n // explanation https://github.com/paypal/paypal-checkout-components/pull/1136#discussion_r298025574\n const checkIfExpansionInViewport = () => {\n try {\n const scrollOffsetY = getScrollOffsetY();\n const windowHeight = window.innerHeight;\n\n const containerOffsetY = container.getBoundingClientRect().top;\n const VISIBLE_THRESHOLD = 200; // 200px, for the first input field to be visible\n\n return scrollOffsetY + windowHeight > initialHeight + containerOffsetY + VISIBLE_THRESHOLD;\n } catch (err) {\n info('cannot_get_the_viewport_information');\n return false;\n }\n };\n\n const isContainerExpanded = container && container.offsetHeight > initialHeight;\n const isExpansionInViewport = checkIfExpansionInViewport();\n\n if (!isContainerExpanded || isExpansionInViewport) {\n return;\n }\n\n logInlineGuestOutOfViewPortOnlyOnce({\n height: container.offsetHeight,\n window: {\n width: window.innerWidth,\n height: window.innerHeight\n }\n });\n };\n },\n decorate: (original) => debounce(original)\n },\n\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n },\n\n validate: validateButtonLocale\n },\n\n style: {\n type: 'object',\n required: false,\n queryParam: true,\n alias: 'buttonStyle',\n\n def() : Object {\n return {\n color: BUTTON_COLOR.GOLD,\n shape: BUTTON_SHAPE.PILL,\n size: BUTTON_SIZE.SMALL,\n label: BUTTON_LABEL.CHECKOUT,\n fundingicons: false,\n layout: BUTTON_LAYOUT.HORIZONTAL\n };\n },\n \n decorate(style : Object) : Object {\n const { label, layout = BUTTON_LAYOUT.HORIZONTAL } = style;\n if (!label && layout === BUTTON_LAYOUT.HORIZONTAL) {\n style.label = BUTTON_LABEL.CHECKOUT;\n return style;\n } else if (!label && layout === BUTTON_LAYOUT.VERTICAL) {\n style.label = BUTTON_LABEL.PAYPAL;\n return style;\n }\n return style;\n },\n\n validate(style = {}, props) {\n validateButtonStyle(style, props);\n flushLogs();\n }\n },\n\n validate: {\n type: 'function',\n required: false,\n decorate(validate) : Function {\n // $FlowFixMe\n return function decorateValidate(actions) : mixed {\n if (!this.validateCalled) {\n this.validateCalled = true;\n return validate(actions);\n }\n };\n }\n },\n\n logLevel: {\n type: 'string',\n required: false,\n get value() : string {\n return config.logLevel;\n }\n },\n\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n },\n\n awaitPopupBridge: {\n type: 'object',\n required: false,\n value: () => awaitPopupBridge(Button)\n },\n\n getPageUrl: {\n type: 'function',\n queryParam: false,\n required: false,\n def: () => {\n return () => window.location.href;\n }\n },\n\n test: {\n type: 'object',\n required: false,\n def() : Object {\n return { action: 'checkout' };\n }\n }\n }\n});\n\nif (Button.isChild()) {\n setupButtonChild(Button);\n}\n","/* @flow */\n\nimport { info, warn, flush as flushLogs } from 'beaver-logger/client';\nimport { CONSTANTS } from 'zoid/src';\nimport { getParent, getTop } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { config } from './config';\nimport { noop, isIE, getDomainSetting, extendUrl, patchMethod, once, extend } from './lib';\nimport { Button } from './button';\nimport { Checkout } from './checkout';\nimport { BUTTON_LABEL, BUTTON_SIZE, BUTTON_COLOR } from './constants';\nimport { rest } from './api';\n\nif (isIE() && getDomainSetting('ie_full_page')) {\n // $FlowFixMe\n Checkout.renderTo = (win) => {\n info('force_ie_full_page');\n flushLogs();\n\n // $FlowFixMe\n const checkout = Checkout.init({\n onAuthorize: noop\n });\n\n checkout.delegate(win);\n\n checkout.openContainer().then(() => {\n checkout.event.triggerOnce(CONSTANTS.EVENTS.CLOSE);\n checkout.showContainer();\n });\n\n // $FlowFixMe\n Button.xprops.payment().then(token => {\n window.top.location = extendUrl(config.checkoutUrl, { token });\n }).catch(err => {\n checkout.error(err);\n });\n };\n}\n\nconst parent = getParent(window);\nconst top = getTop(window);\n\nif (top && parent) {\n let canRenderTop = (top === parent);\n\n if (!canRenderTop) {\n Checkout.canRenderTo(top).then(result => {\n canRenderTop = result;\n });\n\n patchMethod(Checkout, 'renderTo', ({ args: [ win, props, el ], original, context }) => {\n\n if (!canRenderTop) {\n win = getParent(window);\n }\n\n return original.call(context, win, props, el);\n });\n }\n}\n\npatchMethod(Checkout, 'renderTo', ({ callOriginal, args: [ , props ] }) => {\n if (getDomainSetting('allow_full_page_fallback')) {\n const handleError = once((err) => {\n try {\n // eslint-disable-next-line no-console\n console.error(err && err.stack);\n } catch (err2) {\n // pass\n }\n\n // $FlowFixMe\n return Button.xprops.payment().then(token => {\n window.top.location = extendUrl(config.checkoutUrl, { token });\n });\n });\n\n props.onError = handleError;\n return callOriginal().catch(handleError);\n }\n return callOriginal();\n});\n\nlet debounce = false;\n\npatchMethod(Checkout, 'renderTo', ({ callOriginal, args: [ , props ] }) => {\n\n if (debounce) {\n warn('button_mutliple_click_debounce');\n return new ZalgoPromise(noop);\n }\n\n debounce = true;\n\n for (const methodName of [ 'onAuthorize', 'onCancel', 'onError', 'onClose' ]) {\n const original = props[methodName];\n props[methodName] = function unDebounce() : mixed {\n debounce = false;\n if (original) {\n return original.apply(this, arguments);\n }\n };\n }\n\n return callOriginal();\n});\n\npatchMethod(rest.payment, 'create', ({ original: createOriginal, context: createContext, args: [ env, client, options, experience ] }) => {\n if (!options.payment) {\n options = { payment: options, experience };\n }\n return createOriginal.call(createContext, env, client, options);\n});\n\npatchMethod(Button.props.style, 'validate', ({ callOriginal, args: [ style ] }) => {\n\n if (!style) {\n return callOriginal();\n }\n\n if (style && style.color === 'creditblue') {\n style.color = BUTTON_COLOR.DARKBLUE;\n }\n\n if (style && style.label === 'generic') {\n style.label = BUTTON_LABEL.PAYPAL;\n }\n\n if (style && (!style.label || style.label === BUTTON_LABEL.CHECKOUT) && style.size === 'tiny') {\n warn(`unsupported_button_size_tiny`);\n style.size = BUTTON_SIZE.SMALL;\n }\n\n return callOriginal();\n});\n\npatchMethod(Button, 'render', ({ callOriginal, args: [ props ] }) => {\n\n if (props.billingAgreement) {\n props.payment = props.billingAgreement;\n delete props.billingAgreement;\n }\n\n return callOriginal();\n});\n\npatchMethod(Button.props.payment, 'decorate', ({ original, context, args: [ originalPayment ] }) => {\n return original.call(context, function payment(data : Object, actions : Object) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n patchMethod(actions.payment, 'create', ({ original: createOriginal, context: createContext, args: [ options, experience ] }) => {\n if (!options.payment) {\n options = { payment: options, experience };\n }\n return createOriginal.call(createContext, options);\n });\n\n function resolveData(token) {\n resolve(token);\n }\n\n function rejectActions(err) {\n reject(err);\n }\n\n extend(resolveData, data);\n extend(resolveData, actions);\n extend(rejectActions, actions);\n\n const ctx = {\n props: {\n env: this.props.env,\n client: this.props.client\n }\n };\n\n let result;\n\n try {\n result = originalPayment.call(ctx, resolveData, rejectActions);\n } catch (err) {\n return reject(err);\n }\n\n if (result && typeof result.then === 'function') {\n return result.then(resolve, reject);\n }\n\n if (result !== undefined) {\n return resolve(result);\n }\n });\n });\n});\n\nif (Button.isChild()) {\n if (!window.Promise) {\n window.Promise = ZalgoPromise;\n }\n}\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { create } from 'zoid/src';\nimport { type Component } from 'zoid/src/component/component';\nimport type { CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { base64encode } from 'belter/src';\n\nimport { config } from '../config';\nimport { getButtonSessionID, getBrowserLocale, getSessionID, getCurrentScriptUrl } from '../lib';\n\ntype CardOptions = {|\n client : {\n [string] : (string | ZalgoPromise)\n },\n env? : string,\n locale? : string,\n logLevel : string,\n awaitPopupBridge : Function,\n onAuthorize : ({ returnUrl : string }, { redirect : (?CrossDomainWindowType, ?string) => ZalgoPromise }) => ?ZalgoPromise,\n onCancel? : ({ cancelUrl : string }, { redirect : (?CrossDomainWindowType, ?string) => ZalgoPromise }) => ?ZalgoPromise,\n onEvent? : ({ type : string, payload : Object }) => void,\n meta : Object,\n commit : boolean,\n token : string\n|};\n\nexport const Card : Component = create({\n tag: 'card-fields',\n name: 'ppcard',\n\n buildUrl(props) : string {\n const env = props.env || config.env;\n return config.inlinedCardFieldUrls[env];\n },\n\n contexts: {\n iframe: true,\n popup: false\n },\n\n dimensions: {\n height: '300px',\n width: '100%'\n },\n\n autoResize: {\n height: true,\n width: false\n },\n\n props: {\n sessionID: {\n type: 'string',\n required: false,\n def() : string {\n return getSessionID();\n },\n queryParam: true\n },\n\n\n token: {\n type: 'string',\n required: true,\n queryParam: true\n },\n\n buttonSessionID: {\n type: 'string',\n required: false,\n def() : ?string {\n return getButtonSessionID();\n },\n queryParam: true\n },\n\n commit: {\n type: 'boolean',\n required: false,\n queryParam: true\n },\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n },\n\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n allowDelegate: true,\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n }\n },\n\n initialFormValues: {\n type: 'object',\n required: false\n },\n\n\n onAuthorize: {\n type: 'function',\n required: true,\n once: true\n },\n\n onAuth: {\n type: 'function',\n required: false,\n sameDomain: true\n },\n\n onEvent: {\n type: 'function',\n required: false,\n sameDomain: true\n },\n\n getState: {\n type: 'function',\n required: false,\n sameDomain: true\n },\n\n dispatch: {\n type: 'object',\n required: false,\n sameDomain: true\n },\n\n onCancel: {\n type: 'function',\n required: false,\n once: true,\n noop: true\n },\n\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n },\n \n style: {\n type: 'object',\n required: false,\n queryParam: true,\n def() : Object {\n return {\n cardIcons: {\n display: false\n },\n submitButton: {\n display: true\n },\n currencyConversion: {\n display: true\n }\n };\n }\n }\n }\n});\n","/* @flow */\n\nimport { info, track, debug, warn, error, flush as flushLogs } from 'beaver-logger/client';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { config } from './config';\nimport { FPTI } from './constants';\nimport { initLogger, checkForCommonErrors, setLogLevel, stringifyError,\n stringifyErrorMessage, getResourceLoadTime, isPayPalDomain, isEligible,\n getDomainSetting, once, openMetaFrame, precacheRememberedFunding,\n getCurrentScript, getRememberedFunding } from './lib';\nimport { Button } from './button';\nimport { Checkout } from './checkout';\nimport { pptm } from './external';\n\nfunction domainToEnv(domain : string) : ?string {\n for (const env of Object.keys(config.paypalUrls)) {\n if (config.paypalUrls[env] === domain) {\n return env;\n }\n }\n}\n\nfunction setDomainEnv(domain : string) {\n const currentDomainEnv = domainToEnv(domain);\n\n if (currentDomainEnv && currentDomainEnv !== 'test') {\n config.env = currentDomainEnv;\n }\n}\n\nsetDomainEnv(`${ window.location.protocol }//${ window.location.host }`);\n\nZalgoPromise.onPossiblyUnhandledException(err => {\n\n error('unhandled_error', {\n stack: stringifyError(err),\n errtype: ({}).toString.call(err)\n });\n\n track({\n [ FPTI.KEY.ERROR_CODE ]: 'checkoutjs_error',\n [ FPTI.KEY.ERROR_DESC ]: stringifyErrorMessage(err)\n });\n\n return flushLogs().catch(err2 => {\n if (window.console) {\n try {\n if (window.console.error) {\n window.console.error('Error flushing:', stringifyError(err2));\n } else if (window.console.log) {\n window.console.log('Error flushing:', stringifyError(err2));\n }\n } catch (err3) {\n setTimeout(() => {\n throw err3;\n }, 1);\n }\n }\n });\n});\n\nconst currentScript = getCurrentScript();\nconst currentProtocol = window.location.protocol.split(':')[0];\n\n\ntype ConfigOptions = {|\n env? : ?string,\n stage? : ?string,\n apiStage? : ?string,\n stageUrl? : ?string,\n localhostUrl? : ?string,\n checkoutUri? : ?string,\n state? : ?string,\n logLevel? : ?string,\n merchantID? : ?string,\n precacheRemembered? : boolean,\n authCode? : ?string\n|};\n\nfunction configure({ env, stage, stageUrl, apiStage, localhostUrl, checkoutUri, state, logLevel, merchantID, authCode } : ConfigOptions = {}) {\n\n if (env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n\n delete config.env;\n config.env = env;\n } else if (Button.xprops && Button.xprops.env) {\n delete config.env;\n // $FlowFixMe\n config.env = Button.xprops.env;\n } else if (Checkout.xprops && Checkout.xprops.env) {\n delete config.env;\n // $FlowFixMe\n config.env = Checkout.xprops.env;\n }\n\n if (stage) {\n delete config.stage;\n config.stage = stage;\n } else if (Button.xprops && Button.xprops.stage) {\n delete config.stage;\n // $FlowFixMe\n config.stage = Button.xprops.stage;\n } else if (Checkout.xprops && Checkout.xprops.stage) {\n delete config.stage;\n // $FlowFixMe\n config.stage = Checkout.xprops.stage;\n }\n\n if (stageUrl) {\n delete config.stageUrl;\n // $FlowFixMe\n config.stageUrl = stageUrl;\n } else if (Button.xprops && Button.xprops.stageUrl) {\n delete config.stageUrl;\n // $FlowFixMe\n config.stageUrl = Button.xprops.stageUrl;\n } else if (Checkout.xprops && Checkout.xprops.stageUrl) {\n delete config.stageUrl;\n // $FlowFixMe\n config.stageUrl = Checkout.xprops.stageUrl;\n }\n\n authCode = authCode || (Button.xprops && Button.xprops.authCode) || (Checkout.xprops && Checkout.xprops.authCode);\n\n if (authCode) {\n delete config.authCode;\n config.authCode = authCode;\n }\n\n if (apiStage) {\n delete config.apiStage;\n config.apiStage = apiStage;\n }\n\n localhostUrl = localhostUrl || (Button.xprops && Button.xprops.localhostUrl) || (Checkout.xprops && Checkout.xprops.localhostUrl);\n if (localhostUrl) {\n config.localhostUrl = localhostUrl;\n }\n\n checkoutUri = checkoutUri || (Button.xprops && Button.xprops.checkoutUri) || (Checkout.xprops && Checkout.xprops.checkoutUri);\n if (checkoutUri) {\n config.checkoutUri = checkoutUri;\n }\n\n if (state) {\n delete config.state;\n config.state = state;\n }\n\n if (merchantID) {\n config.merchantID = merchantID;\n }\n\n if (logLevel) {\n setLogLevel(logLevel);\n } else {\n setLogLevel(config.logLevel);\n }\n}\n\nexport const init = once(({ precacheRemembered }) => {\n\n if (!isEligible()) {\n warn('ineligible');\n }\n\n checkForCommonErrors();\n\n initLogger();\n\n if (pptm.shouldCreateInitialPptmScript()) {\n pptm.createPptmScript();\n }\n\n if (precacheRemembered) {\n precacheRememberedFunding();\n }\n\n if (getDomainSetting('force_bridge') && !isPayPalDomain()) {\n openMetaFrame(config.env);\n }\n\n info(`setup_${ config.env }`);\n\n debug(`current_protocol_${ currentProtocol }`);\n});\n\n// $FlowFixMe\nexport function setup(options : ConfigOptions = {}) {\n configure(options);\n init(options);\n}\n\nif (currentScript) {\n setup({\n env: currentScript.getAttribute('data-env'),\n stage: currentScript.getAttribute('data-stage'),\n apiStage: currentScript.getAttribute('data-api-stage'),\n stageUrl: currentScript.getAttribute('data-stage-url'),\n localhostUrl: isPayPalDomain() ? currentScript.getAttribute('data-localhost-url') : undefined,\n checkoutUri: isPayPalDomain() ? currentScript.getAttribute('data-checkout-uri') : undefined,\n state: currentScript.getAttribute('data-state'),\n logLevel: currentScript.getAttribute('data-log-level'),\n merchantID: currentScript.getAttribute('data-merchant-id'),\n authCode: currentScript.getAttribute('data-auth-code'),\n precacheRemembered: currentScript.hasAttribute('data-precache-remembered-funding')\n });\n\n} else {\n setup();\n}\n\nif (!isPayPalDomain()) {\n\n if (currentScript) {\n\n const scriptProtocol = currentScript.src.split(':')[0];\n const loadTime = getResourceLoadTime(currentScript.src);\n\n debug(`current_script_protocol_${ scriptProtocol }`);\n debug(`current_script_protocol_${ currentProtocol === scriptProtocol ? 'match' : 'mismatch' }`);\n debug(`current_script_version_${ config.version.replace(/[^0-9a-zA-Z]+/g, '_') }`);\n\n if (loadTime) {\n debug(`current_script_time`, { loadTime });\n debug(`current_script_time_${ Math.floor(loadTime / 1000) }`);\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.SCRIPT_LOAD,\n [ FPTI.KEY.TRANSITION_TIME ]: loadTime,\n [ FPTI.KEY.FUNDING_REMEMBERED ]: getRememberedFunding().join(',')\n });\n\n } else {\n\n debug(`no_current_script`);\n debug(`no_current_script_version_${ config.version.replace(/[^0-9a-zA-Z]+/g, '_') }`);\n\n if (document.currentScript) { // eslint-disable-line compat/compat\n debug(`current_script_not_recognized`, { src: document.currentScript.src }); // eslint-disable-line compat/compat\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.SCRIPT_LOAD\n });\n }\n}\n","/* @flow */\n\nimport { debug, info, warn, error, track, flush } from 'beaver-logger/client';\nimport { destroyAll as _destroyAll } from 'zoid/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport * as _postRobot from 'post-robot/src'; // eslint-disable-line import/no-namespace\n\nimport { isPayPalDomain } from './lib';\nimport { Checkout as _Checkout } from './checkout';\nimport { BillingPage as _BillingPage } from './billing';\nimport { ThreeDomainSecure as _ThreeDomainSecure } from './threeDomainSecure';\n\nimport './hacks'; // eslint-disable-line import/no-unassigned-import\n\nexport const postRobot = _postRobot;\nexport { ZalgoPromise as Promise } from 'zalgo-promise/src';\nexport { PopupOpenError } from 'zoid/src';\n\nexport { rest } from './api';\nexport { Button } from './button';\nexport { Card } from './card';\nexport { setup } from './setup';\nexport { config } from './config';\nexport { ENV, USERS, SOURCE, FUNDING, CARD } from './constants';\nexport { request, isEligible, isFundingRemembered, allowIframe as forceIframe, allowIframe as isWebView, allowIframe } from './lib';\nexport { logExperimentTreatment } from './experiments';\nexport { logFundingEligibility } from './funding';\n\nexport const onPossiblyUnhandledException = ZalgoPromise.onPossiblyUnhandledException;\n\nexport const version = __PAYPAL_CHECKOUT__.__MINOR_VERSION__;\n\nexport let checkout;\nexport let apps;\n\nif (__PAYPAL_CHECKOUT__.__LEGACY_SUPPORT__) {\n const legacy = require('./legacy');\n checkout = legacy.checkout;\n apps = legacy.apps;\n}\n\n// -------------------------------------------------------------\n\nexport let Checkout;\nexport let BillingPage;\nexport let PayPalCheckout;\nexport let destroyAll;\nexport let enableCheckoutIframe;\nexport let logger;\nexport let ThreeDomainSecure;\n\nfunction _enableCheckoutIframe() {\n _Checkout.contexts.iframe = true;\n}\n\nif (isPayPalDomain() || __TEST__) {\n Checkout = _Checkout;\n BillingPage = _BillingPage;\n ThreeDomainSecure = _ThreeDomainSecure;\n PayPalCheckout = _Checkout;\n enableCheckoutIframe = _enableCheckoutIframe;\n destroyAll = _destroyAll;\n logger = { debug, info, warn, error, track, flush };\n}\n","/* @flow */\n/* eslint import/no-default-export: off */\n\nimport * as INTERFACE from './interface'; // eslint-disable-line import/no-namespace\n\nexport * from './interface';\nexport default INTERFACE;\n","/* @flow */\n\nexport const LOG_PREFIX = `paypal_legacy`;\n\nexport const ATTRIBUTES = {\n BUTTON: 'data-paypal-button',\n MERCHANT_ID: 'data-paypal-id',\n ENV: 'data-env',\n SANDBOX: 'data-sandbox'\n};\n\nexport const CLASSES = {\n HIDDEN_BUTTON: 'paypal-button-hidden'\n};\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { debug } from 'beaver-logger/client';\nimport { bridge } from 'post-robot/src';\n\nimport { config } from '../config';\nimport { openMetaFrame, noop } from '../lib';\n\nexport function setupPostBridge(env : string) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n const metaFrameDomain : string = config.paypalDomains[env];\n\n if (!bridge || !bridge.needsBridge({ domain: metaFrameDomain })) {\n return debug(`post_bridge_not_required`, { env });\n }\n\n debug(`setup_post_bridge`, { env });\n\n return openMetaFrame(env).then(noop);\n });\n}\n","/* @flow */\n\nimport { isDevice, isEligible, supportsPopups } from '../lib';\n\nexport function isLegacyEligible() : boolean {\n\n if (!isEligible()) {\n return false;\n }\n\n if (!supportsPopups()) {\n return false;\n }\n\n if (isDevice()) {\n return false;\n }\n\n return true;\n}\n","/* @flow */\n\nimport { prefix } from 'beaver-logger/client';\n\nimport { COUNTRY, LANG, LOCALE } from '../constants';\nimport type { LocaleType } from '../types';\n\nimport { LOG_PREFIX } from './constants';\n\nconst { warn } = prefix(LOG_PREFIX);\n\nconst DEFAULT_COUNTRY = COUNTRY.US;\nconst DEFAULT_LANG = LANG.EN;\n\nexport function normalizeLocale(locale : string) : LocaleType {\n\n let [ lang, country ] = locale.split('_');\n\n if (!country) {\n if (LOCALE[lang]) {\n country = lang;\n lang = null;\n } else {\n country = DEFAULT_COUNTRY;\n }\n }\n\n if (!LOCALE[country]) {\n warn(`invalid_user_country`, { country });\n country = DEFAULT_COUNTRY;\n }\n\n if (!lang) {\n lang = DEFAULT_LANG;\n }\n\n if (LOCALE[country].indexOf(lang) === -1) {\n warn(`invalid_user_lang`, { lang });\n\n if (LOCALE[country].indexOf(DEFAULT_LANG) !== -1) {\n lang = DEFAULT_LANG;\n } else {\n lang = LOCALE[country][0];\n }\n }\n\n return { country, lang };\n}\n","/* @flow */\n\nimport { prefix } from 'beaver-logger/client';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { config } from '../config';\nimport { FPTI, BUTTON_COLOR, BUTTON_SHAPE, BUTTON_SIZE, BUTTON_LABEL } from '../constants';\nimport { loadScript, memoize, isElementVisible, stringifyError } from '../lib';\n\nimport { LOG_PREFIX } from './constants';\nimport { normalizeLocale } from './common';\n\nconst { info, debug, error } = prefix(LOG_PREFIX);\n\nconst loadButtonJS = memoize(() : ZalgoPromise => {\n\n debug(`buttonjs_load`);\n\n return loadScript(config.buttonJSUrl).catch(err => {\n info(`buttonjs_load_error_retry`, { error: stringifyError(err) });\n return loadScript(config.buttonJSUrl);\n }).then(result => {\n debug(`buttonjs_load_success`);\n return result;\n }).catch(err => {\n error(`buttonjs_load_error`, { error: stringifyError(err) });\n throw err;\n });\n});\n\nfunction renderButton(id, { container, locale, type, color, shape, size }) : ZalgoPromise {\n\n return loadButtonJS().then(() => {\n\n if (locale) {\n const { country, lang } = normalizeLocale(locale);\n locale = `${ lang }_${ country }`;\n }\n\n locale = locale || `${ config.locale.lang }_${ config.locale.country }`;\n color = color || BUTTON_COLOR.GOLD;\n shape = shape || BUTTON_SHAPE.PILL;\n size = size || BUTTON_SIZE.SMALL;\n type = type || BUTTON_LABEL.CHECKOUT;\n\n debug(`render_button_lc_${ locale }`);\n debug(`render_button_color_${ color }`);\n debug(`render_button_shape_${ shape }`);\n debug(`render_button_size_${ size }`);\n debug(`render_button_label_${ type }`);\n\n const el = window.paypal.button.create(id, { lc: locale, color, shape, size }, { type: 'button', label: type }).el;\n container.appendChild(el);\n\n try {\n info(`in_page_button_${ isElementVisible(el) ? 'visible' : 'not_visible' }`);\n\n } catch (err) {\n // pass\n }\n\n return el.childNodes[0];\n });\n}\n\n// eslint-disable-next-line flowtype/no-mutable-array\nexport function renderButtons(id : string, buttons : Array) : ZalgoPromise> {\n\n return ZalgoPromise.map(buttons, button => {\n return ZalgoPromise.try(() => {\n\n if (button.container) {\n return renderButton(id, button);\n } else {\n return button.button;\n }\n\n }).then(element => {\n\n let container;\n let type;\n const condition = button.condition;\n const click = button.click;\n\n if (button.container) {\n container = button.container;\n type = FPTI.BUTTON_TYPE.HTML;\n } else {\n container = button.button;\n type = FPTI.BUTTON_TYPE.CUSTOM;\n }\n\n return { container, element, type, condition, click };\n });\n });\n}\n\nexport function getHijackTargetElement(button : HTMLElement | HTMLButtonElement) : ?HTMLElement {\n\n // $FlowFixMe\n const form = button.form;\n\n if (form) {\n debug(`target_element_button_form`);\n return form;\n }\n\n const tagName = button.tagName && button.tagName.toLowerCase();\n\n if (tagName === 'a') {\n debug(`target_element_link`);\n return button;\n }\n\n const parentElement = button.parentElement;\n const parentTagName = parentElement && parentElement.tagName && parentElement.tagName.toLowerCase();\n\n if ((tagName === 'img' || tagName === 'button') && parentTagName === 'a') {\n debug(`target_element_parent_link`);\n // $FlowFixMe\n return parentElement;\n }\n\n const grandparentElement = parentElement && parentElement.parentElement;\n const grandparentTagName = grandparentElement && grandparentElement.tagName && grandparentElement.tagName.toLowerCase();\n\n if (tagName === 'button' && grandparentTagName === 'a') {\n debug(`target_element_grandparent_link`);\n // $FlowFixMe\n return button.parentElement && button.parentElement.parentElement;\n }\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { flush as flushLogs, prefix } from 'beaver-logger/client';\n\nimport { config } from '../config';\nimport { ENV } from '../constants';\nimport { urlWillRedirectPage, redirect as redir } from '../lib';\n\nimport { LOG_PREFIX } from './constants';\n\nconst { warn } = prefix(LOG_PREFIX);\n\nlet redirected = false;\n\nexport function logRedirect(location : string) {\n\n if (redirected) {\n warn(`multiple_redirects`);\n }\n\n if (urlWillRedirectPage(location)) {\n redirected = true;\n }\n\n flushLogs();\n}\n\nexport function redirect(url : string) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n if (!url) {\n throw new Error(`Redirect url undefined`);\n }\n\n if (config.env === ENV.TEST && urlWillRedirectPage(url)) {\n return redir(window, `#fullpageRedirect?url=${ url }`);\n }\n\n logRedirect(url);\n\n return redir(window, url);\n });\n}\n\nexport function isToken(item : string) : boolean {\n return Boolean(item && item.match(/^(EC-)?[A-Z0-9]{17}$/));\n}\n\n\n/* Parse Token\n -----------\n\n We are passed either a token, or a url containing the token. In order to run the new checkout component we need to\n strip out the token from the url in order to pass it down as a prop\n*/\n\nexport function parseToken(token : string) : ?string {\n\n if (!token) {\n return;\n }\n\n token = decodeURIComponent(decodeURIComponent(token));\n\n // We may get lucky and be passed a token straight off the bar\n\n if (token.match(/^(EC-)?[A-Z0-9]{17}$/)) {\n return token;\n }\n\n // Otherwise strip the token from the url we're sent\n\n let match = token.match(/token=((EC-)?[A-Z0-9]{17})/);\n\n if (match) {\n return match[1];\n }\n\n match = token.match(/(EC-[A-Z0-9]{17})/);\n\n if (match) {\n return match[1];\n }\n}\n\nexport function hasToken(item : string) : boolean {\n return Boolean(parseToken(item));\n}\n","/* @flow */\n\nimport { prefix } from 'beaver-logger/client';\n\nimport { config } from '../config';\nimport { ENV } from '../constants';\nimport { getElements } from '../lib';\n\nimport { normalizeLocale } from './common';\nimport { LOG_PREFIX } from './constants';\n\nconst { info, warn } = prefix(LOG_PREFIX);\n\nexport function normalizeOptions(options : Object) {\n\n // Normalize environment\n\n if (options.environment) {\n\n if (options.environment === 'live') {\n options.environment = ENV.PRODUCTION;\n }\n\n if (!config.paypalUrls[options.environment]) {\n warn('invalid_env', { badenv: options.environment });\n options.environment = config.env;\n }\n }\n\n // If we're passed a single button in options.button, turn it into an array\n\n if (options.button && !Array.isArray(options.button)) {\n info(`options_button_single_button_passed`);\n\n options.button = [ options.button ];\n }\n\n // If we're passed an array of elements in options.buttons, switch it over to options.button\n\n if (options.buttons && getElements(options.buttons).length) {\n info(`options_buttons_with_elements_passed`);\n\n options.button = options.buttons;\n delete options.buttons;\n }\n\n // If we're passed an empty options.button array, clear the value\n\n if (options.button && options.button.length === 0) {\n info(`options_button_empty`);\n\n delete options.button;\n }\n\n // If we're passed options.button and options.container, concat both under button\n\n if (options.button && options.container) {\n info(`options_button_and_container_passed`, { button: options.button, container: options.container });\n\n options.button = options.button.concat(options.container);\n delete options.container;\n }\n\n // Normalize button selectors to elements\n\n if (options.button) {\n const button = getElements(options.button);\n\n if (button.length) {\n options.button = button;\n\n } else {\n warn(`options_button_element_not_found`, { element: JSON.stringify(options.button) });\n delete options.button;\n }\n }\n\n // Normalize options.button to options.buttons\n\n if (options.button) {\n\n options.buttons = options.button.map(button => {\n return {\n button,\n click: options.click,\n condition: options.condition\n };\n });\n\n delete options.click;\n delete options.condition;\n delete options.button;\n }\n\n // Normalize array of buttons\n\n else if (options.buttons && Array.isArray(options.buttons)) {\n\n const buttons = [];\n\n options.buttons.forEach(button => {\n\n if (!button) {\n return;\n }\n\n if (button.container && button.container !== options.container) {\n warn(`mismatched_container_and_button_passed`, { options: options.container, button: button.container });\n }\n\n getElements(button.container || button.button).forEach(element => {\n buttons.push({\n\n [ button.container ? 'container' : 'button' ]: element,\n\n click: button.click || options.click,\n condition: button.condition || options.condition,\n type: button.type || options.type,\n locale: button.locale || options.locale,\n color: button.color || options.color,\n shape: button.shape || options.shape,\n size: button.size || options.size\n });\n });\n });\n\n delete options.buttons;\n delete options.click;\n delete options.condition;\n delete options.button;\n delete options.type;\n delete options.locale;\n delete options.color;\n delete options.shape;\n delete options.size;\n\n if (buttons.length) {\n options.buttons = buttons;\n }\n }\n\n // Otherwise normalize container into array of buttons\n\n else if (options.container && !Array.isArray(options.buttons)) {\n\n const buttons = [];\n\n getElements(options.container).forEach((container, i) => {\n buttons.push({\n container,\n click: options.click,\n condition: options.condition,\n type: Array.isArray(options.type) ? options.type[i] : options.type,\n locale: Array.isArray(options.locale) ? options.locale[i] : options.locale,\n color: Array.isArray(options.color) ? options.color[i] : options.color,\n shape: Array.isArray(options.shape) ? options.shape[i] : options.shape,\n size: Array.isArray(options.size) ? options.size[i] : options.size\n });\n });\n\n delete options.container;\n delete options.buttons;\n delete options.click;\n delete options.condition;\n delete options.button;\n delete options.type;\n delete options.locale;\n delete options.color;\n delete options.shape;\n delete options.size;\n\n if (buttons.length) {\n options.buttons = buttons;\n }\n }\n\n if (!options.buttons) {\n options.buttons = [];\n }\n}\n\nexport function setupConfig(options : Object) {\n\n if (options.environment && config.paypalUrls[options.environment]) {\n config.env = options.environment;\n }\n\n if (options.locale) {\n config.locale = normalizeLocale(options.locale);\n config.customCountry = true;\n }\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { prefix, flush as flushLogs } from 'beaver-logger/client';\nimport formSerialize from 'form-serialize';\n\nimport { Checkout } from '../checkout';\nimport { config } from '../config';\nimport { ENV, FPTI } from '../constants';\nimport { supportsPopups, once, safeJSON, extendUrl, stringifyError, request } from '../lib';\n\nimport { setupPostBridge } from './postBridge';\nimport { isLegacyEligible } from './eligibility';\nimport { LOG_PREFIX } from './constants';\nimport { renderButtons, getHijackTargetElement } from './button';\nimport { redirect, logRedirect, parseToken } from './util';\nimport { normalizeOptions, setupConfig } from './options';\n\nconst { info, debug, warn, error, track } = prefix(LOG_PREFIX);\n\nexport const checkout = {};\nexport const apps = { checkout, Checkout: checkout };\n\nexport function reset() {\n\n debug('reset');\n\n // Once our callback has been called, we can set the global methods to their original values\n\n checkout.initXO = initXO; // eslint-disable-line no-use-before-define\n checkout.startFlow = startFlow; // eslint-disable-line no-use-before-define\n checkout.closeFlow = closeFlow; // eslint-disable-line no-use-before-define\n}\n\ncheckout.reset = reset;\n\n// $FlowFixMe\nObject.defineProperty(checkout, 'urlPrefix', {\n get() : string {\n return `${ config.checkoutUrl }${ config.checkoutUrl.indexOf('?') === -1 ? '?' : '&' }token=`;\n }\n});\n\nfunction matchUrlAndPaymentToken(item) : { url : string, paymentToken : ?string } {\n\n if (!item || !item.trim()) {\n error(`startflow_no_url_or_token`, { item });\n throw new Error(`startflow_no_url_or_token`);\n }\n\n\n const paymentToken = parseToken(item);\n let url = (paymentToken && paymentToken === item) ? '' : item;\n\n if (url) {\n\n if (!url.match(/^https?:\\/\\/|^\\//)) {\n if (paymentToken) {\n info(`startflow_relative_url_with_token`, { url });\n } else {\n info(`startflow_relative_url_no_token`, { url });\n }\n\n if (url.toLowerCase().indexOf('ec-') === 0 && paymentToken) {\n url = `${ config.checkoutUrl }${ url }`;\n }\n\n } else if (paymentToken) {\n if (url.indexOf('.paypal.com') !== -1) {\n debug(`startflow_paypalurl_with_token`, { url });\n } else {\n debug(`startflow_url_with_token`, { url });\n }\n\n } else {\n debug(`startflow_url_no_token`, { url });\n }\n\n } else {\n\n if (paymentToken) {\n url = extendUrl(config.checkoutUrl, { token: paymentToken });\n debug(`startflow_with_token`, { url });\n } else {\n error(`startflow_no_url_or_token`, { url });\n throw new Error(`Could not determine url or token from \"${ item }\"`);\n }\n }\n\n return { paymentToken, url };\n}\n\nfunction checkUrlAgainstEnv(url : string) {\n\n const paypalUrls = config.paypalUrls;\n\n for (const env of Object.keys(paypalUrls)) {\n const paypalUrl = paypalUrls[env];\n\n if (env === ENV.TEST || env === ENV.DEMO) {\n continue;\n }\n\n if (env !== config.env) {\n if (url.indexOf(paypalUrl) === 0 || url.indexOf(paypalUrl.replace('//www.', '//')) === 0) {\n warn(`mismatched_env_startflow_url`, { env: config.env, url });\n redirect(url);\n throw new Error(`${ url } is not a ${ config.env } url`);\n }\n }\n }\n}\n\n/* Get Token\n ---------\n\n Normally in the component world, getToken would be a user-provided function which passes a callback, and expects\n that callback to be called with either an error, or an EC token.\n\n In our case, we can emulate these callback calls by setting over the startFlow and closeFlow globals, and using\n them as our success and failure cases.\n\n Note: this method is set to `precall: true` mode. This means that it will be called the moment the component is\n inited on the page. This means that the moment we initialize, we're ready to start accepting a token via one of the\n global methods.\n*/\n\nfunction awaitPaymentTokenAndUrl(event? : ?Event, targetElement? : ?HTMLElement) : { url : ZalgoPromise, paymentToken : ZalgoPromise } {\n\n const paymentTokenAndUrl = new ZalgoPromise((resolve) => {\n\n if (event && targetElement && (Math.random() < 0.001 || window.enablev3ajax)) {\n let method;\n let url;\n let body;\n let contentType;\n\n info('gettoken_targetelement_start');\n flushLogs();\n \n if (targetElement.tagName.toLowerCase() === 'a') {\n method = 'get';\n url = targetElement.getAttribute('href');\n } else if (targetElement.tagName.toLowerCase() === 'form') {\n method = (targetElement.getAttribute('method') || 'get').toLowerCase();\n url = targetElement.getAttribute('action');\n body = formSerialize(targetElement);\n contentType = targetElement.getAttribute('enctype') || 'application/x-www-form-urlencoded';\n }\n \n if (method && url) {\n event.preventDefault();\n\n request({\n method,\n url,\n body,\n headers: {\n 'Accept': 'application/paypal-json-token',\n 'Content-type': contentType || ''\n }\n }).then(json => {\n const urlAndPaymentToken = matchUrlAndPaymentToken(json.token);\n resolve(urlAndPaymentToken);\n info('gettoken_targetelement_success', urlAndPaymentToken);\n flushLogs();\n\n }).catch(err => {\n warn('gettoken_targetelement_error', {\n // $FlowFixMe\n err: err.stack || err.toString()\n });\n flushLogs();\n });\n \n } else {\n warn('gettoken_targetelement_no_method_or_url');\n flushLogs();\n }\n }\n\n\n checkout.initXO = () => {\n warn(`gettoken_initxo`);\n };\n\n // startFlow is our 'success' case - we get a token, and we can pass it back to the caller\n\n checkout.startFlow = once((item) => {\n debug(`gettoken_startflow`, { item });\n\n const { url, paymentToken } = matchUrlAndPaymentToken(item);\n\n checkUrlAgainstEnv(url);\n\n return resolve({ url, paymentToken });\n });\n });\n\n const url = paymentTokenAndUrl.then(result => result.url);\n const paymentToken = paymentTokenAndUrl.then(result => result.paymentToken);\n\n return { url, paymentToken };\n}\n\n\n/* Init PayPal Checkout\n --------------------\n\n Initialize the Checkout component with some standard props:\n\n - Pass in env from global state (saved during setup() call)\n - Return to success url on payment authorize\n - Return to cancel url on cancel\n*/\n\nlet paypalCheckoutInited = false;\nlet closeFlowCalled = false;\n\nfunction initPayPalCheckout(props = {}) : Object {\n\n info(`init_checkout`);\n\n if (paypalCheckoutInited && config.env !== ENV.TEST) {\n warn(`multiple_init_paypal_checkout`);\n }\n\n if (closeFlowCalled) {\n debug(`init_after_closeflow`);\n }\n\n paypalCheckoutInited = true;\n\n const paypalCheckout = Checkout.init({\n\n onAuthorize(data, actions) : ZalgoPromise {\n info(`payment_authorized`);\n logRedirect(data.returnUrl);\n return actions.redirect(window);\n },\n\n onCancel(data, actions) : ?ZalgoPromise {\n if (data.cancelUrl) {\n info(`payment_canceled`);\n logRedirect(data.cancelUrl);\n return actions.redirect(window);\n }\n },\n\n fallback(url) : ZalgoPromise {\n error(`fallback_handler`, { url });\n this.destroy();\n return redirect(url);\n },\n\n ...props\n });\n\n checkout.closeFlow = (closeUrl? : string) => {\n warn(`closeflow`);\n\n closeFlowCalled = true;\n\n reset();\n\n paypalCheckout.destroy();\n\n if (closeUrl) {\n warn(`closeflow_with_url`, { closeUrl });\n return redirect(closeUrl);\n }\n };\n\n return paypalCheckout;\n}\n\nfunction renderPayPalCheckout(props : Object = {}, hijackTarget? : ?Element) : ZalgoPromise {\n\n const urlProp = ZalgoPromise.resolve(props.url);\n\n const paymentToken = new ZalgoPromise(resolve => {\n props.init = (data) => {\n resolve(data.paymentToken);\n };\n });\n\n const errorHandler = once(err => {\n\n error(`component_error`, { error: stringifyError(err) });\n\n if (hijackTarget) {\n warn(`render_error_hijack_revert_target`);\n hijackTarget.removeAttribute('target');\n }\n\n // eslint-disable-next-line promise/no-promise-in-callback\n urlProp.then(url => {\n warn(`render_error_redirect_using_url`);\n return redirect(url);\n });\n\n // eslint-disable-next-line promise/no-promise-in-callback\n paymentToken.then(token => {\n warn(`render_error_redirect_using_token`);\n return redirect(extendUrl(config.checkoutUrl, { token }));\n });\n });\n\n props.onError = errorHandler;\n\n let paypalCheckout;\n\n if (hijackTarget) {\n\n delete props.url;\n\n paypalCheckout = initPayPalCheckout(props);\n\n paypalCheckout.hijack(hijackTarget);\n paypalCheckout.runTimeout();\n\n urlProp.then(url => {\n warn(`hijack_then_url_passed`);\n paypalCheckout.loadUrl(url);\n });\n\n } else {\n\n paypalCheckout = initPayPalCheckout(props);\n }\n\n const render = paypalCheckout.render(null, !hijackTarget);\n\n checkout.win = paypalCheckout.window;\n\n return render.catch(errorHandler);\n}\n\n\nfunction handleClick(clickHandler, event) {\n debug(`button_click_handler`);\n\n try {\n clickHandler(event);\n } catch (err) {\n error(`click_handler_error`, { error: stringifyError(err) });\n }\n}\n\nfunction handleClickHijack(event, element) : void {\n\n const targetElement = getHijackTargetElement(element);\n\n if (!targetElement) {\n return error(`target_element_not_found`);\n }\n\n info(`init_paypal_checkout_hijack`);\n\n const { url, paymentToken } = awaitPaymentTokenAndUrl(event, targetElement);\n\n let token;\n \n paymentToken.then(result => {\n token = result;\n });\n\n renderPayPalCheckout({ url, payment: () => ZalgoPromise.resolve(token) }, targetElement);\n}\n\nfunction listenClick(container, button, clickHandler, condition, tracker) : void {\n\n const element : HTMLElement = (container.tagName.toLowerCase() === 'a') ? container : button;\n\n const isClick = (typeof clickHandler === 'function');\n\n if (element.hasAttribute('data-paypal-click-listener')) {\n return warn(`button_already_has_paypal_click_listener`);\n }\n\n element.setAttribute('data-paypal-click-listener', '');\n\n const targetElement = getHijackTargetElement(element);\n\n if (targetElement && isClick) {\n info(`button_link_or_form`);\n }\n\n element.addEventListener('click', (event : Event) => {\n\n tracker();\n\n const eligible = isLegacyEligible();\n\n if (supportsPopups()) {\n debug(`click_popups_supported`);\n\n if (!eligible) {\n debug(`click_popups_supported_but_ineligible`);\n }\n } else {\n debug(`click_popups_not_supported`);\n\n if (eligible) {\n debug(`click_popups_not_supported_but_eligible`);\n }\n }\n\n if (!isClick) {\n\n if (!eligible) {\n return debug(`ineligible_listenclick`);\n }\n }\n\n info(`button_click`);\n\n if (typeof condition === 'function') {\n if (condition.call()) {\n info(`button_click_condition_enabled`);\n } else {\n return info(`button_click_condition_disabled`);\n }\n }\n\n if (isClick) {\n return handleClick(clickHandler, event);\n\n } else {\n return handleClickHijack(event, element);\n }\n });\n}\n\nfunction instrumentButtonRender(type : string) {\n info(`render_${ type }_button`);\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_RENDER,\n [ FPTI.KEY.BUTTON_TYPE ]: type\n });\n\n flushLogs();\n}\n\nfunction instrumentButtonClick(type : string) {\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_CLICK,\n [ FPTI.KEY.BUTTON_TYPE ]: type\n });\n flushLogs();\n}\n\n\n/* Setup\n -----\n\n Emulate window.paypal.checkout.setup.\n\n The purpose of this method is to:\n\n - Set up configuration for the incontext flow\n - Render a button to initiate the checkout window\n*/\n\nlet setupCalled = false;\n\nexport function setup(id : string, options : Object = {}) : ZalgoPromise {\n\n id = id || 'merchant';\n\n info(`setup`, {\n id,\n env: options.environment,\n options: safeJSON(options)\n });\n\n if (setupCalled) {\n debug(`setup_called_multiple_times`);\n }\n\n setupCalled = true;\n\n normalizeOptions(options);\n setupConfig(options);\n\n setupPostBridge(config.env);\n\n return ZalgoPromise.try(() => {\n\n // If there are no buttons passed, can only assume there's a custom paypal button with a custom listener\n\n if (!options.buttons.length) {\n return instrumentButtonRender(FPTI.BUTTON_TYPE.CUSTOM);\n }\n\n // Otherwise render whatever buttons we were asked to, and listen for them to be clicked\n\n return renderButtons(id, options.buttons).then(buttons => {\n\n buttons.forEach(button => {\n instrumentButtonRender(button.type);\n\n listenClick(button.container, button.element, button.click, button.condition, () => {\n instrumentButtonClick(button.type);\n });\n });\n });\n });\n}\n\ncheckout.setup = setup;\n\n/* Init XO\n -------\n\n Emulate paypal.checkout.initXO\n\n Normally this would be used only to open the checkout page. But here we can just kick off the whole flow, since\n getToken will handle loading the token into the window for us.\n*/\n\nfunction initXO() : void {\n\n debug(`initxo`);\n\n if (!isLegacyEligible()) {\n return debug(`ineligible_initxo`);\n }\n\n const { url, paymentToken } = awaitPaymentTokenAndUrl();\n\n info(`init_paypal_checkout_initxo`);\n\n renderPayPalCheckout({ url, payment: () => paymentToken });\n}\n\ncheckout.initXO = initXO;\n\n\n/* Start Flow\n ----------\n\n Emulate paypal.checkout.startFlow\n\n Normally this would be used to load the url into the browser after the window has already been opened. Again, we\n can just kick off the whole flow here, on the off chance that a merchant calls us on button click. Normally this\n method will have been patched over in getToken.\n*/\n\nfunction startFlow(item : string) {\n debug(`startflow`, { item });\n\n const { paymentToken, url } = matchUrlAndPaymentToken(item);\n\n checkUrlAgainstEnv(url);\n\n if (!isLegacyEligible()) {\n debug(`ineligible_startflow_global`, { url });\n redirect(url);\n return;\n }\n\n info(`init_paypal_checkout_startflow`);\n\n renderPayPalCheckout({ url, payment: () => ZalgoPromise.resolve(paymentToken) });\n}\n\ncheckout.startFlow = startFlow;\n\n\n/* Close Flow\n ----------\n\n Emulate paypal.checkout.closeFlow\n\n Close the component in case of any error on the merchant side.\n*/\n\nfunction closeFlow(closeUrl? : string) {\n warn(`closeflow_not_opened`);\n\n if (closeUrl) {\n warn(`closeflow_with_url`, { closeUrl });\n redirect(closeUrl);\n\n }\n}\n\ncheckout.closeFlow = closeFlow;\n","/* @flow */\n\nimport { prefix } from 'beaver-logger/client';\n\nimport { onDocumentReady } from '../lib';\nimport { ENV } from '../constants';\n\nimport { LOG_PREFIX, ATTRIBUTES, CLASSES } from './constants';\nimport { setup } from './interface';\n\nconst { error, debug } = prefix(LOG_PREFIX);\n\n/* PayPal Checkout Ready\n ---------------------\n\n Call window.paypalCheckoutReady on document ready, if it has been defined by the merchant\n*/\n\nfunction invokeReady(method) {\n\n onDocumentReady(() => {\n debug(`paypal_checkout_ready`);\n setTimeout(() => {\n\n if (!window.paypal) {\n error(`paypal_checkout_ready_no_window_paypal`);\n }\n\n method();\n }, 1);\n });\n}\n\nfunction onKey(obj : Object, key : string, callback : Function) {\n\n if (!obj) {\n return;\n }\n\n let value = obj[key];\n\n if (value) {\n value = callback(value) || value;\n }\n\n try {\n\n delete obj[key];\n\n Object.defineProperty(obj, key, {\n\n configurable: true,\n\n set(item) {\n value = item;\n\n if (value) {\n value = callback(value) || value;\n }\n },\n\n get() : mixed {\n return value;\n }\n });\n\n } catch (err) {\n // pass\n }\n}\n\nonKey(window, 'paypalCheckoutReady', method => {\n\n if (typeof method === 'function') {\n\n const oneTimeReady = function () : void {\n if (!method.called) {\n method.called = true;\n return method.apply(this, arguments);\n }\n };\n\n invokeReady(oneTimeReady);\n\n return oneTimeReady;\n }\n});\n\n\n/* Scan for buttons\n ----------------\n\n Scan for any buttons on the page with a data-paypal-button attribute and auto-attach the PaypalCheckout component to them\n*/\n\nonDocumentReady(() => {\n\n const buttons = Array.prototype.slice.call(document.querySelectorAll(`[${ ATTRIBUTES.BUTTON }]`));\n\n if (buttons && buttons.length) {\n debug(`data_paypal_button`, { number: buttons.length });\n\n for (const button of buttons) {\n\n const id = button.getAttribute(ATTRIBUTES.MERCHANT_ID);\n\n let environment;\n\n if (button.hasAttribute(ATTRIBUTES.ENV)) {\n environment = button.getAttribute(ATTRIBUTES.ENV);\n } else if (button.hasAttribute(ATTRIBUTES.SANDBOX)) {\n environment = ENV.SANDBOX;\n }\n\n setup(id, { environment, button });\n }\n }\n\n // Show hidden buttons\n\n Array.prototype.slice.call(document.getElementsByClassName(CLASSES.HIDDEN_BUTTON)).forEach(el => {\n el.className = el.className.replace(CLASSES.HIDDEN_BUTTON, '');\n });\n});\n","/* @flow */\n\nimport './ready'; // eslint-disable-line import/no-unassigned-import\n\nexport * from './button';\nexport * from './constants';\nexport * from './interface';\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://paypal/webpack/universalModuleDefinition","webpack://paypal/webpack/bootstrap","webpack://paypal/./src/constants/button.js","webpack://paypal/./src/constants/checkout.js","webpack://paypal/./src/constants/funding.js","webpack://paypal/./src/constants/misc.js","webpack://paypal/./src/constants/fpti.js","webpack://paypal/./src/constants/country.js","webpack://paypal/./src/constants/locale.js","webpack://paypal/./src/constants/index.js","webpack://paypal/./src/lib/jsx.js","webpack://paypal/./node_modules/zalgo-promise/src/utils.js","webpack://paypal/./node_modules/zalgo-promise/src/exceptions.js","webpack://paypal/./node_modules/zalgo-promise/src/flush.js","webpack://paypal/./node_modules/zalgo-promise/src/promise.js","webpack://paypal/./node_modules/zalgo-promise/src/index.js","webpack://paypal/./src/lib/device.js","webpack://paypal/./src/lib/dom.js","webpack://paypal/./src/lib/security.js","webpack://paypal/./src/lib/session.js","webpack://paypal/./src/lib/proxy.js","webpack://paypal/./src/lib/logger.js","webpack://paypal/./src/lib/eligibility.js","webpack://paypal/./src/lib/errors.js","webpack://paypal/./src/lib/http.js","webpack://paypal/./src/lib/beacon.js","webpack://paypal/./src/lib/throttle.js","webpack://paypal/./src/lib/namespace.js","webpack://paypal/./src/lib/script.js","webpack://paypal/./src/lib/meta.js","webpack://paypal/./src/lib/funding.js","webpack://paypal/./src/lib/index.js","webpack://paypal/./src/config/config.js","webpack://paypal/./src/config/index.js","webpack://paypal/./node_modules/beaver-logger/client/util.js","webpack://paypal/./node_modules/beaver-logger/client/builders.js","webpack://paypal/./node_modules/beaver-logger/client/config.js","webpack://paypal/./node_modules/beaver-logger/client/logger.js","webpack://paypal/./node_modules/beaver-logger/client/performance.js","webpack://paypal/./node_modules/beaver-logger/client/init.js","webpack://paypal/./node_modules/beaver-logger/client/transitions.js","webpack://paypal/./node_modules/beaver-logger/client/interface.js","webpack://paypal/./node_modules/beaver-logger/client/index.js","webpack://paypal/./node_modules/zoid/src/lib/util.js","webpack://paypal/./node_modules/zoid/src/lib/fn.js","webpack://paypal/./node_modules/zoid/src/lib/dom.js","webpack://paypal/./node_modules/zoid/src/lib/promise.js","webpack://paypal/./node_modules/zoid/src/lib/css.js","webpack://paypal/./node_modules/zoid/src/lib/decorators.js","webpack://paypal/./node_modules/zoid/src/lib/logger.js","webpack://paypal/./node_modules/zoid/src/lib/global.js","webpack://paypal/./node_modules/zoid/src/lib/index.js","webpack://paypal/./node_modules/cross-domain-utils/src/util.js","webpack://paypal/./node_modules/cross-domain-utils/src/constants.js","webpack://paypal/./node_modules/cross-domain-utils/src/utils.js","webpack://paypal/./node_modules/cross-domain-utils/src/types.js","webpack://paypal/./node_modules/cross-domain-utils/src/index.js","webpack://paypal/./node_modules/zoid/src/constants.js","webpack://paypal/./node_modules/post-robot/src/global.js","webpack://paypal/./node_modules/post-robot/src/conf/constants.js","webpack://paypal/./node_modules/post-robot/src/conf/config.js","webpack://paypal/./node_modules/post-robot/src/conf/index.js","webpack://paypal/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://paypal/./src/lib/util.js","webpack://paypal/./node_modules/post-robot/src/drivers/send/strategies.js","webpack://paypal/./node_modules/post-robot/src/drivers/send/index.js","webpack://paypal/./node_modules/post-robot/src/drivers/listeners.js","webpack://paypal/./node_modules/post-robot/src/drivers/receive/types.js","webpack://paypal/./node_modules/post-robot/src/drivers/receive/index.js","webpack://paypal/./node_modules/post-robot/src/drivers/index.js","webpack://paypal/./node_modules/post-robot/src/public/client.js","webpack://paypal/./node_modules/post-robot/src/public/server.js","webpack://paypal/./node_modules/post-robot/src/public/config.js","webpack://paypal/./node_modules/post-robot/src/public/index.js","webpack://paypal/./node_modules/post-robot/src/clean.js","webpack://paypal/./node_modules/post-robot/src/interface.js","webpack://paypal/./node_modules/post-robot/src/index.js","webpack://paypal/./node_modules/post-robot/src/lib/util.js","webpack://paypal/./node_modules/post-robot/src/lib/serialize.js","webpack://paypal/./node_modules/post-robot/src/lib/ready.js","webpack://paypal/./node_modules/post-robot/src/lib/index.js","webpack://paypal/./src/compat/fallback.js","webpack://paypal/./src/checkout/component.js","webpack://paypal/./src/checkout/index.js","webpack://paypal/./node_modules/belter/src/device.js","webpack://paypal/./node_modules/belter/src/util.js","webpack://paypal/./node_modules/belter/src/constants.js","webpack://paypal/./node_modules/belter/src/dom.js","webpack://paypal/./node_modules/belter/src/storage.js","webpack://paypal/./node_modules/belter/src/experiment.js","webpack://paypal/./node_modules/belter/src/global.js","webpack://paypal/./node_modules/belter/src/http.js","webpack://paypal/./node_modules/belter/src/types.js","webpack://paypal/./node_modules/belter/src/decorators.js","webpack://paypal/./node_modules/belter/src/css.js","webpack://paypal/./node_modules/belter/src/test.js","webpack://paypal/./node_modules/belter/src/index.js","webpack://paypal/./node_modules/cross-domain-safe-weakmap/src/native.js","webpack://paypal/./node_modules/cross-domain-safe-weakmap/src/util.js","webpack://paypal/./node_modules/cross-domain-safe-weakmap/src/weakmap.js","webpack://paypal/./node_modules/cross-domain-safe-weakmap/src/index.js","webpack://paypal/./src/resources/fundingLogos/p24.jsx","webpack://paypal/./src/resources/fundingLogos/sofort.jsx","webpack://paypal/./src/resources/fundingLogos/ideal.jsx","webpack://paypal/./src/resources/fundingLogos/giropay.jsx","webpack://paypal/./src/resources/fundingLogos/eps.jsx","webpack://paypal/./src/resources/fundingLogos/mybank.jsx","webpack://paypal/./src/resources/fundingLogos/bancontact.jsx","webpack://paypal/./src/resources/fundingLogos/payu.jsx","webpack://paypal/./src/resources/fundingLogos/verkkopankki.jsx","webpack://paypal/./src/resources/fundingLogos/blik.jsx","webpack://paypal/./src/resources/fundingLogos/trustly.jsx","webpack://paypal/./src/resources/fundingLogos/maxima.jsx","webpack://paypal/./src/resources/fundingLogos/boleto.jsx","webpack://paypal/./src/resources/fundingLogos/oxxo.jsx","webpack://paypal/./src/resources/fundingLogos/paypal.jsx","webpack://paypal/./src/resources/fundingLogos/credit.jsx","webpack://paypal/./src/resources/fundingLogos/index.js","webpack://paypal/./src/resources/cardLogos/index.js","webpack://paypal/./src/resources/index.js","webpack://paypal/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://paypal/./node_modules/@babel/runtime/helpers/esm/applyDecoratedDescriptor.js","webpack://paypal/./node_modules/zoid/src/component/base.js","webpack://paypal/./node_modules/zoid/src/component/window.js","webpack://paypal/./node_modules/zoid/src/component/child/props.js","webpack://paypal/./node_modules/zoid/src/component/child/index.js","webpack://paypal/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://paypal/./node_modules/zoid/src/component/parent/drivers.js","webpack://paypal/./node_modules/zoid/src/component/parent/validate.js","webpack://paypal/./node_modules/zoid/src/component/parent/props.js","webpack://paypal/./node_modules/zoid/src/component/parent/index.js","webpack://paypal/./node_modules/zoid/src/component/delegate/index.js","webpack://paypal/./node_modules/zoid/src/component/component/validate.js","webpack://paypal/./node_modules/zoid/src/component/component/templates/container.jsx","webpack://paypal/./node_modules/zoid/src/component/component/templates/component.jsx","webpack://paypal/./node_modules/zoid/src/component/component/templates/index.js","webpack://paypal/./node_modules/zoid/src/component/component/props.js","webpack://paypal/./node_modules/zoid/src/component/component/index.js","webpack://paypal/./node_modules/zoid/src/component/index.js","webpack://paypal/./node_modules/zoid/src/interface.js","webpack://paypal/./node_modules/zoid/src/index.js","webpack://paypal/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://paypal/./node_modules/post-robot/src/bridge/bridge.js","webpack://paypal/./node_modules/post-robot/src/bridge/common.js","webpack://paypal/./node_modules/post-robot/src/bridge/child.js","webpack://paypal/./node_modules/post-robot/src/bridge/parent.js","webpack://paypal/./node_modules/post-robot/src/bridge/index.js","webpack://paypal/./node_modules/zoid/src/error.js","webpack://paypal/./src/integrations/braintree.js","webpack://paypal/./src/integrations/index.js","webpack://paypal/./node_modules/zoid/src/drivers/index.js","webpack://paypal/./src/checkout/template/componentTemplate.jsx","webpack://paypal/./src/checkout/template/containerStyle/base.js","webpack://paypal/./src/checkout/template/sandboxStyle/base.js","webpack://paypal/./src/checkout/template/containerTemplate.jsx","webpack://paypal/./src/checkout/template/index.js","webpack://paypal/./src/integrations/checkout.js","webpack://paypal/./src/checkout/template/containerContent.js","webpack://paypal/./node_modules/hi-base32/src/base32.js","webpack://paypal/./node_modules/zoid/src/drivers/script.js","webpack://paypal/./node_modules/zoid/src/drivers/react.js","webpack://paypal/./node_modules/zoid/src/drivers/vue.js","webpack://paypal/./node_modules/zoid/src/drivers/angular.js","webpack://paypal/./node_modules/zoid/src/drivers/glimmer.js","webpack://paypal/./node_modules/zoid/src/drivers/angular2.js","webpack://paypal/./node_modules/bowser/bowser.min.js","webpack://paypal/./node_modules/post-robot/src/compat/ie.js","webpack://paypal/./node_modules/post-robot/src/compat/index.js","webpack://paypal/./src/resources/fundingLogos/pp_white.svg","webpack://paypal/./src/resources/fundingLogos/pp_blue.svg","webpack://paypal/./src/resources/fundingLogos/pp_black.svg","webpack://paypal/./src/resources/fundingLogos/venmo_white.svg","webpack://paypal/./src/resources/fundingLogos/itau.svg","webpack://paypal/./src/resources/fundingLogos/venmo_blue.svg","webpack://paypal/./src/resources/fundingLogos/elv.svg","webpack://paypal/./src/resources/fundingLogos/elv_white.svg","webpack://paypal/./src/resources/cardLogos/visa.svg","webpack://paypal/./src/resources/cardLogos/amex.svg","webpack://paypal/./src/resources/cardLogos/mastercard.svg","webpack://paypal/./src/resources/cardLogos/maestro.svg","webpack://paypal/./src/resources/cardLogos/discover.svg","webpack://paypal/./src/resources/cardLogos/hiper.svg","webpack://paypal/./src/resources/cardLogos/elo.svg","webpack://paypal/./src/resources/cardLogos/jcb.svg","webpack://paypal/./src/resources/cardLogos/cup.svg","webpack://paypal/./node_modules/form-serialize/index.js","webpack://paypal/./node_modules/post-robot/src/bridge/interface.js","webpack://paypal/(webpack)/buildin/amd-options.js","webpack://paypal/(webpack)/buildin/amd-define.js","webpack://paypal/./src/billing/template/containerTemplate.jsx","webpack://paypal/./src/billing/index.js","webpack://paypal/./src/threeDomainSecure/index.js","webpack://paypal/./src/external/pptm-factory.js","webpack://paypal/./src/external/pptm.js","webpack://paypal/./src/external/index.js","webpack://paypal/./src/api/rest.js","webpack://paypal/./src/experiments.js","webpack://paypal/./src/integrations/popupBridge.js","webpack://paypal/./src/funding/config.js","webpack://paypal/./src/funding/funding.js","webpack://paypal/./src/button/config.js","webpack://paypal/./src/button/props.js","webpack://paypal/./src/button/validate.js","webpack://paypal/./src/button/template/componentStyle/class.js","webpack://paypal/./src/button/template/componentStyle/page.js","webpack://paypal/./src/button/template/componentStyle/button.js","webpack://paypal/./src/button/template/componentStyle/layout.js","webpack://paypal/./src/button/template/componentStyle/branding.js","webpack://paypal/./src/button/template/componentStyle/labels.js","webpack://paypal/./src/button/template/componentStyle/responsive.js","webpack://paypal/./src/button/template/componentStyle/color.js","webpack://paypal/./src/button/template/componentStyle/base.js","webpack://paypal/./src/button/template/componentStyle/index.js","webpack://paypal/./src/button/template/miscComponent.jsx","webpack://paypal/./src/button/template/componentScript.js","webpack://paypal/./src/button/template/content.js","webpack://paypal/./src/button/template/componentTemplate.jsx","webpack://paypal/./src/button/template/containerTemplate.jsx","webpack://paypal/./src/button/template/index.js","webpack://paypal/./src/button/child.js","webpack://paypal/./src/button/component.jsx","webpack://paypal/./src/hacks.js","webpack://paypal/./src/card/index.js","webpack://paypal/./src/setup.js","webpack://paypal/./src/interface.js","webpack://paypal/./src/index.js","webpack://paypal/./src/legacy/constants.js","webpack://paypal/./src/legacy/postBridge.js","webpack://paypal/./src/legacy/eligibility.js","webpack://paypal/./src/legacy/common.js","webpack://paypal/./src/legacy/button.js","webpack://paypal/./src/legacy/util.js","webpack://paypal/./src/legacy/options.js","webpack://paypal/./src/legacy/interface.js","webpack://paypal/./src/legacy/ready.js","webpack://paypal/./src/legacy/index.js"],"names":["BUTTON_STYLE_OPTIONS","LABEL","SIZE","SHAPE","COLOR","LAYOUT","MAXBUTTONS","FUNDINGICONS","BRANDING","TAGLINE","HEIGHT","INSTALLMENTPERIOD","BUTTON_LABEL","PAYPAL","CHECKOUT","PAY","CREDIT","CARD","BUYNOW","INSTALLMENT","VENMO","ITAU","IDEAL","ELV","BANCONTACT","GIROPAY","SOFORT","EPS","MYBANK","P24","PAYU","VERKKOPANKKI","BLIK","TRUSTLY","MAXIMA","BOLETO","OXXO","BUTTON_COLOR","GOLD","BLUE","SILVER","BLACK","DARKBLUE","WHITE","TRANSPARENT","BUTTON_LOGO_COLOR","ANY","BUTTON_SIZE","TINY","SMALL","MEDIUM","LARGE","HUGE","RESPONSIVE","BUTTON_TAGLINE_COLOR","BUTTON_SHAPE","PILL","RECT","BUTTON_BRANDING","BRANDED","UNBRANDED","BUTTON_LAYOUT","HORIZONTAL","VERTICAL","BUTTON_NUMBER","SINGLE","MULTIPLE","BUTTON_LOGO","PP","CHECKOUT_OVERLAY_COLOR","FUNDING","ZIMPLER","VISA","MASTERCARD","AMEX","DISCOVER","SWITCH","MAESTRO","HIPER","ELO","JCB","CUP","COFINOGA","COFIDIS","CETELEM","CBNATIONALE","FUNDING_ELIGIBILITY_REASON","PRIMARY","NOT_ENABLED","SECONDARY_DISALLOWED","OPT_OUT","OPT_IN","DISALLOWED_COUNTRY","DEFAULT_COUNTRY","DEFAULT","REMEMBERED","NEED_OPT_IN","COMMIT_NOT_SET","INVALID_ENV","CARD_PRIORITY","ENV","LOCAL","STAGE","SANDBOX","PRODUCTION","TEST","DEMO","USERS","ALL","SOURCE","MANUAL","BUTTON_FACTORY","LOG_LEVEL","DEBUG","INFO","WARN","ERROR","PAYMENT_TYPE","EC_TOKEN","BA_TOKEN","PAY_ID","PPTM_ID","ATTRIBUTE","BUTTON","FUNDING_SOURCE","VERSION","PLATFORM","DESKTOP","MOBILE","FPTI","KEY","FEED","STATE","TRANSITION","BUTTON_TYPE","SESSION_UID","BUTTON_SESSION_UID","TOKEN","CONTEXT_ID","CONTEXT_TYPE","REFERER","SELLER_ID","DATA_SOURCE","BUTTON_SOURCE","ERROR_CODE","ERROR_DESC","PAGE_LOAD_TIME","EXPERIMENT_NAME","TREATMENT_NAME","TRANSITION_TIME","FUNDING_LIST","FUNDING_COUNT","CHOSEN_FUNDING","BUTTON_WIDTH","MAX_BUTTONS","FUNDING_REMEMBERED","BUTTON_TAGLINE_ENABLED","RESPONSE_DURATION","PAYMENT_FLOW","BUTTON_VERSION","IFRAME","HTML","CUSTOM","BUTTON_SESSION_ID","CHECKOUTJS","LOAD","PPTM","SCRIPT_LOAD","BUTTON_RENDER","BUTTON_LOAD","BUTTON_CLICK","BUTTON_RENDER_INTRANET_MODE","BUTTON_CLICK_INTRANET_MODE","CREATE_PAYMENT","RECIEVE_PAYMENT","CHECKOUT_INIT","CHECKOUT_AUTHORIZE","CHECKOUT_SHIPPING_CHANGE","CHECKOUT_CANCEL","CHECKOUT_ERROR","EXTERNAL_EXPERIMENT","EXTERNAL_EXPERIMENT_COMPLETE","PPTM_LOAD","PPTM_LOADED","COUNTRY","AD","AE","AG","AI","AL","AM","AN","AO","AR","AT","AU","AW","AZ","BA","BB","BE","BF","BG","BH","BI","BJ","BM","BN","BO","BR","BS","BT","BW","BY","BZ","C2","CA","CD","CG","CH","CI","CK","CL","CM","CN","CO","CR","CV","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GI","GL","GM","GN","GP","GR","GT","GW","GY","HK","HN","HR","HU","ID","IE","IL","IN","IS","IT","JM","JO","JP","KE","KG","KH","KI","KM","KN","KR","KW","KY","KZ","LA","LC","LI","LK","LS","LT","LU","LV","MA","MC","MD","ME","MG","MH","MK","ML","MN","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PL","PM","PN","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","ST","SV","SZ","TC","TD","TG","TH","TJ","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","US","UY","VA","VC","VE","VG","VN","VU","WF","WS","YE","YT","ZA","ZM","ZW","LANG","CS","DA","EL","EN","HE","JA","KO","ZH","LANG_TO_DEFAULT_COUNTRY","ALLOWED_INSTALLMENT_COUNTRIES","ALLOWED_INSTALLMENT_PERIOD","LOCALE","htmlEncode","html","toString","replace","JsxHTMLNode","name","props","children","propsToString","childrenToString","Object","keys","filter","key","map","join","innerHTML","result","iterate","child","undefined","Array","isArray","JsxHTMLNodeContainer","jsxToHTML","jsxRender","template","renderers","nodes","regexMap","match","type","value","text","Error","trim","test","break","isPromise","item","Promise","window","Window","constructor","call","then","err","dispatchedErrors","possiblyUnhandledPromiseHandlers","dispatchPossiblyUnhandledError","promise","indexOf","push","setTimeout","__DEBUG__","j","length","onPossiblyUnhandledException","handler","cancel","splice","activeCount","flushPromise","flushActive","resolve","startActive","endActive","awaitActive","Zalgo","ZalgoPromise","resolved","rejected","errorHandled","error","handlers","dispatching","stack","isAsync","res","reject","dispatch","prototype","asyncReject","chain","firstPromise","secondPromise","i","onSuccess","onError","catch","finally","onFinally","try","timeout","time","clearTimeout","toPromise","TypeError","all","promises","count","results","prom","hash","items","method","context","args","apply","delay","flush","getUserAgent","navigator","mockUserAgent","userAgent","isDevice","isInsidePopup","Boolean","getOpener","getTop","isStandAlone","standalone","matchMedia","matches","isFacebookWebView","ua","isFirefoxIOS","isEdgeIOS","isOperaMini","isAndroid","isIos","isGoogleSearchApp","isQQBrowser","isIosWebview","isAndroidWebview","isWebView","isIE","document","documentMode","isIE11","isIECompHeader","mHttp","querySelector","mContent","isElectron","isIEIntranet","status","isMacOsCna","supportsPopups","isDocumentReady","body","readyState","documentReady","interval","setInterval","clearInterval","documentBody","loadScript","src","attrs","script","createElement","addEventListener","onreadystatechange","scriptOnReadyStateChange","scriptLoadError","attr","setAttribute","head","getElementsByTagName","appendChild","isNodeList","isElement","HTMLElement","getElement","getElementById","getElements","collection","element","NodeList","HTMLCollection","el","onDocumentReady","parseQuery","memoize","queryString","params","split","pair","decodeURIComponent","getQueryParam","location","search","slice","urlWillRedirectPage","url","href","extendUrl","hasHash","serverUrl","originalUrl","originalQueryString","originalQuery","hasOwnProperty","newQueryString","sort","encodeURIComponent","newUrl","redirect","win","info","hasMetaViewPort","meta","screen","width","getBrowserLocales","nav","locales","languages","language","userLanguage","normalizeLocale","locale","lang","country","normalizeLang","getBrowserLocale","loc","config","defaultLocale","isElementVisible","offsetWidth","offsetHeight","getClientRects","enablePerformance","performance","now","timing","connectEnd","navigationStart","Math","abs","Date","getPageRenderTime","domInteractive","getResourceLoadTime","getEntries","entries","entry","duration","floor","allowIframe","parentWindow","getParent","isSameDomain","parentComponentWindow","xchild","getParentComponentWindow","__TEST__","isPayPalDomain","protocol","host","paypal_domain_regex","mockDomain","LOCAL_STORAGE_KEY","SESSION_KEY","GLOBAL_KEY","accessedStorage","getStorageState","localStorageEnabled","isLocalStorageEnabled","storage","rawStorage","localStorage","getItem","JSON","parse","id","uniqueID","setItem","stringify","getStorageID","getSession","session","created","session_uid_lifetime","guid","getSessionState","state","getSessionID","xprops","sessionID","querySessionID","getButtonSessionID","buttonSessionID","getGlobalState","proxyMethod","originalMethod","getDomain","paypalDomain","send","noop","methods","on","domain","data","postMessageProxy","isWindowClosed","source","arguments","getRefererDomain","getParentDomain","setupProxyLogTransport","once","setTransport","getTransport","getToken","root","token","queryToken","initLogger","addPayloadBuilder","referer","path","pathname","env","uid","ver","__PAYPAL_CHECKOUT__","__MINOR_VERSION__","addHeaderBuilder","addMetaBuilder","addTrackingBuilder","payload","paymentToken","contextType","contextID","merchantID","version","prefix","PROTOCOL","FILE","init","uri","loggerUrl","heartbeat","logPerformance","logLevel","__DEFAULT_LOG_LEVEL__","setLogLevel","logLevels","loggerConfig","POSTROBOT_CONFIG","bowserCache","getBowser","require","bowser","getBrowser","SUPPORTED_BROWSERS","browser","isBrowserEligible","compareVersions","eligibilityResults","isEligible","checkRecognizedBrowser","mobile","android","ios","flushLogs","logWarn","console","warn","log","checkForCommonErrors","toJSON","message","foo","bar","baz","zomg","bind","a","opener","parent","returnContext","assign","b","c","HEADERS","CONTENT_TYPE","ACCEPT","headerBuilders","corrids","prev_corr_ids","parseHeaders","rawHeaders","line","values","toLowerCase","request","headers","json","normalizedHeaders","headerBuilder","builtHeaders","xhr","XMLHttpRequest","xhrLoad","responseHeaders","getAllResponseHeaders","corrID","contentType","isJSON","responseText","xhrError","evt","getResponseHeader","open","setRequestHeader","ontimeout","xhrTimeout","get","options","post","BEACON_URL","APP_NAME","beacon","event","appName","query","beaconImage","Image","isCheckpointUnique","loggedBeacons","checkpoint","checkpointName","FPTI_URL","buildPayload","v","t","g","getTimezoneOffset","flnm","shir","pgrp","page","vers","qual","tmpl","fpti","getThrottlePercentile","throttlePercentiles","random","THROTTLE_GROUP","CONTROL","THROTTLE","getThrottle","sample","sticky","percentile","group","treatment","started","forced","isEnabled","isDisabled","getTreatment","expuid","track","logStart","logComplete","getReturnToken","payer","extendNamespace","xports","namespaces","childnamespaces","namespace","childname","childnamespace","getCurrentScript","scripts","scriptUrl","hasAttribute","currentScript","debug","isPayPalObjects","getScriptVersion","__MIN__","getCurrentScriptUrl","getDomainSetting","def","hostname","domain_settings","domainMatches","openMetaFrame","iframeEligible","iframeEligibleReason","rememberedFunding","metaFrameUrl","metaFrameUrls","metaFrameDomain","paypalDomains","bridge","metaListener","openBridge","getRememberedFunding","identity","hasRememberedFunding","recentlyCheckedRemembered","isRememberedFunding","getRememberedFundingPromises","global","rememberFundingPromises","getRememberedFundingPromise","flushRememberedFundingPromises","sources","rememberFunding","loadMeta","isFundingRemembered","precacheRememberedFunding","getDefaultEnv","__FILE_NAME__","cors","stage","stageDomain","stageUrl","apiStageUrl","apiStage","localhostUrl","ports","default","val","authCode","throttles","v4_mobile_device","ie_full_page","allow_full_page_fallback","memoize_payment","force_bridge","log_authorize","disable_venmo","creditTestDomains","customCountry","msie","firefox","chrome","safari","opera","msedge","samsungBrowser","silk","ucbrowser","vivaldi","_apiStage","button","checkout","guest","altpay","paypalUrls","port","wwwApiUrls","corsApiUrls","apiUrls","local","sandbox","production","checkoutUri","checkoutUris","altpayUris","guestUris","billingUris","buttonUris","inlinedCardFieldUris","postBridgeUris","legacyCheckoutUris","buttonJSUrls","buttonJSUrl","loginUri","hermesLoggerUri","loggerUri","loggerThrottlePercentage","pptmUri","postBridgeUri","paymentStandardUri","authApiUri","paymentApiUri","orderApiUri","billingApiUri","experienceApiUri","trackingApiUri","checkoutUrls","demo","guestUrls","altpayUrls","billingUrls","buttonUrls","inlinedCardFieldUrls","loginUrls","paymentsStandardUrls","legacyCheckoutUrls","authApiUrls","paymentApiUrls","orderApiUrls","billingApiUrls","experienceApiUrls","trackingApiUrls","_paypalUrl","paypalUrl","corsApiUrl","wwwApiUrl","apiUrl","checkoutUrl","billingUrl","buttonUrl","legacyCheckoutUrl","postBridgeUrl","postBridgeDomain","isTestExperiment","pptmUrl","authApiUrl","paymentApiUrl","orderApiUrl","billingApiUrl","experienceApiUrl","extend","dest","over","isSameProtocol","ajax","fireAndForget","XRequest","ActiveXObject","XDomainRequest","req","toUpperCase","headerName","promiseDebounce","debounce","resolver","rejector","onWindowReady","safeInterval","loop","chars","charAt","payloadBuilders","metaBuilders","trackingBuilders","builder","initial_state_name","flushInterval","debounceInterval","sizeLimit","silent","heartbeatConsoleLog","heartbeatInterval","heartbeatTooBusy","heartbeatTooBusyThreshold","autoLog","logUnload","buffer","tracking","transport","newTransport","loaded","print","level","warning","immediateFlush","hasBuffer","hasTracking","events","enqueue","timestamp","timer","startTime","elapsed","parseInt","reset","reqStartElapsed","clientTimer","reqTimer","initHeartBeat","heartBeatTimer","heartbeatCount","heartbeatMaxThreshold","lag","heartbeatPayload","noConsole","initPerformance","client_elapsed","req_elapsed","forEach","offset","memory","navigation","resource","initiatorType","initiated","conf","beaverLogQueue","windowID","pageID","currentState","startTransition","endTransition","toState","currentTime","elapsedTime","transitionName","transition","transition_time","INTERFACE","urlEncode","str","camelToDasherize","string","dasherizeToCamel","obj","stringifyWithFunctions","safeGet","prop","capitalizeFirstLetter","pathParts","runInterval","safeTimeout","each","callback","len","replaceObject","replacers","fullKey","defineProperty","configurable","enumerable","itemKey","replacer","replaced","set","copyProp","target","descriptor","getOwnPropertyDescriptor","dotify","newobj","every","objectIDs","WeakMap","getObjectID","regex","pattern","start","RegExp","index","groups","end","regexAll","substr","startIndex","itemCount","stringifyError","eventEmitter","triggered","eventName","handlerList","cancelled","listener","trigger","triggerOnce","called","onceWrapper","memoizeWrapper","cacheKey","debounceWrapper","serializeFunctions","__type__","deserializeFunctions","deserializedFunctionWrapper","self","container","Element","nodeType","style","ownerDocument","querySelectorAll","selector","getElementSafe","elementReady","popup","PopupOpenError","writeToWindow","write","close","err2","writeElementToWindow","tag","tagName","documentElement","removeChild","setStyle","styleText","doc","styleSheet","cssText","createTextNode","class","className","attributes","contentWindow","awaitFrameLoadPromises","awaitFrameLoad","frame","has","linkFrameWindow","awaitFrameWindow","loadedFrame","iframe","frameBorder","allowTransparency","backgroundColor","removeEventListener","scanForJavascript","formatQuery","extendQuery","originalHash","hashString","elementStoppedMoving","getBoundingClientRect","top","bottom","left","right","height","getCurrentDimensions","changeStyle","styles","setOverflow","overflow","overflowX","overflowY","dimensionsDiff","one","two","threshold","trackDimensions","currentDimensions","check","newDimensions","changed","dimensions","onDimensionsChange","tracker","onWindowResize","dimensionsMatchViewport","innerWidth","innerHeight","bindEvents","eventNames","VENDOR_PREFIXES","setVendorCSS","capitalizedName","CSSRule","KEYFRAMES_RULE","WEBKIT_KEYFRAMES_RULE","MOZ_KEYFRAMES_RULE","O_KEYFRAMES_RULE","MS_KEYFRAMES_RULE","isValidAnimation","stylesheets","styleSheets","cssRules","cssRule","ANIMATION_START_EVENTS","ANIMATION_END_EVENTS","animate","clean","hasStarted","startTimeout","endTimeout","startEvent","endEvent","cleanUp","animationName","stopPropagation","STYLE","DISPLAY","NONE","BLOCK","VISIBILITY","VISIBLE","HIDDEN","IMPORTANT","makeElementVisible","setProperty","makeElementInvisible","showElement","hideElement","destroyElement","parentNode","showAndAnimate","animation","animateAndHide","addClass","classList","add","removeClass","remove","getCurrentScriptDir","getElementName","isElementClosed","watchElementForClose","getHttpType","onload","onerror","getHTML","getCSS","getScript","prefetchPage","JSX_EVENTS","onClick","fixScripts","newScript","textContent","replaceChild","jsxDom","content","textNode","denodeify","denodeifyWrapper","promisify","promisifyWRapper","cycle","isPerc","isPx","toNum","toPx","toCSS","percOf","num","perc","normalizeDimension","dim","max","memoized","memoizedFunction","__memoized__","displayName","promisifiedFunction","CONFIG","logInfo","logError","globalFor","__ZOID__","localGlobal","isRegex","MOCK","ABOUT","WILDCARD","WINDOW_TYPE","POPUP","IE_WIN_ACCESS_ERROR","isFileProtocol","isAboutProtocol","canReadFromWindow","getActualDomain","isBlankDomain","isActuallySameDomain","desc","assertSameDomain","getParents","isAncestorParent","childParent","getFrames","frames","getAllChildFrames","childFrame","getNextOpener","getUltimateTop","getAllFramesInWindow","getAllWindows","isTop","isFrameWindowClosed","contains","safeIndexOf","iframeWindows","iframeFrames","allowMock","closed","mockclosed","iframeIndex","cleanIframes","getFrameByName","winFrames","findChildFrameByName","namedFrame","findFrameByName","isParent","frameParent","isOpener","getAncestor","getAncestors","ancestor","isAncestor","actualParent","isPopup","isIframe","isFullpage","anyMatch","collection1","collection2","item1","item2","getDistanceFromTop","distance","getNthParent","n","getNthParentFromTop","isSameTopWindow","win1","win2","top1","top2","allFrames1","allFrames2","opener1","opener2","matchDomain","origin","some","subpattern","stringifyDomainPattern","getDomainFromUrl","onCloseWindow","maxtime","Infinity","isWindow","__cross_domain_utils_window_check__","isBrowser","isCurrentDomain","isMockDomain","normalizeMockUrl","closeWindow","getFrameForWindow","frameElement","TYPES","ZOID","POST_MESSAGE","INIT","PROPS","PROP_CALLBACK","CLOSE","CHECK_CLOSE","REDIRECT","RESIZE","DELEGATE","ALLOW_DELEGATE","HIDE","SHOW","PROP_TYPES","STRING","OBJECT","FUNCTION","BOOLEAN","NUMBER","INITIAL_PROPS","RAW","UID","WINDOW_REFERENCES","OPENER","TOP","PARENT","GLOBAL","PROP_TYPES_LIST","CONTEXT_TYPES","CLASS_NAMES","OUTLET","COMPONENT_FRAME","PRERENDER_FRAME","INVISIBLE","EVENTS","ATTRIBUTES","IFRAME_PLACEHOLDER","ANIMATION_NAMES","SHOW_CONTAINER","SHOW_COMPONENT","HIDE_CONTAINER","HIDE_COMPONENT","EVENT_NAMES","CLICK","CLOSE_REASONS","PARENT_CALL","CHILD_CALL","CLOSE_DETECTED","USER_CLOSED","PARENT_CLOSE_DETECTED","CONTEXT_TYPES_LIST","CALL_ORIGINAL","CALL_DELEGATE","DEFAULT_DIMENSIONS","WIDTH","CONSTANTS","WINDOW_PROPS","POSTROBOT","registerSelf","POST_MESSAGE_TYPE","REQUEST","RESPONSE","ACK","POST_MESSAGE_ACK","SUCCESS","POST_MESSAGE_NAMES","METHOD","HELLO","OPEN_TUNNEL","WINDOW_TYPES","FULLPAGE","SERIALIZATION_TYPES","PROMISE","ZALGO_PROMISE","REGEX","SEND_STRATEGIES","BRIDGE","MOCK_PROTOCOL","FILE_PROTOCOL","BRIDGE_NAME_PREFIX","POSTROBOT_PROXY","POST_MESSAGE_NAMES_LIST","ALLOW_POSTMESSAGE_POPUP","__ALLOW_POSTMESSAGE_POPUP__","__POST_ROBOT__","BRIDGE_TIMEOUT","CHILD_WINDOW_TIMEOUT","ACK_TIMEOUT","RES_TIMEOUT","ALLOWED_POST_MESSAGE_METHODS","ALLOW_SAME_ORIGIN","_extends","moduleGlobal","getGlobal","cache","glob","__CACHE_START_TIME__","hashStr","charCodeAt","pow","sqrt","strHashStr","total","String","fromCharCode","regmatch","safeJSON","listeners","listen","onceListener","awaitKey","newErr","stringifyErrorMessage","defaultMessage","patchMethod","original","patchedMethod","callOriginal","isObject","deepExtend","hasValue","arr","sortBy","order","reverseMap","arrayRemove","pixels","percentage","round","min","regexMapMatcher","SEND_MESSAGE_STRATEGIES","serializedMessage","emulateIERestrictions","domains","dom","postMessage","sendBridgeMessage","needsBridgeForBrowser","isBridge","needsGlobalMessagingForBrowser","foreignGlobal","receiveMessage","buildMessage","getWindowType","sourceDomain","windowType","sendMessage","serializeMethods","messages","jsonStringify","strategyName","success","resetListeners","responseListeners","requestListeners","WINDOW_WILDCARD","WindowWildcard","erroredResponseListeners","__DOMAIN_REGEX__","addResponseListener","getResponseListener","deleteResponseListener","markResponseListenerErrored","isResponseListenerErrored","getRequestListener","nameListeners","winQualifier","winListeners","addRequestListener","listenersCollection","cancelListener","existingListener","strDomain","regexListeners","regexListener","delete","RECEIVE_MESSAGE_TYPES","ack","respond","originalSource","code","handleError","response","receivedMessages","parseMessage","parsedMessage","jsonParse","deserializeMethods","messageListener","messageEvent","sourceElement","originalEvent","listenForMessages","requestPromises","targetWindow","HTMLIFrameElement","hasResult","requestPromise","onChildWindowReady","sayHello","actualDomain","responseListener","ackTimeout","resTimeout","cycleTime","hasAck","sendToParent","client","listenerOptions","errorHandler","requestListener","onceFunction","listenOnce","errorOnClose","disable","cleanUpWindow","popupWindowsByWin","remoteWindows","readyPromises","initialized","openTunnelToOpener","initOnReady","listenForMethods","attachEvent","detachEvent","eachArray","eachObject","depth","childItem","weakMapMemoize","weakmap","weakmapMemoized","arg","indent","objectToJSON","arrayToJSON","meth","isSerialized","serializeMethod","destination","__id__","__name__","serializeError","__message__","__code__","serializePromise","__then__","serializeZalgoPromise","serializeRegex","__source__","deserializeMethod","wrapper","__xdomain__","deserializeError","deserializeZalgoPromise","deserializePromise","deserializeRegex","onHello","onAuthorize","onLegacyPaymentAuthorize","postBridge","watchForLegacyFallback","isLegacy","ppxoWatching","XMLHttpRequestsend","overrideXMLHttpRequestSend","_patched","DONE","returnUrl","billingToken","payerID","paymentID","Checkout","XhrResponse","RESPONSE_TYPES","mob","Xhr","_xhrOnReady","onLegacyFallback","addHeader","$Api","create","scrolling","buildUrl","payment","determineUrl","fundingSource","unsafeRenderTo","bridgeUrl","bridgeDomain","contexts","validate","prerenderTemplate","componentTemplate","containerTemplate","required","queryParam","allowDelegate","sendToChild","determineParameterFromToken","queryValue","childDecorate","alias","overlayColor","commit","experience","fundingOffered","elements","fundingSources","getAttribute","decorate","decorateOnAuthorize","actions","intent","closeComponent","redir","isButton","isGuest","access_token","onShippingChange","onAuth","sameDomain","wrapOnAuth","accessToken","onCancel","decorateOnCancel","cancelUrl","decorateInit","onClose","decorateOnClose","reason","shouldCancel","fallback","defaultFallback","__test__","action","sdkMeta","base64encode","isChild","onProps","injector","instance","payment_action","_context","process","versions","electron","isChrome","isSafari","getFunctionName","fn","setFunctionName","btoa","m","p1","Buffer","from","base64decode","atob","randomID","timeID","toISOString","__GLOBAL__","serializeArgs","subkey","cacheMap","getOrSet","thisNamespace","cacheTime","promiseIdentity","memoizePromise","memoizedPromiseFunction","inlineMemoize","logic","__inline_memoize_cache__","regexp","svgToBase64","svg","objFilter","regexTokenize","promiseDebounced","localPromise","isInteger","isFloat","serializePrimitive","deserializePrimitive","parseFloat","undotify","keyResult","parts","part","isLast","isIndex","defineLazyProp","getter","arrayFrom","isObjectObject","isPlainObject","isDefined","weakMapMemoizePromise","weakmapMemoizedPromise","cleanup","tasks","cleaned","register","task","pop","tryCatch","removeFromArray","assertExists","thing","unique","KEY_CODES","ENTER","waitForWindowReady","waitForDocumentReady","waitForDocumentBody","keyCode","removeItem","outerWidth","screenX","outerHeight","screenY","toolbar","menubar","resizable","scrollbars","border","onResize","currentWidth","currentHeight","newWidth","newHeight","observer","ResizeObserver","observe","MutationObserver","childList","subtree","characterData","disconnect","DEFAULT_SESSION_STORAGE","getStorage","lifetime","STORAGE_KEY","getState","getID","__session__","getBelterExperimentStorage","isEventUnique","experiment","logTreatment","logCheckpoint","throttle","getGlobalNameSpace","globalKey","defValue","responseBody","wrapPromise","expected","expect","expectWrapper","avoid","avoidWrapper","expectError","expectErrorWrapper","drain","hasNativeWeakMap","freeze","testWeakMap","testKey","testValue","CrossDomainSafeWeakMap","_cleanupClosedWindows","isSafeToReadWrite","writable","P24_LOGO_COLORS","primary","secondary","p24Logo","logoColor","SOFORT_LOGO_COLORS","sofortLogo","IDEAL_LOGO_COLORS","tertiary","idealLogo","GIROPAY_LOGO_COLORS","giropayLogo","EPS_LOGO_COLORS","epsLogo","MYBANK_LOGO_COLORS","mybankLogo","BANCONTACT_LOGO_COLORS","bancontactLogo","PAYU_LOGO_COLORS","quaternary","payuLogo","VERKKOPANKKI_LOGO_COLORS","quinary","senary","verkkopankkiLogo","BLIK_LOGO_COLORS","blikLogo","TRUSTLY_LOGO_COLORS","trustlyLogo","MAXIMA_LOGO_COLORS","maximaLogo","BOLETO_LOGO_COLORS","boletoLogo","OXXO_LOGO_COLORS","oxxoLogo","PAYPAL_LOGO_COLORS","paypalLogo","CREDIT_LOGO_COLORS","creditLogo","fundingLogos","pp_white","pp_blue","pp_black","venmo_white","venmo_blue","itau","elv","elv_white","cardLogos","visa","amex","mastercard","maestro","discover","hiper","elo","jcb","cup","_assertThisInitialized","ReferenceError","_applyDecoratedDescriptor","property","decorators","initializer","reverse","reduce","decorator","complete","run","hasTasks","BaseComponent","component","addProp","createError","listenerName","errorListener","normalize","encode","base32","decode","buildChildWindowName","encodedName","encodedVersion","encodedOptions","isZoidComponentWindow","zoidcomp","getComponentMeta","componentMeta","getWindowByRef","ref","windows","componentParent","getParentRenderWindow","renderParent","getPosition","x","y","normalizeChildProp","getProp","looseProps","normalizeChildProps","getPropNames","ChildComponent","onPropHandlers","onInit","watchingForResize","autoResize","hasValidParentDomain","RenderError","setProps","getInitialProps","setWindows","exports","watchForResize","allowedParentDomains","func","normalizedProps","__activeZoidComponent__","watchForClose","checkClose","enableAutoResize","getAutoResize","resize","updateProps","destroy","hide","show","userClose","focus","stringifiedError","_defineProperties","_createClass","Constructor","protoProps","staticProps","RENDER_DRIVERS","focusable","renderedIntoContainerTemplate","allowResize","openOnClick","needsBridge","childWindowName","title","frameWindow","detectClose","iframeWatcher","elementWatcher","openPrerender","prerenderIframe","prerenderFrameWindow","prerenderWindow","switchPrerender","delegateOverrides","openContainer","destroyComponent","destroyContainer","cancelContainerEvents","createPrerenderTemplate","showContainer","showComponent","hideContainer","hideComponent","loadUrl","hijackSubmit","renderTemplate","openContainerFrame","getOutlet","override","overrideOpen","validateProp","hasProp","isNaN","validateProps","normalizeProp","resultValue","decorated","normalizeProps","normalizedProp","getQueryValue","propsToQuery","propsDef","serialization","dotkey","escape","ParentComponent","handledErrors","outlet","childExports","validateParentDomain","renderTo","registerActiveComponent","watchForUnload","render","tryInit","onRender","driver","linkDomain","linkUrl","loadHTML","runTimeout","onEnter","checkAllowRenderTo","delegate","prefetch","activeComponents","getComponentParentRef","getRenderParentRef","renderToWindow","childDomain","sProps","getPropsForChild","secureProps","propUrl","builtinProps","getValidDomain","getUrl","finalUrl","xcomponent","builtUrl","needsBridgeParams","getBridgeUrl","hasBridge","getBridgeDomain","windowName","onDisplay","propName","overrides","overridenFunction","closeWindowListener","onunload","unloadWindowListener","hijack","targetElement","onTimeout","closeContainer","renderer","CLASS","ANIMATION","CONTEXT","EVENT","errErr","destroyAll","DelegateComponent","getOverrides","delegateOverride","validatePropDefinitions","anyEnabled","defaultContext","defaultEnv","defaultContainerTemplate","defaultPrerenderTemplate","getInternalProps","defaultLogLevel","drivers","angular","angular2","glimmer","react","vue","Component","listenForResize","driverCache","components","registerDrivers","registerChild","listenDelegate","driverName","dep","canRenderTo","getForEnv","envUrl","isZoidComponent","getRenderContext","validateRenderContext","getDefaultContext","renderIframe","renderPopup","renderIframeTo","renderPopupTo","prerender","innerProps","innerElement","logWarning","getByTag","postRobot","_postRobot","_CONSTANTS","_inheritsLoose","subClass","superClass","__proto__","tunnelWindows","tunnelWindowId","deleteTunnelWindow","cleanTunnelWindows","tunnelWindow","addTunnelWindow","canary","getTunnelWindow","openTunnelToParent","needsBridgeForWin","needsBridgeForDomain","getBridgeName","sanitizedDomain","documentBodyReady","registerRemoteWindow","sendMessagePromise","findRemoteWindow","registerRemoteSendMessage","remoteWindow","sendMessageWrapper","remoteWin","remoteDomain","rejectRemoteSendMessage","messagingChild","messagingParent","awaitRemoteBridgeForWindow","bridges","bridgeFrames","popupWindowsByName","listenForRegister","winDetails","openBridgeFrame","windowOpen","windowOpenWrapper","last","winName","winOptions","destroyBridges","IntegrationError","awaitBraintreeClient","braintree","auth","authorization","paypalCheckout","SUPPORTED_REST_FIELDS","transactions","amount","currency","external_selected_funding_instrument_type","shipping_address","line1","line2","city","postal_code","country_code","phone","recipient_name","application_context","brand_name","shipping_preference","landing_page","supported","supportedKeys","mapPaymentToBraintree","btPayment","flow","offerCredit","shippingAddressOverride","postalCode","countryCode","recipientName","landingPageType","enableShippingAddress","shippingAddressEditable","checkoutComponentStyle","getContainerStyle","getSandboxStyle","LOGO_COLOR","containerContent","preventDefault","alert","ppLogo","pp","paypal","windowMessage","continue","getPaymentType","paymentType","NODE_JS","HI_BASE32_NO_NODE_JS","node","COMMON_JS","HI_BASE32_NO_COMMON_JS","module","AMD","define","BASE32_ENCODE_CHAR","BASE32_DECODE_CHAR","blocks","throwInvalidUtf8","position","partial","toUtf8String","bytes","followingChars","decodeAsBytes","base32Str","v1","v2","v3","v4","v5","v6","v7","v8","remain","encodeAscii","encodeUtf8","encodeBytes","input","asciiOnly","notString","ArrayBuffer","Uint8Array","asBytes","innerText","eval","scan","scriptTags","React","ReactDOM","createClass","componentDidMount","findDOMNode","setState","componentDidUpdate","componentWillUnmount","inheritAttrs","mounted","$el","$attrs","beforeUpdate","ng","directive","scope","restrict","controller","$scope","$element","safeApply","$root","$$phase","$apply","getProps","scopeProps","angularWrapped","$watch","GlimmerComponent","didInsertElement","zoid","AngularComponent","NgModule","ElementRef","NgZone","internalProps","angular2Wrapped","zone","ComponentInstance","inputs","Class","angularConstructor","elementRef","ngOnInit","nativeElement","ngOnChanges","ModuleInstance","declarations","e","r","C","o","u","f","l","h","p","d","w","E","S","T","N","whale","mzbrowser","coast","yandexbrowser","maxthon","epiphany","puffin","sleipnir","kMeleon","osname","windowsphone","chromeos","chromeBook","sailfish","seamonkey","firefoxos","phantom","slimer","blackberry","webos","touchpad","bada","tizen","qupzilla","chromium","googlebot","blink","webkit","gecko","mac","xbox","linux","k","osversion","L","tablet","s","isUnsupportedBrowser","_detect","detect","sourceWindow","k_r_submitter","k_r_success_contrls","brackets","serialize","form","serializer","hash_serializer","str_serialize","radio_store","disabled","nodeName","checked","empty","selectOptions","isSelectedOptions","option","allowedEmpty","selected","parse_keys","exec","hash_assign","shift","between","_values","existing","containerStyle","BillingPage","cardType","prefilledZipCode","onEvent","ThreeDomainSecure","challengeUrl","threeDomainSecureToken","shouldCreateInitialPptmScript","existingScript","alreadyDownloaded","removePptm","pptmFactory","noContentFoundInContainer","reloadPptmScript","clientId","tryCreatePptmScript","shouldReloadPptmScript","createPptmScript","listenForLoadWithNoContent","listenForButtonRender","paypalDDL","buttonRenderEvent","mrid","client_id","fullUrl","async","pptm","proxyRest","createAccessToken","clientID","basicAuth","Authorization","grant_type","createExperienceProfile","experienceDetails","temporary","logPaymentResponse","links","rel","getDefaultReturnUrl","createTracking","trackingData","trackingID","createPayment","paymentDetails","redirect_urls","return_url","cancel_url","payment_method","experienceID","experience_profile_id","partner_attribution_id","createOrder","purchase_units","unit","reference_id","createBillingAgreement","billingDetails","plan","merchant_preferences","token_id","rest","billingAgreement","PROXY_REST","parentWin","onAuthorizeListener","loggedEvents","loggedExperimentEvents","duplicate","edge","logExperimentTreatment","externalExperiment","externalExperimentTreatment","externalExperimentToken","logReturn","returnToken","OPTYPE","PAYMENT","CANCEL","CONTINGENCY","PAYMENT_CANCELLED","wrapPopupBridge","popupBridge","onComplete","redirect_uri","getReturnUrlPrefix","validateCheckoutProps","normalizeCheckoutProps","useraction","native_xo","extractDataFromQuery","ba_token","paymentId","PayerID","opType","return_uri","cancel_uri","buildActions","redirectUrl","renderThroughPopupBridge","queryItems","awaitPopupBridge","Button","setupPopupBridgeProxy","doRender","popupBridgeRender","popupBridgeRenderTo","popupBridgeRenderPopupTo","FUNDING_PRIORITY","FUNDING_ORDER","FUNDING_CONFIG","enabled","allowOptIn","allowOptOut","allowRemember","allowHorizontal","allowVertical","requireCommitAsTrue","__paypal_checkout__","serverConfig","paypalMerchantConfiguration","creditCard","isPayPalBranded","allowedCountries","defaultVerticalCountries","platforms","allowedEnvs","CARD_CONFIG","priority","getConfig","category","categoryConfig","getFundingConfig","getCardConfig","fundingEligibilityReasons","isFundingIneligible","funding","layout","isVertical","allowSecondary","disallowed","isFundingAutoEligible","allowed","remembered","isFundingEligible","eligible","ineligibleReason","autoEligibleReason","determineEligibleFunding","reasons","eligibleFunding","factors","unshift","determineEligibleCards","card","validateFunding","logFundingEligibility","table","BUTTON_CONFIG","colors","sizes","shapes","layouts","logoColors","tagLineColors","secondaryColors","dualTag","defaultLabel","defaultVerticalLabel","defaultColor","defaultSize","defaultVerticalSize","defaultShape","defaultLayout","defaultBranding","defaultVerticalBranding","defaultFundingIcons","defaultTagline","defaultDual","minimumSize","minimumVerticalSize","maximumSize","maximumVerticalSize","minHorizontalButtons","minVerticalButtons","maxHorizontalButtons","maxVerticalButtons","allowUnbranded","allowFundingIcons","allowPrimary","allowPrimaryVertical","allowPrimaryHorizontal","label","logoLabel","installmentperiod","allowSecondaryVertical","allowSecondaryHorizontal","FUNDING_TO_DEFAULT_LABEL","LABEL_TO_FUNDING","BUTTON_RELATIVE_STYLE","VERTICAL_MARGIN","BUTTON_STYLE","defaultWidth","defaultHeight","minWidth","maxWidth","minHeight","maxHeight","buttonTextMargin","allowFunding","allowTagline","byPayPalHeight","labelToFunding","fundingToDefaultLabel","getButtonConfig","parseLocale","determineMaxButtons","configMax","enableTagline","tagline","branding","fundingicons","defs","checkoutCustomization","size","color","shape","multiple","cards","validateButtonLocale","validateRegionSpecificButton","isInstallmentAllowedCountry","validateButtonStyle","maxbuttons","minButtons","buttonSize","validateButtonProps","SHOULD_FOCUS","CONTAINER","TAGLINE_COLOR","TEXT","LOGO","SEPARATOR","DOM_READY","PERSONALIZATION_TEXT","pageStyle","buttonStyle","layoutStyle","brandingStyle","labelStyle","DUAL_BUTTON_MIN_RATIO","buttonResponsiveStyle","cardNumber","buttonHeight","buttonTextMarginTop","minDualWidth","ceil","toFixed","buttonColorStyle","componentStyle","LoadingDots","Beacon","impression","Tagline","tagColor","getComponentScript","OPTIONAL","SELECTOR","TAG","toArray","parentElement","sum","getAllChildren","getOptionalIndex","getElementsTotalWidth","getOptionalParents","optional","getOptionalChildren","first","second","optionalParent","allChildren","optionalChildren","toggleOptionals","parentWidth","usedWidth","optionalChild","setupTabOutlineEvent","buttonsContainer","getElementsByClassName","tabKeyCode","handleMouseDownOnce","handleFirstTab","setDomReady","load","componentContent","allowedPersonalizationLabels","getCommonButtonClasses","getButtonClasses","getLocaleContent","determineLabel","labelMatchesFunding","determineButtons","buttonLabel","buttonColor","renderCards","logo","renderFundingIcons","renderPersonalizationButtonText","getButtonTextAnimationStyle","personalizedButtonText","allowedAnimation","MIN_WIDTH","LABEL_DURATION","PERSONALIZATION_DURATION","DELAY","COMPRESSED","EXPANDED","PAYPAL_BUTTON","PAYPAL_LOGO","BUTTON_TEXT","renderContent","dynamicContent","contentString","contentVariable","separator","renderButtonTextDiv","contentText","renderButton","morsText","buttonText","__WEB__","hasTabIndex","renderTagline","renderScript","renderStyle","renderPowerByPaypalLogo","isCardDisallowed","buttonNodes","taglineNode","fundingiconNode","styleNode","scriptNode","labelPowerByPayPal","possibleSizes","possibleSize","sizeA","sizeB","setupButtonChild","ButtonComponent","pageRenderTime","onApprove","pre","inlineGuest","treatments","isCreditDualEligible","creditThrottle","allowpaymentrequest","enableNativeCheckout","prefetchLogin","updateClientConfiguration","memoizedToken","button_version","remember","decorateOnRender","restart","tokenize","tokenizePayment","execute","nonce","decorateOnShippingChange","patch","patchObject","decorateOnClick","initialHeight","logInlineGuestOutOfViewPortOnlyOnce","onResizeHandler","getScrollOffsetY","pageYOffset","scrollTop","checkIfExpansionInViewport","scrollOffsetY","windowHeight","containerOffsetY","VISIBLE_THRESHOLD","isContainerExpanded","isExpansionInViewport","decorateValidate","validateCalled","getPageUrl","canRenderTop","methodName","unDebounce","createOriginal","createContext","originalPayment","resolveData","rejectActions","ctx","Card","initialFormValues","cardIcons","display","submitButton","currencyConversion","domainToEnv","setDomainEnv","currentDomainEnv","errtype","err3","currentProtocol","configure","precacheRemembered","setup","scriptProtocol","loadTime","apps","legacy","PayPalCheckout","enableCheckoutIframe","logger","_enableCheckoutIframe","_Checkout","_BillingPage","_ThreeDomainSecure","_destroyAll","LOG_PREFIX","MERCHANT_ID","CLASSES","HIDDEN_BUTTON","setupPostBridge","isLegacyEligible","DEFAULT_LANG","loadButtonJS","lc","childNodes","renderButtons","buttons","condition","click","getHijackTargetElement","parentTagName","grandparentElement","grandparentTagName","redirected","logRedirect","isToken","parseToken","hasToken","normalizeOptions","environment","badenv","concat","setupConfig","initXO","startFlow","closeFlow","matchUrlAndPaymentToken","checkUrlAgainstEnv","awaitPaymentTokenAndUrl","paymentTokenAndUrl","enablev3ajax","formSerialize","urlAndPaymentToken","paypalCheckoutInited","closeFlowCalled","initPayPalCheckout","closeUrl","renderPayPalCheckout","hijackTarget","urlProp","removeAttribute","handleClick","clickHandler","handleClickHijack","listenClick","isClick","instrumentButtonRender","instrumentButtonClick","setupCalled","invokeReady","onKey","oneTimeReady","number"],"mappings":"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","file":"checkout.lib.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"paypal\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"paypal\"] = factory();\n\telse\n\t\troot[\"paypal\"] = factory();\n})((typeof self !== 'undefined' ? self : this), function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 59);\n","/* @flow */\n\nimport type { Enum } from '../types';\n\ntype BUTTON_STYLE_OPTIONS_ENUM =\n Enum<'label' | 'size' | 'shape' | 'color' | 'layout' |\n 'fundingicons' | 'maxbuttons' | 'branding' | 'tagline' | 'height' | 'installmentperiod'>;\n\nexport const BUTTON_STYLE_OPTIONS : BUTTON_STYLE_OPTIONS_ENUM = {\n LABEL: 'label',\n SIZE: 'size',\n SHAPE: 'shape',\n COLOR: 'color',\n LAYOUT: 'layout',\n MAXBUTTONS: 'maxbuttons',\n FUNDINGICONS: 'fundingicons',\n BRANDING: 'branding',\n TAGLINE: 'tagline',\n HEIGHT: 'height',\n INSTALLMENTPERIOD: 'installmentperiod'\n};\n\ntype BUTTON_LABEL_ENUM =\n Enum<'paypal' | 'checkout' | 'pay' | 'credit' |\n 'card' | 'buynow' | 'installment' | 'venmo' | 'itau' | 'ideal' | 'elv' | 'bancontact' | 'giropay' | 'sofort' | 'eps' | 'mybank' | 'p24' | 'payu' | 'verkkopankki' | 'blik' | 'trustly' | 'maxima' | 'boleto' | 'oxxo'>;\n\nexport const BUTTON_LABEL : BUTTON_LABEL_ENUM = {\n PAYPAL: 'paypal',\n CHECKOUT: 'checkout',\n PAY: 'pay',\n CREDIT: 'credit',\n CARD: 'card',\n BUYNOW: 'buynow',\n INSTALLMENT: 'installment',\n VENMO: 'venmo',\n ITAU: 'itau',\n IDEAL: 'ideal',\n ELV: 'elv',\n BANCONTACT: 'bancontact',\n GIROPAY: 'giropay',\n SOFORT: 'sofort',\n EPS: 'eps',\n MYBANK: 'mybank',\n P24: 'p24',\n PAYU: 'payu',\n VERKKOPANKKI: 'verkkopankki',\n BLIK: 'blik',\n TRUSTLY: 'trustly',\n MAXIMA: 'maxima',\n BOLETO: 'boleto',\n OXXO: 'oxxo'\n};\n\ntype BUTTON_COLOR_ENUM =\n Enum<'gold' | 'blue' | 'silver' | 'black' | 'darkblue' | 'transparent' | 'white'>;\n\nexport const BUTTON_COLOR : BUTTON_COLOR_ENUM = {\n GOLD: 'gold',\n BLUE: 'blue',\n SILVER: 'silver',\n BLACK: 'black',\n DARKBLUE: 'darkblue',\n WHITE: 'white',\n TRANSPARENT: 'transparent'\n};\n\ntype BUTTON_LOGO_COLOR_ENUM =\n Enum<'blue' | 'white' | 'black' | 'any'>;\n\nexport const BUTTON_LOGO_COLOR : BUTTON_LOGO_COLOR_ENUM = {\n BLUE: 'blue',\n WHITE: 'white',\n BLACK: 'black',\n ANY: 'any'\n};\n\ntype BUTTON_SIZE_ENUM =\n Enum<'tiny' | 'small' | 'medium' | 'large' | 'huge' | 'responsive'>;\n\nexport const BUTTON_SIZE : BUTTON_SIZE_ENUM = {\n TINY: 'tiny',\n SMALL: 'small',\n MEDIUM: 'medium',\n LARGE: 'large',\n HUGE: 'huge',\n RESPONSIVE: 'responsive'\n};\n\ntype BUTTON_TAGLINE_COLOR_ENUM =\n Enum<'black' | 'blue'>;\n\nexport const BUTTON_TAGLINE_COLOR : BUTTON_TAGLINE_COLOR_ENUM = {\n BLACK: 'black',\n BLUE: 'blue'\n};\n\ntype BUTTON_SHAPE_ENUM =\n Enum<'pill' | 'rect'>;\n\nexport const BUTTON_SHAPE : BUTTON_SHAPE_ENUM = {\n PILL: 'pill',\n RECT: 'rect'\n};\n\ntype BUTTON_BRANDING_ENUM =\n Enum<'branded' | 'unbranded'>;\n\nexport const BUTTON_BRANDING : BUTTON_BRANDING_ENUM = {\n BRANDED: 'branded',\n UNBRANDED: 'unbranded'\n};\n\ntype BUTTON_LAYOUT_ENUM =\n Enum<'horizontal' | 'vertical'>;\n\nexport const BUTTON_LAYOUT : BUTTON_LAYOUT_ENUM = {\n HORIZONTAL: 'horizontal',\n VERTICAL: 'vertical'\n};\n\ntype BUTTON_NUMBER_ENUM =\n Enum<'single' | 'multiple'>;\n\nexport const BUTTON_NUMBER : BUTTON_NUMBER_ENUM = {\n SINGLE: 'single',\n MULTIPLE: 'multiple'\n};\n\ntype BUTTON_LOGO_ENUM =\n Enum<'pp' | 'paypal' | 'venmo' | 'itau' | 'credit' | 'ideal' | 'elv' | 'bancontact' | 'giropay' | 'sofort' | 'eps' | 'mybank' | 'p24' | 'payu' | 'verkkopankki' | 'blik' | 'trustly' | 'maxima' | 'boleto' | 'oxxo'>;\n\nexport const BUTTON_LOGO : BUTTON_LOGO_ENUM = {\n PP: 'pp',\n PAYPAL: 'paypal',\n VENMO: 'venmo',\n ITAU: 'itau',\n CREDIT: 'credit',\n IDEAL: 'ideal',\n ELV: 'elv',\n BANCONTACT: 'bancontact',\n GIROPAY: 'giropay',\n SOFORT: 'sofort',\n EPS: 'eps',\n MYBANK: 'mybank',\n P24: 'p24',\n PAYU: 'payu',\n VERKKOPANKKI: 'verkkopankki',\n BLIK: 'blik',\n TRUSTLY: 'trustly',\n MAXIMA: 'maxima',\n BOLETO: 'boleto',\n OXXO: 'oxxo'\n};\n","/* @flow */\n\nexport const CHECKOUT_OVERLAY_COLOR = {\n BLACK: 'black',\n WHITE: 'white'\n};\n","/* @flow */\n\nexport const FUNDING = {\n PAYPAL: 'paypal',\n VENMO: 'venmo',\n ITAU: 'itau',\n CREDIT: 'credit',\n CARD: 'card',\n IDEAL: 'ideal',\n ELV: 'elv',\n BANCONTACT: 'bancontact',\n GIROPAY: 'giropay',\n SOFORT: 'sofort',\n EPS: 'eps',\n MYBANK: 'mybank',\n P24: 'p24',\n ZIMPLER: 'zimpler',\n PAYU: 'payu',\n VERKKOPANKKI: 'verkkopankki',\n BLIK: 'blik',\n TRUSTLY: 'trustly',\n MAXIMA: 'maxima',\n BOLETO: 'boleto',\n OXXO: 'oxxo'\n};\n\nexport const CARD = {\n VISA: 'visa',\n MASTERCARD: 'mastercard',\n AMEX: 'amex',\n DISCOVER: 'discover',\n SWITCH: 'switch',\n MAESTRO: 'maestro',\n HIPER: 'hiper',\n ELO: 'elo',\n JCB: 'jcb',\n CUP: 'cup',\n COFINOGA: 'cofinoga',\n COFIDIS: 'cofidis',\n CETELEM: 'cetelem',\n CBNATIONALE: 'cbnationale'\n};\n\nexport const FUNDING_ELIGIBILITY_REASON = {\n PRIMARY: 'The funding source is the primary source',\n NOT_ENABLED: 'The funding source is not currently enabled for use',\n SECONDARY_DISALLOWED: 'The funding source is disallowed as a secondary button',\n OPT_OUT: 'The funding source was disallowed in funding.disallowed',\n OPT_IN: 'The funding source was allowed in funding.allowed',\n DISALLOWED_COUNTRY: 'The funding source is not enabled for the current locale',\n DEFAULT_COUNTRY: 'The funding source is enabled by default for the current locale',\n DEFAULT: 'The funding source is enabled by default for all users',\n REMEMBERED: 'The funding source was remembered for the current user',\n NEED_OPT_IN: 'The funding source needs to be allowed in funding.allowed',\n COMMIT_NOT_SET: 'The funding source is not enabled when commit is not set as true',\n INVALID_ENV: 'The funding source is not supported in this environment'\n};\n\nexport const CARD_PRIORITY = [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.DISCOVER,\n CARD.SWITCH,\n CARD.MAESTRO,\n CARD.HIPER,\n CARD.ELO,\n CARD.JCB,\n CARD.CUP,\n CARD.COFINOGA,\n CARD.COFIDIS,\n CARD.CETELEM,\n CARD.CBNATIONALE\n];\n","/* @flow */\n\nexport const ENV = {\n LOCAL: 'local',\n STAGE: 'stage',\n SANDBOX: 'sandbox',\n PRODUCTION: 'production',\n TEST: 'test',\n DEMO: 'demo'\n};\n\nexport const USERS = {\n ALL: 'all',\n REMEMBERED: 'remembered'\n};\n\nexport const SOURCE = {\n MANUAL: 'manual',\n BUTTON_FACTORY: 'button_factory'\n};\n\nexport const LOG_LEVEL = {\n DEBUG: 'debug',\n INFO: 'info',\n WARN: 'warn',\n ERROR: 'error'\n};\n\nexport const PAYMENT_TYPE = {\n EC_TOKEN: 'ec_token',\n BA_TOKEN: 'ba_token',\n PAY_ID: 'pay_id'\n};\n\nexport const PPTM_ID = 'xo-pptm';\n\nexport const ATTRIBUTE = {\n BUTTON: 'data-button',\n FUNDING_SOURCE: 'data-funding-source',\n CARD: 'data-card',\n VERSION: 'data-version',\n LAYOUT: 'data-layout',\n SIZE: 'data-size'\n};\n\nexport const PLATFORM = {\n DESKTOP: 'desktop',\n MOBILE: 'mobile'\n};\n\nexport const DEFAULT = 'default';\n\n\n","/* @flow */\n\nimport { PAYMENT_TYPE } from './misc';\n\nexport const FPTI = {\n\n KEY: {\n FEED: 'feed_name',\n STATE: 'state_name',\n TRANSITION: 'transition_name',\n BUTTON_TYPE: 'button_type',\n SESSION_UID: 'page_session_id',\n BUTTON_SESSION_UID: 'button_session_id',\n TOKEN: 'token',\n CONTEXT_ID: 'context_id',\n CONTEXT_TYPE: 'context_type',\n REFERER: 'referer_url',\n PAY_ID: 'pay_id',\n SELLER_ID: 'seller_id',\n DATA_SOURCE: 'serverside_data_source',\n BUTTON_SOURCE: 'button_source',\n ERROR_CODE: 'ext_error_code',\n ERROR_DESC: 'ext_error_desc',\n PAGE_LOAD_TIME: 'page_load_time',\n EXPERIMENT_NAME: 'pxp_exp_id',\n TREATMENT_NAME: 'pxp_trtmnt_id',\n TRANSITION_TIME: 'transition_time',\n FUNDING_LIST: 'eligible_payment_methods',\n FUNDING_COUNT: 'eligible_payment_count',\n CHOSEN_FUNDING: 'selected_payment_method',\n BUTTON_LAYOUT: 'button_layout',\n BUTTON_COLOR: 'button_color',\n BUTTON_SIZE: 'button_size',\n BUTTON_SHAPE: 'button_shape',\n BUTTON_LABEL: 'button_label',\n BUTTON_WIDTH: 'button_width',\n VERSION: 'checkoutjs_version',\n MAX_BUTTONS: 'max_buttons',\n FUNDING_REMEMBERED: 'funding_remembered',\n BUTTON_TAGLINE_ENABLED: 'button_tagline_enabled',\n RESPONSE_DURATION: 'response_duration',\n PAYMENT_FLOW: 'payment_flow',\n BUTTON_VERSION: 'button_version'\n },\n\n BUTTON_TYPE: {\n IFRAME: 'iframe',\n HTML: 'html',\n CUSTOM: 'custom'\n },\n\n DATA_SOURCE: {\n CHECKOUT: 'checkout'\n },\n\n CONTEXT_TYPE: {\n BUTTON_SESSION_ID: 'button_session_id',\n [ PAYMENT_TYPE.PAY_ID ]: 'Pay-ID',\n [ PAYMENT_TYPE.EC_TOKEN ]: 'EC-Token',\n [ PAYMENT_TYPE.BA_TOKEN ]: 'EC-Token'\n },\n\n FEED: {\n CHECKOUTJS: 'checkoutjs'\n },\n\n STATE: {\n LOAD: 'checkoutjs_load',\n BUTTON: 'checkoutjs_button',\n CHECKOUT: 'checkoutjs_checkout',\n PPTM: 'checkoutjs_pptm'\n },\n\n TRANSITION: {\n SCRIPT_LOAD: 'process_script_load',\n\n BUTTON_RENDER: 'process_button_render',\n BUTTON_LOAD: 'process_button_load',\n BUTTON_CLICK: 'process_button_click',\n\n BUTTON_RENDER_INTRANET_MODE: 'process_button_render_intranet_mode',\n BUTTON_CLICK_INTRANET_MODE: 'process_button_click_intranet_mode',\n\n CREATE_PAYMENT: 'process_create_payment',\n RECIEVE_PAYMENT: 'process_recieve_payment',\n\n CHECKOUT_INIT: 'process_checkout_init',\n CHECKOUT_AUTHORIZE: 'process_checkout_authorize',\n CHECKOUT_SHIPPING_CHANGE: 'process_checkout_shipping_change',\n CHECKOUT_CANCEL: 'process_checkout_cancel',\n CHECKOUT_ERROR: 'process_checkout_error',\n\n EXTERNAL_EXPERIMENT: 'process_external_experiment',\n EXTERNAL_EXPERIMENT_COMPLETE: 'process_external_experiment_complete',\n\n PPTM_LOAD: 'process_pptm_load',\n PPTM_LOADED: 'process_pptm_loaded'\n }\n};\n","/* @flow */\n\nexport const COUNTRY = {\n AD: 'AD',\n AE: 'AE',\n AG: 'AG',\n AI: 'AI',\n AL: 'AL',\n AM: 'AM',\n AN: 'AN',\n AO: 'AO',\n AR: 'AR',\n AT: 'AT',\n AU: 'AU',\n AW: 'AW',\n AZ: 'AZ',\n BA: 'BA',\n BB: 'BB',\n BE: 'BE',\n BF: 'BF',\n BG: 'BG',\n BH: 'BH',\n BI: 'BI',\n BJ: 'BJ',\n BM: 'BM',\n BN: 'BN',\n BO: 'BO',\n BR: 'BR',\n BS: 'BS',\n BT: 'BT',\n BW: 'BW',\n BY: 'BY',\n BZ: 'BZ',\n C2: 'C2',\n CA: 'CA',\n CD: 'CD',\n CG: 'CG',\n CH: 'CH',\n CI: 'CI',\n CK: 'CK',\n CL: 'CL',\n CM: 'CM',\n CN: 'CN',\n CO: 'CO',\n CR: 'CR',\n CV: 'CV',\n CY: 'CY',\n CZ: 'CZ',\n DE: 'DE',\n DJ: 'DJ',\n DK: 'DK',\n DM: 'DM',\n DO: 'DO',\n DZ: 'DZ',\n EC: 'EC',\n EE: 'EE',\n EG: 'EG',\n ER: 'ER',\n ES: 'ES',\n ET: 'ET',\n FI: 'FI',\n FJ: 'FJ',\n FK: 'FK',\n FM: 'FM',\n FO: 'FO',\n FR: 'FR',\n GA: 'GA',\n GB: 'GB',\n GD: 'GD',\n GE: 'GE',\n GF: 'GF',\n GI: 'GI',\n GL: 'GL',\n GM: 'GM',\n GN: 'GN',\n GP: 'GP',\n GR: 'GR',\n GT: 'GT',\n GW: 'GW',\n GY: 'GY',\n HK: 'HK',\n HN: 'HN',\n HR: 'HR',\n HU: 'HU',\n ID: 'ID',\n IE: 'IE',\n IL: 'IL',\n IN: 'IN',\n IS: 'IS',\n IT: 'IT',\n JM: 'JM',\n JO: 'JO',\n JP: 'JP',\n KE: 'KE',\n KG: 'KG',\n KH: 'KH',\n KI: 'KI',\n KM: 'KM',\n KN: 'KN',\n KR: 'KR',\n KW: 'KW',\n KY: 'KY',\n KZ: 'KZ',\n LA: 'LA',\n LC: 'LC',\n LI: 'LI',\n LK: 'LK',\n LS: 'LS',\n LT: 'LT',\n LU: 'LU',\n LV: 'LV',\n MA: 'MA',\n MC: 'MC',\n MD: 'MD',\n ME: 'ME',\n MG: 'MG',\n MH: 'MH',\n MK: 'MK',\n ML: 'ML',\n MN: 'MN',\n MQ: 'MQ',\n MR: 'MR',\n MS: 'MS',\n MT: 'MT',\n MU: 'MU',\n MV: 'MV',\n MW: 'MW',\n MX: 'MX',\n MY: 'MY',\n MZ: 'MZ',\n NA: 'NA',\n NC: 'NC',\n NE: 'NE',\n NF: 'NF',\n NG: 'NG',\n NI: 'NI',\n NL: 'NL',\n NO: 'NO',\n NP: 'NP',\n NR: 'NR',\n NU: 'NU',\n NZ: 'NZ',\n OM: 'OM',\n PA: 'PA',\n PE: 'PE',\n PF: 'PF',\n PG: 'PG',\n PH: 'PH',\n PL: 'PL',\n PM: 'PM',\n PN: 'PN',\n PT: 'PT',\n PW: 'PW',\n PY: 'PY',\n QA: 'QA',\n RE: 'RE',\n RO: 'RO',\n RS: 'RS',\n RU: 'RU',\n RW: 'RW',\n SA: 'SA',\n SB: 'SB',\n SC: 'SC',\n SE: 'SE',\n SG: 'SG',\n SH: 'SH',\n SI: 'SI',\n SJ: 'SJ',\n SK: 'SK',\n SL: 'SL',\n SM: 'SM',\n SN: 'SN',\n SO: 'SO',\n SR: 'SR',\n ST: 'ST',\n SV: 'SV',\n SZ: 'SZ',\n TC: 'TC',\n TD: 'TD',\n TG: 'TG',\n TH: 'TH',\n TJ: 'TJ',\n TM: 'TM',\n TN: 'TN',\n TO: 'TO',\n TR: 'TR',\n TT: 'TT',\n TV: 'TV',\n TW: 'TW',\n TZ: 'TZ',\n UA: 'UA',\n UG: 'UG',\n US: 'US',\n UY: 'UY',\n VA: 'VA',\n VC: 'VC',\n VE: 'VE',\n VG: 'VG',\n VN: 'VN',\n VU: 'VU',\n WF: 'WF',\n WS: 'WS',\n YE: 'YE',\n YT: 'YT',\n ZA: 'ZA',\n ZM: 'ZM',\n ZW: 'ZW'\n};\n\nexport const LANG = {\n AR: 'ar',\n CS: 'cs',\n DA: 'da',\n DE: 'de',\n EL: 'el',\n EN: 'en',\n ES: 'es',\n FI: 'fi',\n FR: 'fr',\n HE: 'he',\n HU: 'hu',\n ID: 'id',\n IT: 'it',\n JA: 'ja',\n KO: 'ko',\n NL: 'nl',\n NO: 'no',\n PL: 'pl',\n PT: 'pt',\n RU: 'ru',\n SK: 'sk',\n SV: 'sv',\n TH: 'th',\n TR: 'tr',\n ZH: 'zh'\n};\n\nexport const LANG_TO_DEFAULT_COUNTRY = {\n [LANG.AR]: COUNTRY.SA,\n [LANG.CS]: COUNTRY.CZ,\n [LANG.DA]: COUNTRY.DK,\n [LANG.DE]: COUNTRY.DE,\n [LANG.EL]: COUNTRY.GR,\n [LANG.EN]: COUNTRY.US,\n [LANG.ES]: COUNTRY.ES,\n [LANG.FI]: COUNTRY.FI,\n [LANG.FR]: COUNTRY.FR,\n [LANG.HE]: COUNTRY.IL,\n [LANG.HU]: COUNTRY.HU,\n [LANG.ID]: COUNTRY.ID,\n [LANG.IT]: COUNTRY.IT,\n [LANG.JA]: COUNTRY.JP,\n [LANG.KO]: COUNTRY.KR,\n [LANG.NL]: COUNTRY.NL,\n [LANG.NO]: COUNTRY.NO,\n [LANG.PL]: COUNTRY.PL,\n [LANG.PT]: COUNTRY.PT,\n [LANG.RU]: COUNTRY.RU,\n [LANG.SK]: COUNTRY.SK,\n [LANG.SV]: COUNTRY.SE,\n [LANG.TH]: COUNTRY.TH,\n [LANG.TR]: COUNTRY.TR,\n [LANG.ZH]: COUNTRY.CN\n};\n\nexport const ALLOWED_INSTALLMENT_COUNTRIES = [ COUNTRY.BR, COUNTRY.MX ];\nexport const ALLOWED_INSTALLMENT_PERIOD = {\n BR: [ 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ],\n MX: [ 3, 6, 9, 12 ]\n};\n","/* @flow */\n\nimport { COUNTRY, LANG } from './country';\n\nexport const LOCALE = {\n [COUNTRY.AD]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AE]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH, LANG.AR ],\n [COUNTRY.AG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AI]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AL]: [ LANG.EN ],\n [COUNTRY.AM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AN]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AO]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AR]: [ LANG.ES, LANG.EN ],\n [COUNTRY.AT]: [ LANG.DE, LANG.EN ],\n [COUNTRY.AU]: [ LANG.EN ],\n [COUNTRY.AW]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BA]: [ LANG.EN ],\n [COUNTRY.BB]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BE]: [ LANG.EN, LANG.NL, LANG.FR ],\n [COUNTRY.BF]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.BG]: [ LANG.EN ],\n [COUNTRY.BH]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BI]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.BJ]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.BM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BN]: [ LANG.EN ],\n [COUNTRY.BO]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.BR]: [ LANG.PT, LANG.EN ],\n [COUNTRY.BS]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BT]: [ LANG.EN ],\n [COUNTRY.BW]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BY]: [ LANG.EN ],\n [COUNTRY.BZ]: [ LANG.EN, LANG.ES, LANG.FR, LANG.ZH ],\n [COUNTRY.C2]: [ LANG.ZH, LANG.EN ],\n [COUNTRY.CA]: [ LANG.EN, LANG.FR ],\n [COUNTRY.CD]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.CG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.CH]: [ LANG.DE, LANG.FR, LANG.EN ],\n [COUNTRY.CI]: [ LANG.FR, LANG.EN ],\n [COUNTRY.CK]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.CL]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.CM]: [ LANG.FR, LANG.EN ],\n [COUNTRY.CN]: [ LANG.ZH ],\n [COUNTRY.CO]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.CR]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.CV]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.CY]: [ LANG.EN ],\n [COUNTRY.CZ]: [ LANG.CS, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.DE]: [ LANG.DE, LANG.EN ],\n [COUNTRY.DJ]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.DK]: [ LANG.DA, LANG.EN ],\n [COUNTRY.DM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.DO]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.DZ]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.EC]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.EE]: [ LANG.EN, LANG.RU, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.EG]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ER]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ES]: [ LANG.ES, LANG.EN ],\n [COUNTRY.ET]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.FI]: [ LANG.FI, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.FJ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.FK]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.FM]: [ LANG.EN ],\n [COUNTRY.FO]: [ LANG.DA, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.FR]: [ LANG.FR, LANG.EN ],\n [COUNTRY.GA]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.GB]: [ LANG.EN ],\n [COUNTRY.GD]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GE]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GF]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GI]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GL]: [ LANG.DA, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GN]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.GP]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GR]: [ LANG.EL, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GT]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.GW]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GY]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.HK]: [ LANG.EN, LANG.ZH ],\n [COUNTRY.HN]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.HR]: [ LANG.EN ],\n [COUNTRY.HU]: [ LANG.HU, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ID]: [ LANG.ID, LANG.EN ],\n [COUNTRY.IE]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.IL]: [ LANG.HE, LANG.EN ],\n [COUNTRY.IN]: [ LANG.EN ],\n [COUNTRY.IS]: [ LANG.EN ],\n [COUNTRY.IT]: [ LANG.IT, LANG.EN ],\n [COUNTRY.JM]: [ LANG.EN, LANG.ES, LANG.FR, LANG.ZH ],\n [COUNTRY.JO]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.JP]: [ LANG.JA, LANG.EN ],\n [COUNTRY.KE]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KH]: [ LANG.EN ],\n [COUNTRY.KI]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KM]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.KN]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KR]: [ LANG.KO, LANG.EN ],\n [COUNTRY.KW]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KY]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LA]: [ LANG.EN ],\n [COUNTRY.LC]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LI]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LK]: [ LANG.EN ],\n [COUNTRY.LS]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LT]: [ LANG.EN, LANG.RU, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LU]: [ LANG.EN, LANG.DE, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LV]: [ LANG.EN, LANG.RU, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MA]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MC]: [ LANG.FR, LANG.EN ],\n [COUNTRY.MD]: [ LANG.EN ],\n [COUNTRY.ME]: [ LANG.EN ],\n [COUNTRY.MG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MH]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MK]: [ LANG.EN ],\n [COUNTRY.ML]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.MN]: [ LANG.EN ],\n [COUNTRY.MQ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MR]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MS]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MT]: [ LANG.EN ],\n [COUNTRY.MU]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MV]: [ LANG.EN ],\n [COUNTRY.MW]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MX]: [ LANG.ES, LANG.EN ],\n [COUNTRY.MY]: [ LANG.EN ],\n [COUNTRY.MZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NA]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NC]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NE]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.NF]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NG]: [ LANG.EN ],\n [COUNTRY.NI]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.NL]: [ LANG.NL, LANG.EN ],\n [COUNTRY.NO]: [ LANG.NO, LANG.EN ],\n [COUNTRY.NP]: [ LANG.EN ],\n [COUNTRY.NR]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NU]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.OM]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PA]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.PE]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.PF]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PH]: [ LANG.EN ],\n [COUNTRY.PL]: [ LANG.PL, LANG.EN ],\n [COUNTRY.PM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PN]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PT]: [ LANG.PT, LANG.EN ],\n [COUNTRY.PW]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PY]: [ LANG.ES, LANG.EN ],\n [COUNTRY.QA]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH, LANG.AR ],\n [COUNTRY.RE]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.RO]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.RS]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.RU]: [ LANG.RU, LANG.EN ],\n [COUNTRY.RW]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.SA]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SB]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SC]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.SE]: [ LANG.SV, LANG.EN ],\n [COUNTRY.SG]: [ LANG.EN ],\n [COUNTRY.SH]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SI]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SJ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SK]: [ LANG.SK, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SL]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SN]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.SO]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SR]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ST]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SV]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.SZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TC]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TD]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.TG]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.TH]: [ LANG.TH, LANG.EN ],\n [COUNTRY.TJ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TN]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TO]: [ LANG.EN ],\n [COUNTRY.TR]: [ LANG.TR, LANG.EN ],\n [COUNTRY.TT]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TV]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TW]: [ LANG.ZH, LANG.EN ],\n [COUNTRY.TZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.UA]: [ LANG.EN, LANG.RU, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.UG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.US]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.UY]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.VA]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.VC]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.VE]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.VG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.VN]: [ LANG.EN ],\n [COUNTRY.VU]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.WF]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.WS]: [ LANG.EN ],\n [COUNTRY.YE]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.YT]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ZA]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ZM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ZW]: [ LANG.EN ]\n};\n","/* @flow */\n\nexport * from './button';\nexport * from './checkout';\nexport * from './funding';\nexport * from './fpti';\nexport * from './country';\nexport * from './misc';\nexport * from './locale';\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { regexMap } from './util';\n\n// eslint-disable-next-line no-use-before-define\nexport type ChildType = $ReadOnlyArray | JsxHTMLNode | string | void | null;\nexport type ChildrenType = $ReadOnlyArray;\ntype PropsType = ?{ class? : string, id? : string, innerHTML? : string };\n\nfunction htmlEncode(html : string = '') : string {\n return html.toString()\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(/\\//g, '/');\n}\n\nexport class JsxHTMLNode {\n name : string\n props : PropsType\n children : ChildrenType\n\n constructor(name : string, props : PropsType, children : ChildrenType) {\n this.name = name;\n this.props = props;\n this.children = children;\n }\n\n toString() : string {\n return `<${ this.name }${ this.props ? ' ' : '' }${ this.props ? this.propsToString() : '' }>${ this.childrenToString() }`;\n }\n\n propsToString() : string {\n const props = this.props;\n\n if (!props) {\n return '';\n }\n\n return Object.keys(props).filter(key => {\n return key !== 'innerHTML' && props && props[key] !== false;\n }).map(key => {\n if (props && props[key] === true) {\n return `${ htmlEncode(key) }`;\n }\n return props ? `${ htmlEncode(key) }=\"${ htmlEncode(props[key]) }\"` : '';\n }).join(' ');\n }\n\n childrenToString() : string {\n\n if (this.props && this.props.innerHTML) {\n return this.props.innerHTML;\n }\n\n if (!this.children) {\n return '';\n }\n\n let result = '';\n\n function iterate(children) {\n for (const child of children) {\n\n if (child === null || child === undefined) {\n continue;\n }\n\n if (Array.isArray(child)) {\n iterate(child);\n } else if (child instanceof JsxHTMLNode) {\n result += child.toString();\n } else {\n result += htmlEncode(child);\n }\n }\n }\n\n iterate(this.children);\n\n return result;\n }\n}\n\nexport class JsxHTMLNodeContainer extends JsxHTMLNode {\n\n\n constructor(children : ChildrenType) {\n super('', {}, children);\n }\n\n toString() : string {\n return this.childrenToString();\n }\n}\n\nexport function jsxToHTML(name : string, props : PropsType, ...children : ChildrenType) : JsxHTMLNode {\n return new JsxHTMLNode(name, props, children);\n}\n\nexport function jsxRender(template : string, renderers : { [string] : (string) =>?(JsxHTMLNode | $ReadOnlyArray) }) : JsxHTMLNode {\n\n // eslint-disable-next-line security/detect-unsafe-regex, unicorn/no-unsafe-regex\n const nodes = regexMap(template, /\\{\\s*([a-z]+)(?::\\s*([^} ]+))?\\s*\\}|([^${}]+)/g, (match, type, value, text) => {\n if (type) {\n if (!renderers[type]) {\n throw new Error(`Can not render type: ${ type }`);\n }\n\n return renderers[type](value);\n } else if (text && text.trim()) {\n\n if (!renderers.text) {\n return text;\n }\n\n if ((/
/).test(text)) {\n return renderers.break(text);\n } else {\n return renderers.text(text);\n }\n } else {\n return text;\n }\n });\n\n return new JsxHTMLNodeContainer(nodes);\n}\n","/* @flow */\n\nexport function isPromise(item : mixed) : boolean {\n try {\n if (!item) {\n return false;\n }\n\n if (typeof Promise !== 'undefined' && item instanceof Promise) {\n return true;\n }\n\n if (typeof window !== 'undefined' && typeof window.Window === 'function' && item instanceof window.Window) {\n return false;\n }\n\n if (typeof window !== 'undefined' && typeof window.constructor === 'function' && item instanceof window.constructor) {\n return false;\n }\n\n let toString = ({}).toString;\n\n if (toString) {\n let name = toString.call(item);\n\n if (name === '[object Window]' || name === '[object global]' || name === '[object DOMWindow]') {\n return false;\n }\n }\n\n if (typeof item.then === 'function') {\n return true;\n }\n } catch (err) {\n return false;\n }\n\n return false;\n}\n","/* @flow */\n\nimport type { ZalgoPromise } from './promise';\n\nconst dispatchedErrors = [];\nconst possiblyUnhandledPromiseHandlers : Array<(mixed, promise? : ZalgoPromise) => void> = [];\n\nexport function dispatchPossiblyUnhandledError(err : mixed, promise : ZalgoPromise) {\n\n if (dispatchedErrors.indexOf(err) !== -1) {\n return;\n }\n\n dispatchedErrors.push(err);\n\n setTimeout(() => {\n if (__DEBUG__) {\n // $FlowFixMe\n throw new Error(`${ err.stack || err.toString() }\\n\\nFrom promise:\\n\\n${ promise.stack }`);\n }\n\n throw err;\n }, 1);\n\n for (let j = 0; j < possiblyUnhandledPromiseHandlers.length; j++) {\n // $FlowFixMe\n possiblyUnhandledPromiseHandlers[j](err, promise);\n }\n}\n\nexport function onPossiblyUnhandledException(handler : (mixed, promise? : ZalgoPromise) => void) : { cancel : () => void } {\n possiblyUnhandledPromiseHandlers.push(handler);\n\n return {\n cancel() {\n possiblyUnhandledPromiseHandlers.splice(possiblyUnhandledPromiseHandlers.indexOf(handler), 1);\n }\n };\n}\n","/* @flow */\n\nimport type { ZalgoPromise } from './promise';\n\nlet activeCount = 0;\nlet flushPromise;\n\nfunction flushActive() {\n if (!activeCount && flushPromise) {\n const promise = flushPromise;\n flushPromise = null;\n promise.resolve();\n }\n}\n\nexport function startActive() {\n activeCount += 1;\n}\n\nexport function endActive() {\n activeCount -= 1;\n flushActive();\n}\n\nexport function awaitActive(Zalgo : Class>) : ZalgoPromise { // eslint-disable-line no-undef\n let promise = flushPromise = flushPromise || new Zalgo();\n flushActive();\n return promise;\n}\n","/* @flow */\n\nimport { isPromise } from './utils';\nimport { onPossiblyUnhandledException, dispatchPossiblyUnhandledError } from './exceptions';\nimport { startActive, endActive, awaitActive } from './flush';\n\nexport class ZalgoPromise {\n\n resolved : boolean\n rejected : boolean\n errorHandled : boolean\n value : R\n error : mixed\n handlers : Array<{\n promise : ZalgoPromise<*>,\n onSuccess : void | (result : R) => mixed,\n onError : void | (error : mixed) => mixed\n }>\n dispatching : boolean\n stack : string\n\n constructor(handler : ?(resolve : (result : R) => void, reject : (error : mixed) => void) => void) {\n\n this.resolved = false;\n this.rejected = false;\n this.errorHandled = false;\n\n this.handlers = [];\n\n if (handler) {\n\n let result;\n let error;\n let resolved = false;\n let rejected = false;\n let isAsync = false;\n\n startActive();\n\n try {\n handler(res => {\n if (isAsync) {\n this.resolve(res);\n } else {\n resolved = true;\n result = res;\n }\n\n }, err => {\n if (isAsync) {\n this.reject(err);\n } else {\n rejected = true;\n error = err;\n }\n });\n\n } catch (err) {\n endActive();\n this.reject(err);\n return;\n }\n\n endActive();\n\n isAsync = true;\n\n if (resolved) {\n // $FlowFixMe\n this.resolve(result);\n } else if (rejected) {\n this.reject(error);\n }\n }\n\n if (__DEBUG__) {\n try {\n throw new Error(`ZalgoPromise`);\n } catch (err) {\n this.stack = err.stack;\n }\n }\n }\n\n resolve(result : R) : ZalgoPromise {\n if (this.resolved || this.rejected) {\n return this;\n }\n\n if (isPromise(result)) {\n throw new Error('Can not resolve promise with another promise');\n }\n\n this.resolved = true;\n this.value = result;\n this.dispatch();\n\n return this;\n }\n\n reject(error : mixed) : ZalgoPromise {\n if (this.resolved || this.rejected) {\n return this;\n }\n\n if (isPromise(error)) {\n throw new Error('Can not reject promise with another promise');\n }\n\n if (!error) {\n // $FlowFixMe\n let err = (error && typeof error.toString === 'function' ? error.toString() : Object.prototype.toString.call(error));\n error = new Error(`Expected reject to be called with Error, got ${ err }`);\n }\n\n this.rejected = true;\n this.error = error;\n\n if (!this.errorHandled) {\n setTimeout(() => {\n if (!this.errorHandled) {\n dispatchPossiblyUnhandledError(error, this);\n }\n }, 1);\n }\n\n this.dispatch();\n\n return this;\n }\n\n asyncReject(error : mixed) : ZalgoPromise {\n this.errorHandled = true;\n this.reject(error);\n return this;\n }\n \n dispatch() {\n\n let { dispatching, resolved, rejected, handlers } = this;\n\n if (dispatching) {\n return;\n }\n\n if (!resolved && !rejected) {\n return;\n }\n\n this.dispatching = true;\n startActive();\n\n const chain = (firstPromise : ZalgoPromise, secondPromise : ZalgoPromise) => {\n return firstPromise.then(res => {\n secondPromise.resolve(res);\n }, err => {\n secondPromise.reject(err);\n });\n };\n\n for (let i = 0; i < handlers.length; i++) {\n\n let { onSuccess, onError, promise } = handlers[i];\n\n let result;\n\n if (resolved) {\n\n try {\n result = onSuccess ? onSuccess(this.value) : this.value;\n } catch (err) {\n promise.reject(err);\n continue;\n }\n\n } else if (rejected) {\n\n if (!onError) {\n promise.reject(this.error);\n continue;\n }\n\n try {\n result = onError(this.error);\n } catch (err) {\n promise.reject(err);\n continue;\n }\n }\n\n if (result instanceof ZalgoPromise && (result.resolved || result.rejected)) {\n\n if (result.resolved) {\n promise.resolve(result.value);\n } else {\n promise.reject(result.error);\n }\n\n result.errorHandled = true;\n\n } else if (isPromise(result)) {\n\n if (result instanceof ZalgoPromise && (result.resolved || result.rejected)) {\n if (result.resolved) {\n promise.resolve(result.value);\n } else {\n promise.reject(result.error);\n }\n\n } else {\n // $FlowFixMe\n chain(result, promise);\n }\n\n } else {\n\n promise.resolve(result);\n }\n }\n\n handlers.length = 0;\n this.dispatching = false;\n endActive();\n }\n\n then(onSuccess : void | (result : R) => (ZalgoPromise | Y), onError : void | (error : mixed) => (ZalgoPromise | Y)) : ZalgoPromise {\n\n if (onSuccess && typeof onSuccess !== 'function' && !onSuccess.call) {\n throw new Error('Promise.then expected a function for success handler');\n }\n\n if (onError && typeof onError !== 'function' && !onError.call) {\n throw new Error('Promise.then expected a function for error handler');\n }\n\n let promise : ZalgoPromise = new ZalgoPromise();\n\n this.handlers.push({\n promise,\n onSuccess,\n onError\n });\n\n this.errorHandled = true;\n\n this.dispatch();\n\n return promise;\n }\n\n catch(onError : (error : mixed) => ZalgoPromise | Y) : ZalgoPromise {\n return this.then(undefined, onError);\n }\n\n finally(onFinally : () => mixed) : ZalgoPromise {\n\n if (onFinally && typeof onFinally !== 'function' && !onFinally.call) {\n throw new Error('Promise.finally expected a function');\n }\n\n return this.then((result) => {\n return ZalgoPromise.try(onFinally)\n .then(() => {\n return result;\n });\n }, (err) => {\n return ZalgoPromise.try(onFinally)\n .then(() => {\n throw err;\n });\n });\n }\n\n timeout(time : number, err : ?Error) : ZalgoPromise {\n\n if (this.resolved || this.rejected) {\n return this;\n }\n\n let timeout = setTimeout(() => {\n\n if (this.resolved || this.rejected) {\n return;\n }\n\n this.reject(err || new Error(`Promise timed out after ${ time }ms`));\n\n }, time);\n\n return this.then(result => {\n clearTimeout(timeout);\n return result;\n });\n }\n\n // $FlowFixMe\n toPromise() : Promise {\n // $FlowFixMe\n if (typeof Promise === 'undefined') {\n throw new TypeError(`Could not find Promise`);\n }\n // $FlowFixMe\n return Promise.resolve(this); // eslint-disable-line compat/compat\n }\n\n static resolve(value : X | ZalgoPromise) : ZalgoPromise {\n\n if (value instanceof ZalgoPromise) {\n return value;\n }\n\n if (isPromise(value)) {\n // $FlowFixMe\n return new ZalgoPromise((resolve, reject) => value.then(resolve, reject));\n }\n\n return new ZalgoPromise().resolve(value);\n }\n\n static reject(error : mixed) : ZalgoPromise {\n return new ZalgoPromise().reject(error);\n }\n\n static asyncReject(error : mixed) : ZalgoPromise {\n return new ZalgoPromise().asyncReject(error);\n }\n\n static all>(promises : X) : ZalgoPromise<$TupleMap(ZalgoPromise | Y) => Y>> { // eslint-disable-line no-undef\n\n let promise = new ZalgoPromise();\n let count = promises.length;\n let results = [];\n\n if (!count) {\n promise.resolve(results);\n return promise;\n }\n\n const chain = (i : number, firstPromise : ZalgoPromise, secondPromise : ZalgoPromise) => {\n return firstPromise.then(res => {\n results[i] = res;\n count -= 1;\n if (count === 0) {\n promise.resolve(results);\n }\n }, err => {\n secondPromise.reject(err);\n });\n };\n\n for (let i = 0; i < promises.length; i++) {\n let prom = promises[i];\n\n if (prom instanceof ZalgoPromise) {\n if (prom.resolved) {\n results[i] = prom.value;\n count -= 1;\n continue;\n }\n } else if (!isPromise(prom)) {\n results[i] = prom;\n count -= 1;\n continue;\n }\n\n chain(i, ZalgoPromise.resolve(prom), promise);\n }\n\n if (count === 0) {\n promise.resolve(results);\n }\n\n return promise;\n }\n\n static hash(promises : O) : ZalgoPromise<$ObjMap(ZalgoPromise | Y) => Y>> { // eslint-disable-line no-undef\n let result = {};\n \n return ZalgoPromise.all(Object.keys(promises).map(key => {\n return ZalgoPromise.resolve(promises[key]).then(value => {\n result[key] = value;\n });\n })).then(() => {\n return result;\n });\n }\n\n static map(items : Array, method : (T) => (ZalgoPromise | X)) : ZalgoPromise> {\n // $FlowFixMe\n return ZalgoPromise.all(items.map(method));\n }\n\n static onPossiblyUnhandledException(handler : (err : mixed) => void) : { cancel : () => void } {\n return onPossiblyUnhandledException(handler);\n }\n\n static try>(method : (...args : A) => (ZalgoPromise | Y), context : ?C, args : ?A) : ZalgoPromise {\n\n if (method && typeof method !== 'function' && !method.call) {\n throw new Error('Promise.try expected a function');\n }\n\n let result;\n\n startActive();\n \n try {\n // $FlowFixMe\n result = method.apply(context, args || []);\n } catch (err) {\n endActive();\n return ZalgoPromise.reject(err);\n }\n\n endActive();\n\n return ZalgoPromise.resolve(result);\n }\n\n static delay(delay : number) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n setTimeout(resolve, delay);\n });\n }\n\n static isPromise(value : mixed) : boolean {\n\n if (value && value instanceof ZalgoPromise) {\n return true;\n }\n\n return isPromise(value);\n }\n\n static flush() : ZalgoPromise {\n return awaitActive(ZalgoPromise);\n }\n}\n","/* @flow */\n\nexport { ZalgoPromise } from './promise';\n","/* @flow */\n\nimport {\n getOpener,\n getTop\n} from 'cross-domain-utils/src';\n\nexport function getUserAgent() : string {\n return window.navigator.mockUserAgent || window.navigator.userAgent;\n}\n\nexport function isDevice() : boolean {\n const userAgent = getUserAgent();\n if (userAgent.match(/Android|webOS|iPhone|iPad|iPod|bada|Symbian|Palm|CriOS|BlackBerry|IEMobile|WindowsMobile|Opera Mini/i)) {\n return true;\n }\n\n return false;\n}\n\nexport function isInsidePopup() : boolean {\n // Checks to see if the top-most window is a pop-up\n return Boolean(getOpener(getTop(window) || window));\n}\n\nexport function isStandAlone() : boolean {\n // Chrome interprets pop-up windows as standalone windows\n return !isInsidePopup() && (window.navigator.standalone === true || window.matchMedia('(display-mode: standalone)').matches);\n}\n\nexport function isFacebookWebView(ua? : string = getUserAgent()) : boolean {\n return (ua.indexOf('FBAN') !== -1) || (ua.indexOf('FBAV') !== -1);\n}\n\nexport function isFirefoxIOS(ua? : string = getUserAgent()) : boolean {\n return (/FxiOS/i).test(ua);\n}\n\nexport function isEdgeIOS(ua? : string = getUserAgent()) : boolean {\n return (/EdgiOS/i).test(ua);\n}\n\nexport function isOperaMini(ua? : string = getUserAgent()) : boolean {\n return ua.indexOf('Opera Mini') > -1;\n}\n\nexport function isAndroid(ua? : string = getUserAgent()) : boolean {\n return (/Android/).test(ua);\n}\n\nexport function isIos(ua? : string = getUserAgent()) : boolean {\n return (/iPhone|iPod|iPad/).test(ua);\n}\n\nexport function isGoogleSearchApp(ua? : string = getUserAgent()) : boolean {\n return (/\\bGSA\\b/).test(ua);\n}\n\nexport function isQQBrowser(ua? : string = getUserAgent()) : boolean {\n return (/QQBrowser/).test(ua);\n}\n\nexport function isIosWebview(ua? : string = getUserAgent()) : boolean {\n if (isIos(ua)) {\n if (isGoogleSearchApp(ua)) {\n return true;\n }\n return (/.+AppleWebKit(?!.*Safari)/).test(ua);\n }\n return false;\n}\n\nexport function isAndroidWebview(ua? : string = getUserAgent()) : boolean {\n if (isAndroid(ua)) {\n return (/Version\\/[\\d.]+/).test(ua) && !isOperaMini(ua);\n }\n return false;\n}\n\nexport function isWebView() : boolean {\n return isFacebookWebView() ||\n isIosWebview() ||\n isAndroidWebview();\n}\n\nexport function isIE() : boolean {\n\n if (window.document.documentMode) {\n return true;\n }\n\n if (window.navigator && typeof window.navigator.userAgent === 'string') {\n if ((/Edge|MSIE/i).test(window.navigator.userAgent)) {\n return true;\n }\n }\n\n return false;\n}\n\n\nexport function isIE11() : boolean {\n if (!isIE()) {\n return false;\n }\n\n if (window.navigator && typeof window.navigator.userAgent === 'string') {\n if ((/MSIE 11\\.0/i).test(window.navigator.userAgent)) {\n return true;\n }\n\n if ((/Trident/i).test(window.navigator.userAgent) && (/rv:11\\.0/i).test(window.navigator.userAgent)) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function isIECompHeader() : boolean {\n const mHttp = window.document.querySelector('meta[http-equiv=\"X-UA-Compatible\"]');\n const mContent = window.document.querySelector('meta[content=\"IE=edge\"]');\n if (mHttp && mContent) {\n return true;\n }\n return false;\n}\n\nexport function isElectron() : boolean {\n const userAgent = getUserAgent();\n // here we want a case-insensitive full word boundary\n return (/\\belectron\\b/i).test(userAgent);\n}\n\nexport function isIEIntranet() : boolean {\n if (!isIE11()) {\n return false;\n }\n\n // This status check only works for older versions of IE with document.documentMode set\n\n if (window.document.documentMode) {\n try {\n const status = window.status;\n\n window.status = 'testIntranetMode';\n\n if (window.status === 'testIntranetMode') {\n window.status = status;\n\n return true;\n }\n\n return false;\n\n } catch (err) {\n\n return false;\n }\n }\n\n return false;\n}\n\nexport function isMacOsCna() : boolean {\n const userAgent = getUserAgent();\n return (/Macintosh.*AppleWebKit(?!.*Safari)/i).test(userAgent);\n}\n\nexport function supportsPopups(ua? : string = getUserAgent()) : boolean {\n return !(isIosWebview(ua) || isAndroidWebview(ua) || isOperaMini(ua) ||\n isFirefoxIOS(ua) || isEdgeIOS(ua) || isFacebookWebView(ua) || isQQBrowser(ua) || isElectron() || isMacOsCna() || isStandAlone());\n}\n","/* @flow */\n\nimport { info } from 'beaver-logger/client';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport type { CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { LANG_TO_DEFAULT_COUNTRY, LOCALE } from '../constants';\nimport type { LocaleType } from '../types';\nimport { config } from '../config';\n\nimport { memoize } from './util';\nimport { isDevice } from './device';\n\nfunction isDocumentReady() : boolean {\n return Boolean(document.body) && document.readyState === 'complete';\n}\n\nexport const documentReady : ZalgoPromise = new ZalgoPromise(resolve => {\n\n if (isDocumentReady()) {\n return resolve();\n }\n\n const interval = setInterval(() => {\n if (isDocumentReady()) {\n clearInterval(interval);\n return resolve();\n }\n }, 10);\n});\n\nexport const documentBody : ZalgoPromise = documentReady.then(() => {\n if (document.body) {\n return document.body;\n }\n\n throw new Error('Document ready but document.body not present');\n});\n\n\nexport function loadScript(src : string, timeout : number = 0, attrs : Object = {}) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n const script = document.createElement('script');\n\n script.addEventListener('load', () => {\n resolve();\n });\n\n // For Internet explorer 8 support\n script.onreadystatechange = function scriptOnReadyStateChange() {\n if (this.readyState === 'complete' || this.readyState === 'loaded') {\n resolve();\n }\n };\n\n const scriptLoadError = new Error('script_loading_error');\n\n script.addEventListener('error', () => {\n return reject(scriptLoadError);\n });\n\n if (timeout) {\n setTimeout(() => {\n return reject(new Error('script_loading_timed_out'));\n }, timeout);\n }\n\n for (const attr of Object.keys(attrs)) {\n script.setAttribute(attr, attrs[attr]);\n }\n\n script.setAttribute('src', src);\n\n const head = document.getElementsByTagName('head')[0];\n\n head.appendChild(script);\n });\n}\n\n\nexport function isNodeList(nodes : mixed) : boolean {\n\n const result = Object.prototype.toString.call(nodes);\n\n if (result === '[object HTMLCollection]' || result === '[object NodeList]') {\n return true;\n }\n\n return false;\n}\n\nexport function isElement(item : mixed) : boolean {\n return item instanceof HTMLElement;\n}\n\nexport function getElement(item : mixed) : ?HTMLElement {\n\n if (!item) {\n return;\n }\n\n if (item instanceof HTMLElement) {\n return item;\n }\n\n if (typeof item === 'string') {\n\n if (document.querySelector) {\n const result = document.querySelector(item);\n\n if (result) {\n return result;\n }\n }\n\n return document.getElementById(item);\n }\n}\n\nexport function getElements(collection : $ReadOnlyArray | NodeList | HTMLCollection | HTMLElement | string) : $ReadOnlyArray {\n\n if (!collection) {\n return [];\n }\n\n if (collection instanceof HTMLElement || typeof collection === 'string') {\n const element = getElement(collection);\n if (element) {\n return [ element ];\n }\n return [];\n }\n\n if (Array.isArray(collection) || collection instanceof NodeList || collection instanceof HTMLCollection) {\n const result = [];\n\n for (let i = 0; i < collection.length; i++) {\n const el = getElement(collection[i]);\n if (el) {\n result.push(el);\n }\n }\n\n return result;\n }\n\n return [];\n}\n\nexport function onDocumentReady(method : () => void) : ZalgoPromise {\n return documentReady.then(method);\n}\n\nexport const parseQuery = memoize((queryString : string) : Object => {\n\n const params = {};\n\n if (!queryString) {\n return params;\n }\n\n if (queryString.indexOf('=') === -1) {\n return params;\n }\n\n for (let pair of queryString.split('&')) {\n pair = pair.split('=');\n\n if (pair[0] && pair[1]) {\n params[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n }\n\n return params;\n});\n\n\nexport function getQueryParam(name : string) : string {\n return parseQuery(window.location.search.slice(1))[name];\n}\n\nexport function urlWillRedirectPage(url : string) : boolean {\n\n if (url.indexOf('#') === -1) {\n return true;\n }\n\n if (url.indexOf('#') === 0) {\n return false;\n }\n\n if (url.split('#')[0] === window.location.href.split('#')[0]) {\n return false;\n }\n\n return true;\n}\n\nexport function extendUrl(url : string, params : { [key : string] : string } = {}) : string {\n\n const hasHash = url.indexOf('#') > 0;\n\n let [ serverUrl, hash ] = url.split('#');\n\n if (hash && !serverUrl) {\n [ serverUrl, hash ] = [ `#${ hash }`, '' ];\n }\n\n const [ originalUrl, originalQueryString ] = serverUrl.split('?');\n\n if (originalQueryString) {\n const originalQuery = parseQuery(originalQueryString);\n\n for (const key in originalQuery) {\n if (!params.hasOwnProperty(key)) {\n params[key] = originalQuery[key];\n }\n }\n }\n\n const newQueryString = Object.keys(params).filter(key => key && params[key]).sort().map(key => {\n return `${ encodeURIComponent(key) }=${ encodeURIComponent(params[key]) }`;\n }).join('&');\n\n let newUrl = originalUrl;\n\n if (newQueryString) {\n newUrl = `${ newUrl }?${ newQueryString }`;\n }\n\n if (hasHash) {\n newUrl = `${ newUrl }#${ hash || '' }`;\n }\n\n return newUrl;\n}\n\nexport function redirect(win : CrossDomainWindowType = window, url : string) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n\n info(`redirect`, { url });\n\n setTimeout(() => {\n win.location = url;\n if (!urlWillRedirectPage(url)) {\n resolve();\n }\n }, 1);\n });\n}\n\nexport function hasMetaViewPort() : boolean {\n const meta = document.querySelector('meta[name=viewport]');\n\n if (isDevice() && window.screen.width < 660 && !meta) {\n return false;\n }\n\n return true;\n}\n\nexport function getBrowserLocales() : $ReadOnlyArray {\n const nav = window.navigator;\n\n const locales = nav.languages\n ? Array.prototype.slice.apply(nav.languages)\n : [];\n\n if (nav.language) {\n locales.push(nav.language);\n }\n\n if (nav.userLanguage) {\n locales.push(nav.userLanguage);\n }\n\n return locales;\n}\n\nexport function normalizeLocale(locale : string) : ?LocaleType {\n\n if (locale && locale.match(/^[a-z]{2}[-_][A-Z]{2}$/)) {\n const [ lang, country ] = locale.split(/[-_]/);\n if (LOCALE[country] && LOCALE[country].indexOf(lang) !== -1) {\n return { country, lang };\n }\n }\n}\n\nexport function normalizeLang(lang : string) : ?LocaleType {\n\n if (lang && lang.match(/^[a-z]{2}$/)) {\n if (LANG_TO_DEFAULT_COUNTRY[lang]) {\n return { country: LANG_TO_DEFAULT_COUNTRY[lang], lang };\n }\n }\n}\n\nexport const getBrowserLocale = memoize(() : LocaleType => {\n\n const locales = getBrowserLocales();\n\n for (const locale of locales) {\n let loc = normalizeLocale(locale);\n if (loc) {\n info('better_browser_locale_full');\n return loc;\n }\n\n loc = normalizeLang(locale);\n if (loc) {\n info('better_browser_locale_lang');\n return loc;\n }\n }\n\n return config.defaultLocale;\n});\n\nexport function isElementVisible(el : HTMLElement) : boolean {\n return Boolean(el.offsetWidth || el.offsetHeight || el.getClientRects().length);\n}\n\nexport const enablePerformance = memoize(() : boolean => {\n /* eslint-disable compat/compat */\n return Boolean(\n window.performance &&\n performance.now &&\n performance.timing &&\n performance.timing.connectEnd &&\n performance.timing.navigationStart &&\n (Math.abs(performance.now() - Date.now()) > 1000) &&\n (performance.now() - (performance.timing.connectEnd - performance.timing.navigationStart)) > 0\n );\n /* eslint-enable compat/compat */\n});\n\nexport function getPageRenderTime() : ZalgoPromise {\n return documentReady.then(() => {\n\n if (!enablePerformance()) {\n return;\n }\n\n const timing = window.performance.timing; // eslint-disable-line compat/compat\n\n if (timing.connectEnd && timing.domInteractive) {\n return timing.domInteractive - timing.connectEnd;\n }\n });\n}\n\nexport function getResourceLoadTime(url : string) : ?number {\n\n if (!enablePerformance()) {\n return;\n }\n\n if (!window.performance || typeof window.performance.getEntries !== 'function') { // eslint-disable-line compat/compat\n return;\n }\n\n const entries = window.performance.getEntries(); // eslint-disable-line compat/compat\n\n for (let i = 0; i < entries.length; i++) {\n const entry = entries[i];\n\n if (entry && entry.name === url && entry.duration && entry.duration >= 0 && entry.duration <= 60000) {\n return Math.floor(entry.duration);\n }\n }\n}\n\nexport function htmlEncode(html : string = '') : string {\n return html.toString()\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(/\\//g, '/');\n}\n","/* @flow */\n\nimport { getParent, isSameDomain } from 'cross-domain-utils/src';\n\nimport { config } from '../config';\n\nimport { supportsPopups } from './device';\n\nexport function allowIframe() : boolean {\n\n if (!supportsPopups()) {\n return true;\n }\n\n const parentWindow = getParent(window);\n if (parentWindow && isSameDomain(parentWindow)) {\n return true;\n }\n\n const parentComponentWindow = window.xchild && window.xchild.getParentComponentWindow();\n if (parentComponentWindow && isSameDomain(parentComponentWindow)) {\n return true;\n }\n\n if (__TEST__) {\n return true;\n }\n\n return false;\n}\n\n\nexport function isPayPalDomain() : boolean {\n return Boolean(`${ window.location.protocol }//${ window.location.host }`.match(config.paypal_domain_regex)) || window.mockDomain === 'mock://www.paypal.com';\n}\n","/* @flow */\n\nimport { config } from '../config';\n\nimport { uniqueID, isLocalStorageEnabled } from './util';\nimport { getQueryParam } from './dom';\nimport { isPayPalDomain } from './security';\n\nconst LOCAL_STORAGE_KEY = '__paypal_storage__';\nconst SESSION_KEY = '__paypal_session__';\nconst GLOBAL_KEY = '__paypal_global__';\n\nlet accessedStorage;\n\nexport function getStorageState(handler : (storage : Object) => T) : T {\n\n const localStorageEnabled = isLocalStorageEnabled();\n let storage;\n\n if (accessedStorage) {\n storage = accessedStorage;\n }\n\n if (!storage && localStorageEnabled) {\n const rawStorage = window.localStorage.getItem(LOCAL_STORAGE_KEY);\n\n if (rawStorage) {\n storage = JSON.parse(rawStorage);\n }\n }\n\n if (!storage) {\n storage = window[LOCAL_STORAGE_KEY];\n }\n\n if (!storage) {\n storage = {\n id: uniqueID()\n };\n }\n\n if (!storage.id) {\n storage.id = uniqueID();\n }\n\n accessedStorage = storage;\n\n const result = handler(storage);\n\n if (localStorageEnabled) {\n window.localStorage.setItem(LOCAL_STORAGE_KEY, JSON.stringify(storage));\n } else {\n window[LOCAL_STORAGE_KEY] = storage;\n }\n\n accessedStorage = null;\n\n return result;\n}\n\nexport function getStorageID() : string {\n return getStorageState(storage => storage.id);\n}\n\nexport function getSession(handler : (state : Object) => T) : T {\n return getStorageState(storage => {\n\n let session = storage[SESSION_KEY];\n const now = Date.now();\n\n if (session && ((now - session.created) > config.session_uid_lifetime)) {\n session = null;\n }\n\n if (!session) {\n session = {\n guid: uniqueID(),\n created: now\n };\n }\n\n storage[SESSION_KEY] = session;\n\n return handler(session);\n });\n}\n\nexport function getSessionState(handler : (state : Object) => T) : T {\n return getSession(session => {\n session.state = session.state || {};\n return handler(session.state);\n });\n}\n\nexport function getSessionID() : string {\n\n const xprops = window.xprops;\n\n if (xprops && xprops.sessionID) {\n return xprops.sessionID;\n }\n\n const querySessionID = getQueryParam('sessionID');\n\n if (isPayPalDomain() && querySessionID) {\n return querySessionID;\n }\n\n return getSession(session => session.guid);\n}\n\nexport function getButtonSessionID() : ?string {\n\n if (window.xprops && window.xprops.buttonSessionID) {\n return window.xprops.buttonSessionID;\n }\n\n const querySessionID = getQueryParam('buttonSessionID');\n\n if (isPayPalDomain() && querySessionID) {\n return querySessionID;\n }\n}\n\nexport function getGlobalState(handler : (state : Object) => T) : T {\n window[GLOBAL_KEY] = window[GLOBAL_KEY] || {};\n return handler(window[GLOBAL_KEY]);\n}\n","/* @flow */\n\nimport { on, send } from 'post-robot/src';\nimport { isWindowClosed, getDomain, isSameDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { config } from '../config';\n\nimport { noop } from './util';\n\nexport function proxyMethod(name : string, win : ?CrossDomainWindowType, originalMethod : Function) : Function {\n\n if (win && getDomain() === config.paypalDomain && !isSameDomain(win)) {\n\n if (win) {\n send(win, `proxy_${ name }`, { originalMethod }).catch(noop);\n }\n\n return originalMethod;\n }\n\n let methods = [];\n\n on(`proxy_${ name }`, { domain: config.paypal_domain_regex }, ({ data }) => {\n methods.push(data.originalMethod);\n });\n\n return function postMessageProxy() : mixed {\n\n methods = methods.filter(method => !isWindowClosed(method.source));\n\n if (methods.length) {\n return methods[methods.length - 1].apply(this, arguments).catch(() => {\n return originalMethod.apply(this, arguments);\n });\n }\n\n return originalMethod.apply(this, arguments);\n };\n}\n","/* @flow */\n\nimport { CONFIG as POSTROBOT_CONFIG } from 'post-robot/src';\nimport { setTransport, getTransport, addPayloadBuilder, addHeaderBuilder, addMetaBuilder,\n addTrackingBuilder, init, logLevels, config as loggerConfig } from 'beaver-logger/client';\nimport { getParent, PROTOCOL } from 'cross-domain-utils/src';\n\nimport { config } from '../config';\nimport { FPTI, PAYMENT_TYPE } from '../constants';\n\nimport { getSessionID, getButtonSessionID } from './session';\nimport { proxyMethod } from './proxy';\nimport { once } from './util';\nimport { getQueryParam } from './dom';\nimport { isPayPalDomain } from './security';\n\nfunction getRefererDomain() : string {\n return (window.xchild && window.xchild.getParentDomain)\n ? window.xchild.getParentDomain()\n : window.location.host;\n}\n\nconst setupProxyLogTransport = once(() => {\n setTransport(proxyMethod('log', getParent(window), getTransport()));\n});\n\nfunction getToken() : ?string {\n if (window.root && window.root.token) {\n return window.root.token;\n }\n\n if (isPayPalDomain()) {\n const queryToken = getQueryParam('token');\n\n if (queryToken) {\n return queryToken;\n }\n }\n}\n\nexport function initLogger() {\n\n setupProxyLogTransport();\n\n addPayloadBuilder(() => {\n return {\n referer: getRefererDomain(),\n host: window.location.host,\n path: window.location.pathname,\n env: config.env,\n country: config.locale.country,\n lang: config.locale.lang,\n uid: getSessionID(),\n ver: __PAYPAL_CHECKOUT__.__MINOR_VERSION__\n };\n });\n\n addHeaderBuilder(() => {\n return {\n 'x-app-name': 'checkoutjs'\n };\n });\n\n addMetaBuilder(() => {\n return {\n state: config.state\n };\n });\n\n addTrackingBuilder((payload = {}) => {\n\n const sessionID = getSessionID();\n const paymentToken = getToken();\n const buttonSessionID = payload[FPTI.KEY.BUTTON_SESSION_UID] || getButtonSessionID();\n\n let contextType;\n let contextID;\n\n if (paymentToken) {\n contextType = FPTI.CONTEXT_TYPE[PAYMENT_TYPE.EC_TOKEN];\n contextID = paymentToken;\n } else if (buttonSessionID) {\n contextType = FPTI.CONTEXT_TYPE.BUTTON_SESSION_ID;\n contextID = buttonSessionID;\n } else {\n contextType = payload[FPTI.KEY.CONTEXT_TYPE];\n contextID = payload[FPTI.KEY.CONTEXT_ID];\n }\n\n return {\n [ FPTI.KEY.FEED ]: FPTI.FEED.CHECKOUTJS,\n [ FPTI.KEY.DATA_SOURCE ]: FPTI.DATA_SOURCE.CHECKOUT,\n [ FPTI.KEY.CONTEXT_TYPE ]: contextType,\n [ FPTI.KEY.CONTEXT_ID ]: contextID,\n [ FPTI.KEY.SELLER_ID ]: config.merchantID,\n [ FPTI.KEY.SESSION_UID ]: sessionID,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: buttonSessionID,\n [ FPTI.KEY.VERSION ]: config.version,\n [ FPTI.KEY.TOKEN ]: paymentToken,\n [ FPTI.KEY.REFERER ]: getRefererDomain()\n };\n });\n\n const prefix = 'ppxo';\n\n if (window.location.protocol !== PROTOCOL.FILE) {\n init({\n uri: config.loggerUrl,\n heartbeat: false,\n logPerformance: false,\n prefix,\n logLevel: __PAYPAL_CHECKOUT__.__DEFAULT_LOG_LEVEL__\n });\n }\n}\n\nexport function setLogLevel(logLevel : string) {\n\n if (logLevels.indexOf(logLevel) === -1) {\n throw new Error(`Invalid logLevel: ${ logLevel }`);\n }\n\n config.logLevel = logLevel;\n loggerConfig.logLevel = logLevel;\n POSTROBOT_CONFIG.LOG_LEVEL = logLevel;\n window.LOG_LEVEL = logLevel;\n}\n","/* @flow */\n\nimport { info, flush as flushLogs } from 'beaver-logger/client';\n\nimport { config } from '../config';\n\nimport { isIEIntranet, getUserAgent } from './device';\nimport { once } from './util';\n\nconst bowserCache = {};\n\nfunction getBowser() : Object {\n\n const userAgent = getUserAgent();\n\n if (bowserCache[userAgent]) {\n return bowserCache[userAgent];\n }\n\n delete require.cache[require.resolve('bowser/bowser.min')];\n const bowser = require('bowser/bowser.min');\n\n bowserCache[userAgent] = bowser;\n\n return bowser;\n}\n\nexport function getBrowser() : { browser? : string, version? : string } {\n\n const bowser = getBowser();\n\n for (const browser of Object.keys(config.SUPPORTED_BROWSERS)) {\n if (bowser[browser]) {\n return { browser, version: bowser.version };\n }\n }\n\n return {};\n}\n\nfunction isBrowserEligible() : boolean {\n\n if (isIEIntranet()) {\n return false;\n }\n\n const bowser = getBowser();\n const { browser, version } = getBrowser();\n\n if (browser && version && bowser.compareVersions([ version, config.SUPPORTED_BROWSERS[browser] ]) === -1) {\n return false;\n }\n\n return true;\n}\n\nconst eligibilityResults = {};\n\nexport function isEligible() : boolean {\n\n if (isIEIntranet()) {\n return false;\n }\n\n const userAgent = window.navigator.userAgent;\n\n if (userAgent && eligibilityResults.hasOwnProperty(userAgent)) {\n return eligibilityResults[userAgent];\n }\n\n const result = isBrowserEligible();\n\n eligibilityResults[userAgent] = result;\n\n return result;\n}\n\nexport const checkRecognizedBrowser = once((state : string) => {\n\n const { browser } = getBrowser();\n\n if (!browser) {\n const { name, version, mobile, android, ios } = getBowser();\n info(`unrecognized_browser_${ state }`, { name, version, mobile, android, ios });\n flushLogs();\n }\n});\n","/* @flow */\n\nimport { warn } from 'beaver-logger/client';\n\nimport { isIE, isIEIntranet, isIECompHeader } from './device';\n\nfunction logWarn(err) : void {\n if (window.console) {\n if (window.console.warn) {\n return window.console.warn(err);\n }\n\n if (window.console.log) {\n return window.console.log(err);\n }\n }\n}\n\nexport function checkForCommonErrors() {\n\n if (JSON.stringify([]) !== '[]') {\n // $FlowFixMe\n if (Array.prototype.toJSON) {\n logWarn(`Custom Array.prototype.toJSON is causing incorrect json serialization of arrays. This is likely to cause issues. Probable cause is Prototype.js`);\n } else {\n logWarn(`JSON.stringify is doing incorrect serialization of arrays. This is likely to cause issues.`);\n }\n\n warn(`json_stringify_array_broken`);\n }\n\n if (JSON.stringify({}) !== '{}') {\n logWarn(`JSON.stringify is doing incorrect serialization of objects. This is likely to cause issues.`);\n\n warn(`json_stringify_object_broken`);\n }\n\n if (isIEIntranet()) {\n warn(`ie_intranet_mode`);\n }\n\n if (isIE() && !isIECompHeader()) {\n warn(`ie_meta_compatibility_header_missing`, {\n message: `Drop tag: ` });\n }\n\n // eslint-disable-next-line no-unused-vars\n function foo(bar, baz, zomg) {\n // pass;\n }\n\n if (foo.bind({ a: 1 }).length !== 3) {\n warn(`function_bind_arrity_overwritten`);\n }\n\n if (window.opener && window.parent !== window) {\n warn(`window_has_opener_and_parent`);\n }\n\n if (window.name && window.name.indexOf('__prerender') === 0) {\n warn(`prerender_running_checkoutjs`);\n }\n\n const context = {};\n\n function returnContext() : typeof context {\n return this;\n }\n\n if (returnContext.bind(context)() !== context) {\n warn(`function_bind_broken`);\n }\n\n if (window.Window && window.constructor && window.Window !== window.constructor) {\n warn(`window_constructor_does_not_match_window`);\n }\n\n // $FlowFixMe\n if (Object.assign && JSON.stringify({ a: 1, b: 2, c: 3 }) !== JSON.stringify({ a: 1, b: 2, c: 3 })) { // eslint-disable-line no-self-compare, compat/compat\n warn(`object_assign_broken`);\n }\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { addPayloadBuilder } from 'beaver-logger/client';\nimport { type SameDomainWindowType } from 'cross-domain-utils/src';\n\ntype RequestOptionsType = {|\n url : string,\n method? : string,\n headers? : { [key : string] : string },\n json? : Object,\n data? : { [key : string] : string },\n body? : string,\n win? : SameDomainWindowType,\n timeout? : number\n|};\n\nconst HEADERS = {\n CONTENT_TYPE: 'content-type',\n ACCEPT: 'accept'\n};\n\nconst headerBuilders = [];\nconst corrids = [];\n\naddPayloadBuilder(() => {\n return {\n prev_corr_ids: corrids.join(',')\n };\n});\n\nfunction parseHeaders(rawHeaders : string = '') : { [string] : string } {\n const result = {};\n for (const line of rawHeaders.trim().split('\\n')) {\n const [ key, ...values ] = line.split(':');\n result[key.toLowerCase()] = values.join(':').trim();\n }\n return result;\n}\n\nexport function request({ url, method = 'get', headers = {}, json, data, body, win = window, timeout = 0 } : RequestOptionsType) : ZalgoPromise {\n\n if (url === '/demo/checkout/api/braintree/client-token/') {\n // $FlowFixMe\n return ZalgoPromise.resolve('eyJ2ZXJzaW9uIjoyLCJhdXRob3JpemF0aW9uRmluZ2VycHJpbnQiOiJjMDFhZmRkM2Y1OTJmNWVhNTNlMzE5MWQwYmIyMWVjYjM5NzNlZGM1MzkwNDZiMjJmNTA2ODEyNzIzZmRlMTJifGNsaWVudF9pZD1jbGllbnRfaWQkc2FuZGJveCQ0ZHByYmZjNnBoNTk1Y2NqXHUwMDI2Y3JlYXRlZF9hdD0yMDE3LTA0LTI2VDIzOjI2OjU5Ljg3OTA3ODYwNiswMDAwXHUwMDI2bWVyY2hhbnRfaWQ9M3cydHR2d2QyNDY1NDhoZCIsImNvbmZpZ1VybCI6Imh0dHBzOi8vYXBpLnNhbmRib3guYnJhaW50cmVlZ2F0ZXdheS5jb206NDQzL21lcmNoYW50cy8zdzJ0dHZ3ZDI0NjU0OGhkL2NsaWVudF9hcGkvdjEvY29uZmlndXJhdGlvbiIsImNoYWxsZW5nZXMiOltdLCJlbnZpcm9ubWVudCI6InNhbmRib3giLCJjbGllbnRBcGlVcmwiOiJodHRwczovL2FwaS5zYW5kYm94LmJyYWludHJlZWdhdGV3YXkuY29tOjQ0My9tZXJjaGFudHMvM3cydHR2d2QyNDY1NDhoZC9jbGllbnRfYXBpIiwiYXNzZXRzVXJsIjoiaHR0cHM6Ly9hc3NldHMuYnJhaW50cmVlZ2F0ZXdheS5jb20iLCJhdXRoVXJsIjoiaHR0cHM6Ly9hdXRoLnZlbm1vLnNhbmRib3guYnJhaW50cmVlZ2F0ZXdheS5jb20iLCJhbmFseXRpY3MiOnsidXJsIjoiaHR0cHM6Ly9jbGllbnQtYW5hbHl0aWNzLnNhbmRib3guYnJhaW50cmVlZ2F0ZXdheS5jb20vM3cydHR2d2QyNDY1NDhoZCJ9LCJ0aHJlZURTZWN1cmVFbmFibGVkIjpmYWxzZSwicGF5cGFsRW5hYmxlZCI6dHJ1ZSwicGF5cGFsIjp7ImRpc3BsYXlOYW1lIjoiYmFyY28uMDMtZmFjaWxpdGF0b3JAZ21haWwuY29tIiwiY2xpZW50SWQiOiJBV3VZdnFnMGtaN2Y5S0V4TVpqZU53T3RjQV8yZVhnOWpMZy1QSnBGX0pnYk44M0YyVml5aEdnV2JCNDg4RGU3MFpucGRBZEI2TUNqekNqSyIsInByaXZhY3lVcmwiOiJodHRwczovL2V4YW1wbGUuY29tIiwidXNlckFncmVlbWVudFVybCI6Imh0dHBzOi8vZXhhbXBsZS5jb20iLCJiYXNlVXJsIjoiaHR0cHM6Ly9hc3NldHMuYnJhaW50cmVlZ2F0ZXdheS5jb20iLCJhc3NldHNVcmwiOiJodHRwczovL2NoZWNrb3V0LnBheXBhbC5jb20iLCJkaXJlY3RCYXNlVXJsIjpudWxsLCJhbGxvd0h0dHAiOnRydWUsImVudmlyb25tZW50Tm9OZXR3b3JrIjpmYWxzZSwiZW52aXJvbm1lbnQiOiJvZmZsaW5lIiwidW52ZXR0ZWRNZXJjaGFudCI6ZmFsc2UsImJyYWludHJlZUNsaWVudElkIjoibWFzdGVyY2xpZW50MyIsImJpbGxpbmdBZ3JlZW1lbnRzRW5hYmxlZCI6dHJ1ZSwibWVyY2hhbnRBY2NvdW50SWQiOiJVU0QiLCJjdXJyZW5jeUlzb0NvZGUiOiJVU0QifSwiY29pbmJhc2VFbmFibGVkIjpmYWxzZSwibWVyY2hhbnRJZCI6IjN3MnR0dndkMjQ2NTQ4aGQiLCJ2ZW5tbyI6Im9mZiJ9');\n }\n\n return new ZalgoPromise((resolve, reject) => {\n\n if ((json && data) || (json && body) || (data && json)) {\n throw new Error(`Only options.json or options.data or options.body should be passed`);\n }\n\n const normalizedHeaders = {};\n\n for (const key of Object.keys(headers)) {\n normalizedHeaders[key.toLowerCase()] = headers[key];\n }\n\n if (json) {\n normalizedHeaders[HEADERS.CONTENT_TYPE] = normalizedHeaders[HEADERS.CONTENT_TYPE] || 'application/json';\n } else if (data || body) {\n normalizedHeaders[HEADERS.CONTENT_TYPE] = normalizedHeaders[HEADERS.CONTENT_TYPE] || 'application/x-www-form-urlencoded; charset=utf-8';\n }\n\n normalizedHeaders[HEADERS.ACCEPT] = normalizedHeaders[HEADERS.ACCEPT] || 'application/json';\n\n for (const headerBuilder of headerBuilders) {\n const builtHeaders = headerBuilder();\n\n for (const key of Object.keys(builtHeaders)) {\n normalizedHeaders[key.toLowerCase()] = builtHeaders[key];\n }\n }\n\n const xhr = new win.XMLHttpRequest();\n\n xhr.addEventListener('load', function xhrLoad() : void {\n\n const responseHeaders = parseHeaders(this.getAllResponseHeaders());\n const corrID = responseHeaders['paypal-debug-id'] || 'unknown';\n\n if (responseHeaders['paypal-debug-id']) {\n corrids.push(responseHeaders['paypal-debug-id']);\n }\n\n if (!this.status) {\n return reject(new Error(`Request to ${ method.toLowerCase() } ${ url } failed: no response status code. Correlation id: ${ corrID }`));\n }\n \n const contentType = responseHeaders['content-type'];\n const isJSON = contentType && (contentType.indexOf('application/json') === 0 || contentType.indexOf('text/json') === 0);\n let res = this.responseText;\n\n try {\n res = JSON.parse(this.responseText);\n } catch (err) {\n if (isJSON) {\n return reject(new Error(`Invalid json: ${ this.responseText }. Correlation id: ${ corrID }`));\n }\n }\n\n if (this.status >= 400) {\n let message = `Request to ${ method.toLowerCase() } ${ url } failed with ${ this.status } error. Correlation id: ${ corrID }`;\n\n if (res) {\n if (typeof res === 'object' && res !== null) {\n res = JSON.stringify(res, null, 4);\n }\n\n message = `${ message }\\n\\n${ res }\\n`;\n }\n\n return reject(new Error(message));\n }\n\n return resolve(res);\n\n }, false);\n\n xhr.addEventListener('error', function xhrError(evt) {\n const corrID = this.getResponseHeader('paypal-debug-id');\n reject(new Error(`Request to ${ method.toLowerCase() } ${ url } failed: ${ evt.toString() }. Correlation id: ${ corrID }`));\n }, false);\n\n xhr.open(method, url, true);\n\n for (const key in normalizedHeaders) {\n if (normalizedHeaders.hasOwnProperty(key)) {\n xhr.setRequestHeader(key, normalizedHeaders[key]);\n }\n }\n\n if (json) {\n body = JSON.stringify(json);\n } else if (data) {\n body = Object.keys(data).map(key => {\n return `${ encodeURIComponent(key) }=${ data ? encodeURIComponent(data[key]) : '' }`;\n }).join('&');\n }\n\n xhr.timeout = timeout;\n xhr.ontimeout = function xhrTimeout() {\n reject(new Error(`Request to ${ method.toLowerCase() } ${ url } has timed out`));\n };\n\n xhr.send(body);\n });\n}\n\nrequest.get = (url : string, options = {}) => {\n return request({ method: 'get', url, ...options });\n};\n\nrequest.post = (url : string, data, options = {}) => {\n return request({ method: 'post', url, data, ...options });\n};\n\nrequest.addHeaderBuilder = (method) => {\n headerBuilders.push(method);\n};\n","/* @flow */\n\nimport { config } from '../config';\nimport { LOG_LEVEL } from '../constants';\n\nimport { getSessionID, getSessionState } from './session';\n\nconst BEACON_URL = config.loggerUrl;\nconst APP_NAME = 'checkoutjs';\n\nexport function beacon(event : string, payload : Object = {}) {\n try {\n\n payload.event = `ppxo_${ event }`;\n payload.version = __PAYPAL_CHECKOUT__.__MINOR_VERSION__;\n payload.host = window.location.host;\n payload.uid = getSessionID();\n payload.appName = APP_NAME;\n\n let query = [];\n\n for (const key in payload) {\n if (payload.hasOwnProperty(key)) {\n query.push(`${ encodeURIComponent(key) }=${ encodeURIComponent(payload[key]) }`);\n }\n }\n\n query = query.join('&');\n\n if (!__TEST__) {\n const beaconImage = new window.Image();\n beaconImage.src = `${ BEACON_URL }?${ query }`;\n }\n\n setTimeout(() => {\n if (config.logLevel === LOG_LEVEL.DEBUG) {\n if (window.console && window.console.log) {\n window.console.log('*', event, payload);\n }\n }\n }, 1);\n\n } catch (err) {\n // pass\n }\n}\n\nfunction isCheckpointUnique(name : string) : boolean {\n return getSessionState(state => {\n state.loggedBeacons = state.loggedBeacons || [];\n\n if (state.loggedBeacons.indexOf(name) === -1) {\n state.loggedBeacons.push(name);\n return true;\n }\n\n return false;\n });\n}\n\nexport function checkpoint(name : string, payload : Object = {}, options : Object = {}) : void {\n try {\n let checkpointName = name;\n\n if (options.version) {\n const version = __PAYPAL_CHECKOUT__.__MINOR_VERSION__.replace(/[^0-9]+/g, '_');\n checkpointName = `${ version }_${ checkpointName }`;\n }\n\n if (!isCheckpointUnique(checkpointName)) {\n return;\n }\n\n return beacon(checkpointName, payload);\n\n } catch (err) {\n\n // pass\n }\n}\n\n\nconst FPTI_URL = 'https://t.paypal.com/ts';\n\nfunction buildPayload() : Object {\n return {\n v: `checkout.js.${ __PAYPAL_CHECKOUT__.__MINOR_VERSION__ }`,\n t: Date.now(),\n g: new Date().getTimezoneOffset(),\n flnm: 'ec:hermes:',\n shir: 'main_ec_hermes_',\n pgrp: 'main:ec:hermes::incontext-merchant',\n page: 'main:ec:hermes::incontext-merchant',\n vers: 'member:hermes:',\n qual: 'incontext',\n tmpl: 'merchant:incontext'\n };\n}\n\nexport function fpti(payload : Object = {}) {\n\n let query = [];\n\n payload = { ...buildPayload(), ...payload };\n\n for (const key in payload) {\n if (payload.hasOwnProperty(key)) {\n query.push(`${ encodeURIComponent(key) }=${ encodeURIComponent(payload[key]) }`);\n }\n }\n\n query = query.join('&');\n\n try {\n const beaconImage = new window.Image();\n beaconImage.src = `${ FPTI_URL }?${ query }`;\n } catch (err) {\n // pass\n }\n}\n","/* @flow */\n\nimport { info, track, flush as flushLogs } from 'beaver-logger/client';\n\nimport { FPTI } from '../constants';\n\nimport { match } from './util';\nimport { getStorageState, getStorageID } from './session';\n\ntype Throttle = {|\n isEnabled : () => boolean,\n isDisabled : () => boolean,\n getTreatment : () => string,\n log : (string, payload? : { [string] : ?string }) => Throttle,\n logStart : (payload? : { [string] : ?string }) => Throttle,\n logComplete : (payload? : { [string] : ?string }) => Throttle\n|};\n\nfunction getThrottlePercentile(name : string) : number {\n return getStorageState(storage => {\n storage.throttlePercentiles = storage.throttlePercentiles || {};\n storage.throttlePercentiles[name] = storage.throttlePercentiles[name] || Math.floor(Math.random() * 100);\n return storage.throttlePercentiles[name];\n });\n}\n\nconst THROTTLE_GROUP = {\n TEST: 'test',\n CONTROL: 'control',\n THROTTLE: 'throttle'\n};\n\nexport function getThrottle(name : string, sample : number, sticky : boolean = true) : Throttle {\n\n const uid = getStorageID();\n\n const percentile = sticky ? getThrottlePercentile(name) : Math.floor(Math.random() * 100);\n\n let group;\n\n if (percentile < sample) {\n group = THROTTLE_GROUP.TEST;\n } else if ((sample >= 50) || ((sample <= percentile) && (percentile < (sample * 2)))) {\n group = THROTTLE_GROUP.CONTROL;\n } else {\n group = THROTTLE_GROUP.THROTTLE;\n }\n\n const treatment = `${ name }_${ group }`;\n\n let started = false;\n let forced = false;\n\n try {\n if (window.localStorage && window.localStorage.getItem(name)) {\n forced = true;\n }\n } catch (err) {\n // pass\n }\n\n return {\n\n isEnabled() : boolean {\n return (group === THROTTLE_GROUP.TEST) || forced;\n },\n\n isDisabled() : boolean {\n return (group !== THROTTLE_GROUP.TEST) && !forced;\n },\n\n getTreatment() : string {\n return treatment;\n },\n\n log(checkpointName : string, payload? : { [string] : ?string } = {}) : Throttle {\n if (!started) {\n return this;\n }\n\n const checkpoint = `${ name }_${ treatment }_${ checkpointName }`;\n info(checkpoint, { ...payload, expuid: uid });\n\n track({\n [ FPTI.KEY.EXPERIMENT_NAME ]: name,\n [ FPTI.KEY.TREATMENT_NAME ]: treatment,\n ...payload\n });\n\n flushLogs();\n return this;\n },\n\n logStart(payload? : { [string] : ?string } = {}) : Throttle {\n started = true;\n return this.log(`start`, payload);\n },\n\n logComplete(payload? : { [string] : ?string } = {}) : Throttle {\n if (!started) {\n return this;\n }\n\n return this.log(`complete`, payload);\n }\n };\n}\n\nexport function getReturnToken() : ?string {\n\n const token = match(window.location.href, /token=((EC-)?[A-Z0-9]+)/);\n const payer = match(window.location.href, /PayerID=([A-Z0-9]+)/);\n\n if (token && payer) {\n return token;\n }\n}\n","/* @flow */\n\nexport function extendNamespace(xports : Object, namespaces : $ReadOnlyArray = [], childnamespaces : $ReadOnlyArray = []) : Object {\n\n for (const name of namespaces) {\n const namespace = window[name];\n\n if (!namespace) {\n continue;\n }\n\n for (const childname of childnamespaces) {\n let childnamespace = xports[childname];\n\n if (namespace[childname]) {\n childnamespace = { ...namespace[childname], ...childnamespace };\n }\n\n xports = { ...namespace, ...xports, [ childname ]: childnamespace };\n }\n }\n\n for (const name of namespaces) {\n window[name] = xports;\n }\n\n return xports;\n}\n","/* @flow */\n\nimport { debug } from 'beaver-logger/client';\nimport { getDomain } from 'cross-domain-utils/src';\n\nimport { config } from '../config';\n\nimport { memoize, domainMatches } from './util';\n\nexport const getCurrentScript = memoize(() : ?HTMLScriptElement => {\n\n const scripts = Array.prototype.slice.call(document.getElementsByTagName('script'));\n\n for (const script of scripts) {\n if (script.src && (script.src.replace(/^https?:/, '').split('?')[0] === config.scriptUrl || script.hasAttribute('data-paypal-checkout'))) {\n return script;\n }\n\n if (script.src && (script.src.indexOf('paypal.checkout.v4.js') !== -1)) {\n return script;\n }\n }\n\n if (document.currentScript) { // eslint-disable-line compat/compat\n debug(`current_script_not_recognized`, { src: document.currentScript.src }); // eslint-disable-line compat/compat\n }\n});\n\nexport function isPayPalObjects() : boolean {\n return Boolean(getCurrentScript());\n}\n\nexport function getScriptVersion() : string {\n if (__PAYPAL_CHECKOUT__.__MAJOR__ && isPayPalObjects()) {\n return __MIN__ ? 'min' : __PAYPAL_CHECKOUT__.__MAJOR_VERSION__;\n } else {\n return __MIN__ ? `${ __PAYPAL_CHECKOUT__.__MINOR_VERSION__ }.min` : __PAYPAL_CHECKOUT__.__MINOR_VERSION__;\n }\n}\n\nexport function getCurrentScriptUrl() : string {\n const script = getCurrentScript();\n\n if (script && typeof script.src === 'string') {\n let scriptUrl = script.src;\n\n if (scriptUrl.indexOf('http://www.paypalobjects.com') === 0) {\n scriptUrl = scriptUrl.replace('http://', 'https://');\n }\n\n return scriptUrl;\n }\n\n return `https://www.paypalobjects.com/api/checkout.${ __PAYPAL_CHECKOUT__.__MINOR_VERSION__ }${ __MIN__ ? '.min' : '' }.js`;\n}\n\nexport function getDomainSetting(name : string, def : ?T) : ?T {\n\n const hostname = window.xchild\n ? window.xchild.getParentDomain()\n : getDomain();\n\n if (config.domain_settings) {\n for (const domain of Object.keys(config.domain_settings)) {\n if (domainMatches(hostname, domain)) {\n return config.domain_settings[domain][name];\n }\n }\n }\n\n return def;\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { once, bridge } from 'post-robot/src';\n\nimport { config } from '../config';\n\nimport { isIEIntranet } from './device';\nimport { memoize } from './util';\nimport { getScriptVersion } from './script';\nimport { extendUrl } from './dom';\n\ntype FrameMetaData = {|\n iframeEligible : boolean,\n iframeEligibleReason : string,\n // eslint-disable-next-line flowtype/no-mutable-array\n rememberedFunding : Array\n|};\n\nexport const openMetaFrame = memoize((env : string = config.env) : ZalgoPromise => {\n return ZalgoPromise.try(() => {\n\n if (isIEIntranet()) {\n return {\n iframeEligible: false,\n iframeEligibleReason: 'ie_intranet',\n rememberedFunding: []\n };\n }\n\n const metaFrameUrl : string = config.metaFrameUrls[env];\n const metaFrameDomain : string = config.paypalDomains[env];\n\n return ZalgoPromise.try(() => {\n if (!bridge) {\n throw new Error(`Opening meta window without bridge support is not currently supported`);\n }\n\n const metaListener = once('meta', { domain: metaFrameDomain });\n\n return bridge.openBridge(extendUrl(metaFrameUrl, { version: getScriptVersion() }), metaFrameDomain)\n .then(() => metaListener)\n .then(({ data }) => data);\n });\n });\n});\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { FUNDING } from '../constants';\nimport type { FundingSource, FundingList } from '../types';\n\nimport { getStorageState, getGlobalState, getSessionState } from './session';\nimport { isDevice } from './device';\nimport { openMetaFrame } from './meta';\nimport { identity } from './util';\n\n// $FlowFixMe\nexport function getRememberedFunding(handler? : (rememberedFunding : FundingList) => T = identity) : T {\n return getStorageState(storage => {\n storage.rememberedFunding = storage.rememberedFunding || [];\n return handler(storage.rememberedFunding);\n });\n}\n\nfunction hasRememberedFunding(source : FundingSource) : ?boolean {\n\n if (getRememberedFunding(rememberedFunding => rememberedFunding.indexOf(source) !== -1)) {\n return true;\n }\n\n if (getSessionState(session => session.recentlyCheckedRemembered)) {\n return true;\n }\n\n return false;\n}\n\n\nfunction isRememberedFunding(source : FundingSource) : boolean {\n\n if (getRememberedFunding(rememberedFunding => rememberedFunding.indexOf(source) !== -1)) {\n return true;\n }\n\n if (getSessionState(session => session.recentlyCheckedRemembered)) {\n return false;\n }\n\n throw new Error(`Can not find remembered funding result`);\n}\n\nfunction getRememberedFundingPromises() : { [FundingSource] : ZalgoPromise } {\n return getGlobalState(global => {\n global.rememberFundingPromises = global.rememberFundingPromises || {};\n return global.rememberFundingPromises;\n });\n}\n\nfunction getRememberedFundingPromise(source : FundingSource) : ZalgoPromise {\n const promises = getRememberedFundingPromises();\n const promise = promises[source] = promises[source] || new ZalgoPromise();\n if (hasRememberedFunding(source)) {\n promise.resolve(isRememberedFunding(source));\n }\n return promise;\n}\n\nfunction flushRememberedFundingPromises() {\n const promises = getRememberedFundingPromises();\n const rememberedFunding = getRememberedFunding(sources => sources);\n\n for (const source of Object.keys(promises)) {\n promises[source].resolve(rememberedFunding.indexOf(source) !== -1);\n }\n}\n\nexport function rememberFunding(sources : FundingList) {\n getRememberedFunding(rememberedFunding => {\n for (const source of sources) {\n\n if (source === FUNDING.VENMO && !isDevice()) {\n continue;\n }\n if (rememberedFunding.indexOf(source) === -1) {\n rememberedFunding.push(source);\n }\n }\n\n flushRememberedFundingPromises();\n });\n\n getSessionState(session => {\n session.recentlyCheckedRemembered = true;\n });\n}\n\nfunction loadMeta() : ZalgoPromise {\n return openMetaFrame().then(({ rememberedFunding }) => {\n rememberFunding(rememberedFunding || []);\n });\n}\n\nexport function isFundingRemembered(source : FundingSource = FUNDING.PAYPAL) : ZalgoPromise {\n\n if (hasRememberedFunding(source)) {\n return getRememberedFundingPromise(source);\n }\n\n return loadMeta().then(() => {\n return getRememberedFundingPromise(source);\n });\n}\n\nexport function precacheRememberedFunding() : ZalgoPromise {\n if (!getSessionState(session => session.recentlyCheckedRemembered)) {\n return loadMeta();\n }\n return ZalgoPromise.resolve();\n}\n","/* @flow */\n\nexport * from './device';\nexport * from './util';\nexport * from './logger';\nexport * from './eligibility';\nexport * from './errors';\nexport * from './dom';\nexport * from './http';\nexport * from './beacon';\nexport * from './throttle';\nexport * from './namespace';\nexport * from './session';\nexport * from './proxy';\nexport * from './meta';\nexport * from './funding';\nexport * from './script';\nexport * from './jsx';\nexport * from './security';\n","/* @flow weak */\n/* eslint max-lines: 0 */\n\nimport { ENV, COUNTRY, LANG, LOCALE } from '../constants';\n\nfunction getDefaultEnv() : $Values {\n if (__TEST__) {\n return ENV.TEST;\n }\n\n if (typeof window === 'undefined' || typeof window.location === 'undefined') {\n return ENV.PRODUCTION;\n }\n\n if (window.location.host.indexOf('localhost.paypal.com') !== -1) {\n return ENV.LOCAL;\n }\n\n if (window.location.host.indexOf('qa.paypal.com') !== -1) {\n return ENV.STAGE;\n }\n\n if (window.location.host.indexOf('sandbox.paypal.com') !== -1) {\n return ENV.SANDBOX;\n }\n\n return ENV.PRODUCTION;\n}\n\nexport const config = {\n\n locales: LOCALE,\n\n scriptUrl: __TEST__\n ? `//${ window.location.host }/base/src/load.js`\n : `//www.paypalobjects.com/api/${ __FILE_NAME__ }`,\n\n // eslint-disable-next-line security/detect-unsafe-regex, unicorn/no-unsafe-regex\n paypal_domain_regex: /^(https?|mock):\\/\\/[a-zA-Z0-9_.-]+\\.paypal\\.com(:\\d+)?$/,\n\n version: __PAYPAL_CHECKOUT__.__MINOR_VERSION__,\n\n cors: true,\n\n env: getDefaultEnv(),\n\n state: 'checkoutjs',\n\n locale: {\n country: COUNTRY.US,\n lang: LANG.EN\n },\n\n stage: 'msmaster',\n stageDomain: 'qa.paypal.com',\n\n get stageUrl() : string {\n return `${ config.stage }.${ config.stageDomain }`;\n },\n\n get apiStageUrl() : string {\n return `${ config.apiStage }.${ config.stageDomain }`;\n },\n\n get localhostUrl() : string {\n return `http://localhost.paypal.com:${ config.ports.default }`;\n },\n\n set localhostUrl(val) {\n delete this.localhostUrl;\n this.localhostUrl = val;\n },\n\n merchantID: '',\n authCode: '',\n\n logLevel: __PAYPAL_CHECKOUT__.__DEFAULT_LOG_LEVEL__,\n\n throttles: {\n v4_mobile_device: 0\n },\n\n domain_settings: {\n 'walmart.com': {\n ie_full_page: false,\n allow_full_page_fallback: true,\n memoize_payment: true,\n force_bridge: true,\n log_authorize: true\n },\n\n 'ulta.com': {\n disable_venmo: true\n },\n\n 'barnesandnoble.com': {\n disable_venmo: true\n },\n\n 'bn.com': {\n disable_venmo: true\n },\n\n 'agoratix.com': {\n disable_venmo: true\n },\n\n 'tractorsupply.com': {\n disable_venmo: true\n },\n\n 'etsy.com': {\n ie_full_page: false,\n allow_full_page_fallback: true,\n memoize_payment: true,\n force_bridge: true,\n log_authorize: true\n },\n\n 'ticketmaster.com': {\n disable_venmo: true\n },\n\n 'livenation.com': {\n disable_venmo: true\n },\n\n 'frontgatetickets.com': {\n disable_venmo: true\n },\n\n 'williams-sonoma.com': {\n disable_venmo: true\n },\n\n 'westelm.com': {\n disable_venmo: true\n },\n\n 'markandgraham.com': {\n disable_venmo: true\n },\n\n 'potterybarn.com': {\n disable_venmo: true\n },\n\n 'potterybarnkids.com': {\n disable_venmo: true\n },\n\n 'pbteen.com': {\n disable_venmo: true\n },\n\n 'beallsflorida.com': {\n disable_venmo: true\n },\n\n 'therealreal.com': {\n disable_venmo: true\n },\n\n 'liveaquaria.com': {\n disable_venmo: true\n },\n\n 'drsfostersmith.com': {\n disable_venmo: true\n },\n\n 'boxed.com': {\n disable_venmo: true\n },\n\n 'bevisible.com': {\n disable_venmo: true\n },\n\n 'moeller.org': {\n disable_venmo: true\n },\n\n 'searshometownstores.com': {\n disable_venmo: true\n },\n\n 'searshardwarestores.com': {\n disable_venmo: true\n },\n\n 'searshomeapplianceshowroom.com': {\n disable_venmo: true\n },\n\n 'barkshop.com': {\n disable_venmo: true\n },\n\n 'vividseats.com': {\n disable_venmo: true\n },\n\n 'getcargo.today': {\n disable_venmo: true\n },\n\n 'smartdestinations.com': {\n disable_venmo: true\n },\n\n 'philadelphiapass.com': {\n disable_venmo: true\n },\n\n 'thesydneypass.com': {\n disable_venmo: true\n },\n\n '3secondlash.com': {\n disable_venmo: true\n },\n\n 'newyorkpass.com': {\n disable_venmo: true\n },\n\n 'dndbeyond.com': {\n disable_venmo: true\n },\n\n 'app.zapbuy.it': {\n disable_venmo: true\n },\n\n 'gamersaloon.com': {\n disable_venmo: true\n },\n\n '1800contacts.com': {\n disable_venmo: true\n },\n\n 'shopchatters.ca': {\n disable_venmo: true\n },\n\n 'shopguyswin.ca': {\n disable_venmo: true\n },\n\n 'jjill.com': {\n disable_venmo: true\n },\n\n 'qvc.com': {\n disable_venmo: true\n },\n\n 'stelladot.com': {\n disable_venmo: true\n },\n\n 'keepcollective.com': {\n disable_venmo: true\n },\n\n 'everskin.com': {\n disable_venmo: true\n },\n\n 'zulily.com': {\n disable_venmo: true\n },\n\n 'freshly.com': {\n disable_venmo: true\n },\n\n 'buypeticare.com': {\n disable_venmo: true\n },\n\n 'getownzone.com': {\n disable_venmo: true\n },\n\n 'uncommongoods.com': {\n disable_venmo: true\n },\n\n 'onegold.com': {\n disable_venmo: true\n },\n\n 'universitytees.com': {\n disable_venmo: true\n },\n\n 'revolve.com': {\n disable_venmo: true\n },\n\n 'functionofbeauty.com': {\n disable_venmo: true\n },\n\n 'givebutter.com': {\n disable_venmo: true\n },\n\n 'hausmart.com': {\n disable_venmo: true\n },\n\n 'derbyjackpot.com': {\n disable_venmo: true\n },\n\n 'ancestry.com': {\n disable_venmo: true\n },\n\n 'boats.net': {\n disable_venmo: true\n },\n\n 'partzilla.com': {\n disable_venmo: true\n },\n\n 'firedog.com': {\n disable_venmo: true\n },\n\n 'chick-fil-a.com': {\n disable_venmo: true\n },\n\n 'roku.com': {\n disable_venmo: true\n },\n\n 'barkbox.com': {\n disable_venmo: true\n },\n\n 'neimanmarcus.com': {\n disable_venmo: true\n },\n\n 'lastcall.com': {\n disable_venmo: true\n },\n\n 'horchow.com': {\n disable_venmo: true\n },\n\n 'bergdorfgoodman.com': {\n disable_venmo: true\n },\n\n 'fwrd.com': {\n disable_venmo: true\n },\n\n 'plunderdesign.com': {\n disable_venmo: true\n },\n\n 'stitchfix.com': {\n disable_venmo: true\n },\n\n 'revzilla.com': {\n disable_venmo: true\n },\n\n 'cyclegear.com': {\n disable_venmo: true\n },\n\n 'chegg.com': {\n disable_venmo: true\n },\n\n 'youniqueproducts.com': {\n disable_venmo: true\n },\n\n 'archives.com': {\n disable_venmo: true\n },\n\n 'hautelook.com': {\n disable_venmo: true\n },\n\n 'nordstromrack.com': {\n disable_venmo: true\n },\n\n 'motherhoodcanada.ca': {\n disable_venmo: true\n },\n\n 'atomtickets.com': {\n disable_venmo: true\n },\n\n 'trademore.com': {\n disable_venmo: true\n },\n\n 'lasheaseoffer.com': {\n disable_venmo: true\n },\n\n 'rookie.paypalsixthman.com': {\n disable_venmo: true\n },\n\n '1800Contacts.com': {\n disable_venmo: true\n },\n\n 'hulu.com': {\n disable_venmo: true\n },\n\n 'grubhub.com': {\n disable_venmo: true\n },\n\n 'eat24.com': {\n disable_venmo: true\n },\n\n 'seamless.com': {\n disable_venmo: true\n },\n\n 'freshfeetscrubber.com': {\n disable_venmo: true\n },\n\n 'opensky.com': {\n disable_venmo: true\n },\n\n 'dotandbo.com': {\n disable_venmo: true\n },\n\n 'storenvy.com': {\n disable_venmo: true\n },\n\n 'gemafina.com': {\n disable_venmo: true\n },\n\n 'pickperfect.com': {\n disable_venmo: true\n },\n\n '55mulberry.com': {\n disable_venmo: true\n },\n \n 'hollar.com': {\n disable_venmo: true\n },\n\n 'bjs.com': {\n disable_venmo: true\n },\n\n 'playsugarhouse.com': {\n disable_venmo: true\n },\n\n 'lakeshorelearning.com': {\n disable_venmo: true\n },\n\n 'llmhq.com': {\n disable_venmo: true\n },\n\n 'gainful.com': {\n disable_venmo: true\n },\n\n 'modaoperandi.com': {\n disable_venmo: true\n },\n \n 'play.jackpocket.com': {\n disable_venmo: true\n },\n\n 'crepeerase.com': {\n disable_venmo: true\n },\n\n 'specificbeauty.com': {\n disable_venmo: true\n },\n\n 'meaningfulbeauty.com': {\n disable_venmo: true\n },\n\n 'smileactives.com ': {\n disable_venmo: true\n },\n\n 'mally.com': {\n disable_venmo: true\n },\n\n 'westmorebeauty.com': {\n disable_venmo: true\n },\n\n 'subd.com': {\n disable_venmo: true\n },\n\n 'seacalmskin.com': {\n disable_venmo: true\n },\n \n 'whittier.edu': {\n disable_venmo: true\n },\n \n 'curology.com': {\n disable_venmo: true\n },\n \n 'monoprice.com': {\n disable_venmo: true\n },\n \n 'dominos.com': {\n disable_venmo: true\n },\n \n 'audiobooks.com': {\n disable_venmo: true\n },\n \n '1aauto.com': {\n disable_venmo: true\n },\n\n 'greatwolf.com': {\n disable_venmo: true\n },\n\n 'cvs.com': {\n disable_venmo: true\n },\n\n 'gilt.com': {\n disable_venmo: true\n },\n\n 'ruelala.com': {\n disable_venmo: true\n }\n },\n\n creditTestDomains: [ 'bluesuncorp.co.uk', 'nationsphotolab.com', 'plexusworldwide.com', 'nshss.org', 'bissell.com', 'mobstub.com', 'vuoriclothing.com', 'tape4backup.com', 'avivamiento.com', 'rhododendron.org', 'whiterabbitjapan.com', 'atsracing.net', 'thehilltopgallery.com', 'weedtraqr.com', 'worldpantry.com', 'ciraconnect.com', 'mymalls.com', 'prowinch.com', 'zodiacpoolsystems.com', 'everlywell.com', 'candlewarmers.com', 'chop.edu', 'incruises.com', 'flikn.com', 'didforsale.com', 'mcc.org', 'sygu.net', 'merchbar.com', 'eduinconline.com', 'us.livebetterwith.com', 'bakemeawish.com', 'judolaunch.com', 'eventcartel.com', 'tapatalk.com', 'telescope.com', 'covenant.edu', 'aquatruwater.com', 'spingo.com', 'usu.edu', 'getcelerity.com', 'brandless.com', 'saberigniter.com', 'euromodeltrains.com', 'gofasttrader.com', 'megamodzplanet.com', 'draftanalyzer.com', 'lovewithoutboundaries.com', 'filterpop.com', 'seekverify.com', 'photoandgo.com', 'sightseeingpass.com', 'bigoanddukes.com', 'thethirstyduck.com', 'thebrushguys.com', '907delivery.com', 'mauisails.com', 'drive.net', 'channelmax.net', 'modernrebelco.com', 'enchanteddiamonds.com', 'ibabbleon.com', 'fullgenomes.com', 'conn-comp.com', 'wingware.com', 'paradigmgoods.com', 'theneptunegroup.com', 'kidzartworks.com', 'unirealm.com', 'ncfarmsinc.com', 'oneofakindantiques.com', 'servers4less.com', 'stumpthespread.com', 'marketwagon.com', 'monsterhouseplans.com', 'canterburychoral.org', 'teacupnordic.org', 'thethirstyduck.com', 'medialoot.com', 'theartistunion.com', 'yourglamourzone.com', 'breckstables.com', 'mackephotography.com', 'dsaj.org', 'massluminosity.com', 'tespa.org', 'versatilearts.net', 'yecup.org', 'divinebusinessmanagement.com', 'captivatebeautyservices.com', 'class4me.com', 'wcsonlineuniversity.com', 'pvplive.com', 'kyneteks.com', 'rare-paper.com', 'bpg.bpgsim.biz', 'geodegallery.com', 'way.com', 'kringle.com', 'talentedmrsalas.ph', 'litcharts.com', 'purpletreephotography.com', 'apache.org', 'neopackage.com', 'globaldance.tv', 'integral.studio', 'airdoctorpro.com', 'ivoryandiron.com', 'yuengling.com', 'averysbranchfarms.com', 'amberreinink.com', 'skinnymechocolate.com', 'bmbl.net', 'ncwatercolor.net', 'astrograph.com', 'localadventures.mx', 'ripcurl.com', 'worldfootbrakechallenge.com', 'shespeakssales.com', 'obrienguitars.com', 'jadenikkolephoto.com', 'americavoice.com', 'cassiexie.com', 'aamastateconvention.org', 'rellesflorist.com', 'passionnobby.com', 'bodybyheidi.com', 'roqos.com', 'prijector.com', 'maryswanson.net', 'tsghobbies.com', 'erinlaytonphotography.com', 'darter.org', 'fountainpenhospital.com', 'myzestfullife.com', 'pcog.org', 'alisabethdesigns.com', 'katiemathisphoto.com', 'strictlybellaphotography.com', 'maptools.com', 'sites.google.com', 'gallerr.com', 'southfloridatrikke.com', 'caviar.tv', 'mintingmasters.com', 'prospectorsguild.com', 'inktale.com', 'prettygirlgoods.com', 'laceycahill.com', 'daniellenowak.com', 't212.org', 'scmsinc.com', 'babypaloozanc.com', 'tetrisonline.com', 'grdd.net', 'cdspg.info', 'airshipapparel.com', 'waft.com', 'extendpets.com', 'supplyhub.com', 'hlbsusa.com', 'jaderollerbeauty.com', 'theparentingjunkie.com', 'schagringas.com', 'yourscribemate.com', 'sportscollectibles.com', 'thedivinenoise.com', 'hometeamsonline.com', 'trademarkpress.com', 'destinationenglish.us', 'jacquesflowers.com', 'aliszhatchphotography.com', 'rusticfoundry.com', 'ahhhmassage.net', 'frezzor.com', 'mandelininc.com', 'kayleejackson.com', 'monkinstitute.org', 'eddiebsbbq.com', 'morningstarmediaservices.com', 'kinevative.com', 'orivet.com', 'digitalprinthouse.net', 'dynamicgenius.com', 'allpartsusa.com', 'flowersbydavid.net', 'nwvoices.org', 'leaptrade.com', 'tulsaschoolpics.com', 'alioth.io', 'windowflair.com', 'vitcom.net', 'simplybeautifulfashions.com', 'christinabenton.com', 'fromthedaughter.com', 'hometowngraphics.net', 'fibanalysis.com', 'creativejobscentral.com', 'sandbox.gg', 'jt-digitalmedia.com', 'kodable.com', 'birthingstone.com', 'taranicholephoto.com', 'hillyfieldsflorist.com', 'charitynoelphoto.com', 'auxdelicesfoods.com', 'terilynnphotography.com', 'folieadeuxevents.com', 'karensfloral.com', 'montgomerydiveclub.com', 'rainbowplastics.com', 'confettionthedancefloor.com', 'vomozmedia.com', 'neatmod.com', 'getnaturafled.com', 'callingpost.com', 'iamfamily.org', 'pedigreeonline.com', 'typeboost.io', 'in-n-outpetdoor.com', 'nerdstockgc.com', 'keiadmin.com', 'createdbykaui.com', 'aikophoto.com', 'lonestar.ink', 'stlfurs.com', 'treasurelistings.com', 'thecubicle.us', 'redclaypaper.com', 'blushhousemedia.com', 'documentsanddesigns.com', 'whitneyleighphotography.shootproof.com', 'amaryllisday.com', 'hermanproav.com', 'felicemedia.com', 'withloveplacenta.com', 'store.brgadgets.co', 'klowephoto.com', 'spenceraustinconsulting.com', 'sno-eagles.org', 'dsatallahassee.org', 'bakupages.com', 'neswc.com', 'josiebrooksphotography.com', 'brisksale.com', 'legalwhoosh.com', 'jasmineeaster.com', 'swatstudios.com', 'facebook.com', 'shakershell.com', 'alexiswinslow.com', 'mixeddimensions.com', 'sweetpproductions.com', 'lbeaphotography.com', 'otlseatfillers.com', 'jdtickets.com', 'catholicar.com', 'masque.com', 'smalltownstudio.net', 'goherbalife.com', 'itzyourz.com', 'magazinespeedloader.com', 'dreammachines.io', 'dallasdieteticalliance.org', 'http:', 'medair.org', 'unbridledambition.com', 'sarasprints.com', 'wiperecord.com', 'showmyrabbit.com', 'cctrendsshop.com', 'rachelalessandra.com', 'otherworld-apothecary.com', 'melissaannphoto.com', 'girlceo.co', 'seasidemexico.com', 'telosid.com', 'instin.com', 'marinecorpsmustang.org', 'lancityconnect.com', 'hps1.org', 'karenware.com', 'livecurriculum.com', 'spellingstars.com', 'vektorfootball.com', 'zaltv.com', 'nebraskamayflower.org', 'ethiopianspices.com', 'immitranslate.com', 'rafaelmagic.com.com', 'bahc1.org', 'newenamel.com', 'bhchp.org', 'buybulkamerica.com', 'sourcepoint.com', 'squarestripsports.com', 'wix.com', 'wilderootsphotography.com', 'goodsalt.com', 'systemongrid.com', 'designmil.org', 'freshtrendhq.com', 'valisimofashions.com', 'buyneatly.com', 'getbeauty.us', 'intellimidia.com' ],\n \n customCountry: false,\n\n SUPPORTED_BROWSERS: {\n msie: '11',\n firefox: '30',\n chrome: '27',\n safari: '7',\n opera: '16',\n msedge: '12',\n samsungBrowser: '2.1',\n silk: '59.3',\n ucbrowser: '10.0.0.488',\n vivaldi: '1.91'\n },\n\n session_uid_lifetime: 5 * 60 * 1000,\n\n _apiStage: '',\n\n get apiStage() : string {\n return config._apiStage || config.stage;\n },\n\n set apiStage(value) {\n config._apiStage = value;\n },\n\n ports: {\n default: 8000,\n button: 8000,\n checkout: 8000,\n guest: 8001,\n altpay: 3000\n },\n\n get paypalUrls() : Object {\n return {\n [ ENV.LOCAL ]: config.localhostUrl,\n [ ENV.STAGE ]: `https://www.${ config.stageUrl }`,\n [ ENV.SANDBOX ]: `https://www.sandbox.paypal.com`,\n [ ENV.PRODUCTION ]: `https://www.paypal.com`,\n [ ENV.TEST ]: `${ window.location.protocol }//${ window.location.host }`,\n [ ENV.DEMO ]: `${ window.location.protocol }//localhost.paypal.com:${ window.location.port }`\n };\n },\n\n get paypalDomains() : Object {\n return {\n [ ENV.LOCAL ]: 'http://localhost.paypal.com:8000',\n [ ENV.STAGE ]: `https://www.${ config.stageUrl }`,\n [ ENV.SANDBOX ]: `https://www.sandbox.paypal.com`,\n [ ENV.PRODUCTION ]: `https://www.paypal.com`,\n [ ENV.TEST ]: `mock://www.paypal.com`,\n [ ENV.DEMO ]: `${ window.location.protocol }//localhost.paypal.com:${ window.location.port }`\n };\n },\n\n get wwwApiUrls() : Object {\n return {\n [ ENV.LOCAL ]: `https://www.${ config.stageUrl }`,\n [ ENV.STAGE ]: `https://www.${ config.stageUrl }`,\n [ ENV.SANDBOX ]: `https://www.sandbox.paypal.com`,\n [ ENV.PRODUCTION ]: `https://www.paypal.com`,\n [ ENV.TEST ]: `${ window.location.protocol }//${ window.location.host }`\n };\n },\n\n get corsApiUrls() : Object {\n return {\n [ ENV.LOCAL ]: `https://${ config.apiStageUrl }:12326`,\n [ ENV.STAGE ]: `https://${ config.apiStageUrl }:12326`,\n [ ENV.SANDBOX ]: `https://cors.api.sandbox.paypal.com`,\n [ ENV.PRODUCTION ]: `https://cors.api.paypal.com`,\n [ ENV.TEST ]: `${ window.location.protocol }//${ window.location.host }`\n };\n },\n\n get apiUrls() : Object {\n\n const domain = `${ window.location.protocol }//${ window.location.host }`;\n const corsApiUrls = config.corsApiUrls;\n const wwwApiUrls = config.wwwApiUrls;\n\n return {\n [ ENV.LOCAL ]: domain === wwwApiUrls.local ? wwwApiUrls.local : corsApiUrls.local,\n [ ENV.STAGE ]: domain === wwwApiUrls.stage ? wwwApiUrls.stage : corsApiUrls.stage,\n [ ENV.SANDBOX ]: domain === wwwApiUrls.sandbox ? wwwApiUrls.sandbox : corsApiUrls.sandbox,\n [ ENV.PRODUCTION ]: domain === wwwApiUrls.production ? wwwApiUrls.production : corsApiUrls.production,\n [ ENV.TEST ]: domain === wwwApiUrls.test ? wwwApiUrls.test : corsApiUrls.test\n };\n },\n\n get checkoutUri() : ?string {\n return null;\n },\n\n set checkoutUri(val) {\n delete this.checkoutUri;\n this.checkoutUri = val;\n },\n\n get checkoutUris() : Object {\n if (config.checkoutUri) {\n return {\n [ ENV.LOCAL ]: config.checkoutUri,\n [ ENV.STAGE ]: config.checkoutUri,\n [ ENV.SANDBOX ]: config.checkoutUri,\n [ ENV.PRODUCTION ]: config.checkoutUri,\n [ ENV.TEST ]: config.checkoutUri,\n [ ENV.DEMO ]: config.checkoutUri\n };\n }\n\n return {\n [ ENV.LOCAL ]: `/webapps/hermes`,\n [ ENV.STAGE ]: `/webapps/hermes`,\n [ ENV.SANDBOX ]: `/checkoutnow`,\n [ ENV.PRODUCTION ]: `/checkoutnow`,\n [ ENV.TEST ]: `/base/test/windows/checkout/index.htm?checkouturl=true`,\n [ ENV.DEMO ]: `/demo/dev/checkout.htm`\n };\n },\n\n altpayUris: {\n [ ENV.LOCAL ]: `/latinumcheckout`,\n [ ENV.STAGE ]: `/latinumcheckout`,\n [ ENV.SANDBOX ]: `/latinumcheckout`,\n [ ENV.PRODUCTION ]: `/latinumcheckout`,\n [ ENV.TEST ]: `/base/test/windows/checkout/index.htm?checkouturl=true`,\n [ ENV.DEMO ]: `/demo/dev/checkout.htm`\n },\n\n guestUris: {\n [ ENV.LOCAL ]: `/webapps/xoonboarding`,\n [ ENV.STAGE ]: `/webapps/xoonboarding`,\n [ ENV.SANDBOX ]: `/webapps/xoonboarding`,\n [ ENV.PRODUCTION ]: `/webapps/xoonboarding`,\n [ ENV.TEST ]: `/base/test/windows/checkout/index.htm?guesturl=true`,\n [ ENV.DEMO ]: `/demo/dev/guest.htm`\n },\n\n billingUris: {\n [ ENV.LOCAL ]: `/webapps/hermes/agreements`,\n [ ENV.STAGE ]: `/webapps/hermes/agreements`,\n [ ENV.SANDBOX ]: `/agreements/approve`,\n [ ENV.PRODUCTION ]: `/agreements/approve`,\n [ ENV.TEST ]: `/base/test/windows/checkout/index.htm?billingurl=true`,\n [ ENV.DEMO ]: `/demo/dev/checkout.htm`\n },\n\n buttonUris: {\n [ ENV.LOCAL ]: `/smart/button`,\n [ ENV.STAGE ]: `/smart/button`,\n [ ENV.SANDBOX ]: `/smart/button`,\n [ ENV.PRODUCTION ]: `/smart/button`,\n [ ENV.TEST ]: `/base/test/windows/button/index.htm`,\n [ ENV.DEMO ]: `/demo/dev/button.htm`\n },\n\n inlinedCardFieldUris: {\n [ ENV.LOCAL ]: `/smart/card-fields`,\n [ ENV.STAGE ]: `/smart/card-fields`,\n [ ENV.SANDBOX ]: `/smart/card-fields`,\n [ ENV.PRODUCTION ]: `/smart/card-fields`,\n [ ENV.TEST ]: `/base/test/windows/card-fields/index.htm`,\n [ ENV.DEMO ]: `/demo/dev/card.htm`\n },\n\n postBridgeUris: {\n [ ENV.LOCAL ]: `/webapps/hermes/component-meta`,\n [ ENV.STAGE ]: `/webapps/hermes/component-meta`,\n [ ENV.SANDBOX ]: `/webapps/hermes/component-meta`,\n [ ENV.PRODUCTION ]: `/webapps/hermes/component-meta`,\n [ ENV.TEST ]: `/base/test/windows/component-meta/index.htm`,\n [ ENV.DEMO ]: `/demo/dev/bridge.htm`\n },\n\n legacyCheckoutUris: {\n [ ENV.LOCAL ]: `/cgi-bin/webscr?cmd=_express-checkout&xo_node_fallback=true`,\n [ ENV.STAGE ]: `/cgi-bin/webscr?cmd=_express-checkout&xo_node_fallback=true`,\n [ ENV.SANDBOX ]: `/cgi-bin/webscr?cmd=_express-checkout&xo_node_fallback=true`,\n [ ENV.PRODUCTION ]: `/cgi-bin/webscr?cmd=_express-checkout&xo_node_fallback=true`,\n [ ENV.TEST ]: `#fallback`\n },\n\n buttonJSUrls: {\n [ ENV.LOCAL ]: `https://www.paypalobjects.com/api/button.js`,\n [ ENV.STAGE ]: `https://www.paypalobjects.com/api/button.js`,\n [ ENV.SANDBOX ]: `https://www.paypalobjects.com/api/button.js`,\n [ ENV.PRODUCTION ]: `https://www.paypalobjects.com/api/button.js`,\n [ ENV.TEST ]: `/base/test/lib/button.js`,\n [ ENV.DEMO ]: `https://www.paypalobjects.com/api/button.js`\n },\n\n get buttonJSUrl() : string {\n return config.buttonJSUrls[config.env];\n },\n\n loginUri: `/signin/`,\n\n hermesLoggerUri: `/webapps/hermes/api/logger`,\n\n loggerUri: `/xoplatform/logger/api/logger`,\n\n loggerThrottlePercentage: 1.0, // 100%\n\n pptmUri: `/tagmanager/pptm.js`,\n\n get postBridgeUri() : string {\n return `${ config.postBridgeUris[config.env] }?xcomponent=1`;\n },\n\n paymentStandardUri: `/webapps/xorouter?cmd=_s-xclick`,\n\n authApiUri: `/v1/oauth2/token`,\n paymentApiUri: `/v1/payments/payment`,\n orderApiUri: `/v2/checkout/orders`,\n billingApiUri: `/v1/billing-agreements/agreement-tokens`,\n experienceApiUri: `/v1/payment-experience/web-profiles`,\n trackingApiUri: `/v1/risk/transaction-contexts`,\n\n get checkoutUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local }${ config.checkoutUris.local.replace(`:${ config.ports.default }`, `:${ config.ports.checkout }`) }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.checkoutUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.checkoutUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.checkoutUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.checkoutUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.test }${ config.checkoutUris.demo }`\n };\n },\n\n get guestUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local.replace(`:${ config.ports.default }`, `:${ config.ports.guest }`) }${ config.guestUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.guestUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.guestUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.guestUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.guestUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.test }${ config.guestUris.demo }`\n };\n },\n\n get altpayUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local.replace(`:${ config.ports.default }`, `:${ config.ports.altpay }`) }${ config.altpayUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.altpayUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.altpayUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.altpayUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.altpayUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.test }${ config.altpayUris.demo }`\n };\n },\n\n get billingUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local.replace(`:${ config.ports.default }`, `:${ config.ports.checkout }`) }${ config.billingUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.billingUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.billingUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.billingUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.billingUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.test }${ config.billingUris.demo }`\n };\n },\n\n get buttonUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local.replace(`:${ config.ports.default }`, `:${ config.ports.button }`) }${ config.buttonUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.buttonUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.buttonUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.buttonUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.buttonUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.demo }${ config.buttonUris.demo }`\n };\n },\n\n get inlinedCardFieldUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local.replace(`:${ config.ports.default }`, `:${ config.ports.button }`) }${ config.inlinedCardFieldUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.inlinedCardFieldUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.inlinedCardFieldUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.inlinedCardFieldUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.inlinedCardFieldUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.demo }${ config.inlinedCardFieldUris.demo }`\n };\n },\n\n get loginUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.stage }${ config.loginUri }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.loginUri }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.loginUri }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.loginUri }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.loginUri }`\n };\n },\n\n get paymentsStandardUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local }${ config.paymentStandardUri }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.paymentStandardUri }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.paymentStandardUri }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.paymentStandardUri }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.paymentStandardUri }`\n };\n },\n\n get metaFrameUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local }${ config.postBridgeUri }&env=local`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.postBridgeUri }&env=stage&stage=${ config.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.postBridgeUri }&env=sandbox`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.postBridgeUri }&env=production`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.postBridgeUri }&env=test`,\n [ ENV.DEMO ]: `${ paypalUrls.demo }${ config.postBridgeUri }&env=demo`\n };\n },\n\n get legacyCheckoutUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.stage }${ config.legacyCheckoutUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.legacyCheckoutUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.legacyCheckoutUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.legacyCheckoutUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.legacyCheckoutUris.test }`\n };\n },\n\n get authApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const authApiUri = config.authApiUri;\n\n return {\n [ ENV.LOCAL ]: `${ apiUrls.local }${ authApiUri }`,\n [ ENV.STAGE ]: `${ apiUrls.stage }${ authApiUri }`,\n [ ENV.SANDBOX ]: `${ apiUrls.sandbox }${ authApiUri }`,\n [ ENV.PRODUCTION ]: `${ apiUrls.production }${ authApiUri }`,\n [ ENV.TEST ]: `${ apiUrls.test }${ authApiUri }`\n };\n },\n\n get paymentApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const paymentApiUri = config.paymentApiUri;\n\n return {\n [ ENV.LOCAL ]: `${ apiUrls.local }${ paymentApiUri }`,\n [ ENV.STAGE ]: `${ apiUrls.stage }${ paymentApiUri }`,\n [ ENV.SANDBOX ]: `${ apiUrls.sandbox }${ paymentApiUri }`,\n [ ENV.PRODUCTION ]: `${ apiUrls.production }${ paymentApiUri }`,\n [ ENV.TEST ]: `${ apiUrls.test }${ paymentApiUri }`\n };\n },\n\n get orderApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const orderApiUri = config.orderApiUri;\n\n return {\n [ENV.LOCAL]: `${ apiUrls.local }${ orderApiUri }`,\n [ENV.STAGE]: `${ apiUrls.stage }${ orderApiUri }`,\n [ENV.SANDBOX]: `${ apiUrls.sandbox }${ orderApiUri }`,\n [ENV.PRODUCTION]: `${ apiUrls.production }${ orderApiUri }`,\n [ENV.TEST]: `${ apiUrls.test }${ orderApiUri }`\n };\n },\n\n get billingApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const billingApiUri = config.billingApiUri;\n\n return {\n [ ENV.LOCAL ]: `${ apiUrls.local }${ billingApiUri }`,\n [ ENV.STAGE ]: `${ apiUrls.stage }${ billingApiUri }`,\n [ ENV.SANDBOX ]: `${ apiUrls.sandbox }${ billingApiUri }`,\n [ ENV.PRODUCTION ]: `${ apiUrls.production }${ billingApiUri }`,\n [ ENV.TEST ]: `${ apiUrls.test }${ billingApiUri }`\n };\n },\n\n get experienceApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const experienceApiUri = config.experienceApiUri;\n\n return {\n [ ENV.LOCAL ]: `${ apiUrls.local }${ experienceApiUri }`,\n [ ENV.STAGE ]: `${ apiUrls.stage }${ experienceApiUri }`,\n [ ENV.SANDBOX ]: `${ apiUrls.sandbox }${ experienceApiUri }`,\n [ ENV.PRODUCTION ]: `${ apiUrls.production }${ experienceApiUri }`,\n [ ENV.TEST ]: `${ apiUrls.test }${ experienceApiUri }`\n };\n },\n\n get trackingApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const trackingApiUri = config.trackingApiUri;\n\n return {\n [ ENV.LOCAL ]: `${ apiUrls.local }${ trackingApiUri }`,\n [ ENV.STAGE ]: `${ apiUrls.stage }${ trackingApiUri }`,\n [ ENV.SANDBOX ]: `${ apiUrls.sandbox }${ trackingApiUri }`,\n [ ENV.PRODUCTION ]: `${ apiUrls.production }${ trackingApiUri }`,\n [ ENV.TEST ]: `${ apiUrls.test }${ trackingApiUri }`\n };\n },\n\n _paypalUrl: '',\n\n get paypalUrl() : string {\n return this._paypalUrl || config.paypalUrls[config.env];\n },\n\n set paypalUrl(value) {\n this._paypalUrl = value;\n },\n\n get paypalDomain() : string {\n return config.paypalDomains[config.env];\n },\n\n get corsApiUrl() : string {\n return config.corsApiUrls[config.env];\n },\n\n get wwwApiUrl() : string {\n return config.wwwApiUrls[config.env];\n },\n\n get apiUrl() : string {\n\n const domain = `${ window.location.protocol }//${ window.location.host }`;\n const corsApiUrl = config.corsApiUrl;\n const wwwApiUrl = config.wwwApiUrl;\n\n return domain === wwwApiUrl ? wwwApiUrl : corsApiUrl;\n },\n\n get checkoutUrl() : string {\n return `${ config.paypalUrl }${ config.checkoutUris[config.env] }`;\n },\n\n get billingUrl() : string {\n return `${ config.paypalUrl }${ config.billingUris[config.env] }`;\n },\n\n get buttonUrl() : string {\n return `${ config.paypalUrl }${ config.buttonUris[config.env] }`;\n },\n\n get legacyCheckoutUrl() : string {\n return config.legacyCheckoutUrls[config.env];\n },\n\n get postBridgeUrl() : string {\n return `${ config.paypalUrl }${ config.postBridgeUri }`;\n },\n\n get postBridgeDomain() : string {\n return `${ config.paypalDomain }`;\n },\n\n get loggerUrl() : string {\n const isTestExperiment = Math.random() < config.loggerThrottlePercentage;\n const loggerUrl = isTestExperiment ? config.loggerUri : config.hermesLoggerUri;\n\n return `${ config.paypalUrl }${ loggerUrl }`;\n },\n\n get pptmUrl() : string {\n return `${ config.paypalUrls[config.env] }${ config.pptmUri }`;\n },\n\n get authApiUrl() : string {\n return `${ config.apiUrl }${ config.authApiUri }`;\n },\n\n get paymentApiUrl() : string {\n return `${ config.apiUrl }${ config.paymentApiUri }`;\n },\n\n get orderApiUrl() : string {\n return `${ config.apiUrl }${ config.orderApiUri }`;\n },\n\n get billingApiUrl() : string {\n return `${ config.apiUrl }${ config.billingApiUri }`;\n },\n\n get experienceApiUrl() : string {\n return `${ config.apiUrl }${ config.experienceApiUri }`;\n },\n\n defaultLocale: {\n country: COUNTRY.US,\n lang: LANG.EN\n }\n};\n","/* @flow */\n\nexport * from './config';\n","\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nexport function extend(dest, src, over=true) {\n dest = dest || {};\n src = src || {};\n\n for (let i in src) {\n if (src.hasOwnProperty(i)) {\n if (over || !dest.hasOwnProperty(i)) {\n dest[i] = src[i];\n }\n }\n }\n\n return dest;\n}\n\nexport function isSameProtocol(url) {\n return window.location.protocol === url.split('/')[0];\n}\n\nexport function isSameDomain(url) {\n let match = url.match(/https?:\\/\\/[^/]+/);\n\n if (!match) {\n return true;\n }\n\n return match[0] === `${window.location.protocol}//${window.location.host}`;\n}\n\nexport function ajax(method, url, headers={}, data={}, { fireAndForget = false } = {}) {\n\n return new ZalgoPromise(resolve => {\n let XRequest = window.XMLHttpRequest || window.ActiveXObject;\n\n if (window.XDomainRequest && !isSameDomain(url)) {\n\n if (!isSameProtocol(url)) {\n return resolve();\n }\n\n XRequest = window.XDomainRequest;\n }\n\n let req = new XRequest('MSXML2.XMLHTTP.3.0');\n req.open(method.toUpperCase(), url, true);\n\n if (typeof req.setRequestHeader === 'function') {\n req.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n req.setRequestHeader('Content-type', 'application/json');\n\n for (let headerName in headers) {\n if (headers.hasOwnProperty(headerName)) {\n req.setRequestHeader(headerName, headers[headerName]);\n }\n }\n }\n\n if (fireAndForget) {\n resolve();\n } else {\n req.onreadystatechange = () => {\n if (req.readyState > 3) {\n resolve();\n }\n };\n }\n\n req.send(JSON.stringify(data).replace(/&/g, '%26'));\n });\n}\n\nexport function promiseDebounce(method, interval) {\n\n let debounce = {};\n\n return function() {\n let args = arguments;\n\n if (debounce.timeout) {\n clearTimeout(debounce.timeout);\n delete debounce.timeout;\n }\n\n debounce.timeout = setTimeout(() => {\n\n let resolver = debounce.resolver;\n let rejector = debounce.rejector;\n\n delete debounce.promise;\n delete debounce.resolver;\n delete debounce.rejector;\n delete debounce.timeout;\n\n return ZalgoPromise.resolve().then(() => {\n return method.apply(null, args);\n }).then(resolver, rejector);\n\n }, interval);\n\n debounce.promise = debounce.promise || new ZalgoPromise((resolver, rejector) => {\n debounce.resolver = resolver;\n debounce.rejector = rejector;\n });\n\n return debounce.promise;\n };\n}\n\nexport function onWindowReady() : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n if (typeof document !== 'undefined' && document.readyState === 'complete') {\n resolve();\n }\n\n window.addEventListener('load', resolve);\n });\n}\n\nexport function safeInterval(method, time) {\n\n let timeout;\n\n function loop() {\n timeout = setTimeout(() => {\n method();\n loop();\n }, time);\n }\n\n loop();\n\n return {\n cancel() {\n clearTimeout(timeout);\n }\n };\n}\n\nexport function uniqueID() {\n let chars = '0123456789abcdef';\n\n return 'xxxxxxxxxx'.replace(/./g, () => {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n });\n}\n\nexport function isIE() {\n return Boolean(window.document.documentMode);\n}\n","\nexport let payloadBuilders = [];\nexport let metaBuilders = [];\nexport let trackingBuilders = [];\nexport let headerBuilders = [];\n\nexport function addPayloadBuilder(builder) {\n payloadBuilders.push(builder);\n}\n\nexport function addMetaBuilder(builder) {\n metaBuilders.push(builder);\n}\n\nexport function addTrackingBuilder(builder) {\n trackingBuilders.push(builder);\n}\n\nexport function addHeaderBuilder(builder) {\n headerBuilders.push(builder);\n}","\nexport let config = {\n\n uri: '',\n prefix: '',\n\n initial_state_name: 'init',\n\n flushInterval: 10 * 60 * 1000,\n debounceInterval: 10,\n\n sizeLimit: 300,\n\n // Supress `console.log`s when `true`\n // Recommended for production usage\n silent: false,\n\n heartbeat: true,\n heartbeatConsoleLog: true,\n heartbeatInterval: 5000,\n heartbeatTooBusy: false,\n heartbeatTooBusyThreshold: 10000,\n\n logLevel: 'warn',\n\n autoLog: ['warn', 'error'],\n\n logUnload: true,\n logPerformance: true\n};\n\nexport let logLevels = [ 'error', 'warn', 'info', 'debug' ];\n","\nimport { extend, promiseDebounce, ajax, isIE } from './util';\nimport { payloadBuilders, metaBuilders, trackingBuilders, headerBuilders } from './builders';\nimport { config, logLevels } from './config';\n\nexport let buffer = [];\nexport let tracking = [];\n\nlet transport = (headers, data, options) => {\n return ajax('post', config.uri, headers, data, options);\n}\n\nexport function getTransport() {\n return transport;\n}\n\nexport function setTransport(newTransport) {\n transport = newTransport;\n}\n\nlet loaded = false;\n\nsetTimeout(() => {\n loaded = true;\n}, 1);\n\nexport function print(level, event, payload) {\n\n if (typeof window === 'undefined' || !window.console || !window.console.log) {\n return;\n }\n\n if (!loaded) {\n return setTimeout(() => print(level, event, payload), 1);\n }\n\n let logLevel = config.logLevel;\n\n if (window.LOG_LEVEL) {\n logLevel = window.LOG_LEVEL;\n }\n\n if (logLevels.indexOf(level) > logLevels.indexOf(logLevel)) {\n return;\n }\n\n payload = payload || {};\n\n let args = [event];\n\n if(isIE()){\n payload = JSON.stringify(payload);\n }\n\n args.push(payload);\n\n if (payload.error || payload.warning) {\n args.push('\\n\\n', payload.error || payload.warning);\n }\n\n try {\n if (window.console[level] && window.console[level].apply) {\n window.console[level].apply(window.console, args);\n } else if (window.console.log && window.console.log.apply) {\n window.console.log.apply(window.console, args);\n }\n } catch (err) {\n // pass\n }\n}\n\nexport function immediateFlush({ fireAndForget = false } = {}) {\n\n if (typeof window === 'undefined') {\n return;\n }\n\n if (!config.uri) {\n return;\n }\n\n let hasBuffer = buffer.length;\n let hasTracking = tracking.length;\n\n if (!hasBuffer && !hasTracking) {\n return;\n }\n\n let meta = {};\n\n for (let builder of metaBuilders) {\n try {\n extend(meta, builder(meta), false);\n } catch (err) {\n console.error('Error in custom meta builder:', err.stack || err.toString());\n }\n }\n\n let headers = {};\n\n for (let builder of headerBuilders) {\n try {\n extend(headers, builder(headers), false);\n } catch (err) {\n console.error('Error in custom header builder:', err.stack || err.toString());\n }\n }\n\n let events = buffer;\n\n let req = transport(headers, {\n events,\n meta,\n tracking\n }, {\n fireAndForget\n });\n\n buffer = [];\n tracking = [];\n\n return req;\n}\n\nexport let flush = promiseDebounce(immediateFlush, config.debounceInterval);\n\n\nfunction enqueue(level, event, payload) {\n\n buffer.push({\n level,\n event,\n payload\n });\n\n if (config.autoLog.indexOf(level) > -1) {\n flush();\n }\n}\n\n\nexport function log(level, event, payload) {\n\n if (typeof window === 'undefined') {\n return;\n }\n\n if (config.prefix) {\n event = `${config.prefix}_${event}`;\n }\n\n payload = payload || {};\n\n if (typeof payload === 'string') {\n payload = {\n message: payload\n };\n } else if (payload instanceof Error) {\n payload = {\n error: payload.stack || payload.toString()\n }\n }\n\n try {\n JSON.stringify(payload);\n } catch (err) {\n return;\n }\n\n payload.timestamp = Date.now();\n\n for (let builder of payloadBuilders) {\n try {\n extend(payload, builder(payload), false);\n } catch (err) {\n console.error('Error in custom payload builder:', err.stack || err.toString());\n }\n }\n\n if (!config.silent) {\n print(level, event, payload);\n }\n\n if (buffer.length === config.sizeLimit) {\n enqueue('info', 'logger_max_buffer_length');\n }\n else if (buffer.length < config.sizeLimit) {\n enqueue(level, event, payload);\n }\n}\n\nexport function prefix(name) {\n\n return {\n debug(event, payload) {\n return log('debug', `${name}_${event}`, payload);\n },\n\n info(event, payload) {\n return log('info', `${name}_${event}`, payload);\n },\n\n warn(event, payload) {\n return log('warn', `${name}_${event}`, payload);\n },\n\n error(event, payload) {\n return log('error', `${name}_${event}`, payload);\n },\n\n track(payload) {\n return track(payload);\n },\n\n flush() {\n return flush();\n }\n };\n}\n\nexport function debug(event, payload) {\n return log('debug', event, payload);\n}\n\nexport function info(event, payload) {\n return log('info', event, payload);\n}\n\nexport function warn(event, payload) {\n return log('warn', event, payload);\n}\n\nexport function error(event, payload) {\n return log('error', event, payload);\n}\n\nexport function track(payload) {\n\n if (typeof window === 'undefined') {\n return;\n }\n\n if (payload) {\n\n try {\n JSON.stringify(payload);\n } catch (err) {\n return;\n }\n\n for (let builder of trackingBuilders) {\n try {\n extend(payload, builder(payload), false);\n } catch (err) {\n console.error('Error in custom tracking builder:', err.stack || err.toString());\n }\n }\n\n print('debug', 'tracking', payload);\n\n tracking.push(payload);\n }\n}\n","\nimport { config } from './config';\nimport { info } from './logger';\nimport { addPayloadBuilder } from './builders'\nimport { onWindowReady, safeInterval } from './util';\n\nlet enablePerformance = window &&\n window.performance &&\n performance.now &&\n performance.timing &&\n performance.timing.connectEnd &&\n performance.timing.navigationStart &&\n (Math.abs(performance.now() - Date.now()) > 1000) &&\n (performance.now() - (performance.timing.connectEnd - performance.timing.navigationStart)) > 0;\n\n\nexport function now() {\n if (enablePerformance) {\n return performance.now();\n } else {\n return Date.now();\n }\n}\n\nfunction timer(startTime) {\n startTime = startTime !== undefined ? startTime : now();\n\n return {\n startTime,\n\n elapsed() {\n return parseInt(now() - startTime, 10);\n },\n\n reset() {\n startTime = now();\n }\n };\n}\n\nexport function reqStartElapsed() {\n if (enablePerformance) {\n let timing = window.performance.timing;\n return parseInt(timing.connectEnd - timing.navigationStart, 10);\n }\n}\n\nexport let clientTimer = timer();\nexport let reqTimer = timer(reqStartElapsed());\n\nexport function initHeartBeat() {\n\n let heartBeatTimer = timer();\n let heartbeatCount = 0;\n\n safeInterval(() => {\n\n if (config.heartbeatMaxThreshold && (heartbeatCount > config.heartbeatMaxThreshold)) {\n return;\n }\n\n heartbeatCount += 1;\n\n let elapsed = heartBeatTimer.elapsed();\n let lag = elapsed - config.heartbeatInterval;\n\n let heartbeatPayload = {\n count: heartbeatCount,\n elapsed\n };\n\n if (config.heartbeatTooBusy) {\n heartbeatPayload.lag = lag;\n\n if (lag >= config.heartbeatTooBusyThreshold) {\n info('toobusy', heartbeatPayload, {\n noConsole: !config.heartbeatConsoleLog\n });\n }\n }\n\n info('heartbeat', heartbeatPayload, {\n noConsole: !config.heartbeatConsoleLog\n });\n\n }, config.heartbeatInterval);\n}\n\nexport function initPerformance() {\n\n if (!enablePerformance) {\n return info('no_performance_data');\n }\n\n addPayloadBuilder(() => {\n\n let payload = {};\n\n payload.client_elapsed = clientTimer.elapsed();\n\n if (enablePerformance) {\n payload.req_elapsed = reqTimer.elapsed();\n }\n\n return payload;\n });\n\n onWindowReady().then(() => {\n\n let keys = [\n 'connectEnd', 'connectStart', 'domComplete', 'domContentLoadedEventEnd',\n 'domContentLoadedEventStart', 'domInteractive', 'domLoading', 'domainLookupEnd',\n 'domainLookupStart', 'fetchStart', 'loadEventEnd', 'loadEventStart', 'navigationStart',\n 'redirectEnd', 'redirectStart', 'requestStart', 'responseEnd', 'responseStart',\n 'secureConnectionStart', 'unloadEventEnd', 'unloadEventStart'\n ];\n\n let timing = {};\n\n keys.forEach(key => {\n timing[key] = parseInt(window.performance.timing[key], 10) || 0;\n });\n\n let offset = timing.connectEnd - timing.navigationStart;\n\n if (timing.connectEnd) {\n Object.keys(timing).forEach(name => {\n let time = timing[name];\n if (time) {\n info(`timing_${name}`, {\n client_elapsed: parseInt(time - timing.connectEnd - (clientTimer.startTime - offset), 10),\n req_elapsed: parseInt(time - timing.connectEnd, 10)\n });\n }\n });\n }\n\n info('timing', timing);\n info('memory', window.performance.memory);\n info('navigation', window.performance.navigation);\n\n if (window.performance.getEntries) {\n window.performance.getEntries().forEach(resource => {\n if (['link', 'script', 'img', 'css'].indexOf(resource.initiatorType) > -1) {\n info(resource.initiatorType, resource);\n }\n });\n }\n });\n}\n","\nimport { config } from './config';\nimport { extend } from './util';\nimport { initPerformance, initHeartBeat } from './performance';\nimport { log, info, flush, immediateFlush } from './logger';\n\nlet initiated = false;\n\nexport function init(conf) {\n extend(config, conf || {});\n\n if (initiated) {\n return;\n }\n\n initiated = true;\n\n if (config.logPerformance) {\n initPerformance();\n }\n\n if (config.heartbeat) {\n initHeartBeat();\n }\n\n if (config.logUnload) {\n window.addEventListener('beforeunload', () => {\n info('window_beforeunload');\n immediateFlush({ fireAndForget: true });\n });\n\n window.addEventListener('unload', () => {\n info('window_unload');\n immediateFlush({ fireAndForget: true });\n });\n }\n\n if (config.flushInterval) {\n setInterval(flush, config.flushInterval);\n }\n\n if (window.beaverLogQueue) {\n window.beaverLogQueue.forEach(payload => {\n log(payload.level, payload.event, payload);\n });\n delete window.beaverLogQueue;\n }\n}\n","\nimport { reqStartElapsed, now } from './performance';\nimport { info, immediateFlush, track } from './logger';\nimport { addMetaBuilder, addPayloadBuilder } from './builders';\nimport { uniqueID } from './util';\nimport { config } from './config';\n\nlet windowID = uniqueID();\nlet pageID = uniqueID();\n\nlet currentState = config.initial_state_name;\nlet startTime;\n\nexport function startTransition() {\n startTime = now();\n}\n\nexport function endTransition(toState) {\n startTime = startTime || reqStartElapsed();\n\n let currentTime = now();\n let elapsedTime;\n\n if (startTime !== undefined) {\n elapsedTime = parseInt(currentTime - startTime, 0);\n }\n\n let transitionName = `transition_${currentState}_to_${toState}`;\n\n info(transitionName, {\n duration: elapsedTime\n });\n\n track({\n transition: transitionName,\n transition_time: elapsedTime\n });\n\n immediateFlush();\n\n startTime = currentTime;\n currentState = toState;\n pageID = uniqueID();\n}\n\nexport function transition(toState) {\n startTransition();\n endTransition(toState);\n}\n\naddPayloadBuilder(() => {\n return {\n windowID,\n pageID\n }\n});\n\naddMetaBuilder(() => {\n return {\n state: `ui_${currentState}`\n };\n});\n","\nexport * from './logger';\nexport * from './init';\nexport * from './transitions';\nexport * from './builders';\nexport * from './config';","\nimport * as INTERFACE from './interface';\nexport * from './interface';\nexport default INTERFACE;","/* @flow */\n/* eslint max-lines: off */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\n\nimport type { CancelableType } from '../types';\n\n/* Url Encode\n ----------\n\n Replace ? and & with encoded values. Allows other values (to create more readable urls than encodeUriComponent)\n*/\n\nexport function urlEncode(str : string) : string {\n return str.replace(/\\?/g, '%3F').replace(/&/g, '%26').replace(/#/g, '%23').replace(/\\+/g, '%2B');\n}\n\n\n/* Camel To Dasherize\n ------------------\n\n Convert camelCaseText to dasherized-text\n*/\n\nexport function camelToDasherize(string : string) : string {\n return string.replace(/([A-Z])/g, (g) => {\n return `-${ g.toLowerCase() }`;\n });\n}\n\n\n/* Dasherize to Camel\n ------------------\n\n Convert dasherized-text to camelCaseText\n*/\n\nexport function dasherizeToCamel(string : string) : string {\n return string.replace(/-([a-z])/g, (g) => {\n return g[1].toUpperCase();\n });\n}\n\n\n/* Extend\n ------\n\n Extend one object with another\n*/\n\nexport function extend(obj : Object, source : ?Object) : Object {\n if (!source) {\n return obj;\n }\n\n for (let key in source) {\n if (source.hasOwnProperty(key)) {\n obj[key] = source[key];\n }\n }\n\n return obj;\n}\n\n\n/* Values\n ------\n\n Get all of the values from an object as an array\n*/\n\nexport function values(obj : Object) : Array {\n let results = [];\n\n for (let key in obj) {\n if (obj.hasOwnProperty(key)) {\n results.push(obj[key]);\n }\n }\n\n return results;\n}\n\n\n/* Unique ID\n ---------\n\n Generate a unique, random hex id\n*/\n\nexport function uniqueID() : string {\n\n let chars = '0123456789abcdef';\n\n return 'xxxxxxxxxx'.replace(/./g, () => {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n });\n}\n\n/* Stringify with Functions\n ------------------------\n\n JSON Stringify with added support for functions\n*/\n\nexport function stringifyWithFunctions(obj : Object) : string {\n return JSON.stringify(obj, (key, val) => {\n if (typeof val === 'function') {\n return val.toString();\n }\n return val;\n });\n}\n\n\n/* Safe Get\n --------\n\n Get a property without throwing error\n*/\n\nexport function safeGet(obj : Object, prop : string) : mixed {\n\n let result;\n\n try {\n result = obj[prop];\n } catch (err) {\n // pass\n }\n\n return result;\n}\n\n\n/* Capitalize First Letter\n -----------------------\n*/\n\nexport function capitalizeFirstLetter(string : string) : string {\n return string.charAt(0).toUpperCase() + string.slice(1).toLowerCase();\n}\n\n\n/* Get\n ---\n\n Recursively gets a deep path from an object, returning a default value if any level is not found\n*/\n\nexport function get(item : Object, path : string, def : mixed) : mixed {\n\n if (!path) {\n return def;\n }\n\n let pathParts = path.split('.');\n\n // Loop through each section of our key path\n\n for (let i = 0; i < pathParts.length; i++) {\n\n // If we have an object, we can get the key\n\n if (typeof item === 'object' && item !== null) {\n item = item[pathParts[i]];\n\n // Otherwise, we should return the default (undefined if not provided)\n } else {\n return def;\n }\n }\n\n // If our final result is undefined, we should return the default\n\n return item === undefined ? def : item;\n}\n\n\n/* Safe Interval\n -------------\n\n Implement setInterval using setTimeout, to avoid stacking up calls from setInterval\n*/\n\nexport function safeInterval(method : Function, time : number) : CancelableType {\n\n let timeout;\n\n function runInterval() {\n timeout = setTimeout(runInterval, time);\n method.call();\n }\n\n timeout = setTimeout(runInterval, time);\n\n return {\n cancel() {\n clearTimeout(timeout);\n }\n };\n}\n\n/* Safe Interval\n -------------\n\n Run timeouts at 100ms intervals so we can account for busy browsers\n*/\n\nexport function safeTimeout(method : Function, time : number) {\n\n let interval = safeInterval(() => {\n time -= 100;\n if (time <= 0) {\n interval.cancel();\n method();\n }\n }, 100);\n}\n\n\nexport function each(item : Array | Object, callback : Function) {\n\n if (!item) {\n return;\n }\n\n if (Array.isArray(item)) {\n let len = item.length;\n for (let i = 0; i < len; i++) {\n callback(item[i], i);\n }\n\n } else if (typeof item === 'object') {\n let keys = Object.keys(item);\n let len = keys.length;\n for (let i = 0; i < len; i++) {\n let key = keys[i];\n callback(item[key], key);\n }\n }\n}\n\n\nexport function replaceObject> (item : T, replacers : { [string] : Function }, fullKey : string = '') : T {\n\n if (Array.isArray(item)) {\n let length = item.length;\n let result = [];\n\n for (let i = 0; i < length; i++) {\n Object.defineProperty(result, i, {\n configurable: true,\n enumerable: true,\n get: () => {\n let itemKey = fullKey ? `${ fullKey }.${ i }` : `${ i }`;\n let child = item[i];\n\n let type = (typeof child);\n let replacer = replacers[type];\n if (replacer) {\n let replaced = replacer(child, i, itemKey);\n if (typeof replaced !== 'undefined') {\n result[i] = replaced;\n return result[i];\n }\n }\n\n if (typeof child === 'object' && child !== null) {\n result[i] = replaceObject(child, replacers, itemKey);\n return result[i];\n }\n\n result[i] = child;\n return result[i];\n },\n set: (value) => {\n delete result[i];\n result[i] = value;\n }\n });\n }\n\n // $FlowFixMe\n return result;\n } else if (typeof item === 'object' && item !== null) {\n let result = {};\n\n for (let key in item) {\n if (!item.hasOwnProperty(key)) {\n continue;\n }\n\n Object.defineProperty(result, key, {\n configurable: true,\n enumerable: true,\n get: () => {\n let itemKey = fullKey ? `${ fullKey }.${ key }` : `${ key }`;\n // $FlowFixMe\n let child = item[key];\n\n let type = (typeof child);\n let replacer = replacers[type];\n if (replacer) {\n let replaced = replacer(child, key, itemKey);\n if (typeof replaced !== 'undefined') {\n result[key] = replaced;\n return result[key];\n }\n }\n\n if (typeof child === 'object' && child !== null) {\n result[key] = replaceObject(child, replacers, itemKey);\n return result[key];\n }\n\n result[key] = child;\n return result[key];\n },\n set: (value) => {\n delete result[key];\n result[key] = value;\n }\n });\n }\n\n // $FlowFixMe\n return result;\n } else {\n throw new Error(`Pass an object or array`);\n }\n}\n\n\nexport function copyProp(source : Object, target : Object, name : string, def : mixed) {\n if (source.hasOwnProperty(name)) {\n let descriptor = Object.getOwnPropertyDescriptor(source, name);\n // $FlowFixMe\n Object.defineProperty(target, name, descriptor);\n\n } else {\n target[name] = def;\n }\n}\n\nexport function dotify(obj : Object, prefix : string = '', newobj : Object = {}) : { [string] : string } {\n prefix = prefix ? `${ prefix }.` : prefix;\n for (let key in obj) {\n if (obj[key] === undefined || obj[key] === null || typeof obj[key] === 'function') {\n continue;\n } else if (obj[key] && Array.isArray(obj[key]) && obj[key].length && obj[key].every(val => typeof val !== 'object')) {\n newobj[`${ prefix }${ key }`] = obj[key].join(',');\n } else if (obj[key] && typeof obj[key] === 'object') {\n newobj = dotify(obj[key], `${ prefix }${ key }`, newobj);\n } else {\n newobj[`${ prefix }${ key }`] = obj[key].toString();\n }\n }\n return newobj;\n}\n\nlet objectIDs = new WeakMap();\n\nexport function getObjectID(obj : Object) : string {\n\n if (obj === null || obj === undefined || (typeof obj !== 'object' && typeof obj !== 'function')) {\n throw new Error(`Invalid object`);\n }\n\n let uid = objectIDs.get(obj);\n\n if (!uid) {\n uid = `${ typeof obj }:${ uniqueID() }`;\n objectIDs.set(obj, uid);\n }\n\n return uid;\n}\n\ntype RegexResultType = {\n text : string,\n groups : Array,\n start : number,\n end : number,\n length : number,\n replace : (text : string) => string\n};\n\nexport function regex(pattern : string | RegExp, string : string, start : number = 0) : ?RegexResultType {\n\n if (typeof pattern === 'string') {\n // eslint-disable-next-line security/detect-non-literal-regexp\n pattern = new RegExp(pattern);\n }\n\n let result = string.slice(start).match(pattern);\n\n if (!result) {\n return;\n }\n\n // $FlowFixMe\n let index : number = result.index;\n let match = result[0];\n\n return {\n text: match,\n groups: result.slice(1),\n start: start + index,\n end: start + index + match.length,\n length: match.length,\n\n replace(text : string) : string {\n\n if (!match) {\n return '';\n }\n\n return `${ match.slice(0, start + index) }${ text }${ match.slice(index + match.length) }`;\n }\n };\n}\n\nexport function regexAll(pattern : string | RegExp, string : string) : Array {\n\n let matches = [];\n let start = 0;\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n let match = regex(pattern, string, start);\n\n if (!match) {\n break;\n }\n\n matches.push(match);\n start = match.end;\n }\n\n return matches;\n}\n\nexport function count(str : string, substr : string) : number {\n\n let startIndex = 0;\n let itemCount = 0;\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n let index = str.indexOf(substr, startIndex);\n\n if (index === -1) {\n break;\n }\n\n startIndex = index;\n itemCount += 1;\n }\n\n return itemCount;\n}\n\nexport function stringify(item : mixed) : string {\n if (typeof item === 'string') {\n return item;\n }\n\n if (item && typeof item.toString === 'function') {\n return item.toString();\n }\n\n return Object.prototype.toString.call(item);\n}\n\nexport function stringifyError(err : mixed) : string {\n if (err) {\n // $FlowFixMe\n let { stack, message } = err;\n\n if (typeof stack === 'string') {\n return stack;\n }\n\n if (typeof message === 'string') {\n return message;\n }\n }\n\n return stringify(err);\n}\n\nexport type EventEmitterType = {\n on : (eventName : string, handler : Function) => CancelableType,\n once : (eventName : string, handler : Function) => CancelableType,\n trigger : (eventName : string) => void,\n triggerOnce : (eventName : string) => void\n};\n\nexport function eventEmitter() : EventEmitterType {\n\n let triggered = {};\n let handlers = {};\n\n return {\n\n on(eventName : string, handler : Function) : CancelableType {\n\n let handlerList = handlers[eventName] = handlers[eventName] || [];\n\n handlerList.push(handler);\n\n let cancelled = false;\n\n return {\n cancel() {\n if (!cancelled) {\n cancelled = true;\n handlerList.splice(handlerList.indexOf(handler), 1);\n }\n\n }\n };\n },\n\n once(eventName : string, handler : Function) : CancelableType {\n\n let listener = this.on(eventName, () => {\n listener.cancel();\n handler();\n });\n\n return listener;\n },\n\n trigger(eventName : string) {\n\n let handlerList = handlers[eventName];\n\n if (handlerList) {\n for (let handler of handlerList) {\n handler();\n }\n }\n },\n\n triggerOnce(eventName : string) {\n\n if (triggered[eventName]) {\n return;\n }\n\n triggered[eventName] = true;\n this.trigger(eventName);\n }\n };\n}\n","/* @flow */\n\nimport { getObjectID, replaceObject } from './util';\n\n\n/* Noop\n ----\n\n Do nothing, zilch, nada, zip\n*/\n\nexport function noop() {\n // pass\n}\n\n\n/* Once\n ----\n\n Create a wrapper function which only allows the inner function to run once, otherwise is a noop\n*/\n\nexport function once(method : (...args : Array) => T) : (...args : Array) => T {\n\n let called = false;\n let result;\n\n // eslint-disable-next-line no-unused-vars\n return function onceWrapper(...args : Array) : T {\n if (called) {\n return result;\n }\n\n called = true;\n result = method.apply(this, arguments);\n return result;\n };\n}\n\n\n/* Memoize\n -------\n\n Create a wrapper function which caches the result of the first call, then for subsequent calls returns the cached value\n*/\n\nexport function memoize(method : (...args : Array) => T) : (...args : Array) => T {\n\n let results = {};\n\n // eslint-disable-next-line no-unused-vars\n return function memoizeWrapper(...args : Array) : T {\n\n let cacheKey;\n\n try {\n cacheKey = JSON.stringify(Array.prototype.slice.call(arguments), (key, val) => {\n\n if (typeof val === 'function') {\n return `zoid:memoize[${ getObjectID(val) }]`;\n }\n\n return val;\n });\n\n } catch (err) {\n throw new Error('Arguments not serializable -- can not be used to memoize');\n }\n\n if (!results.hasOwnProperty(cacheKey)) {\n results[cacheKey] = method.apply(this, arguments);\n }\n\n return results[cacheKey];\n };\n}\n\nexport function debounce(method : (...args : Array) => T, time : number = 100) : (...args : Array) => void {\n\n let timeout;\n\n return function debounceWrapper() {\n clearTimeout(timeout);\n\n timeout = setTimeout(() => {\n return method.apply(this, arguments);\n }, time);\n };\n}\n\nexport function serializeFunctions>(obj : T) : T {\n return replaceObject(obj, {\n 'function': () => {\n return {\n __type__: '__function__'\n };\n }\n });\n}\n\nexport function deserializeFunctions>(obj : T, handler : Function) : T {\n return replaceObject(obj, {\n 'object': (value, key, fullKey) => {\n if (value && value.__type__ === '__function__') {\n return function deserializedFunctionWrapper() : mixed {\n return handler({ key, fullKey, self: this, args: arguments });\n };\n }\n }\n });\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { isWindowClosed, linkFrameWindow, type CrossDomainWindowType, type SameDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\n\nimport { PopupOpenError } from '../error';\nimport type { ElementRefType, CancelableType } from '../types';\n\nimport { once, memoize, debounce } from './fn';\nimport { extend, safeInterval, urlEncode, capitalizeFirstLetter, stringify } from './util';\n\nexport function appendChild(container : HTMLElement, child : HTMLElement | Text) {\n container.appendChild(child);\n}\n\nfunction isElement(element : mixed) : boolean {\n\n if (element instanceof window.Element) {\n return true;\n }\n\n if (element !== null && typeof element === 'object' && element.nodeType === 1 && typeof element.style === 'object' && typeof element.ownerDocument === 'object') {\n return true;\n }\n\n return false;\n}\n\nexport function querySelectorAll(el : HTMLElement, selector : string) : Array {\n return Array.prototype.slice.call(el.querySelectorAll(selector));\n}\n\n/* Get Element\n -----------\n\n Gets an element based on\n\n - Element id\n - CSS Query selector\n*/\n\nexport function getElementSafe(id : ElementRefType) : ?HTMLElement {\n\n if (isElement(id)) {\n // $FlowFixMe\n return id;\n }\n\n if (typeof id === 'string') {\n let element = document.getElementById(id);\n\n if (element) {\n return element;\n }\n\n if (document.querySelector) {\n element = document.querySelector(id);\n }\n\n if (element) {\n return element;\n }\n }\n}\n\nexport function getElement(id : ElementRefType) : HTMLElement {\n\n let element = getElementSafe(id);\n\n if (element) {\n return element;\n }\n\n throw new Error(`Can not find element: ${ stringify(id) }`);\n}\n\n\nexport let documentReady = new ZalgoPromise(resolve => {\n\n if (window.document.readyState === 'complete') {\n return resolve(window.document);\n }\n\n let interval = setInterval(() => {\n if (window.document.readyState === 'complete') {\n clearInterval(interval);\n return resolve(window.document);\n }\n }, 10);\n});\n\nexport function isDocumentReady() : boolean {\n return window.document.readyState === 'complete';\n}\n\nexport function elementReady(id : ElementRefType) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n let name = stringify(id);\n let el = getElementSafe(id);\n\n if (el) {\n return resolve(el);\n }\n\n if (isDocumentReady()) {\n return reject(new Error(`Document is ready and element ${ name } does not exist`));\n }\n\n let interval = setInterval(() => {\n\n el = getElementSafe(id);\n\n if (el) {\n clearInterval(interval);\n return resolve(el);\n }\n\n if (isDocumentReady()) {\n clearInterval(interval);\n return reject(new Error(`Document is ready and element ${ name } does not exist`));\n }\n }, 10);\n });\n}\n\n\n/* Popup\n -----\n\n Open a popup window with the specified option map\n*/\n\nexport function popup(url : string, options : { [ string ] : mixed }) : CrossDomainWindowType {\n\n // eslint-disable-next-line array-callback-return\n let params = Object.keys(options).map((key) => {\n if (options[key]) {\n return `${ key }=${ stringify(options[key]) }`;\n }\n }).filter(Boolean).join(',');\n\n let win;\n\n try {\n win = window.open(url, options.name, params, true);\n } catch (err) {\n throw new PopupOpenError(`Can not open popup window - ${ err.stack || err.message }`);\n }\n\n if (isWindowClosed(win)) {\n let err = new PopupOpenError(`Can not open popup window - blocked`);\n throw err;\n }\n\n return win;\n}\n\n\nexport function writeToWindow(win : SameDomainWindowType, html : string) {\n try {\n win.document.open();\n win.document.write(html);\n win.document.close();\n } catch (err) {\n try {\n win.location = `javascript: document.open(); document.write(${ JSON.stringify(html) }); document.close();`;\n } catch (err2) {\n // pass\n }\n }\n}\n\nexport function writeElementToWindow(win : SameDomainWindowType, el : HTMLElement) {\n\n let tag = el.tagName.toLowerCase();\n\n if (tag !== 'html') {\n throw new Error(`Expected element to be html, got ${ tag }`);\n }\n\n let documentElement = win.document.documentElement;\n\n while (documentElement.children && documentElement.children.length) {\n documentElement.removeChild(documentElement.children[0]);\n }\n\n while (el.children.length) {\n documentElement.appendChild(el.children[0]);\n }\n}\n\nexport function setStyle(el : HTMLElement, styleText : string, doc : Document = window.document) {\n // $FlowFixMe\n if (el.styleSheet) {\n // $FlowFixMe\n el.styleSheet.cssText = styleText;\n } else {\n el.appendChild(doc.createTextNode(styleText));\n }\n}\n\n/* Create Element\n --------------\n\n Create an element with style, html, classes, attributes etc. and append it to the specified container\n*/\n\nexport type ElementOptionsType = {\n style? : { [ string ] : string },\n class? : ?Array,\n attributes? : { [ string ] : string },\n styleSheet? : ?string,\n html? : ?string\n};\n\nexport function createElement(tag : string = 'div', options : ElementOptionsType = {}, container : ?HTMLElement) : HTMLElement {\n\n tag = tag.toLowerCase();\n let element = document.createElement(tag);\n\n if (options.style) {\n extend(element.style, options.style);\n }\n\n if (options.class) {\n element.className = options.class.join(' ');\n }\n\n if (options.attributes) {\n for (let key of Object.keys(options.attributes)) {\n element.setAttribute(key, options.attributes[key]);\n }\n }\n\n if (options.styleSheet) {\n setStyle(element, options.styleSheet);\n }\n\n if (container) {\n appendChild(container, element);\n }\n\n if (options.html) {\n if (tag === 'iframe') {\n // $FlowFixMe\n if (!container || !element.contentWindow) {\n throw new Error(`Iframe html can not be written unless container provided and iframe in DOM`);\n }\n\n // $FlowFixMe\n writeToWindow(element.contentWindow, options.html);\n\n } else {\n element.innerHTML = options.html;\n }\n }\n\n return element;\n}\n\nlet awaitFrameLoadPromises : WeakMap> = new WeakMap();\n\nexport function awaitFrameLoad(frame : HTMLIFrameElement) : ZalgoPromise {\n\n if (awaitFrameLoadPromises.has(frame)) {\n let promise = awaitFrameLoadPromises.get(frame);\n if (promise) {\n return promise;\n }\n }\n\n let promise = new ZalgoPromise((resolve, reject) => {\n frame.addEventListener('load', () => {\n linkFrameWindow(frame);\n resolve(frame);\n });\n\n frame.addEventListener('error', (err : Event) => {\n if (frame.contentWindow) {\n resolve(frame);\n } else {\n reject(err);\n }\n });\n });\n\n awaitFrameLoadPromises.set(frame, promise);\n\n return promise;\n}\n\nexport function awaitFrameWindow(frame : HTMLIFrameElement) : ZalgoPromise {\n\n if (frame.contentWindow) {\n return ZalgoPromise.resolve(frame.contentWindow);\n }\n\n return awaitFrameLoad(frame).then(loadedFrame => {\n\n if (!loadedFrame.contentWindow) {\n throw new Error(`Could not find window in iframe`);\n }\n\n return loadedFrame.contentWindow;\n });\n}\n\n\n/* Iframe\n ------\n\n Open an iframe with the specified container, url, and option property map\n*/\n\nexport type IframeElementOptionsType = {\n style? : { [ string ] : string },\n class? : ?Array,\n attributes? : { [ string ] : string },\n styleSheet? : ?string,\n html? : ?string,\n url? : ?string\n};\n\nexport function iframe(options : IframeElementOptionsType = {}, container : HTMLElement) : HTMLIFrameElement {\n\n let el = getElement(container);\n\n let attributes = options.attributes || {};\n let style = options.style || {};\n\n let frame = createElement('iframe', {\n attributes: {\n frameBorder: '0',\n allowTransparency: 'true',\n ...attributes\n },\n style: {\n backgroundColor: 'transparent',\n ...style\n },\n html: options.html,\n class: options.class\n });\n\n // $FlowFixMe\n awaitFrameLoad(frame);\n\n el.appendChild(frame);\n\n if (options.url || window.navigator.userAgent.match(/MSIE|Edge/i)) {\n frame.setAttribute('src', options.url || 'about:blank');\n }\n\n // $FlowFixMe\n return frame;\n}\n\n/* Add Event Listener\n ------------------\n\n Add DOM Event listener with cancel\n*/\n\nexport function addEventListener(obj : HTMLElement, event : string, handler : (event : Event) => void) : CancelableType {\n obj.addEventListener(event, handler);\n return {\n cancel() {\n obj.removeEventListener(event, handler);\n }\n };\n}\n\n/* Scan For Javascript\n -------------------\n\n Check if the string contains anything which could conceivably be run as javascript if the string is set to innerHTML\n*/\n\nexport function scanForJavascript(str : string) : string {\n\n if (!str) {\n return str;\n }\n\n if (str.match(/ {\n\n let params = {};\n\n if (!queryString) {\n return params;\n }\n\n if (queryString.indexOf('=') === -1) {\n throw new Error(`Can not parse query string params: ${ queryString }`);\n }\n\n for (let pair of queryString.split('&')) {\n pair = pair.split('=');\n\n if (pair[0] && pair[1]) {\n params[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n }\n\n return params;\n});\n\n\nexport function getQueryParam(name : string) : ?string {\n return parseQuery(window.location.search.slice(1))[name];\n}\n\nexport function formatQuery(obj : { [ string ] : string } = {}) : string {\n\n return Object.keys(obj).filter(key => {\n return typeof obj[key] === 'string';\n }).map(key => {\n return `${ urlEncode(key) }=${ urlEncode(obj[key]) }`;\n }).join('&');\n}\n\nexport function extendQuery(originalQuery : string, props : { [ string ] : string } = {}) : string {\n\n if (!props || !Object.keys(props).length) {\n return originalQuery;\n }\n\n return formatQuery({\n ...parseQuery(originalQuery),\n ...props\n });\n}\n\nexport function extendUrl(url : string, options : { query? : { [ string ] : string }, hash? : { [ string ] : string } } = {}) : string {\n\n let query = options.query || {};\n let hash = options.hash || {};\n\n let originalUrl;\n let originalQuery;\n let originalHash;\n\n [ originalUrl, originalHash ] = url.split('#');\n [ originalUrl, originalQuery ] = originalUrl.split('?');\n\n let queryString = extendQuery(originalQuery, query);\n let hashString = extendQuery(originalHash, hash);\n\n if (queryString) {\n originalUrl = `${ originalUrl }?${ queryString }`;\n }\n\n if (hashString) {\n originalUrl = `${ originalUrl }#${ hashString }`;\n }\n\n return originalUrl;\n}\n\n\nexport function elementStoppedMoving(element : ElementRefType, timeout : number = 5000) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n let el = getElement(element);\n\n let start = el.getBoundingClientRect();\n\n let interval;\n let timer;\n\n interval = setInterval(() => {\n let end = el.getBoundingClientRect();\n\n if (start.top === end.top && start.bottom === end.bottom && start.left === end.left && start.right === end.right && start.width === end.width && start.height === end.height) {\n clearTimeout(timer);\n clearInterval(interval);\n return resolve();\n }\n\n start = end;\n\n }, 50);\n\n timer = setTimeout(() => {\n clearInterval(interval);\n reject(new Error(`Timed out waiting for element to stop animating after ${ timeout }ms`));\n }, timeout);\n });\n}\n\nexport function getCurrentDimensions(el : HTMLElement) : { width : number, height : number } {\n return {\n width: el.offsetWidth,\n height: el.offsetHeight\n };\n}\n\nexport function changeStyle(el : HTMLElement, styles : { [ string ] : string }) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n\n for (let key of Object.keys(styles)) {\n // $FlowFixMe\n el.style[key] = styles[key];\n }\n\n setTimeout(resolve, 1);\n });\n}\n\nexport function setOverflow(el : HTMLElement, value : string = 'auto') : { reset : () => void } {\n\n let { overflow, overflowX, overflowY } = el.style;\n\n el.style.overflow = el.style.overflowX = el.style.overflowY = value;\n\n return {\n reset() {\n el.style.overflow = overflow;\n el.style.overflowX = overflowX;\n el.style.overflowY = overflowY;\n }\n };\n}\n\nfunction dimensionsDiff(one : { width : number, height : number }, two : { width : number, height : number }, { width = true, height = true, threshold = 0 } : { width : boolean, height : boolean, threshold : number }) : boolean {\n\n if (width && Math.abs(one.width - two.width) > threshold) {\n return true;\n }\n\n if (height && Math.abs(one.height - two.height) > threshold) {\n return true;\n }\n\n return false;\n}\n\nexport function trackDimensions(el : HTMLElement, { width = true, height = true, threshold = 0 } : { width : boolean, height : boolean, threshold : number }) : { check : () => { changed : boolean, dimensions : { width : number, height : number } }, reset : () => void } {\n\n let currentDimensions = getCurrentDimensions(el);\n\n return {\n check() : { changed : boolean, dimensions : { width : number, height : number } } {\n let newDimensions = getCurrentDimensions(el);\n\n return {\n changed: dimensionsDiff(currentDimensions, newDimensions, { width, height, threshold }),\n dimensions: newDimensions\n };\n },\n\n reset() {\n currentDimensions = getCurrentDimensions(el);\n }\n };\n}\n\nexport function onDimensionsChange(el : HTMLElement, { width = true, height = true, delay = 50, threshold = 0 } : { width? : boolean, height? : boolean, delay? : number, threshold? : number }) : ZalgoPromise<{ width : number, height : number }> {\n\n return new ZalgoPromise(resolve => {\n\n let tracker = trackDimensions(el, { width, height, threshold });\n\n let interval;\n\n let resolver = debounce((dimensions) => {\n clearInterval(interval);\n return resolve(dimensions);\n }, delay * 4);\n\n interval = setInterval(() => {\n let { changed, dimensions } = tracker.check();\n if (changed) {\n tracker.reset();\n return resolver(dimensions);\n }\n }, delay);\n\n function onWindowResize() {\n let { changed, dimensions } = tracker.check();\n if (changed) {\n tracker.reset();\n window.removeEventListener('resize', onWindowResize);\n resolver(dimensions);\n }\n }\n\n window.addEventListener('resize', onWindowResize);\n });\n}\n\n\nexport function dimensionsMatchViewport(el : HTMLElement, { width, height } : { width : number, height : number }) : boolean {\n\n let dimensions = getCurrentDimensions(el);\n\n if (width && dimensions.width !== window.innerWidth) {\n return false;\n }\n\n if (height && dimensions.height !== window.innerHeight) {\n return false;\n }\n\n return true;\n}\n\n\nexport function bindEvents(element : HTMLElement, eventNames : Array, handler : (event : Event) => void) : CancelableType {\n\n handler = once(handler);\n\n for (let eventName of eventNames) {\n element.addEventListener(eventName, handler);\n }\n\n return {\n cancel: once(() => {\n for (let eventName of eventNames) {\n element.removeEventListener(eventName, handler);\n }\n })\n };\n}\n\nconst VENDOR_PREFIXES = [ 'webkit', 'moz', 'ms', 'o' ];\n\nexport function setVendorCSS(element : HTMLElement, name : string, value : string) {\n\n // $FlowFixMe\n element.style[name] = value;\n\n let capitalizedName = capitalizeFirstLetter(name);\n\n for (let prefix of VENDOR_PREFIXES) {\n // $FlowFixMe\n element.style[`${ prefix }${ capitalizedName }`] = value;\n }\n}\n\n\nlet CSSRule = window.CSSRule;\n\nconst KEYFRAMES_RULE = CSSRule.KEYFRAMES_RULE || CSSRule.WEBKIT_KEYFRAMES_RULE || CSSRule.MOZ_KEYFRAMES_RULE ||\n CSSRule.O_KEYFRAMES_RULE || CSSRule.MS_KEYFRAMES_RULE;\n\nfunction isValidAnimation(element : HTMLElement, name : string) : boolean {\n\n let stylesheets = element.ownerDocument.styleSheets;\n\n try {\n for (let i = 0; i < stylesheets.length; i++) {\n\n // $FlowFixMe\n let cssRules = stylesheets[i].cssRules;\n\n if (!cssRules) {\n continue;\n }\n\n for (let j = 0; j < cssRules.length; j++) {\n\n let cssRule = cssRules[j];\n\n if (!cssRule) {\n continue;\n }\n\n if (cssRule.type === KEYFRAMES_RULE && cssRule.name === name) {\n return true;\n }\n }\n }\n } catch (err) {\n\n return false;\n }\n\n\n return false;\n}\n\n\nconst ANIMATION_START_EVENTS = [ 'animationstart', 'webkitAnimationStart', 'oAnimationStart', 'MSAnimationStart' ];\nconst ANIMATION_END_EVENTS = [ 'animationend', 'webkitAnimationEnd', 'oAnimationEnd', 'MSAnimationEnd' ];\n\nexport function animate(element : ElementRefType, name : string, clean : (Function) => void, timeout : number = 1000) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n let el = getElement(element);\n\n if (!el || !isValidAnimation(el, name)) {\n return resolve();\n }\n\n let hasStarted = false;\n\n let startTimeout;\n let endTimeout;\n let startEvent;\n let endEvent;\n\n function cleanUp() {\n setVendorCSS(el, 'animationName', '');\n clearTimeout(startTimeout);\n clearTimeout(endTimeout);\n startEvent.cancel();\n endEvent.cancel();\n }\n\n startEvent = bindEvents(el, ANIMATION_START_EVENTS, event => {\n\n // $FlowFixMe\n if (event.target !== el || event.animationName !== name) {\n return;\n }\n\n clearTimeout(startTimeout);\n\n event.stopPropagation();\n\n startEvent.cancel();\n hasStarted = true;\n\n endTimeout = setTimeout(() => {\n cleanUp();\n resolve();\n }, timeout);\n });\n\n endEvent = bindEvents(el, ANIMATION_END_EVENTS, event => {\n\n // $FlowFixMe\n if (event.target !== el || event.animationName !== name) {\n return;\n }\n\n cleanUp();\n\n // $FlowFixMe\n if (typeof event.animationName === 'string' && event.animationName !== name) {\n return reject(`Expected animation name to be ${ name }, found ${ event.animationName }`);\n }\n\n return resolve();\n });\n\n setVendorCSS(el, 'animationName', name);\n\n startTimeout = setTimeout(() => {\n if (!hasStarted) {\n cleanUp();\n return resolve();\n }\n }, 200);\n\n if (clean) {\n clean(cleanUp);\n }\n });\n}\n\nconst STYLE = {\n\n DISPLAY: {\n NONE: 'none',\n BLOCK: 'block'\n },\n\n VISIBILITY: {\n VISIBLE: 'visible',\n HIDDEN: 'hidden'\n },\n\n IMPORTANT: 'important'\n};\n\nexport function makeElementVisible(element : HTMLElement) {\n element.style.setProperty('visibility', '');\n}\n\nexport function makeElementInvisible(element : HTMLElement) {\n element.style.setProperty('visibility', STYLE.VISIBILITY.HIDDEN, STYLE.IMPORTANT);\n}\n\n\nexport function showElement(element : HTMLElement) {\n element.style.setProperty('display', '');\n}\n\nexport function hideElement(element : HTMLElement) {\n element.style.setProperty('display', STYLE.DISPLAY.NONE, STYLE.IMPORTANT);\n}\n\nexport function destroyElement(element : HTMLElement) {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n}\n\nexport function showAndAnimate(element : HTMLElement, name : string, clean : (Function) => void) : ZalgoPromise {\n let animation = animate(element, name, clean);\n showElement(element);\n return animation;\n}\n\nexport function animateAndHide(element : HTMLElement, name : string, clean : (Function) => void) : ZalgoPromise {\n return animate(element, name, clean).then(() => {\n hideElement(element);\n });\n}\n\nexport function addClass(element : HTMLElement, name : string) {\n if (element.classList) {\n element.classList.add(name);\n } else if (element.className.split(/\\s+/).indexOf(name) === -1) {\n element.className += ` ${ name }`;\n }\n}\n\nexport function removeClass(element : HTMLElement, name : string) {\n if (element.classList) {\n element.classList.remove(name);\n } else if (element.className.split(/\\s+/).indexOf(name) !== -1) {\n element.className = element.className.replace(name, '');\n }\n}\n\nexport function getCurrentScriptDir() : string {\n // eslint-disable-next-line no-console\n console.warn(`Do not use zoid.getCurrentScriptDir() in production -- browser support is limited`);\n\n // eslint-disable-next-line compat/compat\n if (document.currentScript) {\n // eslint-disable-next-line compat/compat\n return document.currentScript.src.split('/').slice(0, -1).join('/');\n }\n\n return '.';\n}\n\nexport function getElementName(element : ElementRefType) : string {\n\n if (typeof element === 'string') {\n return element;\n }\n\n if (!element || !element.tagName) {\n return '';\n }\n\n let name = element.tagName.toLowerCase();\n\n if (element.id) {\n name += `#${ element.id }`;\n } else if (element.className) {\n name += `.${ element.className.split(' ').join('.') }`;\n }\n\n return name;\n}\n\nexport function isElementClosed(el : HTMLElement) : boolean {\n if (!el || !el.parentNode) {\n return true;\n }\n return false;\n}\n\nexport function watchElementForClose(element : HTMLElement, handler : () => mixed) : CancelableType {\n handler = once(handler);\n\n let interval;\n\n if (isElementClosed(element)) {\n handler();\n } else {\n interval = safeInterval(() => {\n if (isElementClosed(element)) {\n interval.cancel();\n handler();\n }\n }, 50);\n }\n\n return {\n cancel() {\n if (interval) {\n interval.cancel();\n }\n }\n };\n}\n\nexport function getHttpType(contentType : string, url : string) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n let req = new window.XMLHttpRequest();\n\n req.open('GET', url);\n req.setRequestHeader('Accept', contentType);\n req.send(null);\n\n req.onload = () => {\n resolve(req.responseText);\n };\n\n req.onerror = () => {\n return reject(new Error(`prefetch failed`));\n };\n });\n}\n\nexport function getHTML(url : string) : ZalgoPromise {\n return getHttpType('text/html', url);\n}\n\nexport function getCSS(url : string) : ZalgoPromise {\n return getHttpType('text/css', url);\n}\n\nexport function getScript(url : string) : ZalgoPromise {\n return getHttpType('*/*', url);\n}\n\nexport function prefetchPage(url : string) : ZalgoPromise {\n return getHTML(url);\n}\n\nconst JSX_EVENTS = {\n onClick: 'click'\n};\n\nexport function fixScripts(el : HTMLElement, doc : Document = window.document) {\n for (let script of querySelectorAll(el, 'script')) {\n let newScript = doc.createElement('script');\n newScript.text = script.textContent;\n script.parentNode.replaceChild(newScript, script);\n }\n}\n\nexport function jsxDom(name : string, props : ?{ [ string ] : mixed }, content : ElementRefType) : HTMLElement {\n\n name = name.toLowerCase();\n\n let doc = (this && this.createElement)\n ? this\n : window.document;\n\n let el = doc.createElement(name);\n\n for (let prop in props) {\n if (prop in JSX_EVENTS) {\n el.addEventListener(JSX_EVENTS[prop], props[prop]);\n } else if (prop === 'innerHTML') {\n el.innerHTML = props[prop];\n fixScripts(el, doc);\n } else {\n el.setAttribute(prop, props[prop]);\n }\n }\n\n if (name === 'style') {\n\n if (typeof content !== 'string') {\n throw new TypeError(`Expected ${ name } tag content to be string, got ${ typeof content }`);\n }\n\n if (arguments.length > 3) {\n throw new Error(`Expected only text content for ${ name } tag`);\n }\n\n setStyle(el, content, doc);\n\n } else if (name === 'iframe') {\n\n if (arguments.length > 3) {\n throw new Error(`Expected only single child node for iframe`);\n }\n\n el.addEventListener('load', () => {\n let win = el.contentWindow;\n\n if (!win) {\n throw new Error(`Expected frame to have contentWindow`);\n }\n\n if (typeof content === 'string') {\n writeToWindow(win, content);\n } else {\n writeElementToWindow(win, content);\n }\n });\n\n } else if (name === 'script') {\n\n if (typeof content !== 'string') {\n throw new TypeError(`Expected ${ name } tag content to be string, got ${ typeof content }`);\n }\n\n if (arguments.length > 3) {\n throw new Error(`Expected only text content for ${ name } tag`);\n }\n\n el.text = content;\n\n } else {\n for (let i = 2; i < arguments.length; i++) {\n if (typeof arguments[i] === 'string') {\n let textNode = doc.createTextNode(arguments[i]);\n appendChild(el, textNode);\n } else {\n appendChild(el, arguments[i]);\n }\n }\n }\n\n return el;\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\n\n/* DeNodeify\n ---------\n\n Turns a method from a function which accepts a callback, into a function which returns a promise.\n*/\n\nexport function denodeify(method : (...args : Array) => T) : (...args : Array) => ZalgoPromise {\n\n return function denodeifyWrapper() : ZalgoPromise {\n\n let self = this;\n let args = Array.prototype.slice.call(arguments);\n\n if (args.length >= method.length) {\n return ZalgoPromise.resolve(method.apply(self, args));\n }\n\n return new ZalgoPromise((resolve, reject) => {\n args.push((err, result) => {\n\n if (err && !(err instanceof Error)) {\n throw new Error(`Passed non-Error object in callback: [ ${ err } ] -- callbacks should either be called with callback(new Error(...)) or callback(null, result).`);\n }\n\n return err ? reject(err) : resolve(result);\n });\n method.apply(self, args);\n });\n };\n}\n\nexport function promisify(method : (...args : Array) => T | ZalgoPromise) : (...args : Array) => ZalgoPromise {\n return function promisifyWRapper() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n return method.apply(this, arguments);\n });\n };\n}\n\nexport function delay(time : number = 1) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n setTimeout(resolve, time);\n });\n}\n\nexport function cycle(method : Function) : ZalgoPromise {\n return ZalgoPromise.try(method).then(() => cycle(method));\n}\n","/* @flow */\n\nexport function isPerc(str : string) : boolean {\n return typeof str === 'string' && (/^[0-9]+%$/).test(str);\n}\n\nexport function isPx(str : string) : boolean {\n return typeof str === 'string' && (/^[0-9]+px$/).test(str);\n}\n\nexport function toNum(val : string | number) : number {\n\n if (typeof val === 'number') {\n return val;\n }\n\n let match = val.match(/^([0-9]+)(px|%)$/);\n\n if (!match) {\n throw new Error(`Could not match css value from ${ val }`);\n }\n\n return parseInt(match[1], 10);\n}\n\nexport function toPx(val : number | string) : string {\n return `${ toNum(val) }px`;\n}\n\nexport function toCSS(val : number | string) : string {\n\n if (typeof val === 'number') {\n return toPx(val);\n }\n\n return isPerc(val) ? val : toPx(val);\n}\n\nexport function percOf(num : number, perc : string) : number {\n return parseInt(num * toNum(perc) / 100, 10);\n}\n\nexport function normalizeDimension(dim : string | number, max : number) : number {\n if (typeof dim === 'number') {\n return dim;\n } else if (isPerc(dim)) {\n return percOf(max, dim);\n } else if (isPx(dim)) {\n return toNum(dim);\n } else {\n throw new Error(`Can not normalize dimension: ${ dim }`);\n }\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nexport function memoized(target : Object, name : string, descriptor : Object) {\n let method = descriptor.value;\n\n descriptor.value = function memoizedFunction() : T {\n\n this.__memoized__ = this.__memoized__ || {};\n\n if (!this.__memoized__.hasOwnProperty(name)) {\n this.__memoized__[name] = method.apply(this, arguments);\n }\n\n return this.__memoized__[name];\n };\n\n descriptor.value.displayName = `${ name }:memoized`;\n}\n\nexport function promise(target : Object, name : string, descriptor : Object) {\n let method = descriptor.value;\n\n descriptor.value = function promisifiedFunction() : ZalgoPromise {\n return ZalgoPromise.try(method, this, arguments);\n };\n\n descriptor.value.displayName = `${ name }:promisified`;\n}\n","/* @flow */\n\nimport { CONFIG } from 'post-robot/src';\nimport { config, logLevels, info as logInfo, warn as logWarn, error as logError } from 'beaver-logger/client';\n\nexport function setLogLevel(logLevel : string) {\n if (logLevels.indexOf(logLevel) === -1) {\n throw new Error(`Invalid logLevel: ${ logLevel }`);\n }\n config.logLevel = logLevel;\n CONFIG.LOG_LEVEL = logLevel;\n window.LOG_LEVEL = logLevel;\n}\n\nexport function info(name : string, event : string, payload : Object = {}) {\n logInfo(`xc_${ name }_${ event }`, payload);\n}\n\n\n/* Log Warning\n -----------\n\n Log a warning\n*/\n\nexport function warn(name : string, event : string, payload : Object = {}) {\n logWarn(`xc_${ name }_${ event }`, payload);\n}\n\n\n/* Log Error\n ---------\n\n Log an error\n*/\n\nexport function error(name : string, event : string, payload : Object = {}) {\n logError(`xc_${ name }_${ event }`, payload);\n}\n","/* @flow */\n\nimport { isSameDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { __ZOID__ } from '../constants';\n\nexport function globalFor(win : CrossDomainWindowType) : ?Object {\n\n if (!isSameDomain(win)) {\n return;\n }\n\n if (!win[__ZOID__]) {\n win[__ZOID__] = {};\n }\n\n return win[__ZOID__];\n}\n\nexport function localGlobal() : Object {\n let global = globalFor(window);\n\n if (!global) {\n throw new Error(`Could not get local global`);\n }\n\n return global;\n}\n\nexport let global = localGlobal();\n","/* @flow */\n\nexport * from './dom';\nexport * from './fn';\nexport * from './promise';\nexport * from './util';\nexport * from './css';\nexport * from './decorators';\nexport * from './logger';\nexport * from './global';\n","/* @flow */\n\nexport function isRegex(item : mixed) : boolean {\n return Object.prototype.toString.call(item) === '[object RegExp]';\n}\n\n// eslint-disable-next-line no-unused-vars\nexport function noop(...args : Array) {\n // pass\n}\n","/* @flow */\n\nexport const PROTOCOL = {\n MOCK: ('mock:' : 'mock:'),\n FILE: ('file:' : 'file:'),\n ABOUT: ('about:' : 'about:')\n};\n\nexport const WILDCARD = '*';\n\nexport const WINDOW_TYPE = {\n IFRAME: ('iframe' : 'iframe'),\n POPUP: ('popup' : 'popup')\n};\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { isRegex, noop } from './util';\nimport type { CrossDomainWindowType, SameDomainWindowType, DomainMatcher } from './types';\nimport { PROTOCOL, WILDCARD } from './constants';\n\nlet IE_WIN_ACCESS_ERROR = 'Call was rejected by callee.\\r\\n';\n\nexport function isFileProtocol(win : SameDomainWindowType = window) : boolean {\n return win.location.protocol === PROTOCOL.FILE;\n}\n\nexport function isAboutProtocol(win : SameDomainWindowType = window) : boolean {\n return win.location.protocol === PROTOCOL.ABOUT;\n}\n\nexport function getParent(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n\n if (!win) {\n return;\n }\n\n try {\n if (win.parent && win.parent !== win) {\n return win.parent;\n }\n } catch (err) {\n // pass\n }\n}\n\nexport function getOpener(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n\n if (!win) {\n return;\n }\n\n // Make sure we're not actually an iframe which has had window.open() called on us\n if (getParent(win)) {\n return;\n }\n\n try {\n return win.opener;\n } catch (err) {\n // pass\n }\n}\n\nexport function canReadFromWindow(win : CrossDomainWindowType | SameDomainWindowType) : boolean {\n try {\n // $FlowFixMe\n noop(win && win.location && win.location.href);\n return true;\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\nexport function getActualDomain(win? : SameDomainWindowType = window) : string {\n\n let location = win.location;\n\n if (!location) {\n throw new Error(`Can not read window location`);\n }\n\n let protocol = location.protocol;\n\n if (!protocol) {\n throw new Error(`Can not read window protocol`);\n }\n\n if (protocol === PROTOCOL.FILE) {\n return `${ PROTOCOL.FILE }//`;\n }\n\n if (protocol === PROTOCOL.ABOUT) {\n\n let parent = getParent(win);\n if (parent && canReadFromWindow(parent)) {\n // $FlowFixMe\n return getActualDomain(parent);\n }\n\n return `${ PROTOCOL.ABOUT }//`;\n }\n\n let host = location.host;\n\n if (!host) {\n throw new Error(`Can not read window host`);\n }\n\n return `${ protocol }//${ host }`;\n}\n\nexport function getDomain(win? : SameDomainWindowType = window) : string {\n\n let domain = getActualDomain(win);\n\n if (domain && win.mockDomain && win.mockDomain.indexOf(PROTOCOL.MOCK) === 0) {\n return win.mockDomain;\n }\n\n return domain;\n}\n\nexport function isBlankDomain(win : CrossDomainWindowType) : boolean {\n try {\n // $FlowFixMe\n if (!win.location.href) {\n return true;\n }\n\n if (win.location.href === 'about:blank') {\n return true;\n }\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\nexport function isActuallySameDomain(win : CrossDomainWindowType) : boolean {\n\n try {\n if (win === window) {\n return true;\n }\n\n } catch (err) {\n // pass\n }\n\n try {\n let desc = Object.getOwnPropertyDescriptor(win, 'location');\n\n if (desc && desc.enumerable === false) {\n return false;\n }\n\n } catch (err) {\n // pass\n }\n\n try {\n // $FlowFixMe\n if (isAboutProtocol(win) && canReadFromWindow(win)) {\n return true;\n }\n } catch (err) {\n // pass\n }\n\n try {\n // $FlowFixMe\n if (getActualDomain(win) === getActualDomain(window)) {\n return true;\n }\n\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\nexport function isSameDomain(win : CrossDomainWindowType | SameDomainWindowType) : boolean {\n\n if (!isActuallySameDomain(win)) {\n return false;\n }\n\n try {\n\n if (win === window) {\n return true;\n }\n\n // $FlowFixMe\n if (isAboutProtocol(win) && canReadFromWindow(win)) {\n return true;\n }\n\n // $FlowFixMe\n if (getDomain(window) === getDomain(win)) {\n return true;\n }\n\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\n\nexport function assertSameDomain(win : CrossDomainWindowType | SameDomainWindowType) : SameDomainWindowType {\n if (!isSameDomain(win)) {\n throw new Error(`Expected window to be same domain`);\n }\n\n // $FlowFixMe\n return win;\n}\n\nexport function getParents(win : CrossDomainWindowType) : Array {\n\n let result = [];\n\n try {\n\n while (win.parent !== win) {\n result.push(win.parent);\n win = win.parent;\n }\n\n } catch (err) {\n // pass\n }\n\n return result;\n}\n\nexport function isAncestorParent(parent : CrossDomainWindowType, child : CrossDomainWindowType) : boolean {\n\n if (!parent || !child) {\n return false;\n }\n\n let childParent = getParent(child);\n\n if (childParent) {\n return childParent === parent;\n }\n\n if (getParents(child).indexOf(parent) !== -1) {\n return true;\n }\n\n return false;\n}\n\nexport function getFrames(win : CrossDomainWindowType) : Array {\n\n let result = [];\n\n let frames;\n\n try {\n frames = win.frames;\n } catch (err) {\n frames = win;\n }\n\n let len;\n\n try {\n len = frames.length;\n } catch (err) {\n // pass\n }\n\n if (len === 0) {\n return result;\n }\n\n if (len) {\n for (let i = 0; i < len; i++) {\n\n let frame;\n\n try {\n frame = frames[i];\n } catch (err) {\n continue;\n }\n\n result.push(frame);\n }\n\n return result;\n }\n\n for (let i = 0; i < 100; i++) {\n let frame;\n\n try {\n frame = frames[i];\n } catch (err) {\n return result;\n }\n\n if (!frame) {\n return result;\n }\n\n result.push(frame);\n }\n\n return result;\n}\n\n\nexport function getAllChildFrames(win : CrossDomainWindowType) : Array {\n\n let result = [];\n\n for (let frame of getFrames(win)) {\n result.push(frame);\n\n for (let childFrame of getAllChildFrames(frame)) {\n result.push(childFrame);\n }\n }\n\n return result;\n}\n\nexport function getTop(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n\n try {\n if (win.top) {\n return win.top;\n }\n } catch (err) {\n // pass\n }\n\n if (getParent(win) === win) {\n return win;\n }\n\n try {\n if (isAncestorParent(window, win) && window.top) {\n return window.top;\n }\n } catch (err) {\n // pass\n }\n\n try {\n if (isAncestorParent(win, window) && window.top) {\n return window.top;\n }\n } catch (err) {\n // pass\n }\n\n for (let frame of getAllChildFrames(win)) {\n try {\n if (frame.top) {\n return frame.top;\n }\n } catch (err) {\n // pass\n }\n\n if (getParent(frame) === frame) {\n return frame;\n }\n }\n}\n\nexport function getNextOpener(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n return getOpener(getTop(win) || win);\n}\n\nexport function getUltimateTop(win? : CrossDomainWindowType = window) : CrossDomainWindowType {\n let opener = getNextOpener(win);\n\n if (opener) {\n return getUltimateTop(opener);\n }\n\n return top;\n}\n\nexport function getAllFramesInWindow(win : CrossDomainWindowType) : Array {\n let top = getTop(win);\n\n if (!top) {\n throw new Error(`Can not determine top window`);\n }\n\n return [ ...getAllChildFrames(top), top ];\n}\n\nexport function getAllWindows(win? : CrossDomainWindowType = window) : $ReadOnlyArray {\n let frames = getAllFramesInWindow(win);\n let opener = getNextOpener(win);\n\n if (opener) {\n return [ ...getAllWindows(opener), ...frames ];\n } else {\n return frames;\n }\n}\n\nexport function isTop(win : CrossDomainWindowType) : boolean {\n return win === getTop(win);\n}\n\nexport function isFrameWindowClosed(frame : HTMLIFrameElement) : boolean {\n\n if (!frame.contentWindow) {\n return true;\n }\n\n if (!frame.parentNode) {\n return true;\n }\n\n let doc = frame.ownerDocument;\n\n if (doc && doc.documentElement && !doc.documentElement.contains(frame)) {\n return true;\n }\n\n return false;\n}\n\nfunction safeIndexOf(collection : Array, item : T) : number {\n for (let i = 0; i < collection.length; i++) {\n\n try {\n if (collection[i] === item) {\n return i;\n }\n } catch (err) {\n // pass\n }\n }\n\n return -1;\n}\n\nlet iframeWindows = [];\nlet iframeFrames = [];\n\nexport function isWindowClosed(win : CrossDomainWindowType, allowMock : boolean = true) : boolean {\n\n try {\n if (win === window) {\n return false;\n }\n } catch (err) {\n return true;\n }\n\n try {\n if (!win) {\n return true;\n }\n\n } catch (err) {\n return true;\n }\n\n try {\n if (win.closed) {\n return true;\n }\n\n } catch (err) {\n\n // I love you so much IE\n\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return false;\n }\n\n return true;\n }\n\n\n if (allowMock && isSameDomain(win)) {\n try {\n // $FlowFixMe\n if (win.mockclosed) {\n return true;\n }\n } catch (err) {\n // pass\n }\n }\n\n // Mobile safari\n\n try {\n if (!win.parent || !win.top) {\n return true;\n }\n } catch (err) {\n // pass\n }\n\n // Yes, this actually happens in IE. win === win errors out when the window\n // is from an iframe, and the iframe was removed from the page.\n\n try {\n noop(win === win); // eslint-disable-line no-self-compare\n } catch (err) {\n return true;\n }\n\n // IE orphaned frame\n\n let iframeIndex = safeIndexOf(iframeWindows, win);\n\n if (iframeIndex !== -1) {\n let frame = iframeFrames[iframeIndex];\n\n if (frame && isFrameWindowClosed(frame)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction cleanIframes() {\n for (let i = 0; i < iframeWindows.length; i++) {\n let closed = false;\n\n try {\n closed = iframeWindows[i].closed;\n } catch (err) {\n // pass\n }\n\n if (closed) {\n iframeFrames.splice(i, 1);\n iframeWindows.splice(i, 1);\n }\n }\n}\n\nexport function linkFrameWindow(frame : HTMLIFrameElement) {\n\n cleanIframes();\n\n if (frame && frame.contentWindow) {\n try {\n iframeWindows.push(frame.contentWindow);\n iframeFrames.push(frame);\n } catch (err) {\n // pass\n }\n }\n}\n\nexport function getUserAgent(win : ?SameDomainWindowType) : string {\n win = win || window;\n return win.navigator.mockUserAgent || win.navigator.userAgent;\n}\n\n\nexport function getFrameByName(win : CrossDomainWindowType, name : string) : ?CrossDomainWindowType {\n\n let winFrames = getFrames(win);\n\n for (let childFrame of winFrames) {\n try {\n // $FlowFixMe\n if (isSameDomain(childFrame) && childFrame.name === name && winFrames.indexOf(childFrame) !== -1) {\n return childFrame;\n }\n } catch (err) {\n // pass\n }\n }\n\n try {\n // $FlowFixMe\n if (winFrames.indexOf(win.frames[name]) !== -1) {\n // $FlowFixMe\n return win.frames[name];\n }\n } catch (err) {\n // pass\n }\n\n try {\n if (winFrames.indexOf(win[name]) !== -1) {\n return win[name];\n }\n } catch (err) {\n // pass\n }\n}\n\nexport function findChildFrameByName(win : CrossDomainWindowType, name : string) : ?CrossDomainWindowType {\n\n let frame = getFrameByName(win, name);\n\n if (frame) {\n return frame;\n }\n\n for (let childFrame of getFrames(win)) {\n let namedFrame = findChildFrameByName(childFrame, name);\n\n if (namedFrame) {\n return namedFrame;\n }\n }\n}\n\nexport function findFrameByName(win : CrossDomainWindowType, name : string) : ?CrossDomainWindowType {\n\n let frame;\n\n frame = getFrameByName(win, name);\n\n if (frame) {\n return frame;\n }\n\n let top = getTop(win) || win;\n\n return findChildFrameByName(top, name);\n}\n\nexport function isParent(win : CrossDomainWindowType, frame : CrossDomainWindowType) : boolean {\n\n let frameParent = getParent(frame);\n\n if (frameParent) {\n return frameParent === win;\n }\n\n for (let childFrame of getFrames(win)) {\n if (childFrame === frame) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function isOpener(parent : CrossDomainWindowType, child : CrossDomainWindowType) : boolean {\n\n return parent === getOpener(child);\n}\n\nexport function getAncestor(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n win = win || window;\n\n let opener = getOpener(win);\n\n if (opener) {\n return opener;\n }\n\n let parent = getParent(win);\n\n if (parent) {\n return parent;\n }\n}\n\nexport function getAncestors(win : CrossDomainWindowType) : Array {\n\n let results = [];\n\n let ancestor = win;\n\n while (ancestor) {\n ancestor = getAncestor(ancestor);\n if (ancestor) {\n results.push(ancestor);\n }\n }\n\n return results;\n}\n\n\nexport function isAncestor(parent : CrossDomainWindowType, child : CrossDomainWindowType) : boolean {\n\n let actualParent = getAncestor(child);\n\n if (actualParent) {\n if (actualParent === parent) {\n return true;\n }\n\n return false;\n }\n\n if (child === parent) {\n return false;\n }\n\n if (getTop(child) === child) {\n return false;\n }\n\n for (let frame of getFrames(parent)) {\n if (frame === child) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function isPopup(win? : CrossDomainWindowType = window) : boolean {\n return Boolean(getOpener(win));\n}\n\nexport function isIframe(win? : CrossDomainWindowType = window) : boolean {\n return Boolean(getParent(win));\n}\n\nexport function isFullpage(win? : CrossDomainWindowType = window) : boolean {\n return Boolean(!isIframe(win) && !isPopup(win));\n}\n\nfunction anyMatch(collection1, collection2) : boolean {\n\n for (let item1 of collection1) {\n for (let item2 of collection2) {\n if (item1 === item2) {\n return true;\n }\n }\n }\n\n return false;\n}\n\nexport function getDistanceFromTop(win : CrossDomainWindowType = window) : number {\n let distance = 0;\n let parent = win;\n\n while (parent) {\n parent = getParent(parent);\n if (parent) {\n distance += 1;\n }\n }\n\n return distance;\n}\n\nexport function getNthParent(win : CrossDomainWindowType, n : number = 1) : ?CrossDomainWindowType {\n let parent = win;\n\n for (let i = 0; i < n; i++) {\n if (!parent) {\n return;\n }\n\n parent = getParent(parent);\n }\n\n return parent;\n}\n\nexport function getNthParentFromTop(win : CrossDomainWindowType, n : number = 1) : ?CrossDomainWindowType {\n return getNthParent(win, getDistanceFromTop(win) - n);\n}\n\nexport function isSameTopWindow(win1 : CrossDomainWindowType, win2 : CrossDomainWindowType) : boolean {\n\n let top1 = getTop(win1) || win1;\n let top2 = getTop(win2) || win2;\n\n try {\n if (top1 && top2) {\n if (top1 === top2) {\n return true;\n }\n\n return false;\n }\n } catch (err) {\n // pass\n }\n\n let allFrames1 = getAllFramesInWindow(win1);\n let allFrames2 = getAllFramesInWindow(win2);\n\n if (anyMatch(allFrames1, allFrames2)) {\n return true;\n }\n\n let opener1 = getOpener(top1);\n let opener2 = getOpener(top2);\n\n if (opener1 && anyMatch(getAllFramesInWindow(opener1), allFrames2)) {\n return false;\n }\n\n if (opener2 && anyMatch(getAllFramesInWindow(opener2), allFrames1)) {\n return false;\n }\n\n return false;\n}\n\nexport function matchDomain(pattern : DomainMatcher, origin : DomainMatcher) : boolean {\n\n if (typeof pattern === 'string') {\n\n if (typeof origin === 'string') {\n return pattern === WILDCARD || origin === pattern;\n }\n\n if (isRegex(origin)) {\n return false;\n }\n\n if (Array.isArray(origin)) {\n return false;\n }\n }\n\n if (isRegex(pattern)) {\n\n if (isRegex(origin)) {\n return pattern.toString() === origin.toString();\n }\n\n if (Array.isArray(origin)) {\n return false;\n }\n\n // $FlowFixMe\n return Boolean(origin.match(pattern));\n }\n\n if (Array.isArray(pattern)) {\n\n if (Array.isArray(origin)) {\n return JSON.stringify(pattern) === JSON.stringify(origin);\n }\n\n if (isRegex(origin)) {\n return false;\n }\n\n return pattern.some(subpattern => matchDomain(subpattern, origin));\n }\n\n return false;\n}\n\nexport function stringifyDomainPattern(pattern : DomainMatcher) : string {\n if (Array.isArray(pattern)) {\n return `(${ pattern.join(' | ') })`;\n } else if (isRegex(pattern)) {\n return `RegExp(${ pattern.toString() }`;\n } else {\n return pattern.toString();\n }\n}\n\nexport function getDomainFromUrl(url : string) : string {\n\n let domain;\n\n if (url.match(/^(https?|mock|file):\\/\\//)) {\n domain = url;\n } else {\n return getDomain();\n }\n\n domain = domain.split('/').slice(0, 3).join('/');\n\n return domain;\n}\n\nexport function onCloseWindow(win : CrossDomainWindowType, callback : Function, delay : number = 1000, maxtime : number = Infinity) : { cancel : () => void } {\n\n let timeout;\n\n let check = () => {\n\n if (isWindowClosed(win)) {\n\n if (timeout) {\n clearTimeout(timeout);\n }\n\n return callback();\n }\n\n if (maxtime <= 0) {\n clearTimeout(timeout);\n } else {\n maxtime -= delay;\n timeout = setTimeout(check, delay);\n }\n };\n\n check();\n\n return {\n cancel() {\n if (timeout) {\n clearTimeout(timeout);\n }\n }\n };\n}\n\n// eslint-disable-next-line complexity\nexport function isWindow(obj : Object) : boolean {\n\n try {\n if (obj === window) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (Object.prototype.toString.call(obj) === '[object Window]') {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (window.Window && obj instanceof window.Window) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (obj && obj.self === obj) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (obj && obj.parent === obj) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (obj && obj.top === obj) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (noop(obj === obj) === '__unlikely_value__') { // eslint-disable-line no-self-compare\n return false;\n }\n\n } catch (err) {\n return true;\n }\n\n try {\n if (obj && obj.__cross_domain_utils_window_check__ === '__unlikely_value__') {\n return false;\n }\n\n } catch (err) {\n return true;\n }\n\n return false;\n}\n\nexport function isBrowser() : boolean {\n return (typeof window !== 'undefined' && typeof window.location !== 'undefined');\n}\n\nexport function isCurrentDomain(domain : string) : boolean {\n if (!isBrowser()) {\n return false;\n }\n\n return (getDomain() === domain);\n}\n\nexport function isMockDomain(domain : string) : boolean {\n return domain.indexOf(PROTOCOL.MOCK) === 0;\n}\n\nexport function normalizeMockUrl(url : string) : string {\n if (!isMockDomain(getDomainFromUrl(url))) {\n return url;\n }\n\n if (!__TEST__) {\n throw new Error(`Mock urls not supported out of test mode`);\n }\n\n return url.replace(/^mock:\\/\\/[^/]+/, getActualDomain(window));\n}\n\nexport function closeWindow(win : CrossDomainWindowType) {\n try {\n win.close();\n } catch (err) {\n // pass\n }\n}\n\nexport function getFrameForWindow(win : CrossDomainWindowType) : ?HTMLElement {\n if (isSameDomain(win)) {\n return assertSameDomain(win).frameElement;\n }\n\n for (const frame of document.querySelectorAll('iframe')) {\n if (frame && frame.contentWindow && frame.contentWindow === win) {\n return frame;\n }\n }\n}\n","/* @flow */\n\n// export something to force webpack to see this as an ES module\nexport const TYPES = true;\n\nexport type CrossDomainLocationType = {|\n\n|};\n\nexport type CrossDomainWindowType = {|\n location : string | CrossDomainLocationType,\n self : CrossDomainWindowType,\n closed : boolean,\n open : (string, string, string) => CrossDomainWindowType,\n close : () => void,\n focus : () => void,\n top : CrossDomainWindowType,\n frames : Array,\n opener ? : CrossDomainWindowType,\n parent : CrossDomainWindowType,\n length : number,\n postMessage : (string, string) => void\n|};\n\nexport type SameDomainWindowType = Object & {\n location : string | Object,\n self : CrossDomainWindowType,\n closed : boolean,\n open : (string, string, string) => CrossDomainWindowType,\n close : () => void,\n focus : () => void,\n XMLHttpRequest : typeof XMLHttpRequest,\n document : Document,\n navigator : {\n userAgent : string,\n mockUserAgent? : string\n }\n};\n\nexport type DomainMatcher = string | Array | $ReadOnlyArray | RegExp;\n","/* @flow */\n\nexport * from './utils';\nexport * from './types';\nexport * from './constants';\n","/* @flow */\n\nexport const ZOID = `zoid`;\n\nexport const __ZOID__ = `__${ ZOID }__`;\n\nexport const POST_MESSAGE = {\n INIT: `${ ZOID }_init`,\n PROPS: `${ ZOID }_props`,\n PROP_CALLBACK: `${ ZOID }_prop_callback`,\n CLOSE: `${ ZOID }_close`,\n CHECK_CLOSE: `${ ZOID }_check_close`,\n REDIRECT: `${ ZOID }_redirect`,\n RESIZE: `${ ZOID }_resize`,\n DELEGATE: `${ ZOID }_delegate`,\n ALLOW_DELEGATE: `${ ZOID }_allow_delegate`,\n ERROR: `${ ZOID }_error`,\n HIDE: `${ ZOID }_hide`,\n SHOW: `${ ZOID }_show`\n};\n\nexport const PROP_TYPES = {\n STRING: `string`,\n OBJECT: `object`,\n FUNCTION: `function`,\n BOOLEAN: `boolean`,\n NUMBER: `number`\n};\n\nexport const INITIAL_PROPS = {\n RAW: 'raw',\n UID: 'uid'\n};\n\nexport const WINDOW_REFERENCES = {\n OPENER: `opener`,\n TOP: `top`,\n PARENT: `parent`,\n GLOBAL: `global`\n};\n\nexport const PROP_TYPES_LIST : Array = Object.keys(PROP_TYPES).map(key => PROP_TYPES[key]);\n\nexport const CONTEXT_TYPES = {\n IFRAME: `iframe`,\n POPUP: `popup`\n};\n\nexport const CLASS_NAMES = {\n ZOID: `${ ZOID }`,\n OUTLET: `${ ZOID }-outlet`,\n COMPONENT_FRAME: `${ ZOID }-component-frame`,\n PRERENDER_FRAME: `${ ZOID }-prerender-frame`,\n VISIBLE: `${ ZOID }-visible`,\n INVISIBLE: `${ ZOID }-invisible`\n};\n\nexport const EVENTS = {\n CLOSE: `${ ZOID }-close`\n};\n\nexport const ATTRIBUTES = {\n IFRAME_PLACEHOLDER: `data-zoid-${ ZOID }-placeholder`\n};\n\nexport const ANIMATION_NAMES = {\n SHOW_CONTAINER: `${ ZOID }-show-container`,\n SHOW_COMPONENT: `${ ZOID }-show-component`,\n HIDE_CONTAINER: `${ ZOID }-hide-container`,\n HIDE_COMPONENT: `${ ZOID }-hide-component`\n};\n\nexport const EVENT_NAMES = {\n CLICK: 'click'\n};\n\nexport const CLOSE_REASONS = {\n PARENT_CALL: 'parent_call',\n CHILD_CALL: 'child_call',\n CLOSE_DETECTED: 'close_detected',\n USER_CLOSED: 'user_closed',\n PARENT_CLOSE_DETECTED: 'parent_close_detected'\n};\n\nexport const CONTEXT_TYPES_LIST : Array = Object.keys(CONTEXT_TYPES).map(key => CONTEXT_TYPES[key]);\n\nexport const DELEGATE = {\n CALL_ORIGINAL: 'call_original',\n CALL_DELEGATE: 'call_delegate'\n};\n\nexport const WILDCARD = '*';\n\nexport const DEFAULT_DIMENSIONS = {\n WIDTH: 300,\n HEIGHT: 150\n};\n","/* @flow */\n\nimport { CONSTANTS } from './conf';\n\nexport let global : Object = window[CONSTANTS.WINDOW_PROPS.POSTROBOT] = window[CONSTANTS.WINDOW_PROPS.POSTROBOT] || {};\n\n// Backwards compatibility\n\nglobal.registerSelf = () => {\n // pass\n};\n","/* @flow */\n\nexport let CONSTANTS = {\n\n POST_MESSAGE_TYPE: {\n REQUEST: 'postrobot_message_request',\n RESPONSE: 'postrobot_message_response',\n ACK: 'postrobot_message_ack'\n },\n\n POST_MESSAGE_ACK: {\n SUCCESS: 'success',\n ERROR: 'error'\n },\n\n POST_MESSAGE_NAMES: {\n METHOD: 'postrobot_method',\n HELLO: 'postrobot_ready',\n OPEN_TUNNEL: 'postrobot_open_tunnel'\n },\n\n WINDOW_TYPES: {\n FULLPAGE: 'fullpage',\n POPUP: 'popup',\n IFRAME: 'iframe'\n },\n\n WINDOW_PROPS: {\n POSTROBOT: '__postRobot__'\n },\n\n SERIALIZATION_TYPES: {\n METHOD: 'postrobot_method',\n ERROR: 'postrobot_error',\n PROMISE: 'postrobot_promise',\n ZALGO_PROMISE: 'postrobot_zalgo_promise',\n REGEX: 'regex'\n },\n\n SEND_STRATEGIES: {\n POST_MESSAGE: 'postrobot_post_message',\n BRIDGE: 'postrobot_bridge',\n GLOBAL: 'postrobot_global'\n },\n\n MOCK_PROTOCOL: 'mock:',\n FILE_PROTOCOL: 'file:',\n\n BRIDGE_NAME_PREFIX: '__postrobot_bridge__',\n POSTROBOT_PROXY: '__postrobot_proxy__',\n\n WILDCARD: '*'\n};\n\nexport const POST_MESSAGE_NAMES = {\n METHOD: 'postrobot_method',\n HELLO: 'postrobot_hello',\n OPEN_TUNNEL: 'postrobot_open_tunnel'\n};\n\nexport let POST_MESSAGE_NAMES_LIST : Array = Object.keys(POST_MESSAGE_NAMES)\n .map(key => POST_MESSAGE_NAMES[key]);\n","/* @flow */\n\nimport { CONSTANTS } from './constants';\n\nexport let CONFIG : Object = {\n\n ALLOW_POSTMESSAGE_POPUP: ('__ALLOW_POSTMESSAGE_POPUP__' in window)\n ? window.__ALLOW_POSTMESSAGE_POPUP__\n : __POST_ROBOT__.__ALLOW_POSTMESSAGE_POPUP__,\n\n BRIDGE_TIMEOUT: 5000,\n CHILD_WINDOW_TIMEOUT: 5000,\n\n ACK_TIMEOUT: (window.navigator.userAgent.match(/MSIE/i) !== -1 && !__TEST__) ? 10000 : 2000,\n RES_TIMEOUT: __TEST__ ? 2000 : -1,\n \n ALLOWED_POST_MESSAGE_METHODS: {\n [ CONSTANTS.SEND_STRATEGIES.POST_MESSAGE ]: true,\n [ CONSTANTS.SEND_STRATEGIES.BRIDGE ]: true,\n [ CONSTANTS.SEND_STRATEGIES.GLOBAL ]: true\n },\n\n ALLOW_SAME_ORIGIN: false\n};\n\nif (window.location.href.indexOf(CONSTANTS.FILE_PROTOCOL) === 0) {\n CONFIG.ALLOW_POSTMESSAGE_POPUP = true;\n}\n","/* @flow */\n\nexport * from './config';\nexport * from './constants';\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","/* @flow */\n/* eslint max-lines: off */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nexport { noop, once, uniqueID, isLocalStorageEnabled } from 'belter/src';\n\nconst moduleGlobal = {};\n\nexport function getGlobal() : Object {\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n return moduleGlobal;\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport function memoize(method : (...args : $ReadOnlyArray) => R, options : { time? : number } = {}) : ((...args : $ReadOnlyArray) => R) {\n\n const cache : { [key : string] : { time : number, value : R } } = {};\n\n // eslint-disable-next-line no-unused-vars, flowtype/no-weak-types\n return function memoizedFunction(...args : $ReadOnlyArray) : R {\n\n let key : string;\n\n try {\n key = JSON.stringify(Array.prototype.slice.call(arguments));\n } catch (err) {\n throw new Error(`Arguments not serializable -- can not be used to memoize`);\n }\n\n const time = options.time;\n\n if (cache[key] && time && (Date.now() - cache[key].time) < time) {\n delete cache[key];\n }\n\n const glob = getGlobal();\n\n if (glob.__CACHE_START_TIME__ && cache[key] && cache[key].time < glob.__CACHE_START_TIME__) {\n delete cache[key];\n }\n\n if (cache[key]) {\n return cache[key].value;\n }\n\n cache[key] = {\n time: Date.now(),\n value: method.apply(this, arguments)\n };\n\n return cache[key].value;\n };\n}\n\nexport function hashStr(str : string) : number {\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n hash += str[i].charCodeAt(0) * Math.pow((i % 10) + 1, 5);\n }\n return Math.floor(Math.pow(Math.sqrt(hash), 5));\n}\n\nexport function strHashStr(str : string) : string {\n let hash = '';\n\n for (let i = 0; i < str.length; i++) {\n let total = (str[i].charCodeAt(0) * i);\n\n if (str[i + 1]) {\n total += (str[i + 1].charCodeAt(0) * (i - 1));\n }\n\n hash += String.fromCharCode(97 + (Math.abs(total) % 26));\n }\n\n return hash;\n}\n\nexport function match(str : string, pattern : RegExp) : ?string {\n const regmatch = str.match(pattern);\n if (regmatch) {\n return regmatch[1];\n }\n}\n\nexport function safeJSON(item : mixed) : string {\n return JSON.stringify(item, (key, val) => {\n\n if (typeof val === 'function') {\n return `<${ typeof val }>`;\n }\n\n try {\n JSON.stringify(val);\n } catch (err) {\n return `<${ typeof val }>`;\n }\n\n return val;\n });\n}\n\ntype Listener = {|\n listen : (method : Function) => {\n cancel : () => void\n },\n once : (method : Function) => void,\n trigger : (...args : $ReadOnlyArray) => void\n|};\n\nexport function eventEmitter() : Listener {\n\n const listeners = [];\n\n return {\n listen(method : Function) : { cancel : () => void } {\n listeners.push(method);\n\n return {\n cancel() {\n listeners.splice(listeners.indexOf(method), 1);\n }\n };\n },\n\n once(method : Function) {\n const listener = this.listen(function onceListener() {\n method.apply(null, arguments);\n listener.cancel();\n });\n },\n\n trigger(...args : $ReadOnlyArray) {\n for (const listener of listeners) {\n listener(...args);\n }\n }\n };\n}\n\nexport function awaitKey(obj : Object, key : string) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n\n let value = obj[key];\n\n if (value) {\n return resolve(value);\n }\n\n delete obj[key];\n\n Object.defineProperty(obj, key, {\n\n configurable: true,\n\n set(item) {\n value = item;\n\n if (value) {\n resolve(value);\n }\n },\n\n get() : mixed {\n return value;\n }\n });\n });\n}\n\nexport function stringifyError(err : mixed, level : number = 1) : string {\n\n if (level >= 3) {\n return 'stringifyError stack overflow';\n }\n\n try {\n if (!err) {\n return ``;\n }\n\n if (typeof err === 'string') {\n return err;\n }\n\n if (err instanceof Error) {\n const stack = err && err.stack;\n const message = err && err.message;\n\n if (stack && message) {\n if (stack.indexOf(message) !== -1) {\n return stack;\n } else {\n return `${ message }\\n${ stack }`;\n }\n } else if (stack) {\n return stack;\n } else if (message) {\n return message;\n }\n }\n\n if (typeof err.toString === 'function') {\n return err.toString();\n }\n\n return Object.prototype.toString.call(err);\n\n } catch (newErr) { // eslint-disable-line unicorn/catch-error-name\n return `Error while stringifying error: ${ stringifyError(newErr, level + 1) }`;\n }\n}\n\nexport function stringifyErrorMessage(err : mixed) : string {\n\n const defaultMessage = ``;\n\n if (!err) {\n return defaultMessage;\n }\n\n if (err instanceof Error) {\n return err.message || defaultMessage;\n }\n\n if (typeof err.message === 'string') {\n return err.message || defaultMessage;\n }\n\n return defaultMessage;\n}\n\nexport function stringify(item : mixed) : string {\n if (typeof item === 'string') {\n return item;\n }\n\n if (item && typeof item.toString === 'function') {\n return item.toString();\n }\n\n return Object.prototype.toString.call(item);\n}\n\nexport function domainMatches(hostname : string, domain : string) : boolean {\n hostname = hostname.split('://')[1];\n const index = hostname.indexOf(domain);\n return (index !== -1 && hostname.slice(index) === domain);\n}\n\nexport function patchMethod(obj : Object, name : string, handler : Function) {\n const original = obj[name];\n\n obj[name] = function patchedMethod() : mixed {\n return handler({\n context: this,\n args: Array.prototype.slice.call(arguments),\n original,\n callOriginal: () => original.apply(this, arguments)\n });\n };\n}\n\nexport function isObject(obj : mixed) : boolean {\n return (typeof obj === 'object' && obj !== null);\n}\n\nexport function extend(obj : T, source : Object) : T {\n if (!source) {\n return obj;\n }\n\n if (Object.assign) { // eslint-disable-line compat/compat\n return Object.assign(obj, source); // eslint-disable-line compat/compat\n }\n\n for (const key in source) {\n if (source.hasOwnProperty(key)) {\n obj[key] = source[key];\n }\n }\n\n return obj;\n}\n\nexport function deepExtend (obj : T, source : Object) : T {\n if (!source) {\n return obj;\n }\n\n for (const key in source) {\n if (source.hasOwnProperty(key)) {\n if (isObject(obj[key]) && isObject(source[key])) {\n deepExtend(obj[key], source[key]);\n } else {\n obj[key] = source[key];\n }\n }\n }\n\n return obj;\n}\n\nexport function hasValue(obj : { [string] : T }, value : T) : boolean {\n for (const key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] === value) {\n return true;\n }\n }\n return false;\n}\n\nexport function contains(arr : $ReadOnlyArray, value : T) : boolean {\n return arr.indexOf(value) !== -1;\n}\n\n// eslint-disable-next-line flowtype/no-mutable-array\nexport function sortBy(arr : Array, order : $ReadOnlyArray) : Array {\n return arr.sort((a : T, b : T) => {\n return order.indexOf(a) - order.indexOf(b);\n });\n}\n\nexport function reverseMap(obj : { [string] : string }) : { [string] : string } {\n const result = {};\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n result[obj[key]] = key;\n }\n }\n return result;\n}\n\n// eslint-disable-next-line flowtype/no-mutable-array\nexport function arrayRemove(arr : Array, item : T) {\n arr.splice(arr.indexOf(item), 1);\n}\n\nexport function identity(item : T) : T {\n return item;\n}\n\nexport function values(obj : { [string] : T }) : $ReadOnlyArray {\n const result = [];\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n result.push(obj[key]);\n }\n }\n return result;\n}\n\nexport function perc(pixels : number, percentage : number) : number {\n return Math.round((pixels * percentage) / 100);\n}\n\nexport function min(...args : $ReadOnlyArray) : number {\n return Math.min(...args);\n}\n\nexport function max(...args : $ReadOnlyArray) : number {\n return Math.max(...args);\n}\n\nexport function regexMap(str : string, regex : RegExp, handler : () => T) : $ReadOnlyArray {\n const results = [];\n\n // $FlowFixMe\n str.replace(regex, function regexMapMatcher() {\n results.push(handler.apply(null, arguments));\n });\n\n return results;\n}\n","/* @flow */\n\nimport { isSameDomain, isSameTopWindow, isActuallySameDomain, getActualDomain, getDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONSTANTS } from '../../conf';\nimport { needsGlobalMessagingForBrowser } from '../../lib';\n\nexport let SEND_MESSAGE_STRATEGIES = {};\n\n\nSEND_MESSAGE_STRATEGIES[CONSTANTS.SEND_STRATEGIES.POST_MESSAGE] = (win : CrossDomainWindowType, serializedMessage : string, domain : (string | Array)) => {\n\n if (__POST_ROBOT__.__IE_POPUP_SUPPORT__) {\n try {\n require('../../compat').emulateIERestrictions(window, win);\n } catch (err) {\n return;\n }\n }\n\n let domains;\n\n if (Array.isArray(domain)) {\n domains = domain;\n } else if (typeof domain === 'string') {\n domains = [ domain ];\n } else {\n domains = [ CONSTANTS.WILDCARD ];\n }\n\n domains = domains.map(dom => {\n\n if (dom.indexOf(CONSTANTS.MOCK_PROTOCOL) === 0) {\n\n if (window.location.protocol === CONSTANTS.FILE_PROTOCOL) {\n return CONSTANTS.WILDCARD;\n }\n\n if (!isActuallySameDomain(win)) {\n throw new Error(`Attempting to send messsage to mock domain ${ dom }, but window is actually cross-domain`);\n }\n\n // $FlowFixMe\n return getActualDomain(win);\n }\n\n if (dom.indexOf(CONSTANTS.FILE_PROTOCOL) === 0) {\n return CONSTANTS.WILDCARD;\n }\n\n return dom;\n });\n\n domains.forEach(dom => {\n return win.postMessage(serializedMessage, dom);\n });\n};\n\nif (__POST_ROBOT__.__IE_POPUP_SUPPORT__) {\n\n let { sendBridgeMessage, needsBridgeForBrowser, isBridge } = require('../../bridge');\n\n SEND_MESSAGE_STRATEGIES[CONSTANTS.SEND_STRATEGIES.BRIDGE] = (win : CrossDomainWindowType, serializedMessage : string, domain : string) => {\n\n if (!needsBridgeForBrowser() && !isBridge()) {\n return;\n }\n\n if (isSameDomain(win)) {\n throw new Error(`Post message through bridge disabled between same domain windows`);\n }\n\n if (isSameTopWindow(window, win) !== false) {\n throw new Error(`Can only use bridge to communicate between two different windows, not between frames`);\n }\n\n return sendBridgeMessage(win, serializedMessage, domain);\n };\n}\n\nif (__POST_ROBOT__.__IE_POPUP_SUPPORT__ || __POST_ROBOT__.__GLOBAL_MESSAGE_SUPPORT__) {\n \n SEND_MESSAGE_STRATEGIES[CONSTANTS.SEND_STRATEGIES.GLOBAL] = (win : CrossDomainWindowType, serializedMessage : string) => {\n\n if (!needsGlobalMessagingForBrowser()) {\n return;\n }\n\n if (!isSameDomain(win)) {\n throw new Error(`Post message through global disabled between different domain windows`);\n }\n\n if (isSameTopWindow(window, win) !== false) {\n throw new Error(`Can only use global to communicate between two different windows, not between frames`);\n }\n\n // $FlowFixMe\n let foreignGlobal = win[CONSTANTS.WINDOW_PROPS.POSTROBOT];\n\n if (!foreignGlobal) {\n throw new Error(`Can not find postRobot global on foreign window`);\n }\n\n return foreignGlobal.receiveMessage({\n source: window,\n origin: getDomain(),\n data: serializedMessage\n });\n };\n}\n","/* @flow */\n\nimport { getDomain, isWindowClosed, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { CONSTANTS, CONFIG, POST_MESSAGE_NAMES_LIST } from '../../conf';\nimport { uniqueID, serializeMethods, getWindowType, jsonStringify, stringifyError } from '../../lib';\n\nimport { SEND_MESSAGE_STRATEGIES } from './strategies';\n\n\nfunction buildMessage(win : CrossDomainWindowType, message : Object, options = {}) : Object {\n\n let id = uniqueID();\n let type = getWindowType();\n let sourceDomain = getDomain(window);\n\n return {\n ...message,\n ...options,\n sourceDomain,\n id: message.id || id,\n windowType: type\n };\n}\n\n\nexport function sendMessage(win : CrossDomainWindowType, message : Object, domain : string | Array) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n message = buildMessage(win, message, {\n data: serializeMethods(win, domain, message.data),\n domain\n });\n\n let level;\n\n if (__DEBUG__) {\n if (POST_MESSAGE_NAMES_LIST.indexOf(message.name) !== -1 || message.type === CONSTANTS.POST_MESSAGE_TYPE.ACK) {\n level = 'debug';\n } else if (message.ack === 'error') {\n level = 'error';\n } else {\n level = 'info';\n }\n\n // eslint-disable-next-line no-console\n console[level]('postrobot_send', message.type.replace(/^postrobot_message_/, ''), '::', message.name, '::', domain || CONSTANTS.WILDCARD, '\\n\\n', message);\n }\n\n if (win === window && !CONFIG.ALLOW_SAME_ORIGIN) {\n throw new Error('Attemping to send message to self');\n }\n\n if (isWindowClosed(win)) {\n throw new Error('Window is closed');\n }\n\n let messages = [];\n\n let serializedMessage = jsonStringify({\n [ CONSTANTS.WINDOW_PROPS.POSTROBOT ]: message\n }, null, 2);\n\n return ZalgoPromise.map(Object.keys(SEND_MESSAGE_STRATEGIES), strategyName => {\n\n return ZalgoPromise.try(() => {\n\n if (!CONFIG.ALLOWED_POST_MESSAGE_METHODS[strategyName]) {\n throw new Error(`Strategy disallowed: ${ strategyName }`);\n }\n\n return SEND_MESSAGE_STRATEGIES[strategyName](win, serializedMessage, domain);\n\n }).then(() => {\n messages.push(`${ strategyName }: success`);\n return true;\n }, err => {\n messages.push(`${ strategyName }: ${ stringifyError(err) }\\n`);\n return false;\n });\n\n }).then(results => {\n\n let success = results.some(Boolean);\n let status = `${ message.type } ${ message.name } ${ success ? 'success' : 'error' }:\\n - ${ messages.join('\\n - ') }\\n`;\n\n if (!success) {\n throw new Error(status);\n }\n });\n });\n}\n","/* @flow */\n\nimport { type ZalgoPromise } from 'zalgo-promise/src';\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { matchDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { global } from '../global';\nimport { isRegex } from '../lib';\nimport { CONSTANTS } from '../conf';\n\nexport function resetListeners() {\n global.responseListeners = {};\n global.requestListeners = {};\n}\n\nglobal.responseListeners = global.responseListeners || {};\nglobal.requestListeners = global.requestListeners || {};\nglobal.WINDOW_WILDCARD = global.WINDOW_WILDCARD || new (function WindowWildcard() { /* pass */ })();\n\nglobal.erroredResponseListeners = global.erroredResponseListeners || {};\n\nconst __DOMAIN_REGEX__ = '__domain_regex__';\n\nexport type RequestListenerType = {\n handler : ({ source : CrossDomainWindowType, origin : string, data : Object }) => (mixed | ZalgoPromise),\n handleError : (err : mixed) => void,\n window : ?CrossDomainWindowType,\n name : string,\n domain : string | RegExp | Array\n};\n\nexport type ResponseListenerType = {\n name : string,\n window : CrossDomainWindowType,\n domain : (string | Array | RegExp),\n respond : (err : ?mixed, result : ?Object) => void,\n ack? : ?boolean\n};\n\nexport function addResponseListener(hash : string, listener : ResponseListenerType) {\n global.responseListeners[hash] = listener;\n}\n\nexport function getResponseListener(hash : string) : ResponseListenerType {\n return global.responseListeners[hash];\n}\n\nexport function deleteResponseListener(hash : string) {\n delete global.responseListeners[hash];\n}\n\nexport function markResponseListenerErrored(hash : string) {\n global.erroredResponseListeners[hash] = true;\n}\n\nexport function isResponseListenerErrored(hash : string) : boolean {\n return Boolean(global.erroredResponseListeners[hash]);\n}\n\nexport function getRequestListener({ name, win, domain } : { name : string, win : ?CrossDomainWindowType, domain : ?(string | RegExp) }) : ?RequestListenerType {\n\n if (win === CONSTANTS.WILDCARD) {\n win = null;\n }\n\n if (domain === CONSTANTS.WILDCARD) {\n domain = null;\n }\n\n if (!name) {\n throw new Error(`Name required to get request listener`);\n }\n\n let nameListeners = global.requestListeners[name];\n\n if (!nameListeners) {\n return;\n }\n\n for (let winQualifier of [ win, global.WINDOW_WILDCARD ]) {\n\n let winListeners = winQualifier && nameListeners.get(winQualifier);\n\n if (!winListeners) {\n continue;\n }\n\n if (domain && typeof domain === 'string') {\n if (winListeners[domain]) {\n return winListeners[domain];\n }\n\n if (winListeners[__DOMAIN_REGEX__]) {\n for (let { regex, listener } of winListeners[__DOMAIN_REGEX__]) {\n if (matchDomain(regex, domain)) {\n return listener;\n }\n }\n }\n }\n\n if (winListeners[CONSTANTS.WILDCARD]) {\n return winListeners[CONSTANTS.WILDCARD];\n }\n }\n}\n\n// eslint-disable-next-line complexity\nexport function addRequestListener({ name, win, domain } : { name : string, win : ?CrossDomainWindowType, domain : ?(string | RegExp | Array) }, listener : RequestListenerType) : { cancel : () => void } {\n\n if (!name || typeof name !== 'string') {\n throw new Error(`Name required to add request listener`);\n }\n\n if (Array.isArray(win)) {\n let listenersCollection = [];\n\n for (let item of win) {\n listenersCollection.push(addRequestListener({ name, domain, win: item }, listener));\n }\n\n return {\n cancel() {\n for (let cancelListener of listenersCollection) {\n cancelListener.cancel();\n }\n }\n };\n }\n\n if (Array.isArray(domain)) {\n let listenersCollection = [];\n\n for (let item of domain) {\n listenersCollection.push(addRequestListener({ name, win, domain: item }, listener));\n }\n\n return {\n cancel() {\n for (let cancelListener of listenersCollection) {\n cancelListener.cancel();\n }\n }\n };\n }\n\n let existingListener = getRequestListener({ name, win, domain });\n\n if (!win || win === CONSTANTS.WILDCARD) {\n win = global.WINDOW_WILDCARD;\n }\n\n domain = domain || CONSTANTS.WILDCARD;\n\n if (existingListener) {\n if (win && domain) {\n throw new Error(`Request listener already exists for ${ name } on domain ${ domain.toString() } for ${ win === global.WINDOW_WILDCARD ? 'wildcard' : 'specified' } window`);\n } else if (win) {\n throw new Error(`Request listener already exists for ${ name } for ${ win === global.WINDOW_WILDCARD ? 'wildcard' : 'specified' } window`);\n } else if (domain) {\n throw new Error(`Request listener already exists for ${ name } on domain ${ domain.toString() }`);\n } else {\n throw new Error(`Request listener already exists for ${ name }`);\n }\n }\n\n let requestListeners = global.requestListeners;\n\n let nameListeners = requestListeners[name];\n\n if (!nameListeners) {\n nameListeners = new WeakMap();\n requestListeners[name] = nameListeners;\n }\n\n let winListeners = nameListeners.get(win);\n\n if (!winListeners) {\n winListeners = {};\n nameListeners.set(win, winListeners);\n }\n\n let strDomain = domain.toString();\n\n let regexListeners = winListeners[__DOMAIN_REGEX__];\n let regexListener;\n\n if (isRegex(domain)) {\n\n if (!regexListeners) {\n regexListeners = [];\n winListeners[__DOMAIN_REGEX__] = regexListeners;\n }\n\n regexListener = { regex: domain, listener };\n\n regexListeners.push(regexListener);\n\n } else {\n winListeners[strDomain] = listener;\n }\n\n return {\n cancel() {\n if (!winListeners) {\n return;\n }\n\n delete winListeners[strDomain];\n\n if (win && Object.keys(winListeners).length === 0) {\n nameListeners.delete(win);\n }\n\n if (regexListener) {\n regexListeners.splice(regexListeners.indexOf(regexListener, 1));\n }\n }\n\n };\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { isWindowClosed, matchDomain, stringifyDomainPattern, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONSTANTS } from '../../conf';\nimport { stringifyError, noop } from '../../lib';\nimport { sendMessage } from '../send';\nimport { getRequestListener, getResponseListener, deleteResponseListener, isResponseListenerErrored } from '../listeners';\n\nexport let RECEIVE_MESSAGE_TYPES = {\n\n [ CONSTANTS.POST_MESSAGE_TYPE.ACK ](source : CrossDomainWindowType, origin : string, message : Object) {\n\n if (isResponseListenerErrored(message.hash)) {\n return;\n }\n\n let options = getResponseListener(message.hash);\n\n if (!options) {\n throw new Error(`No handler found for post message ack for message: ${ message.name } from ${ origin } in ${ window.location.protocol }//${ window.location.host }${ window.location.pathname }`);\n }\n\n if (!matchDomain(options.domain, origin)) {\n throw new Error(`Ack origin ${ origin } does not match domain ${ options.domain.toString() }`);\n }\n\n options.ack = true;\n },\n\n [ CONSTANTS.POST_MESSAGE_TYPE.REQUEST ](source : CrossDomainWindowType, origin : string, message : Object) : ZalgoPromise {\n\n let options = getRequestListener({ name: message.name, win: source, domain: origin });\n\n function respond(data) : ZalgoPromise {\n\n if (message.fireAndForget || isWindowClosed(source)) {\n return ZalgoPromise.resolve();\n }\n\n return sendMessage(source, {\n target: message.originalSource,\n hash: message.hash,\n name: message.name,\n ...data\n }, origin);\n }\n\n return ZalgoPromise.all([\n\n respond({\n type: CONSTANTS.POST_MESSAGE_TYPE.ACK\n }),\n\n ZalgoPromise.try(() => {\n\n if (!options) {\n throw new Error(`No handler found for post message: ${ message.name } from ${ origin } in ${ window.location.protocol }//${ window.location.host }${ window.location.pathname }`);\n }\n\n if (!matchDomain(options.domain, origin)) {\n throw new Error(`Request origin ${ origin } does not match domain ${ options.domain.toString() }`);\n }\n\n let data = message.data;\n\n return options.handler({ source, origin, data });\n\n }).then(data => {\n\n return respond({\n type: CONSTANTS.POST_MESSAGE_TYPE.RESPONSE,\n ack: CONSTANTS.POST_MESSAGE_ACK.SUCCESS,\n data\n });\n\n }, err => {\n\n let error = stringifyError(err).replace(/^Error: /, '');\n // $FlowFixMe\n let code = err.code;\n\n return respond({\n type: CONSTANTS.POST_MESSAGE_TYPE.RESPONSE,\n ack: CONSTANTS.POST_MESSAGE_ACK.ERROR,\n error,\n code\n });\n })\n\n ]).then(noop).catch(err => {\n\n if (options && options.handleError) {\n return options.handleError(err);\n } else {\n throw err;\n }\n });\n },\n\n [ CONSTANTS.POST_MESSAGE_TYPE.RESPONSE ](source : CrossDomainWindowType, origin : string, message : Object) : void | ZalgoPromise {\n\n if (isResponseListenerErrored(message.hash)) {\n return;\n }\n\n let options = getResponseListener(message.hash);\n\n if (!options) {\n throw new Error(`No handler found for post message response for message: ${ message.name } from ${ origin } in ${ window.location.protocol }//${ window.location.host }${ window.location.pathname }`);\n }\n\n if (!matchDomain(options.domain, origin)) {\n throw new Error(`Response origin ${ origin } does not match domain ${ stringifyDomainPattern(options.domain) }`);\n }\n\n deleteResponseListener(message.hash);\n\n if (message.ack === CONSTANTS.POST_MESSAGE_ACK.ERROR) {\n let err = new Error(message.error);\n if (message.code) {\n // $FlowFixMe\n err.code = message.code;\n }\n return options.respond(err, null);\n } else if (message.ack === CONSTANTS.POST_MESSAGE_ACK.SUCCESS) {\n let data = message.data || message.response;\n\n return options.respond(null, { source, origin, data });\n }\n }\n};\n","/* @flow */\n\nimport { isWindowClosed, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONSTANTS, POST_MESSAGE_NAMES_LIST } from '../../conf';\nimport { deserializeMethods, jsonParse, addEventListener, noop } from '../../lib';\nimport { global } from '../../global';\n\nimport { RECEIVE_MESSAGE_TYPES } from './types';\n\nglobal.receivedMessages = global.receivedMessages || [];\n\ntype MessageEvent = {\n source : CrossDomainWindowType,\n origin : string,\n data : string\n};\n\nfunction parseMessage(message : string) : ?Object {\n\n let parsedMessage;\n\n try {\n parsedMessage = jsonParse(message);\n } catch (err) {\n return;\n }\n\n if (!parsedMessage) {\n return;\n }\n\n if (typeof parsedMessage !== 'object' || parsedMessage === null) {\n return;\n }\n\n parsedMessage = parsedMessage[CONSTANTS.WINDOW_PROPS.POSTROBOT];\n\n if (!parsedMessage || typeof parsedMessage !== 'object' || parsedMessage === null) {\n return;\n }\n\n if (!parsedMessage.type || typeof parsedMessage.type !== 'string') {\n return;\n }\n\n if (!RECEIVE_MESSAGE_TYPES[parsedMessage.type]) {\n return;\n }\n\n return parsedMessage;\n}\n\n\nexport function receiveMessage(event : MessageEvent) {\n\n if (!window || window.closed) {\n return;\n }\n\n try {\n if (!event.source) {\n return;\n }\n } catch (err) {\n return;\n }\n\n let { source, origin, data } = event;\n\n let message = parseMessage(data);\n\n if (!message) {\n return;\n }\n\n if (!message.sourceDomain || typeof message.sourceDomain !== 'string') {\n throw new Error(`Expected message to have sourceDomain`);\n }\n\n if (message.sourceDomain.indexOf(CONSTANTS.MOCK_PROTOCOL) === 0 || message.sourceDomain.indexOf(CONSTANTS.FILE_PROTOCOL) === 0) {\n origin = message.sourceDomain;\n }\n\n if (global.receivedMessages.indexOf(message.id) === -1) {\n global.receivedMessages.push(message.id);\n } else {\n return;\n }\n\n if (__DEBUG__) {\n let level;\n\n if (POST_MESSAGE_NAMES_LIST.indexOf(message.name) !== -1 || message.type === CONSTANTS.POST_MESSAGE_TYPE.ACK) {\n level = 'debug';\n } else if (message.ack === 'error') {\n level = 'error';\n } else {\n level = 'info';\n }\n \n // eslint-disable-next-line no-console\n console[level]('postrobot_receive', message.type.replace(/^postrobot_message_/, ''), '::', message.name, '::', origin, '\\n\\n', message);\n }\n\n if (isWindowClosed(source) && !message.fireAndForget) {\n return;\n }\n\n if (message.data) {\n message.data = deserializeMethods(source, origin, message.data);\n }\n\n RECEIVE_MESSAGE_TYPES[message.type](source, origin, message);\n}\n\nexport function messageListener(event : { source : CrossDomainWindowType, origin : string, data : string, sourceElement : CrossDomainWindowType, originalEvent? : { origin : string } }) {\n\n try {\n noop(event.source);\n } catch (err) {\n return;\n }\n\n // $FlowFixMe\n let messageEvent : MessageEvent = {\n source: event.source || event.sourceElement,\n origin: event.origin || (event.originalEvent && event.originalEvent.origin),\n data: event.data\n };\n\n if (__POST_ROBOT__.__IE_POPUP_SUPPORT__) {\n try {\n require('../../compat').emulateIERestrictions(messageEvent.source, window);\n } catch (err) {\n return;\n }\n }\n\n receiveMessage(messageEvent);\n}\n\nexport function listenForMessages() {\n addEventListener(window, 'message', messageListener);\n}\n\nglobal.receiveMessage = receiveMessage;\n","/* @flow */\n\nexport * from './receive';\nexport * from './send';\nexport * from './listeners';\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getAncestor, isAncestor, isWindowClosed, getDomain, matchDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONFIG, CONSTANTS } from '../conf';\nimport { sendMessage, addResponseListener, deleteResponseListener, markResponseListenerErrored, type ResponseListenerType } from '../drivers';\nimport { uniqueID, onChildWindowReady, sayHello, isRegex } from '../lib';\nimport { global } from '../global';\n\nglobal.requestPromises = global.requestPromises || new WeakMap();\n\ntype WindowResolverType = CrossDomainWindowType | string | HTMLIFrameElement;\n\ntype RequestOptionsType = {\n window? : ?WindowResolverType,\n domain? : ?(string | Array | RegExp),\n name? : ?string,\n data? : ?Object,\n fireAndForget? : ?boolean,\n timeout? : ?number\n};\n\ntype ResponseMessageEvent = {\n source : CrossDomainWindowType,\n origin : string,\n data : Object\n};\n\nexport function request(options : RequestOptionsType) : ZalgoPromise {\n\n let prom = ZalgoPromise.try(() => {\n\n if (!options.name) {\n throw new Error('Expected options.name');\n }\n\n let name = options.name;\n let targetWindow : ?CrossDomainWindowType;\n let domain : string | Array | RegExp;\n\n if (typeof options.window === 'string') {\n let el = document.getElementById(options.window);\n\n if (!el) {\n throw new Error(`Expected options.window ${ Object.prototype.toString.call(options.window) } to be a valid element id`);\n }\n\n if (el.tagName.toLowerCase() !== 'iframe') {\n throw new Error(`Expected options.window ${ Object.prototype.toString.call(options.window) } to be an iframe`);\n }\n\n // $FlowFixMe\n if (!el.contentWindow) {\n throw new Error('Iframe must have contentWindow. Make sure it has a src attribute and is in the DOM.');\n }\n\n // $FlowFixMe\n targetWindow = el.contentWindow;\n\n } else if (options.window instanceof HTMLIFrameElement) {\n\n if (options.window.tagName.toLowerCase() !== 'iframe') {\n throw new Error(`Expected options.window ${ Object.prototype.toString.call(options.window) } to be an iframe`);\n }\n\n if (options.window && !options.window.contentWindow) {\n throw new Error('Iframe must have contentWindow. Make sure it has a src attribute and is in the DOM.');\n }\n\n if (options.window && options.window.contentWindow) {\n // $FlowFixMe\n targetWindow = options.window.contentWindow;\n }\n } else {\n targetWindow = options.window;\n }\n\n if (!targetWindow) {\n throw new Error('Expected options.window to be a window object, iframe, or iframe element id.');\n }\n\n const win = targetWindow;\n\n domain = options.domain || CONSTANTS.WILDCARD;\n\n let hash = `${ options.name }_${ uniqueID() }`;\n\n if (isWindowClosed(win)) {\n throw new Error('Target window is closed');\n }\n\n let hasResult = false;\n\n let requestPromises = global.requestPromises.get(win);\n\n if (!requestPromises) {\n requestPromises = [];\n global.requestPromises.set(win, requestPromises);\n }\n\n let requestPromise = ZalgoPromise.try(() => {\n\n if (isAncestor(window, win)) {\n return onChildWindowReady(win, options.timeout || CONFIG.CHILD_WINDOW_TIMEOUT);\n }\n\n }).then(({ origin } = {}) => {\n\n if (isRegex(domain) && !origin) {\n return sayHello(win);\n }\n\n }).then(({ origin } = {}) => {\n\n if (isRegex(domain)) {\n if (!matchDomain(domain, origin)) {\n throw new Error(`Remote window domain ${ origin } does not match regex: ${ domain.toString() }`);\n }\n\n domain = origin;\n }\n\n if (typeof domain !== 'string' && !Array.isArray(domain)) {\n throw new TypeError(`Expected domain to be a string or array`);\n }\n\n const actualDomain = domain;\n\n return new ZalgoPromise((resolve, reject) => {\n\n let responseListener : ResponseListenerType;\n\n if (!options.fireAndForget) {\n responseListener = {\n name,\n window: win,\n domain: actualDomain,\n respond(err, result) {\n if (!err) {\n hasResult = true;\n requestPromises.splice(requestPromises.indexOf(requestPromise, 1));\n }\n\n if (err) {\n reject(err);\n } else {\n resolve(result);\n }\n }\n };\n\n addResponseListener(hash, responseListener);\n }\n\n sendMessage(win, {\n type: CONSTANTS.POST_MESSAGE_TYPE.REQUEST,\n hash,\n name,\n data: options.data,\n fireAndForget: options.fireAndForget\n }, actualDomain).catch(reject);\n\n if (options.fireAndForget) {\n return resolve();\n }\n\n let ackTimeout = CONFIG.ACK_TIMEOUT;\n let resTimeout = options.timeout || CONFIG.RES_TIMEOUT;\n\n let cycleTime = 100;\n\n let cycle = () => {\n\n if (hasResult) {\n return;\n }\n\n if (isWindowClosed(win)) {\n\n if (!responseListener.ack) {\n return reject(new Error(`Window closed for ${ name } before ack`));\n }\n\n return reject(new Error(`Window closed for ${ name } before response`));\n }\n\n ackTimeout = Math.max(ackTimeout - cycleTime, 0);\n if (resTimeout !== -1) {\n resTimeout = Math.max(resTimeout - cycleTime, 0);\n }\n\n let hasAck = responseListener.ack;\n\n if (hasAck) {\n\n if (resTimeout === -1) {\n return;\n }\n\n cycleTime = Math.min(resTimeout, 2000);\n\n } else if (ackTimeout === 0) {\n return reject(new Error(`No ack for postMessage ${ name } in ${ getDomain() } in ${ CONFIG.ACK_TIMEOUT }ms`));\n\n } else if (resTimeout === 0) {\n return reject(new Error(`No response for postMessage ${ name } in ${ getDomain() } in ${ options.timeout || CONFIG.RES_TIMEOUT }ms`));\n }\n\n setTimeout(cycle, cycleTime);\n };\n\n setTimeout(cycle, cycleTime);\n });\n });\n\n requestPromise.catch(() => {\n markResponseListenerErrored(hash);\n deleteResponseListener(hash);\n });\n\n requestPromises.push(requestPromise);\n\n return requestPromise;\n });\n\n return prom;\n}\n\nexport function send(window : WindowResolverType, name : string, data : ?Object, options : ?RequestOptionsType) : ZalgoPromise {\n\n options = options || {};\n options.window = window;\n options.name = name;\n options.data = data;\n\n return request(options);\n}\n\nexport function sendToParent(name : string, data : ?Object, options : ?RequestOptionsType) : ZalgoPromise {\n\n let win = getAncestor();\n\n if (!win) {\n return new ZalgoPromise((resolve, reject) => reject(new Error('Window does not have a parent')));\n }\n\n return send(win, name, data, options);\n}\n\nexport function client(options : RequestOptionsType = {}) : { send : (string, ?Object) => ZalgoPromise } {\n\n if (!options.window) {\n throw new Error(`Expected options.window`);\n }\n\n const win = options.window;\n\n return {\n send(name : string, data : ?Object) : ZalgoPromise {\n return send(win, name, data, options);\n }\n };\n}\n\nglobal.send = send;\n","/* @flow */\n\nimport { isWindowClosed, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { once as onceFunction, safeInterval } from '../lib';\nimport { addRequestListener, type RequestListenerType } from '../drivers';\nimport { CONSTANTS } from '../conf';\nimport { global } from '../global';\n\ntype ErrorHandlerType = (err : mixed) => void;\ntype HandlerType = ({ source : CrossDomainWindowType, origin : string, data : Object }) => (void | mixed | ZalgoPromise);\n\ntype ServerOptionsType = {\n handler? : ?HandlerType,\n errorHandler? : ?ErrorHandlerType,\n window? : CrossDomainWindowType,\n name? : ?string,\n domain? : ?(string | RegExp | Array),\n once? : ?boolean,\n errorOnClose? : ?boolean\n};\n\nexport function listen(options : ServerOptionsType) : { cancel : () => void } {\n\n if (!options.name) {\n throw new Error('Expected options.name');\n }\n\n if (!options.handler) {\n throw new Error('Expected options.handler');\n }\n\n const name = options.name;\n const win = options.window;\n const domain = options.domain;\n\n let listenerOptions : RequestListenerType = {\n handler: options.handler,\n handleError: options.errorHandler || (err => {\n throw err;\n }),\n window: win,\n domain: domain || CONSTANTS.WILDCARD,\n name\n };\n\n let requestListener = addRequestListener({ name, win, domain }, listenerOptions);\n\n if (options.once) {\n let handler = listenerOptions.handler;\n listenerOptions.handler = onceFunction(function listenOnce() : mixed | ZalgoPromise {\n requestListener.cancel();\n return handler.apply(this, arguments);\n });\n }\n\n if (listenerOptions.window && options.errorOnClose) {\n let interval = safeInterval(() => {\n if (win && typeof win === 'object' && isWindowClosed(win)) {\n interval.cancel();\n listenerOptions.handleError(new Error('Post message target window is closed'));\n }\n }, 50);\n }\n\n return {\n cancel() {\n requestListener.cancel();\n }\n };\n}\n\nexport function on(name : string, options : ServerOptionsType | HandlerType, handler : ?HandlerType) : { cancel : () => void } {\n\n if (typeof options === 'function') {\n handler = options;\n options = {};\n }\n\n options = options || {};\n\n options.name = name;\n options.handler = handler || options.handler;\n\n return listen(options);\n}\n\nexport function once(name : string, options : ?(ServerOptionsType | HandlerType) = {}, handler : ?HandlerType) : ZalgoPromise<{ source : mixed, origin : string, data : Object }> {\n\n if (typeof options === 'function') {\n handler = options;\n options = {};\n }\n\n options = options || {};\n handler = handler || options.handler;\n let errorHandler = options.errorHandler;\n\n let promise = new ZalgoPromise((resolve, reject) => {\n\n options = options || {};\n\n options.name = name;\n options.once = true;\n\n options.handler = (event) => {\n resolve(event);\n if (handler) {\n return handler(event);\n }\n };\n\n options.errorHandler = (err) => {\n reject(err);\n if (errorHandler) {\n return errorHandler(err);\n }\n };\n });\n\n let onceListener = listen(options);\n promise.cancel = onceListener.cancel;\n\n return promise;\n}\n\nexport function listener(options : ServerOptionsType = {}) : { on : (name : string, handler : HandlerType) => { cancel : () => void } } {\n\n return {\n on(name : string, handler : HandlerType) : { cancel : () => void } {\n return on(name, options, handler);\n }\n };\n}\n\nglobal.on = on;\n","/* @flow */\n\nimport { CONSTANTS } from '../conf';\nimport { messageListener } from '../drivers';\n\nexport { CONFIG, CONSTANTS } from '../conf';\n\nexport function disable() {\n delete window[CONSTANTS.WINDOW_PROPS.POSTROBOT];\n window.removeEventListener('message', messageListener);\n}\n","/* @flow */\n\nimport { getAncestor } from 'cross-domain-utils/src';\n\nexport * from './client';\nexport * from './server';\nexport * from './config';\n\nexport let parent = getAncestor();\n","/* @flow */\n\nimport { type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { global } from './global';\n\nexport function cleanUpWindow(win : CrossDomainWindowType) {\n\n // global.tunnelWindows\n // global.bridges\n // global.popupWindowsByName\n // global.responseListeners\n // global.requestListeners\n\n let requestPromises = global.requestPromises.get(win);\n\n if (requestPromises) {\n for (let promise of requestPromises) {\n promise.reject(new Error(`No response from window - cleaned up`));\n }\n }\n\n if (global.popupWindowsByWin) {\n global.popupWindowsByWin.delete(win);\n }\n\n if (global.remoteWindows) {\n global.remoteWindows.delete(win);\n }\n\n global.requestPromises.delete(win);\n global.methods.delete(win);\n global.readyPromises.delete(win);\n}\n","/* @flow */\n\nimport { initOnReady, listenForMethods } from './lib';\nimport { listenForMessages } from './drivers';\nimport { global } from './global';\nimport { on, send } from './public';\n\nexport * from './public';\nexport { cleanUpWindow } from './clean';\nexport { ZalgoPromise as Promise } from 'zalgo-promise/src';\nexport let bridge = __POST_ROBOT__.__IE_POPUP_SUPPORT__ ? require('./bridge/interface') : null;\n\nexport function init() {\n if (!global.initialized) {\n listenForMessages();\n\n if (__POST_ROBOT__.__IE_POPUP_SUPPORT__) {\n require('./bridge').openTunnelToOpener();\n }\n\n initOnReady();\n listenForMethods({ on, send });\n }\n\n global.initialized = true;\n}\n\ninit();\n","/* @flow */\n\n// eslint-disable-next-line import/no-namespace\nimport * as INTERFACE from './interface';\n\nexport * from './interface';\nexport default INTERFACE;\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { isPopup, isIframe, getUserAgent } from 'cross-domain-utils/src';\n\nimport { CONFIG, CONSTANTS } from '../conf';\n\n\nexport function stringifyError(err : mixed, level : number = 1) : string {\n\n if (level >= 3) {\n return 'stringifyError stack overflow';\n }\n\n try {\n if (!err) {\n return ``;\n }\n\n if (typeof err === 'string') {\n return err;\n }\n\n if (err instanceof Error) {\n let stack = err && err.stack;\n let message = err && err.message;\n\n if (stack && message) {\n if (stack.indexOf(message) !== -1) {\n return stack;\n } else {\n return `${ message }\\n${ stack }`;\n }\n } else if (stack) {\n return stack;\n } else if (message) {\n return message;\n }\n }\n\n if (typeof err.toString === 'function') {\n return err.toString();\n }\n\n return Object.prototype.toString.call(err);\n\n } catch (newErr) { // eslint-disable-line unicorn/catch-error-name\n return `Error while stringifying error: ${ stringifyError(newErr, level + 1) }`;\n }\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport let once = (method : Function) : ((...args : Array) => T | void) => {\n if (!method) {\n return method;\n }\n let called = false;\n return function onceWrapper() : T | void {\n if (!called) {\n called = true;\n return method.apply(this, arguments);\n }\n };\n};\n\n// eslint-disable-next-line no-unused-vars\nexport function noop(...args : Array) {\n // pass\n}\n\nexport function addEventListener(obj : Object, event : string, handler : Function) : { cancel : () => void } {\n if (obj.addEventListener) {\n obj.addEventListener(event, handler);\n } else {\n obj.attachEvent(`on${ event }`, handler);\n }\n\n return {\n cancel() {\n if (obj.removeEventListener) {\n obj.removeEventListener(event, handler);\n } else {\n obj.detachEvent(`on${ event }`, handler);\n }\n }\n };\n}\n\nexport function uniqueID() : string {\n\n let chars = '0123456789abcdef';\n\n return 'xxxxxxxxxx'.replace(/./g, () => {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n });\n}\n\ntype MixedArrayType = Array;\n\nexport function eachArray(item : MixedArrayType, callback : (item : mixed, key : number) => mixed) {\n for (let i = 0; i < item.length; i++) {\n callback(item[i], i);\n }\n}\n\nexport function eachObject(item : Object, callback : (item : mixed, key : string) => mixed) {\n for (let key in item) {\n if (item.hasOwnProperty(key)) {\n callback(item[key], key);\n }\n }\n}\n\nexport function each(item : T, callback : (item : mixed, key : number | string) => mixed) {\n if (Array.isArray(item)) {\n eachArray(item, callback);\n } else if (typeof item === 'object' && item !== null) {\n eachObject(item, callback);\n }\n}\n\nexport function replaceObject(item : T, callback : (item : mixed, key : number | string) => mixed, depth : number = 1) : T {\n\n if (depth >= 100) {\n throw new Error(`Self-referential object passed, or object contained too many layers`);\n }\n\n let newobj;\n\n if (typeof item === 'object' && item !== null && !Array.isArray(item)) {\n newobj = {};\n } else if (Array.isArray(item)) {\n newobj = [];\n } else {\n throw new TypeError(`Invalid type: ${ typeof item }`);\n }\n\n each(item, (childItem, key) => {\n\n let result = callback(childItem, key);\n\n if (typeof result !== 'undefined') {\n // $FlowFixMe\n newobj[key] = result;\n } else if (typeof childItem === 'object' && childItem !== null) {\n // $FlowFixMe\n newobj[key] = replaceObject(childItem, callback, depth + 1);\n } else {\n // $FlowFixMe\n newobj[key] = childItem;\n }\n });\n\n // $FlowFixMe\n return newobj;\n}\n\nexport function safeInterval(method : Function, time : number) : { cancel : () => void } {\n let timeout;\n\n function runInterval() {\n timeout = setTimeout(runInterval, time);\n method.call();\n }\n\n timeout = setTimeout(runInterval, time);\n\n return {\n cancel() {\n clearTimeout(timeout);\n }\n };\n}\n\nexport function isRegex(item : mixed) : boolean {\n return Object.prototype.toString.call(item) === '[object RegExp]';\n}\n\n\ntype FunctionProxy = (method : T) => T;\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport let weakMapMemoize : FunctionProxy<*> = (method : (arg : any) => R) : ((...args : Array) => R) => {\n\n let weakmap = new WeakMap();\n\n // eslint-disable-next-line flowtype/no-weak-types\n return function weakmapMemoized(arg : any) : R {\n let result = weakmap.get(arg);\n\n if (typeof result !== 'undefined') {\n return result;\n }\n\n result = method.call(this, arg);\n\n if (typeof result !== 'undefined') {\n weakmap.set(arg, result);\n }\n\n return result;\n };\n};\n\nexport function getWindowType() : string {\n if (isPopup()) {\n return CONSTANTS.WINDOW_TYPES.POPUP;\n }\n if (isIframe()) {\n return CONSTANTS.WINDOW_TYPES.IFRAME;\n }\n return CONSTANTS.WINDOW_TYPES.FULLPAGE;\n}\n\nexport function jsonStringify(obj : T, replacer : ?Function, indent : number | void) : string {\n\n let objectToJSON;\n let arrayToJSON;\n\n try {\n if (JSON.stringify({}) !== '{}') {\n // $FlowFixMe\n objectToJSON = Object.prototype.toJSON;\n // $FlowFixMe\n delete Object.prototype.toJSON;\n }\n\n if (JSON.stringify({}) !== '{}') {\n throw new Error(`Can not correctly serialize JSON objects`);\n }\n\n if (JSON.stringify([]) !== '[]') {\n // $FlowFixMe\n arrayToJSON = Array.prototype.toJSON;\n // $FlowFixMe\n delete Array.prototype.toJSON;\n }\n\n if (JSON.stringify([]) !== '[]') {\n throw new Error(`Can not correctly serialize JSON objects`);\n }\n\n } catch (err) {\n throw new Error(`Can not repair JSON.stringify: ${ err.message }`);\n }\n\n let result = JSON.stringify.call(this, obj, replacer, indent);\n\n try {\n if (objectToJSON) {\n // $FlowFixMe\n Object.prototype.toJSON = objectToJSON; // eslint-disable-line no-extend-native\n }\n\n if (arrayToJSON) {\n // $FlowFixMe\n Array.prototype.toJSON = arrayToJSON; // eslint-disable-line no-extend-native\n }\n\n } catch (err) {\n throw new Error(`Can not repair JSON.stringify: ${ err.message }`);\n }\n\n\n return result;\n}\n\nexport function jsonParse(item : string) : mixed {\n return JSON.parse(item);\n}\n \nexport function needsGlobalMessagingForBrowser() : boolean {\n\n if (getUserAgent(window).match(/MSIE|trident|edge\\/12|edge\\/13/i)) {\n return true;\n }\n \n if (!CONFIG.ALLOW_POSTMESSAGE_POPUP) {\n return true;\n }\n \n return false;\n}\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { matchDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { CONSTANTS } from '../conf';\nimport { global } from '../global';\n\nimport { once, uniqueID, replaceObject, stringifyError, isRegex } from './util';\n\nglobal.methods = global.methods || new WeakMap();\n\nexport let listenForMethods = once(() => {\n global.on(CONSTANTS.POST_MESSAGE_NAMES.METHOD, { origin: CONSTANTS.WILDCARD }, ({ source, origin, data } : { source : CrossDomainWindowType, origin : string, data : Object }) => {\n\n let methods = global.methods.get(source);\n\n if (!methods) {\n throw new Error(`Could not find any methods this window has privileges to call`);\n }\n\n let meth = methods[data.id];\n\n if (!meth) {\n throw new Error(`Could not find method with id: ${ data.id }`);\n }\n\n if (!matchDomain(meth.domain, origin)) {\n throw new Error(`Method domain ${ meth.domain } does not match origin ${ origin }`);\n }\n\n return ZalgoPromise.try(() => {\n return meth.method.apply({ source, origin, data }, data.args);\n\n }).then(result => {\n\n return {\n result,\n id: data.id,\n name: data.name\n };\n });\n });\n});\n\nfunction isSerialized(item : mixed, type : string) : boolean {\n return typeof item === 'object' && item !== null && item.__type__ === type;\n}\n\ntype SerializedMethod = {\n __type__ : string,\n __id__ : string,\n __name__ : string\n};\n\nexport function serializeMethod(destination : CrossDomainWindowType, domain : string | Array, method : Function, name : string) : SerializedMethod {\n\n let id = uniqueID();\n\n let methods = global.methods.get(destination);\n\n if (!methods) {\n methods = {};\n global.methods.set(destination, methods);\n }\n\n methods[id] = { domain, method };\n\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.METHOD,\n __id__: id,\n __name__: name\n };\n}\n\ntype SerializedError = {\n __type__ : string,\n __message__ : string\n};\n\nfunction serializeError(err : mixed) : SerializedError {\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.ERROR,\n __message__: stringifyError(err),\n // $FlowFixMe\n __code__: err.code\n };\n}\n\ntype SerializePromise = {\n __type__ : string,\n __then__ : SerializedMethod\n};\n\nfunction serializePromise(destination : CrossDomainWindowType, domain : string | Array, promise : ZalgoPromise, name : string) : SerializePromise {\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.PROMISE,\n __then__: serializeMethod(destination, domain, (resolve, reject) => promise.then(resolve, reject), `${ name }.then`)\n };\n}\n\nfunction serializeZalgoPromise(destination : CrossDomainWindowType, domain : string | Array, promise : ZalgoPromise, name : string) : SerializePromise {\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.ZALGO_PROMISE,\n __then__: serializeMethod(destination, domain, (resolve, reject) => promise.then(resolve, reject), `${ name }.then`)\n };\n}\n\ntype SerializedRegex = {\n __type__ : string,\n __source__ : string\n};\n\nfunction serializeRegex(regex : RegExp) : SerializedRegex {\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.REGEX,\n __source__: regex.source\n };\n}\n\nexport function serializeMethods(destination : CrossDomainWindowType, domain : string | Array, obj : Object) : Object {\n\n return replaceObject({ obj }, (item, key) => {\n if (typeof item === 'function') {\n return serializeMethod(destination, domain, item, key.toString());\n }\n\n if (item instanceof Error) {\n return serializeError(item);\n }\n\n if (window.Promise && item instanceof window.Promise) {\n return serializePromise(destination, domain, item, key.toString());\n }\n\n if (ZalgoPromise.isPromise(item)) {\n // $FlowFixMe\n return serializeZalgoPromise(destination, domain, item, key.toString());\n }\n\n if (isRegex(item)) {\n // $FlowFixMe\n return serializeRegex(item);\n }\n }).obj;\n}\n\nexport function deserializeMethod(source : CrossDomainWindowType, origin : string, obj : Object) : Function {\n\n function wrapper() : ZalgoPromise {\n let args = Array.prototype.slice.call(arguments);\n return global.send(source, CONSTANTS.POST_MESSAGE_NAMES.METHOD, {\n id: obj.__id__,\n name: obj.__name__,\n args\n\n }, { domain: origin, timeout: -1 }).then(({ data }) => {\n return data.result;\n }, err => {\n throw err;\n });\n }\n\n wrapper.__name__ = obj.__name__;\n wrapper.__xdomain__ = true;\n\n wrapper.source = source;\n wrapper.origin = origin;\n\n return wrapper;\n}\n\nexport function deserializeError(source : CrossDomainWindowType, origin : string, obj : Object) : Error {\n let err = new Error(obj.__message__);\n if (obj.__code__) {\n // $FlowFixMe\n err.code = obj.__code__;\n }\n return err;\n}\n\nexport function deserializeZalgoPromise(source : CrossDomainWindowType, origin : string, prom : Object) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => deserializeMethod(source, origin, prom.__then__)(resolve, reject));\n}\n\nexport function deserializePromise(source : CrossDomainWindowType, origin : string, prom : Object) : ZalgoPromise {\n if (!window.Promise) {\n return deserializeZalgoPromise(source, origin, prom);\n }\n\n return new window.Promise((resolve, reject) => deserializeMethod(source, origin, prom.__then__)(resolve, reject));\n}\n\nexport function deserializeRegex(source : CrossDomainWindowType, origin : string, item : Object) : RegExp {\n // eslint-disable-next-line security/detect-non-literal-regexp\n return new RegExp(item.__source__);\n}\n\nexport function deserializeMethods(source : CrossDomainWindowType, origin : string, obj : Object) : Object {\n\n return replaceObject({ obj }, (item) => {\n if (typeof item !== 'object' || item === null) {\n return;\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.METHOD)) {\n return deserializeMethod(source, origin, item);\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.ERROR)) {\n return deserializeError(source, origin, item);\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.PROMISE)) {\n return deserializePromise(source, origin, item);\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.ZALGO_PROMISE)) {\n return deserializeZalgoPromise(source, origin, item);\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.REGEX)) {\n return deserializeRegex(source, origin, item);\n }\n\n }).obj;\n}\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { getAncestor, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { CONSTANTS } from '../conf';\nimport { global } from '../global';\n\nimport { noop } from './util';\n\nglobal.readyPromises = global.readyPromises || new WeakMap();\n\nexport function onHello(handler : ({ source? : CrossDomainWindowType, origin? : string }) => void) {\n global.on(CONSTANTS.POST_MESSAGE_NAMES.HELLO, { domain: CONSTANTS.WILDCARD }, ({ source, origin }) => {\n return handler({ source, origin });\n });\n}\n\nexport function sayHello(win : CrossDomainWindowType) : ZalgoPromise<{ origin : string }> {\n return global.send(win, CONSTANTS.POST_MESSAGE_NAMES.HELLO, {}, { domain: CONSTANTS.WILDCARD, timeout: -1 })\n .then(({ origin }) => {\n return { origin };\n });\n}\n\nexport function initOnReady() {\n\n onHello(({ source, origin }) => {\n let promise = global.readyPromises.get(source) || new ZalgoPromise();\n promise.resolve({ origin });\n global.readyPromises.set(source, promise);\n });\n\n let parent = getAncestor();\n if (parent) {\n sayHello(parent).catch(noop);\n }\n}\n\nexport function onChildWindowReady(win : mixed, timeout : number = 5000, name : string = 'Window') : ZalgoPromise<{ origin : string }> {\n\n let promise = global.readyPromises.get(win);\n\n if (promise) {\n return promise;\n }\n\n promise = new ZalgoPromise();\n global.readyPromises.set(win, promise);\n\n if (timeout !== -1) {\n setTimeout(() => promise.reject(new Error(`${ name } did not load after ${ timeout }ms`)), timeout);\n }\n\n return promise;\n}\n","/* @flow */\n\nexport * from './util';\nexport * from './serialize';\nexport * from './ready';\n","/* @flow */\n\nimport { on, send, bridge } from 'post-robot/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport type { CrossDomainWindowType, SameDomainWindowType } from 'cross-domain-utils/src';\n\nimport { isPayPalDomain, noop, getScriptVersion, extendUrl } from '../lib';\nimport { config } from '../config';\n\nfunction match(str : string, pattern : RegExp) : ?string {\n const regmatch : ?$ReadOnlyArray = str.match(pattern);\n if (regmatch) {\n return regmatch[1];\n }\n}\n\nlet onAuthorize : ?Function;\n\n// Post-Bridge\n\nif (isPayPalDomain()) {\n on('onLegacyPaymentAuthorize', { window: window.parent }, ({ data } : { data : { method : Function } }) => {\n onAuthorize = data.method;\n });\n}\n\n// Button / Merchant\n\nexport function onLegacyPaymentAuthorize(method : Function) : ZalgoPromise {\n onAuthorize = method;\n\n return ZalgoPromise.try(() => {\n if (bridge && !isPayPalDomain()) {\n return bridge.openBridge(extendUrl(config.postBridgeUrl, { version: getScriptVersion() }), config.postBridgeDomain).then((postBridge : CrossDomainWindowType) => {\n return send(postBridge, 'onLegacyPaymentAuthorize', { method }, { domain: config.paypalDomain })\n .then(noop);\n });\n }\n });\n}\n\nwindow.onLegacyPaymentAuthorize = onLegacyPaymentAuthorize;\n\n// Post-Bridge / Button\n\nwindow.watchForLegacyFallback = (win : SameDomainWindowType) => {\n const interval = setInterval(() => {\n try {\n const isLegacy = (win.document.body.innerHTML.indexOf('merchantpaymentweb') !== -1 ||\n win.document.body.innerHTML.indexOf('wapapp') !== -1);\n\n if (!isLegacy || win.ppxoWatching || win.closed) {\n return;\n }\n\n win.ppxoWatching = true;\n\n const XMLHttpRequestsend = win.XMLHttpRequest.prototype.send;\n\n win.XMLHttpRequest.prototype.send = function overrideXMLHttpRequestSend() : void {\n\n if (this._patched) {\n return XMLHttpRequestsend.apply(this, arguments);\n }\n\n this._patched = true;\n\n const self = this;\n let onload = this.onload;\n\n function listener() : void {\n\n if (self.readyState === self.DONE && self.status === 200 && self.responseText) {\n\n try {\n const response = JSON.parse(self.responseText.replace('while (1);', ''));\n\n if (response.type === 'redirect' && response.url && onAuthorize) {\n\n const url = response.url;\n\n clearInterval(interval);\n win.close();\n\n onAuthorize({\n returnUrl: url,\n paymentToken: match(url, /token=((EC-)?[A-Z0-9]+)/),\n billingToken: match(url, /ba_token=((BA-)?[A-Z0-9]+)/),\n payerID: match(url, /PayerID=([A-Z0-9]+)/),\n paymentID: match(url, /paymentId=((PAY-)?[A-Z0-9]+)/)\n });\n\n onAuthorize = null;\n\n if (win.PAYPAL && win.PAYPAL.Checkout && win.PAYPAL.Checkout.XhrResponse && win.PAYPAL.Checkout.XhrResponse.RESPONSE_TYPES) {\n Object.defineProperty(win.PAYPAL.Checkout.XhrResponse.RESPONSE_TYPES, 'Redirect', {\n value: Math.random().toString()\n });\n }\n\n if (win.mob && win.mob.Xhr && win.mob.Xhr.prototype._xhrOnReady) {\n win.mob.Xhr.prototype._xhrOnReady = noop;\n }\n }\n\n } catch (err) {\n return;\n }\n }\n\n if (onload) {\n return onload.apply(this, arguments);\n }\n }\n\n if (this.onload !== listener) {\n\n try {\n\n delete this.onload;\n this.addEventListener('load', listener);\n\n // $FlowFixMe\n Object.defineProperty(this, 'onload', {\n get() : Function {\n return listener;\n },\n set(handler) {\n onload = handler;\n }\n });\n\n } catch (err) {\n\n // pass\n }\n\n }\n\n return XMLHttpRequestsend.apply(this, arguments);\n };\n\n } catch (err) {\n // pass\n }\n }, 100);\n};\n\n\nwindow.onLegacyFallback = window.watchForLegacyFallback;\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { info, track, warn, flush as flushLogs, immediateFlush } from 'beaver-logger/client';\nimport { create, CONSTANTS, PopupOpenError } from 'zoid/src';\nimport { type Component } from 'zoid/src/component/component';\nimport type { CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { base64encode } from 'belter/src';\n\nimport { isDevice, request, getQueryParam, redirect as redir, patchMethod,\n setLogLevel, getSessionID, getBrowserLocale, supportsPopups, memoize,\n getDomainSetting, getScriptVersion, getButtonSessionID, isPayPalDomain,\n isEligible, getCurrentScriptUrl } from '../lib';\nimport { config } from '../config';\nimport { ENV, FPTI, PAYMENT_TYPE, CHECKOUT_OVERLAY_COLOR, ATTRIBUTE } from '../constants';\nimport { onLegacyPaymentAuthorize } from '../compat';\nimport { determineParameterFromToken, determineUrl } from '../integrations';\n\nimport { containerTemplate, componentTemplate } from './template';\n\nfunction addHeader(name, value) : void {\n\n if (!window.$Api) {\n return;\n }\n\n if (window.$Api.addHeader) {\n return window.$Api.addHeader(name, value);\n }\n}\n\n// eslint-disable-next-line flowtype/require-exact-type\ntype CheckoutPropsType = {\n payment? : () => ZalgoPromise,\n onAuthorize : ({ returnUrl : string }, { redirect : (?CrossDomainWindowType, ?string) => ZalgoPromise }) => ?ZalgoPromise,\n onShippingChange? : (address : {}) => ?ZalgoPromise,\n onCancel? : ({ cancelUrl : string }, { redirect : (?CrossDomainWindowType, ?string) => ZalgoPromise }) => ?ZalgoPromise,\n fallback? : (string) => ?ZalgoPromise,\n fundingSource? : string,\n logLevel? : string,\n env? : string,\n stage? : string,\n stageUrl? : string,\n localhostUrl? : string,\n checkoutUri? : string,\n authCode? : string\n};\n\nexport const Checkout : Component = create({\n\n tag: 'paypal-checkout',\n name: 'ppcheckout',\n\n scrolling: true,\n\n buildUrl(props) : ZalgoPromise {\n const env = props.env || config.env;\n\n if (!props.payment) {\n throw new Error(`Can not build url without payment prop`);\n }\n\n return props.payment().then(token => {\n if (!token) {\n throw new Error(`Expected payment id or token to be passed, got ${ token }`);\n }\n\n return determineUrl(env, props.fundingSource, token);\n });\n },\n\n get unsafeRenderTo() : boolean {\n return config.env === ENV.LOCAL;\n },\n\n get domain() : Object {\n return {\n ...config.paypalDomains\n };\n },\n\n get bridgeUrl() : Object {\n return config.metaFrameUrls;\n },\n\n get bridgeDomain() : Object {\n return config.paypalDomains;\n },\n\n contexts: {\n iframe: (!supportsPopups()),\n popup: true\n },\n\n get version() : string {\n return getScriptVersion();\n },\n\n validate() {\n if (!isEligible()) {\n warn('checkout_render_ineligible');\n }\n },\n\n prerenderTemplate: componentTemplate,\n containerTemplate,\n\n props: {\n\n sessionID: {\n type: 'string',\n required: false,\n def() : string {\n return getSessionID();\n },\n queryParam: true\n },\n\n buttonSessionID: {\n type: 'string',\n required: false,\n def() : ?string {\n return getButtonSessionID();\n },\n queryParam: true\n },\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n },\n\n meta: {\n type: 'object',\n required: false,\n def() : Object {\n const meta = window.xprops && window.xprops.meta;\n return meta || {};\n }\n },\n\n stage: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.STAGE || env === ENV.LOCAL) {\n return config.stage;\n }\n }\n },\n\n stageUrl: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.STAGE || env === ENV.LOCAL) {\n return config.stageUrl;\n }\n }\n },\n\n authCode: {\n type: 'string',\n required: false,\n def() : string {\n return config.authCode;\n },\n queryParam: 'code'\n },\n\n localhostUrl: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.LOCAL) {\n return config.localhostUrl;\n }\n }\n },\n\n checkoutUri: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : ?string {\n return config.checkoutUri;\n }\n },\n\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n allowDelegate: true,\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n }\n },\n\n\n client: {\n type: 'object',\n required: false,\n def() : { [string] : string } {\n return {};\n },\n sendToChild: false,\n\n validate(client, props) {\n const env = props.env || config.env;\n\n if (!client[env]) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (client[env].match(/^(.)\\1+$/)) {\n throw new Error(`Invalid client ID: ${ client[env] }`);\n }\n }\n },\n\n payment: {\n type: 'function',\n required: false,\n memoize: true,\n promisify: true,\n queryParam(payment) : ZalgoPromise {\n return payment().then(token => {\n return determineParameterFromToken(token);\n });\n },\n queryValue(payment) : ZalgoPromise {\n return payment();\n },\n childDecorate(payment) : () => ZalgoPromise {\n const token = getQueryParam('token');\n\n return token\n ? memoize(() => ZalgoPromise.resolve(token))\n : payment;\n },\n validate(payment, props) {\n if (!payment && !props.url) {\n throw new Error(`Expected either props.payment or props.url to be passed`);\n }\n },\n alias: 'billingAgreement'\n },\n\n style: {\n type: 'object',\n required: false,\n allowDelegate: true,\n def() : Object {\n return {};\n },\n validate(style) {\n if (style.overlayColor && style.overlayColor !== CHECKOUT_OVERLAY_COLOR.BLACK && style.overlayColor !== CHECKOUT_OVERLAY_COLOR.WHITE) {\n throw new Error(`Invalid background color: ${ style.overlayColor }`);\n }\n }\n },\n\n commit: {\n type: 'boolean',\n required: false\n },\n\n experience: {\n type: 'object',\n required: false,\n def() : Object {\n return {};\n }\n },\n\n fundingSource: {\n type: 'string',\n required: false,\n queryParam: true\n },\n\n fundingOffered: {\n type: 'object',\n required: false,\n queryParam: true,\n def() : Object {\n const elements = Array.prototype.slice.call(document.querySelectorAll(`[${ ATTRIBUTE.FUNDING_SOURCE }]`));\n\n const fundingSources = elements.map(el => {\n return el.getAttribute(ATTRIBUTE.FUNDING_SOURCE);\n });\n\n // $FlowFixMe\n return fundingSources;\n },\n queryValue: (val) => {\n return val.join(',');\n }\n },\n\n onAuthorize: {\n type: 'function',\n required: true,\n once: true,\n \n decorate(original) : Function | void {\n if (original) {\n return function decorateOnAuthorize(data, actions = {}) : ZalgoPromise {\n\n if (data && !data.intent) {\n warn(`checkout_authorize_no_intent`, { paymentID: data.paymentID, token: data.paymentToken });\n }\n\n const close = () => {\n return ZalgoPromise.try(() => {\n if (actions.close) {\n return actions.close();\n }\n }).then(() => {\n return this.closeComponent();\n });\n };\n\n const redirect = (win, url) => {\n return ZalgoPromise.all([\n redir(win || window.top, url || data.returnUrl),\n close()\n ]);\n };\n\n return ZalgoPromise.try(() => {\n\n try {\n const isButton = window.location.href.indexOf('/smart/button') !== -1;\n const isGuest = this.window.location.href.indexOf('/webapps/xoonboarding') !== -1;\n\n if (isButton && isGuest) {\n return request({\n win: this.window,\n method: 'get',\n url: '/webapps/xoonboarding/api/auth'\n }).then(result => {\n if (result && result.data && result.data.access_token) {\n addHeader('x-paypal-internal-euat', result.data.access_token);\n }\n }).catch(() => {\n // pass\n });\n }\n\n } catch (err) {\n // pass\n }\n\n }).then(() => {\n return original.call(this, data, { ...actions, close, redirect });\n }).catch(err => {\n return this.error(err);\n }).finally(() => {\n return this.close();\n });\n };\n }\n }\n },\n\n onShippingChange: {\n type: 'function',\n required: false\n },\n\n onAuth: {\n type: 'function',\n required: false,\n sameDomain: true,\n childDecorate(original : Function) : ?Function {\n if (original) {\n return function wrapOnAuth(data : string | Object) : Object {\n if (typeof data === 'string') {\n data = { accessToken: data };\n }\n return original(data);\n };\n }\n }\n },\n\n accessToken: {\n type: 'function',\n required: false\n },\n\n onCancel: {\n type: 'function',\n required: false,\n once: true,\n noop: true,\n\n decorate(original) : Function {\n return function decorateOnCancel(data, actions = {}) : ZalgoPromise {\n\n const close = () => {\n return ZalgoPromise.try(() => {\n if (actions.close) {\n return actions.close();\n }\n }).then(() => {\n return this.closeComponent();\n });\n };\n\n const redirect = (win, url) => {\n return ZalgoPromise.all([\n redir(win || window.top, url || data.cancelUrl),\n close()\n ]);\n };\n\n return ZalgoPromise.try(() => {\n return original.call(this, data, { ...actions, close, redirect });\n }).finally(() => {\n this.close();\n });\n };\n }\n },\n\n init: {\n type: 'function',\n required: false,\n once: true,\n noop: true,\n\n decorate(original) : Function {\n return function decorateInit(data) : void {\n info('checkout_init');\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CHECKOUT_INIT,\n [ FPTI.KEY.CONTEXT_TYPE ]: FPTI.CONTEXT_TYPE[PAYMENT_TYPE.EC_TOKEN],\n [ FPTI.KEY.TOKEN ]: data.paymentToken,\n [ FPTI.KEY.SELLER_ID ]: data.merchantID,\n [ FPTI.KEY.CONTEXT_ID ]: data.paymentToken\n });\n\n flushLogs();\n\n this.paymentToken = data.paymentToken;\n this.cancelUrl = data.cancelUrl;\n\n return original.apply(this, arguments);\n };\n }\n },\n\n onClose: {\n type: 'function',\n required: false,\n once: true,\n promisify: true,\n noop: true,\n\n decorate(original) : Function {\n return function decorateOnClose(reason) : ZalgoPromise {\n\n const onClose = original.apply(this, arguments);\n\n const CLOSE_REASONS = CONSTANTS.CLOSE_REASONS;\n\n const shouldCancel =\n this.props.onCancel &&\n [ CLOSE_REASONS.CLOSE_DETECTED, CLOSE_REASONS.USER_CLOSED ].indexOf(reason) !== -1;\n\n if (shouldCancel) {\n info(`close_trigger_cancel`);\n return this.props.onCancel({\n paymentToken: this.paymentToken,\n cancelUrl: this.cancelUrl\n }).then(() => onClose);\n }\n\n return onClose;\n };\n }\n },\n\n onError: {\n type: 'function',\n required: false,\n promisify: true,\n noop: true,\n once: true\n },\n\n fallback: {\n type: 'function',\n required: false,\n once: true,\n\n def() : Function {\n return function defaultFallback(url) : ZalgoPromise {\n warn('fallback', { url });\n\n if (getDomainSetting('allow_full_page_fallback')) {\n window.top.location = url;\n return this.close();\n }\n\n return onLegacyPaymentAuthorize(this.props.onAuthorize);\n };\n }\n },\n\n logLevel: {\n type: 'string',\n required: false,\n get value() : string {\n return config.logLevel;\n }\n },\n \n test: {\n type: 'object',\n required: false,\n def() : Object {\n return window.__test__ || { action: 'checkout' };\n }\n },\n\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n }\n },\n\n get dimensions() : { width : string, height : string } {\n\n if (isDevice()) {\n return {\n width: '100%',\n height: '590px'\n };\n }\n\n return {\n width: '500px',\n height: '590px'\n };\n }\n});\n\nif (Checkout.isChild() && Checkout.xchild && Checkout.xprops) {\n\n if (Checkout.xprops && Checkout.xprops.logLevel) {\n setLogLevel(Checkout.xprops.logLevel);\n }\n\n Checkout.xchild.onProps(xprops => {\n patchMethod(xprops, 'onAuthorize', ({ callOriginal, args: [ data ] }) => {\n if (data && !data.intent) {\n warn(`hermes_authorize_no_intent`, { paymentID: data.paymentID, token: data.paymentToken });\n\n try {\n const intent = window.injector.get('$CheckoutCartModel').instance(data.paymentToken).payment_action;\n warn(`hermes_intent`, { paymentID: data.paymentID, token: data.paymentToken, intent });\n } catch (err) {\n // pass\n }\n\n immediateFlush();\n }\n return callOriginal();\n });\n });\n}\n\npatchMethod(Checkout, 'init', ({ args: [ props, _context ], original, context }) => {\n return original.call(context, props, _context, 'body');\n});\n\npatchMethod(Checkout, 'render', ({ args: [ props ], original, context }) => {\n return original.call(context, props, 'body');\n});\n\npatchMethod(Checkout, 'renderTo', ({ args: [ win, props ], original, context }) => {\n\n const payment = props.payment();\n props.payment = () => payment;\n\n return original.call(context, win, props, 'body').catch(err => {\n if (err instanceof PopupOpenError && isPayPalDomain()) {\n Checkout.contexts.iframe = true;\n return original.call(context, win, props, 'body');\n }\n throw err;\n });\n});\n\n","/* @flow */\n\nexport * from './component';\n","/* @flow */\n\nexport function getUserAgent() : string {\n return window.navigator.mockUserAgent || window.navigator.userAgent;\n}\n\nexport function isDevice(userAgent? : string = getUserAgent()) : boolean {\n if (userAgent.match(/Android|webOS|iPhone|iPad|iPod|bada|Symbian|Palm|CriOS|BlackBerry|IEMobile|WindowsMobile|Opera Mini/i)) {\n return true;\n }\n\n return false;\n}\n\nexport function isWebView() : boolean {\n let userAgent = getUserAgent();\n return (/(iPhone|iPod|iPad|Macintosh).*AppleWebKit(?!.*Safari)/i).test(userAgent) ||\n (/\\bwv\\b/).test(userAgent) ||\n (/Android.*Version\\/(\\d)\\.(\\d)/i).test(userAgent);\n}\n\nexport function isStandAlone() : boolean {\n return (window.navigator.standalone === true || window.matchMedia('(display-mode: standalone)').matches);\n}\n\nexport function isFacebookWebView(ua? : string = getUserAgent()) : boolean {\n return (ua.indexOf('FBAN') !== -1) || (ua.indexOf('FBAV') !== -1);\n}\n\nexport function isFirefoxIOS(ua? : string = getUserAgent()) : boolean {\n return (/FxiOS/i).test(ua);\n}\n\nexport function isEdgeIOS(ua? : string = getUserAgent()) : boolean {\n return (/EdgiOS/i).test(ua);\n}\n\nexport function isOperaMini(ua? : string = getUserAgent()) : boolean {\n return ua.indexOf('Opera Mini') > -1;\n}\n\nexport function isAndroid(ua? : string = getUserAgent()) : boolean {\n return (/Android/).test(ua);\n}\n\nexport function isIos(ua? : string = getUserAgent()) : boolean {\n return (/iPhone|iPod|iPad/).test(ua);\n}\n\nexport function isGoogleSearchApp(ua? : string = getUserAgent()) : boolean {\n return (/\\bGSA\\b/).test(ua);\n}\n\nexport function isQQBrowser(ua? : string = getUserAgent()) : boolean {\n return (/QQBrowser/).test(ua);\n}\n\nexport function isIosWebview(ua? : string = getUserAgent()) : boolean {\n if (isIos(ua)) {\n if (isGoogleSearchApp(ua)) {\n return true;\n }\n return (/.+AppleWebKit(?!.*Safari)/).test(ua);\n }\n return false;\n}\n\nexport function isAndroidWebview(ua? : string = getUserAgent()) : boolean {\n if (isAndroid(ua)) {\n return (/Version\\/[\\d.]+/).test(ua) && !isOperaMini(ua);\n }\n return false;\n}\n\nexport function isIE() : boolean {\n\n if (window.document.documentMode) {\n return true;\n }\n\n return Boolean(\n window.navigator &&\n window.navigator.userAgent &&\n (/Edge|MSIE|rv:11/i).test(window.navigator.userAgent)\n );\n}\n\nexport function isIECompHeader() : boolean {\n let mHttp = window.document.querySelector('meta[http-equiv=\"X-UA-Compatible\"]');\n let mContent = window.document.querySelector('meta[content=\"IE=edge\"]');\n if (mHttp && mContent) {\n return true;\n }\n return false;\n}\n\nexport function isElectron() : boolean {\n if (typeof process !== 'undefined' && process.versions && process.versions.electron) {\n return true;\n }\n return false;\n}\n\nexport function isIEIntranet() : boolean {\n\n // This status check only works for older versions of IE with document.documentMode set\n\n if (window.document.documentMode) {\n try {\n let status = window.status;\n\n window.status = 'testIntranetMode';\n\n if (window.status === 'testIntranetMode') {\n window.status = status;\n\n return true;\n }\n\n return false;\n\n } catch (err) {\n\n return false;\n }\n }\n\n return false;\n}\n\nexport function isMacOsCna() : boolean {\n let userAgent = getUserAgent();\n return (/Macintosh.*AppleWebKit(?!.*Safari)/i).test(userAgent);\n}\n\nexport function supportsPopups(ua? : string = getUserAgent()) : boolean {\n return !(isIosWebview(ua) || isAndroidWebview(ua) || isOperaMini(ua) ||\n isFirefoxIOS(ua) || isEdgeIOS(ua) || isFacebookWebView(ua) || isQQBrowser(ua) || isElectron() || isMacOsCna() || isStandAlone());\n}\n\nexport function isChrome(ua? : string = getUserAgent()) : boolean {\n return (/Chrome|Chromium|CriOS/).test(ua);\n}\n\nexport function isSafari(ua? : string = getUserAgent()) : boolean {\n return (/Safari/).test(ua) && !isChrome(ua);\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\n\nimport type { CancelableType } from './types';\n\nexport function getFunctionName (fn : T) : string {\n return fn.name || fn.__name__ || fn.displayName || 'anonymous';\n}\n\nexport function setFunctionName (fn : T, name : string) : T {\n try {\n delete fn.name;\n fn.name = name;\n } catch (err) {\n // pass\n }\n\n fn.__name__ = fn.displayName = name;\n return fn;\n}\n\nexport function base64encode(str : string) : string {\n if (typeof btoa === 'function') {\n return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, (m, p1) => {\n return String.fromCharCode(parseInt(p1, 16));\n }));\n }\n\n if (typeof Buffer !== 'undefined') {\n return Buffer.from(str, 'utf8').toString('base64');\n }\n\n throw new Error(`Can not find window.btoa or Buffer`);\n}\n\nexport function base64decode(str : string) : string {\n if (typeof atob === 'function') {\n return decodeURIComponent(Array.prototype.map.call(atob(str), c => {\n // eslint-disable-next-line prefer-template\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\n }).join(''));\n }\n\n if (typeof Buffer !== 'undefined') {\n return Buffer.from(str, 'base64').toString('utf8');\n }\n\n throw new Error(`Can not find window.atob or Buffer`);\n}\n\nexport function uniqueID() : string {\n\n let chars = '0123456789abcdef';\n\n let randomID = 'xxxxxxxxxx'.replace(/./g, () => {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n });\n\n let timeID = base64encode(\n new Date().toISOString().slice(11, 19).replace('T', '.')\n ).replace(/[^a-zA-Z0-9]/g, '').toLowerCase();\n\n return `${ randomID }_${ timeID }`;\n}\n\nexport function getGlobal() : Object {\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n if (typeof __GLOBAL__ !== 'undefined') {\n return __GLOBAL__;\n }\n throw new Error(`No global found`);\n}\n\nlet objectIDs;\n\nexport function getObjectID(obj : Object) : string {\n\n objectIDs = objectIDs || new WeakMap();\n\n if (obj === null || obj === undefined || (typeof obj !== 'object' && typeof obj !== 'function')) {\n throw new Error(`Invalid object`);\n }\n\n let uid = objectIDs.get(obj);\n\n if (!uid) {\n uid = `${ typeof obj }:${ uniqueID() }`;\n objectIDs.set(obj, uid);\n }\n\n return uid;\n}\n\nfunction serializeArgs(args : Array) : string {\n try {\n return JSON.stringify(Array.prototype.slice.call(args), (subkey, val) => {\n if (typeof val === 'function') {\n return `memoize[${ getObjectID(val) }]`;\n }\n return val;\n });\n } catch (err) {\n throw new Error(`Arguments not serializable -- can not be used to memoize`);\n }\n}\nexport function memoize) => R, X : { (...args : Array) : R, displayName : string, reset : () => void }>(method : F, options : { time? : number, thisNamespace? : boolean } = {}) : X {\n let cacheMap = new WeakMap();\n\n // $FlowFixMe\n let memoizedFunction : X = function memoizedFunction(...args : Array) : R {\n let cache = cacheMap.getOrSet(options.thisNamespace ? this : method, () => ({}));\n\n let key : string = serializeArgs(args);\n\n let cacheTime = options.time;\n if (cache[key] && cacheTime && (Date.now() - cache[key].time) < cacheTime) {\n delete cache[key];\n }\n\n if (cache[key]) {\n return cache[key].value;\n }\n\n let time = Date.now();\n let value = method.apply(this, arguments);\n\n cache[key] = { time, value };\n\n return cache[key].value;\n };\n\n memoizedFunction.reset = () => {\n cacheMap.delete(options.thisNamespace ? this : method);\n };\n\n return setFunctionName(memoizedFunction, `${ getFunctionName(method) }::memoized`);\n}\n\nexport function promiseIdentity(item : ZalgoPromise | T) : ZalgoPromise {\n // $FlowFixMe\n return ZalgoPromise.resolve(item);\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport function memoizePromise(method : (...args : Array) => ZalgoPromise) : ((...args : Array) => ZalgoPromise) {\n let cache = {};\n\n // eslint-disable-next-line flowtype/no-weak-types\n function memoizedPromiseFunction(...args : Array) : ZalgoPromise {\n let key : string = serializeArgs(args);\n\n if (cache.hasOwnProperty(key)) {\n return cache[key];\n }\n\n cache[key] = ZalgoPromise.try(() => method.apply(this, arguments))\n .finally(() => {\n delete cache[key];\n });\n\n return cache[key];\n }\n\n memoizedPromiseFunction.reset = () => {\n cache = {};\n };\n\n return setFunctionName(memoizedPromiseFunction, `${ getFunctionName(method) }::promiseMemoized`);\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport function promisify(method : (...args : Array) => R, options : { name? : string } = {}) : ((...args : Array) => ZalgoPromise) {\n function promisifiedFunction() : ZalgoPromise {\n return ZalgoPromise.try(method, this, arguments);\n }\n\n if (options.name) {\n promisifiedFunction.displayName = `${ options.name }:promisified`;\n }\n\n return setFunctionName(promisifiedFunction, `${ getFunctionName(method) }::promisified`);\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport function inlineMemoize(method : (...args : Array) => R, logic : (...args : Array) => R, args : Array = []) : R {\n // $FlowFixMe\n let cache = method.__inline_memoize_cache__ = method.__inline_memoize_cache__ || {};\n let key = serializeArgs(args);\n\n if (cache.hasOwnProperty(key)) {\n return cache[key];\n }\n \n let result = cache[key] = logic(...args);\n\n return result;\n}\n\n// eslint-disable-next-line no-unused-vars\nexport function noop(...args : Array) {\n // pass\n}\n\nexport function once(method : Function) : Function {\n let called = false;\n\n const onceFunction = function() : mixed {\n if (!called) {\n called = true;\n return method.apply(this, arguments);\n }\n };\n\n return setFunctionName(onceFunction, `${ getFunctionName(method) }::once`);\n}\n\nexport function hashStr(str : string) : number {\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n hash += str[i].charCodeAt(0) * Math.pow((i % 10) + 1, 5);\n }\n return Math.floor(Math.pow(Math.sqrt(hash), 5));\n}\n\nexport function strHashStr(str : string) : string {\n let hash = '';\n\n for (let i = 0; i < str.length; i++) {\n let total = (str[i].charCodeAt(0) * i);\n\n if (str[i + 1]) {\n total += (str[i + 1].charCodeAt(0) * (i - 1));\n }\n\n hash += String.fromCharCode(97 + (Math.abs(total) % 26));\n }\n\n return hash;\n}\n\nexport function match(str : string, pattern : RegExp) : ?string {\n let regmatch = str.match(pattern);\n if (regmatch) {\n return regmatch[1];\n }\n}\n\nexport function awaitKey(obj : Object, key : string) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n\n let value = obj[key];\n\n if (value) {\n return resolve(value);\n }\n\n delete obj[key];\n\n Object.defineProperty(obj, key, {\n\n configurable: true,\n\n set(item) {\n value = item;\n\n if (value) {\n resolve(value);\n }\n },\n\n get() : mixed {\n return value;\n }\n });\n });\n}\n\nexport function stringifyError(err : mixed, level : number = 1) : string {\n\n if (level >= 3) {\n return 'stringifyError stack overflow';\n }\n\n try {\n if (!err) {\n return ``;\n }\n\n if (typeof err === 'string') {\n return err;\n }\n\n if (err instanceof Error) {\n let stack = err && err.stack;\n let message = err && err.message;\n\n if (stack && message) {\n if (stack.indexOf(message) !== -1) {\n return stack;\n } else {\n return `${ message }\\n${ stack }`;\n }\n } else if (stack) {\n return stack;\n } else if (message) {\n return message;\n }\n }\n\n if (err && err.toString && typeof err.toString === 'function') {\n // $FlowFixMe\n return err.toString();\n }\n\n return Object.prototype.toString.call(err);\n\n } catch (newErr) { // eslint-disable-line unicorn/catch-error-name\n return `Error while stringifying error: ${ stringifyError(newErr, level + 1) }`;\n }\n}\n\nexport function stringifyErrorMessage(err : mixed) : string {\n\n let defaultMessage = ``;\n\n if (!err) {\n return defaultMessage;\n }\n\n if (err instanceof Error) {\n return err.message || defaultMessage;\n }\n\n if (typeof err.message === 'string') {\n return err.message || defaultMessage;\n }\n\n return defaultMessage;\n}\n\nexport function stringify(item : mixed) : string {\n if (typeof item === 'string') {\n return item;\n }\n\n if (item && item.toString && typeof item.toString === 'function') {\n // $FlowFixMe\n return item.toString();\n }\n\n return Object.prototype.toString.call(item);\n}\n\nexport function domainMatches(hostname : string, domain : string) : boolean {\n hostname = hostname.split('://')[1];\n let index = hostname.indexOf(domain);\n return (index !== -1 && hostname.slice(index) === domain);\n}\n\nexport function patchMethod(obj : Object, name : string, handler : Function) {\n let original = obj[name];\n\n obj[name] = function patchedMethod() : mixed {\n return handler({\n context: this,\n args: Array.prototype.slice.call(arguments),\n original,\n callOriginal: () => original.apply(this, arguments)\n });\n };\n}\n\nexport function extend(obj : T, source : Object) : T {\n if (!source) {\n return obj;\n }\n\n if (Object.assign) {\n return Object.assign(obj, source);\n }\n\n for (let key in source) {\n if (source.hasOwnProperty(key)) {\n obj[key] = source[key];\n }\n }\n\n return obj;\n}\n\nexport function values(obj : { [string] : T }) : Array {\n let result = [];\n for (let key in obj) {\n if (obj.hasOwnProperty(key)) {\n result.push(obj[key]);\n }\n }\n return result;\n}\n\nexport function perc(pixels : number, percentage : number) : number {\n return Math.round((pixels * percentage) / 100);\n}\n\nexport function min(...args : Array) : number {\n return Math.min(...args);\n}\n\nexport function max(...args : Array) : number {\n return Math.max(...args);\n}\n\nexport function regexMap(str : string, regexp : RegExp, handler : () => T) : Array {\n let results = [];\n\n // $FlowFixMe\n str.replace(regexp, function regexMapMatcher(item) {\n results.push(handler ? handler.apply(null, arguments) : item);\n });\n\n // $FlowFixMe\n return results;\n}\n\nexport function svgToBase64(svg : string) : string {\n return `data:image/svg+xml;base64,${ base64encode(svg) }`;\n}\n\nexport function objFilter(obj : { [string] : T }, filter? : (T, ?string) => mixed = Boolean) : { [string] : R } {\n let result = {};\n\n for (let key in obj) {\n if (!obj.hasOwnProperty(key) || !filter(obj[key], key)) {\n continue;\n }\n\n result[key] = obj[key];\n }\n\n return result;\n}\n\nexport function identity (item : T) : T {\n return item;\n}\n\nexport function regexTokenize(text : string, regexp : RegExp) : Array {\n let result = [];\n text.replace(regexp, token => {\n result.push(token);\n return '';\n });\n return result;\n}\n\nexport function promiseDebounce(method : () => ZalgoPromise | T, delay : number = 50) : () => ZalgoPromise {\n\n let promise;\n let timeout;\n\n const promiseDebounced = function() : ZalgoPromise {\n if (timeout) {\n clearTimeout(timeout);\n }\n\n let localPromise = promise = promise || new ZalgoPromise();\n\n timeout = setTimeout(() => {\n promise = null;\n timeout = null;\n\n ZalgoPromise.try(method).then(\n result => { localPromise.resolve(result); },\n err => { localPromise.reject(err); }\n );\n }, delay);\n\n return localPromise;\n };\n\n return setFunctionName(promiseDebounced, `${ getFunctionName(method) }::promiseDebounced`);\n}\n\nexport function safeInterval(method : Function, time : number) : { cancel : () => void } {\n\n let timeout;\n\n function loop() {\n timeout = setTimeout(() => {\n method();\n loop();\n }, time);\n }\n\n loop();\n\n return {\n cancel() {\n clearTimeout(timeout);\n }\n };\n}\n\nexport function isInteger(str : string) : boolean {\n return Boolean(str.match(/^[0-9]+$/));\n}\n\nexport function isFloat(str : string) : boolean {\n return Boolean(str.match(/^[0-9]+\\.[0-9]+$/));\n}\n\nexport function serializePrimitive(value : string | number | boolean) : string {\n return value.toString();\n}\n\nexport function deserializePrimitive(value : string) : string | number | boolean {\n if (value === 'true') {\n return true;\n } else if (value === 'false') {\n return false;\n } else if (isInteger(value)) {\n return parseInt(value, 10);\n } else if (isFloat(value)) {\n return parseFloat(value);\n } else {\n return value;\n }\n}\n\nexport function dotify(obj : Object, prefix : string = '', newobj : Object = {}) : { [string] : string } {\n prefix = prefix ? `${ prefix }.` : prefix;\n for (let key in obj) {\n if (!obj.hasOwnProperty(key) || obj[key] === undefined || obj[key] === null || typeof obj[key] === 'function') {\n continue;\n } else if (obj[key] && Array.isArray(obj[key]) && obj[key].length && obj[key].every(val => typeof val !== 'object')) {\n newobj[`${ prefix }${ key }[]`] = obj[key].join(',');\n } else if (obj[key] && typeof obj[key] === 'object') {\n newobj = dotify(obj[key], `${ prefix }${ key }`, newobj);\n } else {\n newobj[`${ prefix }${ key }`] = serializePrimitive(obj[key]);\n }\n }\n return newobj;\n}\n\nexport function undotify(obj : { [string] : string }) : Object {\n \n let result = {};\n\n for (let key in obj) {\n if (!obj.hasOwnProperty(key) || typeof obj[key] !== 'string') {\n continue;\n }\n\n let value = obj[key];\n\n if (key.match(/^.+\\[\\]$/)) {\n key = key.slice(0, key.length - 2);\n value = value.split(',').map(deserializePrimitive);\n } else {\n value = deserializePrimitive(value);\n }\n\n let keyResult = result;\n let parts = key.split('.');\n for (let i = 0; i < parts.length; i++) {\n let part = parts[i];\n let isLast = (i + 1 === parts.length);\n let isIndex = !isLast && isInteger(parts[i + 1]);\n\n if (part === 'constructor' || part === 'prototype' || part === '__proto__') {\n throw new Error(`Disallowed key: ${ part }`);\n }\n\n if (isLast) {\n // $FlowFixMe\n keyResult[part] = value;\n } else {\n // $FlowFixMe\n keyResult = keyResult[part] = keyResult[part] || (isIndex ? [] : {});\n }\n }\n }\n\n return result;\n}\n\nexport type EventEmitterType = {\n on : (eventName : string, handler : Function) => CancelableType,\n once : (eventName : string, handler : Function) => CancelableType,\n trigger : (eventName : string, ...args : $ReadOnlyArray) => ZalgoPromise,\n triggerOnce : (eventName : string, ...args : $ReadOnlyArray) => ZalgoPromise\n};\n\nexport function eventEmitter() : EventEmitterType {\n let triggered = {};\n let handlers = {};\n\n return {\n\n on(eventName : string, handler : Function) : CancelableType {\n let handlerList = handlers[eventName] = handlers[eventName] || [];\n\n handlerList.push(handler);\n\n let cancelled = false;\n\n return {\n cancel() {\n if (!cancelled) {\n cancelled = true;\n handlerList.splice(handlerList.indexOf(handler), 1);\n }\n\n }\n };\n },\n\n once(eventName : string, handler : Function) : CancelableType {\n\n let listener = this.on(eventName, () => {\n listener.cancel();\n handler();\n });\n\n return listener;\n },\n\n trigger(eventName : string, ...args : $ReadOnlyArray) : ZalgoPromise {\n\n let handlerList = handlers[eventName];\n let promises = [];\n\n if (handlerList) {\n for (let handler of handlerList) {\n promises.push(ZalgoPromise.try(() => handler(...args)));\n }\n }\n\n return ZalgoPromise.all(promises).then(noop);\n },\n\n triggerOnce(eventName : string, ...args : $ReadOnlyArray) : ZalgoPromise {\n\n if (triggered[eventName]) {\n return ZalgoPromise.resolve();\n }\n\n triggered[eventName] = true;\n return this.trigger(eventName, ...args);\n }\n };\n}\n\nexport function camelToDasherize(string : string) : string {\n return string.replace(/([A-Z])/g, (g) => {\n return `-${ g.toLowerCase() }`;\n });\n}\n\nexport function dasherizeToCamel(string : string) : string {\n return string.replace(/-([a-z])/g, (g) => {\n return g[1].toUpperCase();\n });\n}\n\nexport function capitalizeFirstLetter(string : string) : string {\n return string.charAt(0).toUpperCase() + string.slice(1).toLowerCase();\n}\n\nexport function get(item : Object, path : string, def : mixed) : mixed {\n\n if (!path) {\n return def;\n }\n\n let pathParts = path.split('.');\n\n // Loop through each section of our key path\n\n for (let i = 0; i < pathParts.length; i++) {\n\n // If we have an object, we can get the key\n if (typeof item === 'object' && item !== null) {\n item = item[pathParts[i]];\n\n // Otherwise, we should return the default (undefined if not provided)\n } else {\n return def;\n }\n }\n\n // If our final result is undefined, we should return the default\n\n return item === undefined ? def : item;\n}\n\nexport function safeTimeout(method : Function, time : number) {\n\n let interval = safeInterval(() => {\n time -= 100;\n if (time <= 0) {\n interval.cancel();\n method();\n }\n }, 100);\n}\n\nexport function defineLazyProp(obj : Object | Array, key : string | number, getter : () => T) {\n if (Array.isArray(obj)) {\n if (typeof key !== 'number') {\n throw new TypeError(`Array key must be number`);\n }\n } else if (typeof obj === 'object' && obj !== null) {\n if (typeof key !== 'string') {\n throw new TypeError(`Object key must be string`);\n }\n }\n \n Object.defineProperty(obj, key, {\n configurable: true,\n enumerable: true,\n get: () => {\n // $FlowFixMe\n delete obj[key];\n let value = getter();\n // $FlowFixMe\n obj[key] = value;\n return value;\n },\n set: (value : T) => {\n // $FlowFixMe\n delete obj[key];\n // $FlowFixMe\n obj[key] = value;\n }\n });\n}\n\nexport function arrayFrom(item : Iterable) : Array { // eslint-disable-line no-undef\n return Array.prototype.slice.call(item);\n}\n\nexport function isObject(item : mixed) : boolean {\n return (typeof item === 'object' && item !== null);\n}\n\nexport function isObjectObject(obj : mixed) : boolean {\n return isObject(obj) && Object.prototype.toString.call(obj) === '[object Object]';\n}\n\nexport function isPlainObject(obj : mixed) : boolean {\n if (!isObjectObject(obj)) {\n return false;\n }\n\n // $FlowFixMe\n let constructor = obj.constructor;\n\n if (typeof constructor !== 'function') {\n return false;\n }\n\n let prototype = constructor.prototype;\n\n if (!isObjectObject(prototype)) {\n return false;\n }\n\n if (!prototype.hasOwnProperty('isPrototypeOf')) {\n return false;\n }\n\n return true;\n}\n\nexport function replaceObject | Object> (item : T, replacer : (mixed, string | number, string) => mixed, fullKey : string = '') : T {\n\n if (Array.isArray(item)) {\n let length = item.length;\n let result : Array = [];\n\n for (let i = 0; i < length; i++) {\n\n \n defineLazyProp(result, i, () => {\n let itemKey = fullKey ? `${ fullKey }.${ i }` : `${ i }`;\n let el = item[i];\n\n let child = replacer(el, i, itemKey);\n\n if (isPlainObject(child) || Array.isArray(child)) {\n // $FlowFixMe\n child = replaceObject(child, replacer, itemKey);\n }\n\n return child;\n });\n }\n\n // $FlowFixMe\n return result;\n } else if (isPlainObject(item)) {\n let result = {};\n\n for (let key in item) {\n if (!item.hasOwnProperty(key)) {\n continue;\n }\n\n defineLazyProp(result, key, () => {\n let itemKey = fullKey ? `${ fullKey }.${ key }` : `${ key }`;\n // $FlowFixMe\n let el = item[key];\n\n let child = replacer(el, key, itemKey);\n\n if (isPlainObject(child) || Array.isArray(child)) {\n // $FlowFixMe\n child = replaceObject(child, replacer, itemKey);\n }\n\n return child;\n });\n }\n\n // $FlowFixMe\n return result;\n } else {\n throw new Error(`Pass an object or array`);\n }\n}\n\n\nexport function copyProp(source : Object, target : Object, name : string, def : mixed) {\n if (source.hasOwnProperty(name)) {\n let descriptor = Object.getOwnPropertyDescriptor(source, name);\n // $FlowFixMe\n Object.defineProperty(target, name, descriptor);\n\n } else {\n target[name] = def;\n }\n}\n\ntype RegexResultType = {\n text : string,\n groups : Array,\n start : number,\n end : number,\n length : number,\n replace : (text : string) => string\n};\n\nexport function regex(pattern : string | RegExp, string : string, start : number = 0) : ?RegexResultType {\n\n if (typeof pattern === 'string') {\n // eslint-disable-next-line security/detect-non-literal-regexp\n pattern = new RegExp(pattern);\n }\n\n let result = string.slice(start).match(pattern);\n\n if (!result) {\n return;\n }\n\n // $FlowFixMe\n let index : number = result.index;\n let regmatch = result[0];\n\n return {\n text: regmatch,\n groups: result.slice(1),\n start: start + index,\n end: start + index + regmatch.length,\n length: regmatch.length,\n\n replace(text : string) : string {\n\n if (!regmatch) {\n return '';\n }\n\n return `${ regmatch.slice(0, start + index) }${ text }${ regmatch.slice(index + regmatch.length) }`;\n }\n };\n}\n\nexport function regexAll(pattern : string | RegExp, string : string) : Array {\n\n let matches = [];\n let start = 0;\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n let regmatch = regex(pattern, string, start);\n\n if (!regmatch) {\n break;\n }\n\n matches.push(regmatch);\n start = match.end;\n }\n\n return matches;\n}\n\nexport function isDefined(value : ?mixed) : boolean {\n return value !== null && value !== undefined;\n}\n\nexport function cycle(method : Function) : ZalgoPromise {\n return ZalgoPromise.try(method).then(() => cycle(method));\n}\n\nexport function debounce(method : (...args : Array) => T, time : number = 100) : (...args : Array) => void {\n\n let timeout;\n\n const debounceWrapper = function() {\n clearTimeout(timeout);\n\n timeout = setTimeout(() => {\n return method.apply(this, arguments);\n }, time);\n };\n\n return setFunctionName(debounceWrapper, `${ getFunctionName(method) }::debounced`);\n}\n\nexport function isRegex(item : mixed) : boolean {\n return Object.prototype.toString.call(item) === '[object RegExp]';\n}\n\ntype FunctionProxy = (method : T) => T;\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport let weakMapMemoize : FunctionProxy<*> = (method : (arg : any) => R) : ((...args : Array) => R) => {\n\n let weakmap = new WeakMap();\n\n // eslint-disable-next-line flowtype/no-weak-types\n return function weakmapMemoized(arg : any) : R {\n return weakmap.getOrSet(arg, () => method.call(this, arg));\n };\n};\n\ntype FunctionPromiseProxy) => ZalgoPromise> = (T) => T;\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport let weakMapMemoizePromise : FunctionPromiseProxy<*, *> = (method : (arg : any) => ZalgoPromise) : ((...args : Array) => ZalgoPromise) => {\n\n let weakmap = new WeakMap();\n\n // eslint-disable-next-line flowtype/no-weak-types\n return function weakmapMemoizedPromise(arg : any) : ZalgoPromise {\n return weakmap.getOrSet(arg, () =>\n method.call(this, arg).finally(() => {\n weakmap.delete(arg);\n })\n );\n };\n};\n\nexport function getOrSet(obj : O, key : string, getter : () => T) : T {\n if (obj.hasOwnProperty(key)) {\n return obj[key];\n }\n\n const val = getter();\n obj[key] = val;\n return val;\n}\n\nexport type CleanupType = {|\n set : (string, T) => T, // eslint-disable-line no-undef\n register : (Function) => void,\n all : () => ZalgoPromise\n|};\n\nexport function cleanup(obj : Object) : CleanupType {\n\n const tasks = [];\n let cleaned = false;\n\n return {\n set(name : string, item : T) : T {\n if (!cleaned) {\n obj[name] = item;\n this.register(() => {\n delete obj[name];\n });\n }\n return item;\n },\n\n register(method : Function) {\n if (cleaned) {\n method();\n } else {\n tasks.push(once(method));\n }\n },\n\n all() : ZalgoPromise {\n const results = [];\n cleaned = true;\n\n while (tasks.length) {\n const task = tasks.pop();\n results.push(task());\n }\n\n return ZalgoPromise.all(results).then(noop);\n }\n };\n}\n\nexport function tryCatch(fn : () => T) : {| result : T, error : void |} | {| result : void, error : mixed |} {\n let result;\n let error;\n\n try {\n result = fn();\n } catch (err) {\n error = err;\n }\n \n // $FlowFixMe\n return { result, error };\n}\n\nexport function removeFromArray>(arr : T, item : X) {\n const index = arr.indexOf(item);\n if (index !== -1) {\n arr.splice(index, 1);\n }\n}\n\nexport function assertExists(name : string, thing : void | null | T) : T {\n if (thing === null || typeof thing === 'undefined') {\n throw new Error(`Expected ${ name } to be present`);\n }\n \n return thing;\n}\n \nexport function unique(arr : $ReadOnlyArray) : $ReadOnlyArray {\n const result = {};\n for (const item of arr) {\n // eslint-disable-next-line const-immutable/no-mutation\n result[item] = true;\n }\n return Object.keys(result);\n}\n","/* @flow */\n\nexport const KEY_CODES = {\n ENTER: 13\n};\n","/* @flow */\n/* eslint max-lines: off */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { linkFrameWindow, isWindowClosed,\n type SameDomainWindowType, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\n\nimport { inlineMemoize, noop, stringify, capitalizeFirstLetter,\n once, extend, safeInterval, uniqueID, arrayFrom } from './util';\nimport { isDevice } from './device';\nimport { KEY_CODES } from './constants';\nimport type { CancelableType } from './types';\n\ntype ElementRefType = string | HTMLElement;\n\nexport function isDocumentReady() : boolean {\n return Boolean(document.body) && document.readyState === 'complete';\n}\n\nexport function urlEncode(str : string) : string {\n return str.replace(/\\?/g, '%3F').replace(/&/g, '%26').replace(/#/g, '%23').replace(/\\+/g, '%2B');\n}\n\nexport function waitForWindowReady() : ZalgoPromise {\n return inlineMemoize(waitForWindowReady, () : ZalgoPromise => {\n return new ZalgoPromise(resolve => {\n if (isDocumentReady()) {\n resolve();\n }\n\n window.addEventListener('load', () => resolve());\n });\n });\n}\n\nexport function waitForDocumentReady() : ZalgoPromise {\n return inlineMemoize(waitForDocumentReady, () : ZalgoPromise => {\n return new ZalgoPromise(resolve => {\n\n if (isDocumentReady()) {\n return resolve();\n }\n\n let interval = setInterval(() => {\n if (isDocumentReady()) {\n clearInterval(interval);\n return resolve();\n }\n }, 10);\n });\n });\n}\n\nexport function waitForDocumentBody() : ZalgoPromise {\n return waitForDocumentReady().then(() => {\n if (document.body) {\n return document.body;\n }\n\n throw new Error('Document ready but document.body not present');\n });\n}\n\nexport function parseQuery(queryString : string) : Object {\n return inlineMemoize(parseQuery, () : Object => {\n let params = {};\n\n if (!queryString) {\n return params;\n }\n\n if (queryString.indexOf('=') === -1) {\n return params;\n }\n\n for (let pair of queryString.split('&')) {\n pair = pair.split('=');\n\n if (pair[0] && pair[1]) {\n params[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n }\n\n return params;\n }, [ queryString ]);\n}\n\n\nexport function getQueryParam(name : string) : string {\n return parseQuery(window.location.search.slice(1))[name];\n}\n\nexport function urlWillRedirectPage(url : string) : boolean {\n\n if (url.indexOf('#') === -1) {\n return true;\n }\n\n if (url.indexOf('#') === 0) {\n return false;\n }\n\n if (url.split('#')[0] === window.location.href.split('#')[0]) {\n return false;\n }\n\n return true;\n}\n\nexport function formatQuery(obj : { [ string ] : string } = {}) : string {\n\n return Object.keys(obj).filter(key => {\n return typeof obj[key] === 'string';\n }).map(key => {\n return `${ urlEncode(key) }=${ urlEncode(obj[key]) }`;\n }).join('&');\n}\n\nexport function extendQuery(originalQuery : string, props : { [ string ] : string } = {}) : string {\n\n if (!props || !Object.keys(props).length) {\n return originalQuery;\n }\n\n return formatQuery({\n ...parseQuery(originalQuery),\n ...props\n });\n}\n\nexport function extendUrl(url : string, options : { query? : { [string] : string }, hash? : { [string] : string } } = {}) : string {\n\n let query = options.query || {};\n let hash = options.hash || {};\n\n let originalUrl;\n let originalQuery;\n let originalHash;\n\n [ originalUrl, originalHash ] = url.split('#');\n [ originalUrl, originalQuery ] = originalUrl.split('?');\n\n let queryString = extendQuery(originalQuery, query);\n let hashString = extendQuery(originalHash, hash);\n\n if (queryString) {\n originalUrl = `${ originalUrl }?${ queryString }`;\n }\n\n if (hashString) {\n originalUrl = `${ originalUrl }#${ hashString }`;\n }\n\n return originalUrl;\n}\n\nexport function redirect(url : string, win : CrossDomainWindowType = window) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n win.location = url;\n if (!urlWillRedirectPage(url)) {\n resolve();\n }\n });\n}\n\nexport function hasMetaViewPort() : boolean {\n let meta = document.querySelector('meta[name=viewport]');\n\n if (isDevice() && window.screen.width < 660 && !meta) {\n return false;\n }\n\n return true;\n}\n\nexport function isElementVisible(el : HTMLElement) : boolean {\n return Boolean(el.offsetWidth || el.offsetHeight || el.getClientRects().length);\n}\n\nexport function enablePerformance() : boolean {\n return inlineMemoize(enablePerformance, () : boolean => {\n /* eslint-disable compat/compat */\n return Boolean(\n window.performance &&\n performance.now &&\n performance.timing &&\n performance.timing.connectEnd &&\n performance.timing.navigationStart &&\n (Math.abs(performance.now() - Date.now()) > 1000) &&\n (performance.now() - (performance.timing.connectEnd - performance.timing.navigationStart)) > 0\n );\n /* eslint-enable compat/compat */\n });\n}\n\nexport function getPageRenderTime() : ZalgoPromise {\n return waitForDocumentReady().then(() => {\n\n if (!enablePerformance()) {\n return;\n }\n\n let timing = window.performance.timing;\n\n if (timing.connectEnd && timing.domInteractive) {\n return timing.domInteractive - timing.connectEnd;\n }\n });\n}\n\nexport function htmlEncode(html : string = '') : string {\n return html.toString()\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(/\\//g, '/');\n}\n\nexport function isBrowser() : boolean {\n return (typeof window !== 'undefined');\n}\n\nexport function querySelectorAll(selector : string, doc : HTMLElement = window.document) : Array {\n return Array.prototype.slice.call(doc.querySelectorAll(selector));\n}\n\nexport function onClick(element : HTMLElement, handler : (Event) => void) {\n element.addEventListener('touchstart', noop);\n element.addEventListener('click', handler);\n element.addEventListener('keypress', (event : Event) => {\n // $FlowFixMe\n if (event.keyCode === KEY_CODES.ENTER) {\n return handler(event);\n }\n });\n}\n\nexport function getScript({ host = window.location.host, path } : { host? : string, path : string }) : ?HTMLScriptElement {\n return inlineMemoize(getScript, () : ?HTMLScriptElement => {\n\n let url = `${ host }${ path }`;\n let scripts = Array.prototype.slice.call(document.getElementsByTagName('script'));\n\n for (let script of scripts) {\n if (!script.src) {\n continue;\n }\n\n let src = script.src.replace(/^https?:\\/\\//, '').split('?')[0];\n\n if (src === url) {\n return script;\n }\n }\n }, [ path ]);\n}\n\nexport function isLocalStorageEnabled() : boolean {\n return inlineMemoize(isLocalStorageEnabled, () => {\n try {\n if (typeof window === 'undefined') {\n return false;\n }\n\n if (window.localStorage) {\n let value = Math.random().toString();\n window.localStorage.setItem('__test__localStorage__', value);\n let result = window.localStorage.getItem('__test__localStorage__');\n window.localStorage.removeItem('__test__localStorage__');\n if (value === result) {\n return true;\n }\n }\n } catch (err) {\n // pass\n }\n return false;\n });\n}\n\nexport function getBrowserLocales() : Array<{ country? : string, lang : string }> {\n let nav = window.navigator;\n\n let locales = nav.languages\n ? Array.prototype.slice.apply(nav.languages)\n : [];\n\n if (nav.language) {\n locales.push(nav.language);\n }\n\n if (nav.userLanguage) {\n locales.push(nav.userLanguage);\n }\n\n return locales.map(locale => {\n\n if (locale && locale.match(/^[a-z]{2}[-_][A-Z]{2}$/)) {\n let [ lang, country ] = locale.split(/[-_]/);\n return { country, lang };\n }\n\n if (locale && locale.match(/^[a-z]{2}$/)) {\n return { lang: locale };\n }\n\n return null;\n\n }).filter(Boolean);\n}\n\n\nexport function appendChild(container : HTMLElement, child : HTMLElement | Text) {\n container.appendChild(child);\n}\n\nexport function isElement(element : mixed) : boolean {\n\n if (element instanceof window.Element) {\n return true;\n }\n\n if (element !== null && typeof element === 'object' && element.nodeType === 1 && typeof element.style === 'object' && typeof element.ownerDocument === 'object') {\n return true;\n }\n\n return false;\n}\n\nexport function getElementSafe(id : ElementRefType, doc : Document | HTMLElement = document) : ?HTMLElement {\n\n if (isElement(id)) {\n // $FlowFixMe\n return id;\n }\n\n if (typeof id === 'string') {\n return doc.querySelector(id);\n }\n}\n\nexport function getElement(id : ElementRefType, doc : Document | HTMLElement = document) : HTMLElement {\n\n let element = getElementSafe(id, doc);\n\n if (element) {\n return element;\n }\n\n throw new Error(`Can not find element: ${ stringify(id) }`);\n}\n\nexport function elementReady(id : ElementRefType) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n let name = stringify(id);\n let el = getElementSafe(id);\n\n if (el) {\n return resolve(el);\n }\n\n if (isDocumentReady()) {\n return reject(new Error(`Document is ready and element ${ name } does not exist`));\n }\n\n let interval = setInterval(() => {\n\n el = getElementSafe(id);\n\n if (el) {\n clearInterval(interval);\n return resolve(el);\n }\n\n if (isDocumentReady()) {\n clearInterval(interval);\n return reject(new Error(`Document is ready and element ${ name } does not exist`));\n }\n }, 10);\n });\n}\n\nexport function PopupOpenError(message : string) {\n this.message = message;\n}\n\nPopupOpenError.prototype = Object.create(Error.prototype);\n\ntype PopupOptions = {|\n name? : string,\n width? : number,\n height? : number,\n top? : number,\n left? : number,\n status? : 0 | 1,\n resizable? : 0 | 1,\n toolbar? : 0 | 1,\n menubar? : 0 | 1,\n scrollbars? : 0 | 1\n|};\n\nexport function popup(url : string, options? : PopupOptions) : CrossDomainWindowType {\n\n // $FlowFixMe\n options = options || {};\n\n let { width, height } = options;\n\n let top = 0;\n let left = 0;\n\n if (width) {\n if (window.outerWidth) {\n left = Math.round((window.outerWidth - width) / 2) + window.screenX;\n } else if (window.screen.width) {\n left = Math.round((window.screen.width - width) / 2);\n }\n }\n\n if (height) {\n if (window.outerHeight) {\n top = Math.round((window.outerHeight - height) / 2) + window.screenY;\n } else if (window.screen.height) {\n top = Math.round((window.screen.height - height) / 2);\n }\n }\n\n if (width && height) {\n options = {\n top,\n left,\n width,\n height,\n status: 1,\n toolbar: 0,\n menubar: 0,\n resizable: 1,\n scrollbars: 1,\n ...options\n };\n }\n\n let name = options.name || '';\n delete options.name;\n\n // eslint-disable-next-line array-callback-return\n let params = Object.keys(options).map(key => {\n // $FlowFixMe\n if (options[key] !== null && options[key] !== undefined) {\n return `${ key }=${ stringify(options[key]) }`;\n }\n }).filter(Boolean).join(',');\n\n let win;\n\n try {\n win = window.open(url, name, params, true);\n } catch (err) {\n throw new PopupOpenError(`Can not open popup window - ${ err.stack || err.message }`);\n }\n\n if (isWindowClosed(win)) {\n let err = new PopupOpenError(`Can not open popup window - blocked`);\n throw err;\n }\n\n window.addEventListener('unload', () => win.close());\n\n return win;\n}\n\n\nexport function writeToWindow(win : SameDomainWindowType, html : string) {\n try {\n win.document.open();\n win.document.write(html);\n win.document.close();\n } catch (err) {\n try {\n win.location = `javascript: document.open(); document.write(${ JSON.stringify(html) }); document.close();`;\n } catch (err2) {\n // pass\n }\n }\n}\n\nexport function writeElementToWindow(win : SameDomainWindowType, el : HTMLElement) {\n\n let tag = el.tagName.toLowerCase();\n\n if (tag !== 'html') {\n throw new Error(`Expected element to be html, got ${ tag }`);\n }\n\n let documentElement = win.document.documentElement;\n\n for (const child of arrayFrom(documentElement.children)) {\n documentElement.removeChild(child);\n }\n\n for (const child of arrayFrom(el.children)) {\n documentElement.appendChild(child);\n }\n}\n\nexport function setStyle(el : HTMLElement, styleText : string, doc : Document = window.document) {\n // $FlowFixMe\n if (el.styleSheet) {\n // $FlowFixMe\n el.styleSheet.cssText = styleText;\n } else {\n el.appendChild(doc.createTextNode(styleText));\n }\n}\n\nexport type ElementOptionsType = {\n style? : { [ string ] : string },\n id? : string,\n class? : ?Array,\n attributes? : { [ string ] : string },\n styleSheet? : ?string,\n html? : ?string\n};\n\nlet awaitFrameLoadPromises : WeakMap>;\n\nexport function awaitFrameLoad(frame : HTMLIFrameElement) : ZalgoPromise {\n awaitFrameLoadPromises = awaitFrameLoadPromises || new WeakMap();\n\n if (awaitFrameLoadPromises.has(frame)) {\n let promise = awaitFrameLoadPromises.get(frame);\n if (promise) {\n return promise;\n }\n }\n\n let promise = new ZalgoPromise((resolve, reject) => {\n frame.addEventListener('load', () => {\n linkFrameWindow(frame);\n resolve(frame);\n });\n\n frame.addEventListener('error', (err : Event) => {\n if (frame.contentWindow) {\n resolve(frame);\n } else {\n reject(err);\n }\n });\n });\n\n awaitFrameLoadPromises.set(frame, promise);\n\n return promise;\n}\n\nexport function awaitFrameWindow(frame : HTMLIFrameElement) : ZalgoPromise {\n return awaitFrameLoad(frame).then(loadedFrame => {\n\n if (!loadedFrame.contentWindow) {\n throw new Error(`Could not find window in iframe`);\n }\n\n return loadedFrame.contentWindow;\n });\n}\n\nexport function createElement(tag : string = 'div', options : ElementOptionsType = {}, container : ?HTMLElement) : HTMLElement {\n\n tag = tag.toLowerCase();\n let element = document.createElement(tag);\n\n if (options.style) {\n extend(element.style, options.style);\n }\n\n if (options.class) {\n element.className = options.class.join(' ');\n }\n\n if (options.id) {\n element.setAttribute('id', options.id);\n }\n\n if (options.attributes) {\n for (let key of Object.keys(options.attributes)) {\n element.setAttribute(key, options.attributes[key]);\n }\n }\n\n if (options.styleSheet) {\n setStyle(element, options.styleSheet);\n }\n\n if (container) {\n appendChild(container, element);\n }\n\n if (options.html) {\n if (tag === 'iframe') {\n // $FlowFixMe\n if (!container || !element.contentWindow) {\n throw new Error(`Iframe html can not be written unless container provided and iframe in DOM`);\n }\n\n // $FlowFixMe\n writeToWindow(element.contentWindow, options.html);\n\n } else {\n element.innerHTML = options.html;\n }\n }\n\n return element;\n}\n\n\nexport type IframeElementOptionsType = {\n style? : { [ string ] : string },\n class? : ?Array,\n attributes? : { [ string ] : string },\n styleSheet? : ?string,\n html? : ?string,\n url? : ?string\n};\n\nexport function iframe(options : IframeElementOptionsType = {}, container : ?HTMLElement) : HTMLIFrameElement {\n\n let attributes = options.attributes || {};\n let style = options.style || {};\n\n let frame = createElement('iframe', {\n attributes: {\n allowTransparency: 'true',\n ...attributes\n },\n style: {\n backgroundColor: 'transparent',\n border: 'none',\n ...style\n },\n html: options.html,\n class: options.class\n });\n\n const isIE = window.navigator.userAgent.match(/MSIE|Edge/i);\n \n if (!frame.hasAttribute('id')) {\n frame.setAttribute('id', uniqueID());\n }\n\n // $FlowFixMe\n awaitFrameLoad(frame);\n\n if (container) {\n let el = getElement(container);\n el.appendChild(frame);\n }\n\n if (options.url || isIE) {\n frame.setAttribute('src', options.url || 'about:blank');\n }\n\n // $FlowFixMe\n return frame;\n}\n\nexport function addEventListener(obj : HTMLElement, event : string, handler : (event : Event) => void) : CancelableType {\n obj.addEventListener(event, handler);\n return {\n cancel() {\n obj.removeEventListener(event, handler);\n }\n };\n}\n\nexport function bindEvents(element : HTMLElement, eventNames : Array, handler : (event : Event) => void) : CancelableType {\n\n handler = once(handler);\n\n for (let eventName of eventNames) {\n element.addEventListener(eventName, handler);\n }\n\n return {\n cancel: once(() => {\n for (let eventName of eventNames) {\n element.removeEventListener(eventName, handler);\n }\n })\n };\n}\n\nconst VENDOR_PREFIXES = [ 'webkit', 'moz', 'ms', 'o' ];\n\nexport function setVendorCSS(element : HTMLElement, name : string, value : string) {\n\n // $FlowFixMe\n element.style[name] = value;\n\n let capitalizedName = capitalizeFirstLetter(name);\n\n for (let prefix of VENDOR_PREFIXES) {\n // $FlowFixMe\n element.style[`${ prefix }${ capitalizedName }`] = value;\n }\n}\n\nconst ANIMATION_START_EVENTS = [ 'animationstart', 'webkitAnimationStart', 'oAnimationStart', 'MSAnimationStart' ];\nconst ANIMATION_END_EVENTS = [ 'animationend', 'webkitAnimationEnd', 'oAnimationEnd', 'MSAnimationEnd' ];\n\nexport function animate(element : ElementRefType, name : string, clean : (Function) => void, timeout : number = 1000) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n let el = getElement(element);\n\n if (!el) {\n return resolve();\n }\n\n let hasStarted = false;\n\n let startTimeout;\n let endTimeout;\n let startEvent;\n let endEvent;\n\n function cleanUp() {\n clearTimeout(startTimeout);\n clearTimeout(endTimeout);\n startEvent.cancel();\n endEvent.cancel();\n }\n\n startEvent = bindEvents(el, ANIMATION_START_EVENTS, event => {\n\n // $FlowFixMe\n if (event.target !== el || event.animationName !== name) {\n return;\n }\n\n clearTimeout(startTimeout);\n\n event.stopPropagation();\n\n startEvent.cancel();\n hasStarted = true;\n\n endTimeout = setTimeout(() => {\n cleanUp();\n resolve();\n }, timeout);\n });\n\n endEvent = bindEvents(el, ANIMATION_END_EVENTS, event => {\n\n // $FlowFixMe\n if (event.target !== el || event.animationName !== name) {\n return;\n }\n\n cleanUp();\n\n // $FlowFixMe\n if (typeof event.animationName === 'string' && event.animationName !== name) {\n return reject(`Expected animation name to be ${ name }, found ${ event.animationName }`);\n }\n\n return resolve();\n });\n\n setVendorCSS(el, 'animationName', name);\n\n startTimeout = setTimeout(() => {\n if (!hasStarted) {\n cleanUp();\n return resolve();\n }\n }, 200);\n\n if (clean) {\n clean(cleanUp);\n }\n });\n}\n\nconst STYLE = {\n\n DISPLAY: {\n NONE: 'none',\n BLOCK: 'block'\n },\n\n VISIBILITY: {\n VISIBLE: 'visible',\n HIDDEN: 'hidden'\n },\n\n IMPORTANT: 'important'\n};\n\nexport function makeElementVisible(element : HTMLElement) {\n element.style.setProperty('visibility', '');\n}\n\nexport function makeElementInvisible(element : HTMLElement) {\n element.style.setProperty('visibility', STYLE.VISIBILITY.HIDDEN, STYLE.IMPORTANT);\n}\n\n\nexport function showElement(element : HTMLElement) {\n element.style.setProperty('display', '');\n}\n\nexport function hideElement(element : HTMLElement) {\n element.style.setProperty('display', STYLE.DISPLAY.NONE, STYLE.IMPORTANT);\n}\n\nexport function destroyElement(element : HTMLElement) {\n if (element && element.parentNode) {\n element.parentNode.removeChild(element);\n }\n}\n\nexport function showAndAnimate(element : HTMLElement, name : string, clean : (Function) => void) : ZalgoPromise {\n let animation = animate(element, name, clean);\n showElement(element);\n return animation;\n}\n\nexport function animateAndHide(element : HTMLElement, name : string, clean : (Function) => void) : ZalgoPromise {\n return animate(element, name, clean).then(() => {\n hideElement(element);\n });\n}\n\nexport function addClass(element : HTMLElement, name : string) {\n element.classList.add(name);\n}\n\nexport function removeClass(element : HTMLElement, name : string) {\n element.classList.remove(name);\n}\n\nexport function isElementClosed(el : HTMLElement) : boolean {\n if (!el || !el.parentNode) {\n return true;\n }\n return false;\n}\n\nexport function watchElementForClose(element : HTMLElement, handler : () => mixed) : CancelableType {\n handler = once(handler);\n\n let interval;\n\n if (isElementClosed(element)) {\n handler();\n } else {\n interval = safeInterval(() => {\n if (isElementClosed(element)) {\n interval.cancel();\n handler();\n }\n }, 50);\n }\n\n return {\n cancel() {\n if (interval) {\n interval.cancel();\n }\n }\n };\n}\n\nexport function fixScripts(el : HTMLElement, doc : Document = window.document) {\n for (let script of querySelectorAll('script', el)) {\n let parentNode = script.parentNode;\n\n if (!parentNode) {\n continue;\n }\n\n let newScript = doc.createElement('script');\n newScript.text = script.textContent;\n parentNode.replaceChild(newScript, script);\n }\n}\n\ntype OnResizeOptions = {|\n width? : boolean,\n height? : boolean,\n interval? : number,\n win? : SameDomainWindowType\n|};\n\nexport function onResize(el : HTMLElement, handler : ({ width : number, height : number }) => void, { width = true, height = true, interval = 100, win = window } : OnResizeOptions = {}) : {} {\n let currentWidth = el.offsetWidth;\n let currentHeight = el.offsetHeight;\n\n handler({ width: currentWidth, height: currentHeight });\n\n let check = () => {\n let newWidth = el.offsetWidth;\n let newHeight = el.offsetHeight;\n\n if ((width && newWidth !== currentWidth) || (height && newHeight !== currentHeight)) {\n handler({ width: newWidth, height: newHeight });\n }\n\n currentWidth = newWidth;\n currentHeight = newHeight;\n };\n\n let observer;\n let timeout;\n\n if (typeof win.ResizeObserver !== 'undefined') {\n observer = new win.ResizeObserver(check);\n observer.observe(el);\n\n } else if (typeof win.MutationObserver !== 'undefined') {\n observer = new win.MutationObserver(check);\n observer.observe(el, {\n attributes: true,\n childList: true,\n subtree: true,\n characterData: false\n });\n win.addEventListener('resize', check);\n } else {\n let loop = () => {\n check();\n timeout = setTimeout(loop, interval);\n };\n loop();\n }\n\n return {\n cancel: () => {\n observer.disconnect();\n window.removeEventListener('resize', check);\n clearTimeout(timeout);\n }\n };\n}\n\nexport function getResourceLoadTime(url : string) : ?number {\n\n if (!enablePerformance()) {\n return;\n }\n\n if (!window.performance || typeof window.performance.getEntries !== 'function') {\n return;\n }\n\n const entries = window.performance.getEntries();\n\n for (let i = 0; i < entries.length; i++) {\n const entry = entries[i];\n\n if (entry && entry.name && entry.name.indexOf(url) === 0 && typeof entry.duration === 'number') {\n return Math.floor(entry.duration);\n }\n }\n}\n","/* @flow */\n\nimport { uniqueID, getGlobal, inlineMemoize } from './util';\nimport { isLocalStorageEnabled } from './dom';\n\ntype Getter = (handler : (Object) => T) => T;\n\nexport type Storage = {\n getState : Getter<*>,\n getID : () => string,\n getSessionState : Getter<*>,\n getSessionID : () => string\n};\n\nconst DEFAULT_SESSION_STORAGE = 20 * 60 * 1000;\n\nexport function getStorage({ name, lifetime = DEFAULT_SESSION_STORAGE } : { name : string, lifetime? : number }) : Storage {\n return inlineMemoize(getStorage, () => {\n const STORAGE_KEY = `__${ name }_storage__`;\n\n let accessedStorage;\n\n function getState(handler : (storage : Object) => T) : T {\n\n let localStorageEnabled = isLocalStorageEnabled();\n let storage;\n\n if (accessedStorage) {\n storage = accessedStorage;\n }\n\n if (!storage && localStorageEnabled) {\n let rawStorage = window.localStorage.getItem(STORAGE_KEY);\n\n if (rawStorage) {\n storage = JSON.parse(rawStorage);\n }\n }\n\n if (!storage) {\n storage = getGlobal()[STORAGE_KEY];\n }\n\n if (!storage) {\n storage = {\n id: uniqueID()\n };\n }\n\n if (!storage.id) {\n storage.id = uniqueID();\n }\n\n accessedStorage = storage;\n\n let result = handler(storage);\n\n if (localStorageEnabled) {\n window.localStorage.setItem(STORAGE_KEY, JSON.stringify(storage));\n } else {\n getGlobal()[STORAGE_KEY] = storage;\n }\n\n accessedStorage = null;\n\n return result;\n }\n\n function getID() : string {\n return getState(storage => storage.id);\n }\n\n function getSession(handler : (state : Object) => T) : T {\n return getState(storage => {\n\n let session = storage.__session__;\n let now = Date.now();\n\n if (session && ((now - session.created) > lifetime)) {\n session = null;\n }\n\n if (!session) {\n session = {\n guid: uniqueID(),\n created: now\n };\n }\n\n storage.__session__ = session;\n\n return handler(session);\n });\n }\n\n function getSessionState(handler : (state : Object) => T) : T {\n return getSession(session => {\n session.state = session.state || {};\n return handler(session.state);\n });\n }\n\n function getSessionID() : string {\n return getSession(session => session.guid);\n }\n\n return {\n getState,\n getID,\n getSessionState,\n getSessionID\n };\n }, [ { name, lifetime } ]);\n}\n","/* @flow */\n\nimport { noop } from './util';\nimport { getStorage } from './storage';\n\nfunction getBelterExperimentStorage() : Object {\n return getStorage({ name: 'belter_experiment' });\n}\n\nfunction isEventUnique(name : string) : boolean {\n return getBelterExperimentStorage().getSessionState(state => {\n state.loggedBeacons = state.loggedBeacons || [];\n\n if (state.loggedBeacons.indexOf(name) === -1) {\n state.loggedBeacons.push(name);\n return true;\n }\n\n return false;\n });\n}\n\nexport type Experiment = {\n isEnabled : () => boolean,\n isDisabled : () => boolean,\n getTreatment : () => string,\n log : (string, payload? : { [string] : ?string }) => Experiment,\n logStart : (payload? : { [string] : ?string }) => Experiment,\n logComplete : (payload? : { [string] : ?string }) => Experiment\n};\n\nfunction getThrottlePercentile(name : string) : number {\n return getBelterExperimentStorage().getState(state => {\n state.throttlePercentiles = state.throttlePercentiles || {};\n state.throttlePercentiles[name] = state.throttlePercentiles[name] || Math.floor(Math.random() * 100);\n return state.throttlePercentiles[name];\n });\n}\n\nconst THROTTLE_GROUP = {\n TEST: 'test',\n CONTROL: 'control',\n THROTTLE: 'throttle'\n};\n\ntype ExperimentOptions = {\n name : string,\n sample? : number,\n logTreatment? : ({ name : string, treatment : string, payload : { [string] : ?string } }) => void,\n logCheckpoint? : ({ name : string, treatment : string, checkpoint : string, payload : { [string] : ?string } }) => void\n};\n\nexport function experiment({ name, sample = 50, logTreatment = noop, logCheckpoint = noop } : ExperimentOptions) : Experiment {\n\n let throttle = getThrottlePercentile(name);\n\n let group;\n\n if (throttle < sample) {\n group = THROTTLE_GROUP.TEST;\n } else if ((sample >= 50) || ((sample <= throttle) && (throttle < (sample * 2)))) {\n group = THROTTLE_GROUP.CONTROL;\n } else {\n group = THROTTLE_GROUP.THROTTLE;\n }\n\n let treatment = `${ name }_${ group }`;\n\n let started = false;\n let forced = false;\n\n try {\n if (window.localStorage && window.localStorage.getItem(name)) {\n forced = true;\n }\n } catch (err) {\n // pass\n }\n\n return {\n\n isEnabled() : boolean {\n return (group === THROTTLE_GROUP.TEST) || forced;\n },\n\n isDisabled() : boolean {\n return (group !== THROTTLE_GROUP.TEST) && !forced;\n },\n\n getTreatment() : string {\n return treatment;\n },\n\n log(checkpoint : string, payload? : { [string] : ?string } = {}) : Experiment {\n if (!started) {\n return this;\n }\n\n if (isEventUnique(`${ name }_${ treatment }_${ JSON.stringify(payload) }`)) {\n logTreatment({ name, treatment, payload });\n }\n\n if (isEventUnique(`${ name }_${ treatment }_${ checkpoint }_${ JSON.stringify(payload) }`)) {\n logCheckpoint({ name, treatment, checkpoint, payload });\n }\n\n return this;\n },\n\n logStart(payload? : { [string] : ?string } = {}) : Experiment {\n started = true;\n return this.log(`start`, payload);\n },\n\n logComplete(payload? : { [string] : ?string } = {}) : Experiment {\n return this.log(`complete`, payload);\n }\n };\n}\n","/* @flow */\n\nimport { getGlobal } from './util';\n\nexport function getGlobalNameSpace({ name, version = 'latest' } : { name : string, version? : string }) : { get : (string, defValue? : T) => T } {\n\n let global = getGlobal();\n let globalKey = `__${ name }__${ version }_global__`;\n\n let namespace = global[globalKey] = global[globalKey] || {};\n\n return {\n get: (key : string, defValue? : T) : T => {\n // $FlowFixMe\n defValue = defValue || {};\n let item = namespace[key] = namespace[key] || defValue;\n return item;\n }\n };\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { type SameDomainWindowType } from 'cross-domain-utils/src';\n\ntype RequestOptionsType = {\n url : string,\n method? : string,\n headers? : { [key : string] : string },\n json? : $ReadOnlyArray | Object,\n data? : { [key : string] : string },\n body? : string,\n win? : SameDomainWindowType,\n timeout? : number\n};\n\ntype ResponseType = {\n status : number,\n headers : { [string] : string },\n body : Object\n};\n\nconst HEADERS = {\n CONTENT_TYPE: 'content-type',\n ACCEPT: 'accept'\n};\n\nlet headerBuilders = [];\n\nfunction parseHeaders(rawHeaders : string = '') : { [string] : string } {\n let result = {};\n for (let line of rawHeaders.trim().split('\\n')) {\n let [ key, ...values ] = line.split(':');\n result[key.toLowerCase()] = values.join(':').trim();\n }\n return result;\n}\n\nexport function request({ url, method = 'get', headers = {}, json, data, body, win = window, timeout = 0 } : RequestOptionsType) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n if ((json && data) || (json && body) || (data && json)) {\n throw new Error(`Only options.json or options.data or options.body should be passed`);\n }\n\n let normalizedHeaders = {};\n\n for (let key of Object.keys(headers)) {\n normalizedHeaders[key.toLowerCase()] = headers[key];\n }\n\n if (json) {\n normalizedHeaders[HEADERS.CONTENT_TYPE] = normalizedHeaders[HEADERS.CONTENT_TYPE] || 'application/json';\n } else if (data || body) {\n normalizedHeaders[HEADERS.CONTENT_TYPE] = normalizedHeaders[HEADERS.CONTENT_TYPE] || 'application/x-www-form-urlencoded; charset=utf-8';\n }\n\n normalizedHeaders[HEADERS.ACCEPT] = normalizedHeaders[HEADERS.ACCEPT] || 'application/json';\n\n for (let headerBuilder of headerBuilders) {\n let builtHeaders = headerBuilder();\n\n for (let key of Object.keys(builtHeaders)) {\n normalizedHeaders[key.toLowerCase()] = builtHeaders[key];\n }\n }\n\n let xhr = new win.XMLHttpRequest();\n\n xhr.addEventListener('load', function xhrLoad() : void {\n\n let responseHeaders = parseHeaders(this.getAllResponseHeaders());\n\n if (!this.status) {\n return reject(new Error(`Request to ${ method.toLowerCase() } ${ url } failed: no response status code.`));\n }\n \n let contentType = responseHeaders['content-type'];\n let isJSON = contentType && (contentType.indexOf('application/json') === 0 || contentType.indexOf('text/json') === 0);\n let responseBody = this.responseText;\n\n try {\n responseBody = JSON.parse(responseBody);\n } catch (err) {\n if (isJSON) {\n return reject(new Error(`Invalid json: ${ this.responseText }.`));\n }\n }\n\n let res = {\n status: this.status,\n headers: responseHeaders,\n body: responseBody\n };\n\n return resolve(res);\n\n }, false);\n\n xhr.addEventListener('error', (evt) => {\n reject(new Error(`Request to ${ method.toLowerCase() } ${ url } failed: ${ evt.toString() }.`));\n }, false);\n\n xhr.open(method, url, true);\n\n for (let key in normalizedHeaders) {\n if (normalizedHeaders.hasOwnProperty(key)) {\n xhr.setRequestHeader(key, normalizedHeaders[key]);\n }\n }\n\n if (json) {\n body = JSON.stringify(json);\n } else if (data) {\n body = Object.keys(data).map(key => {\n return `${ encodeURIComponent(key) }=${ data ? encodeURIComponent(data[key]) : '' }`;\n }).join('&');\n }\n\n xhr.timeout = timeout;\n xhr.ontimeout = function xhrTimeout() {\n reject(new Error(`Request to ${ method.toLowerCase() } ${ url } has timed out`));\n };\n\n xhr.send(body);\n });\n}\n\nexport function addHeaderBuilder(method : () => { [string] : string }) {\n headerBuilders.push(method);\n}\n","/* @flow */\n\n// export something to force webpack to see this as an ES module\nexport const TYPES = true;\n\ndeclare var __TEST__ : boolean;\n\nexport type JSONPrimitive = string | boolean | number;\nexport type JSONObject = { [string] : JSONPrimitive | JSONObject } | Array;\nexport type JSONType = JSONObject | JSONPrimitive;\n\nexport type CancelableType = {\n cancel : () => void\n};\n","/* @flow */\n\nimport { memoize, promisify } from './util';\n\nexport function memoized(target : Object, name : string, descriptor : Object) {\n descriptor.value = memoize(descriptor.value, { name, thisNamespace: true });\n}\n\nexport function promise(target : Object, name : string, descriptor : Object) {\n descriptor.value = promisify(descriptor.value, { name });\n}\n","/* @flow */\n\nexport function isPerc(str : string) : boolean {\n return typeof str === 'string' && (/^[0-9]+%$/).test(str);\n}\n\nexport function isPx(str : string) : boolean {\n return typeof str === 'string' && (/^[0-9]+px$/).test(str);\n}\n\nexport function toNum(val : string | number) : number {\n\n if (typeof val === 'number') {\n return val;\n }\n\n let match = val.match(/^([0-9]+)(px|%)$/);\n\n if (!match) {\n throw new Error(`Could not match css value from ${ val }`);\n }\n\n return parseInt(match[1], 10);\n}\n\nexport function toPx(val : number | string) : string {\n return `${ toNum(val) }px`;\n}\n\nexport function toCSS(val : number | string) : string {\n\n if (typeof val === 'number') {\n return toPx(val);\n }\n\n return isPerc(val) ? val : toPx(val);\n}\n\nexport function percOf(num : number, perc : string) : number {\n return parseInt(num * toNum(perc) / 100, 10);\n}\n\nexport function normalizeDimension(dim : string | number, max : number) : number {\n if (typeof dim === 'number') {\n return dim;\n } else if (isPerc(dim)) {\n return percOf(max, dim);\n } else if (isPx(dim)) {\n return toNum(dim);\n } else {\n throw new Error(`Can not normalize dimension: ${ dim }`);\n }\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { noop, tryCatch, removeFromArray } from './util';\n\ntype Prom = Promise | ZalgoPromise; // eslint-disable-line no-restricted-globals, promise/no-native\n\ntype Handler = >(name : string, fn? : (...args : A) => T) => (...args : A) => T; // eslint-disable-line no-undef\ntype Wrapper = ({ expect : Handler, avoid : Handler, expectError : Handler, error : Handler }) => (Prom | void);\n\nexport function wrapPromise(method : Wrapper, { timeout = 5000 } : { timeout? : number } = {}) : ZalgoPromise {\n let expected : Array = [];\n let promises : Array> = [];\n\n let timer = setTimeout(() => {\n if (expected.length) {\n promises.push(ZalgoPromise.asyncReject(new Error(`Expected ${ expected[0] } to be called`)));\n }\n }, timeout);\n\n let expect : Handler = (name, fn = noop) => {\n expected.push(name);\n \n // $FlowFixMe\n return function expectWrapper(...args) : * {\n removeFromArray(expected, name);\n\n // $FlowFixMe\n let { result, error } = tryCatch(() => fn.call(this, ...args));\n\n if (error) {\n promises.push(ZalgoPromise.asyncReject(error));\n throw error;\n }\n\n promises.push(ZalgoPromise.resolve(result));\n return result;\n };\n };\n\n let avoid : Handler = (name : string, fn = noop) => {\n\n // $FlowFixMe\n return function avoidWrapper(...args) : * {\n promises.push(ZalgoPromise.asyncReject(new Error(`Expected ${ name } to not be called`)));\n // $FlowFixMe\n return fn.call(this, ...args);\n };\n };\n\n let expectError : Handler = (name, fn = noop) => {\n expected.push(name);\n\n // $FlowFixMe\n return function expectErrorWrapper(...args) : * {\n removeFromArray(expected, name);\n\n // $FlowFixMe\n let { result, error } = tryCatch(() => fn.call(this, ...args));\n\n if (error) {\n throw error;\n }\n\n promises.push(ZalgoPromise.resolve(result).then(() => {\n throw new Error(`Expected ${ name } to throw an error`);\n }, noop));\n return result;\n };\n };\n\n promises.push(ZalgoPromise.try(() => method({ expect, avoid, expectError, error: avoid })));\n\n let drain = () => {\n return ZalgoPromise.try(() => {\n if (promises.length) {\n return promises.pop();\n }\n }).then(() => {\n if (promises.length) {\n return drain();\n }\n if (expected.length) {\n return ZalgoPromise.delay(10).then(drain);\n }\n });\n };\n\n return drain().then(() => {\n clearTimeout(timer);\n });\n}\n","/* @flow */\n\nexport * from './device';\nexport * from './dom';\nexport * from './experiment';\nexport * from './global';\nexport * from './storage';\nexport * from './util';\nexport * from './http';\nexport * from './types';\nexport * from './decorators';\nexport * from './css';\nexport * from './test';\n","/* @flow */\n\nexport function hasNativeWeakMap() : boolean {\n\n if (typeof WeakMap === 'undefined') {\n return false;\n }\n\n if (typeof Object.freeze === 'undefined') {\n return false;\n }\n\n try {\n\n let testWeakMap = new WeakMap();\n let testKey = {};\n let testValue = '__testvalue__';\n\n Object.freeze(testKey);\n\n testWeakMap.set(testKey, testValue);\n\n if (testWeakMap.get(testKey) === testValue) {\n return true;\n }\n\n return false;\n\n } catch (err) {\n\n return false;\n }\n}\n","/* @flow */\n\nexport function safeIndexOf(collection : Array, item : T) : number {\n for (let i = 0; i < collection.length; i++) {\n\n try {\n if (collection[i] === item) {\n return i;\n }\n } catch (err) {\n // pass\n }\n }\n\n return -1;\n}\n\n// eslint-disable-next-line no-unused-vars\nexport function noop(...args : Array) {\n // pass\n}\n","/* @flow */\n\nimport { isWindow, isWindowClosed } from 'cross-domain-utils/src';\n\nimport { hasNativeWeakMap } from './native';\nimport { noop, safeIndexOf } from './util';\n\nexport class CrossDomainSafeWeakMap {\n\n name : string\n weakmap : ?WeakMap\n keys : Array\n values : Array\n\n constructor() {\n // eslint-disable-next-line no-bitwise\n this.name = `__weakmap_${ Math.random() * 1e9 >>> 0 }__`;\n\n if (hasNativeWeakMap()) {\n try {\n this.weakmap = new WeakMap();\n } catch (err) {\n // pass\n }\n }\n\n this.keys = [];\n this.values = [];\n }\n\n _cleanupClosedWindows() {\n\n let weakmap = this.weakmap;\n let keys = this.keys;\n\n for (let i = 0; i < keys.length; i++) {\n let value = keys[i];\n\n if (isWindow(value) && isWindowClosed(value)) {\n\n if (weakmap) {\n try {\n weakmap.delete(value);\n } catch (err) {\n // pass\n }\n }\n\n keys.splice(i, 1);\n this.values.splice(i, 1);\n\n i -= 1;\n }\n }\n }\n\n isSafeToReadWrite(key : K) : boolean {\n\n if (isWindow(key)) {\n return false;\n }\n\n try {\n noop(key && key.self);\n noop(key && key[this.name]);\n } catch (err) {\n return false;\n }\n\n return true;\n }\n\n set(key : K, value : V) {\n\n if (!key) {\n throw new Error(`WeakMap expected key`);\n }\n\n let weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n weakmap.set(key, value);\n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (this.isSafeToReadWrite(key)) {\n try {\n let name = this.name;\n let entry = key[name];\n\n if (entry && entry[0] === key) {\n entry[1] = value;\n } else {\n Object.defineProperty(key, name, {\n value: [ key, value ],\n writable: true\n });\n }\n\n return;\n\n } catch (err) {\n // pass\n }\n }\n\n this._cleanupClosedWindows();\n\n let keys = this.keys;\n let values = this.values;\n let index = safeIndexOf(keys, key);\n\n if (index === -1) {\n keys.push(key);\n values.push(value);\n } else {\n values[index] = value;\n }\n }\n\n get(key : K) : V | void {\n\n if (!key) {\n throw new Error(`WeakMap expected key`);\n }\n\n let weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n if (weakmap.has(key)) {\n return weakmap.get(key);\n }\n \n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (this.isSafeToReadWrite(key)) {\n try {\n let entry = key[this.name];\n\n if (entry && entry[0] === key) {\n return entry[1];\n }\n\n return;\n } catch (err) {\n // pass\n }\n }\n\n this._cleanupClosedWindows();\n\n let keys = this.keys;\n let index = safeIndexOf(keys, key);\n\n if (index === -1) {\n return;\n }\n\n return this.values[index];\n }\n\n delete(key : K) {\n\n if (!key) {\n throw new Error(`WeakMap expected key`);\n }\n\n let weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n weakmap.delete(key);\n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (this.isSafeToReadWrite(key)) {\n try {\n let entry = key[this.name];\n\n if (entry && entry[0] === key) {\n entry[0] = entry[1] = undefined;\n }\n } catch (err) {\n // pass\n }\n }\n\n this._cleanupClosedWindows();\n\n let keys = this.keys;\n let index = safeIndexOf(keys, key);\n\n if (index !== -1) {\n keys.splice(index, 1);\n this.values.splice(index, 1);\n }\n }\n\n has(key : K) : boolean {\n\n if (!key) {\n throw new Error(`WeakMap expected key`);\n }\n\n let weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n if (weakmap.has(key)) {\n return true;\n }\n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (this.isSafeToReadWrite(key)) {\n try {\n let entry = key[this.name];\n\n if (entry && entry[0] === key) {\n return true;\n }\n\n return false;\n } catch (err) {\n // pass\n }\n }\n\n this._cleanupClosedWindows();\n\n let index = safeIndexOf(this.keys, key);\n return index !== -1;\n }\n\n getOrSet(key : K, getter : () => V) : V {\n if (this.has(key)) {\n // $FlowFixMe\n return this.get(key);\n }\n\n let value = getter();\n this.set(key, value);\n return value;\n }\n}\n","/* @flow */\n\nexport { CrossDomainSafeWeakMap as WeakMap } from './weakmap';\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst P24_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#d03238',\n secondary: '#b3b1b1'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#d03238',\n secondary: '#b3b1b1'\n }\n};\n\nexport function p24Logo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!P24_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } p24 logo available`);\n }\n\n const { primary, secondary } = P24_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst SOFORT_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#2C2E2F',\n secondary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#EB6F93',\n secondary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#EB6F93',\n secondary: '#FFFFFF'\n }\n};\n\nexport function sofortLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!SOFORT_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } sofort logo available`);\n }\n\n const { primary, secondary } = SOFORT_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst IDEAL_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff',\n tertiary: '#2C2E2F'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#000000',\n secondary: '#FFFFFF',\n tertiary: '#CD0067'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#000000',\n secondary: '#FFFFFF',\n tertiary: '#CD0067'\n }\n};\n\nexport function idealLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!IDEAL_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } ideal logo available`);\n }\n\n const { primary, secondary, tertiary } = IDEAL_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst GIROPAY_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#000000',\n tertiary: '#2C2E2F'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#FFFFFF',\n secondary: '#003A7D',\n tertiary: '#ED1C24'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#FFFFFF',\n secondary: '#003A7D',\n tertiary: '#ED1C24'\n }\n};\n\nexport function giropayLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!GIROPAY_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } giropay logo available`);\n }\n\n const { primary, secondary, tertiary } = GIROPAY_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst EPS_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff',\n tertiary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#71706F',\n secondary: '#FFFFFF',\n tertiary: '#C8036F'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#71706F',\n secondary: '#FFFFFF',\n tertiary: '#C8036F'\n }\n};\n\nexport function epsLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!EPS_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } eps logo available`);\n }\n\n const { primary, secondary, tertiary } = EPS_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst MYBANK_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff',\n tertiary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#1A4B67',\n secondary: '#00C0EE',\n tertiary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#1A4B67',\n secondary: '#00C0EE',\n tertiary: '#FFFFFF'\n }\n};\n\nexport function mybankLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!MYBANK_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } mybank logo available`);\n }\n\n const { primary, secondary, tertiary } = MYBANK_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst BANCONTACT_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#1A4B67',\n secondary: '#00C0EE'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#005498',\n secondary: '#FFD800'\n }\n};\n\nexport function bancontactLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!BANCONTACT_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } bancontact logo available`);\n }\n\n const { primary, secondary } = BANCONTACT_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst PAYU_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.DEFAULT ]: {\n primary: '#A6d71c',\n secondary: '#3C932A',\n tertiary: '#6CC62E',\n quaternary: '#278D30'\n },\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#FFFFFF',\n secondary: '#FFFFFF',\n tertiary: '#000000',\n quaternary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#A6d71c',\n secondary: '#3C932A',\n tertiary: '#6CC62E',\n quaternary: '#278D30'\n }\n};\n\nexport function payuLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!PAYU_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } payu logo available`);\n }\n\n const { primary, secondary, tertiary, quaternary } = PAYU_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst VERKKOPANKKI_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#FFFFFF',\n secondary: '#FFFFFF',\n tertiary: '#000000',\n quaternary: '#000000',\n quinary: '#FFFFFF',\n senary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#FFFFFF',\n secondary: '#CACCC8',\n tertiary: '#2D59A1',\n quaternary: '#1F3364',\n quinary: '#4E4E4E',\n senary: '#1B4482'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#FFFFFF',\n secondary: '#CACCC8',\n tertiary: '#2D59A1',\n quaternary: '#1F3364',\n quinary: '#4E4E4E',\n senary: '#1B4482'\n }\n};\n\nexport function verkkopankkiLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!VERKKOPANKKI_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } verkkopankki logo available`);\n }\n\n const { primary, secondary, tertiary, quaternary, quinary, senary } = VERKKOPANKKI_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst BLIK_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#FFFFFF',\n secondary: '#FFFFFF',\n tertiary: '#000000',\n quaternary: '#000000',\n quinary: '#000000',\n senary: '#000000'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#4D4D4F',\n secondary: '#000000',\n tertiary: '#FF0000',\n quaternary: '#E83E49',\n quinary: '#FF00FF',\n senary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#4D4D4F',\n secondary: '#000000',\n tertiary: '#FF0000',\n quaternary: '#E83E49',\n quinary: '#FF00FF',\n senary: '#FFFFFF'\n }\n};\n\nexport function blikLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!BLIK_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } blik logo available`);\n }\n\n const { primary, secondary, tertiary, quaternary, quinary, senary } = BLIK_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst TRUSTLY_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#FFFFFF',\n secondary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#020202',\n secondary: '#64CC07'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#020202',\n secondary: '#64CC07'\n }\n};\n\nexport function trustlyLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!TRUSTLY_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } trustly logo available`);\n }\n\n const { primary, secondary } = TRUSTLY_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst MAXIMA_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#004A91',\n secondary: '#ED1921'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#004A91',\n secondary: '#ED1921'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#004A91',\n secondary: '#ED1921'\n }\n};\n\nexport function maximaLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!MAXIMA_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } maxima logo available`);\n }\n\n const { primary, secondary } = MAXIMA_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst BOLETO_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#1A1919',\n secondary: '#FFFFFE'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#1A1919',\n secondary: '#FFFFFE'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#1A1919',\n secondary: '#FFFFFE'\n }\n};\n\nexport function boletoLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!BOLETO_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } boleto logo available`);\n }\n\n const { primary, secondary } = BOLETO_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst OXXO_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#EC1D24',\n secondary: '#EDA42D'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#EC1D24',\n secondary: '#EDA42D'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#EC1D24',\n secondary: '#EDA42D'\n }\n};\n\nexport function oxxoLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!OXXO_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } oxxo logo available`);\n }\n\n const { primary, secondary } = OXXO_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst PAYPAL_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.BLUE ]: {\n primary: '#003087',\n secondary: '#009cde'\n },\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#333030',\n secondary: '#636363'\n }\n};\n\nexport function paypalLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!PAYPAL_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } paypal logo available`);\n }\n\n const { primary, secondary } = PAYPAL_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n );\n}\n","\n/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR, COUNTRY } from '../../constants';\nimport type { LocaleType } from '../../types';\n\nconst CREDIT_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.BLUE ]: {\n primary: '#003087',\n secondary: '#009cde'\n },\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#333030',\n secondary: '#636363'\n }\n};\n\nexport function creditLogo({ logoColor, locale } : { logoColor : $Values, locale? : LocaleType }) : JsxHTMLNode {\n\n if (!CREDIT_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } credit logo available`);\n }\n\n const { country } = locale || {};\n const { primary } = CREDIT_LOGO_COLORS[logoColor];\n\n switch (country) {\n case COUNTRY.DE:\n return (\n \n \n \n \n \n \n \n );\n default:\n return (\n \n \n \n \n \n \n \n \n );\n\n }\n}\n","/* @flow */\n\nimport { BUTTON_LOGO, BUTTON_LOGO_COLOR } from '../../constants';\n\nimport { p24Logo } from './p24';\nimport { sofortLogo } from './sofort';\nimport { idealLogo } from './ideal';\nimport { giropayLogo } from './giropay';\nimport { epsLogo } from './eps';\nimport { mybankLogo } from './mybank';\nimport { bancontactLogo } from './bancontact';\nimport { payuLogo } from './payu';\nimport { verkkopankkiLogo } from './verkkopankki';\nimport { blikLogo } from './blik';\nimport { trustlyLogo } from './trustly';\nimport { maximaLogo } from './maxima';\nimport { boletoLogo } from './boleto';\nimport { oxxoLogo } from './oxxo';\nimport pp_white from './pp_white.svg';\nimport pp_blue from './pp_blue.svg';\nimport pp_black from './pp_black.svg';\nimport { paypalLogo } from './paypal';\nimport { creditLogo } from './credit';\nimport venmo_white from './venmo_white.svg';\nimport itau from './itau.svg';\nimport venmo_blue from './venmo_blue.svg';\nimport elv from './elv.svg';\nimport elv_white from './elv_white.svg';\n\nexport const fundingLogos = {\n\n [ BUTTON_LOGO.PP ]: {\n [ BUTTON_LOGO_COLOR.WHITE ]: pp_white,\n [ BUTTON_LOGO_COLOR.BLUE ]: pp_blue,\n [ BUTTON_LOGO_COLOR.BLACK ]: pp_black\n },\n\n [ BUTTON_LOGO.PAYPAL ]: paypalLogo,\n\n [ BUTTON_LOGO.CREDIT ]: creditLogo,\n\n [ BUTTON_LOGO.VENMO ]: {\n [ BUTTON_LOGO_COLOR.WHITE ]: venmo_white,\n [ BUTTON_LOGO_COLOR.BLUE ]: venmo_blue\n },\n [ BUTTON_LOGO.ITAU ]: {\n [ BUTTON_LOGO_COLOR.WHITE ]: itau\n },\n\n [ BUTTON_LOGO.IDEAL ]: idealLogo,\n\n [ BUTTON_LOGO.ELV ]: {\n [ BUTTON_LOGO_COLOR.ANY ]: elv,\n [ BUTTON_LOGO_COLOR.WHITE ]: elv_white\n },\n\n [ BUTTON_LOGO.BANCONTACT ]: bancontactLogo,\n\n [ BUTTON_LOGO.GIROPAY ]: giropayLogo,\n\n [ BUTTON_LOGO.SOFORT ]: sofortLogo,\n\n [ BUTTON_LOGO.EPS ]: epsLogo,\n\n [ BUTTON_LOGO.MYBANK ]: mybankLogo,\n\n [ BUTTON_LOGO.P24 ]: p24Logo,\n\n [ BUTTON_LOGO.PAYU ]: payuLogo,\n\n [ BUTTON_LOGO.VERKKOPANKKI ]: verkkopankkiLogo,\n\n [ BUTTON_LOGO.BLIK ]: blikLogo,\n\n [ BUTTON_LOGO.TRUSTLY ]: trustlyLogo,\n\n [ BUTTON_LOGO.MAXIMA ]: maximaLogo,\n\n [ BUTTON_LOGO.BOLETO ]: boletoLogo,\n\n [ BUTTON_LOGO.OXXO ]: oxxoLogo\n\n};\n","/* @flow */\n\nimport { CARD } from '../../constants';\n\nimport visa from './visa.svg';\nimport amex from './amex.svg';\nimport mastercard from './mastercard.svg';\nimport maestro from './maestro.svg';\nimport discover from './discover.svg';\nimport hiper from './hiper.svg';\nimport elo from './elo.svg';\nimport jcb from './jcb.svg';\nimport cup from './cup.svg';\n\nexport const cardLogos = {\n [ CARD.VISA ]: visa,\n [ CARD.AMEX ]: amex,\n [ CARD.MASTERCARD ]: mastercard,\n [ CARD.MAESTRO ]: maestro,\n [ CARD.DISCOVER ]: discover,\n [ CARD.HIPER ]: hiper,\n [ CARD.ELO ]: elo,\n [ CARD.JCB ]: jcb,\n [ CARD.CUP ]: cup\n};\n","/* @flow */\n\nexport * from './fundingLogos';\nexport * from './cardLogos';\n","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object.keys(descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object.defineProperty(target, property, desc);\n desc = null;\n }\n\n return desc;\n}","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { on } from 'post-robot/src';\nimport { type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { copyProp, eventEmitter, type EventEmitterType, stringifyError, noop } from '../lib';\nimport type { CancelableType } from '../types';\n\nimport type { Component } from './component';\n\ntype CleanupType = {\n set : (string, T) => T, // eslint-disable-line no-undef\n register : (string | Function, ?Function) => void,\n hasTasks : () => boolean,\n all : () => ZalgoPromise,\n run : (string) => ZalgoPromise\n};\n\nfunction cleanup(obj : Object) : CleanupType {\n\n let tasks = [];\n let cleaned = false;\n\n return {\n\n set(name : string, item : T) : T {\n\n if (cleaned) {\n return item;\n }\n\n obj[name] = item;\n this.register(() => {\n delete obj[name];\n });\n return item;\n },\n\n register(name : string | Function, method : ?Function) {\n\n if (typeof name === 'function') {\n method = name;\n name = '';\n }\n\n if (typeof method !== 'function') {\n throw new TypeError(`Expected to be passed function to clean.register`);\n }\n\n if (cleaned) {\n method();\n return;\n }\n\n tasks.push({\n complete: false,\n\n name,\n\n run() {\n\n if (this.complete) {\n return;\n }\n\n this.complete = true;\n\n if (method) {\n method();\n }\n }\n });\n },\n\n hasTasks() : boolean {\n return Boolean(tasks.filter(item => !item.complete).length);\n },\n\n all() : ZalgoPromise {\n let results = [];\n\n cleaned = true;\n\n while (tasks.length) {\n results.push(tasks.pop().run());\n }\n\n return ZalgoPromise.all(results).then(() => { /* pass */ });\n },\n\n run(name : string) : ZalgoPromise {\n let results = [];\n\n for (let item of tasks) {\n if (item.name === name) {\n results.push(item.run());\n }\n }\n\n return ZalgoPromise.all(results).then(noop);\n }\n };\n}\n\n\n/* Base Component\n --------------\n\n Methods that are common between child and parent components, but are not generic or uncoupled enough to live in\n a separate library.\n*/\n\nexport class BaseComponent

{\n\n clean : CleanupType\n event : EventEmitterType\n component : Component

\n\n constructor() {\n this.clean = cleanup(this);\n this.event = eventEmitter();\n }\n\n addProp(options : Object, name : string, def : mixed) {\n copyProp(options, this, name, def);\n }\n\n on(eventName : string, handler : () => void) : CancelableType {\n return this.event.on(eventName, handler);\n }\n\n listeners() {\n throw new Error(`Expected listeners to be implemented`);\n }\n\n error(err : mixed) : ZalgoPromise {\n throw new Error(`Expected error to be implemented - got ${ stringifyError(err) }`);\n }\n\n /* Listen\n ------\n\n Listen for any post messages defined in this.listeners(). All (most) of our communication is done via\n post-messages, so this sets up an easy way to create a collection of listeners in one go.\n\n All post-messaging is done using post-robot.\n */\n\n listen(win : CrossDomainWindowType, domain : string | RegExp) {\n\n if (!win) {\n throw this.component.createError(`window to listen to not set`);\n }\n\n if (!domain) {\n throw new Error(`Must pass domain to listen to`);\n }\n\n if (!this.listeners) {\n return;\n }\n\n let listeners = this.listeners();\n\n for (let listenerName of Object.keys(listeners)) {\n\n let name = listenerName.replace(/^zoid_/, '');\n\n let errorHandler = (err) => {\n this.error(err);\n };\n\n let listener = on(listenerName, { window: win, domain, errorHandler }, ({ source, data }) => {\n this.component.log(`listener_${ name }`);\n return listeners[listenerName].call(this, source, data);\n });\n\n let errorListener = on(listenerName, { window: win, errorHandler }, ({ origin }) => {\n this.component.logError(`unexpected_listener_${ name }`, { origin, domain: domain.toString() });\n this.error(new Error(`Unexpected ${ name } message from domain ${ origin } -- expected message from ${ domain.toString() }`));\n });\n\n this.clean.register(() => {\n listener.cancel();\n errorListener.cancel();\n });\n }\n }\n}\n","/* @flow */\n\nimport { getOpener, getTop, getParent, getNthParentFromTop, getAllFramesInWindow, getAncestor, getDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport base32 from 'hi-base32';\n\nimport { memoize, uniqueID, globalFor, stringifyError } from '../lib';\nimport { WINDOW_REFERENCES } from '../constants';\nimport type { DimensionsType, PositionType } from '../types';\n\n\nfunction normalize(str : string) : string {\n return str.replace(/^[^a-z0-9A-Z]+|[^a-z0-9A-Z]+$/g, '').replace(/[^a-z0-9A-Z]+/g, '_');\n}\n\nfunction encode(str : string) : string {\n return base32.encode(str).replace(/\\=/g, '').toLowerCase(); // eslint-disable-line no-useless-escape\n}\n\nfunction decode(str : string) : string {\n return base32.decode(str.toUpperCase());\n}\n\n\n/* Build Child Window Name\n -----------------------\n\n Build a name for our child window. This should identify the following things to the child:\n\n - That the window was created by, and is owned by zoid\n - The name of the child's parent. This is so the child can identify which window created it, even when we do a\n renderTo, in which case the true parent may actually be a sibling frame in the window hierarchy\n\n We base64 encode the window name so IE doesn't die when it encounters any characters that it doesn't like.\n*/\n\nexport function buildChildWindowName(name : string, version : string, options : Object = {}) : string {\n\n options.id = uniqueID();\n options.domain = getDomain(window);\n\n let encodedName = normalize(name);\n let encodedVersion = normalize(version);\n let encodedOptions = encode(JSON.stringify(options));\n\n if (!encodedName) {\n throw new Error(`Invalid name: ${ name } - must contain alphanumeric characters`);\n }\n\n if (!encodedVersion) {\n throw new Error(`Invalid version: ${ version } - must contain alphanumeric characters`);\n }\n\n return [\n 'xcomponent',\n encodedName,\n encodedVersion,\n encodedOptions,\n ''\n ].join('__');\n}\n\nexport let isZoidComponentWindow = memoize(() => {\n if (!window.name) {\n return false;\n }\n\n let [ zoidcomp ] = window.name.split('__');\n\n if (zoidcomp !== 'xcomponent') {\n return false;\n }\n\n return true;\n});\n\n/* Parse Window Name\n -----------------\n\n The inverse of buildChildWindowName. Base64 decodes and json parses the window name to get the original props\n passed down, including the parent name. Only accepts window names built by zoid\n*/\n\nexport let getComponentMeta = memoize(() => {\n\n if (!window.name) {\n throw new Error(`Can not get component meta without window name`);\n }\n\n let [ zoidcomp, name, version, encodedOptions ] = window.name.split('__');\n\n if (zoidcomp !== 'xcomponent') {\n throw new Error(`Window not rendered by zoid - got ${ zoidcomp }`);\n }\n\n let componentMeta;\n\n try {\n componentMeta = JSON.parse(decode(encodedOptions));\n } catch (err) {\n throw new Error(`Can not decode component-meta: ${ encodedOptions } ${ stringifyError(err) }`);\n }\n\n componentMeta.name = name;\n componentMeta.version = version.replace(/_/g, '.');\n\n return componentMeta;\n});\n\nexport function getParentDomain() : string {\n return getComponentMeta().domain; // How does this work for renderTo..?\n}\n\nfunction getWindowByRef({ ref, uid, distance } : { ref : string, uid : string, distance : number }) : CrossDomainWindowType {\n\n let result;\n\n if (ref === WINDOW_REFERENCES.OPENER) {\n result = getOpener(window);\n\n } else if (ref === WINDOW_REFERENCES.TOP) {\n result = getTop(window);\n\n } else if (ref === WINDOW_REFERENCES.PARENT) {\n\n if (distance) {\n result = getNthParentFromTop(window, distance);\n } else {\n result = getParent(window);\n }\n }\n\n if (ref === WINDOW_REFERENCES.GLOBAL) {\n let ancestor = getAncestor(window);\n\n if (ancestor) {\n for (let frame of getAllFramesInWindow(ancestor)) {\n let global = globalFor(frame);\n\n if (global && global.windows && global.windows[uid]) {\n result = global.windows[uid];\n break;\n }\n }\n }\n }\n\n if (!result) {\n throw new Error(`Unable to find window by ref`);\n }\n\n return result;\n}\n\n/* Get Parent Component Window\n ---------------------------\n\n Get the parent component window, which may be different from the actual parent window\n*/\n\nexport let getParentComponentWindow = memoize(() => {\n\n let componentMeta = getComponentMeta();\n\n if (!componentMeta) {\n throw new Error(`Can not get parent component window - window not rendered by zoid`);\n }\n\n return getWindowByRef(componentMeta.componentParent);\n});\n\n\nexport let getParentRenderWindow = memoize(() => {\n\n let componentMeta = getComponentMeta();\n\n if (!componentMeta) {\n throw new Error(`Can not get parent component window - window not rendered by zoid`);\n }\n\n return getWindowByRef(componentMeta.renderParent);\n});\n\n\n/* Get Position\n ------------\n\n Calculate the position for the popup\n\n This is either\n - Specified by the user\n - The center of the screen\n\n I'd love to do this with pure css, but alas... popup windows :(\n*/\n\nexport function getPosition({ width, height } : DimensionsType) : PositionType {\n\n let x = 0;\n let y = 0;\n\n if (width) {\n if (window.outerWidth) {\n x = Math.round((window.outerWidth - width) / 2) + window.screenX;\n } else if (window.screen.width) {\n x = Math.round((window.screen.width - width) / 2);\n }\n }\n\n if (height) {\n if (window.outerHeight) {\n y = Math.round((window.outerHeight - height) / 2) + window.screenY;\n } else if (window.screen.height) {\n y = Math.round((window.screen.height - height) / 2);\n }\n }\n\n return { x, y };\n}\n","/* @flow */\n\nimport { getDomain } from 'cross-domain-utils/src';\n\nimport type { Component } from '../component';\nimport type { BuiltInPropsType, MixedPropDefinitionType } from '../component/props';\n\nexport function normalizeChildProp(component : Component

, props : (BuiltInPropsType & P), key : string, value : T) : ?T {\n\n // $FlowFixMe\n let prop : MixedPropDefinitionType

= component.getProp(key);\n\n if (!prop) {\n if (component.looseProps) {\n return value;\n } else {\n return;\n }\n }\n\n if (typeof prop.childDecorate === 'function') {\n return prop.childDecorate(value);\n }\n\n return value;\n}\n\n\nexport function normalizeChildProps

(component : Component

, props : (BuiltInPropsType & P), origin : string, required : boolean = true) : (BuiltInPropsType & P) {\n\n let result = {};\n\n for (let key of Object.keys(props)) {\n\n let prop = component.getProp(key);\n let value = props[key];\n\n if (prop && prop.sameDomain && origin !== getDomain(window)) {\n continue;\n }\n\n result[key] = normalizeChildProp(component, props, key, value);\n\n if (prop && prop.alias && !result[prop.alias]) {\n result[prop.alias] = value;\n }\n }\n\n if (required) {\n for (let key of component.getPropNames()) {\n if (!props.hasOwnProperty(key)) {\n result[key] = normalizeChildProp(component, props, key, props[key]);\n }\n }\n }\n\n // $FlowFixMe\n return result;\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { flush } from 'beaver-logger/client';\nimport { isSameDomain, matchDomain, getDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { send } from 'post-robot/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { onResize } from 'belter/src';\n\nimport { BaseComponent } from '../base';\nimport { getParentComponentWindow, getComponentMeta, getParentDomain, getParentRenderWindow } from '../window';\nimport { extend, deserializeFunctions, get, stringify,\n globalFor, setLogLevel, getElement, noop, stringifyError } from '../../lib';\nimport { POST_MESSAGE, CONTEXT_TYPES, CLOSE_REASONS, INITIAL_PROPS } from '../../constants';\nimport { RenderError } from '../../error';\nimport type { Component } from '../component';\nimport type { BuiltInPropsType } from '../component/props';\n\nimport { normalizeChildProps } from './props';\n\nexport type ChildExportsType

= {\n updateProps : (props : (BuiltInPropsType & P)) => ZalgoPromise,\n close : () => ZalgoPromise\n};\n\n/* Child Component\n ---------------\n\n This is the portion of code which runs inside the frame or popup window containing the component's implementation.\n\n When the component author calls myComponent.attach(), it creates a new instance of ChildComponent, which is then\n responsible for managing the state and messaging back up to the parent, and providing props for the component to\n utilize.\n*/\n\nexport class ChildComponent

extends BaseComponent

{\n\n component : Component

\n props : BuiltInPropsType & P\n context : string\n\n onPropHandlers : Array<(BuiltInPropsType & P) => void>\n onInit : ZalgoPromise>\n watchingForResize : boolean\n autoResize : { width : boolean, height : boolean, element? : string }\n\n constructor(component : Component

) {\n super();\n this.component = component;\n\n if (!this.hasValidParentDomain()) {\n this.error(new RenderError(`Can not be rendered by domain: ${ this.getParentDomain() }`));\n return;\n }\n\n this.component.log(`construct_child`);\n\n // The child can specify some default props if none are passed from the parent. This often makes integrations\n // a little more seamless, as applicaiton code can call props.foo() without worrying about whether the parent\n // has provided them or not, and fall-back to some default behavior.\n\n this.onPropHandlers = [];\n\n for (let item of [ this.component, window ]) {\n for (let [ name, getter ] of [ [ 'xchild', () => this ], [ 'xprops', () => this.props ] ]) {\n // $FlowFixMe\n Object.defineProperty(item, name, {\n configurable: true,\n get: () => {\n if (!this.props) {\n this.setProps(this.getInitialProps(), getParentDomain());\n }\n // $FlowFixMe\n delete item[name];\n // $FlowFixMe\n item[name] = getter();\n // $FlowFixMe\n return item[name];\n }\n });\n }\n }\n\n this.component.log(`init_child`);\n\n this.setWindows();\n\n // Send an init message to our parent. This gives us an initial set of data to use that we can use to function.\n //\n // For example:\n //\n // - What context are we\n // - What props has the parent specified\n\n this.onInit = this.sendToParent(POST_MESSAGE.INIT, {\n\n exports: this.exports()\n\n }).then(({ origin, data }) => {\n\n this.context = data.context;\n this.setProps(data.props, origin);\n\n this.watchForResize();\n\n return this;\n\n }).catch(err => {\n\n this.error(err);\n throw err;\n });\n }\n\n hasValidParentDomain() : boolean {\n return matchDomain(this.component.allowedParentDomains, this.getParentDomain());\n }\n\n init() : ZalgoPromise> {\n return this.onInit;\n }\n\n getParentDomain() : string {\n return getParentDomain();\n }\n\n onProps(handler : Function) {\n this.onPropHandlers.push(handler);\n }\n\n getParentComponentWindow() : CrossDomainWindowType {\n return getParentComponentWindow();\n }\n\n getParentRenderWindow() : CrossDomainWindowType {\n return getParentRenderWindow();\n }\n\n getInitialProps() : (BuiltInPropsType & P) {\n let componentMeta = getComponentMeta();\n\n let props = componentMeta.props;\n\n if (props.type === INITIAL_PROPS.RAW) {\n props = props.value;\n } else if (props.type === INITIAL_PROPS.UID) {\n\n let parentComponentWindow = getParentComponentWindow();\n\n if (!isSameDomain(parentComponentWindow)) {\n\n if (window.location.protocol === 'file:') {\n throw new Error(`Can not get props from file:// domain`);\n }\n\n throw new Error(`Parent component window is on a different domain - expected ${ getDomain() } - can not retrieve props`);\n }\n\n let global = globalFor(parentComponentWindow);\n\n if (!global) {\n throw new Error(`Can not find global for parent component - can not retrieve props`);\n }\n\n props = JSON.parse(global.props[componentMeta.uid]);\n\n } else {\n throw new Error(`Unrecognized props type: ${ props.type }`);\n }\n\n if (!props) {\n throw new Error(`Initial props not found`);\n }\n \n return deserializeFunctions(props, ({ fullKey, self, args }) => {\n return this.onInit.then(() => {\n let func = get(this.props, fullKey);\n\n if (typeof func !== 'function') {\n throw new TypeError(`Expected ${ fullKey } to be function, got ${ typeof func }`);\n }\n\n return func.apply(self, args);\n });\n });\n }\n\n\n setProps(props : (BuiltInPropsType & P), origin : string, required : boolean = true) {\n // $FlowFixMe\n this.props = this.props || {};\n let normalizedProps = normalizeChildProps(this.component, props, origin, required);\n extend(this.props, normalizedProps);\n if (this.props.logLevel) {\n setLogLevel(this.props.logLevel);\n }\n for (let handler of this.onPropHandlers) {\n handler.call(this, this.props);\n }\n }\n\n\n /* Send to Parent\n --------------\n\n Send a post message to our parent window.\n */\n\n sendToParent(name : string, data : ?Object = {}, options : ?Object = {}) : ZalgoPromise<{ origin : string, source : CrossDomainWindowType, data : Object }> {\n let parentWindow = getParentComponentWindow();\n\n if (!parentWindow) {\n throw new Error(`Can not find parent component window to message`);\n }\n\n this.component.log(`send_to_parent_${ name }`);\n\n return send(parentWindow, name, data, { domain: getParentDomain(), ...options });\n }\n\n\n /* Set Windows\n -----------\n\n Determine the parent window, and the parent component window. Note -- these may be different, if we were\n rendered using renderTo.\n */\n\n setWindows() {\n\n\n // Ensure we do not try to .attach() multiple times for the same component on the same page\n\n if (window.__activeZoidComponent__) {\n throw this.component.createError(`Can not attach multiple components to the same window`);\n }\n\n window.__activeZoidComponent__ = this;\n\n // Get the direct parent window\n\n if (!getParentComponentWindow()) {\n throw this.component.createError(`Can not find parent window`);\n }\n\n let componentMeta = getComponentMeta();\n\n if (componentMeta.tag !== this.component.tag) {\n throw this.component.createError(`Parent is ${ componentMeta.tag } - can not attach ${ this.component.tag }`);\n }\n\n // Note -- getting references to other windows is probably one of the hardest things to do. There's basically\n // only a few ways of doing it:\n //\n // - The window is a direct parent, in which case you can use window.parent or window.opener\n // - The window is an iframe owned by you or one of your parents, in which case you can use window.frames\n // - The window sent you a post-message, in which case you can use event.source\n //\n // If we didn't rely on winProps.parent here from the window name, we'd have to relay all of our messages through\n // our actual parent. Which is no fun at all, and pretty error prone even with the help of post-robot. So this\n // is the lesser of two evils until browsers give us something like getWindowByName(...)\n\n // If the parent window closes, we need to close ourselves. There's no point continuing to run our component\n // if there's no parent to message to.\n\n this.watchForClose();\n }\n\n watchForClose() {\n window.addEventListener('unload', () => this.checkClose());\n }\n\n enableAutoResize({ width = true, height = true } : { width : boolean, height : boolean } = {}) {\n this.autoResize = { width, height };\n this.watchForResize();\n }\n\n getAutoResize() : { width : boolean, height : boolean, element : HTMLElement } {\n\n let width = false;\n let height = false;\n\n let autoResize = this.autoResize || this.component.autoResize;\n\n if (typeof autoResize === 'object') {\n width = Boolean(autoResize.width);\n height = Boolean(autoResize.height);\n } else if (autoResize) {\n width = true;\n height = true;\n }\n\n let element;\n\n if (autoResize.element) {\n element = getElement(autoResize.element);\n } else {\n element = document.body;\n }\n\n // $FlowFixMe\n return { width, height, element };\n }\n\n watchForResize() : ?ZalgoPromise {\n\n let { width, height, element } = this.getAutoResize();\n\n if (!width && !height) {\n return;\n }\n\n if (this.context === CONTEXT_TYPES.POPUP) {\n return;\n }\n\n if (this.watchingForResize) {\n return;\n }\n\n this.watchingForResize = true;\n \n onResize(element, ({ width: newWidth, height: newHeight }) => {\n this.resize(width ? newWidth : undefined, height ? newHeight : undefined);\n }, { width, height });\n }\n\n\n exports() : ChildExportsType

{\n\n let self = this;\n\n return {\n updateProps(props : (BuiltInPropsType & P)) : ZalgoPromise {\n return ZalgoPromise.try(() => self.setProps(props, this.origin, false));\n },\n\n close() : ZalgoPromise {\n return ZalgoPromise.try(() => self.destroy());\n }\n };\n }\n\n\n /* Resize\n ------\n\n Resize the child window. Must be done on a user action like a click if we're in a popup\n */\n\n resize(width : ?number, height : ?number) : ZalgoPromise {\n return ZalgoPromise.resolve().then(() => {\n\n this.component.log(`resize`, { width: stringify(width), height: stringify(height) });\n\n if (this.context === CONTEXT_TYPES.POPUP) {\n return;\n }\n\n return this.sendToParent(POST_MESSAGE.RESIZE, { width, height }).then(noop);\n });\n }\n\n /* Hide\n ----\n\n Hide the window and any parent template\n */\n\n hide() : ZalgoPromise {\n return this.sendToParent(POST_MESSAGE.HIDE).then(noop);\n }\n\n show() : ZalgoPromise {\n return this.sendToParent(POST_MESSAGE.SHOW).then(noop);\n }\n\n userClose() : void {\n return this.close(CLOSE_REASONS.USER_CLOSED);\n }\n\n\n /* Close\n -----\n\n Close the child window\n */\n\n close(reason : string = CLOSE_REASONS.CHILD_CALL) {\n\n this.component.log(`close_child`);\n\n // Ask our parent window to close us\n\n this.sendToParent(POST_MESSAGE.CLOSE, { reason });\n }\n\n checkClose() {\n this.sendToParent(POST_MESSAGE.CHECK_CLOSE, {}, { fireAndForget: true });\n }\n\n\n destroy() : ZalgoPromise {\n return flush().then(() => {\n window.close();\n });\n }\n\n\n /* Focus\n -----\n\n Focus the child window. Must be done on a user action like a click\n */\n\n focus() {\n this.component.log(`focus`);\n\n window.focus();\n }\n\n\n /* Error\n -----\n\n Send an error back to the parent\n */\n\n error(err : mixed) : ZalgoPromise {\n\n let stringifiedError = stringifyError(err);\n\n this.component.logError(`error`, { error: stringifiedError });\n\n return this.sendToParent(POST_MESSAGE.ERROR, {\n error: stringifiedError\n }).then(noop);\n }\n}\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { cleanUpWindow } from 'post-robot/src';\nimport { findFrameByName, isSameDomain } from 'cross-domain-utils/src';\n\nimport { iframe, popup, toCSS, showElement, hideElement,\n destroyElement, normalizeDimension, watchElementForClose,\n awaitFrameWindow, addClass, removeClass, noop } from '../../lib';\nimport { CONTEXT_TYPES, DELEGATE, CLOSE_REASONS, CLASS_NAMES, DEFAULT_DIMENSIONS } from '../../constants';\nimport { getPosition, getParentComponentWindow } from '../window';\n\n\nexport type ContextDriverType = {\n\n focusable : boolean,\n renderedIntoContainerTemplate : boolean,\n allowResize : boolean,\n openOnClick : boolean,\n needsBridge : boolean,\n\n open : (?string) => ZalgoPromise,\n resize : (?(number | string), ?(number | string)) => void,\n show : () => void,\n hide : () => void,\n loadUrl : (string) => void,\n\n delegateOverrides : {\n [string] : string | Function\n },\n\n openPrerender : () => ZalgoPromise,\n switchPrerender? : () => void\n};\n\n/* Render Drivers\n --------------\n\n There are various differences in how we treat:\n\n - Opening frames and windows\n - Rendering up to the parent\n - Resizing\n - etc.\n\n based on the context we're rendering to.\n\n These render drivers split this functionality out in a driver pattern, so our component code doesn't bunch up into a\n series of if-popup-then-else-if-iframe code.\n*/\n\nexport let RENDER_DRIVERS : { [string] : ContextDriverType } = {};\n\n// Iframe context is rendered inline on the page, without any kind of parent template. It's the one context that is designed\n// to feel like a native element on the page.\n\nRENDER_DRIVERS[CONTEXT_TYPES.IFRAME] = {\n\n focusable: false,\n renderedIntoContainerTemplate: true,\n allowResize: true,\n openOnClick: false,\n needsBridge: false,\n\n open(url : ?string) : ZalgoPromise {\n\n let attributes = this.component.attributes.iframe || {};\n\n this.iframe = iframe({\n url,\n attributes: {\n name: this.childWindowName,\n title: this.component.name,\n scrolling: this.component.scrolling ? 'yes' : 'no',\n ...attributes\n },\n class: [\n CLASS_NAMES.COMPONENT_FRAME,\n CLASS_NAMES.INVISIBLE\n ]\n }, this.element);\n\n return awaitFrameWindow(this.iframe).then(frameWindow => {\n\n this.window = frameWindow;\n\n let detectClose = () => {\n return ZalgoPromise.try(() => {\n return this.props.onClose(CLOSE_REASONS.CLOSE_DETECTED);\n }).finally(() => {\n return this.destroy();\n });\n };\n\n let iframeWatcher = watchElementForClose(this.iframe, detectClose);\n let elementWatcher = watchElementForClose(this.element, detectClose);\n\n this.clean.register('destroyWindow', () => {\n\n iframeWatcher.cancel();\n elementWatcher.cancel();\n\n cleanUpWindow(this.window);\n\n delete this.window;\n\n if (this.iframe) {\n destroyElement(this.iframe);\n delete this.iframe;\n }\n });\n });\n },\n\n openPrerender() : ZalgoPromise {\n\n let attributes = this.component.attributes.iframe || {};\n\n this.prerenderIframe = iframe({\n attributes: {\n name: `__prerender__${ this.childWindowName }`,\n scrolling: this.component.scrolling ? 'yes' : 'no',\n ...attributes\n },\n class: [\n CLASS_NAMES.PRERENDER_FRAME,\n CLASS_NAMES.VISIBLE\n ]\n }, this.element);\n\n return awaitFrameWindow(this.prerenderIframe).then(prerenderFrameWindow => {\n\n this.prerenderWindow = prerenderFrameWindow;\n\n this.clean.register('destroyPrerender', () => {\n\n if (this.prerenderIframe) {\n destroyElement(this.prerenderIframe);\n delete this.prerenderIframe;\n }\n });\n });\n },\n\n switchPrerender() {\n\n addClass(this.prerenderIframe, CLASS_NAMES.INVISIBLE);\n removeClass(this.prerenderIframe, CLASS_NAMES.VISIBLE);\n\n addClass(this.iframe, CLASS_NAMES.VISIBLE);\n removeClass(this.iframe, CLASS_NAMES.INVISIBLE);\n\n setTimeout(() => {\n if (this.prerenderIframe) {\n destroyElement(this.prerenderIframe);\n }\n }, 1000);\n },\n\n delegateOverrides: {\n\n openContainer: DELEGATE.CALL_DELEGATE,\n destroyComponent: DELEGATE.CALL_DELEGATE,\n destroyContainer: DELEGATE.CALL_DELEGATE,\n cancelContainerEvents: DELEGATE.CALL_DELEGATE,\n createPrerenderTemplate: DELEGATE.CALL_DELEGATE,\n elementReady: DELEGATE.CALL_DELEGATE,\n showContainer: DELEGATE.CALL_DELEGATE,\n showComponent: DELEGATE.CALL_DELEGATE,\n hideContainer: DELEGATE.CALL_DELEGATE,\n hideComponent: DELEGATE.CALL_DELEGATE,\n hide: DELEGATE.CALL_DELEGATE,\n show: DELEGATE.CALL_DELEGATE,\n resize: DELEGATE.CALL_DELEGATE,\n loadUrl: DELEGATE.CALL_DELEGATE,\n hijackSubmit: DELEGATE.CALL_DELEGATE,\n openPrerender: DELEGATE.CALL_DELEGATE,\n switchPrerender: DELEGATE.CALL_DELEGATE,\n\n renderTemplate: DELEGATE.CALL_ORIGINAL,\n openContainerFrame: DELEGATE.CALL_ORIGINAL,\n getOutlet: DELEGATE.CALL_ORIGINAL,\n\n open(original : () => ZalgoPromise, override : () => ZalgoPromise) : () => ZalgoPromise {\n return function overrideOpen() : ZalgoPromise {\n return override.apply(this, arguments).then(() => {\n this.clean.set('window', findFrameByName(getParentComponentWindow(), this.childWindowName));\n\n if (!this.window) {\n throw new Error(`Unable to find parent component iframe window`);\n }\n });\n };\n }\n },\n\n resize(width : ?(number | string), height : ?(number | string)) {\n\n if (width) {\n this.container.style.width = toCSS(width);\n this.element.style.width = toCSS(width);\n }\n\n if (height) {\n this.container.style.height = toCSS(height);\n this.element.style.height = toCSS(height);\n }\n },\n\n show() {\n showElement(this.element);\n },\n\n hide() {\n hideElement(this.element);\n },\n\n loadUrl(url : string) {\n this.iframe.setAttribute('src', url);\n }\n};\n\nif (__ZOID__.__POPUP_SUPPORT__) {\n\n // Popup context opens up a centered popup window on the page.\n\n RENDER_DRIVERS[CONTEXT_TYPES.POPUP] = {\n\n focusable: true,\n renderedIntoContainerTemplate: false,\n allowResize: false,\n openOnClick: true,\n needsBridge: true,\n\n open(url : ?string = '') : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n let {\n width = DEFAULT_DIMENSIONS.WIDTH,\n height = DEFAULT_DIMENSIONS.HEIGHT\n } = this.component.dimensions || {};\n\n width = normalizeDimension(width, window.outerWidth);\n height = normalizeDimension(height, window.outerWidth);\n\n let { x, y } = getPosition({ width, height });\n\n let attributes = this.component.attributes.popup || {};\n\n this.window = popup(url || '', {\n name: this.childWindowName,\n width,\n height,\n top: y,\n left: x,\n status: 1,\n toolbar: 0,\n menubar: 0,\n resizable: 1,\n scrollbars: 1,\n ...attributes\n });\n\n this.prerenderWindow = this.window;\n\n this.clean.register('destroyWindow', () => {\n if (this.window) {\n this.window.close();\n cleanUpWindow(this.window);\n delete this.window;\n delete this.prerenderWindow;\n }\n });\n\n this.resize(width, height);\n });\n },\n\n openPrerender() : ZalgoPromise {\n return ZalgoPromise.try(noop);\n },\n\n resize() {\n // pass\n },\n\n hide() {\n throw new Error('Can not hide popup');\n },\n\n show() {\n throw new Error('Can not show popup');\n },\n\n delegateOverrides: {\n\n openContainer: DELEGATE.CALL_DELEGATE,\n destroyContainer: DELEGATE.CALL_DELEGATE,\n\n elementReady: DELEGATE.CALL_DELEGATE,\n\n showContainer: DELEGATE.CALL_DELEGATE,\n showComponent: DELEGATE.CALL_DELEGATE,\n hideContainer: DELEGATE.CALL_DELEGATE,\n hideComponent: DELEGATE.CALL_DELEGATE,\n\n hide: DELEGATE.CALL_DELEGATE,\n show: DELEGATE.CALL_DELEGATE,\n\n cancelContainerEvents: DELEGATE.CALL_DELEGATE,\n\n open: DELEGATE.CALL_ORIGINAL,\n loadUrl: DELEGATE.CALL_ORIGINAL,\n createPrerenderTemplate: DELEGATE.CALL_ORIGINAL,\n destroyComponent: DELEGATE.CALL_ORIGINAL,\n resize: DELEGATE.CALL_ORIGINAL,\n renderTemplate: DELEGATE.CALL_ORIGINAL,\n openContainerFrame: DELEGATE.CALL_ORIGINAL,\n getOutlet: DELEGATE.CALL_ORIGINAL\n },\n\n loadUrl(url : string) {\n\n if (isSameDomain(this.window)) {\n try {\n if (this.window.location && this.window.location.replace) {\n this.window.location.replace(url);\n return;\n }\n } catch (err) {\n // pass\n }\n }\n\n this.window.location = url;\n }\n };\n}\n","/* @flow */\n/* eslint complexity: off */\n\nimport type { Component } from '../component';\nimport type { MixedPropDefinitionType, PropsType } from '../component/props';\n\n// $FlowFixMe\nexport function validateProp(prop : MixedPropDefinitionType

, key : string, value : ?T, props : (PropsType & P), required : boolean = true) {\n\n let hasProp = value !== null && value !== undefined && value !== '';\n\n if (!hasProp) {\n if (required && prop.required !== false && !prop.hasOwnProperty('def')) {\n throw new Error(`Prop is required: ${ key }`);\n }\n\n return;\n }\n\n if (value && typeof value.then === 'function' && prop.promise) {\n return;\n }\n\n if (prop.type === 'function') {\n\n if (!(typeof value === 'function')) {\n throw new TypeError(`Prop is not of type function: ${ key }`);\n }\n\n } else if (prop.type === 'string') {\n\n if (typeof value !== 'string') {\n throw new TypeError(`Prop is not of type string: ${ key }`);\n }\n\n } else if (prop.type === 'object') {\n\n // Since we're sending everything by post-message, everything must be json serializable\n\n if (prop.sendToChild !== false) {\n try {\n JSON.stringify(value);\n } catch (err) {\n throw new Error(`Unable to serialize prop: ${ key }`);\n }\n }\n\n } else if (prop.type === 'number') {\n\n if (isNaN(parseInt(value, 10))) {\n throw new TypeError(`Prop is not a number: ${ key }`);\n }\n }\n\n if (typeof prop.validate === 'function' && value) {\n prop.validate(value, props);\n }\n}\n\n\n/* Validate Props\n --------------\n\n Validate user-defined props. Users can pass props down from the parent into the child component, but first we\n double check the values are what we expect, based on the props spec defined in the original component.\n*/\n\nexport function validateProps

(component : Component

, props : PropsType, required : boolean = true) {\n\n props = props || {};\n\n if (props.env && typeof component.url === 'object' && !component.url[props.env]) {\n throw new Error(`Invalid env: ${ props.env }`);\n }\n\n // Set aliases\n\n for (let key of component.getPropNames()) {\n\n // $FlowFixMe\n let prop = component.getProp(key);\n\n if (prop.alias && props.hasOwnProperty(prop.alias)) {\n\n let value = props[prop.alias];\n delete props[prop.alias];\n\n if (!props[key]) {\n props[key] = value;\n }\n }\n }\n\n // First make sure all of the props we were sent are actually valid prop names\n\n /*\n\n if (!component.looseProps) {\n for (let key of Object.keys(props)) {\n if (component.getPropNames().indexOf(key) === -1) {\n throw component.error(`Invalid prop: ${key}`);\n }\n }\n }\n\n */\n\n // Then loop over the props we expect, and make sure they're all present and valid\n\n for (let key of Object.keys(props)) {\n\n // $FlowFixMe\n let prop : MixedPropDefinitionType

= component.getProp(key);\n let value = props[key];\n\n if (prop) {\n // $FlowFixMe\n validateProp(prop, key, value, props, required);\n }\n }\n\n for (let key of component.getPropNames()) {\n\n // $FlowFixMe\n let prop : MixedPropDefinitionType

= component.getProp(key);\n let value = props[key];\n\n if (prop && !props.hasOwnProperty(key)) {\n validateProp(prop, key, value, props, required);\n }\n }\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { noop, denodeify, once, memoize, promisify, dotify } from '../../lib';\nimport type { Component } from '../component';\nimport type { BuiltInPropsDefinitionType, PropsType, BuiltInPropsType, MixedPropDefinitionType } from '../component/props';\n\nimport type { ParentComponent } from './index';\n\nfunction isDefined(value : ?mixed) : boolean {\n return value !== null && value !== undefined && value !== '';\n}\n\n\n/* Normalize Prop\n --------------\n\n Turn prop into normalized value, using defaults, function options, etc.\n*/\n\n// $FlowFixMe\nexport function normalizeProp(component : Component

, instance : ParentComponent

, props : (PropsType & P), key : string, value : ?T) : ?(ZalgoPromise | T) { // eslint-disable-line complexity\n\n let prop = component.getProp(key);\n\n let resultValue;\n\n if (prop.value) {\n resultValue = prop.value;\n } else if (prop.def && (!props.hasOwnProperty(key) || !isDefined(value))) {\n resultValue = prop.def.call(component, props);\n } else {\n resultValue = value;\n }\n\n if (!resultValue && prop.alias && props[prop.alias]) {\n resultValue = props[prop.alias];\n }\n\n let decorated = false;\n\n if (prop.decorate && resultValue !== null && resultValue !== undefined) {\n resultValue = prop.decorate.call(instance, resultValue, props);\n decorated = true;\n }\n\n let type = prop.type;\n\n if (type === 'boolean') {\n // $FlowFixMe\n resultValue = Boolean(resultValue);\n\n } else if (type === 'function') {\n\n if (!resultValue && prop.noop) {\n // $FlowFixMe\n resultValue = noop;\n\n if (!decorated && prop.decorate) {\n // $FlowFixMe\n resultValue = prop.decorate.call(instance, noop, props);\n }\n }\n\n if (resultValue && typeof resultValue === 'function') {\n\n resultValue = resultValue.bind(instance);\n\n // If prop.denodeify is set, denodeify the function (accepts callback -> returns promise)\n\n if (prop.denodeify) {\n // $FlowFixMe\n resultValue = denodeify(resultValue);\n }\n\n if (prop.promisify) {\n // $FlowFixMe\n resultValue = promisify(resultValue);\n }\n\n // Wrap the function in order to log when it is called\n\n let original = resultValue;\n // $FlowFixMe\n resultValue = function() : mixed {\n component.log(`call_prop_${ key }`);\n return original.apply(this, arguments);\n };\n\n // If prop.once is set, ensure the function can only be called once\n\n if (prop.once) {\n // $FlowFixMe\n resultValue = once(resultValue);\n }\n\n // If prop.memoize is set, ensure the function is memoized (first return resultValue is cached and returned for any future calls)\n\n if (prop.memoize) {\n // $FlowFixMe\n resultValue = memoize(resultValue);\n }\n }\n\n } else if (type === 'string') {\n // pass\n\n } else if (type === 'object') {\n // pass\n\n } else if (type === 'number') {\n if (resultValue !== undefined) {\n // $FlowFixMe\n resultValue = parseInt(resultValue, 10);\n }\n }\n\n // $FlowFixMe\n return resultValue;\n}\n\n\n/* Normalize Props\n ---------------\n\n Turn props into normalized values, using defaults, function options, etc.\n*/\n\nexport function normalizeProps

(component : Component

, instance : ParentComponent

, props : (PropsType & P)) : (BuiltInPropsType & P) {\n\n let result = {};\n\n // $FlowFixMe\n props = props || {};\n\n for (let key of Object.keys(props)) {\n if (component.getPropNames().indexOf(key) !== -1) {\n // $FlowFixMe\n result[key] = normalizeProp(component, instance, props, key, props[key]);\n } else {\n result[key] = props[key];\n }\n }\n\n for (let key of component.getPropNames()) {\n if (!props.hasOwnProperty(key) && (!instance.props || !instance.props.hasOwnProperty(key))) {\n\n // $FlowFixMe\n let normalizedProp = normalizeProp(component, instance, props, key, props[key]);\n\n if (normalizedProp !== undefined) {\n result[key] = normalizedProp;\n }\n }\n }\n\n // $FlowFixMe\n return result;\n}\n\n\n/* Props to Query\n --------------\n\n Turn props into an initial query string to open the component with\n\n string -> string\n bool -> 1\n object -> json\n number -> string\n*/\n\n// $FlowFixMe\nfunction getQueryParam(prop : MixedPropDefinitionType

, key : string, value : T) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (typeof prop.queryParam === 'function') {\n return prop.queryParam(value);\n } else if (typeof prop.queryParam === 'string') {\n return prop.queryParam;\n } else {\n return key;\n }\n });\n}\n\n// $FlowFixMe\nfunction getQueryValue(prop : MixedPropDefinitionType

, key : string, value : T) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (typeof prop.queryValue === 'function') {\n return prop.queryValue(value);\n } else {\n return value;\n }\n });\n}\n\nexport function propsToQuery

(propsDef : BuiltInPropsDefinitionType

, props : (BuiltInPropsType & P)) : { [string] : string } {\n\n let params = {};\n\n return ZalgoPromise.all(Object.keys(props).map(key => {\n\n let prop = propsDef[key];\n\n if (!prop) {\n return; // eslint-disable-line array-callback-return\n }\n\n return ZalgoPromise.resolve().then(() => {\n\n let value = props[key];\n\n if (!value) {\n return;\n }\n\n if (!prop.queryParam) {\n return;\n }\n\n return value;\n\n }).then(value => {\n\n if (!value) {\n return;\n }\n\n return ZalgoPromise.all([\n // $FlowFixMe\n getQueryParam(prop, key, value),\n // $FlowFixMe\n getQueryValue(prop, key, value)\n ]).then(([ queryParam, queryValue ]) => {\n\n let result;\n\n if (typeof queryValue === 'boolean') {\n result = '1';\n } else if (typeof queryValue === 'string') {\n result = queryValue.toString();\n } else if (typeof queryValue === 'function') {\n return;\n } else if (typeof queryValue === 'object' && queryValue !== null) {\n\n if (prop.serialization === 'json') {\n result = JSON.stringify(queryValue);\n } else {\n result = dotify(queryValue, key);\n\n for (let dotkey of Object.keys(result)) {\n params[dotkey] = result[dotkey];\n }\n\n return;\n }\n\n } else if (typeof queryValue === 'number') {\n result = queryValue.toString();\n }\n\n params[queryParam] = result;\n });\n });\n\n })).then(() => {\n Object.keys(params).forEach(key => {\n params[key] = escape(params[key]);\n });\n return params;\n });\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { flush } from 'beaver-logger/client';\nimport { send, bridge } from 'post-robot/src';\nimport { isSameDomain, isWindowClosed, isTop, isSameTopWindow, matchDomain, getDistanceFromTop, onCloseWindow, getDomain, assertSameDomain, type CrossDomainWindowType, type SameDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getElementSafe, onResize } from 'belter/src';\n\nimport { BaseComponent } from '../base';\nimport { buildChildWindowName, getParentDomain, getParentComponentWindow } from '../window';\nimport { addEventListener, uniqueID, elementReady, writeElementToWindow,\n noop, showAndAnimate, animateAndHide, showElement, hideElement,\n addClass, extend, serializeFunctions, extendUrl, jsxDom,\n getElement, memoized, appendChild,\n global, writeToWindow, setLogLevel, once,\n prefetchPage, awaitFrameLoad, stringify, stringifyError } from '../../lib';\nimport { POST_MESSAGE, CONTEXT_TYPES, CLASS_NAMES, ANIMATION_NAMES, CLOSE_REASONS, DELEGATE, INITIAL_PROPS, WINDOW_REFERENCES, EVENTS, DEFAULT_DIMENSIONS } from '../../constants';\nimport { RenderError } from '../../error';\nimport type { Component } from '../component';\nimport type { PropsType, BuiltInPropsType } from '../component/props';\nimport type { ChildExportsType } from '../child';\nimport type { CancelableType, Jsx, DimensionsType, ElementRefType } from '../../types';\n\nimport { RENDER_DRIVERS, type ContextDriverType } from './drivers';\nimport { validateProps } from './validate';\nimport { propsToQuery, normalizeProps } from './props';\n\nglobal.props = global.props || {};\nglobal.windows = global.windows || {};\n\nexport type RenderOptionsType = {\n id : string,\n props : PropsType,\n tag : string,\n context : string,\n outlet : HTMLElement,\n CLASS : typeof CLASS_NAMES,\n ANIMATION : typeof ANIMATION_NAMES,\n CONTEXT : typeof CONTEXT_TYPES,\n EVENT : typeof EVENTS,\n actions : {\n close : (string) => ZalgoPromise,\n focus : () => ZalgoPromise\n },\n on : (string, () => void) => CancelableType,\n jsxDom : Jsx,\n document : Document,\n container : HTMLElement,\n dimensions : DimensionsType\n};\n\n\n/* Parent Component\n ----------------\n\n This manages the state of the component on the parent window side - i.e. the window the component is being rendered into.\n\n It handles opening the necessary windows/iframes, launching the component's url, and listening for messages back from the component.\n*/\n\nexport class ParentComponent

extends BaseComponent

{\n\n html : ?ZalgoPromise\n context : string\n props : BuiltInPropsType & P\n childWindowName : string\n onInit : ZalgoPromise>\n window : CrossDomainWindowType\n handledErrors : Array\n\n container : HTMLElement\n element : HTMLElement\n outlet : HTMLElement;\n iframe : HTMLIFrameElement\n\n prerenderIframe : HTMLIFrameElement\n prerenderWindow : SameDomainWindowType\n\n childExports : ?ChildExportsType

\n timeout : ?TimeoutID // eslint-disable-line no-undef\n\n constructor(component : Component

, context : string, { props } : { props : (PropsType & P) }) {\n super();\n\n this.component = component;\n\n this.validateParentDomain();\n\n this.context = context;\n\n try {\n this.setProps(props);\n } catch (err) {\n if (props.onError) {\n props.onError(err);\n }\n throw err;\n }\n\n if (this.props.logLevel) {\n setLogLevel(this.props.logLevel);\n }\n\n this.childWindowName = this.buildChildWindowName({ renderTo: window });\n\n this.registerActiveComponent();\n\n // Options passed during renderTo. We would not ordinarily expect a user to pass these, since we depend on\n // them only when we're trying to render from a sibling to a sibling\n\n this.component.log(`construct_parent`);\n\n this.watchForUnload();\n\n this.onInit = new ZalgoPromise();\n\n this.onInit.catch(err => {\n return this.error(err);\n });\n }\n\n render(element : ElementRefType, loadUrl : boolean = true) : ZalgoPromise> {\n return this.tryInit(() => {\n\n this.component.log(`render_${ this.context }`, { context: this.context, element, loadUrl: stringify(loadUrl) });\n\n let tasks = {};\n\n tasks.onRender = this.props.onRender();\n\n tasks.getDomain = this.getDomain();\n\n tasks.elementReady = ZalgoPromise.try(() => {\n if (element) {\n return this.elementReady(element);\n }\n });\n\n tasks.openContainer = tasks.elementReady.then(() => {\n return this.openContainer(element);\n });\n\n tasks.showContainer = tasks.openContainer.then(() => {\n return this.showContainer();\n });\n\n tasks.openPrerender = tasks.openContainer.then(() => {\n return this.openPrerender();\n });\n\n tasks.switchPrerender = ZalgoPromise.all([ tasks.openPrerender, this.onInit ]).then(() => {\n return this.switchPrerender();\n });\n\n // $FlowFixMe\n tasks.open = this.driver.openOnClick\n ? this.open()\n : tasks.openContainer.then(() => this.open());\n\n tasks.listen = ZalgoPromise.hash({ domain: tasks.getDomain, open: tasks.open }).then(({ domain }) => {\n this.listen(this.window, domain);\n });\n\n tasks.watchForClose = tasks.open.then(() => {\n return this.watchForClose();\n });\n\n tasks.linkDomain = ZalgoPromise.all([ tasks.getDomain, tasks.open ]).then(([ domain ]) => {\n if (bridge && typeof domain === 'string') {\n return bridge.linkUrl(this.window, domain);\n }\n });\n\n if (!this.html) {\n tasks.createPrerenderTemplate = tasks.openPrerender.then(() => {\n return this.createPrerenderTemplate();\n });\n\n tasks.showComponent = tasks.createPrerenderTemplate.then(() => {\n return this.showComponent();\n });\n }\n\n tasks.openBridge = ZalgoPromise.all([ tasks.getDomain, tasks.open ]).then(([ domain ]) => {\n return this.openBridge(typeof domain === 'string' ? domain : null);\n });\n\n if (this.html) {\n tasks.loadHTML = tasks.open.then(() => {\n return this.loadHTML();\n });\n\n } else if (loadUrl) {\n tasks.buildUrl = this.buildUrl();\n\n tasks.loadUrl = ZalgoPromise.all([\n tasks.buildUrl,\n tasks.open,\n tasks.linkDomain,\n tasks.listen,\n tasks.open,\n tasks.openBridge,\n tasks.createPrerenderTemplate\n ]).then(([ url ]) => {\n return this.loadUrl(url);\n });\n\n tasks.runTimeout = tasks.loadUrl.then(() => {\n return this.runTimeout();\n });\n }\n\n return ZalgoPromise.hash(tasks);\n\n }).then(() => {\n return this.props.onEnter();\n }).then(() => {\n return this;\n });\n }\n\n @memoized\n getOutlet() : HTMLElement {\n let outlet = document.createElement('div');\n addClass(outlet, CLASS_NAMES.OUTLET);\n return outlet;\n }\n\n validateParentDomain() {\n let domain = getDomain();\n if (!matchDomain(this.component.allowedParentDomains, domain)) {\n throw new RenderError(`Can not be rendered by domain: ${ domain }`);\n }\n }\n\n renderTo(win : CrossDomainWindowType, element : ?string) : ZalgoPromise> {\n return this.tryInit(() => {\n\n if (win === window) {\n return this.render(element);\n }\n\n if (!isSameTopWindow(window, win)) {\n throw new Error(`Can only renderTo an adjacent frame`);\n }\n\n if (element && typeof element !== 'string') {\n throw new Error(`Element passed to renderTo must be a string selector, got ${ typeof element } ${ element }`);\n }\n\n this.checkAllowRenderTo(win);\n\n this.component.log(`render_${ this.context }_to_win`, { element: stringify(element), context: this.context });\n\n this.childWindowName = this.buildChildWindowName({ renderTo: win });\n\n this.delegate(win);\n\n return this.render(element);\n });\n }\n\n @memoized\n prefetch() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.html = this.buildUrl().then(url => {\n return prefetchPage(url).then(html => {\n\n let host = `${ url.split('/').slice(0, 3).join('/') }`;\n let uri = `/${ url.split('/').slice(3).join('/') }`;\n\n return `\n \n\n ${ html }\n\n \n `;\n });\n });\n });\n }\n\n @memoized\n loadHTML() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (!this.html) {\n throw new Error(`Html not prefetched`);\n }\n\n return this.html.then(html => {\n // $FlowFixMe\n return writeToWindow(this.window, html);\n });\n });\n }\n\n checkAllowRenderTo(win : CrossDomainWindowType) {\n\n if (!win) {\n throw this.component.createError(`Must pass window to renderTo`);\n }\n\n if (isSameDomain(win)) {\n return;\n }\n\n let origin = getDomain();\n let domain = this.component.getDomain(null, this.props.env);\n\n if (!domain) {\n throw new Error(`Could not determine domain to allow remote render`);\n }\n\n if (matchDomain(domain, origin)) {\n return;\n }\n\n throw new Error(`Can not render remotely to ${ domain.toString() } - can only render to ${ origin }`);\n }\n\n registerActiveComponent() {\n ParentComponent.activeComponents.push(this);\n\n this.clean.register(() => {\n ParentComponent.activeComponents.splice(ParentComponent.activeComponents.indexOf(this), 1);\n });\n }\n\n\n getComponentParentRef() : { ref : string, uid? : string, distance? : number } {\n let domain = this.component.getDomain(null, this.props.env);\n\n if (domain === getDomain(window)) {\n let uid = uniqueID();\n global.windows = global.windows || {};\n global.windows[uid] = window;\n this.clean.register(() => {\n delete global.windows[uid];\n });\n\n return { ref: WINDOW_REFERENCES.GLOBAL, uid };\n }\n\n if (this.context === CONTEXT_TYPES.POPUP) {\n return { ref: WINDOW_REFERENCES.OPENER };\n }\n\n if (isTop(window)) {\n return { ref: WINDOW_REFERENCES.TOP };\n }\n\n return { ref: WINDOW_REFERENCES.PARENT, distance: getDistanceFromTop(window) };\n }\n\n getRenderParentRef(renderToWindow : CrossDomainWindowType = window) : { ref : string, uid? : string, distance? : number } {\n\n if (renderToWindow === window) {\n return this.getComponentParentRef();\n }\n\n let uid = uniqueID();\n global.windows[uid] = renderToWindow;\n\n this.clean.register(() => {\n delete global.windows[uid];\n });\n\n return { ref: WINDOW_REFERENCES.GLOBAL, uid };\n }\n\n buildChildWindowName({ renderTo = window } : { renderTo : CrossDomainWindowType } = {}) : string {\n\n let childDomain = this.component.getDomain(null, this.props.env);\n let sameDomain = isSameDomain(renderTo);\n\n let uid = uniqueID();\n let tag = this.component.tag;\n let sProps = serializeFunctions(this.getPropsForChild());\n\n let componentParent = this.getComponentParentRef();\n let renderParent = this.getRenderParentRef(renderTo);\n\n let secureProps = !sameDomain && !this.component.unsafeRenderTo;\n\n let props = secureProps\n ? { type: INITIAL_PROPS.UID, uid }\n : { type: INITIAL_PROPS.RAW, value: sProps };\n\n if (props.type === INITIAL_PROPS.UID) {\n global.props[uid] = JSON.stringify(sProps);\n\n this.clean.register(() => {\n delete global.props[uid];\n });\n }\n\n return buildChildWindowName(this.component.name, this.component.version, { uid, tag, componentParent, renderParent, props, childDomain });\n }\n\n\n /* Send to Parent\n --------------\n\n Send a post message to our parent window.\n */\n\n sendToParent(name : string, data : Object) : ZalgoPromise<{ origin : string, source : CrossDomainWindowType, data : Object }> {\n let parentWindow = getParentComponentWindow();\n\n if (!parentWindow) {\n throw new Error(`Can not find parent component window to message`);\n }\n\n this.component.log(`send_to_parent_${ name }`);\n\n return send(getParentComponentWindow(), name, data, { domain: getParentDomain() });\n }\n\n\n /* Set Props\n ---------\n\n Normalize props and generate the url we'll use to render the component\n */\n\n setProps(props : (PropsType & P), required : boolean = true) {\n\n validateProps(this.component, props, required);\n if (this.component.validate) {\n this.component.validate(this.component, props);\n }\n\n // $FlowFixMe\n this.props = this.props || {};\n\n extend(this.props, normalizeProps(this.component, this, props));\n }\n\n\n /* Build Url\n ---------\n\n We build the props we're passed into the initial url. This means the component server-side can start rendering\n itself based on whatever props the merchant provides.\n */\n\n @memoized\n buildUrl() : ZalgoPromise {\n\n let propUrl : (string | void) = this.props.url;\n\n return ZalgoPromise.all([\n\n propUrl,\n // $FlowFixMe\n propsToQuery({ ...this.component.props, ...this.component.builtinProps }, this.props)\n\n ]).then(([ url, query ]) => {\n\n // Do not extend the url if it is for a different domain\n\n if (url && !this.component.getValidDomain(url)) {\n return url;\n }\n\n return ZalgoPromise.try(() => {\n\n return url || this.component.getUrl(this.props.env, this.props);\n\n }).then(finalUrl => {\n\n query.xcomponent = '1';\n return extendUrl(finalUrl, { query });\n });\n });\n }\n\n\n getDomain() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n return this.props.url;\n\n }).then(url => {\n\n let domain = this.component.getDomain(url, this.props.env);\n\n if (domain) {\n return domain;\n }\n\n if (this.component.buildUrl) {\n return ZalgoPromise.try(() => this.component.buildUrl(this.props)).then(builtUrl => {\n return this.component.getDomain(builtUrl, this.props.env);\n });\n }\n\n }).then(domain => {\n\n if (!domain) {\n throw new Error(`Could not determine domain`);\n }\n\n return domain;\n });\n }\n\n getPropsForChild() : (BuiltInPropsType & P) {\n\n let result = {};\n\n for (let key of Object.keys(this.props)) {\n let prop = this.component.getProp(key);\n\n if (!prop || prop.sendToChild !== false) {\n result[key] = this.props[key];\n }\n }\n\n // $FlowFixMe\n return result;\n }\n\n\n /* Update Props\n ------------\n\n Send new props down to the child\n */\n\n updateProps(props : (PropsType & P)) : ZalgoPromise {\n this.setProps(props, false);\n\n return this.onInit.then(() => {\n if (this.childExports) {\n return this.childExports.updateProps(this.getPropsForChild());\n } else {\n throw new Error(`Child exports were not available`);\n }\n });\n }\n\n\n openBridge(domain : ?string) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (!bridge || !this.driver.needsBridge) {\n return;\n }\n\n let needsBridgeParams : Object = { win: this.window };\n if (domain) {\n needsBridgeParams.domain = domain;\n }\n\n let needsBridge = bridge.needsBridge(needsBridgeParams);\n\n let bridgeUrl = this.component.getBridgeUrl(this.props.env);\n\n if (!bridgeUrl) {\n\n if (needsBridge && domain && !bridge.hasBridge(domain, domain)) {\n throw new Error(`Bridge url needed to render ${ this.context }`);\n }\n\n return;\n }\n\n bridgeUrl = extendUrl(bridgeUrl, { query: { version: this.component.version } });\n\n let bridgeDomain = this.component.getBridgeDomain(this.props.env);\n\n if (!bridgeDomain) {\n throw new Error(`Can not determine domain for bridge`);\n }\n\n if (needsBridge) {\n return bridge.openBridge(bridgeUrl, bridgeDomain).then(result => {\n if (result) {\n return result;\n }\n });\n }\n });\n }\n\n\n /* Open\n ----\n\n Open a new window in the desired context\n */\n\n @memoized\n open() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.component.log(`open_${ this.context }`, { windowName: this.childWindowName });\n if (this.props.win) {\n this.clean.set('window', this.props.win);\n assertSameDomain(this.window).name = this.childWindowName;\n return;\n }\n return this.driver.open.call(this);\n });\n }\n\n @memoized\n openPrerender() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.component.prerenderTemplate) {\n return this.driver.openPrerender.call(this);\n }\n });\n }\n\n @memoized\n switchPrerender() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.prerenderWindow && this.driver.switchPrerender) {\n return this.driver.switchPrerender.call(this);\n }\n });\n }\n\n get driver() : ContextDriverType {\n\n if (!this.context) {\n throw new Error('Context not set');\n }\n\n return RENDER_DRIVERS[this.context];\n }\n\n elementReady(element : ElementRefType) : ZalgoPromise {\n return elementReady(element).then(noop);\n }\n\n\n delegate(win : CrossDomainWindowType) {\n\n this.component.log(`delegate_${ this.context }`);\n\n let props = {\n uid: this.props.uid,\n dimensions: this.props.dimensions,\n onClose: this.props.onClose,\n onDisplay: this.props.onDisplay\n };\n\n for (let propName of this.component.getPropNames()) {\n let prop = this.component.getProp(propName);\n\n if (prop.allowDelegate) {\n props[propName] = this.props[propName];\n }\n }\n\n let delegate = send(win, `${ POST_MESSAGE.DELEGATE }_${ this.component.name }`, {\n\n context: this.context,\n env: this.props.env,\n\n options: {\n\n context: this.context,\n\n childWindowName: this.childWindowName,\n isWindowClosed: () => isWindowClosed(this.window),\n\n props,\n\n overrides: {\n focus: () => this.focus(),\n userClose: () => this.userClose(),\n getDomain: () => this.getDomain(),\n\n error: (err) => this.error(err),\n on: (eventName, handler) => this.on(eventName, handler)\n }\n }\n\n }).then(({ data }) => {\n\n this.clean.register(data.destroy);\n return data;\n\n }).catch(err => {\n\n throw new Error(`Unable to delegate rendering. Possibly the component is not loaded in the target window.\\n\\n${ stringifyError(err) }`);\n });\n\n let overrides = this.driver.delegateOverrides;\n\n for (let key of Object.keys(overrides)) {\n let val = overrides[key];\n\n if (val === DELEGATE.CALL_ORIGINAL) {\n continue;\n }\n\n // $FlowFixMe\n let original = this[key];\n\n // $FlowFixMe\n this[key] = function overridenFunction() : ZalgoPromise {\n return delegate.then(data => {\n\n let override = data.overrides[key];\n\n if (val === DELEGATE.CALL_DELEGATE) {\n return override.apply(this, arguments);\n }\n\n if (typeof val === 'function') {\n return val(original, override).apply(this, arguments);\n }\n\n throw new Error(`Expected delgate to be CALL_ORIGINAL, CALL_DELEGATE, or factory method`);\n });\n };\n }\n }\n\n /* Watch For Close\n ---------------\n\n Watch for the child window closing, so we can cleanup.\n Also watch for this window changing location, so we can close the component.\n */\n\n watchForClose() {\n let closeWindowListener = onCloseWindow(this.window, () => {\n this.component.log(`detect_close_child`);\n\n return ZalgoPromise.try(() => {\n return this.props.onClose(CLOSE_REASONS.CLOSE_DETECTED);\n }).finally(() => {\n return this.destroy();\n });\n }, 3000);\n\n this.clean.register('destroyCloseWindowListener', closeWindowListener.cancel);\n }\n\n watchForUnload() {\n\n // Our child has no way of knowing if we navigated off the page. So we have to listen for unload\n // and close the child manually if that happens.\n\n let onunload = once(() => {\n this.component.log(`navigate_away`);\n flush();\n this.destroyComponent();\n });\n\n let unloadWindowListener = addEventListener(window, 'unload', onunload);\n\n this.clean.register('destroyUnloadWindowListener', unloadWindowListener.cancel);\n }\n\n\n /* Load Url\n --------\n\n Load url into the child window. This is separated out because it's quite common for us to have situations\n where opening the child window and loading the url happen at different points.\n */\n\n loadUrl(url : string) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.component.log(`load_url`);\n\n if (window.location.href.split('#')[0] === url.split('#')[0]) {\n url = extendUrl(url, {\n query: {\n [ uniqueID() ]: '1'\n }\n });\n }\n\n return this.driver.loadUrl.call(this, url);\n });\n }\n\n\n hijack(targetElement : HTMLFormElement | HTMLAnchorElement) {\n targetElement.target = this.childWindowName;\n }\n\n /* Run Timeout\n -----------\n\n Set a timeout on the initial render, and call this.props.onTimeout if we don't get an init call in time.\n */\n\n runTimeout() {\n let timeout = this.props.timeout;\n\n if (timeout) {\n let id = this.timeout = setTimeout(() => {\n\n this.component.log(`timed_out`, { timeout: timeout.toString() });\n\n let error = this.component.createError(`Loading component timed out after ${ timeout } milliseconds`);\n\n this.onInit.reject(error);\n this.props.onTimeout(error);\n\n }, timeout);\n\n this.clean.register(() => {\n clearTimeout(id);\n delete this.timeout;\n });\n }\n }\n\n\n /* Listeners\n ---------\n\n Post-robot listeners to the child component window\n */\n\n listeners() : { [string] : (CrossDomainWindowType, Object) => mixed } {\n return {\n\n // The child rendered, and the component called .attach()\n // We have no way to know when the child has set up its listeners for the first time, so we have to listen\n // for this message to be sure so we can continue doing anything from the parent\n\n [ POST_MESSAGE.INIT ](source : CrossDomainWindowType, data : Object) : { props : BuiltInPropsType & P, context : string } {\n\n this.childExports = data.exports;\n\n this.onInit.resolve(this);\n\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n\n return {\n props: this.getPropsForChild(),\n context: this.context\n };\n },\n\n\n // The child has requested that we close it. Since iframes can't close themselves, we need\n // this logic to exist in the parent window\n\n [ POST_MESSAGE.CLOSE ](source : CrossDomainWindowType, data : Object) {\n this.close(data.reason);\n },\n\n [ POST_MESSAGE.CHECK_CLOSE ]() {\n this.checkClose();\n },\n\n // Iframes can't resize themselves, so they need the parent to take care of it for them.\n\n [ POST_MESSAGE.RESIZE ](source : CrossDomainWindowType, data : Object) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.driver.allowResize) {\n return this.resize(data.width, data.height);\n }\n });\n },\n\n [ POST_MESSAGE.HIDE ]() {\n this.hide();\n },\n\n [ POST_MESSAGE.SHOW ]() {\n this.show();\n },\n\n\n // The child encountered an error\n\n [ POST_MESSAGE.ERROR ](source : CrossDomainWindowType, data : Object) {\n this.error(new Error(data.error));\n }\n };\n }\n\n\n /* Resize\n ------\n\n Resize the child component window\n */\n\n resize(width : ?(number | string), height : ?(number | string)) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.component.log(`resize`, { height: stringify(height), width: stringify(width) });\n this.driver.resize.call(this, width, height);\n if (this.props.onResize) {\n this.props.onResize();\n }\n });\n }\n\n\n /* Hide\n ----\n\n Hide the component and any parent template\n */\n\n hide() : void {\n\n if (this.container) {\n hideElement(this.container);\n }\n\n return this.driver.hide.call(this);\n }\n\n show() : void {\n\n if (this.container) {\n showElement(this.container);\n }\n\n return this.driver.show.call(this);\n }\n\n\n checkClose() {\n let closeWindowListener = onCloseWindow(this.window, () => {\n this.userClose();\n }, 50, 500);\n\n this.clean.register(closeWindowListener.cancel);\n }\n\n\n userClose() : ZalgoPromise {\n return this.close(CLOSE_REASONS.USER_CLOSED);\n }\n\n\n /* Close\n -----\n\n Close the child component\n */\n\n @memoized\n close(reason : string = CLOSE_REASONS.PARENT_CALL) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n this.component.log(`close`, { reason });\n\n this.event.triggerOnce(EVENTS.CLOSE);\n return this.props.onClose(reason);\n\n }).then(() => {\n\n return ZalgoPromise.all([\n this.closeComponent(),\n this.closeContainer()\n ]);\n\n }).then(() => {\n\n return this.destroy();\n });\n }\n\n\n @memoized\n closeContainer(reason : string = CLOSE_REASONS.PARENT_CALL) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n this.event.triggerOnce(EVENTS.CLOSE);\n return this.props.onClose(reason);\n\n }).then(() => {\n\n return ZalgoPromise.all([\n this.closeComponent(reason),\n this.hideContainer()\n ]);\n\n }).then(() => {\n\n return this.destroyContainer();\n });\n }\n\n\n @memoized\n destroyContainer() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.clean.run('destroyContainerEvents');\n this.clean.run('destroyContainerTemplate');\n });\n }\n\n\n @memoized\n closeComponent(reason : string = CLOSE_REASONS.PARENT_CALL) : ZalgoPromise {\n\n let win = this.window;\n\n return ZalgoPromise.try(() => {\n\n return this.cancelContainerEvents();\n\n }).then(() => {\n\n this.event.triggerOnce(EVENTS.CLOSE);\n return this.props.onClose(reason);\n\n }).then(() => {\n\n return this.hideComponent();\n\n }).then(() => {\n\n return this.destroyComponent();\n\n }).then(() => {\n\n // IE in metro mode -- child window needs to close itself, or close will hang\n\n if (this.childExports && this.context === CONTEXT_TYPES.POPUP && !isWindowClosed(win)) {\n this.childExports.close().catch(noop);\n }\n });\n }\n\n destroyComponent() {\n this.clean.run('destroyUnloadWindowListener');\n this.clean.run('destroyCloseWindowListener');\n this.clean.run('destroyContainerEvents');\n this.clean.run('destroyWindow');\n }\n\n @memoized\n showContainer() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.props.onDisplay) {\n return this.props.onDisplay();\n }\n }).then(() => {\n if (this.container) {\n return showAndAnimate(this.container, ANIMATION_NAMES.SHOW_CONTAINER, this.clean.register);\n }\n });\n }\n\n @memoized\n showComponent() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.props.onDisplay) {\n return this.props.onDisplay();\n }\n }).then(() => {\n if (this.element) {\n return showAndAnimate(this.element, ANIMATION_NAMES.SHOW_COMPONENT, this.clean.register);\n }\n });\n }\n\n @memoized\n hideContainer() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.container) {\n return animateAndHide(this.container, ANIMATION_NAMES.HIDE_CONTAINER, this.clean.register);\n } else {\n return ZalgoPromise.resolve();\n }\n });\n }\n\n @memoized\n hideComponent() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.element) {\n return animateAndHide(this.element, ANIMATION_NAMES.HIDE_COMPONENT, this.clean.register);\n } else {\n return ZalgoPromise.resolve();\n }\n });\n }\n\n\n /* Focus\n -----\n\n Focus the child component window\n */\n\n focus() {\n\n if (this.window && !isWindowClosed(this.window)) {\n this.component.log(`focus`);\n this.window.focus();\n\n } else {\n\n throw new Error(`No window to focus`);\n }\n }\n\n\n /* Create Component Template\n -------------------------\n\n Creates an initial template and stylesheet which are loaded into the child window, to be displayed before the url is loaded\n */\n\n @memoized\n createPrerenderTemplate() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (!this.component.prerenderTemplate) {\n return ZalgoPromise.resolve();\n }\n\n return ZalgoPromise.try(() => {\n\n if (this.prerenderIframe) {\n return awaitFrameLoad(this.prerenderIframe).then(() => this.prerenderWindow);\n } else {\n return this.prerenderWindow;\n }\n\n }).then(win => {\n\n let doc;\n\n try {\n doc = win.document;\n } catch (err) {\n return;\n }\n\n let el;\n\n try {\n el = this.renderTemplate(this.component.prerenderTemplate, {\n jsxDom: jsxDom.bind(doc),\n document: doc\n });\n } catch (err) {\n this.component.logError('preprender_error', { err: err.stack ? err.stack : err.toString() });\n console.error(err.stack ? err.stack : err); // eslint-disable-line no-console\n return;\n }\n\n try {\n writeElementToWindow(win, el);\n } catch (err) {\n this.component.logError('preprender_error', { err: err.stack ? err.stack : err.toString() });\n console.error(err.stack ? err.stack : err); // eslint-disable-line no-console\n }\n\n let { width = false, height = false, element = 'body' } = (typeof this.component.autoResize === 'object' && this.component.autoResize !== null)\n ? this.component.autoResize\n : {};\n\n element = getElementSafe(element, doc);\n\n if (element && (width || height)) {\n onResize(element, ({ width: newWidth, height: newHeight }) => {\n this.resize(width ? newWidth : undefined, height ? newHeight : undefined);\n }, { width, height, win });\n }\n });\n });\n }\n\n\n /* Create Parent Template\n ----------------------\n\n Create a template and stylesheet for the parent template behind the element\n */\n\n renderTemplate(renderer : (RenderOptionsType) => HTMLElement, options : Object = {}) : HTMLElement {\n\n let {\n width = `${ DEFAULT_DIMENSIONS.WIDTH }px`,\n height = `${ DEFAULT_DIMENSIONS.HEIGHT }px`\n } = (this.component.dimensions || {});\n\n return renderer.call(this, {\n id: `${ CLASS_NAMES.ZOID }-${ this.component.tag }-${ this.props.uid }`,\n props: renderer.__xdomain__ ? null : this.props,\n tag: this.component.tag,\n context: this.context,\n outlet: this.getOutlet(),\n CLASS: CLASS_NAMES,\n ANIMATION: ANIMATION_NAMES,\n CONTEXT: CONTEXT_TYPES,\n EVENT: EVENTS,\n actions: {\n close: () => this.userClose(),\n focus: () => this.focus()\n },\n on: (eventName, handler) => this.on(eventName, handler),\n jsxDom,\n document,\n dimensions: { width, height },\n ...options\n });\n }\n\n @memoized\n openContainer(element : ?HTMLElement) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n let el;\n\n if (element) {\n el = getElement(element);\n } else {\n el = document.body;\n }\n\n if (!el) {\n throw new Error(`Could not find element to open container into`);\n }\n\n if (!this.component.containerTemplate) {\n if (this.driver.renderedIntoContainerTemplate) {\n throw new Error(`containerTemplate needed to render ${ this.context }`);\n }\n\n return;\n }\n\n let container = this.renderTemplate(this.component.containerTemplate, {\n container: el\n });\n\n this.container = container;\n hideElement(this.container);\n appendChild(el, this.container);\n\n if (this.driver.renderedIntoContainerTemplate) {\n this.element = this.getOutlet();\n hideElement(this.element);\n\n if (!this.element) {\n throw new Error('Could not find element to render component into');\n }\n\n hideElement(this.element);\n }\n\n this.clean.register('destroyContainerTemplate', () => {\n\n if (this.container && this.container.parentNode) {\n this.container.parentNode.removeChild(this.container);\n }\n\n delete this.container;\n });\n });\n }\n\n cancelContainerEvents() {\n this.clean.run('destroyContainerEvents');\n }\n\n\n /* Destroy\n -------\n\n Close the component and clean up any listeners and state\n */\n\n destroy() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.clean.hasTasks()) {\n this.component.log(`destroy`);\n flush();\n return this.clean.all();\n }\n });\n }\n\n\n tryInit(method : () => mixed) : ZalgoPromise> {\n return ZalgoPromise.try(method).catch(err => {\n this.onInit.reject(err);\n }).then(() => {\n return this.onInit;\n });\n }\n\n\n /* Error\n -----\n\n Handle an error\n */\n\n error(err : mixed) : ZalgoPromise {\n // eslint-disable-next-line promise/no-promise-in-callback\n return ZalgoPromise.try(() => {\n\n this.handledErrors = this.handledErrors || [];\n\n if (this.handledErrors.indexOf(err) !== -1) {\n // $FlowFixMe\n return;\n }\n\n this.handledErrors.push(err);\n\n this.onInit.reject(err);\n\n return this.destroy();\n\n }).then(() => {\n\n if (this.props.onError) {\n return this.props.onError(err);\n }\n\n }).catch(errErr => { // eslint-disable-line unicorn/catch-error-name\n\n throw new Error(`An error was encountered while handling error:\\n\\n ${ stringifyError(err) }\\n\\n${ stringifyError(errErr) }`);\n\n }).then(() => {\n\n if (!this.props.onError) {\n throw err;\n }\n });\n }\n\n static activeComponents : Array> = []\n\n static destroyAll() : ZalgoPromise {\n let results = [];\n\n while (ParentComponent.activeComponents.length) {\n results.push(ParentComponent.activeComponents[0].destroy());\n }\n\n return ZalgoPromise.all(results).then(noop);\n }\n}\n","/* @flow */\n\nimport { onCloseWindow, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { BaseComponent } from '../base';\nimport { ParentComponent } from '../parent';\nimport { RENDER_DRIVERS, type ContextDriverType } from '../parent/drivers';\nimport type { Component } from '../component';\nimport { noop } from '../../lib';\nimport type { CancelableType, DimensionsType } from '../../types';\n\nexport type DelegatePropsType = {\n uid : string,\n dimensions : DimensionsType,\n onClose : () => ?ZalgoPromise,\n onDisplay : () => ?ZalgoPromise\n};\n\nexport type DelegateOptionsType = {\n context : string,\n props : DelegatePropsType,\n childWindowName : string,\n isWindowClosed : () => ZalgoPromise,\n \n overrides : {\n focus : () => ZalgoPromise,\n userClose : (string) => ZalgoPromise,\n getDomain : () => ZalgoPromise,\n error : (mixed) => ZalgoPromise,\n on : (string, () => void) => CancelableType\n }\n};\n\nexport class DelegateComponent

extends BaseComponent

{\n\n source : CrossDomainWindowType\n context : string\n props : DelegatePropsType\n\n focus : () => ZalgoPromise\n userClose : (string) => ZalgoPromise\n getDomain : () => ZalgoPromise\n error : (mixed) => ZalgoPromise\n on : (string, () => void) => CancelableType\n\n childWindowName : string\n isWindowClosed : () => ZalgoPromise\n\n constructor(component : Component

, source : CrossDomainWindowType, options : DelegateOptionsType) {\n super();\n\n this.component = component;\n this.clean.set('source', source);\n\n this.context = options.context;\n\n this.props = {\n uid: options.props.uid,\n dimensions: options.props.dimensions,\n onClose: options.props.onClose,\n onDisplay: options.props.onDisplay\n };\n\n for (let propName of component.getPropNames()) {\n // $FlowFixMe\n let prop = this.component.getProp(propName);\n\n if (prop.allowDelegate) {\n this.props[propName] = options.props[propName];\n }\n }\n\n this.focus = () => {\n return ZalgoPromise.all([\n this.isWindowClosed().then(closed => {\n if (!closed) {\n window.open('', this.childWindowName);\n }\n }),\n options.overrides.focus.call(this)\n ]).then(noop);\n };\n\n this.clean.register('destroyFocusOverride', () => {\n // $FlowFixMe\n this.focus = noop;\n });\n\n this.userClose = options.overrides.userClose;\n this.getDomain = options.overrides.getDomain;\n this.error = options.overrides.error;\n this.on = options.overrides.on;\n\n let delegateOverrides = RENDER_DRIVERS[options.context].delegateOverrides;\n\n for (let key of Object.keys(delegateOverrides)) {\n // $FlowFixMe\n this[key] = ParentComponent.prototype[key];\n }\n\n this.childWindowName = options.childWindowName;\n this.isWindowClosed = options.isWindowClosed;\n\n ParentComponent.prototype.registerActiveComponent.call(this);\n\n this.watchForClose();\n }\n\n get driver() : ContextDriverType {\n\n if (!this.context) {\n throw new Error('Context not set');\n }\n\n return RENDER_DRIVERS[this.context];\n }\n\n watchForClose() {\n let closeWindowListener = onCloseWindow(this.source, () => this.destroy(), 3000);\n this.clean.register('destroyCloseWindowListener', closeWindowListener.cancel);\n }\n\n getOverrides(context : string) : { [string] : mixed } {\n\n let delegateOverrides = RENDER_DRIVERS[context].delegateOverrides;\n\n let overrides = {};\n\n let self = this;\n\n for (let key of Object.keys(delegateOverrides)) {\n overrides[key] = function delegateOverride() : mixed {\n // $FlowFixMe\n return ParentComponent.prototype[key].apply(self, arguments);\n };\n }\n\n return overrides;\n }\n\n destroy() : ZalgoPromise {\n return this.clean.all();\n }\n}\n","/* @flow */\n\nimport { PROP_TYPES_LIST, CONTEXT_TYPES_LIST } from '../../constants';\nimport { isPerc, isPx } from '../../lib';\n\nimport type { ComponentOptionsType } from './index';\n\nfunction validatePropDefinitions

(options : ComponentOptionsType

) {\n\n if (options.props && !(typeof options.props === 'object')) {\n throw new Error(`Expected options.props to be an object`);\n }\n\n if (options.props) {\n for (let key of Object.keys(options.props)) {\n\n // $FlowFixMe\n let prop = options.props[key];\n\n if (!prop || !(typeof prop === 'object')) {\n throw new Error(`Expected options.props.${ key } to be an object`);\n }\n\n if (!prop.type) {\n throw new Error(`Expected prop.type`);\n }\n\n if (PROP_TYPES_LIST.indexOf(prop.type) === -1) {\n throw new Error(`Expected prop.type to be one of ${ PROP_TYPES_LIST.join(', ') }`);\n }\n\n if (prop.required && prop.def) {\n throw new Error(`Required prop can not have a default value`);\n }\n }\n }\n}\n\n// eslint-disable-next-line complexity\nexport function validate

(options : ?ComponentOptionsType

) { // eslint-ignore-line\n\n if (!options) {\n throw new Error(`Expecred options to be passed`);\n }\n\n if (!options.tag || !options.tag.match(/^[a-z0-9-]+$/)) {\n throw new Error(`Invalid options.tag: ${ options.tag }`);\n }\n\n validatePropDefinitions(options);\n\n if (options.dimensions) {\n if (options.dimensions && !isPx(options.dimensions.width) && !isPerc(options.dimensions.width)) {\n throw new Error(`Expected options.dimensions.width to be a px or % string value`);\n }\n\n if (options.dimensions && !isPx(options.dimensions.height) && !isPerc(options.dimensions.height)) {\n throw new Error(`Expected options.dimensions.height to be a px or % string value`);\n }\n }\n\n if (options.contexts) {\n\n if (options.contexts.popup && !__ZOID__.__POPUP_SUPPORT__) {\n throw new Error(`Popups not supported in this build -- please use the full zoid.js build`);\n }\n\n let anyEnabled = false;\n\n for (let context of Object.keys(options.contexts)) {\n\n if (CONTEXT_TYPES_LIST.indexOf(context) === -1) {\n throw new Error(`Unsupported context type: ${ context }`);\n }\n\n if ((options.contexts && options.contexts[context]) || (options.contexts && options.contexts[context] === undefined)) {\n anyEnabled = true;\n }\n }\n\n if (!anyEnabled) {\n throw new Error(`No context type is enabled`);\n }\n }\n\n if (options.defaultContext) {\n if (CONTEXT_TYPES_LIST.indexOf(options.defaultContext) === -1) {\n throw new Error(`Unsupported context type: ${ options.defaultContext || 'unknown' }`);\n }\n\n if (options.contexts && options.defaultContext && !options.contexts[options.defaultContext]) {\n throw new Error(`Disallowed default context type: ${ options.defaultContext || 'unknown' }`);\n }\n }\n\n if (options.url && options.buildUrl) {\n throw new Error(`Can not pass both options.url and options.buildUrl`);\n }\n\n if (options.defaultEnv) {\n if (typeof options.defaultEnv !== 'string') {\n throw new TypeError(`Expected options.defaultEnv to be a string`);\n }\n\n if (!options.buildUrl && typeof options.url !== 'object') {\n throw new Error(`Expected options.url to be an object mapping env->url`);\n }\n\n if (options.url && typeof options.url === 'object' && !options.url[options.defaultEnv]) {\n throw new Error(`No url found for default env: ${ options.defaultEnv }`);\n }\n }\n\n if (options.url && typeof options.url === 'object') {\n\n if (!options.defaultEnv) {\n throw new Error(`Must pass options.defaultEnv with env->url mapping`);\n }\n\n for (let env of Object.keys(options.url)) {\n if (!options.url[env]) {\n throw new Error(`No url specified for env: ${ env }`);\n }\n }\n }\n\n if (options.prerenderTemplate && typeof options.prerenderTemplate !== 'function') {\n throw new Error(`Expected options.prerenderTemplate to be a function`);\n }\n\n if (options.containerTemplate && typeof options.containerTemplate !== 'function') {\n throw new Error(`Expected options.containerTemplate to be a function`);\n }\n}\n","/* @flow */\n/* @jsx jsxDom */\n\nimport { type RenderOptionsType } from '../../parent';\n\nexport function defaultContainerTemplate({ id, tag, context, CLASS, outlet, jsxDom, dimensions : { width, height } } : RenderOptionsType) : HTMLElement {\n\n return (\n

\n \n\n { outlet }\n
\n );\n}\n","/* @flow */\n/* @jsx jsxDom */\n\nimport { type RenderOptionsType } from '../../parent';\n\nexport function defaultPrerenderTemplate({ jsxDom } : RenderOptionsType) : HTMLElement {\n return (\n \n \n \n \n \n
\n
\n
\n \n \n );\n}\n","/* @flow */\n\nexport * from './container';\nexport * from './component';\n","/* @flow */\n\nimport { type ZalgoPromise } from 'zalgo-promise/src';\nimport type { SameDomainWindowType } from 'cross-domain-utils/src';\n\nimport { uniqueID } from '../../lib';\nimport { type DimensionsType } from '../../types';\n\ntype PropDefinitionType = {\n type : S,\n alias? : string,\n value? : T,\n required? : boolean,\n noop? : boolean,\n once? : boolean,\n memoize? : boolean,\n promisify? : boolean,\n queryParam? : boolean | string | (T) => (string | ZalgoPromise),\n queryValue? : (T) => (ZalgoPromise | mixed),\n sendToChild? : boolean,\n allowDelegate? : boolean,\n validate? : (T, PropsType & P) => void,\n decorate? : (T, PropsType & P) => (void | ZalgoPromise | T),\n def? : (P) => ?T,\n sameDomain? : boolean,\n serialization? : 'json' | 'dotify',\n childDecorate? : (T) => ?T,\n denodeify? : boolean\n};\n\nexport type BooleanPropDefinitionType = PropDefinitionType;\nexport type StringPropDefinitionType = PropDefinitionType;\nexport type NumberPropDefinitionType = PropDefinitionType;\nexport type FunctionPropDefinitionType = PropDefinitionType;\nexport type ObjectPropDefinitionType = PropDefinitionType;\n\nexport type MixedPropDefinitionType

= BooleanPropDefinitionType<*, P> | StringPropDefinitionType<*, P> | NumberPropDefinitionType<*, P> | FunctionPropDefinitionType<*, P> | ObjectPropDefinitionType<*, P>;\n\nexport type UserPropsDefinitionType

= {\n [string] : MixedPropDefinitionType

\n};\n\nexport type EventHandlerType = (T) => void | ZalgoPromise;\n\ntype envPropType = string;\ntype uidPropType = string;\ntype urlPropType = string;\ntype versionPropType = string;\ntype timeoutPropType = number;\ntype logLevelPropType = string;\ntype dimensionsPropType = DimensionsType;\ntype winPropType = SameDomainWindowType;\n\ntype onDisplayPropType = EventHandlerType;\ntype onEnterPropType = EventHandlerType;\ntype onRenderPropType = EventHandlerType;\ntype onClosePropType = EventHandlerType;\ntype onResizePropType = EventHandlerType;\ntype onTimeoutPropType = EventHandlerType;\ntype onErrorPropType = EventHandlerType;\n\nexport type BuiltInPropsType = {\n env : envPropType,\n uid : uidPropType,\n url? : urlPropType,\n version? : versionPropType,\n timeout? : timeoutPropType,\n logLevel : logLevelPropType,\n dimensions? : dimensionsPropType,\n win? : winPropType,\n\n onDisplay : onDisplayPropType,\n onEnter : onEnterPropType,\n onRender : onRenderPropType,\n onClose : onClosePropType,\n onResize : onResizePropType,\n onTimeout : onTimeoutPropType,\n onError? : onErrorPropType\n};\n\nexport type PropsType = {\n env? : envPropType,\n uid? : uidPropType,\n url? : urlPropType,\n version? : versionPropType,\n timeout? : timeoutPropType,\n logLevel? : logLevelPropType,\n dimensions? : dimensionsPropType,\n win? : winPropType,\n\n onDisplay? : onDisplayPropType,\n onEnter? : onEnterPropType,\n onRender? : onRenderPropType,\n onClose? : onClosePropType,\n onResize? : onResizePropType,\n onTimeout? : onTimeoutPropType,\n onError? : onErrorPropType\n};\n\nexport type BuiltInPropsDefinitionType

= {\n env : StringPropDefinitionType,\n uid : StringPropDefinitionType,\n url : StringPropDefinitionType,\n version : StringPropDefinitionType,\n timeout : NumberPropDefinitionType,\n logLevel : StringPropDefinitionType,\n dimensions : ObjectPropDefinitionType,\n win : ObjectPropDefinitionType,\n\n onDisplay : FunctionPropDefinitionType,\n onEnter : FunctionPropDefinitionType,\n onRender : FunctionPropDefinitionType,\n onClose : FunctionPropDefinitionType,\n onResize : FunctionPropDefinitionType,\n onTimeout : FunctionPropDefinitionType,\n onError : FunctionPropDefinitionType\n};\n\n/* Internal Props\n --------------\n\n We define and use certain props by default, for configuration and events that are used at the framework level.\n These follow the same format as regular props, and are classed as reserved words that may not be overriden by users.\n*/\n\nexport function getInternalProps

() : BuiltInPropsDefinitionType

{\n return {\n\n // The desired env in which the component is being rendered. Used to determine the correct url\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n def() : string {\n return this.defaultEnv;\n }\n },\n\n uid: {\n type: 'string',\n def() : string {\n return uniqueID();\n },\n queryParam: true\n },\n\n logLevel: {\n type: 'string',\n required: false,\n queryParam: true,\n def() : string {\n return this.defaultLogLevel;\n }\n },\n\n // A custom url to use to render the component\n\n url: {\n type: 'string',\n required: false,\n promise: true,\n sendToChild: false\n },\n\n win: {\n type: 'object',\n required: false,\n sendToChild: false\n },\n\n dimensions: {\n type: 'object',\n required: false\n },\n\n version: {\n type: 'string',\n required: false,\n queryParam: true,\n def() : string {\n return this.version;\n }\n },\n\n // A millisecond timeout before onTimeout is called\n\n timeout: {\n type: 'number',\n required: false,\n sendToChild: false\n },\n\n onDisplay: {\n type: 'function',\n required: false,\n noop: true,\n promisify: true,\n memoize: true,\n sendToChild: false\n },\n\n onEnter: {\n type: 'function',\n required: false,\n noop: true,\n promisify: true,\n sendToChild: false\n },\n\n // When we get an INIT message from the child\n\n onRender: {\n type: 'function',\n required: false,\n noop: true,\n promisify: true,\n sendToChild: false\n },\n\n // When the user closes the component.\n\n onClose: {\n type: 'function',\n required: false,\n noop: true,\n once: true,\n promisify: true,\n sendToChild: false\n },\n\n onResize: {\n type: 'function',\n required: false,\n noop: true,\n sendToChild: false\n },\n\n // When we time-out before getting an INIT message from the child. Defaults to onError if no handler passed.\n\n onTimeout: {\n type: 'function',\n required: false,\n memoize: true,\n promisify: true,\n sendToChild: false,\n def() : (() => void) {\n return function onTimeout(err : mixed) : void {\n if (this.props.onError) {\n return this.props.onError(err);\n }\n throw err;\n };\n }\n },\n\n // When the component experiences an error\n\n onError: {\n type: 'function',\n required: false,\n promisify: true,\n sendToChild: true,\n once: true,\n def() : (() => void) {\n return function onError(err : mixed) {\n setTimeout(() => {\n throw err;\n });\n };\n }\n }\n };\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { on, send } from 'post-robot/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getDomain, getDomainFromUrl, matchDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { BaseComponent } from '../base';\nimport { ChildComponent } from '../child';\nimport { ParentComponent, type RenderOptionsType } from '../parent';\nimport { DelegateComponent, type DelegateOptionsType } from '../delegate';\nimport { isZoidComponentWindow, getComponentMeta } from '../window';\nimport { CONTEXT_TYPES, POST_MESSAGE, WILDCARD } from '../../constants';\nimport { angular, angular2, glimmer, react, vue, script } from '../../drivers/index';\nimport { info, error, warn, setLogLevel, memoize } from '../../lib';\nimport type { EnvStringRegExp, CssDimensionsType, StringMatcherType, ElementRefType, EnvString } from '../../types';\n\nimport { validate } from './validate';\nimport { defaultContainerTemplate, defaultPrerenderTemplate } from './templates';\nimport { getInternalProps, type UserPropsDefinitionType, type BuiltInPropsDefinitionType, type PropsType, type BuiltInPropsType, type MixedPropDefinitionType } from './props';\n\nconst drivers = { angular, angular2, glimmer, react, vue, script };\n\n/* Component\n ---------\n\n This is the spec for the component. The idea is, when I call zoid.create(), it will create a new instance\n of Component with the blueprint needed to set up ParentComponents and ChildComponents.\n\n This is the one portion of code which is required by -- and shared to -- both the parent and child windows, and\n contains all of the configuration needed for them to set themselves up.\n*/\n\nexport type ComponentOptionsType

= {\n\n tag : string,\n\n url? : EnvString,\n buildUrl? : (BuiltInPropsType & P) => string | ZalgoPromise,\n\n domain? : EnvStringRegExp,\n bridgeUrl? : EnvString,\n bridgeDomain? : EnvString,\n\n props? : UserPropsDefinitionType

,\n\n dimensions? : CssDimensionsType,\n scrolling? : boolean,\n autoResize? : boolean | { width? : boolean, height? : boolean, element? : string },\n listenForResize? : boolean,\n\n defaultLogLevel? : string,\n allowedParentDomains? : StringMatcherType,\n\n version? : string,\n defaultEnv? : string,\n\n contexts? : { iframe? : boolean, popup? : boolean },\n defaultContext? : string,\n\n containerTemplate? : (RenderOptionsType) => HTMLElement,\n prerenderTemplate? : (RenderOptionsType) => HTMLElement,\n\n validate? : (Component

, UserPropsDefinitionType

) => void,\n\n unsafeRenderTo? : boolean\n};\n\nexport type ComponentDriverType = {\n global : () => ?T,\n register : (Component

, T) => mixed\n};\n\nexport class Component

extends BaseComponent

{\n\n name : string\n looseProps : boolean\n\n tag : string\n url : EnvString\n\n domain : EnvStringRegExp\n bridgeUrl : EnvString\n bridgeDomain : EnvString\n\n props : UserPropsDefinitionType

\n builtinProps : BuiltInPropsDefinitionType

\n\n dimensions : CssDimensionsType\n scrolling : boolean\n autoResize : ?(boolean | { width? : boolean, height? : boolean, element? : string })\n listenForResize : ?boolean\n\n defaultLogLevel : string\n allowedParentDomains : StringMatcherType\n\n version : string\n defaultEnv : string\n buildUrl : (BuiltInPropsType & P) => string | ZalgoPromise\n\n contexts : { iframe? : boolean, popup? : boolean }\n defaultContext : string\n\n containerTemplate : (RenderOptionsType) => HTMLElement\n prerenderTemplate : (RenderOptionsType) => HTMLElement\n\n validate : (Component

, (PropsType & P)) => void\n\n unsafeRenderTo : ?boolean\n\n driverCache : { [string] : mixed }\n\n xchild : ?ChildComponent

\n xprops : ?P\n\n constructor(options : ComponentOptionsType

) {\n super();\n validate(options);\n\n // The tag name of the component. Used by some drivers (e.g. angular) to turn the component into an html element,\n // e.g. \n\n this.addProp(options, 'tag');\n\n this.addProp(options, 'defaultLogLevel', 'info');\n\n this.addProp(options, 'allowedParentDomains', WILDCARD);\n\n // initially set log level to default log level configured when creating component\n setLogLevel(this.defaultLogLevel);\n\n if (Component.components[this.tag]) {\n throw new Error(`Can not register multiple components with the same tag`);\n }\n\n // Name of the component, used for logging. Auto-generated from the tag name by default.\n\n this.addProp(options, 'name', this.tag.replace(/-/g, '_'));\n\n // A json based spec describing what kind of props the component accepts. This is used to validate any props before\n // they are passed down to the child.\n\n this.builtinProps = getInternalProps();\n this.props = options.props || {};\n\n if (!options.props) {\n this.looseProps = true;\n }\n\n // The dimensions of the component, e.g. { width: '300px', height: '150px' }\n\n this.addProp(options, 'dimensions');\n this.addProp(options, 'scrolling');\n this.addProp(options, 'listenForResize');\n\n this.addProp(options, 'version', 'latest');\n\n // The default environment we should render to if none is specified in the parent\n\n this.addProp(options, 'defaultEnv');\n\n // A mapping of env->url, used to determine which url to load for which env\n\n this.addProp(options, 'buildUrl');\n\n this.addProp(options, 'url');\n this.addProp(options, 'domain');\n\n this.addProp(options, 'bridgeUrl');\n this.addProp(options, 'bridgeDomain');\n\n this.addProp(options, 'attributes', {});\n\n // A url to use by default to render the component, if not using envs\n\n\n // The allowed contexts. For example { iframe: true, popup: false }\n\n this.addProp(options, 'contexts', { iframe: true, popup: false });\n\n // The default context to render to\n\n this.addProp(options, 'defaultContext');\n\n // Auto Resize option\n\n this.addProp(options, 'autoResize', false);\n\n // Templates and styles for the parent page and the initial rendering of the component\n\n this.addProp(options, 'containerTemplate', defaultContainerTemplate);\n this.addProp(options, 'prerenderTemplate', defaultPrerenderTemplate);\n\n // Validation\n\n this.addProp(options, 'validate');\n\n // Security\n\n this.addProp(options, 'unsafeRenderTo', false);\n\n // A mapping of tag->component so we can reference components by string tag name\n\n Component.components[this.tag] = this;\n\n // Register all of the drivers for instantiating components. The model used is -- there's a standard javascript\n // way of rendering a component, then each other technology (e.g. react) needs to hook into that interface.\n // This makes us a little more pluggable and loosely coupled.\n this.registerDrivers();\n this.registerChild();\n this.listenDelegate();\n }\n\n @memoize\n getPropNames() : Array {\n let props = Object.keys(this.props);\n\n for (let key of Object.keys(this.builtinProps)) {\n if (props.indexOf(key) === -1) {\n props.push(key);\n }\n }\n\n return props;\n }\n\n // $FlowFixMe\n getProp(name : string) : MixedPropDefinitionType

{\n // $FlowFixMe\n return this.props[name] || this.builtinProps[name];\n }\n\n registerDrivers() {\n this.driverCache = {};\n\n for (let driverName of Object.keys(drivers)) {\n if (driverName.indexOf('_') === 0) {\n continue;\n }\n\n let driver = drivers[driverName];\n let glob = driver.global();\n if (glob) {\n this.driver(driverName, glob);\n }\n }\n }\n\n driver(name : string, dep : mixed) : mixed {\n if (!drivers[name]) {\n throw new Error(`Could not find driver for framework: ${ name }`);\n }\n\n if (!this.driverCache[name]) {\n this.driverCache[name] = drivers[name].register(this, dep);\n }\n\n return this.driverCache[name];\n }\n\n registerChild() : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n if (this.isChild()) {\n return new ChildComponent(this);\n }\n });\n }\n\n listenDelegate() {\n on(`${ POST_MESSAGE.ALLOW_DELEGATE }_${ this.name }`, () => {\n return true;\n });\n\n on(`${ POST_MESSAGE.DELEGATE }_${ this.name }`, ({ source, origin, data }) => {\n\n let domain = this.getDomain(null, data.env || this.defaultEnv);\n\n if (!domain) {\n throw new Error(`Could not determine domain to allow remote render`);\n }\n\n if (!matchDomain(domain, origin)) {\n throw new Error(`Can not render from ${ origin } - expected ${ domain.toString() }`);\n }\n\n let delegate = this.delegate(source, data.options);\n\n return {\n overrides: delegate.getOverrides(data.context),\n destroy: () => delegate.destroy()\n };\n });\n }\n\n canRenderTo(win : CrossDomainWindowType) : ZalgoPromise {\n return send(win, `${ POST_MESSAGE.ALLOW_DELEGATE }_${ this.name }`).then(({ data }) => {\n return data;\n }).catch(() => {\n return false;\n });\n }\n\n\n getValidDomain(url : ?string) : ?(string | RegExp) {\n\n if (!url) {\n return;\n }\n\n let domain = getDomainFromUrl(url);\n\n if (typeof this.domain === 'string' && domain === this.domain) {\n return domain;\n }\n\n let domains = this.domain;\n\n if (domains && typeof domains === 'object' && !(domains instanceof RegExp)) {\n for (let env of Object.keys(domains)) {\n\n if (env === 'test') {\n continue;\n }\n\n if (domain === domains[env]) {\n return domain;\n }\n }\n }\n }\n\n\n getDomain(url : ?string, env : string) : ?(string | RegExp) {\n\n let domain = this.getForEnv(this.domain, env);\n\n if (domain) {\n return domain;\n }\n\n domain = this.getValidDomain(url);\n\n if (domain) {\n return domain;\n }\n\n // $FlowFixMe\n let envUrl = this.getForEnv(this.url, env);\n\n if (envUrl) {\n // $FlowFixMe\n return getDomainFromUrl(envUrl);\n }\n\n if (url) {\n return getDomainFromUrl(url);\n }\n }\n\n getBridgeUrl(env : string) : ?string {\n // $FlowFixMe\n return this.getForEnv(this.bridgeUrl, env);\n }\n\n getForEnv(item : (string | RegExp) | { [string] : (string | RegExp) }, env : ?string) : ?(string | RegExp) {\n\n if (!item) {\n return;\n }\n\n if (typeof item === 'string' || item instanceof RegExp) {\n return item;\n }\n\n if (!env) {\n env = this.defaultEnv;\n }\n\n if (!env) {\n return;\n }\n\n if (env && typeof item === 'object' && item[env]) {\n return item[env];\n }\n }\n\n getBridgeDomain(env : string) : ?string {\n\n // $FlowFixMe\n let bridgeDomain = this.getForEnv(this.bridgeDomain, env);\n\n if (bridgeDomain) {\n // $FlowFixMe\n return bridgeDomain;\n }\n\n let bridgeUrl = this.getBridgeUrl(env);\n\n if (bridgeUrl) {\n return getDomainFromUrl(bridgeUrl);\n }\n }\n\n getUrl(env : string, props : BuiltInPropsType & P) : (string | ZalgoPromise) {\n\n // $FlowFixMe\n let url = this.getForEnv(this.url, env);\n\n if (url) {\n // $FlowFixMe\n return url;\n }\n\n if (this.buildUrl) {\n return this.buildUrl(props);\n }\n\n throw new Error(`Unable to get url`);\n }\n\n isZoidComponent() : boolean {\n return isZoidComponentWindow();\n }\n\n isChild() : boolean {\n if (!isZoidComponentWindow()) {\n return false;\n }\n\n const { tag, childDomain } = getComponentMeta();\n\n if (childDomain && childDomain !== getDomain()) {\n return false;\n }\n\n if (tag !== this.tag) {\n return false;\n }\n\n return true;\n }\n\n\n createError(message : string, tag : ?string) : Error {\n return new Error(`[${ tag || this.tag }] ${ message }`);\n }\n\n\n /* Init\n ----\n\n Shortcut to instantiate a component on a parent page, with props\n */\n\n init(props : (PropsType & P), context : ?string, element : ElementRefType) : ParentComponent

{\n return new ParentComponent(this, this.getRenderContext(context, element), { props });\n }\n\n\n delegate(source : CrossDomainWindowType, options : DelegateOptionsType) : DelegateComponent

{\n return new DelegateComponent(this, source, options);\n }\n\n validateRenderContext(context : ?string, element : ?ElementRefType) {\n if (context && !this.contexts[context]) {\n throw new Error(`[${ this.tag }] Can not render to ${ context }`);\n }\n\n if (!element && context === CONTEXT_TYPES.IFRAME) {\n throw new Error(`[${ this.tag }] Context type ${ CONTEXT_TYPES.IFRAME } requires an element selector`);\n }\n }\n\n getDefaultContext() : string {\n if (this.defaultContext) {\n return this.defaultContext;\n } else if (this.contexts[CONTEXT_TYPES.IFRAME]) {\n return CONTEXT_TYPES.IFRAME;\n } else if (this.contexts[CONTEXT_TYPES.POPUP]) {\n return CONTEXT_TYPES.POPUP;\n }\n\n throw new Error(`Can not determine default context`);\n }\n\n getRenderContext(context : ?string, element : ?ElementRefType) : string {\n context = context || this.getDefaultContext();\n this.validateRenderContext(context, element);\n return context;\n }\n\n\n /* Render\n ------\n\n Shortcut to render a parent component\n */\n\n render(props : (PropsType & P), element : ?ElementRefType) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(null, element), { props }).render(element);\n });\n }\n\n renderIframe(props : (PropsType & P), element : ElementRefType) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(CONTEXT_TYPES.IFRAME, element), { props }).render(element);\n });\n }\n\n renderPopup(props : (PropsType & P)) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(CONTEXT_TYPES.POPUP), { props }).render();\n });\n }\n\n renderTo(win : CrossDomainWindowType, props : (PropsType & P), element : ?ElementRefType) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(null, element), { props }).renderTo(win, element);\n });\n }\n\n renderIframeTo(win : CrossDomainWindowType, props : (PropsType & P), element : ElementRefType) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(CONTEXT_TYPES.IFRAME, element), { props }).renderTo(win, element);\n });\n }\n\n renderPopupTo(win : CrossDomainWindowType, props : (PropsType & P)) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(CONTEXT_TYPES.POPUP), { props }).renderTo(win);\n });\n }\n\n prerender(props : (PropsType & P), element : ElementRefType) : { render : ((PropsType & P), ElementRefType) => ZalgoPromise>, renderTo : (CrossDomainWindowType, (PropsType & P), ElementRefType) => ZalgoPromise> } {\n let instance = new ParentComponent(this, this.getRenderContext(null, element), { props });\n instance.prefetch();\n\n return {\n render(innerProps : (PropsType & P), innerElement : ElementRefType) : ZalgoPromise> {\n if (innerProps) {\n instance.updateProps(innerProps);\n }\n\n return instance.render(innerElement);\n },\n\n renderTo(win : CrossDomainWindowType, innerProps : (PropsType & P), innerElement : ElementRefType) : ZalgoPromise> {\n if (innerProps) {\n instance.updateProps(innerProps);\n }\n\n return instance.renderTo(win, innerElement);\n },\n\n get html() : ?ZalgoPromise {\n return instance.html;\n },\n\n set html(value) {\n instance.html = value;\n }\n };\n }\n\n /* Log\n ---\n\n Log an event using the component name\n */\n\n log(event : string, payload : { [ string ] : string } = {}) {\n info(this.name, event, payload);\n }\n\n\n /* Log Warning\n -----------\n\n Log a warning\n */\n\n logWarning(event : string, payload : { [ string ] : string }) {\n warn(this.name, event, payload);\n }\n\n\n /* Log Error\n ---------\n\n Log an error\n */\n\n logError(event : string, payload : { [ string ] : string }) {\n error(this.name, event, payload);\n }\n\n static components : { [string] : Component<*> } = {}\n\n static getByTag(tag : string) : Component {\n return Component.components[tag];\n }\n}\n","/* @flow */\n\nexport * from './component';\nexport * from './parent';\nexport * from './child';\n","/* @flow */\n\nimport { type ZalgoPromise } from 'zalgo-promise/src';\n// eslint-disable-next-line import/no-namespace\nimport * as _postRobot from 'post-robot/src';\n\nimport { Component, type ComponentOptionsType } from './component';\nimport { ParentComponent } from './component/parent';\n// eslint-disable-next-line import/no-namespace\nimport * as _CONSTANTS from './constants';\n\nexport function create

(options : ComponentOptionsType

) : Component

{\n return new Component(options);\n}\n\nexport function getByTag

(tag : string) : Component

{\n return Component.getByTag(tag);\n}\n\nexport { getCurrentScriptDir } from './lib';\n\nexport function destroyAll() : ZalgoPromise {\n return ParentComponent.destroyAll();\n}\nexport let postRobot = _postRobot;\n\nexport * from './error';\n\nexport const CONSTANTS = _CONSTANTS;\n\nexport type ZoidComponent

= Component

;\n","/* @flow */\n\n// eslint-disable-next-line import/no-namespace\nimport * as INTERFACE from './interface';\n\nexport * from './interface';\nexport default INTERFACE;\n","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","/* @flow */\n\nimport { type ZalgoPromise } from 'zalgo-promise/src';\nimport { getParent, isWindowClosed, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONSTANTS } from '../conf';\nimport { noop } from '../lib';\nimport { global } from '../global';\n\n/*\n HERE BE DRAGONS\n\n Warning: this file may look weird. Why save the tunnel window in an Object\n by ID, then look it up later, rather than just using the reference from the closure scope?\n\n The reason is, that ends up meaning the garbage collector can never get its hands\n on a closed window, since our closure has continued access to it -- and post-robot\n has no good way to know whether to clean up the function with the closure scope.\n\n If you're editing this file, be sure to run significant memory / GC tests afterwards.\n*/\n\nglobal.tunnelWindows = global.tunnelWindows || {};\nglobal.tunnelWindowId = 0;\n\nfunction deleteTunnelWindow(id) {\n\n try {\n if (global.tunnelWindows[id]) {\n delete global.tunnelWindows[id].source;\n }\n } catch (err) {\n // pass\n }\n\n delete global.tunnelWindows[id];\n}\n\nfunction cleanTunnelWindows() {\n let tunnelWindows = global.tunnelWindows;\n\n for (let key of Object.keys(tunnelWindows)) {\n let tunnelWindow = tunnelWindows[key];\n\n try {\n noop(tunnelWindow.source);\n } catch (err) {\n deleteTunnelWindow(key);\n continue;\n }\n\n if (isWindowClosed(tunnelWindow.source)) {\n deleteTunnelWindow(key);\n }\n }\n}\n\ntype TunnelWindowDataType = {\n name : string,\n source : CrossDomainWindowType,\n canary : () => void,\n sendMessage : (message : string) => void\n};\n\nfunction addTunnelWindow({ name, source, canary, sendMessage } : TunnelWindowDataType) : number {\n cleanTunnelWindows();\n global.tunnelWindowId += 1;\n global.tunnelWindows[global.tunnelWindowId] = { name, source, canary, sendMessage };\n return global.tunnelWindowId;\n}\n\nfunction getTunnelWindow(id : number) : TunnelWindowDataType {\n return global.tunnelWindows[id];\n}\n\nglobal.openTunnelToParent = function openTunnelToParent({ name, source, canary, sendMessage } : TunnelWindowDataType) : ZalgoPromise<{ source : CrossDomainWindowType, origin : string, data : Object }> {\n\n let parentWindow = getParent(window);\n\n if (!parentWindow) {\n throw new Error(`No parent window found to open tunnel to`);\n }\n\n let id = addTunnelWindow({ name, source, canary, sendMessage });\n\n return global.send(parentWindow, CONSTANTS.POST_MESSAGE_NAMES.OPEN_TUNNEL, {\n\n name,\n\n sendMessage() {\n\n let tunnelWindow = getTunnelWindow(id);\n\n try {\n // IE gets antsy if you try to even reference a closed window\n noop(tunnelWindow && tunnelWindow.source);\n } catch (err) {\n deleteTunnelWindow(id);\n return;\n }\n\n if (!tunnelWindow || !tunnelWindow.source || isWindowClosed(tunnelWindow.source)) {\n return;\n }\n\n try {\n tunnelWindow.canary();\n } catch (err) {\n return;\n }\n\n tunnelWindow.sendMessage.apply(this, arguments);\n }\n\n }, { domain: CONSTANTS.WILDCARD });\n};\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getDomain, isSameDomain, isOpener, isSameTopWindow, matchDomain, getUserAgent, getDomainFromUrl, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONFIG, CONSTANTS } from '../conf';\nimport { global } from '../global';\n\nexport function needsBridgeForBrowser() : boolean {\n\n if (getUserAgent(window).match(/MSIE|trident|edge\\/12|edge\\/13/i)) {\n return true;\n }\n\n if (!CONFIG.ALLOW_POSTMESSAGE_POPUP) {\n return true;\n }\n\n return false;\n}\n\nexport function needsBridgeForWin(win : CrossDomainWindowType) : boolean {\n\n if (!isSameTopWindow(window, win)) {\n return true;\n }\n\n return false;\n}\n\nexport function needsBridgeForDomain(domain : ?string, win : ?CrossDomainWindowType) : boolean {\n\n if (domain) {\n if (getDomain() !== getDomainFromUrl(domain)) {\n return true;\n }\n } else if (win) {\n if (!isSameDomain(win)) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function needsBridge({ win, domain } : { win? : CrossDomainWindowType, domain? : string }) : boolean {\n\n if (!needsBridgeForBrowser()) {\n return false;\n }\n\n if (domain && !needsBridgeForDomain(domain, win)) {\n return false;\n }\n\n if (win && !needsBridgeForWin(win)) {\n return false;\n }\n\n return true;\n}\n\nexport function getBridgeName(domain : string) : string {\n\n domain = domain || getDomainFromUrl(domain);\n\n let sanitizedDomain = domain.replace(/[^a-zA-Z0-9]+/g, '_');\n\n let id = `${ CONSTANTS.BRIDGE_NAME_PREFIX }_${ sanitizedDomain }`;\n\n return id;\n}\n\nexport function isBridge() : boolean {\n return Boolean(window.name && window.name === getBridgeName(getDomain()));\n}\n\nexport let documentBodyReady = new ZalgoPromise(resolve => {\n\n if (window.document && window.document.body) {\n return resolve(window.document.body);\n }\n\n let interval = setInterval(() => {\n if (window.document && window.document.body) {\n clearInterval(interval);\n return resolve(window.document.body);\n }\n }, 10);\n});\n\nglobal.remoteWindows = global.remoteWindows || new WeakMap();\n\nexport function registerRemoteWindow(win : CrossDomainWindowType) {\n global.remoteWindows.set(win, { sendMessagePromise: new ZalgoPromise() });\n}\n\nexport function findRemoteWindow(win : CrossDomainWindowType) : { sendMessagePromise : ZalgoPromise<(remoteWin : CrossDomainWindowType, message : string, remoteDomain : string) => void> } {\n return global.remoteWindows.get(win);\n}\n\nexport function registerRemoteSendMessage(win : CrossDomainWindowType, domain : string, sendMessage : (message : string) => void) {\n\n let remoteWindow = findRemoteWindow(win);\n\n if (!remoteWindow) {\n throw new Error(`Window not found to register sendMessage to`);\n }\n\n let sendMessageWrapper = (remoteWin : CrossDomainWindowType, message : string, remoteDomain : string) => {\n\n if (remoteWin !== win) {\n throw new Error(`Remote window does not match window`);\n }\n\n if (!matchDomain(remoteDomain, domain)) {\n throw new Error(`Remote domain ${ remoteDomain } does not match domain ${ domain }`);\n }\n\n sendMessage(message);\n };\n\n remoteWindow.sendMessagePromise.resolve(sendMessageWrapper);\n remoteWindow.sendMessagePromise = ZalgoPromise.resolve(sendMessageWrapper);\n}\n\nexport function rejectRemoteSendMessage(win : CrossDomainWindowType, err : Error) {\n\n let remoteWindow = findRemoteWindow(win);\n\n if (!remoteWindow) {\n throw new Error(`Window not found on which to reject sendMessage`);\n }\n\n remoteWindow.sendMessagePromise.asyncReject(err);\n}\n\nexport function sendBridgeMessage(win : CrossDomainWindowType, message : string, domain : string) : ZalgoPromise {\n\n let messagingChild = isOpener(window, win);\n let messagingParent = isOpener(win, window);\n\n if (!messagingChild && !messagingParent) {\n throw new Error(`Can only send messages to and from parent and popup windows`);\n }\n\n let remoteWindow = findRemoteWindow(win);\n\n if (!remoteWindow) {\n throw new Error(`Window not found to send message to`);\n }\n\n return remoteWindow.sendMessagePromise.then(sendMessage => {\n return sendMessage(win, message, domain);\n });\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { isSameDomain, getOpener, getFrames, getDomain, getFrameByName, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONSTANTS } from '../conf';\nimport { weakMapMemoize, noop } from '../lib';\nimport { global } from '../global';\n\nimport { needsBridge, registerRemoteWindow, rejectRemoteSendMessage, registerRemoteSendMessage, getBridgeName } from './common';\n\nlet awaitRemoteBridgeForWindow = weakMapMemoize((win : CrossDomainWindowType) : ZalgoPromise => {\n return ZalgoPromise.try(() => {\n for (let frame of getFrames(win)) {\n try {\n // $FlowFixMe\n if (frame && frame !== window && isSameDomain(frame) && frame[CONSTANTS.WINDOW_PROPS.POSTROBOT]) {\n return frame;\n }\n\n } catch (err) {\n continue;\n }\n }\n\n try {\n let frame = getFrameByName(win, getBridgeName(getDomain()));\n\n if (!frame) {\n return;\n }\n\n // $FlowFixMe\n if (isSameDomain(frame) && frame[CONSTANTS.WINDOW_PROPS.POSTROBOT]) {\n return frame;\n }\n\n return new ZalgoPromise(resolve => {\n\n let interval;\n let timeout;\n\n interval = setInterval(() => {\n // $FlowFixMe\n if (frame && isSameDomain(frame) && frame[CONSTANTS.WINDOW_PROPS.POSTROBOT]) {\n clearInterval(interval);\n clearTimeout(timeout);\n return resolve(frame);\n }\n }, 100);\n\n timeout = setTimeout(() => {\n clearInterval(interval);\n return resolve();\n }, 2000);\n });\n\n } catch (err) {\n // pass\n }\n });\n});\n\nexport function openTunnelToOpener() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n const opener = getOpener(window);\n\n if (!opener) {\n return;\n }\n\n if (!needsBridge({ win: opener })) {\n return;\n }\n\n registerRemoteWindow(opener);\n\n return awaitRemoteBridgeForWindow(opener).then(bridge => {\n\n if (!bridge) {\n return rejectRemoteSendMessage(opener, new Error(`Can not register with opener: no bridge found in opener`));\n }\n\n if (!window.name) {\n return rejectRemoteSendMessage(opener, new Error(`Can not register with opener: window does not have a name`));\n }\n\n return bridge[CONSTANTS.WINDOW_PROPS.POSTROBOT].openTunnelToParent({\n\n name: window.name,\n\n source: window,\n\n canary() {\n // pass\n },\n\n sendMessage(message) {\n\n try {\n noop(window);\n } catch (err) {\n return;\n }\n\n if (!window || window.closed) {\n return;\n }\n\n try {\n global.receiveMessage({\n data: message,\n origin: this.origin,\n source: this.source\n });\n } catch (err) {\n ZalgoPromise.reject(err);\n }\n }\n\n }).then(({ source, origin, data }) => {\n\n if (source !== opener) {\n throw new Error(`Source does not match opener`);\n }\n\n registerRemoteSendMessage(source, origin, data.sendMessage);\n\n }).catch(err => {\n\n rejectRemoteSendMessage(opener, err);\n throw err;\n });\n });\n });\n}\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getDomain, getFrameByName, isWindowClosed, getDomainFromUrl, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONFIG, CONSTANTS } from '../conf';\nimport { onChildWindowReady } from '../lib';\nimport { global } from '../global';\n\nimport { getBridgeName, documentBodyReady, registerRemoteSendMessage, registerRemoteWindow } from './common';\n\nglobal.bridges = global.bridges || {};\nglobal.bridgeFrames = global.bridgeFrames || {};\n\nglobal.popupWindowsByWin = global.popupWindowsByWin || new WeakMap();\nglobal.popupWindowsByName = global.popupWindowsByName || {};\n\nfunction listenForRegister(source, domain) {\n global.on(CONSTANTS.POST_MESSAGE_NAMES.OPEN_TUNNEL, { window: source, domain }, ({ origin, data }) => {\n\n if (origin !== domain) {\n throw new Error(`Domain ${ domain } does not match origin ${ origin }`);\n }\n\n if (!data.name) {\n throw new Error(`Register window expected to be passed window name`);\n }\n\n if (!data.sendMessage) {\n throw new Error(`Register window expected to be passed sendMessage method`);\n }\n\n if (!global.popupWindowsByName[data.name]) {\n throw new Error(`Window with name ${ data.name } does not exist, or was not opened by this window`);\n }\n\n if (!global.popupWindowsByName[data.name].domain) {\n throw new Error(`We do not have a registered domain for window ${ data.name }`);\n }\n\n if (global.popupWindowsByName[data.name].domain !== origin) {\n throw new Error(`Message origin ${ origin } does not matched registered window origin ${ global.popupWindowsByName[data.name].domain }`);\n }\n\n registerRemoteSendMessage(global.popupWindowsByName[data.name].win, domain, data.sendMessage);\n\n return {\n sendMessage(message) {\n\n if (!window || window.closed) {\n return;\n }\n\n let winDetails = global.popupWindowsByName[data.name];\n\n if (!winDetails) {\n return;\n }\n\n try {\n global.receiveMessage({\n data: message,\n origin: winDetails.domain,\n source: winDetails.win\n });\n } catch (err) {\n ZalgoPromise.reject(err);\n }\n }\n };\n });\n}\n\nfunction openBridgeFrame(name : string, url : string) : HTMLIFrameElement {\n\n let iframe = document.createElement(`iframe`);\n\n iframe.setAttribute(`name`, name);\n iframe.setAttribute(`id`, name);\n\n iframe.setAttribute(`style`, `display: none; margin: 0; padding: 0; border: 0px none; overflow: hidden;`);\n iframe.setAttribute(`frameborder`, `0`);\n iframe.setAttribute(`border`, `0`);\n iframe.setAttribute(`scrolling`, `no`);\n iframe.setAttribute(`allowTransparency`, `true`);\n\n iframe.setAttribute(`tabindex`, `-1`);\n iframe.setAttribute(`hidden`, `true`);\n iframe.setAttribute(`title`, ``);\n iframe.setAttribute(`role`, `presentation`);\n\n iframe.src = url;\n\n return iframe;\n}\n\nexport function hasBridge(url : string, domain : string) : boolean {\n domain = domain || getDomainFromUrl(url);\n return Boolean(global.bridges[domain]);\n}\n\nexport function openBridge(url : string, domain : string) : ZalgoPromise {\n\n domain = domain || getDomainFromUrl(url);\n\n if (global.bridges[domain]) {\n return global.bridges[domain];\n }\n\n global.bridges[domain] = ZalgoPromise.try(() => {\n\n if (getDomain() === domain) {\n throw new Error(`Can not open bridge on the same domain as current domain: ${ domain }`);\n }\n\n let name = getBridgeName(domain);\n let frame = getFrameByName(window, name);\n\n if (frame) {\n throw new Error(`Frame with name ${ name } already exists on page`);\n }\n\n let iframe = openBridgeFrame(name, url);\n global.bridgeFrames[domain] = iframe;\n\n return documentBodyReady.then(body => {\n\n body.appendChild(iframe);\n\n let bridge = iframe.contentWindow;\n\n listenForRegister(bridge, domain);\n\n return new ZalgoPromise((resolve, reject) => {\n\n iframe.onload = resolve;\n iframe.onerror = reject;\n\n }).then(() => {\n\n return onChildWindowReady(bridge, CONFIG.BRIDGE_TIMEOUT, `Bridge ${ url }`);\n\n }).then(() => {\n\n return bridge;\n });\n });\n });\n\n return global.bridges[domain];\n}\n\nlet windowOpen = window.open;\n\nwindow.open = function windowOpenWrapper(url : string, name : string, options : string, last : mixed) : mixed {\n\n let domain = url;\n\n if (url && url.indexOf(CONSTANTS.MOCK_PROTOCOL) === 0) {\n [ domain, url ] = url.split('|');\n }\n\n if (domain) {\n domain = getDomainFromUrl(domain);\n }\n\n let win = windowOpen.call(this, url, name, options, last);\n\n if (!win) {\n return win;\n }\n\n if (url) {\n registerRemoteWindow(win);\n }\n\n for (let winName of Object.keys(global.popupWindowsByName)) {\n if (isWindowClosed(global.popupWindowsByName[winName].win)) {\n delete global.popupWindowsByName[winName];\n }\n }\n\n if (name && win) {\n let winOptions = global.popupWindowsByWin.get(win) ||\n global.popupWindowsByName[name] || {};\n\n winOptions.name = winOptions.name || name;\n winOptions.win = winOptions.win || win;\n winOptions.domain = winOptions.domain || domain;\n\n global.popupWindowsByWin.set(win, winOptions);\n global.popupWindowsByName[name] = winOptions;\n }\n\n return win;\n};\n\nexport function linkUrl(win : CrossDomainWindowType, url : string) {\n\n let winOptions = global.popupWindowsByWin.get(win);\n\n if (winOptions) {\n winOptions.domain = getDomainFromUrl(url);\n registerRemoteWindow(win);\n }\n}\n\nexport function destroyBridges() {\n for (let domain of Object.keys(global.bridgeFrames)) {\n let frame = global.bridgeFrames[domain];\n if (frame.parentNode) {\n frame.parentNode.removeChild(frame);\n }\n }\n global.bridgeFrames = {};\n global.bridges = {};\n}\n","/* @flow */\n\n// eslint-disable-next-line import/no-unassigned-import\nimport './bridge';\n\nexport * from './child';\nexport * from './common';\nexport * from './parent';\n","/* @flow */\n\nexport function PopupOpenError(message : string) {\n this.message = message;\n}\n\nPopupOpenError.prototype = Object.create(Error.prototype);\n\nexport function IntegrationError(message : string) {\n this.message = message;\n}\n\nIntegrationError.prototype = Object.create(Error.prototype);\n\nexport function RenderError(message : string) {\n this.message = message;\n}\n\nRenderError.prototype = Object.create(Error.prototype);\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nexport type Braintree = {|\n client : {\n create : Function\n },\n paypalCheckout : {\n create : Function\n }\n|};\n\nexport type BraintreePayPalClient = {|\n createPayment : Function,\n tokenizePayment : Function\n|};\n\nexport function awaitBraintreeClient(braintree : Braintree, auth : string | ZalgoPromise) : ZalgoPromise {\n return ZalgoPromise.resolve(auth).then(authorization => {\n return braintree.client.create({ authorization });\n }).then(client => {\n return braintree.paypalCheckout.create({ client });\n });\n}\n\nconst SUPPORTED_REST_FIELDS = {\n intent: 1,\n transactions: [\n {\n amount: {\n total: 1,\n currency: 1\n }\n }\n ],\n payer: {\n external_selected_funding_instrument_type: 1,\n shipping_address: {\n line1: 1,\n line2: 1,\n city: 1,\n state: 1,\n postal_code: 1,\n country_code: 1,\n phone: 1,\n recipient_name: 1\n }\n },\n application_context: {\n brand_name: 1,\n shipping_preference: 1,\n landing_page: 1\n }\n};\n\nfunction validate(obj, supported, name) {\n\n const supportedKeys = Object.keys(supported);\n\n for (const key of Object.keys(obj)) {\n\n if (supportedKeys.indexOf(key) === -1) {\n throw new Error(`Unsupported REST key for Braintree: ${ name }.${ key }`);\n }\n\n if (typeof obj[key] === 'object') {\n validate(obj[key], supported[key], `${ name }.${ key }`);\n }\n }\n}\n\nexport function mapPaymentToBraintree(payment : Object) : Object {\n validate(payment, SUPPORTED_REST_FIELDS, 'payment');\n\n const btPayment = {};\n\n btPayment.intent = payment.intent || 'sale';\n btPayment.flow = 'checkout';\n btPayment.amount = payment.transactions[0].amount.total;\n btPayment.currency = payment.transactions[0].amount.currency;\n\n if (payment.payer) {\n if (payment.payer.external_selected_funding_instrument_type === 'CREDIT') {\n btPayment.offerCredit = true;\n }\n\n if (payment.payer.shipping_address) {\n btPayment.shippingAddressOverride = {\n line1: payment.payer.shipping_address.line1,\n line2: payment.payer.shipping_address.line2,\n city: payment.payer.shipping_address.city,\n state: payment.payer.shipping_address.state,\n postalCode: payment.payer.shipping_address.postal_code,\n countryCode: payment.payer.shipping_address.country_code,\n phone: payment.payer.shipping_address.phone,\n recipientName: payment.payer.shipping_address.recipient_name\n };\n }\n }\n\n if (payment.application_context) {\n btPayment.displayName = payment.application_context.brand_name;\n btPayment.landingPageType = payment.application_context.landing_page;\n\n if (payment.application_context) {\n if (payment.application_context.shipping_preference === 'NO_SHIPPING') {\n btPayment.enableShippingAddress = false;\n } else if (payment.application_context.shipping_preference === 'GET_FROM_FILE') {\n btPayment.enableShippingAddress = true;\n btPayment.shippingAddressEditable = true;\n } else if (payment.application_context.shipping_preference === 'SET_PROVIDED_ADDRESS') {\n btPayment.enableShippingAddress = true;\n btPayment.shippingAddressEditable = false;\n }\n }\n }\n\n return btPayment;\n}\n","/* @flow */\n\nexport * from './checkout';\nexport * from './braintree';\n// export * from './popupBridge';\n","/* @flow */\n\nexport * from './script';\nexport * from './react';\nexport * from './vue';\nexport * from './angular';\nexport * from './ember';\nexport * from './glimmer';\nexport * from './angular2';\n","/* @flow */\n/** @jsx jsxDom */\n\nconst checkoutComponentStyle = `\n\n body {\n width: 100%;\n height: 100%;\n overflow: hidden;\n position: fixed;\n top: 0;\n left: 0;\n margin: 0;\n }\n\n .spinner {\n height: 100%;\n width: 100%;\n position: absolute;\n z-index: 10\n }\n\n .spinner .spinWrap {\n width: 200px;\n height: 100px;\n position: absolute;\n top: 50%;\n left: 50%;\n margin-left: -100px;\n margin-top: -50px\n }\n\n .spinner .loader,\n .spinner .spinnerImage {\n height: 100px;\n width: 100px;\n position: absolute;\n top: 0;\n left: 50%;\n opacity: 1;\n filter: alpha(opacity=100)\n }\n\n .spinner .spinnerImage {\n margin: 28px 0 0 -25px;\n background: url(https://www.paypalobjects.com/images/checkout/hermes/icon_ot_spin_lock_skinny.png) no-repeat\n }\n\n .spinner .loader {\n margin: 0 0 0 -55px;\n background-color: transparent;\n -webkit-animation: rotation .7s infinite linear;\n -moz-animation: rotation .7s infinite linear;\n -o-animation: rotation .7s infinite linear;\n animation: rotation .7s infinite linear;\n border-left: 5px solid #cbcbca;\n border-right: 5px solid #cbcbca;\n border-bottom: 5px solid #cbcbca;\n border-top: 5px solid #2380be;\n border-radius: 100%\n }\n\n @-webkit-keyframes rotation {\n from {\n -webkit-transform: rotate(0deg)\n }\n to {\n -webkit-transform: rotate(359deg)\n }\n }\n @-moz-keyframes rotation {\n from {\n -moz-transform: rotate(0deg)\n }\n to {\n -moz-transform: rotate(359deg)\n }\n }\n @-o-keyframes rotation {\n from {\n -o-transform: rotate(0deg)\n }\n to {\n -o-transform: rotate(359deg)\n }\n }\n @keyframes rotation {\n from {\n transform: rotate(0deg)\n }\n to {\n transform: rotate(359deg)\n }\n }\n`;\n\nexport function componentTemplate({ jsxDom } : { jsxDom : Function }) : HTMLElement {\n\n return (\n \n \n PayPal\n \n \n \n

\n \n\n
\n

\n

\n

\n
\n \n \n );\n}\n","/* @flow */\n\nimport { CHECKOUT_OVERLAY_COLOR } from '../../../constants';\n\nexport function getContainerStyle({ id, tag, CONTEXT, CLASS, ANIMATION } : { id : string, tag : string, CONTEXT : Object, CLASS : Object, ANIMATION : Object }) : string {\n return `\n #${ id } {\n position: absolute;\n z-index: 2147483647;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n\n -webkit-transform: translate3d(0, 0, 0);\n -moz-transform: translate3d(0, 0, 0);\n -ms-transform: translate3d(0, 0, 0);\n -o-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.BLACK } {\n background-color: black;\n background-color: rgba(0, 0, 0, 0.75);\n\n background: -webkit-radial-gradient(50% 50%, ellipse closest-corner, rgba(0,0,0,1) 1%, rgba(0,0,0,0.75) 100%);\n background: -moz-radial-gradient(50% 50%, ellipse closest-corner, rgba(0,0,0,1) 1%, rgba(0,0,0,0.75) 100%);\n background: -ms-radial-gradient(50% 50%, ellipse closest-corner, rgba(0,0,0,1) 1%, rgba(0,0,0,0.75) 100%);\n background: radial-gradient(50% 50%, ellipse closest-corner, rgba(0,0,0,1) 1%, rgba(0,0,0,0.75) 100%);\n\n color: #fff;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.WHITE } {\n background-color: white;\n background-color: rgba(255, 255, 255, 0.4);\n\n background: -webkit-radial-gradient(50% 50%, ellipse closest-corner, rgba(255, 255, 255,1) 1%, rgba(255, 255, 255,0.4) 100%);\n background: -moz-radial-gradient(50% 50%, ellipse closest-corner, rgba(255, 255, 255,1) 1%, rgba(255, 255, 255,0.4) 100%);\n background: -ms-radial-gradient(50% 50%, ellipse closest-corner, rgba(255, 255, 255,1) 1%, rgba(255, 255, 255,0.4) 100%);\n background: radial-gradient(50% 50%, ellipse closest-corner, rgba(255, 255, 255,1) 1%, rgba(255, 255, 255,0.4) 100%);\n\n color: #333;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.BLACK } a {\n color: #fff;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.WHITE } a {\n color: #333;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.BLACK } .paypal-checkout-close:before,\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.BLACK } .paypal-checkout-close:after {\n background-color: #fff;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.WHITE } .paypal-checkout-close:before,\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.WHITE } .paypal-checkout-close:after {\n background-color: #111;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.POPUP } {\n cursor: pointer;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.POPUP } {\n cursor: pointer;\n }\n\n #${ id } a {\n text-decoration: none;\n }\n\n #${ id } .paypal-checkout-modal {\n font-family: \"HelveticaNeue\", \"HelveticaNeue-Light\", \"Helvetica Neue Light\", helvetica, arial, sans-serif;\n font-size: 14px;\n text-align: center;\n\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n -ms-box-sizing: border-box;\n box-sizing: border-box;\n max-width: 350px;\n top: 50%;\n left: 50%;\n position: absolute;\n transform: translateX(-50%) translateY(-50%);\n -webkit-transform: translateX(-50%) translateY(-50%);\n -moz-transform: translateX(-50%) translateY(-50%);\n -o-transform: translateX(-50%) translateY(-50%);\n -ms-transform: translateX(-50%) translateY(-50%);\n cursor: pointer;\n text-align: center;\n }\n\n #${ id }.${ tag }-loading .paypal-checkout-message, #${ id }.${ tag }-loading .paypal-checkout-continue {\n display: none;\n }\n\n .paypal-checkout-loader {\n display: none;\n }\n\n #${ id }.${ tag }-loading .paypal-checkout-loader {\n display: block;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-logo {\n cursor: pointer;\n margin-bottom: 30px;\n display: inline-block;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-logo img {\n height: 36px;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-logo img.paypal-checkout-logo-pp {\n margin-right: 10px;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-message {\n font-size: 15px;\n line-height: 1.5;\n padding: 10px 0;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-message, #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-continue {\n display: none;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-continue {\n font-size: 15px;\n line-height: 1.35;\n padding: 10px 0;\n font-weight: bold;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-continue a {\n border-bottom: 1px solid currentColor;\n }\n\n #${ id } .paypal-checkout-close {\n position: absolute;\n right: 16px;\n top: 16px;\n width: 16px;\n height: 16px;\n opacity: 0.6;\n }\n\n #${ id }.${ tag }-loading .paypal-checkout-close {\n display: none;\n }\n\n #${ id } .paypal-checkout-close:hover {\n opacity: 1;\n }\n\n #${ id } .paypal-checkout-close:before, .paypal-checkout-close:after {\n position: absolute;\n left: 8px;\n content: ' ';\n height: 16px;\n width: 2px;\n }\n\n #${ id } .paypal-checkout-close:before {\n transform: rotate(45deg);\n -webkit-transform: rotate(45deg);\n -moz-transform: rotate(45deg);\n -o-transform: rotate(45deg);\n -ms-transform: rotate(45deg);\n }\n\n #${ id } .paypal-checkout-close:after {\n transform: rotate(-45deg);\n -webkit-transform: rotate(-45deg);\n -moz-transform: rotate(-45deg);\n -o-transform: rotate(-45deg);\n -ms-transform: rotate(-45deg);\n }\n\n #${ id } .paypal-checkout-iframe-container {\n display: none;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container,\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container > .${ CLASS.OUTLET },\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container > .${ CLASS.OUTLET } > iframe {\n max-height: calc(95vh - 60px);\n max-width: 95vw;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container {\n\n display: block;\n\n position: absolute;\n\n top: 50%;\n left: 50%;\n\n min-width: 450px;\n\n transform: translate(-50%, -50%);\n -webkit-transform: translate(-50%, -50%);\n -moz-transform: translate(-50%, -50%);\n -o-transform: translate(-50%, -50%);\n -ms-transform: translate(-50%, -50%);\n\n transform: translate3d(-50%, -50%, 0);\n -webkit-transform: translate3d(-50%, -50%, 0);\n -moz-transform: translate3d(-50%, -50%, 0);\n -o-transform: translate3d(-50%, -50%, 0);\n -ms-transform: translate3d(-50%, -50%, 0);\n\n border-radius: 10px;\n overflow: hidden;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } {\n\n position: relative;\n\n -webkit-transition: all 0.3s ease;\n -moz-transition: all 0.3s ease;\n -ms-transition: all 0.3s ease;\n -o-transition: all 0.3 ease;\n transition: all 0.3s ease;\n\n -webkit-animation-duration: 0.3s;\n animation-duration: 0.3s;\n -webkit-animation-fill-mode: both;\n animation-fill-mode: both;\n\n min-width: 450px;\n max-width: 450px;\n width: 450px;\n height: 535px;\n\n background-color: white;\n\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe {\n position: absolute;\n top: 0;\n left: 0;\n transition: opacity .4s ease-in-out;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe.${ CLASS.COMPONENT_FRAME } {\n z-index: 100;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe.${ CLASS.PRERENDER_FRAME } {\n z-index: 200;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe.${ CLASS.VISIBLE } {\n opacity: 1;\n z-index: 200;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe.${ CLASS.INVISIBLE } {\n opacity: 0;\n z-index: 100;\n }\n\n @media screen and (-ms-high-contrast: active) {\n #${ id } .paypal-checkout-close {\n opacity: 1;\n }\n\n #${ id } .paypal-checkout-close:before , .paypal-checkout-close:after {\n background-color: currentColor;\n }\n }\n\n @media screen and (max-width: 470px) {\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container,\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } {\n min-width: 100%;\n min-width: calc(100% - 20px);\n min-width: -webkit-calc(100% - 20px);\n min-width: -moz-calc(100% - 20px);\n min-width: -o-calc(100% - 20px);\n min-width: -ms-calc(100% - 20px);\n\n max-width: 100%;\n max-width: calc(100% - 20px);\n max-width: -webkit-calc(100% - 20px);\n max-width: -moz-calc(100% - 20px);\n max-width: -o-calc(100% - 20px);\n max-width: -ms-calc(100% - 20px);\n }\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } iframe {\n width: 1px;\n min-width: 100%;\n height: 100%;\n }\n\n @-webkit-keyframes ${ ANIMATION.SHOW_COMPONENT } {\n from {\n opacity: 0;\n transform: scale3d(.3, .3, .3);\n -webkit-transform: scale3d(.3, .3, .3);\n }\n\n to {\n opacity: 1;\n transform: scale3d(1, 1, 1);\n -webkit-transform: scale3d(1, 1, 1);\n }\n }\n\n @keyframes ${ ANIMATION.SHOW_COMPONENT } {\n from {\n opacity: 0;\n transform: scale3d(.3, .3, .3);\n -webkit-transform: scale3d(.3, .3, .3);\n }\n\n to {\n opacity: 1;\n transform: scale3d(1, 1, 1);\n -webkit-transform: scale3d(1, 1, 1);\n }\n }\n\n @-webkit-keyframes ${ ANIMATION.HIDE_COMPONENT } {\n from {\n transform: scale3d(1, 1, 1);\n -webkit-transform: scale3d(1, 1, 1);\n }\n\n to {\n opacity: 0;\n transform: scale3d(.3, .3, .3);\n -webkit-transform: scale3d(.3, .3, .3);\n }\n }\n\n @keyframes ${ ANIMATION.HIDE_COMPONENT } {\n from {\n transform: scale3d(1, 1, 1);\n -webkit-transform: scale3d(1, 1, 1);\n }\n\n to {\n opacity: 0;\n transform: scale3d(.3, .3, .3);\n -webkit-transform: scale3d(.3, .3, .3);\n }\n }\n\n .paypal-spinner {\n height: 30px;\n width: 30px;\n display: inline-block;\n box-sizing: content-box;\n opacity: 1;\n filter: alpha(opacity=100);\n -webkit-animation: rotation .7s infinite linear;\n -moz-animation: rotation .7s infinite linear;\n -o-animation: rotation .7s infinite linear;\n animation: rotation .7s infinite linear;\n border-left: 8px solid rgba(0, 0, 0, .2);\n border-right: 8px solid rgba(0, 0, 0, .2);\n border-bottom: 8px solid rgba(0, 0, 0, .2);\n border-top: 8px solid #fff;\n border-radius: 100%\n }\n\n @-webkit-keyframes rotation {\n from {\n -webkit-transform: rotate(0deg)\n }\n to {\n -webkit-transform: rotate(359deg)\n }\n }\n @-moz-keyframes rotation {\n from {\n -moz-transform: rotate(0deg)\n }\n to {\n -moz-transform: rotate(359deg)\n }\n }\n @-o-keyframes rotation {\n from {\n -o-transform: rotate(0deg)\n }\n to {\n -o-transform: rotate(359deg)\n }\n }\n @keyframes rotation {\n from {\n transform: rotate(0deg)\n }\n to {\n transform: rotate(359deg)\n }\n }\n `;\n}\n","/* @flow */\n\nexport function getSandboxStyle({ id, ANIMATION } : { id : string, ANIMATION : Object }) : string {\n return `\n #${ id }.paypal-checkout-sandbox {\n display: block;\n position: fixed;\n top: 0;\n left: 0;\n\n width: 100%;\n height: 100%;\n width: 100vw;\n height: 100vh;\n max-width: 100%;\n max-height: 100%;\n min-width: 100%;\n min-height: 100%;\n\n z-index: 2147483647;\n\n -webkit-animation-duration: 1s;\n animation-duration: 1s;\n\n animation-fill-mode:forwards;\n animation-iteration-count: 1;\n\n -webkit-animation-fill-mode:forwards;\n -webkit-animation-iteration-count: 1;\n }\n\n #${ id }.paypal-checkout-sandbox .paypal-checkout-sandbox-iframe {\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n }\n\n @-webkit-keyframes ${ ANIMATION.SHOW_CONTAINER } {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n }\n\n @keyframes ${ ANIMATION.SHOW_CONTAINER } {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n }\n\n @-webkit-keyframes ${ ANIMATION.HIDE_CONTAINER } {\n from {\n opacity: 1;\n }\n\n 50% {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n }\n\n @keyframes ${ ANIMATION.HIDE_CONTAINER } {\n from {\n opacity: 1;\n }\n\n 50% {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n }\n `;\n}\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { base64encode } from 'belter/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { fundingLogos } from '../../resources';\nimport { BUTTON_LOGO_COLOR, CHECKOUT_OVERLAY_COLOR } from '../../constants';\nimport { isIos } from '../../lib';\n\nimport { containerContent } from './containerContent';\nimport { getContainerStyle } from './containerStyle';\nimport { getSandboxStyle } from './sandboxStyle';\n\nconst LOGO_COLOR = {\n [ CHECKOUT_OVERLAY_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ CHECKOUT_OVERLAY_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n};\n\nexport {\n getContainerStyle,\n getSandboxStyle\n};\n\n// eslint-disable-next-line flowtype/require-exact-type\nexport type ContainerTemplateOptions = {\n id : string,\n props : Object,\n CLASS : Object,\n ANIMATION : Object,\n CONTEXT : Object,\n EVENT : Object,\n dimensions : {\n width : number,\n height : number\n },\n actions : Object,\n tag : string,\n context : string,\n outlet : HTMLElement,\n on : Function,\n jsxDom : Function\n};\n\nexport function containerTemplate({ id, props, CLASS, ANIMATION, CONTEXT, EVENT, on, tag, context, actions, outlet, jsxDom } : ContainerTemplateOptions) : HTMLElement {\n\n const [ lang, country ] = props.locale.split('_');\n\n const content = containerContent[country][lang];\n\n function close(event) {\n event.preventDefault();\n event.stopPropagation();\n actions.close();\n }\n\n function focus(event) {\n event.preventDefault();\n event.stopPropagation();\n\n if (isIos()) {\n // eslint-disable-next-line no-alert\n window.alert('Please switch tabs to reactivate the PayPal window');\n } else {\n ZalgoPromise.try(actions.focus).catch(actions.close);\n }\n }\n\n const style = props.style || {};\n const overlayColor = style.overlayColor || CHECKOUT_OVERLAY_COLOR.BLACK;\n const logoColor = LOGO_COLOR[overlayColor];\n\n const ppLogo = (typeof fundingLogos.pp === 'function')\n ? fundingLogos.pp({ logoColor })\n : fundingLogos.pp[logoColor];\n\n const paypalLogo = (typeof fundingLogos.paypal === 'function')\n ? fundingLogos.paypal({ logoColor })\n : fundingLogos.paypal[logoColor];\n\n const el = (\n
\n \n
\n
\n \n \n
\n
\n {content.windowMessage}\n
\n
\n
\n
\n
\n
\n\n
\n {outlet}\n
\n\n \n
\n );\n\n const container = (\n \n \n { el }\n \n \n );\n\n on(EVENT.CLOSE, () => {\n el.className += ` ${ tag }-loading`;\n });\n\n return (\n
\n \n\n \n
\n );\n}\n","/* @flow */\n\nexport * from './componentTemplate';\nexport * from './containerTemplate';\n","/* @flow */\n\nimport { config } from '../config';\nimport { FUNDING, PAYMENT_TYPE } from '../constants';\n\nexport function determineParameterFromToken(token : string) : string {\n return (token && token.indexOf('BA-') === 0) ? 'ba_token' : 'token';\n}\n\nexport function getPaymentType(payment : string) : string {\n if (payment.indexOf('BA-') === 0) {\n return PAYMENT_TYPE.BA_TOKEN;\n } else if (payment.indexOf('PAY-') === 0 || payment.indexOf('PAYID-') === 0) {\n return PAYMENT_TYPE.PAY_ID;\n } else if (payment.indexOf('EC-') === 0) {\n return PAYMENT_TYPE.EC_TOKEN;\n }\n\n return PAYMENT_TYPE.EC_TOKEN;\n}\n\nexport function determineUrl(env : string, fundingSource : ?string, payment : string) : string {\n\n const paymentType = getPaymentType(payment);\n\n if (paymentType === PAYMENT_TYPE.BA_TOKEN) {\n return config.billingUrls[env];\n }\n\n if (fundingSource === FUNDING.CARD || fundingSource === FUNDING.ELV) {\n return config.guestUrls[env];\n }\n\n if (fundingSource === FUNDING.IDEAL || fundingSource === FUNDING.BANCONTACT || fundingSource === FUNDING.GIROPAY ||\n fundingSource === FUNDING.SOFORT || fundingSource === FUNDING.EPS || fundingSource === FUNDING.MYBANK ||\n fundingSource === FUNDING.P24 || fundingSource === FUNDING.PAYU || fundingSource === FUNDING.VERKKOPANKKI ||\n fundingSource === FUNDING.BLIK || fundingSource === FUNDING.TRUSTLY || fundingSource === FUNDING.MAXIMA ||\n fundingSource === FUNDING.BOLETO || fundingSource === FUNDING.OXXO) {\n return config.altpayUrls[env];\n }\n\n return config.checkoutUrls[env];\n}\n","/* @flow */\n/* eslint max-lines: off */\n\nexport const containerContent = {\n 'AT': {\n 'de': {\n 'windowMessage': 'Sie sehen das sichere Browserfenster von PayPal nicht? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ZW': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ZM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ZA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'YT': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'YE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'WS': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'WF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'VU': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'VG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'VE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'VC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'VA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'UY': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'UG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TV': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'TT': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'TO': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'TN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'TM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'TD': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'TC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'SZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SV': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'ST': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SR': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'SO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'SM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SL': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SH': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'SB': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'SA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'RW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'RS': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'RE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'QA': {\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PY': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'PW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'PN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'PM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'PF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'PA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'OM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'NU': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'NR': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'NP': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'NI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'NG': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'NE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'NC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MV': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'MU': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MT': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MS': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'MR': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MQ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MN': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'ML': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'MK': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MH': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'MG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ME': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MD': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MC': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'MA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'LS': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'LK': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'LI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'LC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'LA': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'KZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'KY': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'KW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'KN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'KM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'KI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'KH': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'KG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'KE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'JO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'JM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'IS': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'HR': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'HN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'GY': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'GW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GT': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'GP': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'GM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GL': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'da': {\n 'windowMessage': 'Kan du ikke se PayPals sikre browser? Vi hj\\u00E6lper dig med at genstarte vinduet, s\\u00E5 du kan betale.',\n 'continue': 'Forts\\u00E6t'\n }\n },\n 'GI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GD': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'GA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'FO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'da': {\n 'windowMessage': 'Kan du ikke se PayPals sikre browser? Vi hj\\u00E6lper dig med at genstarte vinduet, s\\u00E5 du kan betale.',\n 'continue': 'Forts\\u00E6t'\n }\n },\n 'FM': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'FK': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'FJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'ET': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ER': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'EG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'EC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'DZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'DO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'DM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'DJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'CY': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CV': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CR': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'CO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'CM': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'CL': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'CK': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CI': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'CG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CD': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'BZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'BY': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BT': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'BS': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'BO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'BN': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'BM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'BJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'BI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'BH': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'BG': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'BB': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'BA': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'AO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'AM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AL': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'AG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'AE': {\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AD': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n }\n },\n 'GB': {\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 PayPal\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\'ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AR': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'US': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Click to Continue'\n }\n },\n 'VN': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment. ',\n 'continue': 'Continue'\n }\n },\n 'UA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TW': {\n 'zh': {\n 'windowMessage': '\\u770B\\u4E0D\\u5230\\u5B89\\u5168\\u9023\\u7DDA\\u7684 PayPal \\u700F\\u89BD\\u5668\\uFF1F\\u6211\\u5011\\u5C07\\u6703\\u91CD\\u65B0\\u555F\\u52D5\\u8996\\u7A97\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002\\u00A0 ',\n 'continue': '\\u7E7C\\u7E8C'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TR': {\n 'tr': {\n 'windowMessage': 'G\\u00FCvenli PayPal taray\\u0131c\\u0131s\\u0131n\\u0131 g\\u00F6rm\\u00FCyor musunuz? Al\\u0131\\u015Fveri\\u015Finizi tamamlamak i\\u00E7in pencereyi yeniden ba\\u015Flatman\\u0131za yard\\u0131mc\\u0131 olaca\\u011F\\u0131z.\\u00A0 ',\n 'continue': 'Devam'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TH': {\n 'th': {\n 'windowMessage': '\\u0E16\\u0E49\\u0E32\\u0E04\\u0E38\\u0E13\\u0E44\\u0E21\\u0E48\\u0E40\\u0E2B\\u0E47\\u0E19\\u0E40\\u0E1A\\u0E23\\u0E32\\u0E27\\u0E4C\\u0E40\\u0E0B\\u0E2D\\u0E23\\u0E4C\\u0E17\\u0E35\\u0E48\\u0E21\\u0E35\\u0E23\\u0E30\\u0E1A\\u0E1A\\u0E04\\u0E27\\u0E32\\u0E21\\u0E1B\\u0E25\\u0E2D\\u0E14\\u0E20\\u0E31\\u0E22\\u0E02\\u0E2D\\u0E07 PayPal \\u0E40\\u0E23\\u0E32\\u0E08\\u0E30\\u0E0A\\u0E48\\u0E27\\u0E22\\u0E04\\u0E38\\u0E13\\u0E40\\u0E1B\\u0E34\\u0E14\\u0E2B\\u0E19\\u0E49\\u0E32\\u0E15\\u0E48\\u0E32\\u0E07\\u0E2D\\u0E35\\u0E01\\u0E04\\u0E23\\u0E31\\u0E49\\u0E07\\u0E40\\u0E1E\\u0E37\\u0E48\\u0E2D\\u0E0A\\u0E33\\u0E23\\u0E30\\u0E40\\u0E07\\u0E34\\u0E19\\u0E43\\u0E2B\\u0E49\\u0E40\\u0E23\\u0E35\\u0E22\\u0E1A\\u0E23\\u0E49\\u0E2D\\u0E22 ',\n 'continue': '\\u0E14\\u0E33\\u0E40\\u0E19\\u0E34\\u0E19\\u0E01\\u0E32\\u0E23\\u0E15\\u0E48\\u0E2D'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SK': {\n 'sk': {\n 'windowMessage': 'Nezobrazuje sa v\\u00e1m zabezpe\\u010den\\u00fd prehliada\\u010d PayPal? Pom\\u00f4\\u017eeme v\\u00e1m znova otvori\\u0165 okno, aby ste mohli n\\u00e1kup dokon\\u010di\\u0165.\\u00A0 ',\n 'continue': 'Pokra\\u010dova\\u0165'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SG': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SE': {\n 'sv': {\n 'windowMessage': 'Ser du inte den s\\u00E4kra PayPal-webbl\\u00E4saren? Vi hj\\u00E4lper dig att starta om f\\u00F6nstret f\\u00F6r att slutf\\u00F6ra ditt k\\u00F6p. ',\n 'continue': 'Forts\\u00E4tt'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'RU': {\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'RO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PT': {\n 'pt': {\n 'windowMessage': 'N\\u00E3o v\\u00EA a indica\\u00E7\\u00E3o de sess\\u00E3o segura PayPal no browser? Vamos ajudar a reabrir a janela para que possa concluir a sua compra.',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PL': {\n 'pl': {\n 'windowMessage': 'Nie widzisz bezpiecznej przegl\\u0105darki PayPal? Pomo\\u017Cemy Ci ponownie uruchomi\\u0107 to okno w celu dokonania zakupu.\\u00A0 ',\n 'continue': 'Kontynuuj'\n },\n 'en': {\n 'windowMessage': 'You don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PH': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre paiement.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Le ayudaremos a abrir de nuevo la ventana para completar su pago.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NO': {\n 'no': {\n 'windowMessage': 'Ser du ikke den sikre PayPal-nettleseren? Vi hjelper deg med \\u00E5 starte vinduet p\\u00E5 nytt s\\u00E5 du kan fullf\\u00F8re kj\\u00F8pet.\\u00A0 ',\n 'continue': 'Fortsett'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NL': {\n 'nl': {\n 'windowMessage': 'Ziet u geen beveiligde PayPal-browser? We helpen u het venster opnieuw te openen om uw aankoop te voltooien.\\u00A0 ',\n 'continue': 'Doorgaan'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MY': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MX': {\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'LV': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'LU': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'de': {\n 'windowMessage': 'Das PayPal-Fenster wird nicht angezeigt? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n }\n },\n 'LT': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'KR': {\n 'ko': {\n 'windowMessage': '\\uBCF4\\uC548 PayPal \\uBE0C\\uB77C\\uC6B0\\uC800\\uAC00 \\uBCF4\\uC774\\uC9C0 \\uC54A\\uC73C\\uC2E0\\uAC00\\uC694? \\uCC3D\\uC744 \\uB2E4\\uC2DC \\uC2E4\\uD589\\uD558\\uC5EC \\uACB0\\uC81C\\uB97C \\uC644\\uB8CC\\uD560 \\uC218 \\uC788\\uB3C4\\uB85D \\uB3C4\\uC640\\uB4DC\\uB9AC\\uACA0\\uC2B5\\uB2C8\\uB2E4.\\u00A0 ',\n 'continue': '\\uACC4\\uC18D'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'JP': {\n 'ja': {\n 'windowMessage': '\\u30BB\\u30AD\\u30E5\\u30A2\\u306A\\u30D6\\u30E9\\u30A6\\u30B6\\u304C\\u8868\\u793A\\u3055\\u308C\\u306A\\u3044\\u5834\\u5408\\u306F\\u3001\\u30A6\\u30A3\\u30F3\\u30C9\\u30A6\\u3092\\u518D\\u8D77\\u52D5\\u3057\\u3066\\u3001\\u652F\\u6255\\u3044\\u3092\\u5B8C\\u4E86\\u3067\\u304D\\u308B\\u3088\\u3046\\u304A\\u624B\\u4F1D\\u3044\\u3044\\u305F\\u3057\\u307E\\u3059\\u3002',\n 'continue': '\\u7D9A\\u884C'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment. ',\n 'continue': 'Continue'\n }\n },\n 'IT': {\n 'it': {\n 'windowMessage': 'Non vedi la pagina sicura di PayPal? Ti aiuteremo a riaprire la finestra per completare l\\'acquisto.\\u00A0 ',\n 'continue': 'Continua'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'IN': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'IL': {\n 'he': {\n 'windowMessage': '\\u05DC\\u05D0 \\u05E8\\u05D5\\u05D0\\u05D4 \\u05D0\\u05EA \\u05D3\\u05E4\\u05D3\\u05E4\\u05DF PayPal \\u05D4\\u05DE\\u05D0\\u05D5\\u05D1\\u05D8\\u05D7? \\u05E0\\u05E2\\u05D6\\u05D5\\u05E8 \\u05DC\\u05DA \\u05DC\\u05E4\\u05EA\\u05D5\\u05D7 \\u05DE\\u05D7\\u05D3\\u05E9 \\u05D0\\u05EA \\u05D4\\u05D7\\u05DC\\u05D5\\u05DF \\u05DB\\u05D3\\u05D9 \\u05DC\\u05D4\\u05E9\\u05DC\\u05D9\\u05DD \\u05D0\\u05EA \\u05D4\\u05E7\\u05E0\\u05D9\\u05D9\\u05D4 \\u05E9\\u05DC\\u05DA.\\u00A0 ',\n 'continue': '\\u05D4\\u05DE\\u05E9\\u05DA'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'IE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'HU': {\n 'hu': {\n 'windowMessage': 'Nem l\\u00e1tja a biztons\\u00e1gos PayPal-b\\u00f6ng\\u00e9sz\\u0151t? Seg\\u00edt\\u00fcnk \\u00fajra bet\\u00f6lteni az ablakot, hogy befejezhesse a v\\u00e1s\\u00e1rl\\u00e1st.\\u00A0 ',\n 'continue': 'Folytat\\u00e1s'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ID': {\n 'id': {\n 'windowMessage': 'Browser PayPal yang aman tidak terlihat? Kami akan membantu menampilkan ulang jendela untuk menyelesaikan pembayaran Anda.\\u00A0 ',\n 'continue': 'Lanjutkan'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'HK': {\n 'zh': {\n 'windowMessage': '\\u770B\\u4E0D\\u5230\\u5B89\\u5168\\u7684 PayPal \\u700F\\u89BD\\u5668\\u8996\\u7A97\\uFF1F\\u6211\\u5011\\u6703\\u52A9\\u4F60\\u91CD\\u65B0\\u958B\\u555F\\u8996\\u7A97\\uFF0C\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002',\n 'continue': '\\u7E7C\\u7E8C'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GROUP-LATAM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'GROUP-EMEA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'pt': {\n 'windowMessage': 'N\\u00E3o v\\u00EA a indica\\u00E7\\u00E3o de sess\\u00E3o segura PayPal no browser? Vamos ajudar a reabrir a janela para que possa concluir a sua compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'de': {\n 'windowMessage': 'Sie sehen das sichere Browserfenster von PayPal nicht? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n },\n 'da': {\n 'windowMessage': 'Kan du ikke se PayPals sikre browser? Vi hj\\u00E6lper dig med at genstarte vinduet, s\\u00E5 du kan betale.',\n 'continue': 'Forts\\u00E6t'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'GROUP-APAC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ko': {\n 'windowMessage': '\\uBCF4\\uC548 PayPal \\uBE0C\\uB77C\\uC6B0\\uC800\\uAC00 \\uBCF4\\uC774\\uC9C0 \\uC54A\\uC73C\\uC2E0\\uAC00\\uC694? \\uCC3D\\uC744 \\uB2E4\\uC2DC \\uC2E4\\uD589\\uD558\\uC5EC \\uAD6C\\uB9E4\\uB97C \\uC644\\uB8CC\\uD560 \\uC218 \\uC788\\uB3C4\\uB85D \\uB3C4\\uC640\\uB4DC\\uB9AC\\uACA0\\uC2B5\\uB2C8\\uB2E4. ',\n 'continue': '\\uACC4\\uC18D'\n },\n 'id': {\n 'windowMessage': 'Browser PayPal yang aman tidak terlihat? Kami akan membantu menampilkan ulang jendela untuk menyelesaikan pembelian Anda. ',\n 'continue': 'Lanjutkan'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'GR': {\n 'el': {\n 'windowMessage': '\\u0394\\u03b5\\u03bd \\u03b2\\u03bb\\u03ad\\u03c0\\u03b5\\u03c4\\u03b5 \\u03c4\\u03bf \\u03b1\\u03c3\\u03c6\\u03b1\\u03bb\\u03ad\\u03c2 \\u03c0\\u03c1\\u03cc\\u03b3\\u03c1\\u03b1\\u03bc\\u03bc\\u03b1 \\u03c0\\u03b5\\u03c1\\u03b9\\u03ae\\u03b3\\u03b7\\u03c3\\u03b7\\u03c2 PayPal; \\u0398\\u03b1 \\u03c3\\u03b1\\u03c2 \\u03b2\\u03bf\\u03b7\\u03b8\\u03ae\\u03c3\\u03bf\\u03c5\\u03bc\\u03b5 \\u03bd\\u03b1 \\u03b5\\u03c0\\u03b1\\u03bd\\u03b5\\u03ba\\u03ba\\u03b9\\u03bd\\u03ae\\u03c3\\u03b5\\u03c4\\u03b5 \\u03c4\\u03bf \\u03c0\\u03b1\\u03c1\\u03ac\\u03b8\\u03c5\\u03c1\\u03bf \\u03b3\\u03b9\\u03b1 \\u03bd\\u03b1 \\u03bf\\u03bb\\u03bf\\u03ba\\u03bb\\u03b7\\u03c1\\u03ce\\u03c3\\u03b5\\u03c4\\u03b5 \\u03c4\\u03b7\\u03bd \\u03b1\\u03b3\\u03bf\\u03c1\\u03ac \\u03c3\\u03b1\\u03c2.\\u00A0 ',\n 'continue': '\\u03a3\\u03c5\\u03bd\\u03ad\\u03c7\\u03b5\\u03b9\\u03b1'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'FR': {\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 PayPal\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ES': {\n 'es': {\n 'windowMessage': '\\u00BFNo ve el s\\u00EDmbolo de navegaci\\u00F3n segura de PayPal? Le ayudaremos a abrir de nuevo la ventana para completar la compra. ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'FI': {\n 'fi': {\n 'windowMessage': 'Eik\\u00f6 suojattua PayPal-selainta n\\u00e4y? Autamme avaamaan ikkunan uudelleen oston viimeistely\\u00e4 varten.\\u00A0 ',\n 'continue': 'Jatka'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'EE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'DK': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'da': {\n 'windowMessage': 'Kan du ikke se PayPals sikre browser? Vi hj\\u00E6lper dig med at genstarte vinduet, s\\u00E5 du kan betale.',\n 'continue': 'Forts\\u00E6t'\n }\n },\n 'CZ': {\n 'cs': {\n 'windowMessage': 'Nezobrazuje se v\\u00e1m bezpe\\u010dn\\u00fd prohl\\u00ed\\u017ee\\u010d PayPal? Pom\\u016f\\u017eeme v\\u00e1m okno znovu otev\\u0159\\u00edt, abyste mohli n\\u00e1kup dokon\\u010dit.',\n 'continue': 'Pokra\\u010dovat'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'DE': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'de': {\n 'windowMessage': 'Sie sehen das sichere Browserfenster von PayPal nicht? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n }\n },\n 'CH': {\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 PayPal\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'de': {\n 'windowMessage': 'Sie sehen das sichere Browserfenster von PayPal nicht? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n }\n },\n 'CA': {\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 de PayPal\\u00A0? Nous vous aiderons \\u00E0 relancer la fen\\u00EAtre afin d\\'effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you relaunch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'C2': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BE': {\n 'nl': {\n 'windowMessage': 'Ziet u de beveiligde PayPal-browser niet? We helpen u het venster opnieuw te openen om uw aankoop te voltooien.\\u00A0 ',\n 'continue': 'Doorgaan'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 PayPal\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BR': {\n 'pt': {\n 'windowMessage': 'N\\u00E3o est\\u00E1 vendo o navegador seguro do PayPal? Ajudaremos voc\\u00EA a reabrir a janela para concluir a compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AU': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\'ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n }\n};\n","/*\n * [hi-base32]{@link https://github.com/emn178/hi-base32}\n *\n * @version 0.5.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var root = typeof window === 'object' ? window : {};\n var NODE_JS = !root.HI_BASE32_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n }\n var COMMON_JS = !root.HI_BASE32_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var BASE32_ENCODE_CHAR = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'.split('');\n var BASE32_DECODE_CHAR = {\n 'A': 0, 'B': 1, 'C': 2, 'D': 3, 'E': 4, 'F': 5, 'G': 6, 'H': 7, 'I': 8,\n 'J': 9, 'K': 10, 'L': 11, 'M': 12, 'N': 13, 'O': 14, 'P': 15, 'Q': 16,\n 'R': 17, 'S': 18, 'T': 19, 'U': 20, 'V': 21, 'W': 22, 'X': 23, 'Y': 24,\n 'Z': 25, '2': 26, '3': 27, '4': 28, '5': 29, '6': 30, '7': 31\n };\n\n var blocks = [0, 0, 0, 0, 0, 0, 0, 0];\n\n var throwInvalidUtf8 = function (position, partial) {\n if (partial.length > 10) {\n partial = '...' + partial.substr(-10);\n }\n var err = new Error('Decoded data is not valid UTF-8.'\n + ' Maybe try base32.decode.asBytes()?'\n + ' Partial data after reading ' + position + ' bytes: ' + partial + ' <-');\n err.position = position;\n throw err;\n };\n\n var toUtf8String = function (bytes) {\n var str = '', length = bytes.length, i = 0, followingChars = 0, b, c;\n while (i < length) {\n b = bytes[i++];\n if (b <= 0x7F) {\n str += String.fromCharCode(b);\n continue;\n } else if (b > 0xBF && b <= 0xDF) {\n c = b & 0x1F;\n followingChars = 1;\n } else if (b <= 0xEF) {\n c = b & 0x0F;\n followingChars = 2;\n } else if (b <= 0xF7) {\n c = b & 0x07;\n followingChars = 3;\n } else {\n throwInvalidUtf8(i, str);\n }\n\n for (var j = 0; j < followingChars; ++j) {\n b = bytes[i++];\n if (b < 0x80 || b > 0xBF) {\n throwInvalidUtf8(i, str);\n }\n c <<= 6;\n c += b & 0x3F;\n }\n if (c >= 0xD800 && c <= 0xDFFF) {\n throwInvalidUtf8(i, str);\n }\n if (c > 0x10FFFF) {\n throwInvalidUtf8(i, str);\n }\n\n if (c <= 0xFFFF) {\n str += String.fromCharCode(c);\n } else {\n c -= 0x10000;\n str += String.fromCharCode((c >> 10) + 0xD800);\n str += String.fromCharCode((c & 0x3FF) + 0xDC00);\n }\n }\n return str;\n };\n\n var decodeAsBytes = function (base32Str) {\n if (!/^[A-Z2-7=]+$/.test(base32Str)) {\n throw new Error('Invalid base32 characters');\n }\n base32Str = base32Str.replace(/=/g, '');\n var v1, v2, v3, v4, v5, v6, v7, v8, bytes = [], index = 0, length = base32Str.length;\n\n // 4 char to 3 bytes\n for (var i = 0, count = length >> 3 << 3; i < count;) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v8 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255;\n bytes[index++] = (v4 << 4 | v5 >>> 1) & 255;\n bytes[index++] = (v5 << 7 | v6 << 2 | v7 >>> 3) & 255;\n bytes[index++] = (v7 << 5 | v8) & 255;\n }\n\n // remain bytes\n var remain = length - count;\n if (remain === 2) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n } else if (remain === 4) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255;\n } else if (remain === 5) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255;\n bytes[index++] = (v4 << 4 | v5 >>> 1) & 255;\n } else if (remain === 7) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255;\n bytes[index++] = (v4 << 4 | v5 >>> 1) & 255;\n bytes[index++] = (v5 << 7 | v6 << 2 | v7 >>> 3) & 255;\n }\n return bytes;\n };\n\n var encodeAscii = function (str) {\n var v1, v2, v3, v4, v5, base32Str = '', length = str.length;\n for (var i = 0, count = parseInt(length / 5) * 5; i < count;) {\n v1 = str.charCodeAt(i++);\n v2 = str.charCodeAt(i++);\n v3 = str.charCodeAt(i++);\n v4 = str.charCodeAt(i++);\n v5 = str.charCodeAt(i++);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3 | v5 >>> 5) & 31] +\n BASE32_ENCODE_CHAR[v5 & 31];\n }\n\n // remain char\n var remain = length - count;\n if (remain === 1) {\n v1 = str.charCodeAt(i);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2) & 31] +\n '======';\n } else if (remain === 2) {\n v1 = str.charCodeAt(i++);\n v2 = str.charCodeAt(i);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4) & 31] +\n '====';\n } else if (remain === 3) {\n v1 = str.charCodeAt(i++);\n v2 = str.charCodeAt(i++);\n v3 = str.charCodeAt(i);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1) & 31] +\n '===';\n } else if (remain === 4) {\n v1 = str.charCodeAt(i++);\n v2 = str.charCodeAt(i++);\n v3 = str.charCodeAt(i++);\n v4 = str.charCodeAt(i);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3) & 31] +\n '=';\n }\n return base32Str;\n };\n\n var encodeUtf8 = function (str) {\n var v1, v2, v3, v4, v5, code, end = false, base32Str = '',\n index = 0, i, start = 0, bytes = 0, length = str.length;\n do {\n blocks[0] = blocks[5];\n blocks[1] = blocks[6];\n blocks[2] = blocks[7];\n for (i = start; index < length && i < 5; ++index) {\n code = str.charCodeAt(index);\n if (code < 0x80) {\n blocks[i++] = code;\n } else if (code < 0x800) {\n blocks[i++] = 0xc0 | (code >> 6);\n blocks[i++] = 0x80 | (code & 0x3f);\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i++] = 0xe0 | (code >> 12);\n blocks[i++] = 0x80 | ((code >> 6) & 0x3f);\n blocks[i++] = 0x80 | (code & 0x3f);\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++index) & 0x3ff));\n blocks[i++] = 0xf0 | (code >> 18);\n blocks[i++] = 0x80 | ((code >> 12) & 0x3f);\n blocks[i++] = 0x80 | ((code >> 6) & 0x3f);\n blocks[i++] = 0x80 | (code & 0x3f);\n }\n }\n bytes += i - start;\n start = i - 5;\n if (index === length) {\n ++index;\n }\n if (index > length && i < 6) {\n end = true;\n }\n v1 = blocks[0];\n if (i > 4) {\n v2 = blocks[1];\n v3 = blocks[2];\n v4 = blocks[3];\n v5 = blocks[4];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3 | v5 >>> 5) & 31] +\n BASE32_ENCODE_CHAR[v5 & 31];\n } else if (i === 1) {\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2) & 31] +\n '======';\n } else if (i === 2) {\n v2 = blocks[1];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4) & 31] +\n '====';\n } else if (i === 3) {\n v2 = blocks[1];\n v3 = blocks[2];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1) & 31] +\n '===';\n } else {\n v2 = blocks[1];\n v3 = blocks[2];\n v4 = blocks[3];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3) & 31] +\n '=';\n }\n } while (!end);\n return base32Str;\n };\n\n var encodeBytes = function (bytes) {\n var v1, v2, v3, v4, v5, base32Str = '', length = bytes.length;\n for (var i = 0, count = parseInt(length / 5) * 5; i < count;) {\n v1 = bytes[i++];\n v2 = bytes[i++];\n v3 = bytes[i++];\n v4 = bytes[i++];\n v5 = bytes[i++];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3 | v5 >>> 5) & 31] +\n BASE32_ENCODE_CHAR[v5 & 31];\n }\n\n // remain char\n var remain = length - count;\n if (remain === 1) {\n v1 = bytes[i];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2) & 31] +\n '======';\n } else if (remain === 2) {\n v1 = bytes[i++];\n v2 = bytes[i];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4) & 31] +\n '====';\n } else if (remain === 3) {\n v1 = bytes[i++];\n v2 = bytes[i++];\n v3 = bytes[i];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1) & 31] +\n '===';\n } else if (remain === 4) {\n v1 = bytes[i++];\n v2 = bytes[i++];\n v3 = bytes[i++];\n v4 = bytes[i];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3) & 31] +\n '=';\n }\n return base32Str;\n };\n\n var encode = function (input, asciiOnly) {\n var notString = typeof(input) !== 'string';\n if (notString && input.constructor === ArrayBuffer) {\n input = new Uint8Array(input);\n }\n if (notString) {\n return encodeBytes(input);\n } else if (asciiOnly) {\n return encodeAscii(input);\n } else {\n return encodeUtf8(input);\n }\n };\n\n var decode = function (base32Str, asciiOnly) {\n if (!asciiOnly) {\n return toUtf8String(decodeAsBytes(base32Str));\n }\n if (!/^[A-Z2-7=]+$/.test(base32Str)) {\n throw new Error('Invalid base32 characters');\n }\n var v1, v2, v3, v4, v5, v6, v7, v8, str = '', length = base32Str.indexOf('=');\n if (length === -1) {\n length = base32Str.length;\n }\n\n // 8 char to 5 bytes\n for (var i = 0, count = length >> 3 << 3; i < count;) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v8 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255) +\n String.fromCharCode((v2 << 6 | v3 << 1 | v4 >>> 4) & 255) +\n String.fromCharCode((v4 << 4 | v5 >>> 1) & 255) +\n String.fromCharCode((v5 << 7 | v6 << 2 | v7 >>> 3) & 255) +\n String.fromCharCode((v7 << 5 | v8) & 255);\n }\n\n // remain bytes\n var remain = length - count;\n if (remain === 2) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255);\n } else if (remain === 4) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255) +\n String.fromCharCode((v2 << 6 | v3 << 1 | v4 >>> 4) & 255);\n } else if (remain === 5) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255) +\n String.fromCharCode((v2 << 6 | v3 << 1 | v4 >>> 4) & 255) +\n String.fromCharCode((v4 << 4 | v5 >>> 1) & 255);\n } else if (remain === 7) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255) +\n String.fromCharCode((v2 << 6 | v3 << 1 | v4 >>> 4) & 255) +\n String.fromCharCode((v4 << 4 | v5 >>> 1) & 255) +\n String.fromCharCode((v5 << 7 | v6 << 2 | v7 >>> 3) & 255);\n }\n return str;\n };\n\n var exports = {\n encode: encode,\n decode: decode\n };\n decode.asBytes = decodeAsBytes;\n\n if (COMMON_JS) {\n module.exports = exports;\n } else {\n root.base32 = exports;\n if (AMD) {\n define(function() {\n return exports;\n });\n }\n }\n})();\n","/* @flow */\n\nimport type { Component, ComponentDriverType } from '../component/component';\n\nexport let script : ComponentDriverType<*, Document> = {\n\n global() : ?Document {\n return window.document;\n },\n\n register(component : Component<*>, document : Document) {\n\n function render(element : HTMLElement) {\n\n if (!element || !element.tagName || element.tagName.toLowerCase() !== 'script') {\n return;\n }\n\n // $FlowFixMe\n if (!element.attributes.type || element.attributes.type.value !== 'application/x-component' || !element.parentNode) {\n return;\n }\n\n let tag = element.getAttribute('data-component');\n\n if (!tag || tag !== component.tag) {\n return;\n }\n\n component.log(`instantiate_script_component`);\n\n let props : { [string] : mixed } = element.innerText\n ? eval(`(${ element.innerText })`) // eslint-disable-line no-eval, security/detect-eval-with-expression\n : {};\n\n let container = document.createElement('div');\n\n if (!element.parentNode) {\n throw new Error(`Element has no parent`);\n }\n\n element.parentNode.replaceChild(container, element);\n\n // $FlowFixMe\n component.render(props, container);\n }\n\n function scan() {\n let scriptTags = Array.prototype.slice.call(document.getElementsByTagName('script'));\n\n for (let element of scriptTags) {\n render(element);\n }\n }\n\n scan();\n document.addEventListener('DOMContentLoaded', scan);\n window.addEventListener('load', scan);\n\n document.addEventListener('DOMNodeInserted', event => {\n // $FlowFixMe\n render(event.target);\n });\n }\n};\n","/* @flow */\n\nimport { extend } from '../lib';\nimport type { Component, ComponentDriverType } from '../component/component';\n\ndeclare class ReactClassType {\n\n}\n\ntype ReactElementType = {\n\n};\n\ntype ReactType = {\n createClass : ({ render : ReactElementType, componentDidMount : () => void, componentDidUpdate : () => void }) => (typeof ReactClassType),\n createElement : (string, ?{ [string] : mixed }, ...children : Array) => ReactElementType\n};\n\ntype ReactDomType = {\n findDOMNode : (ReactElementType) => HTMLElement\n};\n\ntype ReactLibraryType = { React : ReactType, ReactDOM : ReactDomType };\n\nexport let react : ComponentDriverType<*, ReactLibraryType> = {\n\n global() : ?ReactLibraryType {\n if (window.React && window.ReactDOM) {\n return {\n React: window.React,\n ReactDOM: window.ReactDOM\n };\n }\n },\n\n register(component : Component<*>, { React, ReactDOM } : ReactLibraryType) : (typeof ReactClassType) {\n\n if (React.createClass) {\n\n // $FlowFixMe\n component.react = React.createClass({\n\n render() : ReactElementType {\n return React.createElement('div', null);\n },\n\n componentDidMount() {\n component.log(`instantiate_react_component`);\n\n let el = ReactDOM.findDOMNode(this);\n\n let parent = component.init(extend({}, this.props), null, el);\n\n this.setState({ parent });\n\n parent.render(el);\n },\n\n componentDidUpdate() {\n\n if (this.state && this.state.parent) {\n this.state.parent.updateProps(extend({}, this.props));\n }\n },\n\n componentWillUnmount() {\n if (this.state && this.state.parent) {\n this.state.parent.destroy();\n }\n }\n });\n } else {\n // $FlowFixMe\n component.react = class extends React.Component {\n render() : ReactElementType {\n return React.createElement('div', null);\n }\n\n componentDidMount() {\n component.log(`instantiate_react_component`);\n\n let el = ReactDOM.findDOMNode(this);\n\n let parent = component.init(extend({}, this.props), null, el);\n\n this.setState({ parent });\n\n parent.render(el);\n }\n\n componentDidUpdate() {\n\n if (this.state && this.state.parent) {\n this.state.parent.updateProps(extend({}, this.props));\n }\n }\n\n componentWillUnmount() {\n if (this.state && this.state.parent) {\n this.state.parent.destroy();\n }\n }\n };\n }\n\n return component.react;\n }\n};\n","/* @flow */\n\nimport type { Component, ComponentDriverType } from '../component/component';\nimport { extend } from '../lib';\n\ntype VueComponent = {\n render : (Function) => Element,\n inheritAttrs : boolean,\n mounted : () => void,\n beforeUpdate : () => void\n};\n\nexport let vue : ComponentDriverType<*, void> = {\n\n global() {\n // pass\n },\n\n register

(component : Component

) : VueComponent {\n\n return {\n render(createElement) : Element {\n return createElement('div');\n },\n\n inheritAttrs: false,\n\n mounted() {\n let el = this.$el;\n\n // $FlowFixMe\n this.parent = component.init(extend({}, this.$attrs), null, el);\n\n this.parent.render(el);\n },\n\n beforeUpdate() {\n \n if (this.parent && this.$attrs) {\n this.parent.updateProps(extend({}, this.$attrs));\n }\n }\n };\n }\n};\n","/* @flow */\n\nimport { dasherizeToCamel, replaceObject } from '../lib';\nimport type { Component, ComponentDriverType } from '../component/component';\n\ntype AngularModule = {\n directive : (string, () => {\n scope : { [string] : '=' | '@' },\n restrict : string,\n controller : Array\n }) => AngularModule\n};\n\ntype Angular = {\n module : (string, Array) => AngularModule\n};\n\nexport let angular : ComponentDriverType<*, Angular> = {\n\n global() : ?Angular {\n return window.angular;\n },\n\n register(component : Component<*>, ng : Angular) : AngularModule {\n\n let module = ng.module(component.tag, []).directive(dasherizeToCamel(component.tag), () => {\n\n let scope = {};\n\n for (let key of component.getPropNames()) {\n scope[key] = '=';\n }\n\n if (component.looseProps) {\n scope.props = '=';\n }\n\n return {\n scope,\n\n restrict: 'E',\n\n controller: [ '$scope', '$element', ($scope, $element) => {\n\n if (component.looseProps && !$scope.props) {\n throw new Error(`For angular bindings to work, prop definitions must be passed to zoid.create`);\n }\n\n component.log(`instantiate_angular_component`);\n\n function safeApply() {\n if ($scope.$root.$$phase !== '$apply' && $scope.$root.$$phase !== '$digest') {\n try {\n $scope.$apply();\n } catch (err) {\n // pass\n }\n }\n }\n\n let getProps = () => {\n\n let scopeProps;\n\n if ($scope.props) {\n scopeProps = $scope.props;\n } else {\n scopeProps = {};\n for (let key of Object.keys(scope)) {\n if ($scope[key] !== undefined) {\n scopeProps[key] = $scope[key];\n }\n }\n }\n\n scopeProps = replaceObject(scopeProps, {\n 'function': (value) => {\n return function angularWrapped() : mixed {\n let result = value.apply(this, arguments);\n safeApply();\n return result;\n };\n }\n });\n\n return scopeProps;\n };\n\n let parent = component.init(getProps(), null, $element[0]);\n parent.render($element[0]);\n\n $scope.$watch(() => {\n parent.updateProps(getProps());\n });\n } ]\n };\n });\n\n return module;\n }\n};\n","/* @flow */\n\nimport type { Component, ComponentDriverType } from '../component/component';\n\ndeclare class GlimmerComponentType {\n element : HTMLElement,\n args : Object\n}\n\nexport let glimmer : ComponentDriverType<*, (typeof GlimmerComponentType)> = {\n\n global() {\n // pass\n },\n\n register(component : Component<*>, GlimmerComponent : (typeof GlimmerComponentType)) : (typeof GlimmerComponentType) {\n return class extends GlimmerComponent {\n didInsertElement() {\n component.render({ ...this.args }, this.element);\n }\n };\n }\n};\n","/* @flow */\n/* eslint new-cap: 0 */\n\nimport { replaceObject } from '../lib';\nimport type { Component, ComponentDriverType } from '../component/component';\n\ntype Angular2Injection = {};\n\ntype Angular2Component = {};\n\ntype Angular2Module = {};\n\ntype Angular2 = {\n Component : ({ selector : string, template : string, inputs : Array }) => {\n Class : ({ constructor : Array, ngOnInit : () => void, ngOnChanges : () => void }) => Angular2Component\n },\n NgModule : ({ declarations : Array, exports : Array }) => {\n Class : ({ constructor : () => void }) => Angular2Module\n },\n ElementRef : Angular2Injection,\n NgZone : Angular2Injection\n};\n\n\nexport let angular2 : ComponentDriverType<*, Angular2> = {\n\n global() {\n // pass\n },\n\n register(zoid : Component<*>, { Component : AngularComponent, NgModule, ElementRef, NgZone }) : Angular2Module {\n\n zoid.log('initializing angular2 component');\n\n let getProps = (component) => {\n return replaceObject({ ...component.internalProps, ...component.props }, {\n 'function': (value) => {\n if (typeof value === 'function') {\n return function angular2Wrapped() : void {\n return component.zone.run(() => value.apply(this, arguments));\n };\n }\n }\n });\n };\n\n const ComponentInstance =\n AngularComponent({\n selector: zoid.tag,\n template: '

',\n inputs: [ 'props' ]\n }).Class({\n constructor: [ ElementRef, NgZone, function angularConstructor(elementRef, zone) {\n this.elementRef = elementRef;\n this.zone = zone;\n } ],\n ngOnInit () {\n const targetElement = this.elementRef.nativeElement;\n const parent = zoid.init(getProps(this), null, targetElement);\n parent.render(targetElement);\n this.parent = parent;\n },\n ngOnChanges() {\n if (this.parent) {\n this.parent.updateProps(getProps(this));\n }\n }\n });\n\n\n const ModuleInstance = NgModule({\n declarations: [ ComponentInstance ],\n exports: [ ComponentInstance ]\n }).Class({\n constructor () {\n // pass\n }\n });\n\n return ModuleInstance;\n }\n};\n","/*!\n * Bowser - a browser detector\n * https://github.com/ded/bowser\n * MIT License | (c) Dustin Diaz 2015\n */\n!function(e,t,n){typeof module!=\"undefined\"&&module.exports?module.exports=n():typeof define==\"function\"&&define.amd?define(t,n):e[t]=n()}(this,\"bowser\",function(){function t(t){function n(e){var n=t.match(e);return n&&n.length>1&&n[1]||\"\"}function r(e){var n=t.match(e);return n&&n.length>1&&n[2]||\"\"}function C(e){switch(e){case\"NT\":return\"NT\";case\"XP\":return\"XP\";case\"NT 5.0\":return\"2000\";case\"NT 5.1\":return\"XP\";case\"NT 5.2\":return\"2003\";case\"NT 6.0\":return\"Vista\";case\"NT 6.1\":return\"7\";case\"NT 6.2\":return\"8\";case\"NT 6.3\":return\"8.1\";case\"NT 10.0\":return\"10\";default:return undefined}}var i=n(/(ipod|iphone|ipad)/i).toLowerCase(),o=/like android/i.test(t),u=!o&&/android/i.test(t),a=/nexus\\s*[0-6]\\s*/i.test(t),f=!a&&/nexus\\s*[0-9]+/i.test(t),l=/CrOS/.test(t),c=/silk/i.test(t),h=/sailfish/i.test(t),p=/tizen/i.test(t),d=/(web|hpw)(o|0)s/i.test(t),v=/windows phone/i.test(t),m=/SamsungBrowser/i.test(t),g=!v&&/windows/i.test(t),y=!i&&!c&&/macintosh/i.test(t),b=!u&&!h&&!p&&!d&&/linux/i.test(t),w=r(/edg([ea]|ios)\\/(\\d+(\\.\\d+)?)/i),E=n(/version\\/(\\d+(\\.\\d+)?)/i),S=/tablet/i.test(t)&&!/tablet pc/i.test(t),x=!S&&/[^-]mobi/i.test(t),T=/xbox/i.test(t),N;/opera/i.test(t)?N={name:\"Opera\",opera:e,version:E||n(/(?:opera|opr|opios)[\\s\\/](\\d+(\\.\\d+)?)/i)}:/opr\\/|opios/i.test(t)?N={name:\"Opera\",opera:e,version:n(/(?:opr|opios)[\\s\\/](\\d+(\\.\\d+)?)/i)||E}:/SamsungBrowser/i.test(t)?N={name:\"Samsung Internet for Android\",samsungBrowser:e,version:E||n(/(?:SamsungBrowser)[\\s\\/](\\d+(\\.\\d+)?)/i)}:/Whale/i.test(t)?N={name:\"NAVER Whale browser\",whale:e,version:n(/(?:whale)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/MZBrowser/i.test(t)?N={name:\"MZ Browser\",mzbrowser:e,version:n(/(?:MZBrowser)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/coast/i.test(t)?N={name:\"Opera Coast\",coast:e,version:E||n(/(?:coast)[\\s\\/](\\d+(\\.\\d+)?)/i)}:/focus/i.test(t)?N={name:\"Focus\",focus:e,version:n(/(?:focus)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/yabrowser/i.test(t)?N={name:\"Yandex Browser\",yandexbrowser:e,version:E||n(/(?:yabrowser)[\\s\\/](\\d+(\\.\\d+)?)/i)}:/ucbrowser/i.test(t)?N={name:\"UC Browser\",ucbrowser:e,version:n(/(?:ucbrowser)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/mxios/i.test(t)?N={name:\"Maxthon\",maxthon:e,version:n(/(?:mxios)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/epiphany/i.test(t)?N={name:\"Epiphany\",epiphany:e,version:n(/(?:epiphany)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/puffin/i.test(t)?N={name:\"Puffin\",puffin:e,version:n(/(?:puffin)[\\s\\/](\\d+(?:\\.\\d+)?)/i)}:/sleipnir/i.test(t)?N={name:\"Sleipnir\",sleipnir:e,version:n(/(?:sleipnir)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/k-meleon/i.test(t)?N={name:\"K-Meleon\",kMeleon:e,version:n(/(?:k-meleon)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:v?(N={name:\"Windows Phone\",osname:\"Windows Phone\",windowsphone:e},w?(N.msedge=e,N.version=w):(N.msie=e,N.version=n(/iemobile\\/(\\d+(\\.\\d+)?)/i))):/msie|trident/i.test(t)?N={name:\"Internet Explorer\",msie:e,version:n(/(?:msie |rv:)(\\d+(\\.\\d+)?)/i)}:l?N={name:\"Chrome\",osname:\"Chrome OS\",chromeos:e,chromeBook:e,chrome:e,version:n(/(?:chrome|crios|crmo)\\/(\\d+(\\.\\d+)?)/i)}:/edg([ea]|ios)/i.test(t)?N={name:\"Microsoft Edge\",msedge:e,version:w}:/vivaldi/i.test(t)?N={name:\"Vivaldi\",vivaldi:e,version:n(/vivaldi\\/(\\d+(\\.\\d+)?)/i)||E}:h?N={name:\"Sailfish\",osname:\"Sailfish OS\",sailfish:e,version:n(/sailfish\\s?browser\\/(\\d+(\\.\\d+)?)/i)}:/seamonkey\\//i.test(t)?N={name:\"SeaMonkey\",seamonkey:e,version:n(/seamonkey\\/(\\d+(\\.\\d+)?)/i)}:/firefox|iceweasel|fxios/i.test(t)?(N={name:\"Firefox\",firefox:e,version:n(/(?:firefox|iceweasel|fxios)[ \\/](\\d+(\\.\\d+)?)/i)},/\\((mobile|tablet);[^\\)]*rv:[\\d\\.]+\\)/i.test(t)&&(N.firefoxos=e,N.osname=\"Firefox OS\")):c?N={name:\"Amazon Silk\",silk:e,version:n(/silk\\/(\\d+(\\.\\d+)?)/i)}:/phantom/i.test(t)?N={name:\"PhantomJS\",phantom:e,version:n(/phantomjs\\/(\\d+(\\.\\d+)?)/i)}:/slimerjs/i.test(t)?N={name:\"SlimerJS\",slimer:e,version:n(/slimerjs\\/(\\d+(\\.\\d+)?)/i)}:/blackberry|\\bbb\\d+/i.test(t)||/rim\\stablet/i.test(t)?N={name:\"BlackBerry\",osname:\"BlackBerry OS\",blackberry:e,version:E||n(/blackberry[\\d]+\\/(\\d+(\\.\\d+)?)/i)}:d?(N={name:\"WebOS\",osname:\"WebOS\",webos:e,version:E||n(/w(?:eb)?osbrowser\\/(\\d+(\\.\\d+)?)/i)},/touchpad\\//i.test(t)&&(N.touchpad=e)):/bada/i.test(t)?N={name:\"Bada\",osname:\"Bada\",bada:e,version:n(/dolfin\\/(\\d+(\\.\\d+)?)/i)}:p?N={name:\"Tizen\",osname:\"Tizen\",tizen:e,version:n(/(?:tizen\\s?)?browser\\/(\\d+(\\.\\d+)?)/i)||E}:/qupzilla/i.test(t)?N={name:\"QupZilla\",qupzilla:e,version:n(/(?:qupzilla)[\\s\\/](\\d+(?:\\.\\d+)+)/i)||E}:/chromium/i.test(t)?N={name:\"Chromium\",chromium:e,version:n(/(?:chromium)[\\s\\/](\\d+(?:\\.\\d+)?)/i)||E}:/chrome|crios|crmo/i.test(t)?N={name:\"Chrome\",chrome:e,version:n(/(?:chrome|crios|crmo)\\/(\\d+(\\.\\d+)?)/i)}:u?N={name:\"Android\",version:E}:/safari|applewebkit/i.test(t)?(N={name:\"Safari\",safari:e},E&&(N.version=E)):i?(N={name:i==\"iphone\"?\"iPhone\":i==\"ipad\"?\"iPad\":\"iPod\"},E&&(N.version=E)):/googlebot/i.test(t)?N={name:\"Googlebot\",googlebot:e,version:n(/googlebot\\/(\\d+(\\.\\d+))/i)||E}:N={name:n(/^(.*)\\/(.*) /),version:r(/^(.*)\\/(.*) /)},!N.msedge&&/(apple)?webkit/i.test(t)?(/(apple)?webkit\\/537\\.36/i.test(t)?(N.name=N.name||\"Blink\",N.blink=e):(N.name=N.name||\"Webkit\",N.webkit=e),!N.version&&E&&(N.version=E)):!N.opera&&/gecko\\//i.test(t)&&(N.name=N.name||\"Gecko\",N.gecko=e,N.version=N.version||n(/gecko\\/(\\d+(\\.\\d+)?)/i)),!N.windowsphone&&(u||N.silk)?(N.android=e,N.osname=\"Android\"):!N.windowsphone&&i?(N[i]=e,N.ios=e,N.osname=\"iOS\"):y?(N.mac=e,N.osname=\"macOS\"):T?(N.xbox=e,N.osname=\"Xbox\"):g?(N.windows=e,N.osname=\"Windows\"):b&&(N.linux=e,N.osname=\"Linux\");var k=\"\";N.windows?k=C(n(/Windows ((NT|XP)( \\d\\d?.\\d)?)/i)):N.windowsphone?k=n(/windows phone (?:os)?\\s?(\\d+(\\.\\d+)*)/i):N.mac?(k=n(/Mac OS X (\\d+([_\\.\\s]\\d+)*)/i),k=k.replace(/[_\\s]/g,\".\")):i?(k=n(/os (\\d+([_\\s]\\d+)*) like mac os x/i),k=k.replace(/[_\\s]/g,\".\")):u?k=n(/android[ \\/-](\\d+(\\.\\d+)*)/i):N.webos?k=n(/(?:web|hpw)os\\/(\\d+(\\.\\d+)*)/i):N.blackberry?k=n(/rim\\stablet\\sos\\s(\\d+(\\.\\d+)*)/i):N.bada?k=n(/bada\\/(\\d+(\\.\\d+)*)/i):N.tizen&&(k=n(/tizen[\\/\\s](\\d+(\\.\\d+)*)/i)),k&&(N.osversion=k);var L=!N.windows&&k.split(\".\")[0];if(S||f||i==\"ipad\"||u&&(L==3||L>=4&&!x)||N.silk)N.tablet=e;else if(x||i==\"iphone\"||i==\"ipod\"||u||a||N.blackberry||N.webos||N.bada)N.mobile=e;return N.msedge||N.msie&&N.version>=10||N.yandexbrowser&&N.version>=15||N.vivaldi&&N.version>=1||N.chrome&&N.version>=20||N.samsungBrowser&&N.version>=4||N.whale&&s([N.version,\"1.0\"])===1||N.mzbrowser&&s([N.version,\"6.0\"])===1||N.focus&&s([N.version,\"1.0\"])===1||N.firefox&&N.version>=20||N.safari&&N.version>=6||N.opera&&N.version>=10||N.ios&&N.osversion&&N.osversion.split(\".\")[0]>=6||N.blackberry&&N.version>=10.1||N.chromium&&N.version>=20?N.a=e:N.msie&&N.version<10||N.chrome&&N.version<20||N.firefox&&N.version<20||N.safari&&N.version<6||N.opera&&N.version<10||N.ios&&N.osversion&&N.osversion.split(\".\")[0]<6||N.chromium&&N.version<20?N.c=e:N.x=e,N}function r(e){return e.split(\".\").length}function i(e,t){var n=[],r;if(Array.prototype.map)return Array.prototype.map.call(e,t);for(r=0;r=0){if(n[0][t]>n[1][t])return 1;if(n[0][t]!==n[1][t])return-1;if(t===0)return 0}}function o(e,r,i){var o=n;typeof r==\"string\"&&(i=r,r=void 0),r===void 0&&(r=!1),i&&(o=t(i));var u=\"\"+o.version;for(var a in e)if(e.hasOwnProperty(a)&&o[a]){if(typeof e[a]!=\"string\")throw new Error(\"Browser version in the minVersion map should be a string: \"+a+\": \"+String(e));return s([u,e[a]])<0}return r}function u(e,t,n){return!o(e,t,n)}var e=!0,n=t(typeof navigator!=\"undefined\"?navigator.userAgent||\"\":\"\");return n.test=function(e){for(var t=0;t\\n \\n \\n \\n \\n \\n \\n \\n \\n\\n\"","module.exports = \"\\n \\n \\n \\n\\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n \\n \\n \\n \\n \\n \\n \\n\\n\"","module.exports = \"\\n\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n \\n \\n \\n \\n \\n \\n \\n\\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n\\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n unionpay\\n Created with Sketch.\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","// get successful control from form and assemble into object\n// http://www.w3.org/TR/html401/interact/forms.html#h-17.13.2\n\n// types which indicate a submit action and are not successful controls\n// these will be ignored\nvar k_r_submitter = /^(?:submit|button|image|reset|file)$/i;\n\n// node names which could be successful controls\nvar k_r_success_contrls = /^(?:input|select|textarea|keygen)/i;\n\n// Matches bracket notation.\nvar brackets = /(\\[[^\\[\\]]*\\])/g;\n\n// serializes form fields\n// @param form MUST be an HTMLForm element\n// @param options is an optional argument to configure the serialization. Default output\n// with no options specified is a url encoded string\n// - hash: [true | false] Configure the output type. If true, the output will\n// be a js object.\n// - serializer: [function] Optional serializer function to override the default one.\n// The function takes 3 arguments (result, key, value) and should return new result\n// hash and url encoded str serializers are provided with this module\n// - disabled: [true | false]. If true serialize disabled fields.\n// - empty: [true | false]. If true serialize empty fields\nfunction serialize(form, options) {\n if (typeof options != 'object') {\n options = { hash: !!options };\n }\n else if (options.hash === undefined) {\n options.hash = true;\n }\n\n var result = (options.hash) ? {} : '';\n var serializer = options.serializer || ((options.hash) ? hash_serializer : str_serialize);\n\n var elements = form && form.elements ? form.elements : [];\n\n //Object store each radio and set if it's empty or not\n var radio_store = Object.create(null);\n\n for (var i=0 ; i\n \n
\n
\n \n \n
\n
\n {content.windowMessage}\n
\n
\n
\n
\n
\n
\n\n
\n {outlet}\n
\n\n \n
\n );\n\n const container = (\n \n \n { el }\n \n \n );\n\n on(EVENT.CLOSE, () => {\n el.className += ` ${ tag }-loading`;\n });\n\n return (\n
\n \n\n \n
\n );\n}\n\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { create } from 'zoid/src';\nimport { type Component } from 'zoid/src/component/component';\nimport { base64encode } from 'belter/src';\n\nimport { ENV } from '../constants';\nimport { getButtonSessionID, getBrowserLocale, getSessionID, getCurrentScriptUrl } from '../lib';\nimport { config } from '../config';\n\nimport { containerTemplate } from './template';\n\ntype BillingOptions = {|\n client : {\n [string] : (string | ZalgoPromise)\n },\n env? : string,\n locale? : string,\n logLevel : string,\n awaitPopupBridge : Function,\n meta : Object,\n commit : boolean,\n token : string\n|};\n\nexport const BillingPage : Component = create({\n tag: 'billing-page',\n name: 'billing-page',\n\n buildUrl(props) : string {\n const env = props.env || config.env;\n return `${ config.inlinedCardFieldUrls[env] }/billing`;\n },\n\n get domain() : Object {\n return {\n ...config.paypalDomains,\n [ ENV.LOCAL ]: /^http:\\/\\/localhost.paypal.com:\\d+$/\n };\n },\n\n scrolling: true,\n\n props: {\n sessionID: {\n type: 'string',\n required: false,\n def() : string {\n return getSessionID();\n },\n queryParam: true\n },\n\n\n token: {\n type: 'string',\n required: true,\n queryParam: true\n },\n\n buttonSessionID: {\n type: 'string',\n required: false,\n def() : ?string {\n return getButtonSessionID();\n },\n queryParam: true\n },\n\n commit: {\n type: 'boolean',\n required: false,\n queryParam: true\n },\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n },\n\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n allowDelegate: true,\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n }\n },\n\n cardType: {\n type: 'string',\n required: false\n },\n prefilledZipCode: {\n type: 'string',\n required: false\n },\n\n onEvent: {\n type: 'function',\n required: false,\n sameDomain: true\n },\n\n dispatch: {\n type: 'object',\n required: false,\n sameDomain: true\n },\n\n onCancel: {\n type: 'function',\n required: false,\n once: true,\n noop: true\n },\n\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n }\n },\n\n\n containerTemplate\n});\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { create } from 'zoid/src';\nimport { base64encode } from 'belter/src';\n\nimport { getBrowserLocale, getCurrentScriptUrl } from '../lib';\nimport { config } from '../config';\nimport { containerTemplate } from '../billing/template';\n\nexport const ThreeDomainSecure = create({\n tag: 'paypal-3ds',\n name: '3ds',\n\n buildUrl(props) : string {\n const env = props.env || config.env;\n return `${ config.inlinedCardFieldUrls[env] }/init3ds`;\n },\n\n get domain() : Object {\n return {\n ...config.paypalDomains\n };\n },\n\n scrolling: true,\n\n props: {\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n },\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n allowDelegate: true,\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n }\n },\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n },\n challengeUrl: {\n type: 'string'\n },\n threeDomainSecureToken: {\n type: 'string'\n },\n method: {\n type: 'string'\n },\n onSuccess: {\n type: 'function',\n required: false\n },\n onError: {\n type: 'function',\n required: false\n },\n onCancel: {\n type: 'function',\n required: true,\n allowDelegate: true\n }\n },\n\n\n containerTemplate\n});\n","/* @flow */\n\nimport { track, info } from 'beaver-logger/client';\n\nimport { config } from '../config';\nimport { FPTI, PPTM_ID } from '../constants';\nimport { stringifyError, extendUrl, loadScript, getElement, isPayPalDomain } from '../lib';\n\n\nfunction shouldCreateInitialPptmScript() : boolean {\n const id = window.location.hostname;\n\n if (!id) {\n return false;\n }\n\n if (isPayPalDomain()) {\n return false;\n }\n\n const existingScript = getElement(PPTM_ID);\n const alreadyDownloaded = Boolean(existingScript);\n\n if (alreadyDownloaded) {\n info('pptm_tried_loading_twice');\n return false;\n }\n\n return true;\n}\n\nfunction removePptm() {\n const script = getElement(PPTM_ID);\n\n if (script) {\n // $FlowFixMe\n script.parentNode.removeChild(script);\n }\n}\n\nexport function pptmFactory() : Object {\n let noContentFoundInContainer = false;\n const callback = `__pptmLoadedWithNoContent`;\n let listener;\n\n const obj = {\n /*\n In the button component, we set up a global window[callback] that will be called in pptm `onload` attribute.\n Button.render calls `reloadPptmScript`, which checks if window[callback] has been called yet (meaning, it checks\n if pptm.js was loaded before Button.render was called). If so, we'll check to see if we should reload PPTM\n now that we might have a client ID from the Button.render method.\n If pptm.js hasn't loaded yet, then we'll set up a listener to the same logic above to defer it until\n pptm.js actually loads.\n */\n reloadPptmScript(clientId : ?string) {\n const tryCreatePptmScript = () => {\n if (obj.shouldReloadPptmScript(clientId)) {\n obj.removePptm();\n obj.createPptmScript(clientId);\n } else {\n // Defer until later, since reloadPptmScript might have been called\n // before pptm loaded, so we'll still want to hook into the script load.\n listener = tryCreatePptmScript;\n }\n };\n\n tryCreatePptmScript();\n },\n listenForLoadWithNoContent() {\n window[callback] = () => {\n noContentFoundInContainer = true;\n\n if (listener) {\n listener();\n listener = undefined;\n }\n };\n },\n listenForButtonRender() {\n window.paypalDDL = window.paypalDDL || [];\n const buttonRenderEvent = window.paypalDDL.filter(e => e.event === 'paypalButtonRender');\n if (buttonRenderEvent.length === 0) {\n window.paypalDDL.push({ event: 'paypalButtonRender' });\n }\n },\n get callback() : string {\n return callback;\n },\n get noContentFoundInContainer() : boolean {\n return noContentFoundInContainer;\n },\n createPptmScript: (clientId : ?string) => {\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.PPTM,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.PPTM_LOAD\n });\n \n const params = {\n t: 'xo',\n id: window.location.hostname,\n mrid: config.merchantID,\n client_id: '',\n v: config.version,\n source: 'checkoutjs'\n };\n \n if (clientId) {\n params.client_id = clientId;\n } else {\n delete params.client_id;\n }\n \n const fullUrl = extendUrl(config.pptmUrl, params);\n \n loadScript(fullUrl, 0, {\n async: true,\n id: PPTM_ID\n }).then(() => {\n // If the snippet is empty, then fire the callback.\n // We assume non-empty pptm.js bundles with init the paypalDDL and push an event called\n // `snippetRun` to it.\n if (!(window.paypalDDL && window.paypalDDL[0] && window.paypalDDL[0].event === 'snippetRun')) {\n window[callback]();\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.PPTM,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.PPTM_LOADED\n });\n }).catch(err => {\n info('pptm_script_error', { error: stringifyError(err) });\n });\n },\n shouldCreateInitialPptmScript,\n /*\n During Button render if a client ID was provided, we'll want to refresh the\n pptm script to try to pull down a container by that value.\n We'll only do this if we're not on the PayPal domain, or if\n a merchant ID wasn't already provided (since container look-up can\n also happen by merchant ID). Note that this will only happen\n if there was no content found in the container that was pulled down\n in the `setup` script. This is important because we don't want\n to pull down multiple containers that actually contain content,\n otherwise we'll be firing duplicate tags.\n */\n shouldReloadPptmScript(clientId : ?string) : boolean {\n if (noContentFoundInContainer === false) {\n return false;\n }\n\n if (isPayPalDomain()) {\n return false;\n }\n \n // If a merchant ID was already provided, then that meant we initially\n // loaded the pptm script with that value as the main container\n // look-up value, so in this case we don't want to reload pptm.\n if (config.merchantID) {\n return false;\n }\n \n if (clientId) {\n return true;\n }\n \n return false;\n },\n removePptm\n };\n\n return obj;\n}\n","/* @flow */\n\nimport { pptmFactory } from './pptm-factory';\n\nexport const pptm = pptmFactory();\n","/* @flow */\n\nexport * from './pptm';\nexport * from './pptm-factory';\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { on, send } from 'post-robot/src';\nimport { base64encode } from 'belter/src';\nimport { info, track } from 'beaver-logger/client';\nimport { getAncestor, isSameDomain } from 'cross-domain-utils/src';\n\nimport { config } from '../config';\nimport { FPTI, PAYMENT_TYPE } from '../constants';\nimport { request, memoize, isPayPalDomain, uniqueID } from '../lib';\n\ntype ProxyRest = {\n [string] : (...args : $ReadOnlyArray) => ZalgoPromise<*>\n};\n\nlet proxyRest : ProxyRest = {};\n\nconst createAccessToken = memoize((env : string, client : { [key : string] : string }) : ZalgoPromise => {\n\n info(`rest_api_create_access_token`);\n\n env = env || config.env;\n\n const clientID : string = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (proxyRest.createAccessToken && !proxyRest.createAccessToken.source.closed) {\n return proxyRest.createAccessToken(env, client);\n }\n\n const basicAuth : string = base64encode(`${ clientID }:`);\n\n return request({\n\n method: `post`,\n url: config.authApiUrls[env],\n headers: {\n Authorization: `Basic ${ basicAuth }`\n },\n data: {\n grant_type: `client_credentials`\n }\n\n }).then(res => {\n\n if (res && res.error === 'invalid_client') {\n throw new Error(`Auth Api invalid ${ env } client id: ${ clientID }:\\n\\n${ JSON.stringify(res, null, 4) }`);\n }\n\n if (!res || !res.access_token) {\n throw new Error(`Auth Api response error:\\n\\n${ JSON.stringify(res, null, 4) }`);\n }\n\n return res.access_token;\n });\n\n}, { time: 10 * 60 * 1000 });\n\nconst createExperienceProfile = memoize((env : string, client : { [key : string] : string }, experienceDetails : Object = {}) : ZalgoPromise => {\n\n info(`rest_api_create_experience_profile`);\n\n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (proxyRest.createExperienceProfile && !proxyRest.createExperienceProfile.source.closed) {\n return proxyRest.createExperienceProfile(env, client, experienceDetails);\n }\n\n experienceDetails.temporary = true;\n experienceDetails.name = experienceDetails.name ? `${ experienceDetails.name }_${ Math.random().toString() }` : Math.random().toString();\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n return request({\n method: `post`,\n url: config.experienceApiUrls[env],\n headers: {\n Authorization: `Bearer ${ accessToken }`\n },\n json: experienceDetails\n });\n\n }).then((res) : string => {\n\n if (res && res.error) {\n throw new Error(res.error);\n }\n\n if (!res.id) {\n throw new Error(`No id in experience profile response:\\n\\n${ JSON.stringify(res, null, 4) }`);\n }\n\n return res.id;\n });\n\n}, { time: 10 * 60 * 1000 });\n\nfunction logPaymentResponse(res) {\n\n if (!res) {\n return;\n }\n\n let paymentToken;\n let paymentID;\n\n if (res.id) {\n paymentID = res.id;\n }\n\n if (res.links && res.links.length) {\n for (let i = 0; i < res.links.length; i++) {\n if (res.links[i].method === 'REDIRECT' && res.links[i].rel === 'approval_url') {\n const match = res.links[i].href.match(/token=((EC-)?[A-Z0-9]{17})/);\n if (match) {\n paymentToken = match[1];\n }\n }\n }\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.BUTTON,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CREATE_PAYMENT,\n [ FPTI.KEY.CONTEXT_TYPE ]: FPTI.CONTEXT_TYPE[PAYMENT_TYPE.PAY_ID],\n [ FPTI.KEY.PAY_ID ]: paymentID,\n [ FPTI.KEY.TOKEN ]: paymentToken,\n [ FPTI.KEY.CONTEXT_ID ]: paymentID\n });\n}\n\nfunction getDefaultReturnUrl() : string {\n return `https://www.paypal.com/checkoutnow/error`;\n}\n\nfunction createTracking(env : string, client : { [key : string] : string }, merchantID, trackingData) : Object {\n \n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n const trackingID = uniqueID();\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n const headers : Object = {\n Authorization: `Bearer ${ accessToken }`\n };\n\n return request({\n method: `put`,\n url: `${ config.trackingApiUrls[env] }/${ merchantID }/${ trackingID }`,\n headers,\n json: {\n 'tracking_id': trackingID,\n 'additional_data': trackingData\n }\n });\n\n }).then(() => {\n return trackingID;\n });\n}\n\nfunction createPayment(env : string, client : { [key : string] : string }, paymentDetails : Object) : ZalgoPromise {\n\n info(`rest_api_create_checkout_token`);\n\n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n let { payment, experience, meta, tracking } = paymentDetails;\n\n if (!payment) {\n throw new Error(`Expected payment details to be passed`);\n }\n\n if (proxyRest.createPayment && !proxyRest.createPayment.source.closed) {\n return proxyRest.createPayment(env, client, { payment, experience, meta, tracking });\n }\n\n payment = { ...payment };\n payment.intent = payment.intent || 'sale';\n payment.redirect_urls = payment.redirect_urls || {};\n payment.redirect_urls.return_url = payment.redirect_urls.return_url || getDefaultReturnUrl();\n payment.redirect_urls.cancel_url = payment.redirect_urls.cancel_url || getDefaultReturnUrl();\n payment.payer = payment.payer || {};\n payment.payer.payment_method = payment.payer.payment_method || 'paypal';\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n return ZalgoPromise.try(() => {\n\n if (experience) {\n return ZalgoPromise.resolve(createExperienceProfile(env, client, experience));\n }\n\n }).then((experienceID) : ZalgoPromise => {\n\n return ZalgoPromise.try(() => {\n\n if (tracking) {\n return ZalgoPromise.resolve(createTracking(env, client, tracking.id, tracking.data));\n }\n\n }).then((trackingID) : ZalgoPromise => {\n\n if (experienceID) {\n payment.experience_profile_id = experienceID;\n }\n\n const headers : Object = {\n Authorization: `Bearer ${ accessToken }`\n };\n\n if (trackingID) {\n headers['Paypal-Client-Metadata-Id'] = trackingID;\n }\n\n if (meta && meta.partner_attribution_id) {\n headers['PayPal-Partner-Attribution-Id'] = meta.partner_attribution_id;\n }\n\n return request({\n method: `post`,\n url: config.paymentApiUrls[env],\n headers,\n json: payment\n });\n });\n });\n\n }).then((res) : string => {\n\n logPaymentResponse(res);\n\n if (res && res.id) {\n return res.id;\n }\n\n throw new Error(`Payment Api response error:\\n\\n${ JSON.stringify(res, null, 4) }`);\n\n });\n}\n\nfunction createOrder(env : string, client : { [key : string] : string }, paymentDetails : Object) : ZalgoPromise {\n\n info(`rest_api_create_order_token`);\n\n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n let { order, meta } = paymentDetails;\n\n if (!order) {\n throw new Error(`Expected order details to be passed`);\n }\n\n if (proxyRest.createOrder && !proxyRest.createOrder.source.closed) {\n return proxyRest.createOrder(env, client, { order, meta });\n }\n\n order = { ...order };\n order.intent = order.intent || 'CAPTURE';\n order.application_context = order.application_context || {};\n order.application_context.return_url = order.application_context.return_url || getDefaultReturnUrl();\n order.application_context.cancel_url = order.application_context.cancel_url || getDefaultReturnUrl();\n order.purchase_units = order.purchase_units || [];\n order.purchase_units[0] = order.purchase_units[0] || {};\n order.purchase_units.forEach(unit => {\n unit.reference_id = unit.reference_id || Math.random().toString();\n });\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n const headers : Object = {\n Authorization: `Bearer ${ accessToken }`\n };\n\n if (meta && meta.partner_attribution_id) {\n headers['PayPal-Partner-Attribution-Id'] = meta.partner_attribution_id;\n }\n\n return request({\n method: `post`,\n url: config.orderApiUrls[env],\n headers,\n json: order\n });\n\n }).then((res) : string => {\n\n logPaymentResponse(res);\n\n if (res && res.id) {\n return res.id;\n }\n\n throw new Error(`Payment Api response error:\\n\\n${ JSON.stringify(res, null, 4) }`);\n });\n}\n\nexport function createBillingAgreement(env : string, client : { [key : string] : string }, billingDetails : Object, experienceDetails? : ?Object) : ZalgoPromise {\n\n info(`rest_api_create_billing_token`);\n\n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (proxyRest.createBillingAgreement && !proxyRest.createBillingAgreement.source.closed) {\n return proxyRest.createBillingAgreement(env, client, billingDetails, experienceDetails);\n }\n\n billingDetails = { ...billingDetails };\n billingDetails.plan = billingDetails.plan || {};\n billingDetails.plan.merchant_preferences = billingDetails.plan.merchant_preferences || {};\n billingDetails.plan.merchant_preferences.return_url = billingDetails.plan.merchant_preferences.return_url || getDefaultReturnUrl();\n billingDetails.plan.merchant_preferences.cancel_url = billingDetails.plan.merchant_preferences.cancel_url || getDefaultReturnUrl();\n billingDetails.payer = billingDetails.payer || {};\n billingDetails.payer.payment_method = billingDetails.payer.payment_method || 'paypal';\n\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n return ZalgoPromise.try(() => {\n\n if (experienceDetails) {\n return ZalgoPromise.resolve(createExperienceProfile(env, client, experienceDetails));\n }\n\n }).then((experienceID) : ZalgoPromise => {\n\n if (experienceID) {\n billingDetails.experience_profile_id = experienceID;\n }\n\n return request({\n method: `post`,\n url: config.billingApiUrls[env],\n headers: {\n Authorization: `Bearer ${ accessToken }`\n },\n json: billingDetails\n });\n });\n\n }).then(res => {\n\n if (res && res.token_id) {\n return res.token_id;\n }\n\n throw new Error(`Billing Api response error:\\n\\n${ JSON.stringify(res, null, 4) }`);\n });\n}\n\nexport const rest = {\n payment: {\n create: createPayment\n },\n order: {\n create: createOrder\n },\n billingAgreement: {\n create: createBillingAgreement\n },\n experience: {\n create: createExperienceProfile\n }\n};\n\nconst PROXY_REST = `proxy_rest`;\nconst parentWin = getAncestor();\n\non(PROXY_REST, { domain: config.paypal_domain_regex }, ({ data }) => {\n proxyRest = data;\n});\n\nif (parentWin && isPayPalDomain() && !isSameDomain(parentWin)) {\n send(parentWin, PROXY_REST, { createAccessToken, createExperienceProfile, createPayment, createBillingAgreement, createOrder })\n .catch(() => {\n // pass\n });\n}\n","/* @flow */\n\nimport { info, track, immediateFlush } from 'beaver-logger/client';\n\nimport { FPTI, PAYMENT_TYPE } from './constants';\nimport { getReturnToken, getSessionState, getDomainSetting, eventEmitter } from './lib';\n\nexport const onAuthorizeListener = eventEmitter();\n\nfunction log(experiment : string, treatment : string, token : ?string, state : string) {\n\n getSessionState(session => {\n\n let event = `${ experiment }_${ treatment }_${ state }`;\n const loggedEvents = session.loggedExperimentEvents = session.loggedExperimentEvents || [];\n const duplicate = loggedEvents.indexOf(event) !== -1;\n\n if (duplicate) {\n info(`duplicate_${ event }`);\n\n } else {\n info(event);\n loggedEvents.push(event);\n\n const edge = window.navigator && window.navigator.userAgent && window.navigator.userAgent.match(/Edge\\/[0-9]{2}/);\n\n if (edge) {\n event = info(`${ edge[0].toLowerCase().replace('/', '_') }_${ event }`);\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: state,\n [ FPTI.KEY.EXPERIMENT_NAME ]: experiment,\n [ FPTI.KEY.TREATMENT_NAME ]: treatment,\n [ FPTI.KEY.TOKEN ]: token,\n [ FPTI.KEY.CONTEXT_ID ]: token,\n [ FPTI.KEY.CONTEXT_TYPE ]: token ? FPTI.CONTEXT_TYPE[PAYMENT_TYPE.EC_TOKEN] : FPTI.CONTEXT_TYPE.BUTTON_SESSION_ID\n });\n\n immediateFlush();\n }\n });\n}\n\nexport function logExperimentTreatment({ experiment, treatment, state, token } : { experiment : string, treatment : string, state : string, token : ?string }) {\n\n if (!experiment || !treatment) {\n return;\n }\n\n getSessionState(session => {\n session.externalExperiment = experiment;\n session.externalExperimentTreatment = treatment;\n\n if (token) {\n session.externalExperimentToken = token;\n }\n });\n\n log(experiment, treatment, token, state);\n}\n\nfunction logReturn(token : string) {\n\n const {\n externalExperiment,\n externalExperimentTreatment,\n externalExperimentToken\n } = getSessionState(session => session);\n\n if (externalExperiment && externalExperimentTreatment && externalExperimentToken === token) {\n log(externalExperiment, externalExperimentTreatment, token, `complete`);\n } else {\n info(`experiment_mismatch`, {\n token,\n externalExperiment,\n externalExperimentTreatment,\n externalExperimentToken\n });\n }\n}\n\nif (getDomainSetting('log_authorize')) {\n\n onAuthorizeListener.once(({ paymentToken }) => {\n setTimeout(() => {\n logReturn(paymentToken);\n }, 1);\n });\n\n const returnToken = getReturnToken();\n\n if (returnToken) {\n setTimeout(() => {\n if (returnToken) {\n logReturn(returnToken);\n }\n }, 1);\n }\n}\n","/* @flow */\n\nimport { once, noop } from 'zoid/src/lib';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { error } from 'beaver-logger/client';\nimport type { CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { extendUrl, redirect, awaitKey, stringifyError } from '../lib';\nimport { config } from '../config';\nimport { FUNDING } from '../constants';\n\nimport { determineParameterFromToken, determineUrl } from './checkout';\n\nconst OPTYPE = {\n PAYMENT: 'payment',\n CANCEL: 'cancel'\n};\n\nconst CONTINGENCY = {\n PAYMENT_CANCELLED: 'PAYMENT_CANCELLED'\n};\n\ntype PopupBridge = {|\n open : (string) => ZalgoPromise\n|};\n\nfunction wrapPopupBridge(popupBridge : Object) : PopupBridge {\n return {\n open(url : string) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n popupBridge.onComplete = (err, result) => {\n if (!result) {\n return reject(new Error('No payload passed in popupBridge.onComplete'));\n }\n\n return err ? reject(err) : resolve(result);\n };\n\n popupBridge.onCancel = () => {\n const err = new Error(CONTINGENCY.PAYMENT_CANCELLED);\n // $FlowFixMe\n err.code = CONTINGENCY.PAYMENT_CANCELLED;\n return reject(err);\n };\n\n popupBridge.open(extendUrl(url, { redirect_uri: popupBridge.getReturnUrlPrefix() }));\n });\n }\n };\n}\n\nfunction validateCheckoutProps(props) {\n if (!props.payment) {\n throw new Error(`Expected props.payment to be passed`);\n }\n\n if (!props.onAuthorize) {\n throw new Error(`Expected props.onAuthorize to be passed`);\n }\n\n if (props.env && !config.checkoutUrls[props.env]) {\n throw new Error(`Invalid props.env: ${ props.env }`);\n }\n}\n\nfunction normalizeCheckoutProps(props : Object) : { env : string, payment : Function, onAuthorize : Function, onCancel : Function } {\n const env = props.env = props.env || config.env;\n\n const payment = props.payment;\n const onAuthorize = once(props.onAuthorize);\n const onCancel = once(props.onCancel || noop);\n\n return { env, payment, onAuthorize, onCancel };\n}\n\nfunction getUrl(props : { env : string, payment : Function, onAuthorize : Function, onCancel? : Function, commit? : boolean }) : ZalgoPromise {\n\n const { env, payment } = normalizeCheckoutProps(props);\n\n return ZalgoPromise.try(payment, { props }).then(token => {\n if (!token) {\n throw new Error(`Expected props.payment to return a payment id or token`);\n }\n\n return extendUrl(determineUrl(env, FUNDING.PAYPAL, token), {\n [determineParameterFromToken(token)]: token,\n\n useraction: props.commit ? 'commit' : '',\n native_xo: '1'\n });\n });\n}\n\nfunction extractDataFromQuery(query : Object) : Object {\n\n const data : Object = {\n paymentToken: query.token,\n billingToken: query.ba_token,\n paymentID: query.paymentId,\n payerID: query.PayerID,\n intent: query.intent\n };\n \n const { opType, return_uri, cancel_uri } = query;\n\n if (opType === OPTYPE.PAYMENT) {\n data.returnUrl = return_uri;\n\n } else if (opType === OPTYPE.CANCEL) {\n data.cancelUrl = cancel_uri;\n }\n\n return data;\n}\n\nfunction buildActions(query : Object) : Object {\n \n const actions : Object = {\n close: noop,\n closeComponent: noop\n };\n\n const { opType, return_uri, cancel_uri } = query;\n\n if (opType === OPTYPE.PAYMENT) {\n actions.redirect = (win : CrossDomainWindowType = window, redirectUrl : string = return_uri) : ZalgoPromise => {\n return redirect(win, redirectUrl);\n };\n\n } else if (opType === OPTYPE.CANCEL) {\n actions.redirect = (win : CrossDomainWindowType = window, redirectUrl : string = cancel_uri) : ZalgoPromise => {\n return redirect(win, redirectUrl);\n };\n }\n\n return actions;\n}\n\nfunction renderThroughPopupBridge(props : Object, popupBridge : PopupBridge) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n validateCheckoutProps(props);\n\n }).then(() => {\n\n return getUrl(props);\n \n }).then(url => {\n\n return popupBridge.open(url);\n\n }).then(payload => {\n\n const { opType } = payload.queryItems;\n const { onAuthorize, onCancel } = normalizeCheckoutProps(props);\n\n const data = extractDataFromQuery(payload.queryItems);\n const actions = buildActions(payload.queryItems);\n \n if (opType === OPTYPE.PAYMENT) {\n return onAuthorize(data, actions);\n\n } else if (opType === OPTYPE.CANCEL) {\n return onCancel(data, actions);\n \n } else {\n throw new Error(`Invalid opType: ${ opType }`);\n }\n\n }).catch(err => {\n\n if (err && err.code === CONTINGENCY.PAYMENT_CANCELLED) {\n const { onCancel } = normalizeCheckoutProps(props);\n return onCancel({}, {});\n }\n\n throw err;\n });\n}\n\nexport function awaitPopupBridge(Button : Object) : ZalgoPromise {\n if (Button.xprops && Button.xprops.awaitPopupBridge) {\n return Button.xprops.awaitPopupBridge();\n }\n\n return awaitKey(window, 'popupBridge').then(popupBridge => {\n return wrapPopupBridge(popupBridge);\n });\n}\n\nexport function setupPopupBridgeProxy(Checkout : Object, Button : Object) {\n\n let popupBridge;\n\n awaitPopupBridge(Button).then(bridge => {\n popupBridge = bridge;\n });\n\n function doRender(props, original) : ZalgoPromise {\n if (!popupBridge) {\n return original();\n }\n \n return renderThroughPopupBridge(props, popupBridge)\n .catch(err => {\n error(`popup_bridge_error`, { err: stringifyError(err) });\n return original();\n });\n }\n\n const render = Checkout.render;\n Checkout.render = function popupBridgeRender(props : Object) : ZalgoPromise {\n return doRender(props, () => render.apply(this, arguments));\n };\n\n const renderTo = Checkout.renderTo;\n Checkout.renderTo = function popupBridgeRenderTo(win : CrossDomainWindowType, props : Object) : ZalgoPromise {\n return doRender(props, () => renderTo.apply(this, arguments));\n };\n\n const renderPopupTo = Checkout.renderPopupTo;\n Checkout.renderPopupTo = function popupBridgeRenderPopupTo(win : CrossDomainWindowType, props : Object) : ZalgoPromise {\n return doRender(props, () => renderPopupTo.apply(this, arguments));\n };\n}\n","/* @flow */\n/* global __paypal_checkout__*/\n\nimport { FUNDING, COUNTRY, CARD, PLATFORM, DEFAULT, ENV } from '../constants';\n\nexport const FUNDING_PRIORITY = [\n FUNDING.PAYPAL,\n FUNDING.VENMO,\n FUNDING.ITAU,\n FUNDING.CREDIT,\n FUNDING.CARD,\n FUNDING.IDEAL,\n FUNDING.ELV,\n FUNDING.BANCONTACT,\n FUNDING.GIROPAY,\n FUNDING.EPS,\n FUNDING.SOFORT,\n FUNDING.MYBANK,\n FUNDING.BLIK,\n FUNDING.P24,\n FUNDING.PAYU,\n FUNDING.VERKKOPANKKI,\n FUNDING.TRUSTLY,\n FUNDING.MAXIMA,\n FUNDING.BOLETO,\n FUNDING.OXXO\n];\n\nexport const FUNDING_ORDER = [\n FUNDING.PAYPAL,\n FUNDING.VENMO,\n FUNDING.ITAU,\n FUNDING.CREDIT,\n FUNDING.IDEAL,\n FUNDING.ELV,\n FUNDING.BANCONTACT,\n FUNDING.GIROPAY,\n FUNDING.EPS,\n FUNDING.SOFORT,\n FUNDING.MYBANK,\n FUNDING.BLIK,\n FUNDING.P24,\n FUNDING.PAYU,\n FUNDING.VERKKOPANKKI,\n FUNDING.TRUSTLY,\n FUNDING.MAXIMA,\n FUNDING.BOLETO,\n FUNDING.OXXO,\n FUNDING.CARD\n];\n\nexport const FUNDING_CONFIG = {\n\n [ DEFAULT ]: {\n enabled: true,\n\n allowOptIn: true,\n allowOptOut: true,\n allowRemember: true,\n\n allowHorizontal: true,\n allowVertical: true,\n\n requireCommitAsTrue: false\n },\n\n [ FUNDING.PAYPAL ]: {\n default: true,\n\n allowOptIn: false,\n allowOptOut: false,\n\n allowHorizontal: true,\n allowVertical: true\n },\n\n [ FUNDING.CARD ]: {\n // $FlowFixMe\n default: (typeof __paypal_checkout__ === 'undefined' ? true : __paypal_checkout__.serverConfig.paypalMerchantConfiguration.creditCard.isPayPalBranded),\n\n allowHorizontal: false,\n allowVertical: true\n },\n\n [ FUNDING.VENMO ]: {\n allowOptOut: true,\n allowedCountries: [\n COUNTRY.US\n ],\n\n allowHorizontal: true,\n allowVertical: true\n },\n [ FUNDING.ITAU ]: {\n allowOptOut: true,\n allowedCountries: [\n COUNTRY.BR\n ],\n\n allowHorizontal: true,\n allowVertical: true\n },\n\n [ FUNDING.CREDIT ]: {\n allowedCountries: [\n COUNTRY.US,\n COUNTRY.GB,\n COUNTRY.DE\n ],\n defaultVerticalCountries: [\n COUNTRY.US\n ],\n platforms: [\n PLATFORM.MOBILE\n ],\n\n allowHorizontal: true,\n allowVertical: true,\n allowRemember: true\n },\n\n [ FUNDING.IDEAL ]: {\n allowedCountries: [\n COUNTRY.NL\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.ELV ]: {\n allowedCountries: [\n COUNTRY.DE\n ],\n defaultVerticalCountries: [\n COUNTRY.DE\n ],\n\n allowHorizontal: false,\n allowVertical: true\n },\n\n [ FUNDING.BANCONTACT ]: {\n allowedCountries: [\n COUNTRY.BE\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.GIROPAY ]: {\n allowedCountries: [\n COUNTRY.DE\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.SOFORT ]: {\n allowedCountries: [\n COUNTRY.DE,\n COUNTRY.AT,\n COUNTRY.BE,\n COUNTRY.ES,\n COUNTRY.IT,\n COUNTRY.NL\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.EPS ]: {\n allowedCountries: [\n COUNTRY.AT\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.MYBANK ]: {\n allowedCountries: [\n COUNTRY.IT\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.P24 ]: {\n allowedCountries: [\n COUNTRY.PL\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.PAYU ]: {\n allowedCountries: [\n COUNTRY.CZ\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.VERKKOPANKKI ]: {\n allowedCountries: [\n COUNTRY.FI\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.BLIK ]: {\n allowedCountries: [\n COUNTRY.PL\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.TRUSTLY ]: {\n allowedCountries: [\n COUNTRY.DE,\n COUNTRY.DK,\n COUNTRY.EE,\n COUNTRY.ES,\n COUNTRY.FI,\n COUNTRY.GB,\n COUNTRY.IT,\n COUNTRY.MT,\n COUNTRY.NL,\n COUNTRY.NO,\n COUNTRY.SE\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.MAXIMA ]: {\n allowedCountries: [\n COUNTRY.LT\n ],\n\n allowedEnvs: [\n ENV.LOCAL,\n ENV.STAGE,\n ENV.TEST\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.BOLETO ]: {\n allowedCountries: [\n COUNTRY.BR\n ],\n\n allowedEnvs: [\n ENV.LOCAL,\n ENV.STAGE,\n ENV.TEST\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.OXXO ]: {\n allowedCountries: [\n COUNTRY.MX\n ],\n\n allowedEnvs: [\n ENV.LOCAL,\n ENV.STAGE,\n ENV.TEST\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.ZIMPLER ]: {\n allowedCountries: [],\n\n allowHorizontal: false,\n allowVertical: false,\n requireCommitAsTrue: true\n }\n};\n\nexport const CARD_CONFIG = {\n\n [ DEFAULT ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX\n ]\n },\n\n [ COUNTRY.GB ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.DISCOVER,\n CARD.MAESTRO\n ]\n },\n\n [ COUNTRY.US ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.DISCOVER\n ]\n },\n\n [ COUNTRY.BR ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.HIPER,\n CARD.ELO\n ]\n },\n\n [ COUNTRY.JP ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.JCB\n ]\n },\n\n [ COUNTRY.CN ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.CUP\n ]\n }\n};\n\nfunction getConfig(conf : Object, category : string, key : string, def : ?T) : T {\n const categoryConfig = conf[category];\n\n if (categoryConfig && categoryConfig.hasOwnProperty(key)) {\n return categoryConfig[key];\n }\n\n if (conf[DEFAULT] && conf[DEFAULT].hasOwnProperty(key)) {\n return conf[DEFAULT][key];\n }\n\n if (arguments.length >= 4) {\n // $FlowFixMe\n return def;\n }\n\n throw new Error(`No value found for ${ category }:${ key }`);\n}\n\nexport function getFundingConfig(source : string, key : string, def : ?T) : T {\n return getConfig(FUNDING_CONFIG, source, key, def);\n}\n\nexport function getCardConfig(source : string, key : string, def : ?T) : T {\n return getConfig(CARD_CONFIG, source, key, def);\n}\n","/* @flow */\n\nimport { ENV, CARD_PRIORITY, FUNDING, BUTTON_LAYOUT, FUNDING_ELIGIBILITY_REASON } from '../constants';\nimport type { LocaleType, FundingSource, FundingSelection, FundingList } from '../types';\n\nimport { getFundingConfig, getCardConfig, FUNDING_PRIORITY, FUNDING_CONFIG } from './config';\n\nconst fundingEligibilityReasons = [];\n\nexport function isFundingIneligible(source : FundingSource, { locale, funding, layout, commit, env } :\n { locale : LocaleType, funding : FundingSelection, layout : string, commit? : boolean, env : string }) : ?string {\n\n const isVertical = layout === BUTTON_LAYOUT.VERTICAL;\n const allowSecondary = getFundingConfig(source, isVertical ? 'allowVertical' : 'allowHorizontal');\n\n if (!allowSecondary) {\n return FUNDING_ELIGIBILITY_REASON.SECONDARY_DISALLOWED;\n }\n\n if (funding.disallowed.indexOf(source) !== -1 && getFundingConfig(source, 'allowOptOut')) {\n return FUNDING_ELIGIBILITY_REASON.OPT_OUT;\n }\n\n if (funding.disallowed.indexOf(source) !== -1 && source === FUNDING.VENMO) {\n return FUNDING_ELIGIBILITY_REASON.OPT_OUT;\n }\n if (funding.disallowed.indexOf(source) !== -1 && source === FUNDING.ITAU) {\n return FUNDING_ELIGIBILITY_REASON.OPT_OUT;\n }\n\n if (getFundingConfig(source, 'allowedCountries', [ locale.country ]).indexOf(locale.country) === -1) {\n return FUNDING_ELIGIBILITY_REASON.DISALLOWED_COUNTRY;\n }\n\n if (getFundingConfig(source, 'requireCommitAsTrue') && !commit) {\n return FUNDING_ELIGIBILITY_REASON.COMMIT_NOT_SET;\n }\n\n const allowedEnvs = getFundingConfig(source, 'allowedEnvs');\n if (allowedEnvs && allowedEnvs.indexOf(env) === -1) {\n return FUNDING_ELIGIBILITY_REASON.INVALID_ENV;\n }\n}\n\nexport function isFundingAutoEligible(source : FundingSource, { locale, funding, layout } :\n { locale : LocaleType, funding : FundingSelection, layout : string }) : ?string {\n\n const isVertical = layout === BUTTON_LAYOUT.VERTICAL;\n\n if (isVertical && getFundingConfig(source, 'defaultVerticalCountries', []).indexOf(locale.country) !== -1) {\n return FUNDING_ELIGIBILITY_REASON.DEFAULT_COUNTRY;\n }\n\n if (getFundingConfig(source, 'default')) {\n return FUNDING_ELIGIBILITY_REASON.DEFAULT;\n }\n\n if (funding.allowed.indexOf(source) !== -1 && getFundingConfig(source, 'allowOptIn')) {\n return FUNDING_ELIGIBILITY_REASON.OPT_IN;\n }\n\n if (funding.remembered.indexOf(source) !== -1 && getFundingConfig(source, 'allowRemember')) {\n return FUNDING_ELIGIBILITY_REASON.REMEMBERED;\n }\n}\n\nexport function isFundingEligible(source : FundingSource, { locale, funding, env, layout, selected, commit } :\n { locale : LocaleType, funding : FundingSelection, env : string, layout : string, selected? : string, commit : boolean }) : { eligible : boolean, reason : string } {\n\n if (selected && source === selected) {\n return { eligible: true, reason: FUNDING_ELIGIBILITY_REASON.PRIMARY };\n }\n\n if (!getFundingConfig(source, 'enabled')) {\n if (!(env === ENV.TEST && getFundingConfig(source, 'test'))) {\n return { eligible: false, reason: FUNDING_ELIGIBILITY_REASON.NOT_ENABLED };\n }\n }\n\n const ineligibleReason = isFundingIneligible(source, { locale, funding, layout, commit, env });\n\n if (ineligibleReason) {\n return { eligible: false, reason: ineligibleReason };\n }\n\n const autoEligibleReason = isFundingAutoEligible(source, { locale, funding, layout });\n\n if (autoEligibleReason) {\n return { eligible: true, reason: autoEligibleReason };\n }\n\n return { eligible: false, reason: FUNDING_ELIGIBILITY_REASON.NEED_OPT_IN };\n}\n\nexport function determineEligibleFunding({ funding, selected, locale, env, layout, commit } :\n { funding : FundingSelection, selected : FundingSource, locale : LocaleType, env : string, layout : string, commit : boolean }) : FundingList {\n\n const reasons = {};\n\n const eligibleFunding = FUNDING_PRIORITY.filter(source => {\n const { eligible, reason } = isFundingEligible(source, { selected, locale, funding, env, layout, commit });\n reasons[source] = { eligible, reason, factors: { env, locale, layout } };\n return eligible;\n });\n\n fundingEligibilityReasons.push(reasons);\n\n eligibleFunding.splice(eligibleFunding.indexOf(selected), 1);\n eligibleFunding.unshift(selected);\n\n return eligibleFunding;\n}\n\nexport function determineEligibleCards({ funding, locale } :\n { funding : FundingSelection, locale : LocaleType }) : FundingList {\n\n return getCardConfig(locale.country, 'priority')\n .filter(card => funding.disallowed.indexOf(card) === -1);\n}\n\nexport function validateFunding(funding : FundingSelection = { allowed: [], disallowed: [], remembered: [] }) {\n\n if (funding.allowed) {\n for (const source of funding.allowed) {\n if (CARD_PRIORITY.indexOf(source) !== -1) {\n continue;\n }\n\n if (!FUNDING_CONFIG.hasOwnProperty(source)) {\n throw new Error(`Invalid funding source: ${ source }`);\n }\n\n if (!getFundingConfig(source, 'allowOptIn')) {\n throw new Error(`Can not allow funding source: ${ source }`);\n }\n\n if (funding.disallowed && funding.disallowed.indexOf(source) !== -1) {\n throw new Error(`Can not allow and disallow funding source: ${ source }`);\n }\n }\n }\n\n if (funding.disallowed) {\n for (const source of funding.disallowed) {\n if (CARD_PRIORITY.indexOf(source) !== -1) {\n continue;\n }\n\n if (!FUNDING_CONFIG.hasOwnProperty(source)) {\n throw new Error(`Invalid funding source: ${ source }`);\n }\n\n if (!getFundingConfig(source, 'allowOptOut')) {\n throw new Error(`Can not disallow funding source: ${ source }`);\n }\n }\n }\n}\n\nexport function logFundingEligibility() {\n fundingEligibilityReasons.forEach((reasons, i) => {\n console.log(`\\nButton ${ i + 1 }:\\n`); // eslint-disable-line no-console\n\n console.table(Object.keys(reasons).map(source => { // eslint-disable-line no-console, compat/compat\n const { reason, eligible, factors } = reasons[source];\n\n return {\n 'Funding': source,\n 'Reason': reason,\n 'Eligibility': eligible ? 'eligible' : 'ineligible',\n 'Factors': JSON.stringify(factors)\n };\n }));\n });\n}\n","/* @flow */\n/* eslint no-template-curly-in-string: off, max-lines: off */\n\nimport { FUNDING, DEFAULT, COUNTRY, BUTTON_LABEL, BUTTON_COLOR, BUTTON_LOGO_COLOR, BUTTON_SIZE,\n BUTTON_TAGLINE_COLOR, BUTTON_SHAPE, BUTTON_LAYOUT, BUTTON_LOGO } from '../constants';\n\ntype ButtonConfig = {\n [ string ] : {\n colors? : $ReadOnlyArray<$Values>\n }\n};\n\nexport const BUTTON_CONFIG : ButtonConfig = {\n\n [ DEFAULT ]: {\n\n colors: [\n BUTTON_COLOR.GOLD,\n BUTTON_COLOR.BLUE,\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n sizes: [\n BUTTON_SIZE.SMALL,\n BUTTON_SIZE.MEDIUM,\n BUTTON_SIZE.LARGE,\n BUTTON_SIZE.RESPONSIVE\n ],\n\n shapes: [\n BUTTON_SHAPE.PILL,\n BUTTON_SHAPE.RECT\n ],\n\n layouts: [\n BUTTON_LAYOUT.HORIZONTAL,\n BUTTON_LAYOUT.VERTICAL\n ],\n\n logoColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_LOGO_COLOR.BLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLUE\n },\n\n tagLineColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_TAGLINE_COLOR.BLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_TAGLINE_COLOR.BLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_TAGLINE_COLOR.BLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_TAGLINE_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_TAGLINE_COLOR.BLUE\n\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n tag: `{ content: safer_tag }`,\n dualTag: `{ content: dual_tag|safer_tag }`,\n\n defaultLocale: `en_US`,\n defaultLabel: BUTTON_LABEL.CHECKOUT,\n defaultVerticalLabel: BUTTON_LABEL.PAYPAL,\n defaultColor: BUTTON_COLOR.GOLD,\n defaultSize: BUTTON_SIZE.SMALL,\n defaultVerticalSize: BUTTON_SIZE.MEDIUM,\n defaultShape: BUTTON_SHAPE.PILL,\n defaultLayout: BUTTON_LAYOUT.HORIZONTAL,\n defaultBranding: true,\n defaultVerticalBranding: true,\n defaultFundingIcons: false,\n defaultTagline: true,\n defaultDual: ``,\n\n minimumSize: BUTTON_SIZE.TINY,\n minimumVerticalSize: BUTTON_SIZE.MEDIUM,\n\n maximumSize: BUTTON_SIZE.HUGE,\n maximumVerticalSize: BUTTON_SIZE.HUGE,\n\n minHorizontalButtons: 1,\n minVerticalButtons: 1,\n\n maxHorizontalButtons: 2,\n maxVerticalButtons: 6,\n\n allowUnbranded: false,\n allowFundingIcons: true,\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.PAYPAL ]: {\n label: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n allowPrimary: true,\n\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true\n },\n\n [ BUTTON_LABEL.CHECKOUT ]: {\n label: `{ content: checkout }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n allowPrimary: true,\n\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true\n },\n\n [ BUTTON_LABEL.PAY ]: {\n label: `{ content: pay }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n allowPrimary: true,\n\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true\n },\n\n [ BUTTON_LABEL.BUYNOW ]: {\n label: `{ content: buynow }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n defaultBranding: undefined,\n\n allowPrimary: true,\n\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true,\n\n allowUnbranded: true\n },\n\n [ BUTTON_LABEL.INSTALLMENT ]: {\n label: (style) => { return `{ content: ${ style.installmentperiod ? 'installment_period' : 'installment' } }`; },\n logoLabel: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n allowPrimary: true,\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true,\n allowSecondaryVertical: false,\n allowSecondaryHorizontal: false\n },\n\n [ BUTTON_LABEL.CREDIT ]: {\n label: ({ locale }) => {\n if (locale.country === COUNTRY.DE) {\n return `{ logo: ${ BUTTON_LOGO.CREDIT } }`;\n }\n\n return `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } } { logo: ${ BUTTON_LOGO.CREDIT } }`;\n },\n logoLabel: ({ locale }) => {\n if (locale.country === COUNTRY.DE) {\n return `{ logo: ${ BUTTON_LOGO.CREDIT } }`;\n }\n\n return `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } } { logo: ${ BUTTON_LOGO.CREDIT } }`;\n },\n\n tag: `{ content: later_tag }`,\n\n colors: [\n BUTTON_COLOR.DARKBLUE,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLUE\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n defaultColor: BUTTON_COLOR.DARKBLUE,\n\n allowPrimary: true,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false,\n\n allowFundingIcons: false\n },\n\n [ BUTTON_LABEL.VENMO ]: {\n label: `{ logo: ${ BUTTON_LOGO.VENMO } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.VENMO } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.BLUE,\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.BLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLUE\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: true,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: true\n },\n [ BUTTON_LABEL.ITAU ]: {\n label: `{ logo: ${ BUTTON_LOGO.ITAU } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.ITAU } }`,\n\n defaultColor: BUTTON_COLOR.DARKBLUE,\n\n colors: [\n BUTTON_COLOR.DARKBLUE,\n BUTTON_COLOR.BLUE,\n BUTTON_COLOR.BLACK\n ],\n\n logoColors: {\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.DARKBLUE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: true\n },\n\n [ BUTTON_LABEL.IDEAL ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.IDEAL } } Online betalen`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.IDEAL } } Online betalen`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.ELV ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.ELV } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.ELV } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.BANCONTACT ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.BANCONTACT } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.BANCONTACT } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.GIROPAY ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.GIROPAY } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.GIROPAY } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.SOFORT ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.SOFORT } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.SOFORT } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.EPS ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.EPS } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.EPS } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.MYBANK ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.MYBANK } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.MYBANK } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.P24 ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.P24 } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.P24 } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.PAYU ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.PAYU } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PAYU } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.VERKKOPANKKI ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.VERKKOPANKKI } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.VERKKOPANKKI } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.BLIK ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.BLIK } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.BLIK } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.TRUSTLY ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.TRUSTLY } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.TRUSTLY } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.MAXIMA ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.MAXIMA } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.MAXIMA } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.BOLETO ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.BOLETO } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.BOLETO } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.OXXO ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.OXXO } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.OXXO } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.CARD ]: {\n\n label: `{ cards }`,\n logoLabel: `{ cards }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.TRANSPARENT\n ],\n\n logoColors: {\n [ BUTTON_COLOR.TRANSPARENT ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.TRANSPARENT\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n }\n};\n\nexport const FUNDING_TO_DEFAULT_LABEL = {\n [ FUNDING.PAYPAL ]: BUTTON_LABEL.PAYPAL,\n [ FUNDING.VENMO ]: BUTTON_LABEL.VENMO,\n [ FUNDING.ITAU ]: BUTTON_LABEL.ITAU,\n [ FUNDING.CARD ]: BUTTON_LABEL.CARD,\n [ FUNDING.CREDIT ]: BUTTON_LABEL.CREDIT,\n [ FUNDING.IDEAL ]: BUTTON_LABEL.IDEAL,\n [ FUNDING.ELV ]: BUTTON_LABEL.ELV,\n [ FUNDING.BANCONTACT ]: BUTTON_LABEL.BANCONTACT,\n [ FUNDING.GIROPAY ]: BUTTON_LABEL.GIROPAY,\n [ FUNDING.SOFORT ]: BUTTON_LABEL.SOFORT,\n [ FUNDING.EPS ]: BUTTON_LABEL.EPS,\n [ FUNDING.P24 ]: BUTTON_LABEL.P24,\n [ FUNDING.MYBANK ]: BUTTON_LABEL.MYBANK,\n [ FUNDING.PAYU ]: BUTTON_LABEL.PAYU,\n [ FUNDING.VERKKOPANKKI]: BUTTON_LABEL.VERKKOPANKKI,\n [ FUNDING.BLIK ]: BUTTON_LABEL.BLIK,\n [ FUNDING.TRUSTLY ]: BUTTON_LABEL.TRUSTLY,\n [ FUNDING.MAXIMA ]: BUTTON_LABEL.MAXIMA,\n [ FUNDING.BOLETO ]: BUTTON_LABEL.BOLETO,\n [ FUNDING.OXXO ]: BUTTON_LABEL.OXXO\n};\n\nexport const LABEL_TO_FUNDING = {\n [ BUTTON_LABEL.PAYPAL ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.CHECKOUT ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.PAY ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.BUYNOW ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.INSTALLMENT ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.CARD ]: FUNDING.CARD,\n [ BUTTON_LABEL.CREDIT ]: FUNDING.CREDIT,\n [ BUTTON_LABEL.VENMO ]: FUNDING.VENMO,\n [ BUTTON_LABEL.ITAU ]: FUNDING.ITAU,\n [ BUTTON_LABEL.IDEAL ]: FUNDING.IDEAL,\n [ BUTTON_LABEL.BANCONTACT]: FUNDING.BANCONTACT,\n [ BUTTON_LABEL.GIROPAY]: FUNDING.GIROPAY,\n [ BUTTON_LABEL.EPS ]: FUNDING.EPS,\n [ BUTTON_LABEL.SOFORT ]: FUNDING.SOFORT,\n [ BUTTON_LABEL.P24 ]: FUNDING.P24,\n [ BUTTON_LABEL.MYBANK ]: FUNDING.MYBANK,\n [ BUTTON_LABEL.PAYU ]: FUNDING.PAYU,\n [ BUTTON_LABEL.VERKKOPANKKI ]: FUNDING.VERKKOPANKKI,\n [ BUTTON_LABEL.BLIK ]: FUNDING.BLIK,\n [ BUTTON_LABEL.TRUSTLY ]: FUNDING.TRUSTLY,\n [ BUTTON_LABEL.MAXIMA ]: FUNDING.MAXIMA,\n [ BUTTON_LABEL.BOLETO ]: FUNDING.BOLETO,\n [ BUTTON_LABEL.OXXO ]: FUNDING.OXXO\n};\n\nexport const BUTTON_RELATIVE_STYLE = {\n FUNDINGICONS: 100,\n TAGLINE: 50,\n VERTICAL_MARGIN: 30\n};\n\nexport const BUTTON_STYLE = {\n\n [ BUTTON_SIZE.TINY ]: {\n defaultWidth: 75,\n defaultHeight: 25,\n minWidth: 75,\n maxWidth: 150,\n minHeight: 25,\n maxHeight: 30,\n buttonTextMargin: 0.5,\n allowFunding: true,\n allowTagline: false,\n byPayPalHeight: 0\n },\n\n [ BUTTON_SIZE.SMALL ]: {\n defaultWidth: 150,\n defaultHeight: 25,\n minWidth: 150,\n maxWidth: 200,\n minHeight: 25,\n maxHeight: 55,\n buttonTextMargin: 0.5,\n allowFunding: true,\n allowTagline: true,\n byPayPalHeight: 0\n },\n\n [ BUTTON_SIZE.MEDIUM ]: {\n defaultWidth: 250,\n defaultHeight: 35,\n minWidth: 200,\n maxWidth: 300,\n minHeight: 35,\n maxHeight: 55,\n buttonTextMargin: 1,\n allowFunding: true,\n allowTagline: true,\n byPayPalHeight: 30\n },\n\n [ BUTTON_SIZE.LARGE ]: {\n defaultWidth: 350,\n defaultHeight: 45,\n minWidth: 300,\n maxWidth: 500,\n minHeight: 30,\n maxHeight: 55,\n buttonTextMargin: 1,\n allowFunding: true,\n allowTagline: true,\n byPayPalHeight: 30\n },\n\n [ BUTTON_SIZE.HUGE ]: {\n defaultWidth: 500,\n defaultHeight: 55,\n minWidth: 500,\n maxWidth: 750,\n minHeight: 40,\n maxHeight: 55,\n buttonTextMargin: 1.25,\n allowFunding: true,\n allowTagline: true,\n byPayPalHeight: 30\n }\n};\n\nexport function labelToFunding(label : ?string) : string {\n return label ? LABEL_TO_FUNDING[label] : FUNDING.PAYPAL;\n}\n\nexport function fundingToDefaultLabel(funding : string) : $Values {\n return FUNDING_TO_DEFAULT_LABEL[funding];\n}\n\nfunction getConfig(conf : Object, category : string, key : string, def : ?T) : T {\n const categoryConfig = conf[category];\n\n if (categoryConfig && categoryConfig.hasOwnProperty(key)) {\n return categoryConfig[key];\n }\n\n if (conf[DEFAULT] && conf[DEFAULT].hasOwnProperty(key)) {\n return conf[DEFAULT][key];\n }\n\n if (arguments.length >= 4) {\n // $FlowFixMe\n return def;\n }\n\n throw new Error(`No value found for ${ category }:${ key }`);\n}\n\nexport function getButtonConfig(label : string, key : string, def : ?T) : T {\n return getConfig(BUTTON_CONFIG, label, key, def);\n}\n","/* @flow */\n\nimport { BUTTON_LAYOUT, BUTTON_STYLE_OPTIONS, BUTTON_LABEL, BUTTON_COLOR, BUTTON_SIZE, BUTTON_SHAPE } from '../constants';\nimport { determineEligibleFunding, determineEligibleCards } from '../funding';\nimport { memoize, sortBy } from '../lib/util';\nimport type { LocaleType, FundingSelection, FundingList, CheckoutCustomizationType } from '../types';\nimport { FUNDING_ORDER } from '../funding/config';\n\nimport { getButtonConfig, labelToFunding } from './config';\n\nfunction parseLocale(locale : string) : LocaleType {\n const [ lang, country ] = locale.split('_');\n return { country, lang };\n}\n\nexport function determineMaxButtons({ label, layout, max } : { layout : string, label : string, max : number }) : number {\n\n const allowed = (layout === BUTTON_LAYOUT.HORIZONTAL)\n ? getButtonConfig(label, 'allowPrimaryHorizontal')\n : getButtonConfig(label, 'allowPrimaryVertical');\n\n if (!allowed) {\n return 1;\n }\n\n const configMax = (layout === BUTTON_LAYOUT.HORIZONTAL)\n ? getButtonConfig(label, 'maxHorizontalButtons')\n : getButtonConfig(label, 'maxVerticalButtons');\n\n return max\n ? Math.min(configMax, max)\n : configMax;\n}\n\nfunction enableTagline({ tagline, branding, fundingicons, layout }) : boolean {\n return Boolean(tagline && branding && !fundingicons && layout === BUTTON_LAYOUT.HORIZONTAL);\n}\n\ntype NormalizedProps = {|\n size : $Values,\n label : $Values,\n color : $Values,\n shape : $Values,\n locale : LocaleType,\n branding : boolean,\n fundingicons : boolean,\n tagline : boolean,\n funding : FundingSelection,\n layout : $Values,\n sources : FundingList,\n max : number,\n multiple : boolean,\n env : string,\n height : ?number,\n cards : $ReadOnlyArray,\n installmentperiod : number,\n checkoutCustomization : ?CheckoutCustomizationType\n|};\n\nexport const normalizeProps = memoize((props : Object, defs? : { locale? : LocaleType } = {}) : NormalizedProps => {\n\n let {\n env,\n locale,\n style = {},\n funding,\n commit,\n checkoutCustomization\n } = props;\n\n locale = locale ? parseLocale(locale) : (defs.locale || getButtonConfig('DEFAULT', 'defaultLocale'));\n \n // funding indicated the allowed/disallowed payment methods (including cards) passed in the integration script\n // $FlowFixMe\n funding = funding || {};\n funding.allowed = funding.allowed || [];\n funding.disallowed = funding.disallowed || [];\n funding.remembered = funding.remembered || [];\n \n const label = style[BUTTON_STYLE_OPTIONS.LABEL] || getButtonConfig('DEFAULT', (style.layout === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalLabel' : 'defaultLabel');\n const layout = style[BUTTON_STYLE_OPTIONS.LAYOUT] || getButtonConfig(label, 'defaultLayout');\n\n let {\n [ BUTTON_STYLE_OPTIONS.SIZE ]: size = getButtonConfig(label, (layout === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalSize' : 'defaultSize'),\n [ BUTTON_STYLE_OPTIONS.COLOR ]: color = getButtonConfig(label, 'defaultColor'),\n [ BUTTON_STYLE_OPTIONS.SHAPE ]: shape = getButtonConfig(label, 'defaultShape'),\n [ BUTTON_STYLE_OPTIONS.BRANDING ]: branding = getButtonConfig(label, (layout === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalBranding' : 'defaultBranding'),\n [ BUTTON_STYLE_OPTIONS.FUNDINGICONS ]: fundingicons = getButtonConfig(label, 'defaultFundingIcons'),\n [ BUTTON_STYLE_OPTIONS.TAGLINE ]: tagline = getButtonConfig(label, 'defaultTagline'),\n [ BUTTON_STYLE_OPTIONS.MAXBUTTONS ]: max,\n [ BUTTON_STYLE_OPTIONS.HEIGHT ]: height,\n [ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD ]: installmentperiod\n } = style;\n\n // max is the maximum number of buttons to be displayed in the iframe\n max = determineMaxButtons({ label, layout, max });\n\n const selected = labelToFunding(label);\n let sources = determineEligibleFunding({ funding, selected, locale, env, layout, commit });\n // sources is an array of funding sources eligible to be displayed\n sources = sortBy(sources.slice(0, max), FUNDING_ORDER);\n // multiple is a boolean value indicating whether the sources is greater than 1\n const multiple = sources.length > 1;\n\n if (multiple) {\n branding = true;\n }\n\n tagline = enableTagline({ tagline, branding, fundingicons, layout });\n\n const cards = determineEligibleCards({ funding, locale });\n \n return { size, label, locale, color, shape, branding, fundingicons,\n tagline, funding, layout, sources, max, multiple, env, height, cards, installmentperiod, checkoutCustomization };\n});\n","/* @flow */\n\nimport { BUTTON_LABEL, BUTTON_LAYOUT, BUTTON_SIZE, BUTTON_STYLE_OPTIONS, ALLOWED_INSTALLMENT_COUNTRIES, ALLOWED_INSTALLMENT_PERIOD, LOCALE } from '../constants';\n\nimport { BUTTON_CONFIG, BUTTON_STYLE, getButtonConfig } from './config';\n\nexport function validateButtonLocale(locale : string) {\n\n if (!locale) {\n throw new Error(`Expected props.locale to be set`);\n }\n\n if (!locale.match(/^[a-z]{2}[_][A-Z][A-Z0-9]$/)) {\n throw new Error(`Expected props.locale to be valid, got ${ locale }`);\n }\n\n const [ lang, country ] = locale.split('_');\n\n if (!LOCALE[country] || LOCALE[country].indexOf(lang) === -1) {\n throw new Error(`Expected props.locale to be valid`);\n }\n}\n\nexport function validateRegionSpecificButton(style : Object = {}, locale : string = 'en_US') {\n\n const country = locale.split('_')[1];\n\n const isInstallmentAllowedCountry = ALLOWED_INSTALLMENT_COUNTRIES.indexOf(country) !== -1;\n\n if (!isInstallmentAllowedCountry && style.label === BUTTON_LABEL.INSTALLMENT) {\n throw new Error(`Unexpected label: style.${ style.label } for country: ${ country }`);\n }\n\n if (!isInstallmentAllowedCountry && style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD]) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD } is invalid for country: ${ country }`);\n }\n\n if (isInstallmentAllowedCountry && style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD] && style.label !== BUTTON_LABEL.INSTALLMENT) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD } is invalid for label: style.${ style.label }`);\n }\n\n if (isInstallmentAllowedCountry && style.label === BUTTON_LABEL.INSTALLMENT && style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD]\n && typeof style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD] !== 'number') {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD } is expected to be a number`);\n }\n\n if (isInstallmentAllowedCountry && style.label === BUTTON_LABEL.INSTALLMENT && style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD]\n && ALLOWED_INSTALLMENT_PERIOD[country].indexOf(style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD]) === -1) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD }: ${ style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD] } is not a valid installment number for ${ style.label }`);\n }\n\n}\n\nexport function validateButtonStyle(style : Object = {}, props : Object) {\n\n if (!style) {\n throw new Error(`Expected props.style to be set`);\n }\n\n const label = style[BUTTON_STYLE_OPTIONS.LABEL] || getButtonConfig('DEFAULT', (style[BUTTON_STYLE_OPTIONS.LAYOUT] === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalLabel' : 'defaultLabel');\n\n if (!BUTTON_CONFIG[label]) {\n throw new Error(`Invalid button label: ${ label }, expected: ${ Object.keys(BUTTON_CONFIG[label]).join(', ') }`);\n }\n\n const {\n [ BUTTON_STYLE_OPTIONS.COLOR ]: color,\n [ BUTTON_STYLE_OPTIONS.SHAPE ]: shape,\n [ BUTTON_STYLE_OPTIONS.SIZE ]: size,\n [ BUTTON_STYLE_OPTIONS.BRANDING ]: branding,\n [ BUTTON_STYLE_OPTIONS.FUNDINGICONS ]: fundingicons,\n [ BUTTON_STYLE_OPTIONS.TAGLINE ]: tagline,\n [ BUTTON_STYLE_OPTIONS.LAYOUT ]: layout,\n [ BUTTON_STYLE_OPTIONS.MAXBUTTONS ]: maxbuttons,\n [ BUTTON_STYLE_OPTIONS.HEIGHT ]: height\n } = style;\n\n if (color && getButtonConfig(label, 'colors').indexOf(color) === -1) {\n throw new Error(`Unexpected style.${ BUTTON_STYLE_OPTIONS.COLOR } for ${ label } button: ${ color }, expected ${ getButtonConfig(label, 'colors').join(', ') }`);\n }\n\n if (shape && getButtonConfig(label, 'shapes').indexOf(shape) === -1) {\n throw new Error(`Unexpected style.${ BUTTON_STYLE_OPTIONS.SHAPE } for ${ label } button: ${ shape }, expected ${ getButtonConfig(label, 'shapes').join(', ') }`);\n }\n\n if (size && getButtonConfig(label, 'sizes').indexOf(size) === -1) {\n throw new Error(`Unexpected style.${ BUTTON_STYLE_OPTIONS.SIZE } for ${ label } button: ${ size }, expected ${ getButtonConfig(label, 'sizes').join(', ') }`);\n }\n\n if (branding === false) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.BRANDING }:false is not allowed`);\n }\n\n if (fundingicons && !getButtonConfig(label, 'allowFundingIcons')) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.FUNDINGICONS }:true is not allowed for ${ label } button`);\n }\n\n if (layout && getButtonConfig(label, 'layouts').indexOf(layout) === -1) {\n throw new Error(`Unexpected style.${ BUTTON_STYLE_OPTIONS.LAYOUT } for ${ label } button: ${ layout }, expected ${ getButtonConfig(label, 'layouts').join(', ') }`);\n }\n\n if (maxbuttons !== undefined) {\n if (typeof maxbuttons !== 'number') {\n throw new TypeError(`Expected style.${ BUTTON_STYLE_OPTIONS.MAXBUTTONS } to be a number, got: ${ maxbuttons }`);\n }\n\n if (maxbuttons < 1) {\n throw new Error(`Expected style.${ BUTTON_STYLE_OPTIONS.MAXBUTTONS } to be a at least 1, got: ${ maxbuttons }`);\n }\n\n const minButtons = (layout === BUTTON_LAYOUT.VERTICAL)\n ? getButtonConfig(label, 'minVerticalButtons')\n : getButtonConfig(label, 'minHorizontalButtons');\n\n if (maxbuttons < minButtons) {\n throw new Error(`Expected style.${ BUTTON_STYLE_OPTIONS.MAXBUTTONS } to be no fewer than ${ minButtons }, got ${ maxbuttons }`);\n }\n }\n\n if (height !== undefined) {\n if (typeof height !== 'number') {\n throw new TypeError(`Expected style.${ BUTTON_STYLE_OPTIONS.HEIGHT } to be a number, got: ${ maxbuttons }`);\n }\n\n const buttonSize = size || getButtonConfig(label, (style.layout === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalSize' : 'defaultSize');\n\n const { minHeight, maxHeight } = (size === BUTTON_SIZE.RESPONSIVE) ? {\n minHeight: BUTTON_STYLE[BUTTON_SIZE.SMALL].minHeight,\n maxHeight: BUTTON_STYLE[BUTTON_SIZE.HUGE].maxHeight\n } : BUTTON_STYLE[buttonSize];\n\n if (height < minHeight || height > maxHeight) {\n throw new Error(`Expected style.${ BUTTON_STYLE_OPTIONS.HEIGHT } to be between ${ minHeight }px and ${ maxHeight }px - got ${ height }px`);\n }\n }\n\n if (!getButtonConfig(label, 'allowPrimary')) {\n throw new Error(`${ label } can not be used as primary button label`);\n }\n\n if (layout === BUTTON_LAYOUT.VERTICAL) {\n\n if (size && [ BUTTON_SIZE.MEDIUM, BUTTON_SIZE.LARGE, BUTTON_SIZE.RESPONSIVE ].indexOf(size) === -1) {\n throw new Error(`Button must be at least ${ BUTTON_SIZE.MEDIUM } size for ${ BUTTON_LAYOUT.VERTICAL } layout`);\n }\n\n if (!getButtonConfig(label, 'allowPrimaryVertical')) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.LABEL } option is not allowed for ${ BUTTON_LAYOUT.VERTICAL } layout - got ${ label }`);\n }\n\n if (fundingicons) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.FUNDINGICONS } not allowed for ${ BUTTON_LAYOUT.VERTICAL } layout - got ${ fundingicons }`);\n }\n\n if (tagline) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.TAGLINE } is not allowed for ${ BUTTON_LAYOUT.VERTICAL } layout - got ${ tagline }`);\n }\n }\n\n validateRegionSpecificButton(style, props.locale);\n}\n\nexport function validateButtonProps(props : Object) {\n\n if (!props) {\n throw new Error(`Expected props`);\n }\n\n const { locale, style } = props;\n\n validateButtonLocale(locale);\n validateButtonStyle(style, props);\n}\n","/* @flow */\n\nexport const CLASS = {\n SHOULD_FOCUS: 'paypal-should-focus',\n\n CONTAINER: 'paypal-button-container',\n BUTTON: 'paypal-button',\n \n BUTTON_LABEL: 'paypal-button-label-container',\n\n LABEL: 'paypal-button-label',\n COLOR: 'paypal-button-color',\n LOGO_COLOR: 'paypal-button-logo-color',\n SHAPE: 'paypal-button-shape',\n BRANDING: 'paypal-button-branding',\n LAYOUT: 'paypal-button-layout',\n NUMBER: 'paypal-button-number',\n ENV: 'paypal-button-env',\n\n TAGLINE: 'paypal-button-tagline',\n TAGLINE_COLOR: 'paypal-button-tagline-color',\n FUNDINGICONS: 'paypal-button-fundingicons',\n\n TEXT: 'paypal-button-text',\n LOGO: 'paypal-button-logo',\n CARD: 'paypal-button-card',\n\n SEPARATOR: 'paypal-separator',\n HIDDEN: 'hidden',\n DOM_READY: 'dom-ready',\n \n PERSONALIZATION_TEXT: 'personalization-text'\n};\n","/* @flow */\n\nimport { CLASS } from './class';\n\nexport const pageStyle = `\n html, body {\n padding: 0;\n margin: 0;\n width: 100%;\n overflow: hidden;\n text-align: center;\n }\n\n body {\n display: inline-block;\n vertical-align: top;\n }\n\n * {\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -khtml-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n cursor: default;\n box-sizing: border-box;\n }\n \n .${ CLASS.HIDDEN } {\n position: absolute;\n visibility: hidden;\n }\n`;\n","/* @flow */\n\nimport { BUTTON_COLOR, ENV } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const buttonStyle = `\n\n .${ CLASS.CONTAINER } {\n display: block;\n white-space: nowrap;\n margin: 0;\n background: 0;\n border: 0;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n text-transform: none;\n font-weight: 500;R\n -webkit-font-smoothing: antialiased;\n font-smoothing: antialiased;\n z-index: 0;\n font-size: 0;\n width: 100%;\n box-sizing: border-box;\n }\n\n .${ CLASS.BUTTON }:not(.${ CLASS.CARD }) {\n border: 1px solid transparent;\n border-radius: 0 3px 3px 0;\n position: relative;\n width: 100%;\n box-sizing: border-box;\n border: none;\n vertical-align: top;\n cursor: pointer;\n outline: none;\n overflow: hidden;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.TRANSPARENT } {\n cursor: auto;\n }\n\n .${ CLASS.BUTTON } * {\n cursor: pointer;\n }\n\n .${ CLASS.CONTAINER }.${ CLASS.ENV }-${ ENV.TEST } .${ CLASS.TEXT } {\n font-family: Arial !important;\n background: rgba(0, 0, 0, 0.5) !important;\n color: transparent !important;\n text-shadow: none !important;\n }\n\n .${ CLASS.BUTTON }:hover {\n box-shadow: inset 0 0 100px 100px rgba(255, 255, 255, 0.2);\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.GOLD }:hover,\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.SILVER }:hover {\n box-shadow: inset 0 0 100px 100px rgba(0, 0, 0, 0.05);\n }\n\n .${ CLASS.CARD }, .${ CLASS.CARD } * {\n cursor: pointer;\n }\n\n .${ CLASS.CARD }:hover {\n filter: brightness(1.2);\n }\n\n .${ CLASS.BUTTON }:focus, .${ CLASS.CARD }:focus {\n outline: none;\n }\n\n .${ CLASS.SHOULD_FOCUS } .${ CLASS.BUTTON }:focus,\n .${ CLASS.SHOULD_FOCUS } .${ CLASS.CARD }:focus {\n outline: solid 2px Highlight;\n outline: auto 5px -webkit-focus-ring-color;\n outline-offset: -3px;\n }\n\n .${ CLASS.BUTTON }:focus {\n box-shadow: -1px -1px 18px 1px rgba(0, 0, 0, 0.25) inset;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.TRANSPARENT }:focus {\n box-shadow: none;\n outline: none;\n }\n\n .${ CLASS.LOGO } {\n padding: 0;\n display: inline-block;\n background: none;\n border: none;\n width: auto;\n }\n\n .${ CLASS.TEXT } {\n display: inline-block;\n white-space: pre;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.BUTTON_LABEL } {\n position: relative;\n top: 50%;\n transform: translateY(-50%);\n -webkit-transform: translateY(-50%);\n -moz-transform: translateY(-50%);\n -ms-transform: translateY(-50%);\n -o-transform: translateY(-50%);\n }\n \n .${ CLASS.BUTTON } > .${ CLASS.BUTTON_LABEL } > * {\n vertical-align: top;\n height: 100%;\n text-align: left;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.CARD } {\n border-radius: 4px;\n }\n\n .powered-by-paypal > .${ CLASS.TEXT } {\n vertical-align: top;\n line-height: 18px;\n }\n\n .powered-by-paypal > .${ CLASS.LOGO } {\n height: 16px;\n min-height: 16px;\n }\n\n .${ CLASS.TAGLINE } {\n max-width: 100%;\n font-weight: normal;\n display: block;\n text-align: center;\n width: auto;\n }\n\n .${ CLASS.SEPARATOR } {\n height: 80%;\n border-left: 1px solid rgba(0, 0, 0, 0.15);\n margin: 0 8px;\n display: inline-block;\n position: relative;\n top: 10%;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.BLACK } .${ CLASS.SEPARATOR } {\n border-color: rgba(255, 255, 255, 0.45);\n }\n`;\n","/* @flow */\n\nimport { BUTTON_LAYOUT } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const layoutStyle = `\n\n .${ CLASS.CONTAINER }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.VERTICAL } .${ CLASS.TAGLINE } {\n display: none;\n }\n`;\n","/* @flow */\n\nimport { BUTTON_BRANDING } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const brandingStyle = `\n\n .${ CLASS.BUTTON }.${ CLASS.BRANDING }-${ BUTTON_BRANDING.UNBRANDED } {\n min-width: 60%;\n width: auto;\n font-weight: 900;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.BRANDING }-${ BUTTON_BRANDING.UNBRANDED } .${ CLASS.LOGO } {\n display: none;\n }\n`;\n","/* @flow */\n\nimport { BUTTON_STYLE } from '../../config';\nimport { BUTTON_LABEL, BUTTON_LOGO, BUTTON_SIZE, BUTTON_LAYOUT, BUTTON_NUMBER } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const labelStyle = `\n\n .${ CLASS.BUTTON }.${ CLASS.LABEL }-${ BUTTON_LABEL.CARD } {\n border-radius: 0 !important;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LABEL }-${ BUTTON_LABEL.CREDIT } .${ CLASS.TEXT } {\n display: none !important;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.LABEL }-${ BUTTON_LABEL.CREDIT } .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LOGO.PAYPAL } {\n display: none;\n }\n\n @media only screen and (max-width : ${ BUTTON_STYLE[BUTTON_SIZE.SMALL].minWidth }px) {\n\n .${ CLASS.BUTTON }.${ CLASS.LABEL }-${ BUTTON_LABEL.CREDIT } .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LOGO.PAYPAL } {\n display: none;\n }\n }\n\n @media only screen and (min-width : ${ BUTTON_STYLE[BUTTON_SIZE.SMALL].minWidth }px) {\n\n .${ CLASS.BUTTON }.${ CLASS.LABEL }-${ BUTTON_LABEL.CREDIT } .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LOGO.PAYPAL } {\n display: inline-block;\n }\n }\n`;\n","/* @flow */\n\nimport { BUTTON_BRANDING, BUTTON_SHAPE, BUTTON_LAYOUT, BUTTON_NUMBER, BUTTON_LABEL } from '../../../constants';\nimport { BUTTON_STYLE, BUTTON_RELATIVE_STYLE } from '../../config';\nimport { max, perc } from '../../../lib/util';\n\nimport { CLASS } from './class';\n\nconst DUAL_BUTTON_MIN_RATIO = 2.8;\n\nexport function buttonResponsiveStyle({ height, cardNumber = 4 } : { height? : ?number, cardNumber? : number }) : string {\n\n return Object.keys(BUTTON_STYLE).map(size => {\n\n const style = BUTTON_STYLE[size];\n const buttonHeight = height || style.defaultHeight;\n const buttonTextMarginTop = style.buttonTextMargin;\n const minDualWidth = Math.round(buttonHeight * DUAL_BUTTON_MIN_RATIO * 2);\n\n return `\n\n @media only screen and (min-width: ${ style.minWidth }px) {\n\n .${ CLASS.CONTAINER } {\n min-width: ${ style.minWidth }px;\n max-width: ${ style.maxWidth }px;\n font-size: ${ max(perc(buttonHeight, 32), 10) }px;\n }\n\n .${ CLASS.BUTTON }:not(.${ CLASS.CARD }) {\n height: ${ buttonHeight }px;\n min-height: ${ height || style.minHeight }px;\n max-height: ${ height || style.maxHeight }px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.BRANDING }-${ BUTTON_BRANDING.UNBRANDED } .${ CLASS.BUTTON_LABEL } {\n height: 100%;\n font-size: ${ max(perc(buttonHeight, 45), 10) }px;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.BUTTON_LABEL } {\n height: ${ perc(buttonHeight, 35) + 5 }px;\n max-height: ${ perc(buttonHeight, 60) }px;\n min-height: ${ perc(buttonHeight, 40) }px;\n }\n \n .${ CLASS.BUTTON } .${ CLASS.BUTTON_LABEL } .${ CLASS.TEXT } {\n margin-top: ${ buttonTextMarginTop }px;\n }\n \n .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LABEL.EPS },\n .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LABEL.MYBANK } {\n height: ${ perc(buttonHeight, 50) + 5 }px;\n max-height: ${ perc(buttonHeight, 70) }px;\n min-height: ${ perc(buttonHeight, 40) }px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.SHAPE }-${ BUTTON_SHAPE.PILL } {\n border-radius: ${ Math.ceil(buttonHeight / 2) }px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.SHAPE }-${ BUTTON_SHAPE.RECT } {\n border-radius: 4px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.VERTICAL } {\n margin-bottom: ${ perc(buttonHeight, BUTTON_RELATIVE_STYLE.VERTICAL_MARGIN) }px;\n }\n\n .${ CLASS.SEPARATOR } {\n margin: 0 ${ perc(buttonHeight, 5) }px;\n }\n\n .${ CLASS.TAGLINE } {\n display: ${ style.allowTagline ? 'block' : 'none' };\n height: ${ perc(buttonHeight, BUTTON_RELATIVE_STYLE.TAGLINE) }px;\n line-height: ${ perc(buttonHeight, BUTTON_RELATIVE_STYLE.TAGLINE) }px;\n }\n\n .${ CLASS.FUNDINGICONS } {\n display: ${ style.allowFunding ? 'block' : 'none' };\n height: ${ perc(buttonHeight, BUTTON_RELATIVE_STYLE.FUNDINGICONS) }px;\n }\n\n .${ CLASS.CARD } {\n display: inline-block;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.CARD } {\n width: ${ (90 / cardNumber).toFixed(2) }%;\n max-width: ${ perc(buttonHeight, 160) }px;\n margin-top: 0;\n margin-left: ${ (5 / cardNumber).toFixed(2) }%;\n margin-right: ${ (5 / cardNumber).toFixed(2) }%;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.CARD } img {\n width: 100%;\n }\n\n .${ CLASS.FUNDINGICONS } .${ CLASS.CARD } {\n height: ${ perc(buttonHeight, 70) }px;\n margin-top: ${ perc(buttonHeight, 15) }px;\n margin-left: ${ perc(buttonHeight, 7) }px;\n margin-right: ${ perc(buttonHeight, 7) }px;\n }\n\n .${ CLASS.FUNDINGICONS } .${ CLASS.CARD } img {\n height: 100%;\n }\n }\n\n @media only screen and (min-width: ${ style.minWidth }px) and (max-width: ${ minDualWidth }px) {\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.NUMBER }-0 {\n width: 100%;\n margin-right: 0;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.NUMBER }-1 {\n display: none;\n }\n\n .${ CLASS.CONTAINER }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE } .${ CLASS.TAGLINE } {\n display: none;\n }\n }\n\n @media only screen and (min-width: ${ max(style.minWidth, minDualWidth) }px) {\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.NUMBER }-0 {\n display: inline-block;\n width: calc(50% - 2px);\n margin-right: 4px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.NUMBER }-1 {\n display: inline-block;\n width: calc(50% - 2px);\n }\n\n .${ CLASS.CONTAINER }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE } .${ CLASS.TAGLINE } {\n display: block;\n }\n }\n `;\n\n }).join('\\n');\n}\n","/* @flow */\n\nimport { BUTTON_COLOR } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const buttonColorStyle = `\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.GOLD } {\n background: #ffc439;\n color: #111;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.BLUE } {\n background: #009cde;\n color: #fff;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.SILVER } {\n background: #eee;\n color: #111;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.BLACK } {\n background: #2C2E2F;\n color: #fff;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.DARKBLUE } {\n background: #003087;\n color: #fff;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.TRANSPARENT } {\n background: transparent;\n color: #111;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.WHITE } {\n background: #fff;\n color: #2C2E2F;\n border: 1px solid #2C2E2F;\n }\n`;\n","/* @flow */\n\nimport { pageStyle } from './page';\nimport { buttonStyle } from './button';\nimport { layoutStyle } from './layout';\nimport { brandingStyle } from './branding';\nimport { labelStyle } from './labels';\nimport { buttonResponsiveStyle } from './responsive';\nimport { buttonColorStyle } from './color';\n\nexport function componentStyle({ height, cardNumber } : { height? : ?number, cardNumber? : number }) : string {\n return `\n ${ pageStyle }\n ${ buttonStyle }\n ${ buttonColorStyle }\n ${ layoutStyle }\n ${ brandingStyle }\n ${ labelStyle }\n ${ buttonResponsiveStyle({ height, cardNumber }) }\n `;\n}\n","/* @flow */\n\nexport { componentStyle } from './base';\nexport { CLASS } from './class';\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, type JsxHTMLNode, JsxHTMLNodeContainer } from '../../lib/jsx';\n\nimport { CLASS } from './componentStyle';\n\nexport function LoadingDots(delay : number) : JsxHTMLNode {\n return (\n
\n \n {outlet}\n
\n );\n}\n","/* @flow */\n\nexport * from './componentTemplate';\nexport * from './containerTemplate';\n\n","\n/* @flow */\n\nimport { track, flush as flushLogs } from 'beaver-logger/client';\n\nimport { Checkout } from '../checkout';\nimport { setupPopupBridgeProxy } from '../integrations/popupBridge';\nimport { getPageRenderTime, setLogLevel } from '../lib';\nimport { ATTRIBUTE, FUNDING, FPTI, BUTTON_LAYOUT, BUTTON_COLOR, BUTTON_SIZE, BUTTON_SHAPE, BUTTON_LABEL } from '../constants';\n\nimport typeof { Button } from './component';\n\nexport function setupButtonChild(ButtonComponent : Button) {\n setupPopupBridgeProxy(Checkout, ButtonComponent);\n\n getPageRenderTime().then(pageRenderTime => {\n\n const fundingSources = Array.prototype.slice.call(document.querySelectorAll(`[${ ATTRIBUTE.FUNDING_SOURCE }]`)).map(el => {\n return el.getAttribute(ATTRIBUTE.CARD) || el.getAttribute(ATTRIBUTE.FUNDING_SOURCE);\n }).filter(source => {\n return source && source !== FUNDING.CARD;\n });\n\n const xprops = ButtonComponent.xprops;\n \n if (!xprops) {\n return;\n }\n\n const {\n layout = BUTTON_LAYOUT.HORIZONTAL,\n color = BUTTON_COLOR.GOLD,\n size = BUTTON_SIZE.SMALL,\n shape = BUTTON_SHAPE.PILL,\n label = BUTTON_LABEL.CHECKOUT,\n maxbuttons,\n tagline\n } = (xprops.style || {});\n\n track({\n [FPTI.KEY.STATE]: FPTI.STATE.BUTTON,\n [FPTI.KEY.TRANSITION]: FPTI.TRANSITION.BUTTON_LOAD,\n [FPTI.KEY.BUTTON_TYPE]: FPTI.BUTTON_TYPE.IFRAME,\n [FPTI.KEY.FUNDING_LIST]: fundingSources.join(':'),\n [FPTI.KEY.FUNDING_COUNT]: fundingSources.length,\n [FPTI.KEY.PAGE_LOAD_TIME]: pageRenderTime,\n [FPTI.KEY.BUTTON_LAYOUT]: layout,\n [FPTI.KEY.BUTTON_COLOR]: color,\n [FPTI.KEY.BUTTON_SIZE]: size,\n [FPTI.KEY.BUTTON_SHAPE]: shape,\n [FPTI.KEY.BUTTON_LABEL]: label,\n [FPTI.KEY.BUTTON_WIDTH]: window.innerWidth,\n [FPTI.KEY.MAX_BUTTONS]: maxbuttons,\n [FPTI.KEY.BUTTON_TAGLINE_ENABLED]: tagline ? '1' : '0'\n });\n\n flushLogs();\n });\n\n const xprops = ButtonComponent.xprops || Checkout.xprops;\n\n if (xprops && xprops.logLevel) {\n setLogLevel(xprops.logLevel);\n }\n\n // $FlowFixMe\n if (xprops.payment && !xprops.createOrder) {\n // $FlowFixMe\n xprops.createOrder = xprops.payment;\n }\n\n // $FlowFixMe\n if (xprops.onAuthorize && !xprops.onApprove) {\n // $FlowFixMe\n xprops.onApprove = xprops.onAuthorize;\n }\n\n try {\n if (xprops && xprops.onShippingChange && window.pre &&\n window.pre.inlineGuest && window.pre.inlineGuest.res &&\n window.pre.inlineGuest.res.data && window.pre.inlineGuest.res.data.treatments) {\n window.pre.inlineGuest.res.data.treatments = [];\n }\n } catch (err) {\n // pass\n }\n}\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { create } from 'zoid/src';\nimport { type Component } from 'zoid/src/component/component';\nimport { info, warn, track, error, flush as flushLogs, immediateFlush } from 'beaver-logger/client';\nimport { getDomain } from 'cross-domain-utils/src';\nimport { base64encode } from 'belter/src';\nimport { debounce, once } from 'zoid/src/lib';\n\nimport { pptm } from '../external';\nimport { config } from '../config';\nimport { SOURCE, ENV, FPTI, FUNDING, BUTTON_LABEL, BUTTON_COLOR,\n BUTTON_SIZE, BUTTON_SHAPE, BUTTON_LAYOUT, COUNTRY } from '../constants';\nimport { redirect as redir, checkRecognizedBrowser,\n getBrowserLocale, getSessionID, request, getScriptVersion,\n isIEIntranet, isEligible, getCurrentScriptUrl,\n getDomainSetting, extendUrl, isDevice, rememberFunding,\n getRememberedFunding, memoize, uniqueID, getThrottle, getBrowser } from '../lib';\nimport { rest } from '../api';\nimport { onAuthorizeListener } from '../experiments';\nimport { getPaymentType, awaitBraintreeClient,\n mapPaymentToBraintree, type BraintreePayPalClient } from '../integrations';\nimport { awaitPopupBridge } from '../integrations/popupBridge';\nimport { validateFunding, isFundingIneligible, isFundingAutoEligible } from '../funding';\n\nimport { containerTemplate, componentTemplate } from './template';\nimport { validateButtonLocale, validateButtonStyle } from './validate';\nimport { setupButtonChild } from './child';\nimport { normalizeProps } from './props';\n\npptm.listenForLoadWithNoContent();\n\nfunction isCreditDualEligible(props) : boolean {\n\n const { label, funding, layout, locale, max, sources, env } = normalizeProps(props, { locale: getBrowserLocale() });\n const { allowed } = funding;\n const { country } = locale;\n\n if (allowed && allowed.indexOf(FUNDING.CREDIT) !== -1) {\n return false;\n }\n\n if (layout !== BUTTON_LAYOUT.HORIZONTAL) {\n return false;\n }\n\n if (max === 1) {\n return false;\n }\n\n if (label === BUTTON_LABEL.CREDIT) {\n return false;\n }\n\n if (country !== COUNTRY.US) {\n return false;\n }\n\n if (isFundingIneligible(FUNDING.CREDIT, { funding, locale, layout, env })) {\n return false;\n }\n\n if (isFundingAutoEligible(FUNDING.CREDIT, { funding, locale, layout })) {\n return false;\n }\n\n if (sources.indexOf(FUNDING.CREDIT) !== -1) {\n return false;\n }\n\n const domain = getDomain().replace(/^https?:\\/\\//, '').replace(/^www\\./, '');\n\n if (config.creditTestDomains.indexOf(domain) === -1) {\n return false;\n }\n\n return true;\n}\n\nlet creditThrottle;\n\ntype ButtonOptions = {|\n style : {|\n maxbuttons? : number,\n layout? : string,\n label? : string,\n size? : string,\n shape? : string,\n color? : string,\n tagline? : boolean\n |},\n client : {\n [string] : (string | ZalgoPromise)\n },\n funding? : { allowed? : $ReadOnlyArray, disallowed? : $ReadOnlyArray },\n env? : string,\n locale? : string,\n logLevel : string,\n awaitPopupBridge : Function,\n meta : Object,\n validate? : ({ enable : () => ZalgoPromise, disable : () => ZalgoPromise }) => void,\n stage? : string,\n stageUrl? : string,\n localhostUrl? : string,\n checkoutUri? : string,\n authCode? : string,\n enableNativeCheckout? : boolean\n|};\n\nexport const Button : Component = create({\n\n tag: 'paypal-button',\n name: 'ppbutton',\n\n buildUrl(props) : string {\n const env = props.env || config.env;\n const url = config.buttonUrls[env];\n return url;\n },\n\n contexts: {\n iframe: true,\n popup: false\n },\n\n scrolling: false,\n listenForResize: true,\n\n containerTemplate,\n\n autoResize: {\n height: true,\n width: false\n },\n\n prerenderTemplate({ props, jsxDom } : { props : Object, jsxDom : Function }) : HTMLElement {\n\n const template = (\n
\n );\n\n template.addEventListener('click', () => {\n warn('button_pre_template_click');\n\n if (isIEIntranet()) {\n warn(`button_pre_template_click_intranet_mode`);\n\n flushLogs();\n\n // eslint-disable-next-line no-alert\n alert(`IE Intranet mode is not supported by PayPal. Please disable intranet mode, or continue in an alternate browser.`);\n }\n\n if (getDomainSetting('allow_full_page_fallback')) {\n info('pre_template_force_full_page');\n\n this.props.payment().then(token => {\n window.top.location = extendUrl(config.checkoutUrl, { token });\n });\n }\n });\n\n return (\n \n \n { template }\n \n \n );\n },\n\n get version() : string {\n return getScriptVersion();\n },\n\n get domain() : Object {\n return config.paypalDomains;\n },\n\n attributes: {\n iframe: {\n allowpaymentrequest: 'allowpaymentrequest'\n }\n },\n\n validate() {\n if (!isEligible()) {\n warn('button_render_ineligible');\n }\n },\n\n props: {\n domain: {\n type: 'string',\n required: false,\n def() : string {\n return window.location.host;\n },\n queryParam: true\n },\n\n sessionID: {\n type: 'string',\n required: false,\n def() : string {\n return getSessionID();\n },\n queryParam: true\n },\n\n buttonSessionID: {\n type: 'string',\n required: false,\n def() : ?string {\n return uniqueID();\n },\n queryParam: true\n },\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n }\n },\n\n meta: {\n type: 'object',\n required: false,\n def() : Object {\n return {};\n }\n },\n\n enableNativeCheckout: {\n type: 'boolean',\n required: false,\n def() : boolean {\n return false;\n }\n },\n\n client: {\n type: 'object',\n required: false,\n def() : Object {\n return {};\n },\n\n validate(client, props) {\n const env = props.env || config.env;\n\n if (!client[env]) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (typeof client[env] === 'string') {\n if (client[env].match(/^(.)\\1+$/)) {\n throw new Error(`Invalid client ID: ${ client[env] }`);\n }\n } else if (!ZalgoPromise.isPromise(client[env])) {\n throw new Error(`Expected client token to be either a string or a promise`);\n }\n },\n\n decorate(client : Object) : Object {\n if (client && client.sandbox === 'demo_sandbox_client_id') {\n client.sandbox = 'AZDxjDScFpQtjWTOUtWKbyN_bDt4OgqaF4eYXlewfBP4-8aqX3PiV8e1GWU6liB2CUXlkA59kJXE7M6R';\n }\n\n return client;\n }\n },\n\n source: {\n type: 'string',\n required: false,\n def() : string {\n return SOURCE.MANUAL;\n }\n },\n\n prefetchLogin: {\n type: 'boolean',\n required: false\n },\n\n stage: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.STAGE || env === ENV.LOCAL) {\n return config.stage;\n }\n }\n },\n\n updateClientConfiguration: {\n type: 'boolean',\n required: false,\n def: () => {\n return true;\n }\n },\n\n stageUrl: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.STAGE || env === ENV.LOCAL) {\n return config.stageUrl;\n }\n }\n },\n\n localhostUrl: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.LOCAL) {\n return config.localhostUrl;\n }\n }\n },\n\n checkoutUri: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : ?string {\n return config.checkoutUri;\n }\n },\n\n braintree: {\n type: 'object',\n required: false,\n validate(braintree, props) {\n\n if (!braintree.paypalCheckout) {\n throw new Error(`Expected Braintree paypal-checkout component to be loaded`);\n }\n\n if (!props.client) {\n throw new Error(`Expected client prop to be passed with Braintree authorization keys`);\n }\n },\n // $FlowFixMe\n decorate(braintree, props) : ZalgoPromise {\n const env = props.env || config.env;\n // $FlowFixMe\n return ZalgoPromise.hash(props.client).then(client => {\n return awaitBraintreeClient(braintree, client[env]);\n });\n }\n },\n\n payment: {\n type: 'function',\n required: true,\n memoize: false,\n timeout: __TEST__ ? 500 : 10 * 1000,\n alias: 'billingAgreement',\n\n decorate(original) : Function {\n return function payment(data = {}) : ZalgoPromise {\n\n const actions = {\n request,\n payment: {\n create: (options) => {\n return this.props.braintree\n ? this.props.braintree.then(client => {\n return client.createPayment(mapPaymentToBraintree(options.payment || options));\n })\n : ZalgoPromise.hash(this.props.client).then(client => {\n return rest.payment.create(this.props.env, client, options);\n });\n }\n },\n order: {\n create: (options) => {\n return ZalgoPromise.hash(this.props.client).then(client => {\n return rest.order.create(this.props.env, client, options);\n });\n }\n },\n braintree: {\n create: (options) => {\n if (!this.props.braintree) {\n throw new Error(`Can not create using Braintree - no braintree client provided`);\n }\n\n return this.props.braintree.then(client => {\n return client.createPayment(options);\n });\n }\n }\n };\n\n if (getDomainSetting('memoize_payment') && this.memoizedToken) {\n return this.memoizedToken;\n }\n\n this.memoizedToken = ZalgoPromise.try(original, this, [ data, actions ]);\n\n const startTime = Date.now();\n\n this.memoizedToken = this.memoizedToken.then(token => {\n\n if (!token) {\n error(`no_token_passed_to_payment`);\n throw new Error(`No value passed to payment`);\n }\n\n const elapsed = Date.now() - startTime;\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.RECIEVE_PAYMENT,\n [ FPTI.KEY.CONTEXT_TYPE ]: FPTI.CONTEXT_TYPE[getPaymentType(token)],\n [ FPTI.KEY.CONTEXT_ID ]: token,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.RESPONSE_DURATION ]: elapsed,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n flushLogs();\n\n return token;\n });\n\n return this.memoizedToken;\n };\n }\n },\n\n authCode: {\n type: 'string',\n required: false,\n def() : string {\n return config.authCode;\n }\n },\n\n funding: {\n type: 'object',\n required: false,\n queryParam: true,\n validate({ allowed = [], disallowed = [] } : Object = {}) {\n validateFunding({ allowed, disallowed, remembered: [] });\n },\n def() : Object {\n return {};\n },\n decorate({ allowed = [], disallowed = [] } : Object = {}, props : ButtonOptions) : {} {\n\n allowed = Array.isArray(allowed) ? allowed : [];\n disallowed = Array.isArray(disallowed) ? disallowed : [];\n\n if (allowed && allowed.indexOf(FUNDING.VENMO) !== -1) {\n allowed = allowed.filter(source => (source !== FUNDING.VENMO));\n }\n if (allowed && allowed.indexOf(FUNDING.ITAU) !== -1) {\n allowed = allowed.filter(source => (source !== FUNDING.ITAU));\n }\n\n if (isCreditDualEligible(props)) {\n creditThrottle = getThrottle('dual_credit_automatic', 50);\n\n if (creditThrottle.isEnabled()) {\n allowed = [ ...allowed, FUNDING.CREDIT ];\n }\n }\n\n let remembered = getRememberedFunding(sources => sources);\n\n if (!isDevice() || getDomainSetting('disable_venmo')) {\n if (remembered && remembered.indexOf(FUNDING.VENMO) !== -1) {\n remembered = remembered.filter(source => (source !== FUNDING.VENMO));\n }\n\n if (disallowed && disallowed.indexOf(FUNDING.VENMO) === -1) {\n disallowed = [ ...disallowed, FUNDING.VENMO ];\n }\n }\n\n return {\n allowed,\n disallowed,\n remembered,\n remember(sources) {\n rememberFunding(sources);\n }\n };\n }\n },\n\n commit: {\n type: 'boolean',\n required: false,\n queryParam: true,\n queryValue: (val) => {\n return val ? 'true' : 'false';\n }\n },\n\n onRender: {\n type: 'function',\n promisify: true,\n required: false,\n noop: true,\n decorate(original) : Function {\n return function decorateOnRender() : mixed {\n const { browser = 'unrecognized', version = 'unrecognized' } = getBrowser();\n info(`button_render_browser_${ browser }_${ isDevice() ? 'mobile' : 'desktop' }_${ version }`);\n\n const style = this.props.style || {};\n\n info(`button_render`);\n info(`button_render_color_${ style.color || 'default' }`);\n info(`button_render_shape_${ style.shape || 'default' }`);\n info(`button_render_size_${ style.size || 'default' }`);\n info(`button_render_label_${ style.label || 'default' }`);\n info(`button_render_branding_${ style.branding || 'default' }`);\n info(`button_render_fundingicons_${ style.fundingicons || 'default' }`);\n info(`button_render_tagline_${ style.tagline || 'default' }`);\n\n pptm.listenForButtonRender();\n pptm.reloadPptmScript(this.props.client[this.props.env]);\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_RENDER,\n [ FPTI.KEY.BUTTON_TYPE ]: FPTI.BUTTON_TYPE.IFRAME,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.BUTTON_SOURCE ]: this.props.source\n });\n\n if (isIEIntranet()) {\n warn(`button_render_intranet_mode`);\n }\n\n if (creditThrottle) {\n creditThrottle.logStart({\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID\n });\n }\n\n flushLogs();\n\n return original.apply(this, arguments);\n };\n }\n },\n\n onAuthorize: {\n type: 'function',\n alias: 'onApprove',\n required: true,\n\n decorate(original) : Function {\n return function decorateOnAuthorize(data, actions) : void | ZalgoPromise {\n\n if (data && !data.intent) {\n warn(`button_authorize_no_intent`, { paymentID: data.paymentID, token: data.paymentToken });\n }\n\n info('button_authorize');\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CHECKOUT_AUTHORIZE,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n if (isIEIntranet()) {\n warn(`button_authorize_intranet_mode`);\n }\n\n if (!isEligible()) {\n info('button_authorize_ineligible');\n }\n\n checkRecognizedBrowser('authorize');\n\n flushLogs();\n\n const restart = actions.restart;\n actions.restart = () => {\n return restart().then(() => {\n return new ZalgoPromise();\n });\n };\n\n actions.redirect = (win, url) => {\n return ZalgoPromise.try(() => {\n if (actions.close) {\n return actions.close();\n }\n }).then(() => {\n return redir(win || window.top, url || data.returnUrl);\n });\n };\n\n actions.payment.tokenize = memoize(() => {\n if (!this.props.braintree) {\n throw new Error(`Must pass in Braintree client to tokenize payment`);\n }\n\n return this.props.braintree\n .then(client => client.tokenizePayment(data));\n });\n\n const execute = actions.payment.execute;\n actions.payment.execute = () => {\n return execute().then(result => {\n\n if (!result || !result.id || !result.intent || !result.state) {\n warn(`execute_result_missing_data`);\n return new ZalgoPromise();\n }\n\n return result;\n });\n };\n\n const get = actions.payment.get;\n\n actions.payment.get = () => {\n return get().then(result => {\n if (!result || !result.id || !result.intent || !result.state) {\n warn(`get_result_missing_data`);\n return new ZalgoPromise();\n }\n\n return result;\n });\n };\n\n actions.request = request;\n\n onAuthorizeListener.trigger({\n paymentToken: data.paymentToken\n });\n\n if (creditThrottle) {\n creditThrottle.logComplete({\n [FPTI.KEY.BUTTON_SESSION_UID]: this.props.buttonSessionID\n });\n }\n\n return ZalgoPromise.try(() => {\n\n if (this.props.braintree) {\n return actions.payment.tokenize().then(({ nonce }) => {\n // $FlowFixMe\n Object.defineProperty(data, 'nonce', {\n get: () => {\n info('nonce_getter');\n flushLogs();\n return nonce;\n }\n });\n });\n }\n\n }).then(() => {\n return original.call(this, data, actions);\n }).catch(err => {\n if (this.props.onError) {\n return this.props.onError(err);\n }\n throw err;\n });\n };\n }\n },\n\n onShippingChange: {\n type: 'function',\n required: false,\n\n decorate(original) : void | Function {\n if (!original) {\n return;\n }\n\n return function decorateOnShippingChange(data, actions) : ZalgoPromise {\n\n info('button_shipping_change');\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CHECKOUT_SHIPPING_CHANGE,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n flushLogs();\n const timeout = __TEST__ ? 500 : 10 * 1000;\n\n const patch = actions.payment.patch;\n actions.payment.patch = (patchObject) => {\n return ZalgoPromise.try(() => {\n return patch(patchObject);\n });\n };\n\n const resolve = () => ZalgoPromise.resolve();\n const reject = actions.reject || function reject() {\n throw new Error(`Missing reject action callback`);\n };\n\n return ZalgoPromise.try(() => {\n return original.call(this, data, { ...actions, resolve, reject });\n }).timeout(timeout,\n new Error(`Timed out waiting ${ timeout }ms for payment`)).catch(err => {\n if (this.props.onError) {\n this.props.onError(err);\n }\n throw err;\n });\n };\n }\n },\n\n onError: {\n type: 'function',\n required: false,\n promisify: true,\n sendToChild: true,\n once: true,\n def() : (() => void) {\n return function onError(err : mixed) {\n if (isIEIntranet()) {\n warn(`button_error_intranet_mode`);\n flushLogs();\n\n // eslint-disable-next-line no-alert\n alert(`IE Intranet mode is not supported by PayPal. Please disable intranet mode, or continue in an alternate browser.`);\n }\n\n setTimeout(() => {\n throw err;\n });\n };\n }\n },\n\n onCancel: {\n type: 'function',\n required: false,\n noop: true,\n\n decorate(original) : Function {\n return function decorateOnCancel(data, actions) : void | ZalgoPromise {\n\n info('button_cancel');\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CHECKOUT_CANCEL,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n flushLogs();\n\n const redirect = (win, url) => {\n return ZalgoPromise.all([\n redir(win || window.top, url || data.cancelUrl),\n actions.close()\n ]);\n };\n\n return original.call(this, data, { ...actions, redirect });\n };\n }\n },\n\n onClick: {\n type: 'function',\n required: false,\n noop: true,\n decorate(original) : Function {\n return function decorateOnClick(data : ?{ fundingSource : string, card? : string, flow? : string, button_version? : string }) : void {\n\n info('button_click');\n if (data && data.flow) {\n info(`pay_flow_${ data.flow }`);\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.BUTTON,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_CLICK,\n [ FPTI.KEY.BUTTON_TYPE ]: FPTI.BUTTON_TYPE.IFRAME,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.CHOSEN_FUNDING ]: data && (data.card || data.fundingSource),\n [ FPTI.KEY.PAYMENT_FLOW ]: data && data.flow,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n if (isIEIntranet()) {\n warn('button_click_intranet_mode');\n }\n\n if (creditThrottle) {\n creditThrottle.log('click', {\n [ FPTI.KEY.STATE ]: FPTI.STATE.BUTTON,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_CLICK,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID\n });\n }\n\n const { color = 'default' } = this.props.style || {};\n info(`button_click_color_${ color }`);\n\n flushLogs();\n\n return original.apply(this, arguments);\n };\n }\n },\n\n onResize: {\n type: 'function',\n required: false,\n get value() : Function {\n let initialHeight;\n const logInlineGuestOutOfViewPortOnlyOnce = once((data) => {\n info('buttons_expansion_outside_viewport', data);\n immediateFlush();\n });\n\n return function onResizeHandler() {\n const container = this.container;\n\n if (!container) {\n return;\n }\n\n if (!initialHeight) {\n initialHeight = container.offsetHeight;\n }\n\n const getScrollOffsetY = () => {\n if (window.pageYOffset) {\n return window.pageYOffset;\n }\n\n if (document.documentElement) {\n return document.documentElement.scrollTop;\n }\n\n return 0;\n };\n\n // explanation https://github.com/paypal/paypal-checkout-components/pull/1136#discussion_r298025574\n const checkIfExpansionInViewport = () => {\n try {\n const scrollOffsetY = getScrollOffsetY();\n const windowHeight = window.innerHeight;\n\n const containerOffsetY = container.getBoundingClientRect().top;\n const VISIBLE_THRESHOLD = 200; // 200px, for the first input field to be visible\n\n return scrollOffsetY + windowHeight > initialHeight + containerOffsetY + VISIBLE_THRESHOLD;\n } catch (err) {\n info('cannot_get_the_viewport_information');\n return false;\n }\n };\n\n const isContainerExpanded = container && container.offsetHeight > initialHeight;\n const isExpansionInViewport = checkIfExpansionInViewport();\n\n if (!isContainerExpanded || isExpansionInViewport) {\n return;\n }\n\n logInlineGuestOutOfViewPortOnlyOnce({\n height: container.offsetHeight,\n window: {\n width: window.innerWidth,\n height: window.innerHeight\n }\n });\n };\n },\n decorate: (original) => debounce(original)\n },\n\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n },\n\n validate: validateButtonLocale\n },\n\n style: {\n type: 'object',\n required: false,\n queryParam: true,\n alias: 'buttonStyle',\n\n def() : Object {\n return {\n color: BUTTON_COLOR.GOLD,\n shape: BUTTON_SHAPE.PILL,\n size: BUTTON_SIZE.SMALL,\n label: BUTTON_LABEL.CHECKOUT,\n fundingicons: false,\n layout: BUTTON_LAYOUT.HORIZONTAL\n };\n },\n \n decorate(style : Object) : Object {\n const { label, layout = BUTTON_LAYOUT.HORIZONTAL } = style;\n if (!label && layout === BUTTON_LAYOUT.HORIZONTAL) {\n style.label = BUTTON_LABEL.CHECKOUT;\n return style;\n } else if (!label && layout === BUTTON_LAYOUT.VERTICAL) {\n style.label = BUTTON_LABEL.PAYPAL;\n return style;\n }\n return style;\n },\n\n validate(style = {}, props) {\n validateButtonStyle(style, props);\n flushLogs();\n }\n },\n\n validate: {\n type: 'function',\n required: false,\n decorate(validate) : Function {\n // $FlowFixMe\n return function decorateValidate(actions) : mixed {\n if (!this.validateCalled) {\n this.validateCalled = true;\n return validate(actions);\n }\n };\n }\n },\n\n logLevel: {\n type: 'string',\n required: false,\n get value() : string {\n return config.logLevel;\n }\n },\n\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n },\n\n awaitPopupBridge: {\n type: 'object',\n required: false,\n value: () => awaitPopupBridge(Button)\n },\n\n getPageUrl: {\n type: 'function',\n queryParam: false,\n required: false,\n def: () => {\n return () => window.location.href;\n }\n },\n\n test: {\n type: 'object',\n required: false,\n def() : Object {\n return { action: 'checkout' };\n }\n }\n }\n});\n\nif (Button.isChild()) {\n setupButtonChild(Button);\n}\n","/* @flow */\n\nimport { info, warn, flush as flushLogs } from 'beaver-logger/client';\nimport { CONSTANTS } from 'zoid/src';\nimport { getParent, getTop } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { config } from './config';\nimport { noop, isIE, getDomainSetting, extendUrl, patchMethod, once, extend } from './lib';\nimport { Button } from './button';\nimport { Checkout } from './checkout';\nimport { BUTTON_LABEL, BUTTON_SIZE, BUTTON_COLOR } from './constants';\nimport { rest } from './api';\n\nif (isIE() && getDomainSetting('ie_full_page')) {\n // $FlowFixMe\n Checkout.renderTo = (win) => {\n info('force_ie_full_page');\n flushLogs();\n\n // $FlowFixMe\n const checkout = Checkout.init({\n onAuthorize: noop\n });\n\n checkout.delegate(win);\n\n checkout.openContainer().then(() => {\n checkout.event.triggerOnce(CONSTANTS.EVENTS.CLOSE);\n checkout.showContainer();\n });\n\n // $FlowFixMe\n Button.xprops.payment().then(token => {\n window.top.location = extendUrl(config.checkoutUrl, { token });\n }).catch(err => {\n checkout.error(err);\n });\n };\n}\n\nconst parent = getParent(window);\nconst top = getTop(window);\n\nif (top && parent) {\n let canRenderTop = (top === parent);\n\n if (!canRenderTop) {\n Checkout.canRenderTo(top).then(result => {\n canRenderTop = result;\n });\n\n patchMethod(Checkout, 'renderTo', ({ args: [ win, props, el ], original, context }) => {\n\n if (!canRenderTop) {\n win = getParent(window);\n }\n\n return original.call(context, win, props, el);\n });\n }\n}\n\npatchMethod(Checkout, 'renderTo', ({ callOriginal, args: [ , props ] }) => {\n if (getDomainSetting('allow_full_page_fallback')) {\n const handleError = once((err) => {\n try {\n // eslint-disable-next-line no-console\n console.error(err && err.stack);\n } catch (err2) {\n // pass\n }\n\n // $FlowFixMe\n return Button.xprops.payment().then(token => {\n window.top.location = extendUrl(config.checkoutUrl, { token });\n });\n });\n\n props.onError = handleError;\n return callOriginal().catch(handleError);\n }\n return callOriginal();\n});\n\nlet debounce = false;\n\npatchMethod(Checkout, 'renderTo', ({ callOriginal, args: [ , props ] }) => {\n\n if (debounce) {\n warn('button_mutliple_click_debounce');\n return new ZalgoPromise(noop);\n }\n\n debounce = true;\n\n for (const methodName of [ 'onAuthorize', 'onCancel', 'onError', 'onClose' ]) {\n const original = props[methodName];\n props[methodName] = function unDebounce() : mixed {\n debounce = false;\n if (original) {\n return original.apply(this, arguments);\n }\n };\n }\n\n return callOriginal();\n});\n\npatchMethod(rest.payment, 'create', ({ original: createOriginal, context: createContext, args: [ env, client, options, experience ] }) => {\n if (!options.payment) {\n options = { payment: options, experience };\n }\n return createOriginal.call(createContext, env, client, options);\n});\n\npatchMethod(Button.props.style, 'validate', ({ callOriginal, args: [ style ] }) => {\n\n if (!style) {\n return callOriginal();\n }\n\n if (style && style.color === 'creditblue') {\n style.color = BUTTON_COLOR.DARKBLUE;\n }\n\n if (style && style.label === 'generic') {\n style.label = BUTTON_LABEL.PAYPAL;\n }\n\n if (style && (!style.label || style.label === BUTTON_LABEL.CHECKOUT) && style.size === 'tiny') {\n warn(`unsupported_button_size_tiny`);\n style.size = BUTTON_SIZE.SMALL;\n }\n\n return callOriginal();\n});\n\npatchMethod(Button, 'render', ({ callOriginal, args: [ props ] }) => {\n\n if (props.billingAgreement) {\n props.payment = props.billingAgreement;\n delete props.billingAgreement;\n }\n\n return callOriginal();\n});\n\npatchMethod(Button.props.payment, 'decorate', ({ original, context, args: [ originalPayment ] }) => {\n return original.call(context, function payment(data : Object, actions : Object) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n patchMethod(actions.payment, 'create', ({ original: createOriginal, context: createContext, args: [ options, experience ] }) => {\n if (!options.payment) {\n options = { payment: options, experience };\n }\n return createOriginal.call(createContext, options);\n });\n\n function resolveData(token) {\n resolve(token);\n }\n\n function rejectActions(err) {\n reject(err);\n }\n\n extend(resolveData, data);\n extend(resolveData, actions);\n extend(rejectActions, actions);\n\n const ctx = {\n props: {\n env: this.props.env,\n client: this.props.client\n }\n };\n\n let result;\n\n try {\n result = originalPayment.call(ctx, resolveData, rejectActions);\n } catch (err) {\n return reject(err);\n }\n\n if (result && typeof result.then === 'function') {\n return result.then(resolve, reject);\n }\n\n if (result !== undefined) {\n return resolve(result);\n }\n });\n });\n});\n\nif (Button.isChild()) {\n if (!window.Promise) {\n window.Promise = ZalgoPromise;\n }\n}\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { create } from 'zoid/src';\nimport { type Component } from 'zoid/src/component/component';\nimport type { CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { base64encode } from 'belter/src';\n\nimport { config } from '../config';\nimport { getButtonSessionID, getBrowserLocale, getSessionID, getCurrentScriptUrl } from '../lib';\n\ntype CardOptions = {|\n client : {\n [string] : (string | ZalgoPromise)\n },\n env? : string,\n locale? : string,\n logLevel : string,\n awaitPopupBridge : Function,\n onAuthorize : ({ returnUrl : string }, { redirect : (?CrossDomainWindowType, ?string) => ZalgoPromise }) => ?ZalgoPromise,\n onCancel? : ({ cancelUrl : string }, { redirect : (?CrossDomainWindowType, ?string) => ZalgoPromise }) => ?ZalgoPromise,\n onEvent? : ({ type : string, payload : Object }) => void,\n meta : Object,\n commit : boolean,\n token : string\n|};\n\nexport const Card : Component = create({\n tag: 'card-fields',\n name: 'ppcard',\n\n buildUrl(props) : string {\n const env = props.env || config.env;\n return config.inlinedCardFieldUrls[env];\n },\n\n contexts: {\n iframe: true,\n popup: false\n },\n\n dimensions: {\n height: '300px',\n width: '100%'\n },\n\n autoResize: {\n height: true,\n width: false\n },\n\n props: {\n sessionID: {\n type: 'string',\n required: false,\n def() : string {\n return getSessionID();\n },\n queryParam: true\n },\n\n\n token: {\n type: 'string',\n required: true,\n queryParam: true\n },\n\n buttonSessionID: {\n type: 'string',\n required: false,\n def() : ?string {\n return getButtonSessionID();\n },\n queryParam: true\n },\n\n commit: {\n type: 'boolean',\n required: false,\n queryParam: true\n },\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n },\n\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n allowDelegate: true,\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n }\n },\n\n initialFormValues: {\n type: 'object',\n required: false\n },\n\n\n onAuthorize: {\n type: 'function',\n required: true,\n once: true\n },\n\n onAuth: {\n type: 'function',\n required: false,\n sameDomain: true\n },\n\n onEvent: {\n type: 'function',\n required: false,\n sameDomain: true\n },\n\n getState: {\n type: 'function',\n required: false,\n sameDomain: true\n },\n\n dispatch: {\n type: 'object',\n required: false,\n sameDomain: true\n },\n\n onCancel: {\n type: 'function',\n required: false,\n once: true,\n noop: true\n },\n\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n },\n \n style: {\n type: 'object',\n required: false,\n queryParam: true,\n def() : Object {\n return {\n cardIcons: {\n display: false\n },\n submitButton: {\n display: true\n },\n currencyConversion: {\n display: true\n }\n };\n }\n }\n }\n});\n","/* @flow */\n\nimport { info, track, debug, warn, error, flush as flushLogs } from 'beaver-logger/client';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { config } from './config';\nimport { FPTI } from './constants';\nimport { initLogger, checkForCommonErrors, setLogLevel, stringifyError,\n stringifyErrorMessage, getResourceLoadTime, isPayPalDomain, isEligible,\n getDomainSetting, once, openMetaFrame, precacheRememberedFunding,\n getCurrentScript, getRememberedFunding } from './lib';\nimport { Button } from './button';\nimport { Checkout } from './checkout';\nimport { pptm } from './external';\n\nfunction domainToEnv(domain : string) : ?string {\n for (const env of Object.keys(config.paypalUrls)) {\n if (config.paypalUrls[env] === domain) {\n return env;\n }\n }\n}\n\nfunction setDomainEnv(domain : string) {\n const currentDomainEnv = domainToEnv(domain);\n\n if (currentDomainEnv && currentDomainEnv !== 'test') {\n config.env = currentDomainEnv;\n }\n}\n\nsetDomainEnv(`${ window.location.protocol }//${ window.location.host }`);\n\nZalgoPromise.onPossiblyUnhandledException(err => {\n\n error('unhandled_error', {\n stack: stringifyError(err),\n errtype: ({}).toString.call(err)\n });\n\n track({\n [ FPTI.KEY.ERROR_CODE ]: 'checkoutjs_error',\n [ FPTI.KEY.ERROR_DESC ]: stringifyErrorMessage(err)\n });\n\n return flushLogs().catch(err2 => {\n if (window.console) {\n try {\n if (window.console.error) {\n window.console.error('Error flushing:', stringifyError(err2));\n } else if (window.console.log) {\n window.console.log('Error flushing:', stringifyError(err2));\n }\n } catch (err3) {\n setTimeout(() => {\n throw err3;\n }, 1);\n }\n }\n });\n});\n\nconst currentScript = getCurrentScript();\nconst currentProtocol = window.location.protocol.split(':')[0];\n\n\ntype ConfigOptions = {|\n env? : ?string,\n stage? : ?string,\n apiStage? : ?string,\n stageUrl? : ?string,\n localhostUrl? : ?string,\n checkoutUri? : ?string,\n state? : ?string,\n logLevel? : ?string,\n merchantID? : ?string,\n precacheRemembered? : boolean,\n authCode? : ?string\n|};\n\nfunction configure({ env, stage, stageUrl, apiStage, localhostUrl, checkoutUri, state, logLevel, merchantID, authCode } : ConfigOptions = {}) {\n\n if (env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n\n delete config.env;\n config.env = env;\n } else if (Button.xprops && Button.xprops.env) {\n delete config.env;\n // $FlowFixMe\n config.env = Button.xprops.env;\n } else if (Checkout.xprops && Checkout.xprops.env) {\n delete config.env;\n // $FlowFixMe\n config.env = Checkout.xprops.env;\n }\n\n if (stage) {\n delete config.stage;\n config.stage = stage;\n } else if (Button.xprops && Button.xprops.stage) {\n delete config.stage;\n // $FlowFixMe\n config.stage = Button.xprops.stage;\n } else if (Checkout.xprops && Checkout.xprops.stage) {\n delete config.stage;\n // $FlowFixMe\n config.stage = Checkout.xprops.stage;\n }\n\n if (stageUrl) {\n delete config.stageUrl;\n // $FlowFixMe\n config.stageUrl = stageUrl;\n } else if (Button.xprops && Button.xprops.stageUrl) {\n delete config.stageUrl;\n // $FlowFixMe\n config.stageUrl = Button.xprops.stageUrl;\n } else if (Checkout.xprops && Checkout.xprops.stageUrl) {\n delete config.stageUrl;\n // $FlowFixMe\n config.stageUrl = Checkout.xprops.stageUrl;\n }\n\n authCode = authCode || (Button.xprops && Button.xprops.authCode) || (Checkout.xprops && Checkout.xprops.authCode);\n\n if (authCode) {\n delete config.authCode;\n config.authCode = authCode;\n }\n\n if (apiStage) {\n delete config.apiStage;\n config.apiStage = apiStage;\n }\n\n localhostUrl = localhostUrl || (Button.xprops && Button.xprops.localhostUrl) || (Checkout.xprops && Checkout.xprops.localhostUrl);\n if (localhostUrl) {\n config.localhostUrl = localhostUrl;\n }\n\n checkoutUri = checkoutUri || (Button.xprops && Button.xprops.checkoutUri) || (Checkout.xprops && Checkout.xprops.checkoutUri);\n if (checkoutUri) {\n config.checkoutUri = checkoutUri;\n }\n\n if (state) {\n delete config.state;\n config.state = state;\n }\n\n if (merchantID) {\n config.merchantID = merchantID;\n }\n\n if (logLevel) {\n setLogLevel(logLevel);\n } else {\n setLogLevel(config.logLevel);\n }\n}\n\nexport const init = once(({ precacheRemembered }) => {\n\n if (!isEligible()) {\n warn('ineligible');\n }\n\n checkForCommonErrors();\n\n initLogger();\n\n if (pptm.shouldCreateInitialPptmScript()) {\n pptm.createPptmScript();\n }\n\n if (precacheRemembered) {\n precacheRememberedFunding();\n }\n\n if (getDomainSetting('force_bridge') && !isPayPalDomain()) {\n openMetaFrame(config.env);\n }\n\n info(`setup_${ config.env }`);\n\n debug(`current_protocol_${ currentProtocol }`);\n});\n\n// $FlowFixMe\nexport function setup(options : ConfigOptions = {}) {\n configure(options);\n init(options);\n}\n\nif (currentScript) {\n setup({\n env: currentScript.getAttribute('data-env'),\n stage: currentScript.getAttribute('data-stage'),\n apiStage: currentScript.getAttribute('data-api-stage'),\n stageUrl: currentScript.getAttribute('data-stage-url'),\n localhostUrl: isPayPalDomain() ? currentScript.getAttribute('data-localhost-url') : undefined,\n checkoutUri: isPayPalDomain() ? currentScript.getAttribute('data-checkout-uri') : undefined,\n state: currentScript.getAttribute('data-state'),\n logLevel: currentScript.getAttribute('data-log-level'),\n merchantID: currentScript.getAttribute('data-merchant-id'),\n authCode: currentScript.getAttribute('data-auth-code'),\n precacheRemembered: currentScript.hasAttribute('data-precache-remembered-funding')\n });\n\n} else {\n setup();\n}\n\nif (!isPayPalDomain()) {\n\n if (currentScript) {\n\n const scriptProtocol = currentScript.src.split(':')[0];\n const loadTime = getResourceLoadTime(currentScript.src);\n\n debug(`current_script_protocol_${ scriptProtocol }`);\n debug(`current_script_protocol_${ currentProtocol === scriptProtocol ? 'match' : 'mismatch' }`);\n debug(`current_script_version_${ config.version.replace(/[^0-9a-zA-Z]+/g, '_') }`);\n\n if (loadTime) {\n debug(`current_script_time`, { loadTime });\n debug(`current_script_time_${ Math.floor(loadTime / 1000) }`);\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.SCRIPT_LOAD,\n [ FPTI.KEY.TRANSITION_TIME ]: loadTime,\n [ FPTI.KEY.FUNDING_REMEMBERED ]: getRememberedFunding().join(',')\n });\n\n } else {\n\n debug(`no_current_script`);\n debug(`no_current_script_version_${ config.version.replace(/[^0-9a-zA-Z]+/g, '_') }`);\n\n if (document.currentScript) { // eslint-disable-line compat/compat\n debug(`current_script_not_recognized`, { src: document.currentScript.src }); // eslint-disable-line compat/compat\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.SCRIPT_LOAD\n });\n }\n}\n","/* @flow */\n\nimport { debug, info, warn, error, track, flush } from 'beaver-logger/client';\nimport { destroyAll as _destroyAll } from 'zoid/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport * as _postRobot from 'post-robot/src'; // eslint-disable-line import/no-namespace\n\nimport { isPayPalDomain } from './lib';\nimport { Checkout as _Checkout } from './checkout';\nimport { BillingPage as _BillingPage } from './billing';\nimport { ThreeDomainSecure as _ThreeDomainSecure } from './threeDomainSecure';\n\nimport './hacks'; // eslint-disable-line import/no-unassigned-import\n\nexport const postRobot = _postRobot;\nexport { ZalgoPromise as Promise } from 'zalgo-promise/src';\nexport { PopupOpenError } from 'zoid/src';\n\nexport { rest } from './api';\nexport { Button } from './button';\nexport { Card } from './card';\nexport { setup } from './setup';\nexport { config } from './config';\nexport { ENV, USERS, SOURCE, FUNDING, CARD } from './constants';\nexport { request, isEligible, isFundingRemembered, allowIframe as forceIframe, allowIframe as isWebView, allowIframe } from './lib';\nexport { logExperimentTreatment } from './experiments';\nexport { logFundingEligibility } from './funding';\n\nexport const onPossiblyUnhandledException = ZalgoPromise.onPossiblyUnhandledException;\n\nexport const version = __PAYPAL_CHECKOUT__.__MINOR_VERSION__;\n\nexport let checkout;\nexport let apps;\n\nif (__PAYPAL_CHECKOUT__.__LEGACY_SUPPORT__) {\n const legacy = require('./legacy');\n checkout = legacy.checkout;\n apps = legacy.apps;\n}\n\n// -------------------------------------------------------------\n\nexport let Checkout;\nexport let BillingPage;\nexport let PayPalCheckout;\nexport let destroyAll;\nexport let enableCheckoutIframe;\nexport let logger;\nexport let ThreeDomainSecure;\n\nfunction _enableCheckoutIframe() {\n _Checkout.contexts.iframe = true;\n}\n\nif (isPayPalDomain() || __TEST__) {\n Checkout = _Checkout;\n BillingPage = _BillingPage;\n ThreeDomainSecure = _ThreeDomainSecure;\n PayPalCheckout = _Checkout;\n enableCheckoutIframe = _enableCheckoutIframe;\n destroyAll = _destroyAll;\n logger = { debug, info, warn, error, track, flush };\n}\n","/* @flow */\n/* eslint import/no-default-export: off */\n\nimport * as INTERFACE from './interface'; // eslint-disable-line import/no-namespace\n\nexport * from './interface';\nexport default INTERFACE;\n","/* @flow */\n\nexport const LOG_PREFIX = `paypal_legacy`;\n\nexport const ATTRIBUTES = {\n BUTTON: 'data-paypal-button',\n MERCHANT_ID: 'data-paypal-id',\n ENV: 'data-env',\n SANDBOX: 'data-sandbox'\n};\n\nexport const CLASSES = {\n HIDDEN_BUTTON: 'paypal-button-hidden'\n};\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { debug } from 'beaver-logger/client';\nimport { bridge } from 'post-robot/src';\n\nimport { config } from '../config';\nimport { openMetaFrame, noop } from '../lib';\n\nexport function setupPostBridge(env : string) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n const metaFrameDomain : string = config.paypalDomains[env];\n\n if (!bridge || !bridge.needsBridge({ domain: metaFrameDomain })) {\n return debug(`post_bridge_not_required`, { env });\n }\n\n debug(`setup_post_bridge`, { env });\n\n return openMetaFrame(env).then(noop);\n });\n}\n","/* @flow */\n\nimport { isDevice, isEligible, supportsPopups } from '../lib';\n\nexport function isLegacyEligible() : boolean {\n\n if (!isEligible()) {\n return false;\n }\n\n if (!supportsPopups()) {\n return false;\n }\n\n if (isDevice()) {\n return false;\n }\n\n return true;\n}\n","/* @flow */\n\nimport { prefix } from 'beaver-logger/client';\n\nimport { COUNTRY, LANG, LOCALE } from '../constants';\nimport type { LocaleType } from '../types';\n\nimport { LOG_PREFIX } from './constants';\n\nconst { warn } = prefix(LOG_PREFIX);\n\nconst DEFAULT_COUNTRY = COUNTRY.US;\nconst DEFAULT_LANG = LANG.EN;\n\nexport function normalizeLocale(locale : string) : LocaleType {\n\n let [ lang, country ] = locale.split('_');\n\n if (!country) {\n if (LOCALE[lang]) {\n country = lang;\n lang = null;\n } else {\n country = DEFAULT_COUNTRY;\n }\n }\n\n if (!LOCALE[country]) {\n warn(`invalid_user_country`, { country });\n country = DEFAULT_COUNTRY;\n }\n\n if (!lang) {\n lang = DEFAULT_LANG;\n }\n\n if (LOCALE[country].indexOf(lang) === -1) {\n warn(`invalid_user_lang`, { lang });\n\n if (LOCALE[country].indexOf(DEFAULT_LANG) !== -1) {\n lang = DEFAULT_LANG;\n } else {\n lang = LOCALE[country][0];\n }\n }\n\n return { country, lang };\n}\n","/* @flow */\n\nimport { prefix } from 'beaver-logger/client';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { config } from '../config';\nimport { FPTI, BUTTON_COLOR, BUTTON_SHAPE, BUTTON_SIZE, BUTTON_LABEL } from '../constants';\nimport { loadScript, memoize, isElementVisible, stringifyError } from '../lib';\n\nimport { LOG_PREFIX } from './constants';\nimport { normalizeLocale } from './common';\n\nconst { info, debug, error } = prefix(LOG_PREFIX);\n\nconst loadButtonJS = memoize(() : ZalgoPromise => {\n\n debug(`buttonjs_load`);\n\n return loadScript(config.buttonJSUrl).catch(err => {\n info(`buttonjs_load_error_retry`, { error: stringifyError(err) });\n return loadScript(config.buttonJSUrl);\n }).then(result => {\n debug(`buttonjs_load_success`);\n return result;\n }).catch(err => {\n error(`buttonjs_load_error`, { error: stringifyError(err) });\n throw err;\n });\n});\n\nfunction renderButton(id, { container, locale, type, color, shape, size }) : ZalgoPromise {\n\n return loadButtonJS().then(() => {\n\n if (locale) {\n const { country, lang } = normalizeLocale(locale);\n locale = `${ lang }_${ country }`;\n }\n\n locale = locale || `${ config.locale.lang }_${ config.locale.country }`;\n color = color || BUTTON_COLOR.GOLD;\n shape = shape || BUTTON_SHAPE.PILL;\n size = size || BUTTON_SIZE.SMALL;\n type = type || BUTTON_LABEL.CHECKOUT;\n\n debug(`render_button_lc_${ locale }`);\n debug(`render_button_color_${ color }`);\n debug(`render_button_shape_${ shape }`);\n debug(`render_button_size_${ size }`);\n debug(`render_button_label_${ type }`);\n\n const el = window.paypal.button.create(id, { lc: locale, color, shape, size }, { type: 'button', label: type }).el;\n container.appendChild(el);\n\n try {\n info(`in_page_button_${ isElementVisible(el) ? 'visible' : 'not_visible' }`);\n\n } catch (err) {\n // pass\n }\n\n return el.childNodes[0];\n });\n}\n\n// eslint-disable-next-line flowtype/no-mutable-array\nexport function renderButtons(id : string, buttons : Array) : ZalgoPromise> {\n\n return ZalgoPromise.map(buttons, button => {\n return ZalgoPromise.try(() => {\n\n if (button.container) {\n return renderButton(id, button);\n } else {\n return button.button;\n }\n\n }).then(element => {\n\n let container;\n let type;\n const condition = button.condition;\n const click = button.click;\n\n if (button.container) {\n container = button.container;\n type = FPTI.BUTTON_TYPE.HTML;\n } else {\n container = button.button;\n type = FPTI.BUTTON_TYPE.CUSTOM;\n }\n\n return { container, element, type, condition, click };\n });\n });\n}\n\nexport function getHijackTargetElement(button : HTMLElement | HTMLButtonElement) : ?HTMLElement {\n\n // $FlowFixMe\n const form = button.form;\n\n if (form) {\n debug(`target_element_button_form`);\n return form;\n }\n\n const tagName = button.tagName && button.tagName.toLowerCase();\n\n if (tagName === 'a') {\n debug(`target_element_link`);\n return button;\n }\n\n const parentElement = button.parentElement;\n const parentTagName = parentElement && parentElement.tagName && parentElement.tagName.toLowerCase();\n\n if ((tagName === 'img' || tagName === 'button') && parentTagName === 'a') {\n debug(`target_element_parent_link`);\n // $FlowFixMe\n return parentElement;\n }\n\n const grandparentElement = parentElement && parentElement.parentElement;\n const grandparentTagName = grandparentElement && grandparentElement.tagName && grandparentElement.tagName.toLowerCase();\n\n if (tagName === 'button' && grandparentTagName === 'a') {\n debug(`target_element_grandparent_link`);\n // $FlowFixMe\n return button.parentElement && button.parentElement.parentElement;\n }\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { flush as flushLogs, prefix } from 'beaver-logger/client';\n\nimport { config } from '../config';\nimport { ENV } from '../constants';\nimport { urlWillRedirectPage, redirect as redir } from '../lib';\n\nimport { LOG_PREFIX } from './constants';\n\nconst { warn } = prefix(LOG_PREFIX);\n\nlet redirected = false;\n\nexport function logRedirect(location : string) {\n\n if (redirected) {\n warn(`multiple_redirects`);\n }\n\n if (urlWillRedirectPage(location)) {\n redirected = true;\n }\n\n flushLogs();\n}\n\nexport function redirect(url : string) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n if (!url) {\n throw new Error(`Redirect url undefined`);\n }\n\n if (config.env === ENV.TEST && urlWillRedirectPage(url)) {\n return redir(window, `#fullpageRedirect?url=${ url }`);\n }\n\n logRedirect(url);\n\n return redir(window, url);\n });\n}\n\nexport function isToken(item : string) : boolean {\n return Boolean(item && item.match(/^(EC-)?[A-Z0-9]{17}$/));\n}\n\n\n/* Parse Token\n -----------\n\n We are passed either a token, or a url containing the token. In order to run the new checkout component we need to\n strip out the token from the url in order to pass it down as a prop\n*/\n\nexport function parseToken(token : string) : ?string {\n\n if (!token) {\n return;\n }\n\n token = decodeURIComponent(decodeURIComponent(token));\n\n // We may get lucky and be passed a token straight off the bar\n\n if (token.match(/^(EC-)?[A-Z0-9]{17}$/)) {\n return token;\n }\n\n // Otherwise strip the token from the url we're sent\n\n let match = token.match(/token=((EC-)?[A-Z0-9]{17})/);\n\n if (match) {\n return match[1];\n }\n\n match = token.match(/(EC-[A-Z0-9]{17})/);\n\n if (match) {\n return match[1];\n }\n}\n\nexport function hasToken(item : string) : boolean {\n return Boolean(parseToken(item));\n}\n","/* @flow */\n\nimport { prefix } from 'beaver-logger/client';\n\nimport { config } from '../config';\nimport { ENV } from '../constants';\nimport { getElements } from '../lib';\n\nimport { normalizeLocale } from './common';\nimport { LOG_PREFIX } from './constants';\n\nconst { info, warn } = prefix(LOG_PREFIX);\n\nexport function normalizeOptions(options : Object) {\n\n // Normalize environment\n\n if (options.environment) {\n\n if (options.environment === 'live') {\n options.environment = ENV.PRODUCTION;\n }\n\n if (!config.paypalUrls[options.environment]) {\n warn('invalid_env', { badenv: options.environment });\n options.environment = config.env;\n }\n }\n\n // If we're passed a single button in options.button, turn it into an array\n\n if (options.button && !Array.isArray(options.button)) {\n info(`options_button_single_button_passed`);\n\n options.button = [ options.button ];\n }\n\n // If we're passed an array of elements in options.buttons, switch it over to options.button\n\n if (options.buttons && getElements(options.buttons).length) {\n info(`options_buttons_with_elements_passed`);\n\n options.button = options.buttons;\n delete options.buttons;\n }\n\n // If we're passed an empty options.button array, clear the value\n\n if (options.button && options.button.length === 0) {\n info(`options_button_empty`);\n\n delete options.button;\n }\n\n // If we're passed options.button and options.container, concat both under button\n\n if (options.button && options.container) {\n info(`options_button_and_container_passed`, { button: options.button, container: options.container });\n\n options.button = options.button.concat(options.container);\n delete options.container;\n }\n\n // Normalize button selectors to elements\n\n if (options.button) {\n const button = getElements(options.button);\n\n if (button.length) {\n options.button = button;\n\n } else {\n warn(`options_button_element_not_found`, { element: JSON.stringify(options.button) });\n delete options.button;\n }\n }\n\n // Normalize options.button to options.buttons\n\n if (options.button) {\n\n options.buttons = options.button.map(button => {\n return {\n button,\n click: options.click,\n condition: options.condition\n };\n });\n\n delete options.click;\n delete options.condition;\n delete options.button;\n }\n\n // Normalize array of buttons\n\n else if (options.buttons && Array.isArray(options.buttons)) {\n\n const buttons = [];\n\n options.buttons.forEach(button => {\n\n if (!button) {\n return;\n }\n\n if (button.container && button.container !== options.container) {\n warn(`mismatched_container_and_button_passed`, { options: options.container, button: button.container });\n }\n\n getElements(button.container || button.button).forEach(element => {\n buttons.push({\n\n [ button.container ? 'container' : 'button' ]: element,\n\n click: button.click || options.click,\n condition: button.condition || options.condition,\n type: button.type || options.type,\n locale: button.locale || options.locale,\n color: button.color || options.color,\n shape: button.shape || options.shape,\n size: button.size || options.size\n });\n });\n });\n\n delete options.buttons;\n delete options.click;\n delete options.condition;\n delete options.button;\n delete options.type;\n delete options.locale;\n delete options.color;\n delete options.shape;\n delete options.size;\n\n if (buttons.length) {\n options.buttons = buttons;\n }\n }\n\n // Otherwise normalize container into array of buttons\n\n else if (options.container && !Array.isArray(options.buttons)) {\n\n const buttons = [];\n\n getElements(options.container).forEach((container, i) => {\n buttons.push({\n container,\n click: options.click,\n condition: options.condition,\n type: Array.isArray(options.type) ? options.type[i] : options.type,\n locale: Array.isArray(options.locale) ? options.locale[i] : options.locale,\n color: Array.isArray(options.color) ? options.color[i] : options.color,\n shape: Array.isArray(options.shape) ? options.shape[i] : options.shape,\n size: Array.isArray(options.size) ? options.size[i] : options.size\n });\n });\n\n delete options.container;\n delete options.buttons;\n delete options.click;\n delete options.condition;\n delete options.button;\n delete options.type;\n delete options.locale;\n delete options.color;\n delete options.shape;\n delete options.size;\n\n if (buttons.length) {\n options.buttons = buttons;\n }\n }\n\n if (!options.buttons) {\n options.buttons = [];\n }\n}\n\nexport function setupConfig(options : Object) {\n\n if (options.environment && config.paypalUrls[options.environment]) {\n config.env = options.environment;\n }\n\n if (options.locale) {\n config.locale = normalizeLocale(options.locale);\n config.customCountry = true;\n }\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { prefix, flush as flushLogs } from 'beaver-logger/client';\nimport formSerialize from 'form-serialize';\n\nimport { Checkout } from '../checkout';\nimport { config } from '../config';\nimport { ENV, FPTI } from '../constants';\nimport { supportsPopups, once, safeJSON, extendUrl, stringifyError, request } from '../lib';\n\nimport { setupPostBridge } from './postBridge';\nimport { isLegacyEligible } from './eligibility';\nimport { LOG_PREFIX } from './constants';\nimport { renderButtons, getHijackTargetElement } from './button';\nimport { redirect, logRedirect, parseToken } from './util';\nimport { normalizeOptions, setupConfig } from './options';\n\nconst { info, debug, warn, error, track } = prefix(LOG_PREFIX);\n\nexport const checkout = {};\nexport const apps = { checkout, Checkout: checkout };\n\nexport function reset() {\n\n debug('reset');\n\n // Once our callback has been called, we can set the global methods to their original values\n\n checkout.initXO = initXO; // eslint-disable-line no-use-before-define\n checkout.startFlow = startFlow; // eslint-disable-line no-use-before-define\n checkout.closeFlow = closeFlow; // eslint-disable-line no-use-before-define\n}\n\ncheckout.reset = reset;\n\n// $FlowFixMe\nObject.defineProperty(checkout, 'urlPrefix', {\n get() : string {\n return `${ config.checkoutUrl }${ config.checkoutUrl.indexOf('?') === -1 ? '?' : '&' }token=`;\n }\n});\n\nfunction matchUrlAndPaymentToken(item) : { url : string, paymentToken : ?string } {\n\n if (!item || !item.trim()) {\n error(`startflow_no_url_or_token`, { item });\n throw new Error(`startflow_no_url_or_token`);\n }\n\n\n const paymentToken = parseToken(item);\n let url = (paymentToken && paymentToken === item) ? '' : item;\n\n if (url) {\n\n if (!url.match(/^https?:\\/\\/|^\\//)) {\n if (paymentToken) {\n info(`startflow_relative_url_with_token`, { url });\n } else {\n info(`startflow_relative_url_no_token`, { url });\n }\n\n if (url.toLowerCase().indexOf('ec-') === 0 && paymentToken) {\n url = `${ config.checkoutUrl }${ url }`;\n }\n\n } else if (paymentToken) {\n if (url.indexOf('.paypal.com') !== -1) {\n debug(`startflow_paypalurl_with_token`, { url });\n } else {\n debug(`startflow_url_with_token`, { url });\n }\n\n } else {\n debug(`startflow_url_no_token`, { url });\n }\n\n } else {\n\n if (paymentToken) {\n url = extendUrl(config.checkoutUrl, { token: paymentToken });\n debug(`startflow_with_token`, { url });\n } else {\n error(`startflow_no_url_or_token`, { url });\n throw new Error(`Could not determine url or token from \"${ item }\"`);\n }\n }\n\n return { paymentToken, url };\n}\n\nfunction checkUrlAgainstEnv(url : string) {\n\n const paypalUrls = config.paypalUrls;\n\n for (const env of Object.keys(paypalUrls)) {\n const paypalUrl = paypalUrls[env];\n\n if (env === ENV.TEST || env === ENV.DEMO) {\n continue;\n }\n\n if (env !== config.env) {\n if (url.indexOf(paypalUrl) === 0 || url.indexOf(paypalUrl.replace('//www.', '//')) === 0) {\n warn(`mismatched_env_startflow_url`, { env: config.env, url });\n redirect(url);\n throw new Error(`${ url } is not a ${ config.env } url`);\n }\n }\n }\n}\n\n/* Get Token\n ---------\n\n Normally in the component world, getToken would be a user-provided function which passes a callback, and expects\n that callback to be called with either an error, or an EC token.\n\n In our case, we can emulate these callback calls by setting over the startFlow and closeFlow globals, and using\n them as our success and failure cases.\n\n Note: this method is set to `precall: true` mode. This means that it will be called the moment the component is\n inited on the page. This means that the moment we initialize, we're ready to start accepting a token via one of the\n global methods.\n*/\n\nfunction awaitPaymentTokenAndUrl(event? : ?Event, targetElement? : ?HTMLElement) : { url : ZalgoPromise, paymentToken : ZalgoPromise } {\n\n const paymentTokenAndUrl = new ZalgoPromise((resolve) => {\n\n if (event && targetElement && (Math.random() < 0.001 || window.enablev3ajax)) {\n let method;\n let url;\n let body;\n let contentType;\n\n info('gettoken_targetelement_start');\n flushLogs();\n \n if (targetElement.tagName.toLowerCase() === 'a') {\n method = 'get';\n url = targetElement.getAttribute('href');\n } else if (targetElement.tagName.toLowerCase() === 'form') {\n method = (targetElement.getAttribute('method') || 'get').toLowerCase();\n url = targetElement.getAttribute('action');\n body = formSerialize(targetElement);\n contentType = targetElement.getAttribute('enctype') || 'application/x-www-form-urlencoded';\n }\n \n if (method && url) {\n event.preventDefault();\n\n request({\n method,\n url,\n body,\n headers: {\n 'Accept': 'application/paypal-json-token',\n 'Content-type': contentType || ''\n }\n }).then(json => {\n const urlAndPaymentToken = matchUrlAndPaymentToken(json.token);\n resolve(urlAndPaymentToken);\n info('gettoken_targetelement_success', urlAndPaymentToken);\n flushLogs();\n\n }).catch(err => {\n warn('gettoken_targetelement_error', {\n // $FlowFixMe\n err: err.stack || err.toString()\n });\n flushLogs();\n });\n \n } else {\n warn('gettoken_targetelement_no_method_or_url');\n flushLogs();\n }\n }\n\n\n checkout.initXO = () => {\n warn(`gettoken_initxo`);\n };\n\n // startFlow is our 'success' case - we get a token, and we can pass it back to the caller\n\n checkout.startFlow = once((item) => {\n debug(`gettoken_startflow`, { item });\n\n const { url, paymentToken } = matchUrlAndPaymentToken(item);\n\n checkUrlAgainstEnv(url);\n\n return resolve({ url, paymentToken });\n });\n });\n\n const url = paymentTokenAndUrl.then(result => result.url);\n const paymentToken = paymentTokenAndUrl.then(result => result.paymentToken);\n\n return { url, paymentToken };\n}\n\n\n/* Init PayPal Checkout\n --------------------\n\n Initialize the Checkout component with some standard props:\n\n - Pass in env from global state (saved during setup() call)\n - Return to success url on payment authorize\n - Return to cancel url on cancel\n*/\n\nlet paypalCheckoutInited = false;\nlet closeFlowCalled = false;\n\nfunction initPayPalCheckout(props = {}) : Object {\n\n info(`init_checkout`);\n\n if (paypalCheckoutInited && config.env !== ENV.TEST) {\n warn(`multiple_init_paypal_checkout`);\n }\n\n if (closeFlowCalled) {\n debug(`init_after_closeflow`);\n }\n\n paypalCheckoutInited = true;\n\n const paypalCheckout = Checkout.init({\n\n onAuthorize(data, actions) : ZalgoPromise {\n info(`payment_authorized`);\n logRedirect(data.returnUrl);\n return actions.redirect(window);\n },\n\n onCancel(data, actions) : ?ZalgoPromise {\n if (data.cancelUrl) {\n info(`payment_canceled`);\n logRedirect(data.cancelUrl);\n return actions.redirect(window);\n }\n },\n\n fallback(url) : ZalgoPromise {\n error(`fallback_handler`, { url });\n this.destroy();\n return redirect(url);\n },\n\n ...props\n });\n\n checkout.closeFlow = (closeUrl? : string) => {\n warn(`closeflow`);\n\n closeFlowCalled = true;\n\n reset();\n\n paypalCheckout.destroy();\n\n if (closeUrl) {\n warn(`closeflow_with_url`, { closeUrl });\n return redirect(closeUrl);\n }\n };\n\n return paypalCheckout;\n}\n\nfunction renderPayPalCheckout(props : Object = {}, hijackTarget? : ?Element) : ZalgoPromise {\n\n const urlProp = ZalgoPromise.resolve(props.url);\n\n const paymentToken = new ZalgoPromise(resolve => {\n props.init = (data) => {\n resolve(data.paymentToken);\n };\n });\n\n const errorHandler = once(err => {\n\n error(`component_error`, { error: stringifyError(err) });\n\n if (hijackTarget) {\n warn(`render_error_hijack_revert_target`);\n hijackTarget.removeAttribute('target');\n }\n\n // eslint-disable-next-line promise/no-promise-in-callback\n urlProp.then(url => {\n warn(`render_error_redirect_using_url`);\n return redirect(url);\n });\n\n // eslint-disable-next-line promise/no-promise-in-callback\n paymentToken.then(token => {\n warn(`render_error_redirect_using_token`);\n return redirect(extendUrl(config.checkoutUrl, { token }));\n });\n });\n\n props.onError = errorHandler;\n\n let paypalCheckout;\n\n if (hijackTarget) {\n\n delete props.url;\n\n paypalCheckout = initPayPalCheckout(props);\n\n paypalCheckout.hijack(hijackTarget);\n paypalCheckout.runTimeout();\n\n urlProp.then(url => {\n warn(`hijack_then_url_passed`);\n paypalCheckout.loadUrl(url);\n });\n\n } else {\n\n paypalCheckout = initPayPalCheckout(props);\n }\n\n const render = paypalCheckout.render(null, !hijackTarget);\n\n checkout.win = paypalCheckout.window;\n\n return render.catch(errorHandler);\n}\n\n\nfunction handleClick(clickHandler, event) {\n debug(`button_click_handler`);\n\n try {\n clickHandler(event);\n } catch (err) {\n error(`click_handler_error`, { error: stringifyError(err) });\n }\n}\n\nfunction handleClickHijack(event, element) : void {\n\n const targetElement = getHijackTargetElement(element);\n\n if (!targetElement) {\n return error(`target_element_not_found`);\n }\n\n info(`init_paypal_checkout_hijack`);\n\n const { url, paymentToken } = awaitPaymentTokenAndUrl(event, targetElement);\n\n let token;\n \n paymentToken.then(result => {\n token = result;\n });\n\n renderPayPalCheckout({ url, payment: () => ZalgoPromise.resolve(token) }, targetElement);\n}\n\nfunction listenClick(container, button, clickHandler, condition, tracker) : void {\n\n const element : HTMLElement = (container.tagName.toLowerCase() === 'a') ? container : button;\n\n const isClick = (typeof clickHandler === 'function');\n\n if (element.hasAttribute('data-paypal-click-listener')) {\n return warn(`button_already_has_paypal_click_listener`);\n }\n\n element.setAttribute('data-paypal-click-listener', '');\n\n const targetElement = getHijackTargetElement(element);\n\n if (targetElement && isClick) {\n info(`button_link_or_form`);\n }\n\n element.addEventListener('click', (event : Event) => {\n\n tracker();\n\n const eligible = isLegacyEligible();\n\n if (supportsPopups()) {\n debug(`click_popups_supported`);\n\n if (!eligible) {\n debug(`click_popups_supported_but_ineligible`);\n }\n } else {\n debug(`click_popups_not_supported`);\n\n if (eligible) {\n debug(`click_popups_not_supported_but_eligible`);\n }\n }\n\n if (!isClick) {\n\n if (!eligible) {\n return debug(`ineligible_listenclick`);\n }\n }\n\n info(`button_click`);\n\n if (typeof condition === 'function') {\n if (condition.call()) {\n info(`button_click_condition_enabled`);\n } else {\n return info(`button_click_condition_disabled`);\n }\n }\n\n if (isClick) {\n return handleClick(clickHandler, event);\n\n } else {\n return handleClickHijack(event, element);\n }\n });\n}\n\nfunction instrumentButtonRender(type : string) {\n info(`render_${ type }_button`);\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_RENDER,\n [ FPTI.KEY.BUTTON_TYPE ]: type\n });\n\n flushLogs();\n}\n\nfunction instrumentButtonClick(type : string) {\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_CLICK,\n [ FPTI.KEY.BUTTON_TYPE ]: type\n });\n flushLogs();\n}\n\n\n/* Setup\n -----\n\n Emulate window.paypal.checkout.setup.\n\n The purpose of this method is to:\n\n - Set up configuration for the incontext flow\n - Render a button to initiate the checkout window\n*/\n\nlet setupCalled = false;\n\nexport function setup(id : string, options : Object = {}) : ZalgoPromise {\n\n id = id || 'merchant';\n\n info(`setup`, {\n id,\n env: options.environment,\n options: safeJSON(options)\n });\n\n if (setupCalled) {\n debug(`setup_called_multiple_times`);\n }\n\n setupCalled = true;\n\n normalizeOptions(options);\n setupConfig(options);\n\n setupPostBridge(config.env);\n\n return ZalgoPromise.try(() => {\n\n // If there are no buttons passed, can only assume there's a custom paypal button with a custom listener\n\n if (!options.buttons.length) {\n return instrumentButtonRender(FPTI.BUTTON_TYPE.CUSTOM);\n }\n\n // Otherwise render whatever buttons we were asked to, and listen for them to be clicked\n\n return renderButtons(id, options.buttons).then(buttons => {\n\n buttons.forEach(button => {\n instrumentButtonRender(button.type);\n\n listenClick(button.container, button.element, button.click, button.condition, () => {\n instrumentButtonClick(button.type);\n });\n });\n });\n });\n}\n\ncheckout.setup = setup;\n\n/* Init XO\n -------\n\n Emulate paypal.checkout.initXO\n\n Normally this would be used only to open the checkout page. But here we can just kick off the whole flow, since\n getToken will handle loading the token into the window for us.\n*/\n\nfunction initXO() : void {\n\n debug(`initxo`);\n\n if (!isLegacyEligible()) {\n return debug(`ineligible_initxo`);\n }\n\n const { url, paymentToken } = awaitPaymentTokenAndUrl();\n\n info(`init_paypal_checkout_initxo`);\n\n renderPayPalCheckout({ url, payment: () => paymentToken });\n}\n\ncheckout.initXO = initXO;\n\n\n/* Start Flow\n ----------\n\n Emulate paypal.checkout.startFlow\n\n Normally this would be used to load the url into the browser after the window has already been opened. Again, we\n can just kick off the whole flow here, on the off chance that a merchant calls us on button click. Normally this\n method will have been patched over in getToken.\n*/\n\nfunction startFlow(item : string) {\n debug(`startflow`, { item });\n\n const { paymentToken, url } = matchUrlAndPaymentToken(item);\n\n checkUrlAgainstEnv(url);\n\n if (!isLegacyEligible()) {\n debug(`ineligible_startflow_global`, { url });\n redirect(url);\n return;\n }\n\n info(`init_paypal_checkout_startflow`);\n\n renderPayPalCheckout({ url, payment: () => ZalgoPromise.resolve(paymentToken) });\n}\n\ncheckout.startFlow = startFlow;\n\n\n/* Close Flow\n ----------\n\n Emulate paypal.checkout.closeFlow\n\n Close the component in case of any error on the merchant side.\n*/\n\nfunction closeFlow(closeUrl? : string) {\n warn(`closeflow_not_opened`);\n\n if (closeUrl) {\n warn(`closeflow_with_url`, { closeUrl });\n redirect(closeUrl);\n\n }\n}\n\ncheckout.closeFlow = closeFlow;\n","/* @flow */\n\nimport { prefix } from 'beaver-logger/client';\n\nimport { onDocumentReady } from '../lib';\nimport { ENV } from '../constants';\n\nimport { LOG_PREFIX, ATTRIBUTES, CLASSES } from './constants';\nimport { setup } from './interface';\n\nconst { error, debug } = prefix(LOG_PREFIX);\n\n/* PayPal Checkout Ready\n ---------------------\n\n Call window.paypalCheckoutReady on document ready, if it has been defined by the merchant\n*/\n\nfunction invokeReady(method) {\n\n onDocumentReady(() => {\n debug(`paypal_checkout_ready`);\n setTimeout(() => {\n\n if (!window.paypal) {\n error(`paypal_checkout_ready_no_window_paypal`);\n }\n\n method();\n }, 1);\n });\n}\n\nfunction onKey(obj : Object, key : string, callback : Function) {\n\n if (!obj) {\n return;\n }\n\n let value = obj[key];\n\n if (value) {\n value = callback(value) || value;\n }\n\n try {\n\n delete obj[key];\n\n Object.defineProperty(obj, key, {\n\n configurable: true,\n\n set(item) {\n value = item;\n\n if (value) {\n value = callback(value) || value;\n }\n },\n\n get() : mixed {\n return value;\n }\n });\n\n } catch (err) {\n // pass\n }\n}\n\nonKey(window, 'paypalCheckoutReady', method => {\n\n if (typeof method === 'function') {\n\n const oneTimeReady = function () : void {\n if (!method.called) {\n method.called = true;\n return method.apply(this, arguments);\n }\n };\n\n invokeReady(oneTimeReady);\n\n return oneTimeReady;\n }\n});\n\n\n/* Scan for buttons\n ----------------\n\n Scan for any buttons on the page with a data-paypal-button attribute and auto-attach the PaypalCheckout component to them\n*/\n\nonDocumentReady(() => {\n\n const buttons = Array.prototype.slice.call(document.querySelectorAll(`[${ ATTRIBUTES.BUTTON }]`));\n\n if (buttons && buttons.length) {\n debug(`data_paypal_button`, { number: buttons.length });\n\n for (const button of buttons) {\n\n const id = button.getAttribute(ATTRIBUTES.MERCHANT_ID);\n\n let environment;\n\n if (button.hasAttribute(ATTRIBUTES.ENV)) {\n environment = button.getAttribute(ATTRIBUTES.ENV);\n } else if (button.hasAttribute(ATTRIBUTES.SANDBOX)) {\n environment = ENV.SANDBOX;\n }\n\n setup(id, { environment, button });\n }\n }\n\n // Show hidden buttons\n\n Array.prototype.slice.call(document.getElementsByClassName(CLASSES.HIDDEN_BUTTON)).forEach(el => {\n el.className = el.className.replace(CLASSES.HIDDEN_BUTTON, '');\n });\n});\n","/* @flow */\n\nimport './ready'; // eslint-disable-line import/no-unassigned-import\n\nexport * from './button';\nexport * from './constants';\nexport * from './interface';\n"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/checkout.min.js b/dist/checkout.min.js index ecf9b1e523..f683e82404 100644 --- a/dist/checkout.min.js +++ b/dist/checkout.min.js @@ -1,2 +1,2 @@ -!function(e){var o={};function a(t){if(o[t])return o[t].exports;var r=o[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,a),r.l=!0,r.exports}a.m=e,a.c=o,a.d=function(e,o,t){a.o(e,o)||Object.defineProperty(e,o,{enumerable:!0,get:t})},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.t=function(e,o){if(1&o&&(e=a(e)),8&o)return e;if(4&o&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(a.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&o&&"string"!=typeof e)for(var r in e)a.d(t,r,function(o){return e[o]}.bind(null,r));return t},a.n=function(e){var o=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(o,"a",o),o},a.o=function(e,o){return{}.hasOwnProperty.call(e,o)},a.p="",a(a.s=62)}([function(e,o,a){"use strict";var t,r,n,l={LABEL:"label",SIZE:"size",SHAPE:"shape",COLOR:"color",LAYOUT:"layout",MAXBUTTONS:"maxbuttons",FUNDINGICONS:"fundingicons",BRANDING:"branding",TAGLINE:"tagline",HEIGHT:"height",INSTALLMENTPERIOD:"installmentperiod"},p={PAYPAL:"paypal",CHECKOUT:"checkout",PAY:"pay",CREDIT:"credit",CARD:"card",BUYNOW:"buynow",INSTALLMENT:"installment",VENMO:"venmo",ITAU:"itau",IDEAL:"ideal",ELV:"elv",BANCONTACT:"bancontact",GIROPAY:"giropay",SOFORT:"sofort",EPS:"eps",MYBANK:"mybank",P24:"p24",PAYU:"payu",VERKKOPANKKI:"verkkopankki",BLIK:"blik",TRUSTLY:"trustly",MAXIMA:"maxima",BOLETO:"boleto",OXXO:"oxxo"},i={GOLD:"gold",BLUE:"blue",SILVER:"silver",BLACK:"black",DARKBLUE:"darkblue",WHITE:"white",TRANSPARENT:"transparent"},c={BLUE:"blue",WHITE:"white",BLACK:"black",ANY:"any"},u={TINY:"tiny",SMALL:"small",MEDIUM:"medium",LARGE:"large",HUGE:"huge",RESPONSIVE:"responsive"},s={BLACK:"black",BLUE:"blue"},y={PILL:"pill",RECT:"rect"},g={BRANDED:"branded",UNBRANDED:"unbranded"},d={HORIZONTAL:"horizontal",VERTICAL:"vertical"},h={SINGLE:"single",MULTIPLE:"multiple"},w={PP:"pp",PAYPAL:"paypal",VENMO:"venmo",ITAU:"itau",CREDIT:"credit",IDEAL:"ideal",ELV:"elv",BANCONTACT:"bancontact",GIROPAY:"giropay",SOFORT:"sofort",EPS:"eps",MYBANK:"mybank",P24:"p24",PAYU:"payu",VERKKOPANKKI:"verkkopankki",BLIK:"blik",TRUSTLY:"trustly",MAXIMA:"maxima",BOLETO:"boleto",OXXO:"oxxo"},f={BLACK:"black",WHITE:"white"},m={PAYPAL:"paypal",VENMO:"venmo",ITAU:"itau",CREDIT:"credit",CARD:"card",IDEAL:"ideal",ELV:"elv",BANCONTACT:"bancontact",GIROPAY:"giropay",SOFORT:"sofort",EPS:"eps",MYBANK:"mybank",P24:"p24",ZIMPLER:"zimpler",PAYU:"payu",VERKKOPANKKI:"verkkopankki",BLIK:"blik",TRUSTLY:"trustly",MAXIMA:"maxima",BOLETO:"boleto",OXXO:"oxxo"},C={VISA:"visa",MASTERCARD:"mastercard",AMEX:"amex",DISCOVER:"discover",SWITCH:"switch",MAESTRO:"maestro",HIPER:"hiper",ELO:"elo",JCB:"jcb",CUP:"cup",COFINOGA:"cofinoga",COFIDIS:"cofidis",CETELEM:"cetelem",CBNATIONALE:"cbnationale"},v={PRIMARY:"The funding source is the primary source",NOT_ENABLED:"The funding source is not currently enabled for use",SECONDARY_DISALLOWED:"The funding source is disallowed as a secondary button",OPT_OUT:"The funding source was disallowed in funding.disallowed",OPT_IN:"The funding source was allowed in funding.allowed",DISALLOWED_COUNTRY:"The funding source is not enabled for the current locale",DEFAULT_COUNTRY:"The funding source is enabled by default for the current locale",DEFAULT:"The funding source is enabled by default for all users",REMEMBERED:"The funding source was remembered for the current user",NEED_OPT_IN:"The funding source needs to be allowed in funding.allowed",COMMIT_NOT_SET:"The funding source is not enabled when commit is not set as true",INVALID_ENV:"The funding source is not supported in this environment"},b=[C.VISA,C.MASTERCARD,C.AMEX,C.DISCOVER,C.SWITCH,C.MAESTRO,C.HIPER,C.ELO,C.JCB,C.CUP,C.COFINOGA,C.COFIDIS,C.CETELEM,C.CBNATIONALE],P={LOCAL:"local",STAGE:"stage",SANDBOX:"sandbox",PRODUCTION:"production",TEST:"test",DEMO:"demo"},L={ALL:"all",REMEMBERED:"remembered"},E={MANUAL:"manual",BUTTON_FACTORY:"button_factory"},O={DEBUG:"debug",INFO:"info",WARN:"warn",ERROR:"error"},_={EC_TOKEN:"ec_token",BA_TOKEN:"ba_token",PAY_ID:"pay_id"},T={BUTTON:"data-button",FUNDING_SOURCE:"data-funding-source",CARD:"data-card",VERSION:"data-version",LAYOUT:"data-layout",SIZE:"data-size"},A={DESKTOP:"desktop",MOBILE:"mobile"},N={KEY:{FEED:"feed_name",STATE:"state_name",TRANSITION:"transition_name",BUTTON_TYPE:"button_type",SESSION_UID:"page_session_id",BUTTON_SESSION_UID:"button_session_id",TOKEN:"token",CONTEXT_ID:"context_id",CONTEXT_TYPE:"context_type",REFERER:"referer_url",PAY_ID:"pay_id",SELLER_ID:"seller_id",DATA_SOURCE:"serverside_data_source",BUTTON_SOURCE:"button_source",ERROR_CODE:"ext_error_code",ERROR_DESC:"ext_error_desc",PAGE_LOAD_TIME:"page_load_time",EXPERIMENT_NAME:"pxp_exp_id",TREATMENT_NAME:"pxp_trtmnt_id",TRANSITION_TIME:"transition_time",FUNDING_LIST:"eligible_payment_methods",FUNDING_COUNT:"eligible_payment_count",CHOSEN_FUNDING:"selected_payment_method",BUTTON_LAYOUT:"button_layout",BUTTON_COLOR:"button_color",BUTTON_SIZE:"button_size",BUTTON_SHAPE:"button_shape",BUTTON_LABEL:"button_label",BUTTON_WIDTH:"button_width",VERSION:"checkoutjs_version",MAX_BUTTONS:"max_buttons",FUNDING_REMEMBERED:"funding_remembered",BUTTON_TAGLINE_ENABLED:"button_tagline_enabled",RESPONSE_DURATION:"response_duration",PAYMENT_FLOW:"payment_flow",BUTTON_VERSION:"button_version"},BUTTON_TYPE:{IFRAME:"iframe",HTML:"html",CUSTOM:"custom"},DATA_SOURCE:{CHECKOUT:"checkout"},CONTEXT_TYPE:(t={BUTTON_SESSION_ID:"button_session_id"},t[_.PAY_ID]="Pay-ID",t[_.EC_TOKEN]="EC-Token",t[_.BA_TOKEN]="EC-Token",t),FEED:{CHECKOUTJS:"checkoutjs"},STATE:{LOAD:"checkoutjs_load",BUTTON:"checkoutjs_button",CHECKOUT:"checkoutjs_checkout",PPTM:"checkoutjs_pptm"},TRANSITION:{SCRIPT_LOAD:"process_script_load",BUTTON_RENDER:"process_button_render",BUTTON_LOAD:"process_button_load",BUTTON_CLICK:"process_button_click",BUTTON_RENDER_INTRANET_MODE:"process_button_render_intranet_mode",BUTTON_CLICK_INTRANET_MODE:"process_button_click_intranet_mode",CREATE_PAYMENT:"process_create_payment",RECIEVE_PAYMENT:"process_recieve_payment",CHECKOUT_INIT:"process_checkout_init",CHECKOUT_AUTHORIZE:"process_checkout_authorize",CHECKOUT_SHIPPING_CHANGE:"process_checkout_shipping_change",CHECKOUT_CANCEL:"process_checkout_cancel",CHECKOUT_ERROR:"process_checkout_error",EXTERNAL_EXPERIMENT:"process_external_experiment",EXTERNAL_EXPERIMENT_COMPLETE:"process_external_experiment_complete",PPTM_LOAD:"process_pptm_load",PPTM_LOADED:"process_pptm_loaded"}},k={AD:"AD",AE:"AE",AG:"AG",AI:"AI",AL:"AL",AM:"AM",AN:"AN",AO:"AO",AR:"AR",AT:"AT",AU:"AU",AW:"AW",AZ:"AZ",BA:"BA",BB:"BB",BE:"BE",BF:"BF",BG:"BG",BH:"BH",BI:"BI",BJ:"BJ",BM:"BM",BN:"BN",BO:"BO",BR:"BR",BS:"BS",BT:"BT",BW:"BW",BY:"BY",BZ:"BZ",C2:"C2",CA:"CA",CD:"CD",CG:"CG",CH:"CH",CI:"CI",CK:"CK",CL:"CL",CM:"CM",CN:"CN",CO:"CO",CR:"CR",CV:"CV",CY:"CY",CZ:"CZ",DE:"DE",DJ:"DJ",DK:"DK",DM:"DM",DO:"DO",DZ:"DZ",EC:"EC",EE:"EE",EG:"EG",ER:"ER",ES:"ES",ET:"ET",FI:"FI",FJ:"FJ",FK:"FK",FM:"FM",FO:"FO",FR:"FR",GA:"GA",GB:"GB",GD:"GD",GE:"GE",GF:"GF",GI:"GI",GL:"GL",GM:"GM",GN:"GN",GP:"GP",GR:"GR",GT:"GT",GW:"GW",GY:"GY",HK:"HK",HN:"HN",HR:"HR",HU:"HU",ID:"ID",IE:"IE",IL:"IL",IN:"IN",IS:"IS",IT:"IT",JM:"JM",JO:"JO",JP:"JP",KE:"KE",KG:"KG",KH:"KH",KI:"KI",KM:"KM",KN:"KN",KR:"KR",KW:"KW",KY:"KY",KZ:"KZ",LA:"LA",LC:"LC",LI:"LI",LK:"LK",LS:"LS",LT:"LT",LU:"LU",LV:"LV",MA:"MA",MC:"MC",MD:"MD",ME:"ME",MG:"MG",MH:"MH",MK:"MK",ML:"ML",MN:"MN",MQ:"MQ",MR:"MR",MS:"MS",MT:"MT",MU:"MU",MV:"MV",MW:"MW",MX:"MX",MY:"MY",MZ:"MZ",NA:"NA",NC:"NC",NE:"NE",NF:"NF",NG:"NG",NI:"NI",NL:"NL",NO:"NO",NP:"NP",NR:"NR",NU:"NU",NZ:"NZ",OM:"OM",PA:"PA",PE:"PE",PF:"PF",PG:"PG",PH:"PH",PL:"PL",PM:"PM",PN:"PN",PT:"PT",PW:"PW",PY:"PY",QA:"QA",RE:"RE",RO:"RO",RS:"RS",RU:"RU",RW:"RW",SA:"SA",SB:"SB",SC:"SC",SE:"SE",SG:"SG",SH:"SH",SI:"SI",SJ:"SJ",SK:"SK",SL:"SL",SM:"SM",SN:"SN",SO:"SO",SR:"SR",ST:"ST",SV:"SV",SZ:"SZ",TC:"TC",TD:"TD",TG:"TG",TH:"TH",TJ:"TJ",TM:"TM",TN:"TN",TO:"TO",TR:"TR",TT:"TT",TV:"TV",TW:"TW",TZ:"TZ",UA:"UA",UG:"UG",US:"US",UY:"UY",VA:"VA",VC:"VC",VE:"VE",VG:"VG",VN:"VN",VU:"VU",WF:"WF",WS:"WS",YE:"YE",YT:"YT",ZA:"ZA",ZM:"ZM",ZW:"ZW"},B={AR:"ar",CS:"cs",DA:"da",DE:"de",EL:"el",EN:"en",ES:"es",FI:"fi",FR:"fr",HE:"he",HU:"hu",ID:"id",IT:"it",JA:"ja",KO:"ko",NL:"nl",NO:"no",PL:"pl",PT:"pt",RU:"ru",SK:"sk",SV:"sv",TH:"th",TR:"tr",ZH:"zh"},M=((r={})[B.AR]=k.SA,r[B.CS]=k.CZ,r[B.DA]=k.DK,r[B.DE]=k.DE,r[B.EL]=k.GR,r[B.EN]=k.US,r[B.ES]=k.ES,r[B.FI]=k.FI,r[B.FR]=k.FR,r[B.HE]=k.IL,r[B.HU]=k.HU,r[B.ID]=k.ID,r[B.IT]=k.IT,r[B.JA]=k.JP,r[B.KO]=k.KR,r[B.NL]=k.NL,r[B.NO]=k.NO,r[B.PL]=k.PL,r[B.PT]=k.PT,r[B.RU]=k.RU,r[B.SK]=k.SK,r[B.SV]=k.SE,r[B.TH]=k.TH,r[B.TR]=k.TR,r[B.ZH]=k.CN,r),S=[k.BR,k.MX],I={BR:[2,3,4,5,6,7,8,9,10,11,12],MX:[3,6,9,12]},j=((n={})[k.AD]=[B.EN,B.FR,B.ES,B.ZH],n[k.AE]=[B.EN,B.FR,B.ES,B.ZH,B.AR],n[k.AG]=[B.EN,B.FR,B.ES,B.ZH],n[k.AI]=[B.EN,B.FR,B.ES,B.ZH],n[k.AL]=[B.EN],n[k.AM]=[B.EN,B.FR,B.ES,B.ZH],n[k.AN]=[B.EN,B.FR,B.ES,B.ZH],n[k.AO]=[B.EN,B.FR,B.ES,B.ZH],n[k.AR]=[B.ES,B.EN],n[k.AT]=[B.DE,B.EN],n[k.AU]=[B.EN],n[k.AW]=[B.EN,B.FR,B.ES,B.ZH],n[k.AZ]=[B.EN,B.FR,B.ES,B.ZH],n[k.BA]=[B.EN],n[k.BB]=[B.EN,B.FR,B.ES,B.ZH],n[k.BE]=[B.EN,B.NL,B.FR],n[k.BF]=[B.FR,B.EN,B.ES,B.ZH],n[k.BG]=[B.EN],n[k.BH]=[B.AR,B.EN,B.FR,B.ES,B.ZH],n[k.BI]=[B.FR,B.EN,B.ES,B.ZH],n[k.BJ]=[B.FR,B.EN,B.ES,B.ZH],n[k.BM]=[B.EN,B.FR,B.ES,B.ZH],n[k.BN]=[B.EN],n[k.BO]=[B.ES,B.EN,B.FR,B.ZH],n[k.BR]=[B.PT,B.EN],n[k.BS]=[B.EN,B.FR,B.ES,B.ZH],n[k.BT]=[B.EN],n[k.BW]=[B.EN,B.FR,B.ES,B.ZH],n[k.BY]=[B.EN],n[k.BZ]=[B.EN,B.ES,B.FR,B.ZH],n[k.C2]=[B.ZH,B.EN],n[k.CA]=[B.EN,B.FR],n[k.CD]=[B.FR,B.EN,B.ES,B.ZH],n[k.CG]=[B.EN,B.FR,B.ES,B.ZH],n[k.CH]=[B.DE,B.FR,B.EN],n[k.CI]=[B.FR,B.EN],n[k.CK]=[B.EN,B.FR,B.ES,B.ZH],n[k.CL]=[B.ES,B.EN,B.FR,B.ZH],n[k.CM]=[B.FR,B.EN],n[k.CN]=[B.ZH],n[k.CO]=[B.ES,B.EN,B.FR,B.ZH],n[k.CR]=[B.ES,B.EN,B.FR,B.ZH],n[k.CV]=[B.EN,B.FR,B.ES,B.ZH],n[k.CY]=[B.EN],n[k.CZ]=[B.CS,B.EN,B.FR,B.ES,B.ZH],n[k.DE]=[B.DE,B.EN],n[k.DJ]=[B.FR,B.EN,B.ES,B.ZH],n[k.DK]=[B.DA,B.EN],n[k.DM]=[B.EN,B.FR,B.ES,B.ZH],n[k.DO]=[B.ES,B.EN,B.FR,B.ZH],n[k.DZ]=[B.AR,B.EN,B.FR,B.ES,B.ZH],n[k.EC]=[B.ES,B.EN,B.FR,B.ZH],n[k.EE]=[B.EN,B.RU,B.FR,B.ES,B.ZH],n[k.EG]=[B.AR,B.EN,B.FR,B.ES,B.ZH],n[k.ER]=[B.EN,B.FR,B.ES,B.ZH],n[k.ES]=[B.ES,B.EN],n[k.ET]=[B.EN,B.FR,B.ES,B.ZH],n[k.FI]=[B.FI,B.EN,B.FR,B.ES,B.ZH],n[k.FJ]=[B.EN,B.FR,B.ES,B.ZH],n[k.FK]=[B.EN,B.FR,B.ES,B.ZH],n[k.FM]=[B.EN],n[k.FO]=[B.DA,B.EN,B.FR,B.ES,B.ZH],n[k.FR]=[B.FR,B.EN],n[k.GA]=[B.FR,B.EN,B.ES,B.ZH],n[k.GB]=[B.EN],n[k.GD]=[B.EN,B.FR,B.ES,B.ZH],n[k.GE]=[B.EN,B.FR,B.ES,B.ZH],n[k.GF]=[B.EN,B.FR,B.ES,B.ZH],n[k.GI]=[B.EN,B.FR,B.ES,B.ZH],n[k.GL]=[B.DA,B.EN,B.FR,B.ES,B.ZH],n[k.GM]=[B.EN,B.FR,B.ES,B.ZH],n[k.GN]=[B.FR,B.EN,B.ES,B.ZH],n[k.GP]=[B.EN,B.FR,B.ES,B.ZH],n[k.GR]=[B.EL,B.EN,B.FR,B.ES,B.ZH],n[k.GT]=[B.ES,B.EN,B.FR,B.ZH],n[k.GW]=[B.EN,B.FR,B.ES,B.ZH],n[k.GY]=[B.EN,B.FR,B.ES,B.ZH],n[k.HK]=[B.EN,B.ZH],n[k.HN]=[B.ES,B.EN,B.FR,B.ZH],n[k.HR]=[B.EN],n[k.HU]=[B.HU,B.EN,B.FR,B.ES,B.ZH],n[k.ID]=[B.ID,B.EN],n[k.IE]=[B.EN,B.FR,B.ES,B.ZH],n[k.IL]=[B.HE,B.EN],n[k.IN]=[B.EN],n[k.IS]=[B.EN],n[k.IT]=[B.IT,B.EN],n[k.JM]=[B.EN,B.ES,B.FR,B.ZH],n[k.JO]=[B.AR,B.EN,B.FR,B.ES,B.ZH],n[k.JP]=[B.JA,B.EN],n[k.KE]=[B.EN,B.FR,B.ES,B.ZH],n[k.KG]=[B.EN,B.FR,B.ES,B.ZH],n[k.KH]=[B.EN],n[k.KI]=[B.EN,B.FR,B.ES,B.ZH],n[k.KM]=[B.FR,B.EN,B.ES,B.ZH],n[k.KN]=[B.EN,B.FR,B.ES,B.ZH],n[k.KR]=[B.KO,B.EN],n[k.KW]=[B.AR,B.EN,B.FR,B.ES,B.ZH],n[k.KY]=[B.EN,B.FR,B.ES,B.ZH],n[k.KZ]=[B.EN,B.FR,B.ES,B.ZH],n[k.LA]=[B.EN],n[k.LC]=[B.EN,B.FR,B.ES,B.ZH],n[k.LI]=[B.EN,B.FR,B.ES,B.ZH],n[k.LK]=[B.EN],n[k.LS]=[B.EN,B.FR,B.ES,B.ZH],n[k.LT]=[B.EN,B.RU,B.FR,B.ES,B.ZH],n[k.LU]=[B.EN,B.DE,B.FR,B.ES,B.ZH],n[k.LV]=[B.EN,B.RU,B.FR,B.ES,B.ZH],n[k.MA]=[B.AR,B.EN,B.FR,B.ES,B.ZH],n[k.MC]=[B.FR,B.EN],n[k.MD]=[B.EN],n[k.ME]=[B.EN],n[k.MG]=[B.EN,B.FR,B.ES,B.ZH],n[k.MH]=[B.EN,B.FR,B.ES,B.ZH],n[k.MK]=[B.EN],n[k.ML]=[B.FR,B.EN,B.ES,B.ZH],n[k.MN]=[B.EN],n[k.MQ]=[B.EN,B.FR,B.ES,B.ZH],n[k.MR]=[B.EN,B.FR,B.ES,B.ZH],n[k.MS]=[B.EN,B.FR,B.ES,B.ZH],n[k.MT]=[B.EN],n[k.MU]=[B.EN,B.FR,B.ES,B.ZH],n[k.MV]=[B.EN],n[k.MW]=[B.EN,B.FR,B.ES,B.ZH],n[k.MX]=[B.ES,B.EN],n[k.MY]=[B.EN],n[k.MZ]=[B.EN,B.FR,B.ES,B.ZH],n[k.NA]=[B.EN,B.FR,B.ES,B.ZH],n[k.NC]=[B.EN,B.FR,B.ES,B.ZH],n[k.NE]=[B.FR,B.EN,B.ES,B.ZH],n[k.NF]=[B.EN,B.FR,B.ES,B.ZH],n[k.NG]=[B.EN],n[k.NI]=[B.ES,B.EN,B.FR,B.ZH],n[k.NL]=[B.NL,B.EN],n[k.NO]=[B.NO,B.EN],n[k.NP]=[B.EN],n[k.NR]=[B.EN,B.FR,B.ES,B.ZH],n[k.NU]=[B.EN,B.FR,B.ES,B.ZH],n[k.NZ]=[B.EN,B.FR,B.ES,B.ZH],n[k.OM]=[B.AR,B.EN,B.FR,B.ES,B.ZH],n[k.PA]=[B.ES,B.EN,B.FR,B.ZH],n[k.PE]=[B.ES,B.EN,B.FR,B.ZH],n[k.PF]=[B.EN,B.FR,B.ES,B.ZH],n[k.PG]=[B.EN,B.FR,B.ES,B.ZH],n[k.PH]=[B.EN],n[k.PL]=[B.PL,B.EN],n[k.PM]=[B.EN,B.FR,B.ES,B.ZH],n[k.PN]=[B.EN,B.FR,B.ES,B.ZH],n[k.PT]=[B.PT,B.EN],n[k.PW]=[B.EN,B.FR,B.ES,B.ZH],n[k.PY]=[B.ES,B.EN],n[k.QA]=[B.EN,B.FR,B.ES,B.ZH,B.AR],n[k.RE]=[B.EN,B.FR,B.ES,B.ZH],n[k.RO]=[B.EN,B.FR,B.ES,B.ZH],n[k.RS]=[B.EN,B.FR,B.ES,B.ZH],n[k.RU]=[B.RU,B.EN],n[k.RW]=[B.FR,B.EN,B.ES,B.ZH],n[k.SA]=[B.AR,B.EN,B.FR,B.ES,B.ZH],n[k.SB]=[B.EN,B.FR,B.ES,B.ZH],n[k.SC]=[B.FR,B.EN,B.ES,B.ZH],n[k.SE]=[B.SV,B.EN],n[k.SG]=[B.EN],n[k.SH]=[B.EN,B.FR,B.ES,B.ZH],n[k.SI]=[B.EN,B.FR,B.ES,B.ZH],n[k.SJ]=[B.EN,B.FR,B.ES,B.ZH],n[k.SK]=[B.SK,B.EN,B.FR,B.ES,B.ZH],n[k.SL]=[B.EN,B.FR,B.ES,B.ZH],n[k.SM]=[B.EN,B.FR,B.ES,B.ZH],n[k.SN]=[B.FR,B.EN,B.ES,B.ZH],n[k.SO]=[B.EN,B.FR,B.ES,B.ZH],n[k.SR]=[B.EN,B.FR,B.ES,B.ZH],n[k.ST]=[B.EN,B.FR,B.ES,B.ZH],n[k.SV]=[B.ES,B.EN,B.FR,B.ZH],n[k.SZ]=[B.EN,B.FR,B.ES,B.ZH],n[k.TC]=[B.EN,B.FR,B.ES,B.ZH],n[k.TD]=[B.FR,B.EN,B.ES,B.ZH],n[k.TG]=[B.FR,B.EN,B.ES,B.ZH],n[k.TH]=[B.TH,B.EN],n[k.TJ]=[B.EN,B.FR,B.ES,B.ZH],n[k.TM]=[B.EN,B.FR,B.ES,B.ZH],n[k.TN]=[B.AR,B.EN,B.FR,B.ES,B.ZH],n[k.TO]=[B.EN],n[k.TR]=[B.TR,B.EN],n[k.TT]=[B.EN,B.FR,B.ES,B.ZH],n[k.TV]=[B.EN,B.FR,B.ES,B.ZH],n[k.TW]=[B.ZH,B.EN],n[k.TZ]=[B.EN,B.FR,B.ES,B.ZH],n[k.UA]=[B.EN,B.RU,B.FR,B.ES,B.ZH],n[k.UG]=[B.EN,B.FR,B.ES,B.ZH],n[k.US]=[B.EN,B.FR,B.ES,B.ZH],n[k.UY]=[B.ES,B.EN,B.FR,B.ZH],n[k.VA]=[B.EN,B.FR,B.ES,B.ZH],n[k.VC]=[B.EN,B.FR,B.ES,B.ZH],n[k.VE]=[B.ES,B.EN,B.FR,B.ZH],n[k.VG]=[B.EN,B.FR,B.ES,B.ZH],n[k.VN]=[B.EN],n[k.VU]=[B.EN,B.FR,B.ES,B.ZH],n[k.WF]=[B.EN,B.FR,B.ES,B.ZH],n[k.WS]=[B.EN],n[k.YE]=[B.AR,B.EN,B.FR,B.ES,B.ZH],n[k.YT]=[B.EN,B.FR,B.ES,B.ZH],n[k.ZA]=[B.EN,B.FR,B.ES,B.ZH],n[k.ZM]=[B.EN,B.FR,B.ES,B.ZH],n[k.ZW]=[B.EN],n);a.d(o,"m",(function(){return l})),a.d(o,"f",(function(){return p})),a.d(o,"e",(function(){return i})),a.d(o,"i",(function(){return c})),a.d(o,"l",(function(){return u})),a.d(o,"n",(function(){return s})),a.d(o,"k",(function(){return y})),a.d(o,"d",(function(){return g})),a.d(o,"g",(function(){return d})),a.d(o,"j",(function(){return h})),a.d(o,"h",(function(){return w})),a.d(o,"q",(function(){return f})),a.d(o,"v",(function(){return m})),a.d(o,"o",(function(){return C})),a.d(o,"w",(function(){return v})),a.d(o,"p",(function(){return b})),a.d(o,"u",(function(){return N})),a.d(o,"r",(function(){return k})),a.d(o,"x",(function(){return B})),a.d(o,"y",(function(){return M})),a.d(o,"a",(function(){return S})),a.d(o,"b",(function(){return I})),a.d(o,"t",(function(){return P})),a.d(o,"F",(function(){return L})),a.d(o,"E",(function(){return E})),a.d(o,"A",(function(){return O})),a.d(o,"B",(function(){return _})),a.d(o,"D",(function(){return"xo-pptm"})),a.d(o,"c",(function(){return T})),a.d(o,"C",(function(){return A})),a.d(o,"s",(function(){return"default"})),a.d(o,"z",(function(){return j}))},function(e,o,a){"use strict";a.d(o,"a",(function(){return p})),a.d(o,"c",(function(){return i})),a.d(o,"b",(function(){return c}));var t=a(22),r=a(12);function n(e){return void 0===e&&(e=""),e.toString().replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'").replace(/\//g,"/")}var l=function(){function e(e,o,a){this.name=void 0,this.props=void 0,this.children=void 0,this.name=e,this.props=o,this.children=a}var o=e.prototype;return o.toString=function(){return"<"+this.name+(this.props?" ":"")+(this.props?this.propsToString():"")+">"+this.childrenToString()+""},o.propsToString=function(){var e=this.props;return e?Object.keys(e).filter((function(o){return"innerHTML"!==o&&e&&!1!==e[o]})).map((function(o){return e&&!0===e[o]?""+n(o):e?n(o)+'="'+n(e[o])+'"':""})).join(" "):""},o.childrenToString=function(){if(this.props&&this.props.innerHTML)return this.props.innerHTML;if(!this.children)return"";var o="";return function a(t){for(var r=0;r2?a-2:0),r=2;r/.test(r)?o.break(r):o.text(r):r}));return new p(a)}},function(e,o,a){"use strict";function t(e){try{if(!e)return!1;if("undefined"!=typeof Promise&&e instanceof Promise)return!0;if("undefined"!=typeof window&&"function"==typeof window.Window&&e instanceof window.Window)return!1;if("undefined"!=typeof window&&"function"==typeof window.constructor&&e instanceof window.constructor)return!1;var o={}.toString;if(o){var a=o.call(e);if("[object Window]"===a||"[object global]"===a||"[object DOMWindow]"===a)return!1}if("function"==typeof e.then)return!0}catch(e){return!1}return!1}var r,n=[],l=[],p=0;function i(){if(!p&&r){var e=r;r=null,e.resolve()}}function c(){p+=1}function u(){p-=1,i()}var s=function(){function e(e){var o=this;if(this.resolved=void 0,this.rejected=void 0,this.errorHandled=void 0,this.value=void 0,this.error=void 0,this.handlers=void 0,this.dispatching=void 0,this.stack=void 0,this.resolved=!1,this.rejected=!1,this.errorHandled=!1,this.handlers=[],e){var a,t,r=!1,n=!1,l=!1;c();try{e((function(e){l?o.resolve(e):(r=!0,a=e)}),(function(e){l?o.reject(e):(n=!0,t=e)}))}catch(e){return u(),void this.reject(e)}u(),l=!0,r?this.resolve(a):n&&this.reject(t)}}var o=e.prototype;return o.resolve=function(e){if(this.resolved||this.rejected)return this;if(t(e))throw new Error("Can not resolve promise with another promise");return this.resolved=!0,this.value=e,this.dispatch(),this},o.reject=function(e){var o=this;if(this.resolved||this.rejected)return this;if(t(e))throw new Error("Can not reject promise with another promise");if(!e){var a=e&&"function"==typeof e.toString?e.toString():{}.toString.call(e);e=new Error("Expected reject to be called with Error, got "+a)}return this.rejected=!0,this.error=e,this.errorHandled||setTimeout((function(){o.errorHandled||function(e,o){if(-1===n.indexOf(e)){n.push(e),setTimeout((function(){throw e}),1);for(var a=0;a'}),3!==function(e,o,a){}.bind({a:1}).length&&Object(l.q)("function_bind_arrity_overwritten"),window.opener&&window.parent!==window&&Object(l.q)("window_has_opener_and_parent"),window.name&&0===window.name.indexOf("__prerender")&&Object(l.q)("prerender_running_checkoutjs");var e={};(function(){return this}).bind(e)()!==e&&Object(l.q)("function_bind_broken"),window.Window&&window.constructor&&window.Window!==window.constructor&&Object(l.q)("window_constructor_does_not_match_window"),Object.assign&&JSON.stringify({a:1,b:2,c:3})!=JSON.stringify({a:1,b:2,c:3})&&Object(l.q)("object_assign_broken")}var O=a(11),_=a(2),T={CONTENT_TYPE:"content-type",ACCEPT:"accept"},A=[],N=[];function k(e){var o=e.url,a=e.method,t=void 0===a?"get":a,r=e.headers,n=void 0===r?{}:r,l=e.json,p=e.data,i=e.body,c=e.win,u=void 0===c?window:c,s=e.timeout,y=void 0===s?0:s;return"/demo/checkout/api/braintree/client-token/"===o?_.a.resolve("eyJ2ZXJzaW9uIjoyLCJhdXRob3JpemF0aW9uRmluZ2VycHJpbnQiOiJjMDFhZmRkM2Y1OTJmNWVhNTNlMzE5MWQwYmIyMWVjYjM5NzNlZGM1MzkwNDZiMjJmNTA2ODEyNzIzZmRlMTJifGNsaWVudF9pZD1jbGllbnRfaWQkc2FuZGJveCQ0ZHByYmZjNnBoNTk1Y2NqXHUwMDI2Y3JlYXRlZF9hdD0yMDE3LTA0LTI2VDIzOjI2OjU5Ljg3OTA3ODYwNiswMDAwXHUwMDI2bWVyY2hhbnRfaWQ9M3cydHR2d2QyNDY1NDhoZCIsImNvbmZpZ1VybCI6Imh0dHBzOi8vYXBpLnNhbmRib3guYnJhaW50cmVlZ2F0ZXdheS5jb206NDQzL21lcmNoYW50cy8zdzJ0dHZ3ZDI0NjU0OGhkL2NsaWVudF9hcGkvdjEvY29uZmlndXJhdGlvbiIsImNoYWxsZW5nZXMiOltdLCJlbnZpcm9ubWVudCI6InNhbmRib3giLCJjbGllbnRBcGlVcmwiOiJodHRwczovL2FwaS5zYW5kYm94LmJyYWludHJlZWdhdGV3YXkuY29tOjQ0My9tZXJjaGFudHMvM3cydHR2d2QyNDY1NDhoZC9jbGllbnRfYXBpIiwiYXNzZXRzVXJsIjoiaHR0cHM6Ly9hc3NldHMuYnJhaW50cmVlZ2F0ZXdheS5jb20iLCJhdXRoVXJsIjoiaHR0cHM6Ly9hdXRoLnZlbm1vLnNhbmRib3guYnJhaW50cmVlZ2F0ZXdheS5jb20iLCJhbmFseXRpY3MiOnsidXJsIjoiaHR0cHM6Ly9jbGllbnQtYW5hbHl0aWNzLnNhbmRib3guYnJhaW50cmVlZ2F0ZXdheS5jb20vM3cydHR2d2QyNDY1NDhoZCJ9LCJ0aHJlZURTZWN1cmVFbmFibGVkIjpmYWxzZSwicGF5cGFsRW5hYmxlZCI6dHJ1ZSwicGF5cGFsIjp7ImRpc3BsYXlOYW1lIjoiYmFyY28uMDMtZmFjaWxpdGF0b3JAZ21haWwuY29tIiwiY2xpZW50SWQiOiJBV3VZdnFnMGtaN2Y5S0V4TVpqZU53T3RjQV8yZVhnOWpMZy1QSnBGX0pnYk44M0YyVml5aEdnV2JCNDg4RGU3MFpucGRBZEI2TUNqekNqSyIsInByaXZhY3lVcmwiOiJodHRwczovL2V4YW1wbGUuY29tIiwidXNlckFncmVlbWVudFVybCI6Imh0dHBzOi8vZXhhbXBsZS5jb20iLCJiYXNlVXJsIjoiaHR0cHM6Ly9hc3NldHMuYnJhaW50cmVlZ2F0ZXdheS5jb20iLCJhc3NldHNVcmwiOiJodHRwczovL2NoZWNrb3V0LnBheXBhbC5jb20iLCJkaXJlY3RCYXNlVXJsIjpudWxsLCJhbGxvd0h0dHAiOnRydWUsImVudmlyb25tZW50Tm9OZXR3b3JrIjpmYWxzZSwiZW52aXJvbm1lbnQiOiJvZmZsaW5lIiwidW52ZXR0ZWRNZXJjaGFudCI6ZmFsc2UsImJyYWludHJlZUNsaWVudElkIjoibWFzdGVyY2xpZW50MyIsImJpbGxpbmdBZ3JlZW1lbnRzRW5hYmxlZCI6dHJ1ZSwibWVyY2hhbnRBY2NvdW50SWQiOiJVU0QiLCJjdXJyZW5jeUlzb0NvZGUiOiJVU0QifSwiY29pbmJhc2VFbmFibGVkIjpmYWxzZSwibWVyY2hhbnRJZCI6IjN3MnR0dndkMjQ2NTQ4aGQiLCJ2ZW5tbyI6Im9mZiJ9"):new _.a((function(e,a){if(l&&p||l&&i||p&&l)throw new Error("Only options.json or options.data or options.body should be passed");for(var r={},c=0,s=Object.keys(n);c=400){var c="Request to "+t.toLowerCase()+" "+o+" failed with "+this.status+" error. Correlation id: "+n;return i&&("object"==typeof i&&null!==i&&(i=JSON.stringify(i,null,4)),c=c+"\n\n"+i+"\n"),a(new Error(c))}return e(i)}),!1),C.addEventListener("error",(function(e){var r=this.getResponseHeader("paypal-debug-id");a(new Error("Request to "+t.toLowerCase()+" "+o+" failed: "+e.toString()+". Correlation id: "+r))}),!1),C.open(t,o,!0),r)r.hasOwnProperty(v)&&C.setRequestHeader(v,r[v]);l?i=JSON.stringify(l):p&&(i=Object.keys(p).map((function(e){return encodeURIComponent(e)+"="+(p?encodeURIComponent(p[e]):"")})).join("&")),C.timeout=y,C.ontimeout=function(){a(new Error("Request to "+t.toLowerCase()+" "+o+" has timed out"))},C.send(i)}))}Object(l.c)((function(){return{prev_corr_ids:N.join(",")}})),k.get=function(e,o){return void 0===o&&(o={}),k(Object(O.a)({method:"get",url:e},o))},k.post=function(e,o,a){return void 0===a&&(a={}),k(Object(O.a)({method:"post",url:e,data:o},a))},k.addHeaderBuilder=function(e){A.push(e)},a(29);var B={TEST:"test",CONTROL:"control",THROTTLE:"throttle"};function M(e,o,a){void 0===a&&(a=!0);var t,r=Object(u.e)(),n=a?function(e){return Object(u.f)((function(o){return o.throttlePercentiles=o.throttlePercentiles||{},o.throttlePercentiles[e]=o.throttlePercentiles[e]||Math.floor(100*Math.random()),o.throttlePercentiles[e]}))}(e):Math.floor(100*Math.random()),p=e+"_"+(t=n=50||o<=n&&n<2*o?B.CONTROL:B.THROTTLE),i=!1,s=!1;try{window.localStorage&&window.localStorage.getItem(e)&&(s=!0)}catch(e){}return{isEnabled:function(){return t===B.TEST||s},isDisabled:function(){return t!==B.TEST&&!s},getTreatment:function(){return p},log:function(o,a){var t;if(void 0===a&&(a={}),!i)return this;var n=e+"_"+p+"_"+o;return Object(l.k)(n,Object(O.a)({},a,{expuid:r})),Object(l.p)(Object(O.a)(((t={})[c.u.KEY.EXPERIMENT_NAME]=e,t[c.u.KEY.TREATMENT_NAME]=p,t),a)),Object(l.h)(),this},logStart:function(e){return void 0===e&&(e={}),i=!0,this.log("start",e)},logComplete:function(e){return void 0===e&&(e={}),i?this.log("complete",e):this}}}function S(){var e=Object(r.g)(window.location.href,/token=((EC-)?[A-Z0-9]+)/),o=Object(r.g)(window.location.href,/PayerID=([A-Z0-9]+)/);if(e&&o)return e}a(32);var I=Object(r.i)((function(){for(var e=[].slice.call(document.getElementsByTagName("script")),o=0;o3&&e()},n.send(JSON.stringify(t).replace(/&/g,"%26"))}))}(0,h.uri,e,o,a)};function v(){return C}function b(e){C=e}var P=!1;function L(e,o,a){if("undefined"!=typeof window&&window.console&&window.console.log){if(!P)return setTimeout((function(){return L(e,o,a)}),1);var t=h.logLevel;if(window.LOG_LEVEL&&(t=window.LOG_LEVEL),!(w.indexOf(e)>w.indexOf(t))){a=a||{};var r=[o];Boolean(window.document.documentMode)&&(a=JSON.stringify(a)),r.push(a),(a.error||a.warning)&&r.push("\n\n",a.error||a.warning);try{window.console[e]&&window.console[e].apply?window.console[e].apply(window.console,r):window.console.log&&window.console.log.apply&&window.console.log.apply(window.console,r)}catch(e){}}}}function E(e){var o=(void 0===e?{}:e).fireAndForget,a=void 0!==o&&o;if("undefined"!=typeof window&&h.uri&&(f.length||m.length)){for(var t={},r=0;r-1&&A()}function k(e,o,a){if("undefined"!=typeof window){h.prefix&&(o=h.prefix+"_"+o),"string"==typeof(a=a||{})?a={message:a}:a instanceof Error&&(a={error:a.stack||a.toString()});try{JSON.stringify(a)}catch(e){return}a.timestamp=Date.now();for(var t=0;t1e3&&performance.now()-(performance.timing.connectEnd-performance.timing.navigationStart)>0;function x(){return R?performance.now():Date.now()}function z(e){return{startTime:e=void 0!==e?e:x(),elapsed:function(){return parseInt(x()-e,10)},reset:function(){e=x()}}}function U(){if(R){var e=window.performance.timing;return parseInt(e.connectEnd-e.navigationStart,10)}}var F=z(),W=z(U());var H=!1;function V(e){var o,a,t;n(h,e||{}),H||(H=!0,h.logPerformance&&function(){if(!R)return S("no_performance_data");s((function(){var e={};return e.client_elapsed=F.elapsed(),R&&(e.req_elapsed=W.elapsed()),e})),new r.a((function(e){"undefined"!=typeof document&&"complete"===document.readyState&&e(),window.addEventListener("load",e)})).then((function(){var e={};["connectEnd","connectStart","domComplete","domContentLoadedEventEnd","domContentLoadedEventStart","domInteractive","domLoading","domainLookupEnd","domainLookupStart","fetchStart","loadEventEnd","loadEventStart","navigationStart","redirectEnd","redirectStart","requestStart","responseEnd","responseStart","secureConnectionStart","unloadEventEnd","unloadEventStart"].forEach((function(o){e[o]=parseInt(window.performance.timing[o],10)||0}));var o=e.connectEnd-e.navigationStart;e.connectEnd&&Object.keys(e).forEach((function(a){var t=e[a];t&&S("timing_"+a,{client_elapsed:parseInt(t-e.connectEnd-(F.startTime-o),10),req_elapsed:parseInt(t-e.connectEnd,10)})})),S("timing",e),S("memory",window.performance.memory),S("navigation",window.performance.navigation),window.performance.getEntries&&window.performance.getEntries().forEach((function(e){["link","script","img","css"].indexOf(e.initiatorType)>-1&&S(e.initiatorType,e)}))}))}(),h.heartbeat&&(a=z(),t=0,o=h.heartbeatInterval,function e(){setTimeout((function(){(function(){if(!(h.heartbeatMaxThreshold&&t>h.heartbeatMaxThreshold)){t+=1;var e=a.elapsed(),o=e-h.heartbeatInterval,r={count:t,elapsed:e};h.heartbeatTooBusy&&(r.lag=o,o>=h.heartbeatTooBusyThreshold&&S("toobusy",r)),S("heartbeat",r)}})(),e()}),o)}()),h.logUnload&&(window.addEventListener("beforeunload",(function(){S("window_beforeunload"),E({fireAndForget:!0})})),window.addEventListener("unload",(function(){S("window_unload"),E({fireAndForget:!0})}))),h.flushInterval&&setInterval(A,h.flushInterval),window.beaverLogQueue&&(window.beaverLogQueue.forEach((function(e){k(e.level,e.event,e)})),delete window.beaverLogQueue))}var G,Z=l(),K=l(),Y=h.initial_state_name;function q(){G=x()}function X(e){G=G||U();var o,a=x();void 0!==G&&(o=parseInt(a-G,0));var t="transition_"+Y+"_to_"+e;S(t,{duration:o}),D({transition:t,transition_time:o}),E(),G=a,Y=e,K=l()}function J(e){q(),X(e)}s((function(){return{windowID:Z,pageID:K}})),y((function(){return{state:"ui_"+Y}})),a.d(o,"i",(function(){return v})),a.d(o,"o",(function(){return b})),a.d(o,"j",(function(){return E})),a.d(o,"h",(function(){return A})),a.d(o,"n",(function(){return B})),a.d(o,"f",(function(){return M})),a.d(o,"k",(function(){return S})),a.d(o,"q",(function(){return I})),a.d(o,"g",(function(){return j})),a.d(o,"p",(function(){return D})),a.d(o,"l",(function(){return V})),a.d(o,"c",(function(){return s})),a.d(o,"b",(function(){return y})),a.d(o,"d",(function(){return g})),a.d(o,"a",(function(){return d})),a.d(o,"e",(function(){return h})),a.d(o,"m",(function(){return w}))},function(e,o,a){"use strict";var t=a(11),r=a(7),n=a(2),l=a(17),p=a(25);function i(e){return e.replace(/\?/g,"%3F").replace(/&/g,"%26").replace(/#/g,"%23").replace(/\+/g,"%2B")}function c(e){return e.replace(/-([a-z])/g,(function(e){return e[1].toUpperCase()}))}function u(e,o){if(!o)return e;for(var a in o)o.hasOwnProperty(a)&&(e[a]=o[a]);return e}function s(){var e="0123456789abcdef";return"xxxxxxxxxx".replace(/./g,(function(){return e.charAt(Math.floor(Math.random()*e.length))}))}function y(e,o,a){if(!o)return a;for(var t=o.split("."),r=0;r3)throw new Error("Expected only text content for "+e+" tag");j(r,a,t)}else if("iframe"===e){if(arguments.length>3)throw new Error("Expected only single child node for iframe");r.addEventListener("load",(function(){var e=r.contentWindow;if(!e)throw new Error("Expected frame to have contentWindow");"string"==typeof a?S(e,a):I(e,a)}))}else if("script"===e){if("string"!=typeof a)throw new TypeError("Expected "+e+" tag content to be string, got "+typeof a);if(arguments.length>3)throw new Error("Expected only text content for "+e+" tag");r.text=a}else for(var l=2;l=e.length?n.a.resolve(e.apply(o,a)):new n.a((function(t,r){a.push((function(e,o){if(e&&!(e instanceof Error))throw new Error("Passed non-Error object in callback: [ "+e+" ] -- callbacks should either be called with callback(new Error(...)) or callback(null, result).");return e?r(e):t(o)})),e.apply(o,a)}))}}function de(e){return function(){var o=arguments,a=this;return n.a.try((function(){return e.apply(a,o)}))}}function he(e){return"string"==typeof e&&/^[0-9]+%$/.test(e)}function we(e){return"string"==typeof e&&/^[0-9]+px$/.test(e)}function fe(e){if("number"==typeof e)return e;var o=e.match(/^([0-9]+)(px|%)$/);if(!o)throw new Error("Could not match css value from "+e);return parseInt(o[1],10)}function me(e){return fe(e)+"px"}function Ce(e){return"number"==typeof e?me(e):he(e)?e:me(e)}function ve(e,o){if("number"==typeof e)return e;if(he(e))return parseInt(o*fe(e)/100,10);if(we(e))return fe(e);throw new Error("Can not normalize dimension: "+e)}function be(e,o,a){var t=a.value;a.value=function(){return this.__memoized__=this.__memoized__||{},this.__memoized__.hasOwnProperty(o)||(this.__memoized__[o]=t.apply(this,arguments)),this.__memoized__[o]},a.value.displayName=o+":memoized"}var Pe=a(13),Le=a(5);function Ee(e){if(-1===Le.m.indexOf(e))throw new Error("Invalid logLevel: "+e);Le.e.logLevel=e,Pe.CONFIG.LOG_LEVEL=e,window.LOG_LEVEL=e}function Oe(e,o,a){void 0===a&&(a={}),Object(Le.k)("xc_"+e+"_"+o,a)}function _e(e,o,a){void 0===a&&(a={}),Object(Le.q)("xc_"+e+"_"+o,a)}function Te(e,o,a){void 0===a&&(a={}),Object(Le.g)("xc_"+e+"_"+o,a)}var Ae=a(8);function Ne(e){if(Object(r.v)(e))return e[Ae.__ZOID__]||(e[Ae.__ZOID__]={}),e[Ae.__ZOID__]}var ke=function(){var e=Ne(window);if(!e)throw new Error("Could not get local global");return e}();a.d(o,"d",(function(){return T})),a.d(o,"u",(function(){return N})),a.d(o,"n",(function(){return B})),a.d(o,"I",(function(){return M})),a.d(o,"Y",(function(){return S})),a.d(o,"X",(function(){return I})),a.d(o,"e",(function(){return R})),a.d(o,"f",(function(){return x})),a.d(o,"y",(function(){return z})),a.d(o,"b",(function(){return U})),a.d(o,"r",(function(){return H})),a.d(o,"Q",(function(){return $})),a.d(o,"x",(function(){return ee})),a.d(o,"l",(function(){return oe})),a.d(o,"P",(function(){return ae})),a.d(o,"c",(function(){return te})),a.d(o,"a",(function(){return re})),a.d(o,"L",(function(){return ne})),a.d(o,"t",(function(){return le})),a.d(o,"W",(function(){return ie})),a.d(o,"J",(function(){return ce})),a.d(o,"C",(function(){return ye})),a.d(o,"F",(function(){return b})),a.d(o,"H",(function(){return P})),a.d(o,"D",(function(){return L})),a.d(o,"i",(function(){return E})),a.d(o,"N",(function(){return O})),a.d(o,"k",(function(){return _})),a.d(o,"j",(function(){return ge})),a.d(o,"K",(function(){return de})),a.d(o,"h",(function(){return c})),a.d(o,"q",(function(){return u})),a.d(o,"U",(function(){return s})),a.d(o,"s",(function(){return y})),a.d(o,"M",(function(){return g})),a.d(o,"g",(function(){return d})),a.d(o,"m",(function(){return h})),a.d(o,"R",(function(){return m})),a.d(o,"S",(function(){return C})),a.d(o,"p",(function(){return v})),a.d(o,"A",(function(){return he})),a.d(o,"B",(function(){return we})),a.d(o,"T",(function(){return Ce})),a.d(o,"G",(function(){return ve})),a.d(o,"E",(function(){return be})),a.d(o,"O",(function(){return Ee})),a.d(o,"z",(function(){return Oe})),a.d(o,"V",(function(){return _e})),a.d(o,"o",(function(){return Te})),a.d(o,"w",(function(){return Ne})),a.d(o,"v",(function(){return ke}))},function(e,o,a){"use strict";function t(e){return"[object RegExp]"==={}.toString.call(e)}var r={MOCK:"mock:",FILE:"file:",ABOUT:"about:"},n="*",l="Call was rejected by callee.\r\n";function p(e){return void 0===e&&(e=window),e.location.protocol===r.ABOUT}function i(e){if(void 0===e&&(e=window),e)try{if(e.parent&&e.parent!==e)return e.parent}catch(e){}}function c(e){if(void 0===e&&(e=window),e&&!i(e))try{return e.opener}catch(e){}}function u(e){try{return!0}catch(e){}return!1}function s(e){void 0===e&&(e=window);var o=e.location;if(!o)throw new Error("Can not read window location");var a=o.protocol;if(!a)throw new Error("Can not read window protocol");if(a===r.FILE)return r.FILE+"//";if(a===r.ABOUT){var t=i(e);return t&&u()?s(t):r.ABOUT+"//"}var n=o.host;if(!n)throw new Error("Can not read window host");return a+"//"+n}function y(e){void 0===e&&(e=window);var o=s(e);return o&&e.mockDomain&&0===e.mockDomain.indexOf(r.MOCK)?e.mockDomain:o}function g(e){try{if(e===window)return!0}catch(e){}try{var o=Object.getOwnPropertyDescriptor(e,"location");if(o&&!1===o.enumerable)return!1}catch(e){}try{if(p(e)&&u())return!0}catch(e){}try{if(s(e)===s(window))return!0}catch(e){}return!1}function d(e){if(!g(e))return!1;try{if(e===window)return!0;if(p(e)&&u())return!0;if(y(window)===y(e))return!0}catch(e){}return!1}function h(e){if(!d(e))throw new Error("Expected window to be same domain");return e}function w(e,o){if(!e||!o)return!1;var a=i(o);return a?a===e:-1!==function(e){var o=[];try{for(;e.parent!==e;)o.push(e.parent),e=e.parent}catch(e){}return o}(o).indexOf(e)}function f(e){var o,a,t=[];try{o=e.frames}catch(a){o=e}try{a=o.length}catch(e){}if(0===a)return t;if(a){for(var r=0;r";try{JSON.stringify(o)}catch(e){return"<"+typeof o+">"}return o}))}function u(){var e=[];return{listen:function(o){return e.push(o),{cancel:function(){e.splice(e.indexOf(o),1)}}},once:function(e){var o=this.listen((function(){e.apply(null,arguments),o.cancel()}))},trigger:function(){for(var o=0;o=3)return"stringifyError stack overflow";try{if(!e)return"";if("string"==typeof e)return e;if(e instanceof Error){var a=e&&e.stack,t=e&&e.message;if(a&&t)return-1!==a.indexOf(t)?a:t+"\n"+a;if(a)return a;if(t)return t}return"function"==typeof e.toString?e.toString():{}.toString.call(e)}catch(e){return"Error while stringifying error: "+y(e,o+1)}}function g(e){var o="";return e?e instanceof Error?e.message||o:"string"==typeof e.message&&e.message||o:o}function d(e,o){var a=(e=e.split("://")[1]).indexOf(o);return-1!==a&&e.slice(a)===o}function h(e,o,a){var t=e[o];e[o]=function(){var e=arguments,o=this;return a({context:this,args:[].slice.call(arguments),original:t,callOriginal:function(){return t.apply(o,e)}})}}function w(e,o){if(!o)return e;if(Object.assign)return Object.assign(e,o);for(var a in o)o.hasOwnProperty(a)&&(e[a]=o[a]);return e}function f(e,o){return e.sort((function(e,a){return o.indexOf(e)-o.indexOf(a)}))}function m(e){return e}function C(e){var o=[];for(var a in e)e.hasOwnProperty(a)&&o.push(e[a]);return o}function v(e,o){return Math.round(e*o/100)}function b(){return Math.max.apply(Math,arguments)}function P(e,o,a){var t=[];return e.replace(o,(function(){t.push(a.apply(null,arguments))})),t}},function(e,o,a){"use strict";a.r(o);var t={};a.r(t),a.d(t,"cleanUpWindow",(function(){return D})),a.d(t,"Promise",(function(){return c.a})),a.d(t,"bridge",(function(){return R})),a.d(t,"init",(function(){return x})),a.d(t,"parent",(function(){return j})),a.d(t,"request",(function(){return _})),a.d(t,"send",(function(){return T})),a.d(t,"sendToParent",(function(){return A})),a.d(t,"client",(function(){return N})),a.d(t,"listen",(function(){return k})),a.d(t,"on",(function(){return B})),a.d(t,"once",(function(){return M})),a.d(t,"listener",(function(){return S})),a.d(t,"CONFIG",(function(){return l.a})),a.d(t,"CONSTANTS",(function(){return l.b})),a.d(t,"disable",(function(){return I}));var r=a(14),n=a(7),l=a(10),p=a(9),i=a(11),c=a(2),u={};u[l.b.SEND_STRATEGIES.POST_MESSAGE]=function(e,o,t){try{a(43).emulateIERestrictions(window,e)}catch(e){return}(Array.isArray(t)?t:"string"==typeof t?[t]:[l.b.WILDCARD]).map((function(o){if(0===o.indexOf(l.b.MOCK_PROTOCOL)){if(window.location.protocol===l.b.FILE_PROTOCOL)return l.b.WILDCARD;if(!Object(n.q)(e))throw new Error("Attempting to send messsage to mock domain "+o+", but window is actually cross-domain");return Object(n.d)(e)}return 0===o.indexOf(l.b.FILE_PROTOCOL)?l.b.WILDCARD:o})).forEach((function(a){return e.postMessage(o,a)}))};var s=a(23),y=s.sendBridgeMessage,g=s.needsBridgeForBrowser,d=s.isBridge;function h(e,o,a){return c.a.try((function(){var t;if(o=function(e,o,a){void 0===a&&(a={});var t=Object(r.q)(),l=Object(r.c)(),p=Object(n.h)(window);return Object(i.a)({},o,{},a,{sourceDomain:p,id:o.id||t,windowType:l})}(0,o,{data:Object(r.o)(e,a,o.data),domain:a}),e===window&&!l.a.ALLOW_SAME_ORIGIN)throw new Error("Attemping to send message to self");if(Object(n.z)(e))throw new Error("Window is closed");var p=[],s=Object(r.g)(((t={})[l.b.WINDOW_PROPS.POSTROBOT]=o,t),null,2);return c.a.map(Object.keys(u),(function(o){return c.a.try((function(){if(!l.a.ALLOWED_POST_MESSAGE_METHODS[o])throw new Error("Strategy disallowed: "+o);return u[o](e,s,a)})).then((function(){return p.push(o+": success"),!0}),(function(e){return p.push(o+": "+Object(r.p)(e)+"\n"),!1}))})).then((function(e){var a=e.some(Boolean),t=o.type+" "+o.name+" "+(a?"success":"error")+":\n - "+p.join("\n - ")+"\n";if(!a)throw new Error(t)}))}))}u[l.b.SEND_STRATEGIES.BRIDGE]=function(e,o,a){if(g()||d()){if(Object(n.v)(e))throw new Error("Post message through bridge disabled between same domain windows");if(!1!==Object(n.w)(window,e))throw new Error("Can only use bridge to communicate between two different windows, not between frames");return y(e,o,a)}},u[l.b.SEND_STRATEGIES.GLOBAL]=function(e,o){if(Object(r.i)()){if(!Object(n.v)(e))throw new Error("Post message through global disabled between different domain windows");if(!1!==Object(n.w)(window,e))throw new Error("Can only use global to communicate between two different windows, not between frames");var a=e[l.b.WINDOW_PROPS.POSTROBOT];if(!a)throw new Error("Can not find postRobot global on foreign window");return a.receiveMessage({source:window,origin:Object(n.h)(),data:o})}};var w=a(17);p.a.responseListeners=p.a.responseListeners||{},p.a.requestListeners=p.a.requestListeners||{},p.a.WINDOW_WILDCARD=p.a.WINDOW_WILDCARD||new function(){},p.a.erroredResponseListeners=p.a.erroredResponseListeners||{};var f,m="__domain_regex__";function C(e){return p.a.responseListeners[e]}function v(e){delete p.a.responseListeners[e]}function b(e){return Boolean(p.a.erroredResponseListeners[e])}function P(e){var o=e.name,a=e.win,t=e.domain;if(a===l.b.WILDCARD&&(a=null),t===l.b.WILDCARD&&(t=null),!o)throw new Error("Name required to get request listener");var r=p.a.requestListeners[o];if(r)for(var i=0,c=[a,p.a.WINDOW_WILDCARD];i=3)return"stringifyError stack overflow";try{if(!e)return"";if("string"==typeof e)return e;if(e instanceof Error){var a=e&&e.stack,t=e&&e.message;if(a&&t)return-1!==a.indexOf(t)?a:t+"\n"+a;if(a)return a;if(t)return t}return"function"==typeof e.toString?e.toString():{}.toString.call(e)}catch(e){return"Error while stringifying error: "+l(e,o+1)}}var p=function(e){if(!e)return e;var o=!1;return function(){if(!o)return o=!0,e.apply(this,arguments)}};function i(){}function c(e,o,a){return e.addEventListener?e.addEventListener(o,a):e.attachEvent("on"+o,a),{cancel:function(){e.removeEventListener?e.removeEventListener(o,a):e.detachEvent("on"+o,a)}}}function u(){var e="0123456789abcdef";return"xxxxxxxxxx".replace(/./g,(function(){return e.charAt(Math.floor(Math.random()*e.length))}))}function s(e,o,a){if(void 0===a&&(a=1),a>=100)throw new Error("Self-referential object passed, or object contained too many layers");var t;if("object"!=typeof e||null===e||Array.isArray(e)){if(!Array.isArray(e))throw new TypeError("Invalid type: "+typeof e);t=[]}else t={};return function(e,o){Array.isArray(e)?function(e,o){for(var a=0;a>>0)+"__",function(){if("undefined"==typeof WeakMap)return!1;if(void 0===Object.freeze)return!1;try{var e=new WeakMap,o={};return Object.freeze(o),e.set(o,"__testvalue__"),"__testvalue__"===e.get(o)}catch(e){return!1}}())try{this.weakmap=new WeakMap}catch(e){}this.keys=[],this.values=[]}var o=e.prototype;return o._cleanupClosedWindows=function(){for(var e=this.weakmap,o=this.keys,a=0;ar.a.session_uid_lifetime&&(a=null),a||(a={guid:Object(n.s)(),created:t}),o[c]=a,e(a)}))}function d(e){return g((function(o){return o.state=o.state||{},e(o.state)}))}function h(){var e=window.xprops;if(e&&e.sessionID)return e.sessionID;var o=Object(l.f)("sessionID");return Object(p.b)()&&o?o:g((function(e){return e.guid}))}function w(){if(window.xprops&&window.xprops.buttonSessionID)return window.xprops.buttonSessionID;var e=Object(l.f)("buttonSessionID");return Object(p.b)()&&e?e:void 0}function f(e){return window[u]=window[u]||{},e(window[u])}},function(e,o,a){"use strict";var t={};a.r(t),a.d(t,"create",(function(){return Y})),a.d(t,"getByTag",(function(){return q})),a.d(t,"getCurrentScriptDir",(function(){return u.t})),a.d(t,"destroyAll",(function(){return X})),a.d(t,"postRobot",(function(){return J})),a.d(t,"CONSTANTS",(function(){return Q})),a.d(t,"PopupOpenError",(function(){return O.b})),a.d(t,"IntegrationError",(function(){return O.a})),a.d(t,"RenderError",(function(){return O.c}));var r=a(13);function n(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}var l=a(22);function p(e,o,a,t,r){var n={};return Object.keys(t).forEach((function(e){n[e]=t[e]})),n.enumerable=!!n.enumerable,n.configurable=!!n.configurable,("value"in n||n.initializer)&&(n.writable=!0),n=a.slice().reverse().reduce((function(a,t){return t(e,o,a)||a}),n),r&&void 0!==n.initializer&&(n.value=n.initializer?n.initializer.call(r):void 0,n.initializer=void 0),void 0===n.initializer&&(Object.defineProperty(e,o,n),n=null),n}var i=a(2),c=a(7),u=a(6),s=function(){function e(){var e,o,a;this.clean=void 0,this.event=void 0,this.component=void 0,this.clean=(e=this,o=[],a=!1,{set:function(o,t){return a?t:(e[o]=t,this.register((function(){delete e[o]})),t)},register:function(e,t){if("function"==typeof e&&(t=e,e=""),"function"!=typeof t)throw new TypeError("Expected to be passed function to clean.register");a?t():o.push({complete:!1,name:e,run:function(){this.complete||(this.complete=!0,t&&t())}})},hasTasks:function(){return Boolean(o.filter((function(e){return!e.complete})).length)},all:function(){var e=[];for(a=!0;o.length;)e.push(o.pop().run());return i.a.all(e).then((function(){}))},run:function(e){for(var a=[],t=0;t\n\n '+o+"\n\n \n `;\n });\n });\n });\n }\n\n @memoized\n loadHTML() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (!this.html) {\n throw new Error(`Html not prefetched`);\n }\n\n return this.html.then(html => {\n // $FlowFixMe\n return writeToWindow(this.window, html);\n });\n });\n }\n\n checkAllowRenderTo(win : CrossDomainWindowType) {\n\n if (!win) {\n throw this.component.createError(`Must pass window to renderTo`);\n }\n\n if (isSameDomain(win)) {\n return;\n }\n\n let origin = getDomain();\n let domain = this.component.getDomain(null, this.props.env);\n\n if (!domain) {\n throw new Error(`Could not determine domain to allow remote render`);\n }\n\n if (matchDomain(domain, origin)) {\n return;\n }\n\n throw new Error(`Can not render remotely to ${ domain.toString() } - can only render to ${ origin }`);\n }\n\n registerActiveComponent() {\n ParentComponent.activeComponents.push(this);\n\n this.clean.register(() => {\n ParentComponent.activeComponents.splice(ParentComponent.activeComponents.indexOf(this), 1);\n });\n }\n\n\n getComponentParentRef() : { ref : string, uid? : string, distance? : number } {\n let domain = this.component.getDomain(null, this.props.env);\n\n if (domain === getDomain(window)) {\n let uid = uniqueID();\n global.windows = global.windows || {};\n global.windows[uid] = window;\n this.clean.register(() => {\n delete global.windows[uid];\n });\n\n return { ref: WINDOW_REFERENCES.GLOBAL, uid };\n }\n\n if (this.context === CONTEXT_TYPES.POPUP) {\n return { ref: WINDOW_REFERENCES.OPENER };\n }\n\n if (isTop(window)) {\n return { ref: WINDOW_REFERENCES.TOP };\n }\n\n return { ref: WINDOW_REFERENCES.PARENT, distance: getDistanceFromTop(window) };\n }\n\n getRenderParentRef(renderToWindow : CrossDomainWindowType = window) : { ref : string, uid? : string, distance? : number } {\n\n if (renderToWindow === window) {\n return this.getComponentParentRef();\n }\n\n let uid = uniqueID();\n global.windows[uid] = renderToWindow;\n\n this.clean.register(() => {\n delete global.windows[uid];\n });\n\n return { ref: WINDOW_REFERENCES.GLOBAL, uid };\n }\n\n buildChildWindowName({ renderTo = window } : { renderTo : CrossDomainWindowType } = {}) : string {\n\n let childDomain = this.component.getDomain(null, this.props.env);\n let sameDomain = isSameDomain(renderTo);\n\n let uid = uniqueID();\n let tag = this.component.tag;\n let sProps = serializeFunctions(this.getPropsForChild());\n\n let componentParent = this.getComponentParentRef();\n let renderParent = this.getRenderParentRef(renderTo);\n\n let secureProps = !sameDomain && !this.component.unsafeRenderTo;\n\n let props = secureProps\n ? { type: INITIAL_PROPS.UID, uid }\n : { type: INITIAL_PROPS.RAW, value: sProps };\n\n if (props.type === INITIAL_PROPS.UID) {\n global.props[uid] = JSON.stringify(sProps);\n\n this.clean.register(() => {\n delete global.props[uid];\n });\n }\n\n return buildChildWindowName(this.component.name, this.component.version, { uid, tag, componentParent, renderParent, props, childDomain });\n }\n\n\n /* Send to Parent\n --------------\n\n Send a post message to our parent window.\n */\n\n sendToParent(name : string, data : Object) : ZalgoPromise<{ origin : string, source : CrossDomainWindowType, data : Object }> {\n let parentWindow = getParentComponentWindow();\n\n if (!parentWindow) {\n throw new Error(`Can not find parent component window to message`);\n }\n\n this.component.log(`send_to_parent_${ name }`);\n\n return send(getParentComponentWindow(), name, data, { domain: getParentDomain() });\n }\n\n\n /* Set Props\n ---------\n\n Normalize props and generate the url we'll use to render the component\n */\n\n setProps(props : (PropsType & P), required : boolean = true) {\n\n validateProps(this.component, props, required);\n if (this.component.validate) {\n this.component.validate(this.component, props);\n }\n\n // $FlowFixMe\n this.props = this.props || {};\n\n extend(this.props, normalizeProps(this.component, this, props));\n }\n\n\n /* Build Url\n ---------\n\n We build the props we're passed into the initial url. This means the component server-side can start rendering\n itself based on whatever props the merchant provides.\n */\n\n @memoized\n buildUrl() : ZalgoPromise {\n\n let propUrl : (string | void) = this.props.url;\n\n return ZalgoPromise.all([\n\n propUrl,\n // $FlowFixMe\n propsToQuery({ ...this.component.props, ...this.component.builtinProps }, this.props)\n\n ]).then(([ url, query ]) => {\n\n // Do not extend the url if it is for a different domain\n\n if (url && !this.component.getValidDomain(url)) {\n return url;\n }\n\n return ZalgoPromise.try(() => {\n\n return url || this.component.getUrl(this.props.env, this.props);\n\n }).then(finalUrl => {\n\n query.xcomponent = '1';\n return extendUrl(finalUrl, { query });\n });\n });\n }\n\n\n getDomain() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n return this.props.url;\n\n }).then(url => {\n\n let domain = this.component.getDomain(url, this.props.env);\n\n if (domain) {\n return domain;\n }\n\n if (this.component.buildUrl) {\n return ZalgoPromise.try(() => this.component.buildUrl(this.props)).then(builtUrl => {\n return this.component.getDomain(builtUrl, this.props.env);\n });\n }\n\n }).then(domain => {\n\n if (!domain) {\n throw new Error(`Could not determine domain`);\n }\n\n return domain;\n });\n }\n\n getPropsForChild() : (BuiltInPropsType & P) {\n\n let result = {};\n\n for (let key of Object.keys(this.props)) {\n let prop = this.component.getProp(key);\n\n if (!prop || prop.sendToChild !== false) {\n result[key] = this.props[key];\n }\n }\n\n // $FlowFixMe\n return result;\n }\n\n\n /* Update Props\n ------------\n\n Send new props down to the child\n */\n\n updateProps(props : (PropsType & P)) : ZalgoPromise {\n this.setProps(props, false);\n\n return this.onInit.then(() => {\n if (this.childExports) {\n return this.childExports.updateProps(this.getPropsForChild());\n } else {\n throw new Error(`Child exports were not available`);\n }\n });\n }\n\n\n openBridge(domain : ?string) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (!bridge || !this.driver.needsBridge) {\n return;\n }\n\n let needsBridgeParams : Object = { win: this.window };\n if (domain) {\n needsBridgeParams.domain = domain;\n }\n\n let needsBridge = bridge.needsBridge(needsBridgeParams);\n\n let bridgeUrl = this.component.getBridgeUrl(this.props.env);\n\n if (!bridgeUrl) {\n\n if (needsBridge && domain && !bridge.hasBridge(domain, domain)) {\n throw new Error(`Bridge url needed to render ${ this.context }`);\n }\n\n return;\n }\n\n bridgeUrl = extendUrl(bridgeUrl, { query: { version: this.component.version } });\n\n let bridgeDomain = this.component.getBridgeDomain(this.props.env);\n\n if (!bridgeDomain) {\n throw new Error(`Can not determine domain for bridge`);\n }\n\n if (needsBridge) {\n return bridge.openBridge(bridgeUrl, bridgeDomain).then(result => {\n if (result) {\n return result;\n }\n });\n }\n });\n }\n\n\n /* Open\n ----\n\n Open a new window in the desired context\n */\n\n @memoized\n open() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.component.log(`open_${ this.context }`, { windowName: this.childWindowName });\n if (this.props.win) {\n this.clean.set('window', this.props.win);\n assertSameDomain(this.window).name = this.childWindowName;\n return;\n }\n return this.driver.open.call(this);\n });\n }\n\n @memoized\n openPrerender() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.component.prerenderTemplate) {\n return this.driver.openPrerender.call(this);\n }\n });\n }\n\n @memoized\n switchPrerender() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.prerenderWindow && this.driver.switchPrerender) {\n return this.driver.switchPrerender.call(this);\n }\n });\n }\n\n get driver() : ContextDriverType {\n\n if (!this.context) {\n throw new Error('Context not set');\n }\n\n return RENDER_DRIVERS[this.context];\n }\n\n elementReady(element : ElementRefType) : ZalgoPromise {\n return elementReady(element).then(noop);\n }\n\n\n delegate(win : CrossDomainWindowType) {\n\n this.component.log(`delegate_${ this.context }`);\n\n let props = {\n uid: this.props.uid,\n dimensions: this.props.dimensions,\n onClose: this.props.onClose,\n onDisplay: this.props.onDisplay\n };\n\n for (let propName of this.component.getPropNames()) {\n let prop = this.component.getProp(propName);\n\n if (prop.allowDelegate) {\n props[propName] = this.props[propName];\n }\n }\n\n let delegate = send(win, `${ POST_MESSAGE.DELEGATE }_${ this.component.name }`, {\n\n context: this.context,\n env: this.props.env,\n\n options: {\n\n context: this.context,\n\n childWindowName: this.childWindowName,\n isWindowClosed: () => isWindowClosed(this.window),\n\n props,\n\n overrides: {\n focus: () => this.focus(),\n userClose: () => this.userClose(),\n getDomain: () => this.getDomain(),\n\n error: (err) => this.error(err),\n on: (eventName, handler) => this.on(eventName, handler)\n }\n }\n\n }).then(({ data }) => {\n\n this.clean.register(data.destroy);\n return data;\n\n }).catch(err => {\n\n throw new Error(`Unable to delegate rendering. Possibly the component is not loaded in the target window.\\n\\n${ stringifyError(err) }`);\n });\n\n let overrides = this.driver.delegateOverrides;\n\n for (let key of Object.keys(overrides)) {\n let val = overrides[key];\n\n if (val === DELEGATE.CALL_ORIGINAL) {\n continue;\n }\n\n // $FlowFixMe\n let original = this[key];\n\n // $FlowFixMe\n this[key] = function overridenFunction() : ZalgoPromise {\n return delegate.then(data => {\n\n let override = data.overrides[key];\n\n if (val === DELEGATE.CALL_DELEGATE) {\n return override.apply(this, arguments);\n }\n\n if (typeof val === 'function') {\n return val(original, override).apply(this, arguments);\n }\n\n throw new Error(`Expected delgate to be CALL_ORIGINAL, CALL_DELEGATE, or factory method`);\n });\n };\n }\n }\n\n /* Watch For Close\n ---------------\n\n Watch for the child window closing, so we can cleanup.\n Also watch for this window changing location, so we can close the component.\n */\n\n watchForClose() {\n let closeWindowListener = onCloseWindow(this.window, () => {\n this.component.log(`detect_close_child`);\n\n return ZalgoPromise.try(() => {\n return this.props.onClose(CLOSE_REASONS.CLOSE_DETECTED);\n }).finally(() => {\n return this.destroy();\n });\n }, 3000);\n\n this.clean.register('destroyCloseWindowListener', closeWindowListener.cancel);\n }\n\n watchForUnload() {\n\n // Our child has no way of knowing if we navigated off the page. So we have to listen for unload\n // and close the child manually if that happens.\n\n let onunload = once(() => {\n this.component.log(`navigate_away`);\n flush();\n this.destroyComponent();\n });\n\n let unloadWindowListener = addEventListener(window, 'unload', onunload);\n\n this.clean.register('destroyUnloadWindowListener', unloadWindowListener.cancel);\n }\n\n\n /* Load Url\n --------\n\n Load url into the child window. This is separated out because it's quite common for us to have situations\n where opening the child window and loading the url happen at different points.\n */\n\n loadUrl(url : string) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.component.log(`load_url`);\n\n if (window.location.href.split('#')[0] === url.split('#')[0]) {\n url = extendUrl(url, {\n query: {\n [ uniqueID() ]: '1'\n }\n });\n }\n\n return this.driver.loadUrl.call(this, url);\n });\n }\n\n\n hijack(targetElement : HTMLFormElement | HTMLAnchorElement) {\n targetElement.target = this.childWindowName;\n }\n\n /* Run Timeout\n -----------\n\n Set a timeout on the initial render, and call this.props.onTimeout if we don't get an init call in time.\n */\n\n runTimeout() {\n let timeout = this.props.timeout;\n\n if (timeout) {\n let id = this.timeout = setTimeout(() => {\n\n this.component.log(`timed_out`, { timeout: timeout.toString() });\n\n let error = this.component.createError(`Loading component timed out after ${ timeout } milliseconds`);\n\n this.onInit.reject(error);\n this.props.onTimeout(error);\n\n }, timeout);\n\n this.clean.register(() => {\n clearTimeout(id);\n delete this.timeout;\n });\n }\n }\n\n\n /* Listeners\n ---------\n\n Post-robot listeners to the child component window\n */\n\n listeners() : { [string] : (CrossDomainWindowType, Object) => mixed } {\n return {\n\n // The child rendered, and the component called .attach()\n // We have no way to know when the child has set up its listeners for the first time, so we have to listen\n // for this message to be sure so we can continue doing anything from the parent\n\n [ POST_MESSAGE.INIT ](source : CrossDomainWindowType, data : Object) : { props : BuiltInPropsType & P, context : string } {\n\n this.childExports = data.exports;\n\n this.onInit.resolve(this);\n\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n\n return {\n props: this.getPropsForChild(),\n context: this.context\n };\n },\n\n\n // The child has requested that we close it. Since iframes can't close themselves, we need\n // this logic to exist in the parent window\n\n [ POST_MESSAGE.CLOSE ](source : CrossDomainWindowType, data : Object) {\n this.close(data.reason);\n },\n\n [ POST_MESSAGE.CHECK_CLOSE ]() {\n this.checkClose();\n },\n\n // Iframes can't resize themselves, so they need the parent to take care of it for them.\n\n [ POST_MESSAGE.RESIZE ](source : CrossDomainWindowType, data : Object) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.driver.allowResize) {\n return this.resize(data.width, data.height);\n }\n });\n },\n\n [ POST_MESSAGE.HIDE ]() {\n this.hide();\n },\n\n [ POST_MESSAGE.SHOW ]() {\n this.show();\n },\n\n\n // The child encountered an error\n\n [ POST_MESSAGE.ERROR ](source : CrossDomainWindowType, data : Object) {\n this.error(new Error(data.error));\n }\n };\n }\n\n\n /* Resize\n ------\n\n Resize the child component window\n */\n\n resize(width : ?(number | string), height : ?(number | string)) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.component.log(`resize`, { height: stringify(height), width: stringify(width) });\n this.driver.resize.call(this, width, height);\n if (this.props.onResize) {\n this.props.onResize();\n }\n });\n }\n\n\n /* Hide\n ----\n\n Hide the component and any parent template\n */\n\n hide() : void {\n\n if (this.container) {\n hideElement(this.container);\n }\n\n return this.driver.hide.call(this);\n }\n\n show() : void {\n\n if (this.container) {\n showElement(this.container);\n }\n\n return this.driver.show.call(this);\n }\n\n\n checkClose() {\n let closeWindowListener = onCloseWindow(this.window, () => {\n this.userClose();\n }, 50, 500);\n\n this.clean.register(closeWindowListener.cancel);\n }\n\n\n userClose() : ZalgoPromise {\n return this.close(CLOSE_REASONS.USER_CLOSED);\n }\n\n\n /* Close\n -----\n\n Close the child component\n */\n\n @memoized\n close(reason : string = CLOSE_REASONS.PARENT_CALL) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n this.component.log(`close`, { reason });\n\n this.event.triggerOnce(EVENTS.CLOSE);\n return this.props.onClose(reason);\n\n }).then(() => {\n\n return ZalgoPromise.all([\n this.closeComponent(),\n this.closeContainer()\n ]);\n\n }).then(() => {\n\n return this.destroy();\n });\n }\n\n\n @memoized\n closeContainer(reason : string = CLOSE_REASONS.PARENT_CALL) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n this.event.triggerOnce(EVENTS.CLOSE);\n return this.props.onClose(reason);\n\n }).then(() => {\n\n return ZalgoPromise.all([\n this.closeComponent(reason),\n this.hideContainer()\n ]);\n\n }).then(() => {\n\n return this.destroyContainer();\n });\n }\n\n\n @memoized\n destroyContainer() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.clean.run('destroyContainerEvents');\n this.clean.run('destroyContainerTemplate');\n });\n }\n\n\n @memoized\n closeComponent(reason : string = CLOSE_REASONS.PARENT_CALL) : ZalgoPromise {\n\n let win = this.window;\n\n return ZalgoPromise.try(() => {\n\n return this.cancelContainerEvents();\n\n }).then(() => {\n\n this.event.triggerOnce(EVENTS.CLOSE);\n return this.props.onClose(reason);\n\n }).then(() => {\n\n return this.hideComponent();\n\n }).then(() => {\n\n return this.destroyComponent();\n\n }).then(() => {\n\n // IE in metro mode -- child window needs to close itself, or close will hang\n\n if (this.childExports && this.context === CONTEXT_TYPES.POPUP && !isWindowClosed(win)) {\n this.childExports.close().catch(noop);\n }\n });\n }\n\n destroyComponent() {\n this.clean.run('destroyUnloadWindowListener');\n this.clean.run('destroyCloseWindowListener');\n this.clean.run('destroyContainerEvents');\n this.clean.run('destroyWindow');\n }\n\n @memoized\n showContainer() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.props.onDisplay) {\n return this.props.onDisplay();\n }\n }).then(() => {\n if (this.container) {\n return showAndAnimate(this.container, ANIMATION_NAMES.SHOW_CONTAINER, this.clean.register);\n }\n });\n }\n\n @memoized\n showComponent() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.props.onDisplay) {\n return this.props.onDisplay();\n }\n }).then(() => {\n if (this.element) {\n return showAndAnimate(this.element, ANIMATION_NAMES.SHOW_COMPONENT, this.clean.register);\n }\n });\n }\n\n @memoized\n hideContainer() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.container) {\n return animateAndHide(this.container, ANIMATION_NAMES.HIDE_CONTAINER, this.clean.register);\n } else {\n return ZalgoPromise.resolve();\n }\n });\n }\n\n @memoized\n hideComponent() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.element) {\n return animateAndHide(this.element, ANIMATION_NAMES.HIDE_COMPONENT, this.clean.register);\n } else {\n return ZalgoPromise.resolve();\n }\n });\n }\n\n\n /* Focus\n -----\n\n Focus the child component window\n */\n\n focus() {\n\n if (this.window && !isWindowClosed(this.window)) {\n this.component.log(`focus`);\n this.window.focus();\n\n } else {\n\n throw new Error(`No window to focus`);\n }\n }\n\n\n /* Create Component Template\n -------------------------\n\n Creates an initial template and stylesheet which are loaded into the child window, to be displayed before the url is loaded\n */\n\n @memoized\n createPrerenderTemplate() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (!this.component.prerenderTemplate) {\n return ZalgoPromise.resolve();\n }\n\n return ZalgoPromise.try(() => {\n\n if (this.prerenderIframe) {\n return awaitFrameLoad(this.prerenderIframe).then(() => this.prerenderWindow);\n } else {\n return this.prerenderWindow;\n }\n\n }).then(win => {\n\n let doc;\n\n try {\n doc = win.document;\n } catch (err) {\n return;\n }\n\n let el;\n\n try {\n el = this.renderTemplate(this.component.prerenderTemplate, {\n jsxDom: jsxDom.bind(doc),\n document: doc\n });\n } catch (err) {\n this.component.logError('preprender_error', { err: err.stack ? err.stack : err.toString() });\n console.error(err.stack ? err.stack : err); // eslint-disable-line no-console\n return;\n }\n\n try {\n writeElementToWindow(win, el);\n } catch (err) {\n this.component.logError('preprender_error', { err: err.stack ? err.stack : err.toString() });\n console.error(err.stack ? err.stack : err); // eslint-disable-line no-console\n }\n\n let { width = false, height = false, element = 'body' } = (typeof this.component.autoResize === 'object' && this.component.autoResize !== null)\n ? this.component.autoResize\n : {};\n\n element = getElementSafe(element, doc);\n\n if (element && (width || height)) {\n onResize(element, ({ width: newWidth, height: newHeight }) => {\n this.resize(width ? newWidth : undefined, height ? newHeight : undefined);\n }, { width, height, win });\n }\n });\n });\n }\n\n\n /* Create Parent Template\n ----------------------\n\n Create a template and stylesheet for the parent template behind the element\n */\n\n renderTemplate(renderer : (RenderOptionsType) => HTMLElement, options : Object = {}) : HTMLElement {\n\n let {\n width = `${ DEFAULT_DIMENSIONS.WIDTH }px`,\n height = `${ DEFAULT_DIMENSIONS.HEIGHT }px`\n } = (this.component.dimensions || {});\n\n return renderer.call(this, {\n id: `${ CLASS_NAMES.ZOID }-${ this.component.tag }-${ this.props.uid }`,\n props: renderer.__xdomain__ ? null : this.props,\n tag: this.component.tag,\n context: this.context,\n outlet: this.getOutlet(),\n CLASS: CLASS_NAMES,\n ANIMATION: ANIMATION_NAMES,\n CONTEXT: CONTEXT_TYPES,\n EVENT: EVENTS,\n actions: {\n close: () => this.userClose(),\n focus: () => this.focus()\n },\n on: (eventName, handler) => this.on(eventName, handler),\n jsxDom,\n document,\n dimensions: { width, height },\n ...options\n });\n }\n\n @memoized\n openContainer(element : ?HTMLElement) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n let el;\n\n if (element) {\n el = getElement(element);\n } else {\n el = document.body;\n }\n\n if (!el) {\n throw new Error(`Could not find element to open container into`);\n }\n\n if (!this.component.containerTemplate) {\n if (this.driver.renderedIntoContainerTemplate) {\n throw new Error(`containerTemplate needed to render ${ this.context }`);\n }\n\n return;\n }\n\n let container = this.renderTemplate(this.component.containerTemplate, {\n container: el\n });\n\n this.container = container;\n hideElement(this.container);\n appendChild(el, this.container);\n\n if (this.driver.renderedIntoContainerTemplate) {\n this.element = this.getOutlet();\n hideElement(this.element);\n\n if (!this.element) {\n throw new Error('Could not find element to render component into');\n }\n\n hideElement(this.element);\n }\n\n this.clean.register('destroyContainerTemplate', () => {\n\n if (this.container && this.container.parentNode) {\n this.container.parentNode.removeChild(this.container);\n }\n\n delete this.container;\n });\n });\n }\n\n cancelContainerEvents() {\n this.clean.run('destroyContainerEvents');\n }\n\n\n /* Destroy\n -------\n\n Close the component and clean up any listeners and state\n */\n\n destroy() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.clean.hasTasks()) {\n this.component.log(`destroy`);\n flush();\n return this.clean.all();\n }\n });\n }\n\n\n tryInit(method : () => mixed) : ZalgoPromise> {\n return ZalgoPromise.try(method).catch(err => {\n this.onInit.reject(err);\n }).then(() => {\n return this.onInit;\n });\n }\n\n\n /* Error\n -----\n\n Handle an error\n */\n\n error(err : mixed) : ZalgoPromise {\n // eslint-disable-next-line promise/no-promise-in-callback\n return ZalgoPromise.try(() => {\n\n this.handledErrors = this.handledErrors || [];\n\n if (this.handledErrors.indexOf(err) !== -1) {\n // $FlowFixMe\n return;\n }\n\n this.handledErrors.push(err);\n\n this.onInit.reject(err);\n\n return this.destroy();\n\n }).then(() => {\n\n if (this.props.onError) {\n return this.props.onError(err);\n }\n\n }).catch(errErr => { // eslint-disable-line unicorn/catch-error-name\n\n throw new Error(`An error was encountered while handling error:\\n\\n ${ stringifyError(err) }\\n\\n${ stringifyError(errErr) }`);\n\n }).then(() => {\n\n if (!this.props.onError) {\n throw err;\n }\n });\n }\n\n static activeComponents : Array> = []\n\n static destroyAll() : ZalgoPromise {\n let results = [];\n\n while (ParentComponent.activeComponents.length) {\n results.push(ParentComponent.activeComponents[0].destroy());\n }\n\n return ZalgoPromise.all(results).then(noop);\n }\n}\n","/* @flow */\n\nimport { onCloseWindow, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { BaseComponent } from '../base';\nimport { ParentComponent } from '../parent';\nimport { RENDER_DRIVERS, type ContextDriverType } from '../parent/drivers';\nimport type { Component } from '../component';\nimport { noop } from '../../lib';\nimport type { CancelableType, DimensionsType } from '../../types';\n\nexport type DelegatePropsType = {\n uid : string,\n dimensions : DimensionsType,\n onClose : () => ?ZalgoPromise,\n onDisplay : () => ?ZalgoPromise\n};\n\nexport type DelegateOptionsType = {\n context : string,\n props : DelegatePropsType,\n childWindowName : string,\n isWindowClosed : () => ZalgoPromise,\n \n overrides : {\n focus : () => ZalgoPromise,\n userClose : (string) => ZalgoPromise,\n getDomain : () => ZalgoPromise,\n error : (mixed) => ZalgoPromise,\n on : (string, () => void) => CancelableType\n }\n};\n\nexport class DelegateComponent

extends BaseComponent

{\n\n source : CrossDomainWindowType\n context : string\n props : DelegatePropsType\n\n focus : () => ZalgoPromise\n userClose : (string) => ZalgoPromise\n getDomain : () => ZalgoPromise\n error : (mixed) => ZalgoPromise\n on : (string, () => void) => CancelableType\n\n childWindowName : string\n isWindowClosed : () => ZalgoPromise\n\n constructor(component : Component

, source : CrossDomainWindowType, options : DelegateOptionsType) {\n super();\n\n this.component = component;\n this.clean.set('source', source);\n\n this.context = options.context;\n\n this.props = {\n uid: options.props.uid,\n dimensions: options.props.dimensions,\n onClose: options.props.onClose,\n onDisplay: options.props.onDisplay\n };\n\n for (let propName of component.getPropNames()) {\n // $FlowFixMe\n let prop = this.component.getProp(propName);\n\n if (prop.allowDelegate) {\n this.props[propName] = options.props[propName];\n }\n }\n\n this.focus = () => {\n return ZalgoPromise.all([\n this.isWindowClosed().then(closed => {\n if (!closed) {\n window.open('', this.childWindowName);\n }\n }),\n options.overrides.focus.call(this)\n ]).then(noop);\n };\n\n this.clean.register('destroyFocusOverride', () => {\n // $FlowFixMe\n this.focus = noop;\n });\n\n this.userClose = options.overrides.userClose;\n this.getDomain = options.overrides.getDomain;\n this.error = options.overrides.error;\n this.on = options.overrides.on;\n\n let delegateOverrides = RENDER_DRIVERS[options.context].delegateOverrides;\n\n for (let key of Object.keys(delegateOverrides)) {\n // $FlowFixMe\n this[key] = ParentComponent.prototype[key];\n }\n\n this.childWindowName = options.childWindowName;\n this.isWindowClosed = options.isWindowClosed;\n\n ParentComponent.prototype.registerActiveComponent.call(this);\n\n this.watchForClose();\n }\n\n get driver() : ContextDriverType {\n\n if (!this.context) {\n throw new Error('Context not set');\n }\n\n return RENDER_DRIVERS[this.context];\n }\n\n watchForClose() {\n let closeWindowListener = onCloseWindow(this.source, () => this.destroy(), 3000);\n this.clean.register('destroyCloseWindowListener', closeWindowListener.cancel);\n }\n\n getOverrides(context : string) : { [string] : mixed } {\n\n let delegateOverrides = RENDER_DRIVERS[context].delegateOverrides;\n\n let overrides = {};\n\n let self = this;\n\n for (let key of Object.keys(delegateOverrides)) {\n overrides[key] = function delegateOverride() : mixed {\n // $FlowFixMe\n return ParentComponent.prototype[key].apply(self, arguments);\n };\n }\n\n return overrides;\n }\n\n destroy() : ZalgoPromise {\n return this.clean.all();\n }\n}\n","/* @flow */\n/* @jsx jsxDom */\n\nimport { type RenderOptionsType } from '../../parent';\n\nexport function defaultContainerTemplate({ id, tag, context, CLASS, outlet, jsxDom, dimensions : { width, height } } : RenderOptionsType) : HTMLElement {\n\n return (\n

\n \n\n { outlet }\n
\n );\n}\n","/* @flow */\n/* @jsx jsxDom */\n\nimport { type RenderOptionsType } from '../../parent';\n\nexport function defaultPrerenderTemplate({ jsxDom } : RenderOptionsType) : HTMLElement {\n return (\n \n \n \n \n \n
\n
\n
\n \n \n );\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { on, send } from 'post-robot/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getDomain, getDomainFromUrl, matchDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { BaseComponent } from '../base';\nimport { ChildComponent } from '../child';\nimport { ParentComponent, type RenderOptionsType } from '../parent';\nimport { DelegateComponent, type DelegateOptionsType } from '../delegate';\nimport { isZoidComponentWindow, getComponentMeta } from '../window';\nimport { CONTEXT_TYPES, POST_MESSAGE, WILDCARD } from '../../constants';\nimport { angular, angular2, glimmer, react, vue, script } from '../../drivers/index';\nimport { info, error, warn, setLogLevel, memoize } from '../../lib';\nimport type { EnvStringRegExp, CssDimensionsType, StringMatcherType, ElementRefType, EnvString } from '../../types';\n\nimport { validate } from './validate';\nimport { defaultContainerTemplate, defaultPrerenderTemplate } from './templates';\nimport { getInternalProps, type UserPropsDefinitionType, type BuiltInPropsDefinitionType, type PropsType, type BuiltInPropsType, type MixedPropDefinitionType } from './props';\n\nconst drivers = { angular, angular2, glimmer, react, vue, script };\n\n/* Component\n ---------\n\n This is the spec for the component. The idea is, when I call zoid.create(), it will create a new instance\n of Component with the blueprint needed to set up ParentComponents and ChildComponents.\n\n This is the one portion of code which is required by -- and shared to -- both the parent and child windows, and\n contains all of the configuration needed for them to set themselves up.\n*/\n\nexport type ComponentOptionsType

= {\n\n tag : string,\n\n url? : EnvString,\n buildUrl? : (BuiltInPropsType & P) => string | ZalgoPromise,\n\n domain? : EnvStringRegExp,\n bridgeUrl? : EnvString,\n bridgeDomain? : EnvString,\n\n props? : UserPropsDefinitionType

,\n\n dimensions? : CssDimensionsType,\n scrolling? : boolean,\n autoResize? : boolean | { width? : boolean, height? : boolean, element? : string },\n listenForResize? : boolean,\n\n defaultLogLevel? : string,\n allowedParentDomains? : StringMatcherType,\n\n version? : string,\n defaultEnv? : string,\n\n contexts? : { iframe? : boolean, popup? : boolean },\n defaultContext? : string,\n\n containerTemplate? : (RenderOptionsType) => HTMLElement,\n prerenderTemplate? : (RenderOptionsType) => HTMLElement,\n\n validate? : (Component

, UserPropsDefinitionType

) => void,\n\n unsafeRenderTo? : boolean\n};\n\nexport type ComponentDriverType = {\n global : () => ?T,\n register : (Component

, T) => mixed\n};\n\nexport class Component

extends BaseComponent

{\n\n name : string\n looseProps : boolean\n\n tag : string\n url : EnvString\n\n domain : EnvStringRegExp\n bridgeUrl : EnvString\n bridgeDomain : EnvString\n\n props : UserPropsDefinitionType

\n builtinProps : BuiltInPropsDefinitionType

\n\n dimensions : CssDimensionsType\n scrolling : boolean\n autoResize : ?(boolean | { width? : boolean, height? : boolean, element? : string })\n listenForResize : ?boolean\n\n defaultLogLevel : string\n allowedParentDomains : StringMatcherType\n\n version : string\n defaultEnv : string\n buildUrl : (BuiltInPropsType & P) => string | ZalgoPromise\n\n contexts : { iframe? : boolean, popup? : boolean }\n defaultContext : string\n\n containerTemplate : (RenderOptionsType) => HTMLElement\n prerenderTemplate : (RenderOptionsType) => HTMLElement\n\n validate : (Component

, (PropsType & P)) => void\n\n unsafeRenderTo : ?boolean\n\n driverCache : { [string] : mixed }\n\n xchild : ?ChildComponent

\n xprops : ?P\n\n constructor(options : ComponentOptionsType

) {\n super();\n validate(options);\n\n // The tag name of the component. Used by some drivers (e.g. angular) to turn the component into an html element,\n // e.g. \n\n this.addProp(options, 'tag');\n\n this.addProp(options, 'defaultLogLevel', 'info');\n\n this.addProp(options, 'allowedParentDomains', WILDCARD);\n\n // initially set log level to default log level configured when creating component\n setLogLevel(this.defaultLogLevel);\n\n if (Component.components[this.tag]) {\n throw new Error(`Can not register multiple components with the same tag`);\n }\n\n // Name of the component, used for logging. Auto-generated from the tag name by default.\n\n this.addProp(options, 'name', this.tag.replace(/-/g, '_'));\n\n // A json based spec describing what kind of props the component accepts. This is used to validate any props before\n // they are passed down to the child.\n\n this.builtinProps = getInternalProps();\n this.props = options.props || {};\n\n if (!options.props) {\n this.looseProps = true;\n }\n\n // The dimensions of the component, e.g. { width: '300px', height: '150px' }\n\n this.addProp(options, 'dimensions');\n this.addProp(options, 'scrolling');\n this.addProp(options, 'listenForResize');\n\n this.addProp(options, 'version', 'latest');\n\n // The default environment we should render to if none is specified in the parent\n\n this.addProp(options, 'defaultEnv');\n\n // A mapping of env->url, used to determine which url to load for which env\n\n this.addProp(options, 'buildUrl');\n\n this.addProp(options, 'url');\n this.addProp(options, 'domain');\n\n this.addProp(options, 'bridgeUrl');\n this.addProp(options, 'bridgeDomain');\n\n this.addProp(options, 'attributes', {});\n\n // A url to use by default to render the component, if not using envs\n\n\n // The allowed contexts. For example { iframe: true, popup: false }\n\n this.addProp(options, 'contexts', { iframe: true, popup: false });\n\n // The default context to render to\n\n this.addProp(options, 'defaultContext');\n\n // Auto Resize option\n\n this.addProp(options, 'autoResize', false);\n\n // Templates and styles for the parent page and the initial rendering of the component\n\n this.addProp(options, 'containerTemplate', defaultContainerTemplate);\n this.addProp(options, 'prerenderTemplate', defaultPrerenderTemplate);\n\n // Validation\n\n this.addProp(options, 'validate');\n\n // Security\n\n this.addProp(options, 'unsafeRenderTo', false);\n\n // A mapping of tag->component so we can reference components by string tag name\n\n Component.components[this.tag] = this;\n\n // Register all of the drivers for instantiating components. The model used is -- there's a standard javascript\n // way of rendering a component, then each other technology (e.g. react) needs to hook into that interface.\n // This makes us a little more pluggable and loosely coupled.\n this.registerDrivers();\n this.registerChild();\n this.listenDelegate();\n }\n\n @memoize\n getPropNames() : Array {\n let props = Object.keys(this.props);\n\n for (let key of Object.keys(this.builtinProps)) {\n if (props.indexOf(key) === -1) {\n props.push(key);\n }\n }\n\n return props;\n }\n\n // $FlowFixMe\n getProp(name : string) : MixedPropDefinitionType

{\n // $FlowFixMe\n return this.props[name] || this.builtinProps[name];\n }\n\n registerDrivers() {\n this.driverCache = {};\n\n for (let driverName of Object.keys(drivers)) {\n if (driverName.indexOf('_') === 0) {\n continue;\n }\n\n let driver = drivers[driverName];\n let glob = driver.global();\n if (glob) {\n this.driver(driverName, glob);\n }\n }\n }\n\n driver(name : string, dep : mixed) : mixed {\n if (!drivers[name]) {\n throw new Error(`Could not find driver for framework: ${ name }`);\n }\n\n if (!this.driverCache[name]) {\n this.driverCache[name] = drivers[name].register(this, dep);\n }\n\n return this.driverCache[name];\n }\n\n registerChild() : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n if (this.isChild()) {\n return new ChildComponent(this);\n }\n });\n }\n\n listenDelegate() {\n on(`${ POST_MESSAGE.ALLOW_DELEGATE }_${ this.name }`, () => {\n return true;\n });\n\n on(`${ POST_MESSAGE.DELEGATE }_${ this.name }`, ({ source, origin, data }) => {\n\n let domain = this.getDomain(null, data.env || this.defaultEnv);\n\n if (!domain) {\n throw new Error(`Could not determine domain to allow remote render`);\n }\n\n if (!matchDomain(domain, origin)) {\n throw new Error(`Can not render from ${ origin } - expected ${ domain.toString() }`);\n }\n\n let delegate = this.delegate(source, data.options);\n\n return {\n overrides: delegate.getOverrides(data.context),\n destroy: () => delegate.destroy()\n };\n });\n }\n\n canRenderTo(win : CrossDomainWindowType) : ZalgoPromise {\n return send(win, `${ POST_MESSAGE.ALLOW_DELEGATE }_${ this.name }`).then(({ data }) => {\n return data;\n }).catch(() => {\n return false;\n });\n }\n\n\n getValidDomain(url : ?string) : ?(string | RegExp) {\n\n if (!url) {\n return;\n }\n\n let domain = getDomainFromUrl(url);\n\n if (typeof this.domain === 'string' && domain === this.domain) {\n return domain;\n }\n\n let domains = this.domain;\n\n if (domains && typeof domains === 'object' && !(domains instanceof RegExp)) {\n for (let env of Object.keys(domains)) {\n\n if (env === 'test') {\n continue;\n }\n\n if (domain === domains[env]) {\n return domain;\n }\n }\n }\n }\n\n\n getDomain(url : ?string, env : string) : ?(string | RegExp) {\n\n let domain = this.getForEnv(this.domain, env);\n\n if (domain) {\n return domain;\n }\n\n domain = this.getValidDomain(url);\n\n if (domain) {\n return domain;\n }\n\n // $FlowFixMe\n let envUrl = this.getForEnv(this.url, env);\n\n if (envUrl) {\n // $FlowFixMe\n return getDomainFromUrl(envUrl);\n }\n\n if (url) {\n return getDomainFromUrl(url);\n }\n }\n\n getBridgeUrl(env : string) : ?string {\n // $FlowFixMe\n return this.getForEnv(this.bridgeUrl, env);\n }\n\n getForEnv(item : (string | RegExp) | { [string] : (string | RegExp) }, env : ?string) : ?(string | RegExp) {\n\n if (!item) {\n return;\n }\n\n if (typeof item === 'string' || item instanceof RegExp) {\n return item;\n }\n\n if (!env) {\n env = this.defaultEnv;\n }\n\n if (!env) {\n return;\n }\n\n if (env && typeof item === 'object' && item[env]) {\n return item[env];\n }\n }\n\n getBridgeDomain(env : string) : ?string {\n\n // $FlowFixMe\n let bridgeDomain = this.getForEnv(this.bridgeDomain, env);\n\n if (bridgeDomain) {\n // $FlowFixMe\n return bridgeDomain;\n }\n\n let bridgeUrl = this.getBridgeUrl(env);\n\n if (bridgeUrl) {\n return getDomainFromUrl(bridgeUrl);\n }\n }\n\n getUrl(env : string, props : BuiltInPropsType & P) : (string | ZalgoPromise) {\n\n // $FlowFixMe\n let url = this.getForEnv(this.url, env);\n\n if (url) {\n // $FlowFixMe\n return url;\n }\n\n if (this.buildUrl) {\n return this.buildUrl(props);\n }\n\n throw new Error(`Unable to get url`);\n }\n\n isZoidComponent() : boolean {\n return isZoidComponentWindow();\n }\n\n isChild() : boolean {\n if (!isZoidComponentWindow()) {\n return false;\n }\n\n const { tag, childDomain } = getComponentMeta();\n\n if (childDomain && childDomain !== getDomain()) {\n return false;\n }\n\n if (tag !== this.tag) {\n return false;\n }\n\n return true;\n }\n\n\n createError(message : string, tag : ?string) : Error {\n return new Error(`[${ tag || this.tag }] ${ message }`);\n }\n\n\n /* Init\n ----\n\n Shortcut to instantiate a component on a parent page, with props\n */\n\n init(props : (PropsType & P), context : ?string, element : ElementRefType) : ParentComponent

{\n return new ParentComponent(this, this.getRenderContext(context, element), { props });\n }\n\n\n delegate(source : CrossDomainWindowType, options : DelegateOptionsType) : DelegateComponent

{\n return new DelegateComponent(this, source, options);\n }\n\n validateRenderContext(context : ?string, element : ?ElementRefType) {\n if (context && !this.contexts[context]) {\n throw new Error(`[${ this.tag }] Can not render to ${ context }`);\n }\n\n if (!element && context === CONTEXT_TYPES.IFRAME) {\n throw new Error(`[${ this.tag }] Context type ${ CONTEXT_TYPES.IFRAME } requires an element selector`);\n }\n }\n\n getDefaultContext() : string {\n if (this.defaultContext) {\n return this.defaultContext;\n } else if (this.contexts[CONTEXT_TYPES.IFRAME]) {\n return CONTEXT_TYPES.IFRAME;\n } else if (this.contexts[CONTEXT_TYPES.POPUP]) {\n return CONTEXT_TYPES.POPUP;\n }\n\n throw new Error(`Can not determine default context`);\n }\n\n getRenderContext(context : ?string, element : ?ElementRefType) : string {\n context = context || this.getDefaultContext();\n this.validateRenderContext(context, element);\n return context;\n }\n\n\n /* Render\n ------\n\n Shortcut to render a parent component\n */\n\n render(props : (PropsType & P), element : ?ElementRefType) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(null, element), { props }).render(element);\n });\n }\n\n renderIframe(props : (PropsType & P), element : ElementRefType) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(CONTEXT_TYPES.IFRAME, element), { props }).render(element);\n });\n }\n\n renderPopup(props : (PropsType & P)) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(CONTEXT_TYPES.POPUP), { props }).render();\n });\n }\n\n renderTo(win : CrossDomainWindowType, props : (PropsType & P), element : ?ElementRefType) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(null, element), { props }).renderTo(win, element);\n });\n }\n\n renderIframeTo(win : CrossDomainWindowType, props : (PropsType & P), element : ElementRefType) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(CONTEXT_TYPES.IFRAME, element), { props }).renderTo(win, element);\n });\n }\n\n renderPopupTo(win : CrossDomainWindowType, props : (PropsType & P)) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(CONTEXT_TYPES.POPUP), { props }).renderTo(win);\n });\n }\n\n prerender(props : (PropsType & P), element : ElementRefType) : { render : ((PropsType & P), ElementRefType) => ZalgoPromise>, renderTo : (CrossDomainWindowType, (PropsType & P), ElementRefType) => ZalgoPromise> } {\n let instance = new ParentComponent(this, this.getRenderContext(null, element), { props });\n instance.prefetch();\n\n return {\n render(innerProps : (PropsType & P), innerElement : ElementRefType) : ZalgoPromise> {\n if (innerProps) {\n instance.updateProps(innerProps);\n }\n\n return instance.render(innerElement);\n },\n\n renderTo(win : CrossDomainWindowType, innerProps : (PropsType & P), innerElement : ElementRefType) : ZalgoPromise> {\n if (innerProps) {\n instance.updateProps(innerProps);\n }\n\n return instance.renderTo(win, innerElement);\n },\n\n get html() : ?ZalgoPromise {\n return instance.html;\n },\n\n set html(value) {\n instance.html = value;\n }\n };\n }\n\n /* Log\n ---\n\n Log an event using the component name\n */\n\n log(event : string, payload : { [ string ] : string } = {}) {\n info(this.name, event, payload);\n }\n\n\n /* Log Warning\n -----------\n\n Log a warning\n */\n\n logWarning(event : string, payload : { [ string ] : string }) {\n warn(this.name, event, payload);\n }\n\n\n /* Log Error\n ---------\n\n Log an error\n */\n\n logError(event : string, payload : { [ string ] : string }) {\n error(this.name, event, payload);\n }\n\n static components : { [string] : Component<*> } = {}\n\n static getByTag(tag : string) : Component {\n return Component.components[tag];\n }\n}\n","/* @flow */\n\nimport { PROP_TYPES_LIST, CONTEXT_TYPES_LIST } from '../../constants';\nimport { isPerc, isPx } from '../../lib';\n\nimport type { ComponentOptionsType } from './index';\n\nfunction validatePropDefinitions

(options : ComponentOptionsType

) {\n\n if (options.props && !(typeof options.props === 'object')) {\n throw new Error(`Expected options.props to be an object`);\n }\n\n if (options.props) {\n for (let key of Object.keys(options.props)) {\n\n // $FlowFixMe\n let prop = options.props[key];\n\n if (!prop || !(typeof prop === 'object')) {\n throw new Error(`Expected options.props.${ key } to be an object`);\n }\n\n if (!prop.type) {\n throw new Error(`Expected prop.type`);\n }\n\n if (PROP_TYPES_LIST.indexOf(prop.type) === -1) {\n throw new Error(`Expected prop.type to be one of ${ PROP_TYPES_LIST.join(', ') }`);\n }\n\n if (prop.required && prop.def) {\n throw new Error(`Required prop can not have a default value`);\n }\n }\n }\n}\n\n// eslint-disable-next-line complexity\nexport function validate

(options : ?ComponentOptionsType

) { // eslint-ignore-line\n\n if (!options) {\n throw new Error(`Expecred options to be passed`);\n }\n\n if (!options.tag || !options.tag.match(/^[a-z0-9-]+$/)) {\n throw new Error(`Invalid options.tag: ${ options.tag }`);\n }\n\n validatePropDefinitions(options);\n\n if (options.dimensions) {\n if (options.dimensions && !isPx(options.dimensions.width) && !isPerc(options.dimensions.width)) {\n throw new Error(`Expected options.dimensions.width to be a px or % string value`);\n }\n\n if (options.dimensions && !isPx(options.dimensions.height) && !isPerc(options.dimensions.height)) {\n throw new Error(`Expected options.dimensions.height to be a px or % string value`);\n }\n }\n\n if (options.contexts) {\n\n if (options.contexts.popup && !__ZOID__.__POPUP_SUPPORT__) {\n throw new Error(`Popups not supported in this build -- please use the full zoid.js build`);\n }\n\n let anyEnabled = false;\n\n for (let context of Object.keys(options.contexts)) {\n\n if (CONTEXT_TYPES_LIST.indexOf(context) === -1) {\n throw new Error(`Unsupported context type: ${ context }`);\n }\n\n if ((options.contexts && options.contexts[context]) || (options.contexts && options.contexts[context] === undefined)) {\n anyEnabled = true;\n }\n }\n\n if (!anyEnabled) {\n throw new Error(`No context type is enabled`);\n }\n }\n\n if (options.defaultContext) {\n if (CONTEXT_TYPES_LIST.indexOf(options.defaultContext) === -1) {\n throw new Error(`Unsupported context type: ${ options.defaultContext || 'unknown' }`);\n }\n\n if (options.contexts && options.defaultContext && !options.contexts[options.defaultContext]) {\n throw new Error(`Disallowed default context type: ${ options.defaultContext || 'unknown' }`);\n }\n }\n\n if (options.url && options.buildUrl) {\n throw new Error(`Can not pass both options.url and options.buildUrl`);\n }\n\n if (options.defaultEnv) {\n if (typeof options.defaultEnv !== 'string') {\n throw new TypeError(`Expected options.defaultEnv to be a string`);\n }\n\n if (!options.buildUrl && typeof options.url !== 'object') {\n throw new Error(`Expected options.url to be an object mapping env->url`);\n }\n\n if (options.url && typeof options.url === 'object' && !options.url[options.defaultEnv]) {\n throw new Error(`No url found for default env: ${ options.defaultEnv }`);\n }\n }\n\n if (options.url && typeof options.url === 'object') {\n\n if (!options.defaultEnv) {\n throw new Error(`Must pass options.defaultEnv with env->url mapping`);\n }\n\n for (let env of Object.keys(options.url)) {\n if (!options.url[env]) {\n throw new Error(`No url specified for env: ${ env }`);\n }\n }\n }\n\n if (options.prerenderTemplate && typeof options.prerenderTemplate !== 'function') {\n throw new Error(`Expected options.prerenderTemplate to be a function`);\n }\n\n if (options.containerTemplate && typeof options.containerTemplate !== 'function') {\n throw new Error(`Expected options.containerTemplate to be a function`);\n }\n}\n","/* @flow */\n\nimport { type ZalgoPromise } from 'zalgo-promise/src';\nimport type { SameDomainWindowType } from 'cross-domain-utils/src';\n\nimport { uniqueID } from '../../lib';\nimport { type DimensionsType } from '../../types';\n\ntype PropDefinitionType = {\n type : S,\n alias? : string,\n value? : T,\n required? : boolean,\n noop? : boolean,\n once? : boolean,\n memoize? : boolean,\n promisify? : boolean,\n queryParam? : boolean | string | (T) => (string | ZalgoPromise),\n queryValue? : (T) => (ZalgoPromise | mixed),\n sendToChild? : boolean,\n allowDelegate? : boolean,\n validate? : (T, PropsType & P) => void,\n decorate? : (T, PropsType & P) => (void | ZalgoPromise | T),\n def? : (P) => ?T,\n sameDomain? : boolean,\n serialization? : 'json' | 'dotify',\n childDecorate? : (T) => ?T,\n denodeify? : boolean\n};\n\nexport type BooleanPropDefinitionType = PropDefinitionType;\nexport type StringPropDefinitionType = PropDefinitionType;\nexport type NumberPropDefinitionType = PropDefinitionType;\nexport type FunctionPropDefinitionType = PropDefinitionType;\nexport type ObjectPropDefinitionType = PropDefinitionType;\n\nexport type MixedPropDefinitionType

= BooleanPropDefinitionType<*, P> | StringPropDefinitionType<*, P> | NumberPropDefinitionType<*, P> | FunctionPropDefinitionType<*, P> | ObjectPropDefinitionType<*, P>;\n\nexport type UserPropsDefinitionType

= {\n [string] : MixedPropDefinitionType

\n};\n\nexport type EventHandlerType = (T) => void | ZalgoPromise;\n\ntype envPropType = string;\ntype uidPropType = string;\ntype urlPropType = string;\ntype versionPropType = string;\ntype timeoutPropType = number;\ntype logLevelPropType = string;\ntype dimensionsPropType = DimensionsType;\ntype winPropType = SameDomainWindowType;\n\ntype onDisplayPropType = EventHandlerType;\ntype onEnterPropType = EventHandlerType;\ntype onRenderPropType = EventHandlerType;\ntype onClosePropType = EventHandlerType;\ntype onResizePropType = EventHandlerType;\ntype onTimeoutPropType = EventHandlerType;\ntype onErrorPropType = EventHandlerType;\n\nexport type BuiltInPropsType = {\n env : envPropType,\n uid : uidPropType,\n url? : urlPropType,\n version? : versionPropType,\n timeout? : timeoutPropType,\n logLevel : logLevelPropType,\n dimensions? : dimensionsPropType,\n win? : winPropType,\n\n onDisplay : onDisplayPropType,\n onEnter : onEnterPropType,\n onRender : onRenderPropType,\n onClose : onClosePropType,\n onResize : onResizePropType,\n onTimeout : onTimeoutPropType,\n onError? : onErrorPropType\n};\n\nexport type PropsType = {\n env? : envPropType,\n uid? : uidPropType,\n url? : urlPropType,\n version? : versionPropType,\n timeout? : timeoutPropType,\n logLevel? : logLevelPropType,\n dimensions? : dimensionsPropType,\n win? : winPropType,\n\n onDisplay? : onDisplayPropType,\n onEnter? : onEnterPropType,\n onRender? : onRenderPropType,\n onClose? : onClosePropType,\n onResize? : onResizePropType,\n onTimeout? : onTimeoutPropType,\n onError? : onErrorPropType\n};\n\nexport type BuiltInPropsDefinitionType

= {\n env : StringPropDefinitionType,\n uid : StringPropDefinitionType,\n url : StringPropDefinitionType,\n version : StringPropDefinitionType,\n timeout : NumberPropDefinitionType,\n logLevel : StringPropDefinitionType,\n dimensions : ObjectPropDefinitionType,\n win : ObjectPropDefinitionType,\n\n onDisplay : FunctionPropDefinitionType,\n onEnter : FunctionPropDefinitionType,\n onRender : FunctionPropDefinitionType,\n onClose : FunctionPropDefinitionType,\n onResize : FunctionPropDefinitionType,\n onTimeout : FunctionPropDefinitionType,\n onError : FunctionPropDefinitionType\n};\n\n/* Internal Props\n --------------\n\n We define and use certain props by default, for configuration and events that are used at the framework level.\n These follow the same format as regular props, and are classed as reserved words that may not be overriden by users.\n*/\n\nexport function getInternalProps

() : BuiltInPropsDefinitionType

{\n return {\n\n // The desired env in which the component is being rendered. Used to determine the correct url\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n def() : string {\n return this.defaultEnv;\n }\n },\n\n uid: {\n type: 'string',\n def() : string {\n return uniqueID();\n },\n queryParam: true\n },\n\n logLevel: {\n type: 'string',\n required: false,\n queryParam: true,\n def() : string {\n return this.defaultLogLevel;\n }\n },\n\n // A custom url to use to render the component\n\n url: {\n type: 'string',\n required: false,\n promise: true,\n sendToChild: false\n },\n\n win: {\n type: 'object',\n required: false,\n sendToChild: false\n },\n\n dimensions: {\n type: 'object',\n required: false\n },\n\n version: {\n type: 'string',\n required: false,\n queryParam: true,\n def() : string {\n return this.version;\n }\n },\n\n // A millisecond timeout before onTimeout is called\n\n timeout: {\n type: 'number',\n required: false,\n sendToChild: false\n },\n\n onDisplay: {\n type: 'function',\n required: false,\n noop: true,\n promisify: true,\n memoize: true,\n sendToChild: false\n },\n\n onEnter: {\n type: 'function',\n required: false,\n noop: true,\n promisify: true,\n sendToChild: false\n },\n\n // When we get an INIT message from the child\n\n onRender: {\n type: 'function',\n required: false,\n noop: true,\n promisify: true,\n sendToChild: false\n },\n\n // When the user closes the component.\n\n onClose: {\n type: 'function',\n required: false,\n noop: true,\n once: true,\n promisify: true,\n sendToChild: false\n },\n\n onResize: {\n type: 'function',\n required: false,\n noop: true,\n sendToChild: false\n },\n\n // When we time-out before getting an INIT message from the child. Defaults to onError if no handler passed.\n\n onTimeout: {\n type: 'function',\n required: false,\n memoize: true,\n promisify: true,\n sendToChild: false,\n def() : (() => void) {\n return function onTimeout(err : mixed) : void {\n if (this.props.onError) {\n return this.props.onError(err);\n }\n throw err;\n };\n }\n },\n\n // When the component experiences an error\n\n onError: {\n type: 'function',\n required: false,\n promisify: true,\n sendToChild: true,\n once: true,\n def() : (() => void) {\n return function onError(err : mixed) {\n setTimeout(() => {\n throw err;\n });\n };\n }\n }\n };\n}\n","/* @flow */\n\nimport { type ZalgoPromise } from 'zalgo-promise/src';\n// eslint-disable-next-line import/no-namespace\nimport * as _postRobot from 'post-robot/src';\n\nimport { Component, type ComponentOptionsType } from './component';\nimport { ParentComponent } from './component/parent';\n// eslint-disable-next-line import/no-namespace\nimport * as _CONSTANTS from './constants';\n\nexport function create

(options : ComponentOptionsType

) : Component

{\n return new Component(options);\n}\n\nexport function getByTag

(tag : string) : Component

{\n return Component.getByTag(tag);\n}\n\nexport { getCurrentScriptDir } from './lib';\n\nexport function destroyAll() : ZalgoPromise {\n return ParentComponent.destroyAll();\n}\nexport let postRobot = _postRobot;\n\nexport * from './error';\n\nexport const CONSTANTS = _CONSTANTS;\n\nexport type ZoidComponent

= Component

;\n","/* @flow */\n\n// eslint-disable-next-line import/no-namespace\nimport * as INTERFACE from './interface';\n\nexport * from './interface';\nexport default INTERFACE;\n","/* @flow */\n\nimport {\n getOpener,\n getTop\n} from 'cross-domain-utils/src';\n\nexport function getUserAgent() : string {\n return window.navigator.mockUserAgent || window.navigator.userAgent;\n}\n\nexport function isDevice() : boolean {\n const userAgent = getUserAgent();\n if (userAgent.match(/Android|webOS|iPhone|iPad|iPod|bada|Symbian|Palm|CriOS|BlackBerry|IEMobile|WindowsMobile|Opera Mini/i)) {\n return true;\n }\n\n return false;\n}\n\nexport function isInsidePopup() : boolean {\n // Checks to see if the top-most window is a pop-up\n return Boolean(getOpener(getTop(window) || window));\n}\n\nexport function isStandAlone() : boolean {\n // Chrome interprets pop-up windows as standalone windows\n return !isInsidePopup() && (window.navigator.standalone === true || window.matchMedia('(display-mode: standalone)').matches);\n}\n\nexport function isFacebookWebView(ua? : string = getUserAgent()) : boolean {\n return (ua.indexOf('FBAN') !== -1) || (ua.indexOf('FBAV') !== -1);\n}\n\nexport function isFirefoxIOS(ua? : string = getUserAgent()) : boolean {\n return (/FxiOS/i).test(ua);\n}\n\nexport function isEdgeIOS(ua? : string = getUserAgent()) : boolean {\n return (/EdgiOS/i).test(ua);\n}\n\nexport function isOperaMini(ua? : string = getUserAgent()) : boolean {\n return ua.indexOf('Opera Mini') > -1;\n}\n\nexport function isAndroid(ua? : string = getUserAgent()) : boolean {\n return (/Android/).test(ua);\n}\n\nexport function isIos(ua? : string = getUserAgent()) : boolean {\n return (/iPhone|iPod|iPad/).test(ua);\n}\n\nexport function isGoogleSearchApp(ua? : string = getUserAgent()) : boolean {\n return (/\\bGSA\\b/).test(ua);\n}\n\nexport function isQQBrowser(ua? : string = getUserAgent()) : boolean {\n return (/QQBrowser/).test(ua);\n}\n\nexport function isIosWebview(ua? : string = getUserAgent()) : boolean {\n if (isIos(ua)) {\n if (isGoogleSearchApp(ua)) {\n return true;\n }\n return (/.+AppleWebKit(?!.*Safari)/).test(ua);\n }\n return false;\n}\n\nexport function isAndroidWebview(ua? : string = getUserAgent()) : boolean {\n if (isAndroid(ua)) {\n return (/Version\\/[\\d.]+/).test(ua) && !isOperaMini(ua);\n }\n return false;\n}\n\nexport function isWebView() : boolean {\n return isFacebookWebView() ||\n isIosWebview() ||\n isAndroidWebview();\n}\n\nexport function isIE() : boolean {\n\n if (window.document.documentMode) {\n return true;\n }\n\n if (window.navigator && typeof window.navigator.userAgent === 'string') {\n if ((/Edge|MSIE/i).test(window.navigator.userAgent)) {\n return true;\n }\n }\n\n return false;\n}\n\n\nexport function isIE11() : boolean {\n if (!isIE()) {\n return false;\n }\n\n if (window.navigator && typeof window.navigator.userAgent === 'string') {\n if ((/MSIE 11\\.0/i).test(window.navigator.userAgent)) {\n return true;\n }\n\n if ((/Trident/i).test(window.navigator.userAgent) && (/rv:11\\.0/i).test(window.navigator.userAgent)) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function isIECompHeader() : boolean {\n const mHttp = window.document.querySelector('meta[http-equiv=\"X-UA-Compatible\"]');\n const mContent = window.document.querySelector('meta[content=\"IE=edge\"]');\n if (mHttp && mContent) {\n return true;\n }\n return false;\n}\n\nexport function isElectron() : boolean {\n const userAgent = getUserAgent();\n // here we want a case-insensitive full word boundary\n return (/\\belectron\\b/i).test(userAgent);\n}\n\nexport function isIEIntranet() : boolean {\n if (!isIE11()) {\n return false;\n }\n\n // This status check only works for older versions of IE with document.documentMode set\n\n if (window.document.documentMode) {\n try {\n const status = window.status;\n\n window.status = 'testIntranetMode';\n\n if (window.status === 'testIntranetMode') {\n window.status = status;\n\n return true;\n }\n\n return false;\n\n } catch (err) {\n\n return false;\n }\n }\n\n return false;\n}\n\nexport function isMacOsCna() : boolean {\n const userAgent = getUserAgent();\n return (/Macintosh.*AppleWebKit(?!.*Safari)/i).test(userAgent);\n}\n\nexport function supportsPopups(ua? : string = getUserAgent()) : boolean {\n return !(isIosWebview(ua) || isAndroidWebview(ua) || isOperaMini(ua) ||\n isFirefoxIOS(ua) || isEdgeIOS(ua) || isFacebookWebView(ua) || isQQBrowser(ua) || isElectron() || isMacOsCna() || isStandAlone());\n}\n","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","/* @flow */\n\nimport { type ZalgoPromise } from 'zalgo-promise/src';\nimport { getParent, isWindowClosed, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONSTANTS } from '../conf';\nimport { noop } from '../lib';\nimport { global } from '../global';\n\n/*\n HERE BE DRAGONS\n\n Warning: this file may look weird. Why save the tunnel window in an Object\n by ID, then look it up later, rather than just using the reference from the closure scope?\n\n The reason is, that ends up meaning the garbage collector can never get its hands\n on a closed window, since our closure has continued access to it -- and post-robot\n has no good way to know whether to clean up the function with the closure scope.\n\n If you're editing this file, be sure to run significant memory / GC tests afterwards.\n*/\n\nglobal.tunnelWindows = global.tunnelWindows || {};\nglobal.tunnelWindowId = 0;\n\nfunction deleteTunnelWindow(id) {\n\n try {\n if (global.tunnelWindows[id]) {\n delete global.tunnelWindows[id].source;\n }\n } catch (err) {\n // pass\n }\n\n delete global.tunnelWindows[id];\n}\n\nfunction cleanTunnelWindows() {\n let tunnelWindows = global.tunnelWindows;\n\n for (let key of Object.keys(tunnelWindows)) {\n let tunnelWindow = tunnelWindows[key];\n\n try {\n noop(tunnelWindow.source);\n } catch (err) {\n deleteTunnelWindow(key);\n continue;\n }\n\n if (isWindowClosed(tunnelWindow.source)) {\n deleteTunnelWindow(key);\n }\n }\n}\n\ntype TunnelWindowDataType = {\n name : string,\n source : CrossDomainWindowType,\n canary : () => void,\n sendMessage : (message : string) => void\n};\n\nfunction addTunnelWindow({ name, source, canary, sendMessage } : TunnelWindowDataType) : number {\n cleanTunnelWindows();\n global.tunnelWindowId += 1;\n global.tunnelWindows[global.tunnelWindowId] = { name, source, canary, sendMessage };\n return global.tunnelWindowId;\n}\n\nfunction getTunnelWindow(id : number) : TunnelWindowDataType {\n return global.tunnelWindows[id];\n}\n\nglobal.openTunnelToParent = function openTunnelToParent({ name, source, canary, sendMessage } : TunnelWindowDataType) : ZalgoPromise<{ source : CrossDomainWindowType, origin : string, data : Object }> {\n\n let parentWindow = getParent(window);\n\n if (!parentWindow) {\n throw new Error(`No parent window found to open tunnel to`);\n }\n\n let id = addTunnelWindow({ name, source, canary, sendMessage });\n\n return global.send(parentWindow, CONSTANTS.POST_MESSAGE_NAMES.OPEN_TUNNEL, {\n\n name,\n\n sendMessage() {\n\n let tunnelWindow = getTunnelWindow(id);\n\n try {\n // IE gets antsy if you try to even reference a closed window\n noop(tunnelWindow && tunnelWindow.source);\n } catch (err) {\n deleteTunnelWindow(id);\n return;\n }\n\n if (!tunnelWindow || !tunnelWindow.source || isWindowClosed(tunnelWindow.source)) {\n return;\n }\n\n try {\n tunnelWindow.canary();\n } catch (err) {\n return;\n }\n\n tunnelWindow.sendMessage.apply(this, arguments);\n }\n\n }, { domain: CONSTANTS.WILDCARD });\n};\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getDomain, isSameDomain, isOpener, isSameTopWindow, matchDomain, getUserAgent, getDomainFromUrl, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONFIG, CONSTANTS } from '../conf';\nimport { global } from '../global';\n\nexport function needsBridgeForBrowser() : boolean {\n\n if (getUserAgent(window).match(/MSIE|trident|edge\\/12|edge\\/13/i)) {\n return true;\n }\n\n if (!CONFIG.ALLOW_POSTMESSAGE_POPUP) {\n return true;\n }\n\n return false;\n}\n\nexport function needsBridgeForWin(win : CrossDomainWindowType) : boolean {\n\n if (!isSameTopWindow(window, win)) {\n return true;\n }\n\n return false;\n}\n\nexport function needsBridgeForDomain(domain : ?string, win : ?CrossDomainWindowType) : boolean {\n\n if (domain) {\n if (getDomain() !== getDomainFromUrl(domain)) {\n return true;\n }\n } else if (win) {\n if (!isSameDomain(win)) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function needsBridge({ win, domain } : { win? : CrossDomainWindowType, domain? : string }) : boolean {\n\n if (!needsBridgeForBrowser()) {\n return false;\n }\n\n if (domain && !needsBridgeForDomain(domain, win)) {\n return false;\n }\n\n if (win && !needsBridgeForWin(win)) {\n return false;\n }\n\n return true;\n}\n\nexport function getBridgeName(domain : string) : string {\n\n domain = domain || getDomainFromUrl(domain);\n\n let sanitizedDomain = domain.replace(/[^a-zA-Z0-9]+/g, '_');\n\n let id = `${ CONSTANTS.BRIDGE_NAME_PREFIX }_${ sanitizedDomain }`;\n\n return id;\n}\n\nexport function isBridge() : boolean {\n return Boolean(window.name && window.name === getBridgeName(getDomain()));\n}\n\nexport let documentBodyReady = new ZalgoPromise(resolve => {\n\n if (window.document && window.document.body) {\n return resolve(window.document.body);\n }\n\n let interval = setInterval(() => {\n if (window.document && window.document.body) {\n clearInterval(interval);\n return resolve(window.document.body);\n }\n }, 10);\n});\n\nglobal.remoteWindows = global.remoteWindows || new WeakMap();\n\nexport function registerRemoteWindow(win : CrossDomainWindowType) {\n global.remoteWindows.set(win, { sendMessagePromise: new ZalgoPromise() });\n}\n\nexport function findRemoteWindow(win : CrossDomainWindowType) : { sendMessagePromise : ZalgoPromise<(remoteWin : CrossDomainWindowType, message : string, remoteDomain : string) => void> } {\n return global.remoteWindows.get(win);\n}\n\nexport function registerRemoteSendMessage(win : CrossDomainWindowType, domain : string, sendMessage : (message : string) => void) {\n\n let remoteWindow = findRemoteWindow(win);\n\n if (!remoteWindow) {\n throw new Error(`Window not found to register sendMessage to`);\n }\n\n let sendMessageWrapper = (remoteWin : CrossDomainWindowType, message : string, remoteDomain : string) => {\n\n if (remoteWin !== win) {\n throw new Error(`Remote window does not match window`);\n }\n\n if (!matchDomain(remoteDomain, domain)) {\n throw new Error(`Remote domain ${ remoteDomain } does not match domain ${ domain }`);\n }\n\n sendMessage(message);\n };\n\n remoteWindow.sendMessagePromise.resolve(sendMessageWrapper);\n remoteWindow.sendMessagePromise = ZalgoPromise.resolve(sendMessageWrapper);\n}\n\nexport function rejectRemoteSendMessage(win : CrossDomainWindowType, err : Error) {\n\n let remoteWindow = findRemoteWindow(win);\n\n if (!remoteWindow) {\n throw new Error(`Window not found on which to reject sendMessage`);\n }\n\n remoteWindow.sendMessagePromise.asyncReject(err);\n}\n\nexport function sendBridgeMessage(win : CrossDomainWindowType, message : string, domain : string) : ZalgoPromise {\n\n let messagingChild = isOpener(window, win);\n let messagingParent = isOpener(win, window);\n\n if (!messagingChild && !messagingParent) {\n throw new Error(`Can only send messages to and from parent and popup windows`);\n }\n\n let remoteWindow = findRemoteWindow(win);\n\n if (!remoteWindow) {\n throw new Error(`Window not found to send message to`);\n }\n\n return remoteWindow.sendMessagePromise.then(sendMessage => {\n return sendMessage(win, message, domain);\n });\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { isSameDomain, getOpener, getFrames, getDomain, getFrameByName, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONSTANTS } from '../conf';\nimport { weakMapMemoize, noop } from '../lib';\nimport { global } from '../global';\n\nimport { needsBridge, registerRemoteWindow, rejectRemoteSendMessage, registerRemoteSendMessage, getBridgeName } from './common';\n\nlet awaitRemoteBridgeForWindow = weakMapMemoize((win : CrossDomainWindowType) : ZalgoPromise => {\n return ZalgoPromise.try(() => {\n for (let frame of getFrames(win)) {\n try {\n // $FlowFixMe\n if (frame && frame !== window && isSameDomain(frame) && frame[CONSTANTS.WINDOW_PROPS.POSTROBOT]) {\n return frame;\n }\n\n } catch (err) {\n continue;\n }\n }\n\n try {\n let frame = getFrameByName(win, getBridgeName(getDomain()));\n\n if (!frame) {\n return;\n }\n\n // $FlowFixMe\n if (isSameDomain(frame) && frame[CONSTANTS.WINDOW_PROPS.POSTROBOT]) {\n return frame;\n }\n\n return new ZalgoPromise(resolve => {\n\n let interval;\n let timeout;\n\n interval = setInterval(() => {\n // $FlowFixMe\n if (frame && isSameDomain(frame) && frame[CONSTANTS.WINDOW_PROPS.POSTROBOT]) {\n clearInterval(interval);\n clearTimeout(timeout);\n return resolve(frame);\n }\n }, 100);\n\n timeout = setTimeout(() => {\n clearInterval(interval);\n return resolve();\n }, 2000);\n });\n\n } catch (err) {\n // pass\n }\n });\n});\n\nexport function openTunnelToOpener() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n const opener = getOpener(window);\n\n if (!opener) {\n return;\n }\n\n if (!needsBridge({ win: opener })) {\n return;\n }\n\n registerRemoteWindow(opener);\n\n return awaitRemoteBridgeForWindow(opener).then(bridge => {\n\n if (!bridge) {\n return rejectRemoteSendMessage(opener, new Error(`Can not register with opener: no bridge found in opener`));\n }\n\n if (!window.name) {\n return rejectRemoteSendMessage(opener, new Error(`Can not register with opener: window does not have a name`));\n }\n\n return bridge[CONSTANTS.WINDOW_PROPS.POSTROBOT].openTunnelToParent({\n\n name: window.name,\n\n source: window,\n\n canary() {\n // pass\n },\n\n sendMessage(message) {\n\n try {\n noop(window);\n } catch (err) {\n return;\n }\n\n if (!window || window.closed) {\n return;\n }\n\n try {\n global.receiveMessage({\n data: message,\n origin: this.origin,\n source: this.source\n });\n } catch (err) {\n ZalgoPromise.reject(err);\n }\n }\n\n }).then(({ source, origin, data }) => {\n\n if (source !== opener) {\n throw new Error(`Source does not match opener`);\n }\n\n registerRemoteSendMessage(source, origin, data.sendMessage);\n\n }).catch(err => {\n\n rejectRemoteSendMessage(opener, err);\n throw err;\n });\n });\n });\n}\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getDomain, getFrameByName, isWindowClosed, getDomainFromUrl, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONFIG, CONSTANTS } from '../conf';\nimport { onChildWindowReady } from '../lib';\nimport { global } from '../global';\n\nimport { getBridgeName, documentBodyReady, registerRemoteSendMessage, registerRemoteWindow } from './common';\n\nglobal.bridges = global.bridges || {};\nglobal.bridgeFrames = global.bridgeFrames || {};\n\nglobal.popupWindowsByWin = global.popupWindowsByWin || new WeakMap();\nglobal.popupWindowsByName = global.popupWindowsByName || {};\n\nfunction listenForRegister(source, domain) {\n global.on(CONSTANTS.POST_MESSAGE_NAMES.OPEN_TUNNEL, { window: source, domain }, ({ origin, data }) => {\n\n if (origin !== domain) {\n throw new Error(`Domain ${ domain } does not match origin ${ origin }`);\n }\n\n if (!data.name) {\n throw new Error(`Register window expected to be passed window name`);\n }\n\n if (!data.sendMessage) {\n throw new Error(`Register window expected to be passed sendMessage method`);\n }\n\n if (!global.popupWindowsByName[data.name]) {\n throw new Error(`Window with name ${ data.name } does not exist, or was not opened by this window`);\n }\n\n if (!global.popupWindowsByName[data.name].domain) {\n throw new Error(`We do not have a registered domain for window ${ data.name }`);\n }\n\n if (global.popupWindowsByName[data.name].domain !== origin) {\n throw new Error(`Message origin ${ origin } does not matched registered window origin ${ global.popupWindowsByName[data.name].domain }`);\n }\n\n registerRemoteSendMessage(global.popupWindowsByName[data.name].win, domain, data.sendMessage);\n\n return {\n sendMessage(message) {\n\n if (!window || window.closed) {\n return;\n }\n\n let winDetails = global.popupWindowsByName[data.name];\n\n if (!winDetails) {\n return;\n }\n\n try {\n global.receiveMessage({\n data: message,\n origin: winDetails.domain,\n source: winDetails.win\n });\n } catch (err) {\n ZalgoPromise.reject(err);\n }\n }\n };\n });\n}\n\nfunction openBridgeFrame(name : string, url : string) : HTMLIFrameElement {\n\n let iframe = document.createElement(`iframe`);\n\n iframe.setAttribute(`name`, name);\n iframe.setAttribute(`id`, name);\n\n iframe.setAttribute(`style`, `display: none; margin: 0; padding: 0; border: 0px none; overflow: hidden;`);\n iframe.setAttribute(`frameborder`, `0`);\n iframe.setAttribute(`border`, `0`);\n iframe.setAttribute(`scrolling`, `no`);\n iframe.setAttribute(`allowTransparency`, `true`);\n\n iframe.setAttribute(`tabindex`, `-1`);\n iframe.setAttribute(`hidden`, `true`);\n iframe.setAttribute(`title`, ``);\n iframe.setAttribute(`role`, `presentation`);\n\n iframe.src = url;\n\n return iframe;\n}\n\nexport function hasBridge(url : string, domain : string) : boolean {\n domain = domain || getDomainFromUrl(url);\n return Boolean(global.bridges[domain]);\n}\n\nexport function openBridge(url : string, domain : string) : ZalgoPromise {\n\n domain = domain || getDomainFromUrl(url);\n\n if (global.bridges[domain]) {\n return global.bridges[domain];\n }\n\n global.bridges[domain] = ZalgoPromise.try(() => {\n\n if (getDomain() === domain) {\n throw new Error(`Can not open bridge on the same domain as current domain: ${ domain }`);\n }\n\n let name = getBridgeName(domain);\n let frame = getFrameByName(window, name);\n\n if (frame) {\n throw new Error(`Frame with name ${ name } already exists on page`);\n }\n\n let iframe = openBridgeFrame(name, url);\n global.bridgeFrames[domain] = iframe;\n\n return documentBodyReady.then(body => {\n\n body.appendChild(iframe);\n\n let bridge = iframe.contentWindow;\n\n listenForRegister(bridge, domain);\n\n return new ZalgoPromise((resolve, reject) => {\n\n iframe.onload = resolve;\n iframe.onerror = reject;\n\n }).then(() => {\n\n return onChildWindowReady(bridge, CONFIG.BRIDGE_TIMEOUT, `Bridge ${ url }`);\n\n }).then(() => {\n\n return bridge;\n });\n });\n });\n\n return global.bridges[domain];\n}\n\nlet windowOpen = window.open;\n\nwindow.open = function windowOpenWrapper(url : string, name : string, options : string, last : mixed) : mixed {\n\n let domain = url;\n\n if (url && url.indexOf(CONSTANTS.MOCK_PROTOCOL) === 0) {\n [ domain, url ] = url.split('|');\n }\n\n if (domain) {\n domain = getDomainFromUrl(domain);\n }\n\n let win = windowOpen.call(this, url, name, options, last);\n\n if (!win) {\n return win;\n }\n\n if (url) {\n registerRemoteWindow(win);\n }\n\n for (let winName of Object.keys(global.popupWindowsByName)) {\n if (isWindowClosed(global.popupWindowsByName[winName].win)) {\n delete global.popupWindowsByName[winName];\n }\n }\n\n if (name && win) {\n let winOptions = global.popupWindowsByWin.get(win) ||\n global.popupWindowsByName[name] || {};\n\n winOptions.name = winOptions.name || name;\n winOptions.win = winOptions.win || win;\n winOptions.domain = winOptions.domain || domain;\n\n global.popupWindowsByWin.set(win, winOptions);\n global.popupWindowsByName[name] = winOptions;\n }\n\n return win;\n};\n\nexport function linkUrl(win : CrossDomainWindowType, url : string) {\n\n let winOptions = global.popupWindowsByWin.get(win);\n\n if (winOptions) {\n winOptions.domain = getDomainFromUrl(url);\n registerRemoteWindow(win);\n }\n}\n\nexport function destroyBridges() {\n for (let domain of Object.keys(global.bridgeFrames)) {\n let frame = global.bridgeFrames[domain];\n if (frame.parentNode) {\n frame.parentNode.removeChild(frame);\n }\n }\n global.bridgeFrames = {};\n global.bridges = {};\n}\n","/* @flow */\n\n// eslint-disable-next-line import/no-unassigned-import\nimport './bridge';\n\nexport * from './child';\nexport * from './common';\nexport * from './parent';\n","/* @flow */\n\nimport { info } from 'beaver-logger/client';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport type { CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { LANG_TO_DEFAULT_COUNTRY, LOCALE } from '../constants';\nimport type { LocaleType } from '../types';\nimport { config } from '../config';\n\nimport { memoize } from './util';\nimport { isDevice } from './device';\n\nfunction isDocumentReady() : boolean {\n return Boolean(document.body) && document.readyState === 'complete';\n}\n\nexport const documentReady : ZalgoPromise = new ZalgoPromise(resolve => {\n\n if (isDocumentReady()) {\n return resolve();\n }\n\n const interval = setInterval(() => {\n if (isDocumentReady()) {\n clearInterval(interval);\n return resolve();\n }\n }, 10);\n});\n\nexport const documentBody : ZalgoPromise = documentReady.then(() => {\n if (document.body) {\n return document.body;\n }\n\n throw new Error('Document ready but document.body not present');\n});\n\n\nexport function loadScript(src : string, timeout : number = 0, attrs : Object = {}) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n const script = document.createElement('script');\n\n script.addEventListener('load', () => {\n resolve();\n });\n\n // For Internet explorer 8 support\n script.onreadystatechange = function scriptOnReadyStateChange() {\n if (this.readyState === 'complete' || this.readyState === 'loaded') {\n resolve();\n }\n };\n\n const scriptLoadError = new Error('script_loading_error');\n\n script.addEventListener('error', () => {\n return reject(scriptLoadError);\n });\n\n if (timeout) {\n setTimeout(() => {\n return reject(new Error('script_loading_timed_out'));\n }, timeout);\n }\n\n for (const attr of Object.keys(attrs)) {\n script.setAttribute(attr, attrs[attr]);\n }\n\n script.setAttribute('src', src);\n\n const head = document.getElementsByTagName('head')[0];\n\n head.appendChild(script);\n });\n}\n\n\nexport function isNodeList(nodes : mixed) : boolean {\n\n const result = Object.prototype.toString.call(nodes);\n\n if (result === '[object HTMLCollection]' || result === '[object NodeList]') {\n return true;\n }\n\n return false;\n}\n\nexport function isElement(item : mixed) : boolean {\n return item instanceof HTMLElement;\n}\n\nexport function getElement(item : mixed) : ?HTMLElement {\n\n if (!item) {\n return;\n }\n\n if (item instanceof HTMLElement) {\n return item;\n }\n\n if (typeof item === 'string') {\n\n if (document.querySelector) {\n const result = document.querySelector(item);\n\n if (result) {\n return result;\n }\n }\n\n return document.getElementById(item);\n }\n}\n\nexport function getElements(collection : $ReadOnlyArray | NodeList | HTMLCollection | HTMLElement | string) : $ReadOnlyArray {\n\n if (!collection) {\n return [];\n }\n\n if (collection instanceof HTMLElement || typeof collection === 'string') {\n const element = getElement(collection);\n if (element) {\n return [ element ];\n }\n return [];\n }\n\n if (Array.isArray(collection) || collection instanceof NodeList || collection instanceof HTMLCollection) {\n const result = [];\n\n for (let i = 0; i < collection.length; i++) {\n const el = getElement(collection[i]);\n if (el) {\n result.push(el);\n }\n }\n\n return result;\n }\n\n return [];\n}\n\nexport function onDocumentReady(method : () => void) : ZalgoPromise {\n return documentReady.then(method);\n}\n\nexport const parseQuery = memoize((queryString : string) : Object => {\n\n const params = {};\n\n if (!queryString) {\n return params;\n }\n\n if (queryString.indexOf('=') === -1) {\n return params;\n }\n\n for (let pair of queryString.split('&')) {\n pair = pair.split('=');\n\n if (pair[0] && pair[1]) {\n params[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n }\n\n return params;\n});\n\n\nexport function getQueryParam(name : string) : string {\n return parseQuery(window.location.search.slice(1))[name];\n}\n\nexport function urlWillRedirectPage(url : string) : boolean {\n\n if (url.indexOf('#') === -1) {\n return true;\n }\n\n if (url.indexOf('#') === 0) {\n return false;\n }\n\n if (url.split('#')[0] === window.location.href.split('#')[0]) {\n return false;\n }\n\n return true;\n}\n\nexport function extendUrl(url : string, params : { [key : string] : string } = {}) : string {\n\n const hasHash = url.indexOf('#') > 0;\n\n let [ serverUrl, hash ] = url.split('#');\n\n if (hash && !serverUrl) {\n [ serverUrl, hash ] = [ `#${ hash }`, '' ];\n }\n\n const [ originalUrl, originalQueryString ] = serverUrl.split('?');\n\n if (originalQueryString) {\n const originalQuery = parseQuery(originalQueryString);\n\n for (const key in originalQuery) {\n if (!params.hasOwnProperty(key)) {\n params[key] = originalQuery[key];\n }\n }\n }\n\n const newQueryString = Object.keys(params).filter(key => key && params[key]).sort().map(key => {\n return `${ encodeURIComponent(key) }=${ encodeURIComponent(params[key]) }`;\n }).join('&');\n\n let newUrl = originalUrl;\n\n if (newQueryString) {\n newUrl = `${ newUrl }?${ newQueryString }`;\n }\n\n if (hasHash) {\n newUrl = `${ newUrl }#${ hash || '' }`;\n }\n\n return newUrl;\n}\n\nexport function redirect(win : CrossDomainWindowType = window, url : string) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n\n info(`redirect`, { url });\n\n setTimeout(() => {\n win.location = url;\n if (!urlWillRedirectPage(url)) {\n resolve();\n }\n }, 1);\n });\n}\n\nexport function hasMetaViewPort() : boolean {\n const meta = document.querySelector('meta[name=viewport]');\n\n if (isDevice() && window.screen.width < 660 && !meta) {\n return false;\n }\n\n return true;\n}\n\nexport function getBrowserLocales() : $ReadOnlyArray {\n const nav = window.navigator;\n\n const locales = nav.languages\n ? Array.prototype.slice.apply(nav.languages)\n : [];\n\n if (nav.language) {\n locales.push(nav.language);\n }\n\n if (nav.userLanguage) {\n locales.push(nav.userLanguage);\n }\n\n return locales;\n}\n\nexport function normalizeLocale(locale : string) : ?LocaleType {\n\n if (locale && locale.match(/^[a-z]{2}[-_][A-Z]{2}$/)) {\n const [ lang, country ] = locale.split(/[-_]/);\n if (LOCALE[country] && LOCALE[country].indexOf(lang) !== -1) {\n return { country, lang };\n }\n }\n}\n\nexport function normalizeLang(lang : string) : ?LocaleType {\n\n if (lang && lang.match(/^[a-z]{2}$/)) {\n if (LANG_TO_DEFAULT_COUNTRY[lang]) {\n return { country: LANG_TO_DEFAULT_COUNTRY[lang], lang };\n }\n }\n}\n\nexport const getBrowserLocale = memoize(() : LocaleType => {\n\n const locales = getBrowserLocales();\n\n for (const locale of locales) {\n let loc = normalizeLocale(locale);\n if (loc) {\n info('better_browser_locale_full');\n return loc;\n }\n\n loc = normalizeLang(locale);\n if (loc) {\n info('better_browser_locale_lang');\n return loc;\n }\n }\n\n return config.defaultLocale;\n});\n\nexport function isElementVisible(el : HTMLElement) : boolean {\n return Boolean(el.offsetWidth || el.offsetHeight || el.getClientRects().length);\n}\n\nexport const enablePerformance = memoize(() : boolean => {\n /* eslint-disable compat/compat */\n return Boolean(\n window.performance &&\n performance.now &&\n performance.timing &&\n performance.timing.connectEnd &&\n performance.timing.navigationStart &&\n (Math.abs(performance.now() - Date.now()) > 1000) &&\n (performance.now() - (performance.timing.connectEnd - performance.timing.navigationStart)) > 0\n );\n /* eslint-enable compat/compat */\n});\n\nexport function getPageRenderTime() : ZalgoPromise {\n return documentReady.then(() => {\n\n if (!enablePerformance()) {\n return;\n }\n\n const timing = window.performance.timing; // eslint-disable-line compat/compat\n\n if (timing.connectEnd && timing.domInteractive) {\n return timing.domInteractive - timing.connectEnd;\n }\n });\n}\n\nexport function getResourceLoadTime(url : string) : ?number {\n\n if (!enablePerformance()) {\n return;\n }\n\n if (!window.performance || typeof window.performance.getEntries !== 'function') { // eslint-disable-line compat/compat\n return;\n }\n\n const entries = window.performance.getEntries(); // eslint-disable-line compat/compat\n\n for (let i = 0; i < entries.length; i++) {\n const entry = entries[i];\n\n if (entry && entry.name === url && entry.duration && entry.duration >= 0 && entry.duration <= 60000) {\n return Math.floor(entry.duration);\n }\n }\n}\n\nexport function htmlEncode(html : string = '') : string {\n return html.toString()\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(/\\//g, '/');\n}\n","/* @flow */\n\nexport function PopupOpenError(message : string) {\n this.message = message;\n}\n\nPopupOpenError.prototype = Object.create(Error.prototype);\n\nexport function IntegrationError(message : string) {\n this.message = message;\n}\n\nIntegrationError.prototype = Object.create(Error.prototype);\n\nexport function RenderError(message : string) {\n this.message = message;\n}\n\nRenderError.prototype = Object.create(Error.prototype);\n","/* @flow */\n\nimport { getParent, isSameDomain } from 'cross-domain-utils/src';\n\nimport { config } from '../config';\n\nimport { supportsPopups } from './device';\n\nexport function allowIframe() : boolean {\n\n if (!supportsPopups()) {\n return true;\n }\n\n const parentWindow = getParent(window);\n if (parentWindow && isSameDomain(parentWindow)) {\n return true;\n }\n\n const parentComponentWindow = window.xchild && window.xchild.getParentComponentWindow();\n if (parentComponentWindow && isSameDomain(parentComponentWindow)) {\n return true;\n }\n\n if (__TEST__) {\n return true;\n }\n\n return false;\n}\n\n\nexport function isPayPalDomain() : boolean {\n return Boolean(`${ window.location.protocol }//${ window.location.host }`.match(config.paypal_domain_regex)) || window.mockDomain === 'mock://www.paypal.com';\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nexport type Braintree = {|\n client : {\n create : Function\n },\n paypalCheckout : {\n create : Function\n }\n|};\n\nexport type BraintreePayPalClient = {|\n createPayment : Function,\n tokenizePayment : Function\n|};\n\nexport function awaitBraintreeClient(braintree : Braintree, auth : string | ZalgoPromise) : ZalgoPromise {\n return ZalgoPromise.resolve(auth).then(authorization => {\n return braintree.client.create({ authorization });\n }).then(client => {\n return braintree.paypalCheckout.create({ client });\n });\n}\n\nconst SUPPORTED_REST_FIELDS = {\n intent: 1,\n transactions: [\n {\n amount: {\n total: 1,\n currency: 1\n }\n }\n ],\n payer: {\n external_selected_funding_instrument_type: 1,\n shipping_address: {\n line1: 1,\n line2: 1,\n city: 1,\n state: 1,\n postal_code: 1,\n country_code: 1,\n phone: 1,\n recipient_name: 1\n }\n },\n application_context: {\n brand_name: 1,\n shipping_preference: 1,\n landing_page: 1\n }\n};\n\nfunction validate(obj, supported, name) {\n\n const supportedKeys = Object.keys(supported);\n\n for (const key of Object.keys(obj)) {\n\n if (supportedKeys.indexOf(key) === -1) {\n throw new Error(`Unsupported REST key for Braintree: ${ name }.${ key }`);\n }\n\n if (typeof obj[key] === 'object') {\n validate(obj[key], supported[key], `${ name }.${ key }`);\n }\n }\n}\n\nexport function mapPaymentToBraintree(payment : Object) : Object {\n validate(payment, SUPPORTED_REST_FIELDS, 'payment');\n\n const btPayment = {};\n\n btPayment.intent = payment.intent || 'sale';\n btPayment.flow = 'checkout';\n btPayment.amount = payment.transactions[0].amount.total;\n btPayment.currency = payment.transactions[0].amount.currency;\n\n if (payment.payer) {\n if (payment.payer.external_selected_funding_instrument_type === 'CREDIT') {\n btPayment.offerCredit = true;\n }\n\n if (payment.payer.shipping_address) {\n btPayment.shippingAddressOverride = {\n line1: payment.payer.shipping_address.line1,\n line2: payment.payer.shipping_address.line2,\n city: payment.payer.shipping_address.city,\n state: payment.payer.shipping_address.state,\n postalCode: payment.payer.shipping_address.postal_code,\n countryCode: payment.payer.shipping_address.country_code,\n phone: payment.payer.shipping_address.phone,\n recipientName: payment.payer.shipping_address.recipient_name\n };\n }\n }\n\n if (payment.application_context) {\n btPayment.displayName = payment.application_context.brand_name;\n btPayment.landingPageType = payment.application_context.landing_page;\n\n if (payment.application_context) {\n if (payment.application_context.shipping_preference === 'NO_SHIPPING') {\n btPayment.enableShippingAddress = false;\n } else if (payment.application_context.shipping_preference === 'GET_FROM_FILE') {\n btPayment.enableShippingAddress = true;\n btPayment.shippingAddressEditable = true;\n } else if (payment.application_context.shipping_preference === 'SET_PROVIDED_ADDRESS') {\n btPayment.enableShippingAddress = true;\n btPayment.shippingAddressEditable = false;\n }\n }\n }\n\n return btPayment;\n}\n","/* @flow */\n\nexport * from './checkout';\nexport * from './braintree';\n// export * from './popupBridge';\n","/* @flow */\n\nexport * from './script';\nexport * from './react';\nexport * from './vue';\nexport * from './angular';\nexport * from './ember';\nexport * from './glimmer';\nexport * from './angular2';\n","/* @flow */\n\nimport { config } from '../config';\nimport { LOG_LEVEL } from '../constants';\n\nimport { getSessionID, getSessionState } from './session';\n\nconst BEACON_URL = config.loggerUrl;\nconst APP_NAME = 'checkoutjs';\n\nexport function beacon(event : string, payload : Object = {}) {\n try {\n\n payload.event = `ppxo_${ event }`;\n payload.version = __PAYPAL_CHECKOUT__.__MINOR_VERSION__;\n payload.host = window.location.host;\n payload.uid = getSessionID();\n payload.appName = APP_NAME;\n\n let query = [];\n\n for (const key in payload) {\n if (payload.hasOwnProperty(key)) {\n query.push(`${ encodeURIComponent(key) }=${ encodeURIComponent(payload[key]) }`);\n }\n }\n\n query = query.join('&');\n\n if (!__TEST__) {\n const beaconImage = new window.Image();\n beaconImage.src = `${ BEACON_URL }?${ query }`;\n }\n\n setTimeout(() => {\n if (config.logLevel === LOG_LEVEL.DEBUG) {\n if (window.console && window.console.log) {\n window.console.log('*', event, payload);\n }\n }\n }, 1);\n\n } catch (err) {\n // pass\n }\n}\n\nfunction isCheckpointUnique(name : string) : boolean {\n return getSessionState(state => {\n state.loggedBeacons = state.loggedBeacons || [];\n\n if (state.loggedBeacons.indexOf(name) === -1) {\n state.loggedBeacons.push(name);\n return true;\n }\n\n return false;\n });\n}\n\nexport function checkpoint(name : string, payload : Object = {}, options : Object = {}) : void {\n try {\n let checkpointName = name;\n\n if (options.version) {\n const version = __PAYPAL_CHECKOUT__.__MINOR_VERSION__.replace(/[^0-9]+/g, '_');\n checkpointName = `${ version }_${ checkpointName }`;\n }\n\n if (!isCheckpointUnique(checkpointName)) {\n return;\n }\n\n return beacon(checkpointName, payload);\n\n } catch (err) {\n\n // pass\n }\n}\n\n\nconst FPTI_URL = 'https://t.paypal.com/ts';\n\nfunction buildPayload() : Object {\n return {\n v: `checkout.js.${ __PAYPAL_CHECKOUT__.__MINOR_VERSION__ }`,\n t: Date.now(),\n g: new Date().getTimezoneOffset(),\n flnm: 'ec:hermes:',\n shir: 'main_ec_hermes_',\n pgrp: 'main:ec:hermes::incontext-merchant',\n page: 'main:ec:hermes::incontext-merchant',\n vers: 'member:hermes:',\n qual: 'incontext',\n tmpl: 'merchant:incontext'\n };\n}\n\nexport function fpti(payload : Object = {}) {\n\n let query = [];\n\n payload = { ...buildPayload(), ...payload };\n\n for (const key in payload) {\n if (payload.hasOwnProperty(key)) {\n query.push(`${ encodeURIComponent(key) }=${ encodeURIComponent(payload[key]) }`);\n }\n }\n\n query = query.join('&');\n\n try {\n const beaconImage = new window.Image();\n beaconImage.src = `${ FPTI_URL }?${ query }`;\n } catch (err) {\n // pass\n }\n}\n","/* @flow */\n/** @jsx jsxDom */\n\nconst checkoutComponentStyle = `\n\n body {\n width: 100%;\n height: 100%;\n overflow: hidden;\n position: fixed;\n top: 0;\n left: 0;\n margin: 0;\n }\n\n .spinner {\n height: 100%;\n width: 100%;\n position: absolute;\n z-index: 10\n }\n\n .spinner .spinWrap {\n width: 200px;\n height: 100px;\n position: absolute;\n top: 50%;\n left: 50%;\n margin-left: -100px;\n margin-top: -50px\n }\n\n .spinner .loader,\n .spinner .spinnerImage {\n height: 100px;\n width: 100px;\n position: absolute;\n top: 0;\n left: 50%;\n opacity: 1;\n filter: alpha(opacity=100)\n }\n\n .spinner .spinnerImage {\n margin: 28px 0 0 -25px;\n background: url(https://www.paypalobjects.com/images/checkout/hermes/icon_ot_spin_lock_skinny.png) no-repeat\n }\n\n .spinner .loader {\n margin: 0 0 0 -55px;\n background-color: transparent;\n -webkit-animation: rotation .7s infinite linear;\n -moz-animation: rotation .7s infinite linear;\n -o-animation: rotation .7s infinite linear;\n animation: rotation .7s infinite linear;\n border-left: 5px solid #cbcbca;\n border-right: 5px solid #cbcbca;\n border-bottom: 5px solid #cbcbca;\n border-top: 5px solid #2380be;\n border-radius: 100%\n }\n\n @-webkit-keyframes rotation {\n from {\n -webkit-transform: rotate(0deg)\n }\n to {\n -webkit-transform: rotate(359deg)\n }\n }\n @-moz-keyframes rotation {\n from {\n -moz-transform: rotate(0deg)\n }\n to {\n -moz-transform: rotate(359deg)\n }\n }\n @-o-keyframes rotation {\n from {\n -o-transform: rotate(0deg)\n }\n to {\n -o-transform: rotate(359deg)\n }\n }\n @keyframes rotation {\n from {\n transform: rotate(0deg)\n }\n to {\n transform: rotate(359deg)\n }\n }\n`;\n\nexport function componentTemplate({ jsxDom } : { jsxDom : Function }) : HTMLElement {\n\n return (\n \n \n PayPal\n \n \n \n

\n \n\n
\n

\n

\n

\n
\n \n \n );\n}\n","/* @flow */\n\nimport { CHECKOUT_OVERLAY_COLOR } from '../../../constants';\n\nexport function getContainerStyle({ id, tag, CONTEXT, CLASS, ANIMATION } : { id : string, tag : string, CONTEXT : Object, CLASS : Object, ANIMATION : Object }) : string {\n return `\n #${ id } {\n position: absolute;\n z-index: 2147483647;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n\n -webkit-transform: translate3d(0, 0, 0);\n -moz-transform: translate3d(0, 0, 0);\n -ms-transform: translate3d(0, 0, 0);\n -o-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.BLACK } {\n background-color: black;\n background-color: rgba(0, 0, 0, 0.75);\n\n background: -webkit-radial-gradient(50% 50%, ellipse closest-corner, rgba(0,0,0,1) 1%, rgba(0,0,0,0.75) 100%);\n background: -moz-radial-gradient(50% 50%, ellipse closest-corner, rgba(0,0,0,1) 1%, rgba(0,0,0,0.75) 100%);\n background: -ms-radial-gradient(50% 50%, ellipse closest-corner, rgba(0,0,0,1) 1%, rgba(0,0,0,0.75) 100%);\n background: radial-gradient(50% 50%, ellipse closest-corner, rgba(0,0,0,1) 1%, rgba(0,0,0,0.75) 100%);\n\n color: #fff;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.WHITE } {\n background-color: white;\n background-color: rgba(255, 255, 255, 0.4);\n\n background: -webkit-radial-gradient(50% 50%, ellipse closest-corner, rgba(255, 255, 255,1) 1%, rgba(255, 255, 255,0.4) 100%);\n background: -moz-radial-gradient(50% 50%, ellipse closest-corner, rgba(255, 255, 255,1) 1%, rgba(255, 255, 255,0.4) 100%);\n background: -ms-radial-gradient(50% 50%, ellipse closest-corner, rgba(255, 255, 255,1) 1%, rgba(255, 255, 255,0.4) 100%);\n background: radial-gradient(50% 50%, ellipse closest-corner, rgba(255, 255, 255,1) 1%, rgba(255, 255, 255,0.4) 100%);\n\n color: #333;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.BLACK } a {\n color: #fff;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.WHITE } a {\n color: #333;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.BLACK } .paypal-checkout-close:before,\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.BLACK } .paypal-checkout-close:after {\n background-color: #fff;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.WHITE } .paypal-checkout-close:before,\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.WHITE } .paypal-checkout-close:after {\n background-color: #111;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.POPUP } {\n cursor: pointer;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.POPUP } {\n cursor: pointer;\n }\n\n #${ id } a {\n text-decoration: none;\n }\n\n #${ id } .paypal-checkout-modal {\n font-family: \"HelveticaNeue\", \"HelveticaNeue-Light\", \"Helvetica Neue Light\", helvetica, arial, sans-serif;\n font-size: 14px;\n text-align: center;\n\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n -ms-box-sizing: border-box;\n box-sizing: border-box;\n max-width: 350px;\n top: 50%;\n left: 50%;\n position: absolute;\n transform: translateX(-50%) translateY(-50%);\n -webkit-transform: translateX(-50%) translateY(-50%);\n -moz-transform: translateX(-50%) translateY(-50%);\n -o-transform: translateX(-50%) translateY(-50%);\n -ms-transform: translateX(-50%) translateY(-50%);\n cursor: pointer;\n text-align: center;\n }\n\n #${ id }.${ tag }-loading .paypal-checkout-message, #${ id }.${ tag }-loading .paypal-checkout-continue {\n display: none;\n }\n\n .paypal-checkout-loader {\n display: none;\n }\n\n #${ id }.${ tag }-loading .paypal-checkout-loader {\n display: block;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-logo {\n cursor: pointer;\n margin-bottom: 30px;\n display: inline-block;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-logo img {\n height: 36px;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-logo img.paypal-checkout-logo-pp {\n margin-right: 10px;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-message {\n font-size: 15px;\n line-height: 1.5;\n padding: 10px 0;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-message, #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-continue {\n display: none;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-continue {\n font-size: 15px;\n line-height: 1.35;\n padding: 10px 0;\n font-weight: bold;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-continue a {\n border-bottom: 1px solid currentColor;\n }\n\n #${ id } .paypal-checkout-close {\n position: absolute;\n right: 16px;\n top: 16px;\n width: 16px;\n height: 16px;\n opacity: 0.6;\n }\n\n #${ id }.${ tag }-loading .paypal-checkout-close {\n display: none;\n }\n\n #${ id } .paypal-checkout-close:hover {\n opacity: 1;\n }\n\n #${ id } .paypal-checkout-close:before, .paypal-checkout-close:after {\n position: absolute;\n left: 8px;\n content: ' ';\n height: 16px;\n width: 2px;\n }\n\n #${ id } .paypal-checkout-close:before {\n transform: rotate(45deg);\n -webkit-transform: rotate(45deg);\n -moz-transform: rotate(45deg);\n -o-transform: rotate(45deg);\n -ms-transform: rotate(45deg);\n }\n\n #${ id } .paypal-checkout-close:after {\n transform: rotate(-45deg);\n -webkit-transform: rotate(-45deg);\n -moz-transform: rotate(-45deg);\n -o-transform: rotate(-45deg);\n -ms-transform: rotate(-45deg);\n }\n\n #${ id } .paypal-checkout-iframe-container {\n display: none;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container,\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container > .${ CLASS.OUTLET },\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container > .${ CLASS.OUTLET } > iframe {\n max-height: calc(95vh - 60px);\n max-width: 95vw;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container {\n\n display: block;\n\n position: absolute;\n\n top: 50%;\n left: 50%;\n\n min-width: 450px;\n\n transform: translate(-50%, -50%);\n -webkit-transform: translate(-50%, -50%);\n -moz-transform: translate(-50%, -50%);\n -o-transform: translate(-50%, -50%);\n -ms-transform: translate(-50%, -50%);\n\n transform: translate3d(-50%, -50%, 0);\n -webkit-transform: translate3d(-50%, -50%, 0);\n -moz-transform: translate3d(-50%, -50%, 0);\n -o-transform: translate3d(-50%, -50%, 0);\n -ms-transform: translate3d(-50%, -50%, 0);\n\n border-radius: 10px;\n overflow: hidden;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } {\n\n position: relative;\n\n -webkit-transition: all 0.3s ease;\n -moz-transition: all 0.3s ease;\n -ms-transition: all 0.3s ease;\n -o-transition: all 0.3 ease;\n transition: all 0.3s ease;\n\n -webkit-animation-duration: 0.3s;\n animation-duration: 0.3s;\n -webkit-animation-fill-mode: both;\n animation-fill-mode: both;\n\n min-width: 450px;\n max-width: 450px;\n width: 450px;\n height: 535px;\n\n background-color: white;\n\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe {\n position: absolute;\n top: 0;\n left: 0;\n transition: opacity .4s ease-in-out;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe.${ CLASS.COMPONENT_FRAME } {\n z-index: 100;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe.${ CLASS.PRERENDER_FRAME } {\n z-index: 200;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe.${ CLASS.VISIBLE } {\n opacity: 1;\n z-index: 200;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe.${ CLASS.INVISIBLE } {\n opacity: 0;\n z-index: 100;\n }\n\n @media screen and (-ms-high-contrast: active) {\n #${ id } .paypal-checkout-close {\n opacity: 1;\n }\n\n #${ id } .paypal-checkout-close:before , .paypal-checkout-close:after {\n background-color: currentColor;\n }\n }\n\n @media screen and (max-width: 470px) {\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container,\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } {\n min-width: 100%;\n min-width: calc(100% - 20px);\n min-width: -webkit-calc(100% - 20px);\n min-width: -moz-calc(100% - 20px);\n min-width: -o-calc(100% - 20px);\n min-width: -ms-calc(100% - 20px);\n\n max-width: 100%;\n max-width: calc(100% - 20px);\n max-width: -webkit-calc(100% - 20px);\n max-width: -moz-calc(100% - 20px);\n max-width: -o-calc(100% - 20px);\n max-width: -ms-calc(100% - 20px);\n }\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } iframe {\n width: 1px;\n min-width: 100%;\n height: 100%;\n }\n\n @-webkit-keyframes ${ ANIMATION.SHOW_COMPONENT } {\n from {\n opacity: 0;\n transform: scale3d(.3, .3, .3);\n -webkit-transform: scale3d(.3, .3, .3);\n }\n\n to {\n opacity: 1;\n transform: scale3d(1, 1, 1);\n -webkit-transform: scale3d(1, 1, 1);\n }\n }\n\n @keyframes ${ ANIMATION.SHOW_COMPONENT } {\n from {\n opacity: 0;\n transform: scale3d(.3, .3, .3);\n -webkit-transform: scale3d(.3, .3, .3);\n }\n\n to {\n opacity: 1;\n transform: scale3d(1, 1, 1);\n -webkit-transform: scale3d(1, 1, 1);\n }\n }\n\n @-webkit-keyframes ${ ANIMATION.HIDE_COMPONENT } {\n from {\n transform: scale3d(1, 1, 1);\n -webkit-transform: scale3d(1, 1, 1);\n }\n\n to {\n opacity: 0;\n transform: scale3d(.3, .3, .3);\n -webkit-transform: scale3d(.3, .3, .3);\n }\n }\n\n @keyframes ${ ANIMATION.HIDE_COMPONENT } {\n from {\n transform: scale3d(1, 1, 1);\n -webkit-transform: scale3d(1, 1, 1);\n }\n\n to {\n opacity: 0;\n transform: scale3d(.3, .3, .3);\n -webkit-transform: scale3d(.3, .3, .3);\n }\n }\n\n .paypal-spinner {\n height: 30px;\n width: 30px;\n display: inline-block;\n box-sizing: content-box;\n opacity: 1;\n filter: alpha(opacity=100);\n -webkit-animation: rotation .7s infinite linear;\n -moz-animation: rotation .7s infinite linear;\n -o-animation: rotation .7s infinite linear;\n animation: rotation .7s infinite linear;\n border-left: 8px solid rgba(0, 0, 0, .2);\n border-right: 8px solid rgba(0, 0, 0, .2);\n border-bottom: 8px solid rgba(0, 0, 0, .2);\n border-top: 8px solid #fff;\n border-radius: 100%\n }\n\n @-webkit-keyframes rotation {\n from {\n -webkit-transform: rotate(0deg)\n }\n to {\n -webkit-transform: rotate(359deg)\n }\n }\n @-moz-keyframes rotation {\n from {\n -moz-transform: rotate(0deg)\n }\n to {\n -moz-transform: rotate(359deg)\n }\n }\n @-o-keyframes rotation {\n from {\n -o-transform: rotate(0deg)\n }\n to {\n -o-transform: rotate(359deg)\n }\n }\n @keyframes rotation {\n from {\n transform: rotate(0deg)\n }\n to {\n transform: rotate(359deg)\n }\n }\n `;\n}\n","/* @flow */\n\nexport function getSandboxStyle({ id, ANIMATION } : { id : string, ANIMATION : Object }) : string {\n return `\n #${ id }.paypal-checkout-sandbox {\n display: block;\n position: fixed;\n top: 0;\n left: 0;\n\n width: 100%;\n height: 100%;\n width: 100vw;\n height: 100vh;\n max-width: 100%;\n max-height: 100%;\n min-width: 100%;\n min-height: 100%;\n\n z-index: 2147483647;\n\n -webkit-animation-duration: 1s;\n animation-duration: 1s;\n\n animation-fill-mode:forwards;\n animation-iteration-count: 1;\n\n -webkit-animation-fill-mode:forwards;\n -webkit-animation-iteration-count: 1;\n }\n\n #${ id }.paypal-checkout-sandbox .paypal-checkout-sandbox-iframe {\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n }\n\n @-webkit-keyframes ${ ANIMATION.SHOW_CONTAINER } {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n }\n\n @keyframes ${ ANIMATION.SHOW_CONTAINER } {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n }\n\n @-webkit-keyframes ${ ANIMATION.HIDE_CONTAINER } {\n from {\n opacity: 1;\n }\n\n 50% {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n }\n\n @keyframes ${ ANIMATION.HIDE_CONTAINER } {\n from {\n opacity: 1;\n }\n\n 50% {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n }\n `;\n}\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { base64encode } from 'belter/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { fundingLogos } from '../../resources';\nimport { BUTTON_LOGO_COLOR, CHECKOUT_OVERLAY_COLOR } from '../../constants';\nimport { isIos } from '../../lib';\n\nimport { containerContent } from './containerContent';\nimport { getContainerStyle } from './containerStyle';\nimport { getSandboxStyle } from './sandboxStyle';\n\nconst LOGO_COLOR = {\n [ CHECKOUT_OVERLAY_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ CHECKOUT_OVERLAY_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n};\n\nexport {\n getContainerStyle,\n getSandboxStyle\n};\n\n// eslint-disable-next-line flowtype/require-exact-type\nexport type ContainerTemplateOptions = {\n id : string,\n props : Object,\n CLASS : Object,\n ANIMATION : Object,\n CONTEXT : Object,\n EVENT : Object,\n dimensions : {\n width : number,\n height : number\n },\n actions : Object,\n tag : string,\n context : string,\n outlet : HTMLElement,\n on : Function,\n jsxDom : Function\n};\n\nexport function containerTemplate({ id, props, CLASS, ANIMATION, CONTEXT, EVENT, on, tag, context, actions, outlet, jsxDom } : ContainerTemplateOptions) : HTMLElement {\n\n const [ lang, country ] = props.locale.split('_');\n\n const content = containerContent[country][lang];\n\n function close(event) {\n event.preventDefault();\n event.stopPropagation();\n actions.close();\n }\n\n function focus(event) {\n event.preventDefault();\n event.stopPropagation();\n\n if (isIos()) {\n // eslint-disable-next-line no-alert\n window.alert('Please switch tabs to reactivate the PayPal window');\n } else {\n ZalgoPromise.try(actions.focus).catch(actions.close);\n }\n }\n\n const style = props.style || {};\n const overlayColor = style.overlayColor || CHECKOUT_OVERLAY_COLOR.BLACK;\n const logoColor = LOGO_COLOR[overlayColor];\n\n const ppLogo = (typeof fundingLogos.pp === 'function')\n ? fundingLogos.pp({ logoColor })\n : fundingLogos.pp[logoColor];\n\n const paypalLogo = (typeof fundingLogos.paypal === 'function')\n ? fundingLogos.paypal({ logoColor })\n : fundingLogos.paypal[logoColor];\n\n const el = (\n
\n \n
\n
\n \n \n
\n
\n {content.windowMessage}\n
\n
\n
\n
\n
\n
\n\n
\n {outlet}\n
\n\n \n
\n );\n\n const container = (\n \n \n { el }\n \n \n );\n\n on(EVENT.CLOSE, () => {\n el.className += ` ${ tag }-loading`;\n });\n\n return (\n
\n \n\n \n
\n );\n}\n","/* @flow */\n\nexport * from './componentTemplate';\nexport * from './containerTemplate';\n","/* @flow */\n\nimport { config } from '../config';\nimport { FUNDING, PAYMENT_TYPE } from '../constants';\n\nexport function determineParameterFromToken(token : string) : string {\n return (token && token.indexOf('BA-') === 0) ? 'ba_token' : 'token';\n}\n\nexport function getPaymentType(payment : string) : string {\n if (payment.indexOf('BA-') === 0) {\n return PAYMENT_TYPE.BA_TOKEN;\n } else if (payment.indexOf('PAY-') === 0 || payment.indexOf('PAYID-') === 0) {\n return PAYMENT_TYPE.PAY_ID;\n } else if (payment.indexOf('EC-') === 0) {\n return PAYMENT_TYPE.EC_TOKEN;\n }\n\n return PAYMENT_TYPE.EC_TOKEN;\n}\n\nexport function determineUrl(env : string, fundingSource : ?string, payment : string) : string {\n\n const paymentType = getPaymentType(payment);\n\n if (paymentType === PAYMENT_TYPE.BA_TOKEN) {\n return config.billingUrls[env];\n }\n\n if (fundingSource === FUNDING.CARD || fundingSource === FUNDING.ELV) {\n return config.guestUrls[env];\n }\n\n if (fundingSource === FUNDING.IDEAL || fundingSource === FUNDING.BANCONTACT || fundingSource === FUNDING.GIROPAY ||\n fundingSource === FUNDING.SOFORT || fundingSource === FUNDING.EPS || fundingSource === FUNDING.MYBANK ||\n fundingSource === FUNDING.P24 || fundingSource === FUNDING.PAYU || fundingSource === FUNDING.VERKKOPANKKI ||\n fundingSource === FUNDING.BLIK || fundingSource === FUNDING.TRUSTLY || fundingSource === FUNDING.MAXIMA ||\n fundingSource === FUNDING.BOLETO || fundingSource === FUNDING.OXXO) {\n return config.altpayUrls[env];\n }\n\n return config.checkoutUrls[env];\n}\n","/* @flow */\n\nexport function extendNamespace(xports : Object, namespaces : $ReadOnlyArray = [], childnamespaces : $ReadOnlyArray = []) : Object {\n\n for (const name of namespaces) {\n const namespace = window[name];\n\n if (!namespace) {\n continue;\n }\n\n for (const childname of childnamespaces) {\n let childnamespace = xports[childname];\n\n if (namespace[childname]) {\n childnamespace = { ...namespace[childname], ...childnamespace };\n }\n\n xports = { ...namespace, ...xports, [ childname ]: childnamespace };\n }\n }\n\n for (const name of namespaces) {\n window[name] = xports;\n }\n\n return xports;\n}\n","/* @flow */\n/* eslint max-lines: off */\n\nexport const containerContent = {\n 'AT': {\n 'de': {\n 'windowMessage': 'Sie sehen das sichere Browserfenster von PayPal nicht? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ZW': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ZM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ZA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'YT': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'YE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'WS': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'WF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'VU': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'VG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'VE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'VC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'VA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'UY': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'UG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TV': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'TT': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'TO': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'TN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'TM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'TD': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'TC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'SZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SV': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'ST': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SR': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'SO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'SM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SL': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SH': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'SB': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'SA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'RW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'RS': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'RE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'QA': {\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PY': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'PW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'PN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'PM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'PF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'PA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'OM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'NU': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'NR': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'NP': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'NI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'NG': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'NE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'NC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MV': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'MU': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MT': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MS': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'MR': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MQ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MN': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'ML': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'MK': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MH': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'MG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ME': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MD': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MC': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'MA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'LS': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'LK': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'LI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'LC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'LA': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'KZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'KY': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'KW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'KN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'KM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'KI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'KH': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'KG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'KE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'JO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'JM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'IS': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'HR': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'HN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'GY': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'GW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GT': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'GP': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'GM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GL': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'da': {\n 'windowMessage': 'Kan du ikke se PayPals sikre browser? Vi hj\\u00E6lper dig med at genstarte vinduet, s\\u00E5 du kan betale.',\n 'continue': 'Forts\\u00E6t'\n }\n },\n 'GI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GD': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'GA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'FO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'da': {\n 'windowMessage': 'Kan du ikke se PayPals sikre browser? Vi hj\\u00E6lper dig med at genstarte vinduet, s\\u00E5 du kan betale.',\n 'continue': 'Forts\\u00E6t'\n }\n },\n 'FM': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'FK': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'FJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'ET': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ER': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'EG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'EC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'DZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'DO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'DM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'DJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'CY': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CV': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CR': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'CO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'CM': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'CL': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'CK': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CI': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'CG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CD': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'BZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'BY': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BT': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'BS': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'BO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'BN': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'BM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'BJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'BI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'BH': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'BG': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'BB': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'BA': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'AO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'AM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AL': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'AG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'AE': {\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AD': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n }\n },\n 'GB': {\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 PayPal\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\'ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AR': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'US': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Click to Continue'\n }\n },\n 'VN': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment. ',\n 'continue': 'Continue'\n }\n },\n 'UA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TW': {\n 'zh': {\n 'windowMessage': '\\u770B\\u4E0D\\u5230\\u5B89\\u5168\\u9023\\u7DDA\\u7684 PayPal \\u700F\\u89BD\\u5668\\uFF1F\\u6211\\u5011\\u5C07\\u6703\\u91CD\\u65B0\\u555F\\u52D5\\u8996\\u7A97\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002\\u00A0 ',\n 'continue': '\\u7E7C\\u7E8C'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TR': {\n 'tr': {\n 'windowMessage': 'G\\u00FCvenli PayPal taray\\u0131c\\u0131s\\u0131n\\u0131 g\\u00F6rm\\u00FCyor musunuz? Al\\u0131\\u015Fveri\\u015Finizi tamamlamak i\\u00E7in pencereyi yeniden ba\\u015Flatman\\u0131za yard\\u0131mc\\u0131 olaca\\u011F\\u0131z.\\u00A0 ',\n 'continue': 'Devam'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TH': {\n 'th': {\n 'windowMessage': '\\u0E16\\u0E49\\u0E32\\u0E04\\u0E38\\u0E13\\u0E44\\u0E21\\u0E48\\u0E40\\u0E2B\\u0E47\\u0E19\\u0E40\\u0E1A\\u0E23\\u0E32\\u0E27\\u0E4C\\u0E40\\u0E0B\\u0E2D\\u0E23\\u0E4C\\u0E17\\u0E35\\u0E48\\u0E21\\u0E35\\u0E23\\u0E30\\u0E1A\\u0E1A\\u0E04\\u0E27\\u0E32\\u0E21\\u0E1B\\u0E25\\u0E2D\\u0E14\\u0E20\\u0E31\\u0E22\\u0E02\\u0E2D\\u0E07 PayPal \\u0E40\\u0E23\\u0E32\\u0E08\\u0E30\\u0E0A\\u0E48\\u0E27\\u0E22\\u0E04\\u0E38\\u0E13\\u0E40\\u0E1B\\u0E34\\u0E14\\u0E2B\\u0E19\\u0E49\\u0E32\\u0E15\\u0E48\\u0E32\\u0E07\\u0E2D\\u0E35\\u0E01\\u0E04\\u0E23\\u0E31\\u0E49\\u0E07\\u0E40\\u0E1E\\u0E37\\u0E48\\u0E2D\\u0E0A\\u0E33\\u0E23\\u0E30\\u0E40\\u0E07\\u0E34\\u0E19\\u0E43\\u0E2B\\u0E49\\u0E40\\u0E23\\u0E35\\u0E22\\u0E1A\\u0E23\\u0E49\\u0E2D\\u0E22 ',\n 'continue': '\\u0E14\\u0E33\\u0E40\\u0E19\\u0E34\\u0E19\\u0E01\\u0E32\\u0E23\\u0E15\\u0E48\\u0E2D'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SK': {\n 'sk': {\n 'windowMessage': 'Nezobrazuje sa v\\u00e1m zabezpe\\u010den\\u00fd prehliada\\u010d PayPal? Pom\\u00f4\\u017eeme v\\u00e1m znova otvori\\u0165 okno, aby ste mohli n\\u00e1kup dokon\\u010di\\u0165.\\u00A0 ',\n 'continue': 'Pokra\\u010dova\\u0165'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SG': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SE': {\n 'sv': {\n 'windowMessage': 'Ser du inte den s\\u00E4kra PayPal-webbl\\u00E4saren? Vi hj\\u00E4lper dig att starta om f\\u00F6nstret f\\u00F6r att slutf\\u00F6ra ditt k\\u00F6p. ',\n 'continue': 'Forts\\u00E4tt'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'RU': {\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'RO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PT': {\n 'pt': {\n 'windowMessage': 'N\\u00E3o v\\u00EA a indica\\u00E7\\u00E3o de sess\\u00E3o segura PayPal no browser? Vamos ajudar a reabrir a janela para que possa concluir a sua compra.',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PL': {\n 'pl': {\n 'windowMessage': 'Nie widzisz bezpiecznej przegl\\u0105darki PayPal? Pomo\\u017Cemy Ci ponownie uruchomi\\u0107 to okno w celu dokonania zakupu.\\u00A0 ',\n 'continue': 'Kontynuuj'\n },\n 'en': {\n 'windowMessage': 'You don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PH': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre paiement.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Le ayudaremos a abrir de nuevo la ventana para completar su pago.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NO': {\n 'no': {\n 'windowMessage': 'Ser du ikke den sikre PayPal-nettleseren? Vi hjelper deg med \\u00E5 starte vinduet p\\u00E5 nytt s\\u00E5 du kan fullf\\u00F8re kj\\u00F8pet.\\u00A0 ',\n 'continue': 'Fortsett'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NL': {\n 'nl': {\n 'windowMessage': 'Ziet u geen beveiligde PayPal-browser? We helpen u het venster opnieuw te openen om uw aankoop te voltooien.\\u00A0 ',\n 'continue': 'Doorgaan'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MY': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MX': {\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'LV': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'LU': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'de': {\n 'windowMessage': 'Das PayPal-Fenster wird nicht angezeigt? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n }\n },\n 'LT': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'KR': {\n 'ko': {\n 'windowMessage': '\\uBCF4\\uC548 PayPal \\uBE0C\\uB77C\\uC6B0\\uC800\\uAC00 \\uBCF4\\uC774\\uC9C0 \\uC54A\\uC73C\\uC2E0\\uAC00\\uC694? \\uCC3D\\uC744 \\uB2E4\\uC2DC \\uC2E4\\uD589\\uD558\\uC5EC \\uACB0\\uC81C\\uB97C \\uC644\\uB8CC\\uD560 \\uC218 \\uC788\\uB3C4\\uB85D \\uB3C4\\uC640\\uB4DC\\uB9AC\\uACA0\\uC2B5\\uB2C8\\uB2E4.\\u00A0 ',\n 'continue': '\\uACC4\\uC18D'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'JP': {\n 'ja': {\n 'windowMessage': '\\u30BB\\u30AD\\u30E5\\u30A2\\u306A\\u30D6\\u30E9\\u30A6\\u30B6\\u304C\\u8868\\u793A\\u3055\\u308C\\u306A\\u3044\\u5834\\u5408\\u306F\\u3001\\u30A6\\u30A3\\u30F3\\u30C9\\u30A6\\u3092\\u518D\\u8D77\\u52D5\\u3057\\u3066\\u3001\\u652F\\u6255\\u3044\\u3092\\u5B8C\\u4E86\\u3067\\u304D\\u308B\\u3088\\u3046\\u304A\\u624B\\u4F1D\\u3044\\u3044\\u305F\\u3057\\u307E\\u3059\\u3002',\n 'continue': '\\u7D9A\\u884C'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment. ',\n 'continue': 'Continue'\n }\n },\n 'IT': {\n 'it': {\n 'windowMessage': 'Non vedi la pagina sicura di PayPal? Ti aiuteremo a riaprire la finestra per completare l\\'acquisto.\\u00A0 ',\n 'continue': 'Continua'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'IN': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'IL': {\n 'he': {\n 'windowMessage': '\\u05DC\\u05D0 \\u05E8\\u05D5\\u05D0\\u05D4 \\u05D0\\u05EA \\u05D3\\u05E4\\u05D3\\u05E4\\u05DF PayPal \\u05D4\\u05DE\\u05D0\\u05D5\\u05D1\\u05D8\\u05D7? \\u05E0\\u05E2\\u05D6\\u05D5\\u05E8 \\u05DC\\u05DA \\u05DC\\u05E4\\u05EA\\u05D5\\u05D7 \\u05DE\\u05D7\\u05D3\\u05E9 \\u05D0\\u05EA \\u05D4\\u05D7\\u05DC\\u05D5\\u05DF \\u05DB\\u05D3\\u05D9 \\u05DC\\u05D4\\u05E9\\u05DC\\u05D9\\u05DD \\u05D0\\u05EA \\u05D4\\u05E7\\u05E0\\u05D9\\u05D9\\u05D4 \\u05E9\\u05DC\\u05DA.\\u00A0 ',\n 'continue': '\\u05D4\\u05DE\\u05E9\\u05DA'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'IE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'HU': {\n 'hu': {\n 'windowMessage': 'Nem l\\u00e1tja a biztons\\u00e1gos PayPal-b\\u00f6ng\\u00e9sz\\u0151t? Seg\\u00edt\\u00fcnk \\u00fajra bet\\u00f6lteni az ablakot, hogy befejezhesse a v\\u00e1s\\u00e1rl\\u00e1st.\\u00A0 ',\n 'continue': 'Folytat\\u00e1s'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ID': {\n 'id': {\n 'windowMessage': 'Browser PayPal yang aman tidak terlihat? Kami akan membantu menampilkan ulang jendela untuk menyelesaikan pembayaran Anda.\\u00A0 ',\n 'continue': 'Lanjutkan'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'HK': {\n 'zh': {\n 'windowMessage': '\\u770B\\u4E0D\\u5230\\u5B89\\u5168\\u7684 PayPal \\u700F\\u89BD\\u5668\\u8996\\u7A97\\uFF1F\\u6211\\u5011\\u6703\\u52A9\\u4F60\\u91CD\\u65B0\\u958B\\u555F\\u8996\\u7A97\\uFF0C\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002',\n 'continue': '\\u7E7C\\u7E8C'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GROUP-LATAM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'GROUP-EMEA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'pt': {\n 'windowMessage': 'N\\u00E3o v\\u00EA a indica\\u00E7\\u00E3o de sess\\u00E3o segura PayPal no browser? Vamos ajudar a reabrir a janela para que possa concluir a sua compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'de': {\n 'windowMessage': 'Sie sehen das sichere Browserfenster von PayPal nicht? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n },\n 'da': {\n 'windowMessage': 'Kan du ikke se PayPals sikre browser? Vi hj\\u00E6lper dig med at genstarte vinduet, s\\u00E5 du kan betale.',\n 'continue': 'Forts\\u00E6t'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'GROUP-APAC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ko': {\n 'windowMessage': '\\uBCF4\\uC548 PayPal \\uBE0C\\uB77C\\uC6B0\\uC800\\uAC00 \\uBCF4\\uC774\\uC9C0 \\uC54A\\uC73C\\uC2E0\\uAC00\\uC694? \\uCC3D\\uC744 \\uB2E4\\uC2DC \\uC2E4\\uD589\\uD558\\uC5EC \\uAD6C\\uB9E4\\uB97C \\uC644\\uB8CC\\uD560 \\uC218 \\uC788\\uB3C4\\uB85D \\uB3C4\\uC640\\uB4DC\\uB9AC\\uACA0\\uC2B5\\uB2C8\\uB2E4. ',\n 'continue': '\\uACC4\\uC18D'\n },\n 'id': {\n 'windowMessage': 'Browser PayPal yang aman tidak terlihat? Kami akan membantu menampilkan ulang jendela untuk menyelesaikan pembelian Anda. ',\n 'continue': 'Lanjutkan'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'GR': {\n 'el': {\n 'windowMessage': '\\u0394\\u03b5\\u03bd \\u03b2\\u03bb\\u03ad\\u03c0\\u03b5\\u03c4\\u03b5 \\u03c4\\u03bf \\u03b1\\u03c3\\u03c6\\u03b1\\u03bb\\u03ad\\u03c2 \\u03c0\\u03c1\\u03cc\\u03b3\\u03c1\\u03b1\\u03bc\\u03bc\\u03b1 \\u03c0\\u03b5\\u03c1\\u03b9\\u03ae\\u03b3\\u03b7\\u03c3\\u03b7\\u03c2 PayPal; \\u0398\\u03b1 \\u03c3\\u03b1\\u03c2 \\u03b2\\u03bf\\u03b7\\u03b8\\u03ae\\u03c3\\u03bf\\u03c5\\u03bc\\u03b5 \\u03bd\\u03b1 \\u03b5\\u03c0\\u03b1\\u03bd\\u03b5\\u03ba\\u03ba\\u03b9\\u03bd\\u03ae\\u03c3\\u03b5\\u03c4\\u03b5 \\u03c4\\u03bf \\u03c0\\u03b1\\u03c1\\u03ac\\u03b8\\u03c5\\u03c1\\u03bf \\u03b3\\u03b9\\u03b1 \\u03bd\\u03b1 \\u03bf\\u03bb\\u03bf\\u03ba\\u03bb\\u03b7\\u03c1\\u03ce\\u03c3\\u03b5\\u03c4\\u03b5 \\u03c4\\u03b7\\u03bd \\u03b1\\u03b3\\u03bf\\u03c1\\u03ac \\u03c3\\u03b1\\u03c2.\\u00A0 ',\n 'continue': '\\u03a3\\u03c5\\u03bd\\u03ad\\u03c7\\u03b5\\u03b9\\u03b1'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'FR': {\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 PayPal\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ES': {\n 'es': {\n 'windowMessage': '\\u00BFNo ve el s\\u00EDmbolo de navegaci\\u00F3n segura de PayPal? Le ayudaremos a abrir de nuevo la ventana para completar la compra. ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'FI': {\n 'fi': {\n 'windowMessage': 'Eik\\u00f6 suojattua PayPal-selainta n\\u00e4y? Autamme avaamaan ikkunan uudelleen oston viimeistely\\u00e4 varten.\\u00A0 ',\n 'continue': 'Jatka'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'EE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'DK': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'da': {\n 'windowMessage': 'Kan du ikke se PayPals sikre browser? Vi hj\\u00E6lper dig med at genstarte vinduet, s\\u00E5 du kan betale.',\n 'continue': 'Forts\\u00E6t'\n }\n },\n 'CZ': {\n 'cs': {\n 'windowMessage': 'Nezobrazuje se v\\u00e1m bezpe\\u010dn\\u00fd prohl\\u00ed\\u017ee\\u010d PayPal? Pom\\u016f\\u017eeme v\\u00e1m okno znovu otev\\u0159\\u00edt, abyste mohli n\\u00e1kup dokon\\u010dit.',\n 'continue': 'Pokra\\u010dovat'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'DE': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'de': {\n 'windowMessage': 'Sie sehen das sichere Browserfenster von PayPal nicht? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n }\n },\n 'CH': {\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 PayPal\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'de': {\n 'windowMessage': 'Sie sehen das sichere Browserfenster von PayPal nicht? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n }\n },\n 'CA': {\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 de PayPal\\u00A0? Nous vous aiderons \\u00E0 relancer la fen\\u00EAtre afin d\\'effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you relaunch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'C2': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BE': {\n 'nl': {\n 'windowMessage': 'Ziet u de beveiligde PayPal-browser niet? We helpen u het venster opnieuw te openen om uw aankoop te voltooien.\\u00A0 ',\n 'continue': 'Doorgaan'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 PayPal\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BR': {\n 'pt': {\n 'windowMessage': 'N\\u00E3o est\\u00E1 vendo o navegador seguro do PayPal? Ajudaremos voc\\u00EA a reabrir a janela para concluir a compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AU': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\'ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n }\n};\n","/*\n * [hi-base32]{@link https://github.com/emn178/hi-base32}\n *\n * @version 0.5.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var root = typeof window === 'object' ? window : {};\n var NODE_JS = !root.HI_BASE32_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n }\n var COMMON_JS = !root.HI_BASE32_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var BASE32_ENCODE_CHAR = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'.split('');\n var BASE32_DECODE_CHAR = {\n 'A': 0, 'B': 1, 'C': 2, 'D': 3, 'E': 4, 'F': 5, 'G': 6, 'H': 7, 'I': 8,\n 'J': 9, 'K': 10, 'L': 11, 'M': 12, 'N': 13, 'O': 14, 'P': 15, 'Q': 16,\n 'R': 17, 'S': 18, 'T': 19, 'U': 20, 'V': 21, 'W': 22, 'X': 23, 'Y': 24,\n 'Z': 25, '2': 26, '3': 27, '4': 28, '5': 29, '6': 30, '7': 31\n };\n\n var blocks = [0, 0, 0, 0, 0, 0, 0, 0];\n\n var throwInvalidUtf8 = function (position, partial) {\n if (partial.length > 10) {\n partial = '...' + partial.substr(-10);\n }\n var err = new Error('Decoded data is not valid UTF-8.'\n + ' Maybe try base32.decode.asBytes()?'\n + ' Partial data after reading ' + position + ' bytes: ' + partial + ' <-');\n err.position = position;\n throw err;\n };\n\n var toUtf8String = function (bytes) {\n var str = '', length = bytes.length, i = 0, followingChars = 0, b, c;\n while (i < length) {\n b = bytes[i++];\n if (b <= 0x7F) {\n str += String.fromCharCode(b);\n continue;\n } else if (b > 0xBF && b <= 0xDF) {\n c = b & 0x1F;\n followingChars = 1;\n } else if (b <= 0xEF) {\n c = b & 0x0F;\n followingChars = 2;\n } else if (b <= 0xF7) {\n c = b & 0x07;\n followingChars = 3;\n } else {\n throwInvalidUtf8(i, str);\n }\n\n for (var j = 0; j < followingChars; ++j) {\n b = bytes[i++];\n if (b < 0x80 || b > 0xBF) {\n throwInvalidUtf8(i, str);\n }\n c <<= 6;\n c += b & 0x3F;\n }\n if (c >= 0xD800 && c <= 0xDFFF) {\n throwInvalidUtf8(i, str);\n }\n if (c > 0x10FFFF) {\n throwInvalidUtf8(i, str);\n }\n\n if (c <= 0xFFFF) {\n str += String.fromCharCode(c);\n } else {\n c -= 0x10000;\n str += String.fromCharCode((c >> 10) + 0xD800);\n str += String.fromCharCode((c & 0x3FF) + 0xDC00);\n }\n }\n return str;\n };\n\n var decodeAsBytes = function (base32Str) {\n if (!/^[A-Z2-7=]+$/.test(base32Str)) {\n throw new Error('Invalid base32 characters');\n }\n base32Str = base32Str.replace(/=/g, '');\n var v1, v2, v3, v4, v5, v6, v7, v8, bytes = [], index = 0, length = base32Str.length;\n\n // 4 char to 3 bytes\n for (var i = 0, count = length >> 3 << 3; i < count;) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v8 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255;\n bytes[index++] = (v4 << 4 | v5 >>> 1) & 255;\n bytes[index++] = (v5 << 7 | v6 << 2 | v7 >>> 3) & 255;\n bytes[index++] = (v7 << 5 | v8) & 255;\n }\n\n // remain bytes\n var remain = length - count;\n if (remain === 2) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n } else if (remain === 4) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255;\n } else if (remain === 5) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255;\n bytes[index++] = (v4 << 4 | v5 >>> 1) & 255;\n } else if (remain === 7) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255;\n bytes[index++] = (v4 << 4 | v5 >>> 1) & 255;\n bytes[index++] = (v5 << 7 | v6 << 2 | v7 >>> 3) & 255;\n }\n return bytes;\n };\n\n var encodeAscii = function (str) {\n var v1, v2, v3, v4, v5, base32Str = '', length = str.length;\n for (var i = 0, count = parseInt(length / 5) * 5; i < count;) {\n v1 = str.charCodeAt(i++);\n v2 = str.charCodeAt(i++);\n v3 = str.charCodeAt(i++);\n v4 = str.charCodeAt(i++);\n v5 = str.charCodeAt(i++);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3 | v5 >>> 5) & 31] +\n BASE32_ENCODE_CHAR[v5 & 31];\n }\n\n // remain char\n var remain = length - count;\n if (remain === 1) {\n v1 = str.charCodeAt(i);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2) & 31] +\n '======';\n } else if (remain === 2) {\n v1 = str.charCodeAt(i++);\n v2 = str.charCodeAt(i);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4) & 31] +\n '====';\n } else if (remain === 3) {\n v1 = str.charCodeAt(i++);\n v2 = str.charCodeAt(i++);\n v3 = str.charCodeAt(i);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1) & 31] +\n '===';\n } else if (remain === 4) {\n v1 = str.charCodeAt(i++);\n v2 = str.charCodeAt(i++);\n v3 = str.charCodeAt(i++);\n v4 = str.charCodeAt(i);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3) & 31] +\n '=';\n }\n return base32Str;\n };\n\n var encodeUtf8 = function (str) {\n var v1, v2, v3, v4, v5, code, end = false, base32Str = '',\n index = 0, i, start = 0, bytes = 0, length = str.length;\n do {\n blocks[0] = blocks[5];\n blocks[1] = blocks[6];\n blocks[2] = blocks[7];\n for (i = start; index < length && i < 5; ++index) {\n code = str.charCodeAt(index);\n if (code < 0x80) {\n blocks[i++] = code;\n } else if (code < 0x800) {\n blocks[i++] = 0xc0 | (code >> 6);\n blocks[i++] = 0x80 | (code & 0x3f);\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i++] = 0xe0 | (code >> 12);\n blocks[i++] = 0x80 | ((code >> 6) & 0x3f);\n blocks[i++] = 0x80 | (code & 0x3f);\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++index) & 0x3ff));\n blocks[i++] = 0xf0 | (code >> 18);\n blocks[i++] = 0x80 | ((code >> 12) & 0x3f);\n blocks[i++] = 0x80 | ((code >> 6) & 0x3f);\n blocks[i++] = 0x80 | (code & 0x3f);\n }\n }\n bytes += i - start;\n start = i - 5;\n if (index === length) {\n ++index;\n }\n if (index > length && i < 6) {\n end = true;\n }\n v1 = blocks[0];\n if (i > 4) {\n v2 = blocks[1];\n v3 = blocks[2];\n v4 = blocks[3];\n v5 = blocks[4];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3 | v5 >>> 5) & 31] +\n BASE32_ENCODE_CHAR[v5 & 31];\n } else if (i === 1) {\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2) & 31] +\n '======';\n } else if (i === 2) {\n v2 = blocks[1];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4) & 31] +\n '====';\n } else if (i === 3) {\n v2 = blocks[1];\n v3 = blocks[2];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1) & 31] +\n '===';\n } else {\n v2 = blocks[1];\n v3 = blocks[2];\n v4 = blocks[3];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3) & 31] +\n '=';\n }\n } while (!end);\n return base32Str;\n };\n\n var encodeBytes = function (bytes) {\n var v1, v2, v3, v4, v5, base32Str = '', length = bytes.length;\n for (var i = 0, count = parseInt(length / 5) * 5; i < count;) {\n v1 = bytes[i++];\n v2 = bytes[i++];\n v3 = bytes[i++];\n v4 = bytes[i++];\n v5 = bytes[i++];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3 | v5 >>> 5) & 31] +\n BASE32_ENCODE_CHAR[v5 & 31];\n }\n\n // remain char\n var remain = length - count;\n if (remain === 1) {\n v1 = bytes[i];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2) & 31] +\n '======';\n } else if (remain === 2) {\n v1 = bytes[i++];\n v2 = bytes[i];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4) & 31] +\n '====';\n } else if (remain === 3) {\n v1 = bytes[i++];\n v2 = bytes[i++];\n v3 = bytes[i];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1) & 31] +\n '===';\n } else if (remain === 4) {\n v1 = bytes[i++];\n v2 = bytes[i++];\n v3 = bytes[i++];\n v4 = bytes[i];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3) & 31] +\n '=';\n }\n return base32Str;\n };\n\n var encode = function (input, asciiOnly) {\n var notString = typeof(input) !== 'string';\n if (notString && input.constructor === ArrayBuffer) {\n input = new Uint8Array(input);\n }\n if (notString) {\n return encodeBytes(input);\n } else if (asciiOnly) {\n return encodeAscii(input);\n } else {\n return encodeUtf8(input);\n }\n };\n\n var decode = function (base32Str, asciiOnly) {\n if (!asciiOnly) {\n return toUtf8String(decodeAsBytes(base32Str));\n }\n if (!/^[A-Z2-7=]+$/.test(base32Str)) {\n throw new Error('Invalid base32 characters');\n }\n var v1, v2, v3, v4, v5, v6, v7, v8, str = '', length = base32Str.indexOf('=');\n if (length === -1) {\n length = base32Str.length;\n }\n\n // 8 char to 5 bytes\n for (var i = 0, count = length >> 3 << 3; i < count;) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v8 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255) +\n String.fromCharCode((v2 << 6 | v3 << 1 | v4 >>> 4) & 255) +\n String.fromCharCode((v4 << 4 | v5 >>> 1) & 255) +\n String.fromCharCode((v5 << 7 | v6 << 2 | v7 >>> 3) & 255) +\n String.fromCharCode((v7 << 5 | v8) & 255);\n }\n\n // remain bytes\n var remain = length - count;\n if (remain === 2) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255);\n } else if (remain === 4) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255) +\n String.fromCharCode((v2 << 6 | v3 << 1 | v4 >>> 4) & 255);\n } else if (remain === 5) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255) +\n String.fromCharCode((v2 << 6 | v3 << 1 | v4 >>> 4) & 255) +\n String.fromCharCode((v4 << 4 | v5 >>> 1) & 255);\n } else if (remain === 7) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255) +\n String.fromCharCode((v2 << 6 | v3 << 1 | v4 >>> 4) & 255) +\n String.fromCharCode((v4 << 4 | v5 >>> 1) & 255) +\n String.fromCharCode((v5 << 7 | v6 << 2 | v7 >>> 3) & 255);\n }\n return str;\n };\n\n var exports = {\n encode: encode,\n decode: decode\n };\n decode.asBytes = decodeAsBytes;\n\n if (COMMON_JS) {\n module.exports = exports;\n } else {\n root.base32 = exports;\n if (AMD) {\n define(function() {\n return exports;\n });\n }\n }\n})();\n","/* @flow */\n\nimport type { Component, ComponentDriverType } from '../component/component';\n\nexport let script : ComponentDriverType<*, Document> = {\n\n global() : ?Document {\n return window.document;\n },\n\n register(component : Component<*>, document : Document) {\n\n function render(element : HTMLElement) {\n\n if (!element || !element.tagName || element.tagName.toLowerCase() !== 'script') {\n return;\n }\n\n // $FlowFixMe\n if (!element.attributes.type || element.attributes.type.value !== 'application/x-component' || !element.parentNode) {\n return;\n }\n\n let tag = element.getAttribute('data-component');\n\n if (!tag || tag !== component.tag) {\n return;\n }\n\n component.log(`instantiate_script_component`);\n\n let props : { [string] : mixed } = element.innerText\n ? eval(`(${ element.innerText })`) // eslint-disable-line no-eval, security/detect-eval-with-expression\n : {};\n\n let container = document.createElement('div');\n\n if (!element.parentNode) {\n throw new Error(`Element has no parent`);\n }\n\n element.parentNode.replaceChild(container, element);\n\n // $FlowFixMe\n component.render(props, container);\n }\n\n function scan() {\n let scriptTags = Array.prototype.slice.call(document.getElementsByTagName('script'));\n\n for (let element of scriptTags) {\n render(element);\n }\n }\n\n scan();\n document.addEventListener('DOMContentLoaded', scan);\n window.addEventListener('load', scan);\n\n document.addEventListener('DOMNodeInserted', event => {\n // $FlowFixMe\n render(event.target);\n });\n }\n};\n","/* @flow */\n\nimport { extend } from '../lib';\nimport type { Component, ComponentDriverType } from '../component/component';\n\ndeclare class ReactClassType {\n\n}\n\ntype ReactElementType = {\n\n};\n\ntype ReactType = {\n createClass : ({ render : ReactElementType, componentDidMount : () => void, componentDidUpdate : () => void }) => (typeof ReactClassType),\n createElement : (string, ?{ [string] : mixed }, ...children : Array) => ReactElementType\n};\n\ntype ReactDomType = {\n findDOMNode : (ReactElementType) => HTMLElement\n};\n\ntype ReactLibraryType = { React : ReactType, ReactDOM : ReactDomType };\n\nexport let react : ComponentDriverType<*, ReactLibraryType> = {\n\n global() : ?ReactLibraryType {\n if (window.React && window.ReactDOM) {\n return {\n React: window.React,\n ReactDOM: window.ReactDOM\n };\n }\n },\n\n register(component : Component<*>, { React, ReactDOM } : ReactLibraryType) : (typeof ReactClassType) {\n\n if (React.createClass) {\n\n // $FlowFixMe\n component.react = React.createClass({\n\n render() : ReactElementType {\n return React.createElement('div', null);\n },\n\n componentDidMount() {\n component.log(`instantiate_react_component`);\n\n let el = ReactDOM.findDOMNode(this);\n\n let parent = component.init(extend({}, this.props), null, el);\n\n this.setState({ parent });\n\n parent.render(el);\n },\n\n componentDidUpdate() {\n\n if (this.state && this.state.parent) {\n this.state.parent.updateProps(extend({}, this.props));\n }\n },\n\n componentWillUnmount() {\n if (this.state && this.state.parent) {\n this.state.parent.destroy();\n }\n }\n });\n } else {\n // $FlowFixMe\n component.react = class extends React.Component {\n render() : ReactElementType {\n return React.createElement('div', null);\n }\n\n componentDidMount() {\n component.log(`instantiate_react_component`);\n\n let el = ReactDOM.findDOMNode(this);\n\n let parent = component.init(extend({}, this.props), null, el);\n\n this.setState({ parent });\n\n parent.render(el);\n }\n\n componentDidUpdate() {\n\n if (this.state && this.state.parent) {\n this.state.parent.updateProps(extend({}, this.props));\n }\n }\n\n componentWillUnmount() {\n if (this.state && this.state.parent) {\n this.state.parent.destroy();\n }\n }\n };\n }\n\n return component.react;\n }\n};\n","/* @flow */\n\nimport type { Component, ComponentDriverType } from '../component/component';\nimport { extend } from '../lib';\n\ntype VueComponent = {\n render : (Function) => Element,\n inheritAttrs : boolean,\n mounted : () => void,\n beforeUpdate : () => void\n};\n\nexport let vue : ComponentDriverType<*, void> = {\n\n global() {\n // pass\n },\n\n register

(component : Component

) : VueComponent {\n\n return {\n render(createElement) : Element {\n return createElement('div');\n },\n\n inheritAttrs: false,\n\n mounted() {\n let el = this.$el;\n\n // $FlowFixMe\n this.parent = component.init(extend({}, this.$attrs), null, el);\n\n this.parent.render(el);\n },\n\n beforeUpdate() {\n \n if (this.parent && this.$attrs) {\n this.parent.updateProps(extend({}, this.$attrs));\n }\n }\n };\n }\n};\n","/* @flow */\n\nimport { dasherizeToCamel, replaceObject } from '../lib';\nimport type { Component, ComponentDriverType } from '../component/component';\n\ntype AngularModule = {\n directive : (string, () => {\n scope : { [string] : '=' | '@' },\n restrict : string,\n controller : Array\n }) => AngularModule\n};\n\ntype Angular = {\n module : (string, Array) => AngularModule\n};\n\nexport let angular : ComponentDriverType<*, Angular> = {\n\n global() : ?Angular {\n return window.angular;\n },\n\n register(component : Component<*>, ng : Angular) : AngularModule {\n\n let module = ng.module(component.tag, []).directive(dasherizeToCamel(component.tag), () => {\n\n let scope = {};\n\n for (let key of component.getPropNames()) {\n scope[key] = '=';\n }\n\n if (component.looseProps) {\n scope.props = '=';\n }\n\n return {\n scope,\n\n restrict: 'E',\n\n controller: [ '$scope', '$element', ($scope, $element) => {\n\n if (component.looseProps && !$scope.props) {\n throw new Error(`For angular bindings to work, prop definitions must be passed to zoid.create`);\n }\n\n component.log(`instantiate_angular_component`);\n\n function safeApply() {\n if ($scope.$root.$$phase !== '$apply' && $scope.$root.$$phase !== '$digest') {\n try {\n $scope.$apply();\n } catch (err) {\n // pass\n }\n }\n }\n\n let getProps = () => {\n\n let scopeProps;\n\n if ($scope.props) {\n scopeProps = $scope.props;\n } else {\n scopeProps = {};\n for (let key of Object.keys(scope)) {\n if ($scope[key] !== undefined) {\n scopeProps[key] = $scope[key];\n }\n }\n }\n\n scopeProps = replaceObject(scopeProps, {\n 'function': (value) => {\n return function angularWrapped() : mixed {\n let result = value.apply(this, arguments);\n safeApply();\n return result;\n };\n }\n });\n\n return scopeProps;\n };\n\n let parent = component.init(getProps(), null, $element[0]);\n parent.render($element[0]);\n\n $scope.$watch(() => {\n parent.updateProps(getProps());\n });\n } ]\n };\n });\n\n return module;\n }\n};\n","/* @flow */\n\nimport type { Component, ComponentDriverType } from '../component/component';\n\ndeclare class GlimmerComponentType {\n element : HTMLElement,\n args : Object\n}\n\nexport let glimmer : ComponentDriverType<*, (typeof GlimmerComponentType)> = {\n\n global() {\n // pass\n },\n\n register(component : Component<*>, GlimmerComponent : (typeof GlimmerComponentType)) : (typeof GlimmerComponentType) {\n return class extends GlimmerComponent {\n didInsertElement() {\n component.render({ ...this.args }, this.element);\n }\n };\n }\n};\n","/* @flow */\n/* eslint new-cap: 0 */\n\nimport { replaceObject } from '../lib';\nimport type { Component, ComponentDriverType } from '../component/component';\n\ntype Angular2Injection = {};\n\ntype Angular2Component = {};\n\ntype Angular2Module = {};\n\ntype Angular2 = {\n Component : ({ selector : string, template : string, inputs : Array }) => {\n Class : ({ constructor : Array, ngOnInit : () => void, ngOnChanges : () => void }) => Angular2Component\n },\n NgModule : ({ declarations : Array, exports : Array }) => {\n Class : ({ constructor : () => void }) => Angular2Module\n },\n ElementRef : Angular2Injection,\n NgZone : Angular2Injection\n};\n\n\nexport let angular2 : ComponentDriverType<*, Angular2> = {\n\n global() {\n // pass\n },\n\n register(zoid : Component<*>, { Component : AngularComponent, NgModule, ElementRef, NgZone }) : Angular2Module {\n\n zoid.log('initializing angular2 component');\n\n let getProps = (component) => {\n return replaceObject({ ...component.internalProps, ...component.props }, {\n 'function': (value) => {\n if (typeof value === 'function') {\n return function angular2Wrapped() : void {\n return component.zone.run(() => value.apply(this, arguments));\n };\n }\n }\n });\n };\n\n const ComponentInstance =\n AngularComponent({\n selector: zoid.tag,\n template: '

',\n inputs: [ 'props' ]\n }).Class({\n constructor: [ ElementRef, NgZone, function angularConstructor(elementRef, zone) {\n this.elementRef = elementRef;\n this.zone = zone;\n } ],\n ngOnInit () {\n const targetElement = this.elementRef.nativeElement;\n const parent = zoid.init(getProps(this), null, targetElement);\n parent.render(targetElement);\n this.parent = parent;\n },\n ngOnChanges() {\n if (this.parent) {\n this.parent.updateProps(getProps(this));\n }\n }\n });\n\n\n const ModuleInstance = NgModule({\n declarations: [ ComponentInstance ],\n exports: [ ComponentInstance ]\n }).Class({\n constructor () {\n // pass\n }\n });\n\n return ModuleInstance;\n }\n};\n","/*!\n * Bowser - a browser detector\n * https://github.com/ded/bowser\n * MIT License | (c) Dustin Diaz 2015\n */\n!function(e,t,n){typeof module!=\"undefined\"&&module.exports?module.exports=n():typeof define==\"function\"&&define.amd?define(t,n):e[t]=n()}(this,\"bowser\",function(){function t(t){function n(e){var n=t.match(e);return n&&n.length>1&&n[1]||\"\"}function r(e){var n=t.match(e);return n&&n.length>1&&n[2]||\"\"}function C(e){switch(e){case\"NT\":return\"NT\";case\"XP\":return\"XP\";case\"NT 5.0\":return\"2000\";case\"NT 5.1\":return\"XP\";case\"NT 5.2\":return\"2003\";case\"NT 6.0\":return\"Vista\";case\"NT 6.1\":return\"7\";case\"NT 6.2\":return\"8\";case\"NT 6.3\":return\"8.1\";case\"NT 10.0\":return\"10\";default:return undefined}}var i=n(/(ipod|iphone|ipad)/i).toLowerCase(),o=/like android/i.test(t),u=!o&&/android/i.test(t),a=/nexus\\s*[0-6]\\s*/i.test(t),f=!a&&/nexus\\s*[0-9]+/i.test(t),l=/CrOS/.test(t),c=/silk/i.test(t),h=/sailfish/i.test(t),p=/tizen/i.test(t),d=/(web|hpw)(o|0)s/i.test(t),v=/windows phone/i.test(t),m=/SamsungBrowser/i.test(t),g=!v&&/windows/i.test(t),y=!i&&!c&&/macintosh/i.test(t),b=!u&&!h&&!p&&!d&&/linux/i.test(t),w=r(/edg([ea]|ios)\\/(\\d+(\\.\\d+)?)/i),E=n(/version\\/(\\d+(\\.\\d+)?)/i),S=/tablet/i.test(t)&&!/tablet pc/i.test(t),x=!S&&/[^-]mobi/i.test(t),T=/xbox/i.test(t),N;/opera/i.test(t)?N={name:\"Opera\",opera:e,version:E||n(/(?:opera|opr|opios)[\\s\\/](\\d+(\\.\\d+)?)/i)}:/opr\\/|opios/i.test(t)?N={name:\"Opera\",opera:e,version:n(/(?:opr|opios)[\\s\\/](\\d+(\\.\\d+)?)/i)||E}:/SamsungBrowser/i.test(t)?N={name:\"Samsung Internet for Android\",samsungBrowser:e,version:E||n(/(?:SamsungBrowser)[\\s\\/](\\d+(\\.\\d+)?)/i)}:/Whale/i.test(t)?N={name:\"NAVER Whale browser\",whale:e,version:n(/(?:whale)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/MZBrowser/i.test(t)?N={name:\"MZ Browser\",mzbrowser:e,version:n(/(?:MZBrowser)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/coast/i.test(t)?N={name:\"Opera Coast\",coast:e,version:E||n(/(?:coast)[\\s\\/](\\d+(\\.\\d+)?)/i)}:/focus/i.test(t)?N={name:\"Focus\",focus:e,version:n(/(?:focus)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/yabrowser/i.test(t)?N={name:\"Yandex Browser\",yandexbrowser:e,version:E||n(/(?:yabrowser)[\\s\\/](\\d+(\\.\\d+)?)/i)}:/ucbrowser/i.test(t)?N={name:\"UC Browser\",ucbrowser:e,version:n(/(?:ucbrowser)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/mxios/i.test(t)?N={name:\"Maxthon\",maxthon:e,version:n(/(?:mxios)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/epiphany/i.test(t)?N={name:\"Epiphany\",epiphany:e,version:n(/(?:epiphany)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/puffin/i.test(t)?N={name:\"Puffin\",puffin:e,version:n(/(?:puffin)[\\s\\/](\\d+(?:\\.\\d+)?)/i)}:/sleipnir/i.test(t)?N={name:\"Sleipnir\",sleipnir:e,version:n(/(?:sleipnir)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/k-meleon/i.test(t)?N={name:\"K-Meleon\",kMeleon:e,version:n(/(?:k-meleon)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:v?(N={name:\"Windows Phone\",osname:\"Windows Phone\",windowsphone:e},w?(N.msedge=e,N.version=w):(N.msie=e,N.version=n(/iemobile\\/(\\d+(\\.\\d+)?)/i))):/msie|trident/i.test(t)?N={name:\"Internet Explorer\",msie:e,version:n(/(?:msie |rv:)(\\d+(\\.\\d+)?)/i)}:l?N={name:\"Chrome\",osname:\"Chrome OS\",chromeos:e,chromeBook:e,chrome:e,version:n(/(?:chrome|crios|crmo)\\/(\\d+(\\.\\d+)?)/i)}:/edg([ea]|ios)/i.test(t)?N={name:\"Microsoft Edge\",msedge:e,version:w}:/vivaldi/i.test(t)?N={name:\"Vivaldi\",vivaldi:e,version:n(/vivaldi\\/(\\d+(\\.\\d+)?)/i)||E}:h?N={name:\"Sailfish\",osname:\"Sailfish OS\",sailfish:e,version:n(/sailfish\\s?browser\\/(\\d+(\\.\\d+)?)/i)}:/seamonkey\\//i.test(t)?N={name:\"SeaMonkey\",seamonkey:e,version:n(/seamonkey\\/(\\d+(\\.\\d+)?)/i)}:/firefox|iceweasel|fxios/i.test(t)?(N={name:\"Firefox\",firefox:e,version:n(/(?:firefox|iceweasel|fxios)[ \\/](\\d+(\\.\\d+)?)/i)},/\\((mobile|tablet);[^\\)]*rv:[\\d\\.]+\\)/i.test(t)&&(N.firefoxos=e,N.osname=\"Firefox OS\")):c?N={name:\"Amazon Silk\",silk:e,version:n(/silk\\/(\\d+(\\.\\d+)?)/i)}:/phantom/i.test(t)?N={name:\"PhantomJS\",phantom:e,version:n(/phantomjs\\/(\\d+(\\.\\d+)?)/i)}:/slimerjs/i.test(t)?N={name:\"SlimerJS\",slimer:e,version:n(/slimerjs\\/(\\d+(\\.\\d+)?)/i)}:/blackberry|\\bbb\\d+/i.test(t)||/rim\\stablet/i.test(t)?N={name:\"BlackBerry\",osname:\"BlackBerry OS\",blackberry:e,version:E||n(/blackberry[\\d]+\\/(\\d+(\\.\\d+)?)/i)}:d?(N={name:\"WebOS\",osname:\"WebOS\",webos:e,version:E||n(/w(?:eb)?osbrowser\\/(\\d+(\\.\\d+)?)/i)},/touchpad\\//i.test(t)&&(N.touchpad=e)):/bada/i.test(t)?N={name:\"Bada\",osname:\"Bada\",bada:e,version:n(/dolfin\\/(\\d+(\\.\\d+)?)/i)}:p?N={name:\"Tizen\",osname:\"Tizen\",tizen:e,version:n(/(?:tizen\\s?)?browser\\/(\\d+(\\.\\d+)?)/i)||E}:/qupzilla/i.test(t)?N={name:\"QupZilla\",qupzilla:e,version:n(/(?:qupzilla)[\\s\\/](\\d+(?:\\.\\d+)+)/i)||E}:/chromium/i.test(t)?N={name:\"Chromium\",chromium:e,version:n(/(?:chromium)[\\s\\/](\\d+(?:\\.\\d+)?)/i)||E}:/chrome|crios|crmo/i.test(t)?N={name:\"Chrome\",chrome:e,version:n(/(?:chrome|crios|crmo)\\/(\\d+(\\.\\d+)?)/i)}:u?N={name:\"Android\",version:E}:/safari|applewebkit/i.test(t)?(N={name:\"Safari\",safari:e},E&&(N.version=E)):i?(N={name:i==\"iphone\"?\"iPhone\":i==\"ipad\"?\"iPad\":\"iPod\"},E&&(N.version=E)):/googlebot/i.test(t)?N={name:\"Googlebot\",googlebot:e,version:n(/googlebot\\/(\\d+(\\.\\d+))/i)||E}:N={name:n(/^(.*)\\/(.*) /),version:r(/^(.*)\\/(.*) /)},!N.msedge&&/(apple)?webkit/i.test(t)?(/(apple)?webkit\\/537\\.36/i.test(t)?(N.name=N.name||\"Blink\",N.blink=e):(N.name=N.name||\"Webkit\",N.webkit=e),!N.version&&E&&(N.version=E)):!N.opera&&/gecko\\//i.test(t)&&(N.name=N.name||\"Gecko\",N.gecko=e,N.version=N.version||n(/gecko\\/(\\d+(\\.\\d+)?)/i)),!N.windowsphone&&(u||N.silk)?(N.android=e,N.osname=\"Android\"):!N.windowsphone&&i?(N[i]=e,N.ios=e,N.osname=\"iOS\"):y?(N.mac=e,N.osname=\"macOS\"):T?(N.xbox=e,N.osname=\"Xbox\"):g?(N.windows=e,N.osname=\"Windows\"):b&&(N.linux=e,N.osname=\"Linux\");var k=\"\";N.windows?k=C(n(/Windows ((NT|XP)( \\d\\d?.\\d)?)/i)):N.windowsphone?k=n(/windows phone (?:os)?\\s?(\\d+(\\.\\d+)*)/i):N.mac?(k=n(/Mac OS X (\\d+([_\\.\\s]\\d+)*)/i),k=k.replace(/[_\\s]/g,\".\")):i?(k=n(/os (\\d+([_\\s]\\d+)*) like mac os x/i),k=k.replace(/[_\\s]/g,\".\")):u?k=n(/android[ \\/-](\\d+(\\.\\d+)*)/i):N.webos?k=n(/(?:web|hpw)os\\/(\\d+(\\.\\d+)*)/i):N.blackberry?k=n(/rim\\stablet\\sos\\s(\\d+(\\.\\d+)*)/i):N.bada?k=n(/bada\\/(\\d+(\\.\\d+)*)/i):N.tizen&&(k=n(/tizen[\\/\\s](\\d+(\\.\\d+)*)/i)),k&&(N.osversion=k);var L=!N.windows&&k.split(\".\")[0];if(S||f||i==\"ipad\"||u&&(L==3||L>=4&&!x)||N.silk)N.tablet=e;else if(x||i==\"iphone\"||i==\"ipod\"||u||a||N.blackberry||N.webos||N.bada)N.mobile=e;return N.msedge||N.msie&&N.version>=10||N.yandexbrowser&&N.version>=15||N.vivaldi&&N.version>=1||N.chrome&&N.version>=20||N.samsungBrowser&&N.version>=4||N.whale&&s([N.version,\"1.0\"])===1||N.mzbrowser&&s([N.version,\"6.0\"])===1||N.focus&&s([N.version,\"1.0\"])===1||N.firefox&&N.version>=20||N.safari&&N.version>=6||N.opera&&N.version>=10||N.ios&&N.osversion&&N.osversion.split(\".\")[0]>=6||N.blackberry&&N.version>=10.1||N.chromium&&N.version>=20?N.a=e:N.msie&&N.version<10||N.chrome&&N.version<20||N.firefox&&N.version<20||N.safari&&N.version<6||N.opera&&N.version<10||N.ios&&N.osversion&&N.osversion.split(\".\")[0]<6||N.chromium&&N.version<20?N.c=e:N.x=e,N}function r(e){return e.split(\".\").length}function i(e,t){var n=[],r;if(Array.prototype.map)return Array.prototype.map.call(e,t);for(r=0;r=0){if(n[0][t]>n[1][t])return 1;if(n[0][t]!==n[1][t])return-1;if(t===0)return 0}}function o(e,r,i){var o=n;typeof r==\"string\"&&(i=r,r=void 0),r===void 0&&(r=!1),i&&(o=t(i));var u=\"\"+o.version;for(var a in e)if(e.hasOwnProperty(a)&&o[a]){if(typeof e[a]!=\"string\")throw new Error(\"Browser version in the minVersion map should be a string: \"+a+\": \"+String(e));return s([u,e[a]])<0}return r}function u(e,t,n){return!o(e,t,n)}var e=!0,n=t(typeof navigator!=\"undefined\"?navigator.userAgent||\"\":\"\");return n.test=function(e){for(var t=0;t\\n \\n \\n \\n \\n \\n \\n \\n \\n\\n\"","module.exports = \"\\n \\n \\n \\n\\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n \\n \\n \\n \\n \\n \\n \\n\\n\"","module.exports = \"\\n\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n \\n \\n \\n \\n \\n \\n \\n\\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n\\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n unionpay\\n Created with Sketch.\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","// get successful control from form and assemble into object\n// http://www.w3.org/TR/html401/interact/forms.html#h-17.13.2\n\n// types which indicate a submit action and are not successful controls\n// these will be ignored\nvar k_r_submitter = /^(?:submit|button|image|reset|file)$/i;\n\n// node names which could be successful controls\nvar k_r_success_contrls = /^(?:input|select|textarea|keygen)/i;\n\n// Matches bracket notation.\nvar brackets = /(\\[[^\\[\\]]*\\])/g;\n\n// serializes form fields\n// @param form MUST be an HTMLForm element\n// @param options is an optional argument to configure the serialization. Default output\n// with no options specified is a url encoded string\n// - hash: [true | false] Configure the output type. If true, the output will\n// be a js object.\n// - serializer: [function] Optional serializer function to override the default one.\n// The function takes 3 arguments (result, key, value) and should return new result\n// hash and url encoded str serializers are provided with this module\n// - disabled: [true | false]. If true serialize disabled fields.\n// - empty: [true | false]. If true serialize empty fields\nfunction serialize(form, options) {\n if (typeof options != 'object') {\n options = { hash: !!options };\n }\n else if (options.hash === undefined) {\n options.hash = true;\n }\n\n var result = (options.hash) ? {} : '';\n var serializer = options.serializer || ((options.hash) ? hash_serializer : str_serialize);\n\n var elements = form && form.elements ? form.elements : [];\n\n //Object store each radio and set if it's empty or not\n var radio_store = Object.create(null);\n\n for (var i=0 ; i\n \n
\n
\n \n \n
\n
\n {content.windowMessage}\n
\n
\n
\n
\n
\n
\n\n
\n {outlet}\n
\n\n \n
\n );\n\n const container = (\n \n \n { el }\n \n \n );\n\n on(EVENT.CLOSE, () => {\n el.className += ` ${ tag }-loading`;\n });\n\n return (\n
\n \n\n \n
\n );\n}\n\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { create } from 'zoid/src';\nimport { type Component } from 'zoid/src/component/component';\nimport { base64encode } from 'belter/src';\n\nimport { ENV } from '../constants';\nimport { getButtonSessionID, getBrowserLocale, getSessionID, getCurrentScriptUrl } from '../lib';\nimport { config } from '../config';\n\nimport { containerTemplate } from './template';\n\ntype BillingOptions = {|\n client : {\n [string] : (string | ZalgoPromise)\n },\n env? : string,\n locale? : string,\n logLevel : string,\n awaitPopupBridge : Function,\n meta : Object,\n commit : boolean,\n token : string\n|};\n\nexport const BillingPage : Component = create({\n tag: 'billing-page',\n name: 'billing-page',\n\n buildUrl(props) : string {\n const env = props.env || config.env;\n return `${ config.inlinedCardFieldUrls[env] }/billing`;\n },\n\n get domain() : Object {\n return {\n ...config.paypalDomains,\n [ ENV.LOCAL ]: /^http:\\/\\/localhost.paypal.com:\\d+$/\n };\n },\n\n scrolling: true,\n\n props: {\n sessionID: {\n type: 'string',\n required: false,\n def() : string {\n return getSessionID();\n },\n queryParam: true\n },\n\n\n token: {\n type: 'string',\n required: true,\n queryParam: true\n },\n\n buttonSessionID: {\n type: 'string',\n required: false,\n def() : ?string {\n return getButtonSessionID();\n },\n queryParam: true\n },\n\n commit: {\n type: 'boolean',\n required: false,\n queryParam: true\n },\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n },\n\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n allowDelegate: true,\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n }\n },\n\n cardType: {\n type: 'string',\n required: false\n },\n prefilledZipCode: {\n type: 'string',\n required: false\n },\n\n onEvent: {\n type: 'function',\n required: false,\n sameDomain: true\n },\n\n dispatch: {\n type: 'object',\n required: false,\n sameDomain: true\n },\n\n onCancel: {\n type: 'function',\n required: false,\n once: true,\n noop: true\n },\n\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n }\n },\n\n\n containerTemplate\n});\n","/* @flow */\n\nimport { track, info } from 'beaver-logger/client';\n\nimport { config } from '../config';\nimport { FPTI, PPTM_ID } from '../constants';\nimport { stringifyError, extendUrl, loadScript, getElement, isPayPalDomain } from '../lib';\n\n\nfunction shouldCreateInitialPptmScript() : boolean {\n const id = window.location.hostname;\n\n if (!id) {\n return false;\n }\n\n if (isPayPalDomain()) {\n return false;\n }\n\n const existingScript = getElement(PPTM_ID);\n const alreadyDownloaded = Boolean(existingScript);\n\n if (alreadyDownloaded) {\n info('pptm_tried_loading_twice');\n return false;\n }\n\n return true;\n}\n\nfunction removePptm() {\n const script = getElement(PPTM_ID);\n\n if (script) {\n // $FlowFixMe\n script.parentNode.removeChild(script);\n }\n}\n\nexport function pptmFactory() : Object {\n let noContentFoundInContainer = false;\n const callback = `__pptmLoadedWithNoContent`;\n let listener;\n\n const obj = {\n /*\n In the button component, we set up a global window[callback] that will be called in pptm `onload` attribute.\n Button.render calls `reloadPptmScript`, which checks if window[callback] has been called yet (meaning, it checks\n if pptm.js was loaded before Button.render was called). If so, we'll check to see if we should reload PPTM\n now that we might have a client ID from the Button.render method.\n If pptm.js hasn't loaded yet, then we'll set up a listener to the same logic above to defer it until\n pptm.js actually loads.\n */\n reloadPptmScript(clientId : ?string) {\n const tryCreatePptmScript = () => {\n if (obj.shouldReloadPptmScript(clientId)) {\n obj.removePptm();\n obj.createPptmScript(clientId);\n } else {\n // Defer until later, since reloadPptmScript might have been called\n // before pptm loaded, so we'll still want to hook into the script load.\n listener = tryCreatePptmScript;\n }\n };\n\n tryCreatePptmScript();\n },\n listenForLoadWithNoContent() {\n window[callback] = () => {\n noContentFoundInContainer = true;\n\n if (listener) {\n listener();\n listener = undefined;\n }\n };\n },\n listenForButtonRender() {\n window.paypalDDL = window.paypalDDL || [];\n const buttonRenderEvent = window.paypalDDL.filter(e => e.event === 'paypalButtonRender');\n if (buttonRenderEvent.length === 0) {\n window.paypalDDL.push({ event: 'paypalButtonRender' });\n }\n },\n get callback() : string {\n return callback;\n },\n get noContentFoundInContainer() : boolean {\n return noContentFoundInContainer;\n },\n createPptmScript: (clientId : ?string) => {\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.PPTM,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.PPTM_LOAD\n });\n \n const params = {\n t: 'xo',\n id: window.location.hostname,\n mrid: config.merchantID,\n client_id: '',\n v: config.version,\n source: 'checkoutjs'\n };\n \n if (clientId) {\n params.client_id = clientId;\n } else {\n delete params.client_id;\n }\n \n const fullUrl = extendUrl(config.pptmUrl, params);\n \n loadScript(fullUrl, 0, {\n async: true,\n id: PPTM_ID\n }).then(() => {\n // If the snippet is empty, then fire the callback.\n // We assume non-empty pptm.js bundles with init the paypalDDL and push an event called\n // `snippetRun` to it.\n if (!(window.paypalDDL && window.paypalDDL[0] && window.paypalDDL[0].event === 'snippetRun')) {\n window[callback]();\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.PPTM,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.PPTM_LOADED\n });\n }).catch(err => {\n info('pptm_script_error', { error: stringifyError(err) });\n });\n },\n shouldCreateInitialPptmScript,\n /*\n During Button render if a client ID was provided, we'll want to refresh the\n pptm script to try to pull down a container by that value.\n We'll only do this if we're not on the PayPal domain, or if\n a merchant ID wasn't already provided (since container look-up can\n also happen by merchant ID). Note that this will only happen\n if there was no content found in the container that was pulled down\n in the `setup` script. This is important because we don't want\n to pull down multiple containers that actually contain content,\n otherwise we'll be firing duplicate tags.\n */\n shouldReloadPptmScript(clientId : ?string) : boolean {\n if (noContentFoundInContainer === false) {\n return false;\n }\n\n if (isPayPalDomain()) {\n return false;\n }\n \n // If a merchant ID was already provided, then that meant we initially\n // loaded the pptm script with that value as the main container\n // look-up value, so in this case we don't want to reload pptm.\n if (config.merchantID) {\n return false;\n }\n \n if (clientId) {\n return true;\n }\n \n return false;\n },\n removePptm\n };\n\n return obj;\n}\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { create } from 'zoid/src';\nimport { base64encode } from 'belter/src';\n\nimport { getBrowserLocale, getCurrentScriptUrl } from '../lib';\nimport { config } from '../config';\nimport { containerTemplate } from '../billing/template';\n\nexport const ThreeDomainSecure = create({\n tag: 'paypal-3ds',\n name: '3ds',\n\n buildUrl(props) : string {\n const env = props.env || config.env;\n return `${ config.inlinedCardFieldUrls[env] }/init3ds`;\n },\n\n get domain() : Object {\n return {\n ...config.paypalDomains\n };\n },\n\n scrolling: true,\n\n props: {\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n },\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n allowDelegate: true,\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n }\n },\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n },\n challengeUrl: {\n type: 'string'\n },\n threeDomainSecureToken: {\n type: 'string'\n },\n method: {\n type: 'string'\n },\n onSuccess: {\n type: 'function',\n required: false\n },\n onError: {\n type: 'function',\n required: false\n },\n onCancel: {\n type: 'function',\n required: true,\n allowDelegate: true\n }\n },\n\n\n containerTemplate\n});\n","/* @flow */\n\nimport { pptmFactory } from './pptm-factory';\n\nexport const pptm = pptmFactory();\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { on, send } from 'post-robot/src';\nimport { base64encode } from 'belter/src';\nimport { info, track } from 'beaver-logger/client';\nimport { getAncestor, isSameDomain } from 'cross-domain-utils/src';\n\nimport { config } from '../config';\nimport { FPTI, PAYMENT_TYPE } from '../constants';\nimport { request, memoize, isPayPalDomain, uniqueID } from '../lib';\n\ntype ProxyRest = {\n [string] : (...args : $ReadOnlyArray) => ZalgoPromise<*>\n};\n\nlet proxyRest : ProxyRest = {};\n\nconst createAccessToken = memoize((env : string, client : { [key : string] : string }) : ZalgoPromise => {\n\n info(`rest_api_create_access_token`);\n\n env = env || config.env;\n\n const clientID : string = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (proxyRest.createAccessToken && !proxyRest.createAccessToken.source.closed) {\n return proxyRest.createAccessToken(env, client);\n }\n\n const basicAuth : string = base64encode(`${ clientID }:`);\n\n return request({\n\n method: `post`,\n url: config.authApiUrls[env],\n headers: {\n Authorization: `Basic ${ basicAuth }`\n },\n data: {\n grant_type: `client_credentials`\n }\n\n }).then(res => {\n\n if (res && res.error === 'invalid_client') {\n throw new Error(`Auth Api invalid ${ env } client id: ${ clientID }:\\n\\n${ JSON.stringify(res, null, 4) }`);\n }\n\n if (!res || !res.access_token) {\n throw new Error(`Auth Api response error:\\n\\n${ JSON.stringify(res, null, 4) }`);\n }\n\n return res.access_token;\n });\n\n}, { time: 10 * 60 * 1000 });\n\nconst createExperienceProfile = memoize((env : string, client : { [key : string] : string }, experienceDetails : Object = {}) : ZalgoPromise => {\n\n info(`rest_api_create_experience_profile`);\n\n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (proxyRest.createExperienceProfile && !proxyRest.createExperienceProfile.source.closed) {\n return proxyRest.createExperienceProfile(env, client, experienceDetails);\n }\n\n experienceDetails.temporary = true;\n experienceDetails.name = experienceDetails.name ? `${ experienceDetails.name }_${ Math.random().toString() }` : Math.random().toString();\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n return request({\n method: `post`,\n url: config.experienceApiUrls[env],\n headers: {\n Authorization: `Bearer ${ accessToken }`\n },\n json: experienceDetails\n });\n\n }).then((res) : string => {\n\n if (res && res.error) {\n throw new Error(res.error);\n }\n\n if (!res.id) {\n throw new Error(`No id in experience profile response:\\n\\n${ JSON.stringify(res, null, 4) }`);\n }\n\n return res.id;\n });\n\n}, { time: 10 * 60 * 1000 });\n\nfunction logPaymentResponse(res) {\n\n if (!res) {\n return;\n }\n\n let paymentToken;\n let paymentID;\n\n if (res.id) {\n paymentID = res.id;\n }\n\n if (res.links && res.links.length) {\n for (let i = 0; i < res.links.length; i++) {\n if (res.links[i].method === 'REDIRECT' && res.links[i].rel === 'approval_url') {\n const match = res.links[i].href.match(/token=((EC-)?[A-Z0-9]{17})/);\n if (match) {\n paymentToken = match[1];\n }\n }\n }\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.BUTTON,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CREATE_PAYMENT,\n [ FPTI.KEY.CONTEXT_TYPE ]: FPTI.CONTEXT_TYPE[PAYMENT_TYPE.PAY_ID],\n [ FPTI.KEY.PAY_ID ]: paymentID,\n [ FPTI.KEY.TOKEN ]: paymentToken,\n [ FPTI.KEY.CONTEXT_ID ]: paymentID\n });\n}\n\nfunction getDefaultReturnUrl() : string {\n return `https://www.paypal.com/checkoutnow/error`;\n}\n\nfunction createTracking(env : string, client : { [key : string] : string }, merchantID, trackingData) : Object {\n \n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n const trackingID = uniqueID();\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n const headers : Object = {\n Authorization: `Bearer ${ accessToken }`\n };\n\n return request({\n method: `put`,\n url: `${ config.trackingApiUrls[env] }/${ merchantID }/${ trackingID }`,\n headers,\n json: {\n 'tracking_id': trackingID,\n 'additional_data': trackingData\n }\n });\n\n }).then(() => {\n return trackingID;\n });\n}\n\nfunction createPayment(env : string, client : { [key : string] : string }, paymentDetails : Object) : ZalgoPromise {\n\n info(`rest_api_create_checkout_token`);\n\n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n let { payment, experience, meta, tracking } = paymentDetails;\n\n if (!payment) {\n throw new Error(`Expected payment details to be passed`);\n }\n\n if (proxyRest.createPayment && !proxyRest.createPayment.source.closed) {\n return proxyRest.createPayment(env, client, { payment, experience, meta, tracking });\n }\n\n payment = { ...payment };\n payment.intent = payment.intent || 'sale';\n payment.redirect_urls = payment.redirect_urls || {};\n payment.redirect_urls.return_url = payment.redirect_urls.return_url || getDefaultReturnUrl();\n payment.redirect_urls.cancel_url = payment.redirect_urls.cancel_url || getDefaultReturnUrl();\n payment.payer = payment.payer || {};\n payment.payer.payment_method = payment.payer.payment_method || 'paypal';\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n return ZalgoPromise.try(() => {\n\n if (experience) {\n return ZalgoPromise.resolve(createExperienceProfile(env, client, experience));\n }\n\n }).then((experienceID) : ZalgoPromise => {\n\n return ZalgoPromise.try(() => {\n\n if (tracking) {\n return ZalgoPromise.resolve(createTracking(env, client, tracking.id, tracking.data));\n }\n\n }).then((trackingID) : ZalgoPromise => {\n\n if (experienceID) {\n payment.experience_profile_id = experienceID;\n }\n\n const headers : Object = {\n Authorization: `Bearer ${ accessToken }`\n };\n\n if (trackingID) {\n headers['Paypal-Client-Metadata-Id'] = trackingID;\n }\n\n if (meta && meta.partner_attribution_id) {\n headers['PayPal-Partner-Attribution-Id'] = meta.partner_attribution_id;\n }\n\n return request({\n method: `post`,\n url: config.paymentApiUrls[env],\n headers,\n json: payment\n });\n });\n });\n\n }).then((res) : string => {\n\n logPaymentResponse(res);\n\n if (res && res.id) {\n return res.id;\n }\n\n throw new Error(`Payment Api response error:\\n\\n${ JSON.stringify(res, null, 4) }`);\n\n });\n}\n\nfunction createOrder(env : string, client : { [key : string] : string }, paymentDetails : Object) : ZalgoPromise {\n\n info(`rest_api_create_order_token`);\n\n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n let { order, meta } = paymentDetails;\n\n if (!order) {\n throw new Error(`Expected order details to be passed`);\n }\n\n if (proxyRest.createOrder && !proxyRest.createOrder.source.closed) {\n return proxyRest.createOrder(env, client, { order, meta });\n }\n\n order = { ...order };\n order.intent = order.intent || 'CAPTURE';\n order.application_context = order.application_context || {};\n order.application_context.return_url = order.application_context.return_url || getDefaultReturnUrl();\n order.application_context.cancel_url = order.application_context.cancel_url || getDefaultReturnUrl();\n order.purchase_units = order.purchase_units || [];\n order.purchase_units[0] = order.purchase_units[0] || {};\n order.purchase_units.forEach(unit => {\n unit.reference_id = unit.reference_id || Math.random().toString();\n });\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n const headers : Object = {\n Authorization: `Bearer ${ accessToken }`\n };\n\n if (meta && meta.partner_attribution_id) {\n headers['PayPal-Partner-Attribution-Id'] = meta.partner_attribution_id;\n }\n\n return request({\n method: `post`,\n url: config.orderApiUrls[env],\n headers,\n json: order\n });\n\n }).then((res) : string => {\n\n logPaymentResponse(res);\n\n if (res && res.id) {\n return res.id;\n }\n\n throw new Error(`Payment Api response error:\\n\\n${ JSON.stringify(res, null, 4) }`);\n });\n}\n\nexport function createBillingAgreement(env : string, client : { [key : string] : string }, billingDetails : Object, experienceDetails? : ?Object) : ZalgoPromise {\n\n info(`rest_api_create_billing_token`);\n\n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (proxyRest.createBillingAgreement && !proxyRest.createBillingAgreement.source.closed) {\n return proxyRest.createBillingAgreement(env, client, billingDetails, experienceDetails);\n }\n\n billingDetails = { ...billingDetails };\n billingDetails.plan = billingDetails.plan || {};\n billingDetails.plan.merchant_preferences = billingDetails.plan.merchant_preferences || {};\n billingDetails.plan.merchant_preferences.return_url = billingDetails.plan.merchant_preferences.return_url || getDefaultReturnUrl();\n billingDetails.plan.merchant_preferences.cancel_url = billingDetails.plan.merchant_preferences.cancel_url || getDefaultReturnUrl();\n billingDetails.payer = billingDetails.payer || {};\n billingDetails.payer.payment_method = billingDetails.payer.payment_method || 'paypal';\n\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n return ZalgoPromise.try(() => {\n\n if (experienceDetails) {\n return ZalgoPromise.resolve(createExperienceProfile(env, client, experienceDetails));\n }\n\n }).then((experienceID) : ZalgoPromise => {\n\n if (experienceID) {\n billingDetails.experience_profile_id = experienceID;\n }\n\n return request({\n method: `post`,\n url: config.billingApiUrls[env],\n headers: {\n Authorization: `Bearer ${ accessToken }`\n },\n json: billingDetails\n });\n });\n\n }).then(res => {\n\n if (res && res.token_id) {\n return res.token_id;\n }\n\n throw new Error(`Billing Api response error:\\n\\n${ JSON.stringify(res, null, 4) }`);\n });\n}\n\nexport const rest = {\n payment: {\n create: createPayment\n },\n order: {\n create: createOrder\n },\n billingAgreement: {\n create: createBillingAgreement\n },\n experience: {\n create: createExperienceProfile\n }\n};\n\nconst PROXY_REST = `proxy_rest`;\nconst parentWin = getAncestor();\n\non(PROXY_REST, { domain: config.paypal_domain_regex }, ({ data }) => {\n proxyRest = data;\n});\n\nif (parentWin && isPayPalDomain() && !isSameDomain(parentWin)) {\n send(parentWin, PROXY_REST, { createAccessToken, createExperienceProfile, createPayment, createBillingAgreement, createOrder })\n .catch(() => {\n // pass\n });\n}\n","/* @flow */\n\nimport { info, track, immediateFlush } from 'beaver-logger/client';\n\nimport { FPTI, PAYMENT_TYPE } from './constants';\nimport { getReturnToken, getSessionState, getDomainSetting, eventEmitter } from './lib';\n\nexport const onAuthorizeListener = eventEmitter();\n\nfunction log(experiment : string, treatment : string, token : ?string, state : string) {\n\n getSessionState(session => {\n\n let event = `${ experiment }_${ treatment }_${ state }`;\n const loggedEvents = session.loggedExperimentEvents = session.loggedExperimentEvents || [];\n const duplicate = loggedEvents.indexOf(event) !== -1;\n\n if (duplicate) {\n info(`duplicate_${ event }`);\n\n } else {\n info(event);\n loggedEvents.push(event);\n\n const edge = window.navigator && window.navigator.userAgent && window.navigator.userAgent.match(/Edge\\/[0-9]{2}/);\n\n if (edge) {\n event = info(`${ edge[0].toLowerCase().replace('/', '_') }_${ event }`);\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: state,\n [ FPTI.KEY.EXPERIMENT_NAME ]: experiment,\n [ FPTI.KEY.TREATMENT_NAME ]: treatment,\n [ FPTI.KEY.TOKEN ]: token,\n [ FPTI.KEY.CONTEXT_ID ]: token,\n [ FPTI.KEY.CONTEXT_TYPE ]: token ? FPTI.CONTEXT_TYPE[PAYMENT_TYPE.EC_TOKEN] : FPTI.CONTEXT_TYPE.BUTTON_SESSION_ID\n });\n\n immediateFlush();\n }\n });\n}\n\nexport function logExperimentTreatment({ experiment, treatment, state, token } : { experiment : string, treatment : string, state : string, token : ?string }) {\n\n if (!experiment || !treatment) {\n return;\n }\n\n getSessionState(session => {\n session.externalExperiment = experiment;\n session.externalExperimentTreatment = treatment;\n\n if (token) {\n session.externalExperimentToken = token;\n }\n });\n\n log(experiment, treatment, token, state);\n}\n\nfunction logReturn(token : string) {\n\n const {\n externalExperiment,\n externalExperimentTreatment,\n externalExperimentToken\n } = getSessionState(session => session);\n\n if (externalExperiment && externalExperimentTreatment && externalExperimentToken === token) {\n log(externalExperiment, externalExperimentTreatment, token, `complete`);\n } else {\n info(`experiment_mismatch`, {\n token,\n externalExperiment,\n externalExperimentTreatment,\n externalExperimentToken\n });\n }\n}\n\nif (getDomainSetting('log_authorize')) {\n\n onAuthorizeListener.once(({ paymentToken }) => {\n setTimeout(() => {\n logReturn(paymentToken);\n }, 1);\n });\n\n const returnToken = getReturnToken();\n\n if (returnToken) {\n setTimeout(() => {\n if (returnToken) {\n logReturn(returnToken);\n }\n }, 1);\n }\n}\n","/* @flow */\n\nimport { once, noop } from 'zoid/src/lib';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { error } from 'beaver-logger/client';\nimport type { CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { extendUrl, redirect, awaitKey, stringifyError } from '../lib';\nimport { config } from '../config';\nimport { FUNDING } from '../constants';\n\nimport { determineParameterFromToken, determineUrl } from './checkout';\n\nconst OPTYPE = {\n PAYMENT: 'payment',\n CANCEL: 'cancel'\n};\n\nconst CONTINGENCY = {\n PAYMENT_CANCELLED: 'PAYMENT_CANCELLED'\n};\n\ntype PopupBridge = {|\n open : (string) => ZalgoPromise\n|};\n\nfunction wrapPopupBridge(popupBridge : Object) : PopupBridge {\n return {\n open(url : string) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n popupBridge.onComplete = (err, result) => {\n if (!result) {\n return reject(new Error('No payload passed in popupBridge.onComplete'));\n }\n\n return err ? reject(err) : resolve(result);\n };\n\n popupBridge.onCancel = () => {\n const err = new Error(CONTINGENCY.PAYMENT_CANCELLED);\n // $FlowFixMe\n err.code = CONTINGENCY.PAYMENT_CANCELLED;\n return reject(err);\n };\n\n popupBridge.open(extendUrl(url, { redirect_uri: popupBridge.getReturnUrlPrefix() }));\n });\n }\n };\n}\n\nfunction validateCheckoutProps(props) {\n if (!props.payment) {\n throw new Error(`Expected props.payment to be passed`);\n }\n\n if (!props.onAuthorize) {\n throw new Error(`Expected props.onAuthorize to be passed`);\n }\n\n if (props.env && !config.checkoutUrls[props.env]) {\n throw new Error(`Invalid props.env: ${ props.env }`);\n }\n}\n\nfunction normalizeCheckoutProps(props : Object) : { env : string, payment : Function, onAuthorize : Function, onCancel : Function } {\n const env = props.env = props.env || config.env;\n\n const payment = props.payment;\n const onAuthorize = once(props.onAuthorize);\n const onCancel = once(props.onCancel || noop);\n\n return { env, payment, onAuthorize, onCancel };\n}\n\nfunction getUrl(props : { env : string, payment : Function, onAuthorize : Function, onCancel? : Function, commit? : boolean }) : ZalgoPromise {\n\n const { env, payment } = normalizeCheckoutProps(props);\n\n return ZalgoPromise.try(payment, { props }).then(token => {\n if (!token) {\n throw new Error(`Expected props.payment to return a payment id or token`);\n }\n\n return extendUrl(determineUrl(env, FUNDING.PAYPAL, token), {\n [determineParameterFromToken(token)]: token,\n\n useraction: props.commit ? 'commit' : '',\n native_xo: '1'\n });\n });\n}\n\nfunction extractDataFromQuery(query : Object) : Object {\n\n const data : Object = {\n paymentToken: query.token,\n billingToken: query.ba_token,\n paymentID: query.paymentId,\n payerID: query.PayerID,\n intent: query.intent\n };\n \n const { opType, return_uri, cancel_uri } = query;\n\n if (opType === OPTYPE.PAYMENT) {\n data.returnUrl = return_uri;\n\n } else if (opType === OPTYPE.CANCEL) {\n data.cancelUrl = cancel_uri;\n }\n\n return data;\n}\n\nfunction buildActions(query : Object) : Object {\n \n const actions : Object = {\n close: noop,\n closeComponent: noop\n };\n\n const { opType, return_uri, cancel_uri } = query;\n\n if (opType === OPTYPE.PAYMENT) {\n actions.redirect = (win : CrossDomainWindowType = window, redirectUrl : string = return_uri) : ZalgoPromise => {\n return redirect(win, redirectUrl);\n };\n\n } else if (opType === OPTYPE.CANCEL) {\n actions.redirect = (win : CrossDomainWindowType = window, redirectUrl : string = cancel_uri) : ZalgoPromise => {\n return redirect(win, redirectUrl);\n };\n }\n\n return actions;\n}\n\nfunction renderThroughPopupBridge(props : Object, popupBridge : PopupBridge) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n validateCheckoutProps(props);\n\n }).then(() => {\n\n return getUrl(props);\n \n }).then(url => {\n\n return popupBridge.open(url);\n\n }).then(payload => {\n\n const { opType } = payload.queryItems;\n const { onAuthorize, onCancel } = normalizeCheckoutProps(props);\n\n const data = extractDataFromQuery(payload.queryItems);\n const actions = buildActions(payload.queryItems);\n \n if (opType === OPTYPE.PAYMENT) {\n return onAuthorize(data, actions);\n\n } else if (opType === OPTYPE.CANCEL) {\n return onCancel(data, actions);\n \n } else {\n throw new Error(`Invalid opType: ${ opType }`);\n }\n\n }).catch(err => {\n\n if (err && err.code === CONTINGENCY.PAYMENT_CANCELLED) {\n const { onCancel } = normalizeCheckoutProps(props);\n return onCancel({}, {});\n }\n\n throw err;\n });\n}\n\nexport function awaitPopupBridge(Button : Object) : ZalgoPromise {\n if (Button.xprops && Button.xprops.awaitPopupBridge) {\n return Button.xprops.awaitPopupBridge();\n }\n\n return awaitKey(window, 'popupBridge').then(popupBridge => {\n return wrapPopupBridge(popupBridge);\n });\n}\n\nexport function setupPopupBridgeProxy(Checkout : Object, Button : Object) {\n\n let popupBridge;\n\n awaitPopupBridge(Button).then(bridge => {\n popupBridge = bridge;\n });\n\n function doRender(props, original) : ZalgoPromise {\n if (!popupBridge) {\n return original();\n }\n \n return renderThroughPopupBridge(props, popupBridge)\n .catch(err => {\n error(`popup_bridge_error`, { err: stringifyError(err) });\n return original();\n });\n }\n\n const render = Checkout.render;\n Checkout.render = function popupBridgeRender(props : Object) : ZalgoPromise {\n return doRender(props, () => render.apply(this, arguments));\n };\n\n const renderTo = Checkout.renderTo;\n Checkout.renderTo = function popupBridgeRenderTo(win : CrossDomainWindowType, props : Object) : ZalgoPromise {\n return doRender(props, () => renderTo.apply(this, arguments));\n };\n\n const renderPopupTo = Checkout.renderPopupTo;\n Checkout.renderPopupTo = function popupBridgeRenderPopupTo(win : CrossDomainWindowType, props : Object) : ZalgoPromise {\n return doRender(props, () => renderPopupTo.apply(this, arguments));\n };\n}\n","/* @flow */\n/* global __paypal_checkout__*/\n\nimport { FUNDING, COUNTRY, CARD, PLATFORM, DEFAULT, ENV } from '../constants';\n\nexport const FUNDING_PRIORITY = [\n FUNDING.PAYPAL,\n FUNDING.VENMO,\n FUNDING.ITAU,\n FUNDING.CREDIT,\n FUNDING.CARD,\n FUNDING.IDEAL,\n FUNDING.ELV,\n FUNDING.BANCONTACT,\n FUNDING.GIROPAY,\n FUNDING.EPS,\n FUNDING.SOFORT,\n FUNDING.MYBANK,\n FUNDING.BLIK,\n FUNDING.P24,\n FUNDING.PAYU,\n FUNDING.VERKKOPANKKI,\n FUNDING.TRUSTLY,\n FUNDING.MAXIMA,\n FUNDING.BOLETO,\n FUNDING.OXXO\n];\n\nexport const FUNDING_ORDER = [\n FUNDING.PAYPAL,\n FUNDING.VENMO,\n FUNDING.ITAU,\n FUNDING.CREDIT,\n FUNDING.IDEAL,\n FUNDING.ELV,\n FUNDING.BANCONTACT,\n FUNDING.GIROPAY,\n FUNDING.EPS,\n FUNDING.SOFORT,\n FUNDING.MYBANK,\n FUNDING.BLIK,\n FUNDING.P24,\n FUNDING.PAYU,\n FUNDING.VERKKOPANKKI,\n FUNDING.TRUSTLY,\n FUNDING.MAXIMA,\n FUNDING.BOLETO,\n FUNDING.OXXO,\n FUNDING.CARD\n];\n\nexport const FUNDING_CONFIG = {\n\n [ DEFAULT ]: {\n enabled: true,\n\n allowOptIn: true,\n allowOptOut: true,\n allowRemember: true,\n\n allowHorizontal: true,\n allowVertical: true,\n\n requireCommitAsTrue: false\n },\n\n [ FUNDING.PAYPAL ]: {\n default: true,\n\n allowOptIn: false,\n allowOptOut: false,\n\n allowHorizontal: true,\n allowVertical: true\n },\n\n [ FUNDING.CARD ]: {\n // $FlowFixMe\n default: (typeof __paypal_checkout__ === 'undefined' ? true : __paypal_checkout__.serverConfig.paypalMerchantConfiguration.creditCard.isPayPalBranded),\n\n allowHorizontal: false,\n allowVertical: true\n },\n\n [ FUNDING.VENMO ]: {\n allowOptOut: true,\n allowedCountries: [\n COUNTRY.US\n ],\n\n allowHorizontal: true,\n allowVertical: true\n },\n [ FUNDING.ITAU ]: {\n allowOptOut: true,\n allowedCountries: [\n COUNTRY.BR\n ],\n\n allowHorizontal: true,\n allowVertical: true\n },\n\n [ FUNDING.CREDIT ]: {\n allowedCountries: [\n COUNTRY.US,\n COUNTRY.GB,\n COUNTRY.DE\n ],\n defaultVerticalCountries: [\n COUNTRY.US\n ],\n platforms: [\n PLATFORM.MOBILE\n ],\n\n allowHorizontal: true,\n allowVertical: true,\n allowRemember: true\n },\n\n [ FUNDING.IDEAL ]: {\n allowedCountries: [\n COUNTRY.NL\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.ELV ]: {\n allowedCountries: [\n COUNTRY.DE\n ],\n defaultVerticalCountries: [\n COUNTRY.DE\n ],\n\n allowHorizontal: false,\n allowVertical: true\n },\n\n [ FUNDING.BANCONTACT ]: {\n allowedCountries: [\n COUNTRY.BE\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.GIROPAY ]: {\n allowedCountries: [\n COUNTRY.DE\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.SOFORT ]: {\n allowedCountries: [\n COUNTRY.DE,\n COUNTRY.AT,\n COUNTRY.BE,\n COUNTRY.ES,\n COUNTRY.IT,\n COUNTRY.NL\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.EPS ]: {\n allowedCountries: [\n COUNTRY.AT\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.MYBANK ]: {\n allowedCountries: [\n COUNTRY.IT\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.P24 ]: {\n allowedCountries: [\n COUNTRY.PL\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.PAYU ]: {\n allowedCountries: [\n COUNTRY.CZ\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.VERKKOPANKKI ]: {\n allowedCountries: [\n COUNTRY.FI\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.BLIK ]: {\n allowedCountries: [\n COUNTRY.PL\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.TRUSTLY ]: {\n allowedCountries: [\n COUNTRY.DE,\n COUNTRY.DK,\n COUNTRY.EE,\n COUNTRY.ES,\n COUNTRY.FI,\n COUNTRY.GB,\n COUNTRY.IT,\n COUNTRY.MT,\n COUNTRY.NL,\n COUNTRY.NO,\n COUNTRY.SE\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.MAXIMA ]: {\n allowedCountries: [\n COUNTRY.LT\n ],\n\n allowedEnvs: [\n ENV.LOCAL,\n ENV.STAGE,\n ENV.TEST\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.BOLETO ]: {\n allowedCountries: [\n COUNTRY.BR\n ],\n\n allowedEnvs: [\n ENV.LOCAL,\n ENV.STAGE,\n ENV.TEST\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.OXXO ]: {\n allowedCountries: [\n COUNTRY.MX\n ],\n\n allowedEnvs: [\n ENV.LOCAL,\n ENV.STAGE,\n ENV.TEST\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.ZIMPLER ]: {\n allowedCountries: [],\n\n allowHorizontal: false,\n allowVertical: false,\n requireCommitAsTrue: true\n }\n};\n\nexport const CARD_CONFIG = {\n\n [ DEFAULT ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX\n ]\n },\n\n [ COUNTRY.GB ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.DISCOVER,\n CARD.MAESTRO\n ]\n },\n\n [ COUNTRY.US ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.DISCOVER\n ]\n },\n\n [ COUNTRY.BR ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.HIPER,\n CARD.ELO\n ]\n },\n\n [ COUNTRY.JP ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.JCB\n ]\n },\n\n [ COUNTRY.CN ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.CUP\n ]\n }\n};\n\nfunction getConfig(conf : Object, category : string, key : string, def : ?T) : T {\n const categoryConfig = conf[category];\n\n if (categoryConfig && categoryConfig.hasOwnProperty(key)) {\n return categoryConfig[key];\n }\n\n if (conf[DEFAULT] && conf[DEFAULT].hasOwnProperty(key)) {\n return conf[DEFAULT][key];\n }\n\n if (arguments.length >= 4) {\n // $FlowFixMe\n return def;\n }\n\n throw new Error(`No value found for ${ category }:${ key }`);\n}\n\nexport function getFundingConfig(source : string, key : string, def : ?T) : T {\n return getConfig(FUNDING_CONFIG, source, key, def);\n}\n\nexport function getCardConfig(source : string, key : string, def : ?T) : T {\n return getConfig(CARD_CONFIG, source, key, def);\n}\n","/* @flow */\n\nimport { ENV, CARD_PRIORITY, FUNDING, BUTTON_LAYOUT, FUNDING_ELIGIBILITY_REASON } from '../constants';\nimport type { LocaleType, FundingSource, FundingSelection, FundingList } from '../types';\n\nimport { getFundingConfig, getCardConfig, FUNDING_PRIORITY, FUNDING_CONFIG } from './config';\n\nconst fundingEligibilityReasons = [];\n\nexport function isFundingIneligible(source : FundingSource, { locale, funding, layout, commit, env } :\n { locale : LocaleType, funding : FundingSelection, layout : string, commit? : boolean, env : string }) : ?string {\n\n const isVertical = layout === BUTTON_LAYOUT.VERTICAL;\n const allowSecondary = getFundingConfig(source, isVertical ? 'allowVertical' : 'allowHorizontal');\n\n if (!allowSecondary) {\n return FUNDING_ELIGIBILITY_REASON.SECONDARY_DISALLOWED;\n }\n\n if (funding.disallowed.indexOf(source) !== -1 && getFundingConfig(source, 'allowOptOut')) {\n return FUNDING_ELIGIBILITY_REASON.OPT_OUT;\n }\n\n if (funding.disallowed.indexOf(source) !== -1 && source === FUNDING.VENMO) {\n return FUNDING_ELIGIBILITY_REASON.OPT_OUT;\n }\n if (funding.disallowed.indexOf(source) !== -1 && source === FUNDING.ITAU) {\n return FUNDING_ELIGIBILITY_REASON.OPT_OUT;\n }\n\n if (getFundingConfig(source, 'allowedCountries', [ locale.country ]).indexOf(locale.country) === -1) {\n return FUNDING_ELIGIBILITY_REASON.DISALLOWED_COUNTRY;\n }\n\n if (getFundingConfig(source, 'requireCommitAsTrue') && !commit) {\n return FUNDING_ELIGIBILITY_REASON.COMMIT_NOT_SET;\n }\n\n const allowedEnvs = getFundingConfig(source, 'allowedEnvs');\n if (allowedEnvs && allowedEnvs.indexOf(env) === -1) {\n return FUNDING_ELIGIBILITY_REASON.INVALID_ENV;\n }\n}\n\nexport function isFundingAutoEligible(source : FundingSource, { locale, funding, layout } :\n { locale : LocaleType, funding : FundingSelection, layout : string }) : ?string {\n\n const isVertical = layout === BUTTON_LAYOUT.VERTICAL;\n\n if (isVertical && getFundingConfig(source, 'defaultVerticalCountries', []).indexOf(locale.country) !== -1) {\n return FUNDING_ELIGIBILITY_REASON.DEFAULT_COUNTRY;\n }\n\n if (getFundingConfig(source, 'default')) {\n return FUNDING_ELIGIBILITY_REASON.DEFAULT;\n }\n\n if (funding.allowed.indexOf(source) !== -1 && getFundingConfig(source, 'allowOptIn')) {\n return FUNDING_ELIGIBILITY_REASON.OPT_IN;\n }\n\n if (funding.remembered.indexOf(source) !== -1 && getFundingConfig(source, 'allowRemember')) {\n return FUNDING_ELIGIBILITY_REASON.REMEMBERED;\n }\n}\n\nexport function isFundingEligible(source : FundingSource, { locale, funding, env, layout, selected, commit } :\n { locale : LocaleType, funding : FundingSelection, env : string, layout : string, selected? : string, commit : boolean }) : { eligible : boolean, reason : string } {\n\n if (selected && source === selected) {\n return { eligible: true, reason: FUNDING_ELIGIBILITY_REASON.PRIMARY };\n }\n\n if (!getFundingConfig(source, 'enabled')) {\n if (!(env === ENV.TEST && getFundingConfig(source, 'test'))) {\n return { eligible: false, reason: FUNDING_ELIGIBILITY_REASON.NOT_ENABLED };\n }\n }\n\n const ineligibleReason = isFundingIneligible(source, { locale, funding, layout, commit, env });\n\n if (ineligibleReason) {\n return { eligible: false, reason: ineligibleReason };\n }\n\n const autoEligibleReason = isFundingAutoEligible(source, { locale, funding, layout });\n\n if (autoEligibleReason) {\n return { eligible: true, reason: autoEligibleReason };\n }\n\n return { eligible: false, reason: FUNDING_ELIGIBILITY_REASON.NEED_OPT_IN };\n}\n\nexport function determineEligibleFunding({ funding, selected, locale, env, layout, commit } :\n { funding : FundingSelection, selected : FundingSource, locale : LocaleType, env : string, layout : string, commit : boolean }) : FundingList {\n\n const reasons = {};\n\n const eligibleFunding = FUNDING_PRIORITY.filter(source => {\n const { eligible, reason } = isFundingEligible(source, { selected, locale, funding, env, layout, commit });\n reasons[source] = { eligible, reason, factors: { env, locale, layout } };\n return eligible;\n });\n\n fundingEligibilityReasons.push(reasons);\n\n eligibleFunding.splice(eligibleFunding.indexOf(selected), 1);\n eligibleFunding.unshift(selected);\n\n return eligibleFunding;\n}\n\nexport function determineEligibleCards({ funding, locale } :\n { funding : FundingSelection, locale : LocaleType }) : FundingList {\n\n return getCardConfig(locale.country, 'priority')\n .filter(card => funding.disallowed.indexOf(card) === -1);\n}\n\nexport function validateFunding(funding : FundingSelection = { allowed: [], disallowed: [], remembered: [] }) {\n\n if (funding.allowed) {\n for (const source of funding.allowed) {\n if (CARD_PRIORITY.indexOf(source) !== -1) {\n continue;\n }\n\n if (!FUNDING_CONFIG.hasOwnProperty(source)) {\n throw new Error(`Invalid funding source: ${ source }`);\n }\n\n if (!getFundingConfig(source, 'allowOptIn')) {\n throw new Error(`Can not allow funding source: ${ source }`);\n }\n\n if (funding.disallowed && funding.disallowed.indexOf(source) !== -1) {\n throw new Error(`Can not allow and disallow funding source: ${ source }`);\n }\n }\n }\n\n if (funding.disallowed) {\n for (const source of funding.disallowed) {\n if (CARD_PRIORITY.indexOf(source) !== -1) {\n continue;\n }\n\n if (!FUNDING_CONFIG.hasOwnProperty(source)) {\n throw new Error(`Invalid funding source: ${ source }`);\n }\n\n if (!getFundingConfig(source, 'allowOptOut')) {\n throw new Error(`Can not disallow funding source: ${ source }`);\n }\n }\n }\n}\n\nexport function logFundingEligibility() {\n fundingEligibilityReasons.forEach((reasons, i) => {\n console.log(`\\nButton ${ i + 1 }:\\n`); // eslint-disable-line no-console\n\n console.table(Object.keys(reasons).map(source => { // eslint-disable-line no-console, compat/compat\n const { reason, eligible, factors } = reasons[source];\n\n return {\n 'Funding': source,\n 'Reason': reason,\n 'Eligibility': eligible ? 'eligible' : 'ineligible',\n 'Factors': JSON.stringify(factors)\n };\n }));\n });\n}\n","/* @flow */\n/* eslint no-template-curly-in-string: off, max-lines: off */\n\nimport { FUNDING, DEFAULT, COUNTRY, BUTTON_LABEL, BUTTON_COLOR, BUTTON_LOGO_COLOR, BUTTON_SIZE,\n BUTTON_TAGLINE_COLOR, BUTTON_SHAPE, BUTTON_LAYOUT, BUTTON_LOGO } from '../constants';\n\ntype ButtonConfig = {\n [ string ] : {\n colors? : $ReadOnlyArray<$Values>\n }\n};\n\nexport const BUTTON_CONFIG : ButtonConfig = {\n\n [ DEFAULT ]: {\n\n colors: [\n BUTTON_COLOR.GOLD,\n BUTTON_COLOR.BLUE,\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n sizes: [\n BUTTON_SIZE.SMALL,\n BUTTON_SIZE.MEDIUM,\n BUTTON_SIZE.LARGE,\n BUTTON_SIZE.RESPONSIVE\n ],\n\n shapes: [\n BUTTON_SHAPE.PILL,\n BUTTON_SHAPE.RECT\n ],\n\n layouts: [\n BUTTON_LAYOUT.HORIZONTAL,\n BUTTON_LAYOUT.VERTICAL\n ],\n\n logoColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_LOGO_COLOR.BLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLUE\n },\n\n tagLineColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_TAGLINE_COLOR.BLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_TAGLINE_COLOR.BLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_TAGLINE_COLOR.BLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_TAGLINE_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_TAGLINE_COLOR.BLUE\n\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n tag: `{ content: safer_tag }`,\n dualTag: `{ content: dual_tag|safer_tag }`,\n\n defaultLocale: `en_US`,\n defaultLabel: BUTTON_LABEL.CHECKOUT,\n defaultVerticalLabel: BUTTON_LABEL.PAYPAL,\n defaultColor: BUTTON_COLOR.GOLD,\n defaultSize: BUTTON_SIZE.SMALL,\n defaultVerticalSize: BUTTON_SIZE.MEDIUM,\n defaultShape: BUTTON_SHAPE.PILL,\n defaultLayout: BUTTON_LAYOUT.HORIZONTAL,\n defaultBranding: true,\n defaultVerticalBranding: true,\n defaultFundingIcons: false,\n defaultTagline: true,\n defaultDual: ``,\n\n minimumSize: BUTTON_SIZE.TINY,\n minimumVerticalSize: BUTTON_SIZE.MEDIUM,\n\n maximumSize: BUTTON_SIZE.HUGE,\n maximumVerticalSize: BUTTON_SIZE.HUGE,\n\n minHorizontalButtons: 1,\n minVerticalButtons: 1,\n\n maxHorizontalButtons: 2,\n maxVerticalButtons: 6,\n\n allowUnbranded: false,\n allowFundingIcons: true,\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.PAYPAL ]: {\n label: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n allowPrimary: true,\n\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true\n },\n\n [ BUTTON_LABEL.CHECKOUT ]: {\n label: `{ content: checkout }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n allowPrimary: true,\n\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true\n },\n\n [ BUTTON_LABEL.PAY ]: {\n label: `{ content: pay }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n allowPrimary: true,\n\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true\n },\n\n [ BUTTON_LABEL.BUYNOW ]: {\n label: `{ content: buynow }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n defaultBranding: undefined,\n\n allowPrimary: true,\n\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true,\n\n allowUnbranded: true\n },\n\n [ BUTTON_LABEL.INSTALLMENT ]: {\n label: (style) => { return `{ content: ${ style.installmentperiod ? 'installment_period' : 'installment' } }`; },\n logoLabel: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n allowPrimary: true,\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true,\n allowSecondaryVertical: false,\n allowSecondaryHorizontal: false\n },\n\n [ BUTTON_LABEL.CREDIT ]: {\n label: ({ locale }) => {\n if (locale.country === COUNTRY.DE) {\n return `{ logo: ${ BUTTON_LOGO.CREDIT } }`;\n }\n\n return `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } } { logo: ${ BUTTON_LOGO.CREDIT } }`;\n },\n logoLabel: ({ locale }) => {\n if (locale.country === COUNTRY.DE) {\n return `{ logo: ${ BUTTON_LOGO.CREDIT } }`;\n }\n\n return `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } } { logo: ${ BUTTON_LOGO.CREDIT } }`;\n },\n\n tag: `{ content: later_tag }`,\n\n colors: [\n BUTTON_COLOR.DARKBLUE,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLUE\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n defaultColor: BUTTON_COLOR.DARKBLUE,\n\n allowPrimary: true,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false,\n\n allowFundingIcons: false\n },\n\n [ BUTTON_LABEL.VENMO ]: {\n label: `{ logo: ${ BUTTON_LOGO.VENMO } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.VENMO } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.BLUE,\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.BLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLUE\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: true,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: true\n },\n [ BUTTON_LABEL.ITAU ]: {\n label: `{ logo: ${ BUTTON_LOGO.ITAU } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.ITAU } }`,\n\n defaultColor: BUTTON_COLOR.DARKBLUE,\n\n colors: [\n BUTTON_COLOR.DARKBLUE,\n BUTTON_COLOR.BLUE,\n BUTTON_COLOR.BLACK\n ],\n\n logoColors: {\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.DARKBLUE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: true\n },\n\n [ BUTTON_LABEL.IDEAL ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.IDEAL } } Online betalen`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.IDEAL } } Online betalen`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.ELV ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.ELV } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.ELV } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.BANCONTACT ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.BANCONTACT } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.BANCONTACT } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.GIROPAY ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.GIROPAY } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.GIROPAY } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.SOFORT ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.SOFORT } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.SOFORT } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.EPS ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.EPS } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.EPS } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.MYBANK ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.MYBANK } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.MYBANK } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.P24 ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.P24 } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.P24 } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.PAYU ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.PAYU } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PAYU } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.VERKKOPANKKI ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.VERKKOPANKKI } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.VERKKOPANKKI } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.BLIK ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.BLIK } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.BLIK } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.TRUSTLY ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.TRUSTLY } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.TRUSTLY } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.MAXIMA ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.MAXIMA } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.MAXIMA } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.BOLETO ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.BOLETO } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.BOLETO } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.OXXO ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.OXXO } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.OXXO } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.CARD ]: {\n\n label: `{ cards }`,\n logoLabel: `{ cards }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.TRANSPARENT\n ],\n\n logoColors: {\n [ BUTTON_COLOR.TRANSPARENT ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.TRANSPARENT\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n }\n};\n\nexport const FUNDING_TO_DEFAULT_LABEL = {\n [ FUNDING.PAYPAL ]: BUTTON_LABEL.PAYPAL,\n [ FUNDING.VENMO ]: BUTTON_LABEL.VENMO,\n [ FUNDING.ITAU ]: BUTTON_LABEL.ITAU,\n [ FUNDING.CARD ]: BUTTON_LABEL.CARD,\n [ FUNDING.CREDIT ]: BUTTON_LABEL.CREDIT,\n [ FUNDING.IDEAL ]: BUTTON_LABEL.IDEAL,\n [ FUNDING.ELV ]: BUTTON_LABEL.ELV,\n [ FUNDING.BANCONTACT ]: BUTTON_LABEL.BANCONTACT,\n [ FUNDING.GIROPAY ]: BUTTON_LABEL.GIROPAY,\n [ FUNDING.SOFORT ]: BUTTON_LABEL.SOFORT,\n [ FUNDING.EPS ]: BUTTON_LABEL.EPS,\n [ FUNDING.P24 ]: BUTTON_LABEL.P24,\n [ FUNDING.MYBANK ]: BUTTON_LABEL.MYBANK,\n [ FUNDING.PAYU ]: BUTTON_LABEL.PAYU,\n [ FUNDING.VERKKOPANKKI]: BUTTON_LABEL.VERKKOPANKKI,\n [ FUNDING.BLIK ]: BUTTON_LABEL.BLIK,\n [ FUNDING.TRUSTLY ]: BUTTON_LABEL.TRUSTLY,\n [ FUNDING.MAXIMA ]: BUTTON_LABEL.MAXIMA,\n [ FUNDING.BOLETO ]: BUTTON_LABEL.BOLETO,\n [ FUNDING.OXXO ]: BUTTON_LABEL.OXXO\n};\n\nexport const LABEL_TO_FUNDING = {\n [ BUTTON_LABEL.PAYPAL ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.CHECKOUT ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.PAY ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.BUYNOW ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.INSTALLMENT ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.CARD ]: FUNDING.CARD,\n [ BUTTON_LABEL.CREDIT ]: FUNDING.CREDIT,\n [ BUTTON_LABEL.VENMO ]: FUNDING.VENMO,\n [ BUTTON_LABEL.ITAU ]: FUNDING.ITAU,\n [ BUTTON_LABEL.IDEAL ]: FUNDING.IDEAL,\n [ BUTTON_LABEL.BANCONTACT]: FUNDING.BANCONTACT,\n [ BUTTON_LABEL.GIROPAY]: FUNDING.GIROPAY,\n [ BUTTON_LABEL.EPS ]: FUNDING.EPS,\n [ BUTTON_LABEL.SOFORT ]: FUNDING.SOFORT,\n [ BUTTON_LABEL.P24 ]: FUNDING.P24,\n [ BUTTON_LABEL.MYBANK ]: FUNDING.MYBANK,\n [ BUTTON_LABEL.PAYU ]: FUNDING.PAYU,\n [ BUTTON_LABEL.VERKKOPANKKI ]: FUNDING.VERKKOPANKKI,\n [ BUTTON_LABEL.BLIK ]: FUNDING.BLIK,\n [ BUTTON_LABEL.TRUSTLY ]: FUNDING.TRUSTLY,\n [ BUTTON_LABEL.MAXIMA ]: FUNDING.MAXIMA,\n [ BUTTON_LABEL.BOLETO ]: FUNDING.BOLETO,\n [ BUTTON_LABEL.OXXO ]: FUNDING.OXXO\n};\n\nexport const BUTTON_RELATIVE_STYLE = {\n FUNDINGICONS: 100,\n TAGLINE: 50,\n VERTICAL_MARGIN: 30\n};\n\nexport const BUTTON_STYLE = {\n\n [ BUTTON_SIZE.TINY ]: {\n defaultWidth: 75,\n defaultHeight: 25,\n minWidth: 75,\n maxWidth: 150,\n minHeight: 25,\n maxHeight: 30,\n buttonTextMargin: 0.5,\n allowFunding: true,\n allowTagline: false,\n byPayPalHeight: 0\n },\n\n [ BUTTON_SIZE.SMALL ]: {\n defaultWidth: 150,\n defaultHeight: 25,\n minWidth: 150,\n maxWidth: 200,\n minHeight: 25,\n maxHeight: 55,\n buttonTextMargin: 0.5,\n allowFunding: true,\n allowTagline: true,\n byPayPalHeight: 0\n },\n\n [ BUTTON_SIZE.MEDIUM ]: {\n defaultWidth: 250,\n defaultHeight: 35,\n minWidth: 200,\n maxWidth: 300,\n minHeight: 35,\n maxHeight: 55,\n buttonTextMargin: 1,\n allowFunding: true,\n allowTagline: true,\n byPayPalHeight: 30\n },\n\n [ BUTTON_SIZE.LARGE ]: {\n defaultWidth: 350,\n defaultHeight: 45,\n minWidth: 300,\n maxWidth: 500,\n minHeight: 30,\n maxHeight: 55,\n buttonTextMargin: 1,\n allowFunding: true,\n allowTagline: true,\n byPayPalHeight: 30\n },\n\n [ BUTTON_SIZE.HUGE ]: {\n defaultWidth: 500,\n defaultHeight: 55,\n minWidth: 500,\n maxWidth: 750,\n minHeight: 40,\n maxHeight: 55,\n buttonTextMargin: 1.25,\n allowFunding: true,\n allowTagline: true,\n byPayPalHeight: 30\n }\n};\n\nexport function labelToFunding(label : ?string) : string {\n return label ? LABEL_TO_FUNDING[label] : FUNDING.PAYPAL;\n}\n\nexport function fundingToDefaultLabel(funding : string) : $Values {\n return FUNDING_TO_DEFAULT_LABEL[funding];\n}\n\nfunction getConfig(conf : Object, category : string, key : string, def : ?T) : T {\n const categoryConfig = conf[category];\n\n if (categoryConfig && categoryConfig.hasOwnProperty(key)) {\n return categoryConfig[key];\n }\n\n if (conf[DEFAULT] && conf[DEFAULT].hasOwnProperty(key)) {\n return conf[DEFAULT][key];\n }\n\n if (arguments.length >= 4) {\n // $FlowFixMe\n return def;\n }\n\n throw new Error(`No value found for ${ category }:${ key }`);\n}\n\nexport function getButtonConfig(label : string, key : string, def : ?T) : T {\n return getConfig(BUTTON_CONFIG, label, key, def);\n}\n","/* @flow */\n\nimport { BUTTON_LAYOUT, BUTTON_STYLE_OPTIONS, BUTTON_LABEL, BUTTON_COLOR, BUTTON_SIZE, BUTTON_SHAPE } from '../constants';\nimport { determineEligibleFunding, determineEligibleCards } from '../funding';\nimport { memoize, sortBy } from '../lib/util';\nimport type { LocaleType, FundingSelection, FundingList, CheckoutCustomizationType } from '../types';\nimport { FUNDING_ORDER } from '../funding/config';\n\nimport { getButtonConfig, labelToFunding } from './config';\n\nfunction parseLocale(locale : string) : LocaleType {\n const [ lang, country ] = locale.split('_');\n return { country, lang };\n}\n\nexport function determineMaxButtons({ label, layout, max } : { layout : string, label : string, max : number }) : number {\n\n const allowed = (layout === BUTTON_LAYOUT.HORIZONTAL)\n ? getButtonConfig(label, 'allowPrimaryHorizontal')\n : getButtonConfig(label, 'allowPrimaryVertical');\n\n if (!allowed) {\n return 1;\n }\n\n const configMax = (layout === BUTTON_LAYOUT.HORIZONTAL)\n ? getButtonConfig(label, 'maxHorizontalButtons')\n : getButtonConfig(label, 'maxVerticalButtons');\n\n return max\n ? Math.min(configMax, max)\n : configMax;\n}\n\nfunction enableTagline({ tagline, branding, fundingicons, layout }) : boolean {\n return Boolean(tagline && branding && !fundingicons && layout === BUTTON_LAYOUT.HORIZONTAL);\n}\n\ntype NormalizedProps = {|\n size : $Values,\n label : $Values,\n color : $Values,\n shape : $Values,\n locale : LocaleType,\n branding : boolean,\n fundingicons : boolean,\n tagline : boolean,\n funding : FundingSelection,\n layout : $Values,\n sources : FundingList,\n max : number,\n multiple : boolean,\n env : string,\n height : ?number,\n cards : $ReadOnlyArray,\n installmentperiod : number,\n checkoutCustomization : ?CheckoutCustomizationType\n|};\n\nexport const normalizeProps = memoize((props : Object, defs? : { locale? : LocaleType } = {}) : NormalizedProps => {\n\n let {\n env,\n locale,\n style = {},\n funding,\n commit,\n checkoutCustomization\n } = props;\n\n locale = locale ? parseLocale(locale) : (defs.locale || getButtonConfig('DEFAULT', 'defaultLocale'));\n \n // funding indicated the allowed/disallowed payment methods (including cards) passed in the integration script\n // $FlowFixMe\n funding = funding || {};\n funding.allowed = funding.allowed || [];\n funding.disallowed = funding.disallowed || [];\n funding.remembered = funding.remembered || [];\n \n const label = style[BUTTON_STYLE_OPTIONS.LABEL] || getButtonConfig('DEFAULT', (style.layout === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalLabel' : 'defaultLabel');\n const layout = style[BUTTON_STYLE_OPTIONS.LAYOUT] || getButtonConfig(label, 'defaultLayout');\n\n let {\n [ BUTTON_STYLE_OPTIONS.SIZE ]: size = getButtonConfig(label, (layout === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalSize' : 'defaultSize'),\n [ BUTTON_STYLE_OPTIONS.COLOR ]: color = getButtonConfig(label, 'defaultColor'),\n [ BUTTON_STYLE_OPTIONS.SHAPE ]: shape = getButtonConfig(label, 'defaultShape'),\n [ BUTTON_STYLE_OPTIONS.BRANDING ]: branding = getButtonConfig(label, (layout === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalBranding' : 'defaultBranding'),\n [ BUTTON_STYLE_OPTIONS.FUNDINGICONS ]: fundingicons = getButtonConfig(label, 'defaultFundingIcons'),\n [ BUTTON_STYLE_OPTIONS.TAGLINE ]: tagline = getButtonConfig(label, 'defaultTagline'),\n [ BUTTON_STYLE_OPTIONS.MAXBUTTONS ]: max,\n [ BUTTON_STYLE_OPTIONS.HEIGHT ]: height,\n [ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD ]: installmentperiod\n } = style;\n\n // max is the maximum number of buttons to be displayed in the iframe\n max = determineMaxButtons({ label, layout, max });\n\n const selected = labelToFunding(label);\n let sources = determineEligibleFunding({ funding, selected, locale, env, layout, commit });\n // sources is an array of funding sources eligible to be displayed\n sources = sortBy(sources.slice(0, max), FUNDING_ORDER);\n // multiple is a boolean value indicating whether the sources is greater than 1\n const multiple = sources.length > 1;\n\n if (multiple) {\n branding = true;\n }\n\n tagline = enableTagline({ tagline, branding, fundingicons, layout });\n\n const cards = determineEligibleCards({ funding, locale });\n \n return { size, label, locale, color, shape, branding, fundingicons,\n tagline, funding, layout, sources, max, multiple, env, height, cards, installmentperiod, checkoutCustomization };\n});\n","/* @flow */\n\nimport { BUTTON_LABEL, BUTTON_LAYOUT, BUTTON_SIZE, BUTTON_STYLE_OPTIONS, ALLOWED_INSTALLMENT_COUNTRIES, ALLOWED_INSTALLMENT_PERIOD, LOCALE } from '../constants';\n\nimport { BUTTON_CONFIG, BUTTON_STYLE, getButtonConfig } from './config';\n\nexport function validateButtonLocale(locale : string) {\n\n if (!locale) {\n throw new Error(`Expected props.locale to be set`);\n }\n\n if (!locale.match(/^[a-z]{2}[_][A-Z][A-Z0-9]$/)) {\n throw new Error(`Expected props.locale to be valid, got ${ locale }`);\n }\n\n const [ lang, country ] = locale.split('_');\n\n if (!LOCALE[country] || LOCALE[country].indexOf(lang) === -1) {\n throw new Error(`Expected props.locale to be valid`);\n }\n}\n\nexport function validateRegionSpecificButton(style : Object = {}, locale : string = 'en_US') {\n\n const country = locale.split('_')[1];\n\n const isInstallmentAllowedCountry = ALLOWED_INSTALLMENT_COUNTRIES.indexOf(country) !== -1;\n\n if (!isInstallmentAllowedCountry && style.label === BUTTON_LABEL.INSTALLMENT) {\n throw new Error(`Unexpected label: style.${ style.label } for country: ${ country }`);\n }\n\n if (!isInstallmentAllowedCountry && style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD]) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD } is invalid for country: ${ country }`);\n }\n\n if (isInstallmentAllowedCountry && style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD] && style.label !== BUTTON_LABEL.INSTALLMENT) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD } is invalid for label: style.${ style.label }`);\n }\n\n if (isInstallmentAllowedCountry && style.label === BUTTON_LABEL.INSTALLMENT && style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD]\n && typeof style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD] !== 'number') {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD } is expected to be a number`);\n }\n\n if (isInstallmentAllowedCountry && style.label === BUTTON_LABEL.INSTALLMENT && style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD]\n && ALLOWED_INSTALLMENT_PERIOD[country].indexOf(style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD]) === -1) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD }: ${ style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD] } is not a valid installment number for ${ style.label }`);\n }\n\n}\n\nexport function validateButtonStyle(style : Object = {}, props : Object) {\n\n if (!style) {\n throw new Error(`Expected props.style to be set`);\n }\n\n const label = style[BUTTON_STYLE_OPTIONS.LABEL] || getButtonConfig('DEFAULT', (style[BUTTON_STYLE_OPTIONS.LAYOUT] === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalLabel' : 'defaultLabel');\n\n if (!BUTTON_CONFIG[label]) {\n throw new Error(`Invalid button label: ${ label }, expected: ${ Object.keys(BUTTON_CONFIG[label]).join(', ') }`);\n }\n\n const {\n [ BUTTON_STYLE_OPTIONS.COLOR ]: color,\n [ BUTTON_STYLE_OPTIONS.SHAPE ]: shape,\n [ BUTTON_STYLE_OPTIONS.SIZE ]: size,\n [ BUTTON_STYLE_OPTIONS.BRANDING ]: branding,\n [ BUTTON_STYLE_OPTIONS.FUNDINGICONS ]: fundingicons,\n [ BUTTON_STYLE_OPTIONS.TAGLINE ]: tagline,\n [ BUTTON_STYLE_OPTIONS.LAYOUT ]: layout,\n [ BUTTON_STYLE_OPTIONS.MAXBUTTONS ]: maxbuttons,\n [ BUTTON_STYLE_OPTIONS.HEIGHT ]: height\n } = style;\n\n if (color && getButtonConfig(label, 'colors').indexOf(color) === -1) {\n throw new Error(`Unexpected style.${ BUTTON_STYLE_OPTIONS.COLOR } for ${ label } button: ${ color }, expected ${ getButtonConfig(label, 'colors').join(', ') }`);\n }\n\n if (shape && getButtonConfig(label, 'shapes').indexOf(shape) === -1) {\n throw new Error(`Unexpected style.${ BUTTON_STYLE_OPTIONS.SHAPE } for ${ label } button: ${ shape }, expected ${ getButtonConfig(label, 'shapes').join(', ') }`);\n }\n\n if (size && getButtonConfig(label, 'sizes').indexOf(size) === -1) {\n throw new Error(`Unexpected style.${ BUTTON_STYLE_OPTIONS.SIZE } for ${ label } button: ${ size }, expected ${ getButtonConfig(label, 'sizes').join(', ') }`);\n }\n\n if (branding === false) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.BRANDING }:false is not allowed`);\n }\n\n if (fundingicons && !getButtonConfig(label, 'allowFundingIcons')) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.FUNDINGICONS }:true is not allowed for ${ label } button`);\n }\n\n if (layout && getButtonConfig(label, 'layouts').indexOf(layout) === -1) {\n throw new Error(`Unexpected style.${ BUTTON_STYLE_OPTIONS.LAYOUT } for ${ label } button: ${ layout }, expected ${ getButtonConfig(label, 'layouts').join(', ') }`);\n }\n\n if (maxbuttons !== undefined) {\n if (typeof maxbuttons !== 'number') {\n throw new TypeError(`Expected style.${ BUTTON_STYLE_OPTIONS.MAXBUTTONS } to be a number, got: ${ maxbuttons }`);\n }\n\n if (maxbuttons < 1) {\n throw new Error(`Expected style.${ BUTTON_STYLE_OPTIONS.MAXBUTTONS } to be a at least 1, got: ${ maxbuttons }`);\n }\n\n const minButtons = (layout === BUTTON_LAYOUT.VERTICAL)\n ? getButtonConfig(label, 'minVerticalButtons')\n : getButtonConfig(label, 'minHorizontalButtons');\n\n if (maxbuttons < minButtons) {\n throw new Error(`Expected style.${ BUTTON_STYLE_OPTIONS.MAXBUTTONS } to be no fewer than ${ minButtons }, got ${ maxbuttons }`);\n }\n }\n\n if (height !== undefined) {\n if (typeof height !== 'number') {\n throw new TypeError(`Expected style.${ BUTTON_STYLE_OPTIONS.HEIGHT } to be a number, got: ${ maxbuttons }`);\n }\n\n const buttonSize = size || getButtonConfig(label, (style.layout === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalSize' : 'defaultSize');\n\n const { minHeight, maxHeight } = (size === BUTTON_SIZE.RESPONSIVE) ? {\n minHeight: BUTTON_STYLE[BUTTON_SIZE.SMALL].minHeight,\n maxHeight: BUTTON_STYLE[BUTTON_SIZE.HUGE].maxHeight\n } : BUTTON_STYLE[buttonSize];\n\n if (height < minHeight || height > maxHeight) {\n throw new Error(`Expected style.${ BUTTON_STYLE_OPTIONS.HEIGHT } to be between ${ minHeight }px and ${ maxHeight }px - got ${ height }px`);\n }\n }\n\n if (!getButtonConfig(label, 'allowPrimary')) {\n throw new Error(`${ label } can not be used as primary button label`);\n }\n\n if (layout === BUTTON_LAYOUT.VERTICAL) {\n\n if (size && [ BUTTON_SIZE.MEDIUM, BUTTON_SIZE.LARGE, BUTTON_SIZE.RESPONSIVE ].indexOf(size) === -1) {\n throw new Error(`Button must be at least ${ BUTTON_SIZE.MEDIUM } size for ${ BUTTON_LAYOUT.VERTICAL } layout`);\n }\n\n if (!getButtonConfig(label, 'allowPrimaryVertical')) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.LABEL } option is not allowed for ${ BUTTON_LAYOUT.VERTICAL } layout - got ${ label }`);\n }\n\n if (fundingicons) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.FUNDINGICONS } not allowed for ${ BUTTON_LAYOUT.VERTICAL } layout - got ${ fundingicons }`);\n }\n\n if (tagline) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.TAGLINE } is not allowed for ${ BUTTON_LAYOUT.VERTICAL } layout - got ${ tagline }`);\n }\n }\n\n validateRegionSpecificButton(style, props.locale);\n}\n\nexport function validateButtonProps(props : Object) {\n\n if (!props) {\n throw new Error(`Expected props`);\n }\n\n const { locale, style } = props;\n\n validateButtonLocale(locale);\n validateButtonStyle(style, props);\n}\n","/* @flow */\n\nexport const CLASS = {\n SHOULD_FOCUS: 'paypal-should-focus',\n\n CONTAINER: 'paypal-button-container',\n BUTTON: 'paypal-button',\n \n BUTTON_LABEL: 'paypal-button-label-container',\n\n LABEL: 'paypal-button-label',\n COLOR: 'paypal-button-color',\n LOGO_COLOR: 'paypal-button-logo-color',\n SHAPE: 'paypal-button-shape',\n BRANDING: 'paypal-button-branding',\n LAYOUT: 'paypal-button-layout',\n NUMBER: 'paypal-button-number',\n ENV: 'paypal-button-env',\n\n TAGLINE: 'paypal-button-tagline',\n TAGLINE_COLOR: 'paypal-button-tagline-color',\n FUNDINGICONS: 'paypal-button-fundingicons',\n\n TEXT: 'paypal-button-text',\n LOGO: 'paypal-button-logo',\n CARD: 'paypal-button-card',\n\n SEPARATOR: 'paypal-separator',\n HIDDEN: 'hidden',\n DOM_READY: 'dom-ready',\n \n PERSONALIZATION_TEXT: 'personalization-text'\n};\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { create } from 'zoid/src';\nimport { type Component } from 'zoid/src/component/component';\nimport { info, warn, track, error, flush as flushLogs, immediateFlush } from 'beaver-logger/client';\nimport { getDomain } from 'cross-domain-utils/src';\nimport { base64encode } from 'belter/src';\nimport { debounce, once } from 'zoid/src/lib';\n\nimport { pptm } from '../external';\nimport { config } from '../config';\nimport { SOURCE, ENV, FPTI, FUNDING, BUTTON_LABEL, BUTTON_COLOR,\n BUTTON_SIZE, BUTTON_SHAPE, BUTTON_LAYOUT, COUNTRY } from '../constants';\nimport { redirect as redir, checkRecognizedBrowser,\n getBrowserLocale, getSessionID, request, getScriptVersion,\n isIEIntranet, isEligible, getCurrentScriptUrl,\n getDomainSetting, extendUrl, isDevice, rememberFunding,\n getRememberedFunding, memoize, uniqueID, getThrottle, getBrowser } from '../lib';\nimport { rest } from '../api';\nimport { onAuthorizeListener } from '../experiments';\nimport { getPaymentType, awaitBraintreeClient,\n mapPaymentToBraintree, type BraintreePayPalClient } from '../integrations';\nimport { awaitPopupBridge } from '../integrations/popupBridge';\nimport { validateFunding, isFundingIneligible, isFundingAutoEligible } from '../funding';\n\nimport { containerTemplate, componentTemplate } from './template';\nimport { validateButtonLocale, validateButtonStyle } from './validate';\nimport { setupButtonChild } from './child';\nimport { normalizeProps } from './props';\n\npptm.listenForLoadWithNoContent();\n\nfunction isCreditDualEligible(props) : boolean {\n\n const { label, funding, layout, locale, max, sources, env } = normalizeProps(props, { locale: getBrowserLocale() });\n const { allowed } = funding;\n const { country } = locale;\n\n if (allowed && allowed.indexOf(FUNDING.CREDIT) !== -1) {\n return false;\n }\n\n if (layout !== BUTTON_LAYOUT.HORIZONTAL) {\n return false;\n }\n\n if (max === 1) {\n return false;\n }\n\n if (label === BUTTON_LABEL.CREDIT) {\n return false;\n }\n\n if (country !== COUNTRY.US) {\n return false;\n }\n\n if (isFundingIneligible(FUNDING.CREDIT, { funding, locale, layout, env })) {\n return false;\n }\n\n if (isFundingAutoEligible(FUNDING.CREDIT, { funding, locale, layout })) {\n return false;\n }\n\n if (sources.indexOf(FUNDING.CREDIT) !== -1) {\n return false;\n }\n\n const domain = getDomain().replace(/^https?:\\/\\//, '').replace(/^www\\./, '');\n\n if (config.creditTestDomains.indexOf(domain) === -1) {\n return false;\n }\n\n return true;\n}\n\nlet creditThrottle;\n\ntype ButtonOptions = {|\n style : {|\n maxbuttons? : number,\n layout? : string,\n label? : string,\n size? : string,\n shape? : string,\n color? : string,\n tagline? : boolean\n |},\n client : {\n [string] : (string | ZalgoPromise)\n },\n funding? : { allowed? : $ReadOnlyArray, disallowed? : $ReadOnlyArray },\n env? : string,\n locale? : string,\n logLevel : string,\n awaitPopupBridge : Function,\n meta : Object,\n validate? : ({ enable : () => ZalgoPromise, disable : () => ZalgoPromise }) => void,\n stage? : string,\n stageUrl? : string,\n localhostUrl? : string,\n checkoutUri? : string,\n authCode? : string,\n enableNativeCheckout? : boolean\n|};\n\nexport const Button : Component = create({\n\n tag: 'paypal-button',\n name: 'ppbutton',\n\n buildUrl(props) : string {\n const env = props.env || config.env;\n const url = config.buttonUrls[env];\n return url;\n },\n\n contexts: {\n iframe: true,\n popup: false\n },\n\n scrolling: false,\n listenForResize: true,\n\n containerTemplate,\n\n autoResize: {\n height: true,\n width: false\n },\n\n prerenderTemplate({ props, jsxDom } : { props : Object, jsxDom : Function }) : HTMLElement {\n\n const template = (\n
\n );\n\n template.addEventListener('click', () => {\n warn('button_pre_template_click');\n\n if (isIEIntranet()) {\n warn(`button_pre_template_click_intranet_mode`);\n\n flushLogs();\n\n // eslint-disable-next-line no-alert\n alert(`IE Intranet mode is not supported by PayPal. Please disable intranet mode, or continue in an alternate browser.`);\n }\n\n if (getDomainSetting('allow_full_page_fallback')) {\n info('pre_template_force_full_page');\n\n this.props.payment().then(token => {\n window.top.location = extendUrl(config.checkoutUrl, { token });\n });\n }\n });\n\n return (\n \n \n { template }\n \n \n );\n },\n\n get version() : string {\n return getScriptVersion();\n },\n\n get domain() : Object {\n return config.paypalDomains;\n },\n\n attributes: {\n iframe: {\n allowpaymentrequest: 'allowpaymentrequest'\n }\n },\n\n validate() {\n if (!isEligible()) {\n warn('button_render_ineligible');\n }\n },\n\n props: {\n domain: {\n type: 'string',\n required: false,\n def() : string {\n return window.location.host;\n },\n queryParam: true\n },\n\n sessionID: {\n type: 'string',\n required: false,\n def() : string {\n return getSessionID();\n },\n queryParam: true\n },\n\n buttonSessionID: {\n type: 'string',\n required: false,\n def() : ?string {\n return uniqueID();\n },\n queryParam: true\n },\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n }\n },\n\n meta: {\n type: 'object',\n required: false,\n def() : Object {\n return {};\n }\n },\n\n enableNativeCheckout: {\n type: 'boolean',\n required: false,\n def() : boolean {\n return false;\n }\n },\n\n client: {\n type: 'object',\n required: false,\n def() : Object {\n return {};\n },\n\n validate(client, props) {\n const env = props.env || config.env;\n\n if (!client[env]) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (typeof client[env] === 'string') {\n if (client[env].match(/^(.)\\1+$/)) {\n throw new Error(`Invalid client ID: ${ client[env] }`);\n }\n } else if (!ZalgoPromise.isPromise(client[env])) {\n throw new Error(`Expected client token to be either a string or a promise`);\n }\n },\n\n decorate(client : Object) : Object {\n if (client && client.sandbox === 'demo_sandbox_client_id') {\n client.sandbox = 'AZDxjDScFpQtjWTOUtWKbyN_bDt4OgqaF4eYXlewfBP4-8aqX3PiV8e1GWU6liB2CUXlkA59kJXE7M6R';\n }\n\n return client;\n }\n },\n\n source: {\n type: 'string',\n required: false,\n def() : string {\n return SOURCE.MANUAL;\n }\n },\n\n prefetchLogin: {\n type: 'boolean',\n required: false\n },\n\n stage: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.STAGE || env === ENV.LOCAL) {\n return config.stage;\n }\n }\n },\n\n updateClientConfiguration: {\n type: 'boolean',\n required: false,\n def: () => {\n return true;\n }\n },\n\n stageUrl: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.STAGE || env === ENV.LOCAL) {\n return config.stageUrl;\n }\n }\n },\n\n localhostUrl: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.LOCAL) {\n return config.localhostUrl;\n }\n }\n },\n\n checkoutUri: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : ?string {\n return config.checkoutUri;\n }\n },\n\n braintree: {\n type: 'object',\n required: false,\n validate(braintree, props) {\n\n if (!braintree.paypalCheckout) {\n throw new Error(`Expected Braintree paypal-checkout component to be loaded`);\n }\n\n if (!props.client) {\n throw new Error(`Expected client prop to be passed with Braintree authorization keys`);\n }\n },\n // $FlowFixMe\n decorate(braintree, props) : ZalgoPromise {\n const env = props.env || config.env;\n // $FlowFixMe\n return ZalgoPromise.hash(props.client).then(client => {\n return awaitBraintreeClient(braintree, client[env]);\n });\n }\n },\n\n payment: {\n type: 'function',\n required: true,\n memoize: false,\n timeout: __TEST__ ? 500 : 10 * 1000,\n alias: 'billingAgreement',\n\n decorate(original) : Function {\n return function payment(data = {}) : ZalgoPromise {\n\n const actions = {\n request,\n payment: {\n create: (options) => {\n return this.props.braintree\n ? this.props.braintree.then(client => {\n return client.createPayment(mapPaymentToBraintree(options.payment || options));\n })\n : ZalgoPromise.hash(this.props.client).then(client => {\n return rest.payment.create(this.props.env, client, options);\n });\n }\n },\n order: {\n create: (options) => {\n return ZalgoPromise.hash(this.props.client).then(client => {\n return rest.order.create(this.props.env, client, options);\n });\n }\n },\n braintree: {\n create: (options) => {\n if (!this.props.braintree) {\n throw new Error(`Can not create using Braintree - no braintree client provided`);\n }\n\n return this.props.braintree.then(client => {\n return client.createPayment(options);\n });\n }\n }\n };\n\n if (getDomainSetting('memoize_payment') && this.memoizedToken) {\n return this.memoizedToken;\n }\n\n this.memoizedToken = ZalgoPromise.try(original, this, [ data, actions ]);\n\n const startTime = Date.now();\n\n this.memoizedToken = this.memoizedToken.then(token => {\n\n if (!token) {\n error(`no_token_passed_to_payment`);\n throw new Error(`No value passed to payment`);\n }\n\n const elapsed = Date.now() - startTime;\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.RECIEVE_PAYMENT,\n [ FPTI.KEY.CONTEXT_TYPE ]: FPTI.CONTEXT_TYPE[getPaymentType(token)],\n [ FPTI.KEY.CONTEXT_ID ]: token,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.RESPONSE_DURATION ]: elapsed,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n flushLogs();\n\n return token;\n });\n\n return this.memoizedToken;\n };\n }\n },\n\n authCode: {\n type: 'string',\n required: false,\n def() : string {\n return config.authCode;\n }\n },\n\n funding: {\n type: 'object',\n required: false,\n queryParam: true,\n validate({ allowed = [], disallowed = [] } : Object = {}) {\n validateFunding({ allowed, disallowed, remembered: [] });\n },\n def() : Object {\n return {};\n },\n decorate({ allowed = [], disallowed = [] } : Object = {}, props : ButtonOptions) : {} {\n\n allowed = Array.isArray(allowed) ? allowed : [];\n disallowed = Array.isArray(disallowed) ? disallowed : [];\n\n if (allowed && allowed.indexOf(FUNDING.VENMO) !== -1) {\n allowed = allowed.filter(source => (source !== FUNDING.VENMO));\n }\n if (allowed && allowed.indexOf(FUNDING.ITAU) !== -1) {\n allowed = allowed.filter(source => (source !== FUNDING.ITAU));\n }\n\n if (isCreditDualEligible(props)) {\n creditThrottle = getThrottle('dual_credit_automatic', 50);\n\n if (creditThrottle.isEnabled()) {\n allowed = [ ...allowed, FUNDING.CREDIT ];\n }\n }\n\n let remembered = getRememberedFunding(sources => sources);\n\n if (!isDevice() || getDomainSetting('disable_venmo')) {\n if (remembered && remembered.indexOf(FUNDING.VENMO) !== -1) {\n remembered = remembered.filter(source => (source !== FUNDING.VENMO));\n }\n\n if (disallowed && disallowed.indexOf(FUNDING.VENMO) === -1) {\n disallowed = [ ...disallowed, FUNDING.VENMO ];\n }\n }\n\n return {\n allowed,\n disallowed,\n remembered,\n remember(sources) {\n rememberFunding(sources);\n }\n };\n }\n },\n\n commit: {\n type: 'boolean',\n required: false,\n queryParam: true,\n queryValue: (val) => {\n return val ? 'true' : 'false';\n }\n },\n\n onRender: {\n type: 'function',\n promisify: true,\n required: false,\n noop: true,\n decorate(original) : Function {\n return function decorateOnRender() : mixed {\n const { browser = 'unrecognized', version = 'unrecognized' } = getBrowser();\n info(`button_render_browser_${ browser }_${ isDevice() ? 'mobile' : 'desktop' }_${ version }`);\n\n const style = this.props.style || {};\n\n info(`button_render`);\n info(`button_render_color_${ style.color || 'default' }`);\n info(`button_render_shape_${ style.shape || 'default' }`);\n info(`button_render_size_${ style.size || 'default' }`);\n info(`button_render_label_${ style.label || 'default' }`);\n info(`button_render_branding_${ style.branding || 'default' }`);\n info(`button_render_fundingicons_${ style.fundingicons || 'default' }`);\n info(`button_render_tagline_${ style.tagline || 'default' }`);\n\n pptm.listenForButtonRender();\n pptm.reloadPptmScript(this.props.client[this.props.env]);\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_RENDER,\n [ FPTI.KEY.BUTTON_TYPE ]: FPTI.BUTTON_TYPE.IFRAME,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.BUTTON_SOURCE ]: this.props.source\n });\n\n if (isIEIntranet()) {\n warn(`button_render_intranet_mode`);\n }\n\n if (creditThrottle) {\n creditThrottle.logStart({\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID\n });\n }\n\n flushLogs();\n\n return original.apply(this, arguments);\n };\n }\n },\n\n onAuthorize: {\n type: 'function',\n alias: 'onApprove',\n required: true,\n\n decorate(original) : Function {\n return function decorateOnAuthorize(data, actions) : void | ZalgoPromise {\n\n if (data && !data.intent) {\n warn(`button_authorize_no_intent`, { paymentID: data.paymentID, token: data.paymentToken });\n }\n\n info('button_authorize');\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CHECKOUT_AUTHORIZE,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n if (isIEIntranet()) {\n warn(`button_authorize_intranet_mode`);\n }\n\n if (!isEligible()) {\n info('button_authorize_ineligible');\n }\n\n checkRecognizedBrowser('authorize');\n\n flushLogs();\n\n const restart = actions.restart;\n actions.restart = () => {\n return restart().then(() => {\n return new ZalgoPromise();\n });\n };\n\n actions.redirect = (win, url) => {\n return ZalgoPromise.try(() => {\n if (actions.close) {\n return actions.close();\n }\n }).then(() => {\n return redir(win || window.top, url || data.returnUrl);\n });\n };\n\n actions.payment.tokenize = memoize(() => {\n if (!this.props.braintree) {\n throw new Error(`Must pass in Braintree client to tokenize payment`);\n }\n\n return this.props.braintree\n .then(client => client.tokenizePayment(data));\n });\n\n const execute = actions.payment.execute;\n actions.payment.execute = () => {\n return execute().then(result => {\n\n if (!result || !result.id || !result.intent || !result.state) {\n warn(`execute_result_missing_data`);\n return new ZalgoPromise();\n }\n\n return result;\n });\n };\n\n const get = actions.payment.get;\n\n actions.payment.get = () => {\n return get().then(result => {\n if (!result || !result.id || !result.intent || !result.state) {\n warn(`get_result_missing_data`);\n return new ZalgoPromise();\n }\n\n return result;\n });\n };\n\n actions.request = request;\n\n onAuthorizeListener.trigger({\n paymentToken: data.paymentToken\n });\n\n if (creditThrottle) {\n creditThrottle.logComplete({\n [FPTI.KEY.BUTTON_SESSION_UID]: this.props.buttonSessionID\n });\n }\n\n return ZalgoPromise.try(() => {\n\n if (this.props.braintree) {\n return actions.payment.tokenize().then(({ nonce }) => {\n // $FlowFixMe\n Object.defineProperty(data, 'nonce', {\n get: () => {\n info('nonce_getter');\n flushLogs();\n return nonce;\n }\n });\n });\n }\n\n }).then(() => {\n return original.call(this, data, actions);\n }).catch(err => {\n if (this.props.onError) {\n return this.props.onError(err);\n }\n throw err;\n });\n };\n }\n },\n\n onShippingChange: {\n type: 'function',\n required: false,\n\n decorate(original) : void | Function {\n if (!original) {\n return;\n }\n\n return function decorateOnShippingChange(data, actions) : ZalgoPromise {\n\n info('button_shipping_change');\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CHECKOUT_SHIPPING_CHANGE,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n flushLogs();\n const timeout = __TEST__ ? 500 : 10 * 1000;\n\n const patch = actions.payment.patch;\n actions.payment.patch = (patchObject) => {\n return ZalgoPromise.try(() => {\n return patch(patchObject);\n });\n };\n\n const resolve = () => ZalgoPromise.resolve();\n const reject = actions.reject || function reject() {\n throw new Error(`Missing reject action callback`);\n };\n\n return ZalgoPromise.try(() => {\n return original.call(this, data, { ...actions, resolve, reject });\n }).timeout(timeout,\n new Error(`Timed out waiting ${ timeout }ms for payment`)).catch(err => {\n if (this.props.onError) {\n this.props.onError(err);\n }\n throw err;\n });\n };\n }\n },\n\n onError: {\n type: 'function',\n required: false,\n promisify: true,\n sendToChild: true,\n once: true,\n def() : (() => void) {\n return function onError(err : mixed) {\n if (isIEIntranet()) {\n warn(`button_error_intranet_mode`);\n flushLogs();\n\n // eslint-disable-next-line no-alert\n alert(`IE Intranet mode is not supported by PayPal. Please disable intranet mode, or continue in an alternate browser.`);\n }\n\n setTimeout(() => {\n throw err;\n });\n };\n }\n },\n\n onCancel: {\n type: 'function',\n required: false,\n noop: true,\n\n decorate(original) : Function {\n return function decorateOnCancel(data, actions) : void | ZalgoPromise {\n\n info('button_cancel');\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CHECKOUT_CANCEL,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n flushLogs();\n\n const redirect = (win, url) => {\n return ZalgoPromise.all([\n redir(win || window.top, url || data.cancelUrl),\n actions.close()\n ]);\n };\n\n return original.call(this, data, { ...actions, redirect });\n };\n }\n },\n\n onClick: {\n type: 'function',\n required: false,\n noop: true,\n decorate(original) : Function {\n return function decorateOnClick(data : ?{ fundingSource : string, card? : string, flow? : string, button_version? : string }) : void {\n\n info('button_click');\n if (data && data.flow) {\n info(`pay_flow_${ data.flow }`);\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.BUTTON,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_CLICK,\n [ FPTI.KEY.BUTTON_TYPE ]: FPTI.BUTTON_TYPE.IFRAME,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.CHOSEN_FUNDING ]: data && (data.card || data.fundingSource),\n [ FPTI.KEY.PAYMENT_FLOW ]: data && data.flow,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n if (isIEIntranet()) {\n warn('button_click_intranet_mode');\n }\n\n if (creditThrottle) {\n creditThrottle.log('click', {\n [ FPTI.KEY.STATE ]: FPTI.STATE.BUTTON,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_CLICK,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID\n });\n }\n\n const { color = 'default' } = this.props.style || {};\n info(`button_click_color_${ color }`);\n\n flushLogs();\n\n return original.apply(this, arguments);\n };\n }\n },\n\n onResize: {\n type: 'function',\n required: false,\n get value() : Function {\n let initialHeight;\n const logInlineGuestOutOfViewPortOnlyOnce = once((data) => {\n info('buttons_expansion_outside_viewport', data);\n immediateFlush();\n });\n\n return function onResizeHandler() {\n const container = this.container;\n\n if (!container) {\n return;\n }\n\n if (!initialHeight) {\n initialHeight = container.offsetHeight;\n }\n\n const getScrollOffsetY = () => {\n if (window.pageYOffset) {\n return window.pageYOffset;\n }\n\n if (document.documentElement) {\n return document.documentElement.scrollTop;\n }\n\n return 0;\n };\n\n // explanation https://github.com/paypal/paypal-checkout-components/pull/1136#discussion_r298025574\n const checkIfExpansionInViewport = () => {\n try {\n const scrollOffsetY = getScrollOffsetY();\n const windowHeight = window.innerHeight;\n\n const containerOffsetY = container.getBoundingClientRect().top;\n const VISIBLE_THRESHOLD = 200; // 200px, for the first input field to be visible\n\n return scrollOffsetY + windowHeight > initialHeight + containerOffsetY + VISIBLE_THRESHOLD;\n } catch (err) {\n info('cannot_get_the_viewport_information');\n return false;\n }\n };\n\n const isContainerExpanded = container && container.offsetHeight > initialHeight;\n const isExpansionInViewport = checkIfExpansionInViewport();\n\n if (!isContainerExpanded || isExpansionInViewport) {\n return;\n }\n\n logInlineGuestOutOfViewPortOnlyOnce({\n height: container.offsetHeight,\n window: {\n width: window.innerWidth,\n height: window.innerHeight\n }\n });\n };\n },\n decorate: (original) => debounce(original)\n },\n\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n },\n\n validate: validateButtonLocale\n },\n\n style: {\n type: 'object',\n required: false,\n queryParam: true,\n alias: 'buttonStyle',\n\n def() : Object {\n return {\n color: BUTTON_COLOR.GOLD,\n shape: BUTTON_SHAPE.PILL,\n size: BUTTON_SIZE.SMALL,\n label: BUTTON_LABEL.CHECKOUT,\n fundingicons: false,\n layout: BUTTON_LAYOUT.HORIZONTAL\n };\n },\n \n decorate(style : Object) : Object {\n const { label, layout = BUTTON_LAYOUT.HORIZONTAL } = style;\n if (!label && layout === BUTTON_LAYOUT.HORIZONTAL) {\n style.label = BUTTON_LABEL.CHECKOUT;\n return style;\n } else if (!label && layout === BUTTON_LAYOUT.VERTICAL) {\n style.label = BUTTON_LABEL.PAYPAL;\n return style;\n }\n return style;\n },\n\n validate(style = {}, props) {\n validateButtonStyle(style, props);\n flushLogs();\n }\n },\n\n validate: {\n type: 'function',\n required: false,\n decorate(validate) : Function {\n // $FlowFixMe\n return function decorateValidate(actions) : mixed {\n if (!this.validateCalled) {\n this.validateCalled = true;\n return validate(actions);\n }\n };\n }\n },\n\n logLevel: {\n type: 'string',\n required: false,\n get value() : string {\n return config.logLevel;\n }\n },\n\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n },\n\n awaitPopupBridge: {\n type: 'object',\n required: false,\n value: () => awaitPopupBridge(Button)\n },\n\n getPageUrl: {\n type: 'function',\n queryParam: false,\n required: false,\n def: () => {\n return () => window.location.href;\n }\n },\n\n test: {\n type: 'object',\n required: false,\n def() : Object {\n return { action: 'checkout' };\n }\n }\n }\n});\n\nif (Button.isChild()) {\n setupButtonChild(Button);\n}\n","/* @flow */\n\nimport { CLASS } from './class';\n\nexport const pageStyle = `\n html, body {\n padding: 0;\n margin: 0;\n width: 100%;\n overflow: hidden;\n text-align: center;\n }\n\n body {\n display: inline-block;\n vertical-align: top;\n }\n\n * {\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -khtml-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n cursor: default;\n box-sizing: border-box;\n }\n \n .${ CLASS.HIDDEN } {\n position: absolute;\n visibility: hidden;\n }\n`;\n","/* @flow */\n\nimport { BUTTON_COLOR, ENV } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const buttonStyle = `\n\n .${ CLASS.CONTAINER } {\n display: block;\n white-space: nowrap;\n margin: 0;\n background: 0;\n border: 0;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n text-transform: none;\n font-weight: 500;R\n -webkit-font-smoothing: antialiased;\n font-smoothing: antialiased;\n z-index: 0;\n font-size: 0;\n width: 100%;\n box-sizing: border-box;\n }\n\n .${ CLASS.BUTTON }:not(.${ CLASS.CARD }) {\n border: 1px solid transparent;\n border-radius: 0 3px 3px 0;\n position: relative;\n width: 100%;\n box-sizing: border-box;\n border: none;\n vertical-align: top;\n cursor: pointer;\n outline: none;\n overflow: hidden;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.TRANSPARENT } {\n cursor: auto;\n }\n\n .${ CLASS.BUTTON } * {\n cursor: pointer;\n }\n\n .${ CLASS.CONTAINER }.${ CLASS.ENV }-${ ENV.TEST } .${ CLASS.TEXT } {\n font-family: Arial !important;\n background: rgba(0, 0, 0, 0.5) !important;\n color: transparent !important;\n text-shadow: none !important;\n }\n\n .${ CLASS.BUTTON }:hover {\n box-shadow: inset 0 0 100px 100px rgba(255, 255, 255, 0.2);\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.GOLD }:hover,\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.SILVER }:hover {\n box-shadow: inset 0 0 100px 100px rgba(0, 0, 0, 0.05);\n }\n\n .${ CLASS.CARD }, .${ CLASS.CARD } * {\n cursor: pointer;\n }\n\n .${ CLASS.CARD }:hover {\n filter: brightness(1.2);\n }\n\n .${ CLASS.BUTTON }:focus, .${ CLASS.CARD }:focus {\n outline: none;\n }\n\n .${ CLASS.SHOULD_FOCUS } .${ CLASS.BUTTON }:focus,\n .${ CLASS.SHOULD_FOCUS } .${ CLASS.CARD }:focus {\n outline: solid 2px Highlight;\n outline: auto 5px -webkit-focus-ring-color;\n outline-offset: -3px;\n }\n\n .${ CLASS.BUTTON }:focus {\n box-shadow: -1px -1px 18px 1px rgba(0, 0, 0, 0.25) inset;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.TRANSPARENT }:focus {\n box-shadow: none;\n outline: none;\n }\n\n .${ CLASS.LOGO } {\n padding: 0;\n display: inline-block;\n background: none;\n border: none;\n width: auto;\n }\n\n .${ CLASS.TEXT } {\n display: inline-block;\n white-space: pre;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.BUTTON_LABEL } {\n position: relative;\n top: 50%;\n transform: translateY(-50%);\n -webkit-transform: translateY(-50%);\n -moz-transform: translateY(-50%);\n -ms-transform: translateY(-50%);\n -o-transform: translateY(-50%);\n }\n \n .${ CLASS.BUTTON } > .${ CLASS.BUTTON_LABEL } > * {\n vertical-align: top;\n height: 100%;\n text-align: left;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.CARD } {\n border-radius: 4px;\n }\n\n .powered-by-paypal > .${ CLASS.TEXT } {\n vertical-align: top;\n line-height: 18px;\n }\n\n .powered-by-paypal > .${ CLASS.LOGO } {\n height: 16px;\n min-height: 16px;\n }\n\n .${ CLASS.TAGLINE } {\n max-width: 100%;\n font-weight: normal;\n display: block;\n text-align: center;\n width: auto;\n }\n\n .${ CLASS.SEPARATOR } {\n height: 80%;\n border-left: 1px solid rgba(0, 0, 0, 0.15);\n margin: 0 8px;\n display: inline-block;\n position: relative;\n top: 10%;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.BLACK } .${ CLASS.SEPARATOR } {\n border-color: rgba(255, 255, 255, 0.45);\n }\n`;\n","/* @flow */\n\nimport { BUTTON_LAYOUT } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const layoutStyle = `\n\n .${ CLASS.CONTAINER }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.VERTICAL } .${ CLASS.TAGLINE } {\n display: none;\n }\n`;\n","/* @flow */\n\nimport { BUTTON_BRANDING } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const brandingStyle = `\n\n .${ CLASS.BUTTON }.${ CLASS.BRANDING }-${ BUTTON_BRANDING.UNBRANDED } {\n min-width: 60%;\n width: auto;\n font-weight: 900;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.BRANDING }-${ BUTTON_BRANDING.UNBRANDED } .${ CLASS.LOGO } {\n display: none;\n }\n`;\n","/* @flow */\n\nimport { BUTTON_STYLE } from '../../config';\nimport { BUTTON_LABEL, BUTTON_LOGO, BUTTON_SIZE, BUTTON_LAYOUT, BUTTON_NUMBER } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const labelStyle = `\n\n .${ CLASS.BUTTON }.${ CLASS.LABEL }-${ BUTTON_LABEL.CARD } {\n border-radius: 0 !important;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LABEL }-${ BUTTON_LABEL.CREDIT } .${ CLASS.TEXT } {\n display: none !important;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.LABEL }-${ BUTTON_LABEL.CREDIT } .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LOGO.PAYPAL } {\n display: none;\n }\n\n @media only screen and (max-width : ${ BUTTON_STYLE[BUTTON_SIZE.SMALL].minWidth }px) {\n\n .${ CLASS.BUTTON }.${ CLASS.LABEL }-${ BUTTON_LABEL.CREDIT } .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LOGO.PAYPAL } {\n display: none;\n }\n }\n\n @media only screen and (min-width : ${ BUTTON_STYLE[BUTTON_SIZE.SMALL].minWidth }px) {\n\n .${ CLASS.BUTTON }.${ CLASS.LABEL }-${ BUTTON_LABEL.CREDIT } .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LOGO.PAYPAL } {\n display: inline-block;\n }\n }\n`;\n","/* @flow */\n\nimport { BUTTON_BRANDING, BUTTON_SHAPE, BUTTON_LAYOUT, BUTTON_NUMBER, BUTTON_LABEL } from '../../../constants';\nimport { BUTTON_STYLE, BUTTON_RELATIVE_STYLE } from '../../config';\nimport { max, perc } from '../../../lib/util';\n\nimport { CLASS } from './class';\n\nconst DUAL_BUTTON_MIN_RATIO = 2.8;\n\nexport function buttonResponsiveStyle({ height, cardNumber = 4 } : { height? : ?number, cardNumber? : number }) : string {\n\n return Object.keys(BUTTON_STYLE).map(size => {\n\n const style = BUTTON_STYLE[size];\n const buttonHeight = height || style.defaultHeight;\n const buttonTextMarginTop = style.buttonTextMargin;\n const minDualWidth = Math.round(buttonHeight * DUAL_BUTTON_MIN_RATIO * 2);\n\n return `\n\n @media only screen and (min-width: ${ style.minWidth }px) {\n\n .${ CLASS.CONTAINER } {\n min-width: ${ style.minWidth }px;\n max-width: ${ style.maxWidth }px;\n font-size: ${ max(perc(buttonHeight, 32), 10) }px;\n }\n\n .${ CLASS.BUTTON }:not(.${ CLASS.CARD }) {\n height: ${ buttonHeight }px;\n min-height: ${ height || style.minHeight }px;\n max-height: ${ height || style.maxHeight }px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.BRANDING }-${ BUTTON_BRANDING.UNBRANDED } .${ CLASS.BUTTON_LABEL } {\n height: 100%;\n font-size: ${ max(perc(buttonHeight, 45), 10) }px;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.BUTTON_LABEL } {\n height: ${ perc(buttonHeight, 35) + 5 }px;\n max-height: ${ perc(buttonHeight, 60) }px;\n min-height: ${ perc(buttonHeight, 40) }px;\n }\n \n .${ CLASS.BUTTON } .${ CLASS.BUTTON_LABEL } .${ CLASS.TEXT } {\n margin-top: ${ buttonTextMarginTop }px;\n }\n \n .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LABEL.EPS },\n .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LABEL.MYBANK } {\n height: ${ perc(buttonHeight, 50) + 5 }px;\n max-height: ${ perc(buttonHeight, 70) }px;\n min-height: ${ perc(buttonHeight, 40) }px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.SHAPE }-${ BUTTON_SHAPE.PILL } {\n border-radius: ${ Math.ceil(buttonHeight / 2) }px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.SHAPE }-${ BUTTON_SHAPE.RECT } {\n border-radius: 4px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.VERTICAL } {\n margin-bottom: ${ perc(buttonHeight, BUTTON_RELATIVE_STYLE.VERTICAL_MARGIN) }px;\n }\n\n .${ CLASS.SEPARATOR } {\n margin: 0 ${ perc(buttonHeight, 5) }px;\n }\n\n .${ CLASS.TAGLINE } {\n display: ${ style.allowTagline ? 'block' : 'none' };\n height: ${ perc(buttonHeight, BUTTON_RELATIVE_STYLE.TAGLINE) }px;\n line-height: ${ perc(buttonHeight, BUTTON_RELATIVE_STYLE.TAGLINE) }px;\n }\n\n .${ CLASS.FUNDINGICONS } {\n display: ${ style.allowFunding ? 'block' : 'none' };\n height: ${ perc(buttonHeight, BUTTON_RELATIVE_STYLE.FUNDINGICONS) }px;\n }\n\n .${ CLASS.CARD } {\n display: inline-block;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.CARD } {\n width: ${ (90 / cardNumber).toFixed(2) }%;\n max-width: ${ perc(buttonHeight, 160) }px;\n margin-top: 0;\n margin-left: ${ (5 / cardNumber).toFixed(2) }%;\n margin-right: ${ (5 / cardNumber).toFixed(2) }%;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.CARD } img {\n width: 100%;\n }\n\n .${ CLASS.FUNDINGICONS } .${ CLASS.CARD } {\n height: ${ perc(buttonHeight, 70) }px;\n margin-top: ${ perc(buttonHeight, 15) }px;\n margin-left: ${ perc(buttonHeight, 7) }px;\n margin-right: ${ perc(buttonHeight, 7) }px;\n }\n\n .${ CLASS.FUNDINGICONS } .${ CLASS.CARD } img {\n height: 100%;\n }\n }\n\n @media only screen and (min-width: ${ style.minWidth }px) and (max-width: ${ minDualWidth }px) {\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.NUMBER }-0 {\n width: 100%;\n margin-right: 0;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.NUMBER }-1 {\n display: none;\n }\n\n .${ CLASS.CONTAINER }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE } .${ CLASS.TAGLINE } {\n display: none;\n }\n }\n\n @media only screen and (min-width: ${ max(style.minWidth, minDualWidth) }px) {\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.NUMBER }-0 {\n display: inline-block;\n width: calc(50% - 2px);\n margin-right: 4px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.NUMBER }-1 {\n display: inline-block;\n width: calc(50% - 2px);\n }\n\n .${ CLASS.CONTAINER }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE } .${ CLASS.TAGLINE } {\n display: block;\n }\n }\n `;\n\n }).join('\\n');\n}\n","/* @flow */\n\nimport { BUTTON_COLOR } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const buttonColorStyle = `\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.GOLD } {\n background: #ffc439;\n color: #111;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.BLUE } {\n background: #009cde;\n color: #fff;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.SILVER } {\n background: #eee;\n color: #111;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.BLACK } {\n background: #2C2E2F;\n color: #fff;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.DARKBLUE } {\n background: #003087;\n color: #fff;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.TRANSPARENT } {\n background: transparent;\n color: #111;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.WHITE } {\n background: #fff;\n color: #2C2E2F;\n border: 1px solid #2C2E2F;\n }\n`;\n","/* @flow */\n/* eslint max-lines: off */\n\nexport const componentContent = {\n 'AD': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'AE': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n },\n 'ar': {\n 'checkout': 'السداد بواسطة {logo:pp} {logo:paypal}',\n 'safer_tag': 'الطريقة الأسهل والأكثر أماناً في الدفع',\n 'later_tag': 'اشترِ الآن، وسدّد على دفعات',\n 'pay': 'دفع بواسطة {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} شراء الآن',\n 'poweredBy': 'مدعوم من {logo:paypal}'\n }\n },\n 'AG': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'AI': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'AL': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'AM': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'AN': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'AO': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'AR': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'AT': {\n 'de': {\n 'checkout': 'Direkt zu {logo:pp} {logo:paypal}',\n 'safer_tag': 'Einfach schneller und sicherer bezahlen',\n 'later_tag': 'Kaufen Sie jetzt und bezahlen Sie nach und nach.',\n 'pay': 'Mit {logo:paypal} zahlen',\n 'buynow': '{logo:pp} {logo:paypal} Jetzt kaufen',\n 'poweredBy': 'Abgewickelt durch {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'AU': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'AW': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'AZ': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'BA': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'BB': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'BE': {\n 'en': {\n 'checkout': 'Pay with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, faster way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'nl': {\n 'checkout': 'Betalen met {logo:pp} {logo:paypal}',\n 'safer_tag': 'De veiligere en snellere manier om te betalen.',\n 'later_tag': 'Koop nu. Betaal later.',\n 'pay': 'Betalen met {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Nu kopen',\n 'poweredBy': 'Mogelijk gemaakt door {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Le réflexe sécurité pour payer',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n }\n },\n 'BF': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'BG': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'BH': {\n 'ar': {\n 'checkout': 'السداد بواسطة {logo:pp} {logo:paypal}',\n 'safer_tag': 'الطريقة الأسهل والأكثر أماناً في الدفع',\n 'later_tag': 'اشترِ الآن، وسدّد على دفعات',\n 'pay': 'دفع بواسطة {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} شراء الآن',\n 'poweredBy': 'مدعوم من {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'BI': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'BJ': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'BM': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'BN': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'BO': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'BR': {\n 'pt': {\n 'checkout': '{logo:pp} {logo:paypal} Finalizar',\n 'safer_tag': 'A maneira fácil e segura de pagar.',\n 'later_tag': 'Compre agora e pague depois.',\n 'pay': 'Pague com {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar agora',\n 'installment': '{logo:pp} {logo:paypal} Pagamentos
parcelados',\n 'installment_period': '{logo:pp} {logo:paypal} Pague em at\\u00e9
[installmentperiod]x sem juros',\n 'poweredBy': 'Com tecnologia {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'installment': '{logo:pp} {logo:paypal} Interest free
payments',\n 'installment_period': '{logo:pp} {logo:paypal} Pay up to [installmentperiod]x
without interest',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'BS': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'BT': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'BW': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'BY': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'BZ': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'C2': {\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式。',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay.',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'CA': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': '{logo:pp} {logo:paypal} Payer',\n 'safer_tag': 'Votre réflexe sécurité pour payer',\n 'later_tag': 'Acheter. Payer plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n }\n },\n 'CD': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'CG': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'CH': {\n 'de': {\n 'checkout': 'Direkt zu {logo:pp} {logo:paypal}',\n 'safer_tag': 'Einfach schneller und sicherer bezahlen',\n 'later_tag': 'Kaufen Sie jetzt und bezahlen Sie nach und nach.',\n 'pay': 'Mit {logo:paypal} zahlen',\n 'buynow': '{logo:pp} {logo:paypal} Jetzt kaufen',\n 'poweredBy': 'Abgewickelt durch {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Le réflexe sécurité pour payer',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'CI': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'CK': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'CL': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'CM': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'CN': {\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'CO': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'CR': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'CV': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'CY': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'CZ': {\n 'cs': {\n 'checkout': 'Zaplatit přes {logo:pp} {logo:paypal}',\n 'safer_tag': 'Jednodušší a bezpečnější způsob placení',\n 'later_tag': 'Nakupujte nyní, plaťte později.',\n 'pay': 'Zaplatit přes {logo: paypal}',\n 'buynow': 'Koupit ihned přes {logo:pp} {logo:paypal}',\n 'poweredBy': 'Využívá službu {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'DE': {\n 'de': {\n 'checkout': 'Direkt zu {logo:pp} {logo:paypal}',\n 'safer_tag': 'Überall schnell und sicher bezahlen.',\n 'later_tag': 'Jetzt bei uns bequem in Raten zahlen.',\n 'pay': 'Mit {logo:paypal} zahlen',\n 'buynow': '{logo:pp} {logo:paypal} Jetzt kaufen',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'DJ': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'DK': {\n 'da': {\n 'checkout': '{logo:pp} {logo:paypal} Betal',\n 'safer_tag': 'Betal nemt og sikkert',\n 'later_tag': 'Køb nu, betal senere.',\n 'pay': 'Betal med {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Køb nu',\n 'poweredBy': 'Leveret af {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'DM': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'DO': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'DZ': {\n 'ar': {\n 'checkout': 'السداد بواسطة {logo:pp} {logo:paypal}',\n 'safer_tag': 'الطريقة الأسهل والأكثر أماناً في الدفع',\n 'later_tag': 'اشترِ الآن، وسدّد على دفعات',\n 'pay': 'دفع بواسطة {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} شراء الآن',\n 'poweredBy': 'مدعوم من {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'EC': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'EE': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'ru': {\n 'checkout': 'Оформить заказ через {logo:pp} {logo:paypal}',\n 'safer_tag': 'Более безопасный и простой способ оплаты.',\n 'later_tag': 'Покупайте сейчас, платите потом.',\n 'pay': 'Оплатить через {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Купить сейчас',\n 'poweredBy': 'Обработано {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'EG': {\n 'ar': {\n 'checkout': 'السداد بواسطة {logo:pp} {logo:paypal}',\n 'safer_tag': 'الطريقة الأسهل والأكثر أماناً في الدفع',\n 'later_tag': 'اشترِ الآن، وسدّد على دفعات',\n 'pay': 'دفع بواسطة {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} شراء الآن',\n 'poweredBy': 'مدعوم من {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'ER': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'ES': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Tecnología de {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'ET': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'FI': {\n 'fi': {\n 'checkout': '{logo:pp} {logo:paypal}-maksu',\n 'safer_tag': 'Turvallisempi ja helpompi maksutapa',\n 'later_tag': 'Osta nyt. Maksa vähitellen.',\n 'pay': '{logo:paypal}-maksu',\n 'buynow': '{logo:pp} {logo:paypal} Osta nyt',\n 'poweredBy': 'Palvelun tarjoaa {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'FJ': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'FK': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'FM': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'FO': {\n 'da': {\n 'checkout': 'Betal med {logo:pp} {logo:paypal}',\n 'safer_tag': 'Betal nemt og sikkert',\n 'later_tag': 'Køb nu, betal senere.',\n 'pay': 'Betal med {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Køb nu',\n 'poweredBy': 'Leveret af {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'FR': {\n 'fr': {\n 'checkout': '{logo:pp} {logo:paypal} Payer',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Pay',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'GA': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'GB': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'GD': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'GE': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'GF': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'GI': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'GL': {\n 'da': {\n 'checkout': 'Betal med {logo:pp} {logo:paypal}',\n 'safer_tag': 'Betal nemt og sikkert',\n 'later_tag': 'Køb nu, betal senere.',\n 'pay': 'Betal med {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Køb nu',\n 'poweredBy': 'Leveret af {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'GM': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'GN': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'GP': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'GR': {\n 'el': {\n 'checkout': 'Ολοκλήρωση αγοράς μέσω {logo:pp} {logo:paypal}',\n 'safer_tag': 'Ο ασφαλέστερος και ευκολότερος τρόπος πληρωμής',\n 'later_tag': 'Αγοράστε τώρα. Πληρώστε σε δόσεις.',\n 'pay': 'Πληρωμή μέσω {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Αγορά τώρα',\n 'poweredBy': 'Με την υποστήριξη του {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'GT': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'GW': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'GY': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'HK': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal} 結帳',\n 'safer_tag': '更安全、更方便的付款方式',\n 'later_tag': '先購買,後付款。',\n 'pay': '使用 {logo:paypal} 付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即買',\n 'poweredBy': '支援方: {logo:paypal}'\n }\n },\n 'HN': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'HR': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'HU': {\n 'hu': {\n 'checkout': '{logo:pp} {logo:paypal}-fizetés',\n 'safer_tag': 'Biztonságosabb, könnyebb fizetési mód.',\n 'later_tag': 'Vásároljon most. Fizessen később.',\n 'pay': '{logo:paypal}-fizetés',\n 'buynow': '{logo:pp} {logo:paypal} Vásárlás',\n 'poweredBy': 'Üzemeltető: {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'ID': {\n 'id': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'Cara yang lebih mudah dan aman untuk membayar.',\n 'later_tag': 'Beli Sekarang. Bayar dalam Jangka Waktu Tertentu.',\n 'pay': 'Bayar dengan {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Beli Sekarang',\n 'poweredBy': 'Ditunjang teknologi {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'IE': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'IL': {\n 'he': {\n 'checkout': '{logo:pp} {logo:paypal} שלם',\n 'safer_tag': '.הדרך הקלה והבטוחה יותר לשלם',\n 'later_tag': 'קנה עכשיו. שלם לאורך זמן.',\n 'pay': 'שלם באמצעות {logo:paypal}‏',\n 'buynow': '{logo:pp} {logo:paypal} קנה עכשיו',\n 'poweredBy': '{logo:paypal} מופעל על-ידי'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'IN': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay.',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'IS': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'IT': {\n 'it': {\n 'checkout': '{logo:pp} {logo:paypal} Paga adesso',\n 'safer_tag': 'Il modo rapido e sicuro per pagare',\n 'later_tag': 'Acquista ora. Paga più tardi.',\n 'pay': 'Paga con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Paga adesso',\n 'poweredBy': 'Con tecnologia {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'JM': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'JO': {\n 'ar': {\n 'checkout': 'السداد بواسطة {logo:pp} {logo:paypal}',\n 'safer_tag': 'الطريقة الأسهل والأكثر أماناً في الدفع',\n 'later_tag': 'اشترِ الآن، وسدّد على دفعات',\n 'pay': 'دفع بواسطة {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} شراء الآن',\n 'poweredBy': 'مدعوم من {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'JP': {\n 'ja': {\n 'checkout': '{logo:pp} {logo:paypal}で支払う',\n 'safer_tag': 'より安全・簡単にお支払い',\n 'later_tag': '今すぐ購入して、分割してお支払い。',\n 'pay': '{logo:paypal}で支払う',\n 'buynow': '{logo:pp} {logo:paypal} 購入',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'KE': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'KG': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'KH': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'KI': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'KM': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'KN': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'KR': {\n 'ko': {\n 'checkout': '{logo:pp} {logo:paypal} 체크 아웃',\n 'safer_tag': '더 안전하고 빠른 결제 방법',\n 'later_tag': '지금 구매하고 천천히 결제하세요.',\n 'pay': '{logo:paypal}로 지불하기',\n 'buynow': '{logo:pp} {logo:paypal} 바로 구매',\n 'poweredBy': '제공: {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay.',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'KW': {\n 'ar': {\n 'checkout': 'السداد بواسطة {logo:pp} {logo:paypal}',\n 'safer_tag': 'الطريقة الأسهل والأكثر أماناً في الدفع',\n 'later_tag': 'اشترِ الآن، وسدّد على دفعات',\n 'pay': 'دفع بواسطة {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} شراء الآن',\n 'poweredBy': 'مدعوم من {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'KY': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'KZ': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'LA': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'LC': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'LI': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'LK': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'LS': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'LT': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'ru': {\n 'checkout': 'Оформить заказ через {logo:pp} {logo:paypal}',\n 'safer_tag': 'Более безопасный и простой способ оплаты.',\n 'later_tag': 'Покупайте сейчас, платите потом.',\n 'pay': 'Оплатить через {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Купить сейчас',\n 'poweredBy': 'Обработано {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'LU': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'de': {\n 'checkout': 'Direkt zu {logo:pp} {logo:paypal}',\n 'safer_tag': 'Einfach schneller und sicherer bezahlen',\n 'later_tag': 'Kaufen Sie jetzt und bezahlen Sie nach und nach.',\n 'pay': 'Mit {logo:paypal} zahlen',\n 'buynow': '{logo:pp} {logo:paypal} Jetzt kaufen',\n 'poweredBy': 'Abgewickelt durch {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'LV': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'ru': {\n 'checkout': 'Оформить заказ через {logo:pp} {logo:paypal}',\n 'safer_tag': 'Более безопасный и простой способ оплаты.',\n 'later_tag': 'Покупайте сейчас, платите потом.',\n 'pay': 'Оплатить через {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Купить сейчас',\n 'poweredBy': 'Обработано {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'MA': {\n 'ar': {\n 'checkout': 'السداد بواسطة {logo:pp} {logo:paypal}',\n 'safer_tag': 'الطريقة الأسهل والأكثر أماناً في الدفع',\n 'later_tag': 'اشترِ الآن، وسدّد على دفعات',\n 'pay': 'دفع بواسطة {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} شراء الآن',\n 'poweredBy': 'مدعوم من {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'MC': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'MD': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'ME': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'MG': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'MH': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'MK': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'ML': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'MN': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'MQ': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'MR': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'MS': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'MT': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'MU': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'MV': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'MW': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'MX': {\n 'es': {\n 'checkout': 'Pagar con {logo:pp} {logo:paypal}',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'installment': '{logo:pp} {logo:paypal} Pagos en
mensualidades',\n 'installment_period': '{logo:pp} {logo:paypal} Pague hasta en
[installmentperiod] mensualidades',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, faster way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'installment': '{logo:pp} {logo:paypal} Interest free
payments',\n 'installment_period': '{logo:pp} {logo:paypal} Pay up to [installmentperiod]x
without interest',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'MY': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay.',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'MZ': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'NA': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'NC': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'NE': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'NF': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'NG': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'NI': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'NL': {\n 'nl': {\n 'checkout': '{logo:pp} {logo:paypal} Betalen',\n 'safer_tag': 'Een veilige en makkelijke manier om te betalen.',\n 'later_tag': 'Koop nu. Betaal later.',\n 'pay': 'Betalen met {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Nu kopen',\n 'poweredBy': 'Mogelijk gemaakt door {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'NO': {\n 'no': {\n 'checkout': '{logo:pp} {logo:paypal} Betal',\n 'safer_tag': 'En trygg og enkel betalingsmetode',\n 'later_tag': 'Kjøp nå, betal senere.',\n 'pay': 'Betal med {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Kjøp nå',\n 'poweredBy': 'Leveres av {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'NP': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'NR': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'NU': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'NZ': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay.',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': '{logo:pp} {logo:paypal} Payer',\n 'safer_tag': 'Un réflexe sécurité.',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar.',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式。',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'OM': {\n 'ar': {\n 'checkout': 'السداد بواسطة {logo:pp} {logo:paypal}',\n 'safer_tag': 'الطريقة الأسهل والأكثر أماناً في الدفع',\n 'later_tag': 'اشترِ الآن، وسدّد على دفعات',\n 'pay': 'دفع بواسطة {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} شراء الآن',\n 'poweredBy': 'مدعوم من {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'PA': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'PE': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'PF': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'PG': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'PH': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay.',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'PL': {\n 'pl': {\n 'checkout': '{logo:pp} {logo:paypal} Do kasy',\n 'safer_tag': 'Płać wygodnie i bezpiecznie',\n 'later_tag': 'Kup teraz. Płać w ratach',\n 'pay': 'Zapłać z {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Kup teraz',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'PM': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'PN': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'PT': {\n 'pt': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A forma rápida e segura de pagar',\n 'later_tag': 'Compre agora. Vá pagando.',\n 'pay': 'Pagar com {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar agora',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'PW': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'PY': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'QA': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n },\n 'ar': {\n 'checkout': 'السداد بواسطة {logo:pp} {logo:paypal}',\n 'safer_tag': 'الطريقة الأسهل والأكثر أماناً في الدفع',\n 'later_tag': 'اشترِ الآن، وسدّد على دفعات',\n 'pay': 'دفع بواسطة {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} شراء الآن',\n 'poweredBy': 'مدعوم من {logo:paypal}'\n }\n },\n 'RE': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'RO': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'RS': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'RU': {\n 'ru': {\n 'checkout': '{logo:pp} {logo:paypal} Оформить покупку',\n 'safer_tag': 'Более безопасный и простой способ оплаты.',\n 'later_tag': 'Покупайте сейчас, платите потом.',\n 'pay': 'Оплатить через {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Купить сейчас',\n 'poweredBy': 'Обработано {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'RW': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SA': {\n 'ar': {\n 'checkout': 'السداد بواسطة {logo:pp} {logo:paypal}',\n 'safer_tag': 'الطريقة الأسهل والأكثر أماناً في الدفع',\n 'later_tag': 'اشترِ الآن، وسدّد على دفعات',\n 'pay': 'دفع بواسطة {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} شراء الآن',\n 'poweredBy': 'مدعوم من {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SB': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SC': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SE': {\n 'sv': {\n 'checkout': '{logo:pp} {logo:paypal} Betala',\n 'safer_tag': 'Ett tryggt och smidigt sätt att betala',\n 'later_tag': 'Köp nu, betala senare',\n 'pay': 'Betala med {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Köp nu',\n 'poweredBy': 'Tillhandahålls av {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'SG': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay.',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'SH': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SI': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SJ': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SK': {\n 'sk': {\n 'checkout': 'Zaplatiť cez {logo:pp} {logo:paypal}',\n 'safer_tag': 'Jednoduchší a bezpečnejší spôsob platby',\n 'later_tag': 'Nakúpte teraz, zaplaťte postupne',\n 'pay': 'Zaplatiť cez {logo: paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Kúpiť',\n 'poweredBy': 'Používa technológiu {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SL': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SM': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SN': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SO': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SR': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'ST': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SV': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SZ': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'TC': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'TD': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'TG': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'TH': {\n 'th': {\n 'checkout': '{logo:pp} {logo:paypal} ชำระเงิน',\n 'safer_tag': 'วิธีชำระเงินที่ปลอดภัยและง่ายกว่า',\n 'later_tag': 'ซื้อวันนี้ แล้วค่อยๆ จ่ายทีหลัง',\n 'pay': 'ชำระเงินด้วย {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} ซื้อทันที',\n 'poweredBy': 'ให้บริการโดย {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'TJ': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'TM': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'TN': {\n 'ar': {\n 'checkout': 'السداد بواسطة {logo:pp} {logo:paypal}',\n 'safer_tag': 'الطريقة الأسهل والأكثر أماناً في الدفع',\n 'later_tag': 'اشترِ الآن، وسدّد على دفعات',\n 'pay': 'دفع بواسطة {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} شراء الآن',\n 'poweredBy': 'مدعوم من {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'TO': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'TR': {\n 'tr': {\n 'checkout': '{logo:pp} {logo:paypal} ile Satın Alın',\n 'safer_tag': 'Ödeme yapmanın daha güvenli ve kolay yolu',\n 'later_tag': 'Şimdi Alın. Daha Sonra Ödeyin.',\n 'pay': '{logo:paypal} ile Öde',\n 'buynow': '{logo:pp} {logo:paypal} Hemen Satın Alın',\n 'poweredBy': 'Çalıştıran {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'TT': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'TV': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'TW': {\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal} 結帳',\n 'safer_tag': '更安全、更方便的付款方式',\n 'later_tag': '先購買,後付款。',\n 'pay': '使用 {logo:paypal} 付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即購',\n 'poweredBy': '服務提供者: {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'TZ': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'UA': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'ru': {\n 'checkout': 'Оформить заказ через {logo:pp} {logo:paypal}',\n 'safer_tag': 'Более безопасный и простой способ оплаты.',\n 'later_tag': 'Покупайте сейчас, платите потом.',\n 'pay': 'Оплатить через {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Купить сейчас',\n 'poweredBy': 'Обработано {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'UG': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'US': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'dual_tag': 'Two easy ways to pay',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': '{logo:pp} {logo:paypal} Payer',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': 'Pagar con {logo:pp} {logo:paypal}',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '使用{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'UY': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'VA': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'VC': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'VE': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'VG': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'VN': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay.',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'VU': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'WF': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'WS': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'YE': {\n 'ar': {\n 'checkout': 'السداد بواسطة {logo:pp} {logo:paypal}',\n 'safer_tag': 'الطريقة الأسهل والأكثر أماناً في الدفع',\n 'later_tag': 'اشترِ الآن، وسدّد على دفعات',\n 'pay': 'دفع بواسطة {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} شراء الآن',\n 'poweredBy': 'مدعوم من {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'YT': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'ZA': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'ZM': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'ZW': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n }\n};\n","// eslint-disable-line max-lines\n/* @flow */\n/** @jsx jsxToHTML */\n\nimport { base64encode } from 'belter/src';\n\nimport { BUTTON_SIZE, BUTTON_BRANDING, BUTTON_NUMBER, BUTTON_LOGO_COLOR, BUTTON_LABEL, BUTTON_LAYOUT, ENV, ATTRIBUTE, FUNDING } from '../../constants';\nimport { getButtonConfig, labelToFunding, fundingToDefaultLabel } from '../config';\nimport { normalizeProps } from '../props';\nimport { jsxToHTML, type JsxHTMLNode, type ChildType, jsxRender } from '../../lib/jsx';\nimport { fundingLogos, cardLogos } from '../../resources';\nimport { validateButtonProps } from '../validate';\nimport type { LocaleType, FundingSource, FundingSelection, FundingList, CheckoutCustomizationType } from '../../types';\n\nimport { Tagline, Beacon } from './miscComponent';\nimport { componentStyle, CLASS } from './componentStyle';\nimport { getComponentScript } from './componentScript';\nimport { componentContent } from './content';\n\nconst allowedPersonalizationLabels = [ BUTTON_LABEL.CHECKOUT, BUTTON_LABEL.BUYNOW, BUTTON_LABEL.PAY ];\n\nfunction getCommonButtonClasses({ layout, shape, branding, multiple, env }) : string {\n return [\n `${ CLASS.LAYOUT }-${ layout }`,\n `${ CLASS.SHAPE }-${ shape }`,\n `${ CLASS.BRANDING }-${ branding ? BUTTON_BRANDING.BRANDED : BUTTON_BRANDING.UNBRANDED }`,\n `${ CLASS.NUMBER }-${ multiple ? BUTTON_NUMBER.MULTIPLE : BUTTON_NUMBER.SINGLE }`,\n `${ CLASS.ENV }-${ env }`,\n `${ CLASS.SHOULD_FOCUS }`\n ].join(' ');\n}\n\nfunction getButtonClasses({ label, color, logoColor }) : string {\n return [\n `${ CLASS.LABEL }-${ label }`,\n `${ CLASS.COLOR }-${ color }`,\n `${ CLASS.LOGO_COLOR }-${ logoColor }`\n ].join(' ');\n}\n\nfunction getLocaleContent(locale : LocaleType) : Object {\n const { country, lang } = locale;\n return componentContent[country][lang];\n}\n\nfunction determineLabel({ label, source, multiple, layout } : { label : $Values, source : FundingSource, multiple : boolean, layout : $Values }) : $Values {\n\n const defaultLabel = fundingToDefaultLabel(source);\n const labelMatchesFunding = (labelToFunding(label) === source);\n\n // If chosen label is not for this funding source, display the default label\n if (!labelMatchesFunding) {\n return defaultLabel;\n }\n\n // If there are multiple horizontal buttons, display the default label\n if (multiple && layout === BUTTON_LAYOUT.HORIZONTAL) {\n return defaultLabel;\n }\n\n return label;\n}\n\nfunction determineButtons({ label, color, sources, multiple, layout } : { label : $Values, color : string, sources : FundingList, multiple : boolean, layout : $Values }) :\n $ReadOnlyArray<{ label : $Values, color : string, source : FundingSource }> {\n\n return sources.map((source, i) => {\n\n const buttonLabel = determineLabel({ label, source, multiple, layout });\n\n const buttonColor = (multiple && i > 0)\n ? getButtonConfig(buttonLabel, 'secondaryColors')[color]\n : color;\n\n return {\n source,\n label: buttonLabel,\n color: buttonColor\n };\n });\n}\n\nfunction renderCards({ cards, layout, size } :\n { cards : $ReadOnlyArray, layout? : string, size? : string }) : $ReadOnlyArray {\n return cards.map(name => {\n const logo = cardLogos[name];\n\n return (\n \n \n
\n );\n });\n}\n\nfunction renderFundingIcons({ cards, fundingicons, size, layout } :\n { cards : $ReadOnlyArray, fundingicons : boolean, layout : string, size : string }) : ?JsxHTMLNode {\n\n if (!fundingicons) {\n return;\n }\n\n return
{ renderCards({ cards, size, layout }) }
;\n}\n\nfunction renderPersonalizationButtonText(text) : JsxHTMLNode {\n const className = `${ CLASS.TEXT } ${ CLASS.PERSONALIZATION_TEXT }`;\n return { text };\n}\n\nfunction getButtonTextAnimationStyle({ personalizedButtonText, branding, allowedAnimation }) : ?JsxHTMLNode {\n if (__TEST__) {\n return null;\n }\n \n if (!branding) {\n return;\n }\n \n if (!allowedAnimation) {\n return;\n }\n \n const MIN_WIDTH = 300;\n const LABEL_DURATION = 1;\n const PERSONALIZATION_DURATION = 5;\n const DELAY = 0;\n \n const COMPRESSED = `\n max-width: 0%;\n opacity: 0;\n `;\n \n const EXPANDED = `\n max-width: 100%;\n opacity: 1;\n `;\n \n const HIDDEN = `\n position: absolute;\n visibility: hidden;\n `;\n \n const VISIBLE = `\n position: static;\n visibility: visible;\n `;\n \n const DOM_READY = '.dom-ready';\n const PAYPAL_BUTTON = `.${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.PAYPAL }]`;\n \n const PAYPAL_LOGO = `${ PAYPAL_BUTTON } .${ CLASS.LOGO }.${ CLASS.LOGO }-${ FUNDING.PAYPAL }`;\n const BUTTON_TEXT = `${ PAYPAL_BUTTON } .${ CLASS.TEXT }:not(.personalization-text)`;\n const PERSONALIZATION_TEXT = `${ PAYPAL_BUTTON } .personalization-text`;\n \n return (\n \n {outlet}\n \n );\n}\n","\n/* @flow */\n\nimport { track, flush as flushLogs } from 'beaver-logger/client';\n\nimport { Checkout } from '../checkout';\nimport { setupPopupBridgeProxy } from '../integrations/popupBridge';\nimport { getPageRenderTime, setLogLevel } from '../lib';\nimport { ATTRIBUTE, FUNDING, FPTI, BUTTON_LAYOUT, BUTTON_COLOR, BUTTON_SIZE, BUTTON_SHAPE, BUTTON_LABEL } from '../constants';\n\nimport typeof { Button } from './component';\n\nexport function setupButtonChild(ButtonComponent : Button) {\n setupPopupBridgeProxy(Checkout, ButtonComponent);\n\n getPageRenderTime().then(pageRenderTime => {\n\n const fundingSources = Array.prototype.slice.call(document.querySelectorAll(`[${ ATTRIBUTE.FUNDING_SOURCE }]`)).map(el => {\n return el.getAttribute(ATTRIBUTE.CARD) || el.getAttribute(ATTRIBUTE.FUNDING_SOURCE);\n }).filter(source => {\n return source && source !== FUNDING.CARD;\n });\n\n const xprops = ButtonComponent.xprops;\n \n if (!xprops) {\n return;\n }\n\n const {\n layout = BUTTON_LAYOUT.HORIZONTAL,\n color = BUTTON_COLOR.GOLD,\n size = BUTTON_SIZE.SMALL,\n shape = BUTTON_SHAPE.PILL,\n label = BUTTON_LABEL.CHECKOUT,\n maxbuttons,\n tagline\n } = (xprops.style || {});\n\n track({\n [FPTI.KEY.STATE]: FPTI.STATE.BUTTON,\n [FPTI.KEY.TRANSITION]: FPTI.TRANSITION.BUTTON_LOAD,\n [FPTI.KEY.BUTTON_TYPE]: FPTI.BUTTON_TYPE.IFRAME,\n [FPTI.KEY.FUNDING_LIST]: fundingSources.join(':'),\n [FPTI.KEY.FUNDING_COUNT]: fundingSources.length,\n [FPTI.KEY.PAGE_LOAD_TIME]: pageRenderTime,\n [FPTI.KEY.BUTTON_LAYOUT]: layout,\n [FPTI.KEY.BUTTON_COLOR]: color,\n [FPTI.KEY.BUTTON_SIZE]: size,\n [FPTI.KEY.BUTTON_SHAPE]: shape,\n [FPTI.KEY.BUTTON_LABEL]: label,\n [FPTI.KEY.BUTTON_WIDTH]: window.innerWidth,\n [FPTI.KEY.MAX_BUTTONS]: maxbuttons,\n [FPTI.KEY.BUTTON_TAGLINE_ENABLED]: tagline ? '1' : '0'\n });\n\n flushLogs();\n });\n\n const xprops = ButtonComponent.xprops || Checkout.xprops;\n\n if (xprops && xprops.logLevel) {\n setLogLevel(xprops.logLevel);\n }\n\n // $FlowFixMe\n if (xprops.payment && !xprops.createOrder) {\n // $FlowFixMe\n xprops.createOrder = xprops.payment;\n }\n\n // $FlowFixMe\n if (xprops.onAuthorize && !xprops.onApprove) {\n // $FlowFixMe\n xprops.onApprove = xprops.onAuthorize;\n }\n\n try {\n if (xprops && xprops.onShippingChange && window.pre &&\n window.pre.inlineGuest && window.pre.inlineGuest.res &&\n window.pre.inlineGuest.res.data && window.pre.inlineGuest.res.data.treatments) {\n window.pre.inlineGuest.res.data.treatments = [];\n }\n } catch (err) {\n // pass\n }\n}\n","/* @flow */\n\nimport { info, warn, flush as flushLogs } from 'beaver-logger/client';\nimport { CONSTANTS } from 'zoid/src';\nimport { getParent, getTop } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { config } from './config';\nimport { noop, isIE, getDomainSetting, extendUrl, patchMethod, once, extend } from './lib';\nimport { Button } from './button';\nimport { Checkout } from './checkout';\nimport { BUTTON_LABEL, BUTTON_SIZE, BUTTON_COLOR } from './constants';\nimport { rest } from './api';\n\nif (isIE() && getDomainSetting('ie_full_page')) {\n // $FlowFixMe\n Checkout.renderTo = (win) => {\n info('force_ie_full_page');\n flushLogs();\n\n // $FlowFixMe\n const checkout = Checkout.init({\n onAuthorize: noop\n });\n\n checkout.delegate(win);\n\n checkout.openContainer().then(() => {\n checkout.event.triggerOnce(CONSTANTS.EVENTS.CLOSE);\n checkout.showContainer();\n });\n\n // $FlowFixMe\n Button.xprops.payment().then(token => {\n window.top.location = extendUrl(config.checkoutUrl, { token });\n }).catch(err => {\n checkout.error(err);\n });\n };\n}\n\nconst parent = getParent(window);\nconst top = getTop(window);\n\nif (top && parent) {\n let canRenderTop = (top === parent);\n\n if (!canRenderTop) {\n Checkout.canRenderTo(top).then(result => {\n canRenderTop = result;\n });\n\n patchMethod(Checkout, 'renderTo', ({ args: [ win, props, el ], original, context }) => {\n\n if (!canRenderTop) {\n win = getParent(window);\n }\n\n return original.call(context, win, props, el);\n });\n }\n}\n\npatchMethod(Checkout, 'renderTo', ({ callOriginal, args: [ , props ] }) => {\n if (getDomainSetting('allow_full_page_fallback')) {\n const handleError = once((err) => {\n try {\n // eslint-disable-next-line no-console\n console.error(err && err.stack);\n } catch (err2) {\n // pass\n }\n\n // $FlowFixMe\n return Button.xprops.payment().then(token => {\n window.top.location = extendUrl(config.checkoutUrl, { token });\n });\n });\n\n props.onError = handleError;\n return callOriginal().catch(handleError);\n }\n return callOriginal();\n});\n\nlet debounce = false;\n\npatchMethod(Checkout, 'renderTo', ({ callOriginal, args: [ , props ] }) => {\n\n if (debounce) {\n warn('button_mutliple_click_debounce');\n return new ZalgoPromise(noop);\n }\n\n debounce = true;\n\n for (const methodName of [ 'onAuthorize', 'onCancel', 'onError', 'onClose' ]) {\n const original = props[methodName];\n props[methodName] = function unDebounce() : mixed {\n debounce = false;\n if (original) {\n return original.apply(this, arguments);\n }\n };\n }\n\n return callOriginal();\n});\n\npatchMethod(rest.payment, 'create', ({ original: createOriginal, context: createContext, args: [ env, client, options, experience ] }) => {\n if (!options.payment) {\n options = { payment: options, experience };\n }\n return createOriginal.call(createContext, env, client, options);\n});\n\npatchMethod(Button.props.style, 'validate', ({ callOriginal, args: [ style ] }) => {\n\n if (!style) {\n return callOriginal();\n }\n\n if (style && style.color === 'creditblue') {\n style.color = BUTTON_COLOR.DARKBLUE;\n }\n\n if (style && style.label === 'generic') {\n style.label = BUTTON_LABEL.PAYPAL;\n }\n\n if (style && (!style.label || style.label === BUTTON_LABEL.CHECKOUT) && style.size === 'tiny') {\n warn(`unsupported_button_size_tiny`);\n style.size = BUTTON_SIZE.SMALL;\n }\n\n return callOriginal();\n});\n\npatchMethod(Button, 'render', ({ callOriginal, args: [ props ] }) => {\n\n if (props.billingAgreement) {\n props.payment = props.billingAgreement;\n delete props.billingAgreement;\n }\n\n return callOriginal();\n});\n\npatchMethod(Button.props.payment, 'decorate', ({ original, context, args: [ originalPayment ] }) => {\n return original.call(context, function payment(data : Object, actions : Object) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n patchMethod(actions.payment, 'create', ({ original: createOriginal, context: createContext, args: [ options, experience ] }) => {\n if (!options.payment) {\n options = { payment: options, experience };\n }\n return createOriginal.call(createContext, options);\n });\n\n function resolveData(token) {\n resolve(token);\n }\n\n function rejectActions(err) {\n reject(err);\n }\n\n extend(resolveData, data);\n extend(resolveData, actions);\n extend(rejectActions, actions);\n\n const ctx = {\n props: {\n env: this.props.env,\n client: this.props.client\n }\n };\n\n let result;\n\n try {\n result = originalPayment.call(ctx, resolveData, rejectActions);\n } catch (err) {\n return reject(err);\n }\n\n if (result && typeof result.then === 'function') {\n return result.then(resolve, reject);\n }\n\n if (result !== undefined) {\n return resolve(result);\n }\n });\n });\n});\n\nif (Button.isChild()) {\n if (!window.Promise) {\n window.Promise = ZalgoPromise;\n }\n}\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { create } from 'zoid/src';\nimport { type Component } from 'zoid/src/component/component';\nimport type { CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { base64encode } from 'belter/src';\n\nimport { config } from '../config';\nimport { getButtonSessionID, getBrowserLocale, getSessionID, getCurrentScriptUrl } from '../lib';\n\ntype CardOptions = {|\n client : {\n [string] : (string | ZalgoPromise)\n },\n env? : string,\n locale? : string,\n logLevel : string,\n awaitPopupBridge : Function,\n onAuthorize : ({ returnUrl : string }, { redirect : (?CrossDomainWindowType, ?string) => ZalgoPromise }) => ?ZalgoPromise,\n onCancel? : ({ cancelUrl : string }, { redirect : (?CrossDomainWindowType, ?string) => ZalgoPromise }) => ?ZalgoPromise,\n onEvent? : ({ type : string, payload : Object }) => void,\n meta : Object,\n commit : boolean,\n token : string\n|};\n\nexport const Card : Component = create({\n tag: 'card-fields',\n name: 'ppcard',\n\n buildUrl(props) : string {\n const env = props.env || config.env;\n return config.inlinedCardFieldUrls[env];\n },\n\n contexts: {\n iframe: true,\n popup: false\n },\n\n dimensions: {\n height: '300px',\n width: '100%'\n },\n\n autoResize: {\n height: true,\n width: false\n },\n\n props: {\n sessionID: {\n type: 'string',\n required: false,\n def() : string {\n return getSessionID();\n },\n queryParam: true\n },\n\n\n token: {\n type: 'string',\n required: true,\n queryParam: true\n },\n\n buttonSessionID: {\n type: 'string',\n required: false,\n def() : ?string {\n return getButtonSessionID();\n },\n queryParam: true\n },\n\n commit: {\n type: 'boolean',\n required: false,\n queryParam: true\n },\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n },\n\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n allowDelegate: true,\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n }\n },\n\n initialFormValues: {\n type: 'object',\n required: false\n },\n\n\n onAuthorize: {\n type: 'function',\n required: true,\n once: true\n },\n\n onAuth: {\n type: 'function',\n required: false,\n sameDomain: true\n },\n\n onEvent: {\n type: 'function',\n required: false,\n sameDomain: true\n },\n\n getState: {\n type: 'function',\n required: false,\n sameDomain: true\n },\n\n dispatch: {\n type: 'object',\n required: false,\n sameDomain: true\n },\n\n onCancel: {\n type: 'function',\n required: false,\n once: true,\n noop: true\n },\n\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n },\n \n style: {\n type: 'object',\n required: false,\n queryParam: true,\n def() : Object {\n return {\n cardIcons: {\n display: false\n },\n submitButton: {\n display: true\n },\n currencyConversion: {\n display: true\n }\n };\n }\n }\n }\n});\n","/* @flow */\n\nimport { info, track, debug, warn, error, flush as flushLogs } from 'beaver-logger/client';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { config } from './config';\nimport { FPTI } from './constants';\nimport { initLogger, checkForCommonErrors, setLogLevel, stringifyError,\n stringifyErrorMessage, getResourceLoadTime, isPayPalDomain, isEligible,\n getDomainSetting, once, openMetaFrame, precacheRememberedFunding,\n getCurrentScript, getRememberedFunding } from './lib';\nimport { Button } from './button';\nimport { Checkout } from './checkout';\nimport { pptm } from './external';\n\nfunction domainToEnv(domain : string) : ?string {\n for (const env of Object.keys(config.paypalUrls)) {\n if (config.paypalUrls[env] === domain) {\n return env;\n }\n }\n}\n\nfunction setDomainEnv(domain : string) {\n const currentDomainEnv = domainToEnv(domain);\n\n if (currentDomainEnv && currentDomainEnv !== 'test') {\n config.env = currentDomainEnv;\n }\n}\n\nsetDomainEnv(`${ window.location.protocol }//${ window.location.host }`);\n\nZalgoPromise.onPossiblyUnhandledException(err => {\n\n error('unhandled_error', {\n stack: stringifyError(err),\n errtype: ({}).toString.call(err)\n });\n\n track({\n [ FPTI.KEY.ERROR_CODE ]: 'checkoutjs_error',\n [ FPTI.KEY.ERROR_DESC ]: stringifyErrorMessage(err)\n });\n\n return flushLogs().catch(err2 => {\n if (window.console) {\n try {\n if (window.console.error) {\n window.console.error('Error flushing:', stringifyError(err2));\n } else if (window.console.log) {\n window.console.log('Error flushing:', stringifyError(err2));\n }\n } catch (err3) {\n setTimeout(() => {\n throw err3;\n }, 1);\n }\n }\n });\n});\n\nconst currentScript = getCurrentScript();\nconst currentProtocol = window.location.protocol.split(':')[0];\n\n\ntype ConfigOptions = {|\n env? : ?string,\n stage? : ?string,\n apiStage? : ?string,\n stageUrl? : ?string,\n localhostUrl? : ?string,\n checkoutUri? : ?string,\n state? : ?string,\n logLevel? : ?string,\n merchantID? : ?string,\n precacheRemembered? : boolean,\n authCode? : ?string\n|};\n\nfunction configure({ env, stage, stageUrl, apiStage, localhostUrl, checkoutUri, state, logLevel, merchantID, authCode } : ConfigOptions = {}) {\n\n if (env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n\n delete config.env;\n config.env = env;\n } else if (Button.xprops && Button.xprops.env) {\n delete config.env;\n // $FlowFixMe\n config.env = Button.xprops.env;\n } else if (Checkout.xprops && Checkout.xprops.env) {\n delete config.env;\n // $FlowFixMe\n config.env = Checkout.xprops.env;\n }\n\n if (stage) {\n delete config.stage;\n config.stage = stage;\n } else if (Button.xprops && Button.xprops.stage) {\n delete config.stage;\n // $FlowFixMe\n config.stage = Button.xprops.stage;\n } else if (Checkout.xprops && Checkout.xprops.stage) {\n delete config.stage;\n // $FlowFixMe\n config.stage = Checkout.xprops.stage;\n }\n\n if (stageUrl) {\n delete config.stageUrl;\n // $FlowFixMe\n config.stageUrl = stageUrl;\n } else if (Button.xprops && Button.xprops.stageUrl) {\n delete config.stageUrl;\n // $FlowFixMe\n config.stageUrl = Button.xprops.stageUrl;\n } else if (Checkout.xprops && Checkout.xprops.stageUrl) {\n delete config.stageUrl;\n // $FlowFixMe\n config.stageUrl = Checkout.xprops.stageUrl;\n }\n\n authCode = authCode || (Button.xprops && Button.xprops.authCode) || (Checkout.xprops && Checkout.xprops.authCode);\n\n if (authCode) {\n delete config.authCode;\n config.authCode = authCode;\n }\n\n if (apiStage) {\n delete config.apiStage;\n config.apiStage = apiStage;\n }\n\n localhostUrl = localhostUrl || (Button.xprops && Button.xprops.localhostUrl) || (Checkout.xprops && Checkout.xprops.localhostUrl);\n if (localhostUrl) {\n config.localhostUrl = localhostUrl;\n }\n\n checkoutUri = checkoutUri || (Button.xprops && Button.xprops.checkoutUri) || (Checkout.xprops && Checkout.xprops.checkoutUri);\n if (checkoutUri) {\n config.checkoutUri = checkoutUri;\n }\n\n if (state) {\n delete config.state;\n config.state = state;\n }\n\n if (merchantID) {\n config.merchantID = merchantID;\n }\n\n if (logLevel) {\n setLogLevel(logLevel);\n } else {\n setLogLevel(config.logLevel);\n }\n}\n\nexport const init = once(({ precacheRemembered }) => {\n\n if (!isEligible()) {\n warn('ineligible');\n }\n\n checkForCommonErrors();\n\n initLogger();\n\n if (pptm.shouldCreateInitialPptmScript()) {\n pptm.createPptmScript();\n }\n\n if (precacheRemembered) {\n precacheRememberedFunding();\n }\n\n if (getDomainSetting('force_bridge') && !isPayPalDomain()) {\n openMetaFrame(config.env);\n }\n\n info(`setup_${ config.env }`);\n\n debug(`current_protocol_${ currentProtocol }`);\n});\n\n// $FlowFixMe\nexport function setup(options : ConfigOptions = {}) {\n configure(options);\n init(options);\n}\n\nif (currentScript) {\n setup({\n env: currentScript.getAttribute('data-env'),\n stage: currentScript.getAttribute('data-stage'),\n apiStage: currentScript.getAttribute('data-api-stage'),\n stageUrl: currentScript.getAttribute('data-stage-url'),\n localhostUrl: isPayPalDomain() ? currentScript.getAttribute('data-localhost-url') : undefined,\n checkoutUri: isPayPalDomain() ? currentScript.getAttribute('data-checkout-uri') : undefined,\n state: currentScript.getAttribute('data-state'),\n logLevel: currentScript.getAttribute('data-log-level'),\n merchantID: currentScript.getAttribute('data-merchant-id'),\n authCode: currentScript.getAttribute('data-auth-code'),\n precacheRemembered: currentScript.hasAttribute('data-precache-remembered-funding')\n });\n\n} else {\n setup();\n}\n\nif (!isPayPalDomain()) {\n\n if (currentScript) {\n\n const scriptProtocol = currentScript.src.split(':')[0];\n const loadTime = getResourceLoadTime(currentScript.src);\n\n debug(`current_script_protocol_${ scriptProtocol }`);\n debug(`current_script_protocol_${ currentProtocol === scriptProtocol ? 'match' : 'mismatch' }`);\n debug(`current_script_version_${ config.version.replace(/[^0-9a-zA-Z]+/g, '_') }`);\n\n if (loadTime) {\n debug(`current_script_time`, { loadTime });\n debug(`current_script_time_${ Math.floor(loadTime / 1000) }`);\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.SCRIPT_LOAD,\n [ FPTI.KEY.TRANSITION_TIME ]: loadTime,\n [ FPTI.KEY.FUNDING_REMEMBERED ]: getRememberedFunding().join(',')\n });\n\n } else {\n\n debug(`no_current_script`);\n debug(`no_current_script_version_${ config.version.replace(/[^0-9a-zA-Z]+/g, '_') }`);\n\n if (document.currentScript) { // eslint-disable-line compat/compat\n debug(`current_script_not_recognized`, { src: document.currentScript.src }); // eslint-disable-line compat/compat\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.SCRIPT_LOAD\n });\n }\n}\n","/* @flow */\n\nimport { debug, info, warn, error, track, flush } from 'beaver-logger/client';\nimport { destroyAll as _destroyAll } from 'zoid/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport * as _postRobot from 'post-robot/src'; // eslint-disable-line import/no-namespace\n\nimport { isPayPalDomain } from './lib';\nimport { Checkout as _Checkout } from './checkout';\nimport { BillingPage as _BillingPage } from './billing';\nimport { ThreeDomainSecure as _ThreeDomainSecure } from './threeDomainSecure';\n\nimport './hacks'; // eslint-disable-line import/no-unassigned-import\n\nexport const postRobot = _postRobot;\nexport { ZalgoPromise as Promise } from 'zalgo-promise/src';\nexport { PopupOpenError } from 'zoid/src';\n\nexport { rest } from './api';\nexport { Button } from './button';\nexport { Card } from './card';\nexport { setup } from './setup';\nexport { config } from './config';\nexport { ENV, USERS, SOURCE, FUNDING, CARD } from './constants';\nexport { request, isEligible, isFundingRemembered, allowIframe as forceIframe, allowIframe as isWebView, allowIframe } from './lib';\nexport { logExperimentTreatment } from './experiments';\nexport { logFundingEligibility } from './funding';\n\nexport const onPossiblyUnhandledException = ZalgoPromise.onPossiblyUnhandledException;\n\nexport const version = __PAYPAL_CHECKOUT__.__MINOR_VERSION__;\n\nexport let checkout;\nexport let apps;\n\nif (__PAYPAL_CHECKOUT__.__LEGACY_SUPPORT__) {\n const legacy = require('./legacy');\n checkout = legacy.checkout;\n apps = legacy.apps;\n}\n\n// -------------------------------------------------------------\n\nexport let Checkout;\nexport let BillingPage;\nexport let PayPalCheckout;\nexport let destroyAll;\nexport let enableCheckoutIframe;\nexport let logger;\nexport let ThreeDomainSecure;\n\nfunction _enableCheckoutIframe() {\n _Checkout.contexts.iframe = true;\n}\n\nif (isPayPalDomain() || __TEST__) {\n Checkout = _Checkout;\n BillingPage = _BillingPage;\n ThreeDomainSecure = _ThreeDomainSecure;\n PayPalCheckout = _Checkout;\n enableCheckoutIframe = _enableCheckoutIframe;\n destroyAll = _destroyAll;\n logger = { debug, info, warn, error, track, flush };\n}\n","/* @flow */\n/* eslint import/no-default-export: off */\n\nimport * as INTERFACE from './interface'; // eslint-disable-line import/no-namespace\n\nexport * from './interface';\nexport default INTERFACE;\n","/* @flow */\n\nexport const LOG_PREFIX = `paypal_legacy`;\n\nexport const ATTRIBUTES = {\n BUTTON: 'data-paypal-button',\n MERCHANT_ID: 'data-paypal-id',\n ENV: 'data-env',\n SANDBOX: 'data-sandbox'\n};\n\nexport const CLASSES = {\n HIDDEN_BUTTON: 'paypal-button-hidden'\n};\n","/* @flow */\n\nimport { isDevice, isEligible, supportsPopups } from '../lib';\n\nexport function isLegacyEligible() : boolean {\n\n if (!isEligible()) {\n return false;\n }\n\n if (!supportsPopups()) {\n return false;\n }\n\n if (isDevice()) {\n return false;\n }\n\n return true;\n}\n","/* @flow */\n\nimport { prefix } from 'beaver-logger/client';\n\nimport { COUNTRY, LANG, LOCALE } from '../constants';\nimport type { LocaleType } from '../types';\n\nimport { LOG_PREFIX } from './constants';\n\nconst { warn } = prefix(LOG_PREFIX);\n\nconst DEFAULT_COUNTRY = COUNTRY.US;\nconst DEFAULT_LANG = LANG.EN;\n\nexport function normalizeLocale(locale : string) : LocaleType {\n\n let [ lang, country ] = locale.split('_');\n\n if (!country) {\n if (LOCALE[lang]) {\n country = lang;\n lang = null;\n } else {\n country = DEFAULT_COUNTRY;\n }\n }\n\n if (!LOCALE[country]) {\n warn(`invalid_user_country`, { country });\n country = DEFAULT_COUNTRY;\n }\n\n if (!lang) {\n lang = DEFAULT_LANG;\n }\n\n if (LOCALE[country].indexOf(lang) === -1) {\n warn(`invalid_user_lang`, { lang });\n\n if (LOCALE[country].indexOf(DEFAULT_LANG) !== -1) {\n lang = DEFAULT_LANG;\n } else {\n lang = LOCALE[country][0];\n }\n }\n\n return { country, lang };\n}\n","/* @flow */\n\nimport { prefix } from 'beaver-logger/client';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { config } from '../config';\nimport { FPTI, BUTTON_COLOR, BUTTON_SHAPE, BUTTON_SIZE, BUTTON_LABEL } from '../constants';\nimport { loadScript, memoize, isElementVisible, stringifyError } from '../lib';\n\nimport { LOG_PREFIX } from './constants';\nimport { normalizeLocale } from './common';\n\nconst { info, debug, error } = prefix(LOG_PREFIX);\n\nconst loadButtonJS = memoize(() : ZalgoPromise => {\n\n debug(`buttonjs_load`);\n\n return loadScript(config.buttonJSUrl).catch(err => {\n info(`buttonjs_load_error_retry`, { error: stringifyError(err) });\n return loadScript(config.buttonJSUrl);\n }).then(result => {\n debug(`buttonjs_load_success`);\n return result;\n }).catch(err => {\n error(`buttonjs_load_error`, { error: stringifyError(err) });\n throw err;\n });\n});\n\nfunction renderButton(id, { container, locale, type, color, shape, size }) : ZalgoPromise {\n\n return loadButtonJS().then(() => {\n\n if (locale) {\n const { country, lang } = normalizeLocale(locale);\n locale = `${ lang }_${ country }`;\n }\n\n locale = locale || `${ config.locale.lang }_${ config.locale.country }`;\n color = color || BUTTON_COLOR.GOLD;\n shape = shape || BUTTON_SHAPE.PILL;\n size = size || BUTTON_SIZE.SMALL;\n type = type || BUTTON_LABEL.CHECKOUT;\n\n debug(`render_button_lc_${ locale }`);\n debug(`render_button_color_${ color }`);\n debug(`render_button_shape_${ shape }`);\n debug(`render_button_size_${ size }`);\n debug(`render_button_label_${ type }`);\n\n const el = window.paypal.button.create(id, { lc: locale, color, shape, size }, { type: 'button', label: type }).el;\n container.appendChild(el);\n\n try {\n info(`in_page_button_${ isElementVisible(el) ? 'visible' : 'not_visible' }`);\n\n } catch (err) {\n // pass\n }\n\n return el.childNodes[0];\n });\n}\n\n// eslint-disable-next-line flowtype/no-mutable-array\nexport function renderButtons(id : string, buttons : Array) : ZalgoPromise> {\n\n return ZalgoPromise.map(buttons, button => {\n return ZalgoPromise.try(() => {\n\n if (button.container) {\n return renderButton(id, button);\n } else {\n return button.button;\n }\n\n }).then(element => {\n\n let container;\n let type;\n const condition = button.condition;\n const click = button.click;\n\n if (button.container) {\n container = button.container;\n type = FPTI.BUTTON_TYPE.HTML;\n } else {\n container = button.button;\n type = FPTI.BUTTON_TYPE.CUSTOM;\n }\n\n return { container, element, type, condition, click };\n });\n });\n}\n\nexport function getHijackTargetElement(button : HTMLElement | HTMLButtonElement) : ?HTMLElement {\n\n // $FlowFixMe\n const form = button.form;\n\n if (form) {\n debug(`target_element_button_form`);\n return form;\n }\n\n const tagName = button.tagName && button.tagName.toLowerCase();\n\n if (tagName === 'a') {\n debug(`target_element_link`);\n return button;\n }\n\n const parentElement = button.parentElement;\n const parentTagName = parentElement && parentElement.tagName && parentElement.tagName.toLowerCase();\n\n if ((tagName === 'img' || tagName === 'button') && parentTagName === 'a') {\n debug(`target_element_parent_link`);\n // $FlowFixMe\n return parentElement;\n }\n\n const grandparentElement = parentElement && parentElement.parentElement;\n const grandparentTagName = grandparentElement && grandparentElement.tagName && grandparentElement.tagName.toLowerCase();\n\n if (tagName === 'button' && grandparentTagName === 'a') {\n debug(`target_element_grandparent_link`);\n // $FlowFixMe\n return button.parentElement && button.parentElement.parentElement;\n }\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { flush as flushLogs, prefix } from 'beaver-logger/client';\n\nimport { config } from '../config';\nimport { ENV } from '../constants';\nimport { urlWillRedirectPage, redirect as redir } from '../lib';\n\nimport { LOG_PREFIX } from './constants';\n\nconst { warn } = prefix(LOG_PREFIX);\n\nlet redirected = false;\n\nexport function logRedirect(location : string) {\n\n if (redirected) {\n warn(`multiple_redirects`);\n }\n\n if (urlWillRedirectPage(location)) {\n redirected = true;\n }\n\n flushLogs();\n}\n\nexport function redirect(url : string) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n if (!url) {\n throw new Error(`Redirect url undefined`);\n }\n\n if (config.env === ENV.TEST && urlWillRedirectPage(url)) {\n return redir(window, `#fullpageRedirect?url=${ url }`);\n }\n\n logRedirect(url);\n\n return redir(window, url);\n });\n}\n\nexport function isToken(item : string) : boolean {\n return Boolean(item && item.match(/^(EC-)?[A-Z0-9]{17}$/));\n}\n\n\n/* Parse Token\n -----------\n\n We are passed either a token, or a url containing the token. In order to run the new checkout component we need to\n strip out the token from the url in order to pass it down as a prop\n*/\n\nexport function parseToken(token : string) : ?string {\n\n if (!token) {\n return;\n }\n\n token = decodeURIComponent(decodeURIComponent(token));\n\n // We may get lucky and be passed a token straight off the bar\n\n if (token.match(/^(EC-)?[A-Z0-9]{17}$/)) {\n return token;\n }\n\n // Otherwise strip the token from the url we're sent\n\n let match = token.match(/token=((EC-)?[A-Z0-9]{17})/);\n\n if (match) {\n return match[1];\n }\n\n match = token.match(/(EC-[A-Z0-9]{17})/);\n\n if (match) {\n return match[1];\n }\n}\n\nexport function hasToken(item : string) : boolean {\n return Boolean(parseToken(item));\n}\n","/* @flow */\n\nimport { prefix } from 'beaver-logger/client';\n\nimport { config } from '../config';\nimport { ENV } from '../constants';\nimport { getElements } from '../lib';\n\nimport { normalizeLocale } from './common';\nimport { LOG_PREFIX } from './constants';\n\nconst { info, warn } = prefix(LOG_PREFIX);\n\nexport function normalizeOptions(options : Object) {\n\n // Normalize environment\n\n if (options.environment) {\n\n if (options.environment === 'live') {\n options.environment = ENV.PRODUCTION;\n }\n\n if (!config.paypalUrls[options.environment]) {\n warn('invalid_env', { badenv: options.environment });\n options.environment = config.env;\n }\n }\n\n // If we're passed a single button in options.button, turn it into an array\n\n if (options.button && !Array.isArray(options.button)) {\n info(`options_button_single_button_passed`);\n\n options.button = [ options.button ];\n }\n\n // If we're passed an array of elements in options.buttons, switch it over to options.button\n\n if (options.buttons && getElements(options.buttons).length) {\n info(`options_buttons_with_elements_passed`);\n\n options.button = options.buttons;\n delete options.buttons;\n }\n\n // If we're passed an empty options.button array, clear the value\n\n if (options.button && options.button.length === 0) {\n info(`options_button_empty`);\n\n delete options.button;\n }\n\n // If we're passed options.button and options.container, concat both under button\n\n if (options.button && options.container) {\n info(`options_button_and_container_passed`, { button: options.button, container: options.container });\n\n options.button = options.button.concat(options.container);\n delete options.container;\n }\n\n // Normalize button selectors to elements\n\n if (options.button) {\n const button = getElements(options.button);\n\n if (button.length) {\n options.button = button;\n\n } else {\n warn(`options_button_element_not_found`, { element: JSON.stringify(options.button) });\n delete options.button;\n }\n }\n\n // Normalize options.button to options.buttons\n\n if (options.button) {\n\n options.buttons = options.button.map(button => {\n return {\n button,\n click: options.click,\n condition: options.condition\n };\n });\n\n delete options.click;\n delete options.condition;\n delete options.button;\n }\n\n // Normalize array of buttons\n\n else if (options.buttons && Array.isArray(options.buttons)) {\n\n const buttons = [];\n\n options.buttons.forEach(button => {\n\n if (!button) {\n return;\n }\n\n if (button.container && button.container !== options.container) {\n warn(`mismatched_container_and_button_passed`, { options: options.container, button: button.container });\n }\n\n getElements(button.container || button.button).forEach(element => {\n buttons.push({\n\n [ button.container ? 'container' : 'button' ]: element,\n\n click: button.click || options.click,\n condition: button.condition || options.condition,\n type: button.type || options.type,\n locale: button.locale || options.locale,\n color: button.color || options.color,\n shape: button.shape || options.shape,\n size: button.size || options.size\n });\n });\n });\n\n delete options.buttons;\n delete options.click;\n delete options.condition;\n delete options.button;\n delete options.type;\n delete options.locale;\n delete options.color;\n delete options.shape;\n delete options.size;\n\n if (buttons.length) {\n options.buttons = buttons;\n }\n }\n\n // Otherwise normalize container into array of buttons\n\n else if (options.container && !Array.isArray(options.buttons)) {\n\n const buttons = [];\n\n getElements(options.container).forEach((container, i) => {\n buttons.push({\n container,\n click: options.click,\n condition: options.condition,\n type: Array.isArray(options.type) ? options.type[i] : options.type,\n locale: Array.isArray(options.locale) ? options.locale[i] : options.locale,\n color: Array.isArray(options.color) ? options.color[i] : options.color,\n shape: Array.isArray(options.shape) ? options.shape[i] : options.shape,\n size: Array.isArray(options.size) ? options.size[i] : options.size\n });\n });\n\n delete options.container;\n delete options.buttons;\n delete options.click;\n delete options.condition;\n delete options.button;\n delete options.type;\n delete options.locale;\n delete options.color;\n delete options.shape;\n delete options.size;\n\n if (buttons.length) {\n options.buttons = buttons;\n }\n }\n\n if (!options.buttons) {\n options.buttons = [];\n }\n}\n\nexport function setupConfig(options : Object) {\n\n if (options.environment && config.paypalUrls[options.environment]) {\n config.env = options.environment;\n }\n\n if (options.locale) {\n config.locale = normalizeLocale(options.locale);\n config.customCountry = true;\n }\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { prefix, flush as flushLogs } from 'beaver-logger/client';\nimport formSerialize from 'form-serialize';\n\nimport { Checkout } from '../checkout';\nimport { config } from '../config';\nimport { ENV, FPTI } from '../constants';\nimport { supportsPopups, once, safeJSON, extendUrl, stringifyError, request } from '../lib';\n\nimport { setupPostBridge } from './postBridge';\nimport { isLegacyEligible } from './eligibility';\nimport { LOG_PREFIX } from './constants';\nimport { renderButtons, getHijackTargetElement } from './button';\nimport { redirect, logRedirect, parseToken } from './util';\nimport { normalizeOptions, setupConfig } from './options';\n\nconst { info, debug, warn, error, track } = prefix(LOG_PREFIX);\n\nexport const checkout = {};\nexport const apps = { checkout, Checkout: checkout };\n\nexport function reset() {\n\n debug('reset');\n\n // Once our callback has been called, we can set the global methods to their original values\n\n checkout.initXO = initXO; // eslint-disable-line no-use-before-define\n checkout.startFlow = startFlow; // eslint-disable-line no-use-before-define\n checkout.closeFlow = closeFlow; // eslint-disable-line no-use-before-define\n}\n\ncheckout.reset = reset;\n\n// $FlowFixMe\nObject.defineProperty(checkout, 'urlPrefix', {\n get() : string {\n return `${ config.checkoutUrl }${ config.checkoutUrl.indexOf('?') === -1 ? '?' : '&' }token=`;\n }\n});\n\nfunction matchUrlAndPaymentToken(item) : { url : string, paymentToken : ?string } {\n\n if (!item || !item.trim()) {\n error(`startflow_no_url_or_token`, { item });\n throw new Error(`startflow_no_url_or_token`);\n }\n\n\n const paymentToken = parseToken(item);\n let url = (paymentToken && paymentToken === item) ? '' : item;\n\n if (url) {\n\n if (!url.match(/^https?:\\/\\/|^\\//)) {\n if (paymentToken) {\n info(`startflow_relative_url_with_token`, { url });\n } else {\n info(`startflow_relative_url_no_token`, { url });\n }\n\n if (url.toLowerCase().indexOf('ec-') === 0 && paymentToken) {\n url = `${ config.checkoutUrl }${ url }`;\n }\n\n } else if (paymentToken) {\n if (url.indexOf('.paypal.com') !== -1) {\n debug(`startflow_paypalurl_with_token`, { url });\n } else {\n debug(`startflow_url_with_token`, { url });\n }\n\n } else {\n debug(`startflow_url_no_token`, { url });\n }\n\n } else {\n\n if (paymentToken) {\n url = extendUrl(config.checkoutUrl, { token: paymentToken });\n debug(`startflow_with_token`, { url });\n } else {\n error(`startflow_no_url_or_token`, { url });\n throw new Error(`Could not determine url or token from \"${ item }\"`);\n }\n }\n\n return { paymentToken, url };\n}\n\nfunction checkUrlAgainstEnv(url : string) {\n\n const paypalUrls = config.paypalUrls;\n\n for (const env of Object.keys(paypalUrls)) {\n const paypalUrl = paypalUrls[env];\n\n if (env === ENV.TEST || env === ENV.DEMO) {\n continue;\n }\n\n if (env !== config.env) {\n if (url.indexOf(paypalUrl) === 0 || url.indexOf(paypalUrl.replace('//www.', '//')) === 0) {\n warn(`mismatched_env_startflow_url`, { env: config.env, url });\n redirect(url);\n throw new Error(`${ url } is not a ${ config.env } url`);\n }\n }\n }\n}\n\n/* Get Token\n ---------\n\n Normally in the component world, getToken would be a user-provided function which passes a callback, and expects\n that callback to be called with either an error, or an EC token.\n\n In our case, we can emulate these callback calls by setting over the startFlow and closeFlow globals, and using\n them as our success and failure cases.\n\n Note: this method is set to `precall: true` mode. This means that it will be called the moment the component is\n inited on the page. This means that the moment we initialize, we're ready to start accepting a token via one of the\n global methods.\n*/\n\nfunction awaitPaymentTokenAndUrl(event? : ?Event, targetElement? : ?HTMLElement) : { url : ZalgoPromise, paymentToken : ZalgoPromise } {\n\n const paymentTokenAndUrl = new ZalgoPromise((resolve) => {\n\n if (event && targetElement && (Math.random() < 0.001 || window.enablev3ajax)) {\n let method;\n let url;\n let body;\n let contentType;\n\n info('gettoken_targetelement_start');\n flushLogs();\n \n if (targetElement.tagName.toLowerCase() === 'a') {\n method = 'get';\n url = targetElement.getAttribute('href');\n } else if (targetElement.tagName.toLowerCase() === 'form') {\n method = (targetElement.getAttribute('method') || 'get').toLowerCase();\n url = targetElement.getAttribute('action');\n body = formSerialize(targetElement);\n contentType = targetElement.getAttribute('enctype') || 'application/x-www-form-urlencoded';\n }\n \n if (method && url) {\n event.preventDefault();\n\n request({\n method,\n url,\n body,\n headers: {\n 'Accept': 'application/paypal-json-token',\n 'Content-type': contentType || ''\n }\n }).then(json => {\n const urlAndPaymentToken = matchUrlAndPaymentToken(json.token);\n resolve(urlAndPaymentToken);\n info('gettoken_targetelement_success', urlAndPaymentToken);\n flushLogs();\n\n }).catch(err => {\n warn('gettoken_targetelement_error', {\n // $FlowFixMe\n err: err.stack || err.toString()\n });\n flushLogs();\n });\n \n } else {\n warn('gettoken_targetelement_no_method_or_url');\n flushLogs();\n }\n }\n\n\n checkout.initXO = () => {\n warn(`gettoken_initxo`);\n };\n\n // startFlow is our 'success' case - we get a token, and we can pass it back to the caller\n\n checkout.startFlow = once((item) => {\n debug(`gettoken_startflow`, { item });\n\n const { url, paymentToken } = matchUrlAndPaymentToken(item);\n\n checkUrlAgainstEnv(url);\n\n return resolve({ url, paymentToken });\n });\n });\n\n const url = paymentTokenAndUrl.then(result => result.url);\n const paymentToken = paymentTokenAndUrl.then(result => result.paymentToken);\n\n return { url, paymentToken };\n}\n\n\n/* Init PayPal Checkout\n --------------------\n\n Initialize the Checkout component with some standard props:\n\n - Pass in env from global state (saved during setup() call)\n - Return to success url on payment authorize\n - Return to cancel url on cancel\n*/\n\nlet paypalCheckoutInited = false;\nlet closeFlowCalled = false;\n\nfunction initPayPalCheckout(props = {}) : Object {\n\n info(`init_checkout`);\n\n if (paypalCheckoutInited && config.env !== ENV.TEST) {\n warn(`multiple_init_paypal_checkout`);\n }\n\n if (closeFlowCalled) {\n debug(`init_after_closeflow`);\n }\n\n paypalCheckoutInited = true;\n\n const paypalCheckout = Checkout.init({\n\n onAuthorize(data, actions) : ZalgoPromise {\n info(`payment_authorized`);\n logRedirect(data.returnUrl);\n return actions.redirect(window);\n },\n\n onCancel(data, actions) : ?ZalgoPromise {\n if (data.cancelUrl) {\n info(`payment_canceled`);\n logRedirect(data.cancelUrl);\n return actions.redirect(window);\n }\n },\n\n fallback(url) : ZalgoPromise {\n error(`fallback_handler`, { url });\n this.destroy();\n return redirect(url);\n },\n\n ...props\n });\n\n checkout.closeFlow = (closeUrl? : string) => {\n warn(`closeflow`);\n\n closeFlowCalled = true;\n\n reset();\n\n paypalCheckout.destroy();\n\n if (closeUrl) {\n warn(`closeflow_with_url`, { closeUrl });\n return redirect(closeUrl);\n }\n };\n\n return paypalCheckout;\n}\n\nfunction renderPayPalCheckout(props : Object = {}, hijackTarget? : ?Element) : ZalgoPromise {\n\n const urlProp = ZalgoPromise.resolve(props.url);\n\n const paymentToken = new ZalgoPromise(resolve => {\n props.init = (data) => {\n resolve(data.paymentToken);\n };\n });\n\n const errorHandler = once(err => {\n\n error(`component_error`, { error: stringifyError(err) });\n\n if (hijackTarget) {\n warn(`render_error_hijack_revert_target`);\n hijackTarget.removeAttribute('target');\n }\n\n // eslint-disable-next-line promise/no-promise-in-callback\n urlProp.then(url => {\n warn(`render_error_redirect_using_url`);\n return redirect(url);\n });\n\n // eslint-disable-next-line promise/no-promise-in-callback\n paymentToken.then(token => {\n warn(`render_error_redirect_using_token`);\n return redirect(extendUrl(config.checkoutUrl, { token }));\n });\n });\n\n props.onError = errorHandler;\n\n let paypalCheckout;\n\n if (hijackTarget) {\n\n delete props.url;\n\n paypalCheckout = initPayPalCheckout(props);\n\n paypalCheckout.hijack(hijackTarget);\n paypalCheckout.runTimeout();\n\n urlProp.then(url => {\n warn(`hijack_then_url_passed`);\n paypalCheckout.loadUrl(url);\n });\n\n } else {\n\n paypalCheckout = initPayPalCheckout(props);\n }\n\n const render = paypalCheckout.render(null, !hijackTarget);\n\n checkout.win = paypalCheckout.window;\n\n return render.catch(errorHandler);\n}\n\n\nfunction handleClick(clickHandler, event) {\n debug(`button_click_handler`);\n\n try {\n clickHandler(event);\n } catch (err) {\n error(`click_handler_error`, { error: stringifyError(err) });\n }\n}\n\nfunction handleClickHijack(event, element) : void {\n\n const targetElement = getHijackTargetElement(element);\n\n if (!targetElement) {\n return error(`target_element_not_found`);\n }\n\n info(`init_paypal_checkout_hijack`);\n\n const { url, paymentToken } = awaitPaymentTokenAndUrl(event, targetElement);\n\n let token;\n \n paymentToken.then(result => {\n token = result;\n });\n\n renderPayPalCheckout({ url, payment: () => ZalgoPromise.resolve(token) }, targetElement);\n}\n\nfunction listenClick(container, button, clickHandler, condition, tracker) : void {\n\n const element : HTMLElement = (container.tagName.toLowerCase() === 'a') ? container : button;\n\n const isClick = (typeof clickHandler === 'function');\n\n if (element.hasAttribute('data-paypal-click-listener')) {\n return warn(`button_already_has_paypal_click_listener`);\n }\n\n element.setAttribute('data-paypal-click-listener', '');\n\n const targetElement = getHijackTargetElement(element);\n\n if (targetElement && isClick) {\n info(`button_link_or_form`);\n }\n\n element.addEventListener('click', (event : Event) => {\n\n tracker();\n\n const eligible = isLegacyEligible();\n\n if (supportsPopups()) {\n debug(`click_popups_supported`);\n\n if (!eligible) {\n debug(`click_popups_supported_but_ineligible`);\n }\n } else {\n debug(`click_popups_not_supported`);\n\n if (eligible) {\n debug(`click_popups_not_supported_but_eligible`);\n }\n }\n\n if (!isClick) {\n\n if (!eligible) {\n return debug(`ineligible_listenclick`);\n }\n }\n\n info(`button_click`);\n\n if (typeof condition === 'function') {\n if (condition.call()) {\n info(`button_click_condition_enabled`);\n } else {\n return info(`button_click_condition_disabled`);\n }\n }\n\n if (isClick) {\n return handleClick(clickHandler, event);\n\n } else {\n return handleClickHijack(event, element);\n }\n });\n}\n\nfunction instrumentButtonRender(type : string) {\n info(`render_${ type }_button`);\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_RENDER,\n [ FPTI.KEY.BUTTON_TYPE ]: type\n });\n\n flushLogs();\n}\n\nfunction instrumentButtonClick(type : string) {\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_CLICK,\n [ FPTI.KEY.BUTTON_TYPE ]: type\n });\n flushLogs();\n}\n\n\n/* Setup\n -----\n\n Emulate window.paypal.checkout.setup.\n\n The purpose of this method is to:\n\n - Set up configuration for the incontext flow\n - Render a button to initiate the checkout window\n*/\n\nlet setupCalled = false;\n\nexport function setup(id : string, options : Object = {}) : ZalgoPromise {\n\n id = id || 'merchant';\n\n info(`setup`, {\n id,\n env: options.environment,\n options: safeJSON(options)\n });\n\n if (setupCalled) {\n debug(`setup_called_multiple_times`);\n }\n\n setupCalled = true;\n\n normalizeOptions(options);\n setupConfig(options);\n\n setupPostBridge(config.env);\n\n return ZalgoPromise.try(() => {\n\n // If there are no buttons passed, can only assume there's a custom paypal button with a custom listener\n\n if (!options.buttons.length) {\n return instrumentButtonRender(FPTI.BUTTON_TYPE.CUSTOM);\n }\n\n // Otherwise render whatever buttons we were asked to, and listen for them to be clicked\n\n return renderButtons(id, options.buttons).then(buttons => {\n\n buttons.forEach(button => {\n instrumentButtonRender(button.type);\n\n listenClick(button.container, button.element, button.click, button.condition, () => {\n instrumentButtonClick(button.type);\n });\n });\n });\n });\n}\n\ncheckout.setup = setup;\n\n/* Init XO\n -------\n\n Emulate paypal.checkout.initXO\n\n Normally this would be used only to open the checkout page. But here we can just kick off the whole flow, since\n getToken will handle loading the token into the window for us.\n*/\n\nfunction initXO() : void {\n\n debug(`initxo`);\n\n if (!isLegacyEligible()) {\n return debug(`ineligible_initxo`);\n }\n\n const { url, paymentToken } = awaitPaymentTokenAndUrl();\n\n info(`init_paypal_checkout_initxo`);\n\n renderPayPalCheckout({ url, payment: () => paymentToken });\n}\n\ncheckout.initXO = initXO;\n\n\n/* Start Flow\n ----------\n\n Emulate paypal.checkout.startFlow\n\n Normally this would be used to load the url into the browser after the window has already been opened. Again, we\n can just kick off the whole flow here, on the off chance that a merchant calls us on button click. Normally this\n method will have been patched over in getToken.\n*/\n\nfunction startFlow(item : string) {\n debug(`startflow`, { item });\n\n const { paymentToken, url } = matchUrlAndPaymentToken(item);\n\n checkUrlAgainstEnv(url);\n\n if (!isLegacyEligible()) {\n debug(`ineligible_startflow_global`, { url });\n redirect(url);\n return;\n }\n\n info(`init_paypal_checkout_startflow`);\n\n renderPayPalCheckout({ url, payment: () => ZalgoPromise.resolve(paymentToken) });\n}\n\ncheckout.startFlow = startFlow;\n\n\n/* Close Flow\n ----------\n\n Emulate paypal.checkout.closeFlow\n\n Close the component in case of any error on the merchant side.\n*/\n\nfunction closeFlow(closeUrl? : string) {\n warn(`closeflow_not_opened`);\n\n if (closeUrl) {\n warn(`closeflow_with_url`, { closeUrl });\n redirect(closeUrl);\n\n }\n}\n\ncheckout.closeFlow = closeFlow;\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { debug } from 'beaver-logger/client';\nimport { bridge } from 'post-robot/src';\n\nimport { config } from '../config';\nimport { openMetaFrame, noop } from '../lib';\n\nexport function setupPostBridge(env : string) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n const metaFrameDomain : string = config.paypalDomains[env];\n\n if (!bridge || !bridge.needsBridge({ domain: metaFrameDomain })) {\n return debug(`post_bridge_not_required`, { env });\n }\n\n debug(`setup_post_bridge`, { env });\n\n return openMetaFrame(env).then(noop);\n });\n}\n","/* @flow */\n\nimport { prefix } from 'beaver-logger/client';\n\nimport { onDocumentReady } from '../lib';\nimport { ENV } from '../constants';\n\nimport { LOG_PREFIX, ATTRIBUTES, CLASSES } from './constants';\nimport { setup } from './interface';\n\nconst { error, debug } = prefix(LOG_PREFIX);\n\n/* PayPal Checkout Ready\n ---------------------\n\n Call window.paypalCheckoutReady on document ready, if it has been defined by the merchant\n*/\n\nfunction invokeReady(method) {\n\n onDocumentReady(() => {\n debug(`paypal_checkout_ready`);\n setTimeout(() => {\n\n if (!window.paypal) {\n error(`paypal_checkout_ready_no_window_paypal`);\n }\n\n method();\n }, 1);\n });\n}\n\nfunction onKey(obj : Object, key : string, callback : Function) {\n\n if (!obj) {\n return;\n }\n\n let value = obj[key];\n\n if (value) {\n value = callback(value) || value;\n }\n\n try {\n\n delete obj[key];\n\n Object.defineProperty(obj, key, {\n\n configurable: true,\n\n set(item) {\n value = item;\n\n if (value) {\n value = callback(value) || value;\n }\n },\n\n get() : mixed {\n return value;\n }\n });\n\n } catch (err) {\n // pass\n }\n}\n\nonKey(window, 'paypalCheckoutReady', method => {\n\n if (typeof method === 'function') {\n\n const oneTimeReady = function () : void {\n if (!method.called) {\n method.called = true;\n return method.apply(this, arguments);\n }\n };\n\n invokeReady(oneTimeReady);\n\n return oneTimeReady;\n }\n});\n\n\n/* Scan for buttons\n ----------------\n\n Scan for any buttons on the page with a data-paypal-button attribute and auto-attach the PaypalCheckout component to them\n*/\n\nonDocumentReady(() => {\n\n const buttons = Array.prototype.slice.call(document.querySelectorAll(`[${ ATTRIBUTES.BUTTON }]`));\n\n if (buttons && buttons.length) {\n debug(`data_paypal_button`, { number: buttons.length });\n\n for (const button of buttons) {\n\n const id = button.getAttribute(ATTRIBUTES.MERCHANT_ID);\n\n let environment;\n\n if (button.hasAttribute(ATTRIBUTES.ENV)) {\n environment = button.getAttribute(ATTRIBUTES.ENV);\n } else if (button.hasAttribute(ATTRIBUTES.SANDBOX)) {\n environment = ENV.SANDBOX;\n }\n\n setup(id, { environment, button });\n }\n }\n\n // Show hidden buttons\n\n Array.prototype.slice.call(document.getElementsByClassName(CLASSES.HIDDEN_BUTTON)).forEach(el => {\n el.className = el.className.replace(CLASSES.HIDDEN_BUTTON, '');\n });\n});\n","/* @flow */\n\nimport './ready'; // eslint-disable-line import/no-unassigned-import\n\nexport * from './button';\nexport * from './constants';\nexport * from './interface';\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/constants/button.js","webpack:///./src/constants/checkout.js","webpack:///./src/constants/funding.js","webpack:///./src/constants/misc.js","webpack:///./src/constants/fpti.js","webpack:///./src/constants/country.js","webpack:///./src/constants/locale.js","webpack:///./src/constants/index.js","webpack:///./src/lib/jsx.js","webpack:///./node_modules/zalgo-promise/src/utils.js","webpack:///./node_modules/zalgo-promise/src/exceptions.js","webpack:///./node_modules/zalgo-promise/src/flush.js","webpack:///./node_modules/zalgo-promise/src/promise.js","webpack:///./node_modules/zalgo-promise/src/index.js","webpack:///./src/lib/logger.js","webpack:///./src/lib/proxy.js","webpack:///./src/lib/eligibility.js","webpack:///./src/lib/errors.js","webpack:///./src/lib/http.js","webpack:///./src/lib/throttle.js","webpack:///./src/lib/script.js","webpack:///./src/lib/meta.js","webpack:///./src/lib/funding.js","webpack:///./src/lib/index.js","webpack:///./src/config/config.js","webpack:///./src/config/index.js","webpack:///./node_modules/beaver-logger/client/util.js","webpack:///./node_modules/beaver-logger/client/builders.js","webpack:///./node_modules/beaver-logger/client/config.js","webpack:///./node_modules/beaver-logger/client/logger.js","webpack:///./node_modules/beaver-logger/client/performance.js","webpack:///./node_modules/beaver-logger/client/init.js","webpack:///./node_modules/beaver-logger/client/transitions.js","webpack:///./node_modules/beaver-logger/client/index.js","webpack:///./node_modules/zoid/src/lib/util.js","webpack:///./node_modules/zoid/src/lib/fn.js","webpack:///./node_modules/zoid/src/lib/dom.js","webpack:///./node_modules/zoid/src/lib/promise.js","webpack:///./node_modules/zoid/src/lib/css.js","webpack:///./node_modules/zoid/src/lib/decorators.js","webpack:///./node_modules/zoid/src/lib/logger.js","webpack:///./node_modules/zoid/src/lib/global.js","webpack:///./node_modules/zoid/src/lib/index.js","webpack:///./node_modules/cross-domain-utils/src/util.js","webpack:///./node_modules/cross-domain-utils/src/constants.js","webpack:///./node_modules/cross-domain-utils/src/utils.js","webpack:///./node_modules/cross-domain-utils/src/index.js","webpack:///./node_modules/zoid/src/constants.js","webpack:///./node_modules/post-robot/src/global.js","webpack:///./node_modules/post-robot/src/conf/constants.js","webpack:///./node_modules/post-robot/src/conf/config.js","webpack:///./node_modules/post-robot/src/conf/index.js","webpack:///./node_modules/@babel/runtime/helpers/esm/extends.js","webpack:///./src/lib/util.js","webpack:///./node_modules/post-robot/src/drivers/send/strategies.js","webpack:///./node_modules/post-robot/src/drivers/send/index.js","webpack:///./node_modules/post-robot/src/drivers/listeners.js","webpack:///./node_modules/post-robot/src/drivers/receive/types.js","webpack:///./node_modules/post-robot/src/drivers/receive/index.js","webpack:///./node_modules/post-robot/src/public/client.js","webpack:///./node_modules/post-robot/src/public/server.js","webpack:///./node_modules/post-robot/src/public/config.js","webpack:///./node_modules/post-robot/src/public/index.js","webpack:///./node_modules/post-robot/src/clean.js","webpack:///./node_modules/post-robot/src/interface.js","webpack:///./node_modules/post-robot/src/index.js","webpack:///./node_modules/post-robot/src/lib/util.js","webpack:///./node_modules/post-robot/src/lib/serialize.js","webpack:///./node_modules/post-robot/src/lib/ready.js","webpack:///./node_modules/post-robot/src/lib/index.js","webpack:///./src/compat/fallback.js","webpack:///./src/checkout/component.js","webpack:///./src/checkout/index.js","webpack:///./node_modules/belter/src/util.js","webpack:///./node_modules/belter/src/dom.js","webpack:///./node_modules/belter/src/index.js","webpack:///./node_modules/cross-domain-safe-weakmap/src/util.js","webpack:///./node_modules/cross-domain-safe-weakmap/src/weakmap.js","webpack:///./node_modules/cross-domain-safe-weakmap/src/native.js","webpack:///./node_modules/cross-domain-safe-weakmap/src/index.js","webpack:///./src/resources/fundingLogos/p24.jsx","webpack:///./src/resources/fundingLogos/sofort.jsx","webpack:///./src/resources/fundingLogos/ideal.jsx","webpack:///./src/resources/fundingLogos/giropay.jsx","webpack:///./src/resources/fundingLogos/eps.jsx","webpack:///./src/resources/fundingLogos/mybank.jsx","webpack:///./src/resources/fundingLogos/bancontact.jsx","webpack:///./src/resources/fundingLogos/payu.jsx","webpack:///./src/resources/fundingLogos/verkkopankki.jsx","webpack:///./src/resources/fundingLogos/blik.jsx","webpack:///./src/resources/fundingLogos/trustly.jsx","webpack:///./src/resources/fundingLogos/maxima.jsx","webpack:///./src/resources/fundingLogos/boleto.jsx","webpack:///./src/resources/fundingLogos/oxxo.jsx","webpack:///./src/resources/fundingLogos/paypal.jsx","webpack:///./src/resources/fundingLogos/credit.jsx","webpack:///./src/resources/fundingLogos/index.js","webpack:///./src/resources/cardLogos/index.js","webpack:///./src/resources/index.js","webpack:///./src/lib/session.js","webpack:///./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack:///./node_modules/@babel/runtime/helpers/esm/applyDecoratedDescriptor.js","webpack:///./node_modules/zoid/src/component/base.js","webpack:///./node_modules/zoid/src/component/window.js","webpack:///./node_modules/zoid/src/component/child/props.js","webpack:///./node_modules/zoid/src/component/child/index.js","webpack:///./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack:///./node_modules/zoid/src/component/parent/drivers.js","webpack:///./node_modules/zoid/src/component/parent/validate.js","webpack:///./node_modules/zoid/src/component/parent/props.js","webpack:///./node_modules/zoid/src/component/parent/index.js","webpack:///./node_modules/zoid/src/component/delegate/index.js","webpack:///./node_modules/zoid/src/component/component/templates/container.jsx","webpack:///./node_modules/zoid/src/component/component/templates/component.jsx","webpack:///./node_modules/zoid/src/component/component/index.js","webpack:///./node_modules/zoid/src/component/component/validate.js","webpack:///./node_modules/zoid/src/component/component/props.js","webpack:///./node_modules/zoid/src/interface.js","webpack:///./node_modules/zoid/src/index.js","webpack:///./src/lib/device.js","webpack:///./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack:///./node_modules/post-robot/src/bridge/bridge.js","webpack:///./node_modules/post-robot/src/bridge/common.js","webpack:///./node_modules/post-robot/src/bridge/child.js","webpack:///./node_modules/post-robot/src/bridge/parent.js","webpack:///./node_modules/post-robot/src/bridge/index.js","webpack:///./src/lib/dom.js","webpack:///./node_modules/zoid/src/error.js","webpack:///./src/lib/security.js","webpack:///./src/integrations/braintree.js","webpack:///./src/integrations/index.js","webpack:///./node_modules/zoid/src/drivers/index.js","webpack:///./src/lib/beacon.js","webpack:///./src/checkout/template/componentTemplate.jsx","webpack:///./src/checkout/template/containerStyle/base.js","webpack:///./src/checkout/template/sandboxStyle/base.js","webpack:///./src/checkout/template/containerTemplate.jsx","webpack:///./src/checkout/template/index.js","webpack:///./src/integrations/checkout.js","webpack:///./src/lib/namespace.js","webpack:///./src/checkout/template/containerContent.js","webpack:///./node_modules/hi-base32/src/base32.js","webpack:///./node_modules/zoid/src/drivers/script.js","webpack:///./node_modules/zoid/src/drivers/react.js","webpack:///./node_modules/zoid/src/drivers/vue.js","webpack:///./node_modules/zoid/src/drivers/angular.js","webpack:///./node_modules/zoid/src/drivers/glimmer.js","webpack:///./node_modules/zoid/src/drivers/angular2.js","webpack:///./node_modules/bowser/bowser.min.js","webpack:///./node_modules/post-robot/src/compat/ie.js","webpack:///./node_modules/post-robot/src/compat/index.js","webpack:///./src/resources/fundingLogos/pp_white.svg","webpack:///./src/resources/fundingLogos/pp_blue.svg","webpack:///./src/resources/fundingLogos/pp_black.svg","webpack:///./src/resources/fundingLogos/venmo_white.svg","webpack:///./src/resources/fundingLogos/itau.svg","webpack:///./src/resources/fundingLogos/venmo_blue.svg","webpack:///./src/resources/fundingLogos/elv.svg","webpack:///./src/resources/fundingLogos/elv_white.svg","webpack:///./src/resources/cardLogos/visa.svg","webpack:///./src/resources/cardLogos/amex.svg","webpack:///./src/resources/cardLogos/mastercard.svg","webpack:///./src/resources/cardLogos/maestro.svg","webpack:///./src/resources/cardLogos/discover.svg","webpack:///./src/resources/cardLogos/hiper.svg","webpack:///./src/resources/cardLogos/elo.svg","webpack:///./src/resources/cardLogos/jcb.svg","webpack:///./src/resources/cardLogos/cup.svg","webpack:///./node_modules/form-serialize/index.js","webpack:///./src/load.js","webpack:///./node_modules/post-robot/src/bridge/interface.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///(webpack)/buildin/amd-define.js","webpack:///./src/billing/template/containerTemplate.jsx","webpack:///./src/billing/index.js","webpack:///./src/external/pptm-factory.js","webpack:///./src/threeDomainSecure/index.js","webpack:///./src/external/pptm.js","webpack:///./src/api/rest.js","webpack:///./src/experiments.js","webpack:///./src/integrations/popupBridge.js","webpack:///./src/funding/config.js","webpack:///./src/funding/funding.js","webpack:///./src/button/config.js","webpack:///./src/button/props.js","webpack:///./src/button/validate.js","webpack:///./src/button/template/componentStyle/class.js","webpack:///./src/button/component.jsx","webpack:///./src/button/template/componentStyle/page.js","webpack:///./src/button/template/componentStyle/button.js","webpack:///./src/button/template/componentStyle/layout.js","webpack:///./src/button/template/componentStyle/branding.js","webpack:///./src/button/template/componentStyle/labels.js","webpack:///./src/button/template/componentStyle/responsive.js","webpack:///./src/button/template/componentStyle/color.js","webpack:///./src/button/template/content.js","webpack:///./src/button/template/componentTemplate.jsx","webpack:///./src/button/template/miscComponent.jsx","webpack:///./src/button/template/componentStyle/base.js","webpack:///./src/button/template/componentScript.js","webpack:///./src/button/template/containerTemplate.jsx","webpack:///./src/button/child.js","webpack:///./src/hacks.js","webpack:///./src/card/index.js","webpack:///./src/setup.js","webpack:///./src/interface.js","webpack:///./src/index.js","webpack:///./src/legacy/constants.js","webpack:///./src/legacy/eligibility.js","webpack:///./src/legacy/common.js","webpack:///./src/legacy/button.js","webpack:///./src/legacy/util.js","webpack:///./src/legacy/options.js","webpack:///./src/legacy/interface.js","webpack:///./src/legacy/postBridge.js","webpack:///./src/legacy/ready.js","webpack:///./src/legacy/index.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","hasOwnProperty","p","s","BUTTON_STYLE_OPTIONS","LABEL","SIZE","SHAPE","COLOR","LAYOUT","MAXBUTTONS","FUNDINGICONS","BRANDING","TAGLINE","HEIGHT","INSTALLMENTPERIOD","BUTTON_LABEL","PAYPAL","CHECKOUT","PAY","CREDIT","CARD","BUYNOW","INSTALLMENT","VENMO","ITAU","IDEAL","ELV","BANCONTACT","GIROPAY","SOFORT","EPS","MYBANK","P24","PAYU","VERKKOPANKKI","BLIK","TRUSTLY","MAXIMA","BOLETO","OXXO","BUTTON_COLOR","GOLD","BLUE","SILVER","BLACK","DARKBLUE","WHITE","TRANSPARENT","BUTTON_LOGO_COLOR","ANY","BUTTON_SIZE","TINY","SMALL","MEDIUM","LARGE","HUGE","RESPONSIVE","BUTTON_TAGLINE_COLOR","BUTTON_SHAPE","PILL","RECT","BUTTON_BRANDING","BRANDED","UNBRANDED","BUTTON_LAYOUT","HORIZONTAL","VERTICAL","BUTTON_NUMBER","SINGLE","MULTIPLE","BUTTON_LOGO","PP","CHECKOUT_OVERLAY_COLOR","FUNDING","ZIMPLER","VISA","MASTERCARD","AMEX","DISCOVER","SWITCH","MAESTRO","HIPER","ELO","JCB","CUP","COFINOGA","COFIDIS","CETELEM","CBNATIONALE","FUNDING_ELIGIBILITY_REASON","PRIMARY","NOT_ENABLED","SECONDARY_DISALLOWED","OPT_OUT","OPT_IN","DISALLOWED_COUNTRY","DEFAULT_COUNTRY","DEFAULT","REMEMBERED","NEED_OPT_IN","COMMIT_NOT_SET","INVALID_ENV","CARD_PRIORITY","ENV","LOCAL","STAGE","SANDBOX","PRODUCTION","TEST","DEMO","USERS","ALL","SOURCE","MANUAL","BUTTON_FACTORY","LOG_LEVEL","DEBUG","INFO","WARN","ERROR","PAYMENT_TYPE","EC_TOKEN","BA_TOKEN","PAY_ID","ATTRIBUTE","BUTTON","FUNDING_SOURCE","VERSION","PLATFORM","DESKTOP","MOBILE","FPTI","KEY","FEED","STATE","TRANSITION","BUTTON_TYPE","SESSION_UID","BUTTON_SESSION_UID","TOKEN","CONTEXT_ID","CONTEXT_TYPE","REFERER","SELLER_ID","DATA_SOURCE","BUTTON_SOURCE","ERROR_CODE","ERROR_DESC","PAGE_LOAD_TIME","EXPERIMENT_NAME","TREATMENT_NAME","TRANSITION_TIME","FUNDING_LIST","FUNDING_COUNT","CHOSEN_FUNDING","BUTTON_WIDTH","MAX_BUTTONS","FUNDING_REMEMBERED","BUTTON_TAGLINE_ENABLED","RESPONSE_DURATION","PAYMENT_FLOW","BUTTON_VERSION","IFRAME","HTML","CUSTOM","BUTTON_SESSION_ID","CHECKOUTJS","LOAD","PPTM","SCRIPT_LOAD","BUTTON_RENDER","BUTTON_LOAD","BUTTON_CLICK","BUTTON_RENDER_INTRANET_MODE","BUTTON_CLICK_INTRANET_MODE","CREATE_PAYMENT","RECIEVE_PAYMENT","CHECKOUT_INIT","CHECKOUT_AUTHORIZE","CHECKOUT_SHIPPING_CHANGE","CHECKOUT_CANCEL","CHECKOUT_ERROR","EXTERNAL_EXPERIMENT","EXTERNAL_EXPERIMENT_COMPLETE","PPTM_LOAD","PPTM_LOADED","COUNTRY","AD","AE","AG","AI","AL","AM","AN","AO","AR","AT","AU","AW","AZ","BA","BB","BE","BF","BG","BH","BI","BJ","BM","BN","BO","BR","BS","BT","BW","BY","BZ","C2","CA","CD","CG","CH","CI","CK","CL","CM","CN","CO","CR","CV","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GI","GL","GM","GN","GP","GR","GT","GW","GY","HK","HN","HR","HU","ID","IE","IL","IN","IS","IT","JM","JO","JP","KE","KG","KH","KI","KM","KN","KR","KW","KY","KZ","LA","LC","LI","LK","LS","LT","LU","LV","MA","MC","MD","ME","MG","MH","MK","ML","MN","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PL","PM","PN","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","ST","SV","SZ","TC","TD","TG","TH","TJ","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","US","UY","VA","VC","VE","VG","VN","VU","WF","WS","YE","YT","ZA","ZM","ZW","LANG","CS","DA","EL","EN","HE","JA","KO","ZH","LANG_TO_DEFAULT_COUNTRY","ALLOWED_INSTALLMENT_COUNTRIES","ALLOWED_INSTALLMENT_PERIOD","LOCALE","htmlEncode","html","toString","replace","JsxHTMLNode","props","children","this","propsToString","childrenToString","keys","filter","map","join","innerHTML","result","iterate","child","Array","isArray","JsxHTMLNodeContainer","jsxToHTML","jsxRender","template","renderers","nodes","regexMap","match","type","text","Error","trim","test","break","isPromise","item","Promise","window","Window","constructor","then","err","flushPromise","dispatchedErrors","possiblyUnhandledPromiseHandlers","activeCount","flushActive","promise","resolve","startActive","endActive","ZalgoPromise","handler","resolved","rejected","errorHandled","error","handlers","dispatching","stack","isAsync","res","reject","dispatch","setTimeout","indexOf","push","j","length","dispatchPossiblyUnhandledError","asyncReject","chain","firstPromise","secondPromise","onSuccess","onError","catch","undefined","finally","onFinally","try","timeout","time","clearTimeout","toPromise","TypeError","all","promises","count","results","prom","hash","items","method","onPossiblyUnhandledException","cancel","splice","context","args","apply","delay","flush","getRefererDomain","xchild","getParentDomain","location","host","setupProxyLogTransport","once","setTransport","win","originalMethod","getDomain","config","paypalDomain","isSameDomain","send","noop","methods","on","domain","paypal_domain_regex","data","isWindowClosed","source","arguments","proxyMethod","getParent","getTransport","initLogger","addPayloadBuilder","referer","path","pathname","env","country","locale","lang","uid","getSessionID","ver","__PAYPAL_CHECKOUT__","addHeaderBuilder","addMetaBuilder","state","addTrackingBuilder","payload","contextType","contextID","sessionID","paymentToken","root","token","isPayPalDomain","queryToken","getQueryParam","getToken","buttonSessionID","getButtonSessionID","merchantID","version","protocol","PROTOCOL","FILE","init","uri","loggerUrl","heartbeat","logPerformance","prefix","logLevel","setLogLevel","logLevels","loggerConfig","POSTROBOT_CONFIG","bowserCache","getBowser","userAgent","getUserAgent","require","bowser","getBrowser","SUPPORTED_BROWSERS","browser","eligibilityResults","isEligible","isIEIntranet","navigator","compareVersions","isBrowserEligible","checkRecognizedBrowser","mobile","android","ios","info","flushLogs","logWarn","console","warn","log","checkForCommonErrors","JSON","stringify","toJSON","isIE","isIECompHeader","message","bar","baz","zomg","a","opener","parent","returnContext","assign","b","HEADERS","CONTENT_TYPE","ACCEPT","headerBuilders","corrids","request","url","headers","json","body","normalizedHeaders","toLowerCase","builtHeaders","headerBuilder","xhr","XMLHttpRequest","addEventListener","responseHeaders","rawHeaders","split","values","parseHeaders","getAllResponseHeaders","corrID","status","contentType","isJSON","responseText","parse","evt","getResponseHeader","open","setRequestHeader","encodeURIComponent","ontimeout","prev_corr_ids","options","post","THROTTLE_GROUP","CONTROL","THROTTLE","getThrottle","sample","sticky","group","getStorageID","percentile","getStorageState","storage","throttlePercentiles","Math","floor","random","getThrottlePercentile","treatment","started","forced","localStorage","getItem","isEnabled","isDisabled","getTreatment","checkpointName","checkpoint","expuid","track","logStart","logComplete","getReturnToken","href","payer","getCurrentScript","memoize","scripts","slice","document","getElementsByTagName","script","src","scriptUrl","hasAttribute","currentScript","debug","getScriptVersion","Boolean","getCurrentScriptUrl","getDomainSetting","def","hostname","domain_settings","domainMatches","openMetaFrame","iframeEligible","iframeEligibleReason","rememberedFunding","metaFrameUrl","metaFrameUrls","metaFrameDomain","paypalDomains","bridge","metaListener","openBridge","extendUrl","getRememberedFunding","identity","hasRememberedFunding","getSessionState","session","recentlyCheckedRemembered","getRememberedFundingPromises","getGlobalState","global","rememberFundingPromises","getRememberedFundingPromise","isRememberedFunding","rememberFunding","sources","isDevice","flushRememberedFundingPromises","loadMeta","isFundingRemembered","precacheRememberedFunding","locales","cors","stage","stageDomain","apiStage","ports","default","val","localhostUrl","authCode","throttles","v4_mobile_device","ie_full_page","allow_full_page_fallback","memoize_payment","force_bridge","log_authorize","disable_venmo","creditTestDomains","customCountry","msie","firefox","chrome","safari","opera","msedge","samsungBrowser","silk","ucbrowser","vivaldi","session_uid_lifetime","_apiStage","button","checkout","guest","altpay","stageUrl","port","apiStageUrl","corsApiUrls","wwwApiUrls","local","sandbox","production","checkoutUri","altpayUris","guestUris","billingUris","buttonUris","inlinedCardFieldUris","postBridgeUris","legacyCheckoutUris","buttonJSUrls","loginUri","hermesLoggerUri","loggerUri","loggerThrottlePercentage","pptmUri","paymentStandardUri","authApiUri","paymentApiUri","orderApiUri","billingApiUri","experienceApiUri","trackingApiUri","paypalUrls","checkoutUris","demo","postBridgeUri","apiUrls","_paypalUrl","wwwApiUrl","corsApiUrl","paypalUrl","legacyCheckoutUrls","isTestExperiment","apiUrl","defaultLocale","extend","dest","over","uniqueID","chars","charAt","payloadBuilders","metaBuilders","trackingBuilders","builder","initial_state_name","flushInterval","debounceInterval","sizeLimit","silent","heartbeatConsoleLog","heartbeatInterval","heartbeatTooBusy","heartbeatTooBusyThreshold","autoLog","logUnload","buffer","tracking","transport","fireAndForget","XRequest","ActiveXObject","XDomainRequest","isSameProtocol","req","toUpperCase","headerName","onreadystatechange","readyState","ajax","newTransport","loaded","print","level","event","documentMode","warning","immediateFlush","meta","events","interval","debounce","resolver","rejector","enqueue","timestamp","Date","now","enablePerformance","performance","timing","connectEnd","navigationStart","abs","timer","startTime","elapsed","parseInt","reset","reqStartElapsed","clientTimer","reqTimer","initiated","conf","heartBeatTimer","heartbeatCount","client_elapsed","req_elapsed","forEach","offset","memory","navigation","getEntries","resource","initiatorType","initPerformance","loop","heartbeatMaxThreshold","lag","heartbeatPayload","setInterval","beaverLogQueue","windowID","pageID","currentState","startTransition","endTransition","toState","elapsedTime","currentTime","transitionName","duration","transition","transition_time","urlEncode","str","dasherizeToCamel","string","g","obj","pathParts","replaceObject","replacers","fullKey","configurable","itemKey","replacer","replaced","set","copyProp","target","descriptor","getOwnPropertyDescriptor","dotify","newobj","every","objectIDs","WeakMap","getObjectID","stringifyError","eventEmitter","triggered","eventName","handlerList","cancelled","listener","trigger","triggerOnce","called","cacheKey","serializeFunctions","__type__","deserializeFunctions","self","appendChild","container","getElementSafe","id","element","Element","nodeType","style","ownerDocument","isElement","getElementById","querySelector","getElement","isDocumentReady","elementReady","el","clearInterval","popup","params","PopupOpenError","writeToWindow","write","close","err2","writeElementToWindow","tag","tagName","documentElement","removeChild","setStyle","styleText","doc","styleSheet","cssText","createTextNode","awaitFrameLoadPromises","awaitFrameLoad","frame","has","linkFrameWindow","contentWindow","awaitFrameWindow","loadedFrame","iframe","attributes","createElement","class","className","setAttribute","frameBorder","allowTransparency","backgroundColor","removeEventListener","parseQuery","queryString","pair","decodeURIComponent","extendQuery","originalQuery","originalUrl","originalHash","query","hashString","bindEvents","eventNames","VENDOR_PREFIXES","setVendorCSS","capitalizedName","CSSRule","KEYFRAMES_RULE","WEBKIT_KEYFRAMES_RULE","MOZ_KEYFRAMES_RULE","O_KEYFRAMES_RULE","MS_KEYFRAMES_RULE","ANIMATION_START_EVENTS","ANIMATION_END_EVENTS","animate","clean","stylesheets","styleSheets","cssRules","cssRule","isValidAnimation","startTimeout","endTimeout","startEvent","endEvent","hasStarted","cleanUp","animationName","stopPropagation","STYLE","DISPLAY","NONE","BLOCK","VISIBILITY","VISIBLE","HIDDEN","IMPORTANT","showElement","setProperty","hideElement","destroyElement","parentNode","showAndAnimate","animation","animateAndHide","addClass","classList","add","removeClass","remove","getCurrentScriptDir","isElementClosed","watchElementForClose","runInterval","prefetchPage","onload","onerror","getHttpType","getHTML","JSX_EVENTS","onClick","fixScripts","selector","querySelectorAll","newScript","textContent","replaceChild","jsxDom","content","prop","textNode","denodeify","promisify","isPerc","isPx","toNum","toPx","toCSS","normalizeDimension","dim","max","memoized","__memoized__","displayName","CONFIG","logInfo","logError","globalFor","__ZOID__","localGlobal","isRegex","MOCK","ABOUT","WILDCARD","IE_WIN_ACCESS_ERROR","isAboutProtocol","getOpener","canReadFromWindow","getActualDomain","mockDomain","isActuallySameDomain","desc","assertSameDomain","isAncestorParent","childParent","getParents","getFrames","frames","len","getAllChildFrames","getTop","top","getAllFramesInWindow","isTop","iframeWindows","iframeFrames","allowMock","closed","mockclosed","iframeIndex","collection","safeIndexOf","contains","isFrameWindowClosed","cleanIframes","mockUserAgent","getFrameByName","winFrames","childFrame","findFrameByName","findChildFrameByName","namedFrame","isOpener","getAncestor","isAncestor","actualParent","isPopup","isIframe","anyMatch","collection1","collection2","item1","getDistanceFromTop","distance","getNthParentFromTop","getNthParent","isSameTopWindow","win1","win2","top1","top2","allFrames1","allFrames2","opener1","opener2","matchDomain","pattern","origin","some","subpattern","stringifyDomainPattern","getDomainFromUrl","onCloseWindow","callback","maxtime","Infinity","check","isWindow","__cross_domain_utils_window_check__","ZOID","POST_MESSAGE","INIT","PROPS","PROP_CALLBACK","CLOSE","CHECK_CLOSE","REDIRECT","RESIZE","DELEGATE","ALLOW_DELEGATE","HIDE","SHOW","PROP_TYPES","STRING","OBJECT","FUNCTION","BOOLEAN","NUMBER","INITIAL_PROPS","RAW","UID","WINDOW_REFERENCES","OPENER","TOP","PARENT","GLOBAL","PROP_TYPES_LIST","CONTEXT_TYPES","POPUP","CLASS_NAMES","OUTLET","COMPONENT_FRAME","PRERENDER_FRAME","INVISIBLE","EVENTS","ATTRIBUTES","IFRAME_PLACEHOLDER","ANIMATION_NAMES","SHOW_CONTAINER","SHOW_COMPONENT","HIDE_CONTAINER","HIDE_COMPONENT","EVENT_NAMES","CLICK","CLOSE_REASONS","PARENT_CALL","CHILD_CALL","CLOSE_DETECTED","USER_CLOSED","PARENT_CLOSE_DETECTED","CONTEXT_TYPES_LIST","CALL_ORIGINAL","CALL_DELEGATE","DEFAULT_DIMENSIONS","WIDTH","CONSTANTS","WINDOW_PROPS","POSTROBOT","registerSelf","POST_MESSAGE_TYPE","REQUEST","RESPONSE","ACK","POST_MESSAGE_ACK","SUCCESS","POST_MESSAGE_NAMES","METHOD","HELLO","OPEN_TUNNEL","WINDOW_TYPES","FULLPAGE","SERIALIZATION_TYPES","PROMISE","ZALGO_PROMISE","REGEX","SEND_STRATEGIES","BRIDGE","MOCK_PROTOCOL","FILE_PROTOCOL","BRIDGE_NAME_PREFIX","POSTROBOT_PROXY","ALLOW_POSTMESSAGE_POPUP","__ALLOW_POSTMESSAGE_POPUP__","BRIDGE_TIMEOUT","CHILD_WINDOW_TIMEOUT","ACK_TIMEOUT","RES_TIMEOUT","ALLOWED_POST_MESSAGE_METHODS","ALLOW_SAME_ORIGIN","_extends","moduleGlobal","getGlobal","cache","glob","__CACHE_START_TIME__","regmatch","safeJSON","listeners","listen","awaitKey","newErr","stringifyErrorMessage","defaultMessage","index","patchMethod","original","callOriginal","sortBy","arr","order","sort","perc","pixels","percentage","round","regex","SEND_MESSAGE_STRATEGIES","serializedMessage","emulateIERestrictions","dom","postMessage","sendBridgeMessage","needsBridgeForBrowser","isBridge","sendMessage","getWindowType","sourceDomain","windowType","buildMessage","serializeMethods","messages","jsonStringify","strategyName","success","needsGlobalMessagingForBrowser","foreignGlobal","receiveMessage","responseListeners","requestListeners","WINDOW_WILDCARD","erroredResponseListeners","__DOMAIN_REGEX__","getResponseListener","deleteResponseListener","isResponseListenerErrored","getRequestListener","nameListeners","winQualifier","winListeners","RECEIVE_MESSAGE_TYPES","ack","respond","originalSource","code","handleError","response","parsedMessage","jsonParse","parseMessage","receivedMessages","deserializeMethods","messageListener","messageEvent","sourceElement","originalEvent","targetWindow","HTMLIFrameElement","hasResult","requestPromises","requestPromise","onChildWindowReady","sayHello","actualDomain","responseListener","addResponseListener","ackTimeout","resTimeout","cycleTime","cycle","min","markResponseListenerErrored","sendToParent","client","listenerOptions","errorHandler","requestListener","addRequestListener","listenersCollection","existingListener","regexListener","strDomain","regexListeners","delete","onceFunction","errorOnClose","safeInterval","onceListener","disable","cleanUpWindow","popupWindowsByWin","remoteWindows","readyPromises","initialized","openTunnelToOpener","initOnReady","listenForMethods","INTERFACE","attachEvent","detachEvent","depth","eachArray","eachObject","each","childItem","weakMapMemoize","weakmap","arg","indent","objectToJSON","arrayToJSON","prototype","meth","isSerialized","serializeMethod","destination","__id__","__name__","__message__","__code__","__then__","serializePromise","serializeZalgoPromise","__source__","deserializeMethod","wrapper","__xdomain__","deserializeZalgoPromise","deserializeError","deserializePromise","RegExp","deserializeRegex","onAuthorize","onLegacyPaymentAuthorize","postBridgeUrl","postBridgeDomain","postBridge","watchForLegacyFallback","ppxoWatching","XMLHttpRequestsend","_patched","DONE","returnUrl","billingToken","payerID","paymentID","Checkout","XhrResponse","RESPONSE_TYPES","mob","Xhr","_xhrOnReady","onLegacyFallback","scrolling","buildUrl","payment","determineUrl","fundingSource","contexts","supportsPopups","validate","prerenderTemplate","componentTemplate","containerTemplate","required","queryParam","xprops","allowDelegate","getBrowserLocale","sendToChild","determineParameterFromToken","queryValue","childDecorate","alias","overlayColor","commit","experience","fundingOffered","getAttribute","decorate","actions","intent","closeComponent","redirect","redir","isButton","isGuest","access_token","$Api","addHeader","onShippingChange","onAuth","sameDomain","accessToken","onCancel","cancelUrl","onClose","reason","shouldCancel","fallback","__test__","action","sdkMeta","base64encode","width","height","isChild","onProps","injector","instance","payment_action","btoa","p1","String","fromCharCode","Buffer","from","toISOString","fn","setFunctionName","isLocalStorageEnabled","logic","__inline_memoize_cache__","subkey","serializeArgs","inlineMemoize","setItem","removeItem","onResize","currentWidth","offsetWidth","currentHeight","offsetHeight","observer","newWidth","newHeight","ResizeObserver","observe","MutationObserver","childList","subtree","characterData","disconnect","CrossDomainSafeWeakMap","freeze","testWeakMap","testKey","hasNativeWeakMap","_cleanupClosedWindows","isSafeToReadWrite","entry","writable","getOrSet","P24_LOGO_COLORS","primary","secondary","SOFORT_LOGO_COLORS","IDEAL_LOGO_COLORS","tertiary","GIROPAY_LOGO_COLORS","EPS_LOGO_COLORS","MYBANK_LOGO_COLORS","BANCONTACT_LOGO_COLORS","PAYU_LOGO_COLORS","quaternary","VERKKOPANKKI_LOGO_COLORS","quinary","senary","BLIK_LOGO_COLORS","TRUSTLY_LOGO_COLORS","MAXIMA_LOGO_COLORS","BOLETO_LOGO_COLORS","OXXO_LOGO_COLORS","PAYPAL_LOGO_COLORS","CREDIT_LOGO_COLORS","fundingLogos","pp_white","pp_blue","pp_black","logoColor","viewBox","xmlns","preserveAspectRatio","fill","transform","venmo_white","venmo_blue","itau","points","elv","elv_white","x","y","stroke","stroke-width","fill-rule","mask","gradientUnits","x1","y1","x2","y2","gradientTransform","stop-color","cx","cy","fx","fy","cardLogos","visa","amex","mastercard","maestro","discover","hiper","elo","jcb","cup","accessedStorage","LOCAL_STORAGE_KEY","SESSION_KEY","GLOBAL_KEY","localStorageEnabled","rawStorage","getSession","created","guid","querySessionID","_assertThisInitialized","ReferenceError","_applyDecoratedDescriptor","decorators","initializer","reverse","reduce","decorator","BaseComponent","tasks","cleaned","component","register","complete","run","hasTasks","pop","addProp","createError","listenerName","errorListener","normalize","isZoidComponentWindow","getComponentMeta","componentMeta","zoidcomp","encodedOptions","base32","decode","getWindowByRef","ref","ancestor","windows","getParentComponentWindow","componentParent","getParentRenderWindow","renderParent","normalizeChildProp","getProp","looseProps","ChildComponent","onPropHandlers","onInit","watchingForResize","autoResize","hasValidParentDomain","RenderError","setProps","getInitialProps","setWindows","watchForResize","allowedParentDomains","parentComponentWindow","func","normalizedProps","getPropNames","normalizeChildProps","parentWindow","__activeZoidComponent__","watchForClose","checkClose","enableAutoResize","getAutoResize","resize","updateProps","destroy","hide","show","userClose","focus","stringifiedError","_defineProperties","_createClass","Constructor","protoProps","staticProps","RENDER_DRIVERS","validateProp","isNaN","normalizeProp","resultValue","isDefined","decorated","getQueryValue","focusable","renderedIntoContainerTemplate","allowResize","openOnClick","needsBridge","childWindowName","title","frameWindow","detectClose","iframeWatcher","elementWatcher","openPrerender","prerenderIframe","prerenderFrameWindow","prerenderWindow","switchPrerender","delegateOverrides","openContainer","destroyComponent","destroyContainer","cancelContainerEvents","createPrerenderTemplate","showContainer","showComponent","hideContainer","hideComponent","loadUrl","hijackSubmit","renderTemplate","openContainerFrame","getOutlet","override","dimensions","outerWidth","screenX","screen","outerHeight","screenY","getPosition","left","toolbar","menubar","resizable","scrollbars","ParentComponent","handledErrors","outlet","childExports","validateParentDomain","buildChildWindowName","renderTo","registerActiveComponent","watchForUnload","render","tryInit","onRender","driver","linkDomain","linkUrl","loadHTML","runTimeout","onEnter","checkAllowRenderTo","delegate","prefetch","activeComponents","getComponentParentRef","getRenderParentRef","renderToWindow","childDomain","sProps","getPropsForChild","unsafeRenderTo","encodedName","encodedVersion","encode","validateProps","normalizedProp","normalizeProps","propsDef","builtinProps","serialization","dotkey","escape","getValidDomain","getUrl","finalUrl","xcomponent","builtUrl","needsBridgeParams","bridgeUrl","getBridgeUrl","bridgeDomain","getBridgeDomain","hasBridge","windowName","onDisplay","propName","overrides","closeWindowListener","onunload","unloadWindowListener","hijack","targetElement","onTimeout","closeContainer","renderer","CLASS","ANIMATION","CONTEXT","EVENT","errErr","destroyAll","DelegateComponent","getOverrides","defaultContainerTemplate","defaultPrerenderTemplate","drivers","angular","angular2","glimmer","react","vue","Component","listenForResize","defaultLogLevel","defaultEnv","defaultContext","driverCache","validatePropDefinitions","anyEnabled","components","registerDrivers","registerChild","listenDelegate","driverName","dep","canRenderTo","domains","getForEnv","envUrl","isZoidComponent","getRenderContext","validateRenderContext","getDefaultContext","renderIframe","renderPopup","renderIframeTo","renderPopupTo","prerender","innerProps","innerElement","logWarning","getByTag","postRobot","_postRobot","_CONSTANTS","isOperaMini","ua","isIos","mHttp","mContent","isIE11","isGoogleSearchApp","isIosWebview","isAndroid","isAndroidWebview","isFirefoxIOS","isEdgeIOS","isFacebookWebView","isQQBrowser","isMacOsCna","standalone","matchMedia","matches","_inheritsLoose","subClass","superClass","__proto__","deleteTunnelWindow","tunnelWindows","getTunnelWindow","tunnelWindowId","openTunnelToParent","canary","tunnelWindow","cleanTunnelWindows","addTunnelWindow","needsBridgeForWin","needsBridgeForDomain","getBridgeName","sanitizedDomain","documentBodyReady","registerRemoteWindow","sendMessagePromise","findRemoteWindow","registerRemoteSendMessage","remoteWindow","sendMessageWrapper","remoteWin","remoteDomain","rejectRemoteSendMessage","messagingChild","messagingParent","awaitRemoteBridgeForWindow","bridges","openBridgeFrame","bridgeFrames","popupWindowsByName","winDetails","listenForRegister","windowOpen","winOptions","destroyBridges","last","winName","documentReady","loadScript","attrs","scriptLoadError","attr","HTMLElement","getElements","NodeList","HTMLCollection","onDocumentReady","search","urlWillRedirectPage","hasHash","serverUrl","originalQueryString","newQueryString","newUrl","normalizeLocale","normalizeLang","nav","languages","language","userLanguage","getBrowserLocales","loc","isElementVisible","getClientRects","getPageRenderTime","domInteractive","getResourceLoadTime","entries","IntegrationError","allowIframe","awaitBraintreeClient","braintree","auth","authorization","paypalCheckout","SUPPORTED_REST_FIELDS","transactions","amount","total","currency","external_selected_funding_instrument_type","shipping_address","line1","line2","city","postal_code","country_code","phone","recipient_name","application_context","brand_name","shipping_preference","landing_page","mapPaymentToBraintree","supported","supportedKeys","btPayment","flow","offerCredit","shippingAddressOverride","postalCode","countryCode","recipientName","landingPageType","enableShippingAddress","shippingAddressEditable","BEACON_URL","APP_NAME","beacon","appName","Image","checkoutComponentStyle","getContainerStyle","getSandboxStyle","LOGO_COLOR","containerContent","preventDefault","alert","ppLogo","pp","paypalLogo","paypal","aria-label","role","alt","windowMessage","continue","getPaymentType","billingUrls","guestUrls","altpayUrls","checkoutUrls","extendNamespace","xports","namespaces","childnamespaces","namespace","childname","childnamespace","HI_BASE32_NO_NODE_JS","process","versions","node","COMMON_JS","HI_BASE32_NO_COMMON_JS","AMD","define","BASE32_ENCODE_CHAR","BASE32_DECODE_CHAR","blocks","throwInvalidUtf8","position","partial","substr","decodeAsBytes","base32Str","v1","v2","v3","v4","v5","v6","v7","v8","bytes","remain","asciiOnly","followingChars","toUtf8String","input","notString","ArrayBuffer","Uint8Array","encodeBytes","charCodeAt","encodeAscii","end","start","encodeUtf8","asBytes","innerText","eval","scan","scriptTags","React","ReactDOM","createClass","componentDidMount","findDOMNode","setState","componentDidUpdate","componentWillUnmount","inheritAttrs","mounted","$el","$attrs","beforeUpdate","ng","directive","scope","restrict","controller","$scope","$element","safeApply","$root","$$phase","$apply","getProps","scopeProps","$watch","GlimmerComponent","didInsertElement","zoid","AngularComponent","NgModule","ElementRef","NgZone","internalProps","zone","ComponentInstance","inputs","Class","elementRef","ngOnInit","nativeElement","ngOnChanges","declarations","e","N","u","f","h","v","w","E","S","T","whale","mzbrowser","coast","yandexbrowser","maxthon","epiphany","puffin","sleipnir","kMeleon","osname","windowsphone","chromeos","chromeBook","sailfish","seamonkey","firefoxos","phantom","slimer","blackberry","webos","touchpad","bada","tizen","qupzilla","chromium","googlebot","blink","webkit","gecko","mac","xbox","linux","k","C","osversion","L","tablet","isUnsupportedBrowser","_detect","detect","sourceWindow","k_r_submitter","k_r_success_contrls","brackets","hash_serializer","hash_assign","shift","between","_values","exec","parse_keys","existing","str_serialize","form","serializer","elements","radio_store","disabled","nodeName","checked","empty","selectOptions","isSelectedOptions","option","selected","Button","existingVersion","_interface","errtype","__webpack_amd_options__","containerStyle","aria-modal","noContentFoundInContainer","BillingPage","inlinedCardFieldUrls","cardType","prefilledZipCode","onEvent","ThreeDomainSecure","challengeUrl","threeDomainSecureToken","pptm","reloadPptmScript","clientId","tryCreatePptmScript","shouldReloadPptmScript","removePptm","createPptmScript","listenForLoadWithNoContent","listenForButtonRender","paypalDDL","mrid","client_id","fullUrl","pptmUrl","async","PPTM_ID","shouldCreateInitialPptmScript","existingScript","proxyRest","createAccessToken","clientID","basicAuth","authApiUrls","Authorization","grant_type","createExperienceProfile","experienceDetails","temporary","experienceApiUrls","logPaymentResponse","links","rel","createPayment","paymentDetails","redirect_urls","return_url","cancel_url","payment_method","experienceID","trackingData","trackingID","trackingApiUrls","createTracking","experience_profile_id","partner_attribution_id","paymentApiUrls","createOrder","purchase_units","unit","reference_id","orderApiUrls","createBillingAgreement","billingDetails","plan","merchant_preferences","billingApiUrls","token_id","rest","billingAgreement","parentWin","onAuthorizeListener","experiment","loggedEvents","loggedExperimentEvents","edge","logExperimentTreatment","externalExperiment","externalExperimentTreatment","externalExperimentToken","logReturn","returnToken","OPTYPE","PAYMENT","CANCEL","CONTINGENCY","PAYMENT_CANCELLED","normalizeCheckoutProps","awaitPopupBridge","popupBridge","onComplete","redirect_uri","getReturnUrlPrefix","wrapPopupBridge","FUNDING_PRIORITY","FUNDING_ORDER","FUNDING_CONFIG","enabled","allowOptIn","allowOptOut","allowRemember","allowHorizontal","allowVertical","requireCommitAsTrue","__paypal_checkout__","serverConfig","paypalMerchantConfiguration","creditCard","isPayPalBranded","allowedCountries","defaultVerticalCountries","platforms","allowedEnvs","CARD_CONFIG","priority","getConfig","category","categoryConfig","getFundingConfig","fundingEligibilityReasons","isFundingIneligible","funding","layout","disallowed","isFundingAutoEligible","allowed","remembered","determineEligibleCards","card","logFundingEligibility","reasons","table","eligible","factors","BUTTON_CONFIG","colors","sizes","shapes","layouts","logoColors","tagLineColors","secondaryColors","dualTag","defaultLabel","defaultVerticalLabel","defaultColor","defaultSize","defaultVerticalSize","defaultShape","defaultLayout","defaultBranding","defaultVerticalBranding","defaultFundingIcons","defaultTagline","defaultDual","minimumSize","minimumVerticalSize","maximumSize","maximumVerticalSize","minHorizontalButtons","minVerticalButtons","maxHorizontalButtons","maxVerticalButtons","allowUnbranded","allowFundingIcons","allowPrimary","allowPrimaryVertical","allowPrimaryHorizontal","label","logoLabel","installmentperiod","allowSecondaryVertical","allowSecondaryHorizontal","FUNDING_TO_DEFAULT_LABEL","LABEL_TO_FUNDING","BUTTON_RELATIVE_STYLE","VERTICAL_MARGIN","BUTTON_STYLE","defaultWidth","defaultHeight","minWidth","maxWidth","minHeight","maxHeight","buttonTextMargin","allowFunding","allowTagline","byPayPalHeight","labelToFunding","getButtonConfig","defs","checkoutCustomization","parseLocale","size","color","shape","branding","fundingicons","tagline","configMax","determineMaxButtons","eligibleFunding","ineligibleReason","autoEligibleReason","isFundingEligible","unshift","determineEligibleFunding","multiple","cards","validateButtonLocale","validateButtonStyle","maxbuttons","minButtons","buttonSize","isInstallmentAllowedCountry","validateRegionSpecificButton","creditThrottle","SHOULD_FOCUS","CONTAINER","TAGLINE_COLOR","TEXT","LOGO","SEPARATOR","DOM_READY","PERSONALIZATION_TEXT","pageStyle","buttonStyle","layoutStyle","brandingStyle","labelStyle","DUAL_BUTTON_MIN_RATIO","buttonColorStyle","componentContent","allowedPersonalizationLabels","getCommonButtonClasses","determineLabel","renderCards","logo","tabindex","renderContent","dynamicContent","getLocaleContent","optional","contentString","contentVariable","separator","validateButtonProps","buttonNodes","buttonLabel","determineButtons","contentText","allowedAnimation","hasTabIndex","personalizedButtonText","impression","COMPRESSED","EXPANDED","PAYPAL_BUTTON","PAYPAL_LOGO","BUTTON_TEXT","getButtonTextAnimationStyle","Beacon","renderButtonTextDiv","renderButton","taglineNode","tagColor","Tagline","renderTagline","fundingiconNode","renderFundingIcons","styleNode","cardNumber","buttonHeight","buttonTextMarginTop","minDualWidth","ceil","toFixed","buttonResponsiveStyle","renderStyle","scriptNode","OPTIONAL","SELECTOR","TAG","toArray","getOptionalIndex","getElementsTotalWidth","sum","unique","parentElement","optionalParent","allChildren","optionalChildren","first","second","toggleOptionals","parentWidth","usedWidth","optionalChild","setDomReady","load","buttonsContainer","getElementsByClassName","tabKeyCode","handleMouseDownOnce","handleFirstTab","keyCode","setupTabOutlineEvent","labelPowerByPayPal","renderPowerByPaypalLogo","buttonUrls","possibleSizes","possibleSize","sizeA","sizeB","checkoutUrl","allowpaymentrequest","enableNativeCheckout","prefetchLogin","updateClientConfiguration","memoizedToken","button_version","validateFunding","isCreditDualEligible","remember","restart","tokenize","tokenizePayment","execute","nonce","patch","patchObject","initialHeight","logInlineGuestOutOfViewPortOnlyOnce","isContainerExpanded","isExpansionInViewport","scrollOffsetY","pageYOffset","scrollTop","windowHeight","innerHeight","containerOffsetY","getBoundingClientRect","checkIfExpansionInViewport","innerWidth","validateCalled","getPageUrl","ButtonComponent","doRender","validateCheckoutProps","useraction","native_xo","opType","queryItems","ba_token","paymentId","PayerID","cancel_uri","return_uri","extractDataFromQuery","redirectUrl","buildActions","renderThroughPopupBridge","setupPopupBridgeProxy","pageRenderTime","fundingSources","onApprove","pre","inlineGuest","treatments","setupButtonChild","canRenderTop","methodName","originalPayment","resolveData","rejectActions","ctx","currentDomainEnv","Card","initialFormValues","getState","cardIcons","display","submitButton","currencyConversion","domainToEnv","err3","currentProtocol","precacheRemembered","setup","configure","scriptProtocol","loadTime","apps","PayPalCheckout","enableCheckoutIframe","logger","legacy","_Checkout","_BillingPage","_ThreeDomainSecure","_destroyAll","LOG_PREFIX","MERCHANT_ID","CLASSES","HIDDEN_BUTTON","isLegacyEligible","DEFAULT_LANG","loadButtonJS","buttonJSUrl","renderButtons","buttons","lc","childNodes","condition","click","getHijackTargetElement","parentTagName","grandparentElement","grandparentTagName","redirected","logRedirect","initXO","startFlow","closeFlow","matchUrlAndPaymentToken","parseToken","checkUrlAgainstEnv","awaitPaymentTokenAndUrl","paymentTokenAndUrl","enablev3ajax","formSerialize","urlAndPaymentToken","paypalCheckoutInited","closeFlowCalled","initPayPalCheckout","closeUrl","renderPayPalCheckout","hijackTarget","urlProp","removeAttribute","instrumentButtonRender","setupCalled","environment","badenv","concat","normalizeOptions","setupConfig","clickHandler","tracker","isClick","handleClick","handleClickHijack","listenClick","onKey","oneTimeReady","invokeReady","number"],"mappings":"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ACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KA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","file":"checkout.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 62);\n","/* @flow */\n\nimport type { Enum } from '../types';\n\ntype BUTTON_STYLE_OPTIONS_ENUM =\n Enum<'label' | 'size' | 'shape' | 'color' | 'layout' |\n 'fundingicons' | 'maxbuttons' | 'branding' | 'tagline' | 'height' | 'installmentperiod'>;\n\nexport const BUTTON_STYLE_OPTIONS : BUTTON_STYLE_OPTIONS_ENUM = {\n LABEL: 'label',\n SIZE: 'size',\n SHAPE: 'shape',\n COLOR: 'color',\n LAYOUT: 'layout',\n MAXBUTTONS: 'maxbuttons',\n FUNDINGICONS: 'fundingicons',\n BRANDING: 'branding',\n TAGLINE: 'tagline',\n HEIGHT: 'height',\n INSTALLMENTPERIOD: 'installmentperiod'\n};\n\ntype BUTTON_LABEL_ENUM =\n Enum<'paypal' | 'checkout' | 'pay' | 'credit' |\n 'card' | 'buynow' | 'installment' | 'venmo' | 'itau' | 'ideal' | 'elv' | 'bancontact' | 'giropay' | 'sofort' | 'eps' | 'mybank' | 'p24' | 'payu' | 'verkkopankki' | 'blik' | 'trustly' | 'maxima' | 'boleto' | 'oxxo'>;\n\nexport const BUTTON_LABEL : BUTTON_LABEL_ENUM = {\n PAYPAL: 'paypal',\n CHECKOUT: 'checkout',\n PAY: 'pay',\n CREDIT: 'credit',\n CARD: 'card',\n BUYNOW: 'buynow',\n INSTALLMENT: 'installment',\n VENMO: 'venmo',\n ITAU: 'itau',\n IDEAL: 'ideal',\n ELV: 'elv',\n BANCONTACT: 'bancontact',\n GIROPAY: 'giropay',\n SOFORT: 'sofort',\n EPS: 'eps',\n MYBANK: 'mybank',\n P24: 'p24',\n PAYU: 'payu',\n VERKKOPANKKI: 'verkkopankki',\n BLIK: 'blik',\n TRUSTLY: 'trustly',\n MAXIMA: 'maxima',\n BOLETO: 'boleto',\n OXXO: 'oxxo'\n};\n\ntype BUTTON_COLOR_ENUM =\n Enum<'gold' | 'blue' | 'silver' | 'black' | 'darkblue' | 'transparent' | 'white'>;\n\nexport const BUTTON_COLOR : BUTTON_COLOR_ENUM = {\n GOLD: 'gold',\n BLUE: 'blue',\n SILVER: 'silver',\n BLACK: 'black',\n DARKBLUE: 'darkblue',\n WHITE: 'white',\n TRANSPARENT: 'transparent'\n};\n\ntype BUTTON_LOGO_COLOR_ENUM =\n Enum<'blue' | 'white' | 'black' | 'any'>;\n\nexport const BUTTON_LOGO_COLOR : BUTTON_LOGO_COLOR_ENUM = {\n BLUE: 'blue',\n WHITE: 'white',\n BLACK: 'black',\n ANY: 'any'\n};\n\ntype BUTTON_SIZE_ENUM =\n Enum<'tiny' | 'small' | 'medium' | 'large' | 'huge' | 'responsive'>;\n\nexport const BUTTON_SIZE : BUTTON_SIZE_ENUM = {\n TINY: 'tiny',\n SMALL: 'small',\n MEDIUM: 'medium',\n LARGE: 'large',\n HUGE: 'huge',\n RESPONSIVE: 'responsive'\n};\n\ntype BUTTON_TAGLINE_COLOR_ENUM =\n Enum<'black' | 'blue'>;\n\nexport const BUTTON_TAGLINE_COLOR : BUTTON_TAGLINE_COLOR_ENUM = {\n BLACK: 'black',\n BLUE: 'blue'\n};\n\ntype BUTTON_SHAPE_ENUM =\n Enum<'pill' | 'rect'>;\n\nexport const BUTTON_SHAPE : BUTTON_SHAPE_ENUM = {\n PILL: 'pill',\n RECT: 'rect'\n};\n\ntype BUTTON_BRANDING_ENUM =\n Enum<'branded' | 'unbranded'>;\n\nexport const BUTTON_BRANDING : BUTTON_BRANDING_ENUM = {\n BRANDED: 'branded',\n UNBRANDED: 'unbranded'\n};\n\ntype BUTTON_LAYOUT_ENUM =\n Enum<'horizontal' | 'vertical'>;\n\nexport const BUTTON_LAYOUT : BUTTON_LAYOUT_ENUM = {\n HORIZONTAL: 'horizontal',\n VERTICAL: 'vertical'\n};\n\ntype BUTTON_NUMBER_ENUM =\n Enum<'single' | 'multiple'>;\n\nexport const BUTTON_NUMBER : BUTTON_NUMBER_ENUM = {\n SINGLE: 'single',\n MULTIPLE: 'multiple'\n};\n\ntype BUTTON_LOGO_ENUM =\n Enum<'pp' | 'paypal' | 'venmo' | 'itau' | 'credit' | 'ideal' | 'elv' | 'bancontact' | 'giropay' | 'sofort' | 'eps' | 'mybank' | 'p24' | 'payu' | 'verkkopankki' | 'blik' | 'trustly' | 'maxima' | 'boleto' | 'oxxo'>;\n\nexport const BUTTON_LOGO : BUTTON_LOGO_ENUM = {\n PP: 'pp',\n PAYPAL: 'paypal',\n VENMO: 'venmo',\n ITAU: 'itau',\n CREDIT: 'credit',\n IDEAL: 'ideal',\n ELV: 'elv',\n BANCONTACT: 'bancontact',\n GIROPAY: 'giropay',\n SOFORT: 'sofort',\n EPS: 'eps',\n MYBANK: 'mybank',\n P24: 'p24',\n PAYU: 'payu',\n VERKKOPANKKI: 'verkkopankki',\n BLIK: 'blik',\n TRUSTLY: 'trustly',\n MAXIMA: 'maxima',\n BOLETO: 'boleto',\n OXXO: 'oxxo'\n};\n","/* @flow */\n\nexport const CHECKOUT_OVERLAY_COLOR = {\n BLACK: 'black',\n WHITE: 'white'\n};\n","/* @flow */\n\nexport const FUNDING = {\n PAYPAL: 'paypal',\n VENMO: 'venmo',\n ITAU: 'itau',\n CREDIT: 'credit',\n CARD: 'card',\n IDEAL: 'ideal',\n ELV: 'elv',\n BANCONTACT: 'bancontact',\n GIROPAY: 'giropay',\n SOFORT: 'sofort',\n EPS: 'eps',\n MYBANK: 'mybank',\n P24: 'p24',\n ZIMPLER: 'zimpler',\n PAYU: 'payu',\n VERKKOPANKKI: 'verkkopankki',\n BLIK: 'blik',\n TRUSTLY: 'trustly',\n MAXIMA: 'maxima',\n BOLETO: 'boleto',\n OXXO: 'oxxo'\n};\n\nexport const CARD = {\n VISA: 'visa',\n MASTERCARD: 'mastercard',\n AMEX: 'amex',\n DISCOVER: 'discover',\n SWITCH: 'switch',\n MAESTRO: 'maestro',\n HIPER: 'hiper',\n ELO: 'elo',\n JCB: 'jcb',\n CUP: 'cup',\n COFINOGA: 'cofinoga',\n COFIDIS: 'cofidis',\n CETELEM: 'cetelem',\n CBNATIONALE: 'cbnationale'\n};\n\nexport const FUNDING_ELIGIBILITY_REASON = {\n PRIMARY: 'The funding source is the primary source',\n NOT_ENABLED: 'The funding source is not currently enabled for use',\n SECONDARY_DISALLOWED: 'The funding source is disallowed as a secondary button',\n OPT_OUT: 'The funding source was disallowed in funding.disallowed',\n OPT_IN: 'The funding source was allowed in funding.allowed',\n DISALLOWED_COUNTRY: 'The funding source is not enabled for the current locale',\n DEFAULT_COUNTRY: 'The funding source is enabled by default for the current locale',\n DEFAULT: 'The funding source is enabled by default for all users',\n REMEMBERED: 'The funding source was remembered for the current user',\n NEED_OPT_IN: 'The funding source needs to be allowed in funding.allowed',\n COMMIT_NOT_SET: 'The funding source is not enabled when commit is not set as true',\n INVALID_ENV: 'The funding source is not supported in this environment'\n};\n\nexport const CARD_PRIORITY = [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.DISCOVER,\n CARD.SWITCH,\n CARD.MAESTRO,\n CARD.HIPER,\n CARD.ELO,\n CARD.JCB,\n CARD.CUP,\n CARD.COFINOGA,\n CARD.COFIDIS,\n CARD.CETELEM,\n CARD.CBNATIONALE\n];\n","/* @flow */\n\nexport const ENV = {\n LOCAL: 'local',\n STAGE: 'stage',\n SANDBOX: 'sandbox',\n PRODUCTION: 'production',\n TEST: 'test',\n DEMO: 'demo'\n};\n\nexport const USERS = {\n ALL: 'all',\n REMEMBERED: 'remembered'\n};\n\nexport const SOURCE = {\n MANUAL: 'manual',\n BUTTON_FACTORY: 'button_factory'\n};\n\nexport const LOG_LEVEL = {\n DEBUG: 'debug',\n INFO: 'info',\n WARN: 'warn',\n ERROR: 'error'\n};\n\nexport const PAYMENT_TYPE = {\n EC_TOKEN: 'ec_token',\n BA_TOKEN: 'ba_token',\n PAY_ID: 'pay_id'\n};\n\nexport const PPTM_ID = 'xo-pptm';\n\nexport const ATTRIBUTE = {\n BUTTON: 'data-button',\n FUNDING_SOURCE: 'data-funding-source',\n CARD: 'data-card',\n VERSION: 'data-version',\n LAYOUT: 'data-layout',\n SIZE: 'data-size'\n};\n\nexport const PLATFORM = {\n DESKTOP: 'desktop',\n MOBILE: 'mobile'\n};\n\nexport const DEFAULT = 'default';\n\n\n","/* @flow */\n\nimport { PAYMENT_TYPE } from './misc';\n\nexport const FPTI = {\n\n KEY: {\n FEED: 'feed_name',\n STATE: 'state_name',\n TRANSITION: 'transition_name',\n BUTTON_TYPE: 'button_type',\n SESSION_UID: 'page_session_id',\n BUTTON_SESSION_UID: 'button_session_id',\n TOKEN: 'token',\n CONTEXT_ID: 'context_id',\n CONTEXT_TYPE: 'context_type',\n REFERER: 'referer_url',\n PAY_ID: 'pay_id',\n SELLER_ID: 'seller_id',\n DATA_SOURCE: 'serverside_data_source',\n BUTTON_SOURCE: 'button_source',\n ERROR_CODE: 'ext_error_code',\n ERROR_DESC: 'ext_error_desc',\n PAGE_LOAD_TIME: 'page_load_time',\n EXPERIMENT_NAME: 'pxp_exp_id',\n TREATMENT_NAME: 'pxp_trtmnt_id',\n TRANSITION_TIME: 'transition_time',\n FUNDING_LIST: 'eligible_payment_methods',\n FUNDING_COUNT: 'eligible_payment_count',\n CHOSEN_FUNDING: 'selected_payment_method',\n BUTTON_LAYOUT: 'button_layout',\n BUTTON_COLOR: 'button_color',\n BUTTON_SIZE: 'button_size',\n BUTTON_SHAPE: 'button_shape',\n BUTTON_LABEL: 'button_label',\n BUTTON_WIDTH: 'button_width',\n VERSION: 'checkoutjs_version',\n MAX_BUTTONS: 'max_buttons',\n FUNDING_REMEMBERED: 'funding_remembered',\n BUTTON_TAGLINE_ENABLED: 'button_tagline_enabled',\n RESPONSE_DURATION: 'response_duration',\n PAYMENT_FLOW: 'payment_flow',\n BUTTON_VERSION: 'button_version'\n },\n\n BUTTON_TYPE: {\n IFRAME: 'iframe',\n HTML: 'html',\n CUSTOM: 'custom'\n },\n\n DATA_SOURCE: {\n CHECKOUT: 'checkout'\n },\n\n CONTEXT_TYPE: {\n BUTTON_SESSION_ID: 'button_session_id',\n [ PAYMENT_TYPE.PAY_ID ]: 'Pay-ID',\n [ PAYMENT_TYPE.EC_TOKEN ]: 'EC-Token',\n [ PAYMENT_TYPE.BA_TOKEN ]: 'EC-Token'\n },\n\n FEED: {\n CHECKOUTJS: 'checkoutjs'\n },\n\n STATE: {\n LOAD: 'checkoutjs_load',\n BUTTON: 'checkoutjs_button',\n CHECKOUT: 'checkoutjs_checkout',\n PPTM: 'checkoutjs_pptm'\n },\n\n TRANSITION: {\n SCRIPT_LOAD: 'process_script_load',\n\n BUTTON_RENDER: 'process_button_render',\n BUTTON_LOAD: 'process_button_load',\n BUTTON_CLICK: 'process_button_click',\n\n BUTTON_RENDER_INTRANET_MODE: 'process_button_render_intranet_mode',\n BUTTON_CLICK_INTRANET_MODE: 'process_button_click_intranet_mode',\n\n CREATE_PAYMENT: 'process_create_payment',\n RECIEVE_PAYMENT: 'process_recieve_payment',\n\n CHECKOUT_INIT: 'process_checkout_init',\n CHECKOUT_AUTHORIZE: 'process_checkout_authorize',\n CHECKOUT_SHIPPING_CHANGE: 'process_checkout_shipping_change',\n CHECKOUT_CANCEL: 'process_checkout_cancel',\n CHECKOUT_ERROR: 'process_checkout_error',\n\n EXTERNAL_EXPERIMENT: 'process_external_experiment',\n EXTERNAL_EXPERIMENT_COMPLETE: 'process_external_experiment_complete',\n\n PPTM_LOAD: 'process_pptm_load',\n PPTM_LOADED: 'process_pptm_loaded'\n }\n};\n","/* @flow */\n\nexport const COUNTRY = {\n AD: 'AD',\n AE: 'AE',\n AG: 'AG',\n AI: 'AI',\n AL: 'AL',\n AM: 'AM',\n AN: 'AN',\n AO: 'AO',\n AR: 'AR',\n AT: 'AT',\n AU: 'AU',\n AW: 'AW',\n AZ: 'AZ',\n BA: 'BA',\n BB: 'BB',\n BE: 'BE',\n BF: 'BF',\n BG: 'BG',\n BH: 'BH',\n BI: 'BI',\n BJ: 'BJ',\n BM: 'BM',\n BN: 'BN',\n BO: 'BO',\n BR: 'BR',\n BS: 'BS',\n BT: 'BT',\n BW: 'BW',\n BY: 'BY',\n BZ: 'BZ',\n C2: 'C2',\n CA: 'CA',\n CD: 'CD',\n CG: 'CG',\n CH: 'CH',\n CI: 'CI',\n CK: 'CK',\n CL: 'CL',\n CM: 'CM',\n CN: 'CN',\n CO: 'CO',\n CR: 'CR',\n CV: 'CV',\n CY: 'CY',\n CZ: 'CZ',\n DE: 'DE',\n DJ: 'DJ',\n DK: 'DK',\n DM: 'DM',\n DO: 'DO',\n DZ: 'DZ',\n EC: 'EC',\n EE: 'EE',\n EG: 'EG',\n ER: 'ER',\n ES: 'ES',\n ET: 'ET',\n FI: 'FI',\n FJ: 'FJ',\n FK: 'FK',\n FM: 'FM',\n FO: 'FO',\n FR: 'FR',\n GA: 'GA',\n GB: 'GB',\n GD: 'GD',\n GE: 'GE',\n GF: 'GF',\n GI: 'GI',\n GL: 'GL',\n GM: 'GM',\n GN: 'GN',\n GP: 'GP',\n GR: 'GR',\n GT: 'GT',\n GW: 'GW',\n GY: 'GY',\n HK: 'HK',\n HN: 'HN',\n HR: 'HR',\n HU: 'HU',\n ID: 'ID',\n IE: 'IE',\n IL: 'IL',\n IN: 'IN',\n IS: 'IS',\n IT: 'IT',\n JM: 'JM',\n JO: 'JO',\n JP: 'JP',\n KE: 'KE',\n KG: 'KG',\n KH: 'KH',\n KI: 'KI',\n KM: 'KM',\n KN: 'KN',\n KR: 'KR',\n KW: 'KW',\n KY: 'KY',\n KZ: 'KZ',\n LA: 'LA',\n LC: 'LC',\n LI: 'LI',\n LK: 'LK',\n LS: 'LS',\n LT: 'LT',\n LU: 'LU',\n LV: 'LV',\n MA: 'MA',\n MC: 'MC',\n MD: 'MD',\n ME: 'ME',\n MG: 'MG',\n MH: 'MH',\n MK: 'MK',\n ML: 'ML',\n MN: 'MN',\n MQ: 'MQ',\n MR: 'MR',\n MS: 'MS',\n MT: 'MT',\n MU: 'MU',\n MV: 'MV',\n MW: 'MW',\n MX: 'MX',\n MY: 'MY',\n MZ: 'MZ',\n NA: 'NA',\n NC: 'NC',\n NE: 'NE',\n NF: 'NF',\n NG: 'NG',\n NI: 'NI',\n NL: 'NL',\n NO: 'NO',\n NP: 'NP',\n NR: 'NR',\n NU: 'NU',\n NZ: 'NZ',\n OM: 'OM',\n PA: 'PA',\n PE: 'PE',\n PF: 'PF',\n PG: 'PG',\n PH: 'PH',\n PL: 'PL',\n PM: 'PM',\n PN: 'PN',\n PT: 'PT',\n PW: 'PW',\n PY: 'PY',\n QA: 'QA',\n RE: 'RE',\n RO: 'RO',\n RS: 'RS',\n RU: 'RU',\n RW: 'RW',\n SA: 'SA',\n SB: 'SB',\n SC: 'SC',\n SE: 'SE',\n SG: 'SG',\n SH: 'SH',\n SI: 'SI',\n SJ: 'SJ',\n SK: 'SK',\n SL: 'SL',\n SM: 'SM',\n SN: 'SN',\n SO: 'SO',\n SR: 'SR',\n ST: 'ST',\n SV: 'SV',\n SZ: 'SZ',\n TC: 'TC',\n TD: 'TD',\n TG: 'TG',\n TH: 'TH',\n TJ: 'TJ',\n TM: 'TM',\n TN: 'TN',\n TO: 'TO',\n TR: 'TR',\n TT: 'TT',\n TV: 'TV',\n TW: 'TW',\n TZ: 'TZ',\n UA: 'UA',\n UG: 'UG',\n US: 'US',\n UY: 'UY',\n VA: 'VA',\n VC: 'VC',\n VE: 'VE',\n VG: 'VG',\n VN: 'VN',\n VU: 'VU',\n WF: 'WF',\n WS: 'WS',\n YE: 'YE',\n YT: 'YT',\n ZA: 'ZA',\n ZM: 'ZM',\n ZW: 'ZW'\n};\n\nexport const LANG = {\n AR: 'ar',\n CS: 'cs',\n DA: 'da',\n DE: 'de',\n EL: 'el',\n EN: 'en',\n ES: 'es',\n FI: 'fi',\n FR: 'fr',\n HE: 'he',\n HU: 'hu',\n ID: 'id',\n IT: 'it',\n JA: 'ja',\n KO: 'ko',\n NL: 'nl',\n NO: 'no',\n PL: 'pl',\n PT: 'pt',\n RU: 'ru',\n SK: 'sk',\n SV: 'sv',\n TH: 'th',\n TR: 'tr',\n ZH: 'zh'\n};\n\nexport const LANG_TO_DEFAULT_COUNTRY = {\n [LANG.AR]: COUNTRY.SA,\n [LANG.CS]: COUNTRY.CZ,\n [LANG.DA]: COUNTRY.DK,\n [LANG.DE]: COUNTRY.DE,\n [LANG.EL]: COUNTRY.GR,\n [LANG.EN]: COUNTRY.US,\n [LANG.ES]: COUNTRY.ES,\n [LANG.FI]: COUNTRY.FI,\n [LANG.FR]: COUNTRY.FR,\n [LANG.HE]: COUNTRY.IL,\n [LANG.HU]: COUNTRY.HU,\n [LANG.ID]: COUNTRY.ID,\n [LANG.IT]: COUNTRY.IT,\n [LANG.JA]: COUNTRY.JP,\n [LANG.KO]: COUNTRY.KR,\n [LANG.NL]: COUNTRY.NL,\n [LANG.NO]: COUNTRY.NO,\n [LANG.PL]: COUNTRY.PL,\n [LANG.PT]: COUNTRY.PT,\n [LANG.RU]: COUNTRY.RU,\n [LANG.SK]: COUNTRY.SK,\n [LANG.SV]: COUNTRY.SE,\n [LANG.TH]: COUNTRY.TH,\n [LANG.TR]: COUNTRY.TR,\n [LANG.ZH]: COUNTRY.CN\n};\n\nexport const ALLOWED_INSTALLMENT_COUNTRIES = [ COUNTRY.BR, COUNTRY.MX ];\nexport const ALLOWED_INSTALLMENT_PERIOD = {\n BR: [ 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ],\n MX: [ 3, 6, 9, 12 ]\n};\n","/* @flow */\n\nimport { COUNTRY, LANG } from './country';\n\nexport const LOCALE = {\n [COUNTRY.AD]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AE]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH, LANG.AR ],\n [COUNTRY.AG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AI]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AL]: [ LANG.EN ],\n [COUNTRY.AM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AN]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AO]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AR]: [ LANG.ES, LANG.EN ],\n [COUNTRY.AT]: [ LANG.DE, LANG.EN ],\n [COUNTRY.AU]: [ LANG.EN ],\n [COUNTRY.AW]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BA]: [ LANG.EN ],\n [COUNTRY.BB]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BE]: [ LANG.EN, LANG.NL, LANG.FR ],\n [COUNTRY.BF]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.BG]: [ LANG.EN ],\n [COUNTRY.BH]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BI]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.BJ]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.BM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BN]: [ LANG.EN ],\n [COUNTRY.BO]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.BR]: [ LANG.PT, LANG.EN ],\n [COUNTRY.BS]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BT]: [ LANG.EN ],\n [COUNTRY.BW]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BY]: [ LANG.EN ],\n [COUNTRY.BZ]: [ LANG.EN, LANG.ES, LANG.FR, LANG.ZH ],\n [COUNTRY.C2]: [ LANG.ZH, LANG.EN ],\n [COUNTRY.CA]: [ LANG.EN, LANG.FR ],\n [COUNTRY.CD]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.CG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.CH]: [ LANG.DE, LANG.FR, LANG.EN ],\n [COUNTRY.CI]: [ LANG.FR, LANG.EN ],\n [COUNTRY.CK]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.CL]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.CM]: [ LANG.FR, LANG.EN ],\n [COUNTRY.CN]: [ LANG.ZH ],\n [COUNTRY.CO]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.CR]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.CV]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.CY]: [ LANG.EN ],\n [COUNTRY.CZ]: [ LANG.CS, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.DE]: [ LANG.DE, LANG.EN ],\n [COUNTRY.DJ]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.DK]: [ LANG.DA, LANG.EN ],\n [COUNTRY.DM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.DO]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.DZ]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.EC]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.EE]: [ LANG.EN, LANG.RU, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.EG]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ER]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ES]: [ LANG.ES, LANG.EN ],\n [COUNTRY.ET]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.FI]: [ LANG.FI, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.FJ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.FK]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.FM]: [ LANG.EN ],\n [COUNTRY.FO]: [ LANG.DA, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.FR]: [ LANG.FR, LANG.EN ],\n [COUNTRY.GA]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.GB]: [ LANG.EN ],\n [COUNTRY.GD]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GE]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GF]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GI]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GL]: [ LANG.DA, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GN]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.GP]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GR]: [ LANG.EL, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GT]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.GW]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GY]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.HK]: [ LANG.EN, LANG.ZH ],\n [COUNTRY.HN]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.HR]: [ LANG.EN ],\n [COUNTRY.HU]: [ LANG.HU, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ID]: [ LANG.ID, LANG.EN ],\n [COUNTRY.IE]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.IL]: [ LANG.HE, LANG.EN ],\n [COUNTRY.IN]: [ LANG.EN ],\n [COUNTRY.IS]: [ LANG.EN ],\n [COUNTRY.IT]: [ LANG.IT, LANG.EN ],\n [COUNTRY.JM]: [ LANG.EN, LANG.ES, LANG.FR, LANG.ZH ],\n [COUNTRY.JO]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.JP]: [ LANG.JA, LANG.EN ],\n [COUNTRY.KE]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KH]: [ LANG.EN ],\n [COUNTRY.KI]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KM]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.KN]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KR]: [ LANG.KO, LANG.EN ],\n [COUNTRY.KW]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KY]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LA]: [ LANG.EN ],\n [COUNTRY.LC]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LI]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LK]: [ LANG.EN ],\n [COUNTRY.LS]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LT]: [ LANG.EN, LANG.RU, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LU]: [ LANG.EN, LANG.DE, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LV]: [ LANG.EN, LANG.RU, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MA]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MC]: [ LANG.FR, LANG.EN ],\n [COUNTRY.MD]: [ LANG.EN ],\n [COUNTRY.ME]: [ LANG.EN ],\n [COUNTRY.MG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MH]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MK]: [ LANG.EN ],\n [COUNTRY.ML]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.MN]: [ LANG.EN ],\n [COUNTRY.MQ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MR]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MS]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MT]: [ LANG.EN ],\n [COUNTRY.MU]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MV]: [ LANG.EN ],\n [COUNTRY.MW]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MX]: [ LANG.ES, LANG.EN ],\n [COUNTRY.MY]: [ LANG.EN ],\n [COUNTRY.MZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NA]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NC]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NE]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.NF]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NG]: [ LANG.EN ],\n [COUNTRY.NI]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.NL]: [ LANG.NL, LANG.EN ],\n [COUNTRY.NO]: [ LANG.NO, LANG.EN ],\n [COUNTRY.NP]: [ LANG.EN ],\n [COUNTRY.NR]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NU]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.OM]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PA]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.PE]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.PF]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PH]: [ LANG.EN ],\n [COUNTRY.PL]: [ LANG.PL, LANG.EN ],\n [COUNTRY.PM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PN]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PT]: [ LANG.PT, LANG.EN ],\n [COUNTRY.PW]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PY]: [ LANG.ES, LANG.EN ],\n [COUNTRY.QA]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH, LANG.AR ],\n [COUNTRY.RE]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.RO]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.RS]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.RU]: [ LANG.RU, LANG.EN ],\n [COUNTRY.RW]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.SA]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SB]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SC]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.SE]: [ LANG.SV, LANG.EN ],\n [COUNTRY.SG]: [ LANG.EN ],\n [COUNTRY.SH]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SI]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SJ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SK]: [ LANG.SK, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SL]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SN]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.SO]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SR]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ST]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SV]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.SZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TC]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TD]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.TG]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.TH]: [ LANG.TH, LANG.EN ],\n [COUNTRY.TJ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TN]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TO]: [ LANG.EN ],\n [COUNTRY.TR]: [ LANG.TR, LANG.EN ],\n [COUNTRY.TT]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TV]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TW]: [ LANG.ZH, LANG.EN ],\n [COUNTRY.TZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.UA]: [ LANG.EN, LANG.RU, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.UG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.US]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.UY]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.VA]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.VC]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.VE]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.VG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.VN]: [ LANG.EN ],\n [COUNTRY.VU]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.WF]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.WS]: [ LANG.EN ],\n [COUNTRY.YE]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.YT]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ZA]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ZM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ZW]: [ LANG.EN ]\n};\n","/* @flow */\n\nexport * from './button';\nexport * from './checkout';\nexport * from './funding';\nexport * from './fpti';\nexport * from './country';\nexport * from './misc';\nexport * from './locale';\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { regexMap } from './util';\n\n// eslint-disable-next-line no-use-before-define\nexport type ChildType = $ReadOnlyArray | JsxHTMLNode | string | void | null;\nexport type ChildrenType = $ReadOnlyArray;\ntype PropsType = ?{ class? : string, id? : string, innerHTML? : string };\n\nfunction htmlEncode(html : string = '') : string {\n return html.toString()\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(/\\//g, '/');\n}\n\nexport class JsxHTMLNode {\n name : string\n props : PropsType\n children : ChildrenType\n\n constructor(name : string, props : PropsType, children : ChildrenType) {\n this.name = name;\n this.props = props;\n this.children = children;\n }\n\n toString() : string {\n return `<${ this.name }${ this.props ? ' ' : '' }${ this.props ? this.propsToString() : '' }>${ this.childrenToString() }`;\n }\n\n propsToString() : string {\n const props = this.props;\n\n if (!props) {\n return '';\n }\n\n return Object.keys(props).filter(key => {\n return key !== 'innerHTML' && props && props[key] !== false;\n }).map(key => {\n if (props && props[key] === true) {\n return `${ htmlEncode(key) }`;\n }\n return props ? `${ htmlEncode(key) }=\"${ htmlEncode(props[key]) }\"` : '';\n }).join(' ');\n }\n\n childrenToString() : string {\n\n if (this.props && this.props.innerHTML) {\n return this.props.innerHTML;\n }\n\n if (!this.children) {\n return '';\n }\n\n let result = '';\n\n function iterate(children) {\n for (const child of children) {\n\n if (child === null || child === undefined) {\n continue;\n }\n\n if (Array.isArray(child)) {\n iterate(child);\n } else if (child instanceof JsxHTMLNode) {\n result += child.toString();\n } else {\n result += htmlEncode(child);\n }\n }\n }\n\n iterate(this.children);\n\n return result;\n }\n}\n\nexport class JsxHTMLNodeContainer extends JsxHTMLNode {\n\n\n constructor(children : ChildrenType) {\n super('', {}, children);\n }\n\n toString() : string {\n return this.childrenToString();\n }\n}\n\nexport function jsxToHTML(name : string, props : PropsType, ...children : ChildrenType) : JsxHTMLNode {\n return new JsxHTMLNode(name, props, children);\n}\n\nexport function jsxRender(template : string, renderers : { [string] : (string) =>?(JsxHTMLNode | $ReadOnlyArray) }) : JsxHTMLNode {\n\n // eslint-disable-next-line security/detect-unsafe-regex, unicorn/no-unsafe-regex\n const nodes = regexMap(template, /\\{\\s*([a-z]+)(?::\\s*([^} ]+))?\\s*\\}|([^${}]+)/g, (match, type, value, text) => {\n if (type) {\n if (!renderers[type]) {\n throw new Error(`Can not render type: ${ type }`);\n }\n\n return renderers[type](value);\n } else if (text && text.trim()) {\n\n if (!renderers.text) {\n return text;\n }\n\n if ((/
/).test(text)) {\n return renderers.break(text);\n } else {\n return renderers.text(text);\n }\n } else {\n return text;\n }\n });\n\n return new JsxHTMLNodeContainer(nodes);\n}\n","/* @flow */\n\nexport function isPromise(item : mixed) : boolean {\n try {\n if (!item) {\n return false;\n }\n\n if (typeof Promise !== 'undefined' && item instanceof Promise) {\n return true;\n }\n\n if (typeof window !== 'undefined' && typeof window.Window === 'function' && item instanceof window.Window) {\n return false;\n }\n\n if (typeof window !== 'undefined' && typeof window.constructor === 'function' && item instanceof window.constructor) {\n return false;\n }\n\n let toString = ({}).toString;\n\n if (toString) {\n let name = toString.call(item);\n\n if (name === '[object Window]' || name === '[object global]' || name === '[object DOMWindow]') {\n return false;\n }\n }\n\n if (typeof item.then === 'function') {\n return true;\n }\n } catch (err) {\n return false;\n }\n\n return false;\n}\n","/* @flow */\n\nimport type { ZalgoPromise } from './promise';\n\nconst dispatchedErrors = [];\nconst possiblyUnhandledPromiseHandlers : Array<(mixed, promise? : ZalgoPromise) => void> = [];\n\nexport function dispatchPossiblyUnhandledError(err : mixed, promise : ZalgoPromise) {\n\n if (dispatchedErrors.indexOf(err) !== -1) {\n return;\n }\n\n dispatchedErrors.push(err);\n\n setTimeout(() => {\n if (__DEBUG__) {\n // $FlowFixMe\n throw new Error(`${ err.stack || err.toString() }\\n\\nFrom promise:\\n\\n${ promise.stack }`);\n }\n\n throw err;\n }, 1);\n\n for (let j = 0; j < possiblyUnhandledPromiseHandlers.length; j++) {\n // $FlowFixMe\n possiblyUnhandledPromiseHandlers[j](err, promise);\n }\n}\n\nexport function onPossiblyUnhandledException(handler : (mixed, promise? : ZalgoPromise) => void) : { cancel : () => void } {\n possiblyUnhandledPromiseHandlers.push(handler);\n\n return {\n cancel() {\n possiblyUnhandledPromiseHandlers.splice(possiblyUnhandledPromiseHandlers.indexOf(handler), 1);\n }\n };\n}\n","/* @flow */\n\nimport type { ZalgoPromise } from './promise';\n\nlet activeCount = 0;\nlet flushPromise;\n\nfunction flushActive() {\n if (!activeCount && flushPromise) {\n const promise = flushPromise;\n flushPromise = null;\n promise.resolve();\n }\n}\n\nexport function startActive() {\n activeCount += 1;\n}\n\nexport function endActive() {\n activeCount -= 1;\n flushActive();\n}\n\nexport function awaitActive(Zalgo : Class>) : ZalgoPromise { // eslint-disable-line no-undef\n let promise = flushPromise = flushPromise || new Zalgo();\n flushActive();\n return promise;\n}\n","/* @flow */\n\nimport { isPromise } from './utils';\nimport { onPossiblyUnhandledException, dispatchPossiblyUnhandledError } from './exceptions';\nimport { startActive, endActive, awaitActive } from './flush';\n\nexport class ZalgoPromise {\n\n resolved : boolean\n rejected : boolean\n errorHandled : boolean\n value : R\n error : mixed\n handlers : Array<{\n promise : ZalgoPromise<*>,\n onSuccess : void | (result : R) => mixed,\n onError : void | (error : mixed) => mixed\n }>\n dispatching : boolean\n stack : string\n\n constructor(handler : ?(resolve : (result : R) => void, reject : (error : mixed) => void) => void) {\n\n this.resolved = false;\n this.rejected = false;\n this.errorHandled = false;\n\n this.handlers = [];\n\n if (handler) {\n\n let result;\n let error;\n let resolved = false;\n let rejected = false;\n let isAsync = false;\n\n startActive();\n\n try {\n handler(res => {\n if (isAsync) {\n this.resolve(res);\n } else {\n resolved = true;\n result = res;\n }\n\n }, err => {\n if (isAsync) {\n this.reject(err);\n } else {\n rejected = true;\n error = err;\n }\n });\n\n } catch (err) {\n endActive();\n this.reject(err);\n return;\n }\n\n endActive();\n\n isAsync = true;\n\n if (resolved) {\n // $FlowFixMe\n this.resolve(result);\n } else if (rejected) {\n this.reject(error);\n }\n }\n\n if (__DEBUG__) {\n try {\n throw new Error(`ZalgoPromise`);\n } catch (err) {\n this.stack = err.stack;\n }\n }\n }\n\n resolve(result : R) : ZalgoPromise {\n if (this.resolved || this.rejected) {\n return this;\n }\n\n if (isPromise(result)) {\n throw new Error('Can not resolve promise with another promise');\n }\n\n this.resolved = true;\n this.value = result;\n this.dispatch();\n\n return this;\n }\n\n reject(error : mixed) : ZalgoPromise {\n if (this.resolved || this.rejected) {\n return this;\n }\n\n if (isPromise(error)) {\n throw new Error('Can not reject promise with another promise');\n }\n\n if (!error) {\n // $FlowFixMe\n let err = (error && typeof error.toString === 'function' ? error.toString() : Object.prototype.toString.call(error));\n error = new Error(`Expected reject to be called with Error, got ${ err }`);\n }\n\n this.rejected = true;\n this.error = error;\n\n if (!this.errorHandled) {\n setTimeout(() => {\n if (!this.errorHandled) {\n dispatchPossiblyUnhandledError(error, this);\n }\n }, 1);\n }\n\n this.dispatch();\n\n return this;\n }\n\n asyncReject(error : mixed) : ZalgoPromise {\n this.errorHandled = true;\n this.reject(error);\n return this;\n }\n \n dispatch() {\n\n let { dispatching, resolved, rejected, handlers } = this;\n\n if (dispatching) {\n return;\n }\n\n if (!resolved && !rejected) {\n return;\n }\n\n this.dispatching = true;\n startActive();\n\n const chain = (firstPromise : ZalgoPromise, secondPromise : ZalgoPromise) => {\n return firstPromise.then(res => {\n secondPromise.resolve(res);\n }, err => {\n secondPromise.reject(err);\n });\n };\n\n for (let i = 0; i < handlers.length; i++) {\n\n let { onSuccess, onError, promise } = handlers[i];\n\n let result;\n\n if (resolved) {\n\n try {\n result = onSuccess ? onSuccess(this.value) : this.value;\n } catch (err) {\n promise.reject(err);\n continue;\n }\n\n } else if (rejected) {\n\n if (!onError) {\n promise.reject(this.error);\n continue;\n }\n\n try {\n result = onError(this.error);\n } catch (err) {\n promise.reject(err);\n continue;\n }\n }\n\n if (result instanceof ZalgoPromise && (result.resolved || result.rejected)) {\n\n if (result.resolved) {\n promise.resolve(result.value);\n } else {\n promise.reject(result.error);\n }\n\n result.errorHandled = true;\n\n } else if (isPromise(result)) {\n\n if (result instanceof ZalgoPromise && (result.resolved || result.rejected)) {\n if (result.resolved) {\n promise.resolve(result.value);\n } else {\n promise.reject(result.error);\n }\n\n } else {\n // $FlowFixMe\n chain(result, promise);\n }\n\n } else {\n\n promise.resolve(result);\n }\n }\n\n handlers.length = 0;\n this.dispatching = false;\n endActive();\n }\n\n then(onSuccess : void | (result : R) => (ZalgoPromise | Y), onError : void | (error : mixed) => (ZalgoPromise | Y)) : ZalgoPromise {\n\n if (onSuccess && typeof onSuccess !== 'function' && !onSuccess.call) {\n throw new Error('Promise.then expected a function for success handler');\n }\n\n if (onError && typeof onError !== 'function' && !onError.call) {\n throw new Error('Promise.then expected a function for error handler');\n }\n\n let promise : ZalgoPromise = new ZalgoPromise();\n\n this.handlers.push({\n promise,\n onSuccess,\n onError\n });\n\n this.errorHandled = true;\n\n this.dispatch();\n\n return promise;\n }\n\n catch(onError : (error : mixed) => ZalgoPromise | Y) : ZalgoPromise {\n return this.then(undefined, onError);\n }\n\n finally(onFinally : () => mixed) : ZalgoPromise {\n\n if (onFinally && typeof onFinally !== 'function' && !onFinally.call) {\n throw new Error('Promise.finally expected a function');\n }\n\n return this.then((result) => {\n return ZalgoPromise.try(onFinally)\n .then(() => {\n return result;\n });\n }, (err) => {\n return ZalgoPromise.try(onFinally)\n .then(() => {\n throw err;\n });\n });\n }\n\n timeout(time : number, err : ?Error) : ZalgoPromise {\n\n if (this.resolved || this.rejected) {\n return this;\n }\n\n let timeout = setTimeout(() => {\n\n if (this.resolved || this.rejected) {\n return;\n }\n\n this.reject(err || new Error(`Promise timed out after ${ time }ms`));\n\n }, time);\n\n return this.then(result => {\n clearTimeout(timeout);\n return result;\n });\n }\n\n // $FlowFixMe\n toPromise() : Promise {\n // $FlowFixMe\n if (typeof Promise === 'undefined') {\n throw new TypeError(`Could not find Promise`);\n }\n // $FlowFixMe\n return Promise.resolve(this); // eslint-disable-line compat/compat\n }\n\n static resolve(value : X | ZalgoPromise) : ZalgoPromise {\n\n if (value instanceof ZalgoPromise) {\n return value;\n }\n\n if (isPromise(value)) {\n // $FlowFixMe\n return new ZalgoPromise((resolve, reject) => value.then(resolve, reject));\n }\n\n return new ZalgoPromise().resolve(value);\n }\n\n static reject(error : mixed) : ZalgoPromise {\n return new ZalgoPromise().reject(error);\n }\n\n static asyncReject(error : mixed) : ZalgoPromise {\n return new ZalgoPromise().asyncReject(error);\n }\n\n static all>(promises : X) : ZalgoPromise<$TupleMap(ZalgoPromise | Y) => Y>> { // eslint-disable-line no-undef\n\n let promise = new ZalgoPromise();\n let count = promises.length;\n let results = [];\n\n if (!count) {\n promise.resolve(results);\n return promise;\n }\n\n const chain = (i : number, firstPromise : ZalgoPromise, secondPromise : ZalgoPromise) => {\n return firstPromise.then(res => {\n results[i] = res;\n count -= 1;\n if (count === 0) {\n promise.resolve(results);\n }\n }, err => {\n secondPromise.reject(err);\n });\n };\n\n for (let i = 0; i < promises.length; i++) {\n let prom = promises[i];\n\n if (prom instanceof ZalgoPromise) {\n if (prom.resolved) {\n results[i] = prom.value;\n count -= 1;\n continue;\n }\n } else if (!isPromise(prom)) {\n results[i] = prom;\n count -= 1;\n continue;\n }\n\n chain(i, ZalgoPromise.resolve(prom), promise);\n }\n\n if (count === 0) {\n promise.resolve(results);\n }\n\n return promise;\n }\n\n static hash(promises : O) : ZalgoPromise<$ObjMap(ZalgoPromise | Y) => Y>> { // eslint-disable-line no-undef\n let result = {};\n \n return ZalgoPromise.all(Object.keys(promises).map(key => {\n return ZalgoPromise.resolve(promises[key]).then(value => {\n result[key] = value;\n });\n })).then(() => {\n return result;\n });\n }\n\n static map(items : Array, method : (T) => (ZalgoPromise | X)) : ZalgoPromise> {\n // $FlowFixMe\n return ZalgoPromise.all(items.map(method));\n }\n\n static onPossiblyUnhandledException(handler : (err : mixed) => void) : { cancel : () => void } {\n return onPossiblyUnhandledException(handler);\n }\n\n static try>(method : (...args : A) => (ZalgoPromise | Y), context : ?C, args : ?A) : ZalgoPromise {\n\n if (method && typeof method !== 'function' && !method.call) {\n throw new Error('Promise.try expected a function');\n }\n\n let result;\n\n startActive();\n \n try {\n // $FlowFixMe\n result = method.apply(context, args || []);\n } catch (err) {\n endActive();\n return ZalgoPromise.reject(err);\n }\n\n endActive();\n\n return ZalgoPromise.resolve(result);\n }\n\n static delay(delay : number) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n setTimeout(resolve, delay);\n });\n }\n\n static isPromise(value : mixed) : boolean {\n\n if (value && value instanceof ZalgoPromise) {\n return true;\n }\n\n return isPromise(value);\n }\n\n static flush() : ZalgoPromise {\n return awaitActive(ZalgoPromise);\n }\n}\n","/* @flow */\n\nexport { ZalgoPromise } from './promise';\n","/* @flow */\n\nimport { CONFIG as POSTROBOT_CONFIG } from 'post-robot/src';\nimport { setTransport, getTransport, addPayloadBuilder, addHeaderBuilder, addMetaBuilder,\n addTrackingBuilder, init, logLevels, config as loggerConfig } from 'beaver-logger/client';\nimport { getParent, PROTOCOL } from 'cross-domain-utils/src';\n\nimport { config } from '../config';\nimport { FPTI, PAYMENT_TYPE } from '../constants';\n\nimport { getSessionID, getButtonSessionID } from './session';\nimport { proxyMethod } from './proxy';\nimport { once } from './util';\nimport { getQueryParam } from './dom';\nimport { isPayPalDomain } from './security';\n\nfunction getRefererDomain() : string {\n return (window.xchild && window.xchild.getParentDomain)\n ? window.xchild.getParentDomain()\n : window.location.host;\n}\n\nconst setupProxyLogTransport = once(() => {\n setTransport(proxyMethod('log', getParent(window), getTransport()));\n});\n\nfunction getToken() : ?string {\n if (window.root && window.root.token) {\n return window.root.token;\n }\n\n if (isPayPalDomain()) {\n const queryToken = getQueryParam('token');\n\n if (queryToken) {\n return queryToken;\n }\n }\n}\n\nexport function initLogger() {\n\n setupProxyLogTransport();\n\n addPayloadBuilder(() => {\n return {\n referer: getRefererDomain(),\n host: window.location.host,\n path: window.location.pathname,\n env: config.env,\n country: config.locale.country,\n lang: config.locale.lang,\n uid: getSessionID(),\n ver: __PAYPAL_CHECKOUT__.__MINOR_VERSION__\n };\n });\n\n addHeaderBuilder(() => {\n return {\n 'x-app-name': 'checkoutjs'\n };\n });\n\n addMetaBuilder(() => {\n return {\n state: config.state\n };\n });\n\n addTrackingBuilder((payload = {}) => {\n\n const sessionID = getSessionID();\n const paymentToken = getToken();\n const buttonSessionID = payload[FPTI.KEY.BUTTON_SESSION_UID] || getButtonSessionID();\n\n let contextType;\n let contextID;\n\n if (paymentToken) {\n contextType = FPTI.CONTEXT_TYPE[PAYMENT_TYPE.EC_TOKEN];\n contextID = paymentToken;\n } else if (buttonSessionID) {\n contextType = FPTI.CONTEXT_TYPE.BUTTON_SESSION_ID;\n contextID = buttonSessionID;\n } else {\n contextType = payload[FPTI.KEY.CONTEXT_TYPE];\n contextID = payload[FPTI.KEY.CONTEXT_ID];\n }\n\n return {\n [ FPTI.KEY.FEED ]: FPTI.FEED.CHECKOUTJS,\n [ FPTI.KEY.DATA_SOURCE ]: FPTI.DATA_SOURCE.CHECKOUT,\n [ FPTI.KEY.CONTEXT_TYPE ]: contextType,\n [ FPTI.KEY.CONTEXT_ID ]: contextID,\n [ FPTI.KEY.SELLER_ID ]: config.merchantID,\n [ FPTI.KEY.SESSION_UID ]: sessionID,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: buttonSessionID,\n [ FPTI.KEY.VERSION ]: config.version,\n [ FPTI.KEY.TOKEN ]: paymentToken,\n [ FPTI.KEY.REFERER ]: getRefererDomain()\n };\n });\n\n const prefix = 'ppxo';\n\n if (window.location.protocol !== PROTOCOL.FILE) {\n init({\n uri: config.loggerUrl,\n heartbeat: false,\n logPerformance: false,\n prefix,\n logLevel: __PAYPAL_CHECKOUT__.__DEFAULT_LOG_LEVEL__\n });\n }\n}\n\nexport function setLogLevel(logLevel : string) {\n\n if (logLevels.indexOf(logLevel) === -1) {\n throw new Error(`Invalid logLevel: ${ logLevel }`);\n }\n\n config.logLevel = logLevel;\n loggerConfig.logLevel = logLevel;\n POSTROBOT_CONFIG.LOG_LEVEL = logLevel;\n window.LOG_LEVEL = logLevel;\n}\n","/* @flow */\n\nimport { on, send } from 'post-robot/src';\nimport { isWindowClosed, getDomain, isSameDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { config } from '../config';\n\nimport { noop } from './util';\n\nexport function proxyMethod(name : string, win : ?CrossDomainWindowType, originalMethod : Function) : Function {\n\n if (win && getDomain() === config.paypalDomain && !isSameDomain(win)) {\n\n if (win) {\n send(win, `proxy_${ name }`, { originalMethod }).catch(noop);\n }\n\n return originalMethod;\n }\n\n let methods = [];\n\n on(`proxy_${ name }`, { domain: config.paypal_domain_regex }, ({ data }) => {\n methods.push(data.originalMethod);\n });\n\n return function postMessageProxy() : mixed {\n\n methods = methods.filter(method => !isWindowClosed(method.source));\n\n if (methods.length) {\n return methods[methods.length - 1].apply(this, arguments).catch(() => {\n return originalMethod.apply(this, arguments);\n });\n }\n\n return originalMethod.apply(this, arguments);\n };\n}\n","/* @flow */\n\nimport { info, flush as flushLogs } from 'beaver-logger/client';\n\nimport { config } from '../config';\n\nimport { isIEIntranet, getUserAgent } from './device';\nimport { once } from './util';\n\nconst bowserCache = {};\n\nfunction getBowser() : Object {\n\n const userAgent = getUserAgent();\n\n if (bowserCache[userAgent]) {\n return bowserCache[userAgent];\n }\n\n delete require.cache[require.resolve('bowser/bowser.min')];\n const bowser = require('bowser/bowser.min');\n\n bowserCache[userAgent] = bowser;\n\n return bowser;\n}\n\nexport function getBrowser() : { browser? : string, version? : string } {\n\n const bowser = getBowser();\n\n for (const browser of Object.keys(config.SUPPORTED_BROWSERS)) {\n if (bowser[browser]) {\n return { browser, version: bowser.version };\n }\n }\n\n return {};\n}\n\nfunction isBrowserEligible() : boolean {\n\n if (isIEIntranet()) {\n return false;\n }\n\n const bowser = getBowser();\n const { browser, version } = getBrowser();\n\n if (browser && version && bowser.compareVersions([ version, config.SUPPORTED_BROWSERS[browser] ]) === -1) {\n return false;\n }\n\n return true;\n}\n\nconst eligibilityResults = {};\n\nexport function isEligible() : boolean {\n\n if (isIEIntranet()) {\n return false;\n }\n\n const userAgent = window.navigator.userAgent;\n\n if (userAgent && eligibilityResults.hasOwnProperty(userAgent)) {\n return eligibilityResults[userAgent];\n }\n\n const result = isBrowserEligible();\n\n eligibilityResults[userAgent] = result;\n\n return result;\n}\n\nexport const checkRecognizedBrowser = once((state : string) => {\n\n const { browser } = getBrowser();\n\n if (!browser) {\n const { name, version, mobile, android, ios } = getBowser();\n info(`unrecognized_browser_${ state }`, { name, version, mobile, android, ios });\n flushLogs();\n }\n});\n","/* @flow */\n\nimport { warn } from 'beaver-logger/client';\n\nimport { isIE, isIEIntranet, isIECompHeader } from './device';\n\nfunction logWarn(err) : void {\n if (window.console) {\n if (window.console.warn) {\n return window.console.warn(err);\n }\n\n if (window.console.log) {\n return window.console.log(err);\n }\n }\n}\n\nexport function checkForCommonErrors() {\n\n if (JSON.stringify([]) !== '[]') {\n // $FlowFixMe\n if (Array.prototype.toJSON) {\n logWarn(`Custom Array.prototype.toJSON is causing incorrect json serialization of arrays. This is likely to cause issues. Probable cause is Prototype.js`);\n } else {\n logWarn(`JSON.stringify is doing incorrect serialization of arrays. This is likely to cause issues.`);\n }\n\n warn(`json_stringify_array_broken`);\n }\n\n if (JSON.stringify({}) !== '{}') {\n logWarn(`JSON.stringify is doing incorrect serialization of objects. This is likely to cause issues.`);\n\n warn(`json_stringify_object_broken`);\n }\n\n if (isIEIntranet()) {\n warn(`ie_intranet_mode`);\n }\n\n if (isIE() && !isIECompHeader()) {\n warn(`ie_meta_compatibility_header_missing`, {\n message: `Drop tag: ` });\n }\n\n // eslint-disable-next-line no-unused-vars\n function foo(bar, baz, zomg) {\n // pass;\n }\n\n if (foo.bind({ a: 1 }).length !== 3) {\n warn(`function_bind_arrity_overwritten`);\n }\n\n if (window.opener && window.parent !== window) {\n warn(`window_has_opener_and_parent`);\n }\n\n if (window.name && window.name.indexOf('__prerender') === 0) {\n warn(`prerender_running_checkoutjs`);\n }\n\n const context = {};\n\n function returnContext() : typeof context {\n return this;\n }\n\n if (returnContext.bind(context)() !== context) {\n warn(`function_bind_broken`);\n }\n\n if (window.Window && window.constructor && window.Window !== window.constructor) {\n warn(`window_constructor_does_not_match_window`);\n }\n\n // $FlowFixMe\n if (Object.assign && JSON.stringify({ a: 1, b: 2, c: 3 }) !== JSON.stringify({ a: 1, b: 2, c: 3 })) { // eslint-disable-line no-self-compare, compat/compat\n warn(`object_assign_broken`);\n }\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { addPayloadBuilder } from 'beaver-logger/client';\nimport { type SameDomainWindowType } from 'cross-domain-utils/src';\n\ntype RequestOptionsType = {|\n url : string,\n method? : string,\n headers? : { [key : string] : string },\n json? : Object,\n data? : { [key : string] : string },\n body? : string,\n win? : SameDomainWindowType,\n timeout? : number\n|};\n\nconst HEADERS = {\n CONTENT_TYPE: 'content-type',\n ACCEPT: 'accept'\n};\n\nconst headerBuilders = [];\nconst corrids = [];\n\naddPayloadBuilder(() => {\n return {\n prev_corr_ids: corrids.join(',')\n };\n});\n\nfunction parseHeaders(rawHeaders : string = '') : { [string] : string } {\n const result = {};\n for (const line of rawHeaders.trim().split('\\n')) {\n const [ key, ...values ] = line.split(':');\n result[key.toLowerCase()] = values.join(':').trim();\n }\n return result;\n}\n\nexport function request({ url, method = 'get', headers = {}, json, data, body, win = window, timeout = 0 } : RequestOptionsType) : ZalgoPromise {\n\n if (url === '/demo/checkout/api/braintree/client-token/') {\n // $FlowFixMe\n return ZalgoPromise.resolve('eyJ2ZXJzaW9uIjoyLCJhdXRob3JpemF0aW9uRmluZ2VycHJpbnQiOiJjMDFhZmRkM2Y1OTJmNWVhNTNlMzE5MWQwYmIyMWVjYjM5NzNlZGM1MzkwNDZiMjJmNTA2ODEyNzIzZmRlMTJifGNsaWVudF9pZD1jbGllbnRfaWQkc2FuZGJveCQ0ZHByYmZjNnBoNTk1Y2NqXHUwMDI2Y3JlYXRlZF9hdD0yMDE3LTA0LTI2VDIzOjI2OjU5Ljg3OTA3ODYwNiswMDAwXHUwMDI2bWVyY2hhbnRfaWQ9M3cydHR2d2QyNDY1NDhoZCIsImNvbmZpZ1VybCI6Imh0dHBzOi8vYXBpLnNhbmRib3guYnJhaW50cmVlZ2F0ZXdheS5jb206NDQzL21lcmNoYW50cy8zdzJ0dHZ3ZDI0NjU0OGhkL2NsaWVudF9hcGkvdjEvY29uZmlndXJhdGlvbiIsImNoYWxsZW5nZXMiOltdLCJlbnZpcm9ubWVudCI6InNhbmRib3giLCJjbGllbnRBcGlVcmwiOiJodHRwczovL2FwaS5zYW5kYm94LmJyYWludHJlZWdhdGV3YXkuY29tOjQ0My9tZXJjaGFudHMvM3cydHR2d2QyNDY1NDhoZC9jbGllbnRfYXBpIiwiYXNzZXRzVXJsIjoiaHR0cHM6Ly9hc3NldHMuYnJhaW50cmVlZ2F0ZXdheS5jb20iLCJhdXRoVXJsIjoiaHR0cHM6Ly9hdXRoLnZlbm1vLnNhbmRib3guYnJhaW50cmVlZ2F0ZXdheS5jb20iLCJhbmFseXRpY3MiOnsidXJsIjoiaHR0cHM6Ly9jbGllbnQtYW5hbHl0aWNzLnNhbmRib3guYnJhaW50cmVlZ2F0ZXdheS5jb20vM3cydHR2d2QyNDY1NDhoZCJ9LCJ0aHJlZURTZWN1cmVFbmFibGVkIjpmYWxzZSwicGF5cGFsRW5hYmxlZCI6dHJ1ZSwicGF5cGFsIjp7ImRpc3BsYXlOYW1lIjoiYmFyY28uMDMtZmFjaWxpdGF0b3JAZ21haWwuY29tIiwiY2xpZW50SWQiOiJBV3VZdnFnMGtaN2Y5S0V4TVpqZU53T3RjQV8yZVhnOWpMZy1QSnBGX0pnYk44M0YyVml5aEdnV2JCNDg4RGU3MFpucGRBZEI2TUNqekNqSyIsInByaXZhY3lVcmwiOiJodHRwczovL2V4YW1wbGUuY29tIiwidXNlckFncmVlbWVudFVybCI6Imh0dHBzOi8vZXhhbXBsZS5jb20iLCJiYXNlVXJsIjoiaHR0cHM6Ly9hc3NldHMuYnJhaW50cmVlZ2F0ZXdheS5jb20iLCJhc3NldHNVcmwiOiJodHRwczovL2NoZWNrb3V0LnBheXBhbC5jb20iLCJkaXJlY3RCYXNlVXJsIjpudWxsLCJhbGxvd0h0dHAiOnRydWUsImVudmlyb25tZW50Tm9OZXR3b3JrIjpmYWxzZSwiZW52aXJvbm1lbnQiOiJvZmZsaW5lIiwidW52ZXR0ZWRNZXJjaGFudCI6ZmFsc2UsImJyYWludHJlZUNsaWVudElkIjoibWFzdGVyY2xpZW50MyIsImJpbGxpbmdBZ3JlZW1lbnRzRW5hYmxlZCI6dHJ1ZSwibWVyY2hhbnRBY2NvdW50SWQiOiJVU0QiLCJjdXJyZW5jeUlzb0NvZGUiOiJVU0QifSwiY29pbmJhc2VFbmFibGVkIjpmYWxzZSwibWVyY2hhbnRJZCI6IjN3MnR0dndkMjQ2NTQ4aGQiLCJ2ZW5tbyI6Im9mZiJ9');\n }\n\n return new ZalgoPromise((resolve, reject) => {\n\n if ((json && data) || (json && body) || (data && json)) {\n throw new Error(`Only options.json or options.data or options.body should be passed`);\n }\n\n const normalizedHeaders = {};\n\n for (const key of Object.keys(headers)) {\n normalizedHeaders[key.toLowerCase()] = headers[key];\n }\n\n if (json) {\n normalizedHeaders[HEADERS.CONTENT_TYPE] = normalizedHeaders[HEADERS.CONTENT_TYPE] || 'application/json';\n } else if (data || body) {\n normalizedHeaders[HEADERS.CONTENT_TYPE] = normalizedHeaders[HEADERS.CONTENT_TYPE] || 'application/x-www-form-urlencoded; charset=utf-8';\n }\n\n normalizedHeaders[HEADERS.ACCEPT] = normalizedHeaders[HEADERS.ACCEPT] || 'application/json';\n\n for (const headerBuilder of headerBuilders) {\n const builtHeaders = headerBuilder();\n\n for (const key of Object.keys(builtHeaders)) {\n normalizedHeaders[key.toLowerCase()] = builtHeaders[key];\n }\n }\n\n const xhr = new win.XMLHttpRequest();\n\n xhr.addEventListener('load', function xhrLoad() : void {\n\n const responseHeaders = parseHeaders(this.getAllResponseHeaders());\n const corrID = responseHeaders['paypal-debug-id'] || 'unknown';\n\n if (responseHeaders['paypal-debug-id']) {\n corrids.push(responseHeaders['paypal-debug-id']);\n }\n\n if (!this.status) {\n return reject(new Error(`Request to ${ method.toLowerCase() } ${ url } failed: no response status code. Correlation id: ${ corrID }`));\n }\n \n const contentType = responseHeaders['content-type'];\n const isJSON = contentType && (contentType.indexOf('application/json') === 0 || contentType.indexOf('text/json') === 0);\n let res = this.responseText;\n\n try {\n res = JSON.parse(this.responseText);\n } catch (err) {\n if (isJSON) {\n return reject(new Error(`Invalid json: ${ this.responseText }. Correlation id: ${ corrID }`));\n }\n }\n\n if (this.status >= 400) {\n let message = `Request to ${ method.toLowerCase() } ${ url } failed with ${ this.status } error. Correlation id: ${ corrID }`;\n\n if (res) {\n if (typeof res === 'object' && res !== null) {\n res = JSON.stringify(res, null, 4);\n }\n\n message = `${ message }\\n\\n${ res }\\n`;\n }\n\n return reject(new Error(message));\n }\n\n return resolve(res);\n\n }, false);\n\n xhr.addEventListener('error', function xhrError(evt) {\n const corrID = this.getResponseHeader('paypal-debug-id');\n reject(new Error(`Request to ${ method.toLowerCase() } ${ url } failed: ${ evt.toString() }. Correlation id: ${ corrID }`));\n }, false);\n\n xhr.open(method, url, true);\n\n for (const key in normalizedHeaders) {\n if (normalizedHeaders.hasOwnProperty(key)) {\n xhr.setRequestHeader(key, normalizedHeaders[key]);\n }\n }\n\n if (json) {\n body = JSON.stringify(json);\n } else if (data) {\n body = Object.keys(data).map(key => {\n return `${ encodeURIComponent(key) }=${ data ? encodeURIComponent(data[key]) : '' }`;\n }).join('&');\n }\n\n xhr.timeout = timeout;\n xhr.ontimeout = function xhrTimeout() {\n reject(new Error(`Request to ${ method.toLowerCase() } ${ url } has timed out`));\n };\n\n xhr.send(body);\n });\n}\n\nrequest.get = (url : string, options = {}) => {\n return request({ method: 'get', url, ...options });\n};\n\nrequest.post = (url : string, data, options = {}) => {\n return request({ method: 'post', url, data, ...options });\n};\n\nrequest.addHeaderBuilder = (method) => {\n headerBuilders.push(method);\n};\n","/* @flow */\n\nimport { info, track, flush as flushLogs } from 'beaver-logger/client';\n\nimport { FPTI } from '../constants';\n\nimport { match } from './util';\nimport { getStorageState, getStorageID } from './session';\n\ntype Throttle = {|\n isEnabled : () => boolean,\n isDisabled : () => boolean,\n getTreatment : () => string,\n log : (string, payload? : { [string] : ?string }) => Throttle,\n logStart : (payload? : { [string] : ?string }) => Throttle,\n logComplete : (payload? : { [string] : ?string }) => Throttle\n|};\n\nfunction getThrottlePercentile(name : string) : number {\n return getStorageState(storage => {\n storage.throttlePercentiles = storage.throttlePercentiles || {};\n storage.throttlePercentiles[name] = storage.throttlePercentiles[name] || Math.floor(Math.random() * 100);\n return storage.throttlePercentiles[name];\n });\n}\n\nconst THROTTLE_GROUP = {\n TEST: 'test',\n CONTROL: 'control',\n THROTTLE: 'throttle'\n};\n\nexport function getThrottle(name : string, sample : number, sticky : boolean = true) : Throttle {\n\n const uid = getStorageID();\n\n const percentile = sticky ? getThrottlePercentile(name) : Math.floor(Math.random() * 100);\n\n let group;\n\n if (percentile < sample) {\n group = THROTTLE_GROUP.TEST;\n } else if ((sample >= 50) || ((sample <= percentile) && (percentile < (sample * 2)))) {\n group = THROTTLE_GROUP.CONTROL;\n } else {\n group = THROTTLE_GROUP.THROTTLE;\n }\n\n const treatment = `${ name }_${ group }`;\n\n let started = false;\n let forced = false;\n\n try {\n if (window.localStorage && window.localStorage.getItem(name)) {\n forced = true;\n }\n } catch (err) {\n // pass\n }\n\n return {\n\n isEnabled() : boolean {\n return (group === THROTTLE_GROUP.TEST) || forced;\n },\n\n isDisabled() : boolean {\n return (group !== THROTTLE_GROUP.TEST) && !forced;\n },\n\n getTreatment() : string {\n return treatment;\n },\n\n log(checkpointName : string, payload? : { [string] : ?string } = {}) : Throttle {\n if (!started) {\n return this;\n }\n\n const checkpoint = `${ name }_${ treatment }_${ checkpointName }`;\n info(checkpoint, { ...payload, expuid: uid });\n\n track({\n [ FPTI.KEY.EXPERIMENT_NAME ]: name,\n [ FPTI.KEY.TREATMENT_NAME ]: treatment,\n ...payload\n });\n\n flushLogs();\n return this;\n },\n\n logStart(payload? : { [string] : ?string } = {}) : Throttle {\n started = true;\n return this.log(`start`, payload);\n },\n\n logComplete(payload? : { [string] : ?string } = {}) : Throttle {\n if (!started) {\n return this;\n }\n\n return this.log(`complete`, payload);\n }\n };\n}\n\nexport function getReturnToken() : ?string {\n\n const token = match(window.location.href, /token=((EC-)?[A-Z0-9]+)/);\n const payer = match(window.location.href, /PayerID=([A-Z0-9]+)/);\n\n if (token && payer) {\n return token;\n }\n}\n","/* @flow */\n\nimport { debug } from 'beaver-logger/client';\nimport { getDomain } from 'cross-domain-utils/src';\n\nimport { config } from '../config';\n\nimport { memoize, domainMatches } from './util';\n\nexport const getCurrentScript = memoize(() : ?HTMLScriptElement => {\n\n const scripts = Array.prototype.slice.call(document.getElementsByTagName('script'));\n\n for (const script of scripts) {\n if (script.src && (script.src.replace(/^https?:/, '').split('?')[0] === config.scriptUrl || script.hasAttribute('data-paypal-checkout'))) {\n return script;\n }\n\n if (script.src && (script.src.indexOf('paypal.checkout.v4.js') !== -1)) {\n return script;\n }\n }\n\n if (document.currentScript) { // eslint-disable-line compat/compat\n debug(`current_script_not_recognized`, { src: document.currentScript.src }); // eslint-disable-line compat/compat\n }\n});\n\nexport function isPayPalObjects() : boolean {\n return Boolean(getCurrentScript());\n}\n\nexport function getScriptVersion() : string {\n if (__PAYPAL_CHECKOUT__.__MAJOR__ && isPayPalObjects()) {\n return __MIN__ ? 'min' : __PAYPAL_CHECKOUT__.__MAJOR_VERSION__;\n } else {\n return __MIN__ ? `${ __PAYPAL_CHECKOUT__.__MINOR_VERSION__ }.min` : __PAYPAL_CHECKOUT__.__MINOR_VERSION__;\n }\n}\n\nexport function getCurrentScriptUrl() : string {\n const script = getCurrentScript();\n\n if (script && typeof script.src === 'string') {\n let scriptUrl = script.src;\n\n if (scriptUrl.indexOf('http://www.paypalobjects.com') === 0) {\n scriptUrl = scriptUrl.replace('http://', 'https://');\n }\n\n return scriptUrl;\n }\n\n return `https://www.paypalobjects.com/api/checkout.${ __PAYPAL_CHECKOUT__.__MINOR_VERSION__ }${ __MIN__ ? '.min' : '' }.js`;\n}\n\nexport function getDomainSetting(name : string, def : ?T) : ?T {\n\n const hostname = window.xchild\n ? window.xchild.getParentDomain()\n : getDomain();\n\n if (config.domain_settings) {\n for (const domain of Object.keys(config.domain_settings)) {\n if (domainMatches(hostname, domain)) {\n return config.domain_settings[domain][name];\n }\n }\n }\n\n return def;\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { once, bridge } from 'post-robot/src';\n\nimport { config } from '../config';\n\nimport { isIEIntranet } from './device';\nimport { memoize } from './util';\nimport { getScriptVersion } from './script';\nimport { extendUrl } from './dom';\n\ntype FrameMetaData = {|\n iframeEligible : boolean,\n iframeEligibleReason : string,\n // eslint-disable-next-line flowtype/no-mutable-array\n rememberedFunding : Array\n|};\n\nexport const openMetaFrame = memoize((env : string = config.env) : ZalgoPromise => {\n return ZalgoPromise.try(() => {\n\n if (isIEIntranet()) {\n return {\n iframeEligible: false,\n iframeEligibleReason: 'ie_intranet',\n rememberedFunding: []\n };\n }\n\n const metaFrameUrl : string = config.metaFrameUrls[env];\n const metaFrameDomain : string = config.paypalDomains[env];\n\n return ZalgoPromise.try(() => {\n if (!bridge) {\n throw new Error(`Opening meta window without bridge support is not currently supported`);\n }\n\n const metaListener = once('meta', { domain: metaFrameDomain });\n\n return bridge.openBridge(extendUrl(metaFrameUrl, { version: getScriptVersion() }), metaFrameDomain)\n .then(() => metaListener)\n .then(({ data }) => data);\n });\n });\n});\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { FUNDING } from '../constants';\nimport type { FundingSource, FundingList } from '../types';\n\nimport { getStorageState, getGlobalState, getSessionState } from './session';\nimport { isDevice } from './device';\nimport { openMetaFrame } from './meta';\nimport { identity } from './util';\n\n// $FlowFixMe\nexport function getRememberedFunding(handler? : (rememberedFunding : FundingList) => T = identity) : T {\n return getStorageState(storage => {\n storage.rememberedFunding = storage.rememberedFunding || [];\n return handler(storage.rememberedFunding);\n });\n}\n\nfunction hasRememberedFunding(source : FundingSource) : ?boolean {\n\n if (getRememberedFunding(rememberedFunding => rememberedFunding.indexOf(source) !== -1)) {\n return true;\n }\n\n if (getSessionState(session => session.recentlyCheckedRemembered)) {\n return true;\n }\n\n return false;\n}\n\n\nfunction isRememberedFunding(source : FundingSource) : boolean {\n\n if (getRememberedFunding(rememberedFunding => rememberedFunding.indexOf(source) !== -1)) {\n return true;\n }\n\n if (getSessionState(session => session.recentlyCheckedRemembered)) {\n return false;\n }\n\n throw new Error(`Can not find remembered funding result`);\n}\n\nfunction getRememberedFundingPromises() : { [FundingSource] : ZalgoPromise } {\n return getGlobalState(global => {\n global.rememberFundingPromises = global.rememberFundingPromises || {};\n return global.rememberFundingPromises;\n });\n}\n\nfunction getRememberedFundingPromise(source : FundingSource) : ZalgoPromise {\n const promises = getRememberedFundingPromises();\n const promise = promises[source] = promises[source] || new ZalgoPromise();\n if (hasRememberedFunding(source)) {\n promise.resolve(isRememberedFunding(source));\n }\n return promise;\n}\n\nfunction flushRememberedFundingPromises() {\n const promises = getRememberedFundingPromises();\n const rememberedFunding = getRememberedFunding(sources => sources);\n\n for (const source of Object.keys(promises)) {\n promises[source].resolve(rememberedFunding.indexOf(source) !== -1);\n }\n}\n\nexport function rememberFunding(sources : FundingList) {\n getRememberedFunding(rememberedFunding => {\n for (const source of sources) {\n\n if (source === FUNDING.VENMO && !isDevice()) {\n continue;\n }\n if (rememberedFunding.indexOf(source) === -1) {\n rememberedFunding.push(source);\n }\n }\n\n flushRememberedFundingPromises();\n });\n\n getSessionState(session => {\n session.recentlyCheckedRemembered = true;\n });\n}\n\nfunction loadMeta() : ZalgoPromise {\n return openMetaFrame().then(({ rememberedFunding }) => {\n rememberFunding(rememberedFunding || []);\n });\n}\n\nexport function isFundingRemembered(source : FundingSource = FUNDING.PAYPAL) : ZalgoPromise {\n\n if (hasRememberedFunding(source)) {\n return getRememberedFundingPromise(source);\n }\n\n return loadMeta().then(() => {\n return getRememberedFundingPromise(source);\n });\n}\n\nexport function precacheRememberedFunding() : ZalgoPromise {\n if (!getSessionState(session => session.recentlyCheckedRemembered)) {\n return loadMeta();\n }\n return ZalgoPromise.resolve();\n}\n","/* @flow */\n\nexport * from './device';\nexport * from './util';\nexport * from './logger';\nexport * from './eligibility';\nexport * from './errors';\nexport * from './dom';\nexport * from './http';\nexport * from './beacon';\nexport * from './throttle';\nexport * from './namespace';\nexport * from './session';\nexport * from './proxy';\nexport * from './meta';\nexport * from './funding';\nexport * from './script';\nexport * from './jsx';\nexport * from './security';\n","/* @flow weak */\n/* eslint max-lines: 0 */\n\nimport { ENV, COUNTRY, LANG, LOCALE } from '../constants';\n\nfunction getDefaultEnv() : $Values {\n if (__TEST__) {\n return ENV.TEST;\n }\n\n if (typeof window === 'undefined' || typeof window.location === 'undefined') {\n return ENV.PRODUCTION;\n }\n\n if (window.location.host.indexOf('localhost.paypal.com') !== -1) {\n return ENV.LOCAL;\n }\n\n if (window.location.host.indexOf('qa.paypal.com') !== -1) {\n return ENV.STAGE;\n }\n\n if (window.location.host.indexOf('sandbox.paypal.com') !== -1) {\n return ENV.SANDBOX;\n }\n\n return ENV.PRODUCTION;\n}\n\nexport const config = {\n\n locales: LOCALE,\n\n scriptUrl: __TEST__\n ? `//${ window.location.host }/base/src/load.js`\n : `//www.paypalobjects.com/api/${ __FILE_NAME__ }`,\n\n // eslint-disable-next-line security/detect-unsafe-regex, unicorn/no-unsafe-regex\n paypal_domain_regex: /^(https?|mock):\\/\\/[a-zA-Z0-9_.-]+\\.paypal\\.com(:\\d+)?$/,\n\n version: __PAYPAL_CHECKOUT__.__MINOR_VERSION__,\n\n cors: true,\n\n env: getDefaultEnv(),\n\n state: 'checkoutjs',\n\n locale: {\n country: COUNTRY.US,\n lang: LANG.EN\n },\n\n stage: 'msmaster',\n stageDomain: 'qa.paypal.com',\n\n get stageUrl() : string {\n return `${ config.stage }.${ config.stageDomain }`;\n },\n\n get apiStageUrl() : string {\n return `${ config.apiStage }.${ config.stageDomain }`;\n },\n\n get localhostUrl() : string {\n return `http://localhost.paypal.com:${ config.ports.default }`;\n },\n\n set localhostUrl(val) {\n delete this.localhostUrl;\n this.localhostUrl = val;\n },\n\n merchantID: '',\n authCode: '',\n\n logLevel: __PAYPAL_CHECKOUT__.__DEFAULT_LOG_LEVEL__,\n\n throttles: {\n v4_mobile_device: 0\n },\n\n domain_settings: {\n 'walmart.com': {\n ie_full_page: false,\n allow_full_page_fallback: true,\n memoize_payment: true,\n force_bridge: true,\n log_authorize: true\n },\n\n 'ulta.com': {\n disable_venmo: true\n },\n\n 'barnesandnoble.com': {\n disable_venmo: true\n },\n\n 'bn.com': {\n disable_venmo: true\n },\n\n 'agoratix.com': {\n disable_venmo: true\n },\n\n 'tractorsupply.com': {\n disable_venmo: true\n },\n\n 'etsy.com': {\n ie_full_page: false,\n allow_full_page_fallback: true,\n memoize_payment: true,\n force_bridge: true,\n log_authorize: true\n },\n\n 'ticketmaster.com': {\n disable_venmo: true\n },\n\n 'livenation.com': {\n disable_venmo: true\n },\n\n 'frontgatetickets.com': {\n disable_venmo: true\n },\n\n 'williams-sonoma.com': {\n disable_venmo: true\n },\n\n 'westelm.com': {\n disable_venmo: true\n },\n\n 'markandgraham.com': {\n disable_venmo: true\n },\n\n 'potterybarn.com': {\n disable_venmo: true\n },\n\n 'potterybarnkids.com': {\n disable_venmo: true\n },\n\n 'pbteen.com': {\n disable_venmo: true\n },\n\n 'beallsflorida.com': {\n disable_venmo: true\n },\n\n 'therealreal.com': {\n disable_venmo: true\n },\n\n 'liveaquaria.com': {\n disable_venmo: true\n },\n\n 'drsfostersmith.com': {\n disable_venmo: true\n },\n\n 'boxed.com': {\n disable_venmo: true\n },\n\n 'bevisible.com': {\n disable_venmo: true\n },\n\n 'moeller.org': {\n disable_venmo: true\n },\n\n 'searshometownstores.com': {\n disable_venmo: true\n },\n\n 'searshardwarestores.com': {\n disable_venmo: true\n },\n\n 'searshomeapplianceshowroom.com': {\n disable_venmo: true\n },\n\n 'barkshop.com': {\n disable_venmo: true\n },\n\n 'vividseats.com': {\n disable_venmo: true\n },\n\n 'getcargo.today': {\n disable_venmo: true\n },\n\n 'smartdestinations.com': {\n disable_venmo: true\n },\n\n 'philadelphiapass.com': {\n disable_venmo: true\n },\n\n 'thesydneypass.com': {\n disable_venmo: true\n },\n\n '3secondlash.com': {\n disable_venmo: true\n },\n\n 'newyorkpass.com': {\n disable_venmo: true\n },\n\n 'dndbeyond.com': {\n disable_venmo: true\n },\n\n 'app.zapbuy.it': {\n disable_venmo: true\n },\n\n 'gamersaloon.com': {\n disable_venmo: true\n },\n\n '1800contacts.com': {\n disable_venmo: true\n },\n\n 'shopchatters.ca': {\n disable_venmo: true\n },\n\n 'shopguyswin.ca': {\n disable_venmo: true\n },\n\n 'jjill.com': {\n disable_venmo: true\n },\n\n 'qvc.com': {\n disable_venmo: true\n },\n\n 'stelladot.com': {\n disable_venmo: true\n },\n\n 'keepcollective.com': {\n disable_venmo: true\n },\n\n 'everskin.com': {\n disable_venmo: true\n },\n\n 'zulily.com': {\n disable_venmo: true\n },\n\n 'freshly.com': {\n disable_venmo: true\n },\n\n 'buypeticare.com': {\n disable_venmo: true\n },\n\n 'getownzone.com': {\n disable_venmo: true\n },\n\n 'uncommongoods.com': {\n disable_venmo: true\n },\n\n 'onegold.com': {\n disable_venmo: true\n },\n\n 'universitytees.com': {\n disable_venmo: true\n },\n\n 'revolve.com': {\n disable_venmo: true\n },\n\n 'functionofbeauty.com': {\n disable_venmo: true\n },\n\n 'givebutter.com': {\n disable_venmo: true\n },\n\n 'hausmart.com': {\n disable_venmo: true\n },\n\n 'derbyjackpot.com': {\n disable_venmo: true\n },\n\n 'ancestry.com': {\n disable_venmo: true\n },\n\n 'boats.net': {\n disable_venmo: true\n },\n\n 'partzilla.com': {\n disable_venmo: true\n },\n\n 'firedog.com': {\n disable_venmo: true\n },\n\n 'chick-fil-a.com': {\n disable_venmo: true\n },\n\n 'roku.com': {\n disable_venmo: true\n },\n\n 'barkbox.com': {\n disable_venmo: true\n },\n\n 'neimanmarcus.com': {\n disable_venmo: true\n },\n\n 'lastcall.com': {\n disable_venmo: true\n },\n\n 'horchow.com': {\n disable_venmo: true\n },\n\n 'bergdorfgoodman.com': {\n disable_venmo: true\n },\n\n 'fwrd.com': {\n disable_venmo: true\n },\n\n 'plunderdesign.com': {\n disable_venmo: true\n },\n\n 'stitchfix.com': {\n disable_venmo: true\n },\n\n 'revzilla.com': {\n disable_venmo: true\n },\n\n 'cyclegear.com': {\n disable_venmo: true\n },\n\n 'chegg.com': {\n disable_venmo: true\n },\n\n 'youniqueproducts.com': {\n disable_venmo: true\n },\n\n 'archives.com': {\n disable_venmo: true\n },\n\n 'hautelook.com': {\n disable_venmo: true\n },\n\n 'nordstromrack.com': {\n disable_venmo: true\n },\n\n 'motherhoodcanada.ca': {\n disable_venmo: true\n },\n\n 'atomtickets.com': {\n disable_venmo: true\n },\n\n 'trademore.com': {\n disable_venmo: true\n },\n\n 'lasheaseoffer.com': {\n disable_venmo: true\n },\n\n 'rookie.paypalsixthman.com': {\n disable_venmo: true\n },\n\n '1800Contacts.com': {\n disable_venmo: true\n },\n\n 'hulu.com': {\n disable_venmo: true\n },\n\n 'grubhub.com': {\n disable_venmo: true\n },\n\n 'eat24.com': {\n disable_venmo: true\n },\n\n 'seamless.com': {\n disable_venmo: true\n },\n\n 'freshfeetscrubber.com': {\n disable_venmo: true\n },\n\n 'opensky.com': {\n disable_venmo: true\n },\n\n 'dotandbo.com': {\n disable_venmo: true\n },\n\n 'storenvy.com': {\n disable_venmo: true\n },\n\n 'gemafina.com': {\n disable_venmo: true\n },\n\n 'pickperfect.com': {\n disable_venmo: true\n },\n\n '55mulberry.com': {\n disable_venmo: true\n },\n \n 'hollar.com': {\n disable_venmo: true\n },\n\n 'bjs.com': {\n disable_venmo: true\n },\n\n 'playsugarhouse.com': {\n disable_venmo: true\n },\n\n 'lakeshorelearning.com': {\n disable_venmo: true\n },\n\n 'llmhq.com': {\n disable_venmo: true\n },\n\n 'gainful.com': {\n disable_venmo: true\n },\n\n 'modaoperandi.com': {\n disable_venmo: true\n },\n \n 'play.jackpocket.com': {\n disable_venmo: true\n },\n\n 'crepeerase.com': {\n disable_venmo: true\n },\n\n 'specificbeauty.com': {\n disable_venmo: true\n },\n\n 'meaningfulbeauty.com': {\n disable_venmo: true\n },\n\n 'smileactives.com ': {\n disable_venmo: true\n },\n\n 'mally.com': {\n disable_venmo: true\n },\n\n 'westmorebeauty.com': {\n disable_venmo: true\n },\n\n 'subd.com': {\n disable_venmo: true\n },\n\n 'seacalmskin.com': {\n disable_venmo: true\n },\n \n 'whittier.edu': {\n disable_venmo: true\n },\n \n 'curology.com': {\n disable_venmo: true\n },\n \n 'monoprice.com': {\n disable_venmo: true\n },\n \n 'dominos.com': {\n disable_venmo: true\n },\n \n 'audiobooks.com': {\n disable_venmo: true\n },\n \n '1aauto.com': {\n disable_venmo: true\n },\n\n 'greatwolf.com': {\n disable_venmo: true\n },\n\n 'cvs.com': {\n disable_venmo: true\n },\n\n 'gilt.com': {\n disable_venmo: true\n },\n\n 'ruelala.com': {\n disable_venmo: true\n }\n },\n\n creditTestDomains: [ 'bluesuncorp.co.uk', 'nationsphotolab.com', 'plexusworldwide.com', 'nshss.org', 'bissell.com', 'mobstub.com', 'vuoriclothing.com', 'tape4backup.com', 'avivamiento.com', 'rhododendron.org', 'whiterabbitjapan.com', 'atsracing.net', 'thehilltopgallery.com', 'weedtraqr.com', 'worldpantry.com', 'ciraconnect.com', 'mymalls.com', 'prowinch.com', 'zodiacpoolsystems.com', 'everlywell.com', 'candlewarmers.com', 'chop.edu', 'incruises.com', 'flikn.com', 'didforsale.com', 'mcc.org', 'sygu.net', 'merchbar.com', 'eduinconline.com', 'us.livebetterwith.com', 'bakemeawish.com', 'judolaunch.com', 'eventcartel.com', 'tapatalk.com', 'telescope.com', 'covenant.edu', 'aquatruwater.com', 'spingo.com', 'usu.edu', 'getcelerity.com', 'brandless.com', 'saberigniter.com', 'euromodeltrains.com', 'gofasttrader.com', 'megamodzplanet.com', 'draftanalyzer.com', 'lovewithoutboundaries.com', 'filterpop.com', 'seekverify.com', 'photoandgo.com', 'sightseeingpass.com', 'bigoanddukes.com', 'thethirstyduck.com', 'thebrushguys.com', '907delivery.com', 'mauisails.com', 'drive.net', 'channelmax.net', 'modernrebelco.com', 'enchanteddiamonds.com', 'ibabbleon.com', 'fullgenomes.com', 'conn-comp.com', 'wingware.com', 'paradigmgoods.com', 'theneptunegroup.com', 'kidzartworks.com', 'unirealm.com', 'ncfarmsinc.com', 'oneofakindantiques.com', 'servers4less.com', 'stumpthespread.com', 'marketwagon.com', 'monsterhouseplans.com', 'canterburychoral.org', 'teacupnordic.org', 'thethirstyduck.com', 'medialoot.com', 'theartistunion.com', 'yourglamourzone.com', 'breckstables.com', 'mackephotography.com', 'dsaj.org', 'massluminosity.com', 'tespa.org', 'versatilearts.net', 'yecup.org', 'divinebusinessmanagement.com', 'captivatebeautyservices.com', 'class4me.com', 'wcsonlineuniversity.com', 'pvplive.com', 'kyneteks.com', 'rare-paper.com', 'bpg.bpgsim.biz', 'geodegallery.com', 'way.com', 'kringle.com', 'talentedmrsalas.ph', 'litcharts.com', 'purpletreephotography.com', 'apache.org', 'neopackage.com', 'globaldance.tv', 'integral.studio', 'airdoctorpro.com', 'ivoryandiron.com', 'yuengling.com', 'averysbranchfarms.com', 'amberreinink.com', 'skinnymechocolate.com', 'bmbl.net', 'ncwatercolor.net', 'astrograph.com', 'localadventures.mx', 'ripcurl.com', 'worldfootbrakechallenge.com', 'shespeakssales.com', 'obrienguitars.com', 'jadenikkolephoto.com', 'americavoice.com', 'cassiexie.com', 'aamastateconvention.org', 'rellesflorist.com', 'passionnobby.com', 'bodybyheidi.com', 'roqos.com', 'prijector.com', 'maryswanson.net', 'tsghobbies.com', 'erinlaytonphotography.com', 'darter.org', 'fountainpenhospital.com', 'myzestfullife.com', 'pcog.org', 'alisabethdesigns.com', 'katiemathisphoto.com', 'strictlybellaphotography.com', 'maptools.com', 'sites.google.com', 'gallerr.com', 'southfloridatrikke.com', 'caviar.tv', 'mintingmasters.com', 'prospectorsguild.com', 'inktale.com', 'prettygirlgoods.com', 'laceycahill.com', 'daniellenowak.com', 't212.org', 'scmsinc.com', 'babypaloozanc.com', 'tetrisonline.com', 'grdd.net', 'cdspg.info', 'airshipapparel.com', 'waft.com', 'extendpets.com', 'supplyhub.com', 'hlbsusa.com', 'jaderollerbeauty.com', 'theparentingjunkie.com', 'schagringas.com', 'yourscribemate.com', 'sportscollectibles.com', 'thedivinenoise.com', 'hometeamsonline.com', 'trademarkpress.com', 'destinationenglish.us', 'jacquesflowers.com', 'aliszhatchphotography.com', 'rusticfoundry.com', 'ahhhmassage.net', 'frezzor.com', 'mandelininc.com', 'kayleejackson.com', 'monkinstitute.org', 'eddiebsbbq.com', 'morningstarmediaservices.com', 'kinevative.com', 'orivet.com', 'digitalprinthouse.net', 'dynamicgenius.com', 'allpartsusa.com', 'flowersbydavid.net', 'nwvoices.org', 'leaptrade.com', 'tulsaschoolpics.com', 'alioth.io', 'windowflair.com', 'vitcom.net', 'simplybeautifulfashions.com', 'christinabenton.com', 'fromthedaughter.com', 'hometowngraphics.net', 'fibanalysis.com', 'creativejobscentral.com', 'sandbox.gg', 'jt-digitalmedia.com', 'kodable.com', 'birthingstone.com', 'taranicholephoto.com', 'hillyfieldsflorist.com', 'charitynoelphoto.com', 'auxdelicesfoods.com', 'terilynnphotography.com', 'folieadeuxevents.com', 'karensfloral.com', 'montgomerydiveclub.com', 'rainbowplastics.com', 'confettionthedancefloor.com', 'vomozmedia.com', 'neatmod.com', 'getnaturafled.com', 'callingpost.com', 'iamfamily.org', 'pedigreeonline.com', 'typeboost.io', 'in-n-outpetdoor.com', 'nerdstockgc.com', 'keiadmin.com', 'createdbykaui.com', 'aikophoto.com', 'lonestar.ink', 'stlfurs.com', 'treasurelistings.com', 'thecubicle.us', 'redclaypaper.com', 'blushhousemedia.com', 'documentsanddesigns.com', 'whitneyleighphotography.shootproof.com', 'amaryllisday.com', 'hermanproav.com', 'felicemedia.com', 'withloveplacenta.com', 'store.brgadgets.co', 'klowephoto.com', 'spenceraustinconsulting.com', 'sno-eagles.org', 'dsatallahassee.org', 'bakupages.com', 'neswc.com', 'josiebrooksphotography.com', 'brisksale.com', 'legalwhoosh.com', 'jasmineeaster.com', 'swatstudios.com', 'facebook.com', 'shakershell.com', 'alexiswinslow.com', 'mixeddimensions.com', 'sweetpproductions.com', 'lbeaphotography.com', 'otlseatfillers.com', 'jdtickets.com', 'catholicar.com', 'masque.com', 'smalltownstudio.net', 'goherbalife.com', 'itzyourz.com', 'magazinespeedloader.com', 'dreammachines.io', 'dallasdieteticalliance.org', 'http:', 'medair.org', 'unbridledambition.com', 'sarasprints.com', 'wiperecord.com', 'showmyrabbit.com', 'cctrendsshop.com', 'rachelalessandra.com', 'otherworld-apothecary.com', 'melissaannphoto.com', 'girlceo.co', 'seasidemexico.com', 'telosid.com', 'instin.com', 'marinecorpsmustang.org', 'lancityconnect.com', 'hps1.org', 'karenware.com', 'livecurriculum.com', 'spellingstars.com', 'vektorfootball.com', 'zaltv.com', 'nebraskamayflower.org', 'ethiopianspices.com', 'immitranslate.com', 'rafaelmagic.com.com', 'bahc1.org', 'newenamel.com', 'bhchp.org', 'buybulkamerica.com', 'sourcepoint.com', 'squarestripsports.com', 'wix.com', 'wilderootsphotography.com', 'goodsalt.com', 'systemongrid.com', 'designmil.org', 'freshtrendhq.com', 'valisimofashions.com', 'buyneatly.com', 'getbeauty.us', 'intellimidia.com' ],\n \n customCountry: false,\n\n SUPPORTED_BROWSERS: {\n msie: '11',\n firefox: '30',\n chrome: '27',\n safari: '7',\n opera: '16',\n msedge: '12',\n samsungBrowser: '2.1',\n silk: '59.3',\n ucbrowser: '10.0.0.488',\n vivaldi: '1.91'\n },\n\n session_uid_lifetime: 5 * 60 * 1000,\n\n _apiStage: '',\n\n get apiStage() : string {\n return config._apiStage || config.stage;\n },\n\n set apiStage(value) {\n config._apiStage = value;\n },\n\n ports: {\n default: 8000,\n button: 8000,\n checkout: 8000,\n guest: 8001,\n altpay: 3000\n },\n\n get paypalUrls() : Object {\n return {\n [ ENV.LOCAL ]: config.localhostUrl,\n [ ENV.STAGE ]: `https://www.${ config.stageUrl }`,\n [ ENV.SANDBOX ]: `https://www.sandbox.paypal.com`,\n [ ENV.PRODUCTION ]: `https://www.paypal.com`,\n [ ENV.TEST ]: `${ window.location.protocol }//${ window.location.host }`,\n [ ENV.DEMO ]: `${ window.location.protocol }//localhost.paypal.com:${ window.location.port }`\n };\n },\n\n get paypalDomains() : Object {\n return {\n [ ENV.LOCAL ]: 'http://localhost.paypal.com:8000',\n [ ENV.STAGE ]: `https://www.${ config.stageUrl }`,\n [ ENV.SANDBOX ]: `https://www.sandbox.paypal.com`,\n [ ENV.PRODUCTION ]: `https://www.paypal.com`,\n [ ENV.TEST ]: `mock://www.paypal.com`,\n [ ENV.DEMO ]: `${ window.location.protocol }//localhost.paypal.com:${ window.location.port }`\n };\n },\n\n get wwwApiUrls() : Object {\n return {\n [ ENV.LOCAL ]: `https://www.${ config.stageUrl }`,\n [ ENV.STAGE ]: `https://www.${ config.stageUrl }`,\n [ ENV.SANDBOX ]: `https://www.sandbox.paypal.com`,\n [ ENV.PRODUCTION ]: `https://www.paypal.com`,\n [ ENV.TEST ]: `${ window.location.protocol }//${ window.location.host }`\n };\n },\n\n get corsApiUrls() : Object {\n return {\n [ ENV.LOCAL ]: `https://${ config.apiStageUrl }:12326`,\n [ ENV.STAGE ]: `https://${ config.apiStageUrl }:12326`,\n [ ENV.SANDBOX ]: `https://cors.api.sandbox.paypal.com`,\n [ ENV.PRODUCTION ]: `https://cors.api.paypal.com`,\n [ ENV.TEST ]: `${ window.location.protocol }//${ window.location.host }`\n };\n },\n\n get apiUrls() : Object {\n\n const domain = `${ window.location.protocol }//${ window.location.host }`;\n const corsApiUrls = config.corsApiUrls;\n const wwwApiUrls = config.wwwApiUrls;\n\n return {\n [ ENV.LOCAL ]: domain === wwwApiUrls.local ? wwwApiUrls.local : corsApiUrls.local,\n [ ENV.STAGE ]: domain === wwwApiUrls.stage ? wwwApiUrls.stage : corsApiUrls.stage,\n [ ENV.SANDBOX ]: domain === wwwApiUrls.sandbox ? wwwApiUrls.sandbox : corsApiUrls.sandbox,\n [ ENV.PRODUCTION ]: domain === wwwApiUrls.production ? wwwApiUrls.production : corsApiUrls.production,\n [ ENV.TEST ]: domain === wwwApiUrls.test ? wwwApiUrls.test : corsApiUrls.test\n };\n },\n\n get checkoutUri() : ?string {\n return null;\n },\n\n set checkoutUri(val) {\n delete this.checkoutUri;\n this.checkoutUri = val;\n },\n\n get checkoutUris() : Object {\n if (config.checkoutUri) {\n return {\n [ ENV.LOCAL ]: config.checkoutUri,\n [ ENV.STAGE ]: config.checkoutUri,\n [ ENV.SANDBOX ]: config.checkoutUri,\n [ ENV.PRODUCTION ]: config.checkoutUri,\n [ ENV.TEST ]: config.checkoutUri,\n [ ENV.DEMO ]: config.checkoutUri\n };\n }\n\n return {\n [ ENV.LOCAL ]: `/webapps/hermes`,\n [ ENV.STAGE ]: `/webapps/hermes`,\n [ ENV.SANDBOX ]: `/checkoutnow`,\n [ ENV.PRODUCTION ]: `/checkoutnow`,\n [ ENV.TEST ]: `/base/test/windows/checkout/index.htm?checkouturl=true`,\n [ ENV.DEMO ]: `/demo/dev/checkout.htm`\n };\n },\n\n altpayUris: {\n [ ENV.LOCAL ]: `/latinumcheckout`,\n [ ENV.STAGE ]: `/latinumcheckout`,\n [ ENV.SANDBOX ]: `/latinumcheckout`,\n [ ENV.PRODUCTION ]: `/latinumcheckout`,\n [ ENV.TEST ]: `/base/test/windows/checkout/index.htm?checkouturl=true`,\n [ ENV.DEMO ]: `/demo/dev/checkout.htm`\n },\n\n guestUris: {\n [ ENV.LOCAL ]: `/webapps/xoonboarding`,\n [ ENV.STAGE ]: `/webapps/xoonboarding`,\n [ ENV.SANDBOX ]: `/webapps/xoonboarding`,\n [ ENV.PRODUCTION ]: `/webapps/xoonboarding`,\n [ ENV.TEST ]: `/base/test/windows/checkout/index.htm?guesturl=true`,\n [ ENV.DEMO ]: `/demo/dev/guest.htm`\n },\n\n billingUris: {\n [ ENV.LOCAL ]: `/webapps/hermes/agreements`,\n [ ENV.STAGE ]: `/webapps/hermes/agreements`,\n [ ENV.SANDBOX ]: `/agreements/approve`,\n [ ENV.PRODUCTION ]: `/agreements/approve`,\n [ ENV.TEST ]: `/base/test/windows/checkout/index.htm?billingurl=true`,\n [ ENV.DEMO ]: `/demo/dev/checkout.htm`\n },\n\n buttonUris: {\n [ ENV.LOCAL ]: `/smart/button`,\n [ ENV.STAGE ]: `/smart/button`,\n [ ENV.SANDBOX ]: `/smart/button`,\n [ ENV.PRODUCTION ]: `/smart/button`,\n [ ENV.TEST ]: `/base/test/windows/button/index.htm`,\n [ ENV.DEMO ]: `/demo/dev/button.htm`\n },\n\n inlinedCardFieldUris: {\n [ ENV.LOCAL ]: `/smart/card-fields`,\n [ ENV.STAGE ]: `/smart/card-fields`,\n [ ENV.SANDBOX ]: `/smart/card-fields`,\n [ ENV.PRODUCTION ]: `/smart/card-fields`,\n [ ENV.TEST ]: `/base/test/windows/card-fields/index.htm`,\n [ ENV.DEMO ]: `/demo/dev/card.htm`\n },\n\n postBridgeUris: {\n [ ENV.LOCAL ]: `/webapps/hermes/component-meta`,\n [ ENV.STAGE ]: `/webapps/hermes/component-meta`,\n [ ENV.SANDBOX ]: `/webapps/hermes/component-meta`,\n [ ENV.PRODUCTION ]: `/webapps/hermes/component-meta`,\n [ ENV.TEST ]: `/base/test/windows/component-meta/index.htm`,\n [ ENV.DEMO ]: `/demo/dev/bridge.htm`\n },\n\n legacyCheckoutUris: {\n [ ENV.LOCAL ]: `/cgi-bin/webscr?cmd=_express-checkout&xo_node_fallback=true`,\n [ ENV.STAGE ]: `/cgi-bin/webscr?cmd=_express-checkout&xo_node_fallback=true`,\n [ ENV.SANDBOX ]: `/cgi-bin/webscr?cmd=_express-checkout&xo_node_fallback=true`,\n [ ENV.PRODUCTION ]: `/cgi-bin/webscr?cmd=_express-checkout&xo_node_fallback=true`,\n [ ENV.TEST ]: `#fallback`\n },\n\n buttonJSUrls: {\n [ ENV.LOCAL ]: `https://www.paypalobjects.com/api/button.js`,\n [ ENV.STAGE ]: `https://www.paypalobjects.com/api/button.js`,\n [ ENV.SANDBOX ]: `https://www.paypalobjects.com/api/button.js`,\n [ ENV.PRODUCTION ]: `https://www.paypalobjects.com/api/button.js`,\n [ ENV.TEST ]: `/base/test/lib/button.js`,\n [ ENV.DEMO ]: `https://www.paypalobjects.com/api/button.js`\n },\n\n get buttonJSUrl() : string {\n return config.buttonJSUrls[config.env];\n },\n\n loginUri: `/signin/`,\n\n hermesLoggerUri: `/webapps/hermes/api/logger`,\n\n loggerUri: `/xoplatform/logger/api/logger`,\n\n loggerThrottlePercentage: 1.0, // 100%\n\n pptmUri: `/tagmanager/pptm.js`,\n\n get postBridgeUri() : string {\n return `${ config.postBridgeUris[config.env] }?xcomponent=1`;\n },\n\n paymentStandardUri: `/webapps/xorouter?cmd=_s-xclick`,\n\n authApiUri: `/v1/oauth2/token`,\n paymentApiUri: `/v1/payments/payment`,\n orderApiUri: `/v2/checkout/orders`,\n billingApiUri: `/v1/billing-agreements/agreement-tokens`,\n experienceApiUri: `/v1/payment-experience/web-profiles`,\n trackingApiUri: `/v1/risk/transaction-contexts`,\n\n get checkoutUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local }${ config.checkoutUris.local.replace(`:${ config.ports.default }`, `:${ config.ports.checkout }`) }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.checkoutUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.checkoutUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.checkoutUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.checkoutUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.test }${ config.checkoutUris.demo }`\n };\n },\n\n get guestUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local.replace(`:${ config.ports.default }`, `:${ config.ports.guest }`) }${ config.guestUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.guestUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.guestUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.guestUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.guestUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.test }${ config.guestUris.demo }`\n };\n },\n\n get altpayUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local.replace(`:${ config.ports.default }`, `:${ config.ports.altpay }`) }${ config.altpayUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.altpayUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.altpayUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.altpayUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.altpayUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.test }${ config.altpayUris.demo }`\n };\n },\n\n get billingUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local.replace(`:${ config.ports.default }`, `:${ config.ports.checkout }`) }${ config.billingUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.billingUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.billingUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.billingUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.billingUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.test }${ config.billingUris.demo }`\n };\n },\n\n get buttonUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local.replace(`:${ config.ports.default }`, `:${ config.ports.button }`) }${ config.buttonUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.buttonUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.buttonUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.buttonUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.buttonUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.demo }${ config.buttonUris.demo }`\n };\n },\n\n get inlinedCardFieldUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local.replace(`:${ config.ports.default }`, `:${ config.ports.button }`) }${ config.inlinedCardFieldUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.inlinedCardFieldUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.inlinedCardFieldUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.inlinedCardFieldUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.inlinedCardFieldUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.demo }${ config.inlinedCardFieldUris.demo }`\n };\n },\n\n get loginUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.stage }${ config.loginUri }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.loginUri }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.loginUri }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.loginUri }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.loginUri }`\n };\n },\n\n get paymentsStandardUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local }${ config.paymentStandardUri }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.paymentStandardUri }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.paymentStandardUri }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.paymentStandardUri }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.paymentStandardUri }`\n };\n },\n\n get metaFrameUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local }${ config.postBridgeUri }&env=local`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.postBridgeUri }&env=stage&stage=${ config.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.postBridgeUri }&env=sandbox`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.postBridgeUri }&env=production`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.postBridgeUri }&env=test`,\n [ ENV.DEMO ]: `${ paypalUrls.demo }${ config.postBridgeUri }&env=demo`\n };\n },\n\n get legacyCheckoutUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.stage }${ config.legacyCheckoutUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.legacyCheckoutUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.legacyCheckoutUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.legacyCheckoutUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.legacyCheckoutUris.test }`\n };\n },\n\n get authApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const authApiUri = config.authApiUri;\n\n return {\n [ ENV.LOCAL ]: `${ apiUrls.local }${ authApiUri }`,\n [ ENV.STAGE ]: `${ apiUrls.stage }${ authApiUri }`,\n [ ENV.SANDBOX ]: `${ apiUrls.sandbox }${ authApiUri }`,\n [ ENV.PRODUCTION ]: `${ apiUrls.production }${ authApiUri }`,\n [ ENV.TEST ]: `${ apiUrls.test }${ authApiUri }`\n };\n },\n\n get paymentApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const paymentApiUri = config.paymentApiUri;\n\n return {\n [ ENV.LOCAL ]: `${ apiUrls.local }${ paymentApiUri }`,\n [ ENV.STAGE ]: `${ apiUrls.stage }${ paymentApiUri }`,\n [ ENV.SANDBOX ]: `${ apiUrls.sandbox }${ paymentApiUri }`,\n [ ENV.PRODUCTION ]: `${ apiUrls.production }${ paymentApiUri }`,\n [ ENV.TEST ]: `${ apiUrls.test }${ paymentApiUri }`\n };\n },\n\n get orderApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const orderApiUri = config.orderApiUri;\n\n return {\n [ENV.LOCAL]: `${ apiUrls.local }${ orderApiUri }`,\n [ENV.STAGE]: `${ apiUrls.stage }${ orderApiUri }`,\n [ENV.SANDBOX]: `${ apiUrls.sandbox }${ orderApiUri }`,\n [ENV.PRODUCTION]: `${ apiUrls.production }${ orderApiUri }`,\n [ENV.TEST]: `${ apiUrls.test }${ orderApiUri }`\n };\n },\n\n get billingApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const billingApiUri = config.billingApiUri;\n\n return {\n [ ENV.LOCAL ]: `${ apiUrls.local }${ billingApiUri }`,\n [ ENV.STAGE ]: `${ apiUrls.stage }${ billingApiUri }`,\n [ ENV.SANDBOX ]: `${ apiUrls.sandbox }${ billingApiUri }`,\n [ ENV.PRODUCTION ]: `${ apiUrls.production }${ billingApiUri }`,\n [ ENV.TEST ]: `${ apiUrls.test }${ billingApiUri }`\n };\n },\n\n get experienceApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const experienceApiUri = config.experienceApiUri;\n\n return {\n [ ENV.LOCAL ]: `${ apiUrls.local }${ experienceApiUri }`,\n [ ENV.STAGE ]: `${ apiUrls.stage }${ experienceApiUri }`,\n [ ENV.SANDBOX ]: `${ apiUrls.sandbox }${ experienceApiUri }`,\n [ ENV.PRODUCTION ]: `${ apiUrls.production }${ experienceApiUri }`,\n [ ENV.TEST ]: `${ apiUrls.test }${ experienceApiUri }`\n };\n },\n\n get trackingApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const trackingApiUri = config.trackingApiUri;\n\n return {\n [ ENV.LOCAL ]: `${ apiUrls.local }${ trackingApiUri }`,\n [ ENV.STAGE ]: `${ apiUrls.stage }${ trackingApiUri }`,\n [ ENV.SANDBOX ]: `${ apiUrls.sandbox }${ trackingApiUri }`,\n [ ENV.PRODUCTION ]: `${ apiUrls.production }${ trackingApiUri }`,\n [ ENV.TEST ]: `${ apiUrls.test }${ trackingApiUri }`\n };\n },\n\n _paypalUrl: '',\n\n get paypalUrl() : string {\n return this._paypalUrl || config.paypalUrls[config.env];\n },\n\n set paypalUrl(value) {\n this._paypalUrl = value;\n },\n\n get paypalDomain() : string {\n return config.paypalDomains[config.env];\n },\n\n get corsApiUrl() : string {\n return config.corsApiUrls[config.env];\n },\n\n get wwwApiUrl() : string {\n return config.wwwApiUrls[config.env];\n },\n\n get apiUrl() : string {\n\n const domain = `${ window.location.protocol }//${ window.location.host }`;\n const corsApiUrl = config.corsApiUrl;\n const wwwApiUrl = config.wwwApiUrl;\n\n return domain === wwwApiUrl ? wwwApiUrl : corsApiUrl;\n },\n\n get checkoutUrl() : string {\n return `${ config.paypalUrl }${ config.checkoutUris[config.env] }`;\n },\n\n get billingUrl() : string {\n return `${ config.paypalUrl }${ config.billingUris[config.env] }`;\n },\n\n get buttonUrl() : string {\n return `${ config.paypalUrl }${ config.buttonUris[config.env] }`;\n },\n\n get legacyCheckoutUrl() : string {\n return config.legacyCheckoutUrls[config.env];\n },\n\n get postBridgeUrl() : string {\n return `${ config.paypalUrl }${ config.postBridgeUri }`;\n },\n\n get postBridgeDomain() : string {\n return `${ config.paypalDomain }`;\n },\n\n get loggerUrl() : string {\n const isTestExperiment = Math.random() < config.loggerThrottlePercentage;\n const loggerUrl = isTestExperiment ? config.loggerUri : config.hermesLoggerUri;\n\n return `${ config.paypalUrl }${ loggerUrl }`;\n },\n\n get pptmUrl() : string {\n return `${ config.paypalUrls[config.env] }${ config.pptmUri }`;\n },\n\n get authApiUrl() : string {\n return `${ config.apiUrl }${ config.authApiUri }`;\n },\n\n get paymentApiUrl() : string {\n return `${ config.apiUrl }${ config.paymentApiUri }`;\n },\n\n get orderApiUrl() : string {\n return `${ config.apiUrl }${ config.orderApiUri }`;\n },\n\n get billingApiUrl() : string {\n return `${ config.apiUrl }${ config.billingApiUri }`;\n },\n\n get experienceApiUrl() : string {\n return `${ config.apiUrl }${ config.experienceApiUri }`;\n },\n\n defaultLocale: {\n country: COUNTRY.US,\n lang: LANG.EN\n }\n};\n","/* @flow */\n\nexport * from './config';\n","\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nexport function extend(dest, src, over=true) {\n dest = dest || {};\n src = src || {};\n\n for (let i in src) {\n if (src.hasOwnProperty(i)) {\n if (over || !dest.hasOwnProperty(i)) {\n dest[i] = src[i];\n }\n }\n }\n\n return dest;\n}\n\nexport function isSameProtocol(url) {\n return window.location.protocol === url.split('/')[0];\n}\n\nexport function isSameDomain(url) {\n let match = url.match(/https?:\\/\\/[^/]+/);\n\n if (!match) {\n return true;\n }\n\n return match[0] === `${window.location.protocol}//${window.location.host}`;\n}\n\nexport function ajax(method, url, headers={}, data={}, { fireAndForget = false } = {}) {\n\n return new ZalgoPromise(resolve => {\n let XRequest = window.XMLHttpRequest || window.ActiveXObject;\n\n if (window.XDomainRequest && !isSameDomain(url)) {\n\n if (!isSameProtocol(url)) {\n return resolve();\n }\n\n XRequest = window.XDomainRequest;\n }\n\n let req = new XRequest('MSXML2.XMLHTTP.3.0');\n req.open(method.toUpperCase(), url, true);\n\n if (typeof req.setRequestHeader === 'function') {\n req.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n req.setRequestHeader('Content-type', 'application/json');\n\n for (let headerName in headers) {\n if (headers.hasOwnProperty(headerName)) {\n req.setRequestHeader(headerName, headers[headerName]);\n }\n }\n }\n\n if (fireAndForget) {\n resolve();\n } else {\n req.onreadystatechange = () => {\n if (req.readyState > 3) {\n resolve();\n }\n };\n }\n\n req.send(JSON.stringify(data).replace(/&/g, '%26'));\n });\n}\n\nexport function promiseDebounce(method, interval) {\n\n let debounce = {};\n\n return function() {\n let args = arguments;\n\n if (debounce.timeout) {\n clearTimeout(debounce.timeout);\n delete debounce.timeout;\n }\n\n debounce.timeout = setTimeout(() => {\n\n let resolver = debounce.resolver;\n let rejector = debounce.rejector;\n\n delete debounce.promise;\n delete debounce.resolver;\n delete debounce.rejector;\n delete debounce.timeout;\n\n return ZalgoPromise.resolve().then(() => {\n return method.apply(null, args);\n }).then(resolver, rejector);\n\n }, interval);\n\n debounce.promise = debounce.promise || new ZalgoPromise((resolver, rejector) => {\n debounce.resolver = resolver;\n debounce.rejector = rejector;\n });\n\n return debounce.promise;\n };\n}\n\nexport function onWindowReady() : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n if (typeof document !== 'undefined' && document.readyState === 'complete') {\n resolve();\n }\n\n window.addEventListener('load', resolve);\n });\n}\n\nexport function safeInterval(method, time) {\n\n let timeout;\n\n function loop() {\n timeout = setTimeout(() => {\n method();\n loop();\n }, time);\n }\n\n loop();\n\n return {\n cancel() {\n clearTimeout(timeout);\n }\n };\n}\n\nexport function uniqueID() {\n let chars = '0123456789abcdef';\n\n return 'xxxxxxxxxx'.replace(/./g, () => {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n });\n}\n\nexport function isIE() {\n return Boolean(window.document.documentMode);\n}\n","\nexport let payloadBuilders = [];\nexport let metaBuilders = [];\nexport let trackingBuilders = [];\nexport let headerBuilders = [];\n\nexport function addPayloadBuilder(builder) {\n payloadBuilders.push(builder);\n}\n\nexport function addMetaBuilder(builder) {\n metaBuilders.push(builder);\n}\n\nexport function addTrackingBuilder(builder) {\n trackingBuilders.push(builder);\n}\n\nexport function addHeaderBuilder(builder) {\n headerBuilders.push(builder);\n}","\nexport let config = {\n\n uri: '',\n prefix: '',\n\n initial_state_name: 'init',\n\n flushInterval: 10 * 60 * 1000,\n debounceInterval: 10,\n\n sizeLimit: 300,\n\n // Supress `console.log`s when `true`\n // Recommended for production usage\n silent: false,\n\n heartbeat: true,\n heartbeatConsoleLog: true,\n heartbeatInterval: 5000,\n heartbeatTooBusy: false,\n heartbeatTooBusyThreshold: 10000,\n\n logLevel: 'warn',\n\n autoLog: ['warn', 'error'],\n\n logUnload: true,\n logPerformance: true\n};\n\nexport let logLevels = [ 'error', 'warn', 'info', 'debug' ];\n","\nimport { extend, promiseDebounce, ajax, isIE } from './util';\nimport { payloadBuilders, metaBuilders, trackingBuilders, headerBuilders } from './builders';\nimport { config, logLevels } from './config';\n\nexport let buffer = [];\nexport let tracking = [];\n\nlet transport = (headers, data, options) => {\n return ajax('post', config.uri, headers, data, options);\n}\n\nexport function getTransport() {\n return transport;\n}\n\nexport function setTransport(newTransport) {\n transport = newTransport;\n}\n\nlet loaded = false;\n\nsetTimeout(() => {\n loaded = true;\n}, 1);\n\nexport function print(level, event, payload) {\n\n if (typeof window === 'undefined' || !window.console || !window.console.log) {\n return;\n }\n\n if (!loaded) {\n return setTimeout(() => print(level, event, payload), 1);\n }\n\n let logLevel = config.logLevel;\n\n if (window.LOG_LEVEL) {\n logLevel = window.LOG_LEVEL;\n }\n\n if (logLevels.indexOf(level) > logLevels.indexOf(logLevel)) {\n return;\n }\n\n payload = payload || {};\n\n let args = [event];\n\n if(isIE()){\n payload = JSON.stringify(payload);\n }\n\n args.push(payload);\n\n if (payload.error || payload.warning) {\n args.push('\\n\\n', payload.error || payload.warning);\n }\n\n try {\n if (window.console[level] && window.console[level].apply) {\n window.console[level].apply(window.console, args);\n } else if (window.console.log && window.console.log.apply) {\n window.console.log.apply(window.console, args);\n }\n } catch (err) {\n // pass\n }\n}\n\nexport function immediateFlush({ fireAndForget = false } = {}) {\n\n if (typeof window === 'undefined') {\n return;\n }\n\n if (!config.uri) {\n return;\n }\n\n let hasBuffer = buffer.length;\n let hasTracking = tracking.length;\n\n if (!hasBuffer && !hasTracking) {\n return;\n }\n\n let meta = {};\n\n for (let builder of metaBuilders) {\n try {\n extend(meta, builder(meta), false);\n } catch (err) {\n console.error('Error in custom meta builder:', err.stack || err.toString());\n }\n }\n\n let headers = {};\n\n for (let builder of headerBuilders) {\n try {\n extend(headers, builder(headers), false);\n } catch (err) {\n console.error('Error in custom header builder:', err.stack || err.toString());\n }\n }\n\n let events = buffer;\n\n let req = transport(headers, {\n events,\n meta,\n tracking\n }, {\n fireAndForget\n });\n\n buffer = [];\n tracking = [];\n\n return req;\n}\n\nexport let flush = promiseDebounce(immediateFlush, config.debounceInterval);\n\n\nfunction enqueue(level, event, payload) {\n\n buffer.push({\n level,\n event,\n payload\n });\n\n if (config.autoLog.indexOf(level) > -1) {\n flush();\n }\n}\n\n\nexport function log(level, event, payload) {\n\n if (typeof window === 'undefined') {\n return;\n }\n\n if (config.prefix) {\n event = `${config.prefix}_${event}`;\n }\n\n payload = payload || {};\n\n if (typeof payload === 'string') {\n payload = {\n message: payload\n };\n } else if (payload instanceof Error) {\n payload = {\n error: payload.stack || payload.toString()\n }\n }\n\n try {\n JSON.stringify(payload);\n } catch (err) {\n return;\n }\n\n payload.timestamp = Date.now();\n\n for (let builder of payloadBuilders) {\n try {\n extend(payload, builder(payload), false);\n } catch (err) {\n console.error('Error in custom payload builder:', err.stack || err.toString());\n }\n }\n\n if (!config.silent) {\n print(level, event, payload);\n }\n\n if (buffer.length === config.sizeLimit) {\n enqueue('info', 'logger_max_buffer_length');\n }\n else if (buffer.length < config.sizeLimit) {\n enqueue(level, event, payload);\n }\n}\n\nexport function prefix(name) {\n\n return {\n debug(event, payload) {\n return log('debug', `${name}_${event}`, payload);\n },\n\n info(event, payload) {\n return log('info', `${name}_${event}`, payload);\n },\n\n warn(event, payload) {\n return log('warn', `${name}_${event}`, payload);\n },\n\n error(event, payload) {\n return log('error', `${name}_${event}`, payload);\n },\n\n track(payload) {\n return track(payload);\n },\n\n flush() {\n return flush();\n }\n };\n}\n\nexport function debug(event, payload) {\n return log('debug', event, payload);\n}\n\nexport function info(event, payload) {\n return log('info', event, payload);\n}\n\nexport function warn(event, payload) {\n return log('warn', event, payload);\n}\n\nexport function error(event, payload) {\n return log('error', event, payload);\n}\n\nexport function track(payload) {\n\n if (typeof window === 'undefined') {\n return;\n }\n\n if (payload) {\n\n try {\n JSON.stringify(payload);\n } catch (err) {\n return;\n }\n\n for (let builder of trackingBuilders) {\n try {\n extend(payload, builder(payload), false);\n } catch (err) {\n console.error('Error in custom tracking builder:', err.stack || err.toString());\n }\n }\n\n print('debug', 'tracking', payload);\n\n tracking.push(payload);\n }\n}\n","\nimport { config } from './config';\nimport { info } from './logger';\nimport { addPayloadBuilder } from './builders'\nimport { onWindowReady, safeInterval } from './util';\n\nlet enablePerformance = window &&\n window.performance &&\n performance.now &&\n performance.timing &&\n performance.timing.connectEnd &&\n performance.timing.navigationStart &&\n (Math.abs(performance.now() - Date.now()) > 1000) &&\n (performance.now() - (performance.timing.connectEnd - performance.timing.navigationStart)) > 0;\n\n\nexport function now() {\n if (enablePerformance) {\n return performance.now();\n } else {\n return Date.now();\n }\n}\n\nfunction timer(startTime) {\n startTime = startTime !== undefined ? startTime : now();\n\n return {\n startTime,\n\n elapsed() {\n return parseInt(now() - startTime, 10);\n },\n\n reset() {\n startTime = now();\n }\n };\n}\n\nexport function reqStartElapsed() {\n if (enablePerformance) {\n let timing = window.performance.timing;\n return parseInt(timing.connectEnd - timing.navigationStart, 10);\n }\n}\n\nexport let clientTimer = timer();\nexport let reqTimer = timer(reqStartElapsed());\n\nexport function initHeartBeat() {\n\n let heartBeatTimer = timer();\n let heartbeatCount = 0;\n\n safeInterval(() => {\n\n if (config.heartbeatMaxThreshold && (heartbeatCount > config.heartbeatMaxThreshold)) {\n return;\n }\n\n heartbeatCount += 1;\n\n let elapsed = heartBeatTimer.elapsed();\n let lag = elapsed - config.heartbeatInterval;\n\n let heartbeatPayload = {\n count: heartbeatCount,\n elapsed\n };\n\n if (config.heartbeatTooBusy) {\n heartbeatPayload.lag = lag;\n\n if (lag >= config.heartbeatTooBusyThreshold) {\n info('toobusy', heartbeatPayload, {\n noConsole: !config.heartbeatConsoleLog\n });\n }\n }\n\n info('heartbeat', heartbeatPayload, {\n noConsole: !config.heartbeatConsoleLog\n });\n\n }, config.heartbeatInterval);\n}\n\nexport function initPerformance() {\n\n if (!enablePerformance) {\n return info('no_performance_data');\n }\n\n addPayloadBuilder(() => {\n\n let payload = {};\n\n payload.client_elapsed = clientTimer.elapsed();\n\n if (enablePerformance) {\n payload.req_elapsed = reqTimer.elapsed();\n }\n\n return payload;\n });\n\n onWindowReady().then(() => {\n\n let keys = [\n 'connectEnd', 'connectStart', 'domComplete', 'domContentLoadedEventEnd',\n 'domContentLoadedEventStart', 'domInteractive', 'domLoading', 'domainLookupEnd',\n 'domainLookupStart', 'fetchStart', 'loadEventEnd', 'loadEventStart', 'navigationStart',\n 'redirectEnd', 'redirectStart', 'requestStart', 'responseEnd', 'responseStart',\n 'secureConnectionStart', 'unloadEventEnd', 'unloadEventStart'\n ];\n\n let timing = {};\n\n keys.forEach(key => {\n timing[key] = parseInt(window.performance.timing[key], 10) || 0;\n });\n\n let offset = timing.connectEnd - timing.navigationStart;\n\n if (timing.connectEnd) {\n Object.keys(timing).forEach(name => {\n let time = timing[name];\n if (time) {\n info(`timing_${name}`, {\n client_elapsed: parseInt(time - timing.connectEnd - (clientTimer.startTime - offset), 10),\n req_elapsed: parseInt(time - timing.connectEnd, 10)\n });\n }\n });\n }\n\n info('timing', timing);\n info('memory', window.performance.memory);\n info('navigation', window.performance.navigation);\n\n if (window.performance.getEntries) {\n window.performance.getEntries().forEach(resource => {\n if (['link', 'script', 'img', 'css'].indexOf(resource.initiatorType) > -1) {\n info(resource.initiatorType, resource);\n }\n });\n }\n });\n}\n","\nimport { config } from './config';\nimport { extend } from './util';\nimport { initPerformance, initHeartBeat } from './performance';\nimport { log, info, flush, immediateFlush } from './logger';\n\nlet initiated = false;\n\nexport function init(conf) {\n extend(config, conf || {});\n\n if (initiated) {\n return;\n }\n\n initiated = true;\n\n if (config.logPerformance) {\n initPerformance();\n }\n\n if (config.heartbeat) {\n initHeartBeat();\n }\n\n if (config.logUnload) {\n window.addEventListener('beforeunload', () => {\n info('window_beforeunload');\n immediateFlush({ fireAndForget: true });\n });\n\n window.addEventListener('unload', () => {\n info('window_unload');\n immediateFlush({ fireAndForget: true });\n });\n }\n\n if (config.flushInterval) {\n setInterval(flush, config.flushInterval);\n }\n\n if (window.beaverLogQueue) {\n window.beaverLogQueue.forEach(payload => {\n log(payload.level, payload.event, payload);\n });\n delete window.beaverLogQueue;\n }\n}\n","\nimport { reqStartElapsed, now } from './performance';\nimport { info, immediateFlush, track } from './logger';\nimport { addMetaBuilder, addPayloadBuilder } from './builders';\nimport { uniqueID } from './util';\nimport { config } from './config';\n\nlet windowID = uniqueID();\nlet pageID = uniqueID();\n\nlet currentState = config.initial_state_name;\nlet startTime;\n\nexport function startTransition() {\n startTime = now();\n}\n\nexport function endTransition(toState) {\n startTime = startTime || reqStartElapsed();\n\n let currentTime = now();\n let elapsedTime;\n\n if (startTime !== undefined) {\n elapsedTime = parseInt(currentTime - startTime, 0);\n }\n\n let transitionName = `transition_${currentState}_to_${toState}`;\n\n info(transitionName, {\n duration: elapsedTime\n });\n\n track({\n transition: transitionName,\n transition_time: elapsedTime\n });\n\n immediateFlush();\n\n startTime = currentTime;\n currentState = toState;\n pageID = uniqueID();\n}\n\nexport function transition(toState) {\n startTransition();\n endTransition(toState);\n}\n\naddPayloadBuilder(() => {\n return {\n windowID,\n pageID\n }\n});\n\naddMetaBuilder(() => {\n return {\n state: `ui_${currentState}`\n };\n});\n","\nimport * as INTERFACE from './interface';\nexport * from './interface';\nexport default INTERFACE;","/* @flow */\n/* eslint max-lines: off */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\n\nimport type { CancelableType } from '../types';\n\n/* Url Encode\n ----------\n\n Replace ? and & with encoded values. Allows other values (to create more readable urls than encodeUriComponent)\n*/\n\nexport function urlEncode(str : string) : string {\n return str.replace(/\\?/g, '%3F').replace(/&/g, '%26').replace(/#/g, '%23').replace(/\\+/g, '%2B');\n}\n\n\n/* Camel To Dasherize\n ------------------\n\n Convert camelCaseText to dasherized-text\n*/\n\nexport function camelToDasherize(string : string) : string {\n return string.replace(/([A-Z])/g, (g) => {\n return `-${ g.toLowerCase() }`;\n });\n}\n\n\n/* Dasherize to Camel\n ------------------\n\n Convert dasherized-text to camelCaseText\n*/\n\nexport function dasherizeToCamel(string : string) : string {\n return string.replace(/-([a-z])/g, (g) => {\n return g[1].toUpperCase();\n });\n}\n\n\n/* Extend\n ------\n\n Extend one object with another\n*/\n\nexport function extend(obj : Object, source : ?Object) : Object {\n if (!source) {\n return obj;\n }\n\n for (let key in source) {\n if (source.hasOwnProperty(key)) {\n obj[key] = source[key];\n }\n }\n\n return obj;\n}\n\n\n/* Values\n ------\n\n Get all of the values from an object as an array\n*/\n\nexport function values(obj : Object) : Array {\n let results = [];\n\n for (let key in obj) {\n if (obj.hasOwnProperty(key)) {\n results.push(obj[key]);\n }\n }\n\n return results;\n}\n\n\n/* Unique ID\n ---------\n\n Generate a unique, random hex id\n*/\n\nexport function uniqueID() : string {\n\n let chars = '0123456789abcdef';\n\n return 'xxxxxxxxxx'.replace(/./g, () => {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n });\n}\n\n/* Stringify with Functions\n ------------------------\n\n JSON Stringify with added support for functions\n*/\n\nexport function stringifyWithFunctions(obj : Object) : string {\n return JSON.stringify(obj, (key, val) => {\n if (typeof val === 'function') {\n return val.toString();\n }\n return val;\n });\n}\n\n\n/* Safe Get\n --------\n\n Get a property without throwing error\n*/\n\nexport function safeGet(obj : Object, prop : string) : mixed {\n\n let result;\n\n try {\n result = obj[prop];\n } catch (err) {\n // pass\n }\n\n return result;\n}\n\n\n/* Capitalize First Letter\n -----------------------\n*/\n\nexport function capitalizeFirstLetter(string : string) : string {\n return string.charAt(0).toUpperCase() + string.slice(1).toLowerCase();\n}\n\n\n/* Get\n ---\n\n Recursively gets a deep path from an object, returning a default value if any level is not found\n*/\n\nexport function get(item : Object, path : string, def : mixed) : mixed {\n\n if (!path) {\n return def;\n }\n\n let pathParts = path.split('.');\n\n // Loop through each section of our key path\n\n for (let i = 0; i < pathParts.length; i++) {\n\n // If we have an object, we can get the key\n\n if (typeof item === 'object' && item !== null) {\n item = item[pathParts[i]];\n\n // Otherwise, we should return the default (undefined if not provided)\n } else {\n return def;\n }\n }\n\n // If our final result is undefined, we should return the default\n\n return item === undefined ? def : item;\n}\n\n\n/* Safe Interval\n -------------\n\n Implement setInterval using setTimeout, to avoid stacking up calls from setInterval\n*/\n\nexport function safeInterval(method : Function, time : number) : CancelableType {\n\n let timeout;\n\n function runInterval() {\n timeout = setTimeout(runInterval, time);\n method.call();\n }\n\n timeout = setTimeout(runInterval, time);\n\n return {\n cancel() {\n clearTimeout(timeout);\n }\n };\n}\n\n/* Safe Interval\n -------------\n\n Run timeouts at 100ms intervals so we can account for busy browsers\n*/\n\nexport function safeTimeout(method : Function, time : number) {\n\n let interval = safeInterval(() => {\n time -= 100;\n if (time <= 0) {\n interval.cancel();\n method();\n }\n }, 100);\n}\n\n\nexport function each(item : Array | Object, callback : Function) {\n\n if (!item) {\n return;\n }\n\n if (Array.isArray(item)) {\n let len = item.length;\n for (let i = 0; i < len; i++) {\n callback(item[i], i);\n }\n\n } else if (typeof item === 'object') {\n let keys = Object.keys(item);\n let len = keys.length;\n for (let i = 0; i < len; i++) {\n let key = keys[i];\n callback(item[key], key);\n }\n }\n}\n\n\nexport function replaceObject> (item : T, replacers : { [string] : Function }, fullKey : string = '') : T {\n\n if (Array.isArray(item)) {\n let length = item.length;\n let result = [];\n\n for (let i = 0; i < length; i++) {\n Object.defineProperty(result, i, {\n configurable: true,\n enumerable: true,\n get: () => {\n let itemKey = fullKey ? `${ fullKey }.${ i }` : `${ i }`;\n let child = item[i];\n\n let type = (typeof child);\n let replacer = replacers[type];\n if (replacer) {\n let replaced = replacer(child, i, itemKey);\n if (typeof replaced !== 'undefined') {\n result[i] = replaced;\n return result[i];\n }\n }\n\n if (typeof child === 'object' && child !== null) {\n result[i] = replaceObject(child, replacers, itemKey);\n return result[i];\n }\n\n result[i] = child;\n return result[i];\n },\n set: (value) => {\n delete result[i];\n result[i] = value;\n }\n });\n }\n\n // $FlowFixMe\n return result;\n } else if (typeof item === 'object' && item !== null) {\n let result = {};\n\n for (let key in item) {\n if (!item.hasOwnProperty(key)) {\n continue;\n }\n\n Object.defineProperty(result, key, {\n configurable: true,\n enumerable: true,\n get: () => {\n let itemKey = fullKey ? `${ fullKey }.${ key }` : `${ key }`;\n // $FlowFixMe\n let child = item[key];\n\n let type = (typeof child);\n let replacer = replacers[type];\n if (replacer) {\n let replaced = replacer(child, key, itemKey);\n if (typeof replaced !== 'undefined') {\n result[key] = replaced;\n return result[key];\n }\n }\n\n if (typeof child === 'object' && child !== null) {\n result[key] = replaceObject(child, replacers, itemKey);\n return result[key];\n }\n\n result[key] = child;\n return result[key];\n },\n set: (value) => {\n delete result[key];\n result[key] = value;\n }\n });\n }\n\n // $FlowFixMe\n return result;\n } else {\n throw new Error(`Pass an object or array`);\n }\n}\n\n\nexport function copyProp(source : Object, target : Object, name : string, def : mixed) {\n if (source.hasOwnProperty(name)) {\n let descriptor = Object.getOwnPropertyDescriptor(source, name);\n // $FlowFixMe\n Object.defineProperty(target, name, descriptor);\n\n } else {\n target[name] = def;\n }\n}\n\nexport function dotify(obj : Object, prefix : string = '', newobj : Object = {}) : { [string] : string } {\n prefix = prefix ? `${ prefix }.` : prefix;\n for (let key in obj) {\n if (obj[key] === undefined || obj[key] === null || typeof obj[key] === 'function') {\n continue;\n } else if (obj[key] && Array.isArray(obj[key]) && obj[key].length && obj[key].every(val => typeof val !== 'object')) {\n newobj[`${ prefix }${ key }`] = obj[key].join(',');\n } else if (obj[key] && typeof obj[key] === 'object') {\n newobj = dotify(obj[key], `${ prefix }${ key }`, newobj);\n } else {\n newobj[`${ prefix }${ key }`] = obj[key].toString();\n }\n }\n return newobj;\n}\n\nlet objectIDs = new WeakMap();\n\nexport function getObjectID(obj : Object) : string {\n\n if (obj === null || obj === undefined || (typeof obj !== 'object' && typeof obj !== 'function')) {\n throw new Error(`Invalid object`);\n }\n\n let uid = objectIDs.get(obj);\n\n if (!uid) {\n uid = `${ typeof obj }:${ uniqueID() }`;\n objectIDs.set(obj, uid);\n }\n\n return uid;\n}\n\ntype RegexResultType = {\n text : string,\n groups : Array,\n start : number,\n end : number,\n length : number,\n replace : (text : string) => string\n};\n\nexport function regex(pattern : string | RegExp, string : string, start : number = 0) : ?RegexResultType {\n\n if (typeof pattern === 'string') {\n // eslint-disable-next-line security/detect-non-literal-regexp\n pattern = new RegExp(pattern);\n }\n\n let result = string.slice(start).match(pattern);\n\n if (!result) {\n return;\n }\n\n // $FlowFixMe\n let index : number = result.index;\n let match = result[0];\n\n return {\n text: match,\n groups: result.slice(1),\n start: start + index,\n end: start + index + match.length,\n length: match.length,\n\n replace(text : string) : string {\n\n if (!match) {\n return '';\n }\n\n return `${ match.slice(0, start + index) }${ text }${ match.slice(index + match.length) }`;\n }\n };\n}\n\nexport function regexAll(pattern : string | RegExp, string : string) : Array {\n\n let matches = [];\n let start = 0;\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n let match = regex(pattern, string, start);\n\n if (!match) {\n break;\n }\n\n matches.push(match);\n start = match.end;\n }\n\n return matches;\n}\n\nexport function count(str : string, substr : string) : number {\n\n let startIndex = 0;\n let itemCount = 0;\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n let index = str.indexOf(substr, startIndex);\n\n if (index === -1) {\n break;\n }\n\n startIndex = index;\n itemCount += 1;\n }\n\n return itemCount;\n}\n\nexport function stringify(item : mixed) : string {\n if (typeof item === 'string') {\n return item;\n }\n\n if (item && typeof item.toString === 'function') {\n return item.toString();\n }\n\n return Object.prototype.toString.call(item);\n}\n\nexport function stringifyError(err : mixed) : string {\n if (err) {\n // $FlowFixMe\n let { stack, message } = err;\n\n if (typeof stack === 'string') {\n return stack;\n }\n\n if (typeof message === 'string') {\n return message;\n }\n }\n\n return stringify(err);\n}\n\nexport type EventEmitterType = {\n on : (eventName : string, handler : Function) => CancelableType,\n once : (eventName : string, handler : Function) => CancelableType,\n trigger : (eventName : string) => void,\n triggerOnce : (eventName : string) => void\n};\n\nexport function eventEmitter() : EventEmitterType {\n\n let triggered = {};\n let handlers = {};\n\n return {\n\n on(eventName : string, handler : Function) : CancelableType {\n\n let handlerList = handlers[eventName] = handlers[eventName] || [];\n\n handlerList.push(handler);\n\n let cancelled = false;\n\n return {\n cancel() {\n if (!cancelled) {\n cancelled = true;\n handlerList.splice(handlerList.indexOf(handler), 1);\n }\n\n }\n };\n },\n\n once(eventName : string, handler : Function) : CancelableType {\n\n let listener = this.on(eventName, () => {\n listener.cancel();\n handler();\n });\n\n return listener;\n },\n\n trigger(eventName : string) {\n\n let handlerList = handlers[eventName];\n\n if (handlerList) {\n for (let handler of handlerList) {\n handler();\n }\n }\n },\n\n triggerOnce(eventName : string) {\n\n if (triggered[eventName]) {\n return;\n }\n\n triggered[eventName] = true;\n this.trigger(eventName);\n }\n };\n}\n","/* @flow */\n\nimport { getObjectID, replaceObject } from './util';\n\n\n/* Noop\n ----\n\n Do nothing, zilch, nada, zip\n*/\n\nexport function noop() {\n // pass\n}\n\n\n/* Once\n ----\n\n Create a wrapper function which only allows the inner function to run once, otherwise is a noop\n*/\n\nexport function once(method : (...args : Array) => T) : (...args : Array) => T {\n\n let called = false;\n let result;\n\n // eslint-disable-next-line no-unused-vars\n return function onceWrapper(...args : Array) : T {\n if (called) {\n return result;\n }\n\n called = true;\n result = method.apply(this, arguments);\n return result;\n };\n}\n\n\n/* Memoize\n -------\n\n Create a wrapper function which caches the result of the first call, then for subsequent calls returns the cached value\n*/\n\nexport function memoize(method : (...args : Array) => T) : (...args : Array) => T {\n\n let results = {};\n\n // eslint-disable-next-line no-unused-vars\n return function memoizeWrapper(...args : Array) : T {\n\n let cacheKey;\n\n try {\n cacheKey = JSON.stringify(Array.prototype.slice.call(arguments), (key, val) => {\n\n if (typeof val === 'function') {\n return `zoid:memoize[${ getObjectID(val) }]`;\n }\n\n return val;\n });\n\n } catch (err) {\n throw new Error('Arguments not serializable -- can not be used to memoize');\n }\n\n if (!results.hasOwnProperty(cacheKey)) {\n results[cacheKey] = method.apply(this, arguments);\n }\n\n return results[cacheKey];\n };\n}\n\nexport function debounce(method : (...args : Array) => T, time : number = 100) : (...args : Array) => void {\n\n let timeout;\n\n return function debounceWrapper() {\n clearTimeout(timeout);\n\n timeout = setTimeout(() => {\n return method.apply(this, arguments);\n }, time);\n };\n}\n\nexport function serializeFunctions>(obj : T) : T {\n return replaceObject(obj, {\n 'function': () => {\n return {\n __type__: '__function__'\n };\n }\n });\n}\n\nexport function deserializeFunctions>(obj : T, handler : Function) : T {\n return replaceObject(obj, {\n 'object': (value, key, fullKey) => {\n if (value && value.__type__ === '__function__') {\n return function deserializedFunctionWrapper() : mixed {\n return handler({ key, fullKey, self: this, args: arguments });\n };\n }\n }\n });\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { isWindowClosed, linkFrameWindow, type CrossDomainWindowType, type SameDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\n\nimport { PopupOpenError } from '../error';\nimport type { ElementRefType, CancelableType } from '../types';\n\nimport { once, memoize, debounce } from './fn';\nimport { extend, safeInterval, urlEncode, capitalizeFirstLetter, stringify } from './util';\n\nexport function appendChild(container : HTMLElement, child : HTMLElement | Text) {\n container.appendChild(child);\n}\n\nfunction isElement(element : mixed) : boolean {\n\n if (element instanceof window.Element) {\n return true;\n }\n\n if (element !== null && typeof element === 'object' && element.nodeType === 1 && typeof element.style === 'object' && typeof element.ownerDocument === 'object') {\n return true;\n }\n\n return false;\n}\n\nexport function querySelectorAll(el : HTMLElement, selector : string) : Array {\n return Array.prototype.slice.call(el.querySelectorAll(selector));\n}\n\n/* Get Element\n -----------\n\n Gets an element based on\n\n - Element id\n - CSS Query selector\n*/\n\nexport function getElementSafe(id : ElementRefType) : ?HTMLElement {\n\n if (isElement(id)) {\n // $FlowFixMe\n return id;\n }\n\n if (typeof id === 'string') {\n let element = document.getElementById(id);\n\n if (element) {\n return element;\n }\n\n if (document.querySelector) {\n element = document.querySelector(id);\n }\n\n if (element) {\n return element;\n }\n }\n}\n\nexport function getElement(id : ElementRefType) : HTMLElement {\n\n let element = getElementSafe(id);\n\n if (element) {\n return element;\n }\n\n throw new Error(`Can not find element: ${ stringify(id) }`);\n}\n\n\nexport let documentReady = new ZalgoPromise(resolve => {\n\n if (window.document.readyState === 'complete') {\n return resolve(window.document);\n }\n\n let interval = setInterval(() => {\n if (window.document.readyState === 'complete') {\n clearInterval(interval);\n return resolve(window.document);\n }\n }, 10);\n});\n\nexport function isDocumentReady() : boolean {\n return window.document.readyState === 'complete';\n}\n\nexport function elementReady(id : ElementRefType) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n let name = stringify(id);\n let el = getElementSafe(id);\n\n if (el) {\n return resolve(el);\n }\n\n if (isDocumentReady()) {\n return reject(new Error(`Document is ready and element ${ name } does not exist`));\n }\n\n let interval = setInterval(() => {\n\n el = getElementSafe(id);\n\n if (el) {\n clearInterval(interval);\n return resolve(el);\n }\n\n if (isDocumentReady()) {\n clearInterval(interval);\n return reject(new Error(`Document is ready and element ${ name } does not exist`));\n }\n }, 10);\n });\n}\n\n\n/* Popup\n -----\n\n Open a popup window with the specified option map\n*/\n\nexport function popup(url : string, options : { [ string ] : mixed }) : CrossDomainWindowType {\n\n // eslint-disable-next-line array-callback-return\n let params = Object.keys(options).map((key) => {\n if (options[key]) {\n return `${ key }=${ stringify(options[key]) }`;\n }\n }).filter(Boolean).join(',');\n\n let win;\n\n try {\n win = window.open(url, options.name, params, true);\n } catch (err) {\n throw new PopupOpenError(`Can not open popup window - ${ err.stack || err.message }`);\n }\n\n if (isWindowClosed(win)) {\n let err = new PopupOpenError(`Can not open popup window - blocked`);\n throw err;\n }\n\n return win;\n}\n\n\nexport function writeToWindow(win : SameDomainWindowType, html : string) {\n try {\n win.document.open();\n win.document.write(html);\n win.document.close();\n } catch (err) {\n try {\n win.location = `javascript: document.open(); document.write(${ JSON.stringify(html) }); document.close();`;\n } catch (err2) {\n // pass\n }\n }\n}\n\nexport function writeElementToWindow(win : SameDomainWindowType, el : HTMLElement) {\n\n let tag = el.tagName.toLowerCase();\n\n if (tag !== 'html') {\n throw new Error(`Expected element to be html, got ${ tag }`);\n }\n\n let documentElement = win.document.documentElement;\n\n while (documentElement.children && documentElement.children.length) {\n documentElement.removeChild(documentElement.children[0]);\n }\n\n while (el.children.length) {\n documentElement.appendChild(el.children[0]);\n }\n}\n\nexport function setStyle(el : HTMLElement, styleText : string, doc : Document = window.document) {\n // $FlowFixMe\n if (el.styleSheet) {\n // $FlowFixMe\n el.styleSheet.cssText = styleText;\n } else {\n el.appendChild(doc.createTextNode(styleText));\n }\n}\n\n/* Create Element\n --------------\n\n Create an element with style, html, classes, attributes etc. and append it to the specified container\n*/\n\nexport type ElementOptionsType = {\n style? : { [ string ] : string },\n class? : ?Array,\n attributes? : { [ string ] : string },\n styleSheet? : ?string,\n html? : ?string\n};\n\nexport function createElement(tag : string = 'div', options : ElementOptionsType = {}, container : ?HTMLElement) : HTMLElement {\n\n tag = tag.toLowerCase();\n let element = document.createElement(tag);\n\n if (options.style) {\n extend(element.style, options.style);\n }\n\n if (options.class) {\n element.className = options.class.join(' ');\n }\n\n if (options.attributes) {\n for (let key of Object.keys(options.attributes)) {\n element.setAttribute(key, options.attributes[key]);\n }\n }\n\n if (options.styleSheet) {\n setStyle(element, options.styleSheet);\n }\n\n if (container) {\n appendChild(container, element);\n }\n\n if (options.html) {\n if (tag === 'iframe') {\n // $FlowFixMe\n if (!container || !element.contentWindow) {\n throw new Error(`Iframe html can not be written unless container provided and iframe in DOM`);\n }\n\n // $FlowFixMe\n writeToWindow(element.contentWindow, options.html);\n\n } else {\n element.innerHTML = options.html;\n }\n }\n\n return element;\n}\n\nlet awaitFrameLoadPromises : WeakMap> = new WeakMap();\n\nexport function awaitFrameLoad(frame : HTMLIFrameElement) : ZalgoPromise {\n\n if (awaitFrameLoadPromises.has(frame)) {\n let promise = awaitFrameLoadPromises.get(frame);\n if (promise) {\n return promise;\n }\n }\n\n let promise = new ZalgoPromise((resolve, reject) => {\n frame.addEventListener('load', () => {\n linkFrameWindow(frame);\n resolve(frame);\n });\n\n frame.addEventListener('error', (err : Event) => {\n if (frame.contentWindow) {\n resolve(frame);\n } else {\n reject(err);\n }\n });\n });\n\n awaitFrameLoadPromises.set(frame, promise);\n\n return promise;\n}\n\nexport function awaitFrameWindow(frame : HTMLIFrameElement) : ZalgoPromise {\n\n if (frame.contentWindow) {\n return ZalgoPromise.resolve(frame.contentWindow);\n }\n\n return awaitFrameLoad(frame).then(loadedFrame => {\n\n if (!loadedFrame.contentWindow) {\n throw new Error(`Could not find window in iframe`);\n }\n\n return loadedFrame.contentWindow;\n });\n}\n\n\n/* Iframe\n ------\n\n Open an iframe with the specified container, url, and option property map\n*/\n\nexport type IframeElementOptionsType = {\n style? : { [ string ] : string },\n class? : ?Array,\n attributes? : { [ string ] : string },\n styleSheet? : ?string,\n html? : ?string,\n url? : ?string\n};\n\nexport function iframe(options : IframeElementOptionsType = {}, container : HTMLElement) : HTMLIFrameElement {\n\n let el = getElement(container);\n\n let attributes = options.attributes || {};\n let style = options.style || {};\n\n let frame = createElement('iframe', {\n attributes: {\n frameBorder: '0',\n allowTransparency: 'true',\n ...attributes\n },\n style: {\n backgroundColor: 'transparent',\n ...style\n },\n html: options.html,\n class: options.class\n });\n\n // $FlowFixMe\n awaitFrameLoad(frame);\n\n el.appendChild(frame);\n\n if (options.url || window.navigator.userAgent.match(/MSIE|Edge/i)) {\n frame.setAttribute('src', options.url || 'about:blank');\n }\n\n // $FlowFixMe\n return frame;\n}\n\n/* Add Event Listener\n ------------------\n\n Add DOM Event listener with cancel\n*/\n\nexport function addEventListener(obj : HTMLElement, event : string, handler : (event : Event) => void) : CancelableType {\n obj.addEventListener(event, handler);\n return {\n cancel() {\n obj.removeEventListener(event, handler);\n }\n };\n}\n\n/* Scan For Javascript\n -------------------\n\n Check if the string contains anything which could conceivably be run as javascript if the string is set to innerHTML\n*/\n\nexport function scanForJavascript(str : string) : string {\n\n if (!str) {\n return str;\n }\n\n if (str.match(/ {\n\n let params = {};\n\n if (!queryString) {\n return params;\n }\n\n if (queryString.indexOf('=') === -1) {\n throw new Error(`Can not parse query string params: ${ queryString }`);\n }\n\n for (let pair of queryString.split('&')) {\n pair = pair.split('=');\n\n if (pair[0] && pair[1]) {\n params[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n }\n\n return params;\n});\n\n\nexport function getQueryParam(name : string) : ?string {\n return parseQuery(window.location.search.slice(1))[name];\n}\n\nexport function formatQuery(obj : { [ string ] : string } = {}) : string {\n\n return Object.keys(obj).filter(key => {\n return typeof obj[key] === 'string';\n }).map(key => {\n return `${ urlEncode(key) }=${ urlEncode(obj[key]) }`;\n }).join('&');\n}\n\nexport function extendQuery(originalQuery : string, props : { [ string ] : string } = {}) : string {\n\n if (!props || !Object.keys(props).length) {\n return originalQuery;\n }\n\n return formatQuery({\n ...parseQuery(originalQuery),\n ...props\n });\n}\n\nexport function extendUrl(url : string, options : { query? : { [ string ] : string }, hash? : { [ string ] : string } } = {}) : string {\n\n let query = options.query || {};\n let hash = options.hash || {};\n\n let originalUrl;\n let originalQuery;\n let originalHash;\n\n [ originalUrl, originalHash ] = url.split('#');\n [ originalUrl, originalQuery ] = originalUrl.split('?');\n\n let queryString = extendQuery(originalQuery, query);\n let hashString = extendQuery(originalHash, hash);\n\n if (queryString) {\n originalUrl = `${ originalUrl }?${ queryString }`;\n }\n\n if (hashString) {\n originalUrl = `${ originalUrl }#${ hashString }`;\n }\n\n return originalUrl;\n}\n\n\nexport function elementStoppedMoving(element : ElementRefType, timeout : number = 5000) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n let el = getElement(element);\n\n let start = el.getBoundingClientRect();\n\n let interval;\n let timer;\n\n interval = setInterval(() => {\n let end = el.getBoundingClientRect();\n\n if (start.top === end.top && start.bottom === end.bottom && start.left === end.left && start.right === end.right && start.width === end.width && start.height === end.height) {\n clearTimeout(timer);\n clearInterval(interval);\n return resolve();\n }\n\n start = end;\n\n }, 50);\n\n timer = setTimeout(() => {\n clearInterval(interval);\n reject(new Error(`Timed out waiting for element to stop animating after ${ timeout }ms`));\n }, timeout);\n });\n}\n\nexport function getCurrentDimensions(el : HTMLElement) : { width : number, height : number } {\n return {\n width: el.offsetWidth,\n height: el.offsetHeight\n };\n}\n\nexport function changeStyle(el : HTMLElement, styles : { [ string ] : string }) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n\n for (let key of Object.keys(styles)) {\n // $FlowFixMe\n el.style[key] = styles[key];\n }\n\n setTimeout(resolve, 1);\n });\n}\n\nexport function setOverflow(el : HTMLElement, value : string = 'auto') : { reset : () => void } {\n\n let { overflow, overflowX, overflowY } = el.style;\n\n el.style.overflow = el.style.overflowX = el.style.overflowY = value;\n\n return {\n reset() {\n el.style.overflow = overflow;\n el.style.overflowX = overflowX;\n el.style.overflowY = overflowY;\n }\n };\n}\n\nfunction dimensionsDiff(one : { width : number, height : number }, two : { width : number, height : number }, { width = true, height = true, threshold = 0 } : { width : boolean, height : boolean, threshold : number }) : boolean {\n\n if (width && Math.abs(one.width - two.width) > threshold) {\n return true;\n }\n\n if (height && Math.abs(one.height - two.height) > threshold) {\n return true;\n }\n\n return false;\n}\n\nexport function trackDimensions(el : HTMLElement, { width = true, height = true, threshold = 0 } : { width : boolean, height : boolean, threshold : number }) : { check : () => { changed : boolean, dimensions : { width : number, height : number } }, reset : () => void } {\n\n let currentDimensions = getCurrentDimensions(el);\n\n return {\n check() : { changed : boolean, dimensions : { width : number, height : number } } {\n let newDimensions = getCurrentDimensions(el);\n\n return {\n changed: dimensionsDiff(currentDimensions, newDimensions, { width, height, threshold }),\n dimensions: newDimensions\n };\n },\n\n reset() {\n currentDimensions = getCurrentDimensions(el);\n }\n };\n}\n\nexport function onDimensionsChange(el : HTMLElement, { width = true, height = true, delay = 50, threshold = 0 } : { width? : boolean, height? : boolean, delay? : number, threshold? : number }) : ZalgoPromise<{ width : number, height : number }> {\n\n return new ZalgoPromise(resolve => {\n\n let tracker = trackDimensions(el, { width, height, threshold });\n\n let interval;\n\n let resolver = debounce((dimensions) => {\n clearInterval(interval);\n return resolve(dimensions);\n }, delay * 4);\n\n interval = setInterval(() => {\n let { changed, dimensions } = tracker.check();\n if (changed) {\n tracker.reset();\n return resolver(dimensions);\n }\n }, delay);\n\n function onWindowResize() {\n let { changed, dimensions } = tracker.check();\n if (changed) {\n tracker.reset();\n window.removeEventListener('resize', onWindowResize);\n resolver(dimensions);\n }\n }\n\n window.addEventListener('resize', onWindowResize);\n });\n}\n\n\nexport function dimensionsMatchViewport(el : HTMLElement, { width, height } : { width : number, height : number }) : boolean {\n\n let dimensions = getCurrentDimensions(el);\n\n if (width && dimensions.width !== window.innerWidth) {\n return false;\n }\n\n if (height && dimensions.height !== window.innerHeight) {\n return false;\n }\n\n return true;\n}\n\n\nexport function bindEvents(element : HTMLElement, eventNames : Array, handler : (event : Event) => void) : CancelableType {\n\n handler = once(handler);\n\n for (let eventName of eventNames) {\n element.addEventListener(eventName, handler);\n }\n\n return {\n cancel: once(() => {\n for (let eventName of eventNames) {\n element.removeEventListener(eventName, handler);\n }\n })\n };\n}\n\nconst VENDOR_PREFIXES = [ 'webkit', 'moz', 'ms', 'o' ];\n\nexport function setVendorCSS(element : HTMLElement, name : string, value : string) {\n\n // $FlowFixMe\n element.style[name] = value;\n\n let capitalizedName = capitalizeFirstLetter(name);\n\n for (let prefix of VENDOR_PREFIXES) {\n // $FlowFixMe\n element.style[`${ prefix }${ capitalizedName }`] = value;\n }\n}\n\n\nlet CSSRule = window.CSSRule;\n\nconst KEYFRAMES_RULE = CSSRule.KEYFRAMES_RULE || CSSRule.WEBKIT_KEYFRAMES_RULE || CSSRule.MOZ_KEYFRAMES_RULE ||\n CSSRule.O_KEYFRAMES_RULE || CSSRule.MS_KEYFRAMES_RULE;\n\nfunction isValidAnimation(element : HTMLElement, name : string) : boolean {\n\n let stylesheets = element.ownerDocument.styleSheets;\n\n try {\n for (let i = 0; i < stylesheets.length; i++) {\n\n // $FlowFixMe\n let cssRules = stylesheets[i].cssRules;\n\n if (!cssRules) {\n continue;\n }\n\n for (let j = 0; j < cssRules.length; j++) {\n\n let cssRule = cssRules[j];\n\n if (!cssRule) {\n continue;\n }\n\n if (cssRule.type === KEYFRAMES_RULE && cssRule.name === name) {\n return true;\n }\n }\n }\n } catch (err) {\n\n return false;\n }\n\n\n return false;\n}\n\n\nconst ANIMATION_START_EVENTS = [ 'animationstart', 'webkitAnimationStart', 'oAnimationStart', 'MSAnimationStart' ];\nconst ANIMATION_END_EVENTS = [ 'animationend', 'webkitAnimationEnd', 'oAnimationEnd', 'MSAnimationEnd' ];\n\nexport function animate(element : ElementRefType, name : string, clean : (Function) => void, timeout : number = 1000) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n let el = getElement(element);\n\n if (!el || !isValidAnimation(el, name)) {\n return resolve();\n }\n\n let hasStarted = false;\n\n let startTimeout;\n let endTimeout;\n let startEvent;\n let endEvent;\n\n function cleanUp() {\n setVendorCSS(el, 'animationName', '');\n clearTimeout(startTimeout);\n clearTimeout(endTimeout);\n startEvent.cancel();\n endEvent.cancel();\n }\n\n startEvent = bindEvents(el, ANIMATION_START_EVENTS, event => {\n\n // $FlowFixMe\n if (event.target !== el || event.animationName !== name) {\n return;\n }\n\n clearTimeout(startTimeout);\n\n event.stopPropagation();\n\n startEvent.cancel();\n hasStarted = true;\n\n endTimeout = setTimeout(() => {\n cleanUp();\n resolve();\n }, timeout);\n });\n\n endEvent = bindEvents(el, ANIMATION_END_EVENTS, event => {\n\n // $FlowFixMe\n if (event.target !== el || event.animationName !== name) {\n return;\n }\n\n cleanUp();\n\n // $FlowFixMe\n if (typeof event.animationName === 'string' && event.animationName !== name) {\n return reject(`Expected animation name to be ${ name }, found ${ event.animationName }`);\n }\n\n return resolve();\n });\n\n setVendorCSS(el, 'animationName', name);\n\n startTimeout = setTimeout(() => {\n if (!hasStarted) {\n cleanUp();\n return resolve();\n }\n }, 200);\n\n if (clean) {\n clean(cleanUp);\n }\n });\n}\n\nconst STYLE = {\n\n DISPLAY: {\n NONE: 'none',\n BLOCK: 'block'\n },\n\n VISIBILITY: {\n VISIBLE: 'visible',\n HIDDEN: 'hidden'\n },\n\n IMPORTANT: 'important'\n};\n\nexport function makeElementVisible(element : HTMLElement) {\n element.style.setProperty('visibility', '');\n}\n\nexport function makeElementInvisible(element : HTMLElement) {\n element.style.setProperty('visibility', STYLE.VISIBILITY.HIDDEN, STYLE.IMPORTANT);\n}\n\n\nexport function showElement(element : HTMLElement) {\n element.style.setProperty('display', '');\n}\n\nexport function hideElement(element : HTMLElement) {\n element.style.setProperty('display', STYLE.DISPLAY.NONE, STYLE.IMPORTANT);\n}\n\nexport function destroyElement(element : HTMLElement) {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n}\n\nexport function showAndAnimate(element : HTMLElement, name : string, clean : (Function) => void) : ZalgoPromise {\n let animation = animate(element, name, clean);\n showElement(element);\n return animation;\n}\n\nexport function animateAndHide(element : HTMLElement, name : string, clean : (Function) => void) : ZalgoPromise {\n return animate(element, name, clean).then(() => {\n hideElement(element);\n });\n}\n\nexport function addClass(element : HTMLElement, name : string) {\n if (element.classList) {\n element.classList.add(name);\n } else if (element.className.split(/\\s+/).indexOf(name) === -1) {\n element.className += ` ${ name }`;\n }\n}\n\nexport function removeClass(element : HTMLElement, name : string) {\n if (element.classList) {\n element.classList.remove(name);\n } else if (element.className.split(/\\s+/).indexOf(name) !== -1) {\n element.className = element.className.replace(name, '');\n }\n}\n\nexport function getCurrentScriptDir() : string {\n // eslint-disable-next-line no-console\n console.warn(`Do not use zoid.getCurrentScriptDir() in production -- browser support is limited`);\n\n // eslint-disable-next-line compat/compat\n if (document.currentScript) {\n // eslint-disable-next-line compat/compat\n return document.currentScript.src.split('/').slice(0, -1).join('/');\n }\n\n return '.';\n}\n\nexport function getElementName(element : ElementRefType) : string {\n\n if (typeof element === 'string') {\n return element;\n }\n\n if (!element || !element.tagName) {\n return '';\n }\n\n let name = element.tagName.toLowerCase();\n\n if (element.id) {\n name += `#${ element.id }`;\n } else if (element.className) {\n name += `.${ element.className.split(' ').join('.') }`;\n }\n\n return name;\n}\n\nexport function isElementClosed(el : HTMLElement) : boolean {\n if (!el || !el.parentNode) {\n return true;\n }\n return false;\n}\n\nexport function watchElementForClose(element : HTMLElement, handler : () => mixed) : CancelableType {\n handler = once(handler);\n\n let interval;\n\n if (isElementClosed(element)) {\n handler();\n } else {\n interval = safeInterval(() => {\n if (isElementClosed(element)) {\n interval.cancel();\n handler();\n }\n }, 50);\n }\n\n return {\n cancel() {\n if (interval) {\n interval.cancel();\n }\n }\n };\n}\n\nexport function getHttpType(contentType : string, url : string) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n let req = new window.XMLHttpRequest();\n\n req.open('GET', url);\n req.setRequestHeader('Accept', contentType);\n req.send(null);\n\n req.onload = () => {\n resolve(req.responseText);\n };\n\n req.onerror = () => {\n return reject(new Error(`prefetch failed`));\n };\n });\n}\n\nexport function getHTML(url : string) : ZalgoPromise {\n return getHttpType('text/html', url);\n}\n\nexport function getCSS(url : string) : ZalgoPromise {\n return getHttpType('text/css', url);\n}\n\nexport function getScript(url : string) : ZalgoPromise {\n return getHttpType('*/*', url);\n}\n\nexport function prefetchPage(url : string) : ZalgoPromise {\n return getHTML(url);\n}\n\nconst JSX_EVENTS = {\n onClick: 'click'\n};\n\nexport function fixScripts(el : HTMLElement, doc : Document = window.document) {\n for (let script of querySelectorAll(el, 'script')) {\n let newScript = doc.createElement('script');\n newScript.text = script.textContent;\n script.parentNode.replaceChild(newScript, script);\n }\n}\n\nexport function jsxDom(name : string, props : ?{ [ string ] : mixed }, content : ElementRefType) : HTMLElement {\n\n name = name.toLowerCase();\n\n let doc = (this && this.createElement)\n ? this\n : window.document;\n\n let el = doc.createElement(name);\n\n for (let prop in props) {\n if (prop in JSX_EVENTS) {\n el.addEventListener(JSX_EVENTS[prop], props[prop]);\n } else if (prop === 'innerHTML') {\n el.innerHTML = props[prop];\n fixScripts(el, doc);\n } else {\n el.setAttribute(prop, props[prop]);\n }\n }\n\n if (name === 'style') {\n\n if (typeof content !== 'string') {\n throw new TypeError(`Expected ${ name } tag content to be string, got ${ typeof content }`);\n }\n\n if (arguments.length > 3) {\n throw new Error(`Expected only text content for ${ name } tag`);\n }\n\n setStyle(el, content, doc);\n\n } else if (name === 'iframe') {\n\n if (arguments.length > 3) {\n throw new Error(`Expected only single child node for iframe`);\n }\n\n el.addEventListener('load', () => {\n let win = el.contentWindow;\n\n if (!win) {\n throw new Error(`Expected frame to have contentWindow`);\n }\n\n if (typeof content === 'string') {\n writeToWindow(win, content);\n } else {\n writeElementToWindow(win, content);\n }\n });\n\n } else if (name === 'script') {\n\n if (typeof content !== 'string') {\n throw new TypeError(`Expected ${ name } tag content to be string, got ${ typeof content }`);\n }\n\n if (arguments.length > 3) {\n throw new Error(`Expected only text content for ${ name } tag`);\n }\n\n el.text = content;\n\n } else {\n for (let i = 2; i < arguments.length; i++) {\n if (typeof arguments[i] === 'string') {\n let textNode = doc.createTextNode(arguments[i]);\n appendChild(el, textNode);\n } else {\n appendChild(el, arguments[i]);\n }\n }\n }\n\n return el;\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\n\n/* DeNodeify\n ---------\n\n Turns a method from a function which accepts a callback, into a function which returns a promise.\n*/\n\nexport function denodeify(method : (...args : Array) => T) : (...args : Array) => ZalgoPromise {\n\n return function denodeifyWrapper() : ZalgoPromise {\n\n let self = this;\n let args = Array.prototype.slice.call(arguments);\n\n if (args.length >= method.length) {\n return ZalgoPromise.resolve(method.apply(self, args));\n }\n\n return new ZalgoPromise((resolve, reject) => {\n args.push((err, result) => {\n\n if (err && !(err instanceof Error)) {\n throw new Error(`Passed non-Error object in callback: [ ${ err } ] -- callbacks should either be called with callback(new Error(...)) or callback(null, result).`);\n }\n\n return err ? reject(err) : resolve(result);\n });\n method.apply(self, args);\n });\n };\n}\n\nexport function promisify(method : (...args : Array) => T | ZalgoPromise) : (...args : Array) => ZalgoPromise {\n return function promisifyWRapper() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n return method.apply(this, arguments);\n });\n };\n}\n\nexport function delay(time : number = 1) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n setTimeout(resolve, time);\n });\n}\n\nexport function cycle(method : Function) : ZalgoPromise {\n return ZalgoPromise.try(method).then(() => cycle(method));\n}\n","/* @flow */\n\nexport function isPerc(str : string) : boolean {\n return typeof str === 'string' && (/^[0-9]+%$/).test(str);\n}\n\nexport function isPx(str : string) : boolean {\n return typeof str === 'string' && (/^[0-9]+px$/).test(str);\n}\n\nexport function toNum(val : string | number) : number {\n\n if (typeof val === 'number') {\n return val;\n }\n\n let match = val.match(/^([0-9]+)(px|%)$/);\n\n if (!match) {\n throw new Error(`Could not match css value from ${ val }`);\n }\n\n return parseInt(match[1], 10);\n}\n\nexport function toPx(val : number | string) : string {\n return `${ toNum(val) }px`;\n}\n\nexport function toCSS(val : number | string) : string {\n\n if (typeof val === 'number') {\n return toPx(val);\n }\n\n return isPerc(val) ? val : toPx(val);\n}\n\nexport function percOf(num : number, perc : string) : number {\n return parseInt(num * toNum(perc) / 100, 10);\n}\n\nexport function normalizeDimension(dim : string | number, max : number) : number {\n if (typeof dim === 'number') {\n return dim;\n } else if (isPerc(dim)) {\n return percOf(max, dim);\n } else if (isPx(dim)) {\n return toNum(dim);\n } else {\n throw new Error(`Can not normalize dimension: ${ dim }`);\n }\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nexport function memoized(target : Object, name : string, descriptor : Object) {\n let method = descriptor.value;\n\n descriptor.value = function memoizedFunction() : T {\n\n this.__memoized__ = this.__memoized__ || {};\n\n if (!this.__memoized__.hasOwnProperty(name)) {\n this.__memoized__[name] = method.apply(this, arguments);\n }\n\n return this.__memoized__[name];\n };\n\n descriptor.value.displayName = `${ name }:memoized`;\n}\n\nexport function promise(target : Object, name : string, descriptor : Object) {\n let method = descriptor.value;\n\n descriptor.value = function promisifiedFunction() : ZalgoPromise {\n return ZalgoPromise.try(method, this, arguments);\n };\n\n descriptor.value.displayName = `${ name }:promisified`;\n}\n","/* @flow */\n\nimport { CONFIG } from 'post-robot/src';\nimport { config, logLevels, info as logInfo, warn as logWarn, error as logError } from 'beaver-logger/client';\n\nexport function setLogLevel(logLevel : string) {\n if (logLevels.indexOf(logLevel) === -1) {\n throw new Error(`Invalid logLevel: ${ logLevel }`);\n }\n config.logLevel = logLevel;\n CONFIG.LOG_LEVEL = logLevel;\n window.LOG_LEVEL = logLevel;\n}\n\nexport function info(name : string, event : string, payload : Object = {}) {\n logInfo(`xc_${ name }_${ event }`, payload);\n}\n\n\n/* Log Warning\n -----------\n\n Log a warning\n*/\n\nexport function warn(name : string, event : string, payload : Object = {}) {\n logWarn(`xc_${ name }_${ event }`, payload);\n}\n\n\n/* Log Error\n ---------\n\n Log an error\n*/\n\nexport function error(name : string, event : string, payload : Object = {}) {\n logError(`xc_${ name }_${ event }`, payload);\n}\n","/* @flow */\n\nimport { isSameDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { __ZOID__ } from '../constants';\n\nexport function globalFor(win : CrossDomainWindowType) : ?Object {\n\n if (!isSameDomain(win)) {\n return;\n }\n\n if (!win[__ZOID__]) {\n win[__ZOID__] = {};\n }\n\n return win[__ZOID__];\n}\n\nexport function localGlobal() : Object {\n let global = globalFor(window);\n\n if (!global) {\n throw new Error(`Could not get local global`);\n }\n\n return global;\n}\n\nexport let global = localGlobal();\n","/* @flow */\n\nexport * from './dom';\nexport * from './fn';\nexport * from './promise';\nexport * from './util';\nexport * from './css';\nexport * from './decorators';\nexport * from './logger';\nexport * from './global';\n","/* @flow */\n\nexport function isRegex(item : mixed) : boolean {\n return Object.prototype.toString.call(item) === '[object RegExp]';\n}\n\n// eslint-disable-next-line no-unused-vars\nexport function noop(...args : Array) {\n // pass\n}\n","/* @flow */\n\nexport const PROTOCOL = {\n MOCK: ('mock:' : 'mock:'),\n FILE: ('file:' : 'file:'),\n ABOUT: ('about:' : 'about:')\n};\n\nexport const WILDCARD = '*';\n\nexport const WINDOW_TYPE = {\n IFRAME: ('iframe' : 'iframe'),\n POPUP: ('popup' : 'popup')\n};\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { isRegex, noop } from './util';\nimport type { CrossDomainWindowType, SameDomainWindowType, DomainMatcher } from './types';\nimport { PROTOCOL, WILDCARD } from './constants';\n\nlet IE_WIN_ACCESS_ERROR = 'Call was rejected by callee.\\r\\n';\n\nexport function isFileProtocol(win : SameDomainWindowType = window) : boolean {\n return win.location.protocol === PROTOCOL.FILE;\n}\n\nexport function isAboutProtocol(win : SameDomainWindowType = window) : boolean {\n return win.location.protocol === PROTOCOL.ABOUT;\n}\n\nexport function getParent(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n\n if (!win) {\n return;\n }\n\n try {\n if (win.parent && win.parent !== win) {\n return win.parent;\n }\n } catch (err) {\n // pass\n }\n}\n\nexport function getOpener(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n\n if (!win) {\n return;\n }\n\n // Make sure we're not actually an iframe which has had window.open() called on us\n if (getParent(win)) {\n return;\n }\n\n try {\n return win.opener;\n } catch (err) {\n // pass\n }\n}\n\nexport function canReadFromWindow(win : CrossDomainWindowType | SameDomainWindowType) : boolean {\n try {\n // $FlowFixMe\n noop(win && win.location && win.location.href);\n return true;\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\nexport function getActualDomain(win? : SameDomainWindowType = window) : string {\n\n let location = win.location;\n\n if (!location) {\n throw new Error(`Can not read window location`);\n }\n\n let protocol = location.protocol;\n\n if (!protocol) {\n throw new Error(`Can not read window protocol`);\n }\n\n if (protocol === PROTOCOL.FILE) {\n return `${ PROTOCOL.FILE }//`;\n }\n\n if (protocol === PROTOCOL.ABOUT) {\n\n let parent = getParent(win);\n if (parent && canReadFromWindow(parent)) {\n // $FlowFixMe\n return getActualDomain(parent);\n }\n\n return `${ PROTOCOL.ABOUT }//`;\n }\n\n let host = location.host;\n\n if (!host) {\n throw new Error(`Can not read window host`);\n }\n\n return `${ protocol }//${ host }`;\n}\n\nexport function getDomain(win? : SameDomainWindowType = window) : string {\n\n let domain = getActualDomain(win);\n\n if (domain && win.mockDomain && win.mockDomain.indexOf(PROTOCOL.MOCK) === 0) {\n return win.mockDomain;\n }\n\n return domain;\n}\n\nexport function isBlankDomain(win : CrossDomainWindowType) : boolean {\n try {\n // $FlowFixMe\n if (!win.location.href) {\n return true;\n }\n\n if (win.location.href === 'about:blank') {\n return true;\n }\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\nexport function isActuallySameDomain(win : CrossDomainWindowType) : boolean {\n\n try {\n if (win === window) {\n return true;\n }\n\n } catch (err) {\n // pass\n }\n\n try {\n let desc = Object.getOwnPropertyDescriptor(win, 'location');\n\n if (desc && desc.enumerable === false) {\n return false;\n }\n\n } catch (err) {\n // pass\n }\n\n try {\n // $FlowFixMe\n if (isAboutProtocol(win) && canReadFromWindow(win)) {\n return true;\n }\n } catch (err) {\n // pass\n }\n\n try {\n // $FlowFixMe\n if (getActualDomain(win) === getActualDomain(window)) {\n return true;\n }\n\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\nexport function isSameDomain(win : CrossDomainWindowType | SameDomainWindowType) : boolean {\n\n if (!isActuallySameDomain(win)) {\n return false;\n }\n\n try {\n\n if (win === window) {\n return true;\n }\n\n // $FlowFixMe\n if (isAboutProtocol(win) && canReadFromWindow(win)) {\n return true;\n }\n\n // $FlowFixMe\n if (getDomain(window) === getDomain(win)) {\n return true;\n }\n\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\n\nexport function assertSameDomain(win : CrossDomainWindowType | SameDomainWindowType) : SameDomainWindowType {\n if (!isSameDomain(win)) {\n throw new Error(`Expected window to be same domain`);\n }\n\n // $FlowFixMe\n return win;\n}\n\nexport function getParents(win : CrossDomainWindowType) : Array {\n\n let result = [];\n\n try {\n\n while (win.parent !== win) {\n result.push(win.parent);\n win = win.parent;\n }\n\n } catch (err) {\n // pass\n }\n\n return result;\n}\n\nexport function isAncestorParent(parent : CrossDomainWindowType, child : CrossDomainWindowType) : boolean {\n\n if (!parent || !child) {\n return false;\n }\n\n let childParent = getParent(child);\n\n if (childParent) {\n return childParent === parent;\n }\n\n if (getParents(child).indexOf(parent) !== -1) {\n return true;\n }\n\n return false;\n}\n\nexport function getFrames(win : CrossDomainWindowType) : Array {\n\n let result = [];\n\n let frames;\n\n try {\n frames = win.frames;\n } catch (err) {\n frames = win;\n }\n\n let len;\n\n try {\n len = frames.length;\n } catch (err) {\n // pass\n }\n\n if (len === 0) {\n return result;\n }\n\n if (len) {\n for (let i = 0; i < len; i++) {\n\n let frame;\n\n try {\n frame = frames[i];\n } catch (err) {\n continue;\n }\n\n result.push(frame);\n }\n\n return result;\n }\n\n for (let i = 0; i < 100; i++) {\n let frame;\n\n try {\n frame = frames[i];\n } catch (err) {\n return result;\n }\n\n if (!frame) {\n return result;\n }\n\n result.push(frame);\n }\n\n return result;\n}\n\n\nexport function getAllChildFrames(win : CrossDomainWindowType) : Array {\n\n let result = [];\n\n for (let frame of getFrames(win)) {\n result.push(frame);\n\n for (let childFrame of getAllChildFrames(frame)) {\n result.push(childFrame);\n }\n }\n\n return result;\n}\n\nexport function getTop(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n\n try {\n if (win.top) {\n return win.top;\n }\n } catch (err) {\n // pass\n }\n\n if (getParent(win) === win) {\n return win;\n }\n\n try {\n if (isAncestorParent(window, win) && window.top) {\n return window.top;\n }\n } catch (err) {\n // pass\n }\n\n try {\n if (isAncestorParent(win, window) && window.top) {\n return window.top;\n }\n } catch (err) {\n // pass\n }\n\n for (let frame of getAllChildFrames(win)) {\n try {\n if (frame.top) {\n return frame.top;\n }\n } catch (err) {\n // pass\n }\n\n if (getParent(frame) === frame) {\n return frame;\n }\n }\n}\n\nexport function getNextOpener(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n return getOpener(getTop(win) || win);\n}\n\nexport function getUltimateTop(win? : CrossDomainWindowType = window) : CrossDomainWindowType {\n let opener = getNextOpener(win);\n\n if (opener) {\n return getUltimateTop(opener);\n }\n\n return top;\n}\n\nexport function getAllFramesInWindow(win : CrossDomainWindowType) : Array {\n let top = getTop(win);\n\n if (!top) {\n throw new Error(`Can not determine top window`);\n }\n\n return [ ...getAllChildFrames(top), top ];\n}\n\nexport function getAllWindows(win? : CrossDomainWindowType = window) : $ReadOnlyArray {\n let frames = getAllFramesInWindow(win);\n let opener = getNextOpener(win);\n\n if (opener) {\n return [ ...getAllWindows(opener), ...frames ];\n } else {\n return frames;\n }\n}\n\nexport function isTop(win : CrossDomainWindowType) : boolean {\n return win === getTop(win);\n}\n\nexport function isFrameWindowClosed(frame : HTMLIFrameElement) : boolean {\n\n if (!frame.contentWindow) {\n return true;\n }\n\n if (!frame.parentNode) {\n return true;\n }\n\n let doc = frame.ownerDocument;\n\n if (doc && doc.documentElement && !doc.documentElement.contains(frame)) {\n return true;\n }\n\n return false;\n}\n\nfunction safeIndexOf(collection : Array, item : T) : number {\n for (let i = 0; i < collection.length; i++) {\n\n try {\n if (collection[i] === item) {\n return i;\n }\n } catch (err) {\n // pass\n }\n }\n\n return -1;\n}\n\nlet iframeWindows = [];\nlet iframeFrames = [];\n\nexport function isWindowClosed(win : CrossDomainWindowType, allowMock : boolean = true) : boolean {\n\n try {\n if (win === window) {\n return false;\n }\n } catch (err) {\n return true;\n }\n\n try {\n if (!win) {\n return true;\n }\n\n } catch (err) {\n return true;\n }\n\n try {\n if (win.closed) {\n return true;\n }\n\n } catch (err) {\n\n // I love you so much IE\n\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return false;\n }\n\n return true;\n }\n\n\n if (allowMock && isSameDomain(win)) {\n try {\n // $FlowFixMe\n if (win.mockclosed) {\n return true;\n }\n } catch (err) {\n // pass\n }\n }\n\n // Mobile safari\n\n try {\n if (!win.parent || !win.top) {\n return true;\n }\n } catch (err) {\n // pass\n }\n\n // Yes, this actually happens in IE. win === win errors out when the window\n // is from an iframe, and the iframe was removed from the page.\n\n try {\n noop(win === win); // eslint-disable-line no-self-compare\n } catch (err) {\n return true;\n }\n\n // IE orphaned frame\n\n let iframeIndex = safeIndexOf(iframeWindows, win);\n\n if (iframeIndex !== -1) {\n let frame = iframeFrames[iframeIndex];\n\n if (frame && isFrameWindowClosed(frame)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction cleanIframes() {\n for (let i = 0; i < iframeWindows.length; i++) {\n let closed = false;\n\n try {\n closed = iframeWindows[i].closed;\n } catch (err) {\n // pass\n }\n\n if (closed) {\n iframeFrames.splice(i, 1);\n iframeWindows.splice(i, 1);\n }\n }\n}\n\nexport function linkFrameWindow(frame : HTMLIFrameElement) {\n\n cleanIframes();\n\n if (frame && frame.contentWindow) {\n try {\n iframeWindows.push(frame.contentWindow);\n iframeFrames.push(frame);\n } catch (err) {\n // pass\n }\n }\n}\n\nexport function getUserAgent(win : ?SameDomainWindowType) : string {\n win = win || window;\n return win.navigator.mockUserAgent || win.navigator.userAgent;\n}\n\n\nexport function getFrameByName(win : CrossDomainWindowType, name : string) : ?CrossDomainWindowType {\n\n let winFrames = getFrames(win);\n\n for (let childFrame of winFrames) {\n try {\n // $FlowFixMe\n if (isSameDomain(childFrame) && childFrame.name === name && winFrames.indexOf(childFrame) !== -1) {\n return childFrame;\n }\n } catch (err) {\n // pass\n }\n }\n\n try {\n // $FlowFixMe\n if (winFrames.indexOf(win.frames[name]) !== -1) {\n // $FlowFixMe\n return win.frames[name];\n }\n } catch (err) {\n // pass\n }\n\n try {\n if (winFrames.indexOf(win[name]) !== -1) {\n return win[name];\n }\n } catch (err) {\n // pass\n }\n}\n\nexport function findChildFrameByName(win : CrossDomainWindowType, name : string) : ?CrossDomainWindowType {\n\n let frame = getFrameByName(win, name);\n\n if (frame) {\n return frame;\n }\n\n for (let childFrame of getFrames(win)) {\n let namedFrame = findChildFrameByName(childFrame, name);\n\n if (namedFrame) {\n return namedFrame;\n }\n }\n}\n\nexport function findFrameByName(win : CrossDomainWindowType, name : string) : ?CrossDomainWindowType {\n\n let frame;\n\n frame = getFrameByName(win, name);\n\n if (frame) {\n return frame;\n }\n\n let top = getTop(win) || win;\n\n return findChildFrameByName(top, name);\n}\n\nexport function isParent(win : CrossDomainWindowType, frame : CrossDomainWindowType) : boolean {\n\n let frameParent = getParent(frame);\n\n if (frameParent) {\n return frameParent === win;\n }\n\n for (let childFrame of getFrames(win)) {\n if (childFrame === frame) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function isOpener(parent : CrossDomainWindowType, child : CrossDomainWindowType) : boolean {\n\n return parent === getOpener(child);\n}\n\nexport function getAncestor(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n win = win || window;\n\n let opener = getOpener(win);\n\n if (opener) {\n return opener;\n }\n\n let parent = getParent(win);\n\n if (parent) {\n return parent;\n }\n}\n\nexport function getAncestors(win : CrossDomainWindowType) : Array {\n\n let results = [];\n\n let ancestor = win;\n\n while (ancestor) {\n ancestor = getAncestor(ancestor);\n if (ancestor) {\n results.push(ancestor);\n }\n }\n\n return results;\n}\n\n\nexport function isAncestor(parent : CrossDomainWindowType, child : CrossDomainWindowType) : boolean {\n\n let actualParent = getAncestor(child);\n\n if (actualParent) {\n if (actualParent === parent) {\n return true;\n }\n\n return false;\n }\n\n if (child === parent) {\n return false;\n }\n\n if (getTop(child) === child) {\n return false;\n }\n\n for (let frame of getFrames(parent)) {\n if (frame === child) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function isPopup(win? : CrossDomainWindowType = window) : boolean {\n return Boolean(getOpener(win));\n}\n\nexport function isIframe(win? : CrossDomainWindowType = window) : boolean {\n return Boolean(getParent(win));\n}\n\nexport function isFullpage(win? : CrossDomainWindowType = window) : boolean {\n return Boolean(!isIframe(win) && !isPopup(win));\n}\n\nfunction anyMatch(collection1, collection2) : boolean {\n\n for (let item1 of collection1) {\n for (let item2 of collection2) {\n if (item1 === item2) {\n return true;\n }\n }\n }\n\n return false;\n}\n\nexport function getDistanceFromTop(win : CrossDomainWindowType = window) : number {\n let distance = 0;\n let parent = win;\n\n while (parent) {\n parent = getParent(parent);\n if (parent) {\n distance += 1;\n }\n }\n\n return distance;\n}\n\nexport function getNthParent(win : CrossDomainWindowType, n : number = 1) : ?CrossDomainWindowType {\n let parent = win;\n\n for (let i = 0; i < n; i++) {\n if (!parent) {\n return;\n }\n\n parent = getParent(parent);\n }\n\n return parent;\n}\n\nexport function getNthParentFromTop(win : CrossDomainWindowType, n : number = 1) : ?CrossDomainWindowType {\n return getNthParent(win, getDistanceFromTop(win) - n);\n}\n\nexport function isSameTopWindow(win1 : CrossDomainWindowType, win2 : CrossDomainWindowType) : boolean {\n\n let top1 = getTop(win1) || win1;\n let top2 = getTop(win2) || win2;\n\n try {\n if (top1 && top2) {\n if (top1 === top2) {\n return true;\n }\n\n return false;\n }\n } catch (err) {\n // pass\n }\n\n let allFrames1 = getAllFramesInWindow(win1);\n let allFrames2 = getAllFramesInWindow(win2);\n\n if (anyMatch(allFrames1, allFrames2)) {\n return true;\n }\n\n let opener1 = getOpener(top1);\n let opener2 = getOpener(top2);\n\n if (opener1 && anyMatch(getAllFramesInWindow(opener1), allFrames2)) {\n return false;\n }\n\n if (opener2 && anyMatch(getAllFramesInWindow(opener2), allFrames1)) {\n return false;\n }\n\n return false;\n}\n\nexport function matchDomain(pattern : DomainMatcher, origin : DomainMatcher) : boolean {\n\n if (typeof pattern === 'string') {\n\n if (typeof origin === 'string') {\n return pattern === WILDCARD || origin === pattern;\n }\n\n if (isRegex(origin)) {\n return false;\n }\n\n if (Array.isArray(origin)) {\n return false;\n }\n }\n\n if (isRegex(pattern)) {\n\n if (isRegex(origin)) {\n return pattern.toString() === origin.toString();\n }\n\n if (Array.isArray(origin)) {\n return false;\n }\n\n // $FlowFixMe\n return Boolean(origin.match(pattern));\n }\n\n if (Array.isArray(pattern)) {\n\n if (Array.isArray(origin)) {\n return JSON.stringify(pattern) === JSON.stringify(origin);\n }\n\n if (isRegex(origin)) {\n return false;\n }\n\n return pattern.some(subpattern => matchDomain(subpattern, origin));\n }\n\n return false;\n}\n\nexport function stringifyDomainPattern(pattern : DomainMatcher) : string {\n if (Array.isArray(pattern)) {\n return `(${ pattern.join(' | ') })`;\n } else if (isRegex(pattern)) {\n return `RegExp(${ pattern.toString() }`;\n } else {\n return pattern.toString();\n }\n}\n\nexport function getDomainFromUrl(url : string) : string {\n\n let domain;\n\n if (url.match(/^(https?|mock|file):\\/\\//)) {\n domain = url;\n } else {\n return getDomain();\n }\n\n domain = domain.split('/').slice(0, 3).join('/');\n\n return domain;\n}\n\nexport function onCloseWindow(win : CrossDomainWindowType, callback : Function, delay : number = 1000, maxtime : number = Infinity) : { cancel : () => void } {\n\n let timeout;\n\n let check = () => {\n\n if (isWindowClosed(win)) {\n\n if (timeout) {\n clearTimeout(timeout);\n }\n\n return callback();\n }\n\n if (maxtime <= 0) {\n clearTimeout(timeout);\n } else {\n maxtime -= delay;\n timeout = setTimeout(check, delay);\n }\n };\n\n check();\n\n return {\n cancel() {\n if (timeout) {\n clearTimeout(timeout);\n }\n }\n };\n}\n\n// eslint-disable-next-line complexity\nexport function isWindow(obj : Object) : boolean {\n\n try {\n if (obj === window) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (Object.prototype.toString.call(obj) === '[object Window]') {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (window.Window && obj instanceof window.Window) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (obj && obj.self === obj) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (obj && obj.parent === obj) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (obj && obj.top === obj) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (noop(obj === obj) === '__unlikely_value__') { // eslint-disable-line no-self-compare\n return false;\n }\n\n } catch (err) {\n return true;\n }\n\n try {\n if (obj && obj.__cross_domain_utils_window_check__ === '__unlikely_value__') {\n return false;\n }\n\n } catch (err) {\n return true;\n }\n\n return false;\n}\n\nexport function isBrowser() : boolean {\n return (typeof window !== 'undefined' && typeof window.location !== 'undefined');\n}\n\nexport function isCurrentDomain(domain : string) : boolean {\n if (!isBrowser()) {\n return false;\n }\n\n return (getDomain() === domain);\n}\n\nexport function isMockDomain(domain : string) : boolean {\n return domain.indexOf(PROTOCOL.MOCK) === 0;\n}\n\nexport function normalizeMockUrl(url : string) : string {\n if (!isMockDomain(getDomainFromUrl(url))) {\n return url;\n }\n\n if (!__TEST__) {\n throw new Error(`Mock urls not supported out of test mode`);\n }\n\n return url.replace(/^mock:\\/\\/[^/]+/, getActualDomain(window));\n}\n\nexport function closeWindow(win : CrossDomainWindowType) {\n try {\n win.close();\n } catch (err) {\n // pass\n }\n}\n\nexport function getFrameForWindow(win : CrossDomainWindowType) : ?HTMLElement {\n if (isSameDomain(win)) {\n return assertSameDomain(win).frameElement;\n }\n\n for (const frame of document.querySelectorAll('iframe')) {\n if (frame && frame.contentWindow && frame.contentWindow === win) {\n return frame;\n }\n }\n}\n","/* @flow */\n\nexport * from './utils';\nexport * from './types';\nexport * from './constants';\n","/* @flow */\n\nexport const ZOID = `zoid`;\n\nexport const __ZOID__ = `__${ ZOID }__`;\n\nexport const POST_MESSAGE = {\n INIT: `${ ZOID }_init`,\n PROPS: `${ ZOID }_props`,\n PROP_CALLBACK: `${ ZOID }_prop_callback`,\n CLOSE: `${ ZOID }_close`,\n CHECK_CLOSE: `${ ZOID }_check_close`,\n REDIRECT: `${ ZOID }_redirect`,\n RESIZE: `${ ZOID }_resize`,\n DELEGATE: `${ ZOID }_delegate`,\n ALLOW_DELEGATE: `${ ZOID }_allow_delegate`,\n ERROR: `${ ZOID }_error`,\n HIDE: `${ ZOID }_hide`,\n SHOW: `${ ZOID }_show`\n};\n\nexport const PROP_TYPES = {\n STRING: `string`,\n OBJECT: `object`,\n FUNCTION: `function`,\n BOOLEAN: `boolean`,\n NUMBER: `number`\n};\n\nexport const INITIAL_PROPS = {\n RAW: 'raw',\n UID: 'uid'\n};\n\nexport const WINDOW_REFERENCES = {\n OPENER: `opener`,\n TOP: `top`,\n PARENT: `parent`,\n GLOBAL: `global`\n};\n\nexport const PROP_TYPES_LIST : Array = Object.keys(PROP_TYPES).map(key => PROP_TYPES[key]);\n\nexport const CONTEXT_TYPES = {\n IFRAME: `iframe`,\n POPUP: `popup`\n};\n\nexport const CLASS_NAMES = {\n ZOID: `${ ZOID }`,\n OUTLET: `${ ZOID }-outlet`,\n COMPONENT_FRAME: `${ ZOID }-component-frame`,\n PRERENDER_FRAME: `${ ZOID }-prerender-frame`,\n VISIBLE: `${ ZOID }-visible`,\n INVISIBLE: `${ ZOID }-invisible`\n};\n\nexport const EVENTS = {\n CLOSE: `${ ZOID }-close`\n};\n\nexport const ATTRIBUTES = {\n IFRAME_PLACEHOLDER: `data-zoid-${ ZOID }-placeholder`\n};\n\nexport const ANIMATION_NAMES = {\n SHOW_CONTAINER: `${ ZOID }-show-container`,\n SHOW_COMPONENT: `${ ZOID }-show-component`,\n HIDE_CONTAINER: `${ ZOID }-hide-container`,\n HIDE_COMPONENT: `${ ZOID }-hide-component`\n};\n\nexport const EVENT_NAMES = {\n CLICK: 'click'\n};\n\nexport const CLOSE_REASONS = {\n PARENT_CALL: 'parent_call',\n CHILD_CALL: 'child_call',\n CLOSE_DETECTED: 'close_detected',\n USER_CLOSED: 'user_closed',\n PARENT_CLOSE_DETECTED: 'parent_close_detected'\n};\n\nexport const CONTEXT_TYPES_LIST : Array = Object.keys(CONTEXT_TYPES).map(key => CONTEXT_TYPES[key]);\n\nexport const DELEGATE = {\n CALL_ORIGINAL: 'call_original',\n CALL_DELEGATE: 'call_delegate'\n};\n\nexport const WILDCARD = '*';\n\nexport const DEFAULT_DIMENSIONS = {\n WIDTH: 300,\n HEIGHT: 150\n};\n","/* @flow */\n\nimport { CONSTANTS } from './conf';\n\nexport let global : Object = window[CONSTANTS.WINDOW_PROPS.POSTROBOT] = window[CONSTANTS.WINDOW_PROPS.POSTROBOT] || {};\n\n// Backwards compatibility\n\nglobal.registerSelf = () => {\n // pass\n};\n","/* @flow */\n\nexport let CONSTANTS = {\n\n POST_MESSAGE_TYPE: {\n REQUEST: 'postrobot_message_request',\n RESPONSE: 'postrobot_message_response',\n ACK: 'postrobot_message_ack'\n },\n\n POST_MESSAGE_ACK: {\n SUCCESS: 'success',\n ERROR: 'error'\n },\n\n POST_MESSAGE_NAMES: {\n METHOD: 'postrobot_method',\n HELLO: 'postrobot_ready',\n OPEN_TUNNEL: 'postrobot_open_tunnel'\n },\n\n WINDOW_TYPES: {\n FULLPAGE: 'fullpage',\n POPUP: 'popup',\n IFRAME: 'iframe'\n },\n\n WINDOW_PROPS: {\n POSTROBOT: '__postRobot__'\n },\n\n SERIALIZATION_TYPES: {\n METHOD: 'postrobot_method',\n ERROR: 'postrobot_error',\n PROMISE: 'postrobot_promise',\n ZALGO_PROMISE: 'postrobot_zalgo_promise',\n REGEX: 'regex'\n },\n\n SEND_STRATEGIES: {\n POST_MESSAGE: 'postrobot_post_message',\n BRIDGE: 'postrobot_bridge',\n GLOBAL: 'postrobot_global'\n },\n\n MOCK_PROTOCOL: 'mock:',\n FILE_PROTOCOL: 'file:',\n\n BRIDGE_NAME_PREFIX: '__postrobot_bridge__',\n POSTROBOT_PROXY: '__postrobot_proxy__',\n\n WILDCARD: '*'\n};\n\nexport const POST_MESSAGE_NAMES = {\n METHOD: 'postrobot_method',\n HELLO: 'postrobot_hello',\n OPEN_TUNNEL: 'postrobot_open_tunnel'\n};\n\nexport let POST_MESSAGE_NAMES_LIST : Array = Object.keys(POST_MESSAGE_NAMES)\n .map(key => POST_MESSAGE_NAMES[key]);\n","/* @flow */\n\nimport { CONSTANTS } from './constants';\n\nexport let CONFIG : Object = {\n\n ALLOW_POSTMESSAGE_POPUP: ('__ALLOW_POSTMESSAGE_POPUP__' in window)\n ? window.__ALLOW_POSTMESSAGE_POPUP__\n : __POST_ROBOT__.__ALLOW_POSTMESSAGE_POPUP__,\n\n BRIDGE_TIMEOUT: 5000,\n CHILD_WINDOW_TIMEOUT: 5000,\n\n ACK_TIMEOUT: (window.navigator.userAgent.match(/MSIE/i) !== -1 && !__TEST__) ? 10000 : 2000,\n RES_TIMEOUT: __TEST__ ? 2000 : -1,\n \n ALLOWED_POST_MESSAGE_METHODS: {\n [ CONSTANTS.SEND_STRATEGIES.POST_MESSAGE ]: true,\n [ CONSTANTS.SEND_STRATEGIES.BRIDGE ]: true,\n [ CONSTANTS.SEND_STRATEGIES.GLOBAL ]: true\n },\n\n ALLOW_SAME_ORIGIN: false\n};\n\nif (window.location.href.indexOf(CONSTANTS.FILE_PROTOCOL) === 0) {\n CONFIG.ALLOW_POSTMESSAGE_POPUP = true;\n}\n","/* @flow */\n\nexport * from './config';\nexport * from './constants';\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","/* @flow */\n/* eslint max-lines: off */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nexport { noop, once, uniqueID, isLocalStorageEnabled } from 'belter/src';\n\nconst moduleGlobal = {};\n\nexport function getGlobal() : Object {\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n return moduleGlobal;\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport function memoize(method : (...args : $ReadOnlyArray) => R, options : { time? : number } = {}) : ((...args : $ReadOnlyArray) => R) {\n\n const cache : { [key : string] : { time : number, value : R } } = {};\n\n // eslint-disable-next-line no-unused-vars, flowtype/no-weak-types\n return function memoizedFunction(...args : $ReadOnlyArray) : R {\n\n let key : string;\n\n try {\n key = JSON.stringify(Array.prototype.slice.call(arguments));\n } catch (err) {\n throw new Error(`Arguments not serializable -- can not be used to memoize`);\n }\n\n const time = options.time;\n\n if (cache[key] && time && (Date.now() - cache[key].time) < time) {\n delete cache[key];\n }\n\n const glob = getGlobal();\n\n if (glob.__CACHE_START_TIME__ && cache[key] && cache[key].time < glob.__CACHE_START_TIME__) {\n delete cache[key];\n }\n\n if (cache[key]) {\n return cache[key].value;\n }\n\n cache[key] = {\n time: Date.now(),\n value: method.apply(this, arguments)\n };\n\n return cache[key].value;\n };\n}\n\nexport function hashStr(str : string) : number {\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n hash += str[i].charCodeAt(0) * Math.pow((i % 10) + 1, 5);\n }\n return Math.floor(Math.pow(Math.sqrt(hash), 5));\n}\n\nexport function strHashStr(str : string) : string {\n let hash = '';\n\n for (let i = 0; i < str.length; i++) {\n let total = (str[i].charCodeAt(0) * i);\n\n if (str[i + 1]) {\n total += (str[i + 1].charCodeAt(0) * (i - 1));\n }\n\n hash += String.fromCharCode(97 + (Math.abs(total) % 26));\n }\n\n return hash;\n}\n\nexport function match(str : string, pattern : RegExp) : ?string {\n const regmatch = str.match(pattern);\n if (regmatch) {\n return regmatch[1];\n }\n}\n\nexport function safeJSON(item : mixed) : string {\n return JSON.stringify(item, (key, val) => {\n\n if (typeof val === 'function') {\n return `<${ typeof val }>`;\n }\n\n try {\n JSON.stringify(val);\n } catch (err) {\n return `<${ typeof val }>`;\n }\n\n return val;\n });\n}\n\ntype Listener = {|\n listen : (method : Function) => {\n cancel : () => void\n },\n once : (method : Function) => void,\n trigger : (...args : $ReadOnlyArray) => void\n|};\n\nexport function eventEmitter() : Listener {\n\n const listeners = [];\n\n return {\n listen(method : Function) : { cancel : () => void } {\n listeners.push(method);\n\n return {\n cancel() {\n listeners.splice(listeners.indexOf(method), 1);\n }\n };\n },\n\n once(method : Function) {\n const listener = this.listen(function onceListener() {\n method.apply(null, arguments);\n listener.cancel();\n });\n },\n\n trigger(...args : $ReadOnlyArray) {\n for (const listener of listeners) {\n listener(...args);\n }\n }\n };\n}\n\nexport function awaitKey(obj : Object, key : string) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n\n let value = obj[key];\n\n if (value) {\n return resolve(value);\n }\n\n delete obj[key];\n\n Object.defineProperty(obj, key, {\n\n configurable: true,\n\n set(item) {\n value = item;\n\n if (value) {\n resolve(value);\n }\n },\n\n get() : mixed {\n return value;\n }\n });\n });\n}\n\nexport function stringifyError(err : mixed, level : number = 1) : string {\n\n if (level >= 3) {\n return 'stringifyError stack overflow';\n }\n\n try {\n if (!err) {\n return ``;\n }\n\n if (typeof err === 'string') {\n return err;\n }\n\n if (err instanceof Error) {\n const stack = err && err.stack;\n const message = err && err.message;\n\n if (stack && message) {\n if (stack.indexOf(message) !== -1) {\n return stack;\n } else {\n return `${ message }\\n${ stack }`;\n }\n } else if (stack) {\n return stack;\n } else if (message) {\n return message;\n }\n }\n\n if (typeof err.toString === 'function') {\n return err.toString();\n }\n\n return Object.prototype.toString.call(err);\n\n } catch (newErr) { // eslint-disable-line unicorn/catch-error-name\n return `Error while stringifying error: ${ stringifyError(newErr, level + 1) }`;\n }\n}\n\nexport function stringifyErrorMessage(err : mixed) : string {\n\n const defaultMessage = ``;\n\n if (!err) {\n return defaultMessage;\n }\n\n if (err instanceof Error) {\n return err.message || defaultMessage;\n }\n\n if (typeof err.message === 'string') {\n return err.message || defaultMessage;\n }\n\n return defaultMessage;\n}\n\nexport function stringify(item : mixed) : string {\n if (typeof item === 'string') {\n return item;\n }\n\n if (item && typeof item.toString === 'function') {\n return item.toString();\n }\n\n return Object.prototype.toString.call(item);\n}\n\nexport function domainMatches(hostname : string, domain : string) : boolean {\n hostname = hostname.split('://')[1];\n const index = hostname.indexOf(domain);\n return (index !== -1 && hostname.slice(index) === domain);\n}\n\nexport function patchMethod(obj : Object, name : string, handler : Function) {\n const original = obj[name];\n\n obj[name] = function patchedMethod() : mixed {\n return handler({\n context: this,\n args: Array.prototype.slice.call(arguments),\n original,\n callOriginal: () => original.apply(this, arguments)\n });\n };\n}\n\nexport function isObject(obj : mixed) : boolean {\n return (typeof obj === 'object' && obj !== null);\n}\n\nexport function extend(obj : T, source : Object) : T {\n if (!source) {\n return obj;\n }\n\n if (Object.assign) { // eslint-disable-line compat/compat\n return Object.assign(obj, source); // eslint-disable-line compat/compat\n }\n\n for (const key in source) {\n if (source.hasOwnProperty(key)) {\n obj[key] = source[key];\n }\n }\n\n return obj;\n}\n\nexport function deepExtend (obj : T, source : Object) : T {\n if (!source) {\n return obj;\n }\n\n for (const key in source) {\n if (source.hasOwnProperty(key)) {\n if (isObject(obj[key]) && isObject(source[key])) {\n deepExtend(obj[key], source[key]);\n } else {\n obj[key] = source[key];\n }\n }\n }\n\n return obj;\n}\n\nexport function hasValue(obj : { [string] : T }, value : T) : boolean {\n for (const key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] === value) {\n return true;\n }\n }\n return false;\n}\n\nexport function contains(arr : $ReadOnlyArray, value : T) : boolean {\n return arr.indexOf(value) !== -1;\n}\n\n// eslint-disable-next-line flowtype/no-mutable-array\nexport function sortBy(arr : Array, order : $ReadOnlyArray) : Array {\n return arr.sort((a : T, b : T) => {\n return order.indexOf(a) - order.indexOf(b);\n });\n}\n\nexport function reverseMap(obj : { [string] : string }) : { [string] : string } {\n const result = {};\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n result[obj[key]] = key;\n }\n }\n return result;\n}\n\n// eslint-disable-next-line flowtype/no-mutable-array\nexport function arrayRemove(arr : Array, item : T) {\n arr.splice(arr.indexOf(item), 1);\n}\n\nexport function identity(item : T) : T {\n return item;\n}\n\nexport function values(obj : { [string] : T }) : $ReadOnlyArray {\n const result = [];\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n result.push(obj[key]);\n }\n }\n return result;\n}\n\nexport function perc(pixels : number, percentage : number) : number {\n return Math.round((pixels * percentage) / 100);\n}\n\nexport function min(...args : $ReadOnlyArray) : number {\n return Math.min(...args);\n}\n\nexport function max(...args : $ReadOnlyArray) : number {\n return Math.max(...args);\n}\n\nexport function regexMap(str : string, regex : RegExp, handler : () => T) : $ReadOnlyArray {\n const results = [];\n\n // $FlowFixMe\n str.replace(regex, function regexMapMatcher() {\n results.push(handler.apply(null, arguments));\n });\n\n return results;\n}\n","/* @flow */\n\nimport { isSameDomain, isSameTopWindow, isActuallySameDomain, getActualDomain, getDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONSTANTS } from '../../conf';\nimport { needsGlobalMessagingForBrowser } from '../../lib';\n\nexport let SEND_MESSAGE_STRATEGIES = {};\n\n\nSEND_MESSAGE_STRATEGIES[CONSTANTS.SEND_STRATEGIES.POST_MESSAGE] = (win : CrossDomainWindowType, serializedMessage : string, domain : (string | Array)) => {\n\n if (__POST_ROBOT__.__IE_POPUP_SUPPORT__) {\n try {\n require('../../compat').emulateIERestrictions(window, win);\n } catch (err) {\n return;\n }\n }\n\n let domains;\n\n if (Array.isArray(domain)) {\n domains = domain;\n } else if (typeof domain === 'string') {\n domains = [ domain ];\n } else {\n domains = [ CONSTANTS.WILDCARD ];\n }\n\n domains = domains.map(dom => {\n\n if (dom.indexOf(CONSTANTS.MOCK_PROTOCOL) === 0) {\n\n if (window.location.protocol === CONSTANTS.FILE_PROTOCOL) {\n return CONSTANTS.WILDCARD;\n }\n\n if (!isActuallySameDomain(win)) {\n throw new Error(`Attempting to send messsage to mock domain ${ dom }, but window is actually cross-domain`);\n }\n\n // $FlowFixMe\n return getActualDomain(win);\n }\n\n if (dom.indexOf(CONSTANTS.FILE_PROTOCOL) === 0) {\n return CONSTANTS.WILDCARD;\n }\n\n return dom;\n });\n\n domains.forEach(dom => {\n return win.postMessage(serializedMessage, dom);\n });\n};\n\nif (__POST_ROBOT__.__IE_POPUP_SUPPORT__) {\n\n let { sendBridgeMessage, needsBridgeForBrowser, isBridge } = require('../../bridge');\n\n SEND_MESSAGE_STRATEGIES[CONSTANTS.SEND_STRATEGIES.BRIDGE] = (win : CrossDomainWindowType, serializedMessage : string, domain : string) => {\n\n if (!needsBridgeForBrowser() && !isBridge()) {\n return;\n }\n\n if (isSameDomain(win)) {\n throw new Error(`Post message through bridge disabled between same domain windows`);\n }\n\n if (isSameTopWindow(window, win) !== false) {\n throw new Error(`Can only use bridge to communicate between two different windows, not between frames`);\n }\n\n return sendBridgeMessage(win, serializedMessage, domain);\n };\n}\n\nif (__POST_ROBOT__.__IE_POPUP_SUPPORT__ || __POST_ROBOT__.__GLOBAL_MESSAGE_SUPPORT__) {\n \n SEND_MESSAGE_STRATEGIES[CONSTANTS.SEND_STRATEGIES.GLOBAL] = (win : CrossDomainWindowType, serializedMessage : string) => {\n\n if (!needsGlobalMessagingForBrowser()) {\n return;\n }\n\n if (!isSameDomain(win)) {\n throw new Error(`Post message through global disabled between different domain windows`);\n }\n\n if (isSameTopWindow(window, win) !== false) {\n throw new Error(`Can only use global to communicate between two different windows, not between frames`);\n }\n\n // $FlowFixMe\n let foreignGlobal = win[CONSTANTS.WINDOW_PROPS.POSTROBOT];\n\n if (!foreignGlobal) {\n throw new Error(`Can not find postRobot global on foreign window`);\n }\n\n return foreignGlobal.receiveMessage({\n source: window,\n origin: getDomain(),\n data: serializedMessage\n });\n };\n}\n","/* @flow */\n\nimport { getDomain, isWindowClosed, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { CONSTANTS, CONFIG, POST_MESSAGE_NAMES_LIST } from '../../conf';\nimport { uniqueID, serializeMethods, getWindowType, jsonStringify, stringifyError } from '../../lib';\n\nimport { SEND_MESSAGE_STRATEGIES } from './strategies';\n\n\nfunction buildMessage(win : CrossDomainWindowType, message : Object, options = {}) : Object {\n\n let id = uniqueID();\n let type = getWindowType();\n let sourceDomain = getDomain(window);\n\n return {\n ...message,\n ...options,\n sourceDomain,\n id: message.id || id,\n windowType: type\n };\n}\n\n\nexport function sendMessage(win : CrossDomainWindowType, message : Object, domain : string | Array) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n message = buildMessage(win, message, {\n data: serializeMethods(win, domain, message.data),\n domain\n });\n\n let level;\n\n if (__DEBUG__) {\n if (POST_MESSAGE_NAMES_LIST.indexOf(message.name) !== -1 || message.type === CONSTANTS.POST_MESSAGE_TYPE.ACK) {\n level = 'debug';\n } else if (message.ack === 'error') {\n level = 'error';\n } else {\n level = 'info';\n }\n\n // eslint-disable-next-line no-console\n console[level]('postrobot_send', message.type.replace(/^postrobot_message_/, ''), '::', message.name, '::', domain || CONSTANTS.WILDCARD, '\\n\\n', message);\n }\n\n if (win === window && !CONFIG.ALLOW_SAME_ORIGIN) {\n throw new Error('Attemping to send message to self');\n }\n\n if (isWindowClosed(win)) {\n throw new Error('Window is closed');\n }\n\n let messages = [];\n\n let serializedMessage = jsonStringify({\n [ CONSTANTS.WINDOW_PROPS.POSTROBOT ]: message\n }, null, 2);\n\n return ZalgoPromise.map(Object.keys(SEND_MESSAGE_STRATEGIES), strategyName => {\n\n return ZalgoPromise.try(() => {\n\n if (!CONFIG.ALLOWED_POST_MESSAGE_METHODS[strategyName]) {\n throw new Error(`Strategy disallowed: ${ strategyName }`);\n }\n\n return SEND_MESSAGE_STRATEGIES[strategyName](win, serializedMessage, domain);\n\n }).then(() => {\n messages.push(`${ strategyName }: success`);\n return true;\n }, err => {\n messages.push(`${ strategyName }: ${ stringifyError(err) }\\n`);\n return false;\n });\n\n }).then(results => {\n\n let success = results.some(Boolean);\n let status = `${ message.type } ${ message.name } ${ success ? 'success' : 'error' }:\\n - ${ messages.join('\\n - ') }\\n`;\n\n if (!success) {\n throw new Error(status);\n }\n });\n });\n}\n","/* @flow */\n\nimport { type ZalgoPromise } from 'zalgo-promise/src';\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { matchDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { global } from '../global';\nimport { isRegex } from '../lib';\nimport { CONSTANTS } from '../conf';\n\nexport function resetListeners() {\n global.responseListeners = {};\n global.requestListeners = {};\n}\n\nglobal.responseListeners = global.responseListeners || {};\nglobal.requestListeners = global.requestListeners || {};\nglobal.WINDOW_WILDCARD = global.WINDOW_WILDCARD || new (function WindowWildcard() { /* pass */ })();\n\nglobal.erroredResponseListeners = global.erroredResponseListeners || {};\n\nconst __DOMAIN_REGEX__ = '__domain_regex__';\n\nexport type RequestListenerType = {\n handler : ({ source : CrossDomainWindowType, origin : string, data : Object }) => (mixed | ZalgoPromise),\n handleError : (err : mixed) => void,\n window : ?CrossDomainWindowType,\n name : string,\n domain : string | RegExp | Array\n};\n\nexport type ResponseListenerType = {\n name : string,\n window : CrossDomainWindowType,\n domain : (string | Array | RegExp),\n respond : (err : ?mixed, result : ?Object) => void,\n ack? : ?boolean\n};\n\nexport function addResponseListener(hash : string, listener : ResponseListenerType) {\n global.responseListeners[hash] = listener;\n}\n\nexport function getResponseListener(hash : string) : ResponseListenerType {\n return global.responseListeners[hash];\n}\n\nexport function deleteResponseListener(hash : string) {\n delete global.responseListeners[hash];\n}\n\nexport function markResponseListenerErrored(hash : string) {\n global.erroredResponseListeners[hash] = true;\n}\n\nexport function isResponseListenerErrored(hash : string) : boolean {\n return Boolean(global.erroredResponseListeners[hash]);\n}\n\nexport function getRequestListener({ name, win, domain } : { name : string, win : ?CrossDomainWindowType, domain : ?(string | RegExp) }) : ?RequestListenerType {\n\n if (win === CONSTANTS.WILDCARD) {\n win = null;\n }\n\n if (domain === CONSTANTS.WILDCARD) {\n domain = null;\n }\n\n if (!name) {\n throw new Error(`Name required to get request listener`);\n }\n\n let nameListeners = global.requestListeners[name];\n\n if (!nameListeners) {\n return;\n }\n\n for (let winQualifier of [ win, global.WINDOW_WILDCARD ]) {\n\n let winListeners = winQualifier && nameListeners.get(winQualifier);\n\n if (!winListeners) {\n continue;\n }\n\n if (domain && typeof domain === 'string') {\n if (winListeners[domain]) {\n return winListeners[domain];\n }\n\n if (winListeners[__DOMAIN_REGEX__]) {\n for (let { regex, listener } of winListeners[__DOMAIN_REGEX__]) {\n if (matchDomain(regex, domain)) {\n return listener;\n }\n }\n }\n }\n\n if (winListeners[CONSTANTS.WILDCARD]) {\n return winListeners[CONSTANTS.WILDCARD];\n }\n }\n}\n\n// eslint-disable-next-line complexity\nexport function addRequestListener({ name, win, domain } : { name : string, win : ?CrossDomainWindowType, domain : ?(string | RegExp | Array) }, listener : RequestListenerType) : { cancel : () => void } {\n\n if (!name || typeof name !== 'string') {\n throw new Error(`Name required to add request listener`);\n }\n\n if (Array.isArray(win)) {\n let listenersCollection = [];\n\n for (let item of win) {\n listenersCollection.push(addRequestListener({ name, domain, win: item }, listener));\n }\n\n return {\n cancel() {\n for (let cancelListener of listenersCollection) {\n cancelListener.cancel();\n }\n }\n };\n }\n\n if (Array.isArray(domain)) {\n let listenersCollection = [];\n\n for (let item of domain) {\n listenersCollection.push(addRequestListener({ name, win, domain: item }, listener));\n }\n\n return {\n cancel() {\n for (let cancelListener of listenersCollection) {\n cancelListener.cancel();\n }\n }\n };\n }\n\n let existingListener = getRequestListener({ name, win, domain });\n\n if (!win || win === CONSTANTS.WILDCARD) {\n win = global.WINDOW_WILDCARD;\n }\n\n domain = domain || CONSTANTS.WILDCARD;\n\n if (existingListener) {\n if (win && domain) {\n throw new Error(`Request listener already exists for ${ name } on domain ${ domain.toString() } for ${ win === global.WINDOW_WILDCARD ? 'wildcard' : 'specified' } window`);\n } else if (win) {\n throw new Error(`Request listener already exists for ${ name } for ${ win === global.WINDOW_WILDCARD ? 'wildcard' : 'specified' } window`);\n } else if (domain) {\n throw new Error(`Request listener already exists for ${ name } on domain ${ domain.toString() }`);\n } else {\n throw new Error(`Request listener already exists for ${ name }`);\n }\n }\n\n let requestListeners = global.requestListeners;\n\n let nameListeners = requestListeners[name];\n\n if (!nameListeners) {\n nameListeners = new WeakMap();\n requestListeners[name] = nameListeners;\n }\n\n let winListeners = nameListeners.get(win);\n\n if (!winListeners) {\n winListeners = {};\n nameListeners.set(win, winListeners);\n }\n\n let strDomain = domain.toString();\n\n let regexListeners = winListeners[__DOMAIN_REGEX__];\n let regexListener;\n\n if (isRegex(domain)) {\n\n if (!regexListeners) {\n regexListeners = [];\n winListeners[__DOMAIN_REGEX__] = regexListeners;\n }\n\n regexListener = { regex: domain, listener };\n\n regexListeners.push(regexListener);\n\n } else {\n winListeners[strDomain] = listener;\n }\n\n return {\n cancel() {\n if (!winListeners) {\n return;\n }\n\n delete winListeners[strDomain];\n\n if (win && Object.keys(winListeners).length === 0) {\n nameListeners.delete(win);\n }\n\n if (regexListener) {\n regexListeners.splice(regexListeners.indexOf(regexListener, 1));\n }\n }\n\n };\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { isWindowClosed, matchDomain, stringifyDomainPattern, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONSTANTS } from '../../conf';\nimport { stringifyError, noop } from '../../lib';\nimport { sendMessage } from '../send';\nimport { getRequestListener, getResponseListener, deleteResponseListener, isResponseListenerErrored } from '../listeners';\n\nexport let RECEIVE_MESSAGE_TYPES = {\n\n [ CONSTANTS.POST_MESSAGE_TYPE.ACK ](source : CrossDomainWindowType, origin : string, message : Object) {\n\n if (isResponseListenerErrored(message.hash)) {\n return;\n }\n\n let options = getResponseListener(message.hash);\n\n if (!options) {\n throw new Error(`No handler found for post message ack for message: ${ message.name } from ${ origin } in ${ window.location.protocol }//${ window.location.host }${ window.location.pathname }`);\n }\n\n if (!matchDomain(options.domain, origin)) {\n throw new Error(`Ack origin ${ origin } does not match domain ${ options.domain.toString() }`);\n }\n\n options.ack = true;\n },\n\n [ CONSTANTS.POST_MESSAGE_TYPE.REQUEST ](source : CrossDomainWindowType, origin : string, message : Object) : ZalgoPromise {\n\n let options = getRequestListener({ name: message.name, win: source, domain: origin });\n\n function respond(data) : ZalgoPromise {\n\n if (message.fireAndForget || isWindowClosed(source)) {\n return ZalgoPromise.resolve();\n }\n\n return sendMessage(source, {\n target: message.originalSource,\n hash: message.hash,\n name: message.name,\n ...data\n }, origin);\n }\n\n return ZalgoPromise.all([\n\n respond({\n type: CONSTANTS.POST_MESSAGE_TYPE.ACK\n }),\n\n ZalgoPromise.try(() => {\n\n if (!options) {\n throw new Error(`No handler found for post message: ${ message.name } from ${ origin } in ${ window.location.protocol }//${ window.location.host }${ window.location.pathname }`);\n }\n\n if (!matchDomain(options.domain, origin)) {\n throw new Error(`Request origin ${ origin } does not match domain ${ options.domain.toString() }`);\n }\n\n let data = message.data;\n\n return options.handler({ source, origin, data });\n\n }).then(data => {\n\n return respond({\n type: CONSTANTS.POST_MESSAGE_TYPE.RESPONSE,\n ack: CONSTANTS.POST_MESSAGE_ACK.SUCCESS,\n data\n });\n\n }, err => {\n\n let error = stringifyError(err).replace(/^Error: /, '');\n // $FlowFixMe\n let code = err.code;\n\n return respond({\n type: CONSTANTS.POST_MESSAGE_TYPE.RESPONSE,\n ack: CONSTANTS.POST_MESSAGE_ACK.ERROR,\n error,\n code\n });\n })\n\n ]).then(noop).catch(err => {\n\n if (options && options.handleError) {\n return options.handleError(err);\n } else {\n throw err;\n }\n });\n },\n\n [ CONSTANTS.POST_MESSAGE_TYPE.RESPONSE ](source : CrossDomainWindowType, origin : string, message : Object) : void | ZalgoPromise {\n\n if (isResponseListenerErrored(message.hash)) {\n return;\n }\n\n let options = getResponseListener(message.hash);\n\n if (!options) {\n throw new Error(`No handler found for post message response for message: ${ message.name } from ${ origin } in ${ window.location.protocol }//${ window.location.host }${ window.location.pathname }`);\n }\n\n if (!matchDomain(options.domain, origin)) {\n throw new Error(`Response origin ${ origin } does not match domain ${ stringifyDomainPattern(options.domain) }`);\n }\n\n deleteResponseListener(message.hash);\n\n if (message.ack === CONSTANTS.POST_MESSAGE_ACK.ERROR) {\n let err = new Error(message.error);\n if (message.code) {\n // $FlowFixMe\n err.code = message.code;\n }\n return options.respond(err, null);\n } else if (message.ack === CONSTANTS.POST_MESSAGE_ACK.SUCCESS) {\n let data = message.data || message.response;\n\n return options.respond(null, { source, origin, data });\n }\n }\n};\n","/* @flow */\n\nimport { isWindowClosed, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONSTANTS, POST_MESSAGE_NAMES_LIST } from '../../conf';\nimport { deserializeMethods, jsonParse, addEventListener, noop } from '../../lib';\nimport { global } from '../../global';\n\nimport { RECEIVE_MESSAGE_TYPES } from './types';\n\nglobal.receivedMessages = global.receivedMessages || [];\n\ntype MessageEvent = {\n source : CrossDomainWindowType,\n origin : string,\n data : string\n};\n\nfunction parseMessage(message : string) : ?Object {\n\n let parsedMessage;\n\n try {\n parsedMessage = jsonParse(message);\n } catch (err) {\n return;\n }\n\n if (!parsedMessage) {\n return;\n }\n\n if (typeof parsedMessage !== 'object' || parsedMessage === null) {\n return;\n }\n\n parsedMessage = parsedMessage[CONSTANTS.WINDOW_PROPS.POSTROBOT];\n\n if (!parsedMessage || typeof parsedMessage !== 'object' || parsedMessage === null) {\n return;\n }\n\n if (!parsedMessage.type || typeof parsedMessage.type !== 'string') {\n return;\n }\n\n if (!RECEIVE_MESSAGE_TYPES[parsedMessage.type]) {\n return;\n }\n\n return parsedMessage;\n}\n\n\nexport function receiveMessage(event : MessageEvent) {\n\n if (!window || window.closed) {\n return;\n }\n\n try {\n if (!event.source) {\n return;\n }\n } catch (err) {\n return;\n }\n\n let { source, origin, data } = event;\n\n let message = parseMessage(data);\n\n if (!message) {\n return;\n }\n\n if (!message.sourceDomain || typeof message.sourceDomain !== 'string') {\n throw new Error(`Expected message to have sourceDomain`);\n }\n\n if (message.sourceDomain.indexOf(CONSTANTS.MOCK_PROTOCOL) === 0 || message.sourceDomain.indexOf(CONSTANTS.FILE_PROTOCOL) === 0) {\n origin = message.sourceDomain;\n }\n\n if (global.receivedMessages.indexOf(message.id) === -1) {\n global.receivedMessages.push(message.id);\n } else {\n return;\n }\n\n if (__DEBUG__) {\n let level;\n\n if (POST_MESSAGE_NAMES_LIST.indexOf(message.name) !== -1 || message.type === CONSTANTS.POST_MESSAGE_TYPE.ACK) {\n level = 'debug';\n } else if (message.ack === 'error') {\n level = 'error';\n } else {\n level = 'info';\n }\n \n // eslint-disable-next-line no-console\n console[level]('postrobot_receive', message.type.replace(/^postrobot_message_/, ''), '::', message.name, '::', origin, '\\n\\n', message);\n }\n\n if (isWindowClosed(source) && !message.fireAndForget) {\n return;\n }\n\n if (message.data) {\n message.data = deserializeMethods(source, origin, message.data);\n }\n\n RECEIVE_MESSAGE_TYPES[message.type](source, origin, message);\n}\n\nexport function messageListener(event : { source : CrossDomainWindowType, origin : string, data : string, sourceElement : CrossDomainWindowType, originalEvent? : { origin : string } }) {\n\n try {\n noop(event.source);\n } catch (err) {\n return;\n }\n\n // $FlowFixMe\n let messageEvent : MessageEvent = {\n source: event.source || event.sourceElement,\n origin: event.origin || (event.originalEvent && event.originalEvent.origin),\n data: event.data\n };\n\n if (__POST_ROBOT__.__IE_POPUP_SUPPORT__) {\n try {\n require('../../compat').emulateIERestrictions(messageEvent.source, window);\n } catch (err) {\n return;\n }\n }\n\n receiveMessage(messageEvent);\n}\n\nexport function listenForMessages() {\n addEventListener(window, 'message', messageListener);\n}\n\nglobal.receiveMessage = receiveMessage;\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getAncestor, isAncestor, isWindowClosed, getDomain, matchDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONFIG, CONSTANTS } from '../conf';\nimport { sendMessage, addResponseListener, deleteResponseListener, markResponseListenerErrored, type ResponseListenerType } from '../drivers';\nimport { uniqueID, onChildWindowReady, sayHello, isRegex } from '../lib';\nimport { global } from '../global';\n\nglobal.requestPromises = global.requestPromises || new WeakMap();\n\ntype WindowResolverType = CrossDomainWindowType | string | HTMLIFrameElement;\n\ntype RequestOptionsType = {\n window? : ?WindowResolverType,\n domain? : ?(string | Array | RegExp),\n name? : ?string,\n data? : ?Object,\n fireAndForget? : ?boolean,\n timeout? : ?number\n};\n\ntype ResponseMessageEvent = {\n source : CrossDomainWindowType,\n origin : string,\n data : Object\n};\n\nexport function request(options : RequestOptionsType) : ZalgoPromise {\n\n let prom = ZalgoPromise.try(() => {\n\n if (!options.name) {\n throw new Error('Expected options.name');\n }\n\n let name = options.name;\n let targetWindow : ?CrossDomainWindowType;\n let domain : string | Array | RegExp;\n\n if (typeof options.window === 'string') {\n let el = document.getElementById(options.window);\n\n if (!el) {\n throw new Error(`Expected options.window ${ Object.prototype.toString.call(options.window) } to be a valid element id`);\n }\n\n if (el.tagName.toLowerCase() !== 'iframe') {\n throw new Error(`Expected options.window ${ Object.prototype.toString.call(options.window) } to be an iframe`);\n }\n\n // $FlowFixMe\n if (!el.contentWindow) {\n throw new Error('Iframe must have contentWindow. Make sure it has a src attribute and is in the DOM.');\n }\n\n // $FlowFixMe\n targetWindow = el.contentWindow;\n\n } else if (options.window instanceof HTMLIFrameElement) {\n\n if (options.window.tagName.toLowerCase() !== 'iframe') {\n throw new Error(`Expected options.window ${ Object.prototype.toString.call(options.window) } to be an iframe`);\n }\n\n if (options.window && !options.window.contentWindow) {\n throw new Error('Iframe must have contentWindow. Make sure it has a src attribute and is in the DOM.');\n }\n\n if (options.window && options.window.contentWindow) {\n // $FlowFixMe\n targetWindow = options.window.contentWindow;\n }\n } else {\n targetWindow = options.window;\n }\n\n if (!targetWindow) {\n throw new Error('Expected options.window to be a window object, iframe, or iframe element id.');\n }\n\n const win = targetWindow;\n\n domain = options.domain || CONSTANTS.WILDCARD;\n\n let hash = `${ options.name }_${ uniqueID() }`;\n\n if (isWindowClosed(win)) {\n throw new Error('Target window is closed');\n }\n\n let hasResult = false;\n\n let requestPromises = global.requestPromises.get(win);\n\n if (!requestPromises) {\n requestPromises = [];\n global.requestPromises.set(win, requestPromises);\n }\n\n let requestPromise = ZalgoPromise.try(() => {\n\n if (isAncestor(window, win)) {\n return onChildWindowReady(win, options.timeout || CONFIG.CHILD_WINDOW_TIMEOUT);\n }\n\n }).then(({ origin } = {}) => {\n\n if (isRegex(domain) && !origin) {\n return sayHello(win);\n }\n\n }).then(({ origin } = {}) => {\n\n if (isRegex(domain)) {\n if (!matchDomain(domain, origin)) {\n throw new Error(`Remote window domain ${ origin } does not match regex: ${ domain.toString() }`);\n }\n\n domain = origin;\n }\n\n if (typeof domain !== 'string' && !Array.isArray(domain)) {\n throw new TypeError(`Expected domain to be a string or array`);\n }\n\n const actualDomain = domain;\n\n return new ZalgoPromise((resolve, reject) => {\n\n let responseListener : ResponseListenerType;\n\n if (!options.fireAndForget) {\n responseListener = {\n name,\n window: win,\n domain: actualDomain,\n respond(err, result) {\n if (!err) {\n hasResult = true;\n requestPromises.splice(requestPromises.indexOf(requestPromise, 1));\n }\n\n if (err) {\n reject(err);\n } else {\n resolve(result);\n }\n }\n };\n\n addResponseListener(hash, responseListener);\n }\n\n sendMessage(win, {\n type: CONSTANTS.POST_MESSAGE_TYPE.REQUEST,\n hash,\n name,\n data: options.data,\n fireAndForget: options.fireAndForget\n }, actualDomain).catch(reject);\n\n if (options.fireAndForget) {\n return resolve();\n }\n\n let ackTimeout = CONFIG.ACK_TIMEOUT;\n let resTimeout = options.timeout || CONFIG.RES_TIMEOUT;\n\n let cycleTime = 100;\n\n let cycle = () => {\n\n if (hasResult) {\n return;\n }\n\n if (isWindowClosed(win)) {\n\n if (!responseListener.ack) {\n return reject(new Error(`Window closed for ${ name } before ack`));\n }\n\n return reject(new Error(`Window closed for ${ name } before response`));\n }\n\n ackTimeout = Math.max(ackTimeout - cycleTime, 0);\n if (resTimeout !== -1) {\n resTimeout = Math.max(resTimeout - cycleTime, 0);\n }\n\n let hasAck = responseListener.ack;\n\n if (hasAck) {\n\n if (resTimeout === -1) {\n return;\n }\n\n cycleTime = Math.min(resTimeout, 2000);\n\n } else if (ackTimeout === 0) {\n return reject(new Error(`No ack for postMessage ${ name } in ${ getDomain() } in ${ CONFIG.ACK_TIMEOUT }ms`));\n\n } else if (resTimeout === 0) {\n return reject(new Error(`No response for postMessage ${ name } in ${ getDomain() } in ${ options.timeout || CONFIG.RES_TIMEOUT }ms`));\n }\n\n setTimeout(cycle, cycleTime);\n };\n\n setTimeout(cycle, cycleTime);\n });\n });\n\n requestPromise.catch(() => {\n markResponseListenerErrored(hash);\n deleteResponseListener(hash);\n });\n\n requestPromises.push(requestPromise);\n\n return requestPromise;\n });\n\n return prom;\n}\n\nexport function send(window : WindowResolverType, name : string, data : ?Object, options : ?RequestOptionsType) : ZalgoPromise {\n\n options = options || {};\n options.window = window;\n options.name = name;\n options.data = data;\n\n return request(options);\n}\n\nexport function sendToParent(name : string, data : ?Object, options : ?RequestOptionsType) : ZalgoPromise {\n\n let win = getAncestor();\n\n if (!win) {\n return new ZalgoPromise((resolve, reject) => reject(new Error('Window does not have a parent')));\n }\n\n return send(win, name, data, options);\n}\n\nexport function client(options : RequestOptionsType = {}) : { send : (string, ?Object) => ZalgoPromise } {\n\n if (!options.window) {\n throw new Error(`Expected options.window`);\n }\n\n const win = options.window;\n\n return {\n send(name : string, data : ?Object) : ZalgoPromise {\n return send(win, name, data, options);\n }\n };\n}\n\nglobal.send = send;\n","/* @flow */\n\nimport { isWindowClosed, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { once as onceFunction, safeInterval } from '../lib';\nimport { addRequestListener, type RequestListenerType } from '../drivers';\nimport { CONSTANTS } from '../conf';\nimport { global } from '../global';\n\ntype ErrorHandlerType = (err : mixed) => void;\ntype HandlerType = ({ source : CrossDomainWindowType, origin : string, data : Object }) => (void | mixed | ZalgoPromise);\n\ntype ServerOptionsType = {\n handler? : ?HandlerType,\n errorHandler? : ?ErrorHandlerType,\n window? : CrossDomainWindowType,\n name? : ?string,\n domain? : ?(string | RegExp | Array),\n once? : ?boolean,\n errorOnClose? : ?boolean\n};\n\nexport function listen(options : ServerOptionsType) : { cancel : () => void } {\n\n if (!options.name) {\n throw new Error('Expected options.name');\n }\n\n if (!options.handler) {\n throw new Error('Expected options.handler');\n }\n\n const name = options.name;\n const win = options.window;\n const domain = options.domain;\n\n let listenerOptions : RequestListenerType = {\n handler: options.handler,\n handleError: options.errorHandler || (err => {\n throw err;\n }),\n window: win,\n domain: domain || CONSTANTS.WILDCARD,\n name\n };\n\n let requestListener = addRequestListener({ name, win, domain }, listenerOptions);\n\n if (options.once) {\n let handler = listenerOptions.handler;\n listenerOptions.handler = onceFunction(function listenOnce() : mixed | ZalgoPromise {\n requestListener.cancel();\n return handler.apply(this, arguments);\n });\n }\n\n if (listenerOptions.window && options.errorOnClose) {\n let interval = safeInterval(() => {\n if (win && typeof win === 'object' && isWindowClosed(win)) {\n interval.cancel();\n listenerOptions.handleError(new Error('Post message target window is closed'));\n }\n }, 50);\n }\n\n return {\n cancel() {\n requestListener.cancel();\n }\n };\n}\n\nexport function on(name : string, options : ServerOptionsType | HandlerType, handler : ?HandlerType) : { cancel : () => void } {\n\n if (typeof options === 'function') {\n handler = options;\n options = {};\n }\n\n options = options || {};\n\n options.name = name;\n options.handler = handler || options.handler;\n\n return listen(options);\n}\n\nexport function once(name : string, options : ?(ServerOptionsType | HandlerType) = {}, handler : ?HandlerType) : ZalgoPromise<{ source : mixed, origin : string, data : Object }> {\n\n if (typeof options === 'function') {\n handler = options;\n options = {};\n }\n\n options = options || {};\n handler = handler || options.handler;\n let errorHandler = options.errorHandler;\n\n let promise = new ZalgoPromise((resolve, reject) => {\n\n options = options || {};\n\n options.name = name;\n options.once = true;\n\n options.handler = (event) => {\n resolve(event);\n if (handler) {\n return handler(event);\n }\n };\n\n options.errorHandler = (err) => {\n reject(err);\n if (errorHandler) {\n return errorHandler(err);\n }\n };\n });\n\n let onceListener = listen(options);\n promise.cancel = onceListener.cancel;\n\n return promise;\n}\n\nexport function listener(options : ServerOptionsType = {}) : { on : (name : string, handler : HandlerType) => { cancel : () => void } } {\n\n return {\n on(name : string, handler : HandlerType) : { cancel : () => void } {\n return on(name, options, handler);\n }\n };\n}\n\nglobal.on = on;\n","/* @flow */\n\nimport { CONSTANTS } from '../conf';\nimport { messageListener } from '../drivers';\n\nexport { CONFIG, CONSTANTS } from '../conf';\n\nexport function disable() {\n delete window[CONSTANTS.WINDOW_PROPS.POSTROBOT];\n window.removeEventListener('message', messageListener);\n}\n","/* @flow */\n\nimport { getAncestor } from 'cross-domain-utils/src';\n\nexport * from './client';\nexport * from './server';\nexport * from './config';\n\nexport let parent = getAncestor();\n","/* @flow */\n\nimport { type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { global } from './global';\n\nexport function cleanUpWindow(win : CrossDomainWindowType) {\n\n // global.tunnelWindows\n // global.bridges\n // global.popupWindowsByName\n // global.responseListeners\n // global.requestListeners\n\n let requestPromises = global.requestPromises.get(win);\n\n if (requestPromises) {\n for (let promise of requestPromises) {\n promise.reject(new Error(`No response from window - cleaned up`));\n }\n }\n\n if (global.popupWindowsByWin) {\n global.popupWindowsByWin.delete(win);\n }\n\n if (global.remoteWindows) {\n global.remoteWindows.delete(win);\n }\n\n global.requestPromises.delete(win);\n global.methods.delete(win);\n global.readyPromises.delete(win);\n}\n","/* @flow */\n\nimport { initOnReady, listenForMethods } from './lib';\nimport { listenForMessages } from './drivers';\nimport { global } from './global';\nimport { on, send } from './public';\n\nexport * from './public';\nexport { cleanUpWindow } from './clean';\nexport { ZalgoPromise as Promise } from 'zalgo-promise/src';\nexport let bridge = __POST_ROBOT__.__IE_POPUP_SUPPORT__ ? require('./bridge/interface') : null;\n\nexport function init() {\n if (!global.initialized) {\n listenForMessages();\n\n if (__POST_ROBOT__.__IE_POPUP_SUPPORT__) {\n require('./bridge').openTunnelToOpener();\n }\n\n initOnReady();\n listenForMethods({ on, send });\n }\n\n global.initialized = true;\n}\n\ninit();\n","/* @flow */\n\n// eslint-disable-next-line import/no-namespace\nimport * as INTERFACE from './interface';\n\nexport * from './interface';\nexport default INTERFACE;\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { isPopup, isIframe, getUserAgent } from 'cross-domain-utils/src';\n\nimport { CONFIG, CONSTANTS } from '../conf';\n\n\nexport function stringifyError(err : mixed, level : number = 1) : string {\n\n if (level >= 3) {\n return 'stringifyError stack overflow';\n }\n\n try {\n if (!err) {\n return ``;\n }\n\n if (typeof err === 'string') {\n return err;\n }\n\n if (err instanceof Error) {\n let stack = err && err.stack;\n let message = err && err.message;\n\n if (stack && message) {\n if (stack.indexOf(message) !== -1) {\n return stack;\n } else {\n return `${ message }\\n${ stack }`;\n }\n } else if (stack) {\n return stack;\n } else if (message) {\n return message;\n }\n }\n\n if (typeof err.toString === 'function') {\n return err.toString();\n }\n\n return Object.prototype.toString.call(err);\n\n } catch (newErr) { // eslint-disable-line unicorn/catch-error-name\n return `Error while stringifying error: ${ stringifyError(newErr, level + 1) }`;\n }\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport let once = (method : Function) : ((...args : Array) => T | void) => {\n if (!method) {\n return method;\n }\n let called = false;\n return function onceWrapper() : T | void {\n if (!called) {\n called = true;\n return method.apply(this, arguments);\n }\n };\n};\n\n// eslint-disable-next-line no-unused-vars\nexport function noop(...args : Array) {\n // pass\n}\n\nexport function addEventListener(obj : Object, event : string, handler : Function) : { cancel : () => void } {\n if (obj.addEventListener) {\n obj.addEventListener(event, handler);\n } else {\n obj.attachEvent(`on${ event }`, handler);\n }\n\n return {\n cancel() {\n if (obj.removeEventListener) {\n obj.removeEventListener(event, handler);\n } else {\n obj.detachEvent(`on${ event }`, handler);\n }\n }\n };\n}\n\nexport function uniqueID() : string {\n\n let chars = '0123456789abcdef';\n\n return 'xxxxxxxxxx'.replace(/./g, () => {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n });\n}\n\ntype MixedArrayType = Array;\n\nexport function eachArray(item : MixedArrayType, callback : (item : mixed, key : number) => mixed) {\n for (let i = 0; i < item.length; i++) {\n callback(item[i], i);\n }\n}\n\nexport function eachObject(item : Object, callback : (item : mixed, key : string) => mixed) {\n for (let key in item) {\n if (item.hasOwnProperty(key)) {\n callback(item[key], key);\n }\n }\n}\n\nexport function each(item : T, callback : (item : mixed, key : number | string) => mixed) {\n if (Array.isArray(item)) {\n eachArray(item, callback);\n } else if (typeof item === 'object' && item !== null) {\n eachObject(item, callback);\n }\n}\n\nexport function replaceObject(item : T, callback : (item : mixed, key : number | string) => mixed, depth : number = 1) : T {\n\n if (depth >= 100) {\n throw new Error(`Self-referential object passed, or object contained too many layers`);\n }\n\n let newobj;\n\n if (typeof item === 'object' && item !== null && !Array.isArray(item)) {\n newobj = {};\n } else if (Array.isArray(item)) {\n newobj = [];\n } else {\n throw new TypeError(`Invalid type: ${ typeof item }`);\n }\n\n each(item, (childItem, key) => {\n\n let result = callback(childItem, key);\n\n if (typeof result !== 'undefined') {\n // $FlowFixMe\n newobj[key] = result;\n } else if (typeof childItem === 'object' && childItem !== null) {\n // $FlowFixMe\n newobj[key] = replaceObject(childItem, callback, depth + 1);\n } else {\n // $FlowFixMe\n newobj[key] = childItem;\n }\n });\n\n // $FlowFixMe\n return newobj;\n}\n\nexport function safeInterval(method : Function, time : number) : { cancel : () => void } {\n let timeout;\n\n function runInterval() {\n timeout = setTimeout(runInterval, time);\n method.call();\n }\n\n timeout = setTimeout(runInterval, time);\n\n return {\n cancel() {\n clearTimeout(timeout);\n }\n };\n}\n\nexport function isRegex(item : mixed) : boolean {\n return Object.prototype.toString.call(item) === '[object RegExp]';\n}\n\n\ntype FunctionProxy = (method : T) => T;\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport let weakMapMemoize : FunctionProxy<*> = (method : (arg : any) => R) : ((...args : Array) => R) => {\n\n let weakmap = new WeakMap();\n\n // eslint-disable-next-line flowtype/no-weak-types\n return function weakmapMemoized(arg : any) : R {\n let result = weakmap.get(arg);\n\n if (typeof result !== 'undefined') {\n return result;\n }\n\n result = method.call(this, arg);\n\n if (typeof result !== 'undefined') {\n weakmap.set(arg, result);\n }\n\n return result;\n };\n};\n\nexport function getWindowType() : string {\n if (isPopup()) {\n return CONSTANTS.WINDOW_TYPES.POPUP;\n }\n if (isIframe()) {\n return CONSTANTS.WINDOW_TYPES.IFRAME;\n }\n return CONSTANTS.WINDOW_TYPES.FULLPAGE;\n}\n\nexport function jsonStringify(obj : T, replacer : ?Function, indent : number | void) : string {\n\n let objectToJSON;\n let arrayToJSON;\n\n try {\n if (JSON.stringify({}) !== '{}') {\n // $FlowFixMe\n objectToJSON = Object.prototype.toJSON;\n // $FlowFixMe\n delete Object.prototype.toJSON;\n }\n\n if (JSON.stringify({}) !== '{}') {\n throw new Error(`Can not correctly serialize JSON objects`);\n }\n\n if (JSON.stringify([]) !== '[]') {\n // $FlowFixMe\n arrayToJSON = Array.prototype.toJSON;\n // $FlowFixMe\n delete Array.prototype.toJSON;\n }\n\n if (JSON.stringify([]) !== '[]') {\n throw new Error(`Can not correctly serialize JSON objects`);\n }\n\n } catch (err) {\n throw new Error(`Can not repair JSON.stringify: ${ err.message }`);\n }\n\n let result = JSON.stringify.call(this, obj, replacer, indent);\n\n try {\n if (objectToJSON) {\n // $FlowFixMe\n Object.prototype.toJSON = objectToJSON; // eslint-disable-line no-extend-native\n }\n\n if (arrayToJSON) {\n // $FlowFixMe\n Array.prototype.toJSON = arrayToJSON; // eslint-disable-line no-extend-native\n }\n\n } catch (err) {\n throw new Error(`Can not repair JSON.stringify: ${ err.message }`);\n }\n\n\n return result;\n}\n\nexport function jsonParse(item : string) : mixed {\n return JSON.parse(item);\n}\n \nexport function needsGlobalMessagingForBrowser() : boolean {\n\n if (getUserAgent(window).match(/MSIE|trident|edge\\/12|edge\\/13/i)) {\n return true;\n }\n \n if (!CONFIG.ALLOW_POSTMESSAGE_POPUP) {\n return true;\n }\n \n return false;\n}\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { matchDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { CONSTANTS } from '../conf';\nimport { global } from '../global';\n\nimport { once, uniqueID, replaceObject, stringifyError, isRegex } from './util';\n\nglobal.methods = global.methods || new WeakMap();\n\nexport let listenForMethods = once(() => {\n global.on(CONSTANTS.POST_MESSAGE_NAMES.METHOD, { origin: CONSTANTS.WILDCARD }, ({ source, origin, data } : { source : CrossDomainWindowType, origin : string, data : Object }) => {\n\n let methods = global.methods.get(source);\n\n if (!methods) {\n throw new Error(`Could not find any methods this window has privileges to call`);\n }\n\n let meth = methods[data.id];\n\n if (!meth) {\n throw new Error(`Could not find method with id: ${ data.id }`);\n }\n\n if (!matchDomain(meth.domain, origin)) {\n throw new Error(`Method domain ${ meth.domain } does not match origin ${ origin }`);\n }\n\n return ZalgoPromise.try(() => {\n return meth.method.apply({ source, origin, data }, data.args);\n\n }).then(result => {\n\n return {\n result,\n id: data.id,\n name: data.name\n };\n });\n });\n});\n\nfunction isSerialized(item : mixed, type : string) : boolean {\n return typeof item === 'object' && item !== null && item.__type__ === type;\n}\n\ntype SerializedMethod = {\n __type__ : string,\n __id__ : string,\n __name__ : string\n};\n\nexport function serializeMethod(destination : CrossDomainWindowType, domain : string | Array, method : Function, name : string) : SerializedMethod {\n\n let id = uniqueID();\n\n let methods = global.methods.get(destination);\n\n if (!methods) {\n methods = {};\n global.methods.set(destination, methods);\n }\n\n methods[id] = { domain, method };\n\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.METHOD,\n __id__: id,\n __name__: name\n };\n}\n\ntype SerializedError = {\n __type__ : string,\n __message__ : string\n};\n\nfunction serializeError(err : mixed) : SerializedError {\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.ERROR,\n __message__: stringifyError(err),\n // $FlowFixMe\n __code__: err.code\n };\n}\n\ntype SerializePromise = {\n __type__ : string,\n __then__ : SerializedMethod\n};\n\nfunction serializePromise(destination : CrossDomainWindowType, domain : string | Array, promise : ZalgoPromise, name : string) : SerializePromise {\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.PROMISE,\n __then__: serializeMethod(destination, domain, (resolve, reject) => promise.then(resolve, reject), `${ name }.then`)\n };\n}\n\nfunction serializeZalgoPromise(destination : CrossDomainWindowType, domain : string | Array, promise : ZalgoPromise, name : string) : SerializePromise {\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.ZALGO_PROMISE,\n __then__: serializeMethod(destination, domain, (resolve, reject) => promise.then(resolve, reject), `${ name }.then`)\n };\n}\n\ntype SerializedRegex = {\n __type__ : string,\n __source__ : string\n};\n\nfunction serializeRegex(regex : RegExp) : SerializedRegex {\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.REGEX,\n __source__: regex.source\n };\n}\n\nexport function serializeMethods(destination : CrossDomainWindowType, domain : string | Array, obj : Object) : Object {\n\n return replaceObject({ obj }, (item, key) => {\n if (typeof item === 'function') {\n return serializeMethod(destination, domain, item, key.toString());\n }\n\n if (item instanceof Error) {\n return serializeError(item);\n }\n\n if (window.Promise && item instanceof window.Promise) {\n return serializePromise(destination, domain, item, key.toString());\n }\n\n if (ZalgoPromise.isPromise(item)) {\n // $FlowFixMe\n return serializeZalgoPromise(destination, domain, item, key.toString());\n }\n\n if (isRegex(item)) {\n // $FlowFixMe\n return serializeRegex(item);\n }\n }).obj;\n}\n\nexport function deserializeMethod(source : CrossDomainWindowType, origin : string, obj : Object) : Function {\n\n function wrapper() : ZalgoPromise {\n let args = Array.prototype.slice.call(arguments);\n return global.send(source, CONSTANTS.POST_MESSAGE_NAMES.METHOD, {\n id: obj.__id__,\n name: obj.__name__,\n args\n\n }, { domain: origin, timeout: -1 }).then(({ data }) => {\n return data.result;\n }, err => {\n throw err;\n });\n }\n\n wrapper.__name__ = obj.__name__;\n wrapper.__xdomain__ = true;\n\n wrapper.source = source;\n wrapper.origin = origin;\n\n return wrapper;\n}\n\nexport function deserializeError(source : CrossDomainWindowType, origin : string, obj : Object) : Error {\n let err = new Error(obj.__message__);\n if (obj.__code__) {\n // $FlowFixMe\n err.code = obj.__code__;\n }\n return err;\n}\n\nexport function deserializeZalgoPromise(source : CrossDomainWindowType, origin : string, prom : Object) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => deserializeMethod(source, origin, prom.__then__)(resolve, reject));\n}\n\nexport function deserializePromise(source : CrossDomainWindowType, origin : string, prom : Object) : ZalgoPromise {\n if (!window.Promise) {\n return deserializeZalgoPromise(source, origin, prom);\n }\n\n return new window.Promise((resolve, reject) => deserializeMethod(source, origin, prom.__then__)(resolve, reject));\n}\n\nexport function deserializeRegex(source : CrossDomainWindowType, origin : string, item : Object) : RegExp {\n // eslint-disable-next-line security/detect-non-literal-regexp\n return new RegExp(item.__source__);\n}\n\nexport function deserializeMethods(source : CrossDomainWindowType, origin : string, obj : Object) : Object {\n\n return replaceObject({ obj }, (item) => {\n if (typeof item !== 'object' || item === null) {\n return;\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.METHOD)) {\n return deserializeMethod(source, origin, item);\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.ERROR)) {\n return deserializeError(source, origin, item);\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.PROMISE)) {\n return deserializePromise(source, origin, item);\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.ZALGO_PROMISE)) {\n return deserializeZalgoPromise(source, origin, item);\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.REGEX)) {\n return deserializeRegex(source, origin, item);\n }\n\n }).obj;\n}\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { getAncestor, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { CONSTANTS } from '../conf';\nimport { global } from '../global';\n\nimport { noop } from './util';\n\nglobal.readyPromises = global.readyPromises || new WeakMap();\n\nexport function onHello(handler : ({ source? : CrossDomainWindowType, origin? : string }) => void) {\n global.on(CONSTANTS.POST_MESSAGE_NAMES.HELLO, { domain: CONSTANTS.WILDCARD }, ({ source, origin }) => {\n return handler({ source, origin });\n });\n}\n\nexport function sayHello(win : CrossDomainWindowType) : ZalgoPromise<{ origin : string }> {\n return global.send(win, CONSTANTS.POST_MESSAGE_NAMES.HELLO, {}, { domain: CONSTANTS.WILDCARD, timeout: -1 })\n .then(({ origin }) => {\n return { origin };\n });\n}\n\nexport function initOnReady() {\n\n onHello(({ source, origin }) => {\n let promise = global.readyPromises.get(source) || new ZalgoPromise();\n promise.resolve({ origin });\n global.readyPromises.set(source, promise);\n });\n\n let parent = getAncestor();\n if (parent) {\n sayHello(parent).catch(noop);\n }\n}\n\nexport function onChildWindowReady(win : mixed, timeout : number = 5000, name : string = 'Window') : ZalgoPromise<{ origin : string }> {\n\n let promise = global.readyPromises.get(win);\n\n if (promise) {\n return promise;\n }\n\n promise = new ZalgoPromise();\n global.readyPromises.set(win, promise);\n\n if (timeout !== -1) {\n setTimeout(() => promise.reject(new Error(`${ name } did not load after ${ timeout }ms`)), timeout);\n }\n\n return promise;\n}\n","/* @flow */\n\nexport * from './util';\nexport * from './serialize';\nexport * from './ready';\n","/* @flow */\n\nimport { on, send, bridge } from 'post-robot/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport type { CrossDomainWindowType, SameDomainWindowType } from 'cross-domain-utils/src';\n\nimport { isPayPalDomain, noop, getScriptVersion, extendUrl } from '../lib';\nimport { config } from '../config';\n\nfunction match(str : string, pattern : RegExp) : ?string {\n const regmatch : ?$ReadOnlyArray = str.match(pattern);\n if (regmatch) {\n return regmatch[1];\n }\n}\n\nlet onAuthorize : ?Function;\n\n// Post-Bridge\n\nif (isPayPalDomain()) {\n on('onLegacyPaymentAuthorize', { window: window.parent }, ({ data } : { data : { method : Function } }) => {\n onAuthorize = data.method;\n });\n}\n\n// Button / Merchant\n\nexport function onLegacyPaymentAuthorize(method : Function) : ZalgoPromise {\n onAuthorize = method;\n\n return ZalgoPromise.try(() => {\n if (bridge && !isPayPalDomain()) {\n return bridge.openBridge(extendUrl(config.postBridgeUrl, { version: getScriptVersion() }), config.postBridgeDomain).then((postBridge : CrossDomainWindowType) => {\n return send(postBridge, 'onLegacyPaymentAuthorize', { method }, { domain: config.paypalDomain })\n .then(noop);\n });\n }\n });\n}\n\nwindow.onLegacyPaymentAuthorize = onLegacyPaymentAuthorize;\n\n// Post-Bridge / Button\n\nwindow.watchForLegacyFallback = (win : SameDomainWindowType) => {\n const interval = setInterval(() => {\n try {\n const isLegacy = (win.document.body.innerHTML.indexOf('merchantpaymentweb') !== -1 ||\n win.document.body.innerHTML.indexOf('wapapp') !== -1);\n\n if (!isLegacy || win.ppxoWatching || win.closed) {\n return;\n }\n\n win.ppxoWatching = true;\n\n const XMLHttpRequestsend = win.XMLHttpRequest.prototype.send;\n\n win.XMLHttpRequest.prototype.send = function overrideXMLHttpRequestSend() : void {\n\n if (this._patched) {\n return XMLHttpRequestsend.apply(this, arguments);\n }\n\n this._patched = true;\n\n const self = this;\n let onload = this.onload;\n\n function listener() : void {\n\n if (self.readyState === self.DONE && self.status === 200 && self.responseText) {\n\n try {\n const response = JSON.parse(self.responseText.replace('while (1);', ''));\n\n if (response.type === 'redirect' && response.url && onAuthorize) {\n\n const url = response.url;\n\n clearInterval(interval);\n win.close();\n\n onAuthorize({\n returnUrl: url,\n paymentToken: match(url, /token=((EC-)?[A-Z0-9]+)/),\n billingToken: match(url, /ba_token=((BA-)?[A-Z0-9]+)/),\n payerID: match(url, /PayerID=([A-Z0-9]+)/),\n paymentID: match(url, /paymentId=((PAY-)?[A-Z0-9]+)/)\n });\n\n onAuthorize = null;\n\n if (win.PAYPAL && win.PAYPAL.Checkout && win.PAYPAL.Checkout.XhrResponse && win.PAYPAL.Checkout.XhrResponse.RESPONSE_TYPES) {\n Object.defineProperty(win.PAYPAL.Checkout.XhrResponse.RESPONSE_TYPES, 'Redirect', {\n value: Math.random().toString()\n });\n }\n\n if (win.mob && win.mob.Xhr && win.mob.Xhr.prototype._xhrOnReady) {\n win.mob.Xhr.prototype._xhrOnReady = noop;\n }\n }\n\n } catch (err) {\n return;\n }\n }\n\n if (onload) {\n return onload.apply(this, arguments);\n }\n }\n\n if (this.onload !== listener) {\n\n try {\n\n delete this.onload;\n this.addEventListener('load', listener);\n\n // $FlowFixMe\n Object.defineProperty(this, 'onload', {\n get() : Function {\n return listener;\n },\n set(handler) {\n onload = handler;\n }\n });\n\n } catch (err) {\n\n // pass\n }\n\n }\n\n return XMLHttpRequestsend.apply(this, arguments);\n };\n\n } catch (err) {\n // pass\n }\n }, 100);\n};\n\n\nwindow.onLegacyFallback = window.watchForLegacyFallback;\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { info, track, warn, flush as flushLogs, immediateFlush } from 'beaver-logger/client';\nimport { create, CONSTANTS, PopupOpenError } from 'zoid/src';\nimport { type Component } from 'zoid/src/component/component';\nimport type { CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { base64encode } from 'belter/src';\n\nimport { isDevice, request, getQueryParam, redirect as redir, patchMethod,\n setLogLevel, getSessionID, getBrowserLocale, supportsPopups, memoize,\n getDomainSetting, getScriptVersion, getButtonSessionID, isPayPalDomain,\n isEligible, getCurrentScriptUrl } from '../lib';\nimport { config } from '../config';\nimport { ENV, FPTI, PAYMENT_TYPE, CHECKOUT_OVERLAY_COLOR, ATTRIBUTE } from '../constants';\nimport { onLegacyPaymentAuthorize } from '../compat';\nimport { determineParameterFromToken, determineUrl } from '../integrations';\n\nimport { containerTemplate, componentTemplate } from './template';\n\nfunction addHeader(name, value) : void {\n\n if (!window.$Api) {\n return;\n }\n\n if (window.$Api.addHeader) {\n return window.$Api.addHeader(name, value);\n }\n}\n\n// eslint-disable-next-line flowtype/require-exact-type\ntype CheckoutPropsType = {\n payment? : () => ZalgoPromise,\n onAuthorize : ({ returnUrl : string }, { redirect : (?CrossDomainWindowType, ?string) => ZalgoPromise }) => ?ZalgoPromise,\n onShippingChange? : (address : {}) => ?ZalgoPromise,\n onCancel? : ({ cancelUrl : string }, { redirect : (?CrossDomainWindowType, ?string) => ZalgoPromise }) => ?ZalgoPromise,\n fallback? : (string) => ?ZalgoPromise,\n fundingSource? : string,\n logLevel? : string,\n env? : string,\n stage? : string,\n stageUrl? : string,\n localhostUrl? : string,\n checkoutUri? : string,\n authCode? : string\n};\n\nexport const Checkout : Component = create({\n\n tag: 'paypal-checkout',\n name: 'ppcheckout',\n\n scrolling: true,\n\n buildUrl(props) : ZalgoPromise {\n const env = props.env || config.env;\n\n if (!props.payment) {\n throw new Error(`Can not build url without payment prop`);\n }\n\n return props.payment().then(token => {\n if (!token) {\n throw new Error(`Expected payment id or token to be passed, got ${ token }`);\n }\n\n return determineUrl(env, props.fundingSource, token);\n });\n },\n\n get unsafeRenderTo() : boolean {\n return config.env === ENV.LOCAL;\n },\n\n get domain() : Object {\n return {\n ...config.paypalDomains\n };\n },\n\n get bridgeUrl() : Object {\n return config.metaFrameUrls;\n },\n\n get bridgeDomain() : Object {\n return config.paypalDomains;\n },\n\n contexts: {\n iframe: (!supportsPopups()),\n popup: true\n },\n\n get version() : string {\n return getScriptVersion();\n },\n\n validate() {\n if (!isEligible()) {\n warn('checkout_render_ineligible');\n }\n },\n\n prerenderTemplate: componentTemplate,\n containerTemplate,\n\n props: {\n\n sessionID: {\n type: 'string',\n required: false,\n def() : string {\n return getSessionID();\n },\n queryParam: true\n },\n\n buttonSessionID: {\n type: 'string',\n required: false,\n def() : ?string {\n return getButtonSessionID();\n },\n queryParam: true\n },\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n },\n\n meta: {\n type: 'object',\n required: false,\n def() : Object {\n const meta = window.xprops && window.xprops.meta;\n return meta || {};\n }\n },\n\n stage: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.STAGE || env === ENV.LOCAL) {\n return config.stage;\n }\n }\n },\n\n stageUrl: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.STAGE || env === ENV.LOCAL) {\n return config.stageUrl;\n }\n }\n },\n\n authCode: {\n type: 'string',\n required: false,\n def() : string {\n return config.authCode;\n },\n queryParam: 'code'\n },\n\n localhostUrl: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.LOCAL) {\n return config.localhostUrl;\n }\n }\n },\n\n checkoutUri: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : ?string {\n return config.checkoutUri;\n }\n },\n\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n allowDelegate: true,\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n }\n },\n\n\n client: {\n type: 'object',\n required: false,\n def() : { [string] : string } {\n return {};\n },\n sendToChild: false,\n\n validate(client, props) {\n const env = props.env || config.env;\n\n if (!client[env]) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (client[env].match(/^(.)\\1+$/)) {\n throw new Error(`Invalid client ID: ${ client[env] }`);\n }\n }\n },\n\n payment: {\n type: 'function',\n required: false,\n memoize: true,\n promisify: true,\n queryParam(payment) : ZalgoPromise {\n return payment().then(token => {\n return determineParameterFromToken(token);\n });\n },\n queryValue(payment) : ZalgoPromise {\n return payment();\n },\n childDecorate(payment) : () => ZalgoPromise {\n const token = getQueryParam('token');\n\n return token\n ? memoize(() => ZalgoPromise.resolve(token))\n : payment;\n },\n validate(payment, props) {\n if (!payment && !props.url) {\n throw new Error(`Expected either props.payment or props.url to be passed`);\n }\n },\n alias: 'billingAgreement'\n },\n\n style: {\n type: 'object',\n required: false,\n allowDelegate: true,\n def() : Object {\n return {};\n },\n validate(style) {\n if (style.overlayColor && style.overlayColor !== CHECKOUT_OVERLAY_COLOR.BLACK && style.overlayColor !== CHECKOUT_OVERLAY_COLOR.WHITE) {\n throw new Error(`Invalid background color: ${ style.overlayColor }`);\n }\n }\n },\n\n commit: {\n type: 'boolean',\n required: false\n },\n\n experience: {\n type: 'object',\n required: false,\n def() : Object {\n return {};\n }\n },\n\n fundingSource: {\n type: 'string',\n required: false,\n queryParam: true\n },\n\n fundingOffered: {\n type: 'object',\n required: false,\n queryParam: true,\n def() : Object {\n const elements = Array.prototype.slice.call(document.querySelectorAll(`[${ ATTRIBUTE.FUNDING_SOURCE }]`));\n\n const fundingSources = elements.map(el => {\n return el.getAttribute(ATTRIBUTE.FUNDING_SOURCE);\n });\n\n // $FlowFixMe\n return fundingSources;\n },\n queryValue: (val) => {\n return val.join(',');\n }\n },\n\n onAuthorize: {\n type: 'function',\n required: true,\n once: true,\n \n decorate(original) : Function | void {\n if (original) {\n return function decorateOnAuthorize(data, actions = {}) : ZalgoPromise {\n\n if (data && !data.intent) {\n warn(`checkout_authorize_no_intent`, { paymentID: data.paymentID, token: data.paymentToken });\n }\n\n const close = () => {\n return ZalgoPromise.try(() => {\n if (actions.close) {\n return actions.close();\n }\n }).then(() => {\n return this.closeComponent();\n });\n };\n\n const redirect = (win, url) => {\n return ZalgoPromise.all([\n redir(win || window.top, url || data.returnUrl),\n close()\n ]);\n };\n\n return ZalgoPromise.try(() => {\n\n try {\n const isButton = window.location.href.indexOf('/smart/button') !== -1;\n const isGuest = this.window.location.href.indexOf('/webapps/xoonboarding') !== -1;\n\n if (isButton && isGuest) {\n return request({\n win: this.window,\n method: 'get',\n url: '/webapps/xoonboarding/api/auth'\n }).then(result => {\n if (result && result.data && result.data.access_token) {\n addHeader('x-paypal-internal-euat', result.data.access_token);\n }\n }).catch(() => {\n // pass\n });\n }\n\n } catch (err) {\n // pass\n }\n\n }).then(() => {\n return original.call(this, data, { ...actions, close, redirect });\n }).catch(err => {\n return this.error(err);\n }).finally(() => {\n return this.close();\n });\n };\n }\n }\n },\n\n onShippingChange: {\n type: 'function',\n required: false\n },\n\n onAuth: {\n type: 'function',\n required: false,\n sameDomain: true,\n childDecorate(original : Function) : ?Function {\n if (original) {\n return function wrapOnAuth(data : string | Object) : Object {\n if (typeof data === 'string') {\n data = { accessToken: data };\n }\n return original(data);\n };\n }\n }\n },\n\n accessToken: {\n type: 'function',\n required: false\n },\n\n onCancel: {\n type: 'function',\n required: false,\n once: true,\n noop: true,\n\n decorate(original) : Function {\n return function decorateOnCancel(data, actions = {}) : ZalgoPromise {\n\n const close = () => {\n return ZalgoPromise.try(() => {\n if (actions.close) {\n return actions.close();\n }\n }).then(() => {\n return this.closeComponent();\n });\n };\n\n const redirect = (win, url) => {\n return ZalgoPromise.all([\n redir(win || window.top, url || data.cancelUrl),\n close()\n ]);\n };\n\n return ZalgoPromise.try(() => {\n return original.call(this, data, { ...actions, close, redirect });\n }).finally(() => {\n this.close();\n });\n };\n }\n },\n\n init: {\n type: 'function',\n required: false,\n once: true,\n noop: true,\n\n decorate(original) : Function {\n return function decorateInit(data) : void {\n info('checkout_init');\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CHECKOUT_INIT,\n [ FPTI.KEY.CONTEXT_TYPE ]: FPTI.CONTEXT_TYPE[PAYMENT_TYPE.EC_TOKEN],\n [ FPTI.KEY.TOKEN ]: data.paymentToken,\n [ FPTI.KEY.SELLER_ID ]: data.merchantID,\n [ FPTI.KEY.CONTEXT_ID ]: data.paymentToken\n });\n\n flushLogs();\n\n this.paymentToken = data.paymentToken;\n this.cancelUrl = data.cancelUrl;\n\n return original.apply(this, arguments);\n };\n }\n },\n\n onClose: {\n type: 'function',\n required: false,\n once: true,\n promisify: true,\n noop: true,\n\n decorate(original) : Function {\n return function decorateOnClose(reason) : ZalgoPromise {\n\n const onClose = original.apply(this, arguments);\n\n const CLOSE_REASONS = CONSTANTS.CLOSE_REASONS;\n\n const shouldCancel =\n this.props.onCancel &&\n [ CLOSE_REASONS.CLOSE_DETECTED, CLOSE_REASONS.USER_CLOSED ].indexOf(reason) !== -1;\n\n if (shouldCancel) {\n info(`close_trigger_cancel`);\n return this.props.onCancel({\n paymentToken: this.paymentToken,\n cancelUrl: this.cancelUrl\n }).then(() => onClose);\n }\n\n return onClose;\n };\n }\n },\n\n onError: {\n type: 'function',\n required: false,\n promisify: true,\n noop: true,\n once: true\n },\n\n fallback: {\n type: 'function',\n required: false,\n once: true,\n\n def() : Function {\n return function defaultFallback(url) : ZalgoPromise {\n warn('fallback', { url });\n\n if (getDomainSetting('allow_full_page_fallback')) {\n window.top.location = url;\n return this.close();\n }\n\n return onLegacyPaymentAuthorize(this.props.onAuthorize);\n };\n }\n },\n\n logLevel: {\n type: 'string',\n required: false,\n get value() : string {\n return config.logLevel;\n }\n },\n \n test: {\n type: 'object',\n required: false,\n def() : Object {\n return window.__test__ || { action: 'checkout' };\n }\n },\n\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n }\n },\n\n get dimensions() : { width : string, height : string } {\n\n if (isDevice()) {\n return {\n width: '100%',\n height: '590px'\n };\n }\n\n return {\n width: '500px',\n height: '590px'\n };\n }\n});\n\nif (Checkout.isChild() && Checkout.xchild && Checkout.xprops) {\n\n if (Checkout.xprops && Checkout.xprops.logLevel) {\n setLogLevel(Checkout.xprops.logLevel);\n }\n\n Checkout.xchild.onProps(xprops => {\n patchMethod(xprops, 'onAuthorize', ({ callOriginal, args: [ data ] }) => {\n if (data && !data.intent) {\n warn(`hermes_authorize_no_intent`, { paymentID: data.paymentID, token: data.paymentToken });\n\n try {\n const intent = window.injector.get('$CheckoutCartModel').instance(data.paymentToken).payment_action;\n warn(`hermes_intent`, { paymentID: data.paymentID, token: data.paymentToken, intent });\n } catch (err) {\n // pass\n }\n\n immediateFlush();\n }\n return callOriginal();\n });\n });\n}\n\npatchMethod(Checkout, 'init', ({ args: [ props, _context ], original, context }) => {\n return original.call(context, props, _context, 'body');\n});\n\npatchMethod(Checkout, 'render', ({ args: [ props ], original, context }) => {\n return original.call(context, props, 'body');\n});\n\npatchMethod(Checkout, 'renderTo', ({ args: [ win, props ], original, context }) => {\n\n const payment = props.payment();\n props.payment = () => payment;\n\n return original.call(context, win, props, 'body').catch(err => {\n if (err instanceof PopupOpenError && isPayPalDomain()) {\n Checkout.contexts.iframe = true;\n return original.call(context, win, props, 'body');\n }\n throw err;\n });\n});\n\n","/* @flow */\n\nexport * from './component';\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\n\nimport type { CancelableType } from './types';\n\nexport function getFunctionName (fn : T) : string {\n return fn.name || fn.__name__ || fn.displayName || 'anonymous';\n}\n\nexport function setFunctionName (fn : T, name : string) : T {\n try {\n delete fn.name;\n fn.name = name;\n } catch (err) {\n // pass\n }\n\n fn.__name__ = fn.displayName = name;\n return fn;\n}\n\nexport function base64encode(str : string) : string {\n if (typeof btoa === 'function') {\n return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, (m, p1) => {\n return String.fromCharCode(parseInt(p1, 16));\n }));\n }\n\n if (typeof Buffer !== 'undefined') {\n return Buffer.from(str, 'utf8').toString('base64');\n }\n\n throw new Error(`Can not find window.btoa or Buffer`);\n}\n\nexport function base64decode(str : string) : string {\n if (typeof atob === 'function') {\n return decodeURIComponent(Array.prototype.map.call(atob(str), c => {\n // eslint-disable-next-line prefer-template\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\n }).join(''));\n }\n\n if (typeof Buffer !== 'undefined') {\n return Buffer.from(str, 'base64').toString('utf8');\n }\n\n throw new Error(`Can not find window.atob or Buffer`);\n}\n\nexport function uniqueID() : string {\n\n let chars = '0123456789abcdef';\n\n let randomID = 'xxxxxxxxxx'.replace(/./g, () => {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n });\n\n let timeID = base64encode(\n new Date().toISOString().slice(11, 19).replace('T', '.')\n ).replace(/[^a-zA-Z0-9]/g, '').toLowerCase();\n\n return `${ randomID }_${ timeID }`;\n}\n\nexport function getGlobal() : Object {\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n if (typeof __GLOBAL__ !== 'undefined') {\n return __GLOBAL__;\n }\n throw new Error(`No global found`);\n}\n\nlet objectIDs;\n\nexport function getObjectID(obj : Object) : string {\n\n objectIDs = objectIDs || new WeakMap();\n\n if (obj === null || obj === undefined || (typeof obj !== 'object' && typeof obj !== 'function')) {\n throw new Error(`Invalid object`);\n }\n\n let uid = objectIDs.get(obj);\n\n if (!uid) {\n uid = `${ typeof obj }:${ uniqueID() }`;\n objectIDs.set(obj, uid);\n }\n\n return uid;\n}\n\nfunction serializeArgs(args : Array) : string {\n try {\n return JSON.stringify(Array.prototype.slice.call(args), (subkey, val) => {\n if (typeof val === 'function') {\n return `memoize[${ getObjectID(val) }]`;\n }\n return val;\n });\n } catch (err) {\n throw new Error(`Arguments not serializable -- can not be used to memoize`);\n }\n}\nexport function memoize) => R, X : { (...args : Array) : R, displayName : string, reset : () => void }>(method : F, options : { time? : number, thisNamespace? : boolean } = {}) : X {\n let cacheMap = new WeakMap();\n\n // $FlowFixMe\n let memoizedFunction : X = function memoizedFunction(...args : Array) : R {\n let cache = cacheMap.getOrSet(options.thisNamespace ? this : method, () => ({}));\n\n let key : string = serializeArgs(args);\n\n let cacheTime = options.time;\n if (cache[key] && cacheTime && (Date.now() - cache[key].time) < cacheTime) {\n delete cache[key];\n }\n\n if (cache[key]) {\n return cache[key].value;\n }\n\n let time = Date.now();\n let value = method.apply(this, arguments);\n\n cache[key] = { time, value };\n\n return cache[key].value;\n };\n\n memoizedFunction.reset = () => {\n cacheMap.delete(options.thisNamespace ? this : method);\n };\n\n return setFunctionName(memoizedFunction, `${ getFunctionName(method) }::memoized`);\n}\n\nexport function promiseIdentity(item : ZalgoPromise | T) : ZalgoPromise {\n // $FlowFixMe\n return ZalgoPromise.resolve(item);\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport function memoizePromise(method : (...args : Array) => ZalgoPromise) : ((...args : Array) => ZalgoPromise) {\n let cache = {};\n\n // eslint-disable-next-line flowtype/no-weak-types\n function memoizedPromiseFunction(...args : Array) : ZalgoPromise {\n let key : string = serializeArgs(args);\n\n if (cache.hasOwnProperty(key)) {\n return cache[key];\n }\n\n cache[key] = ZalgoPromise.try(() => method.apply(this, arguments))\n .finally(() => {\n delete cache[key];\n });\n\n return cache[key];\n }\n\n memoizedPromiseFunction.reset = () => {\n cache = {};\n };\n\n return setFunctionName(memoizedPromiseFunction, `${ getFunctionName(method) }::promiseMemoized`);\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport function promisify(method : (...args : Array) => R, options : { name? : string } = {}) : ((...args : Array) => ZalgoPromise) {\n function promisifiedFunction() : ZalgoPromise {\n return ZalgoPromise.try(method, this, arguments);\n }\n\n if (options.name) {\n promisifiedFunction.displayName = `${ options.name }:promisified`;\n }\n\n return setFunctionName(promisifiedFunction, `${ getFunctionName(method) }::promisified`);\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport function inlineMemoize(method : (...args : Array) => R, logic : (...args : Array) => R, args : Array = []) : R {\n // $FlowFixMe\n let cache = method.__inline_memoize_cache__ = method.__inline_memoize_cache__ || {};\n let key = serializeArgs(args);\n\n if (cache.hasOwnProperty(key)) {\n return cache[key];\n }\n \n let result = cache[key] = logic(...args);\n\n return result;\n}\n\n// eslint-disable-next-line no-unused-vars\nexport function noop(...args : Array) {\n // pass\n}\n\nexport function once(method : Function) : Function {\n let called = false;\n\n const onceFunction = function() : mixed {\n if (!called) {\n called = true;\n return method.apply(this, arguments);\n }\n };\n\n return setFunctionName(onceFunction, `${ getFunctionName(method) }::once`);\n}\n\nexport function hashStr(str : string) : number {\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n hash += str[i].charCodeAt(0) * Math.pow((i % 10) + 1, 5);\n }\n return Math.floor(Math.pow(Math.sqrt(hash), 5));\n}\n\nexport function strHashStr(str : string) : string {\n let hash = '';\n\n for (let i = 0; i < str.length; i++) {\n let total = (str[i].charCodeAt(0) * i);\n\n if (str[i + 1]) {\n total += (str[i + 1].charCodeAt(0) * (i - 1));\n }\n\n hash += String.fromCharCode(97 + (Math.abs(total) % 26));\n }\n\n return hash;\n}\n\nexport function match(str : string, pattern : RegExp) : ?string {\n let regmatch = str.match(pattern);\n if (regmatch) {\n return regmatch[1];\n }\n}\n\nexport function awaitKey(obj : Object, key : string) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n\n let value = obj[key];\n\n if (value) {\n return resolve(value);\n }\n\n delete obj[key];\n\n Object.defineProperty(obj, key, {\n\n configurable: true,\n\n set(item) {\n value = item;\n\n if (value) {\n resolve(value);\n }\n },\n\n get() : mixed {\n return value;\n }\n });\n });\n}\n\nexport function stringifyError(err : mixed, level : number = 1) : string {\n\n if (level >= 3) {\n return 'stringifyError stack overflow';\n }\n\n try {\n if (!err) {\n return ``;\n }\n\n if (typeof err === 'string') {\n return err;\n }\n\n if (err instanceof Error) {\n let stack = err && err.stack;\n let message = err && err.message;\n\n if (stack && message) {\n if (stack.indexOf(message) !== -1) {\n return stack;\n } else {\n return `${ message }\\n${ stack }`;\n }\n } else if (stack) {\n return stack;\n } else if (message) {\n return message;\n }\n }\n\n if (err && err.toString && typeof err.toString === 'function') {\n // $FlowFixMe\n return err.toString();\n }\n\n return Object.prototype.toString.call(err);\n\n } catch (newErr) { // eslint-disable-line unicorn/catch-error-name\n return `Error while stringifying error: ${ stringifyError(newErr, level + 1) }`;\n }\n}\n\nexport function stringifyErrorMessage(err : mixed) : string {\n\n let defaultMessage = ``;\n\n if (!err) {\n return defaultMessage;\n }\n\n if (err instanceof Error) {\n return err.message || defaultMessage;\n }\n\n if (typeof err.message === 'string') {\n return err.message || defaultMessage;\n }\n\n return defaultMessage;\n}\n\nexport function stringify(item : mixed) : string {\n if (typeof item === 'string') {\n return item;\n }\n\n if (item && item.toString && typeof item.toString === 'function') {\n // $FlowFixMe\n return item.toString();\n }\n\n return Object.prototype.toString.call(item);\n}\n\nexport function domainMatches(hostname : string, domain : string) : boolean {\n hostname = hostname.split('://')[1];\n let index = hostname.indexOf(domain);\n return (index !== -1 && hostname.slice(index) === domain);\n}\n\nexport function patchMethod(obj : Object, name : string, handler : Function) {\n let original = obj[name];\n\n obj[name] = function patchedMethod() : mixed {\n return handler({\n context: this,\n args: Array.prototype.slice.call(arguments),\n original,\n callOriginal: () => original.apply(this, arguments)\n });\n };\n}\n\nexport function extend(obj : T, source : Object) : T {\n if (!source) {\n return obj;\n }\n\n if (Object.assign) {\n return Object.assign(obj, source);\n }\n\n for (let key in source) {\n if (source.hasOwnProperty(key)) {\n obj[key] = source[key];\n }\n }\n\n return obj;\n}\n\nexport function values(obj : { [string] : T }) : Array {\n let result = [];\n for (let key in obj) {\n if (obj.hasOwnProperty(key)) {\n result.push(obj[key]);\n }\n }\n return result;\n}\n\nexport function perc(pixels : number, percentage : number) : number {\n return Math.round((pixels * percentage) / 100);\n}\n\nexport function min(...args : Array) : number {\n return Math.min(...args);\n}\n\nexport function max(...args : Array) : number {\n return Math.max(...args);\n}\n\nexport function regexMap(str : string, regexp : RegExp, handler : () => T) : Array {\n let results = [];\n\n // $FlowFixMe\n str.replace(regexp, function regexMapMatcher(item) {\n results.push(handler ? handler.apply(null, arguments) : item);\n });\n\n // $FlowFixMe\n return results;\n}\n\nexport function svgToBase64(svg : string) : string {\n return `data:image/svg+xml;base64,${ base64encode(svg) }`;\n}\n\nexport function objFilter(obj : { [string] : T }, filter? : (T, ?string) => mixed = Boolean) : { [string] : R } {\n let result = {};\n\n for (let key in obj) {\n if (!obj.hasOwnProperty(key) || !filter(obj[key], key)) {\n continue;\n }\n\n result[key] = obj[key];\n }\n\n return result;\n}\n\nexport function identity (item : T) : T {\n return item;\n}\n\nexport function regexTokenize(text : string, regexp : RegExp) : Array {\n let result = [];\n text.replace(regexp, token => {\n result.push(token);\n return '';\n });\n return result;\n}\n\nexport function promiseDebounce(method : () => ZalgoPromise | T, delay : number = 50) : () => ZalgoPromise {\n\n let promise;\n let timeout;\n\n const promiseDebounced = function() : ZalgoPromise {\n if (timeout) {\n clearTimeout(timeout);\n }\n\n let localPromise = promise = promise || new ZalgoPromise();\n\n timeout = setTimeout(() => {\n promise = null;\n timeout = null;\n\n ZalgoPromise.try(method).then(\n result => { localPromise.resolve(result); },\n err => { localPromise.reject(err); }\n );\n }, delay);\n\n return localPromise;\n };\n\n return setFunctionName(promiseDebounced, `${ getFunctionName(method) }::promiseDebounced`);\n}\n\nexport function safeInterval(method : Function, time : number) : { cancel : () => void } {\n\n let timeout;\n\n function loop() {\n timeout = setTimeout(() => {\n method();\n loop();\n }, time);\n }\n\n loop();\n\n return {\n cancel() {\n clearTimeout(timeout);\n }\n };\n}\n\nexport function isInteger(str : string) : boolean {\n return Boolean(str.match(/^[0-9]+$/));\n}\n\nexport function isFloat(str : string) : boolean {\n return Boolean(str.match(/^[0-9]+\\.[0-9]+$/));\n}\n\nexport function serializePrimitive(value : string | number | boolean) : string {\n return value.toString();\n}\n\nexport function deserializePrimitive(value : string) : string | number | boolean {\n if (value === 'true') {\n return true;\n } else if (value === 'false') {\n return false;\n } else if (isInteger(value)) {\n return parseInt(value, 10);\n } else if (isFloat(value)) {\n return parseFloat(value);\n } else {\n return value;\n }\n}\n\nexport function dotify(obj : Object, prefix : string = '', newobj : Object = {}) : { [string] : string } {\n prefix = prefix ? `${ prefix }.` : prefix;\n for (let key in obj) {\n if (!obj.hasOwnProperty(key) || obj[key] === undefined || obj[key] === null || typeof obj[key] === 'function') {\n continue;\n } else if (obj[key] && Array.isArray(obj[key]) && obj[key].length && obj[key].every(val => typeof val !== 'object')) {\n newobj[`${ prefix }${ key }[]`] = obj[key].join(',');\n } else if (obj[key] && typeof obj[key] === 'object') {\n newobj = dotify(obj[key], `${ prefix }${ key }`, newobj);\n } else {\n newobj[`${ prefix }${ key }`] = serializePrimitive(obj[key]);\n }\n }\n return newobj;\n}\n\nexport function undotify(obj : { [string] : string }) : Object {\n \n let result = {};\n\n for (let key in obj) {\n if (!obj.hasOwnProperty(key) || typeof obj[key] !== 'string') {\n continue;\n }\n\n let value = obj[key];\n\n if (key.match(/^.+\\[\\]$/)) {\n key = key.slice(0, key.length - 2);\n value = value.split(',').map(deserializePrimitive);\n } else {\n value = deserializePrimitive(value);\n }\n\n let keyResult = result;\n let parts = key.split('.');\n for (let i = 0; i < parts.length; i++) {\n let part = parts[i];\n let isLast = (i + 1 === parts.length);\n let isIndex = !isLast && isInteger(parts[i + 1]);\n\n if (part === 'constructor' || part === 'prototype' || part === '__proto__') {\n throw new Error(`Disallowed key: ${ part }`);\n }\n\n if (isLast) {\n // $FlowFixMe\n keyResult[part] = value;\n } else {\n // $FlowFixMe\n keyResult = keyResult[part] = keyResult[part] || (isIndex ? [] : {});\n }\n }\n }\n\n return result;\n}\n\nexport type EventEmitterType = {\n on : (eventName : string, handler : Function) => CancelableType,\n once : (eventName : string, handler : Function) => CancelableType,\n trigger : (eventName : string, ...args : $ReadOnlyArray) => ZalgoPromise,\n triggerOnce : (eventName : string, ...args : $ReadOnlyArray) => ZalgoPromise\n};\n\nexport function eventEmitter() : EventEmitterType {\n let triggered = {};\n let handlers = {};\n\n return {\n\n on(eventName : string, handler : Function) : CancelableType {\n let handlerList = handlers[eventName] = handlers[eventName] || [];\n\n handlerList.push(handler);\n\n let cancelled = false;\n\n return {\n cancel() {\n if (!cancelled) {\n cancelled = true;\n handlerList.splice(handlerList.indexOf(handler), 1);\n }\n\n }\n };\n },\n\n once(eventName : string, handler : Function) : CancelableType {\n\n let listener = this.on(eventName, () => {\n listener.cancel();\n handler();\n });\n\n return listener;\n },\n\n trigger(eventName : string, ...args : $ReadOnlyArray) : ZalgoPromise {\n\n let handlerList = handlers[eventName];\n let promises = [];\n\n if (handlerList) {\n for (let handler of handlerList) {\n promises.push(ZalgoPromise.try(() => handler(...args)));\n }\n }\n\n return ZalgoPromise.all(promises).then(noop);\n },\n\n triggerOnce(eventName : string, ...args : $ReadOnlyArray) : ZalgoPromise {\n\n if (triggered[eventName]) {\n return ZalgoPromise.resolve();\n }\n\n triggered[eventName] = true;\n return this.trigger(eventName, ...args);\n }\n };\n}\n\nexport function camelToDasherize(string : string) : string {\n return string.replace(/([A-Z])/g, (g) => {\n return `-${ g.toLowerCase() }`;\n });\n}\n\nexport function dasherizeToCamel(string : string) : string {\n return string.replace(/-([a-z])/g, (g) => {\n return g[1].toUpperCase();\n });\n}\n\nexport function capitalizeFirstLetter(string : string) : string {\n return string.charAt(0).toUpperCase() + string.slice(1).toLowerCase();\n}\n\nexport function get(item : Object, path : string, def : mixed) : mixed {\n\n if (!path) {\n return def;\n }\n\n let pathParts = path.split('.');\n\n // Loop through each section of our key path\n\n for (let i = 0; i < pathParts.length; i++) {\n\n // If we have an object, we can get the key\n if (typeof item === 'object' && item !== null) {\n item = item[pathParts[i]];\n\n // Otherwise, we should return the default (undefined if not provided)\n } else {\n return def;\n }\n }\n\n // If our final result is undefined, we should return the default\n\n return item === undefined ? def : item;\n}\n\nexport function safeTimeout(method : Function, time : number) {\n\n let interval = safeInterval(() => {\n time -= 100;\n if (time <= 0) {\n interval.cancel();\n method();\n }\n }, 100);\n}\n\nexport function defineLazyProp(obj : Object | Array, key : string | number, getter : () => T) {\n if (Array.isArray(obj)) {\n if (typeof key !== 'number') {\n throw new TypeError(`Array key must be number`);\n }\n } else if (typeof obj === 'object' && obj !== null) {\n if (typeof key !== 'string') {\n throw new TypeError(`Object key must be string`);\n }\n }\n \n Object.defineProperty(obj, key, {\n configurable: true,\n enumerable: true,\n get: () => {\n // $FlowFixMe\n delete obj[key];\n let value = getter();\n // $FlowFixMe\n obj[key] = value;\n return value;\n },\n set: (value : T) => {\n // $FlowFixMe\n delete obj[key];\n // $FlowFixMe\n obj[key] = value;\n }\n });\n}\n\nexport function arrayFrom(item : Iterable) : Array { // eslint-disable-line no-undef\n return Array.prototype.slice.call(item);\n}\n\nexport function isObject(item : mixed) : boolean {\n return (typeof item === 'object' && item !== null);\n}\n\nexport function isObjectObject(obj : mixed) : boolean {\n return isObject(obj) && Object.prototype.toString.call(obj) === '[object Object]';\n}\n\nexport function isPlainObject(obj : mixed) : boolean {\n if (!isObjectObject(obj)) {\n return false;\n }\n\n // $FlowFixMe\n let constructor = obj.constructor;\n\n if (typeof constructor !== 'function') {\n return false;\n }\n\n let prototype = constructor.prototype;\n\n if (!isObjectObject(prototype)) {\n return false;\n }\n\n if (!prototype.hasOwnProperty('isPrototypeOf')) {\n return false;\n }\n\n return true;\n}\n\nexport function replaceObject | Object> (item : T, replacer : (mixed, string | number, string) => mixed, fullKey : string = '') : T {\n\n if (Array.isArray(item)) {\n let length = item.length;\n let result : Array = [];\n\n for (let i = 0; i < length; i++) {\n\n \n defineLazyProp(result, i, () => {\n let itemKey = fullKey ? `${ fullKey }.${ i }` : `${ i }`;\n let el = item[i];\n\n let child = replacer(el, i, itemKey);\n\n if (isPlainObject(child) || Array.isArray(child)) {\n // $FlowFixMe\n child = replaceObject(child, replacer, itemKey);\n }\n\n return child;\n });\n }\n\n // $FlowFixMe\n return result;\n } else if (isPlainObject(item)) {\n let result = {};\n\n for (let key in item) {\n if (!item.hasOwnProperty(key)) {\n continue;\n }\n\n defineLazyProp(result, key, () => {\n let itemKey = fullKey ? `${ fullKey }.${ key }` : `${ key }`;\n // $FlowFixMe\n let el = item[key];\n\n let child = replacer(el, key, itemKey);\n\n if (isPlainObject(child) || Array.isArray(child)) {\n // $FlowFixMe\n child = replaceObject(child, replacer, itemKey);\n }\n\n return child;\n });\n }\n\n // $FlowFixMe\n return result;\n } else {\n throw new Error(`Pass an object or array`);\n }\n}\n\n\nexport function copyProp(source : Object, target : Object, name : string, def : mixed) {\n if (source.hasOwnProperty(name)) {\n let descriptor = Object.getOwnPropertyDescriptor(source, name);\n // $FlowFixMe\n Object.defineProperty(target, name, descriptor);\n\n } else {\n target[name] = def;\n }\n}\n\ntype RegexResultType = {\n text : string,\n groups : Array,\n start : number,\n end : number,\n length : number,\n replace : (text : string) => string\n};\n\nexport function regex(pattern : string | RegExp, string : string, start : number = 0) : ?RegexResultType {\n\n if (typeof pattern === 'string') {\n // eslint-disable-next-line security/detect-non-literal-regexp\n pattern = new RegExp(pattern);\n }\n\n let result = string.slice(start).match(pattern);\n\n if (!result) {\n return;\n }\n\n // $FlowFixMe\n let index : number = result.index;\n let regmatch = result[0];\n\n return {\n text: regmatch,\n groups: result.slice(1),\n start: start + index,\n end: start + index + regmatch.length,\n length: regmatch.length,\n\n replace(text : string) : string {\n\n if (!regmatch) {\n return '';\n }\n\n return `${ regmatch.slice(0, start + index) }${ text }${ regmatch.slice(index + regmatch.length) }`;\n }\n };\n}\n\nexport function regexAll(pattern : string | RegExp, string : string) : Array {\n\n let matches = [];\n let start = 0;\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n let regmatch = regex(pattern, string, start);\n\n if (!regmatch) {\n break;\n }\n\n matches.push(regmatch);\n start = match.end;\n }\n\n return matches;\n}\n\nexport function isDefined(value : ?mixed) : boolean {\n return value !== null && value !== undefined;\n}\n\nexport function cycle(method : Function) : ZalgoPromise {\n return ZalgoPromise.try(method).then(() => cycle(method));\n}\n\nexport function debounce(method : (...args : Array) => T, time : number = 100) : (...args : Array) => void {\n\n let timeout;\n\n const debounceWrapper = function() {\n clearTimeout(timeout);\n\n timeout = setTimeout(() => {\n return method.apply(this, arguments);\n }, time);\n };\n\n return setFunctionName(debounceWrapper, `${ getFunctionName(method) }::debounced`);\n}\n\nexport function isRegex(item : mixed) : boolean {\n return Object.prototype.toString.call(item) === '[object RegExp]';\n}\n\ntype FunctionProxy = (method : T) => T;\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport let weakMapMemoize : FunctionProxy<*> = (method : (arg : any) => R) : ((...args : Array) => R) => {\n\n let weakmap = new WeakMap();\n\n // eslint-disable-next-line flowtype/no-weak-types\n return function weakmapMemoized(arg : any) : R {\n return weakmap.getOrSet(arg, () => method.call(this, arg));\n };\n};\n\ntype FunctionPromiseProxy) => ZalgoPromise> = (T) => T;\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport let weakMapMemoizePromise : FunctionPromiseProxy<*, *> = (method : (arg : any) => ZalgoPromise) : ((...args : Array) => ZalgoPromise) => {\n\n let weakmap = new WeakMap();\n\n // eslint-disable-next-line flowtype/no-weak-types\n return function weakmapMemoizedPromise(arg : any) : ZalgoPromise {\n return weakmap.getOrSet(arg, () =>\n method.call(this, arg).finally(() => {\n weakmap.delete(arg);\n })\n );\n };\n};\n\nexport function getOrSet(obj : O, key : string, getter : () => T) : T {\n if (obj.hasOwnProperty(key)) {\n return obj[key];\n }\n\n const val = getter();\n obj[key] = val;\n return val;\n}\n\nexport type CleanupType = {|\n set : (string, T) => T, // eslint-disable-line no-undef\n register : (Function) => void,\n all : () => ZalgoPromise\n|};\n\nexport function cleanup(obj : Object) : CleanupType {\n\n const tasks = [];\n let cleaned = false;\n\n return {\n set(name : string, item : T) : T {\n if (!cleaned) {\n obj[name] = item;\n this.register(() => {\n delete obj[name];\n });\n }\n return item;\n },\n\n register(method : Function) {\n if (cleaned) {\n method();\n } else {\n tasks.push(once(method));\n }\n },\n\n all() : ZalgoPromise {\n const results = [];\n cleaned = true;\n\n while (tasks.length) {\n const task = tasks.pop();\n results.push(task());\n }\n\n return ZalgoPromise.all(results).then(noop);\n }\n };\n}\n\nexport function tryCatch(fn : () => T) : {| result : T, error : void |} | {| result : void, error : mixed |} {\n let result;\n let error;\n\n try {\n result = fn();\n } catch (err) {\n error = err;\n }\n \n // $FlowFixMe\n return { result, error };\n}\n\nexport function removeFromArray>(arr : T, item : X) {\n const index = arr.indexOf(item);\n if (index !== -1) {\n arr.splice(index, 1);\n }\n}\n\nexport function assertExists(name : string, thing : void | null | T) : T {\n if (thing === null || typeof thing === 'undefined') {\n throw new Error(`Expected ${ name } to be present`);\n }\n \n return thing;\n}\n \nexport function unique(arr : $ReadOnlyArray) : $ReadOnlyArray {\n const result = {};\n for (const item of arr) {\n // eslint-disable-next-line const-immutable/no-mutation\n result[item] = true;\n }\n return Object.keys(result);\n}\n","/* @flow */\n/* eslint max-lines: off */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { linkFrameWindow, isWindowClosed,\n type SameDomainWindowType, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\n\nimport { inlineMemoize, noop, stringify, capitalizeFirstLetter,\n once, extend, safeInterval, uniqueID, arrayFrom } from './util';\nimport { isDevice } from './device';\nimport { KEY_CODES } from './constants';\nimport type { CancelableType } from './types';\n\ntype ElementRefType = string | HTMLElement;\n\nexport function isDocumentReady() : boolean {\n return Boolean(document.body) && document.readyState === 'complete';\n}\n\nexport function urlEncode(str : string) : string {\n return str.replace(/\\?/g, '%3F').replace(/&/g, '%26').replace(/#/g, '%23').replace(/\\+/g, '%2B');\n}\n\nexport function waitForWindowReady() : ZalgoPromise {\n return inlineMemoize(waitForWindowReady, () : ZalgoPromise => {\n return new ZalgoPromise(resolve => {\n if (isDocumentReady()) {\n resolve();\n }\n\n window.addEventListener('load', () => resolve());\n });\n });\n}\n\nexport function waitForDocumentReady() : ZalgoPromise {\n return inlineMemoize(waitForDocumentReady, () : ZalgoPromise => {\n return new ZalgoPromise(resolve => {\n\n if (isDocumentReady()) {\n return resolve();\n }\n\n let interval = setInterval(() => {\n if (isDocumentReady()) {\n clearInterval(interval);\n return resolve();\n }\n }, 10);\n });\n });\n}\n\nexport function waitForDocumentBody() : ZalgoPromise {\n return waitForDocumentReady().then(() => {\n if (document.body) {\n return document.body;\n }\n\n throw new Error('Document ready but document.body not present');\n });\n}\n\nexport function parseQuery(queryString : string) : Object {\n return inlineMemoize(parseQuery, () : Object => {\n let params = {};\n\n if (!queryString) {\n return params;\n }\n\n if (queryString.indexOf('=') === -1) {\n return params;\n }\n\n for (let pair of queryString.split('&')) {\n pair = pair.split('=');\n\n if (pair[0] && pair[1]) {\n params[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n }\n\n return params;\n }, [ queryString ]);\n}\n\n\nexport function getQueryParam(name : string) : string {\n return parseQuery(window.location.search.slice(1))[name];\n}\n\nexport function urlWillRedirectPage(url : string) : boolean {\n\n if (url.indexOf('#') === -1) {\n return true;\n }\n\n if (url.indexOf('#') === 0) {\n return false;\n }\n\n if (url.split('#')[0] === window.location.href.split('#')[0]) {\n return false;\n }\n\n return true;\n}\n\nexport function formatQuery(obj : { [ string ] : string } = {}) : string {\n\n return Object.keys(obj).filter(key => {\n return typeof obj[key] === 'string';\n }).map(key => {\n return `${ urlEncode(key) }=${ urlEncode(obj[key]) }`;\n }).join('&');\n}\n\nexport function extendQuery(originalQuery : string, props : { [ string ] : string } = {}) : string {\n\n if (!props || !Object.keys(props).length) {\n return originalQuery;\n }\n\n return formatQuery({\n ...parseQuery(originalQuery),\n ...props\n });\n}\n\nexport function extendUrl(url : string, options : { query? : { [string] : string }, hash? : { [string] : string } } = {}) : string {\n\n let query = options.query || {};\n let hash = options.hash || {};\n\n let originalUrl;\n let originalQuery;\n let originalHash;\n\n [ originalUrl, originalHash ] = url.split('#');\n [ originalUrl, originalQuery ] = originalUrl.split('?');\n\n let queryString = extendQuery(originalQuery, query);\n let hashString = extendQuery(originalHash, hash);\n\n if (queryString) {\n originalUrl = `${ originalUrl }?${ queryString }`;\n }\n\n if (hashString) {\n originalUrl = `${ originalUrl }#${ hashString }`;\n }\n\n return originalUrl;\n}\n\nexport function redirect(url : string, win : CrossDomainWindowType = window) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n win.location = url;\n if (!urlWillRedirectPage(url)) {\n resolve();\n }\n });\n}\n\nexport function hasMetaViewPort() : boolean {\n let meta = document.querySelector('meta[name=viewport]');\n\n if (isDevice() && window.screen.width < 660 && !meta) {\n return false;\n }\n\n return true;\n}\n\nexport function isElementVisible(el : HTMLElement) : boolean {\n return Boolean(el.offsetWidth || el.offsetHeight || el.getClientRects().length);\n}\n\nexport function enablePerformance() : boolean {\n return inlineMemoize(enablePerformance, () : boolean => {\n /* eslint-disable compat/compat */\n return Boolean(\n window.performance &&\n performance.now &&\n performance.timing &&\n performance.timing.connectEnd &&\n performance.timing.navigationStart &&\n (Math.abs(performance.now() - Date.now()) > 1000) &&\n (performance.now() - (performance.timing.connectEnd - performance.timing.navigationStart)) > 0\n );\n /* eslint-enable compat/compat */\n });\n}\n\nexport function getPageRenderTime() : ZalgoPromise {\n return waitForDocumentReady().then(() => {\n\n if (!enablePerformance()) {\n return;\n }\n\n let timing = window.performance.timing;\n\n if (timing.connectEnd && timing.domInteractive) {\n return timing.domInteractive - timing.connectEnd;\n }\n });\n}\n\nexport function htmlEncode(html : string = '') : string {\n return html.toString()\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(/\\//g, '/');\n}\n\nexport function isBrowser() : boolean {\n return (typeof window !== 'undefined');\n}\n\nexport function querySelectorAll(selector : string, doc : HTMLElement = window.document) : Array {\n return Array.prototype.slice.call(doc.querySelectorAll(selector));\n}\n\nexport function onClick(element : HTMLElement, handler : (Event) => void) {\n element.addEventListener('touchstart', noop);\n element.addEventListener('click', handler);\n element.addEventListener('keypress', (event : Event) => {\n // $FlowFixMe\n if (event.keyCode === KEY_CODES.ENTER) {\n return handler(event);\n }\n });\n}\n\nexport function getScript({ host = window.location.host, path } : { host? : string, path : string }) : ?HTMLScriptElement {\n return inlineMemoize(getScript, () : ?HTMLScriptElement => {\n\n let url = `${ host }${ path }`;\n let scripts = Array.prototype.slice.call(document.getElementsByTagName('script'));\n\n for (let script of scripts) {\n if (!script.src) {\n continue;\n }\n\n let src = script.src.replace(/^https?:\\/\\//, '').split('?')[0];\n\n if (src === url) {\n return script;\n }\n }\n }, [ path ]);\n}\n\nexport function isLocalStorageEnabled() : boolean {\n return inlineMemoize(isLocalStorageEnabled, () => {\n try {\n if (typeof window === 'undefined') {\n return false;\n }\n\n if (window.localStorage) {\n let value = Math.random().toString();\n window.localStorage.setItem('__test__localStorage__', value);\n let result = window.localStorage.getItem('__test__localStorage__');\n window.localStorage.removeItem('__test__localStorage__');\n if (value === result) {\n return true;\n }\n }\n } catch (err) {\n // pass\n }\n return false;\n });\n}\n\nexport function getBrowserLocales() : Array<{ country? : string, lang : string }> {\n let nav = window.navigator;\n\n let locales = nav.languages\n ? Array.prototype.slice.apply(nav.languages)\n : [];\n\n if (nav.language) {\n locales.push(nav.language);\n }\n\n if (nav.userLanguage) {\n locales.push(nav.userLanguage);\n }\n\n return locales.map(locale => {\n\n if (locale && locale.match(/^[a-z]{2}[-_][A-Z]{2}$/)) {\n let [ lang, country ] = locale.split(/[-_]/);\n return { country, lang };\n }\n\n if (locale && locale.match(/^[a-z]{2}$/)) {\n return { lang: locale };\n }\n\n return null;\n\n }).filter(Boolean);\n}\n\n\nexport function appendChild(container : HTMLElement, child : HTMLElement | Text) {\n container.appendChild(child);\n}\n\nexport function isElement(element : mixed) : boolean {\n\n if (element instanceof window.Element) {\n return true;\n }\n\n if (element !== null && typeof element === 'object' && element.nodeType === 1 && typeof element.style === 'object' && typeof element.ownerDocument === 'object') {\n return true;\n }\n\n return false;\n}\n\nexport function getElementSafe(id : ElementRefType, doc : Document | HTMLElement = document) : ?HTMLElement {\n\n if (isElement(id)) {\n // $FlowFixMe\n return id;\n }\n\n if (typeof id === 'string') {\n return doc.querySelector(id);\n }\n}\n\nexport function getElement(id : ElementRefType, doc : Document | HTMLElement = document) : HTMLElement {\n\n let element = getElementSafe(id, doc);\n\n if (element) {\n return element;\n }\n\n throw new Error(`Can not find element: ${ stringify(id) }`);\n}\n\nexport function elementReady(id : ElementRefType) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n let name = stringify(id);\n let el = getElementSafe(id);\n\n if (el) {\n return resolve(el);\n }\n\n if (isDocumentReady()) {\n return reject(new Error(`Document is ready and element ${ name } does not exist`));\n }\n\n let interval = setInterval(() => {\n\n el = getElementSafe(id);\n\n if (el) {\n clearInterval(interval);\n return resolve(el);\n }\n\n if (isDocumentReady()) {\n clearInterval(interval);\n return reject(new Error(`Document is ready and element ${ name } does not exist`));\n }\n }, 10);\n });\n}\n\nexport function PopupOpenError(message : string) {\n this.message = message;\n}\n\nPopupOpenError.prototype = Object.create(Error.prototype);\n\ntype PopupOptions = {|\n name? : string,\n width? : number,\n height? : number,\n top? : number,\n left? : number,\n status? : 0 | 1,\n resizable? : 0 | 1,\n toolbar? : 0 | 1,\n menubar? : 0 | 1,\n scrollbars? : 0 | 1\n|};\n\nexport function popup(url : string, options? : PopupOptions) : CrossDomainWindowType {\n\n // $FlowFixMe\n options = options || {};\n\n let { width, height } = options;\n\n let top = 0;\n let left = 0;\n\n if (width) {\n if (window.outerWidth) {\n left = Math.round((window.outerWidth - width) / 2) + window.screenX;\n } else if (window.screen.width) {\n left = Math.round((window.screen.width - width) / 2);\n }\n }\n\n if (height) {\n if (window.outerHeight) {\n top = Math.round((window.outerHeight - height) / 2) + window.screenY;\n } else if (window.screen.height) {\n top = Math.round((window.screen.height - height) / 2);\n }\n }\n\n if (width && height) {\n options = {\n top,\n left,\n width,\n height,\n status: 1,\n toolbar: 0,\n menubar: 0,\n resizable: 1,\n scrollbars: 1,\n ...options\n };\n }\n\n let name = options.name || '';\n delete options.name;\n\n // eslint-disable-next-line array-callback-return\n let params = Object.keys(options).map(key => {\n // $FlowFixMe\n if (options[key] !== null && options[key] !== undefined) {\n return `${ key }=${ stringify(options[key]) }`;\n }\n }).filter(Boolean).join(',');\n\n let win;\n\n try {\n win = window.open(url, name, params, true);\n } catch (err) {\n throw new PopupOpenError(`Can not open popup window - ${ err.stack || err.message }`);\n }\n\n if (isWindowClosed(win)) {\n let err = new PopupOpenError(`Can not open popup window - blocked`);\n throw err;\n }\n\n window.addEventListener('unload', () => win.close());\n\n return win;\n}\n\n\nexport function writeToWindow(win : SameDomainWindowType, html : string) {\n try {\n win.document.open();\n win.document.write(html);\n win.document.close();\n } catch (err) {\n try {\n win.location = `javascript: document.open(); document.write(${ JSON.stringify(html) }); document.close();`;\n } catch (err2) {\n // pass\n }\n }\n}\n\nexport function writeElementToWindow(win : SameDomainWindowType, el : HTMLElement) {\n\n let tag = el.tagName.toLowerCase();\n\n if (tag !== 'html') {\n throw new Error(`Expected element to be html, got ${ tag }`);\n }\n\n let documentElement = win.document.documentElement;\n\n for (const child of arrayFrom(documentElement.children)) {\n documentElement.removeChild(child);\n }\n\n for (const child of arrayFrom(el.children)) {\n documentElement.appendChild(child);\n }\n}\n\nexport function setStyle(el : HTMLElement, styleText : string, doc : Document = window.document) {\n // $FlowFixMe\n if (el.styleSheet) {\n // $FlowFixMe\n el.styleSheet.cssText = styleText;\n } else {\n el.appendChild(doc.createTextNode(styleText));\n }\n}\n\nexport type ElementOptionsType = {\n style? : { [ string ] : string },\n id? : string,\n class? : ?Array,\n attributes? : { [ string ] : string },\n styleSheet? : ?string,\n html? : ?string\n};\n\nlet awaitFrameLoadPromises : WeakMap>;\n\nexport function awaitFrameLoad(frame : HTMLIFrameElement) : ZalgoPromise {\n awaitFrameLoadPromises = awaitFrameLoadPromises || new WeakMap();\n\n if (awaitFrameLoadPromises.has(frame)) {\n let promise = awaitFrameLoadPromises.get(frame);\n if (promise) {\n return promise;\n }\n }\n\n let promise = new ZalgoPromise((resolve, reject) => {\n frame.addEventListener('load', () => {\n linkFrameWindow(frame);\n resolve(frame);\n });\n\n frame.addEventListener('error', (err : Event) => {\n if (frame.contentWindow) {\n resolve(frame);\n } else {\n reject(err);\n }\n });\n });\n\n awaitFrameLoadPromises.set(frame, promise);\n\n return promise;\n}\n\nexport function awaitFrameWindow(frame : HTMLIFrameElement) : ZalgoPromise {\n return awaitFrameLoad(frame).then(loadedFrame => {\n\n if (!loadedFrame.contentWindow) {\n throw new Error(`Could not find window in iframe`);\n }\n\n return loadedFrame.contentWindow;\n });\n}\n\nexport function createElement(tag : string = 'div', options : ElementOptionsType = {}, container : ?HTMLElement) : HTMLElement {\n\n tag = tag.toLowerCase();\n let element = document.createElement(tag);\n\n if (options.style) {\n extend(element.style, options.style);\n }\n\n if (options.class) {\n element.className = options.class.join(' ');\n }\n\n if (options.id) {\n element.setAttribute('id', options.id);\n }\n\n if (options.attributes) {\n for (let key of Object.keys(options.attributes)) {\n element.setAttribute(key, options.attributes[key]);\n }\n }\n\n if (options.styleSheet) {\n setStyle(element, options.styleSheet);\n }\n\n if (container) {\n appendChild(container, element);\n }\n\n if (options.html) {\n if (tag === 'iframe') {\n // $FlowFixMe\n if (!container || !element.contentWindow) {\n throw new Error(`Iframe html can not be written unless container provided and iframe in DOM`);\n }\n\n // $FlowFixMe\n writeToWindow(element.contentWindow, options.html);\n\n } else {\n element.innerHTML = options.html;\n }\n }\n\n return element;\n}\n\n\nexport type IframeElementOptionsType = {\n style? : { [ string ] : string },\n class? : ?Array,\n attributes? : { [ string ] : string },\n styleSheet? : ?string,\n html? : ?string,\n url? : ?string\n};\n\nexport function iframe(options : IframeElementOptionsType = {}, container : ?HTMLElement) : HTMLIFrameElement {\n\n let attributes = options.attributes || {};\n let style = options.style || {};\n\n let frame = createElement('iframe', {\n attributes: {\n allowTransparency: 'true',\n ...attributes\n },\n style: {\n backgroundColor: 'transparent',\n border: 'none',\n ...style\n },\n html: options.html,\n class: options.class\n });\n\n const isIE = window.navigator.userAgent.match(/MSIE|Edge/i);\n \n if (!frame.hasAttribute('id')) {\n frame.setAttribute('id', uniqueID());\n }\n\n // $FlowFixMe\n awaitFrameLoad(frame);\n\n if (container) {\n let el = getElement(container);\n el.appendChild(frame);\n }\n\n if (options.url || isIE) {\n frame.setAttribute('src', options.url || 'about:blank');\n }\n\n // $FlowFixMe\n return frame;\n}\n\nexport function addEventListener(obj : HTMLElement, event : string, handler : (event : Event) => void) : CancelableType {\n obj.addEventListener(event, handler);\n return {\n cancel() {\n obj.removeEventListener(event, handler);\n }\n };\n}\n\nexport function bindEvents(element : HTMLElement, eventNames : Array, handler : (event : Event) => void) : CancelableType {\n\n handler = once(handler);\n\n for (let eventName of eventNames) {\n element.addEventListener(eventName, handler);\n }\n\n return {\n cancel: once(() => {\n for (let eventName of eventNames) {\n element.removeEventListener(eventName, handler);\n }\n })\n };\n}\n\nconst VENDOR_PREFIXES = [ 'webkit', 'moz', 'ms', 'o' ];\n\nexport function setVendorCSS(element : HTMLElement, name : string, value : string) {\n\n // $FlowFixMe\n element.style[name] = value;\n\n let capitalizedName = capitalizeFirstLetter(name);\n\n for (let prefix of VENDOR_PREFIXES) {\n // $FlowFixMe\n element.style[`${ prefix }${ capitalizedName }`] = value;\n }\n}\n\nconst ANIMATION_START_EVENTS = [ 'animationstart', 'webkitAnimationStart', 'oAnimationStart', 'MSAnimationStart' ];\nconst ANIMATION_END_EVENTS = [ 'animationend', 'webkitAnimationEnd', 'oAnimationEnd', 'MSAnimationEnd' ];\n\nexport function animate(element : ElementRefType, name : string, clean : (Function) => void, timeout : number = 1000) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n let el = getElement(element);\n\n if (!el) {\n return resolve();\n }\n\n let hasStarted = false;\n\n let startTimeout;\n let endTimeout;\n let startEvent;\n let endEvent;\n\n function cleanUp() {\n clearTimeout(startTimeout);\n clearTimeout(endTimeout);\n startEvent.cancel();\n endEvent.cancel();\n }\n\n startEvent = bindEvents(el, ANIMATION_START_EVENTS, event => {\n\n // $FlowFixMe\n if (event.target !== el || event.animationName !== name) {\n return;\n }\n\n clearTimeout(startTimeout);\n\n event.stopPropagation();\n\n startEvent.cancel();\n hasStarted = true;\n\n endTimeout = setTimeout(() => {\n cleanUp();\n resolve();\n }, timeout);\n });\n\n endEvent = bindEvents(el, ANIMATION_END_EVENTS, event => {\n\n // $FlowFixMe\n if (event.target !== el || event.animationName !== name) {\n return;\n }\n\n cleanUp();\n\n // $FlowFixMe\n if (typeof event.animationName === 'string' && event.animationName !== name) {\n return reject(`Expected animation name to be ${ name }, found ${ event.animationName }`);\n }\n\n return resolve();\n });\n\n setVendorCSS(el, 'animationName', name);\n\n startTimeout = setTimeout(() => {\n if (!hasStarted) {\n cleanUp();\n return resolve();\n }\n }, 200);\n\n if (clean) {\n clean(cleanUp);\n }\n });\n}\n\nconst STYLE = {\n\n DISPLAY: {\n NONE: 'none',\n BLOCK: 'block'\n },\n\n VISIBILITY: {\n VISIBLE: 'visible',\n HIDDEN: 'hidden'\n },\n\n IMPORTANT: 'important'\n};\n\nexport function makeElementVisible(element : HTMLElement) {\n element.style.setProperty('visibility', '');\n}\n\nexport function makeElementInvisible(element : HTMLElement) {\n element.style.setProperty('visibility', STYLE.VISIBILITY.HIDDEN, STYLE.IMPORTANT);\n}\n\n\nexport function showElement(element : HTMLElement) {\n element.style.setProperty('display', '');\n}\n\nexport function hideElement(element : HTMLElement) {\n element.style.setProperty('display', STYLE.DISPLAY.NONE, STYLE.IMPORTANT);\n}\n\nexport function destroyElement(element : HTMLElement) {\n if (element && element.parentNode) {\n element.parentNode.removeChild(element);\n }\n}\n\nexport function showAndAnimate(element : HTMLElement, name : string, clean : (Function) => void) : ZalgoPromise {\n let animation = animate(element, name, clean);\n showElement(element);\n return animation;\n}\n\nexport function animateAndHide(element : HTMLElement, name : string, clean : (Function) => void) : ZalgoPromise {\n return animate(element, name, clean).then(() => {\n hideElement(element);\n });\n}\n\nexport function addClass(element : HTMLElement, name : string) {\n element.classList.add(name);\n}\n\nexport function removeClass(element : HTMLElement, name : string) {\n element.classList.remove(name);\n}\n\nexport function isElementClosed(el : HTMLElement) : boolean {\n if (!el || !el.parentNode) {\n return true;\n }\n return false;\n}\n\nexport function watchElementForClose(element : HTMLElement, handler : () => mixed) : CancelableType {\n handler = once(handler);\n\n let interval;\n\n if (isElementClosed(element)) {\n handler();\n } else {\n interval = safeInterval(() => {\n if (isElementClosed(element)) {\n interval.cancel();\n handler();\n }\n }, 50);\n }\n\n return {\n cancel() {\n if (interval) {\n interval.cancel();\n }\n }\n };\n}\n\nexport function fixScripts(el : HTMLElement, doc : Document = window.document) {\n for (let script of querySelectorAll('script', el)) {\n let parentNode = script.parentNode;\n\n if (!parentNode) {\n continue;\n }\n\n let newScript = doc.createElement('script');\n newScript.text = script.textContent;\n parentNode.replaceChild(newScript, script);\n }\n}\n\ntype OnResizeOptions = {|\n width? : boolean,\n height? : boolean,\n interval? : number,\n win? : SameDomainWindowType\n|};\n\nexport function onResize(el : HTMLElement, handler : ({ width : number, height : number }) => void, { width = true, height = true, interval = 100, win = window } : OnResizeOptions = {}) : {} {\n let currentWidth = el.offsetWidth;\n let currentHeight = el.offsetHeight;\n\n handler({ width: currentWidth, height: currentHeight });\n\n let check = () => {\n let newWidth = el.offsetWidth;\n let newHeight = el.offsetHeight;\n\n if ((width && newWidth !== currentWidth) || (height && newHeight !== currentHeight)) {\n handler({ width: newWidth, height: newHeight });\n }\n\n currentWidth = newWidth;\n currentHeight = newHeight;\n };\n\n let observer;\n let timeout;\n\n if (typeof win.ResizeObserver !== 'undefined') {\n observer = new win.ResizeObserver(check);\n observer.observe(el);\n\n } else if (typeof win.MutationObserver !== 'undefined') {\n observer = new win.MutationObserver(check);\n observer.observe(el, {\n attributes: true,\n childList: true,\n subtree: true,\n characterData: false\n });\n win.addEventListener('resize', check);\n } else {\n let loop = () => {\n check();\n timeout = setTimeout(loop, interval);\n };\n loop();\n }\n\n return {\n cancel: () => {\n observer.disconnect();\n window.removeEventListener('resize', check);\n clearTimeout(timeout);\n }\n };\n}\n\nexport function getResourceLoadTime(url : string) : ?number {\n\n if (!enablePerformance()) {\n return;\n }\n\n if (!window.performance || typeof window.performance.getEntries !== 'function') {\n return;\n }\n\n const entries = window.performance.getEntries();\n\n for (let i = 0; i < entries.length; i++) {\n const entry = entries[i];\n\n if (entry && entry.name && entry.name.indexOf(url) === 0 && typeof entry.duration === 'number') {\n return Math.floor(entry.duration);\n }\n }\n}\n","/* @flow */\n\nexport * from './device';\nexport * from './dom';\nexport * from './experiment';\nexport * from './global';\nexport * from './storage';\nexport * from './util';\nexport * from './http';\nexport * from './types';\nexport * from './decorators';\nexport * from './css';\nexport * from './test';\n","/* @flow */\n\nexport function safeIndexOf(collection : Array, item : T) : number {\n for (let i = 0; i < collection.length; i++) {\n\n try {\n if (collection[i] === item) {\n return i;\n }\n } catch (err) {\n // pass\n }\n }\n\n return -1;\n}\n\n// eslint-disable-next-line no-unused-vars\nexport function noop(...args : Array) {\n // pass\n}\n","/* @flow */\n\nimport { isWindow, isWindowClosed } from 'cross-domain-utils/src';\n\nimport { hasNativeWeakMap } from './native';\nimport { noop, safeIndexOf } from './util';\n\nexport class CrossDomainSafeWeakMap {\n\n name : string\n weakmap : ?WeakMap\n keys : Array\n values : Array\n\n constructor() {\n // eslint-disable-next-line no-bitwise\n this.name = `__weakmap_${ Math.random() * 1e9 >>> 0 }__`;\n\n if (hasNativeWeakMap()) {\n try {\n this.weakmap = new WeakMap();\n } catch (err) {\n // pass\n }\n }\n\n this.keys = [];\n this.values = [];\n }\n\n _cleanupClosedWindows() {\n\n let weakmap = this.weakmap;\n let keys = this.keys;\n\n for (let i = 0; i < keys.length; i++) {\n let value = keys[i];\n\n if (isWindow(value) && isWindowClosed(value)) {\n\n if (weakmap) {\n try {\n weakmap.delete(value);\n } catch (err) {\n // pass\n }\n }\n\n keys.splice(i, 1);\n this.values.splice(i, 1);\n\n i -= 1;\n }\n }\n }\n\n isSafeToReadWrite(key : K) : boolean {\n\n if (isWindow(key)) {\n return false;\n }\n\n try {\n noop(key && key.self);\n noop(key && key[this.name]);\n } catch (err) {\n return false;\n }\n\n return true;\n }\n\n set(key : K, value : V) {\n\n if (!key) {\n throw new Error(`WeakMap expected key`);\n }\n\n let weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n weakmap.set(key, value);\n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (this.isSafeToReadWrite(key)) {\n try {\n let name = this.name;\n let entry = key[name];\n\n if (entry && entry[0] === key) {\n entry[1] = value;\n } else {\n Object.defineProperty(key, name, {\n value: [ key, value ],\n writable: true\n });\n }\n\n return;\n\n } catch (err) {\n // pass\n }\n }\n\n this._cleanupClosedWindows();\n\n let keys = this.keys;\n let values = this.values;\n let index = safeIndexOf(keys, key);\n\n if (index === -1) {\n keys.push(key);\n values.push(value);\n } else {\n values[index] = value;\n }\n }\n\n get(key : K) : V | void {\n\n if (!key) {\n throw new Error(`WeakMap expected key`);\n }\n\n let weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n if (weakmap.has(key)) {\n return weakmap.get(key);\n }\n \n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (this.isSafeToReadWrite(key)) {\n try {\n let entry = key[this.name];\n\n if (entry && entry[0] === key) {\n return entry[1];\n }\n\n return;\n } catch (err) {\n // pass\n }\n }\n\n this._cleanupClosedWindows();\n\n let keys = this.keys;\n let index = safeIndexOf(keys, key);\n\n if (index === -1) {\n return;\n }\n\n return this.values[index];\n }\n\n delete(key : K) {\n\n if (!key) {\n throw new Error(`WeakMap expected key`);\n }\n\n let weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n weakmap.delete(key);\n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (this.isSafeToReadWrite(key)) {\n try {\n let entry = key[this.name];\n\n if (entry && entry[0] === key) {\n entry[0] = entry[1] = undefined;\n }\n } catch (err) {\n // pass\n }\n }\n\n this._cleanupClosedWindows();\n\n let keys = this.keys;\n let index = safeIndexOf(keys, key);\n\n if (index !== -1) {\n keys.splice(index, 1);\n this.values.splice(index, 1);\n }\n }\n\n has(key : K) : boolean {\n\n if (!key) {\n throw new Error(`WeakMap expected key`);\n }\n\n let weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n if (weakmap.has(key)) {\n return true;\n }\n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (this.isSafeToReadWrite(key)) {\n try {\n let entry = key[this.name];\n\n if (entry && entry[0] === key) {\n return true;\n }\n\n return false;\n } catch (err) {\n // pass\n }\n }\n\n this._cleanupClosedWindows();\n\n let index = safeIndexOf(this.keys, key);\n return index !== -1;\n }\n\n getOrSet(key : K, getter : () => V) : V {\n if (this.has(key)) {\n // $FlowFixMe\n return this.get(key);\n }\n\n let value = getter();\n this.set(key, value);\n return value;\n }\n}\n","/* @flow */\n\nexport function hasNativeWeakMap() : boolean {\n\n if (typeof WeakMap === 'undefined') {\n return false;\n }\n\n if (typeof Object.freeze === 'undefined') {\n return false;\n }\n\n try {\n\n let testWeakMap = new WeakMap();\n let testKey = {};\n let testValue = '__testvalue__';\n\n Object.freeze(testKey);\n\n testWeakMap.set(testKey, testValue);\n\n if (testWeakMap.get(testKey) === testValue) {\n return true;\n }\n\n return false;\n\n } catch (err) {\n\n return false;\n }\n}\n","/* @flow */\n\nexport { CrossDomainSafeWeakMap as WeakMap } from './weakmap';\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst P24_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#d03238',\n secondary: '#b3b1b1'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#d03238',\n secondary: '#b3b1b1'\n }\n};\n\nexport function p24Logo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!P24_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } p24 logo available`);\n }\n\n const { primary, secondary } = P24_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst SOFORT_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#2C2E2F',\n secondary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#EB6F93',\n secondary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#EB6F93',\n secondary: '#FFFFFF'\n }\n};\n\nexport function sofortLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!SOFORT_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } sofort logo available`);\n }\n\n const { primary, secondary } = SOFORT_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst IDEAL_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff',\n tertiary: '#2C2E2F'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#000000',\n secondary: '#FFFFFF',\n tertiary: '#CD0067'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#000000',\n secondary: '#FFFFFF',\n tertiary: '#CD0067'\n }\n};\n\nexport function idealLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!IDEAL_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } ideal logo available`);\n }\n\n const { primary, secondary, tertiary } = IDEAL_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst GIROPAY_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#000000',\n tertiary: '#2C2E2F'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#FFFFFF',\n secondary: '#003A7D',\n tertiary: '#ED1C24'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#FFFFFF',\n secondary: '#003A7D',\n tertiary: '#ED1C24'\n }\n};\n\nexport function giropayLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!GIROPAY_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } giropay logo available`);\n }\n\n const { primary, secondary, tertiary } = GIROPAY_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst EPS_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff',\n tertiary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#71706F',\n secondary: '#FFFFFF',\n tertiary: '#C8036F'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#71706F',\n secondary: '#FFFFFF',\n tertiary: '#C8036F'\n }\n};\n\nexport function epsLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!EPS_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } eps logo available`);\n }\n\n const { primary, secondary, tertiary } = EPS_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst MYBANK_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff',\n tertiary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#1A4B67',\n secondary: '#00C0EE',\n tertiary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#1A4B67',\n secondary: '#00C0EE',\n tertiary: '#FFFFFF'\n }\n};\n\nexport function mybankLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!MYBANK_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } mybank logo available`);\n }\n\n const { primary, secondary, tertiary } = MYBANK_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst BANCONTACT_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#1A4B67',\n secondary: '#00C0EE'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#005498',\n secondary: '#FFD800'\n }\n};\n\nexport function bancontactLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!BANCONTACT_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } bancontact logo available`);\n }\n\n const { primary, secondary } = BANCONTACT_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst PAYU_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.DEFAULT ]: {\n primary: '#A6d71c',\n secondary: '#3C932A',\n tertiary: '#6CC62E',\n quaternary: '#278D30'\n },\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#FFFFFF',\n secondary: '#FFFFFF',\n tertiary: '#000000',\n quaternary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#A6d71c',\n secondary: '#3C932A',\n tertiary: '#6CC62E',\n quaternary: '#278D30'\n }\n};\n\nexport function payuLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!PAYU_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } payu logo available`);\n }\n\n const { primary, secondary, tertiary, quaternary } = PAYU_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst VERKKOPANKKI_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#FFFFFF',\n secondary: '#FFFFFF',\n tertiary: '#000000',\n quaternary: '#000000',\n quinary: '#FFFFFF',\n senary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#FFFFFF',\n secondary: '#CACCC8',\n tertiary: '#2D59A1',\n quaternary: '#1F3364',\n quinary: '#4E4E4E',\n senary: '#1B4482'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#FFFFFF',\n secondary: '#CACCC8',\n tertiary: '#2D59A1',\n quaternary: '#1F3364',\n quinary: '#4E4E4E',\n senary: '#1B4482'\n }\n};\n\nexport function verkkopankkiLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!VERKKOPANKKI_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } verkkopankki logo available`);\n }\n\n const { primary, secondary, tertiary, quaternary, quinary, senary } = VERKKOPANKKI_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst BLIK_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#FFFFFF',\n secondary: '#FFFFFF',\n tertiary: '#000000',\n quaternary: '#000000',\n quinary: '#000000',\n senary: '#000000'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#4D4D4F',\n secondary: '#000000',\n tertiary: '#FF0000',\n quaternary: '#E83E49',\n quinary: '#FF00FF',\n senary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#4D4D4F',\n secondary: '#000000',\n tertiary: '#FF0000',\n quaternary: '#E83E49',\n quinary: '#FF00FF',\n senary: '#FFFFFF'\n }\n};\n\nexport function blikLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!BLIK_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } blik logo available`);\n }\n\n const { primary, secondary, tertiary, quaternary, quinary, senary } = BLIK_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst TRUSTLY_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#FFFFFF',\n secondary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#020202',\n secondary: '#64CC07'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#020202',\n secondary: '#64CC07'\n }\n};\n\nexport function trustlyLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!TRUSTLY_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } trustly logo available`);\n }\n\n const { primary, secondary } = TRUSTLY_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst MAXIMA_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#004A91',\n secondary: '#ED1921'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#004A91',\n secondary: '#ED1921'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#004A91',\n secondary: '#ED1921'\n }\n};\n\nexport function maximaLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!MAXIMA_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } maxima logo available`);\n }\n\n const { primary, secondary } = MAXIMA_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst BOLETO_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#1A1919',\n secondary: '#FFFFFE'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#1A1919',\n secondary: '#FFFFFE'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#1A1919',\n secondary: '#FFFFFE'\n }\n};\n\nexport function boletoLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!BOLETO_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } boleto logo available`);\n }\n\n const { primary, secondary } = BOLETO_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst OXXO_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#EC1D24',\n secondary: '#EDA42D'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#EC1D24',\n secondary: '#EDA42D'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#EC1D24',\n secondary: '#EDA42D'\n }\n};\n\nexport function oxxoLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!OXXO_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } oxxo logo available`);\n }\n\n const { primary, secondary } = OXXO_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst PAYPAL_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.BLUE ]: {\n primary: '#003087',\n secondary: '#009cde'\n },\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#333030',\n secondary: '#636363'\n }\n};\n\nexport function paypalLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!PAYPAL_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } paypal logo available`);\n }\n\n const { primary, secondary } = PAYPAL_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n );\n}\n","\n/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR, COUNTRY } from '../../constants';\nimport type { LocaleType } from '../../types';\n\nconst CREDIT_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.BLUE ]: {\n primary: '#003087',\n secondary: '#009cde'\n },\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#333030',\n secondary: '#636363'\n }\n};\n\nexport function creditLogo({ logoColor, locale } : { logoColor : $Values, locale? : LocaleType }) : JsxHTMLNode {\n\n if (!CREDIT_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } credit logo available`);\n }\n\n const { country } = locale || {};\n const { primary } = CREDIT_LOGO_COLORS[logoColor];\n\n switch (country) {\n case COUNTRY.DE:\n return (\n \n \n \n \n \n \n \n );\n default:\n return (\n \n \n \n \n \n \n \n \n );\n\n }\n}\n","/* @flow */\n\nimport { BUTTON_LOGO, BUTTON_LOGO_COLOR } from '../../constants';\n\nimport { p24Logo } from './p24';\nimport { sofortLogo } from './sofort';\nimport { idealLogo } from './ideal';\nimport { giropayLogo } from './giropay';\nimport { epsLogo } from './eps';\nimport { mybankLogo } from './mybank';\nimport { bancontactLogo } from './bancontact';\nimport { payuLogo } from './payu';\nimport { verkkopankkiLogo } from './verkkopankki';\nimport { blikLogo } from './blik';\nimport { trustlyLogo } from './trustly';\nimport { maximaLogo } from './maxima';\nimport { boletoLogo } from './boleto';\nimport { oxxoLogo } from './oxxo';\nimport pp_white from './pp_white.svg';\nimport pp_blue from './pp_blue.svg';\nimport pp_black from './pp_black.svg';\nimport { paypalLogo } from './paypal';\nimport { creditLogo } from './credit';\nimport venmo_white from './venmo_white.svg';\nimport itau from './itau.svg';\nimport venmo_blue from './venmo_blue.svg';\nimport elv from './elv.svg';\nimport elv_white from './elv_white.svg';\n\nexport const fundingLogos = {\n\n [ BUTTON_LOGO.PP ]: {\n [ BUTTON_LOGO_COLOR.WHITE ]: pp_white,\n [ BUTTON_LOGO_COLOR.BLUE ]: pp_blue,\n [ BUTTON_LOGO_COLOR.BLACK ]: pp_black\n },\n\n [ BUTTON_LOGO.PAYPAL ]: paypalLogo,\n\n [ BUTTON_LOGO.CREDIT ]: creditLogo,\n\n [ BUTTON_LOGO.VENMO ]: {\n [ BUTTON_LOGO_COLOR.WHITE ]: venmo_white,\n [ BUTTON_LOGO_COLOR.BLUE ]: venmo_blue\n },\n [ BUTTON_LOGO.ITAU ]: {\n [ BUTTON_LOGO_COLOR.WHITE ]: itau\n },\n\n [ BUTTON_LOGO.IDEAL ]: idealLogo,\n\n [ BUTTON_LOGO.ELV ]: {\n [ BUTTON_LOGO_COLOR.ANY ]: elv,\n [ BUTTON_LOGO_COLOR.WHITE ]: elv_white\n },\n\n [ BUTTON_LOGO.BANCONTACT ]: bancontactLogo,\n\n [ BUTTON_LOGO.GIROPAY ]: giropayLogo,\n\n [ BUTTON_LOGO.SOFORT ]: sofortLogo,\n\n [ BUTTON_LOGO.EPS ]: epsLogo,\n\n [ BUTTON_LOGO.MYBANK ]: mybankLogo,\n\n [ BUTTON_LOGO.P24 ]: p24Logo,\n\n [ BUTTON_LOGO.PAYU ]: payuLogo,\n\n [ BUTTON_LOGO.VERKKOPANKKI ]: verkkopankkiLogo,\n\n [ BUTTON_LOGO.BLIK ]: blikLogo,\n\n [ BUTTON_LOGO.TRUSTLY ]: trustlyLogo,\n\n [ BUTTON_LOGO.MAXIMA ]: maximaLogo,\n\n [ BUTTON_LOGO.BOLETO ]: boletoLogo,\n\n [ BUTTON_LOGO.OXXO ]: oxxoLogo\n\n};\n","/* @flow */\n\nimport { CARD } from '../../constants';\n\nimport visa from './visa.svg';\nimport amex from './amex.svg';\nimport mastercard from './mastercard.svg';\nimport maestro from './maestro.svg';\nimport discover from './discover.svg';\nimport hiper from './hiper.svg';\nimport elo from './elo.svg';\nimport jcb from './jcb.svg';\nimport cup from './cup.svg';\n\nexport const cardLogos = {\n [ CARD.VISA ]: visa,\n [ CARD.AMEX ]: amex,\n [ CARD.MASTERCARD ]: mastercard,\n [ CARD.MAESTRO ]: maestro,\n [ CARD.DISCOVER ]: discover,\n [ CARD.HIPER ]: hiper,\n [ CARD.ELO ]: elo,\n [ CARD.JCB ]: jcb,\n [ CARD.CUP ]: cup\n};\n","/* @flow */\n\nexport * from './fundingLogos';\nexport * from './cardLogos';\n","/* @flow */\n\nimport { config } from '../config';\n\nimport { uniqueID, isLocalStorageEnabled } from './util';\nimport { getQueryParam } from './dom';\nimport { isPayPalDomain } from './security';\n\nconst LOCAL_STORAGE_KEY = '__paypal_storage__';\nconst SESSION_KEY = '__paypal_session__';\nconst GLOBAL_KEY = '__paypal_global__';\n\nlet accessedStorage;\n\nexport function getStorageState(handler : (storage : Object) => T) : T {\n\n const localStorageEnabled = isLocalStorageEnabled();\n let storage;\n\n if (accessedStorage) {\n storage = accessedStorage;\n }\n\n if (!storage && localStorageEnabled) {\n const rawStorage = window.localStorage.getItem(LOCAL_STORAGE_KEY);\n\n if (rawStorage) {\n storage = JSON.parse(rawStorage);\n }\n }\n\n if (!storage) {\n storage = window[LOCAL_STORAGE_KEY];\n }\n\n if (!storage) {\n storage = {\n id: uniqueID()\n };\n }\n\n if (!storage.id) {\n storage.id = uniqueID();\n }\n\n accessedStorage = storage;\n\n const result = handler(storage);\n\n if (localStorageEnabled) {\n window.localStorage.setItem(LOCAL_STORAGE_KEY, JSON.stringify(storage));\n } else {\n window[LOCAL_STORAGE_KEY] = storage;\n }\n\n accessedStorage = null;\n\n return result;\n}\n\nexport function getStorageID() : string {\n return getStorageState(storage => storage.id);\n}\n\nexport function getSession(handler : (state : Object) => T) : T {\n return getStorageState(storage => {\n\n let session = storage[SESSION_KEY];\n const now = Date.now();\n\n if (session && ((now - session.created) > config.session_uid_lifetime)) {\n session = null;\n }\n\n if (!session) {\n session = {\n guid: uniqueID(),\n created: now\n };\n }\n\n storage[SESSION_KEY] = session;\n\n return handler(session);\n });\n}\n\nexport function getSessionState(handler : (state : Object) => T) : T {\n return getSession(session => {\n session.state = session.state || {};\n return handler(session.state);\n });\n}\n\nexport function getSessionID() : string {\n\n const xprops = window.xprops;\n\n if (xprops && xprops.sessionID) {\n return xprops.sessionID;\n }\n\n const querySessionID = getQueryParam('sessionID');\n\n if (isPayPalDomain() && querySessionID) {\n return querySessionID;\n }\n\n return getSession(session => session.guid);\n}\n\nexport function getButtonSessionID() : ?string {\n\n if (window.xprops && window.xprops.buttonSessionID) {\n return window.xprops.buttonSessionID;\n }\n\n const querySessionID = getQueryParam('buttonSessionID');\n\n if (isPayPalDomain() && querySessionID) {\n return querySessionID;\n }\n}\n\nexport function getGlobalState(handler : (state : Object) => T) : T {\n window[GLOBAL_KEY] = window[GLOBAL_KEY] || {};\n return handler(window[GLOBAL_KEY]);\n}\n","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object.keys(descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object.defineProperty(target, property, desc);\n desc = null;\n }\n\n return desc;\n}","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { on } from 'post-robot/src';\nimport { type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { copyProp, eventEmitter, type EventEmitterType, stringifyError, noop } from '../lib';\nimport type { CancelableType } from '../types';\n\nimport type { Component } from './component';\n\ntype CleanupType = {\n set : (string, T) => T, // eslint-disable-line no-undef\n register : (string | Function, ?Function) => void,\n hasTasks : () => boolean,\n all : () => ZalgoPromise,\n run : (string) => ZalgoPromise\n};\n\nfunction cleanup(obj : Object) : CleanupType {\n\n let tasks = [];\n let cleaned = false;\n\n return {\n\n set(name : string, item : T) : T {\n\n if (cleaned) {\n return item;\n }\n\n obj[name] = item;\n this.register(() => {\n delete obj[name];\n });\n return item;\n },\n\n register(name : string | Function, method : ?Function) {\n\n if (typeof name === 'function') {\n method = name;\n name = '';\n }\n\n if (typeof method !== 'function') {\n throw new TypeError(`Expected to be passed function to clean.register`);\n }\n\n if (cleaned) {\n method();\n return;\n }\n\n tasks.push({\n complete: false,\n\n name,\n\n run() {\n\n if (this.complete) {\n return;\n }\n\n this.complete = true;\n\n if (method) {\n method();\n }\n }\n });\n },\n\n hasTasks() : boolean {\n return Boolean(tasks.filter(item => !item.complete).length);\n },\n\n all() : ZalgoPromise {\n let results = [];\n\n cleaned = true;\n\n while (tasks.length) {\n results.push(tasks.pop().run());\n }\n\n return ZalgoPromise.all(results).then(() => { /* pass */ });\n },\n\n run(name : string) : ZalgoPromise {\n let results = [];\n\n for (let item of tasks) {\n if (item.name === name) {\n results.push(item.run());\n }\n }\n\n return ZalgoPromise.all(results).then(noop);\n }\n };\n}\n\n\n/* Base Component\n --------------\n\n Methods that are common between child and parent components, but are not generic or uncoupled enough to live in\n a separate library.\n*/\n\nexport class BaseComponent

{\n\n clean : CleanupType\n event : EventEmitterType\n component : Component

\n\n constructor() {\n this.clean = cleanup(this);\n this.event = eventEmitter();\n }\n\n addProp(options : Object, name : string, def : mixed) {\n copyProp(options, this, name, def);\n }\n\n on(eventName : string, handler : () => void) : CancelableType {\n return this.event.on(eventName, handler);\n }\n\n listeners() {\n throw new Error(`Expected listeners to be implemented`);\n }\n\n error(err : mixed) : ZalgoPromise {\n throw new Error(`Expected error to be implemented - got ${ stringifyError(err) }`);\n }\n\n /* Listen\n ------\n\n Listen for any post messages defined in this.listeners(). All (most) of our communication is done via\n post-messages, so this sets up an easy way to create a collection of listeners in one go.\n\n All post-messaging is done using post-robot.\n */\n\n listen(win : CrossDomainWindowType, domain : string | RegExp) {\n\n if (!win) {\n throw this.component.createError(`window to listen to not set`);\n }\n\n if (!domain) {\n throw new Error(`Must pass domain to listen to`);\n }\n\n if (!this.listeners) {\n return;\n }\n\n let listeners = this.listeners();\n\n for (let listenerName of Object.keys(listeners)) {\n\n let name = listenerName.replace(/^zoid_/, '');\n\n let errorHandler = (err) => {\n this.error(err);\n };\n\n let listener = on(listenerName, { window: win, domain, errorHandler }, ({ source, data }) => {\n this.component.log(`listener_${ name }`);\n return listeners[listenerName].call(this, source, data);\n });\n\n let errorListener = on(listenerName, { window: win, errorHandler }, ({ origin }) => {\n this.component.logError(`unexpected_listener_${ name }`, { origin, domain: domain.toString() });\n this.error(new Error(`Unexpected ${ name } message from domain ${ origin } -- expected message from ${ domain.toString() }`));\n });\n\n this.clean.register(() => {\n listener.cancel();\n errorListener.cancel();\n });\n }\n }\n}\n","/* @flow */\n\nimport { getOpener, getTop, getParent, getNthParentFromTop, getAllFramesInWindow, getAncestor, getDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport base32 from 'hi-base32';\n\nimport { memoize, uniqueID, globalFor, stringifyError } from '../lib';\nimport { WINDOW_REFERENCES } from '../constants';\nimport type { DimensionsType, PositionType } from '../types';\n\n\nfunction normalize(str : string) : string {\n return str.replace(/^[^a-z0-9A-Z]+|[^a-z0-9A-Z]+$/g, '').replace(/[^a-z0-9A-Z]+/g, '_');\n}\n\nfunction encode(str : string) : string {\n return base32.encode(str).replace(/\\=/g, '').toLowerCase(); // eslint-disable-line no-useless-escape\n}\n\nfunction decode(str : string) : string {\n return base32.decode(str.toUpperCase());\n}\n\n\n/* Build Child Window Name\n -----------------------\n\n Build a name for our child window. This should identify the following things to the child:\n\n - That the window was created by, and is owned by zoid\n - The name of the child's parent. This is so the child can identify which window created it, even when we do a\n renderTo, in which case the true parent may actually be a sibling frame in the window hierarchy\n\n We base64 encode the window name so IE doesn't die when it encounters any characters that it doesn't like.\n*/\n\nexport function buildChildWindowName(name : string, version : string, options : Object = {}) : string {\n\n options.id = uniqueID();\n options.domain = getDomain(window);\n\n let encodedName = normalize(name);\n let encodedVersion = normalize(version);\n let encodedOptions = encode(JSON.stringify(options));\n\n if (!encodedName) {\n throw new Error(`Invalid name: ${ name } - must contain alphanumeric characters`);\n }\n\n if (!encodedVersion) {\n throw new Error(`Invalid version: ${ version } - must contain alphanumeric characters`);\n }\n\n return [\n 'xcomponent',\n encodedName,\n encodedVersion,\n encodedOptions,\n ''\n ].join('__');\n}\n\nexport let isZoidComponentWindow = memoize(() => {\n if (!window.name) {\n return false;\n }\n\n let [ zoidcomp ] = window.name.split('__');\n\n if (zoidcomp !== 'xcomponent') {\n return false;\n }\n\n return true;\n});\n\n/* Parse Window Name\n -----------------\n\n The inverse of buildChildWindowName. Base64 decodes and json parses the window name to get the original props\n passed down, including the parent name. Only accepts window names built by zoid\n*/\n\nexport let getComponentMeta = memoize(() => {\n\n if (!window.name) {\n throw new Error(`Can not get component meta without window name`);\n }\n\n let [ zoidcomp, name, version, encodedOptions ] = window.name.split('__');\n\n if (zoidcomp !== 'xcomponent') {\n throw new Error(`Window not rendered by zoid - got ${ zoidcomp }`);\n }\n\n let componentMeta;\n\n try {\n componentMeta = JSON.parse(decode(encodedOptions));\n } catch (err) {\n throw new Error(`Can not decode component-meta: ${ encodedOptions } ${ stringifyError(err) }`);\n }\n\n componentMeta.name = name;\n componentMeta.version = version.replace(/_/g, '.');\n\n return componentMeta;\n});\n\nexport function getParentDomain() : string {\n return getComponentMeta().domain; // How does this work for renderTo..?\n}\n\nfunction getWindowByRef({ ref, uid, distance } : { ref : string, uid : string, distance : number }) : CrossDomainWindowType {\n\n let result;\n\n if (ref === WINDOW_REFERENCES.OPENER) {\n result = getOpener(window);\n\n } else if (ref === WINDOW_REFERENCES.TOP) {\n result = getTop(window);\n\n } else if (ref === WINDOW_REFERENCES.PARENT) {\n\n if (distance) {\n result = getNthParentFromTop(window, distance);\n } else {\n result = getParent(window);\n }\n }\n\n if (ref === WINDOW_REFERENCES.GLOBAL) {\n let ancestor = getAncestor(window);\n\n if (ancestor) {\n for (let frame of getAllFramesInWindow(ancestor)) {\n let global = globalFor(frame);\n\n if (global && global.windows && global.windows[uid]) {\n result = global.windows[uid];\n break;\n }\n }\n }\n }\n\n if (!result) {\n throw new Error(`Unable to find window by ref`);\n }\n\n return result;\n}\n\n/* Get Parent Component Window\n ---------------------------\n\n Get the parent component window, which may be different from the actual parent window\n*/\n\nexport let getParentComponentWindow = memoize(() => {\n\n let componentMeta = getComponentMeta();\n\n if (!componentMeta) {\n throw new Error(`Can not get parent component window - window not rendered by zoid`);\n }\n\n return getWindowByRef(componentMeta.componentParent);\n});\n\n\nexport let getParentRenderWindow = memoize(() => {\n\n let componentMeta = getComponentMeta();\n\n if (!componentMeta) {\n throw new Error(`Can not get parent component window - window not rendered by zoid`);\n }\n\n return getWindowByRef(componentMeta.renderParent);\n});\n\n\n/* Get Position\n ------------\n\n Calculate the position for the popup\n\n This is either\n - Specified by the user\n - The center of the screen\n\n I'd love to do this with pure css, but alas... popup windows :(\n*/\n\nexport function getPosition({ width, height } : DimensionsType) : PositionType {\n\n let x = 0;\n let y = 0;\n\n if (width) {\n if (window.outerWidth) {\n x = Math.round((window.outerWidth - width) / 2) + window.screenX;\n } else if (window.screen.width) {\n x = Math.round((window.screen.width - width) / 2);\n }\n }\n\n if (height) {\n if (window.outerHeight) {\n y = Math.round((window.outerHeight - height) / 2) + window.screenY;\n } else if (window.screen.height) {\n y = Math.round((window.screen.height - height) / 2);\n }\n }\n\n return { x, y };\n}\n","/* @flow */\n\nimport { getDomain } from 'cross-domain-utils/src';\n\nimport type { Component } from '../component';\nimport type { BuiltInPropsType, MixedPropDefinitionType } from '../component/props';\n\nexport function normalizeChildProp(component : Component

, props : (BuiltInPropsType & P), key : string, value : T) : ?T {\n\n // $FlowFixMe\n let prop : MixedPropDefinitionType

= component.getProp(key);\n\n if (!prop) {\n if (component.looseProps) {\n return value;\n } else {\n return;\n }\n }\n\n if (typeof prop.childDecorate === 'function') {\n return prop.childDecorate(value);\n }\n\n return value;\n}\n\n\nexport function normalizeChildProps

(component : Component

, props : (BuiltInPropsType & P), origin : string, required : boolean = true) : (BuiltInPropsType & P) {\n\n let result = {};\n\n for (let key of Object.keys(props)) {\n\n let prop = component.getProp(key);\n let value = props[key];\n\n if (prop && prop.sameDomain && origin !== getDomain(window)) {\n continue;\n }\n\n result[key] = normalizeChildProp(component, props, key, value);\n\n if (prop && prop.alias && !result[prop.alias]) {\n result[prop.alias] = value;\n }\n }\n\n if (required) {\n for (let key of component.getPropNames()) {\n if (!props.hasOwnProperty(key)) {\n result[key] = normalizeChildProp(component, props, key, props[key]);\n }\n }\n }\n\n // $FlowFixMe\n return result;\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { flush } from 'beaver-logger/client';\nimport { isSameDomain, matchDomain, getDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { send } from 'post-robot/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { onResize } from 'belter/src';\n\nimport { BaseComponent } from '../base';\nimport { getParentComponentWindow, getComponentMeta, getParentDomain, getParentRenderWindow } from '../window';\nimport { extend, deserializeFunctions, get, stringify,\n globalFor, setLogLevel, getElement, noop, stringifyError } from '../../lib';\nimport { POST_MESSAGE, CONTEXT_TYPES, CLOSE_REASONS, INITIAL_PROPS } from '../../constants';\nimport { RenderError } from '../../error';\nimport type { Component } from '../component';\nimport type { BuiltInPropsType } from '../component/props';\n\nimport { normalizeChildProps } from './props';\n\nexport type ChildExportsType

= {\n updateProps : (props : (BuiltInPropsType & P)) => ZalgoPromise,\n close : () => ZalgoPromise\n};\n\n/* Child Component\n ---------------\n\n This is the portion of code which runs inside the frame or popup window containing the component's implementation.\n\n When the component author calls myComponent.attach(), it creates a new instance of ChildComponent, which is then\n responsible for managing the state and messaging back up to the parent, and providing props for the component to\n utilize.\n*/\n\nexport class ChildComponent

extends BaseComponent

{\n\n component : Component

\n props : BuiltInPropsType & P\n context : string\n\n onPropHandlers : Array<(BuiltInPropsType & P) => void>\n onInit : ZalgoPromise>\n watchingForResize : boolean\n autoResize : { width : boolean, height : boolean, element? : string }\n\n constructor(component : Component

) {\n super();\n this.component = component;\n\n if (!this.hasValidParentDomain()) {\n this.error(new RenderError(`Can not be rendered by domain: ${ this.getParentDomain() }`));\n return;\n }\n\n this.component.log(`construct_child`);\n\n // The child can specify some default props if none are passed from the parent. This often makes integrations\n // a little more seamless, as applicaiton code can call props.foo() without worrying about whether the parent\n // has provided them or not, and fall-back to some default behavior.\n\n this.onPropHandlers = [];\n\n for (let item of [ this.component, window ]) {\n for (let [ name, getter ] of [ [ 'xchild', () => this ], [ 'xprops', () => this.props ] ]) {\n // $FlowFixMe\n Object.defineProperty(item, name, {\n configurable: true,\n get: () => {\n if (!this.props) {\n this.setProps(this.getInitialProps(), getParentDomain());\n }\n // $FlowFixMe\n delete item[name];\n // $FlowFixMe\n item[name] = getter();\n // $FlowFixMe\n return item[name];\n }\n });\n }\n }\n\n this.component.log(`init_child`);\n\n this.setWindows();\n\n // Send an init message to our parent. This gives us an initial set of data to use that we can use to function.\n //\n // For example:\n //\n // - What context are we\n // - What props has the parent specified\n\n this.onInit = this.sendToParent(POST_MESSAGE.INIT, {\n\n exports: this.exports()\n\n }).then(({ origin, data }) => {\n\n this.context = data.context;\n this.setProps(data.props, origin);\n\n this.watchForResize();\n\n return this;\n\n }).catch(err => {\n\n this.error(err);\n throw err;\n });\n }\n\n hasValidParentDomain() : boolean {\n return matchDomain(this.component.allowedParentDomains, this.getParentDomain());\n }\n\n init() : ZalgoPromise> {\n return this.onInit;\n }\n\n getParentDomain() : string {\n return getParentDomain();\n }\n\n onProps(handler : Function) {\n this.onPropHandlers.push(handler);\n }\n\n getParentComponentWindow() : CrossDomainWindowType {\n return getParentComponentWindow();\n }\n\n getParentRenderWindow() : CrossDomainWindowType {\n return getParentRenderWindow();\n }\n\n getInitialProps() : (BuiltInPropsType & P) {\n let componentMeta = getComponentMeta();\n\n let props = componentMeta.props;\n\n if (props.type === INITIAL_PROPS.RAW) {\n props = props.value;\n } else if (props.type === INITIAL_PROPS.UID) {\n\n let parentComponentWindow = getParentComponentWindow();\n\n if (!isSameDomain(parentComponentWindow)) {\n\n if (window.location.protocol === 'file:') {\n throw new Error(`Can not get props from file:// domain`);\n }\n\n throw new Error(`Parent component window is on a different domain - expected ${ getDomain() } - can not retrieve props`);\n }\n\n let global = globalFor(parentComponentWindow);\n\n if (!global) {\n throw new Error(`Can not find global for parent component - can not retrieve props`);\n }\n\n props = JSON.parse(global.props[componentMeta.uid]);\n\n } else {\n throw new Error(`Unrecognized props type: ${ props.type }`);\n }\n\n if (!props) {\n throw new Error(`Initial props not found`);\n }\n \n return deserializeFunctions(props, ({ fullKey, self, args }) => {\n return this.onInit.then(() => {\n let func = get(this.props, fullKey);\n\n if (typeof func !== 'function') {\n throw new TypeError(`Expected ${ fullKey } to be function, got ${ typeof func }`);\n }\n\n return func.apply(self, args);\n });\n });\n }\n\n\n setProps(props : (BuiltInPropsType & P), origin : string, required : boolean = true) {\n // $FlowFixMe\n this.props = this.props || {};\n let normalizedProps = normalizeChildProps(this.component, props, origin, required);\n extend(this.props, normalizedProps);\n if (this.props.logLevel) {\n setLogLevel(this.props.logLevel);\n }\n for (let handler of this.onPropHandlers) {\n handler.call(this, this.props);\n }\n }\n\n\n /* Send to Parent\n --------------\n\n Send a post message to our parent window.\n */\n\n sendToParent(name : string, data : ?Object = {}, options : ?Object = {}) : ZalgoPromise<{ origin : string, source : CrossDomainWindowType, data : Object }> {\n let parentWindow = getParentComponentWindow();\n\n if (!parentWindow) {\n throw new Error(`Can not find parent component window to message`);\n }\n\n this.component.log(`send_to_parent_${ name }`);\n\n return send(parentWindow, name, data, { domain: getParentDomain(), ...options });\n }\n\n\n /* Set Windows\n -----------\n\n Determine the parent window, and the parent component window. Note -- these may be different, if we were\n rendered using renderTo.\n */\n\n setWindows() {\n\n\n // Ensure we do not try to .attach() multiple times for the same component on the same page\n\n if (window.__activeZoidComponent__) {\n throw this.component.createError(`Can not attach multiple components to the same window`);\n }\n\n window.__activeZoidComponent__ = this;\n\n // Get the direct parent window\n\n if (!getParentComponentWindow()) {\n throw this.component.createError(`Can not find parent window`);\n }\n\n let componentMeta = getComponentMeta();\n\n if (componentMeta.tag !== this.component.tag) {\n throw this.component.createError(`Parent is ${ componentMeta.tag } - can not attach ${ this.component.tag }`);\n }\n\n // Note -- getting references to other windows is probably one of the hardest things to do. There's basically\n // only a few ways of doing it:\n //\n // - The window is a direct parent, in which case you can use window.parent or window.opener\n // - The window is an iframe owned by you or one of your parents, in which case you can use window.frames\n // - The window sent you a post-message, in which case you can use event.source\n //\n // If we didn't rely on winProps.parent here from the window name, we'd have to relay all of our messages through\n // our actual parent. Which is no fun at all, and pretty error prone even with the help of post-robot. So this\n // is the lesser of two evils until browsers give us something like getWindowByName(...)\n\n // If the parent window closes, we need to close ourselves. There's no point continuing to run our component\n // if there's no parent to message to.\n\n this.watchForClose();\n }\n\n watchForClose() {\n window.addEventListener('unload', () => this.checkClose());\n }\n\n enableAutoResize({ width = true, height = true } : { width : boolean, height : boolean } = {}) {\n this.autoResize = { width, height };\n this.watchForResize();\n }\n\n getAutoResize() : { width : boolean, height : boolean, element : HTMLElement } {\n\n let width = false;\n let height = false;\n\n let autoResize = this.autoResize || this.component.autoResize;\n\n if (typeof autoResize === 'object') {\n width = Boolean(autoResize.width);\n height = Boolean(autoResize.height);\n } else if (autoResize) {\n width = true;\n height = true;\n }\n\n let element;\n\n if (autoResize.element) {\n element = getElement(autoResize.element);\n } else {\n element = document.body;\n }\n\n // $FlowFixMe\n return { width, height, element };\n }\n\n watchForResize() : ?ZalgoPromise {\n\n let { width, height, element } = this.getAutoResize();\n\n if (!width && !height) {\n return;\n }\n\n if (this.context === CONTEXT_TYPES.POPUP) {\n return;\n }\n\n if (this.watchingForResize) {\n return;\n }\n\n this.watchingForResize = true;\n \n onResize(element, ({ width: newWidth, height: newHeight }) => {\n this.resize(width ? newWidth : undefined, height ? newHeight : undefined);\n }, { width, height });\n }\n\n\n exports() : ChildExportsType

{\n\n let self = this;\n\n return {\n updateProps(props : (BuiltInPropsType & P)) : ZalgoPromise {\n return ZalgoPromise.try(() => self.setProps(props, this.origin, false));\n },\n\n close() : ZalgoPromise {\n return ZalgoPromise.try(() => self.destroy());\n }\n };\n }\n\n\n /* Resize\n ------\n\n Resize the child window. Must be done on a user action like a click if we're in a popup\n */\n\n resize(width : ?number, height : ?number) : ZalgoPromise {\n return ZalgoPromise.resolve().then(() => {\n\n this.component.log(`resize`, { width: stringify(width), height: stringify(height) });\n\n if (this.context === CONTEXT_TYPES.POPUP) {\n return;\n }\n\n return this.sendToParent(POST_MESSAGE.RESIZE, { width, height }).then(noop);\n });\n }\n\n /* Hide\n ----\n\n Hide the window and any parent template\n */\n\n hide() : ZalgoPromise {\n return this.sendToParent(POST_MESSAGE.HIDE).then(noop);\n }\n\n show() : ZalgoPromise {\n return this.sendToParent(POST_MESSAGE.SHOW).then(noop);\n }\n\n userClose() : void {\n return this.close(CLOSE_REASONS.USER_CLOSED);\n }\n\n\n /* Close\n -----\n\n Close the child window\n */\n\n close(reason : string = CLOSE_REASONS.CHILD_CALL) {\n\n this.component.log(`close_child`);\n\n // Ask our parent window to close us\n\n this.sendToParent(POST_MESSAGE.CLOSE, { reason });\n }\n\n checkClose() {\n this.sendToParent(POST_MESSAGE.CHECK_CLOSE, {}, { fireAndForget: true });\n }\n\n\n destroy() : ZalgoPromise {\n return flush().then(() => {\n window.close();\n });\n }\n\n\n /* Focus\n -----\n\n Focus the child window. Must be done on a user action like a click\n */\n\n focus() {\n this.component.log(`focus`);\n\n window.focus();\n }\n\n\n /* Error\n -----\n\n Send an error back to the parent\n */\n\n error(err : mixed) : ZalgoPromise {\n\n let stringifiedError = stringifyError(err);\n\n this.component.logError(`error`, { error: stringifiedError });\n\n return this.sendToParent(POST_MESSAGE.ERROR, {\n error: stringifiedError\n }).then(noop);\n }\n}\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { cleanUpWindow } from 'post-robot/src';\nimport { findFrameByName, isSameDomain } from 'cross-domain-utils/src';\n\nimport { iframe, popup, toCSS, showElement, hideElement,\n destroyElement, normalizeDimension, watchElementForClose,\n awaitFrameWindow, addClass, removeClass, noop } from '../../lib';\nimport { CONTEXT_TYPES, DELEGATE, CLOSE_REASONS, CLASS_NAMES, DEFAULT_DIMENSIONS } from '../../constants';\nimport { getPosition, getParentComponentWindow } from '../window';\n\n\nexport type ContextDriverType = {\n\n focusable : boolean,\n renderedIntoContainerTemplate : boolean,\n allowResize : boolean,\n openOnClick : boolean,\n needsBridge : boolean,\n\n open : (?string) => ZalgoPromise,\n resize : (?(number | string), ?(number | string)) => void,\n show : () => void,\n hide : () => void,\n loadUrl : (string) => void,\n\n delegateOverrides : {\n [string] : string | Function\n },\n\n openPrerender : () => ZalgoPromise,\n switchPrerender? : () => void\n};\n\n/* Render Drivers\n --------------\n\n There are various differences in how we treat:\n\n - Opening frames and windows\n - Rendering up to the parent\n - Resizing\n - etc.\n\n based on the context we're rendering to.\n\n These render drivers split this functionality out in a driver pattern, so our component code doesn't bunch up into a\n series of if-popup-then-else-if-iframe code.\n*/\n\nexport let RENDER_DRIVERS : { [string] : ContextDriverType } = {};\n\n// Iframe context is rendered inline on the page, without any kind of parent template. It's the one context that is designed\n// to feel like a native element on the page.\n\nRENDER_DRIVERS[CONTEXT_TYPES.IFRAME] = {\n\n focusable: false,\n renderedIntoContainerTemplate: true,\n allowResize: true,\n openOnClick: false,\n needsBridge: false,\n\n open(url : ?string) : ZalgoPromise {\n\n let attributes = this.component.attributes.iframe || {};\n\n this.iframe = iframe({\n url,\n attributes: {\n name: this.childWindowName,\n title: this.component.name,\n scrolling: this.component.scrolling ? 'yes' : 'no',\n ...attributes\n },\n class: [\n CLASS_NAMES.COMPONENT_FRAME,\n CLASS_NAMES.INVISIBLE\n ]\n }, this.element);\n\n return awaitFrameWindow(this.iframe).then(frameWindow => {\n\n this.window = frameWindow;\n\n let detectClose = () => {\n return ZalgoPromise.try(() => {\n return this.props.onClose(CLOSE_REASONS.CLOSE_DETECTED);\n }).finally(() => {\n return this.destroy();\n });\n };\n\n let iframeWatcher = watchElementForClose(this.iframe, detectClose);\n let elementWatcher = watchElementForClose(this.element, detectClose);\n\n this.clean.register('destroyWindow', () => {\n\n iframeWatcher.cancel();\n elementWatcher.cancel();\n\n cleanUpWindow(this.window);\n\n delete this.window;\n\n if (this.iframe) {\n destroyElement(this.iframe);\n delete this.iframe;\n }\n });\n });\n },\n\n openPrerender() : ZalgoPromise {\n\n let attributes = this.component.attributes.iframe || {};\n\n this.prerenderIframe = iframe({\n attributes: {\n name: `__prerender__${ this.childWindowName }`,\n scrolling: this.component.scrolling ? 'yes' : 'no',\n ...attributes\n },\n class: [\n CLASS_NAMES.PRERENDER_FRAME,\n CLASS_NAMES.VISIBLE\n ]\n }, this.element);\n\n return awaitFrameWindow(this.prerenderIframe).then(prerenderFrameWindow => {\n\n this.prerenderWindow = prerenderFrameWindow;\n\n this.clean.register('destroyPrerender', () => {\n\n if (this.prerenderIframe) {\n destroyElement(this.prerenderIframe);\n delete this.prerenderIframe;\n }\n });\n });\n },\n\n switchPrerender() {\n\n addClass(this.prerenderIframe, CLASS_NAMES.INVISIBLE);\n removeClass(this.prerenderIframe, CLASS_NAMES.VISIBLE);\n\n addClass(this.iframe, CLASS_NAMES.VISIBLE);\n removeClass(this.iframe, CLASS_NAMES.INVISIBLE);\n\n setTimeout(() => {\n if (this.prerenderIframe) {\n destroyElement(this.prerenderIframe);\n }\n }, 1000);\n },\n\n delegateOverrides: {\n\n openContainer: DELEGATE.CALL_DELEGATE,\n destroyComponent: DELEGATE.CALL_DELEGATE,\n destroyContainer: DELEGATE.CALL_DELEGATE,\n cancelContainerEvents: DELEGATE.CALL_DELEGATE,\n createPrerenderTemplate: DELEGATE.CALL_DELEGATE,\n elementReady: DELEGATE.CALL_DELEGATE,\n showContainer: DELEGATE.CALL_DELEGATE,\n showComponent: DELEGATE.CALL_DELEGATE,\n hideContainer: DELEGATE.CALL_DELEGATE,\n hideComponent: DELEGATE.CALL_DELEGATE,\n hide: DELEGATE.CALL_DELEGATE,\n show: DELEGATE.CALL_DELEGATE,\n resize: DELEGATE.CALL_DELEGATE,\n loadUrl: DELEGATE.CALL_DELEGATE,\n hijackSubmit: DELEGATE.CALL_DELEGATE,\n openPrerender: DELEGATE.CALL_DELEGATE,\n switchPrerender: DELEGATE.CALL_DELEGATE,\n\n renderTemplate: DELEGATE.CALL_ORIGINAL,\n openContainerFrame: DELEGATE.CALL_ORIGINAL,\n getOutlet: DELEGATE.CALL_ORIGINAL,\n\n open(original : () => ZalgoPromise, override : () => ZalgoPromise) : () => ZalgoPromise {\n return function overrideOpen() : ZalgoPromise {\n return override.apply(this, arguments).then(() => {\n this.clean.set('window', findFrameByName(getParentComponentWindow(), this.childWindowName));\n\n if (!this.window) {\n throw new Error(`Unable to find parent component iframe window`);\n }\n });\n };\n }\n },\n\n resize(width : ?(number | string), height : ?(number | string)) {\n\n if (width) {\n this.container.style.width = toCSS(width);\n this.element.style.width = toCSS(width);\n }\n\n if (height) {\n this.container.style.height = toCSS(height);\n this.element.style.height = toCSS(height);\n }\n },\n\n show() {\n showElement(this.element);\n },\n\n hide() {\n hideElement(this.element);\n },\n\n loadUrl(url : string) {\n this.iframe.setAttribute('src', url);\n }\n};\n\nif (__ZOID__.__POPUP_SUPPORT__) {\n\n // Popup context opens up a centered popup window on the page.\n\n RENDER_DRIVERS[CONTEXT_TYPES.POPUP] = {\n\n focusable: true,\n renderedIntoContainerTemplate: false,\n allowResize: false,\n openOnClick: true,\n needsBridge: true,\n\n open(url : ?string = '') : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n let {\n width = DEFAULT_DIMENSIONS.WIDTH,\n height = DEFAULT_DIMENSIONS.HEIGHT\n } = this.component.dimensions || {};\n\n width = normalizeDimension(width, window.outerWidth);\n height = normalizeDimension(height, window.outerWidth);\n\n let { x, y } = getPosition({ width, height });\n\n let attributes = this.component.attributes.popup || {};\n\n this.window = popup(url || '', {\n name: this.childWindowName,\n width,\n height,\n top: y,\n left: x,\n status: 1,\n toolbar: 0,\n menubar: 0,\n resizable: 1,\n scrollbars: 1,\n ...attributes\n });\n\n this.prerenderWindow = this.window;\n\n this.clean.register('destroyWindow', () => {\n if (this.window) {\n this.window.close();\n cleanUpWindow(this.window);\n delete this.window;\n delete this.prerenderWindow;\n }\n });\n\n this.resize(width, height);\n });\n },\n\n openPrerender() : ZalgoPromise {\n return ZalgoPromise.try(noop);\n },\n\n resize() {\n // pass\n },\n\n hide() {\n throw new Error('Can not hide popup');\n },\n\n show() {\n throw new Error('Can not show popup');\n },\n\n delegateOverrides: {\n\n openContainer: DELEGATE.CALL_DELEGATE,\n destroyContainer: DELEGATE.CALL_DELEGATE,\n\n elementReady: DELEGATE.CALL_DELEGATE,\n\n showContainer: DELEGATE.CALL_DELEGATE,\n showComponent: DELEGATE.CALL_DELEGATE,\n hideContainer: DELEGATE.CALL_DELEGATE,\n hideComponent: DELEGATE.CALL_DELEGATE,\n\n hide: DELEGATE.CALL_DELEGATE,\n show: DELEGATE.CALL_DELEGATE,\n\n cancelContainerEvents: DELEGATE.CALL_DELEGATE,\n\n open: DELEGATE.CALL_ORIGINAL,\n loadUrl: DELEGATE.CALL_ORIGINAL,\n createPrerenderTemplate: DELEGATE.CALL_ORIGINAL,\n destroyComponent: DELEGATE.CALL_ORIGINAL,\n resize: DELEGATE.CALL_ORIGINAL,\n renderTemplate: DELEGATE.CALL_ORIGINAL,\n openContainerFrame: DELEGATE.CALL_ORIGINAL,\n getOutlet: DELEGATE.CALL_ORIGINAL\n },\n\n loadUrl(url : string) {\n\n if (isSameDomain(this.window)) {\n try {\n if (this.window.location && this.window.location.replace) {\n this.window.location.replace(url);\n return;\n }\n } catch (err) {\n // pass\n }\n }\n\n this.window.location = url;\n }\n };\n}\n","/* @flow */\n/* eslint complexity: off */\n\nimport type { Component } from '../component';\nimport type { MixedPropDefinitionType, PropsType } from '../component/props';\n\n// $FlowFixMe\nexport function validateProp(prop : MixedPropDefinitionType

, key : string, value : ?T, props : (PropsType & P), required : boolean = true) {\n\n let hasProp = value !== null && value !== undefined && value !== '';\n\n if (!hasProp) {\n if (required && prop.required !== false && !prop.hasOwnProperty('def')) {\n throw new Error(`Prop is required: ${ key }`);\n }\n\n return;\n }\n\n if (value && typeof value.then === 'function' && prop.promise) {\n return;\n }\n\n if (prop.type === 'function') {\n\n if (!(typeof value === 'function')) {\n throw new TypeError(`Prop is not of type function: ${ key }`);\n }\n\n } else if (prop.type === 'string') {\n\n if (typeof value !== 'string') {\n throw new TypeError(`Prop is not of type string: ${ key }`);\n }\n\n } else if (prop.type === 'object') {\n\n // Since we're sending everything by post-message, everything must be json serializable\n\n if (prop.sendToChild !== false) {\n try {\n JSON.stringify(value);\n } catch (err) {\n throw new Error(`Unable to serialize prop: ${ key }`);\n }\n }\n\n } else if (prop.type === 'number') {\n\n if (isNaN(parseInt(value, 10))) {\n throw new TypeError(`Prop is not a number: ${ key }`);\n }\n }\n\n if (typeof prop.validate === 'function' && value) {\n prop.validate(value, props);\n }\n}\n\n\n/* Validate Props\n --------------\n\n Validate user-defined props. Users can pass props down from the parent into the child component, but first we\n double check the values are what we expect, based on the props spec defined in the original component.\n*/\n\nexport function validateProps

(component : Component

, props : PropsType, required : boolean = true) {\n\n props = props || {};\n\n if (props.env && typeof component.url === 'object' && !component.url[props.env]) {\n throw new Error(`Invalid env: ${ props.env }`);\n }\n\n // Set aliases\n\n for (let key of component.getPropNames()) {\n\n // $FlowFixMe\n let prop = component.getProp(key);\n\n if (prop.alias && props.hasOwnProperty(prop.alias)) {\n\n let value = props[prop.alias];\n delete props[prop.alias];\n\n if (!props[key]) {\n props[key] = value;\n }\n }\n }\n\n // First make sure all of the props we were sent are actually valid prop names\n\n /*\n\n if (!component.looseProps) {\n for (let key of Object.keys(props)) {\n if (component.getPropNames().indexOf(key) === -1) {\n throw component.error(`Invalid prop: ${key}`);\n }\n }\n }\n\n */\n\n // Then loop over the props we expect, and make sure they're all present and valid\n\n for (let key of Object.keys(props)) {\n\n // $FlowFixMe\n let prop : MixedPropDefinitionType

= component.getProp(key);\n let value = props[key];\n\n if (prop) {\n // $FlowFixMe\n validateProp(prop, key, value, props, required);\n }\n }\n\n for (let key of component.getPropNames()) {\n\n // $FlowFixMe\n let prop : MixedPropDefinitionType

= component.getProp(key);\n let value = props[key];\n\n if (prop && !props.hasOwnProperty(key)) {\n validateProp(prop, key, value, props, required);\n }\n }\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { noop, denodeify, once, memoize, promisify, dotify } from '../../lib';\nimport type { Component } from '../component';\nimport type { BuiltInPropsDefinitionType, PropsType, BuiltInPropsType, MixedPropDefinitionType } from '../component/props';\n\nimport type { ParentComponent } from './index';\n\nfunction isDefined(value : ?mixed) : boolean {\n return value !== null && value !== undefined && value !== '';\n}\n\n\n/* Normalize Prop\n --------------\n\n Turn prop into normalized value, using defaults, function options, etc.\n*/\n\n// $FlowFixMe\nexport function normalizeProp(component : Component

, instance : ParentComponent

, props : (PropsType & P), key : string, value : ?T) : ?(ZalgoPromise | T) { // eslint-disable-line complexity\n\n let prop = component.getProp(key);\n\n let resultValue;\n\n if (prop.value) {\n resultValue = prop.value;\n } else if (prop.def && (!props.hasOwnProperty(key) || !isDefined(value))) {\n resultValue = prop.def.call(component, props);\n } else {\n resultValue = value;\n }\n\n if (!resultValue && prop.alias && props[prop.alias]) {\n resultValue = props[prop.alias];\n }\n\n let decorated = false;\n\n if (prop.decorate && resultValue !== null && resultValue !== undefined) {\n resultValue = prop.decorate.call(instance, resultValue, props);\n decorated = true;\n }\n\n let type = prop.type;\n\n if (type === 'boolean') {\n // $FlowFixMe\n resultValue = Boolean(resultValue);\n\n } else if (type === 'function') {\n\n if (!resultValue && prop.noop) {\n // $FlowFixMe\n resultValue = noop;\n\n if (!decorated && prop.decorate) {\n // $FlowFixMe\n resultValue = prop.decorate.call(instance, noop, props);\n }\n }\n\n if (resultValue && typeof resultValue === 'function') {\n\n resultValue = resultValue.bind(instance);\n\n // If prop.denodeify is set, denodeify the function (accepts callback -> returns promise)\n\n if (prop.denodeify) {\n // $FlowFixMe\n resultValue = denodeify(resultValue);\n }\n\n if (prop.promisify) {\n // $FlowFixMe\n resultValue = promisify(resultValue);\n }\n\n // Wrap the function in order to log when it is called\n\n let original = resultValue;\n // $FlowFixMe\n resultValue = function() : mixed {\n component.log(`call_prop_${ key }`);\n return original.apply(this, arguments);\n };\n\n // If prop.once is set, ensure the function can only be called once\n\n if (prop.once) {\n // $FlowFixMe\n resultValue = once(resultValue);\n }\n\n // If prop.memoize is set, ensure the function is memoized (first return resultValue is cached and returned for any future calls)\n\n if (prop.memoize) {\n // $FlowFixMe\n resultValue = memoize(resultValue);\n }\n }\n\n } else if (type === 'string') {\n // pass\n\n } else if (type === 'object') {\n // pass\n\n } else if (type === 'number') {\n if (resultValue !== undefined) {\n // $FlowFixMe\n resultValue = parseInt(resultValue, 10);\n }\n }\n\n // $FlowFixMe\n return resultValue;\n}\n\n\n/* Normalize Props\n ---------------\n\n Turn props into normalized values, using defaults, function options, etc.\n*/\n\nexport function normalizeProps

(component : Component

, instance : ParentComponent

, props : (PropsType & P)) : (BuiltInPropsType & P) {\n\n let result = {};\n\n // $FlowFixMe\n props = props || {};\n\n for (let key of Object.keys(props)) {\n if (component.getPropNames().indexOf(key) !== -1) {\n // $FlowFixMe\n result[key] = normalizeProp(component, instance, props, key, props[key]);\n } else {\n result[key] = props[key];\n }\n }\n\n for (let key of component.getPropNames()) {\n if (!props.hasOwnProperty(key) && (!instance.props || !instance.props.hasOwnProperty(key))) {\n\n // $FlowFixMe\n let normalizedProp = normalizeProp(component, instance, props, key, props[key]);\n\n if (normalizedProp !== undefined) {\n result[key] = normalizedProp;\n }\n }\n }\n\n // $FlowFixMe\n return result;\n}\n\n\n/* Props to Query\n --------------\n\n Turn props into an initial query string to open the component with\n\n string -> string\n bool -> 1\n object -> json\n number -> string\n*/\n\n// $FlowFixMe\nfunction getQueryParam(prop : MixedPropDefinitionType

, key : string, value : T) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (typeof prop.queryParam === 'function') {\n return prop.queryParam(value);\n } else if (typeof prop.queryParam === 'string') {\n return prop.queryParam;\n } else {\n return key;\n }\n });\n}\n\n// $FlowFixMe\nfunction getQueryValue(prop : MixedPropDefinitionType

, key : string, value : T) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (typeof prop.queryValue === 'function') {\n return prop.queryValue(value);\n } else {\n return value;\n }\n });\n}\n\nexport function propsToQuery

(propsDef : BuiltInPropsDefinitionType

, props : (BuiltInPropsType & P)) : { [string] : string } {\n\n let params = {};\n\n return ZalgoPromise.all(Object.keys(props).map(key => {\n\n let prop = propsDef[key];\n\n if (!prop) {\n return; // eslint-disable-line array-callback-return\n }\n\n return ZalgoPromise.resolve().then(() => {\n\n let value = props[key];\n\n if (!value) {\n return;\n }\n\n if (!prop.queryParam) {\n return;\n }\n\n return value;\n\n }).then(value => {\n\n if (!value) {\n return;\n }\n\n return ZalgoPromise.all([\n // $FlowFixMe\n getQueryParam(prop, key, value),\n // $FlowFixMe\n getQueryValue(prop, key, value)\n ]).then(([ queryParam, queryValue ]) => {\n\n let result;\n\n if (typeof queryValue === 'boolean') {\n result = '1';\n } else if (typeof queryValue === 'string') {\n result = queryValue.toString();\n } else if (typeof queryValue === 'function') {\n return;\n } else if (typeof queryValue === 'object' && queryValue !== null) {\n\n if (prop.serialization === 'json') {\n result = JSON.stringify(queryValue);\n } else {\n result = dotify(queryValue, key);\n\n for (let dotkey of Object.keys(result)) {\n params[dotkey] = result[dotkey];\n }\n\n return;\n }\n\n } else if (typeof queryValue === 'number') {\n result = queryValue.toString();\n }\n\n params[queryParam] = result;\n });\n });\n\n })).then(() => {\n Object.keys(params).forEach(key => {\n params[key] = escape(params[key]);\n });\n return params;\n });\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { flush } from 'beaver-logger/client';\nimport { send, bridge } from 'post-robot/src';\nimport { isSameDomain, isWindowClosed, isTop, isSameTopWindow, matchDomain, getDistanceFromTop, onCloseWindow, getDomain, assertSameDomain, type CrossDomainWindowType, type SameDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getElementSafe, onResize } from 'belter/src';\n\nimport { BaseComponent } from '../base';\nimport { buildChildWindowName, getParentDomain, getParentComponentWindow } from '../window';\nimport { addEventListener, uniqueID, elementReady, writeElementToWindow,\n noop, showAndAnimate, animateAndHide, showElement, hideElement,\n addClass, extend, serializeFunctions, extendUrl, jsxDom,\n getElement, memoized, appendChild,\n global, writeToWindow, setLogLevel, once,\n prefetchPage, awaitFrameLoad, stringify, stringifyError } from '../../lib';\nimport { POST_MESSAGE, CONTEXT_TYPES, CLASS_NAMES, ANIMATION_NAMES, CLOSE_REASONS, DELEGATE, INITIAL_PROPS, WINDOW_REFERENCES, EVENTS, DEFAULT_DIMENSIONS } from '../../constants';\nimport { RenderError } from '../../error';\nimport type { Component } from '../component';\nimport type { PropsType, BuiltInPropsType } from '../component/props';\nimport type { ChildExportsType } from '../child';\nimport type { CancelableType, Jsx, DimensionsType, ElementRefType } from '../../types';\n\nimport { RENDER_DRIVERS, type ContextDriverType } from './drivers';\nimport { validateProps } from './validate';\nimport { propsToQuery, normalizeProps } from './props';\n\nglobal.props = global.props || {};\nglobal.windows = global.windows || {};\n\nexport type RenderOptionsType = {\n id : string,\n props : PropsType,\n tag : string,\n context : string,\n outlet : HTMLElement,\n CLASS : typeof CLASS_NAMES,\n ANIMATION : typeof ANIMATION_NAMES,\n CONTEXT : typeof CONTEXT_TYPES,\n EVENT : typeof EVENTS,\n actions : {\n close : (string) => ZalgoPromise,\n focus : () => ZalgoPromise\n },\n on : (string, () => void) => CancelableType,\n jsxDom : Jsx,\n document : Document,\n container : HTMLElement,\n dimensions : DimensionsType\n};\n\n\n/* Parent Component\n ----------------\n\n This manages the state of the component on the parent window side - i.e. the window the component is being rendered into.\n\n It handles opening the necessary windows/iframes, launching the component's url, and listening for messages back from the component.\n*/\n\nexport class ParentComponent

extends BaseComponent

{\n\n html : ?ZalgoPromise\n context : string\n props : BuiltInPropsType & P\n childWindowName : string\n onInit : ZalgoPromise>\n window : CrossDomainWindowType\n handledErrors : Array\n\n container : HTMLElement\n element : HTMLElement\n outlet : HTMLElement;\n iframe : HTMLIFrameElement\n\n prerenderIframe : HTMLIFrameElement\n prerenderWindow : SameDomainWindowType\n\n childExports : ?ChildExportsType

\n timeout : ?TimeoutID // eslint-disable-line no-undef\n\n constructor(component : Component

, context : string, { props } : { props : (PropsType & P) }) {\n super();\n\n this.component = component;\n\n this.validateParentDomain();\n\n this.context = context;\n\n try {\n this.setProps(props);\n } catch (err) {\n if (props.onError) {\n props.onError(err);\n }\n throw err;\n }\n\n if (this.props.logLevel) {\n setLogLevel(this.props.logLevel);\n }\n\n this.childWindowName = this.buildChildWindowName({ renderTo: window });\n\n this.registerActiveComponent();\n\n // Options passed during renderTo. We would not ordinarily expect a user to pass these, since we depend on\n // them only when we're trying to render from a sibling to a sibling\n\n this.component.log(`construct_parent`);\n\n this.watchForUnload();\n\n this.onInit = new ZalgoPromise();\n\n this.onInit.catch(err => {\n return this.error(err);\n });\n }\n\n render(element : ElementRefType, loadUrl : boolean = true) : ZalgoPromise> {\n return this.tryInit(() => {\n\n this.component.log(`render_${ this.context }`, { context: this.context, element, loadUrl: stringify(loadUrl) });\n\n let tasks = {};\n\n tasks.onRender = this.props.onRender();\n\n tasks.getDomain = this.getDomain();\n\n tasks.elementReady = ZalgoPromise.try(() => {\n if (element) {\n return this.elementReady(element);\n }\n });\n\n tasks.openContainer = tasks.elementReady.then(() => {\n return this.openContainer(element);\n });\n\n tasks.showContainer = tasks.openContainer.then(() => {\n return this.showContainer();\n });\n\n tasks.openPrerender = tasks.openContainer.then(() => {\n return this.openPrerender();\n });\n\n tasks.switchPrerender = ZalgoPromise.all([ tasks.openPrerender, this.onInit ]).then(() => {\n return this.switchPrerender();\n });\n\n // $FlowFixMe\n tasks.open = this.driver.openOnClick\n ? this.open()\n : tasks.openContainer.then(() => this.open());\n\n tasks.listen = ZalgoPromise.hash({ domain: tasks.getDomain, open: tasks.open }).then(({ domain }) => {\n this.listen(this.window, domain);\n });\n\n tasks.watchForClose = tasks.open.then(() => {\n return this.watchForClose();\n });\n\n tasks.linkDomain = ZalgoPromise.all([ tasks.getDomain, tasks.open ]).then(([ domain ]) => {\n if (bridge && typeof domain === 'string') {\n return bridge.linkUrl(this.window, domain);\n }\n });\n\n if (!this.html) {\n tasks.createPrerenderTemplate = tasks.openPrerender.then(() => {\n return this.createPrerenderTemplate();\n });\n\n tasks.showComponent = tasks.createPrerenderTemplate.then(() => {\n return this.showComponent();\n });\n }\n\n tasks.openBridge = ZalgoPromise.all([ tasks.getDomain, tasks.open ]).then(([ domain ]) => {\n return this.openBridge(typeof domain === 'string' ? domain : null);\n });\n\n if (this.html) {\n tasks.loadHTML = tasks.open.then(() => {\n return this.loadHTML();\n });\n\n } else if (loadUrl) {\n tasks.buildUrl = this.buildUrl();\n\n tasks.loadUrl = ZalgoPromise.all([\n tasks.buildUrl,\n tasks.open,\n tasks.linkDomain,\n tasks.listen,\n tasks.open,\n tasks.openBridge,\n tasks.createPrerenderTemplate\n ]).then(([ url ]) => {\n return this.loadUrl(url);\n });\n\n tasks.runTimeout = tasks.loadUrl.then(() => {\n return this.runTimeout();\n });\n }\n\n return ZalgoPromise.hash(tasks);\n\n }).then(() => {\n return this.props.onEnter();\n }).then(() => {\n return this;\n });\n }\n\n @memoized\n getOutlet() : HTMLElement {\n let outlet = document.createElement('div');\n addClass(outlet, CLASS_NAMES.OUTLET);\n return outlet;\n }\n\n validateParentDomain() {\n let domain = getDomain();\n if (!matchDomain(this.component.allowedParentDomains, domain)) {\n throw new RenderError(`Can not be rendered by domain: ${ domain }`);\n }\n }\n\n renderTo(win : CrossDomainWindowType, element : ?string) : ZalgoPromise> {\n return this.tryInit(() => {\n\n if (win === window) {\n return this.render(element);\n }\n\n if (!isSameTopWindow(window, win)) {\n throw new Error(`Can only renderTo an adjacent frame`);\n }\n\n if (element && typeof element !== 'string') {\n throw new Error(`Element passed to renderTo must be a string selector, got ${ typeof element } ${ element }`);\n }\n\n this.checkAllowRenderTo(win);\n\n this.component.log(`render_${ this.context }_to_win`, { element: stringify(element), context: this.context });\n\n this.childWindowName = this.buildChildWindowName({ renderTo: win });\n\n this.delegate(win);\n\n return this.render(element);\n });\n }\n\n @memoized\n prefetch() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.html = this.buildUrl().then(url => {\n return prefetchPage(url).then(html => {\n\n let host = `${ url.split('/').slice(0, 3).join('/') }`;\n let uri = `/${ url.split('/').slice(3).join('/') }`;\n\n return `\n \n\n ${ html }\n\n \n `;\n });\n });\n });\n }\n\n @memoized\n loadHTML() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (!this.html) {\n throw new Error(`Html not prefetched`);\n }\n\n return this.html.then(html => {\n // $FlowFixMe\n return writeToWindow(this.window, html);\n });\n });\n }\n\n checkAllowRenderTo(win : CrossDomainWindowType) {\n\n if (!win) {\n throw this.component.createError(`Must pass window to renderTo`);\n }\n\n if (isSameDomain(win)) {\n return;\n }\n\n let origin = getDomain();\n let domain = this.component.getDomain(null, this.props.env);\n\n if (!domain) {\n throw new Error(`Could not determine domain to allow remote render`);\n }\n\n if (matchDomain(domain, origin)) {\n return;\n }\n\n throw new Error(`Can not render remotely to ${ domain.toString() } - can only render to ${ origin }`);\n }\n\n registerActiveComponent() {\n ParentComponent.activeComponents.push(this);\n\n this.clean.register(() => {\n ParentComponent.activeComponents.splice(ParentComponent.activeComponents.indexOf(this), 1);\n });\n }\n\n\n getComponentParentRef() : { ref : string, uid? : string, distance? : number } {\n let domain = this.component.getDomain(null, this.props.env);\n\n if (domain === getDomain(window)) {\n let uid = uniqueID();\n global.windows = global.windows || {};\n global.windows[uid] = window;\n this.clean.register(() => {\n delete global.windows[uid];\n });\n\n return { ref: WINDOW_REFERENCES.GLOBAL, uid };\n }\n\n if (this.context === CONTEXT_TYPES.POPUP) {\n return { ref: WINDOW_REFERENCES.OPENER };\n }\n\n if (isTop(window)) {\n return { ref: WINDOW_REFERENCES.TOP };\n }\n\n return { ref: WINDOW_REFERENCES.PARENT, distance: getDistanceFromTop(window) };\n }\n\n getRenderParentRef(renderToWindow : CrossDomainWindowType = window) : { ref : string, uid? : string, distance? : number } {\n\n if (renderToWindow === window) {\n return this.getComponentParentRef();\n }\n\n let uid = uniqueID();\n global.windows[uid] = renderToWindow;\n\n this.clean.register(() => {\n delete global.windows[uid];\n });\n\n return { ref: WINDOW_REFERENCES.GLOBAL, uid };\n }\n\n buildChildWindowName({ renderTo = window } : { renderTo : CrossDomainWindowType } = {}) : string {\n\n let childDomain = this.component.getDomain(null, this.props.env);\n let sameDomain = isSameDomain(renderTo);\n\n let uid = uniqueID();\n let tag = this.component.tag;\n let sProps = serializeFunctions(this.getPropsForChild());\n\n let componentParent = this.getComponentParentRef();\n let renderParent = this.getRenderParentRef(renderTo);\n\n let secureProps = !sameDomain && !this.component.unsafeRenderTo;\n\n let props = secureProps\n ? { type: INITIAL_PROPS.UID, uid }\n : { type: INITIAL_PROPS.RAW, value: sProps };\n\n if (props.type === INITIAL_PROPS.UID) {\n global.props[uid] = JSON.stringify(sProps);\n\n this.clean.register(() => {\n delete global.props[uid];\n });\n }\n\n return buildChildWindowName(this.component.name, this.component.version, { uid, tag, componentParent, renderParent, props, childDomain });\n }\n\n\n /* Send to Parent\n --------------\n\n Send a post message to our parent window.\n */\n\n sendToParent(name : string, data : Object) : ZalgoPromise<{ origin : string, source : CrossDomainWindowType, data : Object }> {\n let parentWindow = getParentComponentWindow();\n\n if (!parentWindow) {\n throw new Error(`Can not find parent component window to message`);\n }\n\n this.component.log(`send_to_parent_${ name }`);\n\n return send(getParentComponentWindow(), name, data, { domain: getParentDomain() });\n }\n\n\n /* Set Props\n ---------\n\n Normalize props and generate the url we'll use to render the component\n */\n\n setProps(props : (PropsType & P), required : boolean = true) {\n\n validateProps(this.component, props, required);\n if (this.component.validate) {\n this.component.validate(this.component, props);\n }\n\n // $FlowFixMe\n this.props = this.props || {};\n\n extend(this.props, normalizeProps(this.component, this, props));\n }\n\n\n /* Build Url\n ---------\n\n We build the props we're passed into the initial url. This means the component server-side can start rendering\n itself based on whatever props the merchant provides.\n */\n\n @memoized\n buildUrl() : ZalgoPromise {\n\n let propUrl : (string | void) = this.props.url;\n\n return ZalgoPromise.all([\n\n propUrl,\n // $FlowFixMe\n propsToQuery({ ...this.component.props, ...this.component.builtinProps }, this.props)\n\n ]).then(([ url, query ]) => {\n\n // Do not extend the url if it is for a different domain\n\n if (url && !this.component.getValidDomain(url)) {\n return url;\n }\n\n return ZalgoPromise.try(() => {\n\n return url || this.component.getUrl(this.props.env, this.props);\n\n }).then(finalUrl => {\n\n query.xcomponent = '1';\n return extendUrl(finalUrl, { query });\n });\n });\n }\n\n\n getDomain() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n return this.props.url;\n\n }).then(url => {\n\n let domain = this.component.getDomain(url, this.props.env);\n\n if (domain) {\n return domain;\n }\n\n if (this.component.buildUrl) {\n return ZalgoPromise.try(() => this.component.buildUrl(this.props)).then(builtUrl => {\n return this.component.getDomain(builtUrl, this.props.env);\n });\n }\n\n }).then(domain => {\n\n if (!domain) {\n throw new Error(`Could not determine domain`);\n }\n\n return domain;\n });\n }\n\n getPropsForChild() : (BuiltInPropsType & P) {\n\n let result = {};\n\n for (let key of Object.keys(this.props)) {\n let prop = this.component.getProp(key);\n\n if (!prop || prop.sendToChild !== false) {\n result[key] = this.props[key];\n }\n }\n\n // $FlowFixMe\n return result;\n }\n\n\n /* Update Props\n ------------\n\n Send new props down to the child\n */\n\n updateProps(props : (PropsType & P)) : ZalgoPromise {\n this.setProps(props, false);\n\n return this.onInit.then(() => {\n if (this.childExports) {\n return this.childExports.updateProps(this.getPropsForChild());\n } else {\n throw new Error(`Child exports were not available`);\n }\n });\n }\n\n\n openBridge(domain : ?string) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (!bridge || !this.driver.needsBridge) {\n return;\n }\n\n let needsBridgeParams : Object = { win: this.window };\n if (domain) {\n needsBridgeParams.domain = domain;\n }\n\n let needsBridge = bridge.needsBridge(needsBridgeParams);\n\n let bridgeUrl = this.component.getBridgeUrl(this.props.env);\n\n if (!bridgeUrl) {\n\n if (needsBridge && domain && !bridge.hasBridge(domain, domain)) {\n throw new Error(`Bridge url needed to render ${ this.context }`);\n }\n\n return;\n }\n\n bridgeUrl = extendUrl(bridgeUrl, { query: { version: this.component.version } });\n\n let bridgeDomain = this.component.getBridgeDomain(this.props.env);\n\n if (!bridgeDomain) {\n throw new Error(`Can not determine domain for bridge`);\n }\n\n if (needsBridge) {\n return bridge.openBridge(bridgeUrl, bridgeDomain).then(result => {\n if (result) {\n return result;\n }\n });\n }\n });\n }\n\n\n /* Open\n ----\n\n Open a new window in the desired context\n */\n\n @memoized\n open() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.component.log(`open_${ this.context }`, { windowName: this.childWindowName });\n if (this.props.win) {\n this.clean.set('window', this.props.win);\n assertSameDomain(this.window).name = this.childWindowName;\n return;\n }\n return this.driver.open.call(this);\n });\n }\n\n @memoized\n openPrerender() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.component.prerenderTemplate) {\n return this.driver.openPrerender.call(this);\n }\n });\n }\n\n @memoized\n switchPrerender() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.prerenderWindow && this.driver.switchPrerender) {\n return this.driver.switchPrerender.call(this);\n }\n });\n }\n\n get driver() : ContextDriverType {\n\n if (!this.context) {\n throw new Error('Context not set');\n }\n\n return RENDER_DRIVERS[this.context];\n }\n\n elementReady(element : ElementRefType) : ZalgoPromise {\n return elementReady(element).then(noop);\n }\n\n\n delegate(win : CrossDomainWindowType) {\n\n this.component.log(`delegate_${ this.context }`);\n\n let props = {\n uid: this.props.uid,\n dimensions: this.props.dimensions,\n onClose: this.props.onClose,\n onDisplay: this.props.onDisplay\n };\n\n for (let propName of this.component.getPropNames()) {\n let prop = this.component.getProp(propName);\n\n if (prop.allowDelegate) {\n props[propName] = this.props[propName];\n }\n }\n\n let delegate = send(win, `${ POST_MESSAGE.DELEGATE }_${ this.component.name }`, {\n\n context: this.context,\n env: this.props.env,\n\n options: {\n\n context: this.context,\n\n childWindowName: this.childWindowName,\n isWindowClosed: () => isWindowClosed(this.window),\n\n props,\n\n overrides: {\n focus: () => this.focus(),\n userClose: () => this.userClose(),\n getDomain: () => this.getDomain(),\n\n error: (err) => this.error(err),\n on: (eventName, handler) => this.on(eventName, handler)\n }\n }\n\n }).then(({ data }) => {\n\n this.clean.register(data.destroy);\n return data;\n\n }).catch(err => {\n\n throw new Error(`Unable to delegate rendering. Possibly the component is not loaded in the target window.\\n\\n${ stringifyError(err) }`);\n });\n\n let overrides = this.driver.delegateOverrides;\n\n for (let key of Object.keys(overrides)) {\n let val = overrides[key];\n\n if (val === DELEGATE.CALL_ORIGINAL) {\n continue;\n }\n\n // $FlowFixMe\n let original = this[key];\n\n // $FlowFixMe\n this[key] = function overridenFunction() : ZalgoPromise {\n return delegate.then(data => {\n\n let override = data.overrides[key];\n\n if (val === DELEGATE.CALL_DELEGATE) {\n return override.apply(this, arguments);\n }\n\n if (typeof val === 'function') {\n return val(original, override).apply(this, arguments);\n }\n\n throw new Error(`Expected delgate to be CALL_ORIGINAL, CALL_DELEGATE, or factory method`);\n });\n };\n }\n }\n\n /* Watch For Close\n ---------------\n\n Watch for the child window closing, so we can cleanup.\n Also watch for this window changing location, so we can close the component.\n */\n\n watchForClose() {\n let closeWindowListener = onCloseWindow(this.window, () => {\n this.component.log(`detect_close_child`);\n\n return ZalgoPromise.try(() => {\n return this.props.onClose(CLOSE_REASONS.CLOSE_DETECTED);\n }).finally(() => {\n return this.destroy();\n });\n }, 3000);\n\n this.clean.register('destroyCloseWindowListener', closeWindowListener.cancel);\n }\n\n watchForUnload() {\n\n // Our child has no way of knowing if we navigated off the page. So we have to listen for unload\n // and close the child manually if that happens.\n\n let onunload = once(() => {\n this.component.log(`navigate_away`);\n flush();\n this.destroyComponent();\n });\n\n let unloadWindowListener = addEventListener(window, 'unload', onunload);\n\n this.clean.register('destroyUnloadWindowListener', unloadWindowListener.cancel);\n }\n\n\n /* Load Url\n --------\n\n Load url into the child window. This is separated out because it's quite common for us to have situations\n where opening the child window and loading the url happen at different points.\n */\n\n loadUrl(url : string) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.component.log(`load_url`);\n\n if (window.location.href.split('#')[0] === url.split('#')[0]) {\n url = extendUrl(url, {\n query: {\n [ uniqueID() ]: '1'\n }\n });\n }\n\n return this.driver.loadUrl.call(this, url);\n });\n }\n\n\n hijack(targetElement : HTMLFormElement | HTMLAnchorElement) {\n targetElement.target = this.childWindowName;\n }\n\n /* Run Timeout\n -----------\n\n Set a timeout on the initial render, and call this.props.onTimeout if we don't get an init call in time.\n */\n\n runTimeout() {\n let timeout = this.props.timeout;\n\n if (timeout) {\n let id = this.timeout = setTimeout(() => {\n\n this.component.log(`timed_out`, { timeout: timeout.toString() });\n\n let error = this.component.createError(`Loading component timed out after ${ timeout } milliseconds`);\n\n this.onInit.reject(error);\n this.props.onTimeout(error);\n\n }, timeout);\n\n this.clean.register(() => {\n clearTimeout(id);\n delete this.timeout;\n });\n }\n }\n\n\n /* Listeners\n ---------\n\n Post-robot listeners to the child component window\n */\n\n listeners() : { [string] : (CrossDomainWindowType, Object) => mixed } {\n return {\n\n // The child rendered, and the component called .attach()\n // We have no way to know when the child has set up its listeners for the first time, so we have to listen\n // for this message to be sure so we can continue doing anything from the parent\n\n [ POST_MESSAGE.INIT ](source : CrossDomainWindowType, data : Object) : { props : BuiltInPropsType & P, context : string } {\n\n this.childExports = data.exports;\n\n this.onInit.resolve(this);\n\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n\n return {\n props: this.getPropsForChild(),\n context: this.context\n };\n },\n\n\n // The child has requested that we close it. Since iframes can't close themselves, we need\n // this logic to exist in the parent window\n\n [ POST_MESSAGE.CLOSE ](source : CrossDomainWindowType, data : Object) {\n this.close(data.reason);\n },\n\n [ POST_MESSAGE.CHECK_CLOSE ]() {\n this.checkClose();\n },\n\n // Iframes can't resize themselves, so they need the parent to take care of it for them.\n\n [ POST_MESSAGE.RESIZE ](source : CrossDomainWindowType, data : Object) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.driver.allowResize) {\n return this.resize(data.width, data.height);\n }\n });\n },\n\n [ POST_MESSAGE.HIDE ]() {\n this.hide();\n },\n\n [ POST_MESSAGE.SHOW ]() {\n this.show();\n },\n\n\n // The child encountered an error\n\n [ POST_MESSAGE.ERROR ](source : CrossDomainWindowType, data : Object) {\n this.error(new Error(data.error));\n }\n };\n }\n\n\n /* Resize\n ------\n\n Resize the child component window\n */\n\n resize(width : ?(number | string), height : ?(number | string)) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.component.log(`resize`, { height: stringify(height), width: stringify(width) });\n this.driver.resize.call(this, width, height);\n if (this.props.onResize) {\n this.props.onResize();\n }\n });\n }\n\n\n /* Hide\n ----\n\n Hide the component and any parent template\n */\n\n hide() : void {\n\n if (this.container) {\n hideElement(this.container);\n }\n\n return this.driver.hide.call(this);\n }\n\n show() : void {\n\n if (this.container) {\n showElement(this.container);\n }\n\n return this.driver.show.call(this);\n }\n\n\n checkClose() {\n let closeWindowListener = onCloseWindow(this.window, () => {\n this.userClose();\n }, 50, 500);\n\n this.clean.register(closeWindowListener.cancel);\n }\n\n\n userClose() : ZalgoPromise {\n return this.close(CLOSE_REASONS.USER_CLOSED);\n }\n\n\n /* Close\n -----\n\n Close the child component\n */\n\n @memoized\n close(reason : string = CLOSE_REASONS.PARENT_CALL) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n this.component.log(`close`, { reason });\n\n this.event.triggerOnce(EVENTS.CLOSE);\n return this.props.onClose(reason);\n\n }).then(() => {\n\n return ZalgoPromise.all([\n this.closeComponent(),\n this.closeContainer()\n ]);\n\n }).then(() => {\n\n return this.destroy();\n });\n }\n\n\n @memoized\n closeContainer(reason : string = CLOSE_REASONS.PARENT_CALL) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n this.event.triggerOnce(EVENTS.CLOSE);\n return this.props.onClose(reason);\n\n }).then(() => {\n\n return ZalgoPromise.all([\n this.closeComponent(reason),\n this.hideContainer()\n ]);\n\n }).then(() => {\n\n return this.destroyContainer();\n });\n }\n\n\n @memoized\n destroyContainer() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.clean.run('destroyContainerEvents');\n this.clean.run('destroyContainerTemplate');\n });\n }\n\n\n @memoized\n closeComponent(reason : string = CLOSE_REASONS.PARENT_CALL) : ZalgoPromise {\n\n let win = this.window;\n\n return ZalgoPromise.try(() => {\n\n return this.cancelContainerEvents();\n\n }).then(() => {\n\n this.event.triggerOnce(EVENTS.CLOSE);\n return this.props.onClose(reason);\n\n }).then(() => {\n\n return this.hideComponent();\n\n }).then(() => {\n\n return this.destroyComponent();\n\n }).then(() => {\n\n // IE in metro mode -- child window needs to close itself, or close will hang\n\n if (this.childExports && this.context === CONTEXT_TYPES.POPUP && !isWindowClosed(win)) {\n this.childExports.close().catch(noop);\n }\n });\n }\n\n destroyComponent() {\n this.clean.run('destroyUnloadWindowListener');\n this.clean.run('destroyCloseWindowListener');\n this.clean.run('destroyContainerEvents');\n this.clean.run('destroyWindow');\n }\n\n @memoized\n showContainer() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.props.onDisplay) {\n return this.props.onDisplay();\n }\n }).then(() => {\n if (this.container) {\n return showAndAnimate(this.container, ANIMATION_NAMES.SHOW_CONTAINER, this.clean.register);\n }\n });\n }\n\n @memoized\n showComponent() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.props.onDisplay) {\n return this.props.onDisplay();\n }\n }).then(() => {\n if (this.element) {\n return showAndAnimate(this.element, ANIMATION_NAMES.SHOW_COMPONENT, this.clean.register);\n }\n });\n }\n\n @memoized\n hideContainer() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.container) {\n return animateAndHide(this.container, ANIMATION_NAMES.HIDE_CONTAINER, this.clean.register);\n } else {\n return ZalgoPromise.resolve();\n }\n });\n }\n\n @memoized\n hideComponent() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.element) {\n return animateAndHide(this.element, ANIMATION_NAMES.HIDE_COMPONENT, this.clean.register);\n } else {\n return ZalgoPromise.resolve();\n }\n });\n }\n\n\n /* Focus\n -----\n\n Focus the child component window\n */\n\n focus() {\n\n if (this.window && !isWindowClosed(this.window)) {\n this.component.log(`focus`);\n this.window.focus();\n\n } else {\n\n throw new Error(`No window to focus`);\n }\n }\n\n\n /* Create Component Template\n -------------------------\n\n Creates an initial template and stylesheet which are loaded into the child window, to be displayed before the url is loaded\n */\n\n @memoized\n createPrerenderTemplate() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (!this.component.prerenderTemplate) {\n return ZalgoPromise.resolve();\n }\n\n return ZalgoPromise.try(() => {\n\n if (this.prerenderIframe) {\n return awaitFrameLoad(this.prerenderIframe).then(() => this.prerenderWindow);\n } else {\n return this.prerenderWindow;\n }\n\n }).then(win => {\n\n let doc;\n\n try {\n doc = win.document;\n } catch (err) {\n return;\n }\n\n let el;\n\n try {\n el = this.renderTemplate(this.component.prerenderTemplate, {\n jsxDom: jsxDom.bind(doc),\n document: doc\n });\n } catch (err) {\n this.component.logError('preprender_error', { err: err.stack ? err.stack : err.toString() });\n console.error(err.stack ? err.stack : err); // eslint-disable-line no-console\n return;\n }\n\n try {\n writeElementToWindow(win, el);\n } catch (err) {\n this.component.logError('preprender_error', { err: err.stack ? err.stack : err.toString() });\n console.error(err.stack ? err.stack : err); // eslint-disable-line no-console\n }\n\n let { width = false, height = false, element = 'body' } = (typeof this.component.autoResize === 'object' && this.component.autoResize !== null)\n ? this.component.autoResize\n : {};\n\n element = getElementSafe(element, doc);\n\n if (element && (width || height)) {\n onResize(element, ({ width: newWidth, height: newHeight }) => {\n this.resize(width ? newWidth : undefined, height ? newHeight : undefined);\n }, { width, height, win });\n }\n });\n });\n }\n\n\n /* Create Parent Template\n ----------------------\n\n Create a template and stylesheet for the parent template behind the element\n */\n\n renderTemplate(renderer : (RenderOptionsType) => HTMLElement, options : Object = {}) : HTMLElement {\n\n let {\n width = `${ DEFAULT_DIMENSIONS.WIDTH }px`,\n height = `${ DEFAULT_DIMENSIONS.HEIGHT }px`\n } = (this.component.dimensions || {});\n\n return renderer.call(this, {\n id: `${ CLASS_NAMES.ZOID }-${ this.component.tag }-${ this.props.uid }`,\n props: renderer.__xdomain__ ? null : this.props,\n tag: this.component.tag,\n context: this.context,\n outlet: this.getOutlet(),\n CLASS: CLASS_NAMES,\n ANIMATION: ANIMATION_NAMES,\n CONTEXT: CONTEXT_TYPES,\n EVENT: EVENTS,\n actions: {\n close: () => this.userClose(),\n focus: () => this.focus()\n },\n on: (eventName, handler) => this.on(eventName, handler),\n jsxDom,\n document,\n dimensions: { width, height },\n ...options\n });\n }\n\n @memoized\n openContainer(element : ?HTMLElement) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n let el;\n\n if (element) {\n el = getElement(element);\n } else {\n el = document.body;\n }\n\n if (!el) {\n throw new Error(`Could not find element to open container into`);\n }\n\n if (!this.component.containerTemplate) {\n if (this.driver.renderedIntoContainerTemplate) {\n throw new Error(`containerTemplate needed to render ${ this.context }`);\n }\n\n return;\n }\n\n let container = this.renderTemplate(this.component.containerTemplate, {\n container: el\n });\n\n this.container = container;\n hideElement(this.container);\n appendChild(el, this.container);\n\n if (this.driver.renderedIntoContainerTemplate) {\n this.element = this.getOutlet();\n hideElement(this.element);\n\n if (!this.element) {\n throw new Error('Could not find element to render component into');\n }\n\n hideElement(this.element);\n }\n\n this.clean.register('destroyContainerTemplate', () => {\n\n if (this.container && this.container.parentNode) {\n this.container.parentNode.removeChild(this.container);\n }\n\n delete this.container;\n });\n });\n }\n\n cancelContainerEvents() {\n this.clean.run('destroyContainerEvents');\n }\n\n\n /* Destroy\n -------\n\n Close the component and clean up any listeners and state\n */\n\n destroy() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.clean.hasTasks()) {\n this.component.log(`destroy`);\n flush();\n return this.clean.all();\n }\n });\n }\n\n\n tryInit(method : () => mixed) : ZalgoPromise> {\n return ZalgoPromise.try(method).catch(err => {\n this.onInit.reject(err);\n }).then(() => {\n return this.onInit;\n });\n }\n\n\n /* Error\n -----\n\n Handle an error\n */\n\n error(err : mixed) : ZalgoPromise {\n // eslint-disable-next-line promise/no-promise-in-callback\n return ZalgoPromise.try(() => {\n\n this.handledErrors = this.handledErrors || [];\n\n if (this.handledErrors.indexOf(err) !== -1) {\n // $FlowFixMe\n return;\n }\n\n this.handledErrors.push(err);\n\n this.onInit.reject(err);\n\n return this.destroy();\n\n }).then(() => {\n\n if (this.props.onError) {\n return this.props.onError(err);\n }\n\n }).catch(errErr => { // eslint-disable-line unicorn/catch-error-name\n\n throw new Error(`An error was encountered while handling error:\\n\\n ${ stringifyError(err) }\\n\\n${ stringifyError(errErr) }`);\n\n }).then(() => {\n\n if (!this.props.onError) {\n throw err;\n }\n });\n }\n\n static activeComponents : Array> = []\n\n static destroyAll() : ZalgoPromise {\n let results = [];\n\n while (ParentComponent.activeComponents.length) {\n results.push(ParentComponent.activeComponents[0].destroy());\n }\n\n return ZalgoPromise.all(results).then(noop);\n }\n}\n","/* @flow */\n\nimport { onCloseWindow, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { BaseComponent } from '../base';\nimport { ParentComponent } from '../parent';\nimport { RENDER_DRIVERS, type ContextDriverType } from '../parent/drivers';\nimport type { Component } from '../component';\nimport { noop } from '../../lib';\nimport type { CancelableType, DimensionsType } from '../../types';\n\nexport type DelegatePropsType = {\n uid : string,\n dimensions : DimensionsType,\n onClose : () => ?ZalgoPromise,\n onDisplay : () => ?ZalgoPromise\n};\n\nexport type DelegateOptionsType = {\n context : string,\n props : DelegatePropsType,\n childWindowName : string,\n isWindowClosed : () => ZalgoPromise,\n \n overrides : {\n focus : () => ZalgoPromise,\n userClose : (string) => ZalgoPromise,\n getDomain : () => ZalgoPromise,\n error : (mixed) => ZalgoPromise,\n on : (string, () => void) => CancelableType\n }\n};\n\nexport class DelegateComponent

extends BaseComponent

{\n\n source : CrossDomainWindowType\n context : string\n props : DelegatePropsType\n\n focus : () => ZalgoPromise\n userClose : (string) => ZalgoPromise\n getDomain : () => ZalgoPromise\n error : (mixed) => ZalgoPromise\n on : (string, () => void) => CancelableType\n\n childWindowName : string\n isWindowClosed : () => ZalgoPromise\n\n constructor(component : Component

, source : CrossDomainWindowType, options : DelegateOptionsType) {\n super();\n\n this.component = component;\n this.clean.set('source', source);\n\n this.context = options.context;\n\n this.props = {\n uid: options.props.uid,\n dimensions: options.props.dimensions,\n onClose: options.props.onClose,\n onDisplay: options.props.onDisplay\n };\n\n for (let propName of component.getPropNames()) {\n // $FlowFixMe\n let prop = this.component.getProp(propName);\n\n if (prop.allowDelegate) {\n this.props[propName] = options.props[propName];\n }\n }\n\n this.focus = () => {\n return ZalgoPromise.all([\n this.isWindowClosed().then(closed => {\n if (!closed) {\n window.open('', this.childWindowName);\n }\n }),\n options.overrides.focus.call(this)\n ]).then(noop);\n };\n\n this.clean.register('destroyFocusOverride', () => {\n // $FlowFixMe\n this.focus = noop;\n });\n\n this.userClose = options.overrides.userClose;\n this.getDomain = options.overrides.getDomain;\n this.error = options.overrides.error;\n this.on = options.overrides.on;\n\n let delegateOverrides = RENDER_DRIVERS[options.context].delegateOverrides;\n\n for (let key of Object.keys(delegateOverrides)) {\n // $FlowFixMe\n this[key] = ParentComponent.prototype[key];\n }\n\n this.childWindowName = options.childWindowName;\n this.isWindowClosed = options.isWindowClosed;\n\n ParentComponent.prototype.registerActiveComponent.call(this);\n\n this.watchForClose();\n }\n\n get driver() : ContextDriverType {\n\n if (!this.context) {\n throw new Error('Context not set');\n }\n\n return RENDER_DRIVERS[this.context];\n }\n\n watchForClose() {\n let closeWindowListener = onCloseWindow(this.source, () => this.destroy(), 3000);\n this.clean.register('destroyCloseWindowListener', closeWindowListener.cancel);\n }\n\n getOverrides(context : string) : { [string] : mixed } {\n\n let delegateOverrides = RENDER_DRIVERS[context].delegateOverrides;\n\n let overrides = {};\n\n let self = this;\n\n for (let key of Object.keys(delegateOverrides)) {\n overrides[key] = function delegateOverride() : mixed {\n // $FlowFixMe\n return ParentComponent.prototype[key].apply(self, arguments);\n };\n }\n\n return overrides;\n }\n\n destroy() : ZalgoPromise {\n return this.clean.all();\n }\n}\n","/* @flow */\n/* @jsx jsxDom */\n\nimport { type RenderOptionsType } from '../../parent';\n\nexport function defaultContainerTemplate({ id, tag, context, CLASS, outlet, jsxDom, dimensions : { width, height } } : RenderOptionsType) : HTMLElement {\n\n return (\n

\n \n\n { outlet }\n
\n );\n}\n","/* @flow */\n/* @jsx jsxDom */\n\nimport { type RenderOptionsType } from '../../parent';\n\nexport function defaultPrerenderTemplate({ jsxDom } : RenderOptionsType) : HTMLElement {\n return (\n \n \n \n \n \n
\n
\n
\n \n \n );\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { on, send } from 'post-robot/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getDomain, getDomainFromUrl, matchDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { BaseComponent } from '../base';\nimport { ChildComponent } from '../child';\nimport { ParentComponent, type RenderOptionsType } from '../parent';\nimport { DelegateComponent, type DelegateOptionsType } from '../delegate';\nimport { isZoidComponentWindow, getComponentMeta } from '../window';\nimport { CONTEXT_TYPES, POST_MESSAGE, WILDCARD } from '../../constants';\nimport { angular, angular2, glimmer, react, vue, script } from '../../drivers/index';\nimport { info, error, warn, setLogLevel, memoize } from '../../lib';\nimport type { EnvStringRegExp, CssDimensionsType, StringMatcherType, ElementRefType, EnvString } from '../../types';\n\nimport { validate } from './validate';\nimport { defaultContainerTemplate, defaultPrerenderTemplate } from './templates';\nimport { getInternalProps, type UserPropsDefinitionType, type BuiltInPropsDefinitionType, type PropsType, type BuiltInPropsType, type MixedPropDefinitionType } from './props';\n\nconst drivers = { angular, angular2, glimmer, react, vue, script };\n\n/* Component\n ---------\n\n This is the spec for the component. The idea is, when I call zoid.create(), it will create a new instance\n of Component with the blueprint needed to set up ParentComponents and ChildComponents.\n\n This is the one portion of code which is required by -- and shared to -- both the parent and child windows, and\n contains all of the configuration needed for them to set themselves up.\n*/\n\nexport type ComponentOptionsType

= {\n\n tag : string,\n\n url? : EnvString,\n buildUrl? : (BuiltInPropsType & P) => string | ZalgoPromise,\n\n domain? : EnvStringRegExp,\n bridgeUrl? : EnvString,\n bridgeDomain? : EnvString,\n\n props? : UserPropsDefinitionType

,\n\n dimensions? : CssDimensionsType,\n scrolling? : boolean,\n autoResize? : boolean | { width? : boolean, height? : boolean, element? : string },\n listenForResize? : boolean,\n\n defaultLogLevel? : string,\n allowedParentDomains? : StringMatcherType,\n\n version? : string,\n defaultEnv? : string,\n\n contexts? : { iframe? : boolean, popup? : boolean },\n defaultContext? : string,\n\n containerTemplate? : (RenderOptionsType) => HTMLElement,\n prerenderTemplate? : (RenderOptionsType) => HTMLElement,\n\n validate? : (Component

, UserPropsDefinitionType

) => void,\n\n unsafeRenderTo? : boolean\n};\n\nexport type ComponentDriverType = {\n global : () => ?T,\n register : (Component

, T) => mixed\n};\n\nexport class Component

extends BaseComponent

{\n\n name : string\n looseProps : boolean\n\n tag : string\n url : EnvString\n\n domain : EnvStringRegExp\n bridgeUrl : EnvString\n bridgeDomain : EnvString\n\n props : UserPropsDefinitionType

\n builtinProps : BuiltInPropsDefinitionType

\n\n dimensions : CssDimensionsType\n scrolling : boolean\n autoResize : ?(boolean | { width? : boolean, height? : boolean, element? : string })\n listenForResize : ?boolean\n\n defaultLogLevel : string\n allowedParentDomains : StringMatcherType\n\n version : string\n defaultEnv : string\n buildUrl : (BuiltInPropsType & P) => string | ZalgoPromise\n\n contexts : { iframe? : boolean, popup? : boolean }\n defaultContext : string\n\n containerTemplate : (RenderOptionsType) => HTMLElement\n prerenderTemplate : (RenderOptionsType) => HTMLElement\n\n validate : (Component

, (PropsType & P)) => void\n\n unsafeRenderTo : ?boolean\n\n driverCache : { [string] : mixed }\n\n xchild : ?ChildComponent

\n xprops : ?P\n\n constructor(options : ComponentOptionsType

) {\n super();\n validate(options);\n\n // The tag name of the component. Used by some drivers (e.g. angular) to turn the component into an html element,\n // e.g. \n\n this.addProp(options, 'tag');\n\n this.addProp(options, 'defaultLogLevel', 'info');\n\n this.addProp(options, 'allowedParentDomains', WILDCARD);\n\n // initially set log level to default log level configured when creating component\n setLogLevel(this.defaultLogLevel);\n\n if (Component.components[this.tag]) {\n throw new Error(`Can not register multiple components with the same tag`);\n }\n\n // Name of the component, used for logging. Auto-generated from the tag name by default.\n\n this.addProp(options, 'name', this.tag.replace(/-/g, '_'));\n\n // A json based spec describing what kind of props the component accepts. This is used to validate any props before\n // they are passed down to the child.\n\n this.builtinProps = getInternalProps();\n this.props = options.props || {};\n\n if (!options.props) {\n this.looseProps = true;\n }\n\n // The dimensions of the component, e.g. { width: '300px', height: '150px' }\n\n this.addProp(options, 'dimensions');\n this.addProp(options, 'scrolling');\n this.addProp(options, 'listenForResize');\n\n this.addProp(options, 'version', 'latest');\n\n // The default environment we should render to if none is specified in the parent\n\n this.addProp(options, 'defaultEnv');\n\n // A mapping of env->url, used to determine which url to load for which env\n\n this.addProp(options, 'buildUrl');\n\n this.addProp(options, 'url');\n this.addProp(options, 'domain');\n\n this.addProp(options, 'bridgeUrl');\n this.addProp(options, 'bridgeDomain');\n\n this.addProp(options, 'attributes', {});\n\n // A url to use by default to render the component, if not using envs\n\n\n // The allowed contexts. For example { iframe: true, popup: false }\n\n this.addProp(options, 'contexts', { iframe: true, popup: false });\n\n // The default context to render to\n\n this.addProp(options, 'defaultContext');\n\n // Auto Resize option\n\n this.addProp(options, 'autoResize', false);\n\n // Templates and styles for the parent page and the initial rendering of the component\n\n this.addProp(options, 'containerTemplate', defaultContainerTemplate);\n this.addProp(options, 'prerenderTemplate', defaultPrerenderTemplate);\n\n // Validation\n\n this.addProp(options, 'validate');\n\n // Security\n\n this.addProp(options, 'unsafeRenderTo', false);\n\n // A mapping of tag->component so we can reference components by string tag name\n\n Component.components[this.tag] = this;\n\n // Register all of the drivers for instantiating components. The model used is -- there's a standard javascript\n // way of rendering a component, then each other technology (e.g. react) needs to hook into that interface.\n // This makes us a little more pluggable and loosely coupled.\n this.registerDrivers();\n this.registerChild();\n this.listenDelegate();\n }\n\n @memoize\n getPropNames() : Array {\n let props = Object.keys(this.props);\n\n for (let key of Object.keys(this.builtinProps)) {\n if (props.indexOf(key) === -1) {\n props.push(key);\n }\n }\n\n return props;\n }\n\n // $FlowFixMe\n getProp(name : string) : MixedPropDefinitionType

{\n // $FlowFixMe\n return this.props[name] || this.builtinProps[name];\n }\n\n registerDrivers() {\n this.driverCache = {};\n\n for (let driverName of Object.keys(drivers)) {\n if (driverName.indexOf('_') === 0) {\n continue;\n }\n\n let driver = drivers[driverName];\n let glob = driver.global();\n if (glob) {\n this.driver(driverName, glob);\n }\n }\n }\n\n driver(name : string, dep : mixed) : mixed {\n if (!drivers[name]) {\n throw new Error(`Could not find driver for framework: ${ name }`);\n }\n\n if (!this.driverCache[name]) {\n this.driverCache[name] = drivers[name].register(this, dep);\n }\n\n return this.driverCache[name];\n }\n\n registerChild() : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n if (this.isChild()) {\n return new ChildComponent(this);\n }\n });\n }\n\n listenDelegate() {\n on(`${ POST_MESSAGE.ALLOW_DELEGATE }_${ this.name }`, () => {\n return true;\n });\n\n on(`${ POST_MESSAGE.DELEGATE }_${ this.name }`, ({ source, origin, data }) => {\n\n let domain = this.getDomain(null, data.env || this.defaultEnv);\n\n if (!domain) {\n throw new Error(`Could not determine domain to allow remote render`);\n }\n\n if (!matchDomain(domain, origin)) {\n throw new Error(`Can not render from ${ origin } - expected ${ domain.toString() }`);\n }\n\n let delegate = this.delegate(source, data.options);\n\n return {\n overrides: delegate.getOverrides(data.context),\n destroy: () => delegate.destroy()\n };\n });\n }\n\n canRenderTo(win : CrossDomainWindowType) : ZalgoPromise {\n return send(win, `${ POST_MESSAGE.ALLOW_DELEGATE }_${ this.name }`).then(({ data }) => {\n return data;\n }).catch(() => {\n return false;\n });\n }\n\n\n getValidDomain(url : ?string) : ?(string | RegExp) {\n\n if (!url) {\n return;\n }\n\n let domain = getDomainFromUrl(url);\n\n if (typeof this.domain === 'string' && domain === this.domain) {\n return domain;\n }\n\n let domains = this.domain;\n\n if (domains && typeof domains === 'object' && !(domains instanceof RegExp)) {\n for (let env of Object.keys(domains)) {\n\n if (env === 'test') {\n continue;\n }\n\n if (domain === domains[env]) {\n return domain;\n }\n }\n }\n }\n\n\n getDomain(url : ?string, env : string) : ?(string | RegExp) {\n\n let domain = this.getForEnv(this.domain, env);\n\n if (domain) {\n return domain;\n }\n\n domain = this.getValidDomain(url);\n\n if (domain) {\n return domain;\n }\n\n // $FlowFixMe\n let envUrl = this.getForEnv(this.url, env);\n\n if (envUrl) {\n // $FlowFixMe\n return getDomainFromUrl(envUrl);\n }\n\n if (url) {\n return getDomainFromUrl(url);\n }\n }\n\n getBridgeUrl(env : string) : ?string {\n // $FlowFixMe\n return this.getForEnv(this.bridgeUrl, env);\n }\n\n getForEnv(item : (string | RegExp) | { [string] : (string | RegExp) }, env : ?string) : ?(string | RegExp) {\n\n if (!item) {\n return;\n }\n\n if (typeof item === 'string' || item instanceof RegExp) {\n return item;\n }\n\n if (!env) {\n env = this.defaultEnv;\n }\n\n if (!env) {\n return;\n }\n\n if (env && typeof item === 'object' && item[env]) {\n return item[env];\n }\n }\n\n getBridgeDomain(env : string) : ?string {\n\n // $FlowFixMe\n let bridgeDomain = this.getForEnv(this.bridgeDomain, env);\n\n if (bridgeDomain) {\n // $FlowFixMe\n return bridgeDomain;\n }\n\n let bridgeUrl = this.getBridgeUrl(env);\n\n if (bridgeUrl) {\n return getDomainFromUrl(bridgeUrl);\n }\n }\n\n getUrl(env : string, props : BuiltInPropsType & P) : (string | ZalgoPromise) {\n\n // $FlowFixMe\n let url = this.getForEnv(this.url, env);\n\n if (url) {\n // $FlowFixMe\n return url;\n }\n\n if (this.buildUrl) {\n return this.buildUrl(props);\n }\n\n throw new Error(`Unable to get url`);\n }\n\n isZoidComponent() : boolean {\n return isZoidComponentWindow();\n }\n\n isChild() : boolean {\n if (!isZoidComponentWindow()) {\n return false;\n }\n\n const { tag, childDomain } = getComponentMeta();\n\n if (childDomain && childDomain !== getDomain()) {\n return false;\n }\n\n if (tag !== this.tag) {\n return false;\n }\n\n return true;\n }\n\n\n createError(message : string, tag : ?string) : Error {\n return new Error(`[${ tag || this.tag }] ${ message }`);\n }\n\n\n /* Init\n ----\n\n Shortcut to instantiate a component on a parent page, with props\n */\n\n init(props : (PropsType & P), context : ?string, element : ElementRefType) : ParentComponent

{\n return new ParentComponent(this, this.getRenderContext(context, element), { props });\n }\n\n\n delegate(source : CrossDomainWindowType, options : DelegateOptionsType) : DelegateComponent

{\n return new DelegateComponent(this, source, options);\n }\n\n validateRenderContext(context : ?string, element : ?ElementRefType) {\n if (context && !this.contexts[context]) {\n throw new Error(`[${ this.tag }] Can not render to ${ context }`);\n }\n\n if (!element && context === CONTEXT_TYPES.IFRAME) {\n throw new Error(`[${ this.tag }] Context type ${ CONTEXT_TYPES.IFRAME } requires an element selector`);\n }\n }\n\n getDefaultContext() : string {\n if (this.defaultContext) {\n return this.defaultContext;\n } else if (this.contexts[CONTEXT_TYPES.IFRAME]) {\n return CONTEXT_TYPES.IFRAME;\n } else if (this.contexts[CONTEXT_TYPES.POPUP]) {\n return CONTEXT_TYPES.POPUP;\n }\n\n throw new Error(`Can not determine default context`);\n }\n\n getRenderContext(context : ?string, element : ?ElementRefType) : string {\n context = context || this.getDefaultContext();\n this.validateRenderContext(context, element);\n return context;\n }\n\n\n /* Render\n ------\n\n Shortcut to render a parent component\n */\n\n render(props : (PropsType & P), element : ?ElementRefType) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(null, element), { props }).render(element);\n });\n }\n\n renderIframe(props : (PropsType & P), element : ElementRefType) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(CONTEXT_TYPES.IFRAME, element), { props }).render(element);\n });\n }\n\n renderPopup(props : (PropsType & P)) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(CONTEXT_TYPES.POPUP), { props }).render();\n });\n }\n\n renderTo(win : CrossDomainWindowType, props : (PropsType & P), element : ?ElementRefType) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(null, element), { props }).renderTo(win, element);\n });\n }\n\n renderIframeTo(win : CrossDomainWindowType, props : (PropsType & P), element : ElementRefType) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(CONTEXT_TYPES.IFRAME, element), { props }).renderTo(win, element);\n });\n }\n\n renderPopupTo(win : CrossDomainWindowType, props : (PropsType & P)) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(CONTEXT_TYPES.POPUP), { props }).renderTo(win);\n });\n }\n\n prerender(props : (PropsType & P), element : ElementRefType) : { render : ((PropsType & P), ElementRefType) => ZalgoPromise>, renderTo : (CrossDomainWindowType, (PropsType & P), ElementRefType) => ZalgoPromise> } {\n let instance = new ParentComponent(this, this.getRenderContext(null, element), { props });\n instance.prefetch();\n\n return {\n render(innerProps : (PropsType & P), innerElement : ElementRefType) : ZalgoPromise> {\n if (innerProps) {\n instance.updateProps(innerProps);\n }\n\n return instance.render(innerElement);\n },\n\n renderTo(win : CrossDomainWindowType, innerProps : (PropsType & P), innerElement : ElementRefType) : ZalgoPromise> {\n if (innerProps) {\n instance.updateProps(innerProps);\n }\n\n return instance.renderTo(win, innerElement);\n },\n\n get html() : ?ZalgoPromise {\n return instance.html;\n },\n\n set html(value) {\n instance.html = value;\n }\n };\n }\n\n /* Log\n ---\n\n Log an event using the component name\n */\n\n log(event : string, payload : { [ string ] : string } = {}) {\n info(this.name, event, payload);\n }\n\n\n /* Log Warning\n -----------\n\n Log a warning\n */\n\n logWarning(event : string, payload : { [ string ] : string }) {\n warn(this.name, event, payload);\n }\n\n\n /* Log Error\n ---------\n\n Log an error\n */\n\n logError(event : string, payload : { [ string ] : string }) {\n error(this.name, event, payload);\n }\n\n static components : { [string] : Component<*> } = {}\n\n static getByTag(tag : string) : Component {\n return Component.components[tag];\n }\n}\n","/* @flow */\n\nimport { PROP_TYPES_LIST, CONTEXT_TYPES_LIST } from '../../constants';\nimport { isPerc, isPx } from '../../lib';\n\nimport type { ComponentOptionsType } from './index';\n\nfunction validatePropDefinitions

(options : ComponentOptionsType

) {\n\n if (options.props && !(typeof options.props === 'object')) {\n throw new Error(`Expected options.props to be an object`);\n }\n\n if (options.props) {\n for (let key of Object.keys(options.props)) {\n\n // $FlowFixMe\n let prop = options.props[key];\n\n if (!prop || !(typeof prop === 'object')) {\n throw new Error(`Expected options.props.${ key } to be an object`);\n }\n\n if (!prop.type) {\n throw new Error(`Expected prop.type`);\n }\n\n if (PROP_TYPES_LIST.indexOf(prop.type) === -1) {\n throw new Error(`Expected prop.type to be one of ${ PROP_TYPES_LIST.join(', ') }`);\n }\n\n if (prop.required && prop.def) {\n throw new Error(`Required prop can not have a default value`);\n }\n }\n }\n}\n\n// eslint-disable-next-line complexity\nexport function validate

(options : ?ComponentOptionsType

) { // eslint-ignore-line\n\n if (!options) {\n throw new Error(`Expecred options to be passed`);\n }\n\n if (!options.tag || !options.tag.match(/^[a-z0-9-]+$/)) {\n throw new Error(`Invalid options.tag: ${ options.tag }`);\n }\n\n validatePropDefinitions(options);\n\n if (options.dimensions) {\n if (options.dimensions && !isPx(options.dimensions.width) && !isPerc(options.dimensions.width)) {\n throw new Error(`Expected options.dimensions.width to be a px or % string value`);\n }\n\n if (options.dimensions && !isPx(options.dimensions.height) && !isPerc(options.dimensions.height)) {\n throw new Error(`Expected options.dimensions.height to be a px or % string value`);\n }\n }\n\n if (options.contexts) {\n\n if (options.contexts.popup && !__ZOID__.__POPUP_SUPPORT__) {\n throw new Error(`Popups not supported in this build -- please use the full zoid.js build`);\n }\n\n let anyEnabled = false;\n\n for (let context of Object.keys(options.contexts)) {\n\n if (CONTEXT_TYPES_LIST.indexOf(context) === -1) {\n throw new Error(`Unsupported context type: ${ context }`);\n }\n\n if ((options.contexts && options.contexts[context]) || (options.contexts && options.contexts[context] === undefined)) {\n anyEnabled = true;\n }\n }\n\n if (!anyEnabled) {\n throw new Error(`No context type is enabled`);\n }\n }\n\n if (options.defaultContext) {\n if (CONTEXT_TYPES_LIST.indexOf(options.defaultContext) === -1) {\n throw new Error(`Unsupported context type: ${ options.defaultContext || 'unknown' }`);\n }\n\n if (options.contexts && options.defaultContext && !options.contexts[options.defaultContext]) {\n throw new Error(`Disallowed default context type: ${ options.defaultContext || 'unknown' }`);\n }\n }\n\n if (options.url && options.buildUrl) {\n throw new Error(`Can not pass both options.url and options.buildUrl`);\n }\n\n if (options.defaultEnv) {\n if (typeof options.defaultEnv !== 'string') {\n throw new TypeError(`Expected options.defaultEnv to be a string`);\n }\n\n if (!options.buildUrl && typeof options.url !== 'object') {\n throw new Error(`Expected options.url to be an object mapping env->url`);\n }\n\n if (options.url && typeof options.url === 'object' && !options.url[options.defaultEnv]) {\n throw new Error(`No url found for default env: ${ options.defaultEnv }`);\n }\n }\n\n if (options.url && typeof options.url === 'object') {\n\n if (!options.defaultEnv) {\n throw new Error(`Must pass options.defaultEnv with env->url mapping`);\n }\n\n for (let env of Object.keys(options.url)) {\n if (!options.url[env]) {\n throw new Error(`No url specified for env: ${ env }`);\n }\n }\n }\n\n if (options.prerenderTemplate && typeof options.prerenderTemplate !== 'function') {\n throw new Error(`Expected options.prerenderTemplate to be a function`);\n }\n\n if (options.containerTemplate && typeof options.containerTemplate !== 'function') {\n throw new Error(`Expected options.containerTemplate to be a function`);\n }\n}\n","/* @flow */\n\nimport { type ZalgoPromise } from 'zalgo-promise/src';\nimport type { SameDomainWindowType } from 'cross-domain-utils/src';\n\nimport { uniqueID } from '../../lib';\nimport { type DimensionsType } from '../../types';\n\ntype PropDefinitionType = {\n type : S,\n alias? : string,\n value? : T,\n required? : boolean,\n noop? : boolean,\n once? : boolean,\n memoize? : boolean,\n promisify? : boolean,\n queryParam? : boolean | string | (T) => (string | ZalgoPromise),\n queryValue? : (T) => (ZalgoPromise | mixed),\n sendToChild? : boolean,\n allowDelegate? : boolean,\n validate? : (T, PropsType & P) => void,\n decorate? : (T, PropsType & P) => (void | ZalgoPromise | T),\n def? : (P) => ?T,\n sameDomain? : boolean,\n serialization? : 'json' | 'dotify',\n childDecorate? : (T) => ?T,\n denodeify? : boolean\n};\n\nexport type BooleanPropDefinitionType = PropDefinitionType;\nexport type StringPropDefinitionType = PropDefinitionType;\nexport type NumberPropDefinitionType = PropDefinitionType;\nexport type FunctionPropDefinitionType = PropDefinitionType;\nexport type ObjectPropDefinitionType = PropDefinitionType;\n\nexport type MixedPropDefinitionType

= BooleanPropDefinitionType<*, P> | StringPropDefinitionType<*, P> | NumberPropDefinitionType<*, P> | FunctionPropDefinitionType<*, P> | ObjectPropDefinitionType<*, P>;\n\nexport type UserPropsDefinitionType

= {\n [string] : MixedPropDefinitionType

\n};\n\nexport type EventHandlerType = (T) => void | ZalgoPromise;\n\ntype envPropType = string;\ntype uidPropType = string;\ntype urlPropType = string;\ntype versionPropType = string;\ntype timeoutPropType = number;\ntype logLevelPropType = string;\ntype dimensionsPropType = DimensionsType;\ntype winPropType = SameDomainWindowType;\n\ntype onDisplayPropType = EventHandlerType;\ntype onEnterPropType = EventHandlerType;\ntype onRenderPropType = EventHandlerType;\ntype onClosePropType = EventHandlerType;\ntype onResizePropType = EventHandlerType;\ntype onTimeoutPropType = EventHandlerType;\ntype onErrorPropType = EventHandlerType;\n\nexport type BuiltInPropsType = {\n env : envPropType,\n uid : uidPropType,\n url? : urlPropType,\n version? : versionPropType,\n timeout? : timeoutPropType,\n logLevel : logLevelPropType,\n dimensions? : dimensionsPropType,\n win? : winPropType,\n\n onDisplay : onDisplayPropType,\n onEnter : onEnterPropType,\n onRender : onRenderPropType,\n onClose : onClosePropType,\n onResize : onResizePropType,\n onTimeout : onTimeoutPropType,\n onError? : onErrorPropType\n};\n\nexport type PropsType = {\n env? : envPropType,\n uid? : uidPropType,\n url? : urlPropType,\n version? : versionPropType,\n timeout? : timeoutPropType,\n logLevel? : logLevelPropType,\n dimensions? : dimensionsPropType,\n win? : winPropType,\n\n onDisplay? : onDisplayPropType,\n onEnter? : onEnterPropType,\n onRender? : onRenderPropType,\n onClose? : onClosePropType,\n onResize? : onResizePropType,\n onTimeout? : onTimeoutPropType,\n onError? : onErrorPropType\n};\n\nexport type BuiltInPropsDefinitionType

= {\n env : StringPropDefinitionType,\n uid : StringPropDefinitionType,\n url : StringPropDefinitionType,\n version : StringPropDefinitionType,\n timeout : NumberPropDefinitionType,\n logLevel : StringPropDefinitionType,\n dimensions : ObjectPropDefinitionType,\n win : ObjectPropDefinitionType,\n\n onDisplay : FunctionPropDefinitionType,\n onEnter : FunctionPropDefinitionType,\n onRender : FunctionPropDefinitionType,\n onClose : FunctionPropDefinitionType,\n onResize : FunctionPropDefinitionType,\n onTimeout : FunctionPropDefinitionType,\n onError : FunctionPropDefinitionType\n};\n\n/* Internal Props\n --------------\n\n We define and use certain props by default, for configuration and events that are used at the framework level.\n These follow the same format as regular props, and are classed as reserved words that may not be overriden by users.\n*/\n\nexport function getInternalProps

() : BuiltInPropsDefinitionType

{\n return {\n\n // The desired env in which the component is being rendered. Used to determine the correct url\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n def() : string {\n return this.defaultEnv;\n }\n },\n\n uid: {\n type: 'string',\n def() : string {\n return uniqueID();\n },\n queryParam: true\n },\n\n logLevel: {\n type: 'string',\n required: false,\n queryParam: true,\n def() : string {\n return this.defaultLogLevel;\n }\n },\n\n // A custom url to use to render the component\n\n url: {\n type: 'string',\n required: false,\n promise: true,\n sendToChild: false\n },\n\n win: {\n type: 'object',\n required: false,\n sendToChild: false\n },\n\n dimensions: {\n type: 'object',\n required: false\n },\n\n version: {\n type: 'string',\n required: false,\n queryParam: true,\n def() : string {\n return this.version;\n }\n },\n\n // A millisecond timeout before onTimeout is called\n\n timeout: {\n type: 'number',\n required: false,\n sendToChild: false\n },\n\n onDisplay: {\n type: 'function',\n required: false,\n noop: true,\n promisify: true,\n memoize: true,\n sendToChild: false\n },\n\n onEnter: {\n type: 'function',\n required: false,\n noop: true,\n promisify: true,\n sendToChild: false\n },\n\n // When we get an INIT message from the child\n\n onRender: {\n type: 'function',\n required: false,\n noop: true,\n promisify: true,\n sendToChild: false\n },\n\n // When the user closes the component.\n\n onClose: {\n type: 'function',\n required: false,\n noop: true,\n once: true,\n promisify: true,\n sendToChild: false\n },\n\n onResize: {\n type: 'function',\n required: false,\n noop: true,\n sendToChild: false\n },\n\n // When we time-out before getting an INIT message from the child. Defaults to onError if no handler passed.\n\n onTimeout: {\n type: 'function',\n required: false,\n memoize: true,\n promisify: true,\n sendToChild: false,\n def() : (() => void) {\n return function onTimeout(err : mixed) : void {\n if (this.props.onError) {\n return this.props.onError(err);\n }\n throw err;\n };\n }\n },\n\n // When the component experiences an error\n\n onError: {\n type: 'function',\n required: false,\n promisify: true,\n sendToChild: true,\n once: true,\n def() : (() => void) {\n return function onError(err : mixed) {\n setTimeout(() => {\n throw err;\n });\n };\n }\n }\n };\n}\n","/* @flow */\n\nimport { type ZalgoPromise } from 'zalgo-promise/src';\n// eslint-disable-next-line import/no-namespace\nimport * as _postRobot from 'post-robot/src';\n\nimport { Component, type ComponentOptionsType } from './component';\nimport { ParentComponent } from './component/parent';\n// eslint-disable-next-line import/no-namespace\nimport * as _CONSTANTS from './constants';\n\nexport function create

(options : ComponentOptionsType

) : Component

{\n return new Component(options);\n}\n\nexport function getByTag

(tag : string) : Component

{\n return Component.getByTag(tag);\n}\n\nexport { getCurrentScriptDir } from './lib';\n\nexport function destroyAll() : ZalgoPromise {\n return ParentComponent.destroyAll();\n}\nexport let postRobot = _postRobot;\n\nexport * from './error';\n\nexport const CONSTANTS = _CONSTANTS;\n\nexport type ZoidComponent

= Component

;\n","/* @flow */\n\n// eslint-disable-next-line import/no-namespace\nimport * as INTERFACE from './interface';\n\nexport * from './interface';\nexport default INTERFACE;\n","/* @flow */\n\nimport {\n getOpener,\n getTop\n} from 'cross-domain-utils/src';\n\nexport function getUserAgent() : string {\n return window.navigator.mockUserAgent || window.navigator.userAgent;\n}\n\nexport function isDevice() : boolean {\n const userAgent = getUserAgent();\n if (userAgent.match(/Android|webOS|iPhone|iPad|iPod|bada|Symbian|Palm|CriOS|BlackBerry|IEMobile|WindowsMobile|Opera Mini/i)) {\n return true;\n }\n\n return false;\n}\n\nexport function isInsidePopup() : boolean {\n // Checks to see if the top-most window is a pop-up\n return Boolean(getOpener(getTop(window) || window));\n}\n\nexport function isStandAlone() : boolean {\n // Chrome interprets pop-up windows as standalone windows\n return !isInsidePopup() && (window.navigator.standalone === true || window.matchMedia('(display-mode: standalone)').matches);\n}\n\nexport function isFacebookWebView(ua? : string = getUserAgent()) : boolean {\n return (ua.indexOf('FBAN') !== -1) || (ua.indexOf('FBAV') !== -1);\n}\n\nexport function isFirefoxIOS(ua? : string = getUserAgent()) : boolean {\n return (/FxiOS/i).test(ua);\n}\n\nexport function isEdgeIOS(ua? : string = getUserAgent()) : boolean {\n return (/EdgiOS/i).test(ua);\n}\n\nexport function isOperaMini(ua? : string = getUserAgent()) : boolean {\n return ua.indexOf('Opera Mini') > -1;\n}\n\nexport function isAndroid(ua? : string = getUserAgent()) : boolean {\n return (/Android/).test(ua);\n}\n\nexport function isIos(ua? : string = getUserAgent()) : boolean {\n return (/iPhone|iPod|iPad/).test(ua);\n}\n\nexport function isGoogleSearchApp(ua? : string = getUserAgent()) : boolean {\n return (/\\bGSA\\b/).test(ua);\n}\n\nexport function isQQBrowser(ua? : string = getUserAgent()) : boolean {\n return (/QQBrowser/).test(ua);\n}\n\nexport function isIosWebview(ua? : string = getUserAgent()) : boolean {\n if (isIos(ua)) {\n if (isGoogleSearchApp(ua)) {\n return true;\n }\n return (/.+AppleWebKit(?!.*Safari)/).test(ua);\n }\n return false;\n}\n\nexport function isAndroidWebview(ua? : string = getUserAgent()) : boolean {\n if (isAndroid(ua)) {\n return (/Version\\/[\\d.]+/).test(ua) && !isOperaMini(ua);\n }\n return false;\n}\n\nexport function isWebView() : boolean {\n return isFacebookWebView() ||\n isIosWebview() ||\n isAndroidWebview();\n}\n\nexport function isIE() : boolean {\n\n if (window.document.documentMode) {\n return true;\n }\n\n if (window.navigator && typeof window.navigator.userAgent === 'string') {\n if ((/Edge|MSIE/i).test(window.navigator.userAgent)) {\n return true;\n }\n }\n\n return false;\n}\n\n\nexport function isIE11() : boolean {\n if (!isIE()) {\n return false;\n }\n\n if (window.navigator && typeof window.navigator.userAgent === 'string') {\n if ((/MSIE 11\\.0/i).test(window.navigator.userAgent)) {\n return true;\n }\n\n if ((/Trident/i).test(window.navigator.userAgent) && (/rv:11\\.0/i).test(window.navigator.userAgent)) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function isIECompHeader() : boolean {\n const mHttp = window.document.querySelector('meta[http-equiv=\"X-UA-Compatible\"]');\n const mContent = window.document.querySelector('meta[content=\"IE=edge\"]');\n if (mHttp && mContent) {\n return true;\n }\n return false;\n}\n\nexport function isElectron() : boolean {\n const userAgent = getUserAgent();\n // here we want a case-insensitive full word boundary\n return (/\\belectron\\b/i).test(userAgent);\n}\n\nexport function isIEIntranet() : boolean {\n if (!isIE11()) {\n return false;\n }\n\n // This status check only works for older versions of IE with document.documentMode set\n\n if (window.document.documentMode) {\n try {\n const status = window.status;\n\n window.status = 'testIntranetMode';\n\n if (window.status === 'testIntranetMode') {\n window.status = status;\n\n return true;\n }\n\n return false;\n\n } catch (err) {\n\n return false;\n }\n }\n\n return false;\n}\n\nexport function isMacOsCna() : boolean {\n const userAgent = getUserAgent();\n return (/Macintosh.*AppleWebKit(?!.*Safari)/i).test(userAgent);\n}\n\nexport function supportsPopups(ua? : string = getUserAgent()) : boolean {\n return !(isIosWebview(ua) || isAndroidWebview(ua) || isOperaMini(ua) ||\n isFirefoxIOS(ua) || isEdgeIOS(ua) || isFacebookWebView(ua) || isQQBrowser(ua) || isElectron() || isMacOsCna() || isStandAlone());\n}\n","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","/* @flow */\n\nimport { type ZalgoPromise } from 'zalgo-promise/src';\nimport { getParent, isWindowClosed, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONSTANTS } from '../conf';\nimport { noop } from '../lib';\nimport { global } from '../global';\n\n/*\n HERE BE DRAGONS\n\n Warning: this file may look weird. Why save the tunnel window in an Object\n by ID, then look it up later, rather than just using the reference from the closure scope?\n\n The reason is, that ends up meaning the garbage collector can never get its hands\n on a closed window, since our closure has continued access to it -- and post-robot\n has no good way to know whether to clean up the function with the closure scope.\n\n If you're editing this file, be sure to run significant memory / GC tests afterwards.\n*/\n\nglobal.tunnelWindows = global.tunnelWindows || {};\nglobal.tunnelWindowId = 0;\n\nfunction deleteTunnelWindow(id) {\n\n try {\n if (global.tunnelWindows[id]) {\n delete global.tunnelWindows[id].source;\n }\n } catch (err) {\n // pass\n }\n\n delete global.tunnelWindows[id];\n}\n\nfunction cleanTunnelWindows() {\n let tunnelWindows = global.tunnelWindows;\n\n for (let key of Object.keys(tunnelWindows)) {\n let tunnelWindow = tunnelWindows[key];\n\n try {\n noop(tunnelWindow.source);\n } catch (err) {\n deleteTunnelWindow(key);\n continue;\n }\n\n if (isWindowClosed(tunnelWindow.source)) {\n deleteTunnelWindow(key);\n }\n }\n}\n\ntype TunnelWindowDataType = {\n name : string,\n source : CrossDomainWindowType,\n canary : () => void,\n sendMessage : (message : string) => void\n};\n\nfunction addTunnelWindow({ name, source, canary, sendMessage } : TunnelWindowDataType) : number {\n cleanTunnelWindows();\n global.tunnelWindowId += 1;\n global.tunnelWindows[global.tunnelWindowId] = { name, source, canary, sendMessage };\n return global.tunnelWindowId;\n}\n\nfunction getTunnelWindow(id : number) : TunnelWindowDataType {\n return global.tunnelWindows[id];\n}\n\nglobal.openTunnelToParent = function openTunnelToParent({ name, source, canary, sendMessage } : TunnelWindowDataType) : ZalgoPromise<{ source : CrossDomainWindowType, origin : string, data : Object }> {\n\n let parentWindow = getParent(window);\n\n if (!parentWindow) {\n throw new Error(`No parent window found to open tunnel to`);\n }\n\n let id = addTunnelWindow({ name, source, canary, sendMessage });\n\n return global.send(parentWindow, CONSTANTS.POST_MESSAGE_NAMES.OPEN_TUNNEL, {\n\n name,\n\n sendMessage() {\n\n let tunnelWindow = getTunnelWindow(id);\n\n try {\n // IE gets antsy if you try to even reference a closed window\n noop(tunnelWindow && tunnelWindow.source);\n } catch (err) {\n deleteTunnelWindow(id);\n return;\n }\n\n if (!tunnelWindow || !tunnelWindow.source || isWindowClosed(tunnelWindow.source)) {\n return;\n }\n\n try {\n tunnelWindow.canary();\n } catch (err) {\n return;\n }\n\n tunnelWindow.sendMessage.apply(this, arguments);\n }\n\n }, { domain: CONSTANTS.WILDCARD });\n};\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getDomain, isSameDomain, isOpener, isSameTopWindow, matchDomain, getUserAgent, getDomainFromUrl, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONFIG, CONSTANTS } from '../conf';\nimport { global } from '../global';\n\nexport function needsBridgeForBrowser() : boolean {\n\n if (getUserAgent(window).match(/MSIE|trident|edge\\/12|edge\\/13/i)) {\n return true;\n }\n\n if (!CONFIG.ALLOW_POSTMESSAGE_POPUP) {\n return true;\n }\n\n return false;\n}\n\nexport function needsBridgeForWin(win : CrossDomainWindowType) : boolean {\n\n if (!isSameTopWindow(window, win)) {\n return true;\n }\n\n return false;\n}\n\nexport function needsBridgeForDomain(domain : ?string, win : ?CrossDomainWindowType) : boolean {\n\n if (domain) {\n if (getDomain() !== getDomainFromUrl(domain)) {\n return true;\n }\n } else if (win) {\n if (!isSameDomain(win)) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function needsBridge({ win, domain } : { win? : CrossDomainWindowType, domain? : string }) : boolean {\n\n if (!needsBridgeForBrowser()) {\n return false;\n }\n\n if (domain && !needsBridgeForDomain(domain, win)) {\n return false;\n }\n\n if (win && !needsBridgeForWin(win)) {\n return false;\n }\n\n return true;\n}\n\nexport function getBridgeName(domain : string) : string {\n\n domain = domain || getDomainFromUrl(domain);\n\n let sanitizedDomain = domain.replace(/[^a-zA-Z0-9]+/g, '_');\n\n let id = `${ CONSTANTS.BRIDGE_NAME_PREFIX }_${ sanitizedDomain }`;\n\n return id;\n}\n\nexport function isBridge() : boolean {\n return Boolean(window.name && window.name === getBridgeName(getDomain()));\n}\n\nexport let documentBodyReady = new ZalgoPromise(resolve => {\n\n if (window.document && window.document.body) {\n return resolve(window.document.body);\n }\n\n let interval = setInterval(() => {\n if (window.document && window.document.body) {\n clearInterval(interval);\n return resolve(window.document.body);\n }\n }, 10);\n});\n\nglobal.remoteWindows = global.remoteWindows || new WeakMap();\n\nexport function registerRemoteWindow(win : CrossDomainWindowType) {\n global.remoteWindows.set(win, { sendMessagePromise: new ZalgoPromise() });\n}\n\nexport function findRemoteWindow(win : CrossDomainWindowType) : { sendMessagePromise : ZalgoPromise<(remoteWin : CrossDomainWindowType, message : string, remoteDomain : string) => void> } {\n return global.remoteWindows.get(win);\n}\n\nexport function registerRemoteSendMessage(win : CrossDomainWindowType, domain : string, sendMessage : (message : string) => void) {\n\n let remoteWindow = findRemoteWindow(win);\n\n if (!remoteWindow) {\n throw new Error(`Window not found to register sendMessage to`);\n }\n\n let sendMessageWrapper = (remoteWin : CrossDomainWindowType, message : string, remoteDomain : string) => {\n\n if (remoteWin !== win) {\n throw new Error(`Remote window does not match window`);\n }\n\n if (!matchDomain(remoteDomain, domain)) {\n throw new Error(`Remote domain ${ remoteDomain } does not match domain ${ domain }`);\n }\n\n sendMessage(message);\n };\n\n remoteWindow.sendMessagePromise.resolve(sendMessageWrapper);\n remoteWindow.sendMessagePromise = ZalgoPromise.resolve(sendMessageWrapper);\n}\n\nexport function rejectRemoteSendMessage(win : CrossDomainWindowType, err : Error) {\n\n let remoteWindow = findRemoteWindow(win);\n\n if (!remoteWindow) {\n throw new Error(`Window not found on which to reject sendMessage`);\n }\n\n remoteWindow.sendMessagePromise.asyncReject(err);\n}\n\nexport function sendBridgeMessage(win : CrossDomainWindowType, message : string, domain : string) : ZalgoPromise {\n\n let messagingChild = isOpener(window, win);\n let messagingParent = isOpener(win, window);\n\n if (!messagingChild && !messagingParent) {\n throw new Error(`Can only send messages to and from parent and popup windows`);\n }\n\n let remoteWindow = findRemoteWindow(win);\n\n if (!remoteWindow) {\n throw new Error(`Window not found to send message to`);\n }\n\n return remoteWindow.sendMessagePromise.then(sendMessage => {\n return sendMessage(win, message, domain);\n });\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { isSameDomain, getOpener, getFrames, getDomain, getFrameByName, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONSTANTS } from '../conf';\nimport { weakMapMemoize, noop } from '../lib';\nimport { global } from '../global';\n\nimport { needsBridge, registerRemoteWindow, rejectRemoteSendMessage, registerRemoteSendMessage, getBridgeName } from './common';\n\nlet awaitRemoteBridgeForWindow = weakMapMemoize((win : CrossDomainWindowType) : ZalgoPromise => {\n return ZalgoPromise.try(() => {\n for (let frame of getFrames(win)) {\n try {\n // $FlowFixMe\n if (frame && frame !== window && isSameDomain(frame) && frame[CONSTANTS.WINDOW_PROPS.POSTROBOT]) {\n return frame;\n }\n\n } catch (err) {\n continue;\n }\n }\n\n try {\n let frame = getFrameByName(win, getBridgeName(getDomain()));\n\n if (!frame) {\n return;\n }\n\n // $FlowFixMe\n if (isSameDomain(frame) && frame[CONSTANTS.WINDOW_PROPS.POSTROBOT]) {\n return frame;\n }\n\n return new ZalgoPromise(resolve => {\n\n let interval;\n let timeout;\n\n interval = setInterval(() => {\n // $FlowFixMe\n if (frame && isSameDomain(frame) && frame[CONSTANTS.WINDOW_PROPS.POSTROBOT]) {\n clearInterval(interval);\n clearTimeout(timeout);\n return resolve(frame);\n }\n }, 100);\n\n timeout = setTimeout(() => {\n clearInterval(interval);\n return resolve();\n }, 2000);\n });\n\n } catch (err) {\n // pass\n }\n });\n});\n\nexport function openTunnelToOpener() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n const opener = getOpener(window);\n\n if (!opener) {\n return;\n }\n\n if (!needsBridge({ win: opener })) {\n return;\n }\n\n registerRemoteWindow(opener);\n\n return awaitRemoteBridgeForWindow(opener).then(bridge => {\n\n if (!bridge) {\n return rejectRemoteSendMessage(opener, new Error(`Can not register with opener: no bridge found in opener`));\n }\n\n if (!window.name) {\n return rejectRemoteSendMessage(opener, new Error(`Can not register with opener: window does not have a name`));\n }\n\n return bridge[CONSTANTS.WINDOW_PROPS.POSTROBOT].openTunnelToParent({\n\n name: window.name,\n\n source: window,\n\n canary() {\n // pass\n },\n\n sendMessage(message) {\n\n try {\n noop(window);\n } catch (err) {\n return;\n }\n\n if (!window || window.closed) {\n return;\n }\n\n try {\n global.receiveMessage({\n data: message,\n origin: this.origin,\n source: this.source\n });\n } catch (err) {\n ZalgoPromise.reject(err);\n }\n }\n\n }).then(({ source, origin, data }) => {\n\n if (source !== opener) {\n throw new Error(`Source does not match opener`);\n }\n\n registerRemoteSendMessage(source, origin, data.sendMessage);\n\n }).catch(err => {\n\n rejectRemoteSendMessage(opener, err);\n throw err;\n });\n });\n });\n}\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getDomain, getFrameByName, isWindowClosed, getDomainFromUrl, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONFIG, CONSTANTS } from '../conf';\nimport { onChildWindowReady } from '../lib';\nimport { global } from '../global';\n\nimport { getBridgeName, documentBodyReady, registerRemoteSendMessage, registerRemoteWindow } from './common';\n\nglobal.bridges = global.bridges || {};\nglobal.bridgeFrames = global.bridgeFrames || {};\n\nglobal.popupWindowsByWin = global.popupWindowsByWin || new WeakMap();\nglobal.popupWindowsByName = global.popupWindowsByName || {};\n\nfunction listenForRegister(source, domain) {\n global.on(CONSTANTS.POST_MESSAGE_NAMES.OPEN_TUNNEL, { window: source, domain }, ({ origin, data }) => {\n\n if (origin !== domain) {\n throw new Error(`Domain ${ domain } does not match origin ${ origin }`);\n }\n\n if (!data.name) {\n throw new Error(`Register window expected to be passed window name`);\n }\n\n if (!data.sendMessage) {\n throw new Error(`Register window expected to be passed sendMessage method`);\n }\n\n if (!global.popupWindowsByName[data.name]) {\n throw new Error(`Window with name ${ data.name } does not exist, or was not opened by this window`);\n }\n\n if (!global.popupWindowsByName[data.name].domain) {\n throw new Error(`We do not have a registered domain for window ${ data.name }`);\n }\n\n if (global.popupWindowsByName[data.name].domain !== origin) {\n throw new Error(`Message origin ${ origin } does not matched registered window origin ${ global.popupWindowsByName[data.name].domain }`);\n }\n\n registerRemoteSendMessage(global.popupWindowsByName[data.name].win, domain, data.sendMessage);\n\n return {\n sendMessage(message) {\n\n if (!window || window.closed) {\n return;\n }\n\n let winDetails = global.popupWindowsByName[data.name];\n\n if (!winDetails) {\n return;\n }\n\n try {\n global.receiveMessage({\n data: message,\n origin: winDetails.domain,\n source: winDetails.win\n });\n } catch (err) {\n ZalgoPromise.reject(err);\n }\n }\n };\n });\n}\n\nfunction openBridgeFrame(name : string, url : string) : HTMLIFrameElement {\n\n let iframe = document.createElement(`iframe`);\n\n iframe.setAttribute(`name`, name);\n iframe.setAttribute(`id`, name);\n\n iframe.setAttribute(`style`, `display: none; margin: 0; padding: 0; border: 0px none; overflow: hidden;`);\n iframe.setAttribute(`frameborder`, `0`);\n iframe.setAttribute(`border`, `0`);\n iframe.setAttribute(`scrolling`, `no`);\n iframe.setAttribute(`allowTransparency`, `true`);\n\n iframe.setAttribute(`tabindex`, `-1`);\n iframe.setAttribute(`hidden`, `true`);\n iframe.setAttribute(`title`, ``);\n iframe.setAttribute(`role`, `presentation`);\n\n iframe.src = url;\n\n return iframe;\n}\n\nexport function hasBridge(url : string, domain : string) : boolean {\n domain = domain || getDomainFromUrl(url);\n return Boolean(global.bridges[domain]);\n}\n\nexport function openBridge(url : string, domain : string) : ZalgoPromise {\n\n domain = domain || getDomainFromUrl(url);\n\n if (global.bridges[domain]) {\n return global.bridges[domain];\n }\n\n global.bridges[domain] = ZalgoPromise.try(() => {\n\n if (getDomain() === domain) {\n throw new Error(`Can not open bridge on the same domain as current domain: ${ domain }`);\n }\n\n let name = getBridgeName(domain);\n let frame = getFrameByName(window, name);\n\n if (frame) {\n throw new Error(`Frame with name ${ name } already exists on page`);\n }\n\n let iframe = openBridgeFrame(name, url);\n global.bridgeFrames[domain] = iframe;\n\n return documentBodyReady.then(body => {\n\n body.appendChild(iframe);\n\n let bridge = iframe.contentWindow;\n\n listenForRegister(bridge, domain);\n\n return new ZalgoPromise((resolve, reject) => {\n\n iframe.onload = resolve;\n iframe.onerror = reject;\n\n }).then(() => {\n\n return onChildWindowReady(bridge, CONFIG.BRIDGE_TIMEOUT, `Bridge ${ url }`);\n\n }).then(() => {\n\n return bridge;\n });\n });\n });\n\n return global.bridges[domain];\n}\n\nlet windowOpen = window.open;\n\nwindow.open = function windowOpenWrapper(url : string, name : string, options : string, last : mixed) : mixed {\n\n let domain = url;\n\n if (url && url.indexOf(CONSTANTS.MOCK_PROTOCOL) === 0) {\n [ domain, url ] = url.split('|');\n }\n\n if (domain) {\n domain = getDomainFromUrl(domain);\n }\n\n let win = windowOpen.call(this, url, name, options, last);\n\n if (!win) {\n return win;\n }\n\n if (url) {\n registerRemoteWindow(win);\n }\n\n for (let winName of Object.keys(global.popupWindowsByName)) {\n if (isWindowClosed(global.popupWindowsByName[winName].win)) {\n delete global.popupWindowsByName[winName];\n }\n }\n\n if (name && win) {\n let winOptions = global.popupWindowsByWin.get(win) ||\n global.popupWindowsByName[name] || {};\n\n winOptions.name = winOptions.name || name;\n winOptions.win = winOptions.win || win;\n winOptions.domain = winOptions.domain || domain;\n\n global.popupWindowsByWin.set(win, winOptions);\n global.popupWindowsByName[name] = winOptions;\n }\n\n return win;\n};\n\nexport function linkUrl(win : CrossDomainWindowType, url : string) {\n\n let winOptions = global.popupWindowsByWin.get(win);\n\n if (winOptions) {\n winOptions.domain = getDomainFromUrl(url);\n registerRemoteWindow(win);\n }\n}\n\nexport function destroyBridges() {\n for (let domain of Object.keys(global.bridgeFrames)) {\n let frame = global.bridgeFrames[domain];\n if (frame.parentNode) {\n frame.parentNode.removeChild(frame);\n }\n }\n global.bridgeFrames = {};\n global.bridges = {};\n}\n","/* @flow */\n\n// eslint-disable-next-line import/no-unassigned-import\nimport './bridge';\n\nexport * from './child';\nexport * from './common';\nexport * from './parent';\n","/* @flow */\n\nimport { info } from 'beaver-logger/client';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport type { CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { LANG_TO_DEFAULT_COUNTRY, LOCALE } from '../constants';\nimport type { LocaleType } from '../types';\nimport { config } from '../config';\n\nimport { memoize } from './util';\nimport { isDevice } from './device';\n\nfunction isDocumentReady() : boolean {\n return Boolean(document.body) && document.readyState === 'complete';\n}\n\nexport const documentReady : ZalgoPromise = new ZalgoPromise(resolve => {\n\n if (isDocumentReady()) {\n return resolve();\n }\n\n const interval = setInterval(() => {\n if (isDocumentReady()) {\n clearInterval(interval);\n return resolve();\n }\n }, 10);\n});\n\nexport const documentBody : ZalgoPromise = documentReady.then(() => {\n if (document.body) {\n return document.body;\n }\n\n throw new Error('Document ready but document.body not present');\n});\n\n\nexport function loadScript(src : string, timeout : number = 0, attrs : Object = {}) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n const script = document.createElement('script');\n\n script.addEventListener('load', () => {\n resolve();\n });\n\n // For Internet explorer 8 support\n script.onreadystatechange = function scriptOnReadyStateChange() {\n if (this.readyState === 'complete' || this.readyState === 'loaded') {\n resolve();\n }\n };\n\n const scriptLoadError = new Error('script_loading_error');\n\n script.addEventListener('error', () => {\n return reject(scriptLoadError);\n });\n\n if (timeout) {\n setTimeout(() => {\n return reject(new Error('script_loading_timed_out'));\n }, timeout);\n }\n\n for (const attr of Object.keys(attrs)) {\n script.setAttribute(attr, attrs[attr]);\n }\n\n script.setAttribute('src', src);\n\n const head = document.getElementsByTagName('head')[0];\n\n head.appendChild(script);\n });\n}\n\n\nexport function isNodeList(nodes : mixed) : boolean {\n\n const result = Object.prototype.toString.call(nodes);\n\n if (result === '[object HTMLCollection]' || result === '[object NodeList]') {\n return true;\n }\n\n return false;\n}\n\nexport function isElement(item : mixed) : boolean {\n return item instanceof HTMLElement;\n}\n\nexport function getElement(item : mixed) : ?HTMLElement {\n\n if (!item) {\n return;\n }\n\n if (item instanceof HTMLElement) {\n return item;\n }\n\n if (typeof item === 'string') {\n\n if (document.querySelector) {\n const result = document.querySelector(item);\n\n if (result) {\n return result;\n }\n }\n\n return document.getElementById(item);\n }\n}\n\nexport function getElements(collection : $ReadOnlyArray | NodeList | HTMLCollection | HTMLElement | string) : $ReadOnlyArray {\n\n if (!collection) {\n return [];\n }\n\n if (collection instanceof HTMLElement || typeof collection === 'string') {\n const element = getElement(collection);\n if (element) {\n return [ element ];\n }\n return [];\n }\n\n if (Array.isArray(collection) || collection instanceof NodeList || collection instanceof HTMLCollection) {\n const result = [];\n\n for (let i = 0; i < collection.length; i++) {\n const el = getElement(collection[i]);\n if (el) {\n result.push(el);\n }\n }\n\n return result;\n }\n\n return [];\n}\n\nexport function onDocumentReady(method : () => void) : ZalgoPromise {\n return documentReady.then(method);\n}\n\nexport const parseQuery = memoize((queryString : string) : Object => {\n\n const params = {};\n\n if (!queryString) {\n return params;\n }\n\n if (queryString.indexOf('=') === -1) {\n return params;\n }\n\n for (let pair of queryString.split('&')) {\n pair = pair.split('=');\n\n if (pair[0] && pair[1]) {\n params[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n }\n\n return params;\n});\n\n\nexport function getQueryParam(name : string) : string {\n return parseQuery(window.location.search.slice(1))[name];\n}\n\nexport function urlWillRedirectPage(url : string) : boolean {\n\n if (url.indexOf('#') === -1) {\n return true;\n }\n\n if (url.indexOf('#') === 0) {\n return false;\n }\n\n if (url.split('#')[0] === window.location.href.split('#')[0]) {\n return false;\n }\n\n return true;\n}\n\nexport function extendUrl(url : string, params : { [key : string] : string } = {}) : string {\n\n const hasHash = url.indexOf('#') > 0;\n\n let [ serverUrl, hash ] = url.split('#');\n\n if (hash && !serverUrl) {\n [ serverUrl, hash ] = [ `#${ hash }`, '' ];\n }\n\n const [ originalUrl, originalQueryString ] = serverUrl.split('?');\n\n if (originalQueryString) {\n const originalQuery = parseQuery(originalQueryString);\n\n for (const key in originalQuery) {\n if (!params.hasOwnProperty(key)) {\n params[key] = originalQuery[key];\n }\n }\n }\n\n const newQueryString = Object.keys(params).filter(key => key && params[key]).sort().map(key => {\n return `${ encodeURIComponent(key) }=${ encodeURIComponent(params[key]) }`;\n }).join('&');\n\n let newUrl = originalUrl;\n\n if (newQueryString) {\n newUrl = `${ newUrl }?${ newQueryString }`;\n }\n\n if (hasHash) {\n newUrl = `${ newUrl }#${ hash || '' }`;\n }\n\n return newUrl;\n}\n\nexport function redirect(win : CrossDomainWindowType = window, url : string) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n\n info(`redirect`, { url });\n\n setTimeout(() => {\n win.location = url;\n if (!urlWillRedirectPage(url)) {\n resolve();\n }\n }, 1);\n });\n}\n\nexport function hasMetaViewPort() : boolean {\n const meta = document.querySelector('meta[name=viewport]');\n\n if (isDevice() && window.screen.width < 660 && !meta) {\n return false;\n }\n\n return true;\n}\n\nexport function getBrowserLocales() : $ReadOnlyArray {\n const nav = window.navigator;\n\n const locales = nav.languages\n ? Array.prototype.slice.apply(nav.languages)\n : [];\n\n if (nav.language) {\n locales.push(nav.language);\n }\n\n if (nav.userLanguage) {\n locales.push(nav.userLanguage);\n }\n\n return locales;\n}\n\nexport function normalizeLocale(locale : string) : ?LocaleType {\n\n if (locale && locale.match(/^[a-z]{2}[-_][A-Z]{2}$/)) {\n const [ lang, country ] = locale.split(/[-_]/);\n if (LOCALE[country] && LOCALE[country].indexOf(lang) !== -1) {\n return { country, lang };\n }\n }\n}\n\nexport function normalizeLang(lang : string) : ?LocaleType {\n\n if (lang && lang.match(/^[a-z]{2}$/)) {\n if (LANG_TO_DEFAULT_COUNTRY[lang]) {\n return { country: LANG_TO_DEFAULT_COUNTRY[lang], lang };\n }\n }\n}\n\nexport const getBrowserLocale = memoize(() : LocaleType => {\n\n const locales = getBrowserLocales();\n\n for (const locale of locales) {\n let loc = normalizeLocale(locale);\n if (loc) {\n info('better_browser_locale_full');\n return loc;\n }\n\n loc = normalizeLang(locale);\n if (loc) {\n info('better_browser_locale_lang');\n return loc;\n }\n }\n\n return config.defaultLocale;\n});\n\nexport function isElementVisible(el : HTMLElement) : boolean {\n return Boolean(el.offsetWidth || el.offsetHeight || el.getClientRects().length);\n}\n\nexport const enablePerformance = memoize(() : boolean => {\n /* eslint-disable compat/compat */\n return Boolean(\n window.performance &&\n performance.now &&\n performance.timing &&\n performance.timing.connectEnd &&\n performance.timing.navigationStart &&\n (Math.abs(performance.now() - Date.now()) > 1000) &&\n (performance.now() - (performance.timing.connectEnd - performance.timing.navigationStart)) > 0\n );\n /* eslint-enable compat/compat */\n});\n\nexport function getPageRenderTime() : ZalgoPromise {\n return documentReady.then(() => {\n\n if (!enablePerformance()) {\n return;\n }\n\n const timing = window.performance.timing; // eslint-disable-line compat/compat\n\n if (timing.connectEnd && timing.domInteractive) {\n return timing.domInteractive - timing.connectEnd;\n }\n });\n}\n\nexport function getResourceLoadTime(url : string) : ?number {\n\n if (!enablePerformance()) {\n return;\n }\n\n if (!window.performance || typeof window.performance.getEntries !== 'function') { // eslint-disable-line compat/compat\n return;\n }\n\n const entries = window.performance.getEntries(); // eslint-disable-line compat/compat\n\n for (let i = 0; i < entries.length; i++) {\n const entry = entries[i];\n\n if (entry && entry.name === url && entry.duration && entry.duration >= 0 && entry.duration <= 60000) {\n return Math.floor(entry.duration);\n }\n }\n}\n\nexport function htmlEncode(html : string = '') : string {\n return html.toString()\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(/\\//g, '/');\n}\n","/* @flow */\n\nexport function PopupOpenError(message : string) {\n this.message = message;\n}\n\nPopupOpenError.prototype = Object.create(Error.prototype);\n\nexport function IntegrationError(message : string) {\n this.message = message;\n}\n\nIntegrationError.prototype = Object.create(Error.prototype);\n\nexport function RenderError(message : string) {\n this.message = message;\n}\n\nRenderError.prototype = Object.create(Error.prototype);\n","/* @flow */\n\nimport { getParent, isSameDomain } from 'cross-domain-utils/src';\n\nimport { config } from '../config';\n\nimport { supportsPopups } from './device';\n\nexport function allowIframe() : boolean {\n\n if (!supportsPopups()) {\n return true;\n }\n\n const parentWindow = getParent(window);\n if (parentWindow && isSameDomain(parentWindow)) {\n return true;\n }\n\n const parentComponentWindow = window.xchild && window.xchild.getParentComponentWindow();\n if (parentComponentWindow && isSameDomain(parentComponentWindow)) {\n return true;\n }\n\n if (__TEST__) {\n return true;\n }\n\n return false;\n}\n\n\nexport function isPayPalDomain() : boolean {\n return Boolean(`${ window.location.protocol }//${ window.location.host }`.match(config.paypal_domain_regex)) || window.mockDomain === 'mock://www.paypal.com';\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nexport type Braintree = {|\n client : {\n create : Function\n },\n paypalCheckout : {\n create : Function\n }\n|};\n\nexport type BraintreePayPalClient = {|\n createPayment : Function,\n tokenizePayment : Function\n|};\n\nexport function awaitBraintreeClient(braintree : Braintree, auth : string | ZalgoPromise) : ZalgoPromise {\n return ZalgoPromise.resolve(auth).then(authorization => {\n return braintree.client.create({ authorization });\n }).then(client => {\n return braintree.paypalCheckout.create({ client });\n });\n}\n\nconst SUPPORTED_REST_FIELDS = {\n intent: 1,\n transactions: [\n {\n amount: {\n total: 1,\n currency: 1\n }\n }\n ],\n payer: {\n external_selected_funding_instrument_type: 1,\n shipping_address: {\n line1: 1,\n line2: 1,\n city: 1,\n state: 1,\n postal_code: 1,\n country_code: 1,\n phone: 1,\n recipient_name: 1\n }\n },\n application_context: {\n brand_name: 1,\n shipping_preference: 1,\n landing_page: 1\n }\n};\n\nfunction validate(obj, supported, name) {\n\n const supportedKeys = Object.keys(supported);\n\n for (const key of Object.keys(obj)) {\n\n if (supportedKeys.indexOf(key) === -1) {\n throw new Error(`Unsupported REST key for Braintree: ${ name }.${ key }`);\n }\n\n if (typeof obj[key] === 'object') {\n validate(obj[key], supported[key], `${ name }.${ key }`);\n }\n }\n}\n\nexport function mapPaymentToBraintree(payment : Object) : Object {\n validate(payment, SUPPORTED_REST_FIELDS, 'payment');\n\n const btPayment = {};\n\n btPayment.intent = payment.intent || 'sale';\n btPayment.flow = 'checkout';\n btPayment.amount = payment.transactions[0].amount.total;\n btPayment.currency = payment.transactions[0].amount.currency;\n\n if (payment.payer) {\n if (payment.payer.external_selected_funding_instrument_type === 'CREDIT') {\n btPayment.offerCredit = true;\n }\n\n if (payment.payer.shipping_address) {\n btPayment.shippingAddressOverride = {\n line1: payment.payer.shipping_address.line1,\n line2: payment.payer.shipping_address.line2,\n city: payment.payer.shipping_address.city,\n state: payment.payer.shipping_address.state,\n postalCode: payment.payer.shipping_address.postal_code,\n countryCode: payment.payer.shipping_address.country_code,\n phone: payment.payer.shipping_address.phone,\n recipientName: payment.payer.shipping_address.recipient_name\n };\n }\n }\n\n if (payment.application_context) {\n btPayment.displayName = payment.application_context.brand_name;\n btPayment.landingPageType = payment.application_context.landing_page;\n\n if (payment.application_context) {\n if (payment.application_context.shipping_preference === 'NO_SHIPPING') {\n btPayment.enableShippingAddress = false;\n } else if (payment.application_context.shipping_preference === 'GET_FROM_FILE') {\n btPayment.enableShippingAddress = true;\n btPayment.shippingAddressEditable = true;\n } else if (payment.application_context.shipping_preference === 'SET_PROVIDED_ADDRESS') {\n btPayment.enableShippingAddress = true;\n btPayment.shippingAddressEditable = false;\n }\n }\n }\n\n return btPayment;\n}\n","/* @flow */\n\nexport * from './checkout';\nexport * from './braintree';\n// export * from './popupBridge';\n","/* @flow */\n\nexport * from './script';\nexport * from './react';\nexport * from './vue';\nexport * from './angular';\nexport * from './ember';\nexport * from './glimmer';\nexport * from './angular2';\n","/* @flow */\n\nimport { config } from '../config';\nimport { LOG_LEVEL } from '../constants';\n\nimport { getSessionID, getSessionState } from './session';\n\nconst BEACON_URL = config.loggerUrl;\nconst APP_NAME = 'checkoutjs';\n\nexport function beacon(event : string, payload : Object = {}) {\n try {\n\n payload.event = `ppxo_${ event }`;\n payload.version = __PAYPAL_CHECKOUT__.__MINOR_VERSION__;\n payload.host = window.location.host;\n payload.uid = getSessionID();\n payload.appName = APP_NAME;\n\n let query = [];\n\n for (const key in payload) {\n if (payload.hasOwnProperty(key)) {\n query.push(`${ encodeURIComponent(key) }=${ encodeURIComponent(payload[key]) }`);\n }\n }\n\n query = query.join('&');\n\n if (!__TEST__) {\n const beaconImage = new window.Image();\n beaconImage.src = `${ BEACON_URL }?${ query }`;\n }\n\n setTimeout(() => {\n if (config.logLevel === LOG_LEVEL.DEBUG) {\n if (window.console && window.console.log) {\n window.console.log('*', event, payload);\n }\n }\n }, 1);\n\n } catch (err) {\n // pass\n }\n}\n\nfunction isCheckpointUnique(name : string) : boolean {\n return getSessionState(state => {\n state.loggedBeacons = state.loggedBeacons || [];\n\n if (state.loggedBeacons.indexOf(name) === -1) {\n state.loggedBeacons.push(name);\n return true;\n }\n\n return false;\n });\n}\n\nexport function checkpoint(name : string, payload : Object = {}, options : Object = {}) : void {\n try {\n let checkpointName = name;\n\n if (options.version) {\n const version = __PAYPAL_CHECKOUT__.__MINOR_VERSION__.replace(/[^0-9]+/g, '_');\n checkpointName = `${ version }_${ checkpointName }`;\n }\n\n if (!isCheckpointUnique(checkpointName)) {\n return;\n }\n\n return beacon(checkpointName, payload);\n\n } catch (err) {\n\n // pass\n }\n}\n\n\nconst FPTI_URL = 'https://t.paypal.com/ts';\n\nfunction buildPayload() : Object {\n return {\n v: `checkout.js.${ __PAYPAL_CHECKOUT__.__MINOR_VERSION__ }`,\n t: Date.now(),\n g: new Date().getTimezoneOffset(),\n flnm: 'ec:hermes:',\n shir: 'main_ec_hermes_',\n pgrp: 'main:ec:hermes::incontext-merchant',\n page: 'main:ec:hermes::incontext-merchant',\n vers: 'member:hermes:',\n qual: 'incontext',\n tmpl: 'merchant:incontext'\n };\n}\n\nexport function fpti(payload : Object = {}) {\n\n let query = [];\n\n payload = { ...buildPayload(), ...payload };\n\n for (const key in payload) {\n if (payload.hasOwnProperty(key)) {\n query.push(`${ encodeURIComponent(key) }=${ encodeURIComponent(payload[key]) }`);\n }\n }\n\n query = query.join('&');\n\n try {\n const beaconImage = new window.Image();\n beaconImage.src = `${ FPTI_URL }?${ query }`;\n } catch (err) {\n // pass\n }\n}\n","/* @flow */\n/** @jsx jsxDom */\n\nconst checkoutComponentStyle = `\n\n body {\n width: 100%;\n height: 100%;\n overflow: hidden;\n position: fixed;\n top: 0;\n left: 0;\n margin: 0;\n }\n\n .spinner {\n height: 100%;\n width: 100%;\n position: absolute;\n z-index: 10\n }\n\n .spinner .spinWrap {\n width: 200px;\n height: 100px;\n position: absolute;\n top: 50%;\n left: 50%;\n margin-left: -100px;\n margin-top: -50px\n }\n\n .spinner .loader,\n .spinner .spinnerImage {\n height: 100px;\n width: 100px;\n position: absolute;\n top: 0;\n left: 50%;\n opacity: 1;\n filter: alpha(opacity=100)\n }\n\n .spinner .spinnerImage {\n margin: 28px 0 0 -25px;\n background: url(https://www.paypalobjects.com/images/checkout/hermes/icon_ot_spin_lock_skinny.png) no-repeat\n }\n\n .spinner .loader {\n margin: 0 0 0 -55px;\n background-color: transparent;\n -webkit-animation: rotation .7s infinite linear;\n -moz-animation: rotation .7s infinite linear;\n -o-animation: rotation .7s infinite linear;\n animation: rotation .7s infinite linear;\n border-left: 5px solid #cbcbca;\n border-right: 5px solid #cbcbca;\n border-bottom: 5px solid #cbcbca;\n border-top: 5px solid #2380be;\n border-radius: 100%\n }\n\n @-webkit-keyframes rotation {\n from {\n -webkit-transform: rotate(0deg)\n }\n to {\n -webkit-transform: rotate(359deg)\n }\n }\n @-moz-keyframes rotation {\n from {\n -moz-transform: rotate(0deg)\n }\n to {\n -moz-transform: rotate(359deg)\n }\n }\n @-o-keyframes rotation {\n from {\n -o-transform: rotate(0deg)\n }\n to {\n -o-transform: rotate(359deg)\n }\n }\n @keyframes rotation {\n from {\n transform: rotate(0deg)\n }\n to {\n transform: rotate(359deg)\n }\n }\n`;\n\nexport function componentTemplate({ jsxDom } : { jsxDom : Function }) : HTMLElement {\n\n return (\n \n \n PayPal\n \n \n \n

\n \n\n
\n

\n

\n

\n
\n \n \n );\n}\n","/* @flow */\n\nimport { CHECKOUT_OVERLAY_COLOR } from '../../../constants';\n\nexport function getContainerStyle({ id, tag, CONTEXT, CLASS, ANIMATION } : { id : string, tag : string, CONTEXT : Object, CLASS : Object, ANIMATION : Object }) : string {\n return `\n #${ id } {\n position: absolute;\n z-index: 2147483647;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n\n -webkit-transform: translate3d(0, 0, 0);\n -moz-transform: translate3d(0, 0, 0);\n -ms-transform: translate3d(0, 0, 0);\n -o-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.BLACK } {\n background-color: black;\n background-color: rgba(0, 0, 0, 0.75);\n\n background: -webkit-radial-gradient(50% 50%, ellipse closest-corner, rgba(0,0,0,1) 1%, rgba(0,0,0,0.75) 100%);\n background: -moz-radial-gradient(50% 50%, ellipse closest-corner, rgba(0,0,0,1) 1%, rgba(0,0,0,0.75) 100%);\n background: -ms-radial-gradient(50% 50%, ellipse closest-corner, rgba(0,0,0,1) 1%, rgba(0,0,0,0.75) 100%);\n background: radial-gradient(50% 50%, ellipse closest-corner, rgba(0,0,0,1) 1%, rgba(0,0,0,0.75) 100%);\n\n color: #fff;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.WHITE } {\n background-color: white;\n background-color: rgba(255, 255, 255, 0.4);\n\n background: -webkit-radial-gradient(50% 50%, ellipse closest-corner, rgba(255, 255, 255,1) 1%, rgba(255, 255, 255,0.4) 100%);\n background: -moz-radial-gradient(50% 50%, ellipse closest-corner, rgba(255, 255, 255,1) 1%, rgba(255, 255, 255,0.4) 100%);\n background: -ms-radial-gradient(50% 50%, ellipse closest-corner, rgba(255, 255, 255,1) 1%, rgba(255, 255, 255,0.4) 100%);\n background: radial-gradient(50% 50%, ellipse closest-corner, rgba(255, 255, 255,1) 1%, rgba(255, 255, 255,0.4) 100%);\n\n color: #333;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.BLACK } a {\n color: #fff;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.WHITE } a {\n color: #333;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.BLACK } .paypal-checkout-close:before,\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.BLACK } .paypal-checkout-close:after {\n background-color: #fff;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.WHITE } .paypal-checkout-close:before,\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.WHITE } .paypal-checkout-close:after {\n background-color: #111;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.POPUP } {\n cursor: pointer;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.POPUP } {\n cursor: pointer;\n }\n\n #${ id } a {\n text-decoration: none;\n }\n\n #${ id } .paypal-checkout-modal {\n font-family: \"HelveticaNeue\", \"HelveticaNeue-Light\", \"Helvetica Neue Light\", helvetica, arial, sans-serif;\n font-size: 14px;\n text-align: center;\n\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n -ms-box-sizing: border-box;\n box-sizing: border-box;\n max-width: 350px;\n top: 50%;\n left: 50%;\n position: absolute;\n transform: translateX(-50%) translateY(-50%);\n -webkit-transform: translateX(-50%) translateY(-50%);\n -moz-transform: translateX(-50%) translateY(-50%);\n -o-transform: translateX(-50%) translateY(-50%);\n -ms-transform: translateX(-50%) translateY(-50%);\n cursor: pointer;\n text-align: center;\n }\n\n #${ id }.${ tag }-loading .paypal-checkout-message, #${ id }.${ tag }-loading .paypal-checkout-continue {\n display: none;\n }\n\n .paypal-checkout-loader {\n display: none;\n }\n\n #${ id }.${ tag }-loading .paypal-checkout-loader {\n display: block;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-logo {\n cursor: pointer;\n margin-bottom: 30px;\n display: inline-block;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-logo img {\n height: 36px;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-logo img.paypal-checkout-logo-pp {\n margin-right: 10px;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-message {\n font-size: 15px;\n line-height: 1.5;\n padding: 10px 0;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-message, #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-continue {\n display: none;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-continue {\n font-size: 15px;\n line-height: 1.35;\n padding: 10px 0;\n font-weight: bold;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-continue a {\n border-bottom: 1px solid currentColor;\n }\n\n #${ id } .paypal-checkout-close {\n position: absolute;\n right: 16px;\n top: 16px;\n width: 16px;\n height: 16px;\n opacity: 0.6;\n }\n\n #${ id }.${ tag }-loading .paypal-checkout-close {\n display: none;\n }\n\n #${ id } .paypal-checkout-close:hover {\n opacity: 1;\n }\n\n #${ id } .paypal-checkout-close:before, .paypal-checkout-close:after {\n position: absolute;\n left: 8px;\n content: ' ';\n height: 16px;\n width: 2px;\n }\n\n #${ id } .paypal-checkout-close:before {\n transform: rotate(45deg);\n -webkit-transform: rotate(45deg);\n -moz-transform: rotate(45deg);\n -o-transform: rotate(45deg);\n -ms-transform: rotate(45deg);\n }\n\n #${ id } .paypal-checkout-close:after {\n transform: rotate(-45deg);\n -webkit-transform: rotate(-45deg);\n -moz-transform: rotate(-45deg);\n -o-transform: rotate(-45deg);\n -ms-transform: rotate(-45deg);\n }\n\n #${ id } .paypal-checkout-iframe-container {\n display: none;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container,\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container > .${ CLASS.OUTLET },\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container > .${ CLASS.OUTLET } > iframe {\n max-height: calc(95vh - 60px);\n max-width: 95vw;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container {\n\n display: block;\n\n position: absolute;\n\n top: 50%;\n left: 50%;\n\n min-width: 450px;\n\n transform: translate(-50%, -50%);\n -webkit-transform: translate(-50%, -50%);\n -moz-transform: translate(-50%, -50%);\n -o-transform: translate(-50%, -50%);\n -ms-transform: translate(-50%, -50%);\n\n transform: translate3d(-50%, -50%, 0);\n -webkit-transform: translate3d(-50%, -50%, 0);\n -moz-transform: translate3d(-50%, -50%, 0);\n -o-transform: translate3d(-50%, -50%, 0);\n -ms-transform: translate3d(-50%, -50%, 0);\n\n border-radius: 10px;\n overflow: hidden;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } {\n\n position: relative;\n\n -webkit-transition: all 0.3s ease;\n -moz-transition: all 0.3s ease;\n -ms-transition: all 0.3s ease;\n -o-transition: all 0.3 ease;\n transition: all 0.3s ease;\n\n -webkit-animation-duration: 0.3s;\n animation-duration: 0.3s;\n -webkit-animation-fill-mode: both;\n animation-fill-mode: both;\n\n min-width: 450px;\n max-width: 450px;\n width: 450px;\n height: 535px;\n\n background-color: white;\n\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe {\n position: absolute;\n top: 0;\n left: 0;\n transition: opacity .4s ease-in-out;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe.${ CLASS.COMPONENT_FRAME } {\n z-index: 100;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe.${ CLASS.PRERENDER_FRAME } {\n z-index: 200;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe.${ CLASS.VISIBLE } {\n opacity: 1;\n z-index: 200;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe.${ CLASS.INVISIBLE } {\n opacity: 0;\n z-index: 100;\n }\n\n @media screen and (-ms-high-contrast: active) {\n #${ id } .paypal-checkout-close {\n opacity: 1;\n }\n\n #${ id } .paypal-checkout-close:before , .paypal-checkout-close:after {\n background-color: currentColor;\n }\n }\n\n @media screen and (max-width: 470px) {\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container,\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } {\n min-width: 100%;\n min-width: calc(100% - 20px);\n min-width: -webkit-calc(100% - 20px);\n min-width: -moz-calc(100% - 20px);\n min-width: -o-calc(100% - 20px);\n min-width: -ms-calc(100% - 20px);\n\n max-width: 100%;\n max-width: calc(100% - 20px);\n max-width: -webkit-calc(100% - 20px);\n max-width: -moz-calc(100% - 20px);\n max-width: -o-calc(100% - 20px);\n max-width: -ms-calc(100% - 20px);\n }\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } iframe {\n width: 1px;\n min-width: 100%;\n height: 100%;\n }\n\n @-webkit-keyframes ${ ANIMATION.SHOW_COMPONENT } {\n from {\n opacity: 0;\n transform: scale3d(.3, .3, .3);\n -webkit-transform: scale3d(.3, .3, .3);\n }\n\n to {\n opacity: 1;\n transform: scale3d(1, 1, 1);\n -webkit-transform: scale3d(1, 1, 1);\n }\n }\n\n @keyframes ${ ANIMATION.SHOW_COMPONENT } {\n from {\n opacity: 0;\n transform: scale3d(.3, .3, .3);\n -webkit-transform: scale3d(.3, .3, .3);\n }\n\n to {\n opacity: 1;\n transform: scale3d(1, 1, 1);\n -webkit-transform: scale3d(1, 1, 1);\n }\n }\n\n @-webkit-keyframes ${ ANIMATION.HIDE_COMPONENT } {\n from {\n transform: scale3d(1, 1, 1);\n -webkit-transform: scale3d(1, 1, 1);\n }\n\n to {\n opacity: 0;\n transform: scale3d(.3, .3, .3);\n -webkit-transform: scale3d(.3, .3, .3);\n }\n }\n\n @keyframes ${ ANIMATION.HIDE_COMPONENT } {\n from {\n transform: scale3d(1, 1, 1);\n -webkit-transform: scale3d(1, 1, 1);\n }\n\n to {\n opacity: 0;\n transform: scale3d(.3, .3, .3);\n -webkit-transform: scale3d(.3, .3, .3);\n }\n }\n\n .paypal-spinner {\n height: 30px;\n width: 30px;\n display: inline-block;\n box-sizing: content-box;\n opacity: 1;\n filter: alpha(opacity=100);\n -webkit-animation: rotation .7s infinite linear;\n -moz-animation: rotation .7s infinite linear;\n -o-animation: rotation .7s infinite linear;\n animation: rotation .7s infinite linear;\n border-left: 8px solid rgba(0, 0, 0, .2);\n border-right: 8px solid rgba(0, 0, 0, .2);\n border-bottom: 8px solid rgba(0, 0, 0, .2);\n border-top: 8px solid #fff;\n border-radius: 100%\n }\n\n @-webkit-keyframes rotation {\n from {\n -webkit-transform: rotate(0deg)\n }\n to {\n -webkit-transform: rotate(359deg)\n }\n }\n @-moz-keyframes rotation {\n from {\n -moz-transform: rotate(0deg)\n }\n to {\n -moz-transform: rotate(359deg)\n }\n }\n @-o-keyframes rotation {\n from {\n -o-transform: rotate(0deg)\n }\n to {\n -o-transform: rotate(359deg)\n }\n }\n @keyframes rotation {\n from {\n transform: rotate(0deg)\n }\n to {\n transform: rotate(359deg)\n }\n }\n `;\n}\n","/* @flow */\n\nexport function getSandboxStyle({ id, ANIMATION } : { id : string, ANIMATION : Object }) : string {\n return `\n #${ id }.paypal-checkout-sandbox {\n display: block;\n position: fixed;\n top: 0;\n left: 0;\n\n width: 100%;\n height: 100%;\n width: 100vw;\n height: 100vh;\n max-width: 100%;\n max-height: 100%;\n min-width: 100%;\n min-height: 100%;\n\n z-index: 2147483647;\n\n -webkit-animation-duration: 1s;\n animation-duration: 1s;\n\n animation-fill-mode:forwards;\n animation-iteration-count: 1;\n\n -webkit-animation-fill-mode:forwards;\n -webkit-animation-iteration-count: 1;\n }\n\n #${ id }.paypal-checkout-sandbox .paypal-checkout-sandbox-iframe {\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n }\n\n @-webkit-keyframes ${ ANIMATION.SHOW_CONTAINER } {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n }\n\n @keyframes ${ ANIMATION.SHOW_CONTAINER } {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n }\n\n @-webkit-keyframes ${ ANIMATION.HIDE_CONTAINER } {\n from {\n opacity: 1;\n }\n\n 50% {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n }\n\n @keyframes ${ ANIMATION.HIDE_CONTAINER } {\n from {\n opacity: 1;\n }\n\n 50% {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n }\n `;\n}\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { base64encode } from 'belter/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { fundingLogos } from '../../resources';\nimport { BUTTON_LOGO_COLOR, CHECKOUT_OVERLAY_COLOR } from '../../constants';\nimport { isIos } from '../../lib';\n\nimport { containerContent } from './containerContent';\nimport { getContainerStyle } from './containerStyle';\nimport { getSandboxStyle } from './sandboxStyle';\n\nconst LOGO_COLOR = {\n [ CHECKOUT_OVERLAY_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ CHECKOUT_OVERLAY_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n};\n\nexport {\n getContainerStyle,\n getSandboxStyle\n};\n\n// eslint-disable-next-line flowtype/require-exact-type\nexport type ContainerTemplateOptions = {\n id : string,\n props : Object,\n CLASS : Object,\n ANIMATION : Object,\n CONTEXT : Object,\n EVENT : Object,\n dimensions : {\n width : number,\n height : number\n },\n actions : Object,\n tag : string,\n context : string,\n outlet : HTMLElement,\n on : Function,\n jsxDom : Function\n};\n\nexport function containerTemplate({ id, props, CLASS, ANIMATION, CONTEXT, EVENT, on, tag, context, actions, outlet, jsxDom } : ContainerTemplateOptions) : HTMLElement {\n\n const [ lang, country ] = props.locale.split('_');\n\n const content = containerContent[country][lang];\n\n function close(event) {\n event.preventDefault();\n event.stopPropagation();\n actions.close();\n }\n\n function focus(event) {\n event.preventDefault();\n event.stopPropagation();\n\n if (isIos()) {\n // eslint-disable-next-line no-alert\n window.alert('Please switch tabs to reactivate the PayPal window');\n } else {\n ZalgoPromise.try(actions.focus).catch(actions.close);\n }\n }\n\n const style = props.style || {};\n const overlayColor = style.overlayColor || CHECKOUT_OVERLAY_COLOR.BLACK;\n const logoColor = LOGO_COLOR[overlayColor];\n\n const ppLogo = (typeof fundingLogos.pp === 'function')\n ? fundingLogos.pp({ logoColor })\n : fundingLogos.pp[logoColor];\n\n const paypalLogo = (typeof fundingLogos.paypal === 'function')\n ? fundingLogos.paypal({ logoColor })\n : fundingLogos.paypal[logoColor];\n\n const el = (\n
\n \n
\n
\n \n \n
\n
\n {content.windowMessage}\n
\n
\n
\n
\n
\n
\n\n
\n {outlet}\n
\n\n \n
\n );\n\n const container = (\n \n \n { el }\n \n \n );\n\n on(EVENT.CLOSE, () => {\n el.className += ` ${ tag }-loading`;\n });\n\n return (\n
\n \n\n \n
\n );\n}\n","/* @flow */\n\nexport * from './componentTemplate';\nexport * from './containerTemplate';\n","/* @flow */\n\nimport { config } from '../config';\nimport { FUNDING, PAYMENT_TYPE } from '../constants';\n\nexport function determineParameterFromToken(token : string) : string {\n return (token && token.indexOf('BA-') === 0) ? 'ba_token' : 'token';\n}\n\nexport function getPaymentType(payment : string) : string {\n if (payment.indexOf('BA-') === 0) {\n return PAYMENT_TYPE.BA_TOKEN;\n } else if (payment.indexOf('PAY-') === 0 || payment.indexOf('PAYID-') === 0) {\n return PAYMENT_TYPE.PAY_ID;\n } else if (payment.indexOf('EC-') === 0) {\n return PAYMENT_TYPE.EC_TOKEN;\n }\n\n return PAYMENT_TYPE.EC_TOKEN;\n}\n\nexport function determineUrl(env : string, fundingSource : ?string, payment : string) : string {\n\n const paymentType = getPaymentType(payment);\n\n if (paymentType === PAYMENT_TYPE.BA_TOKEN) {\n return config.billingUrls[env];\n }\n\n if (fundingSource === FUNDING.CARD || fundingSource === FUNDING.ELV) {\n return config.guestUrls[env];\n }\n\n if (fundingSource === FUNDING.IDEAL || fundingSource === FUNDING.BANCONTACT || fundingSource === FUNDING.GIROPAY ||\n fundingSource === FUNDING.SOFORT || fundingSource === FUNDING.EPS || fundingSource === FUNDING.MYBANK ||\n fundingSource === FUNDING.P24 || fundingSource === FUNDING.PAYU || fundingSource === FUNDING.VERKKOPANKKI ||\n fundingSource === FUNDING.BLIK || fundingSource === FUNDING.TRUSTLY || fundingSource === FUNDING.MAXIMA ||\n fundingSource === FUNDING.BOLETO || fundingSource === FUNDING.OXXO) {\n return config.altpayUrls[env];\n }\n\n return config.checkoutUrls[env];\n}\n","/* @flow */\n\nexport function extendNamespace(xports : Object, namespaces : $ReadOnlyArray = [], childnamespaces : $ReadOnlyArray = []) : Object {\n\n for (const name of namespaces) {\n const namespace = window[name];\n\n if (!namespace) {\n continue;\n }\n\n for (const childname of childnamespaces) {\n let childnamespace = xports[childname];\n\n if (namespace[childname]) {\n childnamespace = { ...namespace[childname], ...childnamespace };\n }\n\n xports = { ...namespace, ...xports, [ childname ]: childnamespace };\n }\n }\n\n for (const name of namespaces) {\n window[name] = xports;\n }\n\n return xports;\n}\n","/* @flow */\n/* eslint max-lines: off */\n\nexport const containerContent = {\n 'AT': {\n 'de': {\n 'windowMessage': 'Sie sehen das sichere Browserfenster von PayPal nicht? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ZW': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ZM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ZA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'YT': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'YE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'WS': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'WF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'VU': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'VG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'VE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'VC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'VA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'UY': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'UG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TV': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'TT': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'TO': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'TN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'TM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'TD': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'TC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'SZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SV': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'ST': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SR': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'SO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'SM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SL': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SH': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'SB': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'SA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'RW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'RS': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'RE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'QA': {\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PY': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'PW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'PN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'PM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'PF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'PA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'OM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'NU': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'NR': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'NP': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'NI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'NG': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'NE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'NC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MV': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'MU': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MT': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MS': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'MR': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MQ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MN': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'ML': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'MK': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MH': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'MG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ME': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MD': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MC': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'MA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'LS': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'LK': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'LI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'LC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'LA': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'KZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'KY': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'KW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'KN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'KM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'KI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'KH': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'KG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'KE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'JO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'JM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'IS': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'HR': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'HN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'GY': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'GW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GT': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'GP': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'GM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GL': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'da': {\n 'windowMessage': 'Kan du ikke se PayPals sikre browser? Vi hj\\u00E6lper dig med at genstarte vinduet, s\\u00E5 du kan betale.',\n 'continue': 'Forts\\u00E6t'\n }\n },\n 'GI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GD': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'GA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'FO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'da': {\n 'windowMessage': 'Kan du ikke se PayPals sikre browser? Vi hj\\u00E6lper dig med at genstarte vinduet, s\\u00E5 du kan betale.',\n 'continue': 'Forts\\u00E6t'\n }\n },\n 'FM': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'FK': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'FJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'ET': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ER': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'EG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'EC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'DZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'DO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'DM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'DJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'CY': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CV': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CR': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'CO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'CM': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'CL': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'CK': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CI': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'CG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CD': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'BZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'BY': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BT': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'BS': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'BO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'BN': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'BM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'BJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'BI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'BH': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'BG': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'BB': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'BA': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'AO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'AM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AL': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'AG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'AE': {\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AD': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n }\n },\n 'GB': {\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 PayPal\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\'ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AR': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'US': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Click to Continue'\n }\n },\n 'VN': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment. ',\n 'continue': 'Continue'\n }\n },\n 'UA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TW': {\n 'zh': {\n 'windowMessage': '\\u770B\\u4E0D\\u5230\\u5B89\\u5168\\u9023\\u7DDA\\u7684 PayPal \\u700F\\u89BD\\u5668\\uFF1F\\u6211\\u5011\\u5C07\\u6703\\u91CD\\u65B0\\u555F\\u52D5\\u8996\\u7A97\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002\\u00A0 ',\n 'continue': '\\u7E7C\\u7E8C'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TR': {\n 'tr': {\n 'windowMessage': 'G\\u00FCvenli PayPal taray\\u0131c\\u0131s\\u0131n\\u0131 g\\u00F6rm\\u00FCyor musunuz? Al\\u0131\\u015Fveri\\u015Finizi tamamlamak i\\u00E7in pencereyi yeniden ba\\u015Flatman\\u0131za yard\\u0131mc\\u0131 olaca\\u011F\\u0131z.\\u00A0 ',\n 'continue': 'Devam'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TH': {\n 'th': {\n 'windowMessage': '\\u0E16\\u0E49\\u0E32\\u0E04\\u0E38\\u0E13\\u0E44\\u0E21\\u0E48\\u0E40\\u0E2B\\u0E47\\u0E19\\u0E40\\u0E1A\\u0E23\\u0E32\\u0E27\\u0E4C\\u0E40\\u0E0B\\u0E2D\\u0E23\\u0E4C\\u0E17\\u0E35\\u0E48\\u0E21\\u0E35\\u0E23\\u0E30\\u0E1A\\u0E1A\\u0E04\\u0E27\\u0E32\\u0E21\\u0E1B\\u0E25\\u0E2D\\u0E14\\u0E20\\u0E31\\u0E22\\u0E02\\u0E2D\\u0E07 PayPal \\u0E40\\u0E23\\u0E32\\u0E08\\u0E30\\u0E0A\\u0E48\\u0E27\\u0E22\\u0E04\\u0E38\\u0E13\\u0E40\\u0E1B\\u0E34\\u0E14\\u0E2B\\u0E19\\u0E49\\u0E32\\u0E15\\u0E48\\u0E32\\u0E07\\u0E2D\\u0E35\\u0E01\\u0E04\\u0E23\\u0E31\\u0E49\\u0E07\\u0E40\\u0E1E\\u0E37\\u0E48\\u0E2D\\u0E0A\\u0E33\\u0E23\\u0E30\\u0E40\\u0E07\\u0E34\\u0E19\\u0E43\\u0E2B\\u0E49\\u0E40\\u0E23\\u0E35\\u0E22\\u0E1A\\u0E23\\u0E49\\u0E2D\\u0E22 ',\n 'continue': '\\u0E14\\u0E33\\u0E40\\u0E19\\u0E34\\u0E19\\u0E01\\u0E32\\u0E23\\u0E15\\u0E48\\u0E2D'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SK': {\n 'sk': {\n 'windowMessage': 'Nezobrazuje sa v\\u00e1m zabezpe\\u010den\\u00fd prehliada\\u010d PayPal? Pom\\u00f4\\u017eeme v\\u00e1m znova otvori\\u0165 okno, aby ste mohli n\\u00e1kup dokon\\u010di\\u0165.\\u00A0 ',\n 'continue': 'Pokra\\u010dova\\u0165'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SG': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SE': {\n 'sv': {\n 'windowMessage': 'Ser du inte den s\\u00E4kra PayPal-webbl\\u00E4saren? Vi hj\\u00E4lper dig att starta om f\\u00F6nstret f\\u00F6r att slutf\\u00F6ra ditt k\\u00F6p. ',\n 'continue': 'Forts\\u00E4tt'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'RU': {\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'RO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PT': {\n 'pt': {\n 'windowMessage': 'N\\u00E3o v\\u00EA a indica\\u00E7\\u00E3o de sess\\u00E3o segura PayPal no browser? Vamos ajudar a reabrir a janela para que possa concluir a sua compra.',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PL': {\n 'pl': {\n 'windowMessage': 'Nie widzisz bezpiecznej przegl\\u0105darki PayPal? Pomo\\u017Cemy Ci ponownie uruchomi\\u0107 to okno w celu dokonania zakupu.\\u00A0 ',\n 'continue': 'Kontynuuj'\n },\n 'en': {\n 'windowMessage': 'You don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PH': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre paiement.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Le ayudaremos a abrir de nuevo la ventana para completar su pago.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NO': {\n 'no': {\n 'windowMessage': 'Ser du ikke den sikre PayPal-nettleseren? Vi hjelper deg med \\u00E5 starte vinduet p\\u00E5 nytt s\\u00E5 du kan fullf\\u00F8re kj\\u00F8pet.\\u00A0 ',\n 'continue': 'Fortsett'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NL': {\n 'nl': {\n 'windowMessage': 'Ziet u geen beveiligde PayPal-browser? We helpen u het venster opnieuw te openen om uw aankoop te voltooien.\\u00A0 ',\n 'continue': 'Doorgaan'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MY': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MX': {\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'LV': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'LU': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'de': {\n 'windowMessage': 'Das PayPal-Fenster wird nicht angezeigt? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n }\n },\n 'LT': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'KR': {\n 'ko': {\n 'windowMessage': '\\uBCF4\\uC548 PayPal \\uBE0C\\uB77C\\uC6B0\\uC800\\uAC00 \\uBCF4\\uC774\\uC9C0 \\uC54A\\uC73C\\uC2E0\\uAC00\\uC694? \\uCC3D\\uC744 \\uB2E4\\uC2DC \\uC2E4\\uD589\\uD558\\uC5EC \\uACB0\\uC81C\\uB97C \\uC644\\uB8CC\\uD560 \\uC218 \\uC788\\uB3C4\\uB85D \\uB3C4\\uC640\\uB4DC\\uB9AC\\uACA0\\uC2B5\\uB2C8\\uB2E4.\\u00A0 ',\n 'continue': '\\uACC4\\uC18D'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'JP': {\n 'ja': {\n 'windowMessage': '\\u30BB\\u30AD\\u30E5\\u30A2\\u306A\\u30D6\\u30E9\\u30A6\\u30B6\\u304C\\u8868\\u793A\\u3055\\u308C\\u306A\\u3044\\u5834\\u5408\\u306F\\u3001\\u30A6\\u30A3\\u30F3\\u30C9\\u30A6\\u3092\\u518D\\u8D77\\u52D5\\u3057\\u3066\\u3001\\u652F\\u6255\\u3044\\u3092\\u5B8C\\u4E86\\u3067\\u304D\\u308B\\u3088\\u3046\\u304A\\u624B\\u4F1D\\u3044\\u3044\\u305F\\u3057\\u307E\\u3059\\u3002',\n 'continue': '\\u7D9A\\u884C'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment. ',\n 'continue': 'Continue'\n }\n },\n 'IT': {\n 'it': {\n 'windowMessage': 'Non vedi la pagina sicura di PayPal? Ti aiuteremo a riaprire la finestra per completare l\\'acquisto.\\u00A0 ',\n 'continue': 'Continua'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'IN': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'IL': {\n 'he': {\n 'windowMessage': '\\u05DC\\u05D0 \\u05E8\\u05D5\\u05D0\\u05D4 \\u05D0\\u05EA \\u05D3\\u05E4\\u05D3\\u05E4\\u05DF PayPal \\u05D4\\u05DE\\u05D0\\u05D5\\u05D1\\u05D8\\u05D7? \\u05E0\\u05E2\\u05D6\\u05D5\\u05E8 \\u05DC\\u05DA \\u05DC\\u05E4\\u05EA\\u05D5\\u05D7 \\u05DE\\u05D7\\u05D3\\u05E9 \\u05D0\\u05EA \\u05D4\\u05D7\\u05DC\\u05D5\\u05DF \\u05DB\\u05D3\\u05D9 \\u05DC\\u05D4\\u05E9\\u05DC\\u05D9\\u05DD \\u05D0\\u05EA \\u05D4\\u05E7\\u05E0\\u05D9\\u05D9\\u05D4 \\u05E9\\u05DC\\u05DA.\\u00A0 ',\n 'continue': '\\u05D4\\u05DE\\u05E9\\u05DA'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'IE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'HU': {\n 'hu': {\n 'windowMessage': 'Nem l\\u00e1tja a biztons\\u00e1gos PayPal-b\\u00f6ng\\u00e9sz\\u0151t? Seg\\u00edt\\u00fcnk \\u00fajra bet\\u00f6lteni az ablakot, hogy befejezhesse a v\\u00e1s\\u00e1rl\\u00e1st.\\u00A0 ',\n 'continue': 'Folytat\\u00e1s'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ID': {\n 'id': {\n 'windowMessage': 'Browser PayPal yang aman tidak terlihat? Kami akan membantu menampilkan ulang jendela untuk menyelesaikan pembayaran Anda.\\u00A0 ',\n 'continue': 'Lanjutkan'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'HK': {\n 'zh': {\n 'windowMessage': '\\u770B\\u4E0D\\u5230\\u5B89\\u5168\\u7684 PayPal \\u700F\\u89BD\\u5668\\u8996\\u7A97\\uFF1F\\u6211\\u5011\\u6703\\u52A9\\u4F60\\u91CD\\u65B0\\u958B\\u555F\\u8996\\u7A97\\uFF0C\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002',\n 'continue': '\\u7E7C\\u7E8C'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GROUP-LATAM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'GROUP-EMEA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'pt': {\n 'windowMessage': 'N\\u00E3o v\\u00EA a indica\\u00E7\\u00E3o de sess\\u00E3o segura PayPal no browser? Vamos ajudar a reabrir a janela para que possa concluir a sua compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'de': {\n 'windowMessage': 'Sie sehen das sichere Browserfenster von PayPal nicht? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n },\n 'da': {\n 'windowMessage': 'Kan du ikke se PayPals sikre browser? Vi hj\\u00E6lper dig med at genstarte vinduet, s\\u00E5 du kan betale.',\n 'continue': 'Forts\\u00E6t'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'GROUP-APAC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ko': {\n 'windowMessage': '\\uBCF4\\uC548 PayPal \\uBE0C\\uB77C\\uC6B0\\uC800\\uAC00 \\uBCF4\\uC774\\uC9C0 \\uC54A\\uC73C\\uC2E0\\uAC00\\uC694? \\uCC3D\\uC744 \\uB2E4\\uC2DC \\uC2E4\\uD589\\uD558\\uC5EC \\uAD6C\\uB9E4\\uB97C \\uC644\\uB8CC\\uD560 \\uC218 \\uC788\\uB3C4\\uB85D \\uB3C4\\uC640\\uB4DC\\uB9AC\\uACA0\\uC2B5\\uB2C8\\uB2E4. ',\n 'continue': '\\uACC4\\uC18D'\n },\n 'id': {\n 'windowMessage': 'Browser PayPal yang aman tidak terlihat? Kami akan membantu menampilkan ulang jendela untuk menyelesaikan pembelian Anda. ',\n 'continue': 'Lanjutkan'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'GR': {\n 'el': {\n 'windowMessage': '\\u0394\\u03b5\\u03bd \\u03b2\\u03bb\\u03ad\\u03c0\\u03b5\\u03c4\\u03b5 \\u03c4\\u03bf \\u03b1\\u03c3\\u03c6\\u03b1\\u03bb\\u03ad\\u03c2 \\u03c0\\u03c1\\u03cc\\u03b3\\u03c1\\u03b1\\u03bc\\u03bc\\u03b1 \\u03c0\\u03b5\\u03c1\\u03b9\\u03ae\\u03b3\\u03b7\\u03c3\\u03b7\\u03c2 PayPal; \\u0398\\u03b1 \\u03c3\\u03b1\\u03c2 \\u03b2\\u03bf\\u03b7\\u03b8\\u03ae\\u03c3\\u03bf\\u03c5\\u03bc\\u03b5 \\u03bd\\u03b1 \\u03b5\\u03c0\\u03b1\\u03bd\\u03b5\\u03ba\\u03ba\\u03b9\\u03bd\\u03ae\\u03c3\\u03b5\\u03c4\\u03b5 \\u03c4\\u03bf \\u03c0\\u03b1\\u03c1\\u03ac\\u03b8\\u03c5\\u03c1\\u03bf \\u03b3\\u03b9\\u03b1 \\u03bd\\u03b1 \\u03bf\\u03bb\\u03bf\\u03ba\\u03bb\\u03b7\\u03c1\\u03ce\\u03c3\\u03b5\\u03c4\\u03b5 \\u03c4\\u03b7\\u03bd \\u03b1\\u03b3\\u03bf\\u03c1\\u03ac \\u03c3\\u03b1\\u03c2.\\u00A0 ',\n 'continue': '\\u03a3\\u03c5\\u03bd\\u03ad\\u03c7\\u03b5\\u03b9\\u03b1'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'FR': {\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 PayPal\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ES': {\n 'es': {\n 'windowMessage': '\\u00BFNo ve el s\\u00EDmbolo de navegaci\\u00F3n segura de PayPal? Le ayudaremos a abrir de nuevo la ventana para completar la compra. ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'FI': {\n 'fi': {\n 'windowMessage': 'Eik\\u00f6 suojattua PayPal-selainta n\\u00e4y? Autamme avaamaan ikkunan uudelleen oston viimeistely\\u00e4 varten.\\u00A0 ',\n 'continue': 'Jatka'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'EE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'DK': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'da': {\n 'windowMessage': 'Kan du ikke se PayPals sikre browser? Vi hj\\u00E6lper dig med at genstarte vinduet, s\\u00E5 du kan betale.',\n 'continue': 'Forts\\u00E6t'\n }\n },\n 'CZ': {\n 'cs': {\n 'windowMessage': 'Nezobrazuje se v\\u00e1m bezpe\\u010dn\\u00fd prohl\\u00ed\\u017ee\\u010d PayPal? Pom\\u016f\\u017eeme v\\u00e1m okno znovu otev\\u0159\\u00edt, abyste mohli n\\u00e1kup dokon\\u010dit.',\n 'continue': 'Pokra\\u010dovat'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'DE': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'de': {\n 'windowMessage': 'Sie sehen das sichere Browserfenster von PayPal nicht? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n }\n },\n 'CH': {\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 PayPal\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'de': {\n 'windowMessage': 'Sie sehen das sichere Browserfenster von PayPal nicht? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n }\n },\n 'CA': {\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 de PayPal\\u00A0? Nous vous aiderons \\u00E0 relancer la fen\\u00EAtre afin d\\'effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you relaunch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'C2': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BE': {\n 'nl': {\n 'windowMessage': 'Ziet u de beveiligde PayPal-browser niet? We helpen u het venster opnieuw te openen om uw aankoop te voltooien.\\u00A0 ',\n 'continue': 'Doorgaan'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 PayPal\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BR': {\n 'pt': {\n 'windowMessage': 'N\\u00E3o est\\u00E1 vendo o navegador seguro do PayPal? Ajudaremos voc\\u00EA a reabrir a janela para concluir a compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AU': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\'ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n }\n};\n","/*\n * [hi-base32]{@link https://github.com/emn178/hi-base32}\n *\n * @version 0.5.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var root = typeof window === 'object' ? window : {};\n var NODE_JS = !root.HI_BASE32_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n }\n var COMMON_JS = !root.HI_BASE32_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var BASE32_ENCODE_CHAR = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'.split('');\n var BASE32_DECODE_CHAR = {\n 'A': 0, 'B': 1, 'C': 2, 'D': 3, 'E': 4, 'F': 5, 'G': 6, 'H': 7, 'I': 8,\n 'J': 9, 'K': 10, 'L': 11, 'M': 12, 'N': 13, 'O': 14, 'P': 15, 'Q': 16,\n 'R': 17, 'S': 18, 'T': 19, 'U': 20, 'V': 21, 'W': 22, 'X': 23, 'Y': 24,\n 'Z': 25, '2': 26, '3': 27, '4': 28, '5': 29, '6': 30, '7': 31\n };\n\n var blocks = [0, 0, 0, 0, 0, 0, 0, 0];\n\n var throwInvalidUtf8 = function (position, partial) {\n if (partial.length > 10) {\n partial = '...' + partial.substr(-10);\n }\n var err = new Error('Decoded data is not valid UTF-8.'\n + ' Maybe try base32.decode.asBytes()?'\n + ' Partial data after reading ' + position + ' bytes: ' + partial + ' <-');\n err.position = position;\n throw err;\n };\n\n var toUtf8String = function (bytes) {\n var str = '', length = bytes.length, i = 0, followingChars = 0, b, c;\n while (i < length) {\n b = bytes[i++];\n if (b <= 0x7F) {\n str += String.fromCharCode(b);\n continue;\n } else if (b > 0xBF && b <= 0xDF) {\n c = b & 0x1F;\n followingChars = 1;\n } else if (b <= 0xEF) {\n c = b & 0x0F;\n followingChars = 2;\n } else if (b <= 0xF7) {\n c = b & 0x07;\n followingChars = 3;\n } else {\n throwInvalidUtf8(i, str);\n }\n\n for (var j = 0; j < followingChars; ++j) {\n b = bytes[i++];\n if (b < 0x80 || b > 0xBF) {\n throwInvalidUtf8(i, str);\n }\n c <<= 6;\n c += b & 0x3F;\n }\n if (c >= 0xD800 && c <= 0xDFFF) {\n throwInvalidUtf8(i, str);\n }\n if (c > 0x10FFFF) {\n throwInvalidUtf8(i, str);\n }\n\n if (c <= 0xFFFF) {\n str += String.fromCharCode(c);\n } else {\n c -= 0x10000;\n str += String.fromCharCode((c >> 10) + 0xD800);\n str += String.fromCharCode((c & 0x3FF) + 0xDC00);\n }\n }\n return str;\n };\n\n var decodeAsBytes = function (base32Str) {\n if (!/^[A-Z2-7=]+$/.test(base32Str)) {\n throw new Error('Invalid base32 characters');\n }\n base32Str = base32Str.replace(/=/g, '');\n var v1, v2, v3, v4, v5, v6, v7, v8, bytes = [], index = 0, length = base32Str.length;\n\n // 4 char to 3 bytes\n for (var i = 0, count = length >> 3 << 3; i < count;) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v8 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255;\n bytes[index++] = (v4 << 4 | v5 >>> 1) & 255;\n bytes[index++] = (v5 << 7 | v6 << 2 | v7 >>> 3) & 255;\n bytes[index++] = (v7 << 5 | v8) & 255;\n }\n\n // remain bytes\n var remain = length - count;\n if (remain === 2) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n } else if (remain === 4) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255;\n } else if (remain === 5) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255;\n bytes[index++] = (v4 << 4 | v5 >>> 1) & 255;\n } else if (remain === 7) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255;\n bytes[index++] = (v4 << 4 | v5 >>> 1) & 255;\n bytes[index++] = (v5 << 7 | v6 << 2 | v7 >>> 3) & 255;\n }\n return bytes;\n };\n\n var encodeAscii = function (str) {\n var v1, v2, v3, v4, v5, base32Str = '', length = str.length;\n for (var i = 0, count = parseInt(length / 5) * 5; i < count;) {\n v1 = str.charCodeAt(i++);\n v2 = str.charCodeAt(i++);\n v3 = str.charCodeAt(i++);\n v4 = str.charCodeAt(i++);\n v5 = str.charCodeAt(i++);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3 | v5 >>> 5) & 31] +\n BASE32_ENCODE_CHAR[v5 & 31];\n }\n\n // remain char\n var remain = length - count;\n if (remain === 1) {\n v1 = str.charCodeAt(i);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2) & 31] +\n '======';\n } else if (remain === 2) {\n v1 = str.charCodeAt(i++);\n v2 = str.charCodeAt(i);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4) & 31] +\n '====';\n } else if (remain === 3) {\n v1 = str.charCodeAt(i++);\n v2 = str.charCodeAt(i++);\n v3 = str.charCodeAt(i);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1) & 31] +\n '===';\n } else if (remain === 4) {\n v1 = str.charCodeAt(i++);\n v2 = str.charCodeAt(i++);\n v3 = str.charCodeAt(i++);\n v4 = str.charCodeAt(i);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3) & 31] +\n '=';\n }\n return base32Str;\n };\n\n var encodeUtf8 = function (str) {\n var v1, v2, v3, v4, v5, code, end = false, base32Str = '',\n index = 0, i, start = 0, bytes = 0, length = str.length;\n do {\n blocks[0] = blocks[5];\n blocks[1] = blocks[6];\n blocks[2] = blocks[7];\n for (i = start; index < length && i < 5; ++index) {\n code = str.charCodeAt(index);\n if (code < 0x80) {\n blocks[i++] = code;\n } else if (code < 0x800) {\n blocks[i++] = 0xc0 | (code >> 6);\n blocks[i++] = 0x80 | (code & 0x3f);\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i++] = 0xe0 | (code >> 12);\n blocks[i++] = 0x80 | ((code >> 6) & 0x3f);\n blocks[i++] = 0x80 | (code & 0x3f);\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++index) & 0x3ff));\n blocks[i++] = 0xf0 | (code >> 18);\n blocks[i++] = 0x80 | ((code >> 12) & 0x3f);\n blocks[i++] = 0x80 | ((code >> 6) & 0x3f);\n blocks[i++] = 0x80 | (code & 0x3f);\n }\n }\n bytes += i - start;\n start = i - 5;\n if (index === length) {\n ++index;\n }\n if (index > length && i < 6) {\n end = true;\n }\n v1 = blocks[0];\n if (i > 4) {\n v2 = blocks[1];\n v3 = blocks[2];\n v4 = blocks[3];\n v5 = blocks[4];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3 | v5 >>> 5) & 31] +\n BASE32_ENCODE_CHAR[v5 & 31];\n } else if (i === 1) {\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2) & 31] +\n '======';\n } else if (i === 2) {\n v2 = blocks[1];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4) & 31] +\n '====';\n } else if (i === 3) {\n v2 = blocks[1];\n v3 = blocks[2];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1) & 31] +\n '===';\n } else {\n v2 = blocks[1];\n v3 = blocks[2];\n v4 = blocks[3];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3) & 31] +\n '=';\n }\n } while (!end);\n return base32Str;\n };\n\n var encodeBytes = function (bytes) {\n var v1, v2, v3, v4, v5, base32Str = '', length = bytes.length;\n for (var i = 0, count = parseInt(length / 5) * 5; i < count;) {\n v1 = bytes[i++];\n v2 = bytes[i++];\n v3 = bytes[i++];\n v4 = bytes[i++];\n v5 = bytes[i++];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3 | v5 >>> 5) & 31] +\n BASE32_ENCODE_CHAR[v5 & 31];\n }\n\n // remain char\n var remain = length - count;\n if (remain === 1) {\n v1 = bytes[i];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2) & 31] +\n '======';\n } else if (remain === 2) {\n v1 = bytes[i++];\n v2 = bytes[i];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4) & 31] +\n '====';\n } else if (remain === 3) {\n v1 = bytes[i++];\n v2 = bytes[i++];\n v3 = bytes[i];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1) & 31] +\n '===';\n } else if (remain === 4) {\n v1 = bytes[i++];\n v2 = bytes[i++];\n v3 = bytes[i++];\n v4 = bytes[i];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3) & 31] +\n '=';\n }\n return base32Str;\n };\n\n var encode = function (input, asciiOnly) {\n var notString = typeof(input) !== 'string';\n if (notString && input.constructor === ArrayBuffer) {\n input = new Uint8Array(input);\n }\n if (notString) {\n return encodeBytes(input);\n } else if (asciiOnly) {\n return encodeAscii(input);\n } else {\n return encodeUtf8(input);\n }\n };\n\n var decode = function (base32Str, asciiOnly) {\n if (!asciiOnly) {\n return toUtf8String(decodeAsBytes(base32Str));\n }\n if (!/^[A-Z2-7=]+$/.test(base32Str)) {\n throw new Error('Invalid base32 characters');\n }\n var v1, v2, v3, v4, v5, v6, v7, v8, str = '', length = base32Str.indexOf('=');\n if (length === -1) {\n length = base32Str.length;\n }\n\n // 8 char to 5 bytes\n for (var i = 0, count = length >> 3 << 3; i < count;) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v8 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255) +\n String.fromCharCode((v2 << 6 | v3 << 1 | v4 >>> 4) & 255) +\n String.fromCharCode((v4 << 4 | v5 >>> 1) & 255) +\n String.fromCharCode((v5 << 7 | v6 << 2 | v7 >>> 3) & 255) +\n String.fromCharCode((v7 << 5 | v8) & 255);\n }\n\n // remain bytes\n var remain = length - count;\n if (remain === 2) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255);\n } else if (remain === 4) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255) +\n String.fromCharCode((v2 << 6 | v3 << 1 | v4 >>> 4) & 255);\n } else if (remain === 5) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255) +\n String.fromCharCode((v2 << 6 | v3 << 1 | v4 >>> 4) & 255) +\n String.fromCharCode((v4 << 4 | v5 >>> 1) & 255);\n } else if (remain === 7) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255) +\n String.fromCharCode((v2 << 6 | v3 << 1 | v4 >>> 4) & 255) +\n String.fromCharCode((v4 << 4 | v5 >>> 1) & 255) +\n String.fromCharCode((v5 << 7 | v6 << 2 | v7 >>> 3) & 255);\n }\n return str;\n };\n\n var exports = {\n encode: encode,\n decode: decode\n };\n decode.asBytes = decodeAsBytes;\n\n if (COMMON_JS) {\n module.exports = exports;\n } else {\n root.base32 = exports;\n if (AMD) {\n define(function() {\n return exports;\n });\n }\n }\n})();\n","/* @flow */\n\nimport type { Component, ComponentDriverType } from '../component/component';\n\nexport let script : ComponentDriverType<*, Document> = {\n\n global() : ?Document {\n return window.document;\n },\n\n register(component : Component<*>, document : Document) {\n\n function render(element : HTMLElement) {\n\n if (!element || !element.tagName || element.tagName.toLowerCase() !== 'script') {\n return;\n }\n\n // $FlowFixMe\n if (!element.attributes.type || element.attributes.type.value !== 'application/x-component' || !element.parentNode) {\n return;\n }\n\n let tag = element.getAttribute('data-component');\n\n if (!tag || tag !== component.tag) {\n return;\n }\n\n component.log(`instantiate_script_component`);\n\n let props : { [string] : mixed } = element.innerText\n ? eval(`(${ element.innerText })`) // eslint-disable-line no-eval, security/detect-eval-with-expression\n : {};\n\n let container = document.createElement('div');\n\n if (!element.parentNode) {\n throw new Error(`Element has no parent`);\n }\n\n element.parentNode.replaceChild(container, element);\n\n // $FlowFixMe\n component.render(props, container);\n }\n\n function scan() {\n let scriptTags = Array.prototype.slice.call(document.getElementsByTagName('script'));\n\n for (let element of scriptTags) {\n render(element);\n }\n }\n\n scan();\n document.addEventListener('DOMContentLoaded', scan);\n window.addEventListener('load', scan);\n\n document.addEventListener('DOMNodeInserted', event => {\n // $FlowFixMe\n render(event.target);\n });\n }\n};\n","/* @flow */\n\nimport { extend } from '../lib';\nimport type { Component, ComponentDriverType } from '../component/component';\n\ndeclare class ReactClassType {\n\n}\n\ntype ReactElementType = {\n\n};\n\ntype ReactType = {\n createClass : ({ render : ReactElementType, componentDidMount : () => void, componentDidUpdate : () => void }) => (typeof ReactClassType),\n createElement : (string, ?{ [string] : mixed }, ...children : Array) => ReactElementType\n};\n\ntype ReactDomType = {\n findDOMNode : (ReactElementType) => HTMLElement\n};\n\ntype ReactLibraryType = { React : ReactType, ReactDOM : ReactDomType };\n\nexport let react : ComponentDriverType<*, ReactLibraryType> = {\n\n global() : ?ReactLibraryType {\n if (window.React && window.ReactDOM) {\n return {\n React: window.React,\n ReactDOM: window.ReactDOM\n };\n }\n },\n\n register(component : Component<*>, { React, ReactDOM } : ReactLibraryType) : (typeof ReactClassType) {\n\n if (React.createClass) {\n\n // $FlowFixMe\n component.react = React.createClass({\n\n render() : ReactElementType {\n return React.createElement('div', null);\n },\n\n componentDidMount() {\n component.log(`instantiate_react_component`);\n\n let el = ReactDOM.findDOMNode(this);\n\n let parent = component.init(extend({}, this.props), null, el);\n\n this.setState({ parent });\n\n parent.render(el);\n },\n\n componentDidUpdate() {\n\n if (this.state && this.state.parent) {\n this.state.parent.updateProps(extend({}, this.props));\n }\n },\n\n componentWillUnmount() {\n if (this.state && this.state.parent) {\n this.state.parent.destroy();\n }\n }\n });\n } else {\n // $FlowFixMe\n component.react = class extends React.Component {\n render() : ReactElementType {\n return React.createElement('div', null);\n }\n\n componentDidMount() {\n component.log(`instantiate_react_component`);\n\n let el = ReactDOM.findDOMNode(this);\n\n let parent = component.init(extend({}, this.props), null, el);\n\n this.setState({ parent });\n\n parent.render(el);\n }\n\n componentDidUpdate() {\n\n if (this.state && this.state.parent) {\n this.state.parent.updateProps(extend({}, this.props));\n }\n }\n\n componentWillUnmount() {\n if (this.state && this.state.parent) {\n this.state.parent.destroy();\n }\n }\n };\n }\n\n return component.react;\n }\n};\n","/* @flow */\n\nimport type { Component, ComponentDriverType } from '../component/component';\nimport { extend } from '../lib';\n\ntype VueComponent = {\n render : (Function) => Element,\n inheritAttrs : boolean,\n mounted : () => void,\n beforeUpdate : () => void\n};\n\nexport let vue : ComponentDriverType<*, void> = {\n\n global() {\n // pass\n },\n\n register

(component : Component

) : VueComponent {\n\n return {\n render(createElement) : Element {\n return createElement('div');\n },\n\n inheritAttrs: false,\n\n mounted() {\n let el = this.$el;\n\n // $FlowFixMe\n this.parent = component.init(extend({}, this.$attrs), null, el);\n\n this.parent.render(el);\n },\n\n beforeUpdate() {\n \n if (this.parent && this.$attrs) {\n this.parent.updateProps(extend({}, this.$attrs));\n }\n }\n };\n }\n};\n","/* @flow */\n\nimport { dasherizeToCamel, replaceObject } from '../lib';\nimport type { Component, ComponentDriverType } from '../component/component';\n\ntype AngularModule = {\n directive : (string, () => {\n scope : { [string] : '=' | '@' },\n restrict : string,\n controller : Array\n }) => AngularModule\n};\n\ntype Angular = {\n module : (string, Array) => AngularModule\n};\n\nexport let angular : ComponentDriverType<*, Angular> = {\n\n global() : ?Angular {\n return window.angular;\n },\n\n register(component : Component<*>, ng : Angular) : AngularModule {\n\n let module = ng.module(component.tag, []).directive(dasherizeToCamel(component.tag), () => {\n\n let scope = {};\n\n for (let key of component.getPropNames()) {\n scope[key] = '=';\n }\n\n if (component.looseProps) {\n scope.props = '=';\n }\n\n return {\n scope,\n\n restrict: 'E',\n\n controller: [ '$scope', '$element', ($scope, $element) => {\n\n if (component.looseProps && !$scope.props) {\n throw new Error(`For angular bindings to work, prop definitions must be passed to zoid.create`);\n }\n\n component.log(`instantiate_angular_component`);\n\n function safeApply() {\n if ($scope.$root.$$phase !== '$apply' && $scope.$root.$$phase !== '$digest') {\n try {\n $scope.$apply();\n } catch (err) {\n // pass\n }\n }\n }\n\n let getProps = () => {\n\n let scopeProps;\n\n if ($scope.props) {\n scopeProps = $scope.props;\n } else {\n scopeProps = {};\n for (let key of Object.keys(scope)) {\n if ($scope[key] !== undefined) {\n scopeProps[key] = $scope[key];\n }\n }\n }\n\n scopeProps = replaceObject(scopeProps, {\n 'function': (value) => {\n return function angularWrapped() : mixed {\n let result = value.apply(this, arguments);\n safeApply();\n return result;\n };\n }\n });\n\n return scopeProps;\n };\n\n let parent = component.init(getProps(), null, $element[0]);\n parent.render($element[0]);\n\n $scope.$watch(() => {\n parent.updateProps(getProps());\n });\n } ]\n };\n });\n\n return module;\n }\n};\n","/* @flow */\n\nimport type { Component, ComponentDriverType } from '../component/component';\n\ndeclare class GlimmerComponentType {\n element : HTMLElement,\n args : Object\n}\n\nexport let glimmer : ComponentDriverType<*, (typeof GlimmerComponentType)> = {\n\n global() {\n // pass\n },\n\n register(component : Component<*>, GlimmerComponent : (typeof GlimmerComponentType)) : (typeof GlimmerComponentType) {\n return class extends GlimmerComponent {\n didInsertElement() {\n component.render({ ...this.args }, this.element);\n }\n };\n }\n};\n","/* @flow */\n/* eslint new-cap: 0 */\n\nimport { replaceObject } from '../lib';\nimport type { Component, ComponentDriverType } from '../component/component';\n\ntype Angular2Injection = {};\n\ntype Angular2Component = {};\n\ntype Angular2Module = {};\n\ntype Angular2 = {\n Component : ({ selector : string, template : string, inputs : Array }) => {\n Class : ({ constructor : Array, ngOnInit : () => void, ngOnChanges : () => void }) => Angular2Component\n },\n NgModule : ({ declarations : Array, exports : Array }) => {\n Class : ({ constructor : () => void }) => Angular2Module\n },\n ElementRef : Angular2Injection,\n NgZone : Angular2Injection\n};\n\n\nexport let angular2 : ComponentDriverType<*, Angular2> = {\n\n global() {\n // pass\n },\n\n register(zoid : Component<*>, { Component : AngularComponent, NgModule, ElementRef, NgZone }) : Angular2Module {\n\n zoid.log('initializing angular2 component');\n\n let getProps = (component) => {\n return replaceObject({ ...component.internalProps, ...component.props }, {\n 'function': (value) => {\n if (typeof value === 'function') {\n return function angular2Wrapped() : void {\n return component.zone.run(() => value.apply(this, arguments));\n };\n }\n }\n });\n };\n\n const ComponentInstance =\n AngularComponent({\n selector: zoid.tag,\n template: '

',\n inputs: [ 'props' ]\n }).Class({\n constructor: [ ElementRef, NgZone, function angularConstructor(elementRef, zone) {\n this.elementRef = elementRef;\n this.zone = zone;\n } ],\n ngOnInit () {\n const targetElement = this.elementRef.nativeElement;\n const parent = zoid.init(getProps(this), null, targetElement);\n parent.render(targetElement);\n this.parent = parent;\n },\n ngOnChanges() {\n if (this.parent) {\n this.parent.updateProps(getProps(this));\n }\n }\n });\n\n\n const ModuleInstance = NgModule({\n declarations: [ ComponentInstance ],\n exports: [ ComponentInstance ]\n }).Class({\n constructor () {\n // pass\n }\n });\n\n return ModuleInstance;\n }\n};\n","/*!\n * Bowser - a browser detector\n * https://github.com/ded/bowser\n * MIT License | (c) Dustin Diaz 2015\n */\n!function(e,t,n){typeof module!=\"undefined\"&&module.exports?module.exports=n():typeof define==\"function\"&&define.amd?define(t,n):e[t]=n()}(this,\"bowser\",function(){function t(t){function n(e){var n=t.match(e);return n&&n.length>1&&n[1]||\"\"}function r(e){var n=t.match(e);return n&&n.length>1&&n[2]||\"\"}function C(e){switch(e){case\"NT\":return\"NT\";case\"XP\":return\"XP\";case\"NT 5.0\":return\"2000\";case\"NT 5.1\":return\"XP\";case\"NT 5.2\":return\"2003\";case\"NT 6.0\":return\"Vista\";case\"NT 6.1\":return\"7\";case\"NT 6.2\":return\"8\";case\"NT 6.3\":return\"8.1\";case\"NT 10.0\":return\"10\";default:return undefined}}var i=n(/(ipod|iphone|ipad)/i).toLowerCase(),o=/like android/i.test(t),u=!o&&/android/i.test(t),a=/nexus\\s*[0-6]\\s*/i.test(t),f=!a&&/nexus\\s*[0-9]+/i.test(t),l=/CrOS/.test(t),c=/silk/i.test(t),h=/sailfish/i.test(t),p=/tizen/i.test(t),d=/(web|hpw)(o|0)s/i.test(t),v=/windows phone/i.test(t),m=/SamsungBrowser/i.test(t),g=!v&&/windows/i.test(t),y=!i&&!c&&/macintosh/i.test(t),b=!u&&!h&&!p&&!d&&/linux/i.test(t),w=r(/edg([ea]|ios)\\/(\\d+(\\.\\d+)?)/i),E=n(/version\\/(\\d+(\\.\\d+)?)/i),S=/tablet/i.test(t)&&!/tablet pc/i.test(t),x=!S&&/[^-]mobi/i.test(t),T=/xbox/i.test(t),N;/opera/i.test(t)?N={name:\"Opera\",opera:e,version:E||n(/(?:opera|opr|opios)[\\s\\/](\\d+(\\.\\d+)?)/i)}:/opr\\/|opios/i.test(t)?N={name:\"Opera\",opera:e,version:n(/(?:opr|opios)[\\s\\/](\\d+(\\.\\d+)?)/i)||E}:/SamsungBrowser/i.test(t)?N={name:\"Samsung Internet for Android\",samsungBrowser:e,version:E||n(/(?:SamsungBrowser)[\\s\\/](\\d+(\\.\\d+)?)/i)}:/Whale/i.test(t)?N={name:\"NAVER Whale browser\",whale:e,version:n(/(?:whale)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/MZBrowser/i.test(t)?N={name:\"MZ Browser\",mzbrowser:e,version:n(/(?:MZBrowser)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/coast/i.test(t)?N={name:\"Opera Coast\",coast:e,version:E||n(/(?:coast)[\\s\\/](\\d+(\\.\\d+)?)/i)}:/focus/i.test(t)?N={name:\"Focus\",focus:e,version:n(/(?:focus)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/yabrowser/i.test(t)?N={name:\"Yandex Browser\",yandexbrowser:e,version:E||n(/(?:yabrowser)[\\s\\/](\\d+(\\.\\d+)?)/i)}:/ucbrowser/i.test(t)?N={name:\"UC Browser\",ucbrowser:e,version:n(/(?:ucbrowser)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/mxios/i.test(t)?N={name:\"Maxthon\",maxthon:e,version:n(/(?:mxios)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/epiphany/i.test(t)?N={name:\"Epiphany\",epiphany:e,version:n(/(?:epiphany)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/puffin/i.test(t)?N={name:\"Puffin\",puffin:e,version:n(/(?:puffin)[\\s\\/](\\d+(?:\\.\\d+)?)/i)}:/sleipnir/i.test(t)?N={name:\"Sleipnir\",sleipnir:e,version:n(/(?:sleipnir)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/k-meleon/i.test(t)?N={name:\"K-Meleon\",kMeleon:e,version:n(/(?:k-meleon)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:v?(N={name:\"Windows Phone\",osname:\"Windows Phone\",windowsphone:e},w?(N.msedge=e,N.version=w):(N.msie=e,N.version=n(/iemobile\\/(\\d+(\\.\\d+)?)/i))):/msie|trident/i.test(t)?N={name:\"Internet Explorer\",msie:e,version:n(/(?:msie |rv:)(\\d+(\\.\\d+)?)/i)}:l?N={name:\"Chrome\",osname:\"Chrome OS\",chromeos:e,chromeBook:e,chrome:e,version:n(/(?:chrome|crios|crmo)\\/(\\d+(\\.\\d+)?)/i)}:/edg([ea]|ios)/i.test(t)?N={name:\"Microsoft Edge\",msedge:e,version:w}:/vivaldi/i.test(t)?N={name:\"Vivaldi\",vivaldi:e,version:n(/vivaldi\\/(\\d+(\\.\\d+)?)/i)||E}:h?N={name:\"Sailfish\",osname:\"Sailfish OS\",sailfish:e,version:n(/sailfish\\s?browser\\/(\\d+(\\.\\d+)?)/i)}:/seamonkey\\//i.test(t)?N={name:\"SeaMonkey\",seamonkey:e,version:n(/seamonkey\\/(\\d+(\\.\\d+)?)/i)}:/firefox|iceweasel|fxios/i.test(t)?(N={name:\"Firefox\",firefox:e,version:n(/(?:firefox|iceweasel|fxios)[ \\/](\\d+(\\.\\d+)?)/i)},/\\((mobile|tablet);[^\\)]*rv:[\\d\\.]+\\)/i.test(t)&&(N.firefoxos=e,N.osname=\"Firefox OS\")):c?N={name:\"Amazon Silk\",silk:e,version:n(/silk\\/(\\d+(\\.\\d+)?)/i)}:/phantom/i.test(t)?N={name:\"PhantomJS\",phantom:e,version:n(/phantomjs\\/(\\d+(\\.\\d+)?)/i)}:/slimerjs/i.test(t)?N={name:\"SlimerJS\",slimer:e,version:n(/slimerjs\\/(\\d+(\\.\\d+)?)/i)}:/blackberry|\\bbb\\d+/i.test(t)||/rim\\stablet/i.test(t)?N={name:\"BlackBerry\",osname:\"BlackBerry OS\",blackberry:e,version:E||n(/blackberry[\\d]+\\/(\\d+(\\.\\d+)?)/i)}:d?(N={name:\"WebOS\",osname:\"WebOS\",webos:e,version:E||n(/w(?:eb)?osbrowser\\/(\\d+(\\.\\d+)?)/i)},/touchpad\\//i.test(t)&&(N.touchpad=e)):/bada/i.test(t)?N={name:\"Bada\",osname:\"Bada\",bada:e,version:n(/dolfin\\/(\\d+(\\.\\d+)?)/i)}:p?N={name:\"Tizen\",osname:\"Tizen\",tizen:e,version:n(/(?:tizen\\s?)?browser\\/(\\d+(\\.\\d+)?)/i)||E}:/qupzilla/i.test(t)?N={name:\"QupZilla\",qupzilla:e,version:n(/(?:qupzilla)[\\s\\/](\\d+(?:\\.\\d+)+)/i)||E}:/chromium/i.test(t)?N={name:\"Chromium\",chromium:e,version:n(/(?:chromium)[\\s\\/](\\d+(?:\\.\\d+)?)/i)||E}:/chrome|crios|crmo/i.test(t)?N={name:\"Chrome\",chrome:e,version:n(/(?:chrome|crios|crmo)\\/(\\d+(\\.\\d+)?)/i)}:u?N={name:\"Android\",version:E}:/safari|applewebkit/i.test(t)?(N={name:\"Safari\",safari:e},E&&(N.version=E)):i?(N={name:i==\"iphone\"?\"iPhone\":i==\"ipad\"?\"iPad\":\"iPod\"},E&&(N.version=E)):/googlebot/i.test(t)?N={name:\"Googlebot\",googlebot:e,version:n(/googlebot\\/(\\d+(\\.\\d+))/i)||E}:N={name:n(/^(.*)\\/(.*) /),version:r(/^(.*)\\/(.*) /)},!N.msedge&&/(apple)?webkit/i.test(t)?(/(apple)?webkit\\/537\\.36/i.test(t)?(N.name=N.name||\"Blink\",N.blink=e):(N.name=N.name||\"Webkit\",N.webkit=e),!N.version&&E&&(N.version=E)):!N.opera&&/gecko\\//i.test(t)&&(N.name=N.name||\"Gecko\",N.gecko=e,N.version=N.version||n(/gecko\\/(\\d+(\\.\\d+)?)/i)),!N.windowsphone&&(u||N.silk)?(N.android=e,N.osname=\"Android\"):!N.windowsphone&&i?(N[i]=e,N.ios=e,N.osname=\"iOS\"):y?(N.mac=e,N.osname=\"macOS\"):T?(N.xbox=e,N.osname=\"Xbox\"):g?(N.windows=e,N.osname=\"Windows\"):b&&(N.linux=e,N.osname=\"Linux\");var k=\"\";N.windows?k=C(n(/Windows ((NT|XP)( \\d\\d?.\\d)?)/i)):N.windowsphone?k=n(/windows phone (?:os)?\\s?(\\d+(\\.\\d+)*)/i):N.mac?(k=n(/Mac OS X (\\d+([_\\.\\s]\\d+)*)/i),k=k.replace(/[_\\s]/g,\".\")):i?(k=n(/os (\\d+([_\\s]\\d+)*) like mac os x/i),k=k.replace(/[_\\s]/g,\".\")):u?k=n(/android[ \\/-](\\d+(\\.\\d+)*)/i):N.webos?k=n(/(?:web|hpw)os\\/(\\d+(\\.\\d+)*)/i):N.blackberry?k=n(/rim\\stablet\\sos\\s(\\d+(\\.\\d+)*)/i):N.bada?k=n(/bada\\/(\\d+(\\.\\d+)*)/i):N.tizen&&(k=n(/tizen[\\/\\s](\\d+(\\.\\d+)*)/i)),k&&(N.osversion=k);var L=!N.windows&&k.split(\".\")[0];if(S||f||i==\"ipad\"||u&&(L==3||L>=4&&!x)||N.silk)N.tablet=e;else if(x||i==\"iphone\"||i==\"ipod\"||u||a||N.blackberry||N.webos||N.bada)N.mobile=e;return N.msedge||N.msie&&N.version>=10||N.yandexbrowser&&N.version>=15||N.vivaldi&&N.version>=1||N.chrome&&N.version>=20||N.samsungBrowser&&N.version>=4||N.whale&&s([N.version,\"1.0\"])===1||N.mzbrowser&&s([N.version,\"6.0\"])===1||N.focus&&s([N.version,\"1.0\"])===1||N.firefox&&N.version>=20||N.safari&&N.version>=6||N.opera&&N.version>=10||N.ios&&N.osversion&&N.osversion.split(\".\")[0]>=6||N.blackberry&&N.version>=10.1||N.chromium&&N.version>=20?N.a=e:N.msie&&N.version<10||N.chrome&&N.version<20||N.firefox&&N.version<20||N.safari&&N.version<6||N.opera&&N.version<10||N.ios&&N.osversion&&N.osversion.split(\".\")[0]<6||N.chromium&&N.version<20?N.c=e:N.x=e,N}function r(e){return e.split(\".\").length}function i(e,t){var n=[],r;if(Array.prototype.map)return Array.prototype.map.call(e,t);for(r=0;r=0){if(n[0][t]>n[1][t])return 1;if(n[0][t]!==n[1][t])return-1;if(t===0)return 0}}function o(e,r,i){var o=n;typeof r==\"string\"&&(i=r,r=void 0),r===void 0&&(r=!1),i&&(o=t(i));var u=\"\"+o.version;for(var a in e)if(e.hasOwnProperty(a)&&o[a]){if(typeof e[a]!=\"string\")throw new Error(\"Browser version in the minVersion map should be a string: \"+a+\": \"+String(e));return s([u,e[a]])<0}return r}function u(e,t,n){return!o(e,t,n)}var e=!0,n=t(typeof navigator!=\"undefined\"?navigator.userAgent||\"\":\"\");return n.test=function(e){for(var t=0;t\\n \\n \\n \\n \\n \\n \\n \\n \\n\\n\"","module.exports = \"\\n \\n \\n \\n\\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n \\n \\n \\n \\n \\n \\n \\n\\n\"","module.exports = \"\\n\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n \\n \\n \\n \\n \\n \\n \\n\\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n\\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n unionpay\\n Created with Sketch.\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","// get successful control from form and assemble into object\n// http://www.w3.org/TR/html401/interact/forms.html#h-17.13.2\n\n// types which indicate a submit action and are not successful controls\n// these will be ignored\nvar k_r_submitter = /^(?:submit|button|image|reset|file)$/i;\n\n// node names which could be successful controls\nvar k_r_success_contrls = /^(?:input|select|textarea|keygen)/i;\n\n// Matches bracket notation.\nvar brackets = /(\\[[^\\[\\]]*\\])/g;\n\n// serializes form fields\n// @param form MUST be an HTMLForm element\n// @param options is an optional argument to configure the serialization. Default output\n// with no options specified is a url encoded string\n// - hash: [true | false] Configure the output type. If true, the output will\n// be a js object.\n// - serializer: [function] Optional serializer function to override the default one.\n// The function takes 3 arguments (result, key, value) and should return new result\n// hash and url encoded str serializers are provided with this module\n// - disabled: [true | false]. If true serialize disabled fields.\n// - empty: [true | false]. If true serialize empty fields\nfunction serialize(form, options) {\n if (typeof options != 'object') {\n options = { hash: !!options };\n }\n else if (options.hash === undefined) {\n options.hash = true;\n }\n\n var result = (options.hash) ? {} : '';\n var serializer = options.serializer || ((options.hash) ? hash_serializer : str_serialize);\n\n var elements = form && form.elements ? form.elements : [];\n\n //Object store each radio and set if it's empty or not\n var radio_store = Object.create(null);\n\n for (var i=0 ; i\n \n
\n
\n \n \n
\n
\n {content.windowMessage}\n
\n
\n
\n
\n
\n
\n\n
\n {outlet}\n
\n\n \n
\n );\n\n const container = (\n \n \n { el }\n \n \n );\n\n on(EVENT.CLOSE, () => {\n el.className += ` ${ tag }-loading`;\n });\n\n return (\n
\n \n\n \n
\n );\n}\n\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { create } from 'zoid/src';\nimport { type Component } from 'zoid/src/component/component';\nimport { base64encode } from 'belter/src';\n\nimport { ENV } from '../constants';\nimport { getButtonSessionID, getBrowserLocale, getSessionID, getCurrentScriptUrl } from '../lib';\nimport { config } from '../config';\n\nimport { containerTemplate } from './template';\n\ntype BillingOptions = {|\n client : {\n [string] : (string | ZalgoPromise)\n },\n env? : string,\n locale? : string,\n logLevel : string,\n awaitPopupBridge : Function,\n meta : Object,\n commit : boolean,\n token : string\n|};\n\nexport const BillingPage : Component = create({\n tag: 'billing-page',\n name: 'billing-page',\n\n buildUrl(props) : string {\n const env = props.env || config.env;\n return `${ config.inlinedCardFieldUrls[env] }/billing`;\n },\n\n get domain() : Object {\n return {\n ...config.paypalDomains,\n [ ENV.LOCAL ]: /^http:\\/\\/localhost.paypal.com:\\d+$/\n };\n },\n\n scrolling: true,\n\n props: {\n sessionID: {\n type: 'string',\n required: false,\n def() : string {\n return getSessionID();\n },\n queryParam: true\n },\n\n\n token: {\n type: 'string',\n required: true,\n queryParam: true\n },\n\n buttonSessionID: {\n type: 'string',\n required: false,\n def() : ?string {\n return getButtonSessionID();\n },\n queryParam: true\n },\n\n commit: {\n type: 'boolean',\n required: false,\n queryParam: true\n },\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n },\n\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n allowDelegate: true,\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n }\n },\n\n cardType: {\n type: 'string',\n required: false\n },\n prefilledZipCode: {\n type: 'string',\n required: false\n },\n\n onEvent: {\n type: 'function',\n required: false,\n sameDomain: true\n },\n\n dispatch: {\n type: 'object',\n required: false,\n sameDomain: true\n },\n\n onCancel: {\n type: 'function',\n required: false,\n once: true,\n noop: true\n },\n\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n }\n },\n\n\n containerTemplate\n});\n","/* @flow */\n\nimport { track, info } from 'beaver-logger/client';\n\nimport { config } from '../config';\nimport { FPTI, PPTM_ID } from '../constants';\nimport { stringifyError, extendUrl, loadScript, getElement, isPayPalDomain } from '../lib';\n\n\nfunction shouldCreateInitialPptmScript() : boolean {\n const id = window.location.hostname;\n\n if (!id) {\n return false;\n }\n\n if (isPayPalDomain()) {\n return false;\n }\n\n const existingScript = getElement(PPTM_ID);\n const alreadyDownloaded = Boolean(existingScript);\n\n if (alreadyDownloaded) {\n info('pptm_tried_loading_twice');\n return false;\n }\n\n return true;\n}\n\nfunction removePptm() {\n const script = getElement(PPTM_ID);\n\n if (script) {\n // $FlowFixMe\n script.parentNode.removeChild(script);\n }\n}\n\nexport function pptmFactory() : Object {\n let noContentFoundInContainer = false;\n const callback = `__pptmLoadedWithNoContent`;\n let listener;\n\n const obj = {\n /*\n In the button component, we set up a global window[callback] that will be called in pptm `onload` attribute.\n Button.render calls `reloadPptmScript`, which checks if window[callback] has been called yet (meaning, it checks\n if pptm.js was loaded before Button.render was called). If so, we'll check to see if we should reload PPTM\n now that we might have a client ID from the Button.render method.\n If pptm.js hasn't loaded yet, then we'll set up a listener to the same logic above to defer it until\n pptm.js actually loads.\n */\n reloadPptmScript(clientId : ?string) {\n const tryCreatePptmScript = () => {\n if (obj.shouldReloadPptmScript(clientId)) {\n obj.removePptm();\n obj.createPptmScript(clientId);\n } else {\n // Defer until later, since reloadPptmScript might have been called\n // before pptm loaded, so we'll still want to hook into the script load.\n listener = tryCreatePptmScript;\n }\n };\n\n tryCreatePptmScript();\n },\n listenForLoadWithNoContent() {\n window[callback] = () => {\n noContentFoundInContainer = true;\n\n if (listener) {\n listener();\n listener = undefined;\n }\n };\n },\n listenForButtonRender() {\n window.paypalDDL = window.paypalDDL || [];\n const buttonRenderEvent = window.paypalDDL.filter(e => e.event === 'paypalButtonRender');\n if (buttonRenderEvent.length === 0) {\n window.paypalDDL.push({ event: 'paypalButtonRender' });\n }\n },\n get callback() : string {\n return callback;\n },\n get noContentFoundInContainer() : boolean {\n return noContentFoundInContainer;\n },\n createPptmScript: (clientId : ?string) => {\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.PPTM,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.PPTM_LOAD\n });\n \n const params = {\n t: 'xo',\n id: window.location.hostname,\n mrid: config.merchantID,\n client_id: '',\n v: config.version,\n source: 'checkoutjs'\n };\n \n if (clientId) {\n params.client_id = clientId;\n } else {\n delete params.client_id;\n }\n \n const fullUrl = extendUrl(config.pptmUrl, params);\n \n loadScript(fullUrl, 0, {\n async: true,\n id: PPTM_ID\n }).then(() => {\n // If the snippet is empty, then fire the callback.\n // We assume non-empty pptm.js bundles with init the paypalDDL and push an event called\n // `snippetRun` to it.\n if (!(window.paypalDDL && window.paypalDDL[0] && window.paypalDDL[0].event === 'snippetRun')) {\n window[callback]();\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.PPTM,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.PPTM_LOADED\n });\n }).catch(err => {\n info('pptm_script_error', { error: stringifyError(err) });\n });\n },\n shouldCreateInitialPptmScript,\n /*\n During Button render if a client ID was provided, we'll want to refresh the\n pptm script to try to pull down a container by that value.\n We'll only do this if we're not on the PayPal domain, or if\n a merchant ID wasn't already provided (since container look-up can\n also happen by merchant ID). Note that this will only happen\n if there was no content found in the container that was pulled down\n in the `setup` script. This is important because we don't want\n to pull down multiple containers that actually contain content,\n otherwise we'll be firing duplicate tags.\n */\n shouldReloadPptmScript(clientId : ?string) : boolean {\n if (noContentFoundInContainer === false) {\n return false;\n }\n\n if (isPayPalDomain()) {\n return false;\n }\n \n // If a merchant ID was already provided, then that meant we initially\n // loaded the pptm script with that value as the main container\n // look-up value, so in this case we don't want to reload pptm.\n if (config.merchantID) {\n return false;\n }\n \n if (clientId) {\n return true;\n }\n \n return false;\n },\n removePptm\n };\n\n return obj;\n}\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { create } from 'zoid/src';\nimport { base64encode } from 'belter/src';\n\nimport { getBrowserLocale, getCurrentScriptUrl } from '../lib';\nimport { config } from '../config';\nimport { containerTemplate } from '../billing/template';\n\nexport const ThreeDomainSecure = create({\n tag: 'paypal-3ds',\n name: '3ds',\n\n buildUrl(props) : string {\n const env = props.env || config.env;\n return `${ config.inlinedCardFieldUrls[env] }/init3ds`;\n },\n\n get domain() : Object {\n return {\n ...config.paypalDomains\n };\n },\n\n scrolling: true,\n\n props: {\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n },\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n allowDelegate: true,\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n }\n },\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n },\n challengeUrl: {\n type: 'string'\n },\n threeDomainSecureToken: {\n type: 'string'\n },\n method: {\n type: 'string'\n },\n onSuccess: {\n type: 'function',\n required: false\n },\n onError: {\n type: 'function',\n required: false\n },\n onCancel: {\n type: 'function',\n required: true,\n allowDelegate: true\n }\n },\n\n\n containerTemplate\n});\n","/* @flow */\n\nimport { pptmFactory } from './pptm-factory';\n\nexport const pptm = pptmFactory();\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { on, send } from 'post-robot/src';\nimport { base64encode } from 'belter/src';\nimport { info, track } from 'beaver-logger/client';\nimport { getAncestor, isSameDomain } from 'cross-domain-utils/src';\n\nimport { config } from '../config';\nimport { FPTI, PAYMENT_TYPE } from '../constants';\nimport { request, memoize, isPayPalDomain, uniqueID } from '../lib';\n\ntype ProxyRest = {\n [string] : (...args : $ReadOnlyArray) => ZalgoPromise<*>\n};\n\nlet proxyRest : ProxyRest = {};\n\nconst createAccessToken = memoize((env : string, client : { [key : string] : string }) : ZalgoPromise => {\n\n info(`rest_api_create_access_token`);\n\n env = env || config.env;\n\n const clientID : string = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (proxyRest.createAccessToken && !proxyRest.createAccessToken.source.closed) {\n return proxyRest.createAccessToken(env, client);\n }\n\n const basicAuth : string = base64encode(`${ clientID }:`);\n\n return request({\n\n method: `post`,\n url: config.authApiUrls[env],\n headers: {\n Authorization: `Basic ${ basicAuth }`\n },\n data: {\n grant_type: `client_credentials`\n }\n\n }).then(res => {\n\n if (res && res.error === 'invalid_client') {\n throw new Error(`Auth Api invalid ${ env } client id: ${ clientID }:\\n\\n${ JSON.stringify(res, null, 4) }`);\n }\n\n if (!res || !res.access_token) {\n throw new Error(`Auth Api response error:\\n\\n${ JSON.stringify(res, null, 4) }`);\n }\n\n return res.access_token;\n });\n\n}, { time: 10 * 60 * 1000 });\n\nconst createExperienceProfile = memoize((env : string, client : { [key : string] : string }, experienceDetails : Object = {}) : ZalgoPromise => {\n\n info(`rest_api_create_experience_profile`);\n\n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (proxyRest.createExperienceProfile && !proxyRest.createExperienceProfile.source.closed) {\n return proxyRest.createExperienceProfile(env, client, experienceDetails);\n }\n\n experienceDetails.temporary = true;\n experienceDetails.name = experienceDetails.name ? `${ experienceDetails.name }_${ Math.random().toString() }` : Math.random().toString();\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n return request({\n method: `post`,\n url: config.experienceApiUrls[env],\n headers: {\n Authorization: `Bearer ${ accessToken }`\n },\n json: experienceDetails\n });\n\n }).then((res) : string => {\n\n if (res && res.error) {\n throw new Error(res.error);\n }\n\n if (!res.id) {\n throw new Error(`No id in experience profile response:\\n\\n${ JSON.stringify(res, null, 4) }`);\n }\n\n return res.id;\n });\n\n}, { time: 10 * 60 * 1000 });\n\nfunction logPaymentResponse(res) {\n\n if (!res) {\n return;\n }\n\n let paymentToken;\n let paymentID;\n\n if (res.id) {\n paymentID = res.id;\n }\n\n if (res.links && res.links.length) {\n for (let i = 0; i < res.links.length; i++) {\n if (res.links[i].method === 'REDIRECT' && res.links[i].rel === 'approval_url') {\n const match = res.links[i].href.match(/token=((EC-)?[A-Z0-9]{17})/);\n if (match) {\n paymentToken = match[1];\n }\n }\n }\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.BUTTON,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CREATE_PAYMENT,\n [ FPTI.KEY.CONTEXT_TYPE ]: FPTI.CONTEXT_TYPE[PAYMENT_TYPE.PAY_ID],\n [ FPTI.KEY.PAY_ID ]: paymentID,\n [ FPTI.KEY.TOKEN ]: paymentToken,\n [ FPTI.KEY.CONTEXT_ID ]: paymentID\n });\n}\n\nfunction getDefaultReturnUrl() : string {\n return `https://www.paypal.com/checkoutnow/error`;\n}\n\nfunction createTracking(env : string, client : { [key : string] : string }, merchantID, trackingData) : Object {\n \n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n const trackingID = uniqueID();\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n const headers : Object = {\n Authorization: `Bearer ${ accessToken }`\n };\n\n return request({\n method: `put`,\n url: `${ config.trackingApiUrls[env] }/${ merchantID }/${ trackingID }`,\n headers,\n json: {\n 'tracking_id': trackingID,\n 'additional_data': trackingData\n }\n });\n\n }).then(() => {\n return trackingID;\n });\n}\n\nfunction createPayment(env : string, client : { [key : string] : string }, paymentDetails : Object) : ZalgoPromise {\n\n info(`rest_api_create_checkout_token`);\n\n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n let { payment, experience, meta, tracking } = paymentDetails;\n\n if (!payment) {\n throw new Error(`Expected payment details to be passed`);\n }\n\n if (proxyRest.createPayment && !proxyRest.createPayment.source.closed) {\n return proxyRest.createPayment(env, client, { payment, experience, meta, tracking });\n }\n\n payment = { ...payment };\n payment.intent = payment.intent || 'sale';\n payment.redirect_urls = payment.redirect_urls || {};\n payment.redirect_urls.return_url = payment.redirect_urls.return_url || getDefaultReturnUrl();\n payment.redirect_urls.cancel_url = payment.redirect_urls.cancel_url || getDefaultReturnUrl();\n payment.payer = payment.payer || {};\n payment.payer.payment_method = payment.payer.payment_method || 'paypal';\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n return ZalgoPromise.try(() => {\n\n if (experience) {\n return ZalgoPromise.resolve(createExperienceProfile(env, client, experience));\n }\n\n }).then((experienceID) : ZalgoPromise => {\n\n return ZalgoPromise.try(() => {\n\n if (tracking) {\n return ZalgoPromise.resolve(createTracking(env, client, tracking.id, tracking.data));\n }\n\n }).then((trackingID) : ZalgoPromise => {\n\n if (experienceID) {\n payment.experience_profile_id = experienceID;\n }\n\n const headers : Object = {\n Authorization: `Bearer ${ accessToken }`\n };\n\n if (trackingID) {\n headers['Paypal-Client-Metadata-Id'] = trackingID;\n }\n\n if (meta && meta.partner_attribution_id) {\n headers['PayPal-Partner-Attribution-Id'] = meta.partner_attribution_id;\n }\n\n return request({\n method: `post`,\n url: config.paymentApiUrls[env],\n headers,\n json: payment\n });\n });\n });\n\n }).then((res) : string => {\n\n logPaymentResponse(res);\n\n if (res && res.id) {\n return res.id;\n }\n\n throw new Error(`Payment Api response error:\\n\\n${ JSON.stringify(res, null, 4) }`);\n\n });\n}\n\nfunction createOrder(env : string, client : { [key : string] : string }, paymentDetails : Object) : ZalgoPromise {\n\n info(`rest_api_create_order_token`);\n\n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n let { order, meta } = paymentDetails;\n\n if (!order) {\n throw new Error(`Expected order details to be passed`);\n }\n\n if (proxyRest.createOrder && !proxyRest.createOrder.source.closed) {\n return proxyRest.createOrder(env, client, { order, meta });\n }\n\n order = { ...order };\n order.intent = order.intent || 'CAPTURE';\n order.application_context = order.application_context || {};\n order.application_context.return_url = order.application_context.return_url || getDefaultReturnUrl();\n order.application_context.cancel_url = order.application_context.cancel_url || getDefaultReturnUrl();\n order.purchase_units = order.purchase_units || [];\n order.purchase_units[0] = order.purchase_units[0] || {};\n order.purchase_units.forEach(unit => {\n unit.reference_id = unit.reference_id || Math.random().toString();\n });\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n const headers : Object = {\n Authorization: `Bearer ${ accessToken }`\n };\n\n if (meta && meta.partner_attribution_id) {\n headers['PayPal-Partner-Attribution-Id'] = meta.partner_attribution_id;\n }\n\n return request({\n method: `post`,\n url: config.orderApiUrls[env],\n headers,\n json: order\n });\n\n }).then((res) : string => {\n\n logPaymentResponse(res);\n\n if (res && res.id) {\n return res.id;\n }\n\n throw new Error(`Payment Api response error:\\n\\n${ JSON.stringify(res, null, 4) }`);\n });\n}\n\nexport function createBillingAgreement(env : string, client : { [key : string] : string }, billingDetails : Object, experienceDetails? : ?Object) : ZalgoPromise {\n\n info(`rest_api_create_billing_token`);\n\n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (proxyRest.createBillingAgreement && !proxyRest.createBillingAgreement.source.closed) {\n return proxyRest.createBillingAgreement(env, client, billingDetails, experienceDetails);\n }\n\n billingDetails = { ...billingDetails };\n billingDetails.plan = billingDetails.plan || {};\n billingDetails.plan.merchant_preferences = billingDetails.plan.merchant_preferences || {};\n billingDetails.plan.merchant_preferences.return_url = billingDetails.plan.merchant_preferences.return_url || getDefaultReturnUrl();\n billingDetails.plan.merchant_preferences.cancel_url = billingDetails.plan.merchant_preferences.cancel_url || getDefaultReturnUrl();\n billingDetails.payer = billingDetails.payer || {};\n billingDetails.payer.payment_method = billingDetails.payer.payment_method || 'paypal';\n\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n return ZalgoPromise.try(() => {\n\n if (experienceDetails) {\n return ZalgoPromise.resolve(createExperienceProfile(env, client, experienceDetails));\n }\n\n }).then((experienceID) : ZalgoPromise => {\n\n if (experienceID) {\n billingDetails.experience_profile_id = experienceID;\n }\n\n return request({\n method: `post`,\n url: config.billingApiUrls[env],\n headers: {\n Authorization: `Bearer ${ accessToken }`\n },\n json: billingDetails\n });\n });\n\n }).then(res => {\n\n if (res && res.token_id) {\n return res.token_id;\n }\n\n throw new Error(`Billing Api response error:\\n\\n${ JSON.stringify(res, null, 4) }`);\n });\n}\n\nexport const rest = {\n payment: {\n create: createPayment\n },\n order: {\n create: createOrder\n },\n billingAgreement: {\n create: createBillingAgreement\n },\n experience: {\n create: createExperienceProfile\n }\n};\n\nconst PROXY_REST = `proxy_rest`;\nconst parentWin = getAncestor();\n\non(PROXY_REST, { domain: config.paypal_domain_regex }, ({ data }) => {\n proxyRest = data;\n});\n\nif (parentWin && isPayPalDomain() && !isSameDomain(parentWin)) {\n send(parentWin, PROXY_REST, { createAccessToken, createExperienceProfile, createPayment, createBillingAgreement, createOrder })\n .catch(() => {\n // pass\n });\n}\n","/* @flow */\n\nimport { info, track, immediateFlush } from 'beaver-logger/client';\n\nimport { FPTI, PAYMENT_TYPE } from './constants';\nimport { getReturnToken, getSessionState, getDomainSetting, eventEmitter } from './lib';\n\nexport const onAuthorizeListener = eventEmitter();\n\nfunction log(experiment : string, treatment : string, token : ?string, state : string) {\n\n getSessionState(session => {\n\n let event = `${ experiment }_${ treatment }_${ state }`;\n const loggedEvents = session.loggedExperimentEvents = session.loggedExperimentEvents || [];\n const duplicate = loggedEvents.indexOf(event) !== -1;\n\n if (duplicate) {\n info(`duplicate_${ event }`);\n\n } else {\n info(event);\n loggedEvents.push(event);\n\n const edge = window.navigator && window.navigator.userAgent && window.navigator.userAgent.match(/Edge\\/[0-9]{2}/);\n\n if (edge) {\n event = info(`${ edge[0].toLowerCase().replace('/', '_') }_${ event }`);\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: state,\n [ FPTI.KEY.EXPERIMENT_NAME ]: experiment,\n [ FPTI.KEY.TREATMENT_NAME ]: treatment,\n [ FPTI.KEY.TOKEN ]: token,\n [ FPTI.KEY.CONTEXT_ID ]: token,\n [ FPTI.KEY.CONTEXT_TYPE ]: token ? FPTI.CONTEXT_TYPE[PAYMENT_TYPE.EC_TOKEN] : FPTI.CONTEXT_TYPE.BUTTON_SESSION_ID\n });\n\n immediateFlush();\n }\n });\n}\n\nexport function logExperimentTreatment({ experiment, treatment, state, token } : { experiment : string, treatment : string, state : string, token : ?string }) {\n\n if (!experiment || !treatment) {\n return;\n }\n\n getSessionState(session => {\n session.externalExperiment = experiment;\n session.externalExperimentTreatment = treatment;\n\n if (token) {\n session.externalExperimentToken = token;\n }\n });\n\n log(experiment, treatment, token, state);\n}\n\nfunction logReturn(token : string) {\n\n const {\n externalExperiment,\n externalExperimentTreatment,\n externalExperimentToken\n } = getSessionState(session => session);\n\n if (externalExperiment && externalExperimentTreatment && externalExperimentToken === token) {\n log(externalExperiment, externalExperimentTreatment, token, `complete`);\n } else {\n info(`experiment_mismatch`, {\n token,\n externalExperiment,\n externalExperimentTreatment,\n externalExperimentToken\n });\n }\n}\n\nif (getDomainSetting('log_authorize')) {\n\n onAuthorizeListener.once(({ paymentToken }) => {\n setTimeout(() => {\n logReturn(paymentToken);\n }, 1);\n });\n\n const returnToken = getReturnToken();\n\n if (returnToken) {\n setTimeout(() => {\n if (returnToken) {\n logReturn(returnToken);\n }\n }, 1);\n }\n}\n","/* @flow */\n\nimport { once, noop } from 'zoid/src/lib';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { error } from 'beaver-logger/client';\nimport type { CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { extendUrl, redirect, awaitKey, stringifyError } from '../lib';\nimport { config } from '../config';\nimport { FUNDING } from '../constants';\n\nimport { determineParameterFromToken, determineUrl } from './checkout';\n\nconst OPTYPE = {\n PAYMENT: 'payment',\n CANCEL: 'cancel'\n};\n\nconst CONTINGENCY = {\n PAYMENT_CANCELLED: 'PAYMENT_CANCELLED'\n};\n\ntype PopupBridge = {|\n open : (string) => ZalgoPromise\n|};\n\nfunction wrapPopupBridge(popupBridge : Object) : PopupBridge {\n return {\n open(url : string) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n popupBridge.onComplete = (err, result) => {\n if (!result) {\n return reject(new Error('No payload passed in popupBridge.onComplete'));\n }\n\n return err ? reject(err) : resolve(result);\n };\n\n popupBridge.onCancel = () => {\n const err = new Error(CONTINGENCY.PAYMENT_CANCELLED);\n // $FlowFixMe\n err.code = CONTINGENCY.PAYMENT_CANCELLED;\n return reject(err);\n };\n\n popupBridge.open(extendUrl(url, { redirect_uri: popupBridge.getReturnUrlPrefix() }));\n });\n }\n };\n}\n\nfunction validateCheckoutProps(props) {\n if (!props.payment) {\n throw new Error(`Expected props.payment to be passed`);\n }\n\n if (!props.onAuthorize) {\n throw new Error(`Expected props.onAuthorize to be passed`);\n }\n\n if (props.env && !config.checkoutUrls[props.env]) {\n throw new Error(`Invalid props.env: ${ props.env }`);\n }\n}\n\nfunction normalizeCheckoutProps(props : Object) : { env : string, payment : Function, onAuthorize : Function, onCancel : Function } {\n const env = props.env = props.env || config.env;\n\n const payment = props.payment;\n const onAuthorize = once(props.onAuthorize);\n const onCancel = once(props.onCancel || noop);\n\n return { env, payment, onAuthorize, onCancel };\n}\n\nfunction getUrl(props : { env : string, payment : Function, onAuthorize : Function, onCancel? : Function, commit? : boolean }) : ZalgoPromise {\n\n const { env, payment } = normalizeCheckoutProps(props);\n\n return ZalgoPromise.try(payment, { props }).then(token => {\n if (!token) {\n throw new Error(`Expected props.payment to return a payment id or token`);\n }\n\n return extendUrl(determineUrl(env, FUNDING.PAYPAL, token), {\n [determineParameterFromToken(token)]: token,\n\n useraction: props.commit ? 'commit' : '',\n native_xo: '1'\n });\n });\n}\n\nfunction extractDataFromQuery(query : Object) : Object {\n\n const data : Object = {\n paymentToken: query.token,\n billingToken: query.ba_token,\n paymentID: query.paymentId,\n payerID: query.PayerID,\n intent: query.intent\n };\n \n const { opType, return_uri, cancel_uri } = query;\n\n if (opType === OPTYPE.PAYMENT) {\n data.returnUrl = return_uri;\n\n } else if (opType === OPTYPE.CANCEL) {\n data.cancelUrl = cancel_uri;\n }\n\n return data;\n}\n\nfunction buildActions(query : Object) : Object {\n \n const actions : Object = {\n close: noop,\n closeComponent: noop\n };\n\n const { opType, return_uri, cancel_uri } = query;\n\n if (opType === OPTYPE.PAYMENT) {\n actions.redirect = (win : CrossDomainWindowType = window, redirectUrl : string = return_uri) : ZalgoPromise => {\n return redirect(win, redirectUrl);\n };\n\n } else if (opType === OPTYPE.CANCEL) {\n actions.redirect = (win : CrossDomainWindowType = window, redirectUrl : string = cancel_uri) : ZalgoPromise => {\n return redirect(win, redirectUrl);\n };\n }\n\n return actions;\n}\n\nfunction renderThroughPopupBridge(props : Object, popupBridge : PopupBridge) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n validateCheckoutProps(props);\n\n }).then(() => {\n\n return getUrl(props);\n \n }).then(url => {\n\n return popupBridge.open(url);\n\n }).then(payload => {\n\n const { opType } = payload.queryItems;\n const { onAuthorize, onCancel } = normalizeCheckoutProps(props);\n\n const data = extractDataFromQuery(payload.queryItems);\n const actions = buildActions(payload.queryItems);\n \n if (opType === OPTYPE.PAYMENT) {\n return onAuthorize(data, actions);\n\n } else if (opType === OPTYPE.CANCEL) {\n return onCancel(data, actions);\n \n } else {\n throw new Error(`Invalid opType: ${ opType }`);\n }\n\n }).catch(err => {\n\n if (err && err.code === CONTINGENCY.PAYMENT_CANCELLED) {\n const { onCancel } = normalizeCheckoutProps(props);\n return onCancel({}, {});\n }\n\n throw err;\n });\n}\n\nexport function awaitPopupBridge(Button : Object) : ZalgoPromise {\n if (Button.xprops && Button.xprops.awaitPopupBridge) {\n return Button.xprops.awaitPopupBridge();\n }\n\n return awaitKey(window, 'popupBridge').then(popupBridge => {\n return wrapPopupBridge(popupBridge);\n });\n}\n\nexport function setupPopupBridgeProxy(Checkout : Object, Button : Object) {\n\n let popupBridge;\n\n awaitPopupBridge(Button).then(bridge => {\n popupBridge = bridge;\n });\n\n function doRender(props, original) : ZalgoPromise {\n if (!popupBridge) {\n return original();\n }\n \n return renderThroughPopupBridge(props, popupBridge)\n .catch(err => {\n error(`popup_bridge_error`, { err: stringifyError(err) });\n return original();\n });\n }\n\n const render = Checkout.render;\n Checkout.render = function popupBridgeRender(props : Object) : ZalgoPromise {\n return doRender(props, () => render.apply(this, arguments));\n };\n\n const renderTo = Checkout.renderTo;\n Checkout.renderTo = function popupBridgeRenderTo(win : CrossDomainWindowType, props : Object) : ZalgoPromise {\n return doRender(props, () => renderTo.apply(this, arguments));\n };\n\n const renderPopupTo = Checkout.renderPopupTo;\n Checkout.renderPopupTo = function popupBridgeRenderPopupTo(win : CrossDomainWindowType, props : Object) : ZalgoPromise {\n return doRender(props, () => renderPopupTo.apply(this, arguments));\n };\n}\n","/* @flow */\n/* global __paypal_checkout__*/\n\nimport { FUNDING, COUNTRY, CARD, PLATFORM, DEFAULT, ENV } from '../constants';\n\nexport const FUNDING_PRIORITY = [\n FUNDING.PAYPAL,\n FUNDING.VENMO,\n FUNDING.ITAU,\n FUNDING.CREDIT,\n FUNDING.CARD,\n FUNDING.IDEAL,\n FUNDING.ELV,\n FUNDING.BANCONTACT,\n FUNDING.GIROPAY,\n FUNDING.EPS,\n FUNDING.SOFORT,\n FUNDING.MYBANK,\n FUNDING.BLIK,\n FUNDING.P24,\n FUNDING.PAYU,\n FUNDING.VERKKOPANKKI,\n FUNDING.TRUSTLY,\n FUNDING.MAXIMA,\n FUNDING.BOLETO,\n FUNDING.OXXO\n];\n\nexport const FUNDING_ORDER = [\n FUNDING.PAYPAL,\n FUNDING.VENMO,\n FUNDING.ITAU,\n FUNDING.CREDIT,\n FUNDING.IDEAL,\n FUNDING.ELV,\n FUNDING.BANCONTACT,\n FUNDING.GIROPAY,\n FUNDING.EPS,\n FUNDING.SOFORT,\n FUNDING.MYBANK,\n FUNDING.BLIK,\n FUNDING.P24,\n FUNDING.PAYU,\n FUNDING.VERKKOPANKKI,\n FUNDING.TRUSTLY,\n FUNDING.MAXIMA,\n FUNDING.BOLETO,\n FUNDING.OXXO,\n FUNDING.CARD\n];\n\nexport const FUNDING_CONFIG = {\n\n [ DEFAULT ]: {\n enabled: true,\n\n allowOptIn: true,\n allowOptOut: true,\n allowRemember: true,\n\n allowHorizontal: true,\n allowVertical: true,\n\n requireCommitAsTrue: false\n },\n\n [ FUNDING.PAYPAL ]: {\n default: true,\n\n allowOptIn: false,\n allowOptOut: false,\n\n allowHorizontal: true,\n allowVertical: true\n },\n\n [ FUNDING.CARD ]: {\n // $FlowFixMe\n default: (typeof __paypal_checkout__ === 'undefined' ? true : __paypal_checkout__.serverConfig.paypalMerchantConfiguration.creditCard.isPayPalBranded),\n\n allowHorizontal: false,\n allowVertical: true\n },\n\n [ FUNDING.VENMO ]: {\n allowOptOut: true,\n allowedCountries: [\n COUNTRY.US\n ],\n\n allowHorizontal: true,\n allowVertical: true\n },\n [ FUNDING.ITAU ]: {\n allowOptOut: true,\n allowedCountries: [\n COUNTRY.BR\n ],\n\n allowHorizontal: true,\n allowVertical: true\n },\n\n [ FUNDING.CREDIT ]: {\n allowedCountries: [\n COUNTRY.US,\n COUNTRY.GB,\n COUNTRY.DE\n ],\n defaultVerticalCountries: [\n COUNTRY.US\n ],\n platforms: [\n PLATFORM.MOBILE\n ],\n\n allowHorizontal: true,\n allowVertical: true,\n allowRemember: true\n },\n\n [ FUNDING.IDEAL ]: {\n allowedCountries: [\n COUNTRY.NL\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.ELV ]: {\n allowedCountries: [\n COUNTRY.DE\n ],\n defaultVerticalCountries: [\n COUNTRY.DE\n ],\n\n allowHorizontal: false,\n allowVertical: true\n },\n\n [ FUNDING.BANCONTACT ]: {\n allowedCountries: [\n COUNTRY.BE\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.GIROPAY ]: {\n allowedCountries: [\n COUNTRY.DE\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.SOFORT ]: {\n allowedCountries: [\n COUNTRY.DE,\n COUNTRY.AT,\n COUNTRY.BE,\n COUNTRY.ES,\n COUNTRY.IT,\n COUNTRY.NL\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.EPS ]: {\n allowedCountries: [\n COUNTRY.AT\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.MYBANK ]: {\n allowedCountries: [\n COUNTRY.IT\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.P24 ]: {\n allowedCountries: [\n COUNTRY.PL\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.PAYU ]: {\n allowedCountries: [\n COUNTRY.CZ\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.VERKKOPANKKI ]: {\n allowedCountries: [\n COUNTRY.FI\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.BLIK ]: {\n allowedCountries: [\n COUNTRY.PL\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.TRUSTLY ]: {\n allowedCountries: [\n COUNTRY.DE,\n COUNTRY.DK,\n COUNTRY.EE,\n COUNTRY.ES,\n COUNTRY.FI,\n COUNTRY.GB,\n COUNTRY.IT,\n COUNTRY.MT,\n COUNTRY.NL,\n COUNTRY.NO,\n COUNTRY.SE\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.MAXIMA ]: {\n allowedCountries: [\n COUNTRY.LT\n ],\n\n allowedEnvs: [\n ENV.LOCAL,\n ENV.STAGE,\n ENV.TEST\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.BOLETO ]: {\n allowedCountries: [\n COUNTRY.BR\n ],\n\n allowedEnvs: [\n ENV.LOCAL,\n ENV.STAGE,\n ENV.TEST\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.OXXO ]: {\n allowedCountries: [\n COUNTRY.MX\n ],\n\n allowedEnvs: [\n ENV.LOCAL,\n ENV.STAGE,\n ENV.TEST\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.ZIMPLER ]: {\n allowedCountries: [],\n\n allowHorizontal: false,\n allowVertical: false,\n requireCommitAsTrue: true\n }\n};\n\nexport const CARD_CONFIG = {\n\n [ DEFAULT ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX\n ]\n },\n\n [ COUNTRY.GB ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.DISCOVER,\n CARD.MAESTRO\n ]\n },\n\n [ COUNTRY.US ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.DISCOVER\n ]\n },\n\n [ COUNTRY.BR ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.HIPER,\n CARD.ELO\n ]\n },\n\n [ COUNTRY.JP ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.JCB\n ]\n },\n\n [ COUNTRY.CN ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.CUP\n ]\n }\n};\n\nfunction getConfig(conf : Object, category : string, key : string, def : ?T) : T {\n const categoryConfig = conf[category];\n\n if (categoryConfig && categoryConfig.hasOwnProperty(key)) {\n return categoryConfig[key];\n }\n\n if (conf[DEFAULT] && conf[DEFAULT].hasOwnProperty(key)) {\n return conf[DEFAULT][key];\n }\n\n if (arguments.length >= 4) {\n // $FlowFixMe\n return def;\n }\n\n throw new Error(`No value found for ${ category }:${ key }`);\n}\n\nexport function getFundingConfig(source : string, key : string, def : ?T) : T {\n return getConfig(FUNDING_CONFIG, source, key, def);\n}\n\nexport function getCardConfig(source : string, key : string, def : ?T) : T {\n return getConfig(CARD_CONFIG, source, key, def);\n}\n","/* @flow */\n\nimport { ENV, CARD_PRIORITY, FUNDING, BUTTON_LAYOUT, FUNDING_ELIGIBILITY_REASON } from '../constants';\nimport type { LocaleType, FundingSource, FundingSelection, FundingList } from '../types';\n\nimport { getFundingConfig, getCardConfig, FUNDING_PRIORITY, FUNDING_CONFIG } from './config';\n\nconst fundingEligibilityReasons = [];\n\nexport function isFundingIneligible(source : FundingSource, { locale, funding, layout, commit, env } :\n { locale : LocaleType, funding : FundingSelection, layout : string, commit? : boolean, env : string }) : ?string {\n\n const isVertical = layout === BUTTON_LAYOUT.VERTICAL;\n const allowSecondary = getFundingConfig(source, isVertical ? 'allowVertical' : 'allowHorizontal');\n\n if (!allowSecondary) {\n return FUNDING_ELIGIBILITY_REASON.SECONDARY_DISALLOWED;\n }\n\n if (funding.disallowed.indexOf(source) !== -1 && getFundingConfig(source, 'allowOptOut')) {\n return FUNDING_ELIGIBILITY_REASON.OPT_OUT;\n }\n\n if (funding.disallowed.indexOf(source) !== -1 && source === FUNDING.VENMO) {\n return FUNDING_ELIGIBILITY_REASON.OPT_OUT;\n }\n if (funding.disallowed.indexOf(source) !== -1 && source === FUNDING.ITAU) {\n return FUNDING_ELIGIBILITY_REASON.OPT_OUT;\n }\n\n if (getFundingConfig(source, 'allowedCountries', [ locale.country ]).indexOf(locale.country) === -1) {\n return FUNDING_ELIGIBILITY_REASON.DISALLOWED_COUNTRY;\n }\n\n if (getFundingConfig(source, 'requireCommitAsTrue') && !commit) {\n return FUNDING_ELIGIBILITY_REASON.COMMIT_NOT_SET;\n }\n\n const allowedEnvs = getFundingConfig(source, 'allowedEnvs');\n if (allowedEnvs && allowedEnvs.indexOf(env) === -1) {\n return FUNDING_ELIGIBILITY_REASON.INVALID_ENV;\n }\n}\n\nexport function isFundingAutoEligible(source : FundingSource, { locale, funding, layout } :\n { locale : LocaleType, funding : FundingSelection, layout : string }) : ?string {\n\n const isVertical = layout === BUTTON_LAYOUT.VERTICAL;\n\n if (isVertical && getFundingConfig(source, 'defaultVerticalCountries', []).indexOf(locale.country) !== -1) {\n return FUNDING_ELIGIBILITY_REASON.DEFAULT_COUNTRY;\n }\n\n if (getFundingConfig(source, 'default')) {\n return FUNDING_ELIGIBILITY_REASON.DEFAULT;\n }\n\n if (funding.allowed.indexOf(source) !== -1 && getFundingConfig(source, 'allowOptIn')) {\n return FUNDING_ELIGIBILITY_REASON.OPT_IN;\n }\n\n if (funding.remembered.indexOf(source) !== -1 && getFundingConfig(source, 'allowRemember')) {\n return FUNDING_ELIGIBILITY_REASON.REMEMBERED;\n }\n}\n\nexport function isFundingEligible(source : FundingSource, { locale, funding, env, layout, selected, commit } :\n { locale : LocaleType, funding : FundingSelection, env : string, layout : string, selected? : string, commit : boolean }) : { eligible : boolean, reason : string } {\n\n if (selected && source === selected) {\n return { eligible: true, reason: FUNDING_ELIGIBILITY_REASON.PRIMARY };\n }\n\n if (!getFundingConfig(source, 'enabled')) {\n if (!(env === ENV.TEST && getFundingConfig(source, 'test'))) {\n return { eligible: false, reason: FUNDING_ELIGIBILITY_REASON.NOT_ENABLED };\n }\n }\n\n const ineligibleReason = isFundingIneligible(source, { locale, funding, layout, commit, env });\n\n if (ineligibleReason) {\n return { eligible: false, reason: ineligibleReason };\n }\n\n const autoEligibleReason = isFundingAutoEligible(source, { locale, funding, layout });\n\n if (autoEligibleReason) {\n return { eligible: true, reason: autoEligibleReason };\n }\n\n return { eligible: false, reason: FUNDING_ELIGIBILITY_REASON.NEED_OPT_IN };\n}\n\nexport function determineEligibleFunding({ funding, selected, locale, env, layout, commit } :\n { funding : FundingSelection, selected : FundingSource, locale : LocaleType, env : string, layout : string, commit : boolean }) : FundingList {\n\n const reasons = {};\n\n const eligibleFunding = FUNDING_PRIORITY.filter(source => {\n const { eligible, reason } = isFundingEligible(source, { selected, locale, funding, env, layout, commit });\n reasons[source] = { eligible, reason, factors: { env, locale, layout } };\n return eligible;\n });\n\n fundingEligibilityReasons.push(reasons);\n\n eligibleFunding.splice(eligibleFunding.indexOf(selected), 1);\n eligibleFunding.unshift(selected);\n\n return eligibleFunding;\n}\n\nexport function determineEligibleCards({ funding, locale } :\n { funding : FundingSelection, locale : LocaleType }) : FundingList {\n\n return getCardConfig(locale.country, 'priority')\n .filter(card => funding.disallowed.indexOf(card) === -1);\n}\n\nexport function validateFunding(funding : FundingSelection = { allowed: [], disallowed: [], remembered: [] }) {\n\n if (funding.allowed) {\n for (const source of funding.allowed) {\n if (CARD_PRIORITY.indexOf(source) !== -1) {\n continue;\n }\n\n if (!FUNDING_CONFIG.hasOwnProperty(source)) {\n throw new Error(`Invalid funding source: ${ source }`);\n }\n\n if (!getFundingConfig(source, 'allowOptIn')) {\n throw new Error(`Can not allow funding source: ${ source }`);\n }\n\n if (funding.disallowed && funding.disallowed.indexOf(source) !== -1) {\n throw new Error(`Can not allow and disallow funding source: ${ source }`);\n }\n }\n }\n\n if (funding.disallowed) {\n for (const source of funding.disallowed) {\n if (CARD_PRIORITY.indexOf(source) !== -1) {\n continue;\n }\n\n if (!FUNDING_CONFIG.hasOwnProperty(source)) {\n throw new Error(`Invalid funding source: ${ source }`);\n }\n\n if (!getFundingConfig(source, 'allowOptOut')) {\n throw new Error(`Can not disallow funding source: ${ source }`);\n }\n }\n }\n}\n\nexport function logFundingEligibility() {\n fundingEligibilityReasons.forEach((reasons, i) => {\n console.log(`\\nButton ${ i + 1 }:\\n`); // eslint-disable-line no-console\n\n console.table(Object.keys(reasons).map(source => { // eslint-disable-line no-console, compat/compat\n const { reason, eligible, factors } = reasons[source];\n\n return {\n 'Funding': source,\n 'Reason': reason,\n 'Eligibility': eligible ? 'eligible' : 'ineligible',\n 'Factors': JSON.stringify(factors)\n };\n }));\n });\n}\n","/* @flow */\n/* eslint no-template-curly-in-string: off, max-lines: off */\n\nimport { FUNDING, DEFAULT, COUNTRY, BUTTON_LABEL, BUTTON_COLOR, BUTTON_LOGO_COLOR, BUTTON_SIZE,\n BUTTON_TAGLINE_COLOR, BUTTON_SHAPE, BUTTON_LAYOUT, BUTTON_LOGO } from '../constants';\n\ntype ButtonConfig = {\n [ string ] : {\n colors? : $ReadOnlyArray<$Values>\n }\n};\n\nexport const BUTTON_CONFIG : ButtonConfig = {\n\n [ DEFAULT ]: {\n\n colors: [\n BUTTON_COLOR.GOLD,\n BUTTON_COLOR.BLUE,\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n sizes: [\n BUTTON_SIZE.SMALL,\n BUTTON_SIZE.MEDIUM,\n BUTTON_SIZE.LARGE,\n BUTTON_SIZE.RESPONSIVE\n ],\n\n shapes: [\n BUTTON_SHAPE.PILL,\n BUTTON_SHAPE.RECT\n ],\n\n layouts: [\n BUTTON_LAYOUT.HORIZONTAL,\n BUTTON_LAYOUT.VERTICAL\n ],\n\n logoColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_LOGO_COLOR.BLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLUE\n },\n\n tagLineColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_TAGLINE_COLOR.BLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_TAGLINE_COLOR.BLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_TAGLINE_COLOR.BLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_TAGLINE_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_TAGLINE_COLOR.BLUE\n\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n tag: `{ content: safer_tag }`,\n dualTag: `{ content: dual_tag|safer_tag }`,\n\n defaultLocale: `en_US`,\n defaultLabel: BUTTON_LABEL.CHECKOUT,\n defaultVerticalLabel: BUTTON_LABEL.PAYPAL,\n defaultColor: BUTTON_COLOR.GOLD,\n defaultSize: BUTTON_SIZE.SMALL,\n defaultVerticalSize: BUTTON_SIZE.MEDIUM,\n defaultShape: BUTTON_SHAPE.PILL,\n defaultLayout: BUTTON_LAYOUT.HORIZONTAL,\n defaultBranding: true,\n defaultVerticalBranding: true,\n defaultFundingIcons: false,\n defaultTagline: true,\n defaultDual: ``,\n\n minimumSize: BUTTON_SIZE.TINY,\n minimumVerticalSize: BUTTON_SIZE.MEDIUM,\n\n maximumSize: BUTTON_SIZE.HUGE,\n maximumVerticalSize: BUTTON_SIZE.HUGE,\n\n minHorizontalButtons: 1,\n minVerticalButtons: 1,\n\n maxHorizontalButtons: 2,\n maxVerticalButtons: 6,\n\n allowUnbranded: false,\n allowFundingIcons: true,\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.PAYPAL ]: {\n label: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n allowPrimary: true,\n\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true\n },\n\n [ BUTTON_LABEL.CHECKOUT ]: {\n label: `{ content: checkout }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n allowPrimary: true,\n\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true\n },\n\n [ BUTTON_LABEL.PAY ]: {\n label: `{ content: pay }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n allowPrimary: true,\n\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true\n },\n\n [ BUTTON_LABEL.BUYNOW ]: {\n label: `{ content: buynow }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n defaultBranding: undefined,\n\n allowPrimary: true,\n\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true,\n\n allowUnbranded: true\n },\n\n [ BUTTON_LABEL.INSTALLMENT ]: {\n label: (style) => { return `{ content: ${ style.installmentperiod ? 'installment_period' : 'installment' } }`; },\n logoLabel: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n allowPrimary: true,\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true,\n allowSecondaryVertical: false,\n allowSecondaryHorizontal: false\n },\n\n [ BUTTON_LABEL.CREDIT ]: {\n label: ({ locale }) => {\n if (locale.country === COUNTRY.DE) {\n return `{ logo: ${ BUTTON_LOGO.CREDIT } }`;\n }\n\n return `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } } { logo: ${ BUTTON_LOGO.CREDIT } }`;\n },\n logoLabel: ({ locale }) => {\n if (locale.country === COUNTRY.DE) {\n return `{ logo: ${ BUTTON_LOGO.CREDIT } }`;\n }\n\n return `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } } { logo: ${ BUTTON_LOGO.CREDIT } }`;\n },\n\n tag: `{ content: later_tag }`,\n\n colors: [\n BUTTON_COLOR.DARKBLUE,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLUE\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n defaultColor: BUTTON_COLOR.DARKBLUE,\n\n allowPrimary: true,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false,\n\n allowFundingIcons: false\n },\n\n [ BUTTON_LABEL.VENMO ]: {\n label: `{ logo: ${ BUTTON_LOGO.VENMO } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.VENMO } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.BLUE,\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.BLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLUE\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: true,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: true\n },\n [ BUTTON_LABEL.ITAU ]: {\n label: `{ logo: ${ BUTTON_LOGO.ITAU } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.ITAU } }`,\n\n defaultColor: BUTTON_COLOR.DARKBLUE,\n\n colors: [\n BUTTON_COLOR.DARKBLUE,\n BUTTON_COLOR.BLUE,\n BUTTON_COLOR.BLACK\n ],\n\n logoColors: {\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.DARKBLUE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: true\n },\n\n [ BUTTON_LABEL.IDEAL ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.IDEAL } } Online betalen`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.IDEAL } } Online betalen`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.ELV ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.ELV } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.ELV } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.BANCONTACT ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.BANCONTACT } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.BANCONTACT } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.GIROPAY ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.GIROPAY } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.GIROPAY } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.SOFORT ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.SOFORT } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.SOFORT } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.EPS ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.EPS } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.EPS } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.MYBANK ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.MYBANK } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.MYBANK } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.P24 ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.P24 } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.P24 } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.PAYU ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.PAYU } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PAYU } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.VERKKOPANKKI ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.VERKKOPANKKI } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.VERKKOPANKKI } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.BLIK ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.BLIK } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.BLIK } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.TRUSTLY ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.TRUSTLY } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.TRUSTLY } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.MAXIMA ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.MAXIMA } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.MAXIMA } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.BOLETO ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.BOLETO } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.BOLETO } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.OXXO ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.OXXO } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.OXXO } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.CARD ]: {\n\n label: `{ cards }`,\n logoLabel: `{ cards }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.TRANSPARENT\n ],\n\n logoColors: {\n [ BUTTON_COLOR.TRANSPARENT ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.TRANSPARENT\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n }\n};\n\nexport const FUNDING_TO_DEFAULT_LABEL = {\n [ FUNDING.PAYPAL ]: BUTTON_LABEL.PAYPAL,\n [ FUNDING.VENMO ]: BUTTON_LABEL.VENMO,\n [ FUNDING.ITAU ]: BUTTON_LABEL.ITAU,\n [ FUNDING.CARD ]: BUTTON_LABEL.CARD,\n [ FUNDING.CREDIT ]: BUTTON_LABEL.CREDIT,\n [ FUNDING.IDEAL ]: BUTTON_LABEL.IDEAL,\n [ FUNDING.ELV ]: BUTTON_LABEL.ELV,\n [ FUNDING.BANCONTACT ]: BUTTON_LABEL.BANCONTACT,\n [ FUNDING.GIROPAY ]: BUTTON_LABEL.GIROPAY,\n [ FUNDING.SOFORT ]: BUTTON_LABEL.SOFORT,\n [ FUNDING.EPS ]: BUTTON_LABEL.EPS,\n [ FUNDING.P24 ]: BUTTON_LABEL.P24,\n [ FUNDING.MYBANK ]: BUTTON_LABEL.MYBANK,\n [ FUNDING.PAYU ]: BUTTON_LABEL.PAYU,\n [ FUNDING.VERKKOPANKKI]: BUTTON_LABEL.VERKKOPANKKI,\n [ FUNDING.BLIK ]: BUTTON_LABEL.BLIK,\n [ FUNDING.TRUSTLY ]: BUTTON_LABEL.TRUSTLY,\n [ FUNDING.MAXIMA ]: BUTTON_LABEL.MAXIMA,\n [ FUNDING.BOLETO ]: BUTTON_LABEL.BOLETO,\n [ FUNDING.OXXO ]: BUTTON_LABEL.OXXO\n};\n\nexport const LABEL_TO_FUNDING = {\n [ BUTTON_LABEL.PAYPAL ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.CHECKOUT ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.PAY ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.BUYNOW ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.INSTALLMENT ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.CARD ]: FUNDING.CARD,\n [ BUTTON_LABEL.CREDIT ]: FUNDING.CREDIT,\n [ BUTTON_LABEL.VENMO ]: FUNDING.VENMO,\n [ BUTTON_LABEL.ITAU ]: FUNDING.ITAU,\n [ BUTTON_LABEL.IDEAL ]: FUNDING.IDEAL,\n [ BUTTON_LABEL.BANCONTACT]: FUNDING.BANCONTACT,\n [ BUTTON_LABEL.GIROPAY]: FUNDING.GIROPAY,\n [ BUTTON_LABEL.EPS ]: FUNDING.EPS,\n [ BUTTON_LABEL.SOFORT ]: FUNDING.SOFORT,\n [ BUTTON_LABEL.P24 ]: FUNDING.P24,\n [ BUTTON_LABEL.MYBANK ]: FUNDING.MYBANK,\n [ BUTTON_LABEL.PAYU ]: FUNDING.PAYU,\n [ BUTTON_LABEL.VERKKOPANKKI ]: FUNDING.VERKKOPANKKI,\n [ BUTTON_LABEL.BLIK ]: FUNDING.BLIK,\n [ BUTTON_LABEL.TRUSTLY ]: FUNDING.TRUSTLY,\n [ BUTTON_LABEL.MAXIMA ]: FUNDING.MAXIMA,\n [ BUTTON_LABEL.BOLETO ]: FUNDING.BOLETO,\n [ BUTTON_LABEL.OXXO ]: FUNDING.OXXO\n};\n\nexport const BUTTON_RELATIVE_STYLE = {\n FUNDINGICONS: 100,\n TAGLINE: 50,\n VERTICAL_MARGIN: 30\n};\n\nexport const BUTTON_STYLE = {\n\n [ BUTTON_SIZE.TINY ]: {\n defaultWidth: 75,\n defaultHeight: 25,\n minWidth: 75,\n maxWidth: 150,\n minHeight: 25,\n maxHeight: 30,\n buttonTextMargin: 0.5,\n allowFunding: true,\n allowTagline: false,\n byPayPalHeight: 0\n },\n\n [ BUTTON_SIZE.SMALL ]: {\n defaultWidth: 150,\n defaultHeight: 25,\n minWidth: 150,\n maxWidth: 200,\n minHeight: 25,\n maxHeight: 55,\n buttonTextMargin: 0.5,\n allowFunding: true,\n allowTagline: true,\n byPayPalHeight: 0\n },\n\n [ BUTTON_SIZE.MEDIUM ]: {\n defaultWidth: 250,\n defaultHeight: 35,\n minWidth: 200,\n maxWidth: 300,\n minHeight: 35,\n maxHeight: 55,\n buttonTextMargin: 1,\n allowFunding: true,\n allowTagline: true,\n byPayPalHeight: 30\n },\n\n [ BUTTON_SIZE.LARGE ]: {\n defaultWidth: 350,\n defaultHeight: 45,\n minWidth: 300,\n maxWidth: 500,\n minHeight: 30,\n maxHeight: 55,\n buttonTextMargin: 1,\n allowFunding: true,\n allowTagline: true,\n byPayPalHeight: 30\n },\n\n [ BUTTON_SIZE.HUGE ]: {\n defaultWidth: 500,\n defaultHeight: 55,\n minWidth: 500,\n maxWidth: 750,\n minHeight: 40,\n maxHeight: 55,\n buttonTextMargin: 1.25,\n allowFunding: true,\n allowTagline: true,\n byPayPalHeight: 30\n }\n};\n\nexport function labelToFunding(label : ?string) : string {\n return label ? LABEL_TO_FUNDING[label] : FUNDING.PAYPAL;\n}\n\nexport function fundingToDefaultLabel(funding : string) : $Values {\n return FUNDING_TO_DEFAULT_LABEL[funding];\n}\n\nfunction getConfig(conf : Object, category : string, key : string, def : ?T) : T {\n const categoryConfig = conf[category];\n\n if (categoryConfig && categoryConfig.hasOwnProperty(key)) {\n return categoryConfig[key];\n }\n\n if (conf[DEFAULT] && conf[DEFAULT].hasOwnProperty(key)) {\n return conf[DEFAULT][key];\n }\n\n if (arguments.length >= 4) {\n // $FlowFixMe\n return def;\n }\n\n throw new Error(`No value found for ${ category }:${ key }`);\n}\n\nexport function getButtonConfig(label : string, key : string, def : ?T) : T {\n return getConfig(BUTTON_CONFIG, label, key, def);\n}\n","/* @flow */\n\nimport { BUTTON_LAYOUT, BUTTON_STYLE_OPTIONS, BUTTON_LABEL, BUTTON_COLOR, BUTTON_SIZE, BUTTON_SHAPE } from '../constants';\nimport { determineEligibleFunding, determineEligibleCards } from '../funding';\nimport { memoize, sortBy } from '../lib/util';\nimport type { LocaleType, FundingSelection, FundingList, CheckoutCustomizationType } from '../types';\nimport { FUNDING_ORDER } from '../funding/config';\n\nimport { getButtonConfig, labelToFunding } from './config';\n\nfunction parseLocale(locale : string) : LocaleType {\n const [ lang, country ] = locale.split('_');\n return { country, lang };\n}\n\nexport function determineMaxButtons({ label, layout, max } : { layout : string, label : string, max : number }) : number {\n\n const allowed = (layout === BUTTON_LAYOUT.HORIZONTAL)\n ? getButtonConfig(label, 'allowPrimaryHorizontal')\n : getButtonConfig(label, 'allowPrimaryVertical');\n\n if (!allowed) {\n return 1;\n }\n\n const configMax = (layout === BUTTON_LAYOUT.HORIZONTAL)\n ? getButtonConfig(label, 'maxHorizontalButtons')\n : getButtonConfig(label, 'maxVerticalButtons');\n\n return max\n ? Math.min(configMax, max)\n : configMax;\n}\n\nfunction enableTagline({ tagline, branding, fundingicons, layout }) : boolean {\n return Boolean(tagline && branding && !fundingicons && layout === BUTTON_LAYOUT.HORIZONTAL);\n}\n\ntype NormalizedProps = {|\n size : $Values,\n label : $Values,\n color : $Values,\n shape : $Values,\n locale : LocaleType,\n branding : boolean,\n fundingicons : boolean,\n tagline : boolean,\n funding : FundingSelection,\n layout : $Values,\n sources : FundingList,\n max : number,\n multiple : boolean,\n env : string,\n height : ?number,\n cards : $ReadOnlyArray,\n installmentperiod : number,\n checkoutCustomization : ?CheckoutCustomizationType\n|};\n\nexport const normalizeProps = memoize((props : Object, defs? : { locale? : LocaleType } = {}) : NormalizedProps => {\n\n let {\n env,\n locale,\n style = {},\n funding,\n commit,\n checkoutCustomization\n } = props;\n\n locale = locale ? parseLocale(locale) : (defs.locale || getButtonConfig('DEFAULT', 'defaultLocale'));\n \n // funding indicated the allowed/disallowed payment methods (including cards) passed in the integration script\n // $FlowFixMe\n funding = funding || {};\n funding.allowed = funding.allowed || [];\n funding.disallowed = funding.disallowed || [];\n funding.remembered = funding.remembered || [];\n \n const label = style[BUTTON_STYLE_OPTIONS.LABEL] || getButtonConfig('DEFAULT', (style.layout === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalLabel' : 'defaultLabel');\n const layout = style[BUTTON_STYLE_OPTIONS.LAYOUT] || getButtonConfig(label, 'defaultLayout');\n\n let {\n [ BUTTON_STYLE_OPTIONS.SIZE ]: size = getButtonConfig(label, (layout === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalSize' : 'defaultSize'),\n [ BUTTON_STYLE_OPTIONS.COLOR ]: color = getButtonConfig(label, 'defaultColor'),\n [ BUTTON_STYLE_OPTIONS.SHAPE ]: shape = getButtonConfig(label, 'defaultShape'),\n [ BUTTON_STYLE_OPTIONS.BRANDING ]: branding = getButtonConfig(label, (layout === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalBranding' : 'defaultBranding'),\n [ BUTTON_STYLE_OPTIONS.FUNDINGICONS ]: fundingicons = getButtonConfig(label, 'defaultFundingIcons'),\n [ BUTTON_STYLE_OPTIONS.TAGLINE ]: tagline = getButtonConfig(label, 'defaultTagline'),\n [ BUTTON_STYLE_OPTIONS.MAXBUTTONS ]: max,\n [ BUTTON_STYLE_OPTIONS.HEIGHT ]: height,\n [ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD ]: installmentperiod\n } = style;\n\n // max is the maximum number of buttons to be displayed in the iframe\n max = determineMaxButtons({ label, layout, max });\n\n const selected = labelToFunding(label);\n let sources = determineEligibleFunding({ funding, selected, locale, env, layout, commit });\n // sources is an array of funding sources eligible to be displayed\n sources = sortBy(sources.slice(0, max), FUNDING_ORDER);\n // multiple is a boolean value indicating whether the sources is greater than 1\n const multiple = sources.length > 1;\n\n if (multiple) {\n branding = true;\n }\n\n tagline = enableTagline({ tagline, branding, fundingicons, layout });\n\n const cards = determineEligibleCards({ funding, locale });\n \n return { size, label, locale, color, shape, branding, fundingicons,\n tagline, funding, layout, sources, max, multiple, env, height, cards, installmentperiod, checkoutCustomization };\n});\n","/* @flow */\n\nimport { BUTTON_LABEL, BUTTON_LAYOUT, BUTTON_SIZE, BUTTON_STYLE_OPTIONS, ALLOWED_INSTALLMENT_COUNTRIES, ALLOWED_INSTALLMENT_PERIOD, LOCALE } from '../constants';\n\nimport { BUTTON_CONFIG, BUTTON_STYLE, getButtonConfig } from './config';\n\nexport function validateButtonLocale(locale : string) {\n\n if (!locale) {\n throw new Error(`Expected props.locale to be set`);\n }\n\n if (!locale.match(/^[a-z]{2}[_][A-Z][A-Z0-9]$/)) {\n throw new Error(`Expected props.locale to be valid, got ${ locale }`);\n }\n\n const [ lang, country ] = locale.split('_');\n\n if (!LOCALE[country] || LOCALE[country].indexOf(lang) === -1) {\n throw new Error(`Expected props.locale to be valid`);\n }\n}\n\nexport function validateRegionSpecificButton(style : Object = {}, locale : string = 'en_US') {\n\n const country = locale.split('_')[1];\n\n const isInstallmentAllowedCountry = ALLOWED_INSTALLMENT_COUNTRIES.indexOf(country) !== -1;\n\n if (!isInstallmentAllowedCountry && style.label === BUTTON_LABEL.INSTALLMENT) {\n throw new Error(`Unexpected label: style.${ style.label } for country: ${ country }`);\n }\n\n if (!isInstallmentAllowedCountry && style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD]) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD } is invalid for country: ${ country }`);\n }\n\n if (isInstallmentAllowedCountry && style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD] && style.label !== BUTTON_LABEL.INSTALLMENT) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD } is invalid for label: style.${ style.label }`);\n }\n\n if (isInstallmentAllowedCountry && style.label === BUTTON_LABEL.INSTALLMENT && style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD]\n && typeof style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD] !== 'number') {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD } is expected to be a number`);\n }\n\n if (isInstallmentAllowedCountry && style.label === BUTTON_LABEL.INSTALLMENT && style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD]\n && ALLOWED_INSTALLMENT_PERIOD[country].indexOf(style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD]) === -1) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD }: ${ style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD] } is not a valid installment number for ${ style.label }`);\n }\n\n}\n\nexport function validateButtonStyle(style : Object = {}, props : Object) {\n\n if (!style) {\n throw new Error(`Expected props.style to be set`);\n }\n\n const label = style[BUTTON_STYLE_OPTIONS.LABEL] || getButtonConfig('DEFAULT', (style[BUTTON_STYLE_OPTIONS.LAYOUT] === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalLabel' : 'defaultLabel');\n\n if (!BUTTON_CONFIG[label]) {\n throw new Error(`Invalid button label: ${ label }, expected: ${ Object.keys(BUTTON_CONFIG[label]).join(', ') }`);\n }\n\n const {\n [ BUTTON_STYLE_OPTIONS.COLOR ]: color,\n [ BUTTON_STYLE_OPTIONS.SHAPE ]: shape,\n [ BUTTON_STYLE_OPTIONS.SIZE ]: size,\n [ BUTTON_STYLE_OPTIONS.BRANDING ]: branding,\n [ BUTTON_STYLE_OPTIONS.FUNDINGICONS ]: fundingicons,\n [ BUTTON_STYLE_OPTIONS.TAGLINE ]: tagline,\n [ BUTTON_STYLE_OPTIONS.LAYOUT ]: layout,\n [ BUTTON_STYLE_OPTIONS.MAXBUTTONS ]: maxbuttons,\n [ BUTTON_STYLE_OPTIONS.HEIGHT ]: height\n } = style;\n\n if (color && getButtonConfig(label, 'colors').indexOf(color) === -1) {\n throw new Error(`Unexpected style.${ BUTTON_STYLE_OPTIONS.COLOR } for ${ label } button: ${ color }, expected ${ getButtonConfig(label, 'colors').join(', ') }`);\n }\n\n if (shape && getButtonConfig(label, 'shapes').indexOf(shape) === -1) {\n throw new Error(`Unexpected style.${ BUTTON_STYLE_OPTIONS.SHAPE } for ${ label } button: ${ shape }, expected ${ getButtonConfig(label, 'shapes').join(', ') }`);\n }\n\n if (size && getButtonConfig(label, 'sizes').indexOf(size) === -1) {\n throw new Error(`Unexpected style.${ BUTTON_STYLE_OPTIONS.SIZE } for ${ label } button: ${ size }, expected ${ getButtonConfig(label, 'sizes').join(', ') }`);\n }\n\n if (branding === false) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.BRANDING }:false is not allowed`);\n }\n\n if (fundingicons && !getButtonConfig(label, 'allowFundingIcons')) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.FUNDINGICONS }:true is not allowed for ${ label } button`);\n }\n\n if (layout && getButtonConfig(label, 'layouts').indexOf(layout) === -1) {\n throw new Error(`Unexpected style.${ BUTTON_STYLE_OPTIONS.LAYOUT } for ${ label } button: ${ layout }, expected ${ getButtonConfig(label, 'layouts').join(', ') }`);\n }\n\n if (maxbuttons !== undefined) {\n if (typeof maxbuttons !== 'number') {\n throw new TypeError(`Expected style.${ BUTTON_STYLE_OPTIONS.MAXBUTTONS } to be a number, got: ${ maxbuttons }`);\n }\n\n if (maxbuttons < 1) {\n throw new Error(`Expected style.${ BUTTON_STYLE_OPTIONS.MAXBUTTONS } to be a at least 1, got: ${ maxbuttons }`);\n }\n\n const minButtons = (layout === BUTTON_LAYOUT.VERTICAL)\n ? getButtonConfig(label, 'minVerticalButtons')\n : getButtonConfig(label, 'minHorizontalButtons');\n\n if (maxbuttons < minButtons) {\n throw new Error(`Expected style.${ BUTTON_STYLE_OPTIONS.MAXBUTTONS } to be no fewer than ${ minButtons }, got ${ maxbuttons }`);\n }\n }\n\n if (height !== undefined) {\n if (typeof height !== 'number') {\n throw new TypeError(`Expected style.${ BUTTON_STYLE_OPTIONS.HEIGHT } to be a number, got: ${ maxbuttons }`);\n }\n\n const buttonSize = size || getButtonConfig(label, (style.layout === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalSize' : 'defaultSize');\n\n const { minHeight, maxHeight } = (size === BUTTON_SIZE.RESPONSIVE) ? {\n minHeight: BUTTON_STYLE[BUTTON_SIZE.SMALL].minHeight,\n maxHeight: BUTTON_STYLE[BUTTON_SIZE.HUGE].maxHeight\n } : BUTTON_STYLE[buttonSize];\n\n if (height < minHeight || height > maxHeight) {\n throw new Error(`Expected style.${ BUTTON_STYLE_OPTIONS.HEIGHT } to be between ${ minHeight }px and ${ maxHeight }px - got ${ height }px`);\n }\n }\n\n if (!getButtonConfig(label, 'allowPrimary')) {\n throw new Error(`${ label } can not be used as primary button label`);\n }\n\n if (layout === BUTTON_LAYOUT.VERTICAL) {\n\n if (size && [ BUTTON_SIZE.MEDIUM, BUTTON_SIZE.LARGE, BUTTON_SIZE.RESPONSIVE ].indexOf(size) === -1) {\n throw new Error(`Button must be at least ${ BUTTON_SIZE.MEDIUM } size for ${ BUTTON_LAYOUT.VERTICAL } layout`);\n }\n\n if (!getButtonConfig(label, 'allowPrimaryVertical')) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.LABEL } option is not allowed for ${ BUTTON_LAYOUT.VERTICAL } layout - got ${ label }`);\n }\n\n if (fundingicons) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.FUNDINGICONS } not allowed for ${ BUTTON_LAYOUT.VERTICAL } layout - got ${ fundingicons }`);\n }\n\n if (tagline) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.TAGLINE } is not allowed for ${ BUTTON_LAYOUT.VERTICAL } layout - got ${ tagline }`);\n }\n }\n\n validateRegionSpecificButton(style, props.locale);\n}\n\nexport function validateButtonProps(props : Object) {\n\n if (!props) {\n throw new Error(`Expected props`);\n }\n\n const { locale, style } = props;\n\n validateButtonLocale(locale);\n validateButtonStyle(style, props);\n}\n","/* @flow */\n\nexport const CLASS = {\n SHOULD_FOCUS: 'paypal-should-focus',\n\n CONTAINER: 'paypal-button-container',\n BUTTON: 'paypal-button',\n \n BUTTON_LABEL: 'paypal-button-label-container',\n\n LABEL: 'paypal-button-label',\n COLOR: 'paypal-button-color',\n LOGO_COLOR: 'paypal-button-logo-color',\n SHAPE: 'paypal-button-shape',\n BRANDING: 'paypal-button-branding',\n LAYOUT: 'paypal-button-layout',\n NUMBER: 'paypal-button-number',\n ENV: 'paypal-button-env',\n\n TAGLINE: 'paypal-button-tagline',\n TAGLINE_COLOR: 'paypal-button-tagline-color',\n FUNDINGICONS: 'paypal-button-fundingicons',\n\n TEXT: 'paypal-button-text',\n LOGO: 'paypal-button-logo',\n CARD: 'paypal-button-card',\n\n SEPARATOR: 'paypal-separator',\n HIDDEN: 'hidden',\n DOM_READY: 'dom-ready',\n \n PERSONALIZATION_TEXT: 'personalization-text'\n};\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { create } from 'zoid/src';\nimport { type Component } from 'zoid/src/component/component';\nimport { info, warn, track, error, flush as flushLogs, immediateFlush } from 'beaver-logger/client';\nimport { getDomain } from 'cross-domain-utils/src';\nimport { base64encode } from 'belter/src';\nimport { debounce, once } from 'zoid/src/lib';\n\nimport { pptm } from '../external';\nimport { config } from '../config';\nimport { SOURCE, ENV, FPTI, FUNDING, BUTTON_LABEL, BUTTON_COLOR,\n BUTTON_SIZE, BUTTON_SHAPE, BUTTON_LAYOUT, COUNTRY } from '../constants';\nimport { redirect as redir, checkRecognizedBrowser,\n getBrowserLocale, getSessionID, request, getScriptVersion,\n isIEIntranet, isEligible, getCurrentScriptUrl,\n getDomainSetting, extendUrl, isDevice, rememberFunding,\n getRememberedFunding, memoize, uniqueID, getThrottle, getBrowser } from '../lib';\nimport { rest } from '../api';\nimport { onAuthorizeListener } from '../experiments';\nimport { getPaymentType, awaitBraintreeClient,\n mapPaymentToBraintree, type BraintreePayPalClient } from '../integrations';\nimport { awaitPopupBridge } from '../integrations/popupBridge';\nimport { validateFunding, isFundingIneligible, isFundingAutoEligible } from '../funding';\n\nimport { containerTemplate, componentTemplate } from './template';\nimport { validateButtonLocale, validateButtonStyle } from './validate';\nimport { setupButtonChild } from './child';\nimport { normalizeProps } from './props';\n\npptm.listenForLoadWithNoContent();\n\nfunction isCreditDualEligible(props) : boolean {\n\n const { label, funding, layout, locale, max, sources, env } = normalizeProps(props, { locale: getBrowserLocale() });\n const { allowed } = funding;\n const { country } = locale;\n\n if (allowed && allowed.indexOf(FUNDING.CREDIT) !== -1) {\n return false;\n }\n\n if (layout !== BUTTON_LAYOUT.HORIZONTAL) {\n return false;\n }\n\n if (max === 1) {\n return false;\n }\n\n if (label === BUTTON_LABEL.CREDIT) {\n return false;\n }\n\n if (country !== COUNTRY.US) {\n return false;\n }\n\n if (isFundingIneligible(FUNDING.CREDIT, { funding, locale, layout, env })) {\n return false;\n }\n\n if (isFundingAutoEligible(FUNDING.CREDIT, { funding, locale, layout })) {\n return false;\n }\n\n if (sources.indexOf(FUNDING.CREDIT) !== -1) {\n return false;\n }\n\n const domain = getDomain().replace(/^https?:\\/\\//, '').replace(/^www\\./, '');\n\n if (config.creditTestDomains.indexOf(domain) === -1) {\n return false;\n }\n\n return true;\n}\n\nlet creditThrottle;\n\ntype ButtonOptions = {|\n style : {|\n maxbuttons? : number,\n layout? : string,\n label? : string,\n size? : string,\n shape? : string,\n color? : string,\n tagline? : boolean\n |},\n client : {\n [string] : (string | ZalgoPromise)\n },\n funding? : { allowed? : $ReadOnlyArray, disallowed? : $ReadOnlyArray },\n env? : string,\n locale? : string,\n logLevel : string,\n awaitPopupBridge : Function,\n meta : Object,\n validate? : ({ enable : () => ZalgoPromise, disable : () => ZalgoPromise }) => void,\n stage? : string,\n stageUrl? : string,\n localhostUrl? : string,\n checkoutUri? : string,\n authCode? : string,\n enableNativeCheckout? : boolean\n|};\n\nexport const Button : Component = create({\n\n tag: 'paypal-button',\n name: 'ppbutton',\n\n buildUrl(props) : string {\n const env = props.env || config.env;\n const url = config.buttonUrls[env];\n return url;\n },\n\n contexts: {\n iframe: true,\n popup: false\n },\n\n scrolling: false,\n listenForResize: true,\n\n containerTemplate,\n\n autoResize: {\n height: true,\n width: false\n },\n\n prerenderTemplate({ props, jsxDom } : { props : Object, jsxDom : Function }) : HTMLElement {\n\n const template = (\n
\n );\n\n template.addEventListener('click', () => {\n warn('button_pre_template_click');\n\n if (isIEIntranet()) {\n warn(`button_pre_template_click_intranet_mode`);\n\n flushLogs();\n\n // eslint-disable-next-line no-alert\n alert(`IE Intranet mode is not supported by PayPal. Please disable intranet mode, or continue in an alternate browser.`);\n }\n\n if (getDomainSetting('allow_full_page_fallback')) {\n info('pre_template_force_full_page');\n\n this.props.payment().then(token => {\n window.top.location = extendUrl(config.checkoutUrl, { token });\n });\n }\n });\n\n return (\n \n \n { template }\n \n \n );\n },\n\n get version() : string {\n return getScriptVersion();\n },\n\n get domain() : Object {\n return config.paypalDomains;\n },\n\n attributes: {\n iframe: {\n allowpaymentrequest: 'allowpaymentrequest'\n }\n },\n\n validate() {\n if (!isEligible()) {\n warn('button_render_ineligible');\n }\n },\n\n props: {\n domain: {\n type: 'string',\n required: false,\n def() : string {\n return window.location.host;\n },\n queryParam: true\n },\n\n sessionID: {\n type: 'string',\n required: false,\n def() : string {\n return getSessionID();\n },\n queryParam: true\n },\n\n buttonSessionID: {\n type: 'string',\n required: false,\n def() : ?string {\n return uniqueID();\n },\n queryParam: true\n },\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n }\n },\n\n meta: {\n type: 'object',\n required: false,\n def() : Object {\n return {};\n }\n },\n\n enableNativeCheckout: {\n type: 'boolean',\n required: false,\n def() : boolean {\n return false;\n }\n },\n\n client: {\n type: 'object',\n required: false,\n def() : Object {\n return {};\n },\n\n validate(client, props) {\n const env = props.env || config.env;\n\n if (!client[env]) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (typeof client[env] === 'string') {\n if (client[env].match(/^(.)\\1+$/)) {\n throw new Error(`Invalid client ID: ${ client[env] }`);\n }\n } else if (!ZalgoPromise.isPromise(client[env])) {\n throw new Error(`Expected client token to be either a string or a promise`);\n }\n },\n\n decorate(client : Object) : Object {\n if (client && client.sandbox === 'demo_sandbox_client_id') {\n client.sandbox = 'AZDxjDScFpQtjWTOUtWKbyN_bDt4OgqaF4eYXlewfBP4-8aqX3PiV8e1GWU6liB2CUXlkA59kJXE7M6R';\n }\n\n return client;\n }\n },\n\n source: {\n type: 'string',\n required: false,\n def() : string {\n return SOURCE.MANUAL;\n }\n },\n\n prefetchLogin: {\n type: 'boolean',\n required: false\n },\n\n stage: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.STAGE || env === ENV.LOCAL) {\n return config.stage;\n }\n }\n },\n\n updateClientConfiguration: {\n type: 'boolean',\n required: false,\n def: () => {\n return true;\n }\n },\n\n stageUrl: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.STAGE || env === ENV.LOCAL) {\n return config.stageUrl;\n }\n }\n },\n\n localhostUrl: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.LOCAL) {\n return config.localhostUrl;\n }\n }\n },\n\n checkoutUri: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : ?string {\n return config.checkoutUri;\n }\n },\n\n braintree: {\n type: 'object',\n required: false,\n validate(braintree, props) {\n\n if (!braintree.paypalCheckout) {\n throw new Error(`Expected Braintree paypal-checkout component to be loaded`);\n }\n\n if (!props.client) {\n throw new Error(`Expected client prop to be passed with Braintree authorization keys`);\n }\n },\n // $FlowFixMe\n decorate(braintree, props) : ZalgoPromise {\n const env = props.env || config.env;\n // $FlowFixMe\n return ZalgoPromise.hash(props.client).then(client => {\n return awaitBraintreeClient(braintree, client[env]);\n });\n }\n },\n\n payment: {\n type: 'function',\n required: true,\n memoize: false,\n timeout: __TEST__ ? 500 : 10 * 1000,\n alias: 'billingAgreement',\n\n decorate(original) : Function {\n return function payment(data = {}) : ZalgoPromise {\n\n const actions = {\n request,\n payment: {\n create: (options) => {\n return this.props.braintree\n ? this.props.braintree.then(client => {\n return client.createPayment(mapPaymentToBraintree(options.payment || options));\n })\n : ZalgoPromise.hash(this.props.client).then(client => {\n return rest.payment.create(this.props.env, client, options);\n });\n }\n },\n order: {\n create: (options) => {\n return ZalgoPromise.hash(this.props.client).then(client => {\n return rest.order.create(this.props.env, client, options);\n });\n }\n },\n braintree: {\n create: (options) => {\n if (!this.props.braintree) {\n throw new Error(`Can not create using Braintree - no braintree client provided`);\n }\n\n return this.props.braintree.then(client => {\n return client.createPayment(options);\n });\n }\n }\n };\n\n if (getDomainSetting('memoize_payment') && this.memoizedToken) {\n return this.memoizedToken;\n }\n\n this.memoizedToken = ZalgoPromise.try(original, this, [ data, actions ]);\n\n const startTime = Date.now();\n\n this.memoizedToken = this.memoizedToken.then(token => {\n\n if (!token) {\n error(`no_token_passed_to_payment`);\n throw new Error(`No value passed to payment`);\n }\n\n const elapsed = Date.now() - startTime;\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.RECIEVE_PAYMENT,\n [ FPTI.KEY.CONTEXT_TYPE ]: FPTI.CONTEXT_TYPE[getPaymentType(token)],\n [ FPTI.KEY.CONTEXT_ID ]: token,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.RESPONSE_DURATION ]: elapsed,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n flushLogs();\n\n return token;\n });\n\n return this.memoizedToken;\n };\n }\n },\n\n authCode: {\n type: 'string',\n required: false,\n def() : string {\n return config.authCode;\n }\n },\n\n funding: {\n type: 'object',\n required: false,\n queryParam: true,\n validate({ allowed = [], disallowed = [] } : Object = {}) {\n validateFunding({ allowed, disallowed, remembered: [] });\n },\n def() : Object {\n return {};\n },\n decorate({ allowed = [], disallowed = [] } : Object = {}, props : ButtonOptions) : {} {\n\n allowed = Array.isArray(allowed) ? allowed : [];\n disallowed = Array.isArray(disallowed) ? disallowed : [];\n\n if (allowed && allowed.indexOf(FUNDING.VENMO) !== -1) {\n allowed = allowed.filter(source => (source !== FUNDING.VENMO));\n }\n if (allowed && allowed.indexOf(FUNDING.ITAU) !== -1) {\n allowed = allowed.filter(source => (source !== FUNDING.ITAU));\n }\n\n if (isCreditDualEligible(props)) {\n creditThrottle = getThrottle('dual_credit_automatic', 50);\n\n if (creditThrottle.isEnabled()) {\n allowed = [ ...allowed, FUNDING.CREDIT ];\n }\n }\n\n let remembered = getRememberedFunding(sources => sources);\n\n if (!isDevice() || getDomainSetting('disable_venmo')) {\n if (remembered && remembered.indexOf(FUNDING.VENMO) !== -1) {\n remembered = remembered.filter(source => (source !== FUNDING.VENMO));\n }\n\n if (disallowed && disallowed.indexOf(FUNDING.VENMO) === -1) {\n disallowed = [ ...disallowed, FUNDING.VENMO ];\n }\n }\n\n return {\n allowed,\n disallowed,\n remembered,\n remember(sources) {\n rememberFunding(sources);\n }\n };\n }\n },\n\n commit: {\n type: 'boolean',\n required: false,\n queryParam: true,\n queryValue: (val) => {\n return val ? 'true' : 'false';\n }\n },\n\n onRender: {\n type: 'function',\n promisify: true,\n required: false,\n noop: true,\n decorate(original) : Function {\n return function decorateOnRender() : mixed {\n const { browser = 'unrecognized', version = 'unrecognized' } = getBrowser();\n info(`button_render_browser_${ browser }_${ isDevice() ? 'mobile' : 'desktop' }_${ version }`);\n\n const style = this.props.style || {};\n\n info(`button_render`);\n info(`button_render_color_${ style.color || 'default' }`);\n info(`button_render_shape_${ style.shape || 'default' }`);\n info(`button_render_size_${ style.size || 'default' }`);\n info(`button_render_label_${ style.label || 'default' }`);\n info(`button_render_branding_${ style.branding || 'default' }`);\n info(`button_render_fundingicons_${ style.fundingicons || 'default' }`);\n info(`button_render_tagline_${ style.tagline || 'default' }`);\n\n pptm.listenForButtonRender();\n pptm.reloadPptmScript(this.props.client[this.props.env]);\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_RENDER,\n [ FPTI.KEY.BUTTON_TYPE ]: FPTI.BUTTON_TYPE.IFRAME,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.BUTTON_SOURCE ]: this.props.source\n });\n\n if (isIEIntranet()) {\n warn(`button_render_intranet_mode`);\n }\n\n if (creditThrottle) {\n creditThrottle.logStart({\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID\n });\n }\n\n flushLogs();\n\n return original.apply(this, arguments);\n };\n }\n },\n\n onAuthorize: {\n type: 'function',\n alias: 'onApprove',\n required: true,\n\n decorate(original) : Function {\n return function decorateOnAuthorize(data, actions) : void | ZalgoPromise {\n\n if (data && !data.intent) {\n warn(`button_authorize_no_intent`, { paymentID: data.paymentID, token: data.paymentToken });\n }\n\n info('button_authorize');\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CHECKOUT_AUTHORIZE,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n if (isIEIntranet()) {\n warn(`button_authorize_intranet_mode`);\n }\n\n if (!isEligible()) {\n info('button_authorize_ineligible');\n }\n\n checkRecognizedBrowser('authorize');\n\n flushLogs();\n\n const restart = actions.restart;\n actions.restart = () => {\n return restart().then(() => {\n return new ZalgoPromise();\n });\n };\n\n actions.redirect = (win, url) => {\n return ZalgoPromise.try(() => {\n if (actions.close) {\n return actions.close();\n }\n }).then(() => {\n return redir(win || window.top, url || data.returnUrl);\n });\n };\n\n actions.payment.tokenize = memoize(() => {\n if (!this.props.braintree) {\n throw new Error(`Must pass in Braintree client to tokenize payment`);\n }\n\n return this.props.braintree\n .then(client => client.tokenizePayment(data));\n });\n\n const execute = actions.payment.execute;\n actions.payment.execute = () => {\n return execute().then(result => {\n\n if (!result || !result.id || !result.intent || !result.state) {\n warn(`execute_result_missing_data`);\n return new ZalgoPromise();\n }\n\n return result;\n });\n };\n\n const get = actions.payment.get;\n\n actions.payment.get = () => {\n return get().then(result => {\n if (!result || !result.id || !result.intent || !result.state) {\n warn(`get_result_missing_data`);\n return new ZalgoPromise();\n }\n\n return result;\n });\n };\n\n actions.request = request;\n\n onAuthorizeListener.trigger({\n paymentToken: data.paymentToken\n });\n\n if (creditThrottle) {\n creditThrottle.logComplete({\n [FPTI.KEY.BUTTON_SESSION_UID]: this.props.buttonSessionID\n });\n }\n\n return ZalgoPromise.try(() => {\n\n if (this.props.braintree) {\n return actions.payment.tokenize().then(({ nonce }) => {\n // $FlowFixMe\n Object.defineProperty(data, 'nonce', {\n get: () => {\n info('nonce_getter');\n flushLogs();\n return nonce;\n }\n });\n });\n }\n\n }).then(() => {\n return original.call(this, data, actions);\n }).catch(err => {\n if (this.props.onError) {\n return this.props.onError(err);\n }\n throw err;\n });\n };\n }\n },\n\n onShippingChange: {\n type: 'function',\n required: false,\n\n decorate(original) : void | Function {\n if (!original) {\n return;\n }\n\n return function decorateOnShippingChange(data, actions) : ZalgoPromise {\n\n info('button_shipping_change');\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CHECKOUT_SHIPPING_CHANGE,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n flushLogs();\n const timeout = __TEST__ ? 500 : 10 * 1000;\n\n const patch = actions.payment.patch;\n actions.payment.patch = (patchObject) => {\n return ZalgoPromise.try(() => {\n return patch(patchObject);\n });\n };\n\n const resolve = () => ZalgoPromise.resolve();\n const reject = actions.reject || function reject() {\n throw new Error(`Missing reject action callback`);\n };\n\n return ZalgoPromise.try(() => {\n return original.call(this, data, { ...actions, resolve, reject });\n }).timeout(timeout,\n new Error(`Timed out waiting ${ timeout }ms for payment`)).catch(err => {\n if (this.props.onError) {\n this.props.onError(err);\n }\n throw err;\n });\n };\n }\n },\n\n onError: {\n type: 'function',\n required: false,\n promisify: true,\n sendToChild: true,\n once: true,\n def() : (() => void) {\n return function onError(err : mixed) {\n if (isIEIntranet()) {\n warn(`button_error_intranet_mode`);\n flushLogs();\n\n // eslint-disable-next-line no-alert\n alert(`IE Intranet mode is not supported by PayPal. Please disable intranet mode, or continue in an alternate browser.`);\n }\n\n setTimeout(() => {\n throw err;\n });\n };\n }\n },\n\n onCancel: {\n type: 'function',\n required: false,\n noop: true,\n\n decorate(original) : Function {\n return function decorateOnCancel(data, actions) : void | ZalgoPromise {\n\n info('button_cancel');\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CHECKOUT_CANCEL,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n flushLogs();\n\n const redirect = (win, url) => {\n return ZalgoPromise.all([\n redir(win || window.top, url || data.cancelUrl),\n actions.close()\n ]);\n };\n\n return original.call(this, data, { ...actions, redirect });\n };\n }\n },\n\n onClick: {\n type: 'function',\n required: false,\n noop: true,\n decorate(original) : Function {\n return function decorateOnClick(data : ?{ fundingSource : string, card? : string, flow? : string, button_version? : string }) : void {\n\n info('button_click');\n if (data && data.flow) {\n info(`pay_flow_${ data.flow }`);\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.BUTTON,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_CLICK,\n [ FPTI.KEY.BUTTON_TYPE ]: FPTI.BUTTON_TYPE.IFRAME,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.CHOSEN_FUNDING ]: data && (data.card || data.fundingSource),\n [ FPTI.KEY.PAYMENT_FLOW ]: data && data.flow,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n if (isIEIntranet()) {\n warn('button_click_intranet_mode');\n }\n\n if (creditThrottle) {\n creditThrottle.log('click', {\n [ FPTI.KEY.STATE ]: FPTI.STATE.BUTTON,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_CLICK,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID\n });\n }\n\n const { color = 'default' } = this.props.style || {};\n info(`button_click_color_${ color }`);\n\n flushLogs();\n\n return original.apply(this, arguments);\n };\n }\n },\n\n onResize: {\n type: 'function',\n required: false,\n get value() : Function {\n let initialHeight;\n const logInlineGuestOutOfViewPortOnlyOnce = once((data) => {\n info('buttons_expansion_outside_viewport', data);\n immediateFlush();\n });\n\n return function onResizeHandler() {\n const container = this.container;\n\n if (!container) {\n return;\n }\n\n if (!initialHeight) {\n initialHeight = container.offsetHeight;\n }\n\n const getScrollOffsetY = () => {\n if (window.pageYOffset) {\n return window.pageYOffset;\n }\n\n if (document.documentElement) {\n return document.documentElement.scrollTop;\n }\n\n return 0;\n };\n\n // explanation https://github.com/paypal/paypal-checkout-components/pull/1136#discussion_r298025574\n const checkIfExpansionInViewport = () => {\n try {\n const scrollOffsetY = getScrollOffsetY();\n const windowHeight = window.innerHeight;\n\n const containerOffsetY = container.getBoundingClientRect().top;\n const VISIBLE_THRESHOLD = 200; // 200px, for the first input field to be visible\n\n return scrollOffsetY + windowHeight > initialHeight + containerOffsetY + VISIBLE_THRESHOLD;\n } catch (err) {\n info('cannot_get_the_viewport_information');\n return false;\n }\n };\n\n const isContainerExpanded = container && container.offsetHeight > initialHeight;\n const isExpansionInViewport = checkIfExpansionInViewport();\n\n if (!isContainerExpanded || isExpansionInViewport) {\n return;\n }\n\n logInlineGuestOutOfViewPortOnlyOnce({\n height: container.offsetHeight,\n window: {\n width: window.innerWidth,\n height: window.innerHeight\n }\n });\n };\n },\n decorate: (original) => debounce(original)\n },\n\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n },\n\n validate: validateButtonLocale\n },\n\n style: {\n type: 'object',\n required: false,\n queryParam: true,\n alias: 'buttonStyle',\n\n def() : Object {\n return {\n color: BUTTON_COLOR.GOLD,\n shape: BUTTON_SHAPE.PILL,\n size: BUTTON_SIZE.SMALL,\n label: BUTTON_LABEL.CHECKOUT,\n fundingicons: false,\n layout: BUTTON_LAYOUT.HORIZONTAL\n };\n },\n \n decorate(style : Object) : Object {\n const { label, layout = BUTTON_LAYOUT.HORIZONTAL } = style;\n if (!label && layout === BUTTON_LAYOUT.HORIZONTAL) {\n style.label = BUTTON_LABEL.CHECKOUT;\n return style;\n } else if (!label && layout === BUTTON_LAYOUT.VERTICAL) {\n style.label = BUTTON_LABEL.PAYPAL;\n return style;\n }\n return style;\n },\n\n validate(style = {}, props) {\n validateButtonStyle(style, props);\n flushLogs();\n }\n },\n\n validate: {\n type: 'function',\n required: false,\n decorate(validate) : Function {\n // $FlowFixMe\n return function decorateValidate(actions) : mixed {\n if (!this.validateCalled) {\n this.validateCalled = true;\n return validate(actions);\n }\n };\n }\n },\n\n logLevel: {\n type: 'string',\n required: false,\n get value() : string {\n return config.logLevel;\n }\n },\n\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n },\n\n awaitPopupBridge: {\n type: 'object',\n required: false,\n value: () => awaitPopupBridge(Button)\n },\n\n getPageUrl: {\n type: 'function',\n queryParam: false,\n required: false,\n def: () => {\n return () => window.location.href;\n }\n },\n\n test: {\n type: 'object',\n required: false,\n def() : Object {\n return { action: 'checkout' };\n }\n }\n }\n});\n\nif (Button.isChild()) {\n setupButtonChild(Button);\n}\n","/* @flow */\n\nimport { CLASS } from './class';\n\nexport const pageStyle = `\n html, body {\n padding: 0;\n margin: 0;\n width: 100%;\n overflow: hidden;\n text-align: center;\n }\n\n body {\n display: inline-block;\n vertical-align: top;\n }\n\n * {\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -khtml-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n cursor: default;\n box-sizing: border-box;\n }\n \n .${ CLASS.HIDDEN } {\n position: absolute;\n visibility: hidden;\n }\n`;\n","/* @flow */\n\nimport { BUTTON_COLOR, ENV } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const buttonStyle = `\n\n .${ CLASS.CONTAINER } {\n display: block;\n white-space: nowrap;\n margin: 0;\n background: 0;\n border: 0;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n text-transform: none;\n font-weight: 500;R\n -webkit-font-smoothing: antialiased;\n font-smoothing: antialiased;\n z-index: 0;\n font-size: 0;\n width: 100%;\n box-sizing: border-box;\n }\n\n .${ CLASS.BUTTON }:not(.${ CLASS.CARD }) {\n border: 1px solid transparent;\n border-radius: 0 3px 3px 0;\n position: relative;\n width: 100%;\n box-sizing: border-box;\n border: none;\n vertical-align: top;\n cursor: pointer;\n outline: none;\n overflow: hidden;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.TRANSPARENT } {\n cursor: auto;\n }\n\n .${ CLASS.BUTTON } * {\n cursor: pointer;\n }\n\n .${ CLASS.CONTAINER }.${ CLASS.ENV }-${ ENV.TEST } .${ CLASS.TEXT } {\n font-family: Arial !important;\n background: rgba(0, 0, 0, 0.5) !important;\n color: transparent !important;\n text-shadow: none !important;\n }\n\n .${ CLASS.BUTTON }:hover {\n box-shadow: inset 0 0 100px 100px rgba(255, 255, 255, 0.2);\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.GOLD }:hover,\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.SILVER }:hover {\n box-shadow: inset 0 0 100px 100px rgba(0, 0, 0, 0.05);\n }\n\n .${ CLASS.CARD }, .${ CLASS.CARD } * {\n cursor: pointer;\n }\n\n .${ CLASS.CARD }:hover {\n filter: brightness(1.2);\n }\n\n .${ CLASS.BUTTON }:focus, .${ CLASS.CARD }:focus {\n outline: none;\n }\n\n .${ CLASS.SHOULD_FOCUS } .${ CLASS.BUTTON }:focus,\n .${ CLASS.SHOULD_FOCUS } .${ CLASS.CARD }:focus {\n outline: solid 2px Highlight;\n outline: auto 5px -webkit-focus-ring-color;\n outline-offset: -3px;\n }\n\n .${ CLASS.BUTTON }:focus {\n box-shadow: -1px -1px 18px 1px rgba(0, 0, 0, 0.25) inset;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.TRANSPARENT }:focus {\n box-shadow: none;\n outline: none;\n }\n\n .${ CLASS.LOGO } {\n padding: 0;\n display: inline-block;\n background: none;\n border: none;\n width: auto;\n }\n\n .${ CLASS.TEXT } {\n display: inline-block;\n white-space: pre;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.BUTTON_LABEL } {\n position: relative;\n top: 50%;\n transform: translateY(-50%);\n -webkit-transform: translateY(-50%);\n -moz-transform: translateY(-50%);\n -ms-transform: translateY(-50%);\n -o-transform: translateY(-50%);\n }\n \n .${ CLASS.BUTTON } > .${ CLASS.BUTTON_LABEL } > * {\n vertical-align: top;\n height: 100%;\n text-align: left;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.CARD } {\n border-radius: 4px;\n }\n\n .powered-by-paypal > .${ CLASS.TEXT } {\n vertical-align: top;\n line-height: 18px;\n }\n\n .powered-by-paypal > .${ CLASS.LOGO } {\n height: 16px;\n min-height: 16px;\n }\n\n .${ CLASS.TAGLINE } {\n max-width: 100%;\n font-weight: normal;\n display: block;\n text-align: center;\n width: auto;\n }\n\n .${ CLASS.SEPARATOR } {\n height: 80%;\n border-left: 1px solid rgba(0, 0, 0, 0.15);\n margin: 0 8px;\n display: inline-block;\n position: relative;\n top: 10%;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.BLACK } .${ CLASS.SEPARATOR } {\n border-color: rgba(255, 255, 255, 0.45);\n }\n`;\n","/* @flow */\n\nimport { BUTTON_LAYOUT } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const layoutStyle = `\n\n .${ CLASS.CONTAINER }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.VERTICAL } .${ CLASS.TAGLINE } {\n display: none;\n }\n`;\n","/* @flow */\n\nimport { BUTTON_BRANDING } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const brandingStyle = `\n\n .${ CLASS.BUTTON }.${ CLASS.BRANDING }-${ BUTTON_BRANDING.UNBRANDED } {\n min-width: 60%;\n width: auto;\n font-weight: 900;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.BRANDING }-${ BUTTON_BRANDING.UNBRANDED } .${ CLASS.LOGO } {\n display: none;\n }\n`;\n","/* @flow */\n\nimport { BUTTON_STYLE } from '../../config';\nimport { BUTTON_LABEL, BUTTON_LOGO, BUTTON_SIZE, BUTTON_LAYOUT, BUTTON_NUMBER } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const labelStyle = `\n\n .${ CLASS.BUTTON }.${ CLASS.LABEL }-${ BUTTON_LABEL.CARD } {\n border-radius: 0 !important;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LABEL }-${ BUTTON_LABEL.CREDIT } .${ CLASS.TEXT } {\n display: none !important;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.LABEL }-${ BUTTON_LABEL.CREDIT } .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LOGO.PAYPAL } {\n display: none;\n }\n\n @media only screen and (max-width : ${ BUTTON_STYLE[BUTTON_SIZE.SMALL].minWidth }px) {\n\n .${ CLASS.BUTTON }.${ CLASS.LABEL }-${ BUTTON_LABEL.CREDIT } .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LOGO.PAYPAL } {\n display: none;\n }\n }\n\n @media only screen and (min-width : ${ BUTTON_STYLE[BUTTON_SIZE.SMALL].minWidth }px) {\n\n .${ CLASS.BUTTON }.${ CLASS.LABEL }-${ BUTTON_LABEL.CREDIT } .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LOGO.PAYPAL } {\n display: inline-block;\n }\n }\n`;\n","/* @flow */\n\nimport { BUTTON_BRANDING, BUTTON_SHAPE, BUTTON_LAYOUT, BUTTON_NUMBER, BUTTON_LABEL } from '../../../constants';\nimport { BUTTON_STYLE, BUTTON_RELATIVE_STYLE } from '../../config';\nimport { max, perc } from '../../../lib/util';\n\nimport { CLASS } from './class';\n\nconst DUAL_BUTTON_MIN_RATIO = 2.8;\n\nexport function buttonResponsiveStyle({ height, cardNumber = 4 } : { height? : ?number, cardNumber? : number }) : string {\n\n return Object.keys(BUTTON_STYLE).map(size => {\n\n const style = BUTTON_STYLE[size];\n const buttonHeight = height || style.defaultHeight;\n const buttonTextMarginTop = style.buttonTextMargin;\n const minDualWidth = Math.round(buttonHeight * DUAL_BUTTON_MIN_RATIO * 2);\n\n return `\n\n @media only screen and (min-width: ${ style.minWidth }px) {\n\n .${ CLASS.CONTAINER } {\n min-width: ${ style.minWidth }px;\n max-width: ${ style.maxWidth }px;\n font-size: ${ max(perc(buttonHeight, 32), 10) }px;\n }\n\n .${ CLASS.BUTTON }:not(.${ CLASS.CARD }) {\n height: ${ buttonHeight }px;\n min-height: ${ height || style.minHeight }px;\n max-height: ${ height || style.maxHeight }px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.BRANDING }-${ BUTTON_BRANDING.UNBRANDED } .${ CLASS.BUTTON_LABEL } {\n height: 100%;\n font-size: ${ max(perc(buttonHeight, 45), 10) }px;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.BUTTON_LABEL } {\n height: ${ perc(buttonHeight, 35) + 5 }px;\n max-height: ${ perc(buttonHeight, 60) }px;\n min-height: ${ perc(buttonHeight, 40) }px;\n }\n \n .${ CLASS.BUTTON } .${ CLASS.BUTTON_LABEL } .${ CLASS.TEXT } {\n margin-top: ${ buttonTextMarginTop }px;\n }\n \n .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LABEL.EPS },\n .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LABEL.MYBANK } {\n height: ${ perc(buttonHeight, 50) + 5 }px;\n max-height: ${ perc(buttonHeight, 70) }px;\n min-height: ${ perc(buttonHeight, 40) }px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.SHAPE }-${ BUTTON_SHAPE.PILL } {\n border-radius: ${ Math.ceil(buttonHeight / 2) }px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.SHAPE }-${ BUTTON_SHAPE.RECT } {\n border-radius: 4px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.VERTICAL } {\n margin-bottom: ${ perc(buttonHeight, BUTTON_RELATIVE_STYLE.VERTICAL_MARGIN) }px;\n }\n\n .${ CLASS.SEPARATOR } {\n margin: 0 ${ perc(buttonHeight, 5) }px;\n }\n\n .${ CLASS.TAGLINE } {\n display: ${ style.allowTagline ? 'block' : 'none' };\n height: ${ perc(buttonHeight, BUTTON_RELATIVE_STYLE.TAGLINE) }px;\n line-height: ${ perc(buttonHeight, BUTTON_RELATIVE_STYLE.TAGLINE) }px;\n }\n\n .${ CLASS.FUNDINGICONS } {\n display: ${ style.allowFunding ? 'block' : 'none' };\n height: ${ perc(buttonHeight, BUTTON_RELATIVE_STYLE.FUNDINGICONS) }px;\n }\n\n .${ CLASS.CARD } {\n display: inline-block;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.CARD } {\n width: ${ (90 / cardNumber).toFixed(2) }%;\n max-width: ${ perc(buttonHeight, 160) }px;\n margin-top: 0;\n margin-left: ${ (5 / cardNumber).toFixed(2) }%;\n margin-right: ${ (5 / cardNumber).toFixed(2) }%;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.CARD } img {\n width: 100%;\n }\n\n .${ CLASS.FUNDINGICONS } .${ CLASS.CARD } {\n height: ${ perc(buttonHeight, 70) }px;\n margin-top: ${ perc(buttonHeight, 15) }px;\n margin-left: ${ perc(buttonHeight, 7) }px;\n margin-right: ${ perc(buttonHeight, 7) }px;\n }\n\n .${ CLASS.FUNDINGICONS } .${ CLASS.CARD } img {\n height: 100%;\n }\n }\n\n @media only screen and (min-width: ${ style.minWidth }px) and (max-width: ${ minDualWidth }px) {\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.NUMBER }-0 {\n width: 100%;\n margin-right: 0;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.NUMBER }-1 {\n display: none;\n }\n\n .${ CLASS.CONTAINER }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE } .${ CLASS.TAGLINE } {\n display: none;\n }\n }\n\n @media only screen and (min-width: ${ max(style.minWidth, minDualWidth) }px) {\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.NUMBER }-0 {\n display: inline-block;\n width: calc(50% - 2px);\n margin-right: 4px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.NUMBER }-1 {\n display: inline-block;\n width: calc(50% - 2px);\n }\n\n .${ CLASS.CONTAINER }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE } .${ CLASS.TAGLINE } {\n display: block;\n }\n }\n `;\n\n }).join('\\n');\n}\n","/* @flow */\n\nimport { BUTTON_COLOR } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const buttonColorStyle = `\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.GOLD } {\n background: #ffc439;\n color: #111;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.BLUE } {\n background: #009cde;\n color: #fff;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.SILVER } {\n background: #eee;\n color: #111;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.BLACK } {\n background: #2C2E2F;\n color: #fff;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.DARKBLUE } {\n background: #003087;\n color: #fff;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.TRANSPARENT } {\n background: transparent;\n color: #111;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.WHITE } {\n background: #fff;\n color: #2C2E2F;\n border: 1px solid #2C2E2F;\n }\n`;\n","/* @flow */\n/* eslint max-lines: off */\n\nexport const componentContent = {\n 'AD': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'AE': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n },\n 'ar': {\n 'checkout': 'السداد بواسطة {logo:pp} {logo:paypal}',\n 'safer_tag': 'الطريقة الأسهل والأكثر أماناً في الدفع',\n 'later_tag': 'اشترِ الآن، وسدّد على دفعات',\n 'pay': 'دفع بواسطة {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} شراء الآن',\n 'poweredBy': 'مدعوم من {logo:paypal}'\n }\n },\n 'AG': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'AI': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'AL': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'AM': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'AN': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'AO': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'AR': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'AT': {\n 'de': {\n 'checkout': 'Direkt zu {logo:pp} {logo:paypal}',\n 'safer_tag': 'Einfach schneller und sicherer bezahlen',\n 'later_tag': 'Kaufen Sie jetzt und bezahlen Sie nach und nach.',\n 'pay': 'Mit {logo:paypal} zahlen',\n 'buynow': '{logo:pp} {logo:paypal} Jetzt kaufen',\n 'poweredBy': 'Abgewickelt durch {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'AU': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'AW': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'AZ': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'BA': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'BB': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'BE': {\n 'en': {\n 'checkout': 'Pay with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, faster way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'nl': {\n 'checkout': 'Betalen met {logo:pp} {logo:paypal}',\n 'safer_tag': 'De veiligere en snellere manier om te betalen.',\n 'later_tag': 'Koop nu. Betaal later.',\n 'pay': 'Betalen met {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Nu kopen',\n 'poweredBy': 'Mogelijk gemaakt door {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Le réflexe sécurité pour payer',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n }\n },\n 'BF': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'BG': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'BH': {\n 'ar': {\n 'checkout': 'السداد بواسطة {logo:pp} {logo:paypal}',\n 'safer_tag': 'الطريقة الأسهل والأكثر أماناً في الدفع',\n 'later_tag': 'اشترِ الآن، وسدّد على دفعات',\n 'pay': 'دفع بواسطة {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} شراء الآن',\n 'poweredBy': 'مدعوم من {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'BI': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'BJ': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'BM': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'BN': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'BO': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'BR': {\n 'pt': {\n 'checkout': '{logo:pp} {logo:paypal} Finalizar',\n 'safer_tag': 'A maneira fácil e segura de pagar.',\n 'later_tag': 'Compre agora e pague depois.',\n 'pay': 'Pague com {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar agora',\n 'installment': '{logo:pp} {logo:paypal} Pagamentos
parcelados',\n 'installment_period': '{logo:pp} {logo:paypal} Pague em at\\u00e9
[installmentperiod]x sem juros',\n 'poweredBy': 'Com tecnologia {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'installment': '{logo:pp} {logo:paypal} Interest free
payments',\n 'installment_period': '{logo:pp} {logo:paypal} Pay up to [installmentperiod]x
without interest',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'BS': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'BT': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'BW': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'BY': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'BZ': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'C2': {\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式。',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay.',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'CA': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': '{logo:pp} {logo:paypal} Payer',\n 'safer_tag': 'Votre réflexe sécurité pour payer',\n 'later_tag': 'Acheter. Payer plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n }\n },\n 'CD': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'CG': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'CH': {\n 'de': {\n 'checkout': 'Direkt zu {logo:pp} {logo:paypal}',\n 'safer_tag': 'Einfach schneller und sicherer bezahlen',\n 'later_tag': 'Kaufen Sie jetzt und bezahlen Sie nach und nach.',\n 'pay': 'Mit {logo:paypal} zahlen',\n 'buynow': '{logo:pp} {logo:paypal} Jetzt kaufen',\n 'poweredBy': 'Abgewickelt durch {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Le réflexe sécurité pour payer',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'CI': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'CK': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'CL': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'CM': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'CN': {\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'CO': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'CR': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'CV': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'CY': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'CZ': {\n 'cs': {\n 'checkout': 'Zaplatit přes {logo:pp} {logo:paypal}',\n 'safer_tag': 'Jednodušší a bezpečnější způsob placení',\n 'later_tag': 'Nakupujte nyní, plaťte později.',\n 'pay': 'Zaplatit přes {logo: paypal}',\n 'buynow': 'Koupit ihned přes {logo:pp} {logo:paypal}',\n 'poweredBy': 'Využívá službu {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'DE': {\n 'de': {\n 'checkout': 'Direkt zu {logo:pp} {logo:paypal}',\n 'safer_tag': 'Überall schnell und sicher bezahlen.',\n 'later_tag': 'Jetzt bei uns bequem in Raten zahlen.',\n 'pay': 'Mit {logo:paypal} zahlen',\n 'buynow': '{logo:pp} {logo:paypal} Jetzt kaufen',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'DJ': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'DK': {\n 'da': {\n 'checkout': '{logo:pp} {logo:paypal} Betal',\n 'safer_tag': 'Betal nemt og sikkert',\n 'later_tag': 'Køb nu, betal senere.',\n 'pay': 'Betal med {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Køb nu',\n 'poweredBy': 'Leveret af {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'DM': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'DO': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'DZ': {\n 'ar': {\n 'checkout': 'السداد بواسطة {logo:pp} {logo:paypal}',\n 'safer_tag': 'الطريقة الأسهل والأكثر أماناً في الدفع',\n 'later_tag': 'اشترِ الآن، وسدّد على دفعات',\n 'pay': 'دفع بواسطة {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} شراء الآن',\n 'poweredBy': 'مدعوم من {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'EC': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'EE': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'ru': {\n 'checkout': 'Оформить заказ через {logo:pp} {logo:paypal}',\n 'safer_tag': 'Более безопасный и простой способ оплаты.',\n 'later_tag': 'Покупайте сейчас, платите потом.',\n 'pay': 'Оплатить через {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Купить сейчас',\n 'poweredBy': 'Обработано {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'EG': {\n 'ar': {\n 'checkout': 'السداد بواسطة {logo:pp} {logo:paypal}',\n 'safer_tag': 'الطريقة الأسهل والأكثر أماناً في الدفع',\n 'later_tag': 'اشترِ الآن، وسدّد على دفعات',\n 'pay': 'دفع بواسطة {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} شراء الآن',\n 'poweredBy': 'مدعوم من {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'ER': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'ES': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Tecnología de {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'ET': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'FI': {\n 'fi': {\n 'checkout': '{logo:pp} {logo:paypal}-maksu',\n 'safer_tag': 'Turvallisempi ja helpompi maksutapa',\n 'later_tag': 'Osta nyt. Maksa vähitellen.',\n 'pay': '{logo:paypal}-maksu',\n 'buynow': '{logo:pp} {logo:paypal} Osta nyt',\n 'poweredBy': 'Palvelun tarjoaa {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'FJ': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'FK': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'FM': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'FO': {\n 'da': {\n 'checkout': 'Betal med {logo:pp} {logo:paypal}',\n 'safer_tag': 'Betal nemt og sikkert',\n 'later_tag': 'Køb nu, betal senere.',\n 'pay': 'Betal med {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Køb nu',\n 'poweredBy': 'Leveret af {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'FR': {\n 'fr': {\n 'checkout': '{logo:pp} {logo:paypal} Payer',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Pay',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'GA': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'GB': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'GD': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'GE': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'GF': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'GI': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'GL': {\n 'da': {\n 'checkout': 'Betal med {logo:pp} {logo:paypal}',\n 'safer_tag': 'Betal nemt og sikkert',\n 'later_tag': 'Køb nu, betal senere.',\n 'pay': 'Betal med {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Køb nu',\n 'poweredBy': 'Leveret af {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'GM': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'GN': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'GP': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'GR': {\n 'el': {\n 'checkout': 'Ολοκλήρωση αγοράς μέσω {logo:pp} {logo:paypal}',\n 'safer_tag': 'Ο ασφαλέστερος και ευκολότερος τρόπος πληρωμής',\n 'later_tag': 'Αγοράστε τώρα. Πληρώστε σε δόσεις.',\n 'pay': 'Πληρωμή μέσω {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Αγορά τώρα',\n 'poweredBy': 'Με την υποστήριξη του {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'GT': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'GW': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'GY': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'HK': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal} 結帳',\n 'safer_tag': '更安全、更方便的付款方式',\n 'later_tag': '先購買,後付款。',\n 'pay': '使用 {logo:paypal} 付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即買',\n 'poweredBy': '支援方: {logo:paypal}'\n }\n },\n 'HN': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'HR': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'HU': {\n 'hu': {\n 'checkout': '{logo:pp} {logo:paypal}-fizetés',\n 'safer_tag': 'Biztonságosabb, könnyebb fizetési mód.',\n 'later_tag': 'Vásároljon most. Fizessen később.',\n 'pay': '{logo:paypal}-fizetés',\n 'buynow': '{logo:pp} {logo:paypal} Vásárlás',\n 'poweredBy': 'Üzemeltető: {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'ID': {\n 'id': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'Cara yang lebih mudah dan aman untuk membayar.',\n 'later_tag': 'Beli Sekarang. Bayar dalam Jangka Waktu Tertentu.',\n 'pay': 'Bayar dengan {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Beli Sekarang',\n 'poweredBy': 'Ditunjang teknologi {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'IE': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'IL': {\n 'he': {\n 'checkout': '{logo:pp} {logo:paypal} שלם',\n 'safer_tag': '.הדרך הקלה והבטוחה יותר לשלם',\n 'later_tag': 'קנה עכשיו. שלם לאורך זמן.',\n 'pay': 'שלם באמצעות {logo:paypal}‏',\n 'buynow': '{logo:pp} {logo:paypal} קנה עכשיו',\n 'poweredBy': '{logo:paypal} מופעל על-ידי'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'IN': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay.',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'IS': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'IT': {\n 'it': {\n 'checkout': '{logo:pp} {logo:paypal} Paga adesso',\n 'safer_tag': 'Il modo rapido e sicuro per pagare',\n 'later_tag': 'Acquista ora. Paga più tardi.',\n 'pay': 'Paga con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Paga adesso',\n 'poweredBy': 'Con tecnologia {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'JM': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'JO': {\n 'ar': {\n 'checkout': 'السداد بواسطة {logo:pp} {logo:paypal}',\n 'safer_tag': 'الطريقة الأسهل والأكثر أماناً في الدفع',\n 'later_tag': 'اشترِ الآن، وسدّد على دفعات',\n 'pay': 'دفع بواسطة {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} شراء الآن',\n 'poweredBy': 'مدعوم من {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'JP': {\n 'ja': {\n 'checkout': '{logo:pp} {logo:paypal}で支払う',\n 'safer_tag': 'より安全・簡単にお支払い',\n 'later_tag': '今すぐ購入して、分割してお支払い。',\n 'pay': '{logo:paypal}で支払う',\n 'buynow': '{logo:pp} {logo:paypal} 購入',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'KE': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'KG': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'KH': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'KI': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'KM': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'KN': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'KR': {\n 'ko': {\n 'checkout': '{logo:pp} {logo:paypal} 체크 아웃',\n 'safer_tag': '더 안전하고 빠른 결제 방법',\n 'later_tag': '지금 구매하고 천천히 결제하세요.',\n 'pay': '{logo:paypal}로 지불하기',\n 'buynow': '{logo:pp} {logo:paypal} 바로 구매',\n 'poweredBy': '제공: {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay.',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'KW': {\n 'ar': {\n 'checkout': 'السداد بواسطة {logo:pp} {logo:paypal}',\n 'safer_tag': 'الطريقة الأسهل والأكثر أماناً في الدفع',\n 'later_tag': 'اشترِ الآن، وسدّد على دفعات',\n 'pay': 'دفع بواسطة {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} شراء الآن',\n 'poweredBy': 'مدعوم من {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'KY': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'KZ': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'LA': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'LC': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'LI': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'LK': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'LS': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'LT': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'ru': {\n 'checkout': 'Оформить заказ через {logo:pp} {logo:paypal}',\n 'safer_tag': 'Более безопасный и простой способ оплаты.',\n 'later_tag': 'Покупайте сейчас, платите потом.',\n 'pay': 'Оплатить через {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Купить сейчас',\n 'poweredBy': 'Обработано {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'LU': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'de': {\n 'checkout': 'Direkt zu {logo:pp} {logo:paypal}',\n 'safer_tag': 'Einfach schneller und sicherer bezahlen',\n 'later_tag': 'Kaufen Sie jetzt und bezahlen Sie nach und nach.',\n 'pay': 'Mit {logo:paypal} zahlen',\n 'buynow': '{logo:pp} {logo:paypal} Jetzt kaufen',\n 'poweredBy': 'Abgewickelt durch {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'LV': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'ru': {\n 'checkout': 'Оформить заказ через {logo:pp} {logo:paypal}',\n 'safer_tag': 'Более безопасный и простой способ оплаты.',\n 'later_tag': 'Покупайте сейчас, платите потом.',\n 'pay': 'Оплатить через {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Купить сейчас',\n 'poweredBy': 'Обработано {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'MA': {\n 'ar': {\n 'checkout': 'السداد بواسطة {logo:pp} {logo:paypal}',\n 'safer_tag': 'الطريقة الأسهل والأكثر أماناً في الدفع',\n 'later_tag': 'اشترِ الآن، وسدّد على دفعات',\n 'pay': 'دفع بواسطة {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} شراء الآن',\n 'poweredBy': 'مدعوم من {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'MC': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'MD': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'ME': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'MG': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'MH': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'MK': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'ML': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'MN': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'MQ': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'MR': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'MS': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'MT': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'MU': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'MV': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'MW': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'MX': {\n 'es': {\n 'checkout': 'Pagar con {logo:pp} {logo:paypal}',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'installment': '{logo:pp} {logo:paypal} Pagos en
mensualidades',\n 'installment_period': '{logo:pp} {logo:paypal} Pague hasta en
[installmentperiod] mensualidades',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, faster way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'installment': '{logo:pp} {logo:paypal} Interest free
payments',\n 'installment_period': '{logo:pp} {logo:paypal} Pay up to [installmentperiod]x
without interest',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'MY': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay.',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'MZ': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'NA': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'NC': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'NE': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'NF': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'NG': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'NI': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'NL': {\n 'nl': {\n 'checkout': '{logo:pp} {logo:paypal} Betalen',\n 'safer_tag': 'Een veilige en makkelijke manier om te betalen.',\n 'later_tag': 'Koop nu. Betaal later.',\n 'pay': 'Betalen met {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Nu kopen',\n 'poweredBy': 'Mogelijk gemaakt door {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'NO': {\n 'no': {\n 'checkout': '{logo:pp} {logo:paypal} Betal',\n 'safer_tag': 'En trygg og enkel betalingsmetode',\n 'later_tag': 'Kjøp nå, betal senere.',\n 'pay': 'Betal med {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Kjøp nå',\n 'poweredBy': 'Leveres av {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'NP': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'NR': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'NU': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'NZ': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay.',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': '{logo:pp} {logo:paypal} Payer',\n 'safer_tag': 'Un réflexe sécurité.',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar.',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式。',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'OM': {\n 'ar': {\n 'checkout': 'السداد بواسطة {logo:pp} {logo:paypal}',\n 'safer_tag': 'الطريقة الأسهل والأكثر أماناً في الدفع',\n 'later_tag': 'اشترِ الآن، وسدّد على دفعات',\n 'pay': 'دفع بواسطة {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} شراء الآن',\n 'poweredBy': 'مدعوم من {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'PA': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'PE': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'PF': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'PG': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'PH': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay.',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'PL': {\n 'pl': {\n 'checkout': '{logo:pp} {logo:paypal} Do kasy',\n 'safer_tag': 'Płać wygodnie i bezpiecznie',\n 'later_tag': 'Kup teraz. Płać w ratach',\n 'pay': 'Zapłać z {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Kup teraz',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'PM': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'PN': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'PT': {\n 'pt': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A forma rápida e segura de pagar',\n 'later_tag': 'Compre agora. Vá pagando.',\n 'pay': 'Pagar com {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar agora',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'PW': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'PY': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'QA': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n },\n 'ar': {\n 'checkout': 'السداد بواسطة {logo:pp} {logo:paypal}',\n 'safer_tag': 'الطريقة الأسهل والأكثر أماناً في الدفع',\n 'later_tag': 'اشترِ الآن، وسدّد على دفعات',\n 'pay': 'دفع بواسطة {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} شراء الآن',\n 'poweredBy': 'مدعوم من {logo:paypal}'\n }\n },\n 'RE': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'RO': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'RS': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'RU': {\n 'ru': {\n 'checkout': '{logo:pp} {logo:paypal} Оформить покупку',\n 'safer_tag': 'Более безопасный и простой способ оплаты.',\n 'later_tag': 'Покупайте сейчас, платите потом.',\n 'pay': 'Оплатить через {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Купить сейчас',\n 'poweredBy': 'Обработано {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'RW': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SA': {\n 'ar': {\n 'checkout': 'السداد بواسطة {logo:pp} {logo:paypal}',\n 'safer_tag': 'الطريقة الأسهل والأكثر أماناً في الدفع',\n 'later_tag': 'اشترِ الآن، وسدّد على دفعات',\n 'pay': 'دفع بواسطة {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} شراء الآن',\n 'poweredBy': 'مدعوم من {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SB': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SC': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SE': {\n 'sv': {\n 'checkout': '{logo:pp} {logo:paypal} Betala',\n 'safer_tag': 'Ett tryggt och smidigt sätt att betala',\n 'later_tag': 'Köp nu, betala senare',\n 'pay': 'Betala med {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Köp nu',\n 'poweredBy': 'Tillhandahålls av {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'SG': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay.',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'SH': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SI': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SJ': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SK': {\n 'sk': {\n 'checkout': 'Zaplatiť cez {logo:pp} {logo:paypal}',\n 'safer_tag': 'Jednoduchší a bezpečnejší spôsob platby',\n 'later_tag': 'Nakúpte teraz, zaplaťte postupne',\n 'pay': 'Zaplatiť cez {logo: paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Kúpiť',\n 'poweredBy': 'Používa technológiu {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SL': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SM': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SN': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SO': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SR': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'ST': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SV': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'SZ': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'TC': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'TD': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'TG': {\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'TH': {\n 'th': {\n 'checkout': '{logo:pp} {logo:paypal} ชำระเงิน',\n 'safer_tag': 'วิธีชำระเงินที่ปลอดภัยและง่ายกว่า',\n 'later_tag': 'ซื้อวันนี้ แล้วค่อยๆ จ่ายทีหลัง',\n 'pay': 'ชำระเงินด้วย {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} ซื้อทันที',\n 'poweredBy': 'ให้บริการโดย {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'TJ': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'TM': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'TN': {\n 'ar': {\n 'checkout': 'السداد بواسطة {logo:pp} {logo:paypal}',\n 'safer_tag': 'الطريقة الأسهل والأكثر أماناً في الدفع',\n 'later_tag': 'اشترِ الآن، وسدّد على دفعات',\n 'pay': 'دفع بواسطة {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} شراء الآن',\n 'poweredBy': 'مدعوم من {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'TO': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'TR': {\n 'tr': {\n 'checkout': '{logo:pp} {logo:paypal} ile Satın Alın',\n 'safer_tag': 'Ödeme yapmanın daha güvenli ve kolay yolu',\n 'later_tag': 'Şimdi Alın. Daha Sonra Ödeyin.',\n 'pay': '{logo:paypal} ile Öde',\n 'buynow': '{logo:pp} {logo:paypal} Hemen Satın Alın',\n 'poweredBy': 'Çalıştıran {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'TT': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'TV': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'TW': {\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal} 結帳',\n 'safer_tag': '更安全、更方便的付款方式',\n 'later_tag': '先購買,後付款。',\n 'pay': '使用 {logo:paypal} 付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即購',\n 'poweredBy': '服務提供者: {logo:paypal}'\n },\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'TZ': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'UA': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'ru': {\n 'checkout': 'Оформить заказ через {logo:pp} {logo:paypal}',\n 'safer_tag': 'Более безопасный и простой способ оплаты.',\n 'later_tag': 'Покупайте сейчас, платите потом.',\n 'pay': 'Оплатить через {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Купить сейчас',\n 'poweredBy': 'Обработано {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'UG': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'US': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'dual_tag': 'Two easy ways to pay',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': '{logo:pp} {logo:paypal} Payer',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': 'Pagar con {logo:pp} {logo:paypal}',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '使用{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'UY': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'VA': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'VC': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'VE': {\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'VG': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'VN': {\n 'en': {\n 'checkout': '{logo:pp} {logo:paypal} Checkout',\n 'safer_tag': 'A safer, faster way to pay.',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'VU': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'WF': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'WS': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n },\n 'YE': {\n 'ar': {\n 'checkout': 'السداد بواسطة {logo:pp} {logo:paypal}',\n 'safer_tag': 'الطريقة الأسهل والأكثر أماناً في الدفع',\n 'later_tag': 'اشترِ الآن، وسدّد على دفعات',\n 'pay': 'دفع بواسطة {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} شراء الآن',\n 'poweredBy': 'مدعوم من {logo:paypal}'\n },\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'YT': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'ZA': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'ZM': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n },\n 'fr': {\n 'checkout': 'Payer avec {logo:pp} {logo:paypal}',\n 'safer_tag': 'Votre réflexe sécurité pour payer en ligne',\n 'later_tag': 'Achetez maintenant et payez plus tard.',\n 'pay': 'Payer avec {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Acheter',\n 'poweredBy': 'Optimisé par {logo:paypal}'\n },\n 'es': {\n 'checkout': '{logo:pp} {logo:paypal} Pagar',\n 'safer_tag': 'La forma rápida y segura de pagar',\n 'later_tag': 'Compre ahora y pague más adelante.',\n 'pay': 'Pagar con {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Comprar ahora',\n 'poweredBy': 'Desarrollado por {logo:paypal}'\n },\n 'zh': {\n 'checkout': '{logo:pp} {logo:paypal}结账',\n 'safer_tag': '更安全、更便捷的付款方式',\n 'later_tag': '立即购买,分期付款。',\n 'pay': '用{logo:paypal}付款',\n 'buynow': '{logo:pp} {logo:paypal} 立即购买',\n 'poweredBy': '技术支持提供方: {logo:paypal}'\n }\n },\n 'ZW': {\n 'en': {\n 'checkout': 'Check out with {logo:pp} {logo:paypal}',\n 'safer_tag': 'The safer, easier way to pay',\n 'later_tag': 'Buy Now. Pay Over Time.',\n 'pay': 'Pay with {logo:paypal}',\n 'buynow': '{logo:pp} {logo:paypal} Buy Now',\n 'poweredBy': 'Powered by {logo:paypal}'\n }\n }\n};\n","// eslint-disable-line max-lines\n/* @flow */\n/** @jsx jsxToHTML */\n\nimport { base64encode } from 'belter/src';\n\nimport { BUTTON_SIZE, BUTTON_BRANDING, BUTTON_NUMBER, BUTTON_LOGO_COLOR, BUTTON_LABEL, BUTTON_LAYOUT, ENV, ATTRIBUTE, FUNDING } from '../../constants';\nimport { getButtonConfig, labelToFunding, fundingToDefaultLabel } from '../config';\nimport { normalizeProps } from '../props';\nimport { jsxToHTML, type JsxHTMLNode, type ChildType, jsxRender } from '../../lib/jsx';\nimport { fundingLogos, cardLogos } from '../../resources';\nimport { validateButtonProps } from '../validate';\nimport type { LocaleType, FundingSource, FundingSelection, FundingList, CheckoutCustomizationType } from '../../types';\n\nimport { Tagline, Beacon } from './miscComponent';\nimport { componentStyle, CLASS } from './componentStyle';\nimport { getComponentScript } from './componentScript';\nimport { componentContent } from './content';\n\nconst allowedPersonalizationLabels = [ BUTTON_LABEL.CHECKOUT, BUTTON_LABEL.BUYNOW, BUTTON_LABEL.PAY ];\n\nfunction getCommonButtonClasses({ layout, shape, branding, multiple, env }) : string {\n return [\n `${ CLASS.LAYOUT }-${ layout }`,\n `${ CLASS.SHAPE }-${ shape }`,\n `${ CLASS.BRANDING }-${ branding ? BUTTON_BRANDING.BRANDED : BUTTON_BRANDING.UNBRANDED }`,\n `${ CLASS.NUMBER }-${ multiple ? BUTTON_NUMBER.MULTIPLE : BUTTON_NUMBER.SINGLE }`,\n `${ CLASS.ENV }-${ env }`,\n `${ CLASS.SHOULD_FOCUS }`\n ].join(' ');\n}\n\nfunction getButtonClasses({ label, color, logoColor }) : string {\n return [\n `${ CLASS.LABEL }-${ label }`,\n `${ CLASS.COLOR }-${ color }`,\n `${ CLASS.LOGO_COLOR }-${ logoColor }`\n ].join(' ');\n}\n\nfunction getLocaleContent(locale : LocaleType) : Object {\n const { country, lang } = locale;\n return componentContent[country][lang];\n}\n\nfunction determineLabel({ label, source, multiple, layout } : { label : $Values, source : FundingSource, multiple : boolean, layout : $Values }) : $Values {\n\n const defaultLabel = fundingToDefaultLabel(source);\n const labelMatchesFunding = (labelToFunding(label) === source);\n\n // If chosen label is not for this funding source, display the default label\n if (!labelMatchesFunding) {\n return defaultLabel;\n }\n\n // If there are multiple horizontal buttons, display the default label\n if (multiple && layout === BUTTON_LAYOUT.HORIZONTAL) {\n return defaultLabel;\n }\n\n return label;\n}\n\nfunction determineButtons({ label, color, sources, multiple, layout } : { label : $Values, color : string, sources : FundingList, multiple : boolean, layout : $Values }) :\n $ReadOnlyArray<{ label : $Values, color : string, source : FundingSource }> {\n\n return sources.map((source, i) => {\n\n const buttonLabel = determineLabel({ label, source, multiple, layout });\n\n const buttonColor = (multiple && i > 0)\n ? getButtonConfig(buttonLabel, 'secondaryColors')[color]\n : color;\n\n return {\n source,\n label: buttonLabel,\n color: buttonColor\n };\n });\n}\n\nfunction renderCards({ cards, layout, size } :\n { cards : $ReadOnlyArray, layout? : string, size? : string }) : $ReadOnlyArray {\n return cards.map(name => {\n const logo = cardLogos[name];\n\n return (\n \n \n
\n );\n });\n}\n\nfunction renderFundingIcons({ cards, fundingicons, size, layout } :\n { cards : $ReadOnlyArray, fundingicons : boolean, layout : string, size : string }) : ?JsxHTMLNode {\n\n if (!fundingicons) {\n return;\n }\n\n return
{ renderCards({ cards, size, layout }) }
;\n}\n\nfunction renderPersonalizationButtonText(text) : JsxHTMLNode {\n const className = `${ CLASS.TEXT } ${ CLASS.PERSONALIZATION_TEXT }`;\n return { text };\n}\n\nfunction getButtonTextAnimationStyle({ personalizedButtonText, branding, allowedAnimation }) : ?JsxHTMLNode {\n if (__TEST__) {\n return null;\n }\n \n if (!branding) {\n return;\n }\n \n if (!allowedAnimation) {\n return;\n }\n \n const MIN_WIDTH = 300;\n const LABEL_DURATION = 1;\n const PERSONALIZATION_DURATION = 5;\n const DELAY = 0;\n \n const COMPRESSED = `\n max-width: 0%;\n opacity: 0;\n `;\n \n const EXPANDED = `\n max-width: 100%;\n opacity: 1;\n `;\n \n const HIDDEN = `\n position: absolute;\n visibility: hidden;\n `;\n \n const VISIBLE = `\n position: static;\n visibility: visible;\n `;\n \n const DOM_READY = '.dom-ready';\n const PAYPAL_BUTTON = `.${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.PAYPAL }]`;\n \n const PAYPAL_LOGO = `${ PAYPAL_BUTTON } .${ CLASS.LOGO }.${ CLASS.LOGO }-${ FUNDING.PAYPAL }`;\n const BUTTON_TEXT = `${ PAYPAL_BUTTON } .${ CLASS.TEXT }:not(.personalization-text)`;\n const PERSONALIZATION_TEXT = `${ PAYPAL_BUTTON } .personalization-text`;\n \n return (\n \n {outlet}\n \n );\n}\n","\n/* @flow */\n\nimport { track, flush as flushLogs } from 'beaver-logger/client';\n\nimport { Checkout } from '../checkout';\nimport { setupPopupBridgeProxy } from '../integrations/popupBridge';\nimport { getPageRenderTime, setLogLevel } from '../lib';\nimport { ATTRIBUTE, FUNDING, FPTI, BUTTON_LAYOUT, BUTTON_COLOR, BUTTON_SIZE, BUTTON_SHAPE, BUTTON_LABEL } from '../constants';\n\nimport typeof { Button } from './component';\n\nexport function setupButtonChild(ButtonComponent : Button) {\n setupPopupBridgeProxy(Checkout, ButtonComponent);\n\n getPageRenderTime().then(pageRenderTime => {\n\n const fundingSources = Array.prototype.slice.call(document.querySelectorAll(`[${ ATTRIBUTE.FUNDING_SOURCE }]`)).map(el => {\n return el.getAttribute(ATTRIBUTE.CARD) || el.getAttribute(ATTRIBUTE.FUNDING_SOURCE);\n }).filter(source => {\n return source && source !== FUNDING.CARD;\n });\n\n const xprops = ButtonComponent.xprops;\n \n if (!xprops) {\n return;\n }\n\n const {\n layout = BUTTON_LAYOUT.HORIZONTAL,\n color = BUTTON_COLOR.GOLD,\n size = BUTTON_SIZE.SMALL,\n shape = BUTTON_SHAPE.PILL,\n label = BUTTON_LABEL.CHECKOUT,\n maxbuttons,\n tagline\n } = (xprops.style || {});\n\n track({\n [FPTI.KEY.STATE]: FPTI.STATE.BUTTON,\n [FPTI.KEY.TRANSITION]: FPTI.TRANSITION.BUTTON_LOAD,\n [FPTI.KEY.BUTTON_TYPE]: FPTI.BUTTON_TYPE.IFRAME,\n [FPTI.KEY.FUNDING_LIST]: fundingSources.join(':'),\n [FPTI.KEY.FUNDING_COUNT]: fundingSources.length,\n [FPTI.KEY.PAGE_LOAD_TIME]: pageRenderTime,\n [FPTI.KEY.BUTTON_LAYOUT]: layout,\n [FPTI.KEY.BUTTON_COLOR]: color,\n [FPTI.KEY.BUTTON_SIZE]: size,\n [FPTI.KEY.BUTTON_SHAPE]: shape,\n [FPTI.KEY.BUTTON_LABEL]: label,\n [FPTI.KEY.BUTTON_WIDTH]: window.innerWidth,\n [FPTI.KEY.MAX_BUTTONS]: maxbuttons,\n [FPTI.KEY.BUTTON_TAGLINE_ENABLED]: tagline ? '1' : '0'\n });\n\n flushLogs();\n });\n\n const xprops = ButtonComponent.xprops || Checkout.xprops;\n\n if (xprops && xprops.logLevel) {\n setLogLevel(xprops.logLevel);\n }\n\n // $FlowFixMe\n if (xprops.payment && !xprops.createOrder) {\n // $FlowFixMe\n xprops.createOrder = xprops.payment;\n }\n\n // $FlowFixMe\n if (xprops.onAuthorize && !xprops.onApprove) {\n // $FlowFixMe\n xprops.onApprove = xprops.onAuthorize;\n }\n\n try {\n if (xprops && xprops.onShippingChange && window.pre &&\n window.pre.inlineGuest && window.pre.inlineGuest.res &&\n window.pre.inlineGuest.res.data && window.pre.inlineGuest.res.data.treatments) {\n window.pre.inlineGuest.res.data.treatments = [];\n }\n } catch (err) {\n // pass\n }\n}\n","/* @flow */\n\nimport { info, warn, flush as flushLogs } from 'beaver-logger/client';\nimport { CONSTANTS } from 'zoid/src';\nimport { getParent, getTop } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { config } from './config';\nimport { noop, isIE, getDomainSetting, extendUrl, patchMethod, once, extend } from './lib';\nimport { Button } from './button';\nimport { Checkout } from './checkout';\nimport { BUTTON_LABEL, BUTTON_SIZE, BUTTON_COLOR } from './constants';\nimport { rest } from './api';\n\nif (isIE() && getDomainSetting('ie_full_page')) {\n // $FlowFixMe\n Checkout.renderTo = (win) => {\n info('force_ie_full_page');\n flushLogs();\n\n // $FlowFixMe\n const checkout = Checkout.init({\n onAuthorize: noop\n });\n\n checkout.delegate(win);\n\n checkout.openContainer().then(() => {\n checkout.event.triggerOnce(CONSTANTS.EVENTS.CLOSE);\n checkout.showContainer();\n });\n\n // $FlowFixMe\n Button.xprops.payment().then(token => {\n window.top.location = extendUrl(config.checkoutUrl, { token });\n }).catch(err => {\n checkout.error(err);\n });\n };\n}\n\nconst parent = getParent(window);\nconst top = getTop(window);\n\nif (top && parent) {\n let canRenderTop = (top === parent);\n\n if (!canRenderTop) {\n Checkout.canRenderTo(top).then(result => {\n canRenderTop = result;\n });\n\n patchMethod(Checkout, 'renderTo', ({ args: [ win, props, el ], original, context }) => {\n\n if (!canRenderTop) {\n win = getParent(window);\n }\n\n return original.call(context, win, props, el);\n });\n }\n}\n\npatchMethod(Checkout, 'renderTo', ({ callOriginal, args: [ , props ] }) => {\n if (getDomainSetting('allow_full_page_fallback')) {\n const handleError = once((err) => {\n try {\n // eslint-disable-next-line no-console\n console.error(err && err.stack);\n } catch (err2) {\n // pass\n }\n\n // $FlowFixMe\n return Button.xprops.payment().then(token => {\n window.top.location = extendUrl(config.checkoutUrl, { token });\n });\n });\n\n props.onError = handleError;\n return callOriginal().catch(handleError);\n }\n return callOriginal();\n});\n\nlet debounce = false;\n\npatchMethod(Checkout, 'renderTo', ({ callOriginal, args: [ , props ] }) => {\n\n if (debounce) {\n warn('button_mutliple_click_debounce');\n return new ZalgoPromise(noop);\n }\n\n debounce = true;\n\n for (const methodName of [ 'onAuthorize', 'onCancel', 'onError', 'onClose' ]) {\n const original = props[methodName];\n props[methodName] = function unDebounce() : mixed {\n debounce = false;\n if (original) {\n return original.apply(this, arguments);\n }\n };\n }\n\n return callOriginal();\n});\n\npatchMethod(rest.payment, 'create', ({ original: createOriginal, context: createContext, args: [ env, client, options, experience ] }) => {\n if (!options.payment) {\n options = { payment: options, experience };\n }\n return createOriginal.call(createContext, env, client, options);\n});\n\npatchMethod(Button.props.style, 'validate', ({ callOriginal, args: [ style ] }) => {\n\n if (!style) {\n return callOriginal();\n }\n\n if (style && style.color === 'creditblue') {\n style.color = BUTTON_COLOR.DARKBLUE;\n }\n\n if (style && style.label === 'generic') {\n style.label = BUTTON_LABEL.PAYPAL;\n }\n\n if (style && (!style.label || style.label === BUTTON_LABEL.CHECKOUT) && style.size === 'tiny') {\n warn(`unsupported_button_size_tiny`);\n style.size = BUTTON_SIZE.SMALL;\n }\n\n return callOriginal();\n});\n\npatchMethod(Button, 'render', ({ callOriginal, args: [ props ] }) => {\n\n if (props.billingAgreement) {\n props.payment = props.billingAgreement;\n delete props.billingAgreement;\n }\n\n return callOriginal();\n});\n\npatchMethod(Button.props.payment, 'decorate', ({ original, context, args: [ originalPayment ] }) => {\n return original.call(context, function payment(data : Object, actions : Object) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n patchMethod(actions.payment, 'create', ({ original: createOriginal, context: createContext, args: [ options, experience ] }) => {\n if (!options.payment) {\n options = { payment: options, experience };\n }\n return createOriginal.call(createContext, options);\n });\n\n function resolveData(token) {\n resolve(token);\n }\n\n function rejectActions(err) {\n reject(err);\n }\n\n extend(resolveData, data);\n extend(resolveData, actions);\n extend(rejectActions, actions);\n\n const ctx = {\n props: {\n env: this.props.env,\n client: this.props.client\n }\n };\n\n let result;\n\n try {\n result = originalPayment.call(ctx, resolveData, rejectActions);\n } catch (err) {\n return reject(err);\n }\n\n if (result && typeof result.then === 'function') {\n return result.then(resolve, reject);\n }\n\n if (result !== undefined) {\n return resolve(result);\n }\n });\n });\n});\n\nif (Button.isChild()) {\n if (!window.Promise) {\n window.Promise = ZalgoPromise;\n }\n}\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { create } from 'zoid/src';\nimport { type Component } from 'zoid/src/component/component';\nimport type { CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { base64encode } from 'belter/src';\n\nimport { config } from '../config';\nimport { getButtonSessionID, getBrowserLocale, getSessionID, getCurrentScriptUrl } from '../lib';\n\ntype CardOptions = {|\n client : {\n [string] : (string | ZalgoPromise)\n },\n env? : string,\n locale? : string,\n logLevel : string,\n awaitPopupBridge : Function,\n onAuthorize : ({ returnUrl : string }, { redirect : (?CrossDomainWindowType, ?string) => ZalgoPromise }) => ?ZalgoPromise,\n onCancel? : ({ cancelUrl : string }, { redirect : (?CrossDomainWindowType, ?string) => ZalgoPromise }) => ?ZalgoPromise,\n onEvent? : ({ type : string, payload : Object }) => void,\n meta : Object,\n commit : boolean,\n token : string\n|};\n\nexport const Card : Component = create({\n tag: 'card-fields',\n name: 'ppcard',\n\n buildUrl(props) : string {\n const env = props.env || config.env;\n return config.inlinedCardFieldUrls[env];\n },\n\n contexts: {\n iframe: true,\n popup: false\n },\n\n dimensions: {\n height: '300px',\n width: '100%'\n },\n\n autoResize: {\n height: true,\n width: false\n },\n\n props: {\n sessionID: {\n type: 'string',\n required: false,\n def() : string {\n return getSessionID();\n },\n queryParam: true\n },\n\n\n token: {\n type: 'string',\n required: true,\n queryParam: true\n },\n\n buttonSessionID: {\n type: 'string',\n required: false,\n def() : ?string {\n return getButtonSessionID();\n },\n queryParam: true\n },\n\n commit: {\n type: 'boolean',\n required: false,\n queryParam: true\n },\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n },\n\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n allowDelegate: true,\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n }\n },\n\n initialFormValues: {\n type: 'object',\n required: false\n },\n\n\n onAuthorize: {\n type: 'function',\n required: true,\n once: true\n },\n\n onAuth: {\n type: 'function',\n required: false,\n sameDomain: true\n },\n\n onEvent: {\n type: 'function',\n required: false,\n sameDomain: true\n },\n\n getState: {\n type: 'function',\n required: false,\n sameDomain: true\n },\n\n dispatch: {\n type: 'object',\n required: false,\n sameDomain: true\n },\n\n onCancel: {\n type: 'function',\n required: false,\n once: true,\n noop: true\n },\n\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n },\n \n style: {\n type: 'object',\n required: false,\n queryParam: true,\n def() : Object {\n return {\n cardIcons: {\n display: false\n },\n submitButton: {\n display: true\n },\n currencyConversion: {\n display: true\n }\n };\n }\n }\n }\n});\n","/* @flow */\n\nimport { info, track, debug, warn, error, flush as flushLogs } from 'beaver-logger/client';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { config } from './config';\nimport { FPTI } from './constants';\nimport { initLogger, checkForCommonErrors, setLogLevel, stringifyError,\n stringifyErrorMessage, getResourceLoadTime, isPayPalDomain, isEligible,\n getDomainSetting, once, openMetaFrame, precacheRememberedFunding,\n getCurrentScript, getRememberedFunding } from './lib';\nimport { Button } from './button';\nimport { Checkout } from './checkout';\nimport { pptm } from './external';\n\nfunction domainToEnv(domain : string) : ?string {\n for (const env of Object.keys(config.paypalUrls)) {\n if (config.paypalUrls[env] === domain) {\n return env;\n }\n }\n}\n\nfunction setDomainEnv(domain : string) {\n const currentDomainEnv = domainToEnv(domain);\n\n if (currentDomainEnv && currentDomainEnv !== 'test') {\n config.env = currentDomainEnv;\n }\n}\n\nsetDomainEnv(`${ window.location.protocol }//${ window.location.host }`);\n\nZalgoPromise.onPossiblyUnhandledException(err => {\n\n error('unhandled_error', {\n stack: stringifyError(err),\n errtype: ({}).toString.call(err)\n });\n\n track({\n [ FPTI.KEY.ERROR_CODE ]: 'checkoutjs_error',\n [ FPTI.KEY.ERROR_DESC ]: stringifyErrorMessage(err)\n });\n\n return flushLogs().catch(err2 => {\n if (window.console) {\n try {\n if (window.console.error) {\n window.console.error('Error flushing:', stringifyError(err2));\n } else if (window.console.log) {\n window.console.log('Error flushing:', stringifyError(err2));\n }\n } catch (err3) {\n setTimeout(() => {\n throw err3;\n }, 1);\n }\n }\n });\n});\n\nconst currentScript = getCurrentScript();\nconst currentProtocol = window.location.protocol.split(':')[0];\n\n\ntype ConfigOptions = {|\n env? : ?string,\n stage? : ?string,\n apiStage? : ?string,\n stageUrl? : ?string,\n localhostUrl? : ?string,\n checkoutUri? : ?string,\n state? : ?string,\n logLevel? : ?string,\n merchantID? : ?string,\n precacheRemembered? : boolean,\n authCode? : ?string\n|};\n\nfunction configure({ env, stage, stageUrl, apiStage, localhostUrl, checkoutUri, state, logLevel, merchantID, authCode } : ConfigOptions = {}) {\n\n if (env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n\n delete config.env;\n config.env = env;\n } else if (Button.xprops && Button.xprops.env) {\n delete config.env;\n // $FlowFixMe\n config.env = Button.xprops.env;\n } else if (Checkout.xprops && Checkout.xprops.env) {\n delete config.env;\n // $FlowFixMe\n config.env = Checkout.xprops.env;\n }\n\n if (stage) {\n delete config.stage;\n config.stage = stage;\n } else if (Button.xprops && Button.xprops.stage) {\n delete config.stage;\n // $FlowFixMe\n config.stage = Button.xprops.stage;\n } else if (Checkout.xprops && Checkout.xprops.stage) {\n delete config.stage;\n // $FlowFixMe\n config.stage = Checkout.xprops.stage;\n }\n\n if (stageUrl) {\n delete config.stageUrl;\n // $FlowFixMe\n config.stageUrl = stageUrl;\n } else if (Button.xprops && Button.xprops.stageUrl) {\n delete config.stageUrl;\n // $FlowFixMe\n config.stageUrl = Button.xprops.stageUrl;\n } else if (Checkout.xprops && Checkout.xprops.stageUrl) {\n delete config.stageUrl;\n // $FlowFixMe\n config.stageUrl = Checkout.xprops.stageUrl;\n }\n\n authCode = authCode || (Button.xprops && Button.xprops.authCode) || (Checkout.xprops && Checkout.xprops.authCode);\n\n if (authCode) {\n delete config.authCode;\n config.authCode = authCode;\n }\n\n if (apiStage) {\n delete config.apiStage;\n config.apiStage = apiStage;\n }\n\n localhostUrl = localhostUrl || (Button.xprops && Button.xprops.localhostUrl) || (Checkout.xprops && Checkout.xprops.localhostUrl);\n if (localhostUrl) {\n config.localhostUrl = localhostUrl;\n }\n\n checkoutUri = checkoutUri || (Button.xprops && Button.xprops.checkoutUri) || (Checkout.xprops && Checkout.xprops.checkoutUri);\n if (checkoutUri) {\n config.checkoutUri = checkoutUri;\n }\n\n if (state) {\n delete config.state;\n config.state = state;\n }\n\n if (merchantID) {\n config.merchantID = merchantID;\n }\n\n if (logLevel) {\n setLogLevel(logLevel);\n } else {\n setLogLevel(config.logLevel);\n }\n}\n\nexport const init = once(({ precacheRemembered }) => {\n\n if (!isEligible()) {\n warn('ineligible');\n }\n\n checkForCommonErrors();\n\n initLogger();\n\n if (pptm.shouldCreateInitialPptmScript()) {\n pptm.createPptmScript();\n }\n\n if (precacheRemembered) {\n precacheRememberedFunding();\n }\n\n if (getDomainSetting('force_bridge') && !isPayPalDomain()) {\n openMetaFrame(config.env);\n }\n\n info(`setup_${ config.env }`);\n\n debug(`current_protocol_${ currentProtocol }`);\n});\n\n// $FlowFixMe\nexport function setup(options : ConfigOptions = {}) {\n configure(options);\n init(options);\n}\n\nif (currentScript) {\n setup({\n env: currentScript.getAttribute('data-env'),\n stage: currentScript.getAttribute('data-stage'),\n apiStage: currentScript.getAttribute('data-api-stage'),\n stageUrl: currentScript.getAttribute('data-stage-url'),\n localhostUrl: isPayPalDomain() ? currentScript.getAttribute('data-localhost-url') : undefined,\n checkoutUri: isPayPalDomain() ? currentScript.getAttribute('data-checkout-uri') : undefined,\n state: currentScript.getAttribute('data-state'),\n logLevel: currentScript.getAttribute('data-log-level'),\n merchantID: currentScript.getAttribute('data-merchant-id'),\n authCode: currentScript.getAttribute('data-auth-code'),\n precacheRemembered: currentScript.hasAttribute('data-precache-remembered-funding')\n });\n\n} else {\n setup();\n}\n\nif (!isPayPalDomain()) {\n\n if (currentScript) {\n\n const scriptProtocol = currentScript.src.split(':')[0];\n const loadTime = getResourceLoadTime(currentScript.src);\n\n debug(`current_script_protocol_${ scriptProtocol }`);\n debug(`current_script_protocol_${ currentProtocol === scriptProtocol ? 'match' : 'mismatch' }`);\n debug(`current_script_version_${ config.version.replace(/[^0-9a-zA-Z]+/g, '_') }`);\n\n if (loadTime) {\n debug(`current_script_time`, { loadTime });\n debug(`current_script_time_${ Math.floor(loadTime / 1000) }`);\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.SCRIPT_LOAD,\n [ FPTI.KEY.TRANSITION_TIME ]: loadTime,\n [ FPTI.KEY.FUNDING_REMEMBERED ]: getRememberedFunding().join(',')\n });\n\n } else {\n\n debug(`no_current_script`);\n debug(`no_current_script_version_${ config.version.replace(/[^0-9a-zA-Z]+/g, '_') }`);\n\n if (document.currentScript) { // eslint-disable-line compat/compat\n debug(`current_script_not_recognized`, { src: document.currentScript.src }); // eslint-disable-line compat/compat\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.SCRIPT_LOAD\n });\n }\n}\n","/* @flow */\n\nimport { debug, info, warn, error, track, flush } from 'beaver-logger/client';\nimport { destroyAll as _destroyAll } from 'zoid/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport * as _postRobot from 'post-robot/src'; // eslint-disable-line import/no-namespace\n\nimport { isPayPalDomain } from './lib';\nimport { Checkout as _Checkout } from './checkout';\nimport { BillingPage as _BillingPage } from './billing';\nimport { ThreeDomainSecure as _ThreeDomainSecure } from './threeDomainSecure';\n\nimport './hacks'; // eslint-disable-line import/no-unassigned-import\n\nexport const postRobot = _postRobot;\nexport { ZalgoPromise as Promise } from 'zalgo-promise/src';\nexport { PopupOpenError } from 'zoid/src';\n\nexport { rest } from './api';\nexport { Button } from './button';\nexport { Card } from './card';\nexport { setup } from './setup';\nexport { config } from './config';\nexport { ENV, USERS, SOURCE, FUNDING, CARD } from './constants';\nexport { request, isEligible, isFundingRemembered, allowIframe as forceIframe, allowIframe as isWebView, allowIframe } from './lib';\nexport { logExperimentTreatment } from './experiments';\nexport { logFundingEligibility } from './funding';\n\nexport const onPossiblyUnhandledException = ZalgoPromise.onPossiblyUnhandledException;\n\nexport const version = __PAYPAL_CHECKOUT__.__MINOR_VERSION__;\n\nexport let checkout;\nexport let apps;\n\nif (__PAYPAL_CHECKOUT__.__LEGACY_SUPPORT__) {\n const legacy = require('./legacy');\n checkout = legacy.checkout;\n apps = legacy.apps;\n}\n\n// -------------------------------------------------------------\n\nexport let Checkout;\nexport let BillingPage;\nexport let PayPalCheckout;\nexport let destroyAll;\nexport let enableCheckoutIframe;\nexport let logger;\nexport let ThreeDomainSecure;\n\nfunction _enableCheckoutIframe() {\n _Checkout.contexts.iframe = true;\n}\n\nif (isPayPalDomain() || __TEST__) {\n Checkout = _Checkout;\n BillingPage = _BillingPage;\n ThreeDomainSecure = _ThreeDomainSecure;\n PayPalCheckout = _Checkout;\n enableCheckoutIframe = _enableCheckoutIframe;\n destroyAll = _destroyAll;\n logger = { debug, info, warn, error, track, flush };\n}\n","/* @flow */\n/* eslint import/no-default-export: off */\n\nimport * as INTERFACE from './interface'; // eslint-disable-line import/no-namespace\n\nexport * from './interface';\nexport default INTERFACE;\n","/* @flow */\n\nexport const LOG_PREFIX = `paypal_legacy`;\n\nexport const ATTRIBUTES = {\n BUTTON: 'data-paypal-button',\n MERCHANT_ID: 'data-paypal-id',\n ENV: 'data-env',\n SANDBOX: 'data-sandbox'\n};\n\nexport const CLASSES = {\n HIDDEN_BUTTON: 'paypal-button-hidden'\n};\n","/* @flow */\n\nimport { isDevice, isEligible, supportsPopups } from '../lib';\n\nexport function isLegacyEligible() : boolean {\n\n if (!isEligible()) {\n return false;\n }\n\n if (!supportsPopups()) {\n return false;\n }\n\n if (isDevice()) {\n return false;\n }\n\n return true;\n}\n","/* @flow */\n\nimport { prefix } from 'beaver-logger/client';\n\nimport { COUNTRY, LANG, LOCALE } from '../constants';\nimport type { LocaleType } from '../types';\n\nimport { LOG_PREFIX } from './constants';\n\nconst { warn } = prefix(LOG_PREFIX);\n\nconst DEFAULT_COUNTRY = COUNTRY.US;\nconst DEFAULT_LANG = LANG.EN;\n\nexport function normalizeLocale(locale : string) : LocaleType {\n\n let [ lang, country ] = locale.split('_');\n\n if (!country) {\n if (LOCALE[lang]) {\n country = lang;\n lang = null;\n } else {\n country = DEFAULT_COUNTRY;\n }\n }\n\n if (!LOCALE[country]) {\n warn(`invalid_user_country`, { country });\n country = DEFAULT_COUNTRY;\n }\n\n if (!lang) {\n lang = DEFAULT_LANG;\n }\n\n if (LOCALE[country].indexOf(lang) === -1) {\n warn(`invalid_user_lang`, { lang });\n\n if (LOCALE[country].indexOf(DEFAULT_LANG) !== -1) {\n lang = DEFAULT_LANG;\n } else {\n lang = LOCALE[country][0];\n }\n }\n\n return { country, lang };\n}\n","/* @flow */\n\nimport { prefix } from 'beaver-logger/client';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { config } from '../config';\nimport { FPTI, BUTTON_COLOR, BUTTON_SHAPE, BUTTON_SIZE, BUTTON_LABEL } from '../constants';\nimport { loadScript, memoize, isElementVisible, stringifyError } from '../lib';\n\nimport { LOG_PREFIX } from './constants';\nimport { normalizeLocale } from './common';\n\nconst { info, debug, error } = prefix(LOG_PREFIX);\n\nconst loadButtonJS = memoize(() : ZalgoPromise => {\n\n debug(`buttonjs_load`);\n\n return loadScript(config.buttonJSUrl).catch(err => {\n info(`buttonjs_load_error_retry`, { error: stringifyError(err) });\n return loadScript(config.buttonJSUrl);\n }).then(result => {\n debug(`buttonjs_load_success`);\n return result;\n }).catch(err => {\n error(`buttonjs_load_error`, { error: stringifyError(err) });\n throw err;\n });\n});\n\nfunction renderButton(id, { container, locale, type, color, shape, size }) : ZalgoPromise {\n\n return loadButtonJS().then(() => {\n\n if (locale) {\n const { country, lang } = normalizeLocale(locale);\n locale = `${ lang }_${ country }`;\n }\n\n locale = locale || `${ config.locale.lang }_${ config.locale.country }`;\n color = color || BUTTON_COLOR.GOLD;\n shape = shape || BUTTON_SHAPE.PILL;\n size = size || BUTTON_SIZE.SMALL;\n type = type || BUTTON_LABEL.CHECKOUT;\n\n debug(`render_button_lc_${ locale }`);\n debug(`render_button_color_${ color }`);\n debug(`render_button_shape_${ shape }`);\n debug(`render_button_size_${ size }`);\n debug(`render_button_label_${ type }`);\n\n const el = window.paypal.button.create(id, { lc: locale, color, shape, size }, { type: 'button', label: type }).el;\n container.appendChild(el);\n\n try {\n info(`in_page_button_${ isElementVisible(el) ? 'visible' : 'not_visible' }`);\n\n } catch (err) {\n // pass\n }\n\n return el.childNodes[0];\n });\n}\n\n// eslint-disable-next-line flowtype/no-mutable-array\nexport function renderButtons(id : string, buttons : Array) : ZalgoPromise> {\n\n return ZalgoPromise.map(buttons, button => {\n return ZalgoPromise.try(() => {\n\n if (button.container) {\n return renderButton(id, button);\n } else {\n return button.button;\n }\n\n }).then(element => {\n\n let container;\n let type;\n const condition = button.condition;\n const click = button.click;\n\n if (button.container) {\n container = button.container;\n type = FPTI.BUTTON_TYPE.HTML;\n } else {\n container = button.button;\n type = FPTI.BUTTON_TYPE.CUSTOM;\n }\n\n return { container, element, type, condition, click };\n });\n });\n}\n\nexport function getHijackTargetElement(button : HTMLElement | HTMLButtonElement) : ?HTMLElement {\n\n // $FlowFixMe\n const form = button.form;\n\n if (form) {\n debug(`target_element_button_form`);\n return form;\n }\n\n const tagName = button.tagName && button.tagName.toLowerCase();\n\n if (tagName === 'a') {\n debug(`target_element_link`);\n return button;\n }\n\n const parentElement = button.parentElement;\n const parentTagName = parentElement && parentElement.tagName && parentElement.tagName.toLowerCase();\n\n if ((tagName === 'img' || tagName === 'button') && parentTagName === 'a') {\n debug(`target_element_parent_link`);\n // $FlowFixMe\n return parentElement;\n }\n\n const grandparentElement = parentElement && parentElement.parentElement;\n const grandparentTagName = grandparentElement && grandparentElement.tagName && grandparentElement.tagName.toLowerCase();\n\n if (tagName === 'button' && grandparentTagName === 'a') {\n debug(`target_element_grandparent_link`);\n // $FlowFixMe\n return button.parentElement && button.parentElement.parentElement;\n }\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { flush as flushLogs, prefix } from 'beaver-logger/client';\n\nimport { config } from '../config';\nimport { ENV } from '../constants';\nimport { urlWillRedirectPage, redirect as redir } from '../lib';\n\nimport { LOG_PREFIX } from './constants';\n\nconst { warn } = prefix(LOG_PREFIX);\n\nlet redirected = false;\n\nexport function logRedirect(location : string) {\n\n if (redirected) {\n warn(`multiple_redirects`);\n }\n\n if (urlWillRedirectPage(location)) {\n redirected = true;\n }\n\n flushLogs();\n}\n\nexport function redirect(url : string) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n if (!url) {\n throw new Error(`Redirect url undefined`);\n }\n\n if (config.env === ENV.TEST && urlWillRedirectPage(url)) {\n return redir(window, `#fullpageRedirect?url=${ url }`);\n }\n\n logRedirect(url);\n\n return redir(window, url);\n });\n}\n\nexport function isToken(item : string) : boolean {\n return Boolean(item && item.match(/^(EC-)?[A-Z0-9]{17}$/));\n}\n\n\n/* Parse Token\n -----------\n\n We are passed either a token, or a url containing the token. In order to run the new checkout component we need to\n strip out the token from the url in order to pass it down as a prop\n*/\n\nexport function parseToken(token : string) : ?string {\n\n if (!token) {\n return;\n }\n\n token = decodeURIComponent(decodeURIComponent(token));\n\n // We may get lucky and be passed a token straight off the bar\n\n if (token.match(/^(EC-)?[A-Z0-9]{17}$/)) {\n return token;\n }\n\n // Otherwise strip the token from the url we're sent\n\n let match = token.match(/token=((EC-)?[A-Z0-9]{17})/);\n\n if (match) {\n return match[1];\n }\n\n match = token.match(/(EC-[A-Z0-9]{17})/);\n\n if (match) {\n return match[1];\n }\n}\n\nexport function hasToken(item : string) : boolean {\n return Boolean(parseToken(item));\n}\n","/* @flow */\n\nimport { prefix } from 'beaver-logger/client';\n\nimport { config } from '../config';\nimport { ENV } from '../constants';\nimport { getElements } from '../lib';\n\nimport { normalizeLocale } from './common';\nimport { LOG_PREFIX } from './constants';\n\nconst { info, warn } = prefix(LOG_PREFIX);\n\nexport function normalizeOptions(options : Object) {\n\n // Normalize environment\n\n if (options.environment) {\n\n if (options.environment === 'live') {\n options.environment = ENV.PRODUCTION;\n }\n\n if (!config.paypalUrls[options.environment]) {\n warn('invalid_env', { badenv: options.environment });\n options.environment = config.env;\n }\n }\n\n // If we're passed a single button in options.button, turn it into an array\n\n if (options.button && !Array.isArray(options.button)) {\n info(`options_button_single_button_passed`);\n\n options.button = [ options.button ];\n }\n\n // If we're passed an array of elements in options.buttons, switch it over to options.button\n\n if (options.buttons && getElements(options.buttons).length) {\n info(`options_buttons_with_elements_passed`);\n\n options.button = options.buttons;\n delete options.buttons;\n }\n\n // If we're passed an empty options.button array, clear the value\n\n if (options.button && options.button.length === 0) {\n info(`options_button_empty`);\n\n delete options.button;\n }\n\n // If we're passed options.button and options.container, concat both under button\n\n if (options.button && options.container) {\n info(`options_button_and_container_passed`, { button: options.button, container: options.container });\n\n options.button = options.button.concat(options.container);\n delete options.container;\n }\n\n // Normalize button selectors to elements\n\n if (options.button) {\n const button = getElements(options.button);\n\n if (button.length) {\n options.button = button;\n\n } else {\n warn(`options_button_element_not_found`, { element: JSON.stringify(options.button) });\n delete options.button;\n }\n }\n\n // Normalize options.button to options.buttons\n\n if (options.button) {\n\n options.buttons = options.button.map(button => {\n return {\n button,\n click: options.click,\n condition: options.condition\n };\n });\n\n delete options.click;\n delete options.condition;\n delete options.button;\n }\n\n // Normalize array of buttons\n\n else if (options.buttons && Array.isArray(options.buttons)) {\n\n const buttons = [];\n\n options.buttons.forEach(button => {\n\n if (!button) {\n return;\n }\n\n if (button.container && button.container !== options.container) {\n warn(`mismatched_container_and_button_passed`, { options: options.container, button: button.container });\n }\n\n getElements(button.container || button.button).forEach(element => {\n buttons.push({\n\n [ button.container ? 'container' : 'button' ]: element,\n\n click: button.click || options.click,\n condition: button.condition || options.condition,\n type: button.type || options.type,\n locale: button.locale || options.locale,\n color: button.color || options.color,\n shape: button.shape || options.shape,\n size: button.size || options.size\n });\n });\n });\n\n delete options.buttons;\n delete options.click;\n delete options.condition;\n delete options.button;\n delete options.type;\n delete options.locale;\n delete options.color;\n delete options.shape;\n delete options.size;\n\n if (buttons.length) {\n options.buttons = buttons;\n }\n }\n\n // Otherwise normalize container into array of buttons\n\n else if (options.container && !Array.isArray(options.buttons)) {\n\n const buttons = [];\n\n getElements(options.container).forEach((container, i) => {\n buttons.push({\n container,\n click: options.click,\n condition: options.condition,\n type: Array.isArray(options.type) ? options.type[i] : options.type,\n locale: Array.isArray(options.locale) ? options.locale[i] : options.locale,\n color: Array.isArray(options.color) ? options.color[i] : options.color,\n shape: Array.isArray(options.shape) ? options.shape[i] : options.shape,\n size: Array.isArray(options.size) ? options.size[i] : options.size\n });\n });\n\n delete options.container;\n delete options.buttons;\n delete options.click;\n delete options.condition;\n delete options.button;\n delete options.type;\n delete options.locale;\n delete options.color;\n delete options.shape;\n delete options.size;\n\n if (buttons.length) {\n options.buttons = buttons;\n }\n }\n\n if (!options.buttons) {\n options.buttons = [];\n }\n}\n\nexport function setupConfig(options : Object) {\n\n if (options.environment && config.paypalUrls[options.environment]) {\n config.env = options.environment;\n }\n\n if (options.locale) {\n config.locale = normalizeLocale(options.locale);\n config.customCountry = true;\n }\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { prefix, flush as flushLogs } from 'beaver-logger/client';\nimport formSerialize from 'form-serialize';\n\nimport { Checkout } from '../checkout';\nimport { config } from '../config';\nimport { ENV, FPTI } from '../constants';\nimport { supportsPopups, once, safeJSON, extendUrl, stringifyError, request } from '../lib';\n\nimport { setupPostBridge } from './postBridge';\nimport { isLegacyEligible } from './eligibility';\nimport { LOG_PREFIX } from './constants';\nimport { renderButtons, getHijackTargetElement } from './button';\nimport { redirect, logRedirect, parseToken } from './util';\nimport { normalizeOptions, setupConfig } from './options';\n\nconst { info, debug, warn, error, track } = prefix(LOG_PREFIX);\n\nexport const checkout = {};\nexport const apps = { checkout, Checkout: checkout };\n\nexport function reset() {\n\n debug('reset');\n\n // Once our callback has been called, we can set the global methods to their original values\n\n checkout.initXO = initXO; // eslint-disable-line no-use-before-define\n checkout.startFlow = startFlow; // eslint-disable-line no-use-before-define\n checkout.closeFlow = closeFlow; // eslint-disable-line no-use-before-define\n}\n\ncheckout.reset = reset;\n\n// $FlowFixMe\nObject.defineProperty(checkout, 'urlPrefix', {\n get() : string {\n return `${ config.checkoutUrl }${ config.checkoutUrl.indexOf('?') === -1 ? '?' : '&' }token=`;\n }\n});\n\nfunction matchUrlAndPaymentToken(item) : { url : string, paymentToken : ?string } {\n\n if (!item || !item.trim()) {\n error(`startflow_no_url_or_token`, { item });\n throw new Error(`startflow_no_url_or_token`);\n }\n\n\n const paymentToken = parseToken(item);\n let url = (paymentToken && paymentToken === item) ? '' : item;\n\n if (url) {\n\n if (!url.match(/^https?:\\/\\/|^\\//)) {\n if (paymentToken) {\n info(`startflow_relative_url_with_token`, { url });\n } else {\n info(`startflow_relative_url_no_token`, { url });\n }\n\n if (url.toLowerCase().indexOf('ec-') === 0 && paymentToken) {\n url = `${ config.checkoutUrl }${ url }`;\n }\n\n } else if (paymentToken) {\n if (url.indexOf('.paypal.com') !== -1) {\n debug(`startflow_paypalurl_with_token`, { url });\n } else {\n debug(`startflow_url_with_token`, { url });\n }\n\n } else {\n debug(`startflow_url_no_token`, { url });\n }\n\n } else {\n\n if (paymentToken) {\n url = extendUrl(config.checkoutUrl, { token: paymentToken });\n debug(`startflow_with_token`, { url });\n } else {\n error(`startflow_no_url_or_token`, { url });\n throw new Error(`Could not determine url or token from \"${ item }\"`);\n }\n }\n\n return { paymentToken, url };\n}\n\nfunction checkUrlAgainstEnv(url : string) {\n\n const paypalUrls = config.paypalUrls;\n\n for (const env of Object.keys(paypalUrls)) {\n const paypalUrl = paypalUrls[env];\n\n if (env === ENV.TEST || env === ENV.DEMO) {\n continue;\n }\n\n if (env !== config.env) {\n if (url.indexOf(paypalUrl) === 0 || url.indexOf(paypalUrl.replace('//www.', '//')) === 0) {\n warn(`mismatched_env_startflow_url`, { env: config.env, url });\n redirect(url);\n throw new Error(`${ url } is not a ${ config.env } url`);\n }\n }\n }\n}\n\n/* Get Token\n ---------\n\n Normally in the component world, getToken would be a user-provided function which passes a callback, and expects\n that callback to be called with either an error, or an EC token.\n\n In our case, we can emulate these callback calls by setting over the startFlow and closeFlow globals, and using\n them as our success and failure cases.\n\n Note: this method is set to `precall: true` mode. This means that it will be called the moment the component is\n inited on the page. This means that the moment we initialize, we're ready to start accepting a token via one of the\n global methods.\n*/\n\nfunction awaitPaymentTokenAndUrl(event? : ?Event, targetElement? : ?HTMLElement) : { url : ZalgoPromise, paymentToken : ZalgoPromise } {\n\n const paymentTokenAndUrl = new ZalgoPromise((resolve) => {\n\n if (event && targetElement && (Math.random() < 0.001 || window.enablev3ajax)) {\n let method;\n let url;\n let body;\n let contentType;\n\n info('gettoken_targetelement_start');\n flushLogs();\n \n if (targetElement.tagName.toLowerCase() === 'a') {\n method = 'get';\n url = targetElement.getAttribute('href');\n } else if (targetElement.tagName.toLowerCase() === 'form') {\n method = (targetElement.getAttribute('method') || 'get').toLowerCase();\n url = targetElement.getAttribute('action');\n body = formSerialize(targetElement);\n contentType = targetElement.getAttribute('enctype') || 'application/x-www-form-urlencoded';\n }\n \n if (method && url) {\n event.preventDefault();\n\n request({\n method,\n url,\n body,\n headers: {\n 'Accept': 'application/paypal-json-token',\n 'Content-type': contentType || ''\n }\n }).then(json => {\n const urlAndPaymentToken = matchUrlAndPaymentToken(json.token);\n resolve(urlAndPaymentToken);\n info('gettoken_targetelement_success', urlAndPaymentToken);\n flushLogs();\n\n }).catch(err => {\n warn('gettoken_targetelement_error', {\n // $FlowFixMe\n err: err.stack || err.toString()\n });\n flushLogs();\n });\n \n } else {\n warn('gettoken_targetelement_no_method_or_url');\n flushLogs();\n }\n }\n\n\n checkout.initXO = () => {\n warn(`gettoken_initxo`);\n };\n\n // startFlow is our 'success' case - we get a token, and we can pass it back to the caller\n\n checkout.startFlow = once((item) => {\n debug(`gettoken_startflow`, { item });\n\n const { url, paymentToken } = matchUrlAndPaymentToken(item);\n\n checkUrlAgainstEnv(url);\n\n return resolve({ url, paymentToken });\n });\n });\n\n const url = paymentTokenAndUrl.then(result => result.url);\n const paymentToken = paymentTokenAndUrl.then(result => result.paymentToken);\n\n return { url, paymentToken };\n}\n\n\n/* Init PayPal Checkout\n --------------------\n\n Initialize the Checkout component with some standard props:\n\n - Pass in env from global state (saved during setup() call)\n - Return to success url on payment authorize\n - Return to cancel url on cancel\n*/\n\nlet paypalCheckoutInited = false;\nlet closeFlowCalled = false;\n\nfunction initPayPalCheckout(props = {}) : Object {\n\n info(`init_checkout`);\n\n if (paypalCheckoutInited && config.env !== ENV.TEST) {\n warn(`multiple_init_paypal_checkout`);\n }\n\n if (closeFlowCalled) {\n debug(`init_after_closeflow`);\n }\n\n paypalCheckoutInited = true;\n\n const paypalCheckout = Checkout.init({\n\n onAuthorize(data, actions) : ZalgoPromise {\n info(`payment_authorized`);\n logRedirect(data.returnUrl);\n return actions.redirect(window);\n },\n\n onCancel(data, actions) : ?ZalgoPromise {\n if (data.cancelUrl) {\n info(`payment_canceled`);\n logRedirect(data.cancelUrl);\n return actions.redirect(window);\n }\n },\n\n fallback(url) : ZalgoPromise {\n error(`fallback_handler`, { url });\n this.destroy();\n return redirect(url);\n },\n\n ...props\n });\n\n checkout.closeFlow = (closeUrl? : string) => {\n warn(`closeflow`);\n\n closeFlowCalled = true;\n\n reset();\n\n paypalCheckout.destroy();\n\n if (closeUrl) {\n warn(`closeflow_with_url`, { closeUrl });\n return redirect(closeUrl);\n }\n };\n\n return paypalCheckout;\n}\n\nfunction renderPayPalCheckout(props : Object = {}, hijackTarget? : ?Element) : ZalgoPromise {\n\n const urlProp = ZalgoPromise.resolve(props.url);\n\n const paymentToken = new ZalgoPromise(resolve => {\n props.init = (data) => {\n resolve(data.paymentToken);\n };\n });\n\n const errorHandler = once(err => {\n\n error(`component_error`, { error: stringifyError(err) });\n\n if (hijackTarget) {\n warn(`render_error_hijack_revert_target`);\n hijackTarget.removeAttribute('target');\n }\n\n // eslint-disable-next-line promise/no-promise-in-callback\n urlProp.then(url => {\n warn(`render_error_redirect_using_url`);\n return redirect(url);\n });\n\n // eslint-disable-next-line promise/no-promise-in-callback\n paymentToken.then(token => {\n warn(`render_error_redirect_using_token`);\n return redirect(extendUrl(config.checkoutUrl, { token }));\n });\n });\n\n props.onError = errorHandler;\n\n let paypalCheckout;\n\n if (hijackTarget) {\n\n delete props.url;\n\n paypalCheckout = initPayPalCheckout(props);\n\n paypalCheckout.hijack(hijackTarget);\n paypalCheckout.runTimeout();\n\n urlProp.then(url => {\n warn(`hijack_then_url_passed`);\n paypalCheckout.loadUrl(url);\n });\n\n } else {\n\n paypalCheckout = initPayPalCheckout(props);\n }\n\n const render = paypalCheckout.render(null, !hijackTarget);\n\n checkout.win = paypalCheckout.window;\n\n return render.catch(errorHandler);\n}\n\n\nfunction handleClick(clickHandler, event) {\n debug(`button_click_handler`);\n\n try {\n clickHandler(event);\n } catch (err) {\n error(`click_handler_error`, { error: stringifyError(err) });\n }\n}\n\nfunction handleClickHijack(event, element) : void {\n\n const targetElement = getHijackTargetElement(element);\n\n if (!targetElement) {\n return error(`target_element_not_found`);\n }\n\n info(`init_paypal_checkout_hijack`);\n\n const { url, paymentToken } = awaitPaymentTokenAndUrl(event, targetElement);\n\n let token;\n \n paymentToken.then(result => {\n token = result;\n });\n\n renderPayPalCheckout({ url, payment: () => ZalgoPromise.resolve(token) }, targetElement);\n}\n\nfunction listenClick(container, button, clickHandler, condition, tracker) : void {\n\n const element : HTMLElement = (container.tagName.toLowerCase() === 'a') ? container : button;\n\n const isClick = (typeof clickHandler === 'function');\n\n if (element.hasAttribute('data-paypal-click-listener')) {\n return warn(`button_already_has_paypal_click_listener`);\n }\n\n element.setAttribute('data-paypal-click-listener', '');\n\n const targetElement = getHijackTargetElement(element);\n\n if (targetElement && isClick) {\n info(`button_link_or_form`);\n }\n\n element.addEventListener('click', (event : Event) => {\n\n tracker();\n\n const eligible = isLegacyEligible();\n\n if (supportsPopups()) {\n debug(`click_popups_supported`);\n\n if (!eligible) {\n debug(`click_popups_supported_but_ineligible`);\n }\n } else {\n debug(`click_popups_not_supported`);\n\n if (eligible) {\n debug(`click_popups_not_supported_but_eligible`);\n }\n }\n\n if (!isClick) {\n\n if (!eligible) {\n return debug(`ineligible_listenclick`);\n }\n }\n\n info(`button_click`);\n\n if (typeof condition === 'function') {\n if (condition.call()) {\n info(`button_click_condition_enabled`);\n } else {\n return info(`button_click_condition_disabled`);\n }\n }\n\n if (isClick) {\n return handleClick(clickHandler, event);\n\n } else {\n return handleClickHijack(event, element);\n }\n });\n}\n\nfunction instrumentButtonRender(type : string) {\n info(`render_${ type }_button`);\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_RENDER,\n [ FPTI.KEY.BUTTON_TYPE ]: type\n });\n\n flushLogs();\n}\n\nfunction instrumentButtonClick(type : string) {\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_CLICK,\n [ FPTI.KEY.BUTTON_TYPE ]: type\n });\n flushLogs();\n}\n\n\n/* Setup\n -----\n\n Emulate window.paypal.checkout.setup.\n\n The purpose of this method is to:\n\n - Set up configuration for the incontext flow\n - Render a button to initiate the checkout window\n*/\n\nlet setupCalled = false;\n\nexport function setup(id : string, options : Object = {}) : ZalgoPromise {\n\n id = id || 'merchant';\n\n info(`setup`, {\n id,\n env: options.environment,\n options: safeJSON(options)\n });\n\n if (setupCalled) {\n debug(`setup_called_multiple_times`);\n }\n\n setupCalled = true;\n\n normalizeOptions(options);\n setupConfig(options);\n\n setupPostBridge(config.env);\n\n return ZalgoPromise.try(() => {\n\n // If there are no buttons passed, can only assume there's a custom paypal button with a custom listener\n\n if (!options.buttons.length) {\n return instrumentButtonRender(FPTI.BUTTON_TYPE.CUSTOM);\n }\n\n // Otherwise render whatever buttons we were asked to, and listen for them to be clicked\n\n return renderButtons(id, options.buttons).then(buttons => {\n\n buttons.forEach(button => {\n instrumentButtonRender(button.type);\n\n listenClick(button.container, button.element, button.click, button.condition, () => {\n instrumentButtonClick(button.type);\n });\n });\n });\n });\n}\n\ncheckout.setup = setup;\n\n/* Init XO\n -------\n\n Emulate paypal.checkout.initXO\n\n Normally this would be used only to open the checkout page. But here we can just kick off the whole flow, since\n getToken will handle loading the token into the window for us.\n*/\n\nfunction initXO() : void {\n\n debug(`initxo`);\n\n if (!isLegacyEligible()) {\n return debug(`ineligible_initxo`);\n }\n\n const { url, paymentToken } = awaitPaymentTokenAndUrl();\n\n info(`init_paypal_checkout_initxo`);\n\n renderPayPalCheckout({ url, payment: () => paymentToken });\n}\n\ncheckout.initXO = initXO;\n\n\n/* Start Flow\n ----------\n\n Emulate paypal.checkout.startFlow\n\n Normally this would be used to load the url into the browser after the window has already been opened. Again, we\n can just kick off the whole flow here, on the off chance that a merchant calls us on button click. Normally this\n method will have been patched over in getToken.\n*/\n\nfunction startFlow(item : string) {\n debug(`startflow`, { item });\n\n const { paymentToken, url } = matchUrlAndPaymentToken(item);\n\n checkUrlAgainstEnv(url);\n\n if (!isLegacyEligible()) {\n debug(`ineligible_startflow_global`, { url });\n redirect(url);\n return;\n }\n\n info(`init_paypal_checkout_startflow`);\n\n renderPayPalCheckout({ url, payment: () => ZalgoPromise.resolve(paymentToken) });\n}\n\ncheckout.startFlow = startFlow;\n\n\n/* Close Flow\n ----------\n\n Emulate paypal.checkout.closeFlow\n\n Close the component in case of any error on the merchant side.\n*/\n\nfunction closeFlow(closeUrl? : string) {\n warn(`closeflow_not_opened`);\n\n if (closeUrl) {\n warn(`closeflow_with_url`, { closeUrl });\n redirect(closeUrl);\n\n }\n}\n\ncheckout.closeFlow = closeFlow;\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { debug } from 'beaver-logger/client';\nimport { bridge } from 'post-robot/src';\n\nimport { config } from '../config';\nimport { openMetaFrame, noop } from '../lib';\n\nexport function setupPostBridge(env : string) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n const metaFrameDomain : string = config.paypalDomains[env];\n\n if (!bridge || !bridge.needsBridge({ domain: metaFrameDomain })) {\n return debug(`post_bridge_not_required`, { env });\n }\n\n debug(`setup_post_bridge`, { env });\n\n return openMetaFrame(env).then(noop);\n });\n}\n","/* @flow */\n\nimport { prefix } from 'beaver-logger/client';\n\nimport { onDocumentReady } from '../lib';\nimport { ENV } from '../constants';\n\nimport { LOG_PREFIX, ATTRIBUTES, CLASSES } from './constants';\nimport { setup } from './interface';\n\nconst { error, debug } = prefix(LOG_PREFIX);\n\n/* PayPal Checkout Ready\n ---------------------\n\n Call window.paypalCheckoutReady on document ready, if it has been defined by the merchant\n*/\n\nfunction invokeReady(method) {\n\n onDocumentReady(() => {\n debug(`paypal_checkout_ready`);\n setTimeout(() => {\n\n if (!window.paypal) {\n error(`paypal_checkout_ready_no_window_paypal`);\n }\n\n method();\n }, 1);\n });\n}\n\nfunction onKey(obj : Object, key : string, callback : Function) {\n\n if (!obj) {\n return;\n }\n\n let value = obj[key];\n\n if (value) {\n value = callback(value) || value;\n }\n\n try {\n\n delete obj[key];\n\n Object.defineProperty(obj, key, {\n\n configurable: true,\n\n set(item) {\n value = item;\n\n if (value) {\n value = callback(value) || value;\n }\n },\n\n get() : mixed {\n return value;\n }\n });\n\n } catch (err) {\n // pass\n }\n}\n\nonKey(window, 'paypalCheckoutReady', method => {\n\n if (typeof method === 'function') {\n\n const oneTimeReady = function () : void {\n if (!method.called) {\n method.called = true;\n return method.apply(this, arguments);\n }\n };\n\n invokeReady(oneTimeReady);\n\n return oneTimeReady;\n }\n});\n\n\n/* Scan for buttons\n ----------------\n\n Scan for any buttons on the page with a data-paypal-button attribute and auto-attach the PaypalCheckout component to them\n*/\n\nonDocumentReady(() => {\n\n const buttons = Array.prototype.slice.call(document.querySelectorAll(`[${ ATTRIBUTES.BUTTON }]`));\n\n if (buttons && buttons.length) {\n debug(`data_paypal_button`, { number: buttons.length });\n\n for (const button of buttons) {\n\n const id = button.getAttribute(ATTRIBUTES.MERCHANT_ID);\n\n let environment;\n\n if (button.hasAttribute(ATTRIBUTES.ENV)) {\n environment = button.getAttribute(ATTRIBUTES.ENV);\n } else if (button.hasAttribute(ATTRIBUTES.SANDBOX)) {\n environment = ENV.SANDBOX;\n }\n\n setup(id, { environment, button });\n }\n }\n\n // Show hidden buttons\n\n Array.prototype.slice.call(document.getElementsByClassName(CLASSES.HIDDEN_BUTTON)).forEach(el => {\n el.className = el.className.replace(CLASSES.HIDDEN_BUTTON, '');\n });\n});\n","/* @flow */\n\nimport './ready'; // eslint-disable-line import/no-unassigned-import\n\nexport * from './button';\nexport * from './constants';\nexport * from './interface';\n"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/checkout.v4.js b/dist/checkout.v4.js index 6d568ef41f..32fcdd4a2a 100644 --- a/dist/checkout.v4.js +++ b/dist/checkout.v4.js @@ -3124,7 +3124,7 @@ var config = { scriptUrl: false ? undefined : "//www.paypalobjects.com/api/" + "checkout.v4.js", // eslint-disable-next-line security/detect-unsafe-regex, unicorn/no-unsafe-regex paypal_domain_regex: /^(https?|mock):\/\/[a-zA-Z0-9_.-]+\.paypal\.com(:\d+)?$/, - version: "4.0.307", + version: "4.0.308", cors: true, env: getDefaultEnv(), state: 'checkoutjs', @@ -12660,7 +12660,7 @@ function beacon(event, payload) { try { payload.event = "ppxo_" + event; - payload.version = "4.0.307"; + payload.version = "4.0.308"; payload.host = window.location.host; payload.uid = Object(_session__WEBPACK_IMPORTED_MODULE_3__[/* getSessionID */ "c"])(); payload.appName = APP_NAME; @@ -12716,7 +12716,7 @@ function checkpoint(name, payload, options) { var checkpointName = name; if (options.version) { - var version = "4.0.307".replace(/[^0-9]+/g, '_'); + var version = "4.0.308".replace(/[^0-9]+/g, '_'); checkpointName = version + "_" + checkpointName; } @@ -12733,7 +12733,7 @@ var FPTI_URL = 'https://t.paypal.com/ts'; function buildPayload() { return { - v: "checkout.js." + "4.0.307", + v: "checkout.js." + "4.0.308", t: Date.now(), g: new Date().getTimezoneOffset(), flnm: 'ec:hermes:', @@ -14131,17 +14131,17 @@ __webpack_require__.r(__webpack_exports__); if (false) {} -if (window.paypal && window.paypal.version === "4.0.307") { +if (window.paypal && window.paypal.version === "4.0.308") { Object(_lib_beacon__WEBPACK_IMPORTED_MODULE_0__[/* beacon */ "a"])('bootstrap_already_loaded_same_version', { - version: "4.0.307" + version: "4.0.308" }); - throw new Error("PayPal Checkout Integration Script with same version (" + "4.0.307" + ") already loaded on page"); -} else if (window.paypal && window.paypal.version && window.paypal.version !== "4.0.307" && window.paypal.Button && window.paypal.Button.render) { + throw new Error("PayPal Checkout Integration Script with same version (" + "4.0.308" + ") already loaded on page"); +} else if (window.paypal && window.paypal.version && window.paypal.version !== "4.0.308" && window.paypal.Button && window.paypal.Button.render) { Object(_lib_beacon__WEBPACK_IMPORTED_MODULE_0__[/* beacon */ "a"])('bootstrap_already_loaded_different_version', { existingVersion: window.paypal.version, - version: "4.0.307" + version: "4.0.308" }); - throw new Error("PayPal Checkout Integration Script with different version (" + window.paypal.version + ") already loaded on page, current version: " + "4.0.307"); + throw new Error("PayPal Checkout Integration Script with different version (" + window.paypal.version + ") already loaded on page, current version: " + "4.0.308"); } else { try { var _interface = __webpack_require__(56); @@ -18417,7 +18417,7 @@ function initLogger() { country: config["a" /* config */].locale.country, lang: config["a" /* config */].locale.lang, uid: Object(lib_session["c" /* getSessionID */])(), - ver: "4.0.307" + ver: "4.0.308" }; }); Object(beaver_logger_client["a" /* addHeaderBuilder */])(function () { @@ -18990,7 +18990,7 @@ function getScriptVersion() { if ( true && isPayPalObjects()) { return false ? undefined : "4"; } else { - return false ? undefined : "4.0.307"; + return false ? undefined : "4.0.308"; } } function getCurrentScriptUrl() { @@ -19006,7 +19006,7 @@ function getCurrentScriptUrl() { return scriptUrl; } - return "https://www.paypalobjects.com/api/checkout." + "4.0.307" + ( false ? undefined : '') + ".js"; + return "https://www.paypalobjects.com/api/checkout." + "4.0.308" + ( false ? undefined : '') + ".js"; } function getDomainSetting(name, def) { var hostname = window.xchild ? window.xchild.getParentDomain() : Object(cross_domain_utils_src["h" /* getDomain */])(); @@ -27069,7 +27069,7 @@ var BUTTON_CONFIG = (_BUTTON_CONFIG = {}, _BUTTON_CONFIG[src_constants["s" /* DE allowPrimaryHorizontal: true }, _BUTTON_CONFIG[src_constants["f" /* BUTTON_LABEL */].PAY] = { label: "{ content: pay }", - logoLabel: "{ logo: " + src_constants["h" /* BUTTON_LOGO */].PP + " } { logo: " + src_constants["h" /* BUTTON_LOGO */].PAYPAL + " }", + logoLabel: "{ logo: " + src_constants["h" /* BUTTON_LOGO */].PAYPAL + " }", allowPrimary: true, allowPrimaryVertical: true, allowPrimaryHorizontal: true @@ -34463,7 +34463,7 @@ function componentTemplate_componentTemplate(_ref19) { }); var scriptNode = renderScript(); var labelPowerByPayPal = cards.length > 0 ? renderPowerByPaypalLogo(props_normalizeProps(props)) : null; - return jsxToHTML("div", Object(esm_extends["a" /* default */])({}, (_ref20 = {}, _ref20[src_constants["c" /* ATTRIBUTE */].VERSION] = "4.0.307", _ref20), { + return jsxToHTML("div", Object(esm_extends["a" /* default */])({}, (_ref20 = {}, _ref20[src_constants["c" /* ATTRIBUTE */].VERSION] = "4.0.308", _ref20), { class: class_CLASS.CONTAINER + " " + getCommonButtonClasses({ layout: layout, shape: shape, @@ -36206,7 +36206,7 @@ var interface_postRobot = src; var onPossiblyUnhandledException = zalgo_promise_src["a" /* ZalgoPromise */].onPossiblyUnhandledException; -var interface_version = "4.0.307"; +var interface_version = "4.0.308"; var interface_checkout; var apps; diff --git a/dist/checkout.v4.js.map b/dist/checkout.v4.js.map index f1281128cc..d8c5759524 100644 --- a/dist/checkout.v4.js.map +++ b/dist/checkout.v4.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/constants/button.js","webpack:///./src/constants/checkout.js","webpack:///./src/constants/funding.js","webpack:///./src/constants/misc.js","webpack:///./src/constants/fpti.js","webpack:///./src/constants/country.js","webpack:///./src/constants/locale.js","webpack:///./src/constants/index.js","webpack:///./node_modules/zalgo-promise/src/utils.js","webpack:///./node_modules/zalgo-promise/src/exceptions.js","webpack:///./node_modules/zalgo-promise/src/flush.js","webpack:///./node_modules/zalgo-promise/src/promise.js","webpack:///./node_modules/zalgo-promise/src/index.js","webpack:///./node_modules/zoid/src/lib/util.js","webpack:///./node_modules/zoid/src/lib/fn.js","webpack:///./node_modules/zoid/src/lib/dom.js","webpack:///./node_modules/zoid/src/lib/promise.js","webpack:///./node_modules/zoid/src/lib/css.js","webpack:///./node_modules/zoid/src/lib/decorators.js","webpack:///./node_modules/zoid/src/lib/logger.js","webpack:///./node_modules/zoid/src/lib/global.js","webpack:///./node_modules/zoid/src/lib/index.js","webpack:///./src/config/config.js","webpack:///./src/config/index.js","webpack:///./node_modules/beaver-logger/client/util.js","webpack:///./node_modules/beaver-logger/client/builders.js","webpack:///./node_modules/beaver-logger/client/config.js","webpack:///./node_modules/beaver-logger/client/logger.js","webpack:///./node_modules/beaver-logger/client/performance.js","webpack:///./node_modules/beaver-logger/client/init.js","webpack:///./node_modules/beaver-logger/client/transitions.js","webpack:///./node_modules/beaver-logger/client/interface.js","webpack:///./node_modules/beaver-logger/client/index.js","webpack:///./node_modules/cross-domain-utils/src/util.js","webpack:///./node_modules/cross-domain-utils/src/constants.js","webpack:///./node_modules/cross-domain-utils/src/utils.js","webpack:///./node_modules/cross-domain-utils/src/types.js","webpack:///./node_modules/cross-domain-utils/src/index.js","webpack:///./node_modules/zoid/src/constants.js","webpack:///./node_modules/post-robot/src/global.js","webpack:///./node_modules/post-robot/src/conf/constants.js","webpack:///./node_modules/post-robot/src/conf/config.js","webpack:///./node_modules/post-robot/src/conf/index.js","webpack:///./src/lib/util.js","webpack:///./node_modules/@babel/runtime/helpers/esm/extends.js","webpack:///./node_modules/post-robot/src/drivers/send/strategies.js","webpack:///./node_modules/post-robot/src/drivers/send/index.js","webpack:///./node_modules/post-robot/src/drivers/listeners.js","webpack:///./node_modules/post-robot/src/drivers/receive/types.js","webpack:///./node_modules/post-robot/src/drivers/receive/index.js","webpack:///./node_modules/post-robot/src/drivers/index.js","webpack:///./node_modules/post-robot/src/public/client.js","webpack:///./node_modules/post-robot/src/public/server.js","webpack:///./node_modules/post-robot/src/public/config.js","webpack:///./node_modules/post-robot/src/public/index.js","webpack:///./node_modules/post-robot/src/clean.js","webpack:///./node_modules/post-robot/src/interface.js","webpack:///./node_modules/post-robot/src/index.js","webpack:///./node_modules/post-robot/src/lib/util.js","webpack:///./node_modules/post-robot/src/lib/serialize.js","webpack:///./node_modules/post-robot/src/lib/ready.js","webpack:///./node_modules/post-robot/src/lib/index.js","webpack:///./node_modules/belter/src/device.js","webpack:///./node_modules/belter/src/util.js","webpack:///./node_modules/belter/src/constants.js","webpack:///./node_modules/belter/src/dom.js","webpack:///./node_modules/belter/src/storage.js","webpack:///./node_modules/belter/src/experiment.js","webpack:///./node_modules/belter/src/global.js","webpack:///./node_modules/belter/src/http.js","webpack:///./node_modules/belter/src/types.js","webpack:///./node_modules/belter/src/decorators.js","webpack:///./node_modules/belter/src/css.js","webpack:///./node_modules/belter/src/test.js","webpack:///./node_modules/belter/src/index.js","webpack:///./node_modules/cross-domain-safe-weakmap/src/native.js","webpack:///./node_modules/cross-domain-safe-weakmap/src/util.js","webpack:///./node_modules/cross-domain-safe-weakmap/src/weakmap.js","webpack:///./node_modules/cross-domain-safe-weakmap/src/index.js","webpack:///./src/lib/session.js","webpack:///./src/lib/device.js","webpack:///./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack:///./node_modules/post-robot/src/bridge/bridge.js","webpack:///./node_modules/post-robot/src/bridge/common.js","webpack:///./node_modules/post-robot/src/bridge/child.js","webpack:///./node_modules/post-robot/src/bridge/parent.js","webpack:///./node_modules/post-robot/src/bridge/index.js","webpack:///./src/lib/dom.js","webpack:///./node_modules/zoid/src/error.js","webpack:///./src/lib/security.js","webpack:///./node_modules/zoid/src/drivers/index.js","webpack:///./src/lib/beacon.js","webpack:///./src/lib/namespace.js","webpack:///./node_modules/hi-base32/src/base32.js","webpack:///./node_modules/zoid/src/drivers/script.js","webpack:///./node_modules/zoid/src/drivers/react.js","webpack:///./node_modules/zoid/src/drivers/vue.js","webpack:///./node_modules/zoid/src/drivers/angular.js","webpack:///./node_modules/zoid/src/drivers/glimmer.js","webpack:///./node_modules/zoid/src/drivers/angular2.js","webpack:///./node_modules/bowser/bowser.min.js","webpack:///./node_modules/post-robot/src/compat/ie.js","webpack:///./node_modules/post-robot/src/compat/index.js","webpack:///./src/resources/fundingLogos/pp_white.svg","webpack:///./src/resources/fundingLogos/pp_blue.svg","webpack:///./src/resources/fundingLogos/pp_black.svg","webpack:///./src/resources/fundingLogos/venmo_white.svg","webpack:///./src/resources/fundingLogos/itau.svg","webpack:///./src/resources/fundingLogos/venmo_blue.svg","webpack:///./src/resources/fundingLogos/elv.svg","webpack:///./src/resources/fundingLogos/elv_white.svg","webpack:///./src/resources/cardLogos/visa.svg","webpack:///./src/resources/cardLogos/amex.svg","webpack:///./src/resources/cardLogos/mastercard.svg","webpack:///./src/resources/cardLogos/maestro.svg","webpack:///./src/resources/cardLogos/discover.svg","webpack:///./src/resources/cardLogos/hiper.svg","webpack:///./src/resources/cardLogos/elo.svg","webpack:///./src/resources/cardLogos/jcb.svg","webpack:///./src/resources/cardLogos/cup.svg","webpack:///./src/load.js","webpack:///./node_modules/post-robot/src/bridge/interface.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///(webpack)/buildin/amd-define.js","webpack:///./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack:///./node_modules/@babel/runtime/helpers/esm/applyDecoratedDescriptor.js","webpack:///./node_modules/zoid/src/component/base.js","webpack:///./node_modules/zoid/src/component/window.js","webpack:///./node_modules/zoid/src/component/child/props.js","webpack:///./node_modules/zoid/src/component/child/index.js","webpack:///./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack:///./node_modules/zoid/src/component/parent/drivers.js","webpack:///./node_modules/zoid/src/component/parent/validate.js","webpack:///./node_modules/zoid/src/component/parent/props.js","webpack:///./node_modules/zoid/src/component/parent/index.js","webpack:///./node_modules/zoid/src/component/delegate/index.js","webpack:///./node_modules/zoid/src/component/component/validate.js","webpack:///./node_modules/zoid/src/component/component/templates/container.jsx","webpack:///./node_modules/zoid/src/component/component/templates/component.jsx","webpack:///./node_modules/zoid/src/component/component/templates/index.js","webpack:///./node_modules/zoid/src/component/component/props.js","webpack:///./node_modules/zoid/src/component/component/index.js","webpack:///./node_modules/zoid/src/component/index.js","webpack:///./node_modules/zoid/src/interface.js","webpack:///./node_modules/zoid/src/index.js","webpack:///./src/lib/proxy.js","webpack:///./src/lib/logger.js","webpack:///./src/lib/eligibility.js","webpack:///./src/lib/errors.js","webpack:///./src/lib/http.js","webpack:///./src/lib/throttle.js","webpack:///./src/lib/script.js","webpack:///./src/lib/meta.js","webpack:///./src/lib/funding.js","webpack:///./src/lib/jsx.js","webpack:///./src/lib/index.js","webpack:///./src/compat/fallback.js","webpack:///./src/integrations/checkout.js","webpack:///./src/integrations/braintree.js","webpack:///./src/integrations/index.js","webpack:///./src/checkout/template/componentTemplate.jsx","webpack:///./src/resources/fundingLogos/p24.jsx","webpack:///./src/resources/fundingLogos/sofort.jsx","webpack:///./src/resources/fundingLogos/ideal.jsx","webpack:///./src/resources/fundingLogos/giropay.jsx","webpack:///./src/resources/fundingLogos/eps.jsx","webpack:///./src/resources/fundingLogos/mybank.jsx","webpack:///./src/resources/fundingLogos/bancontact.jsx","webpack:///./src/resources/fundingLogos/payu.jsx","webpack:///./src/resources/fundingLogos/verkkopankki.jsx","webpack:///./src/resources/fundingLogos/blik.jsx","webpack:///./src/resources/fundingLogos/trustly.jsx","webpack:///./src/resources/fundingLogos/maxima.jsx","webpack:///./src/resources/fundingLogos/boleto.jsx","webpack:///./src/resources/fundingLogos/oxxo.jsx","webpack:///./src/resources/fundingLogos/paypal.jsx","webpack:///./src/resources/fundingLogos/credit.jsx","webpack:///./src/resources/fundingLogos/index.js","webpack:///./src/resources/cardLogos/index.js","webpack:///./src/resources/index.js","webpack:///./src/checkout/template/containerContent.js","webpack:///./src/checkout/template/containerStyle/base.js","webpack:///./src/checkout/template/sandboxStyle/base.js","webpack:///./src/checkout/template/containerTemplate.jsx","webpack:///./src/checkout/template/index.js","webpack:///./src/checkout/component.js","webpack:///./src/billing/template/containerTemplate.jsx","webpack:///./src/billing/index.js","webpack:///./src/threeDomainSecure/index.js","webpack:///./src/external/pptm-factory.js","webpack:///./src/external/pptm.js","webpack:///./src/external/index.js","webpack:///./src/api/rest.js","webpack:///./src/experiments.js","webpack:///./src/integrations/popupBridge.js","webpack:///./src/funding/config.js","webpack:///./src/funding/funding.js","webpack:///./src/button/config.js","webpack:///./src/button/props.js","webpack:///./src/button/validate.js","webpack:///./src/button/template/componentStyle/class.js","webpack:///./src/button/template/componentStyle/page.js","webpack:///./src/button/template/componentStyle/button.js","webpack:///./src/button/template/componentStyle/layout.js","webpack:///./src/button/template/componentStyle/branding.js","webpack:///./src/button/template/componentStyle/labels.js","webpack:///./src/button/template/componentStyle/responsive.js","webpack:///./src/button/template/componentStyle/color.js","webpack:///./src/button/template/componentStyle/base.js","webpack:///./src/button/template/componentStyle/index.js","webpack:///./src/button/template/miscComponent.jsx","webpack:///./src/button/template/componentScript.js","webpack:///./src/button/template/content.js","webpack:///./src/button/template/componentTemplate.jsx","webpack:///./src/button/template/containerTemplate.jsx","webpack:///./src/button/template/index.js","webpack:///./src/button/child.js","webpack:///./src/button/component.jsx","webpack:///./src/hacks.js","webpack:///./src/card/index.js","webpack:///./src/setup.js","webpack:///./src/interface.js","webpack:///./src/index.js"],"names":["BUTTON_STYLE_OPTIONS","LABEL","SIZE","SHAPE","COLOR","LAYOUT","MAXBUTTONS","FUNDINGICONS","BRANDING","TAGLINE","HEIGHT","INSTALLMENTPERIOD","BUTTON_LABEL","PAYPAL","CHECKOUT","PAY","CREDIT","CARD","BUYNOW","INSTALLMENT","VENMO","ITAU","IDEAL","ELV","BANCONTACT","GIROPAY","SOFORT","EPS","MYBANK","P24","PAYU","VERKKOPANKKI","BLIK","TRUSTLY","MAXIMA","BOLETO","OXXO","BUTTON_COLOR","GOLD","BLUE","SILVER","BLACK","DARKBLUE","WHITE","TRANSPARENT","BUTTON_LOGO_COLOR","ANY","BUTTON_SIZE","TINY","SMALL","MEDIUM","LARGE","HUGE","RESPONSIVE","BUTTON_TAGLINE_COLOR","BUTTON_SHAPE","PILL","RECT","BUTTON_BRANDING","BRANDED","UNBRANDED","BUTTON_LAYOUT","HORIZONTAL","VERTICAL","BUTTON_NUMBER","SINGLE","MULTIPLE","BUTTON_LOGO","PP","CHECKOUT_OVERLAY_COLOR","FUNDING","ZIMPLER","VISA","MASTERCARD","AMEX","DISCOVER","SWITCH","MAESTRO","HIPER","ELO","JCB","CUP","COFINOGA","COFIDIS","CETELEM","CBNATIONALE","FUNDING_ELIGIBILITY_REASON","PRIMARY","NOT_ENABLED","SECONDARY_DISALLOWED","OPT_OUT","OPT_IN","DISALLOWED_COUNTRY","DEFAULT_COUNTRY","DEFAULT","REMEMBERED","NEED_OPT_IN","COMMIT_NOT_SET","INVALID_ENV","CARD_PRIORITY","ENV","LOCAL","STAGE","SANDBOX","PRODUCTION","TEST","DEMO","USERS","ALL","SOURCE","MANUAL","BUTTON_FACTORY","LOG_LEVEL","DEBUG","INFO","WARN","ERROR","PAYMENT_TYPE","EC_TOKEN","BA_TOKEN","PAY_ID","PPTM_ID","ATTRIBUTE","BUTTON","FUNDING_SOURCE","VERSION","PLATFORM","DESKTOP","MOBILE","FPTI","KEY","FEED","STATE","TRANSITION","BUTTON_TYPE","SESSION_UID","BUTTON_SESSION_UID","TOKEN","CONTEXT_ID","CONTEXT_TYPE","REFERER","SELLER_ID","DATA_SOURCE","BUTTON_SOURCE","ERROR_CODE","ERROR_DESC","PAGE_LOAD_TIME","EXPERIMENT_NAME","TREATMENT_NAME","TRANSITION_TIME","FUNDING_LIST","FUNDING_COUNT","CHOSEN_FUNDING","BUTTON_WIDTH","MAX_BUTTONS","FUNDING_REMEMBERED","BUTTON_TAGLINE_ENABLED","RESPONSE_DURATION","PAYMENT_FLOW","BUTTON_VERSION","IFRAME","HTML","CUSTOM","BUTTON_SESSION_ID","CHECKOUTJS","LOAD","PPTM","SCRIPT_LOAD","BUTTON_RENDER","BUTTON_LOAD","BUTTON_CLICK","BUTTON_RENDER_INTRANET_MODE","BUTTON_CLICK_INTRANET_MODE","CREATE_PAYMENT","RECIEVE_PAYMENT","CHECKOUT_INIT","CHECKOUT_AUTHORIZE","CHECKOUT_SHIPPING_CHANGE","CHECKOUT_CANCEL","CHECKOUT_ERROR","EXTERNAL_EXPERIMENT","EXTERNAL_EXPERIMENT_COMPLETE","PPTM_LOAD","PPTM_LOADED","COUNTRY","AD","AE","AG","AI","AL","AM","AN","AO","AR","AT","AU","AW","AZ","BA","BB","BE","BF","BG","BH","BI","BJ","BM","BN","BO","BR","BS","BT","BW","BY","BZ","C2","CA","CD","CG","CH","CI","CK","CL","CM","CN","CO","CR","CV","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GI","GL","GM","GN","GP","GR","GT","GW","GY","HK","HN","HR","HU","ID","IE","IL","IN","IS","IT","JM","JO","JP","KE","KG","KH","KI","KM","KN","KR","KW","KY","KZ","LA","LC","LI","LK","LS","LT","LU","LV","MA","MC","MD","ME","MG","MH","MK","ML","MN","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PL","PM","PN","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","ST","SV","SZ","TC","TD","TG","TH","TJ","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","US","UY","VA","VC","VE","VG","VN","VU","WF","WS","YE","YT","ZA","ZM","ZW","LANG","CS","DA","EL","EN","HE","JA","KO","ZH","LANG_TO_DEFAULT_COUNTRY","ALLOWED_INSTALLMENT_COUNTRIES","ALLOWED_INSTALLMENT_PERIOD","LOCALE","isPromise","item","Promise","window","Window","constructor","toString","name","call","then","err","dispatchedErrors","possiblyUnhandledPromiseHandlers","dispatchPossiblyUnhandledError","promise","indexOf","push","setTimeout","__DEBUG__","j","length","onPossiblyUnhandledException","handler","cancel","splice","activeCount","flushPromise","flushActive","resolve","startActive","endActive","awaitActive","Zalgo","ZalgoPromise","resolved","rejected","errorHandled","value","error","handlers","dispatching","stack","result","isAsync","res","reject","Error","dispatch","Object","prototype","asyncReject","chain","firstPromise","secondPromise","i","onSuccess","onError","catch","undefined","finally","onFinally","try","timeout","time","clearTimeout","toPromise","TypeError","all","promises","count","results","prom","hash","keys","map","key","items","method","context","args","apply","delay","flush","urlEncode","str","replace","camelToDasherize","string","g","toLowerCase","dasherizeToCamel","toUpperCase","extend","obj","source","hasOwnProperty","values","uniqueID","chars","charAt","Math","floor","random","stringifyWithFunctions","JSON","stringify","val","safeGet","prop","capitalizeFirstLetter","slice","get","path","def","pathParts","split","safeInterval","runInterval","safeTimeout","interval","each","callback","Array","isArray","len","replaceObject","replacers","fullKey","defineProperty","configurable","enumerable","itemKey","child","type","replacer","replaced","set","copyProp","target","descriptor","getOwnPropertyDescriptor","dotify","prefix","newobj","every","join","objectIDs","WeakMap","getObjectID","uid","regex","pattern","start","RegExp","match","index","text","groups","end","regexAll","matches","substr","startIndex","itemCount","stringifyError","message","eventEmitter","triggered","on","eventName","handlerList","cancelled","once","listener","trigger","triggerOnce","noop","called","onceWrapper","arguments","memoize","memoizeWrapper","cacheKey","debounce","debounceWrapper","serializeFunctions","__type__","deserializeFunctions","deserializedFunctionWrapper","self","appendChild","container","isElement","element","Element","nodeType","style","ownerDocument","querySelectorAll","el","selector","getElementSafe","id","document","getElementById","querySelector","getElement","documentReady","readyState","setInterval","clearInterval","isDocumentReady","elementReady","popup","url","options","params","filter","Boolean","win","open","PopupOpenError","isWindowClosed","writeToWindow","html","write","close","location","err2","writeElementToWindow","tag","tagName","documentElement","children","removeChild","setStyle","styleText","doc","styleSheet","cssText","createTextNode","createElement","class","className","attributes","setAttribute","contentWindow","innerHTML","awaitFrameLoadPromises","awaitFrameLoad","frame","has","addEventListener","linkFrameWindow","awaitFrameWindow","loadedFrame","iframe","frameBorder","allowTransparency","backgroundColor","navigator","userAgent","event","removeEventListener","scanForJavascript","parseQuery","queryString","pair","decodeURIComponent","getQueryParam","search","formatQuery","extendQuery","originalQuery","props","extendUrl","query","originalUrl","originalHash","hashString","elementStoppedMoving","getBoundingClientRect","timer","top","bottom","left","right","width","height","getCurrentDimensions","offsetWidth","offsetHeight","changeStyle","styles","setOverflow","overflow","overflowX","overflowY","reset","dimensionsDiff","one","two","threshold","abs","trackDimensions","currentDimensions","check","newDimensions","changed","dimensions","onDimensionsChange","tracker","resolver","onWindowResize","dimensionsMatchViewport","innerWidth","innerHeight","bindEvents","eventNames","VENDOR_PREFIXES","setVendorCSS","capitalizedName","CSSRule","KEYFRAMES_RULE","WEBKIT_KEYFRAMES_RULE","MOZ_KEYFRAMES_RULE","O_KEYFRAMES_RULE","MS_KEYFRAMES_RULE","isValidAnimation","stylesheets","styleSheets","cssRules","cssRule","ANIMATION_START_EVENTS","ANIMATION_END_EVENTS","animate","clean","hasStarted","startTimeout","endTimeout","startEvent","endEvent","cleanUp","animationName","stopPropagation","STYLE","DISPLAY","NONE","BLOCK","VISIBILITY","VISIBLE","HIDDEN","IMPORTANT","makeElementVisible","setProperty","makeElementInvisible","showElement","hideElement","destroyElement","parentNode","showAndAnimate","animation","animateAndHide","addClass","classList","add","removeClass","remove","getCurrentScriptDir","console","warn","currentScript","src","getElementName","isElementClosed","watchElementForClose","getHttpType","contentType","req","XMLHttpRequest","setRequestHeader","send","onload","responseText","onerror","getHTML","getCSS","getScript","prefetchPage","JSX_EVENTS","onClick","fixScripts","script","newScript","textContent","replaceChild","jsxDom","content","textNode","denodeify","denodeifyWrapper","promisify","promisifyWRapper","cycle","isPerc","test","isPx","toNum","parseInt","toPx","toCSS","percOf","num","perc","normalizeDimension","dim","max","memoized","memoizedFunction","__memoized__","displayName","promisifiedFunction","setLogLevel","logLevel","logLevels","config","CONFIG","info","payload","logInfo","logWarn","logError","globalFor","isSameDomain","__ZOID__","localGlobal","global","getDefaultEnv","__TEST__","host","locales","scriptUrl","__FILE_NAME__","paypal_domain_regex","version","__PAYPAL_CHECKOUT__","cors","env","state","locale","country","lang","stage","stageDomain","stageUrl","apiStageUrl","apiStage","localhostUrl","ports","default","merchantID","authCode","throttles","v4_mobile_device","domain_settings","ie_full_page","allow_full_page_fallback","memoize_payment","force_bridge","log_authorize","disable_venmo","creditTestDomains","customCountry","SUPPORTED_BROWSERS","msie","firefox","chrome","safari","opera","msedge","samsungBrowser","silk","ucbrowser","vivaldi","session_uid_lifetime","_apiStage","button","checkout","guest","altpay","paypalUrls","protocol","port","paypalDomains","wwwApiUrls","corsApiUrls","apiUrls","domain","local","sandbox","production","checkoutUri","checkoutUris","altpayUris","guestUris","billingUris","buttonUris","inlinedCardFieldUris","postBridgeUris","legacyCheckoutUris","buttonJSUrls","buttonJSUrl","loginUri","hermesLoggerUri","loggerUri","loggerThrottlePercentage","pptmUri","postBridgeUri","paymentStandardUri","authApiUri","paymentApiUri","orderApiUri","billingApiUri","experienceApiUri","trackingApiUri","checkoutUrls","demo","guestUrls","altpayUrls","billingUrls","buttonUrls","inlinedCardFieldUrls","loginUrls","paymentsStandardUrls","metaFrameUrls","legacyCheckoutUrls","authApiUrls","paymentApiUrls","orderApiUrls","billingApiUrls","experienceApiUrls","trackingApiUrls","_paypalUrl","paypalUrl","paypalDomain","corsApiUrl","wwwApiUrl","apiUrl","checkoutUrl","billingUrl","buttonUrl","legacyCheckoutUrl","postBridgeUrl","postBridgeDomain","loggerUrl","isTestExperiment","pptmUrl","authApiUrl","paymentApiUrl","orderApiUrl","billingApiUrl","experienceApiUrl","defaultLocale","dest","over","isSameProtocol","ajax","headers","data","fireAndForget","XRequest","ActiveXObject","XDomainRequest","headerName","onreadystatechange","promiseDebounce","rejector","onWindowReady","loop","isIE","documentMode","payloadBuilders","metaBuilders","trackingBuilders","headerBuilders","addPayloadBuilder","builder","addMetaBuilder","addTrackingBuilder","addHeaderBuilder","uri","initial_state_name","flushInterval","debounceInterval","sizeLimit","silent","heartbeat","heartbeatConsoleLog","heartbeatInterval","heartbeatTooBusy","heartbeatTooBusyThreshold","autoLog","logUnload","logPerformance","buffer","tracking","transport","getTransport","setTransport","newTransport","loaded","print","level","log","warning","immediateFlush","hasBuffer","hasTracking","meta","events","enqueue","timestamp","Date","now","debug","track","enablePerformance","performance","timing","connectEnd","navigationStart","startTime","elapsed","reqStartElapsed","clientTimer","reqTimer","initHeartBeat","heartBeatTimer","heartbeatCount","heartbeatMaxThreshold","lag","heartbeatPayload","noConsole","initPerformance","client_elapsed","req_elapsed","forEach","offset","memory","navigation","getEntries","resource","initiatorType","initiated","init","conf","beaverLogQueue","windowID","pageID","currentState","startTransition","endTransition","toState","currentTime","elapsedTime","transitionName","duration","transition","transition_time","INTERFACE","isRegex","PROTOCOL","MOCK","FILE","ABOUT","WILDCARD","WINDOW_TYPE","POPUP","IE_WIN_ACCESS_ERROR","isFileProtocol","isAboutProtocol","getParent","parent","getOpener","opener","canReadFromWindow","href","getActualDomain","getDomain","mockDomain","isBlankDomain","isActuallySameDomain","desc","assertSameDomain","getParents","isAncestorParent","childParent","getFrames","frames","getAllChildFrames","childFrame","getTop","getNextOpener","getUltimateTop","getAllFramesInWindow","getAllWindows","isTop","isFrameWindowClosed","contains","safeIndexOf","collection","iframeWindows","iframeFrames","allowMock","closed","mockclosed","iframeIndex","cleanIframes","getUserAgent","mockUserAgent","getFrameByName","winFrames","findChildFrameByName","namedFrame","findFrameByName","isParent","frameParent","isOpener","getAncestor","getAncestors","ancestor","isAncestor","actualParent","isPopup","isIframe","isFullpage","anyMatch","collection1","collection2","item1","item2","getDistanceFromTop","distance","getNthParent","n","getNthParentFromTop","isSameTopWindow","win1","win2","top1","top2","allFrames1","allFrames2","opener1","opener2","matchDomain","origin","some","subpattern","stringifyDomainPattern","getDomainFromUrl","onCloseWindow","maxtime","Infinity","isWindow","__cross_domain_utils_window_check__","isBrowser","isCurrentDomain","isMockDomain","normalizeMockUrl","closeWindow","getFrameForWindow","frameElement","TYPES","ZOID","POST_MESSAGE","INIT","PROPS","PROP_CALLBACK","CLOSE","CHECK_CLOSE","REDIRECT","RESIZE","DELEGATE","ALLOW_DELEGATE","HIDE","SHOW","PROP_TYPES","STRING","OBJECT","FUNCTION","BOOLEAN","NUMBER","INITIAL_PROPS","RAW","UID","WINDOW_REFERENCES","OPENER","TOP","PARENT","GLOBAL","PROP_TYPES_LIST","CONTEXT_TYPES","CLASS_NAMES","OUTLET","COMPONENT_FRAME","PRERENDER_FRAME","INVISIBLE","EVENTS","ATTRIBUTES","IFRAME_PLACEHOLDER","ANIMATION_NAMES","SHOW_CONTAINER","SHOW_COMPONENT","HIDE_CONTAINER","HIDE_COMPONENT","EVENT_NAMES","CLICK","CLOSE_REASONS","PARENT_CALL","CHILD_CALL","CLOSE_DETECTED","USER_CLOSED","PARENT_CLOSE_DETECTED","CONTEXT_TYPES_LIST","CALL_ORIGINAL","CALL_DELEGATE","DEFAULT_DIMENSIONS","WIDTH","CONSTANTS","WINDOW_PROPS","POSTROBOT","registerSelf","POST_MESSAGE_TYPE","REQUEST","RESPONSE","ACK","POST_MESSAGE_ACK","SUCCESS","POST_MESSAGE_NAMES","METHOD","HELLO","OPEN_TUNNEL","WINDOW_TYPES","FULLPAGE","SERIALIZATION_TYPES","PROMISE","ZALGO_PROMISE","REGEX","SEND_STRATEGIES","BRIDGE","MOCK_PROTOCOL","FILE_PROTOCOL","BRIDGE_NAME_PREFIX","POSTROBOT_PROXY","POST_MESSAGE_NAMES_LIST","ALLOW_POSTMESSAGE_POPUP","__ALLOW_POSTMESSAGE_POPUP__","__POST_ROBOT__","BRIDGE_TIMEOUT","CHILD_WINDOW_TIMEOUT","ACK_TIMEOUT","RES_TIMEOUT","ALLOWED_POST_MESSAGE_METHODS","ALLOW_SAME_ORIGIN","moduleGlobal","getGlobal","cache","glob","__CACHE_START_TIME__","hashStr","charCodeAt","pow","sqrt","strHashStr","total","String","fromCharCode","regmatch","safeJSON","listeners","listen","onceListener","awaitKey","newErr","stringifyErrorMessage","defaultMessage","domainMatches","hostname","patchMethod","original","patchedMethod","callOriginal","isObject","assign","deepExtend","hasValue","arr","sortBy","order","sort","a","b","reverseMap","arrayRemove","identity","pixels","percentage","round","min","regexMap","regexMapMatcher","_extends","SEND_MESSAGE_STRATEGIES","serializedMessage","require","emulateIERestrictions","domains","dom","postMessage","sendBridgeMessage","needsBridgeForBrowser","isBridge","needsGlobalMessagingForBrowser","foreignGlobal","receiveMessage","buildMessage","getWindowType","sourceDomain","windowType","sendMessage","serializeMethods","messages","jsonStringify","strategyName","success","status","resetListeners","responseListeners","requestListeners","WINDOW_WILDCARD","WindowWildcard","erroredResponseListeners","__DOMAIN_REGEX__","addResponseListener","getResponseListener","deleteResponseListener","markResponseListenerErrored","isResponseListenerErrored","getRequestListener","nameListeners","winQualifier","winListeners","addRequestListener","listenersCollection","cancelListener","existingListener","strDomain","regexListeners","regexListener","delete","RECEIVE_MESSAGE_TYPES","pathname","ack","respond","originalSource","code","handleError","response","receivedMessages","parseMessage","parsedMessage","jsonParse","deserializeMethods","messageListener","messageEvent","sourceElement","originalEvent","listenForMessages","requestPromises","request","targetWindow","HTMLIFrameElement","hasResult","requestPromise","onChildWindowReady","sayHello","actualDomain","responseListener","ackTimeout","resTimeout","cycleTime","hasAck","sendToParent","client","listenerOptions","errorHandler","requestListener","onceFunction","listenOnce","errorOnClose","disable","cleanUpWindow","popupWindowsByWin","remoteWindows","methods","readyPromises","bridge","initialized","openTunnelToOpener","initOnReady","listenForMethods","attachEvent","detachEvent","eachArray","eachObject","depth","childItem","weakMapMemoize","weakmap","weakmapMemoized","arg","indent","objectToJSON","arrayToJSON","toJSON","parse","meth","isSerialized","serializeMethod","destination","__id__","__name__","serializeError","__message__","__code__","serializePromise","__then__","serializeZalgoPromise","serializeRegex","__source__","deserializeMethod","wrapper","__xdomain__","deserializeError","deserializeZalgoPromise","deserializePromise","deserializeRegex","onHello","isDevice","isWebView","isStandAlone","standalone","matchMedia","isFacebookWebView","ua","isFirefoxIOS","isEdgeIOS","isOperaMini","isAndroid","isIos","isGoogleSearchApp","isQQBrowser","isIosWebview","isAndroidWebview","isIECompHeader","mHttp","mContent","isElectron","process","versions","electron","isIEIntranet","isMacOsCna","supportsPopups","isChrome","isSafari","getFunctionName","fn","setFunctionName","base64encode","btoa","encodeURIComponent","m","p1","Buffer","from","base64decode","atob","c","randomID","timeID","toISOString","__GLOBAL__","serializeArgs","subkey","cacheMap","getOrSet","thisNamespace","cacheTime","promiseIdentity","memoizePromise","memoizedPromiseFunction","inlineMemoize","logic","__inline_memoize_cache__","regexp","svgToBase64","svg","objFilter","regexTokenize","token","promiseDebounced","localPromise","isInteger","isFloat","serializePrimitive","deserializePrimitive","parseFloat","undotify","keyResult","parts","part","isLast","isIndex","defineLazyProp","getter","arrayFrom","isObjectObject","isPlainObject","isDefined","weakMapMemoizePromise","weakmapMemoizedPromise","cleanup","tasks","cleaned","register","task","pop","tryCatch","removeFromArray","assertExists","thing","unique","KEY_CODES","ENTER","body","waitForWindowReady","waitForDocumentReady","waitForDocumentBody","urlWillRedirectPage","redirect","hasMetaViewPort","screen","isElementVisible","getClientRects","getPageRenderTime","domInteractive","htmlEncode","keyCode","scripts","getElementsByTagName","isLocalStorageEnabled","localStorage","setItem","getItem","removeItem","getBrowserLocales","nav","languages","language","userLanguage","create","outerWidth","screenX","outerHeight","screenY","toolbar","menubar","resizable","scrollbars","border","hasAttribute","onResize","currentWidth","currentHeight","newWidth","newHeight","observer","ResizeObserver","observe","MutationObserver","childList","subtree","characterData","disconnect","getResourceLoadTime","entries","entry","DEFAULT_SESSION_STORAGE","getStorage","lifetime","STORAGE_KEY","accessedStorage","getState","localStorageEnabled","storage","rawStorage","getID","getSession","session","__session__","created","guid","getSessionState","getSessionID","getBelterExperimentStorage","isEventUnique","loggedBeacons","getThrottlePercentile","throttlePercentiles","THROTTLE_GROUP","CONTROL","THROTTLE","experiment","sample","logTreatment","logCheckpoint","throttle","group","treatment","started","forced","isEnabled","isDisabled","getTreatment","checkpoint","logStart","logComplete","getGlobalNameSpace","globalKey","namespace","defValue","HEADERS","CONTENT_TYPE","ACCEPT","parseHeaders","rawHeaders","trim","line","json","normalizedHeaders","headerBuilder","builtHeaders","xhr","xhrLoad","responseHeaders","getAllResponseHeaders","isJSON","responseBody","evt","ontimeout","xhrTimeout","wrapPromise","expected","expect","expectWrapper","avoid","avoidWrapper","expectError","expectErrorWrapper","drain","hasNativeWeakMap","freeze","testWeakMap","testKey","testValue","CrossDomainSafeWeakMap","_cleanupClosedWindows","isSafeToReadWrite","writable","LOCAL_STORAGE_KEY","SESSION_KEY","GLOBAL_KEY","getStorageState","getStorageID","xprops","sessionID","querySessionID","isPayPalDomain","getButtonSessionID","buttonSessionID","getGlobalState","isInsidePopup","isIE11","_inheritsLoose","subClass","superClass","__proto__","tunnelWindows","tunnelWindowId","deleteTunnelWindow","cleanTunnelWindows","tunnelWindow","addTunnelWindow","canary","getTunnelWindow","openTunnelToParent","parentWindow","needsBridgeForWin","needsBridgeForDomain","needsBridge","getBridgeName","sanitizedDomain","documentBodyReady","registerRemoteWindow","sendMessagePromise","findRemoteWindow","registerRemoteSendMessage","remoteWindow","sendMessageWrapper","remoteWin","remoteDomain","rejectRemoteSendMessage","messagingChild","messagingParent","awaitRemoteBridgeForWindow","bridges","bridgeFrames","popupWindowsByName","listenForRegister","winDetails","openBridgeFrame","hasBridge","openBridge","windowOpen","windowOpenWrapper","last","winName","winOptions","linkUrl","destroyBridges","documentBody","loadScript","attrs","scriptOnReadyStateChange","scriptLoadError","attr","head","isNodeList","nodes","HTMLElement","getElements","NodeList","HTMLCollection","onDocumentReady","hasHash","serverUrl","originalQueryString","newQueryString","newUrl","normalizeLocale","normalizeLang","getBrowserLocale","loc","IntegrationError","RenderError","allowIframe","parentComponentWindow","xchild","getParentComponentWindow","BEACON_URL","APP_NAME","beacon","appName","beaconImage","Image","isCheckpointUnique","checkpointName","FPTI_URL","buildPayload","v","t","getTimezoneOffset","flnm","shir","pgrp","page","vers","qual","tmpl","fpti","extendNamespace","xports","namespaces","childnamespaces","childname","childnamespace","root","NODE_JS","HI_BASE32_NO_NODE_JS","node","COMMON_JS","HI_BASE32_NO_COMMON_JS","module","exports","AMD","define","BASE32_ENCODE_CHAR","BASE32_DECODE_CHAR","blocks","throwInvalidUtf8","position","partial","toUtf8String","bytes","followingChars","decodeAsBytes","base32Str","v1","v2","v3","v4","v5","v6","v7","v8","remain","encodeAscii","encodeUtf8","encodeBytes","encode","input","asciiOnly","notString","ArrayBuffer","Uint8Array","decode","asBytes","base32","component","render","getAttribute","innerText","eval","scan","scriptTags","react","React","ReactDOM","createClass","componentDidMount","findDOMNode","setState","componentDidUpdate","updateProps","componentWillUnmount","destroy","Component","vue","inheritAttrs","mounted","$el","$attrs","beforeUpdate","angular","ng","directive","scope","getPropNames","looseProps","restrict","controller","$scope","$element","safeApply","$root","$$phase","$apply","getProps","scopeProps","angularWrapped","$watch","glimmer","GlimmerComponent","didInsertElement","angular2","zoid","AngularComponent","NgModule","ElementRef","NgZone","internalProps","angular2Wrapped","zone","run","ComponentInstance","template","inputs","Class","angularConstructor","elementRef","ngOnInit","targetElement","nativeElement","ngOnChanges","ModuleInstance","declarations","e","r","C","o","u","f","l","h","p","d","y","w","E","S","x","T","N","whale","mzbrowser","coast","focus","yandexbrowser","maxthon","epiphany","puffin","sleipnir","kMeleon","osname","windowsphone","chromeos","chromeBook","sailfish","seamonkey","firefoxos","phantom","slimer","blackberry","webos","touchpad","bada","tizen","qupzilla","chromium","googlebot","blink","webkit","gecko","android","ios","mac","xbox","windows","linux","k","osversion","L","tablet","mobile","s","reverse","isUnsupportedBrowser","compareVersions","_detect","detect","sourceWindow","paypal","__MINOR_VERSION__","Button","existingVersion","_interface","errtype","_assertThisInitialized","ReferenceError","_applyDecoratedDescriptor","property","decorators","initializer","reduce","decorator","complete","hasTasks","BaseComponent","addProp","createError","listenerName","errorListener","normalize","buildChildWindowName","encodedName","encodedVersion","encodedOptions","isZoidComponentWindow","zoidcomp","getComponentMeta","componentMeta","getParentDomain","getWindowByRef","ref","componentParent","getParentRenderWindow","renderParent","getPosition","normalizeChildProp","getProp","childDecorate","normalizeChildProps","required","sameDomain","alias","ChildComponent","onPropHandlers","onInit","watchingForResize","autoResize","hasValidParentDomain","setProps","getInitialProps","setWindows","watchForResize","allowedParentDomains","onProps","func","normalizedProps","__activeZoidComponent__","watchForClose","checkClose","enableAutoResize","getAutoResize","resize","hide","show","userClose","reason","stringifiedError","_defineProperties","_createClass","Constructor","protoProps","staticProps","RENDER_DRIVERS","focusable","renderedIntoContainerTemplate","allowResize","openOnClick","childWindowName","title","scrolling","frameWindow","detectClose","onClose","iframeWatcher","elementWatcher","openPrerender","prerenderIframe","prerenderFrameWindow","prerenderWindow","switchPrerender","delegateOverrides","openContainer","destroyComponent","destroyContainer","cancelContainerEvents","createPrerenderTemplate","showContainer","showComponent","hideContainer","hideComponent","loadUrl","hijackSubmit","renderTemplate","openContainerFrame","getOutlet","override","overrideOpen","validateProp","hasProp","sendToChild","isNaN","validate","validateProps","normalizeProp","instance","resultValue","decorated","decorate","bind","normalizeProps","normalizedProp","queryParam","getQueryValue","queryValue","propsToQuery","propsDef","serialization","dotkey","escape","ParentComponent","handledErrors","outlet","childExports","validateParentDomain","renderTo","registerActiveComponent","watchForUnload","tryInit","onRender","driver","linkDomain","loadHTML","buildUrl","runTimeout","onEnter","checkAllowRenderTo","delegate","prefetch","activeComponents","getComponentParentRef","getRenderParentRef","renderToWindow","childDomain","sProps","getPropsForChild","secureProps","unsafeRenderTo","propUrl","builtinProps","getValidDomain","getUrl","finalUrl","xcomponent","builtUrl","needsBridgeParams","bridgeUrl","getBridgeUrl","bridgeDomain","getBridgeDomain","windowName","prerenderTemplate","onDisplay","propName","allowDelegate","overrides","overridenFunction","closeWindowListener","onunload","unloadWindowListener","hijack","onTimeout","closeComponent","closeContainer","renderer","CLASS","ANIMATION","CONTEXT","EVENT","actions","containerTemplate","errErr","destroyAll","DelegateComponent","getOverrides","delegateOverride","validatePropDefinitions","contexts","anyEnabled","defaultContext","defaultEnv","defaultContainerTemplate","defaultPrerenderTemplate","getInternalProps","defaultLogLevel","drivers","listenForResize","driverCache","components","registerDrivers","registerChild","listenDelegate","driverName","dep","isChild","canRenderTo","getForEnv","envUrl","isZoidComponent","getRenderContext","validateRenderContext","getDefaultContext","renderIframe","renderPopup","renderIframeTo","renderPopupTo","prerender","innerProps","innerElement","logWarning","getByTag","postRobot","_postRobot","_CONSTANTS","proxyMethod","originalMethod","postMessageProxy","getRefererDomain","setupProxyLogTransport","getToken","queryToken","initLogger","referer","ver","paymentToken","contextType","contextID","__DEFAULT_LOG_LEVEL__","loggerConfig","POSTROBOT_CONFIG","bowserCache","getBowser","bowser","getBrowser","browser","isBrowserEligible","eligibilityResults","isEligible","checkRecognizedBrowser","flushLogs","checkForCommonErrors","foo","bar","baz","zomg","returnContext","corrids","prev_corr_ids","corrID","xhrError","getResponseHeader","post","getThrottle","sticky","percentile","expuid","getReturnToken","payer","getCurrentScript","isPayPalObjects","getScriptVersion","__MIN__","getCurrentScriptUrl","getDomainSetting","openMetaFrame","iframeEligible","iframeEligibleReason","rememberedFunding","metaFrameUrl","metaFrameDomain","metaListener","getRememberedFunding","hasRememberedFunding","recentlyCheckedRemembered","isRememberedFunding","getRememberedFundingPromises","rememberFundingPromises","getRememberedFundingPromise","flushRememberedFundingPromises","sources","rememberFunding","loadMeta","isFundingRemembered","precacheRememberedFunding","JsxHTMLNode","propsToString","childrenToString","iterate","JsxHTMLNodeContainer","jsxToHTML","jsxRender","renderers","break","onAuthorize","onLegacyPaymentAuthorize","postBridge","watchForLegacyFallback","isLegacy","ppxoWatching","XMLHttpRequestsend","overrideXMLHttpRequestSend","_patched","DONE","returnUrl","billingToken","payerID","paymentID","Checkout","XhrResponse","RESPONSE_TYPES","mob","Xhr","_xhrOnReady","onLegacyFallback","determineParameterFromToken","getPaymentType","payment","determineUrl","fundingSource","paymentType","awaitBraintreeClient","braintree","auth","authorization","paypalCheckout","SUPPORTED_REST_FIELDS","intent","transactions","amount","currency","external_selected_funding_instrument_type","shipping_address","line1","line2","city","postal_code","country_code","phone","recipient_name","application_context","brand_name","shipping_preference","landing_page","supported","supportedKeys","mapPaymentToBraintree","btPayment","flow","offerCredit","shippingAddressOverride","postalCode","countryCode","recipientName","landingPageType","enableShippingAddress","shippingAddressEditable","checkoutComponentStyle","componentTemplate","P24_LOGO_COLORS","primary","secondary","p24Logo","logoColor","SOFORT_LOGO_COLORS","sofortLogo","IDEAL_LOGO_COLORS","tertiary","idealLogo","GIROPAY_LOGO_COLORS","giropayLogo","EPS_LOGO_COLORS","epsLogo","MYBANK_LOGO_COLORS","mybankLogo","BANCONTACT_LOGO_COLORS","bancontactLogo","PAYU_LOGO_COLORS","quaternary","payuLogo","VERKKOPANKKI_LOGO_COLORS","quinary","senary","verkkopankkiLogo","BLIK_LOGO_COLORS","blikLogo","TRUSTLY_LOGO_COLORS","trustlyLogo","MAXIMA_LOGO_COLORS","maximaLogo","BOLETO_LOGO_COLORS","boletoLogo","OXXO_LOGO_COLORS","oxxoLogo","PAYPAL_LOGO_COLORS","paypalLogo","CREDIT_LOGO_COLORS","creditLogo","fundingLogos","pp_white","pp_blue","pp_black","venmo_white","venmo_blue","itau","elv","elv_white","cardLogos","visa","amex","mastercard","maestro","discover","hiper","elo","jcb","cup","containerContent","getContainerStyle","getSandboxStyle","LOGO_COLOR","preventDefault","alert","overlayColor","ppLogo","pp","windowMessage","continue","addHeader","$Api","commit","experience","fundingOffered","elements","fundingSources","decorateOnAuthorize","redir","isButton","isGuest","access_token","onShippingChange","onAuth","wrapOnAuth","accessToken","onCancel","decorateOnCancel","cancelUrl","decorateInit","decorateOnClose","shouldCancel","fallback","defaultFallback","__test__","action","sdkMeta","injector","payment_action","_context","containerStyle","BillingPage","cardType","prefilledZipCode","onEvent","ThreeDomainSecure","challengeUrl","threeDomainSecureToken","shouldCreateInitialPptmScript","existingScript","alreadyDownloaded","removePptm","pptmFactory","noContentFoundInContainer","reloadPptmScript","clientId","tryCreatePptmScript","shouldReloadPptmScript","createPptmScript","listenForLoadWithNoContent","listenForButtonRender","paypalDDL","buttonRenderEvent","mrid","client_id","fullUrl","async","pptm","proxyRest","createAccessToken","clientID","basicAuth","Authorization","grant_type","createExperienceProfile","experienceDetails","temporary","logPaymentResponse","links","rel","getDefaultReturnUrl","createTracking","trackingData","trackingID","createPayment","paymentDetails","redirect_urls","return_url","cancel_url","payment_method","experienceID","experience_profile_id","partner_attribution_id","createOrder","purchase_units","unit","reference_id","createBillingAgreement","billingDetails","plan","merchant_preferences","token_id","rest","billingAgreement","PROXY_REST","parentWin","onAuthorizeListener","loggedEvents","loggedExperimentEvents","duplicate","edge","logExperimentTreatment","externalExperiment","externalExperimentTreatment","externalExperimentToken","logReturn","returnToken","OPTYPE","PAYMENT","CANCEL","CONTINGENCY","PAYMENT_CANCELLED","wrapPopupBridge","popupBridge","onComplete","redirect_uri","getReturnUrlPrefix","validateCheckoutProps","normalizeCheckoutProps","useraction","native_xo","extractDataFromQuery","ba_token","paymentId","PayerID","opType","return_uri","cancel_uri","buildActions","redirectUrl","renderThroughPopupBridge","queryItems","awaitPopupBridge","setupPopupBridgeProxy","doRender","popupBridgeRender","popupBridgeRenderTo","popupBridgeRenderPopupTo","FUNDING_PRIORITY","FUNDING_ORDER","FUNDING_CONFIG","enabled","allowOptIn","allowOptOut","allowRemember","allowHorizontal","allowVertical","requireCommitAsTrue","__paypal_checkout__","serverConfig","paypalMerchantConfiguration","creditCard","isPayPalBranded","allowedCountries","defaultVerticalCountries","platforms","allowedEnvs","CARD_CONFIG","priority","getConfig","category","categoryConfig","getFundingConfig","getCardConfig","fundingEligibilityReasons","isFundingIneligible","funding","layout","isVertical","allowSecondary","disallowed","isFundingAutoEligible","allowed","remembered","isFundingEligible","selected","eligible","ineligibleReason","autoEligibleReason","determineEligibleFunding","reasons","eligibleFunding","factors","unshift","determineEligibleCards","card","validateFunding","logFundingEligibility","table","BUTTON_CONFIG","colors","sizes","shapes","layouts","logoColors","tagLineColors","secondaryColors","dualTag","defaultLabel","defaultVerticalLabel","defaultColor","defaultSize","defaultVerticalSize","defaultShape","defaultLayout","defaultBranding","defaultVerticalBranding","defaultFundingIcons","defaultTagline","defaultDual","minimumSize","minimumVerticalSize","maximumSize","maximumVerticalSize","minHorizontalButtons","minVerticalButtons","maxHorizontalButtons","maxVerticalButtons","allowUnbranded","allowFundingIcons","allowPrimary","allowPrimaryVertical","allowPrimaryHorizontal","label","logoLabel","installmentperiod","allowSecondaryVertical","allowSecondaryHorizontal","FUNDING_TO_DEFAULT_LABEL","LABEL_TO_FUNDING","BUTTON_RELATIVE_STYLE","VERTICAL_MARGIN","BUTTON_STYLE","defaultWidth","defaultHeight","minWidth","maxWidth","minHeight","maxHeight","buttonTextMargin","allowFunding","allowTagline","byPayPalHeight","labelToFunding","fundingToDefaultLabel","getButtonConfig","parseLocale","determineMaxButtons","configMax","enableTagline","tagline","branding","fundingicons","defs","checkoutCustomization","size","color","shape","multiple","cards","validateButtonLocale","validateRegionSpecificButton","isInstallmentAllowedCountry","validateButtonStyle","maxbuttons","minButtons","buttonSize","validateButtonProps","SHOULD_FOCUS","CONTAINER","TAGLINE_COLOR","TEXT","LOGO","SEPARATOR","DOM_READY","PERSONALIZATION_TEXT","pageStyle","buttonStyle","layoutStyle","brandingStyle","labelStyle","DUAL_BUTTON_MIN_RATIO","buttonResponsiveStyle","cardNumber","buttonHeight","buttonTextMarginTop","minDualWidth","ceil","toFixed","buttonColorStyle","componentStyle","LoadingDots","Beacon","impression","Tagline","tagColor","getComponentScript","OPTIONAL","SELECTOR","TAG","toArray","parentElement","sum","getAllChildren","getOptionalIndex","getElementsTotalWidth","getOptionalParents","optional","getOptionalChildren","first","second","optionalParent","allChildren","optionalChildren","toggleOptionals","parentWidth","usedWidth","optionalChild","setupTabOutlineEvent","buttonsContainer","getElementsByClassName","tabKeyCode","handleMouseDownOnce","handleFirstTab","setDomReady","load","componentContent","allowedPersonalizationLabels","getCommonButtonClasses","getButtonClasses","getLocaleContent","determineLabel","labelMatchesFunding","determineButtons","buttonLabel","buttonColor","renderCards","logo","renderFundingIcons","renderPersonalizationButtonText","getButtonTextAnimationStyle","personalizedButtonText","allowedAnimation","MIN_WIDTH","LABEL_DURATION","PERSONALIZATION_DURATION","DELAY","COMPRESSED","EXPANDED","PAYPAL_BUTTON","PAYPAL_LOGO","BUTTON_TEXT","renderContent","dynamicContent","contentString","contentVariable","separator","renderButtonTextDiv","contentText","renderButton","morsText","buttonText","__WEB__","hasTabIndex","renderTagline","renderScript","renderStyle","renderPowerByPaypalLogo","isCardDisallowed","buttonNodes","taglineNode","fundingiconNode","styleNode","scriptNode","labelPowerByPayPal","possibleSizes","possibleSize","sizeA","sizeB","setupButtonChild","ButtonComponent","pageRenderTime","onApprove","pre","inlineGuest","treatments","isCreditDualEligible","creditThrottle","allowpaymentrequest","enableNativeCheckout","prefetchLogin","updateClientConfiguration","memoizedToken","button_version","remember","decorateOnRender","restart","tokenize","tokenizePayment","execute","nonce","decorateOnShippingChange","patch","patchObject","decorateOnClick","initialHeight","logInlineGuestOutOfViewPortOnlyOnce","onResizeHandler","getScrollOffsetY","pageYOffset","scrollTop","checkIfExpansionInViewport","scrollOffsetY","windowHeight","containerOffsetY","VISIBLE_THRESHOLD","isContainerExpanded","isExpansionInViewport","decorateValidate","validateCalled","getPageUrl","canRenderTop","methodName","unDebounce","createOriginal","createContext","originalPayment","resolveData","rejectActions","ctx","Card","initialFormValues","cardIcons","display","submitButton","currencyConversion","domainToEnv","setDomainEnv","currentDomainEnv","err3","currentProtocol","configure","precacheRemembered","setup","scriptProtocol","loadTime","apps","PayPalCheckout","enableCheckoutIframe","logger","_enableCheckoutIframe","_Checkout","_BillingPage","_ThreeDomainSecure","_destroyAll"],"mappings":";QAAA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;AC1EO,IAAMA,oBAAgD,GAAG;AAC5DC,OAAK,EAAe,OADwC;AAE5DC,MAAI,EAAgB,MAFwC;AAG5DC,OAAK,EAAe,OAHwC;AAI5DC,OAAK,EAAe,OAJwC;AAK5DC,QAAM,EAAc,QALwC;AAM5DC,YAAU,EAAU,YANwC;AAO5DC,cAAY,EAAQ,cAPwC;AAQ5DC,UAAQ,EAAY,UARwC;AAS5DC,SAAO,EAAa,SATwC;AAU5DC,QAAM,EAAc,QAVwC;AAW5DC,mBAAiB,EAAG;AAXwC,CAAzD;AAkBA,IAAMC,YAAgC,GAAG;AAC5CC,QAAM,EAAQ,QAD8B;AAE5CC,UAAQ,EAAM,UAF8B;AAG5CC,KAAG,EAAW,KAH8B;AAI5CC,QAAM,EAAQ,QAJ8B;AAK5CC,MAAI,EAAU,MAL8B;AAM5CC,QAAM,EAAQ,QAN8B;AAO5CC,aAAW,EAAG,aAP8B;AAQ5CC,OAAK,EAAS,OAR8B;AAS5CC,MAAI,EAAU,MAT8B;AAU5CC,OAAK,EAAS,OAV8B;AAW5CC,KAAG,EAAW,KAX8B;AAY5CC,YAAU,EAAI,YAZ8B;AAa5CC,SAAO,EAAO,SAb8B;AAc5CC,QAAM,EAAQ,QAd8B;AAe5CC,KAAG,EAAW,KAf8B;AAgB5CC,QAAM,EAAQ,QAhB8B;AAiB5CC,KAAG,EAAW,KAjB8B;AAkB5CC,MAAI,EAAU,MAlB8B;AAmB5CC,cAAY,EAAE,cAnB8B;AAoB5CC,MAAI,EAAU,MApB8B;AAqB5CC,SAAO,EAAO,SArB8B;AAsB5CC,QAAM,EAAQ,QAtB8B;AAuB5CC,QAAM,EAAQ,QAvB8B;AAwB5CC,MAAI,EAAU;AAxB8B,CAAzC;AA8BA,IAAMC,YAAgC,GAAG;AAC5CC,MAAI,EAAS,MAD+B;AAE5CC,MAAI,EAAS,MAF+B;AAG5CC,QAAM,EAAO,QAH+B;AAI5CC,OAAK,EAAQ,OAJ+B;AAK5CC,UAAQ,EAAK,UAL+B;AAM5CC,OAAK,EAAQ,OAN+B;AAO5CC,aAAW,EAAE;AAP+B,CAAzC;AAaA,IAAMC,iBAA0C,GAAG;AACtDN,MAAI,EAAG,MAD+C;AAEtDI,OAAK,EAAE,OAF+C;AAGtDF,OAAK,EAAE,OAH+C;AAItDK,KAAG,EAAI;AAJ+C,CAAnD;AAUA,IAAMC,WAA8B,GAAG;AAC1CC,MAAI,EAAQ,MAD8B;AAE1CC,OAAK,EAAO,OAF8B;AAG1CC,QAAM,EAAM,QAH8B;AAI1CC,OAAK,EAAO,OAJ8B;AAK1CC,MAAI,EAAQ,MAL8B;AAM1CC,YAAU,EAAE;AAN8B,CAAvC;AAYA,IAAMC,oBAAgD,GAAG;AAC5Db,OAAK,EAAE,OADqD;AAE5DF,MAAI,EAAG;AAFqD,CAAzD;AAQA,IAAMgB,YAAgC,GAAG;AAC5CC,MAAI,EAAE,MADsC;AAE5CC,MAAI,EAAE;AAFsC,CAAzC;AAQA,IAAMC,eAAsC,GAAG;AAClDC,SAAO,EAAI,SADuC;AAElDC,WAAS,EAAE;AAFuC,CAA/C;AAQA,IAAMC,aAAkC,GAAG;AAC9CC,YAAU,EAAE,YADkC;AAE9CC,UAAQ,EAAI;AAFkC,CAA3C;AAQA,IAAMC,aAAkC,GAAG;AAC9CC,QAAM,EAAI,QADoC;AAE9CC,UAAQ,EAAE;AAFoC,CAA3C;AAQA,IAAMC,WAA8B,GAAG;AAC1CC,IAAE,EAAY,IAD4B;AAE1CvD,QAAM,EAAQ,QAF4B;AAG1CO,OAAK,EAAS,OAH4B;AAI1CC,MAAI,EAAU,MAJ4B;AAK1CL,QAAM,EAAQ,QAL4B;AAM1CM,OAAK,EAAS,OAN4B;AAO1CC,KAAG,EAAW,KAP4B;AAQ1CC,YAAU,EAAI,YAR4B;AAS1CC,SAAO,EAAO,SAT4B;AAU1CC,QAAM,EAAQ,QAV4B;AAW1CC,KAAG,EAAW,KAX4B;AAY1CC,QAAM,EAAQ,QAZ4B;AAa1CC,KAAG,EAAW,KAb4B;AAc1CC,MAAI,EAAU,MAd4B;AAe1CC,cAAY,EAAE,cAf4B;AAgB1CC,MAAI,EAAU,MAhB4B;AAiB1CC,SAAO,EAAO,SAjB4B;AAkB1CC,QAAM,EAAQ,QAlB4B;AAmB1CC,QAAM,EAAQ,QAnB4B;AAoB1CC,MAAI,EAAU;AApB4B,CAAvC,C;;ACjIA,IAAMiC,sBAAsB,GAAG;AAClC5B,OAAK,EAAE,OAD2B;AAElCE,OAAK,EAAE;AAF2B,CAA/B,C;;ACAA,IAAM2B,OAAO,GAAG;AACnBzD,QAAM,EAAQ,QADK;AAEnBO,OAAK,EAAS,OAFK;AAGnBC,MAAI,EAAU,MAHK;AAInBL,QAAM,EAAQ,QAJK;AAKnBC,MAAI,EAAU,MALK;AAMnBK,OAAK,EAAS,OANK;AAOnBC,KAAG,EAAW,KAPK;AAQnBC,YAAU,EAAI,YARK;AASnBC,SAAO,EAAO,SATK;AAUnBC,QAAM,EAAQ,QAVK;AAWnBC,KAAG,EAAW,KAXK;AAYnBC,QAAM,EAAQ,QAZK;AAanBC,KAAG,EAAW,KAbK;AAcnB0C,SAAO,EAAO,SAdK;AAenBzC,MAAI,EAAU,MAfK;AAgBnBC,cAAY,EAAE,cAhBK;AAiBnBC,MAAI,EAAU,MAjBK;AAkBnBC,SAAO,EAAO,SAlBK;AAmBnBC,QAAM,EAAQ,QAnBK;AAoBnBC,QAAM,EAAQ,QApBK;AAqBnBC,MAAI,EAAU;AArBK,CAAhB;AAwBA,IAAMnB,IAAI,GAAG;AAChBuD,MAAI,EAAS,MADG;AAEhBC,YAAU,EAAG,YAFG;AAGhBC,MAAI,EAAS,MAHG;AAIhBC,UAAQ,EAAK,UAJG;AAKhBC,QAAM,EAAO,QALG;AAMhBC,SAAO,EAAM,SANG;AAOhBC,OAAK,EAAQ,OAPG;AAQhBC,KAAG,EAAU,KARG;AAShBC,KAAG,EAAU,KATG;AAUhBC,KAAG,EAAU,KAVG;AAWhBC,UAAQ,EAAK,UAXG;AAYhBC,SAAO,EAAM,SAZG;AAahBC,SAAO,EAAM,SAbG;AAchBC,aAAW,EAAE;AAdG,CAAb;AAiBA,IAAMC,0BAA0B,GAAG;AACtCC,SAAO,EAAe,0CADgB;AAEtCC,aAAW,EAAW,qDAFgB;AAGtCC,sBAAoB,EAAE,wDAHgB;AAItCC,SAAO,EAAe,yDAJgB;AAKtCC,QAAM,EAAgB,mDALgB;AAMtCC,oBAAkB,EAAI,0DANgB;AAOtCC,iBAAe,EAAO,iEAPgB;AAQtCC,SAAO,EAAe,wDARgB;AAStCC,YAAU,EAAY,wDATgB;AAUtCC,aAAW,EAAW,2DAVgB;AAWtCC,gBAAc,EAAQ,kEAXgB;AAYtCC,aAAW,EAAW;AAZgB,CAAnC;AAeA,IAAMC,aAAa,GAAG,CACzBlF,IAAI,CAACuD,IADoB,EAEzBvD,IAAI,CAACwD,UAFoB,EAGzBxD,IAAI,CAACyD,IAHoB,EAIzBzD,IAAI,CAAC0D,QAJoB,EAKzB1D,IAAI,CAAC2D,MALoB,EAMzB3D,IAAI,CAAC4D,OANoB,EAOzB5D,IAAI,CAAC6D,KAPoB,EAQzB7D,IAAI,CAAC8D,GARoB,EASzB9D,IAAI,CAAC+D,GAToB,EAUzB/D,IAAI,CAACgE,GAVoB,EAWzBhE,IAAI,CAACiE,QAXoB,EAYzBjE,IAAI,CAACkE,OAZoB,EAazBlE,IAAI,CAACmE,OAboB,EAczBnE,IAAI,CAACoE,WAdoB,CAAtB,C;;ACxDA,IAAMe,GAAG,GAAG;AACfC,OAAK,EAAO,OADG;AAEfC,OAAK,EAAO,OAFG;AAGfC,SAAO,EAAK,SAHG;AAIfC,YAAU,EAAE,YAJG;AAKfC,MAAI,EAAQ,MALG;AAMfC,MAAI,EAAQ;AANG,CAAZ;AASA,IAAMC,KAAK,GAAG;AACjBC,KAAG,EAAS,KADK;AAEjBb,YAAU,EAAE;AAFK,CAAd;AAKA,IAAMc,MAAM,GAAG;AAClBC,QAAM,EAAU,QADE;AAElBC,gBAAc,EAAE;AAFE,CAAf;AAKA,IAAMC,SAAS,GAAG;AACrBC,OAAK,EAAE,OADc;AAErBC,MAAI,EAAG,MAFc;AAGrBC,MAAI,EAAG,MAHc;AAIrBC,OAAK,EAAE;AAJc,CAAlB;AAOA,IAAMC,YAAY,GAAG;AACxBC,UAAQ,EAAE,UADc;AAExBC,UAAQ,EAAE,UAFc;AAGxBC,QAAM,EAAI;AAHc,CAArB;AAMA,IAAMC,OAAO,GAAG,SAAhB;AAEA,IAAMC,SAAS,GAAG;AACrBC,QAAM,EAAU,aADK;AAErBC,gBAAc,EAAE,qBAFK;AAGrB3G,MAAI,EAAY,WAHK;AAIrB4G,SAAO,EAAS,cAJK;AAKrBxH,QAAM,EAAU,aALK;AAMrBH,MAAI,EAAY;AANK,CAAlB;AASA,IAAM4H,QAAQ,GAAG;AACpBC,SAAO,EAAE,SADW;AAEpBC,QAAM,EAAG;AAFW,CAAjB;AAKA,IAAMlC,OAAO,GAAG,SAAhB,C;;;;AChDP;AAEO,IAAMmC,IAAI,GAAG;AAEhBC,KAAG,EAAE;AACDC,QAAI,EAAoB,WADvB;AAEDC,SAAK,EAAmB,YAFvB;AAGDC,cAAU,EAAc,iBAHvB;AAIDC,eAAW,EAAa,aAJvB;AAKDC,eAAW,EAAa,iBALvB;AAMDC,sBAAkB,EAAM,mBANvB;AAODC,SAAK,EAAmB,OAPvB;AAQDC,cAAU,EAAc,YARvB;AASDC,gBAAY,EAAY,cATvB;AAUDC,WAAO,EAAiB,aAVvB;AAWDpB,UAAM,EAAkB,QAXvB;AAYDqB,aAAS,EAAe,WAZvB;AAaDC,eAAW,EAAa,wBAbvB;AAcDC,iBAAa,EAAW,eAdvB;AAeDC,cAAU,EAAc,gBAfvB;AAgBDC,cAAU,EAAc,gBAhBvB;AAiBDC,kBAAc,EAAU,gBAjBvB;AAkBDC,mBAAe,EAAS,YAlBvB;AAmBDC,kBAAc,EAAU,eAnBvB;AAoBDC,mBAAe,EAAS,iBApBvB;AAqBDC,gBAAY,EAAY,0BArBvB;AAsBDC,iBAAa,EAAW,wBAtBvB;AAuBDC,kBAAc,EAAU,yBAvBvB;AAwBD3F,iBAAa,EAAW,eAxBvB;AAyBDxB,gBAAY,EAAY,cAzBvB;AA0BDU,eAAW,EAAa,aA1BvB;AA2BDQ,gBAAY,EAAY,cA3BvB;AA4BD3C,gBAAY,EAAY,cA5BvB;AA6BD6I,gBAAY,EAAY,cA7BvB;AA8BD5B,WAAO,EAAiB,oBA9BvB;AA+BD6B,eAAW,EAAa,aA/BvB;AAgCDC,sBAAkB,EAAM,oBAhCvB;AAiCDC,0BAAsB,EAAE,wBAjCvB;AAkCDC,qBAAiB,EAAO,mBAlCvB;AAmCDC,gBAAY,EAAY,cAnCvB;AAoCDC,kBAAc,EAAU;AApCvB,GAFW;AAyChBzB,aAAW,EAAE;AACT0B,UAAM,EAAE,QADC;AAETC,QAAI,EAAI,MAFC;AAGTC,UAAM,EAAE;AAHC,GAzCG;AA+ChBpB,aAAW,EAAE;AACThI,YAAQ,EAAE;AADD,GA/CG;AAmDhB6H,cAAY;AACRwB,qBAAiB,EAAU;AADnB,mBAEN9C,YAAY,CAACG,MAFP,IAEmB,QAFnB,gBAGNH,YAAY,CAACC,QAHP,IAGmB,UAHnB,gBAIND,YAAY,CAACE,QAJP,IAImB,UAJnB,gBAnDI;AA0DhBY,MAAI,EAAE;AACFiC,cAAU,EAAE;AADV,GA1DU;AA8DhBhC,OAAK,EAAE;AACHiC,QAAI,EAAM,iBADP;AAEH1C,UAAM,EAAI,mBAFP;AAGH7G,YAAQ,EAAE,qBAHP;AAIHwJ,QAAI,EAAM;AAJP,GA9DS;AAqEhBjC,YAAU,EAAE;AACRkC,eAAW,EAAE,qBADL;AAGRC,iBAAa,EAAI,uBAHT;AAIRC,eAAW,EAAM,qBAJT;AAKRC,gBAAY,EAAK,sBALT;AAORC,+BAA2B,EAAE,qCAPrB;AAQRC,8BAA0B,EAAG,oCARrB;AAURC,kBAAc,EAAG,wBAVT;AAWRC,mBAAe,EAAE,yBAXT;AAaRC,iBAAa,EAAa,uBAblB;AAcRC,sBAAkB,EAAQ,4BAdlB;AAeRC,4BAAwB,EAAE,kCAflB;AAgBRC,mBAAe,EAAW,yBAhBlB;AAiBRC,kBAAc,EAAY,wBAjBlB;AAmBRC,uBAAmB,EAAW,6BAnBtB;AAoBRC,gCAA4B,EAAE,sCApBtB;AAsBRC,aAAS,EAAI,mBAtBL;AAuBRC,eAAW,EAAE;AAvBL;AArEI,CAAb,C;;;;ACFA,IAAMC,OAAO,GAAG;AACnBC,IAAE,EAAE,IADe;AAEnBC,IAAE,EAAE,IAFe;AAGnBC,IAAE,EAAE,IAHe;AAInBC,IAAE,EAAE,IAJe;AAKnBC,IAAE,EAAE,IALe;AAMnBC,IAAE,EAAE,IANe;AAOnBC,IAAE,EAAE,IAPe;AAQnBC,IAAE,EAAE,IARe;AASnBC,IAAE,EAAE,IATe;AAUnBC,IAAE,EAAE,IAVe;AAWnBC,IAAE,EAAE,IAXe;AAYnBC,IAAE,EAAE,IAZe;AAanBC,IAAE,EAAE,IAbe;AAcnBC,IAAE,EAAE,IAde;AAenBC,IAAE,EAAE,IAfe;AAgBnBC,IAAE,EAAE,IAhBe;AAiBnBC,IAAE,EAAE,IAjBe;AAkBnBC,IAAE,EAAE,IAlBe;AAmBnBC,IAAE,EAAE,IAnBe;AAoBnBC,IAAE,EAAE,IApBe;AAqBnBC,IAAE,EAAE,IArBe;AAsBnBC,IAAE,EAAE,IAtBe;AAuBnBC,IAAE,EAAE,IAvBe;AAwBnBC,IAAE,EAAE,IAxBe;AAyBnBC,IAAE,EAAE,IAzBe;AA0BnBC,IAAE,EAAE,IA1Be;AA2BnBC,IAAE,EAAE,IA3Be;AA4BnBC,IAAE,EAAE,IA5Be;AA6BnBC,IAAE,EAAE,IA7Be;AA8BnBC,IAAE,EAAE,IA9Be;AA+BnBC,IAAE,EAAE,IA/Be;AAgCnBC,IAAE,EAAE,IAhCe;AAiCnBC,IAAE,EAAE,IAjCe;AAkCnBC,IAAE,EAAE,IAlCe;AAmCnBC,IAAE,EAAE,IAnCe;AAoCnBC,IAAE,EAAE,IApCe;AAqCnBC,IAAE,EAAE,IArCe;AAsCnBC,IAAE,EAAE,IAtCe;AAuCnBC,IAAE,EAAE,IAvCe;AAwCnBC,IAAE,EAAE,IAxCe;AAyCnBC,IAAE,EAAE,IAzCe;AA0CnBC,IAAE,EAAE,IA1Ce;AA2CnBC,IAAE,EAAE,IA3Ce;AA4CnBC,IAAE,EAAE,IA5Ce;AA6CnBC,IAAE,EAAE,IA7Ce;AA8CnBC,IAAE,EAAE,IA9Ce;AA+CnBC,IAAE,EAAE,IA/Ce;AAgDnBC,IAAE,EAAE,IAhDe;AAiDnBC,IAAE,EAAE,IAjDe;AAkDnBC,IAAE,EAAE,IAlDe;AAmDnBC,IAAE,EAAE,IAnDe;AAoDnBC,IAAE,EAAE,IApDe;AAqDnBC,IAAE,EAAE,IArDe;AAsDnBC,IAAE,EAAE,IAtDe;AAuDnBC,IAAE,EAAE,IAvDe;AAwDnBC,IAAE,EAAE,IAxDe;AAyDnBC,IAAE,EAAE,IAzDe;AA0DnBC,IAAE,EAAE,IA1De;AA2DnBC,IAAE,EAAE,IA3De;AA4DnBC,IAAE,EAAE,IA5De;AA6DnBC,IAAE,EAAE,IA7De;AA8DnBC,IAAE,EAAE,IA9De;AA+DnBC,IAAE,EAAE,IA/De;AAgEnBC,IAAE,EAAE,IAhEe;AAiEnBC,IAAE,EAAE,IAjEe;AAkEnBC,IAAE,EAAE,IAlEe;AAmEnBC,IAAE,EAAE,IAnEe;AAoEnBC,IAAE,EAAE,IApEe;AAqEnBC,IAAE,EAAE,IArEe;AAsEnBC,IAAE,EAAE,IAtEe;AAuEnBC,IAAE,EAAE,IAvEe;AAwEnBC,IAAE,EAAE,IAxEe;AAyEnBC,IAAE,EAAE,IAzEe;AA0EnBC,IAAE,EAAE,IA1Ee;AA2EnBC,IAAE,EAAE,IA3Ee;AA4EnBC,IAAE,EAAE,IA5Ee;AA6EnBC,IAAE,EAAE,IA7Ee;AA8EnBC,IAAE,EAAE,IA9Ee;AA+EnBC,IAAE,EAAE,IA/Ee;AAgFnBC,IAAE,EAAE,IAhFe;AAiFnBC,IAAE,EAAE,IAjFe;AAkFnBC,IAAE,EAAE,IAlFe;AAmFnBC,IAAE,EAAE,IAnFe;AAoFnBC,IAAE,EAAE,IApFe;AAqFnBC,IAAE,EAAE,IArFe;AAsFnBC,IAAE,EAAE,IAtFe;AAuFnBC,IAAE,EAAE,IAvFe;AAwFnBC,IAAE,EAAE,IAxFe;AAyFnBC,IAAE,EAAE,IAzFe;AA0FnBC,IAAE,EAAE,IA1Fe;AA2FnBC,IAAE,EAAE,IA3Fe;AA4FnBC,IAAE,EAAE,IA5Fe;AA6FnBC,IAAE,EAAE,IA7Fe;AA8FnBC,IAAE,EAAE,IA9Fe;AA+FnBC,IAAE,EAAE,IA/Fe;AAgGnBC,IAAE,EAAE,IAhGe;AAiGnBC,IAAE,EAAE,IAjGe;AAkGnBC,IAAE,EAAE,IAlGe;AAmGnBC,IAAE,EAAE,IAnGe;AAoGnBC,IAAE,EAAE,IApGe;AAqGnBC,IAAE,EAAE,IArGe;AAsGnBC,IAAE,EAAE,IAtGe;AAuGnBC,IAAE,EAAE,IAvGe;AAwGnBC,IAAE,EAAE,IAxGe;AAyGnBC,IAAE,EAAE,IAzGe;AA0GnBC,IAAE,EAAE,IA1Ge;AA2GnBC,IAAE,EAAE,IA3Ge;AA4GnBC,IAAE,EAAE,IA5Ge;AA6GnBC,IAAE,EAAE,IA7Ge;AA8GnBC,IAAE,EAAE,IA9Ge;AA+GnBC,IAAE,EAAE,IA/Ge;AAgHnBC,IAAE,EAAE,IAhHe;AAiHnBC,IAAE,EAAE,IAjHe;AAkHnBC,IAAE,EAAE,IAlHe;AAmHnBC,IAAE,EAAE,IAnHe;AAoHnBC,IAAE,EAAE,IApHe;AAqHnBC,IAAE,EAAE,IArHe;AAsHnBC,IAAE,EAAE,IAtHe;AAuHnBC,IAAE,EAAE,IAvHe;AAwHnBC,IAAE,EAAE,IAxHe;AAyHnBC,IAAE,EAAE,IAzHe;AA0HnBC,IAAE,EAAE,IA1He;AA2HnBC,IAAE,EAAE,IA3He;AA4HnBC,IAAE,EAAE,IA5He;AA6HnBC,IAAE,EAAE,IA7He;AA8HnBC,IAAE,EAAE,IA9He;AA+HnBC,IAAE,EAAE,IA/He;AAgInBC,IAAE,EAAE,IAhIe;AAiInBC,IAAE,EAAE,IAjIe;AAkInBC,IAAE,EAAE,IAlIe;AAmInBC,IAAE,EAAE,IAnIe;AAoInBC,IAAE,EAAE,IApIe;AAqInBC,IAAE,EAAE,IArIe;AAsInBC,IAAE,EAAE,IAtIe;AAuInBC,IAAE,EAAE,IAvIe;AAwInBC,IAAE,EAAE,IAxIe;AAyInBC,IAAE,EAAE,IAzIe;AA0InBC,IAAE,EAAE,IA1Ie;AA2InBC,IAAE,EAAE,IA3Ie;AA4InBC,IAAE,EAAE,IA5Ie;AA6InBC,IAAE,EAAE,IA7Ie;AA8InBC,IAAE,EAAE,IA9Ie;AA+InBC,IAAE,EAAE,IA/Ie;AAgJnBC,IAAE,EAAE,IAhJe;AAiJnBC,IAAE,EAAE,IAjJe;AAkJnBC,IAAE,EAAE,IAlJe;AAmJnBC,IAAE,EAAE,IAnJe;AAoJnBC,IAAE,EAAE,IApJe;AAqJnBC,IAAE,EAAE,IArJe;AAsJnBC,IAAE,EAAE,IAtJe;AAuJnBC,IAAE,EAAE,IAvJe;AAwJnBC,IAAE,EAAE,IAxJe;AAyJnBC,IAAE,EAAE,IAzJe;AA0JnBC,IAAE,EAAE,IA1Je;AA2JnBC,IAAE,EAAE,IA3Je;AA4JnBC,IAAE,EAAE,IA5Je;AA6JnBC,IAAE,EAAE,IA7Je;AA8JnBC,IAAE,EAAE,IA9Je;AA+JnBC,IAAE,EAAE,IA/Je;AAgKnBC,IAAE,EAAE,IAhKe;AAiKnBC,IAAE,EAAE,IAjKe;AAkKnBC,IAAE,EAAE,IAlKe;AAmKnBC,IAAE,EAAE,IAnKe;AAoKnBC,IAAE,EAAE,IApKe;AAqKnBC,IAAE,EAAE,IArKe;AAsKnBC,IAAE,EAAE,IAtKe;AAuKnBC,IAAE,EAAE,IAvKe;AAwKnBC,IAAE,EAAE,IAxKe;AAyKnBC,IAAE,EAAE,IAzKe;AA0KnBC,IAAE,EAAE,IA1Ke;AA2KnBC,IAAE,EAAE,IA3Ke;AA4KnBC,IAAE,EAAE,IA5Ke;AA6KnBC,IAAE,EAAE,IA7Ke;AA8KnBC,IAAE,EAAE,IA9Ke;AA+KnBC,IAAE,EAAE,IA/Ke;AAgLnBC,IAAE,EAAE,IAhLe;AAiLnBC,IAAE,EAAE,IAjLe;AAkLnBC,IAAE,EAAE,IAlLe;AAmLnBC,IAAE,EAAE,IAnLe;AAoLnBC,IAAE,EAAE,IApLe;AAqLnBC,IAAE,EAAE,IArLe;AAsLnBC,IAAE,EAAE,IAtLe;AAuLnBC,IAAE,EAAE,IAvLe;AAwLnBC,IAAE,EAAE,IAxLe;AAyLnBC,IAAE,EAAE,IAzLe;AA0LnBC,IAAE,EAAE,IA1Le;AA2LnBC,IAAE,EAAE,IA3Le;AA4LnBC,IAAE,EAAE,IA5Le;AA6LnBC,IAAE,EAAE,IA7Le;AA8LnBC,IAAE,EAAE,IA9Le;AA+LnBC,IAAE,EAAE,IA/Le;AAgMnBC,IAAE,EAAE,IAhMe;AAiMnBC,IAAE,EAAE,IAjMe;AAkMnBC,IAAE,EAAE,IAlMe;AAmMnBC,IAAE,EAAE,IAnMe;AAoMnBC,IAAE,EAAE,IApMe;AAqMnBC,IAAE,EAAE,IArMe;AAsMnBC,IAAE,EAAE,IAtMe;AAuMnBC,IAAE,EAAE,IAvMe;AAwMnBC,IAAE,EAAE,IAxMe;AAyMnBC,IAAE,EAAE,IAzMe;AA0MnBC,IAAE,EAAE,IA1Me;AA2MnBC,IAAE,EAAE,IA3Me;AA4MnBC,IAAE,EAAE;AA5Me,CAAhB;AA+MA,IAAMC,IAAI,GAAG;AAChBpM,IAAE,EAAE,IADY;AAEhBqM,IAAE,EAAE,IAFY;AAGhBC,IAAE,EAAE,IAHY;AAIhBjK,IAAE,EAAE,IAJY;AAKhBkK,IAAE,EAAE,IALY;AAMhBC,IAAE,EAAE,IANY;AAOhBzJ,IAAE,EAAE,IAPY;AAQhBE,IAAE,EAAE,IARY;AAShBK,IAAE,EAAE,IATY;AAUhBmJ,IAAE,EAAE,IAVY;AAWhBjI,IAAE,EAAE,IAXY;AAYhBC,IAAE,EAAE,IAZY;AAahBK,IAAE,EAAE,IAbY;AAchB4H,IAAE,EAAE,IAdY;AAehBC,IAAE,EAAE,IAfY;AAgBhB9E,IAAE,EAAE,IAhBY;AAiBhBC,IAAE,EAAE,IAjBY;AAkBhBW,IAAE,EAAE,IAlBY;AAmBhBG,IAAE,EAAE,IAnBY;AAoBhBO,IAAE,EAAE,IApBY;AAqBhBU,IAAE,EAAE,IArBY;AAsBhBO,IAAE,EAAE,IAtBY;AAuBhBK,IAAE,EAAE,IAvBY;AAwBhBK,IAAE,EAAE,IAxBY;AAyBhB8B,IAAE,EAAE;AAzBY,CAAb;AA4BA,IAAMC,uBAAuB,sDAC/BT,IAAI,CAACpM,EAD0B,IACrBT,OAAO,CAAC8J,EADa,wBAE/B+C,IAAI,CAACC,EAF0B,IAErB9M,OAAO,CAAC6C,EAFa,wBAG/BgK,IAAI,CAACE,EAH0B,IAGrB/M,OAAO,CAACgD,EAHa,wBAI/B6J,IAAI,CAAC/J,EAJ0B,IAIrB9C,OAAO,CAAC8C,EAJa,wBAK/B+J,IAAI,CAACG,EAL0B,IAKrBhN,OAAO,CAAC0E,EALa,wBAM/BmI,IAAI,CAACI,EAN0B,IAMrBjN,OAAO,CAAC8L,EANa,wBAO/Be,IAAI,CAACrJ,EAP0B,IAOrBxD,OAAO,CAACwD,EAPa,wBAQ/BqJ,IAAI,CAACnJ,EAR0B,IAQrB1D,OAAO,CAAC0D,EARa,wBAS/BmJ,IAAI,CAAC9I,EAT0B,IASrB/D,OAAO,CAAC+D,EATa,wBAU/B8I,IAAI,CAACK,EAV0B,IAUrBlN,OAAO,CAACoF,EAVa,wBAW/ByH,IAAI,CAAC5H,EAX0B,IAWrBjF,OAAO,CAACiF,EAXa,wBAY/B4H,IAAI,CAAC3H,EAZ0B,IAYrBlF,OAAO,CAACkF,EAZa,wBAa/B2H,IAAI,CAACtH,EAb0B,IAarBvF,OAAO,CAACuF,EAba,wBAc/BsH,IAAI,CAACM,EAd0B,IAcrBnN,OAAO,CAAC0F,EAda,wBAe/BmH,IAAI,CAACO,EAf0B,IAerBpN,OAAO,CAACiG,EAfa,wBAgB/B4G,IAAI,CAACvE,EAhB0B,IAgBrBtI,OAAO,CAACsI,EAhBa,wBAiB/BuE,IAAI,CAACtE,EAjB0B,IAiBrBvI,OAAO,CAACuI,EAjBa,wBAkB/BsE,IAAI,CAAC3D,EAlB0B,IAkBrBlJ,OAAO,CAACkJ,EAlBa,wBAmB/B2D,IAAI,CAACxD,EAnB0B,IAmBrBrJ,OAAO,CAACqJ,EAnBa,wBAoB/BwD,IAAI,CAACjD,EApB0B,IAoBrB5J,OAAO,CAAC4J,EApBa,wBAqB/BiD,IAAI,CAACvC,EArB0B,IAqBrBtK,OAAO,CAACsK,EArBa,wBAsB/BuC,IAAI,CAAChC,EAtB0B,IAsBrB7K,OAAO,CAACiK,EAtBa,wBAuB/B4C,IAAI,CAAC3B,EAvB0B,IAuBrBlL,OAAO,CAACkL,EAvBa,wBAwB/B2B,IAAI,CAACtB,EAxB0B,IAwBrBvL,OAAO,CAACuL,EAxBa,wBAyB/BsB,IAAI,CAACQ,EAzB0B,IAyBrBrN,OAAO,CAACwC,EAzBa,wBAA7B;AA4BA,IAAM+K,6BAA6B,GAAG,CAAEvN,OAAO,CAACyB,EAAV,EAAczB,OAAO,CAAC6H,EAAtB,CAAtC;AACA,IAAM2F,0BAA0B,GAAG;AACtC/L,IAAE,EAAE,CAAE,CAAF,EAAK,CAAL,EAAQ,CAAR,EAAW,CAAX,EAAc,CAAd,EAAiB,CAAjB,EAAoB,CAApB,EAAuB,CAAvB,EAA0B,EAA1B,EAA8B,EAA9B,EAAkC,EAAlC,CADkC;AAEtCoG,IAAE,EAAE,CAAE,CAAF,EAAK,CAAL,EAAQ,CAAR,EAAW,EAAX;AAFkC,CAAnC,C;;;;ACxQP;AAEO,IAAM4F,MAAM,0BACdzN,OAAO,CAACC,EADM,IACD,CAAE4M,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CADC,UAEdrN,OAAO,CAACE,EAFM,IAED,CAAE2M,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,EAAsCR,IAAI,CAACpM,EAA3C,CAFC,UAGdT,OAAO,CAACG,EAHM,IAGD,CAAE0M,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAHC,UAIdrN,OAAO,CAACI,EAJM,IAID,CAAEyM,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAJC,UAKdrN,OAAO,CAACK,EALM,IAKD,CAAEwM,IAAI,CAACI,EAAP,CALC,UAMdjN,OAAO,CAACM,EANM,IAMD,CAAEuM,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CANC,UAOdrN,OAAO,CAACO,EAPM,IAOD,CAAEsM,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAPC,UAQdrN,OAAO,CAACQ,EARM,IAQD,CAAEqM,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CARC,UASdrN,OAAO,CAACS,EATM,IASD,CAAEoM,IAAI,CAACrJ,EAAP,EAAWqJ,IAAI,CAACI,EAAhB,CATC,UAUdjN,OAAO,CAACU,EAVM,IAUD,CAAEmM,IAAI,CAAC/J,EAAP,EAAW+J,IAAI,CAACI,EAAhB,CAVC,UAWdjN,OAAO,CAACW,EAXM,IAWD,CAAEkM,IAAI,CAACI,EAAP,CAXC,UAYdjN,OAAO,CAACY,EAZM,IAYD,CAAEiM,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAZC,UAadrN,OAAO,CAACa,EAbM,IAaD,CAAEgM,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAbC,UAcdrN,OAAO,CAACc,EAdM,IAcD,CAAE+L,IAAI,CAACI,EAAP,CAdC,UAedjN,OAAO,CAACe,EAfM,IAeD,CAAE8L,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAfC,UAgBdrN,OAAO,CAACgB,EAhBM,IAgBD,CAAE6L,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAACvE,EAAhB,EAAoBuE,IAAI,CAAC9I,EAAzB,CAhBC,UAiBd/D,OAAO,CAACiB,EAjBM,IAiBD,CAAE4L,IAAI,CAAC9I,EAAP,EAAW8I,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAjBC,UAkBdrN,OAAO,CAACkB,EAlBM,IAkBD,CAAE2L,IAAI,CAACI,EAAP,CAlBC,UAmBdjN,OAAO,CAACmB,EAnBM,IAmBD,CAAE0L,IAAI,CAACpM,EAAP,EAAWoM,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACrJ,EAAlC,EAAsCqJ,IAAI,CAACQ,EAA3C,CAnBC,UAoBdrN,OAAO,CAACoB,EApBM,IAoBD,CAAEyL,IAAI,CAAC9I,EAAP,EAAW8I,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CApBC,UAqBdrN,OAAO,CAACqB,EArBM,IAqBD,CAAEwL,IAAI,CAAC9I,EAAP,EAAW8I,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CArBC,UAsBdrN,OAAO,CAACsB,EAtBM,IAsBD,CAAEuL,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAtBC,UAuBdrN,OAAO,CAACuB,EAvBM,IAuBD,CAAEsL,IAAI,CAACI,EAAP,CAvBC,UAwBdjN,OAAO,CAACwB,EAxBM,IAwBD,CAAEqL,IAAI,CAACrJ,EAAP,EAAWqJ,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACQ,EAAlC,CAxBC,UAyBdrN,OAAO,CAACyB,EAzBM,IAyBD,CAAEoL,IAAI,CAACxD,EAAP,EAAWwD,IAAI,CAACI,EAAhB,CAzBC,UA0BdjN,OAAO,CAAC0B,EA1BM,IA0BD,CAAEmL,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA1BC,UA2BdrN,OAAO,CAAC2B,EA3BM,IA2BD,CAAEkL,IAAI,CAACI,EAAP,CA3BC,UA4BdjN,OAAO,CAAC4B,EA5BM,IA4BD,CAAEiL,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA5BC,UA6BdrN,OAAO,CAAC6B,EA7BM,IA6BD,CAAEgL,IAAI,CAACI,EAAP,CA7BC,UA8BdjN,OAAO,CAAC8B,EA9BM,IA8BD,CAAE+K,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAACrJ,EAAhB,EAAoBqJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACQ,EAAlC,CA9BC,UA+BdrN,OAAO,CAAC+B,EA/BM,IA+BD,CAAE8K,IAAI,CAACQ,EAAP,EAAWR,IAAI,CAACI,EAAhB,CA/BC,UAgCdjN,OAAO,CAACgC,EAhCM,IAgCD,CAAE6K,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,CAhCC,UAiCd/D,OAAO,CAACiC,EAjCM,IAiCD,CAAE4K,IAAI,CAAC9I,EAAP,EAAW8I,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAjCC,UAkCdrN,OAAO,CAACkC,EAlCM,IAkCD,CAAE2K,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAlCC,UAmCdrN,OAAO,CAACmC,EAnCM,IAmCD,CAAE0K,IAAI,CAAC/J,EAAP,EAAW+J,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACI,EAAzB,CAnCC,UAoCdjN,OAAO,CAACoC,EApCM,IAoCD,CAAEyK,IAAI,CAAC9I,EAAP,EAAW8I,IAAI,CAACI,EAAhB,CApCC,UAqCdjN,OAAO,CAACqC,EArCM,IAqCD,CAAEwK,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CArCC,UAsCdrN,OAAO,CAACsC,EAtCM,IAsCD,CAAEuK,IAAI,CAACrJ,EAAP,EAAWqJ,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACQ,EAAlC,CAtCC,UAuCdrN,OAAO,CAACuC,EAvCM,IAuCD,CAAEsK,IAAI,CAAC9I,EAAP,EAAW8I,IAAI,CAACI,EAAhB,CAvCC,UAwCdjN,OAAO,CAACwC,EAxCM,IAwCD,CAAEqK,IAAI,CAACQ,EAAP,CAxCC,UAyCdrN,OAAO,CAACyC,EAzCM,IAyCD,CAAEoK,IAAI,CAACrJ,EAAP,EAAWqJ,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACQ,EAAlC,CAzCC,UA0CdrN,OAAO,CAAC0C,EA1CM,IA0CD,CAAEmK,IAAI,CAACrJ,EAAP,EAAWqJ,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACQ,EAAlC,CA1CC,UA2CdrN,OAAO,CAAC2C,EA3CM,IA2CD,CAAEkK,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA3CC,UA4CdrN,OAAO,CAAC4C,EA5CM,IA4CD,CAAEiK,IAAI,CAACI,EAAP,CA5CC,UA6CdjN,OAAO,CAAC6C,EA7CM,IA6CD,CAAEgK,IAAI,CAACC,EAAP,EAAWD,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACrJ,EAAlC,EAAsCqJ,IAAI,CAACQ,EAA3C,CA7CC,UA8CdrN,OAAO,CAAC8C,EA9CM,IA8CD,CAAE+J,IAAI,CAAC/J,EAAP,EAAW+J,IAAI,CAACI,EAAhB,CA9CC,UA+CdjN,OAAO,CAAC+C,EA/CM,IA+CD,CAAE8J,IAAI,CAAC9I,EAAP,EAAW8I,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA/CC,UAgDdrN,OAAO,CAACgD,EAhDM,IAgDD,CAAE6J,IAAI,CAACE,EAAP,EAAWF,IAAI,CAACI,EAAhB,CAhDC,UAiDdjN,OAAO,CAACiD,EAjDM,IAiDD,CAAE4J,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAjDC,UAkDdrN,OAAO,CAACkD,EAlDM,IAkDD,CAAE2J,IAAI,CAACrJ,EAAP,EAAWqJ,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACQ,EAAlC,CAlDC,UAmDdrN,OAAO,CAACmD,EAnDM,IAmDD,CAAE0J,IAAI,CAACpM,EAAP,EAAWoM,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACrJ,EAAlC,EAAsCqJ,IAAI,CAACQ,EAA3C,CAnDC,UAoDdrN,OAAO,CAACoD,EApDM,IAoDD,CAAEyJ,IAAI,CAACrJ,EAAP,EAAWqJ,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACQ,EAAlC,CApDC,UAqDdrN,OAAO,CAACqD,EArDM,IAqDD,CAAEwJ,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAACjD,EAAhB,EAAoBiD,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACrJ,EAAlC,EAAsCqJ,IAAI,CAACQ,EAA3C,CArDC,UAsDdrN,OAAO,CAACsD,EAtDM,IAsDD,CAAEuJ,IAAI,CAACpM,EAAP,EAAWoM,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACrJ,EAAlC,EAAsCqJ,IAAI,CAACQ,EAA3C,CAtDC,UAuDdrN,OAAO,CAACuD,EAvDM,IAuDD,CAAEsJ,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAvDC,UAwDdrN,OAAO,CAACwD,EAxDM,IAwDD,CAAEqJ,IAAI,CAACrJ,EAAP,EAAWqJ,IAAI,CAACI,EAAhB,CAxDC,UAyDdjN,OAAO,CAACyD,EAzDM,IAyDD,CAAEoJ,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAzDC,UA0DdrN,OAAO,CAAC0D,EA1DM,IA0DD,CAAEmJ,IAAI,CAACnJ,EAAP,EAAWmJ,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACrJ,EAAlC,EAAsCqJ,IAAI,CAACQ,EAA3C,CA1DC,UA2DdrN,OAAO,CAAC2D,EA3DM,IA2DD,CAAEkJ,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA3DC,UA4DdrN,OAAO,CAAC4D,EA5DM,IA4DD,CAAEiJ,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA5DC,UA6DdrN,OAAO,CAAC6D,EA7DM,IA6DD,CAAEgJ,IAAI,CAACI,EAAP,CA7DC,UA8DdjN,OAAO,CAAC8D,EA9DM,IA8DD,CAAE+I,IAAI,CAACE,EAAP,EAAWF,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACrJ,EAAlC,EAAsCqJ,IAAI,CAACQ,EAA3C,CA9DC,UA+DdrN,OAAO,CAAC+D,EA/DM,IA+DD,CAAE8I,IAAI,CAAC9I,EAAP,EAAW8I,IAAI,CAACI,EAAhB,CA/DC,UAgEdjN,OAAO,CAACgE,EAhEM,IAgED,CAAE6I,IAAI,CAAC9I,EAAP,EAAW8I,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAhEC,UAiEdrN,OAAO,CAACiE,EAjEM,IAiED,CAAE4I,IAAI,CAACI,EAAP,CAjEC,UAkEdjN,OAAO,CAACkE,EAlEM,IAkED,CAAE2I,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAlEC,UAmEdrN,OAAO,CAACmE,EAnEM,IAmED,CAAE0I,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAnEC,UAoEdrN,OAAO,CAACoE,EApEM,IAoED,CAAEyI,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CApEC,UAqEdrN,OAAO,CAACqE,EArEM,IAqED,CAAEwI,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CArEC,UAsEdrN,OAAO,CAACsE,EAtEM,IAsED,CAAEuI,IAAI,CAACE,EAAP,EAAWF,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACrJ,EAAlC,EAAsCqJ,IAAI,CAACQ,EAA3C,CAtEC,UAuEdrN,OAAO,CAACuE,EAvEM,IAuED,CAAEsI,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAvEC,UAwEdrN,OAAO,CAACwE,EAxEM,IAwED,CAAEqI,IAAI,CAAC9I,EAAP,EAAW8I,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAxEC,UAyEdrN,OAAO,CAACyE,EAzEM,IAyED,CAAEoI,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAzEC,UA0EdrN,OAAO,CAAC0E,EA1EM,IA0ED,CAAEmI,IAAI,CAACG,EAAP,EAAWH,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACrJ,EAAlC,EAAsCqJ,IAAI,CAACQ,EAA3C,CA1EC,UA2EdrN,OAAO,CAAC2E,EA3EM,IA2ED,CAAEkI,IAAI,CAACrJ,EAAP,EAAWqJ,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACQ,EAAlC,CA3EC,UA4EdrN,OAAO,CAAC4E,EA5EM,IA4ED,CAAEiI,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA5EC,UA6EdrN,OAAO,CAAC6E,EA7EM,IA6ED,CAAEgI,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA7EC,UA8EdrN,OAAO,CAAC8E,EA9EM,IA8ED,CAAE+H,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAACQ,EAAhB,CA9EC,UA+EdrN,OAAO,CAAC+E,EA/EM,IA+ED,CAAE8H,IAAI,CAACrJ,EAAP,EAAWqJ,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACQ,EAAlC,CA/EC,UAgFdrN,OAAO,CAACgF,EAhFM,IAgFD,CAAE6H,IAAI,CAACI,EAAP,CAhFC,UAiFdjN,OAAO,CAACiF,EAjFM,IAiFD,CAAE4H,IAAI,CAAC5H,EAAP,EAAW4H,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACrJ,EAAlC,EAAsCqJ,IAAI,CAACQ,EAA3C,CAjFC,UAkFdrN,OAAO,CAACkF,EAlFM,IAkFD,CAAE2H,IAAI,CAAC3H,EAAP,EAAW2H,IAAI,CAACI,EAAhB,CAlFC,UAmFdjN,OAAO,CAACmF,EAnFM,IAmFD,CAAE0H,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAnFC,UAoFdrN,OAAO,CAACoF,EApFM,IAoFD,CAAEyH,IAAI,CAACK,EAAP,EAAWL,IAAI,CAACI,EAAhB,CApFC,UAqFdjN,OAAO,CAACqF,EArFM,IAqFD,CAAEwH,IAAI,CAACI,EAAP,CArFC,UAsFdjN,OAAO,CAACsF,EAtFM,IAsFD,CAAEuH,IAAI,CAACI,EAAP,CAtFC,UAuFdjN,OAAO,CAACuF,EAvFM,IAuFD,CAAEsH,IAAI,CAACtH,EAAP,EAAWsH,IAAI,CAACI,EAAhB,CAvFC,UAwFdjN,OAAO,CAACwF,EAxFM,IAwFD,CAAEqH,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAACrJ,EAAhB,EAAoBqJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACQ,EAAlC,CAxFC,UAyFdrN,OAAO,CAACyF,EAzFM,IAyFD,CAAEoH,IAAI,CAACpM,EAAP,EAAWoM,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACrJ,EAAlC,EAAsCqJ,IAAI,CAACQ,EAA3C,CAzFC,UA0FdrN,OAAO,CAAC0F,EA1FM,IA0FD,CAAEmH,IAAI,CAACM,EAAP,EAAWN,IAAI,CAACI,EAAhB,CA1FC,UA2FdjN,OAAO,CAAC2F,EA3FM,IA2FD,CAAEkH,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA3FC,UA4FdrN,OAAO,CAAC4F,EA5FM,IA4FD,CAAEiH,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA5FC,UA6FdrN,OAAO,CAAC6F,EA7FM,IA6FD,CAAEgH,IAAI,CAACI,EAAP,CA7FC,UA8FdjN,OAAO,CAAC8F,EA9FM,IA8FD,CAAE+G,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA9FC,UA+FdrN,OAAO,CAAC+F,EA/FM,IA+FD,CAAE8G,IAAI,CAAC9I,EAAP,EAAW8I,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA/FC,UAgGdrN,OAAO,CAACgG,EAhGM,IAgGD,CAAE6G,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAhGC,UAiGdrN,OAAO,CAACiG,EAjGM,IAiGD,CAAE4G,IAAI,CAACO,EAAP,EAAWP,IAAI,CAACI,EAAhB,CAjGC,UAkGdjN,OAAO,CAACkG,EAlGM,IAkGD,CAAE2G,IAAI,CAACpM,EAAP,EAAWoM,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACrJ,EAAlC,EAAsCqJ,IAAI,CAACQ,EAA3C,CAlGC,UAmGdrN,OAAO,CAACmG,EAnGM,IAmGD,CAAE0G,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAnGC,UAoGdrN,OAAO,CAACoG,EApGM,IAoGD,CAAEyG,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CApGC,UAqGdrN,OAAO,CAACqG,EArGM,IAqGD,CAAEwG,IAAI,CAACI,EAAP,CArGC,UAsGdjN,OAAO,CAACsG,EAtGM,IAsGD,CAAEuG,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAtGC,UAuGdrN,OAAO,CAACuG,EAvGM,IAuGD,CAAEsG,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAvGC,UAwGdrN,OAAO,CAACwG,EAxGM,IAwGD,CAAEqG,IAAI,CAACI,EAAP,CAxGC,UAyGdjN,OAAO,CAACyG,EAzGM,IAyGD,CAAEoG,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAzGC,UA0GdrN,OAAO,CAAC0G,EA1GM,IA0GD,CAAEmG,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAACjD,EAAhB,EAAoBiD,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACrJ,EAAlC,EAAsCqJ,IAAI,CAACQ,EAA3C,CA1GC,UA2GdrN,OAAO,CAAC2G,EA3GM,IA2GD,CAAEkG,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC/J,EAAhB,EAAoB+J,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACrJ,EAAlC,EAAsCqJ,IAAI,CAACQ,EAA3C,CA3GC,UA4GdrN,OAAO,CAAC4G,EA5GM,IA4GD,CAAEiG,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAACjD,EAAhB,EAAoBiD,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACrJ,EAAlC,EAAsCqJ,IAAI,CAACQ,EAA3C,CA5GC,UA6GdrN,OAAO,CAAC6G,EA7GM,IA6GD,CAAEgG,IAAI,CAACpM,EAAP,EAAWoM,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACrJ,EAAlC,EAAsCqJ,IAAI,CAACQ,EAA3C,CA7GC,UA8GdrN,OAAO,CAAC8G,EA9GM,IA8GD,CAAE+F,IAAI,CAAC9I,EAAP,EAAW8I,IAAI,CAACI,EAAhB,CA9GC,UA+GdjN,OAAO,CAAC+G,EA/GM,IA+GD,CAAE8F,IAAI,CAACI,EAAP,CA/GC,UAgHdjN,OAAO,CAACgH,EAhHM,IAgHD,CAAE6F,IAAI,CAACI,EAAP,CAhHC,UAiHdjN,OAAO,CAACiH,EAjHM,IAiHD,CAAE4F,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAjHC,UAkHdrN,OAAO,CAACkH,EAlHM,IAkHD,CAAE2F,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAlHC,UAmHdrN,OAAO,CAACmH,EAnHM,IAmHD,CAAE0F,IAAI,CAACI,EAAP,CAnHC,UAoHdjN,OAAO,CAACoH,EApHM,IAoHD,CAAEyF,IAAI,CAAC9I,EAAP,EAAW8I,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CApHC,UAqHdrN,OAAO,CAACqH,EArHM,IAqHD,CAAEwF,IAAI,CAACI,EAAP,CArHC,UAsHdjN,OAAO,CAACsH,EAtHM,IAsHD,CAAEuF,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAtHC,UAuHdrN,OAAO,CAACuH,EAvHM,IAuHD,CAAEsF,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAvHC,UAwHdrN,OAAO,CAACwH,EAxHM,IAwHD,CAAEqF,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAxHC,UAyHdrN,OAAO,CAACyH,EAzHM,IAyHD,CAAEoF,IAAI,CAACI,EAAP,CAzHC,UA0HdjN,OAAO,CAAC0H,EA1HM,IA0HD,CAAEmF,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA1HC,UA2HdrN,OAAO,CAAC2H,EA3HM,IA2HD,CAAEkF,IAAI,CAACI,EAAP,CA3HC,UA4HdjN,OAAO,CAAC4H,EA5HM,IA4HD,CAAEiF,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA5HC,UA6HdrN,OAAO,CAAC6H,EA7HM,IA6HD,CAAEgF,IAAI,CAACrJ,EAAP,EAAWqJ,IAAI,CAACI,EAAhB,CA7HC,UA8HdjN,OAAO,CAAC8H,EA9HM,IA8HD,CAAE+E,IAAI,CAACI,EAAP,CA9HC,UA+HdjN,OAAO,CAAC+H,EA/HM,IA+HD,CAAE8E,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA/HC,UAgIdrN,OAAO,CAACgI,EAhIM,IAgID,CAAE6E,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAhIC,UAiIdrN,OAAO,CAACiI,EAjIM,IAiID,CAAE4E,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAjIC,UAkIdrN,OAAO,CAACkI,EAlIM,IAkID,CAAE2E,IAAI,CAAC9I,EAAP,EAAW8I,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAlIC,UAmIdrN,OAAO,CAACmI,EAnIM,IAmID,CAAE0E,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAnIC,UAoIdrN,OAAO,CAACoI,EApIM,IAoID,CAAEyE,IAAI,CAACI,EAAP,CApIC,UAqIdjN,OAAO,CAACqI,EArIM,IAqID,CAAEwE,IAAI,CAACrJ,EAAP,EAAWqJ,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACQ,EAAlC,CArIC,UAsIdrN,OAAO,CAACsI,EAtIM,IAsID,CAAEuE,IAAI,CAACvE,EAAP,EAAWuE,IAAI,CAACI,EAAhB,CAtIC,UAuIdjN,OAAO,CAACuI,EAvIM,IAuID,CAAEsE,IAAI,CAACtE,EAAP,EAAWsE,IAAI,CAACI,EAAhB,CAvIC,UAwIdjN,OAAO,CAACwI,EAxIM,IAwID,CAAEqE,IAAI,CAACI,EAAP,CAxIC,UAyIdjN,OAAO,CAACyI,EAzIM,IAyID,CAAEoE,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAzIC,UA0IdrN,OAAO,CAAC0I,EA1IM,IA0ID,CAAEmE,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA1IC,UA2IdrN,OAAO,CAAC2I,EA3IM,IA2ID,CAAEkE,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA3IC,UA4IdrN,OAAO,CAAC4I,EA5IM,IA4ID,CAAEiE,IAAI,CAACpM,EAAP,EAAWoM,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACrJ,EAAlC,EAAsCqJ,IAAI,CAACQ,EAA3C,CA5IC,UA6IdrN,OAAO,CAAC6I,EA7IM,IA6ID,CAAEgE,IAAI,CAACrJ,EAAP,EAAWqJ,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACQ,EAAlC,CA7IC,UA8IdrN,OAAO,CAAC8I,EA9IM,IA8ID,CAAE+D,IAAI,CAACrJ,EAAP,EAAWqJ,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACQ,EAAlC,CA9IC,UA+IdrN,OAAO,CAAC+I,EA/IM,IA+ID,CAAE8D,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA/IC,UAgJdrN,OAAO,CAACgJ,EAhJM,IAgJD,CAAE6D,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAhJC,UAiJdrN,OAAO,CAACiJ,EAjJM,IAiJD,CAAE4D,IAAI,CAACI,EAAP,CAjJC,UAkJdjN,OAAO,CAACkJ,EAlJM,IAkJD,CAAE2D,IAAI,CAAC3D,EAAP,EAAW2D,IAAI,CAACI,EAAhB,CAlJC,UAmJdjN,OAAO,CAACmJ,EAnJM,IAmJD,CAAE0D,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAnJC,UAoJdrN,OAAO,CAACoJ,EApJM,IAoJD,CAAEyD,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CApJC,UAqJdrN,OAAO,CAACqJ,EArJM,IAqJD,CAAEwD,IAAI,CAACxD,EAAP,EAAWwD,IAAI,CAACI,EAAhB,CArJC,UAsJdjN,OAAO,CAACsJ,EAtJM,IAsJD,CAAEuD,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAtJC,UAuJdrN,OAAO,CAACuJ,EAvJM,IAuJD,CAAEsD,IAAI,CAACrJ,EAAP,EAAWqJ,IAAI,CAACI,EAAhB,CAvJC,UAwJdjN,OAAO,CAACwJ,EAxJM,IAwJD,CAAEqD,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,EAAsCR,IAAI,CAACpM,EAA3C,CAxJC,UAyJdT,OAAO,CAACyJ,EAzJM,IAyJD,CAAEoD,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAzJC,UA0JdrN,OAAO,CAAC0J,EA1JM,IA0JD,CAAEmD,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA1JC,UA2JdrN,OAAO,CAAC2J,EA3JM,IA2JD,CAAEkD,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA3JC,UA4JdrN,OAAO,CAAC4J,EA5JM,IA4JD,CAAEiD,IAAI,CAACjD,EAAP,EAAWiD,IAAI,CAACI,EAAhB,CA5JC,UA6JdjN,OAAO,CAAC6J,EA7JM,IA6JD,CAAEgD,IAAI,CAAC9I,EAAP,EAAW8I,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA7JC,UA8JdrN,OAAO,CAAC8J,EA9JM,IA8JD,CAAE+C,IAAI,CAACpM,EAAP,EAAWoM,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACrJ,EAAlC,EAAsCqJ,IAAI,CAACQ,EAA3C,CA9JC,UA+JdrN,OAAO,CAAC+J,EA/JM,IA+JD,CAAE8C,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA/JC,UAgKdrN,OAAO,CAACgK,EAhKM,IAgKD,CAAE6C,IAAI,CAAC9I,EAAP,EAAW8I,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAhKC,UAiKdrN,OAAO,CAACiK,EAjKM,IAiKD,CAAE4C,IAAI,CAAChC,EAAP,EAAWgC,IAAI,CAACI,EAAhB,CAjKC,UAkKdjN,OAAO,CAACkK,EAlKM,IAkKD,CAAE2C,IAAI,CAACI,EAAP,CAlKC,UAmKdjN,OAAO,CAACmK,EAnKM,IAmKD,CAAE0C,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAnKC,UAoKdrN,OAAO,CAACoK,EApKM,IAoKD,CAAEyC,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CApKC,UAqKdrN,OAAO,CAACqK,EArKM,IAqKD,CAAEwC,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CArKC,UAsKdrN,OAAO,CAACsK,EAtKM,IAsKD,CAAEuC,IAAI,CAACvC,EAAP,EAAWuC,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACrJ,EAAlC,EAAsCqJ,IAAI,CAACQ,EAA3C,CAtKC,UAuKdrN,OAAO,CAACuK,EAvKM,IAuKD,CAAEsC,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAvKC,UAwKdrN,OAAO,CAACwK,EAxKM,IAwKD,CAAEqC,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAxKC,UAyKdrN,OAAO,CAACyK,EAzKM,IAyKD,CAAEoC,IAAI,CAAC9I,EAAP,EAAW8I,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAzKC,UA0KdrN,OAAO,CAAC0K,EA1KM,IA0KD,CAAEmC,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA1KC,UA2KdrN,OAAO,CAAC2K,EA3KM,IA2KD,CAAEkC,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA3KC,UA4KdrN,OAAO,CAAC4K,EA5KM,IA4KD,CAAEiC,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA5KC,UA6KdrN,OAAO,CAAC6K,EA7KM,IA6KD,CAAEgC,IAAI,CAACrJ,EAAP,EAAWqJ,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACQ,EAAlC,CA7KC,UA8KdrN,OAAO,CAAC8K,EA9KM,IA8KD,CAAE+B,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA9KC,UA+KdrN,OAAO,CAAC+K,EA/KM,IA+KD,CAAE8B,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA/KC,UAgLdrN,OAAO,CAACgL,EAhLM,IAgLD,CAAE6B,IAAI,CAAC9I,EAAP,EAAW8I,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAhLC,UAiLdrN,OAAO,CAACiL,EAjLM,IAiLD,CAAE4B,IAAI,CAAC9I,EAAP,EAAW8I,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAjLC,UAkLdrN,OAAO,CAACkL,EAlLM,IAkLD,CAAE2B,IAAI,CAAC3B,EAAP,EAAW2B,IAAI,CAACI,EAAhB,CAlLC,UAmLdjN,OAAO,CAACmL,EAnLM,IAmLD,CAAE0B,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAnLC,UAoLdrN,OAAO,CAACoL,EApLM,IAoLD,CAAEyB,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CApLC,UAqLdrN,OAAO,CAACqL,EArLM,IAqLD,CAAEwB,IAAI,CAACpM,EAAP,EAAWoM,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACrJ,EAAlC,EAAsCqJ,IAAI,CAACQ,EAA3C,CArLC,UAsLdrN,OAAO,CAACsL,EAtLM,IAsLD,CAAEuB,IAAI,CAACI,EAAP,CAtLC,UAuLdjN,OAAO,CAACuL,EAvLM,IAuLD,CAAEsB,IAAI,CAACtB,EAAP,EAAWsB,IAAI,CAACI,EAAhB,CAvLC,UAwLdjN,OAAO,CAACwL,EAxLM,IAwLD,CAAEqB,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAxLC,UAyLdrN,OAAO,CAACyL,EAzLM,IAyLD,CAAEoB,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAzLC,UA0LdrN,OAAO,CAAC0L,EA1LM,IA0LD,CAAEmB,IAAI,CAACQ,EAAP,EAAWR,IAAI,CAACI,EAAhB,CA1LC,UA2LdjN,OAAO,CAAC2L,EA3LM,IA2LD,CAAEkB,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA3LC,UA4LdrN,OAAO,CAAC4L,EA5LM,IA4LD,CAAEiB,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAACjD,EAAhB,EAAoBiD,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACrJ,EAAlC,EAAsCqJ,IAAI,CAACQ,EAA3C,CA5LC,UA6LdrN,OAAO,CAAC6L,EA7LM,IA6LD,CAAEgB,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA7LC,UA8LdrN,OAAO,CAAC8L,EA9LM,IA8LD,CAAEe,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA9LC,UA+LdrN,OAAO,CAAC+L,EA/LM,IA+LD,CAAEc,IAAI,CAACrJ,EAAP,EAAWqJ,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACQ,EAAlC,CA/LC,UAgMdrN,OAAO,CAACgM,EAhMM,IAgMD,CAAEa,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAhMC,UAiMdrN,OAAO,CAACiM,EAjMM,IAiMD,CAAEY,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAjMC,UAkMdrN,OAAO,CAACkM,EAlMM,IAkMD,CAAEW,IAAI,CAACrJ,EAAP,EAAWqJ,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACQ,EAAlC,CAlMC,UAmMdrN,OAAO,CAACmM,EAnMM,IAmMD,CAAEU,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAnMC,UAoMdrN,OAAO,CAACoM,EApMM,IAoMD,CAAES,IAAI,CAACI,EAAP,CApMC,UAqMdjN,OAAO,CAACqM,EArMM,IAqMD,CAAEQ,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CArMC,UAsMdrN,OAAO,CAACsM,EAtMM,IAsMD,CAAEO,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAtMC,UAuMdrN,OAAO,CAACuM,EAvMM,IAuMD,CAAEM,IAAI,CAACI,EAAP,CAvMC,UAwMdjN,OAAO,CAACwM,EAxMM,IAwMD,CAAEK,IAAI,CAACpM,EAAP,EAAWoM,IAAI,CAACI,EAAhB,EAAoBJ,IAAI,CAAC9I,EAAzB,EAA6B8I,IAAI,CAACrJ,EAAlC,EAAsCqJ,IAAI,CAACQ,EAA3C,CAxMC,UAyMdrN,OAAO,CAACyM,EAzMM,IAyMD,CAAEI,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CAzMC,UA0MdrN,OAAO,CAAC0M,EA1MM,IA0MD,CAAEG,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA1MC,UA2MdrN,OAAO,CAAC2M,EA3MM,IA2MD,CAAEE,IAAI,CAACI,EAAP,EAAWJ,IAAI,CAAC9I,EAAhB,EAAoB8I,IAAI,CAACrJ,EAAzB,EAA6BqJ,IAAI,CAACQ,EAAlC,CA3MC,UA4MdrN,OAAO,CAAC4M,EA5MM,IA4MD,CAAEC,IAAI,CAACI,EAAP,CA5MC,UAAZ,C;;ACFP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;ACLO,SAASS,eAAT,CAAmBC,IAAnB,EAA2C;AAC9C,MAAI;AACA,QAAI,CAACA,IAAL,EAAW;AACP,aAAO,KAAP;AACH;;AAED,QAAI,OAAOC,OAAP,KAAmB,WAAnB,IAAkCD,IAAI,YAAYC,OAAtD,EAA+D;AAC3D,aAAO,IAAP;AACH;;AAED,QAAI,OAAOC,MAAP,KAAkB,WAAlB,IAAiC,OAAOA,MAAM,CAACC,MAAd,KAAyB,UAA1D,IAAwEH,IAAI,YAAYE,MAAM,CAACC,MAAnG,EAA2G;AACvG,aAAO,KAAP;AACH;;AAED,QAAI,OAAOD,MAAP,KAAkB,WAAlB,IAAiC,OAAOA,MAAM,CAACE,WAAd,KAA8B,UAA/D,IAA6EJ,IAAI,YAAYE,MAAM,CAACE,WAAxG,EAAqH;AACjH,aAAO,KAAP;AACH;;AAED,QAAIC,SAAQ,GAAI,EAAD,CAAKA,QAApB;;AAEA,QAAIA,SAAJ,EAAc;AACV,UAAIC,IAAI,GAAGD,SAAQ,CAACE,IAAT,CAAcP,IAAd,CAAX;;AAEA,UAAIM,IAAI,KAAK,iBAAT,IAA8BA,IAAI,KAAK,iBAAvC,IAA4DA,IAAI,KAAK,oBAAzE,EAA+F;AAC3F,eAAO,KAAP;AACH;AACJ;;AAED,QAAI,OAAON,IAAI,CAACQ,IAAZ,KAAqB,UAAzB,EAAqC;AACjC,aAAO,IAAP;AACH;AACJ,GA9BD,CA8BE,OAAOC,GAAP,EAAY;AACV,WAAO,KAAP;AACH;;AAED,SAAO,KAAP;AACH,C;;AClCD,IAAMC,gBAAgB,GAAG,EAAzB;AACA,IAAMC,gCAAyF,GAAG,EAAlG;AAEO,SAASC,8BAAT,CAA2CH,GAA3C,EAAwDI,OAAxD,EAAmF;AAEtF,MAAIH,gBAAgB,CAACI,OAAjB,CAAyBL,GAAzB,MAAkC,CAAC,CAAvC,EAA0C;AACtC;AACH;;AAEDC,kBAAgB,CAACK,IAAjB,CAAsBN,GAAtB;AAEAO,YAAU,CAAC,YAAM;AACb,QAAIC,KAAJ,EAAe,EAGd;;AAED,UAAMR,GAAN;AACH,GAPS,EAOP,CAPO,CAAV;;AASA,OAAK,IAAIS,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGP,gCAAgC,CAACQ,MAArD,EAA6DD,CAAC,EAA9D,EAAkE;AAC9D;AACAP,oCAAgC,CAACO,CAAD,CAAhC,CAAoCT,GAApC,EAAyCI,OAAzC;AACH;AACJ;AAEM,SAASO,uCAAT,CAAsCC,OAAtC,EAA2H;AAC9HV,kCAAgC,CAACI,IAAjC,CAAsCM,OAAtC;AAEA,SAAO;AACHC,UADG,oBACM;AACLX,sCAAgC,CAACY,MAAjC,CAAwCZ,gCAAgC,CAACG,OAAjC,CAAyCO,OAAzC,CAAxC,EAA2F,CAA3F;AACH;AAHE,GAAP;AAKH,C;;AClCD,IAAIG,WAAW,GAAG,CAAlB;AACA,IAAIC,YAAJ;;AAEA,SAASC,WAAT,GAAuB;AACnB,MAAI,CAACF,WAAD,IAAgBC,YAApB,EAAkC;AAC9B,QAAMZ,OAAO,GAAGY,YAAhB;AACAA,gBAAY,GAAG,IAAf;AACAZ,WAAO,CAACc,OAAR;AACH;AACJ;;AAEM,SAASC,WAAT,GAAuB;AAC1BJ,aAAW,IAAI,CAAf;AACH;AAEM,SAASK,SAAT,GAAqB;AACxBL,aAAW,IAAI,CAAf;AACAE,aAAW;AACd;AAEM,SAASI,WAAT,CAAqBC,KAArB,EAA0E;AAAE;AAC/E,MAAIlB,OAAO,GAAGY,YAAY,GAAGA,YAAY,IAAI,IAAIM,KAAJ,EAA7C;AACAL,aAAW;AACX,SAAOb,OAAP;AACH,C;;AC1BD;AACA;AACA;AAEO,IAAMmB,oBAAb;AAAA;AAAA;AAeI,wBAAYX,OAAZ,EAAmG;AAAA;;AAAA,SAbnGY,QAamG;AAAA,SAZnGC,QAYmG;AAAA,SAXnGC,YAWmG;AAAA,SAVnGC,KAUmG;AAAA,SATnGC,KASmG;AAAA,SARnGC,QAQmG;AAAA,SAHnGC,WAGmG;AAAA,SAFnGC,KAEmG;AAE/F,SAAKP,QAAL,GAAgB,KAAhB;AACA,SAAKC,QAAL,GAAgB,KAAhB;AACA,SAAKC,YAAL,GAAoB,KAApB;AAEA,SAAKG,QAAL,GAAgB,EAAhB;;AAEA,QAAIjB,OAAJ,EAAa;AAET,UAAIoB,OAAJ;;AACA,UAAIJ,MAAJ;;AACA,UAAIJ,QAAQ,GAAG,KAAf;AACA,UAAIC,QAAQ,GAAG,KAAf;AACA,UAAIQ,OAAO,GAAG,KAAd;AAEAd,iBAAW;;AAEX,UAAI;AACAP,eAAO,CAAC,UAAAsB,GAAG,EAAI;AACX,cAAID,OAAJ,EAAa;AACT,iBAAI,CAACf,OAAL,CAAagB,GAAb;AACH,WAFD,MAEO;AACHV,oBAAQ,GAAG,IAAX;AACAQ,mBAAM,GAAGE,GAAT;AACH;AAEJ,SARM,EAQJ,UAAAlC,GAAG,EAAI;AACN,cAAIiC,OAAJ,EAAa;AACT,iBAAI,CAACE,MAAL,CAAYnC,GAAZ;AACH,WAFD,MAEO;AACHyB,oBAAQ,GAAG,IAAX;AACAG,kBAAK,GAAG5B,GAAR;AACH;AACJ,SAfM,CAAP;AAiBH,OAlBD,CAkBE,OAAOA,GAAP,EAAY;AACVoB,iBAAS;AACT,aAAKe,MAAL,CAAYnC,GAAZ;AACA;AACH;;AAEDoB,eAAS;AAETa,aAAO,GAAG,IAAV;;AAEA,UAAIT,QAAJ,EAAc;AACV;AACA,aAAKN,OAAL,CAAac,OAAb;AACH,OAHD,MAGO,IAAIP,QAAJ,EAAc;AACjB,aAAKU,MAAL,CAAYP,MAAZ;AACH;AACJ;;AAED,QAAIpB,KAAJ,EAAe,EAMd;AACJ;;AA5EL;;AAAA,SA8EIU,OA9EJ,GA8EI,iBAAQc,MAAR,EAAsC;AAClC,QAAI,KAAKR,QAAL,IAAiB,KAAKC,QAA1B,EAAoC;AAChC,aAAO,IAAP;AACH;;AAED,QAAInC,eAAS,CAAC0C,MAAD,CAAb,EAAuB;AACnB,YAAM,IAAII,KAAJ,CAAU,8CAAV,CAAN;AACH;;AAED,SAAKZ,QAAL,GAAgB,IAAhB;AACA,SAAKG,KAAL,GAAaK,MAAb;AACA,SAAKK,QAAL;AAEA,WAAO,IAAP;AACH,GA5FL;;AAAA,SA8FIF,MA9FJ,GA8FI,gBAAOP,KAAP,EAAwC;AAAA;;AACpC,QAAI,KAAKJ,QAAL,IAAiB,KAAKC,QAA1B,EAAoC;AAChC,aAAO,IAAP;AACH;;AAED,QAAInC,eAAS,CAACsC,KAAD,CAAb,EAAsB;AAClB,YAAM,IAAIQ,KAAJ,CAAU,6CAAV,CAAN;AACH;;AAED,QAAI,CAACR,KAAL,EAAY;AACR;AACA,UAAI5B,IAAG,GAAI4B,KAAK,IAAI,OAAOA,KAAK,CAAChC,QAAb,KAA0B,UAAnC,GAAgDgC,KAAK,CAAChC,QAAN,EAAhD,GAAmE0C,MAAM,CAACC,SAAP,CAAiB3C,QAAjB,CAA0BE,IAA1B,CAA+B8B,KAA/B,CAA9E;;AACAA,WAAK,GAAG,IAAIQ,KAAJ,mDAA2DpC,IAA3D,CAAR;AACH;;AAED,SAAKyB,QAAL,GAAgB,IAAhB;AACA,SAAKG,KAAL,GAAaA,KAAb;;AAEA,QAAI,CAAC,KAAKF,YAAV,EAAwB;AACpBnB,gBAAU,CAAC,YAAM;AACb,YAAI,CAAC,MAAI,CAACmB,YAAV,EAAwB;AACpBvB,wCAA8B,CAACyB,KAAD,EAAQ,MAAR,CAA9B;AACH;AACJ,OAJS,EAIP,CAJO,CAAV;AAKH;;AAED,SAAKS,QAAL;AAEA,WAAO,IAAP;AACH,GA3HL;;AAAA,SA6HIG,WA7HJ,GA6HI,qBAAYZ,KAAZ,EAA6C;AACzC,SAAKF,YAAL,GAAoB,IAApB;AACA,SAAKS,MAAL,CAAYP,KAAZ;AACA,WAAO,IAAP;AACH,GAjIL;;AAAA,SAmIIS,QAnIJ,GAmII,oBAAW;AAAA,QAEDP,WAFC,GAE6C,IAF7C,CAEDA,WAFC;AAAA,QAEYN,QAFZ,GAE6C,IAF7C,CAEYA,QAFZ;AAAA,QAEsBC,QAFtB,GAE6C,IAF7C,CAEsBA,QAFtB;AAAA,QAEgCI,QAFhC,GAE6C,IAF7C,CAEgCA,QAFhC;;AAIP,QAAIC,WAAJ,EAAiB;AACb;AACH;;AAED,QAAI,CAACN,QAAD,IAAa,CAACC,QAAlB,EAA4B;AACxB;AACH;;AAED,SAAKK,WAAL,GAAmB,IAAnB;AACAX,eAAW;;AAEX,QAAMsB,KAAK,GAAG,SAARA,KAAQ,CAAIC,YAAJ,EAAoCC,aAApC,EAAwE;AAClF,aAAOD,YAAY,CAAC3C,IAAb,CAAkB,UAAAmC,GAAG,EAAI;AAC5BS,qBAAa,CAACzB,OAAd,CAAsBgB,GAAtB;AACH,OAFM,EAEJ,UAAAlC,GAAG,EAAI;AACN2C,qBAAa,CAACR,MAAd,CAAqBnC,GAArB;AACH,OAJM,CAAP;AAKH,KAND;;AAQA,SAAK,IAAI4C,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGf,QAAQ,CAACnB,MAA7B,EAAqCkC,CAAC,EAAtC,EAA0C;AAAA,wBAEAf,QAAQ,CAACe,CAAD,CAFR;AAAA,UAEhCC,SAFgC,eAEhCA,SAFgC;AAAA,UAErBC,OAFqB,eAErBA,OAFqB;AAAA,UAEZ1C,OAFY,eAEZA,OAFY;;AAItC,UAAI4B,QAAM,SAAV;;AAEA,UAAIR,QAAJ,EAAc;AAEV,YAAI;AACAQ,kBAAM,GAAGa,SAAS,GAAGA,SAAS,CAAC,KAAKlB,KAAN,CAAZ,GAA2B,KAAKA,KAAlD;AACH,SAFD,CAEE,OAAO3B,GAAP,EAAY;AACVI,iBAAO,CAAC+B,MAAR,CAAenC,GAAf;AACA;AACH;AAEJ,OATD,MASO,IAAIyB,QAAJ,EAAc;AAEjB,YAAI,CAACqB,OAAL,EAAc;AACV1C,iBAAO,CAAC+B,MAAR,CAAe,KAAKP,KAApB;AACA;AACH;;AAED,YAAI;AACAI,kBAAM,GAAGc,OAAO,CAAC,KAAKlB,KAAN,CAAhB;AACH,SAFD,CAEE,OAAO5B,GAAP,EAAY;AACVI,iBAAO,CAAC+B,MAAR,CAAenC,GAAf;AACA;AACH;AACJ;;AAED,UAAIgC,QAAM,YAAYT,YAAlB,KAAmCS,QAAM,CAACR,QAAP,IAAmBQ,QAAM,CAACP,QAA7D,CAAJ,EAA4E;AAExE,YAAIO,QAAM,CAACR,QAAX,EAAqB;AACjBpB,iBAAO,CAACc,OAAR,CAAgBc,QAAM,CAACL,KAAvB;AACH,SAFD,MAEO;AACHvB,iBAAO,CAAC+B,MAAR,CAAeH,QAAM,CAACJ,KAAtB;AACH;;AAEDI,gBAAM,CAACN,YAAP,GAAsB,IAAtB;AAEH,OAVD,MAUO,IAAIpC,eAAS,CAAC0C,QAAD,CAAb,EAAuB;AAE1B,YAAIA,QAAM,YAAYT,YAAlB,KAAmCS,QAAM,CAACR,QAAP,IAAmBQ,QAAM,CAACP,QAA7D,CAAJ,EAA4E;AACxE,cAAIO,QAAM,CAACR,QAAX,EAAqB;AACjBpB,mBAAO,CAACc,OAAR,CAAgBc,QAAM,CAACL,KAAvB;AACH,WAFD,MAEO;AACHvB,mBAAO,CAAC+B,MAAR,CAAeH,QAAM,CAACJ,KAAtB;AACH;AAEJ,SAPD,MAOO;AACH;AACAa,eAAK,CAACT,QAAD,EAAS5B,OAAT,CAAL;AACH;AAEJ,OAdM,MAcA;AAEHA,eAAO,CAACc,OAAR,CAAgBc,QAAhB;AACH;AACJ;;AAEDH,YAAQ,CAACnB,MAAT,GAAkB,CAAlB;AACA,SAAKoB,WAAL,GAAmB,KAAnB;AACAV,aAAS;AACZ,GAzNL;;AAAA,SA2NIrB,IA3NJ,GA2NI,cAA2B8C,SAA3B,EAAqFC,OAArF,EAAsK;AAElK,QAAID,SAAS,IAAI,OAAOA,SAAP,KAAqB,UAAlC,IAAgD,CAACA,SAAS,CAAC/C,IAA/D,EAAqE;AACjE,YAAM,IAAIsC,KAAJ,CAAU,sDAAV,CAAN;AACH;;AAED,QAAIU,OAAO,IAAI,OAAOA,OAAP,KAAmB,UAA9B,IAA4C,CAACA,OAAO,CAAChD,IAAzD,EAA+D;AAC3D,YAAM,IAAIsC,KAAJ,CAAU,oDAAV,CAAN;AACH;;AAED,QAAIhC,OAA6B,GAAG,IAAImB,YAAJ,EAApC;AAEA,SAAKM,QAAL,CAAcvB,IAAd,CAAmB;AACfF,aAAO,EAAPA,OADe;AAEfyC,eAAS,EAATA,SAFe;AAGfC,aAAO,EAAPA;AAHe,KAAnB;AAMA,SAAKpB,YAAL,GAAoB,IAApB;AAEA,SAAKW,QAAL;AAEA,WAAOjC,OAAP;AACH,GAlPL;;AAAA,SAoPI2C,KApPJ,GAoPI,gBAA4BD,OAA5B,EAAoG;AAChG,WAAO,KAAK/C,IAAL,CAAUiD,SAAV,EAAqBF,OAArB,CAAP;AACH,GAtPL;;AAAA,SAwPIG,OAxPJ,GAwPI,kBAAQC,SAAR,EAAmD;AAE/C,QAAIA,SAAS,IAAI,OAAOA,SAAP,KAAqB,UAAlC,IAAgD,CAACA,SAAS,CAACpD,IAA/D,EAAqE;AACjE,YAAM,IAAIsC,KAAJ,CAAU,qCAAV,CAAN;AACH;;AAED,WAAO,KAAKrC,IAAL,CAAU,UAACiC,MAAD,EAAY;AACzB,aAAOT,YAAY,CAAC4B,GAAb,CAAiBD,SAAjB,EACFnD,IADE,CACG,YAAM;AACR,eAAOiC,MAAP;AACH,OAHE,CAAP;AAIH,KALM,EAKJ,UAAChC,GAAD,EAAS;AACR,aAAOuB,YAAY,CAAC4B,GAAb,CAAiBD,SAAjB,EACFnD,IADE,CACG,YAAM;AACR,cAAMC,GAAN;AACH,OAHE,CAAP;AAIH,KAVM,CAAP;AAWH,GAzQL;;AAAA,SA2QIoD,OA3QJ,GA2QI,iBAAQC,IAAR,EAAuBrD,GAAvB,EAAuD;AAAA;;AAEnD,QAAI,KAAKwB,QAAL,IAAiB,KAAKC,QAA1B,EAAoC;AAChC,aAAO,IAAP;AACH;;AAED,QAAI2B,OAAO,GAAG7C,UAAU,CAAC,YAAM;AAE3B,UAAI,MAAI,CAACiB,QAAL,IAAiB,MAAI,CAACC,QAA1B,EAAoC;AAChC;AACH;;AAED,YAAI,CAACU,MAAL,CAAYnC,GAAG,IAAI,IAAIoC,KAAJ,8BAAsCiB,IAAtC,QAAnB;AAEH,KARuB,EAQrBA,IARqB,CAAxB;AAUA,WAAO,KAAKtD,IAAL,CAAU,UAAAiC,MAAM,EAAI;AACvBsB,kBAAY,CAACF,OAAD,CAAZ;AACA,aAAOpB,MAAP;AACH,KAHM,CAAP;AAIH,GA/RL,CAiSI;AAjSJ;;AAAA,SAkSIuB,SAlSJ,GAkSI,qBAAyB;AACrB;AACA,QAAI,OAAO/D,OAAP,KAAmB,WAAvB,EAAoC;AAChC,YAAM,IAAIgE,SAAJ,0BAAN;AACH,KAJoB,CAKrB;;;AACA,WAAOhE,OAAO,CAAC0B,OAAR,CAAgB,IAAhB,CAAP,CANqB,CAMS;AACjC,GAzSL;;AAAA,eA2SWA,OA3SX,GA2SI,iBAA0BS,KAA1B,EAAyE;AAErE,QAAIA,KAAK,YAAYJ,YAArB,EAAmC;AAC/B,aAAOI,KAAP;AACH;;AAED,QAAIrC,eAAS,CAACqC,KAAD,CAAb,EAAsB;AAClB;AACA,aAAO,IAAIJ,YAAJ,CAAiB,UAACL,OAAD,EAAUiB,MAAV;AAAA,eAAqBR,KAAK,CAAC5B,IAAN,CAAWmB,OAAX,EAAoBiB,MAApB,CAArB;AAAA,OAAjB,CAAP;AACH;;AAED,WAAO,IAAIZ,YAAJ,GAAmBL,OAAnB,CAA2BS,KAA3B,CAAP;AACH,GAvTL;;AAAA,eAyTWQ,MAzTX,GAyTI,gBAAcP,KAAd,EAA+C;AAC3C,WAAO,IAAIL,YAAJ,GAAmBY,MAAnB,CAA0BP,KAA1B,CAAP;AACH,GA3TL;;AAAA,eA6TWY,WA7TX,GA6TI,qBAAmBZ,KAAnB,EAAoD;AAChD,WAAO,IAAIL,YAAJ,GAAmBiB,WAAnB,CAA+BZ,KAA/B,CAAP;AACH,GA/TL;;AAAA,eAiUW6B,GAjUX,GAiUI,aAA6BC,QAA7B,EAAuG;AAAE;AAErG,QAAItD,OAAO,GAAG,IAAImB,YAAJ,EAAd;AACA,QAAIoC,KAAK,GAAGD,QAAQ,CAAChD,MAArB;AACA,QAAIkD,OAAO,GAAG,EAAd;;AAEA,QAAI,CAACD,KAAL,EAAY;AACRvD,aAAO,CAACc,OAAR,CAAgB0C,OAAhB;AACA,aAAOxD,OAAP;AACH;;AAED,QAAMqC,KAAK,GAAG,SAARA,KAAQ,CAAIG,CAAJ,EAAgBF,YAAhB,EAAgDC,aAAhD,EAAoF;AAC9F,aAAOD,YAAY,CAAC3C,IAAb,CAAkB,UAAAmC,GAAG,EAAI;AAC5B0B,eAAO,CAAChB,CAAD,CAAP,GAAaV,GAAb;AACAyB,aAAK,IAAI,CAAT;;AACA,YAAIA,KAAK,KAAK,CAAd,EAAiB;AACbvD,iBAAO,CAACc,OAAR,CAAgB0C,OAAhB;AACH;AACJ,OANM,EAMJ,UAAA5D,GAAG,EAAI;AACN2C,qBAAa,CAACR,MAAd,CAAqBnC,GAArB;AACH,OARM,CAAP;AASH,KAVD;;AAYA,SAAK,IAAI4C,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGc,QAAQ,CAAChD,MAA7B,EAAqCkC,CAAC,EAAtC,EAA0C;AACtC,UAAIiB,IAAI,GAAGH,QAAQ,CAACd,CAAD,CAAnB;;AAEA,UAAIiB,IAAI,YAAYtC,YAApB,EAAkC;AAC9B,YAAIsC,IAAI,CAACrC,QAAT,EAAmB;AACfoC,iBAAO,CAAChB,CAAD,CAAP,GAAaiB,IAAI,CAAClC,KAAlB;AACAgC,eAAK,IAAI,CAAT;AACA;AACH;AACJ,OAND,MAMO,IAAI,CAACrE,eAAS,CAACuE,IAAD,CAAd,EAAsB;AACzBD,eAAO,CAAChB,CAAD,CAAP,GAAaiB,IAAb;AACAF,aAAK,IAAI,CAAT;AACA;AACH;;AAEDlB,WAAK,CAACG,CAAD,EAAIrB,YAAY,CAACL,OAAb,CAAqB2C,IAArB,CAAJ,EAAgCzD,OAAhC,CAAL;AACH;;AAED,QAAIuD,KAAK,KAAK,CAAd,EAAiB;AACbvD,aAAO,CAACc,OAAR,CAAgB0C,OAAhB;AACH;;AAED,WAAOxD,OAAP;AACH,GA/WL;;AAAA,eAiXW0D,IAjXX,GAiXI,cAAwBJ,QAAxB,EAAgG;AAAE;AAC9F,QAAI1B,MAAM,GAAG,EAAb;AAEA,WAAOT,YAAY,CAACkC,GAAb,CAAiBnB,MAAM,CAACyB,IAAP,CAAYL,QAAZ,EAAsBM,GAAtB,CAA0B,UAAAC,GAAG,EAAI;AACrD,aAAO1C,YAAY,CAACL,OAAb,CAAqBwC,QAAQ,CAACO,GAAD,CAA7B,EAAoClE,IAApC,CAAyC,UAAA4B,KAAK,EAAI;AACrDK,cAAM,CAACiC,GAAD,CAAN,GAActC,KAAd;AACH,OAFM,CAAP;AAGH,KAJuB,CAAjB,EAIH5B,IAJG,CAIE,YAAM;AACX,aAAOiC,MAAP;AACH,KANM,CAAP;AAOH,GA3XL;;AAAA,eA6XWgC,GA7XX,GA6XI,aAAiBE,KAAjB,EAAmCC,MAAnC,EAAmG;AAC/F;AACA,WAAO5C,YAAY,CAACkC,GAAb,CAAiBS,KAAK,CAACF,GAAN,CAAUG,MAAV,CAAjB,CAAP;AACH,GAhYL;;AAAA,eAkYWxD,4BAlYX,GAkYI,sCAAoCC,OAApC,EAA+F;AAC3F,WAAOD,uCAA4B,CAACC,OAAD,CAAnC;AACH,GApYL;;AAAA,eAsYWuC,GAtYX,GAsYI,cAA8DgB,MAA9D,EAA+GC,OAA/G,EAA6HC,IAA7H,EAA8J;AAE1J,QAAIF,MAAM,IAAI,OAAOA,MAAP,KAAkB,UAA5B,IAA0C,CAACA,MAAM,CAACrE,IAAtD,EAA4D;AACxD,YAAM,IAAIsC,KAAJ,CAAU,iCAAV,CAAN;AACH;;AAED,QAAIJ,MAAJ;AAEAb,eAAW;;AAEX,QAAI;AACA;AACAa,YAAM,GAAGmC,MAAM,CAACG,KAAP,CAAaF,OAAb,EAAsBC,IAAI,IAAI,EAA9B,CAAT;AACH,KAHD,CAGE,OAAOrE,GAAP,EAAY;AACVoB,eAAS;AACT,aAAOG,YAAY,CAACY,MAAb,CAAoBnC,GAApB,CAAP;AACH;;AAEDoB,aAAS;AAET,WAAOG,YAAY,CAACL,OAAb,CAAqBc,MAArB,CAAP;AACH,GA3ZL;;AAAA,eA6ZWuC,KA7ZX,GA6ZI,eAAaA,MAAb,EAAkD;AAC9C,WAAO,IAAIhD,YAAJ,CAAiB,UAAAL,OAAO,EAAI;AAC/BX,gBAAU,CAACW,OAAD,EAAUqD,MAAV,CAAV;AACH,KAFM,CAAP;AAGH,GAjaL;;AAAA,eAmaWjF,SAnaX,GAmaI,mBAAiBqC,KAAjB,EAA0C;AAEtC,QAAIA,KAAK,IAAIA,KAAK,YAAYJ,YAA9B,EAA4C;AACxC,aAAO,IAAP;AACH;;AAED,WAAOjC,eAAS,CAACqC,KAAD,CAAhB;AACH,GA1aL;;AAAA,eA4aW6C,KA5aX,GA4aI,iBAAoC;AAChC,WAAOnD,WAAW,CAACE,YAAD,CAAlB;AACH,GA9aL;;AAAA;AAAA,I;;ACJA;;;;;;;;;;;;;;;;;;;;;;;;;ACDA;AAEA;;AAIA;;;;;AAMO,SAASkD,SAAT,CAAmBC,GAAnB,EAA0C;AAC7C,SAAOA,GAAG,CAACC,OAAJ,CAAY,KAAZ,EAAmB,KAAnB,EAA0BA,OAA1B,CAAkC,IAAlC,EAAwC,KAAxC,EAA+CA,OAA/C,CAAuD,IAAvD,EAA6D,KAA7D,EAAoEA,OAApE,CAA4E,KAA5E,EAAmF,KAAnF,CAAP;AACH;AAGD;;;;;;AAMO,SAASC,gBAAT,CAA0BC,MAA1B,EAAoD;AACvD,SAAOA,MAAM,CAACF,OAAP,CAAe,UAAf,EAA2B,UAACG,CAAD,EAAO;AACrC,iBAAYA,CAAC,CAACC,WAAF,EAAZ;AACH,GAFM,CAAP;AAGH;AAGD;;;;;;AAMO,SAASC,gBAAT,CAA0BH,MAA1B,EAAoD;AACvD,SAAOA,MAAM,CAACF,OAAP,CAAe,WAAf,EAA4B,UAACG,CAAD,EAAO;AACtC,WAAOA,CAAC,CAAC,CAAD,CAAD,CAAKG,WAAL,EAAP;AACH,GAFM,CAAP;AAGH;AAGD;;;;;;AAMO,SAASC,MAAT,CAAgBC,GAAhB,EAA8BC,MAA9B,EAAyD;AAC5D,MAAI,CAACA,MAAL,EAAa;AACT,WAAOD,GAAP;AACH;;AAED,OAAK,IAAIlB,GAAT,IAAgBmB,MAAhB,EAAwB;AACpB,QAAIA,MAAM,CAACC,cAAP,CAAsBpB,GAAtB,CAAJ,EAAgC;AAC5BkB,SAAG,CAAClB,GAAD,CAAH,GAAWmB,MAAM,CAACnB,GAAD,CAAjB;AACH;AACJ;;AAED,SAAOkB,GAAP;AACH;AAGD;;;;;;AAMO,SAASG,MAAT,CAAgBH,GAAhB,EAA6C;AAChD,MAAIvB,OAAO,GAAG,EAAd;;AAEA,OAAK,IAAIK,GAAT,IAAgBkB,GAAhB,EAAqB;AACjB,QAAIA,GAAG,CAACE,cAAJ,CAAmBpB,GAAnB,CAAJ,EAA6B;AACzBL,aAAO,CAACtD,IAAR,CAAa6E,GAAG,CAAClB,GAAD,CAAhB;AACH;AACJ;;AAED,SAAOL,OAAP;AACH;AAGD;;;;;;AAMO,SAAS2B,QAAT,GAA6B;AAEhC,MAAIC,KAAK,GAAG,kBAAZ;AAEA,SAAO,aAAab,OAAb,CAAqB,IAArB,EAA2B,YAAM;AACpC,WAAOa,KAAK,CAACC,MAAN,CAAaC,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACE,MAAL,KAAgBJ,KAAK,CAAC9E,MAAjC,CAAb,CAAP;AACH,GAFM,CAAP;AAGH;AAED;;;;;;AAMO,SAASmF,sBAAT,CAAgCV,GAAhC,EAAuD;AAC1D,SAAOW,IAAI,CAACC,SAAL,CAAeZ,GAAf,EAAoB,UAAClB,GAAD,EAAM+B,GAAN,EAAc;AACrC,QAAI,OAAOA,GAAP,KAAe,UAAnB,EAA+B;AAC3B,aAAOA,GAAG,CAACpG,QAAJ,EAAP;AACH;;AACD,WAAOoG,GAAP;AACH,GALM,CAAP;AAMH;AAGD;;;;;;AAMO,SAASC,OAAT,CAAiBd,GAAjB,EAA+Be,IAA/B,EAAsD;AAEzD,MAAIlE,MAAJ;;AAEA,MAAI;AACAA,UAAM,GAAGmD,GAAG,CAACe,IAAD,CAAZ;AACH,GAFD,CAEE,OAAOlG,GAAP,EAAY,CACV;AACH;;AAED,SAAOgC,MAAP;AACH;AAGD;;;;AAIO,SAASmE,qBAAT,CAA+BtB,MAA/B,EAAyD;AAC5D,SAAOA,MAAM,CAACY,MAAP,CAAc,CAAd,EAAiBR,WAAjB,KAAiCJ,MAAM,CAACuB,KAAP,CAAa,CAAb,EAAgBrB,WAAhB,EAAxC;AACH;AAGD;;;;;;AAMO,SAASsB,GAAT,CAAa9G,IAAb,EAA4B+G,IAA5B,EAA2CC,GAA3C,EAAgE;AAEnE,MAAI,CAACD,IAAL,EAAW;AACP,WAAOC,GAAP;AACH;;AAED,MAAIC,SAAS,GAAGF,IAAI,CAACG,KAAL,CAAW,GAAX,CAAhB,CANmE,CAQnE;;AAEA,OAAK,IAAI7D,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4D,SAAS,CAAC9F,MAA9B,EAAsCkC,CAAC,EAAvC,EAA2C;AAEvC;AAEA,QAAI,OAAOrD,IAAP,KAAgB,QAAhB,IAA4BA,IAAI,KAAK,IAAzC,EAA+C;AAC3CA,UAAI,GAAGA,IAAI,CAACiH,SAAS,CAAC5D,CAAD,CAAV,CAAX,CAD2C,CAG/C;AACC,KAJD,MAIO;AACH,aAAO2D,GAAP;AACH;AACJ,GArBkE,CAuBnE;;;AAEA,SAAOhH,IAAI,KAAKyD,SAAT,GAAqBuD,GAArB,GAA2BhH,IAAlC;AACH;AAGD;;;;;;AAMO,SAASmH,YAAT,CAAsBvC,MAAtB,EAAyCd,IAAzC,EAAyE;AAE5E,MAAID,OAAJ;;AAEA,WAASuD,WAAT,GAAuB;AACnBvD,WAAO,GAAG7C,UAAU,CAACoG,WAAD,EAActD,IAAd,CAApB;AACAc,UAAM,CAACrE,IAAP;AACH;;AAEDsD,SAAO,GAAG7C,UAAU,CAACoG,WAAD,EAActD,IAAd,CAApB;AAEA,SAAO;AACHxC,UADG,oBACM;AACLyC,kBAAY,CAACF,OAAD,CAAZ;AACH;AAHE,GAAP;AAKH;AAED;;;;;;AAMO,SAASwD,WAAT,CAAqBzC,MAArB,EAAwCd,IAAxC,EAAuD;AAE1D,MAAIwD,QAAQ,GAAGH,YAAY,CAAC,YAAM;AAC9BrD,QAAI,IAAI,GAAR;;AACA,QAAIA,IAAI,IAAI,CAAZ,EAAe;AACXwD,cAAQ,CAAChG,MAAT;AACAsD,YAAM;AACT;AACJ,GAN0B,EAMxB,GANwB,CAA3B;AAOH;AAGM,SAAS2C,IAAT,CAAcvH,IAAd,EAA4CwH,QAA5C,EAAiE;AAEpE,MAAI,CAACxH,IAAL,EAAW;AACP;AACH;;AAED,MAAIyH,KAAK,CAACC,OAAN,CAAc1H,IAAd,CAAJ,EAAyB;AACrB,QAAI2H,GAAG,GAAG3H,IAAI,CAACmB,MAAf;;AACA,SAAK,IAAIkC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGsE,GAApB,EAAyBtE,CAAC,EAA1B,EAA8B;AAC1BmE,cAAQ,CAACxH,IAAI,CAACqD,CAAD,CAAL,EAAUA,CAAV,CAAR;AACH;AAEJ,GAND,MAMO,IAAI,OAAOrD,IAAP,KAAgB,QAApB,EAA8B;AACjC,QAAIwE,IAAI,GAAGzB,MAAM,CAACyB,IAAP,CAAYxE,IAAZ,CAAX;AACA,QAAI2H,IAAG,GAAGnD,IAAI,CAACrD,MAAf;;AACA,SAAK,IAAIkC,EAAC,GAAG,CAAb,EAAgBA,EAAC,GAAGsE,IAApB,EAAyBtE,EAAC,EAA1B,EAA8B;AAC1B,UAAIqB,GAAG,GAAGF,IAAI,CAACnB,EAAD,CAAd;AACAmE,cAAQ,CAACxH,IAAI,CAAC0E,GAAD,CAAL,EAAYA,GAAZ,CAAR;AACH;AACJ;AACJ;AAGM,SAASkD,aAAT,CAAmD5H,IAAnD,EAA6D6H,SAA7D,EAAkGC,OAAlG,EAA6H;AAAA,MAA3BA,OAA2B;AAA3BA,WAA2B,GAAR,EAAQ;AAAA;;AAEhI,MAAIL,KAAK,CAACC,OAAN,CAAc1H,IAAd,CAAJ,EAAyB;AAAA;AACrB,UAAImB,MAAM,GAAGnB,IAAI,CAACmB,MAAlB;AACA,UAAIsB,MAAM,GAAG,EAAb;;AAFqB,iCAIZY,CAJY;AAKjBN,cAAM,CAACgF,cAAP,CAAsBtF,MAAtB,EAA8BY,CAA9B,EAAiC;AAC7B2E,sBAAY,EAAE,IADe;AAE7BC,oBAAU,EAAI,IAFe;AAG7BnB,aAAG,EAAW,eAAM;AAChB,gBAAIoB,OAAO,GAAGJ,OAAO,GAAOA,OAAP,SAAoBzE,CAApB,QAA+BA,CAApD;AACA,gBAAI8E,KAAK,GAAGnI,IAAI,CAACqD,CAAD,CAAhB;AAEA,gBAAI+E,IAAI,GAAI,OAAOD,KAAnB;AACA,gBAAIE,QAAQ,GAAGR,SAAS,CAACO,IAAD,CAAxB;;AACA,gBAAIC,QAAJ,EAAc;AACV,kBAAIC,QAAQ,GAAGD,QAAQ,CAACF,KAAD,EAAQ9E,CAAR,EAAW6E,OAAX,CAAvB;;AACA,kBAAI,OAAOI,QAAP,KAAoB,WAAxB,EAAqC;AACjC7F,sBAAM,CAACY,CAAD,CAAN,GAAYiF,QAAZ;AACA,uBAAO7F,MAAM,CAACY,CAAD,CAAb;AACH;AACJ;;AAED,gBAAI,OAAO8E,KAAP,KAAiB,QAAjB,IAA6BA,KAAK,KAAK,IAA3C,EAAiD;AAC7C1F,oBAAM,CAACY,CAAD,CAAN,GAAYuE,aAAa,CAACO,KAAD,EAAQN,SAAR,EAAmBK,OAAnB,CAAzB;AACA,qBAAOzF,MAAM,CAACY,CAAD,CAAb;AACH;;AAEDZ,kBAAM,CAACY,CAAD,CAAN,GAAY8E,KAAZ;AACA,mBAAO1F,MAAM,CAACY,CAAD,CAAb;AACH,WAxB4B;AAyB7BkF,aAAG,EAAE,aAACnG,KAAD,EAAW;AACZ,mBAAOK,MAAM,CAACY,CAAD,CAAb;AACAZ,kBAAM,CAACY,CAAD,CAAN,GAAYjB,KAAZ;AACH;AA5B4B,SAAjC;AALiB;;AAIrB,WAAK,IAAIiB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGlC,MAApB,EAA4BkC,CAAC,EAA7B,EAAiC;AAAA,cAAxBA,CAAwB;AA+BhC,OAnCoB,CAqCrB;;;AACA;AAAA,WAAOZ;AAAP;AAtCqB;;AAAA;AAuCxB,GAvCD,MAuCO,IAAI,OAAOzC,IAAP,KAAgB,QAAhB,IAA4BA,IAAI,KAAK,IAAzC,EAA+C;AAAA;AAClD,UAAIyC,MAAM,GAAG,EAAb;;AADkD,mCAGzCiC,GAHyC;AAI9C,YAAI,CAAC1E,IAAI,CAAC8F,cAAL,CAAoBpB,GAApB,CAAL,EAA+B;AAC3B;AACH;;AAED3B,cAAM,CAACgF,cAAP,CAAsBtF,MAAtB,EAA8BiC,GAA9B,EAAmC;AAC/BsD,sBAAY,EAAE,IADiB;AAE/BC,oBAAU,EAAI,IAFiB;AAG/BnB,aAAG,EAAW,eAAM;AAChB,gBAAIoB,OAAO,GAAGJ,OAAO,GAAOA,OAAP,SAAoBpD,GAApB,QAAiCA,GAAtD,CADgB,CAEhB;;AACA,gBAAIyD,KAAK,GAAGnI,IAAI,CAAC0E,GAAD,CAAhB;AAEA,gBAAI0D,IAAI,GAAI,OAAOD,KAAnB;AACA,gBAAIE,QAAQ,GAAGR,SAAS,CAACO,IAAD,CAAxB;;AACA,gBAAIC,QAAJ,EAAc;AACV,kBAAIC,QAAQ,GAAGD,QAAQ,CAACF,KAAD,EAAQzD,GAAR,EAAawD,OAAb,CAAvB;;AACA,kBAAI,OAAOI,QAAP,KAAoB,WAAxB,EAAqC;AACjC7F,sBAAM,CAACiC,GAAD,CAAN,GAAc4D,QAAd;AACA,uBAAO7F,MAAM,CAACiC,GAAD,CAAb;AACH;AACJ;;AAED,gBAAI,OAAOyD,KAAP,KAAiB,QAAjB,IAA6BA,KAAK,KAAK,IAA3C,EAAiD;AAC7C1F,oBAAM,CAACiC,GAAD,CAAN,GAAckD,aAAa,CAACO,KAAD,EAAQN,SAAR,EAAmBK,OAAnB,CAA3B;AACA,qBAAOzF,MAAM,CAACiC,GAAD,CAAb;AACH;;AAEDjC,kBAAM,CAACiC,GAAD,CAAN,GAAcyD,KAAd;AACA,mBAAO1F,MAAM,CAACiC,GAAD,CAAb;AACH,WAzB8B;AA0B/B6D,aAAG,EAAE,aAACnG,KAAD,EAAW;AACZ,mBAAOK,MAAM,CAACiC,GAAD,CAAb;AACAjC,kBAAM,CAACiC,GAAD,CAAN,GAActC,KAAd;AACH;AA7B8B,SAAnC;AAR8C;;AAGlD,WAAK,IAAIsC,GAAT,IAAgB1E,IAAhB,EAAsB;AAAA,2BAAb0E,GAAa;;AAAA,kCAEd;AAkCP,OAvCiD,CAyClD;;;AACA;AAAA,WAAOjC;AAAP;AA1CkD;;AAAA;AA2CrD,GA3CM,MA2CA;AACH,UAAM,IAAII,KAAJ,2BAAN;AACH;AACJ;AAGM,SAAS2F,QAAT,CAAkB3C,MAAlB,EAAmC4C,MAAnC,EAAoDnI,IAApD,EAAmE0G,GAAnE,EAAgF;AACnF,MAAInB,MAAM,CAACC,cAAP,CAAsBxF,IAAtB,CAAJ,EAAiC;AAC7B,QAAIoI,UAAU,GAAG3F,MAAM,CAAC4F,wBAAP,CAAgC9C,MAAhC,EAAwCvF,IAAxC,CAAjB,CAD6B,CAE7B;;AACAyC,UAAM,CAACgF,cAAP,CAAsBU,MAAtB,EAA8BnI,IAA9B,EAAoCoI,UAApC;AAEH,GALD,MAKO;AACHD,UAAM,CAACnI,IAAD,CAAN,GAAe0G,GAAf;AACH;AACJ;AAEM,SAAS4B,MAAT,CAAgBhD,GAAhB,EAA8BiD,MAA9B,EAAoDC,MAApD,EAAkG;AAAA,MAApED,MAAoE;AAApEA,UAAoE,GAAlD,EAAkD;AAAA;;AAAA,MAA9CC,MAA8C;AAA9CA,UAA8C,GAA5B,EAA4B;AAAA;;AACrGD,QAAM,GAAGA,MAAM,GAAOA,MAAP,SAAoBA,MAAnC;;AACA,OAAK,IAAInE,GAAT,IAAgBkB,GAAhB,EAAqB;AACjB,QAAIA,GAAG,CAAClB,GAAD,CAAH,KAAajB,SAAb,IAA0BmC,GAAG,CAAClB,GAAD,CAAH,KAAa,IAAvC,IAA+C,OAAOkB,GAAG,CAAClB,GAAD,CAAV,KAAoB,UAAvE,EAAmF;AAC/E;AACH,KAFD,MAEO,IAAIkB,GAAG,CAAClB,GAAD,CAAH,IAAY+C,KAAK,CAACC,OAAN,CAAc9B,GAAG,CAAClB,GAAD,CAAjB,CAAZ,IAAuCkB,GAAG,CAAClB,GAAD,CAAH,CAASvD,MAAhD,IAA0DyE,GAAG,CAAClB,GAAD,CAAH,CAASqE,KAAT,CAAe,UAAAtC,GAAG;AAAA,aAAI,OAAOA,GAAP,KAAe,QAAnB;AAAA,KAAlB,CAA9D,EAA8G;AACjHqC,YAAM,MAAKD,MAAL,GAAgBnE,GAAhB,CAAN,GAAgCkB,GAAG,CAAClB,GAAD,CAAH,CAASsE,IAAT,CAAc,GAAd,CAAhC;AACH,KAFM,MAEA,IAAIpD,GAAG,CAAClB,GAAD,CAAH,IAAY,OAAOkB,GAAG,CAAClB,GAAD,CAAV,KAAoB,QAApC,EAA8C;AACjDoE,YAAM,GAAGF,MAAM,CAAChD,GAAG,CAAClB,GAAD,CAAJ,OAAemE,MAAf,GAA0BnE,GAA1B,EAAkCoE,MAAlC,CAAf;AACH,KAFM,MAEA;AACHA,YAAM,MAAKD,MAAL,GAAgBnE,GAAhB,CAAN,GAAgCkB,GAAG,CAAClB,GAAD,CAAH,CAASrE,QAAT,EAAhC;AACH;AACJ;;AACD,SAAOyI,MAAP;AACH;AAED,IAAIG,SAAS,GAAG,IAAIC,gDAAJ,EAAhB;AAEO,SAASC,WAAT,CAAqBvD,GAArB,EAA4C;AAE/C,MAAIA,GAAG,KAAK,IAAR,IAAgBA,GAAG,KAAKnC,SAAxB,IAAsC,OAAOmC,GAAP,KAAe,QAAf,IAA2B,OAAOA,GAAP,KAAe,UAApF,EAAiG;AAC7F,UAAM,IAAI/C,KAAJ,kBAAN;AACH;;AAED,MAAIuG,GAAG,GAAGH,SAAS,CAACnC,GAAV,CAAclB,GAAd,CAAV;;AAEA,MAAI,CAACwD,GAAL,EAAU;AACNA,OAAG,GAAO,OAAOxD,GAAd,SAAuBI,QAAQ,EAAlC;AACAiD,aAAS,CAACV,GAAV,CAAc3C,GAAd,EAAmBwD,GAAnB;AACH;;AAED,SAAOA,GAAP;AACH;AAWM,SAASC,KAAT,CAAeC,OAAf,EAA0ChE,MAA1C,EAA2DiE,KAA3D,EAAkG;AAAA,MAAvCA,KAAuC;AAAvCA,SAAuC,GAAtB,CAAsB;AAAA;;AAErG,MAAI,OAAOD,OAAP,KAAmB,QAAvB,EAAiC;AAC7B;AACAA,WAAO,GAAG,IAAIE,MAAJ,CAAWF,OAAX,CAAV;AACH;;AAED,MAAI7G,MAAM,GAAG6C,MAAM,CAACuB,KAAP,CAAa0C,KAAb,EAAoBE,KAApB,CAA0BH,OAA1B,CAAb;;AAEA,MAAI,CAAC7G,MAAL,EAAa;AACT;AACH,GAXoG,CAarG;;;AACA,MAAIiH,KAAc,GAAGjH,MAAM,CAACiH,KAA5B;AACA,MAAID,KAAK,GAAGhH,MAAM,CAAC,CAAD,CAAlB;AAEA,SAAO;AACHkH,QAAI,EAAIF,KADL;AAEHG,UAAM,EAAEnH,MAAM,CAACoE,KAAP,CAAa,CAAb,CAFL;AAGH0C,SAAK,EAAGA,KAAK,GAAGG,KAHb;AAIHG,OAAG,EAAKN,KAAK,GAAGG,KAAR,GAAgBD,KAAK,CAACtI,MAJ3B;AAKHA,UAAM,EAAEsI,KAAK,CAACtI,MALX;AAOHiE,WAPG,mBAOKuE,IAPL,EAO6B;AAE5B,UAAI,CAACF,KAAL,EAAY;AACR,eAAO,EAAP;AACH;;AAED,kBAAWA,KAAK,CAAC5C,KAAN,CAAY,CAAZ,EAAe0C,KAAK,GAAGG,KAAvB,CAAX,GAA6CC,IAA7C,GAAsDF,KAAK,CAAC5C,KAAN,CAAY6C,KAAK,GAAGD,KAAK,CAACtI,MAA1B,CAAtD;AACH;AAdE,GAAP;AAgBH;AAEM,SAAS2I,QAAT,CAAkBR,OAAlB,EAA6ChE,MAA7C,EAAuF;AAE1F,MAAIyE,OAAO,GAAG,EAAd;AACA,MAAIR,KAAK,GAAG,CAAZ,CAH0F,CAK1F;;AACA,SAAO,IAAP,EAAa;AACT,QAAIE,KAAK,GAAGJ,KAAK,CAACC,OAAD,EAAUhE,MAAV,EAAkBiE,KAAlB,CAAjB;;AAEA,QAAI,CAACE,KAAL,EAAY;AACR;AACH;;AAEDM,WAAO,CAAChJ,IAAR,CAAa0I,KAAb;AACAF,SAAK,GAAGE,KAAK,CAACI,GAAd;AACH;;AAED,SAAOE,OAAP;AACH;AAEM,SAAS3F,KAAT,CAAee,GAAf,EAA6B6E,MAA7B,EAAuD;AAE1D,MAAIC,UAAU,GAAG,CAAjB;AACA,MAAIC,SAAS,GAAG,CAAhB,CAH0D,CAK1D;;AACA,SAAO,IAAP,EAAa;AACT,QAAIR,KAAK,GAAGvE,GAAG,CAACrE,OAAJ,CAAYkJ,MAAZ,EAAoBC,UAApB,CAAZ;;AAEA,QAAIP,KAAK,KAAK,CAAC,CAAf,EAAkB;AACd;AACH;;AAEDO,cAAU,GAAGP,KAAb;AACAQ,aAAS,IAAI,CAAb;AACH;;AAED,SAAOA,SAAP;AACH;AAEM,SAAS1D,SAAT,CAAmBxG,IAAnB,EAA0C;AAC7C,MAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;AAC1B,WAAOA,IAAP;AACH;;AAED,MAAIA,IAAI,IAAI,OAAOA,IAAI,CAACK,QAAZ,KAAyB,UAArC,EAAiD;AAC7C,WAAOL,IAAI,CAACK,QAAL,EAAP;AACH;;AAED,SAAO0C,MAAM,CAACC,SAAP,CAAiB3C,QAAjB,CAA0BE,IAA1B,CAA+BP,IAA/B,CAAP;AACH;AAEM,SAASmK,cAAT,CAAwB1J,GAAxB,EAA8C;AACjD,MAAIA,GAAJ,EAAS;AACL;AADK,QAEC+B,KAFD,GAEoB/B,GAFpB,CAEC+B,KAFD;AAAA,QAEQ4H,OAFR,GAEoB3J,GAFpB,CAEQ2J,OAFR;;AAIL,QAAI,OAAO5H,KAAP,KAAiB,QAArB,EAA+B;AAC3B,aAAOA,KAAP;AACH;;AAED,QAAI,OAAO4H,OAAP,KAAmB,QAAvB,EAAiC;AAC7B,aAAOA,OAAP;AACH;AACJ;;AAED,SAAO5D,SAAS,CAAC/F,GAAD,CAAhB;AACH;AASM,SAAS4J,YAAT,GAA2C;AAE9C,MAAIC,SAAS,GAAG,EAAhB;AACA,MAAIhI,QAAQ,GAAG,EAAf;AAEA,SAAO;AAEHiI,MAFG,cAEAC,SAFA,EAEoBnJ,OAFpB,EAEyD;AAExD,UAAIoJ,WAAW,GAAGnI,QAAQ,CAACkI,SAAD,CAAR,GAAsBlI,QAAQ,CAACkI,SAAD,CAAR,IAAuB,EAA/D;AAEAC,iBAAW,CAAC1J,IAAZ,CAAiBM,OAAjB;AAEA,UAAIqJ,SAAS,GAAG,KAAhB;AAEA,aAAO;AACHpJ,cADG,oBACM;AACL,cAAI,CAACoJ,SAAL,EAAgB;AACZA,qBAAS,GAAG,IAAZ;AACAD,uBAAW,CAAClJ,MAAZ,CAAmBkJ,WAAW,CAAC3J,OAAZ,CAAoBO,OAApB,CAAnB,EAAiD,CAAjD;AACH;AAEJ;AAPE,OAAP;AASH,KAnBE;AAqBHsJ,QArBG,gBAqBEH,SArBF,EAqBsBnJ,OArBtB,EAqB2D;AAE1D,UAAIuJ,QAAQ,GAAG,KAAKL,EAAL,CAAQC,SAAR,EAAmB,YAAM;AACpCI,gBAAQ,CAACtJ,MAAT;AACAD,eAAO;AACV,OAHc,CAAf;AAKA,aAAOuJ,QAAP;AACH,KA7BE;AA+BHC,WA/BG,mBA+BKL,SA/BL,EA+ByB;AAExB,UAAIC,WAAW,GAAGnI,QAAQ,CAACkI,SAAD,CAA1B;;AAEA,UAAIC,WAAJ,EAAiB;AAAA,gCACOA,WADP,gBACoB;AAA5B,cAAIpJ,QAAO,GAAIoJ,WAAJ,KAAX;;AACDpJ,kBAAO;AACV;AACJ;AACJ,KAxCE;AA0CHyJ,eA1CG,uBA0CSN,SA1CT,EA0C6B;AAE5B,UAAIF,SAAS,CAACE,SAAD,CAAb,EAA0B;AACtB;AACH;;AAEDF,eAAS,CAACE,SAAD,CAAT,GAAuB,IAAvB;AACA,WAAKK,OAAL,CAAaL,SAAb;AACH;AAlDE,GAAP;AAoDH,C;;AC1iBD;AAGA;;;;;;AAMO,SAASO,IAAT,GAAgB,CAEtB,CAFM,CACH;;AAIJ;;;;;;AAMO,SAASJ,IAAT,CAA4B/F,MAA5B,EAA4F;AAE/F,MAAIoG,MAAM,GAAG,KAAb;AACA,MAAIvI,MAAJ,CAH+F,CAK/F;;AACA,SAAO,SAASwI,WAAT,GAA6C;AAAA,sCAArBnG,IAAqB;AAArBA,UAAqB;AAAA;;AAChD,QAAIkG,MAAJ,EAAY;AACR,aAAOvI,MAAP;AACH;;AAEDuI,UAAM,GAAG,IAAT;AACAvI,UAAM,GAAGmC,MAAM,CAACG,KAAP,CAAa,IAAb,EAAmBmG,SAAnB,CAAT;AACA,WAAOzI,MAAP;AACH,GARD;AASH;AAGD;;;;;;AAMO,SAAS0I,OAAT,CAA+BvG,MAA/B,EAA+F;AAElG,MAAIP,OAAO,GAAG,EAAd,CAFkG,CAIlG;;AACA,SAAO,SAAS+G,cAAT,GAAgD;AAAA,uCAArBtG,IAAqB;AAArBA,UAAqB;AAAA;;AAEnD,QAAIuG,QAAJ;;AAEA,QAAI;AACAA,cAAQ,GAAG9E,IAAI,CAACC,SAAL,CAAeiB,KAAK,CAACzE,SAAN,CAAgB6D,KAAhB,CAAsBtG,IAAtB,CAA2B2K,SAA3B,CAAf,EAAsD,UAACxG,GAAD,EAAM+B,GAAN,EAAc;AAE3E,YAAI,OAAOA,GAAP,KAAe,UAAnB,EAA+B;AAC3B,mCAAwB0C,WAAW,CAAC1C,GAAD,CAAnC;AACH;;AAED,eAAOA,GAAP;AACH,OAPU,CAAX;AASH,KAVD,CAUE,OAAOhG,GAAP,EAAY;AACV,YAAM,IAAIoC,KAAJ,CAAU,0DAAV,CAAN;AACH;;AAED,QAAI,CAACwB,OAAO,CAACyB,cAAR,CAAuBuF,QAAvB,CAAL,EAAuC;AACnChH,aAAO,CAACgH,QAAD,CAAP,GAAoBzG,MAAM,CAACG,KAAP,CAAa,IAAb,EAAmBmG,SAAnB,CAApB;AACH;;AAED,WAAO7G,OAAO,CAACgH,QAAD,CAAd;AACH,GAvBD;AAwBH;AAEM,SAASC,QAAT,CAAqB1G,MAArB,EAA6Dd,IAA7D,EAAqH;AAAA,MAAxDA,IAAwD;AAAxDA,QAAwD,GAAxC,GAAwC;AAAA;;AAExH,MAAID,OAAJ;AAEA,SAAO,SAAS0H,eAAT,GAA2B;AAAA;AAAA;;AAC9BxH,gBAAY,CAACF,OAAD,CAAZ;AAEAA,WAAO,GAAG7C,UAAU,CAAC,YAAM;AACvB,aAAO4D,MAAM,CAACG,KAAP,CAAa,KAAb,EAAmBmG,UAAnB,CAAP;AACH,KAFmB,EAEjBpH,IAFiB,CAApB;AAGH,GAND;AAOH;AAEM,SAAS0H,kBAAT,CAAuD5F,GAAvD,EAAoE;AACvE,SAAOgC,aAAa,CAAChC,GAAD,EAAM;AACtB,gBAAY,qBAAM;AACd,aAAO;AACH6F,gBAAQ,EAAE;AADP,OAAP;AAGH;AALqB,GAAN,CAApB;AAOH;AAEM,SAASC,oBAAT,CAAyD9F,GAAzD,EAAkEvE,OAAlE,EAA0F;AAC7F,SAAOuG,aAAa,CAAChC,GAAD,EAAM;AACtB,cAAU,gBAACxD,KAAD,EAAQsC,GAAR,EAAaoD,OAAb,EAAyB;AAC/B,UAAI1F,KAAK,IAAIA,KAAK,CAACqJ,QAAN,KAAmB,cAAhC,EAAgD;AAC5C,eAAO,SAASE,2BAAT,GAA+C;AAClD,iBAAOtK,OAAO,CAAC;AAAEqD,eAAG,EAAHA,GAAF;AAAOoD,mBAAO,EAAPA,OAAP;AAAgB8D,gBAAI,EAAE,IAAtB;AAA4B9G,gBAAI,EAAEoG;AAAlC,WAAD,CAAd;AACH,SAFD;AAGH;AACJ;AAPqB,GAAN,CAApB;AASH,C;;;;AC7GD;AAEA;AACA;AACA;AAEA;AAGA;AACA;AAEO,SAASW,WAAT,CAAqBC,SAArB,EAA8C3D,KAA9C,EAA0E;AAC7E2D,WAAS,CAACD,WAAV,CAAsB1D,KAAtB;AACH;;AAED,SAAS4D,SAAT,CAAmBC,OAAnB,EAA8C;AAE1C,MAAIA,OAAO,YAAY9L,MAAM,CAAC+L,OAA9B,EAAuC;AACnC,WAAO,IAAP;AACH;;AAED,MAAID,OAAO,KAAK,IAAZ,IAAoB,OAAOA,OAAP,KAAmB,QAAvC,IAAmDA,OAAO,CAACE,QAAR,KAAqB,CAAxE,IAA6E,OAAOF,OAAO,CAACG,KAAf,KAAyB,QAAtG,IAAkH,OAAOH,OAAO,CAACI,aAAf,KAAiC,QAAvJ,EAAiK;AAC7J,WAAO,IAAP;AACH;;AAED,SAAO,KAAP;AACH;;AAEM,SAASC,gBAAT,CAA0BC,EAA1B,EAA4CC,QAA5C,EAA2F;AAC9F,SAAO9E,KAAK,CAACzE,SAAN,CAAgB6D,KAAhB,CAAsBtG,IAAtB,CAA2B+L,EAAE,CAACD,gBAAH,CAAoBE,QAApB,CAA3B,CAAP;AACH;AAED;;;;;;;;;AASO,SAASC,cAAT,CAAwBC,EAAxB,EAA4D;AAE/D,MAAIV,SAAS,CAACU,EAAD,CAAb,EAAmB;AACf;AACA,WAAOA,EAAP;AACH;;AAED,MAAI,OAAOA,EAAP,KAAc,QAAlB,EAA4B;AACxB,QAAIT,OAAO,GAAGU,QAAQ,CAACC,cAAT,CAAwBF,EAAxB,CAAd;;AAEA,QAAIT,OAAJ,EAAa;AACT,aAAOA,OAAP;AACH;;AAED,QAAIU,QAAQ,CAACE,aAAb,EAA4B;AACxBZ,aAAO,GAAGU,QAAQ,CAACE,aAAT,CAAuBH,EAAvB,CAAV;AACH;;AAED,QAAIT,OAAJ,EAAa;AACT,aAAOA,OAAP;AACH;AACJ;AACJ;AAEM,SAASa,UAAT,CAAoBJ,EAApB,EAAuD;AAE1D,MAAIT,OAAO,GAAGQ,cAAc,CAACC,EAAD,CAA5B;;AAEA,MAAIT,OAAJ,EAAa;AACT,WAAOA,OAAP;AACH;;AAED,QAAM,IAAInJ,KAAJ,4BAAoC2D,SAAS,CAACiG,EAAD,CAA7C,CAAN;AACH;AAGM,IAAIK,aAAa,GAAG,IAAI9K,yCAAJ,CAAiB,UAAAL,OAAO,EAAI;AAEnD,MAAIzB,MAAM,CAACwM,QAAP,CAAgBK,UAAhB,KAA+B,UAAnC,EAA+C;AAC3C,WAAOpL,OAAO,CAACzB,MAAM,CAACwM,QAAR,CAAd;AACH;;AAED,MAAIpF,QAAQ,GAAG0F,WAAW,CAAC,YAAM;AAC7B,QAAI9M,MAAM,CAACwM,QAAP,CAAgBK,UAAhB,KAA+B,UAAnC,EAA+C;AAC3CE,mBAAa,CAAC3F,QAAD,CAAb;AACA,aAAO3F,OAAO,CAACzB,MAAM,CAACwM,QAAR,CAAd;AACH;AACJ,GALyB,EAKvB,EALuB,CAA1B;AAMH,CAZ0B,CAApB;AAcA,SAASQ,eAAT,GAAqC;AACxC,SAAOhN,MAAM,CAACwM,QAAP,CAAgBK,UAAhB,KAA+B,UAAtC;AACH;AAEM,SAASI,YAAT,CAAsBV,EAAtB,EAA8E;AACjF,SAAO,IAAIzK,yCAAJ,CAAiB,UAACL,OAAD,EAAUiB,MAAV,EAAqB;AAEzC,QAAItC,IAAI,GAAGkG,SAAS,CAACiG,EAAD,CAApB;AACA,QAAIH,EAAE,GAAGE,cAAc,CAACC,EAAD,CAAvB;;AAEA,QAAIH,EAAJ,EAAQ;AACJ,aAAO3K,OAAO,CAAC2K,EAAD,CAAd;AACH;;AAED,QAAIY,eAAe,EAAnB,EAAuB;AACnB,aAAOtK,MAAM,CAAC,IAAIC,KAAJ,oCAA4CvC,IAA5C,qBAAD,CAAb;AACH;;AAED,QAAIgH,QAAQ,GAAG0F,WAAW,CAAC,YAAM;AAE7BV,QAAE,GAAGE,cAAc,CAACC,EAAD,CAAnB;;AAEA,UAAIH,EAAJ,EAAQ;AACJW,qBAAa,CAAC3F,QAAD,CAAb;AACA,eAAO3F,OAAO,CAAC2K,EAAD,CAAd;AACH;;AAED,UAAIY,eAAe,EAAnB,EAAuB;AACnBD,qBAAa,CAAC3F,QAAD,CAAb;AACA,eAAO1E,MAAM,CAAC,IAAIC,KAAJ,oCAA4CvC,IAA5C,qBAAD,CAAb;AACH;AACJ,KAbyB,EAavB,EAbuB,CAA1B;AAcH,GA3BM,CAAP;AA4BH;AAGD;;;;;;AAMO,SAAS8M,KAAT,CAAeC,GAAf,EAA6BC,OAA7B,EAAuF;AAE1F;AACA,MAAIC,MAAM,GAAGxK,MAAM,CAACyB,IAAP,CAAY8I,OAAZ,EAAqB7I,GAArB,CAAyB,UAACC,GAAD,EAAS;AAC3C,QAAI4I,OAAO,CAAC5I,GAAD,CAAX,EAAkB;AACd,aAAWA,GAAX,SAAoB8B,SAAS,CAAC8G,OAAO,CAAC5I,GAAD,CAAR,CAA7B;AACH;AACJ,GAJY,EAIV8I,MAJU,CAIHC,OAJG,EAIMzE,IAJN,CAIW,GAJX,CAAb;AAMA,MAAI0E,GAAJ;;AAEA,MAAI;AACAA,OAAG,GAAGxN,MAAM,CAACyN,IAAP,CAAYN,GAAZ,EAAiBC,OAAO,CAAChN,IAAzB,EAA+BiN,MAA/B,EAAuC,IAAvC,CAAN;AACH,GAFD,CAEE,OAAO9M,GAAP,EAAY;AACV,UAAM,IAAImN,+BAAJ,mCAAmDnN,GAAG,CAAC+B,KAAJ,IAAa/B,GAAG,CAAC2J,OAApE,EAAN;AACH;;AAED,MAAIyD,qCAAc,CAACH,GAAD,CAAlB,EAAyB;AACrB,QAAIjN,GAAG,GAAG,IAAImN,+BAAJ,uCAAV;AACA,UAAMnN,GAAN;AACH;;AAED,SAAOiN,GAAP;AACH;AAGM,SAASI,aAAT,CAAuBJ,GAAvB,EAAmDK,IAAnD,EAAkE;AACrE,MAAI;AACAL,OAAG,CAAChB,QAAJ,CAAaiB,IAAb;AACAD,OAAG,CAAChB,QAAJ,CAAasB,KAAb,CAAmBD,IAAnB;AACAL,OAAG,CAAChB,QAAJ,CAAauB,KAAb;AACH,GAJD,CAIE,OAAOxN,GAAP,EAAY;AACV,QAAI;AACAiN,SAAG,CAACQ,QAAJ,oDAA+D3H,IAAI,CAACC,SAAL,CAAeuH,IAAf,CAA/D;AACH,KAFD,CAEE,OAAOI,IAAP,EAAa,CACX;AACH;AACJ;AACJ;AAEM,SAASC,oBAAT,CAA8BV,GAA9B,EAA0DpB,EAA1D,EAA4E;AAE/E,MAAI+B,GAAG,GAAG/B,EAAE,CAACgC,OAAH,CAAW9I,WAAX,EAAV;;AAEA,MAAI6I,GAAG,KAAK,MAAZ,EAAoB;AAChB,UAAM,IAAIxL,KAAJ,uCAA+CwL,GAA/C,CAAN;AACH;;AAED,MAAIE,eAAe,GAAGb,GAAG,CAAChB,QAAJ,CAAa6B,eAAnC;;AAEA,SAAOA,eAAe,CAACC,QAAhB,IAA4BD,eAAe,CAACC,QAAhB,CAAyBrN,MAA5D,EAAoE;AAChEoN,mBAAe,CAACE,WAAhB,CAA4BF,eAAe,CAACC,QAAhB,CAAyB,CAAzB,CAA5B;AACH;;AAED,SAAOlC,EAAE,CAACkC,QAAH,CAAYrN,MAAnB,EAA2B;AACvBoN,mBAAe,CAAC1C,WAAhB,CAA4BS,EAAE,CAACkC,QAAH,CAAY,CAAZ,CAA5B;AACH;AACJ;AAEM,SAASE,QAAT,CAAkBpC,EAAlB,EAAoCqC,SAApC,EAAwDC,GAAxD,EAA0F;AAAA,MAAlCA,GAAkC;AAAlCA,OAAkC,GAAjB1O,MAAM,CAACwM,QAAU;AAAA;;AAC7F;AACA,MAAIJ,EAAE,CAACuC,UAAP,EAAmB;AACf;AACAvC,MAAE,CAACuC,UAAH,CAAcC,OAAd,GAAwBH,SAAxB;AACH,GAHD,MAGO;AACHrC,MAAE,CAACT,WAAH,CAAe+C,GAAG,CAACG,cAAJ,CAAmBJ,SAAnB,CAAf;AACH;AACJ;AAED;;;;;;AAcO,SAASK,aAAT,CAAuBX,GAAvB,EAA6Cf,OAA7C,EAAgFxB,SAAhF,EAAwH;AAAA,MAAjGuC,GAAiG;AAAjGA,OAAiG,GAAlF,KAAkF;AAAA;;AAAA,MAA3Ef,OAA2E;AAA3EA,WAA2E,GAA5C,EAA4C;AAAA;;AAE3He,KAAG,GAAGA,GAAG,CAAC7I,WAAJ,EAAN;AACA,MAAIwG,OAAO,GAAGU,QAAQ,CAACsC,aAAT,CAAuBX,GAAvB,CAAd;;AAEA,MAAIf,OAAO,CAACnB,KAAZ,EAAmB;AACfxG,UAAM,CAACqG,OAAO,CAACG,KAAT,EAAgBmB,OAAO,CAACnB,KAAxB,CAAN;AACH;;AAED,MAAImB,OAAO,CAAC2B,KAAZ,EAAmB;AACfjD,WAAO,CAACkD,SAAR,GAAoB5B,OAAO,CAAC2B,KAAR,CAAcjG,IAAd,CAAmB,GAAnB,CAApB;AACH;;AAED,MAAIsE,OAAO,CAAC6B,UAAZ,EAAwB;AAAA,sCACJpM,MAAM,CAACyB,IAAP,CAAY8I,OAAO,CAAC6B,UAApB,CADI,qCAC6B;AAA5C,UAAIzK,GAAG,qBAAP;AACDsH,aAAO,CAACoD,YAAR,CAAqB1K,GAArB,EAA0B4I,OAAO,CAAC6B,UAAR,CAAmBzK,GAAnB,CAA1B;AACH;AACJ;;AAED,MAAI4I,OAAO,CAACuB,UAAZ,EAAwB;AACpBH,YAAQ,CAAC1C,OAAD,EAAUsB,OAAO,CAACuB,UAAlB,CAAR;AACH;;AAED,MAAI/C,SAAJ,EAAe;AACXD,eAAW,CAACC,SAAD,EAAYE,OAAZ,CAAX;AACH;;AAED,MAAIsB,OAAO,CAACS,IAAZ,EAAkB;AACd,QAAIM,GAAG,KAAK,QAAZ,EAAsB;AAClB;AACA,UAAI,CAACvC,SAAD,IAAc,CAACE,OAAO,CAACqD,aAA3B,EAA0C;AACtC,cAAM,IAAIxM,KAAJ,8EAAN;AACH,OAJiB,CAMlB;;;AACAiL,mBAAa,CAAC9B,OAAO,CAACqD,aAAT,EAAwB/B,OAAO,CAACS,IAAhC,CAAb;AAEH,KATD,MASO;AACH/B,aAAO,CAACsD,SAAR,GAAoBhC,OAAO,CAACS,IAA5B;AACH;AACJ;;AAED,SAAO/B,OAAP;AACH;AAED,IAAIuD,sBAAoF,GAAG,IAAIrG,gDAAJ,EAA3F;AAEO,SAASsG,cAAT,CAAwBC,KAAxB,EAAqF;AAExF,MAAIF,sBAAsB,CAACG,GAAvB,CAA2BD,KAA3B,CAAJ,EAAuC;AACnC,QAAI5O,QAAO,GAAG0O,sBAAsB,CAACzI,GAAvB,CAA2B2I,KAA3B,CAAd;;AACA,QAAI5O,QAAJ,EAAa;AACT,aAAOA,QAAP;AACH;AACJ;;AAED,MAAIA,OAAO,GAAG,IAAImB,yCAAJ,CAAiB,UAACL,OAAD,EAAUiB,MAAV,EAAqB;AAChD6M,SAAK,CAACE,gBAAN,CAAuB,MAAvB,EAA+B,YAAM;AACjCC,4CAAe,CAACH,KAAD,CAAf;AACA9N,aAAO,CAAC8N,KAAD,CAAP;AACH,KAHD;AAKAA,SAAK,CAACE,gBAAN,CAAuB,OAAvB,EAAgC,UAAClP,GAAD,EAAiB;AAC7C,UAAIgP,KAAK,CAACJ,aAAV,EAAyB;AACrB1N,eAAO,CAAC8N,KAAD,CAAP;AACH,OAFD,MAEO;AACH7M,cAAM,CAACnC,GAAD,CAAN;AACH;AACJ,KAND;AAOH,GAba,CAAd;AAeA8O,wBAAsB,CAAChH,GAAvB,CAA2BkH,KAA3B,EAAkC5O,OAAlC;AAEA,SAAOA,OAAP;AACH;AAEM,SAASgP,gBAAT,CAA0BJ,KAA1B,EAAuF;AAE1F,MAAIA,KAAK,CAACJ,aAAV,EAAyB;AACrB,WAAOrN,yCAAY,CAACL,OAAb,CAAqB8N,KAAK,CAACJ,aAA3B,CAAP;AACH;;AAED,SAAOG,cAAc,CAACC,KAAD,CAAd,CAAsBjP,IAAtB,CAA2B,UAAAsP,WAAW,EAAI;AAE7C,QAAI,CAACA,WAAW,CAACT,aAAjB,EAAgC;AAC5B,YAAM,IAAIxM,KAAJ,mCAAN;AACH;;AAED,WAAOiN,WAAW,CAACT,aAAnB;AACH,GAPM,CAAP;AAQH;AAGD;;;;;;AAeO,SAASU,MAAT,CAAgBzC,OAAhB,EAAyDxB,SAAzD,EAAsG;AAAA,MAAtFwB,OAAsF;AAAtFA,WAAsF,GAAjD,EAAiD;AAAA;;AAEzG,MAAIhB,EAAE,GAAGO,UAAU,CAACf,SAAD,CAAnB;AAEA,MAAIqD,UAAU,GAAG7B,OAAO,CAAC6B,UAAR,IAAsB,EAAvC;AACA,MAAIhD,KAAK,GAAGmB,OAAO,CAACnB,KAAR,IAAiB,EAA7B;AAEA,MAAIsD,KAAK,GAAGT,aAAa,CAAC,QAAD,EAAW;AAChCG,cAAU,EAAE;AACRa,iBAAW,EAAQ,GADb;AAENC,uBAAiB,EAAE;AAFb,OAGHd,UAHG,CADsB;AAMhChD,SAAK,EAAE;AACH+D,qBAAe,EAAE;AADhB,OAEE/D,KAFF,CAN2B;AAUhC4B,QAAI,EAAGT,OAAO,CAACS,IAViB;AAWhCkB,SAAK,EAAE3B,OAAO,CAAC2B;AAXiB,GAAX,CAAzB,CAPyG,CAqBzG;;AACAO,gBAAc,CAACC,KAAD,CAAd;AAEAnD,IAAE,CAACT,WAAH,CAAe4D,KAAf;;AAEA,MAAInC,OAAO,CAACD,GAAR,IAAenN,MAAM,CAACiQ,SAAP,CAAiBC,SAAjB,CAA2B3G,KAA3B,CAAiC,YAAjC,CAAnB,EAAmE;AAC/DgG,SAAK,CAACL,YAAN,CAAmB,KAAnB,EAA0B9B,OAAO,CAACD,GAAR,IAAe,aAAzC;AACH,GA5BwG,CA8BzG;;;AACA,SAAOoC,KAAP;AACH;AAED;;;;;;AAMO,SAASE,gBAAT,CAA0B/J,GAA1B,EAA6CyK,KAA7C,EAA6DhP,OAA7D,EAAiH;AACpHuE,KAAG,CAAC+J,gBAAJ,CAAqBU,KAArB,EAA4BhP,OAA5B;AACA,SAAO;AACHC,UADG,oBACM;AACLsE,SAAG,CAAC0K,mBAAJ,CAAwBD,KAAxB,EAA+BhP,OAA/B;AACH;AAHE,GAAP;AAKH;AAED;;;;;;AAMO,SAASkP,iBAAT,CAA2BpL,GAA3B,EAAkD;AAErD,MAAI,CAACA,GAAL,EAAU;AACN,WAAOA,GAAP;AACH;;AAED,MAAIA,GAAG,CAACsE,KAAJ,CAAU,qEAAV,CAAJ,EAAsF;AAClF,UAAM,IAAI5G,KAAJ,0CAAkDsC,GAAlD,CAAN;AACH;;AAED,SAAOA,GAAP;AACH;AAEM,IAAIqL,UAAU,GAAGrF,OAAO,CAAC,UAACsF,WAAD,EAAoD;AAEhF,MAAIlD,MAAM,GAAG,EAAb;;AAEA,MAAI,CAACkD,WAAL,EAAkB;AACd,WAAOlD,MAAP;AACH;;AAED,MAAIkD,WAAW,CAAC3P,OAAZ,CAAoB,GAApB,MAA6B,CAAC,CAAlC,EAAqC;AACjC,UAAM,IAAI+B,KAAJ,yCAAiD4N,WAAjD,CAAN;AACH;;AAV+E,0CAY/DA,WAAW,CAACvJ,KAAZ,CAAkB,GAAlB,CAZ+D,2CAYvC;AAApC,QAAIwJ,IAAI,2BAAR;AACDA,QAAI,GAAGA,IAAI,CAACxJ,KAAL,CAAW,GAAX,CAAP;;AAEA,QAAIwJ,IAAI,CAAC,CAAD,CAAJ,IAAWA,IAAI,CAAC,CAAD,CAAnB,EAAwB;AACpBnD,YAAM,CAACoD,kBAAkB,CAACD,IAAI,CAAC,CAAD,CAAL,CAAnB,CAAN,GAAsCC,kBAAkB,CAACD,IAAI,CAAC,CAAD,CAAL,CAAxD;AACH;AACJ;;AAED,SAAOnD,MAAP;AACH,CArB8B,CAAxB;AAwBA,SAASqD,aAAT,CAAuBtQ,IAAvB,EAAgD;AACnD,SAAOkQ,UAAU,CAACtQ,MAAM,CAACgO,QAAP,CAAgB2C,MAAhB,CAAuBhK,KAAvB,CAA6B,CAA7B,CAAD,CAAV,CAA4CvG,IAA5C,CAAP;AACH;AAEM,SAASwQ,WAAT,CAAqBlL,GAArB,EAAkE;AAAA,MAA7CA,GAA6C;AAA7CA,OAA6C,GAAb,EAAa;AAAA;;AAErE,SAAO7C,MAAM,CAACyB,IAAP,CAAYoB,GAAZ,EAAiB4H,MAAjB,CAAwB,UAAA9I,GAAG,EAAI;AAClC,WAAO,OAAOkB,GAAG,CAAClB,GAAD,CAAV,KAAoB,QAA3B;AACH,GAFM,EAEJD,GAFI,CAEA,UAAAC,GAAG,EAAI;AACV,WAAWQ,SAAS,CAACR,GAAD,CAApB,SAA+BQ,SAAS,CAACU,GAAG,CAAClB,GAAD,CAAJ,CAAxC;AACH,GAJM,EAIJsE,IAJI,CAIC,GAJD,CAAP;AAKH;AAEM,SAAS+H,WAAT,CAAqBC,aAArB,EAA6CC,KAA7C,EAA4F;AAAA,MAA/CA,KAA+C;AAA/CA,SAA+C,GAAb,EAAa;AAAA;;AAE/F,MAAI,CAACA,KAAD,IAAU,CAAClO,MAAM,CAACyB,IAAP,CAAYyM,KAAZ,EAAmB9P,MAAlC,EAA0C;AACtC,WAAO6P,aAAP;AACH;;AAED,SAAOF,WAAW,CAAC,2CACZN,UAAU,CAACQ,aAAD,CADC,MAEXC,KAFW,EAAlB;AAIH;AAEM,SAASC,SAAT,CAAmB7D,GAAnB,EAAiCC,OAAjC,EAAgI;AAAA,MAA/FA,OAA+F;AAA/FA,WAA+F,GAAb,EAAa;AAAA;;AAEnI,MAAI6D,KAAK,GAAG7D,OAAO,CAAC6D,KAAR,IAAiB,EAA7B;AACA,MAAI5M,IAAI,GAAG+I,OAAO,CAAC/I,IAAR,IAAgB,EAA3B;AAEA,MAAI6M,WAAJ;AACA,MAAIJ,aAAJ;AACA,MAAIK,YAAJ;;AAPmI,mBASlGhE,GAAG,CAACnG,KAAJ,CAAU,GAAV,CATkG;;AASjIkK,aATiI;AASpHC,cAToH;;AAAA,2BAUlGD,WAAW,CAAClK,KAAZ,CAAkB,GAAlB,CAVkG;;AAUjIkK,aAViI;AAUpHJ,eAVoH;AAYnI,MAAIP,WAAW,GAAGM,WAAW,CAACC,aAAD,EAAgBG,KAAhB,CAA7B;AACA,MAAIG,UAAU,GAAIP,WAAW,CAACM,YAAD,EAAe9M,IAAf,CAA7B;;AAEA,MAAIkM,WAAJ,EAAiB;AACbW,eAAW,GAAOA,WAAP,SAAwBX,WAAnC;AACH;;AAED,MAAIa,UAAJ,EAAgB;AACZF,eAAW,GAAOA,WAAP,SAAwBE,UAAnC;AACH;;AAED,SAAOF,WAAP;AACH;AAGM,SAASG,oBAAT,CAA8BvF,OAA9B,EAAwDnI,OAAxD,EAAsG;AAAA,MAA9CA,OAA8C;AAA9CA,WAA8C,GAA3B,IAA2B;AAAA;;AACzG,SAAO,IAAI7B,yCAAJ,CAAiB,UAACL,OAAD,EAAUiB,MAAV,EAAqB;AACzC,QAAI0J,EAAE,GAAGO,UAAU,CAACb,OAAD,CAAnB;AAEA,QAAIzC,KAAK,GAAG+C,EAAE,CAACkF,qBAAH,EAAZ;AAEA,QAAIlK,QAAJ;AACA,QAAImK,KAAJ;AAEAnK,YAAQ,GAAG0F,WAAW,CAAC,YAAM;AACzB,UAAInD,GAAG,GAAGyC,EAAE,CAACkF,qBAAH,EAAV;;AAEA,UAAIjI,KAAK,CAACmI,GAAN,KAAc7H,GAAG,CAAC6H,GAAlB,IAAyBnI,KAAK,CAACoI,MAAN,KAAiB9H,GAAG,CAAC8H,MAA9C,IAAwDpI,KAAK,CAACqI,IAAN,KAAe/H,GAAG,CAAC+H,IAA3E,IAAmFrI,KAAK,CAACsI,KAAN,KAAgBhI,GAAG,CAACgI,KAAvG,IAAgHtI,KAAK,CAACuI,KAAN,KAAgBjI,GAAG,CAACiI,KAApI,IAA6IvI,KAAK,CAACwI,MAAN,KAAiBlI,GAAG,CAACkI,MAAtK,EAA8K;AAC1KhO,oBAAY,CAAC0N,KAAD,CAAZ;AACAxE,qBAAa,CAAC3F,QAAD,CAAb;AACA,eAAO3F,OAAO,EAAd;AACH;;AAED4H,WAAK,GAAGM,GAAR;AAEH,KAXqB,EAWnB,EAXmB,CAAtB;AAaA4H,SAAK,GAAGzQ,UAAU,CAAC,YAAM;AACrBiM,mBAAa,CAAC3F,QAAD,CAAb;AACA1E,YAAM,CAAC,IAAIC,KAAJ,4DAAoEgB,OAApE,QAAD,CAAN;AACH,KAHiB,EAGfA,OAHe,CAAlB;AAIH,GAzBM,CAAP;AA0BH;AAEM,SAASmO,oBAAT,CAA8B1F,EAA9B,EAAsF;AACzF,SAAO;AACHwF,SAAK,EAAGxF,EAAE,CAAC2F,WADR;AAEHF,UAAM,EAAEzF,EAAE,CAAC4F;AAFR,GAAP;AAIH;AAEM,SAASC,WAAT,CAAqB7F,EAArB,EAAuC8F,MAAvC,EAA8F;AACjG,SAAO,IAAIpQ,yCAAJ,CAAiB,UAAAL,OAAO,EAAI;AAAA,sCAEfoB,MAAM,CAACyB,IAAP,CAAY4N,MAAZ,CAFe,qCAEM;AAAhC,UAAI1N,GAAG,qBAAP;AACD;AACA4H,QAAE,CAACH,KAAH,CAASzH,GAAT,IAAgB0N,MAAM,CAAC1N,GAAD,CAAtB;AACH;;AAED1D,cAAU,CAACW,OAAD,EAAU,CAAV,CAAV;AACH,GARM,CAAP;AASH;AAEM,SAAS0Q,WAAT,CAAqB/F,EAArB,EAAuClK,KAAvC,EAAyF;AAAA,MAAlDA,KAAkD;AAAlDA,SAAkD,GAAjC,MAAiC;AAAA;;AAAA,kBAEnDkK,EAAE,CAACH,KAFgD;AAAA,MAEtFmG,QAFsF,aAEtFA,QAFsF;AAAA,MAE5EC,SAF4E,aAE5EA,SAF4E;AAAA,MAEjEC,SAFiE,aAEjEA,SAFiE;AAI5FlG,IAAE,CAACH,KAAH,CAASmG,QAAT,GAAoBhG,EAAE,CAACH,KAAH,CAASoG,SAAT,GAAqBjG,EAAE,CAACH,KAAH,CAASqG,SAAT,GAAqBpQ,KAA9D;AAEA,SAAO;AACHqQ,SADG,mBACK;AACJnG,QAAE,CAACH,KAAH,CAASmG,QAAT,GAAoBA,QAApB;AACAhG,QAAE,CAACH,KAAH,CAASoG,SAAT,GAAqBA,SAArB;AACAjG,QAAE,CAACH,KAAH,CAASqG,SAAT,GAAqBA,SAArB;AACH;AALE,GAAP;AAOH;;AAED,SAASE,cAAT,CAAwBC,GAAxB,EAAmEC,GAAnE,QAAoO;AAAA,wBAApHd,KAAoH;AAAA,MAApHA,KAAoH,2BAA5G,IAA4G;AAAA,yBAAtGC,MAAsG;AAAA,MAAtGA,MAAsG,4BAA7F,IAA6F;AAAA,4BAAvFc,SAAuF;AAAA,MAAvFA,SAAuF,+BAA3E,CAA2E;;AAEhO,MAAIf,KAAK,IAAI3L,IAAI,CAAC2M,GAAL,CAASH,GAAG,CAACb,KAAJ,GAAYc,GAAG,CAACd,KAAzB,IAAkCe,SAA/C,EAA0D;AACtD,WAAO,IAAP;AACH;;AAED,MAAId,MAAM,IAAI5L,IAAI,CAAC2M,GAAL,CAASH,GAAG,CAACZ,MAAJ,GAAaa,GAAG,CAACb,MAA1B,IAAoCc,SAAlD,EAA6D;AACzD,WAAO,IAAP;AACH;;AAED,SAAO,KAAP;AACH;;AAEM,SAASE,eAAT,CAAyBzG,EAAzB,SAAuQ;AAAA,0BAA1NwF,KAA0N;AAAA,MAA1NA,KAA0N,4BAAlN,IAAkN;AAAA,2BAA5MC,MAA4M;AAAA,MAA5MA,MAA4M,6BAAnM,IAAmM;AAAA,8BAA7Lc,SAA6L;AAAA,MAA7LA,SAA6L,gCAAjL,CAAiL;AAE1Q,MAAIG,iBAAiB,GAAGhB,oBAAoB,CAAC1F,EAAD,CAA5C;AAEA,SAAO;AACH2G,SADG,mBAC+E;AAC9E,UAAIC,aAAa,GAAGlB,oBAAoB,CAAC1F,EAAD,CAAxC;AAEA,aAAO;AACH6G,eAAO,EAAKT,cAAc,CAACM,iBAAD,EAAoBE,aAApB,EAAmC;AAAEpB,eAAK,EAALA,KAAF;AAASC,gBAAM,EAANA,MAAT;AAAiBc,mBAAS,EAATA;AAAjB,SAAnC,CADvB;AAEHO,kBAAU,EAAEF;AAFT,OAAP;AAIH,KARE;AAUHT,SAVG,mBAUK;AACJO,uBAAiB,GAAGhB,oBAAoB,CAAC1F,EAAD,CAAxC;AACH;AAZE,GAAP;AAcH;AAEM,SAAS+G,kBAAT,CAA4B/G,EAA5B,SAA8O;AAAA,0BAA9LwF,KAA8L;AAAA,MAA9LA,KAA8L,4BAAtL,IAAsL;AAAA,2BAAhLC,MAAgL;AAAA,MAAhLA,MAAgL,6BAAvK,IAAuK;AAAA,0BAAjK/M,KAAiK;AAAA,MAAjKA,KAAiK,4BAAzJ,EAAyJ;AAAA,8BAArJ6N,SAAqJ;AAAA,MAArJA,SAAqJ,gCAAzI,CAAyI;AAEjP,SAAO,IAAI7Q,yCAAJ,CAAiB,UAAAL,OAAO,EAAI;AAE/B,QAAI2R,OAAO,GAAGP,eAAe,CAACzG,EAAD,EAAK;AAAEwF,WAAK,EAALA,KAAF;AAASC,YAAM,EAANA,MAAT;AAAiBc,eAAS,EAATA;AAAjB,KAAL,CAA7B;AAEA,QAAIvL,QAAJ;AAEA,QAAIiM,QAAQ,GAAGjI,QAAQ,CAAC,UAAC8H,UAAD,EAAgB;AACpCnG,mBAAa,CAAC3F,QAAD,CAAb;AACA,aAAO3F,OAAO,CAACyR,UAAD,CAAd;AACH,KAHsB,EAGpBpO,KAAK,GAAG,CAHY,CAAvB;AAKAsC,YAAQ,GAAG0F,WAAW,CAAC,YAAM;AAAA,2BACKsG,OAAO,CAACL,KAAR,EADL;AAAA,UACnBE,OADmB,kBACnBA,OADmB;AAAA,UACVC,UADU,kBACVA,UADU;;AAEzB,UAAID,OAAJ,EAAa;AACTG,eAAO,CAACb,KAAR;AACA,eAAOc,QAAQ,CAACH,UAAD,CAAf;AACH;AACJ,KANqB,EAMnBpO,KANmB,CAAtB;;AAQA,aAASwO,cAAT,GAA0B;AAAA,4BACQF,OAAO,CAACL,KAAR,EADR;AAAA,UAChBE,OADgB,mBAChBA,OADgB;AAAA,UACPC,UADO,mBACPA,UADO;;AAEtB,UAAID,OAAJ,EAAa;AACTG,eAAO,CAACb,KAAR;AACAvS,cAAM,CAACoQ,mBAAP,CAA2B,QAA3B,EAAqCkD,cAArC;AACAD,gBAAQ,CAACH,UAAD,CAAR;AACH;AACJ;;AAEDlT,UAAM,CAACyP,gBAAP,CAAwB,QAAxB,EAAkC6D,cAAlC;AACH,GA7BM,CAAP;AA8BH;AAGM,SAASC,uBAAT,CAAiCnH,EAAjC,SAAsH;AAAA,MAAjEwF,KAAiE,SAAjEA,KAAiE;AAAA,MAA1DC,MAA0D,SAA1DA,MAA0D;AAEzH,MAAIqB,UAAU,GAAGpB,oBAAoB,CAAC1F,EAAD,CAArC;;AAEA,MAAIwF,KAAK,IAAIsB,UAAU,CAACtB,KAAX,KAAqB5R,MAAM,CAACwT,UAAzC,EAAqD;AACjD,WAAO,KAAP;AACH;;AAED,MAAI3B,MAAM,IAAIqB,UAAU,CAACrB,MAAX,KAAsB7R,MAAM,CAACyT,WAA3C,EAAwD;AACpD,WAAO,KAAP;AACH;;AAED,SAAO,IAAP;AACH;AAGM,SAASC,UAAT,CAAoB5H,OAApB,EAA2C6H,UAA3C,EAAuExS,OAAvE,EAA2H;AAE9HA,SAAO,GAAGsJ,IAAI,CAACtJ,OAAD,CAAd;;AAF8H,0BAIxGwS,UAJwG,gBAI5F;AAA7B,QAAIrJ,SAAS,GAAIqJ,UAAJ,KAAb;AACD7H,WAAO,CAAC2D,gBAAR,CAAyBnF,SAAzB,EAAoCnJ,OAApC;AACH;;AAED,SAAO;AACHC,UAAM,EAAEqJ,IAAI,CAAC,YAAM;AAAA,gCACOkJ,UADP,iBACmB;AAA7B,YAAIrJ,UAAS,GAAIqJ,UAAJ,MAAb;AACD7H,eAAO,CAACsE,mBAAR,CAA4B9F,UAA5B,EAAuCnJ,OAAvC;AACH;AACJ,KAJW;AADT,GAAP;AAOH;AAED,IAAMyS,eAAe,GAAG,CAAE,QAAF,EAAY,KAAZ,EAAmB,IAAnB,EAAyB,GAAzB,CAAxB;AAEO,SAASC,YAAT,CAAsB/H,OAAtB,EAA6C1L,IAA7C,EAA4D8B,KAA5D,EAA4E;AAE/E;AACA4J,SAAO,CAACG,KAAR,CAAc7L,IAAd,IAAsB8B,KAAtB;AAEA,MAAI4R,eAAe,GAAGpN,qBAAqB,CAACtG,IAAD,CAA3C;;AAL+E,4BAO5DwT,eAP4D,iBAO3C;AAA/B,QAAIjL,MAAM,GAAIiL,eAAJ,MAAV;AACD;AACA9H,WAAO,CAACG,KAAR,MAAkBtD,MAAlB,GAA6BmL,eAA7B,IAAmD5R,KAAnD;AACH;AACJ;AAGD,IAAI6R,OAAO,GAAG/T,MAAM,CAAC+T,OAArB;AAEA,IAAMC,cAAc,GAAGD,OAAO,CAACC,cAAR,IAA0BD,OAAO,CAACE,qBAAlC,IAA4DF,OAAO,CAACG,kBAApE,IACIH,OAAO,CAACI,gBADZ,IACgCJ,OAAO,CAACK,iBAD/D;;AAGA,SAASC,gBAAT,CAA0BvI,OAA1B,EAAiD1L,IAAjD,EAA0E;AAEtE,MAAIkU,WAAW,GAAGxI,OAAO,CAACI,aAAR,CAAsBqI,WAAxC;;AAEA,MAAI;AACA,SAAK,IAAIpR,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGmR,WAAW,CAACrT,MAAhC,EAAwCkC,CAAC,EAAzC,EAA6C;AAEzC;AACA,UAAIqR,QAAQ,GAAGF,WAAW,CAACnR,CAAD,CAAX,CAAeqR,QAA9B;;AAEA,UAAI,CAACA,QAAL,EAAe;AACX;AACH;;AAED,WAAK,IAAIxT,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwT,QAAQ,CAACvT,MAA7B,EAAqCD,CAAC,EAAtC,EAA0C;AAEtC,YAAIyT,OAAO,GAAGD,QAAQ,CAACxT,CAAD,CAAtB;;AAEA,YAAI,CAACyT,OAAL,EAAc;AACV;AACH;;AAED,YAAIA,OAAO,CAACvM,IAAR,KAAiB8L,cAAjB,IAAmCS,OAAO,CAACrU,IAAR,KAAiBA,IAAxD,EAA8D;AAC1D,iBAAO,IAAP;AACH;AACJ;AACJ;AACJ,GAvBD,CAuBE,OAAOG,GAAP,EAAY;AAEV,WAAO,KAAP;AACH;;AAGD,SAAO,KAAP;AACH;;AAGD,IAAMmU,sBAAsB,GAAG,CAAE,gBAAF,EAAoB,sBAApB,EAA4C,iBAA5C,EAA+D,kBAA/D,CAA/B;AACA,IAAMC,oBAAoB,GAAK,CAAE,cAAF,EAAkB,oBAAlB,EAAwC,eAAxC,EAAyD,gBAAzD,CAA/B;AAEO,SAASC,OAAT,CAAiB9I,OAAjB,EAA2C1L,IAA3C,EAA0DyU,KAA1D,EAAsFlR,OAAtF,EAAoI;AAAA,MAA9CA,OAA8C;AAA9CA,WAA8C,GAA3B,IAA2B;AAAA;;AACvI,SAAO,IAAI7B,yCAAJ,CAAiB,UAACL,OAAD,EAAUiB,MAAV,EAAqB;AAEzC,QAAI0J,EAAE,GAAGO,UAAU,CAACb,OAAD,CAAnB;;AAEA,QAAI,CAACM,EAAD,IAAO,CAACiI,gBAAgB,CAACjI,EAAD,EAAKhM,IAAL,CAA5B,EAAwC;AACpC,aAAOqB,OAAO,EAAd;AACH;;AAED,QAAIqT,UAAU,GAAG,KAAjB;AAEA,QAAIC,YAAJ;AACA,QAAIC,UAAJ;AACA,QAAIC,UAAJ;AACA,QAAIC,QAAJ;;AAEA,aAASC,OAAT,GAAmB;AACftB,kBAAY,CAACzH,EAAD,EAAK,eAAL,EAAsB,EAAtB,CAAZ;AACAvI,kBAAY,CAACkR,YAAD,CAAZ;AACAlR,kBAAY,CAACmR,UAAD,CAAZ;AACAC,gBAAU,CAAC7T,MAAX;AACA8T,cAAQ,CAAC9T,MAAT;AACH;;AAED6T,cAAU,GAAGvB,UAAU,CAACtH,EAAD,EAAKsI,sBAAL,EAA6B,UAAAvE,KAAK,EAAI;AAEzD;AACA,UAAIA,KAAK,CAAC5H,MAAN,KAAiB6D,EAAjB,IAAuB+D,KAAK,CAACiF,aAAN,KAAwBhV,IAAnD,EAAyD;AACrD;AACH;;AAEDyD,kBAAY,CAACkR,YAAD,CAAZ;AAEA5E,WAAK,CAACkF,eAAN;AAEAJ,gBAAU,CAAC7T,MAAX;AACA0T,gBAAU,GAAG,IAAb;AAEAE,gBAAU,GAAGlU,UAAU,CAAC,YAAM;AAC1BqU,eAAO;AACP1T,eAAO;AACV,OAHsB,EAGpBkC,OAHoB,CAAvB;AAIH,KAlBsB,CAAvB;AAoBAuR,YAAQ,GAAGxB,UAAU,CAACtH,EAAD,EAAKuI,oBAAL,EAA2B,UAAAxE,KAAK,EAAI;AAErD;AACA,UAAIA,KAAK,CAAC5H,MAAN,KAAiB6D,EAAjB,IAAuB+D,KAAK,CAACiF,aAAN,KAAwBhV,IAAnD,EAAyD;AACrD;AACH;;AAED+U,aAAO,GAP8C,CASrD;;AACA,UAAI,OAAOhF,KAAK,CAACiF,aAAb,KAA+B,QAA/B,IAA2CjF,KAAK,CAACiF,aAAN,KAAwBhV,IAAvE,EAA6E;AACzE,eAAOsC,MAAM,oCAAmCtC,IAAnC,gBAAoD+P,KAAK,CAACiF,aAA1D,CAAb;AACH;;AAED,aAAO3T,OAAO,EAAd;AACH,KAfoB,CAArB;AAiBAoS,gBAAY,CAACzH,EAAD,EAAK,eAAL,EAAsBhM,IAAtB,CAAZ;AAEA2U,gBAAY,GAAGjU,UAAU,CAAC,YAAM;AAC5B,UAAI,CAACgU,UAAL,EAAiB;AACbK,eAAO;AACP,eAAO1T,OAAO,EAAd;AACH;AACJ,KALwB,EAKtB,GALsB,CAAzB;;AAOA,QAAIoT,KAAJ,EAAW;AACPA,WAAK,CAACM,OAAD,CAAL;AACH;AACJ,GAxEM,CAAP;AAyEH;AAED,IAAMG,KAAK,GAAG;AAEVC,SAAO,EAAE;AACLC,QAAI,EAAG,MADF;AAELC,SAAK,EAAE;AAFF,GAFC;AAOVC,YAAU,EAAE;AACRC,WAAO,EAAE,SADD;AAERC,UAAM,EAAG;AAFD,GAPF;AAYVC,WAAS,EAAE;AAZD,CAAd;AAeO,SAASC,kBAAT,CAA4BhK,OAA5B,EAAmD;AACtDA,SAAO,CAACG,KAAR,CAAc8J,WAAd,CAA0B,YAA1B,EAAwC,EAAxC;AACH;AAEM,SAASC,oBAAT,CAA8BlK,OAA9B,EAAqD;AACxDA,SAAO,CAACG,KAAR,CAAc8J,WAAd,CAA0B,YAA1B,EAAwCT,KAAK,CAACI,UAAN,CAAiBE,MAAzD,EAAiEN,KAAK,CAACO,SAAvE;AACH;AAGM,SAASI,WAAT,CAAqBnK,OAArB,EAA4C;AAC/CA,SAAO,CAACG,KAAR,CAAc8J,WAAd,CAA0B,SAA1B,EAAqC,EAArC;AACH;AAEM,SAASG,WAAT,CAAqBpK,OAArB,EAA4C;AAC/CA,SAAO,CAACG,KAAR,CAAc8J,WAAd,CAA0B,SAA1B,EAAqCT,KAAK,CAACC,OAAN,CAAcC,IAAnD,EAAyDF,KAAK,CAACO,SAA/D;AACH;AAEM,SAASM,cAAT,CAAwBrK,OAAxB,EAA+C;AAClD,MAAIA,OAAO,CAACsK,UAAZ,EAAwB;AACpBtK,WAAO,CAACsK,UAAR,CAAmB7H,WAAnB,CAA+BzC,OAA/B;AACH;AACJ;AAEM,SAASuK,cAAT,CAAwBvK,OAAxB,EAA+C1L,IAA/C,EAA8DyU,KAA9D,EAA+G;AAClH,MAAIyB,SAAS,GAAG1B,OAAO,CAAC9I,OAAD,EAAU1L,IAAV,EAAgByU,KAAhB,CAAvB;AACAoB,aAAW,CAACnK,OAAD,CAAX;AACA,SAAOwK,SAAP;AACH;AAEM,SAASC,cAAT,CAAwBzK,OAAxB,EAA+C1L,IAA/C,EAA8DyU,KAA9D,EAA+G;AAClH,SAAOD,OAAO,CAAC9I,OAAD,EAAU1L,IAAV,EAAgByU,KAAhB,CAAP,CAA8BvU,IAA9B,CAAmC,YAAM;AAC5C4V,eAAW,CAACpK,OAAD,CAAX;AACH,GAFM,CAAP;AAGH;AAEM,SAAS0K,QAAT,CAAkB1K,OAAlB,EAAyC1L,IAAzC,EAAwD;AAC3D,MAAI0L,OAAO,CAAC2K,SAAZ,EAAuB;AACnB3K,WAAO,CAAC2K,SAAR,CAAkBC,GAAlB,CAAsBtW,IAAtB;AACH,GAFD,MAEO,IAAI0L,OAAO,CAACkD,SAAR,CAAkBhI,KAAlB,CAAwB,KAAxB,EAA+BpG,OAA/B,CAAuCR,IAAvC,MAAiD,CAAC,CAAtD,EAAyD;AAC5D0L,WAAO,CAACkD,SAAR,UAA0B5O,IAA1B;AACH;AACJ;AAEM,SAASuW,WAAT,CAAqB7K,OAArB,EAA4C1L,IAA5C,EAA2D;AAC9D,MAAI0L,OAAO,CAAC2K,SAAZ,EAAuB;AACnB3K,WAAO,CAAC2K,SAAR,CAAkBG,MAAlB,CAAyBxW,IAAzB;AACH,GAFD,MAEO,IAAI0L,OAAO,CAACkD,SAAR,CAAkBhI,KAAlB,CAAwB,KAAxB,EAA+BpG,OAA/B,CAAuCR,IAAvC,MAAiD,CAAC,CAAtD,EAAyD;AAC5D0L,WAAO,CAACkD,SAAR,GAAoBlD,OAAO,CAACkD,SAAR,CAAkB9J,OAAlB,CAA0B9E,IAA1B,EAAgC,EAAhC,CAApB;AACH;AACJ;AAEM,SAASyW,mBAAT,GAAwC;AAC3C;AACAC,SAAO,CAACC,IAAR,sFAF2C,CAI3C;;AACA,MAAIvK,QAAQ,CAACwK,aAAb,EAA4B;AACxB;AACA,WAAOxK,QAAQ,CAACwK,aAAT,CAAuBC,GAAvB,CAA2BjQ,KAA3B,CAAiC,GAAjC,EAAsCL,KAAtC,CAA4C,CAA5C,EAA+C,CAAC,CAAhD,EAAmDmC,IAAnD,CAAwD,GAAxD,CAAP;AACH;;AAED,SAAO,GAAP;AACH;AAEM,SAASoO,cAAT,CAAwBpL,OAAxB,EAA2D;AAE9D,MAAI,OAAOA,OAAP,KAAmB,QAAvB,EAAiC;AAC7B,WAAOA,OAAP;AACH;;AAED,MAAI,CAACA,OAAD,IAAY,CAACA,OAAO,CAACsC,OAAzB,EAAkC;AAC9B,WAAO,WAAP;AACH;;AAED,MAAIhO,IAAI,GAAG0L,OAAO,CAACsC,OAAR,CAAgB9I,WAAhB,EAAX;;AAEA,MAAIwG,OAAO,CAACS,EAAZ,EAAgB;AACZnM,QAAI,UAAS0L,OAAO,CAACS,EAArB;AACH,GAFD,MAEO,IAAIT,OAAO,CAACkD,SAAZ,EAAuB;AAC1B5O,QAAI,UAAS0L,OAAO,CAACkD,SAAR,CAAkBhI,KAAlB,CAAwB,GAAxB,EAA6B8B,IAA7B,CAAkC,GAAlC,CAAb;AACH;;AAED,SAAO1I,IAAP;AACH;AAEM,SAAS+W,eAAT,CAAyB/K,EAAzB,EAAqD;AACxD,MAAI,CAACA,EAAD,IAAO,CAACA,EAAE,CAACgK,UAAf,EAA2B;AACvB,WAAO,IAAP;AACH;;AACD,SAAO,KAAP;AACH;AAEM,SAASgB,oBAAT,CAA8BtL,OAA9B,EAAqD3K,OAArD,EAA6F;AAChGA,SAAO,GAAGsJ,IAAI,CAACtJ,OAAD,CAAd;AAEA,MAAIiG,QAAJ;;AAEA,MAAI+P,eAAe,CAACrL,OAAD,CAAnB,EAA8B;AAC1B3K,WAAO;AACV,GAFD,MAEO;AACHiG,YAAQ,GAAGH,YAAY,CAAC,YAAM;AAC1B,UAAIkQ,eAAe,CAACrL,OAAD,CAAnB,EAA8B;AAC1B1E,gBAAQ,CAAChG,MAAT;AACAD,eAAO;AACV;AACJ,KALsB,EAKpB,EALoB,CAAvB;AAMH;;AAED,SAAO;AACHC,UADG,oBACM;AACL,UAAIgG,QAAJ,EAAc;AACVA,gBAAQ,CAAChG,MAAT;AACH;AACJ;AALE,GAAP;AAOH;AAEM,SAASiW,WAAT,CAAqBC,WAArB,EAA2CnK,GAA3C,EAAgF;AACnF,SAAO,IAAIrL,yCAAJ,CAAiB,UAACL,OAAD,EAAUiB,MAAV,EAAqB;AAEzC,QAAI6U,GAAG,GAAG,IAAIvX,MAAM,CAACwX,cAAX,EAAV;AAEAD,OAAG,CAAC9J,IAAJ,CAAS,KAAT,EAAgBN,GAAhB;AACAoK,OAAG,CAACE,gBAAJ,CAAqB,QAArB,EAA+BH,WAA/B;AACAC,OAAG,CAACG,IAAJ,CAAS,IAAT;;AAEAH,OAAG,CAACI,MAAJ,GAAa,YAAM;AACflW,aAAO,CAAC8V,GAAG,CAACK,YAAL,CAAP;AACH,KAFD;;AAIAL,OAAG,CAACM,OAAJ,GAAc,YAAM;AAChB,aAAOnV,MAAM,CAAC,IAAIC,KAAJ,mBAAD,CAAb;AACH,KAFD;AAGH,GAfM,CAAP;AAgBH;AAEM,SAASmV,OAAT,CAAiB3K,GAAjB,EAAsD;AACzD,SAAOkK,WAAW,CAAC,WAAD,EAAclK,GAAd,CAAlB;AACH;AAEM,SAAS4K,MAAT,CAAgB5K,GAAhB,EAAqD;AACxD,SAAOkK,WAAW,CAAC,UAAD,EAAalK,GAAb,CAAlB;AACH;AAEM,SAAS6K,SAAT,CAAmB7K,GAAnB,EAAwD;AAC3D,SAAOkK,WAAW,CAAC,KAAD,EAAQlK,GAAR,CAAlB;AACH;AAEM,SAAS8K,YAAT,CAAsB9K,GAAtB,EAA2D;AAC9D,SAAO2K,OAAO,CAAC3K,GAAD,CAAd;AACH;AAED,IAAM+K,UAAU,GAAG;AACfC,SAAO,EAAE;AADM,CAAnB;AAIO,SAASC,UAAT,CAAoBhM,EAApB,EAAsCsC,GAAtC,EAAwE;AAAA,MAAlCA,GAAkC;AAAlCA,OAAkC,GAAjB1O,MAAM,CAACwM,QAAU;AAAA;;AAAA,0CACxDL,gBAAgB,CAACC,EAAD,EAAK,QAAL,CADwC,4CACxB;AAA9C,QAAIiM,MAAM,2BAAV;AACD,QAAIC,SAAS,GAAG5J,GAAG,CAACI,aAAJ,CAAkB,QAAlB,CAAhB;AACAwJ,aAAS,CAAC7O,IAAV,GAAiB4O,MAAM,CAACE,WAAxB;AACAF,UAAM,CAACjC,UAAP,CAAkBoC,YAAlB,CAA+BF,SAA/B,EAA0CD,MAA1C;AACH;AACJ;AAEM,SAASI,MAAT,CAAgBrY,IAAhB,EAA+B2Q,KAA/B,EAAgE2H,OAAhE,EAAwG;AAE3GtY,MAAI,GAAGA,IAAI,CAACkF,WAAL,EAAP;AAEA,MAAIoJ,GAAG,GAAI,QAAQ,KAAKI,aAAd,GACJ,IADI,GAEJ9O,MAAM,CAACwM,QAFb;AAIA,MAAIJ,EAAE,GAAGsC,GAAG,CAACI,aAAJ,CAAkB1O,IAAlB,CAAT;;AAEA,OAAK,IAAIqG,IAAT,IAAiBsK,KAAjB,EAAwB;AACpB,QAAItK,IAAI,IAAIyR,UAAZ,EAAwB;AACpB9L,QAAE,CAACqD,gBAAH,CAAoByI,UAAU,CAACzR,IAAD,CAA9B,EAAsCsK,KAAK,CAACtK,IAAD,CAA3C;AACH,KAFD,MAEO,IAAIA,IAAI,KAAK,WAAb,EAA0B;AAC7B2F,QAAE,CAACgD,SAAH,GAAe2B,KAAK,CAACtK,IAAD,CAApB;AACA2R,gBAAU,CAAChM,EAAD,EAAKsC,GAAL,CAAV;AACH,KAHM,MAGA;AACHtC,QAAE,CAAC8C,YAAH,CAAgBzI,IAAhB,EAAsBsK,KAAK,CAACtK,IAAD,CAA3B;AACH;AACJ;;AAED,MAAIrG,IAAI,KAAK,OAAb,EAAsB;AAElB,QAAI,OAAOsY,OAAP,KAAmB,QAAvB,EAAiC;AAC7B,YAAM,IAAI3U,SAAJ,eAA2B3D,IAA3B,uCAAmE,OAAOsY,OAA1E,CAAN;AACH;;AAED,QAAI1N,SAAS,CAAC/J,MAAV,GAAmB,CAAvB,EAA0B;AACtB,YAAM,IAAI0B,KAAJ,qCAA6CvC,IAA7C,UAAN;AACH;;AAEDoO,YAAQ,CAACpC,EAAD,EAAKsM,OAAL,EAAchK,GAAd,CAAR;AAEH,GAZD,MAYO,IAAItO,IAAI,KAAK,QAAb,EAAuB;AAE1B,QAAI4K,SAAS,CAAC/J,MAAV,GAAmB,CAAvB,EAA0B;AACtB,YAAM,IAAI0B,KAAJ,8CAAN;AACH;;AAEDyJ,MAAE,CAACqD,gBAAH,CAAoB,MAApB,EAA4B,YAAM;AAC9B,UAAIjC,GAAG,GAAGpB,EAAE,CAAC+C,aAAb;;AAEA,UAAI,CAAC3B,GAAL,EAAU;AACN,cAAM,IAAI7K,KAAJ,wCAAN;AACH;;AAED,UAAI,OAAO+V,OAAP,KAAmB,QAAvB,EAAiC;AAC7B9K,qBAAa,CAACJ,GAAD,EAAMkL,OAAN,CAAb;AACH,OAFD,MAEO;AACHxK,4BAAoB,CAACV,GAAD,EAAMkL,OAAN,CAApB;AACH;AACJ,KAZD;AAcH,GApBM,MAoBA,IAAItY,IAAI,KAAK,QAAb,EAAuB;AAE1B,QAAI,OAAOsY,OAAP,KAAmB,QAAvB,EAAiC;AAC7B,YAAM,IAAI3U,SAAJ,eAA2B3D,IAA3B,uCAAmE,OAAOsY,OAA1E,CAAN;AACH;;AAED,QAAI1N,SAAS,CAAC/J,MAAV,GAAmB,CAAvB,EAA0B;AACtB,YAAM,IAAI0B,KAAJ,qCAA6CvC,IAA7C,UAAN;AACH;;AAEDgM,MAAE,CAAC3C,IAAH,GAAUiP,OAAV;AAEH,GAZM,MAYA;AACH,SAAK,IAAIvV,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG6H,SAAS,CAAC/J,MAA9B,EAAsCkC,CAAC,EAAvC,EAA2C;AACvC,UAAI,OAAO6H,SAAS,CAAC7H,CAAD,CAAhB,KAAwB,QAA5B,EAAsC;AAClC,YAAIwV,QAAQ,GAAGjK,GAAG,CAACG,cAAJ,CAAmB7D,SAAS,CAAC7H,CAAD,CAA5B,CAAf;AACAwI,mBAAW,CAACS,EAAD,EAAKuM,QAAL,CAAX;AACH,OAHD,MAGO;AACHhN,mBAAW,CAACS,EAAD,EAAKpB,SAAS,CAAC7H,CAAD,CAAd,CAAX;AACH;AACJ;AACJ;;AAED,SAAOiJ,EAAP;AACH,C;;ACjgCD;AAGA;;;;;;AAMO,SAASwM,SAAT,CAAsBlU,MAAtB,EAA4G;AAE/G,SAAO,SAASmU,gBAAT,GAA8C;AAEjD,QAAInN,IAAI,GAAG,IAAX;AACA,QAAI9G,IAAI,GAAG2C,KAAK,CAACzE,SAAN,CAAgB6D,KAAhB,CAAsBtG,IAAtB,CAA2B2K,SAA3B,CAAX;;AAEA,QAAIpG,IAAI,CAAC3D,MAAL,IAAeyD,MAAM,CAACzD,MAA1B,EAAkC;AAC9B,aAAOa,yCAAY,CAACL,OAAb,CAAqBiD,MAAM,CAACG,KAAP,CAAa6G,IAAb,EAAmB9G,IAAnB,CAArB,CAAP;AACH;;AAED,WAAO,IAAI9C,yCAAJ,CAAiB,UAACL,OAAD,EAAUiB,MAAV,EAAqB;AACzCkC,UAAI,CAAC/D,IAAL,CAAU,UAACN,GAAD,EAAMgC,MAAN,EAAiB;AAEvB,YAAIhC,GAAG,IAAI,EAAEA,GAAG,YAAYoC,KAAjB,CAAX,EAAoC;AAChC,gBAAM,IAAIA,KAAJ,6CAAqDpC,GAArD,sGAAN;AACH;;AAED,eAAOA,GAAG,GAAGmC,MAAM,CAACnC,GAAD,CAAT,GAAiBkB,OAAO,CAACc,MAAD,CAAlC;AACH,OAPD;AAQAmC,YAAM,CAACG,KAAP,CAAa6G,IAAb,EAAmB9G,IAAnB;AACH,KAVM,CAAP;AAWH,GApBD;AAqBH;AAEM,SAASkU,SAAT,CAAsBpU,MAAtB,EAA8H;AACjI,SAAO,SAASqU,gBAAT,GAA8C;AAAA;AAAA;;AACjD,WAAOjX,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAC1B,aAAOgB,MAAM,CAACG,KAAP,CAAa,KAAb,EAAmBmG,UAAnB,CAAP;AACH,KAFM,CAAP;AAGH,GAJD;AAKH;AAEM,SAASlG,aAAT,CAAelB,IAAf,EAAuD;AAAA,MAAxCA,IAAwC;AAAxCA,QAAwC,GAAxB,CAAwB;AAAA;;AAC1D,SAAO,IAAI9B,yCAAJ,CAAiB,UAAAL,OAAO,EAAI;AAC/BX,cAAU,CAACW,OAAD,EAAUmC,IAAV,CAAV;AACH,GAFM,CAAP;AAGH;AAEM,SAASoV,KAAT,CAAetU,MAAf,EAAuD;AAC1D,SAAO5C,yCAAY,CAAC4B,GAAb,CAAiBgB,MAAjB,EAAyBpE,IAAzB,CAA8B;AAAA,WAAM0Y,KAAK,CAACtU,MAAD,CAAX;AAAA,GAA9B,CAAP;AACH,C;;AClDM,SAASuU,MAAT,CAAgBhU,GAAhB,EAAwC;AAC3C,SAAO,OAAOA,GAAP,KAAe,QAAf,IAA4B,WAAD,CAAciU,IAAd,CAAmBjU,GAAnB,CAAlC;AACH;AAEM,SAASkU,IAAT,CAAclU,GAAd,EAAsC;AACzC,SAAO,OAAOA,GAAP,KAAe,QAAf,IAA4B,YAAD,CAAeiU,IAAf,CAAoBjU,GAApB,CAAlC;AACH;AAEM,SAASmU,KAAT,CAAe7S,GAAf,EAA+C;AAElD,MAAI,OAAOA,GAAP,KAAe,QAAnB,EAA6B;AACzB,WAAOA,GAAP;AACH;;AAED,MAAIgD,KAAK,GAAGhD,GAAG,CAACgD,KAAJ,CAAU,kBAAV,CAAZ;;AAEA,MAAI,CAACA,KAAL,EAAY;AACR,UAAM,IAAI5G,KAAJ,qCAA6C4D,GAA7C,CAAN;AACH;;AAED,SAAO8S,QAAQ,CAAC9P,KAAK,CAAC,CAAD,CAAN,EAAW,EAAX,CAAf;AACH;AAEM,SAAS+P,IAAT,CAAc/S,GAAd,EAA8C;AACjD,SAAW6S,KAAK,CAAC7S,GAAD,CAAhB;AACH;AAEM,SAASgT,KAAT,CAAehT,GAAf,EAA+C;AAElD,MAAI,OAAOA,GAAP,KAAe,QAAnB,EAA6B;AACzB,WAAO+S,IAAI,CAAC/S,GAAD,CAAX;AACH;;AAED,SAAO0S,MAAM,CAAC1S,GAAD,CAAN,GAAcA,GAAd,GAAoB+S,IAAI,CAAC/S,GAAD,CAA/B;AACH;AAEM,SAASiT,MAAT,CAAgBC,GAAhB,EAA8BC,IAA9B,EAAsD;AACzD,SAAOL,QAAQ,CAACI,GAAG,GAAGL,KAAK,CAACM,IAAD,CAAX,GAAqB,GAAtB,EAA2B,EAA3B,CAAf;AACH;AAEM,SAASC,kBAAT,CAA4BC,GAA5B,EAAmDC,GAAnD,EAA0E;AAC7E,MAAI,OAAOD,GAAP,KAAe,QAAnB,EAA6B;AACzB,WAAOA,GAAP;AACH,GAFD,MAEO,IAAIX,MAAM,CAACW,GAAD,CAAV,EAAiB;AACpB,WAAOJ,MAAM,CAACK,GAAD,EAAMD,GAAN,CAAb;AACH,GAFM,MAEA,IAAIT,IAAI,CAACS,GAAD,CAAR,EAAe;AAClB,WAAOR,KAAK,CAACQ,GAAD,CAAZ;AACH,GAFM,MAEA;AACH,UAAM,IAAIjX,KAAJ,mCAA2CiX,GAA3C,CAAN;AACH;AACJ,C;;AClDD;AAEO,SAASE,QAAT,CAA6BvR,MAA7B,EAA8CnI,IAA9C,EAA6DoI,UAA7D,EAAkF;AACrF,MAAI9D,MAAM,GAAG8D,UAAU,CAACtG,KAAxB;;AAEAsG,YAAU,CAACtG,KAAX,GAAmB,SAAS6X,gBAAT,GAAgC;AAE/C,SAAKC,YAAL,GAAoB,KAAKA,YAAL,IAAqB,EAAzC;;AAEA,QAAI,CAAC,KAAKA,YAAL,CAAkBpU,cAAlB,CAAiCxF,IAAjC,CAAL,EAA6C;AACzC,WAAK4Z,YAAL,CAAkB5Z,IAAlB,IAA0BsE,MAAM,CAACG,KAAP,CAAa,IAAb,EAAmBmG,SAAnB,CAA1B;AACH;;AAED,WAAO,KAAKgP,YAAL,CAAkB5Z,IAAlB,CAAP;AACH,GATD;;AAWAoI,YAAU,CAACtG,KAAX,CAAiB+X,WAAjB,GAAmC7Z,IAAnC;AACH;AAEM,SAASO,kBAAT,CAA4B4H,MAA5B,EAA6CnI,IAA7C,EAA4DoI,UAA5D,EAAiF;AACpF,MAAI9D,MAAM,GAAG8D,UAAU,CAACtG,KAAxB;;AAEAsG,YAAU,CAACtG,KAAX,GAAmB,SAASgY,mBAAT,GAAiD;AAChE,WAAOpY,yCAAY,CAAC4B,GAAb,CAAiBgB,MAAjB,EAAyB,IAAzB,EAA+BsG,SAA/B,CAAP;AACH,GAFD;;AAIAxC,YAAU,CAACtG,KAAX,CAAiB+X,WAAjB,GAAmC7Z,IAAnC;AACH,C;;;;;;;;AC3BD;AACA;AAEO,SAAS+Z,WAAT,CAAqBC,QAArB,EAAwC;AAC3C,MAAIC,2BAAS,CAACzZ,OAAV,CAAkBwZ,QAAlB,MAAgC,CAAC,CAArC,EAAwC;AACpC,UAAM,IAAIzX,KAAJ,wBAAgCyX,QAAhC,CAAN;AACH;;AACDE,0BAAM,CAACF,QAAP,GAAkBA,QAAlB;AACAG,0BAAM,CAAC5sB,SAAP,GAAmBysB,QAAnB;AACApa,QAAM,CAACrS,SAAP,GAAmBysB,QAAnB;AACH;AAEM,SAASI,IAAT,CAAcpa,IAAd,EAA6B+P,KAA7B,EAA6CsK,OAA7C,EAAoE;AAAA,MAAvBA,OAAuB;AAAvBA,WAAuB,GAAJ,EAAI;AAAA;;AACvEC,gCAAO,SAAQta,IAAR,SAAkB+P,KAAlB,EAA4BsK,OAA5B,CAAP;AACH;AAGD;;;;;;AAMO,SAAS1D,IAAT,CAAc3W,IAAd,EAA6B+P,KAA7B,EAA6CsK,OAA7C,EAAoE;AAAA,MAAvBA,OAAuB;AAAvBA,WAAuB,GAAJ,EAAI;AAAA;;AACvEE,gCAAO,SAAQva,IAAR,SAAkB+P,KAAlB,EAA4BsK,OAA5B,CAAP;AACH;AAGD;;;;;;AAMO,SAAStY,YAAT,CAAe/B,IAAf,EAA8B+P,KAA9B,EAA8CsK,OAA9C,EAAqE;AAAA,MAAvBA,OAAuB;AAAvBA,WAAuB,GAAJ,EAAI;AAAA;;AACxEG,iCAAQ,SAAQxa,IAAR,SAAkB+P,KAAlB,EAA4BsK,OAA5B,CAAR;AACH,C;;;;;ACpCD;AAEA;AAEO,SAASI,SAAT,CAAmBrN,GAAnB,EAA0D;AAE7D,MAAI,CAACsN,mCAAY,CAACtN,GAAD,CAAjB,EAAwB;AACpB;AACH;;AAED,MAAI,CAACA,GAAG,CAACuN,qBAAD,CAAR,EAAoB;AAChBvN,OAAG,CAACuN,qBAAD,CAAH,GAAgB,EAAhB;AACH;;AAED,SAAOvN,GAAG,CAACuN,qBAAD,CAAV;AACH;AAEM,SAASC,WAAT,GAAgC;AACnC,MAAIC,MAAM,GAAGJ,SAAS,CAAC7a,MAAD,CAAtB;;AAEA,MAAI,CAACib,MAAL,EAAa;AACT,UAAM,IAAItY,KAAJ,8BAAN;AACH;;AAED,SAAOsY,MAAP;AACH;AAEM,IAAIA,MAAM,GAAGD,WAAW,EAAxB,C;;AC3BP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;ACPA;AAEA;;AAEA,SAASE,aAAT,GAA+C;AAC3C,MAAIC,KAAJ,EAAc,EAEb;;AAED,MAAI,OAAOnb,MAAP,KAAkB,WAAlB,IAAiC,OAAOA,MAAM,CAACgO,QAAd,KAA2B,WAAhE,EAA6E;AACzE,WAAOjhB,wBAAG,CAACI,UAAX;AACH;;AAED,MAAI6S,MAAM,CAACgO,QAAP,CAAgBoN,IAAhB,CAAqBxa,OAArB,CAA6B,sBAA7B,MAAyD,CAAC,CAA9D,EAAiE;AAC7D,WAAO7T,wBAAG,CAACC,KAAX;AACH;;AAED,MAAIgT,MAAM,CAACgO,QAAP,CAAgBoN,IAAhB,CAAqBxa,OAArB,CAA6B,eAA7B,MAAkD,CAAC,CAAvD,EAA0D;AACtD,WAAO7T,wBAAG,CAACE,KAAX;AACH;;AAED,MAAI+S,MAAM,CAACgO,QAAP,CAAgBoN,IAAhB,CAAqBxa,OAArB,CAA6B,oBAA7B,MAAuD,CAAC,CAA5D,EAA+D;AAC3D,WAAO7T,wBAAG,CAACG,OAAX;AACH;;AAED,SAAOH,wBAAG,CAACI,UAAX;AACH;;AAEM,IAAMmtB,MAAM,GAAG;AAElBe,SAAO,EAAEzb,2BAFS;AAIlB0b,WAAS,EAAEH,MAAQ,gDAEmBI,gBANpB;AAQlB;AACAC,qBAAmB,EAAE,yDATH;AAWlBC,SAAO,EAAEC,SAXS;AAalBC,MAAI,EAAE,IAbY;AAelBC,KAAG,EAAEV,aAAa,EAfA;AAiBlBW,OAAK,EAAE,YAjBW;AAmBlBC,QAAM,EAAE;AACJC,WAAO,EAAE5pB,4BAAO,CAAC8L,EADb;AAEJ+d,QAAI,EAAKhd,yBAAI,CAACI;AAFV,GAnBU;AAwBlB6c,OAAK,EAAQ,UAxBK;AAyBlBC,aAAW,EAAE,eAzBK;;AA2BlB,MAAIC,QAAJ,GAAwB;AACpB,WAAW7B,MAAM,CAAC2B,KAAlB,SAA6B3B,MAAM,CAAC4B,WAApC;AACH,GA7BiB;;AA+BlB,MAAIE,WAAJ,GAA2B;AACvB,WAAW9B,MAAM,CAAC+B,QAAlB,SAAgC/B,MAAM,CAAC4B,WAAvC;AACH,GAjCiB;;AAmClB,MAAII,YAAJ,GAA4B;AACxB,4CAAuChC,MAAM,CAACiC,KAAP,CAAaC,OAApD;AACH,GArCiB;;AAuClB,MAAIF,YAAJ,CAAiB/V,GAAjB,EAAsB;AAClB,WAAO,KAAK+V,YAAZ;AACA,SAAKA,YAAL,GAAoB/V,GAApB;AACH,GA1CiB;;AA4ClBkW,YAAU,EAAE,EA5CM;AA6ClBC,UAAQ,EAAI,EA7CM;AA+ClBtC,UAAQ,EAAEsB,MA/CQ;AAiDlBiB,WAAS,EAAE;AACPC,oBAAgB,EAAE;AADX,GAjDO;AAqDlBC,iBAAe,EAAE;AACb,mBAAe;AACXC,kBAAY,EAAqB,KADtB;AAEXC,8BAAwB,EAAS,IAFtB;AAGXC,qBAAe,EAAkB,IAHtB;AAIXC,kBAAY,EAAqB,IAJtB;AAKXC,mBAAa,EAAoB;AALtB,KADF;AASb,gBAAY;AACRC,mBAAa,EAAE;AADP,KATC;AAab,0BAAsB;AAClBA,mBAAa,EAAE;AADG,KAbT;AAiBb,cAAU;AACNA,mBAAa,EAAE;AADT,KAjBG;AAqBb,oBAAgB;AACZA,mBAAa,EAAE;AADH,KArBH;AAyBb,yBAAqB;AACjBA,mBAAa,EAAE;AADE,KAzBR;AA6Bb,gBAAY;AACRL,kBAAY,EAAqB,KADzB;AAERC,8BAAwB,EAAS,IAFzB;AAGRC,qBAAe,EAAkB,IAHzB;AAIRC,kBAAY,EAAqB,IAJzB;AAKRC,mBAAa,EAAoB;AALzB,KA7BC;AAqCb,wBAAoB;AAChBC,mBAAa,EAAE;AADC,KArCP;AAyCb,sBAAkB;AACdA,mBAAa,EAAE;AADD,KAzCL;AA6Cb,4BAAwB;AACpBA,mBAAa,EAAE;AADK,KA7CX;AAiDb,2BAAuB;AACnBA,mBAAa,EAAE;AADI,KAjDV;AAqDb,mBAAe;AACXA,mBAAa,EAAE;AADJ,KArDF;AAyDb,yBAAqB;AACjBA,mBAAa,EAAE;AADE,KAzDR;AA6Db,uBAAmB;AACfA,mBAAa,EAAE;AADA,KA7DN;AAiEb,2BAAuB;AACnBA,mBAAa,EAAE;AADI,KAjEV;AAqEb,kBAAc;AACVA,mBAAa,EAAE;AADL,KArED;AAyEb,yBAAqB;AACjBA,mBAAa,EAAE;AADE,KAzER;AA6Eb,uBAAmB;AACfA,mBAAa,EAAE;AADA,KA7EN;AAiFb,uBAAmB;AACfA,mBAAa,EAAE;AADA,KAjFN;AAqFb,0BAAsB;AAClBA,mBAAa,EAAE;AADG,KArFT;AAyFb,iBAAa;AACTA,mBAAa,EAAE;AADN,KAzFA;AA6Fb,qBAAiB;AACbA,mBAAa,EAAE;AADF,KA7FJ;AAiGb,mBAAe;AACXA,mBAAa,EAAE;AADJ,KAjGF;AAqGb,+BAA2B;AACvBA,mBAAa,EAAE;AADQ,KArGd;AAyGb,+BAA2B;AACvBA,mBAAa,EAAE;AADQ,KAzGd;AA6Gb,sCAAkC;AAC9BA,mBAAa,EAAE;AADe,KA7GrB;AAiHb,oBAAgB;AACZA,mBAAa,EAAE;AADH,KAjHH;AAqHb,sBAAkB;AACdA,mBAAa,EAAE;AADD,KArHL;AAyHb,sBAAkB;AACdA,mBAAa,EAAE;AADD,KAzHL;AA6Hb,6BAAyB;AACrBA,mBAAa,EAAE;AADM,KA7HZ;AAiIb,4BAAwB;AACpBA,mBAAa,EAAE;AADK,KAjIX;AAqIb,yBAAqB;AACjBA,mBAAa,EAAE;AADE,KArIR;AAyIb,uBAAmB;AACfA,mBAAa,EAAE;AADA,KAzIN;AA6Ib,uBAAmB;AACfA,mBAAa,EAAE;AADA,KA7IN;AAiJb,qBAAiB;AACbA,mBAAa,EAAE;AADF,KAjJJ;AAqJb,qBAAiB;AACbA,mBAAa,EAAE;AADF,KArJJ;AAyJb,uBAAmB;AACfA,mBAAa,EAAE;AADA,KAzJN;AA6Jb,wBAAoB;AAChBA,mBAAa,EAAE;AADC,KA7JP;AAiKb,uBAAmB;AACfA,mBAAa,EAAE;AADA,KAjKN;AAqKb,sBAAkB;AACdA,mBAAa,EAAE;AADD,KArKL;AAyKb,iBAAa;AACTA,mBAAa,EAAE;AADN,KAzKA;AA6Kb,eAAW;AACPA,mBAAa,EAAE;AADR,KA7KE;AAiLb,qBAAiB;AACbA,mBAAa,EAAE;AADF,KAjLJ;AAqLb,0BAAsB;AAClBA,mBAAa,EAAE;AADG,KArLT;AAyLb,oBAAgB;AACZA,mBAAa,EAAE;AADH,KAzLH;AA6Lb,kBAAc;AACVA,mBAAa,EAAE;AADL,KA7LD;AAiMb,mBAAe;AACXA,mBAAa,EAAE;AADJ,KAjMF;AAqMb,uBAAmB;AACfA,mBAAa,EAAE;AADA,KArMN;AAyMb,sBAAkB;AACdA,mBAAa,EAAE;AADD,KAzML;AA6Mb,yBAAqB;AACjBA,mBAAa,EAAE;AADE,KA7MR;AAiNb,mBAAe;AACXA,mBAAa,EAAE;AADJ,KAjNF;AAqNb,0BAAsB;AAClBA,mBAAa,EAAE;AADG,KArNT;AAyNb,mBAAe;AACXA,mBAAa,EAAE;AADJ,KAzNF;AA6Nb,4BAAwB;AACpBA,mBAAa,EAAE;AADK,KA7NX;AAiOb,sBAAkB;AACdA,mBAAa,EAAE;AADD,KAjOL;AAqOb,oBAAgB;AACZA,mBAAa,EAAE;AADH,KArOH;AAyOb,wBAAoB;AAChBA,mBAAa,EAAE;AADC,KAzOP;AA6Ob,oBAAgB;AACZA,mBAAa,EAAE;AADH,KA7OH;AAiPb,iBAAa;AACTA,mBAAa,EAAE;AADN,KAjPA;AAqPb,qBAAiB;AACbA,mBAAa,EAAE;AADF,KArPJ;AAyPb,mBAAe;AACXA,mBAAa,EAAE;AADJ,KAzPF;AA6Pb,uBAAmB;AACfA,mBAAa,EAAE;AADA,KA7PN;AAiQb,gBAAY;AACRA,mBAAa,EAAE;AADP,KAjQC;AAqQb,mBAAe;AACXA,mBAAa,EAAE;AADJ,KArQF;AAyQb,wBAAoB;AAChBA,mBAAa,EAAE;AADC,KAzQP;AA6Qb,oBAAgB;AACZA,mBAAa,EAAE;AADH,KA7QH;AAiRb,mBAAe;AACXA,mBAAa,EAAE;AADJ,KAjRF;AAqRb,2BAAuB;AACnBA,mBAAa,EAAE;AADI,KArRV;AAyRb,gBAAY;AACRA,mBAAa,EAAE;AADP,KAzRC;AA6Rb,yBAAqB;AACjBA,mBAAa,EAAE;AADE,KA7RR;AAiSb,qBAAiB;AACbA,mBAAa,EAAE;AADF,KAjSJ;AAqSb,oBAAgB;AACZA,mBAAa,EAAE;AADH,KArSH;AAySb,qBAAiB;AACbA,mBAAa,EAAE;AADF,KAzSJ;AA6Sb,iBAAa;AACTA,mBAAa,EAAE;AADN,KA7SA;AAiTb,4BAAwB;AACpBA,mBAAa,EAAE;AADK,KAjTX;AAqTb,oBAAgB;AACZA,mBAAa,EAAE;AADH,KArTH;AAyTb,qBAAiB;AACbA,mBAAa,EAAE;AADF,KAzTJ;AA6Tb,yBAAqB;AACjBA,mBAAa,EAAE;AADE,KA7TR;AAiUb,2BAAuB;AACnBA,mBAAa,EAAE;AADI,KAjUV;AAqUb,uBAAmB;AACfA,mBAAa,EAAE;AADA,KArUN;AAyUb,qBAAiB;AACbA,mBAAa,EAAE;AADF,KAzUJ;AA6Ub,yBAAqB;AACjBA,mBAAa,EAAE;AADE,KA7UR;AAiVb,iCAA6B;AACzBA,mBAAa,EAAE;AADU,KAjVhB;AAqVb,wBAAoB;AAChBA,mBAAa,EAAE;AADC,KArVP;AAyVb,gBAAY;AACRA,mBAAa,EAAE;AADP,KAzVC;AA6Vb,mBAAe;AACXA,mBAAa,EAAE;AADJ,KA7VF;AAiWb,iBAAa;AACTA,mBAAa,EAAE;AADN,KAjWA;AAqWb,oBAAgB;AACZA,mBAAa,EAAE;AADH,KArWH;AAyWb,6BAAyB;AACrBA,mBAAa,EAAE;AADM,KAzWZ;AA6Wb,mBAAe;AACXA,mBAAa,EAAE;AADJ,KA7WF;AAiXb,oBAAgB;AACZA,mBAAa,EAAE;AADH,KAjXH;AAqXb,oBAAgB;AACZA,mBAAa,EAAE;AADH,KArXH;AAyXb,oBAAgB;AACZA,mBAAa,EAAE;AADH,KAzXH;AA6Xb,uBAAmB;AACfA,mBAAa,EAAE;AADA,KA7XN;AAiYb,sBAAkB;AACdA,mBAAa,EAAE;AADD,KAjYL;AAqYb,kBAAc;AACVA,mBAAa,EAAE;AADL,KArYD;AAyYb,eAAW;AACPA,mBAAa,EAAE;AADR,KAzYE;AA6Yb,0BAAsB;AAClBA,mBAAa,EAAE;AADG,KA7YT;AAiZb,6BAAyB;AACrBA,mBAAa,EAAE;AADM,KAjZZ;AAqZb,iBAAa;AACTA,mBAAa,EAAE;AADN,KArZA;AAyZb,mBAAe;AACXA,mBAAa,EAAE;AADJ,KAzZF;AA6Zb,wBAAoB;AAChBA,mBAAa,EAAE;AADC,KA7ZP;AAiab,2BAAuB;AACnBA,mBAAa,EAAE;AADI,KAjaV;AAqab,sBAAkB;AACdA,mBAAa,EAAE;AADD,KAraL;AAyab,0BAAsB;AAClBA,mBAAa,EAAE;AADG,KAzaT;AA6ab,4BAAwB;AACpBA,mBAAa,EAAE;AADK,KA7aX;AAibb,yBAAqB;AACjBA,mBAAa,EAAE;AADE,KAjbR;AAqbb,iBAAa;AACTA,mBAAa,EAAE;AADN,KArbA;AAybb,0BAAsB;AAClBA,mBAAa,EAAE;AADG,KAzbT;AA6bb,gBAAY;AACRA,mBAAa,EAAE;AADP,KA7bC;AAicb,uBAAmB;AACfA,mBAAa,EAAE;AADA,KAjcN;AAqcb,oBAAgB;AACZA,mBAAa,EAAE;AADH,KArcH;AAycb,oBAAgB;AACZA,mBAAa,EAAE;AADH,KAzcH;AA6cb,qBAAiB;AACbA,mBAAa,EAAE;AADF,KA7cJ;AAidb,mBAAe;AACXA,mBAAa,EAAE;AADJ,KAjdF;AAqdb,sBAAkB;AACdA,mBAAa,EAAE;AADD,KArdL;AAydb,kBAAc;AACVA,mBAAa,EAAE;AADL,KAzdD;AA6db,qBAAiB;AACbA,mBAAa,EAAE;AADF,KA7dJ;AAieb,eAAW;AACPA,mBAAa,EAAE;AADR,KAjeE;AAqeb,gBAAY;AACRA,mBAAa,EAAE;AADP,KAreC;AAyeb,mBAAe;AACXA,mBAAa,EAAE;AADJ;AAzeF,GArDC;AAmiBlBC,mBAAiB,EAAE,CAAE,mBAAF,EAAuB,qBAAvB,EAA8C,qBAA9C,EAAqE,WAArE,EAAkF,aAAlF,EAAiG,aAAjG,EAAgH,mBAAhH,EAAqI,iBAArI,EAAwJ,iBAAxJ,EAA2K,kBAA3K,EAA+L,sBAA/L,EAAuN,eAAvN,EAAwO,uBAAxO,EAAiQ,eAAjQ,EAAkR,iBAAlR,EAAqS,iBAArS,EAAwT,aAAxT,EAAuU,cAAvU,EAAuV,uBAAvV,EAAgX,gBAAhX,EAAkY,mBAAlY,EAAuZ,UAAvZ,EAAma,eAAna,EAAob,WAApb,EAAic,gBAAjc,EAAmd,SAAnd,EAA8d,UAA9d,EAA0e,cAA1e,EAA0f,kBAA1f,EAA8gB,uBAA9gB,EAAuiB,iBAAviB,EAA0jB,gBAA1jB,EAA4kB,iBAA5kB,EAA+lB,cAA/lB,EAA+mB,eAA/mB,EAAgoB,cAAhoB,EAAgpB,kBAAhpB,EAAoqB,YAApqB,EAAkrB,SAAlrB,EAA6rB,iBAA7rB,EAAgtB,eAAhtB,EAAiuB,kBAAjuB,EAAqvB,qBAArvB,EAA4wB,kBAA5wB,EAAgyB,oBAAhyB,EAAszB,mBAAtzB,EAA20B,2BAA30B,EAAw2B,eAAx2B,EAAy3B,gBAAz3B,EAA24B,gBAA34B,EAA65B,qBAA75B,EAAo7B,kBAAp7B,EAAw8B,oBAAx8B,EAA89B,kBAA99B,EAAk/B,iBAAl/B,EAAqgC,eAArgC,EAAshC,WAAthC,EAAmiC,gBAAniC,EAAqjC,mBAArjC,EAA0kC,uBAA1kC,EAAmmC,eAAnmC,EAAonC,iBAApnC,EAAuoC,eAAvoC,EAAwpC,cAAxpC,EAAwqC,mBAAxqC,EAA6rC,qBAA7rC,EAAotC,kBAAptC,EAAwuC,cAAxuC,EAAwvC,gBAAxvC,EAA0wC,wBAA1wC,EAAoyC,kBAApyC,EAAwzC,oBAAxzC,EAA80C,iBAA90C,EAAi2C,uBAAj2C,EAA03C,sBAA13C,EAAk5C,kBAAl5C,EAAs6C,oBAAt6C,EAA47C,eAA57C,EAA68C,oBAA78C,EAAm+C,qBAAn+C,EAA0/C,kBAA1/C,EAA8gD,sBAA9gD,EAAsiD,UAAtiD,EAAkjD,oBAAljD,EAAwkD,WAAxkD,EAAqlD,mBAArlD,EAA0mD,WAA1mD,EAAunD,8BAAvnD,EAAupD,6BAAvpD,EAAsrD,cAAtrD,EAAssD,yBAAtsD,EAAiuD,aAAjuD,EAAgvD,cAAhvD,EAAgwD,gBAAhwD,EAAkxD,gBAAlxD,EAAoyD,kBAApyD,EAAwzD,SAAxzD,EAAm0D,aAAn0D,EAAk1D,oBAAl1D,EAAw2D,eAAx2D,EAAy3D,2BAAz3D,EAAs5D,YAAt5D,EAAo6D,gBAAp6D,EAAs7D,gBAAt7D,EAAw8D,iBAAx8D,EAA29D,kBAA39D,EAA++D,kBAA/+D,EAAmgE,eAAngE,EAAohE,uBAAphE,EAA6iE,kBAA7iE,EAAikE,uBAAjkE,EAA0lE,UAA1lE,EAAsmE,kBAAtmE,EAA0nE,gBAA1nE,EAA4oE,oBAA5oE,EAAkqE,aAAlqE,EAAirE,6BAAjrE,EAAgtE,oBAAhtE,EAAsuE,mBAAtuE,EAA2vE,sBAA3vE,EAAmxE,kBAAnxE,EAAuyE,eAAvyE,EAAwzE,yBAAxzE,EAAm1E,mBAAn1E,EAAw2E,kBAAx2E,EAA43E,iBAA53E,EAA+4E,WAA/4E,EAA45E,eAA55E,EAA66E,iBAA76E,EAAg8E,gBAAh8E,EAAk9E,2BAAl9E,EAA++E,YAA/+E,EAA6/E,yBAA7/E,EAAwhF,mBAAxhF,EAA6iF,UAA7iF,EAAyjF,sBAAzjF,EAAilF,sBAAjlF,EAAymF,8BAAzmF,EAAyoF,cAAzoF,EAAypF,kBAAzpF,EAA6qF,aAA7qF,EAA4rF,wBAA5rF,EAAstF,WAAttF,EAAmuF,oBAAnuF,EAAyvF,sBAAzvF,EAAixF,aAAjxF,EAAgyF,qBAAhyF,EAAuzF,iBAAvzF,EAA00F,mBAA10F,EAA+1F,UAA/1F,EAA22F,aAA32F,EAA03F,mBAA13F,EAA+4F,kBAA/4F,EAAm6F,UAAn6F,EAA+6F,YAA/6F,EAA67F,oBAA77F,EAAm9F,UAAn9F,EAA+9F,gBAA/9F,EAAi/F,eAAj/F,EAAkgG,aAAlgG,EAAihG,sBAAjhG,EAAyiG,wBAAziG,EAAmkG,iBAAnkG,EAAslG,oBAAtlG,EAA4mG,wBAA5mG,EAAsoG,oBAAtoG,EAA4pG,qBAA5pG,EAAmrG,oBAAnrG,EAAysG,uBAAzsG,EAAkuG,oBAAluG,EAAwvG,2BAAxvG,EAAqxG,mBAArxG,EAA0yG,iBAA1yG,EAA6zG,aAA7zG,EAA40G,iBAA50G,EAA+1G,mBAA/1G,EAAo3G,mBAAp3G,EAAy4G,gBAAz4G,EAA25G,8BAA35G,EAA27G,gBAA37G,EAA68G,YAA78G,EAA29G,uBAA39G,EAAo/G,mBAAp/G,EAAygH,iBAAzgH,EAA4hH,oBAA5hH,EAAkjH,cAAljH,EAAkkH,eAAlkH,EAAmlH,qBAAnlH,EAA0mH,WAA1mH,EAAunH,iBAAvnH,EAA0oH,YAA1oH,EAAwpH,6BAAxpH,EAAurH,qBAAvrH,EAA8sH,qBAA9sH,EAAquH,sBAAruH,EAA6vH,iBAA7vH,EAAgxH,yBAAhxH,EAA2yH,YAA3yH,EAAyzH,qBAAzzH,EAAg1H,aAAh1H,EAA+1H,mBAA/1H,EAAo3H,sBAAp3H,EAA44H,wBAA54H,EAAs6H,sBAAt6H,EAA87H,qBAA97H,EAAq9H,yBAAr9H,EAAg/H,sBAAh/H,EAAwgI,kBAAxgI,EAA4hI,wBAA5hI,EAAsjI,qBAAtjI,EAA6kI,6BAA7kI,EAA4mI,gBAA5mI,EAA8nI,aAA9nI,EAA6oI,mBAA7oI,EAAkqI,iBAAlqI,EAAqrI,eAArrI,EAAssI,oBAAtsI,EAA4tI,cAA5tI,EAA4uI,qBAA5uI,EAAmwI,iBAAnwI,EAAsxI,cAAtxI,EAAsyI,mBAAtyI,EAA2zI,eAA3zI,EAA40I,cAA50I,EAA41I,aAA51I,EAA22I,sBAA32I,EAAm4I,eAAn4I,EAAo5I,kBAAp5I,EAAw6I,qBAAx6I,EAA+7I,yBAA/7I,EAA09I,wCAA19I,EAAogJ,kBAApgJ,EAAwhJ,iBAAxhJ,EAA2iJ,iBAA3iJ,EAA8jJ,sBAA9jJ,EAAslJ,oBAAtlJ,EAA4mJ,gBAA5mJ,EAA8nJ,6BAA9nJ,EAA6pJ,gBAA7pJ,EAA+qJ,oBAA/qJ,EAAqsJ,eAArsJ,EAAstJ,WAAttJ,EAAmuJ,4BAAnuJ,EAAiwJ,eAAjwJ,EAAkxJ,iBAAlxJ,EAAqyJ,mBAAryJ,EAA0zJ,iBAA1zJ,EAA60J,cAA70J,EAA61J,iBAA71J,EAAg3J,mBAAh3J,EAAq4J,qBAAr4J,EAA45J,uBAA55J,EAAq7J,qBAAr7J,EAA48J,oBAA58J,EAAk+J,eAAl+J,EAAm/J,gBAAn/J,EAAqgK,YAArgK,EAAmhK,qBAAnhK,EAA0iK,iBAA1iK,EAA6jK,cAA7jK,EAA6kK,yBAA7kK,EAAwmK,kBAAxmK,EAA4nK,4BAA5nK,EAA0pK,OAA1pK,EAAmqK,YAAnqK,EAAirK,uBAAjrK,EAA0sK,iBAA1sK,EAA6tK,gBAA7tK,EAA+uK,kBAA/uK,EAAmwK,kBAAnwK,EAAuxK,sBAAvxK,EAA+yK,2BAA/yK,EAA40K,qBAA50K,EAAm2K,YAAn2K,EAAi3K,mBAAj3K,EAAs4K,aAAt4K,EAAq5K,YAAr5K,EAAm6K,wBAAn6K,EAA67K,oBAA77K,EAAm9K,UAAn9K,EAA+9K,eAA/9K,EAAg/K,oBAAh/K,EAAsgL,mBAAtgL,EAA2hL,oBAA3hL,EAAijL,WAAjjL,EAA8jL,uBAA9jL,EAAulL,qBAAvlL,EAA8mL,mBAA9mL,EAAmoL,qBAAnoL,EAA0pL,WAA1pL,EAAuqL,eAAvqL,EAAwrL,WAAxrL,EAAqsL,oBAArsL,EAA2tL,iBAA3tL,EAA8uL,uBAA9uL,EAAuwL,SAAvwL,EAAkxL,2BAAlxL,EAA+yL,cAA/yL,EAA+zL,kBAA/zL,EAAm1L,eAAn1L,EAAo2L,kBAAp2L,EAAw3L,sBAAx3L,EAAg5L,eAAh5L,EAAi6L,cAAj6L,EAAi7L,kBAAj7L,CAniBD;AAqiBlBC,eAAa,EAAE,KAriBG;AAuiBlBC,oBAAkB,EAAE;AAChBC,QAAI,EAAY,IADA;AAEhBC,WAAO,EAAS,IAFA;AAGhBC,UAAM,EAAU,IAHA;AAIhBC,UAAM,EAAU,GAJA;AAKhBC,SAAK,EAAW,IALA;AAMhBC,UAAM,EAAU,IANA;AAOhBC,kBAAc,EAAE,KAPA;AAQhBC,QAAI,EAAY,MARA;AAShBC,aAAS,EAAO,YATA;AAUhBC,WAAO,EAAS;AAVA,GAviBF;AAojBlBC,sBAAoB,EAAE,IAAI,EAAJ,GAAS,IApjBb;AAsjBlBC,WAAS,EAAE,EAtjBO;;AAwjBlB,MAAI7B,QAAJ,GAAwB;AACpB,WAAO/B,MAAM,CAAC4D,SAAP,IAAoB5D,MAAM,CAAC2B,KAAlC;AACH,GA1jBiB;;AA4jBlB,MAAII,QAAJ,CAAana,KAAb,EAAoB;AAChBoY,UAAM,CAAC4D,SAAP,GAAmBhc,KAAnB;AACH,GA9jBiB;;AAgkBlBqa,OAAK,EAAE;AACHC,WAAO,EAAG,IADP;AAEH2B,UAAM,EAAI,IAFP;AAGHC,YAAQ,EAAE,IAHP;AAIHC,SAAK,EAAK,IAJP;AAKHC,UAAM,EAAI;AALP,GAhkBW;;AAwkBlB,MAAIC,UAAJ,GAA0B;AAAA;;AACtB,2BACMxxB,wBAAG,CAACC,KADV,IACwBstB,MAAM,CAACgC,YAD/B,OAEMvvB,wBAAG,CAACE,KAFV,qBAEwCqtB,MAAM,CAAC6B,QAF/C,OAGMpvB,wBAAG,CAACG,OAHV,2CAIMH,wBAAG,CAACI,UAJV,mCAKMJ,wBAAG,CAACK,IALV,IAK4B4S,MAAM,CAACgO,QAAP,CAAgBwQ,QAL5C,UAK2Dxe,MAAM,CAACgO,QAAP,CAAgBoN,IAL3E,OAMMruB,wBAAG,CAACM,IANV,IAM4B2S,MAAM,CAACgO,QAAP,CAAgBwQ,QAN5C,+BAMgFxe,MAAM,CAACgO,QAAP,CAAgByQ,IANhG;AAQH,GAjlBiB;;AAmlBlB,MAAIC,aAAJ,GAA6B;AAAA;;AACzB,6BACM3xB,wBAAG,CAACC,KADV,IACwB,kCADxB,QAEMD,wBAAG,CAACE,KAFV,qBAEwCqtB,MAAM,CAAC6B,QAF/C,QAGMpvB,wBAAG,CAACG,OAHV,4CAIMH,wBAAG,CAACI,UAJV,oCAKMJ,wBAAG,CAACK,IALV,mCAMML,wBAAG,CAACM,IANV,IAM4B2S,MAAM,CAACgO,QAAP,CAAgBwQ,QAN5C,+BAMgFxe,MAAM,CAACgO,QAAP,CAAgByQ,IANhG;AAQH,GA5lBiB;;AA8lBlB,MAAIE,UAAJ,GAA0B;AAAA;;AACtB,6BACM5xB,wBAAG,CAACC,KADV,qBACwCstB,MAAM,CAAC6B,QAD/C,QAEMpvB,wBAAG,CAACE,KAFV,qBAEwCqtB,MAAM,CAAC6B,QAF/C,QAGMpvB,wBAAG,CAACG,OAHV,4CAIMH,wBAAG,CAACI,UAJV,oCAKMJ,wBAAG,CAACK,IALV,IAK4B4S,MAAM,CAACgO,QAAP,CAAgBwQ,QAL5C,UAK2Dxe,MAAM,CAACgO,QAAP,CAAgBoN,IAL3E;AAOH,GAtmBiB;;AAwmBlB,MAAIwD,WAAJ,GAA2B;AAAA;;AACvB,6BACM7xB,wBAAG,CAACC,KADV,iBACoCstB,MAAM,CAAC8B,WAD3C,mBAEMrvB,wBAAG,CAACE,KAFV,iBAEoCqtB,MAAM,CAAC8B,WAF3C,mBAGMrvB,wBAAG,CAACG,OAHV,iDAIMH,wBAAG,CAACI,UAJV,yCAKMJ,wBAAG,CAACK,IALV,IAK4B4S,MAAM,CAACgO,QAAP,CAAgBwQ,QAL5C,UAK2Dxe,MAAM,CAACgO,QAAP,CAAgBoN,IAL3E;AAOH,GAhnBiB;;AAknBlB,MAAIyD,OAAJ,GAAuB;AAAA;;AAEnB,QAAMC,MAAM,GAAY9e,MAAM,CAACgO,QAAP,CAAgBwQ,QAA5B,UAA2Cxe,MAAM,CAACgO,QAAP,CAAgBoN,IAAvE;AACA,QAAMwD,WAAW,GAAGtE,MAAM,CAACsE,WAA3B;AACA,QAAMD,UAAU,GAAIrE,MAAM,CAACqE,UAA3B;AAEA,6BACM5xB,wBAAG,CAACC,KADV,IACwB8xB,MAAM,KAAKH,UAAU,CAACI,KAAtB,GAAmCJ,UAAU,CAACI,KAA9C,GAA2DH,WAAW,CAACG,KAD/F,QAEMhyB,wBAAG,CAACE,KAFV,IAEwB6xB,MAAM,KAAKH,UAAU,CAAC1C,KAAtB,GAAmC0C,UAAU,CAAC1C,KAA9C,GAA2D2C,WAAW,CAAC3C,KAF/F,QAGMlvB,wBAAG,CAACG,OAHV,IAGwB4xB,MAAM,KAAKH,UAAU,CAACK,OAAtB,GAAmCL,UAAU,CAACK,OAA9C,GAA2DJ,WAAW,CAACI,OAH/F,QAIMjyB,wBAAG,CAACI,UAJV,IAIwB2xB,MAAM,KAAKH,UAAU,CAACM,UAAtB,GAAmCN,UAAU,CAACM,UAA9C,GAA2DL,WAAW,CAACK,UAJ/F,QAKMlyB,wBAAG,CAACK,IALV,IAKwB0xB,MAAM,KAAKH,UAAU,CAACzF,IAAtB,GAAmCyF,UAAU,CAACzF,IAA9C,GAA2D0F,WAAW,CAAC1F,IAL/F;AAOH,GA/nBiB;;AAioBlB,MAAIgG,WAAJ,GAA4B;AACxB,WAAO,IAAP;AACH,GAnoBiB;;AAqoBlB,MAAIA,WAAJ,CAAgB3Y,GAAhB,EAAqB;AACjB,WAAO,KAAK2Y,WAAZ;AACA,SAAKA,WAAL,GAAmB3Y,GAAnB;AACH,GAxoBiB;;AA0oBlB,MAAI4Y,YAAJ,GAA4B;AAAA;;AACxB,QAAI7E,MAAM,CAAC4E,WAAX,EAAwB;AAAA;;AACpB,+BACMnyB,wBAAG,CAACC,KADV,IACwBstB,MAAM,CAAC4E,WAD/B,QAEMnyB,wBAAG,CAACE,KAFV,IAEwBqtB,MAAM,CAAC4E,WAF/B,QAGMnyB,wBAAG,CAACG,OAHV,IAGwBotB,MAAM,CAAC4E,WAH/B,QAIMnyB,wBAAG,CAACI,UAJV,IAIwBmtB,MAAM,CAAC4E,WAJ/B,QAKMnyB,wBAAG,CAACK,IALV,IAKwBktB,MAAM,CAAC4E,WAL/B,QAMMnyB,wBAAG,CAACM,IANV,IAMwBitB,MAAM,CAAC4E,WAN/B;AAQH;;AAED,6BACMnyB,wBAAG,CAACC,KADV,6BAEMD,wBAAG,CAACE,KAFV,6BAGMF,wBAAG,CAACG,OAHV,0BAIMH,wBAAG,CAACI,UAJV,0BAKMJ,wBAAG,CAACK,IALV,oEAMML,wBAAG,CAACM,IANV;AAQH,GA9pBiB;;AAgqBlB+xB,YAAU,iCACJryB,wBAAG,CAACC,KADA,oCAEJD,wBAAG,CAACE,KAFA,oCAGJF,wBAAG,CAACG,OAHA,oCAIJH,wBAAG,CAACI,UAJA,oCAKJJ,wBAAG,CAACK,IALA,0EAMJL,wBAAG,CAACM,IANA,0CAhqBQ;AAyqBlBgyB,WAAS,+BACHtyB,wBAAG,CAACC,KADD,wCAEHD,wBAAG,CAACE,KAFD,wCAGHF,wBAAG,CAACG,OAHD,wCAIHH,wBAAG,CAACI,UAJD,wCAKHJ,wBAAG,CAACK,IALD,sEAMHL,wBAAG,CAACM,IAND,sCAzqBS;AAkrBlBiyB,aAAW,mCACLvyB,wBAAG,CAACC,KADC,+CAELD,wBAAG,CAACE,KAFC,+CAGLF,wBAAG,CAACG,OAHC,wCAILH,wBAAG,CAACI,UAJC,wCAKLJ,wBAAG,CAACK,IALC,0EAMLL,wBAAG,CAACM,IANC,2CAlrBO;AA2rBlBkyB,YAAU,iCACJxyB,wBAAG,CAACC,KADA,iCAEJD,wBAAG,CAACE,KAFA,iCAGJF,wBAAG,CAACG,OAHA,iCAIJH,wBAAG,CAACI,UAJA,iCAKJJ,wBAAG,CAACK,IALA,uDAMJL,wBAAG,CAACM,IANA,wCA3rBQ;AAosBlBmyB,sBAAoB,qDACdzyB,wBAAG,CAACC,KADU,gDAEdD,wBAAG,CAACE,KAFU,gDAGdF,wBAAG,CAACG,OAHU,gDAIdH,wBAAG,CAACI,UAJU,gDAKdJ,wBAAG,CAACK,IALU,sEAMdL,wBAAG,CAACM,IANU,gDApsBF;AA6sBlBoyB,gBAAc,yCACR1yB,wBAAG,CAACC,KADI,sDAERD,wBAAG,CAACE,KAFI,sDAGRF,wBAAG,CAACG,OAHI,sDAIRH,wBAAG,CAACI,UAJI,sDAKRJ,wBAAG,CAACK,IALI,mEAMRL,wBAAG,CAACM,IANI,4CA7sBI;AAstBlBqyB,oBAAkB,iDACZ3yB,wBAAG,CAACC,KADQ,uFAEZD,wBAAG,CAACE,KAFQ,uFAGZF,wBAAG,CAACG,OAHQ,uFAIZH,wBAAG,CAACI,UAJQ,uFAKZJ,wBAAG,CAACK,IALQ,qCAttBA;AA8tBlBuyB,cAAY,qCACN5yB,wBAAG,CAACC,KADE,iEAEND,wBAAG,CAACE,KAFE,iEAGNF,wBAAG,CAACG,OAHE,iEAINH,wBAAG,CAACI,UAJE,iEAKNJ,wBAAG,CAACK,IALE,8CAMNL,wBAAG,CAACM,IANE,iEA9tBM;;AAuuBlB,MAAIuyB,WAAJ,GAA2B;AACvB,WAAOtF,MAAM,CAACqF,YAAP,CAAoBrF,MAAM,CAACsB,GAA3B,CAAP;AACH,GAzuBiB;;AA2uBlBiE,UAAQ,YA3uBU;AA6uBlBC,iBAAe,8BA7uBG;AA+uBlBC,WAAS,iCA/uBS;AAivBlBC,0BAAwB,EAAE,GAjvBR;AAivBa;AAE/BC,SAAO,uBAnvBW;;AAqvBlB,MAAIC,aAAJ,GAA6B;AACzB,WAAW5F,MAAM,CAACmF,cAAP,CAAsBnF,MAAM,CAACsB,GAA7B,CAAX;AACH,GAvvBiB;;AAyvBlBuE,oBAAkB,mCAzvBA;AA2vBlBC,YAAU,oBA3vBQ;AA4vBlBC,eAAa,wBA5vBK;AA6vBlBC,aAAW,uBA7vBO;AA8vBlBC,eAAa,2CA9vBK;AA+vBlBC,kBAAgB,uCA/vBE;AAgwBlBC,gBAAc,iCAhwBI;;AAkwBlB,MAAIC,YAAJ,GAA4B;AAAA;;AAExB,QAAMnC,UAAU,GAAGjE,MAAM,CAACiE,UAA1B;AAEA,6BACMxxB,wBAAG,CAACC,KADV,SAC4BuxB,UAAU,CAACQ,KADvC,GACiDzE,MAAM,CAAC6E,YAAP,CAAoBJ,KAApB,CAA0B7Z,OAA1B,OAAuCoV,MAAM,CAACiC,KAAP,CAAaC,OAApD,QAAqElC,MAAM,CAACiC,KAAP,CAAa6B,QAAlF,CADjD,QAEMrxB,wBAAG,CAACE,KAFV,SAE4BsxB,UAAU,CAACtC,KAFvC,GAEiD3B,MAAM,CAAC6E,YAAP,CAAoBlD,KAFrE,QAGMlvB,wBAAG,CAACG,OAHV,SAG4BqxB,UAAU,CAACS,OAHvC,GAGmD1E,MAAM,CAAC6E,YAAP,CAAoBH,OAHvE,QAIMjyB,wBAAG,CAACI,UAJV,SAI4BoxB,UAAU,CAACU,UAJvC,GAIsD3E,MAAM,CAAC6E,YAAP,CAAoBF,UAJ1E,QAKMlyB,wBAAG,CAACK,IALV,SAK4BmxB,UAAU,CAACrF,IALvC,GAKgDoB,MAAM,CAAC6E,YAAP,CAAoBjG,IALpE,QAMMnsB,wBAAG,CAACM,IANV,SAM4BkxB,UAAU,CAACrF,IANvC,GAMgDoB,MAAM,CAAC6E,YAAP,CAAoBwB,IANpE;AAQH,GA9wBiB;;AAgxBlB,MAAIC,SAAJ,GAAyB;AAAA;;AAErB,QAAMrC,UAAU,GAAGjE,MAAM,CAACiE,UAA1B;AAEA,6BACMxxB,wBAAG,CAACC,KADV,SAC4BuxB,UAAU,CAACQ,KAAX,CAAiB7Z,OAAjB,OAA8BoV,MAAM,CAACiC,KAAP,CAAaC,OAA3C,QAA4DlC,MAAM,CAACiC,KAAP,CAAa8B,KAAzE,CAD5B,GACmH/D,MAAM,CAAC+E,SAAP,CAAiBN,KADpI,QAEMhyB,wBAAG,CAACE,KAFV,SAE4BsxB,UAAU,CAACtC,KAFvC,GAEiD3B,MAAM,CAAC+E,SAAP,CAAiBpD,KAFlE,QAGMlvB,wBAAG,CAACG,OAHV,SAG4BqxB,UAAU,CAACS,OAHvC,GAGmD1E,MAAM,CAAC+E,SAAP,CAAiBL,OAHpE,QAIMjyB,wBAAG,CAACI,UAJV,SAI4BoxB,UAAU,CAACU,UAJvC,GAIsD3E,MAAM,CAAC+E,SAAP,CAAiBJ,UAJvE,QAKMlyB,wBAAG,CAACK,IALV,SAK4BmxB,UAAU,CAACrF,IALvC,GAKgDoB,MAAM,CAAC+E,SAAP,CAAiBnG,IALjE,QAMMnsB,wBAAG,CAACM,IANV,SAM4BkxB,UAAU,CAACrF,IANvC,GAMgDoB,MAAM,CAAC+E,SAAP,CAAiBsB,IANjE;AAQH,GA5xBiB;;AA8xBlB,MAAIE,UAAJ,GAA0B;AAAA;;AAEtB,QAAMtC,UAAU,GAAGjE,MAAM,CAACiE,UAA1B;AAEA,+BACMxxB,wBAAG,CAACC,KADV,SAC4BuxB,UAAU,CAACQ,KAAX,CAAiB7Z,OAAjB,OAA8BoV,MAAM,CAACiC,KAAP,CAAaC,OAA3C,QAA4DlC,MAAM,CAACiC,KAAP,CAAa+B,MAAzE,CAD5B,GACoHhE,MAAM,CAAC8E,UAAP,CAAkBL,KADtI,SAEMhyB,wBAAG,CAACE,KAFV,SAE4BsxB,UAAU,CAACtC,KAFvC,GAEiD3B,MAAM,CAAC8E,UAAP,CAAkBnD,KAFnE,SAGMlvB,wBAAG,CAACG,OAHV,SAG4BqxB,UAAU,CAACS,OAHvC,GAGmD1E,MAAM,CAAC8E,UAAP,CAAkBJ,OAHrE,SAIMjyB,wBAAG,CAACI,UAJV,SAI4BoxB,UAAU,CAACU,UAJvC,GAIsD3E,MAAM,CAAC8E,UAAP,CAAkBH,UAJxE,SAKMlyB,wBAAG,CAACK,IALV,SAK4BmxB,UAAU,CAACrF,IALvC,GAKgDoB,MAAM,CAAC8E,UAAP,CAAkBlG,IALlE,SAMMnsB,wBAAG,CAACM,IANV,SAM4BkxB,UAAU,CAACrF,IANvC,GAMgDoB,MAAM,CAAC8E,UAAP,CAAkBuB,IANlE;AAQH,GA1yBiB;;AA4yBlB,MAAIG,WAAJ,GAA2B;AAAA;;AAEvB,QAAMvC,UAAU,GAAGjE,MAAM,CAACiE,UAA1B;AAEA,+BACMxxB,wBAAG,CAACC,KADV,SAC4BuxB,UAAU,CAACQ,KAAX,CAAiB7Z,OAAjB,OAA8BoV,MAAM,CAACiC,KAAP,CAAaC,OAA3C,QAA4DlC,MAAM,CAACiC,KAAP,CAAa6B,QAAzE,CAD5B,GACsH9D,MAAM,CAACgF,WAAP,CAAmBP,KADzI,SAEMhyB,wBAAG,CAACE,KAFV,SAE4BsxB,UAAU,CAACtC,KAFvC,GAEiD3B,MAAM,CAACgF,WAAP,CAAmBrD,KAFpE,SAGMlvB,wBAAG,CAACG,OAHV,SAG4BqxB,UAAU,CAACS,OAHvC,GAGmD1E,MAAM,CAACgF,WAAP,CAAmBN,OAHtE,SAIMjyB,wBAAG,CAACI,UAJV,SAI4BoxB,UAAU,CAACU,UAJvC,GAIsD3E,MAAM,CAACgF,WAAP,CAAmBL,UAJzE,SAKMlyB,wBAAG,CAACK,IALV,SAK4BmxB,UAAU,CAACrF,IALvC,GAKgDoB,MAAM,CAACgF,WAAP,CAAmBpG,IALnE,SAMMnsB,wBAAG,CAACM,IANV,SAM4BkxB,UAAU,CAACrF,IANvC,GAMgDoB,MAAM,CAACgF,WAAP,CAAmBqB,IANnE;AAQH,GAxzBiB;;AA0zBlB,MAAII,UAAJ,GAA0B;AAAA;;AAEtB,QAAMxC,UAAU,GAAGjE,MAAM,CAACiE,UAA1B;AAEA,+BACMxxB,wBAAG,CAACC,KADV,SAC4BuxB,UAAU,CAACQ,KAAX,CAAiB7Z,OAAjB,OAA8BoV,MAAM,CAACiC,KAAP,CAAaC,OAA3C,QAA4DlC,MAAM,CAACiC,KAAP,CAAa4B,MAAzE,CAD5B,GACoH7D,MAAM,CAACiF,UAAP,CAAkBR,KADtI,SAEMhyB,wBAAG,CAACE,KAFV,SAE4BsxB,UAAU,CAACtC,KAFvC,GAEiD3B,MAAM,CAACiF,UAAP,CAAkBtD,KAFnE,SAGMlvB,wBAAG,CAACG,OAHV,SAG4BqxB,UAAU,CAACS,OAHvC,GAGmD1E,MAAM,CAACiF,UAAP,CAAkBP,OAHrE,SAIMjyB,wBAAG,CAACI,UAJV,SAI4BoxB,UAAU,CAACU,UAJvC,GAIsD3E,MAAM,CAACiF,UAAP,CAAkBN,UAJxE,SAKMlyB,wBAAG,CAACK,IALV,SAK4BmxB,UAAU,CAACrF,IALvC,GAKgDoB,MAAM,CAACiF,UAAP,CAAkBrG,IALlE,SAMMnsB,wBAAG,CAACM,IANV,SAM4BkxB,UAAU,CAACoC,IANvC,GAMgDrG,MAAM,CAACiF,UAAP,CAAkBoB,IANlE;AAQH,GAt0BiB;;AAw0BlB,MAAIK,oBAAJ,GAAoC;AAAA;;AAEhC,QAAMzC,UAAU,GAAGjE,MAAM,CAACiE,UAA1B;AAEA,+BACMxxB,wBAAG,CAACC,KADV,SAC4BuxB,UAAU,CAACQ,KAAX,CAAiB7Z,OAAjB,OAA8BoV,MAAM,CAACiC,KAAP,CAAaC,OAA3C,QAA4DlC,MAAM,CAACiC,KAAP,CAAa4B,MAAzE,CAD5B,GACoH7D,MAAM,CAACkF,oBAAP,CAA4BT,KADhJ,SAEMhyB,wBAAG,CAACE,KAFV,SAE4BsxB,UAAU,CAACtC,KAFvC,GAEiD3B,MAAM,CAACkF,oBAAP,CAA4BvD,KAF7E,SAGMlvB,wBAAG,CAACG,OAHV,SAG4BqxB,UAAU,CAACS,OAHvC,GAGmD1E,MAAM,CAACkF,oBAAP,CAA4BR,OAH/E,SAIMjyB,wBAAG,CAACI,UAJV,SAI4BoxB,UAAU,CAACU,UAJvC,GAIsD3E,MAAM,CAACkF,oBAAP,CAA4BP,UAJlF,SAKMlyB,wBAAG,CAACK,IALV,SAK4BmxB,UAAU,CAACrF,IALvC,GAKgDoB,MAAM,CAACkF,oBAAP,CAA4BtG,IAL5E,SAMMnsB,wBAAG,CAACM,IANV,SAM4BkxB,UAAU,CAACoC,IANvC,GAMgDrG,MAAM,CAACkF,oBAAP,CAA4BmB,IAN5E;AAQH,GAp1BiB;;AAs1BlB,MAAIM,SAAJ,GAAyB;AAAA;;AAErB,QAAM1C,UAAU,GAAGjE,MAAM,CAACiE,UAA1B;AAEA,+BACMxxB,wBAAG,CAACC,KADV,SAC4BuxB,UAAU,CAACtC,KADvC,GACiD3B,MAAM,CAACuF,QADxD,SAEM9yB,wBAAG,CAACE,KAFV,SAE4BsxB,UAAU,CAACtC,KAFvC,GAEiD3B,MAAM,CAACuF,QAFxD,SAGM9yB,wBAAG,CAACG,OAHV,SAG4BqxB,UAAU,CAACS,OAHvC,GAGmD1E,MAAM,CAACuF,QAH1D,SAIM9yB,wBAAG,CAACI,UAJV,SAI4BoxB,UAAU,CAACU,UAJvC,GAIsD3E,MAAM,CAACuF,QAJ7D,SAKM9yB,wBAAG,CAACK,IALV,SAK4BmxB,UAAU,CAACrF,IALvC,GAKgDoB,MAAM,CAACuF,QALvD;AAOH,GAj2BiB;;AAm2BlB,MAAIqB,oBAAJ,GAAoC;AAAA;;AAEhC,QAAM3C,UAAU,GAAGjE,MAAM,CAACiE,UAA1B;AAEA,+BACMxxB,wBAAG,CAACC,KADV,SAC4BuxB,UAAU,CAACQ,KADvC,GACiDzE,MAAM,CAAC6F,kBADxD,SAEMpzB,wBAAG,CAACE,KAFV,SAE4BsxB,UAAU,CAACtC,KAFvC,GAEiD3B,MAAM,CAAC6F,kBAFxD,SAGMpzB,wBAAG,CAACG,OAHV,SAG4BqxB,UAAU,CAACS,OAHvC,GAGmD1E,MAAM,CAAC6F,kBAH1D,SAIMpzB,wBAAG,CAACI,UAJV,SAI4BoxB,UAAU,CAACU,UAJvC,GAIsD3E,MAAM,CAAC6F,kBAJ7D,SAKMpzB,wBAAG,CAACK,IALV,SAK4BmxB,UAAU,CAACrF,IALvC,GAKgDoB,MAAM,CAAC6F,kBALvD;AAOH,GA92BiB;;AAg3BlB,MAAIgB,aAAJ,GAA6B;AAAA;;AAEzB,QAAM5C,UAAU,GAAGjE,MAAM,CAACiE,UAA1B;AAEA,+BACMxxB,wBAAG,CAACC,KADV,SAC4BuxB,UAAU,CAACQ,KADvC,GACiDzE,MAAM,CAAC4F,aADxD,wBAEMnzB,wBAAG,CAACE,KAFV,SAE4BsxB,UAAU,CAACtC,KAFvC,GAEiD3B,MAAM,CAAC4F,aAFxD,yBAE2F5F,MAAM,CAAC2B,KAFlG,SAGMlvB,wBAAG,CAACG,OAHV,SAG4BqxB,UAAU,CAACS,OAHvC,GAGmD1E,MAAM,CAAC4F,aAH1D,0BAIMnzB,wBAAG,CAACI,UAJV,SAI4BoxB,UAAU,CAACU,UAJvC,GAIsD3E,MAAM,CAAC4F,aAJ7D,6BAKMnzB,wBAAG,CAACK,IALV,SAK4BmxB,UAAU,CAACrF,IALvC,GAKgDoB,MAAM,CAAC4F,aALvD,uBAMMnzB,wBAAG,CAACM,IANV,SAM4BkxB,UAAU,CAACoC,IANvC,GAMgDrG,MAAM,CAAC4F,aANvD;AAQH,GA53BiB;;AA83BlB,MAAIkB,kBAAJ,GAAkC;AAAA;;AAE9B,QAAM7C,UAAU,GAAGjE,MAAM,CAACiE,UAA1B;AAEA,+BACMxxB,wBAAG,CAACC,KADV,SAC4BuxB,UAAU,CAACtC,KADvC,GACiD3B,MAAM,CAACoF,kBAAP,CAA0BX,KAD3E,SAEMhyB,wBAAG,CAACE,KAFV,SAE4BsxB,UAAU,CAACtC,KAFvC,GAEiD3B,MAAM,CAACoF,kBAAP,CAA0BzD,KAF3E,SAGMlvB,wBAAG,CAACG,OAHV,SAG4BqxB,UAAU,CAACS,OAHvC,GAGmD1E,MAAM,CAACoF,kBAAP,CAA0BV,OAH7E,SAIMjyB,wBAAG,CAACI,UAJV,SAI4BoxB,UAAU,CAACU,UAJvC,GAIsD3E,MAAM,CAACoF,kBAAP,CAA0BT,UAJhF,SAKMlyB,wBAAG,CAACK,IALV,SAK4BmxB,UAAU,CAACrF,IALvC,GAKgDoB,MAAM,CAACoF,kBAAP,CAA0BxG,IAL1E;AAOH,GAz4BiB;;AA24BlB,MAAImI,WAAJ,GAA2B;AAAA;;AAEvB,QAAMxC,OAAO,GAAMvE,MAAM,CAACuE,OAA1B;AACA,QAAMuB,UAAU,GAAG9F,MAAM,CAAC8F,UAA1B;AAEA,+BACMrzB,wBAAG,CAACC,KADV,SAC4B6xB,OAAO,CAACE,KADpC,GAC8CqB,UAD9C,SAEMrzB,wBAAG,CAACE,KAFV,SAE4B4xB,OAAO,CAAC5C,KAFpC,GAE8CmE,UAF9C,SAGMrzB,wBAAG,CAACG,OAHV,SAG4B2xB,OAAO,CAACG,OAHpC,GAGgDoB,UAHhD,SAIMrzB,wBAAG,CAACI,UAJV,SAI4B0xB,OAAO,CAACI,UAJpC,GAImDmB,UAJnD,SAKMrzB,wBAAG,CAACK,IALV,SAK4ByxB,OAAO,CAAC3F,IALpC,GAK6CkH,UAL7C;AAOH,GAv5BiB;;AAy5BlB,MAAIkB,cAAJ,GAA8B;AAAA;;AAE1B,QAAMzC,OAAO,GAASvE,MAAM,CAACuE,OAA7B;AACA,QAAMwB,aAAa,GAAG/F,MAAM,CAAC+F,aAA7B;AAEA,+BACMtzB,wBAAG,CAACC,KADV,SAC4B6xB,OAAO,CAACE,KADpC,GAC8CsB,aAD9C,SAEMtzB,wBAAG,CAACE,KAFV,SAE4B4xB,OAAO,CAAC5C,KAFpC,GAE8CoE,aAF9C,SAGMtzB,wBAAG,CAACG,OAHV,SAG4B2xB,OAAO,CAACG,OAHpC,GAGgDqB,aAHhD,SAIMtzB,wBAAG,CAACI,UAJV,SAI4B0xB,OAAO,CAACI,UAJpC,GAImDoB,aAJnD,SAKMtzB,wBAAG,CAACK,IALV,SAK4ByxB,OAAO,CAAC3F,IALpC,GAK6CmH,aAL7C;AAOH,GAr6BiB;;AAu6BlB,MAAIkB,YAAJ,GAA4B;AAAA;;AAExB,QAAM1C,OAAO,GAAGvE,MAAM,CAACuE,OAAvB;AACA,QAAMyB,WAAW,GAAGhG,MAAM,CAACgG,WAA3B;AAEA,+BACKvzB,wBAAG,CAACC,KADT,SAC0B6xB,OAAO,CAACE,KADlC,GAC4CuB,WAD5C,SAEKvzB,wBAAG,CAACE,KAFT,SAE0B4xB,OAAO,CAAC5C,KAFlC,GAE4CqE,WAF5C,SAGKvzB,wBAAG,CAACG,OAHT,SAG0B2xB,OAAO,CAACG,OAHlC,GAG8CsB,WAH9C,SAIKvzB,wBAAG,CAACI,UAJT,SAI0B0xB,OAAO,CAACI,UAJlC,GAIiDqB,WAJjD,SAKKvzB,wBAAG,CAACK,IALT,SAK0ByxB,OAAO,CAAC3F,IALlC,GAK2CoH,WAL3C;AAOH,GAn7BiB;;AAq7BlB,MAAIkB,cAAJ,GAA8B;AAAA;;AAE1B,QAAM3C,OAAO,GAASvE,MAAM,CAACuE,OAA7B;AACA,QAAM0B,aAAa,GAAGjG,MAAM,CAACiG,aAA7B;AAEA,+BACMxzB,wBAAG,CAACC,KADV,SAC4B6xB,OAAO,CAACE,KADpC,GAC8CwB,aAD9C,SAEMxzB,wBAAG,CAACE,KAFV,SAE4B4xB,OAAO,CAAC5C,KAFpC,GAE8CsE,aAF9C,SAGMxzB,wBAAG,CAACG,OAHV,SAG4B2xB,OAAO,CAACG,OAHpC,GAGgDuB,aAHhD,SAIMxzB,wBAAG,CAACI,UAJV,SAI4B0xB,OAAO,CAACI,UAJpC,GAImDsB,aAJnD,SAKMxzB,wBAAG,CAACK,IALV,SAK4ByxB,OAAO,CAAC3F,IALpC,GAK6CqH,aAL7C;AAOH,GAj8BiB;;AAm8BlB,MAAIkB,iBAAJ,GAAiC;AAAA;;AAE7B,QAAM5C,OAAO,GAAYvE,MAAM,CAACuE,OAAhC;AACA,QAAM2B,gBAAgB,GAAGlG,MAAM,CAACkG,gBAAhC;AAEA,+BACMzzB,wBAAG,CAACC,KADV,SAC4B6xB,OAAO,CAACE,KADpC,GAC8CyB,gBAD9C,SAEMzzB,wBAAG,CAACE,KAFV,SAE4B4xB,OAAO,CAAC5C,KAFpC,GAE8CuE,gBAF9C,SAGMzzB,wBAAG,CAACG,OAHV,SAG4B2xB,OAAO,CAACG,OAHpC,GAGgDwB,gBAHhD,SAIMzzB,wBAAG,CAACI,UAJV,SAI4B0xB,OAAO,CAACI,UAJpC,GAImDuB,gBAJnD,SAKMzzB,wBAAG,CAACK,IALV,SAK4ByxB,OAAO,CAAC3F,IALpC,GAK6CsH,gBAL7C;AAOH,GA/8BiB;;AAi9BlB,MAAIkB,eAAJ,GAA+B;AAAA;;AAE3B,QAAM7C,OAAO,GAASvE,MAAM,CAACuE,OAA7B;AACA,QAAM4B,cAAc,GAAGnG,MAAM,CAACmG,cAA9B;AAEA,+BACM1zB,wBAAG,CAACC,KADV,SAC4B6xB,OAAO,CAACE,KADpC,GAC8C0B,cAD9C,SAEM1zB,wBAAG,CAACE,KAFV,SAE4B4xB,OAAO,CAAC5C,KAFpC,GAE8CwE,cAF9C,SAGM1zB,wBAAG,CAACG,OAHV,SAG4B2xB,OAAO,CAACG,OAHpC,GAGgDyB,cAHhD,SAIM1zB,wBAAG,CAACI,UAJV,SAI4B0xB,OAAO,CAACI,UAJpC,GAImDwB,cAJnD,SAKM1zB,wBAAG,CAACK,IALV,SAK4ByxB,OAAO,CAAC3F,IALpC,GAK6CuH,cAL7C;AAOH,GA79BiB;;AA+9BlBkB,YAAU,EAAE,EA/9BM;;AAi+BlB,MAAIC,SAAJ,GAAyB;AACrB,WAAO,KAAKD,UAAL,IAAmBrH,MAAM,CAACiE,UAAP,CAAkBjE,MAAM,CAACsB,GAAzB,CAA1B;AACH,GAn+BiB;;AAq+BlB,MAAIgG,SAAJ,CAAc1f,KAAd,EAAqB;AACjB,SAAKyf,UAAL,GAAkBzf,KAAlB;AACH,GAv+BiB;;AAy+BlB,MAAI2f,YAAJ,GAA4B;AACxB,WAAOvH,MAAM,CAACoE,aAAP,CAAqBpE,MAAM,CAACsB,GAA5B,CAAP;AACH,GA3+BiB;;AA6+BlB,MAAIkG,UAAJ,GAA0B;AACtB,WAAOxH,MAAM,CAACsE,WAAP,CAAmBtE,MAAM,CAACsB,GAA1B,CAAP;AACH,GA/+BiB;;AAi/BlB,MAAImG,SAAJ,GAAyB;AACrB,WAAOzH,MAAM,CAACqE,UAAP,CAAkBrE,MAAM,CAACsB,GAAzB,CAAP;AACH,GAn/BiB;;AAq/BlB,MAAIoG,MAAJ,GAAsB;AAElB,QAAMlD,MAAM,GAAW9e,MAAM,CAACgO,QAAP,CAAgBwQ,QAA3B,UAA0Cxe,MAAM,CAACgO,QAAP,CAAgBoN,IAAtE;AACA,QAAM0G,UAAU,GAAGxH,MAAM,CAACwH,UAA1B;AACA,QAAMC,SAAS,GAAIzH,MAAM,CAACyH,SAA1B;AAEA,WAAOjD,MAAM,KAAKiD,SAAX,GAAuBA,SAAvB,GAAmCD,UAA1C;AACH,GA5/BiB;;AA8/BlB,MAAIG,WAAJ,GAA2B;AACvB,gBAAW3H,MAAM,CAACsH,SAAlB,GAAgCtH,MAAM,CAAC6E,YAAP,CAAoB7E,MAAM,CAACsB,GAA3B,CAAhC;AACH,GAhgCiB;;AAkgClB,MAAIsG,UAAJ,GAA0B;AACtB,gBAAW5H,MAAM,CAACsH,SAAlB,GAAgCtH,MAAM,CAACgF,WAAP,CAAmBhF,MAAM,CAACsB,GAA1B,CAAhC;AACH,GApgCiB;;AAsgClB,MAAIuG,SAAJ,GAAyB;AACrB,gBAAW7H,MAAM,CAACsH,SAAlB,GAAgCtH,MAAM,CAACiF,UAAP,CAAkBjF,MAAM,CAACsB,GAAzB,CAAhC;AACH,GAxgCiB;;AA0gClB,MAAIwG,iBAAJ,GAAiC;AAC7B,WAAO9H,MAAM,CAAC8G,kBAAP,CAA0B9G,MAAM,CAACsB,GAAjC,CAAP;AACH,GA5gCiB;;AA8gClB,MAAIyG,aAAJ,GAA6B;AACzB,gBAAW/H,MAAM,CAACsH,SAAlB,GAAgCtH,MAAM,CAAC4F,aAAvC;AACH,GAhhCiB;;AAkhClB,MAAIoC,gBAAJ,GAAgC;AAC5B,gBAAWhI,MAAM,CAACuH,YAAlB;AACH,GAphCiB;;AAshClB,MAAIU,SAAJ,GAAyB;AACrB,QAAMC,gBAAgB,GAAGvc,IAAI,CAACE,MAAL,KAAgBmU,MAAM,CAAC0F,wBAAhD;AACA,QAAMuC,SAAS,GAAGC,gBAAgB,GAAGlI,MAAM,CAACyF,SAAV,GAAsBzF,MAAM,CAACwF,eAA/D;AAEA,gBAAWxF,MAAM,CAACsH,SAAlB,GAAgCW,SAAhC;AACH,GA3hCiB;;AA6hClB,MAAIE,OAAJ,GAAuB;AACnB,gBAAWnI,MAAM,CAACiE,UAAP,CAAkBjE,MAAM,CAACsB,GAAzB,CAAX,GAA6CtB,MAAM,CAAC2F,OAApD;AACH,GA/hCiB;;AAiiClB,MAAIyC,UAAJ,GAA0B;AACtB,gBAAWpI,MAAM,CAAC0H,MAAlB,GAA6B1H,MAAM,CAAC8F,UAApC;AACH,GAniCiB;;AAqiClB,MAAIuC,aAAJ,GAA6B;AACzB,gBAAWrI,MAAM,CAAC0H,MAAlB,GAA6B1H,MAAM,CAAC+F,aAApC;AACH,GAviCiB;;AAyiClB,MAAIuC,WAAJ,GAA2B;AACvB,gBAAWtI,MAAM,CAAC0H,MAAlB,GAA6B1H,MAAM,CAACgG,WAApC;AACH,GA3iCiB;;AA6iClB,MAAIuC,aAAJ,GAA6B;AACzB,gBAAWvI,MAAM,CAAC0H,MAAlB,GAA6B1H,MAAM,CAACiG,aAApC;AACH,GA/iCiB;;AAijClB,MAAIuC,gBAAJ,GAAgC;AAC5B,gBAAWxI,MAAM,CAAC0H,MAAlB,GAA6B1H,MAAM,CAACkG,gBAApC;AACH,GAnjCiB;;AAqjClBuC,eAAa,EAAE;AACXhH,WAAO,EAAE5pB,4BAAO,CAAC8L,EADN;AAEX+d,QAAI,EAAKhd,yBAAI,CAACI;AAFH;AArjCG,CAAf,C;;AC3BP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACDA;AAEO,SAASqG,MAAT,CAAgBud,IAAhB,EAAsB/L,GAAtB,EAA2BgM,IAA3B,EAAsC;AAAA,MAAXA,IAAW;AAAXA,QAAW,GAAN,IAAM;AAAA;;AACzCD,MAAI,GAAGA,IAAI,IAAI,EAAf;AACA/L,KAAG,GAAIA,GAAG,IAAK,EAAf;;AAEA,OAAK,IAAI9T,CAAT,IAAc8T,GAAd,EAAmB;AACf,QAAIA,GAAG,CAACrR,cAAJ,CAAmBzC,CAAnB,CAAJ,EAA2B;AACvB,UAAI8f,IAAI,IAAI,CAACD,IAAI,CAACpd,cAAL,CAAoBzC,CAApB,CAAb,EAAqC;AACjC6f,YAAI,CAAC7f,CAAD,CAAJ,GAAU8T,GAAG,CAAC9T,CAAD,CAAb;AACH;AACJ;AACJ;;AAED,SAAO6f,IAAP;AACH;AAEM,SAASE,cAAT,CAAwB/V,GAAxB,EAA6B;AAChC,SAAOnN,MAAM,CAACgO,QAAP,CAAgBwQ,QAAhB,KAA6BrR,GAAG,CAACnG,KAAJ,CAAU,GAAV,EAAe,CAAf,CAApC;AACH;AAEM,SAAS8T,YAAT,CAAsB3N,GAAtB,EAA2B;AAC9B,MAAI5D,KAAK,GAAG4D,GAAG,CAAC5D,KAAJ,CAAU,kBAAV,CAAZ;;AAEA,MAAI,CAACA,KAAL,EAAY;AACR,WAAO,IAAP;AACH;;AAED,SAAOA,KAAK,CAAC,CAAD,CAAL,KAAgBvJ,MAAM,CAACgO,QAAP,CAAgBwQ,QAAhC,UAA6Cxe,MAAM,CAACgO,QAAP,CAAgBoN,IAApE;AACH;AAEM,SAAS+H,IAAT,CAAcze,MAAd,EAAsByI,GAAtB,EAA2BiW,OAA3B,EAAuCC,IAAvC,SAAgF;AAAA,MAArDD,OAAqD;AAArDA,WAAqD,GAA7C,EAA6C;AAAA;;AAAA,MAAzCC,IAAyC;AAAzCA,QAAyC,GAApC,EAAoC;AAAA;;AAAA,gCAAJ,EAAI;AAAA,gCAA9BC,aAA8B;AAAA,MAA9BA,aAA8B,mCAAd,KAAc;;AAEnF,SAAO,IAAIxhB,2BAAJ,CAAiB,UAAAL,OAAO,EAAI;AAC/B,QAAI8hB,QAAQ,GAAGvjB,MAAM,CAACwX,cAAP,IAAyBxX,MAAM,CAACwjB,aAA/C;;AAEA,QAAIxjB,MAAM,CAACyjB,cAAP,IAAyB,CAAC3I,YAAY,CAAC3N,GAAD,CAA1C,EAAiD;AAE7C,UAAI,CAAC+V,cAAc,CAAC/V,GAAD,CAAnB,EAA0B;AACtB,eAAO1L,OAAO,EAAd;AACH;;AAED8hB,cAAQ,GAAGvjB,MAAM,CAACyjB,cAAlB;AACH;;AAED,QAAIlM,GAAG,GAAG,IAAIgM,QAAJ,CAAa,oBAAb,CAAV;AACAhM,OAAG,CAAC9J,IAAJ,CAAS/I,MAAM,CAACc,WAAP,EAAT,EAA+B2H,GAA/B,EAAoC,IAApC;;AAEA,QAAI,OAAOoK,GAAG,CAACE,gBAAX,KAAgC,UAApC,EAAgD;AAC5CF,SAAG,CAACE,gBAAJ,CAAqB,kBAArB,EAAyC,gBAAzC;AACAF,SAAG,CAACE,gBAAJ,CAAqB,cAArB,EAAqC,kBAArC;;AAEA,WAAK,IAAIiM,UAAT,IAAuBN,OAAvB,EAAgC;AAC5B,YAAIA,OAAO,CAACxd,cAAR,CAAuB8d,UAAvB,CAAJ,EAAwC;AACpCnM,aAAG,CAACE,gBAAJ,CAAqBiM,UAArB,EAAiCN,OAAO,CAACM,UAAD,CAAxC;AACH;AACJ;AACJ;;AAED,QAAIJ,aAAJ,EAAmB;AACf7hB,aAAO;AACV,KAFD,MAEO;AACH8V,SAAG,CAACoM,kBAAJ,GAAyB,YAAM;AAC3B,YAAIpM,GAAG,CAAC1K,UAAJ,GAAiB,CAArB,EAAwB;AACpBpL,iBAAO;AACV;AACJ,OAJD;AAKH;;AAED8V,OAAG,CAACG,IAAJ,CAASrR,IAAI,CAACC,SAAL,CAAe+c,IAAf,EAAqBne,OAArB,CAA6B,IAA7B,EAAmC,KAAnC,CAAT;AACH,GArCM,CAAP;AAsCH;AAEM,SAAS0e,eAAT,CAAyBlf,MAAzB,EAAiC0C,QAAjC,EAA2C;AAE9C,MAAIgE,QAAQ,GAAG,EAAf;AAEA,SAAO,YAAW;AACd,QAAIxG,IAAI,GAAGoG,SAAX;;AAEA,QAAII,QAAQ,CAACzH,OAAb,EAAsB;AAClBE,kBAAY,CAACuH,QAAQ,CAACzH,OAAV,CAAZ;AACA,aAAOyH,QAAQ,CAACzH,OAAhB;AACH;;AAEDyH,YAAQ,CAACzH,OAAT,GAAmB7C,UAAU,CAAC,YAAM;AAEhC,UAAIuS,QAAQ,GAAGjI,QAAQ,CAACiI,QAAxB;AACA,UAAIwQ,QAAQ,GAAGzY,QAAQ,CAACyY,QAAxB;AAEA,aAAOzY,QAAQ,CAACzK,OAAhB;AACA,aAAOyK,QAAQ,CAACiI,QAAhB;AACA,aAAOjI,QAAQ,CAACyY,QAAhB;AACA,aAAOzY,QAAQ,CAACzH,OAAhB;AAEA,aAAO7B,2BAAY,CAACL,OAAb,GAAuBnB,IAAvB,CAA4B,YAAM;AACrC,eAAOoE,MAAM,CAACG,KAAP,CAAa,IAAb,EAAmBD,IAAnB,CAAP;AACH,OAFM,EAEJtE,IAFI,CAEC+S,QAFD,EAEWwQ,QAFX,CAAP;AAIH,KAd4B,EAc1Bzc,QAd0B,CAA7B;AAgBAgE,YAAQ,CAACzK,OAAT,GAAmByK,QAAQ,CAACzK,OAAT,IAAoB,IAAImB,2BAAJ,CAAiB,UAACuR,QAAD,EAAWwQ,QAAX,EAAwB;AAC5EzY,cAAQ,CAACiI,QAAT,GAAoBA,QAApB;AACAjI,cAAQ,CAACyY,QAAT,GAAoBA,QAApB;AACH,KAHsC,CAAvC;AAKA,WAAOzY,QAAQ,CAACzK,OAAhB;AACH,GA9BD;AA+BH;AAEM,SAASmjB,aAAT,GAA8C;AACjD,SAAO,IAAIhiB,2BAAJ,CAAiB,UAAAL,OAAO,EAAI;AAC/B,QAAI,OAAO+K,QAAP,KAAoB,WAApB,IAAmCA,QAAQ,CAACK,UAAT,KAAwB,UAA/D,EAA2E;AACvEpL,aAAO;AACV;;AAEDzB,UAAM,CAACyP,gBAAP,CAAwB,MAAxB,EAAgChO,OAAhC;AACH,GANM,CAAP;AAOH;AAEM,SAASwF,YAAT,CAAsBvC,MAAtB,EAA8Bd,IAA9B,EAAoC;AAEvC,MAAID,OAAJ;;AAEA,WAASogB,IAAT,GAAgB;AACZpgB,WAAO,GAAG7C,UAAU,CAAC,YAAM;AACvB4D,YAAM;AACNqf,UAAI;AACP,KAHmB,EAGjBngB,IAHiB,CAApB;AAIH;;AAEDmgB,MAAI;AAEJ,SAAO;AACH3iB,UADG,oBACM;AACLyC,kBAAY,CAACF,OAAD,CAAZ;AACH;AAHE,GAAP;AAKH;AAEM,SAASmC,QAAT,GAAoB;AACvB,MAAIC,KAAK,GAAG,kBAAZ;AAEA,SAAO,aAAab,OAAb,CAAqB,IAArB,EAA2B,YAAM;AACpC,WAAOa,KAAK,CAACC,MAAN,CAAaC,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACE,MAAL,KAAgBJ,KAAK,CAAC9E,MAAjC,CAAb,CAAP;AACH,GAFM,CAAP;AAGH;AAEM,SAAS+iB,IAAT,GAAgB;AACnB,SAAOzW,OAAO,CAACvN,MAAM,CAACwM,QAAP,CAAgByX,YAAjB,CAAd;AACH,C;;ACtJM,IAAIC,eAAe,GAAG,EAAtB;AACA,IAAIC,YAAY,GAAG,EAAnB;AACA,IAAIC,gBAAgB,GAAG,EAAvB;AACA,IAAIC,cAAc,GAAG,EAArB;AAEA,SAASC,iBAAT,CAA2BC,OAA3B,EAAoC;AACvCL,iBAAe,CAACrjB,IAAhB,CAAqB0jB,OAArB;AACH;AAEM,SAASC,cAAT,CAAwBD,OAAxB,EAAiC;AACpCJ,cAAY,CAACtjB,IAAb,CAAkB0jB,OAAlB;AACH;AAEM,SAASE,kBAAT,CAA4BF,OAA5B,EAAqC;AACxCH,kBAAgB,CAACvjB,IAAjB,CAAsB0jB,OAAtB;AACH;AAEM,SAASG,gBAAT,CAA0BH,OAA1B,EAAmC;AACtCF,gBAAc,CAACxjB,IAAf,CAAoB0jB,OAApB;AACH,C;;ACnBM,IAAIjK,MAAM,GAAG;AAEhBqK,KAAG,EAAE,EAFW;AAGhBhc,QAAM,EAAE,EAHQ;AAKhBic,oBAAkB,EAAE,MALJ;AAOhBC,eAAa,EAAK,KAAK,EAAL,GAAU,IAPZ;AAQhBC,kBAAgB,EAAE,EARF;AAUhBC,WAAS,EAAE,GAVK;AAYhB;AACA;AACAC,QAAM,EAAE,KAdQ;AAgBhBC,WAAS,EAAE,IAhBK;AAiBhBC,qBAAmB,EAAE,IAjBL;AAkBhBC,mBAAiB,EAAK,IAlBN;AAmBhBC,kBAAgB,EAAE,KAnBF;AAoBhBC,2BAAyB,EAAE,KApBX;AAsBhBjL,UAAQ,EAAE,MAtBM;AAwBhBkL,SAAO,EAAE,CAAC,MAAD,EAAS,OAAT,CAxBO;AA0BhBC,WAAS,EAAO,IA1BA;AA2BhBC,gBAAc,EAAE;AA3BA,CAAb;AA8BA,IAAInL,SAAS,GAAG,CAAE,OAAF,EAAW,MAAX,EAAmB,MAAnB,EAA2B,OAA3B,CAAhB,C;;AC9BP;AACA;AACA;AAEO,IAAIoL,MAAM,GAAG,EAAb;AACA,IAAIC,QAAQ,GAAG,EAAf;;AAEP,IAAIC,gBAAS,GAAG,mBAACvC,OAAD,EAAUC,IAAV,EAAgBjW,OAAhB,EAA4B;AACxC,SAAO+V,IAAI,CAAC,MAAD,EAAS7I,MAAM,CAACqK,GAAhB,EAAqBvB,OAArB,EAA8BC,IAA9B,EAAoCjW,OAApC,CAAX;AACH,CAFD;;AAIO,SAASwY,YAAT,GAAwB;AAC3B,SAAOD,gBAAP;AACH;AAEM,SAASE,YAAT,CAAsBC,YAAtB,EAAoC;AACvCH,kBAAS,GAAGG,YAAZ;AACH;AAED,IAAIC,MAAM,GAAG,KAAb;AAEAjlB,UAAU,CAAC,YAAM;AACbilB,QAAM,GAAG,IAAT;AACH,CAFS,EAEP,CAFO,CAAV;AAIO,SAASC,KAAT,CAAeC,KAAf,EAAsB9V,KAAtB,EAA6BsK,OAA7B,EAAsC;AAEzC,MAAI,OAAOza,MAAP,KAAkB,WAAlB,IAAiC,CAACA,MAAM,CAAC8W,OAAzC,IAAoD,CAAC9W,MAAM,CAAC8W,OAAP,CAAeoP,GAAxE,EAA6E;AACzE;AACH;;AAED,MAAI,CAACH,MAAL,EAAa;AACT,WAAOjlB,UAAU,CAAC;AAAA,aAAMklB,KAAK,CAACC,KAAD,EAAQ9V,KAAR,EAAesK,OAAf,CAAX;AAAA,KAAD,EAAqC,CAArC,CAAjB;AACH;;AAED,MAAIL,QAAQ,GAAGE,MAAM,CAACF,QAAtB;;AAEA,MAAIpa,MAAM,CAACrS,SAAX,EAAsB;AAClBysB,YAAQ,GAAGpa,MAAM,CAACrS,SAAlB;AACH;;AAED,MAAI0sB,SAAS,CAACzZ,OAAV,CAAkBqlB,KAAlB,IAA2B5L,SAAS,CAACzZ,OAAV,CAAkBwZ,QAAlB,CAA/B,EAA4D;AACxD;AACH;;AAEDK,SAAO,GAAGA,OAAO,IAAI,EAArB;AAEA,MAAI7V,IAAI,GAAG,CAACuL,KAAD,CAAX;;AAEA,MAAG6T,IAAI,EAAP,EAAU;AACNvJ,WAAO,GAAGpU,IAAI,CAACC,SAAL,CAAemU,OAAf,CAAV;AACH;;AAED7V,MAAI,CAAC/D,IAAL,CAAU4Z,OAAV;;AAEA,MAAIA,OAAO,CAACtY,KAAR,IAAiBsY,OAAO,CAAC0L,OAA7B,EAAsC;AAClCvhB,QAAI,CAAC/D,IAAL,CAAU,MAAV,EAAkB4Z,OAAO,CAACtY,KAAR,IAAiBsY,OAAO,CAAC0L,OAA3C;AACH;;AAED,MAAI;AACA,QAAInmB,MAAM,CAAC8W,OAAP,CAAemP,KAAf,KAAyBjmB,MAAM,CAAC8W,OAAP,CAAemP,KAAf,EAAsBphB,KAAnD,EAA0D;AACtD7E,YAAM,CAAC8W,OAAP,CAAemP,KAAf,EAAsBphB,KAAtB,CAA4B7E,MAAM,CAAC8W,OAAnC,EAA4ClS,IAA5C;AACH,KAFD,MAEO,IAAI5E,MAAM,CAAC8W,OAAP,CAAeoP,GAAf,IAAsBlmB,MAAM,CAAC8W,OAAP,CAAeoP,GAAf,CAAmBrhB,KAA7C,EAAoD;AACvD7E,YAAM,CAAC8W,OAAP,CAAeoP,GAAf,CAAmBrhB,KAAnB,CAAyB7E,MAAM,CAAC8W,OAAhC,EAAyClS,IAAzC;AACH;AACJ,GAND,CAME,OAAOrE,GAAP,EAAY,CACV;AACH;AACJ;AAEM,SAAS6lB,cAAT,QAAwD;AAAA,gCAAJ,EAAI;AAAA,gCAA9B9C,aAA8B;AAAA,MAA9BA,aAA8B,mCAAd,KAAc;;AAE3D,MAAI,OAAOtjB,MAAP,KAAkB,WAAtB,EAAmC;AAC/B;AACH;;AAED,MAAI,CAACsa,MAAM,CAACqK,GAAZ,EAAiB;AACb;AACH;;AAED,MAAI0B,SAAS,GAAGZ,MAAM,CAACxkB,MAAvB;AACA,MAAIqlB,WAAW,GAAGZ,QAAQ,CAACzkB,MAA3B;;AAEA,MAAI,CAAColB,SAAD,IAAc,CAACC,WAAnB,EAAgC;AAC5B;AACH;;AAED,MAAIC,IAAI,GAAG,EAAX;;AAjB2D,0BAmBvCpC,YAnBuC,gBAmBzB;AAA7B,QAAII,OAAO,GAAIJ,YAAJ,KAAX;;AACD,QAAI;AACA1e,YAAM,CAAC8gB,IAAD,EAAOhC,OAAO,CAACgC,IAAD,CAAd,EAAsB,KAAtB,CAAN;AACH,KAFD,CAEE,OAAOhmB,GAAP,EAAY;AACVuW,aAAO,CAAC3U,KAAR,CAAc,+BAAd,EAA+C5B,GAAG,CAAC+B,KAAJ,IAAa/B,GAAG,CAACJ,QAAJ,EAA5D;AACH;AACJ;;AAED,MAAIijB,OAAO,GAAG,EAAd;;AA3B2D,0BA6BvCiB,cA7BuC,gBA6BvB;AAA/B,QAAIE,QAAO,GAAIF,cAAJ,KAAX;;AACD,QAAI;AACA5e,YAAM,CAAC2d,OAAD,EAAUmB,QAAO,CAACnB,OAAD,CAAjB,EAA4B,KAA5B,CAAN;AACH,KAFD,CAEE,OAAO7iB,GAAP,EAAY;AACVuW,aAAO,CAAC3U,KAAR,CAAc,iCAAd,EAAiD5B,GAAG,CAAC+B,KAAJ,IAAa/B,GAAG,CAACJ,QAAJ,EAA9D;AACH;AACJ;;AAED,MAAIqmB,MAAM,GAAGf,MAAb;AAEA,MAAIlO,GAAG,GAAGoO,gBAAS,CAACvC,OAAD,EAAU;AACzBoD,UAAM,EAANA,MADyB;AAEzBD,QAAI,EAAJA,IAFyB;AAGzBb,YAAQ,EAARA;AAHyB,GAAV,EAIhB;AACCpC,iBAAa,EAAbA;AADD,GAJgB,CAAnB;AAQAmC,QAAM,GAAG,EAAT;AACAC,UAAQ,GAAG,EAAX;AAEA,SAAOnO,GAAP;AACH;;AAEM,IAAIxS,MAAK,GAAG6e,eAAe,CAACwC,cAAD,EAAiB9L,MAAM,CAACwK,gBAAxB,CAA3B;;;;AAGP,SAAS2B,OAAT,CAAiBR,KAAjB,EAAwB9V,KAAxB,EAA+BsK,OAA/B,EAAwC;AAEpCgL,QAAM,CAAC5kB,IAAP,CAAY;AACRolB,SAAK,EAALA,KADQ;AAER9V,SAAK,EAALA,KAFQ;AAGRsK,WAAO,EAAPA;AAHQ,GAAZ;;AAMA,MAAIH,MAAM,CAACgL,OAAP,CAAe1kB,OAAf,CAAuBqlB,KAAvB,IAAgC,CAAC,CAArC,EAAwC;AACpClhB,UAAK;AACR;AACJ;;AAGM,SAASmhB,GAAT,CAAaD,KAAb,EAAoB9V,KAApB,EAA2BsK,OAA3B,EAAoC;AAEvC,MAAI,OAAOza,MAAP,KAAkB,WAAtB,EAAmC;AAC/B;AACH;;AAED,MAAIsa,MAAM,CAAC3R,MAAX,EAAmB;AACfwH,SAAK,GAAMmK,MAAM,CAAC3R,MAAb,SAAuBwH,KAA5B;AACH;;AAEDsK,SAAO,GAAGA,OAAO,IAAI,EAArB;;AAEA,MAAI,OAAOA,OAAP,KAAmB,QAAvB,EAAiC;AAC7BA,WAAO,GAAG;AACNvQ,aAAO,EAAEuQ;AADH,KAAV;AAGH,GAJD,MAIO,IAAIA,OAAO,YAAY9X,KAAvB,EAA8B;AACjC8X,WAAO,GAAG;AACNtY,WAAK,EAAEsY,OAAO,CAACnY,KAAR,IAAiBmY,OAAO,CAACta,QAAR;AADlB,KAAV;AAGH;;AAED,MAAI;AACAkG,QAAI,CAACC,SAAL,CAAemU,OAAf;AACH,GAFD,CAEE,OAAOla,GAAP,EAAY;AACV;AACH;;AAEDka,SAAO,CAACiM,SAAR,GAAoBC,IAAI,CAACC,GAAL,EAApB;;AA5BuC,0BA8BnB1C,eA9BmB,gBA8BF;AAAhC,QAAIK,OAAO,GAAIL,eAAJ,KAAX;;AACD,QAAI;AACAze,YAAM,CAACgV,OAAD,EAAU8J,OAAO,CAAC9J,OAAD,CAAjB,EAA4B,KAA5B,CAAN;AACH,KAFD,CAEE,OAAOla,GAAP,EAAY;AACVuW,aAAO,CAAC3U,KAAR,CAAc,kCAAd,EAAkD5B,GAAG,CAAC+B,KAAJ,IAAa/B,GAAG,CAACJ,QAAJ,EAA/D;AACH;AACJ;;AAED,MAAI,CAACma,MAAM,CAAC0K,MAAZ,EAAoB;AAChBgB,SAAK,CAACC,KAAD,EAAQ9V,KAAR,EAAesK,OAAf,CAAL;AACH;;AAED,MAAIgL,MAAM,CAACxkB,MAAP,KAAkBqZ,MAAM,CAACyK,SAA7B,EAAwC;AACpC0B,WAAO,CAAC,MAAD,EAAS,0BAAT,CAAP;AACH,GAFD,MAGK,IAAIhB,MAAM,CAACxkB,MAAP,GAAgBqZ,MAAM,CAACyK,SAA3B,EAAsC;AACvC0B,WAAO,CAACR,KAAD,EAAQ9V,KAAR,EAAesK,OAAf,CAAP;AACH;AACJ;AAEM,SAAS9R,MAAT,CAAgBvI,IAAhB,EAAsB;AAEzB,SAAO;AACHymB,SADG,iBACG1W,KADH,EACUsK,OADV,EACmB;AAClB,aAAOyL,GAAG,CAAC,OAAD,EAAa9lB,IAAb,SAAqB+P,KAArB,EAA8BsK,OAA9B,CAAV;AACH,KAHE;AAKHD,QALG,gBAKErK,KALF,EAKSsK,OALT,EAKkB;AACjB,aAAOyL,GAAG,CAAC,MAAD,EAAY9lB,IAAZ,SAAoB+P,KAApB,EAA6BsK,OAA7B,CAAV;AACH,KAPE;AASH1D,QATG,gBASE5G,KATF,EASSsK,OATT,EASkB;AACjB,aAAOyL,GAAG,CAAC,MAAD,EAAY9lB,IAAZ,SAAoB+P,KAApB,EAA6BsK,OAA7B,CAAV;AACH,KAXE;AAaHtY,SAbG,iBAaGgO,KAbH,EAaUsK,OAbV,EAamB;AAClB,aAAOyL,GAAG,CAAC,OAAD,EAAa9lB,IAAb,SAAqB+P,KAArB,EAA8BsK,OAA9B,CAAV;AACH,KAfE;AAiBHqM,SAjBG,iBAiBGrM,OAjBH,EAiBY;AACX,aAAOqM,MAAK,CAACrM,OAAD,CAAZ;AACH,KAnBE;AAqBH1V,SArBG,mBAqBK;AACJ,aAAOA,MAAK,EAAZ;AACH;AAvBE,GAAP;AAyBH;AAEM,SAAS8hB,KAAT,CAAe1W,KAAf,EAAsBsK,OAAtB,EAA+B;AAClC,SAAOyL,GAAG,CAAC,OAAD,EAAU/V,KAAV,EAAiBsK,OAAjB,CAAV;AACH;AAEM,SAASD,IAAT,CAAcrK,KAAd,EAAqBsK,OAArB,EAA8B;AACjC,SAAOyL,GAAG,CAAC,MAAD,EAAS/V,KAAT,EAAgBsK,OAAhB,CAAV;AACH;AAEM,SAAS1D,IAAT,CAAc5G,KAAd,EAAqBsK,OAArB,EAA8B;AACjC,SAAOyL,GAAG,CAAC,MAAD,EAAS/V,KAAT,EAAgBsK,OAAhB,CAAV;AACH;AAEM,SAAStY,KAAT,CAAegO,KAAf,EAAsBsK,OAAtB,EAA+B;AAClC,SAAOyL,GAAG,CAAC,OAAD,EAAU/V,KAAV,EAAiBsK,OAAjB,CAAV;AACH;;AAEM,SAASqM,MAAT,CAAerM,OAAf,EAAwB;AAE3B,MAAI,OAAOza,MAAP,KAAkB,WAAtB,EAAmC;AAC/B;AACH;;AAED,MAAIya,OAAJ,EAAa;AAET,QAAI;AACApU,UAAI,CAACC,SAAL,CAAemU,OAAf;AACH,KAFD,CAEE,OAAOla,GAAP,EAAY;AACV;AACH;;AANQ,4BAQW6jB,gBARX,gBAQ6B;AAAjC,UAAIG,OAAO,GAAIH,gBAAJ,KAAX;;AACD,UAAI;AACA3e,cAAM,CAACgV,OAAD,EAAU8J,OAAO,CAAC9J,OAAD,CAAjB,EAA4B,KAA5B,CAAN;AACH,OAFD,CAEE,OAAOla,GAAP,EAAY;AACVuW,eAAO,CAAC3U,KAAR,CAAc,mCAAd,EAAmD5B,GAAG,CAAC+B,KAAJ,IAAa/B,GAAG,CAACJ,QAAJ,EAAhE;AACH;AACJ;;AAED6lB,SAAK,CAAC,OAAD,EAAU,UAAV,EAAsBvL,OAAtB,CAAL;AAEAiL,YAAQ,CAAC7kB,IAAT,CAAc4Z,OAAd;AACH;AACJ;;;;ACrQD;AACA;AACA;AACA;AAEA,IAAIsM,iBAAiB,GAAG/mB,MAAM,IAC1BA,MAAM,CAACgnB,WADa,IAEpBA,WAAW,CAACJ,GAFQ,IAGpBI,WAAW,CAACC,MAHQ,IAIpBD,WAAW,CAACC,MAAZ,CAAmBC,UAJC,IAKpBF,WAAW,CAACC,MAAZ,CAAmBE,eALC,IAMnBlhB,IAAI,CAAC2M,GAAL,CAASoU,WAAW,CAACJ,GAAZ,KAAoBD,IAAI,CAACC,GAAL,EAA7B,IAA2C,IANxB,IAOnBI,WAAW,CAACJ,GAAZ,MAAqBI,WAAW,CAACC,MAAZ,CAAmBC,UAAnB,GAAgCF,WAAW,CAACC,MAAZ,CAAmBE,eAAxE,CAAD,GAA6F,CAPjG;AAUO,SAASP,GAAT,GAAe;AAClB,MAAIG,iBAAJ,EAAuB;AACnB,WAAOC,WAAW,CAACJ,GAAZ,EAAP;AACH,GAFD,MAEO;AACH,WAAOD,IAAI,CAACC,GAAL,EAAP;AACH;AACJ;;AAED,SAASrV,KAAT,CAAe6V,SAAf,EAA0B;AACtBA,WAAS,GAAGA,SAAS,KAAK7jB,SAAd,GAA0B6jB,SAA1B,GAAsCR,GAAG,EAArD;AAEA,SAAO;AACHQ,aAAS,EAATA,SADG;AAGHC,WAHG,qBAGO;AACN,aAAOhO,QAAQ,CAACuN,GAAG,KAAKQ,SAAT,EAAoB,EAApB,CAAf;AACH,KALE;AAOH7U,SAPG,mBAOK;AACJ6U,eAAS,GAAGR,GAAG,EAAf;AACH;AATE,GAAP;AAWH;;AAEM,SAASU,eAAT,GAA2B;AAC9B,MAAIP,iBAAJ,EAAuB;AACnB,QAAIE,MAAM,GAAGjnB,MAAM,CAACgnB,WAAP,CAAmBC,MAAhC;AACA,WAAO5N,QAAQ,CAAC4N,MAAM,CAACC,UAAP,GAAoBD,MAAM,CAACE,eAA5B,EAA6C,EAA7C,CAAf;AACH;AACJ;AAEM,IAAII,WAAW,GAAGhW,KAAK,EAAvB;AACA,IAAIiW,QAAQ,GAAGjW,KAAK,CAAC+V,eAAe,EAAhB,CAApB;AAEA,SAASG,aAAT,GAAyB;AAE5B,MAAIC,cAAc,GAAGnW,KAAK,EAA1B;AACA,MAAIoW,cAAc,GAAG,CAArB;AAEA1gB,cAAY,CAAC,YAAM;AAEf,QAAIqT,MAAM,CAACsN,qBAAP,IAAiCD,cAAc,GAAGrN,MAAM,CAACsN,qBAA7D,EAAqF;AACjF;AACH;;AAEDD,kBAAc,IAAI,CAAlB;AAEA,QAAIN,OAAO,GAAGK,cAAc,CAACL,OAAf,EAAd;AACA,QAAIQ,GAAG,GAAGR,OAAO,GAAG/M,MAAM,CAAC6K,iBAA3B;AAEA,QAAI2C,gBAAgB,GAAG;AACnB5jB,WAAK,EAAEyjB,cADY;AAEnBN,aAAO,EAAPA;AAFmB,KAAvB;;AAKA,QAAI/M,MAAM,CAAC8K,gBAAX,EAA6B;AACzB0C,sBAAgB,CAACD,GAAjB,GAAuBA,GAAvB;;AAEA,UAAIA,GAAG,IAAIvN,MAAM,CAAC+K,yBAAlB,EAA6C;AACzC7K,YAAI,CAAC,SAAD,EAAYsN,gBAAZ,EAA8B;AAC9BC,mBAAS,EAAE,CAACzN,MAAM,CAAC4K;AADW,SAA9B,CAAJ;AAGH;AACJ;;AAED1K,QAAI,CAAC,WAAD,EAAcsN,gBAAd,EAAgC;AAChCC,eAAS,EAAE,CAACzN,MAAM,CAAC4K;AADa,KAAhC,CAAJ;AAIH,GA9BW,EA8BT5K,MAAM,CAAC6K,iBA9BE,CAAZ;AA+BH;AAEM,SAAS6C,eAAT,GAA2B;AAE9B,MAAI,CAACjB,iBAAL,EAAwB;AACpB,WAAOvM,IAAI,CAAC,qBAAD,CAAX;AACH;;AAED8J,mBAAiB,CAAC,YAAM;AAEpB,QAAI7J,OAAO,GAAG,EAAd;AAEAA,WAAO,CAACwN,cAAR,GAAyBV,WAAW,CAACF,OAAZ,EAAzB;;AAEA,QAAIN,iBAAJ,EAAuB;AACnBtM,aAAO,CAACyN,WAAR,GAAsBV,QAAQ,CAACH,OAAT,EAAtB;AACH;;AAED,WAAO5M,OAAP;AACH,GAXgB,CAAjB;AAaAqJ,eAAa,GAAGxjB,IAAhB,CAAqB,YAAM;AAEvB,QAAIgE,IAAI,GAAG,CACP,YADO,EACO,cADP,EACuB,aADvB,EACsC,0BADtC,EAEP,4BAFO,EAEuB,gBAFvB,EAEyC,YAFzC,EAEuD,iBAFvD,EAGP,mBAHO,EAGc,YAHd,EAG4B,cAH5B,EAG4C,gBAH5C,EAG8D,iBAH9D,EAIP,aAJO,EAIQ,eAJR,EAIyB,cAJzB,EAIyC,aAJzC,EAIwD,eAJxD,EAKP,uBALO,EAKkB,gBALlB,EAKoC,kBALpC,CAAX;AAQA,QAAI2iB,MAAM,GAAG,EAAb;AAEA3iB,QAAI,CAAC6jB,OAAL,CAAa,UAAA3jB,GAAG,EAAI;AAChByiB,YAAM,CAACziB,GAAD,CAAN,GAAc6U,QAAQ,CAACrZ,MAAM,CAACgnB,WAAP,CAAmBC,MAAnB,CAA0BziB,GAA1B,CAAD,EAAiC,EAAjC,CAAR,IAAgD,CAA9D;AACH,KAFD;AAIA,QAAI4jB,MAAM,GAAGnB,MAAM,CAACC,UAAP,GAAoBD,MAAM,CAACE,eAAxC;;AAEA,QAAIF,MAAM,CAACC,UAAX,EAAuB;AACnBrkB,YAAM,CAACyB,IAAP,CAAY2iB,MAAZ,EAAoBkB,OAApB,CAA4B,UAAA/nB,IAAI,EAAI;AAChC,YAAIwD,IAAI,GAAGqjB,MAAM,CAAC7mB,IAAD,CAAjB;;AACA,YAAIwD,IAAJ,EAAU;AACN4W,cAAI,aAAWpa,IAAX,EAAmB;AACnB6nB,0BAAc,EAAE5O,QAAQ,CAACzV,IAAI,GAAGqjB,MAAM,CAACC,UAAd,IAA4BK,WAAW,CAACH,SAAZ,GAAwBgB,MAApD,CAAD,EAA8D,EAA9D,CADL;AAEnBF,uBAAW,EAAE7O,QAAQ,CAACzV,IAAI,GAAGqjB,MAAM,CAACC,UAAf,EAA2B,EAA3B;AAFF,WAAnB,CAAJ;AAIH;AACJ,OARD;AASH;;AAED1M,QAAI,CAAC,QAAD,EAAWyM,MAAX,CAAJ;AACAzM,QAAI,CAAC,QAAD,EAAWxa,MAAM,CAACgnB,WAAP,CAAmBqB,MAA9B,CAAJ;AACA7N,QAAI,CAAC,YAAD,EAAexa,MAAM,CAACgnB,WAAP,CAAmBsB,UAAlC,CAAJ;;AAEA,QAAItoB,MAAM,CAACgnB,WAAP,CAAmBuB,UAAvB,EAAmC;AAC/BvoB,YAAM,CAACgnB,WAAP,CAAmBuB,UAAnB,GAAgCJ,OAAhC,CAAwC,UAAAK,QAAQ,EAAI;AAChD,YAAI,CAAC,MAAD,EAAS,QAAT,EAAmB,KAAnB,EAA0B,KAA1B,EAAiC5nB,OAAjC,CAAyC4nB,QAAQ,CAACC,aAAlD,IAAmE,CAAC,CAAxE,EAA2E;AACvEjO,cAAI,CAACgO,QAAQ,CAACC,aAAV,EAAyBD,QAAzB,CAAJ;AACH;AACJ,OAJD;AAKH;AACJ,GAzCD;AA0CH,C;;ACpJD;AACA;AACA;AACA;AAEA,IAAIE,SAAS,GAAG,KAAhB;AAEO,SAASC,IAAT,CAAcC,IAAd,EAAoB;AACvBnjB,QAAM,CAAC6U,MAAD,EAASsO,IAAI,IAAI,EAAjB,CAAN;;AAEA,MAAIF,SAAJ,EAAe;AACX;AACH;;AAEDA,WAAS,GAAG,IAAZ;;AAEA,MAAIpO,MAAM,CAACkL,cAAX,EAA2B;AACvBwC,mBAAe;AAClB;;AAED,MAAI1N,MAAM,CAAC2K,SAAX,EAAsB;AAClBwC,iBAAa;AAChB;;AAED,MAAInN,MAAM,CAACiL,SAAX,EAAsB;AAClBvlB,UAAM,CAACyP,gBAAP,CAAwB,cAAxB,EAAwC,YAAM;AAC1C+K,UAAI,CAAC,qBAAD,CAAJ;AACA4L,oBAAc,CAAC;AAAE9C,qBAAa,EAAE;AAAjB,OAAD,CAAd;AACH,KAHD;AAKAtjB,UAAM,CAACyP,gBAAP,CAAwB,QAAxB,EAAkC,YAAM;AACpC+K,UAAI,CAAC,eAAD,CAAJ;AACA4L,oBAAc,CAAC;AAAE9C,qBAAa,EAAE;AAAjB,OAAD,CAAd;AACH,KAHD;AAIH;;AAED,MAAIhJ,MAAM,CAACuK,aAAX,EAA0B;AACtB/X,eAAW,CAAC/H,MAAD,EAAQuV,MAAM,CAACuK,aAAf,CAAX;AACH;;AAED,MAAI7kB,MAAM,CAAC6oB,cAAX,EAA2B;AACvB7oB,UAAM,CAAC6oB,cAAP,CAAsBV,OAAtB,CAA8B,UAAA1N,OAAO,EAAI;AACrCyL,SAAG,CAACzL,OAAO,CAACwL,KAAT,EAAgBxL,OAAO,CAACtK,KAAxB,EAA+BsK,OAA/B,CAAH;AACH,KAFD;AAGA,WAAOza,MAAM,CAAC6oB,cAAd;AACH;AACJ,C;;AC9CD;AACA;AACA;AACA;AACA;AAEA,IAAIC,QAAQ,GAAGhjB,QAAQ,EAAvB;AACA,IAAIijB,MAAM,GAAGjjB,QAAQ,EAArB;AAEA,IAAIkjB,YAAY,GAAG1O,MAAM,CAACsK,kBAA1B;AACA,IAAIwC,SAAJ;AAEO,SAAS6B,eAAT,GAA2B;AAC9B7B,WAAS,GAAGR,GAAG,EAAf;AACH;AAEM,SAASsC,aAAT,CAAuBC,OAAvB,EAAgC;AACnC/B,WAAS,GAAGA,SAAS,IAAIE,eAAe,EAAxC;AAEA,MAAI8B,WAAW,GAAGxC,GAAG,EAArB;AACA,MAAIyC,WAAJ;;AAEA,MAAIjC,SAAS,KAAK7jB,SAAlB,EAA6B;AACzB8lB,eAAW,GAAGhQ,QAAQ,CAAC+P,WAAW,GAAGhC,SAAf,EAA0B,CAA1B,CAAtB;AACH;;AAED,MAAIkC,cAAc,mBAAiBN,YAAjB,YAAoCG,OAAtD;AAEA3O,MAAI,CAAC8O,cAAD,EAAiB;AACjBC,YAAQ,EAAEF;AADO,GAAjB,CAAJ;AAIAvC,QAAK,CAAC;AACF0C,cAAU,EAAEF,cADV;AAEFG,mBAAe,EAAEJ;AAFf,GAAD,CAAL;AAKAjD,gBAAc;AAEdgB,WAAS,GAAGgC,WAAZ;AACAJ,cAAY,GAAGG,OAAf;AACAJ,QAAM,GAAGjjB,QAAQ,EAAjB;AACH;AAEM,SAAS0jB,UAAT,CAAoBL,OAApB,EAA6B;AAChCF,iBAAe;AACfC,eAAa,CAACC,OAAD,CAAb;AACH;AAED7E,iBAAiB,CAAC,YAAM;AACpB,SAAO;AACHwE,YAAQ,EAARA,QADG;AAEHC,UAAM,EAANA;AAFG,GAAP;AAIH,CALgB,CAAjB;AAOAvE,cAAc,CAAC,YAAM;AACjB,SAAO;AACH3I,SAAK,UAAQmN;AADV,GAAP;AAGH,CAJa,CAAd,C;;ACxDA;AACA;AACA;AACA;;;ACHA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACeU,oEAAf,E;;;;;;;;;ACDO,SAASC,OAAT,CAAiB7pB,IAAjB,EAAyC;AAC5C,SAAO+C,MAAM,CAACC,SAAP,CAAiB3C,QAAjB,CAA0BE,IAA1B,CAA+BP,IAA/B,MAAyC,iBAAhD;AACH,C,CAED;;AACO,SAAS+K,IAAT,GAAsC,CACzC;AACH,C;;ACPM,IAAM+e,QAAQ,GAAG;AACpBC,MAAI,EAAI,OADY;AAEpBC,MAAI,EAAI,OAFY;AAGpBC,OAAK,EAAG;AAHY,CAAjB;AAMA,IAAMC,QAAQ,GAAG,GAAjB;AAEA,IAAMC,WAAW,GAAG;AACvBt5B,QAAM,EAAG,QADc;AAEvBu5B,OAAK,EAAI;AAFc,CAApB,C;;ACTP;AAEA;AAEA;AAEA,IAAIC,mBAAmB,GAAG,kCAA1B;AAEO,SAASC,cAAT,CAAwB5c,GAAxB,EAAuE;AAAA,MAA/CA,GAA+C;AAA/CA,OAA+C,GAAlBxN,MAAkB;AAAA;;AAC1E,SAAOwN,GAAG,CAACQ,QAAJ,CAAawQ,QAAb,KAA0BoL,QAAQ,CAACE,IAA1C;AACH;AAEM,SAASO,eAAT,CAAyB7c,GAAzB,EAAwE;AAAA,MAA/CA,GAA+C;AAA/CA,OAA+C,GAAlBxN,MAAkB;AAAA;;AAC3E,SAAOwN,GAAG,CAACQ,QAAJ,CAAawQ,QAAb,KAA0BoL,QAAQ,CAACG,KAA1C;AACH;AAEM,SAASO,SAAT,CAAmB9c,GAAnB,EAAmF;AAAA,MAAhEA,GAAgE;AAAhEA,OAAgE,GAAjCxN,MAAiC;AAAA;;AAEtF,MAAI,CAACwN,GAAL,EAAU;AACN;AACH;;AAED,MAAI;AACA,QAAIA,GAAG,CAAC+c,MAAJ,IAAc/c,GAAG,CAAC+c,MAAJ,KAAe/c,GAAjC,EAAsC;AAClC,aAAOA,GAAG,CAAC+c,MAAX;AACH;AACJ,GAJD,CAIE,OAAOhqB,GAAP,EAAY,CACV;AACH;AACJ;AAEM,SAASiqB,SAAT,CAAmBhd,GAAnB,EAAmF;AAAA,MAAhEA,GAAgE;AAAhEA,OAAgE,GAAjCxN,MAAiC;AAAA;;AAEtF,MAAI,CAACwN,GAAL,EAAU;AACN;AACH,GAJqF,CAMtF;;;AACA,MAAI8c,SAAS,CAAC9c,GAAD,CAAb,EAAoB;AAChB;AACH;;AAED,MAAI;AACA,WAAOA,GAAG,CAACid,MAAX;AACH,GAFD,CAEE,OAAOlqB,GAAP,EAAY,CACV;AACH;AACJ;AAEM,SAASmqB,iBAAT,CAA2Bld,GAA3B,EAAyF;AAC5F,MAAI;AACA;AACA3C,QAAI,CAAC2C,GAAG,IAAIA,GAAG,CAACQ,QAAX,IAAuBR,GAAG,CAACQ,QAAJ,CAAa2c,IAArC,CAAJ;AACA,WAAO,IAAP;AACH,GAJD,CAIE,OAAOpqB,GAAP,EAAY,CACV;AACH;;AAED,SAAO,KAAP;AACH;AAEM,SAASqqB,eAAT,CAAyBpd,GAAzB,EAAwE;AAAA,MAA/CA,GAA+C;AAA/CA,OAA+C,GAAjBxN,MAAiB;AAAA;;AAE3E,MAAIgO,QAAQ,GAAGR,GAAG,CAACQ,QAAnB;;AAEA,MAAI,CAACA,QAAL,EAAe;AACX,UAAM,IAAIrL,KAAJ,gCAAN;AACH;;AAED,MAAI6b,QAAQ,GAAGxQ,QAAQ,CAACwQ,QAAxB;;AAEA,MAAI,CAACA,QAAL,EAAe;AACX,UAAM,IAAI7b,KAAJ,gCAAN;AACH;;AAED,MAAI6b,QAAQ,KAAKoL,QAAQ,CAACE,IAA1B,EAAgC;AAC5B,WAAWF,QAAQ,CAACE,IAApB;AACH;;AAED,MAAItL,QAAQ,KAAKoL,QAAQ,CAACG,KAA1B,EAAiC;AAE7B,QAAIQ,MAAM,GAAGD,SAAS,CAAC9c,GAAD,CAAtB;;AACA,QAAI+c,MAAM,IAAIG,iBAAiB,CAACH,MAAD,CAA/B,EAAyC;AACrC;AACA,aAAOK,eAAe,CAACL,MAAD,CAAtB;AACH;;AAED,WAAWX,QAAQ,CAACG,KAApB;AACH;;AAED,MAAI3O,IAAI,GAAGpN,QAAQ,CAACoN,IAApB;;AAEA,MAAI,CAACA,IAAL,EAAW;AACP,UAAM,IAAIzY,KAAJ,4BAAN;AACH;;AAED,SAAW6b,QAAX,UAA0BpD,IAA1B;AACH;AAEM,SAASyP,SAAT,CAAmBrd,GAAnB,EAAkE;AAAA,MAA/CA,GAA+C;AAA/CA,OAA+C,GAAjBxN,MAAiB;AAAA;;AAErE,MAAI8e,MAAM,GAAG8L,eAAe,CAACpd,GAAD,CAA5B;;AAEA,MAAIsR,MAAM,IAAItR,GAAG,CAACsd,UAAd,IAA4Btd,GAAG,CAACsd,UAAJ,CAAelqB,OAAf,CAAuBgpB,QAAQ,CAACC,IAAhC,MAA0C,CAA1E,EAA6E;AACzE,WAAOrc,GAAG,CAACsd,UAAX;AACH;;AAED,SAAOhM,MAAP;AACH;AAEM,SAASiM,aAAT,CAAuBvd,GAAvB,EAA8D;AACjE,MAAI;AACA;AACA,QAAI,CAACA,GAAG,CAACQ,QAAJ,CAAa2c,IAAlB,EAAwB;AACpB,aAAO,IAAP;AACH;;AAED,QAAInd,GAAG,CAACQ,QAAJ,CAAa2c,IAAb,KAAsB,aAA1B,EAAyC;AACrC,aAAO,IAAP;AACH;AACJ,GATD,CASE,OAAOpqB,GAAP,EAAY,CACV;AACH;;AAED,SAAO,KAAP;AACH;AAEM,SAASyqB,oBAAT,CAA8Bxd,GAA9B,EAAqE;AAExE,MAAI;AACA,QAAIA,GAAG,KAAKxN,MAAZ,EAAoB;AAChB,aAAO,IAAP;AACH;AAEJ,GALD,CAKE,OAAOO,GAAP,EAAY,CACV;AACH;;AAED,MAAI;AACA,QAAI0qB,IAAI,GAAGpoB,MAAM,CAAC4F,wBAAP,CAAgC+E,GAAhC,EAAqC,UAArC,CAAX;;AAEA,QAAIyd,IAAI,IAAIA,IAAI,CAACljB,UAAL,KAAoB,KAAhC,EAAuC;AACnC,aAAO,KAAP;AACH;AAEJ,GAPD,CAOE,OAAOxH,GAAP,EAAY,CACV;AACH;;AAED,MAAI;AACA;AACA,QAAI8pB,eAAe,CAAC7c,GAAD,CAAf,IAAwBkd,iBAAiB,CAACld,GAAD,CAA7C,EAAoD;AAChD,aAAO,IAAP;AACH;AACJ,GALD,CAKE,OAAOjN,GAAP,EAAY,CACV;AACH;;AAED,MAAI;AACA;AACA,QAAIqqB,eAAe,CAACpd,GAAD,CAAf,KAAyBod,eAAe,CAAC5qB,MAAD,CAA5C,EAAsD;AAClD,aAAO,IAAP;AACH;AAEJ,GAND,CAME,OAAOO,GAAP,EAAY,CACV;AACH;;AAED,SAAO,KAAP;AACH;AAEM,SAASua,YAAT,CAAsBtN,GAAtB,EAAoF;AAEvF,MAAI,CAACwd,oBAAoB,CAACxd,GAAD,CAAzB,EAAgC;AAC5B,WAAO,KAAP;AACH;;AAED,MAAI;AAEA,QAAIA,GAAG,KAAKxN,MAAZ,EAAoB;AAChB,aAAO,IAAP;AACH,KAJD,CAMA;;;AACA,QAAIqqB,eAAe,CAAC7c,GAAD,CAAf,IAAwBkd,iBAAiB,CAACld,GAAD,CAA7C,EAAoD;AAChD,aAAO,IAAP;AACH,KATD,CAWA;;;AACA,QAAIqd,SAAS,CAAC7qB,MAAD,CAAT,KAAsB6qB,SAAS,CAACrd,GAAD,CAAnC,EAA0C;AACtC,aAAO,IAAP;AACH;AAEJ,GAhBD,CAgBE,OAAOjN,GAAP,EAAY,CACV;AACH;;AAED,SAAO,KAAP;AACH;AAGM,SAAS2qB,gBAAT,CAA0B1d,GAA1B,EAAqG;AACxG,MAAI,CAACsN,YAAY,CAACtN,GAAD,CAAjB,EAAwB;AACpB,UAAM,IAAI7K,KAAJ,qCAAN;AACH,GAHuG,CAKxG;;;AACA,SAAO6K,GAAP;AACH;AAEM,SAAS2d,UAAT,CAAoB3d,GAApB,EAAgF;AAEnF,MAAIjL,MAAM,GAAG,EAAb;;AAEA,MAAI;AAEA,WAAOiL,GAAG,CAAC+c,MAAJ,KAAe/c,GAAtB,EAA2B;AACvBjL,YAAM,CAAC1B,IAAP,CAAY2M,GAAG,CAAC+c,MAAhB;AACA/c,SAAG,GAAGA,GAAG,CAAC+c,MAAV;AACH;AAEJ,GAPD,CAOE,OAAOhqB,GAAP,EAAY,CACV;AACH;;AAED,SAAOgC,MAAP;AACH;AAEM,SAAS6oB,gBAAT,CAA0Bb,MAA1B,EAA0DtiB,KAA1D,EAAmG;AAEtG,MAAI,CAACsiB,MAAD,IAAW,CAACtiB,KAAhB,EAAuB;AACnB,WAAO,KAAP;AACH;;AAED,MAAIojB,WAAW,GAAGf,SAAS,CAACriB,KAAD,CAA3B;;AAEA,MAAIojB,WAAJ,EAAiB;AACb,WAAOA,WAAW,KAAKd,MAAvB;AACH;;AAED,MAAIY,UAAU,CAACljB,KAAD,CAAV,CAAkBrH,OAAlB,CAA0B2pB,MAA1B,MAAsC,CAAC,CAA3C,EAA8C;AAC1C,WAAO,IAAP;AACH;;AAED,SAAO,KAAP;AACH;AAEM,SAASe,SAAT,CAAmB9d,GAAnB,EAA+E;AAElF,MAAIjL,MAAM,GAAG,EAAb;AAEA,MAAIgpB,MAAJ;;AAEA,MAAI;AACAA,UAAM,GAAG/d,GAAG,CAAC+d,MAAb;AACH,GAFD,CAEE,OAAOhrB,GAAP,EAAY;AACVgrB,UAAM,GAAG/d,GAAT;AACH;;AAED,MAAI/F,GAAJ;;AAEA,MAAI;AACAA,OAAG,GAAG8jB,MAAM,CAACtqB,MAAb;AACH,GAFD,CAEE,OAAOV,GAAP,EAAY,CACV;AACH;;AAED,MAAIkH,GAAG,KAAK,CAAZ,EAAe;AACX,WAAOlF,MAAP;AACH;;AAED,MAAIkF,GAAJ,EAAS;AACL,SAAK,IAAItE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGsE,GAApB,EAAyBtE,CAAC,EAA1B,EAA8B;AAE1B,UAAIoM,KAAK,SAAT;;AAEA,UAAI;AACAA,aAAK,GAAGgc,MAAM,CAACpoB,CAAD,CAAd;AACH,OAFD,CAEE,OAAO5C,GAAP,EAAY;AACV;AACH;;AAEDgC,YAAM,CAAC1B,IAAP,CAAY0O,KAAZ;AACH;;AAED,WAAOhN,MAAP;AACH;;AAED,OAAK,IAAIY,EAAC,GAAG,CAAb,EAAgBA,EAAC,GAAG,GAApB,EAAyBA,EAAC,EAA1B,EAA8B;AAC1B,QAAIoM,MAAK,SAAT;;AAEA,QAAI;AACAA,YAAK,GAAGgc,MAAM,CAACpoB,EAAD,CAAd;AACH,KAFD,CAEE,OAAO5C,GAAP,EAAY;AACV,aAAOgC,MAAP;AACH;;AAED,QAAI,CAACgN,MAAL,EAAY;AACR,aAAOhN,MAAP;AACH;;AAEDA,UAAM,CAAC1B,IAAP,CAAY0O,MAAZ;AACH;;AAED,SAAOhN,MAAP;AACH;AAGM,SAASipB,iBAAT,CAA2Bhe,GAA3B,EAAuF;AAE1F,MAAIjL,MAAM,GAAG,EAAb;;AAF0F,kCAIxE+oB,SAAS,CAAC9d,GAAD,CAJ+D,mCAIxD;AAA7B,QAAI+B,KAAK,mBAAT;AACDhN,UAAM,CAAC1B,IAAP,CAAY0O,KAAZ;;AAD8B,4CAGPic,iBAAiB,CAACjc,KAAD,CAHV,2CAGmB;AAA5C,UAAIkc,UAAU,2BAAd;AACDlpB,YAAM,CAAC1B,IAAP,CAAY4qB,UAAZ;AACH;AACJ;;AAED,SAAOlpB,MAAP;AACH;AAEM,SAASmpB,MAAT,CAAgBle,GAAhB,EAAgF;AAAA,MAAhEA,GAAgE;AAAhEA,OAAgE,GAAjCxN,MAAiC;AAAA;;AAEnF,MAAI;AACA,QAAIwN,GAAG,CAACgE,GAAR,EAAa;AACT,aAAOhE,GAAG,CAACgE,GAAX;AACH;AACJ,GAJD,CAIE,OAAOjR,GAAP,EAAY,CACV;AACH;;AAED,MAAI+pB,SAAS,CAAC9c,GAAD,CAAT,KAAmBA,GAAvB,EAA4B;AACxB,WAAOA,GAAP;AACH;;AAED,MAAI;AACA,QAAI4d,gBAAgB,CAACprB,MAAD,EAASwN,GAAT,CAAhB,IAAiCxN,MAAM,CAACwR,GAA5C,EAAiD;AAC7C,aAAOxR,MAAM,CAACwR,GAAd;AACH;AACJ,GAJD,CAIE,OAAOjR,GAAP,EAAY,CACV;AACH;;AAED,MAAI;AACA,QAAI6qB,gBAAgB,CAAC5d,GAAD,EAAMxN,MAAN,CAAhB,IAAiCA,MAAM,CAACwR,GAA5C,EAAiD;AAC7C,aAAOxR,MAAM,CAACwR,GAAd;AACH;AACJ,GAJD,CAIE,OAAOjR,GAAP,EAAY,CACV;AACH;;AA5BkF,0CA8BjEirB,iBAAiB,CAAChe,GAAD,CA9BgD,2CA8BzC;AAArC,QAAI+B,KAAK,2BAAT;;AACD,QAAI;AACA,UAAIA,KAAK,CAACiC,GAAV,EAAe;AACX,eAAOjC,KAAK,CAACiC,GAAb;AACH;AACJ,KAJD,CAIE,OAAOjR,GAAP,EAAY,CACV;AACH;;AAED,QAAI+pB,SAAS,CAAC/a,KAAD,CAAT,KAAqBA,KAAzB,EAAgC;AAC5B,aAAOA,KAAP;AACH;AACJ;AACJ;AAEM,SAASoc,aAAT,CAAuBne,GAAvB,EAAuF;AAAA,MAAhEA,GAAgE;AAAhEA,OAAgE,GAAjCxN,MAAiC;AAAA;;AAC1F,SAAOwqB,SAAS,CAACkB,MAAM,CAACle,GAAD,CAAN,IAAeA,GAAhB,CAAhB;AACH;AAEM,SAASoe,cAAT,CAAwBpe,GAAxB,EAAuF;AAAA,MAA/DA,GAA+D;AAA/DA,OAA+D,GAAhCxN,MAAgC;AAAA;;AAC1F,MAAIyqB,MAAM,GAAGkB,aAAa,CAACne,GAAD,CAA1B;;AAEA,MAAIid,MAAJ,EAAY;AACR,WAAOmB,cAAc,CAACnB,MAAD,CAArB;AACH;;AAED,SAAOjZ,GAAP;AACH;AAEM,SAASqa,oBAAT,CAA8Bre,GAA9B,EAA0F;AAC7F,MAAIgE,GAAG,GAAGka,MAAM,CAACle,GAAD,CAAhB;;AAEA,MAAI,CAACgE,GAAL,EAAU;AACN,UAAM,IAAI7O,KAAJ,gCAAN;AACH;;AAED,mBAAY6oB,iBAAiB,CAACha,GAAD,CAA7B,GAAoCA,GAApC;AACH;AAEM,SAASsa,aAAT,CAAuBte,GAAvB,EAAsG;AAAA,MAA/EA,GAA+E;AAA/EA,OAA+E,GAAhDxN,MAAgD;AAAA;;AACzG,MAAIurB,MAAM,GAAGM,oBAAoB,CAACre,GAAD,CAAjC;AACA,MAAIid,MAAM,GAAGkB,aAAa,CAACne,GAAD,CAA1B;;AAEA,MAAIid,MAAJ,EAAY;AACR,qBAAYqB,aAAa,CAACrB,MAAD,CAAzB,EAAsCc,MAAtC;AACH,GAFD,MAEO;AACH,WAAOA,MAAP;AACH;AACJ;AAEM,SAASQ,KAAT,CAAeve,GAAf,EAAsD;AACzD,SAAOA,GAAG,KAAKke,MAAM,CAACle,GAAD,CAArB;AACH;AAEM,SAASwe,mBAAT,CAA6Bzc,KAA7B,EAAkE;AAErE,MAAI,CAACA,KAAK,CAACJ,aAAX,EAA0B;AACtB,WAAO,IAAP;AACH;;AAED,MAAI,CAACI,KAAK,CAAC6G,UAAX,EAAuB;AACnB,WAAO,IAAP;AACH;;AAED,MAAI1H,GAAG,GAAGa,KAAK,CAACrD,aAAhB;;AAEA,MAAIwC,GAAG,IAAIA,GAAG,CAACL,eAAX,IAA8B,CAACK,GAAG,CAACL,eAAJ,CAAoB4d,QAApB,CAA6B1c,KAA7B,CAAnC,EAAwE;AACpE,WAAO,IAAP;AACH;;AAED,SAAO,KAAP;AACH;;AAED,SAAS2c,WAAT,CAAwBC,UAAxB,EAA+CrsB,IAA/C,EAAkE;AAC9D,OAAK,IAAIqD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgpB,UAAU,CAAClrB,MAA/B,EAAuCkC,CAAC,EAAxC,EAA4C;AAExC,QAAI;AACA,UAAIgpB,UAAU,CAAChpB,CAAD,CAAV,KAAkBrD,IAAtB,EAA4B;AACxB,eAAOqD,CAAP;AACH;AACJ,KAJD,CAIE,OAAO5C,GAAP,EAAY,CACV;AACH;AACJ;;AAED,SAAO,CAAC,CAAR;AACH;;AAED,IAAI6rB,aAAa,GAAG,EAApB;AACA,IAAIC,YAAY,GAAG,EAAnB;AAEO,SAAS1e,cAAT,CAAwBH,GAAxB,EAAqD8e,SAArD,EAA2F;AAAA,MAAtCA,SAAsC;AAAtCA,aAAsC,GAAhB,IAAgB;AAAA;;AAE9F,MAAI;AACA,QAAI9e,GAAG,KAAKxN,MAAZ,EAAoB;AAChB,aAAO,KAAP;AACH;AACJ,GAJD,CAIE,OAAOO,GAAP,EAAY;AACV,WAAO,IAAP;AACH;;AAED,MAAI;AACA,QAAI,CAACiN,GAAL,EAAU;AACN,aAAO,IAAP;AACH;AAEJ,GALD,CAKE,OAAOjN,GAAP,EAAY;AACV,WAAO,IAAP;AACH;;AAED,MAAI;AACA,QAAIiN,GAAG,CAAC+e,MAAR,EAAgB;AACZ,aAAO,IAAP;AACH;AAEJ,GALD,CAKE,OAAOhsB,GAAP,EAAY;AAEV;AAEA,QAAIA,GAAG,IAAIA,GAAG,CAAC2J,OAAJ,KAAgBigB,mBAA3B,EAAgD;AAC5C,aAAO,KAAP;AACH;;AAED,WAAO,IAAP;AACH;;AAGD,MAAImC,SAAS,IAAIxR,YAAY,CAACtN,GAAD,CAA7B,EAAoC;AAChC,QAAI;AACA;AACA,UAAIA,GAAG,CAACgf,UAAR,EAAoB;AAChB,eAAO,IAAP;AACH;AACJ,KALD,CAKE,OAAOjsB,GAAP,EAAY,CACV;AACH;AACJ,GA7C6F,CA+C9F;;;AAEA,MAAI;AACA,QAAI,CAACiN,GAAG,CAAC+c,MAAL,IAAe,CAAC/c,GAAG,CAACgE,GAAxB,EAA6B;AACzB,aAAO,IAAP;AACH;AACJ,GAJD,CAIE,OAAOjR,GAAP,EAAY,CAEb,CAFC,CACE;AAGJ;AACA;;;AAEA,MAAI;AACAsK,QAAI,CAAC2C,GAAG,KAAKA,GAAT,CAAJ,CADA,CACmB;AACtB,GAFD,CAEE,OAAOjN,GAAP,EAAY;AACV,WAAO,IAAP;AACH,GAhE6F,CAkE9F;;;AAEA,MAAIksB,WAAW,GAAGP,WAAW,CAACE,aAAD,EAAgB5e,GAAhB,CAA7B;;AAEA,MAAIif,WAAW,KAAK,CAAC,CAArB,EAAwB;AACpB,QAAIld,KAAK,GAAG8c,YAAY,CAACI,WAAD,CAAxB;;AAEA,QAAIld,KAAK,IAAIyc,mBAAmB,CAACzc,KAAD,CAAhC,EAAyC;AACrC,aAAO,IAAP;AACH;AACJ;;AAED,SAAO,KAAP;AACH;;AAED,SAASmd,YAAT,GAAwB;AACpB,OAAK,IAAIvpB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGipB,aAAa,CAACnrB,MAAlC,EAA0CkC,CAAC,EAA3C,EAA+C;AAC3C,QAAIopB,MAAM,GAAG,KAAb;;AAEA,QAAI;AACAA,YAAM,GAAGH,aAAa,CAACjpB,CAAD,CAAb,CAAiBopB,MAA1B;AACH,KAFD,CAEE,OAAOhsB,GAAP,EAAY,CACV;AACH;;AAED,QAAIgsB,MAAJ,EAAY;AACRF,kBAAY,CAAChrB,MAAb,CAAoB8B,CAApB,EAAuB,CAAvB;AACAipB,mBAAa,CAAC/qB,MAAd,CAAqB8B,CAArB,EAAwB,CAAxB;AACH;AACJ;AACJ;;AAEM,SAASuM,eAAT,CAAyBH,KAAzB,EAAoD;AAEvDmd,cAAY;;AAEZ,MAAInd,KAAK,IAAIA,KAAK,CAACJ,aAAnB,EAAkC;AAC9B,QAAI;AACAid,mBAAa,CAACvrB,IAAd,CAAmB0O,KAAK,CAACJ,aAAzB;AACAkd,kBAAY,CAACxrB,IAAb,CAAkB0O,KAAlB;AACH,KAHD,CAGE,OAAOhP,GAAP,EAAY,CACV;AACH;AACJ;AACJ;AAEM,SAASosB,YAAT,CAAsBnf,GAAtB,EAA4D;AAC/DA,KAAG,GAAGA,GAAG,IAAIxN,MAAb;AACA,SAAOwN,GAAG,CAACyC,SAAJ,CAAc2c,aAAd,IAA+Bpf,GAAG,CAACyC,SAAJ,CAAcC,SAApD;AACH;AAGM,SAAS2c,cAAT,CAAwBrf,GAAxB,EAAqDpN,IAArD,EAA6F;AAEhG,MAAI0sB,SAAS,GAAGxB,SAAS,CAAC9d,GAAD,CAAzB;;AAFgG,0BAIzEsf,SAJyE,gBAI9D;AAA7B,QAAIrB,UAAU,GAAIqB,SAAJ,KAAd;;AACD,QAAI;AACA;AACA,UAAIhS,YAAY,CAAC2Q,UAAD,CAAZ,IAA4BA,UAAU,CAACrrB,IAAX,KAAoBA,IAAhD,IAAwD0sB,SAAS,CAAClsB,OAAV,CAAkB6qB,UAAlB,MAAkC,CAAC,CAA/F,EAAkG;AAC9F,eAAOA,UAAP;AACH;AACJ,KALD,CAKE,OAAOlrB,GAAP,EAAY,CACV;AACH;AACJ;;AAED,MAAI;AACA;AACA,QAAIusB,SAAS,CAAClsB,OAAV,CAAkB4M,GAAG,CAAC+d,MAAJ,CAAWnrB,IAAX,CAAlB,MAAwC,CAAC,CAA7C,EAAgD;AAC5C;AACA,aAAOoN,GAAG,CAAC+d,MAAJ,CAAWnrB,IAAX,CAAP;AACH;AACJ,GAND,CAME,OAAOG,GAAP,EAAY,CACV;AACH;;AAED,MAAI;AACA,QAAIusB,SAAS,CAAClsB,OAAV,CAAkB4M,GAAG,CAACpN,IAAD,CAArB,MAAiC,CAAC,CAAtC,EAAyC;AACrC,aAAOoN,GAAG,CAACpN,IAAD,CAAV;AACH;AACJ,GAJD,CAIE,OAAOG,GAAP,EAAY,CACV;AACH;AACJ;AAEM,SAASwsB,oBAAT,CAA8Bvf,GAA9B,EAA2DpN,IAA3D,EAAmG;AAEtG,MAAImP,KAAK,GAAGsd,cAAc,CAACrf,GAAD,EAAMpN,IAAN,CAA1B;;AAEA,MAAImP,KAAJ,EAAW;AACP,WAAOA,KAAP;AACH;;AANqG,mCAQ/E+b,SAAS,CAAC9d,GAAD,CARsE,qCAQ/D;AAAlC,QAAIie,UAAU,oBAAd;AACD,QAAIuB,UAAU,GAAGD,oBAAoB,CAACtB,UAAD,EAAarrB,IAAb,CAArC;;AAEA,QAAI4sB,UAAJ,EAAgB;AACZ,aAAOA,UAAP;AACH;AACJ;AACJ;AAEM,SAASC,eAAT,CAAyBzf,GAAzB,EAAsDpN,IAAtD,EAA8F;AAEjG,MAAImP,KAAJ;AAEAA,OAAK,GAAGsd,cAAc,CAACrf,GAAD,EAAMpN,IAAN,CAAtB;;AAEA,MAAImP,KAAJ,EAAW;AACP,WAAOA,KAAP;AACH;;AAED,MAAIiC,GAAG,GAAGka,MAAM,CAACle,GAAD,CAAN,IAAeA,GAAzB;AAEA,SAAOuf,oBAAoB,CAACvb,GAAD,EAAMpR,IAAN,CAA3B;AACH;AAEM,SAAS8sB,QAAT,CAAkB1f,GAAlB,EAA+C+B,KAA/C,EAAwF;AAE3F,MAAI4d,WAAW,GAAG7C,SAAS,CAAC/a,KAAD,CAA3B;;AAEA,MAAI4d,WAAJ,EAAiB;AACb,WAAOA,WAAW,KAAK3f,GAAvB;AACH;;AAN0F,mCAQpE8d,SAAS,CAAC9d,GAAD,CAR2D,qCAQpD;AAAlC,QAAIie,UAAU,oBAAd;;AACD,QAAIA,UAAU,KAAKlc,KAAnB,EAA0B;AACtB,aAAO,IAAP;AACH;AACJ;;AAED,SAAO,KAAP;AACH;AAEM,SAAS6d,QAAT,CAAkB7C,MAAlB,EAAkDtiB,KAAlD,EAA2F;AAE9F,SAAOsiB,MAAM,KAAKC,SAAS,CAACviB,KAAD,CAA3B;AACH;AAEM,SAASolB,WAAT,CAAqB7f,GAArB,EAAqF;AAAA,MAAhEA,GAAgE;AAAhEA,OAAgE,GAAjCxN,MAAiC;AAAA;;AACxFwN,KAAG,GAAGA,GAAG,IAAIxN,MAAb;AAEA,MAAIyqB,MAAM,GAAGD,SAAS,CAAChd,GAAD,CAAtB;;AAEA,MAAIid,MAAJ,EAAY;AACR,WAAOA,MAAP;AACH;;AAED,MAAIF,MAAM,GAAGD,SAAS,CAAC9c,GAAD,CAAtB;;AAEA,MAAI+c,MAAJ,EAAY;AACR,WAAOA,MAAP;AACH;AACJ;AAEM,SAAS+C,YAAT,CAAsB9f,GAAtB,EAAkF;AAErF,MAAIrJ,OAAO,GAAG,EAAd;AAEA,MAAIopB,QAAQ,GAAG/f,GAAf;;AAEA,SAAO+f,QAAP,EAAiB;AACbA,YAAQ,GAAGF,WAAW,CAACE,QAAD,CAAtB;;AACA,QAAIA,QAAJ,EAAc;AACVppB,aAAO,CAACtD,IAAR,CAAa0sB,QAAb;AACH;AACJ;;AAED,SAAOppB,OAAP;AACH;AAGM,SAASqpB,UAAT,CAAoBjD,MAApB,EAAoDtiB,KAApD,EAA6F;AAEhG,MAAIwlB,YAAY,GAAGJ,WAAW,CAACplB,KAAD,CAA9B;;AAEA,MAAIwlB,YAAJ,EAAkB;AACd,QAAIA,YAAY,KAAKlD,MAArB,EAA6B;AACzB,aAAO,IAAP;AACH;;AAED,WAAO,KAAP;AACH;;AAED,MAAItiB,KAAK,KAAKsiB,MAAd,EAAsB;AAClB,WAAO,KAAP;AACH;;AAED,MAAImB,MAAM,CAACzjB,KAAD,CAAN,KAAkBA,KAAtB,EAA6B;AACzB,WAAO,KAAP;AACH;;AAlB+F,mCAoB9EqjB,SAAS,CAACf,MAAD,CApBqE,qCAoB3D;AAAhC,QAAIhb,KAAK,oBAAT;;AACD,QAAIA,KAAK,KAAKtH,KAAd,EAAqB;AACjB,aAAO,IAAP;AACH;AACJ;;AAED,SAAO,KAAP;AACH;AAEM,SAASylB,OAAT,CAAiBlgB,GAAjB,EAAkE;AAAA,MAAjDA,GAAiD;AAAjDA,OAAiD,GAAlBxN,MAAkB;AAAA;;AACrE,SAAOuN,OAAO,CAACid,SAAS,CAAChd,GAAD,CAAV,CAAd;AACH;AAEM,SAASmgB,QAAT,CAAkBngB,GAAlB,EAAmE;AAAA,MAAjDA,GAAiD;AAAjDA,OAAiD,GAAlBxN,MAAkB;AAAA;;AACtE,SAAOuN,OAAO,CAAC+c,SAAS,CAAC9c,GAAD,CAAV,CAAd;AACH;AAEM,SAASogB,UAAT,CAAoBpgB,GAApB,EAAqE;AAAA,MAAjDA,GAAiD;AAAjDA,OAAiD,GAAlBxN,MAAkB;AAAA;;AACxE,SAAOuN,OAAO,CAAC,CAACogB,QAAQ,CAACngB,GAAD,CAAT,IAAkB,CAACkgB,OAAO,CAAClgB,GAAD,CAA3B,CAAd;AACH;;AAED,SAASqgB,QAAT,CAAkBC,WAAlB,EAA+BC,WAA/B,EAAsD;AAAA,4BAEhCD,WAFgC,iBAEnB;AAA1B,QAAIE,KAAK,GAAIF,WAAJ,MAAT;;AAA0B,8BACTC,WADS,iBACI;AAA1B,UAAIE,KAAK,GAAIF,WAAJ,MAAT;;AACD,UAAIC,KAAK,KAAKC,KAAd,EAAqB;AACjB,eAAO,IAAP;AACH;AACJ;AACJ;;AAED,SAAO,KAAP;AACH;;AAEM,SAASC,kBAAT,CAA4B1gB,GAA5B,EAA2E;AAAA,MAA/CA,GAA+C;AAA/CA,OAA+C,GAAjBxN,MAAiB;AAAA;;AAC9E,MAAImuB,QAAQ,GAAG,CAAf;AACA,MAAI5D,MAAM,GAAG/c,GAAb;;AAEA,SAAO+c,MAAP,EAAe;AACXA,UAAM,GAAGD,SAAS,CAACC,MAAD,CAAlB;;AACA,QAAIA,MAAJ,EAAY;AACR4D,cAAQ,IAAI,CAAZ;AACH;AACJ;;AAED,SAAOA,QAAP;AACH;AAEM,SAASC,YAAT,CAAsB5gB,GAAtB,EAAmD6gB,CAAnD,EAA4F;AAAA,MAAzCA,CAAyC;AAAzCA,KAAyC,GAA5B,CAA4B;AAAA;;AAC/F,MAAI9D,MAAM,GAAG/c,GAAb;;AAEA,OAAK,IAAIrK,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGkrB,CAApB,EAAuBlrB,CAAC,EAAxB,EAA4B;AACxB,QAAI,CAAConB,MAAL,EAAa;AACT;AACH;;AAEDA,UAAM,GAAGD,SAAS,CAACC,MAAD,CAAlB;AACH;;AAED,SAAOA,MAAP;AACH;AAEM,SAAS+D,mBAAT,CAA6B9gB,GAA7B,EAA0D6gB,CAA1D,EAAmG;AAAA,MAAzCA,CAAyC;AAAzCA,KAAyC,GAA5B,CAA4B;AAAA;;AACtG,SAAOD,YAAY,CAAC5gB,GAAD,EAAM0gB,kBAAkB,CAAC1gB,GAAD,CAAlB,GAA0B6gB,CAAhC,CAAnB;AACH;AAEM,SAASE,eAAT,CAAyBC,IAAzB,EAAuDC,IAAvD,EAA+F;AAElG,MAAIC,IAAI,GAAGhD,MAAM,CAAC8C,IAAD,CAAN,IAAgBA,IAA3B;AACA,MAAIG,IAAI,GAAGjD,MAAM,CAAC+C,IAAD,CAAN,IAAgBA,IAA3B;;AAEA,MAAI;AACA,QAAIC,IAAI,IAAIC,IAAZ,EAAkB;AACd,UAAID,IAAI,KAAKC,IAAb,EAAmB;AACf,eAAO,IAAP;AACH;;AAED,aAAO,KAAP;AACH;AACJ,GARD,CAQE,OAAOpuB,GAAP,EAAY,CACV;AACH;;AAED,MAAIquB,UAAU,GAAG/C,oBAAoB,CAAC2C,IAAD,CAArC;AACA,MAAIK,UAAU,GAAGhD,oBAAoB,CAAC4C,IAAD,CAArC;;AAEA,MAAIZ,QAAQ,CAACe,UAAD,EAAaC,UAAb,CAAZ,EAAsC;AAClC,WAAO,IAAP;AACH;;AAED,MAAIC,OAAO,GAAGtE,SAAS,CAACkE,IAAD,CAAvB;AACA,MAAIK,OAAO,GAAGvE,SAAS,CAACmE,IAAD,CAAvB;;AAEA,MAAIG,OAAO,IAAIjB,QAAQ,CAAChC,oBAAoB,CAACiD,OAAD,CAArB,EAAgCD,UAAhC,CAAvB,EAAoE;AAChE,WAAO,KAAP;AACH;;AAED,MAAIE,OAAO,IAAIlB,QAAQ,CAAChC,oBAAoB,CAACkD,OAAD,CAArB,EAAgCH,UAAhC,CAAvB,EAAoE;AAChE,WAAO,KAAP;AACH;;AAED,SAAO,KAAP;AACH;AAEM,SAASI,WAAT,CAAqB5lB,OAArB,EAA8C6lB,MAA9C,EAAgF;AAEnF,MAAI,OAAO7lB,OAAP,KAAmB,QAAvB,EAAiC;AAE7B,QAAI,OAAO6lB,MAAP,KAAkB,QAAtB,EAAgC;AAC5B,aAAO7lB,OAAO,KAAK4gB,QAAZ,IAAwBiF,MAAM,KAAK7lB,OAA1C;AACH;;AAED,QAAIugB,OAAO,CAACsF,MAAD,CAAX,EAAqB;AACjB,aAAO,KAAP;AACH;;AAED,QAAI1nB,KAAK,CAACC,OAAN,CAAcynB,MAAd,CAAJ,EAA2B;AACvB,aAAO,KAAP;AACH;AACJ;;AAED,MAAItF,OAAO,CAACvgB,OAAD,CAAX,EAAsB;AAElB,QAAIugB,OAAO,CAACsF,MAAD,CAAX,EAAqB;AACjB,aAAO7lB,OAAO,CAACjJ,QAAR,OAAuB8uB,MAAM,CAAC9uB,QAAP,EAA9B;AACH;;AAED,QAAIoH,KAAK,CAACC,OAAN,CAAcynB,MAAd,CAAJ,EAA2B;AACvB,aAAO,KAAP;AACH,KARiB,CAUlB;;;AACA,WAAO1hB,OAAO,CAAC0hB,MAAM,CAAC1lB,KAAP,CAAaH,OAAb,CAAD,CAAd;AACH;;AAED,MAAI7B,KAAK,CAACC,OAAN,CAAc4B,OAAd,CAAJ,EAA4B;AAExB,QAAI7B,KAAK,CAACC,OAAN,CAAcynB,MAAd,CAAJ,EAA2B;AACvB,aAAO5oB,IAAI,CAACC,SAAL,CAAe8C,OAAf,MAA4B/C,IAAI,CAACC,SAAL,CAAe2oB,MAAf,CAAnC;AACH;;AAED,QAAItF,OAAO,CAACsF,MAAD,CAAX,EAAqB;AACjB,aAAO,KAAP;AACH;;AAED,WAAO7lB,OAAO,CAAC8lB,IAAR,CAAa,UAAAC,UAAU;AAAA,aAAIH,WAAW,CAACG,UAAD,EAAaF,MAAb,CAAf;AAAA,KAAvB,CAAP;AACH;;AAED,SAAO,KAAP;AACH;AAEM,SAASG,sBAAT,CAAgChmB,OAAhC,EAAkE;AACrE,MAAI7B,KAAK,CAACC,OAAN,CAAc4B,OAAd,CAAJ,EAA4B;AACxB,iBAAYA,OAAO,CAACN,IAAR,CAAa,KAAb,CAAZ;AACH,GAFD,MAEO,IAAI6gB,OAAO,CAACvgB,OAAD,CAAX,EAAsB;AACzB,uBAAkBA,OAAO,CAACjJ,QAAR,EAAlB;AACH,GAFM,MAEA;AACH,WAAOiJ,OAAO,CAACjJ,QAAR,EAAP;AACH;AACJ;AAEM,SAASkvB,gBAAT,CAA0BliB,GAA1B,EAAiD;AAEpD,MAAI2R,MAAJ;;AAEA,MAAI3R,GAAG,CAAC5D,KAAJ,CAAU,0BAAV,CAAJ,EAA2C;AACvCuV,UAAM,GAAG3R,GAAT;AACH,GAFD,MAEO;AACH,WAAO0d,SAAS,EAAhB;AACH;;AAED/L,QAAM,GAAGA,MAAM,CAAC9X,KAAP,CAAa,GAAb,EAAkBL,KAAlB,CAAwB,CAAxB,EAA2B,CAA3B,EAA8BmC,IAA9B,CAAmC,GAAnC,CAAT;AAEA,SAAOgW,MAAP;AACH;AAEM,SAASwQ,aAAT,CAAuB9hB,GAAvB,EAAoDlG,QAApD,EAAyExC,KAAzE,EAAgGyqB,OAAhG,EAAuJ;AAAA,MAA9EzqB,KAA8E;AAA9EA,SAA8E,GAA7D,IAA6D;AAAA;;AAAA,MAAvDyqB,OAAuD;AAAvDA,WAAuD,GAApCC,QAAoC;AAAA;;AAE1J,MAAI7rB,OAAJ;;AAEA,MAAIoP,KAAK,GAAG,SAARA,KAAQ,GAAM;AAEd,QAAIpF,cAAc,CAACH,GAAD,CAAlB,EAAyB;AAErB,UAAI7J,OAAJ,EAAa;AACTE,oBAAY,CAACF,OAAD,CAAZ;AACH;;AAED,aAAO2D,QAAQ,EAAf;AACH;;AAED,QAAIioB,OAAO,IAAI,CAAf,EAAkB;AACd1rB,kBAAY,CAACF,OAAD,CAAZ;AACH,KAFD,MAEO;AACH4rB,aAAO,IAAIzqB,KAAX;AACAnB,aAAO,GAAG7C,UAAU,CAACiS,KAAD,EAAQjO,KAAR,CAApB;AACH;AACJ,GAjBD;;AAmBAiO,OAAK;AAEL,SAAO;AACH3R,UADG,oBACM;AACL,UAAIuC,OAAJ,EAAa;AACTE,oBAAY,CAACF,OAAD,CAAZ;AACH;AACJ;AALE,GAAP;AAOH,C,CAED;;AACO,SAAS8rB,QAAT,CAAkB/pB,GAAlB,EAA0C;AAE7C,MAAI;AACA,QAAIA,GAAG,KAAK1F,MAAZ,EAAoB;AAChB,aAAO,IAAP;AACH;AACJ,GAJD,CAIE,OAAOO,GAAP,EAAY;AACV,QAAIA,GAAG,IAAIA,GAAG,CAAC2J,OAAJ,KAAgBigB,mBAA3B,EAAgD;AAC5C,aAAO,IAAP;AACH;AACJ;;AAED,MAAI;AACA,QAAItnB,MAAM,CAACC,SAAP,CAAiB3C,QAAjB,CAA0BE,IAA1B,CAA+BqF,GAA/B,MAAwC,iBAA5C,EAA+D;AAC3D,aAAO,IAAP;AACH;AACJ,GAJD,CAIE,OAAOnF,GAAP,EAAY;AACV,QAAIA,GAAG,IAAIA,GAAG,CAAC2J,OAAJ,KAAgBigB,mBAA3B,EAAgD;AAC5C,aAAO,IAAP;AACH;AACJ;;AAED,MAAI;AACA,QAAInqB,MAAM,CAACC,MAAP,IAAiByF,GAAG,YAAY1F,MAAM,CAACC,MAA3C,EAAmD;AAC/C,aAAO,IAAP;AACH;AACJ,GAJD,CAIE,OAAOM,GAAP,EAAY;AACV,QAAIA,GAAG,IAAIA,GAAG,CAAC2J,OAAJ,KAAgBigB,mBAA3B,EAAgD;AAC5C,aAAO,IAAP;AACH;AACJ;;AAED,MAAI;AACA,QAAIzkB,GAAG,IAAIA,GAAG,CAACgG,IAAJ,KAAahG,GAAxB,EAA6B;AACzB,aAAO,IAAP;AACH;AACJ,GAJD,CAIE,OAAOnF,GAAP,EAAY;AACV,QAAIA,GAAG,IAAIA,GAAG,CAAC2J,OAAJ,KAAgBigB,mBAA3B,EAAgD;AAC5C,aAAO,IAAP;AACH;AACJ;;AAED,MAAI;AACA,QAAIzkB,GAAG,IAAIA,GAAG,CAAC6kB,MAAJ,KAAe7kB,GAA1B,EAA+B;AAC3B,aAAO,IAAP;AACH;AACJ,GAJD,CAIE,OAAOnF,GAAP,EAAY;AACV,QAAIA,GAAG,IAAIA,GAAG,CAAC2J,OAAJ,KAAgBigB,mBAA3B,EAAgD;AAC5C,aAAO,IAAP;AACH;AACJ;;AAED,MAAI;AACA,QAAIzkB,GAAG,IAAIA,GAAG,CAAC8L,GAAJ,KAAY9L,GAAvB,EAA4B;AACxB,aAAO,IAAP;AACH;AACJ,GAJD,CAIE,OAAOnF,GAAP,EAAY;AACV,QAAIA,GAAG,IAAIA,GAAG,CAAC2J,OAAJ,KAAgBigB,mBAA3B,EAAgD;AAC5C,aAAO,IAAP;AACH;AACJ;;AAED,MAAI;AACA,QAAItf,IAAI,CAACnF,GAAG,KAAKA,GAAT,CAAJ,KAAsB,oBAA1B,EAAgD;AAAE;AAC9C,aAAO,KAAP;AACH;AAEJ,GALD,CAKE,OAAOnF,GAAP,EAAY;AACV,WAAO,IAAP;AACH;;AAED,MAAI;AACA,QAAImF,GAAG,IAAIA,GAAG,CAACgqB,mCAAJ,KAA4C,oBAAvD,EAA6E;AACzE,aAAO,KAAP;AACH;AAEJ,GALD,CAKE,OAAOnvB,GAAP,EAAY;AACV,WAAO,IAAP;AACH;;AAED,SAAO,KAAP;AACH;AAEM,SAASovB,SAAT,GAA+B;AAClC,SAAQ,OAAO3vB,MAAP,KAAkB,WAAlB,IAAiC,OAAOA,MAAM,CAACgO,QAAd,KAA2B,WAApE;AACH;AAEM,SAAS4hB,eAAT,CAAyB9Q,MAAzB,EAAoD;AACvD,MAAI,CAAC6Q,SAAS,EAAd,EAAkB;AACd,WAAO,KAAP;AACH;;AAED,SAAQ9E,SAAS,OAAO/L,MAAxB;AACH;AAEM,SAAS+Q,YAAT,CAAsB/Q,MAAtB,EAAiD;AACpD,SAAOA,MAAM,CAACle,OAAP,CAAegpB,QAAQ,CAACC,IAAxB,MAAkC,CAAzC;AACH;AAEM,SAASiG,gBAAT,CAA0B3iB,GAA1B,EAAiD;AACpD,MAAI,CAAC0iB,YAAY,CAACR,gBAAgB,CAACliB,GAAD,CAAjB,CAAjB,EAA0C;AACtC,WAAOA,GAAP;AACH;;AAED,MAAI,IAAJ,EAAe;AACX,UAAM,IAAIxK,KAAJ,4CAAN;AACH;;AAED,SAAOwK,GAAG,CAACjI,OAAJ,CAAY,iBAAZ,EAA+B0lB,eAAe,CAAC5qB,MAAD,CAA9C,CAAP;AACH;AAEM,SAAS+vB,WAAT,CAAqBviB,GAArB,EAAkD;AACrD,MAAI;AACAA,OAAG,CAACO,KAAJ;AACH,GAFD,CAEE,OAAOxN,GAAP,EAAY,CACV;AACH;AACJ;AAEM,SAASyvB,iBAAT,CAA2BxiB,GAA3B,EAAuE;AAC1E,MAAIsN,YAAY,CAACtN,GAAD,CAAhB,EAAuB;AACnB,WAAO0d,gBAAgB,CAAC1d,GAAD,CAAhB,CAAsByiB,YAA7B;AACH;;AAHyE,8CAKtDzjB,QAAQ,CAACL,gBAAT,CAA0B,QAA1B,CALsD,gDAKjB;AAApD,QAAMoD,KAAK,+BAAX;;AACD,QAAIA,KAAK,IAAIA,KAAK,CAACJ,aAAf,IAAgCI,KAAK,CAACJ,aAAN,KAAwB3B,GAA5D,EAAiE;AAC7D,aAAO+B,KAAP;AACH;AACJ;AACJ,C;;AClhCD;AACO,IAAM2gB,KAAK,GAAG,IAAd,C;;ACDP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;;;;;;;;ACDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,IAAMC,IAAI,SAAV;AAEA,IAAMpV,QAAQ,UAASoV,IAAT,OAAd;AAEA,IAAMC,YAAY,GAAG;AACxBC,MAAI,EAAgBF,IAAhB,UADoB;AAExBG,OAAK,EAAeH,IAAf,WAFmB;AAGxBI,eAAa,EAAOJ,IAAP,mBAHW;AAIxBK,OAAK,EAAeL,IAAf,WAJmB;AAKxBM,aAAW,EAASN,IAAT,iBALa;AAMxBO,UAAQ,EAAYP,IAAZ,cANgB;AAOxBQ,QAAM,EAAcR,IAAd,YAPkB;AAQxBS,UAAQ,EAAYT,IAAZ,cARgB;AASxBU,gBAAc,EAAMV,IAAN,oBATU;AAUxBpiC,OAAK,EAAeoiC,IAAf,WAVmB;AAWxBW,MAAI,EAAgBX,IAAhB,UAXoB;AAYxBY,MAAI,EAAgBZ,IAAhB;AAZoB,CAArB;AAeA,IAAMa,UAAU,GAAG;AACtBC,QAAM,UADgB;AAEtBC,QAAM,UAFgB;AAGtBC,UAAQ,YAHc;AAItBC,SAAO,WAJe;AAKtBC,QAAM;AALgB,CAAnB;AAQA,IAAMC,aAAa,GAAG;AACzBC,KAAG,EAAE,KADoB;AAEzBC,KAAG,EAAE;AAFoB,CAAtB;AAKA,IAAMC,iBAAiB,GAAG;AAC7BC,QAAM,UADuB;AAE7BC,KAAG,OAF0B;AAG7BC,QAAM,UAHuB;AAI7BC,QAAM;AAJuB,CAA1B;AAOA,IAAMC,eAA+B,GAAGjvB,MAAM,CAACyB,IAAP,CAAY0sB,UAAZ,EAAwBzsB,GAAxB,CAA4B,UAAAC,GAAG;AAAA,SAAIwsB,UAAU,CAACxsB,GAAD,CAAd;AAAA,CAA/B,CAAxC;AAEA,IAAMutB,aAAa,GAAG;AACzBphC,QAAM,UADmB;AAEzBu5B,OAAK;AAFoB,CAAtB;AAKA,IAAM8H,WAAW,GAAG;AACvB7B,MAAI,OAAmBA,IADA;AAEvB8B,QAAM,EAAiB9B,IAAjB,YAFiB;AAGvB+B,iBAAe,EAAQ/B,IAAR,qBAHQ;AAIvBgC,iBAAe,EAAQhC,IAAR,qBAJQ;AAKvBxa,SAAO,EAAgBwa,IAAhB,aALgB;AAMvBiC,WAAS,EAAcjC,IAAd;AANc,CAApB;AASA,IAAMkC,MAAM,GAAG;AAClB7B,OAAK,EAAML,IAAN;AADa,CAAf;AAIA,IAAMmC,UAAU,GAAG;AACtBC,oBAAkB,iBAAgBpC,IAAhB;AADI,CAAnB;AAIA,IAAMqC,eAAe,GAAG;AAC3BC,gBAAc,EAAMtC,IAAN,oBADa;AAE3BuC,gBAAc,EAAMvC,IAAN,oBAFa;AAG3BwC,gBAAc,EAAMxC,IAAN,oBAHa;AAI3ByC,gBAAc,EAAMzC,IAAN;AAJa,CAAxB;AAOA,IAAM0C,WAAW,GAAG;AACvBC,OAAK,EAAE;AADgB,CAApB;AAIA,IAAMC,aAAa,GAAG;AACzBC,aAAW,EAAY,aADE;AAEzBC,YAAU,EAAa,YAFE;AAGzBC,gBAAc,EAAS,gBAHE;AAIzBC,aAAW,EAAY,aAJE;AAKzBC,uBAAqB,EAAE;AALE,CAAtB;AAQA,IAAMC,kBAAkC,GAAGxwB,MAAM,CAACyB,IAAP,CAAYytB,aAAZ,EAA2BxtB,GAA3B,CAA+B,UAAAC,GAAG;AAAA,SAAIutB,aAAa,CAACvtB,GAAD,CAAjB;AAAA,CAAlC,CAA3C;AAEA,IAAMosB,QAAQ,GAAG;AACpB0C,eAAa,EAAE,eADK;AAEpBC,eAAa,EAAE;AAFK,CAAjB;AAKA,IAAMvJ,QAAQ,GAAG,GAAjB;AAEA,IAAMwJ,kBAAkB,GAAG;AAC9BC,OAAK,EAAG,GADsB;AAE9BpsC,QAAM,EAAE;AAFsB,CAA3B,C;;;;;;;AC3FP;AAAA;AAAA;AAEO,IAAI4zB,MAAe,GAAGjb,MAAM,CAAC0zB,uDAAS,CAACC,YAAV,CAAuBC,SAAxB,CAAN,GAA2C5zB,MAAM,CAAC0zB,uDAAS,CAACC,YAAV,CAAuBC,SAAxB,CAAN,IAA4C,EAA7G,C,CAEP;;AAEA3Y,MAAM,CAAC4Y,YAAP,GAAsB,YAAM,CACxB;AACH,CAFD,C;;;;;;;;;ACNO,IAAIH,SAAS,GAAG;AAEnBI,mBAAiB,EAAE;AACfC,WAAO,EAAG,2BADK;AAEfC,YAAQ,EAAE,4BAFK;AAGfC,OAAG,EAAO;AAHK,GAFA;AAQnBC,kBAAgB,EAAE;AACdC,WAAO,EAAE,SADK;AAEdpmC,SAAK,EAAI;AAFK,GARC;AAanBqmC,oBAAkB,EAAE;AAChBC,UAAM,EAAO,kBADG;AAEhBC,SAAK,EAAQ,iBAFG;AAGhBC,eAAW,EAAE;AAHG,GAbD;AAmBnBC,cAAY,EAAE;AACVC,YAAQ,EAAE,UADA;AAEVvK,SAAK,EAAK,OAFA;AAGVv5B,UAAM,EAAI;AAHA,GAnBK;AAyBnBgjC,cAAY,EAAE;AACVC,aAAS,EAAE;AADD,GAzBK;AA6BnBc,qBAAmB,EAAE;AACjBL,UAAM,EAAS,kBADE;AAEjBtmC,SAAK,EAAU,iBAFE;AAGjB4mC,WAAO,EAAQ,mBAHE;AAIjBC,iBAAa,EAAE,yBAJE;AAKjBC,SAAK,EAAU;AALE,GA7BF;AAqCnBC,iBAAe,EAAE;AACb1E,gBAAY,EAAE,wBADD;AAEb2E,UAAM,EAAQ,kBAFD;AAGblD,UAAM,EAAQ;AAHD,GArCE;AA2CnBmD,eAAa,EAAE,OA3CI;AA4CnBC,eAAa,EAAE,OA5CI;AA8CnBC,oBAAkB,EAAE,sBA9CD;AA+CnBC,iBAAe,EAAK,qBA/CD;AAiDnBnL,UAAQ,EAAE;AAjDS,CAAhB;AAoDA,IAAMoK,kBAAkB,GAAG;AAC9BC,QAAM,EAAO,kBADiB;AAE9BC,OAAK,EAAQ,iBAFiB;AAG9BC,aAAW,EAAE;AAHiB,CAA3B;AAMA,IAAIa,uBAAuC,GAAGvyB,MAAM,CAACyB,IAAP,CAAY8vB,kBAAZ,EAChD7vB,GADgD,CAC5C,UAAAC,GAAG;AAAA,SAAI4vB,kBAAkB,CAAC5vB,GAAD,CAAtB;AAAA,CADyC,CAA9C,C;;;;AC1DP;AAEO,IAAI+V,MAAe,GAAG;AAEzB8a,yBAAuB,EAAG,iCAAiCr1B,MAAlC,GACnBA,MAAM,CAACs1B,2BADY,GAEnBC,IAJmB;AAMzBC,gBAAc,EAAQ,IANG;AAOzBC,sBAAoB,EAAE,IAPG;AASzBC,aAAW,EAAG11B,MAAM,CAACiQ,SAAP,CAAiBC,SAAjB,CAA2B3G,KAA3B,CAAiC,OAAjC,MAA8C,CAAC,CAA/C,IAAoD,CAAC4R,KAAtD,GAAkE,KAAlE,GAA0E,IAT9D;AAUzBwa,aAAW,EAAExa,MAAQ,GAAG,SAAH,GAAU,CAAC,CAVP;AAYzBya,8BAA4B,qDACtBlC,SAAS,CAACoB,eAAV,CAA0B1E,YADJ,IACoB,IADpB,wBAEtBsD,SAAS,CAACoB,eAAV,CAA0BC,MAFJ,IAEoB,IAFpB,wBAGtBrB,SAAS,CAACoB,eAAV,CAA0BjD,MAHJ,IAGoB,IAHpB,wBAZH;AAkBzBgE,mBAAiB,EAAE;AAlBM,CAAtB;;AAqBP,IAAI71B,MAAM,CAACgO,QAAP,CAAgB2c,IAAhB,CAAqB/pB,OAArB,CAA6B8yB,SAAS,CAACuB,aAAvC,MAA0D,CAA9D,EAAiE;AAC7D1a,QAAM,CAAC8a,uBAAP,GAAiC,IAAjC;AACH,C;;ACzBD;AAAA;AAAA;AAAA;AAAA;;;;;;;;ACDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAEA;AAEA,IAAMS,YAAY,GAAG,EAArB;AAEO,SAASC,SAAT,GAA8B;AACjC,MAAI,OAAO/1B,MAAP,KAAkB,WAAtB,EAAmC;AAC/B,WAAOA,MAAP;AACH;;AACD,MAAI,OAAOib,MAAP,KAAkB,WAAtB,EAAmC;AAC/B,WAAOA,MAAP;AACH;;AACD,SAAO6a,YAAP;AACH,C,CAED;;AACO,SAAS7qB,OAAT,CAAoBvG,MAApB,EAAmE0I,OAAnE,EAA+I;AAAA,MAA5EA,OAA4E;AAA5EA,WAA4E,GAA7C,EAA6C;AAAA;;AAElJ,MAAM4oB,KAAyD,GAAG,EAAlE,CAFkJ,CAIlJ;;AACA,SAAO,SAASjc,gBAAT,GAA6D;AAAA,sCAAhCnV,IAAgC;AAAhCA,UAAgC;AAAA;;AAEhE,QAAIJ,GAAJ;;AAEA,QAAI;AACAA,SAAG,GAAG6B,IAAI,CAACC,SAAL,CAAeiB,KAAK,CAACzE,SAAN,CAAgB6D,KAAhB,CAAsBtG,IAAtB,CAA2B2K,SAA3B,CAAf,CAAN;AACH,KAFD,CAEE,OAAOzK,GAAP,EAAY;AACV,YAAM,IAAIoC,KAAJ,4DAAN;AACH;;AAED,QAAMiB,IAAI,GAAGwJ,OAAO,CAACxJ,IAArB;;AAEA,QAAIoyB,KAAK,CAACxxB,GAAD,CAAL,IAAcZ,IAAd,IAAuB+iB,IAAI,CAACC,GAAL,KAAaoP,KAAK,CAACxxB,GAAD,CAAL,CAAWZ,IAAzB,GAAiCA,IAA3D,EAAiE;AAC7D,aAAOoyB,KAAK,CAACxxB,GAAD,CAAZ;AACH;;AAED,QAAMyxB,IAAI,GAAGF,SAAS,EAAtB;;AAEA,QAAIE,IAAI,CAACC,oBAAL,IAA6BF,KAAK,CAACxxB,GAAD,CAAlC,IAA2CwxB,KAAK,CAACxxB,GAAD,CAAL,CAAWZ,IAAX,GAAkBqyB,IAAI,CAACC,oBAAtE,EAA4F;AACxF,aAAOF,KAAK,CAACxxB,GAAD,CAAZ;AACH;;AAED,QAAIwxB,KAAK,CAACxxB,GAAD,CAAT,EAAgB;AACZ,aAAOwxB,KAAK,CAACxxB,GAAD,CAAL,CAAWtC,KAAlB;AACH;;AAED8zB,SAAK,CAACxxB,GAAD,CAAL,GAAa;AACTZ,UAAI,EAAG+iB,IAAI,CAACC,GAAL,EADE;AAET1kB,WAAK,EAAEwC,MAAM,CAACG,KAAP,CAAa,IAAb,EAAmBmG,SAAnB;AAFE,KAAb;AAKA,WAAOgrB,KAAK,CAACxxB,GAAD,CAAL,CAAWtC,KAAlB;AACH,GAhCD;AAiCH;AAEM,SAASi0B,OAAT,CAAiBlxB,GAAjB,EAAwC;AAC3C,MAAIZ,IAAI,GAAG,CAAX;;AACA,OAAK,IAAIlB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8B,GAAG,CAAChE,MAAxB,EAAgCkC,CAAC,EAAjC,EAAqC;AACjCkB,QAAI,IAAIY,GAAG,CAAC9B,CAAD,CAAH,CAAOizB,UAAP,CAAkB,CAAlB,IAAuBnwB,IAAI,CAACowB,GAAL,CAAUlzB,CAAC,GAAG,EAAL,GAAW,CAApB,EAAuB,CAAvB,CAA/B;AACH;;AACD,SAAO8C,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACowB,GAAL,CAASpwB,IAAI,CAACqwB,IAAL,CAAUjyB,IAAV,CAAT,EAA0B,CAA1B,CAAX,CAAP;AACH;AAEM,SAASkyB,UAAT,CAAoBtxB,GAApB,EAA2C;AAC9C,MAAIZ,IAAI,GAAG,EAAX;;AAEA,OAAK,IAAIlB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8B,GAAG,CAAChE,MAAxB,EAAgCkC,CAAC,EAAjC,EAAqC;AACjC,QAAIqzB,KAAK,GAAIvxB,GAAG,CAAC9B,CAAD,CAAH,CAAOizB,UAAP,CAAkB,CAAlB,IAAuBjzB,CAApC;;AAEA,QAAI8B,GAAG,CAAC9B,CAAC,GAAG,CAAL,CAAP,EAAgB;AACZqzB,WAAK,IAAKvxB,GAAG,CAAC9B,CAAC,GAAG,CAAL,CAAH,CAAWizB,UAAX,CAAsB,CAAtB,KAA4BjzB,CAAC,GAAG,CAAhC,CAAV;AACH;;AAEDkB,QAAI,IAAIoyB,MAAM,CAACC,YAAP,CAAoB,KAAMzwB,IAAI,CAAC2M,GAAL,CAAS4jB,KAAT,IAAkB,EAA5C,CAAR;AACH;;AAED,SAAOnyB,IAAP;AACH;AAEM,SAASkF,KAAT,CAAetE,GAAf,EAA6BmE,OAA7B,EAAyD;AAC5D,MAAMutB,QAAQ,GAAG1xB,GAAG,CAACsE,KAAJ,CAAUH,OAAV,CAAjB;;AACA,MAAIutB,QAAJ,EAAc;AACV,WAAOA,QAAQ,CAAC,CAAD,CAAf;AACH;AACJ;AAEM,SAASC,QAAT,CAAkB92B,IAAlB,EAAyC;AAC5C,SAAOuG,IAAI,CAACC,SAAL,CAAexG,IAAf,EAAqB,UAAC0E,GAAD,EAAM+B,GAAN,EAAc;AAEtC,QAAI,OAAOA,GAAP,KAAe,UAAnB,EAA+B;AAC3B,mBAAY,OAAOA,GAAnB;AACH;;AAED,QAAI;AACAF,UAAI,CAACC,SAAL,CAAeC,GAAf;AACH,KAFD,CAEE,OAAOhG,GAAP,EAAY;AACV,mBAAY,OAAOgG,GAAnB;AACH;;AAED,WAAOA,GAAP;AACH,GAbM,CAAP;AAcH;AAUM,SAAS4D,YAAT,GAAmC;AAEtC,MAAM0sB,SAAS,GAAG,EAAlB;AAEA,SAAO;AACHC,UADG,kBACIpyB,MADJ,EACiD;AAChDmyB,eAAS,CAACh2B,IAAV,CAAe6D,MAAf;AAEA,aAAO;AACHtD,cADG,oBACM;AACLy1B,mBAAS,CAACx1B,MAAV,CAAiBw1B,SAAS,CAACj2B,OAAV,CAAkB8D,MAAlB,CAAjB,EAA4C,CAA5C;AACH;AAHE,OAAP;AAKH,KATE;AAWH+F,QAXG,gBAWE/F,MAXF,EAWqB;AACpB,UAAMgG,QAAQ,GAAG,KAAKosB,MAAL,CAAY,SAASC,YAAT,GAAwB;AACjDryB,cAAM,CAACG,KAAP,CAAa,IAAb,EAAmBmG,SAAnB;AACAN,gBAAQ,CAACtJ,MAAT;AACH,OAHgB,CAAjB;AAIH,KAhBE;AAkBHuJ,WAlBG,qBAkBsC;AAAA,8BACdksB,SADc,gBACH;AAA7B,YAAMnsB,QAAQ,GAAImsB,SAAJ,KAAd;AACDnsB,gBAAQ,MAAR;AACH;AACJ;AAtBE,GAAP;AAwBH;AAEM,SAASssB,QAAT,CAA4BtxB,GAA5B,EAA0ClB,GAA1C,EAA0E;AAC7E,SAAO,IAAI1C,sEAAJ,CAAiB,UAAAL,OAAO,EAAI;AAE/B,QAAIS,KAAK,GAAGwD,GAAG,CAAClB,GAAD,CAAf;;AAEA,QAAItC,KAAJ,EAAW;AACP,aAAOT,OAAO,CAACS,KAAD,CAAd;AACH;;AAED,WAAOwD,GAAG,CAAClB,GAAD,CAAV;AAEA3B,UAAM,CAACgF,cAAP,CAAsBnC,GAAtB,EAA2BlB,GAA3B,EAAgC;AAE5BsD,kBAAY,EAAE,IAFc;AAI5BO,SAJ4B,eAIxBvI,IAJwB,EAIlB;AACNoC,aAAK,GAAGpC,IAAR;;AAEA,YAAIoC,KAAJ,EAAW;AACPT,iBAAO,CAACS,KAAD,CAAP;AACH;AACJ,OAV2B;AAY5B0E,SAZ4B,iBAYd;AACV,eAAO1E,KAAP;AACH;AAd2B,KAAhC;AAgBH,GA1BM,CAAP;AA2BH;AAEM,SAAS+H,cAAT,CAAwB1J,GAAxB,EAAqC0lB,KAArC,EAAkE;AAAA,MAA7BA,KAA6B;AAA7BA,SAA6B,GAAZ,CAAY;AAAA;;AAErE,MAAIA,KAAK,IAAI,CAAb,EAAgB;AACZ,WAAO,+BAAP;AACH;;AAED,MAAI;AACA,QAAI,CAAC1lB,GAAL,EAAU;AACN,kCAA2BsC,MAAM,CAACC,SAAP,CAAiB3C,QAAjB,CAA0BE,IAA1B,CAA+BE,GAA/B,CAA3B;AACH;;AAED,QAAI,OAAOA,GAAP,KAAe,QAAnB,EAA6B;AACzB,aAAOA,GAAP;AACH;;AAED,QAAIA,GAAG,YAAYoC,KAAnB,EAA0B;AACtB,UAAML,KAAK,GAAG/B,GAAG,IAAIA,GAAG,CAAC+B,KAAzB;AACA,UAAM4H,OAAO,GAAG3J,GAAG,IAAIA,GAAG,CAAC2J,OAA3B;;AAEA,UAAI5H,KAAK,IAAI4H,OAAb,EAAsB;AAClB,YAAI5H,KAAK,CAAC1B,OAAN,CAAcsJ,OAAd,MAA2B,CAAC,CAAhC,EAAmC;AAC/B,iBAAO5H,KAAP;AACH,SAFD,MAEO;AACH,iBAAW4H,OAAX,UAAyB5H,KAAzB;AACH;AACJ,OAND,MAMO,IAAIA,KAAJ,EAAW;AACd,eAAOA,KAAP;AACH,OAFM,MAEA,IAAI4H,OAAJ,EAAa;AAChB,eAAOA,OAAP;AACH;AACJ;;AAED,QAAI,OAAO3J,GAAG,CAACJ,QAAX,KAAwB,UAA5B,EAAwC;AACpC,aAAOI,GAAG,CAACJ,QAAJ,EAAP;AACH;;AAED,WAAO0C,MAAM,CAACC,SAAP,CAAiB3C,QAAjB,CAA0BE,IAA1B,CAA+BE,GAA/B,CAAP;AAEH,GAhCD,CAgCE,OAAO02B,MAAP,EAAe;AAAE;AACf,gDAA2ChtB,cAAc,CAACgtB,MAAD,EAAShR,KAAK,GAAG,CAAjB,CAAzD;AACH;AACJ;AAEM,SAASiR,qBAAT,CAA+B32B,GAA/B,EAAqD;AAExD,MAAM42B,cAAc,wBAAuBt0B,MAAM,CAACC,SAAP,CAAiB3C,QAAjB,CAA0BE,IAA1B,CAA+BE,GAA/B,CAAvB,MAApB;;AAEA,MAAI,CAACA,GAAL,EAAU;AACN,WAAO42B,cAAP;AACH;;AAED,MAAI52B,GAAG,YAAYoC,KAAnB,EAA0B;AACtB,WAAOpC,GAAG,CAAC2J,OAAJ,IAAeitB,cAAtB;AACH;;AAED,MAAI,OAAO52B,GAAG,CAAC2J,OAAX,KAAuB,QAA3B,EAAqC;AACjC,WAAO3J,GAAG,CAAC2J,OAAJ,IAAeitB,cAAtB;AACH;;AAED,SAAOA,cAAP;AACH;AAEM,SAAS7wB,SAAT,CAAmBxG,IAAnB,EAA0C;AAC7C,MAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;AAC1B,WAAOA,IAAP;AACH;;AAED,MAAIA,IAAI,IAAI,OAAOA,IAAI,CAACK,QAAZ,KAAyB,UAArC,EAAiD;AAC7C,WAAOL,IAAI,CAACK,QAAL,EAAP;AACH;;AAED,SAAO0C,MAAM,CAACC,SAAP,CAAiB3C,QAAjB,CAA0BE,IAA1B,CAA+BP,IAA/B,CAAP;AACH;AAEM,SAASs3B,aAAT,CAAuBC,QAAvB,EAA0CvY,MAA1C,EAAqE;AACxEuY,UAAQ,GAAGA,QAAQ,CAACrwB,KAAT,CAAe,KAAf,EAAsB,CAAtB,CAAX;AACA,MAAMwC,KAAK,GAAG6tB,QAAQ,CAACz2B,OAAT,CAAiBke,MAAjB,CAAd;AACA,SAAQtV,KAAK,KAAK,CAAC,CAAX,IAAgB6tB,QAAQ,CAAC1wB,KAAT,CAAe6C,KAAf,MAA0BsV,MAAlD;AACH;AAEM,SAASwY,WAAT,CAAqB5xB,GAArB,EAAmCtF,IAAnC,EAAkDe,OAAlD,EAAsE;AACzE,MAAMo2B,QAAQ,GAAG7xB,GAAG,CAACtF,IAAD,CAApB;;AAEAsF,KAAG,CAACtF,IAAD,CAAH,GAAY,SAASo3B,aAAT,GAAiC;AAAA;AAAA;;AACzC,WAAOr2B,OAAO,CAAC;AACXwD,aAAO,EAAO,IADH;AAEXC,UAAI,EAAU2C,KAAK,CAACzE,SAAN,CAAgB6D,KAAhB,CAAsBtG,IAAtB,CAA2B2K,SAA3B,CAFH;AAGXusB,cAAQ,EAARA,QAHW;AAIXE,kBAAY,EAAE;AAAA,eAAMF,QAAQ,CAAC1yB,KAAT,CAAe,KAAf,EAAqBmG,UAArB,CAAN;AAAA;AAJH,KAAD,CAAd;AAMH,GAPD;AAQH;AAEM,SAAS0sB,QAAT,CAAkBhyB,GAAlB,EAAyC;AAC5C,SAAQ,OAAOA,GAAP,KAAe,QAAf,IAA2BA,GAAG,KAAK,IAA3C;AACH;AAEM,SAASD,MAAT,CAAuCC,GAAvC,EAAgDC,MAAhD,EAAqE;AACxE,MAAI,CAACA,MAAL,EAAa;AACT,WAAOD,GAAP;AACH;;AAED,MAAI7C,MAAM,CAAC80B,MAAX,EAAmB;AAAE;AACjB,WAAO90B,MAAM,CAAC80B,MAAP,CAAcjyB,GAAd,EAAmBC,MAAnB,CAAP,CADe,CACoB;AACtC;;AAED,OAAK,IAAMnB,KAAX,IAAkBmB,MAAlB,EAA0B;AACtB,QAAIA,MAAM,CAACC,cAAP,CAAsBpB,KAAtB,CAAJ,EAAgC;AAC5BkB,SAAG,CAAClB,KAAD,CAAH,GAAWmB,MAAM,CAACnB,KAAD,CAAjB;AACH;AACJ;;AAED,SAAOkB,GAAP;AACH;AAEM,SAASkyB,UAAT,CAA6ClyB,GAA7C,EAAsDC,MAAtD,EAA2E;AAC9E,MAAI,CAACA,MAAL,EAAa;AACT,WAAOD,GAAP;AACH;;AAED,OAAK,IAAMlB,KAAX,IAAkBmB,MAAlB,EAA0B;AACtB,QAAIA,MAAM,CAACC,cAAP,CAAsBpB,KAAtB,CAAJ,EAAgC;AAC5B,UAAIkzB,QAAQ,CAAChyB,GAAG,CAAClB,KAAD,CAAJ,CAAR,IAAsBkzB,QAAQ,CAAC/xB,MAAM,CAACnB,KAAD,CAAP,CAAlC,EAAiD;AAC7CozB,kBAAU,CAAClyB,GAAG,CAAClB,KAAD,CAAJ,EAAWmB,MAAM,CAACnB,KAAD,CAAjB,CAAV;AACH,OAFD,MAEO;AACHkB,WAAG,CAAClB,KAAD,CAAH,GAAWmB,MAAM,CAACnB,KAAD,CAAjB;AACH;AACJ;AACJ;;AAED,SAAOkB,GAAP;AACH;AAEM,SAASmyB,QAAT,CAA6BnyB,GAA7B,EAAqDxD,KAArD,EAA0E;AAC7E,OAAK,IAAMsC,KAAX,IAAkBkB,GAAlB,EAAuB;AACnB,QAAIA,GAAG,CAACE,cAAJ,CAAmBpB,KAAnB,KAA2BkB,GAAG,CAAClB,KAAD,CAAH,KAAatC,KAA5C,EAAmD;AAC/C,aAAO,IAAP;AACH;AACJ;;AACD,SAAO,KAAP;AACH;AAEM,SAAS+pB,QAAT,CAAqB6L,GAArB,EAA8C51B,KAA9C,EAAmE;AACtE,SAAO41B,GAAG,CAACl3B,OAAJ,CAAYsB,KAAZ,MAAuB,CAAC,CAA/B;AACH,C,CAED;;AACO,SAAS61B,MAAT,CAAmBD,GAAnB,EAAmCE,KAAnC,EAAyE;AAC5E,SAAOF,GAAG,CAACG,IAAJ,CAAS,UAACC,CAAD,EAAQC,CAAR,EAAkB;AAC9B,WAAOH,KAAK,CAACp3B,OAAN,CAAcs3B,CAAd,IAAmBF,KAAK,CAACp3B,OAAN,CAAcu3B,CAAd,CAA1B;AACH,GAFM,CAAP;AAGH;AAEM,SAASC,UAAT,CAAoB1yB,GAApB,EAAyE;AAC5E,MAAMnD,MAAM,GAAG,EAAf;;AACA,OAAK,IAAMiC,KAAX,IAAkBkB,GAAlB,EAAuB;AACnB,QAAIA,GAAG,CAACE,cAAJ,CAAmBpB,KAAnB,CAAJ,EAA6B;AACzBjC,YAAM,CAACmD,GAAG,CAAClB,KAAD,CAAJ,CAAN,GAAmBA,KAAnB;AACH;AACJ;;AACD,SAAOjC,MAAP;AACH,C,CAED;;AACO,SAAS81B,WAAT,CAAwBP,GAAxB,EAAwCh4B,IAAxC,EAAkD;AACrDg4B,KAAG,CAACz2B,MAAJ,CAAWy2B,GAAG,CAACl3B,OAAJ,CAAYd,IAAZ,CAAX,EAA8B,CAA9B;AACH;AAEM,SAASw4B,QAAT,CAA6Bx4B,IAA7B,EAA2C;AAC9C,SAAOA,IAAP;AACH;AAEM,SAAS+F,MAAT,CAAmBH,GAAnB,EAA+D;AAClE,MAAMnD,MAAM,GAAG,EAAf;;AACA,OAAK,IAAMiC,KAAX,IAAkBkB,GAAlB,EAAuB;AACnB,QAAIA,GAAG,CAACE,cAAJ,CAAmBpB,KAAnB,CAAJ,EAA6B;AACzBjC,YAAM,CAAC1B,IAAP,CAAY6E,GAAG,CAAClB,KAAD,CAAf;AACH;AACJ;;AACD,SAAOjC,MAAP;AACH;AAEM,SAASmX,IAAT,CAAc6e,MAAd,EAA+BC,UAA/B,EAA6D;AAChE,SAAOvyB,IAAI,CAACwyB,KAAL,CAAYF,MAAM,GAAGC,UAAV,GAAwB,GAAnC,CAAP;AACH;AAEM,SAASE,GAAT,GAAwD;AAC3D,SAAOzyB,IAAI,CAACyyB,GAAL,OAAAzyB,IAAI,YAAX;AACH;AAEM,SAAS4T,GAAT,GAAwD;AAC3D,SAAO5T,IAAI,CAAC4T,GAAL,OAAA5T,IAAI,YAAX;AACH;AAEM,SAAS0yB,QAAT,CAAqB1zB,GAArB,EAAmCkE,KAAnC,EAAmDhI,OAAnD,EAA0F;AAC7F,MAAMgD,OAAO,GAAG,EAAhB,CAD6F,CAG7F;;AACAc,KAAG,CAACC,OAAJ,CAAYiE,KAAZ,EAAmB,SAASyvB,eAAT,GAA2B;AAC1Cz0B,WAAO,CAACtD,IAAR,CAAaM,OAAO,CAAC0D,KAAR,CAAc,IAAd,EAAoBmG,SAApB,CAAb;AACH,GAFD;AAIA,SAAO7G,OAAP;AACH,C;;;;;;;AC3XD;AAAe,SAAS00B,QAAT,GAAoB;AACjCA,UAAQ,GAAGh2B,MAAM,CAAC80B,MAAP,IAAiB,UAAUpvB,MAAV,EAAkB;AAC5C,SAAK,IAAIpF,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG6H,SAAS,CAAC/J,MAA9B,EAAsCkC,CAAC,EAAvC,EAA2C;AACzC,UAAIwC,MAAM,GAAGqF,SAAS,CAAC7H,CAAD,CAAtB;;AAEA,WAAK,IAAIqB,GAAT,IAAgBmB,MAAhB,EAAwB;AACtB,YAAI9C,MAAM,CAACC,SAAP,CAAiB8C,cAAjB,CAAgCvF,IAAhC,CAAqCsF,MAArC,EAA6CnB,GAA7C,CAAJ,EAAuD;AACrD+D,gBAAM,CAAC/D,GAAD,CAAN,GAAcmB,MAAM,CAACnB,GAAD,CAApB;AACD;AACF;AACF;;AAED,WAAO+D,MAAP;AACD,GAZD;;AAcA,SAAOswB,QAAQ,CAACh0B,KAAT,CAAe,IAAf,EAAqBmG,SAArB,CAAP;AACD,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACdD;AAEA;AACA;AAEO,IAAI8tB,uBAAuB,GAAG,EAA9B;;AAGPA,uBAAuB,CAACpF,yBAAS,CAACoB,eAAV,CAA0B1E,YAA3B,CAAvB,GAAkE,UAAC5iB,GAAD,EAA8BurB,iBAA9B,EAA0Dja,MAA1D,EAAgG;AAE9J,MAAIyW,IAAJ,EAAyC;AACrC,QAAI;AACAyD,yBAAO,CAAC,EAAD,CAAP,CAAwBC,qBAAxB,CAA8Cj5B,MAA9C,EAAsDwN,GAAtD;AACH,KAFD,CAEE,OAAOjN,GAAP,EAAY;AACV;AACH;AACJ;;AAED,MAAI24B,OAAJ;;AAEA,MAAI3xB,KAAK,CAACC,OAAN,CAAcsX,MAAd,CAAJ,EAA2B;AACvBoa,WAAO,GAAGpa,MAAV;AACH,GAFD,MAEO,IAAI,OAAOA,MAAP,KAAkB,QAAtB,EAAgC;AACnCoa,WAAO,GAAG,CAAEpa,MAAF,CAAV;AACH,GAFM,MAEA;AACHoa,WAAO,GAAG,CAAExF,yBAAS,CAAC1J,QAAZ,CAAV;AACH;;AAEDkP,SAAO,GAAGA,OAAO,CAAC30B,GAAR,CAAY,UAAA40B,GAAG,EAAI;AAEzB,QAAIA,GAAG,CAACv4B,OAAJ,CAAY8yB,yBAAS,CAACsB,aAAtB,MAAyC,CAA7C,EAAgD;AAE5C,UAAIh1B,MAAM,CAACgO,QAAP,CAAgBwQ,QAAhB,KAA6BkV,yBAAS,CAACuB,aAA3C,EAA0D;AACtD,eAAOvB,yBAAS,CAAC1J,QAAjB;AACH;;AAED,UAAI,CAACgB,2CAAoB,CAACxd,GAAD,CAAzB,EAAgC;AAC5B,cAAM,IAAI7K,KAAJ,iDAAyDw2B,GAAzD,2CAAN;AACH,OAR2C,CAU5C;;;AACA,aAAOvO,sCAAe,CAACpd,GAAD,CAAtB;AACH;;AAED,QAAI2rB,GAAG,CAACv4B,OAAJ,CAAY8yB,yBAAS,CAACuB,aAAtB,MAAyC,CAA7C,EAAgD;AAC5C,aAAOvB,yBAAS,CAAC1J,QAAjB;AACH;;AAED,WAAOmP,GAAP;AACH,GArBS,CAAV;AAuBAD,SAAO,CAAC/Q,OAAR,CAAgB,UAAAgR,GAAG,EAAI;AACnB,WAAO3rB,GAAG,CAAC4rB,WAAJ,CAAgBL,iBAAhB,EAAmCI,GAAnC,CAAP;AACH,GAFD;AAGH,CA9CD;;AAgDA,IAAI5D,IAAJ,EAAyC;AAAA,iBAEwByD,mBAAO,CAAC,EAAD,CAF/B;AAAA,MAE/BK,iBAF+B,YAE/BA,iBAF+B;AAAA,MAEZC,qBAFY,YAEZA,qBAFY;AAAA,MAEWC,QAFX,YAEWA,QAFX;;AAIrCT,yBAAuB,CAACpF,yBAAS,CAACoB,eAAV,CAA0BC,MAA3B,CAAvB,GAA4D,UAACvnB,GAAD,EAA8BurB,iBAA9B,EAA0Dja,MAA1D,EAA8E;AAEtI,QAAI,CAACwa,qBAAqB,EAAtB,IAA4B,CAACC,QAAQ,EAAzC,EAA6C;AACzC;AACH;;AAED,QAAIze,mCAAY,CAACtN,GAAD,CAAhB,EAAuB;AACnB,YAAM,IAAI7K,KAAJ,oEAAN;AACH;;AAED,QAAI4rB,sCAAe,CAACvuB,MAAD,EAASwN,GAAT,CAAf,KAAiC,KAArC,EAA4C;AACxC,YAAM,IAAI7K,KAAJ,wFAAN;AACH;;AAED,WAAO02B,iBAAiB,CAAC7rB,GAAD,EAAMurB,iBAAN,EAAyBja,MAAzB,CAAxB;AACH,GAfD;AAgBH;;AAED,IAAIyW,IAAJ,EAAsF;AAElFuD,yBAAuB,CAACpF,yBAAS,CAACoB,eAAV,CAA0BjD,MAA3B,CAAvB,GAA4D,UAACrkB,GAAD,EAA8BurB,iBAA9B,EAA6D;AAErH,QAAI,CAACS,qDAA8B,EAAnC,EAAuC;AACnC;AACH;;AAED,QAAI,CAAC1e,mCAAY,CAACtN,GAAD,CAAjB,EAAwB;AACpB,YAAM,IAAI7K,KAAJ,yEAAN;AACH;;AAED,QAAI4rB,sCAAe,CAACvuB,MAAD,EAASwN,GAAT,CAAf,KAAiC,KAArC,EAA4C;AACxC,YAAM,IAAI7K,KAAJ,wFAAN;AACH,KAZoH,CAcrH;;;AACA,QAAI82B,aAAa,GAAGjsB,GAAG,CAACkmB,yBAAS,CAACC,YAAV,CAAuBC,SAAxB,CAAvB;;AAEA,QAAI,CAAC6F,aAAL,EAAoB;AAChB,YAAM,IAAI92B,KAAJ,mDAAN;AACH;;AAED,WAAO82B,aAAa,CAACC,cAAd,CAA6B;AAChC/zB,YAAM,EAAE3F,MADwB;AAEhCivB,YAAM,EAAEpE,gCAAS,EAFe;AAGhCxH,UAAI,EAAI0V;AAHwB,KAA7B,CAAP;AAKH,GA1BD;AA2BH,C;;;AC3GD;AACA;AAEA;AACA;AAEA;;AAGA,SAASY,YAAT,CAAsBnsB,GAAtB,EAAmDtD,OAAnD,EAAqEkD,OAArE,EAA4F;AAAA,MAAvBA,OAAuB;AAAvBA,WAAuB,GAAb,EAAa;AAAA;;AAExF,MAAIb,EAAE,GAAKzG,+BAAQ,EAAnB;AACA,MAAIoC,IAAI,GAAG0xB,oCAAa,EAAxB;AACA,MAAIC,YAAY,GAAGhP,gCAAS,CAAC7qB,MAAD,CAA5B;AAEA,oDACOkK,OADP,MAEOkD,OAFP;AAGIysB,gBAAY,EAAZA,YAHJ;AAIIttB,MAAE,EAAUrC,OAAO,CAACqC,EAAR,IAAcA,EAJ9B;AAKIutB,cAAU,EAAE5xB;AALhB;AAOH;;AAGM,SAAS6xB,WAAT,CAAqBvsB,GAArB,EAAkDtD,OAAlD,EAAoE4U,MAApE,EAA0H;AAC7H,SAAOhd,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAAA;;AAE1BwG,WAAO,GAAGyvB,YAAY,CAACnsB,GAAD,EAAMtD,OAAN,EAAe;AACjCmZ,UAAI,EAAE2W,uCAAgB,CAACxsB,GAAD,EAAMsR,MAAN,EAAc5U,OAAO,CAACmZ,IAAtB,CADW;AAEjCvE,YAAM,EAANA;AAFiC,KAAf,CAAtB;AAKA,QAAImH,KAAJ;;AAEA,QAAIllB,KAAJ,EAAe,EAWd;;AAED,QAAIyM,GAAG,KAAKxN,MAAR,IAAkB,CAACua,sBAAM,CAACsb,iBAA9B,EAAiD;AAC7C,YAAM,IAAIlzB,KAAJ,CAAU,mCAAV,CAAN;AACH;;AAED,QAAIgL,qCAAc,CAACH,GAAD,CAAlB,EAAyB;AACrB,YAAM,IAAI7K,KAAJ,CAAU,kBAAV,CAAN;AACH;;AAED,QAAIs3B,QAAQ,GAAG,EAAf;AAEA,QAAIlB,iBAAiB,GAAGmB,oCAAa,sCAC/BxG,yBAAS,CAACC,YAAV,CAAuBC,SADQ,IACK1pB,OADL,mBAElC,IAFkC,EAE5B,CAF4B,CAArC;AAIA,WAAOpI,yCAAY,CAACyC,GAAb,CAAiB1B,MAAM,CAACyB,IAAP,CAAYw0B,uBAAZ,CAAjB,EAAuD,UAAAqB,YAAY,EAAI;AAE1E,aAAOr4B,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAE1B,YAAI,CAAC6W,sBAAM,CAACqb,4BAAP,CAAoCuE,YAApC,CAAL,EAAwD;AACpD,gBAAM,IAAIx3B,KAAJ,2BAAmCw3B,YAAnC,CAAN;AACH;;AAED,eAAOrB,uBAAuB,CAACqB,YAAD,CAAvB,CAAsC3sB,GAAtC,EAA2CurB,iBAA3C,EAA8Dja,MAA9D,CAAP;AAEH,OARM,EAQJxe,IARI,CAQC,YAAM;AACV25B,gBAAQ,CAACp5B,IAAT,CAAkBs5B,YAAlB;AACA,eAAO,IAAP;AACH,OAXM,EAWJ,UAAA55B,GAAG,EAAI;AACN05B,gBAAQ,CAACp5B,IAAT,CAAkBs5B,YAAlB,UAAqClwB,qCAAc,CAAC1J,GAAD,CAAnD;AACA,eAAO,KAAP;AACH,OAdM,CAAP;AAgBH,KAlBM,EAkBJD,IAlBI,CAkBC,UAAA6D,OAAO,EAAI;AAEf,UAAIi2B,OAAO,GAAGj2B,OAAO,CAAC+qB,IAAR,CAAa3hB,OAAb,CAAd;AACA,UAAI8sB,MAAM,GAAOnwB,OAAO,CAAChC,IAAf,SAAyBgC,OAAO,CAAC9J,IAAjC,UAA2Cg6B,OAAO,GAAG,SAAH,GAAe,OAAjE,gBAAoFH,QAAQ,CAACnxB,IAAT,CAAc,QAAd,CAApF,OAAV;;AAEA,UAAI,CAACsxB,OAAL,EAAc;AACV,cAAM,IAAIz3B,KAAJ,CAAU03B,MAAV,CAAN;AACH;AACJ,KA1BM,CAAP;AA2BH,GA/DM,CAAP;AAgEH,C;;;;;ACzFD;AACA;AAEA;AACA;AACA;AAEO,SAASC,cAAT,GAA0B;AAC7Brf,0BAAM,CAACsf,iBAAP,GAA2B,EAA3B;AACAtf,0BAAM,CAACuf,gBAAP,GAA2B,EAA3B;AACH;AAEDvf,wBAAM,CAACsf,iBAAP,GAA2Btf,wBAAM,CAACsf,iBAAP,IAA4B,EAAvD;AACAtf,wBAAM,CAACuf,gBAAP,GAA2Bvf,wBAAM,CAACuf,gBAAP,IAA4B,EAAvD;AACAvf,wBAAM,CAACwf,eAAP,GAA2Bxf,wBAAM,CAACwf,eAAP,IAA4B,IAAK,SAASC,cAAT,GAA0B;AAAE;AAAY,CAA7C,EAAvD;AAEAzf,wBAAM,CAAC0f,wBAAP,GAAkC1f,wBAAM,CAAC0f,wBAAP,IAAmC,EAArE;AAEA,IAAMC,gBAAgB,GAAG,kBAAzB;AAkBO,SAASC,mBAAT,CAA6Bx2B,IAA7B,EAA4CqG,QAA5C,EAA6E;AAChFuQ,0BAAM,CAACsf,iBAAP,CAAyBl2B,IAAzB,IAAiCqG,QAAjC;AACH;AAEM,SAASowB,mBAAT,CAA6Bz2B,IAA7B,EAAmE;AACtE,SAAO4W,wBAAM,CAACsf,iBAAP,CAAyBl2B,IAAzB,CAAP;AACH;AAEM,SAAS02B,sBAAT,CAAgC12B,IAAhC,EAA+C;AAClD,SAAO4W,wBAAM,CAACsf,iBAAP,CAAyBl2B,IAAzB,CAAP;AACH;AAEM,SAAS22B,2BAAT,CAAqC32B,IAArC,EAAoD;AACvD4W,0BAAM,CAAC0f,wBAAP,CAAgCt2B,IAAhC,IAAwC,IAAxC;AACH;AAEM,SAAS42B,yBAAT,CAAmC52B,IAAnC,EAA4D;AAC/D,SAAOkJ,OAAO,CAAC0N,wBAAM,CAAC0f,wBAAP,CAAgCt2B,IAAhC,CAAD,CAAd;AACH;AAEM,SAAS62B,kBAAT,OAAyJ;AAAA,MAA3H96B,IAA2H,QAA3HA,IAA2H;AAAA,MAArHoN,GAAqH,QAArHA,GAAqH;AAAA,MAAhHsR,MAAgH,QAAhHA,MAAgH;;AAE5J,MAAItR,GAAG,KAAKkmB,yBAAS,CAAC1J,QAAtB,EAAgC;AAC5Bxc,OAAG,GAAG,IAAN;AACH;;AAED,MAAIsR,MAAM,KAAK4U,yBAAS,CAAC1J,QAAzB,EAAmC;AAC/BlL,UAAM,GAAG,IAAT;AACH;;AAED,MAAI,CAAC1e,IAAL,EAAW;AACP,UAAM,IAAIuC,KAAJ,yCAAN;AACH;;AAED,MAAIw4B,aAAa,GAAGlgB,wBAAM,CAACuf,gBAAP,CAAwBp6B,IAAxB,CAApB;;AAEA,MAAI,CAAC+6B,aAAL,EAAoB;AAChB;AACH;;AAlB2J,4BAoBnI,CAAE3tB,GAAF,EAAOyN,wBAAM,CAACwf,eAAd,CApBmI,6BAoBlG;AAArD,QAAIW,YAAY,aAAhB;AAED,QAAIC,YAAY,GAAGD,YAAY,IAAID,aAAa,CAACv0B,GAAd,CAAkBw0B,YAAlB,CAAnC;;AAEA,QAAI,CAACC,YAAL,EAAmB;AACf;AACH;;AAED,QAAIvc,MAAM,IAAI,OAAOA,MAAP,KAAkB,QAAhC,EAA0C;AACtC,UAAIuc,YAAY,CAACvc,MAAD,CAAhB,EAA0B;AACtB,eAAOuc,YAAY,CAACvc,MAAD,CAAnB;AACH;;AAED,UAAIuc,YAAY,CAACT,gBAAD,CAAhB,EAAoC;AAAA,mDACAS,YAAY,CAACT,gBAAD,CADZ,8CACgC;AAAA;AAAA,cAArDzxB,KAAqD,0BAArDA,KAAqD;AAAA,cAA9CuB,QAA8C,0BAA9CA,QAA8C;;AAC5D,cAAIskB,kCAAW,CAAC7lB,KAAD,EAAQ2V,MAAR,CAAf,EAAgC;AAC5B,mBAAOpU,QAAP;AACH;AACJ;AACJ;AACJ;;AAED,QAAI2wB,YAAY,CAAC3H,yBAAS,CAAC1J,QAAX,CAAhB,EAAsC;AAClC,aAAOqR,YAAY,CAAC3H,yBAAS,CAAC1J,QAAX,CAAnB;AACH;AACJ;AACJ,C,CAED;;AACO,SAASsR,kBAAT,QAAkJ5wB,QAAlJ,EAA4M;AAAA,MAA9KtK,IAA8K,SAA9KA,IAA8K;AAAA,MAAxKoN,GAAwK,SAAxKA,GAAwK;AAAA,MAAnKsR,MAAmK,SAAnKA,MAAmK;;AAE/M,MAAI,CAAC1e,IAAD,IAAS,OAAOA,IAAP,KAAgB,QAA7B,EAAuC;AACnC,UAAM,IAAIuC,KAAJ,yCAAN;AACH;;AAED,MAAI4E,KAAK,CAACC,OAAN,CAAcgG,GAAd,CAAJ,EAAwB;AACpB,QAAI+tB,mBAAmB,GAAG,EAA1B;;AADoB,8BAGH/tB,GAHG,6BAGE;AAAjB,UAAI1N,IAAI,aAAR;AACDy7B,yBAAmB,CAAC16B,IAApB,CAAyBy6B,kBAAkB,CAAC;AAAEl7B,YAAI,EAAJA,IAAF;AAAQ0e,cAAM,EAANA,MAAR;AAAgBtR,WAAG,EAAE1N;AAArB,OAAD,EAA8B4K,QAA9B,CAA3C;AACH;;AAED,WAAO;AACHtJ,YADG,oBACM;AAAA,gCACsBm6B,mBADtB,gBAC2C;AAA3C,cAAIC,cAAc,GAAID,mBAAJ,KAAlB;AACDC,wBAAc,CAACp6B,MAAf;AACH;AACJ;AALE,KAAP;AAOH;;AAED,MAAImG,KAAK,CAACC,OAAN,CAAcsX,MAAd,CAAJ,EAA2B;AACvB,QAAIyc,oBAAmB,GAAG,EAA1B;;AADuB,kCAGNzc,MAHM,kCAGE;AAApB,UAAIhf,KAAI,iBAAR;;AACDy7B,0BAAmB,CAAC16B,IAApB,CAAyBy6B,kBAAkB,CAAC;AAAEl7B,YAAI,EAAJA,IAAF;AAAQoN,WAAG,EAAHA,GAAR;AAAasR,cAAM,EAAEhf;AAArB,OAAD,EAA8B4K,QAA9B,CAA3C;AACH;;AAED,WAAO;AACHtJ,YADG,oBACM;AAAA,kCACsBm6B,oBADtB,iBAC2C;AAA3C,cAAIC,cAAc,GAAID,oBAAJ,MAAlB;AACDC,wBAAc,CAACp6B,MAAf;AACH;AACJ;AALE,KAAP;AAOH;;AAED,MAAIq6B,gBAAgB,GAAGP,kBAAkB,CAAC;AAAE96B,QAAI,EAAJA,IAAF;AAAQoN,OAAG,EAAHA,GAAR;AAAasR,UAAM,EAANA;AAAb,GAAD,CAAzC;;AAEA,MAAI,CAACtR,GAAD,IAAQA,GAAG,KAAKkmB,yBAAS,CAAC1J,QAA9B,EAAwC;AACpCxc,OAAG,GAAGyN,wBAAM,CAACwf,eAAb;AACH;;AAED3b,QAAM,GAAGA,MAAM,IAAI4U,yBAAS,CAAC1J,QAA7B;;AAEA,MAAIyR,gBAAJ,EAAsB;AAClB,QAAIjuB,GAAG,IAAIsR,MAAX,EAAmB;AACf,YAAM,IAAInc,KAAJ,0CAAkDvC,IAAlD,mBAAsE0e,MAAM,CAAC3e,QAAP,EAAtE,cAAiGqN,GAAG,KAAKyN,wBAAM,CAACwf,eAAf,GAAiC,UAAjC,GAA8C,WAA/I,cAAN;AACH,KAFD,MAEO,IAAIjtB,GAAJ,EAAS;AACZ,YAAM,IAAI7K,KAAJ,0CAAkDvC,IAAlD,cAAgEoN,GAAG,KAAKyN,wBAAM,CAACwf,eAAf,GAAiC,UAAjC,GAA8C,WAA9G,cAAN;AACH,KAFM,MAEA,IAAI3b,MAAJ,EAAY;AACf,YAAM,IAAInc,KAAJ,0CAAkDvC,IAAlD,mBAAsE0e,MAAM,CAAC3e,QAAP,EAAtE,CAAN;AACH,KAFM,MAEA;AACH,YAAM,IAAIwC,KAAJ,0CAAkDvC,IAAlD,CAAN;AACH;AACJ;;AAED,MAAIo6B,gBAAgB,GAAGvf,wBAAM,CAACuf,gBAA9B;AAEA,MAAIW,aAAa,GAAGX,gBAAgB,CAACp6B,IAAD,CAApC;;AAEA,MAAI,CAAC+6B,aAAL,EAAoB;AAChBA,iBAAa,GAAG,IAAInyB,gDAAJ,EAAhB;AACAwxB,oBAAgB,CAACp6B,IAAD,CAAhB,GAAyB+6B,aAAzB;AACH;;AAED,MAAIE,YAAY,GAAIF,aAAa,CAACv0B,GAAd,CAAkB4G,GAAlB,CAApB;;AAEA,MAAI,CAAC6tB,YAAL,EAAmB;AACfA,gBAAY,GAAG,EAAf;AACAF,iBAAa,CAAC9yB,GAAd,CAAkBmF,GAAlB,EAAuB6tB,YAAvB;AACH;;AAED,MAAIK,SAAS,GAAG5c,MAAM,CAAC3e,QAAP,EAAhB;AAEA,MAAIw7B,cAAc,GAAGN,YAAY,CAACT,gBAAD,CAAjC;AACA,MAAIgB,aAAJ;;AAEA,MAAIjS,8BAAO,CAAC7K,MAAD,CAAX,EAAqB;AAEjB,QAAI,CAAC6c,cAAL,EAAqB;AACjBA,oBAAc,GAAG,EAAjB;AACAN,kBAAY,CAACT,gBAAD,CAAZ,GAAiCe,cAAjC;AACH;;AAEDC,iBAAa,GAAG;AAAEzyB,WAAK,EAAE2V,MAAT;AAAiBpU,cAAQ,EAARA;AAAjB,KAAhB;AAEAixB,kBAAc,CAAC96B,IAAf,CAAoB+6B,aAApB;AAEH,GAXD,MAWO;AACHP,gBAAY,CAACK,SAAD,CAAZ,GAA0BhxB,QAA1B;AACH;;AAED,SAAO;AACHtJ,UADG,oBACM;AACL,UAAI,CAACi6B,YAAL,EAAmB;AACf;AACH;;AAED,aAAOA,YAAY,CAACK,SAAD,CAAnB;;AAEA,UAAIluB,GAAG,IAAI3K,MAAM,CAACyB,IAAP,CAAY+2B,YAAZ,EAA0Bp6B,MAA1B,KAAqC,CAAhD,EAAmD;AAC/Ck6B,qBAAa,CAACU,MAAd,CAAqBruB,GAArB;AACH;;AAED,UAAIouB,aAAJ,EAAmB;AACfD,sBAAc,CAACt6B,MAAf,CAAsBs6B,cAAc,CAAC/6B,OAAf,CAAuBg7B,aAAvB,EAAsC,CAAtC,CAAtB;AACH;AACJ;AAfE,GAAP;AAkBH,C;;;;;;AC1ND;AACA;AAEA;AACA;AACA;AACA;AAEO,IAAIE,qBAAqB,sDAE1BpI,yBAAS,CAACI,iBAAV,CAA4BG,GAFF,cAEQtuB,MAFR,EAEwCspB,MAFxC,EAEyD/kB,OAFzD,EAE2E;AAEnG,MAAI+wB,yBAAyB,CAAC/wB,OAAO,CAAC7F,IAAT,CAA7B,EAA6C;AACzC;AACH;;AAED,MAAI+I,OAAO,GAAG0tB,mBAAmB,CAAC5wB,OAAO,CAAC7F,IAAT,CAAjC;;AAEA,MAAI,CAAC+I,OAAL,EAAc;AACV,UAAM,IAAIzK,KAAJ,yDAAiEuH,OAAO,CAAC9J,IAAzE,cAAwF6uB,MAAxF,YAAuGjvB,MAAM,CAACgO,QAAP,CAAgBwQ,QAAvH,UAAsIxe,MAAM,CAACgO,QAAP,CAAgBoN,IAAtJ,GAA+Jpb,MAAM,CAACgO,QAAP,CAAgB+tB,QAA/K,CAAN;AACH;;AAED,MAAI,CAAC/M,kCAAW,CAAC5hB,OAAO,CAAC0R,MAAT,EAAiBmQ,MAAjB,CAAhB,EAA0C;AACtC,UAAM,IAAItsB,KAAJ,iBAAyBssB,MAAzB,+BAA2D7hB,OAAO,CAAC0R,MAAR,CAAe3e,QAAf,EAA3D,CAAN;AACH;;AAEDiN,SAAO,CAAC4uB,GAAR,GAAc,IAAd;AACH,CAnB2B,wBAqB1BtI,yBAAS,CAACI,iBAAV,CAA4BC,OArBF,cAqBYpuB,MArBZ,EAqB4CspB,MArB5C,EAqB6D/kB,OArB7D,EAqBoG;AAE5H,MAAIkD,OAAO,GAAG8tB,kBAAkB,CAAC;AAAE96B,QAAI,EAAE8J,OAAO,CAAC9J,IAAhB;AAAsBoN,OAAG,EAAE7H,MAA3B;AAAmCmZ,UAAM,EAAEmQ;AAA3C,GAAD,CAAhC;;AAEA,WAASgN,OAAT,CAAiB5Y,IAAjB,EAA4C;AAExC,QAAInZ,OAAO,CAACoZ,aAAR,IAAyB3V,qCAAc,CAAChI,MAAD,CAA3C,EAAqD;AACjD,aAAO7D,yCAAY,CAACL,OAAb,EAAP;AACH;;AAED,WAAOs4B,WAAW,CAACp0B,MAAD;AACd4C,YAAM,EAAE2B,OAAO,CAACgyB,cADF;AAEd73B,UAAI,EAAI6F,OAAO,CAAC7F,IAFF;AAGdjE,UAAI,EAAI8J,OAAO,CAAC9J;AAHF,OAIXijB,IAJW,GAKf4L,MALe,CAAlB;AAMH;;AAED,SAAOntB,yCAAY,CAACkC,GAAb,CAAiB,CAEpBi4B,OAAO,CAAC;AACJ/zB,QAAI,EAAEwrB,yBAAS,CAACI,iBAAV,CAA4BG;AAD9B,GAAD,CAFa,EAMpBnyB,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAEnB,QAAI,CAAC0J,OAAL,EAAc;AACV,YAAM,IAAIzK,KAAJ,yCAAiDuH,OAAO,CAAC9J,IAAzD,cAAwE6uB,MAAxE,YAAuFjvB,MAAM,CAACgO,QAAP,CAAgBwQ,QAAvG,UAAsHxe,MAAM,CAACgO,QAAP,CAAgBoN,IAAtI,GAA+Ipb,MAAM,CAACgO,QAAP,CAAgB+tB,QAA/J,CAAN;AACH;;AAED,QAAI,CAAC/M,kCAAW,CAAC5hB,OAAO,CAAC0R,MAAT,EAAiBmQ,MAAjB,CAAhB,EAA0C;AACtC,YAAM,IAAItsB,KAAJ,qBAA6BssB,MAA7B,+BAA+D7hB,OAAO,CAAC0R,MAAR,CAAe3e,QAAf,EAA/D,CAAN;AACH;;AAED,QAAIkjB,IAAI,GAAGnZ,OAAO,CAACmZ,IAAnB;AAEA,WAAOjW,OAAO,CAACjM,OAAR,CAAgB;AAAEwE,YAAM,EAANA,MAAF;AAAUspB,YAAM,EAANA,MAAV;AAAkB5L,UAAI,EAAJA;AAAlB,KAAhB,CAAP;AAEH,GAdD,EAcG/iB,IAdH,CAcQ,UAAA+iB,IAAI,EAAI;AAEZ,WAAO4Y,OAAO,CAAC;AACX/zB,UAAI,EAAEwrB,yBAAS,CAACI,iBAAV,CAA4BE,QADvB;AAEXgI,SAAG,EAAGtI,yBAAS,CAACQ,gBAAV,CAA2BC,OAFtB;AAGX9Q,UAAI,EAAJA;AAHW,KAAD,CAAd;AAMH,GAtBD,EAsBG,UAAA9iB,GAAG,EAAI;AAEN,QAAI4B,KAAK,GAAG8H,qCAAc,CAAC1J,GAAD,CAAd,CAAoB2E,OAApB,CAA4B,UAA5B,EAAwC,EAAxC,CAAZ,CAFM,CAGN;;AACA,QAAIi3B,IAAI,GAAG57B,GAAG,CAAC47B,IAAf;AAEA,WAAOF,OAAO,CAAC;AACX/zB,UAAI,EAAEwrB,yBAAS,CAACI,iBAAV,CAA4BE,QADvB;AAEXgI,SAAG,EAAGtI,yBAAS,CAACQ,gBAAV,CAA2BnmC,KAFtB;AAGXoU,WAAK,EAALA,KAHW;AAIXg6B,UAAI,EAAJA;AAJW,KAAD,CAAd;AAMH,GAlCD,CANoB,CAAjB,EA0CJ77B,IA1CI,CA0CCuK,mBA1CD,EA0COvH,KA1CP,CA0Ca,UAAA/C,GAAG,EAAI;AAEvB,QAAI6M,OAAO,IAAIA,OAAO,CAACgvB,WAAvB,EAAoC;AAChC,aAAOhvB,OAAO,CAACgvB,WAAR,CAAoB77B,GAApB,CAAP;AACH,KAFD,MAEO;AACH,YAAMA,GAAN;AACH;AACJ,GAjDM,CAAP;AAkDH,CAzF2B,wBA2F1BmzB,yBAAS,CAACI,iBAAV,CAA4BE,QA3FF,cA2FaruB,MA3Fb,EA2F6CspB,MA3F7C,EA2F8D/kB,OA3F9D,EA2F4G;AAEpI,MAAI+wB,yBAAyB,CAAC/wB,OAAO,CAAC7F,IAAT,CAA7B,EAA6C;AACzC;AACH;;AAED,MAAI+I,OAAO,GAAG0tB,mBAAmB,CAAC5wB,OAAO,CAAC7F,IAAT,CAAjC;;AAEA,MAAI,CAAC+I,OAAL,EAAc;AACV,UAAM,IAAIzK,KAAJ,8DAAsEuH,OAAO,CAAC9J,IAA9E,cAA6F6uB,MAA7F,YAA4GjvB,MAAM,CAACgO,QAAP,CAAgBwQ,QAA5H,UAA2Ixe,MAAM,CAACgO,QAAP,CAAgBoN,IAA3J,GAAoKpb,MAAM,CAACgO,QAAP,CAAgB+tB,QAApL,CAAN;AACH;;AAED,MAAI,CAAC/M,kCAAW,CAAC5hB,OAAO,CAAC0R,MAAT,EAAiBmQ,MAAjB,CAAhB,EAA0C;AACtC,UAAM,IAAItsB,KAAJ,sBAA8BssB,MAA9B,+BAAgEG,6CAAsB,CAAChiB,OAAO,CAAC0R,MAAT,CAAtF,CAAN;AACH;;AAEDic,wBAAsB,CAAC7wB,OAAO,CAAC7F,IAAT,CAAtB;;AAEA,MAAI6F,OAAO,CAAC8xB,GAAR,KAAgBtI,yBAAS,CAACQ,gBAAV,CAA2BnmC,KAA/C,EAAsD;AAClD,QAAIwS,GAAG,GAAG,IAAIoC,KAAJ,CAAUuH,OAAO,CAAC/H,KAAlB,CAAV;;AACA,QAAI+H,OAAO,CAACiyB,IAAZ,EAAkB;AACd;AACA57B,SAAG,CAAC47B,IAAJ,GAAWjyB,OAAO,CAACiyB,IAAnB;AACH;;AACD,WAAO/uB,OAAO,CAAC6uB,OAAR,CAAgB17B,GAAhB,EAAqB,IAArB,CAAP;AACH,GAPD,MAOO,IAAI2J,OAAO,CAAC8xB,GAAR,KAAgBtI,yBAAS,CAACQ,gBAAV,CAA2BC,OAA/C,EAAwD;AAC3D,QAAI9Q,IAAI,GAAGnZ,OAAO,CAACmZ,IAAR,IAAgBnZ,OAAO,CAACmyB,QAAnC;AAEA,WAAOjvB,OAAO,CAAC6uB,OAAR,CAAgB,IAAhB,EAAsB;AAAEt2B,YAAM,EAANA,MAAF;AAAUspB,YAAM,EAANA,MAAV;AAAkB5L,UAAI,EAAJA;AAAlB,KAAtB,CAAP;AACH;AACJ,CAzH2B,wBAAzB,C;;ACRP;AAEA;AACA;AACA;AAEA;AAEApI,wBAAM,CAACqhB,gBAAP,GAA0BrhB,wBAAM,CAACqhB,gBAAP,IAA2B,EAArD;;AAQA,SAASC,YAAT,CAAsBryB,OAAtB,EAAkD;AAE9C,MAAIsyB,aAAJ;;AAEA,MAAI;AACAA,iBAAa,GAAGC,gCAAS,CAACvyB,OAAD,CAAzB;AACH,GAFD,CAEE,OAAO3J,GAAP,EAAY;AACV;AACH;;AAED,MAAI,CAACi8B,aAAL,EAAoB;AAChB;AACH;;AAED,MAAI,OAAOA,aAAP,KAAyB,QAAzB,IAAqCA,aAAa,KAAK,IAA3D,EAAiE;AAC7D;AACH;;AAEDA,eAAa,GAAGA,aAAa,CAAC9I,yBAAS,CAACC,YAAV,CAAuBC,SAAxB,CAA7B;;AAEA,MAAI,CAAC4I,aAAD,IAAkB,OAAOA,aAAP,KAAyB,QAA3C,IAAuDA,aAAa,KAAK,IAA7E,EAAmF;AAC/E;AACH;;AAED,MAAI,CAACA,aAAa,CAACt0B,IAAf,IAAuB,OAAOs0B,aAAa,CAACt0B,IAArB,KAA8B,QAAzD,EAAmE;AAC/D;AACH;;AAED,MAAI,CAAC4zB,qBAAqB,CAACU,aAAa,CAACt0B,IAAf,CAA1B,EAAgD;AAC5C;AACH;;AAED,SAAOs0B,aAAP;AACH;;AAGM,SAAS9C,cAAT,CAAwBvpB,KAAxB,EAA8C;AAEjD,MAAI,CAACnQ,MAAD,IAAWA,MAAM,CAACusB,MAAtB,EAA8B;AAC1B;AACH;;AAED,MAAI;AACA,QAAI,CAACpc,KAAK,CAACxK,MAAX,EAAmB;AACf;AACH;AACJ,GAJD,CAIE,OAAOpF,GAAP,EAAY;AACV;AACH;;AAZgD,MAc3CoF,MAd2C,GAclBwK,KAdkB,CAc3CxK,MAd2C;AAAA,MAcnCspB,MAdmC,GAclB9e,KAdkB,CAcnC8e,MAdmC;AAAA,MAc3B5L,IAd2B,GAclBlT,KAdkB,CAc3BkT,IAd2B;AAgBjD,MAAInZ,OAAO,GAAGqyB,YAAY,CAAClZ,IAAD,CAA1B;;AAEA,MAAI,CAACnZ,OAAL,EAAc;AACV;AACH;;AAED,MAAI,CAACA,OAAO,CAAC2vB,YAAT,IAAyB,OAAO3vB,OAAO,CAAC2vB,YAAf,KAAgC,QAA7D,EAAuE;AACnE,UAAM,IAAIl3B,KAAJ,yCAAN;AACH;;AAED,MAAIuH,OAAO,CAAC2vB,YAAR,CAAqBj5B,OAArB,CAA6B8yB,yBAAS,CAACsB,aAAvC,MAA0D,CAA1D,IAA+D9qB,OAAO,CAAC2vB,YAAR,CAAqBj5B,OAArB,CAA6B8yB,yBAAS,CAACuB,aAAvC,MAA0D,CAA7H,EAAgI;AAC5HhG,UAAM,GAAG/kB,OAAO,CAAC2vB,YAAjB;AACH;;AAED,MAAI5e,wBAAM,CAACqhB,gBAAP,CAAwB17B,OAAxB,CAAgCsJ,OAAO,CAACqC,EAAxC,MAAgD,CAAC,CAArD,EAAwD;AACpD0O,4BAAM,CAACqhB,gBAAP,CAAwBz7B,IAAxB,CAA6BqJ,OAAO,CAACqC,EAArC;AACH,GAFD,MAEO;AACH;AACH;;AAED,MAAIxL,KAAJ,EAAe,cAad;;AAED,MAAI4M,qCAAc,CAAChI,MAAD,CAAd,IAA0B,CAACuE,OAAO,CAACoZ,aAAvC,EAAsD;AAClD;AACH;;AAED,MAAIpZ,OAAO,CAACmZ,IAAZ,EAAkB;AACdnZ,WAAO,CAACmZ,IAAR,GAAeqZ,yCAAkB,CAAC/2B,MAAD,EAASspB,MAAT,EAAiB/kB,OAAO,CAACmZ,IAAzB,CAAjC;AACH;;AAEDyY,uBAAqB,CAAC5xB,OAAO,CAAChC,IAAT,CAArB,CAAoCvC,MAApC,EAA4CspB,MAA5C,EAAoD/kB,OAApD;AACH;AAEM,SAASyyB,eAAT,CAAyBxsB,KAAzB,EAAkL;AAErL,MAAI;AACAtF,+BAAI,CAACsF,KAAK,CAACxK,MAAP,CAAJ;AACH,GAFD,CAEE,OAAOpF,GAAP,EAAY;AACV;AACH,GANoL,CAQrL;;;AACA,MAAIq8B,YAA2B,GAAG;AAC9Bj3B,UAAM,EAAEwK,KAAK,CAACxK,MAAN,IAAgBwK,KAAK,CAAC0sB,aADA;AAE9B5N,UAAM,EAAE9e,KAAK,CAAC8e,MAAN,IAAiB9e,KAAK,CAAC2sB,aAAN,IAAuB3sB,KAAK,CAAC2sB,aAAN,CAAoB7N,MAFtC;AAG9B5L,QAAI,EAAIlT,KAAK,CAACkT;AAHgB,GAAlC;;AAMA,MAAIkS,IAAJ,EAAyC;AACrC,QAAI;AACAyD,yBAAO,CAAC,EAAD,CAAP,CAAwBC,qBAAxB,CAA8C2D,YAAY,CAACj3B,MAA3D,EAAmE3F,MAAnE;AACH,KAFD,CAEE,OAAOO,GAAP,EAAY;AACV;AACH;AACJ;;AAEDm5B,gBAAc,CAACkD,YAAD,CAAd;AACH;AAEM,SAASG,iBAAT,GAA6B;AAChCttB,yCAAgB,CAACzP,MAAD,EAAS,SAAT,EAAoB28B,eAApB,CAAhB;AACH;AAED1hB,wBAAM,CAACye,cAAP,GAAwBA,cAAxB,C;;AChJA;AACA;;;ACDA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEAze,wBAAM,CAAC+hB,eAAP,GAAyB/hB,wBAAM,CAAC+hB,eAAP,IAA0B,IAAIh0B,gDAAJ,EAAnD;AAmBO,SAASi0B,OAAT,CAAiB7vB,OAAjB,EAAoF;AAEvF,MAAIhJ,IAAI,GAAGtC,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAE9B,QAAI,CAAC0J,OAAO,CAAChN,IAAb,EAAmB;AACf,YAAM,IAAIuC,KAAJ,CAAU,uBAAV,CAAN;AACH;;AAED,QAAIvC,IAAI,GAAGgN,OAAO,CAAChN,IAAnB;AACA,QAAI88B,YAAJ;AACA,QAAIpe,MAAJ;;AAEA,QAAI,OAAO1R,OAAO,CAACpN,MAAf,KAA0B,QAA9B,EAAwC;AACpC,UAAIoM,EAAE,GAAGI,QAAQ,CAACC,cAAT,CAAwBW,OAAO,CAACpN,MAAhC,CAAT;;AAEA,UAAI,CAACoM,EAAL,EAAS;AACL,cAAM,IAAIzJ,KAAJ,8BAAsCE,MAAM,CAACC,SAAP,CAAiB3C,QAAjB,CAA0BE,IAA1B,CAA+B+M,OAAO,CAACpN,MAAvC,CAAtC,+BAAN;AACH;;AAED,UAAIoM,EAAE,CAACgC,OAAH,CAAW9I,WAAX,OAA6B,QAAjC,EAA2C;AACvC,cAAM,IAAI3C,KAAJ,8BAAsCE,MAAM,CAACC,SAAP,CAAiB3C,QAAjB,CAA0BE,IAA1B,CAA+B+M,OAAO,CAACpN,MAAvC,CAAtC,sBAAN;AACH,OATmC,CAWpC;;;AACA,UAAI,CAACoM,EAAE,CAAC+C,aAAR,EAAuB;AACnB,cAAM,IAAIxM,KAAJ,CAAU,sFAAV,CAAN;AACH,OAdmC,CAgBpC;;;AACAu6B,kBAAY,GAAG9wB,EAAE,CAAC+C,aAAlB;AAEH,KAnBD,MAmBO,IAAI/B,OAAO,CAACpN,MAAR,YAA0Bm9B,iBAA9B,EAAiD;AAEpD,UAAI/vB,OAAO,CAACpN,MAAR,CAAeoO,OAAf,CAAuB9I,WAAvB,OAAyC,QAA7C,EAAuD;AACnD,cAAM,IAAI3C,KAAJ,8BAAsCE,MAAM,CAACC,SAAP,CAAiB3C,QAAjB,CAA0BE,IAA1B,CAA+B+M,OAAO,CAACpN,MAAvC,CAAtC,sBAAN;AACH;;AAED,UAAIoN,OAAO,CAACpN,MAAR,IAAkB,CAACoN,OAAO,CAACpN,MAAR,CAAemP,aAAtC,EAAqD;AACjD,cAAM,IAAIxM,KAAJ,CAAU,sFAAV,CAAN;AACH;;AAED,UAAIyK,OAAO,CAACpN,MAAR,IAAkBoN,OAAO,CAACpN,MAAR,CAAemP,aAArC,EAAoD;AAChD;AACA+tB,oBAAY,GAAG9vB,OAAO,CAACpN,MAAR,CAAemP,aAA9B;AACH;AACJ,KAdM,MAcA;AACH+tB,kBAAY,GAAG9vB,OAAO,CAACpN,MAAvB;AACH;;AAED,QAAI,CAACk9B,YAAL,EAAmB;AACf,YAAM,IAAIv6B,KAAJ,CAAU,8EAAV,CAAN;AACH;;AAED,QAAM6K,GAAG,GAAG0vB,YAAZ;AAEApe,UAAM,GAAG1R,OAAO,CAAC0R,MAAR,IAAkB4U,yBAAS,CAAC1J,QAArC;AAEA,QAAI3lB,IAAI,GAAO+I,OAAO,CAAChN,IAAf,SAAyB0F,+BAAQ,EAAzC;;AAEA,QAAI6H,qCAAc,CAACH,GAAD,CAAlB,EAAyB;AACrB,YAAM,IAAI7K,KAAJ,CAAU,yBAAV,CAAN;AACH;;AAED,QAAIy6B,SAAS,GAAG,KAAhB;AAEA,QAAIJ,eAAe,GAAG/hB,wBAAM,CAAC+hB,eAAP,CAAuBp2B,GAAvB,CAA2B4G,GAA3B,CAAtB;;AAEA,QAAI,CAACwvB,eAAL,EAAsB;AAClBA,qBAAe,GAAG,EAAlB;AACA/hB,8BAAM,CAAC+hB,eAAP,CAAuB30B,GAAvB,CAA2BmF,GAA3B,EAAgCwvB,eAAhC;AACH;;AAED,QAAIK,cAAc,GAAGv7B,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAExC,UAAI8pB,iCAAU,CAACxtB,MAAD,EAASwN,GAAT,CAAd,EAA6B;AACzB,eAAO8vB,yCAAkB,CAAC9vB,GAAD,EAAMJ,OAAO,CAACzJ,OAAR,IAAmB4W,sBAAM,CAACkb,oBAAhC,CAAzB;AACH;AAEJ,KANoB,EAMlBn1B,IANkB,CAMb,iBAAqB;AAAA,oCAAP,EAAO;AAAA,UAAlB2uB,MAAkB,QAAlBA,MAAkB;;AAEzB,UAAItF,8BAAO,CAAC7K,MAAD,CAAP,IAAmB,CAACmQ,MAAxB,EAAgC;AAC5B,eAAOsO,+BAAQ,CAAC/vB,GAAD,CAAf;AACH;AAEJ,KAZoB,EAYlBlN,IAZkB,CAYb,kBAAqB;AAAA,sCAAP,EAAO;AAAA,UAAlB2uB,MAAkB,SAAlBA,MAAkB;;AAEzB,UAAItF,8BAAO,CAAC7K,MAAD,CAAX,EAAqB;AACjB,YAAI,CAACkQ,kCAAW,CAAClQ,MAAD,EAASmQ,MAAT,CAAhB,EAAkC;AAC9B,gBAAM,IAAItsB,KAAJ,2BAAmCssB,MAAnC,+BAAqEnQ,MAAM,CAAC3e,QAAP,EAArE,CAAN;AACH;;AAED2e,cAAM,GAAGmQ,MAAT;AACH;;AAED,UAAI,OAAOnQ,MAAP,KAAkB,QAAlB,IAA8B,CAACvX,KAAK,CAACC,OAAN,CAAcsX,MAAd,CAAnC,EAA0D;AACtD,cAAM,IAAI/a,SAAJ,2CAAN;AACH;;AAED,UAAMy5B,YAAY,GAAG1e,MAArB;AAEA,aAAO,IAAIhd,yCAAJ,CAAiB,UAACL,OAAD,EAAUiB,MAAV,EAAqB;AAEzC,YAAI+6B,gBAAJ;;AAEA,YAAI,CAACrwB,OAAO,CAACkW,aAAb,EAA4B;AACxBma,0BAAgB,GAAG;AACfr9B,gBAAI,EAAJA,IADe;AAEfJ,kBAAM,EAAEwN,GAFO;AAGfsR,kBAAM,EAAE0e,YAHO;AAIfvB,mBAJe,mBAIP17B,GAJO,EAIFgC,MAJE,EAIM;AACjB,kBAAI,CAAChC,GAAL,EAAU;AACN68B,yBAAS,GAAG,IAAZ;AACAJ,+BAAe,CAAC37B,MAAhB,CAAuB27B,eAAe,CAACp8B,OAAhB,CAAwBy8B,cAAxB,EAAwC,CAAxC,CAAvB;AACH;;AAED,kBAAI98B,GAAJ,EAAS;AACLmC,sBAAM,CAACnC,GAAD,CAAN;AACH,eAFD,MAEO;AACHkB,uBAAO,CAACc,MAAD,CAAP;AACH;AACJ;AAfc,WAAnB;AAkBAs4B,6BAAmB,CAACx2B,IAAD,EAAOo5B,gBAAP,CAAnB;AACH;;AAED1D,mBAAW,CAACvsB,GAAD,EAAM;AACbtF,cAAI,EAAWwrB,yBAAS,CAACI,iBAAV,CAA4BC,OAD9B;AAEb1vB,cAAI,EAAJA,IAFa;AAGbjE,cAAI,EAAJA,IAHa;AAIbijB,cAAI,EAAWjW,OAAO,CAACiW,IAJV;AAKbC,uBAAa,EAAElW,OAAO,CAACkW;AALV,SAAN,EAMRka,YANQ,CAAX,CAMiBl6B,KANjB,CAMuBZ,MANvB;;AAQA,YAAI0K,OAAO,CAACkW,aAAZ,EAA2B;AACvB,iBAAO7hB,OAAO,EAAd;AACH;;AAED,YAAIi8B,UAAU,GAAGnjB,sBAAM,CAACmb,WAAxB;AACA,YAAIiI,UAAU,GAAGvwB,OAAO,CAACzJ,OAAR,IAAmB4W,sBAAM,CAACob,WAA3C;AAEA,YAAIiI,SAAS,GAAG,GAAhB;;AAEA,YAAI5kB,KAAK,GAAG,SAARA,KAAQ,GAAM;AAEd,cAAIokB,SAAJ,EAAe;AACX;AACH;;AAED,cAAIzvB,qCAAc,CAACH,GAAD,CAAlB,EAAyB;AAErB,gBAAI,CAACiwB,gBAAgB,CAACzB,GAAtB,EAA2B;AACvB,qBAAOt5B,MAAM,CAAC,IAAIC,KAAJ,wBAAgCvC,IAAhC,iBAAD,CAAb;AACH;;AAED,mBAAOsC,MAAM,CAAC,IAAIC,KAAJ,wBAAgCvC,IAAhC,sBAAD,CAAb;AACH;;AAEDs9B,oBAAU,GAAGz3B,IAAI,CAAC4T,GAAL,CAAS6jB,UAAU,GAAGE,SAAtB,EAAiC,CAAjC,CAAb;;AACA,cAAID,UAAU,KAAK,CAAC,CAApB,EAAuB;AACnBA,sBAAU,GAAG13B,IAAI,CAAC4T,GAAL,CAAS8jB,UAAU,GAAGC,SAAtB,EAAiC,CAAjC,CAAb;AACH;;AAED,cAAIC,MAAM,GAAGJ,gBAAgB,CAACzB,GAA9B;;AAEA,cAAI6B,MAAJ,EAAY;AAER,gBAAIF,UAAU,KAAK,CAAC,CAApB,EAAuB;AACnB;AACH;;AAEDC,qBAAS,GAAG33B,IAAI,CAACyyB,GAAL,CAASiF,UAAT,EAAqB,IAArB,CAAZ;AAEH,WARD,MAQO,IAAID,UAAU,KAAK,CAAnB,EAAsB;AACzB,mBAAOh7B,MAAM,CAAC,IAAIC,KAAJ,6BAAqCvC,IAArC,YAAkDyqB,gCAAS,EAA3D,YAAsEtQ,sBAAM,CAACmb,WAA7E,QAAD,CAAb;AAEH,WAHM,MAGA,IAAIiI,UAAU,KAAK,CAAnB,EAAsB;AACzB,mBAAOj7B,MAAM,CAAC,IAAIC,KAAJ,kCAA0CvC,IAA1C,YAAuDyqB,gCAAS,EAAhE,aAA2Ezd,OAAO,CAACzJ,OAAR,IAAmB4W,sBAAM,CAACob,WAArG,SAAD,CAAb;AACH;;AAED70B,oBAAU,CAACkY,KAAD,EAAQ4kB,SAAR,CAAV;AACH,SAtCD;;AAwCA98B,kBAAU,CAACkY,KAAD,EAAQ4kB,SAAR,CAAV;AACH,OApFM,CAAP;AAqFH,KAjHoB,CAArB;AAmHAP,kBAAc,CAAC/5B,KAAf,CAAqB,YAAM;AACvB03B,iCAA2B,CAAC32B,IAAD,CAA3B;AACA02B,4BAAsB,CAAC12B,IAAD,CAAtB;AACH,KAHD;AAKA24B,mBAAe,CAACn8B,IAAhB,CAAqBw8B,cAArB;AAEA,WAAOA,cAAP;AACH,GAjMU,CAAX;AAmMA,SAAOj5B,IAAP;AACH;;AAEM,SAASsT,KAAT,CAAc1X,MAAd,EAA2CI,IAA3C,EAA0DijB,IAA1D,EAA0EjW,OAA1E,EAA8I;AAEjJA,SAAO,GAAGA,OAAO,IAAI,EAArB;AACAA,SAAO,CAACpN,MAAR,GAAiBA,MAAjB;AACAoN,SAAO,CAAChN,IAAR,GAAeA,IAAf;AACAgN,SAAO,CAACiW,IAAR,GAAeA,IAAf;AAEA,SAAO4Z,OAAO,CAAC7vB,OAAD,CAAd;AACH;;;AAEM,SAAS0wB,YAAT,CAAsB19B,IAAtB,EAAqCijB,IAArC,EAAqDjW,OAArD,EAAyH;AAE5H,MAAII,GAAG,GAAG6f,kCAAW,EAArB;;AAEA,MAAI,CAAC7f,GAAL,EAAU;AACN,WAAO,IAAI1L,yCAAJ,CAAiB,UAACL,OAAD,EAAUiB,MAAV;AAAA,aAAqBA,MAAM,CAAC,IAAIC,KAAJ,CAAU,+BAAV,CAAD,CAA3B;AAAA,KAAjB,CAAP;AACH;;AAED,SAAO+U,KAAI,CAAClK,GAAD,EAAMpN,IAAN,EAAYijB,IAAZ,EAAkBjW,OAAlB,CAAX;AACH;AAEM,SAAS2wB,MAAT,CAAgB3wB,OAAhB,EAAwH;AAAA,MAAxGA,OAAwG;AAAxGA,WAAwG,GAAzE,EAAyE;AAAA;;AAE3H,MAAI,CAACA,OAAO,CAACpN,MAAb,EAAqB;AACjB,UAAM,IAAI2C,KAAJ,2BAAN;AACH;;AAED,MAAM6K,GAAG,GAAGJ,OAAO,CAACpN,MAApB;AAEA,SAAO;AACH0X,QADG,gBACEtX,IADF,EACiBijB,IADjB,EACsE;AACrE,aAAO3L,KAAI,CAAClK,GAAD,EAAMpN,IAAN,EAAYijB,IAAZ,EAAkBjW,OAAlB,CAAX;AACH;AAHE,GAAP;AAKH;AAED6N,wBAAM,CAACvD,IAAP,GAAcA,KAAd,C;;ACxQA;AACA;AAEA;AACA;AACA;AACA;AAeO,SAASof,MAAT,CAAgB1pB,OAAhB,EAAuE;AAE1E,MAAI,CAACA,OAAO,CAAChN,IAAb,EAAmB;AACf,UAAM,IAAIuC,KAAJ,CAAU,uBAAV,CAAN;AACH;;AAED,MAAI,CAACyK,OAAO,CAACjM,OAAb,EAAsB;AAClB,UAAM,IAAIwB,KAAJ,CAAU,0BAAV,CAAN;AACH;;AAED,MAAMvC,IAAI,GAAGgN,OAAO,CAAChN,IAArB;AACA,MAAMoN,GAAG,GAAGJ,OAAO,CAACpN,MAApB;AACA,MAAM8e,MAAM,GAAG1R,OAAO,CAAC0R,MAAvB;AAEA,MAAIkf,eAAqC,GAAG;AACxC78B,WAAO,EAAMiM,OAAO,CAACjM,OADmB;AAExCi7B,eAAW,EAAEhvB,OAAO,CAAC6wB,YAAR,IAAyB,UAAA19B,GAAG,EAAI;AACzC,YAAMA,GAAN;AACH,KAJuC;AAKxCP,UAAM,EAAEwN,GALgC;AAMxCsR,UAAM,EAAEA,MAAM,IAAI4U,yBAAS,CAAC1J,QANY;AAOxC5pB,QAAI,EAAJA;AAPwC,GAA5C;AAUA,MAAI89B,eAAe,GAAG5C,kBAAkB,CAAC;AAAEl7B,QAAI,EAAJA,IAAF;AAAQoN,OAAG,EAAHA,GAAR;AAAasR,UAAM,EAANA;AAAb,GAAD,EAAwBkf,eAAxB,CAAxC;;AAEA,MAAI5wB,OAAO,CAAC3C,IAAZ,EAAkB;AACd,QAAItJ,QAAO,GAAG68B,eAAe,CAAC78B,OAA9B;AACA68B,mBAAe,CAAC78B,OAAhB,GAA0Bg9B,2BAAY,CAAC,SAASC,UAAT,GAAoD;AACvFF,qBAAe,CAAC98B,MAAhB;AACA,aAAOD,QAAO,CAAC0D,KAAR,CAAc,IAAd,EAAoBmG,SAApB,CAAP;AACH,KAHqC,CAAtC;AAIH;;AAED,MAAIgzB,eAAe,CAACh+B,MAAhB,IAA0BoN,OAAO,CAACixB,YAAtC,EAAoD;AAChD,QAAIj3B,QAAQ,GAAGH,mCAAY,CAAC,YAAM;AAC9B,UAAIuG,GAAG,IAAI,OAAOA,GAAP,KAAe,QAAtB,IAAkCG,qCAAc,CAACH,GAAD,CAApD,EAA2D;AACvDpG,gBAAQ,CAAChG,MAAT;AACA48B,uBAAe,CAAC5B,WAAhB,CAA4B,IAAIz5B,KAAJ,CAAU,sCAAV,CAA5B;AACH;AACJ,KAL0B,EAKxB,EALwB,CAA3B;AAMH;;AAED,SAAO;AACHvB,UADG,oBACM;AACL88B,qBAAe,CAAC98B,MAAhB;AACH;AAHE,GAAP;AAKH;;AAEM,SAASiJ,GAAT,CAAYjK,IAAZ,EAA2BgN,OAA3B,EAAsEjM,OAAtE,EAAwH;AAE3H,MAAI,OAAOiM,OAAP,KAAmB,UAAvB,EAAmC;AAC/BjM,WAAO,GAAGiM,OAAV;AACAA,WAAO,GAAG,EAAV;AACH;;AAEDA,SAAO,GAAGA,OAAO,IAAI,EAArB;AAEAA,SAAO,CAAChN,IAAR,GAAeA,IAAf;AACAgN,SAAO,CAACjM,OAAR,GAAkBA,OAAO,IAAIiM,OAAO,CAACjM,OAArC;AAEA,SAAO21B,MAAM,CAAC1pB,OAAD,CAAb;AACH;;;AAEM,SAAS3C,IAAT,CAAcrK,IAAd,EAA6BgN,OAA7B,EAAgFjM,OAAhF,EAA2K;AAAA,MAA9IiM,OAA8I;AAA9IA,WAA8I,GAA/F,EAA+F;AAAA;;AAE9K,MAAI,OAAOA,OAAP,KAAmB,UAAvB,EAAmC;AAC/BjM,WAAO,GAAGiM,OAAV;AACAA,WAAO,GAAG,EAAV;AACH;;AAEDA,SAAO,GAAGA,OAAO,IAAI,EAArB;AACAjM,SAAO,GAAGA,OAAO,IAAIiM,OAAO,CAACjM,OAA7B;AACA,MAAI88B,YAAY,GAAG7wB,OAAO,CAAC6wB,YAA3B;AAEA,MAAIt9B,OAAO,GAAG,IAAImB,yCAAJ,CAAiB,UAACL,OAAD,EAAUiB,MAAV,EAAqB;AAEhD0K,WAAO,GAAGA,OAAO,IAAI,EAArB;AAEAA,WAAO,CAAChN,IAAR,GAAeA,IAAf;AACAgN,WAAO,CAAC3C,IAAR,GAAe,IAAf;;AAEA2C,WAAO,CAACjM,OAAR,GAAkB,UAACgP,KAAD,EAAW;AACzB1O,aAAO,CAAC0O,KAAD,CAAP;;AACA,UAAIhP,OAAJ,EAAa;AACT,eAAOA,OAAO,CAACgP,KAAD,CAAd;AACH;AACJ,KALD;;AAOA/C,WAAO,CAAC6wB,YAAR,GAAuB,UAAC19B,GAAD,EAAS;AAC5BmC,YAAM,CAACnC,GAAD,CAAN;;AACA,UAAI09B,YAAJ,EAAkB;AACd,eAAOA,YAAY,CAAC19B,GAAD,CAAnB;AACH;AACJ,KALD;AAMH,GApBa,CAAd;AAsBA,MAAIw2B,YAAY,GAAGD,MAAM,CAAC1pB,OAAD,CAAzB;AACAzM,SAAO,CAACS,MAAR,GAAiB21B,YAAY,CAAC31B,MAA9B;AAEA,SAAOT,OAAP;AACH;AAEM,SAAS+J,eAAT,CAAkB0C,OAAlB,EAAiI;AAAA,MAA/GA,OAA+G;AAA/GA,WAA+G,GAAjF,EAAiF;AAAA;;AAEpI,SAAO;AACH/C,MADG,cACAjK,IADA,EACee,OADf,EACgE;AAC/D,aAAOkJ,GAAE,CAACjK,IAAD,EAAOgN,OAAP,EAAgBjM,OAAhB,CAAT;AACH;AAHE,GAAP;AAKH;AAED8Z,wBAAM,CAAC5Q,EAAP,GAAYA,GAAZ,C;;ACtIA;AACA;AAEA;AAEO,SAASi0B,OAAT,GAAmB;AACtB,SAAOt+B,MAAM,CAAC0zB,yBAAS,CAACC,YAAV,CAAuBC,SAAxB,CAAb;AACA5zB,QAAM,CAACoQ,mBAAP,CAA2B,SAA3B,EAAsCusB,eAAtC;AACH,C;;ACRD;AAEA;AACA;AACA;AAEO,IAAIpS,aAAM,GAAG8C,kCAAW,EAAxB,C;;ACJP;AAEO,SAASkR,aAAT,CAAuB/wB,GAAvB,EAAoD;AAEvD;AACA;AACA;AACA;AACA;AAEA,MAAIwvB,eAAe,GAAG/hB,wBAAM,CAAC+hB,eAAP,CAAuBp2B,GAAvB,CAA2B4G,GAA3B,CAAtB;;AAEA,MAAIwvB,eAAJ,EAAqB;AAAA,4BACGA,eADH,gBACoB;AAAhC,UAAIr8B,OAAO,GAAIq8B,eAAJ,KAAX;AACDr8B,aAAO,CAAC+B,MAAR,CAAe,IAAIC,KAAJ,wCAAf;AACH;AACJ;;AAED,MAAIsY,wBAAM,CAACujB,iBAAX,EAA8B;AAC1BvjB,4BAAM,CAACujB,iBAAP,CAAyB3C,MAAzB,CAAgCruB,GAAhC;AACH;;AAED,MAAIyN,wBAAM,CAACwjB,aAAX,EAA0B;AACtBxjB,4BAAM,CAACwjB,aAAP,CAAqB5C,MAArB,CAA4BruB,GAA5B;AACH;;AAEDyN,0BAAM,CAAC+hB,eAAP,CAAuBnB,MAAvB,CAA8BruB,GAA9B;AACAyN,0BAAM,CAACyjB,OAAP,CAAe7C,MAAf,CAAsBruB,GAAtB;AACAyN,0BAAM,CAAC0jB,aAAP,CAAqB9C,MAArB,CAA4BruB,GAA5B;AACH,C;;AC/BD;AACA;AACA;AACA;AAEA;AACA;AACA;AACO,IAAIoxB,MAAM,GAAGrJ,KAAA,GAAsCyD,mBAAO,CAAC,EAAD,CAA7C,GAAsE,SAAnF;AAEA,SAASrQ,IAAT,GAAgB;AACnB,MAAI,CAAC1N,wBAAM,CAAC4jB,WAAZ,EAAyB;AACrB9B,qBAAiB;;AAEjB,QAAIxH,IAAJ,EAAyC;AACrCyD,yBAAO,CAAC,EAAD,CAAP,CAAoB8F,kBAApB;AACH;;AAEDC,sCAAW;AACXC,2CAAgB,CAAC;AAAE30B,QAAE,EAAFA,GAAF;AAAMqN,UAAI,EAAJA,KAAIA;AAAV,KAAD,CAAhB;AACH;;AAEDuD,0BAAM,CAAC4jB,WAAP,GAAqB,IAArB;AACH;AAEDlW,IAAI,G;;ACzBJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACee,6GAAf,E;;;;;;;;;;;;;;;;;;ACJA;AACA;AAEA;AAGO,SAASzf,cAAT,CAAwB1J,GAAxB,EAAqC0lB,KAArC,EAAkE;AAAA,MAA7BA,KAA6B;AAA7BA,SAA6B,GAAZ,CAAY;AAAA;;AAErE,MAAIA,KAAK,IAAI,CAAb,EAAgB;AACZ,WAAO,+BAAP;AACH;;AAED,MAAI;AACA,QAAI,CAAC1lB,GAAL,EAAU;AACN,kCAA2BsC,MAAM,CAACC,SAAP,CAAiB3C,QAAjB,CAA0BE,IAA1B,CAA+BE,GAA/B,CAA3B;AACH;;AAED,QAAI,OAAOA,GAAP,KAAe,QAAnB,EAA6B;AACzB,aAAOA,GAAP;AACH;;AAED,QAAIA,GAAG,YAAYoC,KAAnB,EAA0B;AACtB,UAAIL,KAAK,GAAG/B,GAAG,IAAIA,GAAG,CAAC+B,KAAvB;AACA,UAAI4H,OAAO,GAAG3J,GAAG,IAAIA,GAAG,CAAC2J,OAAzB;;AAEA,UAAI5H,KAAK,IAAI4H,OAAb,EAAsB;AAClB,YAAI5H,KAAK,CAAC1B,OAAN,CAAcsJ,OAAd,MAA2B,CAAC,CAAhC,EAAmC;AAC/B,iBAAO5H,KAAP;AACH,SAFD,MAEO;AACH,iBAAW4H,OAAX,UAAyB5H,KAAzB;AACH;AACJ,OAND,MAMO,IAAIA,KAAJ,EAAW;AACd,eAAOA,KAAP;AACH,OAFM,MAEA,IAAI4H,OAAJ,EAAa;AAChB,eAAOA,OAAP;AACH;AACJ;;AAED,QAAI,OAAO3J,GAAG,CAACJ,QAAX,KAAwB,UAA5B,EAAwC;AACpC,aAAOI,GAAG,CAACJ,QAAJ,EAAP;AACH;;AAED,WAAO0C,MAAM,CAACC,SAAP,CAAiB3C,QAAjB,CAA0BE,IAA1B,CAA+BE,GAA/B,CAAP;AAEH,GAhCD,CAgCE,OAAO02B,MAAP,EAAe;AAAE;AACf,gDAA2ChtB,cAAc,CAACgtB,MAAD,EAAShR,KAAK,GAAG,CAAjB,CAAzD;AACH;AACJ,C,CAED;;AACO,IAAIxb,IAAI,GAAG,SAAPA,IAAO,CAAI/F,MAAJ,EAAiE;AAC/E,MAAI,CAACA,MAAL,EAAa;AACT,WAAOA,MAAP;AACH;;AACD,MAAIoG,MAAM,GAAG,KAAb;AACA,SAAO,SAASC,WAAT,GAAkC;AACrC,QAAI,CAACD,MAAL,EAAa;AACTA,YAAM,GAAG,IAAT;AACA,aAAOpG,MAAM,CAACG,KAAP,CAAa,IAAb,EAAmBmG,SAAnB,CAAP;AACH;AACJ,GALD;AAMH,CAXM,C,CAaP;;AACO,SAASH,IAAT,GAAsC,CACzC;AACH;AAEM,SAAS4E,gBAAT,CAA0B/J,GAA1B,EAAwCyK,KAAxC,EAAwDhP,OAAxD,EAAsG;AACzG,MAAIuE,GAAG,CAAC+J,gBAAR,EAA0B;AACtB/J,OAAG,CAAC+J,gBAAJ,CAAqBU,KAArB,EAA4BhP,OAA5B;AACH,GAFD,MAEO;AACHuE,OAAG,CAACu5B,WAAJ,QAAsB9uB,KAAtB,EAAgChP,OAAhC;AACH;;AAED,SAAO;AACHC,UADG,oBACM;AACL,UAAIsE,GAAG,CAAC0K,mBAAR,EAA6B;AACzB1K,WAAG,CAAC0K,mBAAJ,CAAwBD,KAAxB,EAA+BhP,OAA/B;AACH,OAFD,MAEO;AACHuE,WAAG,CAACw5B,WAAJ,QAAsB/uB,KAAtB,EAAgChP,OAAhC;AACH;AACJ;AAPE,GAAP;AASH;AAEM,SAAS2E,QAAT,GAA6B;AAEhC,MAAIC,KAAK,GAAG,kBAAZ;AAEA,SAAO,aAAab,OAAb,CAAqB,IAArB,EAA2B,YAAM;AACpC,WAAOa,KAAK,CAACC,MAAN,CAAaC,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACE,MAAL,KAAgBJ,KAAK,CAAC9E,MAAjC,CAAb,CAAP;AACH,GAFM,CAAP;AAGH;AAIM,SAASk+B,SAAT,CAAmBr/B,IAAnB,EAA0CwH,QAA1C,EAA4F;AAC/F,OAAK,IAAInE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGrD,IAAI,CAACmB,MAAzB,EAAiCkC,CAAC,EAAlC,EAAsC;AAClCmE,YAAQ,CAACxH,IAAI,CAACqD,CAAD,CAAL,EAAUA,CAAV,CAAR;AACH;AACJ;AAEM,SAASi8B,UAAT,CAAoBt/B,IAApB,EAAmCwH,QAAnC,EAAqF;AACxF,OAAK,IAAI9C,IAAT,IAAgB1E,IAAhB,EAAsB;AAClB,QAAIA,IAAI,CAAC8F,cAAL,CAAoBpB,IAApB,CAAJ,EAA8B;AAC1B8C,cAAQ,CAACxH,IAAI,CAAC0E,IAAD,CAAL,EAAYA,IAAZ,CAAR;AACH;AACJ;AACJ;AAEM,SAAS6C,IAAT,CAA2CvH,IAA3C,EAAqDwH,QAArD,EAAgH;AACnH,MAAIC,KAAK,CAACC,OAAN,CAAc1H,IAAd,CAAJ,EAAyB;AACrBq/B,aAAS,CAACr/B,IAAD,EAAOwH,QAAP,CAAT;AACH,GAFD,MAEO,IAAI,OAAOxH,IAAP,KAAgB,QAAhB,IAA4BA,IAAI,KAAK,IAAzC,EAA+C;AAClDs/B,cAAU,CAACt/B,IAAD,EAAOwH,QAAP,CAAV;AACH;AACJ;AAEM,SAASI,aAAT,CAAoD5H,IAApD,EAA8DwH,QAA9D,EAAyH+3B,KAAzH,EAAiJ;AAAA,MAAxBA,KAAwB;AAAxBA,SAAwB,GAAP,CAAO;AAAA;;AAEpJ,MAAIA,KAAK,IAAI,GAAb,EAAkB;AACd,UAAM,IAAI18B,KAAJ,uEAAN;AACH;;AAED,MAAIiG,MAAJ;;AAEA,MAAI,OAAO9I,IAAP,KAAgB,QAAhB,IAA4BA,IAAI,KAAK,IAArC,IAA6C,CAACyH,KAAK,CAACC,OAAN,CAAc1H,IAAd,CAAlD,EAAuE;AACnE8I,UAAM,GAAG,EAAT;AACH,GAFD,MAEO,IAAIrB,KAAK,CAACC,OAAN,CAAc1H,IAAd,CAAJ,EAAyB;AAC5B8I,UAAM,GAAG,EAAT;AACH,GAFM,MAEA;AACH,UAAM,IAAI7E,SAAJ,oBAAgC,OAAOjE,IAAvC,CAAN;AACH;;AAEDuH,MAAI,CAACvH,IAAD,EAAO,UAACw/B,SAAD,EAAY96B,GAAZ,EAAoB;AAE3B,QAAIjC,MAAM,GAAG+E,QAAQ,CAACg4B,SAAD,EAAY96B,GAAZ,CAArB;;AAEA,QAAI,OAAOjC,MAAP,KAAkB,WAAtB,EAAmC;AAC/B;AACAqG,YAAM,CAACpE,GAAD,CAAN,GAAcjC,MAAd;AACH,KAHD,MAGO,IAAI,OAAO+8B,SAAP,KAAqB,QAArB,IAAiCA,SAAS,KAAK,IAAnD,EAAyD;AAC5D;AACA12B,YAAM,CAACpE,GAAD,CAAN,GAAckD,aAAa,CAAC43B,SAAD,EAAYh4B,QAAZ,EAAsB+3B,KAAK,GAAG,CAA9B,CAA3B;AACH,KAHM,MAGA;AACH;AACAz2B,YAAM,CAACpE,GAAD,CAAN,GAAc86B,SAAd;AACH;AACJ,GAdG,CAAJ,CAhBoJ,CAgCpJ;;AACA,SAAO12B,MAAP;AACH;AAEM,SAAS3B,YAAT,CAAsBvC,MAAtB,EAAyCd,IAAzC,EAAkF;AACrF,MAAID,OAAJ;;AAEA,WAASuD,WAAT,GAAuB;AACnBvD,WAAO,GAAG7C,UAAU,CAACoG,WAAD,EAActD,IAAd,CAApB;AACAc,UAAM,CAACrE,IAAP;AACH;;AAEDsD,SAAO,GAAG7C,UAAU,CAACoG,WAAD,EAActD,IAAd,CAApB;AAEA,SAAO;AACHxC,UADG,oBACM;AACLyC,kBAAY,CAACF,OAAD,CAAZ;AACH;AAHE,GAAP;AAKH;AAEM,SAASgmB,OAAT,CAAiB7pB,IAAjB,EAAyC;AAC5C,SAAO+C,MAAM,CAACC,SAAP,CAAiB3C,QAAjB,CAA0BE,IAA1B,CAA+BP,IAA/B,MAAyC,iBAAhD;AACH;AAKD;AACO,IAAIy/B,mBAAiC,GAAG,SAApCA,cAAoC,CAAY76B,MAAZ,EAA0E;AAErH,MAAI86B,OAAO,GAAG,IAAIx2B,sBAAJ,EAAd,CAFqH,CAIrH;;AACA,SAAO,SAASy2B,eAAT,CAAyBC,GAAzB,EAAwC;AAC3C,QAAIn9B,MAAM,GAAGi9B,OAAO,CAAC54B,GAAR,CAAY84B,GAAZ,CAAb;;AAEA,QAAI,OAAOn9B,MAAP,KAAkB,WAAtB,EAAmC;AAC/B,aAAOA,MAAP;AACH;;AAEDA,UAAM,GAAGmC,MAAM,CAACrE,IAAP,CAAY,IAAZ,EAAkBq/B,GAAlB,CAAT;;AAEA,QAAI,OAAOn9B,MAAP,KAAkB,WAAtB,EAAmC;AAC/Bi9B,aAAO,CAACn3B,GAAR,CAAYq3B,GAAZ,EAAiBn9B,MAAjB;AACH;;AAED,WAAOA,MAAP;AACH,GAdD;AAeH,CApBM;AAsBA,SAASq3B,aAAT,GAAkC;AACrC,MAAIlM,iDAAO,EAAX,EAAe;AACX,WAAOgG,yBAAS,CAACc,YAAV,CAAuBtK,KAA9B;AACH;;AACD,MAAIyD,kDAAQ,EAAZ,EAAgB;AACZ,WAAO+F,yBAAS,CAACc,YAAV,CAAuB7jC,MAA9B;AACH;;AACD,SAAO+iC,yBAAS,CAACc,YAAV,CAAuBC,QAA9B;AACH;AAEM,SAASyF,aAAT,CAAkCx0B,GAAlC,EAA2CyC,QAA3C,EAAiEw3B,MAAjE,EAAkG;AAErG,MAAIC,YAAJ;AACA,MAAIC,WAAJ;;AAEA,MAAI;AACA,QAAIx5B,IAAI,CAACC,SAAL,CAAe,EAAf,MAAuB,IAA3B,EAAiC;AAC7B;AACAs5B,kBAAY,GAAG/8B,MAAM,CAACC,SAAP,CAAiBg9B,MAAhC,CAF6B,CAG7B;;AACA,aAAOj9B,MAAM,CAACC,SAAP,CAAiBg9B,MAAxB;AACH;;AAED,QAAIz5B,IAAI,CAACC,SAAL,CAAe,EAAf,MAAuB,IAA3B,EAAiC;AAC7B,YAAM,IAAI3D,KAAJ,4CAAN;AACH;;AAED,QAAI0D,IAAI,CAACC,SAAL,CAAe,EAAf,MAAuB,IAA3B,EAAiC;AAC7B;AACAu5B,iBAAW,GAAIt4B,KAAK,CAACzE,SAAN,CAAgBg9B,MAA/B,CAF6B,CAG7B;;AACA,aAAOv4B,KAAK,CAACzE,SAAN,CAAgBg9B,MAAvB;AACH;;AAED,QAAIz5B,IAAI,CAACC,SAAL,CAAe,EAAf,MAAuB,IAA3B,EAAiC;AAC7B,YAAM,IAAI3D,KAAJ,4CAAN;AACH;AAEJ,GAvBD,CAuBE,OAAOpC,GAAP,EAAY;AACV,UAAM,IAAIoC,KAAJ,qCAA6CpC,GAAG,CAAC2J,OAAjD,CAAN;AACH;;AAED,MAAI3H,MAAM,GAAG8D,IAAI,CAACC,SAAL,CAAejG,IAAf,CAAoB,IAApB,EAA0BqF,GAA1B,EAA+ByC,QAA/B,EAAyCw3B,MAAzC,CAAb;;AAEA,MAAI;AACA,QAAIC,YAAJ,EAAkB;AACd;AACA/8B,YAAM,CAACC,SAAP,CAAiBg9B,MAAjB,GAA0BF,YAA1B,CAFc,CAE0B;AAC3C;;AAED,QAAIC,WAAJ,EAAiB;AACb;AACAt4B,WAAK,CAACzE,SAAN,CAAgBg9B,MAAhB,GAAyBD,WAAzB,CAFa,CAEyB;AACzC;AAEJ,GAXD,CAWE,OAAOt/B,GAAP,EAAY;AACV,UAAM,IAAIoC,KAAJ,qCAA6CpC,GAAG,CAAC2J,OAAjD,CAAN;AACH;;AAGD,SAAO3H,MAAP;AACH;AAEM,SAASk6B,SAAT,CAAmB38B,IAAnB,EAA0C;AAC7C,SAAOuG,IAAI,CAAC05B,KAAL,CAAWjgC,IAAX,CAAP;AACH;AAEM,SAAS05B,8BAAT,GAAoD;AAEvD,MAAI7M,sDAAY,CAAC3sB,MAAD,CAAZ,CAAqBuJ,KAArB,CAA2B,iCAA3B,CAAJ,EAAmE;AAC/D,WAAO,IAAP;AACH;;AAED,MAAI,CAACgR,sBAAM,CAAC8a,uBAAZ,EAAqC;AACjC,WAAO,IAAP;AACH;;AAED,SAAO,KAAP;AACH,C;;;;;;;;ACxRD;AACA;AACA;AAEA;AACA;AAEA;AAEApa,wBAAM,CAACyjB,OAAP,GAAiBzjB,wBAAM,CAACyjB,OAAP,IAAkB,IAAI11B,sBAAJ,EAAnC;AAEO,IAAIg2B,gBAAgB,GAAGv0B,IAAI,CAAC,YAAM;AACrCwQ,0BAAM,CAAC5Q,EAAP,CAAUqpB,yBAAS,CAACU,kBAAV,CAA6BC,MAAvC,EAA+C;AAAEpF,UAAM,EAAEyE,yBAAS,CAAC1J;AAApB,GAA/C,EAA+E,gBAAmG;AAAA,QAAhGrkB,MAAgG,QAAhGA,MAAgG;AAAA,QAAxFspB,MAAwF,QAAxFA,MAAwF;AAAA,QAAhF5L,IAAgF,QAAhFA,IAAgF;AAE9K,QAAIqb,OAAO,GAAGzjB,wBAAM,CAACyjB,OAAP,CAAe93B,GAAf,CAAmBjB,MAAnB,CAAd;;AAEA,QAAI,CAAC+4B,OAAL,EAAc;AACV,YAAM,IAAI/7B,KAAJ,iEAAN;AACH;;AAED,QAAIq9B,IAAI,GAAGtB,OAAO,CAACrb,IAAI,CAAC9W,EAAN,CAAlB;;AAEA,QAAI,CAACyzB,IAAL,EAAW;AACP,YAAM,IAAIr9B,KAAJ,qCAA6C0gB,IAAI,CAAC9W,EAAlD,CAAN;AACH;;AAED,QAAI,CAACyiB,qDAAW,CAACgR,IAAI,CAAClhB,MAAN,EAAcmQ,MAAd,CAAhB,EAAuC;AACnC,YAAM,IAAItsB,KAAJ,oBAA4Bq9B,IAAI,CAAClhB,MAAjC,+BAAmEmQ,MAAnE,CAAN;AACH;;AAED,WAAOntB,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAC1B,aAAOs8B,IAAI,CAACt7B,MAAL,CAAYG,KAAZ,CAAkB;AAAEc,cAAM,EAANA,MAAF;AAAUspB,cAAM,EAANA,MAAV;AAAkB5L,YAAI,EAAJA;AAAlB,OAAlB,EAA4CA,IAAI,CAACze,IAAjD,CAAP;AAEH,KAHM,EAGJtE,IAHI,CAGC,UAAAiC,MAAM,EAAI;AAEd,aAAO;AACHA,cAAM,EAANA,MADG;AAEHgK,UAAE,EAAI8W,IAAI,CAAC9W,EAFR;AAGHnM,YAAI,EAAEijB,IAAI,CAACjjB;AAHR,OAAP;AAKH,KAVM,CAAP;AAWH,GA7BD;AA8BH,CA/BiC,CAA3B;;AAiCP,SAAS6/B,YAAT,CAAsBngC,IAAtB,EAAoCoI,IAApC,EAA6D;AACzD,SAAO,OAAOpI,IAAP,KAAgB,QAAhB,IAA4BA,IAAI,KAAK,IAArC,IAA6CA,IAAI,CAACyL,QAAL,KAAkBrD,IAAtE;AACH;;AAQM,SAASg4B,eAAT,CAAyBC,WAAzB,EAA8DrhB,MAA9D,EAA+Fpa,MAA/F,EAAkHtE,IAAlH,EAAoJ;AAEvJ,MAAImM,EAAE,GAAGzG,QAAQ,EAAjB;AAEA,MAAI44B,OAAO,GAAGzjB,wBAAM,CAACyjB,OAAP,CAAe93B,GAAf,CAAmBu5B,WAAnB,CAAd;;AAEA,MAAI,CAACzB,OAAL,EAAc;AACVA,WAAO,GAAG,EAAV;AACAzjB,4BAAM,CAACyjB,OAAP,CAAer2B,GAAf,CAAmB83B,WAAnB,EAAgCzB,OAAhC;AACH;;AAEDA,SAAO,CAACnyB,EAAD,CAAP,GAAc;AAAEuS,UAAM,EAANA,MAAF;AAAUpa,UAAM,EAANA;AAAV,GAAd;AAEA,SAAO;AACH6G,YAAQ,EAAEmoB,yBAAS,CAACgB,mBAAV,CAA8BL,MADrC;AAEH+L,UAAM,EAAI7zB,EAFP;AAGH8zB,YAAQ,EAAEjgC;AAHP,GAAP;AAKH;;AAOD,SAASkgC,cAAT,CAAwB//B,GAAxB,EAAuD;AACnD,SAAO;AACHgL,YAAQ,EAAKmoB,yBAAS,CAACgB,mBAAV,CAA8B3mC,KADxC;AAEHwyC,eAAW,EAAEt2B,cAAc,CAAC1J,GAAD,CAFxB;AAGH;AACAigC,YAAQ,EAAKjgC,GAAG,CAAC47B;AAJd,GAAP;AAMH;;AAOD,SAASsE,gBAAT,CAA0BN,WAA1B,EAA+DrhB,MAA/D,EAAgGne,OAAhG,EAA+HP,IAA/H,EAAiK;AAC7J,SAAO;AACHmL,YAAQ,EAAEmoB,yBAAS,CAACgB,mBAAV,CAA8BC,OADrC;AAEH+L,YAAQ,EAAER,eAAe,CAACC,WAAD,EAAcrhB,MAAd,EAAsB,UAACrd,OAAD,EAAUiB,MAAV;AAAA,aAAqB/B,OAAO,CAACL,IAAR,CAAamB,OAAb,EAAsBiB,MAAtB,CAArB;AAAA,KAAtB,EAA8EtC,IAA9E;AAFtB,GAAP;AAIH;;AAED,SAASugC,qBAAT,CAA+BR,WAA/B,EAAoErhB,MAApE,EAAqGne,OAArG,EAAoIP,IAApI,EAAsK;AAClK,SAAO;AACHmL,YAAQ,EAAEmoB,yBAAS,CAACgB,mBAAV,CAA8BE,aADrC;AAEH8L,YAAQ,EAAER,eAAe,CAACC,WAAD,EAAcrhB,MAAd,EAAsB,UAACrd,OAAD,EAAUiB,MAAV;AAAA,aAAqB/B,OAAO,CAACL,IAAR,CAAamB,OAAb,EAAsBiB,MAAtB,CAArB;AAAA,KAAtB,EAA8EtC,IAA9E;AAFtB,GAAP;AAIH;;AAOD,SAASwgC,cAAT,CAAwBz3B,KAAxB,EAA0D;AACtD,SAAO;AACHoC,YAAQ,EAAImoB,yBAAS,CAACgB,mBAAV,CAA8BG,KADvC;AAEHgM,cAAU,EAAE13B,KAAK,CAACxD;AAFf,GAAP;AAIH;;AAEM,SAASq0B,gBAAT,CAA0BmG,WAA1B,EAA+DrhB,MAA/D,EAAgGpZ,GAAhG,EAAuH;AAE1H,SAAOgC,aAAa,CAAC;AAAEhC,OAAG,EAAHA;AAAF,GAAD,EAAU,UAAC5F,IAAD,EAAO0E,GAAP,EAAe;AACzC,QAAI,OAAO1E,IAAP,KAAgB,UAApB,EAAgC;AAC5B,aAAOogC,eAAe,CAACC,WAAD,EAAcrhB,MAAd,EAAsBhf,IAAtB,EAA4B0E,GAAG,CAACrE,QAAJ,EAA5B,CAAtB;AACH;;AAED,QAAIL,IAAI,YAAY6C,KAApB,EAA2B;AACvB,aAAO29B,cAAc,CAACxgC,IAAD,CAArB;AACH;;AAED,QAAIE,MAAM,CAACD,OAAP,IAAkBD,IAAI,YAAYE,MAAM,CAACD,OAA7C,EAAsD;AAClD,aAAO0gC,gBAAgB,CAACN,WAAD,EAAcrhB,MAAd,EAAsBhf,IAAtB,EAA4B0E,GAAG,CAACrE,QAAJ,EAA5B,CAAvB;AACH;;AAED,QAAI2B,yCAAY,CAACjC,SAAb,CAAuBC,IAAvB,CAAJ,EAAkC;AAC9B;AACA,aAAO6gC,qBAAqB,CAACR,WAAD,EAAcrhB,MAAd,EAAsBhf,IAAtB,EAA4B0E,GAAG,CAACrE,QAAJ,EAA5B,CAA5B;AACH;;AAED,QAAIwpB,OAAO,CAAC7pB,IAAD,CAAX,EAAmB;AACf;AACA,aAAO8gC,cAAc,CAAC9gC,IAAD,CAArB;AACH;AACJ,GAtBmB,CAAb,CAsBJ4F,GAtBH;AAuBH;AAEM,SAASo7B,iBAAT,CAA2Bn7B,MAA3B,EAA2DspB,MAA3D,EAA4EvpB,GAA5E,EAAqG;AAExG,WAASq7B,OAAT,GAAyC;AACrC,QAAIn8B,IAAI,GAAG2C,KAAK,CAACzE,SAAN,CAAgB6D,KAAhB,CAAsBtG,IAAtB,CAA2B2K,SAA3B,CAAX;AACA,WAAOiQ,wBAAM,CAACvD,IAAP,CAAY/R,MAAZ,EAAoB+tB,yBAAS,CAACU,kBAAV,CAA6BC,MAAjD,EAAyD;AAC5D9nB,QAAE,EAAI7G,GAAG,CAAC06B,MADkD;AAE5DhgC,UAAI,EAAEsF,GAAG,CAAC26B,QAFkD;AAG5Dz7B,UAAI,EAAJA;AAH4D,KAAzD,EAKJ;AAAEka,YAAM,EAAEmQ,MAAV;AAAkBtrB,aAAO,EAAE,CAAC;AAA5B,KALI,EAK6BrD,IAL7B,CAKkC,iBAAc;AAAA,UAAX+iB,IAAW,SAAXA,IAAW;AACnD,aAAOA,IAAI,CAAC9gB,MAAZ;AACH,KAPM,EAOJ,UAAAhC,GAAG,EAAI;AACN,YAAMA,GAAN;AACH,KATM,CAAP;AAUH;;AAEDwgC,SAAO,CAACV,QAAR,GAAmB36B,GAAG,CAAC26B,QAAvB;AACAU,SAAO,CAACC,WAAR,GAAsB,IAAtB;AAEAD,SAAO,CAACp7B,MAAR,GAAiBA,MAAjB;AACAo7B,SAAO,CAAC9R,MAAR,GAAiBA,MAAjB;AAEA,SAAO8R,OAAP;AACH;AAEM,SAASE,gBAAT,CAA0Bt7B,MAA1B,EAA0DspB,MAA1D,EAA2EvpB,GAA3E,EAAiG;AACpG,MAAInF,GAAG,GAAG,IAAIoC,KAAJ,CAAU+C,GAAG,CAAC66B,WAAd,CAAV;;AACA,MAAI76B,GAAG,CAAC86B,QAAR,EAAkB;AACd;AACAjgC,OAAG,CAAC47B,IAAJ,GAAWz2B,GAAG,CAAC86B,QAAf;AACH;;AACD,SAAOjgC,GAAP;AACH;AAEM,SAAS2gC,uBAAT,CAAiCv7B,MAAjC,EAAiEspB,MAAjE,EAAkF7qB,IAAlF,EAAuH;AAC1H,SAAO,IAAItC,yCAAJ,CAAiB,UAACL,OAAD,EAAUiB,MAAV;AAAA,WAAqBo+B,iBAAiB,CAACn7B,MAAD,EAASspB,MAAT,EAAiB7qB,IAAI,CAACs8B,QAAtB,CAAjB,CAAiDj/B,OAAjD,EAA0DiB,MAA1D,CAArB;AAAA,GAAjB,CAAP;AACH;AAEM,SAASy+B,kBAAT,CAA4Bx7B,MAA5B,EAA4DspB,MAA5D,EAA6E7qB,IAA7E,EAAkH;AACrH,MAAI,CAACpE,MAAM,CAACD,OAAZ,EAAqB;AACjB,WAAOmhC,uBAAuB,CAACv7B,MAAD,EAASspB,MAAT,EAAiB7qB,IAAjB,CAA9B;AACH;;AAED,SAAO,IAAIpE,MAAM,CAACD,OAAX,CAAmB,UAAC0B,OAAD,EAAUiB,MAAV;AAAA,WAAqBo+B,iBAAiB,CAACn7B,MAAD,EAASspB,MAAT,EAAiB7qB,IAAI,CAACs8B,QAAtB,CAAjB,CAAiDj/B,OAAjD,EAA0DiB,MAA1D,CAArB;AAAA,GAAnB,CAAP;AACH;AAEM,SAAS0+B,gBAAT,CAA0Bz7B,MAA1B,EAA0DspB,MAA1D,EAA2EnvB,IAA3E,EAAmG;AACtG;AACA,SAAO,IAAIwJ,MAAJ,CAAWxJ,IAAI,CAAC+gC,UAAhB,CAAP;AACH;AAEM,SAASnE,kBAAT,CAA4B/2B,MAA5B,EAA4DspB,MAA5D,EAA6EvpB,GAA7E,EAAoG;AAEvG,SAAOgC,aAAa,CAAC;AAAEhC,OAAG,EAAHA;AAAF,GAAD,EAAU,UAAC5F,IAAD,EAAU;AACpC,QAAI,OAAOA,IAAP,KAAgB,QAAhB,IAA4BA,IAAI,KAAK,IAAzC,EAA+C;AAC3C;AACH;;AAED,QAAImgC,YAAY,CAACngC,IAAD,EAAO4zB,yBAAS,CAACgB,mBAAV,CAA8BL,MAArC,CAAhB,EAA8D;AAC1D,aAAOyM,iBAAiB,CAACn7B,MAAD,EAASspB,MAAT,EAAiBnvB,IAAjB,CAAxB;AACH;;AAED,QAAImgC,YAAY,CAACngC,IAAD,EAAO4zB,yBAAS,CAACgB,mBAAV,CAA8B3mC,KAArC,CAAhB,EAA6D;AACzD,aAAOkzC,gBAAgB,CAACt7B,MAAD,EAASspB,MAAT,EAAiBnvB,IAAjB,CAAvB;AACH;;AAED,QAAImgC,YAAY,CAACngC,IAAD,EAAO4zB,yBAAS,CAACgB,mBAAV,CAA8BC,OAArC,CAAhB,EAA+D;AAC3D,aAAOwM,kBAAkB,CAACx7B,MAAD,EAASspB,MAAT,EAAiBnvB,IAAjB,CAAzB;AACH;;AAED,QAAImgC,YAAY,CAACngC,IAAD,EAAO4zB,yBAAS,CAACgB,mBAAV,CAA8BE,aAArC,CAAhB,EAAqE;AACjE,aAAOsM,uBAAuB,CAACv7B,MAAD,EAASspB,MAAT,EAAiBnvB,IAAjB,CAA9B;AACH;;AAED,QAAImgC,YAAY,CAACngC,IAAD,EAAO4zB,yBAAS,CAACgB,mBAAV,CAA8BG,KAArC,CAAhB,EAA6D;AACzD,aAAOuM,gBAAgB,CAACz7B,MAAD,EAASspB,MAAT,EAAiBnvB,IAAjB,CAAvB;AACH;AAEJ,GAzBmB,CAAb,CAyBJ4F,GAzBH;AA0BH,C;;ACjOD;AACA;AACA;AAEA;AACA;AAEA;AAEAuV,wBAAM,CAAC0jB,aAAP,GAAuB1jB,wBAAM,CAAC0jB,aAAP,IAAwB,IAAI31B,sBAAJ,EAA/C;AAEO,SAASq4B,OAAT,CAAiBlgC,OAAjB,EAA4F;AAC/F8Z,0BAAM,CAAC5Q,EAAP,CAAUqpB,yBAAS,CAACU,kBAAV,CAA6BE,KAAvC,EAA8C;AAAExV,UAAM,EAAE4U,yBAAS,CAAC1J;AAApB,GAA9C,EAA8E,gBAAwB;AAAA,QAArBrkB,MAAqB,QAArBA,MAAqB;AAAA,QAAbspB,MAAa,QAAbA,MAAa;AAClG,WAAO9tB,OAAO,CAAC;AAAEwE,YAAM,EAANA,MAAF;AAAUspB,YAAM,EAANA;AAAV,KAAD,CAAd;AACH,GAFD;AAGH;AAEM,SAASsO,QAAT,CAAkB/vB,GAAlB,EAAmF;AACtF,SAAOyN,wBAAM,CAACvD,IAAP,CAAYlK,GAAZ,EAAiBkmB,yBAAS,CAACU,kBAAV,CAA6BE,KAA9C,EAAqD,EAArD,EAAyD;AAAExV,UAAM,EAAE4U,yBAAS,CAAC1J,QAApB;AAA8BrmB,WAAO,EAAE,CAAC;AAAxC,GAAzD,EACFrD,IADE,CACG,iBAAgB;AAAA,QAAb2uB,MAAa,SAAbA,MAAa;AAClB,WAAO;AAAEA,YAAM,EAANA;AAAF,KAAP;AACH,GAHE,CAAP;AAIH;AAEM,SAAS8P,WAAT,GAAuB;AAE1BsC,SAAO,CAAC,iBAAwB;AAAA,QAArB17B,MAAqB,SAArBA,MAAqB;AAAA,QAAbspB,MAAa,SAAbA,MAAa;AAC5B,QAAItuB,OAAO,GAAGsa,wBAAM,CAAC0jB,aAAP,CAAqB/3B,GAArB,CAAyBjB,MAAzB,KAAoC,IAAI7D,yCAAJ,EAAlD;AACAnB,WAAO,CAACc,OAAR,CAAgB;AAAEwtB,YAAM,EAANA;AAAF,KAAhB;AACAhU,4BAAM,CAAC0jB,aAAP,CAAqBt2B,GAArB,CAAyB1C,MAAzB,EAAiChF,OAAjC;AACH,GAJM,CAAP;AAMA,MAAI4pB,MAAM,GAAG8C,qDAAW,EAAxB;;AACA,MAAI9C,MAAJ,EAAY;AACRgT,YAAQ,CAAChT,MAAD,CAAR,CAAiBjnB,KAAjB,CAAuBuH,IAAvB;AACH;AACJ;AAEM,SAASyyB,kBAAT,CAA4B9vB,GAA5B,EAAyC7J,OAAzC,EAAkEvD,IAAlE,EAAgI;AAAA,MAAvFuD,OAAuF;AAAvFA,WAAuF,GAApE,IAAoE;AAAA;;AAAA,MAA9DvD,IAA8D;AAA9DA,QAA8D,GAA9C,QAA8C;AAAA;;AAEnI,MAAIO,OAAO,GAAGsa,wBAAM,CAAC0jB,aAAP,CAAqB/3B,GAArB,CAAyB4G,GAAzB,CAAd;;AAEA,MAAI7M,OAAJ,EAAa;AACT,WAAOA,OAAP;AACH;;AAEDA,SAAO,GAAG,IAAImB,yCAAJ,EAAV;AACAmZ,0BAAM,CAAC0jB,aAAP,CAAqBt2B,GAArB,CAAyBmF,GAAzB,EAA8B7M,OAA9B;;AAEA,MAAIgD,OAAO,KAAK,CAAC,CAAjB,EAAoB;AAChB7C,cAAU,CAAC;AAAA,aAAMH,OAAO,CAAC+B,MAAR,CAAe,IAAIC,KAAJ,CAAcvC,IAAd,4BAA2CuD,OAA3C,QAAf,CAAN;AAAA,KAAD,EAAiFA,OAAjF,CAAV;AACH;;AAED,SAAOhD,OAAP;AACH,C;;ACtDD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;;;;;;;;;;ACDO,SAASgsB,YAAT,GAAiC;AACpC,SAAO3sB,MAAM,CAACiQ,SAAP,CAAiB2c,aAAjB,IAAkC5sB,MAAM,CAACiQ,SAAP,CAAiBC,SAA1D;AACH;AAEM,SAASoxB,QAAT,CAAkBpxB,SAAlB,EAAkE;AAAA,MAAhDA,SAAgD;AAAhDA,aAAgD,GAA1Byc,YAAY,EAAc;AAAA;;AACrE,MAAIzc,SAAS,CAAC3G,KAAV,CAAgB,sGAAhB,CAAJ,EAA6H;AACzH,WAAO,IAAP;AACH;;AAED,SAAO,KAAP;AACH;AAEM,SAASg4B,SAAT,GAA+B;AAClC,MAAIrxB,SAAS,GAAGyc,YAAY,EAA5B;AACA,SAAQ,wDAAD,CAA2DzT,IAA3D,CAAgEhJ,SAAhE,KACF,QAAD,CAAWgJ,IAAX,CAAgBhJ,SAAhB,CADG,IAEN,+BAAD,CAAkCgJ,IAAlC,CAAuChJ,SAAvC,CAFA;AAGH;AAEM,SAASsxB,YAAT,GAAkC;AACrC,SAAQxhC,MAAM,CAACiQ,SAAP,CAAiBwxB,UAAjB,KAAgC,IAAhC,IAAwCzhC,MAAM,CAAC0hC,UAAP,CAAkB,4BAAlB,EAAgD73B,OAAhG;AACH;AAEM,SAAS83B,iBAAT,CAA2BC,EAA3B,EAAoE;AAAA,MAAzCA,EAAyC;AAAzCA,MAAyC,GAA1BjV,YAAY,EAAc;AAAA;;AACvE,SAAQiV,EAAE,CAAChhC,OAAH,CAAW,MAAX,MAAuB,CAAC,CAAzB,IAAgCghC,EAAE,CAAChhC,OAAH,CAAW,MAAX,MAAuB,CAAC,CAA/D;AACH;AAEM,SAASihC,YAAT,CAAsBD,EAAtB,EAA+D;AAAA,MAAzCA,EAAyC;AAAzCA,MAAyC,GAA1BjV,YAAY,EAAc;AAAA;;AAClE,SAAQ,QAAD,CAAWzT,IAAX,CAAgB0oB,EAAhB,CAAP;AACH;AAEM,SAASE,SAAT,CAAmBF,EAAnB,EAA4D;AAAA,MAAzCA,EAAyC;AAAzCA,MAAyC,GAA1BjV,YAAY,EAAc;AAAA;;AAC/D,SAAQ,SAAD,CAAYzT,IAAZ,CAAiB0oB,EAAjB,CAAP;AACH;AAEM,SAASG,WAAT,CAAqBH,EAArB,EAA8D;AAAA,MAAzCA,EAAyC;AAAzCA,MAAyC,GAA1BjV,YAAY,EAAc;AAAA;;AACjE,SAAOiV,EAAE,CAAChhC,OAAH,CAAW,YAAX,IAA2B,CAAC,CAAnC;AACH;AAEM,SAASohC,SAAT,CAAmBJ,EAAnB,EAA4D;AAAA,MAAzCA,EAAyC;AAAzCA,MAAyC,GAA1BjV,YAAY,EAAc;AAAA;;AAC/D,SAAQ,SAAD,CAAYzT,IAAZ,CAAiB0oB,EAAjB,CAAP;AACH;AAEM,SAASK,KAAT,CAAeL,EAAf,EAAwD;AAAA,MAAzCA,EAAyC;AAAzCA,MAAyC,GAA1BjV,YAAY,EAAc;AAAA;;AAC3D,SAAQ,kBAAD,CAAqBzT,IAArB,CAA0B0oB,EAA1B,CAAP;AACH;AAEM,SAASM,iBAAT,CAA2BN,EAA3B,EAAoE;AAAA,MAAzCA,EAAyC;AAAzCA,MAAyC,GAA1BjV,YAAY,EAAc;AAAA;;AACvE,SAAQ,SAAD,CAAYzT,IAAZ,CAAiB0oB,EAAjB,CAAP;AACH;AAEM,SAASO,WAAT,CAAqBP,EAArB,EAA8D;AAAA,MAAzCA,EAAyC;AAAzCA,MAAyC,GAA1BjV,YAAY,EAAc;AAAA;;AACjE,SAAQ,WAAD,CAAczT,IAAd,CAAmB0oB,EAAnB,CAAP;AACH;AAEM,SAASQ,YAAT,CAAsBR,EAAtB,EAA+D;AAAA,MAAzCA,EAAyC;AAAzCA,MAAyC,GAA1BjV,YAAY,EAAc;AAAA;;AAClE,MAAIsV,KAAK,CAACL,EAAD,CAAT,EAAe;AACX,QAAIM,iBAAiB,CAACN,EAAD,CAArB,EAA2B;AACvB,aAAO,IAAP;AACH;;AACD,WAAQ,2BAAD,CAA8B1oB,IAA9B,CAAmC0oB,EAAnC,CAAP;AACH;;AACD,SAAO,KAAP;AACH;AAEM,SAASS,gBAAT,CAA0BT,EAA1B,EAAmE;AAAA,MAAzCA,EAAyC;AAAzCA,MAAyC,GAA1BjV,YAAY,EAAc;AAAA;;AACtE,MAAIqV,SAAS,CAACJ,EAAD,CAAb,EAAmB;AACf,WAAQ,iBAAD,CAAoB1oB,IAApB,CAAyB0oB,EAAzB,KAAgC,CAACG,WAAW,CAACH,EAAD,CAAnD;AACH;;AACD,SAAO,KAAP;AACH;AAEM,SAAS5d,WAAT,GAA0B;AAE7B,MAAIhkB,MAAM,CAACwM,QAAP,CAAgByX,YAApB,EAAkC;AAC9B,WAAO,IAAP;AACH;;AAED,SAAO1W,OAAO,CACVvN,MAAM,CAACiQ,SAAP,IACAjQ,MAAM,CAACiQ,SAAP,CAAiBC,SADjB,IAEC,kBAAD,CAAqBgJ,IAArB,CAA0BlZ,MAAM,CAACiQ,SAAP,CAAiBC,SAA3C,CAHU,CAAd;AAKH;AAEM,SAASoyB,cAAT,GAAoC;AACvC,MAAIC,KAAK,GAAGviC,MAAM,CAACwM,QAAP,CAAgBE,aAAhB,CAA8B,oCAA9B,CAAZ;AACA,MAAI81B,QAAQ,GAAGxiC,MAAM,CAACwM,QAAP,CAAgBE,aAAhB,CAA8B,yBAA9B,CAAf;;AACA,MAAI61B,KAAK,IAAIC,QAAb,EAAuB;AACnB,WAAO,IAAP;AACH;;AACD,SAAO,KAAP;AACH;AAEM,SAASC,UAAT,GAAgC;AACnC,MAAI,OAAOC,OAAP,KAAmB,WAAnB,IAAkCA,OAAO,CAACC,QAA1C,IAAsDD,OAAO,CAACC,QAAR,CAAiBC,QAA3E,EAAqF;AACjF,WAAO,IAAP;AACH;;AACD,SAAO,KAAP;AACH;AAEM,SAASC,YAAT,GAAkC;AAErC;AAEA,MAAI7iC,MAAM,CAACwM,QAAP,CAAgByX,YAApB,EAAkC;AAC9B,QAAI;AACA,UAAIoW,MAAM,GAAGr6B,MAAM,CAACq6B,MAApB;AAEAr6B,YAAM,CAACq6B,MAAP,GAAgB,kBAAhB;;AAEA,UAAIr6B,MAAM,CAACq6B,MAAP,KAAkB,kBAAtB,EAA0C;AACtCr6B,cAAM,CAACq6B,MAAP,GAAgBA,MAAhB;AAEA,eAAO,IAAP;AACH;;AAED,aAAO,KAAP;AAEH,KAbD,CAaE,OAAO95B,GAAP,EAAY;AAEV,aAAO,KAAP;AACH;AACJ;;AAED,SAAO,KAAP;AACH;AAEM,SAASuiC,UAAT,GAAgC;AACnC,MAAI5yB,SAAS,GAAGyc,YAAY,EAA5B;AACA,SAAQ,qCAAD,CAAwCzT,IAAxC,CAA6ChJ,SAA7C,CAAP;AACH;AAEM,SAAS6yB,cAAT,CAAwBnB,EAAxB,EAAiE;AAAA,MAAzCA,EAAyC;AAAzCA,MAAyC,GAA1BjV,YAAY,EAAc;AAAA;;AACpE,SAAO,EAAEyV,YAAY,CAACR,EAAD,CAAZ,IAAoBS,gBAAgB,CAACT,EAAD,CAApC,IAA4CG,WAAW,CAACH,EAAD,CAAvD,IACLC,YAAY,CAACD,EAAD,CADP,IACeE,SAAS,CAACF,EAAD,CADxB,IACgCD,iBAAiB,CAACC,EAAD,CADjD,IACyDO,WAAW,CAACP,EAAD,CADpE,IAC4Ea,UAAU,EADtF,IAC4FK,UAAU,EADtG,IAC4GtB,YAAY,EAD1H,CAAP;AAEH;AAEM,SAASwB,QAAT,CAAkBpB,EAAlB,EAA2D;AAAA,MAAzCA,EAAyC;AAAzCA,MAAyC,GAA1BjV,YAAY,EAAc;AAAA;;AAC9D,SAAQ,uBAAD,CAA0BzT,IAA1B,CAA+B0oB,EAA/B,CAAP;AACH;AAEM,SAASqB,QAAT,CAAkBrB,EAAlB,EAA2D;AAAA,MAAzCA,EAAyC;AAAzCA,MAAyC,GAA1BjV,YAAY,EAAc;AAAA;;AAC9D,SAAQ,QAAD,CAAWzT,IAAX,CAAgB0oB,EAAhB,KAAuB,CAACoB,QAAQ,CAACpB,EAAD,CAAvC;AACH,C;;;;;;;;;;;;;;ACjJD;AAEA;AACA;AAIO,SAASsB,eAAT,CAAwCC,EAAxC,EAAyD;AAC5D,SAAOA,EAAE,CAAC/iC,IAAH,IAAW+iC,EAAE,CAAC9C,QAAd,IAA0B8C,EAAE,CAAClpB,WAA7B,IAA4C,WAAnD;AACH;AAEM,SAASmpB,eAAT,CAAwCD,EAAxC,EAAgD/iC,IAAhD,EAAmE;AACtE,MAAI;AACA,WAAO+iC,EAAE,CAAC/iC,IAAV;AACA+iC,MAAE,CAAC/iC,IAAH,GAAUA,IAAV;AACH,GAHD,CAGE,OAAOG,GAAP,EAAY,CACV;AACH;;AAED4iC,IAAE,CAAC9C,QAAH,GAAc8C,EAAE,CAAClpB,WAAH,GAAiB7Z,IAA/B;AACA,SAAO+iC,EAAP;AACH;AAEM,SAASE,YAAT,CAAsBp+B,GAAtB,EAA6C;AAChD,MAAI,OAAOq+B,IAAP,KAAgB,UAApB,EAAgC;AAC5B,WAAOA,IAAI,CAACC,kBAAkB,CAACt+B,GAAD,CAAlB,CAAwBC,OAAxB,CAAgC,iBAAhC,EAAmD,UAACs+B,CAAD,EAAIC,EAAJ,EAAW;AACtE,aAAOhN,MAAM,CAACC,YAAP,CAAoBrd,QAAQ,CAACoqB,EAAD,EAAK,EAAL,CAA5B,CAAP;AACH,KAFW,CAAD,CAAX;AAGH;;AAED,MAAI,OAAOC,MAAP,KAAkB,WAAtB,EAAmC;AAC/B,WAAOA,MAAM,CAACC,IAAP,CAAY1+B,GAAZ,EAAiB,MAAjB,EAAyB9E,QAAzB,CAAkC,QAAlC,CAAP;AACH;;AAED,QAAM,IAAIwC,KAAJ,sCAAN;AACH;AAEM,SAASihC,YAAT,CAAsB3+B,GAAtB,EAA6C;AAChD,MAAI,OAAO4+B,IAAP,KAAgB,UAApB,EAAgC;AAC5B,WAAOpzB,kBAAkB,CAAClJ,KAAK,CAACzE,SAAN,CAAgByB,GAAhB,CAAoBlE,IAApB,CAAyBwjC,IAAI,CAAC5+B,GAAD,CAA7B,EAAoC,UAAA6+B,CAAC,EAAI;AAC/D;AACA,aAAO,MAAM,CAAC,OAAOA,CAAC,CAAC1N,UAAF,CAAa,CAAb,EAAgBj2B,QAAhB,CAAyB,EAAzB,CAAR,EAAsCwG,KAAtC,CAA4C,CAAC,CAA7C,CAAb;AACH,KAHyB,EAGvBmC,IAHuB,CAGlB,EAHkB,CAAD,CAAzB;AAIH;;AAED,MAAI,OAAO46B,MAAP,KAAkB,WAAtB,EAAmC;AAC/B,WAAOA,MAAM,CAACC,IAAP,CAAY1+B,GAAZ,EAAiB,QAAjB,EAA2B9E,QAA3B,CAAoC,MAApC,CAAP;AACH;;AAED,QAAM,IAAIwC,KAAJ,sCAAN;AACH;AAEM,SAASmD,QAAT,GAA6B;AAEhC,MAAIC,KAAK,GAAG,kBAAZ;AAEA,MAAIg+B,QAAQ,GAAG,aAAa7+B,OAAb,CAAqB,IAArB,EAA2B,YAAM;AAC5C,WAAOa,KAAK,CAACC,MAAN,CAAaC,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACE,MAAL,KAAgBJ,KAAK,CAAC9E,MAAjC,CAAb,CAAP;AACH,GAFc,CAAf;AAIA,MAAI+iC,MAAM,GAAGX,YAAY,CACrB,IAAI1c,IAAJ,GAAWsd,WAAX,GAAyBt9B,KAAzB,CAA+B,EAA/B,EAAmC,EAAnC,EAAuCzB,OAAvC,CAA+C,GAA/C,EAAoD,GAApD,CADqB,CAAZ,CAEXA,OAFW,CAEH,eAFG,EAEc,EAFd,EAEkBI,WAFlB,EAAb;AAIA,SAAWy+B,QAAX,SAAyBC,MAAzB;AACH;AAEM,SAASjO,SAAT,GAA8B;AACjC,MAAI,OAAO/1B,MAAP,KAAkB,WAAtB,EAAmC;AAC/B,WAAOA,MAAP;AACH;;AACD,MAAI,OAAOib,MAAP,KAAkB,WAAtB,EAAmC;AAC/B,WAAOA,MAAP;AACH;;AACD,MAAI,OAAOipB,MAAP,KAAsB,WAA1B,EAAuC;AACnC,WAAOA,MAAP;AACH;;AACD,QAAM,IAAIvhC,KAAJ,mBAAN;AACH;AAED,IAAIoG,SAAJ;AAEO,SAASE,WAAT,CAAqBvD,GAArB,EAA4C;AAE/CqD,WAAS,GAAGA,SAAS,IAAI,IAAIC,gDAAJ,EAAzB;;AAEA,MAAItD,GAAG,KAAK,IAAR,IAAgBA,GAAG,KAAKnC,SAAxB,IAAsC,OAAOmC,GAAP,KAAe,QAAf,IAA2B,OAAOA,GAAP,KAAe,UAApF,EAAiG;AAC7F,UAAM,IAAI/C,KAAJ,kBAAN;AACH;;AAED,MAAIuG,GAAG,GAAGH,SAAS,CAACnC,GAAV,CAAclB,GAAd,CAAV;;AAEA,MAAI,CAACwD,GAAL,EAAU;AACNA,OAAG,GAAO,OAAOxD,GAAd,SAAuBI,QAAQ,EAAlC;AACAiD,aAAS,CAACV,GAAV,CAAc3C,GAAd,EAAmBwD,GAAnB;AACH;;AAED,SAAOA,GAAP;AACH;;AAED,SAASi7B,aAAT,CAA0Bv/B,IAA1B,EAAoD;AAChD,MAAI;AACA,WAAOyB,IAAI,CAACC,SAAL,CAAeiB,KAAK,CAACzE,SAAN,CAAgB6D,KAAhB,CAAsBtG,IAAtB,CAA2BuE,IAA3B,CAAf,EAAiD,UAACw/B,MAAD,EAAS79B,GAAT,EAAiB;AACrE,UAAI,OAAOA,GAAP,KAAe,UAAnB,EAA+B;AAC3B,4BAAmB0C,WAAW,CAAC1C,GAAD,CAA9B;AACH;;AACD,aAAOA,GAAP;AACH,KALM,CAAP;AAMH,GAPD,CAOE,OAAOhG,GAAP,EAAY;AACV,UAAM,IAAIoC,KAAJ,4DAAN;AACH;AACJ;;AACM,SAASsI,OAAT,CAAkIvG,MAAlI,EAA8I0I,OAA9I,EAA+M;AAAA;;AAAA,MAAjEA,OAAiE;AAAjEA,WAAiE,GAAR,EAAQ;AAAA;;AAClN,MAAIi3B,QAAQ,GAAG,IAAIr7B,gDAAJ,EAAf,CADkN,CAGlN;;AACA,MAAI+Q,gBAAoB,GAAG,SAASA,gBAAT,GAAkD;AAAA,sCAArBnV,IAAqB;AAArBA,UAAqB;AAAA;;AACzE,QAAIoxB,KAAK,GAAGqO,QAAQ,CAACC,QAAT,CAAkBl3B,OAAO,CAACm3B,aAAR,GAAwB,IAAxB,GAA+B7/B,MAAjD,EAAyD;AAAA,aAAO,EAAP;AAAA,KAAzD,CAAZ;AAEA,QAAIF,GAAY,GAAG2/B,aAAa,CAACv/B,IAAD,CAAhC;AAEA,QAAI4/B,SAAS,GAAGp3B,OAAO,CAACxJ,IAAxB;;AACA,QAAIoyB,KAAK,CAACxxB,GAAD,CAAL,IAAcggC,SAAd,IAA4B7d,IAAI,CAACC,GAAL,KAAaoP,KAAK,CAACxxB,GAAD,CAAL,CAAWZ,IAAzB,GAAiC4gC,SAAhE,EAA2E;AACvE,aAAOxO,KAAK,CAACxxB,GAAD,CAAZ;AACH;;AAED,QAAIwxB,KAAK,CAACxxB,GAAD,CAAT,EAAgB;AACZ,aAAOwxB,KAAK,CAACxxB,GAAD,CAAL,CAAWtC,KAAlB;AACH;;AAED,QAAI0B,IAAI,GAAI+iB,IAAI,CAACC,GAAL,EAAZ;AACA,QAAI1kB,KAAK,GAAGwC,MAAM,CAACG,KAAP,CAAa,IAAb,EAAmBmG,SAAnB,CAAZ;AAEAgrB,SAAK,CAACxxB,GAAD,CAAL,GAAa;AAAEZ,UAAI,EAAJA,IAAF;AAAQ1B,WAAK,EAALA;AAAR,KAAb;AAEA,WAAO8zB,KAAK,CAACxxB,GAAD,CAAL,CAAWtC,KAAlB;AACH,GApBD;;AAsBA6X,kBAAgB,CAACxH,KAAjB,GAAyB,YAAM;AAC3B8xB,YAAQ,CAACxI,MAAT,CAAgBzuB,OAAO,CAACm3B,aAAR,GAAwB,KAAxB,GAA+B7/B,MAA/C;AACH,GAFD;;AAIA,SAAO0+B,eAAe,CAACrpB,gBAAD,EAAuBmpB,eAAe,CAACx+B,MAAD,CAAtC,gBAAtB;AACH;AAEM,SAAS+/B,eAAT,CAAoC3kC,IAApC,EAAkF;AACrF;AACA,SAAOgC,2BAAY,CAACL,OAAb,CAAqB3B,IAArB,CAAP;AACH,C,CAED;;AACO,SAAS4kC,cAAT,CAA2BhgC,MAA3B,EAA6H;AAChI,MAAIsxB,KAAK,GAAG,EAAZ,CADgI,CAGhI;;AACA,WAAS2O,uBAAT,GAAyE;AAAA;AAAA;;AAAA,uCAArC//B,IAAqC;AAArCA,UAAqC;AAAA;;AACrE,QAAIJ,GAAY,GAAG2/B,aAAa,CAACv/B,IAAD,CAAhC;;AAEA,QAAIoxB,KAAK,CAACpwB,cAAN,CAAqBpB,GAArB,CAAJ,EAA+B;AAC3B,aAAOwxB,KAAK,CAACxxB,GAAD,CAAZ;AACH;;AAEDwxB,SAAK,CAACxxB,GAAD,CAAL,GAAa1C,2BAAY,CAAC4B,GAAb,CAAiB;AAAA,aAAMgB,MAAM,CAACG,KAAP,CAAa,MAAb,EAAmBmG,UAAnB,CAAN;AAAA,KAAjB,EACRxH,OADQ,CACA,YAAM;AACX,aAAOwyB,KAAK,CAACxxB,GAAD,CAAZ;AACH,KAHQ,CAAb;AAKA,WAAOwxB,KAAK,CAACxxB,GAAD,CAAZ;AACH;;AAEDmgC,yBAAuB,CAACpyB,KAAxB,GAAgC,YAAM;AAClCyjB,SAAK,GAAG,EAAR;AACH,GAFD;;AAIA,SAAOoN,eAAe,CAACuB,uBAAD,EAA8BzB,eAAe,CAACx+B,MAAD,CAA7C,uBAAtB;AACH,C,CAED;;AACO,SAASoU,SAAT,CAAsBpU,MAAtB,EAA4D0I,OAA5D,EAA6I;AAAA,MAAjFA,OAAiF;AAAjFA,WAAiF,GAAlD,EAAkD;AAAA;;AAChJ,WAAS8M,mBAAT,GAAiD;AAC7C,WAAOpY,2BAAY,CAAC4B,GAAb,CAAiBgB,MAAjB,EAAyB,IAAzB,EAA+BsG,SAA/B,CAAP;AACH;;AAED,MAAIoC,OAAO,CAAChN,IAAZ,EAAkB;AACd8Z,uBAAmB,CAACD,WAApB,GAAsC7M,OAAO,CAAChN,IAA9C;AACH;;AAED,SAAOgjC,eAAe,CAAClpB,mBAAD,EAA0BgpB,eAAe,CAACx+B,MAAD,CAAzC,mBAAtB;AACH,C,CAED;;AACO,SAASkgC,aAAT,CAA0BlgC,MAA1B,EAAgEmgC,KAAhE,EAAqGjgC,IAArG,EAAiI;AAAA,MAA5BA,IAA4B;AAA5BA,QAA4B,GAAR,EAAQ;AAAA;;AACpI;AACA,MAAIoxB,KAAK,GAAGtxB,MAAM,CAACogC,wBAAP,GAAkCpgC,MAAM,CAACogC,wBAAP,IAAmC,EAAjF;AACA,MAAItgC,GAAG,GAAG2/B,aAAa,CAACv/B,IAAD,CAAvB;;AAEA,MAAIoxB,KAAK,CAACpwB,cAAN,CAAqBpB,GAArB,CAAJ,EAA+B;AAC3B,WAAOwxB,KAAK,CAACxxB,GAAD,CAAZ;AACH;;AAED,MAAIjC,MAAM,GAAGyzB,KAAK,CAACxxB,GAAD,CAAL,GAAaqgC,KAAK,MAAL,SAASjgC,IAAT,CAA1B;AAEA,SAAOrC,MAAP;AACH,C,CAED;;AACO,SAASsI,IAAT,GAAsC,CACzC;AACH;AAEM,SAASJ,IAAT,CAAc/F,MAAd,EAA4C;AAC/C,MAAIoG,MAAM,GAAG,KAAb;;AAEA,MAAMqzB,YAAY,GAAG,SAAfA,YAAe,GAAmB;AACpC,QAAI,CAACrzB,MAAL,EAAa;AACTA,YAAM,GAAG,IAAT;AACA,aAAOpG,MAAM,CAACG,KAAP,CAAa,IAAb,EAAmBmG,SAAnB,CAAP;AACH;AACJ,GALD;;AAOA,SAAOo4B,eAAe,CAACjF,YAAD,EAAmB+E,eAAe,CAACx+B,MAAD,CAAlC,YAAtB;AACH;AAEM,SAASyxB,OAAT,CAAiBlxB,GAAjB,EAAwC;AAC3C,MAAIZ,IAAI,GAAG,CAAX;;AACA,OAAK,IAAIlB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8B,GAAG,CAAChE,MAAxB,EAAgCkC,CAAC,EAAjC,EAAqC;AACjCkB,QAAI,IAAIY,GAAG,CAAC9B,CAAD,CAAH,CAAOizB,UAAP,CAAkB,CAAlB,IAAuBnwB,IAAI,CAACowB,GAAL,CAAUlzB,CAAC,GAAG,EAAL,GAAW,CAApB,EAAuB,CAAvB,CAA/B;AACH;;AACD,SAAO8C,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACowB,GAAL,CAASpwB,IAAI,CAACqwB,IAAL,CAAUjyB,IAAV,CAAT,EAA0B,CAA1B,CAAX,CAAP;AACH;AAEM,SAASkyB,UAAT,CAAoBtxB,GAApB,EAA2C;AAC9C,MAAIZ,IAAI,GAAG,EAAX;;AAEA,OAAK,IAAIlB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8B,GAAG,CAAChE,MAAxB,EAAgCkC,CAAC,EAAjC,EAAqC;AACjC,QAAIqzB,KAAK,GAAIvxB,GAAG,CAAC9B,CAAD,CAAH,CAAOizB,UAAP,CAAkB,CAAlB,IAAuBjzB,CAApC;;AAEA,QAAI8B,GAAG,CAAC9B,CAAC,GAAG,CAAL,CAAP,EAAgB;AACZqzB,WAAK,IAAKvxB,GAAG,CAAC9B,CAAC,GAAG,CAAL,CAAH,CAAWizB,UAAX,CAAsB,CAAtB,KAA4BjzB,CAAC,GAAG,CAAhC,CAAV;AACH;;AAEDkB,QAAI,IAAIoyB,MAAM,CAACC,YAAP,CAAoB,KAAMzwB,IAAI,CAAC2M,GAAL,CAAS4jB,KAAT,IAAkB,EAA5C,CAAR;AACH;;AAED,SAAOnyB,IAAP;AACH;AAEM,SAASkF,KAAT,CAAetE,GAAf,EAA6BmE,OAA7B,EAAyD;AAC5D,MAAIutB,QAAQ,GAAG1xB,GAAG,CAACsE,KAAJ,CAAUH,OAAV,CAAf;;AACA,MAAIutB,QAAJ,EAAc;AACV,WAAOA,QAAQ,CAAC,CAAD,CAAf;AACH;AACJ;AAEM,SAASK,QAAT,CAA4BtxB,GAA5B,EAA0ClB,GAA1C,EAA0E;AAC7E,SAAO,IAAI1C,2BAAJ,CAAiB,UAAAL,OAAO,EAAI;AAE/B,QAAIS,KAAK,GAAGwD,GAAG,CAAClB,GAAD,CAAf;;AAEA,QAAItC,KAAJ,EAAW;AACP,aAAOT,OAAO,CAACS,KAAD,CAAd;AACH;;AAED,WAAOwD,GAAG,CAAClB,GAAD,CAAV;AAEA3B,UAAM,CAACgF,cAAP,CAAsBnC,GAAtB,EAA2BlB,GAA3B,EAAgC;AAE5BsD,kBAAY,EAAE,IAFc;AAI5BO,SAJ4B,eAIxBvI,IAJwB,EAIlB;AACNoC,aAAK,GAAGpC,IAAR;;AAEA,YAAIoC,KAAJ,EAAW;AACPT,iBAAO,CAACS,KAAD,CAAP;AACH;AACJ,OAV2B;AAY5B0E,SAZ4B,iBAYd;AACV,eAAO1E,KAAP;AACH;AAd2B,KAAhC;AAgBH,GA1BM,CAAP;AA2BH;AAEM,SAAS+H,cAAT,CAAwB1J,GAAxB,EAAqC0lB,KAArC,EAAkE;AAAA,MAA7BA,KAA6B;AAA7BA,SAA6B,GAAZ,CAAY;AAAA;;AAErE,MAAIA,KAAK,IAAI,CAAb,EAAgB;AACZ,WAAO,+BAAP;AACH;;AAED,MAAI;AACA,QAAI,CAAC1lB,GAAL,EAAU;AACN,kCAA2BsC,MAAM,CAACC,SAAP,CAAiB3C,QAAjB,CAA0BE,IAA1B,CAA+BE,GAA/B,CAA3B;AACH;;AAED,QAAI,OAAOA,GAAP,KAAe,QAAnB,EAA6B;AACzB,aAAOA,GAAP;AACH;;AAED,QAAIA,GAAG,YAAYoC,KAAnB,EAA0B;AACtB,UAAIL,KAAK,GAAG/B,GAAG,IAAIA,GAAG,CAAC+B,KAAvB;AACA,UAAI4H,OAAO,GAAG3J,GAAG,IAAIA,GAAG,CAAC2J,OAAzB;;AAEA,UAAI5H,KAAK,IAAI4H,OAAb,EAAsB;AAClB,YAAI5H,KAAK,CAAC1B,OAAN,CAAcsJ,OAAd,MAA2B,CAAC,CAAhC,EAAmC;AAC/B,iBAAO5H,KAAP;AACH,SAFD,MAEO;AACH,iBAAW4H,OAAX,UAAyB5H,KAAzB;AACH;AACJ,OAND,MAMO,IAAIA,KAAJ,EAAW;AACd,eAAOA,KAAP;AACH,OAFM,MAEA,IAAI4H,OAAJ,EAAa;AAChB,eAAOA,OAAP;AACH;AACJ;;AAED,QAAI3J,GAAG,IAAIA,GAAG,CAACJ,QAAX,IAAuB,OAAOI,GAAG,CAACJ,QAAX,KAAwB,UAAnD,EAA+D;AAC3D;AACA,aAAOI,GAAG,CAACJ,QAAJ,EAAP;AACH;;AAED,WAAO0C,MAAM,CAACC,SAAP,CAAiB3C,QAAjB,CAA0BE,IAA1B,CAA+BE,GAA/B,CAAP;AAEH,GAjCD,CAiCE,OAAO02B,MAAP,EAAe;AAAE;AACf,gDAA2ChtB,cAAc,CAACgtB,MAAD,EAAShR,KAAK,GAAG,CAAjB,CAAzD;AACH;AACJ;AAEM,SAASiR,qBAAT,CAA+B32B,GAA/B,EAAqD;AAExD,MAAI42B,cAAc,wBAAuBt0B,MAAM,CAACC,SAAP,CAAiB3C,QAAjB,CAA0BE,IAA1B,CAA+BE,GAA/B,CAAvB,MAAlB;;AAEA,MAAI,CAACA,GAAL,EAAU;AACN,WAAO42B,cAAP;AACH;;AAED,MAAI52B,GAAG,YAAYoC,KAAnB,EAA0B;AACtB,WAAOpC,GAAG,CAAC2J,OAAJ,IAAeitB,cAAtB;AACH;;AAED,MAAI,OAAO52B,GAAG,CAAC2J,OAAX,KAAuB,QAA3B,EAAqC;AACjC,WAAO3J,GAAG,CAAC2J,OAAJ,IAAeitB,cAAtB;AACH;;AAED,SAAOA,cAAP;AACH;AAEM,SAAS7wB,SAAT,CAAmBxG,IAAnB,EAA0C;AAC7C,MAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;AAC1B,WAAOA,IAAP;AACH;;AAED,MAAIA,IAAI,IAAIA,IAAI,CAACK,QAAb,IAAyB,OAAOL,IAAI,CAACK,QAAZ,KAAyB,UAAtD,EAAkE;AAC9D;AACA,WAAOL,IAAI,CAACK,QAAL,EAAP;AACH;;AAED,SAAO0C,MAAM,CAACC,SAAP,CAAiB3C,QAAjB,CAA0BE,IAA1B,CAA+BP,IAA/B,CAAP;AACH;AAEM,SAASs3B,aAAT,CAAuBC,QAAvB,EAA0CvY,MAA1C,EAAqE;AACxEuY,UAAQ,GAAGA,QAAQ,CAACrwB,KAAT,CAAe,KAAf,EAAsB,CAAtB,CAAX;AACA,MAAIwC,KAAK,GAAG6tB,QAAQ,CAACz2B,OAAT,CAAiBke,MAAjB,CAAZ;AACA,SAAQtV,KAAK,KAAK,CAAC,CAAX,IAAgB6tB,QAAQ,CAAC1wB,KAAT,CAAe6C,KAAf,MAA0BsV,MAAlD;AACH;AAEM,SAASwY,WAAT,CAAqB5xB,GAArB,EAAmCtF,IAAnC,EAAkDe,OAAlD,EAAsE;AACzE,MAAIo2B,QAAQ,GAAG7xB,GAAG,CAACtF,IAAD,CAAlB;;AAEAsF,KAAG,CAACtF,IAAD,CAAH,GAAY,SAASo3B,aAAT,GAAiC;AAAA;AAAA;;AACzC,WAAOr2B,OAAO,CAAC;AACXwD,aAAO,EAAO,IADH;AAEXC,UAAI,EAAU2C,KAAK,CAACzE,SAAN,CAAgB6D,KAAhB,CAAsBtG,IAAtB,CAA2B2K,SAA3B,CAFH;AAGXusB,cAAQ,EAARA,QAHW;AAIXE,kBAAY,EAAE;AAAA,eAAMF,QAAQ,CAAC1yB,KAAT,CAAe,MAAf,EAAqBmG,WAArB,CAAN;AAAA;AAJH,KAAD,CAAd;AAMH,GAPD;AAQH;AAEM,SAASvF,MAAT,CAAuCC,GAAvC,EAAgDC,MAAhD,EAAqE;AACxE,MAAI,CAACA,MAAL,EAAa;AACT,WAAOD,GAAP;AACH;;AAED,MAAI7C,MAAM,CAAC80B,MAAX,EAAmB;AACf,WAAO90B,MAAM,CAAC80B,MAAP,CAAcjyB,GAAd,EAAmBC,MAAnB,CAAP;AACH;;AAED,OAAK,IAAInB,GAAT,IAAgBmB,MAAhB,EAAwB;AACpB,QAAIA,MAAM,CAACC,cAAP,CAAsBpB,GAAtB,CAAJ,EAAgC;AAC5BkB,SAAG,CAAClB,GAAD,CAAH,GAAWmB,MAAM,CAACnB,GAAD,CAAjB;AACH;AACJ;;AAED,SAAOkB,GAAP;AACH;AAEM,SAASG,MAAT,CAAmBH,GAAnB,EAAsD;AACzD,MAAInD,MAAM,GAAG,EAAb;;AACA,OAAK,IAAIiC,GAAT,IAAgBkB,GAAhB,EAAqB;AACjB,QAAIA,GAAG,CAACE,cAAJ,CAAmBpB,GAAnB,CAAJ,EAA6B;AACzBjC,YAAM,CAAC1B,IAAP,CAAY6E,GAAG,CAAClB,GAAD,CAAf;AACH;AACJ;;AACD,SAAOjC,MAAP;AACH;AAEM,SAASmX,IAAT,CAAc6e,MAAd,EAA+BC,UAA/B,EAA6D;AAChE,SAAOvyB,IAAI,CAACwyB,KAAL,CAAYF,MAAM,GAAGC,UAAV,GAAwB,GAAnC,CAAP;AACH;AAEM,SAASE,GAAT,GAA+C;AAClD,SAAOzyB,IAAI,CAACyyB,GAAL,OAAAzyB,IAAI,YAAX;AACH;AAEM,SAAS4T,GAAT,GAA+C;AAClD,SAAO5T,IAAI,CAAC4T,GAAL,OAAA5T,IAAI,YAAX;AACH;AAEM,SAAS0yB,QAAT,CAAqB1zB,GAArB,EAAmC8/B,MAAnC,EAAoD5jC,OAApD,EAAkF;AACrF,MAAIgD,OAAO,GAAG,EAAd,CADqF,CAGrF;;AACAc,KAAG,CAACC,OAAJ,CAAY6/B,MAAZ,EAAoB,SAASnM,eAAT,CAAyB94B,IAAzB,EAA+B;AAC/CqE,WAAO,CAACtD,IAAR,CAAaM,OAAO,GAAGA,OAAO,CAAC0D,KAAR,CAAc,IAAd,EAAoBmG,SAApB,CAAH,GAAoClL,IAAxD;AACH,GAFD,EAJqF,CAQrF;;AACA,SAAOqE,OAAP;AACH;AAEM,SAAS6gC,WAAT,CAAqBC,GAArB,EAA4C;AAC/C,wCAAqC5B,YAAY,CAAC4B,GAAD,CAAjD;AACH;AAEM,SAASC,SAAT,CAAyBx/B,GAAzB,EAAiD4H,MAAjD,EAA+G;AAAA,MAA9DA,MAA8D;AAA9DA,UAA8D,GAA5BC,OAA4B;AAAA;;AAClH,MAAIhL,MAAM,GAAG,EAAb;;AAEA,OAAK,IAAIiC,GAAT,IAAgBkB,GAAhB,EAAqB;AACjB,QAAI,CAACA,GAAG,CAACE,cAAJ,CAAmBpB,GAAnB,CAAD,IAA4B,CAAC8I,MAAM,CAAC5H,GAAG,CAAClB,GAAD,CAAJ,EAAWA,GAAX,CAAvC,EAAwD;AACpD;AACH;;AAEDjC,UAAM,CAACiC,GAAD,CAAN,GAAckB,GAAG,CAAClB,GAAD,CAAjB;AACH;;AAED,SAAOjC,MAAP;AACH;AAEM,SAAS+1B,QAAT,CAAsBx4B,IAAtB,EAAoC;AACvC,SAAOA,IAAP;AACH;AAEM,SAASqlC,aAAT,CAAuB17B,IAAvB,EAAsCs7B,MAAtC,EAAuE;AAC1E,MAAIxiC,MAAM,GAAG,EAAb;AACAkH,MAAI,CAACvE,OAAL,CAAa6/B,MAAb,EAAqB,UAAAK,KAAK,EAAI;AAC1B7iC,UAAM,CAAC1B,IAAP,CAAYukC,KAAZ;AACA,WAAO,EAAP;AACH,GAHD;AAIA,SAAO7iC,MAAP;AACH;AAEM,SAASqhB,eAAT,CAA4Blf,MAA5B,EAAgEI,KAAhE,EAA6G;AAAA,MAA7CA,KAA6C;AAA7CA,SAA6C,GAA5B,EAA4B;AAAA;;AAEhH,MAAInE,OAAJ;AACA,MAAIgD,OAAJ;;AAEA,MAAM0hC,gBAAgB,GAAG,SAAnBA,gBAAmB,GAA6B;AAClD,QAAI1hC,OAAJ,EAAa;AACTE,kBAAY,CAACF,OAAD,CAAZ;AACH;;AAED,QAAI2hC,YAAY,GAAG3kC,OAAO,GAAGA,OAAO,IAAI,IAAImB,2BAAJ,EAAxC;AAEA6B,WAAO,GAAG7C,UAAU,CAAC,YAAM;AACvBH,aAAO,GAAG,IAAV;AACAgD,aAAO,GAAG,IAAV;AAEA7B,iCAAY,CAAC4B,GAAb,CAAiBgB,MAAjB,EAAyBpE,IAAzB,CACI,UAAAiC,MAAM,EAAI;AAAE+iC,oBAAY,CAAC7jC,OAAb,CAAqBc,MAArB;AAA+B,OAD/C,EAEI,UAAAhC,GAAG,EAAI;AAAE+kC,oBAAY,CAAC5iC,MAAb,CAAoBnC,GAApB;AAA2B,OAFxC;AAIH,KARmB,EAQjBuE,KARiB,CAApB;AAUA,WAAOwgC,YAAP;AACH,GAlBD;;AAoBA,SAAOlC,eAAe,CAACiC,gBAAD,EAAuBnC,eAAe,CAACx+B,MAAD,CAAtC,wBAAtB;AACH;AAEM,SAASuC,YAAT,CAAsBvC,MAAtB,EAAyCd,IAAzC,EAAkF;AAErF,MAAID,OAAJ;;AAEA,WAASogB,IAAT,GAAgB;AACZpgB,WAAO,GAAG7C,UAAU,CAAC,YAAM;AACvB4D,YAAM;AACNqf,UAAI;AACP,KAHmB,EAGjBngB,IAHiB,CAApB;AAIH;;AAEDmgB,MAAI;AAEJ,SAAO;AACH3iB,UADG,oBACM;AACLyC,kBAAY,CAACF,OAAD,CAAZ;AACH;AAHE,GAAP;AAKH;AAEM,SAAS4hC,SAAT,CAAmBtgC,GAAnB,EAA2C;AAC9C,SAAOsI,OAAO,CAACtI,GAAG,CAACsE,KAAJ,CAAU,UAAV,CAAD,CAAd;AACH;AAEM,SAASi8B,OAAT,CAAiBvgC,GAAjB,EAAyC;AAC5C,SAAOsI,OAAO,CAACtI,GAAG,CAACsE,KAAJ,CAAU,kBAAV,CAAD,CAAd;AACH;AAEM,SAASk8B,kBAAT,CAA4BvjC,KAA5B,EAAwE;AAC3E,SAAOA,KAAK,CAAC/B,QAAN,EAAP;AACH;AAEM,SAASulC,oBAAT,CAA8BxjC,KAA9B,EAA0E;AAC7E,MAAIA,KAAK,KAAK,MAAd,EAAsB;AAClB,WAAO,IAAP;AACH,GAFD,MAEO,IAAIA,KAAK,KAAK,OAAd,EAAuB;AAC1B,WAAO,KAAP;AACH,GAFM,MAEA,IAAIqjC,SAAS,CAACrjC,KAAD,CAAb,EAAsB;AACzB,WAAOmX,QAAQ,CAACnX,KAAD,EAAQ,EAAR,CAAf;AACH,GAFM,MAEA,IAAIsjC,OAAO,CAACtjC,KAAD,CAAX,EAAoB;AACvB,WAAOyjC,UAAU,CAACzjC,KAAD,CAAjB;AACH,GAFM,MAEA;AACH,WAAOA,KAAP;AACH;AACJ;AAEM,SAASwG,MAAT,CAAgBhD,GAAhB,EAA8BiD,MAA9B,EAAoDC,MAApD,EAAkG;AAAA,MAApED,MAAoE;AAApEA,UAAoE,GAAlD,EAAkD;AAAA;;AAAA,MAA9CC,MAA8C;AAA9CA,UAA8C,GAA5B,EAA4B;AAAA;;AACrGD,QAAM,GAAGA,MAAM,GAAOA,MAAP,SAAoBA,MAAnC;;AACA,OAAK,IAAInE,GAAT,IAAgBkB,GAAhB,EAAqB;AACjB,QAAI,CAACA,GAAG,CAACE,cAAJ,CAAmBpB,GAAnB,CAAD,IAA4BkB,GAAG,CAAClB,GAAD,CAAH,KAAajB,SAAzC,IAAsDmC,GAAG,CAAClB,GAAD,CAAH,KAAa,IAAnE,IAA2E,OAAOkB,GAAG,CAAClB,GAAD,CAAV,KAAoB,UAAnG,EAA+G;AAC3G;AACH,KAFD,MAEO,IAAIkB,GAAG,CAAClB,GAAD,CAAH,IAAY+C,KAAK,CAACC,OAAN,CAAc9B,GAAG,CAAClB,GAAD,CAAjB,CAAZ,IAAuCkB,GAAG,CAAClB,GAAD,CAAH,CAASvD,MAAhD,IAA0DyE,GAAG,CAAClB,GAAD,CAAH,CAASqE,KAAT,CAAe,UAAAtC,GAAG;AAAA,aAAI,OAAOA,GAAP,KAAe,QAAnB;AAAA,KAAlB,CAA9D,EAA8G;AACjHqC,YAAM,MAAKD,MAAL,GAAgBnE,GAAhB,QAAN,GAAkCkB,GAAG,CAAClB,GAAD,CAAH,CAASsE,IAAT,CAAc,GAAd,CAAlC;AACH,KAFM,MAEA,IAAIpD,GAAG,CAAClB,GAAD,CAAH,IAAY,OAAOkB,GAAG,CAAClB,GAAD,CAAV,KAAoB,QAApC,EAA8C;AACjDoE,YAAM,GAAGF,MAAM,CAAChD,GAAG,CAAClB,GAAD,CAAJ,OAAemE,MAAf,GAA0BnE,GAA1B,EAAkCoE,MAAlC,CAAf;AACH,KAFM,MAEA;AACHA,YAAM,MAAKD,MAAL,GAAgBnE,GAAhB,CAAN,GAAgCihC,kBAAkB,CAAC//B,GAAG,CAAClB,GAAD,CAAJ,CAAlD;AACH;AACJ;;AACD,SAAOoE,MAAP;AACH;AAEM,SAASg9B,QAAT,CAAkBlgC,GAAlB,EAAwD;AAE3D,MAAInD,MAAM,GAAG,EAAb;;AAEA,OAAK,IAAIiC,GAAT,IAAgBkB,GAAhB,EAAqB;AACjB,QAAI,CAACA,GAAG,CAACE,cAAJ,CAAmBpB,GAAnB,CAAD,IAA4B,OAAOkB,GAAG,CAAClB,GAAD,CAAV,KAAoB,QAApD,EAA8D;AAC1D;AACH;;AAED,QAAItC,KAAK,GAAGwD,GAAG,CAAClB,GAAD,CAAf;;AAEA,QAAIA,GAAG,CAAC+E,KAAJ,CAAU,UAAV,CAAJ,EAA2B;AACvB/E,SAAG,GAAGA,GAAG,CAACmC,KAAJ,CAAU,CAAV,EAAanC,GAAG,CAACvD,MAAJ,GAAa,CAA1B,CAAN;AACAiB,WAAK,GAAGA,KAAK,CAAC8E,KAAN,CAAY,GAAZ,EAAiBzC,GAAjB,CAAqBmhC,oBAArB,CAAR;AACH,KAHD,MAGO;AACHxjC,WAAK,GAAGwjC,oBAAoB,CAACxjC,KAAD,CAA5B;AACH;;AAED,QAAI2jC,SAAS,GAAGtjC,MAAhB;AACA,QAAIujC,KAAK,GAAGthC,GAAG,CAACwC,KAAJ,CAAU,GAAV,CAAZ;;AACA,SAAK,IAAI7D,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2iC,KAAK,CAAC7kC,MAA1B,EAAkCkC,CAAC,EAAnC,EAAuC;AACnC,UAAI4iC,IAAI,GAAGD,KAAK,CAAC3iC,CAAD,CAAhB;AACA,UAAI6iC,MAAM,GAAI7iC,CAAC,GAAG,CAAJ,KAAU2iC,KAAK,CAAC7kC,MAA9B;AACA,UAAIglC,OAAO,GAAG,CAACD,MAAD,IAAWT,SAAS,CAACO,KAAK,CAAC3iC,CAAC,GAAG,CAAL,CAAN,CAAlC;;AAEA,UAAI4iC,IAAI,KAAK,aAAT,IAA0BA,IAAI,KAAK,WAAnC,IAAkDA,IAAI,KAAK,WAA/D,EAA4E;AACxE,cAAM,IAAIpjC,KAAJ,sBAA8BojC,IAA9B,CAAN;AACH;;AAED,UAAIC,MAAJ,EAAY;AACR;AACAH,iBAAS,CAACE,IAAD,CAAT,GAAkB7jC,KAAlB;AACH,OAHD,MAGO;AACH;AACA2jC,iBAAS,GAAGA,SAAS,CAACE,IAAD,CAAT,GAAkBF,SAAS,CAACE,IAAD,CAAT,KAAoBE,OAAO,GAAG,EAAH,GAAQ,EAAnC,CAA9B;AACH;AACJ;AACJ;;AAED,SAAO1jC,MAAP;AACH;AASM,SAAS4H,YAAT,GAA2C;AAC9C,MAAIC,SAAS,GAAG,EAAhB;AACA,MAAIhI,QAAQ,GAAG,EAAf;AAEA,SAAO;AAEHiI,MAFG,cAEAC,SAFA,EAEoBnJ,OAFpB,EAEyD;AACxD,UAAIoJ,WAAW,GAAGnI,QAAQ,CAACkI,SAAD,CAAR,GAAsBlI,QAAQ,CAACkI,SAAD,CAAR,IAAuB,EAA/D;AAEAC,iBAAW,CAAC1J,IAAZ,CAAiBM,OAAjB;AAEA,UAAIqJ,SAAS,GAAG,KAAhB;AAEA,aAAO;AACHpJ,cADG,oBACM;AACL,cAAI,CAACoJ,SAAL,EAAgB;AACZA,qBAAS,GAAG,IAAZ;AACAD,uBAAW,CAAClJ,MAAZ,CAAmBkJ,WAAW,CAAC3J,OAAZ,CAAoBO,OAApB,CAAnB,EAAiD,CAAjD;AACH;AAEJ;AAPE,OAAP;AASH,KAlBE;AAoBHsJ,QApBG,gBAoBEH,SApBF,EAoBsBnJ,OApBtB,EAoB2D;AAE1D,UAAIuJ,QAAQ,GAAG,KAAKL,EAAL,CAAQC,SAAR,EAAmB,YAAM;AACpCI,gBAAQ,CAACtJ,MAAT;AACAD,eAAO;AACV,OAHc,CAAf;AAKA,aAAOuJ,QAAP;AACH,KA5BE;AA8BHC,WA9BG,mBA8BKL,SA9BL,EA8B+E;AAAA,yCAAnD1F,IAAmD;AAAnDA,YAAmD;AAAA;;AAE9E,UAAI2F,WAAW,GAAGnI,QAAQ,CAACkI,SAAD,CAA1B;AACA,UAAIrG,QAAQ,GAAG,EAAf;;AAEA,UAAIsG,WAAJ,EAAiB;AAAA;AACR,cAAIpJ,OAAO,GAAIoJ,WAAJ,KAAX;AACDtG,kBAAQ,CAACpD,IAAT,CAAciB,2BAAY,CAAC4B,GAAb,CAAiB;AAAA,mBAAMvC,OAAO,MAAP,SAAWyD,IAAX,CAAN;AAAA,WAAjB,CAAd;AAFS;;AAAA,gCACO2F,WADP,gBACoB;AAAA;AAEhC;AACJ;;AAED,aAAOzI,2BAAY,CAACkC,GAAb,CAAiBC,QAAjB,EAA2B3D,IAA3B,CAAgCuK,IAAhC,CAAP;AACH,KA1CE;AA4CHD,eA5CG,uBA4CSN,SA5CT,EA4CmF;AAElF,UAAIF,SAAS,CAACE,SAAD,CAAb,EAA0B;AACtB,eAAOxI,2BAAY,CAACL,OAAb,EAAP;AACH;;AAED2I,eAAS,CAACE,SAAD,CAAT,GAAuB,IAAvB;;AANkF,yCAAnD1F,IAAmD;AAAnDA,YAAmD;AAAA;;AAOlF,aAAO,KAAK+F,OAAL,cAAaL,SAAb,SAA2B1F,IAA3B,EAAP;AACH;AApDE,GAAP;AAsDH;AAEM,SAASO,gBAAT,CAA0BC,MAA1B,EAAoD;AACvD,SAAOA,MAAM,CAACF,OAAP,CAAe,UAAf,EAA2B,UAACG,CAAD,EAAO;AACrC,iBAAYA,CAAC,CAACC,WAAF,EAAZ;AACH,GAFM,CAAP;AAGH;AAEM,SAASC,gBAAT,CAA0BH,MAA1B,EAAoD;AACvD,SAAOA,MAAM,CAACF,OAAP,CAAe,WAAf,EAA4B,UAACG,CAAD,EAAO;AACtC,WAAOA,CAAC,CAAC,CAAD,CAAD,CAAKG,WAAL,EAAP;AACH,GAFM,CAAP;AAGH;AAEM,SAASkB,qBAAT,CAA+BtB,MAA/B,EAAyD;AAC5D,SAAOA,MAAM,CAACY,MAAP,CAAc,CAAd,EAAiBR,WAAjB,KAAiCJ,MAAM,CAACuB,KAAP,CAAa,CAAb,EAAgBrB,WAAhB,EAAxC;AACH;AAEM,SAASsB,GAAT,CAAa9G,IAAb,EAA4B+G,IAA5B,EAA2CC,GAA3C,EAAgE;AAEnE,MAAI,CAACD,IAAL,EAAW;AACP,WAAOC,GAAP;AACH;;AAED,MAAIC,SAAS,GAAGF,IAAI,CAACG,KAAL,CAAW,GAAX,CAAhB,CANmE,CAQnE;;AAEA,OAAK,IAAI7D,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4D,SAAS,CAAC9F,MAA9B,EAAsCkC,CAAC,EAAvC,EAA2C;AAEvC;AACA,QAAI,OAAOrD,IAAP,KAAgB,QAAhB,IAA4BA,IAAI,KAAK,IAAzC,EAA+C;AAC3CA,UAAI,GAAGA,IAAI,CAACiH,SAAS,CAAC5D,CAAD,CAAV,CAAX,CAD2C,CAG/C;AACC,KAJD,MAIO;AACH,aAAO2D,GAAP;AACH;AACJ,GApBkE,CAsBnE;;;AAEA,SAAOhH,IAAI,KAAKyD,SAAT,GAAqBuD,GAArB,GAA2BhH,IAAlC;AACH;AAEM,SAASqH,WAAT,CAAqBzC,MAArB,EAAwCd,IAAxC,EAAuD;AAE1D,MAAIwD,QAAQ,GAAGH,YAAY,CAAC,YAAM;AAC9BrD,QAAI,IAAI,GAAR;;AACA,QAAIA,IAAI,IAAI,CAAZ,EAAe;AACXwD,cAAQ,CAAChG,MAAT;AACAsD,YAAM;AACT;AACJ,GAN0B,EAMxB,GANwB,CAA3B;AAOH;AAEM,SAASwhC,cAAT,CAA2BxgC,GAA3B,EAAwDlB,GAAxD,EAA+E2hC,MAA/E,EAAiG;AACpG,MAAI5+B,KAAK,CAACC,OAAN,CAAc9B,GAAd,CAAJ,EAAwB;AACpB,QAAI,OAAOlB,GAAP,KAAe,QAAnB,EAA6B;AACzB,YAAM,IAAIT,SAAJ,4BAAN;AACH;AACJ,GAJD,MAIO,IAAI,OAAO2B,GAAP,KAAe,QAAf,IAA2BA,GAAG,KAAK,IAAvC,EAA6C;AAChD,QAAI,OAAOlB,GAAP,KAAe,QAAnB,EAA6B;AACzB,YAAM,IAAIT,SAAJ,6BAAN;AACH;AACJ;;AAEDlB,QAAM,CAACgF,cAAP,CAAsBnC,GAAtB,EAA2BlB,GAA3B,EAAgC;AAC5BsD,gBAAY,EAAE,IADc;AAE5BC,cAAU,EAAI,IAFc;AAG5BnB,OAAG,EAAW,eAAM;AAChB;AACA,aAAOlB,GAAG,CAAClB,GAAD,CAAV;AACA,UAAItC,KAAK,GAAGikC,MAAM,EAAlB,CAHgB,CAIhB;;AACAzgC,SAAG,CAAClB,GAAD,CAAH,GAAWtC,KAAX;AACA,aAAOA,KAAP;AACH,KAV2B;AAW5BmG,OAAG,EAAE,aAACnG,KAAD,EAAe;AAChB;AACA,aAAOwD,GAAG,CAAClB,GAAD,CAAV,CAFgB,CAGhB;;AACAkB,SAAG,CAAClB,GAAD,CAAH,GAAWtC,KAAX;AACH;AAhB2B,GAAhC;AAkBH;AAEM,SAASkkC,SAAT,CAAsBtmC,IAAtB,EAAqD;AAAE;AAC1D,SAAOyH,KAAK,CAACzE,SAAN,CAAgB6D,KAAhB,CAAsBtG,IAAtB,CAA2BP,IAA3B,CAAP;AACH;AAEM,SAAS43B,QAAT,CAAkB53B,IAAlB,EAA0C;AAC7C,SAAQ,OAAOA,IAAP,KAAgB,QAAhB,IAA4BA,IAAI,KAAK,IAA7C;AACH;AAEM,SAASumC,cAAT,CAAwB3gC,GAAxB,EAA+C;AAClD,SAAOgyB,QAAQ,CAAChyB,GAAD,CAAR,IAAiB7C,MAAM,CAACC,SAAP,CAAiB3C,QAAjB,CAA0BE,IAA1B,CAA+BqF,GAA/B,MAAwC,iBAAhE;AACH;AAEM,SAAS4gC,aAAT,CAAuB5gC,GAAvB,EAA8C;AACjD,MAAI,CAAC2gC,cAAc,CAAC3gC,GAAD,CAAnB,EAA0B;AACtB,WAAO,KAAP;AACH,GAHgD,CAKjD;;;AACA,MAAIxF,WAAW,GAAGwF,GAAG,CAACxF,WAAtB;;AAEA,MAAI,OAAOA,WAAP,KAAuB,UAA3B,EAAuC;AACnC,WAAO,KAAP;AACH;;AAED,MAAI4C,SAAS,GAAG5C,WAAW,CAAC4C,SAA5B;;AAEA,MAAI,CAACujC,cAAc,CAACvjC,SAAD,CAAnB,EAAgC;AAC5B,WAAO,KAAP;AACH;;AAED,MAAI,CAACA,SAAS,CAAC8C,cAAV,CAAyB,eAAzB,CAAL,EAAgD;AAC5C,WAAO,KAAP;AACH;;AAED,SAAO,IAAP;AACH;AAEM,SAAS8B,aAAT,CAAmD5H,IAAnD,EAA6DqI,QAA7D,EAAmHP,OAAnH,EAA8I;AAAA,MAA3BA,OAA2B;AAA3BA,WAA2B,GAAR,EAAQ;AAAA;;AAEjJ,MAAIL,KAAK,CAACC,OAAN,CAAc1H,IAAd,CAAJ,EAAyB;AACrB,QAAImB,MAAM,GAAGnB,IAAI,CAACmB,MAAlB;AACA,QAAIsB,MAAqB,GAAG,EAA5B;;AAFqB,iCAIZY,CAJY;AAOjB+iC,oBAAc,CAAC3jC,MAAD,EAASY,CAAT,EAAY,YAAM;AAC5B,YAAI6E,OAAO,GAAGJ,OAAO,GAAOA,OAAP,SAAoBzE,CAApB,QAA+BA,CAApD;AACA,YAAIiJ,EAAE,GAAGtM,IAAI,CAACqD,CAAD,CAAb;AAEA,YAAI8E,KAAK,GAAGE,QAAQ,CAACiE,EAAD,EAAKjJ,CAAL,EAAQ6E,OAAR,CAApB;;AAEA,YAAIs+B,aAAa,CAACr+B,KAAD,CAAb,IAAwBV,KAAK,CAACC,OAAN,CAAcS,KAAd,CAA5B,EAAkD;AAC9C;AACAA,eAAK,GAAGP,aAAa,CAACO,KAAD,EAAQE,QAAR,EAAkBH,OAAlB,CAArB;AACH;;AAED,eAAOC,KAAP;AACH,OAZa,CAAd;AAPiB;;AAIrB,SAAK,IAAI9E,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGlC,MAApB,EAA4BkC,CAAC,EAA7B,EAAiC;AAAA,aAAxBA,CAAwB;AAgBhC,KApBoB,CAsBrB;;;AACA,WAAOZ,MAAP;AACH,GAxBD,MAwBO,IAAI+jC,aAAa,CAACxmC,IAAD,CAAjB,EAAyB;AAC5B,QAAIyC,OAAM,GAAG,EAAb;;AAD4B,iCAGnBiC,GAHmB;AAIxB,UAAI,CAAC1E,IAAI,CAAC8F,cAAL,CAAoBpB,GAApB,CAAL,EAA+B;AAC3B;AACH;;AAED0hC,oBAAc,CAAC3jC,OAAD,EAASiC,GAAT,EAAc,YAAM;AAC9B,YAAIwD,OAAO,GAAGJ,OAAO,GAAOA,OAAP,SAAoBpD,GAApB,QAAiCA,GAAtD,CAD8B,CAE9B;;AACA,YAAI4H,EAAE,GAAGtM,IAAI,CAAC0E,GAAD,CAAb;AAEA,YAAIyD,KAAK,GAAGE,QAAQ,CAACiE,EAAD,EAAK5H,GAAL,EAAUwD,OAAV,CAApB;;AAEA,YAAIs+B,aAAa,CAACr+B,KAAD,CAAb,IAAwBV,KAAK,CAACC,OAAN,CAAcS,KAAd,CAA5B,EAAkD;AAC9C;AACAA,eAAK,GAAGP,aAAa,CAACO,KAAD,EAAQE,QAAR,EAAkBH,OAAlB,CAArB;AACH;;AAED,eAAOC,KAAP;AACH,OAba,CAAd;AARwB;;AAG5B,SAAK,IAAIzD,GAAT,IAAgB1E,IAAhB,EAAsB;AAAA,wBAAb0E,GAAa;;AAAA,+BAEd;AAiBP,KAtB2B,CAwB5B;;;AACA,WAAOjC,OAAP;AACH,GA1BM,MA0BA;AACH,UAAM,IAAII,KAAJ,2BAAN;AACH;AACJ;AAGM,SAAS2F,QAAT,CAAkB3C,MAAlB,EAAmC4C,MAAnC,EAAoDnI,IAApD,EAAmE0G,GAAnE,EAAgF;AACnF,MAAInB,MAAM,CAACC,cAAP,CAAsBxF,IAAtB,CAAJ,EAAiC;AAC7B,QAAIoI,UAAU,GAAG3F,MAAM,CAAC4F,wBAAP,CAAgC9C,MAAhC,EAAwCvF,IAAxC,CAAjB,CAD6B,CAE7B;;AACAyC,UAAM,CAACgF,cAAP,CAAsBU,MAAtB,EAA8BnI,IAA9B,EAAoCoI,UAApC;AAEH,GALD,MAKO;AACHD,UAAM,CAACnI,IAAD,CAAN,GAAe0G,GAAf;AACH;AACJ;AAWM,SAASqC,KAAT,CAAeC,OAAf,EAA0ChE,MAA1C,EAA2DiE,KAA3D,EAAkG;AAAA,MAAvCA,KAAuC;AAAvCA,SAAuC,GAAtB,CAAsB;AAAA;;AAErG,MAAI,OAAOD,OAAP,KAAmB,QAAvB,EAAiC;AAC7B;AACAA,WAAO,GAAG,IAAIE,MAAJ,CAAWF,OAAX,CAAV;AACH;;AAED,MAAI7G,MAAM,GAAG6C,MAAM,CAACuB,KAAP,CAAa0C,KAAb,EAAoBE,KAApB,CAA0BH,OAA1B,CAAb;;AAEA,MAAI,CAAC7G,MAAL,EAAa;AACT;AACH,GAXoG,CAarG;;;AACA,MAAIiH,KAAc,GAAGjH,MAAM,CAACiH,KAA5B;AACA,MAAImtB,QAAQ,GAAGp0B,MAAM,CAAC,CAAD,CAArB;AAEA,SAAO;AACHkH,QAAI,EAAIktB,QADL;AAEHjtB,UAAM,EAAEnH,MAAM,CAACoE,KAAP,CAAa,CAAb,CAFL;AAGH0C,SAAK,EAAGA,KAAK,GAAGG,KAHb;AAIHG,OAAG,EAAKN,KAAK,GAAGG,KAAR,GAAgBmtB,QAAQ,CAAC11B,MAJ9B;AAKHA,UAAM,EAAE01B,QAAQ,CAAC11B,MALd;AAOHiE,WAPG,mBAOKuE,IAPL,EAO6B;AAE5B,UAAI,CAACktB,QAAL,EAAe;AACX,eAAO,EAAP;AACH;;AAED,kBAAWA,QAAQ,CAAChwB,KAAT,CAAe,CAAf,EAAkB0C,KAAK,GAAGG,KAA1B,CAAX,GAAgDC,IAAhD,GAAyDktB,QAAQ,CAAChwB,KAAT,CAAe6C,KAAK,GAAGmtB,QAAQ,CAAC11B,MAAhC,CAAzD;AACH;AAdE,GAAP;AAgBH;AAEM,SAAS2I,QAAT,CAAkBR,OAAlB,EAA6ChE,MAA7C,EAAuF;AAE1F,MAAIyE,OAAO,GAAG,EAAd;AACA,MAAIR,KAAK,GAAG,CAAZ,CAH0F,CAK1F;;AACA,SAAO,IAAP,EAAa;AACT,QAAIstB,QAAQ,GAAGxtB,KAAK,CAACC,OAAD,EAAUhE,MAAV,EAAkBiE,KAAlB,CAApB;;AAEA,QAAI,CAACstB,QAAL,EAAe;AACX;AACH;;AAED9sB,WAAO,CAAChJ,IAAR,CAAa81B,QAAb;AACAttB,SAAK,GAAGE,KAAK,CAACI,GAAd;AACH;;AAED,SAAOE,OAAP;AACH;AAEM,SAAS08B,SAAT,CAAmBrkC,KAAnB,EAA6C;AAChD,SAAOA,KAAK,KAAK,IAAV,IAAkBA,KAAK,KAAKqB,SAAnC;AACH;AAEM,SAASyV,KAAT,CAAetU,MAAf,EAAuD;AAC1D,SAAO5C,2BAAY,CAAC4B,GAAb,CAAiBgB,MAAjB,EAAyBpE,IAAzB,CAA8B;AAAA,WAAM0Y,KAAK,CAACtU,MAAD,CAAX;AAAA,GAA9B,CAAP;AACH;AAEM,SAAS0G,QAAT,CAAqB1G,MAArB,EAA6Dd,IAA7D,EAAqH;AAAA,MAAxDA,IAAwD;AAAxDA,QAAwD,GAAxC,GAAwC;AAAA;;AAExH,MAAID,OAAJ;;AAEA,MAAM0H,eAAe,GAAG,SAAlBA,eAAkB,GAAW;AAAA;AAAA;;AAC/BxH,gBAAY,CAACF,OAAD,CAAZ;AAEAA,WAAO,GAAG7C,UAAU,CAAC,YAAM;AACvB,aAAO4D,MAAM,CAACG,KAAP,CAAa,MAAb,EAAmBmG,WAAnB,CAAP;AACH,KAFmB,EAEjBpH,IAFiB,CAApB;AAGH,GAND;;AAQA,SAAOw/B,eAAe,CAAC/3B,eAAD,EAAsB63B,eAAe,CAACx+B,MAAD,CAArC,iBAAtB;AACH;AAEM,SAASilB,OAAT,CAAiB7pB,IAAjB,EAAyC;AAC5C,SAAO+C,MAAM,CAACC,SAAP,CAAiB3C,QAAjB,CAA0BE,IAA1B,CAA+BP,IAA/B,MAAyC,iBAAhD;AACH;AAID;AACO,IAAIy/B,mBAAiC,GAAG,SAApCA,cAAoC,CAAY76B,MAAZ,EAA0E;AAErH,MAAI86B,OAAO,GAAG,IAAIx2B,gDAAJ,EAAd,CAFqH,CAIrH;;AACA,SAAO,SAASy2B,eAAT,CAAyBC,GAAzB,EAAwC;AAAA;;AAC3C,WAAOF,OAAO,CAAC8E,QAAR,CAAiB5E,GAAjB,EAAsB;AAAA,aAAMh7B,MAAM,CAACrE,IAAP,CAAY,MAAZ,EAAkBq/B,GAAlB,CAAN;AAAA,KAAtB,CAAP;AACH,GAFD;AAGH,CARM;AAYP;AACO,IAAI8G,0BAAkD,GAAG,SAArDA,qBAAqD,CAAY9hC,MAAZ,EAAsG;AAElK,MAAI86B,OAAO,GAAG,IAAIx2B,gDAAJ,EAAd,CAFkK,CAIlK;;AACA,SAAO,SAASy9B,sBAAT,CAAgC/G,GAAhC,EAA6D;AAAA;;AAChE,WAAOF,OAAO,CAAC8E,QAAR,CAAiB5E,GAAjB,EAAsB;AAAA,aACzBh7B,MAAM,CAACrE,IAAP,CAAY,MAAZ,EAAkBq/B,GAAlB,EAAuBl8B,OAAvB,CAA+B,YAAM;AACjCg8B,eAAO,CAAC3D,MAAR,CAAe6D,GAAf;AACH,OAFD,CADyB;AAAA,KAAtB,CAAP;AAKH,GAND;AAOH,CAZM;AAcA,SAAS4E,QAAT,CAAyC5+B,GAAzC,EAAkDlB,GAAlD,EAAgE2hC,MAAhE,EAAsF;AACzF,MAAIzgC,GAAG,CAACE,cAAJ,CAAmBpB,GAAnB,CAAJ,EAA6B;AACzB,WAAOkB,GAAG,CAAClB,GAAD,CAAV;AACH;;AAED,MAAM+B,GAAG,GAAG4/B,MAAM,EAAlB;AACAzgC,KAAG,CAAClB,GAAD,CAAH,GAAW+B,GAAX;AACA,SAAOA,GAAP;AACH;AAQM,SAASmgC,OAAT,CAAiBhhC,GAAjB,EAA6C;AAEhD,MAAMihC,KAAK,GAAG,EAAd;AACA,MAAIC,OAAO,GAAG,KAAd;AAEA,SAAO;AACHv+B,OADG,eACYjI,IADZ,EAC2BN,IAD3B,EACyC;AACxC,UAAI,CAAC8mC,OAAL,EAAc;AACVlhC,WAAG,CAACtF,IAAD,CAAH,GAAYN,IAAZ;AACA,aAAK+mC,QAAL,CAAc,YAAM;AAChB,iBAAOnhC,GAAG,CAACtF,IAAD,CAAV;AACH,SAFD;AAGH;;AACD,aAAON,IAAP;AACH,KATE;AAWH+mC,YAXG,oBAWMniC,MAXN,EAWyB;AACxB,UAAIkiC,OAAJ,EAAa;AACTliC,cAAM;AACT,OAFD,MAEO;AACHiiC,aAAK,CAAC9lC,IAAN,CAAW4J,IAAI,CAAC/F,MAAD,CAAf;AACH;AACJ,KAjBE;AAmBHV,OAnBG,iBAmBwB;AACvB,UAAMG,OAAO,GAAG,EAAhB;AACAyiC,aAAO,GAAG,IAAV;;AAEA,aAAOD,KAAK,CAAC1lC,MAAb,EAAqB;AACjB,YAAM6lC,IAAI,GAAGH,KAAK,CAACI,GAAN,EAAb;AACA5iC,eAAO,CAACtD,IAAR,CAAaimC,IAAI,EAAjB;AACH;;AAED,aAAOhlC,2BAAY,CAACkC,GAAb,CAAiBG,OAAjB,EAA0B7D,IAA1B,CAA+BuK,IAA/B,CAAP;AACH;AA7BE,GAAP;AA+BH;AAEM,SAASm8B,QAAT,CAAqB7D,EAArB,EAAyG;AAC5G,MAAI5gC,MAAJ;AACA,MAAIJ,KAAJ;;AAEA,MAAI;AACAI,UAAM,GAAG4gC,EAAE,EAAX;AACH,GAFD,CAEE,OAAO5iC,GAAP,EAAY;AACV4B,SAAK,GAAG5B,GAAR;AACH,GAR2G,CAU5G;;;AACA,SAAO;AAAEgC,UAAM,EAANA,MAAF;AAAUJ,SAAK,EAALA;AAAV,GAAP;AACH;AAEM,SAAS8kC,eAAT,CAA0CnP,GAA1C,EAAmDh4B,IAAnD,EAA6D;AAChE,MAAM0J,KAAK,GAAGsuB,GAAG,CAACl3B,OAAJ,CAAYd,IAAZ,CAAd;;AACA,MAAI0J,KAAK,KAAK,CAAC,CAAf,EAAkB;AACdsuB,OAAG,CAACz2B,MAAJ,CAAWmI,KAAX,EAAkB,CAAlB;AACH;AACJ;AAEM,SAAS09B,YAAT,CAAyB9mC,IAAzB,EAAwC+mC,KAAxC,EAAqE;AACxE,MAAIA,KAAK,KAAK,IAAV,IAAkB,OAAOA,KAAP,KAAiB,WAAvC,EAAoD;AAChD,UAAM,IAAIxkC,KAAJ,eAAuBvC,IAAvB,oBAAN;AACH;;AAED,SAAO+mC,KAAP;AACH;AAEM,SAASC,MAAT,CAAgBtP,GAAhB,EAAuE;AAC1E,MAAMv1B,MAAM,GAAG,EAAf;;AAD0E,0BAEvDu1B,GAFuD,gBAElD;AAAnB,QAAMh4B,IAAI,GAAIg4B,GAAJ,KAAV;AACD;AACAv1B,UAAM,CAACzC,IAAD,CAAN,GAAe,IAAf;AACH;;AACD,SAAO+C,MAAM,CAACyB,IAAP,CAAY/B,MAAZ,CAAP;AACH,C;;ACtiCM,IAAM8kC,SAAS,GAAG;AACrBC,OAAK,EAAE;AADc,CAAlB,C;;;;ACDP;AAEA;AACA;AAEA;AAEA;AAEA;AACA;AAKO,SAASt6B,eAAT,GAAqC;AACxC,SAAOO,OAAO,CAACf,QAAQ,CAAC+6B,IAAV,CAAP,IAA0B/6B,QAAQ,CAACK,UAAT,KAAwB,UAAzD;AACH;AAEM,SAAS7H,SAAT,CAAmBC,GAAnB,EAA0C;AAC7C,SAAOA,GAAG,CAACC,OAAJ,CAAY,KAAZ,EAAmB,KAAnB,EAA0BA,OAA1B,CAAkC,IAAlC,EAAwC,KAAxC,EAA+CA,OAA/C,CAAuD,IAAvD,EAA6D,KAA7D,EAAoEA,OAApE,CAA4E,KAA5E,EAAmF,KAAnF,CAAP;AACH;AAEM,SAASsiC,kBAAT,GAAmD;AACtD,SAAO5C,aAAa,CAAC4C,kBAAD,EAAqB,YAA2B;AAChE,WAAO,IAAI1lC,2BAAJ,CAAiB,UAAAL,OAAO,EAAI;AAC/B,UAAIuL,eAAe,EAAnB,EAAuB;AACnBvL,eAAO;AACV;;AAEDzB,YAAM,CAACyP,gBAAP,CAAwB,MAAxB,EAAgC;AAAA,eAAMhO,OAAO,EAAb;AAAA,OAAhC;AACH,KANM,CAAP;AAOH,GARmB,CAApB;AASH;AAEM,SAASgmC,oBAAT,GAAqD;AACxD,SAAO7C,aAAa,CAAC6C,oBAAD,EAAuB,YAA2B;AAClE,WAAO,IAAI3lC,2BAAJ,CAAiB,UAAAL,OAAO,EAAI;AAE/B,UAAIuL,eAAe,EAAnB,EAAuB;AACnB,eAAOvL,OAAO,EAAd;AACH;;AAED,UAAI2F,QAAQ,GAAG0F,WAAW,CAAC,YAAM;AAC7B,YAAIE,eAAe,EAAnB,EAAuB;AACnBD,uBAAa,CAAC3F,QAAD,CAAb;AACA,iBAAO3F,OAAO,EAAd;AACH;AACJ,OALyB,EAKvB,EALuB,CAA1B;AAMH,KAZM,CAAP;AAaH,GAdmB,CAApB;AAeH;AAEM,SAASimC,mBAAT,GAA+D;AAClE,SAAOD,oBAAoB,GAAGnnC,IAAvB,CAA4B,YAAM;AACrC,QAAIkM,QAAQ,CAAC+6B,IAAb,EAAmB;AACf,aAAO/6B,QAAQ,CAAC+6B,IAAhB;AACH;;AAED,UAAM,IAAI5kC,KAAJ,CAAU,8CAAV,CAAN;AACH,GANM,CAAP;AAOH;AAEM,SAAS2N,UAAT,CAAoBC,WAApB,EAAmD;AACtD,SAAOq0B,aAAa,CAACt0B,UAAD,EAAa,YAAe;AAC5C,QAAIjD,MAAM,GAAG,EAAb;;AAEA,QAAI,CAACkD,WAAL,EAAkB;AACd,aAAOlD,MAAP;AACH;;AAED,QAAIkD,WAAW,CAAC3P,OAAZ,CAAoB,GAApB,MAA6B,CAAC,CAAlC,EAAqC;AACjC,aAAOyM,MAAP;AACH;;AAT2C,4CAW3BkD,WAAW,CAACvJ,KAAZ,CAAkB,GAAlB,CAX2B,2CAWH;AAApC,UAAIwJ,IAAI,2BAAR;AACDA,UAAI,GAAGA,IAAI,CAACxJ,KAAL,CAAW,GAAX,CAAP;;AAEA,UAAIwJ,IAAI,CAAC,CAAD,CAAJ,IAAWA,IAAI,CAAC,CAAD,CAAnB,EAAwB;AACpBnD,cAAM,CAACoD,kBAAkB,CAACD,IAAI,CAAC,CAAD,CAAL,CAAnB,CAAN,GAAsCC,kBAAkB,CAACD,IAAI,CAAC,CAAD,CAAL,CAAxD;AACH;AACJ;;AAED,WAAOnD,MAAP;AACH,GApBmB,EAoBjB,CAAEkD,WAAF,CApBiB,CAApB;AAqBH;AAGM,SAASG,aAAT,CAAuBtQ,IAAvB,EAA+C;AAClD,SAAOkQ,UAAU,CAACtQ,MAAM,CAACgO,QAAP,CAAgB2C,MAAhB,CAAuBhK,KAAvB,CAA6B,CAA7B,CAAD,CAAV,CAA4CvG,IAA5C,CAAP;AACH;AAEM,SAASunC,mBAAT,CAA6Bx6B,GAA7B,EAAqD;AAExD,MAAIA,GAAG,CAACvM,OAAJ,CAAY,GAAZ,MAAqB,CAAC,CAA1B,EAA6B;AACzB,WAAO,IAAP;AACH;;AAED,MAAIuM,GAAG,CAACvM,OAAJ,CAAY,GAAZ,MAAqB,CAAzB,EAA4B;AACxB,WAAO,KAAP;AACH;;AAED,MAAIuM,GAAG,CAACnG,KAAJ,CAAU,GAAV,EAAe,CAAf,MAAsBhH,MAAM,CAACgO,QAAP,CAAgB2c,IAAhB,CAAqB3jB,KAArB,CAA2B,GAA3B,EAAgC,CAAhC,CAA1B,EAA8D;AAC1D,WAAO,KAAP;AACH;;AAED,SAAO,IAAP;AACH;AAEM,SAAS4J,WAAT,CAAqBlL,GAArB,EAAkE;AAAA,MAA7CA,GAA6C;AAA7CA,OAA6C,GAAb,EAAa;AAAA;;AAErE,SAAO7C,MAAM,CAACyB,IAAP,CAAYoB,GAAZ,EAAiB4H,MAAjB,CAAwB,UAAA9I,GAAG,EAAI;AAClC,WAAO,OAAOkB,GAAG,CAAClB,GAAD,CAAV,KAAoB,QAA3B;AACH,GAFM,EAEJD,GAFI,CAEA,UAAAC,GAAG,EAAI;AACV,WAAWQ,SAAS,CAACR,GAAD,CAApB,SAA+BQ,SAAS,CAACU,GAAG,CAAClB,GAAD,CAAJ,CAAxC;AACH,GAJM,EAIJsE,IAJI,CAIC,GAJD,CAAP;AAKH;AAEM,SAAS+H,WAAT,CAAqBC,aAArB,EAA6CC,KAA7C,EAA4F;AAAA,MAA/CA,KAA+C;AAA/CA,SAA+C,GAAb,EAAa;AAAA;;AAE/F,MAAI,CAACA,KAAD,IAAU,CAAClO,MAAM,CAACyB,IAAP,CAAYyM,KAAZ,EAAmB9P,MAAlC,EAA0C;AACtC,WAAO6P,aAAP;AACH;;AAED,SAAOF,WAAW,CAAC,2CACZN,UAAU,CAACQ,aAAD,CADC,MAEXC,KAFW,EAAlB;AAIH;AAEM,SAASC,SAAT,CAAmB7D,GAAnB,EAAiCC,OAAjC,EAA4H;AAAA,MAA3FA,OAA2F;AAA3FA,WAA2F,GAAb,EAAa;AAAA;;AAE/H,MAAI6D,KAAK,GAAG7D,OAAO,CAAC6D,KAAR,IAAiB,EAA7B;AACA,MAAI5M,IAAI,GAAG+I,OAAO,CAAC/I,IAAR,IAAgB,EAA3B;AAEA,MAAI6M,WAAJ;AACA,MAAIJ,aAAJ;AACA,MAAIK,YAAJ;;AAP+H,mBAS/FhE,GAAG,CAACnG,KAAJ,CAAU,GAAV,CAT+F;;AAS7HkK,aAT6H;AAShHC,cATgH;;AAAA,2BAU9FD,WAAW,CAAClK,KAAZ,CAAkB,GAAlB,CAV8F;;AAU7HkK,aAV6H;AAUhHJ,eAVgH;AAY/H,MAAIP,WAAW,GAAGM,WAAW,CAACC,aAAD,EAAgBG,KAAhB,CAA7B;AACA,MAAIG,UAAU,GAAGP,WAAW,CAACM,YAAD,EAAe9M,IAAf,CAA5B;;AAEA,MAAIkM,WAAJ,EAAiB;AACbW,eAAW,GAAOA,WAAP,SAAwBX,WAAnC;AACH;;AAED,MAAIa,UAAJ,EAAgB;AACZF,eAAW,GAAOA,WAAP,SAAwBE,UAAnC;AACH;;AAED,SAAOF,WAAP;AACH;AAEM,SAAS02B,QAAT,CAAkBz6B,GAAlB,EAAgCK,GAAhC,EAA2F;AAAA,MAA3DA,GAA2D;AAA3DA,OAA2D,GAA7BxN,MAA6B;AAAA;;AAC9F,SAAO,IAAI8B,2BAAJ,CAAiB,UAAAL,OAAO,EAAI;AAC/B+L,OAAG,CAACQ,QAAJ,GAAeb,GAAf;;AACA,QAAI,CAACw6B,mBAAmB,CAACx6B,GAAD,CAAxB,EAA+B;AAC3B1L,aAAO;AACV;AACJ,GALM,CAAP;AAMH;AAEM,SAASomC,eAAT,GAAqC;AACxC,MAAIthB,IAAI,GAAG/Z,QAAQ,CAACE,aAAT,CAAuB,qBAAvB,CAAX;;AAEA,MAAI40B,QAAQ,MAAMthC,MAAM,CAAC8nC,MAAP,CAAcl2B,KAAd,GAAsB,GAApC,IAA2C,CAAC2U,IAAhD,EAAsD;AAClD,WAAO,KAAP;AACH;;AAED,SAAO,IAAP;AACH;AAEM,SAASwhB,gBAAT,CAA0B37B,EAA1B,EAAsD;AACzD,SAAOmB,OAAO,CAACnB,EAAE,CAAC2F,WAAH,IAAkB3F,EAAE,CAAC4F,YAArB,IAAqC5F,EAAE,CAAC47B,cAAH,GAAoB/mC,MAA1D,CAAd;AACH;AAEM,SAAS8lB,iBAAT,GAAuC;AAC1C,SAAO6d,aAAa,CAAC7d,iBAAD,EAAoB,YAAgB;AACpD;AACA,WAAOxZ,OAAO,CACVvN,MAAM,CAACgnB,WAAP,IACAA,WAAW,CAACJ,GADZ,IAEAI,WAAW,CAACC,MAFZ,IAGAD,WAAW,CAACC,MAAZ,CAAmBC,UAHnB,IAIAF,WAAW,CAACC,MAAZ,CAAmBE,eAJnB,IAKClhB,IAAI,CAAC2M,GAAL,CAASoU,WAAW,CAACJ,GAAZ,KAAoBD,IAAI,CAACC,GAAL,EAA7B,IAA2C,IAL5C,IAMCI,WAAW,CAACJ,GAAZ,MAAqBI,WAAW,CAACC,MAAZ,CAAmBC,UAAnB,GAAgCF,WAAW,CAACC,MAAZ,CAAmBE,eAAxE,CAAD,GAA6F,CAPnF,CAAd;AASA;AACH,GAZmB,CAApB;AAaH;AAEM,SAAS8gB,iBAAT,GAAqD;AACxD,SAAOR,oBAAoB,GAAGnnC,IAAvB,CAA4B,YAAM;AAErC,QAAI,CAACymB,iBAAiB,EAAtB,EAA0B;AACtB;AACH;;AAED,QAAIE,MAAM,GAAGjnB,MAAM,CAACgnB,WAAP,CAAmBC,MAAhC;;AAEA,QAAIA,MAAM,CAACC,UAAP,IAAqBD,MAAM,CAACihB,cAAhC,EAAgD;AAC5C,aAAOjhB,MAAM,CAACihB,cAAP,GAAwBjhB,MAAM,CAACC,UAAtC;AACH;AACJ,GAXM,CAAP;AAYH;AAEM,SAASihB,UAAT,CAAoBt6B,IAApB,EAAiD;AAAA,MAA7BA,IAA6B;AAA7BA,QAA6B,GAAb,EAAa;AAAA;;AACpD,SAAOA,IAAI,CAAC1N,QAAL,GACF+E,OADE,CACM,IADN,EACY,OADZ,EAEFA,OAFE,CAEM,IAFN,EAEY,MAFZ,EAGFA,OAHE,CAGM,IAHN,EAGY,MAHZ,EAIFA,OAJE,CAIM,IAJN,EAIY,QAJZ,EAKFA,OALE,CAKM,IALN,EAKY,OALZ,EAMFA,OANE,CAMM,KANN,EAMa,QANb,CAAP;AAOH;AAEM,SAASyqB,SAAT,GAA+B;AAClC,SAAQ,OAAO3vB,MAAP,KAAkB,WAA1B;AACH;AAEM,SAASmM,gBAAT,CAA0BE,QAA1B,EAA6CqC,GAA7C,EAAuG;AAAA,MAA1DA,GAA0D;AAA1DA,OAA0D,GAAtC1O,MAAM,CAACwM,QAA+B;AAAA;;AAC1G,SAAOjF,KAAK,CAACzE,SAAN,CAAgB6D,KAAhB,CAAsBtG,IAAtB,CAA2BqO,GAAG,CAACvC,gBAAJ,CAAqBE,QAArB,CAA3B,CAAP;AACH;AAEM,SAAS8L,OAAT,CAAiBrM,OAAjB,EAAwC3K,OAAxC,EAAmE;AACtE2K,SAAO,CAAC2D,gBAAR,CAAyB,YAAzB,EAAuC5E,IAAvC;AACAiB,SAAO,CAAC2D,gBAAR,CAAyB,OAAzB,EAAkCtO,OAAlC;AACA2K,SAAO,CAAC2D,gBAAR,CAAyB,UAAzB,EAAqC,UAACU,KAAD,EAAmB;AACpD;AACA,QAAIA,KAAK,CAACi4B,OAAN,KAAkBf,SAAS,CAACC,KAAhC,EAAuC;AACnC,aAAOnmC,OAAO,CAACgP,KAAD,CAAd;AACH;AACJ,GALD;AAMH;AAEM,SAAS6H,SAAT,OAAmH;AAAA,uBAA9FoD,IAA8F;AAAA,MAA9FA,IAA8F,0BAAvFpb,MAAM,CAACgO,QAAP,CAAgBoN,IAAuE;AAAA,MAAjEvU,IAAiE,QAAjEA,IAAiE;AACtH,SAAO+9B,aAAa,CAAC5sB,SAAD,EAAY,YAA2B;AAEvD,QAAI7K,GAAG,QAAOiO,IAAP,GAAgBvU,IAAvB;AACA,QAAIwhC,OAAO,GAAG9gC,KAAK,CAACzE,SAAN,CAAgB6D,KAAhB,CAAsBtG,IAAtB,CAA2BmM,QAAQ,CAAC87B,oBAAT,CAA8B,QAA9B,CAA3B,CAAd;;AAHuD,4BAKpCD,OALoC,gBAK3B;AAAvB,UAAIhwB,MAAM,GAAIgwB,OAAJ,KAAV;;AACD,UAAI,CAAChwB,MAAM,CAACpB,GAAZ,EAAiB;AACb;AACH;;AAED,UAAIA,GAAG,GAAGoB,MAAM,CAACpB,GAAP,CAAW/R,OAAX,CAAmB,cAAnB,EAAmC,EAAnC,EAAuC8B,KAAvC,CAA6C,GAA7C,EAAkD,CAAlD,CAAV;;AAEA,UAAIiQ,GAAG,KAAK9J,GAAZ,EAAiB;AACb,eAAOkL,MAAP;AACH;AACJ;AACJ,GAhBmB,EAgBjB,CAAExR,IAAF,CAhBiB,CAApB;AAiBH;AAEM,SAAS0hC,qBAAT,GAA2C;AAC9C,SAAO3D,aAAa,CAAC2D,qBAAD,EAAwB,YAAM;AAC9C,QAAI;AACA,UAAI,OAAOvoC,MAAP,KAAkB,WAAtB,EAAmC;AAC/B,eAAO,KAAP;AACH;;AAED,UAAIA,MAAM,CAACwoC,YAAX,EAAyB;AACrB,YAAItmC,KAAK,GAAG+D,IAAI,CAACE,MAAL,GAAchG,QAAd,EAAZ;AACAH,cAAM,CAACwoC,YAAP,CAAoBC,OAApB,CAA4B,wBAA5B,EAAsDvmC,KAAtD;AACA,YAAIK,MAAM,GAAGvC,MAAM,CAACwoC,YAAP,CAAoBE,OAApB,CAA4B,wBAA5B,CAAb;AACA1oC,cAAM,CAACwoC,YAAP,CAAoBG,UAApB,CAA+B,wBAA/B;;AACA,YAAIzmC,KAAK,KAAKK,MAAd,EAAsB;AAClB,iBAAO,IAAP;AACH;AACJ;AACJ,KAdD,CAcE,OAAOhC,GAAP,EAAY,CACV;AACH;;AACD,WAAO,KAAP;AACH,GAnBmB,CAApB;AAoBH;AAEM,SAASqoC,iBAAT,GAA2E;AAC9E,MAAIC,GAAG,GAAG7oC,MAAM,CAACiQ,SAAjB;AAEA,MAAIoL,OAAO,GAAGwtB,GAAG,CAACC,SAAJ,GACRvhC,KAAK,CAACzE,SAAN,CAAgB6D,KAAhB,CAAsB9B,KAAtB,CAA4BgkC,GAAG,CAACC,SAAhC,CADQ,GAER,EAFN;;AAIA,MAAID,GAAG,CAACE,QAAR,EAAkB;AACd1tB,WAAO,CAACxa,IAAR,CAAagoC,GAAG,CAACE,QAAjB;AACH;;AAED,MAAIF,GAAG,CAACG,YAAR,EAAsB;AAClB3tB,WAAO,CAACxa,IAAR,CAAagoC,GAAG,CAACG,YAAjB;AACH;;AAED,SAAO3tB,OAAO,CAAC9W,GAAR,CAAY,UAAAuX,MAAM,EAAI;AAEzB,QAAIA,MAAM,IAAIA,MAAM,CAACvS,KAAP,CAAa,wBAAb,CAAd,EAAsD;AAAA,0BAC1BuS,MAAM,CAAC9U,KAAP,CAAa,MAAb,CAD0B;AAAA,UAC5CgV,IAD4C;AAAA,UACtCD,OADsC;;AAElD,aAAO;AAAEA,eAAO,EAAPA,OAAF;AAAWC,YAAI,EAAJA;AAAX,OAAP;AACH;;AAED,QAAIF,MAAM,IAAIA,MAAM,CAACvS,KAAP,CAAa,YAAb,CAAd,EAA0C;AACtC,aAAO;AAAEyS,YAAI,EAAEF;AAAR,OAAP;AACH;;AAED,WAAO,IAAP;AAEH,GAbM,EAaJxO,MAbI,CAaGC,OAbH,CAAP;AAcH;AAGM,SAAS5B,WAAT,CAAqBC,SAArB,EAA8C3D,KAA9C,EAA0E;AAC7E2D,WAAS,CAACD,WAAV,CAAsB1D,KAAtB;AACH;AAEM,SAAS4D,SAAT,CAAmBC,OAAnB,EAA8C;AAEjD,MAAIA,OAAO,YAAY9L,MAAM,CAAC+L,OAA9B,EAAuC;AACnC,WAAO,IAAP;AACH;;AAED,MAAID,OAAO,KAAK,IAAZ,IAAoB,OAAOA,OAAP,KAAmB,QAAvC,IAAmDA,OAAO,CAACE,QAAR,KAAqB,CAAxE,IAA6E,OAAOF,OAAO,CAACG,KAAf,KAAyB,QAAtG,IAAkH,OAAOH,OAAO,CAACI,aAAf,KAAiC,QAAvJ,EAAiK;AAC7J,WAAO,IAAP;AACH;;AAED,SAAO,KAAP;AACH;AAEM,SAASI,cAAT,CAAwBC,EAAxB,EAA6CmC,GAA7C,EAAqG;AAAA,MAAxDA,GAAwD;AAAxDA,OAAwD,GAAzBlC,QAAyB;AAAA;;AAExG,MAAIX,SAAS,CAACU,EAAD,CAAb,EAAmB;AACf;AACA,WAAOA,EAAP;AACH;;AAED,MAAI,OAAOA,EAAP,KAAc,QAAlB,EAA4B;AACxB,WAAOmC,GAAG,CAAChC,aAAJ,CAAkBH,EAAlB,CAAP;AACH;AACJ;AAEM,SAASI,UAAT,CAAoBJ,EAApB,EAAyCmC,GAAzC,EAAgG;AAAA,MAAvDA,GAAuD;AAAvDA,OAAuD,GAAxBlC,QAAwB;AAAA;;AAEnG,MAAIV,OAAO,GAAGQ,cAAc,CAACC,EAAD,EAAKmC,GAAL,CAA5B;;AAEA,MAAI5C,OAAJ,EAAa;AACT,WAAOA,OAAP;AACH;;AAED,QAAM,IAAInJ,KAAJ,4BAAoC2D,SAAS,CAACiG,EAAD,CAA7C,CAAN;AACH;AAEM,SAASU,YAAT,CAAsBV,EAAtB,EAA8E;AACjF,SAAO,IAAIzK,2BAAJ,CAAiB,UAACL,OAAD,EAAUiB,MAAV,EAAqB;AAEzC,QAAItC,IAAI,GAAGkG,SAAS,CAACiG,EAAD,CAApB;AACA,QAAIH,EAAE,GAAGE,cAAc,CAACC,EAAD,CAAvB;;AAEA,QAAIH,EAAJ,EAAQ;AACJ,aAAO3K,OAAO,CAAC2K,EAAD,CAAd;AACH;;AAED,QAAIY,eAAe,EAAnB,EAAuB;AACnB,aAAOtK,MAAM,CAAC,IAAIC,KAAJ,oCAA4CvC,IAA5C,qBAAD,CAAb;AACH;;AAED,QAAIgH,QAAQ,GAAG0F,WAAW,CAAC,YAAM;AAE7BV,QAAE,GAAGE,cAAc,CAACC,EAAD,CAAnB;;AAEA,UAAIH,EAAJ,EAAQ;AACJW,qBAAa,CAAC3F,QAAD,CAAb;AACA,eAAO3F,OAAO,CAAC2K,EAAD,CAAd;AACH;;AAED,UAAIY,eAAe,EAAnB,EAAuB;AACnBD,qBAAa,CAAC3F,QAAD,CAAb;AACA,eAAO1E,MAAM,CAAC,IAAIC,KAAJ,oCAA4CvC,IAA5C,qBAAD,CAAb;AACH;AACJ,KAbyB,EAavB,EAbuB,CAA1B;AAcH,GA3BM,CAAP;AA4BH;AAEM,SAASsN,cAAT,CAAwBxD,OAAxB,EAA0C;AAC7C,OAAKA,OAAL,GAAeA,OAAf;AACH;AAEDwD,cAAc,CAAC5K,SAAf,GAA2BD,MAAM,CAAComC,MAAP,CAActmC,KAAK,CAACG,SAApB,CAA3B;AAeO,SAASoK,KAAT,CAAeC,GAAf,EAA6BC,OAA7B,EAA8E;AAEjF;AACAA,SAAO,GAAGA,OAAO,IAAI,EAArB;AAHiF,iBAKzDA,OALyD;AAAA,MAK3EwE,KAL2E,YAK3EA,KAL2E;AAAA,MAKpEC,MALoE,YAKpEA,MALoE;AAOjF,MAAIL,GAAG,GAAG,CAAV;AACA,MAAIE,IAAI,GAAG,CAAX;;AAEA,MAAIE,KAAJ,EAAW;AACP,QAAI5R,MAAM,CAACkpC,UAAX,EAAuB;AACnBx3B,UAAI,GAAGzL,IAAI,CAACwyB,KAAL,CAAW,CAACz4B,MAAM,CAACkpC,UAAP,GAAoBt3B,KAArB,IAA8B,CAAzC,IAA8C5R,MAAM,CAACmpC,OAA5D;AACH,KAFD,MAEO,IAAInpC,MAAM,CAAC8nC,MAAP,CAAcl2B,KAAlB,EAAyB;AAC5BF,UAAI,GAAGzL,IAAI,CAACwyB,KAAL,CAAW,CAACz4B,MAAM,CAAC8nC,MAAP,CAAcl2B,KAAd,GAAsBA,KAAvB,IAAgC,CAA3C,CAAP;AACH;AACJ;;AAED,MAAIC,MAAJ,EAAY;AACR,QAAI7R,MAAM,CAACopC,WAAX,EAAwB;AACpB53B,SAAG,GAAGvL,IAAI,CAACwyB,KAAL,CAAW,CAACz4B,MAAM,CAACopC,WAAP,GAAqBv3B,MAAtB,IAAgC,CAA3C,IAAgD7R,MAAM,CAACqpC,OAA7D;AACH,KAFD,MAEO,IAAIrpC,MAAM,CAAC8nC,MAAP,CAAcj2B,MAAlB,EAA0B;AAC7BL,SAAG,GAAGvL,IAAI,CAACwyB,KAAL,CAAW,CAACz4B,MAAM,CAAC8nC,MAAP,CAAcj2B,MAAd,GAAuBA,MAAxB,IAAkC,CAA7C,CAAN;AACH;AACJ;;AAED,MAAID,KAAK,IAAIC,MAAb,EAAqB;AACjBzE,WAAO,GAAG;AACNoE,SAAG,EAAHA,GADG;AAEHE,UAAI,EAAJA,IAFG;AAGHE,WAAK,EAALA,KAHG;AAIHC,YAAM,EAANA,MAJG;AAKHwoB,YAAM,EAAM,CALT;AAMHiP,aAAO,EAAK,CANT;AAOHC,aAAO,EAAK,CAPT;AAQHC,eAAS,EAAG,CART;AASHC,gBAAU,EAAE;AATT,OAUAr8B,OAVA,CAAP;AAYH;;AAED,MAAIhN,IAAI,GAAGgN,OAAO,CAAChN,IAAR,IAAgB,EAA3B;AACA,SAAOgN,OAAO,CAAChN,IAAf,CA1CiF,CA4CjF;;AACA,MAAIiN,MAAM,GAAGxK,MAAM,CAACyB,IAAP,CAAY8I,OAAZ,EAAqB7I,GAArB,CAAyB,UAAAC,GAAG,EAAI;AACzC;AACA,QAAI4I,OAAO,CAAC5I,GAAD,CAAP,KAAiB,IAAjB,IAAyB4I,OAAO,CAAC5I,GAAD,CAAP,KAAiBjB,SAA9C,EAAyD;AACrD,aAAWiB,GAAX,SAAoB8B,SAAS,CAAC8G,OAAO,CAAC5I,GAAD,CAAR,CAA7B;AACH;AACJ,GALY,EAKV8I,MALU,CAKHC,OALG,EAKMzE,IALN,CAKW,GALX,CAAb;AAOA,MAAI0E,GAAJ;;AAEA,MAAI;AACAA,OAAG,GAAGxN,MAAM,CAACyN,IAAP,CAAYN,GAAZ,EAAiB/M,IAAjB,EAAuBiN,MAAvB,EAA+B,IAA/B,CAAN;AACH,GAFD,CAEE,OAAO9M,GAAP,EAAY;AACV,UAAM,IAAImN,cAAJ,mCAAmDnN,GAAG,CAAC+B,KAAJ,IAAa/B,GAAG,CAAC2J,OAApE,EAAN;AACH;;AAED,MAAIyD,wDAAc,CAACH,GAAD,CAAlB,EAAyB;AACrB,QAAIjN,GAAG,GAAG,IAAImN,cAAJ,uCAAV;AACA,UAAMnN,GAAN;AACH;;AAEDP,QAAM,CAACyP,gBAAP,CAAwB,QAAxB,EAAkC;AAAA,WAAMjC,GAAG,CAACO,KAAJ,EAAN;AAAA,GAAlC;AAEA,SAAOP,GAAP;AACH;AAGM,SAASI,aAAT,CAAuBJ,GAAvB,EAAmDK,IAAnD,EAAkE;AACrE,MAAI;AACAL,OAAG,CAAChB,QAAJ,CAAaiB,IAAb;AACAD,OAAG,CAAChB,QAAJ,CAAasB,KAAb,CAAmBD,IAAnB;AACAL,OAAG,CAAChB,QAAJ,CAAauB,KAAb;AACH,GAJD,CAIE,OAAOxN,GAAP,EAAY;AACV,QAAI;AACAiN,SAAG,CAACQ,QAAJ,oDAA+D3H,IAAI,CAACC,SAAL,CAAeuH,IAAf,CAA/D;AACH,KAFD,CAEE,OAAOI,IAAP,EAAa,CACX;AACH;AACJ;AACJ;AAEM,SAASC,oBAAT,CAA8BV,GAA9B,EAA0DpB,EAA1D,EAA4E;AAE/E,MAAI+B,GAAG,GAAG/B,EAAE,CAACgC,OAAH,CAAW9I,WAAX,EAAV;;AAEA,MAAI6I,GAAG,KAAK,MAAZ,EAAoB;AAChB,UAAM,IAAIxL,KAAJ,uCAA+CwL,GAA/C,CAAN;AACH;;AAED,MAAIE,eAAe,GAAGb,GAAG,CAAChB,QAAJ,CAAa6B,eAAnC;;AAR+E,kCAU3D+3B,SAAS,CAAC/3B,eAAe,CAACC,QAAjB,CAVkD,mCAUtB;AAApD,QAAMrG,KAAK,mBAAX;AACDoG,mBAAe,CAACE,WAAhB,CAA4BtG,KAA5B;AACH;;AAZ8E,kCAc3Dm+B,SAAS,CAACh6B,EAAE,CAACkC,QAAJ,CAdkD,mCAcnC;AAAvC,QAAMrG,MAAK,mBAAX;AACDoG,mBAAe,CAAC1C,WAAhB,CAA4B1D,MAA5B;AACH;AACJ;AAEM,SAASuG,QAAT,CAAkBpC,EAAlB,EAAoCqC,SAApC,EAAwDC,GAAxD,EAA0F;AAAA,MAAlCA,GAAkC;AAAlCA,OAAkC,GAAjB1O,MAAM,CAACwM,QAAU;AAAA;;AAC7F;AACA,MAAIJ,EAAE,CAACuC,UAAP,EAAmB;AACf;AACAvC,MAAE,CAACuC,UAAH,CAAcC,OAAd,GAAwBH,SAAxB;AACH,GAHD,MAGO;AACHrC,MAAE,CAACT,WAAH,CAAe+C,GAAG,CAACG,cAAJ,CAAmBJ,SAAnB,CAAf;AACH;AACJ;AAWD,IAAIY,sBAAJ;AAEO,SAASC,cAAT,CAAwBC,KAAxB,EAAqF;AACxFF,wBAAsB,GAAGA,sBAAsB,IAAI,IAAIrG,gDAAJ,EAAnD;;AAEA,MAAIqG,sBAAsB,CAACG,GAAvB,CAA2BD,KAA3B,CAAJ,EAAuC;AACnC,QAAI5O,QAAO,GAAG0O,sBAAsB,CAACzI,GAAvB,CAA2B2I,KAA3B,CAAd;;AACA,QAAI5O,QAAJ,EAAa;AACT,aAAOA,QAAP;AACH;AACJ;;AAED,MAAIA,OAAO,GAAG,IAAImB,2BAAJ,CAAiB,UAACL,OAAD,EAAUiB,MAAV,EAAqB;AAChD6M,SAAK,CAACE,gBAAN,CAAuB,MAAvB,EAA+B,YAAM;AACjCC,+DAAe,CAACH,KAAD,CAAf;AACA9N,aAAO,CAAC8N,KAAD,CAAP;AACH,KAHD;AAKAA,SAAK,CAACE,gBAAN,CAAuB,OAAvB,EAAgC,UAAClP,GAAD,EAAiB;AAC7C,UAAIgP,KAAK,CAACJ,aAAV,EAAyB;AACrB1N,eAAO,CAAC8N,KAAD,CAAP;AACH,OAFD,MAEO;AACH7M,cAAM,CAACnC,GAAD,CAAN;AACH;AACJ,KAND;AAOH,GAba,CAAd;AAeA8O,wBAAsB,CAAChH,GAAvB,CAA2BkH,KAA3B,EAAkC5O,OAAlC;AAEA,SAAOA,OAAP;AACH;AAEM,SAASgP,gBAAT,CAA0BJ,KAA1B,EAA2F;AAC9F,SAAOD,cAAc,CAACC,KAAD,CAAd,CAAsBjP,IAAtB,CAA2B,UAAAsP,WAAW,EAAI;AAE7C,QAAI,CAACA,WAAW,CAACT,aAAjB,EAAgC;AAC5B,YAAM,IAAIxM,KAAJ,mCAAN;AACH;;AAED,WAAOiN,WAAW,CAACT,aAAnB;AACH,GAPM,CAAP;AAQH;AAEM,SAASL,aAAT,CAAuBX,GAAvB,EAA6Cf,OAA7C,EAAgFxB,SAAhF,EAAwH;AAAA,MAAjGuC,GAAiG;AAAjGA,OAAiG,GAAlF,KAAkF;AAAA;;AAAA,MAA3Ef,OAA2E;AAA3EA,WAA2E,GAA5C,EAA4C;AAAA;;AAE3He,KAAG,GAAGA,GAAG,CAAC7I,WAAJ,EAAN;AACA,MAAIwG,OAAO,GAAGU,QAAQ,CAACsC,aAAT,CAAuBX,GAAvB,CAAd;;AAEA,MAAIf,OAAO,CAACnB,KAAZ,EAAmB;AACfxG,UAAM,CAACqG,OAAO,CAACG,KAAT,EAAgBmB,OAAO,CAACnB,KAAxB,CAAN;AACH;;AAED,MAAImB,OAAO,CAAC2B,KAAZ,EAAmB;AACfjD,WAAO,CAACkD,SAAR,GAAoB5B,OAAO,CAAC2B,KAAR,CAAcjG,IAAd,CAAmB,GAAnB,CAApB;AACH;;AAED,MAAIsE,OAAO,CAACb,EAAZ,EAAgB;AACZT,WAAO,CAACoD,YAAR,CAAqB,IAArB,EAA2B9B,OAAO,CAACb,EAAnC;AACH;;AAED,MAAIa,OAAO,CAAC6B,UAAZ,EAAwB;AAAA,uCACJpM,MAAM,CAACyB,IAAP,CAAY8I,OAAO,CAAC6B,UAApB,CADI,uCAC6B;AAA5C,UAAIzK,GAAG,sBAAP;AACDsH,aAAO,CAACoD,YAAR,CAAqB1K,GAArB,EAA0B4I,OAAO,CAAC6B,UAAR,CAAmBzK,GAAnB,CAA1B;AACH;AACJ;;AAED,MAAI4I,OAAO,CAACuB,UAAZ,EAAwB;AACpBH,YAAQ,CAAC1C,OAAD,EAAUsB,OAAO,CAACuB,UAAlB,CAAR;AACH;;AAED,MAAI/C,SAAJ,EAAe;AACXD,eAAW,CAACC,SAAD,EAAYE,OAAZ,CAAX;AACH;;AAED,MAAIsB,OAAO,CAACS,IAAZ,EAAkB;AACd,QAAIM,GAAG,KAAK,QAAZ,EAAsB;AAClB;AACA,UAAI,CAACvC,SAAD,IAAc,CAACE,OAAO,CAACqD,aAA3B,EAA0C;AACtC,cAAM,IAAIxM,KAAJ,8EAAN;AACH,OAJiB,CAMlB;;;AACAiL,mBAAa,CAAC9B,OAAO,CAACqD,aAAT,EAAwB/B,OAAO,CAACS,IAAhC,CAAb;AAEH,KATD,MASO;AACH/B,aAAO,CAACsD,SAAR,GAAoBhC,OAAO,CAACS,IAA5B;AACH;AACJ;;AAED,SAAO/B,OAAP;AACH;AAYM,SAAS+D,MAAT,CAAgBzC,OAAhB,EAAyDxB,SAAzD,EAAuG;AAAA,MAAvFwB,OAAuF;AAAvFA,WAAuF,GAAlD,EAAkD;AAAA;;AAE1G,MAAI6B,UAAU,GAAG7B,OAAO,CAAC6B,UAAR,IAAsB,EAAvC;AACA,MAAIhD,KAAK,GAAGmB,OAAO,CAACnB,KAAR,IAAiB,EAA7B;AAEA,MAAIsD,KAAK,GAAGT,aAAa,CAAC,QAAD,EAAW;AAChCG,cAAU,EAAE;AACRc,uBAAiB,EAAE;AADb,OAEHd,UAFG,CADsB;AAKhChD,SAAK,EAAE;AACH+D,qBAAe,EAAE,aADhB;AAED05B,YAAM,EAAW;AAFhB,OAGEz9B,KAHF,CAL2B;AAUhC4B,QAAI,EAAGT,OAAO,CAACS,IAViB;AAWhCkB,SAAK,EAAE3B,OAAO,CAAC2B;AAXiB,GAAX,CAAzB;AAcA,MAAMiV,IAAI,GAAGhkB,MAAM,CAACiQ,SAAP,CAAiBC,SAAjB,CAA2B3G,KAA3B,CAAiC,YAAjC,CAAb;;AAEA,MAAI,CAACgG,KAAK,CAACo6B,YAAN,CAAmB,IAAnB,CAAL,EAA+B;AAC3Bp6B,SAAK,CAACL,YAAN,CAAmB,IAAnB,EAAyBpJ,QAAQ,EAAjC;AACH,GAvByG,CAyB1G;;;AACAwJ,gBAAc,CAACC,KAAD,CAAd;;AAEA,MAAI3D,SAAJ,EAAe;AACX,QAAIQ,EAAE,GAAGO,UAAU,CAACf,SAAD,CAAnB;AACAQ,MAAE,CAACT,WAAH,CAAe4D,KAAf;AACH;;AAED,MAAInC,OAAO,CAACD,GAAR,IAAe6W,IAAnB,EAAyB;AACrBzU,SAAK,CAACL,YAAN,CAAmB,KAAnB,EAA0B9B,OAAO,CAACD,GAAR,IAAe,aAAzC;AACH,GAnCyG,CAqC1G;;;AACA,SAAOoC,KAAP;AACH;AAEM,SAASE,gBAAT,CAA0B/J,GAA1B,EAA6CyK,KAA7C,EAA6DhP,OAA7D,EAAiH;AACpHuE,KAAG,CAAC+J,gBAAJ,CAAqBU,KAArB,EAA4BhP,OAA5B;AACA,SAAO;AACHC,UADG,oBACM;AACLsE,SAAG,CAAC0K,mBAAJ,CAAwBD,KAAxB,EAA+BhP,OAA/B;AACH;AAHE,GAAP;AAKH;AAEM,SAASuS,UAAT,CAAoB5H,OAApB,EAA2C6H,UAA3C,EAAuExS,OAAvE,EAA2H;AAE9HA,SAAO,GAAGsJ,IAAI,CAACtJ,OAAD,CAAd;;AAF8H,4BAIxGwS,UAJwG,iBAI5F;AAA7B,QAAIrJ,SAAS,GAAIqJ,UAAJ,MAAb;AACD7H,WAAO,CAAC2D,gBAAR,CAAyBnF,SAAzB,EAAoCnJ,OAApC;AACH;;AAED,SAAO;AACHC,UAAM,EAAEqJ,IAAI,CAAC,YAAM;AAAA,gCACOkJ,UADP,iBACmB;AAA7B,YAAIrJ,UAAS,GAAIqJ,UAAJ,MAAb;AACD7H,eAAO,CAACsE,mBAAR,CAA4B9F,UAA5B,EAAuCnJ,OAAvC;AACH;AACJ,KAJW;AADT,GAAP;AAOH;AAED,IAAMyS,eAAe,GAAG,CAAE,QAAF,EAAY,KAAZ,EAAmB,IAAnB,EAAyB,GAAzB,CAAxB;AAEO,SAASC,YAAT,CAAsB/H,OAAtB,EAA6C1L,IAA7C,EAA4D8B,KAA5D,EAA4E;AAE/E;AACA4J,SAAO,CAACG,KAAR,CAAc7L,IAAd,IAAsB8B,KAAtB;AAEA,MAAI4R,eAAe,GAAGpN,qBAAqB,CAACtG,IAAD,CAA3C;;AAL+E,4BAO5DwT,eAP4D,iBAO3C;AAA/B,QAAIjL,MAAM,GAAIiL,eAAJ,MAAV;AACD;AACA9H,WAAO,CAACG,KAAR,MAAkBtD,MAAlB,GAA6BmL,eAA7B,IAAmD5R,KAAnD;AACH;AACJ;AAED,IAAMwS,sBAAsB,GAAG,CAAE,gBAAF,EAAoB,sBAApB,EAA4C,iBAA5C,EAA+D,kBAA/D,CAA/B;AACA,IAAMC,oBAAoB,GAAK,CAAE,cAAF,EAAkB,oBAAlB,EAAwC,eAAxC,EAAyD,gBAAzD,CAA/B;AAEO,SAASC,OAAT,CAAiB9I,OAAjB,EAA2C1L,IAA3C,EAA0DyU,KAA1D,EAAsFlR,OAAtF,EAAoI;AAAA,MAA9CA,OAA8C;AAA9CA,WAA8C,GAA3B,IAA2B;AAAA;;AACvI,SAAO,IAAI7B,2BAAJ,CAAiB,UAACL,OAAD,EAAUiB,MAAV,EAAqB;AAEzC,QAAI0J,EAAE,GAAGO,UAAU,CAACb,OAAD,CAAnB;;AAEA,QAAI,CAACM,EAAL,EAAS;AACL,aAAO3K,OAAO,EAAd;AACH;;AAED,QAAIqT,UAAU,GAAG,KAAjB;AAEA,QAAIC,YAAJ;AACA,QAAIC,UAAJ;AACA,QAAIC,UAAJ;AACA,QAAIC,QAAJ;;AAEA,aAASC,OAAT,GAAmB;AACftR,kBAAY,CAACkR,YAAD,CAAZ;AACAlR,kBAAY,CAACmR,UAAD,CAAZ;AACAC,gBAAU,CAAC7T,MAAX;AACA8T,cAAQ,CAAC9T,MAAT;AACH;;AAED6T,cAAU,GAAGvB,UAAU,CAACtH,EAAD,EAAKsI,sBAAL,EAA6B,UAAAvE,KAAK,EAAI;AAEzD;AACA,UAAIA,KAAK,CAAC5H,MAAN,KAAiB6D,EAAjB,IAAuB+D,KAAK,CAACiF,aAAN,KAAwBhV,IAAnD,EAAyD;AACrD;AACH;;AAEDyD,kBAAY,CAACkR,YAAD,CAAZ;AAEA5E,WAAK,CAACkF,eAAN;AAEAJ,gBAAU,CAAC7T,MAAX;AACA0T,gBAAU,GAAG,IAAb;AAEAE,gBAAU,GAAGlU,UAAU,CAAC,YAAM;AAC1BqU,eAAO;AACP1T,eAAO;AACV,OAHsB,EAGpBkC,OAHoB,CAAvB;AAIH,KAlBsB,CAAvB;AAoBAuR,YAAQ,GAAGxB,UAAU,CAACtH,EAAD,EAAKuI,oBAAL,EAA2B,UAAAxE,KAAK,EAAI;AAErD;AACA,UAAIA,KAAK,CAAC5H,MAAN,KAAiB6D,EAAjB,IAAuB+D,KAAK,CAACiF,aAAN,KAAwBhV,IAAnD,EAAyD;AACrD;AACH;;AAED+U,aAAO,GAP8C,CASrD;;AACA,UAAI,OAAOhF,KAAK,CAACiF,aAAb,KAA+B,QAA/B,IAA2CjF,KAAK,CAACiF,aAAN,KAAwBhV,IAAvE,EAA6E;AACzE,eAAOsC,MAAM,oCAAmCtC,IAAnC,gBAAoD+P,KAAK,CAACiF,aAA1D,CAAb;AACH;;AAED,aAAO3T,OAAO,EAAd;AACH,KAfoB,CAArB;AAiBAoS,gBAAY,CAACzH,EAAD,EAAK,eAAL,EAAsBhM,IAAtB,CAAZ;AAEA2U,gBAAY,GAAGjU,UAAU,CAAC,YAAM;AAC5B,UAAI,CAACgU,UAAL,EAAiB;AACbK,eAAO;AACP,eAAO1T,OAAO,EAAd;AACH;AACJ,KALwB,EAKtB,GALsB,CAAzB;;AAOA,QAAIoT,KAAJ,EAAW;AACPA,WAAK,CAACM,OAAD,CAAL;AACH;AACJ,GAvEM,CAAP;AAwEH;AAED,IAAMG,KAAK,GAAG;AAEVC,SAAO,EAAE;AACLC,QAAI,EAAG,MADF;AAELC,SAAK,EAAE;AAFF,GAFC;AAOVC,YAAU,EAAE;AACRC,WAAO,EAAE,SADD;AAERC,UAAM,EAAG;AAFD,GAPF;AAYVC,WAAS,EAAE;AAZD,CAAd;AAeO,SAASC,kBAAT,CAA4BhK,OAA5B,EAAmD;AACtDA,SAAO,CAACG,KAAR,CAAc8J,WAAd,CAA0B,YAA1B,EAAwC,EAAxC;AACH;AAEM,SAASC,oBAAT,CAA8BlK,OAA9B,EAAqD;AACxDA,SAAO,CAACG,KAAR,CAAc8J,WAAd,CAA0B,YAA1B,EAAwCT,KAAK,CAACI,UAAN,CAAiBE,MAAzD,EAAiEN,KAAK,CAACO,SAAvE;AACH;AAGM,SAASI,WAAT,CAAqBnK,OAArB,EAA4C;AAC/CA,SAAO,CAACG,KAAR,CAAc8J,WAAd,CAA0B,SAA1B,EAAqC,EAArC;AACH;AAEM,SAASG,WAAT,CAAqBpK,OAArB,EAA4C;AAC/CA,SAAO,CAACG,KAAR,CAAc8J,WAAd,CAA0B,SAA1B,EAAqCT,KAAK,CAACC,OAAN,CAAcC,IAAnD,EAAyDF,KAAK,CAACO,SAA/D;AACH;AAEM,SAASM,cAAT,CAAwBrK,OAAxB,EAA+C;AAClD,MAAIA,OAAO,IAAIA,OAAO,CAACsK,UAAvB,EAAmC;AAC/BtK,WAAO,CAACsK,UAAR,CAAmB7H,WAAnB,CAA+BzC,OAA/B;AACH;AACJ;AAEM,SAASuK,cAAT,CAAwBvK,OAAxB,EAA+C1L,IAA/C,EAA8DyU,KAA9D,EAA+G;AAClH,MAAIyB,SAAS,GAAG1B,OAAO,CAAC9I,OAAD,EAAU1L,IAAV,EAAgByU,KAAhB,CAAvB;AACAoB,aAAW,CAACnK,OAAD,CAAX;AACA,SAAOwK,SAAP;AACH;AAEM,SAASC,cAAT,CAAwBzK,OAAxB,EAA+C1L,IAA/C,EAA8DyU,KAA9D,EAA+G;AAClH,SAAOD,OAAO,CAAC9I,OAAD,EAAU1L,IAAV,EAAgByU,KAAhB,CAAP,CAA8BvU,IAA9B,CAAmC,YAAM;AAC5C4V,eAAW,CAACpK,OAAD,CAAX;AACH,GAFM,CAAP;AAGH;AAEM,SAAS0K,QAAT,CAAkB1K,OAAlB,EAAyC1L,IAAzC,EAAwD;AAC3D0L,SAAO,CAAC2K,SAAR,CAAkBC,GAAlB,CAAsBtW,IAAtB;AACH;AAEM,SAASuW,WAAT,CAAqB7K,OAArB,EAA4C1L,IAA5C,EAA2D;AAC9D0L,SAAO,CAAC2K,SAAR,CAAkBG,MAAlB,CAAyBxW,IAAzB;AACH;AAEM,SAAS+W,eAAT,CAAyB/K,EAAzB,EAAqD;AACxD,MAAI,CAACA,EAAD,IAAO,CAACA,EAAE,CAACgK,UAAf,EAA2B;AACvB,WAAO,IAAP;AACH;;AACD,SAAO,KAAP;AACH;AAEM,SAASgB,oBAAT,CAA8BtL,OAA9B,EAAqD3K,OAArD,EAA6F;AAChGA,SAAO,GAAGsJ,IAAI,CAACtJ,OAAD,CAAd;AAEA,MAAIiG,QAAJ;;AAEA,MAAI+P,eAAe,CAACrL,OAAD,CAAnB,EAA8B;AAC1B3K,WAAO;AACV,GAFD,MAEO;AACHiG,YAAQ,GAAGH,YAAY,CAAC,YAAM;AAC1B,UAAIkQ,eAAe,CAACrL,OAAD,CAAnB,EAA8B;AAC1B1E,gBAAQ,CAAChG,MAAT;AACAD,eAAO;AACV;AACJ,KALsB,EAKpB,EALoB,CAAvB;AAMH;;AAED,SAAO;AACHC,UADG,oBACM;AACL,UAAIgG,QAAJ,EAAc;AACVA,gBAAQ,CAAChG,MAAT;AACH;AACJ;AALE,GAAP;AAOH;AAEM,SAASgX,UAAT,CAAoBhM,EAApB,EAAsCsC,GAAtC,EAAwE;AAAA,MAAlCA,GAAkC;AAAlCA,OAAkC,GAAjB1O,MAAM,CAACwM,QAAU;AAAA;;AAAA,0CACxDL,gBAAgB,CAAC,QAAD,EAAWC,EAAX,CADwC,4CACxB;AAA9C,QAAIiM,MAAM,2BAAV;AACD,QAAIjC,UAAU,GAAGiC,MAAM,CAACjC,UAAxB;;AAEA,QAAI,CAACA,UAAL,EAAiB;AACb;AACH;;AAED,QAAIkC,SAAS,GAAG5J,GAAG,CAACI,aAAJ,CAAkB,QAAlB,CAAhB;AACAwJ,aAAS,CAAC7O,IAAV,GAAiB4O,MAAM,CAACE,WAAxB;AACAnC,cAAU,CAACoC,YAAX,CAAwBF,SAAxB,EAAmCD,MAAnC;AACH;AACJ;AASM,SAASuxB,QAAT,CAAkBx9B,EAAlB,EAAoCjL,OAApC,SAAwL;AAAA,iCAAT,EAAS;AAAA,0BAAzFyQ,KAAyF;AAAA,MAAzFA,KAAyF,4BAAjF,IAAiF;AAAA,2BAA3EC,MAA2E;AAAA,MAA3EA,MAA2E,6BAAlE,IAAkE;AAAA,6BAA5DzK,QAA4D;AAAA,MAA5DA,QAA4D,+BAAjD,GAAiD;AAAA,wBAA5CoG,GAA4C;AAAA,MAA5CA,GAA4C,0BAAtCxN,MAAsC;;AAC3L,MAAI6pC,YAAY,GAAGz9B,EAAE,CAAC2F,WAAtB;AACA,MAAI+3B,aAAa,GAAG19B,EAAE,CAAC4F,YAAvB;AAEA7Q,SAAO,CAAC;AAAEyQ,SAAK,EAAEi4B,YAAT;AAAuBh4B,UAAM,EAAEi4B;AAA/B,GAAD,CAAP;;AAEA,MAAI/2B,KAAK,GAAG,SAARA,KAAQ,GAAM;AACd,QAAIg3B,QAAQ,GAAG39B,EAAE,CAAC2F,WAAlB;AACA,QAAIi4B,SAAS,GAAG59B,EAAE,CAAC4F,YAAnB;;AAEA,QAAKJ,KAAK,IAAIm4B,QAAQ,KAAKF,YAAvB,IAAyCh4B,MAAM,IAAIm4B,SAAS,KAAKF,aAArE,EAAqF;AACjF3oC,aAAO,CAAC;AAAEyQ,aAAK,EAAEm4B,QAAT;AAAmBl4B,cAAM,EAAEm4B;AAA3B,OAAD,CAAP;AACH;;AAEDH,gBAAY,GAAGE,QAAf;AACAD,iBAAa,GAAGE,SAAhB;AACH,GAVD;;AAYA,MAAIC,QAAJ;AACA,MAAItmC,OAAJ;;AAEA,MAAI,OAAO6J,GAAG,CAAC08B,cAAX,KAA8B,WAAlC,EAA+C;AAC3CD,YAAQ,GAAG,IAAIz8B,GAAG,CAAC08B,cAAR,CAAuBn3B,KAAvB,CAAX;AACAk3B,YAAQ,CAACE,OAAT,CAAiB/9B,EAAjB;AAEH,GAJD,MAIO,IAAI,OAAOoB,GAAG,CAAC48B,gBAAX,KAAgC,WAApC,EAAiD;AACpDH,YAAQ,GAAG,IAAIz8B,GAAG,CAAC48B,gBAAR,CAAyBr3B,KAAzB,CAAX;AACAk3B,YAAQ,CAACE,OAAT,CAAiB/9B,EAAjB,EAAqB;AACjB6C,gBAAU,EAAK,IADE;AAEjBo7B,eAAS,EAAM,IAFE;AAGjBC,aAAO,EAAQ,IAHE;AAIjBC,mBAAa,EAAE;AAJE,KAArB;AAMA/8B,OAAG,CAACiC,gBAAJ,CAAqB,QAArB,EAA+BsD,KAA/B;AACH,GATM,MASA;AACH,QAAIgR,IAAI,GAAG,SAAPA,IAAO,GAAM;AACbhR,WAAK;AACLpP,aAAO,GAAG7C,UAAU,CAACijB,IAAD,EAAO3c,QAAP,CAApB;AACH,KAHD;;AAIA2c,QAAI;AACP;;AAED,SAAO;AACH3iB,UAAM,EAAE,kBAAM;AACV6oC,cAAQ,CAACO,UAAT;AACAxqC,YAAM,CAACoQ,mBAAP,CAA2B,QAA3B,EAAqC2C,KAArC;AACAlP,kBAAY,CAACF,OAAD,CAAZ;AACH;AALE,GAAP;AAOH;AAEM,SAAS8mC,mBAAT,CAA6Bt9B,GAA7B,EAAqD;AAExD,MAAI,CAAC4Z,iBAAiB,EAAtB,EAA0B;AACtB;AACH;;AAED,MAAI,CAAC/mB,MAAM,CAACgnB,WAAR,IAAuB,OAAOhnB,MAAM,CAACgnB,WAAP,CAAmBuB,UAA1B,KAAyC,UAApE,EAAgF;AAC5E;AACH;;AAED,MAAMmiB,OAAO,GAAG1qC,MAAM,CAACgnB,WAAP,CAAmBuB,UAAnB,EAAhB;;AAEA,OAAK,IAAIplB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGunC,OAAO,CAACzpC,MAA5B,EAAoCkC,CAAC,EAArC,EAAyC;AACrC,QAAMwnC,KAAK,GAAGD,OAAO,CAACvnC,CAAD,CAArB;;AAEA,QAAIwnC,KAAK,IAAIA,KAAK,CAACvqC,IAAf,IAAuBuqC,KAAK,CAACvqC,IAAN,CAAWQ,OAAX,CAAmBuM,GAAnB,MAA4B,CAAnD,IAAwD,OAAOw9B,KAAK,CAACphB,QAAb,KAA0B,QAAtF,EAAgG;AAC5F,aAAOtjB,IAAI,CAACC,KAAL,CAAWykC,KAAK,CAACphB,QAAjB,CAAP;AACH;AACJ;AACJ,C;;ACz8BD;AACA;AAWA,IAAMqhB,uBAAuB,GAAG,KAAK,EAAL,GAAU,IAA1C;AAEO,SAASC,UAAT,OAAoH;AAAA,MAA9FzqC,IAA8F,QAA9FA,IAA8F;AAAA,2BAAxF0qC,QAAwF;AAAA,MAAxFA,QAAwF,8BAA7EF,uBAA6E;AACvH,SAAOhG,aAAa,CAACiG,UAAD,EAAa,YAAM;AACnC,QAAME,WAAW,UAAS3qC,IAAT,eAAjB;AAEA,QAAI4qC,eAAJ;;AAEA,aAASC,QAAT,CAAqB9pC,OAArB,EAA4D;AAExD,UAAI+pC,mBAAmB,GAAG3C,qBAAqB,EAA/C;AACA,UAAI4C,OAAJ;;AAEA,UAAIH,eAAJ,EAAqB;AACjBG,eAAO,GAAGH,eAAV;AACH;;AAED,UAAI,CAACG,OAAD,IAAYD,mBAAhB,EAAqC;AACjC,YAAIE,UAAU,GAAGprC,MAAM,CAACwoC,YAAP,CAAoBE,OAApB,CAA4BqC,WAA5B,CAAjB;;AAEA,YAAIK,UAAJ,EAAgB;AACZD,iBAAO,GAAG9kC,IAAI,CAAC05B,KAAL,CAAWqL,UAAX,CAAV;AACH;AACJ;;AAED,UAAI,CAACD,OAAL,EAAc;AACVA,eAAO,GAAGpV,SAAS,GAAGgV,WAAH,CAAnB;AACH;;AAED,UAAI,CAACI,OAAL,EAAc;AACVA,eAAO,GAAG;AACN5+B,YAAE,EAAEzG,QAAQ;AADN,SAAV;AAGH;;AAED,UAAI,CAACqlC,OAAO,CAAC5+B,EAAb,EAAiB;AACb4+B,eAAO,CAAC5+B,EAAR,GAAazG,QAAQ,EAArB;AACH;;AAEDklC,qBAAe,GAAGG,OAAlB;AAEA,UAAI5oC,MAAM,GAAGpB,OAAO,CAACgqC,OAAD,CAApB;;AAEA,UAAID,mBAAJ,EAAyB;AACrBlrC,cAAM,CAACwoC,YAAP,CAAoBC,OAApB,CAA4BsC,WAA5B,EAAyC1kC,IAAI,CAACC,SAAL,CAAe6kC,OAAf,CAAzC;AACH,OAFD,MAEO;AACHpV,iBAAS,GAAGgV,WAAH,CAAT,GAA2BI,OAA3B;AACH;;AAEDH,qBAAe,GAAG,IAAlB;AAEA,aAAOzoC,MAAP;AACH;;AAED,aAAS8oC,KAAT,GAA0B;AACtB,aAAOJ,QAAQ,CAAC,UAAAE,OAAO;AAAA,eAAIA,OAAO,CAAC5+B,EAAZ;AAAA,OAAR,CAAf;AACH;;AAED,aAAS++B,UAAT,CAAuBnqC,OAAvB,EAA4D;AACxD,aAAO8pC,QAAQ,CAAC,UAAAE,OAAO,EAAI;AAEvB,YAAII,OAAO,GAAGJ,OAAO,CAACK,WAAtB;AACA,YAAI5kB,GAAG,GAAGD,IAAI,CAACC,GAAL,EAAV;;AAEA,YAAI2kB,OAAO,IAAM3kB,GAAG,GAAG2kB,OAAO,CAACE,OAAf,GAA0BX,QAA1C,EAAqD;AACjDS,iBAAO,GAAG,IAAV;AACH;;AAED,YAAI,CAACA,OAAL,EAAc;AACVA,iBAAO,GAAG;AACNG,gBAAI,EAAK5lC,QAAQ,EADX;AAEN2lC,mBAAO,EAAE7kB;AAFH,WAAV;AAIH;;AAEDukB,eAAO,CAACK,WAAR,GAAsBD,OAAtB;AAEA,eAAOpqC,OAAO,CAACoqC,OAAD,CAAd;AACH,OAnBc,CAAf;AAoBH;;AAED,aAASI,eAAT,CAA4BxqC,OAA5B,EAAiE;AAC7D,aAAOmqC,UAAU,CAAC,UAAAC,OAAO,EAAI;AACzBA,eAAO,CAAC1vB,KAAR,GAAgB0vB,OAAO,CAAC1vB,KAAR,IAAiB,EAAjC;AACA,eAAO1a,OAAO,CAACoqC,OAAO,CAAC1vB,KAAT,CAAd;AACH,OAHgB,CAAjB;AAIH;;AAED,aAAS+vB,YAAT,GAAiC;AAC7B,aAAON,UAAU,CAAC,UAAAC,OAAO;AAAA,eAAIA,OAAO,CAACG,IAAZ;AAAA,OAAR,CAAjB;AACH;;AAED,WAAO;AACHT,cAAQ,EAARA,QADG;AAEHI,WAAK,EAALA,KAFG;AAGHM,qBAAe,EAAfA,eAHG;AAIHC,kBAAY,EAAZA;AAJG,KAAP;AAMH,GA/FmB,EA+FjB,CAAE;AAAExrC,QAAI,EAAJA,IAAF;AAAQ0qC,YAAQ,EAARA;AAAR,GAAF,CA/FiB,CAApB;AAgGH,C;;AC/GD;AACA;;AAEA,SAASe,0BAAT,GAA+C;AAC3C,SAAOhB,UAAU,CAAC;AAAEzqC,QAAI,EAAE;AAAR,GAAD,CAAjB;AACH;;AAED,SAAS0rC,aAAT,CAAuB1rC,IAAvB,EAAgD;AAC5C,SAAOyrC,0BAA0B,GAAGF,eAA7B,CAA6C,UAAA9vB,KAAK,EAAI;AACzDA,SAAK,CAACkwB,aAAN,GAAsBlwB,KAAK,CAACkwB,aAAN,IAAuB,EAA7C;;AAEA,QAAIlwB,KAAK,CAACkwB,aAAN,CAAoBnrC,OAApB,CAA4BR,IAA5B,MAAsC,CAAC,CAA3C,EAA8C;AAC1Cyb,WAAK,CAACkwB,aAAN,CAAoBlrC,IAApB,CAAyBT,IAAzB;AACA,aAAO,IAAP;AACH;;AAED,WAAO,KAAP;AACH,GATM,CAAP;AAUH;;AAWD,SAAS4rC,qBAAT,CAA+B5rC,IAA/B,EAAuD;AACnD,SAAOyrC,0BAA0B,GAAGZ,QAA7B,CAAsC,UAAApvB,KAAK,EAAI;AAClDA,SAAK,CAACowB,mBAAN,GAA4BpwB,KAAK,CAACowB,mBAAN,IAA6B,EAAzD;AACApwB,SAAK,CAACowB,mBAAN,CAA0B7rC,IAA1B,IAAkCyb,KAAK,CAACowB,mBAAN,CAA0B7rC,IAA1B,KAAmC6F,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACE,MAAL,KAAgB,GAA3B,CAArE;AACA,WAAO0V,KAAK,CAACowB,mBAAN,CAA0B7rC,IAA1B,CAAP;AACH,GAJM,CAAP;AAKH;;AAED,IAAM8rC,cAAc,GAAG;AACnB9+C,MAAI,EAAM,MADS;AAEnB++C,SAAO,EAAG,SAFS;AAGnBC,UAAQ,EAAE;AAHS,CAAvB;AAaO,SAASC,UAAT,OAAuH;AAAA,MAAjGjsC,IAAiG,QAAjGA,IAAiG;AAAA,yBAA3FksC,MAA2F;AAAA,MAA3FA,MAA2F,4BAAlF,EAAkF;AAAA,+BAA9EC,YAA8E;AAAA,MAA9EA,YAA8E,kCAA/D1hC,IAA+D;AAAA,gCAAzD2hC,aAAyD;AAAA,MAAzDA,aAAyD,mCAAzC3hC,IAAyC;AAE1H,MAAI4hC,QAAQ,GAAGT,qBAAqB,CAAC5rC,IAAD,CAApC;AAEA,MAAIssC,KAAJ;;AAEA,MAAID,QAAQ,GAAGH,MAAf,EAAuB;AACnBI,SAAK,GAAGR,cAAc,CAAC9+C,IAAvB;AACH,GAFD,MAEO,IAAKk/C,MAAM,IAAI,EAAX,IAAoBA,MAAM,IAAIG,QAAX,IAAyBA,QAAQ,GAAIH,MAAM,GAAG,CAArE,EAA2E;AAC9EI,SAAK,GAAGR,cAAc,CAACC,OAAvB;AACH,GAFM,MAEA;AACHO,SAAK,GAAGR,cAAc,CAACE,QAAvB;AACH;;AAED,MAAIO,SAAS,GAAOvsC,IAAP,SAAiBssC,KAA9B;AAEA,MAAIE,OAAO,GAAG,KAAd;AACA,MAAIC,MAAM,GAAG,KAAb;;AAEA,MAAI;AACA,QAAI7sC,MAAM,CAACwoC,YAAP,IAAuBxoC,MAAM,CAACwoC,YAAP,CAAoBE,OAApB,CAA4BtoC,IAA5B,CAA3B,EAA8D;AAC1DysC,YAAM,GAAG,IAAT;AACH;AACJ,GAJD,CAIE,OAAOtsC,GAAP,EAAY,CACV;AACH;;AAED,SAAO;AAEHusC,aAFG,uBAEmB;AAClB,aAAQJ,KAAK,KAAKR,cAAc,CAAC9+C,IAA1B,IAAmCy/C,MAA1C;AACH,KAJE;AAMHE,cANG,wBAMoB;AACnB,aAAQL,KAAK,KAAKR,cAAc,CAAC9+C,IAA1B,IAAmC,CAACy/C,MAA3C;AACH,KARE;AAUHG,gBAVG,0BAUqB;AACpB,aAAOL,SAAP;AACH,KAZE;AAcHzmB,OAdG,eAcC+mB,UAdD,EAcsBxyB,OAdtB,EAc2E;AAAA,UAArDA,OAAqD;AAArDA,eAAqD,GAAjB,EAAiB;AAAA;;AAC1E,UAAI,CAACmyB,OAAL,EAAc;AACV,eAAO,IAAP;AACH;;AAED,UAAId,aAAa,CAAK1rC,IAAL,SAAeusC,SAAf,SAA8BtmC,IAAI,CAACC,SAAL,CAAemU,OAAf,CAA9B,CAAjB,EAA4E;AACxE8xB,oBAAY,CAAC;AAAEnsC,cAAI,EAAJA,IAAF;AAAQusC,mBAAS,EAATA,SAAR;AAAmBlyB,iBAAO,EAAPA;AAAnB,SAAD,CAAZ;AACH;;AAED,UAAIqxB,aAAa,CAAK1rC,IAAL,SAAeusC,SAAf,SAA8BM,UAA9B,SAA8C5mC,IAAI,CAACC,SAAL,CAAemU,OAAf,CAA9C,CAAjB,EAA4F;AACxF+xB,qBAAa,CAAC;AAAEpsC,cAAI,EAAJA,IAAF;AAAQusC,mBAAS,EAATA,SAAR;AAAmBM,oBAAU,EAAVA,UAAnB;AAA+BxyB,iBAAO,EAAPA;AAA/B,SAAD,CAAb;AACH;;AAED,aAAO,IAAP;AACH,KA5BE;AA8BHyyB,YA9BG,oBA8BMzyB,OA9BN,EA8B2D;AAAA,UAArDA,OAAqD;AAArDA,eAAqD,GAAjB,EAAiB;AAAA;;AAC1DmyB,aAAO,GAAG,IAAV;AACA,aAAO,KAAK1mB,GAAL,UAAkBzL,OAAlB,CAAP;AACH,KAjCE;AAmCH0yB,eAnCG,uBAmCS1yB,OAnCT,EAmC8D;AAAA,UAArDA,OAAqD;AAArDA,eAAqD,GAAjB,EAAiB;AAAA;;AAC7D,aAAO,KAAKyL,GAAL,aAAqBzL,OAArB,CAAP;AACH;AArCE,GAAP;AAuCH,C;;ACpHD;AAEO,SAAS2yB,kBAAT,OAAsJ;AAAA,MAA5GhtC,IAA4G,QAA5GA,IAA4G;AAAA,0BAAtGqb,OAAsG;AAAA,MAAtGA,OAAsG,6BAA5F,QAA4F;AAEzJ,MAAIR,MAAM,GAAG8a,SAAS,EAAtB;AACA,MAAIsX,SAAS,UAASjtC,IAAT,UAAoBqb,OAApB,cAAb;AAEA,MAAI6xB,SAAS,GAAGryB,MAAM,CAACoyB,SAAD,CAAN,GAAoBpyB,MAAM,CAACoyB,SAAD,CAAN,IAAqB,EAAzD;AAEA,SAAO;AACHzmC,OAAG,EAAE,aAACpC,GAAD,EAAe+oC,QAAf,EAAqC;AACtC;AACAA,cAAQ,GAAGA,QAAQ,IAAI,EAAvB;AACA,UAAIztC,IAAI,GAAGwtC,SAAS,CAAC9oC,GAAD,CAAT,GAAiB8oC,SAAS,CAAC9oC,GAAD,CAAT,IAAkB+oC,QAA9C;AACA,aAAOztC,IAAP;AACH;AANE,GAAP;AAQH,C;;ACjBD;AAoBA,IAAM0tC,OAAO,GAAG;AACZC,cAAY,EAAE,cADF;AAEZC,QAAM,EAAQ;AAFF,CAAhB;AAKA,IAAIrpB,cAAc,GAAG,EAArB;;AAEA,SAASspB,YAAT,CAAsBC,UAAtB,EAAwE;AAAA,MAAlDA,UAAkD;AAAlDA,cAAkD,GAA5B,EAA4B;AAAA;;AACpE,MAAIrrC,MAAM,GAAG,EAAb;;AADoE,6CAEnDqrC,UAAU,CAACC,IAAX,GAAkB7mC,KAAlB,CAAwB,IAAxB,CAFmD,8CAEpB;AAA3C,QAAI8mC,IAAI,8BAAR;;AAA2C,sBACnBA,IAAI,CAAC9mC,KAAL,CAAW,GAAX,CADmB;AAAA,QACtCxC,IADsC;AAAA,QAC9BqB,MAD8B;;AAE5CtD,UAAM,CAACiC,IAAG,CAACc,WAAJ,EAAD,CAAN,GAA4BO,MAAM,CAACiD,IAAP,CAAY,GAAZ,EAAiB+kC,IAAjB,EAA5B;AACH;;AACD,SAAOtrC,MAAP;AACH;;AAEM,SAAS06B,OAAT,OAAuJ;AAAA,MAApI9vB,GAAoI,QAApIA,GAAoI;AAAA,yBAA/HzI,MAA+H;AAAA,MAA/HA,MAA+H,4BAAtH,KAAsH;AAAA,0BAA/G0e,OAA+G;AAAA,MAA/GA,OAA+G,6BAArG,EAAqG;AAAA,MAAjG2qB,IAAiG,QAAjGA,IAAiG;AAAA,MAA3F1qB,IAA2F,QAA3FA,IAA2F;AAAA,MAArFkkB,IAAqF,QAArFA,IAAqF;AAAA,sBAA/E/5B,GAA+E;AAAA,MAA/EA,GAA+E,yBAAzExN,MAAyE;AAAA,0BAAjE2D,OAAiE;AAAA,MAAjEA,OAAiE,6BAAvD,CAAuD;AAC1J,SAAO,IAAI7B,2BAAJ,CAAiB,UAACL,OAAD,EAAUiB,MAAV,EAAqB;AAEzC,QAAKqrC,IAAI,IAAI1qB,IAAT,IAAmB0qB,IAAI,IAAIxG,IAA3B,IAAqClkB,IAAI,IAAI0qB,IAAjD,EAAwD;AACpD,YAAM,IAAIprC,KAAJ,sEAAN;AACH;;AAED,QAAIqrC,iBAAiB,GAAG,EAAxB;;AANyC,sCAQzBnrC,MAAM,CAACyB,IAAP,CAAY8e,OAAZ,CARyB,qCAQH;AAAjC,UAAI5e,KAAG,qBAAP;AACDwpC,uBAAiB,CAACxpC,KAAG,CAACc,WAAJ,EAAD,CAAjB,GAAuC8d,OAAO,CAAC5e,KAAD,CAA9C;AACH;;AAED,QAAIupC,IAAJ,EAAU;AACNC,uBAAiB,CAACR,OAAO,CAACC,YAAT,CAAjB,GAA0CO,iBAAiB,CAACR,OAAO,CAACC,YAAT,CAAjB,IAA2C,kBAArF;AACH,KAFD,MAEO,IAAIpqB,IAAI,IAAIkkB,IAAZ,EAAkB;AACrByG,uBAAiB,CAACR,OAAO,CAACC,YAAT,CAAjB,GAA0CO,iBAAiB,CAACR,OAAO,CAACC,YAAT,CAAjB,IAA2C,kDAArF;AACH;;AAEDO,qBAAiB,CAACR,OAAO,CAACE,MAAT,CAAjB,GAAoCM,iBAAiB,CAACR,OAAO,CAACE,MAAT,CAAjB,IAAqC,kBAAzE;;AAlByC,4BAoBfrpB,cApBe,gBAoBC;AAArC,UAAI4pB,aAAa,GAAI5pB,cAAJ,KAAjB;AACD,UAAI6pB,YAAY,GAAGD,aAAa,EAAhC;;AADsC,wCAGtBprC,MAAM,CAACyB,IAAP,CAAY4pC,YAAZ,CAHsB,qCAGK;AAAtC,YAAI1pC,KAAG,qBAAP;AACDwpC,yBAAiB,CAACxpC,KAAG,CAACc,WAAJ,EAAD,CAAjB,GAAuC4oC,YAAY,CAAC1pC,KAAD,CAAnD;AACH;AACJ;;AAED,QAAI2pC,GAAG,GAAG,IAAI3gC,GAAG,CAACgK,cAAR,EAAV;AAEA22B,OAAG,CAAC1+B,gBAAJ,CAAqB,MAArB,EAA6B,SAAS2+B,OAAT,GAA0B;AAEnD,UAAIC,eAAe,GAAGV,YAAY,CAAC,KAAKW,qBAAL,EAAD,CAAlC;;AAEA,UAAI,CAAC,KAAKjU,MAAV,EAAkB;AACd,eAAO33B,MAAM,CAAC,IAAIC,KAAJ,iBAAyB+B,MAAM,CAACY,WAAP,EAAzB,SAAmD6H,GAAnD,uCAAD,CAAb;AACH;;AAED,UAAImK,WAAW,GAAG+2B,eAAe,CAAC,cAAD,CAAjC;AACA,UAAIE,MAAM,GAAGj3B,WAAW,KAAKA,WAAW,CAAC1W,OAAZ,CAAoB,kBAApB,MAA4C,CAA5C,IAAiD0W,WAAW,CAAC1W,OAAZ,CAAoB,WAApB,MAAqC,CAA3F,CAAxB;AACA,UAAI4tC,YAAY,GAAG,KAAK52B,YAAxB;;AAEA,UAAI;AACA42B,oBAAY,GAAGnoC,IAAI,CAAC05B,KAAL,CAAWyO,YAAX,CAAf;AACH,OAFD,CAEE,OAAOjuC,GAAP,EAAY;AACV,YAAIguC,MAAJ,EAAY;AACR,iBAAO7rC,MAAM,CAAC,IAAIC,KAAJ,oBAA4B,KAAKiV,YAAjC,OAAD,CAAb;AACH;AACJ;;AAED,UAAInV,GAAG,GAAG;AACN43B,cAAM,EAAG,KAAKA,MADR;AAENjX,eAAO,EAAEirB,eAFH;AAGN9G,YAAI,EAAKiH;AAHH,OAAV;AAMA,aAAO/sC,OAAO,CAACgB,GAAD,CAAd;AAEH,KA5BD,EA4BG,KA5BH;AA8BA0rC,OAAG,CAAC1+B,gBAAJ,CAAqB,OAArB,EAA8B,UAACg/B,GAAD,EAAS;AACnC/rC,YAAM,CAAC,IAAIC,KAAJ,iBAAyB+B,MAAM,CAACY,WAAP,EAAzB,SAAmD6H,GAAnD,iBAAoEshC,GAAG,CAACtuC,QAAJ,EAApE,OAAD,CAAN;AACH,KAFD,EAEG,KAFH;AAIAguC,OAAG,CAAC1gC,IAAJ,CAAS/I,MAAT,EAAiByI,GAAjB,EAAsB,IAAtB;;AAEA,SAAK,IAAI3I,KAAT,IAAgBwpC,iBAAhB,EAAmC;AAC/B,UAAIA,iBAAiB,CAACpoC,cAAlB,CAAiCpB,KAAjC,CAAJ,EAA2C;AACvC2pC,WAAG,CAAC12B,gBAAJ,CAAqBjT,KAArB,EAA0BwpC,iBAAiB,CAACxpC,KAAD,CAA3C;AACH;AACJ;;AAED,QAAIupC,IAAJ,EAAU;AACNxG,UAAI,GAAGlhC,IAAI,CAACC,SAAL,CAAeynC,IAAf,CAAP;AACH,KAFD,MAEO,IAAI1qB,IAAJ,EAAU;AACbkkB,UAAI,GAAG1kC,MAAM,CAACyB,IAAP,CAAY+e,IAAZ,EAAkB9e,GAAlB,CAAsB,UAAAC,GAAG,EAAI;AAChC,eAAW++B,kBAAkB,CAAC/+B,GAAD,CAA7B,UAAwC6e,IAAI,GAAGkgB,kBAAkB,CAAClgB,IAAI,CAAC7e,GAAD,CAAL,CAArB,GAAmC,EAA/E;AACH,OAFM,EAEJsE,IAFI,CAEC,GAFD,CAAP;AAGH;;AAEDqlC,OAAG,CAACxqC,OAAJ,GAAcA,OAAd;;AACAwqC,OAAG,CAACO,SAAJ,GAAgB,SAASC,UAAT,GAAsB;AAClCjsC,YAAM,CAAC,IAAIC,KAAJ,iBAAyB+B,MAAM,CAACY,WAAP,EAAzB,SAAmD6H,GAAnD,oBAAD,CAAN;AACH,KAFD;;AAIAghC,OAAG,CAACz2B,IAAJ,CAAS6vB,IAAT;AACH,GAtFM,CAAP;AAuFH;AAEM,SAAS7iB,gBAAT,CAA0BhgB,MAA1B,EAAgE;AACnE2f,gBAAc,CAACxjB,IAAf,CAAoB6D,MAApB;AACH,C;;AChID;AACO,IAAMwrB,KAAK,GAAG,IAAd,C;;ACDP;AAEO,SAASpW,QAAT,CAAkBvR,MAAlB,EAAmCnI,IAAnC,EAAkDoI,UAAlD,EAAuE;AAC1EA,YAAU,CAACtG,KAAX,GAAmB+I,OAAO,CAACzC,UAAU,CAACtG,KAAZ,EAAmB;AAAE9B,QAAI,EAAJA,IAAF;AAAQmkC,iBAAa,EAAE;AAAvB,GAAnB,CAA1B;AACH;AAEM,SAAS5jC,kBAAT,CAAiB4H,MAAjB,EAAkCnI,IAAlC,EAAiDoI,UAAjD,EAAsE;AACzEA,YAAU,CAACtG,KAAX,GAAmB4W,SAAS,CAACtQ,UAAU,CAACtG,KAAZ,EAAmB;AAAE9B,QAAI,EAAJA;AAAF,GAAnB,CAA5B;AACH,C;;ACRM,SAAS6Y,MAAT,CAAgBhU,GAAhB,EAAwC;AAC3C,SAAO,OAAOA,GAAP,KAAe,QAAf,IAA4B,WAAD,CAAciU,IAAd,CAAmBjU,GAAnB,CAAlC;AACH;AAEM,SAASkU,IAAT,CAAclU,GAAd,EAAsC;AACzC,SAAO,OAAOA,GAAP,KAAe,QAAf,IAA4B,YAAD,CAAeiU,IAAf,CAAoBjU,GAApB,CAAlC;AACH;AAEM,SAASmU,KAAT,CAAe7S,GAAf,EAA+C;AAElD,MAAI,OAAOA,GAAP,KAAe,QAAnB,EAA6B;AACzB,WAAOA,GAAP;AACH;;AAED,MAAIgD,KAAK,GAAGhD,GAAG,CAACgD,KAAJ,CAAU,kBAAV,CAAZ;;AAEA,MAAI,CAACA,KAAL,EAAY;AACR,UAAM,IAAI5G,KAAJ,qCAA6C4D,GAA7C,CAAN;AACH;;AAED,SAAO8S,QAAQ,CAAC9P,KAAK,CAAC,CAAD,CAAN,EAAW,EAAX,CAAf;AACH;AAEM,SAAS+P,IAAT,CAAc/S,GAAd,EAA8C;AACjD,SAAW6S,KAAK,CAAC7S,GAAD,CAAhB;AACH;AAEM,SAASgT,KAAT,CAAehT,GAAf,EAA+C;AAElD,MAAI,OAAOA,GAAP,KAAe,QAAnB,EAA6B;AACzB,WAAO+S,IAAI,CAAC/S,GAAD,CAAX;AACH;;AAED,SAAO0S,MAAM,CAAC1S,GAAD,CAAN,GAAcA,GAAd,GAAoB+S,IAAI,CAAC/S,GAAD,CAA/B;AACH;AAEM,SAASiT,MAAT,CAAgBC,GAAhB,EAA8BC,IAA9B,EAAsD;AACzD,SAAOL,QAAQ,CAACI,GAAG,GAAGL,KAAK,CAACM,IAAD,CAAX,GAAqB,GAAtB,EAA2B,EAA3B,CAAf;AACH;AAEM,SAASC,kBAAT,CAA4BC,GAA5B,EAAmDC,GAAnD,EAA0E;AAC7E,MAAI,OAAOD,GAAP,KAAe,QAAnB,EAA6B;AACzB,WAAOA,GAAP;AACH,GAFD,MAEO,IAAIX,MAAM,CAACW,GAAD,CAAV,EAAiB;AACpB,WAAOJ,MAAM,CAACK,GAAD,EAAMD,GAAN,CAAb;AACH,GAFM,MAEA,IAAIT,IAAI,CAACS,GAAD,CAAR,EAAe;AAClB,WAAOR,KAAK,CAACQ,GAAD,CAAZ;AACH,GAFM,MAEA;AACH,UAAM,IAAIjX,KAAJ,mCAA2CiX,GAA3C,CAAN;AACH;AACJ,C;;AClDD;AAEA;AAOO,SAASg1B,WAAT,CAAwBlqC,MAAxB,SAAmH;AAAA,gCAAzB,EAAyB;AAAA,0BAApEf,OAAoE;AAAA,MAApEA,OAAoE,6BAA1D,IAA0D;;AACtH,MAAIkrC,QAAwB,GAAG,EAA/B;AACA,MAAI5qC,QAAiC,GAAG,EAAxC;AAEA,MAAIsN,KAAK,GAAGzQ,UAAU,CAAC,YAAM;AACzB,QAAI+tC,QAAQ,CAAC5tC,MAAb,EAAqB;AACjBgD,cAAQ,CAACpD,IAAT,CAAciB,2BAAY,CAACiB,WAAb,CAAyB,IAAIJ,KAAJ,eAAuBksC,QAAQ,CAAC,CAAD,CAA/B,mBAAzB,CAAd;AACH;AACJ,GAJqB,EAInBlrC,OAJmB,CAAtB;;AAMA,MAAImrC,MAAgB,GAAG,SAAnBA,MAAmB,CAAC1uC,IAAD,EAAO+iC,EAAP,EAAqB;AAAA,QAAdA,EAAc;AAAdA,QAAc,GAATt4B,IAAS;AAAA;;AACxCgkC,YAAQ,CAAChuC,IAAT,CAAcT,IAAd,EADwC,CAGxC;;AACA,WAAO,SAAS2uC,aAAT,GAAoC;AAAA;;AAAA,wCAAVnqC,IAAU;AAAVA,YAAU;AAAA;;AACvCqiC,qBAAe,CAAC4H,QAAD,EAAWzuC,IAAX,CAAf,CADuC,CAGvC;;AAHuC,sBAIf4mC,QAAQ,CAAC;AAAA;;AAAA,eAAM,OAAA7D,EAAE,EAAC9iC,IAAH,aAAQ,KAAR,SAAiBuE,IAAjB,EAAN;AAAA,OAAD,CAJO;AAAA,UAIjCrC,MAJiC,aAIjCA,MAJiC;AAAA,UAIzBJ,KAJyB,aAIzBA,KAJyB;;AAMvC,UAAIA,KAAJ,EAAW;AACP8B,gBAAQ,CAACpD,IAAT,CAAciB,2BAAY,CAACiB,WAAb,CAAyBZ,KAAzB,CAAd;AACA,cAAMA,KAAN;AACH;;AAED8B,cAAQ,CAACpD,IAAT,CAAciB,2BAAY,CAACL,OAAb,CAAqBc,MAArB,CAAd;AACA,aAAOA,MAAP;AACH,KAbD;AAcH,GAlBD;;AAoBA,MAAIysC,KAAe,GAAG,SAAlBA,KAAkB,CAAC5uC,IAAD,EAAgB+iC,EAAhB,EAA8B;AAAA,QAAdA,EAAc;AAAdA,QAAc,GAATt4B,IAAS;AAAA;;AAEhD;AACA,WAAO,SAASokC,YAAT,GAAmC;AAAA;;AACtChrC,cAAQ,CAACpD,IAAT,CAAciB,2BAAY,CAACiB,WAAb,CAAyB,IAAIJ,KAAJ,eAAuBvC,IAAvB,uBAAzB,CAAd,EADsC,CAEtC;;AAFsC,yCAAVwE,IAAU;AAAVA,YAAU;AAAA;;AAGtC,aAAO,QAAAu+B,EAAE,EAAC9iC,IAAH,cAAQ,IAAR,SAAiBuE,IAAjB,EAAP;AACH,KAJD;AAKH,GARD;;AAUA,MAAIsqC,WAAqB,GAAG,SAAxBA,WAAwB,CAAC9uC,IAAD,EAAO+iC,EAAP,EAAqB;AAAA,QAAdA,EAAc;AAAdA,QAAc,GAATt4B,IAAS;AAAA;;AAC7CgkC,YAAQ,CAAChuC,IAAT,CAAcT,IAAd,EAD6C,CAG7C;;AACA,WAAO,SAAS+uC,kBAAT,GAAyC;AAAA;;AAAA,yCAAVvqC,IAAU;AAAVA,YAAU;AAAA;;AAC5CqiC,qBAAe,CAAC4H,QAAD,EAAWzuC,IAAX,CAAf,CAD4C,CAG5C;;AAH4C,uBAIpB4mC,QAAQ,CAAC;AAAA;;AAAA,eAAM,QAAA7D,EAAE,EAAC9iC,IAAH,cAAQ,MAAR,SAAiBuE,IAAjB,EAAN;AAAA,OAAD,CAJY;AAAA,UAItCrC,MAJsC,cAItCA,MAJsC;AAAA,UAI9BJ,KAJ8B,cAI9BA,KAJ8B;;AAM5C,UAAIA,KAAJ,EAAW;AACP,cAAMA,KAAN;AACH;;AAED8B,cAAQ,CAACpD,IAAT,CAAciB,2BAAY,CAACL,OAAb,CAAqBc,MAArB,EAA6BjC,IAA7B,CAAkC,YAAM;AAClD,cAAM,IAAIqC,KAAJ,eAAuBvC,IAAvB,wBAAN;AACH,OAFa,EAEXyK,IAFW,CAAd;AAGA,aAAOtI,MAAP;AACH,KAdD;AAeH,GAnBD;;AAqBA0B,UAAQ,CAACpD,IAAT,CAAciB,2BAAY,CAAC4B,GAAb,CAAiB;AAAA,WAAMgB,MAAM,CAAC;AAAEoqC,YAAM,EAANA,MAAF;AAAUE,WAAK,EAALA,KAAV;AAAiBE,iBAAW,EAAXA,WAAjB;AAA8B/sC,WAAK,EAAE6sC;AAArC,KAAD,CAAZ;AAAA,GAAjB,CAAd;;AAEA,MAAII,KAAK,GAAG,SAARA,KAAQ,GAAM;AACd,WAAOttC,2BAAY,CAAC4B,GAAb,CAAiB,YAAM;AAC1B,UAAIO,QAAQ,CAAChD,MAAb,EAAqB;AACjB,eAAOgD,QAAQ,CAAC8iC,GAAT,EAAP;AACH;AACJ,KAJM,EAIJzmC,IAJI,CAIC,YAAM;AACV,UAAI2D,QAAQ,CAAChD,MAAb,EAAqB;AACjB,eAAOmuC,KAAK,EAAZ;AACH;;AACD,UAAIP,QAAQ,CAAC5tC,MAAb,EAAqB;AACjB,eAAOa,2BAAY,CAACgD,KAAb,CAAmB,EAAnB,EAAuBxE,IAAvB,CAA4B8uC,KAA5B,CAAP;AACH;AACJ,KAXM,CAAP;AAYH,GAbD;;AAeA,SAAOA,KAAK,GAAG9uC,IAAR,CAAa,YAAM;AACtBuD,gBAAY,CAAC0N,KAAD,CAAZ;AACH,GAFM,CAAP;AAGH,C;;AC1FD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACTO,SAAS89B,gBAAT,GAAsC;AAEzC,MAAI,OAAOrmC,OAAP,KAAmB,WAAvB,EAAoC;AAChC,WAAO,KAAP;AACH;;AAED,MAAI,OAAOnG,MAAM,CAACysC,MAAd,KAAyB,WAA7B,EAA0C;AACtC,WAAO,KAAP;AACH;;AAED,MAAI;AAEA,QAAIC,WAAW,GAAG,IAAIvmC,OAAJ,EAAlB;AACA,QAAIwmC,OAAO,GAAG,EAAd;AACA,QAAIC,SAAS,GAAG,eAAhB;AAEA5sC,UAAM,CAACysC,MAAP,CAAcE,OAAd;AAEAD,eAAW,CAAClnC,GAAZ,CAAgBmnC,OAAhB,EAAyBC,SAAzB;;AAEA,QAAIF,WAAW,CAAC3oC,GAAZ,CAAgB4oC,OAAhB,MAA6BC,SAAjC,EAA4C;AACxC,aAAO,IAAP;AACH;;AAED,WAAO,KAAP;AAEH,GAhBD,CAgBE,OAAOlvC,GAAP,EAAY;AAEV,WAAO,KAAP;AACH;AACJ,C;;AC9BM,SAAS2rB,WAAT,CAAwBC,UAAxB,EAA+CrsB,IAA/C,EAAkE;AACrE,OAAK,IAAIqD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgpB,UAAU,CAAClrB,MAA/B,EAAuCkC,CAAC,EAAxC,EAA4C;AAExC,QAAI;AACA,UAAIgpB,UAAU,CAAChpB,CAAD,CAAV,KAAkBrD,IAAtB,EAA4B;AACxB,eAAOqD,CAAP;AACH;AACJ,KAJD,CAIE,OAAO5C,GAAP,EAAY,CACV;AACH;AACJ;;AAED,SAAO,CAAC,CAAR;AACH,C,CAED;;AACO,SAASsK,IAAT,GAAsC,CACzC;AACH,C;;AClBD;AAEA;AACA;AAEO,IAAM6kC,8BAAb;AAAA;AAAA;AAOI,oCAAc;AAAA,SALdtvC,IAKc;AAAA,SAJdo/B,OAIc;AAAA,SAHdl7B,IAGc;AAAA,SAFduB,MAEc;AACV;AACA,SAAKzF,IAAL,mBAA0B6F,IAAI,CAACE,MAAL,KAAgB,GAAhB,KAAwB,CAAlD;;AAEA,QAAIkpC,gBAAgB,EAApB,EAAwB;AACpB,UAAI;AACA,aAAK7P,OAAL,GAAe,IAAIx2B,OAAJ,EAAf;AACH,OAFD,CAEE,OAAOzI,GAAP,EAAY,CACV;AACH;AACJ;;AAED,SAAK+D,IAAL,GAAa,EAAb;AACA,SAAKuB,MAAL,GAAc,EAAd;AACH;;AArBL;;AAAA,SAuBI8pC,qBAvBJ,GAuBI,iCAAwB;AAEpB,QAAInQ,OAAO,GAAG,KAAKA,OAAnB;AACA,QAAIl7B,IAAI,GAAG,KAAKA,IAAhB;;AAEA,SAAK,IAAInB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGmB,IAAI,CAACrD,MAAzB,EAAiCkC,CAAC,EAAlC,EAAsC;AAClC,UAAIjB,KAAK,GAAGoC,IAAI,CAACnB,CAAD,CAAhB;;AAEA,UAAIssB,+BAAQ,CAACvtB,KAAD,CAAR,IAAmByL,qCAAc,CAACzL,KAAD,CAArC,EAA8C;AAE1C,YAAIs9B,OAAJ,EAAa;AACT,cAAI;AACAA,mBAAO,CAAC3D,MAAR,CAAe35B,KAAf;AACH,WAFD,CAEE,OAAO3B,GAAP,EAAY,CACV;AACH;AACJ;;AAED+D,YAAI,CAACjD,MAAL,CAAY8B,CAAZ,EAAe,CAAf;AACA,aAAK0C,MAAL,CAAYxE,MAAZ,CAAmB8B,CAAnB,EAAsB,CAAtB;AAEAA,SAAC,IAAI,CAAL;AACH;AACJ;AACJ,GA/CL;;AAAA,SAiDIysC,iBAjDJ,GAiDI,2BAAkBprC,GAAlB,EAAqC;AAEjC,QAAIirB,+BAAQ,CAACjrB,GAAD,CAAZ,EAAmB;AACf,aAAO,KAAP;AACH;;AAED,QAAI;AACAqG,UAAI,CAACrG,GAAG,IAAIA,GAAG,CAACkH,IAAZ,CAAJ;AACAb,UAAI,CAACrG,GAAG,IAAIA,GAAG,CAAC,KAAKpE,IAAN,CAAX,CAAJ;AACH,KAHD,CAGE,OAAOG,GAAP,EAAY;AACV,aAAO,KAAP;AACH;;AAED,WAAO,IAAP;AACH,GA/DL;;AAAA,SAiEI8H,GAjEJ,GAiEI,aAAI7D,GAAJ,EAAatC,KAAb,EAAwB;AAEpB,QAAI,CAACsC,GAAL,EAAU;AACN,YAAM,IAAI7B,KAAJ,wBAAN;AACH;;AAED,QAAI68B,OAAO,GAAG,KAAKA,OAAnB;;AAEA,QAAIA,OAAJ,EAAa;AACT,UAAI;AACAA,eAAO,CAACn3B,GAAR,CAAY7D,GAAZ,EAAiBtC,KAAjB;AACH,OAFD,CAEE,OAAO3B,GAAP,EAAY;AACV,eAAO,KAAKi/B,OAAZ;AACH;AACJ;;AAED,QAAI,KAAKoQ,iBAAL,CAAuBprC,GAAvB,CAAJ,EAAiC;AAC7B,UAAI;AACA,YAAIpE,IAAI,GAAG,KAAKA,IAAhB;AACA,YAAIuqC,KAAK,GAAGnmC,GAAG,CAACpE,IAAD,CAAf;;AAEA,YAAIuqC,KAAK,IAAIA,KAAK,CAAC,CAAD,CAAL,KAAanmC,GAA1B,EAA+B;AAC3BmmC,eAAK,CAAC,CAAD,CAAL,GAAWzoC,KAAX;AACH,SAFD,MAEO;AACHW,gBAAM,CAACgF,cAAP,CAAsBrD,GAAtB,EAA2BpE,IAA3B,EAAiC;AAC7B8B,iBAAK,EAAK,CAAEsC,GAAF,EAAOtC,KAAP,CADmB;AAE7B2tC,oBAAQ,EAAE;AAFmB,WAAjC;AAIH;;AAED;AAEH,OAfD,CAeE,OAAOtvC,GAAP,EAAY,CACV;AACH;AACJ;;AAED,SAAKovC,qBAAL;;AAEA,QAAIrrC,IAAI,GAAG,KAAKA,IAAhB;AACA,QAAIuB,MAAM,GAAG,KAAKA,MAAlB;AACA,QAAI2D,KAAK,GAAG0iB,WAAW,CAAC5nB,IAAD,EAAOE,GAAP,CAAvB;;AAEA,QAAIgF,KAAK,KAAK,CAAC,CAAf,EAAkB;AACdlF,UAAI,CAACzD,IAAL,CAAU2D,GAAV;AACAqB,YAAM,CAAChF,IAAP,CAAYqB,KAAZ;AACH,KAHD,MAGO;AACH2D,YAAM,CAAC2D,KAAD,CAAN,GAAgBtH,KAAhB;AACH;AACJ,GAlHL;;AAAA,SAoHI0E,GApHJ,GAoHI,aAAIpC,GAAJ,EAAwB;AAEpB,QAAI,CAACA,GAAL,EAAU;AACN,YAAM,IAAI7B,KAAJ,wBAAN;AACH;;AAED,QAAI68B,OAAO,GAAG,KAAKA,OAAnB;;AAEA,QAAIA,OAAJ,EAAa;AACT,UAAI;AACA,YAAIA,OAAO,CAAChwB,GAAR,CAAYhL,GAAZ,CAAJ,EAAsB;AAClB,iBAAOg7B,OAAO,CAAC54B,GAAR,CAAYpC,GAAZ,CAAP;AACH;AAEJ,OALD,CAKE,OAAOjE,GAAP,EAAY;AACV,eAAO,KAAKi/B,OAAZ;AACH;AACJ;;AAED,QAAI,KAAKoQ,iBAAL,CAAuBprC,GAAvB,CAAJ,EAAiC;AAC7B,UAAI;AACA,YAAImmC,KAAK,GAAGnmC,GAAG,CAAC,KAAKpE,IAAN,CAAf;;AAEA,YAAIuqC,KAAK,IAAIA,KAAK,CAAC,CAAD,CAAL,KAAanmC,GAA1B,EAA+B;AAC3B,iBAAOmmC,KAAK,CAAC,CAAD,CAAZ;AACH;;AAED;AACH,OARD,CAQE,OAAOpqC,GAAP,EAAY,CACV;AACH;AACJ;;AAED,SAAKovC,qBAAL;;AAEA,QAAIrrC,IAAI,GAAG,KAAKA,IAAhB;AACA,QAAIkF,KAAK,GAAG0iB,WAAW,CAAC5nB,IAAD,EAAOE,GAAP,CAAvB;;AAEA,QAAIgF,KAAK,KAAK,CAAC,CAAf,EAAkB;AACd;AACH;;AAED,WAAO,KAAK3D,MAAL,CAAY2D,KAAZ,CAAP;AACH,GA/JL;;AAAA,SAiKIqyB,MAjKJ,GAiKI,iBAAOr3B,GAAP,EAAgB;AAEZ,QAAI,CAACA,GAAL,EAAU;AACN,YAAM,IAAI7B,KAAJ,wBAAN;AACH;;AAED,QAAI68B,OAAO,GAAG,KAAKA,OAAnB;;AAEA,QAAIA,OAAJ,EAAa;AACT,UAAI;AACAA,eAAO,CAAC3D,MAAR,CAAer3B,GAAf;AACH,OAFD,CAEE,OAAOjE,GAAP,EAAY;AACV,eAAO,KAAKi/B,OAAZ;AACH;AACJ;;AAED,QAAI,KAAKoQ,iBAAL,CAAuBprC,GAAvB,CAAJ,EAAiC;AAC7B,UAAI;AACA,YAAImmC,KAAK,GAAGnmC,GAAG,CAAC,KAAKpE,IAAN,CAAf;;AAEA,YAAIuqC,KAAK,IAAIA,KAAK,CAAC,CAAD,CAAL,KAAanmC,GAA1B,EAA+B;AAC3BmmC,eAAK,CAAC,CAAD,CAAL,GAAWA,KAAK,CAAC,CAAD,CAAL,GAAWpnC,SAAtB;AACH;AACJ,OAND,CAME,OAAOhD,GAAP,EAAY,CACV;AACH;AACJ;;AAED,SAAKovC,qBAAL;;AAEA,QAAIrrC,IAAI,GAAG,KAAKA,IAAhB;AACA,QAAIkF,KAAK,GAAG0iB,WAAW,CAAC5nB,IAAD,EAAOE,GAAP,CAAvB;;AAEA,QAAIgF,KAAK,KAAK,CAAC,CAAf,EAAkB;AACdlF,UAAI,CAACjD,MAAL,CAAYmI,KAAZ,EAAmB,CAAnB;AACA,WAAK3D,MAAL,CAAYxE,MAAZ,CAAmBmI,KAAnB,EAA0B,CAA1B;AACH;AACJ,GAtML;;AAAA,SAwMIgG,GAxMJ,GAwMI,aAAIhL,GAAJ,EAAuB;AAEnB,QAAI,CAACA,GAAL,EAAU;AACN,YAAM,IAAI7B,KAAJ,wBAAN;AACH;;AAED,QAAI68B,OAAO,GAAG,KAAKA,OAAnB;;AAEA,QAAIA,OAAJ,EAAa;AACT,UAAI;AACA,YAAIA,OAAO,CAAChwB,GAAR,CAAYhL,GAAZ,CAAJ,EAAsB;AAClB,iBAAO,IAAP;AACH;AACJ,OAJD,CAIE,OAAOjE,GAAP,EAAY;AACV,eAAO,KAAKi/B,OAAZ;AACH;AACJ;;AAED,QAAI,KAAKoQ,iBAAL,CAAuBprC,GAAvB,CAAJ,EAAiC;AAC7B,UAAI;AACA,YAAImmC,KAAK,GAAGnmC,GAAG,CAAC,KAAKpE,IAAN,CAAf;;AAEA,YAAIuqC,KAAK,IAAIA,KAAK,CAAC,CAAD,CAAL,KAAanmC,GAA1B,EAA+B;AAC3B,iBAAO,IAAP;AACH;;AAED,eAAO,KAAP;AACH,OARD,CAQE,OAAOjE,GAAP,EAAY,CACV;AACH;AACJ;;AAED,SAAKovC,qBAAL;;AAEA,QAAInmC,KAAK,GAAG0iB,WAAW,CAAC,KAAK5nB,IAAN,EAAYE,GAAZ,CAAvB;AACA,WAAOgF,KAAK,KAAK,CAAC,CAAlB;AACH,GA5OL;;AAAA,SA8OI86B,QA9OJ,GA8OI,kBAAS9/B,GAAT,EAAkB2hC,MAAlB,EAAwC;AACpC,QAAI,KAAK32B,GAAL,CAAShL,GAAT,CAAJ,EAAmB;AACf;AACA,aAAO,KAAKoC,GAAL,CAASpC,GAAT,CAAP;AACH;;AAED,QAAItC,KAAK,GAAGikC,MAAM,EAAlB;AACA,SAAK99B,GAAL,CAAS7D,GAAT,EAActC,KAAd;AACA,WAAOA,KAAP;AACH,GAvPL;;AAAA;AAAA,I;;ACLA;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAEA,IAAM4tC,iBAAiB,GAAG,oBAA1B;AACA,IAAMC,WAAW,GAAS,oBAA1B;AACA,IAAMC,UAAU,GAAU,mBAA1B;AAEA,IAAIhF,eAAJ;AAEO,SAASiF,eAAT,CAA4B9uC,OAA5B,EAAmE;AAEtE,MAAM+pC,mBAAmB,GAAG3C,2EAAqB,EAAjD;AACA,MAAI4C,OAAJ;;AAEA,MAAIH,eAAJ,EAAqB;AACjBG,WAAO,GAAGH,eAAV;AACH;;AAED,MAAI,CAACG,OAAD,IAAYD,mBAAhB,EAAqC;AACjC,QAAME,UAAU,GAAGprC,MAAM,CAACwoC,YAAP,CAAoBE,OAApB,CAA4BoH,iBAA5B,CAAnB;;AAEA,QAAI1E,UAAJ,EAAgB;AACZD,aAAO,GAAG9kC,IAAI,CAAC05B,KAAL,CAAWqL,UAAX,CAAV;AACH;AACJ;;AAED,MAAI,CAACD,OAAL,EAAc;AACVA,WAAO,GAAGnrC,MAAM,CAAC8vC,iBAAD,CAAhB;AACH;;AAED,MAAI,CAAC3E,OAAL,EAAc;AACVA,WAAO,GAAG;AACN5+B,QAAE,EAAEzG,8DAAQ;AADN,KAAV;AAGH;;AAED,MAAI,CAACqlC,OAAO,CAAC5+B,EAAb,EAAiB;AACb4+B,WAAO,CAAC5+B,EAAR,GAAazG,8DAAQ,EAArB;AACH;;AAEDklC,iBAAe,GAAGG,OAAlB;AAEA,MAAM5oC,MAAM,GAAGpB,OAAO,CAACgqC,OAAD,CAAtB;;AAEA,MAAID,mBAAJ,EAAyB;AACrBlrC,UAAM,CAACwoC,YAAP,CAAoBC,OAApB,CAA4BqH,iBAA5B,EAA+CzpC,IAAI,CAACC,SAAL,CAAe6kC,OAAf,CAA/C;AACH,GAFD,MAEO;AACHnrC,UAAM,CAAC8vC,iBAAD,CAAN,GAA4B3E,OAA5B;AACH;;AAEDH,iBAAe,GAAG,IAAlB;AAEA,SAAOzoC,MAAP;AACH;AAEM,SAAS2tC,YAAT,GAAiC;AACpC,SAAOD,eAAe,CAAC,UAAA9E,OAAO;AAAA,WAAIA,OAAO,CAAC5+B,EAAZ;AAAA,GAAR,CAAtB;AACH;AAEM,SAAS++B,UAAT,CAAuBnqC,OAAvB,EAA4D;AAC/D,SAAO8uC,eAAe,CAAC,UAAA9E,OAAO,EAAI;AAE9B,QAAII,OAAO,GAAGJ,OAAO,CAAC4E,WAAD,CAArB;AACA,QAAMnpB,GAAG,GAAOD,IAAI,CAACC,GAAL,EAAhB;;AAEA,QAAI2kB,OAAO,IAAM3kB,GAAG,GAAG2kB,OAAO,CAACE,OAAf,GAA0BnxB,sDAAM,CAAC2D,oBAAjD,EAAwE;AACpEstB,aAAO,GAAG,IAAV;AACH;;AAED,QAAI,CAACA,OAAL,EAAc;AACVA,aAAO,GAAG;AACNG,YAAI,EAAK5lC,8DAAQ,EADX;AAEN2lC,eAAO,EAAE7kB;AAFH,OAAV;AAIH;;AAEDukB,WAAO,CAAC4E,WAAD,CAAP,GAAuBxE,OAAvB;AAEA,WAAOpqC,OAAO,CAACoqC,OAAD,CAAd;AACH,GAnBqB,CAAtB;AAoBH;AAEM,SAASI,eAAT,CAA4BxqC,OAA5B,EAAiE;AACpE,SAAOmqC,UAAU,CAAC,UAAAC,OAAO,EAAI;AACzBA,WAAO,CAAC1vB,KAAR,GAAgB0vB,OAAO,CAAC1vB,KAAR,IAAiB,EAAjC;AACA,WAAO1a,OAAO,CAACoqC,OAAO,CAAC1vB,KAAT,CAAd;AACH,GAHgB,CAAjB;AAIH;AAEM,SAAS+vB,YAAT,GAAiC;AAEpC,MAAMuE,MAAM,GAAGnwC,MAAM,CAACmwC,MAAtB;;AAEA,MAAIA,MAAM,IAAIA,MAAM,CAACC,SAArB,EAAgC;AAC5B,WAAOD,MAAM,CAACC,SAAd;AACH;;AAED,MAAMC,cAAc,GAAG3/B,kEAAa,CAAC,WAAD,CAApC;;AAEA,MAAI4/B,wEAAc,MAAMD,cAAxB,EAAwC;AACpC,WAAOA,cAAP;AACH;;AAED,SAAO/E,UAAU,CAAC,UAAAC,OAAO;AAAA,WAAIA,OAAO,CAACG,IAAZ;AAAA,GAAR,CAAjB;AACH;AAEM,SAAS6E,kBAAT,GAAwC;AAE3C,MAAIvwC,MAAM,CAACmwC,MAAP,IAAiBnwC,MAAM,CAACmwC,MAAP,CAAcK,eAAnC,EAAoD;AAChD,WAAOxwC,MAAM,CAACmwC,MAAP,CAAcK,eAArB;AACH;;AAED,MAAMH,cAAc,GAAG3/B,kEAAa,CAAC,iBAAD,CAApC;;AAEA,MAAI4/B,wEAAc,MAAMD,cAAxB,EAAwC;AACpC,WAAOA,cAAP;AACH;AACJ;AAEM,SAASI,cAAT,CAA2BtvC,OAA3B,EAAgE;AACnEnB,QAAM,CAACgwC,UAAD,CAAN,GAAqBhwC,MAAM,CAACgwC,UAAD,CAAN,IAAsB,EAA3C;AACA,SAAO7uC,OAAO,CAACnB,MAAM,CAACgwC,UAAD,CAAP,CAAd;AACH,C;;;;;;;AC7HD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKO,SAASrjB,YAAT,GAAiC;AACpC,SAAO3sB,MAAM,CAACiQ,SAAP,CAAiB2c,aAAjB,IAAkC5sB,MAAM,CAACiQ,SAAP,CAAiBC,SAA1D;AACH;AAEM,SAASoxB,QAAT,GAA8B;AACjC,MAAMpxB,SAAS,GAAGyc,YAAY,EAA9B;;AACA,MAAIzc,SAAS,CAAC3G,KAAV,CAAgB,sGAAhB,CAAJ,EAA6H;AACzH,WAAO,IAAP;AACH;;AAED,SAAO,KAAP;AACH;AAEM,SAASmnC,aAAT,GAAmC;AACtC;AACA,SAAOnjC,OAAO,CAACid,gFAAS,CAACkB,6EAAM,CAAC1rB,MAAD,CAAN,IAAkBA,MAAnB,CAAV,CAAd;AACH;AAEM,SAASwhC,YAAT,GAAkC;AACrC;AACA,SAAO,CAACkP,aAAa,EAAd,KAAqB1wC,MAAM,CAACiQ,SAAP,CAAiBwxB,UAAjB,KAAgC,IAAhC,IAAwCzhC,MAAM,CAAC0hC,UAAP,CAAkB,4BAAlB,EAAgD73B,OAA7G,CAAP;AACH;AAEM,SAAS83B,iBAAT,CAA2BC,EAA3B,EAAoE;AAAA,MAAzCA,EAAyC;AAAzCA,MAAyC,GAA1BjV,YAAY,EAAc;AAAA;;AACvE,SAAQiV,EAAE,CAAChhC,OAAH,CAAW,MAAX,MAAuB,CAAC,CAAzB,IAAgCghC,EAAE,CAAChhC,OAAH,CAAW,MAAX,MAAuB,CAAC,CAA/D;AACH;AAEM,SAASihC,YAAT,CAAsBD,EAAtB,EAA+D;AAAA,MAAzCA,EAAyC;AAAzCA,MAAyC,GAA1BjV,YAAY,EAAc;AAAA;;AAClE,SAAQ,QAAD,CAAWzT,IAAX,CAAgB0oB,EAAhB,CAAP;AACH;AAEM,SAASE,SAAT,CAAmBF,EAAnB,EAA4D;AAAA,MAAzCA,EAAyC;AAAzCA,MAAyC,GAA1BjV,YAAY,EAAc;AAAA;;AAC/D,SAAQ,SAAD,CAAYzT,IAAZ,CAAiB0oB,EAAjB,CAAP;AACH;AAEM,SAASG,WAAT,CAAqBH,EAArB,EAA8D;AAAA,MAAzCA,EAAyC;AAAzCA,MAAyC,GAA1BjV,YAAY,EAAc;AAAA;;AACjE,SAAOiV,EAAE,CAAChhC,OAAH,CAAW,YAAX,IAA2B,CAAC,CAAnC;AACH;AAEM,SAASohC,SAAT,CAAmBJ,EAAnB,EAA4D;AAAA,MAAzCA,EAAyC;AAAzCA,MAAyC,GAA1BjV,YAAY,EAAc;AAAA;;AAC/D,SAAQ,SAAD,CAAYzT,IAAZ,CAAiB0oB,EAAjB,CAAP;AACH;AAEM,SAASK,KAAT,CAAeL,EAAf,EAAwD;AAAA,MAAzCA,EAAyC;AAAzCA,MAAyC,GAA1BjV,YAAY,EAAc;AAAA;;AAC3D,SAAQ,kBAAD,CAAqBzT,IAArB,CAA0B0oB,EAA1B,CAAP;AACH;AAEM,SAASM,iBAAT,CAA2BN,EAA3B,EAAoE;AAAA,MAAzCA,EAAyC;AAAzCA,MAAyC,GAA1BjV,YAAY,EAAc;AAAA;;AACvE,SAAQ,SAAD,CAAYzT,IAAZ,CAAiB0oB,EAAjB,CAAP;AACH;AAEM,SAASO,WAAT,CAAqBP,EAArB,EAA8D;AAAA,MAAzCA,EAAyC;AAAzCA,MAAyC,GAA1BjV,YAAY,EAAc;AAAA;;AACjE,SAAQ,WAAD,CAAczT,IAAd,CAAmB0oB,EAAnB,CAAP;AACH;AAEM,SAASQ,YAAT,CAAsBR,EAAtB,EAA+D;AAAA,MAAzCA,EAAyC;AAAzCA,MAAyC,GAA1BjV,YAAY,EAAc;AAAA;;AAClE,MAAIsV,KAAK,CAACL,EAAD,CAAT,EAAe;AACX,QAAIM,iBAAiB,CAACN,EAAD,CAArB,EAA2B;AACvB,aAAO,IAAP;AACH;;AACD,WAAQ,2BAAD,CAA8B1oB,IAA9B,CAAmC0oB,EAAnC,CAAP;AACH;;AACD,SAAO,KAAP;AACH;AAEM,SAASS,gBAAT,CAA0BT,EAA1B,EAAmE;AAAA,MAAzCA,EAAyC;AAAzCA,MAAyC,GAA1BjV,YAAY,EAAc;AAAA;;AACtE,MAAIqV,SAAS,CAACJ,EAAD,CAAb,EAAmB;AACf,WAAQ,iBAAD,CAAoB1oB,IAApB,CAAyB0oB,EAAzB,KAAgC,CAACG,WAAW,CAACH,EAAD,CAAnD;AACH;;AACD,SAAO,KAAP;AACH;AAEM,SAASL,SAAT,GAA+B;AAClC,SAAOI,iBAAiB,MACpBS,YAAY,EADT,IAEHC,gBAAgB,EAFpB;AAGH;AAEM,SAASre,IAAT,GAA0B;AAE7B,MAAIhkB,MAAM,CAACwM,QAAP,CAAgByX,YAApB,EAAkC;AAC9B,WAAO,IAAP;AACH;;AAED,MAAIjkB,MAAM,CAACiQ,SAAP,IAAoB,OAAOjQ,MAAM,CAACiQ,SAAP,CAAiBC,SAAxB,KAAsC,QAA9D,EAAwE;AACpE,QAAK,YAAD,CAAegJ,IAAf,CAAoBlZ,MAAM,CAACiQ,SAAP,CAAiBC,SAArC,CAAJ,EAAqD;AACjD,aAAO,IAAP;AACH;AACJ;;AAED,SAAO,KAAP;AACH;AAGM,SAASygC,MAAT,GAA4B;AAC/B,MAAI,CAAC3sB,IAAI,EAAT,EAAa;AACT,WAAO,KAAP;AACH;;AAED,MAAIhkB,MAAM,CAACiQ,SAAP,IAAoB,OAAOjQ,MAAM,CAACiQ,SAAP,CAAiBC,SAAxB,KAAsC,QAA9D,EAAwE;AACpE,QAAK,aAAD,CAAgBgJ,IAAhB,CAAqBlZ,MAAM,CAACiQ,SAAP,CAAiBC,SAAtC,CAAJ,EAAsD;AAClD,aAAO,IAAP;AACH;;AAED,QAAK,UAAD,CAAagJ,IAAb,CAAkBlZ,MAAM,CAACiQ,SAAP,CAAiBC,SAAnC,KAAkD,WAAD,CAAcgJ,IAAd,CAAmBlZ,MAAM,CAACiQ,SAAP,CAAiBC,SAApC,CAArD,EAAqG;AACjG,aAAO,IAAP;AACH;AACJ;;AAED,SAAO,KAAP;AACH;AAEM,SAASoyB,cAAT,GAAoC;AACvC,MAAMC,KAAK,GAAGviC,MAAM,CAACwM,QAAP,CAAgBE,aAAhB,CAA8B,oCAA9B,CAAd;AACA,MAAM81B,QAAQ,GAAGxiC,MAAM,CAACwM,QAAP,CAAgBE,aAAhB,CAA8B,yBAA9B,CAAjB;;AACA,MAAI61B,KAAK,IAAIC,QAAb,EAAuB;AACnB,WAAO,IAAP;AACH;;AACD,SAAO,KAAP;AACH;AAEM,SAASC,UAAT,GAAgC;AACnC,MAAMvyB,SAAS,GAAGyc,YAAY,EAA9B,CADmC,CAEnC;;AACA,SAAQ,eAAD,CAAkBzT,IAAlB,CAAuBhJ,SAAvB,CAAP;AACH;AAEM,SAAS2yB,YAAT,GAAkC;AACrC,MAAI,CAAC8N,MAAM,EAAX,EAAe;AACX,WAAO,KAAP;AACH,GAHoC,CAKrC;;;AAEA,MAAI3wC,MAAM,CAACwM,QAAP,CAAgByX,YAApB,EAAkC;AAC9B,QAAI;AACA,UAAMoW,MAAM,GAAGr6B,MAAM,CAACq6B,MAAtB;AAEAr6B,YAAM,CAACq6B,MAAP,GAAgB,kBAAhB;;AAEA,UAAIr6B,MAAM,CAACq6B,MAAP,KAAkB,kBAAtB,EAA0C;AACtCr6B,cAAM,CAACq6B,MAAP,GAAgBA,MAAhB;AAEA,eAAO,IAAP;AACH;;AAED,aAAO,KAAP;AAEH,KAbD,CAaE,OAAO95B,GAAP,EAAY;AAEV,aAAO,KAAP;AACH;AACJ;;AAED,SAAO,KAAP;AACH;AAEM,SAASuiC,UAAT,GAAgC;AACnC,MAAM5yB,SAAS,GAAGyc,YAAY,EAA9B;AACA,SAAQ,qCAAD,CAAwCzT,IAAxC,CAA6ChJ,SAA7C,CAAP;AACH;AAEM,SAAS6yB,cAAT,CAAwBnB,EAAxB,EAAiE;AAAA,MAAzCA,EAAyC;AAAzCA,MAAyC,GAA1BjV,YAAY,EAAc;AAAA;;AACpE,SAAO,EAAEyV,YAAY,CAACR,EAAD,CAAZ,IAAoBS,gBAAgB,CAACT,EAAD,CAApC,IAA4CG,WAAW,CAACH,EAAD,CAAvD,IACLC,YAAY,CAACD,EAAD,CADP,IACeE,SAAS,CAACF,EAAD,CADxB,IACgCD,iBAAiB,CAACC,EAAD,CADjD,IACyDO,WAAW,CAACP,EAAD,CADpE,IAC4Ea,UAAU,EADtF,IAC4FK,UAAU,EADtG,IAC4GtB,YAAY,EAD1H,CAAP;AAEH,C;;;;;;;AC5KD;AAAe,SAASoP,cAAT,CAAwBC,QAAxB,EAAkCC,UAAlC,EAA8C;AAC3DD,UAAQ,CAAC/tC,SAAT,GAAqBD,MAAM,CAAComC,MAAP,CAAc6H,UAAU,CAAChuC,SAAzB,CAArB;AACA+tC,UAAQ,CAAC/tC,SAAT,CAAmB5C,WAAnB,GAAiC2wC,QAAjC;AACAA,UAAQ,CAACE,SAAT,GAAqBD,UAArB;AACD,C;;;;;;;;;;;;;;;;;;;;;;ACDD;AAEA;AACA;AACA;AAEA;;;;;;;;;;;;;AAaA71B,wBAAM,CAAC+1B,aAAP,GAAuB/1B,wBAAM,CAAC+1B,aAAP,IAAwB,EAA/C;AACA/1B,wBAAM,CAACg2B,cAAP,GAAwB,CAAxB;;AAEA,SAASC,kBAAT,CAA4B3kC,EAA5B,EAAgC;AAE5B,MAAI;AACA,QAAI0O,wBAAM,CAAC+1B,aAAP,CAAqBzkC,EAArB,CAAJ,EAA8B;AAC1B,aAAO0O,wBAAM,CAAC+1B,aAAP,CAAqBzkC,EAArB,EAAyB5G,MAAhC;AACH;AACJ,GAJD,CAIE,OAAOpF,GAAP,EAAY,CACV;AACH;;AAED,SAAO0a,wBAAM,CAAC+1B,aAAP,CAAqBzkC,EAArB,CAAP;AACH;;AAED,SAAS4kC,kBAAT,GAA8B;AAC1B,MAAIH,aAAa,GAAG/1B,wBAAM,CAAC+1B,aAA3B;;AAD0B,oCAGVnuC,MAAM,CAACyB,IAAP,CAAY0sC,aAAZ,CAHU,qCAGkB;AAAvC,QAAIxsC,GAAG,qBAAP;AACD,QAAI4sC,YAAY,GAAGJ,aAAa,CAACxsC,GAAD,CAAhC;;AAEA,QAAI;AACAqG,iCAAI,CAACumC,YAAY,CAACzrC,MAAd,CAAJ;AACH,KAFD,CAEE,OAAOpF,GAAP,EAAY;AACV2wC,wBAAkB,CAAC1sC,GAAD,CAAlB;AACA;AACH;;AAED,QAAImJ,qCAAc,CAACyjC,YAAY,CAACzrC,MAAd,CAAlB,EAAyC;AACrCurC,wBAAkB,CAAC1sC,GAAD,CAAlB;AACH;AACJ;AACJ;;AASD,SAAS6sC,eAAT,OAAgG;AAAA,MAArEjxC,IAAqE,QAArEA,IAAqE;AAAA,MAA/DuF,MAA+D,QAA/DA,MAA+D;AAAA,MAAvD2rC,MAAuD,QAAvDA,MAAuD;AAAA,MAA/CvX,WAA+C,QAA/CA,WAA+C;AAC5FoX,oBAAkB;AAClBl2B,0BAAM,CAACg2B,cAAP,IAAyB,CAAzB;AACAh2B,0BAAM,CAAC+1B,aAAP,CAAqB/1B,wBAAM,CAACg2B,cAA5B,IAA8C;AAAE7wC,QAAI,EAAJA,IAAF;AAAQuF,UAAM,EAANA,MAAR;AAAgB2rC,UAAM,EAANA,MAAhB;AAAwBvX,eAAW,EAAXA;AAAxB,GAA9C;AACA,SAAO9e,wBAAM,CAACg2B,cAAd;AACH;;AAED,SAASM,eAAT,CAAyBhlC,EAAzB,EAA6D;AACzD,SAAO0O,wBAAM,CAAC+1B,aAAP,CAAqBzkC,EAArB,CAAP;AACH;;AAED0O,wBAAM,CAACu2B,kBAAP,GAA4B,SAASA,kBAAT,QAA6K;AAAA,MAA/IpxC,IAA+I,SAA/IA,IAA+I;AAAA,MAAzIuF,MAAyI,SAAzIA,MAAyI;AAAA,MAAjI2rC,MAAiI,SAAjIA,MAAiI;AAAA,MAAzHvX,WAAyH,SAAzHA,WAAyH;AAErM,MAAI0X,YAAY,GAAGnnB,gCAAS,CAACtqB,MAAD,CAA5B;;AAEA,MAAI,CAACyxC,YAAL,EAAmB;AACf,UAAM,IAAI9uC,KAAJ,4CAAN;AACH;;AAED,MAAI4J,EAAE,GAAG8kC,eAAe,CAAC;AAAEjxC,QAAI,EAAJA,IAAF;AAAQuF,UAAM,EAANA,MAAR;AAAgB2rC,UAAM,EAANA,MAAhB;AAAwBvX,eAAW,EAAXA;AAAxB,GAAD,CAAxB;AAEA,SAAO9e,wBAAM,CAACvD,IAAP,CAAY+5B,YAAZ,EAA0B/d,yBAAS,CAACU,kBAAV,CAA6BG,WAAvD,EAAoE;AAEvEn0B,QAAI,EAAJA,IAFuE;AAIvE25B,eAJuE,yBAIzD;AAEV,UAAIqX,YAAY,GAAGG,eAAe,CAAChlC,EAAD,CAAlC;;AAEA,UAAI;AACA;AACA1B,mCAAI,CAACumC,YAAY,IAAIA,YAAY,CAACzrC,MAA9B,CAAJ;AACH,OAHD,CAGE,OAAOpF,GAAP,EAAY;AACV2wC,0BAAkB,CAAC3kC,EAAD,CAAlB;AACA;AACH;;AAED,UAAI,CAAC6kC,YAAD,IAAiB,CAACA,YAAY,CAACzrC,MAA/B,IAAyCgI,qCAAc,CAACyjC,YAAY,CAACzrC,MAAd,CAA3D,EAAkF;AAC9E;AACH;;AAED,UAAI;AACAyrC,oBAAY,CAACE,MAAb;AACH,OAFD,CAEE,OAAO/wC,GAAP,EAAY;AACV;AACH;;AAED6wC,kBAAY,CAACrX,WAAb,CAAyBl1B,KAAzB,CAA+B,IAA/B,EAAqCmG,SAArC;AACH;AA3BsE,GAApE,EA6BJ;AAAE8T,UAAM,EAAE4U,yBAAS,CAAC1J;AAApB,GA7BI,CAAP;AA8BH,CAxCD,C;;;;;;;;ACzEA;AACA;AACA;AAEA;AACA;AAEO,SAASsP,qBAAT,GAA2C;AAE9C,MAAI3M,mCAAY,CAAC3sB,MAAD,CAAZ,CAAqBuJ,KAArB,CAA2B,iCAA3B,CAAJ,EAAmE;AAC/D,WAAO,IAAP;AACH;;AAED,MAAI,CAACgR,sBAAM,CAAC8a,uBAAZ,EAAqC;AACjC,WAAO,IAAP;AACH;;AAED,SAAO,KAAP;AACH;AAEM,SAASqc,iBAAT,CAA2BlkC,GAA3B,EAAkE;AAErE,MAAI,CAAC+gB,sCAAe,CAACvuB,MAAD,EAASwN,GAAT,CAApB,EAAmC;AAC/B,WAAO,IAAP;AACH;;AAED,SAAO,KAAP;AACH;AAEM,SAASmkC,oBAAT,CAA8B7yB,MAA9B,EAAgDtR,GAAhD,EAAwF;AAE3F,MAAIsR,MAAJ,EAAY;AACR,QAAI+L,gCAAS,OAAOwE,uCAAgB,CAACvQ,MAAD,CAApC,EAA8C;AAC1C,aAAO,IAAP;AACH;AACJ,GAJD,MAIO,IAAItR,GAAJ,EAAS;AACZ,QAAI,CAACsN,mCAAY,CAACtN,GAAD,CAAjB,EAAyB;AACrB,aAAO,IAAP;AACH;AACJ;;AAED,SAAO,KAAP;AACH;AAEM,SAASokC,WAAT,OAAqG;AAAA,MAA9EpkC,GAA8E,QAA9EA,GAA8E;AAAA,MAAzEsR,MAAyE,QAAzEA,MAAyE;;AAExG,MAAI,CAACwa,qBAAqB,EAA1B,EAA8B;AAC1B,WAAO,KAAP;AACH;;AAED,MAAIxa,MAAM,IAAI,CAAC6yB,oBAAoB,CAAC7yB,MAAD,EAAStR,GAAT,CAAnC,EAAkD;AAC9C,WAAO,KAAP;AACH;;AAED,MAAIA,GAAG,IAAI,CAACkkC,iBAAiB,CAAClkC,GAAD,CAA7B,EAAoC;AAChC,WAAO,KAAP;AACH;;AAED,SAAO,IAAP;AACH;AAEM,SAASqkC,aAAT,CAAuB/yB,MAAvB,EAAiD;AAEpDA,QAAM,GAAGA,MAAM,IAAIuQ,uCAAgB,CAACvQ,MAAD,CAAnC;AAEA,MAAIgzB,eAAe,GAAGhzB,MAAM,CAAC5Z,OAAP,CAAe,gBAAf,EAAiC,GAAjC,CAAtB;AAEA,MAAIqH,EAAE,GAAOmnB,yBAAS,CAACwB,kBAAjB,SAAyC4c,eAA/C;AAEA,SAAOvlC,EAAP;AACH;AAEM,SAASgtB,QAAT,GAA8B;AACjC,SAAOhsB,OAAO,CAACvN,MAAM,CAACI,IAAP,IAAeJ,MAAM,CAACI,IAAP,KAAgByxC,aAAa,CAAChnB,gCAAS,EAAV,CAA7C,CAAd;AACH;AAEM,IAAIknB,iBAAiB,GAAG,IAAIjwC,yCAAJ,CAAiB,UAAAL,OAAO,EAAI;AAEvD,MAAIzB,MAAM,CAACwM,QAAP,IAAmBxM,MAAM,CAACwM,QAAP,CAAgB+6B,IAAvC,EAA6C;AACzC,WAAO9lC,OAAO,CAACzB,MAAM,CAACwM,QAAP,CAAgB+6B,IAAjB,CAAd;AACH;;AAED,MAAIngC,QAAQ,GAAG0F,WAAW,CAAC,YAAM;AAC7B,QAAI9M,MAAM,CAACwM,QAAP,IAAmBxM,MAAM,CAACwM,QAAP,CAAgB+6B,IAAvC,EAA6C;AACzCx6B,mBAAa,CAAC3F,QAAD,CAAb;AACA,aAAO3F,OAAO,CAACzB,MAAM,CAACwM,QAAP,CAAgB+6B,IAAjB,CAAd;AACH;AACJ,GALyB,EAKvB,EALuB,CAA1B;AAMH,CAZ8B,CAAxB;AAcPtsB,wBAAM,CAACwjB,aAAP,GAAuBxjB,wBAAM,CAACwjB,aAAP,IAAwB,IAAIz1B,gDAAJ,EAA/C;AAEO,SAASgpC,oBAAT,CAA8BxkC,GAA9B,EAA2D;AAC9DyN,0BAAM,CAACwjB,aAAP,CAAqBp2B,GAArB,CAAyBmF,GAAzB,EAA8B;AAAEykC,sBAAkB,EAAE,IAAInwC,yCAAJ;AAAtB,GAA9B;AACH;AAEM,SAASowC,gBAAT,CAA0B1kC,GAA1B,EAAqL;AACxL,SAAOyN,wBAAM,CAACwjB,aAAP,CAAqB73B,GAArB,CAAyB4G,GAAzB,CAAP;AACH;AAEM,SAAS2kC,yBAAT,CAAmC3kC,GAAnC,EAAgEsR,MAAhE,EAAiFib,WAAjF,EAA2H;AAE9H,MAAIqY,YAAY,GAAGF,gBAAgB,CAAC1kC,GAAD,CAAnC;;AAEA,MAAI,CAAC4kC,YAAL,EAAmB;AACf,UAAM,IAAIzvC,KAAJ,+CAAN;AACH;;AAED,MAAI0vC,kBAAkB,GAAG,SAArBA,kBAAqB,CAACC,SAAD,EAAoCpoC,OAApC,EAAsDqoC,YAAtD,EAAgF;AAErG,QAAID,SAAS,KAAK9kC,GAAlB,EAAuB;AACnB,YAAM,IAAI7K,KAAJ,uCAAN;AACH;;AAED,QAAI,CAACqsB,kCAAW,CAACujB,YAAD,EAAezzB,MAAf,CAAhB,EAAwC;AACpC,YAAM,IAAInc,KAAJ,oBAA4B4vC,YAA5B,+BAAoEzzB,MAApE,CAAN;AACH;;AAEDib,eAAW,CAAC7vB,OAAD,CAAX;AACH,GAXD;;AAaAkoC,cAAY,CAACH,kBAAb,CAAgCxwC,OAAhC,CAAwC4wC,kBAAxC;AACAD,cAAY,CAACH,kBAAb,GAAkCnwC,yCAAY,CAACL,OAAb,CAAqB4wC,kBAArB,CAAlC;AACH;AAEM,SAASG,uBAAT,CAAiChlC,GAAjC,EAA8DjN,GAA9D,EAA2E;AAE9E,MAAI6xC,YAAY,GAAGF,gBAAgB,CAAC1kC,GAAD,CAAnC;;AAEA,MAAI,CAAC4kC,YAAL,EAAmB;AACf,UAAM,IAAIzvC,KAAJ,mDAAN;AACH;;AAEDyvC,cAAY,CAACH,kBAAb,CAAgClvC,WAAhC,CAA4CxC,GAA5C;AACH;AAEM,SAAS84B,iBAAT,CAA2B7rB,GAA3B,EAAwDtD,OAAxD,EAA0E4U,MAA1E,EAAgH;AAEnH,MAAI2zB,cAAc,GAAIrlB,+BAAQ,CAACptB,MAAD,EAASwN,GAAT,CAA9B;AACA,MAAIklC,eAAe,GAAGtlB,+BAAQ,CAAC5f,GAAD,EAAMxN,MAAN,CAA9B;;AAEA,MAAI,CAACyyC,cAAD,IAAmB,CAACC,eAAxB,EAAyC;AACrC,UAAM,IAAI/vC,KAAJ,+DAAN;AACH;;AAED,MAAIyvC,YAAY,GAAGF,gBAAgB,CAAC1kC,GAAD,CAAnC;;AAEA,MAAI,CAAC4kC,YAAL,EAAmB;AACf,UAAM,IAAIzvC,KAAJ,uCAAN;AACH;;AAED,SAAOyvC,YAAY,CAACH,kBAAb,CAAgC3xC,IAAhC,CAAqC,UAAAy5B,WAAW,EAAI;AACvD,WAAOA,WAAW,CAACvsB,GAAD,EAAMtD,OAAN,EAAe4U,MAAf,CAAlB;AACH,GAFM,CAAP;AAGH,C;;AC1JD;AACA;AAEA;AACA;AACA;AAEA;AAEA,IAAI6zB,0BAA0B,GAAGpT,qCAAc,CAAC,UAAC/xB,GAAD,EAAwE;AACpH,SAAO1L,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAAA,oCACR4nB,gCAAS,CAAC9d,GAAD,CADD,mCACQ;AAA7B,UAAI+B,KAAK,mBAAT;;AACD,UAAI;AACA;AACA,YAAIA,KAAK,IAAIA,KAAK,KAAKvP,MAAnB,IAA6B8a,mCAAY,CAACvL,KAAD,CAAzC,IAAoDA,KAAK,CAACmkB,yBAAS,CAACC,YAAV,CAAuBC,SAAxB,CAA7D,EAAiG;AAC7F,iBAAOrkB,KAAP;AACH;AAEJ,OAND,CAME,OAAOhP,GAAP,EAAY;AACV;AACH;AACJ;;AAED,QAAI;AACA,UAAIgP,MAAK,GAAGsd,qCAAc,CAACrf,GAAD,EAAMqkC,aAAa,CAAChnB,gCAAS,EAAV,CAAnB,CAA1B;;AAEA,UAAI,CAACtb,MAAL,EAAY;AACR;AACH,OALD,CAOA;;;AACA,UAAIuL,mCAAY,CAACvL,MAAD,CAAZ,IAAuBA,MAAK,CAACmkB,yBAAS,CAACC,YAAV,CAAuBC,SAAxB,CAAhC,EAAoE;AAChE,eAAOrkB,MAAP;AACH;;AAED,aAAO,IAAIzN,yCAAJ,CAAiB,UAAAL,OAAO,EAAI;AAE/B,YAAI2F,QAAJ;AACA,YAAIzD,OAAJ;AAEAyD,gBAAQ,GAAG0F,WAAW,CAAC,YAAM;AACzB;AACA,cAAIyC,MAAK,IAAIuL,mCAAY,CAACvL,MAAD,CAArB,IAAgCA,MAAK,CAACmkB,yBAAS,CAACC,YAAV,CAAuBC,SAAxB,CAAzC,EAA6E;AACzE7mB,yBAAa,CAAC3F,QAAD,CAAb;AACAvD,wBAAY,CAACF,OAAD,CAAZ;AACA,mBAAOlC,OAAO,CAAC8N,MAAD,CAAd;AACH;AACJ,SAPqB,EAOnB,GAPmB,CAAtB;AASA5L,eAAO,GAAG7C,UAAU,CAAC,YAAM;AACvBiM,uBAAa,CAAC3F,QAAD,CAAb;AACA,iBAAO3F,OAAO,EAAd;AACH,SAHmB,EAGjB,IAHiB,CAApB;AAIH,OAlBM,CAAP;AAoBH,KAhCD,CAgCE,OAAOlB,GAAP,EAAY,CACV;AACH;AACJ,GAhDM,CAAP;AAiDH,CAlD8C,CAA/C;AAoDO,SAASu+B,kBAAT,GAAmD;AACtD,SAAOh9B,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAE1B,QAAM+mB,MAAM,GAAGD,gCAAS,CAACxqB,MAAD,CAAxB;;AAEA,QAAI,CAACyqB,MAAL,EAAa;AACT;AACH;;AAED,QAAI,CAACmnB,WAAW,CAAC;AAAEpkC,SAAG,EAAEid;AAAP,KAAD,CAAhB,EAAmC;AAC/B;AACH;;AAEDunB,wBAAoB,CAACvnB,MAAD,CAApB;AAEA,WAAOkoB,0BAA0B,CAACloB,MAAD,CAA1B,CAAmCnqB,IAAnC,CAAwC,UAAAs+B,MAAM,EAAI;AAErD,UAAI,CAACA,MAAL,EAAa;AACT,eAAO4T,uBAAuB,CAAC/nB,MAAD,EAAS,IAAI9nB,KAAJ,2DAAT,CAA9B;AACH;;AAED,UAAI,CAAC3C,MAAM,CAACI,IAAZ,EAAkB;AACd,eAAOoyC,uBAAuB,CAAC/nB,MAAD,EAAS,IAAI9nB,KAAJ,6DAAT,CAA9B;AACH;;AAED,aAAOi8B,MAAM,CAAClL,yBAAS,CAACC,YAAV,CAAuBC,SAAxB,CAAN,CAAyC4d,kBAAzC,CAA4D;AAE/DpxC,YAAI,EAAEJ,MAAM,CAACI,IAFkD;AAI/DuF,cAAM,EAAE3F,MAJuD;AAM/DsxC,cAN+D,oBAMtD,CACL;AACH,SAR8D;AAU/DvX,mBAV+D,uBAUnD7vB,OAVmD,EAU1C;AAEjB,cAAI;AACAW,uCAAI,CAAC7K,MAAD,CAAJ;AACH,WAFD,CAEE,OAAOO,GAAP,EAAY;AACV;AACH;;AAED,cAAI,CAACP,MAAD,IAAWA,MAAM,CAACusB,MAAtB,EAA8B;AAC1B;AACH;;AAED,cAAI;AACAtR,oCAAM,CAACye,cAAP,CAAsB;AAClBrW,kBAAI,EAAInZ,OADU;AAElB+kB,oBAAM,EAAE,KAAKA,MAFK;AAGlBtpB,oBAAM,EAAE,KAAKA;AAHK,aAAtB;AAKH,WAND,CAME,OAAOpF,GAAP,EAAY;AACVuB,qDAAY,CAACY,MAAb,CAAoBnC,GAApB;AACH;AACJ;AA/B8D,OAA5D,EAiCJD,IAjCI,CAiCC,gBAA8B;AAAA,YAA3BqF,MAA2B,QAA3BA,MAA2B;AAAA,YAAnBspB,MAAmB,QAAnBA,MAAmB;AAAA,YAAX5L,IAAW,QAAXA,IAAW;;AAElC,YAAI1d,MAAM,KAAK8kB,MAAf,EAAuB;AACnB,gBAAM,IAAI9nB,KAAJ,gCAAN;AACH;;AAEDwvC,iCAAyB,CAACxsC,MAAD,EAASspB,MAAT,EAAiB5L,IAAI,CAAC0W,WAAtB,CAAzB;AAEH,OAzCM,EAyCJz2B,KAzCI,CAyCE,UAAA/C,GAAG,EAAI;AAEZiyC,+BAAuB,CAAC/nB,MAAD,EAASlqB,GAAT,CAAvB;AACA,cAAMA,GAAN;AACH,OA7CM,CAAP;AA8CH,KAxDM,CAAP;AAyDH,GAvEM,CAAP;AAwEH,C;;ACtID;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA0a,wBAAM,CAAC23B,OAAP,GAAiB33B,wBAAM,CAAC23B,OAAP,IAAkB,EAAnC;AACA33B,wBAAM,CAAC43B,YAAP,GAAsB53B,wBAAM,CAAC43B,YAAP,IAAuB,EAA7C;AAEA53B,wBAAM,CAACujB,iBAAP,GAA2BvjB,wBAAM,CAACujB,iBAAP,IAA4B,IAAIx1B,gDAAJ,EAAvD;AACAiS,wBAAM,CAAC63B,kBAAP,GAA4B73B,wBAAM,CAAC63B,kBAAP,IAA6B,EAAzD;;AAEA,SAASC,iBAAT,CAA2BptC,MAA3B,EAAmCmZ,MAAnC,EAA2C;AACvC7D,0BAAM,CAAC5Q,EAAP,CAAUqpB,yBAAS,CAACU,kBAAV,CAA6BG,WAAvC,EAAoD;AAAEv0B,UAAM,EAAE2F,MAAV;AAAkBmZ,UAAM,EAANA;AAAlB,GAApD,EAAgF,gBAAsB;AAAA,QAAnBmQ,MAAmB,QAAnBA,MAAmB;AAAA,QAAX5L,IAAW,QAAXA,IAAW;;AAElG,QAAI4L,MAAM,KAAKnQ,MAAf,EAAuB;AACnB,YAAM,IAAInc,KAAJ,aAAqBmc,MAArB,+BAAuDmQ,MAAvD,CAAN;AACH;;AAED,QAAI,CAAC5L,IAAI,CAACjjB,IAAV,EAAgB;AACZ,YAAM,IAAIuC,KAAJ,qDAAN;AACH;;AAED,QAAI,CAAC0gB,IAAI,CAAC0W,WAAV,EAAuB;AACnB,YAAM,IAAIp3B,KAAJ,4DAAN;AACH;;AAED,QAAI,CAACsY,wBAAM,CAAC63B,kBAAP,CAA0BzvB,IAAI,CAACjjB,IAA/B,CAAL,EAA2C;AACvC,YAAM,IAAIuC,KAAJ,uBAA+B0gB,IAAI,CAACjjB,IAApC,uDAAN;AACH;;AAED,QAAI,CAAC6a,wBAAM,CAAC63B,kBAAP,CAA0BzvB,IAAI,CAACjjB,IAA/B,EAAqC0e,MAA1C,EAAkD;AAC9C,YAAM,IAAInc,KAAJ,oDAA4D0gB,IAAI,CAACjjB,IAAjE,CAAN;AACH;;AAED,QAAI6a,wBAAM,CAAC63B,kBAAP,CAA0BzvB,IAAI,CAACjjB,IAA/B,EAAqC0e,MAArC,KAAgDmQ,MAApD,EAA4D;AACxD,YAAM,IAAItsB,KAAJ,qBAA6BssB,MAA7B,mDAAmFhU,wBAAM,CAAC63B,kBAAP,CAA0BzvB,IAAI,CAACjjB,IAA/B,EAAqC0e,MAAxH,CAAN;AACH;;AAEDqzB,6BAAyB,CAACl3B,wBAAM,CAAC63B,kBAAP,CAA0BzvB,IAAI,CAACjjB,IAA/B,EAAqCoN,GAAtC,EAA2CsR,MAA3C,EAAmDuE,IAAI,CAAC0W,WAAxD,CAAzB;AAEA,WAAO;AACHA,iBADG,uBACS7vB,OADT,EACkB;AAEjB,YAAI,CAAClK,MAAD,IAAWA,MAAM,CAACusB,MAAtB,EAA8B;AAC1B;AACH;;AAED,YAAIymB,UAAU,GAAG/3B,wBAAM,CAAC63B,kBAAP,CAA0BzvB,IAAI,CAACjjB,IAA/B,CAAjB;;AAEA,YAAI,CAAC4yC,UAAL,EAAiB;AACb;AACH;;AAED,YAAI;AACA/3B,kCAAM,CAACye,cAAP,CAAsB;AAClBrW,gBAAI,EAAInZ,OADU;AAElB+kB,kBAAM,EAAE+jB,UAAU,CAACl0B,MAFD;AAGlBnZ,kBAAM,EAAEqtC,UAAU,CAACxlC;AAHD,WAAtB;AAKH,SAND,CAME,OAAOjN,GAAP,EAAY;AACVuB,mDAAY,CAACY,MAAb,CAAoBnC,GAApB;AACH;AACJ;AAtBE,KAAP;AAwBH,GApDD;AAqDH;;AAED,SAAS0yC,eAAT,CAAyB7yC,IAAzB,EAAwC+M,GAAxC,EAA0E;AAEtE,MAAI0C,MAAM,GAAGrD,QAAQ,CAACsC,aAAT,UAAb;AAEAe,QAAM,CAACX,YAAP,SAA4B9O,IAA5B;AACAyP,QAAM,CAACX,YAAP,OAA4B9O,IAA5B;AAEAyP,QAAM,CAACX,YAAP;AACAW,QAAM,CAACX,YAAP;AACAW,QAAM,CAACX,YAAP;AACAW,QAAM,CAACX,YAAP;AACAW,QAAM,CAACX,YAAP;AAEAW,QAAM,CAACX,YAAP;AACAW,QAAM,CAACX,YAAP;AACAW,QAAM,CAACX,YAAP;AACAW,QAAM,CAACX,YAAP;AAEAW,QAAM,CAACoH,GAAP,GAAa9J,GAAb;AAEA,SAAO0C,MAAP;AACH;;AAEM,SAASqjC,SAAT,CAAmB/lC,GAAnB,EAAiC2R,MAAjC,EAA4D;AAC/DA,QAAM,GAAGA,MAAM,IAAIuQ,uCAAgB,CAACliB,GAAD,CAAnC;AACA,SAAOI,OAAO,CAAC0N,wBAAM,CAAC23B,OAAP,CAAe9zB,MAAf,CAAD,CAAd;AACH;AAEM,SAASq0B,UAAT,CAAoBhmC,GAApB,EAAkC2R,MAAlC,EAAyF;AAE5FA,QAAM,GAAGA,MAAM,IAAIuQ,uCAAgB,CAACliB,GAAD,CAAnC;;AAEA,MAAI8N,wBAAM,CAAC23B,OAAP,CAAe9zB,MAAf,CAAJ,EAA4B;AACxB,WAAO7D,wBAAM,CAAC23B,OAAP,CAAe9zB,MAAf,CAAP;AACH;;AAED7D,0BAAM,CAAC23B,OAAP,CAAe9zB,MAAf,IAAyBhd,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAE5C,QAAImnB,gCAAS,OAAO/L,MAApB,EAA4B;AACxB,YAAM,IAAInc,KAAJ,gEAAwEmc,MAAxE,CAAN;AACH;;AAED,QAAI1e,IAAI,GAAIyxC,aAAa,CAAC/yB,MAAD,CAAzB;AACA,QAAIvP,KAAK,GAAGsd,qCAAc,CAAC7sB,MAAD,EAASI,IAAT,CAA1B;;AAEA,QAAImP,KAAJ,EAAW;AACP,YAAM,IAAI5M,KAAJ,sBAA8BvC,IAA9B,6BAAN;AACH;;AAED,QAAIyP,MAAM,GAAGojC,eAAe,CAAC7yC,IAAD,EAAO+M,GAAP,CAA5B;AACA8N,4BAAM,CAAC43B,YAAP,CAAoB/zB,MAApB,IAA8BjP,MAA9B;AAEA,WAAOkiC,iBAAiB,CAACzxC,IAAlB,CAAuB,UAAAinC,IAAI,EAAI;AAElCA,UAAI,CAAC57B,WAAL,CAAiBkE,MAAjB;AAEA,UAAI+uB,MAAM,GAAG/uB,MAAM,CAACV,aAApB;AAEA4jC,uBAAiB,CAACnU,MAAD,EAAS9f,MAAT,CAAjB;AAEA,aAAO,IAAIhd,yCAAJ,CAAiB,UAACL,OAAD,EAAUiB,MAAV,EAAqB;AAEzCmN,cAAM,CAAC8H,MAAP,GAAgBlW,OAAhB;AACAoO,cAAM,CAACgI,OAAP,GAAiBnV,MAAjB;AAEH,OALM,EAKJpC,IALI,CAKC,YAAM;AAEV,eAAOg9B,yCAAkB,CAACsB,MAAD,EAASrkB,sBAAM,CAACib,cAAhB,cAA2CroB,GAA3C,CAAzB;AAEH,OATM,EASJ7M,IATI,CASC,YAAM;AAEV,eAAOs+B,MAAP;AACH,OAZM,CAAP;AAaH,KArBM,CAAP;AAsBH,GAtCwB,CAAzB;AAwCA,SAAO3jB,wBAAM,CAAC23B,OAAP,CAAe9zB,MAAf,CAAP;AACH;AAED,IAAIs0B,UAAU,GAAGpzC,MAAM,CAACyN,IAAxB;;AAEAzN,MAAM,CAACyN,IAAP,GAAc,SAAS4lC,iBAAT,CAA2BlmC,GAA3B,EAAyC/M,IAAzC,EAAwDgN,OAAxD,EAA0EkmC,IAA1E,EAAgG;AAE1G,MAAIx0B,MAAM,GAAG3R,GAAb;;AAEA,MAAIA,GAAG,IAAIA,GAAG,CAACvM,OAAJ,CAAY8yB,yBAAS,CAACsB,aAAtB,MAAyC,CAApD,EAAuD;AAAA,qBACjC7nB,GAAG,CAACnG,KAAJ,CAAU,GAAV,CADiC;;AACjD8X,UADiD;AACzC3R,OADyC;AAEtD;;AAED,MAAI2R,MAAJ,EAAY;AACRA,UAAM,GAAGuQ,uCAAgB,CAACvQ,MAAD,CAAzB;AACH;;AAED,MAAItR,GAAG,GAAG4lC,UAAU,CAAC/yC,IAAX,CAAgB,IAAhB,EAAsB8M,GAAtB,EAA2B/M,IAA3B,EAAiCgN,OAAjC,EAA0CkmC,IAA1C,CAAV;;AAEA,MAAI,CAAC9lC,GAAL,EAAU;AACN,WAAOA,GAAP;AACH;;AAED,MAAIL,GAAJ,EAAS;AACL6kC,wBAAoB,CAACxkC,GAAD,CAApB;AACH;;AApByG,oCAsBtF3K,MAAM,CAACyB,IAAP,CAAY2W,wBAAM,CAAC63B,kBAAnB,CAtBsF,qCAsB9C;AAAvD,QAAIS,OAAO,qBAAX;;AACD,QAAI5lC,qCAAc,CAACsN,wBAAM,CAAC63B,kBAAP,CAA0BS,OAA1B,EAAmC/lC,GAApC,CAAlB,EAA4D;AACxD,aAAOyN,wBAAM,CAAC63B,kBAAP,CAA0BS,OAA1B,CAAP;AACH;AACJ;;AAED,MAAInzC,IAAI,IAAIoN,GAAZ,EAAiB;AACb,QAAIgmC,UAAU,GAAGv4B,wBAAM,CAACujB,iBAAP,CAAyB53B,GAAzB,CAA6B4G,GAA7B,KACAyN,wBAAM,CAAC63B,kBAAP,CAA0B1yC,IAA1B,CADA,IACmC,EADpD;AAGAozC,cAAU,CAACpzC,IAAX,GAAkBozC,UAAU,CAACpzC,IAAX,IAAmBA,IAArC;AACAozC,cAAU,CAAChmC,GAAX,GAAiBgmC,UAAU,CAAChmC,GAAX,IAAkBA,GAAnC;AACAgmC,cAAU,CAAC10B,MAAX,GAAoB00B,UAAU,CAAC10B,MAAX,IAAqBA,MAAzC;AAEA7D,4BAAM,CAACujB,iBAAP,CAAyBn2B,GAAzB,CAA6BmF,GAA7B,EAAkCgmC,UAAlC;AACAv4B,4BAAM,CAAC63B,kBAAP,CAA0B1yC,IAA1B,IAAkCozC,UAAlC;AACH;;AAED,SAAOhmC,GAAP;AACH,CAzCD;;AA2CO,SAASimC,OAAT,CAAiBjmC,GAAjB,EAA8CL,GAA9C,EAA4D;AAE/D,MAAIqmC,UAAU,GAAGv4B,wBAAM,CAACujB,iBAAP,CAAyB53B,GAAzB,CAA6B4G,GAA7B,CAAjB;;AAEA,MAAIgmC,UAAJ,EAAgB;AACZA,cAAU,CAAC10B,MAAX,GAAoBuQ,uCAAgB,CAACliB,GAAD,CAApC;AACA6kC,wBAAoB,CAACxkC,GAAD,CAApB;AACH;AACJ;AAEM,SAASkmC,cAAT,GAA0B;AAAA,oCACV7wC,MAAM,CAACyB,IAAP,CAAY2W,wBAAM,CAAC43B,YAAnB,CADU,qCACwB;AAAhD,QAAI/zB,MAAM,qBAAV;AACD,QAAIvP,KAAK,GAAG0L,wBAAM,CAAC43B,YAAP,CAAoB/zB,MAApB,CAAZ;;AACA,QAAIvP,KAAK,CAAC6G,UAAV,EAAsB;AAClB7G,WAAK,CAAC6G,UAAN,CAAiB7H,WAAjB,CAA6BgB,KAA7B;AACH;AACJ;;AACD0L,0BAAM,CAAC43B,YAAP,GAAsB,EAAtB;AACA53B,0BAAM,CAAC23B,OAAP,GAAiB,EAAjB;AACH,C;;ACvND;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;;;;;;;;ACJA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAGA;AAEA;AAEA;AACA;;AAEA,SAAS5lC,eAAT,GAAqC;AACjC,SAAOO,OAAO,CAACf,QAAQ,CAAC+6B,IAAV,CAAP,IAA0B/6B,QAAQ,CAACK,UAAT,KAAwB,UAAzD;AACH;;AAEM,IAAMD,aAAkC,GAAG,IAAI9K,sEAAJ,CAAiB,UAAAL,OAAO,EAAI;AAE1E,MAAIuL,eAAe,EAAnB,EAAuB;AACnB,WAAOvL,OAAO,EAAd;AACH;;AAED,MAAM2F,QAAQ,GAAG0F,WAAW,CAAC,YAAM;AAC/B,QAAIE,eAAe,EAAnB,EAAuB;AACnBD,mBAAa,CAAC3F,QAAD,CAAb;AACA,aAAO3F,OAAO,EAAd;AACH;AACJ,GAL2B,EAKzB,EALyB,CAA5B;AAMH,CAZiD,CAA3C;AAcA,IAAMkyC,YAAwC,GAAG/mC,aAAa,CAACtM,IAAd,CAAmB,YAAM;AAC7E,MAAIkM,QAAQ,CAAC+6B,IAAb,EAAmB;AACf,WAAO/6B,QAAQ,CAAC+6B,IAAhB;AACH;;AAED,QAAM,IAAI5kC,KAAJ,CAAU,8CAAV,CAAN;AACH,CANuD,CAAjD;AASA,SAASixC,UAAT,CAAoB38B,GAApB,EAAkCtT,OAAlC,EAAwDkwC,KAAxD,EAAkG;AAAA,MAAhElwC,OAAgE;AAAhEA,WAAgE,GAA7C,CAA6C;AAAA;;AAAA,MAA1CkwC,KAA0C;AAA1CA,SAA0C,GAAzB,EAAyB;AAAA;;AACrG,SAAO,IAAI/xC,sEAAJ,CAAiB,UAACL,OAAD,EAAUiB,MAAV,EAAqB;AACzC,QAAM2V,MAAM,GAAG7L,QAAQ,CAACsC,aAAT,CAAuB,QAAvB,CAAf;AAEAuJ,UAAM,CAAC5I,gBAAP,CAAwB,MAAxB,EAAgC,YAAM;AAClChO,aAAO;AACV,KAFD,EAHyC,CAOzC;;AACA4W,UAAM,CAACsL,kBAAP,GAA4B,SAASmwB,wBAAT,GAAoC;AAC5D,UAAI,KAAKjnC,UAAL,KAAoB,UAApB,IAAkC,KAAKA,UAAL,KAAoB,QAA1D,EAAoE;AAChEpL,eAAO;AACV;AACJ,KAJD;;AAMA,QAAMsyC,eAAe,GAAG,IAAIpxC,KAAJ,CAAU,sBAAV,CAAxB;AAEA0V,UAAM,CAAC5I,gBAAP,CAAwB,OAAxB,EAAiC,YAAM;AACnC,aAAO/M,MAAM,CAACqxC,eAAD,CAAb;AACH,KAFD;;AAIA,QAAIpwC,OAAJ,EAAa;AACT7C,gBAAU,CAAC,YAAM;AACb,eAAO4B,MAAM,CAAC,IAAIC,KAAJ,CAAU,0BAAV,CAAD,CAAb;AACH,OAFS,EAEPgB,OAFO,CAAV;AAGH;;AAxBwC,sCA0BtBd,MAAM,CAACyB,IAAP,CAAYuvC,KAAZ,CA1BsB,qCA0BF;AAAlC,UAAMG,IAAI,qBAAV;AACD37B,YAAM,CAACnJ,YAAP,CAAoB8kC,IAApB,EAA0BH,KAAK,CAACG,IAAD,CAA/B;AACH;;AAED37B,UAAM,CAACnJ,YAAP,CAAoB,KAApB,EAA2B+H,GAA3B;AAEA,QAAMg9B,IAAI,GAAGznC,QAAQ,CAAC87B,oBAAT,CAA8B,MAA9B,EAAsC,CAAtC,CAAb;AAEA2L,QAAI,CAACtoC,WAAL,CAAiB0M,MAAjB;AACH,GAnCM,CAAP;AAoCH;AAGM,SAAS67B,UAAT,CAAoBC,KAApB,EAA6C;AAEhD,MAAM5xC,MAAM,GAAGM,MAAM,CAACC,SAAP,CAAiB3C,QAAjB,CAA0BE,IAA1B,CAA+B8zC,KAA/B,CAAf;;AAEA,MAAI5xC,MAAM,KAAK,yBAAX,IAAwCA,MAAM,KAAK,mBAAvD,EAA4E;AACxE,WAAO,IAAP;AACH;;AAED,SAAO,KAAP;AACH;AAEM,SAASsJ,SAAT,CAAmB/L,IAAnB,EAA2C;AAC9C,SAAOA,IAAI,YAAYs0C,WAAvB;AACH;AAEM,SAASznC,UAAT,CAAoB7M,IAApB,EAAiD;AAEpD,MAAI,CAACA,IAAL,EAAW;AACP;AACH;;AAED,MAAIA,IAAI,YAAYs0C,WAApB,EAAiC;AAC7B,WAAOt0C,IAAP;AACH;;AAED,MAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;AAE1B,QAAI0M,QAAQ,CAACE,aAAb,EAA4B;AACxB,UAAMnK,MAAM,GAAGiK,QAAQ,CAACE,aAAT,CAAuB5M,IAAvB,CAAf;;AAEA,UAAIyC,MAAJ,EAAY;AACR,eAAOA,MAAP;AACH;AACJ;;AAED,WAAOiK,QAAQ,CAACC,cAAT,CAAwB3M,IAAxB,CAAP;AACH;AACJ;AAEM,SAASu0C,WAAT,CAAqBloB,UAArB,EAAoK;AAEvK,MAAI,CAACA,UAAL,EAAiB;AACb,WAAO,EAAP;AACH;;AAED,MAAIA,UAAU,YAAYioB,WAAtB,IAAqC,OAAOjoB,UAAP,KAAsB,QAA/D,EAAyE;AACrE,QAAMrgB,OAAO,GAAGa,UAAU,CAACwf,UAAD,CAA1B;;AACA,QAAIrgB,OAAJ,EAAa;AACT,aAAO,CAAEA,OAAF,CAAP;AACH;;AACD,WAAO,EAAP;AACH;;AAED,MAAIvE,KAAK,CAACC,OAAN,CAAc2kB,UAAd,KAA6BA,UAAU,YAAYmoB,QAAnD,IAA+DnoB,UAAU,YAAYooB,cAAzF,EAAyG;AACrG,QAAMhyC,MAAM,GAAG,EAAf;;AAEA,SAAK,IAAIY,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgpB,UAAU,CAAClrB,MAA/B,EAAuCkC,CAAC,EAAxC,EAA4C;AACxC,UAAMiJ,EAAE,GAAGO,UAAU,CAACwf,UAAU,CAAChpB,CAAD,CAAX,CAArB;;AACA,UAAIiJ,EAAJ,EAAQ;AACJ7J,cAAM,CAAC1B,IAAP,CAAYuL,EAAZ;AACH;AACJ;;AAED,WAAO7J,MAAP;AACH;;AAED,SAAO,EAAP;AACH;AAEM,SAASiyC,eAAT,CAAyB9vC,MAAzB,EAAmE;AACtE,SAAOkI,aAAa,CAACtM,IAAd,CAAmBoE,MAAnB,CAAP;AACH;AAEM,IAAM4L,UAAU,GAAGrF,6DAAO,CAAC,UAACsF,WAAD,EAAmC;AAEjE,MAAMlD,MAAM,GAAG,EAAf;;AAEA,MAAI,CAACkD,WAAL,EAAkB;AACd,WAAOlD,MAAP;AACH;;AAED,MAAIkD,WAAW,CAAC3P,OAAZ,CAAoB,GAApB,MAA6B,CAAC,CAAlC,EAAqC;AACjC,WAAOyM,MAAP;AACH;;AAVgE,0CAYhDkD,WAAW,CAACvJ,KAAZ,CAAkB,GAAlB,CAZgD,2CAYxB;AAApC,QAAIwJ,IAAI,2BAAR;AACDA,QAAI,GAAGA,IAAI,CAACxJ,KAAL,CAAW,GAAX,CAAP;;AAEA,QAAIwJ,IAAI,CAAC,CAAD,CAAJ,IAAWA,IAAI,CAAC,CAAD,CAAnB,EAAwB;AACpBnD,YAAM,CAACoD,kBAAkB,CAACD,IAAI,CAAC,CAAD,CAAL,CAAnB,CAAN,GAAsCC,kBAAkB,CAACD,IAAI,CAAC,CAAD,CAAL,CAAxD;AACH;AACJ;;AAED,SAAOnD,MAAP;AACH,CArBgC,CAA1B;AAwBA,SAASqD,aAAT,CAAuBtQ,IAAvB,EAA+C;AAClD,SAAOkQ,UAAU,CAACtQ,MAAM,CAACgO,QAAP,CAAgB2C,MAAhB,CAAuBhK,KAAvB,CAA6B,CAA7B,CAAD,CAAV,CAA4CvG,IAA5C,CAAP;AACH;AAEM,SAASunC,mBAAT,CAA6Bx6B,GAA7B,EAAqD;AAExD,MAAIA,GAAG,CAACvM,OAAJ,CAAY,GAAZ,MAAqB,CAAC,CAA1B,EAA6B;AACzB,WAAO,IAAP;AACH;;AAED,MAAIuM,GAAG,CAACvM,OAAJ,CAAY,GAAZ,MAAqB,CAAzB,EAA4B;AACxB,WAAO,KAAP;AACH;;AAED,MAAIuM,GAAG,CAACnG,KAAJ,CAAU,GAAV,EAAe,CAAf,MAAsBhH,MAAM,CAACgO,QAAP,CAAgB2c,IAAhB,CAAqB3jB,KAArB,CAA2B,GAA3B,EAAgC,CAAhC,CAA1B,EAA8D;AAC1D,WAAO,KAAP;AACH;;AAED,SAAO,IAAP;AACH;AAEM,SAASgK,SAAT,CAAmB7D,GAAnB,EAAiCE,MAAjC,EAAqF;AAAA,MAApDA,MAAoD;AAApDA,UAAoD,GAAb,EAAa;AAAA;;AAExF,MAAMonC,OAAO,GAAGtnC,GAAG,CAACvM,OAAJ,CAAY,GAAZ,IAAmB,CAAnC;;AAFwF,mBAI9DuM,GAAG,CAACnG,KAAJ,CAAU,GAAV,CAJ8D;AAAA,MAIlF0tC,SAJkF;AAAA,MAIvErwC,IAJuE;;AAMxF,MAAIA,IAAI,IAAI,CAACqwC,SAAb,EAAwB;AAAA,eACE,OAAOrwC,IAAP,EAAgB,EAAhB,CADF;AAClBqwC,aADkB;AACPrwC,QADO;AAEvB;;AARuF,yBAU3CqwC,SAAS,CAAC1tC,KAAV,CAAgB,GAAhB,CAV2C;AAAA,MAUhFkK,WAVgF;AAAA,MAUnEyjC,mBAVmE;;AAYxF,MAAIA,mBAAJ,EAAyB;AACrB,QAAM7jC,aAAa,GAAGR,UAAU,CAACqkC,mBAAD,CAAhC;;AAEA,SAAK,IAAMnwC,IAAX,IAAkBsM,aAAlB,EAAiC;AAC7B,UAAI,CAACzD,MAAM,CAACzH,cAAP,CAAsBpB,IAAtB,CAAL,EAAiC;AAC7B6I,cAAM,CAAC7I,IAAD,CAAN,GAAcsM,aAAa,CAACtM,IAAD,CAA3B;AACH;AACJ;AACJ;;AAED,MAAMowC,cAAc,GAAG/xC,MAAM,CAACyB,IAAP,CAAY+I,MAAZ,EAAoBC,MAApB,CAA2B,UAAA9I,GAAG;AAAA,WAAIA,GAAG,IAAI6I,MAAM,CAAC7I,GAAD,CAAjB;AAAA,GAA9B,EAAsDyzB,IAAtD,GAA6D1zB,GAA7D,CAAiE,UAAAC,GAAG,EAAI;AAC3F,WAAW++B,kBAAkB,CAAC/+B,GAAD,CAA7B,SAAwC++B,kBAAkB,CAACl2B,MAAM,CAAC7I,GAAD,CAAP,CAA1D;AACH,GAFsB,EAEpBsE,IAFoB,CAEf,GAFe,CAAvB;AAIA,MAAI+rC,MAAM,GAAG3jC,WAAb;;AAEA,MAAI0jC,cAAJ,EAAoB;AAChBC,UAAM,GAAOA,MAAP,SAAmBD,cAAzB;AACH;;AAED,MAAIH,OAAJ,EAAa;AACTI,UAAM,GAAOA,MAAP,UAAmBxwC,IAAI,IAAI,EAA3B,CAAN;AACH;;AAED,SAAOwwC,MAAP;AACH;AAEM,SAASjN,QAAT,CAAkBp6B,GAAlB,EAAwDL,GAAxD,EAA2F;AAAA,MAAzEK,GAAyE;AAAzEA,OAAyE,GAA3CxN,MAA2C;AAAA;;AAC9F,SAAO,IAAI8B,sEAAJ,CAAiB,UAAAL,OAAO,EAAI;AAE/B+Y,6EAAI,aAAa;AAAErN,SAAG,EAAHA;AAAF,KAAb,CAAJ;AAEArM,cAAU,CAAC,YAAM;AACb0M,SAAG,CAACQ,QAAJ,GAAeb,GAAf;;AACA,UAAI,CAACw6B,mBAAmB,CAACx6B,GAAD,CAAxB,EAA+B;AAC3B1L,eAAO;AACV;AACJ,KALS,EAKP,CALO,CAAV;AAMH,GAVM,CAAP;AAWH;AAEM,SAASomC,eAAT,GAAqC;AACxC,MAAMthB,IAAI,GAAG/Z,QAAQ,CAACE,aAAT,CAAuB,qBAAvB,CAAb;;AAEA,MAAI40B,gEAAQ,MAAMthC,MAAM,CAAC8nC,MAAP,CAAcl2B,KAAd,GAAsB,GAApC,IAA2C,CAAC2U,IAAhD,EAAsD;AAClD,WAAO,KAAP;AACH;;AAED,SAAO,IAAP;AACH;AAEM,SAASqiB,iBAAT,GAAsD;AACzD,MAAMC,GAAG,GAAG7oC,MAAM,CAACiQ,SAAnB;AAEA,MAAMoL,OAAO,GAAGwtB,GAAG,CAACC,SAAJ,GACVvhC,KAAK,CAACzE,SAAN,CAAgB6D,KAAhB,CAAsB9B,KAAtB,CAA4BgkC,GAAG,CAACC,SAAhC,CADU,GAEV,EAFN;;AAIA,MAAID,GAAG,CAACE,QAAR,EAAkB;AACd1tB,WAAO,CAACxa,IAAR,CAAagoC,GAAG,CAACE,QAAjB;AACH;;AAED,MAAIF,GAAG,CAACG,YAAR,EAAsB;AAClB3tB,WAAO,CAACxa,IAAR,CAAagoC,GAAG,CAACG,YAAjB;AACH;;AAED,SAAO3tB,OAAP;AACH;AAEM,SAASy5B,eAAT,CAAyBh5B,MAAzB,EAAwD;AAE3D,MAAIA,MAAM,IAAIA,MAAM,CAACvS,KAAP,CAAa,wBAAb,CAAd,EAAsD;AAAA,wBACxBuS,MAAM,CAAC9U,KAAP,CAAa,MAAb,CADwB;AAAA,QAC1CgV,IAD0C;AAAA,QACpCD,OADoC;;AAElD,QAAInc,yDAAM,CAACmc,OAAD,CAAN,IAAmBnc,yDAAM,CAACmc,OAAD,CAAN,CAAgBnb,OAAhB,CAAwBob,IAAxB,MAAkC,CAAC,CAA1D,EAA6D;AACzD,aAAO;AAAED,eAAO,EAAPA,OAAF;AAAWC,YAAI,EAAJA;AAAX,OAAP;AACH;AACJ;AACJ;AAEM,SAAS+4B,aAAT,CAAuB/4B,IAAvB,EAAoD;AAEvD,MAAIA,IAAI,IAAIA,IAAI,CAACzS,KAAL,CAAW,YAAX,CAAZ,EAAsC;AAClC,QAAI9J,0EAAuB,CAACuc,IAAD,CAA3B,EAAmC;AAC/B,aAAO;AAAED,eAAO,EAAEtc,0EAAuB,CAACuc,IAAD,CAAlC;AAA0CA,YAAI,EAAJA;AAA1C,OAAP;AACH;AACJ;AACJ;AAEM,IAAMg5B,gBAAgB,GAAG/pC,6DAAO,CAAC,YAAmB;AAEvD,MAAMoQ,OAAO,GAAGutB,iBAAiB,EAAjC;;AAFuD,0BAIlCvtB,OAJkC,gBAIzB;AAAzB,QAAMS,MAAM,GAAIT,OAAJ,KAAZ;AACD,QAAI45B,GAAG,GAAGH,eAAe,CAACh5B,MAAD,CAAzB;;AACA,QAAIm5B,GAAJ,EAAS;AACLz6B,+EAAI,CAAC,4BAAD,CAAJ;AACA,aAAOy6B,GAAP;AACH;;AAEDA,OAAG,GAAGF,aAAa,CAACj5B,MAAD,CAAnB;;AACA,QAAIm5B,GAAJ,EAAS;AACLz6B,+EAAI,CAAC,4BAAD,CAAJ;AACA,aAAOy6B,GAAP;AACH;AACJ;;AAED,SAAO36B,sDAAM,CAACyI,aAAd;AACH,CAnBsC,CAAhC;AAqBA,SAASglB,gBAAT,CAA0B37B,EAA1B,EAAsD;AACzD,SAAOmB,OAAO,CAACnB,EAAE,CAAC2F,WAAH,IAAkB3F,EAAE,CAAC4F,YAArB,IAAqC5F,EAAE,CAAC47B,cAAH,GAAoB/mC,MAA1D,CAAd;AACH;AAEM,IAAM8lB,iBAAiB,GAAG9b,6DAAO,CAAC,YAAgB;AACrD;AACA,SAAOsC,OAAO,CACVvN,MAAM,CAACgnB,WAAP,IACAA,WAAW,CAACJ,GADZ,IAEAI,WAAW,CAACC,MAFZ,IAGAD,WAAW,CAACC,MAAZ,CAAmBC,UAHnB,IAIAF,WAAW,CAACC,MAAZ,CAAmBE,eAJnB,IAKClhB,IAAI,CAAC2M,GAAL,CAASoU,WAAW,CAACJ,GAAZ,KAAoBD,IAAI,CAACC,GAAL,EAA7B,IAA2C,IAL5C,IAMCI,WAAW,CAACJ,GAAZ,MAAqBI,WAAW,CAACC,MAAZ,CAAmBC,UAAnB,GAAgCF,WAAW,CAACC,MAAZ,CAAmBE,eAAxE,CAAD,GAA6F,CAPnF,CAAd;AASA;AACH,CAZuC,CAAjC;AAcA,SAAS8gB,iBAAT,GAAqD;AACxD,SAAOr7B,aAAa,CAACtM,IAAd,CAAmB,YAAM;AAE5B,QAAI,CAACymB,iBAAiB,EAAtB,EAA0B;AACtB;AACH;;AAED,QAAME,MAAM,GAAGjnB,MAAM,CAACgnB,WAAP,CAAmBC,MAAlC,CAN4B,CAMc;;AAE1C,QAAIA,MAAM,CAACC,UAAP,IAAqBD,MAAM,CAACihB,cAAhC,EAAgD;AAC5C,aAAOjhB,MAAM,CAACihB,cAAP,GAAwBjhB,MAAM,CAACC,UAAtC;AACH;AACJ,GAXM,CAAP;AAYH;AAEM,SAASujB,mBAAT,CAA6Bt9B,GAA7B,EAAqD;AAExD,MAAI,CAAC4Z,iBAAiB,EAAtB,EAA0B;AACtB;AACH;;AAED,MAAI,CAAC/mB,MAAM,CAACgnB,WAAR,IAAuB,OAAOhnB,MAAM,CAACgnB,WAAP,CAAmBuB,UAA1B,KAAyC,UAApE,EAAgF;AAAE;AAC9E;AACH;;AAED,MAAMmiB,OAAO,GAAG1qC,MAAM,CAACgnB,WAAP,CAAmBuB,UAAnB,EAAhB,CAVwD,CAUP;;AAEjD,OAAK,IAAIplB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGunC,OAAO,CAACzpC,MAA5B,EAAoCkC,CAAC,EAArC,EAAyC;AACrC,QAAMwnC,KAAK,GAAGD,OAAO,CAACvnC,CAAD,CAArB;;AAEA,QAAIwnC,KAAK,IAAIA,KAAK,CAACvqC,IAAN,KAAe+M,GAAxB,IAA+Bw9B,KAAK,CAACphB,QAArC,IAAiDohB,KAAK,CAACphB,QAAN,IAAkB,CAAnE,IAAwEohB,KAAK,CAACphB,QAAN,IAAkB,KAA9F,EAAqG;AACjG,aAAOtjB,IAAI,CAACC,KAAL,CAAWykC,KAAK,CAACphB,QAAjB,CAAP;AACH;AACJ;AACJ;AAEM,SAAS4e,UAAT,CAAoBt6B,IAApB,EAAiD;AAAA,MAA7BA,IAA6B;AAA7BA,QAA6B,GAAb,EAAa;AAAA;;AACpD,SAAOA,IAAI,CAAC1N,QAAL,GACF+E,OADE,CACM,IADN,EACY,OADZ,EAEFA,OAFE,CAEM,IAFN,EAEY,MAFZ,EAGFA,OAHE,CAGM,IAHN,EAGY,MAHZ,EAIFA,OAJE,CAIM,IAJN,EAIY,QAJZ,EAKFA,OALE,CAKM,IALN,EAKY,OALZ,EAMFA,OANE,CAMM,KANN,EAMa,QANb,CAAP;AAOH,C;;;;;;;AC3XD;AAAA;AAAA;AAAO,SAASwI,cAAT,CAAwBxD,OAAxB,EAA0C;AAC7C,OAAKA,OAAL,GAAeA,OAAf;AACH;AAEDwD,cAAc,CAAC5K,SAAf,GAA2BD,MAAM,CAAComC,MAAP,CAActmC,KAAK,CAACG,SAApB,CAA3B;AAEO,SAASoyC,gBAAT,CAA0BhrC,OAA1B,EAA4C;AAC/C,OAAKA,OAAL,GAAeA,OAAf;AACH;AAEDgrC,gBAAgB,CAACpyC,SAAjB,GAA6BD,MAAM,CAAComC,MAAP,CAActmC,KAAK,CAACG,SAApB,CAA7B;AAEO,SAASqyC,WAAT,CAAqBjrC,OAArB,EAAuC;AAC1C,OAAKA,OAAL,GAAeA,OAAf;AACH;AAEDirC,WAAW,CAACryC,SAAZ,GAAwBD,MAAM,CAAComC,MAAP,CAActmC,KAAK,CAACG,SAApB,CAAxB,C;;;;;;;AChBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAEA;AAEO,SAASsyC,WAAT,GAAiC;AAEpC,MAAI,CAACrS,sEAAc,EAAnB,EAAuB;AACnB,WAAO,IAAP;AACH;;AAED,MAAM0O,YAAY,GAAGnnB,gFAAS,CAACtqB,MAAD,CAA9B;;AACA,MAAIyxC,YAAY,IAAI32B,mFAAY,CAAC22B,YAAD,CAAhC,EAAgD;AAC5C,WAAO,IAAP;AACH;;AAED,MAAM4D,qBAAqB,GAAGr1C,MAAM,CAACs1C,MAAP,IAAiBt1C,MAAM,CAACs1C,MAAP,CAAcC,wBAAd,EAA/C;;AACA,MAAIF,qBAAqB,IAAIv6B,mFAAY,CAACu6B,qBAAD,CAAzC,EAAkE;AAC9D,WAAO,IAAP;AACH;;AAED,MAAIl6B,KAAJ,EAAc,EAEb;;AAED,SAAO,KAAP;AACH;AAGM,SAASm1B,cAAT,GAAoC;AACvC,SAAO/iC,OAAO,CAAC,CAAIvN,MAAM,CAACgO,QAAP,CAAgBwQ,QAApB,UAAmCxe,MAAM,CAACgO,QAAP,CAAgBoN,IAAnD,EAA2D7R,KAA3D,CAAiE+Q,sDAAM,CAACkB,mBAAxE,CAAD,CAAP,IAAyGxb,MAAM,CAAC8qB,UAAP,KAAsB,uBAAtI;AACH,C;;;;;;;AChCD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACLA;AACA;AAEA;AAEA,IAAM0qB,UAAU,GAAGl7B,sDAAM,CAACiI,SAA1B;AACA,IAAMkzB,QAAQ,GAAG,YAAjB;AAEO,SAASC,MAAT,CAAgBvlC,KAAhB,EAAgCsK,OAAhC,EAAuD;AAAA,MAAvBA,OAAuB;AAAvBA,WAAuB,GAAJ,EAAI;AAAA;;AAC1D,MAAI;AAEAA,WAAO,CAACtK,KAAR,aAAyBA,KAAzB;AACAsK,WAAO,CAACgB,OAAR,GAAkBC,SAAlB;AACAjB,WAAO,CAACW,IAAR,GAAepb,MAAM,CAACgO,QAAP,CAAgBoN,IAA/B;AACAX,WAAO,CAACvR,GAAR,GAAc0iC,qEAAY,EAA1B;AACAnxB,WAAO,CAACk7B,OAAR,GAAkBF,QAAlB;AAEA,QAAIxkC,KAAK,GAAG,EAAZ;;AAEA,SAAK,IAAMzM,GAAX,IAAkBiW,OAAlB,EAA2B;AACvB,UAAIA,OAAO,CAAC7U,cAAR,CAAuBpB,GAAvB,CAAJ,EAAiC;AAC7ByM,aAAK,CAACpQ,IAAN,CAAe0iC,kBAAkB,CAAC/+B,GAAD,CAAjC,SAA4C++B,kBAAkB,CAAC9oB,OAAO,CAACjW,GAAD,CAAR,CAA9D;AACH;AACJ;;AAEDyM,SAAK,GAAGA,KAAK,CAACnI,IAAN,CAAW,GAAX,CAAR;;AAEA,QAAI,IAAJ,EAAe;AACX,UAAM8sC,WAAW,GAAG,IAAI51C,MAAM,CAAC61C,KAAX,EAApB;AACAD,iBAAW,CAAC3+B,GAAZ,GAAsBu+B,UAAtB,SAAsCvkC,KAAtC;AACH;;AAEDnQ,cAAU,CAAC,YAAM;AACb,UAAIwZ,sDAAM,CAACF,QAAP,KAAoBzsB,4DAAS,CAACC,KAAlC,EAAyC;AACrC,YAAIoS,MAAM,CAAC8W,OAAP,IAAkB9W,MAAM,CAAC8W,OAAP,CAAeoP,GAArC,EAA0C;AACtClmB,gBAAM,CAAC8W,OAAP,CAAeoP,GAAf,CAAmB,GAAnB,EAAwB/V,KAAxB,EAA+BsK,OAA/B;AACH;AACJ;AACJ,KANS,EAMP,CANO,CAAV;AAQH,GA/BD,CA+BE,OAAOla,GAAP,EAAY,CACV;AACH;AACJ;;AAED,SAASu1C,kBAAT,CAA4B11C,IAA5B,EAAqD;AACjD,SAAOurC,wEAAe,CAAC,UAAA9vB,KAAK,EAAI;AAC5BA,SAAK,CAACkwB,aAAN,GAAsBlwB,KAAK,CAACkwB,aAAN,IAAuB,EAA7C;;AAEA,QAAIlwB,KAAK,CAACkwB,aAAN,CAAoBnrC,OAApB,CAA4BR,IAA5B,MAAsC,CAAC,CAA3C,EAA8C;AAC1Cyb,WAAK,CAACkwB,aAAN,CAAoBlrC,IAApB,CAAyBT,IAAzB;AACA,aAAO,IAAP;AACH;;AAED,WAAO,KAAP;AACH,GATqB,CAAtB;AAUH;;AAEM,SAAS6sC,UAAT,CAAoB7sC,IAApB,EAAmCqa,OAAnC,EAA0DrN,OAA1D,EAAwF;AAAA,MAArDqN,OAAqD;AAArDA,WAAqD,GAAlC,EAAkC;AAAA;;AAAA,MAA9BrN,OAA8B;AAA9BA,WAA8B,GAAX,EAAW;AAAA;;AAC3F,MAAI;AACA,QAAI2oC,cAAc,GAAG31C,IAArB;;AAEA,QAAIgN,OAAO,CAACqO,OAAZ,EAAqB;AACjB,UAAMA,OAAO,GAAGC,SAAA,CAAsCxW,OAAtC,CAA8C,UAA9C,EAA0D,GAA1D,CAAhB;;AACA6wC,oBAAc,GAAOt6B,OAAP,SAAoBs6B,cAAlC;AACH;;AAED,QAAI,CAACD,kBAAkB,CAACC,cAAD,CAAvB,EAAyC;AACrC;AACH;;AAED,WAAOL,MAAM,CAACK,cAAD,EAAiBt7B,OAAjB,CAAb;AAEH,GAdD,CAcE,OAAOla,GAAP,EAAY,CAEV;AACH;AACJ;AAGD,IAAMy1C,QAAQ,GAAG,yBAAjB;;AAEA,SAASC,YAAT,GAAiC;AAC7B,SAAO;AACHC,KAAC,mBAAsBx6B,SADpB;AAEHy6B,KAAC,EAAMxvB,IAAI,CAACC,GAAL,EAFJ;AAGHvhB,KAAC,EAAM,IAAIshB,IAAJ,GAAWyvB,iBAAX,EAHJ;AAIHC,QAAI,EAAE,YAJH;AAKHC,QAAI,EAAE,iBALH;AAMHC,QAAI,EAAE,oCANH;AAOHC,QAAI,EAAE,oCAPH;AAQHC,QAAI,EAAE,gBARH;AASHC,QAAI,EAAE,WATH;AAUHC,QAAI,EAAE;AAVH,GAAP;AAYH;;AAEM,SAASC,IAAT,CAAcn8B,OAAd,EAAqC;AAAA,MAAvBA,OAAuB;AAAvBA,WAAuB,GAAJ,EAAI;AAAA;;AAExC,MAAIxJ,KAAK,GAAG,EAAZ;AAEAwJ,SAAO,GAAG,+FAAKw7B,YAAY,EAApB,MAA2Bx7B,OAA3B,CAAP;;AAEA,OAAK,IAAMjW,GAAX,IAAkBiW,OAAlB,EAA2B;AACvB,QAAIA,OAAO,CAAC7U,cAAR,CAAuBpB,GAAvB,CAAJ,EAAiC;AAC7ByM,WAAK,CAACpQ,IAAN,CAAe0iC,kBAAkB,CAAC/+B,GAAD,CAAjC,SAA4C++B,kBAAkB,CAAC9oB,OAAO,CAACjW,GAAD,CAAR,CAA9D;AACH;AACJ;;AAEDyM,OAAK,GAAGA,KAAK,CAACnI,IAAN,CAAW,GAAX,CAAR;;AAEA,MAAI;AACA,QAAM8sC,WAAW,GAAG,IAAI51C,MAAM,CAAC61C,KAAX,EAApB;AACAD,eAAW,CAAC3+B,GAAZ,GAAsB++B,QAAtB,SAAoC/kC,KAApC;AACH,GAHD,CAGE,OAAO1Q,GAAP,EAAY,CACV;AACH;AACJ,C;;;;;;;;;;ACrHM,SAASs2C,eAAT,CAAyBC,MAAzB,EAA0CC,UAA1C,EAAoFC,eAApF,EAA4I;AAAA,MAAlGD,UAAkG;AAAlGA,cAAkG,GAA5D,EAA4D;AAAA;;AAAA,MAAxDC,eAAwD;AAAxDA,mBAAwD,GAAb,EAAa;AAAA;;AAAA,mCAE5HD,UAF4H,oCAEhH;AAA1B,QAAM32C,IAAI,oBAAV;AACD,QAAMktC,SAAS,GAAGttC,MAAM,CAACI,IAAD,CAAxB;;AAEA,QAAI,CAACktC,SAAL,EAAgB;AACZ;AACH;;AAL0B,0CAOH0J,eAPG,yCAOc;AAAA;;AAApC,UAAMC,SAAS,yBAAf;AACD,UAAIC,cAAc,GAAGJ,MAAM,CAACG,SAAD,CAA3B;;AAEA,UAAI3J,SAAS,CAAC2J,SAAD,CAAb,EAA0B;AACtBC,sBAAc,GAAG,+FAAK5J,SAAS,CAAC2J,SAAD,CAAjB,MAAiCC,cAAjC,CAAd;AACH;;AAEDJ,YAAM,GAAG,+FAAKxJ,SAAR,MAAsBwJ,MAAtB,6BAAgCG,SAAhC,IAA6CC,cAA7C,aAAN;AACH;AACJ;;AAlB8I,mCAoB5HH,UApB4H,oCAoBhH;AAA1B,QAAM32C,KAAI,oBAAV;AACDJ,UAAM,CAACI,KAAD,CAAN,GAAe02C,MAAf;AACH;;AAED,SAAOA,MAAP;AACH,C;;;;;;AC3BD;;;;;;;;;AAQA;AACA,CAAC,YAAY;AACX;;AAEA,MAAIK,IAAI,GAAG,OAAOn3C,MAAP,KAAkB,QAAlB,GAA6BA,MAA7B,GAAsC,EAAjD;AACA,MAAIo3C,OAAO,GAAG,CAACD,IAAI,CAACE,oBAAN,IAA8B,OAAO3U,OAAP,KAAmB,QAAjD,IAA6DA,OAAO,CAACC,QAArE,IAAiFD,OAAO,CAACC,QAAR,CAAiB2U,IAAhH;;AACA,MAAIF,OAAJ,EAAa;AACXD,QAAI,GAAGl8B,MAAP;AACD;;AACD,MAAIs8B,SAAS,GAAG,CAACJ,IAAI,CAACK,sBAAN,IAAgC,OAAOC,MAAP,KAAkB,QAAlD,IAA8DA,MAAM,CAACC,OAArF;AACA,MAAIC,GAAG,GAAG,SAAgCC,uBAA1C;AACA,MAAIC,kBAAkB,GAAG,mCAAmC7wC,KAAnC,CAAyC,EAAzC,CAAzB;AACA,MAAI8wC,kBAAkB,GAAG;AACvB,SAAK,CADkB;AACf,SAAK,CADU;AACP,SAAK,CADE;AACC,SAAK,CADN;AACS,SAAK,CADd;AACiB,SAAK,CADtB;AACyB,SAAK,CAD9B;AACiC,SAAK,CADtC;AACyC,SAAK,CAD9C;AAEvB,SAAK,CAFkB;AAEf,SAAK,EAFU;AAEN,SAAK,EAFC;AAEG,SAAK,EAFR;AAEY,SAAK,EAFjB;AAEqB,SAAK,EAF1B;AAE8B,SAAK,EAFnC;AAEuC,SAAK,EAF5C;AAGvB,SAAK,EAHkB;AAGd,SAAK,EAHS;AAGL,SAAK,EAHA;AAGI,SAAK,EAHT;AAGa,SAAK,EAHlB;AAGsB,SAAK,EAH3B;AAG+B,SAAK,EAHpC;AAGwC,SAAK,EAH7C;AAIvB,SAAK,EAJkB;AAId,SAAK,EAJS;AAIL,SAAK,EAJA;AAII,SAAK,EAJT;AAIa,SAAK,EAJlB;AAIsB,SAAK,EAJ3B;AAI+B,SAAK;AAJpC,GAAzB;AAOA,MAAIC,MAAM,GAAG,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAb;;AAEA,MAAIC,gBAAgB,GAAG,SAAnBA,gBAAmB,CAAUC,QAAV,EAAoBC,OAApB,EAA6B;AAClD,QAAIA,OAAO,CAACj3C,MAAR,GAAiB,EAArB,EAAyB;AACvBi3C,aAAO,GAAG,QAAQA,OAAO,CAACpuC,MAAR,CAAe,CAAC,EAAhB,CAAlB;AACD;;AACD,QAAIvJ,GAAG,GAAG,IAAIoC,KAAJ,CAAU,qCAChB,qCADgB,GAEhB,8BAFgB,GAEiBs1C,QAFjB,GAE4B,UAF5B,GAEyCC,OAFzC,GAEmD,KAF7D,CAAV;AAGA33C,OAAG,CAAC03C,QAAJ,GAAeA,QAAf;AACA,UAAM13C,GAAN;AACD,GATD;;AAWA,MAAI43C,YAAY,GAAG,SAAfA,YAAe,CAAUC,KAAV,EAAiB;AAClC,QAAInzC,GAAG,GAAG,EAAV;AAAA,QAAchE,MAAM,GAAGm3C,KAAK,CAACn3C,MAA7B;AAAA,QAAqCkC,CAAC,GAAG,CAAzC;AAAA,QAA4Ck1C,cAAc,GAAG,CAA7D;AAAA,QAAgElgB,CAAhE;AAAA,QAAmE2L,CAAnE;;AACA,WAAO3gC,CAAC,GAAGlC,MAAX,EAAmB;AACjBk3B,OAAC,GAAGigB,KAAK,CAACj1C,CAAC,EAAF,CAAT;;AACA,UAAIg1B,CAAC,IAAI,IAAT,EAAe;AACblzB,WAAG,IAAIwxB,MAAM,CAACC,YAAP,CAAoByB,CAApB,CAAP;AACA;AACD,OAHD,MAGO,IAAIA,CAAC,GAAG,IAAJ,IAAYA,CAAC,IAAI,IAArB,EAA2B;AAChC2L,SAAC,GAAG3L,CAAC,GAAG,IAAR;AACAkgB,sBAAc,GAAG,CAAjB;AACD,OAHM,MAGA,IAAIlgB,CAAC,IAAI,IAAT,EAAe;AACpB2L,SAAC,GAAG3L,CAAC,GAAG,IAAR;AACAkgB,sBAAc,GAAG,CAAjB;AACD,OAHM,MAGA,IAAIlgB,CAAC,IAAI,IAAT,EAAe;AACpB2L,SAAC,GAAG3L,CAAC,GAAG,IAAR;AACAkgB,sBAAc,GAAG,CAAjB;AACD,OAHM,MAGA;AACLL,wBAAgB,CAAC70C,CAAD,EAAI8B,GAAJ,CAAhB;AACD;;AAED,WAAK,IAAIjE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGq3C,cAApB,EAAoC,EAAEr3C,CAAtC,EAAyC;AACvCm3B,SAAC,GAAGigB,KAAK,CAACj1C,CAAC,EAAF,CAAT;;AACA,YAAIg1B,CAAC,GAAG,IAAJ,IAAYA,CAAC,GAAG,IAApB,EAA0B;AACxB6f,0BAAgB,CAAC70C,CAAD,EAAI8B,GAAJ,CAAhB;AACD;;AACD6+B,SAAC,KAAK,CAAN;AACAA,SAAC,IAAI3L,CAAC,GAAG,IAAT;AACD;;AACD,UAAI2L,CAAC,IAAI,MAAL,IAAeA,CAAC,IAAI,MAAxB,EAAgC;AAC9BkU,wBAAgB,CAAC70C,CAAD,EAAI8B,GAAJ,CAAhB;AACD;;AACD,UAAI6+B,CAAC,GAAG,QAAR,EAAkB;AAChBkU,wBAAgB,CAAC70C,CAAD,EAAI8B,GAAJ,CAAhB;AACD;;AAED,UAAI6+B,CAAC,IAAI,MAAT,EAAiB;AACf7+B,WAAG,IAAIwxB,MAAM,CAACC,YAAP,CAAoBoN,CAApB,CAAP;AACD,OAFD,MAEO;AACLA,SAAC,IAAI,OAAL;AACA7+B,WAAG,IAAIwxB,MAAM,CAACC,YAAP,CAAoB,CAACoN,CAAC,IAAI,EAAN,IAAY,MAAhC,CAAP;AACA7+B,WAAG,IAAIwxB,MAAM,CAACC,YAAP,CAAoB,CAACoN,CAAC,GAAG,KAAL,IAAc,MAAlC,CAAP;AACD;AACF;;AACD,WAAO7+B,GAAP;AACD,GA5CD;;AA8CA,MAAIqzC,aAAa,GAAG,SAAhBA,aAAgB,CAAUC,SAAV,EAAqB;AACvC,QAAI,CAAC,eAAer/B,IAAf,CAAoBq/B,SAApB,CAAL,EAAqC;AACnC,YAAM,IAAI51C,KAAJ,CAAU,2BAAV,CAAN;AACD;;AACD41C,aAAS,GAAGA,SAAS,CAACrzC,OAAV,CAAkB,IAAlB,EAAwB,EAAxB,CAAZ;AACA,QAAIszC,EAAJ;AAAA,QAAQC,EAAR;AAAA,QAAYC,EAAZ;AAAA,QAAgBC,EAAhB;AAAA,QAAoBC,EAApB;AAAA,QAAwBC,EAAxB;AAAA,QAA4BC,EAA5B;AAAA,QAAgCC,EAAhC;AAAA,QAAoCX,KAAK,GAAG,EAA5C;AAAA,QAAgD5uC,KAAK,GAAG,CAAxD;AAAA,QAA2DvI,MAAM,GAAGs3C,SAAS,CAACt3C,MAA9E,CALuC,CAOvC;;AACA,SAAK,IAAIkC,CAAC,GAAG,CAAR,EAAWe,KAAK,GAAGjD,MAAM,IAAI,CAAV,IAAe,CAAvC,EAA0CkC,CAAC,GAAGe,KAA9C,GAAsD;AACpDs0C,QAAE,GAAGV,kBAAkB,CAACS,SAAS,CAACvyC,MAAV,CAAiB7C,CAAC,EAAlB,CAAD,CAAvB;AACAs1C,QAAE,GAAGX,kBAAkB,CAACS,SAAS,CAACvyC,MAAV,CAAiB7C,CAAC,EAAlB,CAAD,CAAvB;AACAu1C,QAAE,GAAGZ,kBAAkB,CAACS,SAAS,CAACvyC,MAAV,CAAiB7C,CAAC,EAAlB,CAAD,CAAvB;AACAw1C,QAAE,GAAGb,kBAAkB,CAACS,SAAS,CAACvyC,MAAV,CAAiB7C,CAAC,EAAlB,CAAD,CAAvB;AACAy1C,QAAE,GAAGd,kBAAkB,CAACS,SAAS,CAACvyC,MAAV,CAAiB7C,CAAC,EAAlB,CAAD,CAAvB;AACA01C,QAAE,GAAGf,kBAAkB,CAACS,SAAS,CAACvyC,MAAV,CAAiB7C,CAAC,EAAlB,CAAD,CAAvB;AACA21C,QAAE,GAAGhB,kBAAkB,CAACS,SAAS,CAACvyC,MAAV,CAAiB7C,CAAC,EAAlB,CAAD,CAAvB;AACA41C,QAAE,GAAGjB,kBAAkB,CAACS,SAAS,CAACvyC,MAAV,CAAiB7C,CAAC,EAAlB,CAAD,CAAvB;AACAi1C,WAAK,CAAC5uC,KAAK,EAAN,CAAL,GAAiB,CAACgvC,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,GAAxC;AACAL,WAAK,CAAC5uC,KAAK,EAAN,CAAL,GAAiB,CAACivC,EAAE,IAAI,CAAN,GAAUC,EAAE,IAAI,CAAhB,GAAoBC,EAAE,KAAK,CAA5B,IAAiC,GAAlD;AACAP,WAAK,CAAC5uC,KAAK,EAAN,CAAL,GAAiB,CAACmvC,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,GAAxC;AACAR,WAAK,CAAC5uC,KAAK,EAAN,CAAL,GAAiB,CAACovC,EAAE,IAAI,CAAN,GAAUC,EAAE,IAAI,CAAhB,GAAoBC,EAAE,KAAK,CAA5B,IAAiC,GAAlD;AACAV,WAAK,CAAC5uC,KAAK,EAAN,CAAL,GAAiB,CAACsvC,EAAE,IAAI,CAAN,GAAUC,EAAX,IAAiB,GAAlC;AACD,KAtBsC,CAwBvC;;;AACA,QAAIC,MAAM,GAAG/3C,MAAM,GAAGiD,KAAtB;;AACA,QAAI80C,MAAM,KAAK,CAAf,EAAkB;AAChBR,QAAE,GAAGV,kBAAkB,CAACS,SAAS,CAACvyC,MAAV,CAAiB7C,CAAC,EAAlB,CAAD,CAAvB;AACAs1C,QAAE,GAAGX,kBAAkB,CAACS,SAAS,CAACvyC,MAAV,CAAiB7C,CAAC,EAAlB,CAAD,CAAvB;AACAi1C,WAAK,CAAC5uC,KAAK,EAAN,CAAL,GAAiB,CAACgvC,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,GAAxC;AACD,KAJD,MAIO,IAAIO,MAAM,KAAK,CAAf,EAAkB;AACvBR,QAAE,GAAGV,kBAAkB,CAACS,SAAS,CAACvyC,MAAV,CAAiB7C,CAAC,EAAlB,CAAD,CAAvB;AACAs1C,QAAE,GAAGX,kBAAkB,CAACS,SAAS,CAACvyC,MAAV,CAAiB7C,CAAC,EAAlB,CAAD,CAAvB;AACAu1C,QAAE,GAAGZ,kBAAkB,CAACS,SAAS,CAACvyC,MAAV,CAAiB7C,CAAC,EAAlB,CAAD,CAAvB;AACAw1C,QAAE,GAAGb,kBAAkB,CAACS,SAAS,CAACvyC,MAAV,CAAiB7C,CAAC,EAAlB,CAAD,CAAvB;AACAi1C,WAAK,CAAC5uC,KAAK,EAAN,CAAL,GAAiB,CAACgvC,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,GAAxC;AACAL,WAAK,CAAC5uC,KAAK,EAAN,CAAL,GAAiB,CAACivC,EAAE,IAAI,CAAN,GAAUC,EAAE,IAAI,CAAhB,GAAoBC,EAAE,KAAK,CAA5B,IAAiC,GAAlD;AACD,KAPM,MAOA,IAAIK,MAAM,KAAK,CAAf,EAAkB;AACvBR,QAAE,GAAGV,kBAAkB,CAACS,SAAS,CAACvyC,MAAV,CAAiB7C,CAAC,EAAlB,CAAD,CAAvB;AACAs1C,QAAE,GAAGX,kBAAkB,CAACS,SAAS,CAACvyC,MAAV,CAAiB7C,CAAC,EAAlB,CAAD,CAAvB;AACAu1C,QAAE,GAAGZ,kBAAkB,CAACS,SAAS,CAACvyC,MAAV,CAAiB7C,CAAC,EAAlB,CAAD,CAAvB;AACAw1C,QAAE,GAAGb,kBAAkB,CAACS,SAAS,CAACvyC,MAAV,CAAiB7C,CAAC,EAAlB,CAAD,CAAvB;AACAy1C,QAAE,GAAGd,kBAAkB,CAACS,SAAS,CAACvyC,MAAV,CAAiB7C,CAAC,EAAlB,CAAD,CAAvB;AACAi1C,WAAK,CAAC5uC,KAAK,EAAN,CAAL,GAAiB,CAACgvC,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,GAAxC;AACAL,WAAK,CAAC5uC,KAAK,EAAN,CAAL,GAAiB,CAACivC,EAAE,IAAI,CAAN,GAAUC,EAAE,IAAI,CAAhB,GAAoBC,EAAE,KAAK,CAA5B,IAAiC,GAAlD;AACAP,WAAK,CAAC5uC,KAAK,EAAN,CAAL,GAAiB,CAACmvC,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,GAAxC;AACD,KATM,MASA,IAAII,MAAM,KAAK,CAAf,EAAkB;AACvBR,QAAE,GAAGV,kBAAkB,CAACS,SAAS,CAACvyC,MAAV,CAAiB7C,CAAC,EAAlB,CAAD,CAAvB;AACAs1C,QAAE,GAAGX,kBAAkB,CAACS,SAAS,CAACvyC,MAAV,CAAiB7C,CAAC,EAAlB,CAAD,CAAvB;AACAu1C,QAAE,GAAGZ,kBAAkB,CAACS,SAAS,CAACvyC,MAAV,CAAiB7C,CAAC,EAAlB,CAAD,CAAvB;AACAw1C,QAAE,GAAGb,kBAAkB,CAACS,SAAS,CAACvyC,MAAV,CAAiB7C,CAAC,EAAlB,CAAD,CAAvB;AACAy1C,QAAE,GAAGd,kBAAkB,CAACS,SAAS,CAACvyC,MAAV,CAAiB7C,CAAC,EAAlB,CAAD,CAAvB;AACA01C,QAAE,GAAGf,kBAAkB,CAACS,SAAS,CAACvyC,MAAV,CAAiB7C,CAAC,EAAlB,CAAD,CAAvB;AACA21C,QAAE,GAAGhB,kBAAkB,CAACS,SAAS,CAACvyC,MAAV,CAAiB7C,CAAC,EAAlB,CAAD,CAAvB;AACAi1C,WAAK,CAAC5uC,KAAK,EAAN,CAAL,GAAiB,CAACgvC,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,GAAxC;AACAL,WAAK,CAAC5uC,KAAK,EAAN,CAAL,GAAiB,CAACivC,EAAE,IAAI,CAAN,GAAUC,EAAE,IAAI,CAAhB,GAAoBC,EAAE,KAAK,CAA5B,IAAiC,GAAlD;AACAP,WAAK,CAAC5uC,KAAK,EAAN,CAAL,GAAiB,CAACmvC,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,GAAxC;AACAR,WAAK,CAAC5uC,KAAK,EAAN,CAAL,GAAiB,CAACovC,EAAE,IAAI,CAAN,GAAUC,EAAE,IAAI,CAAhB,GAAoBC,EAAE,KAAK,CAA5B,IAAiC,GAAlD;AACD;;AACD,WAAOV,KAAP;AACD,GA5DD;;AA8DA,MAAIa,WAAW,GAAG,SAAdA,WAAc,CAAUh0C,GAAV,EAAe;AAC/B,QAAIuzC,EAAJ;AAAA,QAAQC,EAAR;AAAA,QAAYC,EAAZ;AAAA,QAAgBC,EAAhB;AAAA,QAAoBC,EAApB;AAAA,QAAwBL,SAAS,GAAG,EAApC;AAAA,QAAwCt3C,MAAM,GAAGgE,GAAG,CAAChE,MAArD;;AACA,SAAK,IAAIkC,CAAC,GAAG,CAAR,EAAWe,KAAK,GAAGmV,QAAQ,CAACpY,MAAM,GAAG,CAAV,CAAR,GAAuB,CAA/C,EAAkDkC,CAAC,GAAGe,KAAtD,GAA8D;AAC5Ds0C,QAAE,GAAGvzC,GAAG,CAACmxB,UAAJ,CAAejzB,CAAC,EAAhB,CAAL;AACAs1C,QAAE,GAAGxzC,GAAG,CAACmxB,UAAJ,CAAejzB,CAAC,EAAhB,CAAL;AACAu1C,QAAE,GAAGzzC,GAAG,CAACmxB,UAAJ,CAAejzB,CAAC,EAAhB,CAAL;AACAw1C,QAAE,GAAG1zC,GAAG,CAACmxB,UAAJ,CAAejzB,CAAC,EAAhB,CAAL;AACAy1C,QAAE,GAAG3zC,GAAG,CAACmxB,UAAJ,CAAejzB,CAAC,EAAhB,CAAL;AACAo1C,eAAS,IAAIV,kBAAkB,CAACW,EAAE,KAAK,CAAR,CAAlB,GACXX,kBAAkB,CAAC,CAACW,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CADP,GAEXZ,kBAAkB,CAAEY,EAAE,KAAK,CAAR,GAAa,EAAd,CAFP,GAGXZ,kBAAkB,CAAC,CAACY,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CAHP,GAIXb,kBAAkB,CAAC,CAACa,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CAJP,GAKXd,kBAAkB,CAAEc,EAAE,KAAK,CAAR,GAAa,EAAd,CALP,GAMXd,kBAAkB,CAAC,CAACc,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CANP,GAOXf,kBAAkB,CAACe,EAAE,GAAG,EAAN,CAPpB;AAQD,KAhB8B,CAkB/B;;;AACA,QAAII,MAAM,GAAG/3C,MAAM,GAAGiD,KAAtB;;AACA,QAAI80C,MAAM,KAAK,CAAf,EAAkB;AAChBR,QAAE,GAAGvzC,GAAG,CAACmxB,UAAJ,CAAejzB,CAAf,CAAL;AACAo1C,eAAS,IAAIV,kBAAkB,CAACW,EAAE,KAAK,CAAR,CAAlB,GACXX,kBAAkB,CAAEW,EAAE,IAAI,CAAP,GAAY,EAAb,CADP,GAEX,QAFF;AAGD,KALD,MAKO,IAAIQ,MAAM,KAAK,CAAf,EAAkB;AACvBR,QAAE,GAAGvzC,GAAG,CAACmxB,UAAJ,CAAejzB,CAAC,EAAhB,CAAL;AACAs1C,QAAE,GAAGxzC,GAAG,CAACmxB,UAAJ,CAAejzB,CAAf,CAAL;AACAo1C,eAAS,IAAIV,kBAAkB,CAACW,EAAE,KAAK,CAAR,CAAlB,GACXX,kBAAkB,CAAC,CAACW,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CADP,GAEXZ,kBAAkB,CAAEY,EAAE,KAAK,CAAR,GAAa,EAAd,CAFP,GAGXZ,kBAAkB,CAAEY,EAAE,IAAI,CAAP,GAAY,EAAb,CAHP,GAIX,MAJF;AAKD,KARM,MAQA,IAAIO,MAAM,KAAK,CAAf,EAAkB;AACvBR,QAAE,GAAGvzC,GAAG,CAACmxB,UAAJ,CAAejzB,CAAC,EAAhB,CAAL;AACAs1C,QAAE,GAAGxzC,GAAG,CAACmxB,UAAJ,CAAejzB,CAAC,EAAhB,CAAL;AACAu1C,QAAE,GAAGzzC,GAAG,CAACmxB,UAAJ,CAAejzB,CAAf,CAAL;AACAo1C,eAAS,IAAIV,kBAAkB,CAACW,EAAE,KAAK,CAAR,CAAlB,GACXX,kBAAkB,CAAC,CAACW,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CADP,GAEXZ,kBAAkB,CAAEY,EAAE,KAAK,CAAR,GAAa,EAAd,CAFP,GAGXZ,kBAAkB,CAAC,CAACY,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CAHP,GAIXb,kBAAkB,CAAEa,EAAE,IAAI,CAAP,GAAY,EAAb,CAJP,GAKX,KALF;AAMD,KAVM,MAUA,IAAIM,MAAM,KAAK,CAAf,EAAkB;AACvBR,QAAE,GAAGvzC,GAAG,CAACmxB,UAAJ,CAAejzB,CAAC,EAAhB,CAAL;AACAs1C,QAAE,GAAGxzC,GAAG,CAACmxB,UAAJ,CAAejzB,CAAC,EAAhB,CAAL;AACAu1C,QAAE,GAAGzzC,GAAG,CAACmxB,UAAJ,CAAejzB,CAAC,EAAhB,CAAL;AACAw1C,QAAE,GAAG1zC,GAAG,CAACmxB,UAAJ,CAAejzB,CAAf,CAAL;AACAo1C,eAAS,IAAIV,kBAAkB,CAACW,EAAE,KAAK,CAAR,CAAlB,GACXX,kBAAkB,CAAC,CAACW,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CADP,GAEXZ,kBAAkB,CAAEY,EAAE,KAAK,CAAR,GAAa,EAAd,CAFP,GAGXZ,kBAAkB,CAAC,CAACY,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CAHP,GAIXb,kBAAkB,CAAC,CAACa,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CAJP,GAKXd,kBAAkB,CAAEc,EAAE,KAAK,CAAR,GAAa,EAAd,CALP,GAMXd,kBAAkB,CAAEc,EAAE,IAAI,CAAP,GAAY,EAAb,CANP,GAOX,GAPF;AAQD;;AACD,WAAOJ,SAAP;AACD,GA1DD;;AA4DA,MAAIW,UAAU,GAAG,SAAbA,UAAa,CAAUj0C,GAAV,EAAe;AAC9B,QAAIuzC,EAAJ;AAAA,QAAQC,EAAR;AAAA,QAAYC,EAAZ;AAAA,QAAgBC,EAAhB;AAAA,QAAoBC,EAApB;AAAA,QAAwBzc,IAAxB;AAAA,QAA8BxyB,GAAG,GAAG,KAApC;AAAA,QAA2C4uC,SAAS,GAAG,EAAvD;AAAA,QACE/uC,KAAK,GAAG,CADV;AAAA,QACarG,CADb;AAAA,QACgBkG,KAAK,GAAG,CADxB;AAAA,QAC2B+uC,KAAK,GAAG,CADnC;AAAA,QACsCn3C,MAAM,GAAGgE,GAAG,CAAChE,MADnD;;AAEA,OAAG;AACD82C,YAAM,CAAC,CAAD,CAAN,GAAYA,MAAM,CAAC,CAAD,CAAlB;AACAA,YAAM,CAAC,CAAD,CAAN,GAAYA,MAAM,CAAC,CAAD,CAAlB;AACAA,YAAM,CAAC,CAAD,CAAN,GAAYA,MAAM,CAAC,CAAD,CAAlB;;AACA,WAAK50C,CAAC,GAAGkG,KAAT,EAAgBG,KAAK,GAAGvI,MAAR,IAAkBkC,CAAC,GAAG,CAAtC,EAAyC,EAAEqG,KAA3C,EAAkD;AAChD2yB,YAAI,GAAGl3B,GAAG,CAACmxB,UAAJ,CAAe5sB,KAAf,CAAP;;AACA,YAAI2yB,IAAI,GAAG,IAAX,EAAiB;AACf4b,gBAAM,CAAC50C,CAAC,EAAF,CAAN,GAAcg5B,IAAd;AACD,SAFD,MAEO,IAAIA,IAAI,GAAG,KAAX,EAAkB;AACvB4b,gBAAM,CAAC50C,CAAC,EAAF,CAAN,GAAc,OAAQg5B,IAAI,IAAI,CAA9B;AACA4b,gBAAM,CAAC50C,CAAC,EAAF,CAAN,GAAc,OAAQg5B,IAAI,GAAG,IAA7B;AACD,SAHM,MAGA,IAAIA,IAAI,GAAG,MAAP,IAAiBA,IAAI,IAAI,MAA7B,EAAqC;AAC1C4b,gBAAM,CAAC50C,CAAC,EAAF,CAAN,GAAc,OAAQg5B,IAAI,IAAI,EAA9B;AACA4b,gBAAM,CAAC50C,CAAC,EAAF,CAAN,GAAc,OAASg5B,IAAI,IAAI,CAAT,GAAc,IAApC;AACA4b,gBAAM,CAAC50C,CAAC,EAAF,CAAN,GAAc,OAAQg5B,IAAI,GAAG,IAA7B;AACD,SAJM,MAIA;AACLA,cAAI,GAAG,WAAY,CAACA,IAAI,GAAG,KAAR,KAAkB,EAAnB,GAA0Bl3B,GAAG,CAACmxB,UAAJ,CAAe,EAAE5sB,KAAjB,IAA0B,KAA/D,CAAP;AACAuuC,gBAAM,CAAC50C,CAAC,EAAF,CAAN,GAAc,OAAQg5B,IAAI,IAAI,EAA9B;AACA4b,gBAAM,CAAC50C,CAAC,EAAF,CAAN,GAAc,OAASg5B,IAAI,IAAI,EAAT,GAAe,IAArC;AACA4b,gBAAM,CAAC50C,CAAC,EAAF,CAAN,GAAc,OAASg5B,IAAI,IAAI,CAAT,GAAc,IAApC;AACA4b,gBAAM,CAAC50C,CAAC,EAAF,CAAN,GAAc,OAAQg5B,IAAI,GAAG,IAA7B;AACD;AACF;;AACDic,WAAK,IAAIj1C,CAAC,GAAGkG,KAAb;AACAA,WAAK,GAAGlG,CAAC,GAAG,CAAZ;;AACA,UAAIqG,KAAK,KAAKvI,MAAd,EAAsB;AACpB,UAAEuI,KAAF;AACD;;AACD,UAAIA,KAAK,GAAGvI,MAAR,IAAkBkC,CAAC,GAAG,CAA1B,EAA6B;AAC3BwG,WAAG,GAAG,IAAN;AACD;;AACD6uC,QAAE,GAAGT,MAAM,CAAC,CAAD,CAAX;;AACA,UAAI50C,CAAC,GAAG,CAAR,EAAW;AACTs1C,UAAE,GAAGV,MAAM,CAAC,CAAD,CAAX;AACAW,UAAE,GAAGX,MAAM,CAAC,CAAD,CAAX;AACAY,UAAE,GAAGZ,MAAM,CAAC,CAAD,CAAX;AACAa,UAAE,GAAGb,MAAM,CAAC,CAAD,CAAX;AACAQ,iBAAS,IAAIV,kBAAkB,CAACW,EAAE,KAAK,CAAR,CAAlB,GACXX,kBAAkB,CAAC,CAACW,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CADP,GAEXZ,kBAAkB,CAAEY,EAAE,KAAK,CAAR,GAAa,EAAd,CAFP,GAGXZ,kBAAkB,CAAC,CAACY,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CAHP,GAIXb,kBAAkB,CAAC,CAACa,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CAJP,GAKXd,kBAAkB,CAAEc,EAAE,KAAK,CAAR,GAAa,EAAd,CALP,GAMXd,kBAAkB,CAAC,CAACc,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CANP,GAOXf,kBAAkB,CAACe,EAAE,GAAG,EAAN,CAPpB;AAQD,OAbD,MAaO,IAAIz1C,CAAC,KAAK,CAAV,EAAa;AAClBo1C,iBAAS,IAAIV,kBAAkB,CAACW,EAAE,KAAK,CAAR,CAAlB,GACXX,kBAAkB,CAAEW,EAAE,IAAI,CAAP,GAAY,EAAb,CADP,GAEX,QAFF;AAGD,OAJM,MAIA,IAAIr1C,CAAC,KAAK,CAAV,EAAa;AAClBs1C,UAAE,GAAGV,MAAM,CAAC,CAAD,CAAX;AACAQ,iBAAS,IAAIV,kBAAkB,CAACW,EAAE,KAAK,CAAR,CAAlB,GACXX,kBAAkB,CAAC,CAACW,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CADP,GAEXZ,kBAAkB,CAAEY,EAAE,KAAK,CAAR,GAAa,EAAd,CAFP,GAGXZ,kBAAkB,CAAEY,EAAE,IAAI,CAAP,GAAY,EAAb,CAHP,GAIX,MAJF;AAKD,OAPM,MAOA,IAAIt1C,CAAC,KAAK,CAAV,EAAa;AAClBs1C,UAAE,GAAGV,MAAM,CAAC,CAAD,CAAX;AACAW,UAAE,GAAGX,MAAM,CAAC,CAAD,CAAX;AACAQ,iBAAS,IAAIV,kBAAkB,CAACW,EAAE,KAAK,CAAR,CAAlB,GACXX,kBAAkB,CAAC,CAACW,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CADP,GAEXZ,kBAAkB,CAAEY,EAAE,KAAK,CAAR,GAAa,EAAd,CAFP,GAGXZ,kBAAkB,CAAC,CAACY,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CAHP,GAIXb,kBAAkB,CAAEa,EAAE,IAAI,CAAP,GAAY,EAAb,CAJP,GAKX,KALF;AAMD,OATM,MASA;AACLD,UAAE,GAAGV,MAAM,CAAC,CAAD,CAAX;AACAW,UAAE,GAAGX,MAAM,CAAC,CAAD,CAAX;AACAY,UAAE,GAAGZ,MAAM,CAAC,CAAD,CAAX;AACAQ,iBAAS,IAAIV,kBAAkB,CAACW,EAAE,KAAK,CAAR,CAAlB,GACXX,kBAAkB,CAAC,CAACW,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CADP,GAEXZ,kBAAkB,CAAEY,EAAE,KAAK,CAAR,GAAa,EAAd,CAFP,GAGXZ,kBAAkB,CAAC,CAACY,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CAHP,GAIXb,kBAAkB,CAAC,CAACa,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CAJP,GAKXd,kBAAkB,CAAEc,EAAE,KAAK,CAAR,GAAa,EAAd,CALP,GAMXd,kBAAkB,CAAEc,EAAE,IAAI,CAAP,GAAY,EAAb,CANP,GAOX,GAPF;AAQD;AACF,KA9ED,QA8ES,CAAChvC,GA9EV;;AA+EA,WAAO4uC,SAAP;AACD,GAnFD;;AAqFA,MAAIY,WAAW,GAAG,SAAdA,WAAc,CAAUf,KAAV,EAAiB;AACjC,QAAII,EAAJ;AAAA,QAAQC,EAAR;AAAA,QAAYC,EAAZ;AAAA,QAAgBC,EAAhB;AAAA,QAAoBC,EAApB;AAAA,QAAwBL,SAAS,GAAG,EAApC;AAAA,QAAwCt3C,MAAM,GAAGm3C,KAAK,CAACn3C,MAAvD;;AACA,SAAK,IAAIkC,CAAC,GAAG,CAAR,EAAWe,KAAK,GAAGmV,QAAQ,CAACpY,MAAM,GAAG,CAAV,CAAR,GAAuB,CAA/C,EAAkDkC,CAAC,GAAGe,KAAtD,GAA8D;AAC5Ds0C,QAAE,GAAGJ,KAAK,CAACj1C,CAAC,EAAF,CAAV;AACAs1C,QAAE,GAAGL,KAAK,CAACj1C,CAAC,EAAF,CAAV;AACAu1C,QAAE,GAAGN,KAAK,CAACj1C,CAAC,EAAF,CAAV;AACAw1C,QAAE,GAAGP,KAAK,CAACj1C,CAAC,EAAF,CAAV;AACAy1C,QAAE,GAAGR,KAAK,CAACj1C,CAAC,EAAF,CAAV;AACAo1C,eAAS,IAAIV,kBAAkB,CAACW,EAAE,KAAK,CAAR,CAAlB,GACXX,kBAAkB,CAAC,CAACW,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CADP,GAEXZ,kBAAkB,CAAEY,EAAE,KAAK,CAAR,GAAa,EAAd,CAFP,GAGXZ,kBAAkB,CAAC,CAACY,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CAHP,GAIXb,kBAAkB,CAAC,CAACa,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CAJP,GAKXd,kBAAkB,CAAEc,EAAE,KAAK,CAAR,GAAa,EAAd,CALP,GAMXd,kBAAkB,CAAC,CAACc,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CANP,GAOXf,kBAAkB,CAACe,EAAE,GAAG,EAAN,CAPpB;AAQD,KAhBgC,CAkBjC;;;AACA,QAAII,MAAM,GAAG/3C,MAAM,GAAGiD,KAAtB;;AACA,QAAI80C,MAAM,KAAK,CAAf,EAAkB;AAChBR,QAAE,GAAGJ,KAAK,CAACj1C,CAAD,CAAV;AACAo1C,eAAS,IAAIV,kBAAkB,CAACW,EAAE,KAAK,CAAR,CAAlB,GACXX,kBAAkB,CAAEW,EAAE,IAAI,CAAP,GAAY,EAAb,CADP,GAEX,QAFF;AAGD,KALD,MAKO,IAAIQ,MAAM,KAAK,CAAf,EAAkB;AACvBR,QAAE,GAAGJ,KAAK,CAACj1C,CAAC,EAAF,CAAV;AACAs1C,QAAE,GAAGL,KAAK,CAACj1C,CAAD,CAAV;AACAo1C,eAAS,IAAIV,kBAAkB,CAACW,EAAE,KAAK,CAAR,CAAlB,GACXX,kBAAkB,CAAC,CAACW,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CADP,GAEXZ,kBAAkB,CAAEY,EAAE,KAAK,CAAR,GAAa,EAAd,CAFP,GAGXZ,kBAAkB,CAAEY,EAAE,IAAI,CAAP,GAAY,EAAb,CAHP,GAIX,MAJF;AAKD,KARM,MAQA,IAAIO,MAAM,KAAK,CAAf,EAAkB;AACvBR,QAAE,GAAGJ,KAAK,CAACj1C,CAAC,EAAF,CAAV;AACAs1C,QAAE,GAAGL,KAAK,CAACj1C,CAAC,EAAF,CAAV;AACAu1C,QAAE,GAAGN,KAAK,CAACj1C,CAAD,CAAV;AACAo1C,eAAS,IAAIV,kBAAkB,CAACW,EAAE,KAAK,CAAR,CAAlB,GACXX,kBAAkB,CAAC,CAACW,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CADP,GAEXZ,kBAAkB,CAAEY,EAAE,KAAK,CAAR,GAAa,EAAd,CAFP,GAGXZ,kBAAkB,CAAC,CAACY,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CAHP,GAIXb,kBAAkB,CAAEa,EAAE,IAAI,CAAP,GAAY,EAAb,CAJP,GAKX,KALF;AAMD,KAVM,MAUA,IAAIM,MAAM,KAAK,CAAf,EAAkB;AACvBR,QAAE,GAAGJ,KAAK,CAACj1C,CAAC,EAAF,CAAV;AACAs1C,QAAE,GAAGL,KAAK,CAACj1C,CAAC,EAAF,CAAV;AACAu1C,QAAE,GAAGN,KAAK,CAACj1C,CAAC,EAAF,CAAV;AACAw1C,QAAE,GAAGP,KAAK,CAACj1C,CAAD,CAAV;AACAo1C,eAAS,IAAIV,kBAAkB,CAACW,EAAE,KAAK,CAAR,CAAlB,GACXX,kBAAkB,CAAC,CAACW,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CADP,GAEXZ,kBAAkB,CAAEY,EAAE,KAAK,CAAR,GAAa,EAAd,CAFP,GAGXZ,kBAAkB,CAAC,CAACY,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CAHP,GAIXb,kBAAkB,CAAC,CAACa,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,EAAxB,CAJP,GAKXd,kBAAkB,CAAEc,EAAE,KAAK,CAAR,GAAa,EAAd,CALP,GAMXd,kBAAkB,CAAEc,EAAE,IAAI,CAAP,GAAY,EAAb,CANP,GAOX,GAPF;AAQD;;AACD,WAAOJ,SAAP;AACD,GA1DD;;AA4DA,MAAIa,MAAM,GAAG,SAATA,MAAS,CAAUC,KAAV,EAAiBC,SAAjB,EAA4B;AACvC,QAAIC,SAAS,GAAG,OAAOF,KAAP,KAAkB,QAAlC;;AACA,QAAIE,SAAS,IAAIF,KAAK,CAACn5C,WAAN,KAAsBs5C,WAAvC,EAAoD;AAClDH,WAAK,GAAG,IAAII,UAAJ,CAAeJ,KAAf,CAAR;AACD;;AACD,QAAIE,SAAJ,EAAe;AACb,aAAOJ,WAAW,CAACE,KAAD,CAAlB;AACD,KAFD,MAEO,IAAIC,SAAJ,EAAe;AACpB,aAAOL,WAAW,CAACI,KAAD,CAAlB;AACD,KAFM,MAEA;AACL,aAAOH,UAAU,CAACG,KAAD,CAAjB;AACD;AACF,GAZD;;AAcA,MAAIK,MAAM,GAAG,SAATA,MAAS,CAAUnB,SAAV,EAAqBe,SAArB,EAAgC;AAC3C,QAAI,CAACA,SAAL,EAAgB;AACd,aAAOnB,YAAY,CAACG,aAAa,CAACC,SAAD,CAAd,CAAnB;AACD;;AACD,QAAI,CAAC,eAAer/B,IAAf,CAAoBq/B,SAApB,CAAL,EAAqC;AACnC,YAAM,IAAI51C,KAAJ,CAAU,2BAAV,CAAN;AACD;;AACD,QAAI61C,EAAJ;AAAA,QAAQC,EAAR;AAAA,QAAYC,EAAZ;AAAA,QAAgBC,EAAhB;AAAA,QAAoBC,EAApB;AAAA,QAAwBC,EAAxB;AAAA,QAA4BC,EAA5B;AAAA,QAAgCC,EAAhC;AAAA,QAAoC9zC,GAAG,GAAG,EAA1C;AAAA,QAA8ChE,MAAM,GAAGs3C,SAAS,CAAC33C,OAAV,CAAkB,GAAlB,CAAvD;;AACA,QAAIK,MAAM,KAAK,CAAC,CAAhB,EAAmB;AACjBA,YAAM,GAAGs3C,SAAS,CAACt3C,MAAnB;AACD,KAV0C,CAY3C;;;AACA,SAAK,IAAIkC,CAAC,GAAG,CAAR,EAAWe,KAAK,GAAGjD,MAAM,IAAI,CAAV,IAAe,CAAvC,EAA0CkC,CAAC,GAAGe,KAA9C,GAAsD;AACpDs0C,QAAE,GAAGV,kBAAkB,CAACS,SAAS,CAACvyC,MAAV,CAAiB7C,CAAC,EAAlB,CAAD,CAAvB;AACAs1C,QAAE,GAAGX,kBAAkB,CAACS,SAAS,CAACvyC,MAAV,CAAiB7C,CAAC,EAAlB,CAAD,CAAvB;AACAu1C,QAAE,GAAGZ,kBAAkB,CAACS,SAAS,CAACvyC,MAAV,CAAiB7C,CAAC,EAAlB,CAAD,CAAvB;AACAw1C,QAAE,GAAGb,kBAAkB,CAACS,SAAS,CAACvyC,MAAV,CAAiB7C,CAAC,EAAlB,CAAD,CAAvB;AACAy1C,QAAE,GAAGd,kBAAkB,CAACS,SAAS,CAACvyC,MAAV,CAAiB7C,CAAC,EAAlB,CAAD,CAAvB;AACA01C,QAAE,GAAGf,kBAAkB,CAACS,SAAS,CAACvyC,MAAV,CAAiB7C,CAAC,EAAlB,CAAD,CAAvB;AACA21C,QAAE,GAAGhB,kBAAkB,CAACS,SAAS,CAACvyC,MAAV,CAAiB7C,CAAC,EAAlB,CAAD,CAAvB;AACA41C,QAAE,GAAGjB,kBAAkB,CAACS,SAAS,CAACvyC,MAAV,CAAiB7C,CAAC,EAAlB,CAAD,CAAvB;AACA8B,SAAG,IAAIwxB,MAAM,CAACC,YAAP,CAAoB,CAAC8hB,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,GAA3C,IACLhiB,MAAM,CAACC,YAAP,CAAoB,CAAC+hB,EAAE,IAAI,CAAN,GAAUC,EAAE,IAAI,CAAhB,GAAoBC,EAAE,KAAK,CAA5B,IAAiC,GAArD,CADK,GAELliB,MAAM,CAACC,YAAP,CAAoB,CAACiiB,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,GAA3C,CAFK,GAGLniB,MAAM,CAACC,YAAP,CAAoB,CAACkiB,EAAE,IAAI,CAAN,GAAUC,EAAE,IAAI,CAAhB,GAAoBC,EAAE,KAAK,CAA5B,IAAiC,GAArD,CAHK,GAILriB,MAAM,CAACC,YAAP,CAAoB,CAACoiB,EAAE,IAAI,CAAN,GAAUC,EAAX,IAAiB,GAArC,CAJF;AAKD,KA3B0C,CA6B3C;;;AACA,QAAIC,MAAM,GAAG/3C,MAAM,GAAGiD,KAAtB;;AACA,QAAI80C,MAAM,KAAK,CAAf,EAAkB;AAChBR,QAAE,GAAGV,kBAAkB,CAACS,SAAS,CAACvyC,MAAV,CAAiB7C,CAAC,EAAlB,CAAD,CAAvB;AACAs1C,QAAE,GAAGX,kBAAkB,CAACS,SAAS,CAACvyC,MAAV,CAAiB7C,CAAC,EAAlB,CAAD,CAAvB;AACA8B,SAAG,IAAIwxB,MAAM,CAACC,YAAP,CAAoB,CAAC8hB,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,GAA3C,CAAP;AACD,KAJD,MAIO,IAAIO,MAAM,KAAK,CAAf,EAAkB;AACvBR,QAAE,GAAGV,kBAAkB,CAACS,SAAS,CAACvyC,MAAV,CAAiB7C,CAAC,EAAlB,CAAD,CAAvB;AACAs1C,QAAE,GAAGX,kBAAkB,CAACS,SAAS,CAACvyC,MAAV,CAAiB7C,CAAC,EAAlB,CAAD,CAAvB;AACAu1C,QAAE,GAAGZ,kBAAkB,CAACS,SAAS,CAACvyC,MAAV,CAAiB7C,CAAC,EAAlB,CAAD,CAAvB;AACAw1C,QAAE,GAAGb,kBAAkB,CAACS,SAAS,CAACvyC,MAAV,CAAiB7C,CAAC,EAAlB,CAAD,CAAvB;AACA8B,SAAG,IAAIwxB,MAAM,CAACC,YAAP,CAAoB,CAAC8hB,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,GAA3C,IACLhiB,MAAM,CAACC,YAAP,CAAoB,CAAC+hB,EAAE,IAAI,CAAN,GAAUC,EAAE,IAAI,CAAhB,GAAoBC,EAAE,KAAK,CAA5B,IAAiC,GAArD,CADF;AAED,KAPM,MAOA,IAAIK,MAAM,KAAK,CAAf,EAAkB;AACvBR,QAAE,GAAGV,kBAAkB,CAACS,SAAS,CAACvyC,MAAV,CAAiB7C,CAAC,EAAlB,CAAD,CAAvB;AACAs1C,QAAE,GAAGX,kBAAkB,CAACS,SAAS,CAACvyC,MAAV,CAAiB7C,CAAC,EAAlB,CAAD,CAAvB;AACAu1C,QAAE,GAAGZ,kBAAkB,CAACS,SAAS,CAACvyC,MAAV,CAAiB7C,CAAC,EAAlB,CAAD,CAAvB;AACAw1C,QAAE,GAAGb,kBAAkB,CAACS,SAAS,CAACvyC,MAAV,CAAiB7C,CAAC,EAAlB,CAAD,CAAvB;AACAy1C,QAAE,GAAGd,kBAAkB,CAACS,SAAS,CAACvyC,MAAV,CAAiB7C,CAAC,EAAlB,CAAD,CAAvB;AACA8B,SAAG,IAAIwxB,MAAM,CAACC,YAAP,CAAoB,CAAC8hB,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,GAA3C,IACLhiB,MAAM,CAACC,YAAP,CAAoB,CAAC+hB,EAAE,IAAI,CAAN,GAAUC,EAAE,IAAI,CAAhB,GAAoBC,EAAE,KAAK,CAA5B,IAAiC,GAArD,CADK,GAELliB,MAAM,CAACC,YAAP,CAAoB,CAACiiB,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,GAA3C,CAFF;AAGD,KATM,MASA,IAAII,MAAM,KAAK,CAAf,EAAkB;AACvBR,QAAE,GAAGV,kBAAkB,CAACS,SAAS,CAACvyC,MAAV,CAAiB7C,CAAC,EAAlB,CAAD,CAAvB;AACAs1C,QAAE,GAAGX,kBAAkB,CAACS,SAAS,CAACvyC,MAAV,CAAiB7C,CAAC,EAAlB,CAAD,CAAvB;AACAu1C,QAAE,GAAGZ,kBAAkB,CAACS,SAAS,CAACvyC,MAAV,CAAiB7C,CAAC,EAAlB,CAAD,CAAvB;AACAw1C,QAAE,GAAGb,kBAAkB,CAACS,SAAS,CAACvyC,MAAV,CAAiB7C,CAAC,EAAlB,CAAD,CAAvB;AACAy1C,QAAE,GAAGd,kBAAkB,CAACS,SAAS,CAACvyC,MAAV,CAAiB7C,CAAC,EAAlB,CAAD,CAAvB;AACA01C,QAAE,GAAGf,kBAAkB,CAACS,SAAS,CAACvyC,MAAV,CAAiB7C,CAAC,EAAlB,CAAD,CAAvB;AACA21C,QAAE,GAAGhB,kBAAkB,CAACS,SAAS,CAACvyC,MAAV,CAAiB7C,CAAC,EAAlB,CAAD,CAAvB;AACA8B,SAAG,IAAIwxB,MAAM,CAACC,YAAP,CAAoB,CAAC8hB,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,GAA3C,IACLhiB,MAAM,CAACC,YAAP,CAAoB,CAAC+hB,EAAE,IAAI,CAAN,GAAUC,EAAE,IAAI,CAAhB,GAAoBC,EAAE,KAAK,CAA5B,IAAiC,GAArD,CADK,GAELliB,MAAM,CAACC,YAAP,CAAoB,CAACiiB,EAAE,IAAI,CAAN,GAAUC,EAAE,KAAK,CAAlB,IAAuB,GAA3C,CAFK,GAGLniB,MAAM,CAACC,YAAP,CAAoB,CAACkiB,EAAE,IAAI,CAAN,GAAUC,EAAE,IAAI,CAAhB,GAAoBC,EAAE,KAAK,CAA5B,IAAiC,GAArD,CAHF;AAID;;AACD,WAAO7zC,GAAP;AACD,GAjED;;AAmEA,MAAIyyC,OAAO,GAAG;AACZ0B,UAAM,EAAEA,MADI;AAEZM,UAAM,EAAEA;AAFI,GAAd;AAIAA,QAAM,CAACC,OAAP,GAAiBrB,aAAjB;;AAEA,MAAIf,SAAJ,EAAe;AACbE,UAAM,CAACC,OAAP,GAAiBA,OAAjB;AACD,GAFD,MAEO;AACLP,QAAI,CAACyC,MAAL,GAAclC,OAAd;;AACA,QAAIC,GAAJ,EAAS;AACPC,yCAAO,YAAW;AAChB,eAAOF,OAAP;AACD,OAFK;AAAA,oGAAN;AAGD;AACF;AACF,CAzbD,I;;;;;;;ACLA;AAAO,IAAIr/B,MAAyC,GAAG;AAEnD4C,QAFmD,oBAE9B;AACjB,WAAOjb,MAAM,CAACwM,QAAd;AACH,GAJkD;AAMnDq6B,UANmD,oBAM1CgT,SAN0C,EAMhBrtC,QANgB,EAMK;AAEpD,aAASstC,MAAT,CAAgBhuC,OAAhB,EAAuC;AAEnC,UAAI,CAACA,OAAD,IAAY,CAACA,OAAO,CAACsC,OAArB,IAAgCtC,OAAO,CAACsC,OAAR,CAAgB9I,WAAhB,OAAkC,QAAtE,EAAgF;AAC5E;AACH,OAJkC,CAMnC;;;AACA,UAAI,CAACwG,OAAO,CAACmD,UAAR,CAAmB/G,IAApB,IAA4B4D,OAAO,CAACmD,UAAR,CAAmB/G,IAAnB,CAAwBhG,KAAxB,KAAkC,yBAA9D,IAA2F,CAAC4J,OAAO,CAACsK,UAAxG,EAAoH;AAChH;AACH;;AAED,UAAIjI,GAAG,GAAGrC,OAAO,CAACiuC,YAAR,CAAqB,gBAArB,CAAV;;AAEA,UAAI,CAAC5rC,GAAD,IAAQA,GAAG,KAAK0rC,SAAS,CAAC1rC,GAA9B,EAAmC;AAC/B;AACH;;AAED0rC,eAAS,CAAC3zB,GAAV;AAEA,UAAInV,KAA4B,GAAGjF,OAAO,CAACkuC,SAAR,GAC7BC,IAAI,OAAMnuC,OAAO,CAACkuC,SAAd,OADyB,CACI;AADJ,QAE7B,EAFN;AAIA,UAAIpuC,SAAS,GAAGY,QAAQ,CAACsC,aAAT,CAAuB,KAAvB,CAAhB;;AAEA,UAAI,CAAChD,OAAO,CAACsK,UAAb,EAAyB;AACrB,cAAM,IAAIzT,KAAJ,yBAAN;AACH;;AAEDmJ,aAAO,CAACsK,UAAR,CAAmBoC,YAAnB,CAAgC5M,SAAhC,EAA2CE,OAA3C,EA7BmC,CA+BnC;;AACA+tC,eAAS,CAACC,MAAV,CAAiB/oC,KAAjB,EAAwBnF,SAAxB;AACH;;AAED,aAASsuC,IAAT,GAAgB;AACZ,UAAIC,UAAU,GAAG5yC,KAAK,CAACzE,SAAN,CAAgB6D,KAAhB,CAAsBtG,IAAtB,CAA2BmM,QAAQ,CAAC87B,oBAAT,CAA8B,QAA9B,CAA3B,CAAjB;;AADY,8BAGQ6R,UAHR,gBAGoB;AAA3B,YAAIruC,OAAO,GAAIquC,UAAJ,KAAX;AACDL,cAAM,CAAChuC,OAAD,CAAN;AACH;AACJ;;AAEDouC,QAAI;AACJ1tC,YAAQ,CAACiD,gBAAT,CAA0B,kBAA1B,EAA8CyqC,IAA9C;AACAl6C,UAAM,CAACyP,gBAAP,CAAwB,MAAxB,EAAgCyqC,IAAhC;AAEA1tC,YAAQ,CAACiD,gBAAT,CAA0B,iBAA1B,EAA6C,UAAAU,KAAK,EAAI;AAClD;AACA2pC,YAAM,CAAC3pC,KAAK,CAAC5H,MAAP,CAAN;AACH,KAHD;AAIH;AA3DkD,CAAhD,C;;;;;;;;;;;ACFP;AAsBO,IAAI6xC,KAAgD,GAAG;AAE1Dn/B,QAF0D,oBAE7B;AACzB,QAAIjb,MAAM,CAACq6C,KAAP,IAAgBr6C,MAAM,CAACs6C,QAA3B,EAAqC;AACjC,aAAO;AACHD,aAAK,EAAKr6C,MAAM,CAACq6C,KADd;AAEHC,gBAAQ,EAAEt6C,MAAM,CAACs6C;AAFd,OAAP;AAIH;AACJ,GATyD;AAW1DzT,UAX0D,oBAWjDgT,SAXiD,QAW2C;AAAA,QAAhEQ,KAAgE,QAAhEA,KAAgE;AAAA,QAAzDC,QAAyD,QAAzDA,QAAyD;;AAEjG,QAAID,KAAK,CAACE,WAAV,EAAuB;AAEnB;AACAV,eAAS,CAACO,KAAV,GAAkBC,KAAK,CAACE,WAAN,CAAkB;AAAA;AAEhCT,cAFgC,oBAEJ;AACxB,iBAAOO,KAAK,CAACvrC,aAAN,CAAoB,KAApB,EAA2B,IAA3B,CAAP;AACH,SAJ+B;AAMhC0rC,yBANgC,+BAMZ;AAChBX,mBAAS,CAAC3zB,GAAV;AAEA,cAAI9Z,EAAE,GAAGkuC,QAAQ,CAACG,WAAT,CAAqB,IAArB,CAAT;AAEA,cAAIlwB,MAAM,GAAGsvB,SAAS,CAAClxB,IAAV,CAAeljB,2DAAM,CAAC,EAAD,EAAK,KAAKsL,KAAV,CAArB,EAAuC,IAAvC,EAA6C3E,EAA7C,CAAb;AAEA,eAAKsuC,QAAL,CAAc;AAAEnwB,kBAAM,EAANA;AAAF,WAAd;AAEAA,gBAAM,CAACuvB,MAAP,CAAc1tC,EAAd;AACH,SAhB+B;AAkBhCuuC,0BAlBgC,gCAkBX;AAEjB,cAAI,KAAK9+B,KAAL,IAAc,KAAKA,KAAL,CAAW0O,MAA7B,EAAqC;AACjC,iBAAK1O,KAAL,CAAW0O,MAAX,CAAkBqwB,WAAlB,CAA8Bn1C,2DAAM,CAAC,EAAD,EAAK,KAAKsL,KAAV,CAApC;AACH;AACJ,SAvB+B;AAyBhC8pC,4BAzBgC,kCAyBT;AACnB,cAAI,KAAKh/B,KAAL,IAAc,KAAKA,KAAL,CAAW0O,MAA7B,EAAqC;AACjC,iBAAK1O,KAAL,CAAW0O,MAAX,CAAkBuwB,OAAlB;AACH;AACJ;AA7B+B,OAAlB,CAAlB;AA+BH,KAlCD,MAkCO;AACH;AACAjB,eAAS,CAACO,KAAV;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;;AAAA,eACIN,MADJ,GACI,kBAA4B;AACxB,iBAAOO,KAAK,CAACvrC,aAAN,CAAoB,KAApB,EAA2B,IAA3B,CAAP;AACH,SAHL;;AAAA,eAKI0rC,iBALJ,GAKI,6BAAoB;AAChBX,mBAAS,CAAC3zB,GAAV;AAEA,cAAI9Z,EAAE,GAAGkuC,QAAQ,CAACG,WAAT,CAAqB,IAArB,CAAT;AAEA,cAAIlwB,MAAM,GAAGsvB,SAAS,CAAClxB,IAAV,CAAeljB,2DAAM,CAAC,EAAD,EAAK,KAAKsL,KAAV,CAArB,EAAuC,IAAvC,EAA6C3E,EAA7C,CAAb;AAEA,eAAKsuC,QAAL,CAAc;AAAEnwB,kBAAM,EAANA;AAAF,WAAd;AAEAA,gBAAM,CAACuvB,MAAP,CAAc1tC,EAAd;AACH,SAfL;;AAAA,eAiBIuuC,kBAjBJ,GAiBI,8BAAqB;AAEjB,cAAI,KAAK9+B,KAAL,IAAc,KAAKA,KAAL,CAAW0O,MAA7B,EAAqC;AACjC,iBAAK1O,KAAL,CAAW0O,MAAX,CAAkBqwB,WAAlB,CAA8Bn1C,2DAAM,CAAC,EAAD,EAAK,KAAKsL,KAAV,CAApC;AACH;AACJ,SAtBL;;AAAA,eAwBI8pC,oBAxBJ,GAwBI,gCAAuB;AACnB,cAAI,KAAKh/B,KAAL,IAAc,KAAKA,KAAL,CAAW0O,MAA7B,EAAqC;AACjC,iBAAK1O,KAAL,CAAW0O,MAAX,CAAkBuwB,OAAlB;AACH;AACJ,SA5BL;;AAAA;AAAA,QAAgCT,KAAK,CAACU,SAAtC;AA8BH;;AAED,WAAOlB,SAAS,CAACO,KAAjB;AACH;AAlFyD,CAAvD,C;;;;;;;ACrBP;AAAA;AAAA;AASO,IAAIY,GAAkC,GAAG;AAE5C//B,QAF4C,oBAEnC,CACL;AACH,GAJ2C;AAM5C4rB,UAN4C,oBAMhCgT,SANgC,EAMS;AAEjD,WAAO;AACHC,YADG,kBACIhrC,aADJ,EAC6B;AAC5B,eAAOA,aAAa,CAAC,KAAD,CAApB;AACH,OAHE;AAKHmsC,kBAAY,EAAE,KALX;AAOHC,aAPG,qBAOO;AACN,YAAI9uC,EAAE,GAAG,KAAK+uC,GAAd,CADM,CAGN;;AACA,aAAK5wB,MAAL,GAAcsvB,SAAS,CAAClxB,IAAV,CAAeljB,2DAAM,CAAC,EAAD,EAAK,KAAK21C,MAAV,CAArB,EAAwC,IAAxC,EAA8ChvC,EAA9C,CAAd;AAEA,aAAKme,MAAL,CAAYuvB,MAAZ,CAAmB1tC,EAAnB;AACH,OAdE;AAgBHivC,kBAhBG,0BAgBY;AAEX,YAAI,KAAK9wB,MAAL,IAAe,KAAK6wB,MAAxB,EAAgC;AAC5B,eAAK7wB,MAAL,CAAYqwB,WAAZ,CAAwBn1C,2DAAM,CAAC,EAAD,EAAK,KAAK21C,MAAV,CAA9B;AACH;AACJ;AArBE,KAAP;AAuBH;AA/B2C,CAAzC,C;;;;;;;ACVP;AAAA;AAAA;AAeO,IAAIE,OAAyC,GAAG;AAEnDrgC,QAFmD,oBAE/B;AAChB,WAAOjb,MAAM,CAACs7C,OAAd;AACH,GAJkD;AAMnDzU,UANmD,oBAM1CgT,SAN0C,EAMhB0B,EANgB,EAMc;AAE7D,QAAI9D,MAAM,GAAG8D,EAAE,CAAC9D,MAAH,CAAUoC,SAAS,CAAC1rC,GAApB,EAAyB,EAAzB,EAA6BqtC,SAA7B,CAAuCj2C,qEAAgB,CAACs0C,SAAS,CAAC1rC,GAAX,CAAvD,EAAwE,YAAM;AAEvF,UAAIstC,KAAK,GAAG,EAAZ;;AAFuF,iDAIvE5B,SAAS,CAAC6B,YAAV,EAJuE,8CAI7C;AAArC,YAAIl3C,GAAG,8BAAP;AACDi3C,aAAK,CAACj3C,GAAD,CAAL,GAAa,GAAb;AACH;;AAED,UAAIq1C,SAAS,CAAC8B,UAAd,EAA0B;AACtBF,aAAK,CAAC1qC,KAAN,GAAc,GAAd;AACH;;AAED,aAAO;AACH0qC,aAAK,EAALA,KADG;AAGHG,gBAAQ,EAAE,GAHP;AAKHC,kBAAU,EAAE,CAAE,QAAF,EAAY,UAAZ,EAAwB,UAACC,MAAD,EAASC,QAAT,EAAsB;AAEtD,cAAIlC,SAAS,CAAC8B,UAAV,IAAwB,CAACG,MAAM,CAAC/qC,KAApC,EAA2C;AACvC,kBAAM,IAAIpO,KAAJ,gFAAN;AACH;;AAEDk3C,mBAAS,CAAC3zB,GAAV;;AAEA,mBAAS81B,SAAT,GAAqB;AACjB,gBAAIF,MAAM,CAACG,KAAP,CAAaC,OAAb,KAAyB,QAAzB,IAAqCJ,MAAM,CAACG,KAAP,CAAaC,OAAb,KAAyB,SAAlE,EAA6E;AACzE,kBAAI;AACAJ,sBAAM,CAACK,MAAP;AACH,eAFD,CAEE,OAAO57C,GAAP,EAAY,CACV;AACH;AACJ;AACJ;;AAED,cAAI67C,QAAQ,GAAG,SAAXA,QAAW,GAAM;AAEjB,gBAAIC,UAAJ;;AAEA,gBAAIP,MAAM,CAAC/qC,KAAX,EAAkB;AACdsrC,wBAAU,GAAGP,MAAM,CAAC/qC,KAApB;AACH,aAFD,MAEO;AACHsrC,wBAAU,GAAG,EAAb;;AADG,gDAEax5C,MAAM,CAACyB,IAAP,CAAYm3C,KAAZ,CAFb,qCAEiC;AAA/B,oBAAIj3C,IAAG,qBAAP;;AACD,oBAAIs3C,MAAM,CAACt3C,IAAD,CAAN,KAAgBjB,SAApB,EAA+B;AAC3B84C,4BAAU,CAAC73C,IAAD,CAAV,GAAkBs3C,MAAM,CAACt3C,IAAD,CAAxB;AACH;AACJ;AACJ;;AAED63C,sBAAU,GAAG30C,kEAAa,CAAC20C,UAAD,EAAa;AACnC,0BAAY,mBAACn6C,KAAD,EAAW;AACnB,uBAAO,SAASo6C,cAAT,GAAkC;AACrC,sBAAI/5C,MAAM,GAAGL,KAAK,CAAC2C,KAAN,CAAY,IAAZ,EAAkBmG,SAAlB,CAAb;AACAgxC,2BAAS;AACT,yBAAOz5C,MAAP;AACH,iBAJD;AAKH;AAPkC,aAAb,CAA1B;AAUA,mBAAO85C,UAAP;AACH,WA1BD;;AA4BA,cAAI9xB,MAAM,GAAGsvB,SAAS,CAAClxB,IAAV,CAAeyzB,QAAQ,EAAvB,EAA2B,IAA3B,EAAiCL,QAAQ,CAAC,CAAD,CAAzC,CAAb;AACAxxB,gBAAM,CAACuvB,MAAP,CAAciC,QAAQ,CAAC,CAAD,CAAtB;AAEAD,gBAAM,CAACS,MAAP,CAAc,YAAM;AAChBhyB,kBAAM,CAACqwB,WAAP,CAAmBwB,QAAQ,EAA3B;AACH,WAFD;AAGH,SApDW;AALT,OAAP;AA2DH,KAvEY,CAAb;AAyEA,WAAO3E,MAAP;AACH;AAlFkD,CAAhD,C;;;;;;;;;;;;;;;;;;ACRA,IAAI+E,OAA+D,GAAG;AAEzEvhC,QAFyE,oBAEhE,CACL;AACH,GAJwE;AAMzE4rB,UANyE,oBAMhEgT,SANgE,EAMtC4C,gBANsC,EAM4C;AACjH;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;;AAAA,eACIC,gBADJ,GACI,4BAAmB;AACf7C,mBAAS,CAACC,MAAV,gGAAsB,KAAKl1C,IAA3B,GAAmC,KAAKkH,OAAxC;AACH,SAHL;;AAAA;AAAA,QAAqB2wC,gBAArB;AAAA;AAKH;AAZwE,CAAtE,C;;;;;;;;;;;;ACRP;AAEA;AAqBO,IAAIE,QAA2C,GAAG;AAErD1hC,QAFqD,oBAE5C,CACL;AACH,GAJoD;AAMrD4rB,UANqD,oBAM5C+V,IAN4C,QAM0D;AAAA,QAAnEC,gBAAmE,QAA/E9B,SAA+E;AAAA,QAAjD+B,QAAiD,QAAjDA,QAAiD;AAAA,QAAvCC,UAAuC,QAAvCA,UAAuC;AAAA,QAA3BC,MAA2B,QAA3BA,MAA2B;AAE3GJ,QAAI,CAAC12B,GAAL,CAAS,iCAAT;;AAEA,QAAIk2B,QAAQ,GAAG,SAAXA,QAAW,CAACvC,SAAD,EAAe;AAC1B,aAAOnyC,kEAAa,CAAC,+FAAKmyC,SAAS,CAACoD,aAAhB,MAAkCpD,SAAS,CAAC9oC,KAA5C,GAAqD;AACrE,oBAAY,mBAAC7O,KAAD,EAAW;AACnB,cAAI,OAAOA,KAAP,KAAiB,UAArB,EAAiC;AAC7B,mBAAO,SAASg7C,eAAT,GAAkC;AAAA;AAAA;;AACrC,qBAAOrD,SAAS,CAACsD,IAAV,CAAeC,GAAf,CAAmB;AAAA,uBAAMl7C,KAAK,CAAC2C,KAAN,CAAY,KAAZ,EAAkBmG,UAAlB,CAAN;AAAA,eAAnB,CAAP;AACH,aAFD;AAGH;AACJ;AAPoE,OAArD,CAApB;AASH,KAVD;;AAYA,QAAMqyC,iBAAiB,GACnBR,gBAAgB,CAAC;AACbxwC,cAAQ,EAAEuwC,IAAI,CAACzuC,GADF;AAEbmvC,cAAQ,EAAE,aAFG;AAGbC,YAAM,EAAI,CAAE,OAAF;AAHG,KAAD,CAAhB,CAIGC,KAJH,CAIS;AACLt9C,iBAAW,EAAE,CAAE68C,UAAF,EAAcC,MAAd,EAAsB,SAASS,kBAAT,CAA4BC,UAA5B,EAAwCP,IAAxC,EAA8C;AAC7E,aAAKO,UAAL,GAAkBA,UAAlB;AACA,aAAKP,IAAL,GAAYA,IAAZ;AACH,OAHY,CADR;AAKLQ,cALK,sBAKO;AACR,YAAMC,aAAa,GAAG,KAAKF,UAAL,CAAgBG,aAAtC;AACA,YAAMtzB,MAAM,GAAGqyB,IAAI,CAACj0B,IAAL,CAAUyzB,QAAQ,CAAC,IAAD,CAAlB,EAA0B,IAA1B,EAAgCwB,aAAhC,CAAf;AACArzB,cAAM,CAACuvB,MAAP,CAAc8D,aAAd;AACA,aAAKrzB,MAAL,GAAcA,MAAd;AACH,OAVI;AAWLuzB,iBAXK,yBAWS;AACV,YAAI,KAAKvzB,MAAT,EAAiB;AACb,eAAKA,MAAL,CAAYqwB,WAAZ,CAAwBwB,QAAQ,CAAC,IAAD,CAAhC;AACH;AACJ;AAfI,KAJT,CADJ;AAwBA,QAAM2B,cAAc,GAAGjB,QAAQ,CAAC;AAC5BkB,kBAAY,EAAE,CAAEX,iBAAF,CADc;AAE5B3F,aAAO,EAAO,CAAE2F,iBAAF;AAFc,KAAD,CAAR,CAGpBG,KAHoB,CAGd;AACLt9C,iBADK,yBACU,CACX;AACH;AAHI,KAHc,CAAvB;AASA,WAAO69C,cAAP;AACH;AAxDoD,CAAlD,C;;;;;;ACxBP;;;;;AAKA,CAAC,UAASE,CAAT,EAAW9H,CAAX,EAAa9nB,CAAb,EAAe;AAAC,WAA4BopB,MAAM,CAACC,OAAnC,GAA2CD,MAAM,CAACC,OAAP,GAAerpB,CAAC,EAA3D,GAA8D,QAAsCupB,uBAAM,CAACzB,CAAD,EAAG9nB,CAAH,CAA5C,GAAkD4vB,SAAhH;AAAyH,CAAzI,CAA0I,IAA1I,EAA+I,QAA/I,EAAwJ,YAAU;AAAC,WAAS9H,CAAT,CAAWA,CAAX,EAAa;AAAC,aAAS9nB,CAAT,CAAW4vB,CAAX,EAAa;AAAC,UAAI5vB,CAAC,GAAC8nB,CAAC,CAAC5sC,KAAF,CAAQ00C,CAAR,CAAN;AAAiB,aAAO5vB,CAAC,IAAEA,CAAC,CAACptB,MAAF,GAAS,CAAZ,IAAeotB,CAAC,CAAC,CAAD,CAAhB,IAAqB,EAA5B;AAA+B;;AAAA,aAAS6vB,CAAT,CAAWD,CAAX,EAAa;AAAC,UAAI5vB,CAAC,GAAC8nB,CAAC,CAAC5sC,KAAF,CAAQ00C,CAAR,CAAN;AAAiB,aAAO5vB,CAAC,IAAEA,CAAC,CAACptB,MAAF,GAAS,CAAZ,IAAeotB,CAAC,CAAC,CAAD,CAAhB,IAAqB,EAA5B;AAA+B;;AAAA,aAAS8vB,CAAT,CAAWF,CAAX,EAAa;AAAC,cAAOA,CAAP;AAAU,aAAI,IAAJ;AAAS,iBAAM,IAAN;;AAAW,aAAI,IAAJ;AAAS,iBAAM,IAAN;;AAAW,aAAI,QAAJ;AAAa,iBAAM,MAAN;;AAAa,aAAI,QAAJ;AAAa,iBAAM,IAAN;;AAAW,aAAI,QAAJ;AAAa,iBAAM,MAAN;;AAAa,aAAI,QAAJ;AAAa,iBAAM,OAAN;;AAAc,aAAI,QAAJ;AAAa,iBAAM,GAAN;;AAAU,aAAI,QAAJ;AAAa,iBAAM,GAAN;;AAAU,aAAI,QAAJ;AAAa,iBAAM,KAAN;;AAAY,aAAI,SAAJ;AAAc,iBAAM,IAAN;;AAAW;AAAQ,iBAAO16C,SAAP;AAAjQ;AAAmR;;AAAA,QAAIJ,CAAC,GAACkrB,CAAC,CAAC,qBAAD,CAAD,CAAyB/oB,WAAzB,EAAN;AAAA,QAA6C84C,CAAC,GAAC,gBAAgBllC,IAAhB,CAAqBi9B,CAArB,CAA/C;AAAA,QAAuEkI,CAAC,GAAC,CAACD,CAAD,IAAI,WAAWllC,IAAX,CAAgBi9B,CAAhB,CAA7E;AAAA,QAAgGje,CAAC,GAAC,oBAAoBhf,IAApB,CAAyBi9B,CAAzB,CAAlG;AAAA,QAA8HmI,CAAC,GAAC,CAACpmB,CAAD,IAAI,kBAAkBhf,IAAlB,CAAuBi9B,CAAvB,CAApI;AAAA,QAA8JoI,CAAC,GAAC,OAAOrlC,IAAP,CAAYi9B,CAAZ,CAAhK;AAAA,QAA+KrS,CAAC,GAAC,QAAQ5qB,IAAR,CAAai9B,CAAb,CAAjL;AAAA,QAAiMqI,CAAC,GAAC,YAAYtlC,IAAZ,CAAiBi9B,CAAjB,CAAnM;AAAA,QAAuNsI,CAAC,GAAC,SAASvlC,IAAT,CAAci9B,CAAd,CAAzN;AAAA,QAA0OuI,CAAC,GAAC,mBAAmBxlC,IAAnB,CAAwBi9B,CAAxB,CAA5O;AAAA,QAAuQD,CAAC,GAAC,iBAAiBh9B,IAAjB,CAAsBi9B,CAAtB,CAAzQ;AAAA,QAAkS3S,CAAC,GAAC,kBAAkBtqB,IAAlB,CAAuBi9B,CAAvB,CAApS;AAAA,QAA8T9wC,CAAC,GAAC,CAAC6wC,CAAD,IAAI,WAAWh9B,IAAX,CAAgBi9B,CAAhB,CAApU;AAAA,QAAuVwI,CAAC,GAAC,CAACx7C,CAAD,IAAI,CAAC2gC,CAAL,IAAQ,aAAa5qB,IAAb,CAAkBi9B,CAAlB,CAAjW;AAAA,QAAsXhe,CAAC,GAAC,CAACkmB,CAAD,IAAI,CAACG,CAAL,IAAQ,CAACC,CAAT,IAAY,CAACC,CAAb,IAAgB,SAASxlC,IAAT,CAAci9B,CAAd,CAAxY;AAAA,QAAyZyI,CAAC,GAACV,CAAC,CAAC,+BAAD,CAA5Z;AAAA,QAA8bW,CAAC,GAACxwB,CAAC,CAAC,yBAAD,CAAjc;AAAA,QAA6dywB,CAAC,GAAC,UAAU5lC,IAAV,CAAei9B,CAAf,KAAmB,CAAC,aAAaj9B,IAAb,CAAkBi9B,CAAlB,CAAnf;AAAA,QAAwgB4I,CAAC,GAAC,CAACD,CAAD,IAAI,YAAY5lC,IAAZ,CAAiBi9B,CAAjB,CAA9gB;AAAA,QAAkiB6I,CAAC,GAAC,QAAQ9lC,IAAR,CAAai9B,CAAb,CAApiB;AAAA,QAAojB8I,CAApjB;AAAsjB,aAAS/lC,IAAT,CAAci9B,CAAd,IAAiB8I,CAAC,GAAC;AAAC7+C,UAAI,EAAC,OAAN;AAAcud,WAAK,EAACsgC,CAApB;AAAsBxiC,aAAO,EAACojC,CAAC,IAAExwB,CAAC,CAAC,yCAAD;AAAlC,KAAnB,GAAkG,eAAenV,IAAf,CAAoBi9B,CAApB,IAAuB8I,CAAC,GAAC;AAAC7+C,UAAI,EAAC,OAAN;AAAcud,WAAK,EAACsgC,CAApB;AAAsBxiC,aAAO,EAAC4S,CAAC,CAAC,mCAAD,CAAD,IAAwCwwB;AAAtE,KAAzB,GAAkG,kBAAkB3lC,IAAlB,CAAuBi9B,CAAvB,IAA0B8I,CAAC,GAAC;AAAC7+C,UAAI,EAAC,8BAAN;AAAqCyd,oBAAc,EAACogC,CAApD;AAAsDxiC,aAAO,EAACojC,CAAC,IAAExwB,CAAC,CAAC,wCAAD;AAAlE,KAA5B,GAA0I,SAASnV,IAAT,CAAci9B,CAAd,IAAiB8I,CAAC,GAAC;AAAC7+C,UAAI,EAAC,qBAAN;AAA4B8+C,WAAK,EAACjB,CAAlC;AAAoCxiC,aAAO,EAAC4S,CAAC,CAAC,iCAAD;AAA7C,KAAnB,GAAqG,aAAanV,IAAb,CAAkBi9B,CAAlB,IAAqB8I,CAAC,GAAC;AAAC7+C,UAAI,EAAC,YAAN;AAAmB++C,eAAS,EAAClB,CAA7B;AAA+BxiC,aAAO,EAAC4S,CAAC,CAAC,qCAAD;AAAxC,KAAvB,GAAwG,SAASnV,IAAT,CAAci9B,CAAd,IAAiB8I,CAAC,GAAC;AAAC7+C,UAAI,EAAC,aAAN;AAAoBg/C,WAAK,EAACnB,CAA1B;AAA4BxiC,aAAO,EAACojC,CAAC,IAAExwB,CAAC,CAAC,+BAAD;AAAxC,KAAnB,GAA8F,SAASnV,IAAT,CAAci9B,CAAd,IAAiB8I,CAAC,GAAC;AAAC7+C,UAAI,EAAC,OAAN;AAAci/C,WAAK,EAACpB,CAApB;AAAsBxiC,aAAO,EAAC4S,CAAC,CAAC,iCAAD;AAA/B,KAAnB,GAAuF,aAAanV,IAAb,CAAkBi9B,CAAlB,IAAqB8I,CAAC,GAAC;AAAC7+C,UAAI,EAAC,gBAAN;AAAuBk/C,mBAAa,EAACrB,CAArC;AAAuCxiC,aAAO,EAACojC,CAAC,IAAExwB,CAAC,CAAC,mCAAD;AAAnD,KAAvB,GAAiH,aAAanV,IAAb,CAAkBi9B,CAAlB,IAAqB8I,CAAC,GAAC;AAAC7+C,UAAI,EAAC,YAAN;AAAmB2d,eAAS,EAACkgC,CAA7B;AAA+BxiC,aAAO,EAAC4S,CAAC,CAAC,qCAAD;AAAxC,KAAvB,GAAwG,SAASnV,IAAT,CAAci9B,CAAd,IAAiB8I,CAAC,GAAC;AAAC7+C,UAAI,EAAC,SAAN;AAAgBm/C,aAAO,EAACtB,CAAxB;AAA0BxiC,aAAO,EAAC4S,CAAC,CAAC,iCAAD;AAAnC,KAAnB,GAA2F,YAAYnV,IAAZ,CAAiBi9B,CAAjB,IAAoB8I,CAAC,GAAC;AAAC7+C,UAAI,EAAC,UAAN;AAAiBo/C,cAAQ,EAACvB,CAA1B;AAA4BxiC,aAAO,EAAC4S,CAAC,CAAC,oCAAD;AAArC,KAAtB,GAAmG,UAAUnV,IAAV,CAAei9B,CAAf,IAAkB8I,CAAC,GAAC;AAAC7+C,UAAI,EAAC,QAAN;AAAeq/C,YAAM,EAACxB,CAAtB;AAAwBxiC,aAAO,EAAC4S,CAAC,CAAC,kCAAD;AAAjC,KAApB,GAA2F,YAAYnV,IAAZ,CAAiBi9B,CAAjB,IAAoB8I,CAAC,GAAC;AAAC7+C,UAAI,EAAC,UAAN;AAAiBs/C,cAAQ,EAACzB,CAA1B;AAA4BxiC,aAAO,EAAC4S,CAAC,CAAC,oCAAD;AAArC,KAAtB,GAAmG,YAAYnV,IAAZ,CAAiBi9B,CAAjB,IAAoB8I,CAAC,GAAC;AAAC7+C,UAAI,EAAC,UAAN;AAAiBu/C,aAAO,EAAC1B,CAAzB;AAA2BxiC,aAAO,EAAC4S,CAAC,CAAC,oCAAD;AAApC,KAAtB,GAAkG6nB,CAAC,IAAE+I,CAAC,GAAC;AAAC7+C,UAAI,EAAC,eAAN;AAAsBw/C,YAAM,EAAC,eAA7B;AAA6CC,kBAAY,EAAC5B;AAA1D,KAAF,EAA+DW,CAAC,IAAEK,CAAC,CAACrhC,MAAF,GAASqgC,CAAT,EAAWgB,CAAC,CAACxjC,OAAF,GAAUmjC,CAAvB,KAA2BK,CAAC,CAAC1hC,IAAF,GAAO0gC,CAAP,EAASgB,CAAC,CAACxjC,OAAF,GAAU4S,CAAC,CAAC,0BAAD,CAA/C,CAAlE,IAAgJ,gBAAgBnV,IAAhB,CAAqBi9B,CAArB,IAAwB8I,CAAC,GAAC;AAAC7+C,UAAI,EAAC,mBAAN;AAA0Bmd,UAAI,EAAC0gC,CAA/B;AAAiCxiC,aAAO,EAAC4S,CAAC,CAAC,6BAAD;AAA1C,KAA1B,GAAqGkwB,CAAC,GAACU,CAAC,GAAC;AAAC7+C,UAAI,EAAC,QAAN;AAAew/C,YAAM,EAAC,WAAtB;AAAkCE,cAAQ,EAAC7B,CAA3C;AAA6C8B,gBAAU,EAAC9B,CAAxD;AAA0DxgC,YAAM,EAACwgC,CAAjE;AAAmExiC,aAAO,EAAC4S,CAAC,CAAC,uCAAD;AAA5E,KAAH,GAA0H,iBAAiBnV,IAAjB,CAAsBi9B,CAAtB,IAAyB8I,CAAC,GAAC;AAAC7+C,UAAI,EAAC,gBAAN;AAAuBwd,YAAM,EAACqgC,CAA9B;AAAgCxiC,aAAO,EAACmjC;AAAxC,KAA3B,GAAsE,WAAW1lC,IAAX,CAAgBi9B,CAAhB,IAAmB8I,CAAC,GAAC;AAAC7+C,UAAI,EAAC,SAAN;AAAgB4d,aAAO,EAACigC,CAAxB;AAA0BxiC,aAAO,EAAC4S,CAAC,CAAC,yBAAD,CAAD,IAA8BwwB;AAAhE,KAArB,GAAwFL,CAAC,GAACS,CAAC,GAAC;AAAC7+C,UAAI,EAAC,UAAN;AAAiBw/C,YAAM,EAAC,aAAxB;AAAsCI,cAAQ,EAAC/B,CAA/C;AAAiDxiC,aAAO,EAAC4S,CAAC,CAAC,oCAAD;AAA1D,KAAH,GAAqG,eAAenV,IAAf,CAAoBi9B,CAApB,IAAuB8I,CAAC,GAAC;AAAC7+C,UAAI,EAAC,WAAN;AAAkB6/C,eAAS,EAAChC,CAA5B;AAA8BxiC,aAAO,EAAC4S,CAAC,CAAC,2BAAD;AAAvC,KAAzB,GAA+F,2BAA2BnV,IAA3B,CAAgCi9B,CAAhC,KAAoC8I,CAAC,GAAC;AAAC7+C,UAAI,EAAC,SAAN;AAAgBod,aAAO,EAACygC,CAAxB;AAA0BxiC,aAAO,EAAC4S,CAAC,CAAC,gDAAD;AAAnC,KAAF,EAAyF,wCAAwCnV,IAAxC,CAA6Ci9B,CAA7C,MAAkD8I,CAAC,CAACiB,SAAF,GAAYjC,CAAZ,EAAcgB,CAAC,CAACW,MAAF,GAAS,YAAzE,CAA7H,IAAqN9b,CAAC,GAACmb,CAAC,GAAC;AAAC7+C,UAAI,EAAC,aAAN;AAAoB0d,UAAI,EAACmgC,CAAzB;AAA2BxiC,aAAO,EAAC4S,CAAC,CAAC,sBAAD;AAApC,KAAH,GAAiE,WAAWnV,IAAX,CAAgBi9B,CAAhB,IAAmB8I,CAAC,GAAC;AAAC7+C,UAAI,EAAC,WAAN;AAAkB+/C,aAAO,EAAClC,CAA1B;AAA4BxiC,aAAO,EAAC4S,CAAC,CAAC,2BAAD;AAArC,KAArB,GAAyF,YAAYnV,IAAZ,CAAiBi9B,CAAjB,IAAoB8I,CAAC,GAAC;AAAC7+C,UAAI,EAAC,UAAN;AAAiBggD,YAAM,EAACnC,CAAxB;AAA0BxiC,aAAO,EAAC4S,CAAC,CAAC,0BAAD;AAAnC,KAAtB,GAAuF,sBAAsBnV,IAAtB,CAA2Bi9B,CAA3B,KAA+B,eAAej9B,IAAf,CAAoBi9B,CAApB,CAA/B,GAAsD8I,CAAC,GAAC;AAAC7+C,UAAI,EAAC,YAAN;AAAmBw/C,YAAM,EAAC,eAA1B;AAA0CS,gBAAU,EAACpC,CAArD;AAAuDxiC,aAAO,EAACojC,CAAC,IAAExwB,CAAC,CAAC,iCAAD;AAAnE,KAAxD,GAAgKqwB,CAAC,IAAEO,CAAC,GAAC;AAAC7+C,UAAI,EAAC,OAAN;AAAcw/C,YAAM,EAAC,OAArB;AAA6BU,WAAK,EAACrC,CAAnC;AAAqCxiC,aAAO,EAACojC,CAAC,IAAExwB,CAAC,CAAC,mCAAD;AAAjD,KAAF,EAA0F,cAAcnV,IAAd,CAAmBi9B,CAAnB,MAAwB8I,CAAC,CAACsB,QAAF,GAAWtC,CAAnC,CAA5F,IAAmI,QAAQ/kC,IAAR,CAAai9B,CAAb,IAAgB8I,CAAC,GAAC;AAAC7+C,UAAI,EAAC,MAAN;AAAaw/C,YAAM,EAAC,MAApB;AAA2BY,UAAI,EAACvC,CAAhC;AAAkCxiC,aAAO,EAAC4S,CAAC,CAAC,wBAAD;AAA3C,KAAlB,GAAyFowB,CAAC,GAACQ,CAAC,GAAC;AAAC7+C,UAAI,EAAC,OAAN;AAAcw/C,YAAM,EAAC,OAArB;AAA6Ba,WAAK,EAACxC,CAAnC;AAAqCxiC,aAAO,EAAC4S,CAAC,CAAC,sCAAD,CAAD,IAA2CwwB;AAAxF,KAAH,GAA8F,YAAY3lC,IAAZ,CAAiBi9B,CAAjB,IAAoB8I,CAAC,GAAC;AAAC7+C,UAAI,EAAC,UAAN;AAAiBsgD,cAAQ,EAACzC,CAA1B;AAA4BxiC,aAAO,EAAC4S,CAAC,CAAC,oCAAD,CAAD,IAAyCwwB;AAA7E,KAAtB,GAAsG,YAAY3lC,IAAZ,CAAiBi9B,CAAjB,IAAoB8I,CAAC,GAAC;AAAC7+C,UAAI,EAAC,UAAN;AAAiBugD,cAAQ,EAAC1C,CAA1B;AAA4BxiC,aAAO,EAAC4S,CAAC,CAAC,oCAAD,CAAD,IAAyCwwB;AAA7E,KAAtB,GAAsG,qBAAqB3lC,IAArB,CAA0Bi9B,CAA1B,IAA6B8I,CAAC,GAAC;AAAC7+C,UAAI,EAAC,QAAN;AAAeqd,YAAM,EAACwgC,CAAtB;AAAwBxiC,aAAO,EAAC4S,CAAC,CAAC,uCAAD;AAAjC,KAA/B,GAA2GgwB,CAAC,GAACY,CAAC,GAAC;AAAC7+C,UAAI,EAAC,SAAN;AAAgBqb,aAAO,EAACojC;AAAxB,KAAH,GAA8B,sBAAsB3lC,IAAtB,CAA2Bi9B,CAA3B,KAA+B8I,CAAC,GAAC;AAAC7+C,UAAI,EAAC,QAAN;AAAesd,YAAM,EAACugC;AAAtB,KAAF,EAA2BY,CAAC,KAAGI,CAAC,CAACxjC,OAAF,GAAUojC,CAAb,CAA3D,IAA4E17C,CAAC,IAAE87C,CAAC,GAAC;AAAC7+C,UAAI,EAAC+C,CAAC,IAAE,QAAH,GAAY,QAAZ,GAAqBA,CAAC,IAAE,MAAH,GAAU,MAAV,GAAiB;AAA5C,KAAF,EAAsD07C,CAAC,KAAGI,CAAC,CAACxjC,OAAF,GAAUojC,CAAb,CAAzD,IAA0E,aAAa3lC,IAAb,CAAkBi9B,CAAlB,IAAqB8I,CAAC,GAAC;AAAC7+C,UAAI,EAAC,WAAN;AAAkBwgD,eAAS,EAAC3C,CAA5B;AAA8BxiC,aAAO,EAAC4S,CAAC,CAAC,0BAAD,CAAD,IAA+BwwB;AAArE,KAAvB,GAA+FI,CAAC,GAAC;AAAC7+C,UAAI,EAACiuB,CAAC,CAAC,cAAD,CAAP;AAAwB5S,aAAO,EAACyiC,CAAC,CAAC,cAAD;AAAjC,KAA5kH,EAA+nH,CAACe,CAAC,CAACrhC,MAAH,IAAW,kBAAkB1E,IAAlB,CAAuBi9B,CAAvB,CAAX,IAAsC,2BAA2Bj9B,IAA3B,CAAgCi9B,CAAhC,KAAoC8I,CAAC,CAAC7+C,IAAF,GAAO6+C,CAAC,CAAC7+C,IAAF,IAAQ,OAAf,EAAuB6+C,CAAC,CAAC4B,KAAF,GAAQ5C,CAAnE,KAAuEgB,CAAC,CAAC7+C,IAAF,GAAO6+C,CAAC,CAAC7+C,IAAF,IAAQ,QAAf,EAAwB6+C,CAAC,CAAC6B,MAAF,GAAS7C,CAAxG,GAA2G,CAACgB,CAAC,CAACxjC,OAAH,IAAYojC,CAAZ,KAAgBI,CAAC,CAACxjC,OAAF,GAAUojC,CAA1B,CAAjJ,IAA+K,CAACI,CAAC,CAACthC,KAAH,IAAU,WAAWzE,IAAX,CAAgBi9B,CAAhB,CAAV,KAA+B8I,CAAC,CAAC7+C,IAAF,GAAO6+C,CAAC,CAAC7+C,IAAF,IAAQ,OAAf,EAAuB6+C,CAAC,CAAC8B,KAAF,GAAQ9C,CAA/B,EAAiCgB,CAAC,CAACxjC,OAAF,GAAUwjC,CAAC,CAACxjC,OAAF,IAAW4S,CAAC,CAAC,uBAAD,CAAtF,CAA9yH,EAA+5H,CAAC4wB,CAAC,CAACY,YAAH,KAAkBxB,CAAC,IAAEY,CAAC,CAACnhC,IAAvB,KAA8BmhC,CAAC,CAAC+B,OAAF,GAAU/C,CAAV,EAAYgB,CAAC,CAACW,MAAF,GAAS,SAAnD,IAA8D,CAACX,CAAC,CAACY,YAAH,IAAiB18C,CAAjB,IAAoB87C,CAAC,CAAC97C,CAAD,CAAD,GAAK86C,CAAL,EAAOgB,CAAC,CAACgC,GAAF,GAAMhD,CAAb,EAAegB,CAAC,CAACW,MAAF,GAAS,KAA5C,IAAmDjB,CAAC,IAAEM,CAAC,CAACiC,GAAF,GAAMjD,CAAN,EAAQgB,CAAC,CAACW,MAAF,GAAS,OAAnB,IAA4BZ,CAAC,IAAEC,CAAC,CAACkC,IAAF,GAAOlD,CAAP,EAASgB,CAAC,CAACW,MAAF,GAAS,MAApB,IAA4Bv6C,CAAC,IAAE45C,CAAC,CAACmC,OAAF,GAAUnD,CAAV,EAAYgB,CAAC,CAACW,MAAF,GAAS,SAAvB,IAAkCznB,CAAC,KAAG8mB,CAAC,CAACoC,KAAF,GAAQpD,CAAR,EAAUgB,CAAC,CAACW,MAAF,GAAS,OAAtB,CAA9mI;AAA6oI,QAAI0B,CAAC,GAAC,EAAN;AAASrC,KAAC,CAACmC,OAAF,GAAUE,CAAC,GAACnD,CAAC,CAAC9vB,CAAC,CAAC,gCAAD,CAAF,CAAb,GAAmD4wB,CAAC,CAACY,YAAF,GAAeyB,CAAC,GAACjzB,CAAC,CAAC,wCAAD,CAAlB,GAA6D4wB,CAAC,CAACiC,GAAF,IAAOI,CAAC,GAACjzB,CAAC,CAAC,8BAAD,CAAH,EAAoCizB,CAAC,GAACA,CAAC,CAACp8C,OAAF,CAAU,QAAV,EAAmB,GAAnB,CAA7C,IAAsE/B,CAAC,IAAEm+C,CAAC,GAACjzB,CAAC,CAAC,oCAAD,CAAH,EAA0CizB,CAAC,GAACA,CAAC,CAACp8C,OAAF,CAAU,QAAV,EAAmB,GAAnB,CAA9C,IAAuEm5C,CAAC,GAACiD,CAAC,GAACjzB,CAAC,CAAC,6BAAD,CAAJ,GAAoC4wB,CAAC,CAACqB,KAAF,GAAQgB,CAAC,GAACjzB,CAAC,CAAC,+BAAD,CAAX,GAA6C4wB,CAAC,CAACoB,UAAF,GAAaiB,CAAC,GAACjzB,CAAC,CAAC,iCAAD,CAAhB,GAAoD4wB,CAAC,CAACuB,IAAF,GAAOc,CAAC,GAACjzB,CAAC,CAAC,sBAAD,CAAV,GAAmC4wB,CAAC,CAACwB,KAAF,KAAUa,CAAC,GAACjzB,CAAC,CAAC,2BAAD,CAAb,CAAva,EAAmdizB,CAAC,KAAGrC,CAAC,CAACsC,SAAF,GAAYD,CAAf,CAApd;AAAse,QAAIE,CAAC,GAAC,CAACvC,CAAC,CAACmC,OAAH,IAAYE,CAAC,CAACt6C,KAAF,CAAQ,GAAR,EAAa,CAAb,CAAlB;AAAkC,QAAG83C,CAAC,IAAER,CAAH,IAAMn7C,CAAC,IAAE,MAAT,IAAiBk7C,CAAC,KAAGmD,CAAC,IAAE,CAAH,IAAMA,CAAC,IAAE,CAAH,IAAM,CAACzC,CAAhB,CAAlB,IAAsCE,CAAC,CAACnhC,IAA3C,EAAgDmhC,CAAC,CAACwC,MAAF,GAASxD,CAAT,CAAhD,KAAgE,IAAGc,CAAC,IAAE57C,CAAC,IAAE,QAAN,IAAgBA,CAAC,IAAE,MAAnB,IAA2Bk7C,CAA3B,IAA8BnmB,CAA9B,IAAiC+mB,CAAC,CAACoB,UAAnC,IAA+CpB,CAAC,CAACqB,KAAjD,IAAwDrB,CAAC,CAACuB,IAA7D,EAAkEvB,CAAC,CAACyC,MAAF,GAASzD,CAAT;AAAW,WAAOgB,CAAC,CAACrhC,MAAF,IAAUqhC,CAAC,CAAC1hC,IAAF,IAAQ0hC,CAAC,CAACxjC,OAAF,IAAW,EAA7B,IAAiCwjC,CAAC,CAACK,aAAF,IAAiBL,CAAC,CAACxjC,OAAF,IAAW,EAA7D,IAAiEwjC,CAAC,CAACjhC,OAAF,IAAWihC,CAAC,CAACxjC,OAAF,IAAW,CAAvF,IAA0FwjC,CAAC,CAACxhC,MAAF,IAAUwhC,CAAC,CAACxjC,OAAF,IAAW,EAA/G,IAAmHwjC,CAAC,CAACphC,cAAF,IAAkBohC,CAAC,CAACxjC,OAAF,IAAW,CAAhJ,IAAmJwjC,CAAC,CAACC,KAAF,IAASyC,CAAC,CAAC,CAAC1C,CAAC,CAACxjC,OAAH,EAAW,KAAX,CAAD,CAAD,KAAuB,CAAnL,IAAsLwjC,CAAC,CAACE,SAAF,IAAawC,CAAC,CAAC,CAAC1C,CAAC,CAACxjC,OAAH,EAAW,KAAX,CAAD,CAAD,KAAuB,CAA1N,IAA6NwjC,CAAC,CAACI,KAAF,IAASsC,CAAC,CAAC,CAAC1C,CAAC,CAACxjC,OAAH,EAAW,KAAX,CAAD,CAAD,KAAuB,CAA7P,IAAgQwjC,CAAC,CAACzhC,OAAF,IAAWyhC,CAAC,CAACxjC,OAAF,IAAW,EAAtR,IAA0RwjC,CAAC,CAACvhC,MAAF,IAAUuhC,CAAC,CAACxjC,OAAF,IAAW,CAA/S,IAAkTwjC,CAAC,CAACthC,KAAF,IAASshC,CAAC,CAACxjC,OAAF,IAAW,EAAtU,IAA0UwjC,CAAC,CAACgC,GAAF,IAAOhC,CAAC,CAACsC,SAAT,IAAoBtC,CAAC,CAACsC,SAAF,CAAYv6C,KAAZ,CAAkB,GAAlB,EAAuB,CAAvB,KAA2B,CAAzX,IAA4Xi4C,CAAC,CAACoB,UAAF,IAAcpB,CAAC,CAACxjC,OAAF,IAAW,IAArZ,IAA2ZwjC,CAAC,CAAC0B,QAAF,IAAY1B,CAAC,CAACxjC,OAAF,IAAW,EAAlb,GAAqbwjC,CAAC,CAAC/mB,CAAF,GAAI+lB,CAAzb,GAA2bgB,CAAC,CAAC1hC,IAAF,IAAQ0hC,CAAC,CAACxjC,OAAF,GAAU,EAAlB,IAAsBwjC,CAAC,CAACxhC,MAAF,IAAUwhC,CAAC,CAACxjC,OAAF,GAAU,EAA1C,IAA8CwjC,CAAC,CAACzhC,OAAF,IAAWyhC,CAAC,CAACxjC,OAAF,GAAU,EAAnE,IAAuEwjC,CAAC,CAACvhC,MAAF,IAAUuhC,CAAC,CAACxjC,OAAF,GAAU,CAA3F,IAA8FwjC,CAAC,CAACthC,KAAF,IAASshC,CAAC,CAACxjC,OAAF,GAAU,EAAjH,IAAqHwjC,CAAC,CAACgC,GAAF,IAAOhC,CAAC,CAACsC,SAAT,IAAoBtC,CAAC,CAACsC,SAAF,CAAYv6C,KAAZ,CAAkB,GAAlB,EAAuB,CAAvB,IAA0B,CAAnK,IAAsKi4C,CAAC,CAAC0B,QAAF,IAAY1B,CAAC,CAACxjC,OAAF,GAAU,EAA5L,GAA+LwjC,CAAC,CAACnb,CAAF,GAAIma,CAAnM,GAAqMgB,CAAC,CAACF,CAAF,GAAId,CAApoB,EAAsoBgB,CAA7oB;AAA+oB;;AAAA,WAASf,CAAT,CAAWD,CAAX,EAAa;AAAC,WAAOA,CAAC,CAACj3C,KAAF,CAAQ,GAAR,EAAa/F,MAApB;AAA2B;;AAAA,WAASkC,CAAT,CAAW86C,CAAX,EAAa9H,CAAb,EAAe;AAAC,QAAI9nB,CAAC,GAAC,EAAN;AAAA,QAAS6vB,CAAT;AAAW,QAAG32C,KAAK,CAACzE,SAAN,CAAgByB,GAAnB,EAAuB,OAAOgD,KAAK,CAACzE,SAAN,CAAgByB,GAAhB,CAAoBlE,IAApB,CAAyB49C,CAAzB,EAA2B9H,CAA3B,CAAP;;AAAqC,SAAI+H,CAAC,GAAC,CAAN,EAAQA,CAAC,GAACD,CAAC,CAACh9C,MAAZ,EAAmBi9C,CAAC,EAApB;AAAuB7vB,OAAC,CAACxtB,IAAF,CAAOs1C,CAAC,CAAC8H,CAAC,CAACC,CAAD,CAAF,CAAR;AAAvB;;AAAuC,WAAO7vB,CAAP;AAAS;;AAAA,WAASszB,CAAT,CAAW1D,CAAX,EAAa;AAAC,QAAI9H,CAAC,GAAClwC,IAAI,CAAC4T,GAAL,CAASqkC,CAAC,CAACD,CAAC,CAAC,CAAD,CAAF,CAAV,EAAiBC,CAAC,CAACD,CAAC,CAAC,CAAD,CAAF,CAAlB,CAAN;AAAA,QAAgC5vB,CAAC,GAAClrB,CAAC,CAAC86C,CAAD,EAAG,UAASA,CAAT,EAAW;AAAC,UAAI5vB,CAAC,GAAC8nB,CAAC,GAAC+H,CAAC,CAACD,CAAD,CAAT;AAAa,aAAOA,CAAC,IAAG,IAAI12C,KAAJ,CAAU8mB,CAAC,GAAC,CAAZ,CAAD,CAAiBvlB,IAAjB,CAAsB,IAAtB,CAAH,EAA+B3F,CAAC,CAAC86C,CAAC,CAACj3C,KAAF,CAAQ,GAAR,CAAD,EAAc,UAASi3C,CAAT,EAAW;AAAC,eAAO,IAAI12C,KAAJ,CAAU,KAAG02C,CAAC,CAACh9C,MAAf,CAAD,CAAyB6H,IAAzB,CAA8B,GAA9B,IAAmCm1C,CAAzC;AAA2C,OAArE,CAAD,CAAwE2D,OAAxE,EAAtC;AAAwH,KAApJ,CAAnC;;AAAyL,WAAM,EAAEzL,CAAF,IAAK,CAAX,EAAa;AAAC,UAAG9nB,CAAC,CAAC,CAAD,CAAD,CAAK8nB,CAAL,IAAQ9nB,CAAC,CAAC,CAAD,CAAD,CAAK8nB,CAAL,CAAX,EAAmB,OAAO,CAAP;AAAS,UAAG9nB,CAAC,CAAC,CAAD,CAAD,CAAK8nB,CAAL,MAAU9nB,CAAC,CAAC,CAAD,CAAD,CAAK8nB,CAAL,CAAb,EAAqB,OAAM,CAAC,CAAP;AAAS,UAAGA,CAAC,KAAG,CAAP,EAAS,OAAO,CAAP;AAAS;AAAC;;AAAA,WAASiI,CAAT,CAAWH,CAAX,EAAaC,CAAb,EAAe/6C,CAAf,EAAiB;AAAC,QAAIi7C,CAAC,GAAC/vB,CAAN;AAAQ,WAAO6vB,CAAP,IAAU,QAAV,KAAqB/6C,CAAC,GAAC+6C,CAAF,EAAIA,CAAC,GAAC,KAAK,CAAhC,GAAmCA,CAAC,KAAG,KAAK,CAAT,KAAaA,CAAC,GAAC,CAAC,CAAhB,CAAnC,EAAsD/6C,CAAC,KAAGi7C,CAAC,GAACjI,CAAC,CAAChzC,CAAD,CAAN,CAAvD;AAAkE,QAAIk7C,CAAC,GAAC,KAAGD,CAAC,CAAC3iC,OAAX;;AAAmB,SAAI,IAAIyc,CAAR,IAAa+lB,CAAb;AAAe,UAAGA,CAAC,CAACr4C,cAAF,CAAiBsyB,CAAjB,KAAqBkmB,CAAC,CAAClmB,CAAD,CAAzB,EAA6B;AAAC,YAAG,OAAO+lB,CAAC,CAAC/lB,CAAD,CAAR,IAAa,QAAhB,EAAyB,MAAM,IAAIv1B,KAAJ,CAAU,+DAA6Du1B,CAA7D,GAA+D,IAA/D,GAAoEzB,MAAM,CAACwnB,CAAD,CAApF,CAAN;AAA+F,eAAO0D,CAAC,CAAC,CAACtD,CAAD,EAAGJ,CAAC,CAAC/lB,CAAD,CAAJ,CAAD,CAAD,GAAY,CAAnB;AAAqB;AAA1L;;AAA0L,WAAOgmB,CAAP;AAAS;;AAAA,WAASG,CAAT,CAAWJ,CAAX,EAAa9H,CAAb,EAAe9nB,CAAf,EAAiB;AAAC,WAAM,CAAC+vB,CAAC,CAACH,CAAD,EAAG9H,CAAH,EAAK9nB,CAAL,CAAR;AAAgB;;AAAA,MAAI4vB,CAAC,GAAC,CAAC,CAAP;AAAA,MAAS5vB,CAAC,GAAC8nB,CAAC,CAAC,OAAOlmC,SAAP,IAAkB,WAAlB,GAA8BA,SAAS,CAACC,SAAV,IAAqB,EAAnD,GAAsD,EAAvD,CAAZ;AAAuE,SAAOme,CAAC,CAACnV,IAAF,GAAO,UAAS+kC,CAAT,EAAW;AAAC,SAAI,IAAI9H,CAAC,GAAC,CAAV,EAAYA,CAAC,GAAC8H,CAAC,CAACh9C,MAAhB,EAAuB,EAAEk1C,CAAzB,EAA2B;AAAC,UAAI+H,CAAC,GAACD,CAAC,CAAC9H,CAAD,CAAP;AAAW,UAAG,OAAO+H,CAAP,IAAU,QAAV,IAAoBA,CAAC,IAAI7vB,CAA5B,EAA8B,OAAM,CAAC,CAAP;AAAS;;AAAA,WAAM,CAAC,CAAP;AAAS,GAA1G,EAA2GA,CAAC,CAACwzB,oBAAF,GAAuBzD,CAAlI,EAAoI/vB,CAAC,CAACyzB,eAAF,GAAkBH,CAAtJ,EAAwJtzB,CAAC,CAACtb,KAAF,GAAQsrC,CAAhK,EAAkKhwB,CAAC,CAAC0zB,OAAF,GAAU5L,CAA5K,EAA8K9nB,CAAC,CAAC2zB,MAAF,GAAS7L,CAAvL,EAAyL9nB,CAAhM;AAAkM,CAA7mP,CAAD,C;;;;;;;;;;;;;;;;ACHA;AAEA;AAEO,SAAS4K,qBAAT,CAA+BgpB,YAA/B,EAAqE/kB,YAArE,EAA2G;AAC9G,MAAI,CAAC3iB,sBAAM,CAAC8a,uBAAZ,EAAqC;AAEjC,QAAI9G,sCAAe,CAAC0zB,YAAD,EAAe/kB,YAAf,CAAf,KAAgD,KAApD,EAA2D;AACvD,YAAM,IAAIv6B,KAAJ,iGAAN;AACH;AACJ;AACJ,C;;ACXD;;;;;;;ACFA,+5E;;;;;;ACAA,yiD;;;;;;ACAA,w0BAAw0B,q/BAAq/B,imB;;;;;;ACA7zD,ssH;;;;;;ACAA,gwK;;;;;;ACAA,qsH;;;;;;ACAA,otOAAotO,IAAI,IAAI,IAAI,kIAAkI,IAAI,IAAI,IAAI,0HAA0H,IAAI,IAAI,IAAI,sHAAsH,IAAI,IAAI,IAAI,kHAAkH,IAAI,IAAI,IAAI,+HAA+H,IAAI,IAAI,IAAI,0HAA0H,IAAI,IAAI,IAAI,+HAA+H,IAAI,IAAI,IAAI,6HAA6H,IAAI,IAAI,IAAI,yHAAyH,IAAI,IAAI,IAAI,oKAAoK,IAAI,IAAI,IAAI,6LAA6L,IAAI,qB;;;;;;ACA/wR,msBAAmsB,iQAAiQ,0XAA0X,+SAA+S,uKAAuK,+sBAA+sB,qhBAAqhB,ibAAib,yhBAAyhB,8bAA8b,mZAAmZ,mWAAmW,qUAAqU,sbAAsb,qbAAqb,uhCAAuhC,sLAAsL,IAAI,IAAI,IAAI,kIAAkI,IAAI,IAAI,IAAI,0HAA0H,IAAI,IAAI,IAAI,sHAAsH,IAAI,IAAI,IAAI,kHAAkH,IAAI,IAAI,IAAI,+HAA+H,IAAI,IAAI,IAAI,0HAA0H,IAAI,IAAI,IAAI,+HAA+H,IAAI,IAAI,IAAI,6HAA6H,IAAI,IAAI,IAAI,yHAAyH,IAAI,IAAI,IAAI,qEAAqE,kHAAkH,IAAI,IAAI,IAAI,wGAAwG,wGAAwG,IAAI,oCAAoC,qB;;;;;;ACAxnS,yXAAyX,2wBAA2wB,a;;;;;;ACApoC,wWAAwW,kOAAkO,kgBAAkgB,a;;;;;;ACA5kC,wXAAwX,4CAA4C,2XAA2X,6TAA6T,8vIAA8vI,a;;;;;;ACA11K,+1LAA+1L,k3B;;;;;;ACA/1L,sWAAsW,yoEAAyoE,u9BAAu9B,6EAA6E,iFAAiF,kFAAkF,0aAA0a,2C;;;;;;ACAhmI,yXAAyX,6DAA6D,iBAAiB,oBAAoB,cAAc,8PAA8P,iBAAiB,oBAAoB,cAAc,2gBAA2gB,iBAAiB,oBAAoB,cAAc,2bAA2b,iBAAiB,oBAAoB,cAAc,sPAAsP,iBAAiB,oBAAoB,cAAc,sqB;;;;;;ACA/mE,sWAAsW,2QAA2Q,0QAA0Q,4RAA4R,i1BAAi1B,sPAAsP,oNAAoN,IAAI,IAAI,yEAAyE,mIAAmI,IAAI,IAAI,yEAAyE,iIAAiI,IAAI,IAAI,qEAAqE,qB;;;;;;ACAr6F,oZAAoZ,yMAAyM,4BAA4B,ssJ;;;;;;ACAznB,67c;;;;;;;ACEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;;AAEA,IAAI,KAAJ,EAAsE,EAErE;;AAED,IAAI3C,MAAM,CAACkiD,MAAP,IAAiBliD,MAAM,CAACkiD,MAAP,CAAczmC,OAAd,KAA0BC,SAA/C,EAAsF;AAElFg6B,oEAAM,CAAC,uCAAD,EAA0C;AAC5Cj6B,WAAO,EAAEC,SAAqCymC;AADF,GAA1C,CAAN;AAIA,QAAM,IAAIx/C,KAAJ,4DAAoE+Y,SAApE,8BAAN;AAEH,CARD,MAQO,IAAI1b,MAAM,CAACkiD,MAAP,IAAiBliD,MAAM,CAACkiD,MAAP,CAAczmC,OAA/B,IAA0Czb,MAAM,CAACkiD,MAAP,CAAczmC,OAAd,KAA0BC,SAApE,IAA6G1b,MAAM,CAACkiD,MAAP,CAAcE,MAA3H,IAAqIpiD,MAAM,CAACkiD,MAAP,CAAcE,MAAd,CAAqBtI,MAA9J,EAAsK;AAEzKpE,oEAAM,CAAC,4CAAD,EAA+C;AACjD2M,mBAAe,EAAEriD,MAAM,CAACkiD,MAAP,CAAczmC,OADkB;AAEjDA,WAAO,EAAUC,SAAqCymC;AAFL,GAA/C,CAAN;AAKA,QAAM,IAAIx/C,KAAJ,iEAAyE3C,MAAM,CAACkiD,MAAP,CAAczmC,OAAvF,mDAA8IC,SAA9I,CAAN;AAEH,CATM,MASA;AAEH,MAAI;AACA,QAAM4mC,UAAU,GAAGtpB,mBAAO,CAAC,EAAD,CAA1B;;AACA6d,kFAAe,CAACyL,UAAD,EAAa,CAAE,QAAF,EAAY,QAAZ,EAAsB,MAAtB,CAAb,EAA6C,CAAE,MAAF,CAA7C,CAAf;AAEH,GAJD,CAIE,OAAO/hD,GAAP,EAAY;AAEVm1C,sEAAM,CAAC,iBAAD,EAAoB;AACtBvzC,WAAK,EAAI8H,wEAAc,CAAC1J,GAAD,CADD;AAEtBgiD,aAAO,EAAG,EAAD,CAAKpiD,QAAL,CAAcE,IAAd,CAAmBE,GAAnB;AAFa,KAApB,CAAN;AAKA,UAAMA,GAAN;AACH;AACJ,C;;;;;;;ACzCD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;ACFA;AACA;;;;;;;;ACDA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACFe,SAASiiD,sBAAT,CAAgC92C,IAAhC,EAAsC;AACnD,MAAIA,IAAI,KAAK,KAAK,CAAlB,EAAqB;AACnB,UAAM,IAAI+2C,cAAJ,CAAmB,2DAAnB,CAAN;AACD;;AAED,SAAO/2C,IAAP;AACD,C;;;;;ACNc,SAASg3C,yBAAT,CAAmCn6C,MAAnC,EAA2Co6C,QAA3C,EAAqDC,UAArD,EAAiEp6C,UAAjE,EAA6E7D,OAA7E,EAAsF;AACnG,MAAIsmB,IAAI,GAAG,EAAX;AACApoB,QAAM,CAACyB,IAAP,CAAYkE,UAAZ,EAAwB2f,OAAxB,CAAgC,UAAU3jB,GAAV,EAAe;AAC7CymB,QAAI,CAACzmB,GAAD,CAAJ,GAAYgE,UAAU,CAAChE,GAAD,CAAtB;AACD,GAFD;AAGAymB,MAAI,CAACljB,UAAL,GAAkB,CAAC,CAACkjB,IAAI,CAACljB,UAAzB;AACAkjB,MAAI,CAACnjB,YAAL,GAAoB,CAAC,CAACmjB,IAAI,CAACnjB,YAA3B;;AAEA,MAAI,WAAWmjB,IAAX,IAAmBA,IAAI,CAAC43B,WAA5B,EAAyC;AACvC53B,QAAI,CAAC4kB,QAAL,GAAgB,IAAhB;AACD;;AAED5kB,MAAI,GAAG23B,UAAU,CAACj8C,KAAX,GAAmBi7C,OAAnB,GAA6BkB,MAA7B,CAAoC,UAAU73B,IAAV,EAAgB83B,SAAhB,EAA2B;AACpE,WAAOA,SAAS,CAACx6C,MAAD,EAASo6C,QAAT,EAAmB13B,IAAnB,CAAT,IAAqCA,IAA5C;AACD,GAFM,EAEJA,IAFI,CAAP;;AAIA,MAAItmB,OAAO,IAAIsmB,IAAI,CAAC43B,WAAL,KAAqB,KAAK,CAAzC,EAA4C;AAC1C53B,QAAI,CAAC/oB,KAAL,GAAa+oB,IAAI,CAAC43B,WAAL,GAAmB53B,IAAI,CAAC43B,WAAL,CAAiBxiD,IAAjB,CAAsBsE,OAAtB,CAAnB,GAAoD,KAAK,CAAtE;AACAsmB,QAAI,CAAC43B,WAAL,GAAmBt/C,SAAnB;AACD;;AAED,MAAI0nB,IAAI,CAAC43B,WAAL,KAAqB,KAAK,CAA9B,EAAiC;AAC/BhgD,UAAM,CAACgF,cAAP,CAAsBU,MAAtB,EAA8Bo6C,QAA9B,EAAwC13B,IAAxC;AACAA,QAAI,GAAG,IAAP;AACD;;AAED,SAAOA,IAAP;AACD,C;;;;;;;;;;;ACzBD;AACA;AAGA;;AAaA,SAASyb,OAAT,CAAiBhhC,GAAjB,EAA6C;AAEzC,MAAIihC,KAAK,GAAG,EAAZ;AACA,MAAIC,OAAO,GAAG,KAAd;AAEA,SAAO;AAEHv+B,OAFG,eAEYjI,IAFZ,EAE2BN,IAF3B,EAEyC;AAExC,UAAI8mC,OAAJ,EAAa;AACT,eAAO9mC,IAAP;AACH;;AAED4F,SAAG,CAACtF,IAAD,CAAH,GAAYN,IAAZ;AACA,WAAK+mC,QAAL,CAAc,YAAM;AAChB,eAAOnhC,GAAG,CAACtF,IAAD,CAAV;AACH,OAFD;AAGA,aAAON,IAAP;AACH,KAbE;AAeH+mC,YAfG,oBAeMzmC,IAfN,EAegCsE,MAfhC,EAeoD;AAEnD,UAAI,OAAOtE,IAAP,KAAgB,UAApB,EAAgC;AAC5BsE,cAAM,GAAGtE,IAAT;AACAA,YAAI,GAAG,6BAAP;AACH;;AAED,UAAI,OAAOsE,MAAP,KAAkB,UAAtB,EAAkC;AAC9B,cAAM,IAAIX,SAAJ,oDAAN;AACH;;AAED,UAAI6iC,OAAJ,EAAa;AACTliC,cAAM;AACN;AACH;;AAEDiiC,WAAK,CAAC9lC,IAAN,CAAW;AACPmiD,gBAAQ,EAAE,KADH;AAGP5iD,YAAI,EAAJA,IAHO;AAKPg9C,WALO,iBAKD;AAEF,cAAI,KAAK4F,QAAT,EAAmB;AACf;AACH;;AAED,eAAKA,QAAL,GAAgB,IAAhB;;AAEA,cAAIt+C,MAAJ,EAAY;AACRA,kBAAM;AACT;AACJ;AAhBM,OAAX;AAkBH,KAjDE;AAmDHu+C,YAnDG,sBAmDkB;AACjB,aAAO11C,OAAO,CAACo5B,KAAK,CAACr5B,MAAN,CAAa,UAAAxN,IAAI;AAAA,eAAI,CAACA,IAAI,CAACkjD,QAAV;AAAA,OAAjB,EAAqC/hD,MAAtC,CAAd;AACH,KArDE;AAuDH+C,OAvDG,iBAuDwB;AACvB,UAAIG,OAAO,GAAG,EAAd;AAEAyiC,aAAO,GAAG,IAAV;;AAEA,aAAOD,KAAK,CAAC1lC,MAAb,EAAqB;AACjBkD,eAAO,CAACtD,IAAR,CAAa8lC,KAAK,CAACI,GAAN,GAAYqW,GAAZ,EAAb;AACH;;AAED,aAAOt7C,yCAAY,CAACkC,GAAb,CAAiBG,OAAjB,EAA0B7D,IAA1B,CAA+B,YAAM;AAAE;AAAY,OAAnD,CAAP;AACH,KAjEE;AAmEH88C,OAnEG,eAmECh9C,IAnED,EAmEqC;AACpC,UAAI+D,OAAO,GAAG,EAAd;;AADoC,8BAGnBwiC,KAHmB,gBAGZ;AAAnB,YAAI7mC,IAAI,GAAI6mC,KAAJ,KAAR;;AACD,YAAI7mC,IAAI,CAACM,IAAL,KAAcA,IAAlB,EAAwB;AACpB+D,iBAAO,CAACtD,IAAR,CAAaf,IAAI,CAACs9C,GAAL,EAAb;AACH;AACJ;;AAED,aAAOt7C,yCAAY,CAACkC,GAAb,CAAiBG,OAAjB,EAA0B7D,IAA1B,CAA+BuK,mBAA/B,CAAP;AACH;AA7EE,GAAP;AA+EH;AAGD;;;;;;;;AAOO,IAAMq4C,kBAAb;AAAA;AAAA;AAMI,2BAAc;AAAA,SAJdruC,KAIc;AAAA,SAHd1E,KAGc;AAAA,SAFd0pC,SAEc;AACV,SAAKhlC,KAAL,GAAa6xB,OAAO,CAAC,IAAD,CAApB;AACA,SAAKv2B,KAAL,GAAahG,mCAAY,EAAzB;AACH;;AATL;;AAAA,SAWIg5C,OAXJ,GAWI,iBAAQ/1C,OAAR,EAA0BhN,IAA1B,EAAyC0G,GAAzC,EAAsD;AAClDwB,mCAAQ,CAAC8E,OAAD,EAAU,IAAV,EAAgBhN,IAAhB,EAAsB0G,GAAtB,CAAR;AACH,GAbL;;AAAA,SAeIuD,EAfJ,GAeI,YAAGC,SAAH,EAAuBnJ,OAAvB,EAA8D;AAC1D,WAAO,KAAKgP,KAAL,CAAW9F,EAAX,CAAcC,SAAd,EAAyBnJ,OAAzB,CAAP;AACH,GAjBL;;AAAA,SAmBI01B,SAnBJ,GAmBI,qBAAY;AACR,UAAM,IAAIl0B,KAAJ,wCAAN;AACH,GArBL;;AAAA,SAuBIR,KAvBJ,GAuBI,eAAM5B,GAAN,EAAwC;AACpC,UAAM,IAAIoC,KAAJ,6CAAqDsH,qCAAc,CAAC1J,GAAD,CAAnE,CAAN;AACH;AAED;;;;;;AA3BJ;;AAAA,SAoCIu2B,MApCJ,GAoCI,gBAAOtpB,GAAP,EAAoCsR,MAApC,EAA8D;AAAA;;AAE1D,QAAI,CAACtR,GAAL,EAAU;AACN,YAAM,KAAKqsC,SAAL,CAAeuJ,WAAf,+BAAN;AACH;;AAED,QAAI,CAACtkC,MAAL,EAAa;AACT,YAAM,IAAInc,KAAJ,iCAAN;AACH;;AAED,QAAI,CAAC,KAAKk0B,SAAV,EAAqB;AACjB;AACH;;AAED,QAAIA,SAAS,GAAG,KAAKA,SAAL,EAAhB;;AAd0D;AAgBrD,UAAIwsB,YAAY,qBAAhB;AAED,UAAIjjD,IAAI,GAAGijD,YAAY,CAACn+C,OAAb,CAAqB,QAArB,EAA+B,EAA/B,CAAX;;AAEA,UAAI+4B,YAAY,GAAG,SAAfA,YAAe,CAAC19B,GAAD,EAAS;AACxB,aAAI,CAAC4B,KAAL,CAAW5B,GAAX;AACH,OAFD;;AAIA,UAAImK,QAAQ,GAAGL,iBAAE,CAACg5C,YAAD,EAAe;AAAErjD,cAAM,EAAEwN,GAAV;AAAesR,cAAM,EAANA,MAAf;AAAuBmf,oBAAY,EAAZA;AAAvB,OAAf,EAAsD,gBAAsB;AAAA,YAAnBt4B,MAAmB,QAAnBA,MAAmB;AAAA,YAAX0d,IAAW,QAAXA,IAAW;;AACzF,aAAI,CAACw2B,SAAL,CAAe3zB,GAAf,eAAgC9lB,IAAhC;;AACA,eAAOy2B,SAAS,CAACwsB,YAAD,CAAT,CAAwBhjD,IAAxB,CAA6B,KAA7B,EAAmCsF,MAAnC,EAA2C0d,IAA3C,CAAP;AACH,OAHgB,CAAjB;AAKA,UAAIigC,aAAa,GAAGj5C,iBAAE,CAACg5C,YAAD,EAAe;AAAErjD,cAAM,EAAEwN,GAAV;AAAeywB,oBAAY,EAAZA;AAAf,OAAf,EAA8C,iBAAgB;AAAA,YAAbhP,MAAa,SAAbA,MAAa;;AAChF,aAAI,CAAC4qB,SAAL,CAAej/B,QAAf,0BAAgDxa,IAAhD,EAAyD;AAAE6uB,gBAAM,EAANA,MAAF;AAAUnQ,gBAAM,EAAEA,MAAM,CAAC3e,QAAP;AAAlB,SAAzD;;AACA,aAAI,CAACgC,KAAL,CAAW,IAAIQ,KAAJ,iBAAyBvC,IAAzB,6BAAuD6uB,MAAvD,kCAA4FnQ,MAAM,CAAC3e,QAAP,EAA5F,CAAX;AACH,OAHqB,CAAtB;;AAKA,WAAI,CAAC0U,KAAL,CAAWgyB,QAAX,CAAoB,YAAM;AACtBn8B,gBAAQ,CAACtJ,MAAT;AACAkiD,qBAAa,CAACliD,MAAd;AACH,OAHD;AAlCsD;;AAAA,sCAgBjCyB,MAAM,CAACyB,IAAP,CAAYuyB,SAAZ,CAhBiC,qCAgBT;AAAA;AAsBhD;AACJ,GA3EL;;AAAA;AAAA,I;;;;;;;;;;;;;;;AC/GA;AACA;AAEA;AACA;;AAIA,SAAS0sB,SAAT,CAAmBt+C,GAAnB,EAA0C;AACtC,SAAOA,GAAG,CAACC,OAAJ,CAAY,gCAAZ,EAA8C,EAA9C,EAAkDA,OAAlD,CAA0D,gBAA1D,EAA4E,GAA5E,CAAP;AACH;;AAED,SAASk0C,MAAT,CAAgBn0C,GAAhB,EAAuC;AACnC,SAAO20C,gBAAM,CAACR,MAAP,CAAcn0C,GAAd,EAAmBC,OAAnB,CAA2B,KAA3B,EAAkC,EAAlC,EAAsCI,WAAtC,EAAP,CADmC,CACyB;AAC/D;;AAED,SAASo0C,MAAT,CAAgBz0C,GAAhB,EAAuC;AACnC,SAAO20C,gBAAM,CAACF,MAAP,CAAcz0C,GAAG,CAACO,WAAJ,EAAd,CAAP;AACH;AAGD;;;;;;;;;;;;;AAYO,SAASg+C,2BAAT,CAA8BpjD,IAA9B,EAA6Cqb,OAA7C,EAA+DrO,OAA/D,EAA+F;AAAA,MAAhCA,OAAgC;AAAhCA,WAAgC,GAAb,EAAa;AAAA;;AAElGA,SAAO,CAACb,EAAR,GAAazG,+BAAQ,EAArB;AACAsH,SAAO,CAAC0R,MAAR,GAAiB+L,mDAAS,CAAC7qB,MAAD,CAA1B;AAEA,MAAIyjD,WAAW,GAAGF,SAAS,CAACnjD,IAAD,CAA3B;AACA,MAAIsjD,cAAc,GAAGH,SAAS,CAAC9nC,OAAD,CAA9B;AACA,MAAIkoC,cAAc,GAAGvK,MAAM,CAAC/yC,IAAI,CAACC,SAAL,CAAe8G,OAAf,CAAD,CAA3B;;AAEA,MAAI,CAACq2C,WAAL,EAAkB;AACd,UAAM,IAAI9gD,KAAJ,oBAA4BvC,IAA5B,6CAAN;AACH;;AAED,MAAI,CAACsjD,cAAL,EAAqB;AACjB,UAAM,IAAI/gD,KAAJ,uBAA+B8Y,OAA/B,6CAAN;AACH;;AAED,SAAO,CACH,YADG,EAEHgoC,WAFG,EAGHC,cAHG,EAIHC,cAJG,EAKH,EALG,EAML76C,IANK,CAMA,IANA,CAAP;AAOH;AAEM,IAAI86C,qBAAqB,GAAG34C,8BAAO,CAAC,YAAM;AAC7C,MAAI,CAACjL,MAAM,CAACI,IAAZ,EAAkB;AACd,WAAO,KAAP;AACH;;AAH4C,2BAK1BJ,MAAM,CAACI,IAAP,CAAY4G,KAAZ,CAAkB,IAAlB,CAL0B;AAAA,MAKvC68C,QALuC;;AAO7C,MAAIA,QAAQ,KAAK,YAAjB,EAA+B;AAC3B,WAAO,KAAP;AACH;;AAED,SAAO,IAAP;AACH,CAZyC,CAAnC;AAcP;;;;;;;AAOO,IAAIC,gBAAgB,GAAG74C,8BAAO,CAAC,YAAM;AAExC,MAAI,CAACjL,MAAM,CAACI,IAAZ,EAAkB;AACd,UAAM,IAAIuC,KAAJ,kDAAN;AACH;;AAJuC,4BAMU3C,MAAM,CAACI,IAAP,CAAY4G,KAAZ,CAAkB,IAAlB,CANV;AAAA,MAMlC68C,QANkC;AAAA,MAMxBzjD,IANwB;AAAA,MAMlBqb,OANkB;AAAA,MAMTkoC,cANS;;AAQxC,MAAIE,QAAQ,KAAK,YAAjB,EAA+B;AAC3B,UAAM,IAAIlhD,KAAJ,wCAAgDkhD,QAAhD,CAAN;AACH;;AAED,MAAIE,aAAJ;;AAEA,MAAI;AACAA,iBAAa,GAAG19C,IAAI,CAAC05B,KAAL,CAAW2Z,MAAM,CAACiK,cAAD,CAAjB,CAAhB;AACH,GAFD,CAEE,OAAOpjD,GAAP,EAAY;AACV,UAAM,IAAIoC,KAAJ,qCAA6CghD,cAA7C,SAAiE15C,qCAAc,CAAC1J,GAAD,CAA/E,CAAN;AACH;;AAEDwjD,eAAa,CAAC3jD,IAAd,GAAqBA,IAArB;AACA2jD,eAAa,CAACtoC,OAAd,GAAwBA,OAAO,CAACvW,OAAR,CAAgB,IAAhB,EAAsB,GAAtB,CAAxB;AAEA,SAAO6+C,aAAP;AACH,CAxBoC,CAA9B;AA0BA,SAASC,sBAAT,GAAoC;AACvC,SAAOF,gBAAgB,GAAGhlC,MAA1B,CADuC,CACL;AACrC;;AAED,SAASmlC,cAAT,OAA4H;AAAA,MAAlGC,GAAkG,QAAlGA,GAAkG;AAAA,MAA7Fh7C,GAA6F,QAA7FA,GAA6F;AAAA,MAAxFilB,QAAwF,QAAxFA,QAAwF;AAExH,MAAI5rB,MAAJ;;AAEA,MAAI2hD,GAAG,KAAKzyB,8BAAiB,CAACC,MAA9B,EAAsC;AAClCnvB,UAAM,GAAGioB,mDAAS,CAACxqB,MAAD,CAAlB;AAEH,GAHD,MAGO,IAAIkkD,GAAG,KAAKzyB,8BAAiB,CAACE,GAA9B,EAAmC;AACtCpvB,UAAM,GAAGmpB,gDAAM,CAAC1rB,MAAD,CAAf;AAEH,GAHM,MAGA,IAAIkkD,GAAG,KAAKzyB,8BAAiB,CAACG,MAA9B,EAAsC;AAEzC,QAAIzD,QAAJ,EAAc;AACV5rB,YAAM,GAAG+rB,6DAAmB,CAACtuB,MAAD,EAASmuB,QAAT,CAA5B;AACH,KAFD,MAEO;AACH5rB,YAAM,GAAG+nB,mDAAS,CAACtqB,MAAD,CAAlB;AACH;AACJ;;AAED,MAAIkkD,GAAG,KAAKzyB,8BAAiB,CAACI,MAA9B,EAAsC;AAClC,QAAItE,QAAQ,GAAGF,qDAAW,CAACrtB,MAAD,CAA1B;;AAEA,QAAIutB,QAAJ,EAAc;AAAA,iDACQ1B,8DAAoB,CAAC0B,QAAD,CAD5B,8CACwC;AAA7C,YAAIhe,KAAK,8BAAT;AACD,YAAI0L,MAAM,GAAGJ,gCAAS,CAACtL,KAAD,CAAtB;;AAEA,YAAI0L,MAAM,IAAIA,MAAM,CAACmmC,OAAjB,IAA4BnmC,MAAM,CAACmmC,OAAP,CAAel4C,GAAf,CAAhC,EAAqD;AACjD3G,gBAAM,GAAG0Y,MAAM,CAACmmC,OAAP,CAAel4C,GAAf,CAAT;AACA;AACH;AACJ;AACJ;AACJ;;AAED,MAAI,CAAC3G,MAAL,EAAa;AACT,UAAM,IAAII,KAAJ,gCAAN;AACH;;AAED,SAAOJ,MAAP;AACH;AAED;;;;;;;AAMO,IAAIgzC,+BAAwB,GAAGtqC,8BAAO,CAAC,YAAM;AAEhD,MAAI84C,aAAa,GAAGD,gBAAgB,EAApC;;AAEA,MAAI,CAACC,aAAL,EAAoB;AAChB,UAAM,IAAIphD,KAAJ,qEAAN;AACH;;AAED,SAAOshD,cAAc,CAACF,aAAa,CAACI,eAAf,CAArB;AACH,CAT4C,CAAtC;AAYA,IAAIC,4BAAqB,GAAGn5C,8BAAO,CAAC,YAAM;AAE7C,MAAI84C,aAAa,GAAGD,gBAAgB,EAApC;;AAEA,MAAI,CAACC,aAAL,EAAoB;AAChB,UAAM,IAAIphD,KAAJ,qEAAN;AACH;;AAED,SAAOshD,cAAc,CAACF,aAAa,CAACM,YAAf,CAArB;AACH,CATyC,CAAnC;AAYP;;;;;;;;;;;;AAYO,SAASC,WAAT,QAAwE;AAAA,MAAjD1yC,KAAiD,SAAjDA,KAAiD;AAAA,MAA1CC,MAA0C,SAA1CA,MAA0C;AAE3E,MAAIktC,CAAC,GAAG,CAAR;AACA,MAAIJ,CAAC,GAAG,CAAR;;AAEA,MAAI/sC,KAAJ,EAAW;AACP,QAAI5R,MAAM,CAACkpC,UAAX,EAAuB;AACnB6V,OAAC,GAAG94C,IAAI,CAACwyB,KAAL,CAAW,CAACz4B,MAAM,CAACkpC,UAAP,GAAoBt3B,KAArB,IAA8B,CAAzC,IAA8C5R,MAAM,CAACmpC,OAAzD;AACH,KAFD,MAEO,IAAInpC,MAAM,CAAC8nC,MAAP,CAAcl2B,KAAlB,EAAyB;AAC5BmtC,OAAC,GAAG94C,IAAI,CAACwyB,KAAL,CAAW,CAACz4B,MAAM,CAAC8nC,MAAP,CAAcl2B,KAAd,GAAsBA,KAAvB,IAAgC,CAA3C,CAAJ;AACH;AACJ;;AAED,MAAIC,MAAJ,EAAY;AACR,QAAI7R,MAAM,CAACopC,WAAX,EAAwB;AACpBuV,OAAC,GAAG14C,IAAI,CAACwyB,KAAL,CAAW,CAACz4B,MAAM,CAACopC,WAAP,GAAqBv3B,MAAtB,IAAgC,CAA3C,IAAgD7R,MAAM,CAACqpC,OAA3D;AACH,KAFD,MAEO,IAAIrpC,MAAM,CAAC8nC,MAAP,CAAcj2B,MAAlB,EAA0B;AAC7B8sC,OAAC,GAAG14C,IAAI,CAACwyB,KAAL,CAAW,CAACz4B,MAAM,CAAC8nC,MAAP,CAAcj2B,MAAd,GAAuBA,MAAxB,IAAkC,CAA7C,CAAJ;AACH;AACJ;;AAED,SAAO;AAAEktC,KAAC,EAADA,CAAF;AAAKJ,KAAC,EAADA;AAAL,GAAP;AACH,C;;;;;ACvND;AAKO,SAAS4F,kBAAT,CAAkC1K,SAAlC,EAA4D9oC,KAA5D,EAA4FvM,GAA5F,EAA0GtC,KAA1G,EAA2H;AAE9H;AACA,MAAIuE,IAAiC,GAAGozC,SAAS,CAAC2K,OAAV,CAAkBhgD,GAAlB,CAAxC;;AAEA,MAAI,CAACiC,IAAL,EAAW;AACP,QAAIozC,SAAS,CAAC8B,UAAd,EAA0B;AACtB,aAAOz5C,KAAP;AACH,KAFD,MAEO;AACH;AACH;AACJ;;AAED,MAAI,OAAOuE,IAAI,CAACg+C,aAAZ,KAA8B,UAAlC,EAA8C;AAC1C,WAAOh+C,IAAI,CAACg+C,aAAL,CAAmBviD,KAAnB,CAAP;AACH;;AAED,SAAOA,KAAP;AACH;AAGM,SAASwiD,mBAAT,CAAgC7K,SAAhC,EAA0D9oC,KAA1D,EAA0Fke,MAA1F,EAA2G01B,QAA3G,EAA+J;AAAA,MAApDA,QAAoD;AAApDA,YAAoD,GAA/B,IAA+B;AAAA;;AAElK,MAAIpiD,MAAM,GAAG,EAAb;;AAFkK,oCAIlJM,MAAM,CAACyB,IAAP,CAAYyM,KAAZ,CAJkJ,qCAI9H;AAA/B,QAAIvM,GAAG,qBAAP;AAED,QAAIiC,IAAI,GAAGozC,SAAS,CAAC2K,OAAV,CAAkBhgD,GAAlB,CAAX;AACA,QAAItC,KAAK,GAAG6O,KAAK,CAACvM,GAAD,CAAjB;;AAEA,QAAIiC,IAAI,IAAIA,IAAI,CAACm+C,UAAb,IAA2B31B,MAAM,KAAKpE,mDAAS,CAAC7qB,MAAD,CAAnD,EAA6D;AACzD;AACH;;AAEDuC,UAAM,CAACiC,GAAD,CAAN,GAAc+/C,kBAAkB,CAAC1K,SAAD,EAAY9oC,KAAZ,EAAmBvM,GAAnB,EAAwBtC,KAAxB,CAAhC;;AAEA,QAAIuE,IAAI,IAAIA,IAAI,CAACo+C,KAAb,IAAsB,CAACtiD,MAAM,CAACkE,IAAI,CAACo+C,KAAN,CAAjC,EAA+C;AAC3CtiD,YAAM,CAACkE,IAAI,CAACo+C,KAAN,CAAN,GAAqB3iD,KAArB;AACH;AACJ;;AAED,MAAIyiD,QAAJ,EAAc;AAAA,+CACM9K,SAAS,CAAC6B,YAAV,EADN,8CACgC;AAArC,UAAIl3C,IAAG,8BAAP;;AACD,UAAI,CAACuM,KAAK,CAACnL,cAAN,CAAqBpB,IAArB,CAAL,EAAgC;AAC5BjC,cAAM,CAACiC,IAAD,CAAN,GAAc+/C,kBAAkB,CAAC1K,SAAD,EAAY9oC,KAAZ,EAAmBvM,IAAnB,EAAwBuM,KAAK,CAACvM,IAAD,CAA7B,CAAhC;AACH;AACJ;AACJ,GA1BiK,CA4BlK;;;AACA,SAAOjC,MAAP;AACH,C;;;;;;ACzDD;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAIA;;AAOA;;;;;;;;;AAUO,IAAMuiD,oBAAb;AAAA;AAAA;AAAA;;AAWI,0BAAYjL,SAAZ,EAAsC;AAAA;;AAClC;AADkC,UATtCA,SASsC;AAAA,UARtC9oC,KAQsC;AAAA,UAPtCpM,OAOsC;AAAA,UALtCogD,cAKsC;AAAA,UAJtCC,MAIsC;AAAA,UAHtCC,iBAGsC;AAAA,UAFtCC,UAEsC;AAElC,UAAKrL,SAAL,GAAiBA,SAAjB;;AAEA,QAAI,CAAC,MAAKsL,oBAAL,EAAL,EAAkC;AAC9B,YAAKhjD,KAAL,CAAW,IAAIgzC,gCAAJ,qCAAmD,MAAK6O,eAAL,EAAnD,CAAX;;AACA;AACH;;AAED,UAAKnK,SAAL,CAAe3zB,GAAf,oBATkC,CAWlC;AACA;AACA;;;AAEA,UAAK6+B,cAAL,GAAsB,EAAtB;;AAfkC;AAiB7B,UAAIjlD,IAAI,aAAR;;AAjB6B;AAAA;AAAA,YAkBnBM,IAlBmB;AAAA,YAkBb+lC,MAlBa;AAmB1B;AACAtjC,cAAM,CAACgF,cAAP,CAAsB/H,IAAtB,EAA4BM,IAA5B,EAAkC;AAC9B0H,sBAAY,EAAE,IADgB;AAE9BlB,aAAG,EAAW,eAAM;AAChB,gBAAI,CAAC,MAAKmK,KAAV,EAAiB;AACb,oBAAKq0C,QAAL,CAAc,MAAKC,eAAL,EAAd,EAAsCrB,sBAAe,EAArD;AACH,aAHe,CAIhB;;;AACA,mBAAOlkD,IAAI,CAACM,IAAD,CAAX,CALgB,CAMhB;;AACAN,gBAAI,CAACM,IAAD,CAAJ,GAAa+lC,MAAM,EAAnB,CAPgB,CAQhB;;AACA,mBAAOrmC,IAAI,CAACM,IAAD,CAAX;AACH;AAZ6B,SAAlC;AApB0B;;AAAA,gCAkBD,CAAE,CAAE,QAAF,EAAY;AAAA;AAAA,OAAZ,CAAF,EAA4B,CAAE,QAAF,EAAY;AAAA,eAAM,MAAK2Q,KAAX;AAAA,OAAZ,CAA5B,CAlBC,6BAkB6D;AAAA;AAgB1F;AAlC6B;;AAAA,8BAiBjB,CAAE,MAAK8oC,SAAP,EAAkB75C,MAAlB,CAjBiB,6BAiBW;AAAA;AAkB5C;;AAED,UAAK65C,SAAL,CAAe3zB,GAAf;;AAEA,UAAKo/B,UAAL,GAvCkC,CAyClC;AACA;AACA;AACA;AACA;AACA;;;AAEA,UAAKN,MAAL,GAAc,MAAKlnB,YAAL,CAAkB1N,yBAAY,CAACC,IAA/B,EAAqC;AAE/CqnB,aAAO,EAAE,MAAKA,OAAL;AAFsC,KAArC,EAIXp3C,IAJW,CAIN,iBAAsB;AAAA,UAAnB2uB,MAAmB,SAAnBA,MAAmB;AAAA,UAAX5L,IAAW,SAAXA,IAAW;AAE1B,YAAK1e,OAAL,GAAe0e,IAAI,CAAC1e,OAApB;;AACA,YAAKygD,QAAL,CAAc/hC,IAAI,CAACtS,KAAnB,EAA0Bke,MAA1B;;AAEA,YAAKs2B,cAAL;;AAEA;AAEH,KAba,EAaXjiD,KAbW,CAaL,UAAA/C,GAAG,EAAI;AAEZ,YAAK4B,KAAL,CAAW5B,GAAX;;AACA,YAAMA,GAAN;AACH,KAjBa,CAAd;AAhDkC;AAkErC;;AA7EL;;AAAA,SA+EI4kD,oBA/EJ,GA+EI,gCAAiC;AAC7B,WAAOn2B,qDAAW,CAAC,KAAK6qB,SAAL,CAAe2L,oBAAhB,EAAsC,KAAKxB,eAAL,EAAtC,CAAlB;AACH,GAjFL;;AAAA,SAmFIr7B,IAnFJ,GAmFI,gBAAyC;AACrC,WAAO,KAAKq8B,MAAZ;AACH,GArFL;;AAAA,SAuFIhB,eAvFJ,GAuFI,2BAA2B;AACvB,WAAOA,sBAAe,EAAtB;AACH,GAzFL;;AAAA,SA2FIyB,OA3FJ,GA2FI,iBAAQtkD,OAAR,EAA4B;AACxB,SAAK4jD,cAAL,CAAoBlkD,IAApB,CAAyBM,OAAzB;AACH,GA7FL;;AAAA,SA+FIo0C,wBA/FJ,GA+FI,oCAAmD;AAC/C,WAAOA,+BAAwB,EAA/B;AACH,GAjGL;;AAAA,SAmGI6O,qBAnGJ,GAmGI,iCAAgD;AAC5C,WAAOA,4BAAqB,EAA5B;AACH,GArGL;;AAAA,SAuGIiB,eAvGJ,GAuGI,2BAA2C;AAAA;;AACvC,QAAItB,aAAa,GAAGD,gBAAgB,EAApC;AAEA,QAAI/yC,KAAK,GAAGgzC,aAAa,CAAChzC,KAA1B;;AAEA,QAAIA,KAAK,CAAC7I,IAAN,KAAeopB,0BAAa,CAACC,GAAjC,EAAsC;AAClCxgB,WAAK,GAAGA,KAAK,CAAC7O,KAAd;AACH,KAFD,MAEO,IAAI6O,KAAK,CAAC7I,IAAN,KAAeopB,0BAAa,CAACE,GAAjC,EAAsC;AAEzC,UAAI6jB,qBAAqB,GAAGE,+BAAwB,EAApD;;AAEA,UAAI,CAACz6B,sDAAY,CAACu6B,qBAAD,CAAjB,EAA0C;AAEtC,YAAIr1C,MAAM,CAACgO,QAAP,CAAgBwQ,QAAhB,KAA6B,OAAjC,EAA0C;AACtC,gBAAM,IAAI7b,KAAJ,yCAAN;AACH;;AAED,cAAM,IAAIA,KAAJ,kEAA0EkoB,mDAAS,EAAnF,+BAAN;AACH;;AAED,UAAI5P,MAAM,GAAGJ,gCAAS,CAACw6B,qBAAD,CAAtB;;AAEA,UAAI,CAACp6B,MAAL,EAAa;AACT,cAAM,IAAItY,KAAJ,qEAAN;AACH;;AAEDoO,WAAK,GAAG1K,IAAI,CAAC05B,KAAL,CAAW9kB,MAAM,CAAClK,KAAP,CAAagzC,aAAa,CAAC76C,GAA3B,CAAX,CAAR;AAEH,KArBM,MAqBA;AACH,YAAM,IAAIvG,KAAJ,+BAAuCoO,KAAK,CAAC7I,IAA7C,CAAN;AACH;;AAED,QAAI,CAAC6I,KAAL,EAAY;AACR,YAAM,IAAIpO,KAAJ,2BAAN;AACH;;AAED,WAAO6I,2CAAoB,CAACuF,KAAD,EAAQ,iBAA6B;AAAA,UAA1BnJ,OAA0B,SAA1BA,OAA0B;AAAA,UAAjB8D,IAAiB,SAAjBA,IAAiB;AAAA,UAAX9G,IAAW,SAAXA,IAAW;AAC5D,aAAO,MAAI,CAACogD,MAAL,CAAY1kD,IAAZ,CAAiB,YAAM;AAC1B,YAAIolD,IAAI,GAAG9+C,0BAAG,CAAC,MAAI,CAACmK,KAAN,EAAanJ,OAAb,CAAd;;AAEA,YAAI,OAAO89C,IAAP,KAAgB,UAApB,EAAgC;AAC5B,gBAAM,IAAI3hD,SAAJ,eAA2B6D,OAA3B,6BAA4D,OAAO89C,IAAnE,CAAN;AACH;;AAED,eAAOA,IAAI,CAAC7gD,KAAL,CAAW6G,IAAX,EAAiB9G,IAAjB,CAAP;AACH,OARM,CAAP;AASH,KAV0B,CAA3B;AAWH,GAtJL;;AAAA,SAyJIwgD,QAzJJ,GAyJI,kBAASr0C,KAAT,EAAyCke,MAAzC,EAA0D01B,QAA1D,EAAqF;AAAA,QAA3BA,QAA2B;AAA3BA,cAA2B,GAAN,IAAM;AAAA;;AACjF;AACA,SAAK5zC,KAAL,GAAa,KAAKA,KAAL,IAAc,EAA3B;AACA,QAAI40C,eAAe,GAAGjB,mBAAmB,CAAC,KAAK7K,SAAN,EAAiB9oC,KAAjB,EAAwBke,MAAxB,EAAgC01B,QAAhC,CAAzC;AACAl/C,iCAAM,CAAC,KAAKsL,KAAN,EAAa40C,eAAb,CAAN;;AACA,QAAI,KAAK50C,KAAL,CAAWqJ,QAAf,EAAyB;AACrBD,wCAAW,CAAC,KAAKpJ,KAAL,CAAWqJ,QAAZ,CAAX;AACH;;AAPgF,8CAQ7D,KAAK2qC,cARwD,6CAQxC;AAApC,UAAI5jD,OAAO,6BAAX;AACDA,aAAO,CAACd,IAAR,CAAa,IAAb,EAAmB,KAAK0Q,KAAxB;AACH;AACJ;AAGD;;;;AAvKJ;;AAAA,SA6KI+sB,YA7KJ,GA6KI,sBAAa19B,IAAb,EAA4BijB,IAA5B,EAAiDjW,OAAjD,EAA4J;AAAA,QAAhIiW,IAAgI;AAAhIA,UAAgI,GAA/G,EAA+G;AAAA;;AAAA,QAA3GjW,OAA2G;AAA3GA,aAA2G,GAAvF,EAAuF;AAAA;;AACxJ,QAAIqkC,YAAY,GAAG8D,+BAAwB,EAA3C;;AAEA,QAAI,CAAC9D,YAAL,EAAmB;AACf,YAAM,IAAI9uC,KAAJ,mDAAN;AACH;;AAED,SAAKk3C,SAAL,CAAe3zB,GAAf,qBAAsC9lB,IAAtC;AAEA,WAAOsX,mBAAI,CAAC+5B,YAAD,EAAerxC,IAAf,EAAqBijB,IAArB;AAA6BvE,YAAM,EAAEklC,sBAAe;AAApD,OAA2D52C,OAA3D,EAAX;AACH;AAGD;;;;;AA1LJ;;AAAA,SAiMIk4C,UAjMJ,GAiMI,sBAAa;AAGT;AAEA,QAAItlD,MAAM,CAAC4lD,uBAAX,EAAoC;AAChC,YAAM,KAAK/L,SAAL,CAAeuJ,WAAf,yDAAN;AACH;;AAEDpjD,UAAM,CAAC4lD,uBAAP,GAAiC,IAAjC,CATS,CAWT;;AAEA,QAAI,CAACrQ,+BAAwB,EAA7B,EAAiC;AAC7B,YAAM,KAAKsE,SAAL,CAAeuJ,WAAf,8BAAN;AACH;;AAED,QAAIW,aAAa,GAAGD,gBAAgB,EAApC;;AAEA,QAAIC,aAAa,CAAC51C,GAAd,KAAsB,KAAK0rC,SAAL,CAAe1rC,GAAzC,EAA8C;AAC1C,YAAM,KAAK0rC,SAAL,CAAeuJ,WAAf,gBAAyCW,aAAa,CAAC51C,GAAvD,0BAAiF,KAAK0rC,SAAL,CAAe1rC,GAAhG,CAAN;AACH,KArBQ,CAuBT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;;;AAEA,SAAK03C,aAAL;AACH,GAvOL;;AAAA,SAyOIA,aAzOJ,GAyOI,yBAAgB;AAAA;;AACZ7lD,UAAM,CAACyP,gBAAP,CAAwB,QAAxB,EAAkC;AAAA,aAAM,MAAI,CAACq2C,UAAL,EAAN;AAAA,KAAlC;AACH,GA3OL;;AAAA,SA6OIC,gBA7OJ,GA6OI,iCAA+F;AAAA,mCAAJ,EAAI;AAAA,4BAA5En0C,KAA4E;AAAA,QAA5EA,KAA4E,4BAApE,IAAoE;AAAA,6BAA9DC,MAA8D;AAAA,QAA9DA,MAA8D,6BAArD,IAAqD;;AAC3F,SAAKqzC,UAAL,GAAkB;AAAEtzC,WAAK,EAALA,KAAF;AAASC,YAAM,EAANA;AAAT,KAAlB;AACA,SAAK0zC,cAAL;AACH,GAhPL;;AAAA,SAkPIS,aAlPJ,GAkPI,yBAA+E;AAE3E,QAAIp0C,KAAK,GAAG,KAAZ;AACA,QAAIC,MAAM,GAAG,KAAb;AAEA,QAAIqzC,UAAU,GAAG,KAAKA,UAAL,IAAmB,KAAKrL,SAAL,CAAeqL,UAAnD;;AAEA,QAAI,OAAOA,UAAP,KAAsB,QAA1B,EAAoC;AAChCtzC,WAAK,GAAGrE,OAAO,CAAC23C,UAAU,CAACtzC,KAAZ,CAAf;AACAC,YAAM,GAAGtE,OAAO,CAAC23C,UAAU,CAACrzC,MAAZ,CAAhB;AACH,KAHD,MAGO,IAAIqzC,UAAJ,EAAgB;AACnBtzC,WAAK,GAAG,IAAR;AACAC,YAAM,GAAG,IAAT;AACH;;AAED,QAAI/F,OAAJ;;AAEA,QAAIo5C,UAAU,CAACp5C,OAAf,EAAwB;AACpBA,aAAO,GAAGa,iCAAU,CAACu4C,UAAU,CAACp5C,OAAZ,CAApB;AACH,KAFD,MAEO;AACHA,aAAO,GAAGU,QAAQ,CAAC+6B,IAAnB;AACH,KArB0E,CAuB3E;;;AACA,WAAO;AAAE31B,WAAK,EAALA,KAAF;AAASC,YAAM,EAANA,MAAT;AAAiB/F,aAAO,EAAPA;AAAjB,KAAP;AACH,GA3QL;;AAAA,SA6QIy5C,cA7QJ,GA6QI,0BAAuC;AAAA;;AAAA,8BAEF,KAAKS,aAAL,EAFE;AAAA,QAE7Bp0C,KAF6B,uBAE7BA,KAF6B;AAAA,QAEtBC,MAFsB,uBAEtBA,MAFsB;AAAA,QAEd/F,OAFc,uBAEdA,OAFc;;AAInC,QAAI,CAAC8F,KAAD,IAAU,CAACC,MAAf,EAAuB;AACnB;AACH;;AAED,QAAI,KAAKlN,OAAL,KAAiBotB,0BAAa,CAAC7H,KAAnC,EAA0C;AACtC;AACH;;AAED,QAAI,KAAK+6B,iBAAT,EAA4B;AACxB;AACH;;AAED,SAAKA,iBAAL,GAAyB,IAAzB;AAEArb,0CAAQ,CAAC99B,OAAD,EAAU,iBAA4C;AAAA,UAAlCi+B,QAAkC,SAAzCn4B,KAAyC;AAAA,UAAhBo4B,SAAgB,SAAxBn4B,MAAwB;;AAC1D,YAAI,CAACo0C,MAAL,CAAYr0C,KAAK,GAAGm4B,QAAH,GAAcxmC,SAA/B,EAA0CsO,MAAM,GAAGm4B,SAAH,GAAezmC,SAA/D;AACH,KAFO,EAEL;AAAEqO,WAAK,EAALA,KAAF;AAASC,YAAM,EAANA;AAAT,KAFK,CAAR;AAGH,GAlSL;;AAAA,SAqSI6lC,OArSJ,GAqSI,mBAAgC;AAE5B,QAAIhsC,IAAI,GAAG,IAAX;AAEA,WAAO;AACHkvC,iBADG,uBACS7pC,KADT,EAC8D;AAAA;;AAC7D,eAAOjP,yCAAY,CAAC4B,GAAb,CAAiB;AAAA,iBAAMgI,IAAI,CAAC05C,QAAL,CAAcr0C,KAAd,EAAqB,MAAI,CAACke,MAA1B,EAAkC,KAAlC,CAAN;AAAA,SAAjB,CAAP;AACH,OAHE;AAKHlhB,WALG,mBAK0B;AACzB,eAAOjM,yCAAY,CAAC4B,GAAb,CAAiB;AAAA,iBAAMgI,IAAI,CAACovC,OAAL,EAAN;AAAA,SAAjB,CAAP;AACH;AAPE,KAAP;AASH;AAGD;;;;AArTJ;;AAAA,SA2TImL,MA3TJ,GA2TI,gBAAOr0C,KAAP,EAAwBC,MAAxB,EAA+D;AAAA;;AAC3D,WAAO/P,yCAAY,CAACL,OAAb,GAAuBnB,IAAvB,CAA4B,YAAM;AAErC,YAAI,CAACu5C,SAAL,CAAe3zB,GAAf,WAA6B;AAAEtU,aAAK,EAAEtL,gCAAS,CAACsL,KAAD,CAAlB;AAA2BC,cAAM,EAAEvL,gCAAS,CAACuL,MAAD;AAA5C,OAA7B;;AAEA,UAAI,MAAI,CAAClN,OAAL,KAAiBotB,0BAAa,CAAC7H,KAAnC,EAA0C;AACtC;AACH;;AAED,aAAO,MAAI,CAAC4T,YAAL,CAAkB1N,yBAAY,CAACO,MAA/B,EAAuC;AAAE/e,aAAK,EAALA,KAAF;AAASC,cAAM,EAANA;AAAT,OAAvC,EAA0DvR,IAA1D,CAA+DuK,mBAA/D,CAAP;AACH,KATM,CAAP;AAUH;AAED;;;;AAxUJ;;AAAA,SA8UIq7C,IA9UJ,GA8UI,gBAA4B;AACxB,WAAO,KAAKpoB,YAAL,CAAkB1N,yBAAY,CAACU,IAA/B,EAAqCxwB,IAArC,CAA0CuK,mBAA1C,CAAP;AACH,GAhVL;;AAAA,SAkVIs7C,IAlVJ,GAkVI,gBAA4B;AACxB,WAAO,KAAKroB,YAAL,CAAkB1N,yBAAY,CAACW,IAA/B,EAAqCzwB,IAArC,CAA0CuK,mBAA1C,CAAP;AACH,GApVL;;AAAA,SAsVIu7C,SAtVJ,GAsVI,qBAAmB;AACf,WAAO,KAAKr4C,KAAL,CAAWglB,0BAAa,CAACI,WAAzB,CAAP;AACH;AAGD;;;;AA3VJ;;AAAA,SAiWIplB,KAjWJ,GAiWI,eAAMs4C,MAAN,EAAkD;AAAA,QAA5CA,MAA4C;AAA5CA,YAA4C,GAA1BtzB,0BAAa,CAACE,UAAY;AAAA;;AAE9C,SAAK4mB,SAAL,CAAe3zB,GAAf,gBAF8C,CAI9C;;AAEA,SAAK4X,YAAL,CAAkB1N,yBAAY,CAACI,KAA/B,EAAsC;AAAE61B,YAAM,EAANA;AAAF,KAAtC;AACH,GAxWL;;AAAA,SA0WIP,UA1WJ,GA0WI,sBAAa;AACT,SAAKhoB,YAAL,CAAkB1N,yBAAY,CAACK,WAA/B,EAA4C,EAA5C,EAAgD;AAAEnN,mBAAa,EAAE;AAAjB,KAAhD;AACH,GA5WL;;AAAA,SA+WIw3B,OA/WJ,GA+WI,mBAA+B;AAC3B,WAAO/1C,6CAAK,GAAGzE,IAAR,CAAa,YAAM;AACtBN,YAAM,CAAC+N,KAAP;AACH,KAFM,CAAP;AAGH;AAGD;;;;AAtXJ;;AAAA,SA4XIsxC,KA5XJ,GA4XI,iBAAQ;AACJ,SAAKxF,SAAL,CAAe3zB,GAAf;AAEAlmB,UAAM,CAACq/C,KAAP;AACH;AAGD;;;;AAnYJ;;AAAA,SAyYIl9C,KAzYJ,GAyYI,eAAM5B,GAAN,EAAwC;AAEpC,QAAI+lD,gBAAgB,GAAGr8C,qCAAc,CAAC1J,GAAD,CAArC;AAEA,SAAKs5C,SAAL,CAAej/B,QAAf,UAAiC;AAAEzY,WAAK,EAAEmkD;AAAT,KAAjC;AAEA,WAAO,KAAKxoB,YAAL,CAAkB1N,yBAAY,CAACriC,KAA/B,EAAsC;AACzCoU,WAAK,EAAEmkD;AADkC,KAAtC,EAEJhmD,IAFI,CAECuK,mBAFD,CAAP;AAGH,GAlZL;;AAAA;AAAA,EAAuCq4C,kBAAvC,E;;ACnCA,SAASqD,iBAAT,CAA2Bh+C,MAA3B,EAAmCwI,KAAnC,EAA0C;AACxC,OAAK,IAAI5N,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4N,KAAK,CAAC9P,MAA1B,EAAkCkC,CAAC,EAAnC,EAAuC;AACrC,QAAIqF,UAAU,GAAGuI,KAAK,CAAC5N,CAAD,CAAtB;AACAqF,cAAU,CAACT,UAAX,GAAwBS,UAAU,CAACT,UAAX,IAAyB,KAAjD;AACAS,cAAU,CAACV,YAAX,GAA0B,IAA1B;AACA,QAAI,WAAWU,UAAf,EAA2BA,UAAU,CAACqnC,QAAX,GAAsB,IAAtB;AAC3BhtC,UAAM,CAACgF,cAAP,CAAsBU,MAAtB,EAA8BC,UAAU,CAAChE,GAAzC,EAA8CgE,UAA9C;AACD;AACF;;AAEc,SAASg+C,YAAT,CAAsBC,WAAtB,EAAmCC,UAAnC,EAA+CC,WAA/C,EAA4D;AACzE,MAAID,UAAJ,EAAgBH,iBAAiB,CAACE,WAAW,CAAC3jD,SAAb,EAAwB4jD,UAAxB,CAAjB;AAChB,MAAIC,WAAJ,EAAiBJ,iBAAiB,CAACE,WAAD,EAAcE,WAAd,CAAjB;AACjB,SAAOF,WAAP;AACD,C;;;ACZD;AACA;AACA;AAEA;AAGA;AACA;;AAyBA;;;;;;;;;;;;;;;AAgBO,IAAIG,cAAiD,GAAG,EAAxD,C,CAEP;AACA;;AAEAA,cAAc,CAAC70B,0BAAa,CAACphC,MAAf,CAAd,GAAuC;AAEnCk2D,WAAS,EAAsB,KAFI;AAGnCC,+BAA6B,EAAE,IAHI;AAInCC,aAAW,EAAoB,IAJI;AAKnCC,aAAW,EAAoB,KALI;AAMnCpV,aAAW,EAAoB,KANI;AAQnCnkC,MARmC,gBAQ9BN,GAR8B,EAQM;AAAA;;AAErC,QAAI8B,UAAU,GAAG,KAAK4qC,SAAL,CAAe5qC,UAAf,CAA0BY,MAA1B,IAAoC,EAArD;AAEA,SAAKA,MAAL,GAAcA,6BAAM,CAAC;AACjB1C,SAAG,EAAHA,GADiB;AAEjB8B,gBAAU,EAAE;AACR7O,YAAI,EAAO,KAAK6mD,eADV;AAENC,aAAK,EAAM,KAAKrN,SAAL,CAAez5C,IAFpB;AAGN+mD,iBAAS,EAAE,KAAKtN,SAAL,CAAesN,SAAf,GAA2B,KAA3B,GAAmC;AAHxC,SAIHl4C,UAJG,CAFO;AAQjBF,WAAK,EAAE,CACHijB,wBAAW,CAACE,eADT,EAEHF,wBAAW,CAACI,SAFT;AARU,KAAD,EAYjB,KAAKtmB,OAZY,CAApB;AAcA,WAAO6D,uCAAgB,CAAC,KAAKE,MAAN,CAAhB,CAA8BvP,IAA9B,CAAmC,UAAA8mD,WAAW,EAAI;AAErD,WAAI,CAACpnD,MAAL,GAAconD,WAAd;;AAEA,UAAIC,WAAW,GAAG,SAAdA,WAAc,GAAM;AACpB,eAAOvlD,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAC1B,iBAAO,KAAI,CAACqN,KAAL,CAAWu2C,OAAX,CAAmBv0B,0BAAa,CAACG,cAAjC,CAAP;AACH,SAFM,EAEJ1vB,OAFI,CAEI,YAAM;AACb,iBAAO,KAAI,CAACs3C,OAAL,EAAP;AACH,SAJM,CAAP;AAKH,OAND;;AAQA,UAAIyM,aAAa,GAAGnwC,2CAAoB,CAAC,KAAI,CAACvH,MAAN,EAAcw3C,WAAd,CAAxC;AACA,UAAIG,cAAc,GAAGpwC,2CAAoB,CAAC,KAAI,CAACtL,OAAN,EAAeu7C,WAAf,CAAzC;;AAEA,WAAI,CAACxyC,KAAL,CAAWgyB,QAAX,CAAoB,eAApB,EAAqC,YAAM;AAEvC0gB,qBAAa,CAACnmD,MAAd;AACAomD,sBAAc,CAACpmD,MAAf;AAEAm9B,oCAAa,CAAC,KAAI,CAACv+B,MAAN,CAAb;AAEA,eAAO,KAAI,CAACA,MAAZ;;AAEA,YAAI,KAAI,CAAC6P,MAAT,EAAiB;AACbsG,+CAAc,CAAC,KAAI,CAACtG,MAAN,CAAd;AACA,iBAAO,KAAI,CAACA,MAAZ;AACH;AACJ,OAbD;AAcH,KA7BM,CAAP;AA8BH,GAxDkC;AA0DnC43C,eA1DmC,2BA0DE;AAAA;;AAEjC,QAAIx4C,UAAU,GAAG,KAAK4qC,SAAL,CAAe5qC,UAAf,CAA0BY,MAA1B,IAAoC,EAArD;AAEA,SAAK63C,eAAL,GAAuB73C,6BAAM,CAAC;AAC1BZ,gBAAU,EAAE;AACR7O,YAAI,oBAAwB,KAAK6mD,eAD3B;AAENE,iBAAS,EAAE,KAAKtN,SAAL,CAAesN,SAAf,GAA2B,KAA3B,GAAmC;AAFxC,SAGHl4C,UAHG,CADgB;AAM1BF,WAAK,EAAE,CACHijB,wBAAW,CAACG,eADT,EAEHH,wBAAW,CAACrc,OAFT;AANmB,KAAD,EAU1B,KAAK7J,OAVqB,CAA7B;AAYA,WAAO6D,uCAAgB,CAAC,KAAK+3C,eAAN,CAAhB,CAAuCpnD,IAAvC,CAA4C,UAAAqnD,oBAAoB,EAAI;AAEvE,YAAI,CAACC,eAAL,GAAuBD,oBAAvB;;AAEA,YAAI,CAAC9yC,KAAL,CAAWgyB,QAAX,CAAoB,kBAApB,EAAwC,YAAM;AAE1C,YAAI,MAAI,CAAC6gB,eAAT,EAA0B;AACtBvxC,+CAAc,CAAC,MAAI,CAACuxC,eAAN,CAAd;AACA,iBAAO,MAAI,CAACA,eAAZ;AACH;AACJ,OAND;AAOH,KAXM,CAAP;AAYH,GAtFkC;AAwFnCG,iBAxFmC,6BAwFjB;AAAA;;AAEdrxC,mCAAQ,CAAC,KAAKkxC,eAAN,EAAuB11B,wBAAW,CAACI,SAAnC,CAAR;AACAzb,sCAAW,CAAC,KAAK+wC,eAAN,EAAuB11B,wBAAW,CAACrc,OAAnC,CAAX;AAEAa,mCAAQ,CAAC,KAAK3G,MAAN,EAAcmiB,wBAAW,CAACrc,OAA1B,CAAR;AACAgB,sCAAW,CAAC,KAAK9G,MAAN,EAAcmiB,wBAAW,CAACI,SAA1B,CAAX;AAEAtxB,cAAU,CAAC,YAAM;AACb,UAAI,MAAI,CAAC4mD,eAAT,EAA0B;AACtBvxC,6CAAc,CAAC,MAAI,CAACuxC,eAAN,CAAd;AACH;AACJ,KAJS,EAIP,IAJO,CAAV;AAKH,GArGkC;AAuGnCI,mBAAiB,EAAE;AAEfC,iBAAa,EAAYn3B,qBAAQ,CAAC2C,aAFnB;AAGfy0B,oBAAgB,EAASp3B,qBAAQ,CAAC2C,aAHnB;AAIf00B,oBAAgB,EAASr3B,qBAAQ,CAAC2C,aAJnB;AAKf20B,yBAAqB,EAAIt3B,qBAAQ,CAAC2C,aALnB;AAMf40B,2BAAuB,EAAEv3B,qBAAQ,CAAC2C,aANnB;AAOftmB,gBAAY,EAAa2jB,qBAAQ,CAAC2C,aAPnB;AAQf60B,iBAAa,EAAYx3B,qBAAQ,CAAC2C,aARnB;AASf80B,iBAAa,EAAYz3B,qBAAQ,CAAC2C,aATnB;AAUf+0B,iBAAa,EAAY13B,qBAAQ,CAAC2C,aAVnB;AAWfg1B,iBAAa,EAAY33B,qBAAQ,CAAC2C,aAXnB;AAYf2yB,QAAI,EAAqBt1B,qBAAQ,CAAC2C,aAZnB;AAaf4yB,QAAI,EAAqBv1B,qBAAQ,CAAC2C,aAbnB;AAcf0yB,UAAM,EAAmBr1B,qBAAQ,CAAC2C,aAdnB;AAefi1B,WAAO,EAAkB53B,qBAAQ,CAAC2C,aAfnB;AAgBfk1B,gBAAY,EAAa73B,qBAAQ,CAAC2C,aAhBnB;AAiBfk0B,iBAAa,EAAY72B,qBAAQ,CAAC2C,aAjBnB;AAkBfs0B,mBAAe,EAAUj3B,qBAAQ,CAAC2C,aAlBnB;AAoBfm1B,kBAAc,EAAW93B,qBAAQ,CAAC0C,aApBnB;AAqBfq1B,sBAAkB,EAAO/3B,qBAAQ,CAAC0C,aArBnB;AAsBfs1B,aAAS,EAAgBh4B,qBAAQ,CAAC0C,aAtBnB;AAwBf7lB,QAxBe,gBAwBV8pB,QAxBU,EAwB2BsxB,QAxB3B,EAwB2F;AACtG,aAAO,SAASC,YAAT,GAA6C;AAAA;;AAChD,eAAOD,QAAQ,CAAChkD,KAAT,CAAe,IAAf,EAAqBmG,SAArB,EAAgC1K,IAAhC,CAAqC,YAAM;AAC9C,gBAAI,CAACuU,KAAL,CAAWxM,GAAX,CAAe,QAAf,EAAyB4kB,yDAAe,CAACsoB,+BAAwB,EAAzB,EAA6B,MAAI,CAAC0R,eAAlC,CAAxC;;AAEA,cAAI,CAAC,MAAI,CAACjnD,MAAV,EAAkB;AACd,kBAAM,IAAI2C,KAAJ,iDAAN;AACH;AACJ,SANM,CAAP;AAOH,OARD;AASH;AAlCc,GAvGgB;AA4InCsjD,QA5ImC,kBA4I5Br0C,KA5I4B,EA4IAC,MA5IA,EA4I6B;AAE5D,QAAID,KAAJ,EAAW;AACP,WAAKhG,SAAL,CAAeK,KAAf,CAAqB2F,KAArB,GAA6B2H,4BAAK,CAAC3H,KAAD,CAAlC;AACA,WAAK9F,OAAL,CAAaG,KAAb,CAAmB2F,KAAnB,GAA6B2H,4BAAK,CAAC3H,KAAD,CAAlC;AACH;;AAED,QAAIC,MAAJ,EAAY;AACR,WAAKjG,SAAL,CAAeK,KAAf,CAAqB4F,MAArB,GAA8B0H,4BAAK,CAAC1H,MAAD,CAAnC;AACA,WAAK/F,OAAL,CAAaG,KAAb,CAAmB4F,MAAnB,GAA4B0H,4BAAK,CAAC1H,MAAD,CAAjC;AACH;AACJ,GAvJkC;AAyJnCs0C,MAzJmC,kBAyJ5B;AACHlwC,sCAAW,CAAC,KAAKnK,OAAN,CAAX;AACH,GA3JkC;AA6JnCo6C,MA7JmC,kBA6J5B;AACHhwC,sCAAW,CAAC,KAAKpK,OAAN,CAAX;AACH,GA/JkC;AAiKnC08C,SAjKmC,mBAiK3Br7C,GAjK2B,EAiKb;AAClB,SAAK0C,MAAL,CAAYX,YAAZ,CAAyB,KAAzB,EAAgC/B,GAAhC;AACH;AAnKkC,CAAvC;;AAsKA,IAAI4N,IAAJ,EAAgC;AAE5B;AAEA6rC,gBAAc,CAAC70B,0BAAa,CAAC7H,KAAf,CAAd,GAAsC;AAElC28B,aAAS,EAAsB,IAFG;AAGlCC,iCAA6B,EAAE,KAHG;AAIlCC,eAAW,EAAoB,KAJG;AAKlCC,eAAW,EAAoB,IALG;AAMlCpV,eAAW,EAAoB,IANG;AAQlCnkC,QARkC,gBAQ7BN,GAR6B,EAQY;AAAA;;AAAA,UAAzCA,GAAyC;AAAzCA,WAAyC,GAAzB,EAAyB;AAAA;;AAC1C,aAAOrL,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAAA,mBAKtB,MAAI,CAACm2C,SAAL,CAAe3mC,UAAf,IAA6B,EALP;AAAA,8BAGtBtB,KAHsB;AAAA,YAGtBA,KAHsB,2BAGd4hB,+BAAkB,CAACC,KAHL;AAAA,+BAItB5hB,MAJsB;AAAA,YAItBA,MAJsB,4BAIb2hB,+BAAkB,CAACnsC,MAJN;;AAO1BuqB,aAAK,GAAG+H,yCAAkB,CAAC/H,KAAD,EAAQ5R,MAAM,CAACkpC,UAAf,CAA1B;AACAr3B,cAAM,GAAG8H,yCAAkB,CAAC9H,MAAD,EAAS7R,MAAM,CAACkpC,UAAhB,CAA3B;;AAR0B,2BAUXob,WAAW,CAAC;AAAE1yC,eAAK,EAALA,KAAF;AAASC,gBAAM,EAANA;AAAT,SAAD,CAVA;AAAA,YAUpBktC,CAVoB,gBAUpBA,CAVoB;AAAA,YAUjBJ,CAViB,gBAUjBA,CAViB;;AAY1B,YAAI1vC,UAAU,GAAG,MAAI,CAAC4qC,SAAL,CAAe5qC,UAAf,CAA0B/B,KAA1B,IAAmC,EAApD;AAEA,cAAI,CAAClN,MAAL,GAAckN,4BAAK,CAACC,GAAG,IAAI,EAAR;AACf/M,cAAI,EAAQ,MAAI,CAAC6mD,eADF;AAEfr1C,eAAK,EAALA,KAFe;AAGfC,gBAAM,EAANA,MAHe;AAIfL,aAAG,EAASmtC,CAJG;AAKfjtC,cAAI,EAAQqtC,CALG;AAMf1kB,gBAAM,EAAM,CANG;AAOfiP,iBAAO,EAAK,CAPG;AAQfC,iBAAO,EAAK,CARG;AASfC,mBAAS,EAAG,CATG;AAUfC,oBAAU,EAAE;AAVG,WAWZx6B,UAXY,EAAnB;AAcA,cAAI,CAAC24C,eAAL,GAAuB,MAAI,CAAC5nD,MAA5B;;AAEA,cAAI,CAAC6U,KAAL,CAAWgyB,QAAX,CAAoB,eAApB,EAAqC,YAAM;AACvC,cAAI,MAAI,CAAC7mC,MAAT,EAAiB;AACb,kBAAI,CAACA,MAAL,CAAY+N,KAAZ;;AACAwwB,wCAAa,CAAC,MAAI,CAACv+B,MAAN,CAAb;AACA,mBAAO,MAAI,CAACA,MAAZ;AACA,mBAAO,MAAI,CAAC4nD,eAAZ;AACH;AACJ,SAPD;;AASA,cAAI,CAAC3B,MAAL,CAAYr0C,KAAZ,EAAmBC,MAAnB;AACH,OAxCM,CAAP;AAyCH,KAlDiC;AAoDlC41C,iBApDkC,2BAoDG;AACjC,aAAO3lD,yCAAY,CAAC4B,GAAb,CAAiBmH,mBAAjB,CAAP;AACH,KAtDiC;AAwDlCo7C,UAxDkC,oBAwDzB,CACL;AACH,KA1DiC;AA4DlCC,QA5DkC,kBA4D3B;AACH,YAAM,IAAIvjD,KAAJ,CAAU,oBAAV,CAAN;AACH,KA9DiC;AAgElCwjD,QAhEkC,kBAgE3B;AACH,YAAM,IAAIxjD,KAAJ,CAAU,oBAAV,CAAN;AACH,KAlEiC;AAoElCmlD,qBAAiB,EAAE;AAEfC,mBAAa,EAAWn3B,qBAAQ,CAAC2C,aAFlB;AAGf00B,sBAAgB,EAAQr3B,qBAAQ,CAAC2C,aAHlB;AAKftmB,kBAAY,EAAY2jB,qBAAQ,CAAC2C,aALlB;AAOf60B,mBAAa,EAAWx3B,qBAAQ,CAAC2C,aAPlB;AAQf80B,mBAAa,EAAWz3B,qBAAQ,CAAC2C,aARlB;AASf+0B,mBAAa,EAAW13B,qBAAQ,CAAC2C,aATlB;AAUfg1B,mBAAa,EAAW33B,qBAAQ,CAAC2C,aAVlB;AAYf2yB,UAAI,EAAoBt1B,qBAAQ,CAAC2C,aAZlB;AAaf4yB,UAAI,EAAoBv1B,qBAAQ,CAAC2C,aAblB;AAef20B,2BAAqB,EAAGt3B,qBAAQ,CAAC2C,aAflB;AAiBf9lB,UAAI,EAAqBmjB,qBAAQ,CAAC0C,aAjBnB;AAkBfk1B,aAAO,EAAkB53B,qBAAQ,CAAC0C,aAlBnB;AAmBf60B,6BAAuB,EAAEv3B,qBAAQ,CAAC0C,aAnBnB;AAoBf00B,sBAAgB,EAASp3B,qBAAQ,CAAC0C,aApBnB;AAqBf2yB,YAAM,EAAmBr1B,qBAAQ,CAAC0C,aArBnB;AAsBfo1B,oBAAc,EAAW93B,qBAAQ,CAAC0C,aAtBnB;AAuBfq1B,wBAAkB,EAAO/3B,qBAAQ,CAAC0C,aAvBnB;AAwBfs1B,eAAS,EAAgBh4B,qBAAQ,CAAC0C;AAxBnB,KApEe;AA+FlCk1B,WA/FkC,mBA+F1Br7C,GA/F0B,EA+FZ;AAElB,UAAI2N,sDAAY,CAAC,KAAK9a,MAAN,CAAhB,EAA+B;AAC3B,YAAI;AACA,cAAI,KAAKA,MAAL,CAAYgO,QAAZ,IAAwB,KAAKhO,MAAL,CAAYgO,QAAZ,CAAqB9I,OAAjD,EAA0D;AACtD,iBAAKlF,MAAL,CAAYgO,QAAZ,CAAqB9I,OAArB,CAA6BiI,GAA7B;AACA;AACH;AACJ,SALD,CAKE,OAAO5M,GAAP,EAAY,CACV;AACH;AACJ;;AAED,WAAKP,MAAL,CAAYgO,QAAZ,GAAuBb,GAAvB;AACH;AA7GiC,GAAtC;AA+GH,C;;AChVD;AAKA;AACO,SAAS47C,YAAT,CAA4BtiD,IAA5B,EAA+DjC,GAA/D,EAA6EtC,KAA7E,EAAyF6O,KAAzF,EAAkH4zC,QAAlH,EAA6I;AAAA,MAA3BA,QAA2B;AAA3BA,YAA2B,GAAN,IAAM;AAAA;;AAEhJ,MAAIqE,OAAO,GAAG9mD,KAAK,KAAK,IAAV,IAAkBA,KAAK,KAAKqB,SAA5B,IAAyCrB,KAAK,KAAK,EAAjE;;AAEA,MAAI,CAAC8mD,OAAL,EAAc;AACV,QAAIrE,QAAQ,IAAIl+C,IAAI,CAACk+C,QAAL,KAAkB,KAA9B,IAAuC,CAACl+C,IAAI,CAACb,cAAL,CAAoB,KAApB,CAA5C,EAAwE;AACpE,YAAM,IAAIjD,KAAJ,wBAAgC6B,GAAhC,CAAN;AACH;;AAED;AACH;;AAED,MAAItC,KAAK,IAAI,OAAOA,KAAK,CAAC5B,IAAb,KAAsB,UAA/B,IAA6CmG,IAAI,CAAC9F,OAAtD,EAA+D;AAC3D;AACH;;AAED,MAAI8F,IAAI,CAACyB,IAAL,KAAc,UAAlB,EAA8B;AAE1B,QAAI,EAAE,OAAOhG,KAAP,KAAiB,UAAnB,CAAJ,EAAoC;AAChC,YAAM,IAAI6B,SAAJ,oCAAgDS,GAAhD,CAAN;AACH;AAEJ,GAND,MAMO,IAAIiC,IAAI,CAACyB,IAAL,KAAc,QAAlB,EAA4B;AAE/B,QAAI,OAAOhG,KAAP,KAAiB,QAArB,EAA+B;AAC3B,YAAM,IAAI6B,SAAJ,kCAA8CS,GAA9C,CAAN;AACH;AAEJ,GANM,MAMA,IAAIiC,IAAI,CAACyB,IAAL,KAAc,QAAlB,EAA4B;AAE/B;AAEA,QAAIzB,IAAI,CAACwiD,WAAL,KAAqB,KAAzB,EAAgC;AAC5B,UAAI;AACA5iD,YAAI,CAACC,SAAL,CAAepE,KAAf;AACH,OAFD,CAEE,OAAO3B,GAAP,EAAY;AACV,cAAM,IAAIoC,KAAJ,gCAAwC6B,GAAxC,CAAN;AACH;AACJ;AAEJ,GAZM,MAYA,IAAIiC,IAAI,CAACyB,IAAL,KAAc,QAAlB,EAA4B;AAE/B,QAAIghD,KAAK,CAAC7vC,QAAQ,CAACnX,KAAD,EAAQ,EAAR,CAAT,CAAT,EAAgC;AAC5B,YAAM,IAAI6B,SAAJ,4BAAwCS,GAAxC,CAAN;AACH;AACJ;;AAED,MAAI,OAAOiC,IAAI,CAAC0iD,QAAZ,KAAyB,UAAzB,IAAuCjnD,KAA3C,EAAkD;AAC9CuE,QAAI,CAAC0iD,QAAL,CAAcjnD,KAAd,EAAqB6O,KAArB;AACH;AACJ;AAGD;;;;;;;AAOO,SAASq4C,aAAT,CAA0BvP,SAA1B,EAAoD9oC,KAApD,EAAuE4zC,QAAvE,EAAkG;AAAA,MAA3BA,QAA2B;AAA3BA,YAA2B,GAAN,IAAM;AAAA;;AAErG5zC,OAAK,GAAGA,KAAK,IAAI,EAAjB;;AAEA,MAAIA,KAAK,CAAC6K,GAAN,IAAa,OAAOi+B,SAAS,CAAC1sC,GAAjB,KAAyB,QAAtC,IAAkD,CAAC0sC,SAAS,CAAC1sC,GAAV,CAAc4D,KAAK,CAAC6K,GAApB,CAAvD,EAAiF;AAC7E,UAAM,IAAIjZ,KAAJ,mBAA2BoO,KAAK,CAAC6K,GAAjC,CAAN;AACH,GANoG,CAQrG;;;AARqG,6CAUrFi+B,SAAS,CAAC6B,YAAV,EAVqF,8CAU3D;AAArC,QAAIl3C,GAAG,8BAAP;AAED;AACA,QAAIiC,IAAI,GAAGozC,SAAS,CAAC2K,OAAV,CAAkBhgD,GAAlB,CAAX;;AAEA,QAAIiC,IAAI,CAACo+C,KAAL,IAAc9zC,KAAK,CAACnL,cAAN,CAAqBa,IAAI,CAACo+C,KAA1B,CAAlB,EAAoD;AAEhD,UAAI3iD,KAAK,GAAG6O,KAAK,CAACtK,IAAI,CAACo+C,KAAN,CAAjB;AACA,aAAO9zC,KAAK,CAACtK,IAAI,CAACo+C,KAAN,CAAZ;;AAEA,UAAI,CAAC9zC,KAAK,CAACvM,GAAD,CAAV,EAAiB;AACbuM,aAAK,CAACvM,GAAD,CAAL,GAAatC,KAAb;AACH;AACJ;AACJ,GAxBoG,CA0BrG;;AAEA;;;;;;;;;AAYA;;;AAxCqG,oCA0CrFW,MAAM,CAACyB,IAAP,CAAYyM,KAAZ,CA1CqF,qCA0CjE;AAA/B,QAAIvM,IAAG,qBAAP;;AAED;AACA,QAAIiC,KAAiC,GAAGozC,SAAS,CAAC2K,OAAV,CAAkBhgD,IAAlB,CAAxC;;AACA,QAAItC,MAAK,GAAG6O,KAAK,CAACvM,IAAD,CAAjB;;AAEA,QAAIiC,KAAJ,EAAU;AACN;AACAsiD,kBAAY,CAACtiD,KAAD,EAAOjC,IAAP,EAAYtC,MAAZ,EAAmB6O,KAAnB,EAA0B4zC,QAA1B,CAAZ;AACH;AACJ;;AApDoG,6CAsDrF9K,SAAS,CAAC6B,YAAV,EAtDqF,8CAsD3D;AAArC,QAAIl3C,KAAG,8BAAP;;AAED;AACA,QAAIiC,MAAiC,GAAGozC,SAAS,CAAC2K,OAAV,CAAkBhgD,KAAlB,CAAxC;;AACA,QAAItC,OAAK,GAAG6O,KAAK,CAACvM,KAAD,CAAjB;;AAEA,QAAIiC,MAAI,IAAI,CAACsK,KAAK,CAACnL,cAAN,CAAqBpB,KAArB,CAAb,EAAwC;AACpCukD,kBAAY,CAACtiD,MAAD,EAAOjC,KAAP,EAAYtC,OAAZ,EAAmB6O,KAAnB,EAA0B4zC,QAA1B,CAAZ;AACH;AACJ;AACJ,C;;ACjID;AAEA;;AAMA,SAASpe,SAAT,CAAmBrkC,KAAnB,EAA6C;AACzC,SAAOA,KAAK,KAAK,IAAV,IAAkBA,KAAK,KAAKqB,SAA5B,IAAyCrB,KAAK,KAAK,EAA1D;AACH;AAGD;;;;;AAMA;;;AACO,SAASmnD,aAAT,CAA6BxP,SAA7B,EAAuDyP,QAAvD,EAAsFv4C,KAAtF,EAA+GvM,GAA/G,EAA6HtC,KAA7H,EAAkK;AAAE;AAEvK,MAAIuE,IAAI,GAAGozC,SAAS,CAAC2K,OAAV,CAAkBhgD,GAAlB,CAAX;AAEA,MAAI+kD,WAAJ;;AAEA,MAAI9iD,IAAI,CAACvE,KAAT,EAAgB;AACZqnD,eAAW,GAAG9iD,IAAI,CAACvE,KAAnB;AACH,GAFD,MAEO,IAAIuE,IAAI,CAACK,GAAL,KAAa,CAACiK,KAAK,CAACnL,cAAN,CAAqBpB,GAArB,CAAD,IAA8B,CAAC+hC,SAAS,CAACrkC,KAAD,CAArD,CAAJ,EAAmE;AACtEqnD,eAAW,GAAG9iD,IAAI,CAACK,GAAL,CAASzG,IAAT,CAAcw5C,SAAd,EAAyB9oC,KAAzB,CAAd;AACH,GAFM,MAEA;AACHw4C,eAAW,GAAGrnD,KAAd;AACH;;AAED,MAAI,CAACqnD,WAAD,IAAgB9iD,IAAI,CAACo+C,KAArB,IAA8B9zC,KAAK,CAACtK,IAAI,CAACo+C,KAAN,CAAvC,EAAqD;AACjD0E,eAAW,GAAGx4C,KAAK,CAACtK,IAAI,CAACo+C,KAAN,CAAnB;AACH;;AAED,MAAI2E,SAAS,GAAG,KAAhB;;AAEA,MAAI/iD,IAAI,CAACgjD,QAAL,IAAiBF,WAAW,KAAK,IAAjC,IAAyCA,WAAW,KAAKhmD,SAA7D,EAAwE;AACpEgmD,eAAW,GAAG9iD,IAAI,CAACgjD,QAAL,CAAcppD,IAAd,CAAmBipD,QAAnB,EAA6BC,WAA7B,EAA0Cx4C,KAA1C,CAAd;AACAy4C,aAAS,GAAG,IAAZ;AACH;;AAED,MAAIthD,IAAI,GAAGzB,IAAI,CAACyB,IAAhB;;AAEA,MAAIA,IAAI,KAAK,SAAb,EAAwB;AACpB;AACAqhD,eAAW,GAAGh8C,OAAO,CAACg8C,WAAD,CAArB;AAEH,GAJD,MAIO,IAAIrhD,IAAI,KAAK,UAAb,EAAyB;AAE5B,QAAI,CAACqhD,WAAD,IAAgB9iD,IAAI,CAACoE,IAAzB,EAA+B;AAC3B;AACA0+C,iBAAW,GAAG1+C,mBAAd;;AAEA,UAAI,CAAC2+C,SAAD,IAAc/iD,IAAI,CAACgjD,QAAvB,EAAiC;AAC7B;AACAF,mBAAW,GAAG9iD,IAAI,CAACgjD,QAAL,CAAcppD,IAAd,CAAmBipD,QAAnB,EAA6Bz+C,mBAA7B,EAAmCkG,KAAnC,CAAd;AACH;AACJ;;AAED,QAAIw4C,WAAW,IAAI,OAAOA,WAAP,KAAuB,UAA1C,EAAsD;AAElDA,iBAAW,GAAGA,WAAW,CAACG,IAAZ,CAAiBJ,QAAjB,CAAd,CAFkD,CAIlD;;AAEA,UAAI7iD,IAAI,CAACmS,SAAT,EAAoB;AAChB;AACA2wC,mBAAW,GAAG3wC,gCAAS,CAAC2wC,WAAD,CAAvB;AACH;;AAED,UAAI9iD,IAAI,CAACqS,SAAT,EAAoB;AAChB;AACAywC,mBAAW,GAAGzwC,gCAAS,CAACywC,WAAD,CAAvB;AACH,OAdiD,CAgBlD;;;AAEA,UAAIhyB,QAAQ,GAAGgyB,WAAf,CAlBkD,CAmBlD;;AACAA,iBAAW,GAAG,uBAAmB;AAC7B1P,iBAAS,CAAC3zB,GAAV,gBAA4B1hB,GAA5B;AACA,eAAO+yB,QAAQ,CAAC1yB,KAAT,CAAe,IAAf,EAAqBmG,SAArB,CAAP;AACH,OAHD,CApBkD,CAyBlD;;;AAEA,UAAIvE,IAAI,CAACgE,IAAT,EAAe;AACX;AACA8+C,mBAAW,GAAG9+C,2BAAI,CAAC8+C,WAAD,CAAlB;AACH,OA9BiD,CAgClD;;;AAEA,UAAI9iD,IAAI,CAACwE,OAAT,EAAkB;AACd;AACAs+C,mBAAW,GAAGt+C,8BAAO,CAACs+C,WAAD,CAArB;AACH;AACJ;AAEJ,GApDM,MAoDA,IAAIrhD,IAAI,KAAK,QAAb,EAAuB,CAC1B;AAEH,GAHM,MAGA,IAAIA,IAAI,KAAK,QAAb,EAAuB,CAC1B;AAEH,GAHM,MAGA,IAAIA,IAAI,KAAK,QAAb,EAAuB;AAC1B,QAAIqhD,WAAW,KAAKhmD,SAApB,EAA+B;AAC3B;AACAgmD,iBAAW,GAAGlwC,QAAQ,CAACkwC,WAAD,EAAc,EAAd,CAAtB;AACH;AACJ,GA9FoK,CAgGrK;;;AACA,SAAOA,WAAP;AACH;AAGD;;;;;;AAMO,SAASI,cAAT,CAA2B9P,SAA3B,EAAqDyP,QAArD,EAAoFv4C,KAApF,EAAsI;AAEzI,MAAIxO,MAAM,GAAG,EAAb,CAFyI,CAIzI;;AACAwO,OAAK,GAAGA,KAAK,IAAI,EAAjB;;AALyI,oCAOzHlO,MAAM,CAACyB,IAAP,CAAYyM,KAAZ,CAPyH,qCAOrG;AAA/B,QAAIvM,GAAG,qBAAP;;AACD,QAAIq1C,SAAS,CAAC6B,YAAV,GAAyB96C,OAAzB,CAAiC4D,GAAjC,MAA0C,CAAC,CAA/C,EAAkD;AAC9C;AACAjC,YAAM,CAACiC,GAAD,CAAN,GAAc6kD,aAAa,CAACxP,SAAD,EAAYyP,QAAZ,EAAsBv4C,KAAtB,EAA6BvM,GAA7B,EAAkCuM,KAAK,CAACvM,GAAD,CAAvC,CAA3B;AACH,KAHD,MAGO;AACHjC,YAAM,CAACiC,GAAD,CAAN,GAAcuM,KAAK,CAACvM,GAAD,CAAnB;AACH;AACJ;;AAdwI,6CAgBzHq1C,SAAS,CAAC6B,YAAV,EAhByH,8CAgB/F;AAArC,QAAIl3C,IAAG,8BAAP;;AACD,QAAI,CAACuM,KAAK,CAACnL,cAAN,CAAqBpB,IAArB,CAAD,KAA+B,CAAC8kD,QAAQ,CAACv4C,KAAV,IAAmB,CAACu4C,QAAQ,CAACv4C,KAAT,CAAenL,cAAf,CAA8BpB,IAA9B,CAAnD,CAAJ,EAA4F;AAExF;AACA,UAAIolD,cAAc,GAAGP,aAAa,CAACxP,SAAD,EAAYyP,QAAZ,EAAsBv4C,KAAtB,EAA6BvM,IAA7B,EAAkCuM,KAAK,CAACvM,IAAD,CAAvC,CAAlC;;AAEA,UAAIolD,cAAc,KAAKrmD,SAAvB,EAAkC;AAC9BhB,cAAM,CAACiC,IAAD,CAAN,GAAcolD,cAAd;AACH;AACJ;AACJ,GA1BwI,CA4BzI;;;AACA,SAAOrnD,MAAP;AACH;AAGD;;;;;;;;;;AAWA;;AACA,SAASmO,aAAT,CAA6BjK,IAA7B,EAAgEjC,GAAhE,EAA8EtC,KAA9E,EAAgH;AAC5G,SAAOJ,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAC1B,QAAI,OAAO+C,IAAI,CAACojD,UAAZ,KAA2B,UAA/B,EAA2C;AACvC,aAAOpjD,IAAI,CAACojD,UAAL,CAAgB3nD,KAAhB,CAAP;AACH,KAFD,MAEO,IAAI,OAAOuE,IAAI,CAACojD,UAAZ,KAA2B,QAA/B,EAAyC;AAC5C,aAAOpjD,IAAI,CAACojD,UAAZ;AACH,KAFM,MAEA;AACH,aAAOrlD,GAAP;AACH;AACJ,GARM,CAAP;AASH,C,CAED;;;AACA,SAASslD,aAAT,CAA6BrjD,IAA7B,EAAgEjC,GAAhE,EAA8EtC,KAA9E,EAA+G;AAC3G,SAAOJ,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAC1B,QAAI,OAAO+C,IAAI,CAACsjD,UAAZ,KAA2B,UAA/B,EAA2C;AACvC,aAAOtjD,IAAI,CAACsjD,UAAL,CAAgB7nD,KAAhB,CAAP;AACH,KAFD,MAEO;AACH,aAAOA,KAAP;AACH;AACJ,GANM,CAAP;AAOH;;AAEM,SAAS8nD,YAAT,CAAyBC,QAAzB,EAAmEl5C,KAAnE,EAA2H;AAE9H,MAAI1D,MAAM,GAAG,EAAb;AAEA,SAAOvL,yCAAY,CAACkC,GAAb,CAAiBnB,MAAM,CAACyB,IAAP,CAAYyM,KAAZ,EAAmBxM,GAAnB,CAAuB,UAAAC,GAAG,EAAI;AAElD,QAAIiC,IAAI,GAAGwjD,QAAQ,CAACzlD,GAAD,CAAnB;;AAEA,QAAI,CAACiC,IAAL,EAAW;AACP,aADO,CACC;AACX;;AAED,WAAO3E,yCAAY,CAACL,OAAb,GAAuBnB,IAAvB,CAA4B,YAAM;AAErC,UAAI4B,KAAK,GAAG6O,KAAK,CAACvM,GAAD,CAAjB;;AAEA,UAAI,CAACtC,KAAL,EAAY;AACR;AACH;;AAED,UAAI,CAACuE,IAAI,CAACojD,UAAV,EAAsB;AAClB;AACH;;AAED,aAAO3nD,KAAP;AAEH,KAdM,EAcJ5B,IAdI,CAcC,UAAA4B,KAAK,EAAI;AAEb,UAAI,CAACA,KAAL,EAAY;AACR;AACH;;AAED,aAAOJ,yCAAY,CAACkC,GAAb,CAAiB,CACpB;AACA0M,mBAAa,CAACjK,IAAD,EAAOjC,GAAP,EAAYtC,KAAZ,CAFO,EAGpB;AACA4nD,mBAAa,CAACrjD,IAAD,EAAOjC,GAAP,EAAYtC,KAAZ,CAJO,CAAjB,EAKJ5B,IALI,CAKC,gBAAgC;AAAA,YAA7BupD,UAA6B;AAAA,YAAjBE,UAAiB;AAEpC,YAAIxnD,MAAJ;;AAEA,YAAI,OAAOwnD,UAAP,KAAsB,SAA1B,EAAqC;AACjCxnD,gBAAM,GAAG,GAAT;AACH,SAFD,MAEO,IAAI,OAAOwnD,UAAP,KAAsB,QAA1B,EAAoC;AACvCxnD,gBAAM,GAAGwnD,UAAU,CAAC5pD,QAAX,EAAT;AACH,SAFM,MAEA,IAAI,OAAO4pD,UAAP,KAAsB,UAA1B,EAAsC;AACzC;AACH,SAFM,MAEA,IAAI,OAAOA,UAAP,KAAsB,QAAtB,IAAkCA,UAAU,KAAK,IAArD,EAA2D;AAE9D,cAAItjD,IAAI,CAACyjD,aAAL,KAAuB,MAA3B,EAAmC;AAC/B3nD,kBAAM,GAAG8D,IAAI,CAACC,SAAL,CAAeyjD,UAAf,CAAT;AACH,WAFD,MAEO;AACHxnD,kBAAM,GAAGmG,6BAAM,CAACqhD,UAAD,EAAavlD,GAAb,CAAf;;AADG,8CAGgB3B,MAAM,CAACyB,IAAP,CAAY/B,MAAZ,CAHhB,qCAGqC;AAAnC,kBAAI4nD,MAAM,qBAAV;AACD98C,oBAAM,CAAC88C,MAAD,CAAN,GAAiB5nD,MAAM,CAAC4nD,MAAD,CAAvB;AACH;;AAED;AACH;AAEJ,SAdM,MAcA,IAAI,OAAOJ,UAAP,KAAsB,QAA1B,EAAoC;AACvCxnD,gBAAM,GAAGwnD,UAAU,CAAC5pD,QAAX,EAAT;AACH;;AAEDkN,cAAM,CAACw8C,UAAD,CAAN,GAAqBtnD,MAArB;AACH,OAlCM,CAAP;AAmCH,KAvDM,CAAP;AAyDH,GAjEuB,CAAjB,EAiEHjC,IAjEG,CAiEE,YAAM;AACXuC,UAAM,CAACyB,IAAP,CAAY+I,MAAZ,EAAoB8a,OAApB,CAA4B,UAAA3jB,GAAG,EAAI;AAC/B6I,YAAM,CAAC7I,GAAD,CAAN,GAAc4lD,MAAM,CAAC/8C,MAAM,CAAC7I,GAAD,CAAP,CAApB;AACH,KAFD;AAGA,WAAO6I,MAAP;AACH,GAtEM,CAAP;AAuEH,C;;;;;;;;;AC/QD;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAMA;AACA;AAMA;AACA;AACA;AAEA4N,qBAAM,CAAClK,KAAP,GAAekK,qBAAM,CAAClK,KAAP,IAAgB,EAA/B;AACAkK,qBAAM,CAACmmC,OAAP,GAAiBnmC,qBAAM,CAACmmC,OAAP,IAAkB,EAAnC;;AAwBA;;;;;;;AAQO,IAAMiJ,sBAAb;AAAA;AAAA;AAAA;;AAmByB;AAErB,2BAAYxQ,SAAZ,EAAsCl1C,OAAtC,QAAiG;AAAA;;AAAA,QAAvCoM,KAAuC,QAAvCA,KAAuC;AAC7F;AAD6F,UAnBjGlD,IAmBiG;AAAA,UAlBjGlJ,OAkBiG;AAAA,UAjBjGoM,KAiBiG;AAAA,UAhBjGk2C,eAgBiG;AAAA,UAfjGjC,MAeiG;AAAA,UAdjGhlD,MAciG;AAAA,UAbjGsqD,aAaiG;AAAA,UAXjG1+C,SAWiG;AAAA,UAVjGE,OAUiG;AAAA,UATjGy+C,MASiG;AAAA,UARjG16C,MAQiG;AAAA,UANjG63C,eAMiG;AAAA,UALjGE,eAKiG;AAAA,UAHjG4C,YAGiG;AAAA,UAFjG7mD,OAEiG;AAG7F,UAAKk2C,SAAL,GAAiBA,SAAjB;;AAEA,UAAK4Q,oBAAL;;AAEA,UAAK9lD,OAAL,GAAeA,OAAf;;AAEA,QAAI;AACA,YAAKygD,QAAL,CAAcr0C,KAAd;AACH,KAFD,CAEE,OAAOxQ,GAAP,EAAY;AACV,UAAIwQ,KAAK,CAAC1N,OAAV,EAAmB;AACf0N,aAAK,CAAC1N,OAAN,CAAc9C,GAAd;AACH;;AACD,YAAMA,GAAN;AACH;;AAED,QAAI,MAAKwQ,KAAL,CAAWqJ,QAAf,EAAyB;AACrBD,wCAAW,CAAC,MAAKpJ,KAAL,CAAWqJ,QAAZ,CAAX;AACH;;AAED,UAAK6sC,eAAL,GAAuB,MAAKzD,oBAAL,CAA0B;AAAEkH,cAAQ,EAAE1qD;AAAZ,KAA1B,CAAvB;;AAEA,UAAK2qD,uBAAL,GAxB6F,CA0B7F;AACA;;;AAEA,UAAK9Q,SAAL,CAAe3zB,GAAf;;AAEA,UAAK0kC,cAAL;;AAEA,UAAK5F,MAAL,GAAc,IAAIljD,yCAAJ,EAAd;;AAEA,UAAKkjD,MAAL,CAAY1hD,KAAZ,CAAkB,UAAA/C,GAAG,EAAI;AACrB,aAAO,MAAK4B,KAAL,CAAW5B,GAAX,CAAP;AACH,KAFD;;AAnC6F;AAsChG;;AA3DL;;AAAA,SA6DIu5C,MA7DJ,GA6DI,gBAAOhuC,OAAP,EAAiC08C,OAAjC,EAA8F;AAAA;;AAAA,QAA7DA,OAA6D;AAA7DA,aAA6D,GAAzC,IAAyC;AAAA;;AAC1F,WAAO,KAAKqC,OAAL,CAAa,YAAM;AAEtB,YAAI,CAAChR,SAAL,CAAe3zB,GAAf,aAA8B,MAAI,CAACvhB,OAAnC,EAA+C;AAAEA,eAAO,EAAE,MAAI,CAACA,OAAhB;AAAyBmH,eAAO,EAAPA,OAAzB;AAAkC08C,eAAO,EAAEliD,gCAAS,CAACkiD,OAAD;AAApD,OAA/C;;AAEA,UAAI7hB,KAAK,GAAG,EAAZ;AAEAA,WAAK,CAACmkB,QAAN,GAAiB,MAAI,CAAC/5C,KAAL,CAAW+5C,QAAX,EAAjB;AAEAnkB,WAAK,CAAC9b,SAAN,GAAkB,MAAI,CAACA,SAAL,EAAlB;AAEA8b,WAAK,CAAC15B,YAAN,GAAqBnL,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AACxC,YAAIoI,OAAJ,EAAa;AACT,iBAAO,MAAI,CAACmB,YAAL,CAAkBnB,OAAlB,CAAP;AACH;AACJ,OAJoB,CAArB;AAMA66B,WAAK,CAACohB,aAAN,GAAsBphB,KAAK,CAAC15B,YAAN,CAAmB3M,IAAnB,CAAwB,YAAM;AAChD,eAAO,MAAI,CAACynD,aAAL,CAAmBj8C,OAAnB,CAAP;AACH,OAFqB,CAAtB;AAIA66B,WAAK,CAACyhB,aAAN,GAAsBzhB,KAAK,CAACohB,aAAN,CAAoBznD,IAApB,CAAyB,YAAM;AACjD,eAAO,MAAI,CAAC8nD,aAAL,EAAP;AACH,OAFqB,CAAtB;AAIAzhB,WAAK,CAAC8gB,aAAN,GAAsB9gB,KAAK,CAACohB,aAAN,CAAoBznD,IAApB,CAAyB,YAAM;AACjD,eAAO,MAAI,CAACmnD,aAAL,EAAP;AACH,OAFqB,CAAtB;AAIA9gB,WAAK,CAACkhB,eAAN,GAAwB/lD,yCAAY,CAACkC,GAAb,CAAiB,CAAE2iC,KAAK,CAAC8gB,aAAR,EAAuB,MAAI,CAACzC,MAA5B,CAAjB,EAAuD1kD,IAAvD,CAA4D,YAAM;AACtF,eAAO,MAAI,CAACunD,eAAL,EAAP;AACH,OAFuB,CAAxB,CA5BsB,CAgCtB;;AACAlhB,WAAK,CAACl5B,IAAN,GAAa,MAAI,CAACs9C,MAAL,CAAY/D,WAAZ,GACP,MAAI,CAACv5C,IAAL,EADO,GAEPk5B,KAAK,CAACohB,aAAN,CAAoBznD,IAApB,CAAyB;AAAA,eAAM,MAAI,CAACmN,IAAL,EAAN;AAAA,OAAzB,CAFN;AAIAk5B,WAAK,CAAC7P,MAAN,GAAeh1B,yCAAY,CAACuC,IAAb,CAAkB;AAAEya,cAAM,EAAE6nB,KAAK,CAAC9b,SAAhB;AAA2Bpd,YAAI,EAAEk5B,KAAK,CAACl5B;AAAvC,OAAlB,EAAiEnN,IAAjE,CAAsE,iBAAgB;AAAA,YAAbwe,MAAa,SAAbA,MAAa;;AACjG,cAAI,CAACgY,MAAL,CAAY,MAAI,CAAC92B,MAAjB,EAAyB8e,MAAzB;AACH,OAFc,CAAf;AAIA6nB,WAAK,CAACkf,aAAN,GAAsBlf,KAAK,CAACl5B,IAAN,CAAWnN,IAAX,CAAgB,YAAM;AACxC,eAAO,MAAI,CAACulD,aAAL,EAAP;AACH,OAFqB,CAAtB;AAIAlf,WAAK,CAACqkB,UAAN,GAAmBlpD,yCAAY,CAACkC,GAAb,CAAiB,CAAE2iC,KAAK,CAAC9b,SAAR,EAAmB8b,KAAK,CAACl5B,IAAzB,CAAjB,EAAkDnN,IAAlD,CAAuD,iBAAgB;AAAA,YAAbwe,MAAa;;AACtF,YAAI8f,aAAM,IAAI,OAAO9f,MAAP,KAAkB,QAAhC,EAA0C;AACtC,iBAAO8f,aAAM,CAAC6U,OAAP,CAAe,MAAI,CAACzzC,MAApB,EAA4B8e,MAA5B,CAAP;AACH;AACJ,OAJkB,CAAnB;;AAMA,UAAI,CAAC,MAAI,CAACjR,IAAV,EAAgB;AACZ84B,aAAK,CAACwhB,uBAAN,GAAgCxhB,KAAK,CAAC8gB,aAAN,CAAoBnnD,IAApB,CAAyB,YAAM;AAC3D,iBAAO,MAAI,CAAC6nD,uBAAL,EAAP;AACH,SAF+B,CAAhC;AAIAxhB,aAAK,CAAC0hB,aAAN,GAAsB1hB,KAAK,CAACwhB,uBAAN,CAA8B7nD,IAA9B,CAAmC,YAAM;AAC3D,iBAAO,MAAI,CAAC+nD,aAAL,EAAP;AACH,SAFqB,CAAtB;AAGH;;AAED1hB,WAAK,CAACwM,UAAN,GAAmBrxC,yCAAY,CAACkC,GAAb,CAAiB,CAAE2iC,KAAK,CAAC9b,SAAR,EAAmB8b,KAAK,CAACl5B,IAAzB,CAAjB,EAAkDnN,IAAlD,CAAuD,iBAAgB;AAAA,YAAbwe,MAAa;AACtF,eAAO,MAAI,CAACq0B,UAAL,CAAgB,OAAOr0B,MAAP,KAAkB,QAAlB,GAA6BA,MAA7B,GAAsC,IAAtD,CAAP;AACH,OAFkB,CAAnB;;AAIA,UAAI,MAAI,CAACjR,IAAT,EAAe;AACX84B,aAAK,CAACskB,QAAN,GAAiBtkB,KAAK,CAACl5B,IAAN,CAAWnN,IAAX,CAAgB,YAAM;AACnC,iBAAO,MAAI,CAAC2qD,QAAL,EAAP;AACH,SAFgB,CAAjB;AAIH,OALD,MAKO,IAAIzC,OAAJ,EAAa;AAChB7hB,aAAK,CAACukB,QAAN,GAAiB,MAAI,CAACA,QAAL,EAAjB;AAEAvkB,aAAK,CAAC6hB,OAAN,GAAgB1mD,yCAAY,CAACkC,GAAb,CAAiB,CAC7B2iC,KAAK,CAACukB,QADuB,EAE7BvkB,KAAK,CAACl5B,IAFuB,EAG7Bk5B,KAAK,CAACqkB,UAHuB,EAI7BrkB,KAAK,CAAC7P,MAJuB,EAK7B6P,KAAK,CAACl5B,IALuB,EAM7Bk5B,KAAK,CAACwM,UANuB,EAO7BxM,KAAK,CAACwhB,uBAPuB,CAAjB,EAQb7nD,IARa,CAQR,iBAAa;AAAA,cAAV6M,GAAU;AACjB,iBAAO,MAAI,CAACq7C,OAAL,CAAar7C,GAAb,CAAP;AACH,SAVe,CAAhB;AAYAw5B,aAAK,CAACwkB,UAAN,GAAmBxkB,KAAK,CAAC6hB,OAAN,CAAcloD,IAAd,CAAmB,YAAM;AACxC,iBAAO,MAAI,CAAC6qD,UAAL,EAAP;AACH,SAFkB,CAAnB;AAGH;;AAED,aAAOrpD,yCAAY,CAACuC,IAAb,CAAkBsiC,KAAlB,CAAP;AAEH,KA5FM,EA4FJrmC,IA5FI,CA4FC,YAAM;AACV,aAAO,MAAI,CAACyQ,KAAL,CAAWq6C,OAAX,EAAP;AACH,KA9FM,EA8FJ9qD,IA9FI,CA8FC,YAAM;AACV,aAAO,MAAP;AACH,KAhGM,CAAP;AAiGH,GA/JL;;AAAA,SAkKIsoD,SAlKJ,GAiKI,qBAC0B;AACtB,QAAI2B,MAAM,GAAG/9C,QAAQ,CAACsC,aAAT,CAAuB,KAAvB,CAAb;AACA0H,mCAAQ,CAAC+zC,MAAD,EAASv4B,wBAAW,CAACC,MAArB,CAAR;AACA,WAAOs4B,MAAP;AACH,GAtKL;;AAAA,SAwKIE,oBAxKJ,GAwKI,gCAAuB;AACnB,QAAI3rC,MAAM,GAAG+L,mDAAS,EAAtB;;AACA,QAAI,CAACmE,qDAAW,CAAC,KAAK6qB,SAAL,CAAe2L,oBAAhB,EAAsC1mC,MAAtC,CAAhB,EAA+D;AAC3D,YAAM,IAAIq2B,gCAAJ,qCAAmDr2B,MAAnD,CAAN;AACH;AACJ,GA7KL;;AAAA,SA+KI4rC,QA/KJ,GA+KI,kBAASl9C,GAAT,EAAsC1B,OAAtC,EAA4F;AAAA;;AACxF,WAAO,KAAK++C,OAAL,CAAa,YAAM;AAEtB,UAAIr9C,GAAG,KAAKxN,MAAZ,EAAoB;AAChB,eAAO,MAAI,CAAC85C,MAAL,CAAYhuC,OAAZ,CAAP;AACH;;AAED,UAAI,CAACyiB,yDAAe,CAACvuB,MAAD,EAASwN,GAAT,CAApB,EAAmC;AAC/B,cAAM,IAAI7K,KAAJ,uCAAN;AACH;;AAED,UAAImJ,OAAO,IAAI,OAAOA,OAAP,KAAmB,QAAlC,EAA4C;AACxC,cAAM,IAAInJ,KAAJ,gEAAwE,OAAOmJ,OAA/E,SAA4FA,OAA5F,CAAN;AACH;;AAED,YAAI,CAACu/C,kBAAL,CAAwB79C,GAAxB;;AAEA,YAAI,CAACqsC,SAAL,CAAe3zB,GAAf,aAA8B,MAAI,CAACvhB,OAAnC,cAAsD;AAAEmH,eAAO,EAAExF,gCAAS,CAACwF,OAAD,CAApB;AAA+BnH,eAAO,EAAE,MAAI,CAACA;AAA7C,OAAtD;;AAEA,YAAI,CAACsiD,eAAL,GAAuB,MAAI,CAACzD,oBAAL,CAA0B;AAAEkH,gBAAQ,EAAEl9C;AAAZ,OAA1B,CAAvB;;AAEA,YAAI,CAAC89C,QAAL,CAAc99C,GAAd;;AAEA,aAAO,MAAI,CAACssC,MAAL,CAAYhuC,OAAZ,CAAP;AACH,KAvBM,CAAP;AAwBH,GAxML;;AAAA,SA2MIy/C,QA3MJ,GA0MI,oBACgC;AAAA;;AAC5B,WAAOzpD,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAC1B,YAAI,CAACmK,IAAL,GAAY,MAAI,CAACq9C,QAAL,GAAgB5qD,IAAhB,CAAqB,UAAA6M,GAAG,EAAI;AACpC,eAAO8K,mCAAY,CAAC9K,GAAD,CAAZ,CAAkB7M,IAAlB,CAAuB,UAAAuN,IAAI,EAAI;AAElC,cAAIuN,IAAI,QAAOjO,GAAG,CAACnG,KAAJ,CAAU,GAAV,EAAeL,KAAf,CAAqB,CAArB,EAAwB,CAAxB,EAA2BmC,IAA3B,CAAgC,GAAhC,CAAf;AACA,cAAI6b,GAAG,SAAQxX,GAAG,CAACnG,KAAJ,CAAU,GAAV,EAAeL,KAAf,CAAqB,CAArB,EAAwBmC,IAAxB,CAA6B,GAA7B,CAAf;AAEA,6DACmBsS,IADnB,uCAGOvN,IAHP,+LAOiD8W,GAPjD;AAWH,SAhBM,CAAP;AAiBH,OAlBW,CAAZ;AAmBH,KApBM,CAAP;AAqBH,GAjOL;;AAAA,SAoOIsmC,QApOJ,GAmOI,oBACgC;AAAA;;AAC5B,WAAOnpD,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAC1B,UAAI,CAAC,MAAI,CAACmK,IAAV,EAAgB;AACZ,cAAM,IAAIlL,KAAJ,uBAAN;AACH;;AAED,aAAO,MAAI,CAACkL,IAAL,CAAUvN,IAAV,CAAe,UAAAuN,IAAI,EAAI;AAC1B;AACA,eAAOD,oCAAa,CAAC,MAAI,CAAC5N,MAAN,EAAc6N,IAAd,CAApB;AACH,OAHM,CAAP;AAIH,KATM,CAAP;AAUH,GA/OL;;AAAA,SAiPIw9C,kBAjPJ,GAiPI,4BAAmB79C,GAAnB,EAAgD;AAE5C,QAAI,CAACA,GAAL,EAAU;AACN,YAAM,KAAKqsC,SAAL,CAAeuJ,WAAf,gCAAN;AACH;;AAED,QAAItoC,sDAAY,CAACtN,GAAD,CAAhB,EAAuB;AACnB;AACH;;AAED,QAAIyhB,MAAM,GAAGpE,mDAAS,EAAtB;AACA,QAAI/L,MAAM,GAAG,KAAK+6B,SAAL,CAAehvB,SAAf,CAAyB,IAAzB,EAA+B,KAAK9Z,KAAL,CAAW6K,GAA1C,CAAb;;AAEA,QAAI,CAACkD,MAAL,EAAa;AACT,YAAM,IAAInc,KAAJ,qDAAN;AACH;;AAED,QAAIqsB,qDAAW,CAAClQ,MAAD,EAASmQ,MAAT,CAAf,EAAiC;AAC7B;AACH;;AAED,UAAM,IAAItsB,KAAJ,iCAAyCmc,MAAM,CAAC3e,QAAP,EAAzC,8BAAqF8uB,MAArF,CAAN;AACH,GAvQL;;AAAA,SAyQI07B,uBAzQJ,GAyQI,mCAA0B;AAAA;;AACtBN,mBAAe,CAACmB,gBAAhB,CAAiC3qD,IAAjC,CAAsC,IAAtC;AAEA,SAAKgU,KAAL,CAAWgyB,QAAX,CAAoB,YAAM;AACtBwjB,qBAAe,CAACmB,gBAAhB,CAAiCnqD,MAAjC,CAAwCgpD,eAAe,CAACmB,gBAAhB,CAAiC5qD,OAAjC,CAAyC,MAAzC,CAAxC,EAAwF,CAAxF;AACH,KAFD;AAGH,GA/QL;;AAAA,SAkRI6qD,qBAlRJ,GAkRI,iCAA8E;AAC1E,QAAI3sC,MAAM,GAAG,KAAK+6B,SAAL,CAAehvB,SAAf,CAAyB,IAAzB,EAA+B,KAAK9Z,KAAL,CAAW6K,GAA1C,CAAb;;AAEA,QAAIkD,MAAM,KAAK+L,mDAAS,CAAC7qB,MAAD,CAAxB,EAAkC;AAC9B,UAAIkJ,GAAG,GAAGpD,+BAAQ,EAAlB;AACAmV,2BAAM,CAACmmC,OAAP,GAAiBnmC,qBAAM,CAACmmC,OAAP,IAAkB,EAAnC;AACAnmC,2BAAM,CAACmmC,OAAP,CAAel4C,GAAf,IAAsBlJ,MAAtB;AACA,WAAK6U,KAAL,CAAWgyB,QAAX,CAAoB,YAAM;AACtB,eAAO5rB,qBAAM,CAACmmC,OAAP,CAAel4C,GAAf,CAAP;AACH,OAFD;AAIA,aAAO;AAAEg7C,WAAG,EAAEzyB,8BAAiB,CAACI,MAAzB;AAAiC3oB,WAAG,EAAHA;AAAjC,OAAP;AACH;;AAED,QAAI,KAAKvE,OAAL,KAAiBotB,0BAAa,CAAC7H,KAAnC,EAA0C;AACtC,aAAO;AAAEg6B,WAAG,EAAEzyB,8BAAiB,CAACC;AAAzB,OAAP;AACH;;AAED,QAAI3F,+CAAK,CAAC/rB,MAAD,CAAT,EAAmB;AACf,aAAO;AAAEkkD,WAAG,EAAEzyB,8BAAiB,CAACE;AAAzB,OAAP;AACH;;AAED,WAAO;AAAEuyB,SAAG,EAAEzyB,8BAAiB,CAACG,MAAzB;AAAiCzD,cAAQ,EAAED,4DAAkB,CAACluB,MAAD;AAA7D,KAAP;AACH,GAzSL;;AAAA,SA2SI0rD,kBA3SJ,GA2SI,4BAAmBC,cAAnB,EAA0H;AAAA,QAAvGA,cAAuG;AAAvGA,oBAAuG,GAA9D3rD,MAA8D;AAAA;;AAEtH,QAAI2rD,cAAc,KAAK3rD,MAAvB,EAA+B;AAC3B,aAAO,KAAKyrD,qBAAL,EAAP;AACH;;AAED,QAAIviD,GAAG,GAAGpD,+BAAQ,EAAlB;AACAmV,yBAAM,CAACmmC,OAAP,CAAel4C,GAAf,IAAsByiD,cAAtB;AAEA,SAAK92C,KAAL,CAAWgyB,QAAX,CAAoB,YAAM;AACtB,aAAO5rB,qBAAM,CAACmmC,OAAP,CAAel4C,GAAf,CAAP;AACH,KAFD;AAIA,WAAO;AAAEg7C,SAAG,EAAEzyB,8BAAiB,CAACI,MAAzB;AAAiC3oB,SAAG,EAAHA;AAAjC,KAAP;AACH,GAzTL;;AAAA,SA2TIs6C,oBA3TJ,GA2TI,sCAAiG;AAAA,oCAAb,EAAa;AAAA,+BAA1EkH,QAA0E;AAAA,QAA1EA,QAA0E,+BAA/D1qD,MAA+D;;AAE7F,QAAI4rD,WAAW,GAAG,KAAK/R,SAAL,CAAehvB,SAAf,CAAyB,IAAzB,EAA+B,KAAK9Z,KAAL,CAAW6K,GAA1C,CAAlB;AACA,QAAIgpC,UAAU,GAAG9pC,sDAAY,CAAC4vC,QAAD,CAA7B;AAEA,QAAIxhD,GAAG,GAAMpD,+BAAQ,EAArB;AACA,QAAIqI,GAAG,GAAM,KAAK0rC,SAAL,CAAe1rC,GAA5B;AACA,QAAI09C,MAAM,GAAGvgD,yCAAkB,CAAC,KAAKwgD,gBAAL,EAAD,CAA/B;AAEA,QAAI3H,eAAe,GAAG,KAAKsH,qBAAL,EAAtB;AACA,QAAIpH,YAAY,GAAM,KAAKqH,kBAAL,CAAwBhB,QAAxB,CAAtB;AAEA,QAAIqB,WAAW,GAAG,CAACnH,UAAD,IAAe,CAAC,KAAK/K,SAAL,CAAemS,cAAjD;AAEA,QAAIj7C,KAAK,GAAGg7C,WAAW,GACjB;AAAE7jD,UAAI,EAAEopB,0BAAa,CAACE,GAAtB;AAA2BtoB,SAAG,EAAHA;AAA3B,KADiB,GAEjB;AAAEhB,UAAI,EAAEopB,0BAAa,CAACC,GAAtB;AAA2BrvB,WAAK,EAAE2pD;AAAlC,KAFN;;AAIA,QAAI96C,KAAK,CAAC7I,IAAN,KAAeopB,0BAAa,CAACE,GAAjC,EAAsC;AAClCvW,2BAAM,CAAClK,KAAP,CAAa7H,GAAb,IAAoB7C,IAAI,CAACC,SAAL,CAAeulD,MAAf,CAApB;AAEA,WAAKh3C,KAAL,CAAWgyB,QAAX,CAAoB,YAAM;AACtB,eAAO5rB,qBAAM,CAAClK,KAAP,CAAa7H,GAAb,CAAP;AACH,OAFD;AAGH;;AAED,WAAOs6C,2BAAoB,CAAC,KAAK3J,SAAL,CAAez5C,IAAhB,EAAsB,KAAKy5C,SAAL,CAAep+B,OAArC,EAA8C;AAAEvS,SAAG,EAAHA,GAAF;AAAOiF,SAAG,EAAHA,GAAP;AAAYg2C,qBAAe,EAAfA,eAAZ;AAA6BE,kBAAY,EAAZA,YAA7B;AAA2CtzC,WAAK,EAALA,KAA3C;AAAkD66C,iBAAW,EAAXA;AAAlD,KAA9C,CAA3B;AACH;AAGD;;;;AAzVJ;;AAAA,SA+VI9tB,YA/VJ,GA+VI,sBAAa19B,IAAb,EAA4BijB,IAA5B,EAA8H;AAC1H,QAAIouB,YAAY,GAAG8D,+BAAwB,EAA3C;;AAEA,QAAI,CAAC9D,YAAL,EAAmB;AACf,YAAM,IAAI9uC,KAAJ,mDAAN;AACH;;AAED,SAAKk3C,SAAL,CAAe3zB,GAAf,qBAAsC9lB,IAAtC;AAEA,WAAOsX,mBAAI,CAAC69B,+BAAwB,EAAzB,EAA6Bn1C,IAA7B,EAAmCijB,IAAnC,EAAyC;AAAEvE,YAAM,EAAEklC,sBAAe;AAAzB,KAAzC,CAAX;AACH;AAGD;;;;AA5WJ;;AAAA,SAkXIoB,QAlXJ,GAkXI,kBAASr0C,KAAT,EAAkC4zC,QAAlC,EAA6D;AAAA,QAA3BA,QAA2B;AAA3BA,cAA2B,GAAN,IAAM;AAAA;;AAEzDyE,iBAAa,CAAC,KAAKvP,SAAN,EAAiB9oC,KAAjB,EAAwB4zC,QAAxB,CAAb;;AACA,QAAI,KAAK9K,SAAL,CAAesP,QAAnB,EAA6B;AACzB,WAAKtP,SAAL,CAAesP,QAAf,CAAwB,KAAKtP,SAA7B,EAAwC9oC,KAAxC;AACH,KALwD,CAOzD;;;AACA,SAAKA,KAAL,GAAa,KAAKA,KAAL,IAAc,EAA3B;AAEAtL,iCAAM,CAAC,KAAKsL,KAAN,EAAa44C,cAAc,CAAC,KAAK9P,SAAN,EAAiB,IAAjB,EAAuB9oC,KAAvB,CAA3B,CAAN;AACH;AAGD;;;;;AAhYJ;;AAAA,SAwYIm6C,QAxYJ,GAuYI,oBACkC;AAAA;;AAE9B,QAAIe,OAAyB,GAAG,KAAKl7C,KAAL,CAAW5D,GAA3C;AAEA,WAAOrL,yCAAY,CAACkC,GAAb,CAAiB,CAEpBioD,OAFoB,EAGpB;AACAjC,gBAAY,CAAC,2CAAK,KAAKnQ,SAAL,CAAe9oC,KAArB,MAA+B,KAAK8oC,SAAL,CAAeqS,YAA9C,GAA8D,KAAKn7C,KAAnE,CAJQ,CAAjB,EAMJzQ,IANI,CAMC,iBAAoB;AAAA,UAAjB6M,GAAiB;AAAA,UAAZ8D,KAAY;;AAExB;AAEA,UAAI9D,GAAG,IAAI,CAAC,MAAI,CAAC0sC,SAAL,CAAesS,cAAf,CAA8Bh/C,GAA9B,CAAZ,EAAgD;AAC5C,eAAOA,GAAP;AACH;;AAED,aAAOrL,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAE1B,eAAOyJ,GAAG,IAAI,MAAI,CAAC0sC,SAAL,CAAeuS,MAAf,CAAsB,MAAI,CAACr7C,KAAL,CAAW6K,GAAjC,EAAsC,MAAI,CAAC7K,KAA3C,CAAd;AAEH,OAJM,EAIJzQ,IAJI,CAIC,UAAA+rD,QAAQ,EAAI;AAEhBp7C,aAAK,CAACq7C,UAAN,GAAmB,GAAnB;AACA,eAAOt7C,gCAAS,CAACq7C,QAAD,EAAW;AAAEp7C,eAAK,EAALA;AAAF,SAAX,CAAhB;AACH,OARM,CAAP;AASH,KAvBM,CAAP;AAwBH,GApaL;;AAAA,SAuaI4Z,SAvaJ,GAuaI,qBAA4C;AAAA;;AACxC,WAAO/oB,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAC1B,aAAO,MAAI,CAACqN,KAAL,CAAW5D,GAAlB;AAEH,KAHM,EAGJ7M,IAHI,CAGC,UAAA6M,GAAG,EAAI;AAEX,UAAI2R,MAAM,GAAG,MAAI,CAAC+6B,SAAL,CAAehvB,SAAf,CAAyB1d,GAAzB,EAA8B,MAAI,CAAC4D,KAAL,CAAW6K,GAAzC,CAAb;;AAEA,UAAIkD,MAAJ,EAAY;AACR,eAAOA,MAAP;AACH;;AAED,UAAI,MAAI,CAAC+6B,SAAL,CAAeqR,QAAnB,EAA6B;AACzB,eAAOppD,yCAAY,CAAC4B,GAAb,CAAiB;AAAA,iBAAM,MAAI,CAACm2C,SAAL,CAAeqR,QAAf,CAAwB,MAAI,CAACn6C,KAA7B,CAAN;AAAA,SAAjB,EAA4DzQ,IAA5D,CAAiE,UAAAisD,QAAQ,EAAI;AAChF,iBAAO,MAAI,CAAC1S,SAAL,CAAehvB,SAAf,CAAyB0hC,QAAzB,EAAmC,MAAI,CAACx7C,KAAL,CAAW6K,GAA9C,CAAP;AACH,SAFM,CAAP;AAGH;AAEJ,KAjBM,EAiBJtb,IAjBI,CAiBC,UAAAwe,MAAM,EAAI;AAEd,UAAI,CAACA,MAAL,EAAa;AACT,cAAM,IAAInc,KAAJ,8BAAN;AACH;;AAED,aAAOmc,MAAP;AACH,KAxBM,CAAP;AAyBH,GAjcL;;AAAA,SAmcIgtC,gBAncJ,GAmcI,4BAA4C;AAExC,QAAIvpD,MAAM,GAAG,EAAb;;AAFwC,sCAIxBM,MAAM,CAACyB,IAAP,CAAY,KAAKyM,KAAjB,CAJwB,qCAIC;AAApC,UAAIvM,GAAG,qBAAP;AACD,UAAIiC,IAAI,GAAG,KAAKozC,SAAL,CAAe2K,OAAf,CAAuBhgD,GAAvB,CAAX;;AAEA,UAAI,CAACiC,IAAD,IAASA,IAAI,CAACwiD,WAAL,KAAqB,KAAlC,EAAyC;AACrC1mD,cAAM,CAACiC,GAAD,CAAN,GAAc,KAAKuM,KAAL,CAAWvM,GAAX,CAAd;AACH;AACJ,KAVuC,CAYxC;;;AACA,WAAOjC,MAAP;AACH;AAGD;;;;AApdJ;;AAAA,SA0dIq4C,WA1dJ,GA0dI,qBAAY7pC,KAAZ,EAA0D;AAAA;;AACtD,SAAKq0C,QAAL,CAAcr0C,KAAd,EAAqB,KAArB;AAEA,WAAO,KAAKi0C,MAAL,CAAY1kD,IAAZ,CAAiB,YAAM;AAC1B,UAAI,MAAI,CAACkqD,YAAT,EAAuB;AACnB,eAAO,MAAI,CAACA,YAAL,CAAkB5P,WAAlB,CAA8B,MAAI,CAACkR,gBAAL,EAA9B,CAAP;AACH,OAFD,MAEO;AACH,cAAM,IAAInpD,KAAJ,oCAAN;AACH;AACJ,KANM,CAAP;AAOH,GApeL;;AAAA,SAueIwwC,UAveJ,GAueI,oBAAWr0B,MAAX,EAAoE;AAAA;;AAChE,WAAOhd,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAC1B,UAAI,CAACk7B,aAAD,IAAW,CAAC,OAAI,CAACmsB,MAAL,CAAYnZ,WAA5B,EAAyC;AACrC;AACH;;AAED,UAAI4a,iBAA0B,GAAG;AAAEh/C,WAAG,EAAE,OAAI,CAACxN;AAAZ,OAAjC;;AACA,UAAI8e,MAAJ,EAAY;AACR0tC,yBAAiB,CAAC1tC,MAAlB,GAA2BA,MAA3B;AACH;;AAED,UAAI8yB,WAAW,GAAGhT,aAAM,CAACgT,WAAP,CAAmB4a,iBAAnB,CAAlB;;AAEA,UAAIC,SAAS,GAAG,OAAI,CAAC5S,SAAL,CAAe6S,YAAf,CAA4B,OAAI,CAAC37C,KAAL,CAAW6K,GAAvC,CAAhB;;AAEA,UAAI,CAAC6wC,SAAL,EAAgB;AAEZ,YAAI7a,WAAW,IAAI9yB,MAAf,IAAyB,CAAC8f,aAAM,CAACsU,SAAP,CAAiBp0B,MAAjB,EAAyBA,MAAzB,CAA9B,EAAgE;AAC5D,gBAAM,IAAInc,KAAJ,kCAA0C,OAAI,CAACgC,OAA/C,CAAN;AACH;;AAED;AACH;;AAED8nD,eAAS,GAAGz7C,gCAAS,CAACy7C,SAAD,EAAY;AAAEx7C,aAAK,EAAE;AAAEwK,iBAAO,EAAE,OAAI,CAACo+B,SAAL,CAAep+B;AAA1B;AAAT,OAAZ,CAArB;;AAEA,UAAIkxC,YAAY,GAAG,OAAI,CAAC9S,SAAL,CAAe+S,eAAf,CAA+B,OAAI,CAAC77C,KAAL,CAAW6K,GAA1C,CAAnB;;AAEA,UAAI,CAAC+wC,YAAL,EAAmB;AACf,cAAM,IAAIhqD,KAAJ,uCAAN;AACH;;AAED,UAAIivC,WAAJ,EAAiB;AACb,eAAOhT,aAAM,CAACuU,UAAP,CAAkBsZ,SAAlB,EAA6BE,YAA7B,EAA2CrsD,IAA3C,CAAgD,UAAAiC,MAAM,EAAI;AAC7D,cAAIA,MAAJ,EAAY;AACR,mBAAOA,MAAP;AACH;AACJ,SAJM,CAAP;AAKH;AACJ,KAtCM,CAAP;AAuCH;AAGD;;;;AAlhBJ;;AAAA,SAyhBIkL,IAzhBJ,GAwhBI,gBAC4B;AAAA;;AACxB,WAAO3L,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAC1B,aAAI,CAACm2C,SAAL,CAAe3zB,GAAf,WAA4B,OAAI,CAACvhB,OAAjC,EAA6C;AAAEkoD,kBAAU,EAAE,OAAI,CAAC5F;AAAnB,OAA7C;;AACA,UAAI,OAAI,CAACl2C,KAAL,CAAWvD,GAAf,EAAoB;AAChB,eAAI,CAACqH,KAAL,CAAWxM,GAAX,CAAe,QAAf,EAAyB,OAAI,CAAC0I,KAAL,CAAWvD,GAApC;;AACA0d,kEAAgB,CAAC,OAAI,CAAClrB,MAAN,CAAhB,CAA8BI,IAA9B,GAAqC,OAAI,CAAC6mD,eAA1C;AACA;AACH;;AACD,aAAO,OAAI,CAAC8D,MAAL,CAAYt9C,IAAZ,CAAiBpN,IAAjB,CAAsB,OAAtB,CAAP;AACH,KARM,CAAP;AASH,GAniBL;;AAAA,SAsiBIonD,aAtiBJ,GAqiBI,yBACqC;AAAA;;AACjC,WAAO3lD,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAC1B,UAAI,OAAI,CAACm2C,SAAL,CAAeiT,iBAAnB,EAAsC;AAClC,eAAO,OAAI,CAAC/B,MAAL,CAAYtD,aAAZ,CAA0BpnD,IAA1B,CAA+B,OAA/B,CAAP;AACH;AACJ,KAJM,CAAP;AAKH,GA5iBL;;AAAA,SA+iBIwnD,eA/iBJ,GA8iBI,2BACuC;AAAA;;AACnC,WAAO/lD,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAC1B,UAAI,OAAI,CAACkkD,eAAL,IAAwB,OAAI,CAACmD,MAAL,CAAYlD,eAAxC,EAAyD;AACrD,eAAO,OAAI,CAACkD,MAAL,CAAYlD,eAAZ,CAA4BxnD,IAA5B,CAAiC,OAAjC,CAAP;AACH;AACJ,KAJM,CAAP;AAKH,GArjBL;;AAAA,SAgkBI4M,YAhkBJ,GAgkBI,sBAAanB,OAAb,EAA4D;AACxD,WAAOmB,mCAAY,CAACnB,OAAD,CAAZ,CAAsBxL,IAAtB,CAA2BuK,mBAA3B,CAAP;AACH,GAlkBL;;AAAA,SAqkBIygD,QArkBJ,GAqkBI,kBAAS99C,GAAT,EAAsC;AAAA;;AAElC,SAAKqsC,SAAL,CAAe3zB,GAAf,eAAgC,KAAKvhB,OAArC;AAEA,QAAIoM,KAAK,GAAG;AACR7H,SAAG,EAAS,KAAK6H,KAAL,CAAW7H,GADf;AAERgK,gBAAU,EAAE,KAAKnC,KAAL,CAAWmC,UAFf;AAGRo0C,aAAO,EAAK,KAAKv2C,KAAL,CAAWu2C,OAHf;AAIRyF,eAAS,EAAG,KAAKh8C,KAAL,CAAWg8C;AAJf,KAAZ;;AAJkC,+CAWb,KAAKlT,SAAL,CAAe6B,YAAf,EAXa,8CAWkB;AAA/C,UAAIsR,QAAQ,8BAAZ;AACD,UAAIvmD,IAAI,GAAG,KAAKozC,SAAL,CAAe2K,OAAf,CAAuBwI,QAAvB,CAAX;;AAEA,UAAIvmD,IAAI,CAACwmD,aAAT,EAAwB;AACpBl8C,aAAK,CAACi8C,QAAD,CAAL,GAAkB,KAAKj8C,KAAL,CAAWi8C,QAAX,CAAlB;AACH;AACJ;;AAED,QAAI1B,QAAQ,GAAG5zC,mBAAI,CAAClK,GAAD,EAAU4iB,yBAAY,CAACQ,QAAvB,SAAqC,KAAKipB,SAAL,CAAez5C,IAApD,EAA6D;AAE5EuE,aAAO,EAAE,KAAKA,OAF8D;AAG5EiX,SAAG,EAAM,KAAK7K,KAAL,CAAW6K,GAHwD;AAK5ExO,aAAO,EAAE;AAELzI,eAAO,EAAE,KAAKA,OAFT;AAILsiD,uBAAe,EAAE,KAAKA,eAJjB;AAKLt5C,sBAAc,EAAG;AAAA,iBAAMA,wDAAc,CAAC,OAAI,CAAC3N,MAAN,CAApB;AAAA,SALZ;AAOL+Q,aAAK,EAALA,KAPK;AASLm8C,iBAAS,EAAE;AACP7N,eAAK,EAAiB;AAAA,mBAAM,OAAI,CAACA,KAAL,EAAN;AAAA,WADf;AAEP+G,mBAAS,EAAa;AAAA,mBAAM,OAAI,CAACA,SAAL,EAAN;AAAA,WAFf;AAGPv7B,mBAAS,EAAa;AAAA,mBAAM,OAAI,CAACA,SAAL,EAAN;AAAA,WAHf;AAKP1oB,eAAK,EAAE,eAAC5B,GAAD;AAAA,mBAAS,OAAI,CAAC4B,KAAL,CAAW5B,GAAX,CAAT;AAAA,WALA;AAMP8J,YAAE,EAAK,YAACC,SAAD,EAAYnJ,OAAZ;AAAA,mBAAwB,OAAI,CAACkJ,EAAL,CAAQC,SAAR,EAAmBnJ,OAAnB,CAAxB;AAAA;AANA;AATN;AALmE,KAA7D,CAAJ,CAwBZb,IAxBY,CAwBP,iBAAc;AAAA,UAAX+iB,IAAW,SAAXA,IAAW;;AAElB,aAAI,CAACxO,KAAL,CAAWgyB,QAAX,CAAoBxjB,IAAI,CAACy3B,OAAzB;;AACA,aAAOz3B,IAAP;AAEH,KA7Bc,EA6BZ/f,KA7BY,CA6BN,UAAA/C,GAAG,EAAI;AAEZ,YAAM,IAAIoC,KAAJ,kGAA0GsH,qCAAc,CAAC1J,GAAD,CAAxH,CAAN;AACH,KAhCc,CAAf;AAkCA,QAAI2sD,SAAS,GAAG,KAAKnC,MAAL,CAAYjD,iBAA5B;;AArDkC;AAuD7B,UAAItjD,GAAG,qBAAP;AACD,UAAI+B,GAAG,GAAG2mD,SAAS,CAAC1oD,GAAD,CAAnB;;AAEA,UAAI+B,GAAG,KAAKqqB,qBAAQ,CAAC0C,aAArB,EAAoC;AAChC;AACH,OA5D6B,CA8D9B;;;AACA,UAAIiE,QAAQ,GAAG,OAAI,CAAC/yB,GAAD,CAAnB,CA/D8B,CAiE9B;;AACA,aAAI,CAACA,GAAD,CAAJ,GAAY,SAAS2oD,iBAAT,GAAmD;AAAA;AAAA;;AAC3D,eAAO7B,QAAQ,CAAChrD,IAAT,CAAc,UAAA+iB,IAAI,EAAI;AAEzB,cAAIwlC,QAAQ,GAAGxlC,IAAI,CAAC6pC,SAAL,CAAe1oD,GAAf,CAAf;;AAEA,cAAI+B,GAAG,KAAKqqB,qBAAQ,CAAC2C,aAArB,EAAoC;AAChC,mBAAOs1B,QAAQ,CAAChkD,KAAT,CAAe,OAAf,EAAqBmG,UAArB,CAAP;AACH;;AAED,cAAI,OAAOzE,GAAP,KAAe,UAAnB,EAA+B;AAC3B,mBAAOA,GAAG,CAACgxB,QAAD,EAAWsxB,QAAX,CAAH,CAAwBhkD,KAAxB,CAA8B,OAA9B,EAAoCmG,UAApC,CAAP;AACH;;AAED,gBAAM,IAAIrI,KAAJ,0EAAN;AACH,SAbM,CAAP;AAcH,OAfD;AAlE8B;;AAAA,sCAuDlBE,MAAM,CAACyB,IAAP,CAAY4oD,SAAZ,CAvDkB,qCAuDM;AAAA;;AAAA,+BAIhC;AAuBP;AACJ;AAED;;;;;AA1pBJ;;AAAA,SAiqBIrH,aAjqBJ,GAiqBI,yBAAgB;AAAA;;AACZ,QAAIuH,mBAAmB,GAAG99B,uDAAa,CAAC,KAAKtvB,MAAN,EAAc,YAAM;AACvD,aAAI,CAAC65C,SAAL,CAAe3zB,GAAf;;AAEA,aAAOpkB,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAC1B,eAAO,OAAI,CAACqN,KAAL,CAAWu2C,OAAX,CAAmBv0B,0BAAa,CAACG,cAAjC,CAAP;AACH,OAFM,EAEJ1vB,OAFI,CAEI,YAAM;AACb,eAAO,OAAI,CAACs3C,OAAL,EAAP;AACH,OAJM,CAAP;AAKH,KARsC,EAQpC,IARoC,CAAvC;AAUA,SAAKjmC,KAAL,CAAWgyB,QAAX,CAAoB,4BAApB,EAAkDumB,mBAAmB,CAAChsD,MAAtE;AACH,GA7qBL;;AAAA,SA+qBIwpD,cA/qBJ,GA+qBI,0BAAiB;AAAA;;AAEb;AACA;AAEA,QAAIyC,QAAQ,GAAG5iD,2BAAI,CAAC,YAAM;AACtB,aAAI,CAACovC,SAAL,CAAe3zB,GAAf;;AACAnhB,mDAAK;;AACL,aAAI,CAACijD,gBAAL;AACH,KAJkB,CAAnB;AAMA,QAAIsF,oBAAoB,GAAG79C,uCAAgB,CAACzP,MAAD,EAAS,QAAT,EAAmBqtD,QAAnB,CAA3C;AAEA,SAAKx4C,KAAL,CAAWgyB,QAAX,CAAoB,6BAApB,EAAmDymB,oBAAoB,CAAClsD,MAAxE;AACH;AAGD;;;;;AAhsBJ;;AAAA,SAusBIonD,OAvsBJ,GAusBI,iBAAQr7C,GAAR,EAA2C;AAAA;;AACvC,WAAOrL,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAC1B,aAAI,CAACm2C,SAAL,CAAe3zB,GAAf;;AAEA,UAAIlmB,MAAM,CAACgO,QAAP,CAAgB2c,IAAhB,CAAqB3jB,KAArB,CAA2B,GAA3B,EAAgC,CAAhC,MAAuCmG,GAAG,CAACnG,KAAJ,CAAU,GAAV,EAAe,CAAf,CAA3C,EAA8D;AAAA;;AAC1DmG,WAAG,GAAG6D,gCAAS,CAAC7D,GAAD,EAAM;AACjB8D,eAAK,uBACCnL,+BAAQ,EADT,IACe,GADf;AADY,SAAN,CAAf;AAKH;;AAED,aAAO,OAAI,CAACilD,MAAL,CAAYvC,OAAZ,CAAoBnoD,IAApB,CAAyB,OAAzB,EAA+B8M,GAA/B,CAAP;AACH,KAZM,CAAP;AAaH,GArtBL;;AAAA,SAwtBIogD,MAxtBJ,GAwtBI,gBAAO3P,aAAP,EAA4D;AACxDA,iBAAa,CAACr1C,MAAd,GAAuB,KAAK0+C,eAA5B;AACH;AAED;;;;AA5tBJ;;AAAA,SAkuBIkE,UAluBJ,GAkuBI,sBAAa;AAAA;;AACT,QAAIxnD,OAAO,GAAG,KAAKoN,KAAL,CAAWpN,OAAzB;;AAEA,QAAIA,OAAJ,EAAa;AACT,UAAI4I,EAAE,GAAG,KAAK5I,OAAL,GAAe7C,UAAU,CAAC,YAAM;AAErC,eAAI,CAAC+4C,SAAL,CAAe3zB,GAAf,cAAgC;AAAEviB,iBAAO,EAAEA,OAAO,CAACxD,QAAR;AAAX,SAAhC;;AAEA,YAAIgC,KAAK,GAAG,OAAI,CAAC03C,SAAL,CAAeuJ,WAAf,wCAAiEz/C,OAAjE,mBAAZ;;AAEA,eAAI,CAACqhD,MAAL,CAAYtiD,MAAZ,CAAmBP,KAAnB;;AACA,eAAI,CAAC4O,KAAL,CAAWy8C,SAAX,CAAqBrrD,KAArB;AAEH,OATiC,EAS/BwB,OAT+B,CAAlC;AAWA,WAAKkR,KAAL,CAAWgyB,QAAX,CAAoB,YAAM;AACtBhjC,oBAAY,CAAC0I,EAAD,CAAZ;AACA,eAAO,OAAI,CAAC5I,OAAZ;AACH,OAHD;AAIH;AACJ;AAGD;;;;AAzvBJ;;AAAA,SA+vBIkzB,SA/vBJ,GA+vBI,qBAAsE;AAAA;;AAClE,6BAMMzG,yBAAY,CAACC,IANnB,cAM0B1qB,MAN1B,EAM0D0d,IAN1D,EAM8H;AAEtH,WAAKmnC,YAAL,GAAoBnnC,IAAI,CAACq0B,OAAzB;AAEA,WAAKsN,MAAL,CAAYvjD,OAAZ,CAAoB,IAApB;;AAEA,UAAI,KAAKkC,OAAT,EAAkB;AACdE,oBAAY,CAAC,KAAKF,OAAN,CAAZ;AACH;;AAED,aAAO;AACHoN,aAAK,EAAI,KAAK+6C,gBAAL,EADN;AAEHnnD,eAAO,EAAE,KAAKA;AAFX,OAAP;AAIH,KApBL,QA0BMyrB,yBAAY,CAACI,KA1BnB,cA0B2B7qB,MA1B3B,EA0B2D0d,IA1B3D,EA0B0E;AAClE,WAAKtV,KAAL,CAAWsV,IAAI,CAACgjC,MAAhB;AACH,KA5BL,QA8BMj2B,yBAAY,CAACK,WA9BnB,gBA8BmC;AAC3B,WAAKq1B,UAAL;AACH,KAhCL,QAoCM11B,yBAAY,CAACO,MApCnB,cAoC4BhrB,MApC5B,EAoC4D0d,IApC5D,EAoCgG;AAAA;;AACxF,aAAOvhB,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAC1B,YAAI,OAAI,CAACqnD,MAAL,CAAYhE,WAAhB,EAA6B;AACzB,iBAAO,OAAI,CAACd,MAAL,CAAY5iC,IAAI,CAACzR,KAAjB,EAAwByR,IAAI,CAACxR,MAA7B,CAAP;AACH;AACJ,OAJM,CAAP;AAKH,KA1CL,QA4CMue,yBAAY,CAACU,IA5CnB,gBA4C4B;AACpB,WAAKo1B,IAAL;AACH,KA9CL,QAgDM91B,yBAAY,CAACW,IAhDnB,gBAgD4B;AACpB,WAAKo1B,IAAL;AACH,KAlDL,QAuDM/1B,yBAAY,CAACriC,KAvDnB,cAuD2B4X,MAvD3B,EAuD2D0d,IAvD3D,EAuD0E;AAClE,WAAKlhB,KAAL,CAAW,IAAIQ,KAAJ,CAAU0gB,IAAI,CAAClhB,KAAf,CAAX;AACH,KAzDL;AA2DH;AAGD;;;;AA9zBJ;;AAAA,SAo0BI8jD,MAp0BJ,GAo0BI,gBAAOr0C,KAAP,EAAmCC,MAAnC,EAAqF;AAAA;;AACjF,WAAO/P,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAC1B,aAAI,CAACm2C,SAAL,CAAe3zB,GAAf,WAA6B;AAAErU,cAAM,EAAEvL,gCAAS,CAACuL,MAAD,CAAnB;AAA6BD,aAAK,EAAEtL,gCAAS,CAACsL,KAAD;AAA7C,OAA7B;;AACA,aAAI,CAACm5C,MAAL,CAAY9E,MAAZ,CAAmB5lD,IAAnB,CAAwB,OAAxB,EAA8BuR,KAA9B,EAAqCC,MAArC;;AACA,UAAI,OAAI,CAACd,KAAL,CAAW64B,QAAf,EAAyB;AACrB,eAAI,CAAC74B,KAAL,CAAW64B,QAAX;AACH;AACJ,KANM,CAAP;AAOH;AAGD;;;;AA/0BJ;;AAAA,SAq1BIsc,IAr1BJ,GAq1BI,gBAAc;AAEV,QAAI,KAAKt6C,SAAT,EAAoB;AAChBsK,wCAAW,CAAC,KAAKtK,SAAN,CAAX;AACH;;AAED,WAAO,KAAKm/C,MAAL,CAAY7E,IAAZ,CAAiB7lD,IAAjB,CAAsB,IAAtB,CAAP;AACH,GA51BL;;AAAA,SA81BI8lD,IA91BJ,GA81BI,gBAAc;AAEV,QAAI,KAAKv6C,SAAT,EAAoB;AAChBqK,wCAAW,CAAC,KAAKrK,SAAN,CAAX;AACH;;AAED,WAAO,KAAKm/C,MAAL,CAAY5E,IAAZ,CAAiB9lD,IAAjB,CAAsB,IAAtB,CAAP;AACH,GAr2BL;;AAAA,SAw2BIylD,UAx2BJ,GAw2BI,sBAAa;AAAA;;AACT,QAAIsH,mBAAmB,GAAG99B,uDAAa,CAAC,KAAKtvB,MAAN,EAAc,YAAM;AACvD,aAAI,CAAComD,SAAL;AACH,KAFsC,EAEpC,EAFoC,EAEhC,GAFgC,CAAvC;AAIA,SAAKvxC,KAAL,CAAWgyB,QAAX,CAAoBumB,mBAAmB,CAAChsD,MAAxC;AACH,GA92BL;;AAAA,SAi3BIglD,SAj3BJ,GAi3BI,qBAAiC;AAC7B,WAAO,KAAKr4C,KAAL,CAAWglB,0BAAa,CAACI,WAAzB,CAAP;AACH;AAGD;;;;AAt3BJ;;AAAA,SA63BIplB,KA73BJ,GA43BI,eACMs4C,MADN,EACwE;AAAA;;AAAA,QAAlEA,MAAkE;AAAlEA,YAAkE,GAAhDtzB,0BAAa,CAACC,WAAkC;AAAA;;AACpE,WAAOlxB,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAE1B,aAAI,CAACm2C,SAAL,CAAe3zB,GAAf,UAA4B;AAAEmgC,cAAM,EAANA;AAAF,OAA5B;;AAEA,aAAI,CAACl2C,KAAL,CAAWvF,WAAX,CAAuBynB,mBAAM,CAAC7B,KAA9B;;AACA,aAAO,OAAI,CAACzf,KAAL,CAAWu2C,OAAX,CAAmBjB,MAAnB,CAAP;AAEH,KAPM,EAOJ/lD,IAPI,CAOC,YAAM;AAEV,aAAOwB,yCAAY,CAACkC,GAAb,CAAiB,CACpB,OAAI,CAACypD,cAAL,EADoB,EAEpB,OAAI,CAACC,cAAL,EAFoB,CAAjB,CAAP;AAKH,KAdM,EAcJptD,IAdI,CAcC,YAAM;AAEV,aAAO,OAAI,CAACw6C,OAAL,EAAP;AACH,KAjBM,CAAP;AAkBH,GAh5BL;;AAAA,SAo5BI4S,cAp5BJ,GAm5BI,wBACerH,MADf,EACiF;AAAA;;AAAA,QAAlEA,MAAkE;AAAlEA,YAAkE,GAAhDtzB,0BAAa,CAACC,WAAkC;AAAA;;AAC7E,WAAOlxB,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAE1B,aAAI,CAACyM,KAAL,CAAWvF,WAAX,CAAuBynB,mBAAM,CAAC7B,KAA9B;;AACA,aAAO,OAAI,CAACzf,KAAL,CAAWu2C,OAAX,CAAmBjB,MAAnB,CAAP;AAEH,KALM,EAKJ/lD,IALI,CAKC,YAAM;AAEV,aAAOwB,yCAAY,CAACkC,GAAb,CAAiB,CACpB,OAAI,CAACypD,cAAL,CAAoBpH,MAApB,CADoB,EAEpB,OAAI,CAACiC,aAAL,EAFoB,CAAjB,CAAP;AAKH,KAZM,EAYJhoD,IAZI,CAYC,YAAM;AAEV,aAAO,OAAI,CAAC2nD,gBAAL,EAAP;AACH,KAfM,CAAP;AAgBH,GAr6BL;;AAAA,SAy6BIA,gBAz6BJ,GAw6BI,4BACwC;AAAA;;AACpC,WAAOnmD,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAC1B,aAAI,CAACmR,KAAL,CAAWuoC,GAAX,CAAe,wBAAf;;AACA,aAAI,CAACvoC,KAAL,CAAWuoC,GAAX,CAAe,0BAAf;AACH,KAHM,CAAP;AAIH,GA96BL;;AAAA,SAk7BIqQ,cAl7BJ,GAi7BI,wBACepH,MADf,EACiF;AAAA;;AAAA,QAAlEA,MAAkE;AAAlEA,YAAkE,GAAhDtzB,0BAAa,CAACC,WAAkC;AAAA;;AAE7E,QAAIxlB,GAAG,GAAG,KAAKxN,MAAf;AAEA,WAAO8B,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAE1B,aAAO,OAAI,CAACwkD,qBAAL,EAAP;AAEH,KAJM,EAIJ5nD,IAJI,CAIC,YAAM;AAEV,aAAI,CAAC6P,KAAL,CAAWvF,WAAX,CAAuBynB,mBAAM,CAAC7B,KAA9B;;AACA,aAAO,OAAI,CAACzf,KAAL,CAAWu2C,OAAX,CAAmBjB,MAAnB,CAAP;AAEH,KATM,EASJ/lD,IATI,CASC,YAAM;AAEV,aAAO,OAAI,CAACioD,aAAL,EAAP;AAEH,KAbM,EAaJjoD,IAbI,CAaC,YAAM;AAEV,aAAO,OAAI,CAAC0nD,gBAAL,EAAP;AAEH,KAjBM,EAiBJ1nD,IAjBI,CAiBC,YAAM;AAEV;AAEA,UAAI,OAAI,CAACkqD,YAAL,IAAqB,OAAI,CAAC7lD,OAAL,KAAiBotB,0BAAa,CAAC7H,KAApD,IAA6D,CAACvc,wDAAc,CAACH,GAAD,CAAhF,EAAuF;AACnF,eAAI,CAACg9C,YAAL,CAAkBz8C,KAAlB,GAA0BzK,KAA1B,CAAgCuH,mBAAhC;AACH;AACJ,KAxBM,CAAP;AAyBH,GA/8BL;;AAAA,SAi9BIm9C,gBAj9BJ,GAi9BI,4BAAmB;AACf,SAAKnzC,KAAL,CAAWuoC,GAAX,CAAe,6BAAf;AACA,SAAKvoC,KAAL,CAAWuoC,GAAX,CAAe,4BAAf;AACA,SAAKvoC,KAAL,CAAWuoC,GAAX,CAAe,wBAAf;AACA,SAAKvoC,KAAL,CAAWuoC,GAAX,CAAe,eAAf;AACH,GAt9BL;;AAAA,SAy9BIgL,aAz9BJ,GAw9BI,yBACqC;AAAA;;AACjC,WAAOtmD,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAC1B,UAAI,OAAI,CAACqN,KAAL,CAAWg8C,SAAf,EAA0B;AACtB,eAAO,OAAI,CAACh8C,KAAL,CAAWg8C,SAAX,EAAP;AACH;AACJ,KAJM,EAIJzsD,IAJI,CAIC,YAAM;AACV,UAAI,OAAI,CAACsL,SAAT,EAAoB;AAChB,eAAOyK,qCAAc,CAAC,OAAI,CAACzK,SAAN,EAAiB4mB,4BAAe,CAACC,cAAjC,EAAiD,OAAI,CAAC5d,KAAL,CAAWgyB,QAA5D,CAArB;AACH;AACJ,KARM,CAAP;AASH,GAn+BL;;AAAA,SAs+BIwhB,aAt+BJ,GAq+BI,yBACqC;AAAA;;AACjC,WAAOvmD,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAC1B,UAAI,OAAI,CAACqN,KAAL,CAAWg8C,SAAf,EAA0B;AACtB,eAAO,OAAI,CAACh8C,KAAL,CAAWg8C,SAAX,EAAP;AACH;AACJ,KAJM,EAIJzsD,IAJI,CAIC,YAAM;AACV,UAAI,OAAI,CAACwL,OAAT,EAAkB;AACd,eAAOuK,qCAAc,CAAC,OAAI,CAACvK,OAAN,EAAe0mB,4BAAe,CAACE,cAA/B,EAA+C,OAAI,CAAC7d,KAAL,CAAWgyB,QAA1D,CAArB;AACH;AACJ,KARM,CAAP;AASH,GAh/BL;;AAAA,SAm/BIyhB,aAn/BJ,GAk/BI,yBACqC;AAAA;;AACjC,WAAOxmD,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAC1B,UAAI,OAAI,CAACkI,SAAT,EAAoB;AAChB,eAAO2K,qCAAc,CAAC,OAAI,CAAC3K,SAAN,EAAiB4mB,4BAAe,CAACG,cAAjC,EAAiD,OAAI,CAAC9d,KAAL,CAAWgyB,QAA5D,CAArB;AACH,OAFD,MAEO;AACH,eAAO/kC,yCAAY,CAACL,OAAb,EAAP;AACH;AACJ,KANM,CAAP;AAOH,GA3/BL;;AAAA,SA8/BI8mD,aA9/BJ,GA6/BI,yBACqC;AAAA;;AACjC,WAAOzmD,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAC1B,UAAI,OAAI,CAACoI,OAAT,EAAkB;AACd,eAAOyK,qCAAc,CAAC,OAAI,CAACzK,OAAN,EAAe0mB,4BAAe,CAACI,cAA/B,EAA+C,OAAI,CAAC/d,KAAL,CAAWgyB,QAA1D,CAArB;AACH,OAFD,MAEO;AACH,eAAO/kC,yCAAY,CAACL,OAAb,EAAP;AACH;AACJ,KANM,CAAP;AAOH;AAGD;;;;AAzgCJ;;AAAA,SA+gCI49C,KA/gCJ,GA+gCI,iBAAQ;AAEJ,QAAI,KAAKr/C,MAAL,IAAe,CAAC2N,wDAAc,CAAC,KAAK3N,MAAN,CAAlC,EAAiD;AAC7C,WAAK65C,SAAL,CAAe3zB,GAAf;AACA,WAAKlmB,MAAL,CAAYq/C,KAAZ;AAEH,KAJD,MAIO;AAEH,YAAM,IAAI18C,KAAJ,sBAAN;AACH;AACJ;AAGD;;;;AA5hCJ;;AAAA,SAmiCIwlD,uBAniCJ,GAkiCI,mCAC+C;AAAA;;AAC3C,WAAOrmD,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAC1B,UAAI,CAAC,OAAI,CAACm2C,SAAL,CAAeiT,iBAApB,EAAuC;AACnC,eAAOhrD,yCAAY,CAACL,OAAb,EAAP;AACH;;AAED,aAAOK,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAE1B,YAAI,OAAI,CAACgkD,eAAT,EAA0B;AACtB,iBAAOp4C,qCAAc,CAAC,OAAI,CAACo4C,eAAN,CAAd,CAAqCpnD,IAArC,CAA0C;AAAA,mBAAM,OAAI,CAACsnD,eAAX;AAAA,WAA1C,CAAP;AACH,SAFD,MAEO;AACH,iBAAO,OAAI,CAACA,eAAZ;AACH;AAEJ,OARM,EAQJtnD,IARI,CAQC,UAAAkN,GAAG,EAAI;AAEX,YAAIkB,GAAJ;;AAEA,YAAI;AACAA,aAAG,GAAGlB,GAAG,CAAChB,QAAV;AACH,SAFD,CAEE,OAAOjM,GAAP,EAAY;AACV;AACH;;AAED,YAAI6L,EAAJ;;AAEA,YAAI;AACAA,YAAE,GAAG,OAAI,CAACs8C,cAAL,CAAoB,OAAI,CAAC7O,SAAL,CAAeiT,iBAAnC,EAAsD;AACvDr0C,kBAAM,EAAIA,qBAAM,CAACixC,IAAP,CAAYh7C,GAAZ,CAD6C;AAEvDlC,oBAAQ,EAAEkC;AAF6C,WAAtD,CAAL;AAIH,SALD,CAKE,OAAOnO,GAAP,EAAY;AACV,iBAAI,CAACs5C,SAAL,CAAej/B,QAAf,CAAwB,kBAAxB,EAA4C;AAAEra,eAAG,EAAEA,GAAG,CAAC+B,KAAJ,GAAY/B,GAAG,CAAC+B,KAAhB,GAAwB/B,GAAG,CAACJ,QAAJ;AAA/B,WAA5C;;AACA2W,iBAAO,CAAC3U,KAAR,CAAc5B,GAAG,CAAC+B,KAAJ,GAAY/B,GAAG,CAAC+B,KAAhB,GAAwB/B,GAAtC,EAFU,CAEkC;;AAC5C;AACH;;AAED,YAAI;AACA2N,qDAAoB,CAACV,GAAD,EAAMpB,EAAN,CAApB;AACH,SAFD,CAEE,OAAO7L,GAAP,EAAY;AACV,iBAAI,CAACs5C,SAAL,CAAej/B,QAAf,CAAwB,kBAAxB,EAA4C;AAAEra,eAAG,EAAEA,GAAG,CAAC+B,KAAJ,GAAY/B,GAAG,CAAC+B,KAAhB,GAAwB/B,GAAG,CAACJ,QAAJ;AAA/B,WAA5C;;AACA2W,iBAAO,CAAC3U,KAAR,CAAc5B,GAAG,CAAC+B,KAAJ,GAAY/B,GAAG,CAAC+B,KAAhB,GAAwB/B,GAAtC,EAFU,CAEkC;AAC/C;;AA5BU,qBA8BgD,OAAO,OAAI,CAACs5C,SAAL,CAAeqL,UAAtB,KAAqC,QAArC,IAAiD,OAAI,CAACrL,SAAL,CAAeqL,UAAf,KAA8B,IAAhF,GACpD,OAAI,CAACrL,SAAL,CAAeqL,UADqC,GAEpD,EAhCK;AAAA,kCA8BLtzC,KA9BK;AAAA,YA8BLA,KA9BK,6BA8BG,KA9BH;AAAA,mCA8BUC,MA9BV;AAAA,YA8BUA,MA9BV,8BA8BmB,KA9BnB;AAAA,oCA8B0B/F,OA9B1B;AAAA,YA8B0BA,OA9B1B,+BA8BoC,MA9BpC;;AAkCXA,eAAO,GAAGQ,4CAAc,CAACR,OAAD,EAAU4C,GAAV,CAAxB;;AAEA,YAAI5C,OAAO,KAAK8F,KAAK,IAAIC,MAAd,CAAX,EAAkC;AAC9B+3B,gDAAQ,CAAC99B,OAAD,EAAU,kBAA4C;AAAA,gBAAlCi+B,QAAkC,UAAzCn4B,KAAyC;AAAA,gBAAhBo4B,SAAgB,UAAxBn4B,MAAwB;;AAC1D,mBAAI,CAACo0C,MAAL,CAAYr0C,KAAK,GAAGm4B,QAAH,GAAcxmC,SAA/B,EAA0CsO,MAAM,GAAGm4B,SAAH,GAAezmC,SAA/D;AACH,WAFO,EAEL;AAAEqO,iBAAK,EAALA,KAAF;AAASC,kBAAM,EAANA,MAAT;AAAiBrE,eAAG,EAAHA;AAAjB,WAFK,CAAR;AAGH;AACJ,OAjDM,CAAP;AAkDH,KAvDM,CAAP;AAwDH;AAGD;;;;AA/lCJ;;AAAA,SAqmCIk7C,cArmCJ,GAqmCI,wBAAeiF,QAAf,EAA8DvgD,OAA9D,EAAmG;AAAA;;AAAA,QAArCA,OAAqC;AAArCA,aAAqC,GAAlB,EAAkB;AAAA;;AAAA,iBAK1F,KAAKysC,SAAL,CAAe3mC,UAAf,IAA6B,EAL6D;AAAA,8BAG3FtB,KAH2F;AAAA,QAG3FA,KAH2F,6BAG9E4hB,+BAAkB,CAACC,KAH2D;AAAA,+BAI3F5hB,MAJ2F;AAAA,QAI3FA,MAJ2F,8BAI9E2hB,+BAAkB,CAACnsC,MAJ2D;;AAO/F,WAAOsmE,QAAQ,CAACttD,IAAT,CAAc,IAAd;AACHkM,QAAE,EAAaylB,wBAAW,CAAC7B,IAAzB,SAAmC,KAAK0pB,SAAL,CAAe1rC,GAAlD,SAA2D,KAAK4C,KAAL,CAAW7H,GADrE;AAEH6H,WAAK,EAAM48C,QAAQ,CAAC3sB,WAAT,GAAuB,IAAvB,GAA8B,KAAKjwB,KAF3C;AAGH5C,SAAG,EAAQ,KAAK0rC,SAAL,CAAe1rC,GAHvB;AAIHxJ,aAAO,EAAI,KAAKA,OAJb;AAKH4lD,YAAM,EAAK,KAAK3B,SAAL,EALR;AAMHgF,WAAK,EAAM57B,wBANR;AAOH67B,eAAS,EAAEr7B,4BAPR;AAQHs7B,aAAO,EAAI/7B,0BARR;AASHg8B,WAAK,EAAM17B,mBATR;AAUH27B,aAAO,EAAI;AACPjgD,aAAK,EAAE;AAAA,iBAAM,OAAI,CAACq4C,SAAL,EAAN;AAAA,SADA;AAEP/G,aAAK,EAAE;AAAA,iBAAM,OAAI,CAACA,KAAL,EAAN;AAAA;AAFA,OAVR;AAcHh1C,QAAE,EAAU,YAACC,SAAD,EAAYnJ,OAAZ;AAAA,eAAwB,OAAI,CAACkJ,EAAL,CAAQC,SAAR,EAAmBnJ,OAAnB,CAAxB;AAAA,OAdT;AAeHsX,YAAM,EAANA,qBAfG;AAgBHjM,cAAQ,EAARA,QAhBG;AAiBH0G,gBAAU,EAAE;AAAEtB,aAAK,EAALA,KAAF;AAASC,cAAM,EAANA;AAAT;AAjBT,OAkBAzE,OAlBA,EAAP;AAoBH,GAhoCL;;AAAA,SAmoCI26C,aAnoCJ,GAkoCI,uBACcj8C,OADd,EAC2D;AAAA;;AACvD,WAAOhK,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAC1B,UAAI0I,EAAJ;;AAEA,UAAIN,OAAJ,EAAa;AACTM,UAAE,GAAGO,iCAAU,CAACb,OAAD,CAAf;AACH,OAFD,MAEO;AACHM,UAAE,GAAGI,QAAQ,CAAC+6B,IAAd;AACH;;AAED,UAAI,CAACn7B,EAAL,EAAS;AACL,cAAM,IAAIzJ,KAAJ,iDAAN;AACH;;AAED,UAAI,CAAC,OAAI,CAACk3C,SAAL,CAAeoU,iBAApB,EAAuC;AACnC,YAAI,OAAI,CAAClD,MAAL,CAAYjE,6BAAhB,EAA+C;AAC3C,gBAAM,IAAInkD,KAAJ,yCAAiD,OAAI,CAACgC,OAAtD,CAAN;AACH;;AAED;AACH;;AAED,UAAIiH,SAAS,GAAG,OAAI,CAAC88C,cAAL,CAAoB,OAAI,CAAC7O,SAAL,CAAeoU,iBAAnC,EAAsD;AAClEriD,iBAAS,EAAEQ;AADuD,OAAtD,CAAhB;;AAIA,aAAI,CAACR,SAAL,GAAiBA,SAAjB;AACAsK,wCAAW,CAAC,OAAI,CAACtK,SAAN,CAAX;AACAD,wCAAW,CAACS,EAAD,EAAK,OAAI,CAACR,SAAV,CAAX;;AAEA,UAAI,OAAI,CAACm/C,MAAL,CAAYjE,6BAAhB,EAA+C;AAC3C,eAAI,CAACh7C,OAAL,GAAe,OAAI,CAAC88C,SAAL,EAAf;AACA1yC,0CAAW,CAAC,OAAI,CAACpK,OAAN,CAAX;;AAEA,YAAI,CAAC,OAAI,CAACA,OAAV,EAAmB;AACf,gBAAM,IAAInJ,KAAJ,CAAU,iDAAV,CAAN;AACH;;AAEDuT,0CAAW,CAAC,OAAI,CAACpK,OAAN,CAAX;AACH;;AAED,aAAI,CAAC+I,KAAL,CAAWgyB,QAAX,CAAoB,0BAApB,EAAgD,YAAM;AAElD,YAAI,OAAI,CAACj7B,SAAL,IAAkB,OAAI,CAACA,SAAL,CAAewK,UAArC,EAAiD;AAC7C,iBAAI,CAACxK,SAAL,CAAewK,UAAf,CAA0B7H,WAA1B,CAAsC,OAAI,CAAC3C,SAA3C;AACH;;AAED,eAAO,OAAI,CAACA,SAAZ;AACH,OAPD;AAQH,KAhDM,CAAP;AAiDH,GArrCL;;AAAA,SAurCIs8C,qBAvrCJ,GAurCI,iCAAwB;AACpB,SAAKrzC,KAAL,CAAWuoC,GAAX,CAAe,wBAAf;AACH;AAGD;;;;AA5rCJ;;AAAA,SAksCItC,OAlsCJ,GAksCI,mBAA+B;AAAA;;AAC3B,WAAOh5C,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAC1B,UAAI,OAAI,CAACmR,KAAL,CAAWouC,QAAX,EAAJ,EAA2B;AACvB,eAAI,CAACpJ,SAAL,CAAe3zB,GAAf;;AACAnhB,qDAAK;AACL,eAAO,OAAI,CAAC8P,KAAL,CAAW7Q,GAAX,EAAP;AACH;AACJ,KANM,CAAP;AAOH,GA1sCL;;AAAA,SA6sCI6mD,OA7sCJ,GA6sCI,iBAAQnmD,MAAR,EAAiE;AAAA;;AAC7D,WAAO5C,yCAAY,CAAC4B,GAAb,CAAiBgB,MAAjB,EAAyBpB,KAAzB,CAA+B,UAAA/C,GAAG,EAAI;AACzC,aAAI,CAACykD,MAAL,CAAYtiD,MAAZ,CAAmBnC,GAAnB;AACH,KAFM,EAEJD,IAFI,CAEC,YAAM;AACV,aAAO,OAAI,CAAC0kD,MAAZ;AACH,KAJM,CAAP;AAKH;AAGD;;;;AAttCJ;;AAAA,SA4tCI7iD,KA5tCJ,GA4tCI,eAAM5B,GAAN,EAAwC;AAAA;;AACpC;AACA,WAAOuB,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAE1B,aAAI,CAAC4mD,aAAL,GAAqB,OAAI,CAACA,aAAL,IAAsB,EAA3C;;AAEA,UAAI,OAAI,CAACA,aAAL,CAAmB1pD,OAAnB,CAA2BL,GAA3B,MAAoC,CAAC,CAAzC,EAA4C;AACxC;AACA;AACH;;AAED,aAAI,CAAC+pD,aAAL,CAAmBzpD,IAAnB,CAAwBN,GAAxB;;AAEA,aAAI,CAACykD,MAAL,CAAYtiD,MAAZ,CAAmBnC,GAAnB;;AAEA,aAAO,OAAI,CAACu6C,OAAL,EAAP;AAEH,KAfM,EAeJx6C,IAfI,CAeC,YAAM;AAEV,UAAI,OAAI,CAACyQ,KAAL,CAAW1N,OAAf,EAAwB;AACpB,eAAO,OAAI,CAAC0N,KAAL,CAAW1N,OAAX,CAAmB9C,GAAnB,CAAP;AACH;AAEJ,KArBM,EAqBJ+C,KArBI,CAqBE,UAAA4qD,MAAM,EAAI;AAAE;AAEjB,YAAM,IAAIvrD,KAAJ,yDAAiEsH,qCAAc,CAAC1J,GAAD,CAA/E,YAA6F0J,qCAAc,CAACikD,MAAD,CAA3G,CAAN;AAEH,KAzBM,EAyBJ5tD,IAzBI,CAyBC,YAAM;AAEV,UAAI,CAAC,OAAI,CAACyQ,KAAL,CAAW1N,OAAhB,EAAyB;AACrB,cAAM9C,GAAN;AACH;AACJ,KA9BM,CAAP;AA+BH,GA7vCL;;AAAA,kBAiwCW4tD,UAjwCX,GAiwCI,sBAAyC;AACrC,QAAIhqD,OAAO,GAAG,EAAd;;AAEA,WAAOkmD,eAAe,CAACmB,gBAAhB,CAAiCvqD,MAAxC,EAAgD;AAC5CkD,aAAO,CAACtD,IAAR,CAAawpD,eAAe,CAACmB,gBAAhB,CAAiC,CAAjC,EAAoC1Q,OAApC,EAAb;AACH;;AAED,WAAOh5C,yCAAY,CAACkC,GAAb,CAAiBG,OAAjB,EAA0B7D,IAA1B,CAA+BuK,mBAA/B,CAAP;AACH,GAzwCL;;AAAA;AAAA;AAAA,wBAujBqC;AAE7B,UAAI,CAAC,KAAKlG,OAAV,EAAmB;AACf,cAAM,IAAIhC,KAAJ,CAAU,iBAAV,CAAN;AACH;;AAED,aAAOikD,cAAc,CAAC,KAAKjiD,OAAN,CAArB;AACH;AA9jBL;;AAAA;AAAA,EAAwCu+C,kBAAxC,WA+vCWsI,gBA/vCX,GA+vC0D,EA/vC1D,2EAiKK1xC,uBAjKL,+IA0MKA,uBA1ML,8IAmOKA,uBAnOL,8IAuYKA,uBAvYL,0IAwhBKA,uBAxhBL,+IAqiBKA,uBAriBL,0JA8iBKA,uBA9iBL,kJA43BKA,uBA53BL,iJAm5BKA,uBAn5BL,4JAw6BKA,uBAx6BL,4JAi7BKA,uBAj7BL,yJAw9BKA,uBAx9BL,wJAq+BKA,uBAr+BL,wJAk/BKA,uBAl/BL,wJA6/BKA,uBA7/BL,kKAkiCKA,uBAliCL,kKAkoCKA,uBAloCL,mG;;;;;AC3DA;AACA;AAEA;AACA;AACA;AAEA;AAyBO,IAAMs0C,0BAAb;AAAA;AAAA;AAAA;;AAeI,6BAAYvU,SAAZ,EAAsCl0C,MAAtC,EAAsEyH,OAAtE,EAAqG;AAAA;;AACjG;AADiG,UAbrGzH,MAaqG;AAAA,UAZrGhB,OAYqG;AAAA,UAXrGoM,KAWqG;AAAA,UATrGsuC,KASqG;AAAA,UARrG+G,SAQqG;AAAA,UAPrGv7B,SAOqG;AAAA,UANrG1oB,KAMqG;AAAA,UALrGkI,EAKqG;AAAA,UAHrG48C,eAGqG;AAAA,UAFrGt5C,cAEqG;AAGjG,UAAKksC,SAAL,GAAiBA,SAAjB;;AACA,UAAKhlC,KAAL,CAAWxM,GAAX,CAAe,QAAf,EAAyB1C,MAAzB;;AAEA,UAAKhB,OAAL,GAAeyI,OAAO,CAACzI,OAAvB;AAEA,UAAKoM,KAAL,GAAa;AACT7H,SAAG,EAASkE,OAAO,CAAC2D,KAAR,CAAc7H,GADjB;AAETgK,gBAAU,EAAE9F,OAAO,CAAC2D,KAAR,CAAcmC,UAFjB;AAGTo0C,aAAO,EAAKl6C,OAAO,CAAC2D,KAAR,CAAcu2C,OAHjB;AAITyF,eAAS,EAAG3/C,OAAO,CAAC2D,KAAR,CAAcg8C;AAJjB,KAAb;;AARiG,+CAe5ElT,SAAS,CAAC6B,YAAV,EAf4E,8CAelD;AAA1C,UAAIsR,QAAQ,8BAAZ;;AACD;AACA,UAAIvmD,IAAI,GAAG,MAAKozC,SAAL,CAAe2K,OAAf,CAAuBwI,QAAvB,CAAX;;AAEA,UAAIvmD,IAAI,CAACwmD,aAAT,EAAwB;AACpB,cAAKl8C,KAAL,CAAWi8C,QAAX,IAAuB5/C,OAAO,CAAC2D,KAAR,CAAci8C,QAAd,CAAvB;AACH;AACJ;;AAED,UAAK3N,KAAL,GAAa,YAAM;AACf,aAAOv9C,yCAAY,CAACkC,GAAb,CAAiB,CACpB,MAAK2J,cAAL,GAAsBrN,IAAtB,CAA2B,UAAAisB,MAAM,EAAI;AACjC,YAAI,CAACA,MAAL,EAAa;AACTvsB,gBAAM,CAACyN,IAAP,CAAY,EAAZ,EAAgB,MAAKw5C,eAArB;AACH;AACJ,OAJD,CADoB,EAMpB75C,OAAO,CAAC8/C,SAAR,CAAkB7N,KAAlB,CAAwBh/C,IAAxB,+BANoB,CAAjB,EAOJC,IAPI,CAOCuK,mBAPD,CAAP;AAQH,KATD;;AAWA,UAAKgK,KAAL,CAAWgyB,QAAX,CAAoB,sBAApB,EAA4C,YAAM;AAC9C;AACA,YAAKwY,KAAL,GAAax0C,mBAAb;AACH,KAHD;;AAKA,UAAKu7C,SAAL,GAAiBh5C,OAAO,CAAC8/C,SAAR,CAAkB9G,SAAnC;AACA,UAAKv7B,SAAL,GAAiBzd,OAAO,CAAC8/C,SAAR,CAAkBriC,SAAnC;AACA,UAAK1oB,KAAL,GAAiBiL,OAAO,CAAC8/C,SAAR,CAAkB/qD,KAAnC;AACA,UAAKkI,EAAL,GAAiB+C,OAAO,CAAC8/C,SAAR,CAAkB7iD,EAAnC;AAEA,QAAIy9C,iBAAiB,GAAGlB,cAAc,CAACx5C,OAAO,CAACzI,OAAT,CAAd,CAAgCmjD,iBAAxD;;AA7CiG,sCA+CjFjlD,MAAM,CAACyB,IAAP,CAAYwjD,iBAAZ,CA/CiF,qCA+CjD;AAA3C,UAAItjD,GAAG,qBAAP;AACD;AACA,YAAKA,GAAL,IAAY6lD,sBAAe,CAACvnD,SAAhB,CAA0B0B,GAA1B,CAAZ;AACH;;AAED,UAAKyiD,eAAL,GAAuB75C,OAAO,CAAC65C,eAA/B;AACA,UAAKt5C,cAAL,GAAsBP,OAAO,CAACO,cAA9B;AAEA08C,0BAAe,CAACvnD,SAAhB,CAA0B6nD,uBAA1B,CAAkDtqD,IAAlD;;AAEA,UAAKwlD,aAAL;;AAzDiG;AA0DpG;;AAzEL;;AAAA,SAoFIA,aApFJ,GAoFI,yBAAgB;AAAA;;AACZ,QAAIuH,mBAAmB,GAAG99B,uDAAa,CAAC,KAAK3pB,MAAN,EAAc;AAAA,aAAM,MAAI,CAACm1C,OAAL,EAAN;AAAA,KAAd,EAAoC,IAApC,CAAvC;AACA,SAAKjmC,KAAL,CAAWgyB,QAAX,CAAoB,4BAApB,EAAkDumB,mBAAmB,CAAChsD,MAAtE;AACH,GAvFL;;AAAA,SAyFIitD,YAzFJ,GAyFI,sBAAa1pD,OAAb,EAAsD;AAElD,QAAImjD,iBAAiB,GAAGlB,cAAc,CAACjiD,OAAD,CAAd,CAAwBmjD,iBAAhD;AAEA,QAAIoF,SAAS,GAAG,EAAhB;AAEA,QAAIxhD,IAAI,GAAG,IAAX;;AANkD;AAQ7C,UAAIlH,GAAG,qBAAP;;AACD0oD,eAAS,CAAC1oD,GAAD,CAAT,GAAiB,SAAS8pD,gBAAT,GAAoC;AACjD;AACA,eAAOjE,sBAAe,CAACvnD,SAAhB,CAA0B0B,GAA1B,EAA+BK,KAA/B,CAAqC6G,IAArC,EAA2CV,SAA3C,CAAP;AACH,OAHD;AAT8C;;AAAA,sCAQlCnI,MAAM,CAACyB,IAAP,CAAYwjD,iBAAZ,CARkC,qCAQF;AAAA;AAK/C;;AAED,WAAOoF,SAAP;AACH,GAzGL;;AAAA,SA2GIpS,OA3GJ,GA2GI,mBAA+B;AAC3B,WAAO,KAAKjmC,KAAL,CAAW7Q,GAAX,EAAP;AACH,GA7GL;;AAAA;AAAA;AAAA,wBA2EqC;AAE7B,UAAI,CAAC,KAAKW,OAAV,EAAmB;AACf,cAAM,IAAIhC,KAAJ,CAAU,iBAAV,CAAN;AACH;;AAED,aAAOikD,cAAc,CAAC,KAAKjiD,OAAN,CAArB;AACH;AAlFL;;AAAA;AAAA,EAA0Cu+C,kBAA1C,E;;;;;AChCA;AACA;;AAIA,SAASqL,uBAAT,CAAoCnhD,OAApC,EAAuE;AAEnE,MAAIA,OAAO,CAAC2D,KAAR,IAAiB,EAAE,OAAO3D,OAAO,CAAC2D,KAAf,KAAyB,QAA3B,CAArB,EAA2D;AACvD,UAAM,IAAIpO,KAAJ,0CAAN;AACH;;AAED,MAAIyK,OAAO,CAAC2D,KAAZ,EAAmB;AAAA,sCACClO,MAAM,CAACyB,IAAP,CAAY8I,OAAO,CAAC2D,KAApB,CADD,qCAC6B;AAAvC,UAAIvM,GAAG,qBAAP;AAED;AACA,UAAIiC,IAAI,GAAG2G,OAAO,CAAC2D,KAAR,CAAcvM,GAAd,CAAX;;AAEA,UAAI,CAACiC,IAAD,IAAS,EAAE,OAAOA,IAAP,KAAgB,QAAlB,CAAb,EAA0C;AACtC,cAAM,IAAI9D,KAAJ,6BAAqC6B,GAArC,sBAAN;AACH;;AAED,UAAI,CAACiC,IAAI,CAACyB,IAAV,EAAgB;AACZ,cAAM,IAAIvF,KAAJ,sBAAN;AACH;;AAED,UAAImvB,4BAAe,CAAClxB,OAAhB,CAAwB6F,IAAI,CAACyB,IAA7B,MAAuC,CAAC,CAA5C,EAA+C;AAC3C,cAAM,IAAIvF,KAAJ,sCAA8CmvB,4BAAe,CAAChpB,IAAhB,CAAqB,IAArB,CAA9C,CAAN;AACH;;AAED,UAAIrC,IAAI,CAACk+C,QAAL,IAAiBl+C,IAAI,CAACK,GAA1B,EAA+B;AAC3B,cAAM,IAAInE,KAAJ,8CAAN;AACH;AACJ;AACJ;AACJ,C,CAED;;;AACO,SAASwmD,iBAAT,CAAqB/7C,OAArB,EAAyD;AAAE;AAE9D,MAAI,CAACA,OAAL,EAAc;AACV,UAAM,IAAIzK,KAAJ,iCAAN;AACH;;AAED,MAAI,CAACyK,OAAO,CAACe,GAAT,IAAgB,CAACf,OAAO,CAACe,GAAR,CAAY5E,KAAZ,CAAkB,cAAlB,CAArB,EAAwD;AACpD,UAAM,IAAI5G,KAAJ,2BAAmCyK,OAAO,CAACe,GAA3C,CAAN;AACH;;AAEDogD,yBAAuB,CAACnhD,OAAD,CAAvB;;AAEA,MAAIA,OAAO,CAAC8F,UAAZ,EAAwB;AACpB,QAAI9F,OAAO,CAAC8F,UAAR,IAAsB,CAACiG,2BAAI,CAAC/L,OAAO,CAAC8F,UAAR,CAAmBtB,KAApB,CAA3B,IAAyD,CAACqH,6BAAM,CAAC7L,OAAO,CAAC8F,UAAR,CAAmBtB,KAApB,CAApE,EAAgG;AAC5F,YAAM,IAAIjP,KAAJ,kEAAN;AACH;;AAED,QAAIyK,OAAO,CAAC8F,UAAR,IAAsB,CAACiG,2BAAI,CAAC/L,OAAO,CAAC8F,UAAR,CAAmBrB,MAApB,CAA3B,IAA0D,CAACoH,6BAAM,CAAC7L,OAAO,CAAC8F,UAAR,CAAmBrB,MAApB,CAArE,EAAkG;AAC9F,YAAM,IAAIlP,KAAJ,mEAAN;AACH;AACJ;;AAED,MAAIyK,OAAO,CAACohD,QAAZ,EAAsB;AAElB,QAAIphD,OAAO,CAACohD,QAAR,CAAiBthD,KAAjB,IAA0B,CAAC6N,IAA/B,EAA2D;AACvD,YAAM,IAAIpY,KAAJ,2EAAN;AACH;;AAED,QAAI8rD,UAAU,GAAG,KAAjB;;AANkB,sCAQE5rD,MAAM,CAACyB,IAAP,CAAY8I,OAAO,CAACohD,QAApB,CARF,qCAQiC;AAA9C,UAAI7pD,OAAO,qBAAX;;AAED,UAAI0uB,+BAAkB,CAACzyB,OAAnB,CAA2B+D,OAA3B,MAAwC,CAAC,CAA7C,EAAgD;AAC5C,cAAM,IAAIhC,KAAJ,gCAAwCgC,OAAxC,CAAN;AACH;;AAED,UAAKyI,OAAO,CAACohD,QAAR,IAAoBphD,OAAO,CAACohD,QAAR,CAAiB7pD,OAAjB,CAArB,IAAoDyI,OAAO,CAACohD,QAAR,IAAoBphD,OAAO,CAACohD,QAAR,CAAiB7pD,OAAjB,MAA8BpB,SAA1G,EAAsH;AAClHkrD,kBAAU,GAAG,IAAb;AACH;AACJ;;AAED,QAAI,CAACA,UAAL,EAAiB;AACb,YAAM,IAAI9rD,KAAJ,8BAAN;AACH;AACJ;;AAED,MAAIyK,OAAO,CAACshD,cAAZ,EAA4B;AACxB,QAAIr7B,+BAAkB,CAACzyB,OAAnB,CAA2BwM,OAAO,CAACshD,cAAnC,MAAuD,CAAC,CAA5D,EAA+D;AAC3D,YAAM,IAAI/rD,KAAJ,iCAAwCyK,OAAO,CAACshD,cAAR,IAA0B,SAAlE,EAAN;AACH;;AAED,QAAIthD,OAAO,CAACohD,QAAR,IAAoBphD,OAAO,CAACshD,cAA5B,IAA8C,CAACthD,OAAO,CAACohD,QAAR,CAAiBphD,OAAO,CAACshD,cAAzB,CAAnD,EAA6F;AACzF,YAAM,IAAI/rD,KAAJ,wCAA+CyK,OAAO,CAACshD,cAAR,IAA0B,SAAzE,EAAN;AACH;AACJ;;AAED,MAAIthD,OAAO,CAACD,GAAR,IAAeC,OAAO,CAAC89C,QAA3B,EAAqC;AACjC,UAAM,IAAIvoD,KAAJ,sDAAN;AACH;;AAED,MAAIyK,OAAO,CAACuhD,UAAZ,EAAwB;AACpB,QAAI,OAAOvhD,OAAO,CAACuhD,UAAf,KAA8B,QAAlC,EAA4C;AACxC,YAAM,IAAI5qD,SAAJ,8CAAN;AACH;;AAED,QAAI,CAACqJ,OAAO,CAAC89C,QAAT,IAAqB,OAAO99C,OAAO,CAACD,GAAf,KAAuB,QAAhD,EAA0D;AACtD,YAAM,IAAIxK,KAAJ,yDAAN;AACH;;AAED,QAAIyK,OAAO,CAACD,GAAR,IAAe,OAAOC,OAAO,CAACD,GAAf,KAAuB,QAAtC,IAAkD,CAACC,OAAO,CAACD,GAAR,CAAYC,OAAO,CAACuhD,UAApB,CAAvD,EAAwF;AACpF,YAAM,IAAIhsD,KAAJ,oCAA4CyK,OAAO,CAACuhD,UAApD,CAAN;AACH;AACJ;;AAED,MAAIvhD,OAAO,CAACD,GAAR,IAAe,OAAOC,OAAO,CAACD,GAAf,KAAuB,QAA1C,EAAoD;AAEhD,QAAI,CAACC,OAAO,CAACuhD,UAAb,EAAyB;AACrB,YAAM,IAAIhsD,KAAJ,sDAAN;AACH;;AAJ+C,sCAMhCE,MAAM,CAACyB,IAAP,CAAY8I,OAAO,CAACD,GAApB,CANgC,qCAMN;AAArC,UAAIyO,GAAG,qBAAP;;AACD,UAAI,CAACxO,OAAO,CAACD,GAAR,CAAYyO,GAAZ,CAAL,EAAuB;AACnB,cAAM,IAAIjZ,KAAJ,gCAAwCiZ,GAAxC,CAAN;AACH;AACJ;AACJ;;AAED,MAAIxO,OAAO,CAAC0/C,iBAAR,IAA6B,OAAO1/C,OAAO,CAAC0/C,iBAAf,KAAqC,UAAtE,EAAkF;AAC9E,UAAM,IAAInqD,KAAJ,uDAAN;AACH;;AAED,MAAIyK,OAAO,CAAC6gD,iBAAR,IAA6B,OAAO7gD,OAAO,CAAC6gD,iBAAf,KAAqC,UAAtE,EAAkF;AAC9E,UAAM,IAAItrD,KAAJ,uDAAN;AACH;AACJ,C;;ACpID;AAIO,SAASisD,wBAAT,OAAiJ;AAAA,MAA7GriD,EAA6G,QAA7GA,EAA6G;AAAA,MAAzG4B,GAAyG,QAAzGA,GAAyG;AAAA,MAApGxJ,OAAoG,QAApGA,OAAoG;AAAA,MAA3FipD,KAA2F,QAA3FA,KAA2F;AAAA,MAApFrD,MAAoF,QAApFA,MAAoF;AAAA,MAA5E9xC,MAA4E,QAA5EA,MAA4E;AAAA,6BAApEvF,UAAoE;AAAA,MAArDtB,KAAqD,mBAArDA,KAAqD;AAAA,MAA9CC,MAA8C,mBAA9CA,MAA8C;AAEpJ,SACI;AAAK,MAAE,EAAGtF,EAAV;AAAe,SAAK,EAAOqhD,KAAK,CAACz9B,IAAb,SAAuBy9B,KAAK,CAACz9B,IAA7B,aAA2ChiB,GAA3C,SAAoDy/C,KAAK,CAACz9B,IAA1D,iBAA4ExrB;AAAhG,KACI,kDAEY4H,EAFZ,WAEsBA,EAFtB,YAEiCqhD,KAAK,CAAC37B,MAFvC,2CAGsBrgB,KAHtB,2CAIuBC,MAJvB,yDAOYtF,EAPZ,YAOuBqhD,KAAK,CAAC37B,MAP7B,uJAYY1lB,EAZZ,YAYuBqhD,KAAK,CAAC37B,MAZ7B,8TAqBY1lB,EArBZ,YAqBuBqhD,KAAK,CAAC37B,MArB7B,kBAqBkD27B,KAAK,CAACj4C,OArBxD,+FAyBYpJ,EAzBZ,YAyBuBqhD,KAAK,CAAC37B,MAzB7B,kBAyBkD27B,KAAK,CAACx7B,SAzBxD,sFADJ,EAgCMm4B,MAhCN,CADJ;AAoCH,C;;AC1CD;AAIO,SAASsE,wBAAT,OAAgF;AAAA,MAA5Cp2C,MAA4C,QAA5CA,MAA4C;AACnF,SACI,qBACI,qBACI,+pDADJ,CADJ,EAgDI,qBACI;AAAK,SAAK,EAAC;AAAX,KACI;AAAK,MAAE,EAAC,QAAR;AAAiB,SAAK,EAAC;AAAvB,IADJ,CADJ,CAhDJ,CADJ;AAwDH,C;;AC5DD;;;ACGA;;AAiHA;;;;;;AAOO,SAASq2C,gBAAT,GAA+D;AAClE,SAAO;AAEH;AAEAlzC,OAAG,EAAE;AACD1T,UAAI,EAAQ,QADX;AAEDy8C,cAAQ,EAAI,KAFX;AAGDkF,gBAAU,EAAE,IAHX;AAID/iD,SAJC,iBAIc;AACX,eAAO,KAAK6nD,UAAZ;AACH;AANA,KAJF;AAaHzlD,OAAG,EAAE;AACDhB,UAAI,EAAE,QADL;AAEDpB,SAFC,iBAEc;AACX,eAAOhB,+BAAQ,EAAf;AACH,OAJA;AAKD+jD,gBAAU,EAAE;AALX,KAbF;AAqBHzvC,YAAQ,EAAE;AACNlS,UAAI,EAAQ,QADN;AAENy8C,cAAQ,EAAI,KAFN;AAGNkF,gBAAU,EAAE,IAHN;AAIN/iD,SAJM,iBAIS;AACX,eAAO,KAAKioD,eAAZ;AACH;AANK,KArBP;AA8BH;AAEA5hD,OAAG,EAAE;AACDjF,UAAI,EAAS,QADZ;AAEDy8C,cAAQ,EAAK,KAFZ;AAGDhkD,aAAO,EAAM,IAHZ;AAIDsoD,iBAAW,EAAE;AAJZ,KAhCF;AAuCHz7C,OAAG,EAAE;AACDtF,UAAI,EAAS,QADZ;AAEDy8C,cAAQ,EAAK,KAFZ;AAGDsE,iBAAW,EAAE;AAHZ,KAvCF;AA6CH/1C,cAAU,EAAE;AACRhL,UAAI,EAAM,QADF;AAERy8C,cAAQ,EAAE;AAFF,KA7CT;AAkDHlpC,WAAO,EAAE;AACLvT,UAAI,EAAQ,QADP;AAELy8C,cAAQ,EAAI,KAFP;AAGLkF,gBAAU,EAAE,IAHP;AAIL/iD,SAJK,iBAIU;AACX,eAAO,KAAK2U,OAAZ;AACH;AANI,KAlDN;AA2DH;AAEA9X,WAAO,EAAE;AACLuE,UAAI,EAAS,QADR;AAELy8C,cAAQ,EAAK,KAFR;AAGLsE,iBAAW,EAAE;AAHR,KA7DN;AAmEH8D,aAAS,EAAE;AACP7kD,UAAI,EAAS,UADN;AAEPy8C,cAAQ,EAAK,KAFN;AAGP95C,UAAI,EAAS,IAHN;AAIPiO,eAAS,EAAI,IAJN;AAKP7N,aAAO,EAAM,IALN;AAMPg+C,iBAAW,EAAE;AANN,KAnER;AA4EHmC,WAAO,EAAE;AACLljD,UAAI,EAAS,UADR;AAELy8C,cAAQ,EAAK,KAFR;AAGL95C,UAAI,EAAS,IAHR;AAILiO,eAAS,EAAI,IAJR;AAKLmwC,iBAAW,EAAE;AALR,KA5EN;AAoFH;AAEA6B,YAAQ,EAAE;AACN5iD,UAAI,EAAS,UADP;AAENy8C,cAAQ,EAAK,KAFP;AAGN95C,UAAI,EAAS,IAHP;AAINiO,eAAS,EAAI,IAJP;AAKNmwC,iBAAW,EAAE;AALP,KAtFP;AA8FH;AAEA3B,WAAO,EAAE;AACLp/C,UAAI,EAAS,UADR;AAELy8C,cAAQ,EAAK,KAFR;AAGL95C,UAAI,EAAS,IAHR;AAILJ,UAAI,EAAS,IAJR;AAKLqO,eAAS,EAAI,IALR;AAMLmwC,iBAAW,EAAE;AANR,KAhGN;AAyGHrf,YAAQ,EAAE;AACN1hC,UAAI,EAAS,UADP;AAENy8C,cAAQ,EAAK,KAFP;AAGN95C,UAAI,EAAS,IAHP;AAINo+C,iBAAW,EAAE;AAJP,KAzGP;AAgHH;AAEAuE,aAAS,EAAE;AACPtlD,UAAI,EAAS,UADN;AAEPy8C,cAAQ,EAAK,KAFN;AAGP15C,aAAO,EAAM,IAHN;AAIP6N,eAAS,EAAI,IAJN;AAKPmwC,iBAAW,EAAE,KALN;AAMPniD,SANO,iBAMc;AACjB,eAAO,SAAS0mD,SAAT,CAAmBjtD,GAAnB,EAAuC;AAC1C,cAAI,KAAKwQ,KAAL,CAAW1N,OAAf,EAAwB;AACpB,mBAAO,KAAK0N,KAAL,CAAW1N,OAAX,CAAmB9C,GAAnB,CAAP;AACH;;AACD,gBAAMA,GAAN;AACH,SALD;AAMH;AAbM,KAlHR;AAkIH;AAEA8C,WAAO,EAAE;AACL6E,UAAI,EAAS,UADR;AAELy8C,cAAQ,EAAK,KAFR;AAGL7rC,eAAS,EAAI,IAHR;AAILmwC,iBAAW,EAAE,IAJR;AAKLx+C,UAAI,EAAS,IALR;AAML3D,SANK,iBAMgB;AACjB,eAAO,SAASzD,OAAT,CAAiB9C,GAAjB,EAA8B;AACjCO,oBAAU,CAAC,YAAM;AACb,kBAAMP,GAAN;AACH,WAFS,CAAV;AAGH,SAJD;AAKH;AAZI;AApIN,GAAP;AAmJH,C;;;;;;;;AChRD;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AAEA,IAAMyuD,iBAAO,GAAG;AAAE1T,SAAO,EAAPA,kBAAF;AAAWqB,UAAQ,EAARA,mBAAX;AAAqBH,SAAO,EAAPA,kBAArB;AAA8BpC,OAAK,EAALA,gBAA9B;AAAqCY,KAAG,EAAHA,cAArC;AAA0C3iC,QAAM,EAANA,iBAAMA;AAAhD,CAAhB;AAEA;;;;;;;;;;AAkDO,IAAM0iC,mBAAb;AAAA;AAAA;AAAA;;AA0CI,qBAAY3tC,OAAZ,EAA+C;AAAA;;AAC3C;AAD2C,UAxC/ChN,IAwC+C;AAAA,UAvC/Cu7C,UAuC+C;AAAA,UArC/CxtC,GAqC+C;AAAA,UApC/ChB,GAoC+C;AAAA,UAlC/C2R,MAkC+C;AAAA,UAjC/C2tC,SAiC+C;AAAA,UAhC/CE,YAgC+C;AAAA,UA9B/C57C,KA8B+C;AAAA,UA7B/Cm7C,YA6B+C;AAAA,UA3B/Ch5C,UA2B+C;AAAA,UA1B/Ci0C,SA0B+C;AAAA,UAzB/CjC,UAyB+C;AAAA,UAxB/C+J,eAwB+C;AAAA,UAtB/CF,eAsB+C;AAAA,UArB/CvJ,oBAqB+C;AAAA,UAnB/C/pC,OAmB+C;AAAA,UAlB/CkzC,UAkB+C;AAAA,UAjB/CzD,QAiB+C;AAAA,UAf/CsD,QAe+C;AAAA,UAd/CE,cAc+C;AAAA,UAZ/CT,iBAY+C;AAAA,UAX/CnB,iBAW+C;AAAA,UAT/C3D,QAS+C;AAAA,UAP/C6C,cAO+C;AAAA,UAL/CkD,WAK+C;AAAA,UAH/C5Z,MAG+C;AAAA,UAF/CnF,MAE+C;AAE3CgZ,qBAAQ,CAAC/7C,OAAD,CAAR,CAF2C,CAI3C;AACA;;AAEA,UAAK+1C,OAAL,CAAa/1C,OAAb,EAAsB,KAAtB;;AAEA,UAAK+1C,OAAL,CAAa/1C,OAAb,EAAsB,iBAAtB,EAAyC,MAAzC;;AAEA,UAAK+1C,OAAL,CAAa/1C,OAAb,EAAsB,sBAAtB,EAA8C4c,qBAA9C,EAX2C,CAa3C;;;AACA7P,sCAAW,CAAC,MAAK40C,eAAN,CAAX;;AAEA,QAAIhU,SAAS,CAACoU,UAAV,CAAqB,MAAKhhD,GAA1B,CAAJ,EAAoC;AAChC,YAAM,IAAIxL,KAAJ,0DAAN;AACH,KAlB0C,CAoB3C;;;AAEA,UAAKwgD,OAAL,CAAa/1C,OAAb,EAAsB,MAAtB,EAA8B,MAAKe,GAAL,CAASjJ,OAAT,CAAiB,IAAjB,EAAuB,GAAvB,CAA9B,EAtB2C,CAwB3C;AACA;;;AAEA,UAAKgnD,YAAL,GAAoB4C,gBAAgB,EAApC;AACA,UAAK/9C,KAAL,GAAa3D,OAAO,CAAC2D,KAAR,IAAiB,EAA9B;;AAEA,QAAI,CAAC3D,OAAO,CAAC2D,KAAb,EAAoB;AAChB,YAAK4qC,UAAL,GAAkB,IAAlB;AACH,KAhC0C,CAkC3C;;;AAEA,UAAKwH,OAAL,CAAa/1C,OAAb,EAAsB,YAAtB;;AACA,UAAK+1C,OAAL,CAAa/1C,OAAb,EAAsB,WAAtB;;AACA,UAAK+1C,OAAL,CAAa/1C,OAAb,EAAsB,iBAAtB;;AAEA,UAAK+1C,OAAL,CAAa/1C,OAAb,EAAsB,SAAtB,EAAiC,QAAjC,EAxC2C,CA0C3C;;;AAEA,UAAK+1C,OAAL,CAAa/1C,OAAb,EAAsB,YAAtB,EA5C2C,CA8C3C;;;AAEA,UAAK+1C,OAAL,CAAa/1C,OAAb,EAAsB,UAAtB;;AAEA,UAAK+1C,OAAL,CAAa/1C,OAAb,EAAsB,KAAtB;;AACA,UAAK+1C,OAAL,CAAa/1C,OAAb,EAAsB,QAAtB;;AAEA,UAAK+1C,OAAL,CAAa/1C,OAAb,EAAsB,WAAtB;;AACA,UAAK+1C,OAAL,CAAa/1C,OAAb,EAAsB,cAAtB;;AAEA,UAAK+1C,OAAL,CAAa/1C,OAAb,EAAsB,YAAtB,EAAoC,EAApC,EAxD2C,CA0D3C;AAGA;;;AAEA,UAAK+1C,OAAL,CAAa/1C,OAAb,EAAsB,UAAtB,EAAkC;AAAEyC,YAAM,EAAE,IAAV;AAAgB3C,WAAK,EAAE;AAAvB,KAAlC,EA/D2C,CAiE3C;;;AAEA,UAAKi2C,OAAL,CAAa/1C,OAAb,EAAsB,gBAAtB,EAnE2C,CAqE3C;;;AAEA,UAAK+1C,OAAL,CAAa/1C,OAAb,EAAsB,YAAtB,EAAoC,KAApC,EAvE2C,CAyE3C;;;AAEA,UAAK+1C,OAAL,CAAa/1C,OAAb,EAAsB,mBAAtB,EAA2CwhD,wBAA3C;;AACA,UAAKzL,OAAL,CAAa/1C,OAAb,EAAsB,mBAAtB,EAA2CyhD,wBAA3C,EA5E2C,CA8E3C;;;AAEA,UAAK1L,OAAL,CAAa/1C,OAAb,EAAsB,UAAtB,EAhF2C,CAkF3C;;;AAEA,UAAK+1C,OAAL,CAAa/1C,OAAb,EAAsB,gBAAtB,EAAwC,KAAxC,EApF2C,CAsF3C;;;AAEA2tC,aAAS,CAACoU,UAAV,CAAqB,MAAKhhD,GAA1B,kCAxF2C,CA0F3C;AACA;AACA;;AACA,UAAKihD,eAAL;;AACA,UAAKC,aAAL;;AACA,UAAKC,cAAL;;AA/F2C;AAgG9C;;AA1IL;;AAAA,SA6II5T,YA7IJ,GA4II,wBAC+B;AAC3B,QAAI3qC,KAAK,GAAGlO,MAAM,CAACyB,IAAP,CAAY,KAAKyM,KAAjB,CAAZ;;AAD2B,sCAGXlO,MAAM,CAACyB,IAAP,CAAY,KAAK4nD,YAAjB,CAHW,qCAGqB;AAA3C,UAAI1nD,GAAG,qBAAP;;AACD,UAAIuM,KAAK,CAACnQ,OAAN,CAAc4D,GAAd,MAAuB,CAAC,CAA5B,EAA+B;AAC3BuM,aAAK,CAAClQ,IAAN,CAAW2D,GAAX;AACH;AACJ;;AAED,WAAOuM,KAAP;AACH,GAvJL,CAyJI;AAzJJ;;AAAA,SA0JIyzC,OA1JJ,GA0JI,iBAAQpkD,IAAR,EAAoD;AAChD;AACA,WAAO,KAAK2Q,KAAL,CAAW3Q,IAAX,KAAoB,KAAK8rD,YAAL,CAAkB9rD,IAAlB,CAA3B;AACH,GA7JL;;AAAA,SA+JIgvD,eA/JJ,GA+JI,2BAAkB;AACd,SAAKF,WAAL,GAAmB,EAAnB;;AADc,sCAGSrsD,MAAM,CAACyB,IAAP,CAAY0qD,iBAAZ,CAHT,qCAG+B;AAAxC,UAAIO,UAAU,qBAAd;;AACD,UAAIA,UAAU,CAAC3uD,OAAX,CAAmB,GAAnB,MAA4B,CAAhC,EAAmC;AAC/B;AACH;;AAED,UAAImqD,MAAM,GAAGiE,iBAAO,CAACO,UAAD,CAApB;AACA,UAAIt5B,IAAI,GAAG80B,MAAM,CAAC9vC,MAAP,EAAX;;AACA,UAAIgb,IAAJ,EAAU;AACN,aAAK80B,MAAL,CAAYwE,UAAZ,EAAwBt5B,IAAxB;AACH;AACJ;AACJ,GA7KL;;AAAA,SA+KI80B,MA/KJ,GA+KI,gBAAO3qD,IAAP,EAAsBovD,GAAtB,EAA2C;AACvC,QAAI,CAACR,iBAAO,CAAC5uD,IAAD,CAAZ,EAAoB;AAChB,YAAM,IAAIuC,KAAJ,2CAAmDvC,IAAnD,CAAN;AACH;;AAED,QAAI,CAAC,KAAK8uD,WAAL,CAAiB9uD,IAAjB,CAAL,EAA6B;AACzB,WAAK8uD,WAAL,CAAiB9uD,IAAjB,IAAyB4uD,iBAAO,CAAC5uD,IAAD,CAAP,CAAcymC,QAAd,CAAuB,IAAvB,EAA6B2oB,GAA7B,CAAzB;AACH;;AAED,WAAO,KAAKN,WAAL,CAAiB9uD,IAAjB,CAAP;AACH,GAzLL;;AAAA,SA2LIivD,aA3LJ,GA2LI,yBAAmD;AAAA;;AAC/C,WAAOvtD,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAC1B,UAAI,MAAI,CAAC+rD,OAAL,EAAJ,EAAoB;AAChB,eAAO,IAAI3K,oBAAJ,CAAmB,MAAnB,CAAP;AACH;AACJ,KAJM,CAAP;AAKH,GAjML;;AAAA,SAmMIwK,cAnMJ,GAmMI,0BAAiB;AAAA;;AACbjlD,qBAAE,CAAK+lB,yBAAY,CAACS,cAAlB,SAAsC,KAAKzwB,IAA3C,EAAoD,YAAM;AACxD,aAAO,IAAP;AACH,KAFC,CAAF;AAIAiK,qBAAE,CAAK+lB,yBAAY,CAACQ,QAAlB,SAAgC,KAAKxwB,IAArC,EAA8C,gBAA8B;AAAA,UAA3BuF,MAA2B,QAA3BA,MAA2B;AAAA,UAAnBspB,MAAmB,QAAnBA,MAAmB;AAAA,UAAX5L,IAAW,QAAXA,IAAW;;AAE1E,UAAIvE,MAAM,GAAG,MAAI,CAAC+L,SAAL,CAAe,IAAf,EAAqBxH,IAAI,CAACzH,GAAL,IAAY,MAAI,CAAC+yC,UAAtC,CAAb;;AAEA,UAAI,CAAC7vC,MAAL,EAAa;AACT,cAAM,IAAInc,KAAJ,qDAAN;AACH;;AAED,UAAI,CAACqsB,qDAAW,CAAClQ,MAAD,EAASmQ,MAAT,CAAhB,EAAkC;AAC9B,cAAM,IAAItsB,KAAJ,0BAAkCssB,MAAlC,oBAAyDnQ,MAAM,CAAC3e,QAAP,EAAzD,CAAN;AACH;;AAED,UAAImrD,QAAQ,GAAG,MAAI,CAACA,QAAL,CAAc3lD,MAAd,EAAsB0d,IAAI,CAACjW,OAA3B,CAAf;;AAEA,aAAO;AACH8/C,iBAAS,EAAE5B,QAAQ,CAAC+C,YAAT,CAAsBhrC,IAAI,CAAC1e,OAA3B,CADR;AAEHm2C,eAAO,EAAI;AAAA,iBAAMwQ,QAAQ,CAACxQ,OAAT,EAAN;AAAA;AAFR,OAAP;AAIH,KAlBC,CAAF;AAmBH,GA3NL;;AAAA,SA6NI4U,WA7NJ,GA6NI,qBAAYliD,GAAZ,EAAiE;AAC7D,WAAOkK,mBAAI,CAAClK,GAAD,EAAU4iB,yBAAY,CAACS,cAAvB,SAA2C,KAAKzwB,IAAhD,CAAJ,CAA6DE,IAA7D,CAAkE,iBAAc;AAAA,UAAX+iB,IAAW,SAAXA,IAAW;AACnF,aAAOA,IAAP;AACH,KAFM,EAEJ/f,KAFI,CAEE,YAAM;AACX,aAAO,KAAP;AACH,KAJM,CAAP;AAKH,GAnOL;;AAAA,SAsOI6oD,cAtOJ,GAsOI,wBAAeh/C,GAAf,EAAmD;AAE/C,QAAI,CAACA,GAAL,EAAU;AACN;AACH;;AAED,QAAI2R,MAAM,GAAGuQ,0DAAgB,CAACliB,GAAD,CAA7B;;AAEA,QAAI,OAAO,KAAK2R,MAAZ,KAAuB,QAAvB,IAAmCA,MAAM,KAAK,KAAKA,MAAvD,EAA+D;AAC3D,aAAOA,MAAP;AACH;;AAED,QAAIoa,OAAO,GAAG,KAAKpa,MAAnB;;AAEA,QAAIoa,OAAO,IAAI,OAAOA,OAAP,KAAmB,QAA9B,IAA0C,EAAEA,OAAO,YAAY5vB,MAArB,CAA9C,EAA4E;AAAA,wCACxDzG,MAAM,CAACyB,IAAP,CAAY40B,OAAZ,CADwD,qCAClC;AAAjC,YAAItd,GAAG,qBAAP;;AAED,YAAIA,GAAG,KAAK,MAAZ,EAAoB;AAChB;AACH;;AAED,YAAIkD,MAAM,KAAKoa,OAAO,CAACtd,GAAD,CAAtB,EAA6B;AACzB,iBAAOkD,MAAP;AACH;AACJ;AACJ;AACJ,GAhQL;;AAAA,SAmQI+L,SAnQJ,GAmQI,mBAAU1d,GAAV,EAAyByO,GAAzB,EAA4D;AAExD,QAAIkD,MAAM,GAAG,KAAK6wC,SAAL,CAAe,KAAK7wC,MAApB,EAA4BlD,GAA5B,CAAb;;AAEA,QAAIkD,MAAJ,EAAY;AACR,aAAOA,MAAP;AACH;;AAEDA,UAAM,GAAG,KAAKqtC,cAAL,CAAoBh/C,GAApB,CAAT;;AAEA,QAAI2R,MAAJ,EAAY;AACR,aAAOA,MAAP;AACH,KAZuD,CAcxD;;;AACA,QAAI8wC,MAAM,GAAG,KAAKD,SAAL,CAAe,KAAKxiD,GAApB,EAAyByO,GAAzB,CAAb;;AAEA,QAAIg0C,MAAJ,EAAY;AACR;AACA,aAAOvgC,0DAAgB,CAACugC,MAAD,CAAvB;AACH;;AAED,QAAIziD,GAAJ,EAAS;AACL,aAAOkiB,0DAAgB,CAACliB,GAAD,CAAvB;AACH;AACJ,GA5RL;;AAAA,SA8RIu/C,YA9RJ,GA8RI,sBAAa9wC,GAAb,EAAqC;AACjC;AACA,WAAO,KAAK+zC,SAAL,CAAe,KAAKlD,SAApB,EAA+B7wC,GAA/B,CAAP;AACH,GAjSL;;AAAA,SAmSI+zC,SAnSJ,GAmSI,mBAAU7vD,IAAV,EAAuE8b,GAAvE,EAA2G;AAEvG,QAAI,CAAC9b,IAAL,EAAW;AACP;AACH;;AAED,QAAI,OAAOA,IAAP,KAAgB,QAAhB,IAA4BA,IAAI,YAAYwJ,MAAhD,EAAwD;AACpD,aAAOxJ,IAAP;AACH;;AAED,QAAI,CAAC8b,GAAL,EAAU;AACNA,SAAG,GAAG,KAAK+yC,UAAX;AACH;;AAED,QAAI,CAAC/yC,GAAL,EAAU;AACN;AACH;;AAED,QAAIA,GAAG,IAAI,OAAO9b,IAAP,KAAgB,QAAvB,IAAmCA,IAAI,CAAC8b,GAAD,CAA3C,EAAkD;AAC9C,aAAO9b,IAAI,CAAC8b,GAAD,CAAX;AACH;AACJ,GAxTL;;AAAA,SA0TIgxC,eA1TJ,GA0TI,yBAAgBhxC,GAAhB,EAAwC;AAEpC;AACA,QAAI+wC,YAAY,GAAG,KAAKgD,SAAL,CAAe,KAAKhD,YAApB,EAAkC/wC,GAAlC,CAAnB;;AAEA,QAAI+wC,YAAJ,EAAkB;AACd;AACA,aAAOA,YAAP;AACH;;AAED,QAAIF,SAAS,GAAG,KAAKC,YAAL,CAAkB9wC,GAAlB,CAAhB;;AAEA,QAAI6wC,SAAJ,EAAe;AACX,aAAOp9B,0DAAgB,CAACo9B,SAAD,CAAvB;AACH;AACJ,GAzUL;;AAAA,SA2UIL,MA3UJ,GA2UI,gBAAOxwC,GAAP,EAAqB7K,KAArB,EAAqF;AAEjF;AACA,QAAI5D,GAAG,GAAG,KAAKwiD,SAAL,CAAe,KAAKxiD,GAApB,EAAyByO,GAAzB,CAAV;;AAEA,QAAIzO,GAAJ,EAAS;AACL;AACA,aAAOA,GAAP;AACH;;AAED,QAAI,KAAK+9C,QAAT,EAAmB;AACf,aAAO,KAAKA,QAAL,CAAcn6C,KAAd,CAAP;AACH;;AAED,UAAM,IAAIpO,KAAJ,qBAAN;AACH,GA1VL;;AAAA,SA4VIktD,eA5VJ,GA4VI,2BAA4B;AACxB,WAAOjM,qBAAqB,EAA5B;AACH,GA9VL;;AAAA,SAgWI6L,OAhWJ,GAgWI,mBAAoB;AAChB,QAAI,CAAC7L,qBAAqB,EAA1B,EAA8B;AAC1B,aAAO,KAAP;AACH;;AAHe,4BAKaE,gBAAgB,EAL7B;AAAA,QAKR31C,GALQ,qBAKRA,GALQ;AAAA,QAKHy9C,WALG,qBAKHA,WALG;;AAOhB,QAAIA,WAAW,IAAIA,WAAW,KAAK/gC,mDAAS,EAA5C,EAAgD;AAC5C,aAAO,KAAP;AACH;;AAED,QAAI1c,GAAG,KAAK,KAAKA,GAAjB,EAAsB;AAClB,aAAO,KAAP;AACH;;AAED,WAAO,IAAP;AACH,GAhXL;;AAAA,SAmXIi1C,WAnXJ,GAmXI,qBAAYl5C,OAAZ,EAA8BiE,GAA9B,EAAqD;AACjD,WAAO,IAAIxL,KAAJ,QAAewL,GAAG,IAAI,KAAKA,GAA3B,WAAsCjE,OAAtC,CAAP;AACH;AAGD;;;;AAxXJ;;AAAA,SA8XIye,IA9XJ,GA8XI,cAAK5X,KAAL,EAA8BpM,OAA9B,EAAiDmH,OAAjD,EAAgG;AAC5F,WAAO,IAAIu+C,sBAAJ,CAAoB,IAApB,EAA0B,KAAKyF,gBAAL,CAAsBnrD,OAAtB,EAA+BmH,OAA/B,CAA1B,EAAmE;AAAEiF,WAAK,EAALA;AAAF,KAAnE,CAAP;AACH,GAhYL;;AAAA,SAmYIu6C,QAnYJ,GAmYI,kBAAS3lD,MAAT,EAAyCyH,OAAzC,EAA+F;AAC3F,WAAO,IAAIghD,0BAAJ,CAAsB,IAAtB,EAA4BzoD,MAA5B,EAAoCyH,OAApC,CAAP;AACH,GArYL;;AAAA,SAuYI2iD,qBAvYJ,GAuYI,+BAAsBprD,OAAtB,EAAyCmH,OAAzC,EAAoE;AAChE,QAAInH,OAAO,IAAI,CAAC,KAAK6pD,QAAL,CAAc7pD,OAAd,CAAhB,EAAwC;AACpC,YAAM,IAAIhC,KAAJ,OAAe,KAAKwL,GAApB,4BAAgDxJ,OAAhD,CAAN;AACH;;AAED,QAAI,CAACmH,OAAD,IAAYnH,OAAO,KAAKotB,0BAAa,CAACphC,MAA1C,EAAkD;AAC9C,YAAM,IAAIgS,KAAJ,OAAe,KAAKwL,GAApB,uBAA2C4jB,0BAAa,CAACphC,MAAzD,mCAAN;AACH;AACJ,GA/YL;;AAAA,SAiZIq/D,iBAjZJ,GAiZI,6BAA6B;AACzB,QAAI,KAAKtB,cAAT,EAAyB;AACrB,aAAO,KAAKA,cAAZ;AACH,KAFD,MAEO,IAAI,KAAKF,QAAL,CAAcz8B,0BAAa,CAACphC,MAA5B,CAAJ,EAAyC;AAC5C,aAAOohC,0BAAa,CAACphC,MAArB;AACH,KAFM,MAEA,IAAI,KAAK69D,QAAL,CAAcz8B,0BAAa,CAAC7H,KAA5B,CAAJ,EAAwC;AAC3C,aAAO6H,0BAAa,CAAC7H,KAArB;AACH;;AAED,UAAM,IAAIvnB,KAAJ,qCAAN;AACH,GA3ZL;;AAAA,SA6ZImtD,gBA7ZJ,GA6ZI,0BAAiBnrD,OAAjB,EAAoCmH,OAApC,EAAwE;AACpEnH,WAAO,GAAGA,OAAO,IAAI,KAAKqrD,iBAAL,EAArB;AACA,SAAKD,qBAAL,CAA2BprD,OAA3B,EAAoCmH,OAApC;AACA,WAAOnH,OAAP;AACH;AAGD;;;;AApaJ;;AAAA,SA0aIm1C,MA1aJ,GA0aI,gBAAO/oC,KAAP,EAAgCjF,OAAhC,EAA8F;AAAA;;AAC1F,WAAOhK,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAC1B,aAAO,IAAI2mD,sBAAJ,CAAoB,MAApB,EAA0B,MAAI,CAACyF,gBAAL,CAAsB,IAAtB,EAA4BhkD,OAA5B,CAA1B,EAAgE;AAAEiF,aAAK,EAALA;AAAF,OAAhE,EAA2E+oC,MAA3E,CAAkFhuC,OAAlF,CAAP;AACH,KAFM,CAAP;AAGH,GA9aL;;AAAA,SAgbImkD,YAhbJ,GAgbI,sBAAal/C,KAAb,EAAsCjF,OAAtC,EAAmG;AAAA;;AAC/F,WAAOhK,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAC1B,aAAO,IAAI2mD,sBAAJ,CAAoB,MAApB,EAA0B,MAAI,CAACyF,gBAAL,CAAsB/9B,0BAAa,CAACphC,MAApC,EAA4Cmb,OAA5C,CAA1B,EAAgF;AAAEiF,aAAK,EAALA;AAAF,OAAhF,EAA2F+oC,MAA3F,CAAkGhuC,OAAlG,CAAP;AACH,KAFM,CAAP;AAGH,GApbL;;AAAA,SAsbIokD,WAtbJ,GAsbI,qBAAYn/C,KAAZ,EAAwE;AAAA;;AACpE,WAAOjP,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAC1B,aAAO,IAAI2mD,sBAAJ,CAAoB,MAApB,EAA0B,MAAI,CAACyF,gBAAL,CAAsB/9B,0BAAa,CAAC7H,KAApC,CAA1B,EAAsE;AAAEnZ,aAAK,EAALA;AAAF,OAAtE,EAAiF+oC,MAAjF,EAAP;AACH,KAFM,CAAP;AAGH,GA1bL;;AAAA,SA4bI4Q,QA5bJ,GA4bI,kBAASl9C,GAAT,EAAsCuD,KAAtC,EAA+DjF,OAA/D,EAA6H;AAAA;;AACzH,WAAOhK,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAC1B,aAAO,IAAI2mD,sBAAJ,CAAoB,MAApB,EAA0B,MAAI,CAACyF,gBAAL,CAAsB,IAAtB,EAA4BhkD,OAA5B,CAA1B,EAAgE;AAAEiF,aAAK,EAALA;AAAF,OAAhE,EAA2E25C,QAA3E,CAAoFl9C,GAApF,EAAyF1B,OAAzF,CAAP;AACH,KAFM,CAAP;AAGH,GAhcL;;AAAA,SAkcIqkD,cAlcJ,GAkcI,wBAAe3iD,GAAf,EAA4CuD,KAA5C,EAAqEjF,OAArE,EAAkI;AAAA;;AAC9H,WAAOhK,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAC1B,aAAO,IAAI2mD,sBAAJ,CAAoB,MAApB,EAA0B,MAAI,CAACyF,gBAAL,CAAsB/9B,0BAAa,CAACphC,MAApC,EAA4Cmb,OAA5C,CAA1B,EAAgF;AAAEiF,aAAK,EAALA;AAAF,OAAhF,EAA2F25C,QAA3F,CAAoGl9C,GAApG,EAAyG1B,OAAzG,CAAP;AACH,KAFM,CAAP;AAGH,GAtcL;;AAAA,SAwcIskD,aAxcJ,GAwcI,uBAAc5iD,GAAd,EAA2CuD,KAA3C,EAAuG;AAAA;;AACnG,WAAOjP,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAC1B,aAAO,IAAI2mD,sBAAJ,CAAoB,MAApB,EAA0B,MAAI,CAACyF,gBAAL,CAAsB/9B,0BAAa,CAAC7H,KAApC,CAA1B,EAAsE;AAAEnZ,aAAK,EAALA;AAAF,OAAtE,EAAiF25C,QAAjF,CAA0Fl9C,GAA1F,CAAP;AACH,KAFM,CAAP;AAGH,GA5cL;;AAAA,SA8cI6iD,SA9cJ,GA8cI,mBAAUt/C,KAAV,EAAmCjF,OAAnC,EAA2P;AACvP,QAAIw9C,QAAQ,GAAG,IAAIe,sBAAJ,CAAoB,IAApB,EAA0B,KAAKyF,gBAAL,CAAsB,IAAtB,EAA4BhkD,OAA5B,CAA1B,EAAgE;AAAEiF,WAAK,EAALA;AAAF,KAAhE,CAAf;AACAu4C,YAAQ,CAACiC,QAAT;AAEA,WAAO;AACHzR,YADG,kBACIwW,UADJ,EACkCC,YADlC,EACoG;AACnG,YAAID,UAAJ,EAAgB;AACZhH,kBAAQ,CAAC1O,WAAT,CAAqB0V,UAArB;AACH;;AAED,eAAOhH,QAAQ,CAACxP,MAAT,CAAgByW,YAAhB,CAAP;AACH,OAPE;AASH7F,cATG,oBASMl9C,GATN,EASmC8iD,UATnC,EASiEC,YATjE,EASmI;AAClI,YAAID,UAAJ,EAAgB;AACZhH,kBAAQ,CAAC1O,WAAT,CAAqB0V,UAArB;AACH;;AAED,eAAOhH,QAAQ,CAACoB,QAAT,CAAkBl9C,GAAlB,EAAuB+iD,YAAvB,CAAP;AACH,OAfE;;AAiBH,UAAI1iD,IAAJ,GAAmC;AAC/B,eAAOy7C,QAAQ,CAACz7C,IAAhB;AACH,OAnBE;;AAqBH,UAAIA,IAAJ,CAAS3L,KAAT,EAAgB;AACZonD,gBAAQ,CAACz7C,IAAT,GAAgB3L,KAAhB;AACH;;AAvBE,KAAP;AAyBH;AAED;;;;AA7eJ;;AAAA,SAmfIgkB,GAnfJ,GAmfI,aAAI/V,KAAJ,EAAoBsK,OAApB,EAA4D;AAAA,QAAxCA,OAAwC;AAAxCA,aAAwC,GAAJ,EAAI;AAAA;;AACxDD,+BAAI,CAAC,KAAKpa,IAAN,EAAY+P,KAAZ,EAAmBsK,OAAnB,CAAJ;AACH;AAGD;;;;AAxfJ;;AAAA,SA8fI+1C,UA9fJ,GA8fI,oBAAWrgD,KAAX,EAA2BsK,OAA3B,EAA8D;AAC1D1D,+BAAI,CAAC,KAAK3W,IAAN,EAAY+P,KAAZ,EAAmBsK,OAAnB,CAAJ;AACH;AAGD;;;;AAngBJ;;AAAA,SAygBIG,QAzgBJ,GAygBI,kBAASzK,KAAT,EAAyBsK,OAAzB,EAA4D;AACxDtY,gCAAK,CAAC,KAAK/B,IAAN,EAAY+P,KAAZ,EAAmBsK,OAAnB,CAAL;AACH,GA3gBL;;AAAA,YA+gBWg2C,QA/gBX,GA+gBI,kBAAmBtiD,GAAnB,EAAgD;AAC5C,WAAO4sC,SAAS,CAACoU,UAAV,CAAqBhhD,GAArB,CAAP;AACH,GAjhBL;;AAAA;AAAA,EAAkC+0C,kBAAlC,oBA6gBWiM,UA7gBX,GA6gBsD,EA7gBtD,0FA4IKlkD,sBA5IL,6H;;ACvEA;AACA;;;ACAA;AACA;AAEA;CAEA;;AACA;AAEO,SAASg+B,gBAAT,CAAmB77B,OAAnB,EAAqE;AACxE,SAAO,IAAI2tC,mBAAJ,CAAc3tC,OAAd,CAAP;AACH;AAEM,SAASqjD,QAAT,CAAqBtiD,GAArB,EAAkD;AACrD,SAAO4sC,mBAAS,CAAC0V,QAAV,CAAmBtiD,GAAnB,CAAP;AACH;AAED;AAEO,SAASggD,oBAAT,GAA2C;AAC9C,SAAO9D,sBAAe,CAAC8D,UAAhB,EAAP;AACH;AACM,IAAIuC,SAAS,GAAGC,GAAhB;AAEP;AAEO,IAAMj9B,SAAS,GAAGk9B,SAAlB,C;;AC1BP;AACA;AAEA;AACelnC,sEAAf,E;;;;;;;;;;;;;;;;;ACJA;AACA;AAEA;AAEA;AAEO,SAASmnC,WAAT,CAAqBzwD,IAArB,EAAoCoN,GAApC,EAAkEsjD,cAAlE,EAAwG;AAE3G,MAAItjD,GAAG,IAAIqd,mDAAS,OAAOvQ,wBAAM,CAACuH,YAA9B,IAA8C,CAAC/G,sDAAY,CAACtN,GAAD,CAA/D,EAAsE;AAElE,QAAIA,GAAJ,EAAS;AACLkK,yBAAI,CAAClK,GAAD,aAAgBpN,IAAhB,EAAyB;AAAE0wD,sBAAc,EAAdA;AAAF,OAAzB,CAAJ,CAAiDxtD,KAAjD,CAAuDuH,oBAAvD;AACH;;AAED,WAAOimD,cAAP;AACH;;AAED,MAAIpyB,OAAO,GAAG,EAAd;AAEAr0B,mBAAE,YAAWjK,IAAX,EAAoB;AAAE0e,UAAM,EAAExE,wBAAM,CAACkB;AAAjB,GAApB,EAA4D,gBAAc;AAAA,QAAX6H,IAAW,QAAXA,IAAW;AACxEqb,WAAO,CAAC79B,IAAR,CAAawiB,IAAI,CAACytC,cAAlB;AACH,GAFC,CAAF;AAIA,SAAO,SAASC,gBAAT,GAAoC;AAAA;AAAA;;AAEvCryB,WAAO,GAAGA,OAAO,CAACpxB,MAAR,CAAe,UAAA5I,MAAM;AAAA,aAAI,CAACiJ,wDAAc,CAACjJ,MAAM,CAACiB,MAAR,CAAnB;AAAA,KAArB,CAAV;;AAEA,QAAI+4B,OAAO,CAACz9B,MAAZ,EAAoB;AAChB,aAAOy9B,OAAO,CAACA,OAAO,CAACz9B,MAAR,GAAiB,CAAlB,CAAP,CAA4B4D,KAA5B,CAAkC,IAAlC,EAAwCmG,SAAxC,EAAmD1H,KAAnD,CAAyD,YAAM;AAClE,eAAOwtD,cAAc,CAACjsD,KAAf,CAAqB,KAArB,EAA2BmG,UAA3B,CAAP;AACH,OAFM,CAAP;AAGH;;AAED,WAAO8lD,cAAc,CAACjsD,KAAf,CAAqB,IAArB,EAA2BmG,SAA3B,CAAP;AACH,GAXD;AAYH,C;;;;;;;;ACpCD;AACA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;;AAEA,SAASgmD,gBAAT,GAAqC;AACjC,SAAQhxD,MAAM,CAACs1C,MAAP,IAAiBt1C,MAAM,CAACs1C,MAAP,CAAc0O,eAAhC,GACDhkD,MAAM,CAACs1C,MAAP,CAAc0O,eAAd,EADC,GAEDhkD,MAAM,CAACgO,QAAP,CAAgBoN,IAFtB;AAGH;;AAED,IAAM61C,sBAAsB,GAAGxmD,4BAAI,CAAC,YAAM;AACtCob,sDAAY,CAACgrC,WAAW,CAAC,KAAD,EAAQvmC,mDAAS,CAACtqB,MAAD,CAAjB,EAA2B4lB,oDAAY,EAAvC,CAAZ,CAAZ;AACH,CAFkC,CAAnC;;AAIA,SAASsrC,QAAT,GAA8B;AAC1B,MAAIlxD,MAAM,CAACm3C,IAAP,IAAen3C,MAAM,CAACm3C,IAAP,CAAY/R,KAA/B,EAAsC;AAClC,WAAOplC,MAAM,CAACm3C,IAAP,CAAY/R,KAAnB;AACH;;AAED,MAAIkL,0CAAc,EAAlB,EAAsB;AAClB,QAAM6gB,UAAU,GAAGzgD,oCAAa,CAAC,OAAD,CAAhC;;AAEA,QAAIygD,UAAJ,EAAgB;AACZ,aAAOA,UAAP;AACH;AACJ;AACJ;;AAEM,SAASC,UAAT,GAAsB;AAEzBH,wBAAsB;AAEtB3sC,2DAAiB,CAAC,YAAM;AACpB,WAAO;AACH+sC,aAAO,EAAEL,gBAAgB,EADtB;AAEH51C,UAAI,EAAKpb,MAAM,CAACgO,QAAP,CAAgBoN,IAFtB;AAGHvU,UAAI,EAAK7G,MAAM,CAACgO,QAAP,CAAgB+tB,QAHtB;AAIHngB,SAAG,EAAMtB,wBAAM,CAACsB,GAJb;AAKHG,aAAO,EAAEzB,wBAAM,CAACwB,MAAP,CAAcC,OALpB;AAMHC,UAAI,EAAK1B,wBAAM,CAACwB,MAAP,CAAcE,IANpB;AAOH9S,SAAG,EAAM0iC,2CAAY,EAPlB;AAQH0lB,SAAG,EAAM51C,SAAqCymC;AAR3C,KAAP;AAUH,GAXgB,CAAjB;AAaAz9B,0DAAgB,CAAC,YAAM;AACnB,WAAO;AACH,oBAAc;AADX,KAAP;AAGH,GAJe,CAAhB;AAMAF,wDAAc,CAAC,YAAM;AACjB,WAAO;AACH3I,WAAK,EAAEvB,wBAAM,CAACuB;AADX,KAAP;AAGH,GAJa,CAAd;AAMA4I,4DAAkB,CAAC,UAAChK,OAAD,EAAkB;AAAA;;AAAA,QAAjBA,OAAiB;AAAjBA,aAAiB,GAAP,EAAO;AAAA;;AAEjC,QAAM21B,SAAS,GAASxE,2CAAY,EAApC;AACA,QAAM2lB,YAAY,GAAML,QAAQ,EAAhC;AACA,QAAM1gB,eAAe,GAAG/1B,OAAO,CAAC7rB,6BAAI,CAACC,GAAL,CAASM,kBAAV,CAAP,IAAwCohD,iDAAkB,EAAlF;AAEA,QAAIihB,WAAJ;AACA,QAAIC,SAAJ;;AAEA,QAAIF,YAAJ,EAAkB;AACdC,iBAAW,GAAG5iE,6BAAI,CAACU,YAAL,CAAkBtB,qCAAY,CAACC,QAA/B,CAAd;AACAwjE,eAAS,GAAKF,YAAd;AACH,KAHD,MAGO,IAAI/gB,eAAJ,EAAqB;AACxBghB,iBAAW,GAAG5iE,6BAAI,CAACU,YAAL,CAAkBwB,iBAAhC;AACA2gE,eAAS,GAAKjhB,eAAd;AACH,KAHM,MAGA;AACHghB,iBAAW,GAAG/2C,OAAO,CAAC7rB,6BAAI,CAACC,GAAL,CAASS,YAAV,CAArB;AACAmiE,eAAS,GAAKh3C,OAAO,CAAC7rB,6BAAI,CAACC,GAAL,CAASQ,UAAV,CAArB;AACH;;AAED,2BACMT,6BAAI,CAACC,GAAL,CAASC,IADf,IACqCF,6BAAI,CAACE,IAAL,CAAUiC,UAD/C,OAEMnC,6BAAI,CAACC,GAAL,CAASY,WAFf,IAEqCb,6BAAI,CAACa,WAAL,CAAiBhI,QAFtD,OAGMmH,6BAAI,CAACC,GAAL,CAASS,YAHf,IAGqCkiE,WAHrC,OAIM5iE,6BAAI,CAACC,GAAL,CAASQ,UAJf,IAIqCoiE,SAJrC,OAKM7iE,6BAAI,CAACC,GAAL,CAASW,SALf,IAKqC8qB,wBAAM,CAACmC,UAL5C,OAMM7tB,6BAAI,CAACC,GAAL,CAASK,WANf,IAMqCkhD,SANrC,OAOMxhD,6BAAI,CAACC,GAAL,CAASM,kBAPf,IAOqCqhD,eAPrC,OAQM5hD,6BAAI,CAACC,GAAL,CAASL,OARf,IAQqC8rB,wBAAM,CAACmB,OAR5C,OASM7sB,6BAAI,CAACC,GAAL,CAASO,KATf,IASqCmiE,YATrC,OAUM3iE,6BAAI,CAACC,GAAL,CAASU,OAVf,IAUqCyhE,gBAAgB,EAVrD;AAYH,GAhCiB,CAAlB;AAkCA,MAAMroD,MAAM,GAAG,MAAf;;AAEA,MAAI3I,MAAM,CAACgO,QAAP,CAAgBwQ,QAAhB,KAA6BoL,0CAAQ,CAACE,IAA1C,EAAgD;AAC5CnB,gDAAI,CAAC;AACDhE,SAAG,EAAarK,wBAAM,CAACiI,SADtB;AAED0C,eAAS,EAAO,KAFf;AAGDO,oBAAc,EAAE,KAHf;AAID7c,YAAM,EAANA,MAJC;AAKDyR,cAAQ,EAAQsB,MAAyCg2C;AALxD,KAAD,CAAJ;AAOH;AACJ;AAEM,SAASv3C,WAAT,CAAqBC,QAArB,EAAwC;AAE3C,MAAIC,yCAAS,CAACzZ,OAAV,CAAkBwZ,QAAlB,MAAgC,CAAC,CAArC,EAAwC;AACpC,UAAM,IAAIzX,KAAJ,wBAAgCyX,QAAhC,CAAN;AACH;;AAEDE,0BAAM,CAACF,QAAP,GAAkBA,QAAlB;AACAu3C,wCAAY,CAACv3C,QAAb,GAAwBA,QAAxB;AACAw3C,eAAgB,CAACjkE,SAAjB,GAA6BysB,QAA7B;AACApa,QAAM,CAACrS,SAAP,GAAmBysB,QAAnB;AACH,C;;AC5HD;AAEA;AAEA;AACA;AAEA,IAAMy3C,WAAW,GAAG,EAApB;;AAEA,SAASC,SAAT,GAA8B;AAE1B,MAAM5hD,SAAS,GAAGyc,sCAAY,EAA9B;;AAEA,MAAIklC,WAAW,CAAC3hD,SAAD,CAAf,EAA4B;AACxB,WAAO2hD,WAAW,CAAC3hD,SAAD,CAAlB;AACH;;AAED,SAAO8oB,qBAAA,CAAcA,mBAAA,CAAgB,EAAhB,CAAd,CAAP;;AACA,MAAM+4B,MAAM,GAAG/4B,mBAAO,CAAC,EAAD,CAAtB;;AAEA64B,aAAW,CAAC3hD,SAAD,CAAX,GAAyB6hD,MAAzB;AAEA,SAAOA,MAAP;AACH;;AAEM,SAASC,UAAT,GAAiE;AAEpE,MAAMD,MAAM,GAAGD,SAAS,EAAxB;;AAFoE,oCAI9CjvD,MAAM,CAACyB,IAAP,CAAYgW,wBAAM,CAACgD,kBAAnB,CAJ8C,qCAIN;AAAzD,QAAM20C,OAAO,qBAAb;;AACD,QAAIF,MAAM,CAACE,OAAD,CAAV,EAAqB;AACjB,aAAO;AAAEA,eAAO,EAAPA,OAAF;AAAWx2C,eAAO,EAAEs2C,MAAM,CAACt2C;AAA3B,OAAP;AACH;AACJ;;AAED,SAAO,EAAP;AACH;;AAED,SAASy2C,iBAAT,GAAuC;AAEnC,MAAIrvB,sCAAY,EAAhB,EAAoB;AAChB,WAAO,KAAP;AACH;;AAED,MAAMkvB,MAAM,GAAGD,SAAS,EAAxB;;AANmC,oBAONE,UAAU,EAPJ;AAAA,MAO3BC,OAP2B,eAO3BA,OAP2B;AAAA,MAOlBx2C,OAPkB,eAOlBA,OAPkB;;AASnC,MAAIw2C,OAAO,IAAIx2C,OAAX,IAAsBs2C,MAAM,CAACjQ,eAAP,CAAuB,CAAErmC,OAAF,EAAWnB,wBAAM,CAACgD,kBAAP,CAA0B20C,OAA1B,CAAX,CAAvB,MAA4E,CAAC,CAAvG,EAA0G;AACtG,WAAO,KAAP;AACH;;AAED,SAAO,IAAP;AACH;;AAED,IAAME,kBAAkB,GAAG,EAA3B;AAEO,SAASC,UAAT,GAAgC;AAEnC,MAAIvvB,sCAAY,EAAhB,EAAoB;AAChB,WAAO,KAAP;AACH;;AAED,MAAM3yB,SAAS,GAAGlQ,MAAM,CAACiQ,SAAP,CAAiBC,SAAnC;;AAEA,MAAIA,SAAS,IAAIiiD,kBAAkB,CAACvsD,cAAnB,CAAkCsK,SAAlC,CAAjB,EAA+D;AAC3D,WAAOiiD,kBAAkB,CAACjiD,SAAD,CAAzB;AACH;;AAED,MAAM3N,MAAM,GAAG2vD,iBAAiB,EAAhC;AAEAC,oBAAkB,CAACjiD,SAAD,CAAlB,GAAgC3N,MAAhC;AAEA,SAAOA,MAAP;AACH;AAEM,IAAM8vD,sBAAsB,GAAG5nD,4BAAI,CAAC,UAACoR,KAAD,EAAoB;AAAA,qBAEvCm2C,UAAU,EAF6B;AAAA,MAEnDC,OAFmD,gBAEnDA,OAFmD;;AAI3D,MAAI,CAACA,OAAL,EAAc;AAAA,qBACsCH,SAAS,EAD/C;AAAA,QACF1xD,IADE,cACFA,IADE;AAAA,QACIqb,OADJ,cACIA,OADJ;AAAA,QACaimC,MADb,cACaA,MADb;AAAA,QACqBV,OADrB,cACqBA,OADrB;AAAA,QAC8BC,GAD9B,cAC8BA,GAD9B;;AAEVzmC,gDAAI,2BAA0BqB,KAA1B,EAAoC;AAAEzb,UAAI,EAAJA,IAAF;AAAQqb,aAAO,EAAPA,OAAR;AAAiBimC,YAAM,EAANA,MAAjB;AAAyBV,aAAO,EAAPA,OAAzB;AAAkCC,SAAG,EAAHA;AAAlC,KAApC,CAAJ;AACAqR,iDAAS;AACZ;AACJ,CATyC,CAAnC,C;;AC3EP;AAEA;;AAEA,SAAS33C,OAAT,CAAiBpa,GAAjB,EAA6B;AACzB,MAAIP,MAAM,CAAC8W,OAAX,EAAoB;AAChB,QAAI9W,MAAM,CAAC8W,OAAP,CAAeC,IAAnB,EAAyB;AACrB,aAAO/W,MAAM,CAAC8W,OAAP,CAAeC,IAAf,CAAoBxW,GAApB,CAAP;AACH;;AAED,QAAIP,MAAM,CAAC8W,OAAP,CAAeoP,GAAnB,EAAwB;AACpB,aAAOlmB,MAAM,CAAC8W,OAAP,CAAeoP,GAAf,CAAmB3lB,GAAnB,CAAP;AACH;AACJ;AACJ;;AAEM,SAASgyD,oBAAT,GAAgC;AAEnC,MAAIlsD,IAAI,CAACC,SAAL,CAAe,EAAf,MAAuB,IAA3B,EAAiC;AAC7B;AACA,QAAIiB,KAAK,CAACzE,SAAN,CAAgBg9B,MAApB,EAA4B;AACxBnlB,aAAO,mJAAP;AACH,KAFD,MAEO;AACHA,aAAO,8FAAP;AACH;;AAED5D,gDAAI,+BAAJ;AACH;;AAED,MAAI1Q,IAAI,CAACC,SAAL,CAAe,EAAf,MAAuB,IAA3B,EAAiC;AAC7BqU,WAAO,+FAAP;AAEA5D,gDAAI,gCAAJ;AACH;;AAED,MAAI8rB,sCAAY,EAAhB,EAAoB;AAChB9rB,gDAAI,oBAAJ;AACH;;AAED,MAAIiN,8BAAI,MAAM,CAACse,wCAAc,EAA7B,EAAiC;AAC7BvrB,gDAAI,yCAAyC;AACzC7M,aAAO;AADkC,KAAzC,CAAJ;AAEH,GA1BkC,CA4BnC;;;AACA,WAASsoD,GAAT,CAAaC,GAAb,EAAkBC,GAAlB,EAAuBC,IAAvB,EAA6B,CACzB;AACH;;AAED,MAAIH,GAAG,CAAC9I,IAAJ,CAAS;AAAExxB,KAAC,EAAE;AAAL,GAAT,EAAmBj3B,MAAnB,KAA8B,CAAlC,EAAqC;AACjC8V,gDAAI,oCAAJ;AACH;;AAED,MAAI/W,MAAM,CAACyqB,MAAP,IAAiBzqB,MAAM,CAACuqB,MAAP,KAAkBvqB,MAAvC,EAA+C;AAC3C+W,gDAAI,gCAAJ;AACH;;AAED,MAAI/W,MAAM,CAACI,IAAP,IAAeJ,MAAM,CAACI,IAAP,CAAYQ,OAAZ,CAAoB,aAApB,MAAuC,CAA1D,EAA6D;AACzDmW,gDAAI,gCAAJ;AACH;;AAED,MAAMpS,OAAO,GAAG,EAAhB;;AAEA,WAASiuD,aAAT,GAA0C;AACtC,WAAO,IAAP;AACH;;AAED,MAAIA,aAAa,CAAClJ,IAAd,CAAmB/kD,OAAnB,QAAkCA,OAAtC,EAA+C;AAC3CoS,gDAAI,wBAAJ;AACH;;AAED,MAAI/W,MAAM,CAACC,MAAP,IAAiBD,MAAM,CAACE,WAAxB,IAAuCF,MAAM,CAACC,MAAP,KAAkBD,MAAM,CAACE,WAApE,EAAiF;AAC7E6W,gDAAI,4CAAJ;AACH,GAzDkC,CA2DnC;;;AACA,MAAIlU,MAAM,CAAC80B,MAAP,IAAiBtxB,IAAI,CAACC,SAAL,CAAe;AAAE4xB,KAAC,EAAE,CAAL;AAAQC,KAAC,EAAE,CAAX;AAAc2L,KAAC,EAAE;AAAjB,GAAf,MAAyCz9B,IAAI,CAACC,SAAL,CAAe;AAAE4xB,KAAC,EAAE,CAAL;AAAQC,KAAC,EAAE,CAAX;AAAc2L,KAAC,EAAE;AAAjB,GAAf,CAA9D,EAAoG;AAAE;AAClG/sB,gDAAI,wBAAJ;AACH;AACJ,C;;;AC/ED;AACA;AAcA,IAAMy2B,OAAO,GAAG;AACZC,cAAY,EAAE,cADF;AAEZC,QAAM,EAAQ;AAFF,CAAhB;AAKA,IAAMrpB,cAAc,GAAG,EAAvB;AACA,IAAMwuC,OAAO,GAAG,EAAhB;AAEAvuC,yDAAiB,CAAC,YAAM;AACpB,SAAO;AACHwuC,iBAAa,EAAED,OAAO,CAAC/pD,IAAR,CAAa,GAAb;AADZ,GAAP;AAGH,CAJgB,CAAjB;;AAMA,SAAS6kC,YAAT,CAAsBC,UAAtB,EAAwE;AAAA,MAAlDA,UAAkD;AAAlDA,cAAkD,GAA5B,EAA4B;AAAA;;AACpE,MAAMrrC,MAAM,GAAG,EAAf;;AADoE,6CAEjDqrC,UAAU,CAACC,IAAX,GAAkB7mC,KAAlB,CAAwB,IAAxB,CAFiD,8CAElB;AAA7C,QAAM8mC,IAAI,8BAAV;;AAA6C,sBACnBA,IAAI,CAAC9mC,KAAL,CAAW,GAAX,CADmB;AAAA,QACtCxC,IADsC;AAAA,QAC9BqB,MAD8B;;AAE9CtD,UAAM,CAACiC,IAAG,CAACc,WAAJ,EAAD,CAAN,GAA4BO,MAAM,CAACiD,IAAP,CAAY,GAAZ,EAAiB+kC,IAAjB,EAA5B;AACH;;AACD,SAAOtrC,MAAP;AACH;;AAEM,SAAS06B,OAAT,OAAiJ;AAAA,MAA9H9vB,GAA8H,QAA9HA,GAA8H;AAAA,yBAAzHzI,MAAyH;AAAA,MAAzHA,MAAyH,4BAAhH,KAAgH;AAAA,0BAAzG0e,OAAyG;AAAA,MAAzGA,OAAyG,6BAA/F,EAA+F;AAAA,MAA3F2qB,IAA2F,QAA3FA,IAA2F;AAAA,MAArF1qB,IAAqF,QAArFA,IAAqF;AAAA,MAA/EkkB,IAA+E,QAA/EA,IAA+E;AAAA,sBAAzE/5B,GAAyE;AAAA,MAAzEA,GAAyE,yBAAnExN,MAAmE;AAAA,0BAA3D2D,OAA2D;AAAA,MAA3DA,OAA2D,6BAAjD,CAAiD;;AAEpJ,MAAIwJ,GAAG,KAAK,4CAAZ,EAA0D;AACtD;AACA,WAAOrL,yCAAY,CAACL,OAAb,CAAqB,8xDAArB,CAAP;AACH;;AAED,SAAO,IAAIK,yCAAJ,CAAiB,UAACL,OAAD,EAAUiB,MAAV,EAAqB;AAEzC,QAAKqrC,IAAI,IAAI1qB,IAAT,IAAmB0qB,IAAI,IAAIxG,IAA3B,IAAqClkB,IAAI,IAAI0qB,IAAjD,EAAwD;AACpD,YAAM,IAAIprC,KAAJ,sEAAN;AACH;;AAED,QAAMqrC,iBAAiB,GAAG,EAA1B;;AANyC,sCAQvBnrC,MAAM,CAACyB,IAAP,CAAY8e,OAAZ,CARuB,qCAQD;AAAnC,UAAM5e,KAAG,qBAAT;AACDwpC,uBAAiB,CAACxpC,KAAG,CAACc,WAAJ,EAAD,CAAjB,GAAuC8d,OAAO,CAAC5e,KAAD,CAA9C;AACH;;AAED,QAAIupC,IAAJ,EAAU;AACNC,uBAAiB,CAACR,OAAO,CAACC,YAAT,CAAjB,GAA0CO,iBAAiB,CAACR,OAAO,CAACC,YAAT,CAAjB,IAA2C,kBAArF;AACH,KAFD,MAEO,IAAIpqB,IAAI,IAAIkkB,IAAZ,EAAkB;AACrByG,uBAAiB,CAACR,OAAO,CAACC,YAAT,CAAjB,GAA0CO,iBAAiB,CAACR,OAAO,CAACC,YAAT,CAAjB,IAA2C,kDAArF;AACH;;AAEDO,qBAAiB,CAACR,OAAO,CAACE,MAAT,CAAjB,GAAoCM,iBAAiB,CAACR,OAAO,CAACE,MAAT,CAAjB,IAAqC,kBAAzE;;AAlByC,4BAoBbrpB,cApBa,gBAoBG;AAAvC,UAAM4pB,aAAa,GAAI5pB,cAAJ,KAAnB;AACD,UAAM6pB,YAAY,GAAGD,aAAa,EAAlC;;AADwC,wCAGtBprC,MAAM,CAACyB,IAAP,CAAY4pC,YAAZ,CAHsB,qCAGK;AAAxC,YAAM1pC,KAAG,qBAAT;AACDwpC,yBAAiB,CAACxpC,KAAG,CAACc,WAAJ,EAAD,CAAjB,GAAuC4oC,YAAY,CAAC1pC,KAAD,CAAnD;AACH;AACJ;;AAED,QAAM2pC,GAAG,GAAG,IAAI3gC,GAAG,CAACgK,cAAR,EAAZ;AAEA22B,OAAG,CAAC1+B,gBAAJ,CAAqB,MAArB,EAA6B,SAAS2+B,OAAT,GAA0B;AAEnD,UAAMC,eAAe,GAAGV,YAAY,CAAC,KAAKW,qBAAL,EAAD,CAApC;AACA,UAAMykB,MAAM,GAAG1kB,eAAe,CAAC,iBAAD,CAAf,IAAsC,SAArD;;AAEA,UAAIA,eAAe,CAAC,iBAAD,CAAnB,EAAwC;AACpCwkB,eAAO,CAAChyD,IAAR,CAAawtC,eAAe,CAAC,iBAAD,CAA5B;AACH;;AAED,UAAI,CAAC,KAAKhU,MAAV,EAAkB;AACd,eAAO33B,MAAM,CAAC,IAAIC,KAAJ,iBAAyB+B,MAAM,CAACY,WAAP,EAAzB,SAAmD6H,GAAnD,0DAA6G4lD,MAA7G,CAAD,CAAb;AACH;;AAED,UAAMz7C,WAAW,GAAG+2B,eAAe,CAAC,cAAD,CAAnC;AACA,UAAME,MAAM,GAAGj3B,WAAW,KAAKA,WAAW,CAAC1W,OAAZ,CAAoB,kBAApB,MAA4C,CAA5C,IAAiD0W,WAAW,CAAC1W,OAAZ,CAAoB,WAApB,MAAqC,CAA3F,CAA1B;AACA,UAAI6B,GAAG,GAAG,KAAKmV,YAAf;;AAEA,UAAI;AACAnV,WAAG,GAAG4D,IAAI,CAAC05B,KAAL,CAAW,KAAKnoB,YAAhB,CAAN;AACH,OAFD,CAEE,OAAOrX,GAAP,EAAY;AACV,YAAIguC,MAAJ,EAAY;AACR,iBAAO7rC,MAAM,CAAC,IAAIC,KAAJ,oBAA4B,KAAKiV,YAAjC,0BAAoEm7C,MAApE,CAAD,CAAb;AACH;AACJ;;AAED,UAAI,KAAK14B,MAAL,IAAe,GAAnB,EAAwB;AACpB,YAAInwB,OAAO,mBAAkBxF,MAAM,CAACY,WAAP,EAAlB,SAA4C6H,GAA5C,qBAAiE,KAAKktB,MAAtE,gCAAyG04B,MAApH;;AAEA,YAAItwD,GAAJ,EAAS;AACL,cAAI,OAAOA,GAAP,KAAe,QAAf,IAA2BA,GAAG,KAAK,IAAvC,EAA6C;AACzCA,eAAG,GAAG4D,IAAI,CAACC,SAAL,CAAe7D,GAAf,EAAoB,IAApB,EAA0B,CAA1B,CAAN;AACH;;AAEDyH,iBAAO,GAAOA,OAAP,YAAuBzH,GAAvB,OAAP;AACH;;AAED,eAAOC,MAAM,CAAC,IAAIC,KAAJ,CAAUuH,OAAV,CAAD,CAAb;AACH;;AAED,aAAOzI,OAAO,CAACgB,GAAD,CAAd;AAEH,KAzCD,EAyCG,KAzCH;AA2CA0rC,OAAG,CAAC1+B,gBAAJ,CAAqB,OAArB,EAA8B,SAASujD,QAAT,CAAkBvkB,GAAlB,EAAuB;AACjD,UAAMskB,MAAM,GAAG,KAAKE,iBAAL,CAAuB,iBAAvB,CAAf;AACAvwD,YAAM,CAAC,IAAIC,KAAJ,iBAAyB+B,MAAM,CAACY,WAAP,EAAzB,SAAmD6H,GAAnD,iBAAoEshC,GAAG,CAACtuC,QAAJ,EAApE,0BAAyG4yD,MAAzG,CAAD,CAAN;AACH,KAHD,EAGG,KAHH;AAKA5kB,OAAG,CAAC1gC,IAAJ,CAAS/I,MAAT,EAAiByI,GAAjB,EAAsB,IAAtB;;AAEA,SAAK,IAAM3I,KAAX,IAAkBwpC,iBAAlB,EAAqC;AACjC,UAAIA,iBAAiB,CAACpoC,cAAlB,CAAiCpB,KAAjC,CAAJ,EAA2C;AACvC2pC,WAAG,CAAC12B,gBAAJ,CAAqBjT,KAArB,EAA0BwpC,iBAAiB,CAACxpC,KAAD,CAA3C;AACH;AACJ;;AAED,QAAIupC,IAAJ,EAAU;AACNxG,UAAI,GAAGlhC,IAAI,CAACC,SAAL,CAAeynC,IAAf,CAAP;AACH,KAFD,MAEO,IAAI1qB,IAAJ,EAAU;AACbkkB,UAAI,GAAG1kC,MAAM,CAACyB,IAAP,CAAY+e,IAAZ,EAAkB9e,GAAlB,CAAsB,UAAAC,GAAG,EAAI;AAChC,eAAW++B,kBAAkB,CAAC/+B,GAAD,CAA7B,UAAwC6e,IAAI,GAAGkgB,kBAAkB,CAAClgB,IAAI,CAAC7e,GAAD,CAAL,CAArB,GAAmC,EAA/E;AACH,OAFM,EAEJsE,IAFI,CAEC,GAFD,CAAP;AAGH;;AAEDqlC,OAAG,CAACxqC,OAAJ,GAAcA,OAAd;;AACAwqC,OAAG,CAACO,SAAJ,GAAgB,SAASC,UAAT,GAAsB;AAClCjsC,YAAM,CAAC,IAAIC,KAAJ,iBAAyB+B,MAAM,CAACY,WAAP,EAAzB,SAAmD6H,GAAnD,oBAAD,CAAN;AACH,KAFD;;AAIAghC,OAAG,CAACz2B,IAAJ,CAAS6vB,IAAT;AACH,GApGM,CAAP;AAqGH;;AAEDtK,OAAO,CAACr2B,GAAR,GAAc,UAACuG,GAAD,EAAeC,OAAf,EAAgC;AAAA,MAAjBA,OAAiB;AAAjBA,WAAiB,GAAP,EAAO;AAAA;;AAC1C,SAAO6vB,OAAO,CAAC;AAAEv4B,UAAM,EAAE,KAAX;AAAkByI,OAAG,EAAHA;AAAlB,KAA0BC,OAA1B,EAAd;AACH,CAFD;;AAIA6vB,OAAO,CAACi2B,IAAR,GAAe,UAAC/lD,GAAD,EAAekW,IAAf,EAAqBjW,OAArB,EAAsC;AAAA,MAAjBA,OAAiB;AAAjBA,WAAiB,GAAP,EAAO;AAAA;;AACjD,SAAO6vB,OAAO,CAAC;AAAEv4B,UAAM,EAAE,MAAX;AAAmByI,OAAG,EAAHA,GAAnB;AAAwBkW,QAAI,EAAJA;AAAxB,KAAiCjW,OAAjC,EAAd;AACH,CAFD;;AAIA6vB,OAAO,CAACvY,gBAAR,GAA2B,UAAChgB,MAAD,EAAY;AACnC2f,gBAAc,CAACxjB,IAAf,CAAoB6D,MAApB;AACH,CAFD,C;;;;;;AC5JA;AAEA;AAEA;AACA;;AAWA,SAASsnC,qBAAT,CAA+B5rC,IAA/B,EAAuD;AACnD,SAAO6vC,8CAAe,CAAC,UAAA9E,OAAO,EAAI;AAC9BA,WAAO,CAACc,mBAAR,GAA8Bd,OAAO,CAACc,mBAAR,IAA+B,EAA7D;AACAd,WAAO,CAACc,mBAAR,CAA4B7rC,IAA5B,IAAoC+qC,OAAO,CAACc,mBAAR,CAA4B7rC,IAA5B,KAAqC6F,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACE,MAAL,KAAgB,GAA3B,CAAzE;AACA,WAAOglC,OAAO,CAACc,mBAAR,CAA4B7rC,IAA5B,CAAP;AACH,GAJqB,CAAtB;AAKH;;AAED,IAAM8rC,cAAc,GAAG;AACnB9+C,MAAI,EAAM,MADS;AAEnB++C,SAAO,EAAG,SAFS;AAGnBC,UAAQ,EAAE;AAHS,CAAvB;AAMO,SAAS+mB,WAAT,CAAqB/yD,IAArB,EAAoCksC,MAApC,EAAqD8mB,MAArD,EAAyF;AAAA,MAApCA,MAAoC;AAApCA,UAAoC,GAAjB,IAAiB;AAAA;;AAE5F,MAAMlqD,GAAG,GAAGgnC,2CAAY,EAAxB;AAEA,MAAMmjB,UAAU,GAAGD,MAAM,GAAGpnB,qBAAqB,CAAC5rC,IAAD,CAAxB,GAAiC6F,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACE,MAAL,KAAgB,GAA3B,CAA1D;AAEA,MAAIumC,KAAJ;;AAEA,MAAI2mB,UAAU,GAAG/mB,MAAjB,EAAyB;AACrBI,SAAK,GAAGR,cAAc,CAAC9+C,IAAvB;AACH,GAFD,MAEO,IAAKk/C,MAAM,IAAI,EAAX,IAAoBA,MAAM,IAAI+mB,UAAX,IAA2BA,UAAU,GAAI/mB,MAAM,GAAG,CAAzE,EAA+E;AAClFI,SAAK,GAAGR,cAAc,CAACC,OAAvB;AACH,GAFM,MAEA;AACHO,SAAK,GAAGR,cAAc,CAACE,QAAvB;AACH;;AAED,MAAMO,SAAS,GAAOvsC,IAAP,SAAiBssC,KAAhC;AAEA,MAAIE,OAAO,GAAG,KAAd;AACA,MAAIC,MAAM,GAAG,KAAb;;AAEA,MAAI;AACA,QAAI7sC,MAAM,CAACwoC,YAAP,IAAuBxoC,MAAM,CAACwoC,YAAP,CAAoBE,OAApB,CAA4BtoC,IAA5B,CAA3B,EAA8D;AAC1DysC,YAAM,GAAG,IAAT;AACH;AACJ,GAJD,CAIE,OAAOtsC,GAAP,EAAY,CACV;AACH;;AAED,SAAO;AAEHusC,aAFG,uBAEmB;AAClB,aAAQJ,KAAK,KAAKR,cAAc,CAAC9+C,IAA1B,IAAmCy/C,MAA1C;AACH,KAJE;AAMHE,cANG,wBAMoB;AACnB,aAAQL,KAAK,KAAKR,cAAc,CAAC9+C,IAA1B,IAAmC,CAACy/C,MAA3C;AACH,KARE;AAUHG,gBAVG,0BAUqB;AACpB,aAAOL,SAAP;AACH,KAZE;AAcHzmB,OAdG,eAcC6vB,cAdD,EAc0Bt7B,OAd1B,EAc6E;AAAA;;AAAA,UAAnDA,OAAmD;AAAnDA,eAAmD,GAAf,EAAe;AAAA;;AAC5E,UAAI,CAACmyB,OAAL,EAAc;AACV,eAAO,IAAP;AACH;;AAED,UAAMK,UAAU,GAAO7sC,IAAP,SAAiBusC,SAAjB,SAAgCoJ,cAAhD;AACAv7B,kDAAI,CAACyyB,UAAD,6CAAkBxyB,OAAlB;AAA2B64C,cAAM,EAAEpqD;AAAnC,SAAJ;AAEA4d,mDAAK,CAAC,kEACAl4B,6BAAI,CAACC,GAAL,CAASiB,eADV,IAC6BsQ,IAD7B,YAECxR,6BAAI,CAACC,GAAL,CAASkB,cAFV,IAE6B48C,SAF7B,cAGElyB,OAHF,EAAL;AAMA63C,mDAAS;AACT,aAAO,IAAP;AACH,KA9BE;AAgCHplB,YAhCG,oBAgCMzyB,OAhCN,EAgCyD;AAAA,UAAnDA,OAAmD;AAAnDA,eAAmD,GAAf,EAAe;AAAA;;AACxDmyB,aAAO,GAAG,IAAV;AACA,aAAO,KAAK1mB,GAAL,UAAkBzL,OAAlB,CAAP;AACH,KAnCE;AAqCH0yB,eArCG,uBAqCS1yB,OArCT,EAqC4D;AAAA,UAAnDA,OAAmD;AAAnDA,eAAmD,GAAf,EAAe;AAAA;;AAC3D,UAAI,CAACmyB,OAAL,EAAc;AACV,eAAO,IAAP;AACH;;AAED,aAAO,KAAK1mB,GAAL,aAAqBzL,OAArB,CAAP;AACH;AA3CE,GAAP;AA6CH;AAEM,SAAS84C,cAAT,GAAoC;AAEvC,MAAMnuB,KAAK,GAAG77B,6BAAK,CAACvJ,MAAM,CAACgO,QAAP,CAAgB2c,IAAjB,EAAuB,yBAAvB,CAAnB;AACA,MAAM6oC,KAAK,GAAGjqD,6BAAK,CAACvJ,MAAM,CAACgO,QAAP,CAAgB2c,IAAjB,EAAuB,qBAAvB,CAAnB;;AAEA,MAAIya,KAAK,IAAIouB,KAAb,EAAoB;AAChB,WAAOpuB,KAAP;AACH;AACJ,C;;;;;AClHD;AACA;AAEA;AAEA;AAEO,IAAMquB,gBAAgB,GAAGxoD,+BAAO,CAAC,YAA2B;AAE/D,MAAMo9B,OAAO,GAAG9gC,KAAK,CAACzE,SAAN,CAAgB6D,KAAhB,CAAsBtG,IAAtB,CAA2BmM,QAAQ,CAAC87B,oBAAT,CAA8B,QAA9B,CAA3B,CAAhB;;AAF+D,0BAI1CD,OAJ0C,gBAIjC;AAAzB,QAAMhwB,MAAM,GAAIgwB,OAAJ,KAAZ;;AACD,QAAIhwB,MAAM,CAACpB,GAAP,KAAeoB,MAAM,CAACpB,GAAP,CAAW/R,OAAX,CAAmB,UAAnB,EAA+B,EAA/B,EAAmC8B,KAAnC,CAAyC,GAAzC,EAA8C,CAA9C,MAAqDsT,wBAAM,CAACgB,SAA5D,IAAyEjD,MAAM,CAACsxB,YAAP,CAAoB,sBAApB,CAAxF,CAAJ,EAA0I;AACtI,aAAOtxB,MAAP;AACH;;AAED,QAAIA,MAAM,CAACpB,GAAP,IAAeoB,MAAM,CAACpB,GAAP,CAAWrW,OAAX,CAAmB,uBAAnB,MAAgD,CAAC,CAApE,EAAwE;AACpE,aAAOyX,MAAP;AACH;AACJ;;AAED,MAAI7L,QAAQ,CAACwK,aAAb,EAA4B;AAAE;AAC1B6P,iDAAK,kCAAkC;AAAE5P,SAAG,EAAEzK,QAAQ,CAACwK,aAAT,CAAuBC;AAA9B,KAAlC,CAAL,CADwB,CACqD;AAChF;AACJ,CAjBsC,CAAhC;AAmBA,SAASy8C,eAAT,GAAqC;AACxC,SAAOnmD,OAAO,CAACkmD,gBAAgB,EAAjB,CAAd;AACH;AAEM,SAASE,gBAAT,GAAqC;AACxC,MAAIj4C,KAAA,IAAiCg4C,eAAe,EAApD,EAAwD;AACpD,WAAOE,MAAO,GAAG,SAAH,GAAWl4C,GAAzB;AACH,GAFD,MAEO;AACH,WAAOk4C,MAAO,GAAOl4C,SAAP,GAAsDA,SAApE;AACH;AACJ;AAEM,SAASm4C,mBAAT,GAAwC;AAC3C,MAAMx7C,MAAM,GAAGo7C,gBAAgB,EAA/B;;AAEA,MAAIp7C,MAAM,IAAI,OAAOA,MAAM,CAACpB,GAAd,KAAsB,QAApC,EAA8C;AAC1C,QAAIqE,SAAS,GAAGjD,MAAM,CAACpB,GAAvB;;AAEA,QAAIqE,SAAS,CAAC1a,OAAV,CAAkB,8BAAlB,MAAsD,CAA1D,EAA6D;AACzD0a,eAAS,GAAGA,SAAS,CAACpW,OAAV,CAAkB,SAAlB,EAA6B,UAA7B,CAAZ;AACH;;AAED,WAAOoW,SAAP;AACH;;AAED,yDAAsDI,SAAtD,IAAgGk4C,MAAO,GAAG,SAAH,GAAY,EAAnH;AACH;AAEM,SAASE,gBAAT,CAAqC1zD,IAArC,EAAoD0G,GAApD,EAAmE;AAEtE,MAAMuwB,QAAQ,GAAGr3B,MAAM,CAACs1C,MAAP,GACXt1C,MAAM,CAACs1C,MAAP,CAAc0O,eAAd,EADW,GAEXn5B,mDAAS,EAFf;;AAIA,MAAIvQ,wBAAM,CAACuC,eAAX,EAA4B;AAAA,sCACHha,MAAM,CAACyB,IAAP,CAAYgW,wBAAM,CAACuC,eAAnB,CADG,qCACkC;AAArD,UAAMiC,MAAM,qBAAZ;;AACD,UAAIsY,qCAAa,CAACC,QAAD,EAAWvY,MAAX,CAAjB,EAAqC;AACjC,eAAOxE,wBAAM,CAACuC,eAAP,CAAuBiC,MAAvB,EAA+B1e,IAA/B,CAAP;AACH;AACJ;AACJ;;AAED,SAAO0G,GAAP;AACH,C;;ACrED;AACA;AAEA;AAEA;AACA;AACA;AACA;AASO,IAAMitD,aAAa,GAAG9oD,+BAAO,CAAC,UAAC2Q,GAAD,EAA6D;AAAA,MAA5DA,GAA4D;AAA5DA,OAA4D,GAA7CtB,wBAAM,CAACsB,GAAsC;AAAA;;AAC9F,SAAO9Z,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAE1B,QAAIm/B,sCAAY,EAAhB,EAAoB;AAChB,aAAO;AACHmxB,sBAAc,EAAQ,KADnB;AAEHC,4BAAoB,EAAE,aAFnB;AAGHC,yBAAiB,EAAK;AAHnB,OAAP;AAKH;;AAED,QAAMC,YAAqB,GAAG75C,wBAAM,CAAC6G,aAAP,CAAqBvF,GAArB,CAA9B;AACA,QAAMw4C,eAAwB,GAAG95C,wBAAM,CAACoE,aAAP,CAAqB9C,GAArB,CAAjC;AAEA,WAAO9Z,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAC1B,UAAI,CAACk7B,aAAL,EAAa;AACT,cAAM,IAAIj8B,KAAJ,yEAAN;AACH;;AAED,UAAM0xD,YAAY,GAAG5pD,mBAAI,CAAC,MAAD,EAAS;AAAEqU,cAAM,EAAEs1C;AAAV,OAAT,CAAzB;AAEA,aAAOx1B,aAAM,CAACuU,UAAP,CAAkBniC,gCAAS,CAACmjD,YAAD,EAAe;AAAE14C,eAAO,EAAEk4C,gBAAgB;AAA3B,OAAf,CAA3B,EAA4ES,eAA5E,EACF9zD,IADE,CACG;AAAA,eAAM+zD,YAAN;AAAA,OADH,EAEF/zD,IAFE,CAEG;AAAA,YAAG+iB,IAAH,QAAGA,IAAH;AAAA,eAAcA,IAAd;AAAA,OAFH,CAAP;AAGH,KAVM,CAAP;AAWH,GAxBM,CAAP;AAyBH,CA1BmC,CAA7B,C;;ACjBP;AAEA;AAGA;AACA;AACA;CAGA;;AACO,SAASixC,oBAAT,CAAiCnzD,OAAjC,EAAmG;AAAA,MAAlEA,OAAkE;AAAlEA,WAAkE,GAAdm3B,wBAAc;AAAA;;AACtG,SAAO2X,8CAAe,CAAC,UAAA9E,OAAO,EAAI;AAC9BA,WAAO,CAAC+oB,iBAAR,GAA4B/oB,OAAO,CAAC+oB,iBAAR,IAA6B,EAAzD;AACA,WAAO/yD,OAAO,CAACgqC,OAAO,CAAC+oB,iBAAT,CAAd;AACH,GAHqB,CAAtB;AAIH;;AAED,SAASK,oBAAT,CAA8B5uD,MAA9B,EAAiE;AAE7D,MAAI2uD,oBAAoB,CAAC,UAAAJ,iBAAiB;AAAA,WAAIA,iBAAiB,CAACtzD,OAAlB,CAA0B+E,MAA1B,MAAsC,CAAC,CAA3C;AAAA,GAAlB,CAAxB,EAAyF;AACrF,WAAO,IAAP;AACH;;AAED,MAAIgmC,8CAAe,CAAC,UAAAJ,OAAO;AAAA,WAAIA,OAAO,CAACipB,yBAAZ;AAAA,GAAR,CAAnB,EAAmE;AAC/D,WAAO,IAAP;AACH;;AAED,SAAO,KAAP;AACH;;AAGD,SAASC,mBAAT,CAA6B9uD,MAA7B,EAA+D;AAE3D,MAAI2uD,oBAAoB,CAAC,UAAAJ,iBAAiB;AAAA,WAAIA,iBAAiB,CAACtzD,OAAlB,CAA0B+E,MAA1B,MAAsC,CAAC,CAA3C;AAAA,GAAlB,CAAxB,EAAyF;AACrF,WAAO,IAAP;AACH;;AAED,MAAIgmC,8CAAe,CAAC,UAAAJ,OAAO;AAAA,WAAIA,OAAO,CAACipB,yBAAZ;AAAA,GAAR,CAAnB,EAAmE;AAC/D,WAAO,KAAP;AACH;;AAED,QAAM,IAAI7xD,KAAJ,0CAAN;AACH;;AAED,SAAS+xD,4BAAT,GAAsF;AAClF,SAAOjkB,6CAAc,CAAC,UAAAx1B,MAAM,EAAI;AAC5BA,UAAM,CAAC05C,uBAAP,GAAiC15C,MAAM,CAAC05C,uBAAP,IAAkC,EAAnE;AACA,WAAO15C,MAAM,CAAC05C,uBAAd;AACH,GAHoB,CAArB;AAIH;;AAED,SAASC,2BAAT,CAAqCjvD,MAArC,EAAqF;AACjF,MAAM1B,QAAQ,GAAGywD,4BAA4B,EAA7C;AACA,MAAM/zD,OAAO,GAAGsD,QAAQ,CAAC0B,MAAD,CAAR,GAAmB1B,QAAQ,CAAC0B,MAAD,CAAR,IAAoB,IAAI7D,yCAAJ,EAAvD;;AACA,MAAIyyD,oBAAoB,CAAC5uD,MAAD,CAAxB,EAAkC;AAC9BhF,WAAO,CAACc,OAAR,CAAgBgzD,mBAAmB,CAAC9uD,MAAD,CAAnC;AACH;;AACD,SAAOhF,OAAP;AACH;;AAED,SAASk0D,8BAAT,GAA0C;AACtC,MAAM5wD,QAAQ,GAAGywD,4BAA4B,EAA7C;AACA,MAAMR,iBAAiB,GAAGI,oBAAoB,CAAC,UAAAQ,OAAO;AAAA,WAAIA,OAAJ;AAAA,GAAR,CAA9C;;AAFsC,oCAIjBjyD,MAAM,CAACyB,IAAP,CAAYL,QAAZ,CAJiB,qCAIM;AAAvC,QAAM0B,MAAM,qBAAZ;AACD1B,YAAQ,CAAC0B,MAAD,CAAR,CAAiBlE,OAAjB,CAAyByyD,iBAAiB,CAACtzD,OAAlB,CAA0B+E,MAA1B,MAAsC,CAAC,CAAhE;AACH;AACJ;;AAEM,SAASovD,eAAT,CAAyBD,OAAzB,EAAgD;AACnDR,sBAAoB,CAAC,UAAAJ,iBAAiB,EAAI;AAAA,4BACjBY,OADiB,gBACR;AAAzB,UAAMnvD,MAAM,GAAImvD,OAAJ,KAAZ;;AAED,UAAInvD,MAAM,KAAK1a,gCAAO,CAAClD,KAAnB,IAA4B,CAACu5C,kCAAQ,EAAzC,EAA6C;AACzC;AACH;;AACD,UAAI4yB,iBAAiB,CAACtzD,OAAlB,CAA0B+E,MAA1B,MAAsC,CAAC,CAA3C,EAA8C;AAC1CuuD,yBAAiB,CAACrzD,IAAlB,CAAuB8E,MAAvB;AACH;AACJ;;AAEDkvD,kCAA8B;AACjC,GAZmB,CAApB;AAcAlpB,gDAAe,CAAC,UAAAJ,OAAO,EAAI;AACvBA,WAAO,CAACipB,yBAAR,GAAoC,IAApC;AACH,GAFc,CAAf;AAGH;;AAED,SAASQ,QAAT,GAAyC;AACrC,SAAOjB,aAAa,GAAGzzD,IAAhB,CAAqB,gBAA2B;AAAA,QAAxB4zD,iBAAwB,QAAxBA,iBAAwB;AACnDa,mBAAe,CAACb,iBAAiB,IAAI,EAAtB,CAAf;AACH,GAFM,CAAP;AAGH;;AAEM,SAASe,mBAAT,CAA6BtvD,MAA7B,EAA8F;AAAA,MAAjEA,MAAiE;AAAjEA,UAAiE,GAAxC1a,gCAAO,CAACzD,MAAgC;AAAA;;AAEjG,MAAI+sE,oBAAoB,CAAC5uD,MAAD,CAAxB,EAAkC;AAC9B,WAAOivD,2BAA2B,CAACjvD,MAAD,CAAlC;AACH;;AAED,SAAOqvD,QAAQ,GAAG10D,IAAX,CAAgB,YAAM;AACzB,WAAOs0D,2BAA2B,CAACjvD,MAAD,CAAlC;AACH,GAFM,CAAP;AAGH;AAEM,SAASuvD,yBAAT,GAA0D;AAC7D,MAAI,CAACvpB,8CAAe,CAAC,UAAAJ,OAAO;AAAA,WAAIA,OAAO,CAACipB,yBAAZ;AAAA,GAAR,CAApB,EAAoE;AAChE,WAAOQ,QAAQ,EAAf;AACH;;AACD,SAAOlzD,yCAAY,CAACL,OAAb,EAAP;AACH,C;;;;ACjHD;CAIA;;AAKA,SAAS0mC,UAAT,CAAoBt6B,IAApB,EAAiD;AAAA,MAA7BA,IAA6B;AAA7BA,QAA6B,GAAb,EAAa;AAAA;;AAC7C,SAAOA,IAAI,CAAC1N,QAAL,GACF+E,OADE,CACM,IADN,EACY,OADZ,EAEFA,OAFE,CAEM,IAFN,EAEY,MAFZ,EAGFA,OAHE,CAGM,IAHN,EAGY,MAHZ,EAIFA,OAJE,CAIM,IAJN,EAIY,QAJZ,EAKFA,OALE,CAKM,IALN,EAKY,OALZ,EAMFA,OANE,CAMM,KANN,EAMa,QANb,CAAP;AAOH;;AAEM,IAAMiwD,WAAb;AAAA;AAAA;AAKI,uBAAY/0D,IAAZ,EAA2B2Q,KAA3B,EAA8CzC,QAA9C,EAAuE;AAAA,SAJvElO,IAIuE;AAAA,SAHvE2Q,KAGuE;AAAA,SAFvEzC,QAEuE;AACnE,SAAKlO,IAAL,GAAYA,IAAZ;AACA,SAAK2Q,KAAL,GAAaA,KAAb;AACA,SAAKzC,QAAL,GAAgBA,QAAhB;AACH;;AATL;;AAAA,SAWInO,QAXJ,GAWI,oBAAoB;AAChB,iBAAY,KAAKC,IAAjB,IAA0B,KAAK2Q,KAAL,GAAa,GAAb,GAAmB,EAA7C,KAAoD,KAAKA,KAAL,GAAa,KAAKqkD,aAAL,EAAb,GAAoC,EAAxF,UAAgG,KAAKC,gBAAL,EAAhG,UAA8H,KAAKj1D,IAAnI;AACH,GAbL;;AAAA,SAeIg1D,aAfJ,GAeI,yBAAyB;AACrB,QAAMrkD,KAAK,GAAG,KAAKA,KAAnB;;AAEA,QAAI,CAACA,KAAL,EAAY;AACR,aAAO,EAAP;AACH;;AAED,WAAOlO,MAAM,CAACyB,IAAP,CAAYyM,KAAZ,EAAmBzD,MAAnB,CAA0B,UAAA9I,GAAG,EAAI;AACpC,aAAOA,GAAG,KAAK,WAAR,IAAuBuM,KAAvB,IAAgCA,KAAK,CAACvM,GAAD,CAAL,KAAe,KAAtD;AACH,KAFM,EAEJD,GAFI,CAEA,UAAAC,GAAG,EAAI;AACV,UAAIuM,KAAK,IAAIA,KAAK,CAACvM,GAAD,CAAL,KAAe,IAA5B,EAAkC;AAC9B,oBAAW2jC,UAAU,CAAC3jC,GAAD,CAArB;AACH;;AACD,aAAOuM,KAAK,GAAOo3B,UAAU,CAAC3jC,GAAD,CAAjB,WAA6B2jC,UAAU,CAACp3B,KAAK,CAACvM,GAAD,CAAN,CAAvC,UAA0D,EAAtE;AACH,KAPM,EAOJsE,IAPI,CAOC,GAPD,CAAP;AAQH,GA9BL;;AAAA,SAgCIusD,gBAhCJ,GAgCI,4BAA4B;AAExB,QAAI,KAAKtkD,KAAL,IAAc,KAAKA,KAAL,CAAW3B,SAA7B,EAAwC;AACpC,aAAO,KAAK2B,KAAL,CAAW3B,SAAlB;AACH;;AAED,QAAI,CAAC,KAAKd,QAAV,EAAoB;AAChB,aAAO,EAAP;AACH;;AAED,QAAI/L,MAAM,GAAG,EAAb;;AAEA,aAAS+yD,OAAT,CAAiBhnD,QAAjB,EAA2B;AAAA,8BACHA,QADG,gBACO;AAAzB,YAAMrG,KAAK,GAAIqG,QAAJ,KAAX;;AAED,YAAIrG,KAAK,KAAK,IAAV,IAAkBA,KAAK,KAAK1E,SAAhC,EAA2C;AACvC;AACH;;AAED,YAAIgE,KAAK,CAACC,OAAN,CAAcS,KAAd,CAAJ,EAA0B;AACtBqtD,iBAAO,CAACrtD,KAAD,CAAP;AACH,SAFD,MAEO,IAAIA,KAAK,YAAYktD,WAArB,EAAkC;AACrC5yD,gBAAM,IAAI0F,KAAK,CAAC9H,QAAN,EAAV;AACH,SAFM,MAEA;AACHoC,gBAAM,IAAI4lC,UAAU,CAAClgC,KAAD,CAApB;AACH;AACJ;AACJ;;AAEDqtD,WAAO,CAAC,KAAKhnD,QAAN,CAAP;AAEA,WAAO/L,MAAP;AACH,GAhEL;;AAAA;AAAA;AAmEO,IAAMgzD,wBAAb;AAAA;AAAA;AAAA;;AAGI,gCAAYjnD,QAAZ,EAAqC;AAAA,WACjC,wBAAM,EAAN,EAAU,EAAV,EAAcA,QAAd,CADiC;AAEpC;;AALL;;AAAA,UAOInO,QAPJ,GAOI,oBAAoB;AAChB,WAAO,KAAKk1D,gBAAL,EAAP;AACH,GATL;;AAAA;AAAA,EAA0CF,WAA1C;AAYO,SAASK,SAAT,CAAmBp1D,IAAnB,EAAkC2Q,KAAlC,EAA+F;AAAA,oCAAvCzC,QAAuC;AAAvCA,YAAuC;AAAA;;AAClG,SAAO,IAAI6mD,WAAJ,CAAgB/0D,IAAhB,EAAsB2Q,KAAtB,EAA6BzC,QAA7B,CAAP;AACH;AAEM,SAASmnD,SAAT,CAAmBnY,QAAnB,EAAsCoY,SAAtC,EAAwI;AAE3I;AACA,MAAMvhB,KAAK,GAAGxb,gCAAQ,CAAC2kB,QAAD,EAAW,gDAAX,EAA6D,UAAC/zC,KAAD,EAAQrB,IAAR,EAAchG,KAAd,EAAqBuH,IAArB,EAA8B;AAC7G,QAAIvB,IAAJ,EAAU;AACN,UAAI,CAACwtD,SAAS,CAACxtD,IAAD,CAAd,EAAsB;AAClB,cAAM,IAAIvF,KAAJ,2BAAmCuF,IAAnC,CAAN;AACH;;AAED,aAAOwtD,SAAS,CAACxtD,IAAD,CAAT,CAAgBhG,KAAhB,CAAP;AACH,KAND,MAMO,IAAIuH,IAAI,IAAIA,IAAI,CAACokC,IAAL,EAAZ,EAAyB;AAE5B,UAAI,CAAC6nB,SAAS,CAACjsD,IAAf,EAAqB;AACjB,eAAOA,IAAP;AACH;;AAED,UAAK,MAAD,CAASyP,IAAT,CAAczP,IAAd,CAAJ,EAAyB;AACrB,eAAOisD,SAAS,CAACC,KAAV,CAAgBlsD,IAAhB,CAAP;AACH,OAFD,MAEO;AACH,eAAOisD,SAAS,CAACjsD,IAAV,CAAeA,IAAf,CAAP;AACH;AACJ,KAXM,MAWA;AACH,aAAOA,IAAP;AACH;AACJ,GArBqB,CAAtB;AAuBA,SAAO,IAAI8rD,wBAAJ,CAAyBphB,KAAzB,CAAP;AACH,C;;AChID;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACfA;AACA;AAGA;AACA;;AAEA,SAAS5qC,cAAT,CAAetE,GAAf,EAA6BmE,OAA7B,EAAyD;AACrD,MAAMutB,QAAkC,GAAG1xB,GAAG,CAACsE,KAAJ,CAAUH,OAAV,CAA3C;;AACA,MAAIutB,QAAJ,EAAc;AACV,WAAOA,QAAQ,CAAC,CAAD,CAAf;AACH;AACJ;;AAED,IAAIi/B,oBAAJ,C,CAEA;;AAEA,IAAItlB,0CAAc,EAAlB,EAAsB;AAClBjmC,mBAAE,CAAC,0BAAD,EAA6B;AAAErK,UAAM,EAAEA,MAAM,CAACuqB;AAAjB,GAA7B,EAAwD,gBAAiD;AAAA,QAA9ClH,IAA8C,QAA9CA,IAA8C;AACvGuyC,wBAAW,GAAGvyC,IAAI,CAAC3e,MAAnB;AACH,GAFC,CAAF;AAGH,C,CAED;;;AAEO,SAASmxD,wBAAT,CAAkCnxD,MAAlC,EAA0E;AAC7EkxD,sBAAW,GAAGlxD,MAAd;AAEA,SAAO5C,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAC1B,QAAIk7B,aAAM,IAAI,CAAC0R,0CAAc,EAA7B,EAAiC;AAC7B,aAAO1R,aAAM,CAACuU,UAAP,CAAkBniC,gCAAS,CAACsJ,wBAAM,CAAC+H,aAAR,EAAuB;AAAE5G,eAAO,EAAEk4C,gBAAgB;AAA3B,OAAvB,CAA3B,EAAoFr5C,wBAAM,CAACgI,gBAA3F,EAA6GhiB,IAA7G,CAAkH,UAACw1D,UAAD,EAAwC;AAC7J,eAAOp+C,mBAAI,CAACo+C,UAAD,EAAa,0BAAb,EAAyC;AAAEpxD,gBAAM,EAANA;AAAF,SAAzC,EAAqD;AAAEoa,gBAAM,EAAExE,wBAAM,CAACuH;AAAjB,SAArD,CAAJ,CACFvhB,IADE,CACGuK,oBADH,CAAP;AAEH,OAHM,CAAP;AAIH;AACJ,GAPM,CAAP;AAQH;AAED7K,MAAM,CAAC61D,wBAAP,GAAkCA,wBAAlC,C,CAEA;;AAEA71D,MAAM,CAAC+1D,sBAAP,GAAgC,UAACvoD,GAAD,EAAgC;AAC5D,MAAMpG,QAAQ,GAAG0F,WAAW,CAAC,YAAM;AAC/B,QAAI;AACA,UAAMkpD,QAAQ,GAAIxoD,GAAG,CAAChB,QAAJ,CAAa+6B,IAAb,CAAkBn4B,SAAlB,CAA4BxO,OAA5B,CAAoC,oBAApC,MAA8D,CAAC,CAA/D,IACF4M,GAAG,CAAChB,QAAJ,CAAa+6B,IAAb,CAAkBn4B,SAAlB,CAA4BxO,OAA5B,CAAoC,QAApC,MAAkD,CAAC,CADnE;;AAGA,UAAI,CAACo1D,QAAD,IAAaxoD,GAAG,CAACyoD,YAAjB,IAAiCzoD,GAAG,CAAC+e,MAAzC,EAAiD;AAC7C;AACH;;AAED/e,SAAG,CAACyoD,YAAJ,GAAmB,IAAnB;AAEA,UAAMC,kBAAkB,GAAG1oD,GAAG,CAACgK,cAAJ,CAAmB1U,SAAnB,CAA6B4U,IAAxD;;AAEAlK,SAAG,CAACgK,cAAJ,CAAmB1U,SAAnB,CAA6B4U,IAA7B,GAAoC,SAASy+C,0BAAT,GAA6C;AAE7E,YAAI,KAAKC,QAAT,EAAmB;AACf,iBAAOF,kBAAkB,CAACrxD,KAAnB,CAAyB,IAAzB,EAA+BmG,SAA/B,CAAP;AACH;;AAED,aAAKorD,QAAL,GAAgB,IAAhB;AAEA,YAAM1qD,IAAI,GAAG,IAAb;AACA,YAAIiM,MAAM,GAAG,KAAKA,MAAlB;;AAEA,iBAASjN,QAAT,GAA2B;AAEvB,cAAIgB,IAAI,CAACmB,UAAL,KAAoBnB,IAAI,CAAC2qD,IAAzB,IAAiC3qD,IAAI,CAAC2uB,MAAL,KAAgB,GAAjD,IAAwD3uB,IAAI,CAACkM,YAAjE,EAA+E;AAE3E,gBAAI;AACA,kBAAMykB,QAAQ,GAAGh2B,IAAI,CAAC05B,KAAL,CAAWr0B,IAAI,CAACkM,YAAL,CAAkB1S,OAAlB,CAA0B,YAA1B,EAAwC,EAAxC,CAAX,CAAjB;;AAEA,kBAAIm3B,QAAQ,CAACn0B,IAAT,KAAkB,UAAlB,IAAgCm0B,QAAQ,CAAClvB,GAAzC,IAAgDyoD,oBAApD,EAAiE;AAE7D,oBAAMzoD,GAAG,GAAGkvB,QAAQ,CAAClvB,GAArB;AAEAJ,6BAAa,CAAC3F,QAAD,CAAb;AACAoG,mBAAG,CAACO,KAAJ;AAEA6nD,oCAAW,CAAC;AACRU,2BAAS,EAAKnpD,GADN;AAERokD,8BAAY,EAAEhoD,cAAK,CAAC4D,GAAD,EAAM,yBAAN,CAFX;AAGRopD,8BAAY,EAAEhtD,cAAK,CAAC4D,GAAD,EAAM,4BAAN,CAHX;AAIRqpD,yBAAO,EAAOjtD,cAAK,CAAC4D,GAAD,EAAM,qBAAN,CAJX;AAKRspD,2BAAS,EAAKltD,cAAK,CAAC4D,GAAD,EAAM,8BAAN;AALX,iBAAD,CAAX;AAQAyoD,oCAAW,GAAG,IAAd;;AAEA,oBAAIpoD,GAAG,CAAChmB,MAAJ,IAAcgmB,GAAG,CAAChmB,MAAJ,CAAWkvE,QAAzB,IAAqClpD,GAAG,CAAChmB,MAAJ,CAAWkvE,QAAX,CAAoBC,WAAzD,IAAwEnpD,GAAG,CAAChmB,MAAJ,CAAWkvE,QAAX,CAAoBC,WAApB,CAAgCC,cAA5G,EAA4H;AACxH/zD,wBAAM,CAACgF,cAAP,CAAsB2F,GAAG,CAAChmB,MAAJ,CAAWkvE,QAAX,CAAoBC,WAApB,CAAgCC,cAAtD,EAAsE,UAAtE,EAAkF;AAC9E10D,yBAAK,EAAE+D,IAAI,CAACE,MAAL,GAAchG,QAAd;AADuE,mBAAlF;AAGH;;AAED,oBAAIqN,GAAG,CAACqpD,GAAJ,IAAWrpD,GAAG,CAACqpD,GAAJ,CAAQC,GAAnB,IAA0BtpD,GAAG,CAACqpD,GAAJ,CAAQC,GAAR,CAAYh0D,SAAZ,CAAsBi0D,WAApD,EAAiE;AAC7DvpD,qBAAG,CAACqpD,GAAJ,CAAQC,GAAR,CAAYh0D,SAAZ,CAAsBi0D,WAAtB,GAAoClsD,oBAApC;AACH;AACJ;AAEJ,aA/BD,CA+BE,OAAOtK,GAAP,EAAY;AACV;AACH;AACJ;;AAED,cAAIoX,MAAJ,EAAY;AACR,mBAAOA,MAAM,CAAC9S,KAAP,CAAa,IAAb,EAAmBmG,SAAnB,CAAP;AACH;AACJ;;AAED,YAAI,KAAK2M,MAAL,KAAgBjN,QAApB,EAA8B;AAE1B,cAAI;AAEA,mBAAO,KAAKiN,MAAZ;AACA,iBAAKlI,gBAAL,CAAsB,MAAtB,EAA8B/E,QAA9B,EAHA,CAKA;;AACA7H,kBAAM,CAACgF,cAAP,CAAsB,IAAtB,EAA4B,QAA5B,EAAsC;AAClCjB,iBADkC,iBACjB;AACb,uBAAO8D,QAAP;AACH,eAHiC;AAIlCrC,iBAJkC,eAI9BlH,OAJ8B,EAIrB;AACTwW,sBAAM,GAAGxW,OAAT;AACH;AANiC,aAAtC;AASH,WAfD,CAeE,OAAOZ,GAAP,EAAY,CAEV;AACH;AAEJ;;AAED,eAAO21D,kBAAkB,CAACrxD,KAAnB,CAAyB,IAAzB,EAA+BmG,SAA/B,CAAP;AACH,OAjFD;AAmFH,KA/FD,CA+FE,OAAOzK,GAAP,EAAY,CACV;AACH;AACJ,GAnG2B,EAmGzB,GAnGyB,CAA5B;AAoGH,CArGD;;AAwGAP,MAAM,CAACg3D,gBAAP,GAA0Bh3D,MAAM,CAAC+1D,sBAAjC,C;;;;ACnJA;AACA;AAEO,SAASkB,2BAAT,CAAqC7xB,KAArC,EAA8D;AACjE,SAAQA,KAAK,IAAIA,KAAK,CAACxkC,OAAN,CAAc,KAAd,MAAyB,CAAnC,GAAwC,UAAxC,GAAqD,OAA5D;AACH;AAEM,SAASs2D,cAAT,CAAwBC,OAAxB,EAAmD;AACtD,MAAIA,OAAO,CAACv2D,OAAR,CAAgB,KAAhB,MAA2B,CAA/B,EAAkC;AAC9B,WAAO5S,qCAAY,CAACE,QAApB;AACH,GAFD,MAEO,IAAIipE,OAAO,CAACv2D,OAAR,CAAgB,MAAhB,MAA4B,CAA5B,IAAiCu2D,OAAO,CAACv2D,OAAR,CAAgB,QAAhB,MAA8B,CAAnE,EAAsE;AACzE,WAAO5S,qCAAY,CAACG,MAApB;AACH,GAFM,MAEA,IAAIgpE,OAAO,CAACv2D,OAAR,CAAgB,KAAhB,MAA2B,CAA/B,EAAkC;AACrC,WAAO5S,qCAAY,CAACC,QAApB;AACH;;AAED,SAAOD,qCAAY,CAACC,QAApB;AACH;AAEM,SAASmpE,YAAT,CAAsBx7C,GAAtB,EAAoCy7C,aAApC,EAA6DF,OAA7D,EAAwF;AAE3F,MAAMG,WAAW,GAAGJ,cAAc,CAACC,OAAD,CAAlC;;AAEA,MAAIG,WAAW,KAAKtpE,qCAAY,CAACE,QAAjC,EAA2C;AACvC,WAAOosB,wBAAM,CAACwG,WAAP,CAAmBlF,GAAnB,CAAP;AACH;;AAED,MAAIy7C,aAAa,KAAKpsE,gCAAO,CAACrD,IAA1B,IAAkCyvE,aAAa,KAAKpsE,gCAAO,CAAC/C,GAAhE,EAAqE;AACjE,WAAOoyB,wBAAM,CAACsG,SAAP,CAAiBhF,GAAjB,CAAP;AACH;;AAED,MAAIy7C,aAAa,KAAKpsE,gCAAO,CAAChD,KAA1B,IAAmCovE,aAAa,KAAKpsE,gCAAO,CAAC9C,UAA7D,IAA2EkvE,aAAa,KAAKpsE,gCAAO,CAAC7C,OAArG,IACAivE,aAAa,KAAKpsE,gCAAO,CAAC5C,MAD1B,IACoCgvE,aAAa,KAAKpsE,gCAAO,CAAC3C,GAD9D,IACqE+uE,aAAa,KAAKpsE,gCAAO,CAAC1C,MAD/F,IAEA8uE,aAAa,KAAKpsE,gCAAO,CAACzC,GAF1B,IAEiC6uE,aAAa,KAAKpsE,gCAAO,CAACxC,IAF3D,IAEmE4uE,aAAa,KAAKpsE,gCAAO,CAACvC,YAF7F,IAGA2uE,aAAa,KAAKpsE,gCAAO,CAACtC,IAH1B,IAGkC0uE,aAAa,KAAKpsE,gCAAO,CAACrC,OAH5D,IAGuEyuE,aAAa,KAAKpsE,gCAAO,CAACpC,MAHjG,IAIAwuE,aAAa,KAAKpsE,gCAAO,CAACnC,MAJ1B,IAIoCuuE,aAAa,KAAKpsE,gCAAO,CAAClC,IAJlE,EAIwE;AACpE,WAAOuxB,wBAAM,CAACuG,UAAP,CAAkBjF,GAAlB,CAAP;AACH;;AAED,SAAOtB,wBAAM,CAACoG,YAAP,CAAoB9E,GAApB,CAAP;AACH,C;;ACxCD;AAgBO,SAAS27C,oBAAT,CAA8BC,SAA9B,EAAqDC,IAArD,EAAiI;AACpI,SAAO31D,yCAAY,CAACL,OAAb,CAAqBg2D,IAArB,EAA2Bn3D,IAA3B,CAAgC,UAAAo3D,aAAa,EAAI;AACpD,WAAOF,SAAS,CAACz5B,MAAV,CAAiBkL,MAAjB,CAAwB;AAAEyuB,mBAAa,EAAbA;AAAF,KAAxB,CAAP;AACH,GAFM,EAEJp3D,IAFI,CAEC,UAAAy9B,MAAM,EAAI;AACd,WAAOy5B,SAAS,CAACG,cAAV,CAAyB1uB,MAAzB,CAAgC;AAAElL,YAAM,EAANA;AAAF,KAAhC,CAAP;AACH,GAJM,CAAP;AAKH;AAED,IAAM65B,qBAAqB,GAAG;AAC1BC,QAAM,EAAQ,CADY;AAE1BC,cAAY,EAAE,CACV;AACIC,UAAM,EAAE;AACJvhC,WAAK,EAAK,CADN;AAEJwhC,cAAQ,EAAE;AAFN;AADZ,GADU,CAFY;AAU1BxE,OAAK,EAAE;AACHyE,6CAAyC,EAAE,CADxC;AAEHC,oBAAgB,EAA2B;AACvCC,WAAK,EAAW,CADuB;AAEvCC,WAAK,EAAW,CAFuB;AAGvCC,UAAI,EAAY,CAHuB;AAIvCx8C,WAAK,EAAW,CAJuB;AAKvCy8C,iBAAW,EAAK,CALuB;AAMvCC,kBAAY,EAAI,CANuB;AAOvCC,WAAK,EAAW,CAPuB;AAQvCC,oBAAc,EAAE;AARuB;AAFxC,GAVmB;AAuB1BC,qBAAmB,EAAE;AACjBC,cAAU,EAAW,CADJ;AAEjBC,uBAAmB,EAAE,CAFJ;AAGjBC,gBAAY,EAAS;AAHJ;AAvBK,CAA9B;;AA8BA,SAAS1P,kBAAT,CAAkBzjD,GAAlB,EAAuBozD,SAAvB,EAAkC14D,IAAlC,EAAwC;AAEpC,MAAM24D,aAAa,GAAGl2D,MAAM,CAACyB,IAAP,CAAYw0D,SAAZ,CAAtB;;AAFoC,oCAIlBj2D,MAAM,CAACyB,IAAP,CAAYoB,GAAZ,CAJkB,qCAIA;AAA/B,QAAMlB,GAAG,qBAAT;;AAED,QAAIu0D,aAAa,CAACn4D,OAAd,CAAsB4D,GAAtB,MAA+B,CAAC,CAApC,EAAuC;AACnC,YAAM,IAAI7B,KAAJ,0CAAkDvC,IAAlD,SAA4DoE,GAA5D,CAAN;AACH;;AAED,QAAI,OAAOkB,GAAG,CAAClB,GAAD,CAAV,KAAoB,QAAxB,EAAkC;AAC9B2kD,wBAAQ,CAACzjD,GAAG,CAAClB,GAAD,CAAJ,EAAWs0D,SAAS,CAACt0D,GAAD,CAApB,EAA+BpE,IAA/B,SAAyCoE,GAAzC,CAAR;AACH;AACJ;AACJ;;AAEM,SAASw0D,qBAAT,CAA+B7B,OAA/B,EAA0D;AAC7DhO,oBAAQ,CAACgO,OAAD,EAAUS,qBAAV,EAAiC,SAAjC,CAAR;AAEA,MAAMqB,SAAS,GAAG,EAAlB;AAEAA,WAAS,CAACpB,MAAV,GAAqBV,OAAO,CAACU,MAAR,IAAkB,MAAvC;AACAoB,WAAS,CAACC,IAAV,GAAqB,UAArB;AACAD,WAAS,CAAClB,MAAV,GAAqBZ,OAAO,CAACW,YAAR,CAAqB,CAArB,EAAwBC,MAAxB,CAA+BvhC,KAApD;AACAyiC,WAAS,CAACjB,QAAV,GAAqBb,OAAO,CAACW,YAAR,CAAqB,CAArB,EAAwBC,MAAxB,CAA+BC,QAApD;;AAEA,MAAIb,OAAO,CAAC3D,KAAZ,EAAmB;AACf,QAAI2D,OAAO,CAAC3D,KAAR,CAAcyE,yCAAd,KAA4D,QAAhE,EAA0E;AACtEgB,eAAS,CAACE,WAAV,GAAwB,IAAxB;AACH;;AAED,QAAIhC,OAAO,CAAC3D,KAAR,CAAc0E,gBAAlB,EAAoC;AAChCe,eAAS,CAACG,uBAAV,GAAoC;AAChCjB,aAAK,EAAUhB,OAAO,CAAC3D,KAAR,CAAc0E,gBAAd,CAA+BC,KADd;AAEhCC,aAAK,EAAUjB,OAAO,CAAC3D,KAAR,CAAc0E,gBAAd,CAA+BE,KAFd;AAGhCC,YAAI,EAAWlB,OAAO,CAAC3D,KAAR,CAAc0E,gBAAd,CAA+BG,IAHd;AAIhCx8C,aAAK,EAAUs7C,OAAO,CAAC3D,KAAR,CAAc0E,gBAAd,CAA+Br8C,KAJd;AAKhCw9C,kBAAU,EAAKlC,OAAO,CAAC3D,KAAR,CAAc0E,gBAAd,CAA+BI,WALd;AAMhCgB,mBAAW,EAAInC,OAAO,CAAC3D,KAAR,CAAc0E,gBAAd,CAA+BK,YANd;AAOhCC,aAAK,EAAUrB,OAAO,CAAC3D,KAAR,CAAc0E,gBAAd,CAA+BM,KAPd;AAQhCe,qBAAa,EAAEpC,OAAO,CAAC3D,KAAR,CAAc0E,gBAAd,CAA+BO;AARd,OAApC;AAUH;AACJ;;AAED,MAAItB,OAAO,CAACuB,mBAAZ,EAAiC;AAC7BO,aAAS,CAACh/C,WAAV,GAA4Bk9C,OAAO,CAACuB,mBAAR,CAA4BC,UAAxD;AACAM,aAAS,CAACO,eAAV,GAA4BrC,OAAO,CAACuB,mBAAR,CAA4BG,YAAxD;;AAEA,QAAI1B,OAAO,CAACuB,mBAAZ,EAAiC;AAC7B,UAAIvB,OAAO,CAACuB,mBAAR,CAA4BE,mBAA5B,KAAoD,aAAxD,EAAuE;AACnEK,iBAAS,CAACQ,qBAAV,GAAkC,KAAlC;AACH,OAFD,MAEO,IAAItC,OAAO,CAACuB,mBAAR,CAA4BE,mBAA5B,KAAoD,eAAxD,EAAyE;AAC5EK,iBAAS,CAACQ,qBAAV,GAAoC,IAApC;AACAR,iBAAS,CAACS,uBAAV,GAAoC,IAApC;AACH,OAHM,MAGA,IAAIvC,OAAO,CAACuB,mBAAR,CAA4BE,mBAA5B,KAAoD,sBAAxD,EAAgF;AACnFK,iBAAS,CAACQ,qBAAV,GAAoC,IAApC;AACAR,iBAAS,CAACS,uBAAV,GAAoC,KAApC;AACH;AACJ;AACJ;;AAED,SAAOT,SAAP;AACH,C;;ACrHD;CAEA,iC;;ACHA;AAEA,IAAMU,sBAAsB,8lEAA5B;AA6FO,SAASC,iBAAT,OAA6E;AAAA,MAAhDnhD,MAAgD,QAAhDA,MAAgD;AAEhF,SACI,qBACI,qBACI,+BADJ,EAEI;AAAM,QAAI,EAAC,UAAX;AAAsB,WAAO,EAAC;AAA9B,IAFJ,CADJ,EAKI,qBACI;AAAK,SAAK,EAAC;AAAX,KACI,sBACMkhD,sBADN,CADJ,EAKI;AAAK,SAAK,EAAC;AAAX,KACI;AAAG,SAAK,EAAC;AAAT,IADJ,EAEI;AAAG,SAAK,EAAC;AAAT,IAFJ,CALJ,CADJ,CALJ,CADJ;AAoBH,C;;;;ACrHD;AAEA;AACA;AAEA,IAAME,eAAe,4CACfrwE,0CAAiB,CAACF,KADH,IACY;AACzBwwE,SAAO,EAAI,SADc;AAEzBC,WAAS,EAAE;AAFc,CADZ,mBAKfvwE,0CAAiB,CAACC,GALH,IAKU;AACvBqwE,SAAO,EAAI,SADY;AAEvBC,WAAS,EAAE;AAFY,CALV,mBASfvwE,0CAAiB,CAACJ,KATH,IASY;AACzB0wE,SAAO,EAAI,SADc;AAEzBC,WAAS,EAAE;AAFc,CATZ,mBAArB;AAeO,SAASC,OAAT,OAAkG;AAAA,MAA/EC,SAA+E,QAA/EA,SAA+E;;AAErG,MAAI,CAACJ,eAAe,CAACI,SAAD,CAApB,EAAiC;AAC7B,UAAM,IAAIt3D,KAAJ,SAAiBs3D,SAAjB,yBAAN;AACH;;AAJoG,8BAMtEJ,eAAe,CAACI,SAAD,CANuD;AAAA,MAM7FH,OAN6F,yBAM7FA,OAN6F;AAAA,MAMpFC,SANoF,yBAMpFA,SANoF;AAQrG,SACI;AAAK,SAAK,EAAC,4BAAX;AAAwC,WAAO,EAAC,KAAhD;AAAsD,WAAO,EAAC,YAA9D;AAA2E,UAAM,EAAC,IAAlF;AAAuF,SAAK,EAAC,KAA7F;AAAmG,uBAAmB,EAAC;AAAvH,KACI;AAAG,aAAS,EAAC;AAAb,KACI;AAAG,aAAS,EAAC;AAAb,KACI;AAAM,aAAS,EAAC,2DAAhB;AAA4E,KAAC,EAAC,y+LAA9E;AAAwjM,QAAI,EAAGD;AAA/jM,IADJ,EAEI;AAAM,KAAC,EAAC,4HAAR;AAAqI,QAAI,EAAGA;AAA5I,IAFJ,EAGI;AAAM,KAAC,EAAC,6HAAR;AAAsI,QAAI,EAAGA;AAA7I,IAHJ,EAII;AAAM,aAAS,EAAC,2DAAhB;AAA4E,KAAC,EAAC,iqGAA9E;AAAgvG,QAAI,EAAGC;AAAvvG,IAJJ,EAKI;AAAG,aAAS,EAAC;AAAb,KACI;AAAM,KAAC,EAAC,iSAAR;AAA0S,QAAI,EAAGA;AAAjT,IADJ,CALJ,CADJ,CADJ,CADJ;AAeH,C;;;;AC3CD;AAEA;AACA;AAEA,IAAMG,kBAAkB,kDAClB1wE,0CAAiB,CAACF,KADA,IACS;AACzBwwE,SAAO,EAAI,SADc;AAEzBC,WAAS,EAAE;AAFc,CADT,sBAKlBvwE,0CAAiB,CAACC,GALA,IAKO;AACvBqwE,SAAO,EAAI,SADY;AAEvBC,WAAS,EAAE;AAFY,CALP,sBASlBvwE,0CAAiB,CAACJ,KATA,IASS;AACzB0wE,SAAO,EAAI,SADc;AAEzBC,WAAS,EAAE;AAFc,CATT,sBAAxB;AAeO,SAASI,UAAT,OAAqG;AAAA,MAA/EF,SAA+E,QAA/EA,SAA+E;;AAExG,MAAI,CAACC,kBAAkB,CAACD,SAAD,CAAvB,EAAoC;AAChC,UAAM,IAAIt3D,KAAJ,SAAiBs3D,SAAjB,4BAAN;AACH;;AAJuG,8BAMzEC,kBAAkB,CAACD,SAAD,CANuD;AAAA,MAMhGH,OANgG,yBAMhGA,OANgG;AAAA,MAMvFC,SANuF,yBAMvFA,SANuF;AAQxG,SACI;AAAK,SAAK,EAAC,OAAX;AAAmB,UAAM,EAAC,MAA1B;AAAiC,WAAO,EAAC,YAAzC;AAAsD,WAAO,EAAC,KAA9D;AAAoE,SAAK,EAAC;AAA1E,KACI;AAAG,UAAM,EAAC,MAAV;AAAiB,oBAAa,GAA9B;AAAkC,QAAI,EAAC,MAAvC;AAA8C,iBAAU;AAAxD,KACI;AAAG,aAAS,EAAC;AAAb,KACI;AAAG,aAAS,EAAC;AAAb,KACI;AAAG,oBAAa;AAAhB,KACI;AAAG,QAAI,EAAC,cAAR;AAAuB,iBAAU,SAAjC;AAA2C,QAAI,EAAGD;AAAlD,KACI;AAAM,KAAC,EAAC,GAAR;AAAY,KAAC,EAAC,GAAd;AAAkB,SAAK,EAAC,KAAxB;AAA8B,UAAM,EAAC;AAArC,IADJ,CADJ,EAII;AAAG,aAAS,EAAC,gCAAb;AAA8C,iBAAU,SAAxD;AAAkE,QAAI,EAAGC;AAAzE,KACI;AAAM,KAAC,EAAC;AAAR,IADJ,EAEI;AAAM,KAAC,EAAC;AAAR,IAFJ,EAGI;AAAM,KAAC,EAAC;AAAR,IAHJ,EAII;AAAM,KAAC,EAAC;AAAR,IAJJ,EAKI;AAAM,KAAC,EAAC;AAAR,IALJ,EAMI;AAAM,KAAC,EAAC;AAAR,IANJ,CAJJ,CADJ,EAcI;AAAM,KAAC,EAAC,isEAAR;AAA0sE,QAAI,EAAGA;AAAjtE,IAdJ,CADJ,CADJ,CADJ,CADJ;AAwBH,C;;;;ACpDD;AAEA;AACA;AAEA,IAAMK,iBAAiB,gDACjB5wE,0CAAiB,CAACF,KADD,IACU;AACzBwwE,SAAO,EAAI,SADc;AAEzBC,WAAS,EAAE,SAFc;AAGzBM,UAAQ,EAAG;AAHc,CADV,qBAMjB7wE,0CAAiB,CAACC,GAND,IAMQ;AACvBqwE,SAAO,EAAI,SADY;AAEvBC,WAAS,EAAE,SAFY;AAGvBM,UAAQ,EAAG;AAHY,CANR,qBAWjB7wE,0CAAiB,CAACJ,KAXD,IAWU;AACzB0wE,SAAO,EAAK,SADa;AAEzBC,WAAS,EAAG,SAFa;AAGzBM,UAAQ,EAAI;AAHa,CAXV,qBAAvB;AAkBO,SAASC,SAAT,OAAoG;AAAA,MAA/EL,SAA+E,QAA/EA,SAA+E;;AAEvG,MAAI,CAACG,iBAAiB,CAACH,SAAD,CAAtB,EAAmC;AAC/B,UAAM,IAAIt3D,KAAJ,SAAiBs3D,SAAjB,2BAAN;AACH;;AAJsG,8BAM9DG,iBAAiB,CAACH,SAAD,CAN6C;AAAA,MAM/FH,OAN+F,yBAM/FA,OAN+F;AAAA,MAMtFC,SANsF,yBAMtFA,SANsF;AAAA,MAM3EM,QAN2E,yBAM3EA,QAN2E;AAQvG,SACI;AAAK,SAAK,EAAC,IAAX;AAAgB,UAAM,EAAC,IAAvB;AAA4B,WAAO,EAAC,WAApC;AAAgD,uBAAmB,EAAC,eAApE;AAAoF,SAAK,EAAC;AAA1F,KACI;AAAS,QAAI,EAAGP,OAAhB;AAA0B,UAAM,EAAC;AAAjC,IADJ,EAEI;AAAG,aAAS,EAAC;AAAb,KACI;AAAM,KAAC,EAAC,iSAAR;AAA0S,QAAI,EAAGA;AAAjT,IADJ,EAEI,qBACI;AAAM,QAAI,EAAGC;AAAb,KACI;AAAS,UAAM,EAAC,yEAAhB;AAA0F,aAAS,EAAC;AAApG,IADJ,CADJ,EAII,oBAJJ,EAKI;AAAM,KAAC,EAAC,qwBAAR;AAA8wB,QAAI,EAAGD;AAArxB,IALJ,CAFJ,EASI;AAAM,KAAC,EAAC,kRAAR;AAA2R,QAAI,EAAGO;AAAlS,IATJ,CAFJ,EAaI;AAAG,aAAS,EAAC,wDAAb;AAAsE,QAAI,EAAGN;AAA7E,KACI;AAAM,KAAC,EAAC;AAAR,IADJ,EAEI;AAAM,KAAC,EAAC;AAAR,IAFJ,EAGI;AAAM,KAAC,EAAC;AAAR,IAHJ,EAII;AAAS,UAAM,EAAC;AAAhB,IAJJ,EAKI;AAAM,KAAC,EAAC;AAAR,IALJ,EAMI;AAAM,KAAC,EAAC;AAAR,IANJ,EAOI;AAAM,KAAC,EAAC;AAAR,IAPJ,EAQI;AAAM,KAAC,EAAC;AAAR,IARJ,EASI;AAAS,UAAM,EAAC;AAAhB,IATJ,EAUI;AAAM,KAAC,EAAC;AAAR,IAVJ,CAbJ,CADJ;AA4BH,C;;;;AC3DD;AAEA;AACA;AAEA,IAAMQ,mBAAmB,oDACnB/wE,0CAAiB,CAACF,KADC,IACQ;AACzBwwE,SAAO,EAAI,SADc;AAEzBC,WAAS,EAAE,SAFc;AAGzBM,UAAQ,EAAG;AAHc,CADR,uBAMnB7wE,0CAAiB,CAACC,GANC,IAMM;AACvBqwE,SAAO,EAAI,SADY;AAEvBC,WAAS,EAAE,SAFY;AAGvBM,UAAQ,EAAG;AAHY,CANN,uBAWnB7wE,0CAAiB,CAACJ,KAXC,IAWQ;AACzB0wE,SAAO,EAAK,SADa;AAEzBC,WAAS,EAAG,SAFa;AAGzBM,UAAQ,EAAI;AAHa,CAXR,uBAAzB;AAkBO,SAASG,WAAT,OAAsG;AAAA,MAA/EP,SAA+E,QAA/EA,SAA+E;;AAEzG,MAAI,CAACM,mBAAmB,CAACN,SAAD,CAAxB,EAAqC;AACjC,UAAM,IAAIt3D,KAAJ,SAAiBs3D,SAAjB,6BAAN;AACH;;AAJwG,8BAMhEM,mBAAmB,CAACN,SAAD,CAN6C;AAAA,MAMjGH,OANiG,yBAMjGA,OANiG;AAAA,MAMxFC,SANwF,yBAMxFA,SANwF;AAAA,MAM7EM,QAN6E,yBAM7EA,QAN6E;AAQzG,SACI;AAAK,SAAK,EAAC,MAAX;AAAkB,UAAM,EAAC,MAAzB;AAAgC,WAAO,EAAC,WAAxC;AAAoD,WAAO,EAAC,KAA5D;AAAkE,SAAK,EAAC;AAAxE,KACI;AAAG,UAAM,EAAC,MAAV;AAAiB,oBAAa,GAA9B;AAAkC,QAAI,EAAC,MAAvC;AAA8C,iBAAU,SAAxD;AAAkE,aAAS,EAAC;AAA5E,KACI;AAAG,aAAS,EAAC;AAAb,KACI;AAAG,aAAS,EAAC;AAAb,KACI;AAAM,QAAI,EAAGP;AAAb,KACI;AAAS,UAAM,EAAC,yEAAhB;AAA0F,aAAS,EAAC;AAApG,IADJ,CADJ,EAII;AAAM,KAAC,EAAC,oVAAR;AAA6V,QAAI,EAAGC;AAApW,IAJJ,CADJ,EAOI;AAAM,KAAC,EAAC,0PAAR;AAAmQ,QAAI,EAAGD;AAA1Q,IAPJ,EAQI;AAAM,KAAC,EAAC,8+BAAR;AAAu/B,QAAI,EAAGO;AAA9/B,IARJ,EASI;AAAM,QAAI,EAAGP;AAAb,KACI;AAAS,UAAM,EAAC,yEAAhB;AAA0F,aAAS,EAAC;AAApG,IADJ,CATJ,EAYI;AAAM,KAAC,EAAC,8NAAR;AAAuO,MAAE,EAAC,QAA1O;AAAmP,QAAI,EAAGO;AAA1P,IAZJ,EAaI;AAAM,KAAC,EAAC,ocAAR;AAA6c,QAAI,EAAGA;AAApd,IAbJ,EAcI;AAAM,KAAC,EAAC,kkBAAR;AAA2kB,QAAI,EAAGA;AAAllB,IAdJ,EAeI;AAAM,KAAC,EAAC,8tBAAR;AAAuuB,MAAE,EAAC,SAA1uB;AAAovB,QAAI,EAAGP,OAA3vB;AAAqwB,QAAI,EAAC;AAA1wB,IAfJ,EAgBI;AAAM,KAAC,EAAC,8iCAAR;AAAujC,QAAI,EAAGA;AAA9jC,IAhBJ,EAiBI;AAAM,KAAC,EAAC,sdAAR;AAA+d,QAAI,EAAGA;AAAte,IAjBJ,CADJ,CADJ,CADJ;AAyBH,C;;;;ACxDD;AAEA;AACA;AAEA,IAAMW,eAAe,4CACfjxE,0CAAiB,CAACF,KADH,IACY;AACzBwwE,SAAO,EAAI,SADc;AAEzBC,WAAS,EAAE,SAFc;AAGzBM,UAAQ,EAAG;AAHc,CADZ,mBAMf7wE,0CAAiB,CAACC,GANH,IAMU;AACvBqwE,SAAO,EAAI,SADY;AAEvBC,WAAS,EAAE,SAFY;AAGvBM,UAAQ,EAAG;AAHY,CANV,mBAWf7wE,0CAAiB,CAACJ,KAXH,IAWY;AACzB0wE,SAAO,EAAK,SADa;AAEzBC,WAAS,EAAG,SAFa;AAGzBM,UAAQ,EAAI;AAHa,CAXZ,mBAArB;AAkBO,SAASK,OAAT,OAAkG;AAAA,MAA/ET,SAA+E,QAA/EA,SAA+E;;AAErG,MAAI,CAACQ,eAAe,CAACR,SAAD,CAApB,EAAiC;AAC7B,UAAM,IAAIt3D,KAAJ,SAAiBs3D,SAAjB,yBAAN;AACH;;AAJoG,8BAM5DQ,eAAe,CAACR,SAAD,CAN6C;AAAA,MAM7FH,OAN6F,yBAM7FA,OAN6F;AAAA,MAMpFC,SANoF,yBAMpFA,SANoF;AAAA,MAMzEM,QANyE,yBAMzEA,QANyE;AAQrG,SACI;AAAK,SAAK,EAAC,MAAX;AAAkB,UAAM,EAAC,MAAzB;AAAgC,WAAO,EAAC,WAAxC;AAAoD,WAAO,EAAC,KAA5D;AAAkE,SAAK,EAAC;AAAxE,KACI;AAAG,UAAM,EAAC,MAAV;AAAiB,oBAAa,GAA9B;AAAkC,QAAI,EAAC,MAAvC;AAA8C,iBAAU,SAAxD;AAAkE,aAAS,EAAC;AAA5E,KACI;AAAG,aAAS,EAAC;AAAb,KACI;AAAG,aAAS,EAAC;AAAb,KACI;AAAM,KAAC,EAAC,gxBAAR;AAAyxB,QAAI,EAAGP;AAAhyB,IADJ,EAEI;AAAM,KAAC,EAAC,kmBAAR;AAA2mB,QAAI,EAAGA;AAAlnB,IAFJ,EAGI;AAAG,aAAS,EAAC;AAAb,KACI;AAAM,QAAI,EAAGC;AAAb,KACI;AAAS,UAAM,EAAC,2EAAhB;AAA4F,aAAS,EAAC;AAAtG,IADJ,CADJ,EAII;AAAM,KAAC,EAAC,44BAAR;AAAq5B,QAAI,EAAGM;AAA55B,IAJJ,CAHJ,EASI;AAAM,KAAC,EAAC,kLAAR;AAA2L,QAAI,EAAGA;AAAlM,IATJ,EAUI;AAAM,KAAC,EAAC,uvBAAR;AAAgwB,QAAI,EAAGA;AAAvwB,IAVJ,EAWI;AAAM,KAAC,EAAC,6+BAAR;AAAs/B,QAAI,EAAGA;AAA7/B,IAXJ,EAYI;AAAM,KAAC,EAAC,yrBAAR;AAAksB,QAAI,EAAGA;AAAzsB,IAZJ,EAaI;AAAM,KAAC,EAAC,woBAAR;AAAipB,MAAE,EAAC,SAAppB;AAA8pB,QAAI,EAAGA;AAArqB,IAbJ,EAcI;AAAM,KAAC,EAAC,4aAAR;AAAqb,QAAI,EAAGA;AAA5b,IAdJ,EAeI;AAAS,QAAI,EAAGA,QAAhB;AAA2B,UAAM,EAAC;AAAlC,IAfJ,EAgBI;AAAM,KAAC,EAAC,yoBAAR;AAAkpB,QAAI,EAAGA;AAAzpB,IAhBJ,EAiBI;AAAM,KAAC,EAAC,iZAAR;AAA0Z,QAAI,EAAGA;AAAja,IAjBJ,EAkBI;AAAM,KAAC,EAAC,k2BAAR;AAA22B,QAAI,EAAGA;AAAl3B,IAlBJ,EAmBI;AAAM,KAAC,EAAC,0dAAR;AAAoe,QAAI,EAAGA;AAA3e,IAnBJ,EAoBI;AAAM,KAAC,EAAC,0dAAR;AAAoe,QAAI,EAAGA;AAA3e,IApBJ,EAqBI;AAAG,aAAS,EAAC;AAAb,KACI;AAAM,QAAI,EAAGN;AAAb,KACI;AAAS,UAAM,EAAC,iGAAhB;AAAkH,aAAS,EAAC;AAA5H,IADJ,CADJ,EAII;AAAM,KAAC,EAAC,45BAAR;AAAq6B,QAAI,EAAGM;AAA56B,IAJJ,CArBJ,CADJ,CADJ,CADJ,CADJ;AAoCH,C;;;;ACnED;AAEA;AACA;AAEA,IAAMM,kBAAkB,kDAClBnxE,0CAAiB,CAACF,KADA,IACS;AACzBwwE,SAAO,EAAI,SADc;AAEzBC,WAAS,EAAE,SAFc;AAGzBM,UAAQ,EAAG;AAHc,CADT,sBAMlB7wE,0CAAiB,CAACC,GANA,IAMO;AACvBqwE,SAAO,EAAI,SADY;AAEvBC,WAAS,EAAE,SAFY;AAGvBM,UAAQ,EAAG;AAHY,CANP,sBAWlB7wE,0CAAiB,CAACJ,KAXA,IAWS;AACzB0wE,SAAO,EAAK,SADa;AAEzBC,WAAS,EAAG,SAFa;AAGzBM,UAAQ,EAAI;AAHa,CAXT,sBAAxB;AAkBO,SAASO,UAAT,OAAqG;AAAA,MAA/EX,SAA+E,QAA/EA,SAA+E;;AAExG,MAAI,CAACU,kBAAkB,CAACV,SAAD,CAAvB,EAAoC;AAChC,UAAM,IAAIt3D,KAAJ,SAAiBs3D,SAAjB,4BAAN;AACH;;AAJuG,8BAM/DU,kBAAkB,CAACV,SAAD,CAN6C;AAAA,MAMhGH,OANgG,yBAMhGA,OANgG;AAAA,MAMvFC,SANuF,yBAMvFA,SANuF;AAAA,MAM5EM,QAN4E,yBAM5EA,QAN4E;AAQxG,SACI;AAAK,SAAK,EAAC,MAAX;AAAkB,UAAM,EAAC,MAAzB;AAAgC,WAAO,EAAC,WAAxC;AAAoD,WAAO,EAAC,KAA5D;AAAkE,SAAK,EAAC;AAAxE,KACI;AAAG,UAAM,EAAC,MAAV;AAAiB,oBAAa,GAA9B;AAAkC,QAAI,EAAC,MAAvC;AAA8C,iBAAU,SAAxD;AAAkE,aAAS,EAAC;AAA5E,KACI;AAAG,aAAS,EAAC;AAAb,KACI;AAAG,aAAS,EAAC;AAAb,KACI;AAAM,KAAC,EAAC,+1BAAR;AAAw2B,MAAE,EAAC,QAA32B;AAAo3B,QAAI,EAAGP;AAA33B,IADJ,EAEI;AAAM,KAAC,EAAC,suBAAR;AAA+uB,QAAI,EAAGA;AAAtvB,IAFJ,EAGI;AAAM,KAAC,EAAC,6vBAAR;AAAswB,QAAI,EAAGA;AAA7wB,IAHJ,EAII;AAAM,KAAC,EAAC,iyBAAR;AAA0yB,QAAI,EAAGC;AAAjzB,IAJJ,EAKI;AAAM,KAAC,EAAC,w+BAAR;AAAi/B,QAAI,EAAGA;AAAx/B,IALJ,EAMI,qBACI;AAAM,QAAI,EAAGM;AAAb,KACI;AAAS,UAAM,EAAC,mFAAhB;AAAoG,aAAS,EAAC;AAA9G,IADJ,CADJ,EAII,oBAJJ,EAKI;AAAM,KAAC,EAAC,0sBAAR;AAAmtB,QAAI,EAAGN;AAA1tB,IALJ,CANJ,EAaI;AAAM,KAAC,EAAC,+4BAAR;AAAw5B,QAAI,EAAGA;AAA/5B,IAbJ,CADJ,CADJ,CADJ,CADJ;AAuBH,C;;;;ACtDD;AAEA;AACA;AAEA,IAAMc,sBAAsB,sDACtBrxE,0CAAiB,CAACF,KADI,IACK;AACzBwwE,SAAO,EAAI,SADc;AAEzBC,WAAS,EAAE;AAFc,CADL,wBAKtBvwE,0CAAiB,CAACC,GALI,IAKG;AACvBqwE,SAAO,EAAI,SADY;AAEvBC,WAAS,EAAE;AAFY,CALH,wBAStBvwE,0CAAiB,CAACJ,KATI,IASK;AACzB0wE,SAAO,EAAK,SADa;AAEzBC,WAAS,EAAG;AAFa,CATL,wBAA5B;AAeO,SAASe,cAAT,OAAyG;AAAA,MAA/Eb,SAA+E,QAA/EA,SAA+E;;AAE5G,MAAI,CAACY,sBAAsB,CAACZ,SAAD,CAA3B,EAAwC;AACpC,UAAM,IAAIt3D,KAAJ,SAAiBs3D,SAAjB,gCAAN;AACH;;AAJ2G,+BAM7EY,sBAAsB,CAACZ,SAAD,CANuD;AAAA,MAMpGH,OANoG,0BAMpGA,OANoG;AAAA,MAM3FC,SAN2F,0BAM3FA,SAN2F;AAQ5G,SACI;AAAK,WAAO,EAAC,KAAb;AAAmB,MAAE,EAAC,SAAtB;AAAgC,KAAC,EAAC,KAAlC;AAAwC,KAAC,EAAC,KAA1C;AAAgD,SAAK,EAAC,OAAtD;AAA8D,UAAM,EAAC,MAArE;AAA4E,WAAO,EAAC,4CAApF;AAAiI,SAAK,EAAC,wCAAvI;AAAgL,SAAK,EAAC;AAAtL,KACI;AAAG,aAAS,EAAC;AAAb,KACI,qBACI;AAAM,QAAI,EAAGD,OAAb;AAAuB,KAAC,EAAC;AAAzB,IADJ,EAEI;AAAM,QAAI,EAAGC,SAAb;AAAyB,KAAC,EAAC;AAA3B,IAFJ,CADJ,EAKI;AAAM,QAAI,EAAGD,OAAb;AAAuB,KAAC,EAAC;AAAzB,IALJ,CADJ,CADJ;AAWH,C;;;;ACvCD;AAEA;AACA;AAEA,IAAMiB,gBAAgB,8CAChBvxE,0CAAiB,CAACiD,OADF,IACa;AAC3BqtE,SAAO,EAAK,SADe;AAE3BC,WAAS,EAAG,SAFe;AAG3BM,UAAQ,EAAI,SAHe;AAI3BW,YAAU,EAAE;AAJe,CADb,oBAOhBxxE,0CAAiB,CAACF,KAPF,IAOW;AACzBwwE,SAAO,EAAK,SADa;AAEzBC,WAAS,EAAG,SAFa;AAGzBM,UAAQ,EAAI,SAHa;AAIzBW,YAAU,EAAE;AAJa,CAPX,oBAahBxxE,0CAAiB,CAACJ,KAbF,IAaW;AACzB0wE,SAAO,EAAK,SADa;AAEzBC,WAAS,EAAG,SAFa;AAGzBM,UAAQ,EAAI,SAHa;AAIzBW,YAAU,EAAE;AAJa,CAbX,oBAAtB;AAqBO,SAASC,QAAT,OAAmG;AAAA,MAA/EhB,SAA+E,QAA/EA,SAA+E;;AAEtG,MAAI,CAACc,gBAAgB,CAACd,SAAD,CAArB,EAAkC;AAC9B,UAAM,IAAIt3D,KAAJ,SAAiBs3D,SAAjB,0BAAN;AACH;;AAJqG,8BAMjDc,gBAAgB,CAACd,SAAD,CANiC;AAAA,MAM9FH,OAN8F,yBAM9FA,OAN8F;AAAA,MAMrFC,SANqF,yBAMrFA,SANqF;AAAA,MAM1EM,QAN0E,yBAM1EA,QAN0E;AAAA,MAMhEW,UANgE,yBAMhEA,UANgE;AAQtG,SACI;AAAK,WAAO,EAAC,KAAb;AAAmB,MAAE,EAAC,SAAtB;AAAgC,SAAK,EAAC,4BAAtC;AAAmE,KAAC,EAAC,KAArE;AAA2E,KAAC,EAAC,KAA7E;AAAmF,WAAO,EAAC,iBAA3F;AAA8G,SAAK,EAAC,IAApH;AAAyH,UAAM,EAAC;AAAhI,KACI;AAAO,QAAI,EAAC;AAAZ,IADJ,EAEI,qBACI;AACI,QAAI,EAAGlB,OADX;AACqB,KAAC,EAAC;AADvB,IADJ,EAII;AACI,QAAI,EAAGA,OADX;AACqB,KAAC,EAAC;AADvB,IAJJ,EAOI,qBACI,qBACI;AACI,QAAI,EAAGA,OADX;AACqB,KAAC,EAAC;AADvB,IADJ,EAiBI,qBAEI;AAAgB,MAAE,EAAC,UAAnB;AAA8B,iBAAa,EAAC,gBAA5C;AAA6D,MAAE,EAAC,WAAhE;AAA4E,MAAE,EAAC,UAA/E;AAA0F,MAAE,EAAC,WAA7F;AAAyG,MAAE,EAAC,UAA5G;AAAuH,qBAAiB,EAAC;AAAzI,KACI;AAAO,UAAM,EAAC,GAAd;AAAkB,kBAAaA;AAA/B,IADJ,EAEI;AAAO,UAAM,EAAC,GAAd;AAAkB,kBAAaC;AAA/B,IAFJ,CAFJ,EAMI;AACI,SAAK,EAAC,qBADV;AACgC,KAAC,EAAC;AADlC,IANJ,CAjBJ,CADJ,CAPJ,EAkDI;AACI,QAAI,EAAGD,OADX;AACqB,KAAC,EAAC;AADvB,IAlDJ,EAqDI,qBAEI;AAAgB,MAAE,EAAC,UAAnB;AAA8B,iBAAa,EAAC,gBAA5C;AAA6D,MAAE,EAAC,WAAhE;AAA4E,MAAE,EAAC,UAA/E;AAA0F,MAAE,EAAC,WAA7F;AAAyG,MAAE,EAAC,UAA5G;AAAuH,qBAAiB,EAAC;AAAzI,KACI;AAAO,UAAM,EAAC,GAAd;AAAkB,kBAAaO;AAA/B,IADJ,EAEI;AAAO,UAAM,EAAC,GAAd;AAAkB,kBAAaW;AAA/B,IAFJ,CAFJ,EAMI;AAAM,SAAK,EAAC,qBAAZ;AAAkC,KAAC,EAAC;AAApC,IANJ,CArDJ,CAFJ,CADJ;AAmEH,C;;;;ACrGD;AAEA;AACA;AAEA,IAAME,wBAAwB,sDACxB1xE,0CAAiB,CAACF,KADM,IACG;AACzBwwE,SAAO,EAAK,SADa;AAEzBC,WAAS,EAAG,SAFa;AAGzBM,UAAQ,EAAI,SAHa;AAIzBW,YAAU,EAAE,SAJa;AAKzBG,SAAO,EAAK,SALa;AAMzBC,QAAM,EAAM;AANa,CADH,wBASxB5xE,0CAAiB,CAACC,GATM,IASC;AACvBqwE,SAAO,EAAK,SADW;AAEvBC,WAAS,EAAG,SAFW;AAGvBM,UAAQ,EAAI,SAHW;AAIvBW,YAAU,EAAE,SAJW;AAKvBG,SAAO,EAAK,SALW;AAMvBC,QAAM,EAAM;AANW,CATD,wBAiBxB5xE,0CAAiB,CAACJ,KAjBM,IAiBG;AACzB0wE,SAAO,EAAK,SADa;AAEzBC,WAAS,EAAG,SAFa;AAGzBM,UAAQ,EAAI,SAHa;AAIzBW,YAAU,EAAE,SAJa;AAKzBG,SAAO,EAAK,SALa;AAMzBC,QAAM,EAAM;AANa,CAjBH,wBAA9B;AA2BO,SAASC,gBAAT,OAA2G;AAAA,MAA/EpB,SAA+E,QAA/EA,SAA+E;;AAE9G,MAAI,CAACiB,wBAAwB,CAACjB,SAAD,CAA7B,EAA0C;AACtC,UAAM,IAAIt3D,KAAJ,SAAiBs3D,SAAjB,kCAAN;AACH;;AAJ6G,+BAMvCiB,wBAAwB,CAACjB,SAAD,CANe;AAAA,MAMtGH,OANsG,0BAMtGA,OANsG;AAAA,MAM7FC,SAN6F,0BAM7FA,SAN6F;AAAA,MAMlFM,QANkF,0BAMlFA,QANkF;AAAA,MAMxEW,UANwE,0BAMxEA,UANwE;AAAA,MAM5DG,OAN4D,0BAM5DA,OAN4D;AAAA,MAMnDC,MANmD,0BAMnDA,MANmD;AAQ9G,SACI;AAAK,SAAK,EAAC,MAAX;AAAkB,UAAM,EAAC,MAAzB;AAAgC,WAAO,EAAC,WAAxC;AAAoD,WAAO,EAAC,KAA5D;AAAkE,SAAK,EAAC;AAAxE,KACI,wBACI;AAAM,KAAC,EAAC,mXAAR;AAA4X,MAAE,EAAC;AAA/X,IADJ,EAEI;AAAgB,MAAE,EAAC,aAAnB;AAAiC,MAAE,EAAC,aAApC;AAAkD,MAAE,EAAC,aAArD;AAAmE,MAAE,EAAC,aAAtE;AAAoF,MAAE,EAAC;AAAvF,KACI;AAAM,kBAAatB,OAAnB;AAA6B,UAAM,EAAC;AAApC,IADJ,EAEI;AAAM,kBAAaC,SAAnB;AAA+B,UAAM,EAAC;AAAtC,IAFJ,CAFJ,EAMI;AAAM,KAAC,EAAC,oZAAR;AAA6Z,MAAE,EAAC;AAAha,IANJ,EAOI;AAAgB,MAAE,EAAC,aAAnB;AAAiC,MAAE,EAAC,aAApC;AAAkD,MAAE,EAAC,aAArD;AAAmE,MAAE,EAAC,aAAtE;AAAoF,MAAE,EAAC;AAAvF,KACI;AAAM,kBAAaD,OAAnB;AAA6B,UAAM,EAAC;AAApC,IADJ,EAEI;AAAM,kBAAaC,SAAnB;AAA+B,UAAM,EAAC;AAAtC,IAFJ,CAPJ,EAWI;AAAS,MAAE,EAAC,QAAZ;AAAqB,UAAM,EAAC;AAA5B,IAXJ,EAYI;AAAgB,MAAE,EAAC,aAAnB;AAAiC,MAAE,EAAC,YAApC;AAAiD,MAAE,EAAC,aAApD;AAAkE,MAAE,EAAC,YAArE;AAAkF,MAAE,EAAC;AAArF,KACI;AAAM,kBAAaM,QAAnB;AAA8B,UAAM,EAAC;AAArC,IADJ,EAEI;AAAM,kBAAaW,UAAnB;AAAgC,UAAM,EAAC;AAAvC,IAFJ,CAZJ,EAgBI;AAAS,MAAE,EAAC,SAAZ;AAAsB,UAAM,EAAC;AAA7B,IAhBJ,EAiBI;AAAS,MAAE,EAAC,SAAZ;AAAsB,UAAM,EAAC;AAA7B,IAjBJ,EAkBI;AAAS,MAAE,EAAC,SAAZ;AAAsB,UAAM,EAAC;AAA7B,IAlBJ,EAmBI;AAAS,MAAE,EAAC,SAAZ;AAAsB,UAAM,EAAC;AAA7B,IAnBJ,EAoBI;AAAS,MAAE,EAAC,SAAZ;AAAsB,UAAM,EAAC;AAA7B,IApBJ,EAqBI;AAAS,MAAE,EAAC,SAAZ;AAAsB,UAAM,EAAC;AAA7B,IArBJ,CADJ,EAwBI;AAAI,UAAM,EAAC,MAAX;AAAkB,oBAAa,GAA/B;AAAmC,QAAI,EAAC,MAAxC;AAA+C,iBAAU;AAAzD,KACI;AAAI,aAAS,EAAC;AAAd,KACI;AAAI,aAAS,EAAC;AAAd,KACI;AAAG,aAAS,EAAC;AAAb,KACI;AAAM,QAAI,EAAGlB;AAAb,KACI;AAAK,QAAI,EAAC;AAAV,IADJ,CADJ,EAII;AAAM,KAAC,EAAC,mXAAR;AAA4X,QAAI,EAAC,wBAAjY;AAA0Z,QAAI,EAAC;AAA/Z,IAJJ,CADJ,EAOI;AAAG,aAAS,EAAC;AAAb,KACI;AAAO,QAAI,EAAGA;AAAd,KACI;AAAK,QAAI,EAAC;AAAV,IADJ,CADJ,EAII;AAAM,KAAC,EAAC,oZAAR;AAA6Z,QAAI,EAAC,wBAAla;AAA2b,QAAI,EAAC;AAAhc,IAJJ,CAPJ,EAaI;AAAI,aAAS,EAAC;AAAd,KACI;AAAM,MAAE,EAAC,QAAT;AAAkB,QAAI,EAAGA;AAAzB,KACI;AAAK,QAAI,EAAC;AAAV,IADJ,CADJ,EAII;AAAS,MAAE,EAAC,QAAZ;AAAqB,QAAI,EAAC,wBAA1B;AAAmD,QAAI,EAAC,cAAxD;AAAuE,UAAM,EAAC;AAA9E,IAJJ,CAbJ,EAmBI;AAAI,aAAS,EAAC;AAAd,KACI;AAAM,KAAC,EAAC,8oBAAR;AAAupB,QAAI,EAAGqB;AAA9pB,IADJ,EAEI;AAAM,KAAC,EAAC,otDAAR;AAA6tD,QAAI,EAAGA;AAApuD,IAFJ,EAGI;AAAM,KAAC,EAAC,84BAAR;AAAu5B,QAAI,EAAGA;AAA95B,IAHJ,EAII;AAAG,aAAS,EAAC;AAAb,KACI;AAAM,MAAE,EAAC,SAAT;AAAmB,QAAI,EAAGrB;AAA1B,KACI;AAAK,QAAI,EAAC;AAAV,IADJ,CADJ,EAII;AAAM,KAAC,EAAC,i2BAAR;AAA02B,QAAI,EAAGqB,OAAj3B;AAA23B,QAAI,EAAC;AAAh4B,IAJJ,CAJJ,EAUI;AAAG,aAAS,EAAC;AAAb,KACI;AAAM,MAAE,EAAC,SAAT;AAAmB,QAAI,EAAGrB;AAA1B,KACI;AAAK,QAAI,EAAC;AAAV,IADJ,CADJ,EAII;AAAM,KAAC,EAAC,2xBAAR;AAAoyB,QAAI,EAAGqB,OAA3yB;AAAqzB,QAAI,EAAC;AAA1zB,IAJJ,CAVJ,EAgBI;AAAG,aAAS,EAAC;AAAb,KACI;AAAM,MAAE,EAAC,SAAT;AAAmB,QAAI,EAAGrB;AAA1B,KACI;AAAK,QAAI,EAAC;AAAV,IADJ,CADJ,EAII;AAAM,KAAC,EAAC,yxBAAR;AAAmyB,QAAI,EAAGqB,OAA1yB;AAAozB,QAAI,EAAC;AAAzzB,IAJJ,CAhBJ,EAsBI;AAAG,aAAS,EAAC;AAAb,KACI;AAAM,MAAE,EAAC,SAAT;AAAmB,QAAI,EAAGrB;AAA1B,KACI;AAAK,QAAI,EAAC;AAAV,IADJ,CADJ,EAII;AAAM,KAAC,EAAC,i2BAAR;AAA02B,QAAI,EAAGqB,OAAj3B;AAA23B,QAAI,EAAC;AAAh4B,IAJJ,CAtBJ,EA4BI;AAAM,KAAC,EAAC,+hDAAR;AAAwiD,QAAI,EAAGA;AAA/iD,IA5BJ,EA6BI;AAAM,KAAC,EAAC,moCAAR;AAA4oC,QAAI,EAAGA;AAAnpC,IA7BJ,EA8BI;AAAM,KAAC,EAAC,u/CAAR;AAAggD,QAAI,EAAGA;AAAvgD,IA9BJ,EA+BI;AAAM,KAAC,EAAC,8+BAAR;AAAu/B,QAAI,EAAGA;AAA9/B,IA/BJ,EAgCI;AAAM,KAAC,EAAC,+WAAR;AAAwX,QAAI,EAAGA;AAA/X,IAhCJ,EAiCI;AAAG,aAAS,EAAC;AAAb,KACI;AAAM,MAAE,EAAC,SAAT;AAAmB,QAAI,EAAGrB;AAA1B,KACI;AAAK,QAAI,EAAC;AAAV,IADJ,CADJ,EAII;AAAM,KAAC,EAAC,6ZAAR;AAAsa,QAAI,EAAGqB,OAA7a;AAAub,QAAI,EAAC;AAA5b,IAJJ,CAjCJ,EAuCI;AAAS,QAAI,EAAGC,MAAhB;AAAyB,UAAM,EAAC;AAAhC,IAvCJ,EAwCI;AAAM,KAAC,EAAC,+fAAR;AAAwgB,QAAI,EAAGA;AAA/gB,IAxCJ,EAyCI;AAAM,KAAC,EAAC,qaAAR;AAA8a,QAAI,EAAGA;AAArb,IAzCJ,EA0CI;AAAM,MAAE,EAAC,SAAT;AAAmB,QAAI,EAAGtB;AAA1B,KACI;AAAK,QAAI,EAAC;AAAV,IADJ,CA1CJ,EA6CI;AAAU,QAAI,EAAGsB,MAAjB;AAA0B,QAAI,EAAC,eAA/B;AAA+C,UAAM,EAAC;AAAtD,IA7CJ,EA8CI;AAAM,KAAC,EAAC,mpBAAR;AAA4pB,QAAI,EAAGA,MAAnqB;AAA4qB,QAAI,EAAC;AAAjrB,IA9CJ,EA+CI;AAAM,KAAC,EAAC,4pBAAR;AAAqqB,QAAI,EAAGA,MAA5qB;AAAqrB,QAAI,EAAC;AAA1rB,IA/CJ,EAgDI;AAAU,QAAI,EAAGA,MAAjB;AAA0B,QAAI,EAAC,eAA/B;AAA+C,UAAM,EAAC;AAAtD,IAhDJ,EAiDI;AAAM,KAAC,EAAC,2YAAR;AAAoZ,MAAE,EAAC,SAAvZ;AAAia,QAAI,EAAGA,MAAxa;AAAib,QAAI,EAAC;AAAtb,IAjDJ,EAkDI;AAAM,KAAC,EAAC,y7CAAR;AAAk8C,QAAI,EAAGA,MAAz8C;AAAk9C,QAAI,EAAC;AAAv9C,IAlDJ,EAmDI;AAAM,KAAC,EAAC,qsBAAR;AAA+sB,QAAI,EAAGA,MAAttB;AAA+tB,QAAI,EAAC;AAApuB,IAnDJ,EAoDI;AAAM,KAAC,EAAC,w7CAAR;AAAi8C,QAAI,EAAGA,MAAx8C;AAAi9C,QAAI,EAAC;AAAt9C,IApDJ,EAqDI;AAAM,KAAC,EAAC,6rBAAR;AAAssB,QAAI,EAAGA,MAA7sB;AAAstB,QAAI,EAAC;AAA3tB,IArDJ,EAsDI;AAAM,KAAC,EAAC,6aAAR;AAAsb,MAAE,EAAC,SAAzb;AAAmc,QAAI,EAAGA,MAA1c;AAAmd,QAAI,EAAC;AAAxd,IAtDJ,EAuDI;AAAU,QAAI,EAAGA,MAAjB;AAA0B,QAAI,EAAC,eAA/B;AAA+C,UAAM,EAAC;AAAtD,IAvDJ,EAwDI;AAAU,QAAI,EAAGA,MAAjB;AAA0B,QAAI,EAAC,eAA/B;AAA+C,UAAM,EAAC;AAAtD,IAxDJ,EAyDI;AAAM,KAAC,EAAC,6rBAAR;AAAssB,QAAI,EAAGA,MAA7sB;AAAstB,QAAI,EAAC;AAA3tB,IAzDJ,EA0DI;AAAM,KAAC,EAAC,4kDAAR;AAAqlD,QAAI,EAAGA,MAA5lD;AAAqmD,QAAI,EAAC;AAA1mD,IA1DJ,EA2DI;AAAM,KAAC,EAAC,gjCAAR;AAA0jC,QAAI,EAAGA,MAAjkC;AAA0kC,QAAI,EAAC;AAA/kC,IA3DJ,EA4DI;AAAM,KAAC,EAAC,23CAAR;AAAo4C,QAAI,EAAGA,MAA34C;AAAo5C,QAAI,EAAC;AAAz5C,IA5DJ,EA6DI;AAAM,KAAC,EAAC,usBAAR;AAAgtB,QAAI,EAAGA,MAAvtB;AAAguB,QAAI,EAAC;AAAruB,IA7DJ,EA8DI;AAAU,QAAI,EAAGA,MAAjB;AAA0B,QAAI,EAAC,eAA/B;AAA+C,UAAM,EAAC;AAAtD,IA9DJ,EA+DI;AAAM,KAAC,EAAC,+aAAR;AAAyb,QAAI,EAAGA,MAAhc;AAAyc,QAAI,EAAC;AAA9c,IA/DJ,EAgEI;AAAM,KAAC,EAAC,usBAAR;AAAitB,QAAI,EAAGA,MAAxtB;AAAiuB,QAAI,EAAC;AAAtuB,IAhEJ,EAiEI;AAAM,KAAC,EAAC,m9EAAR;AAA49E,QAAI,EAAGA,MAAn+E;AAA4+E,QAAI,EAAC;AAAj/E,IAjEJ,CAnBJ,CADJ,CADJ,CAxBJ,CADJ;AAsHH,C;;;;AC9JD;AAEA;AACA;AAEA,IAAME,gBAAgB,8CAChB9xE,0CAAiB,CAACF,KADF,IACW;AACzBwwE,SAAO,EAAK,SADa;AAEzBC,WAAS,EAAG,SAFa;AAGzBM,UAAQ,EAAI,SAHa;AAIzBW,YAAU,EAAE,SAJa;AAKzBG,SAAO,EAAK,SALa;AAMzBC,QAAM,EAAM;AANa,CADX,oBAShB5xE,0CAAiB,CAACC,GATF,IASS;AACvBqwE,SAAO,EAAK,SADW;AAEvBC,WAAS,EAAG,SAFW;AAGvBM,UAAQ,EAAI,SAHW;AAIvBW,YAAU,EAAE,SAJW;AAKvBG,SAAO,EAAK,SALW;AAMvBC,QAAM,EAAM;AANW,CATT,oBAiBhB5xE,0CAAiB,CAACJ,KAjBF,IAiBW;AACzB0wE,SAAO,EAAK,SADa;AAEzBC,WAAS,EAAG,SAFa;AAGzBM,UAAQ,EAAI,SAHa;AAIzBW,YAAU,EAAE,SAJa;AAKzBG,SAAO,EAAK,SALa;AAMzBC,QAAM,EAAM;AANa,CAjBX,oBAAtB;AA2BO,SAASG,QAAT,OAAmG;AAAA,MAA/EtB,SAA+E,QAA/EA,SAA+E;;AAEtG,MAAI,CAACqB,gBAAgB,CAACrB,SAAD,CAArB,EAAkC;AAC9B,UAAM,IAAIt3D,KAAJ,SAAiBs3D,SAAjB,0BAAN;AACH;;AAJqG,8BAM/BqB,gBAAgB,CAACrB,SAAD,CANe;AAAA,MAM9FH,OAN8F,yBAM9FA,OAN8F;AAAA,MAMrFC,SANqF,yBAMrFA,SANqF;AAAA,MAM1EM,QAN0E,yBAM1EA,QAN0E;AAAA,MAMhEW,UANgE,yBAMhEA,UANgE;AAAA,MAMpDG,OANoD,yBAMpDA,OANoD;AAAA,MAM3CC,MAN2C,yBAM3CA,MAN2C;AAQtG,SACI;AAAK,SAAK,EAAC,MAAX;AAAkB,UAAM,EAAC,MAAzB;AAAgC,WAAO,EAAC,WAAxC;AAAoD,WAAO,EAAC,KAA5D;AAAkE,SAAK,EAAC;AAAxE,KACI,wBACI;AAAM,KAAC,EAAC,wSAAR;AAAiT,MAAE,EAAC;AAApT,IADJ,EAEI;AAAgB,MAAE,EAAC,KAAnB;AAAyB,MAAE,EAAC,MAA5B;AAAmC,MAAE,EAAC,KAAtC;AAA4C,MAAE,EAAC,IAA/C;AAAoD,MAAE,EAAC;AAAvD,KACI;AAAM,kBAAatB,OAAnB;AAA6B,UAAM,EAAC;AAApC,IADJ,EAEI;AAAM,kBAAaC,SAAnB;AAA+B,UAAM,EAAC;AAAtC,IAFJ,CAFJ,EAMI;AAAgB,MAAE,EAAC,aAAnB;AAAiC,MAAE,EAAC,aAApC;AAAkD,MAAE,EAAC,aAArD;AAAmE,MAAE,EAAC,aAAtE;AAAoF,KAAC,EAAC,aAAtF;AAAoG,qBAAiB,EAAC,wGAAtH;AAA+N,MAAE,EAAC;AAAlO,KACI;AAAM,kBAAaM,QAAnB;AAA8B,UAAM,EAAC;AAArC,IADJ,EAEI;AAAM,kBAAaW,UAAnB;AAAgC,UAAM,EAAC;AAAvC,IAFJ,EAGI;AAAM,kBAAaG,OAAnB;AAA6B,UAAM,EAAC;AAApC,IAHJ,CANJ,EAWI;AAAM,KAAC,EAAC,+SAAR;AAAwT,MAAE,EAAC;AAA3T,IAXJ,CADJ,EAcI;AAAG,UAAM,EAAC,MAAV;AAAiB,oBAAa,GAA9B;AAAkC,QAAI,EAAC,MAAvC;AAA8C,iBAAU;AAAxD,KACI;AAAG,aAAS,EAAC;AAAb,KACI;AAAG,aAAS,EAAC;AAAb,KACI,qBACI;AAAM,MAAE,EAAC,QAAT;AAAkB,QAAI,EAAC;AAAvB,KACI;AAAK,QAAI,EAAC;AAAV,IADJ,CADJ,EAII;AAAG,MAAE,EAAC;AAAN,IAJJ,EAKI;AAAM,KAAC,EAAC,wSAAR;AAAiT,QAAI,EAAC,wBAAtT;AAA+U,QAAI,EAAC;AAApV,IALJ,CADJ,EAQI;AAAG,aAAS,EAAC,+BAAb;AAA6C,QAAI,EAAGC;AAApD,KACI;AAAS,UAAM,EAAC;AAAhB,IADJ,EAEI;AAAS,UAAM,EAAC;AAAhB,IAFJ,EAGI;AAAS,UAAM,EAAC;AAAhB,IAHJ,EAII;AAAM,KAAC,EAAC;AAAR,IAJJ,CARJ,EAcI;AAAG,aAAS,EAAC;AAAb,KACI;AAAM,MAAE,EAAC,QAAT;AAAkB,QAAI,EAAC;AAAvB,KACI;AAAK,QAAI,EAAC;AAAV,IADJ,CADJ,EAII;AAAK,QAAI,EAAC,wBAAV;AAAmC,QAAI,EAAC;AAAxC,IAJJ,EAKI;AAAM,KAAC,EAAC,+SAAR;AAAwT,QAAI,EAAC;AAA7T,IALJ,CAdJ,CADJ,CADJ,CAdJ,CADJ;AA2CH,C;;;;ACnFD;AAEA;AACA;AAEA,IAAMI,mBAAmB,oDACnBhyE,0CAAiB,CAACF,KADC,IACQ;AACzBwwE,SAAO,EAAK,SADa;AAEzBC,WAAS,EAAG;AAFa,CADR,uBAKnBvwE,0CAAiB,CAACC,GALC,IAKM;AACvBqwE,SAAO,EAAI,SADY;AAEvBC,WAAS,EAAE;AAFY,CALN,uBASnBvwE,0CAAiB,CAACJ,KATC,IASQ;AACzB0wE,SAAO,EAAI,SADc;AAEzBC,WAAS,EAAE;AAFc,CATR,uBAAzB;AAeO,SAAS0B,WAAT,OAAsG;AAAA,MAA/ExB,SAA+E,QAA/EA,SAA+E;;AAEzG,MAAI,CAACuB,mBAAmB,CAACvB,SAAD,CAAxB,EAAqC;AACjC,UAAM,IAAIt3D,KAAJ,SAAiBs3D,SAAjB,6BAAN;AACH;;AAJwG,8BAM1EuB,mBAAmB,CAACvB,SAAD,CANuD;AAAA,MAMjGH,OANiG,yBAMjGA,OANiG;AAAA,MAMxFC,SANwF,yBAMxFA,SANwF;AAQzG,SACI;AAAK,SAAK,EAAC,MAAX;AAAkB,UAAM,EAAC,MAAzB;AAAgC,WAAO,EAAC,WAAxC;AAAoD,WAAO,EAAC,KAA5D;AAAkE,SAAK,EAAC;AAAxE,KACI,wBACI;AAAS,MAAE,EAAC,QAAZ;AAAqB,UAAM,EAAC;AAA5B,IADJ,EAEI;AAAS,MAAE,EAAC,QAAZ;AAAqB,UAAM,EAAC;AAA5B,IAFJ,CADJ,EAKI;AAAG,MAAE,EAAC,QAAN;AAAe,UAAM,EAAC,MAAtB;AAA6B,oBAAa,GAA1C;AAA8C,QAAI,EAAC,MAAnD;AAA0D,iBAAU;AAApE,KACI;AAAG,MAAE,EAAC,wBAAN;AAAmC,aAAS,EAAC;AAA7C,KACI;AAAG,MAAE,EAAC,UAAN;AAAiB,aAAS,EAAC;AAA3B,KACI;AAAM,KAAC,EAAC,0xBAAR;AAAmyB,MAAE,EAAC,QAAtyB;AAA+yB,QAAI,EAAGD;AAAtzB,IADJ,EAEI;AAAM,KAAC,EAAC,inDAAR;AAA0nD,MAAE,EAAC,QAA7nD;AAAsoD,QAAI,EAAGA;AAA7oD,IAFJ,EAGI;AAAM,KAAC,EAAC,4xDAAR;AAAqyD,MAAE,EAAC,QAAxyD;AAAizD,QAAI,EAAGA;AAAxzD,IAHJ,EAII;AAAM,KAAC,EAAC,o0DAAR;AAA60D,MAAE,EAAC,QAAh1D;AAAy1D,QAAI,EAAGA;AAAh2D,IAJJ,EAKI;AAAM,KAAC,EAAC,8mCAAR;AAAunC,MAAE,EAAC,QAA1nC;AAAmoC,QAAI,EAAGA;AAA1oC,IALJ,EAMI;AAAM,KAAC,EAAC,07CAAR;AAAm8C,MAAE,EAAC,SAAt8C;AAAg9C,QAAI,EAAGA;AAAv9C,IANJ,EAOI;AAAG,MAAE,EAAC,UAAN;AAAiB,aAAS,EAAC;AAA3B,KACI;AAAM,MAAE,EAAC,QAAT;AAAkB,QAAI,EAAC;AAAvB,KACI;AAAK,QAAI,EAAC;AAAV,IADJ,CADJ,EAII;AAAG,MAAE,EAAC;AAAN,IAJJ,EAKI;AAAM,KAAC,EAAC,mwCAAR;AAA4wC,MAAE,EAAC,SAA/wC;AAAyxC,QAAI,EAAGA,OAAhyC;AAA0yC,QAAI,EAAC;AAA/yC,IALJ,CAPJ,EAcI;AAAM,KAAC,EAAC,+5FAAR;AAAw6F,MAAE,EAAC,SAA36F;AAAq7F,QAAI,EAAGC;AAA57F,IAdJ,EAeI;AAAM,KAAC,EAAC,qhBAAR;AAA8hB,MAAE,EAAC,SAAjiB;AAA2iB,QAAI,EAAGA;AAAljB,IAfJ,EAgBI;AAAG,MAAE,EAAC,UAAN;AAAiB,aAAS,EAAC;AAA3B,KACI;AAAM,MAAE,EAAC,QAAT;AAAkB,QAAI,EAAC;AAAvB,KACI;AAAK,QAAI,EAAC;AAAV,IADJ,CADJ,EAII;AAAG,MAAE,EAAC;AAAN,IAJJ,EAKI;AAAM,KAAC,EAAC,iiBAAR;AAA0iB,MAAE,EAAC,SAA7iB;AAAujB,QAAI,EAAGA,SAA9jB;AAA0kB,QAAI,EAAC;AAA/kB,IALJ,CAhBJ,CADJ,CADJ,CALJ,CADJ;AAoCH,C;;;;AChED;AAEA;AACA;AAEA,IAAM2B,kBAAkB,kDAClBlyE,0CAAiB,CAACF,KADA,IACS;AACzBwwE,SAAO,EAAI,SADc;AAEzBC,WAAS,EAAE;AAFc,CADT,sBAKlBvwE,0CAAiB,CAACC,GALA,IAKO;AACvBqwE,SAAO,EAAI,SADY;AAEvBC,WAAS,EAAE;AAFY,CALP,sBASlBvwE,0CAAiB,CAACJ,KATA,IASS;AACzB0wE,SAAO,EAAK,SADa;AAEzBC,WAAS,EAAG;AAFa,CATT,sBAAxB;AAeO,SAAS4B,UAAT,OAAqG;AAAA,MAA/E1B,SAA+E,QAA/EA,SAA+E;;AAExG,MAAI,CAACyB,kBAAkB,CAACzB,SAAD,CAAvB,EAAoC;AAChC,UAAM,IAAIt3D,KAAJ,SAAiBs3D,SAAjB,4BAAN;AACH;;AAJuG,8BAMzEyB,kBAAkB,CAACzB,SAAD,CANuD;AAAA,MAMhGH,OANgG,yBAMhGA,OANgG;AAAA,MAMvFC,SANuF,yBAMvFA,SANuF;AAQxG,SACI;AAAK,SAAK,EAAC,MAAX;AAAkB,UAAM,EAAC,MAAzB;AAAgC,WAAO,EAAC,WAAxC;AAAoD,WAAO,EAAC,KAA5D;AAAkE,SAAK,EAAC;AAAxE,KACI,wBACI;AAAS,MAAE,EAAC,QAAZ;AAAqB,UAAM,EAAC;AAA5B,IADJ,CADJ,EAII;AAAG,MAAE,EAAC,QAAN;AAAe,UAAM,EAAC,MAAtB;AAA6B,oBAAa,GAA1C;AAA8C,QAAI,EAAC,MAAnD;AAA0D,iBAAU;AAApE,KACI;AAAG,MAAE,EAAC,wBAAN;AAAmC,aAAS,EAAC;AAA7C,KACI;AAAG,MAAE,EAAC,aAAN;AAAoB,aAAS,EAAC;AAA9B,KACI;AAAM,KAAC,EAAC,ktBAAR;AAA2tB,MAAE,EAAC,QAA9tB;AAAuuB,QAAI,EAAGD;AAA9uB,IADJ,EAEI;AAAM,KAAC,EAAC,grBAAR;AAAyrB,MAAE,EAAC,QAA5rB;AAAqsB,QAAI,EAAGA;AAA5sB,IAFJ,EAGI;AAAM,KAAC,EAAC,8lCAAR;AAAumC,MAAE,EAAC,QAA1mC;AAAmnC,QAAI,EAAGA;AAA1nC,IAHJ,EAII;AAAM,KAAC,EAAC,kWAAR;AAA2W,MAAE,EAAC,QAA9W;AAAuX,QAAI,EAAGA;AAA9X,IAJJ,EAKI;AAAM,KAAC,EAAC,imCAAR;AAA0mC,MAAE,EAAC,QAA7mC;AAAsnC,QAAI,EAAGA;AAA7nC,IALJ,EAMI;AAAG,MAAE,EAAC,UAAN;AAAiB,aAAS,EAAC;AAA3B,KACI;AAAM,MAAE,EAAC,QAAT;AAAkB,QAAI,EAAC;AAAvB,KACI;AAAK,QAAI,EAAC;AAAV,IADJ,CADJ,EAII;AAAG,MAAE,EAAC;AAAN,IAJJ,EAKI;AAAM,KAAC,EAAC,qtDAAR;AAA8tD,MAAE,EAAC,SAAjuD;AAA2uD,QAAI,EAAGC,SAAlvD;AAA8vD,QAAI,EAAC;AAAnwD,IALJ,CANJ,CADJ,CADJ,CAJJ,CADJ;AAyBH,C;;;;ACrDD;AAEA;AACA;AAEA,IAAM6B,kBAAkB,kDAClBpyE,0CAAiB,CAACF,KADA,IACS;AACzBwwE,SAAO,EAAI,SADc;AAEzBC,WAAS,EAAE;AAFc,CADT,sBAKlBvwE,0CAAiB,CAACC,GALA,IAKO;AACvBqwE,SAAO,EAAI,SADY;AAEvBC,WAAS,EAAE;AAFY,CALP,sBASlBvwE,0CAAiB,CAACJ,KATA,IASS;AACzB0wE,SAAO,EAAK,SADa;AAEzBC,WAAS,EAAG;AAFa,CATT,sBAAxB;AAeO,SAAS8B,UAAT,OAAqG;AAAA,MAA/E5B,SAA+E,QAA/EA,SAA+E;;AAExG,MAAI,CAAC2B,kBAAkB,CAAC3B,SAAD,CAAvB,EAAoC;AAChC,UAAM,IAAIt3D,KAAJ,SAAiBs3D,SAAjB,4BAAN;AACH;;AAJuG,8BAMzE2B,kBAAkB,CAAC3B,SAAD,CANuD;AAAA,MAMhGH,OANgG,yBAMhGA,OANgG;AAAA,MAMvFC,SANuF,yBAMvFA,SANuF;AAQxG,SACI;AAAK,SAAK,EAAC,MAAX;AAAkB,UAAM,EAAC,MAAzB;AAAgC,WAAO,EAAC,WAAxC;AAAoD,WAAO,EAAC,KAA5D;AAAkE,SAAK,EAAC;AAAxE,KACI;AAAG,MAAE,EAAC,QAAN;AAAe,UAAM,EAAC,MAAtB;AAA6B,oBAAa,GAA1C;AAA8C,QAAI,EAAC,MAAnD;AAA0D,iBAAU;AAApE,KACI;AAAG,MAAE,EAAC,wBAAN;AAAmC,aAAS,EAAC;AAA7C,KACI;AAAG,MAAE,EAAC,iBAAN;AAAwB,aAAS,EAAC;AAAlC,KACI;AAAS,MAAE,EAAC,QAAZ;AAAqB,QAAI,EAAGD,OAA5B;AAAsC,UAAM,EAAC;AAA7C,IADJ,EAEI;AAAS,MAAE,EAAC,QAAZ;AAAqB,QAAI,EAAGA,OAA5B;AAAsC,UAAM,EAAC;AAA7C,IAFJ,EAGI;AAAS,MAAE,EAAC,QAAZ;AAAqB,QAAI,EAAGA,OAA5B;AAAsC,UAAM,EAAC;AAA7C,IAHJ,EAII;AAAS,MAAE,EAAC,QAAZ;AAAqB,QAAI,EAAGA,OAA5B;AAAsC,UAAM,EAAC;AAA7C,IAJJ,EAKI;AAAS,MAAE,EAAC,QAAZ;AAAqB,QAAI,EAAGA,OAA5B;AAAsC,UAAM,EAAC;AAA7C,IALJ,EAMI;AAAS,MAAE,EAAC,QAAZ;AAAqB,QAAI,EAAGA,OAA5B;AAAsC,UAAM,EAAC;AAA7C,IANJ,EAOI;AAAS,MAAE,EAAC,QAAZ;AAAqB,QAAI,EAAGA,OAA5B;AAAsC,UAAM,EAAC;AAA7C,IAPJ,EAQI;AAAS,MAAE,EAAC,QAAZ;AAAqB,QAAI,EAAGA,OAA5B;AAAsC,UAAM,EAAC;AAA7C,IARJ,EASI;AAAS,MAAE,EAAC,SAAZ;AAAsB,QAAI,EAAGA,OAA7B;AAAuC,UAAM,EAAC;AAA9C,IATJ,EAUI;AAAS,MAAE,EAAC,SAAZ;AAAsB,QAAI,EAAGA,OAA7B;AAAuC,UAAM,EAAC;AAA9C,IAVJ,EAWI;AAAS,MAAE,EAAC,SAAZ;AAAsB,QAAI,EAAGA,OAA7B;AAAuC,UAAM,EAAC;AAA9C,IAXJ,EAYI;AAAS,MAAE,EAAC,SAAZ;AAAsB,QAAI,EAAGA,OAA7B;AAAuC,UAAM,EAAC;AAA9C,IAZJ,EAaI;AAAS,MAAE,EAAC,SAAZ;AAAsB,QAAI,EAAGA,OAA7B;AAAuC,UAAM,EAAC;AAA9C,IAbJ,EAcI;AAAS,MAAE,EAAC,SAAZ;AAAsB,QAAI,EAAGA,OAA7B;AAAuC,UAAM,EAAC;AAA9C,IAdJ,EAeI;AAAS,MAAE,EAAC,SAAZ;AAAsB,QAAI,EAAGA,OAA7B;AAAuC,UAAM,EAAC;AAA9C,IAfJ,EAgBI;AAAS,MAAE,EAAC,SAAZ;AAAsB,QAAI,EAAGA,OAA7B;AAAuC,UAAM,EAAC;AAA9C,IAhBJ,EAiBI;AAAS,MAAE,EAAC,SAAZ;AAAsB,QAAI,EAAGA,OAA7B;AAAuC,UAAM,EAAC;AAA9C,IAjBJ,EAkBI;AAAS,MAAE,EAAC,SAAZ;AAAsB,QAAI,EAAGA,OAA7B;AAAuC,UAAM,EAAC;AAA9C,IAlBJ,EAmBI;AAAS,MAAE,EAAC,SAAZ;AAAsB,QAAI,EAAGA,OAA7B;AAAuC,UAAM,EAAC;AAA9C,IAnBJ,EAoBI;AAAS,MAAE,EAAC,SAAZ;AAAsB,QAAI,EAAGA,OAA7B;AAAuC,UAAM,EAAC;AAA9C,IApBJ,EAqBI;AAAS,MAAE,EAAC,SAAZ;AAAsB,QAAI,EAAGA,OAA7B;AAAuC,UAAM,EAAC;AAA9C,IArBJ,EAsBI;AAAS,MAAE,EAAC,SAAZ;AAAsB,QAAI,EAAGA,OAA7B;AAAuC,UAAM,EAAC;AAA9C,IAtBJ,EAuBI;AAAS,MAAE,EAAC,SAAZ;AAAsB,QAAI,EAAGA,OAA7B;AAAuC,UAAM,EAAC;AAA9C,IAvBJ,EAwBI;AAAS,MAAE,EAAC,SAAZ;AAAsB,QAAI,EAAGA,OAA7B;AAAuC,UAAM,EAAC;AAA9C,IAxBJ,EAyBI;AAAS,MAAE,EAAC,SAAZ;AAAsB,QAAI,EAAGA,OAA7B;AAAuC,UAAM,EAAC;AAA9C,IAzBJ,EA0BI;AAAS,MAAE,EAAC,SAAZ;AAAsB,QAAI,EAAGA,OAA7B;AAAuC,UAAM,EAAC;AAA9C,IA1BJ,EA2BI;AAAS,MAAE,EAAC,SAAZ;AAAsB,QAAI,EAAGA,OAA7B;AAAuC,UAAM,EAAC;AAA9C,IA3BJ,EA4BI;AAAS,MAAE,EAAC,SAAZ;AAAsB,QAAI,EAAGA,OAA7B;AAAuC,UAAM,EAAC;AAA9C,IA5BJ,EA6BI;AAAS,MAAE,EAAC,SAAZ;AAAsB,QAAI,EAAGA,OAA7B;AAAuC,UAAM,EAAC;AAA9C,IA7BJ,EA8BI;AAAS,MAAE,EAAC,SAAZ;AAAsB,QAAI,EAAGC,SAA7B;AAAyC,UAAM,EAAC;AAAhD,IA9BJ,EA+BI;AAAM,KAAC,EAAC,k0DAAR;AAA20D,MAAE,EAAC,SAA90D;AAAw1D,QAAI,EAAGD;AAA/1D,IA/BJ,EAgCI;AAAM,KAAC,EAAC,wpCAAR;AAAiqC,MAAE,EAAC,SAApqC;AAA8qC,QAAI,EAAGA;AAArrC,IAhCJ,EAiCI;AAAS,MAAE,EAAC,SAAZ;AAAsB,QAAI,EAAGA,OAA7B;AAAuC,UAAM,EAAC;AAA9C,IAjCJ,EAkCI;AAAM,KAAC,EAAC,+sCAAR;AAAwtC,MAAE,EAAC,SAA3tC;AAAquC,QAAI,EAAGA;AAA5uC,IAlCJ,EAmCI;AAAM,KAAC,EAAC,szBAAR;AAA+zB,MAAE,EAAC,SAAl0B;AAA40B,QAAI,EAAGA;AAAn1B,IAnCJ,EAoCI;AAAM,KAAC,EAAC,4oCAAR;AAAqpC,MAAE,EAAC,SAAxpC;AAAkqC,QAAI,EAAGA;AAAzqC,IApCJ,CADJ,CADJ,CADJ,CADJ;AA8CH,C;;;;AC1ED;AAEA;AACA;AAEA,IAAMgC,gBAAgB,8CAChBtyE,0CAAiB,CAACF,KADF,IACW;AACzBwwE,SAAO,EAAI,SADc;AAEzBC,WAAS,EAAE;AAFc,CADX,oBAKhBvwE,0CAAiB,CAACC,GALF,IAKS;AACvBqwE,SAAO,EAAI,SADY;AAEvBC,WAAS,EAAE;AAFY,CALT,oBAShBvwE,0CAAiB,CAACJ,KATF,IASW;AACzB0wE,SAAO,EAAI,SADc;AAEzBC,WAAS,EAAE;AAFc,CATX,oBAAtB;AAeO,SAASgC,QAAT,OAAmG;AAAA,MAA/E9B,SAA+E,QAA/EA,SAA+E;;AAEtG,MAAI,CAAC6B,gBAAgB,CAAC7B,SAAD,CAArB,EAAkC;AAC9B,UAAM,IAAIt3D,KAAJ,SAAiBs3D,SAAjB,0BAAN;AACH;;AAJqG,8BAMvE6B,gBAAgB,CAAC7B,SAAD,CANuD;AAAA,MAM9FH,OAN8F,yBAM9FA,OAN8F;AAAA,MAMrFC,SANqF,yBAMrFA,SANqF;AAQtG,SACI;AAAK,SAAK,EAAC,MAAX;AAAkB,UAAM,EAAC,MAAzB;AAAgC,WAAO,EAAC,WAAxC;AAAoD,WAAO,EAAC,KAA5D;AAAkE,SAAK,EAAC;AAAxE,KACI;AAAG,MAAE,EAAC,QAAN;AAAe,UAAM,EAAC,MAAtB;AAA6B,oBAAa,GAA1C;AAA8C,QAAI,EAAC,MAAnD;AAA0D,iBAAU;AAApE,KACI;AAAG,MAAE,EAAC,wBAAN;AAAmC,aAAS,EAAC;AAA7C,KACI;AAAG,MAAE,EAAC,WAAN;AAAkB,aAAS,EAAC;AAA5B,KACI;AAAM,KAAC,EAAC,6YAAR;AAAsZ,MAAE,EAAC,QAAzZ;AAAka,QAAI,EAAGA;AAAza,IADJ,EAEI;AAAS,MAAE,EAAC,QAAZ;AAAqB,QAAI,EAAC,SAA1B;AAAoC,UAAM,EAAC;AAA3C,IAFJ,EAGI;AAAM,KAAC,EAAC,kSAAR;AAA2S,MAAE,EAAC,QAA9S;AAAuT,QAAI,EAAGD;AAA9T,IAHJ,EAII;AAAM,KAAC,EAAC,oSAAR;AAA6S,MAAE,EAAC,QAAhT;AAAyT,QAAI,EAAGA;AAAhU,IAJJ,EAKI;AAAM,KAAC,EAAC,4pDAAR;AAAqqD,MAAE,EAAC,QAAxqD;AAAirD,QAAI,EAAGA;AAAxrD,IALJ,CADJ,CADJ,CADJ,CADJ;AAeH,C;;;;;;;;;;;;;;;;AC3CD;AAEA;AACA;AAEA,IAAMkC,kBAAkB,kDAClBxyE,0CAAiB,CAACN,IADA,IACQ;AACxB4wE,SAAO,EAAI,SADa;AAExBC,WAAS,EAAE;AAFa,CADR,sBAKlBvwE,0CAAiB,CAACF,KALA,IAKS;AACzBwwE,SAAO,EAAI,SADc;AAEzBC,WAAS,EAAE;AAFc,CALT,sBASlBvwE,0CAAiB,CAACJ,KATA,IASS;AACzB0wE,SAAO,EAAI,SADc;AAEzBC,WAAS,EAAE;AAFc,CATT,sBAAxB;AAeO,SAASkC,iBAAT,OAAqG;AAAA,MAA/EhC,SAA+E,QAA/EA,SAA+E;;AAExG,MAAI,CAAC+B,kBAAkB,CAAC/B,SAAD,CAAvB,EAAoC;AAChC,UAAM,IAAIt3D,KAAJ,SAAiBs3D,SAAjB,4BAAN;AACH;;AAJuG,8BAMzE+B,kBAAkB,CAAC/B,SAAD,CANuD;AAAA,MAMhGH,OANgG,yBAMhGA,OANgG;AAAA,MAMvFC,SANuF,yBAMvFA,SANuF;AAQxG,SACI;AAAK,SAAK,EAAC,KAAX;AAAiB,UAAM,EAAC,IAAxB;AAA6B,WAAO,EAAC,YAArC;AAAkD,SAAK,EAAC,4BAAxD;AAAqF,uBAAmB,EAAC;AAAzG,KACI;AAAM,QAAI,EAAGD,OAAb;AAAuB,KAAC,EAAC;AAAzB,IADJ,EAEI;AAAM,QAAI,EAAGA,OAAb;AAAuB,KAAC,EAAC;AAAzB,IAFJ,EAGI;AAAM,QAAI,EAAGA,OAAb;AAAuB,KAAC,EAAC;AAAzB,IAHJ,EAII;AAAM,QAAI,EAAGC,SAAb;AAAyB,KAAC,EAAC;AAA3B,IAJJ,EAKI;AAAM,QAAI,EAAGA,SAAb;AAAyB,KAAC,EAAC;AAA3B,IALJ,EAMI;AAAM,QAAI,EAAGA,SAAb;AAAyB,KAAC,EAAC;AAA3B,IANJ,CADJ;AAUH,C;;;;ACrCD;AAEA;AACA;AAGA,IAAMmC,kBAAkB,kDAClB1yE,0CAAiB,CAACN,IADA,IACQ;AACxB4wE,SAAO,EAAI,SADa;AAExBC,WAAS,EAAE;AAFa,CADR,sBAKlBvwE,0CAAiB,CAACF,KALA,IAKS;AACzBwwE,SAAO,EAAI,SADc;AAEzBC,WAAS,EAAE;AAFc,CALT,sBASlBvwE,0CAAiB,CAACJ,KATA,IASS;AACzB0wE,SAAO,EAAI,SADc;AAEzBC,WAAS,EAAE;AAFc,CATT,sBAAxB;AAeO,SAASoC,UAAT,OAAmI;AAAA,MAA7GlC,SAA6G,QAA7GA,SAA6G;AAAA,MAAlGn+C,MAAkG,QAAlGA,MAAkG;;AAEtI,MAAI,CAACogD,kBAAkB,CAACjC,SAAD,CAAvB,EAAoC;AAChC,UAAM,IAAIt3D,KAAJ,SAAiBs3D,SAAjB,4BAAN;AACH;;AAJqI,cAMlHn+C,MAAM,IAAI,EANwG;AAAA,MAM9HC,OAN8H,SAM9HA,OAN8H;;AAAA,MAO9H+9C,OAP8H,GAOlHoC,kBAAkB,CAACjC,SAAD,CAPgG,CAO9HH,OAP8H;;AAStI,UAAQ/9C,OAAR;AACA,SAAK5pB,gCAAO,CAAC8C,EAAb;AACI,aACI;AAAK,aAAK,EAAC,KAAX;AAAiB,cAAM,EAAC,IAAxB;AAA6B,eAAO,EAAC,YAArC;AAAkD,2BAAmB,EAAC,eAAtE;AAAsF,aAAK,EAAC;AAA5F,SACI;AAAG,iBAAS,EAAC,wCAAb;AAAsD,YAAI,EAAG6kE;AAA7D,SACI;AAAG,iBAAS,EAAC;AAAb,SACI;AAAM,SAAC,EAAC;AAAR,QADJ,CADJ,CADJ,CADJ;;AASJ;AACI,aACI;AAAK,aAAK,EAAC,KAAX;AAAiB,cAAM,EAAC,IAAxB;AAA6B,eAAO,EAAC,WAArC;AAAiD,2BAAmB,EAAC,eAArE;AAAqF,aAAK,EAAC;AAA3F,SACI;AAAM,YAAI,EAAGA,OAAb;AAAuB,SAAC,EAAC;AAAzB,QADJ,EAEI;AAAM,YAAI,EAAGA,OAAb;AAAuB,SAAC,EAAC;AAAzB,QAFJ,EAGI;AAAM,YAAI,EAAGA,OAAb;AAAuB,SAAC,EAAC;AAAzB,QAHJ,EAII;AAAM,YAAI,EAAGA,OAAb;AAAuB,SAAC,EAAC;AAAzB,QAJJ,EAKI;AAAM,YAAI,EAAGA,OAAb;AAAuB,SAAC,EAAC;AAAzB,QALJ,EAMI;AAAM,YAAI,EAAGA,OAAb;AAAuB,SAAC,EAAC;AAAzB,QANJ,CADJ;AAZJ;AAwBH,C;;;;;;;;;;;;;;;;;;;;;;;;ACtDD;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEO,IAAMsC,YAAY,sCAEnBtxE,oCAAW,CAACC,EAFO,2CAGfvB,0CAAiB,CAACF,KAHH,IAGY+yE,kBAHZ,kBAIf7yE,0CAAiB,CAACN,IAJH,IAIYozE,iBAJZ,kBAKf9yE,0CAAiB,CAACJ,KALH,IAKYmzE,kBALZ,kCAQnBzxE,oCAAW,CAACtD,MARO,IAQGy0E,iBARH,gBAUnBnxE,oCAAW,CAACnD,MAVO,IAUGw0E,UAVH,gBAYnBrxE,oCAAW,CAAC/C,KAZO,iDAafyB,0CAAiB,CAACF,KAbH,IAaYkzE,qBAbZ,qBAcfhzE,0CAAiB,CAACN,IAdH,IAcYuzE,oBAdZ,qCAgBnB3xE,oCAAW,CAAC9C,IAhBO,+CAiBfwB,0CAAiB,CAACF,KAjBH,IAiBYozE,cAjBZ,oCAoBnB5xE,oCAAW,CAAC7C,KApBO,IAoBEqyE,SApBF,gBAsBnBxvE,oCAAW,CAAC5C,GAtBO,6CAuBfsB,0CAAiB,CAACC,GAvBH,IAuBYkzE,aAvBZ,mBAwBfnzE,0CAAiB,CAACF,KAxBH,IAwBYszE,mBAxBZ,mCA2BnB9xE,oCAAW,CAAC3C,UA3BO,IA2BO2yE,cA3BP,gBA6BnBhwE,oCAAW,CAAC1C,OA7BO,IA6BIoyE,WA7BJ,gBA+BnB1vE,oCAAW,CAACzC,MA/BO,IA+BG8xE,UA/BH,gBAiCnBrvE,oCAAW,CAACxC,GAjCO,IAiCAoyE,OAjCA,gBAmCnB5vE,oCAAW,CAACvC,MAnCO,IAmCGqyE,UAnCH,gBAqCnB9vE,oCAAW,CAACtC,GArCO,IAqCAwxE,OArCA,gBAuCnBlvE,oCAAW,CAACrC,IAvCO,IAuCCwyE,QAvCD,gBAyCnBnwE,oCAAW,CAACpC,YAzCO,IAyCS2yE,gBAzCT,gBA2CnBvwE,oCAAW,CAACnC,IA3CO,IA2CC4yE,QA3CD,gBA6CnBzwE,oCAAW,CAAClC,OA7CO,IA6CI6yE,WA7CJ,gBA+CnB3wE,oCAAW,CAACjC,MA/CO,IA+CG8yE,UA/CH,gBAiDnB7wE,oCAAW,CAAChC,MAjDO,IAiDG+yE,UAjDH,gBAmDnB/wE,oCAAW,CAAC/B,IAnDO,IAmDCgzE,QAnDD,gBAAlB,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3BP;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEO,IAAMc,SAAS,gCAChBj1E,6BAAI,CAACuD,IADW,IACG2xE,cADH,aAEhBl1E,6BAAI,CAACyD,IAFW,IAEG0xE,cAFH,aAGhBn1E,6BAAI,CAACwD,UAHW,IAGG4xE,oBAHH,aAIhBp1E,6BAAI,CAAC4D,OAJW,IAIGyxE,iBAJH,aAKhBr1E,6BAAI,CAAC0D,QALW,IAKG4xE,kBALH,aAMhBt1E,6BAAI,CAAC6D,KANW,IAMG0xE,eANH,aAOhBv1E,6BAAI,CAAC8D,GAPW,IAOG0xE,aAPH,aAQhBx1E,6BAAI,CAAC+D,GARW,IAQG0xE,aARH,aAShBz1E,6BAAI,CAACgE,GATW,IASG0xE,aATH,aAAf,C;;ACZP;;;ACDA;AAEO,IAAMC,gBAAgB,GAAG;AAC5B,QAAM;AACF,UAAM;AACF,uBAAiB,iIADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AALJ,GADsB;AAW5B,QAAM;AACF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AADJ,GAXsB;AAiB5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GAjBsB;AAmC5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GAnCsB;AAqD5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GArDsB;AAuE5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KAbJ;AAiBF,UAAM;AACF,uBAAiB,0WADf;AAEF,kBAAiB;AAFf;AAjBJ,GAvEsB;AA6F5B,QAAM;AACF,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf;AADJ,GA7FsB;AAmG5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GAnGsB;AAqH5B,QAAM;AACF,UAAM;AACF,uBAAiB,0KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf;AAbJ,GArHsB;AAuI5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf;AAbJ,GAvIsB;AAyJ5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf;AAbJ,GAzJsB;AA2K5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf;AAbJ,GA3KsB;AA6L5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GA7LsB;AA+M5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf;AAbJ,GA/MsB;AAiO5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GAjOsB;AAmP5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GAnPsB;AAqQ5B,QAAM;AACF,UAAM;AACF,uBAAiB,0KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf;AAbJ,GArQsB;AAuR5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf;AAbJ,GAvRsB;AAyS5B,QAAM;AACF,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf;AADJ,GAzSsB;AA+S5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KAbJ;AAiBF,UAAM;AACF,uBAAiB,0WADf;AAEF,kBAAiB;AAFf;AAjBJ,GA/SsB;AAqU5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GArUsB;AAuV5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GAvVsB;AAyW5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf;AAbJ,GAzWsB;AA2X5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf;AAbJ,GA3XsB;AA6Y5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf;AAbJ,GA7YsB;AA+Z5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GA/ZsB;AAib5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf;AAbJ,GAjbsB;AAmc5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GAncsB;AAqd5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf;AAbJ,GArdsB;AAue5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GAvesB;AAyf5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf;AAbJ,GAzfsB;AA2gB5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GA3gBsB;AA6hB5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GA7hBsB;AA+iB5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GA/iBsB;AAikB5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GAjkBsB;AAmlB5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf;AAbJ,GAnlBsB;AAqmB5B,QAAM;AACF,UAAM;AACF,uBAAiB,0KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf;AAbJ,GArmBsB;AAunB5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KAbJ;AAiBF,UAAM;AACF,uBAAiB,0WADf;AAEF,kBAAiB;AAFf;AAjBJ,GAvnBsB;AA6oB5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf;AAbJ,GA7oBsB;AA+pB5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GA/pBsB;AAirB5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GAjrBsB;AAmsB5B,QAAM;AACF,UAAM;AACF,uBAAiB,0WADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KAbJ;AAiBF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAjBJ,GAnsBsB;AAytB5B,QAAM;AACF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf;AALJ,GAztBsB;AAmuB5B,QAAM;AACF,UAAM;AACF,uBAAiB,0KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf;AAbJ,GAnuBsB;AAqvB5B,QAAM;AACF,UAAM;AACF,uBAAiB,0KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf;AAbJ,GArvBsB;AAuwB5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GAvwBsB;AAyxB5B,QAAM;AACF,UAAM;AACF,uBAAiB,0KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf;AAbJ,GAzxBsB;AA2yB5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GA3yBsB;AA6zB5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf;AAbJ,GA7zBsB;AA+0B5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf;AAbJ,GA/0BsB;AAi2B5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KAbJ;AAiBF,UAAM;AACF,uBAAiB,0WADf;AAEF,kBAAiB;AAFf;AAjBJ,GAj2BsB;AAu3B5B,QAAM;AACF,UAAM;AACF,uBAAiB,0KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf;AAbJ,GAv3BsB;AAy4B5B,QAAM;AACF,UAAM;AACF,uBAAiB,0KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf;AAbJ,GAz4BsB;AA25B5B,QAAM;AACF,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf;AADJ,GA35BsB;AAi6B5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf;AAbJ,GAj6BsB;AAm7B5B,QAAM;AACF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AADJ,GAn7BsB;AAy7B5B,QAAM;AACF,UAAM;AACF,uBAAiB,0KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf;AAbJ,GAz7BsB;AA28B5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf;AAbJ,GA38BsB;AA69B5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GA79BsB;AA++B5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GA/+BsB;AAigC5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GAjgCsB;AAmhC5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GAnhCsB;AAqiC5B,QAAM;AACF,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf;AADJ,GAriCsB;AA2iC5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GA3iCsB;AA6jC5B,QAAM;AACF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AADJ,GA7jCsB;AAmkC5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf;AAbJ,GAnkCsB;AAqlC5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GArlCsB;AAumC5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GAvmCsB;AAynC5B,QAAM;AACF,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf;AADJ,GAznCsB;AA+nC5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf;AAbJ,GA/nCsB;AAipC5B,QAAM;AACF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AADJ,GAjpCsB;AAupC5B,QAAM;AACF,UAAM;AACF,uBAAiB,0KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf;AAbJ,GAvpCsB;AAyqC5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GAzqCsB;AA2rC5B,QAAM;AACF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AADJ,GA3rCsB;AAisC5B,QAAM;AACF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AADJ,GAjsCsB;AAusC5B,QAAM;AACF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf;AALJ,GAvsCsB;AAitC5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KAbJ;AAiBF,UAAM;AACF,uBAAiB,0WADf;AAEF,kBAAiB;AAFf;AAjBJ,GAjtCsB;AAuuC5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GAvuCsB;AAyvC5B,QAAM;AACF,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf;AADJ,GAzvCsB;AA+vC5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GA/vCsB;AAixC5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf;AAbJ,GAjxCsB;AAmyC5B,QAAM;AACF,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf;AADJ,GAnyCsB;AAyyC5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GAzyCsB;AA2zC5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf;AAbJ,GA3zCsB;AA60C5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KAbJ;AAiBF,UAAM;AACF,uBAAiB,0WADf;AAEF,kBAAiB;AAFf;AAjBJ,GA70CsB;AAm2C5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf;AAbJ,GAn2CsB;AAq3C5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf;AAbJ,GAr3CsB;AAu4C5B,QAAM;AACF,UAAM;AACF,uBAAiB,0KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf;AAbJ,GAv4CsB;AAy5C5B,QAAM;AACF,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf;AADJ,GAz5CsB;AA+5C5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GA/5CsB;AAi7C5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GAj7CsB;AAm8C5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KAbJ;AAiBF,UAAM;AACF,uBAAiB,0WADf;AAEF,kBAAiB;AAFf;AAjBJ,GAn8CsB;AAy9C5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf;AAbJ,GAz9CsB;AA2+C5B,QAAM;AACF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AADJ,GA3+CsB;AAi/C5B,QAAM;AACF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AADJ,GAj/CsB;AAu/C5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf;AAbJ,GAv/CsB;AAygD5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf;AAbJ,GAzgDsB;AA2hD5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GA3hDsB;AA6iD5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf;AAbJ,GA7iDsB;AA+jD5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GA/jDsB;AAilD5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf;AAbJ,GAjlDsB;AAmmD5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GAnmDsB;AAqnD5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KAbJ;AAiBF,UAAM;AACF,uBAAiB,wGADf;AAEF,kBAAiB;AAFf;AAjBJ,GArnDsB;AA2oD5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GA3oDsB;AA6pD5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GA7pDsB;AA+qD5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GA/qDsB;AAisD5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf;AAbJ,GAjsDsB;AAmtD5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf;AAbJ,GAntDsB;AAquD5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KAbJ;AAiBF,UAAM;AACF,uBAAiB,wGADf;AAEF,kBAAiB;AAFf;AAjBJ,GAruDsB;AA2vD5B,QAAM;AACF,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf;AADJ,GA3vDsB;AAiwD5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf;AAbJ,GAjwDsB;AAmxD5B,QAAM;AACF,UAAM;AACF,uBAAiB,0KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf;AAbJ,GAnxDsB;AAqyD5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GAryDsB;AAuzD5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GAvzDsB;AAy0D5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KAbJ;AAiBF,UAAM;AACF,uBAAiB,0WADf;AAEF,kBAAiB;AAFf;AAjBJ,GAz0DsB;AA+1D5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf;AAbJ,GA/1DsB;AAi3D5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KAbJ;AAiBF,UAAM;AACF,uBAAiB,0WADf;AAEF,kBAAiB;AAFf;AAjBJ,GAj3DsB;AAu4D5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf;AAbJ,GAv4DsB;AAy5D5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf;AAbJ,GAz5DsB;AA26D5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf;AAbJ,GA36DsB;AA67D5B,QAAM;AACF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AADJ,GA77DsB;AAm8D5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GAn8DsB;AAq9D5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf;AAbJ,GAr9DsB;AAu+D5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf;AAbJ,GAv+DsB;AAy/D5B,QAAM;AACF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf;AALJ,GAz/DsB;AAmgE5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf;AAbJ,GAngEsB;AAqhE5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GArhEsB;AAuiE5B,QAAM;AACF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf;AALJ,GAviEsB;AAijE5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GAjjEsB;AAmkE5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf;AAbJ,GAnkEsB;AAqlE5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf;AAbJ,GArlEsB;AAumE5B,QAAM;AACF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AADJ,GAvmEsB;AA6mE5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GA7mEsB;AA+nE5B,QAAM;AACF,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf;AADJ,GA/nEsB;AAqoE5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf;AAbJ,GAroEsB;AAupE5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf;AAbJ,GAvpEsB;AAyqE5B,QAAM;AACF,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf;AADJ,GAzqEsB;AA+qE5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf;AAbJ,GA/qEsB;AAisE5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf;AAbJ,GAjsEsB;AAmtE5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf;AAbJ,GAntEsB;AAquE5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KAbJ;AAiBF,UAAM;AACF,uBAAiB,0WADf;AAEF,kBAAiB;AAFf;AAjBJ,GAruEsB;AA2vE5B,QAAM;AACF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AADJ,GA3vEsB;AAiwE5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf;AAbJ,GAjwEsB;AAmxE5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf;AAbJ,GAnxEsB;AAqyE5B,QAAM;AACF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AADJ,GAryEsB;AA2yE5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GA3yEsB;AA6zE5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf;AAbJ,GA7zEsB;AA+0E5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GA/0EsB;AAi2E5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf;AAbJ,GAj2EsB;AAm3E5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GAn3EsB;AAq4E5B,QAAM;AACF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AADJ,GAr4EsB;AA24E5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf;AAbJ,GA34EsB;AA65E5B,QAAM;AACF,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf;AAbJ,GA75EsB;AA+6E5B,QAAM;AACF,UAAM;AACF,uBAAiB,0WADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KAbJ;AAiBF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAjBJ,GA/6EsB;AAq8E5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAbJ,GAr8EsB;AAu9E5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf;AADJ,GAv9EsB;AA69E5B,QAAM;AACF,UAAM;AACF,uBAAiB,gJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,0GADf;AAEF,kBAAiB;AAFf;AALJ,GA79EsB;AAu+E5B,QAAM;AACF,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf;AALJ,GAv+EsB;AAi/E5B,QAAM;AACF,UAAM;AACF,uBAAiB,0KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,8IADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf;AAbJ,GAj/EsB;AAmgF5B,QAAM;AACF,UAAM;AACF,uBAAiB,gHADf;AAEF,kBAAiB;AAFf;AADJ,GAngFsB;AAygF5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,ylBADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KAbJ;AAiBF,UAAM;AACF,uBAAiB,oHADf;AAEF,kBAAiB;AAFf;AAjBJ,GAzgFsB;AA+hF5B,QAAM;AACF,UAAM;AACF,uBAAiB,uLADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,mHADf;AAEF,kBAAiB;AAFf;AALJ,GA/hFsB;AAyiF5B,QAAM;AACF,UAAM;AACF,uBAAiB,kNADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,oHADf;AAEF,kBAAiB;AAFf;AALJ,GAziFsB;AAmjF5B,QAAM;AACF,UAAM;AACF,uBAAiB,2nBADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,mHADf;AAEF,kBAAiB;AAFf;AALJ,GAnjFsB;AA6jF5B,QAAM;AACF,UAAM;AACF,uBAAiB,oKADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KAbJ;AAiBF,UAAM;AACF,uBAAiB,oHADf;AAEF,kBAAiB;AAFf;AAjBJ,GA7jFsB;AAmlF5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,oHADf;AAEF,kBAAiB;AAFf;AAbJ,GAnlFsB;AAqmF5B,QAAM;AACF,UAAM;AACF,uBAAiB,mHADf;AAEF,kBAAiB;AAFf;AADJ,GArmFsB;AA2mF5B,QAAM;AACF,UAAM;AACF,uBAAiB,kIADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,oHADf;AAEF,kBAAiB;AAFf;AALJ,GA3mFsB;AAqnF5B,QAAM;AACF,UAAM;AACF,uBAAiB,olBADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AALJ,GArnFsB;AA+nF5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,oHADf;AAEF,kBAAiB;AAFf;AAbJ,GA/nFsB;AAipF5B,QAAM;AACF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AALJ,GAjpFsB;AA2pF5B,QAAM;AACF,UAAM;AACF,uBAAiB,kIADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,wHADf;AAEF,kBAAiB;AAFf;AALJ,GA3pFsB;AAqqF5B,QAAM;AACF,UAAM;AACF,uBAAiB,mHADf;AAEF,kBAAiB;AAFf;AADJ,GArqFsB;AA2qF5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,iJADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,mHADf;AAEF,kBAAiB;AAFf;AAbJ,GA3qFsB;AA6rF5B,QAAM;AACF,UAAM;AACF,uBAAiB,sIADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,oHADf;AAEF,kBAAiB;AAFf;AALJ,GA7rFsB;AAusF5B,QAAM;AACF,UAAM;AACF,uBAAiB,mHADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,oHADf;AAEF,kBAAiB;AAFf;AALJ,GAvsFsB;AAitF5B,QAAM;AACF,UAAM;AACF,uBAAiB,mHADf;AAEF,kBAAiB;AAFf;AADJ,GAjtFsB;AAutF5B,QAAM;AACF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf;AALJ,GAvtFsB;AAiuF5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,ylBADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KAbJ;AAiBF,UAAM;AACF,uBAAiB,oHADf;AAEF,kBAAiB;AAFf;AAjBJ,GAjuFsB;AAuvF5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,oHADf;AAEF,kBAAiB;AAFf,KAbJ;AAiBF,UAAM;AACF,uBAAiB,mHADf;AAEF,kBAAiB;AAFf;AAjBJ,GAvvFsB;AA6wF5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,ylBADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KAbJ;AAiBF,UAAM;AACF,uBAAiB,oHADf;AAEF,kBAAiB;AAFf;AAjBJ,GA7wFsB;AAmyF5B,QAAM;AACF,UAAM;AACF,uBAAiB,iRADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,mHADf;AAEF,kBAAiB;AAFf;AALJ,GAnyFsB;AA6yF5B,QAAM;AACF,UAAM;AACF,uBAAiB,gUADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,gHADf;AAEF,kBAAiB;AAFf;AALJ,GA7yFsB;AAuzF5B,QAAM;AACF,UAAM;AACF,uBAAiB,0GADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,oHADf;AAEF,kBAAiB;AAFf;AALJ,GAvzFsB;AAi0F5B,QAAM;AACF,UAAM;AACF,uBAAiB,oHADf;AAEF,kBAAiB;AAFf;AADJ,GAj0FsB;AAu0F5B,QAAM;AACF,UAAM;AACF,uBAAiB,yZADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,oHADf;AAEF,kBAAiB;AAFf;AALJ,GAv0FsB;AAi1F5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,oHADf;AAEF,kBAAiB;AAFf;AAbJ,GAj1FsB;AAm2F5B,QAAM;AACF,UAAM;AACF,uBAAiB,yJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KAbJ;AAiBF,UAAM;AACF,uBAAiB,oHADf;AAEF,kBAAiB;AAFf;AAjBJ,GAn2FsB;AAy3F5B,QAAM;AACF,UAAM;AACF,uBAAiB,iIADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,mHADf;AAEF,kBAAiB;AAFf;AALJ,GAz3FsB;AAm4F5B,QAAM;AACF,UAAM;AACF,uBAAiB,8LADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,8GADf;AAEF,kBAAiB;AAFf;AALJ,GAn4FsB;AA64F5B,iBAAe;AACX,UAAM;AACF,uBAAiB,wJADf;AAEF,kBAAiB;AAFf,KADK;AAKX,UAAM;AACF,uBAAiB,8HADf;AAEF,kBAAiB;AAFf,KALK;AASX,UAAM;AACF,uBAAiB,qHADf;AAEF,kBAAiB;AAFf,KATK;AAaX,UAAM;AACF,uBAAiB,6GADf;AAEF,kBAAiB;AAFf;AAbK,GA74Fa;AA+5F5B,gBAAc;AACV,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADI;AAKV,UAAM;AACF,uBAAiB,ylBADf;AAEF,kBAAiB;AAFf,KALI;AASV,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATI;AAaV,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KAbI;AAiBV,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KAjBI;AAqBV,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KArBI;AAyBV,UAAM;AACF,uBAAiB,iIADf;AAEF,kBAAiB;AAFf,KAzBI;AA6BV,UAAM;AACF,uBAAiB,wGADf;AAEF,kBAAiB;AAFf,KA7BI;AAiCV,UAAM;AACF,uBAAiB,0WADf;AAEF,kBAAiB;AAFf;AAjCI,GA/5Fc;AAq8F5B,gBAAc;AACV,UAAM;AACF,uBAAiB,0KADf;AAEF,kBAAiB;AAFf,KADI;AAKV,UAAM;AACF,uBAAiB,6QADf;AAEF,kBAAiB;AAFf,KALI;AASV,UAAM;AACF,uBAAiB,4HADf;AAEF,kBAAiB;AAFf,KATI;AAaV,UAAM;AACF,uBAAiB,8IADf;AAEF,kBAAiB;AAFf,KAbI;AAiBV,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KAjBI;AAqBV,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf;AArBI,GAr8Fc;AA+9F5B,QAAM;AACF,UAAM;AACF,uBAAiB,oqBADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KAbJ;AAiBF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAjBJ,GA/9FsB;AAq/F5B,QAAM;AACF,UAAM;AACF,uBAAiB,gJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AALJ,GAr/FsB;AA+/F5B,QAAM;AACF,UAAM;AACF,uBAAiB,iIADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AALJ,GA//FsB;AAygG5B,QAAM;AACF,UAAM;AACF,uBAAiB,iHADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KAbJ;AAiBF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAjBJ,GAzgGsB;AA+hG5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,ylBADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KAbJ;AAiBF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAjBJ,GA/hGsB;AAqjG5B,QAAM;AACF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,wGADf;AAEF,kBAAiB;AAFf;AALJ,GArjGsB;AA+jG5B,QAAM;AACF,UAAM;AACF,uBAAiB,kKADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,6IADf;AAEF,kBAAiB;AAFf,KATJ;AAaF,UAAM;AACF,uBAAiB,kHADf;AAEF,kBAAiB;AAFf,KAbJ;AAiBF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AAjBJ,GA/jGsB;AAqlG5B,QAAM;AACF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,iIADf;AAEF,kBAAiB;AAFf;AALJ,GArlGsB;AA+lG5B,QAAM;AACF,UAAM;AACF,uBAAiB,gJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,iIADf;AAEF,kBAAiB;AAFf;AATJ,GA/lGsB;AA6mG5B,QAAM;AACF,UAAM;AACF,uBAAiB,iJADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,8GADf;AAEF,kBAAiB;AAFf;AALJ,GA7mGsB;AAunG5B,QAAM;AACF,UAAM;AACF,uBAAiB,+KADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,8GADf;AAEF,kBAAiB;AAFf;AALJ,GAvnGsB;AAioG5B,QAAM;AACF,UAAM;AACF,uBAAiB,sHADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,gJADf;AAEF,kBAAiB;AAFf,KALJ;AASF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AATJ,GAjoGsB;AA+oG5B,QAAM;AACF,UAAM;AACF,uBAAiB,uHADf;AAEF,kBAAiB;AAFf,KADJ;AAKF,UAAM;AACF,uBAAiB,+GADf;AAEF,kBAAiB;AAFf;AALJ,GA/oGsB;AAypG5B,QAAM;AACF,UAAM;AACF,uBAAiB,0GADf;AAEF,kBAAiB;AAFf;AADJ;AAzpGsB,CAAzB,C;;ACDP;AAEO,SAASC,iBAAT,OAAkK;AAAA,MAArIjxD,EAAqI,QAArIA,EAAqI;AAAA,MAAjI4B,GAAiI,QAAjIA,GAAiI;AAAA,MAA5H2/C,OAA4H,QAA5HA,OAA4H;AAAA,MAAnHF,KAAmH,QAAnHA,KAAmH;AAAA,MAA5GC,SAA4G,QAA5GA,SAA4G;AACrK,yBACQthD,EADR,icAgBQA,EAhBR,SAgBgB4B,GAhBhB,0BAgB0CnjB,+CAAsB,CAAC5B,KAhBjE,2nBA4BQmjB,EA5BR,SA4BgB4B,GA5BhB,0BA4B0CnjB,+CAAsB,CAAC1B,KA5BjE,4rBAwCQijB,EAxCR,SAwCgB4B,GAxChB,0BAwC0CnjB,+CAAsB,CAAC5B,KAxCjE,8DA4CQmjB,EA5CR,SA4CgB4B,GA5ChB,0BA4C0CnjB,+CAAsB,CAAC1B,KA5CjE,8DAgDQijB,EAhDR,SAgDgB4B,GAhDhB,0BAgD0CnjB,+CAAsB,CAAC5B,KAhDjE,kDAiDQmjB,EAjDR,SAiDgB4B,GAjDhB,0BAiD0CnjB,+CAAsB,CAAC5B,KAjDjE,oGAqDQmjB,EArDR,SAqDgB4B,GArDhB,0BAqD0CnjB,+CAAsB,CAAC1B,KArDjE,kDAsDQijB,EAtDR,SAsDgB4B,GAtDhB,0BAsD0CnjB,+CAAsB,CAAC1B,KAtDjE,oGA0DQijB,EA1DR,SA0DgB4B,GA1DhB,iBA0DiC2/C,OAAO,CAAC5jC,KA1DzC,gEA8DQ3d,EA9DR,SA8DgB4B,GA9DhB,iBA8DiC2/C,OAAO,CAAC5jC,KA9DzC,gEAkEQ3d,EAlER,wEAsEQA,EAtER,s4BA4FQA,EA5FR,SA4FgB4B,GA5FhB,4CA4F4D5B,EA5F5D,SA4FoE4B,GA5FpE,4KAoGQ5B,EApGR,SAoGgB4B,GApGhB,+FAwGQ5B,EAxGR,mLA8GQA,EA9GR,8GAkHQA,EAlHR,4IAsHQA,EAtHR,6KA4HQA,EA5HR,SA4HgB4B,GA5HhB,iBA4HiC2/C,OAAO,CAACn9D,MA5HzC,oCA4HgF4b,EA5HhF,SA4HwF4B,GA5HxF,iBA4HyG2/C,OAAO,CAACn9D,MA5HjH,wFAgIQ4b,EAhIR,+MAuIQA,EAvIR,yIA2IQA,EA3IR,4NAoJQA,EApJR,SAoJgB4B,GApJhB,6FAwJQ5B,EAxJR,wFA4JQA,EA5JR,sOAoKQA,EApKR,uRA4KQA,EA5KR,2RAoLQA,EApLR,gGAwLQA,EAxLR,SAwLgB4B,GAxLhB,iBAwLiC2/C,OAAO,CAACn9D,MAxLzC,sDAyLQ4b,EAzLR,SAyLgB4B,GAzLhB,iBAyLiC2/C,OAAO,CAACn9D,MAzLzC,8CAyL0Fi9D,KAAK,CAAC37B,MAzLhG,oBA0LQ1lB,EA1LR,SA0LgB4B,GA1LhB,iBA0LiC2/C,OAAO,CAACn9D,MA1LzC,8CA0L0Fi9D,KAAK,CAAC37B,MA1LhG,qHA+LQ1lB,EA/LR,SA+LgB4B,GA/LhB,iBA+LiC2/C,OAAO,CAACn9D,MA/LzC,szBA0NQ4b,EA1NR,SA0NgB4B,GA1NhB,iBA0NiC2/C,OAAO,CAACn9D,MA1NzC,UA0NsDi9D,KAAK,CAAC37B,MA1N5D,gsBAoPQ1lB,EApPR,SAoPgB4B,GApPhB,iBAoPiC2/C,OAAO,CAACn9D,MApPzC,UAoPsDi9D,KAAK,CAAC37B,MApP5D,yKA2PQ1lB,EA3PR,SA2PgB4B,GA3PhB,iBA2PiC2/C,OAAO,CAACn9D,MA3PzC,UA2PsDi9D,KAAK,CAAC37B,MA3P5D,kBA2PiF27B,KAAK,CAAC17B,eA3PvF,6DA+PQ3lB,EA/PR,SA+PgB4B,GA/PhB,iBA+PiC2/C,OAAO,CAACn9D,MA/PzC,UA+PsDi9D,KAAK,CAAC37B,MA/P5D,kBA+PiF27B,KAAK,CAACz7B,eA/PvF,6DAmQQ5lB,EAnQR,SAmQgB4B,GAnQhB,iBAmQiC2/C,OAAO,CAACn9D,MAnQzC,UAmQsDi9D,KAAK,CAAC37B,MAnQ5D,kBAmQiF27B,KAAK,CAACj4C,OAnQvF,sFAwQQpJ,EAxQR,SAwQgB4B,GAxQhB,iBAwQiC2/C,OAAO,CAACn9D,MAxQzC,UAwQsDi9D,KAAK,CAAC37B,MAxQ5D,kBAwQiF27B,KAAK,CAACx7B,SAxQvF,mJA8QY7lB,EA9QZ,8FAkRYA,EAlRZ,qNAyRYA,EAzRZ,SAyRoB4B,GAzRpB,iBAyRqC2/C,OAAO,CAACn9D,MAzR7C,0DA0RY4b,EA1RZ,SA0RoB4B,GA1RpB,iBA0RqC2/C,OAAO,CAACn9D,MA1R7C,UA0R0Di9D,KAAK,CAAC37B,MA1RhE,qnBA2SQ1lB,EA3SR,SA2SgB4B,GA3ShB,iBA2SiC2/C,OAAO,CAACn9D,MA3SzC,UA2SsDi9D,KAAK,CAAC37B,MA3S5D,6IAiT0B47B,SAAS,CAACn7B,cAjTpC,0XA+TkBm7B,SAAS,CAACn7B,cA/T5B,kYA6U0Bm7B,SAAS,CAACj7B,cA7UpC,6VA0VkBi7B,SAAS,CAACj7B,cA1V5B;AA0ZH,C;;;;AC7ZM,SAAS6qC,eAAT,OAA2F;AAAA,MAAhElxD,EAAgE,QAAhEA,EAAgE;AAAA,MAA5DshD,SAA4D,QAA5DA,SAA4D;AAC9F,yBACQthD,EADR,gsBA4BQA,EA5BR,0QAqC0BshD,SAAS,CAACp7B,cArCpC,4KA+CkBo7B,SAAS,CAACp7B,cA/C5B,oLAyD0Bo7B,SAAS,CAACl7B,cAzDpC,6OAuEkBk7B,SAAS,CAACl7B,cAvE5B;AAqFH,C;;;;;;ACvFD;;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA,IAAM+qC,UAAU,kCACV1yE,+CAAsB,CAAC5B,KADb,IACsBI,0CAAiB,CAACF,KADxC,cAEV0B,+CAAsB,CAAC1B,KAFb,IAEsBE,0CAAiB,CAACJ,KAFxC,cAAhB;CAUA;;AAoBO,SAAS6kE,iBAAT,OAAgK;AAAA,MAAnI1hD,EAAmI,QAAnIA,EAAmI;AAAA,MAA/HwE,KAA+H,QAA/HA,KAA+H;AAAA,MAAxH68C,KAAwH,QAAxHA,KAAwH;AAAA,MAAjHC,SAAiH,QAAjHA,SAAiH;AAAA,MAAtGC,OAAsG,QAAtGA,OAAsG;AAAA,MAA7FC,KAA6F,QAA7FA,KAA6F;AAAA,MAAtF1jD,EAAsF,QAAtFA,EAAsF;AAAA,MAAlF8D,GAAkF,QAAlFA,GAAkF;AAAA,MAA7ExJ,OAA6E,QAA7EA,OAA6E;AAAA,MAApEqpD,OAAoE,QAApEA,OAAoE;AAAA,MAA3DzD,MAA2D,QAA3DA,MAA2D;AAAA,MAAnD9xC,MAAmD,QAAnDA,MAAmD;;AAAA,4BAEzI1H,KAAK,CAAC+K,MAAN,CAAa9U,KAAb,CAAmB,GAAnB,CAFyI;AAAA,MAE3JgV,IAF2J;AAAA,MAErJD,OAFqJ;;AAInK,MAAMrD,OAAO,GAAG6kD,gBAAgB,CAACxhD,OAAD,CAAhB,CAA0BC,IAA1B,CAAhB;;AAEA,WAASjO,KAAT,CAAeoC,KAAf,EAAsB;AAClBA,SAAK,CAACwtD,cAAN;AACAxtD,SAAK,CAACkF,eAAN;AACA24C,WAAO,CAACjgD,KAAR;AACH;;AAED,WAASsxC,KAAT,CAAelvC,KAAf,EAAsB;AAClBA,SAAK,CAACwtD,cAAN;AACAxtD,SAAK,CAACkF,eAAN;;AAEA,QAAI4sB,+BAAK,EAAT,EAAa;AACT;AACAjiC,YAAM,CAAC49D,KAAP,CAAa,oDAAb;AACH,KAHD,MAGO;AACH97D,+CAAY,CAAC4B,GAAb,CAAiBsqD,OAAO,CAAC3O,KAAzB,EAAgC/7C,KAAhC,CAAsC0qD,OAAO,CAACjgD,KAA9C;AACH;AACJ;;AAED,MAAM9B,KAAK,GAAG8E,KAAK,CAAC9E,KAAN,IAAe,EAA7B;AACA,MAAM4xD,YAAY,GAAG5xD,KAAK,CAAC4xD,YAAN,IAAsB7yE,+CAAsB,CAAC5B,KAAlE;AACA,MAAM6wE,SAAS,GAAGyD,UAAU,CAACG,YAAD,CAA5B;AAEA,MAAMC,MAAM,GAAI,OAAO1B,YAAY,CAAC2B,EAApB,KAA2B,UAA5B,GACT3B,YAAY,CAAC2B,EAAb,CAAgB;AAAE9D,aAAS,EAATA;AAAF,GAAhB,CADS,GAETmC,YAAY,CAAC2B,EAAb,CAAgB9D,SAAhB,CAFN;AAIA,MAAMgC,UAAU,GAAI,OAAOG,YAAY,CAACla,MAApB,KAA+B,UAAhC,GACbka,YAAY,CAACla,MAAb,CAAoB;AAAE+X,aAAS,EAATA;AAAF,GAApB,CADa,GAEbmC,YAAY,CAACla,MAAb,CAAoB+X,SAApB,CAFN;AAIA,MAAM7tD,EAAE,GACJ;AAAK,MAAE,EAAGG,EAAV;AAAe,WAAO,EAAG8yC,KAAzB;AAAiC,SAAK,EAAOlxC,GAAP,iBAAwBxJ,OAAxB,iCAA6DwJ,GAA7D,0BAAuF0vD,YAAvF,SAAyG1vD,GAAzG,oBAA6H8rD;AAAnK,KACI;AAAG,QAAI,EAAC,GAAR;AAAY,SAAK,EAAC,uBAAlB;AAA0C,WAAO,EAAGlsD,KAApD;AAA4D,kBAAW,OAAvE;AAA+E,QAAI,EAAC;AAApF,IADJ,EAEI;AAAK,SAAK,EAAC;AAAX,KACI;AAAK,SAAK,EAAC;AAAX,KACI;AACI,SAAK,EAAC,yBADV;AACoC,OAAG,EAAC,IADxC;AAEI,OAAG,iCAAiCs1B,0CAAY,CAACy6B,MAAM,CAAC39D,QAAP,EAAD;AAFpD,IADJ,EAII;AACI,SAAK,EAAC,6BADV;AACwC,OAAG,EAAC,QAD5C;AAEI,OAAG,iCAAiCkjC,0CAAY,CAAC44B,UAAU,CAAC97D,QAAX,EAAD;AAFpD,IAJJ,CADJ,EASI;AAAK,SAAK,EAAC;AAAX,KACKuY,OAAO,CAACslD,aADb,CATJ,EAYI;AAAK,SAAK,EAAC;AAAX,KACI;AAAG,WAAO,EAAG3e,KAAb;AAAqB,QAAI,EAAC;AAA1B,KAA+B3mC,OAAO,CAACulD,QAAvC,CADJ,CAZJ,EAeI;AAAK,SAAK,EAAC;AAAX,KACI;AAAK,SAAK,EAAC;AAAX,IADJ,CAfJ,CAFJ,EAsBI;AAAK,SAAK,EAAC;AAAX,KACK1T,MADL,CAtBJ,EA0BI,sBAAQiT,iBAAiB,CAAC;AAAEjxD,MAAE,EAAFA,EAAF;AAAM4B,OAAG,EAAHA,GAAN;AAAW2/C,WAAO,EAAPA,OAAX;AAAoBF,SAAK,EAALA,KAApB;AAA2BC,aAAS,EAATA;AAA3B,GAAD,CAAzB,CA1BJ,CADJ;AA+BA,MAAMjiD,SAAS,GACX,qBACI,qBACMQ,EADN,CADJ,CADJ;AAQA/B,IAAE,CAAC0jD,KAAK,CAACv9B,KAAP,EAAc,YAAM;AAClBpkB,MAAE,CAAC4C,SAAH,UAAqBb,GAArB;AACH,GAFC,CAAF;AAIA,SACI;AAAK,MAAE,EAAG5B,EAAV;AAAe,SAAK,EAAC;AAArB,KACI,sBAASkxD,eAAe,CAAC;AAAElxD,MAAE,EAAFA,EAAF;AAAMshD,aAAS,EAATA;AAAN,GAAD,CAAxB,CADJ,EAGI;AAAQ,SAAK,EAAC,yBAAd;AAAwC,QAAI,iCAAiCthD,EAAjC,OAA5C;AAAuF,aAAS,EAAC,IAAjG;AAAsG,SAAK,EAAC;AAA5G,KACMX,SADN,CAHJ,CADJ;AASH,C;;ACnID;;;;;ACDA;AAEA;AACA;AACA;AAGA;AAEA;AAIA;AACA;AACA;AACA;AAEA;;AAEA,SAASsyD,SAAT,CAAmB99D,IAAnB,EAAyB8B,KAAzB,EAAuC;AAEnC,MAAI,CAAClC,MAAM,CAACm+D,IAAZ,EAAkB;AACd;AACH;;AAED,MAAIn+D,MAAM,CAACm+D,IAAP,CAAYD,SAAhB,EAA2B;AACvB,WAAOl+D,MAAM,CAACm+D,IAAP,CAAYD,SAAZ,CAAsB99D,IAAtB,EAA4B8B,KAA5B,CAAP;AACH;AACJ,C,CAED;;;AAiBO,IAAMw0D,kBAAuC,GAAGztB,gBAAM,CAAC;AAE1D96B,KAAG,EAAG,iBAFoD;AAG1D/N,MAAI,EAAE,YAHoD;AAK1D+mD,WAAS,EAAE,IAL+C;AAO1D+D,UAP0D,oBAOjDn6C,KAPiD,EAOnB;AACnC,QAAM6K,GAAG,GAAG7K,KAAK,CAAC6K,GAAN,IAAatB,wBAAM,CAACsB,GAAhC;;AAEA,QAAI,CAAC7K,KAAK,CAAComD,OAAX,EAAoB;AAChB,YAAM,IAAIx0D,KAAJ,0CAAN;AACH;;AAED,WAAOoO,KAAK,CAAComD,OAAN,GAAgB72D,IAAhB,CAAqB,UAAA8kC,KAAK,EAAI;AACjC,UAAI,CAACA,KAAL,EAAY;AACR,cAAM,IAAIziC,KAAJ,qDAA6DyiC,KAA7D,CAAN;AACH;;AAED,aAAOgyB,YAAY,CAACx7C,GAAD,EAAM7K,KAAK,CAACsmD,aAAZ,EAA2BjyB,KAA3B,CAAnB;AACH,KANM,CAAP;AAOH,GArByD;;AAuB1D,MAAI4mB,cAAJ,GAA+B;AAC3B,WAAO1xC,wBAAM,CAACsB,GAAP,KAAe7uB,4BAAG,CAACC,KAA1B;AACH,GAzByD;;AA2B1D,MAAI8xB,MAAJ,GAAsB;AAClB,sDACOxE,wBAAM,CAACoE,aADd;AAGH,GA/ByD;;AAiC1D,MAAI+tC,SAAJ,GAAyB;AACrB,WAAOnyC,wBAAM,CAAC6G,aAAd;AACH,GAnCyD;;AAqC1D,MAAIwrC,YAAJ,GAA4B;AACxB,WAAOryC,wBAAM,CAACoE,aAAd;AACH,GAvCyD;;AAyC1D8vC,UAAQ,EAAE;AACN3+C,UAAM,EAAG,CAACkzB,wCAAc,EADlB;AAEN71B,SAAK,EAAG;AAFF,GAzCgD;;AA8C1D,MAAIuO,OAAJ,GAAuB;AACnB,WAAOk4C,gBAAgB,EAAvB;AACH,GAhDyD;;AAkD1DxK,UAlD0D,sBAkD/C;AACP,QAAI,CAACiJ,UAAU,EAAf,EAAmB;AACfr7C,kDAAI,CAAC,4BAAD,CAAJ;AACH;AACJ,GAtDyD;AAwD1D+1C,mBAAiB,EAAE8M,iBAxDuC;AAyD1D3L,mBAAiB,EAAjBA,iBAzD0D;AA2D1Dl9C,OAAK,EAAE;AAEHq/B,aAAS,EAAE;AACPloC,UAAI,EAAM,QADH;AAEPy8C,cAAQ,EAAE,KAFH;AAGP79C,SAHO,iBAGQ;AACX,eAAO8kC,2CAAY,EAAnB;AACH,OALM;AAMPie,gBAAU,EAAE;AANL,KAFR;AAWHrZ,mBAAe,EAAE;AACbtoC,UAAI,EAAM,QADG;AAEby8C,cAAQ,EAAE,KAFG;AAGb79C,SAHa,iBAGG;AACZ,eAAOypC,iDAAkB,EAAzB;AACH,OALY;AAMbsZ,gBAAU,EAAE;AANC,KAXd;AAoBHjuC,OAAG,EAAE;AACD1T,UAAI,EAAQ,QADX;AAEDy8C,cAAQ,EAAI,KAFX;AAGDkF,gBAAU,EAAE,IAHX;AAKD/iD,SALC,iBAKc;AACX,eAAOwT,wBAAM,CAACsB,GAAd;AACH,OAPA;AASDutC,cATC,oBASQvtC,GATR,EASa;AACV,YAAI,CAACtB,wBAAM,CAACiE,UAAP,CAAkB3C,GAAlB,CAAL,EAA6B;AACzB,gBAAM,IAAIjZ,KAAJ,mBAA2BiZ,GAA3B,CAAN;AACH;AACJ;AAbA,KApBF;AAoCH2K,QAAI,EAAE;AACFre,UAAI,EAAM,QADR;AAEFy8C,cAAQ,EAAE,KAFR;AAGF79C,SAHE,iBAGa;AACX,YAAMyf,IAAI,GAAGvmB,MAAM,CAACmwC,MAAP,IAAiBnwC,MAAM,CAACmwC,MAAP,CAAc5pB,IAA5C;AACA,eAAOA,IAAI,IAAI,EAAf;AACH;AANC,KApCH;AA6CHtK,SAAK,EAAE;AACH/T,UAAI,EAAQ,QADT;AAEHy8C,cAAQ,EAAI,KAFT;AAGHkF,gBAAU,EAAE,IAHT;AAKH/iD,SALG,eAKCiK,KALD,EAKkB;AACjB,YAAM6K,GAAG,GAAG7K,KAAK,CAAC6K,GAAN,IAAatB,wBAAM,CAACsB,GAAhC;;AAEA,YAAIA,GAAG,KAAK7uB,4BAAG,CAACE,KAAZ,IAAqB2uB,GAAG,KAAK7uB,4BAAG,CAACC,KAArC,EAA4C;AACxC,iBAAOstB,wBAAM,CAAC2B,KAAd;AACH;AACJ;AAXE,KA7CJ;AA2DHE,YAAQ,EAAE;AACNjU,UAAI,EAAQ,QADN;AAENy8C,cAAQ,EAAI,KAFN;AAGNkF,gBAAU,EAAE,IAHN;AAKN/iD,SALM,eAKFiK,KALE,EAKe;AACjB,YAAM6K,GAAG,GAAG7K,KAAK,CAAC6K,GAAN,IAAatB,wBAAM,CAACsB,GAAhC;;AAEA,YAAIA,GAAG,KAAK7uB,4BAAG,CAACE,KAAZ,IAAqB2uB,GAAG,KAAK7uB,4BAAG,CAACC,KAArC,EAA4C;AACxC,iBAAOstB,wBAAM,CAAC6B,QAAd;AACH;AACJ;AAXK,KA3DP;AAyEHO,YAAQ,EAAE;AACNxU,UAAI,EAAM,QADJ;AAENy8C,cAAQ,EAAE,KAFJ;AAGN79C,SAHM,iBAGS;AACX,eAAOwT,wBAAM,CAACoC,QAAd;AACH,OALK;AAMNmtC,gBAAU,EAAE;AANN,KAzEP;AAkFHvtC,gBAAY,EAAE;AACVpU,UAAI,EAAQ,QADF;AAEVy8C,cAAQ,EAAI,KAFF;AAGVkF,gBAAU,EAAE,IAHF;AAKV/iD,SALU,eAKNiK,KALM,EAKW;AACjB,YAAM6K,GAAG,GAAG7K,KAAK,CAAC6K,GAAN,IAAatB,wBAAM,CAACsB,GAAhC;;AAEA,YAAIA,GAAG,KAAK7uB,4BAAG,CAACC,KAAhB,EAAuB;AACnB,iBAAOstB,wBAAM,CAACgC,YAAd;AACH;AACJ;AAXS,KAlFX;AAgGH4C,eAAW,EAAE;AACThX,UAAI,EAAQ,QADH;AAETy8C,cAAQ,EAAI,KAFH;AAGTkF,gBAAU,EAAE,IAHH;AAKT/iD,SALS,iBAKO;AACZ,eAAOwT,wBAAM,CAAC4E,WAAd;AACH;AAPQ,KAhGV;AA0GHpD,UAAM,EAAE;AACJ5T,UAAI,EAAW,QADX;AAEJy8C,cAAQ,EAAO,KAFX;AAGJkF,gBAAU,EAAK,UAHX;AAIJoD,mBAAa,EAAE,IAJX;AAMJnmD,SANI,iBAMW;AAAA,gCACekuC,uCAAgB,EAD/B;AAAA,YACHh5B,IADG,qBACHA,IADG;AAAA,YACGD,OADH,qBACGA,OADH;;AAEX,eAAWC,IAAX,SAAqBD,OAArB;AACH;AATG,KA1GL;AAuHHgiB,UAAM,EAAE;AACJ71B,UAAI,EAAM,QADN;AAEJy8C,cAAQ,EAAE,KAFN;AAGJ79C,SAHI,iBAG0B;AAC1B,eAAO,EAAP;AACH,OALG;AAMJmiD,iBAAW,EAAE,KANT;AAQJE,cARI,oBAQKprB,MARL,EAQahtB,KARb,EAQoB;AACpB,YAAM6K,GAAG,GAAG7K,KAAK,CAAC6K,GAAN,IAAatB,wBAAM,CAACsB,GAAhC;;AAEA,YAAI,CAACmiB,MAAM,CAACniB,GAAD,CAAX,EAAkB;AACd,gBAAM,IAAIjZ,KAAJ,mCAA2CiZ,GAA3C,CAAN;AACH;;AAED,YAAImiB,MAAM,CAACniB,GAAD,CAAN,CAAYrS,KAAZ,CAAkB,UAAlB,CAAJ,EAAmC;AAC/B,gBAAM,IAAI5G,KAAJ,yBAAiCo7B,MAAM,CAACniB,GAAD,CAAvC,CAAN;AACH;AACJ;AAlBG,KAvHL;AA4IHu7C,WAAO,EAAE;AACLjvD,UAAI,EAAO,UADN;AAELy8C,cAAQ,EAAG,KAFN;AAGL15C,aAAO,EAAI,IAHN;AAIL6N,eAAS,EAAE,IAJN;AAKL+wC,gBALK,sBAKMsN,OALN,EAKsC;AACvC,eAAOA,OAAO,GAAG72D,IAAV,CAAe,UAAA8kC,KAAK,EAAI;AAC3B,iBAAO6xB,2BAA2B,CAAC7xB,KAAD,CAAlC;AACH,SAFM,CAAP;AAGH,OATI;AAUL2kB,gBAVK,sBAUMoN,OAVN,EAUsC;AACvC,eAAOA,OAAO,EAAd;AACH,OAZI;AAaL1S,mBAbK,yBAaS0S,OAbT,EAa+C;AAChD,YAAM/xB,KAAK,GAAG10B,oCAAa,CAAC,OAAD,CAA3B;AAEA,eAAO00B,KAAK,GACNn6B,+BAAO,CAAC;AAAA,iBAAMnJ,yCAAY,CAACL,OAAb,CAAqB2jC,KAArB,CAAN;AAAA,SAAD,CADD,GAEN+xB,OAFN;AAGH,OAnBI;AAoBLhO,cApBK,oBAoBIgO,OApBJ,EAoBapmD,KApBb,EAoBoB;AACrB,YAAI,CAAComD,OAAD,IAAY,CAACpmD,KAAK,CAAC5D,GAAvB,EAA4B;AACxB,gBAAM,IAAIxK,KAAJ,2DAAN;AACH;AACJ,OAxBI;AAyBLkiD,WAAK,EAAE;AAzBF,KA5IN;AAwKH54C,SAAK,EAAE;AACH/D,UAAI,EAAW,QADZ;AAEHy8C,cAAQ,EAAO,KAFZ;AAGHsI,mBAAa,EAAE,IAHZ;AAIHnmD,SAJG,iBAIY;AACX,eAAO,EAAP;AACH,OANE;AAOHqiD,cAPG,oBAOMl9C,KAPN,EAOa;AACZ,YAAIA,KAAK,CAAC4xD,YAAN,IAAsB5xD,KAAK,CAAC4xD,YAAN,KAAuB7yE,+CAAsB,CAAC5B,KAApE,IAA6E6iB,KAAK,CAAC4xD,YAAN,KAAuB7yE,+CAAsB,CAAC1B,KAA/H,EAAsI;AAClI,gBAAM,IAAIqZ,KAAJ,gCAAwCsJ,KAAK,CAAC4xD,YAA9C,CAAN;AACH;AACJ;AAXE,KAxKJ;AAsLHO,UAAM,EAAE;AACJl2D,UAAI,EAAM,SADN;AAEJy8C,cAAQ,EAAE;AAFN,KAtLL;AA2LH0Z,cAAU,EAAE;AACRn2D,UAAI,EAAM,QADF;AAERy8C,cAAQ,EAAE,KAFF;AAGR79C,SAHQ,iBAGO;AACX,eAAO,EAAP;AACH;AALO,KA3LT;AAmMHuwD,iBAAa,EAAE;AACXnvD,UAAI,EAAQ,QADD;AAEXy8C,cAAQ,EAAI,KAFD;AAGXkF,gBAAU,EAAE;AAHD,KAnMZ;AAyMHyU,kBAAc,EAAE;AACZp2D,UAAI,EAAQ,QADA;AAEZy8C,cAAQ,EAAI,KAFA;AAGZkF,gBAAU,EAAE,IAHA;AAIZ/iD,SAJY,iBAIG;AACX,YAAMy3D,QAAQ,GAAGh3D,KAAK,CAACzE,SAAN,CAAgB6D,KAAhB,CAAsBtG,IAAtB,CAA2BmM,QAAQ,CAACL,gBAAT,OAA+B9d,kCAAS,CAACE,cAAzC,OAA3B,CAAjB;AAEA,YAAMiwE,cAAc,GAAGD,QAAQ,CAACh6D,GAAT,CAAa,UAAA6H,EAAE,EAAI;AACtC,iBAAOA,EAAE,CAAC2tC,YAAH,CAAgB1rD,kCAAS,CAACE,cAA1B,CAAP;AACH,SAFsB,CAAvB,CAHW,CAOX;;AACA,eAAOiwE,cAAP;AACH,OAbW;AAcZzU,gBAAU,EAAE,oBAACxjD,GAAD,EAAS;AACjB,eAAOA,GAAG,CAACuC,IAAJ,CAAS,GAAT,CAAP;AACH;AAhBW,KAzMb;AA4NH8sD,eAAW,EAAE;AACT1tD,UAAI,EAAM,UADD;AAETy8C,cAAQ,EAAE,IAFD;AAGTl6C,UAAI,EAAM,IAHD;AAKTg/C,cALS,oBAKAlyB,QALA,EAK4B;AACjC,YAAIA,QAAJ,EAAc;AACV,iBAAO,SAASknC,mBAAT,CAA6Bp7C,IAA7B,EAAmC2qC,OAAnC,EAAsE;AAAA;;AAAA,gBAAnCA,OAAmC;AAAnCA,qBAAmC,GAAzB,EAAyB;AAAA;;AAEzE,gBAAI3qC,IAAI,IAAI,CAACA,IAAI,CAACw0C,MAAlB,EAA0B;AACtB9gD,0DAAI,iCAAiC;AAAE0/C,yBAAS,EAAEpzC,IAAI,CAACozC,SAAlB;AAA6BrxB,qBAAK,EAAE/hB,IAAI,CAACkuC;AAAzC,eAAjC,CAAJ;AACH;;AAED,gBAAMxjD,KAAK,GAAG,SAARA,KAAQ,GAAM;AAChB,qBAAOjM,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAC1B,oBAAIsqD,OAAO,CAACjgD,KAAZ,EAAmB;AACf,yBAAOigD,OAAO,CAACjgD,KAAR,EAAP;AACH;AACJ,eAJM,EAIJzN,IAJI,CAIC,YAAM;AACV,uBAAO,KAAI,CAACmtD,cAAL,EAAP;AACH,eANM,CAAP;AAOH,aARD;;AAUA,gBAAM7lB,QAAQ,GAAG,SAAXA,QAAW,CAACp6B,GAAD,EAAML,GAAN,EAAc;AAC3B,qBAAOrL,yCAAY,CAACkC,GAAb,CAAiB,CACpB06D,+BAAK,CAAClxD,GAAG,IAAIxN,MAAM,CAACwR,GAAf,EAAoBrE,GAAG,IAAIkW,IAAI,CAACizC,SAAhC,CADe,EAEpBvoD,KAAK,EAFe,CAAjB,CAAP;AAIH,aALD;;AAOA,mBAAOjM,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAE1B,kBAAI;AACA,oBAAMi7D,QAAQ,GAAG3+D,MAAM,CAACgO,QAAP,CAAgB2c,IAAhB,CAAqB/pB,OAArB,CAA6B,eAA7B,MAAkD,CAAC,CAApE;AACA,oBAAMg+D,OAAO,GAAI,KAAI,CAAC5+D,MAAL,CAAYgO,QAAZ,CAAqB2c,IAArB,CAA0B/pB,OAA1B,CAAkC,uBAAlC,MAA+D,CAAC,CAAjF;;AAEA,oBAAI+9D,QAAQ,IAAIC,OAAhB,EAAyB;AACrB,yBAAO3hC,OAAO,CAAC;AACXzvB,uBAAG,EAAK,KAAI,CAACxN,MADF;AAEX0E,0BAAM,EAAE,KAFG;AAGXyI,uBAAG,EAAK;AAHG,mBAAD,CAAP,CAIJ7M,IAJI,CAIC,UAAAiC,MAAM,EAAI;AACd,wBAAIA,MAAM,IAAIA,MAAM,CAAC8gB,IAAjB,IAAyB9gB,MAAM,CAAC8gB,IAAP,CAAYw7C,YAAzC,EAAuD;AACnDX,+BAAS,CAAC,wBAAD,EAA2B37D,MAAM,CAAC8gB,IAAP,CAAYw7C,YAAvC,CAAT;AACH;AACJ,mBARM,EAQJv7D,KARI,CAQE,YAAM,CACX;AACH,mBAVM,CAAP;AAWH;AAEJ,eAlBD,CAkBE,OAAO/C,GAAP,EAAY,CACV;AACH;AAEJ,aAxBM,EAwBJD,IAxBI,CAwBC,YAAM;AACV,qBAAOi3B,QAAQ,CAACl3B,IAAT,CAAc,KAAd,EAAoBgjB,IAApB,6CAA+B2qC,OAA/B;AAAwCjgD,qBAAK,EAALA,KAAxC;AAA+C65B,wBAAQ,EAARA;AAA/C,iBAAP;AACH,aA1BM,EA0BJtkC,KA1BI,CA0BE,UAAA/C,GAAG,EAAI;AACZ,qBAAO,KAAI,CAAC4B,KAAL,CAAW5B,GAAX,CAAP;AACH,aA5BM,EA4BJiD,OA5BI,CA4BI,YAAM;AACb,qBAAO,KAAI,CAACuK,KAAL,EAAP;AACH,aA9BM,CAAP;AA+BH,WAtDD;AAuDH;AACJ;AA/DQ,KA5NV;AA8RH+wD,oBAAgB,EAAE;AACd52D,UAAI,EAAM,UADI;AAEdy8C,cAAQ,EAAE;AAFI,KA9Rf;AAmSHoa,UAAM,EAAE;AACJ72D,UAAI,EAAQ,UADR;AAEJy8C,cAAQ,EAAI,KAFR;AAGJC,gBAAU,EAAE,IAHR;AAIJH,mBAJI,yBAIUltB,QAJV,EAI2C;AAC3C,YAAIA,QAAJ,EAAc;AACV,iBAAO,SAASynC,UAAT,CAAoB37C,IAApB,EAAqD;AACxD,gBAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;AAC1BA,kBAAI,GAAG;AAAE47C,2BAAW,EAAE57C;AAAf,eAAP;AACH;;AACD,mBAAOkU,QAAQ,CAAClU,IAAD,CAAf;AACH,WALD;AAMH;AACJ;AAbG,KAnSL;AAmTH47C,eAAW,EAAE;AACT/2D,UAAI,EAAM,UADD;AAETy8C,cAAQ,EAAE;AAFD,KAnTV;AAwTHua,YAAQ,EAAE;AACNh3D,UAAI,EAAM,UADJ;AAENy8C,cAAQ,EAAE,KAFJ;AAGNl6C,UAAI,EAAM,IAHJ;AAINI,UAAI,EAAM,IAJJ;AAMN4+C,cANM,oBAMGlyB,QANH,EAMwB;AAC1B,eAAO,SAAS4nC,gBAAT,CAA0B97C,IAA1B,EAAgC2qC,OAAhC,EAAmE;AAAA;;AAAA,cAAnCA,OAAmC;AAAnCA,mBAAmC,GAAzB,EAAyB;AAAA;;AAEtE,cAAMjgD,KAAK,GAAG,SAARA,KAAQ,GAAM;AAChB,mBAAOjM,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAC1B,kBAAIsqD,OAAO,CAACjgD,KAAZ,EAAmB;AACf,uBAAOigD,OAAO,CAACjgD,KAAR,EAAP;AACH;AACJ,aAJM,EAIJzN,IAJI,CAIC,YAAM;AACV,qBAAO,MAAI,CAACmtD,cAAL,EAAP;AACH,aANM,CAAP;AAOH,WARD;;AAUA,cAAM7lB,QAAQ,GAAG,SAAXA,QAAW,CAACp6B,GAAD,EAAML,GAAN,EAAc;AAC3B,mBAAOrL,yCAAY,CAACkC,GAAb,CAAiB,CACpB06D,+BAAK,CAAClxD,GAAG,IAAIxN,MAAM,CAACwR,GAAf,EAAoBrE,GAAG,IAAIkW,IAAI,CAAC+7C,SAAhC,CADe,EAEpBrxD,KAAK,EAFe,CAAjB,CAAP;AAIH,WALD;;AAOA,iBAAOjM,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAC1B,mBAAO6zB,QAAQ,CAACl3B,IAAT,CAAc,MAAd,EAAoBgjB,IAApB,6CAA+B2qC,OAA/B;AAAwCjgD,mBAAK,EAALA,KAAxC;AAA+C65B,sBAAQ,EAARA;AAA/C,eAAP;AACH,WAFM,EAEJpkC,OAFI,CAEI,YAAM;AACb,kBAAI,CAACuK,KAAL;AACH,WAJM,CAAP;AAKH,SAxBD;AAyBH;AAhCK,KAxTP;AA2VH4a,QAAI,EAAE;AACFzgB,UAAI,EAAM,UADR;AAEFy8C,cAAQ,EAAE,KAFR;AAGFl6C,UAAI,EAAM,IAHR;AAIFI,UAAI,EAAM,IAJR;AAMF4+C,cANE,oBAMOlyB,QANP,EAM4B;AAC1B,eAAO,SAAS8nC,YAAT,CAAsBh8C,IAAtB,EAAmC;AAAA;;AACtC7I,sDAAI,CAAC,eAAD,CAAJ;AAEAsM,uDAAK,sBACCl4B,6BAAI,CAACC,GAAL,CAASE,KADV,IAC0BH,6BAAI,CAACG,KAAL,CAAWtH,QADrC,SAECmH,6BAAI,CAACC,GAAL,CAASG,UAFV,IAE0BJ,6BAAI,CAACI,UAAL,CAAgB0C,aAF1C,SAGC9C,6BAAI,CAACC,GAAL,CAASS,YAHV,IAG0BV,6BAAI,CAACU,YAAL,CAAkBtB,qCAAY,CAACC,QAA/B,CAH1B,SAICW,6BAAI,CAACC,GAAL,CAASO,KAJV,IAI0Bi0B,IAAI,CAACkuC,YAJ/B,SAKC3iE,6BAAI,CAACC,GAAL,CAASW,SALV,IAK0B6zB,IAAI,CAAC5G,UAL/B,SAMC7tB,6BAAI,CAACC,GAAL,CAASQ,UANV,IAM0Bg0B,IAAI,CAACkuC,YAN/B,UAAL;AASAe,uDAAS;AAET,eAAKf,YAAL,GAAoBluC,IAAI,CAACkuC,YAAzB;AACA,eAAK6N,SAAL,GAAoB/7C,IAAI,CAAC+7C,SAAzB;AAEA,iBAAO7nC,QAAQ,CAAC1yB,KAAT,CAAe,IAAf,EAAqBmG,SAArB,CAAP;AACH,SAlBD;AAmBH;AA1BC,KA3VH;AAwXHs8C,WAAO,EAAE;AACLp/C,UAAI,EAAO,UADN;AAELy8C,cAAQ,EAAG,KAFN;AAGLl6C,UAAI,EAAO,IAHN;AAILqO,eAAS,EAAE,IAJN;AAKLjO,UAAI,EAAO,IALN;AAOL4+C,cAPK,oBAOIlyB,QAPJ,EAOyB;AAC1B,eAAO,SAAS+nC,eAAT,CAAyBjZ,MAAzB,EAAsD;AAEzD,cAAMiB,OAAO,GAAG/vB,QAAQ,CAAC1yB,KAAT,CAAe,IAAf,EAAqBmG,SAArB,CAAhB;AAEA,cAAM+nB,aAAa,GAAGW,SAAS,CAACX,aAAhC;AAEA,cAAMwsC,YAAY,GACd,KAAKxuD,KAAL,CAAWmuD,QAAX,IACA,CAAEnsC,aAAa,CAACG,cAAhB,EAAgCH,aAAa,CAACI,WAA9C,EAA4DvyB,OAA5D,CAAoEylD,MAApE,MAAgF,CAAC,CAFrF;;AAIA,cAAIkZ,YAAJ,EAAkB;AACd/kD,wDAAI,wBAAJ;AACA,mBAAO,KAAKzJ,KAAL,CAAWmuD,QAAX,CAAoB;AACvB3N,0BAAY,EAAE,KAAKA,YADI;AAEvB6N,uBAAS,EAAK,KAAKA;AAFI,aAApB,EAGJ9+D,IAHI,CAGC;AAAA,qBAAMgnD,OAAN;AAAA,aAHD,CAAP;AAIH;;AAED,iBAAOA,OAAP;AACH,SAnBD;AAoBH;AA5BI,KAxXN;AAuZHjkD,WAAO,EAAE;AACL6E,UAAI,EAAO,UADN;AAELy8C,cAAQ,EAAG,KAFN;AAGL7rC,eAAS,EAAE,IAHN;AAILjO,UAAI,EAAO,IAJN;AAKLJ,UAAI,EAAO;AALN,KAvZN;AA+ZH+0D,YAAQ,EAAE;AACNt3D,UAAI,EAAM,UADJ;AAENy8C,cAAQ,EAAE,KAFJ;AAGNl6C,UAAI,EAAM,IAHJ;AAKN3D,SALM,iBAKW;AACb,eAAO,SAAS24D,eAAT,CAAyBtyD,GAAzB,EAAmD;AACtD4J,sDAAI,CAAC,UAAD,EAAa;AAAE5J,eAAG,EAAHA;AAAF,WAAb,CAAJ;;AAEA,cAAI2mD,gBAAgB,CAAC,0BAAD,CAApB,EAAkD;AAC9C9zD,kBAAM,CAACwR,GAAP,CAAWxD,QAAX,GAAsBb,GAAtB;AACA,mBAAO,KAAKY,KAAL,EAAP;AACH;;AAED,iBAAO8nD,wBAAwB,CAAC,KAAK9kD,KAAL,CAAW6kD,WAAZ,CAA/B;AACH,SATD;AAUH;AAhBK,KA/ZP;AAkbHx7C,YAAQ,EAAE;AACNlS,UAAI,EAAM,QADJ;AAENy8C,cAAQ,EAAE,KAFJ;;AAGN,UAAIziD,KAAJ,GAAqB;AACjB,eAAOoY,wBAAM,CAACF,QAAd;AACH;;AALK,KAlbP;AA0bHlB,QAAI,EAAE;AACFhR,UAAI,EAAM,QADR;AAEFy8C,cAAQ,EAAE,KAFR;AAGF79C,SAHE,iBAGa;AACX,eAAO9G,MAAM,CAAC0/D,QAAP,IAAmB;AAAEC,gBAAM,EAAE;AAAV,SAA1B;AACH;AALC,KA1bH;AAkcHC,WAAO,EAAE;AACL13D,UAAI,EAAS,QADR;AAEL2hD,gBAAU,EAAG,IAFR;AAGLZ,iBAAW,EAAE,KAHR;AAILniD,SAAG,EAAU,eAAM;AACf,eAAOu8B,0CAAY,CAACh9B,IAAI,CAACC,SAAL,CAAe;AAC/B6G,aAAG,EAAE0mD,mBAAmB;AADO,SAAf,CAAD,CAAnB;AAGH;AARI;AAlcN,GA3DmD;;AAygB1D,MAAI3gD,UAAJ,GAAuD;AAEnD,QAAIouB,kCAAQ,EAAZ,EAAgB;AACZ,aAAO;AACH1vB,aAAK,EAAG,MADL;AAEHC,cAAM,EAAE;AAFL,OAAP;AAIH;;AAED,WAAO;AACHD,WAAK,EAAG,OADL;AAEHC,YAAM,EAAE;AAFL,KAAP;AAIH;;AAthByD,CAAD,CAAtD;;AAyhBP,IAAI6kD,kBAAQ,CAACjH,OAAT,MAAsBiH,kBAAQ,CAACphB,MAA/B,IAAyCohB,kBAAQ,CAACvmB,MAAtD,EAA8D;AAE1D,MAAIumB,kBAAQ,CAACvmB,MAAT,IAAmBumB,kBAAQ,CAACvmB,MAAT,CAAgB/1B,QAAvC,EAAiD;AAC7CD,eAAW,CAACu8C,kBAAQ,CAACvmB,MAAT,CAAgB/1B,QAAjB,CAAX;AACH;;AAEDs8C,oBAAQ,CAACphB,MAAT,CAAgBmQ,OAAhB,CAAwB,UAAAtV,MAAM,EAAI;AAC9B7Y,uCAAW,CAAC6Y,MAAD,EAAS,aAAT,EAAwB,gBAAsC;AAAA,UAAnC1Y,YAAmC,QAAnCA,YAAmC;AAAA,2BAArB7yB,IAAqB;AAAA,UAAbye,IAAa;;AACrE,UAAIA,IAAI,IAAI,CAACA,IAAI,CAACw0C,MAAlB,EAA0B;AACtB9gD,oDAAI,+BAA+B;AAAE0/C,mBAAS,EAAEpzC,IAAI,CAACozC,SAAlB;AAA6BrxB,eAAK,EAAE/hB,IAAI,CAACkuC;AAAzC,SAA/B,CAAJ;;AAEA,YAAI;AACA,cAAMsG,MAAM,GAAG73D,MAAM,CAAC6/D,QAAP,CAAgBj5D,GAAhB,CAAoB,oBAApB,EAA0C0iD,QAA1C,CAAmDjmC,IAAI,CAACkuC,YAAxD,EAAsEuO,cAArF;AACA/oD,sDAAI,kBAAkB;AAAE0/C,qBAAS,EAAEpzC,IAAI,CAACozC,SAAlB;AAA6BrxB,iBAAK,EAAE/hB,IAAI,CAACkuC,YAAzC;AAAuDsG,kBAAM,EAANA;AAAvD,WAAlB,CAAJ;AACH,SAHD,CAGE,OAAOt3D,GAAP,EAAY,CACV;AACH;;AAED6lB,8DAAc;AACjB;;AACD,aAAOqR,YAAY,EAAnB;AACH,KAdU,CAAX;AAeH,GAhBD;AAiBH;;AAEDH,mCAAW,CAACo/B,kBAAD,EAAW,MAAX,EAAmB,iBAAsD;AAAA,yBAAnD9xD,IAAmD;AAAA,MAA3CmM,KAA2C;AAAA,MAApCgvD,QAAoC;AAAA,MAAxBxoC,QAAwB,SAAxBA,QAAwB;AAAA,MAAd5yB,OAAc,SAAdA,OAAc;AAChF,SAAO4yB,QAAQ,CAACl3B,IAAT,CAAcsE,OAAd,EAAuBoM,KAAvB,EAA8BgvD,QAA9B,EAAwC,MAAxC,CAAP;AACH,CAFU,CAAX;AAIAzoC,mCAAW,CAACo/B,kBAAD,EAAW,QAAX,EAAqB,iBAA4C;AAAA,yBAAzC9xD,IAAyC;AAAA,MAAjCmM,KAAiC;AAAA,MAAxBwmB,QAAwB,SAAxBA,QAAwB;AAAA,MAAd5yB,OAAc,SAAdA,OAAc;AACxE,SAAO4yB,QAAQ,CAACl3B,IAAT,CAAcsE,OAAd,EAAuBoM,KAAvB,EAA8B,MAA9B,CAAP;AACH,CAFU,CAAX;AAIAumB,mCAAW,CAACo/B,kBAAD,EAAW,UAAX,EAAuB,iBAAiD;AAAA,yBAA9C9xD,IAA8C;AAAA,MAAtC4I,GAAsC;AAAA,MAAjCuD,KAAiC;AAAA,MAAxBwmB,QAAwB,SAAxBA,QAAwB;AAAA,MAAd5yB,OAAc,SAAdA,OAAc;AAE/E,MAAMwyD,OAAO,GAAGpmD,KAAK,CAAComD,OAAN,EAAhB;;AACApmD,OAAK,CAAComD,OAAN,GAAgB;AAAA,WAAMA,OAAN;AAAA,GAAhB;;AAEA,SAAO5/B,QAAQ,CAACl3B,IAAT,CAAcsE,OAAd,EAAuB6I,GAAvB,EAA4BuD,KAA5B,EAAmC,MAAnC,EAA2CzN,KAA3C,CAAiD,UAAA/C,GAAG,EAAI;AAC3D,QAAIA,GAAG,YAAYmN,mCAAf,IAAiC4iC,0CAAc,EAAnD,EAAuD;AACnDomB,wBAAQ,CAAClI,QAAT,CAAkB3+C,MAAlB,GAA2B,IAA3B;AACA,aAAO0nB,QAAQ,CAACl3B,IAAT,CAAcsE,OAAd,EAAuB6I,GAAvB,EAA4BuD,KAA5B,EAAmC,MAAnC,CAAP;AACH;;AACD,UAAMxQ,GAAN;AACH,GANM,CAAP;AAOH,CAZU,CAAX,C;;;;;;AC1mBA;;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA,IAAMm9D,qCAAU,oEACV1yE,+CAAsB,CAAC5B,KADb,IACsBI,0CAAiB,CAACF,KADxC,+BAEV0B,+CAAsB,CAAC1B,KAFb,IAEsBE,0CAAiB,CAACJ,KAFxC,+BAAhB,C,CAKA;;AAoBO,SAAS6kE,mCAAT,OAAgK;AAAA,MAAnI1hD,EAAmI,QAAnIA,EAAmI;AAAA,MAA/HwE,KAA+H,QAA/HA,KAA+H;AAAA,MAAxH68C,KAAwH,QAAxHA,KAAwH;AAAA,MAAjHC,SAAiH,QAAjHA,SAAiH;AAAA,MAAtGC,OAAsG,QAAtGA,OAAsG;AAAA,MAA7FC,KAA6F,QAA7FA,KAA6F;AAAA,MAAtF1jD,EAAsF,QAAtFA,EAAsF;AAAA,MAAlF8D,GAAkF,QAAlFA,GAAkF;AAAA,MAA7ExJ,OAA6E,QAA7EA,OAA6E;AAAA,MAApEqpD,OAAoE,QAApEA,OAAoE;AAAA,MAA3DzD,MAA2D,QAA3DA,MAA2D;AAAA,MAAnD9xC,MAAmD,QAAnDA,MAAmD;;AAAA,4BAEzI1H,KAAK,CAAC+K,MAAN,CAAa9U,KAAb,CAAmB,GAAnB,CAFyI;AAAA,MAE3JgV,IAF2J;AAAA,MAErJD,OAFqJ;;AAInK,MAAMikD,cAAc,kBACbxC,iBAAiB,CAAC;AAAEjxD,MAAE,EAAFA,EAAF;AAAM4B,OAAG,EAAHA,GAAN;AAAW2/C,WAAO,EAAPA,OAAX;AAAoBF,SAAK,EAALA,KAApB;AAA2BC,aAAS,EAATA;AAA3B,GAAD,CADJ,uEAGRthD,EAHQ,wTAcRA,EAdQ,qTAsBRA,EAtBQ,SAsBA4B,GAtBA,iBAsBiB2/C,OAAO,CAACn9D,MAtBzB,0DAuBR4b,EAvBQ,SAuBA4B,GAvBA,iBAuBiB2/C,OAAO,CAACn9D,MAvBzB,UAuBsCi9D,KAAK,CAAC37B,MAvB5C,sPA+BR1lB,EA/BQ,UA+BCqhD,KAAK,CAAC37B,MA/BP,sEAApB;AAqCA,MAAMvZ,OAAO,GAAG6kD,gBAAgB,CAACxhD,OAAD,CAAhB,CAA0BC,IAA1B,CAAhB;;AAEA,WAASjO,KAAT,CAAeoC,KAAf,EAAsB;AAClBA,SAAK,CAACwtD,cAAN;AACAxtD,SAAK,CAACkF,eAAN;;AACA,QAAItE,KAAK,CAACmuD,QAAV,EAAoB;AAChBnuD,WAAK,CAACmuD,QAAN;AACH;;AACDlR,WAAO,CAACjgD,KAAR;AACH;;AAED,WAASsxC,KAAT,CAAelvC,KAAf,EAAsB;AAClBA,SAAK,CAACwtD,cAAN;AACAxtD,SAAK,CAACkF,eAAN;;AAEA,QAAI4sB,+BAAK,EAAT,EAAa;AACT;AACAjiC,YAAM,CAAC49D,KAAP,CAAa,oDAAb;AACH,KAHD,MAGO;AACH5P,aAAO,CAAC3O,KAAR;AACH;AACJ;;AAED,MAAMpzC,KAAK,GAAG8E,KAAK,CAAC9E,KAAN,IAAe,EAA7B;AACA,MAAM4xD,YAAY,GAAG5xD,KAAK,CAAC4xD,YAAN,IAAsB7yE,+CAAsB,CAAC5B,KAAlE;AACA,MAAM6wE,SAAS,GAAGyD,qCAAU,CAACG,YAAD,CAA5B;AAEA,MAAMC,MAAM,GAAI,OAAO1B,YAAY,CAAC2B,EAApB,KAA2B,UAA5B,GACT3B,YAAY,CAAC2B,EAAb,CAAgB;AAAE9D,aAAS,EAATA;AAAF,GAAhB,CADS,GAETmC,YAAY,CAAC2B,EAAb,CAAgB9D,SAAhB,CAFN;AAIA,MAAMgC,UAAU,GAAI,OAAOG,YAAY,CAACla,MAApB,KAA+B,UAAhC,GACbka,YAAY,CAACla,MAAb,CAAoB;AAAE+X,aAAS,EAATA;AAAF,GAApB,CADa,GAEbmC,YAAY,CAACla,MAAb,CAAoB+X,SAApB,CAFN;AAIA,MAAM7tD,EAAE,GACJ;AAAK,MAAE,EAAGG,EAAV;AAAe,WAAO,EAAG8yC,KAAzB;AAAiC,SAAK,EAAOlxC,GAAP,iBAAwBxJ,OAAxB,iCAA6DwJ,GAA7D,0BAAuF0vD,YAAvF,SAAyG1vD,GAAzG,oBAA6H8rD,SAAnK;AAAkL,QAAI,EAAC,QAAvL;AAAgM,kBAAW,MAA3M;AAAkN,kBAAW;AAA7N,KACI;AAAG,QAAI,EAAC,GAAR;AAAY,SAAK,EAAC,uBAAlB;AAA0C,WAAO,EAAGlsD,KAApD;AAA4D,kBAAW,OAAvE;AAA+E,QAAI,EAAC;AAApF,IADJ,EAEI;AAAK,SAAK,EAAC;AAAX,KACI;AAAK,SAAK,EAAC;AAAX,KACI;AACI,SAAK,EAAC,yBADV;AACoC,OAAG,EAAC,IADxC;AAEI,OAAG,iCAAiCs1B,0CAAY,CAACy6B,MAAM,CAAC39D,QAAP,EAAD;AAFpD,IADJ,EAII;AACI,SAAK,EAAC,6BADV;AACwC,OAAG,EAAC,QAD5C;AAEI,OAAG,iCAAiCkjC,0CAAY,CAAC44B,UAAU,CAAC97D,QAAX,EAAD;AAFpD,IAJJ,CADJ,EASI;AAAK,SAAK,EAAC;AAAX,KACKuY,OAAO,CAACslD,aADb,CATJ,EAYI;AAAK,SAAK,EAAC;AAAX,KACI;AAAG,WAAO,EAAG3e,KAAb;AAAqB,QAAI,EAAC;AAA1B,KAA+B3mC,OAAO,CAACulD,QAAvC,CADJ,CAZJ,EAeI;AAAK,SAAK,EAAC;AAAX,KACI;AAAK,SAAK,EAAC;AAAX,IADJ,CAfJ,CAFJ,EAsBI;AAAK,SAAK,EAAC;AAAX,KACK1T,MADL,CAtBJ,EA0BI,sBAASyV,cAAT,CA1BJ,CADJ;AA+BA,MAAMp0D,SAAS,GACX,qBACI,qBACMQ,EADN,CADJ,CADJ;AAQA/B,IAAE,CAAC0jD,KAAK,CAACv9B,KAAP,EAAc,YAAM;AAClBpkB,MAAE,CAAC4C,SAAH,UAAqBb,GAArB;AACH,GAFC,CAAF;AAIA,SACI;AAAK,MAAE,EAAG5B,EAAV;AAAe,SAAK,EAAC;AAArB,KACI,sBAASkxD,eAAe,CAAC;AAAElxD,MAAE,EAAFA,EAAF;AAAMshD,aAAS,EAATA;AAAN,GAAD,CAAxB,CADJ,EAGI;AAAQ,SAAK,EAAC,yBAAd;AAAwC,QAAI,iCAAiCthD,EAAjC,OAA5C;AAAuF,aAAS,EAAC,IAAjG;AAAsG,SAAK,EAAC;AAA5G,KACMX,SADN,CAHJ,CADJ;AASH,C;;;;;;ACpKD;;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AAeO,IAAMq0D,WAAuC,GAAGh3B,gBAAM,CAAC;AAC1D96B,KAAG,EAAG,cADoD;AAE1D/N,MAAI,EAAE,cAFoD;AAI1D8qD,UAJ0D,oBAIjDn6C,KAJiD,EAIjC;AACrB,QAAM6K,GAAG,GAAG7K,KAAK,CAAC6K,GAAN,IAAatB,wBAAM,CAACsB,GAAhC;AACA,WAAWtB,wBAAM,CAAC0G,oBAAP,CAA4BpF,GAA5B,CAAX;AACH,GAPyD;;AAS1D,MAAIkD,MAAJ,GAAsB;AAAA;;AAClB,sDACOxE,wBAAM,CAACoE,aADd,6BAEM3xB,4BAAG,CAACC,KAFV,IAEmB,qCAFnB;AAIH,GAdyD;;AAgB1Dm6D,WAAS,EAAE,IAhB+C;AAkB1Dp2C,OAAK,EAAE;AACHq/B,aAAS,EAAE;AACPloC,UAAI,EAAM,QADH;AAEPy8C,cAAQ,EAAE,KAFH;AAGP79C,SAHO,iBAGQ;AACX,eAAO8kC,2CAAY,EAAnB;AACH,OALM;AAMPie,gBAAU,EAAE;AANL,KADR;AAWHzkB,SAAK,EAAE;AACHl9B,UAAI,EAAQ,QADT;AAEHy8C,cAAQ,EAAI,IAFT;AAGHkF,gBAAU,EAAE;AAHT,KAXJ;AAiBHrZ,mBAAe,EAAE;AACbtoC,UAAI,EAAM,QADG;AAEby8C,cAAQ,EAAE,KAFG;AAGb79C,SAHa,iBAGG;AACZ,eAAOypC,iDAAkB,EAAzB;AACH,OALY;AAMbsZ,gBAAU,EAAE;AANC,KAjBd;AA0BHuU,UAAM,EAAE;AACJl2D,UAAI,EAAQ,SADR;AAEJy8C,cAAQ,EAAI,KAFR;AAGJkF,gBAAU,EAAE;AAHR,KA1BL;AAgCHjuC,OAAG,EAAE;AACD1T,UAAI,EAAQ,QADX;AAEDy8C,cAAQ,EAAI,KAFX;AAGDkF,gBAAU,EAAE,IAHX;AAKD/iD,SALC,iBAKc;AACX,eAAOwT,wBAAM,CAACsB,GAAd;AACH,OAPA;AASDutC,cATC,oBASQvtC,GATR,EASa;AACV,YAAI,CAACtB,wBAAM,CAACiE,UAAP,CAAkB3C,GAAlB,CAAL,EAA6B;AACzB,gBAAM,IAAIjZ,KAAJ,mBAA2BiZ,GAA3B,CAAN;AACH;AACJ;AAbA,KAhCF;AAgDHE,UAAM,EAAE;AACJ5T,UAAI,EAAW,QADX;AAEJy8C,cAAQ,EAAO,KAFX;AAGJkF,gBAAU,EAAK,UAHX;AAIJoD,mBAAa,EAAE,IAJX;AAMJnmD,SANI,iBAMW;AAAA,gCACekuC,uCAAgB,EAD/B;AAAA,YACHh5B,IADG,qBACHA,IADG;AAAA,YACGD,OADH,qBACGA,OADH;;AAEX,eAAWC,IAAX,SAAqBD,OAArB;AACH;AATG,KAhDL;AA4DHmkD,YAAQ,EAAE;AACNh4D,UAAI,EAAQ,QADN;AAENy8C,cAAQ,EAAI;AAFN,KA5DP;AAgEHwb,oBAAgB,EAAE;AACdj4D,UAAI,EAAM,QADI;AAEdy8C,cAAQ,EAAE;AAFI,KAhEf;AAqEHyb,WAAO,EAAE;AACLl4D,UAAI,EAAQ,UADP;AAELy8C,cAAQ,EAAI,KAFP;AAGLC,gBAAU,EAAE;AAHP,KArEN;AA2EHhiD,YAAQ,EAAE;AACNsF,UAAI,EAAQ,QADN;AAENy8C,cAAQ,EAAI,KAFN;AAGNC,gBAAU,EAAE;AAHN,KA3EP;AAiFHsa,YAAQ,EAAE;AACNh3D,UAAI,EAAM,UADJ;AAENy8C,cAAQ,EAAE,KAFJ;AAGNl6C,UAAI,EAAM,IAHJ;AAINI,UAAI,EAAM;AAJJ,KAjFP;AAwFH+0D,WAAO,EAAE;AACL13D,UAAI,EAAS,QADR;AAEL2hD,gBAAU,EAAG,IAFR;AAGLZ,iBAAW,EAAE,KAHR;AAILniD,SAAG,EAAU,eAAM;AACf,eAAOu8B,0CAAY,CAACh9B,IAAI,CAACC,SAAL,CAAe;AAC/B6G,aAAG,EAAE0mD,mBAAmB;AADO,SAAf,CAAD,CAAnB;AAGH;AARI;AAxFN,GAlBmD;AAuH1D5F,mBAAiB,EAAjBA,mCAAiBA;AAvHyC,CAAD,CAAtD,C;;;;AC3BP;;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEO,IAAMoS,iBAAiB,GAAGp3B,gBAAM,CAAC;AACpC96B,KAAG,EAAG,YAD8B;AAEpC/N,MAAI,EAAE,KAF8B;AAIpC8qD,UAJoC,oBAI3Bn6C,KAJ2B,EAIX;AACrB,QAAM6K,GAAG,GAAG7K,KAAK,CAAC6K,GAAN,IAAatB,wBAAM,CAACsB,GAAhC;AACA,WAAWtB,wBAAM,CAAC0G,oBAAP,CAA4BpF,GAA5B,CAAX;AACH,GAPmC;;AASpC,MAAIkD,MAAJ,GAAsB;AAClB,sDACOxE,wBAAM,CAACoE,aADd;AAGH,GAbmC;;AAepCyoC,WAAS,EAAE,IAfyB;AAiBpCp2C,OAAK,EAAE;AACH6uD,WAAO,EAAE;AACL13D,UAAI,EAAU,QADT;AAEL2hD,gBAAU,EAAI,IAFT;AAGLZ,iBAAW,EAAG,KAHT;AAILniD,SAAG,EAAU,eAAM;AACf,eAAOu8B,0CAAY,CAACh9B,IAAI,CAACC,SAAL,CAAe;AAC/B6G,aAAG,EAAE0mD,mBAAmB;AADO,SAAf,CAAD,CAAnB;AAGH;AARI,KADN;AAWH/3C,UAAM,EAAE;AACJ5T,UAAI,EAAY,QADZ;AAEJy8C,cAAQ,EAAQ,KAFZ;AAGJkF,gBAAU,EAAM,UAHZ;AAIJoD,mBAAa,EAAG,IAJZ;AAMJnmD,SANI,iBAMW;AAAA,gCACekuC,uCAAgB,EAD/B;AAAA,YACHh5B,IADG,qBACHA,IADG;AAAA,YACGD,OADH,qBACGA,OADH;;AAEX,eAAWC,IAAX,SAAqBD,OAArB;AACH;AATG,KAXL;AAsBHH,OAAG,EAAE;AACD1T,UAAI,EAAQ,QADX;AAEDy8C,cAAQ,EAAI,KAFX;AAGDkF,gBAAU,EAAE,IAHX;AAKD/iD,SALC,iBAKc;AACX,eAAOwT,wBAAM,CAACsB,GAAd;AACH,OAPA;AASDutC,cATC,oBASQvtC,GATR,EASa;AACV,YAAI,CAACtB,wBAAM,CAACiE,UAAP,CAAkB3C,GAAlB,CAAL,EAA6B;AACzB,gBAAM,IAAIjZ,KAAJ,mBAA2BiZ,GAA3B,CAAN;AACH;AACJ;AAbA,KAtBF;AAqCH0kD,gBAAY,EAAE;AACVp4D,UAAI,EAAE;AADI,KArCX;AAwCHq4D,0BAAsB,EAAE;AACpBr4D,UAAI,EAAE;AADc,KAxCrB;AA2CHxD,UAAM,EAAE;AACJwD,UAAI,EAAE;AADF,KA3CL;AA8CH9E,aAAS,EAAE;AACP8E,UAAI,EAAQ,UADL;AAEPy8C,cAAQ,EAAI;AAFL,KA9CR;AAkDHthD,WAAO,EAAE;AACL6E,UAAI,EAAQ,UADP;AAELy8C,cAAQ,EAAI;AAFP,KAlDN;AAsDHua,YAAQ,EAAE;AACNh3D,UAAI,EAAY,UADV;AAENy8C,cAAQ,EAAQ,IAFV;AAGNsI,mBAAa,EAAG;AAHV;AAtDP,GAjB6B;AA+EpCgB,mBAAiB,EAAjBA,mCAAiBA;AA/EmB,CAAD,CAAhC,C;;ACTP;AAEA;AACA;AACA;;AAGA,SAASuS,6BAAT,GAAmD;AAC/C,MAAMj0D,EAAE,GAAGvM,MAAM,CAACgO,QAAP,CAAgBqpB,QAA3B;;AAEA,MAAI,CAAC9qB,EAAL,EAAS;AACL,WAAO,KAAP;AACH;;AAED,MAAI+jC,0CAAc,EAAlB,EAAsB;AAClB,WAAO,KAAP;AACH;;AAED,MAAMmwB,cAAc,GAAG9zD,iCAAU,CAACve,gCAAD,CAAjC;AACA,MAAMsyE,iBAAiB,GAAGnzD,OAAO,CAACkzD,cAAD,CAAjC;;AAEA,MAAIC,iBAAJ,EAAuB;AACnBlmD,gDAAI,CAAC,0BAAD,CAAJ;AACA,WAAO,KAAP;AACH;;AAED,SAAO,IAAP;AACH;;AAED,SAASmmD,UAAT,GAAsB;AAClB,MAAMtoD,MAAM,GAAG1L,iCAAU,CAACve,gCAAD,CAAzB;;AAEA,MAAIiqB,MAAJ,EAAY;AACR;AACAA,UAAM,CAACjC,UAAP,CAAkB7H,WAAlB,CAA8B8J,MAA9B;AACH;AACJ;;AAEM,SAASuoD,WAAT,GAAgC;AACnC,MAAIC,yBAAyB,GAAG,KAAhC;AACA,MAAMv5D,QAAQ,8BAAd;AACA,MAAIoD,QAAJ;AAEA,MAAMhF,GAAG,GAAG;AACR;;;;;;;;AAQAo7D,oBATQ,4BASSC,QATT,EAS6B;AACjC,UAAMC,mBAAmB,GAAG,SAAtBA,mBAAsB,GAAM;AAC9B,YAAIt7D,GAAG,CAACu7D,sBAAJ,CAA2BF,QAA3B,CAAJ,EAA0C;AACtCr7D,aAAG,CAACi7D,UAAJ;AACAj7D,aAAG,CAACw7D,gBAAJ,CAAqBH,QAArB;AACH,SAHD,MAGO;AACH;AACA;AACAr2D,kBAAQ,GAAGs2D,mBAAX;AACH;AACJ,OATD;;AAWAA,yBAAmB;AACtB,KAtBO;AAuBRG,8BAvBQ,wCAuBqB;AACzBnhE,YAAM,CAACsH,QAAD,CAAN,GAAmB,YAAM;AACrBu5D,iCAAyB,GAAG,IAA5B;;AAEA,YAAIn2D,QAAJ,EAAc;AACVA,kBAAQ;AACRA,kBAAQ,GAAGnH,SAAX;AACH;AACJ,OAPD;AAQH,KAhCO;AAiCR69D,yBAjCQ,mCAiCgB;AACpBphE,YAAM,CAACqhE,SAAP,GAAmBrhE,MAAM,CAACqhE,SAAP,IAAoB,EAAvC;AACA,UAAMC,iBAAiB,GAAGthE,MAAM,CAACqhE,SAAP,CAAiB/zD,MAAjB,CAAwB,UAAA2wC,CAAC;AAAA,eAAIA,CAAC,CAAC9tC,KAAF,KAAY,oBAAhB;AAAA,OAAzB,CAA1B;;AACA,UAAImxD,iBAAiB,CAACrgE,MAAlB,KAA6B,CAAjC,EAAoC;AAChCjB,cAAM,CAACqhE,SAAP,CAAiBxgE,IAAjB,CAAsB;AAAEsP,eAAK,EAAE;AAAT,SAAtB;AACH;AACJ,KAvCO;;AAwCR,QAAI7I,QAAJ,GAAwB;AACpB,aAAOA,QAAP;AACH,KA1CO;;AA2CR,QAAIu5D,yBAAJ,GAA0C;AACtC,aAAOA,yBAAP;AACH,KA7CO;;AA8CRK,oBAAgB,EAAE,0BAACH,QAAD,EAAwB;AAAA;;AACtCj6C,mDAAK,sBACCl4B,6BAAI,CAACC,GAAL,CAASE,KADV,IACwBH,6BAAI,CAACG,KAAL,CAAWkC,IADnC,SAECrC,6BAAI,CAACC,GAAL,CAASG,UAFV,IAEwBJ,6BAAI,CAACI,UAAL,CAAgBiD,SAFxC,UAAL;AAKA,UAAMob,MAAM,GAAG;AACX8oC,SAAC,EAAU,IADA;AAEX5pC,UAAE,EAASvM,MAAM,CAACgO,QAAP,CAAgBqpB,QAFhB;AAGXkqC,YAAI,EAAOjnD,wBAAM,CAACmC,UAHP;AAIX+kD,iBAAS,EAAE,EAJA;AAKXtrB,SAAC,EAAU57B,wBAAM,CAACmB,OALP;AAMX9V,cAAM,EAAK;AANA,OAAf;;AASA,UAAIo7D,QAAJ,EAAc;AACV1zD,cAAM,CAACm0D,SAAP,GAAmBT,QAAnB;AACH,OAFD,MAEO;AACH,eAAO1zD,MAAM,CAACm0D,SAAd;AACH;;AAED,UAAMC,OAAO,GAAGzwD,gCAAS,CAACsJ,wBAAM,CAACmI,OAAR,EAAiBpV,MAAjB,CAAzB;AAEAumC,uCAAU,CAAC6tB,OAAD,EAAU,CAAV,EAAa;AACnBC,aAAK,EAAG,IADW;AAEnBn1D,UAAE,EAAMne,gCAAOA;AAFI,OAAb,CAAV,CAGGkS,IAHH,CAGQ,YAAM;AAAA;;AACV;AACA;AACA;AACA,YAAI,EAAEN,MAAM,CAACqhE,SAAP,IAAoBrhE,MAAM,CAACqhE,SAAP,CAAiB,CAAjB,CAApB,IAA2CrhE,MAAM,CAACqhE,SAAP,CAAiB,CAAjB,EAAoBlxD,KAApB,KAA8B,YAA3E,CAAJ,EAA8F;AAC1FnQ,gBAAM,CAACsH,QAAD,CAAN;AACH;;AAEDwf,qDAAK,wBACCl4B,6BAAI,CAACC,GAAL,CAASE,KADV,IACwBH,6BAAI,CAACG,KAAL,CAAWkC,IADnC,UAECrC,6BAAI,CAACC,GAAL,CAASG,UAFV,IAEwBJ,6BAAI,CAACI,UAAL,CAAgBkD,WAFxC,WAAL;AAIH,OAfD,EAeGoR,KAfH,CAeS,UAAA/C,GAAG,EAAI;AACZia,oDAAI,CAAC,mBAAD,EAAsB;AAAErY,eAAK,EAAE8H,sCAAc,CAAC1J,GAAD;AAAvB,SAAtB,CAAJ;AACH,OAjBD;AAkBH,KAvFO;AAwFRigE,iCAA6B,EAA7BA,6BAxFQ;;AAyFR;;;;;;;;;;;AAWAS,0BApGQ,kCAoGeF,QApGf,EAoG6C;AACjD,UAAIF,yBAAyB,KAAK,KAAlC,EAAyC;AACrC,eAAO,KAAP;AACH;;AAED,UAAIvwB,0CAAc,EAAlB,EAAsB;AAClB,eAAO,KAAP;AACH,OAPgD,CASjD;AACA;AACA;;;AACA,UAAIh2B,wBAAM,CAACmC,UAAX,EAAuB;AACnB,eAAO,KAAP;AACH;;AAED,UAAIskD,QAAJ,EAAc;AACV,eAAO,IAAP;AACH;;AAED,aAAO,KAAP;AACH,KAzHO;AA0HRJ,cAAU,EAAVA;AA1HQ,GAAZ;AA6HA,SAAOj7D,GAAP;AACH,C;;ACzKD;AAEO,IAAMi8D,IAAI,GAAGf,WAAW,EAAxB,C;;ACFP;;;;ACAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAMA,IAAIgB,SAAqB,GAAG,EAA5B;AAEA,IAAMC,iBAAiB,GAAG52D,+BAAO,CAAC,UAAC2Q,GAAD,EAAemiB,MAAf,EAA+E;AAE7GvjB,8CAAI,gCAAJ;AAEAoB,KAAG,GAAGA,GAAG,IAAItB,wBAAM,CAACsB,GAApB;AAEA,MAAMkmD,QAAiB,GAAG/jC,MAAM,CAACniB,GAAD,CAAhC;;AAEA,MAAI,CAACkmD,QAAL,EAAe;AACX,UAAM,IAAIn/D,KAAJ,mCAA2CiZ,GAA3C,CAAN;AACH;;AAED,MAAIgmD,SAAS,CAACC,iBAAV,IAA+B,CAACD,SAAS,CAACC,iBAAV,CAA4Bl8D,MAA5B,CAAmC4mB,MAAvE,EAA+E;AAC3E,WAAOq1C,SAAS,CAACC,iBAAV,CAA4BjmD,GAA5B,EAAiCmiB,MAAjC,CAAP;AACH;;AAED,MAAMgkC,SAAkB,GAAG1+B,0CAAY,CAAKy+B,QAAL,OAAvC;AAEA,SAAO7kC,OAAO,CAAC;AAEXv4B,UAAM,QAFK;AAGXyI,OAAG,EAAMmN,wBAAM,CAAC+G,WAAP,CAAmBzF,GAAnB,CAHE;AAIXwH,WAAO,EAAE;AACL4+C,mBAAa,aAAYD;AADpB,KAJE;AAOX1+C,QAAI,EAAE;AACF4+C,gBAAU;AADR;AAPK,GAAD,CAAP,CAWJ3hE,IAXI,CAWC,UAAAmC,GAAG,EAAI;AAEX,QAAIA,GAAG,IAAIA,GAAG,CAACN,KAAJ,KAAc,gBAAzB,EAA2C;AACvC,YAAM,IAAIQ,KAAJ,uBAA+BiZ,GAA/B,oBAAmDkmD,QAAnD,aAAqEz7D,IAAI,CAACC,SAAL,CAAe7D,GAAf,EAAoB,IAApB,EAA0B,CAA1B,CAArE,CAAN;AACH;;AAED,QAAI,CAACA,GAAD,IAAQ,CAACA,GAAG,CAACo8D,YAAjB,EAA+B;AAC3B,YAAM,IAAIl8D,KAAJ,kCAA0C0D,IAAI,CAACC,SAAL,CAAe7D,GAAf,EAAoB,IAApB,EAA0B,CAA1B,CAA1C,CAAN;AACH;;AAED,WAAOA,GAAG,CAACo8D,YAAX;AACH,GAtBM,CAAP;AAwBH,CA1CgC,EA0C9B;AAAEj7D,MAAI,EAAE,KAAK,EAAL,GAAU;AAAlB,CA1C8B,CAAjC;AA4CA,IAAMs+D,uBAAuB,GAAGj3D,+BAAO,CAAC,UAAC2Q,GAAD,EAAemiB,MAAf,EAAqDokC,iBAArD,EAAgH;AAAA,MAA3DA,iBAA2D;AAA3DA,qBAA2D,GAA9B,EAA8B;AAAA;;AAEpJ3nD,8CAAI,sCAAJ;AAEAoB,KAAG,GAAGA,GAAG,IAAItB,wBAAM,CAACsB,GAApB;AAEA,MAAMkmD,QAAQ,GAAG/jC,MAAM,CAACniB,GAAD,CAAvB;;AAEA,MAAI,CAACkmD,QAAL,EAAe;AACX,UAAM,IAAIn/D,KAAJ,mCAA2CiZ,GAA3C,CAAN;AACH;;AAED,MAAIgmD,SAAS,CAACM,uBAAV,IAAqC,CAACN,SAAS,CAACM,uBAAV,CAAkCv8D,MAAlC,CAAyC4mB,MAAnF,EAA2F;AACvF,WAAOq1C,SAAS,CAACM,uBAAV,CAAkCtmD,GAAlC,EAAuCmiB,MAAvC,EAA+CokC,iBAA/C,CAAP;AACH;;AAEDA,mBAAiB,CAACC,SAAlB,GAA8B,IAA9B;AACAD,mBAAiB,CAAC/hE,IAAlB,GAAyB+hE,iBAAiB,CAAC/hE,IAAlB,GAA6B+hE,iBAAiB,CAAC/hE,IAA/C,SAAyD6F,IAAI,CAACE,MAAL,GAAchG,QAAd,EAAzD,GAAuF8F,IAAI,CAACE,MAAL,GAAchG,QAAd,EAAhH;AAEA,SAAO0hE,iBAAiB,CAACjmD,GAAD,EAAMmiB,MAAN,CAAjB,CAA+Bz9B,IAA/B,CAAoC,UAAC2+D,WAAD,EAAwC;AAE/E,WAAOhiC,OAAO,CAAC;AACXv4B,YAAM,QADK;AAEXyI,SAAG,EAAMmN,wBAAM,CAACmH,iBAAP,CAAyB7F,GAAzB,CAFE;AAGXwH,aAAO,EAAE;AACL4+C,qBAAa,cAAa/C;AADrB,OAHE;AAMXlxB,UAAI,EAAEo0B;AANK,KAAD,CAAd;AASH,GAXM,EAWJ7hE,IAXI,CAWC,UAACmC,GAAD,EAAkB;AAEtB,QAAIA,GAAG,IAAIA,GAAG,CAACN,KAAf,EAAsB;AAClB,YAAM,IAAIQ,KAAJ,CAAUF,GAAG,CAACN,KAAd,CAAN;AACH;;AAED,QAAI,CAACM,GAAG,CAAC8J,EAAT,EAAa;AACT,YAAM,IAAI5J,KAAJ,+CAAuD0D,IAAI,CAACC,SAAL,CAAe7D,GAAf,EAAoB,IAApB,EAA0B,CAA1B,CAAvD,CAAN;AACH;;AAED,WAAOA,GAAG,CAAC8J,EAAX;AACH,GAtBM,CAAP;AAwBH,CA3CsC,EA2CpC;AAAE3I,MAAI,EAAE,KAAK,EAAL,GAAU;AAAlB,CA3CoC,CAAvC;;AA6CA,SAASy+D,kBAAT,CAA4B5/D,GAA5B,EAAiC;AAAA;;AAE7B,MAAI,CAACA,GAAL,EAAU;AACN;AACH;;AAED,MAAI8uD,YAAJ;AACA,MAAIkF,SAAJ;;AAEA,MAAIh0D,GAAG,CAAC8J,EAAR,EAAY;AACRkqD,aAAS,GAAGh0D,GAAG,CAAC8J,EAAhB;AACH;;AAED,MAAI9J,GAAG,CAAC6/D,KAAJ,IAAa7/D,GAAG,CAAC6/D,KAAJ,CAAUrhE,MAA3B,EAAmC;AAC/B,SAAK,IAAIkC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGV,GAAG,CAAC6/D,KAAJ,CAAUrhE,MAA9B,EAAsCkC,CAAC,EAAvC,EAA2C;AACvC,UAAIV,GAAG,CAAC6/D,KAAJ,CAAUn/D,CAAV,EAAauB,MAAb,KAAwB,UAAxB,IAAsCjC,GAAG,CAAC6/D,KAAJ,CAAUn/D,CAAV,EAAao/D,GAAb,KAAqB,cAA/D,EAA+E;AAC3E,YAAMh5D,KAAK,GAAG9G,GAAG,CAAC6/D,KAAJ,CAAUn/D,CAAV,EAAawnB,IAAb,CAAkBphB,KAAlB,CAAwB,4BAAxB,CAAd;;AACA,YAAIA,KAAJ,EAAW;AACPgoD,sBAAY,GAAGhoD,KAAK,CAAC,CAAD,CAApB;AACH;AACJ;AACJ;AACJ;;AAEDud,+CAAK,sBACCl4B,6BAAI,CAACC,GAAL,CAASE,KADV,IAC0BH,6BAAI,CAACG,KAAL,CAAWT,MADrC,SAECM,6BAAI,CAACC,GAAL,CAASG,UAFV,IAE0BJ,6BAAI,CAACI,UAAL,CAAgBwC,cAF1C,SAGC5C,6BAAI,CAACC,GAAL,CAASS,YAHV,IAG0BV,6BAAI,CAACU,YAAL,CAAkBtB,qCAAY,CAACG,MAA/B,CAH1B,SAICS,6BAAI,CAACC,GAAL,CAASV,MAJV,IAI0BsoE,SAJ1B,SAKC7nE,6BAAI,CAACC,GAAL,CAASO,KALV,IAK0BmiE,YAL1B,SAMC3iE,6BAAI,CAACC,GAAL,CAASQ,UANV,IAM0BonE,SAN1B,UAAL;AAQH;;AAED,SAAS+L,mBAAT,GAAwC;AACpC;AACH;;AAED,SAASC,cAAT,CAAwB7mD,GAAxB,EAAsCmiB,MAAtC,EAA4EthB,UAA5E,EAAwFimD,YAAxF,EAA+G;AAE3G9mD,KAAG,GAAGA,GAAG,IAAItB,wBAAM,CAACsB,GAApB;AAEA,MAAMkmD,QAAQ,GAAG/jC,MAAM,CAACniB,GAAD,CAAvB;;AAEA,MAAI,CAACkmD,QAAL,EAAe;AACX,UAAM,IAAIn/D,KAAJ,mCAA2CiZ,GAA3C,CAAN;AACH;;AAED,MAAM+mD,UAAU,GAAG78D,gCAAQ,EAA3B;AAEA,SAAO+7D,iBAAiB,CAACjmD,GAAD,EAAMmiB,MAAN,CAAjB,CAA+Bz9B,IAA/B,CAAoC,UAAC2+D,WAAD,EAAwC;AAE/E,QAAM77C,OAAgB,GAAG;AACrB4+C,mBAAa,cAAa/C;AADL,KAAzB;AAIA,WAAOhiC,OAAO,CAAC;AACXv4B,YAAM,OADK;AAEXyI,SAAG,EAASmN,wBAAM,CAACoH,eAAP,CAAuB9F,GAAvB,CAAT,SAA0Ca,UAA1C,SAA0DkmD,UAFlD;AAGXv/C,aAAO,EAAPA,OAHW;AAIX2qB,UAAI,EAAI;AACJ,uBAAmB40B,UADf;AAEJ,2BAAmBD;AAFf;AAJG,KAAD,CAAd;AAUH,GAhBM,EAgBJpiE,IAhBI,CAgBC,YAAM;AACV,WAAOqiE,UAAP;AACH,GAlBM,CAAP;AAmBH;;AAED,SAASC,aAAT,CAAuBhnD,GAAvB,EAAqCmiB,MAArC,EAA2E8kC,cAA3E,EAA2H;AAEvHroD,8CAAI,kCAAJ;AAEAoB,KAAG,GAAGA,GAAG,IAAItB,wBAAM,CAACsB,GAApB;AAEA,MAAMkmD,QAAQ,GAAG/jC,MAAM,CAACniB,GAAD,CAAvB;;AAEA,MAAI,CAACkmD,QAAL,EAAe;AACX,UAAM,IAAIn/D,KAAJ,mCAA2CiZ,GAA3C,CAAN;AACH;;AAVsH,MAYjHu7C,OAZiH,GAYzE0L,cAZyE,CAYjH1L,OAZiH;AAAA,MAYxGkH,UAZwG,GAYzEwE,cAZyE,CAYxGxE,UAZwG;AAAA,MAY5F93C,IAZ4F,GAYzEs8C,cAZyE,CAY5Ft8C,IAZ4F;AAAA,MAYtFb,QAZsF,GAYzEm9C,cAZyE,CAYtFn9C,QAZsF;;AAcvH,MAAI,CAACyxC,OAAL,EAAc;AACV,UAAM,IAAIx0D,KAAJ,yCAAN;AACH;;AAED,MAAIi/D,SAAS,CAACgB,aAAV,IAA2B,CAAChB,SAAS,CAACgB,aAAV,CAAwBj9D,MAAxB,CAA+B4mB,MAA/D,EAAuE;AACnE,WAAOq1C,SAAS,CAACgB,aAAV,CAAwBhnD,GAAxB,EAA6BmiB,MAA7B,EAAqC;AAAEo5B,aAAO,EAAPA,OAAF;AAAWkH,gBAAU,EAAVA,UAAX;AAAuB93C,UAAI,EAAJA,IAAvB;AAA6Bb,cAAQ,EAARA;AAA7B,KAArC,CAAP;AACH;;AAEDyxC,SAAO,GAAG,2CAAKA,OAAR,CAAP;AACAA,SAAO,CAACU,MAAR,GAAiBV,OAAO,CAACU,MAAR,IAAkB,MAAnC;AACAV,SAAO,CAAC2L,aAAR,GAAwB3L,OAAO,CAAC2L,aAAR,IAAyB,EAAjD;AACA3L,SAAO,CAAC2L,aAAR,CAAsBC,UAAtB,GAAmC5L,OAAO,CAAC2L,aAAR,CAAsBC,UAAtB,IAAoCP,mBAAmB,EAA1F;AACArL,SAAO,CAAC2L,aAAR,CAAsBE,UAAtB,GAAmC7L,OAAO,CAAC2L,aAAR,CAAsBE,UAAtB,IAAoCR,mBAAmB,EAA1F;AACArL,SAAO,CAAC3D,KAAR,GAAgB2D,OAAO,CAAC3D,KAAR,IAAiB,EAAjC;AACA2D,SAAO,CAAC3D,KAAR,CAAcyP,cAAd,GAA+B9L,OAAO,CAAC3D,KAAR,CAAcyP,cAAd,IAAgC,QAA/D;AAEA,SAAOpB,iBAAiB,CAACjmD,GAAD,EAAMmiB,MAAN,CAAjB,CAA+Bz9B,IAA/B,CAAoC,UAAC2+D,WAAD,EAAwC;AAE/E,WAAOn9D,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAE1B,UAAI26D,UAAJ,EAAgB;AACZ,eAAOv8D,yCAAY,CAACL,OAAb,CAAqBygE,uBAAuB,CAACtmD,GAAD,EAAMmiB,MAAN,EAAcsgC,UAAd,CAA5C,CAAP;AACH;AAEJ,KANM,EAMJ/9D,IANI,CAMC,UAAC4iE,YAAD,EAAyC;AAE7C,aAAOphE,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAE1B,YAAIgiB,QAAJ,EAAc;AACV,iBAAO5jB,yCAAY,CAACL,OAAb,CAAqBghE,cAAc,CAAC7mD,GAAD,EAAMmiB,MAAN,EAAcrY,QAAQ,CAACnZ,EAAvB,EAA2BmZ,QAAQ,CAACrC,IAApC,CAAnC,CAAP;AACH;AAEJ,OANM,EAMJ/iB,IANI,CAMC,UAACqiE,UAAD,EAAuC;AAE3C,YAAIO,YAAJ,EAAkB;AACd/L,iBAAO,CAACgM,qBAAR,GAAgCD,YAAhC;AACH;;AAED,YAAM9/C,OAAgB,GAAG;AACrB4+C,uBAAa,cAAa/C;AADL,SAAzB;;AAIA,YAAI0D,UAAJ,EAAgB;AACZv/C,iBAAO,CAAC,2BAAD,CAAP,GAAuCu/C,UAAvC;AACH;;AAED,YAAIp8C,IAAI,IAAIA,IAAI,CAAC68C,sBAAjB,EAAyC;AACrChgD,iBAAO,CAAC,+BAAD,CAAP,GAA2CmD,IAAI,CAAC68C,sBAAhD;AACH;;AAED,eAAOnmC,OAAO,CAAC;AACXv4B,gBAAM,QADK;AAEXyI,aAAG,EAAKmN,wBAAM,CAACgH,cAAP,CAAsB1F,GAAtB,CAFG;AAGXwH,iBAAO,EAAPA,OAHW;AAIX2qB,cAAI,EAAIopB;AAJG,SAAD,CAAd;AAMH,OA9BM,CAAP;AA+BH,KAvCM,CAAP;AAyCH,GA3CM,EA2CJ72D,IA3CI,CA2CC,UAACmC,GAAD,EAAkB;AAEtB4/D,sBAAkB,CAAC5/D,GAAD,CAAlB;;AAEA,QAAIA,GAAG,IAAIA,GAAG,CAAC8J,EAAf,EAAmB;AACf,aAAO9J,GAAG,CAAC8J,EAAX;AACH;;AAED,UAAM,IAAI5J,KAAJ,qCAA6C0D,IAAI,CAACC,SAAL,CAAe7D,GAAf,EAAoB,IAApB,EAA0B,CAA1B,CAA7C,CAAN;AAEH,GArDM,CAAP;AAsDH;;AAED,SAAS4gE,WAAT,CAAqBznD,GAArB,EAAmCmiB,MAAnC,EAAyE8kC,cAAzE,EAAyH;AAErHroD,8CAAI,+BAAJ;AAEAoB,KAAG,GAAGA,GAAG,IAAItB,wBAAM,CAACsB,GAApB;AAEA,MAAMkmD,QAAQ,GAAG/jC,MAAM,CAACniB,GAAD,CAAvB;;AAEA,MAAI,CAACkmD,QAAL,EAAe;AACX,UAAM,IAAIn/D,KAAJ,mCAA2CiZ,GAA3C,CAAN;AACH;;AAVoH,MAY/Goc,KAZ+G,GAY/F6qC,cAZ+F,CAY/G7qC,KAZ+G;AAAA,MAYxGzR,IAZwG,GAY/Fs8C,cAZ+F,CAYxGt8C,IAZwG;;AAcrH,MAAI,CAACyR,KAAL,EAAY;AACR,UAAM,IAAIr1B,KAAJ,uCAAN;AACH;;AAED,MAAIi/D,SAAS,CAACyB,WAAV,IAAyB,CAACzB,SAAS,CAACyB,WAAV,CAAsB19D,MAAtB,CAA6B4mB,MAA3D,EAAmE;AAC/D,WAAOq1C,SAAS,CAACyB,WAAV,CAAsBznD,GAAtB,EAA2BmiB,MAA3B,EAAmC;AAAE/F,WAAK,EAALA,KAAF;AAASzR,UAAI,EAAJA;AAAT,KAAnC,CAAP;AACH;;AAEDyR,OAAK,GAAG,2CAAKA,KAAR,CAAL;AACAA,OAAK,CAAC6/B,MAAN,GAAe7/B,KAAK,CAAC6/B,MAAN,IAAgB,SAA/B;AACA7/B,OAAK,CAAC0gC,mBAAN,GAA4B1gC,KAAK,CAAC0gC,mBAAN,IAA6B,EAAzD;AACA1gC,OAAK,CAAC0gC,mBAAN,CAA0BqK,UAA1B,GAAuC/qC,KAAK,CAAC0gC,mBAAN,CAA0BqK,UAA1B,IAAwCP,mBAAmB,EAAlG;AACAxqC,OAAK,CAAC0gC,mBAAN,CAA0BsK,UAA1B,GAAuChrC,KAAK,CAAC0gC,mBAAN,CAA0BsK,UAA1B,IAAwCR,mBAAmB,EAAlG;AACAxqC,OAAK,CAACsrC,cAAN,GAAuBtrC,KAAK,CAACsrC,cAAN,IAAwB,EAA/C;AACAtrC,OAAK,CAACsrC,cAAN,CAAqB,CAArB,IAA0BtrC,KAAK,CAACsrC,cAAN,CAAqB,CAArB,KAA2B,EAArD;AACAtrC,OAAK,CAACsrC,cAAN,CAAqBn7C,OAArB,CAA6B,UAAAo7C,IAAI,EAAI;AACjCA,QAAI,CAACC,YAAL,GAAoBD,IAAI,CAACC,YAAL,IAAqBv9D,IAAI,CAACE,MAAL,GAAchG,QAAd,EAAzC;AACH,GAFD;AAIA,SAAO0hE,iBAAiB,CAACjmD,GAAD,EAAMmiB,MAAN,CAAjB,CAA+Bz9B,IAA/B,CAAoC,UAAC2+D,WAAD,EAAwC;AAE/E,QAAM77C,OAAgB,GAAG;AACrB4+C,mBAAa,cAAa/C;AADL,KAAzB;;AAIA,QAAI14C,IAAI,IAAIA,IAAI,CAAC68C,sBAAjB,EAAyC;AACrChgD,aAAO,CAAC,+BAAD,CAAP,GAA2CmD,IAAI,CAAC68C,sBAAhD;AACH;;AAED,WAAOnmC,OAAO,CAAC;AACXv4B,YAAM,QADK;AAEXyI,SAAG,EAAKmN,wBAAM,CAACiH,YAAP,CAAoB3F,GAApB,CAFG;AAGXwH,aAAO,EAAPA,OAHW;AAIX2qB,UAAI,EAAI/V;AAJG,KAAD,CAAd;AAOH,GAjBM,EAiBJ13B,IAjBI,CAiBC,UAACmC,GAAD,EAAkB;AAEtB4/D,sBAAkB,CAAC5/D,GAAD,CAAlB;;AAEA,QAAIA,GAAG,IAAIA,GAAG,CAAC8J,EAAf,EAAmB;AACf,aAAO9J,GAAG,CAAC8J,EAAX;AACH;;AAED,UAAM,IAAI5J,KAAJ,qCAA6C0D,IAAI,CAACC,SAAL,CAAe7D,GAAf,EAAoB,IAApB,EAA0B,CAA1B,CAA7C,CAAN;AACH,GA1BM,CAAP;AA2BH;;AAEM,SAASghE,sBAAT,CAAgC7nD,GAAhC,EAA8CmiB,MAA9C,EAAoF2lC,cAApF,EAA6GvB,iBAA7G,EAAkK;AAErK3nD,8CAAI,iCAAJ;AAEAoB,KAAG,GAAGA,GAAG,IAAItB,wBAAM,CAACsB,GAApB;AAEA,MAAMkmD,QAAQ,GAAG/jC,MAAM,CAACniB,GAAD,CAAvB;;AAEA,MAAI,CAACkmD,QAAL,EAAe;AACX,UAAM,IAAIn/D,KAAJ,mCAA2CiZ,GAA3C,CAAN;AACH;;AAED,MAAIgmD,SAAS,CAAC6B,sBAAV,IAAoC,CAAC7B,SAAS,CAAC6B,sBAAV,CAAiC99D,MAAjC,CAAwC4mB,MAAjF,EAAyF;AACrF,WAAOq1C,SAAS,CAAC6B,sBAAV,CAAiC7nD,GAAjC,EAAsCmiB,MAAtC,EAA8C2lC,cAA9C,EAA8DvB,iBAA9D,CAAP;AACH;;AAEDuB,gBAAc,GAAG,2CAAKA,cAAR,CAAd;AACAA,gBAAc,CAACC,IAAf,GAAsBD,cAAc,CAACC,IAAf,IAAuB,EAA7C;AACAD,gBAAc,CAACC,IAAf,CAAoBC,oBAApB,GAA2CF,cAAc,CAACC,IAAf,CAAoBC,oBAApB,IAA4C,EAAvF;AACAF,gBAAc,CAACC,IAAf,CAAoBC,oBAApB,CAAyCb,UAAzC,GAAsDW,cAAc,CAACC,IAAf,CAAoBC,oBAApB,CAAyCb,UAAzC,IAAuDP,mBAAmB,EAAhI;AACAkB,gBAAc,CAACC,IAAf,CAAoBC,oBAApB,CAAyCZ,UAAzC,GAAsDU,cAAc,CAACC,IAAf,CAAoBC,oBAApB,CAAyCZ,UAAzC,IAAuDR,mBAAmB,EAAhI;AACAkB,gBAAc,CAAClQ,KAAf,GAAuBkQ,cAAc,CAAClQ,KAAf,IAAwB,EAA/C;AACAkQ,gBAAc,CAAClQ,KAAf,CAAqByP,cAArB,GAAsCS,cAAc,CAAClQ,KAAf,CAAqByP,cAArB,IAAuC,QAA7E;AAGA,SAAOpB,iBAAiB,CAACjmD,GAAD,EAAMmiB,MAAN,CAAjB,CAA+Bz9B,IAA/B,CAAoC,UAAC2+D,WAAD,EAAwC;AAE/E,WAAOn9D,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAE1B,UAAIy+D,iBAAJ,EAAuB;AACnB,eAAOrgE,yCAAY,CAACL,OAAb,CAAqBygE,uBAAuB,CAACtmD,GAAD,EAAMmiB,MAAN,EAAcokC,iBAAd,CAA5C,CAAP;AACH;AAEJ,KANM,EAMJ7hE,IANI,CAMC,UAAC4iE,YAAD,EAAyC;AAE7C,UAAIA,YAAJ,EAAkB;AACdQ,sBAAc,CAACP,qBAAf,GAAuCD,YAAvC;AACH;;AAED,aAAOjmC,OAAO,CAAC;AACXv4B,cAAM,QADK;AAEXyI,WAAG,EAAMmN,wBAAM,CAACkH,cAAP,CAAsB5F,GAAtB,CAFE;AAGXwH,eAAO,EAAE;AACL4+C,uBAAa,cAAa/C;AADrB,SAHE;AAMXlxB,YAAI,EAAE21B;AANK,OAAD,CAAd;AAQH,KApBM,CAAP;AAsBH,GAxBM,EAwBJpjE,IAxBI,CAwBC,UAAAmC,GAAG,EAAI;AAEX,QAAIA,GAAG,IAAIA,GAAG,CAACohE,QAAf,EAAyB;AACrB,aAAOphE,GAAG,CAACohE,QAAX;AACH;;AAED,UAAM,IAAIlhE,KAAJ,qCAA6C0D,IAAI,CAACC,SAAL,CAAe7D,GAAf,EAAoB,IAApB,EAA0B,CAA1B,CAA7C,CAAN;AACH,GA/BM,CAAP;AAgCH;AAEM,IAAMqhE,IAAI,GAAG;AAChB3M,SAAO,EAAE;AACLluB,UAAM,EAAG25B;AADJ,GADO;AAIhB5qC,OAAK,EAAE;AACHiR,UAAM,EAAGo6B;AADN,GAJS;AAOhBU,kBAAgB,EAAE;AACd96B,UAAM,EAAEw6B;AADM,GAPF;AAUhBpF,YAAU,EAAE;AACRp1B,UAAM,EAAEi5B;AADA;AAVI,CAAb;AAeP,IAAM8B,UAAU,eAAhB;AACA,IAAMC,SAAS,GAAG52C,qDAAW,EAA7B;AAEAhjB,iBAAE,CAAC25D,UAAD,EAAa;AAAEllD,QAAM,EAAExE,wBAAM,CAACkB;AAAjB,CAAb,EAAqD,gBAAc;AAAA,MAAX6H,IAAW,QAAXA,IAAW;AACjEu+C,WAAS,GAAGv+C,IAAZ;AACH,CAFC,CAAF;;AAIA,IAAI4gD,SAAS,IAAI3zB,0CAAc,EAA3B,IAAiC,CAACx1B,sDAAY,CAACmpD,SAAD,CAAlD,EAA+D;AAC3DvsD,qBAAI,CAACusD,SAAD,EAAYD,UAAZ,EAAwB;AAAEnC,qBAAiB,EAAjBA,iBAAF;AAAqBK,2BAAuB,EAAvBA,uBAArB;AAA8CU,iBAAa,EAAbA,aAA9C;AAA6Da,0BAAsB,EAAtBA,sBAA7D;AAAqFJ,eAAW,EAAXA;AAArF,GAAxB,CAAJ,CACK//D,KADL,CACW,YAAM,CACT;AACH,GAHL;AAIH,C;;;;AC1ZD;AAEA;AACA;AAEO,IAAM4gE,mBAAmB,GAAG/5D,oCAAY,EAAxC;;AAEP,SAAS+b,eAAT,CAAammB,UAAb,EAAkCM,SAAlC,EAAsDvH,KAAtD,EAAuEvpB,KAAvE,EAAuF;AAEnF8vB,gDAAe,CAAC,UAAAJ,OAAO,EAAI;AAEvB,QAAIp7B,KAAK,GAAck8B,UAAd,SAA8BM,SAA9B,SAA6C9wB,KAAtD;AACA,QAAMsoD,YAAY,GAAG54B,OAAO,CAAC64B,sBAAR,GAAiC74B,OAAO,CAAC64B,sBAAR,IAAkC,EAAxF;AACA,QAAMC,SAAS,GAAMF,YAAY,CAACvjE,OAAb,CAAqBuP,KAArB,MAAgC,CAAC,CAAtD;;AAEA,QAAIk0D,SAAJ,EAAe;AACX7pD,kDAAI,gBAAerK,KAAf,CAAJ;AAEH,KAHD,MAGO;AAAA;;AACHqK,kDAAI,CAACrK,KAAD,CAAJ;AACAg0D,kBAAY,CAACtjE,IAAb,CAAkBsP,KAAlB;AAEA,UAAMm0D,IAAI,GAAGtkE,MAAM,CAACiQ,SAAP,IAAoBjQ,MAAM,CAACiQ,SAAP,CAAiBC,SAArC,IAAkDlQ,MAAM,CAACiQ,SAAP,CAAiBC,SAAjB,CAA2B3G,KAA3B,CAAiC,gBAAjC,CAA/D;;AAEA,UAAI+6D,IAAJ,EAAU;AACNn0D,aAAK,GAAGqK,4CAAI,CAAK8pD,IAAI,CAAC,CAAD,CAAJ,CAAQh/D,WAAR,GAAsBJ,OAAtB,CAA8B,GAA9B,EAAmC,GAAnC,CAAL,SAAkDiL,KAAlD,CAAZ;AACH;;AAED2W,mDAAK,sBACCl4B,6BAAI,CAACC,GAAL,CAASE,KADV,IAC6BH,6BAAI,CAACG,KAAL,CAAWtH,QADxC,SAECmH,6BAAI,CAACC,GAAL,CAASG,UAFV,IAE6B6sB,KAF7B,SAGCjtB,6BAAI,CAACC,GAAL,CAASiB,eAHV,IAG6Bu8C,UAH7B,SAICz9C,6BAAI,CAACC,GAAL,CAASkB,cAJV,IAI6B48C,SAJ7B,SAKC/9C,6BAAI,CAACC,GAAL,CAASO,KALV,IAK6Bg2C,KAL7B,SAMCx2C,6BAAI,CAACC,GAAL,CAASQ,UANV,IAM6B+1C,KAN7B,SAOCx2C,6BAAI,CAACC,GAAL,CAASS,YAPV,IAO6B81C,KAAK,GAAGx2C,6BAAI,CAACU,YAAL,CAAkBtB,qCAAY,CAACC,QAA/B,CAAH,GAA8CW,6BAAI,CAACU,YAAL,CAAkBwB,iBAPlG,UAAL;AAUAs1B,4DAAc;AACjB;AACJ,GA/Bc,CAAf;AAgCH;;AAEM,SAASm+C,sBAAT,OAAwJ;AAAA,MAAtHl4B,UAAsH,QAAtHA,UAAsH;AAAA,MAA1GM,SAA0G,QAA1GA,SAA0G;AAAA,MAA/F9wB,KAA+F,QAA/FA,KAA+F;AAAA,MAAxFupB,KAAwF,QAAxFA,KAAwF;;AAE3J,MAAI,CAACiH,UAAD,IAAe,CAACM,SAApB,EAA+B;AAC3B;AACH;;AAEDhB,gDAAe,CAAC,UAAAJ,OAAO,EAAI;AACvBA,WAAO,CAACi5B,kBAAR,GAAsCn4B,UAAtC;AACAd,WAAO,CAACk5B,2BAAR,GAAsC93B,SAAtC;;AAEA,QAAIvH,KAAJ,EAAW;AACPmG,aAAO,CAACm5B,uBAAR,GAAkCt/B,KAAlC;AACH;AACJ,GAPc,CAAf;AASAlf,iBAAG,CAACmmB,UAAD,EAAaM,SAAb,EAAwBvH,KAAxB,EAA+BvpB,KAA/B,CAAH;AACH;;AAED,SAAS8oD,SAAT,CAAmBv/B,KAAnB,EAAmC;AAAA,yBAM3BuG,8CAAe,CAAC,UAAAJ,OAAO;AAAA,WAAIA,OAAJ;AAAA,GAAR,CANY;AAAA,MAG3Bi5B,kBAH2B,oBAG3BA,kBAH2B;AAAA,MAI3BC,2BAJ2B,oBAI3BA,2BAJ2B;AAAA,MAK3BC,uBAL2B,oBAK3BA,uBAL2B;;AAQ/B,MAAIF,kBAAkB,IAAIC,2BAAtB,IAAqDC,uBAAuB,KAAKt/B,KAArF,EAA4F;AACxFlf,mBAAG,CAACs+C,kBAAD,EAAqBC,2BAArB,EAAkDr/B,KAAlD,aAAH;AACH,GAFD,MAEO;AACH5qB,gDAAI,wBAAwB;AACxB4qB,WAAK,EAALA,KADwB;AAExBo/B,wBAAkB,EAAlBA,kBAFwB;AAGxBC,iCAA2B,EAA3BA,2BAHwB;AAIxBC,6BAAuB,EAAvBA;AAJwB,KAAxB,CAAJ;AAMH;AACJ;;AAED,IAAI5Q,gBAAgB,CAAC,eAAD,CAApB,EAAuC;AAEnCoQ,qBAAmB,CAACz5D,IAApB,CAAyB,iBAAsB;AAAA,QAAnB8mD,YAAmB,SAAnBA,YAAmB;AAC3CzwD,cAAU,CAAC,YAAM;AACb6jE,eAAS,CAACpT,YAAD,CAAT;AACH,KAFS,EAEP,CAFO,CAAV;AAGH,GAJD;AAMA,MAAMqT,WAAW,GAAGrR,cAAc,EAAlC;;AAEA,MAAIqR,WAAJ,EAAiB;AACb9jE,cAAU,CAAC,YAAM;AACb,UAAI8jE,WAAJ,EAAiB;AACbD,iBAAS,CAACC,WAAD,CAAT;AACH;AACJ,KAJS,EAIP,CAJO,CAAV;AAKH;AACJ,C;;AClGD;AACA;AACA;AAGA;AACA;AACA;AAEA;AAEA,IAAMC,MAAM,GAAG;AACXC,SAAO,EAAE,SADE;AAEXC,QAAM,EAAG;AAFE,CAAf;AAKA,IAAMC,WAAW,GAAG;AAChBC,mBAAiB,EAAE;AADH,CAApB;;AAQA,SAASC,eAAT,CAAyBC,WAAzB,EAA6D;AACzD,SAAO;AACH13D,QADG,gBACEN,GADF,EACuC;AACtC,aAAO,IAAIrL,yCAAJ,CAAiB,UAACL,OAAD,EAAUiB,MAAV,EAAqB;AAEzCyiE,mBAAW,CAACC,UAAZ,GAAyB,UAAC7kE,GAAD,EAAMgC,MAAN,EAAiB;AACtC,cAAI,CAACA,MAAL,EAAa;AACT,mBAAOG,MAAM,CAAC,IAAIC,KAAJ,CAAU,6CAAV,CAAD,CAAb;AACH;;AAED,iBAAOpC,GAAG,GAAGmC,MAAM,CAACnC,GAAD,CAAT,GAAiBkB,OAAO,CAACc,MAAD,CAAlC;AACH,SAND;;AAQA4iE,mBAAW,CAACjG,QAAZ,GAAuB,YAAM;AACzB,cAAM3+D,GAAG,GAAG,IAAIoC,KAAJ,CAAUqiE,WAAW,CAACC,iBAAtB,CAAZ,CADyB,CAEzB;;AACA1kE,aAAG,CAAC47B,IAAJ,GAAW6oC,WAAW,CAACC,iBAAvB;AACA,iBAAOviE,MAAM,CAACnC,GAAD,CAAb;AACH,SALD;;AAOA4kE,mBAAW,CAAC13D,IAAZ,CAAiBuD,gCAAS,CAAC7D,GAAD,EAAM;AAAEk4D,sBAAY,EAAEF,WAAW,CAACG,kBAAZ;AAAhB,SAAN,CAA1B;AACH,OAlBM,CAAP;AAmBH;AArBE,GAAP;AAuBH;;AAED,SAASC,qBAAT,CAA+Bx0D,KAA/B,EAAsC;AAClC,MAAI,CAACA,KAAK,CAAComD,OAAX,EAAoB;AAChB,UAAM,IAAIx0D,KAAJ,uCAAN;AACH;;AAED,MAAI,CAACoO,KAAK,CAAC6kD,WAAX,EAAwB;AACpB,UAAM,IAAIjzD,KAAJ,2CAAN;AACH;;AAED,MAAIoO,KAAK,CAAC6K,GAAN,IAAa,CAACtB,wBAAM,CAACoG,YAAP,CAAoB3P,KAAK,CAAC6K,GAA1B,CAAlB,EAAkD;AAC9C,UAAM,IAAIjZ,KAAJ,yBAAiCoO,KAAK,CAAC6K,GAAvC,CAAN;AACH;AACJ;;AAED,SAAS4pD,sBAAT,CAAgCz0D,KAAhC,EAAoI;AAChI,MAAM6K,GAAG,GAAG7K,KAAK,CAAC6K,GAAN,GAAY7K,KAAK,CAAC6K,GAAN,IAAatB,wBAAM,CAACsB,GAA5C;AAEA,MAAMu7C,OAAO,GAAGpmD,KAAK,CAAComD,OAAtB;AACA,MAAMvB,WAAW,GAAGnrD,2BAAI,CAACsG,KAAK,CAAC6kD,WAAP,CAAxB;AACA,MAAMsJ,QAAQ,GAAGz0D,2BAAI,CAACsG,KAAK,CAACmuD,QAAN,IAAkBr0D,mBAAnB,CAArB;AAEA,SAAO;AAAE+Q,OAAG,EAAHA,GAAF;AAAOu7C,WAAO,EAAPA,OAAP;AAAgBvB,eAAW,EAAXA,WAAhB;AAA6BsJ,YAAQ,EAARA;AAA7B,GAAP;AACH;;AAED,SAAS9S,MAAT,CAAgBr7C,KAAhB,EAAsJ;AAAA,8BAEzHy0D,sBAAsB,CAACz0D,KAAD,CAFmG;AAAA,MAE1I6K,GAF0I,yBAE1IA,GAF0I;AAAA,MAErIu7C,OAFqI,yBAErIA,OAFqI;;AAIlJ,SAAOr1D,yCAAY,CAAC4B,GAAb,CAAiByzD,OAAjB,EAA0B;AAAEpmD,SAAK,EAALA;AAAF,GAA1B,EAAqCzQ,IAArC,CAA0C,UAAA8kC,KAAK,EAAI;AAAA;;AACtD,QAAI,CAACA,KAAL,EAAY;AACR,YAAM,IAAIziC,KAAJ,0DAAN;AACH;;AAED,WAAOqO,gCAAS,CAAComD,YAAY,CAACx7C,GAAD,EAAM3wB,gCAAO,CAACzD,MAAd,EAAsB49C,KAAtB,CAAb,+BACX6xB,2BAA2B,CAAC7xB,KAAD,CADhB,IAC0BA,KAD1B,aAGZqgC,UAHY,GAGA10D,KAAK,CAACqtD,MAAN,GAAe,QAAf,GAA0B,EAH1B,aAIZsH,SAJY,GAIA,GAJA,cAAhB;AAMH,GAXM,CAAP;AAYH;;AAED,SAASC,oBAAT,CAA8B10D,KAA9B,EAAuD;AAEnD,MAAMoS,IAAa,GAAG;AAClBkuC,gBAAY,EAAEtgD,KAAK,CAACm0B,KADF;AAElBmxB,gBAAY,EAAEtlD,KAAK,CAAC20D,QAFF;AAGlBnP,aAAS,EAAKxlD,KAAK,CAAC40D,SAHF;AAIlBrP,WAAO,EAAOvlD,KAAK,CAAC60D,OAJF;AAKlBjO,UAAM,EAAQ5mD,KAAK,CAAC4mD;AALF,GAAtB;AAFmD,MAU3CkO,MAV2C,GAUR90D,KAVQ,CAU3C80D,MAV2C;AAAA,MAUnCC,UAVmC,GAUR/0D,KAVQ,CAUnC+0D,UAVmC;AAAA,MAUvBC,UAVuB,GAURh1D,KAVQ,CAUvBg1D,UAVuB;;AAYnD,MAAIF,MAAM,KAAKlB,MAAM,CAACC,OAAtB,EAA+B;AAC3BzhD,QAAI,CAACizC,SAAL,GAAiB0P,UAAjB;AAEH,GAHD,MAGO,IAAID,MAAM,KAAKlB,MAAM,CAACE,MAAtB,EAA8B;AACjC1hD,QAAI,CAAC+7C,SAAL,GAAiB6G,UAAjB;AACH;;AAED,SAAO5iD,IAAP;AACH;;AAED,SAAS6iD,YAAT,CAAsBj1D,KAAtB,EAA+C;AAE3C,MAAM+8C,OAAgB,GAAG;AACrBjgD,SAAK,EAAWlD,mBADK;AAErB4iD,kBAAc,EAAE5iD,mBAAIA;AAFC,GAAzB;AAF2C,MAOnCk7D,MAPmC,GAOA90D,KAPA,CAOnC80D,MAPmC;AAAA,MAO3BC,UAP2B,GAOA/0D,KAPA,CAO3B+0D,UAP2B;AAAA,MAOfC,UAPe,GAOAh1D,KAPA,CAOfg1D,UAPe;;AAS3C,MAAIF,MAAM,KAAKlB,MAAM,CAACC,OAAtB,EAA+B;AAC3B9W,WAAO,CAACpmB,QAAR,GAAmB,UAACp6B,GAAD,EAAuC24D,WAAvC,EAAkG;AAAA,UAAjG34D,GAAiG;AAAjGA,WAAiG,GAAnExN,MAAmE;AAAA;;AAAA,UAA3DmmE,WAA2D;AAA3DA,mBAA2D,GAApCH,UAAoC;AAAA;;AACjH,aAAOp+B,+BAAQ,CAACp6B,GAAD,EAAM24D,WAAN,CAAf;AACH,KAFD;AAIH,GALD,MAKO,IAAIJ,MAAM,KAAKlB,MAAM,CAACE,MAAtB,EAA8B;AACjC/W,WAAO,CAACpmB,QAAR,GAAmB,UAACp6B,GAAD,EAAuC24D,WAAvC,EAAkG;AAAA,UAAjG34D,GAAiG;AAAjGA,WAAiG,GAAnExN,MAAmE;AAAA;;AAAA,UAA3DmmE,WAA2D;AAA3DA,mBAA2D,GAApCF,UAAoC;AAAA;;AACjH,aAAOr+B,+BAAQ,CAACp6B,GAAD,EAAM24D,WAAN,CAAf;AACH,KAFD;AAGH;;AAED,SAAOnY,OAAP;AACH;;AAED,SAASoY,wBAAT,CAAkCr1D,KAAlC,EAAkDo0D,WAAlD,EAAkG;AAC9F,SAAOrjE,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAE1B6hE,yBAAqB,CAACx0D,KAAD,CAArB;AAEH,GAJM,EAIJzQ,IAJI,CAIC,YAAM;AAEV,WAAO8rD,MAAM,CAACr7C,KAAD,CAAb;AAEH,GARM,EAQJzQ,IARI,CAQC,UAAA6M,GAAG,EAAI;AAEX,WAAOg4D,WAAW,CAAC13D,IAAZ,CAAiBN,GAAjB,CAAP;AAEH,GAZM,EAYJ7M,IAZI,CAYC,UAAAma,OAAO,EAAI;AAAA,QAEPsrD,MAFO,GAEItrD,OAAO,CAAC4rD,UAFZ,CAEPN,MAFO;;AAAA,iCAGmBP,sBAAsB,CAACz0D,KAAD,CAHzC;AAAA,QAGP6kD,WAHO,0BAGPA,WAHO;AAAA,QAGMsJ,QAHN,0BAGMA,QAHN;;AAKf,QAAM77C,IAAI,GAAMsiD,oBAAoB,CAAClrD,OAAO,CAAC4rD,UAAT,CAApC;AACA,QAAMrY,OAAO,GAAGkY,YAAY,CAACzrD,OAAO,CAAC4rD,UAAT,CAA5B;;AAEA,QAAIN,MAAM,KAAKlB,MAAM,CAACC,OAAtB,EAA+B;AAC3B,aAAOlP,WAAW,CAACvyC,IAAD,EAAO2qC,OAAP,CAAlB;AAEH,KAHD,MAGO,IAAI+X,MAAM,KAAKlB,MAAM,CAACE,MAAtB,EAA8B;AACjC,aAAO7F,QAAQ,CAAC77C,IAAD,EAAO2qC,OAAP,CAAf;AAEH,KAHM,MAGA;AACH,YAAM,IAAIrrD,KAAJ,sBAA8BojE,MAA9B,CAAN;AACH;AAEJ,GA9BM,EA8BJziE,KA9BI,CA8BE,UAAA/C,GAAG,EAAI;AAEZ,QAAIA,GAAG,IAAIA,GAAG,CAAC47B,IAAJ,KAAa6oC,WAAW,CAACC,iBAApC,EAAuD;AAAA,mCAC9BO,sBAAsB,CAACz0D,KAAD,CADQ;AAAA,UAC3CmuD,QAD2C,0BAC3CA,QAD2C;;AAEnD,aAAOA,QAAQ,CAAC,EAAD,EAAK,EAAL,CAAf;AACH;;AAED,UAAM3+D,GAAN;AACH,GAtCM,CAAP;AAuCH;;AAEM,SAAS+lE,gBAAT,CAA0BlkB,MAA1B,EAAuE;AAC1E,MAAIA,MAAM,CAACjS,MAAP,IAAiBiS,MAAM,CAACjS,MAAP,CAAcm2B,gBAAnC,EAAqD;AACjD,WAAOlkB,MAAM,CAACjS,MAAP,CAAcm2B,gBAAd,EAAP;AACH;;AAED,SAAOtvC,gCAAQ,CAACh3B,MAAD,EAAS,aAAT,CAAR,CAAgCM,IAAhC,CAAqC,UAAA6kE,WAAW,EAAI;AACvD,WAAOD,eAAe,CAACC,WAAD,CAAtB;AACH,GAFM,CAAP;AAGH;AAEM,SAASoB,qBAAT,CAA+B7P,QAA/B,EAAkDtU,MAAlD,EAAmE;AAEtE,MAAI+iB,WAAJ;AAEAmB,kBAAgB,CAAClkB,MAAD,CAAhB,CAAyB9hD,IAAzB,CAA8B,UAAAs+B,MAAM,EAAI;AACpCumC,eAAW,GAAGvmC,MAAd;AACH,GAFD;;AAIA,WAAS4nC,QAAT,CAAkBz1D,KAAlB,EAAyBwmB,QAAzB,EAAwD;AACpD,QAAI,CAAC4tC,WAAL,EAAkB;AACd,aAAO5tC,QAAQ,EAAf;AACH;;AAED,WAAO6uC,wBAAwB,CAACr1D,KAAD,EAAQo0D,WAAR,CAAxB,CACF7hE,KADE,CACI,UAAA/C,GAAG,EAAI;AACV4B,mDAAK,uBAAuB;AAAE5B,WAAG,EAAE0J,sCAAc,CAAC1J,GAAD;AAArB,OAAvB,CAAL;AACA,aAAOg3B,QAAQ,EAAf;AACH,KAJE,CAAP;AAKH;;AAED,MAAMuiB,MAAM,GAAG4c,QAAQ,CAAC5c,MAAxB;;AACA4c,UAAQ,CAAC5c,MAAT,GAAkB,SAAS2sB,iBAAT,CAA2B11D,KAA3B,EAAgE;AAAA;AAAA;;AAC9E,WAAOy1D,QAAQ,CAACz1D,KAAD,EAAQ;AAAA,aAAM+oC,MAAM,CAACj1C,KAAP,CAAa,KAAb,EAAmBmG,UAAnB,CAAN;AAAA,KAAR,CAAf;AACH,GAFD;;AAIA,MAAM0/C,QAAQ,GAAGgM,QAAQ,CAAChM,QAA1B;;AACAgM,UAAQ,CAAChM,QAAT,GAAoB,SAASgc,mBAAT,CAA6Bl5D,GAA7B,EAA0DuD,KAA1D,EAA+F;AAAA;AAAA;;AAC/G,WAAOy1D,QAAQ,CAACz1D,KAAD,EAAQ;AAAA,aAAM25C,QAAQ,CAAC7lD,KAAT,CAAe,MAAf,EAAqBmG,WAArB,CAAN;AAAA,KAAR,CAAf;AACH,GAFD;;AAIA,MAAMolD,aAAa,GAAGsG,QAAQ,CAACtG,aAA/B;;AACAsG,UAAQ,CAACtG,aAAT,GAAyB,SAASuW,wBAAT,CAAkCn5D,GAAlC,EAA+DuD,KAA/D,EAAoG;AAAA;AAAA;;AACzH,WAAOy1D,QAAQ,CAACz1D,KAAD,EAAQ;AAAA,aAAMq/C,aAAa,CAACvrD,KAAd,CAAoB,MAApB,EAA0BmG,WAA1B,CAAN;AAAA,KAAR,CAAf;AACH,GAFD;AAGH,C;;;;AChOD;AAEA;AAEO,IAAM47D,gBAAgB,GAAG,CAC5B37E,gCAAO,CAACzD,MADoB,EAE5ByD,gCAAO,CAAClD,KAFoB,EAG5BkD,gCAAO,CAACjD,IAHoB,EAI5BiD,gCAAO,CAACtD,MAJoB,EAK5BsD,gCAAO,CAACrD,IALoB,EAM5BqD,gCAAO,CAAChD,KANoB,EAO5BgD,gCAAO,CAAC/C,GAPoB,EAQ5B+C,gCAAO,CAAC9C,UARoB,EAS5B8C,gCAAO,CAAC7C,OAToB,EAU5B6C,gCAAO,CAAC3C,GAVoB,EAW5B2C,gCAAO,CAAC5C,MAXoB,EAY5B4C,gCAAO,CAAC1C,MAZoB,EAa5B0C,gCAAO,CAACtC,IAboB,EAc5BsC,gCAAO,CAACzC,GAdoB,EAe5ByC,gCAAO,CAACxC,IAfoB,EAgB5BwC,gCAAO,CAACvC,YAhBoB,EAiB5BuC,gCAAO,CAACrC,OAjBoB,EAkB5BqC,gCAAO,CAACpC,MAlBoB,EAmB5BoC,gCAAO,CAACnC,MAnBoB,EAoB5BmC,gCAAO,CAAClC,IApBoB,CAAzB;AAuBA,IAAM89E,aAAa,GAAG,CACzB57E,gCAAO,CAACzD,MADiB,EAEzByD,gCAAO,CAAClD,KAFiB,EAGzBkD,gCAAO,CAACjD,IAHiB,EAIzBiD,gCAAO,CAACtD,MAJiB,EAKzBsD,gCAAO,CAAChD,KALiB,EAMzBgD,gCAAO,CAAC/C,GANiB,EAOzB+C,gCAAO,CAAC9C,UAPiB,EAQzB8C,gCAAO,CAAC7C,OARiB,EASzB6C,gCAAO,CAAC3C,GATiB,EAUzB2C,gCAAO,CAAC5C,MAViB,EAWzB4C,gCAAO,CAAC1C,MAXiB,EAYzB0C,gCAAO,CAACtC,IAZiB,EAazBsC,gCAAO,CAACzC,GAbiB,EAczByC,gCAAO,CAACxC,IAdiB,EAezBwC,gCAAO,CAACvC,YAfiB,EAgBzBuC,gCAAO,CAACrC,OAhBiB,EAiBzBqC,gCAAO,CAACpC,MAjBiB,EAkBzBoC,gCAAO,CAACnC,MAlBiB,EAmBzBmC,gCAAO,CAAClC,IAnBiB,EAoBzBkC,gCAAO,CAACrD,IApBiB,CAAtB;AAuBA,IAAMk/E,cAAc,0CAErBr6E,gCAFqB,IAEV;AACTs6E,SAAO,EAAE,IADA;AAGTC,YAAU,EAAK,IAHN;AAITC,aAAW,EAAI,IAJN;AAKTC,eAAa,EAAE,IALN;AAOTC,iBAAe,EAAE,IAPR;AAQTC,eAAa,EAAI,IARR;AAUTC,qBAAmB,EAAE;AAVZ,CAFU,kBAerBp8E,gCAAO,CAACzD,MAfa,IAeH;AAChBg1B,SAAO,EAAE,IADO;AAGhBwqD,YAAU,EAAG,KAHG;AAIhBC,aAAW,EAAE,KAJG;AAMhBE,iBAAe,EAAE,IAND;AAOhBC,eAAa,EAAI;AAPD,CAfG,kBAyBrBn8E,gCAAO,CAACrD,IAzBa,IAyBL;AACd;AACA40B,SAAO,EAAG,OAAO8qD,mBAAP,KAA+B,WAA/B,GAA6C,IAA7C,GAAoDA,mBAAmB,CAACC,YAApB,CAAiCC,2BAAjC,CAA6DC,UAA7D,CAAwEC,eAFxH;AAIdP,iBAAe,EAAE,KAJH;AAKdC,eAAa,EAAI;AALH,CAzBK,kBAiCrBn8E,gCAAO,CAAClD,KAjCa,IAiCJ;AACfk/E,aAAW,EAAO,IADH;AAEfU,kBAAgB,EAAE,CACdx1E,gCAAO,CAAC8L,EADM,CAFH;AAMfkpE,iBAAe,EAAE,IANF;AAOfC,eAAa,EAAI;AAPF,CAjCI,kBA0CrBn8E,gCAAO,CAACjD,IA1Ca,IA0CL;AACdi/E,aAAW,EAAO,IADJ;AAEdU,kBAAgB,EAAE,CACdx1E,gCAAO,CAACyB,EADM,CAFJ;AAMduzE,iBAAe,EAAE,IANH;AAOdC,eAAa,EAAI;AAPH,CA1CK,kBAoDrBn8E,gCAAO,CAACtD,MApDa,IAoDH;AAChBggF,kBAAgB,EAAE,CACdx1E,gCAAO,CAAC8L,EADM,EAEd9L,gCAAO,CAACiE,EAFM,EAGdjE,gCAAO,CAAC8C,EAHM,CADF;AAMhB2yE,0BAAwB,EAAE,CACtBz1E,gCAAO,CAAC8L,EADc,CANV;AAShB4pE,WAAS,EAAE,CACPp5E,iCAAQ,CAACE,MADF,CATK;AAahBw4E,iBAAe,EAAE,IAbD;AAchBC,eAAa,EAAI,IAdD;AAehBF,eAAa,EAAI;AAfD,CApDG,kBAsErBj8E,gCAAO,CAAChD,KAtEa,IAsEJ;AACf0/E,kBAAgB,EAAE,CACdx1E,gCAAO,CAACsI,EADM,CADH;AAKf0sE,iBAAe,EAAM,KALN;AAMfC,eAAa,EAAQ,IANN;AAOfC,qBAAmB,EAAE;AAPN,CAtEI,kBAgFrBp8E,gCAAO,CAAC/C,GAhFa,IAgFN;AACby/E,kBAAgB,EAAE,CACdx1E,gCAAO,CAAC8C,EADM,CADL;AAIb2yE,0BAAwB,EAAE,CACtBz1E,gCAAO,CAAC8C,EADc,CAJb;AAQbkyE,iBAAe,EAAE,KARJ;AASbC,eAAa,EAAI;AATJ,CAhFM,kBA4FrBn8E,gCAAO,CAAC9C,UA5Fa,IA4FC;AACpBw/E,kBAAgB,EAAE,CACdx1E,gCAAO,CAACgB,EADM,CADE;AAKpBg0E,iBAAe,EAAM,KALD;AAMpBC,eAAa,EAAQ,IAND;AAOpBC,qBAAmB,EAAE;AAPD,CA5FD,kBAsGrBp8E,gCAAO,CAAC7C,OAtGa,IAsGF;AACjBu/E,kBAAgB,EAAE,CACdx1E,gCAAO,CAAC8C,EADM,CADD;AAKjBkyE,iBAAe,EAAM,KALJ;AAMjBC,eAAa,EAAQ,IANJ;AAOjBC,qBAAmB,EAAE;AAPJ,CAtGE,kBAgHrBp8E,gCAAO,CAAC5C,MAhHa,IAgHH;AAChBs/E,kBAAgB,EAAE,CACdx1E,gCAAO,CAAC8C,EADM,EAEd9C,gCAAO,CAACU,EAFM,EAGdV,gCAAO,CAACgB,EAHM,EAIdhB,gCAAO,CAACwD,EAJM,EAKdxD,gCAAO,CAACuF,EALM,EAMdvF,gCAAO,CAACsI,EANM,CADF;AAUhB0sE,iBAAe,EAAM,KAVL;AAWhBC,eAAa,EAAQ,IAXL;AAYhBC,qBAAmB,EAAE;AAZL,CAhHG,kBA+HrBp8E,gCAAO,CAAC3C,GA/Ha,IA+HN;AACbq/E,kBAAgB,EAAE,CACdx1E,gCAAO,CAACU,EADM,CADL;AAKbs0E,iBAAe,EAAM,KALR;AAMbC,eAAa,EAAQ,IANR;AAObC,qBAAmB,EAAE;AAPR,CA/HM,kBAyIrBp8E,gCAAO,CAAC1C,MAzIa,IAyIH;AAChBo/E,kBAAgB,EAAE,CACdx1E,gCAAO,CAACuF,EADM,CADF;AAKhByvE,iBAAe,EAAM,KALL;AAMhBC,eAAa,EAAQ,IANL;AAOhBC,qBAAmB,EAAE;AAPL,CAzIG,kBAkJrBp8E,gCAAO,CAACzC,GAlJa,IAkJN;AACbm/E,kBAAgB,EAAE,CACdx1E,gCAAO,CAACkJ,EADM,CADL;AAKb8rE,iBAAe,EAAM,KALR;AAMbC,eAAa,EAAQ,IANR;AAObC,qBAAmB,EAAE;AAPR,CAlJM,kBA2JrBp8E,gCAAO,CAACxC,IA3Ja,IA2JL;AACdk/E,kBAAgB,EAAE,CACdx1E,gCAAO,CAAC6C,EADM,CADJ;AAKdmyE,iBAAe,EAAM,KALP;AAMdC,eAAa,EAAQ,IANP;AAOdC,qBAAmB,EAAE;AAPP,CA3JK,kBAoKrBp8E,gCAAO,CAACvC,YApKa,IAoKG;AACtBi/E,kBAAgB,EAAE,CACdx1E,gCAAO,CAAC0D,EADM,CADI;AAKtBsxE,iBAAe,EAAM,KALC;AAMtBC,eAAa,EAAQ,IANC;AAOtBC,qBAAmB,EAAE;AAPC,CApKH,kBA6KrBp8E,gCAAO,CAACtC,IA7Ka,IA6KL;AACdg/E,kBAAgB,EAAE,CACdx1E,gCAAO,CAACkJ,EADM,CADJ;AAKd8rE,iBAAe,EAAM,KALP;AAMdC,eAAa,EAAQ,IANP;AAOdC,qBAAmB,EAAE;AAPP,CA7KK,kBAsLrBp8E,gCAAO,CAACrC,OAtLa,IAsLF;AACjB++E,kBAAgB,EAAE,CACdx1E,gCAAO,CAAC8C,EADM,EAEd9C,gCAAO,CAACgD,EAFM,EAGdhD,gCAAO,CAACqD,EAHM,EAIdrD,gCAAO,CAACwD,EAJM,EAKdxD,gCAAO,CAAC0D,EALM,EAMd1D,gCAAO,CAACiE,EANM,EAOdjE,gCAAO,CAACuF,EAPM,EAQdvF,gCAAO,CAACyH,EARM,EASdzH,gCAAO,CAACsI,EATM,EAUdtI,gCAAO,CAACuI,EAVM,EAWdvI,gCAAO,CAACiK,EAXM,CADD;AAejB+qE,iBAAe,EAAM,KAfJ;AAgBjBC,eAAa,EAAQ,IAhBJ;AAiBjBC,qBAAmB,EAAE;AAjBJ,CAtLE,kBAyMrBp8E,gCAAO,CAACpC,MAzMa,IAyMH;AAChB8+E,kBAAgB,EAAE,CACdx1E,gCAAO,CAAC0G,EADM,CADF;AAKhBivE,aAAW,EAAE,CACT/6E,4BAAG,CAACC,KADK,EAETD,4BAAG,CAACE,KAFK,EAGTF,4BAAG,CAACK,IAHK,CALG;AAWhB+5E,iBAAe,EAAM,KAXL;AAYhBC,eAAa,EAAQ,IAZL;AAahBC,qBAAmB,EAAE;AAbL,CAzMG,kBAwNrBp8E,gCAAO,CAACnC,MAxNa,IAwNH;AAChB6+E,kBAAgB,EAAE,CACdx1E,gCAAO,CAACyB,EADM,CADF;AAKhBk0E,aAAW,EAAE,CACT/6E,4BAAG,CAACC,KADK,EAETD,4BAAG,CAACE,KAFK,EAGTF,4BAAG,CAACK,IAHK,CALG;AAWhB+5E,iBAAe,EAAM,KAXL;AAYhBC,eAAa,EAAQ,IAZL;AAahBC,qBAAmB,EAAE;AAbL,CAxNG,kBAuOrBp8E,gCAAO,CAAClC,IAvOa,IAuOL;AACd4+E,kBAAgB,EAAE,CACdx1E,gCAAO,CAAC6H,EADM,CADJ;AAKd8tE,aAAW,EAAE,CACT/6E,4BAAG,CAACC,KADK,EAETD,4BAAG,CAACE,KAFK,EAGTF,4BAAG,CAACK,IAHK,CALC;AAWd+5E,iBAAe,EAAM,KAXP;AAYdC,eAAa,EAAQ,IAZP;AAadC,qBAAmB,EAAE;AAbP,CAvOK,kBAsPrBp8E,gCAAO,CAACC,OAtPa,IAsPF;AACjBy8E,kBAAgB,EAAE,EADD;AAGjBR,iBAAe,EAAM,KAHJ;AAIjBC,eAAa,EAAQ,KAJJ;AAKjBC,qBAAmB,EAAE;AALJ,CAtPE,kBAApB;AA+PA,IAAMU,WAAW,oCAElBt7E,gCAFkB,IAEP;AACTu7E,UAAQ,EAAE,CACNpgF,6BAAI,CAACuD,IADC,EAENvD,6BAAI,CAACwD,UAFC,EAGNxD,6BAAI,CAACyD,IAHC;AADD,CAFO,eAUlB8G,gCAAO,CAACiE,EAVU,IAUJ;AACZ4xE,UAAQ,EAAE,CACNpgF,6BAAI,CAACuD,IADC,EAENvD,6BAAI,CAACwD,UAFC,EAGNxD,6BAAI,CAACyD,IAHC,EAINzD,6BAAI,CAAC0D,QAJC,EAKN1D,6BAAI,CAAC4D,OALC;AADE,CAVI,eAoBlB2G,gCAAO,CAAC8L,EApBU,IAoBJ;AACZ+pE,UAAQ,EAAE,CACNpgF,6BAAI,CAACuD,IADC,EAENvD,6BAAI,CAACwD,UAFC,EAGNxD,6BAAI,CAACyD,IAHC,EAINzD,6BAAI,CAAC0D,QAJC;AADE,CApBI,eA6BlB6G,gCAAO,CAACyB,EA7BU,IA6BJ;AACZo0E,UAAQ,EAAE,CACNpgF,6BAAI,CAACuD,IADC,EAENvD,6BAAI,CAACwD,UAFC,EAGNxD,6BAAI,CAACyD,IAHC,EAINzD,6BAAI,CAAC6D,KAJC,EAKN7D,6BAAI,CAAC8D,GALC;AADE,CA7BI,eAuClByG,gCAAO,CAAC0F,EAvCU,IAuCJ;AACZmwE,UAAQ,EAAE,CACNpgF,6BAAI,CAACuD,IADC,EAENvD,6BAAI,CAACwD,UAFC,EAGNxD,6BAAI,CAACyD,IAHC,EAINzD,6BAAI,CAAC+D,GAJC;AADE,CAvCI,eAgDlBwG,gCAAO,CAACwC,EAhDU,IAgDJ;AACZqzE,UAAQ,EAAE,CACNpgF,6BAAI,CAACuD,IADC,EAENvD,6BAAI,CAACwD,UAFC,EAGNxD,6BAAI,CAACyD,IAHC,EAINzD,6BAAI,CAACgE,GAJC;AADE,CAhDI,eAAjB;;AA0DP,SAASq8E,SAAT,CAA8Br/C,IAA9B,EAA6Cs/C,QAA7C,EAAgE1jE,GAAhE,EAA8EsC,GAA9E,EAA4F;AACxF,MAAMqhE,cAAc,GAAGv/C,IAAI,CAACs/C,QAAD,CAA3B;;AAEA,MAAIC,cAAc,IAAIA,cAAc,CAACviE,cAAf,CAA8BpB,GAA9B,CAAtB,EAA0D;AACtD,WAAO2jE,cAAc,CAAC3jE,GAAD,CAArB;AACH;;AAED,MAAIokB,IAAI,CAACn8B,gCAAD,CAAJ,IAAiBm8B,IAAI,CAACn8B,gCAAD,CAAJ,CAAcmZ,cAAd,CAA6BpB,GAA7B,CAArB,EAAwD;AACpD,WAAOokB,IAAI,CAACn8B,gCAAD,CAAJ,CAAc+X,GAAd,CAAP;AACH;;AAED,MAAIwG,SAAS,CAAC/J,MAAV,IAAoB,CAAxB,EAA2B;AACvB;AACA,WAAO6F,GAAP;AACH;;AAED,QAAM,IAAInE,KAAJ,yBAAiCulE,QAAjC,SAA+C1jE,GAA/C,CAAN;AACH;;AAEM,SAAS4jE,gBAAT,CAAqCziE,MAArC,EAAsDnB,GAAtD,EAAoEsC,GAApE,EAAkF;AACrF,SAAOmhE,SAAS,CAACnB,cAAD,EAAiBnhE,MAAjB,EAAyBnB,GAAzB,EAA8BsC,GAA9B,CAAhB;AACH;AAEM,SAASuhE,aAAT,CAAkC1iE,MAAlC,EAAmDnB,GAAnD,EAAiEsC,GAAjE,EAA+E;AAClF,SAAOmhE,SAAS,CAACF,WAAD,EAAcpiE,MAAd,EAAsBnB,GAAtB,EAA2BsC,GAA3B,CAAhB;AACH,C;;ACnYD;AAGA;AAEA,IAAMwhE,yBAAyB,GAAG,EAAlC;AAEO,SAASC,mBAAT,CAA6B5iE,MAA7B,QAC8G;AAAA,MADvDmW,MACuD,QADvDA,MACuD;AAAA,MAD/C0sD,OAC+C,QAD/CA,OAC+C;AAAA,MADtCC,MACsC,QADtCA,MACsC;AAAA,MAD9BrK,MAC8B,QAD9BA,MAC8B;AAAA,MADtBxiD,GACsB,QADtBA,GACsB;AAEjH,MAAM8sD,UAAU,GAAGD,MAAM,KAAKj+E,sCAAa,CAACE,QAA5C;AACA,MAAMi+E,cAAc,GAAGP,gBAAgB,CAACziE,MAAD,EAAS+iE,UAAU,GAAG,eAAH,GAAqB,iBAAxC,CAAvC;;AAEA,MAAI,CAACC,cAAL,EAAqB;AACjB,WAAO18E,mDAA0B,CAACG,oBAAlC;AACH;;AAED,MAAIo8E,OAAO,CAACI,UAAR,CAAmBhoE,OAAnB,CAA2B+E,MAA3B,MAAuC,CAAC,CAAxC,IAA6CyiE,gBAAgB,CAACziE,MAAD,EAAS,aAAT,CAAjE,EAA0F;AACtF,WAAO1Z,mDAA0B,CAACI,OAAlC;AACH;;AAED,MAAIm8E,OAAO,CAACI,UAAR,CAAmBhoE,OAAnB,CAA2B+E,MAA3B,MAAuC,CAAC,CAAxC,IAA6CA,MAAM,KAAK1a,gCAAO,CAAClD,KAApE,EAA2E;AACvE,WAAOkE,mDAA0B,CAACI,OAAlC;AACH;;AACD,MAAIm8E,OAAO,CAACI,UAAR,CAAmBhoE,OAAnB,CAA2B+E,MAA3B,MAAuC,CAAC,CAAxC,IAA6CA,MAAM,KAAK1a,gCAAO,CAACjD,IAApE,EAA0E;AACtE,WAAOiE,mDAA0B,CAACI,OAAlC;AACH;;AAED,MAAI+7E,gBAAgB,CAACziE,MAAD,EAAS,kBAAT,EAA6B,CAAEmW,MAAM,CAACC,OAAT,CAA7B,CAAhB,CAAiEnb,OAAjE,CAAyEkb,MAAM,CAACC,OAAhF,MAA6F,CAAC,CAAlG,EAAqG;AACjG,WAAO9vB,mDAA0B,CAACM,kBAAlC;AACH;;AAED,MAAI67E,gBAAgB,CAACziE,MAAD,EAAS,qBAAT,CAAhB,IAAmD,CAACy4D,MAAxD,EAAgE;AAC5D,WAAOnyE,mDAA0B,CAACW,cAAlC;AACH;;AAED,MAAMk7E,WAAW,GAAGM,gBAAgB,CAACziE,MAAD,EAAS,aAAT,CAApC;;AACA,MAAImiE,WAAW,IAAIA,WAAW,CAAClnE,OAAZ,CAAoBgb,GAApB,MAA6B,CAAC,CAAjD,EAAoD;AAChD,WAAO3vB,mDAA0B,CAACY,WAAlC;AACH;AACJ;AAEM,SAASg8E,qBAAT,CAA+BljE,MAA/B,SAC6E;AAAA,MADpBmW,MACoB,SADpBA,MACoB;AAAA,MADZ0sD,OACY,SADZA,OACY;AAAA,MADHC,MACG,SADHA,MACG;AAEhF,MAAMC,UAAU,GAAGD,MAAM,KAAKj+E,sCAAa,CAACE,QAA5C;;AAEA,MAAIg+E,UAAU,IAAIN,gBAAgB,CAACziE,MAAD,EAAS,0BAAT,EAAqC,EAArC,CAAhB,CAAyD/E,OAAzD,CAAiEkb,MAAM,CAACC,OAAxE,MAAqF,CAAC,CAAxG,EAA2G;AACvG,WAAO9vB,mDAA0B,CAACO,eAAlC;AACH;;AAED,MAAI47E,gBAAgB,CAACziE,MAAD,EAAS,SAAT,CAApB,EAAyC;AACrC,WAAO1Z,mDAA0B,CAACQ,OAAlC;AACH;;AAED,MAAI+7E,OAAO,CAACM,OAAR,CAAgBloE,OAAhB,CAAwB+E,MAAxB,MAAoC,CAAC,CAArC,IAA0CyiE,gBAAgB,CAACziE,MAAD,EAAS,YAAT,CAA9D,EAAsF;AAClF,WAAO1Z,mDAA0B,CAACK,MAAlC;AACH;;AAED,MAAIk8E,OAAO,CAACO,UAAR,CAAmBnoE,OAAnB,CAA2B+E,MAA3B,MAAuC,CAAC,CAAxC,IAA6CyiE,gBAAgB,CAACziE,MAAD,EAAS,eAAT,CAAjE,EAA4F;AACxF,WAAO1Z,mDAA0B,CAACS,UAAlC;AACH;AACJ;AAEM,SAASs8E,iBAAT,CAA2BrjE,MAA3B,SACiK;AAAA,MAD5GmW,MAC4G,SAD5GA,MAC4G;AAAA,MADpG0sD,OACoG,SADpGA,OACoG;AAAA,MAD3F5sD,GAC2F,SAD3FA,GAC2F;AAAA,MADtF6sD,MACsF,SADtFA,MACsF;AAAA,MAD9EQ,QAC8E,SAD9EA,QAC8E;AAAA,MADpE7K,MACoE,SADpEA,MACoE;;AAEpK,MAAI6K,QAAQ,IAAItjE,MAAM,KAAKsjE,QAA3B,EAAqC;AACjC,WAAO;AAAEC,cAAQ,EAAE,IAAZ;AAAkB7iB,YAAM,EAAEp6D,mDAA0B,CAACC;AAArD,KAAP;AACH;;AAED,MAAI,CAACk8E,gBAAgB,CAACziE,MAAD,EAAS,SAAT,CAArB,EAA0C;AACtC,QAAI,EAAEiW,GAAG,KAAK7uB,4BAAG,CAACK,IAAZ,IAAoBg7E,gBAAgB,CAACziE,MAAD,EAAS,MAAT,CAAtC,CAAJ,EAA6D;AACzD,aAAO;AAAEujE,gBAAQ,EAAE,KAAZ;AAAmB7iB,cAAM,EAAEp6D,mDAA0B,CAACE;AAAtD,OAAP;AACH;AACJ;;AAED,MAAMg9E,gBAAgB,GAAGZ,mBAAmB,CAAC5iE,MAAD,EAAS;AAAEmW,UAAM,EAANA,MAAF;AAAU0sD,WAAO,EAAPA,OAAV;AAAmBC,UAAM,EAANA,MAAnB;AAA2BrK,UAAM,EAANA,MAA3B;AAAmCxiD,OAAG,EAAHA;AAAnC,GAAT,CAA5C;;AAEA,MAAIutD,gBAAJ,EAAsB;AAClB,WAAO;AAAED,cAAQ,EAAE,KAAZ;AAAmB7iB,YAAM,EAAE8iB;AAA3B,KAAP;AACH;;AAED,MAAMC,kBAAkB,GAAGP,qBAAqB,CAACljE,MAAD,EAAS;AAAEmW,UAAM,EAANA,MAAF;AAAU0sD,WAAO,EAAPA,OAAV;AAAmBC,UAAM,EAANA;AAAnB,GAAT,CAAhD;;AAEA,MAAIW,kBAAJ,EAAwB;AACpB,WAAO;AAAEF,cAAQ,EAAE,IAAZ;AAAkB7iB,YAAM,EAAE+iB;AAA1B,KAAP;AACH;;AAED,SAAO;AAAEF,YAAQ,EAAE,KAAZ;AAAmB7iB,UAAM,EAAEp6D,mDAA0B,CAACU;AAAtD,GAAP;AACH;AAEM,SAAS08E,wBAAT,QAC2I;AAAA,MADvGb,OACuG,SADvGA,OACuG;AAAA,MAD9FS,QAC8F,SAD9FA,QAC8F;AAAA,MADpFntD,MACoF,SADpFA,MACoF;AAAA,MAD5EF,GAC4E,SAD5EA,GAC4E;AAAA,MADvE6sD,MACuE,SADvEA,MACuE;AAAA,MAD/DrK,MAC+D,SAD/DA,MAC+D;AAE9I,MAAMkL,OAAO,GAAG,EAAhB;AAEA,MAAMC,eAAe,GAAG3C,gBAAgB,CAACt5D,MAAjB,CAAwB,UAAA3H,MAAM,EAAI;AAAA,6BACzBqjE,iBAAiB,CAACrjE,MAAD,EAAS;AAAEsjE,cAAQ,EAARA,QAAF;AAAYntD,YAAM,EAANA,MAAZ;AAAoB0sD,aAAO,EAAPA,OAApB;AAA6B5sD,SAAG,EAAHA,GAA7B;AAAkC6sD,YAAM,EAANA,MAAlC;AAA0CrK,YAAM,EAANA;AAA1C,KAAT,CADQ;AAAA,QAC9C8K,QAD8C,sBAC9CA,QAD8C;AAAA,QACpC7iB,MADoC,sBACpCA,MADoC;;AAEtDijB,WAAO,CAAC3jE,MAAD,CAAP,GAAkB;AAAEujE,cAAQ,EAARA,QAAF;AAAY7iB,YAAM,EAANA,MAAZ;AAAoBmjB,aAAO,EAAE;AAAE5tD,WAAG,EAAHA,GAAF;AAAOE,cAAM,EAANA,MAAP;AAAe2sD,cAAM,EAANA;AAAf;AAA7B,KAAlB;AACA,WAAOS,QAAP;AACH,GAJuB,CAAxB;AAMAZ,2BAAyB,CAACznE,IAA1B,CAA+ByoE,OAA/B;AAEAC,iBAAe,CAACloE,MAAhB,CAAuBkoE,eAAe,CAAC3oE,OAAhB,CAAwBqoE,QAAxB,CAAvB,EAA0D,CAA1D;AACAM,iBAAe,CAACE,OAAhB,CAAwBR,QAAxB;AAEA,SAAOM,eAAP;AACH;AAEM,SAASG,sBAAT,QACgE;AAAA,MAD9BlB,OAC8B,SAD9BA,OAC8B;AAAA,MADrB1sD,MACqB,SADrBA,MACqB;AAEnE,SAAOusD,aAAa,CAACvsD,MAAM,CAACC,OAAR,EAAiB,UAAjB,CAAb,CACFzO,MADE,CACK,UAAAq8D,IAAI;AAAA,WAAInB,OAAO,CAACI,UAAR,CAAmBhoE,OAAnB,CAA2B+oE,IAA3B,MAAqC,CAAC,CAA1C;AAAA,GADT,CAAP;AAEH;AAEM,SAASC,eAAT,CAAyBpB,OAAzB,EAAuG;AAAA,MAA9EA,OAA8E;AAA9EA,WAA8E,GAAjD;AAAEM,aAAO,EAAE,EAAX;AAAeF,gBAAU,EAAE,EAA3B;AAA+BG,gBAAU,EAAE;AAA3C,KAAiD;AAAA;;AAE1G,MAAIP,OAAO,CAACM,OAAZ,EAAqB;AAAA,0CACIN,OAAO,CAACM,OADZ,yCACqB;AAAjC,UAAMnjE,MAAM,yBAAZ;;AACD,UAAI7Y,sCAAa,CAAC8T,OAAd,CAAsB+E,MAAtB,MAAkC,CAAC,CAAvC,EAA0C;AACtC;AACH;;AAED,UAAI,CAACmhE,cAAc,CAAClhE,cAAf,CAA8BD,MAA9B,CAAL,EAA4C;AACxC,cAAM,IAAIhD,KAAJ,8BAAsCgD,MAAtC,CAAN;AACH;;AAED,UAAI,CAACyiE,gBAAgB,CAACziE,MAAD,EAAS,YAAT,CAArB,EAA6C;AACzC,cAAM,IAAIhD,KAAJ,oCAA4CgD,MAA5C,CAAN;AACH;;AAED,UAAI6iE,OAAO,CAACI,UAAR,IAAsBJ,OAAO,CAACI,UAAR,CAAmBhoE,OAAnB,CAA2B+E,MAA3B,MAAuC,CAAC,CAAlE,EAAqE;AACjE,cAAM,IAAIhD,KAAJ,iDAAyDgD,MAAzD,CAAN;AACH;AACJ;AACJ;;AAED,MAAI6iE,OAAO,CAACI,UAAZ,EAAwB;AAAA,6CACCJ,OAAO,CAACI,UADT,4CACqB;AAApC,UAAMjjE,OAAM,4BAAZ;;AACD,UAAI7Y,sCAAa,CAAC8T,OAAd,CAAsB+E,OAAtB,MAAkC,CAAC,CAAvC,EAA0C;AACtC;AACH;;AAED,UAAI,CAACmhE,cAAc,CAAClhE,cAAf,CAA8BD,OAA9B,CAAL,EAA4C;AACxC,cAAM,IAAIhD,KAAJ,8BAAsCgD,OAAtC,CAAN;AACH;;AAED,UAAI,CAACyiE,gBAAgB,CAACziE,OAAD,EAAS,aAAT,CAArB,EAA8C;AAC1C,cAAM,IAAIhD,KAAJ,uCAA+CgD,OAA/C,CAAN;AACH;AACJ;AACJ;AACJ;AAEM,SAASkkE,qBAAT,GAAiC;AACpCvB,2BAAyB,CAACngD,OAA1B,CAAkC,UAACmhD,OAAD,EAAUnmE,CAAV,EAAgB;AAC9C2T,WAAO,CAACoP,GAAR,gBAAyB/iB,CAAC,GAAG,CAA7B,WAD8C,CACP;;AAEvC2T,WAAO,CAACgzD,KAAR,CAAcjnE,MAAM,CAACyB,IAAP,CAAYglE,OAAZ,EAAqB/kE,GAArB,CAAyB,UAAAoB,MAAM,EAAI;AAAG;AAAH,4BACP2jE,OAAO,CAAC3jE,MAAD,CADA;AAAA,UACrC0gD,MADqC,mBACrCA,MADqC;AAAA,UAC7B6iB,QAD6B,mBAC7BA,QAD6B;AAAA,UACnBM,OADmB,mBACnBA,OADmB;AAG7C,aAAO;AACH,mBAAe7jE,MADZ;AAEH,kBAAe0gD,MAFZ;AAGH,uBAAe6iB,QAAQ,GAAG,UAAH,GAAgB,YAHpC;AAIH,mBAAe7iE,IAAI,CAACC,SAAL,CAAekjE,OAAf;AAJZ,OAAP;AAMH,KATa,CAAd;AAUH,GAbD;AAcH,C;;;;;;AC7KD;AAEA;AASO,IAAMO,aAA4B,wCAEnCt9E,gCAFmC,IAExB;AAETu9E,QAAM,EAAE,CACJhhF,qCAAY,CAACC,IADT,EAEJD,qCAAY,CAACE,IAFT,EAGJF,qCAAY,CAACG,MAHT,EAIJH,qCAAY,CAACI,KAJT,EAKJJ,qCAAY,CAACM,KALT,CAFC;AAUT2gF,OAAK,EAAG,CACJvgF,oCAAW,CAACE,KADR,EAEJF,oCAAW,CAACG,MAFR,EAGJH,oCAAW,CAACI,KAHR,EAIJJ,oCAAW,CAACM,UAJR,CAVC;AAiBTkgF,QAAM,EAAE,CACJhgF,qCAAY,CAACC,IADT,EAEJD,qCAAY,CAACE,IAFT,CAjBC;AAsBT+/E,SAAO,EAAE,CACL3/E,sCAAa,CAACC,UADT,EAELD,sCAAa,CAACE,QAFT,CAtBA;AA2BT0/E,YAAU,iCACJphF,qCAAY,CAACC,IADT,IACmBO,0CAAiB,CAACN,IADrC,cAEJF,qCAAY,CAACG,MAFT,IAEmBK,0CAAiB,CAACN,IAFrC,cAGJF,qCAAY,CAACE,IAHT,IAGmBM,0CAAiB,CAACF,KAHrC,cAIJN,qCAAY,CAACI,KAJT,IAImBI,0CAAiB,CAACF,KAJrC,cAKJN,qCAAY,CAACI,KALT,IAKmBI,0CAAiB,CAACF,KALrC,cAMJN,qCAAY,CAACM,KANT,IAMmBE,0CAAiB,CAACN,IANrC,cA3BD;AAoCTmhF,eAAa,uCACPrhF,qCAAY,CAACC,IADN,IACoBgB,6CAAoB,CAACf,IADzC,iBAEPF,qCAAY,CAACG,MAFN,IAEoBc,6CAAoB,CAACf,IAFzC,iBAGPF,qCAAY,CAACE,IAHN,IAGoBe,6CAAoB,CAACf,IAHzC,iBAIPF,qCAAY,CAACI,KAJN,IAIoBa,6CAAoB,CAACb,KAJzC,iBAKPJ,qCAAY,CAACK,QALN,IAKoBY,6CAAoB,CAACf,IALzC,iBApCJ;AA6CTohF,iBAAe,2CACTthF,qCAAY,CAACC,IADJ,IACkBD,qCAAY,CAACE,IAD/B,mBAETF,qCAAY,CAACG,MAFJ,IAEkBH,qCAAY,CAACE,IAF/B,mBAGTF,qCAAY,CAACE,IAHJ,IAGkBF,qCAAY,CAACG,MAH/B,mBAITH,qCAAY,CAACI,KAJJ,IAIkBJ,qCAAY,CAACI,KAJ/B,mBAKTJ,qCAAY,CAACK,QALJ,IAKkBL,qCAAY,CAACG,MAL/B,mBAMTH,qCAAY,CAACM,KANJ,IAMkBN,qCAAY,CAACM,KAN/B,mBA7CN;AAsDT6kB,KAAG,0BAtDM;AAuDTo8D,SAAO,mCAvDE;AAyDTxnD,eAAa,SAzDJ;AA0DTynD,cAAY,EAAajjF,qCAAY,CAACE,QA1D7B;AA2DTgjF,sBAAoB,EAAKljF,qCAAY,CAACC,MA3D7B;AA4DTkjF,cAAY,EAAa1hF,qCAAY,CAACC,IA5D7B;AA6DT0hF,aAAW,EAAcjhF,oCAAW,CAACE,KA7D5B;AA8DTghF,qBAAmB,EAAMlhF,oCAAW,CAACG,MA9D5B;AA+DTghF,cAAY,EAAa3gF,qCAAY,CAACC,IA/D7B;AAgET2gF,eAAa,EAAYtgF,sCAAa,CAACC,UAhE9B;AAiETsgF,iBAAe,EAAU,IAjEhB;AAkETC,yBAAuB,EAAE,IAlEhB;AAmETC,qBAAmB,EAAM,KAnEhB;AAoETC,gBAAc,EAAW,IApEhB;AAqETC,aAAW,IArEF;AAuETC,aAAW,EAAU1hF,oCAAW,CAACC,IAvExB;AAwET0hF,qBAAmB,EAAE3hF,oCAAW,CAACG,MAxExB;AA0ETyhF,aAAW,EAAU5hF,oCAAW,CAACK,IA1ExB;AA2ETwhF,qBAAmB,EAAE7hF,oCAAW,CAACK,IA3ExB;AA6ETyhF,sBAAoB,EAAE,CA7Eb;AA8ETC,oBAAkB,EAAI,CA9Eb;AAgFTC,sBAAoB,EAAE,CAhFb;AAiFTC,oBAAkB,EAAI,CAjFb;AAmFTC,gBAAc,EAAQ,KAnFb;AAoFTC,mBAAiB,EAAK,IApFb;AAsFTC,cAAY,EAAE,KAtFL;AAwFTC,sBAAoB,EAAI,KAxFf;AAyFTC,wBAAsB,EAAE;AAzFf,CAFwB,iBA8FnCzkF,qCAAY,CAACC,MA9FsB,IA8FZ;AACrBykF,OAAK,eAAkBnhF,oCAAW,CAACC,EAA9B,mBAAgDD,oCAAW,CAACtD,MAA5D,OADgB;AAErB0kF,WAAS,eAAcphF,oCAAW,CAACC,EAA1B,mBAA4CD,oCAAW,CAACtD,MAAxD,OAFY;AAIrBskF,cAAY,EAAE,IAJO;AAMrBC,sBAAoB,EAAI,IANH;AAOrBC,wBAAsB,EAAE;AAPH,CA9FY,iBAwGnCzkF,qCAAY,CAACE,QAxGsB,IAwGV;AACvBwkF,OAAK,yBADkB;AAEvBC,WAAS,eAAcphF,oCAAW,CAACC,EAA1B,mBAA4CD,oCAAW,CAACtD,MAAxD,OAFc;AAIvBskF,cAAY,EAAE,IAJS;AAMvBC,sBAAoB,EAAI,IAND;AAOvBC,wBAAsB,EAAE;AAPD,CAxGU,iBAkHnCzkF,qCAAY,CAACG,GAlHsB,IAkHf;AAClBukF,OAAK,oBADa;AAElBC,WAAS,eAAcphF,oCAAW,CAACC,EAA1B,mBAA4CD,oCAAW,CAACtD,MAAxD,OAFS;AAIlBskF,cAAY,EAAE,IAJI;AAMlBC,sBAAoB,EAAI,IANN;AAOlBC,wBAAsB,EAAE;AAPN,CAlHe,iBA4HnCzkF,qCAAY,CAACM,MA5HsB,IA4HZ;AACrBokF,OAAK,uBADgB;AAErBC,WAAS,eAAcphF,oCAAW,CAACC,EAA1B,mBAA4CD,oCAAW,CAACtD,MAAxD,OAFY;AAIrBujF,iBAAe,EAAExnE,SAJI;AAMrBuoE,cAAY,EAAE,IANO;AAQrBC,sBAAoB,EAAI,IARH;AASrBC,wBAAsB,EAAE,IATH;AAWrBJ,gBAAc,EAAG;AAXI,CA5HY,iBA0InCrkF,qCAAY,CAACO,WA1IsB,IA0IP;AAC1BmkF,OAAK,EAAM,eAAChgE,KAAD,EAAW;AAAE,4BAAsBA,KAAK,CAACkgE,iBAAN,GAA0B,oBAA1B,GAAiD,aAAvE;AAA4F,GAD1F;AAE1BD,WAAS,eAAcphF,oCAAW,CAACC,EAA1B,mBAA4CD,oCAAW,CAACtD,MAAxD,OAFiB;AAI1BskF,cAAY,EAAc,IAJA;AAK1BC,sBAAoB,EAAM,IALA;AAM1BC,wBAAsB,EAAI,IANA;AAO1BI,wBAAsB,EAAI,KAPA;AAQ1BC,0BAAwB,EAAE;AARA,CA1IO,iBAqJnC9kF,qCAAY,CAACI,MArJsB,IAqJZ;AACrBskF,OAAK,EAAE,qBAAgB;AAAA,QAAbnwD,MAAa,QAAbA,MAAa;;AACnB,QAAIA,MAAM,CAACC,OAAP,KAAmB5pB,gCAAO,CAAC8C,EAA/B,EAAmC;AAC/B,0BAAmBnK,oCAAW,CAACnD,MAA/B;AACH;;AAED,wBAAmBmD,oCAAW,CAACC,EAA/B,mBAAiDD,oCAAW,CAACtD,MAA7D,mBAAmFsD,oCAAW,CAACnD,MAA/F;AACH,GAPoB;AAQrBukF,WAAS,EAAE,0BAAgB;AAAA,QAAbpwD,MAAa,SAAbA,MAAa;;AACvB,QAAIA,MAAM,CAACC,OAAP,KAAmB5pB,gCAAO,CAAC8C,EAA/B,EAAmC;AAC/B,0BAAmBnK,oCAAW,CAACnD,MAA/B;AACH;;AAED,wBAAmBmD,oCAAW,CAACC,EAA/B,mBAAiDD,oCAAW,CAACtD,MAA7D,mBAAmFsD,oCAAW,CAACnD,MAA/F;AACH,GAdoB;AAgBrBwmB,KAAG,0BAhBkB;AAkBrB67D,QAAM,EAAE,CACJhhF,qCAAY,CAACK,QADT,EAEJL,qCAAY,CAACI,KAFT,EAGJJ,qCAAY,CAACM,KAHT,CAlBa;AAwBrB8gF,YAAU,mCACJphF,qCAAY,CAACI,KADT,IACqBI,0CAAiB,CAACF,KADvC,eAEJN,qCAAY,CAACK,QAFT,IAEqBG,0CAAiB,CAACF,KAFvC,eAGJN,qCAAY,CAACM,KAHT,IAGqBE,0CAAiB,CAACN,IAHvC,eAxBW;AA8BrBohF,iBAAe,6CACTthF,qCAAY,CAACC,IADJ,IACcD,qCAAY,CAACK,QAD3B,oBAETL,qCAAY,CAACE,IAFJ,IAEcF,qCAAY,CAACK,QAF3B,oBAGTL,qCAAY,CAACG,MAHJ,IAGcH,qCAAY,CAACK,QAH3B,oBAITL,qCAAY,CAACI,KAJJ,IAIcJ,qCAAY,CAACI,KAJ3B,oBAKTJ,qCAAY,CAACM,KALJ,IAKcN,qCAAY,CAACM,KAL3B,oBA9BM;AAsCrBohF,cAAY,EAAE1hF,qCAAY,CAACK,QAtCN;AAwCrByiF,cAAY,EAAE,IAxCO;AA0CrBC,sBAAoB,EAAI,KA1CH;AA2CrBC,wBAAsB,EAAE,KA3CH;AA6CrBH,mBAAiB,EAAE;AA7CE,CArJY,iBAqMnCtkF,qCAAY,CAACQ,KArMsB,IAqMb;AACpBkkF,OAAK,eAAkBnhF,oCAAW,CAAC/C,KAA9B,OADe;AAEpBmkF,WAAS,eAAcphF,oCAAW,CAAC/C,KAA1B,OAFW;AAIpB2iF,cAAY,EAAE1hF,qCAAY,CAACG,MAJP;AAMpB6gF,QAAM,EAAE,CACJhhF,qCAAY,CAACE,IADT,EAEJF,qCAAY,CAACG,MAFT,EAGJH,qCAAY,CAACI,KAHT,EAIJJ,qCAAY,CAACM,KAJT,CANY;AAapB8gF,YAAU,mCACJphF,qCAAY,CAACE,IADT,IACmBM,0CAAiB,CAACF,KADrC,eAEJN,qCAAY,CAACG,MAFT,IAEmBK,0CAAiB,CAACN,IAFrC,eAGJF,qCAAY,CAACI,KAHT,IAGmBI,0CAAiB,CAACF,KAHrC,eAIJN,qCAAY,CAACM,KAJT,IAImBE,0CAAiB,CAACN,IAJrC,eAbU;AAoBpBohF,iBAAe,6CACTthF,qCAAY,CAACC,IADJ,IACkBD,qCAAY,CAACE,IAD/B,oBAETF,qCAAY,CAACE,IAFJ,IAEkBF,qCAAY,CAACG,MAF/B,oBAGTH,qCAAY,CAACG,MAHJ,IAGkBH,qCAAY,CAACE,IAH/B,oBAITF,qCAAY,CAACI,KAJJ,IAIkBJ,qCAAY,CAACI,KAJ/B,oBAKTJ,qCAAY,CAACK,QALJ,IAKkBL,qCAAY,CAACG,MAL/B,oBAMTH,qCAAY,CAACM,KANJ,IAMkBN,qCAAY,CAACM,KAN/B,oBApBK;AA6BpBwiF,cAAY,EAAE,IA7BM;AA+BpBC,sBAAoB,EAAI,KA/BJ;AAgCpBC,wBAAsB,EAAE;AAhCJ,CArMa,iBAuOnCzkF,qCAAY,CAACS,IAvOsB,IAuOd;AACnBikF,OAAK,eAAkBnhF,oCAAW,CAAC9C,IAA9B,OADc;AAEnBkkF,WAAS,eAAcphF,oCAAW,CAAC9C,IAA1B,OAFU;AAInB0iF,cAAY,EAAE1hF,qCAAY,CAACK,QAJR;AAMnB2gF,QAAM,EAAE,CACJhhF,qCAAY,CAACK,QADT,EAEJL,qCAAY,CAACE,IAFT,EAGJF,qCAAY,CAACI,KAHT,CANW;AAYnBghF,YAAU,mCACJphF,qCAAY,CAACK,QADT,IACuBG,0CAAiB,CAACF,KADzC,eAEJN,qCAAY,CAACE,IAFT,IAEqBM,0CAAiB,CAACF,KAFvC,eAGJN,qCAAY,CAACI,KAHT,IAGqBI,0CAAiB,CAACF,KAHvC,eAZS;AAkBnBghF,iBAAe,6CACTthF,qCAAY,CAACC,IADJ,IACkBD,qCAAY,CAACK,QAD/B,oBAETL,qCAAY,CAACE,IAFJ,IAEkBF,qCAAY,CAACE,IAF/B,oBAGTF,qCAAY,CAACG,MAHJ,IAGkBH,qCAAY,CAACK,QAH/B,oBAITL,qCAAY,CAACI,KAJJ,IAIkBJ,qCAAY,CAACI,KAJ/B,oBAKTJ,qCAAY,CAACK,QALJ,IAKkBL,qCAAY,CAACK,QAL/B,oBAMTL,qCAAY,CAACM,KANJ,IAMkBN,qCAAY,CAACK,QAN/B,oBAlBI;AA2BnByiF,cAAY,EAAE,KA3BK;AA6BnBC,sBAAoB,EAAI,KA7BL;AA8BnBC,wBAAsB,EAAE;AA9BL,CAvOc,iBAwQnCzkF,qCAAY,CAACU,KAxQsB,IAwQb;AAEpBgkF,OAAK,eAAkBnhF,oCAAW,CAAC7C,KAA9B,sBAFe;AAGpBikF,WAAS,eAAcphF,oCAAW,CAAC7C,KAA1B,sBAHW;AAKpByiF,cAAY,EAAE1hF,qCAAY,CAACG,MALP;AAOpB6gF,QAAM,EAAE,CACJhhF,qCAAY,CAACG,MADT,EAEJH,qCAAY,CAACI,KAFT,EAGJJ,qCAAY,CAACM,KAHT,CAPY;AAapB8gF,YAAU,mCACJphF,qCAAY,CAACG,MADT,IACmBK,0CAAiB,CAACJ,KADrC,eAEJJ,qCAAY,CAACI,KAFT,IAEmBI,0CAAiB,CAACF,KAFrC,eAGJN,qCAAY,CAACM,KAHT,IAGmBE,0CAAiB,CAACJ,KAHrC,eAbU;AAmBpBkhF,iBAAe,6CACTthF,qCAAY,CAACC,IADJ,IACkBD,qCAAY,CAACG,MAD/B,oBAETH,qCAAY,CAACE,IAFJ,IAEkBF,qCAAY,CAACG,MAF/B,oBAGTH,qCAAY,CAACG,MAHJ,IAGkBH,qCAAY,CAACG,MAH/B,oBAITH,qCAAY,CAACI,KAJJ,IAIkBJ,qCAAY,CAACI,KAJ/B,oBAKTJ,qCAAY,CAACK,QALJ,IAKkBL,qCAAY,CAACG,MAL/B,oBAMTH,qCAAY,CAACM,KANJ,IAMkBN,qCAAY,CAACM,KAN/B,oBAnBK;AA4BpBwiF,cAAY,EAAE,KA5BM;AA8BpBC,sBAAoB,EAAI,KA9BJ;AA+BpBC,wBAAsB,EAAE;AA/BJ,CAxQa,iBA0SnCzkF,qCAAY,CAACW,GA1SsB,IA0Sf;AAElB+jF,OAAK,eAAkBnhF,oCAAW,CAAC5C,GAA9B,OAFa;AAGlBgkF,WAAS,eAAcphF,oCAAW,CAAC5C,GAA1B,OAHS;AAKlBwiF,cAAY,EAAE1hF,qCAAY,CAACG,MALT;AAOlB6gF,QAAM,EAAE,CACJhhF,qCAAY,CAACG,MADT,EAEJH,qCAAY,CAACI,KAFT,EAGJJ,qCAAY,CAACM,KAHT,CAPU;AAalB8gF,YAAU,mCACJphF,qCAAY,CAACG,MADT,IACmBK,0CAAiB,CAACJ,KADrC,eAEJJ,qCAAY,CAACI,KAFT,IAEmBI,0CAAiB,CAACF,KAFrC,eAGJN,qCAAY,CAACM,KAHT,IAGmBE,0CAAiB,CAACJ,KAHrC,eAbQ;AAmBlBkhF,iBAAe,6CACTthF,qCAAY,CAACC,IADJ,IACkBD,qCAAY,CAACG,MAD/B,oBAETH,qCAAY,CAACE,IAFJ,IAEkBF,qCAAY,CAACG,MAF/B,oBAGTH,qCAAY,CAACG,MAHJ,IAGkBH,qCAAY,CAACG,MAH/B,oBAITH,qCAAY,CAACI,KAJJ,IAIkBJ,qCAAY,CAACI,KAJ/B,oBAKTJ,qCAAY,CAACK,QALJ,IAKkBL,qCAAY,CAACG,MAL/B,oBAMTH,qCAAY,CAACM,KANJ,IAMkBN,qCAAY,CAACM,KAN/B,oBAnBG;AA4BlBwiF,cAAY,EAAE,KA5BI;AA8BlBC,sBAAoB,EAAI,KA9BN;AA+BlBC,wBAAsB,EAAE;AA/BN,CA1Se,iBA4UnCzkF,qCAAY,CAACY,UA5UsB,IA4UR;AAEzB8jF,OAAK,eAAkBnhF,oCAAW,CAAC3C,UAA9B,OAFoB;AAGzB+jF,WAAS,eAAcphF,oCAAW,CAAC3C,UAA1B,OAHgB;AAKzBuiF,cAAY,EAAE1hF,qCAAY,CAACG,MALF;AAOzB6gF,QAAM,EAAE,CACJhhF,qCAAY,CAACG,MADT,EAEJH,qCAAY,CAACI,KAFT,EAGJJ,qCAAY,CAACM,KAHT,CAPiB;AAazB8gF,YAAU,mCACJphF,qCAAY,CAACG,MADT,IACmBK,0CAAiB,CAACJ,KADrC,eAEJJ,qCAAY,CAACI,KAFT,IAEmBI,0CAAiB,CAACF,KAFrC,eAGJN,qCAAY,CAACM,KAHT,IAGmBE,0CAAiB,CAACJ,KAHrC,eAbe;AAmBzBkhF,iBAAe,6CACTthF,qCAAY,CAACC,IADJ,IACkBD,qCAAY,CAACG,MAD/B,oBAETH,qCAAY,CAACE,IAFJ,IAEkBF,qCAAY,CAACG,MAF/B,oBAGTH,qCAAY,CAACG,MAHJ,IAGkBH,qCAAY,CAACG,MAH/B,oBAITH,qCAAY,CAACI,KAJJ,IAIkBJ,qCAAY,CAACI,KAJ/B,oBAKTJ,qCAAY,CAACK,QALJ,IAKkBL,qCAAY,CAACG,MAL/B,oBAMTH,qCAAY,CAACM,KANJ,IAMkBN,qCAAY,CAACM,KAN/B,oBAnBU;AA4BzBwiF,cAAY,EAAE,KA5BW;AA8BzBC,sBAAoB,EAAI,KA9BC;AA+BzBC,wBAAsB,EAAE;AA/BC,CA5UQ,iBA8WnCzkF,qCAAY,CAACa,OA9WsB,IA8WX;AAEtB6jF,OAAK,eAAkBnhF,oCAAW,CAAC1C,OAA9B,OAFiB;AAGtB8jF,WAAS,eAAcphF,oCAAW,CAAC1C,OAA1B,OAHa;AAKtBsiF,cAAY,EAAE1hF,qCAAY,CAACG,MALL;AAOtB6gF,QAAM,EAAE,CACJhhF,qCAAY,CAACG,MADT,EAEJH,qCAAY,CAACI,KAFT,EAGJJ,qCAAY,CAACM,KAHT,CAPc;AAatB8gF,YAAU,mCACJphF,qCAAY,CAACG,MADT,IACmBK,0CAAiB,CAACJ,KADrC,eAEJJ,qCAAY,CAACI,KAFT,IAEmBI,0CAAiB,CAACF,KAFrC,eAGJN,qCAAY,CAACM,KAHT,IAGmBE,0CAAiB,CAACJ,KAHrC,eAbY;AAmBtBkhF,iBAAe,6CACTthF,qCAAY,CAACC,IADJ,IACkBD,qCAAY,CAACG,MAD/B,oBAETH,qCAAY,CAACE,IAFJ,IAEkBF,qCAAY,CAACG,MAF/B,oBAGTH,qCAAY,CAACG,MAHJ,IAGkBH,qCAAY,CAACG,MAH/B,oBAITH,qCAAY,CAACI,KAJJ,IAIkBJ,qCAAY,CAACI,KAJ/B,oBAKTJ,qCAAY,CAACK,QALJ,IAKkBL,qCAAY,CAACG,MAL/B,oBAMTH,qCAAY,CAACM,KANJ,IAMkBN,qCAAY,CAACM,KAN/B,oBAnBO;AA4BtBwiF,cAAY,EAAE,KA5BQ;AA8BtBC,sBAAoB,EAAI,KA9BF;AA+BtBC,wBAAsB,EAAE;AA/BF,CA9WW,iBAgZnCzkF,qCAAY,CAACc,MAhZsB,IAgZZ;AAErB4jF,OAAK,eAAkBnhF,oCAAW,CAACzC,MAA9B,OAFgB;AAGrB6jF,WAAS,eAAcphF,oCAAW,CAACzC,MAA1B,OAHY;AAKrBqiF,cAAY,EAAE1hF,qCAAY,CAACG,MALN;AAOrB6gF,QAAM,EAAE,CACJhhF,qCAAY,CAACG,MADT,EAEJH,qCAAY,CAACI,KAFT,EAGJJ,qCAAY,CAACM,KAHT,CAPa;AAarB8gF,YAAU,mCACJphF,qCAAY,CAACG,MADT,IACmBK,0CAAiB,CAACJ,KADrC,eAEJJ,qCAAY,CAACI,KAFT,IAEmBI,0CAAiB,CAACF,KAFrC,eAGJN,qCAAY,CAACM,KAHT,IAGmBE,0CAAiB,CAACJ,KAHrC,eAbW;AAmBrBkhF,iBAAe,6CACTthF,qCAAY,CAACC,IADJ,IACkBD,qCAAY,CAACG,MAD/B,oBAETH,qCAAY,CAACE,IAFJ,IAEkBF,qCAAY,CAACG,MAF/B,oBAGTH,qCAAY,CAACG,MAHJ,IAGkBH,qCAAY,CAACG,MAH/B,oBAITH,qCAAY,CAACI,KAJJ,IAIkBJ,qCAAY,CAACI,KAJ/B,oBAKTJ,qCAAY,CAACK,QALJ,IAKkBL,qCAAY,CAACG,MAL/B,oBAMTH,qCAAY,CAACM,KANJ,IAMkBN,qCAAY,CAACM,KAN/B,oBAnBM;AA4BrBwiF,cAAY,EAAE,KA5BO;AA8BrBC,sBAAoB,EAAI,KA9BH;AA+BrBC,wBAAsB,EAAE;AA/BH,CAhZY,iBAkbnCzkF,qCAAY,CAACe,GAlbsB,IAkbf;AAElB2jF,OAAK,eAAkBnhF,oCAAW,CAACxC,GAA9B,OAFa;AAGlB4jF,WAAS,eAAcphF,oCAAW,CAACxC,GAA1B,OAHS;AAKlBoiF,cAAY,EAAE1hF,qCAAY,CAACG,MALT;AAOlB6gF,QAAM,EAAE,CACJhhF,qCAAY,CAACG,MADT,EAEJH,qCAAY,CAACI,KAFT,EAGJJ,qCAAY,CAACM,KAHT,CAPU;AAalB8gF,YAAU,qCACJphF,qCAAY,CAACG,MADT,IACmBK,0CAAiB,CAACJ,KADrC,gBAEJJ,qCAAY,CAACI,KAFT,IAEmBI,0CAAiB,CAACF,KAFrC,gBAGJN,qCAAY,CAACM,KAHT,IAGmBE,0CAAiB,CAACJ,KAHrC,gBAbQ;AAmBlBkhF,iBAAe,+CACTthF,qCAAY,CAACC,IADJ,IACkBD,qCAAY,CAACG,MAD/B,qBAETH,qCAAY,CAACE,IAFJ,IAEkBF,qCAAY,CAACG,MAF/B,qBAGTH,qCAAY,CAACG,MAHJ,IAGkBH,qCAAY,CAACG,MAH/B,qBAITH,qCAAY,CAACI,KAJJ,IAIkBJ,qCAAY,CAACI,KAJ/B,qBAKTJ,qCAAY,CAACK,QALJ,IAKkBL,qCAAY,CAACG,MAL/B,qBAMTH,qCAAY,CAACM,KANJ,IAMkBN,qCAAY,CAACM,KAN/B,qBAnBG;AA4BlBwiF,cAAY,EAAE,KA5BI;AA8BlBC,sBAAoB,EAAI,KA9BN;AA+BlBC,wBAAsB,EAAE;AA/BN,CAlbe,iBAodnCzkF,qCAAY,CAACgB,MApdsB,IAodZ;AAErB0jF,OAAK,eAAkBnhF,oCAAW,CAACvC,MAA9B,OAFgB;AAGrB2jF,WAAS,eAAcphF,oCAAW,CAACvC,MAA1B,OAHY;AAKrBmiF,cAAY,EAAE1hF,qCAAY,CAACG,MALN;AAOrB6gF,QAAM,EAAE,CACJhhF,qCAAY,CAACG,MADT,EAEJH,qCAAY,CAACI,KAFT,EAGJJ,qCAAY,CAACM,KAHT,CAPa;AAarB8gF,YAAU,qCACJphF,qCAAY,CAACG,MADT,IACmBK,0CAAiB,CAACJ,KADrC,gBAEJJ,qCAAY,CAACI,KAFT,IAEmBI,0CAAiB,CAACF,KAFrC,gBAGJN,qCAAY,CAACM,KAHT,IAGmBE,0CAAiB,CAACJ,KAHrC,gBAbW;AAmBrBkhF,iBAAe,+CACTthF,qCAAY,CAACC,IADJ,IACkBD,qCAAY,CAACG,MAD/B,qBAETH,qCAAY,CAACE,IAFJ,IAEkBF,qCAAY,CAACG,MAF/B,qBAGTH,qCAAY,CAACG,MAHJ,IAGkBH,qCAAY,CAACG,MAH/B,qBAITH,qCAAY,CAACI,KAJJ,IAIkBJ,qCAAY,CAACI,KAJ/B,qBAKTJ,qCAAY,CAACK,QALJ,IAKkBL,qCAAY,CAACG,MAL/B,qBAMTH,qCAAY,CAACM,KANJ,IAMkBN,qCAAY,CAACM,KAN/B,qBAnBM;AA4BrBwiF,cAAY,EAAE,KA5BO;AA8BrBC,sBAAoB,EAAI,KA9BH;AA+BrBC,wBAAsB,EAAE;AA/BH,CApdY,iBAsfnCzkF,qCAAY,CAACiB,GAtfsB,IAsff;AAElByjF,OAAK,eAAkBnhF,oCAAW,CAACtC,GAA9B,OAFa;AAGlB0jF,WAAS,eAAcphF,oCAAW,CAACtC,GAA1B,OAHS;AAKlBkiF,cAAY,EAAE1hF,qCAAY,CAACG,MALT;AAOlB6gF,QAAM,EAAE,CACJhhF,qCAAY,CAACG,MADT,EAEJH,qCAAY,CAACI,KAFT,EAGJJ,qCAAY,CAACM,KAHT,CAPU;AAalB8gF,YAAU,qCACJphF,qCAAY,CAACG,MADT,IACmBK,0CAAiB,CAACJ,KADrC,gBAEJJ,qCAAY,CAACI,KAFT,IAEmBI,0CAAiB,CAACF,KAFrC,gBAGJN,qCAAY,CAACM,KAHT,IAGmBE,0CAAiB,CAACJ,KAHrC,gBAbQ;AAmBlBkhF,iBAAe,+CACTthF,qCAAY,CAACC,IADJ,IACkBD,qCAAY,CAACG,MAD/B,qBAETH,qCAAY,CAACE,IAFJ,IAEkBF,qCAAY,CAACG,MAF/B,qBAGTH,qCAAY,CAACG,MAHJ,IAGkBH,qCAAY,CAACG,MAH/B,qBAITH,qCAAY,CAACI,KAJJ,IAIkBJ,qCAAY,CAACI,KAJ/B,qBAKTJ,qCAAY,CAACK,QALJ,IAKkBL,qCAAY,CAACG,MAL/B,qBAMTH,qCAAY,CAACM,KANJ,IAMkBN,qCAAY,CAACM,KAN/B,qBAnBG;AA4BlBwiF,cAAY,EAAE,KA5BI;AA8BlBC,sBAAoB,EAAI,KA9BN;AA+BlBC,wBAAsB,EAAE;AA/BN,CAtfe,iBAwhBnCzkF,qCAAY,CAACkB,IAxhBsB,IAwhBd;AAEnBwjF,OAAK,eAAkBnhF,oCAAW,CAACrC,IAA9B,OAFc;AAGnByjF,WAAS,eAAcphF,oCAAW,CAACrC,IAA1B,OAHU;AAKnBiiF,cAAY,EAAE1hF,qCAAY,CAACG,MALR;AAOnB6gF,QAAM,EAAE,CACJhhF,qCAAY,CAACG,MADT,EAEJH,qCAAY,CAACI,KAFT,EAGJJ,qCAAY,CAACM,KAHT,CAPW;AAanB8gF,YAAU,qCACJphF,qCAAY,CAACG,MADT,IACmBK,0CAAiB,CAACJ,KADrC,gBAEJJ,qCAAY,CAACI,KAFT,IAEmBI,0CAAiB,CAACF,KAFrC,gBAGJN,qCAAY,CAACM,KAHT,IAGmBE,0CAAiB,CAACJ,KAHrC,gBAbS;AAmBnBkhF,iBAAe,+CACTthF,qCAAY,CAACC,IADJ,IACkBD,qCAAY,CAACG,MAD/B,qBAETH,qCAAY,CAACE,IAFJ,IAEkBF,qCAAY,CAACG,MAF/B,qBAGTH,qCAAY,CAACG,MAHJ,IAGkBH,qCAAY,CAACG,MAH/B,qBAITH,qCAAY,CAACI,KAJJ,IAIkBJ,qCAAY,CAACI,KAJ/B,qBAKTJ,qCAAY,CAACK,QALJ,IAKkBL,qCAAY,CAACG,MAL/B,qBAMTH,qCAAY,CAACM,KANJ,IAMkBN,qCAAY,CAACM,KAN/B,qBAnBI;AA4BnBwiF,cAAY,EAAE,KA5BK;AA8BnBC,sBAAoB,EAAI,KA9BL;AA+BnBC,wBAAsB,EAAE;AA/BL,CAxhBc,iBA0jBnCzkF,qCAAY,CAACmB,YA1jBsB,IA0jBN;AAE3BujF,OAAK,eAAkBnhF,oCAAW,CAACpC,YAA9B,OAFsB;AAG3BwjF,WAAS,eAAcphF,oCAAW,CAACpC,YAA1B,OAHkB;AAK3BgiF,cAAY,EAAE1hF,qCAAY,CAACG,MALA;AAO3B6gF,QAAM,EAAE,CACJhhF,qCAAY,CAACG,MADT,EAEJH,qCAAY,CAACI,KAFT,EAGJJ,qCAAY,CAACM,KAHT,CAPmB;AAa3B8gF,YAAU,qCACJphF,qCAAY,CAACG,MADT,IACmBK,0CAAiB,CAACJ,KADrC,gBAEJJ,qCAAY,CAACI,KAFT,IAEmBI,0CAAiB,CAACF,KAFrC,gBAGJN,qCAAY,CAACM,KAHT,IAGmBE,0CAAiB,CAACJ,KAHrC,gBAbiB;AAmB3BkhF,iBAAe,+CACTthF,qCAAY,CAACC,IADJ,IACkBD,qCAAY,CAACG,MAD/B,qBAETH,qCAAY,CAACE,IAFJ,IAEkBF,qCAAY,CAACG,MAF/B,qBAGTH,qCAAY,CAACG,MAHJ,IAGkBH,qCAAY,CAACG,MAH/B,qBAITH,qCAAY,CAACI,KAJJ,IAIkBJ,qCAAY,CAACI,KAJ/B,qBAKTJ,qCAAY,CAACK,QALJ,IAKkBL,qCAAY,CAACG,MAL/B,qBAMTH,qCAAY,CAACM,KANJ,IAMkBN,qCAAY,CAACM,KAN/B,qBAnBY;AA4B3BwiF,cAAY,EAAE,KA5Ba;AA8B3BC,sBAAoB,EAAI,KA9BG;AA+B3BC,wBAAsB,EAAE;AA/BG,CA1jBM,iBA4lBnCzkF,qCAAY,CAACoB,IA5lBsB,IA4lBd;AAEnBsjF,OAAK,eAAkBnhF,oCAAW,CAACnC,IAA9B,OAFc;AAGnBujF,WAAS,eAAcphF,oCAAW,CAACnC,IAA1B,OAHU;AAKnB+hF,cAAY,EAAE1hF,qCAAY,CAACG,MALR;AAOnB6gF,QAAM,EAAE,CACJhhF,qCAAY,CAACG,MADT,EAEJH,qCAAY,CAACI,KAFT,EAGJJ,qCAAY,CAACM,KAHT,CAPW;AAanB8gF,YAAU,qCACJphF,qCAAY,CAACG,MADT,IACmBK,0CAAiB,CAACJ,KADrC,gBAEJJ,qCAAY,CAACI,KAFT,IAEmBI,0CAAiB,CAACF,KAFrC,gBAGJN,qCAAY,CAACM,KAHT,IAGmBE,0CAAiB,CAACJ,KAHrC,gBAbS;AAmBnBkhF,iBAAe,+CACTthF,qCAAY,CAACC,IADJ,IACkBD,qCAAY,CAACG,MAD/B,qBAETH,qCAAY,CAACE,IAFJ,IAEkBF,qCAAY,CAACG,MAF/B,qBAGTH,qCAAY,CAACG,MAHJ,IAGkBH,qCAAY,CAACG,MAH/B,qBAITH,qCAAY,CAACI,KAJJ,IAIkBJ,qCAAY,CAACI,KAJ/B,qBAKTJ,qCAAY,CAACK,QALJ,IAKkBL,qCAAY,CAACG,MAL/B,qBAMTH,qCAAY,CAACM,KANJ,IAMkBN,qCAAY,CAACM,KAN/B,qBAnBI;AA4BnBwiF,cAAY,EAAE,KA5BK;AA8BnBC,sBAAoB,EAAI,KA9BL;AA+BnBC,wBAAsB,EAAE;AA/BL,CA5lBc,iBA8nBnCzkF,qCAAY,CAACqB,OA9nBsB,IA8nBX;AAEtBqjF,OAAK,eAAkBnhF,oCAAW,CAAClC,OAA9B,OAFiB;AAGtBsjF,WAAS,eAAcphF,oCAAW,CAAClC,OAA1B,OAHa;AAKtB8hF,cAAY,EAAE1hF,qCAAY,CAACG,MALL;AAOtB6gF,QAAM,EAAE,CACJhhF,qCAAY,CAACG,MADT,EAEJH,qCAAY,CAACI,KAFT,EAGJJ,qCAAY,CAACM,KAHT,CAPc;AAatB8gF,YAAU,qCACJphF,qCAAY,CAACG,MADT,IACmBK,0CAAiB,CAACJ,KADrC,gBAEJJ,qCAAY,CAACI,KAFT,IAEmBI,0CAAiB,CAACF,KAFrC,gBAGJN,qCAAY,CAACM,KAHT,IAGmBE,0CAAiB,CAACJ,KAHrC,gBAbY;AAmBtBkhF,iBAAe,+CACTthF,qCAAY,CAACC,IADJ,IACkBD,qCAAY,CAACG,MAD/B,qBAETH,qCAAY,CAACE,IAFJ,IAEkBF,qCAAY,CAACG,MAF/B,qBAGTH,qCAAY,CAACG,MAHJ,IAGkBH,qCAAY,CAACG,MAH/B,qBAITH,qCAAY,CAACI,KAJJ,IAIkBJ,qCAAY,CAACI,KAJ/B,qBAKTJ,qCAAY,CAACK,QALJ,IAKkBL,qCAAY,CAACG,MAL/B,qBAMTH,qCAAY,CAACM,KANJ,IAMkBN,qCAAY,CAACM,KAN/B,qBAnBO;AA4BtBwiF,cAAY,EAAE,KA5BQ;AA8BtBC,sBAAoB,EAAI,KA9BF;AA+BtBC,wBAAsB,EAAE;AA/BF,CA9nBW,iBAgqBnCzkF,qCAAY,CAACsB,MAhqBsB,IAgqBZ;AAErBojF,OAAK,eAAkBnhF,oCAAW,CAACjC,MAA9B,OAFgB;AAGrBqjF,WAAS,eAAcphF,oCAAW,CAACjC,MAA1B,OAHY;AAKrB6hF,cAAY,EAAE1hF,qCAAY,CAACG,MALN;AAOrB6gF,QAAM,EAAE,CACJhhF,qCAAY,CAACG,MADT,EAEJH,qCAAY,CAACI,KAFT,EAGJJ,qCAAY,CAACM,KAHT,CAPa;AAarB8gF,YAAU,qCACJphF,qCAAY,CAACG,MADT,IACmBK,0CAAiB,CAACJ,KADrC,gBAEJJ,qCAAY,CAACI,KAFT,IAEmBI,0CAAiB,CAACF,KAFrC,gBAGJN,qCAAY,CAACM,KAHT,IAGmBE,0CAAiB,CAACJ,KAHrC,gBAbW;AAmBrBkhF,iBAAe,+CACTthF,qCAAY,CAACC,IADJ,IACkBD,qCAAY,CAACG,MAD/B,qBAETH,qCAAY,CAACE,IAFJ,IAEkBF,qCAAY,CAACG,MAF/B,qBAGTH,qCAAY,CAACG,MAHJ,IAGkBH,qCAAY,CAACG,MAH/B,qBAITH,qCAAY,CAACI,KAJJ,IAIkBJ,qCAAY,CAACI,KAJ/B,qBAKTJ,qCAAY,CAACK,QALJ,IAKkBL,qCAAY,CAACG,MAL/B,qBAMTH,qCAAY,CAACM,KANJ,IAMkBN,qCAAY,CAACM,KAN/B,qBAnBM;AA4BrBwiF,cAAY,EAAE,KA5BO;AA8BrBC,sBAAoB,EAAI,KA9BH;AA+BrBC,wBAAsB,EAAE;AA/BH,CAhqBY,iBAksBnCzkF,qCAAY,CAACuB,MAlsBsB,IAksBZ;AAErBmjF,OAAK,eAAkBnhF,oCAAW,CAAChC,MAA9B,OAFgB;AAGrBojF,WAAS,eAAcphF,oCAAW,CAAChC,MAA1B,OAHY;AAKrB4hF,cAAY,EAAE1hF,qCAAY,CAACG,MALN;AAOrB6gF,QAAM,EAAE,CACJhhF,qCAAY,CAACG,MADT,EAEJH,qCAAY,CAACI,KAFT,EAGJJ,qCAAY,CAACM,KAHT,CAPa;AAarB8gF,YAAU,qCACJphF,qCAAY,CAACG,MADT,IACmBK,0CAAiB,CAACJ,KADrC,gBAEJJ,qCAAY,CAACI,KAFT,IAEmBI,0CAAiB,CAACF,KAFrC,gBAGJN,qCAAY,CAACM,KAHT,IAGmBE,0CAAiB,CAACJ,KAHrC,gBAbW;AAmBrBkhF,iBAAe,+CACTthF,qCAAY,CAACC,IADJ,IACkBD,qCAAY,CAACG,MAD/B,qBAETH,qCAAY,CAACE,IAFJ,IAEkBF,qCAAY,CAACG,MAF/B,qBAGTH,qCAAY,CAACG,MAHJ,IAGkBH,qCAAY,CAACG,MAH/B,qBAITH,qCAAY,CAACI,KAJJ,IAIkBJ,qCAAY,CAACI,KAJ/B,qBAKTJ,qCAAY,CAACK,QALJ,IAKkBL,qCAAY,CAACG,MAL/B,qBAMTH,qCAAY,CAACM,KANJ,IAMkBN,qCAAY,CAACM,KAN/B,qBAnBM;AA4BrBwiF,cAAY,EAAE,KA5BO;AA8BrBC,sBAAoB,EAAI,KA9BH;AA+BrBC,wBAAsB,EAAE;AA/BH,CAlsBY,iBAouBnCzkF,qCAAY,CAACwB,IApuBsB,IAouBd;AAEnBkjF,OAAK,eAAkBnhF,oCAAW,CAAC/B,IAA9B,OAFc;AAGnBmjF,WAAS,eAAcphF,oCAAW,CAAC/B,IAA1B,OAHU;AAKnB2hF,cAAY,EAAE1hF,qCAAY,CAACG,MALR;AAOnB6gF,QAAM,EAAE,CACJhhF,qCAAY,CAACG,MADT,EAEJH,qCAAY,CAACI,KAFT,EAGJJ,qCAAY,CAACM,KAHT,CAPW;AAanB8gF,YAAU,qCACJphF,qCAAY,CAACG,MADT,IACmBK,0CAAiB,CAACJ,KADrC,gBAEJJ,qCAAY,CAACI,KAFT,IAEmBI,0CAAiB,CAACF,KAFrC,gBAGJN,qCAAY,CAACM,KAHT,IAGmBE,0CAAiB,CAACJ,KAHrC,gBAbS;AAmBnBkhF,iBAAe,+CACTthF,qCAAY,CAACC,IADJ,IACkBD,qCAAY,CAACG,MAD/B,qBAETH,qCAAY,CAACE,IAFJ,IAEkBF,qCAAY,CAACG,MAF/B,qBAGTH,qCAAY,CAACG,MAHJ,IAGkBH,qCAAY,CAACG,MAH/B,qBAITH,qCAAY,CAACI,KAJJ,IAIkBJ,qCAAY,CAACI,KAJ/B,qBAKTJ,qCAAY,CAACK,QALJ,IAKkBL,qCAAY,CAACG,MAL/B,qBAMTH,qCAAY,CAACM,KANJ,IAMkBN,qCAAY,CAACM,KAN/B,qBAnBI;AA4BnBwiF,cAAY,EAAE,KA5BK;AA8BnBC,sBAAoB,EAAI,KA9BL;AA+BnBC,wBAAsB,EAAE;AA/BL,CApuBc,iBAswBnCzkF,qCAAY,CAACK,IAtwBsB,IAswBd;AAEnBqkF,OAAK,aAFc;AAGnBC,WAAS,aAHU;AAKnBxB,cAAY,EAAE1hF,qCAAY,CAACG,MALR;AAOnB6gF,QAAM,EAAE,CACJhhF,qCAAY,CAACO,WADT,CAPW;AAWnB6gF,YAAU,qCACJphF,qCAAY,CAACO,WADT,IACwBC,0CAAiB,CAACJ,KAD1C,gBAXS;AAenBkhF,iBAAe,+CACTthF,qCAAY,CAACC,IADJ,IACkBD,qCAAY,CAACO,WAD/B,qBAETP,qCAAY,CAACE,IAFJ,IAEkBF,qCAAY,CAACO,WAF/B,qBAGTP,qCAAY,CAACG,MAHJ,IAGkBH,qCAAY,CAACO,WAH/B,qBAITP,qCAAY,CAACI,KAJJ,IAIkBJ,qCAAY,CAACO,WAJ/B,qBAKTP,qCAAY,CAACK,QALJ,IAKkBL,qCAAY,CAACO,WAL/B,qBAMTP,qCAAY,CAACM,KANJ,IAMkBN,qCAAY,CAACO,WAN/B,qBAfI;AAwBnBuiF,cAAY,EAAE,KAxBK;AA0BnBC,sBAAoB,EAAI,KA1BL;AA2BnBC,wBAAsB,EAAE;AA3BL,CAtwBc,iBAAlC;AAqyBA,IAAMM,wBAAwB,sDAC/BrhF,gCAAO,CAACzD,MADuB,IACRD,qCAAY,CAACC,MADL,wBAE/ByD,gCAAO,CAAClD,KAFuB,IAERR,qCAAY,CAACQ,KAFL,wBAG/BkD,gCAAO,CAACjD,IAHuB,IAGRT,qCAAY,CAACS,IAHL,wBAI/BiD,gCAAO,CAACrD,IAJuB,IAIRL,qCAAY,CAACK,IAJL,wBAK/BqD,gCAAO,CAACtD,MALuB,IAKRJ,qCAAY,CAACI,MALL,wBAM/BsD,gCAAO,CAAChD,KANuB,IAMRV,qCAAY,CAACU,KANL,wBAO/BgD,gCAAO,CAAC/C,GAPuB,IAORX,qCAAY,CAACW,GAPL,wBAQ/B+C,gCAAO,CAAC9C,UARuB,IAQRZ,qCAAY,CAACY,UARL,wBAS/B8C,gCAAO,CAAC7C,OATuB,IASRb,qCAAY,CAACa,OATL,wBAU/B6C,gCAAO,CAAC5C,MAVuB,IAURd,qCAAY,CAACc,MAVL,wBAW/B4C,gCAAO,CAAC3C,GAXuB,IAWRf,qCAAY,CAACe,GAXL,wBAY/B2C,gCAAO,CAACzC,GAZuB,IAYRjB,qCAAY,CAACiB,GAZL,wBAa/ByC,gCAAO,CAAC1C,MAbuB,IAaRhB,qCAAY,CAACgB,MAbL,wBAc/B0C,gCAAO,CAACxC,IAduB,IAcRlB,qCAAY,CAACkB,IAdL,wBAe/BwC,gCAAO,CAACvC,YAfuB,IAeRnB,qCAAY,CAACmB,YAfL,wBAgB/BuC,gCAAO,CAACtC,IAhBuB,IAgBRpB,qCAAY,CAACoB,IAhBL,wBAiB/BsC,gCAAO,CAACrC,OAjBuB,IAiBRrB,qCAAY,CAACqB,OAjBL,wBAkB/BqC,gCAAO,CAACpC,MAlBuB,IAkBRtB,qCAAY,CAACsB,MAlBL,wBAmB/BoC,gCAAO,CAACnC,MAnBuB,IAmBRvB,qCAAY,CAACuB,MAnBL,wBAoB/BmC,gCAAO,CAAClC,IApBuB,IAoBRxB,qCAAY,CAACwB,IApBL,wBAA9B;AAuBA,IAAMwjF,gBAAgB,8CACvBhlF,qCAAY,CAACC,MADU,IACOyD,gCAAO,CAACzD,MADf,oBAEvBD,qCAAY,CAACE,QAFU,IAEOwD,gCAAO,CAACzD,MAFf,oBAGvBD,qCAAY,CAACG,GAHU,IAGOuD,gCAAO,CAACzD,MAHf,oBAIvBD,qCAAY,CAACM,MAJU,IAIOoD,gCAAO,CAACzD,MAJf,oBAKvBD,qCAAY,CAACO,WALU,IAKOmD,gCAAO,CAACzD,MALf,oBAMvBD,qCAAY,CAACK,IANU,IAMOqD,gCAAO,CAACrD,IANf,oBAOvBL,qCAAY,CAACI,MAPU,IAOOsD,gCAAO,CAACtD,MAPf,oBAQvBJ,qCAAY,CAACQ,KARU,IAQOkD,gCAAO,CAAClD,KARf,oBASvBR,qCAAY,CAACS,IATU,IASOiD,gCAAO,CAACjD,IATf,oBAUvBT,qCAAY,CAACU,KAVU,IAUOgD,gCAAO,CAAChD,KAVf,oBAWvBV,qCAAY,CAACY,UAXU,IAWO8C,gCAAO,CAAC9C,UAXf,oBAYvBZ,qCAAY,CAACa,OAZU,IAYO6C,gCAAO,CAAC7C,OAZf,oBAavBb,qCAAY,CAACe,GAbU,IAaO2C,gCAAO,CAAC3C,GAbf,oBAcvBf,qCAAY,CAACc,MAdU,IAcO4C,gCAAO,CAAC5C,MAdf,oBAevBd,qCAAY,CAACiB,GAfU,IAeOyC,gCAAO,CAACzC,GAff,oBAgBvBjB,qCAAY,CAACgB,MAhBU,IAgBO0C,gCAAO,CAAC1C,MAhBf,oBAiBvBhB,qCAAY,CAACkB,IAjBU,IAiBOwC,gCAAO,CAACxC,IAjBf,oBAkBvBlB,qCAAY,CAACmB,YAlBU,IAkBOuC,gCAAO,CAACvC,YAlBf,oBAmBvBnB,qCAAY,CAACoB,IAnBU,IAmBOsC,gCAAO,CAACtC,IAnBf,oBAoBvBpB,qCAAY,CAACqB,OApBU,IAoBOqC,gCAAO,CAACrC,OApBf,oBAqBvBrB,qCAAY,CAACsB,MArBU,IAqBOoC,gCAAO,CAACpC,MArBf,oBAsBvBtB,qCAAY,CAACuB,MAtBU,IAsBOmC,gCAAO,CAACnC,MAtBf,oBAuBvBvB,qCAAY,CAACwB,IAvBU,IAuBOkC,gCAAO,CAAClC,IAvBf,oBAAtB;AA0BA,IAAMyjF,qBAAqB,GAAG;AACjCtlF,cAAY,EAAK,GADgB;AAEjCE,SAAO,EAAU,EAFgB;AAGjCqlF,iBAAe,EAAE;AAHgB,CAA9B;AAMA,IAAMC,YAAY,sCAEnBhjF,oCAAW,CAACC,IAFO,IAEC;AAClBgjF,cAAY,EAAM,EADA;AAElBC,eAAa,EAAK,EAFA;AAGlBC,UAAQ,EAAU,EAHA;AAIlBC,UAAQ,EAAU,GAJA;AAKlBC,WAAS,EAAS,EALA;AAMlBC,WAAS,EAAS,EANA;AAOlBC,kBAAgB,EAAE,GAPA;AAQlBC,cAAY,EAAM,IARA;AASlBC,cAAY,EAAM,KATA;AAUlBC,gBAAc,EAAI;AAVA,CAFD,gBAenB1jF,oCAAW,CAACE,KAfO,IAeE;AACnB+iF,cAAY,EAAM,GADC;AAEnBC,eAAa,EAAK,EAFC;AAGnBC,UAAQ,EAAU,GAHC;AAInBC,UAAQ,EAAU,GAJC;AAKnBC,WAAS,EAAS,EALC;AAMnBC,WAAS,EAAS,EANC;AAOnBC,kBAAgB,EAAE,GAPC;AAQnBC,cAAY,EAAM,IARC;AASnBC,cAAY,EAAM,IATC;AAUnBC,gBAAc,EAAI;AAVC,CAfF,gBA4BnB1jF,oCAAW,CAACG,MA5BO,IA4BG;AACpB8iF,cAAY,EAAO,GADC;AAEpBC,eAAa,EAAM,EAFC;AAGpBC,UAAQ,EAAW,GAHC;AAIpBC,UAAQ,EAAW,GAJC;AAKpBC,WAAS,EAAU,EALC;AAMpBC,WAAS,EAAU,EANC;AAOpBC,kBAAgB,EAAG,CAPC;AAQpBC,cAAY,EAAO,IARC;AASpBC,cAAY,EAAO,IATC;AAUpBC,gBAAc,EAAK;AAVC,CA5BH,gBAyCnB1jF,oCAAW,CAACI,KAzCO,IAyCE;AACnB6iF,cAAY,EAAO,GADA;AAEnBC,eAAa,EAAM,EAFA;AAGnBC,UAAQ,EAAW,GAHA;AAInBC,UAAQ,EAAW,GAJA;AAKnBC,WAAS,EAAU,EALA;AAMnBC,WAAS,EAAU,EANA;AAOnBC,kBAAgB,EAAG,CAPA;AAQnBC,cAAY,EAAO,IARA;AASnBC,cAAY,EAAO,IATA;AAUnBC,gBAAc,EAAK;AAVA,CAzCF,gBAsDnB1jF,oCAAW,CAACK,IAtDO,IAsDC;AAClB4iF,cAAY,EAAM,GADA;AAElBC,eAAa,EAAK,EAFA;AAGlBC,UAAQ,EAAU,GAHA;AAIlBC,UAAQ,EAAU,GAJA;AAKlBC,WAAS,EAAS,EALA;AAMlBC,WAAS,EAAS,EANA;AAOlBC,kBAAgB,EAAE,IAPA;AAQlBC,cAAY,EAAM,IARA;AASlBC,cAAY,EAAM,IATA;AAUlBC,gBAAc,EAAI;AAVA,CAtDD,gBAAlB;AAoEA,SAASC,cAAT,CAAwBpB,KAAxB,EAAkD;AACrD,SAAOA,KAAK,GAAGM,gBAAgB,CAACN,KAAD,CAAnB,GAA6BhhF,gCAAO,CAACzD,MAAjD;AACH;AAEM,SAAS8lF,qBAAT,CAA+B9E,OAA/B,EAAgF;AACnF,SAAO8D,wBAAwB,CAAC9D,OAAD,CAA/B;AACH;;AAED,SAASP,gBAAT,CAA8Br/C,IAA9B,EAA6Cs/C,QAA7C,EAAgE1jE,GAAhE,EAA8EsC,GAA9E,EAA4F;AACxF,MAAMqhE,cAAc,GAAGv/C,IAAI,CAACs/C,QAAD,CAA3B;;AAEA,MAAIC,cAAc,IAAIA,cAAc,CAACviE,cAAf,CAA8BpB,GAA9B,CAAtB,EAA0D;AACtD,WAAO2jE,cAAc,CAAC3jE,GAAD,CAArB;AACH;;AAED,MAAIokB,IAAI,CAACn8B,gCAAD,CAAJ,IAAiBm8B,IAAI,CAACn8B,gCAAD,CAAJ,CAAcmZ,cAAd,CAA6BpB,GAA7B,CAArB,EAAwD;AACpD,WAAOokB,IAAI,CAACn8B,gCAAD,CAAJ,CAAc+X,GAAd,CAAP;AACH;;AAED,MAAIwG,SAAS,CAAC/J,MAAV,IAAoB,CAAxB,EAA2B;AACvB;AACA,WAAO6F,GAAP;AACH;;AAED,QAAM,IAAInE,KAAJ,yBAAiCulE,QAAjC,SAA+C1jE,GAA/C,CAAN;AACH;;AAEM,SAAS+oE,eAAT,CAAoCtB,KAApC,EAAoDznE,GAApD,EAAkEsC,GAAlE,EAAgF;AACnF,SAAOmhE,gBAAS,CAAC8B,aAAD,EAAgBkC,KAAhB,EAAuBznE,GAAvB,EAA4BsC,GAA5B,CAAhB;AACH,C;;ACv8BD;AACA;AACA;AAEA;AAEA;;AAEA,SAAS0mE,WAAT,CAAqB1xD,MAArB,EAAmD;AAAA,sBACrBA,MAAM,CAAC9U,KAAP,CAAa,GAAb,CADqB;AAAA,MACvCgV,IADuC;AAAA,MACjCD,OADiC;;AAE/C,SAAO;AAAEA,WAAO,EAAPA,OAAF;AAAWC,QAAI,EAAJA;AAAX,GAAP;AACH;;AAEM,SAASyxD,mBAAT,OAAkH;AAAA,MAAnFxB,KAAmF,QAAnFA,KAAmF;AAAA,MAA5ExD,MAA4E,QAA5EA,MAA4E;AAAA,MAApE5uD,GAAoE,QAApEA,GAAoE;AAErH,MAAMivD,OAAO,GAAIL,MAAM,KAAKj+E,sCAAa,CAACC,UAA1B,GACV8iF,eAAe,CAACtB,KAAD,EAAQ,wBAAR,CADL,GAEVsB,eAAe,CAACtB,KAAD,EAAQ,sBAAR,CAFrB;;AAIA,MAAI,CAACnD,OAAL,EAAc;AACV,WAAO,CAAP;AACH;;AAED,MAAM4E,SAAS,GAAIjF,MAAM,KAAKj+E,sCAAa,CAACC,UAA1B,GACZ8iF,eAAe,CAACtB,KAAD,EAAQ,sBAAR,CADH,GAEZsB,eAAe,CAACtB,KAAD,EAAQ,oBAAR,CAFrB;AAIA,SAAOpyD,GAAG,GACJ5T,IAAI,CAACyyB,GAAL,CAASg1C,SAAT,EAAoB7zD,GAApB,CADI,GAEJ6zD,SAFN;AAGH;;AAED,SAASC,aAAT,QAA8E;AAAA,MAArDC,OAAqD,SAArDA,OAAqD;AAAA,MAA5CC,QAA4C,SAA5CA,QAA4C;AAAA,MAAlCC,YAAkC,SAAlCA,YAAkC;AAAA,MAApBrF,MAAoB,SAApBA,MAAoB;AAC1E,SAAOl7D,OAAO,CAACqgE,OAAO,IAAIC,QAAX,IAAuB,CAACC,YAAxB,IAAwCrF,MAAM,KAAKj+E,sCAAa,CAACC,UAAlE,CAAd;AACH;;AAuBM,IAAMk/D,oBAAc,GAAG1+C,+BAAO,CAAC,UAAC8F,KAAD,EAAiBg9D,IAAjB,EAA6E;AAAA,MAA5DA,IAA4D;AAA5DA,QAA4D,GAAzB,EAAyB;AAAA;;AAAA,MAG3GnyD,GAH2G,GAS3G7K,KAT2G,CAG3G6K,GAH2G;AAAA,MAI3GE,MAJ2G,GAS3G/K,KAT2G,CAI3G+K,MAJ2G;AAAA,qBAS3G/K,KAT2G,CAK3G9E,KAL2G;AAAA,MAK3GA,KAL2G,6BAKjG,EALiG;AAAA,MAM3Gu8D,OAN2G,GAS3Gz3D,KAT2G,CAM3Gy3D,OAN2G;AAAA,MAO3GpK,MAP2G,GAS3GrtD,KAT2G,CAO3GqtD,MAP2G;AAAA,MAQ3G4P,qBAR2G,GAS3Gj9D,KAT2G,CAQ3Gi9D,qBAR2G;AAW/GlyD,QAAM,GAAGA,MAAM,GAAG0xD,WAAW,CAAC1xD,MAAD,CAAd,GAA0BiyD,IAAI,CAACjyD,MAAL,IAAeyxD,eAAe,CAAC,SAAD,EAAY,eAAZ,CAAvE,CAX+G,CAa/G;AACA;;AACA/E,SAAO,GAAGA,OAAO,IAAI,EAArB;AACAA,SAAO,CAACM,OAAR,GAAkBN,OAAO,CAACM,OAAR,IAAmB,EAArC;AACAN,SAAO,CAACI,UAAR,GAAqBJ,OAAO,CAACI,UAAR,IAAsB,EAA3C;AACAJ,SAAO,CAACO,UAAR,GAAqBP,OAAO,CAACO,UAAR,IAAsB,EAA3C;AAEA,MAAMkD,KAAK,GAAIhgE,KAAK,CAACtlB,6CAAoB,CAACC,KAAtB,CAAL,IAAqC2mF,eAAe,CAAC,SAAD,EAAathE,KAAK,CAACw8D,MAAN,KAAiBj+E,sCAAa,CAACE,QAAhC,GAA4C,sBAA5C,GAAqE,cAAjF,CAAnE;AACA,MAAM+9E,MAAM,GAAGx8D,KAAK,CAACtlB,6CAAoB,CAACK,MAAtB,CAAL,IAAsCumF,eAAe,CAACtB,KAAD,EAAQ,eAAR,CAApE;AArB+G,8BAiC3GhgE,KAjC2G,CAwBzGtlB,6CAAoB,CAACE,IAxBoF;AAAA,MAwBpEonF,IAxBoE,sCAwBrDV,eAAe,CAACtB,KAAD,EAASxD,MAAM,KAAKj+E,sCAAa,CAACE,QAA1B,GAAsC,qBAAtC,GAA8D,aAAtE,CAxBsC;AAAA,+BAiC3GuhB,KAjC2G,CAyBzGtlB,6CAAoB,CAACI,KAzBoF;AAAA,MAyBpEmnF,KAzBoE,uCAyBrDX,eAAe,CAACtB,KAAD,EAAQ,cAAR,CAzBsC;AAAA,+BAiC3GhgE,KAjC2G,CA0BzGtlB,6CAAoB,CAACG,KA1BoF;AAAA,MA0BpEqnF,KA1BoE,uCA0BrDZ,eAAe,CAACtB,KAAD,EAAQ,cAAR,CA1BsC;AAAA,+BAiC3GhgE,KAjC2G,CA2BzGtlB,6CAAoB,CAACQ,QA3BoF;AAAA,MA2BpE0mF,QA3BoE,uCA2BrDN,eAAe,CAACtB,KAAD,EAASxD,MAAM,KAAKj+E,sCAAa,CAACE,QAA1B,GAAsC,yBAAtC,GAAkE,iBAA1E,CA3BsC;AAAA,+BAiC3GuhB,KAjC2G,CA4BzGtlB,6CAAoB,CAACO,YA5BoF;AAAA,MA4BpE4mF,YA5BoE,uCA4BrDP,eAAe,CAACtB,KAAD,EAAQ,qBAAR,CA5BsC;AAAA,+BAiC3GhgE,KAjC2G,CA6BzGtlB,6CAAoB,CAACS,OA7BoF;AAAA,MA6BpEwmF,OA7BoE,uCA6BrDL,eAAe,CAACtB,KAAD,EAAQ,gBAAR,CA7BsC;AAAA,MA8BpEpyD,GA9BoE,GAiC3G5N,KAjC2G,CA8BzGtlB,6CAAoB,CAACM,UA9BoF;AAAA,MA+BpE4qB,MA/BoE,GAiC3G5F,KAjC2G,CA+BzGtlB,6CAAoB,CAACU,MA/BoF;AAAA,MAgC9D8kF,iBAhC8D,GAiC3GlgE,KAjC2G,CAgCzGtlB,6CAAoB,CAACW,iBAhCoF,GAmC/G;;AACAuyB,KAAG,GAAG4zD,mBAAmB,CAAC;AAAExB,SAAK,EAALA,KAAF;AAASxD,UAAM,EAANA,MAAT;AAAiB5uD,OAAG,EAAHA;AAAjB,GAAD,CAAzB;AAEA,MAAMovD,QAAQ,GAAGoE,cAAc,CAACpB,KAAD,CAA/B;AACA,MAAInX,OAAO,GAAIuU,wBAAwB,CAAC;AAAEb,WAAO,EAAPA,OAAF;AAAWS,YAAQ,EAARA,QAAX;AAAqBntD,UAAM,EAANA,MAArB;AAA6BF,OAAG,EAAHA,GAA7B;AAAkC6sD,UAAM,EAANA,MAAlC;AAA0CrK,UAAM,EAANA;AAA1C,GAAD,CAAvC,CAvC+G,CAwC/G;;AACAtJ,SAAO,GAAG/8B,8BAAM,CAAC+8B,OAAO,CAACnuD,KAAR,CAAc,CAAd,EAAiBkT,GAAjB,CAAD,EAAwBgtD,aAAxB,CAAhB,CAzC+G,CA0C/G;;AACA,MAAMuH,QAAQ,GAAGtZ,OAAO,CAAC7zD,MAAR,GAAiB,CAAlC;;AAEA,MAAImtE,QAAJ,EAAc;AACVP,YAAQ,GAAG,IAAX;AACH;;AAEDD,SAAO,GAAGD,aAAa,CAAC;AAAEC,WAAO,EAAPA,OAAF;AAAWC,YAAQ,EAARA,QAAX;AAAqBC,gBAAY,EAAZA,YAArB;AAAmCrF,UAAM,EAANA;AAAnC,GAAD,CAAvB;AAEA,MAAM4F,KAAK,GAAG3E,sBAAsB,CAAC;AAAElB,WAAO,EAAPA,OAAF;AAAW1sD,UAAM,EAANA;AAAX,GAAD,CAApC;AAEA,SAAO;AAAEmyD,QAAI,EAAJA,IAAF;AAAQhC,SAAK,EAALA,KAAR;AAAenwD,UAAM,EAANA,MAAf;AAAuBoyD,SAAK,EAALA,KAAvB;AAA8BC,SAAK,EAALA,KAA9B;AAAqCN,YAAQ,EAARA,QAArC;AAA+CC,gBAAY,EAAZA,YAA/C;AACHF,WAAO,EAAPA,OADG;AACMpF,WAAO,EAAPA,OADN;AACeC,UAAM,EAANA,MADf;AACuB3T,WAAO,EAAPA,OADvB;AACgCj7C,OAAG,EAAHA,GADhC;AACqCu0D,YAAQ,EAARA,QADrC;AAC+CxyD,OAAG,EAAHA,GAD/C;AACoD/J,UAAM,EAANA,MADpD;AAC4Dw8D,SAAK,EAALA,KAD5D;AACmElC,qBAAiB,EAAjBA,iBADnE;AACsF6B,yBAAqB,EAArBA;AADtF,GAAP;AAEH,CAvDoC,CAA9B,C;;ACzDP;AAEA;AAEO,SAASM,oBAAT,CAA8BxyD,MAA9B,EAA+C;AAElD,MAAI,CAACA,MAAL,EAAa;AACT,UAAM,IAAInZ,KAAJ,mCAAN;AACH;;AAED,MAAI,CAACmZ,MAAM,CAACvS,KAAP,CAAa,4BAAb,CAAL,EAAiD;AAC7C,UAAM,IAAI5G,KAAJ,6CAAqDmZ,MAArD,CAAN;AACH;;AARiD,sBAUxBA,MAAM,CAAC9U,KAAP,CAAa,GAAb,CAVwB;AAAA,MAU1CgV,IAV0C;AAAA,MAUpCD,OAVoC;;AAYlD,MAAI,CAACnc,+BAAM,CAACmc,OAAD,CAAP,IAAoBnc,+BAAM,CAACmc,OAAD,CAAN,CAAgBnb,OAAhB,CAAwBob,IAAxB,MAAkC,CAAC,CAA3D,EAA8D;AAC1D,UAAM,IAAIrZ,KAAJ,qCAAN;AACH;AACJ;AAEM,SAAS4rE,4BAAT,CAAsCtiE,KAAtC,EAA2D6P,MAA3D,EAAsF;AAAA,MAAhD7P,KAAgD;AAAhDA,SAAgD,GAA/B,EAA+B;AAAA;;AAAA,MAA3B6P,MAA2B;AAA3BA,UAA2B,GAAT,OAAS;AAAA;;AAEzF,MAAMC,OAAO,GAAGD,MAAM,CAAC9U,KAAP,CAAa,GAAb,EAAkB,CAAlB,CAAhB;AAEA,MAAMwnE,2BAA2B,GAAG9uE,sDAA6B,CAACkB,OAA9B,CAAsCmb,OAAtC,MAAmD,CAAC,CAAxF;;AAEA,MAAI,CAACyyD,2BAAD,IAAgCviE,KAAK,CAACggE,KAAN,KAAgB1kF,qCAAY,CAACO,WAAjE,EAA8E;AAC1E,UAAM,IAAI6a,KAAJ,8BAAsCsJ,KAAK,CAACggE,KAA5C,sBAAoElwD,OAApE,CAAN;AACH;;AAED,MAAI,CAACyyD,2BAAD,IAAgCviE,KAAK,CAACtlB,6CAAoB,CAACW,iBAAtB,CAAzC,EAAmF;AAC/E,UAAM,IAAIqb,KAAJ,YAAoBhc,6CAAoB,CAACW,iBAAzC,iCAAwFy0B,OAAxF,CAAN;AACH;;AAED,MAAIyyD,2BAA2B,IAAIviE,KAAK,CAACtlB,6CAAoB,CAACW,iBAAtB,CAApC,IAAgF2kB,KAAK,CAACggE,KAAN,KAAgB1kF,qCAAY,CAACO,WAAjH,EAA8H;AAC1H,UAAM,IAAI6a,KAAJ,YAAoBhc,6CAAoB,CAACW,iBAAzC,qCAA4F2kB,KAAK,CAACggE,KAAlG,CAAN;AACH;;AAED,MAAIuC,2BAA2B,IAAIviE,KAAK,CAACggE,KAAN,KAAgB1kF,qCAAY,CAACO,WAA5D,IAA2EmkB,KAAK,CAACtlB,6CAAoB,CAACW,iBAAtB,CAAhF,IACG,OAAO2kB,KAAK,CAACtlB,6CAAoB,CAACW,iBAAtB,CAAZ,KAAyD,QADhE,EAC0E;AACtE,UAAM,IAAIqb,KAAJ,YAAoBhc,6CAAoB,CAACW,iBAAzC,iCAAN;AACH;;AAED,MAAIknF,2BAA2B,IAAIviE,KAAK,CAACggE,KAAN,KAAgB1kF,qCAAY,CAACO,WAA5D,IAA2EmkB,KAAK,CAACtlB,6CAAoB,CAACW,iBAAtB,CAAhF,IACGqY,mDAA0B,CAACoc,OAAD,CAA1B,CAAoCnb,OAApC,CAA4CqL,KAAK,CAACtlB,6CAAoB,CAACW,iBAAtB,CAAjD,MAA+F,CAAC,CADvG,EAC0G;AACtG,UAAM,IAAIqb,KAAJ,YAAoBhc,6CAAoB,CAACW,iBAAzC,UAAiE2kB,KAAK,CAACtlB,6CAAoB,CAACW,iBAAtB,CAAtE,+CAA0J2kB,KAAK,CAACggE,KAAhK,CAAN;AACH;AAEJ;AAEM,SAASwC,mBAAT,CAA6BxiE,KAA7B,EAAkD8E,KAAlD,EAAkE;AAAA,MAArC9E,KAAqC;AAArCA,SAAqC,GAApB,EAAoB;AAAA;;AAErE,MAAI,CAACA,KAAL,EAAY;AACR,UAAM,IAAItJ,KAAJ,kCAAN;AACH;;AAED,MAAMspE,KAAK,GAAGhgE,KAAK,CAACtlB,6CAAoB,CAACC,KAAtB,CAAL,IAAqC2mF,eAAe,CAAC,SAAD,EAAathE,KAAK,CAACtlB,6CAAoB,CAACK,MAAtB,CAAL,KAAuCwD,sCAAa,CAACE,QAAtD,GAAkE,sBAAlE,GAA2F,cAAvG,CAAlE;;AAEA,MAAI,CAACq/E,aAAa,CAACkC,KAAD,CAAlB,EAA2B;AACvB,UAAM,IAAItpE,KAAJ,4BAAoCspE,KAApC,oBAA0DppE,MAAM,CAACyB,IAAP,CAAYylE,aAAa,CAACkC,KAAD,CAAzB,EAAkCnjE,IAAlC,CAAuC,IAAvC,CAA1D,CAAN;AACH;;AAVoE,eAsBjEmD,KAtBiE;AAAA,MAa1BiiE,KAb0B,UAa/DvnF,6CAAoB,CAACI,KAb0C;AAAA,MAc1BonF,KAd0B,UAc/DxnF,6CAAoB,CAACG,KAd0C;AAAA,MAe1BmnF,IAf0B,UAe/DtnF,6CAAoB,CAACE,IAf0C;AAAA,MAgB1BgnF,QAhB0B,UAgB/DlnF,6CAAoB,CAACQ,QAhB0C;AAAA,MAiB1B2mF,YAjB0B,UAiB/DnnF,6CAAoB,CAACO,YAjB0C;AAAA,MAkB1B0mF,OAlB0B,UAkB/DjnF,6CAAoB,CAACS,OAlB0C;AAAA,MAmB1BqhF,MAnB0B,UAmB/D9hF,6CAAoB,CAACK,MAnB0C;AAAA,MAoB1B0nF,UApB0B,UAoB/D/nF,6CAAoB,CAACM,UApB0C;AAAA,MAqB1B4qB,MArB0B,UAqB/DlrB,6CAAoB,CAACU,MArB0C;;AAwBrE,MAAI6mF,KAAK,IAAIX,eAAe,CAACtB,KAAD,EAAQ,QAAR,CAAf,CAAiCrrE,OAAjC,CAAyCstE,KAAzC,MAAoD,CAAC,CAAlE,EAAqE;AACjE,UAAM,IAAIvrE,KAAJ,uBAA+Bhc,6CAAoB,CAACI,KAApD,aAAmEklF,KAAnE,iBAAsFiC,KAAtF,mBAA2GX,eAAe,CAACtB,KAAD,EAAQ,QAAR,CAAf,CAAiCnjE,IAAjC,CAAsC,IAAtC,CAA3G,CAAN;AACH;;AAED,MAAIqlE,KAAK,IAAIZ,eAAe,CAACtB,KAAD,EAAQ,QAAR,CAAf,CAAiCrrE,OAAjC,CAAyCutE,KAAzC,MAAoD,CAAC,CAAlE,EAAqE;AACjE,UAAM,IAAIxrE,KAAJ,uBAA+Bhc,6CAAoB,CAACG,KAApD,aAAmEmlF,KAAnE,iBAAsFkC,KAAtF,mBAA2GZ,eAAe,CAACtB,KAAD,EAAQ,QAAR,CAAf,CAAiCnjE,IAAjC,CAAsC,IAAtC,CAA3G,CAAN;AACH;;AAED,MAAImlE,IAAI,IAAIV,eAAe,CAACtB,KAAD,EAAQ,OAAR,CAAf,CAAgCrrE,OAAhC,CAAwCqtE,IAAxC,MAAkD,CAAC,CAA/D,EAAkE;AAC9D,UAAM,IAAItrE,KAAJ,uBAA+Bhc,6CAAoB,CAACE,IAApD,aAAkEolF,KAAlE,iBAAqFgC,IAArF,mBAAyGV,eAAe,CAACtB,KAAD,EAAQ,OAAR,CAAf,CAAgCnjE,IAAhC,CAAqC,IAArC,CAAzG,CAAN;AACH;;AAED,MAAI+kE,QAAQ,KAAK,KAAjB,EAAwB;AACpB,UAAM,IAAIlrE,KAAJ,YAAoBhc,6CAAoB,CAACQ,QAAzC,2BAAN;AACH;;AAED,MAAI2mF,YAAY,IAAI,CAACP,eAAe,CAACtB,KAAD,EAAQ,mBAAR,CAApC,EAAkE;AAC9D,UAAM,IAAItpE,KAAJ,YAAoBhc,6CAAoB,CAACO,YAAzC,iCAAmF+kF,KAAnF,aAAN;AACH;;AAED,MAAIxD,MAAM,IAAI8E,eAAe,CAACtB,KAAD,EAAQ,SAAR,CAAf,CAAkCrrE,OAAlC,CAA0C6nE,MAA1C,MAAsD,CAAC,CAArE,EAAwE;AACpE,UAAM,IAAI9lE,KAAJ,uBAA+Bhc,6CAAoB,CAACK,MAApD,aAAoEilF,KAApE,iBAAuFxD,MAAvF,mBAA6G8E,eAAe,CAACtB,KAAD,EAAQ,SAAR,CAAf,CAAkCnjE,IAAlC,CAAuC,IAAvC,CAA7G,CAAN;AACH;;AAED,MAAI4lE,UAAU,KAAKnrE,SAAnB,EAA8B;AAC1B,QAAI,OAAOmrE,UAAP,KAAsB,QAA1B,EAAoC;AAChC,YAAM,IAAI3qE,SAAJ,qBAAiCpd,6CAAoB,CAACM,UAAtD,8BAA2FynF,UAA3F,CAAN;AACH;;AAED,QAAIA,UAAU,GAAG,CAAjB,EAAoB;AAChB,YAAM,IAAI/rE,KAAJ,qBAA6Bhc,6CAAoB,CAACM,UAAlD,kCAA2FynF,UAA3F,CAAN;AACH;;AAED,QAAMC,UAAU,GAAIlG,MAAM,KAAKj+E,sCAAa,CAACE,QAA1B,GACb6iF,eAAe,CAACtB,KAAD,EAAQ,oBAAR,CADF,GAEbsB,eAAe,CAACtB,KAAD,EAAQ,sBAAR,CAFrB;;AAIA,QAAIyC,UAAU,GAAGC,UAAjB,EAA6B;AACzB,YAAM,IAAIhsE,KAAJ,qBAA6Bhc,6CAAoB,CAACM,UAAlD,6BAAsF0nF,UAAtF,cAA2GD,UAA3G,CAAN;AACH;AACJ;;AAED,MAAI78D,MAAM,KAAKtO,SAAf,EAA0B;AACtB,QAAI,OAAOsO,MAAP,KAAkB,QAAtB,EAAgC;AAC5B,YAAM,IAAI9N,SAAJ,qBAAiCpd,6CAAoB,CAACU,MAAtD,8BAAuFqnF,UAAvF,CAAN;AACH;;AAED,QAAME,UAAU,GAAGX,IAAI,IAAIV,eAAe,CAACtB,KAAD,EAAShgE,KAAK,CAACw8D,MAAN,KAAiBj+E,sCAAa,CAACE,QAAhC,GAA4C,qBAA5C,GAAoE,aAA5E,CAA1C;;AALsB,eAOYujF,IAAI,KAAKvkF,oCAAW,CAACM,UAAtB,GAAoC;AACjE+iF,eAAS,EAAEL,YAAY,CAAChjF,oCAAW,CAACE,KAAb,CAAZ,CAAgCmjF,SADsB;AAEjEC,eAAS,EAAEN,YAAY,CAAChjF,oCAAW,CAACK,IAAb,CAAZ,CAA+BijF;AAFuB,KAApC,GAG7BN,YAAY,CAACkC,UAAD,CAVM;AAAA,QAOd7B,SAPc,QAOdA,SAPc;AAAA,QAOHC,SAPG,QAOHA,SAPG;;AAYtB,QAAIn7D,MAAM,GAAGk7D,SAAT,IAAsBl7D,MAAM,GAAGm7D,SAAnC,EAA8C;AAC1C,YAAM,IAAIrqE,KAAJ,qBAA6Bhc,6CAAoB,CAACU,MAAlD,uBAA4E0lF,SAA5E,eAAiGC,SAAjG,iBAAwHn7D,MAAxH,QAAN;AACH;AACJ;;AAED,MAAI,CAAC07D,eAAe,CAACtB,KAAD,EAAQ,cAAR,CAApB,EAA6C;AACzC,UAAM,IAAItpE,KAAJ,CAAcspE,KAAd,8CAAN;AACH;;AAED,MAAIxD,MAAM,KAAKj+E,sCAAa,CAACE,QAA7B,EAAuC;AAEnC,QAAIujF,IAAI,IAAI,CAAEvkF,oCAAW,CAACG,MAAd,EAAsBH,oCAAW,CAACI,KAAlC,EAAyCJ,oCAAW,CAACM,UAArD,EAAkE4W,OAAlE,CAA0EqtE,IAA1E,MAAoF,CAAC,CAAjG,EAAoG;AAChG,YAAM,IAAItrE,KAAJ,8BAAsCjZ,oCAAW,CAACG,MAAlD,kBAAuEW,sCAAa,CAACE,QAArF,aAAN;AACH;;AAED,QAAI,CAAC6iF,eAAe,CAACtB,KAAD,EAAQ,sBAAR,CAApB,EAAqD;AACjD,YAAM,IAAItpE,KAAJ,YAAoBhc,6CAAoB,CAACC,KAAzC,mCAA8E4D,sCAAa,CAACE,QAA5F,sBAAuHuhF,KAAvH,CAAN;AACH;;AAED,QAAI6B,YAAJ,EAAkB;AACd,YAAM,IAAInrE,KAAJ,YAAoBhc,6CAAoB,CAACO,YAAzC,yBAA2EsD,sCAAa,CAACE,QAAzF,sBAAoHojF,YAApH,CAAN;AACH;;AAED,QAAIF,OAAJ,EAAa;AACT,YAAM,IAAIjrE,KAAJ,YAAoBhc,6CAAoB,CAACS,OAAzC,4BAAyEoD,sCAAa,CAACE,QAAvF,sBAAkHkjF,OAAlH,CAAN;AACH;AACJ;;AAEDW,8BAA4B,CAACtiE,KAAD,EAAQ8E,KAAK,CAAC+K,MAAd,CAA5B;AACH;AAEM,SAAS+yD,mBAAT,CAA6B99D,KAA7B,EAA6C;AAEhD,MAAI,CAACA,KAAL,EAAY;AACR,UAAM,IAAIpO,KAAJ,kBAAN;AACH;;AAJ+C,MAMxCmZ,MANwC,GAMtB/K,KANsB,CAMxC+K,MANwC;AAAA,MAMhC7P,KANgC,GAMtB8E,KANsB,CAMhC9E,KANgC;AAQhDqiE,sBAAoB,CAACxyD,MAAD,CAApB;AACA2yD,qBAAmB,CAACxiE,KAAD,EAAQ8E,KAAR,CAAnB;AACH,C;;AC1KM,IAAM68C,WAAK,GAAG;AACjBkhB,cAAY,EAAE,qBADG;AAGjBC,WAAS,EAAE,yBAHM;AAIjBzgF,QAAM,EAAK,eAJM;AAMjB/G,cAAY,EAAE,+BANG;AAQjBX,OAAK,EAAO,qBARK;AASjBG,OAAK,EAAO,qBATK;AAUjB22E,YAAU,EAAE,0BAVK;AAWjB52E,OAAK,EAAO,qBAXK;AAYjBK,UAAQ,EAAI,wBAZK;AAajBH,QAAM,EAAM,sBAbK;AAcjBqqC,QAAM,EAAM,sBAdK;AAejBtkC,KAAG,EAAS,mBAfK;AAiBjB3F,SAAO,EAAQ,uBAjBE;AAkBjB4nF,eAAa,EAAE,6BAlBE;AAmBjB9nF,cAAY,EAAG,4BAnBE;AAqBjB+nF,MAAI,EAAE,oBArBW;AAsBjBC,MAAI,EAAE,oBAtBW;AAuBjBtnF,MAAI,EAAE,oBAvBW;AAyBjBunF,WAAS,EAAE,kBAzBM;AA0BjBv5D,QAAM,EAAK,QA1BM;AA2BjBw5D,WAAS,EAAE,WA3BM;AA6BjBC,sBAAoB,EAAE;AA7BL,CAAd,C;;ACAP;AAEO,IAAMC,SAAS,+gBAyBd1hB,WAAK,CAACh4C,MAzBQ,0EAAf,C;;ACFP;AAEA;AAEO,IAAM25D,WAAW,iBAEhB3hB,WAAK,CAACmhB,SAFU,2cAmBhBnhB,WAAK,CAACt/D,MAnBU,cAmBOs/D,WAAK,CAAChmE,IAnBb,8TAgChBgmE,WAAK,CAACt/D,MAhCU,SAgCEs/D,WAAK,CAAC7mE,KAhCR,SAgCmBiC,qCAAY,CAACO,WAhChC,iDAoChBqkE,WAAK,CAACt/D,MApCU,sDAwChBs/D,WAAK,CAACmhB,SAxCU,SAwCKnhB,WAAK,CAAC7gE,GAxCX,SAwCoBA,4BAAG,CAACK,IAxCxB,UAwCmCwgE,WAAK,CAACqhB,IAxCzC,uMA+ChBrhB,WAAK,CAACt/D,MA/CU,qGAmDhBs/D,WAAK,CAACt/D,MAnDU,SAmDEs/D,WAAK,CAAC7mE,KAnDR,SAmDmBiC,qCAAY,CAACC,IAnDhC,sBAoDhB2kE,WAAK,CAACt/D,MApDU,SAoDEs/D,WAAK,CAAC7mE,KApDR,SAoDmBiC,qCAAY,CAACG,MApDhC,gGAwDhBykE,WAAK,CAAChmE,IAxDU,WAwDEgmE,WAAK,CAAChmE,IAxDR,sDA4DhBgmE,WAAK,CAAChmE,IA5DU,kEAgEhBgmE,WAAK,CAACt/D,MAhEU,iBAgEUs/D,WAAK,CAAChmE,IAhEhB,wDAoEhBgmE,WAAK,CAACkhB,YApEU,UAoESlhB,WAAK,CAACt/D,MApEf,sBAqEhBs/D,WAAK,CAACkhB,YArEU,UAqESlhB,WAAK,CAAChmE,IArEf,2JA2EhBgmE,WAAK,CAACt/D,MA3EU,mGA+EhBs/D,WAAK,CAACt/D,MA/EU,SA+EEs/D,WAAK,CAAC7mE,KA/ER,SA+EmBiC,qCAAY,CAACO,WA/EhC,mFAoFhBqkE,WAAK,CAACshB,IApFU,uJA4FhBthB,WAAK,CAACqhB,IA5FU,qFAiGhBrhB,WAAK,CAACt/D,MAjGU,UAiGGs/D,WAAK,CAACrmE,YAjGT,gSA2GhBqmE,WAAK,CAACt/D,MA3GU,YA2GKs/D,WAAK,CAACrmE,YA3GX,8GAiHhBqmE,WAAK,CAACt/D,MAjHU,UAiHGs/D,WAAK,CAAChmE,IAjHT,4EAqHKgmE,WAAK,CAACqhB,IArHX,yGA0HKrhB,WAAK,CAACshB,IA1HX,4EA+HhBthB,WAAK,CAACxmE,OA/HU,8JAuIhBwmE,WAAK,CAACuhB,SAvIU,6MAgJhBvhB,WAAK,CAACt/D,MAhJU,SAgJEs/D,WAAK,CAAC7mE,KAhJR,SAgJmBiC,qCAAY,CAACI,KAhJhC,UAgJ4CwkE,WAAK,CAACuhB,SAhJlD,kEAAjB,C;;ACJP;AAEA;AAEO,IAAMK,WAAW,iBAEhB5hB,WAAK,CAACmhB,SAFU,SAEKnhB,WAAK,CAAC5mE,MAFX,SAEuBwD,sCAAa,CAACE,QAFrC,UAEoDkjE,WAAK,CAACxmE,OAF1D,wCAAjB,C;;ACJP;AAEA;AAEO,IAAMqoF,aAAa,iBAElB7hB,WAAK,CAACt/D,MAFY,SAEAs/D,WAAK,CAACzmE,QAFN,SAEoBkD,wCAAe,CAACE,SAFpC,qGAQlBqjE,WAAK,CAACt/D,MARY,SAQAs/D,WAAK,CAACzmE,QARN,SAQoBkD,wCAAe,CAACE,SARpC,UAQoDqjE,WAAK,CAACshB,IAR1D,wCAAnB,C;;ACJP;AACA;AAEA;AAEO,IAAMQ,UAAU,iBAEf9hB,WAAK,CAACt/D,MAFS,SAEGs/D,WAAK,CAAChnE,KAFT,SAEoBW,qCAAY,CAACK,IAFjC,gEAMfgmE,WAAK,CAACt/D,MANS,SAMGs/D,WAAK,CAAChnE,KANT,SAMoBW,qCAAY,CAACI,MANjC,UAM8CimE,WAAK,CAACqhB,IANpD,6DAUfrhB,WAAK,CAACt/D,MAVS,SAUGs/D,WAAK,CAAC5mE,MAVT,SAUqBwD,sCAAa,CAACC,UAVnC,SAUmDmjE,WAAK,CAACv8B,MAVzD,SAUqE1mC,sCAAa,CAACE,QAVnF,SAUiG+iE,WAAK,CAAChnE,KAVvG,SAUkHW,qCAAY,CAACI,MAV/H,UAU4IimE,WAAK,CAACshB,IAVlJ,SAU4JthB,WAAK,CAACshB,IAVlK,SAU4KpkF,oCAAW,CAACtD,MAVxL,qFAcoBklF,YAAY,CAAChjF,oCAAW,CAACE,KAAb,CAAZ,CAAgCijF,QAdpD,0BAgBXjf,WAAK,CAACt/D,MAhBK,SAgBOs/D,WAAK,CAAChnE,KAhBb,SAgBwBW,qCAAY,CAACI,MAhBrC,UAgBkDimE,WAAK,CAACshB,IAhBxD,SAgBkEthB,WAAK,CAACshB,IAhBxE,SAgBkFpkF,oCAAW,CAACtD,MAhB9F,oGAqBoBklF,YAAY,CAAChjF,oCAAW,CAACE,KAAb,CAAZ,CAAgCijF,QArBpD,0BAuBXjf,WAAK,CAACt/D,MAvBK,SAuBOs/D,WAAK,CAAChnE,KAvBb,SAuBwBW,qCAAY,CAACI,MAvBrC,UAuBkDimE,WAAK,CAACshB,IAvBxD,SAuBkEthB,WAAK,CAACshB,IAvBxE,SAuBkFpkF,oCAAW,CAACtD,MAvB9F,+DAAhB,C;;ACLP;AACA;AACA;AAEA;AAEA,IAAMmoF,qBAAqB,GAAG,GAA9B;AAEO,SAASC,qBAAT,OAAkH;AAAA,MAAjF/9D,MAAiF,QAAjFA,MAAiF;AAAA,6BAAzEg+D,UAAyE;AAAA,MAAzEA,UAAyE,gCAA5D,CAA4D;AAErH,SAAOhtE,MAAM,CAACyB,IAAP,CAAYooE,YAAZ,EAA0BnoE,GAA1B,CAA8B,UAAA0pE,IAAI,EAAI;AAEzC,QAAMhiE,KAAK,GAAGygE,YAAY,CAACuB,IAAD,CAA1B;AACA,QAAM6B,YAAY,GAAGj+D,MAAM,IAAI5F,KAAK,CAAC2gE,aAArC;AACA,QAAMmD,mBAAmB,GAAG9jE,KAAK,CAACghE,gBAAlC;AACA,QAAM+C,YAAY,GAAG/pE,IAAI,CAACwyB,KAAL,CAAWq3C,YAAY,GAAGH,qBAAf,GAAuC,CAAlD,CAArB;AAEA,mEAE0C1jE,KAAK,CAAC4gE,QAFhD,kCAIYjf,WAAK,CAACmhB,SAJlB,2CAK0B9iE,KAAK,CAAC4gE,QALhC,4CAM0B5gE,KAAK,CAAC6gE,QANhC,4CAO0BjzD,2BAAG,CAACH,4BAAI,CAACo2D,YAAD,EAAe,EAAf,CAAL,EAAyB,EAAzB,CAP7B,mDAUYliB,WAAK,CAACt/D,MAVlB,cAUmCs/D,WAAK,CAAChmE,IAVzC,yCAWuBkoF,YAXvB,8CAY2Bj+D,MAAM,IAAI5F,KAAK,CAAC8gE,SAZ3C,+CAa2Bl7D,MAAM,IAAI5F,KAAK,CAAC+gE,SAb3C,oDAgBYpf,WAAK,CAACt/D,MAhBlB,SAgB8Bs/D,WAAK,CAACzmE,QAhBpC,SAgBkDkD,wCAAe,CAACE,SAhBlE,UAgBkFqjE,WAAK,CAACrmE,YAhBxF,8EAkB0BsyB,2BAAG,CAACH,4BAAI,CAACo2D,YAAD,EAAe,EAAf,CAAL,EAAyB,EAAzB,CAlB7B,mDAqBYliB,WAAK,CAACt/D,MArBlB,UAqB+Bs/D,WAAK,CAACrmE,YArBrC,yCAsBuBmyB,4BAAI,CAACo2D,YAAD,EAAe,EAAf,CAAJ,GAAyB,CAtBhD,8CAuB2Bp2D,4BAAI,CAACo2D,YAAD,EAAe,EAAf,CAvB/B,6CAwB2Bp2D,4BAAI,CAACo2D,YAAD,EAAe,EAAf,CAxB/B,mEA2BYliB,WAAK,CAACt/D,MA3BlB,UA2B+Bs/D,WAAK,CAACrmE,YA3BrC,UA2BwDqmE,WAAK,CAACqhB,IA3B9D,4CA4B2Bc,mBA5B3B,mEA+BYniB,WAAK,CAACshB,IA/BlB,SA+B4BthB,WAAK,CAACshB,IA/BlC,SA+B4C3nF,qCAAY,CAACe,GA/BzD,4BAgCYslE,WAAK,CAACshB,IAhClB,SAgC4BthB,WAAK,CAACshB,IAhClC,SAgC4C3nF,qCAAY,CAACgB,MAhCzD,yCAiCuBmxB,4BAAI,CAACo2D,YAAD,EAAe,EAAf,CAAJ,GAAyB,CAjChD,8CAkC2Bp2D,4BAAI,CAACo2D,YAAD,EAAe,EAAf,CAlC/B,6CAmC2Bp2D,4BAAI,CAACo2D,YAAD,EAAe,EAAf,CAnC/B,mDAsCYliB,WAAK,CAACt/D,MAtClB,SAsC8Bs/D,WAAK,CAAC9mE,KAtCpC,SAsC+CoD,qCAAY,CAACC,IAtC5D,+CAuC8B8b,IAAI,CAACgqE,IAAL,CAAUH,YAAY,GAAG,CAAzB,CAvC9B,mDA0CYliB,WAAK,CAACt/D,MA1ClB,SA0C8Bs/D,WAAK,CAAC9mE,KA1CpC,SA0C+CoD,qCAAY,CAACE,IA1C5D,2FA8CYwjE,WAAK,CAACt/D,MA9ClB,SA8C8Bs/D,WAAK,CAAC5mE,MA9CpC,SA8CgDwD,sCAAa,CAACE,QA9C9D,+CA+C8BgvB,4BAAI,CAACo2D,YAAD,EAAetD,qBAAqB,CAACC,eAArC,CA/ClC,mDAkDY7e,WAAK,CAACuhB,SAlDlB,0CAmDyBz1D,4BAAI,CAACo2D,YAAD,EAAe,CAAf,CAnD7B,mDAsDYliB,WAAK,CAACxmE,OAtDlB,0CAuDwB6kB,KAAK,CAACkhE,YAAN,GAAqB,OAArB,GAA+B,MAvDvD,wCAwDuBzzD,4BAAI,CAACo2D,YAAD,EAAetD,qBAAqB,CAACplF,OAArC,CAxD3B,8CAyD4BsyB,4BAAI,CAACo2D,YAAD,EAAetD,qBAAqB,CAACplF,OAArC,CAzDhC,mDA4DYwmE,WAAK,CAAC1mE,YA5DlB,0CA6DwB+kB,KAAK,CAACihE,YAAN,GAAqB,OAArB,GAA+B,MA7DvD,wCA8DuBxzD,4BAAI,CAACo2D,YAAD,EAAetD,qBAAqB,CAACtlF,YAArC,CA9D3B,mDAiEY0mE,WAAK,CAAChmE,IAjElB,8FAqEYgmE,WAAK,CAACt/D,MArElB,UAqE+Bs/D,WAAK,CAAChmE,IArErC,uCAsEsB,CAAC,KAAKioF,UAAN,EAAkBK,OAAlB,CAA0B,CAA1B,CAtEtB,2CAuE0Bx2D,4BAAI,CAACo2D,YAAD,EAAe,GAAf,CAvE9B,kFAyE4B,CAAC,IAAID,UAAL,EAAiBK,OAAjB,CAAyB,CAAzB,CAzE5B,8CA0E6B,CAAC,IAAIL,UAAL,EAAiBK,OAAjB,CAAyB,CAAzB,CA1E7B,kDA6EYtiB,WAAK,CAACt/D,MA7ElB,UA6E+Bs/D,WAAK,CAAChmE,IA7ErC,wFAiFYgmE,WAAK,CAAC1mE,YAjFlB,UAiFqC0mE,WAAK,CAAChmE,IAjF3C,wCAkFuB8xB,4BAAI,CAACo2D,YAAD,EAAe,EAAf,CAlF3B,6CAmF2Bp2D,4BAAI,CAACo2D,YAAD,EAAe,EAAf,CAnF/B,8CAoF4Bp2D,4BAAI,CAACo2D,YAAD,EAAe,CAAf,CApFhC,+CAqF6Bp2D,4BAAI,CAACo2D,YAAD,EAAe,CAAf,CArFjC,mDAwFYliB,WAAK,CAAC1mE,YAxFlB,UAwFqC0mE,WAAK,CAAChmE,IAxF3C,sIA6F0CqkB,KAAK,CAAC4gE,QA7FhD,4BA6FiFmD,YA7FjF,kCA+FYpiB,WAAK,CAACt/D,MA/FlB,SA+F8Bs/D,WAAK,CAAC5mE,MA/FpC,SA+FgDwD,sCAAa,CAACC,UA/F9D,SA+F8EmjE,WAAK,CAACv8B,MA/FpF,SA+FgG1mC,sCAAa,CAACE,QA/F9G,SA+F4H+iE,WAAK,CAACv8B,MA/FlI,4HAoGYu8B,WAAK,CAACt/D,MApGlB,SAoG8Bs/D,WAAK,CAAC5mE,MApGpC,SAoGgDwD,sCAAa,CAACC,UApG9D,SAoG8EmjE,WAAK,CAACv8B,MApGpF,SAoGgG1mC,sCAAa,CAACE,QApG9G,SAoG4H+iE,WAAK,CAACv8B,MApGlI,wFAwGYu8B,WAAK,CAACmhB,SAxGlB,SAwGiCnhB,WAAK,CAAC5mE,MAxGvC,SAwGmDwD,sCAAa,CAACC,UAxGjE,SAwGiFmjE,WAAK,CAACv8B,MAxGvF,SAwGmG1mC,sCAAa,CAACE,QAxGjH,UAwGgI+iE,WAAK,CAACxmE,OAxGtI,mIA6G0CyyB,2BAAG,CAAC5N,KAAK,CAAC4gE,QAAP,EAAiBmD,YAAjB,CA7G7C,kCA+GYpiB,WAAK,CAACt/D,MA/GlB,SA+G8Bs/D,WAAK,CAAC5mE,MA/GpC,SA+GgDwD,sCAAa,CAACC,UA/G9D,SA+G8EmjE,WAAK,CAACv8B,MA/GpF,SA+GgG1mC,sCAAa,CAACE,QA/G9G,SA+G4H+iE,WAAK,CAACv8B,MA/GlI,qLAqHYu8B,WAAK,CAACt/D,MArHlB,SAqH8Bs/D,WAAK,CAAC5mE,MArHpC,SAqHgDwD,sCAAa,CAACC,UArH9D,SAqH8EmjE,WAAK,CAACv8B,MArHpF,SAqHgG1mC,sCAAa,CAACE,QArH9G,SAqH4H+iE,WAAK,CAACv8B,MArHlI,6IA0HYu8B,WAAK,CAACmhB,SA1HlB,SA0HiCnhB,WAAK,CAAC5mE,MA1HvC,SA0HmDwD,sCAAa,CAACC,UA1HjE,SA0HiFmjE,WAAK,CAACv8B,MA1HvF,SA0HmG1mC,sCAAa,CAACE,QA1HjH,UA0HgI+iE,WAAK,CAACxmE,OA1HtI;AAgIH,GAvIM,EAuIJ0hB,IAvII,CAuIC,IAvID,CAAP;AAwIH,C;;AClJD;AAEA;AAEO,IAAMqnE,gBAAgB,iBAErBviB,WAAK,CAACt/D,MAFe,SAEHs/D,WAAK,CAAC7mE,KAFH,SAEciC,qCAAY,CAACC,IAF3B,8EAOrB2kE,WAAK,CAACt/D,MAPe,SAOHs/D,WAAK,CAAC7mE,KAPH,SAOciC,qCAAY,CAACE,IAP3B,8EAYrB0kE,WAAK,CAACt/D,MAZe,SAYHs/D,WAAK,CAAC7mE,KAZH,SAYciC,qCAAY,CAACG,MAZ3B,2EAiBrBykE,WAAK,CAACt/D,MAjBe,SAiBHs/D,WAAK,CAAC7mE,KAjBH,SAiBciC,qCAAY,CAACI,KAjB3B,8EAsBrBwkE,WAAK,CAACt/D,MAtBe,SAsBHs/D,WAAK,CAAC7mE,KAtBH,SAsBciC,qCAAY,CAACK,QAtB3B,8EA2BrBukE,WAAK,CAACt/D,MA3Be,SA2BHs/D,WAAK,CAAC7mE,KA3BH,SA2BciC,qCAAY,CAACO,WA3B3B,kFAgCrBqkE,WAAK,CAACt/D,MAhCe,SAgCHs/D,WAAK,CAAC7mE,KAhCH,SAgCciC,qCAAY,CAACM,KAhC3B,wGAAtB,C;;ACJP;AACA;AACA;AACA;AACA;AACA;AACA;AAEO,SAAS8mF,cAAT,OAAuG;AAAA,MAA7Ev+D,MAA6E,QAA7EA,MAA6E;AAAA,MAArEg+D,UAAqE,QAArEA,UAAqE;AAC1G,wBACOP,SADP,kBAEOC,WAFP,kBAGOY,gBAHP,kBAIOX,WAJP,kBAKOC,aALP,kBAMOC,UANP,kBAOOE,qBAAqB,CAAC;AAAE/9D,UAAM,EAANA,MAAF;AAAUg+D,cAAU,EAAVA;AAAV,GAAD,CAP5B;AASH,C;;AClBD;;;ACDA;AAEA;AAEA;AAEO,SAASQ,WAAT,CAAqBvrE,KAArB,EAAmD;AACtD,SACI,uBACI;AAAO,aAAS,ksBAmBYA,KAAK,CAACorE,OAAN,CAAc,CAAd,CAnBZ,wGAuBY,CAACprE,KAAK,GAAG,CAAT,EAAYorE,OAAZ,CAAoB,CAApB,CAvBZ,wGA2BY,CAACprE,KAAK,GAAG,CAAT,EAAYorE,OAAZ,CAAoB,CAApB,CA3BZ;AAAhB,IADJ,EAiDI;AAAK,SAAK,EAAC;AAAX,KAEQ,CAAE,CAAF,EAAK,CAAL,EAAQ,CAAR,EAAY3rE,GAAZ,CAAgB,UAAApB,CAAC;AAAA,WACb;AAAK,WAAK,+BAA+BA;AAAzC,gBADa;AAAA,GAAjB,CAFR,CAjDJ,CADJ;AA0DH;AAEM,SAASmtE,MAAT,CAAgBC,UAAhB,EAAmD;AACtD,SACI;AAAK,SAAK,EAAC;AAAX,KACI;AAAO,aAAS;AAAhB,IADJ,EASI;AAAK,SAAK,EAAC,iBAAX;AAA6B,OAAG,EAAGA;AAAnC,IATJ,CADJ;AAaH;AAEM,SAASC,OAAT,CAAiBC,QAAjB,EAAoCF,UAApC,EAA0D9mE,IAA1D,EAAqG;AACxG,MAAM0qC,KAAK,GAAG,EAAd;AACAA,OAAK,CAAC,CAAD,CAAL,GAAY;AAAO,aAAS;AAAhB,IAAZ;AAQAA,OAAK,CAAC,CAAD,CAAL,GACI;AAAK,SAAK,EAAOyZ,WAAK,CAACxmE,OAAb,SAA0BwmE,WAAK,CAACohB,aAAhC,SAAmDyB;AAA7D,KACI;AAAM,YAAQ;AAAd,KAAiBhnE,IAAjB,CADJ,EAGQ8mE,UAAU,IAAK;AAAK,SAAK,EAAC,iBAAX;AAA6B,OAAG,EAAGA;AAAnC,IAHvB,CADJ;AAOA,SAAO,IAAIhb,wBAAJ,CAAyBphB,KAAzB,CAAP;AACH,C;;ACpGM,SAASu8B,kBAAT,GAA2C;AAE9C;AACA,SAAO,YAAM;AACT,QAAMriF,SAAS,GAAG;AACdsiF,cAAQ,EAAE;AADI,KAAlB;AAIA,QAAM/iB,KAAK,GAAG;AACVh4C,YAAM,EAAK,QADD;AAEVw5D,eAAS,EAAE;AAFD,KAAd;AAKA,QAAMwB,QAAQ,GAAG;AACbrjF,SAAG,EAAO,GADG;AAEbojF,cAAQ,QAAOtiF,SAAS,CAACsiF,QAAjB;AAFK,KAAjB;AAKA,QAAME,GAAG,GAAG;AACRv7D,WAAK,EAAE;AADC,KAAZ;;AAIA,aAAS7K,IAAT,CAActJ,OAAd,EAA6C;AACzC,UAAI2J,MAAM,GAAG,KAAb;AACA,aAAO,YAAa;AAChB,YAAI,CAACA,MAAL,EAAa;AACTA,gBAAM,GAAG,IAAT;AACA3J,iBAAO,MAAP;AACH;AACJ,OALD;AAMH;;AAED,aAASiK,QAAT,CAAkBjK,OAAlB,EAAsCyC,IAAtC,EAAqE;AAAA,UAA/BA,IAA+B;AAA/BA,YAA+B,GAAf,EAAe;AAAA;;AACjE,UAAID,OAAJ;AACA,aAAO,YAAa;AAAA,0CAATiB,IAAS;AAATA,cAAS;AAAA;;AAChBf,oBAAY,CAACF,OAAD,CAAZ;AACAA,eAAO,GAAG7C,UAAU,CAAC,YAAM;AACvBK,iBAAO,MAAP,SAAWyD,IAAX;AACH,SAFmB,EAEjBhB,IAFiB,CAApB;AAGH,OALD;AAMH,KArCQ,CAuCT;;;AACA,aAASktE,OAAT,CAAoBhxE,IAApB,EAAqC;AACjC,aAAOyH,KAAK,CAACzE,SAAN,CAAgB6D,KAAhB,CAAsBtG,IAAtB,CAA2BP,IAA3B,CAAP;AACH;;AAED,aAASu0C,WAAT,CAAqBhoC,QAArB,EAA+Bke,MAA/B,EAAqE;AACjEA,YAAM,GAAGA,MAAM,IAAI/d,QAAnB;AACA,aAAOskE,OAAO,CAACvmD,MAAM,CAACpe,gBAAP,CAAwBE,QAAxB,CAAD,CAAP,CAA2CiB,MAA3C,CAAkD,UAAAlB,EAAE,EAAI;AAC3D,eAAOA,EAAE,CAACgC,OAAH,CAAW9I,WAAX,OAA6BurE,GAAG,CAACv7D,KAAxC;AACH,OAFM,CAAP;AAGH;;AAED,aAASgV,SAAT,CAAmBxe,OAAnB,EAAwD;AACpD;AACA,aAAOA,OAAO,CAACilE,aAAf;AACH;;AAED,aAAS96D,WAAT,CAAqB7J,EAArB,EAAuC;AACnCA,QAAE,CAACqK,SAAH,CAAaG,MAAb,CAAoBg3C,KAAK,CAACh4C,MAA1B;AACH;;AAED,aAASM,WAAT,CAAqB9J,EAArB,EAAuC;AACnCA,QAAE,CAACqK,SAAH,CAAaC,GAAb,CAAiBk3C,KAAK,CAACh4C,MAAvB;AACH;;AAED,aAASo7D,GAAT,CAAal5C,GAAb,EAAoD;AAChD,UAAIv1B,MAAM,GAAG,CAAb;;AADgD,8BAE7Bu1B,GAF6B,gBAExB;AAAnB,YAAMh4B,IAAI,GAAIg4B,GAAJ,KAAV;AACDv1B,cAAM,IAAIzC,IAAV;AACH;;AACD,aAAOyC,MAAP;AACH;;AAED,aAAS6kC,MAAT,CAAmBtP,GAAnB,EAAgE;AAC5D,UAAMv1B,MAAM,GAAG,EAAf;;AAD4D,8BAG3Cu1B,GAH2C,gBAGtC;AAAjB,YAAM1rB,EAAE,GAAI0rB,GAAJ,KAAR;;AACD,YAAIv1B,MAAM,CAAC3B,OAAP,CAAewL,EAAf,MAAuB,CAAC,CAA5B,EAA+B;AAC3B7J,gBAAM,CAAC1B,IAAP,CAAYuL,EAAZ;AACH;AACJ;;AAED,aAAO7J,MAAP;AACH;;AAED,aAAS0uE,cAAT,CAAwBnlE,OAAxB,EAA6E;AACzE,aAAOuoC,WAAW,CAACu8B,QAAQ,CAACrjF,GAAV,EAAeue,OAAf,CAAlB;AACH;;AAED,aAASolE,gBAAT,CAA0BplE,OAA1B,EAA0D;AACtD,aAAOuN,QAAQ,CAACvN,OAAO,CAACiuC,YAAR,CAAqB1rD,SAAS,CAACsiF,QAA/B,KAA4C,CAA7C,EAAgD,EAAhD,CAAf;AACH;;AAED,aAASQ,qBAAT,CAA+B5S,QAA/B,EAAgF;AAC5E,aAAOyS,GAAG,CAACzS,QAAQ,CAACh6D,GAAT,CAAa,UAAA0D,KAAK;AAAA,eAAIA,KAAK,CAAC8J,WAAV;AAAA,OAAlB,CAAD,CAAV;AACH;;AAED,aAASq/D,kBAAT,GAA4D;AACxD,UAAMC,QAAQ,aAAQh9B,WAAW,CAACu8B,QAAQ,CAACD,QAAV,CAAnB,EAA2Ct8B,WAAW,CAAC,yCAAD,CAAtD,EAAsGA,WAAW,CAAC,8DAAD,CAAjH,CAAd;AACA,aAAOjN,MAAM,CAACiqC,QAAQ,CAAC9sE,GAAT,CAAa+lB,SAAb,EAAwBhd,MAAxB,CAA+BC,OAA/B,CAAD,CAAb;AACH;;AAED,aAAS+jE,mBAAT,CAA6B/mD,MAA7B,EAAiF;AAC7E,aAAOumD,OAAO,CAACz8B,WAAW,CAACu8B,QAAQ,CAACD,QAAV,EAAoBpmD,MAApB,CAAZ,CAAP,CAAgD0N,IAAhD,CAAqD,UAACs5C,KAAD,EAAQC,MAAR,EAAmB;AAC3E,eAAON,gBAAgB,CAACK,KAAD,CAAhB,GAA0BL,gBAAgB,CAACM,MAAD,CAAjD;AACH,OAFM,CAAP;AAGH;;AAED,QAAMljE,QAAQ,GAAG8iE,kBAAkB,GAAG7sE,GAArB,CAAyB,UAAAktE,cAAc,EAAI;AACxD,UAAMC,WAAW,GAAGT,cAAc,CAACQ,cAAD,CAAlC;AACA,UAAME,gBAAgB,GAAGL,mBAAmB,CAACG,cAAD,CAA5C;AAEA,aAAO;AACHA,sBAAc,EAAdA,cADG;AAEHC,mBAAW,EAAXA,WAFG;AAGHC,wBAAgB,EAAhBA;AAHG,OAAP;AAKH,KATgB,CAAjB;;AAWA,aAASC,eAAT,GAA2B;AAAA,8BACyCtjE,QADzC,gBACmD;AAAA,2BAAVA,QAAU;AAAA,YAA7DmjE,cAA6D,gBAA7DA,cAA6D;AAAA,YAA7CC,WAA6C,gBAA7CA,WAA6C;AAAA,YAAhCC,gBAAgC,gBAAhCA,gBAAgC;AACtE,YAAME,WAAW,GAAGJ,cAAc,CAAC1/D,WAAnC;AACA,YAAI+/D,SAAS,GAAGX,qBAAqB,CAACO,WAAD,CAArB,GAAqCP,qBAAqB,CAACQ,gBAAD,CAA1E;;AAFsE,gCAI1CA,gBAJ0C,gBAIxB;AAAzC,cAAMI,aAAa,GAAIJ,gBAAJ,KAAnB;AACDG,mBAAS,IAAIC,aAAa,CAAChgE,WAA3B;;AAEA,cAAI+/D,SAAS,GAAGD,WAAhB,EAA6B;AACzB37D,uBAAW,CAAC67D,aAAD,CAAX;AACH,WAFD,MAEO;AACH97D,uBAAW,CAAC87D,aAAD,CAAX;AACH;AACJ;AACJ;AACJ;;AAED,aAASC,oBAAT,GAAgC;AAC5B,UAAMC,gBAAgB,GAAGzlE,QAAQ,CAAC0lE,sBAAT,CAAgC,qBAAhC,EAAuD,CAAvD,CAAzB;AACA,UAAMC,UAAU,GAAG,CAAnB;;AAEA,eAASC,mBAAT,GAA+B;AAC3BH,wBAAgB,CAACx7D,SAAjB,CAA2BG,MAA3B,CAAkC,wBAAlC;AAEA5W,cAAM,CAACoQ,mBAAP,CAA2B,WAA3B,EAAwCgiE,mBAAxC;AACApyE,cAAM,CAACyP,gBAAP,CAAwB,SAAxB,EAAmC4iE,cAAnC,EAJ2B,CAIyB;AACvD;;AAED,eAASA,cAAT,CAAwBp0B,CAAxB,EAA2B;AACvB,YAAIA,CAAC,CAAC7V,OAAF,KAAc+pC,UAAlB,EAA8B;AAC1BF,0BAAgB,CAACx7D,SAAjB,CAA2BC,GAA3B,CAA+B,wBAA/B;AAEA1W,gBAAM,CAACoQ,mBAAP,CAA2B,SAA3B,EAAsCiiE,cAAtC;AACAryE,gBAAM,CAACyP,gBAAP,CAAwB,WAAxB,EAAqC2iE,mBAArC;AACH;AACJ;;AAEDH,sBAAgB,CAACx7D,SAAjB,CAA2BC,GAA3B,CAA+B,wBAA/B;AACA1W,YAAM,CAACyP,gBAAP,CAAwB,SAAxB,EAAmC4iE,cAAnC;AACH;;AAED,QAAMC,WAAW,GAAG7nE,IAAI,CAACW,QAAQ,CAAC,YAAM;AACpCpL,YAAM,CAACyP,gBAAP,CAAwB,QAAxB,EAAkCmiE,eAAlC;;AACA,UAAIplE,QAAQ,CAAC+6B,IAAb,EAAmB;AACf/6B,gBAAQ,CAAC+6B,IAAT,CAAc9wB,SAAd,CAAwBC,GAAxB,CAA4Bk3C,KAAK,CAACwhB,SAAlC;AACH;AACJ,KALgC,CAAT,CAAxB;;AAOA,QAAMmD,IAAI,GAAG,SAAPA,IAAO,GAAM;AACfX,qBAAe;AACfU,iBAAW;AACd,KAHD;;AAKAV,mBAAe;AACfI,wBAAoB;AAEpBxlE,YAAQ,CAACiD,gBAAT,CAA0B,kBAA1B,EAA8C8iE,IAA9C;AACAvyE,UAAM,CAACyP,gBAAP,CAAwB,MAAxB,EAAgC8iE,IAAhC;AACAvyE,UAAM,CAACyP,gBAAP,CAAwB,QAAxB,EAAkC8iE,IAAlC;AACH,GAjLD;AAkLH,C;;ACtLD;AAEO,IAAMC,gBAAgB,GAAG;AAC5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GADsB;AAmC5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX,KAzBJ;AAiCF,UAAM;AACF,kBAAa,uCADX;AAEF,mBAAa,wCAFX;AAGF,mBAAa,6BAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,mCALX;AAMF,mBAAa;AANX;AAjCJ,GAnCsB;AA6E5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA7EsB;AA+G5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA/GsB;AAiJ5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GAjJsB;AA2J5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA3JsB;AA6L5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA7LsB;AA+N5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA/NsB;AAiQ5B,QAAM;AACF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AATJ,GAjQsB;AAmR5B,QAAM;AACF,UAAM;AACF,kBAAa,mCADX;AAEF,mBAAa,yCAFX;AAGF,mBAAa,kDAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,sCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AATJ,GAnRsB;AAqS5B,QAAM;AACF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GArSsB;AA+S5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA/SsB;AAiV5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAjVsB;AAmX5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GAnXsB;AA6X5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA7XsB;AA+Z5B,QAAM;AACF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,qCADX;AAEF,mBAAa,gDAFX;AAGF,mBAAa,wBAHX;AAIF,aAAa,2BAJX;AAKF,gBAAa,kCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,gCAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AAjBJ,GA/ZsB;AAyb5B,QAAM;AACF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAzbsB;AA2d5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GA3dsB;AAqe5B,QAAM;AACF,UAAM;AACF,kBAAa,uCADX;AAEF,mBAAa,wCAFX;AAGF,mBAAa,6BAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,mCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAzBJ;AAiCF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAjCJ,GAresB;AA+gB5B,QAAM;AACF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA/gBsB;AAijB5B,QAAM;AACF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAjjBsB;AAmlB5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAnlBsB;AAqnB5B,QAAM;AACF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,4BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GArnBsB;AA+nB5B,QAAM;AACF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA/nBsB;AAiqB5B,QAAM;AACF,UAAM;AACF,kBAAsB,mCADpB;AAEF,mBAAsB,oCAFpB;AAGF,mBAAsB,8BAHpB;AAIF,aAAsB,yBAJpB;AAKF,gBAAsB,uCALpB;AAMF,qBAAsB,qDANpB;AAOF,4BAAsB,8EAPpB;AAQF,mBAAsB;AARpB,KADJ;AAWF,UAAM;AACF,kBAAsB,kCADpB;AAEF,mBAAsB,8BAFpB;AAGF,mBAAsB,yBAHpB;AAIF,aAAsB,wBAJpB;AAKF,gBAAsB,iCALpB;AAMF,qBAAsB,sDANpB;AAOF,4BAAsB,+EAPpB;AAQF,mBAAsB;AARpB;AAXJ,GAjqBsB;AAurB5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAvrBsB;AAytB5B,QAAM;AACF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,4BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GAztBsB;AAmuB5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAnuBsB;AAqwB5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GArwBsB;AA+wB5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA/wBsB;AAizB5B,QAAM;AACF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,eAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,6BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AATJ,GAjzBsB;AAm0B5B,QAAM;AACF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,2BAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AATJ,GAn0BsB;AAq1B5B,QAAM;AACF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAr1BsB;AAu3B5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAv3BsB;AAy5B5B,QAAM;AACF,UAAM;AACF,kBAAa,mCADX;AAEF,mBAAa,yCAFX;AAGF,mBAAa,kDAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,sCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,gCAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AAjBJ,GAz5BsB;AAm7B5B,QAAM;AACF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AATJ,GAn7BsB;AAq8B5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAr8BsB;AAu+B5B,QAAM;AACF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAv+BsB;AAygC5B,QAAM;AACF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AATJ,GAzgCsB;AA2hC5B,QAAM;AACF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AADJ,GA3hCsB;AAqiC5B,QAAM;AACF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAriCsB;AAukC5B,QAAM;AACF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAvkCsB;AAymC5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAzmCsB;AA2oC5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GA3oCsB;AAqpC5B,QAAM;AACF,UAAM;AACF,kBAAa,uCADX;AAEF,mBAAa,yCAFX;AAGF,mBAAa,iCAHX;AAIF,aAAa,8BAJX;AAKF,gBAAa,2CALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAzBJ;AAiCF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAjCJ,GArpCsB;AA+rC5B,QAAM;AACF,UAAM;AACF,kBAAa,mCADX;AAEF,mBAAa,sCAFX;AAGF,mBAAa,uCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,sCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AATJ,GA/rCsB;AAitC5B,QAAM;AACF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAjtCsB;AAmvC5B,QAAM;AACF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,uBAFX;AAGF,mBAAa,uBAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,gCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AATJ,GAnvCsB;AAqwC5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GArwCsB;AAuyC5B,QAAM;AACF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAvyCsB;AAy0C5B,QAAM;AACF,UAAM;AACF,kBAAa,uCADX;AAEF,mBAAa,wCAFX;AAGF,mBAAa,6BAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,mCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAzBJ;AAiCF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAjCJ,GAz0CsB;AAm3C5B,QAAM;AACF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAn3CsB;AAq5C5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,8CADX;AAEF,mBAAa,2CAFX;AAGF,mBAAa,kCAHX;AAIF,aAAa,8BAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAzBJ;AAiCF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAjCJ,GAr5CsB;AA+7C5B,QAAM;AACF,UAAM;AACF,kBAAa,uCADX;AAEF,mBAAa,wCAFX;AAGF,mBAAa,6BAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,mCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAzBJ;AAiCF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAjCJ,GA/7CsB;AAy+C5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAz+CsB;AA2gD5B,QAAM;AACF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AATJ,GA3gDsB;AA6hD5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA7hDsB;AA+jD5B,QAAM;AACF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,qCAFX;AAGF,mBAAa,6BAHX;AAIF,aAAa,qBAJX;AAKF,gBAAa,kCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAzBJ;AAiCF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAjCJ,GA/jDsB;AAymD5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAzmDsB;AA2oD5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA3oDsB;AA6qD5B,QAAM;AACF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,4BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GA7qDsB;AAurD5B,QAAM;AACF,UAAM;AACF,kBAAa,mCADX;AAEF,mBAAa,uBAFX;AAGF,mBAAa,uBAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,gCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAzBJ;AAiCF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAjCJ,GAvrDsB;AAiuD5B,QAAM;AACF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,6BADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AATJ,GAjuDsB;AAmvD5B,QAAM;AACF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAnvDsB;AAqxD5B,QAAM;AACF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GArxDsB;AA+xD5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA/xDsB;AAi0D5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAj0DsB;AAm2D5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAn2DsB;AAq4D5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAr4DsB;AAu6D5B,QAAM;AACF,UAAM;AACF,kBAAa,mCADX;AAEF,mBAAa,uBAFX;AAGF,mBAAa,uBAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,gCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAzBJ;AAiCF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAjCJ,GAv6DsB;AAi9D5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAj9DsB;AAm/D5B,QAAM;AACF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAn/DsB;AAqhE5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GArhEsB;AAujE5B,QAAM;AACF,UAAM;AACF,kBAAa,gDADX;AAEF,mBAAa,gDAFX;AAGF,mBAAa,qCAHX;AAIF,aAAa,4BAJX;AAKF,gBAAa,oCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAzBJ;AAiCF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAjCJ,GAvjEsB;AAimE5B,QAAM;AACF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAjmEsB;AAmoE5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAnoEsB;AAqqE5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GArqEsB;AAusE5B,QAAM;AACF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,4BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,UAHX;AAIF,aAAa,qBAJX;AAKF,gBAAa,6BALX;AAMF,mBAAa;AANX;AATJ,GAvsEsB;AAytE5B,QAAM;AACF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAztEsB;AA2vE5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GA3vEsB;AAqwE5B,QAAM;AACF,UAAM;AACF,kBAAa,iCADX;AAEF,mBAAa,wCAFX;AAGF,mBAAa,mCAHX;AAIF,aAAa,uBAJX;AAKF,gBAAa,kCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAzBJ;AAiCF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAjCJ,GArwEsB;AA+yE5B,QAAM;AACF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,gDAFX;AAGF,mBAAa,mDAHX;AAIF,aAAa,4BAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AATJ,GA/yEsB;AAi0E5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAj0EsB;AAm2E5B,QAAM;AACF,UAAM;AACF,kBAAa,6BADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,2BAHX;AAIF,aAAa,4BAJX;AAKF,gBAAa,mCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AATJ,GAn2EsB;AAq3E5B,QAAM;AACF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,6BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GAr3EsB;AA+3E5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GA/3EsB;AAy4E5B,QAAM;AACF,UAAM;AACF,kBAAa,qCADX;AAEF,mBAAa,oCAFX;AAGF,mBAAa,+BAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,qCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AATJ,GAz4EsB;AA25E5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA35EsB;AA67E5B,QAAM;AACF,UAAM;AACF,kBAAa,uCADX;AAEF,mBAAa,wCAFX;AAGF,mBAAa,6BAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,mCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAzBJ;AAiCF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAjCJ,GA77EsB;AAu+E5B,QAAM;AACF,UAAM;AACF,kBAAa,6BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,mBAHX;AAIF,aAAa,mBAJX;AAKF,gBAAa,4BALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AATJ,GAv+EsB;AAy/E5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAz/EsB;AA2hF5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA3hFsB;AA6jF5B,QAAM;AACF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,4BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GA7jFsB;AAukF5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAvkFsB;AAymF5B,QAAM;AACF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAzmFsB;AA2oF5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA3oFsB;AA6qF5B,QAAM;AACF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,iBAFX;AAGF,mBAAa,oBAHX;AAIF,aAAa,qBAJX;AAKF,gBAAa,+BALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,6BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AATJ,GA7qFsB;AA+rF5B,QAAM;AACF,UAAM;AACF,kBAAa,uCADX;AAEF,mBAAa,wCAFX;AAGF,mBAAa,6BAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,mCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAzBJ;AAiCF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAjCJ,GA/rFsB;AAyuF5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAzuFsB;AA2wF5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA3wFsB;AA6yF5B,QAAM;AACF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,4BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GA7yFsB;AAuzF5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAvzFsB;AAy1F5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAz1FsB;AA23F5B,QAAM;AACF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,4BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GA33FsB;AAq4F5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAr4FsB;AAu6F5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,8CADX;AAEF,mBAAa,2CAFX;AAGF,mBAAa,kCAHX;AAIF,aAAa,8BAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAzBJ;AAiCF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAjCJ,GAv6FsB;AAi9F5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,mCADX;AAEF,mBAAa,yCAFX;AAGF,mBAAa,kDAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,sCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAzBJ;AAiCF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAjCJ,GAj9FsB;AA2/F5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,8CADX;AAEF,mBAAa,2CAFX;AAGF,mBAAa,kCAHX;AAIF,aAAa,8BAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAzBJ;AAiCF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAjCJ,GA3/FsB;AAqiG5B,QAAM;AACF,UAAM;AACF,kBAAa,uCADX;AAEF,mBAAa,wCAFX;AAGF,mBAAa,6BAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,mCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAzBJ;AAiCF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAjCJ,GAriGsB;AA+kG5B,QAAM;AACF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AATJ,GA/kGsB;AAimG5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GAjmGsB;AA2mG5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GA3mGsB;AAqnG5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GArnGsB;AAupG5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAvpGsB;AAyrG5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GAzrGsB;AAmsG5B,QAAM;AACF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAnsGsB;AAquG5B,QAAM;AACF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,4BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GAruGsB;AA+uG5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA/uGsB;AAixG5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAjxGsB;AAmzG5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAnzGsB;AAq1G5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GAr1GsB;AA+1G5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA/1GsB;AAi4G5B,QAAM;AACF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,4BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GAj4GsB;AA24G5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA34GsB;AA66G5B,QAAM;AACF,UAAM;AACF,kBAAsB,mCADpB;AAEF,mBAAsB,mCAFpB;AAGF,mBAAsB,oCAHpB;AAIF,aAAsB,yBAJpB;AAKF,gBAAsB,uCALpB;AAMF,qBAAsB,sDANpB;AAOF,4BAAsB,gFAPpB;AAQF,mBAAsB;AARpB,KADJ;AAWF,UAAM;AACF,kBAAsB,kCADpB;AAEF,mBAAsB,8BAFpB;AAGF,mBAAsB,yBAHpB;AAIF,aAAsB,wBAJpB;AAKF,gBAAsB,iCALpB;AAMF,qBAAsB,sDANpB;AAOF,4BAAsB,+EAPpB;AAQF,mBAAsB;AARpB;AAXJ,GA76GsB;AAm8G5B,QAAM;AACF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,6BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GAn8GsB;AA68G5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA78GsB;AA++G5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA/+GsB;AAihH5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAjhHsB;AAmjH5B,QAAM;AACF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAnjHsB;AAqlH5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GArlHsB;AAunH5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GAvnHsB;AAioH5B,QAAM;AACF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAjoHsB;AAmqH5B,QAAM;AACF,UAAM;AACF,kBAAa,iCADX;AAEF,mBAAa,iDAFX;AAGF,mBAAa,wBAHX;AAIF,aAAa,2BAJX;AAKF,gBAAa,kCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AATJ,GAnqHsB;AAqrH5B,QAAM;AACF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,wBAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AATJ,GArrHsB;AAusH5B,QAAM;AACF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,4BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GAvsHsB;AAitH5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAjtHsB;AAmvH5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAnvHsB;AAqxH5B,QAAM;AACF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,6BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,sBAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,oCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,eAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GArxHsB;AAuzH5B,QAAM;AACF,UAAM;AACF,kBAAa,uCADX;AAEF,mBAAa,wCAFX;AAGF,mBAAa,6BAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,mCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAzBJ;AAiCF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAjCJ,GAvzHsB;AAi2H5B,QAAM;AACF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAj2HsB;AAm4H5B,QAAM;AACF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAn4HsB;AAq6H5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAr6HsB;AAu8H5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAv8HsB;AAy+H5B,QAAM;AACF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,6BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GAz+HsB;AAm/H5B,QAAM;AACF,UAAM;AACF,kBAAa,iCADX;AAEF,mBAAa,6BAFX;AAGF,mBAAa,0BAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,mCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AATJ,GAn/HsB;AAqgI5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GArgIsB;AAuiI5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAviIsB;AAykI5B,QAAM;AACF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,kCAFX;AAGF,mBAAa,2BAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AATJ,GAzkIsB;AA2lI5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA3lIsB;AA6nI5B,QAAM;AACF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AATJ,GA7nIsB;AA+oI5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX,KAzBJ;AAiCF,UAAM;AACF,kBAAa,uCADX;AAEF,mBAAa,wCAFX;AAGF,mBAAa,6BAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,mCALX;AAMF,mBAAa;AANX;AAjCJ,GA/oIsB;AAyrI5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAzrIsB;AA2tI5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA3tIsB;AA6vI5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA7vIsB;AA+xI5B,QAAM;AACF,UAAM;AACF,kBAAa,0CADX;AAEF,mBAAa,2CAFX;AAGF,mBAAa,kCAHX;AAIF,aAAa,8BAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AATJ,GA/xIsB;AAizI5B,QAAM;AACF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAjzIsB;AAm1I5B,QAAM;AACF,UAAM;AACF,kBAAa,uCADX;AAEF,mBAAa,wCAFX;AAGF,mBAAa,6BAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,mCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAzBJ;AAiCF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAjCJ,GAn1IsB;AA63I5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA73IsB;AA+5I5B,QAAM;AACF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA/5IsB;AAi8I5B,QAAM;AACF,UAAM;AACF,kBAAa,gCADX;AAEF,mBAAa,wCAFX;AAGF,mBAAa,uBAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,gCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AATJ,GAj8IsB;AAm9I5B,QAAM;AACF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,6BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GAn9IsB;AA69I5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA79IsB;AA+/I5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA//IsB;AAiiJ5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAjiJsB;AAmkJ5B,QAAM;AACF,UAAM;AACF,kBAAa,sCADX;AAEF,mBAAa,yCAFX;AAGF,mBAAa,kCAHX;AAIF,aAAa,6BAJX;AAKF,gBAAa,+BALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAzBJ;AAiCF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAjCJ,GAnkJsB;AA6mJ5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA7mJsB;AA+oJ5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA/oJsB;AAirJ5B,QAAM;AACF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAjrJsB;AAmtJ5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAntJsB;AAqvJ5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GArvJsB;AAuxJ5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAvxJsB;AAyzJ5B,QAAM;AACF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAzzJsB;AA21J5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA31JsB;AA63J5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA73JsB;AA+5J5B,QAAM;AACF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA/5JsB;AAi8J5B,QAAM;AACF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAj8JsB;AAm+J5B,QAAM;AACF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,iCAHX;AAIF,aAAa,4BAJX;AAKF,gBAAa,mCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AATJ,GAn+JsB;AAq/J5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAr/JsB;AAuhK5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAvhKsB;AAyjK5B,QAAM;AACF,UAAM;AACF,kBAAa,uCADX;AAEF,mBAAa,wCAFX;AAGF,mBAAa,6BAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,mCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAzBJ;AAiCF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAjCJ,GAzjKsB;AAmmK5B,QAAM;AACF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,4BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GAnmKsB;AA6mK5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,2CAFX;AAGF,mBAAa,gCAHX;AAIF,aAAa,uBAJX;AAKF,gBAAa,0CALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AATJ,GA7mKsB;AA+nK5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA/nKsB;AAiqK5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAjqKsB;AAmsK5B,QAAM;AACF,UAAM;AACF,kBAAa,4BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,UAHX;AAIF,aAAa,qBAJX;AAKF,gBAAa,6BALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AATJ,GAnsKsB;AAqtK5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GArtKsB;AAuvK5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,8CADX;AAEF,mBAAa,2CAFX;AAGF,mBAAa,kCAHX;AAIF,aAAa,8BAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAzBJ;AAiCF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAjCJ,GAvvKsB;AAiyK5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAjyKsB;AAm0K5B,QAAM;AACF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,kBAAa,sBAJX;AAKF,aAAa,wBALX;AAMF,gBAAa,iCANX;AAOF,mBAAa;AAPX,KADJ;AAUF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAVJ;AAkBF,UAAM;AACF,kBAAa,mCADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAlBJ;AA0BF,UAAM;AACF,kBAAa,6BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AA1BJ,GAn0KsB;AAs2K5B,QAAM;AACF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAt2KsB;AAw4K5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAx4KsB;AA06K5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA16KsB;AA48K5B,QAAM;AACF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA58KsB;AA8+K5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA9+KsB;AAghL5B,QAAM;AACF,UAAM;AACF,kBAAa,kCADX;AAEF,mBAAa,6BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GAhhLsB;AA0hL5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA1hLsB;AA4jL5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GA5jLsB;AA8lL5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ,GA9lLsB;AAwmL5B,QAAM;AACF,UAAM;AACF,kBAAa,uCADX;AAEF,mBAAa,wCAFX;AAGF,mBAAa,6BAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,mCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAzBJ;AAiCF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAjCJ,GAxmLsB;AAkpL5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAlpLsB;AAorL5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAprLsB;AAstL5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KADJ;AASF,UAAM;AACF,kBAAa,oCADX;AAEF,mBAAa,4CAFX;AAGF,mBAAa,wCAHX;AAIF,aAAa,0BAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX,KATJ;AAiBF,UAAM;AACF,kBAAa,+BADX;AAEF,mBAAa,mCAFX;AAGF,mBAAa,oCAHX;AAIF,aAAa,yBAJX;AAKF,gBAAa,uCALX;AAMF,mBAAa;AANX,KAjBJ;AAyBF,UAAM;AACF,kBAAa,2BADX;AAEF,mBAAa,cAFX;AAGF,mBAAa,YAHX;AAIF,aAAa,kBAJX;AAKF,gBAAa,8BALX;AAMF,mBAAa;AANX;AAzBJ,GAttLsB;AAwvL5B,QAAM;AACF,UAAM;AACF,kBAAa,wCADX;AAEF,mBAAa,8BAFX;AAGF,mBAAa,yBAHX;AAIF,aAAa,wBAJX;AAKF,gBAAa,iCALX;AAMF,mBAAa;AANX;AADJ;AAxvLsB,CAAzB,C;;;ACHP;;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AAEA,IAAMC,4BAA4B,GAAG,CAAElrF,qCAAY,CAACE,QAAf,EAAyBF,qCAAY,CAACM,MAAtC,EAA8CN,qCAAY,CAACG,GAA3D,CAArC;;AAEA,SAASgrF,sBAAT,OAAqF;AAAA,MAAnDjK,MAAmD,QAAnDA,MAAmD;AAAA,MAA3C0F,KAA2C,QAA3CA,KAA2C;AAAA,MAApCN,QAAoC,QAApCA,QAAoC;AAAA,MAA1BO,QAA0B,QAA1BA,QAA0B;AAAA,MAAhBxyD,GAAgB,QAAhBA,GAAgB;AACjF,SAAO,CACCgyC,WAAK,CAAC5mE,MADP,SACmByhF,MADnB,EAEC7a,WAAK,CAAC9mE,KAFP,SAEkBqnF,KAFlB,EAGCvgB,WAAK,CAACzmE,QAHP,UAGqB0mF,QAAQ,GAAGxjF,wCAAe,CAACC,OAAnB,GAA6BD,wCAAe,CAACE,SAH1E,GAICqjE,WAAK,CAACv8B,MAJP,UAImB+8C,QAAQ,GAAGzjF,sCAAa,CAACE,QAAjB,GAA4BF,sCAAa,CAACC,MAJrE,GAKCgjE,WAAK,CAAC7gE,GALP,SAKgB6uB,GALhB,OAMCgyC,WAAK,CAACkhB,YANP,EAOLhmE,IAPK,CAOA,GAPA,CAAP;AAQH;;AAED,SAAS6pE,gBAAT,QAAgE;AAAA,MAApC1G,KAAoC,SAApCA,KAAoC;AAAA,MAA7BiC,KAA6B,SAA7BA,KAA6B;AAAA,MAAtBjU,SAAsB,SAAtBA,SAAsB;AAC5D,SAAO,CACCrM,WAAK,CAAChnE,KADP,SACkBqlF,KADlB,EAECre,WAAK,CAAC7mE,KAFP,SAEkBmnF,KAFlB,EAGCtgB,WAAK,CAAC8P,UAHP,SAGuBzD,SAHvB,EAILnxD,IAJK,CAIA,GAJA,CAAP;AAKH;;AAED,SAAS8pE,gBAAT,CAA0B92D,MAA1B,EAAwD;AAAA,MAC5CC,OAD4C,GAC1BD,MAD0B,CAC5CC,OAD4C;AAAA,MACnCC,IADmC,GAC1BF,MAD0B,CACnCE,IADmC;AAEpD,SAAOw2D,gBAAgB,CAACz2D,OAAD,CAAhB,CAA0BC,IAA1B,CAAP;AACH;;AAED,SAAS62D,cAAT,QAA4N;AAAA,MAAlM5G,KAAkM,SAAlMA,KAAkM;AAAA,MAA3LtmE,MAA2L,SAA3LA,MAA2L;AAAA,MAAnLyoE,QAAmL,SAAnLA,QAAmL;AAAA,MAAzK3F,MAAyK,SAAzKA,MAAyK;AAExN,MAAM+B,YAAY,GAAG8C,qBAAqB,CAAC3nE,MAAD,CAA1C;AACA,MAAMmtE,mBAAmB,GAAIzF,cAAc,CAACpB,KAAD,CAAd,KAA0BtmE,MAAvD,CAHwN,CAKxN;;AACA,MAAI,CAACmtE,mBAAL,EAA0B;AACtB,WAAOtI,YAAP;AACH,GARuN,CAUxN;;;AACA,MAAI4D,QAAQ,IAAI3F,MAAM,KAAKj+E,sCAAa,CAACC,UAAzC,EAAqD;AACjD,WAAO+/E,YAAP;AACH;;AAED,SAAOyB,KAAP;AACH;;AAED,SAAS8G,gBAAT,QACqG;AAAA,MADzE9G,KACyE,SADzEA,KACyE;AAAA,MADlEiC,KACkE,SADlEA,KACkE;AAAA,MAD3DpZ,OAC2D,SAD3DA,OAC2D;AAAA,MADlDsZ,QACkD,SADlDA,QACkD;AAAA,MADxC3F,MACwC,SADxCA,MACwC;AAEjG,SAAO3T,OAAO,CAACvwD,GAAR,CAAY,UAACoB,MAAD,EAASxC,CAAT,EAAe;AAE9B,QAAM6vE,WAAW,GAAGH,cAAc,CAAC;AAAE5G,WAAK,EAALA,KAAF;AAAStmE,YAAM,EAANA,MAAT;AAAiByoE,cAAQ,EAARA,QAAjB;AAA2B3F,YAAM,EAANA;AAA3B,KAAD,CAAlC;AAEA,QAAMwK,WAAW,GAAI7E,QAAQ,IAAIjrE,CAAC,GAAG,CAAjB,GACdoqE,eAAe,CAACyF,WAAD,EAAc,iBAAd,CAAf,CAAgD9E,KAAhD,CADc,GAEdA,KAFN;AAIA,WAAO;AACHvoE,YAAM,EAANA,MADG;AAEHsmE,WAAK,EAAE+G,WAFJ;AAGH9E,WAAK,EAAE+E;AAHJ,KAAP;AAKH,GAbM,CAAP;AAcH;;AAED,SAASC,WAAT,QACsG;AAAA,MAD/E7E,KAC+E,SAD/EA,KAC+E;AAAA,MADxE5F,MACwE,SADxEA,MACwE;AAAA,MADhEwF,IACgE,SADhEA,IACgE;AAClG,SAAOI,KAAK,CAAC9pE,GAAN,CAAU,UAAAnE,IAAI,EAAI;AAAA;;AACrB,QAAM+yE,IAAI,GAAGtW,SAAS,CAACz8D,IAAD,CAAtB;AAEA,WACI,+EACY/R,kCAAS,CAACrH,MADtB,IAC+ByhF,MAAM,GAAGA,MAAH,GAAY,EADjD,6BAEYp6E,kCAAS,CAACxH,IAFtB,IAE6BonF,IAAI,GAAGA,IAAH,GAAU,EAF3C,6BAGY5/E,kCAAS,CAACE,cAHtB,SAG2CtD,gCAAO,CAACrD,IAHnD,QAG6DyG,kCAAS,CAACzG,IAHvE,SAGkFwY,IAHlF;AAII,WAAK,EAAOwtD,WAAK,CAAChmE,IAAb,SAAuBgmE,WAAK,CAAChmE,IAA7B,SAAuCwY,IAJhD;AAKI,cAAQ,EAAC;AALb,QAMI;AACI,WAAK,qBADT;AAEI,SAAG,iCAAiCijC,0CAAY,CAAC8vC,IAAI,CAAChzE,QAAL,EAAD,CAFpD;AAGI,SAAG,EAAGC;AAHV,MANJ,CADJ;AAaH,GAhBM,CAAP;AAiBH;;AAED,SAASgzE,kBAAT,QAC+G;AAAA,MADjF/E,KACiF,SADjFA,KACiF;AAAA,MAD1EP,YAC0E,SAD1EA,YAC0E;AAAA,MAD5DG,IAC4D,SAD5DA,IAC4D;AAAA,MADtDxF,MACsD,SADtDA,MACsD;;AAE3G,MAAI,CAACqF,YAAL,EAAmB;AACf;AACH;;AAED,SAAO;AAAK,SAAK,OAAOlgB,WAAK,CAAC1mE;AAAvB,KAA2CgsF,WAAW,CAAC;AAAE7E,SAAK,EAALA,KAAF;AAASJ,QAAI,EAAJA,IAAT;AAAexF,UAAM,EAANA;AAAf,GAAD,CAAtD,CAAP;AACH;;AAED,SAAS4K,+BAAT,CAAyC5pE,IAAzC,EAA6D;AACzD,MAAMuF,SAAS,GAAO4+C,WAAK,CAACqhB,IAAb,SAAuBrhB,WAAK,CAACyhB,oBAA5C;AACA,SAAO;AAAM,SAAK,EAAGrgE,SAAd;AAA0B,YAAQ,EAAC;AAAnC,KAAyCvF,IAAzC,CAAP;AACH;;AAED,SAAS6pE,2BAAT,SAA4G;AAAA,MAArEC,sBAAqE,UAArEA,sBAAqE;AAAA,MAA7C1F,QAA6C,UAA7CA,QAA6C;AAAA,MAAnC2F,gBAAmC,UAAnCA,gBAAmC;;AACxG,MAAIr4D,KAAJ,EAAc,EAEb;;AAED,MAAI,CAAC0yD,QAAL,EAAe;AACX;AACH;;AAED,MAAI,CAAC2F,gBAAL,EAAuB;AACnB;AACH;;AAED,MAAMC,SAAS,GAAG,GAAlB;AACA,MAAMC,cAAc,GAAG,CAAvB;AACA,MAAMC,wBAAwB,GAAG,CAAjC;AACA,MAAMC,KAAK,GAAG,CAAd;AAEA,MAAMC,UAAU,wDAAhB;AAKA,MAAMC,QAAQ,0DAAd;AAKA,MAAMl+D,MAAM,qEAAZ;AAKA,MAAMD,OAAO,oEAAb;AAKA,MAAMy5D,SAAS,GAAG,YAAlB;AACA,MAAM2E,aAAa,SAAQnmB,WAAK,CAACt/D,MAAd,SAA0BD,kCAAS,CAACE,cAApC,SAAwDtD,gCAAO,CAACzD,MAAhE,MAAnB;AAEA,MAAMwsF,WAAW,GAAOD,aAAP,UAA2BnmB,WAAK,CAACshB,IAAjC,SAA2CthB,WAAK,CAACshB,IAAjD,SAA2DjkF,gCAAO,CAACzD,MAApF;AACA,MAAMysF,WAAW,GAAOF,aAAP,UAA2BnmB,WAAK,CAACqhB,IAAjC,gCAAjB;AACA,MAAMI,oBAAoB,GAAO0E,aAAP,2BAA1B;AAEA,SACI;AAAO,aAAS,uBAETE,WAFS,UAES5E,oBAFT,4BAGLz5D,MAHK,uCAMTw5D,SANS,SAMM6E,WANN,cAM4BrmB,WAAK,CAACh4C,MANlC,6BAOLD,OAPK,0BAQLk+D,UARK,+CASgBH,cAThB,UASqCE,KATrC,qFAY0BH,SAZ1B,+BAaLrE,SAbK,SAaUC,oBAbV,gCAcDz5D,MAdC,6FAkB0B69D,SAlB1B,+BAmBLrE,SAnBK,SAmBU4E,WAnBV,4CAoBUT,sBAAsB,2BAA0BI,wBAA1B,UAAyDC,KAAzD,wBApBhC,iDAuBLxE,SAvBK,SAuBU6E,WAvBV,cAuBgCrmB,WAAK,CAACh4C,MAvBtC,iCAwBDi+D,UAxBC,8BAyBDl+D,OAzBC,0CA0BU49D,sBAAsB,0BAAyBI,wBAAzB,UAAwDC,KAAxD,iCAA2FF,cAA3F,UAAgHE,KAAhH,eA1BhC,iDA6BLxE,SA7BK,SA6BUC,oBA7BV,gCA8BDwE,UA9BC,8BA+BDl+D,OA/BC,mEAgCoCg+D,wBAhCpC,UAgCmEC,KAhCnE,kHAqCAC,UArCA,mCAsCEC,QAtCF,+FA0CAA,QA1CA,iCA2CAD,UA3CA,kCA4CCA,UA5CD,mCA6CEC,QA7CF,8FAiDAD,UAjDA,kCAkDCA,UAlDD,mCAmDEC,QAnDF,sGAuDAD,UAvDA,kCAwDCC,QAxDD,kCAyDCA,QAzDD,mCA0DED,UA1DF;AAAhB,IADJ;AA+DH;;AAED,SAASK,aAAT,CAAuBzqE,IAAvB,UACyS;AAAA,MADjQwiE,KACiQ,UADjQA,KACiQ;AAAA,MAD1PnwD,MAC0P,UAD1PA,MAC0P;AAAA,MADlPoyD,KACkP,UADlPA,KACkP;AAAA,MAD3OL,QAC2O,UAD3OA,QAC2O;AAAA,MADjO5T,SACiO,UADjOA,SACiO;AAAA,MADtNuO,OACsN,UADtNA,OACsN;AAAA,MAD7M5sD,GAC6M,UAD7MA,GAC6M;AAAA,MADxMyyD,MACwM,UADxMA,KACwM;AAAA,MADjM8F,cACiM,UADjMA,cACiM;AAAA,MADjL1L,MACiL,UADjLA,MACiL;AAAA,MADzKwF,IACyK,UADzKA,IACyK;;AAErS,MAAMv1D,QAAO,GAAGk6D,gBAAgB,CAAC92D,MAAD,CAAhC;;AAEA,SAAO25C,SAAS,CAAChsD,IAAD,EAAO;AAEnBA,QAFmB,gBAEdvH,KAFc,EAEgB;AAC/B,UAAM8M,SAAS,QAAO4+C,WAAK,CAACqhB,IAA5B;AACA,aAAO;AAAM,aAAK,EAAGjgE,SAAd;AAA0B,gBAAQ;AAAlC,SAAqC9M,KAArC,CAAP;AACH,KALkB;AAOnBixE,QAPmB,gBAOd/yE,IAPc,EAOgB;AAE/B,UAAI,CAACytE,QAAL,EAAe;AACX;AACH;;AAED,UAAI,CAAC5T,SAAL,EAAgB;AACZ,cAAM,IAAIt3D,KAAJ,6CAAN;AACH;;AAED,UAAMwwE,IAAI,GAAI,OAAO/W,YAAY,CAACh8D,IAAD,CAAnB,KAA8B,UAA/B,GACPg8D,YAAY,CAACh8D,IAAD,CAAZ,CAAmB;AAAE6rE,aAAK,EAALA,KAAF;AAASnwD,cAAM,EAANA,MAAT;AAAiBoyD,aAAK,EAALA,KAAjB;AAAwBL,gBAAQ,EAARA,QAAxB;AAAkC5T,iBAAS,EAATA,SAAlC;AAA6CuO,eAAO,EAAPA,OAA7C;AAAsD5sD,WAAG,EAAHA,GAAtD;AAA2DyyD,aAAK,EAALA;AAA3D,OAAnB,CADO,GAEPjS,YAAY,CAACh8D,IAAD,CAAZ,CAAmB65D,SAAnB,KAAiCmC,YAAY,CAACh8D,IAAD,CAAZ,CAAmB5W,0CAAiB,CAACC,GAArC,CAFvC;AAIA,aACI;AACI,aAAK,EAAOmkE,WAAK,CAACshB,IAAb,SAAuBthB,WAAK,CAACshB,IAA7B,SAAuC9uE,IAAvC,SAAiDwtD,WAAK,CAACshB,IAAvD,SAAiEhB,KAD1E;AAEI,WAAG,iCAAiC7qC,0CAAY,CAAC8vC,IAAI,CAAChzE,QAAL,EAAD,CAFpD;AAGI,WAAG,EAAGC;AAHV,QADJ;AAMH,KA3BkB;AA6BnBsY,WA7BmB,mBA6BXtY,IA7BW,EA6BkB;AACjC,UAAIg0E,aAAJ;;AADiC,uCAGfh0E,IAAI,CAAC4G,KAAL,CAAW,GAAX,CAHe,oCAGE;AAA9B,YAAMxC,GAAG,oBAAT;;AACD,YAAIkU,QAAO,CAAClU,GAAD,CAAX,EAAkB;AACd4vE,uBAAa,GAAG17D,QAAO,CAAClU,GAAD,CAAvB;AACA;AACH;AACJ;;AAED,UAAM2E,KAAK,GAAG,eAAd;AACAirE,mBAAa,GAAGA,aAAa,IAAIA,aAAa,CAAClvE,OAAd,CAAsBiE,KAAtB,EAA6B,UAACI,KAAD,EAAQ8qE,eAAR,EAA4B;AACtF,YAAI9qE,KAAK,IAAI8qE,eAAb,EAA8B;AAC1B,iBAAOF,cAAc,IAAIA,cAAc,CAACE,eAAD,CAAvC;AACH;AACJ,OAJgC,CAAjC;;AAOA,UAAI,CAACD,aAAD,IAAkBx4D,GAAG,KAAK7uB,4BAAG,CAACK,IAAlC,EAAwC;AACpC,cAAM,IAAIuV,KAAJ,6BAAqCvC,IAArC,aAAmD0b,MAAM,CAACE,IAA1D,SAAoEF,MAAM,CAACC,OAA3E,CAAN;AACH;;AAED,aAAOm4D,aAAa,CAACE,aAAa,IAAI,EAAlB,EAAsB;AAAEnI,aAAK,EAALA,KAAF;AAASnwD,cAAM,EAANA,MAAT;AAAiBoyD,aAAK,EAALA,KAAjB;AAAwBL,gBAAQ,EAARA,QAAxB;AAAkC5T,iBAAS,EAATA,SAAlC;AAA6CuO,eAAO,EAAPA,OAA7C;AAAsD5sD,WAAG,EAAHA,GAAtD;AAA2DyyD,aAAK,EAALA;AAA3D,OAAtB,CAApB;AACH,KApDkB;AAsDnBA,SAtDmB,mBAsDmB;AAClC,UAAI,CAAC7F,OAAL,EAAc;AACV,cAAM,IAAI7lE,KAAJ,gDAAN;AACH;;AAED,aAAOuwE,WAAW,CAAC;AAAE7E,aAAK,EAALA,MAAF;AAAS5F,cAAM,EAANA,MAAT;AAAiBwF,YAAI,EAAJA;AAAjB,OAAD,CAAlB;AACH,KA5DkB;AA8DnBqG,aA9DmB,uBA8DO;AACtB,aAAO;AAAM,aAAK,EAAG1mB,WAAK,CAACuhB;AAApB,QAAP;AACH,KAhEkB;AAkEnBxZ,SAlEmB,kBAkEbzzD,KAlEa,EAkEiB;AAChC,UAAM8M,SAAS,QAAO4+C,WAAK,CAACqhB,IAA5B;AACA,aAAO;AAAM,aAAK,EAAGjgE;AAAd,SAA4B9M,KAAK,CAAC8E,KAAN,CAAY,MAAZ,EAAoB,CAApB,CAA5B,EAAoD,qBAApD,EAA4D9E,KAAK,CAAC8E,KAAN,CAAY,MAAZ,EAAoB,CAApB,CAA5D,CAAP;AACH;AArEkB,GAAP,CAAhB;AAuEH;;AAED,SAASutE,mBAAT,SAA4H;AAAA,MAA7FC,WAA6F,UAA7FA,WAA6F;AAAA,MAAhFjB,sBAAgF,UAAhFA,sBAAgF;AAAA,MAAxDhD,UAAwD,UAAxDA,UAAwD;AAAA,MAA5C1C,QAA4C,UAA5CA,QAA4C;AAAA,MAAlC2F,gBAAkC,UAAlCA,gBAAkC;AACxH,SACI;AAAK,SAAK,OAAO5lB,WAAK,CAACrmE;AAAvB,KAEM+rF,2BAA2B,CAAC;AAAEC,0BAAsB,EAAtBA,sBAAF;AAA0B1F,YAAQ,EAARA,QAA1B;AAAoC2F,oBAAgB,EAAhBA;AAApC,GAAD,CAFjC,EAGMgB,WAHN,EAIMjB,sBAJN,EAMQhD,UAAU,IAAID,MAAM,CAACC,UAAD,CAN5B,CADJ;AAWH;;AAED,SAASkE,YAAT,SACkb;AAAA;;AAAA,MAD1ZxG,IAC0Z,UAD1ZA,IAC0Z;AAAA,MADpZhC,KACoZ,UADpZA,KACoZ;AAAA,MAD7YiC,KAC6Y,UAD7YA,KAC6Y;AAAA,MADtYpyD,MACsY,UADtYA,MACsY;AAAA,MAD9X+xD,QAC8X,UAD9XA,QAC8X;AAAA,MADpXO,QACoX,UADpXA,QACoX;AAAA,MAD1W3F,MAC0W,UAD1WA,MAC0W;AAAA,MADlW0F,KACkW,UADlWA,KACkW;AAAA,MAD3VxoE,MAC2V,UAD3VA,MAC2V;AAAA,MADnV6iE,OACmV,UADnVA,OACmV;AAAA,MAD1UoF,OAC0U,UAD1UA,OAC0U;AAAA,MADjUzqE,CACiU,UADjUA,CACiU;AAAA,MAD9TyY,GAC8T,UAD9TA,GAC8T;AAAA,MADzTyyD,KACyT,UADzTA,KACyT;AAAA,MADlTlC,iBACkT,UADlTA,iBACkT;AAAA,MAD/R6B,qBAC+R,UAD/RA,qBAC+R;AAE9a,MAAM/T,SAAS,GAAGsT,eAAe,CAACtB,KAAD,EAAQ,YAAR,CAAf,CAAqCiC,KAArC,CAAlB;AAEA,MAAM8E,WAAW,GAAGH,cAAc,CAAC;AAAE5G,SAAK,EAALA,KAAF;AAAStmE,UAAM,EAANA,MAAT;AAAiByoE,YAAQ,EAARA,QAAjB;AAA2B3F,UAAM,EAANA;AAA3B,GAAD,CAAlC,CAJ8a,CAM9a;AACA;;AACA,MAAI+L,WAAJ;AACA,MAAIjE,UAAJ;AACA,MAAMmE,QAAQ,GAAG1G,qBAAqB,IAAIA,qBAAqB,CAAC2G,UAA/C,IAA6D3G,qBAAqB,CAAC2G,UAAtB,CAAiClrE,IAA/G;AACA,MAAI8pE,sBAAJ;AACA,MAAIC,gBAAJ;;AACA,MAAIf,4BAA4B,CAAC7xE,OAA7B,CAAqCqrE,KAArC,MAAgD,CAAC,CAArD,EAAwD;AACpDuH,oBAAgB,GAAG,IAAnB;AACH;;AAED,MAAIR,WAAW,KAAK/G,KAAhB,IAAyBA,KAAK,KAAK1kF,qCAAY,CAACM,MAAhD,IAA0D,CAACgmF,QAA/D,EAAyE;AACrE2G,eAAW,GAAGjH,eAAe,CAACtB,KAAD,EAAQ,OAAR,CAA7B;AACH,GAFD,MAEO,IAAI+G,WAAW,KAAK/G,KAAhB,IAAyB,CAAC2I,IAA9B,EAAuC;AAC1C,QAAInC,4BAA4B,CAAC7xE,OAA7B,CAAqCqrE,KAArC,MAAgD,CAAC,CAAjD,IAAsDyI,QAAtD,IAAkE7G,QAAlE,IAA8E,CAACD,OAAnF,EAA4F;AACxF2F,4BAAsB,GAAGF,+BAA+B,CAACqB,QAAD,CAAxD;AACAnE,gBAAU,GAAGvC,qBAAqB,IAAIA,qBAAqB,CAAC2G,UAA/C,IAA6D3G,qBAAqB,CAAC2G,UAAtB,CAAiCjvD,QAA9F,IAA0GsoD,qBAAqB,CAAC2G,UAAtB,CAAiCjvD,QAAjC,CAA0C6qD,UAAjK;AACH;;AACDiE,eAAW,GAAGjH,eAAe,CAACtB,KAAD,EAAQ,OAAR,CAA7B;AACH,GANM,MAMA;AACHuI,eAAW,GAAGjH,eAAe,CAACtB,KAAD,EAAQ,WAAR,CAA7B;AACH,GA3B6a,CA6B9a;;;AACA,MAAMkI,cAAc,GAAG;AACnBhI,qBAAiB,EAAjBA,iBADmB;AAEnBrwD,UAAM,EAANA;AAFmB,GAAvB;AAKA04D,aAAW,GAAI,OAAOA,WAAP,KAAuB,UAAxB,GAAsCA,WAAW,CAACL,cAAD,CAAjD,GAAoEK,WAAlF;AACAA,aAAW,GAAGN,aAAa,CAACM,WAAD,EAAc;AAAEvI,SAAK,EAALA,KAAF;AAASnwD,UAAM,EAANA,MAAT;AAAiBoyD,SAAK,EAALA,KAAjB;AAAwBL,YAAQ,EAARA,QAAxB;AAAkC5T,aAAS,EAATA,SAAlC;AAA6CuO,WAAO,EAAPA,OAA7C;AAAsD5sD,OAAG,EAAHA,GAAtD;AAA2DyyD,SAAK,EAALA,KAA3D;AAAkE8F,kBAAc,EAAdA,cAAlE;AAAkF1L,UAAM,EAANA,MAAlF;AAA0FwF,QAAI,EAAJA;AAA1F,GAAd,CAA3B,CApC8a,CAsC9a;;AACA,MAAM4G,WAAW,GAAG,CAChB5pF,gCAAO,CAACrD,IADQ,EAElBgZ,OAFkB,CAEV+E,MAFU,MAEE,CAAC,CAFvB;AAIA,SACI,iFACYtX,kCAAS,CAACrH,MADtB,IAC+ByhF,MAAM,GAAGA,MAAH,GAAY,EADjD,gCAEYp6E,kCAAS,CAACxH,IAFtB,IAE6BonF,IAAI,GAAGA,IAAH,GAAU,EAF3C,gCAGa5/E,kCAAS,CAACE,cAHvB,IAGyCoX,MAHzC,SAGmDtX,kCAAS,CAACC,MAH7D,IAGuE,IAHvE;AAII,SAAK,EAAOs/D,WAAK,CAACt/D,MAAb,SAAyBs/D,WAAK,CAACv8B,MAA/B,SAA2CluB,CAA3C,SAAkDuvE,sBAAsB,CAAC;AAAEjK,YAAM,EAANA,MAAF;AAAU0F,WAAK,EAALA,KAAV;AAAiBN,cAAQ,EAARA,QAAjB;AAA2BO,cAAQ,EAARA,QAA3B;AAAqCxyD,SAAG,EAAHA;AAArC,KAAD,CAAxE,SAA0H+2D,gBAAgB,CAAC;AAAE1G,WAAK,EAALA,KAAF;AAASiC,WAAK,EAALA,KAAT;AAAgBjU,eAAS,EAATA;AAAhB,KAAD,CAJnJ;AAKI,QAAI,EAAC,QALT;AAMI,kBAAat0D,MANjB;AAOI,YAAQ,EAAGkvE,WAAW,IAAI;AAP9B,MAQMlvE,MAAM,KAAK1a,gCAAO,CAACrD,IAAnB,GAA0B4sF,WAA1B,GAAwCD,mBAAmB,CAAC;AAAEC,eAAW,EAAXA,WAAF;AAAejB,0BAAsB,EAAtBA,sBAAf;AAAuChD,cAAU,EAAVA,UAAvC;AAAmD1C,YAAQ,EAARA,QAAnD;AAA6D2F,oBAAgB,EAAhBA;AAA7D,GAAD,CARjE,CADJ;AAYH;;AAED,SAASsB,aAAT,SAAyW;AAAA,MAAhV7I,KAAgV,UAAhVA,KAAgV;AAAA,MAAzU2B,OAAyU,UAAzUA,OAAyU;AAAA,MAAhUM,KAAgU,UAAhUA,KAAgU;AAAA,MAAzTpyD,MAAyT,UAAzTA,MAAyT;AAAA,MAAjTsyD,QAAiT,UAAjTA,QAAiT;AAAA,MAAvSxyD,GAAuS,UAAvSA,GAAuS;AAAA,MAAlSyyD,KAAkS,UAAlSA,KAAkS;AAAA,MAA3RL,qBAA2R,UAA3RA,qBAA2R;AAAA,MAApQvF,MAAoQ,UAApQA,MAAoQ;;AACrW,MAAI,CAACmF,OAAL,EAAc;AACV;AACH;;AAGD,MAAIgH,KAAO,IAAInM,MAAM,KAAKj+E,sCAAa,CAACE,QAAxC,EAAkD;AAC9C,WAD8C,CAE9C;AACH;;AAGD,MAAMyjB,GAAG,GAAGigE,QAAQ,GACbb,eAAe,CAACtB,KAAD,EAAQ,SAAR,CAAf,IAAqCsB,eAAe,CAACtB,KAAD,EAAQ,KAAR,CADvC,GAEdsB,eAAe,CAACtB,KAAD,EAAQ,KAAR,CAFrB;AAGA,MAAMxiE,IAAI,GAAGukE,qBAAqB,IAAIA,qBAAqB,CAACJ,OAA/C,IAA0DI,qBAAqB,CAACJ,OAAtB,CAA8BnkE,IAAxF,GAA+FukE,qBAAqB,CAACJ,OAAtB,CAA8BnkE,IAA7H,GAAoIyqE,aAAa,CAAC/lE,GAAD,EAAM;AAAE2N,UAAM,EAANA,MAAF;AAAUoyD,SAAK,EAALA,KAAV;AAAiBtyD,OAAG,EAAHA,GAAjB;AAAsByyD,SAAK,EAALA;AAAtB,GAAN,CAA9J;AACA,MAAMkC,UAAU,GAAGvC,qBAAqB,IAAIA,qBAAqB,CAACJ,OAA/C,IAA0DI,qBAAqB,CAACJ,OAAtB,CAA8BloD,QAAxF,IAAoGsoD,qBAAqB,CAACJ,OAAtB,CAA8BloD,QAA9B,CAAuC6qD,UAA9J;;AAEA,MAAI,CAAC9mE,IAAL,EAAW;AACP;AACH;;AAED,MAAMgnE,QAAQ,GAAGlD,eAAe,CAACtB,KAAD,EAAQ,eAAR,CAAf,CAAwCiC,KAAxC,CAAjB;AAEA,SAAOsC,OAAO,CAACC,QAAD,EAAWF,UAAX,EAAuB9mE,IAAvB,CAAd;AACH;;AAED,SAASsrE,YAAT,GAAsC;AAElC,MAAI18D,MAAM,GAAGq4D,kBAAkB,GAAGvwE,QAArB,EAAb;AAEAkY,QAAM,GAAGA,MAAM,CAACnT,OAAP,CAAe,gCAAf,EAAiD,UAACqE,KAAD,EAAQnJ,IAAR,EAAiB;AACvE,WAAOwtD,WAAK,CAACxtD,IAAD,CAAZ;AACH,GAFQ,CAAT;AAIA,SACI;AAAQ,aAAS,QAAQiY,MAAR;AAAjB,IADJ;AAGH;;AAED,SAAS28D,WAAT,SAAyG;AAAA,MAAlFnjE,MAAkF,UAAlFA,MAAkF;AAAA,MAA1Eg+D,UAA0E,UAA1EA,UAA0E;AACrG,SACI;AAAO,aAAS,EAAGO,cAAc,CAAC;AAAEv+D,YAAM,EAANA,MAAF;AAAUg+D,gBAAU,EAAVA;AAAV,KAAD;AAAjC,IADJ;AAGH;;AAED,SAASoF,uBAAT,CAAiClkE,KAAjC,EAAoD;AAEhD,MAAI,CAACA,KAAL,EAAY;AACR,WAAO,IAAP;AACH;;AAJ+C,MAMxC03D,MANwC,GAMf13D,KANe,CAMxC03D,MANwC;AAAA,uBAMf13D,KANe,CAMhC+jD,OANgC;AAAA,MAMhCA,OANgC,+BAMtB,EANsB;;AAQhD,MAAI,EAAE2T,MAAM,KAAKj+E,sCAAa,CAACE,QAA3B,CAAJ,EAA0C;AACtC,WAAO,IAAP;AACH;;AAED,MAAMwqF,gBAAgB,GAAGpgB,OAAO,CAACl0D,OAAR,CAAgB3V,gCAAO,CAACrD,IAAxB,MAAkC,CAAC,CAA5D;;AAEA,MAAIstF,gBAAJ,EAAsB;AAClB,WAAO,IAAP;AACH;;AAED,SACI;AACI,SAAK,EAAC,mBADV;AAEI,SAAK;AAFT,KAgBMhB,aAAa,CAAC,wBAAD,6CAAgCnjE,KAAhC;AAAuCkpD,aAAS,EAAE;AAAlD,KAhBnB,CADJ;AAoBH;;AAEM,SAASL,mCAAT,SAAoE;AAAA;;AAAA,MAAvC7oD,KAAuC,UAAvCA,KAAuC;;AACvE,MAAIA,KAAK,IAAIA,KAAK,CAAC9E,KAAnB,EAA0B;AACtB,QAAMA,KAAK,GAAG8E,KAAK,CAAC9E,KAApB;;AAEA,QAAIA,KAAK,CAACggE,KAAN,KAAgB,SAApB,EAA+B;AAC3BhgE,WAAK,CAACggE,KAAN,GAAc,QAAd;AACH;;AAED,QAAIhgE,KAAK,CAACiiE,KAAN,KAAgB,YAApB,EAAkC;AAC9B,aAAOjiE,KAAK,CAACiiE,KAAb;AACH;;AAED,QAAIjiE,KAAK,CAACyiE,UAAN,KAAqB,CAArB,IAA0BziE,KAAK,CAAC2hE,OAAN,KAAkB,KAA5C,IACA3hE,KAAK,CAACgiE,IAAN,KAAe,YADf,IAC+BhiE,KAAK,CAACw8D,MAAN,KAAiB,YADhD,IAEA,CAACx8D,KAAK,CAAC4F,MAFX,EAEmB;AAEf5F,WAAK,CAAC4F,MAAN,GAAe,EAAf;AACH;AACJ;;AAEDg9D,qBAAmB,CAAC99D,KAAD,CAAnB;;AApBuE,wBAwBkB44C,oBAAc,CAAC54C,KAAD,CAxBhC;AAAA,MAsB/Dk7D,KAtB+D,mBAsB/DA,KAtB+D;AAAA,MAsBxDnwD,MAtBwD,mBAsBxDA,MAtBwD;AAAA,MAsBhDoyD,KAtBgD,mBAsBhDA,KAtBgD;AAAA,MAsBzCC,KAtByC,mBAsBzCA,KAtByC;AAAA,MAsBlCN,QAtBkC,mBAsBlCA,QAtBkC;AAAA,MAuBnED,OAvBmE,mBAuBnEA,OAvBmE;AAAA,MAuB1DpF,OAvB0D,mBAuB1DA,OAvB0D;AAAA,MAuBjDC,MAvBiD,mBAuBjDA,MAvBiD;AAAA,MAuBzC3T,OAvByC,mBAuBzCA,OAvByC;AAAA,MAuBhCsZ,QAvBgC,mBAuBhCA,QAvBgC;AAAA,MAwBnExyD,GAxBmE,mBAwBnEA,GAxBmE;AAAA,MAwB9D/J,MAxB8D,mBAwB9DA,MAxB8D;AAAA,MAwBtDw8D,KAxBsD,mBAwBtDA,KAxBsD;AAAA,MAwB/ClC,iBAxB+C,mBAwB/CA,iBAxB+C;AAAA,MAwB5B2B,YAxB4B,mBAwB5BA,YAxB4B;AAAA,MAwBdG,IAxBc,mBAwBdA,IAxBc;AAAA,MAwBRD,qBAxBQ,mBAwBRA,qBAxBQ;;AA0BvE,MAAMmH,WAAW,GAAGpC,gBAAgB,CAAC;AAAE9G,SAAK,EAALA,KAAF;AAASiC,SAAK,EAALA,KAAT;AAAgBpZ,WAAO,EAAPA,OAAhB;AAAyBsZ,YAAQ,EAARA,QAAzB;AAAmC3F,UAAM,EAANA;AAAnC,GAAD,CAAhB,CACflkE,GADe,CACX,UAAC4Z,MAAD,EAAShb,CAAT;AAAA,WAAesxE,YAAY,CAAC;AAC7BxI,WAAK,EAAI9tD,MAAM,CAAC8tD,KADa;AAE7BiC,WAAK,EAAI/vD,MAAM,CAAC+vD,KAFa;AAG7BvoE,YAAM,EAAGwY,MAAM,CAACxY,MAHa;AAI7BiW,SAAG,EAAHA,GAJ6B;AAK7BzY,OAAC,EAADA,CAL6B;AAM7BqlE,aAAO,EAAPA,OAN6B;AAO7B4F,cAAQ,EAARA,QAP6B;AAQ7BtyD,YAAM,EAANA,MAR6B;AAS7B+xD,cAAQ,EAARA,QAT6B;AAU7BD,aAAO,EAAPA,OAV6B;AAW7BnF,YAAM,EAANA,MAX6B;AAY7B0F,WAAK,EAALA,KAZ6B;AAa7BE,WAAK,EAALA,KAb6B;AAc7BlC,uBAAiB,EAAjBA,iBAd6B;AAe7B8B,UAAI,EAAJA,IAf6B;AAgB7BD,2BAAqB,EAArBA;AAhB6B,KAAD,CAA3B;AAAA,GADW,CAApB;AAoBA,MAAMoH,WAAW,GAAON,aAAa,CAAC;AAAE7I,SAAK,EAALA,KAAF;AAAS2B,WAAO,EAAPA,OAAT;AAAkBM,SAAK,EAALA,KAAlB;AAAyBpyD,UAAM,EAANA,MAAzB;AAAiCsyD,YAAQ,EAARA,QAAjC;AAA2CxyD,OAAG,EAAHA,GAA3C;AAAgDyyD,SAAK,EAALA,KAAhD;AAAuDL,yBAAqB,EAArBA,qBAAvD;AAA8EvF,UAAM,EAANA;AAA9E,GAAD,CAArC;AACA,MAAM4M,eAAe,GAAGjC,kBAAkB,CAAC;AAAE/E,SAAK,EAALA,KAAF;AAASP,gBAAY,EAAZA,YAAT;AAAuBG,QAAI,EAAJA,IAAvB;AAA6BxF,UAAM,EAANA;AAA7B,GAAD,CAA1C;AAEA,MAAM6M,SAAS,GAAIN,WAAW,CAAC;AAAEnjE,UAAM,EAANA,MAAF;AAAUg+D,cAAU,EAAExB,KAAK,CAACptE;AAA5B,GAAD,CAA9B;AACA,MAAMs0E,UAAU,GAAGR,YAAY,EAA/B;AACA,MAAMS,kBAAkB,GAAGnH,KAAK,CAACptE,MAAN,GAAe,CAAf,GAAmBg0E,uBAAuB,CAACtrB,oBAAc,CAAC54C,KAAD,CAAf,CAA1C,GAAoE,IAA/F;AAEA,SACI,iFAAc1iB,kCAAS,CAACG,OAAxB,IAAmCktB,SAAnC;AAA6E,SAAK,EAAOkyC,WAAK,CAACmhB,SAAb,SAA4B2D,sBAAsB,CAAC;AAAEjK,YAAM,EAANA,MAAF;AAAU0F,WAAK,EAALA,KAAV;AAAiBN,cAAQ,EAARA,QAAjB;AAA2BO,cAAQ,EAARA,QAA3B;AAAqCxyD,SAAG,EAAHA;AAArC,KAAD;AAApI,MACM05D,SADN,EAGMH,WAHN,EAIMC,WAAW,IAAIC,eAJrB,EAMMG,kBANN,EAQMD,UARN,CADG,CAWLp1E,QAXK,EAAP;AAYH,C;;AChhBD;AAEA;AACA;AACA;CAGA;;AAaO,SAAS8tD,4CAAT,OAAwH;AAAA,MAA3F1hD,EAA2F,QAA3FA,EAA2F;AAAA,MAAvFwE,KAAuF,QAAvFA,KAAuF;AAAA,MAAhF68C,KAAgF,QAAhFA,KAAgF;AAAA,MAAzEz/C,GAAyE,QAAzEA,GAAyE;AAAA,MAApExJ,OAAoE,QAApEA,OAAoE;AAAA,MAA3D4lD,MAA2D,QAA3DA,MAA2D;AAAA,MAAnD9xC,MAAmD,QAAnDA,MAAmD;;AAAA,wBAErEkxC,oBAAc,CAAC54C,KAAD,CAFuD;AAAA,MAEnHk9D,IAFmH,mBAEnHA,IAFmH;AAAA,MAE7GhC,KAF6G,mBAE7GA,KAF6G;AAAA,MAEtGxD,MAFsG,mBAEtGA,MAFsG;AAAA,MAEtFqH,YAFsF,mBAE9Fj+D,MAF8F;;AAI3H,MAAIu5D,WAAW,GAAGmC,eAAe,CAACtB,KAAD,EAASxD,MAAM,KAAKj+E,sCAAa,CAACE,QAA1B,GAAsC,qBAAtC,GAA8D,aAAtE,CAAjC;AACA,MAAI4gF,WAAW,GAAGiC,eAAe,CAACtB,KAAD,EAASxD,MAAM,KAAKj+E,sCAAa,CAACE,QAA1B,GAAsC,qBAAtC,GAA8D,aAAtE,CAAjC;;AAEA,MAAIolF,YAAJ,EAAkB;AACd,QAAM2F,aAAa,GAAG5vE,8BAAM,CAACnc,oCAAD,CAAN,CAAoB4jB,MAApB,CAA2B,UAAAooE,YAAY,EAAI;AAC7D,aAAOhJ,YAAY,CAACgJ,YAAD,CAAZ,IAA8B5F,YAA9B,IACHpD,YAAY,CAACgJ,YAAD,CAAZ,CAA2B3I,SAA3B,IAAwC+C,YADrC,IACqDpD,YAAY,CAACgJ,YAAD,CAAZ,CAA2B1I,SAA3B,IAAwC8C,YADpG;AAEH,KAHqB,CAAtB;AAKA2F,iBAAa,CAACx9C,IAAd,CAAmB,UAAC09C,KAAD,EAAiBC,KAAjB,EAA6C;AAC5D,aAAOlJ,YAAY,CAACiJ,KAAD,CAAZ,CAAoBhJ,YAApB,GAAmCD,YAAY,CAACkJ,KAAD,CAAZ,CAAoBjJ,YAA9D;AACH,KAFD;AAIAvB,eAAW,GAAGqK,aAAa,CAAC,CAAD,CAA3B;AACAnK,eAAW,GAAGmK,aAAa,CAACA,aAAa,CAACx0E,MAAd,GAAuB,CAAxB,CAA3B;AACH;;AAnB0H,cAqBnFyrE,YAAY,CAACuB,IAAD,CAAZ,IAAsBvB,YAAY,CAAChjF,oCAAW,CAACE,KAAb,CArBiD;AAAA,MAqBnH+iF,YArBmH,SAqBnHA,YArBmH;AAAA,MAqBrGC,aArBqG,SAqBrGA,aArBqG;;AAuB3H9rE,YAAU,CAAC,YAAM;AACbypD,UAAM,CAACt+C,KAAP,CAAaud,UAAb,GAA0B,2BAA1B;AACH,GAFS,EAEP,IAFO,CAAV;AAIA,SACI;AAAK,MAAE,EAAGjd,EAAV;AAAe,SAAK,EAAO4B,GAAP,SAAgBA,GAAhB,iBAAiCxJ,OAAjC,SAA8CwJ,GAA9C,eAA6D89D,KAA7D,SAAwE99D,GAAxE,cAAsF8/D,IAAtF,SAAgG9/D,GAAhG,gBAAgHs6D;AAApI,KACI,kDAEYl8D,EAFZ,uKAM0BmgE,YAAY,CAACtB,WAAD,CAAZ,CAA0ByB,QANpD,2DASYtgE,EATZ,SASoB4B,GATpB,cASkCzkB,oCAAW,CAACM,UAT9C,uGAaYuiB,EAbZ,YAauBqhD,KAAK,CAAC37B,MAb7B,+FAe0By6C,YAAY,CAACtB,WAAD,CAAZ,CAA0ByB,QAfpD,gDAgB0BH,YAAY,CAACpB,WAAD,CAAZ,CAA0BwB,QAhBpD,wGAoBYvgE,EApBZ,SAoBoB4B,GApBpB,gBAoBoC3jB,sCAAa,CAACE,QApBlD,YAoBmEkjE,KAAK,CAAC37B,MApBzE,+CAqB0By6C,YAAY,CAACtB,WAAD,CAAZ,CAA0ByB,QArBpD,2DAwBYtgE,EAxBZ,YAwBuBqhD,KAAK,CAAC37B,MAxB7B,4CAyBuB06C,YAzBvB,6CA0BuBC,aA1BvB,4DA6BargE,EA7Bb,SA6BqB4B,GA7BrB,cA6BmCzkB,oCAAW,CAACM,UA7B/C,YA6BkE4jE,KAAK,CAAC37B,MA7BxE,gGAiCY1lB,EAjCZ,YAiCuBqhD,KAAK,CAAC37B,MAjC7B,wIAoCsBy6C,YAAY,CAACtB,WAAD,CAAZ,CAA0ByB,QApChD,kNA2CYtgE,EA3CZ,YA2CuBqhD,KAAK,CAAC37B,MA3C7B,kBA2CkD27B,KAAK,CAAC17B,eA3CxD,iGA+CY3lB,EA/CZ,YA+CuBqhD,KAAK,CAAC37B,MA/C7B,kBA+CkD27B,KAAK,CAACz7B,eA/CxD,0JAoDY5lB,EApDZ,YAoDuBqhD,KAAK,CAAC37B,MApD7B,kBAoDkD27B,KAAK,CAACj4C,OApDxD,+FAwDYpJ,EAxDZ,YAwDuBqhD,KAAK,CAAC37B,MAxD7B,kBAwDkD27B,KAAK,CAACx7B,SAxDxD,qIADJ,EA+DKm4B,MA/DL,CADJ;AAmEH,C;;ACjHD;;;ACCA;AAEA;AACA;AACA;AACA;AAIO,SAASsrB,gBAAT,CAA0BC,eAA1B,EAAoD;AACvDvP,uBAAqB,CAAC7P,kBAAD,EAAWof,eAAX,CAArB;AAEA7tC,0CAAiB,GAAG3nC,IAApB,CAAyB,UAAAy1E,cAAc,EAAI;AAAA;;AAEvC,QAAMvX,cAAc,GAAGj3D,KAAK,CAACzE,SAAN,CAAgB6D,KAAhB,CAAsBtG,IAAtB,CAA2BmM,QAAQ,CAACL,gBAAT,OAA+B9d,kCAAS,CAACE,cAAzC,OAA3B,EAAyFgW,GAAzF,CAA6F,UAAA6H,EAAE,EAAI;AACtH,aAAOA,EAAE,CAAC2tC,YAAH,CAAgB1rD,kCAAS,CAACzG,IAA1B,KAAmCwkB,EAAE,CAAC2tC,YAAH,CAAgB1rD,kCAAS,CAACE,cAA1B,CAA1C;AACH,KAFsB,EAEpB+e,MAFoB,CAEb,UAAA3H,MAAM,EAAI;AAChB,aAAOA,MAAM,IAAIA,MAAM,KAAK1a,gCAAO,CAACrD,IAApC;AACH,KAJsB,CAAvB;AAMA,QAAMuoD,MAAM,GAAG2lC,eAAe,CAAC3lC,MAA/B;;AAEA,QAAI,CAACA,MAAL,EAAa;AACT;AACH;;AAZsC,eAsBlCA,MAAM,CAAClkC,KAAP,IAAgB,EAtBkB;AAAA,2BAenCw8D,MAfmC;AAAA,QAenCA,MAfmC,4BAe1Bj+E,sCAAa,CAACC,UAfY;AAAA,0BAgBnCyjF,KAhBmC;AAAA,QAgBnCA,KAhBmC,2BAgB3BllF,qCAAY,CAACC,IAhBc;AAAA,yBAiBnCglF,IAjBmC;AAAA,QAiBnCA,IAjBmC,0BAiB5BvkF,oCAAW,CAACE,KAjBgB;AAAA,0BAkBnCukF,KAlBmC;AAAA,QAkBnCA,KAlBmC,2BAkB3BjkF,qCAAY,CAACC,IAlBc;AAAA,0BAmBnC8hF,KAnBmC;AAAA,QAmBnCA,KAnBmC,2BAmB3B1kF,qCAAY,CAACE,QAnBc;AAAA,QAoBnCinF,UApBmC,QAoBnCA,UApBmC;AAAA,QAqBnCd,OArBmC,QAqBnCA,OArBmC;;AAwBvC9mD,iDAAK,sBACAl4B,6BAAI,CAACC,GAAL,CAASE,KADT,IACkCH,6BAAI,CAACG,KAAL,CAAWT,MAD7C,SAEAM,6BAAI,CAACC,GAAL,CAASG,UAFT,IAEkCJ,6BAAI,CAACI,UAAL,CAAgBoC,WAFlD,SAGAxC,6BAAI,CAACC,GAAL,CAASI,WAHT,IAGkCL,6BAAI,CAACK,WAAL,CAAiB0B,MAHnD,SAIA/B,6BAAI,CAACC,GAAL,CAASoB,YAJT,IAIkCuuE,cAAc,CAAC11D,IAAf,CAAoB,GAApB,CAJlC,SAKAla,6BAAI,CAACC,GAAL,CAASqB,aALT,IAKkCsuE,cAAc,CAACv9D,MALjD,SAMArS,6BAAI,CAACC,GAAL,CAASgB,cANT,IAMkCkmF,cANlC,SAOAnnF,6BAAI,CAACC,GAAL,CAASrE,aAPT,IAOkCi+E,MAPlC,SAQA75E,6BAAI,CAACC,GAAL,CAAS7F,YART,IAQkCklF,KARlC,SASAt/E,6BAAI,CAACC,GAAL,CAASnF,WATT,IASkCukF,IATlC,SAUAr/E,6BAAI,CAACC,GAAL,CAAS3E,YAVT,IAUkCikF,KAVlC,SAWAv/E,6BAAI,CAACC,GAAL,CAAStH,YAXT,IAWkC0kF,KAXlC,SAYAr9E,6BAAI,CAACC,GAAL,CAASuB,YAZT,IAYkC4P,MAAM,CAACwT,UAZzC,SAaA5kB,6BAAI,CAACC,GAAL,CAASwB,WAbT,IAakCq+E,UAblC,SAcA9/E,6BAAI,CAACC,GAAL,CAAS0B,sBAdT,IAckCq9E,OAAO,GAAG,GAAH,GAAS,GAdlD,UAAL;AAiBAtb,iDAAS;AACZ,GA1CD;AA4CA,MAAMniB,MAAM,GAAG2lC,eAAe,CAAC3lC,MAAhB,IAA0BumB,kBAAQ,CAACvmB,MAAlD;;AAEA,MAAIA,MAAM,IAAIA,MAAM,CAAC/1B,QAArB,EAA+B;AAC3BD,eAAW,CAACg2B,MAAM,CAAC/1B,QAAR,CAAX;AACH,GAnDsD,CAqDvD;;;AACA,MAAI+1B,MAAM,CAACgnB,OAAP,IAAkB,CAAChnB,MAAM,CAACkzB,WAA9B,EAA2C;AACvC;AACAlzB,UAAM,CAACkzB,WAAP,GAAqBlzB,MAAM,CAACgnB,OAA5B;AACH,GAzDsD,CA2DvD;;;AACA,MAAIhnB,MAAM,CAACylB,WAAP,IAAsB,CAACzlB,MAAM,CAAC6lC,SAAlC,EAA6C;AACzC;AACA7lC,UAAM,CAAC6lC,SAAP,GAAmB7lC,MAAM,CAACylB,WAA1B;AACH;;AAED,MAAI;AACA,QAAIzlB,MAAM,IAAIA,MAAM,CAAC2uB,gBAAjB,IAAqC9+D,MAAM,CAACi2E,GAA5C,IACAj2E,MAAM,CAACi2E,GAAP,CAAWC,WADX,IAC0Bl2E,MAAM,CAACi2E,GAAP,CAAWC,WAAX,CAAuBzzE,GADjD,IAEAzC,MAAM,CAACi2E,GAAP,CAAWC,WAAX,CAAuBzzE,GAAvB,CAA2B4gB,IAF3B,IAEmCrjB,MAAM,CAACi2E,GAAP,CAAWC,WAAX,CAAuBzzE,GAAvB,CAA2B4gB,IAA3B,CAAgC8yD,UAFvE,EAEmF;AAC/En2E,YAAM,CAACi2E,GAAP,CAAWC,WAAX,CAAuBzzE,GAAvB,CAA2B4gB,IAA3B,CAAgC8yD,UAAhC,GAA6C,EAA7C;AACH;AACJ,GAND,CAME,OAAO51E,GAAP,EAAY,CACV;AACH;AACJ,C;;;;ACrFD;;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAKA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEAohE,IAAI,CAACR,0BAAL;;AAEA,SAASiV,oBAAT,CAA8BrlE,KAA9B,EAA+C;AAAA,wBAEmB44C,oBAAc,CAAC54C,KAAD,EAAQ;AAAE+K,UAAM,EAAEk5B,uCAAgB;AAA1B,GAAR,CAFjC;AAAA,MAEnCi3B,KAFmC,mBAEnCA,KAFmC;AAAA,MAE5BzD,OAF4B,mBAE5BA,OAF4B;AAAA,MAEnBC,MAFmB,mBAEnBA,MAFmB;AAAA,MAEX3sD,MAFW,mBAEXA,MAFW;AAAA,MAEHjC,GAFG,mBAEHA,GAFG;AAAA,MAEEi7C,OAFF,mBAEEA,OAFF;AAAA,MAEWl5C,GAFX,mBAEWA,GAFX;;AAAA,MAGnCktD,OAHmC,GAGvBN,OAHuB,CAGnCM,OAHmC;AAAA,MAInC/sD,OAJmC,GAIvBD,MAJuB,CAInCC,OAJmC;;AAM3C,MAAI+sD,OAAO,IAAIA,OAAO,CAACloE,OAAR,CAAgB3V,gCAAO,CAACtD,MAAxB,MAAoC,CAAC,CAApD,EAAuD;AACnD,WAAO,KAAP;AACH;;AAED,MAAI8gF,MAAM,KAAKj+E,sCAAa,CAACC,UAA7B,EAAyC;AACrC,WAAO,KAAP;AACH;;AAED,MAAIovB,GAAG,KAAK,CAAZ,EAAe;AACX,WAAO,KAAP;AACH;;AAED,MAAIoyD,KAAK,KAAK1kF,qCAAY,CAACI,MAA3B,EAAmC;AAC/B,WAAO,KAAP;AACH;;AAED,MAAIo0B,OAAO,KAAK5pB,gCAAO,CAAC8L,EAAxB,EAA4B;AACxB,WAAO,KAAP;AACH;;AAED,MAAIsqE,mBAAmB,CAACt9E,gCAAO,CAACtD,MAAT,EAAiB;AAAE6gF,WAAO,EAAPA,OAAF;AAAW1sD,UAAM,EAANA,MAAX;AAAmB2sD,UAAM,EAANA,MAAnB;AAA2B7sD,OAAG,EAAHA;AAA3B,GAAjB,CAAvB,EAA2E;AACvE,WAAO,KAAP;AACH;;AAED,MAAIitD,qBAAqB,CAAC59E,gCAAO,CAACtD,MAAT,EAAiB;AAAE6gF,WAAO,EAAPA,OAAF;AAAW1sD,UAAM,EAANA,MAAX;AAAmB2sD,UAAM,EAANA;AAAnB,GAAjB,CAAzB,EAAwE;AACpE,WAAO,KAAP;AACH;;AAED,MAAI3T,OAAO,CAACl0D,OAAR,CAAgB3V,gCAAO,CAACtD,MAAxB,MAAoC,CAAC,CAAzC,EAA4C;AACxC,WAAO,KAAP;AACH;;AAED,MAAMm3B,MAAM,GAAG+L,mDAAS,GAAG3lB,OAAZ,CAAoB,cAApB,EAAoC,EAApC,EAAwCA,OAAxC,CAAgD,QAAhD,EAA0D,EAA1D,CAAf;;AAEA,MAAIoV,wBAAM,CAAC8C,iBAAP,CAAyBxc,OAAzB,CAAiCke,MAAjC,MAA6C,CAAC,CAAlD,EAAqD;AACjD,WAAO,KAAP;AACH;;AAED,SAAO,IAAP;AACH;;AAED,IAAIu3D,cAAJ;AA8BO,IAAMj0B,gBAAiC,GAAGnZ,gBAAM,CAAC;AAEpD96B,KAAG,EAAG,eAF8C;AAGpD/N,MAAI,EAAE,UAH8C;AAKpD8qD,UALoD,oBAK3Cn6C,KAL2C,EAK3B;AACrB,QAAM6K,GAAG,GAAG7K,KAAK,CAAC6K,GAAN,IAAatB,wBAAM,CAACsB,GAAhC;AACA,QAAMzO,GAAG,GAAGmN,wBAAM,CAACyG,UAAP,CAAkBnF,GAAlB,CAAZ;AACA,WAAOzO,GAAP;AACH,GATmD;AAWpDqhD,UAAQ,EAAE;AACN3+C,UAAM,EAAE,IADF;AAEN3C,SAAK,EAAG;AAFF,GAX0C;AAgBpDi6C,WAAS,EAAQ,KAhBmC;AAiBpD8H,iBAAe,EAAE,IAjBmC;AAmBpDhB,mBAAiB,EAAjBA,4CAnBoD;AAqBpD/I,YAAU,EAAE;AACRrzC,UAAM,EAAE,IADA;AAERD,SAAK,EAAG;AAFA,GArBwC;AA0BpDk7C,mBA1BoD,mCA0BuC;AAAA;;AAAA,QAAvE/7C,KAAuE,QAAvEA,KAAuE;AAAA,QAAhE0H,MAAgE,QAAhEA,MAAgE;AAEvF,QAAM6kC,QAAQ,GACV;AAAK,eAAS,EAAGsc,mCAAiB,CAAC;AAAE7oD,aAAK,EAALA;AAAF,OAAD;AAAlC,MADJ;AAIAusC,YAAQ,CAAC7tC,gBAAT,CAA0B,OAA1B,EAAmC,YAAM;AACrCsH,kDAAI,CAAC,2BAAD,CAAJ;;AAEA,UAAI8rB,sCAAY,EAAhB,EAAoB;AAChB9rB,oDAAI,2CAAJ;AAEAu7C,qDAAS,GAHO,CAKhB;;AACAsL,aAAK,mHAAL;AACH;;AAED,UAAI9J,gBAAgB,CAAC,0BAAD,CAApB,EAAkD;AAC9Ct5C,oDAAI,CAAC,8BAAD,CAAJ;;AAEA,aAAI,CAACzJ,KAAL,CAAWomD,OAAX,GAAqB72D,IAArB,CAA0B,UAAA8kC,KAAK,EAAI;AAC/BplC,gBAAM,CAACwR,GAAP,CAAWxD,QAAX,GAAsBgD,gCAAS,CAACsJ,wBAAM,CAAC2H,WAAR,EAAqB;AAAEmjB,iBAAK,EAALA;AAAF,WAArB,CAA/B;AACH,SAFD;AAGH;AACJ,KAnBD;AAqBA,WACI,qBACI,qBACMkY,QADN,CADJ,CADJ;AAOH,GA5DmD;;AA8DpD,MAAI7hC,OAAJ,GAAuB;AACnB,WAAOk4C,gBAAgB,EAAvB;AACH,GAhEmD;;AAkEpD,MAAI70C,MAAJ,GAAsB;AAClB,WAAOxE,wBAAM,CAACoE,aAAd;AACH,GApEmD;;AAsEpDzP,YAAU,EAAE;AACRY,UAAM,EAAE;AACJymE,yBAAmB,EAAE;AADjB;AADA,GAtEwC;AA4EpDntB,UA5EoD,sBA4EzC;AACP,QAAI,CAACiJ,UAAU,EAAf,EAAmB;AACfr7C,kDAAI,CAAC,0BAAD,CAAJ;AACH;AACJ,GAhFmD;AAkFpDhG,OAAK,EAAE;AACH+N,UAAM,EAAE;AACJ5W,UAAI,EAAM,QADN;AAEJy8C,cAAQ,EAAE,KAFN;AAGJ79C,SAHI,iBAGW;AACX,eAAO9G,MAAM,CAACgO,QAAP,CAAgBoN,IAAvB;AACH,OALG;AAMJyuC,gBAAU,EAAE;AANR,KADL;AAUHzZ,aAAS,EAAE;AACPloC,UAAI,EAAM,QADH;AAEPy8C,cAAQ,EAAE,KAFH;AAGP79C,SAHO,iBAGQ;AACX,eAAO8kC,2CAAY,EAAnB;AACH,OALM;AAMPie,gBAAU,EAAE;AANL,KAVR;AAmBHrZ,mBAAe,EAAE;AACbtoC,UAAI,EAAM,QADG;AAEby8C,cAAQ,EAAE,KAFG;AAGb79C,SAHa,iBAGG;AACZ,eAAOhB,gCAAQ,EAAf;AACH,OALY;AAMb+jD,gBAAU,EAAE;AANC,KAnBd;AA4BHjuC,OAAG,EAAE;AACD1T,UAAI,EAAQ,QADX;AAEDy8C,cAAQ,EAAI,KAFX;AAGDkF,gBAAU,EAAE,IAHX;AAKD/iD,SALC,iBAKc;AACX,eAAOwT,wBAAM,CAACsB,GAAd;AACH,OAPA;AASDutC,cATC,oBASQvtC,GATR,EASa;AACV,YAAIA,GAAJ,EAAS;AACL,cAAI,CAACtB,wBAAM,CAACiE,UAAP,CAAkB3C,GAAlB,CAAL,EAA6B;AACzB,kBAAM,IAAIjZ,KAAJ,mBAA2BiZ,GAA3B,CAAN;AACH;AACJ;AACJ;AAfA,KA5BF;AA8CH2K,QAAI,EAAE;AACFre,UAAI,EAAM,QADR;AAEFy8C,cAAQ,EAAE,KAFR;AAGF79C,SAHE,iBAGa;AACX,eAAO,EAAP;AACH;AALC,KA9CH;AAsDHyvE,wBAAoB,EAAE;AAClBruE,UAAI,EAAM,SADQ;AAElBy8C,cAAQ,EAAE,KAFQ;AAGlB79C,SAHkB,iBAGF;AACZ,eAAO,KAAP;AACH;AALiB,KAtDnB;AA8DHi3B,UAAM,EAAE;AACJ71B,UAAI,EAAM,QADN;AAEJy8C,cAAQ,EAAE,KAFN;AAGJ79C,SAHI,iBAGW;AACX,eAAO,EAAP;AACH,OALG;AAOJqiD,cAPI,oBAOKprB,MAPL,EAOahtB,KAPb,EAOoB;AACpB,YAAM6K,GAAG,GAAG7K,KAAK,CAAC6K,GAAN,IAAatB,wBAAM,CAACsB,GAAhC;;AAEA,YAAI,CAACmiB,MAAM,CAACniB,GAAD,CAAX,EAAkB;AACd,gBAAM,IAAIjZ,KAAJ,mCAA2CiZ,GAA3C,CAAN;AACH;;AAED,YAAI,OAAOmiB,MAAM,CAACniB,GAAD,CAAb,KAAuB,QAA3B,EAAqC;AACjC,cAAImiB,MAAM,CAACniB,GAAD,CAAN,CAAYrS,KAAZ,CAAkB,UAAlB,CAAJ,EAAmC;AAC/B,kBAAM,IAAI5G,KAAJ,yBAAiCo7B,MAAM,CAACniB,GAAD,CAAvC,CAAN;AACH;AACJ,SAJD,MAIO,IAAI,CAAC9Z,yCAAY,CAACjC,SAAb,CAAuBk+B,MAAM,CAACniB,GAAD,CAA7B,CAAL,EAA0C;AAC7C,gBAAM,IAAIjZ,KAAJ,4DAAN;AACH;AACJ,OArBG;AAuBJ8mD,cAvBI,oBAuBK1rB,MAvBL,EAuB+B;AAC/B,YAAIA,MAAM,IAAIA,MAAM,CAAC/e,OAAP,KAAmB,wBAAjC,EAA2D;AACvD+e,gBAAM,CAAC/e,OAAP,GAAiB,kFAAjB;AACH;;AAED,eAAO+e,MAAP;AACH;AA7BG,KA9DL;AA8FHp4B,UAAM,EAAE;AACJuC,UAAI,EAAM,QADN;AAEJy8C,cAAQ,EAAE,KAFN;AAGJ79C,SAHI,iBAGW;AACX,eAAOtZ,+BAAM,CAACC,MAAd;AACH;AALG,KA9FL;AAsGH+oF,iBAAa,EAAE;AACXtuE,UAAI,EAAM,SADC;AAEXy8C,cAAQ,EAAE;AAFC,KAtGZ;AA2GH1oC,SAAK,EAAE;AACH/T,UAAI,EAAQ,QADT;AAEHy8C,cAAQ,EAAI,KAFT;AAGHkF,gBAAU,EAAE,IAHT;AAKH/iD,SALG,eAKCiK,KALD,EAKkB;AACjB,YAAM6K,GAAG,GAAG7K,KAAK,CAAC6K,GAAN,IAAatB,wBAAM,CAACsB,GAAhC;;AAEA,YAAIA,GAAG,KAAK7uB,4BAAG,CAACE,KAAZ,IAAqB2uB,GAAG,KAAK7uB,4BAAG,CAACC,KAArC,EAA4C;AACxC,iBAAOstB,wBAAM,CAAC2B,KAAd;AACH;AACJ;AAXE,KA3GJ;AAyHHw6D,6BAAyB,EAAE;AACvBvuE,UAAI,EAAM,SADa;AAEvBy8C,cAAQ,EAAE,KAFa;AAGvB79C,SAAG,EAAO,eAAM;AACZ,eAAO,IAAP;AACH;AALsB,KAzHxB;AAiIHqV,YAAQ,EAAE;AACNjU,UAAI,EAAQ,QADN;AAENy8C,cAAQ,EAAI,KAFN;AAGNkF,gBAAU,EAAE,IAHN;AAKN/iD,SALM,eAKFiK,KALE,EAKe;AACjB,YAAM6K,GAAG,GAAG7K,KAAK,CAAC6K,GAAN,IAAatB,wBAAM,CAACsB,GAAhC;;AAEA,YAAIA,GAAG,KAAK7uB,4BAAG,CAACE,KAAZ,IAAqB2uB,GAAG,KAAK7uB,4BAAG,CAACC,KAArC,EAA4C;AACxC,iBAAOstB,wBAAM,CAAC6B,QAAd;AACH;AACJ;AAXK,KAjIP;AA+IHG,gBAAY,EAAE;AACVpU,UAAI,EAAQ,QADF;AAEVy8C,cAAQ,EAAI,KAFF;AAGVkF,gBAAU,EAAE,IAHF;AAKV/iD,SALU,eAKNiK,KALM,EAKW;AACjB,YAAM6K,GAAG,GAAG7K,KAAK,CAAC6K,GAAN,IAAatB,wBAAM,CAACsB,GAAhC;;AAEA,YAAIA,GAAG,KAAK7uB,4BAAG,CAACC,KAAhB,EAAuB;AACnB,iBAAOstB,wBAAM,CAACgC,YAAd;AACH;AACJ;AAXS,KA/IX;AA6JH4C,eAAW,EAAE;AACThX,UAAI,EAAQ,QADH;AAETy8C,cAAQ,EAAI,KAFH;AAGTkF,gBAAU,EAAE,IAHH;AAKT/iD,SALS,iBAKO;AACZ,eAAOwT,wBAAM,CAAC4E,WAAd;AACH;AAPQ,KA7JV;AAuKHs4C,aAAS,EAAE;AACPtvD,UAAI,EAAM,QADH;AAEPy8C,cAAQ,EAAE,KAFH;AAGPwE,cAHO,oBAGEqO,SAHF,EAGazmD,KAHb,EAGoB;AAEvB,YAAI,CAACymD,SAAS,CAACG,cAAf,EAA+B;AAC3B,gBAAM,IAAIh1D,KAAJ,6DAAN;AACH;;AAED,YAAI,CAACoO,KAAK,CAACgtB,MAAX,EAAmB;AACf,gBAAM,IAAIp7B,KAAJ,uEAAN;AACH;AACJ,OAZM;AAaP;AACA8mD,cAdO,oBAcE+N,SAdF,EAcazmD,KAdb,EAc0D;AAC7D,YAAM6K,GAAG,GAAG7K,KAAK,CAAC6K,GAAN,IAAatB,wBAAM,CAACsB,GAAhC,CAD6D,CAE7D;;AACA,eAAO9Z,yCAAY,CAACuC,IAAb,CAAkB0M,KAAK,CAACgtB,MAAxB,EAAgCz9B,IAAhC,CAAqC,UAAAy9B,MAAM,EAAI;AAClD,iBAAOw5B,oBAAoB,CAACC,SAAD,EAAYz5B,MAAM,CAACniB,GAAD,CAAlB,CAA3B;AACH,SAFM,CAAP;AAGH;AApBM,KAvKR;AA8LHu7C,WAAO,EAAE;AACLjvD,UAAI,EAAM,UADL;AAELy8C,cAAQ,EAAE,IAFL;AAGL15C,aAAO,EAAG,KAHL;AAILtH,aAAO,EAAGwX,MAAQ,GAAG,SAAH,GAAS,KAAK,IAJ3B;AAKL0pC,WAAK,EAAK,kBALL;AAOL4E,cAPK,oBAOIlyB,QAPJ,EAOyB;AAC1B,eAAO,SAAS4/B,OAAT,CAAiB9zC,IAAjB,EAAmD;AAAA;;AAAA,cAAlCA,IAAkC;AAAlCA,gBAAkC,GAA3B,EAA2B;AAAA;;AAEtD,cAAM2qC,OAAO,GAAG;AACZ/wB,mBAAO,EAAPA,OADY;AAEZk6B,mBAAO,EAAE;AACLluB,oBAAM,EAAE,gBAAC77B,OAAD,EAAa;AACjB,uBAAO,MAAI,CAAC2D,KAAL,CAAWymD,SAAX,GACD,MAAI,CAACzmD,KAAL,CAAWymD,SAAX,CAAqBl3D,IAArB,CAA0B,UAAAy9B,MAAM,EAAI;AAClC,yBAAOA,MAAM,CAAC6kC,aAAP,CAAqB5J,qBAAqB,CAAC5rD,OAAO,CAAC+pD,OAAR,IAAmB/pD,OAApB,CAA1C,CAAP;AACH,iBAFC,CADC,GAIDtL,yCAAY,CAACuC,IAAb,CAAkB,MAAI,CAAC0M,KAAL,CAAWgtB,MAA7B,EAAqCz9B,IAArC,CAA0C,UAAAy9B,MAAM,EAAI;AAClD,yBAAO+lC,IAAI,CAAC3M,OAAL,CAAaluB,MAAb,CAAoB,MAAI,CAACl4B,KAAL,CAAW6K,GAA/B,EAAoCmiB,MAApC,EAA4C3wB,OAA5C,CAAP;AACH,iBAFC,CAJN;AAOH;AATI,aAFG;AAaZ4qB,iBAAK,EAAE;AACHiR,oBAAM,EAAE,gBAAC77B,OAAD,EAAa;AACjB,uBAAOtL,yCAAY,CAACuC,IAAb,CAAkB,MAAI,CAAC0M,KAAL,CAAWgtB,MAA7B,EAAqCz9B,IAArC,CAA0C,UAAAy9B,MAAM,EAAI;AACvD,yBAAO+lC,IAAI,CAAC9rC,KAAL,CAAWiR,MAAX,CAAkB,MAAI,CAACl4B,KAAL,CAAW6K,GAA7B,EAAkCmiB,MAAlC,EAA0C3wB,OAA1C,CAAP;AACH,iBAFM,CAAP;AAGH;AALE,aAbK;AAoBZoqD,qBAAS,EAAE;AACPvuB,oBAAM,EAAE,gBAAC77B,OAAD,EAAa;AACjB,oBAAI,CAAC,MAAI,CAAC2D,KAAL,CAAWymD,SAAhB,EAA2B;AACvB,wBAAM,IAAI70D,KAAJ,iEAAN;AACH;;AAED,uBAAO,MAAI,CAACoO,KAAL,CAAWymD,SAAX,CAAqBl3D,IAArB,CAA0B,UAAAy9B,MAAM,EAAI;AACvC,yBAAOA,MAAM,CAAC6kC,aAAP,CAAqBx1D,OAArB,CAAP;AACH,iBAFM,CAAP;AAGH;AATM;AApBC,WAAhB;;AAiCA,cAAI0mD,gBAAgB,CAAC,iBAAD,CAAhB,IAAuC,KAAK4iB,aAAhD,EAA+D;AAC3D,mBAAO,KAAKA,aAAZ;AACH;;AAED,eAAKA,aAAL,GAAqB50E,yCAAY,CAAC4B,GAAb,CAAiB6zB,QAAjB,EAA2B,IAA3B,EAAiC,CAAElU,IAAF,EAAQ2qC,OAAR,CAAjC,CAArB;AAEA,cAAM5mC,SAAS,GAAGT,IAAI,CAACC,GAAL,EAAlB;AAEA,eAAK8vD,aAAL,GAAqB,KAAKA,aAAL,CAAmBp2E,IAAnB,CAAwB,UAAA8kC,KAAK,EAAI;AAAA;;AAElD,gBAAI,CAACA,KAAL,EAAY;AACRjjC,2DAAK,8BAAL;AACA,oBAAM,IAAIQ,KAAJ,8BAAN;AACH;;AAED,gBAAM0kB,OAAO,GAAGV,IAAI,CAACC,GAAL,KAAaQ,SAA7B;AAEAN,yDAAK,sBACCl4B,6BAAI,CAACC,GAAL,CAASE,KADV,IACgCH,6BAAI,CAACG,KAAL,CAAWtH,QAD3C,SAECmH,6BAAI,CAACC,GAAL,CAASG,UAFV,IAEgCJ,6BAAI,CAACI,UAAL,CAAgByC,eAFhD,SAGC7C,6BAAI,CAACC,GAAL,CAASS,YAHV,IAGgCV,6BAAI,CAACU,YAAL,CAAkB4nE,cAAc,CAAC9xB,KAAD,CAAhC,CAHhC,SAICx2C,6BAAI,CAACC,GAAL,CAASQ,UAJV,IAIgC+1C,KAJhC,SAKCx2C,6BAAI,CAACC,GAAL,CAASM,kBALV,IAKgC,MAAI,CAAC4hB,KAAL,CAAWy/B,eAL3C,SAMC5hD,6BAAI,CAACC,GAAL,CAAS2B,iBANV,IAMgC62B,OANhC,SAOCz4B,6BAAI,CAACC,GAAL,CAAS6B,cAPV,IAOgC2yB,IAAI,IAAIA,IAAI,CAACszD,cAP7C,UAAL;AAUArkB,yDAAS;AAET,mBAAOltB,KAAP;AACH,WAtBoB,CAArB;AAwBA,iBAAO,KAAKsxC,aAAZ;AACH,SApED;AAqEH;AA7EI,KA9LN;AA8QHh6D,YAAQ,EAAE;AACNxU,UAAI,EAAM,QADJ;AAENy8C,cAAQ,EAAE,KAFJ;AAGN79C,SAHM,iBAGS;AACX,eAAOwT,wBAAM,CAACoC,QAAd;AACH;AALK,KA9QP;AAsRH8rD,WAAO,EAAE;AACLtgE,UAAI,EAAQ,QADP;AAELy8C,cAAQ,EAAI,KAFP;AAGLkF,gBAAU,EAAE,IAHP;AAILV,cAJK,2BAIqD;AAAA,uCAAJ,EAAI;AAAA,kCAA/C2f,OAA+C;AAAA,YAA/CA,OAA+C,8BAArC,EAAqC;AAAA,qCAAjCF,UAAiC;AAAA,YAAjCA,UAAiC,iCAApB,EAAoB;;AACtDgB,uBAAe,CAAC;AAAEd,iBAAO,EAAPA,OAAF;AAAWF,oBAAU,EAAVA,UAAX;AAAuBG,oBAAU,EAAE;AAAnC,SAAD,CAAf;AACH,OANI;AAOLjiE,SAPK,iBAOU;AACX,eAAO,EAAP;AACH,OATI;AAUL2iD,cAVK,4BAUqD14C,KAVrD,EAUiF;AAAA,wCAAhC,EAAgC;AAAA,kCAA3E+3D,OAA2E;AAAA,YAA3EA,OAA2E,8BAAjE,EAAiE;AAAA,qCAA7DF,UAA6D;AAAA,YAA7DA,UAA6D,iCAAhD,EAAgD;;AAElFE,eAAO,GAAGvhE,KAAK,CAACC,OAAN,CAAcshE,OAAd,IAAyBA,OAAzB,GAAmC,EAA7C;AACAF,kBAAU,GAAGrhE,KAAK,CAACC,OAAN,CAAcohE,UAAd,IAA4BA,UAA5B,GAAyC,EAAtD;;AAEA,YAAIE,OAAO,IAAIA,OAAO,CAACloE,OAAR,CAAgB3V,gCAAO,CAAClD,KAAxB,MAAmC,CAAC,CAAnD,EAAsD;AAClD+gF,iBAAO,GAAGA,OAAO,CAACx7D,MAAR,CAAe,UAAA3H,MAAM;AAAA,mBAAKA,MAAM,KAAK1a,gCAAO,CAAClD,KAAxB;AAAA,WAArB,CAAV;AACH;;AACD,YAAI+gF,OAAO,IAAIA,OAAO,CAACloE,OAAR,CAAgB3V,gCAAO,CAACjD,IAAxB,MAAkC,CAAC,CAAlD,EAAqD;AACjD8gF,iBAAO,GAAGA,OAAO,CAACx7D,MAAR,CAAe,UAAA3H,MAAM;AAAA,mBAAKA,MAAM,KAAK1a,gCAAO,CAACjD,IAAxB;AAAA,WAArB,CAAV;AACH;;AAED,YAAIouF,oBAAoB,CAACrlE,KAAD,CAAxB,EAAiC;AAC7BslE,wBAAc,GAAGljB,WAAW,CAAC,uBAAD,EAA0B,EAA1B,CAA5B;;AAEA,cAAIkjB,cAAc,CAACvpC,SAAf,EAAJ,EAAgC;AAC5Bg8B,mBAAO,aAAQA,OAAR,GAAiB79E,gCAAO,CAACtD,MAAzB,EAAP;AACH;AACJ;;AAED,YAAIohF,UAAU,GAAGzU,oBAAoB,CAAC,UAAAQ,OAAO;AAAA,iBAAIA,OAAJ;AAAA,SAAR,CAArC;;AAEA,YAAI,CAACxzB,kCAAQ,EAAT,IAAewyB,gBAAgB,CAAC,eAAD,CAAnC,EAAsD;AAClD,cAAIiV,UAAU,IAAIA,UAAU,CAACnoE,OAAX,CAAmB3V,gCAAO,CAAClD,KAA3B,MAAsC,CAAC,CAAzD,EAA4D;AACxDghF,sBAAU,GAAGA,UAAU,CAACz7D,MAAX,CAAkB,UAAA3H,MAAM;AAAA,qBAAKA,MAAM,KAAK1a,gCAAO,CAAClD,KAAxB;AAAA,aAAxB,CAAb;AACH;;AAED,cAAI6gF,UAAU,IAAIA,UAAU,CAAChoE,OAAX,CAAmB3V,gCAAO,CAAClD,KAA3B,MAAsC,CAAC,CAAzD,EAA4D;AACxD6gF,sBAAU,aAAQA,UAAR,GAAoB39E,gCAAO,CAAClD,KAA5B,EAAV;AACH;AACJ;;AAED,eAAO;AACH+gF,iBAAO,EAAPA,OADG;AAEHF,oBAAU,EAAVA,UAFG;AAGHG,oBAAU,EAAVA,UAHG;AAIH6N,kBAJG,oBAIM9hB,OAJN,EAIe;AACdC,2BAAe,CAACD,OAAD,CAAf;AACH;AANE,SAAP;AAQH;AAlDI,KAtRN;AA2UHsJ,UAAM,EAAE;AACJl2D,UAAI,EAAQ,SADR;AAEJy8C,cAAQ,EAAI,KAFR;AAGJkF,gBAAU,EAAE,IAHR;AAIJE,gBAAU,EAAE,oBAACxjD,GAAD,EAAS;AACjB,eAAOA,GAAG,GAAG,MAAH,GAAY,OAAtB;AACH;AANG,KA3UL;AAoVHukD,YAAQ,EAAE;AACN5iD,UAAI,EAAO,UADL;AAEN4Q,eAAS,EAAE,IAFL;AAGN6rC,cAAQ,EAAG,KAHL;AAIN95C,UAAI,EAAO,IAJL;AAKN4+C,cALM,oBAKGlyB,QALH,EAKwB;AAC1B,eAAO,SAASs/C,gBAAT,GAAoC;AAAA;;AAAA,4BACwB7kB,UAAU,EADlC;AAAA,gDAC/BC,OAD+B;AAAA,cAC/BA,OAD+B,oCACrB,cADqB;AAAA,gDACLx2C,OADK;AAAA,cACLA,OADK,oCACK,cADL;;AAEvCjB,sDAAI,4BAA2By3C,OAA3B,UAAwC3wB,kCAAQ,KAAK,QAAL,GAAgB,SAAhE,UAA+E7lB,OAA/E,CAAJ;AAEA,cAAMxP,KAAK,GAAG,KAAK8E,KAAL,CAAW9E,KAAX,IAAoB,EAAlC;AAEAuO,sDAAI,iBAAJ;AACAA,sDAAI,2BAAyBvO,KAAK,CAACiiE,KAAN,IAAe,SAAxC,EAAJ;AACA1zD,sDAAI,2BAAyBvO,KAAK,CAACkiE,KAAN,IAAe,SAAxC,EAAJ;AACA3zD,sDAAI,0BAAwBvO,KAAK,CAACgiE,IAAN,IAAc,SAAtC,EAAJ;AACAzzD,sDAAI,2BAAyBvO,KAAK,CAACggE,KAAN,IAAe,SAAxC,EAAJ;AACAzxD,sDAAI,8BAA4BvO,KAAK,CAAC4hE,QAAN,IAAkB,SAA9C,EAAJ;AACArzD,sDAAI,kCAAgCvO,KAAK,CAAC6hE,YAAN,IAAsB,SAAtD,EAAJ;AACAtzD,sDAAI,6BAA2BvO,KAAK,CAAC2hE,OAAN,IAAiB,SAA5C,EAAJ;AAEAjM,cAAI,CAACP,qBAAL;AACAO,cAAI,CAACb,gBAAL,CAAsB,KAAK/vD,KAAL,CAAWgtB,MAAX,CAAkB,KAAKhtB,KAAL,CAAW6K,GAA7B,CAAtB;AAEAkL,uDAAK,wBACCl4B,6BAAI,CAACC,GAAL,CAASE,KADV,IACgCH,6BAAI,CAACG,KAAL,CAAWiC,IAD3C,UAECpC,6BAAI,CAACC,GAAL,CAASG,UAFV,IAEgCJ,6BAAI,CAACI,UAAL,CAAgBmC,aAFhD,UAGCvC,6BAAI,CAACC,GAAL,CAASI,WAHV,IAGgCL,6BAAI,CAACK,WAAL,CAAiB0B,MAHjD,UAIC/B,6BAAI,CAACC,GAAL,CAASM,kBAJV,IAIgC,KAAK4hB,KAAL,CAAWy/B,eAJ3C,UAKC5hD,6BAAI,CAACC,GAAL,CAASa,aALV,IAKgC,KAAKqhB,KAAL,CAAWpL,MAL3C,WAAL;;AAQA,cAAIk9B,sCAAY,EAAhB,EAAoB;AAChB9rB,wDAAI,+BAAJ;AACH;;AAED,cAAIs/D,cAAJ,EAAoB;AAAA;;AAChBA,0BAAc,CAACnpC,QAAf,oDACMt+C,6BAAI,CAACC,GAAL,CAASM,kBADf,IACqC,KAAK4hB,KAAL,CAAWy/B,eADhD;AAGH;;AAED8hB,uDAAS;AAET,iBAAO/6B,QAAQ,CAAC1yB,KAAT,CAAe,IAAf,EAAqBmG,SAArB,CAAP;AACH,SAvCD;AAwCH;AA9CK,KApVP;AAqYH4qD,eAAW,EAAE;AACT1tD,UAAI,EAAM,UADD;AAET28C,WAAK,EAAK,WAFD;AAGTF,cAAQ,EAAE,IAHD;AAKT8E,cALS,oBAKAlyB,QALA,EAKqB;AAC1B,eAAO,SAASknC,mBAAT,CAA6Bp7C,IAA7B,EAAmC2qC,OAAnC,EAAwE;AAAA;AAAA;;AAE3E,cAAI3qC,IAAI,IAAI,CAACA,IAAI,CAACw0C,MAAlB,EAA0B;AACtB9gD,wDAAI,+BAA+B;AAAE0/C,uBAAS,EAAEpzC,IAAI,CAACozC,SAAlB;AAA6BrxB,mBAAK,EAAE/hB,IAAI,CAACkuC;AAAzC,aAA/B,CAAJ;AACH;;AAED/2C,sDAAI,CAAC,kBAAD,CAAJ;AAEAsM,uDAAK,wBACCl4B,6BAAI,CAACC,GAAL,CAASE,KADV,IACgCH,6BAAI,CAACG,KAAL,CAAWtH,QAD3C,UAECmH,6BAAI,CAACC,GAAL,CAASG,UAFV,IAEgCJ,6BAAI,CAACI,UAAL,CAAgB2C,kBAFhD,UAGC/C,6BAAI,CAACC,GAAL,CAASM,kBAHV,IAGgC,KAAK4hB,KAAL,CAAWy/B,eAH3C,UAIC5hD,6BAAI,CAACC,GAAL,CAAS6B,cAJV,IAIgC2yB,IAAI,IAAIA,IAAI,CAACszD,cAJ7C,WAAL;;AAOA,cAAI9zC,sCAAY,EAAhB,EAAoB;AAChB9rB,wDAAI,kCAAJ;AACH;;AAED,cAAI,CAACq7C,UAAU,EAAf,EAAmB;AACf53C,wDAAI,CAAC,6BAAD,CAAJ;AACH;;AAED63C,gCAAsB,CAAC,WAAD,CAAtB;AAEAC,uDAAS;AAET,cAAMwkB,OAAO,GAAG9oB,OAAO,CAAC8oB,OAAxB;;AACA9oB,iBAAO,CAAC8oB,OAAR,GAAkB,YAAM;AACpB,mBAAOA,OAAO,GAAGx2E,IAAV,CAAe,YAAM;AACxB,qBAAO,IAAIwB,yCAAJ,EAAP;AACH,aAFM,CAAP;AAGH,WAJD;;AAMAksD,iBAAO,CAACpmB,QAAR,GAAmB,UAACp6B,GAAD,EAAML,GAAN,EAAc;AAC7B,mBAAOrL,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAC1B,kBAAIsqD,OAAO,CAACjgD,KAAZ,EAAmB;AACf,uBAAOigD,OAAO,CAACjgD,KAAR,EAAP;AACH;AACJ,aAJM,EAIJzN,IAJI,CAIC,YAAM;AACV,qBAAOo+D,+BAAK,CAAClxD,GAAG,IAAIxN,MAAM,CAACwR,GAAf,EAAoBrE,GAAG,IAAIkW,IAAI,CAACizC,SAAhC,CAAZ;AACH,aANM,CAAP;AAOH,WARD;;AAUAtI,iBAAO,CAACmJ,OAAR,CAAgB4f,QAAhB,GAA2B9rE,+BAAO,CAAC,YAAM;AACrC,gBAAI,CAAC,MAAI,CAAC8F,KAAL,CAAWymD,SAAhB,EAA2B;AACvB,oBAAM,IAAI70D,KAAJ,qDAAN;AACH;;AAED,mBAAO,MAAI,CAACoO,KAAL,CAAWymD,SAAX,CACFl3D,IADE,CACG,UAAAy9B,MAAM;AAAA,qBAAIA,MAAM,CAACi5C,eAAP,CAAuB3zD,IAAvB,CAAJ;AAAA,aADT,CAAP;AAEH,WAPiC,CAAlC;AASA,cAAM4zD,OAAO,GAAGjpB,OAAO,CAACmJ,OAAR,CAAgB8f,OAAhC;;AACAjpB,iBAAO,CAACmJ,OAAR,CAAgB8f,OAAhB,GAA0B,YAAM;AAC5B,mBAAOA,OAAO,GAAG32E,IAAV,CAAe,UAAAiC,MAAM,EAAI;AAE5B,kBAAI,CAACA,MAAD,IAAW,CAACA,MAAM,CAACgK,EAAnB,IAAyB,CAAChK,MAAM,CAACs1D,MAAjC,IAA2C,CAACt1D,MAAM,CAACsZ,KAAvD,EAA8D;AAC1D9E,4DAAI,+BAAJ;AACA,uBAAO,IAAIjV,yCAAJ,EAAP;AACH;;AAED,qBAAOS,MAAP;AACH,aARM,CAAP;AASH,WAVD;;AAYA,cAAMqE,GAAG,GAAGonD,OAAO,CAACmJ,OAAR,CAAgBvwD,GAA5B;;AAEAonD,iBAAO,CAACmJ,OAAR,CAAgBvwD,GAAhB,GAAsB,YAAM;AACxB,mBAAOA,GAAG,GAAGtG,IAAN,CAAW,UAAAiC,MAAM,EAAI;AACxB,kBAAI,CAACA,MAAD,IAAW,CAACA,MAAM,CAACgK,EAAnB,IAAyB,CAAChK,MAAM,CAACs1D,MAAjC,IAA2C,CAACt1D,MAAM,CAACsZ,KAAvD,EAA8D;AAC1D9E,4DAAI,2BAAJ;AACA,uBAAO,IAAIjV,yCAAJ,EAAP;AACH;;AAED,qBAAOS,MAAP;AACH,aAPM,CAAP;AAQH,WATD;;AAWAyrD,iBAAO,CAAC/wB,OAAR,GAAkBA,OAAlB;AAEAinC,6BAAmB,CAACv5D,OAApB,CAA4B;AACxB4mD,wBAAY,EAAEluC,IAAI,CAACkuC;AADK,WAA5B;;AAIA,cAAI8kB,cAAJ,EAAoB;AAAA;;AAChBA,0BAAc,CAAClpC,WAAf,oDACKv+C,6BAAI,CAACC,GAAL,CAASM,kBADd,IACmC,KAAK4hB,KAAL,CAAWy/B,eAD9C;AAGH;;AAED,iBAAO1uC,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAE1B,gBAAI,MAAI,CAACqN,KAAL,CAAWymD,SAAf,EAA0B;AACtB,qBAAOxJ,OAAO,CAACmJ,OAAR,CAAgB4f,QAAhB,GAA2Bz2E,IAA3B,CAAgC,iBAAe;AAAA,oBAAZ42E,KAAY,SAAZA,KAAY;AAClD;AACAr0E,sBAAM,CAACgF,cAAP,CAAsBwb,IAAtB,EAA4B,OAA5B,EAAqC;AACjCzc,qBAAG,EAAE,eAAM;AACP4T,gEAAI,CAAC,cAAD,CAAJ;AACA83C,iEAAS;AACT,2BAAO4kB,KAAP;AACH;AALgC,iBAArC;AAOH,eATM,CAAP;AAUH;AAEJ,WAfM,EAeJ52E,IAfI,CAeC,YAAM;AACV,mBAAOi3B,QAAQ,CAACl3B,IAAT,CAAc,MAAd,EAAoBgjB,IAApB,EAA0B2qC,OAA1B,CAAP;AACH,WAjBM,EAiBJ1qD,KAjBI,CAiBE,UAAA/C,GAAG,EAAI;AACZ,gBAAI,MAAI,CAACwQ,KAAL,CAAW1N,OAAf,EAAwB;AACpB,qBAAO,MAAI,CAAC0N,KAAL,CAAW1N,OAAX,CAAmB9C,GAAnB,CAAP;AACH;;AACD,kBAAMA,GAAN;AACH,WAtBM,CAAP;AAuBH,SAlHD;AAmHH;AAzHQ,KArYV;AAigBHu+D,oBAAgB,EAAE;AACd52D,UAAI,EAAM,UADI;AAEdy8C,cAAQ,EAAE,KAFI;AAId8E,cAJc,oBAILlyB,QAJK,EAIuB;AACjC,YAAI,CAACA,QAAL,EAAe;AACX;AACH;;AAED,eAAO,SAAS4/C,wBAAT,CAAkC9zD,IAAlC,EAAwC2qC,OAAxC,EAAsE;AAAA;AAAA;;AAEzExzC,sDAAI,CAAC,wBAAD,CAAJ;AAEAsM,uDAAK,wBACCl4B,6BAAI,CAACC,GAAL,CAASE,KADV,IACgCH,6BAAI,CAACG,KAAL,CAAWtH,QAD3C,UAECmH,6BAAI,CAACC,GAAL,CAASG,UAFV,IAEgCJ,6BAAI,CAACI,UAAL,CAAgB4C,wBAFhD,UAGChD,6BAAI,CAACC,GAAL,CAASM,kBAHV,IAGgC,KAAK4hB,KAAL,CAAWy/B,eAH3C,UAIC5hD,6BAAI,CAACC,GAAL,CAAS6B,cAJV,IAIgC2yB,IAAI,IAAIA,IAAI,CAACszD,cAJ7C,WAAL;AAOArkB,uDAAS;AACT,cAAM3uD,OAAO,GAAGwX,MAAQ,GAAG,SAAH,GAAS,KAAK,IAAtC;AAEA,cAAMi8D,KAAK,GAAGppB,OAAO,CAACmJ,OAAR,CAAgBigB,KAA9B;;AACAppB,iBAAO,CAACmJ,OAAR,CAAgBigB,KAAhB,GAAwB,UAACC,WAAD,EAAiB;AACrC,mBAAOv1E,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAC1B,qBAAO0zE,KAAK,CAACC,WAAD,CAAZ;AACH,aAFM,CAAP;AAGH,WAJD;;AAMA,cAAM51E,OAAO,GAAG,SAAVA,OAAU;AAAA,mBAAMK,yCAAY,CAACL,OAAb,EAAN;AAAA,WAAhB;;AACA,cAAMiB,MAAM,GAAGsrD,OAAO,CAACtrD,MAAR,IAAkB,SAASA,MAAT,GAAkB;AAC/C,kBAAM,IAAIC,KAAJ,kCAAN;AACH,WAFD;;AAIA,iBAAOb,yCAAY,CAAC4B,GAAb,CAAiB,YAAM;AAC1B,mBAAO6zB,QAAQ,CAACl3B,IAAT,CAAc,MAAd,EAAoBgjB,IAApB,6CAA+B2qC,OAA/B;AAAwCvsD,qBAAO,EAAPA,OAAxC;AAAiDiB,oBAAM,EAANA;AAAjD,eAAP;AACH,WAFM,EAEJiB,OAFI,CAEIA,OAFJ,EAGH,IAAIhB,KAAJ,wBAAgCgB,OAAhC,oBAHG,EAGwDL,KAHxD,CAG8D,UAAA/C,GAAG,EAAI;AACxE,gBAAI,MAAI,CAACwQ,KAAL,CAAW1N,OAAf,EAAwB;AACpB,oBAAI,CAAC0N,KAAL,CAAW1N,OAAX,CAAmB9C,GAAnB;AACH;;AACD,kBAAMA,GAAN;AACH,WARM,CAAP;AASH,SAnCD;AAoCH;AA7Ca,KAjgBf;AAijBH8C,WAAO,EAAE;AACL6E,UAAI,EAAS,UADR;AAELy8C,cAAQ,EAAK,KAFR;AAGL7rC,eAAS,EAAI,IAHR;AAILmwC,iBAAW,EAAE,IAJR;AAKLx+C,UAAI,EAAS,IALR;AAML3D,SANK,iBAMgB;AACjB,eAAO,SAASzD,OAAT,CAAiB9C,GAAjB,EAA8B;AACjC,cAAIsiC,sCAAY,EAAhB,EAAoB;AAChB9rB,wDAAI,8BAAJ;AACAu7C,yDAAS,GAFO,CAIhB;;AACAsL,iBAAK,mHAAL;AACH;;AAED98D,oBAAU,CAAC,YAAM;AACb,kBAAMP,GAAN;AACH,WAFS,CAAV;AAGH,SAZD;AAaH;AApBI,KAjjBN;AAwkBH2+D,YAAQ,EAAE;AACNh3D,UAAI,EAAM,UADJ;AAENy8C,cAAQ,EAAE,KAFJ;AAGN95C,UAAI,EAAM,IAHJ;AAKN4+C,cALM,oBAKGlyB,QALH,EAKwB;AAC1B,eAAO,SAAS4nC,gBAAT,CAA0B97C,IAA1B,EAAgC2qC,OAAhC,EAAqE;AAAA;;AAExExzC,sDAAI,CAAC,eAAD,CAAJ;AAEAsM,uDAAK,wBACCl4B,6BAAI,CAACC,GAAL,CAASE,KADV,IACgCH,6BAAI,CAACG,KAAL,CAAWtH,QAD3C,UAECmH,6BAAI,CAACC,GAAL,CAASG,UAFV,IAEgCJ,6BAAI,CAACI,UAAL,CAAgB6C,eAFhD,UAGCjD,6BAAI,CAACC,GAAL,CAASM,kBAHV,IAGgC,KAAK4hB,KAAL,CAAWy/B,eAH3C,UAIC5hD,6BAAI,CAACC,GAAL,CAAS6B,cAJV,IAIgC2yB,IAAI,IAAIA,IAAI,CAACszD,cAJ7C,WAAL;AAOArkB,uDAAS;;AAET,cAAM1qB,QAAQ,GAAG,SAAXA,QAAW,CAACp6B,GAAD,EAAML,GAAN,EAAc;AAC3B,mBAAOrL,yCAAY,CAACkC,GAAb,CAAiB,CACpB06D,+BAAK,CAAClxD,GAAG,IAAIxN,MAAM,CAACwR,GAAf,EAAoBrE,GAAG,IAAIkW,IAAI,CAAC+7C,SAAhC,CADe,EAEpBpR,OAAO,CAACjgD,KAAR,EAFoB,CAAjB,CAAP;AAIH,WALD;;AAOA,iBAAOwpB,QAAQ,CAACl3B,IAAT,CAAc,IAAd,EAAoBgjB,IAApB,6CAA+B2qC,OAA/B;AAAwCpmB,oBAAQ,EAARA;AAAxC,aAAP;AACH,SArBD;AAsBH;AA5BK,KAxkBP;AAumBHzvB,WAAO,EAAE;AACLjQ,UAAI,EAAM,UADL;AAELy8C,cAAQ,EAAE,KAFL;AAGL95C,UAAI,EAAM,IAHL;AAIL4+C,cAJK,oBAIIlyB,QAJJ,EAIyB;AAC1B,eAAO,SAAS+/C,eAAT,CAAyBj0D,IAAzB,EAA8H;AAAA;;AAEjI7I,sDAAI,CAAC,cAAD,CAAJ;;AACA,cAAI6I,IAAI,IAAIA,IAAI,CAAC61C,IAAjB,EAAuB;AACnB1+C,wDAAI,eAAc6I,IAAI,CAAC61C,IAAnB,CAAJ;AACH;;AAEDpyC,uDAAK,wBACCl4B,6BAAI,CAACC,GAAL,CAASE,KADV,IACgCH,6BAAI,CAACG,KAAL,CAAWT,MAD3C,UAECM,6BAAI,CAACC,GAAL,CAASG,UAFV,IAEgCJ,6BAAI,CAACI,UAAL,CAAgBqC,YAFhD,UAGCzC,6BAAI,CAACC,GAAL,CAASI,WAHV,IAGgCL,6BAAI,CAACK,WAAL,CAAiB0B,MAHjD,UAIC/B,6BAAI,CAACC,GAAL,CAASM,kBAJV,IAIgC,KAAK4hB,KAAL,CAAWy/B,eAJ3C,UAKC5hD,6BAAI,CAACC,GAAL,CAASsB,cALV,IAKgCkzB,IAAI,KAAKA,IAAI,CAACsmD,IAAL,IAAatmD,IAAI,CAACg0C,aAAvB,CALpC,UAMCzoE,6BAAI,CAACC,GAAL,CAAS4B,YANV,IAMgC4yB,IAAI,IAAIA,IAAI,CAAC61C,IAN7C,UAOCtqE,6BAAI,CAACC,GAAL,CAAS6B,cAPV,IAOgC2yB,IAAI,IAAIA,IAAI,CAACszD,cAP7C,WAAL;;AAUA,cAAI9zC,sCAAY,EAAhB,EAAoB;AAChB9rB,wDAAI,CAAC,4BAAD,CAAJ;AACH;;AAED,cAAIs/D,cAAJ,EAAoB;AAAA;;AAChBA,0BAAc,CAACnwD,GAAf,CAAmB,OAAnB,iDACMt3B,6BAAI,CAACC,GAAL,CAASE,KADf,IACqCH,6BAAI,CAACG,KAAL,CAAWT,MADhD,sBAEMM,6BAAI,CAACC,GAAL,CAASG,UAFf,IAEqCJ,6BAAI,CAACI,UAAL,CAAgBqC,YAFrD,sBAGMzC,6BAAI,CAACC,GAAL,CAASM,kBAHf,IAGqC,KAAK4hB,KAAL,CAAWy/B,eAHhD;AAKH;;AA3BgI,sBA6BnG,KAAKz/B,KAAL,CAAW9E,KAAX,IAAoB,EA7B+E;AAAA,kCA6BzHiiE,KA7ByH;AAAA,cA6BzHA,KA7ByH,4BA6BjH,SA7BiH;;AA8BjI1zD,sDAAI,yBAAwB0zD,KAAxB,CAAJ;AAEA5b,uDAAS;AAET,iBAAO/6B,QAAQ,CAAC1yB,KAAT,CAAe,IAAf,EAAqBmG,SAArB,CAAP;AACH,SAnCD;AAoCH;AAzCI,KAvmBN;AAmpBH4+B,YAAQ,EAAE;AACN1hC,UAAI,EAAM,UADJ;AAENy8C,cAAQ,EAAE,KAFJ;;AAGN,UAAIziD,KAAJ,GAAuB;AACnB,YAAIq1E,aAAJ;AACA,YAAMC,mCAAmC,GAAG/sE,2BAAI,CAAC,UAAC4Y,IAAD,EAAU;AACvD7I,sDAAI,CAAC,oCAAD,EAAuC6I,IAAvC,CAAJ;AACA+C,gEAAc;AACjB,SAH+C,CAAhD;AAKA,eAAO,SAASqxD,eAAT,GAA2B;AAC9B,cAAM7rE,SAAS,GAAG,KAAKA,SAAvB;;AAEA,cAAI,CAACA,SAAL,EAAgB;AACZ;AACH;;AAED,cAAI,CAAC2rE,aAAL,EAAoB;AAChBA,yBAAa,GAAG3rE,SAAS,CAACoG,YAA1B;AACH;;AAED,cAAM0lE,gBAAgB,GAAG,SAAnBA,gBAAmB,GAAM;AAC3B,gBAAI13E,MAAM,CAAC23E,WAAX,EAAwB;AACpB,qBAAO33E,MAAM,CAAC23E,WAAd;AACH;;AAED,gBAAInrE,QAAQ,CAAC6B,eAAb,EAA8B;AAC1B,qBAAO7B,QAAQ,CAAC6B,eAAT,CAAyBupE,SAAhC;AACH;;AAED,mBAAO,CAAP;AACH,WAVD,CAX8B,CAuB9B;;;AACA,cAAMC,0BAA0B,GAAG,SAA7BA,0BAA6B,GAAM;AACrC,gBAAI;AACA,kBAAMC,aAAa,GAAGJ,gBAAgB,EAAtC;AACA,kBAAMK,YAAY,GAAG/3E,MAAM,CAACyT,WAA5B;AAEA,kBAAMukE,gBAAgB,GAAGpsE,SAAS,CAAC0F,qBAAV,GAAkCE,GAA3D;AACA,kBAAMymE,iBAAiB,GAAG,GAA1B,CALA,CAK+B;;AAE/B,qBAAOH,aAAa,GAAGC,YAAhB,GAA+BR,aAAa,GAAGS,gBAAhB,GAAmCC,iBAAzE;AACH,aARD,CAQE,OAAO13E,GAAP,EAAY;AACVia,0DAAI,CAAC,qCAAD,CAAJ;AACA,qBAAO,KAAP;AACH;AACJ,WAbD;;AAeA,cAAM09D,mBAAmB,GAAGtsE,SAAS,IAAIA,SAAS,CAACoG,YAAV,GAAyBulE,aAAlE;AACA,cAAMY,qBAAqB,GAAGN,0BAA0B,EAAxD;;AAEA,cAAI,CAACK,mBAAD,IAAwBC,qBAA5B,EAAmD;AAC/C;AACH;;AAEDX,6CAAmC,CAAC;AAChC3lE,kBAAM,EAAEjG,SAAS,CAACoG,YADc;AAEhChS,kBAAM,EAAE;AACJ4R,mBAAK,EAAG5R,MAAM,CAACwT,UADX;AAEJ3B,oBAAM,EAAE7R,MAAM,CAACyT;AAFX;AAFwB,WAAD,CAAnC;AAOH,SArDD;AAsDH,OAhEK;;AAiENg2C,cAAQ,EAAE,kBAAClyB,QAAD;AAAA,eAAcnsB,+BAAQ,CAACmsB,QAAD,CAAtB;AAAA;AAjEJ,KAnpBP;AAutBHzb,UAAM,EAAE;AACJ5T,UAAI,EAAQ,QADR;AAEJy8C,cAAQ,EAAI,KAFR;AAGJkF,gBAAU,EAAE,UAHR;AAKJ/iD,SALI,iBAKW;AAAA,gCACekuC,uCAAgB,EAD/B;AAAA,YACHh5B,IADG,qBACHA,IADG;AAAA,YACGD,OADH,qBACGA,OADH;;AAEX,eAAWC,IAAX,SAAqBD,OAArB;AACH,OARG;AAUJotC,cAAQ,EAAEmlB,oBAAoBA;AAV1B,KAvtBL;AAouBHriE,SAAK,EAAE;AACH/D,UAAI,EAAQ,QADT;AAEHy8C,cAAQ,EAAI,KAFT;AAGHkF,gBAAU,EAAE,IAHT;AAIHhF,WAAK,EAAO,aAJT;AAMH/9C,SANG,iBAMY;AACX,eAAO;AACHonE,eAAK,EAASllF,qCAAY,CAACC,IADxB;AAEHklF,eAAK,EAASjkF,qCAAY,CAACC,IAFxB;AAGH8jF,cAAI,EAAUvkF,oCAAW,CAACE,KAHvB;AAIHqiF,eAAK,EAAS1kF,qCAAY,CAACE,QAJxB;AAKHqmF,sBAAY,EAAE,KALX;AAMHrF,gBAAM,EAAQj+E,sCAAa,CAACC;AANzB,SAAP;AAQH,OAfE;AAiBHg/D,cAjBG,oBAiBMx9C,KAjBN,EAiB+B;AAAA,YACtBggE,KADsB,GACuBhgE,KADvB,CACtBggE,KADsB;AAAA,4BACuBhgE,KADvB,CACfw8D,MADe;AAAA,YACfA,MADe,8BACNj+E,sCAAa,CAACC,UADR;;AAE9B,YAAI,CAACwhF,KAAD,IAAUxD,MAAM,KAAKj+E,sCAAa,CAACC,UAAvC,EAAmD;AAC/CwhB,eAAK,CAACggE,KAAN,GAAc1kF,qCAAY,CAACE,QAA3B;AACA,iBAAOwkB,KAAP;AACH,SAHD,MAGO,IAAI,CAACggE,KAAD,IAAUxD,MAAM,KAAKj+E,sCAAa,CAACE,QAAvC,EAAiD;AACpDuhB,eAAK,CAACggE,KAAN,GAAc1kF,qCAAY,CAACC,MAA3B;AACA,iBAAOykB,KAAP;AACH;;AACD,eAAOA,KAAP;AACH,OA3BE;AA6BHk9C,cA7BG,oBA6BMl9C,KA7BN,EA6BkB8E,KA7BlB,EA6ByB;AAAA,YAAnB9E,KAAmB;AAAnBA,eAAmB,GAAX,EAAW;AAAA;;AACxBwiE,2BAAmB,CAACxiE,KAAD,EAAQ8E,KAAR,CAAnB;AACAuhD,qDAAS;AACZ;AAhCE,KApuBJ;AAuwBHnJ,YAAQ,EAAE;AACNjhD,UAAI,EAAM,UADJ;AAENy8C,cAAQ,EAAE,KAFJ;AAGN8E,cAHM,oBAGGN,QAHH,EAGwB;AAC1B;AACA,eAAO,SAASivB,gBAAT,CAA0BpqB,OAA1B,EAA2C;AAC9C,cAAI,CAAC,KAAKqqB,cAAV,EAA0B;AACtB,iBAAKA,cAAL,GAAsB,IAAtB;AACA,mBAAOlvB,QAAQ,CAAC6E,OAAD,CAAf;AACH;AACJ,SALD;AAMH;AAXK,KAvwBP;AAqxBH5zC,YAAQ,EAAE;AACNlS,UAAI,EAAM,QADJ;AAENy8C,cAAQ,EAAE,KAFJ;;AAGN,UAAIziD,KAAJ,GAAqB;AACjB,eAAOoY,wBAAM,CAACF,QAAd;AACH;;AALK,KArxBP;AA6xBHwlD,WAAO,EAAE;AACL13D,UAAI,EAAS,QADR;AAEL2hD,gBAAU,EAAG,IAFR;AAGLZ,iBAAW,EAAE,KAHR;AAILniD,SAAG,EAAU,eAAM;AACf,eAAOu8B,0CAAY,CAACh9B,IAAI,CAACC,SAAL,CAAe;AAC/B6G,aAAG,EAAE0mD,mBAAmB;AADO,SAAf,CAAD,CAAnB;AAGH;AARI,KA7xBN;AAwyBHyS,oBAAgB,EAAE;AACdp+D,UAAI,EAAM,QADI;AAEdy8C,cAAQ,EAAE,KAFI;AAGdziD,WAAK,EAAK;AAAA,eAAMokE,gBAAgB,CAAClkB,gBAAD,CAAtB;AAAA;AAHI,KAxyBf;AA8yBHk2B,cAAU,EAAE;AACRpwE,UAAI,EAAS,UADL;AAER2hD,gBAAU,EAAG,KAFL;AAGRlF,cAAQ,EAAK,KAHL;AAIR79C,SAAG,EAAU,eAAM;AACf,eAAO;AAAA,iBAAM9G,MAAM,CAACgO,QAAP,CAAgB2c,IAAtB;AAAA,SAAP;AACH;AANO,KA9yBT;AAuzBHzR,QAAI,EAAE;AACFhR,UAAI,EAAM,QADR;AAEFy8C,cAAQ,EAAE,KAFR;AAGF79C,SAHE,iBAGa;AACX,eAAO;AAAE64D,gBAAM,EAAE;AAAV,SAAP;AACH;AALC;AAvzBH;AAlF6C,CAAD,CAAhD;;AAm5BP,IAAIvd,gBAAM,CAACqN,OAAP,EAAJ,EAAsB;AAClBomB,kBAAgB,CAACzzB,gBAAD,CAAhB;AACH,C;;;;ACngCD;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAIp+B,8BAAI,MAAM8vC,gBAAgB,CAAC,cAAD,CAA9B,EAAgD;AAC5C;AACA4C,oBAAQ,CAAChM,QAAT,GAAoB,UAACl9C,GAAD,EAAS;AACzBgN,gDAAI,CAAC,oBAAD,CAAJ;AACA83C,iDAAS,GAFgB,CAIzB;;AACA,QAAMl0C,QAAQ,GAAGs4C,kBAAQ,CAAC/tC,IAAT,CAAc;AAC3BitC,iBAAW,EAAE/qD,oBAAIA;AADU,KAAd,CAAjB;AAIAuT,YAAQ,CAACktC,QAAT,CAAkB99C,GAAlB;AAEA4Q,YAAQ,CAAC2pC,aAAT,GAAyBznD,IAAzB,CAA8B,YAAM;AAChC8d,cAAQ,CAACjO,KAAT,CAAevF,WAAf,CAA2B8oB,SAAS,CAACrB,MAAV,CAAiB7B,KAA5C;AACApS,cAAQ,CAACgqC,aAAT;AACH,KAHD,EAXyB,CAgBzB;;AACAhG,oBAAM,CAACjS,MAAP,CAAcgnB,OAAd,GAAwB72D,IAAxB,CAA6B,UAAA8kC,KAAK,EAAI;AAClCplC,YAAM,CAACwR,GAAP,CAAWxD,QAAX,GAAsBgD,gCAAS,CAACsJ,wBAAM,CAAC2H,WAAR,EAAqB;AAAEmjB,aAAK,EAALA;AAAF,OAArB,CAA/B;AACH,KAFD,EAEG9hC,KAFH,CAES,UAAA/C,GAAG,EAAI;AACZ6d,cAAQ,CAACjc,KAAT,CAAe5B,GAAf;AACH,KAJD;AAKH,GAtBD;AAuBH;;AAED,IAAMgqB,YAAM,GAAGD,mDAAS,CAACtqB,MAAD,CAAxB;AACA,IAAMwR,SAAG,GAAGka,gDAAM,CAAC1rB,MAAD,CAAlB;;AAEA,IAAIwR,SAAG,IAAI+Y,YAAX,EAAmB;AACf,MAAIguD,YAAY,GAAI/mE,SAAG,KAAK+Y,YAA5B;;AAEA,MAAI,CAACguD,YAAL,EAAmB;AACf7hB,sBAAQ,CAAChH,WAAT,CAAqBl+C,SAArB,EAA0BlR,IAA1B,CAA+B,UAAAiC,MAAM,EAAI;AACrCg2E,kBAAY,GAAGh2E,MAAf;AACH,KAFD;AAIA+0B,uCAAW,CAACo/B,kBAAD,EAAW,UAAX,EAAuB,gBAAqD;AAAA,2BAAlD9xD,IAAkD;AAAA,UAA1C4I,GAA0C;AAAA,UAArCuD,KAAqC;AAAA,UAA9B3E,EAA8B;AAAA,UAAxBmrB,QAAwB,QAAxBA,QAAwB;AAAA,UAAd5yB,OAAc,QAAdA,OAAc;;AAEnF,UAAI,CAAC4zE,YAAL,EAAmB;AACf/qE,WAAG,GAAG8c,mDAAS,CAACtqB,MAAD,CAAf;AACH;;AAED,aAAOu3B,QAAQ,CAACl3B,IAAT,CAAcsE,OAAd,EAAuB6I,GAAvB,EAA4BuD,KAA5B,EAAmC3E,EAAnC,CAAP;AACH,KAPU,CAAX;AAQH;AACJ;;AAEDkrB,mCAAW,CAACo/B,kBAAD,EAAW,UAAX,EAAuB,iBAAyC;AAAA,MAAtCj/B,YAAsC,SAAtCA,YAAsC;AAAA,yBAAxB7yB,IAAwB;AAAA,MAAdmM,KAAc;;AACvE,MAAI+iD,gBAAgB,CAAC,0BAAD,CAApB,EAAkD;AAC9C,QAAM13B,WAAW,GAAG3xB,4BAAI,CAAC,UAAClK,GAAD,EAAS;AAC9B,UAAI;AACA;AACAuW,eAAO,CAAC3U,KAAR,CAAc5B,GAAG,IAAIA,GAAG,CAAC+B,KAAzB;AACH,OAHD,CAGE,OAAO2L,IAAP,EAAa,CAEd,CAFC,CACE;AAGJ;;;AACA,aAAOm0C,gBAAM,CAACjS,MAAP,CAAcgnB,OAAd,GAAwB72D,IAAxB,CAA6B,UAAA8kC,KAAK,EAAI;AACzCplC,cAAM,CAACwR,GAAP,CAAWxD,QAAX,GAAsBgD,gCAAS,CAACsJ,wBAAM,CAAC2H,WAAR,EAAqB;AAAEmjB,eAAK,EAALA;AAAF,SAArB,CAA/B;AACH,OAFM,CAAP;AAGH,KAZuB,CAAxB;AAcAr0B,SAAK,CAAC1N,OAAN,GAAgB+4B,WAAhB;AACA,WAAO3E,YAAY,GAAGn0B,KAAf,CAAqB84B,WAArB,CAAP;AACH;;AACD,SAAO3E,YAAY,EAAnB;AACH,CApBU,CAAX;AAsBA,IAAIrsB,QAAQ,GAAG,KAAf;AAEAksB,mCAAW,CAACo/B,kBAAD,EAAW,UAAX,EAAuB,iBAAyC;AAAA,MAAtCj/B,YAAsC,SAAtCA,YAAsC;AAAA,yBAAxB7yB,IAAwB;AAAA,MAAdmM,KAAc;;AAEvE,MAAI3F,QAAJ,EAAc;AACV2L,gDAAI,CAAC,gCAAD,CAAJ;AACA,WAAO,IAAIjV,yCAAJ,CAAiB+I,oBAAjB,CAAP;AACH;;AAEDO,UAAQ,GAAG,IAAX;;AAPuE;AASlE,QAAMotE,UAAU,aAAhB;AACD,QAAMjhD,QAAQ,GAAGxmB,KAAK,CAACynE,UAAD,CAAtB;;AACAznE,SAAK,CAACynE,UAAD,CAAL,GAAoB,SAASC,UAAT,GAA8B;AAC9CrtE,cAAQ,GAAG,KAAX;;AACA,UAAImsB,QAAJ,EAAc;AACV,eAAOA,QAAQ,CAAC1yB,KAAT,CAAe,IAAf,EAAqBmG,SAArB,CAAP;AACH;AACJ,KALD;AAXmE;;AAAA,4BAS9C,CAAE,aAAF,EAAiB,UAAjB,EAA6B,SAA7B,EAAwC,SAAxC,CAT8C,6BASO;AAAA;AAQ7E;;AAED,SAAOysB,YAAY,EAAnB;AACH,CApBU,CAAX;AAsBAH,mCAAW,CAACwsC,IAAI,CAAC3M,OAAN,EAAe,QAAf,EAAyB,iBAAsG;AAAA,MAAzFuhB,cAAyF,SAAnGnhD,QAAmG;AAAA,MAAhEohD,aAAgE,SAAzEh0E,OAAyE;AAAA,yBAAjDC,IAAiD;AAAA,MAAzCgX,GAAyC;AAAA,MAApCmiB,MAAoC;AAAA,MAA5B3wB,OAA4B;AAAA,MAAnBixD,UAAmB;;AACtI,MAAI,CAACjxD,OAAO,CAAC+pD,OAAb,EAAsB;AAClB/pD,WAAO,GAAG;AAAE+pD,aAAO,EAAE/pD,OAAX;AAAoBixD,gBAAU,EAAVA;AAApB,KAAV;AACH;;AACD,SAAOqa,cAAc,CAACr4E,IAAf,CAAoBs4E,aAApB,EAAmC/8D,GAAnC,EAAwCmiB,MAAxC,EAAgD3wB,OAAhD,CAAP;AACH,CALU,CAAX;AAOAkqB,mCAAW,CAAC8qB,gBAAM,CAACrxC,KAAP,CAAa9E,KAAd,EAAqB,UAArB,EAAiC,iBAAuC;AAAA,MAApCwrB,YAAoC,SAApCA,YAAoC;AAAA,yBAAtB7yB,IAAsB;AAAA,MAAdqH,KAAc;;AAE/E,MAAI,CAACA,KAAL,EAAY;AACR,WAAOwrB,YAAY,EAAnB;AACH;;AAED,MAAIxrB,KAAK,IAAIA,KAAK,CAACiiE,KAAN,KAAgB,YAA7B,EAA2C;AACvCjiE,SAAK,CAACiiE,KAAN,GAAcllF,qCAAY,CAACK,QAA3B;AACH;;AAED,MAAI4iB,KAAK,IAAIA,KAAK,CAACggE,KAAN,KAAgB,SAA7B,EAAwC;AACpChgE,SAAK,CAACggE,KAAN,GAAc1kF,qCAAY,CAACC,MAA3B;AACH;;AAED,MAAIykB,KAAK,KAAK,CAACA,KAAK,CAACggE,KAAP,IAAgBhgE,KAAK,CAACggE,KAAN,KAAgB1kF,qCAAY,CAACE,QAAlD,CAAL,IAAoEwkB,KAAK,CAACgiE,IAAN,KAAe,MAAvF,EAA+F;AAC3Fl3D,gDAAI,gCAAJ;AACA9K,SAAK,CAACgiE,IAAN,GAAavkF,oCAAW,CAACE,KAAzB;AACH;;AAED,SAAO6tC,YAAY,EAAnB;AACH,CApBU,CAAX;AAsBAH,mCAAW,CAAC8qB,gBAAD,EAAS,QAAT,EAAmB,iBAAuC;AAAA,MAApC3qB,YAAoC,SAApCA,YAAoC;AAAA,yBAAtB7yB,IAAsB;AAAA,MAAdmM,KAAc;;AAEjE,MAAIA,KAAK,CAACgzD,gBAAV,EAA4B;AACxBhzD,SAAK,CAAComD,OAAN,GAAgBpmD,KAAK,CAACgzD,gBAAtB;AACA,WAAOhzD,KAAK,CAACgzD,gBAAb;AACH;;AAED,SAAOtsC,YAAY,EAAnB;AACH,CARU,CAAX;AAUAH,mCAAW,CAAC8qB,gBAAM,CAACrxC,KAAP,CAAaomD,OAAd,EAAuB,UAAvB,EAAmC,iBAAsD;AAAA,MAAnD5/B,QAAmD,SAAnDA,QAAmD;AAAA,MAAzC5yB,OAAyC,SAAzCA,OAAyC;AAAA,yBAAhCC,IAAgC;AAAA,MAAxBg0E,eAAwB;AAChG,SAAOrhD,QAAQ,CAACl3B,IAAT,CAAcsE,OAAd,EAAuB,SAASwyD,OAAT,CAAiB9zC,IAAjB,EAAgC2qC,OAAhC,EAAyE;AAAA;;AACnG,WAAO,IAAIlsD,yCAAJ,CAAiB,UAACL,OAAD,EAAUiB,MAAV,EAAqB;AAEzC40B,yCAAW,CAAC02B,OAAO,CAACmJ,OAAT,EAAkB,QAAlB,EAA4B,kBAAyF;AAAA,YAA5EuhB,cAA4E,UAAtFnhD,QAAsF;AAAA,YAAnDohD,aAAmD,UAA5Dh0E,OAA4D;AAAA,iCAApCC,IAAoC;AAAA,YAA5BwI,OAA4B;AAAA,YAAnBixD,UAAmB;;AAC5H,YAAI,CAACjxD,OAAO,CAAC+pD,OAAb,EAAsB;AAClB/pD,iBAAO,GAAG;AAAE+pD,mBAAO,EAAE/pD,OAAX;AAAoBixD,sBAAU,EAAVA;AAApB,WAAV;AACH;;AACD,eAAOqa,cAAc,CAACr4E,IAAf,CAAoBs4E,aAApB,EAAmCvrE,OAAnC,CAAP;AACH,OALU,CAAX;;AAOA,eAASyrE,WAAT,CAAqBzzC,KAArB,EAA4B;AACxB3jC,eAAO,CAAC2jC,KAAD,CAAP;AACH;;AAED,eAAS0zC,aAAT,CAAuBv4E,GAAvB,EAA4B;AACxBmC,cAAM,CAACnC,GAAD,CAAN;AACH;;AAEDkF,oCAAM,CAACozE,WAAD,EAAcx1D,IAAd,CAAN;AACA5d,oCAAM,CAACozE,WAAD,EAAc7qB,OAAd,CAAN;AACAvoD,oCAAM,CAACqzE,aAAD,EAAgB9qB,OAAhB,CAAN;AAEA,UAAM+qB,GAAG,GAAG;AACRhoE,aAAK,EAAE;AACH6K,aAAG,EAAK,KAAI,CAAC7K,KAAL,CAAW6K,GADhB;AAEHmiB,gBAAM,EAAE,KAAI,CAAChtB,KAAL,CAAWgtB;AAFhB;AADC,OAAZ;AAOA,UAAIx7B,MAAJ;;AAEA,UAAI;AACAA,cAAM,GAAGq2E,eAAe,CAACv4E,IAAhB,CAAqB04E,GAArB,EAA0BF,WAA1B,EAAuCC,aAAvC,CAAT;AACH,OAFD,CAEE,OAAOv4E,GAAP,EAAY;AACV,eAAOmC,MAAM,CAACnC,GAAD,CAAb;AACH;;AAED,UAAIgC,MAAM,IAAI,OAAOA,MAAM,CAACjC,IAAd,KAAuB,UAArC,EAAiD;AAC7C,eAAOiC,MAAM,CAACjC,IAAP,CAAYmB,OAAZ,EAAqBiB,MAArB,CAAP;AACH;;AAED,UAAIH,MAAM,KAAKgB,SAAf,EAA0B;AACtB,eAAO9B,OAAO,CAACc,MAAD,CAAd;AACH;AACJ,KA3CM,CAAP;AA4CH,GA7CM,CAAP;AA8CH,CA/CU,CAAX;;AAiDA,IAAI6/C,gBAAM,CAACqN,OAAP,EAAJ,EAAsB;AAClB,MAAI,CAACzvD,MAAM,CAACD,OAAZ,EAAqB;AACjBC,UAAM,CAACD,OAAP,GAAiB+B,yCAAjB;AACH;AACJ,C;;ACxMD;;AACA;AAEA;AACA;AAGA;AAEA;AACA;AAkBO,IAAMk3E,IAA6B,GAAG/vC,gBAAM,CAAC;AAChD96B,KAAG,EAAG,aAD0C;AAEhD/N,MAAI,EAAE,QAF0C;AAIhD8qD,UAJgD,oBAIvCn6C,KAJuC,EAIvB;AACrB,QAAM6K,GAAG,GAAG7K,KAAK,CAAC6K,GAAN,IAAatB,wBAAM,CAACsB,GAAhC;AACA,WAAOtB,wBAAM,CAAC0G,oBAAP,CAA4BpF,GAA5B,CAAP;AACH,GAP+C;AAShD4yC,UAAQ,EAAE;AACN3+C,UAAM,EAAE,IADF;AAEN3C,SAAK,EAAG;AAFF,GATsC;AAchDgG,YAAU,EAAE;AACRrB,UAAM,EAAE,OADA;AAERD,SAAK,EAAG;AAFA,GAdoC;AAmBhDszC,YAAU,EAAE;AACRrzC,UAAM,EAAE,IADA;AAERD,SAAK,EAAG;AAFA,GAnBoC;AAwBhDb,OAAK,EAAE;AACHq/B,aAAS,EAAE;AACPloC,UAAI,EAAM,QADH;AAEPy8C,cAAQ,EAAE,KAFH;AAGP79C,SAHO,iBAGQ;AACX,eAAO8kC,2CAAY,EAAnB;AACH,OALM;AAMPie,gBAAU,EAAE;AANL,KADR;AAWHzkB,SAAK,EAAE;AACHl9B,UAAI,EAAQ,QADT;AAEHy8C,cAAQ,EAAI,IAFT;AAGHkF,gBAAU,EAAE;AAHT,KAXJ;AAiBHrZ,mBAAe,EAAE;AACbtoC,UAAI,EAAM,QADG;AAEby8C,cAAQ,EAAE,KAFG;AAGb79C,SAHa,iBAGG;AACZ,eAAOypC,iDAAkB,EAAzB;AACH,OALY;AAMbsZ,gBAAU,EAAE;AANC,KAjBd;AA0BHuU,UAAM,EAAE;AACJl2D,UAAI,EAAQ,SADR;AAEJy8C,cAAQ,EAAI,KAFR;AAGJkF,gBAAU,EAAE;AAHR,KA1BL;AAgCHjuC,OAAG,EAAE;AACD1T,UAAI,EAAQ,QADX;AAEDy8C,cAAQ,EAAI,KAFX;AAGDkF,gBAAU,EAAE,IAHX;AAKD/iD,SALC,iBAKc;AACX,eAAOwT,wBAAM,CAACsB,GAAd;AACH,OAPA;AASDutC,cATC,oBASQvtC,GATR,EASa;AACV,YAAI,CAACtB,wBAAM,CAACiE,UAAP,CAAkB3C,GAAlB,CAAL,EAA6B;AACzB,gBAAM,IAAIjZ,KAAJ,mBAA2BiZ,GAA3B,CAAN;AACH;AACJ;AAbA,KAhCF;AAgDHE,UAAM,EAAE;AACJ5T,UAAI,EAAW,QADX;AAEJy8C,cAAQ,EAAO,KAFX;AAGJkF,gBAAU,EAAK,UAHX;AAIJoD,mBAAa,EAAE,IAJX;AAMJnmD,SANI,iBAMW;AAAA,gCACekuC,uCAAgB,EAD/B;AAAA,YACHh5B,IADG,qBACHA,IADG;AAAA,YACGD,OADH,qBACGA,OADH;;AAEX,eAAWC,IAAX,SAAqBD,OAArB;AACH;AATG,KAhDL;AA4DHk9D,qBAAiB,EAAE;AACf/wE,UAAI,EAAM,QADK;AAEfy8C,cAAQ,EAAE;AAFK,KA5DhB;AAkEHiR,eAAW,EAAE;AACT1tD,UAAI,EAAM,UADD;AAETy8C,cAAQ,EAAE,IAFD;AAGTl6C,UAAI,EAAM;AAHD,KAlEV;AAwEHs0D,UAAM,EAAE;AACJ72D,UAAI,EAAQ,UADR;AAEJy8C,cAAQ,EAAI,KAFR;AAGJC,gBAAU,EAAE;AAHR,KAxEL;AA8EHwb,WAAO,EAAE;AACLl4D,UAAI,EAAQ,UADP;AAELy8C,cAAQ,EAAI,KAFP;AAGLC,gBAAU,EAAE;AAHP,KA9EN;AAoFH3Z,YAAQ,EAAE;AACN/iC,UAAI,EAAQ,UADN;AAENy8C,cAAQ,EAAI,KAFN;AAGNC,gBAAU,EAAE;AAHN,KApFP;AA0FHhiD,YAAQ,EAAE;AACNsF,UAAI,EAAQ,QADN;AAENy8C,cAAQ,EAAI,KAFN;AAGNC,gBAAU,EAAE;AAHN,KA1FP;AAgGHsa,YAAQ,EAAE;AACNh3D,UAAI,EAAM,UADJ;AAENy8C,cAAQ,EAAE,KAFJ;AAGNl6C,UAAI,EAAM,IAHJ;AAINI,UAAI,EAAM;AAJJ,KAhGP;AAuGH+0D,WAAO,EAAE;AACL13D,UAAI,EAAS,QADR;AAEL2hD,gBAAU,EAAG,IAFR;AAGLZ,iBAAW,EAAE,KAHR;AAILniD,SAAG,EAAU,eAAM;AACf,eAAOu8B,0CAAY,CAACh9B,IAAI,CAACC,SAAL,CAAe;AAC/B6G,aAAG,EAAE0mD,mBAAmB;AADO,SAAf,CAAD,CAAnB;AAGH;AARI,KAvGN;AAkHH5nD,SAAK,EAAE;AACH/D,UAAI,EAAS,QADV;AAEHy8C,cAAQ,EAAI,KAFT;AAGHkF,gBAAU,EAAE,IAHT;AAIH/iD,SAJG,iBAIY;AACX,eAAO;AACHoyE,mBAAS,EAAE;AACPC,mBAAO,EAAE;AADF,WADR;AAIHC,sBAAY,EAAE;AACVD,mBAAO,EAAE;AADC,WAJX;AAOHE,4BAAkB,EAAE;AAChBF,mBAAO,EAAE;AADO;AAPjB,SAAP;AAWH;AAhBE;AAlHJ;AAxByC,CAAD,CAA5C,C;;AC3BP;AACA;AAEA;AACA;AACA;AAIA;AACA;AACA;;AAEA,SAASG,WAAT,CAAqBx6D,MAArB,EAAgD;AAAA,oCAC1Bjc,MAAM,CAACyB,IAAP,CAAYgW,wBAAM,CAACiE,UAAnB,CAD0B,qCACM;AAA7C,QAAM3C,GAAG,qBAAT;;AACD,QAAItB,wBAAM,CAACiE,UAAP,CAAkB3C,GAAlB,MAA2BkD,MAA/B,EAAuC;AACnC,aAAOlD,GAAP;AACH;AACJ;AACJ;;AAED,SAAS29D,YAAT,CAAsBz6D,MAAtB,EAAuC;AACnC,MAAM06D,gBAAgB,GAAGF,WAAW,CAACx6D,MAAD,CAApC;;AAEA,MAAI06D,gBAAgB,IAAIA,gBAAgB,KAAK,MAA7C,EAAqD;AACjDl/D,4BAAM,CAACsB,GAAP,GAAa49D,gBAAb;AACH;AACJ;;AAEDD,YAAY,CAAKv5E,MAAM,CAACgO,QAAP,CAAgBwQ,QAArB,UAAoCxe,MAAM,CAACgO,QAAP,CAAgBoN,IAApD,CAAZ;AAEAtZ,yCAAY,CAACZ,4BAAb,CAA0C,UAAAX,GAAG,EAAI;AAAA;;AAE7C4B,+CAAK,CAAC,iBAAD,EAAoB;AACrBG,SAAK,EAAI2H,sCAAc,CAAC1J,GAAD,CADF;AAErBgiD,WAAO,EAAG,EAAD,CAAKpiD,QAAL,CAAcE,IAAd,CAAmBE,GAAnB;AAFY,GAApB,CAAL;AAKAumB,+CAAK,sBACCl4B,6BAAI,CAACC,GAAL,CAASc,UADV,IACwB,kBADxB,SAECf,6BAAI,CAACC,GAAL,CAASe,UAFV,IAEwBsnC,6CAAqB,CAAC32B,GAAD,CAF7C,UAAL;AAKA,SAAO+xD,6CAAS,GAAGhvD,KAAZ,CAAkB,UAAA2K,IAAI,EAAI;AAC7B,QAAIjO,MAAM,CAAC8W,OAAX,EAAoB;AAChB,UAAI;AACA,YAAI9W,MAAM,CAAC8W,OAAP,CAAe3U,KAAnB,EAA0B;AACtBnC,gBAAM,CAAC8W,OAAP,CAAe3U,KAAf,CAAqB,iBAArB,EAAwC8H,sCAAc,CAACgE,IAAD,CAAtD;AACH,SAFD,MAEO,IAAIjO,MAAM,CAAC8W,OAAP,CAAeoP,GAAnB,EAAwB;AAC3BlmB,gBAAM,CAAC8W,OAAP,CAAeoP,GAAf,CAAmB,iBAAnB,EAAsCjc,sCAAc,CAACgE,IAAD,CAApD;AACH;AACJ,OAND,CAME,OAAOwrE,IAAP,EAAa;AACX34E,kBAAU,CAAC,YAAM;AACb,gBAAM24E,IAAN;AACH,SAFS,EAEP,CAFO,CAAV;AAGH;AACJ;AACJ,GAdM,CAAP;AAeH,CA3BD;AA6BA,IAAMziE,aAAa,GAAGy8C,gBAAgB,EAAtC;AACA,IAAMimB,eAAe,GAAG15E,MAAM,CAACgO,QAAP,CAAgBwQ,QAAhB,CAAyBxX,KAAzB,CAA+B,GAA/B,EAAoC,CAApC,CAAxB;;AAiBA,SAAS2yE,SAAT,QAA8I;AAAA,gCAAJ,EAAI;AAAA,MAAzH/9D,GAAyH,QAAzHA,GAAyH;AAAA,MAApHK,KAAoH,QAApHA,KAAoH;AAAA,MAA7GE,QAA6G,QAA7GA,QAA6G;AAAA,MAAnGE,QAAmG,QAAnGA,QAAmG;AAAA,MAAzFC,YAAyF,QAAzFA,YAAyF;AAAA,MAA3E4C,WAA2E,QAA3EA,WAA2E;AAAA,MAA9DrD,KAA8D,QAA9DA,KAA8D;AAAA,MAAvDzB,QAAuD,QAAvDA,QAAuD;AAAA,MAA7CqC,UAA6C,QAA7CA,UAA6C;AAAA,MAAjCC,QAAiC,QAAjCA,QAAiC;;AAE1I,MAAId,GAAJ,EAAS;AACL,QAAI,CAACtB,wBAAM,CAACiE,UAAP,CAAkB3C,GAAlB,CAAL,EAA6B;AACzB,YAAM,IAAIjZ,KAAJ,mBAA2BiZ,GAA3B,CAAN;AACH;;AAED,WAAOtB,wBAAM,CAACsB,GAAd;AACAtB,4BAAM,CAACsB,GAAP,GAAaA,GAAb;AACH,GAPD,MAOO,IAAIwmC,gBAAM,CAACjS,MAAP,IAAiBiS,gBAAM,CAACjS,MAAP,CAAcv0B,GAAnC,EAAwC;AAC3C,WAAOtB,wBAAM,CAACsB,GAAd,CAD2C,CAE3C;;AACAtB,4BAAM,CAACsB,GAAP,GAAawmC,gBAAM,CAACjS,MAAP,CAAcv0B,GAA3B;AACH,GAJM,MAIA,IAAI86C,kBAAQ,CAACvmB,MAAT,IAAmBumB,kBAAQ,CAACvmB,MAAT,CAAgBv0B,GAAvC,EAA4C;AAC/C,WAAOtB,wBAAM,CAACsB,GAAd,CAD+C,CAE/C;;AACAtB,4BAAM,CAACsB,GAAP,GAAa86C,kBAAQ,CAACvmB,MAAT,CAAgBv0B,GAA7B;AACH;;AAED,MAAIK,KAAJ,EAAW;AACP,WAAO3B,wBAAM,CAAC2B,KAAd;AACA3B,4BAAM,CAAC2B,KAAP,GAAeA,KAAf;AACH,GAHD,MAGO,IAAImmC,gBAAM,CAACjS,MAAP,IAAiBiS,gBAAM,CAACjS,MAAP,CAAcl0B,KAAnC,EAA0C;AAC7C,WAAO3B,wBAAM,CAAC2B,KAAd,CAD6C,CAE7C;;AACA3B,4BAAM,CAAC2B,KAAP,GAAemmC,gBAAM,CAACjS,MAAP,CAAcl0B,KAA7B;AACH,GAJM,MAIA,IAAIy6C,kBAAQ,CAACvmB,MAAT,IAAmBumB,kBAAQ,CAACvmB,MAAT,CAAgBl0B,KAAvC,EAA8C;AACjD,WAAO3B,wBAAM,CAAC2B,KAAd,CADiD,CAEjD;;AACA3B,4BAAM,CAAC2B,KAAP,GAAey6C,kBAAQ,CAACvmB,MAAT,CAAgBl0B,KAA/B;AACH;;AAED,MAAIE,QAAJ,EAAc;AACV,WAAO7B,wBAAM,CAAC6B,QAAd,CADU,CAEV;;AACA7B,4BAAM,CAAC6B,QAAP,GAAkBA,QAAlB;AACH,GAJD,MAIO,IAAIimC,gBAAM,CAACjS,MAAP,IAAiBiS,gBAAM,CAACjS,MAAP,CAAch0B,QAAnC,EAA6C;AAChD,WAAO7B,wBAAM,CAAC6B,QAAd,CADgD,CAEhD;;AACA7B,4BAAM,CAAC6B,QAAP,GAAkBimC,gBAAM,CAACjS,MAAP,CAAch0B,QAAhC;AACH,GAJM,MAIA,IAAIu6C,kBAAQ,CAACvmB,MAAT,IAAmBumB,kBAAQ,CAACvmB,MAAT,CAAgBh0B,QAAvC,EAAiD;AACpD,WAAO7B,wBAAM,CAAC6B,QAAd,CADoD,CAEpD;;AACA7B,4BAAM,CAAC6B,QAAP,GAAkBu6C,kBAAQ,CAACvmB,MAAT,CAAgBh0B,QAAlC;AACH;;AAEDO,UAAQ,GAAGA,QAAQ,IAAK0lC,gBAAM,CAACjS,MAAP,IAAiBiS,gBAAM,CAACjS,MAAP,CAAczzB,QAA5C,IAA0Dg6C,kBAAQ,CAACvmB,MAAT,IAAmBumB,kBAAQ,CAACvmB,MAAT,CAAgBzzB,QAAxG;;AAEA,MAAIA,QAAJ,EAAc;AACV,WAAOpC,wBAAM,CAACoC,QAAd;AACApC,4BAAM,CAACoC,QAAP,GAAkBA,QAAlB;AACH;;AAED,MAAIL,QAAJ,EAAc;AACV,WAAO/B,wBAAM,CAAC+B,QAAd;AACA/B,4BAAM,CAAC+B,QAAP,GAAkBA,QAAlB;AACH;;AAEDC,cAAY,GAAGA,YAAY,IAAK8lC,gBAAM,CAACjS,MAAP,IAAiBiS,gBAAM,CAACjS,MAAP,CAAc7zB,YAAhD,IAAkEo6C,kBAAQ,CAACvmB,MAAT,IAAmBumB,kBAAQ,CAACvmB,MAAT,CAAgB7zB,YAApH;;AACA,MAAIA,YAAJ,EAAkB;AACdhC,4BAAM,CAACgC,YAAP,GAAsBA,YAAtB;AACH;;AAED4C,aAAW,GAAGA,WAAW,IAAKkjC,gBAAM,CAACjS,MAAP,IAAiBiS,gBAAM,CAACjS,MAAP,CAAcjxB,WAA/C,IAAgEw3C,kBAAQ,CAACvmB,MAAT,IAAmBumB,kBAAQ,CAACvmB,MAAT,CAAgBjxB,WAAjH;;AACA,MAAIA,WAAJ,EAAiB;AACb5E,4BAAM,CAAC4E,WAAP,GAAqBA,WAArB;AACH;;AAED,MAAIrD,KAAJ,EAAW;AACP,WAAOvB,wBAAM,CAACuB,KAAd;AACAvB,4BAAM,CAACuB,KAAP,GAAeA,KAAf;AACH;;AAED,MAAIY,UAAJ,EAAgB;AACZnC,4BAAM,CAACmC,UAAP,GAAoBA,UAApB;AACH;;AAED,MAAIrC,QAAJ,EAAc;AACVD,eAAW,CAACC,QAAD,CAAX;AACH,GAFD,MAEO;AACHD,eAAW,CAACG,wBAAM,CAACF,QAAR,CAAX;AACH;AACJ;;AAEM,IAAMuO,UAAI,GAAGle,4BAAI,CAAC,iBAA4B;AAAA,MAAzBmvE,kBAAyB,SAAzBA,kBAAyB;;AAEjD,MAAI,CAACxnB,UAAU,EAAf,EAAmB;AACfr7C,gDAAI,CAAC,YAAD,CAAJ;AACH;;AAEDw7C,sBAAoB;AAEpBnB,YAAU;;AAEV,MAAIuQ,IAAI,CAACnB,6BAAL,EAAJ,EAA0C;AACtCmB,QAAI,CAACT,gBAAL;AACH;;AAED,MAAI0Y,kBAAJ,EAAwB;AACpB1kB,6BAAyB;AAC5B;;AAED,MAAIpB,gBAAgB,CAAC,cAAD,CAAhB,IAAoC,CAACxjB,0CAAc,EAAvD,EAA2D;AACvDyjB,iBAAa,CAACz5C,wBAAM,CAACsB,GAAR,CAAb;AACH;;AAEDpB,8CAAI,YAAWF,wBAAM,CAACsB,GAAlB,CAAJ;AAEAiL,+CAAK,uBAAsB6yD,eAAtB,CAAL;AACH,CAzBuB,CAAjB,C,CA2BP;;AACO,SAASG,KAAT,CAAezsE,OAAf,EAA6C;AAAA,MAA9BA,OAA8B;AAA9BA,WAA8B,GAAJ,EAAI;AAAA;;AAChDusE,WAAS,CAACvsE,OAAD,CAAT;AACAub,YAAI,CAACvb,OAAD,CAAJ;AACH;;AAED,IAAI4J,aAAJ,EAAmB;AACf6iE,OAAK,CAAC;AACFj+D,OAAG,EAAiB5E,aAAa,CAAC+iC,YAAd,CAA2B,UAA3B,CADlB;AAEF99B,SAAK,EAAejF,aAAa,CAAC+iC,YAAd,CAA2B,YAA3B,CAFlB;AAGF19B,YAAQ,EAAYrF,aAAa,CAAC+iC,YAAd,CAA2B,gBAA3B,CAHlB;AAIF59B,YAAQ,EAAYnF,aAAa,CAAC+iC,YAAd,CAA2B,gBAA3B,CAJlB;AAKFz9B,gBAAY,EAAQg0B,0CAAc,KAAKt5B,aAAa,CAAC+iC,YAAd,CAA2B,oBAA3B,CAAL,GAAwDx2C,SALxF;AAMF2b,eAAW,EAASoxB,0CAAc,KAAKt5B,aAAa,CAAC+iC,YAAd,CAA2B,mBAA3B,CAAL,GAAuDx2C,SANvF;AAOFsY,SAAK,EAAe7E,aAAa,CAAC+iC,YAAd,CAA2B,YAA3B,CAPlB;AAQF3/B,YAAQ,EAAYpD,aAAa,CAAC+iC,YAAd,CAA2B,gBAA3B,CARlB;AASFt9B,cAAU,EAAUzF,aAAa,CAAC+iC,YAAd,CAA2B,kBAA3B,CATlB;AAUFr9B,YAAQ,EAAY1F,aAAa,CAAC+iC,YAAd,CAA2B,gBAA3B,CAVlB;AAWF6/B,sBAAkB,EAAE5iE,aAAa,CAAC2yB,YAAd,CAA2B,kCAA3B;AAXlB,GAAD,CAAL;AAcH,CAfD,MAeO;AACHkwC,OAAK;AACR;;AAED,IAAI,CAACvpC,0CAAc,EAAnB,EAAuB;AAEnB,MAAIt5B,aAAJ,EAAmB;AAAA;;AAEf,QAAM8iE,cAAc,GAAG9iE,aAAa,CAACC,GAAd,CAAkBjQ,KAAlB,CAAwB,GAAxB,EAA6B,CAA7B,CAAvB;AACA,QAAM+yE,QAAQ,GAAGtvC,0CAAmB,CAACzzB,aAAa,CAACC,GAAf,CAApC;AAEA4P,iDAAK,8BAA6BizD,cAA7B,CAAL;AACAjzD,iDAAK,+BAA6B6yD,eAAe,KAAKI,cAApB,GAAqC,OAArC,GAA+C,UAA5E,EAAL;AACAjzD,iDAAK,6BAA4BvM,wBAAM,CAACmB,OAAP,CAAevW,OAAf,CAAuB,gBAAvB,EAAyC,GAAzC,CAA5B,CAAL;;AAEA,QAAI60E,QAAJ,EAAc;AACVlzD,mDAAK,wBAAwB;AAAEkzD,gBAAQ,EAARA;AAAF,OAAxB,CAAL;AACAlzD,mDAAK,0BAAyB5gB,IAAI,CAACC,KAAL,CAAW6zE,QAAQ,GAAG,IAAtB,CAAzB,CAAL;AACH;;AAEDjzD,iDAAK,kCACCl4B,6BAAI,CAACC,GAAL,CAASE,KADV,IACgCH,6BAAI,CAACG,KAAL,CAAWiC,IAD3C,eAECpC,6BAAI,CAACC,GAAL,CAASG,UAFV,IAEgCJ,6BAAI,CAACI,UAAL,CAAgBkC,WAFhD,eAGCtC,6BAAI,CAACC,GAAL,CAASmB,eAHV,IAGgC+pF,QAHhC,eAICnrF,6BAAI,CAACC,GAAL,CAASyB,kBAJV,IAIgCgkE,oBAAoB,GAAGxrD,IAAvB,CAA4B,GAA5B,CAJhC,gBAAL;AAOH,GArBD,MAqBO;AAAA;;AAEH+d,iDAAK,qBAAL;AACAA,iDAAK,gCAA+BvM,wBAAM,CAACmB,OAAP,CAAevW,OAAf,CAAuB,gBAAvB,EAAyC,GAAzC,CAA/B,CAAL;;AAEA,QAAIsH,QAAQ,CAACwK,aAAb,EAA4B;AAAG;AAC3B6P,mDAAK,kCAAkC;AAAE5P,WAAG,EAAEzK,QAAQ,CAACwK,aAAT,CAAuBC;AAA9B,OAAlC,CAAL,CADwB,CACsD;AACjF;;AAED6P,iDAAK,kCACCl4B,6BAAI,CAACC,GAAL,CAASE,KADV,IACwBH,6BAAI,CAACG,KAAL,CAAWiC,IADnC,eAECpC,6BAAI,CAACC,GAAL,CAASG,UAFV,IAEwBJ,6BAAI,CAACI,UAAL,CAAgBkC,WAFxC,gBAAL;AAIH;AACJ,C;;AC3PD;AACA;AACA;CAC8C;;AAE9C;AACA;AACA;AACA;CAEkB;;AAEX,IAAMw/D,mBAAS,GAAGC,GAAlB;AACP;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEO,IAAMzvD,4BAA4B,GAAGY,yCAAY,CAACZ,4BAAlD;AAEA,IAAMua,iBAAO,GAAGC,SAAhB;AAEA,IAAI0C,kBAAJ;AACA,IAAI47D,IAAJ;;AAEP,IAAIt+D,KAAJ,EAA4C,e,CAM5C;;;AAEO,IAAIg7C,kBAAJ;AACA,IAAIuJ,qBAAJ;AACA,IAAIga,cAAJ;AACA,IAAI9rB,wBAAJ;AACA,IAAI+rB,oBAAJ;AACA,IAAIC,MAAJ;AACA,IAAI9Z,2BAAJ;;AAEP,SAAS+Z,qBAAT,GAAiC;AAC7BC,oBAAS,CAAC7rB,QAAV,CAAmB3+C,MAAnB,GAA4B,IAA5B;AACH;;AAED,IAAIygC,0CAAc,MAAMn1B,KAAxB,EAAkC;AAC9Bu7C,oBAAQ,GAAG2jB,kBAAX;AACApa,uBAAW,GAAGqa,WAAd;AACAja,6BAAiB,GAAGka,iBAApB;AACAN,gBAAc,GAAGI,kBAAjB;AACAH,sBAAoB,GAAGE,qBAAvB;AACAjsB,0BAAU,GAAGqsB,oBAAb;AACAL,QAAM,GAAG;AAAEtzD,SAAK,EAALA,qCAAF;AAASrM,QAAI,EAAJA,oCAAT;AAAezD,QAAI,EAAJA,oCAAf;AAAqB5U,SAAK,EAALA,qCAArB;AAA4B2kB,SAAK,EAALA,qCAA5B;AAAmC/hB,SAAK,EAALA,qCAAKA;AAAxC,GAAT;AACH,C;;AC9DD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;CAE0C;;AAE1C;AACe2kB,wGAAf,E","file":"checkout.v4.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 52);\n","/* @flow */\n\nimport type { Enum } from '../types';\n\ntype BUTTON_STYLE_OPTIONS_ENUM =\n Enum<'label' | 'size' | 'shape' | 'color' | 'layout' |\n 'fundingicons' | 'maxbuttons' | 'branding' | 'tagline' | 'height' | 'installmentperiod'>;\n\nexport const BUTTON_STYLE_OPTIONS : BUTTON_STYLE_OPTIONS_ENUM = {\n LABEL: 'label',\n SIZE: 'size',\n SHAPE: 'shape',\n COLOR: 'color',\n LAYOUT: 'layout',\n MAXBUTTONS: 'maxbuttons',\n FUNDINGICONS: 'fundingicons',\n BRANDING: 'branding',\n TAGLINE: 'tagline',\n HEIGHT: 'height',\n INSTALLMENTPERIOD: 'installmentperiod'\n};\n\ntype BUTTON_LABEL_ENUM =\n Enum<'paypal' | 'checkout' | 'pay' | 'credit' |\n 'card' | 'buynow' | 'installment' | 'venmo' | 'itau' | 'ideal' | 'elv' | 'bancontact' | 'giropay' | 'sofort' | 'eps' | 'mybank' | 'p24' | 'payu' | 'verkkopankki' | 'blik' | 'trustly' | 'maxima' | 'boleto' | 'oxxo'>;\n\nexport const BUTTON_LABEL : BUTTON_LABEL_ENUM = {\n PAYPAL: 'paypal',\n CHECKOUT: 'checkout',\n PAY: 'pay',\n CREDIT: 'credit',\n CARD: 'card',\n BUYNOW: 'buynow',\n INSTALLMENT: 'installment',\n VENMO: 'venmo',\n ITAU: 'itau',\n IDEAL: 'ideal',\n ELV: 'elv',\n BANCONTACT: 'bancontact',\n GIROPAY: 'giropay',\n SOFORT: 'sofort',\n EPS: 'eps',\n MYBANK: 'mybank',\n P24: 'p24',\n PAYU: 'payu',\n VERKKOPANKKI: 'verkkopankki',\n BLIK: 'blik',\n TRUSTLY: 'trustly',\n MAXIMA: 'maxima',\n BOLETO: 'boleto',\n OXXO: 'oxxo'\n};\n\ntype BUTTON_COLOR_ENUM =\n Enum<'gold' | 'blue' | 'silver' | 'black' | 'darkblue' | 'transparent' | 'white'>;\n\nexport const BUTTON_COLOR : BUTTON_COLOR_ENUM = {\n GOLD: 'gold',\n BLUE: 'blue',\n SILVER: 'silver',\n BLACK: 'black',\n DARKBLUE: 'darkblue',\n WHITE: 'white',\n TRANSPARENT: 'transparent'\n};\n\ntype BUTTON_LOGO_COLOR_ENUM =\n Enum<'blue' | 'white' | 'black' | 'any'>;\n\nexport const BUTTON_LOGO_COLOR : BUTTON_LOGO_COLOR_ENUM = {\n BLUE: 'blue',\n WHITE: 'white',\n BLACK: 'black',\n ANY: 'any'\n};\n\ntype BUTTON_SIZE_ENUM =\n Enum<'tiny' | 'small' | 'medium' | 'large' | 'huge' | 'responsive'>;\n\nexport const BUTTON_SIZE : BUTTON_SIZE_ENUM = {\n TINY: 'tiny',\n SMALL: 'small',\n MEDIUM: 'medium',\n LARGE: 'large',\n HUGE: 'huge',\n RESPONSIVE: 'responsive'\n};\n\ntype BUTTON_TAGLINE_COLOR_ENUM =\n Enum<'black' | 'blue'>;\n\nexport const BUTTON_TAGLINE_COLOR : BUTTON_TAGLINE_COLOR_ENUM = {\n BLACK: 'black',\n BLUE: 'blue'\n};\n\ntype BUTTON_SHAPE_ENUM =\n Enum<'pill' | 'rect'>;\n\nexport const BUTTON_SHAPE : BUTTON_SHAPE_ENUM = {\n PILL: 'pill',\n RECT: 'rect'\n};\n\ntype BUTTON_BRANDING_ENUM =\n Enum<'branded' | 'unbranded'>;\n\nexport const BUTTON_BRANDING : BUTTON_BRANDING_ENUM = {\n BRANDED: 'branded',\n UNBRANDED: 'unbranded'\n};\n\ntype BUTTON_LAYOUT_ENUM =\n Enum<'horizontal' | 'vertical'>;\n\nexport const BUTTON_LAYOUT : BUTTON_LAYOUT_ENUM = {\n HORIZONTAL: 'horizontal',\n VERTICAL: 'vertical'\n};\n\ntype BUTTON_NUMBER_ENUM =\n Enum<'single' | 'multiple'>;\n\nexport const BUTTON_NUMBER : BUTTON_NUMBER_ENUM = {\n SINGLE: 'single',\n MULTIPLE: 'multiple'\n};\n\ntype BUTTON_LOGO_ENUM =\n Enum<'pp' | 'paypal' | 'venmo' | 'itau' | 'credit' | 'ideal' | 'elv' | 'bancontact' | 'giropay' | 'sofort' | 'eps' | 'mybank' | 'p24' | 'payu' | 'verkkopankki' | 'blik' | 'trustly' | 'maxima' | 'boleto' | 'oxxo'>;\n\nexport const BUTTON_LOGO : BUTTON_LOGO_ENUM = {\n PP: 'pp',\n PAYPAL: 'paypal',\n VENMO: 'venmo',\n ITAU: 'itau',\n CREDIT: 'credit',\n IDEAL: 'ideal',\n ELV: 'elv',\n BANCONTACT: 'bancontact',\n GIROPAY: 'giropay',\n SOFORT: 'sofort',\n EPS: 'eps',\n MYBANK: 'mybank',\n P24: 'p24',\n PAYU: 'payu',\n VERKKOPANKKI: 'verkkopankki',\n BLIK: 'blik',\n TRUSTLY: 'trustly',\n MAXIMA: 'maxima',\n BOLETO: 'boleto',\n OXXO: 'oxxo'\n};\n","/* @flow */\n\nexport const CHECKOUT_OVERLAY_COLOR = {\n BLACK: 'black',\n WHITE: 'white'\n};\n","/* @flow */\n\nexport const FUNDING = {\n PAYPAL: 'paypal',\n VENMO: 'venmo',\n ITAU: 'itau',\n CREDIT: 'credit',\n CARD: 'card',\n IDEAL: 'ideal',\n ELV: 'elv',\n BANCONTACT: 'bancontact',\n GIROPAY: 'giropay',\n SOFORT: 'sofort',\n EPS: 'eps',\n MYBANK: 'mybank',\n P24: 'p24',\n ZIMPLER: 'zimpler',\n PAYU: 'payu',\n VERKKOPANKKI: 'verkkopankki',\n BLIK: 'blik',\n TRUSTLY: 'trustly',\n MAXIMA: 'maxima',\n BOLETO: 'boleto',\n OXXO: 'oxxo'\n};\n\nexport const CARD = {\n VISA: 'visa',\n MASTERCARD: 'mastercard',\n AMEX: 'amex',\n DISCOVER: 'discover',\n SWITCH: 'switch',\n MAESTRO: 'maestro',\n HIPER: 'hiper',\n ELO: 'elo',\n JCB: 'jcb',\n CUP: 'cup',\n COFINOGA: 'cofinoga',\n COFIDIS: 'cofidis',\n CETELEM: 'cetelem',\n CBNATIONALE: 'cbnationale'\n};\n\nexport const FUNDING_ELIGIBILITY_REASON = {\n PRIMARY: 'The funding source is the primary source',\n NOT_ENABLED: 'The funding source is not currently enabled for use',\n SECONDARY_DISALLOWED: 'The funding source is disallowed as a secondary button',\n OPT_OUT: 'The funding source was disallowed in funding.disallowed',\n OPT_IN: 'The funding source was allowed in funding.allowed',\n DISALLOWED_COUNTRY: 'The funding source is not enabled for the current locale',\n DEFAULT_COUNTRY: 'The funding source is enabled by default for the current locale',\n DEFAULT: 'The funding source is enabled by default for all users',\n REMEMBERED: 'The funding source was remembered for the current user',\n NEED_OPT_IN: 'The funding source needs to be allowed in funding.allowed',\n COMMIT_NOT_SET: 'The funding source is not enabled when commit is not set as true',\n INVALID_ENV: 'The funding source is not supported in this environment'\n};\n\nexport const CARD_PRIORITY = [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.DISCOVER,\n CARD.SWITCH,\n CARD.MAESTRO,\n CARD.HIPER,\n CARD.ELO,\n CARD.JCB,\n CARD.CUP,\n CARD.COFINOGA,\n CARD.COFIDIS,\n CARD.CETELEM,\n CARD.CBNATIONALE\n];\n","/* @flow */\n\nexport const ENV = {\n LOCAL: 'local',\n STAGE: 'stage',\n SANDBOX: 'sandbox',\n PRODUCTION: 'production',\n TEST: 'test',\n DEMO: 'demo'\n};\n\nexport const USERS = {\n ALL: 'all',\n REMEMBERED: 'remembered'\n};\n\nexport const SOURCE = {\n MANUAL: 'manual',\n BUTTON_FACTORY: 'button_factory'\n};\n\nexport const LOG_LEVEL = {\n DEBUG: 'debug',\n INFO: 'info',\n WARN: 'warn',\n ERROR: 'error'\n};\n\nexport const PAYMENT_TYPE = {\n EC_TOKEN: 'ec_token',\n BA_TOKEN: 'ba_token',\n PAY_ID: 'pay_id'\n};\n\nexport const PPTM_ID = 'xo-pptm';\n\nexport const ATTRIBUTE = {\n BUTTON: 'data-button',\n FUNDING_SOURCE: 'data-funding-source',\n CARD: 'data-card',\n VERSION: 'data-version',\n LAYOUT: 'data-layout',\n SIZE: 'data-size'\n};\n\nexport const PLATFORM = {\n DESKTOP: 'desktop',\n MOBILE: 'mobile'\n};\n\nexport const DEFAULT = 'default';\n\n\n","/* @flow */\n\nimport { PAYMENT_TYPE } from './misc';\n\nexport const FPTI = {\n\n KEY: {\n FEED: 'feed_name',\n STATE: 'state_name',\n TRANSITION: 'transition_name',\n BUTTON_TYPE: 'button_type',\n SESSION_UID: 'page_session_id',\n BUTTON_SESSION_UID: 'button_session_id',\n TOKEN: 'token',\n CONTEXT_ID: 'context_id',\n CONTEXT_TYPE: 'context_type',\n REFERER: 'referer_url',\n PAY_ID: 'pay_id',\n SELLER_ID: 'seller_id',\n DATA_SOURCE: 'serverside_data_source',\n BUTTON_SOURCE: 'button_source',\n ERROR_CODE: 'ext_error_code',\n ERROR_DESC: 'ext_error_desc',\n PAGE_LOAD_TIME: 'page_load_time',\n EXPERIMENT_NAME: 'pxp_exp_id',\n TREATMENT_NAME: 'pxp_trtmnt_id',\n TRANSITION_TIME: 'transition_time',\n FUNDING_LIST: 'eligible_payment_methods',\n FUNDING_COUNT: 'eligible_payment_count',\n CHOSEN_FUNDING: 'selected_payment_method',\n BUTTON_LAYOUT: 'button_layout',\n BUTTON_COLOR: 'button_color',\n BUTTON_SIZE: 'button_size',\n BUTTON_SHAPE: 'button_shape',\n BUTTON_LABEL: 'button_label',\n BUTTON_WIDTH: 'button_width',\n VERSION: 'checkoutjs_version',\n MAX_BUTTONS: 'max_buttons',\n FUNDING_REMEMBERED: 'funding_remembered',\n BUTTON_TAGLINE_ENABLED: 'button_tagline_enabled',\n RESPONSE_DURATION: 'response_duration',\n PAYMENT_FLOW: 'payment_flow',\n BUTTON_VERSION: 'button_version'\n },\n\n BUTTON_TYPE: {\n IFRAME: 'iframe',\n HTML: 'html',\n CUSTOM: 'custom'\n },\n\n DATA_SOURCE: {\n CHECKOUT: 'checkout'\n },\n\n CONTEXT_TYPE: {\n BUTTON_SESSION_ID: 'button_session_id',\n [ PAYMENT_TYPE.PAY_ID ]: 'Pay-ID',\n [ PAYMENT_TYPE.EC_TOKEN ]: 'EC-Token',\n [ PAYMENT_TYPE.BA_TOKEN ]: 'EC-Token'\n },\n\n FEED: {\n CHECKOUTJS: 'checkoutjs'\n },\n\n STATE: {\n LOAD: 'checkoutjs_load',\n BUTTON: 'checkoutjs_button',\n CHECKOUT: 'checkoutjs_checkout',\n PPTM: 'checkoutjs_pptm'\n },\n\n TRANSITION: {\n SCRIPT_LOAD: 'process_script_load',\n\n BUTTON_RENDER: 'process_button_render',\n BUTTON_LOAD: 'process_button_load',\n BUTTON_CLICK: 'process_button_click',\n\n BUTTON_RENDER_INTRANET_MODE: 'process_button_render_intranet_mode',\n BUTTON_CLICK_INTRANET_MODE: 'process_button_click_intranet_mode',\n\n CREATE_PAYMENT: 'process_create_payment',\n RECIEVE_PAYMENT: 'process_recieve_payment',\n\n CHECKOUT_INIT: 'process_checkout_init',\n CHECKOUT_AUTHORIZE: 'process_checkout_authorize',\n CHECKOUT_SHIPPING_CHANGE: 'process_checkout_shipping_change',\n CHECKOUT_CANCEL: 'process_checkout_cancel',\n CHECKOUT_ERROR: 'process_checkout_error',\n\n EXTERNAL_EXPERIMENT: 'process_external_experiment',\n EXTERNAL_EXPERIMENT_COMPLETE: 'process_external_experiment_complete',\n\n PPTM_LOAD: 'process_pptm_load',\n PPTM_LOADED: 'process_pptm_loaded'\n }\n};\n","/* @flow */\n\nexport const COUNTRY = {\n AD: 'AD',\n AE: 'AE',\n AG: 'AG',\n AI: 'AI',\n AL: 'AL',\n AM: 'AM',\n AN: 'AN',\n AO: 'AO',\n AR: 'AR',\n AT: 'AT',\n AU: 'AU',\n AW: 'AW',\n AZ: 'AZ',\n BA: 'BA',\n BB: 'BB',\n BE: 'BE',\n BF: 'BF',\n BG: 'BG',\n BH: 'BH',\n BI: 'BI',\n BJ: 'BJ',\n BM: 'BM',\n BN: 'BN',\n BO: 'BO',\n BR: 'BR',\n BS: 'BS',\n BT: 'BT',\n BW: 'BW',\n BY: 'BY',\n BZ: 'BZ',\n C2: 'C2',\n CA: 'CA',\n CD: 'CD',\n CG: 'CG',\n CH: 'CH',\n CI: 'CI',\n CK: 'CK',\n CL: 'CL',\n CM: 'CM',\n CN: 'CN',\n CO: 'CO',\n CR: 'CR',\n CV: 'CV',\n CY: 'CY',\n CZ: 'CZ',\n DE: 'DE',\n DJ: 'DJ',\n DK: 'DK',\n DM: 'DM',\n DO: 'DO',\n DZ: 'DZ',\n EC: 'EC',\n EE: 'EE',\n EG: 'EG',\n ER: 'ER',\n ES: 'ES',\n ET: 'ET',\n FI: 'FI',\n FJ: 'FJ',\n FK: 'FK',\n FM: 'FM',\n FO: 'FO',\n FR: 'FR',\n GA: 'GA',\n GB: 'GB',\n GD: 'GD',\n GE: 'GE',\n GF: 'GF',\n GI: 'GI',\n GL: 'GL',\n GM: 'GM',\n GN: 'GN',\n GP: 'GP',\n GR: 'GR',\n GT: 'GT',\n GW: 'GW',\n GY: 'GY',\n HK: 'HK',\n HN: 'HN',\n HR: 'HR',\n HU: 'HU',\n ID: 'ID',\n IE: 'IE',\n IL: 'IL',\n IN: 'IN',\n IS: 'IS',\n IT: 'IT',\n JM: 'JM',\n JO: 'JO',\n JP: 'JP',\n KE: 'KE',\n KG: 'KG',\n KH: 'KH',\n KI: 'KI',\n KM: 'KM',\n KN: 'KN',\n KR: 'KR',\n KW: 'KW',\n KY: 'KY',\n KZ: 'KZ',\n LA: 'LA',\n LC: 'LC',\n LI: 'LI',\n LK: 'LK',\n LS: 'LS',\n LT: 'LT',\n LU: 'LU',\n LV: 'LV',\n MA: 'MA',\n MC: 'MC',\n MD: 'MD',\n ME: 'ME',\n MG: 'MG',\n MH: 'MH',\n MK: 'MK',\n ML: 'ML',\n MN: 'MN',\n MQ: 'MQ',\n MR: 'MR',\n MS: 'MS',\n MT: 'MT',\n MU: 'MU',\n MV: 'MV',\n MW: 'MW',\n MX: 'MX',\n MY: 'MY',\n MZ: 'MZ',\n NA: 'NA',\n NC: 'NC',\n NE: 'NE',\n NF: 'NF',\n NG: 'NG',\n NI: 'NI',\n NL: 'NL',\n NO: 'NO',\n NP: 'NP',\n NR: 'NR',\n NU: 'NU',\n NZ: 'NZ',\n OM: 'OM',\n PA: 'PA',\n PE: 'PE',\n PF: 'PF',\n PG: 'PG',\n PH: 'PH',\n PL: 'PL',\n PM: 'PM',\n PN: 'PN',\n PT: 'PT',\n PW: 'PW',\n PY: 'PY',\n QA: 'QA',\n RE: 'RE',\n RO: 'RO',\n RS: 'RS',\n RU: 'RU',\n RW: 'RW',\n SA: 'SA',\n SB: 'SB',\n SC: 'SC',\n SE: 'SE',\n SG: 'SG',\n SH: 'SH',\n SI: 'SI',\n SJ: 'SJ',\n SK: 'SK',\n SL: 'SL',\n SM: 'SM',\n SN: 'SN',\n SO: 'SO',\n SR: 'SR',\n ST: 'ST',\n SV: 'SV',\n SZ: 'SZ',\n TC: 'TC',\n TD: 'TD',\n TG: 'TG',\n TH: 'TH',\n TJ: 'TJ',\n TM: 'TM',\n TN: 'TN',\n TO: 'TO',\n TR: 'TR',\n TT: 'TT',\n TV: 'TV',\n TW: 'TW',\n TZ: 'TZ',\n UA: 'UA',\n UG: 'UG',\n US: 'US',\n UY: 'UY',\n VA: 'VA',\n VC: 'VC',\n VE: 'VE',\n VG: 'VG',\n VN: 'VN',\n VU: 'VU',\n WF: 'WF',\n WS: 'WS',\n YE: 'YE',\n YT: 'YT',\n ZA: 'ZA',\n ZM: 'ZM',\n ZW: 'ZW'\n};\n\nexport const LANG = {\n AR: 'ar',\n CS: 'cs',\n DA: 'da',\n DE: 'de',\n EL: 'el',\n EN: 'en',\n ES: 'es',\n FI: 'fi',\n FR: 'fr',\n HE: 'he',\n HU: 'hu',\n ID: 'id',\n IT: 'it',\n JA: 'ja',\n KO: 'ko',\n NL: 'nl',\n NO: 'no',\n PL: 'pl',\n PT: 'pt',\n RU: 'ru',\n SK: 'sk',\n SV: 'sv',\n TH: 'th',\n TR: 'tr',\n ZH: 'zh'\n};\n\nexport const LANG_TO_DEFAULT_COUNTRY = {\n [LANG.AR]: COUNTRY.SA,\n [LANG.CS]: COUNTRY.CZ,\n [LANG.DA]: COUNTRY.DK,\n [LANG.DE]: COUNTRY.DE,\n [LANG.EL]: COUNTRY.GR,\n [LANG.EN]: COUNTRY.US,\n [LANG.ES]: COUNTRY.ES,\n [LANG.FI]: COUNTRY.FI,\n [LANG.FR]: COUNTRY.FR,\n [LANG.HE]: COUNTRY.IL,\n [LANG.HU]: COUNTRY.HU,\n [LANG.ID]: COUNTRY.ID,\n [LANG.IT]: COUNTRY.IT,\n [LANG.JA]: COUNTRY.JP,\n [LANG.KO]: COUNTRY.KR,\n [LANG.NL]: COUNTRY.NL,\n [LANG.NO]: COUNTRY.NO,\n [LANG.PL]: COUNTRY.PL,\n [LANG.PT]: COUNTRY.PT,\n [LANG.RU]: COUNTRY.RU,\n [LANG.SK]: COUNTRY.SK,\n [LANG.SV]: COUNTRY.SE,\n [LANG.TH]: COUNTRY.TH,\n [LANG.TR]: COUNTRY.TR,\n [LANG.ZH]: COUNTRY.CN\n};\n\nexport const ALLOWED_INSTALLMENT_COUNTRIES = [ COUNTRY.BR, COUNTRY.MX ];\nexport const ALLOWED_INSTALLMENT_PERIOD = {\n BR: [ 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ],\n MX: [ 3, 6, 9, 12 ]\n};\n","/* @flow */\n\nimport { COUNTRY, LANG } from './country';\n\nexport const LOCALE = {\n [COUNTRY.AD]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AE]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH, LANG.AR ],\n [COUNTRY.AG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AI]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AL]: [ LANG.EN ],\n [COUNTRY.AM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AN]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AO]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AR]: [ LANG.ES, LANG.EN ],\n [COUNTRY.AT]: [ LANG.DE, LANG.EN ],\n [COUNTRY.AU]: [ LANG.EN ],\n [COUNTRY.AW]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BA]: [ LANG.EN ],\n [COUNTRY.BB]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BE]: [ LANG.EN, LANG.NL, LANG.FR ],\n [COUNTRY.BF]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.BG]: [ LANG.EN ],\n [COUNTRY.BH]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BI]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.BJ]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.BM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BN]: [ LANG.EN ],\n [COUNTRY.BO]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.BR]: [ LANG.PT, LANG.EN ],\n [COUNTRY.BS]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BT]: [ LANG.EN ],\n [COUNTRY.BW]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BY]: [ LANG.EN ],\n [COUNTRY.BZ]: [ LANG.EN, LANG.ES, LANG.FR, LANG.ZH ],\n [COUNTRY.C2]: [ LANG.ZH, LANG.EN ],\n [COUNTRY.CA]: [ LANG.EN, LANG.FR ],\n [COUNTRY.CD]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.CG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.CH]: [ LANG.DE, LANG.FR, LANG.EN ],\n [COUNTRY.CI]: [ LANG.FR, LANG.EN ],\n [COUNTRY.CK]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.CL]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.CM]: [ LANG.FR, LANG.EN ],\n [COUNTRY.CN]: [ LANG.ZH ],\n [COUNTRY.CO]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.CR]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.CV]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.CY]: [ LANG.EN ],\n [COUNTRY.CZ]: [ LANG.CS, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.DE]: [ LANG.DE, LANG.EN ],\n [COUNTRY.DJ]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.DK]: [ LANG.DA, LANG.EN ],\n [COUNTRY.DM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.DO]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.DZ]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.EC]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.EE]: [ LANG.EN, LANG.RU, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.EG]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ER]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ES]: [ LANG.ES, LANG.EN ],\n [COUNTRY.ET]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.FI]: [ LANG.FI, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.FJ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.FK]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.FM]: [ LANG.EN ],\n [COUNTRY.FO]: [ LANG.DA, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.FR]: [ LANG.FR, LANG.EN ],\n [COUNTRY.GA]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.GB]: [ LANG.EN ],\n [COUNTRY.GD]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GE]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GF]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GI]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GL]: [ LANG.DA, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GN]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.GP]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GR]: [ LANG.EL, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GT]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.GW]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GY]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.HK]: [ LANG.EN, LANG.ZH ],\n [COUNTRY.HN]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.HR]: [ LANG.EN ],\n [COUNTRY.HU]: [ LANG.HU, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ID]: [ LANG.ID, LANG.EN ],\n [COUNTRY.IE]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.IL]: [ LANG.HE, LANG.EN ],\n [COUNTRY.IN]: [ LANG.EN ],\n [COUNTRY.IS]: [ LANG.EN ],\n [COUNTRY.IT]: [ LANG.IT, LANG.EN ],\n [COUNTRY.JM]: [ LANG.EN, LANG.ES, LANG.FR, LANG.ZH ],\n [COUNTRY.JO]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.JP]: [ LANG.JA, LANG.EN ],\n [COUNTRY.KE]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KH]: [ LANG.EN ],\n [COUNTRY.KI]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KM]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.KN]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KR]: [ LANG.KO, LANG.EN ],\n [COUNTRY.KW]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KY]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LA]: [ LANG.EN ],\n [COUNTRY.LC]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LI]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LK]: [ LANG.EN ],\n [COUNTRY.LS]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LT]: [ LANG.EN, LANG.RU, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LU]: [ LANG.EN, LANG.DE, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LV]: [ LANG.EN, LANG.RU, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MA]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MC]: [ LANG.FR, LANG.EN ],\n [COUNTRY.MD]: [ LANG.EN ],\n [COUNTRY.ME]: [ LANG.EN ],\n [COUNTRY.MG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MH]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MK]: [ LANG.EN ],\n [COUNTRY.ML]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.MN]: [ LANG.EN ],\n [COUNTRY.MQ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MR]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MS]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MT]: [ LANG.EN ],\n [COUNTRY.MU]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MV]: [ LANG.EN ],\n [COUNTRY.MW]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MX]: [ LANG.ES, LANG.EN ],\n [COUNTRY.MY]: [ LANG.EN ],\n [COUNTRY.MZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NA]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NC]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NE]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.NF]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NG]: [ LANG.EN ],\n [COUNTRY.NI]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.NL]: [ LANG.NL, LANG.EN ],\n [COUNTRY.NO]: [ LANG.NO, LANG.EN ],\n [COUNTRY.NP]: [ LANG.EN ],\n [COUNTRY.NR]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NU]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.OM]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PA]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.PE]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.PF]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PH]: [ LANG.EN ],\n [COUNTRY.PL]: [ LANG.PL, LANG.EN ],\n [COUNTRY.PM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PN]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PT]: [ LANG.PT, LANG.EN ],\n [COUNTRY.PW]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PY]: [ LANG.ES, LANG.EN ],\n [COUNTRY.QA]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH, LANG.AR ],\n [COUNTRY.RE]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.RO]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.RS]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.RU]: [ LANG.RU, LANG.EN ],\n [COUNTRY.RW]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.SA]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SB]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SC]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.SE]: [ LANG.SV, LANG.EN ],\n [COUNTRY.SG]: [ LANG.EN ],\n [COUNTRY.SH]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SI]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SJ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SK]: [ LANG.SK, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SL]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SN]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.SO]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SR]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ST]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SV]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.SZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TC]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TD]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.TG]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.TH]: [ LANG.TH, LANG.EN ],\n [COUNTRY.TJ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TN]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TO]: [ LANG.EN ],\n [COUNTRY.TR]: [ LANG.TR, LANG.EN ],\n [COUNTRY.TT]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TV]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TW]: [ LANG.ZH, LANG.EN ],\n [COUNTRY.TZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.UA]: [ LANG.EN, LANG.RU, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.UG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.US]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.UY]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.VA]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.VC]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.VE]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.VG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.VN]: [ LANG.EN ],\n [COUNTRY.VU]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.WF]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.WS]: [ LANG.EN ],\n [COUNTRY.YE]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.YT]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ZA]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ZM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ZW]: [ LANG.EN ]\n};\n","/* @flow */\n\nexport * from './button';\nexport * from './checkout';\nexport * from './funding';\nexport * from './fpti';\nexport * from './country';\nexport * from './misc';\nexport * from './locale';\n","/* @flow */\n\nexport function isPromise(item : mixed) : boolean {\n try {\n if (!item) {\n return false;\n }\n\n if (typeof Promise !== 'undefined' && item instanceof Promise) {\n return true;\n }\n\n if (typeof window !== 'undefined' && typeof window.Window === 'function' && item instanceof window.Window) {\n return false;\n }\n\n if (typeof window !== 'undefined' && typeof window.constructor === 'function' && item instanceof window.constructor) {\n return false;\n }\n\n let toString = ({}).toString;\n\n if (toString) {\n let name = toString.call(item);\n\n if (name === '[object Window]' || name === '[object global]' || name === '[object DOMWindow]') {\n return false;\n }\n }\n\n if (typeof item.then === 'function') {\n return true;\n }\n } catch (err) {\n return false;\n }\n\n return false;\n}\n","/* @flow */\n\nimport type { ZalgoPromise } from './promise';\n\nconst dispatchedErrors = [];\nconst possiblyUnhandledPromiseHandlers : Array<(mixed, promise? : ZalgoPromise) => void> = [];\n\nexport function dispatchPossiblyUnhandledError(err : mixed, promise : ZalgoPromise) {\n\n if (dispatchedErrors.indexOf(err) !== -1) {\n return;\n }\n\n dispatchedErrors.push(err);\n\n setTimeout(() => {\n if (__DEBUG__) {\n // $FlowFixMe\n throw new Error(`${ err.stack || err.toString() }\\n\\nFrom promise:\\n\\n${ promise.stack }`);\n }\n\n throw err;\n }, 1);\n\n for (let j = 0; j < possiblyUnhandledPromiseHandlers.length; j++) {\n // $FlowFixMe\n possiblyUnhandledPromiseHandlers[j](err, promise);\n }\n}\n\nexport function onPossiblyUnhandledException(handler : (mixed, promise? : ZalgoPromise) => void) : { cancel : () => void } {\n possiblyUnhandledPromiseHandlers.push(handler);\n\n return {\n cancel() {\n possiblyUnhandledPromiseHandlers.splice(possiblyUnhandledPromiseHandlers.indexOf(handler), 1);\n }\n };\n}\n","/* @flow */\n\nimport type { ZalgoPromise } from './promise';\n\nlet activeCount = 0;\nlet flushPromise;\n\nfunction flushActive() {\n if (!activeCount && flushPromise) {\n const promise = flushPromise;\n flushPromise = null;\n promise.resolve();\n }\n}\n\nexport function startActive() {\n activeCount += 1;\n}\n\nexport function endActive() {\n activeCount -= 1;\n flushActive();\n}\n\nexport function awaitActive(Zalgo : Class>) : ZalgoPromise { // eslint-disable-line no-undef\n let promise = flushPromise = flushPromise || new Zalgo();\n flushActive();\n return promise;\n}\n","/* @flow */\n\nimport { isPromise } from './utils';\nimport { onPossiblyUnhandledException, dispatchPossiblyUnhandledError } from './exceptions';\nimport { startActive, endActive, awaitActive } from './flush';\n\nexport class ZalgoPromise {\n\n resolved : boolean\n rejected : boolean\n errorHandled : boolean\n value : R\n error : mixed\n handlers : Array<{\n promise : ZalgoPromise<*>,\n onSuccess : void | (result : R) => mixed,\n onError : void | (error : mixed) => mixed\n }>\n dispatching : boolean\n stack : string\n\n constructor(handler : ?(resolve : (result : R) => void, reject : (error : mixed) => void) => void) {\n\n this.resolved = false;\n this.rejected = false;\n this.errorHandled = false;\n\n this.handlers = [];\n\n if (handler) {\n\n let result;\n let error;\n let resolved = false;\n let rejected = false;\n let isAsync = false;\n\n startActive();\n\n try {\n handler(res => {\n if (isAsync) {\n this.resolve(res);\n } else {\n resolved = true;\n result = res;\n }\n\n }, err => {\n if (isAsync) {\n this.reject(err);\n } else {\n rejected = true;\n error = err;\n }\n });\n\n } catch (err) {\n endActive();\n this.reject(err);\n return;\n }\n\n endActive();\n\n isAsync = true;\n\n if (resolved) {\n // $FlowFixMe\n this.resolve(result);\n } else if (rejected) {\n this.reject(error);\n }\n }\n\n if (__DEBUG__) {\n try {\n throw new Error(`ZalgoPromise`);\n } catch (err) {\n this.stack = err.stack;\n }\n }\n }\n\n resolve(result : R) : ZalgoPromise {\n if (this.resolved || this.rejected) {\n return this;\n }\n\n if (isPromise(result)) {\n throw new Error('Can not resolve promise with another promise');\n }\n\n this.resolved = true;\n this.value = result;\n this.dispatch();\n\n return this;\n }\n\n reject(error : mixed) : ZalgoPromise {\n if (this.resolved || this.rejected) {\n return this;\n }\n\n if (isPromise(error)) {\n throw new Error('Can not reject promise with another promise');\n }\n\n if (!error) {\n // $FlowFixMe\n let err = (error && typeof error.toString === 'function' ? error.toString() : Object.prototype.toString.call(error));\n error = new Error(`Expected reject to be called with Error, got ${ err }`);\n }\n\n this.rejected = true;\n this.error = error;\n\n if (!this.errorHandled) {\n setTimeout(() => {\n if (!this.errorHandled) {\n dispatchPossiblyUnhandledError(error, this);\n }\n }, 1);\n }\n\n this.dispatch();\n\n return this;\n }\n\n asyncReject(error : mixed) : ZalgoPromise {\n this.errorHandled = true;\n this.reject(error);\n return this;\n }\n \n dispatch() {\n\n let { dispatching, resolved, rejected, handlers } = this;\n\n if (dispatching) {\n return;\n }\n\n if (!resolved && !rejected) {\n return;\n }\n\n this.dispatching = true;\n startActive();\n\n const chain = (firstPromise : ZalgoPromise, secondPromise : ZalgoPromise) => {\n return firstPromise.then(res => {\n secondPromise.resolve(res);\n }, err => {\n secondPromise.reject(err);\n });\n };\n\n for (let i = 0; i < handlers.length; i++) {\n\n let { onSuccess, onError, promise } = handlers[i];\n\n let result;\n\n if (resolved) {\n\n try {\n result = onSuccess ? onSuccess(this.value) : this.value;\n } catch (err) {\n promise.reject(err);\n continue;\n }\n\n } else if (rejected) {\n\n if (!onError) {\n promise.reject(this.error);\n continue;\n }\n\n try {\n result = onError(this.error);\n } catch (err) {\n promise.reject(err);\n continue;\n }\n }\n\n if (result instanceof ZalgoPromise && (result.resolved || result.rejected)) {\n\n if (result.resolved) {\n promise.resolve(result.value);\n } else {\n promise.reject(result.error);\n }\n\n result.errorHandled = true;\n\n } else if (isPromise(result)) {\n\n if (result instanceof ZalgoPromise && (result.resolved || result.rejected)) {\n if (result.resolved) {\n promise.resolve(result.value);\n } else {\n promise.reject(result.error);\n }\n\n } else {\n // $FlowFixMe\n chain(result, promise);\n }\n\n } else {\n\n promise.resolve(result);\n }\n }\n\n handlers.length = 0;\n this.dispatching = false;\n endActive();\n }\n\n then(onSuccess : void | (result : R) => (ZalgoPromise | Y), onError : void | (error : mixed) => (ZalgoPromise | Y)) : ZalgoPromise {\n\n if (onSuccess && typeof onSuccess !== 'function' && !onSuccess.call) {\n throw new Error('Promise.then expected a function for success handler');\n }\n\n if (onError && typeof onError !== 'function' && !onError.call) {\n throw new Error('Promise.then expected a function for error handler');\n }\n\n let promise : ZalgoPromise = new ZalgoPromise();\n\n this.handlers.push({\n promise,\n onSuccess,\n onError\n });\n\n this.errorHandled = true;\n\n this.dispatch();\n\n return promise;\n }\n\n catch(onError : (error : mixed) => ZalgoPromise | Y) : ZalgoPromise {\n return this.then(undefined, onError);\n }\n\n finally(onFinally : () => mixed) : ZalgoPromise {\n\n if (onFinally && typeof onFinally !== 'function' && !onFinally.call) {\n throw new Error('Promise.finally expected a function');\n }\n\n return this.then((result) => {\n return ZalgoPromise.try(onFinally)\n .then(() => {\n return result;\n });\n }, (err) => {\n return ZalgoPromise.try(onFinally)\n .then(() => {\n throw err;\n });\n });\n }\n\n timeout(time : number, err : ?Error) : ZalgoPromise {\n\n if (this.resolved || this.rejected) {\n return this;\n }\n\n let timeout = setTimeout(() => {\n\n if (this.resolved || this.rejected) {\n return;\n }\n\n this.reject(err || new Error(`Promise timed out after ${ time }ms`));\n\n }, time);\n\n return this.then(result => {\n clearTimeout(timeout);\n return result;\n });\n }\n\n // $FlowFixMe\n toPromise() : Promise {\n // $FlowFixMe\n if (typeof Promise === 'undefined') {\n throw new TypeError(`Could not find Promise`);\n }\n // $FlowFixMe\n return Promise.resolve(this); // eslint-disable-line compat/compat\n }\n\n static resolve(value : X | ZalgoPromise) : ZalgoPromise {\n\n if (value instanceof ZalgoPromise) {\n return value;\n }\n\n if (isPromise(value)) {\n // $FlowFixMe\n return new ZalgoPromise((resolve, reject) => value.then(resolve, reject));\n }\n\n return new ZalgoPromise().resolve(value);\n }\n\n static reject(error : mixed) : ZalgoPromise {\n return new ZalgoPromise().reject(error);\n }\n\n static asyncReject(error : mixed) : ZalgoPromise {\n return new ZalgoPromise().asyncReject(error);\n }\n\n static all>(promises : X) : ZalgoPromise<$TupleMap(ZalgoPromise | Y) => Y>> { // eslint-disable-line no-undef\n\n let promise = new ZalgoPromise();\n let count = promises.length;\n let results = [];\n\n if (!count) {\n promise.resolve(results);\n return promise;\n }\n\n const chain = (i : number, firstPromise : ZalgoPromise, secondPromise : ZalgoPromise) => {\n return firstPromise.then(res => {\n results[i] = res;\n count -= 1;\n if (count === 0) {\n promise.resolve(results);\n }\n }, err => {\n secondPromise.reject(err);\n });\n };\n\n for (let i = 0; i < promises.length; i++) {\n let prom = promises[i];\n\n if (prom instanceof ZalgoPromise) {\n if (prom.resolved) {\n results[i] = prom.value;\n count -= 1;\n continue;\n }\n } else if (!isPromise(prom)) {\n results[i] = prom;\n count -= 1;\n continue;\n }\n\n chain(i, ZalgoPromise.resolve(prom), promise);\n }\n\n if (count === 0) {\n promise.resolve(results);\n }\n\n return promise;\n }\n\n static hash(promises : O) : ZalgoPromise<$ObjMap(ZalgoPromise | Y) => Y>> { // eslint-disable-line no-undef\n let result = {};\n \n return ZalgoPromise.all(Object.keys(promises).map(key => {\n return ZalgoPromise.resolve(promises[key]).then(value => {\n result[key] = value;\n });\n })).then(() => {\n return result;\n });\n }\n\n static map(items : Array, method : (T) => (ZalgoPromise | X)) : ZalgoPromise> {\n // $FlowFixMe\n return ZalgoPromise.all(items.map(method));\n }\n\n static onPossiblyUnhandledException(handler : (err : mixed) => void) : { cancel : () => void } {\n return onPossiblyUnhandledException(handler);\n }\n\n static try>(method : (...args : A) => (ZalgoPromise | Y), context : ?C, args : ?A) : ZalgoPromise {\n\n if (method && typeof method !== 'function' && !method.call) {\n throw new Error('Promise.try expected a function');\n }\n\n let result;\n\n startActive();\n \n try {\n // $FlowFixMe\n result = method.apply(context, args || []);\n } catch (err) {\n endActive();\n return ZalgoPromise.reject(err);\n }\n\n endActive();\n\n return ZalgoPromise.resolve(result);\n }\n\n static delay(delay : number) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n setTimeout(resolve, delay);\n });\n }\n\n static isPromise(value : mixed) : boolean {\n\n if (value && value instanceof ZalgoPromise) {\n return true;\n }\n\n return isPromise(value);\n }\n\n static flush() : ZalgoPromise {\n return awaitActive(ZalgoPromise);\n }\n}\n","/* @flow */\n\nexport { ZalgoPromise } from './promise';\n","/* @flow */\n/* eslint max-lines: off */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\n\nimport type { CancelableType } from '../types';\n\n/* Url Encode\n ----------\n\n Replace ? and & with encoded values. Allows other values (to create more readable urls than encodeUriComponent)\n*/\n\nexport function urlEncode(str : string) : string {\n return str.replace(/\\?/g, '%3F').replace(/&/g, '%26').replace(/#/g, '%23').replace(/\\+/g, '%2B');\n}\n\n\n/* Camel To Dasherize\n ------------------\n\n Convert camelCaseText to dasherized-text\n*/\n\nexport function camelToDasherize(string : string) : string {\n return string.replace(/([A-Z])/g, (g) => {\n return `-${ g.toLowerCase() }`;\n });\n}\n\n\n/* Dasherize to Camel\n ------------------\n\n Convert dasherized-text to camelCaseText\n*/\n\nexport function dasherizeToCamel(string : string) : string {\n return string.replace(/-([a-z])/g, (g) => {\n return g[1].toUpperCase();\n });\n}\n\n\n/* Extend\n ------\n\n Extend one object with another\n*/\n\nexport function extend(obj : Object, source : ?Object) : Object {\n if (!source) {\n return obj;\n }\n\n for (let key in source) {\n if (source.hasOwnProperty(key)) {\n obj[key] = source[key];\n }\n }\n\n return obj;\n}\n\n\n/* Values\n ------\n\n Get all of the values from an object as an array\n*/\n\nexport function values(obj : Object) : Array {\n let results = [];\n\n for (let key in obj) {\n if (obj.hasOwnProperty(key)) {\n results.push(obj[key]);\n }\n }\n\n return results;\n}\n\n\n/* Unique ID\n ---------\n\n Generate a unique, random hex id\n*/\n\nexport function uniqueID() : string {\n\n let chars = '0123456789abcdef';\n\n return 'xxxxxxxxxx'.replace(/./g, () => {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n });\n}\n\n/* Stringify with Functions\n ------------------------\n\n JSON Stringify with added support for functions\n*/\n\nexport function stringifyWithFunctions(obj : Object) : string {\n return JSON.stringify(obj, (key, val) => {\n if (typeof val === 'function') {\n return val.toString();\n }\n return val;\n });\n}\n\n\n/* Safe Get\n --------\n\n Get a property without throwing error\n*/\n\nexport function safeGet(obj : Object, prop : string) : mixed {\n\n let result;\n\n try {\n result = obj[prop];\n } catch (err) {\n // pass\n }\n\n return result;\n}\n\n\n/* Capitalize First Letter\n -----------------------\n*/\n\nexport function capitalizeFirstLetter(string : string) : string {\n return string.charAt(0).toUpperCase() + string.slice(1).toLowerCase();\n}\n\n\n/* Get\n ---\n\n Recursively gets a deep path from an object, returning a default value if any level is not found\n*/\n\nexport function get(item : Object, path : string, def : mixed) : mixed {\n\n if (!path) {\n return def;\n }\n\n let pathParts = path.split('.');\n\n // Loop through each section of our key path\n\n for (let i = 0; i < pathParts.length; i++) {\n\n // If we have an object, we can get the key\n\n if (typeof item === 'object' && item !== null) {\n item = item[pathParts[i]];\n\n // Otherwise, we should return the default (undefined if not provided)\n } else {\n return def;\n }\n }\n\n // If our final result is undefined, we should return the default\n\n return item === undefined ? def : item;\n}\n\n\n/* Safe Interval\n -------------\n\n Implement setInterval using setTimeout, to avoid stacking up calls from setInterval\n*/\n\nexport function safeInterval(method : Function, time : number) : CancelableType {\n\n let timeout;\n\n function runInterval() {\n timeout = setTimeout(runInterval, time);\n method.call();\n }\n\n timeout = setTimeout(runInterval, time);\n\n return {\n cancel() {\n clearTimeout(timeout);\n }\n };\n}\n\n/* Safe Interval\n -------------\n\n Run timeouts at 100ms intervals so we can account for busy browsers\n*/\n\nexport function safeTimeout(method : Function, time : number) {\n\n let interval = safeInterval(() => {\n time -= 100;\n if (time <= 0) {\n interval.cancel();\n method();\n }\n }, 100);\n}\n\n\nexport function each(item : Array | Object, callback : Function) {\n\n if (!item) {\n return;\n }\n\n if (Array.isArray(item)) {\n let len = item.length;\n for (let i = 0; i < len; i++) {\n callback(item[i], i);\n }\n\n } else if (typeof item === 'object') {\n let keys = Object.keys(item);\n let len = keys.length;\n for (let i = 0; i < len; i++) {\n let key = keys[i];\n callback(item[key], key);\n }\n }\n}\n\n\nexport function replaceObject> (item : T, replacers : { [string] : Function }, fullKey : string = '') : T {\n\n if (Array.isArray(item)) {\n let length = item.length;\n let result = [];\n\n for (let i = 0; i < length; i++) {\n Object.defineProperty(result, i, {\n configurable: true,\n enumerable: true,\n get: () => {\n let itemKey = fullKey ? `${ fullKey }.${ i }` : `${ i }`;\n let child = item[i];\n\n let type = (typeof child);\n let replacer = replacers[type];\n if (replacer) {\n let replaced = replacer(child, i, itemKey);\n if (typeof replaced !== 'undefined') {\n result[i] = replaced;\n return result[i];\n }\n }\n\n if (typeof child === 'object' && child !== null) {\n result[i] = replaceObject(child, replacers, itemKey);\n return result[i];\n }\n\n result[i] = child;\n return result[i];\n },\n set: (value) => {\n delete result[i];\n result[i] = value;\n }\n });\n }\n\n // $FlowFixMe\n return result;\n } else if (typeof item === 'object' && item !== null) {\n let result = {};\n\n for (let key in item) {\n if (!item.hasOwnProperty(key)) {\n continue;\n }\n\n Object.defineProperty(result, key, {\n configurable: true,\n enumerable: true,\n get: () => {\n let itemKey = fullKey ? `${ fullKey }.${ key }` : `${ key }`;\n // $FlowFixMe\n let child = item[key];\n\n let type = (typeof child);\n let replacer = replacers[type];\n if (replacer) {\n let replaced = replacer(child, key, itemKey);\n if (typeof replaced !== 'undefined') {\n result[key] = replaced;\n return result[key];\n }\n }\n\n if (typeof child === 'object' && child !== null) {\n result[key] = replaceObject(child, replacers, itemKey);\n return result[key];\n }\n\n result[key] = child;\n return result[key];\n },\n set: (value) => {\n delete result[key];\n result[key] = value;\n }\n });\n }\n\n // $FlowFixMe\n return result;\n } else {\n throw new Error(`Pass an object or array`);\n }\n}\n\n\nexport function copyProp(source : Object, target : Object, name : string, def : mixed) {\n if (source.hasOwnProperty(name)) {\n let descriptor = Object.getOwnPropertyDescriptor(source, name);\n // $FlowFixMe\n Object.defineProperty(target, name, descriptor);\n\n } else {\n target[name] = def;\n }\n}\n\nexport function dotify(obj : Object, prefix : string = '', newobj : Object = {}) : { [string] : string } {\n prefix = prefix ? `${ prefix }.` : prefix;\n for (let key in obj) {\n if (obj[key] === undefined || obj[key] === null || typeof obj[key] === 'function') {\n continue;\n } else if (obj[key] && Array.isArray(obj[key]) && obj[key].length && obj[key].every(val => typeof val !== 'object')) {\n newobj[`${ prefix }${ key }`] = obj[key].join(',');\n } else if (obj[key] && typeof obj[key] === 'object') {\n newobj = dotify(obj[key], `${ prefix }${ key }`, newobj);\n } else {\n newobj[`${ prefix }${ key }`] = obj[key].toString();\n }\n }\n return newobj;\n}\n\nlet objectIDs = new WeakMap();\n\nexport function getObjectID(obj : Object) : string {\n\n if (obj === null || obj === undefined || (typeof obj !== 'object' && typeof obj !== 'function')) {\n throw new Error(`Invalid object`);\n }\n\n let uid = objectIDs.get(obj);\n\n if (!uid) {\n uid = `${ typeof obj }:${ uniqueID() }`;\n objectIDs.set(obj, uid);\n }\n\n return uid;\n}\n\ntype RegexResultType = {\n text : string,\n groups : Array,\n start : number,\n end : number,\n length : number,\n replace : (text : string) => string\n};\n\nexport function regex(pattern : string | RegExp, string : string, start : number = 0) : ?RegexResultType {\n\n if (typeof pattern === 'string') {\n // eslint-disable-next-line security/detect-non-literal-regexp\n pattern = new RegExp(pattern);\n }\n\n let result = string.slice(start).match(pattern);\n\n if (!result) {\n return;\n }\n\n // $FlowFixMe\n let index : number = result.index;\n let match = result[0];\n\n return {\n text: match,\n groups: result.slice(1),\n start: start + index,\n end: start + index + match.length,\n length: match.length,\n\n replace(text : string) : string {\n\n if (!match) {\n return '';\n }\n\n return `${ match.slice(0, start + index) }${ text }${ match.slice(index + match.length) }`;\n }\n };\n}\n\nexport function regexAll(pattern : string | RegExp, string : string) : Array {\n\n let matches = [];\n let start = 0;\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n let match = regex(pattern, string, start);\n\n if (!match) {\n break;\n }\n\n matches.push(match);\n start = match.end;\n }\n\n return matches;\n}\n\nexport function count(str : string, substr : string) : number {\n\n let startIndex = 0;\n let itemCount = 0;\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n let index = str.indexOf(substr, startIndex);\n\n if (index === -1) {\n break;\n }\n\n startIndex = index;\n itemCount += 1;\n }\n\n return itemCount;\n}\n\nexport function stringify(item : mixed) : string {\n if (typeof item === 'string') {\n return item;\n }\n\n if (item && typeof item.toString === 'function') {\n return item.toString();\n }\n\n return Object.prototype.toString.call(item);\n}\n\nexport function stringifyError(err : mixed) : string {\n if (err) {\n // $FlowFixMe\n let { stack, message } = err;\n\n if (typeof stack === 'string') {\n return stack;\n }\n\n if (typeof message === 'string') {\n return message;\n }\n }\n\n return stringify(err);\n}\n\nexport type EventEmitterType = {\n on : (eventName : string, handler : Function) => CancelableType,\n once : (eventName : string, handler : Function) => CancelableType,\n trigger : (eventName : string) => void,\n triggerOnce : (eventName : string) => void\n};\n\nexport function eventEmitter() : EventEmitterType {\n\n let triggered = {};\n let handlers = {};\n\n return {\n\n on(eventName : string, handler : Function) : CancelableType {\n\n let handlerList = handlers[eventName] = handlers[eventName] || [];\n\n handlerList.push(handler);\n\n let cancelled = false;\n\n return {\n cancel() {\n if (!cancelled) {\n cancelled = true;\n handlerList.splice(handlerList.indexOf(handler), 1);\n }\n\n }\n };\n },\n\n once(eventName : string, handler : Function) : CancelableType {\n\n let listener = this.on(eventName, () => {\n listener.cancel();\n handler();\n });\n\n return listener;\n },\n\n trigger(eventName : string) {\n\n let handlerList = handlers[eventName];\n\n if (handlerList) {\n for (let handler of handlerList) {\n handler();\n }\n }\n },\n\n triggerOnce(eventName : string) {\n\n if (triggered[eventName]) {\n return;\n }\n\n triggered[eventName] = true;\n this.trigger(eventName);\n }\n };\n}\n","/* @flow */\n\nimport { getObjectID, replaceObject } from './util';\n\n\n/* Noop\n ----\n\n Do nothing, zilch, nada, zip\n*/\n\nexport function noop() {\n // pass\n}\n\n\n/* Once\n ----\n\n Create a wrapper function which only allows the inner function to run once, otherwise is a noop\n*/\n\nexport function once(method : (...args : Array) => T) : (...args : Array) => T {\n\n let called = false;\n let result;\n\n // eslint-disable-next-line no-unused-vars\n return function onceWrapper(...args : Array) : T {\n if (called) {\n return result;\n }\n\n called = true;\n result = method.apply(this, arguments);\n return result;\n };\n}\n\n\n/* Memoize\n -------\n\n Create a wrapper function which caches the result of the first call, then for subsequent calls returns the cached value\n*/\n\nexport function memoize(method : (...args : Array) => T) : (...args : Array) => T {\n\n let results = {};\n\n // eslint-disable-next-line no-unused-vars\n return function memoizeWrapper(...args : Array) : T {\n\n let cacheKey;\n\n try {\n cacheKey = JSON.stringify(Array.prototype.slice.call(arguments), (key, val) => {\n\n if (typeof val === 'function') {\n return `zoid:memoize[${ getObjectID(val) }]`;\n }\n\n return val;\n });\n\n } catch (err) {\n throw new Error('Arguments not serializable -- can not be used to memoize');\n }\n\n if (!results.hasOwnProperty(cacheKey)) {\n results[cacheKey] = method.apply(this, arguments);\n }\n\n return results[cacheKey];\n };\n}\n\nexport function debounce(method : (...args : Array) => T, time : number = 100) : (...args : Array) => void {\n\n let timeout;\n\n return function debounceWrapper() {\n clearTimeout(timeout);\n\n timeout = setTimeout(() => {\n return method.apply(this, arguments);\n }, time);\n };\n}\n\nexport function serializeFunctions>(obj : T) : T {\n return replaceObject(obj, {\n 'function': () => {\n return {\n __type__: '__function__'\n };\n }\n });\n}\n\nexport function deserializeFunctions>(obj : T, handler : Function) : T {\n return replaceObject(obj, {\n 'object': (value, key, fullKey) => {\n if (value && value.__type__ === '__function__') {\n return function deserializedFunctionWrapper() : mixed {\n return handler({ key, fullKey, self: this, args: arguments });\n };\n }\n }\n });\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { isWindowClosed, linkFrameWindow, type CrossDomainWindowType, type SameDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\n\nimport { PopupOpenError } from '../error';\nimport type { ElementRefType, CancelableType } from '../types';\n\nimport { once, memoize, debounce } from './fn';\nimport { extend, safeInterval, urlEncode, capitalizeFirstLetter, stringify } from './util';\n\nexport function appendChild(container : HTMLElement, child : HTMLElement | Text) {\n container.appendChild(child);\n}\n\nfunction isElement(element : mixed) : boolean {\n\n if (element instanceof window.Element) {\n return true;\n }\n\n if (element !== null && typeof element === 'object' && element.nodeType === 1 && typeof element.style === 'object' && typeof element.ownerDocument === 'object') {\n return true;\n }\n\n return false;\n}\n\nexport function querySelectorAll(el : HTMLElement, selector : string) : Array {\n return Array.prototype.slice.call(el.querySelectorAll(selector));\n}\n\n/* Get Element\n -----------\n\n Gets an element based on\n\n - Element id\n - CSS Query selector\n*/\n\nexport function getElementSafe(id : ElementRefType) : ?HTMLElement {\n\n if (isElement(id)) {\n // $FlowFixMe\n return id;\n }\n\n if (typeof id === 'string') {\n let element = document.getElementById(id);\n\n if (element) {\n return element;\n }\n\n if (document.querySelector) {\n element = document.querySelector(id);\n }\n\n if (element) {\n return element;\n }\n }\n}\n\nexport function getElement(id : ElementRefType) : HTMLElement {\n\n let element = getElementSafe(id);\n\n if (element) {\n return element;\n }\n\n throw new Error(`Can not find element: ${ stringify(id) }`);\n}\n\n\nexport let documentReady = new ZalgoPromise(resolve => {\n\n if (window.document.readyState === 'complete') {\n return resolve(window.document);\n }\n\n let interval = setInterval(() => {\n if (window.document.readyState === 'complete') {\n clearInterval(interval);\n return resolve(window.document);\n }\n }, 10);\n});\n\nexport function isDocumentReady() : boolean {\n return window.document.readyState === 'complete';\n}\n\nexport function elementReady(id : ElementRefType) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n let name = stringify(id);\n let el = getElementSafe(id);\n\n if (el) {\n return resolve(el);\n }\n\n if (isDocumentReady()) {\n return reject(new Error(`Document is ready and element ${ name } does not exist`));\n }\n\n let interval = setInterval(() => {\n\n el = getElementSafe(id);\n\n if (el) {\n clearInterval(interval);\n return resolve(el);\n }\n\n if (isDocumentReady()) {\n clearInterval(interval);\n return reject(new Error(`Document is ready and element ${ name } does not exist`));\n }\n }, 10);\n });\n}\n\n\n/* Popup\n -----\n\n Open a popup window with the specified option map\n*/\n\nexport function popup(url : string, options : { [ string ] : mixed }) : CrossDomainWindowType {\n\n // eslint-disable-next-line array-callback-return\n let params = Object.keys(options).map((key) => {\n if (options[key]) {\n return `${ key }=${ stringify(options[key]) }`;\n }\n }).filter(Boolean).join(',');\n\n let win;\n\n try {\n win = window.open(url, options.name, params, true);\n } catch (err) {\n throw new PopupOpenError(`Can not open popup window - ${ err.stack || err.message }`);\n }\n\n if (isWindowClosed(win)) {\n let err = new PopupOpenError(`Can not open popup window - blocked`);\n throw err;\n }\n\n return win;\n}\n\n\nexport function writeToWindow(win : SameDomainWindowType, html : string) {\n try {\n win.document.open();\n win.document.write(html);\n win.document.close();\n } catch (err) {\n try {\n win.location = `javascript: document.open(); document.write(${ JSON.stringify(html) }); document.close();`;\n } catch (err2) {\n // pass\n }\n }\n}\n\nexport function writeElementToWindow(win : SameDomainWindowType, el : HTMLElement) {\n\n let tag = el.tagName.toLowerCase();\n\n if (tag !== 'html') {\n throw new Error(`Expected element to be html, got ${ tag }`);\n }\n\n let documentElement = win.document.documentElement;\n\n while (documentElement.children && documentElement.children.length) {\n documentElement.removeChild(documentElement.children[0]);\n }\n\n while (el.children.length) {\n documentElement.appendChild(el.children[0]);\n }\n}\n\nexport function setStyle(el : HTMLElement, styleText : string, doc : Document = window.document) {\n // $FlowFixMe\n if (el.styleSheet) {\n // $FlowFixMe\n el.styleSheet.cssText = styleText;\n } else {\n el.appendChild(doc.createTextNode(styleText));\n }\n}\n\n/* Create Element\n --------------\n\n Create an element with style, html, classes, attributes etc. and append it to the specified container\n*/\n\nexport type ElementOptionsType = {\n style? : { [ string ] : string },\n class? : ?Array,\n attributes? : { [ string ] : string },\n styleSheet? : ?string,\n html? : ?string\n};\n\nexport function createElement(tag : string = 'div', options : ElementOptionsType = {}, container : ?HTMLElement) : HTMLElement {\n\n tag = tag.toLowerCase();\n let element = document.createElement(tag);\n\n if (options.style) {\n extend(element.style, options.style);\n }\n\n if (options.class) {\n element.className = options.class.join(' ');\n }\n\n if (options.attributes) {\n for (let key of Object.keys(options.attributes)) {\n element.setAttribute(key, options.attributes[key]);\n }\n }\n\n if (options.styleSheet) {\n setStyle(element, options.styleSheet);\n }\n\n if (container) {\n appendChild(container, element);\n }\n\n if (options.html) {\n if (tag === 'iframe') {\n // $FlowFixMe\n if (!container || !element.contentWindow) {\n throw new Error(`Iframe html can not be written unless container provided and iframe in DOM`);\n }\n\n // $FlowFixMe\n writeToWindow(element.contentWindow, options.html);\n\n } else {\n element.innerHTML = options.html;\n }\n }\n\n return element;\n}\n\nlet awaitFrameLoadPromises : WeakMap> = new WeakMap();\n\nexport function awaitFrameLoad(frame : HTMLIFrameElement) : ZalgoPromise {\n\n if (awaitFrameLoadPromises.has(frame)) {\n let promise = awaitFrameLoadPromises.get(frame);\n if (promise) {\n return promise;\n }\n }\n\n let promise = new ZalgoPromise((resolve, reject) => {\n frame.addEventListener('load', () => {\n linkFrameWindow(frame);\n resolve(frame);\n });\n\n frame.addEventListener('error', (err : Event) => {\n if (frame.contentWindow) {\n resolve(frame);\n } else {\n reject(err);\n }\n });\n });\n\n awaitFrameLoadPromises.set(frame, promise);\n\n return promise;\n}\n\nexport function awaitFrameWindow(frame : HTMLIFrameElement) : ZalgoPromise {\n\n if (frame.contentWindow) {\n return ZalgoPromise.resolve(frame.contentWindow);\n }\n\n return awaitFrameLoad(frame).then(loadedFrame => {\n\n if (!loadedFrame.contentWindow) {\n throw new Error(`Could not find window in iframe`);\n }\n\n return loadedFrame.contentWindow;\n });\n}\n\n\n/* Iframe\n ------\n\n Open an iframe with the specified container, url, and option property map\n*/\n\nexport type IframeElementOptionsType = {\n style? : { [ string ] : string },\n class? : ?Array,\n attributes? : { [ string ] : string },\n styleSheet? : ?string,\n html? : ?string,\n url? : ?string\n};\n\nexport function iframe(options : IframeElementOptionsType = {}, container : HTMLElement) : HTMLIFrameElement {\n\n let el = getElement(container);\n\n let attributes = options.attributes || {};\n let style = options.style || {};\n\n let frame = createElement('iframe', {\n attributes: {\n frameBorder: '0',\n allowTransparency: 'true',\n ...attributes\n },\n style: {\n backgroundColor: 'transparent',\n ...style\n },\n html: options.html,\n class: options.class\n });\n\n // $FlowFixMe\n awaitFrameLoad(frame);\n\n el.appendChild(frame);\n\n if (options.url || window.navigator.userAgent.match(/MSIE|Edge/i)) {\n frame.setAttribute('src', options.url || 'about:blank');\n }\n\n // $FlowFixMe\n return frame;\n}\n\n/* Add Event Listener\n ------------------\n\n Add DOM Event listener with cancel\n*/\n\nexport function addEventListener(obj : HTMLElement, event : string, handler : (event : Event) => void) : CancelableType {\n obj.addEventListener(event, handler);\n return {\n cancel() {\n obj.removeEventListener(event, handler);\n }\n };\n}\n\n/* Scan For Javascript\n -------------------\n\n Check if the string contains anything which could conceivably be run as javascript if the string is set to innerHTML\n*/\n\nexport function scanForJavascript(str : string) : string {\n\n if (!str) {\n return str;\n }\n\n if (str.match(/ {\n\n let params = {};\n\n if (!queryString) {\n return params;\n }\n\n if (queryString.indexOf('=') === -1) {\n throw new Error(`Can not parse query string params: ${ queryString }`);\n }\n\n for (let pair of queryString.split('&')) {\n pair = pair.split('=');\n\n if (pair[0] && pair[1]) {\n params[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n }\n\n return params;\n});\n\n\nexport function getQueryParam(name : string) : ?string {\n return parseQuery(window.location.search.slice(1))[name];\n}\n\nexport function formatQuery(obj : { [ string ] : string } = {}) : string {\n\n return Object.keys(obj).filter(key => {\n return typeof obj[key] === 'string';\n }).map(key => {\n return `${ urlEncode(key) }=${ urlEncode(obj[key]) }`;\n }).join('&');\n}\n\nexport function extendQuery(originalQuery : string, props : { [ string ] : string } = {}) : string {\n\n if (!props || !Object.keys(props).length) {\n return originalQuery;\n }\n\n return formatQuery({\n ...parseQuery(originalQuery),\n ...props\n });\n}\n\nexport function extendUrl(url : string, options : { query? : { [ string ] : string }, hash? : { [ string ] : string } } = {}) : string {\n\n let query = options.query || {};\n let hash = options.hash || {};\n\n let originalUrl;\n let originalQuery;\n let originalHash;\n\n [ originalUrl, originalHash ] = url.split('#');\n [ originalUrl, originalQuery ] = originalUrl.split('?');\n\n let queryString = extendQuery(originalQuery, query);\n let hashString = extendQuery(originalHash, hash);\n\n if (queryString) {\n originalUrl = `${ originalUrl }?${ queryString }`;\n }\n\n if (hashString) {\n originalUrl = `${ originalUrl }#${ hashString }`;\n }\n\n return originalUrl;\n}\n\n\nexport function elementStoppedMoving(element : ElementRefType, timeout : number = 5000) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n let el = getElement(element);\n\n let start = el.getBoundingClientRect();\n\n let interval;\n let timer;\n\n interval = setInterval(() => {\n let end = el.getBoundingClientRect();\n\n if (start.top === end.top && start.bottom === end.bottom && start.left === end.left && start.right === end.right && start.width === end.width && start.height === end.height) {\n clearTimeout(timer);\n clearInterval(interval);\n return resolve();\n }\n\n start = end;\n\n }, 50);\n\n timer = setTimeout(() => {\n clearInterval(interval);\n reject(new Error(`Timed out waiting for element to stop animating after ${ timeout }ms`));\n }, timeout);\n });\n}\n\nexport function getCurrentDimensions(el : HTMLElement) : { width : number, height : number } {\n return {\n width: el.offsetWidth,\n height: el.offsetHeight\n };\n}\n\nexport function changeStyle(el : HTMLElement, styles : { [ string ] : string }) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n\n for (let key of Object.keys(styles)) {\n // $FlowFixMe\n el.style[key] = styles[key];\n }\n\n setTimeout(resolve, 1);\n });\n}\n\nexport function setOverflow(el : HTMLElement, value : string = 'auto') : { reset : () => void } {\n\n let { overflow, overflowX, overflowY } = el.style;\n\n el.style.overflow = el.style.overflowX = el.style.overflowY = value;\n\n return {\n reset() {\n el.style.overflow = overflow;\n el.style.overflowX = overflowX;\n el.style.overflowY = overflowY;\n }\n };\n}\n\nfunction dimensionsDiff(one : { width : number, height : number }, two : { width : number, height : number }, { width = true, height = true, threshold = 0 } : { width : boolean, height : boolean, threshold : number }) : boolean {\n\n if (width && Math.abs(one.width - two.width) > threshold) {\n return true;\n }\n\n if (height && Math.abs(one.height - two.height) > threshold) {\n return true;\n }\n\n return false;\n}\n\nexport function trackDimensions(el : HTMLElement, { width = true, height = true, threshold = 0 } : { width : boolean, height : boolean, threshold : number }) : { check : () => { changed : boolean, dimensions : { width : number, height : number } }, reset : () => void } {\n\n let currentDimensions = getCurrentDimensions(el);\n\n return {\n check() : { changed : boolean, dimensions : { width : number, height : number } } {\n let newDimensions = getCurrentDimensions(el);\n\n return {\n changed: dimensionsDiff(currentDimensions, newDimensions, { width, height, threshold }),\n dimensions: newDimensions\n };\n },\n\n reset() {\n currentDimensions = getCurrentDimensions(el);\n }\n };\n}\n\nexport function onDimensionsChange(el : HTMLElement, { width = true, height = true, delay = 50, threshold = 0 } : { width? : boolean, height? : boolean, delay? : number, threshold? : number }) : ZalgoPromise<{ width : number, height : number }> {\n\n return new ZalgoPromise(resolve => {\n\n let tracker = trackDimensions(el, { width, height, threshold });\n\n let interval;\n\n let resolver = debounce((dimensions) => {\n clearInterval(interval);\n return resolve(dimensions);\n }, delay * 4);\n\n interval = setInterval(() => {\n let { changed, dimensions } = tracker.check();\n if (changed) {\n tracker.reset();\n return resolver(dimensions);\n }\n }, delay);\n\n function onWindowResize() {\n let { changed, dimensions } = tracker.check();\n if (changed) {\n tracker.reset();\n window.removeEventListener('resize', onWindowResize);\n resolver(dimensions);\n }\n }\n\n window.addEventListener('resize', onWindowResize);\n });\n}\n\n\nexport function dimensionsMatchViewport(el : HTMLElement, { width, height } : { width : number, height : number }) : boolean {\n\n let dimensions = getCurrentDimensions(el);\n\n if (width && dimensions.width !== window.innerWidth) {\n return false;\n }\n\n if (height && dimensions.height !== window.innerHeight) {\n return false;\n }\n\n return true;\n}\n\n\nexport function bindEvents(element : HTMLElement, eventNames : Array, handler : (event : Event) => void) : CancelableType {\n\n handler = once(handler);\n\n for (let eventName of eventNames) {\n element.addEventListener(eventName, handler);\n }\n\n return {\n cancel: once(() => {\n for (let eventName of eventNames) {\n element.removeEventListener(eventName, handler);\n }\n })\n };\n}\n\nconst VENDOR_PREFIXES = [ 'webkit', 'moz', 'ms', 'o' ];\n\nexport function setVendorCSS(element : HTMLElement, name : string, value : string) {\n\n // $FlowFixMe\n element.style[name] = value;\n\n let capitalizedName = capitalizeFirstLetter(name);\n\n for (let prefix of VENDOR_PREFIXES) {\n // $FlowFixMe\n element.style[`${ prefix }${ capitalizedName }`] = value;\n }\n}\n\n\nlet CSSRule = window.CSSRule;\n\nconst KEYFRAMES_RULE = CSSRule.KEYFRAMES_RULE || CSSRule.WEBKIT_KEYFRAMES_RULE || CSSRule.MOZ_KEYFRAMES_RULE ||\n CSSRule.O_KEYFRAMES_RULE || CSSRule.MS_KEYFRAMES_RULE;\n\nfunction isValidAnimation(element : HTMLElement, name : string) : boolean {\n\n let stylesheets = element.ownerDocument.styleSheets;\n\n try {\n for (let i = 0; i < stylesheets.length; i++) {\n\n // $FlowFixMe\n let cssRules = stylesheets[i].cssRules;\n\n if (!cssRules) {\n continue;\n }\n\n for (let j = 0; j < cssRules.length; j++) {\n\n let cssRule = cssRules[j];\n\n if (!cssRule) {\n continue;\n }\n\n if (cssRule.type === KEYFRAMES_RULE && cssRule.name === name) {\n return true;\n }\n }\n }\n } catch (err) {\n\n return false;\n }\n\n\n return false;\n}\n\n\nconst ANIMATION_START_EVENTS = [ 'animationstart', 'webkitAnimationStart', 'oAnimationStart', 'MSAnimationStart' ];\nconst ANIMATION_END_EVENTS = [ 'animationend', 'webkitAnimationEnd', 'oAnimationEnd', 'MSAnimationEnd' ];\n\nexport function animate(element : ElementRefType, name : string, clean : (Function) => void, timeout : number = 1000) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n let el = getElement(element);\n\n if (!el || !isValidAnimation(el, name)) {\n return resolve();\n }\n\n let hasStarted = false;\n\n let startTimeout;\n let endTimeout;\n let startEvent;\n let endEvent;\n\n function cleanUp() {\n setVendorCSS(el, 'animationName', '');\n clearTimeout(startTimeout);\n clearTimeout(endTimeout);\n startEvent.cancel();\n endEvent.cancel();\n }\n\n startEvent = bindEvents(el, ANIMATION_START_EVENTS, event => {\n\n // $FlowFixMe\n if (event.target !== el || event.animationName !== name) {\n return;\n }\n\n clearTimeout(startTimeout);\n\n event.stopPropagation();\n\n startEvent.cancel();\n hasStarted = true;\n\n endTimeout = setTimeout(() => {\n cleanUp();\n resolve();\n }, timeout);\n });\n\n endEvent = bindEvents(el, ANIMATION_END_EVENTS, event => {\n\n // $FlowFixMe\n if (event.target !== el || event.animationName !== name) {\n return;\n }\n\n cleanUp();\n\n // $FlowFixMe\n if (typeof event.animationName === 'string' && event.animationName !== name) {\n return reject(`Expected animation name to be ${ name }, found ${ event.animationName }`);\n }\n\n return resolve();\n });\n\n setVendorCSS(el, 'animationName', name);\n\n startTimeout = setTimeout(() => {\n if (!hasStarted) {\n cleanUp();\n return resolve();\n }\n }, 200);\n\n if (clean) {\n clean(cleanUp);\n }\n });\n}\n\nconst STYLE = {\n\n DISPLAY: {\n NONE: 'none',\n BLOCK: 'block'\n },\n\n VISIBILITY: {\n VISIBLE: 'visible',\n HIDDEN: 'hidden'\n },\n\n IMPORTANT: 'important'\n};\n\nexport function makeElementVisible(element : HTMLElement) {\n element.style.setProperty('visibility', '');\n}\n\nexport function makeElementInvisible(element : HTMLElement) {\n element.style.setProperty('visibility', STYLE.VISIBILITY.HIDDEN, STYLE.IMPORTANT);\n}\n\n\nexport function showElement(element : HTMLElement) {\n element.style.setProperty('display', '');\n}\n\nexport function hideElement(element : HTMLElement) {\n element.style.setProperty('display', STYLE.DISPLAY.NONE, STYLE.IMPORTANT);\n}\n\nexport function destroyElement(element : HTMLElement) {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n}\n\nexport function showAndAnimate(element : HTMLElement, name : string, clean : (Function) => void) : ZalgoPromise {\n let animation = animate(element, name, clean);\n showElement(element);\n return animation;\n}\n\nexport function animateAndHide(element : HTMLElement, name : string, clean : (Function) => void) : ZalgoPromise {\n return animate(element, name, clean).then(() => {\n hideElement(element);\n });\n}\n\nexport function addClass(element : HTMLElement, name : string) {\n if (element.classList) {\n element.classList.add(name);\n } else if (element.className.split(/\\s+/).indexOf(name) === -1) {\n element.className += ` ${ name }`;\n }\n}\n\nexport function removeClass(element : HTMLElement, name : string) {\n if (element.classList) {\n element.classList.remove(name);\n } else if (element.className.split(/\\s+/).indexOf(name) !== -1) {\n element.className = element.className.replace(name, '');\n }\n}\n\nexport function getCurrentScriptDir() : string {\n // eslint-disable-next-line no-console\n console.warn(`Do not use zoid.getCurrentScriptDir() in production -- browser support is limited`);\n\n // eslint-disable-next-line compat/compat\n if (document.currentScript) {\n // eslint-disable-next-line compat/compat\n return document.currentScript.src.split('/').slice(0, -1).join('/');\n }\n\n return '.';\n}\n\nexport function getElementName(element : ElementRefType) : string {\n\n if (typeof element === 'string') {\n return element;\n }\n\n if (!element || !element.tagName) {\n return '';\n }\n\n let name = element.tagName.toLowerCase();\n\n if (element.id) {\n name += `#${ element.id }`;\n } else if (element.className) {\n name += `.${ element.className.split(' ').join('.') }`;\n }\n\n return name;\n}\n\nexport function isElementClosed(el : HTMLElement) : boolean {\n if (!el || !el.parentNode) {\n return true;\n }\n return false;\n}\n\nexport function watchElementForClose(element : HTMLElement, handler : () => mixed) : CancelableType {\n handler = once(handler);\n\n let interval;\n\n if (isElementClosed(element)) {\n handler();\n } else {\n interval = safeInterval(() => {\n if (isElementClosed(element)) {\n interval.cancel();\n handler();\n }\n }, 50);\n }\n\n return {\n cancel() {\n if (interval) {\n interval.cancel();\n }\n }\n };\n}\n\nexport function getHttpType(contentType : string, url : string) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n let req = new window.XMLHttpRequest();\n\n req.open('GET', url);\n req.setRequestHeader('Accept', contentType);\n req.send(null);\n\n req.onload = () => {\n resolve(req.responseText);\n };\n\n req.onerror = () => {\n return reject(new Error(`prefetch failed`));\n };\n });\n}\n\nexport function getHTML(url : string) : ZalgoPromise {\n return getHttpType('text/html', url);\n}\n\nexport function getCSS(url : string) : ZalgoPromise {\n return getHttpType('text/css', url);\n}\n\nexport function getScript(url : string) : ZalgoPromise {\n return getHttpType('*/*', url);\n}\n\nexport function prefetchPage(url : string) : ZalgoPromise {\n return getHTML(url);\n}\n\nconst JSX_EVENTS = {\n onClick: 'click'\n};\n\nexport function fixScripts(el : HTMLElement, doc : Document = window.document) {\n for (let script of querySelectorAll(el, 'script')) {\n let newScript = doc.createElement('script');\n newScript.text = script.textContent;\n script.parentNode.replaceChild(newScript, script);\n }\n}\n\nexport function jsxDom(name : string, props : ?{ [ string ] : mixed }, content : ElementRefType) : HTMLElement {\n\n name = name.toLowerCase();\n\n let doc = (this && this.createElement)\n ? this\n : window.document;\n\n let el = doc.createElement(name);\n\n for (let prop in props) {\n if (prop in JSX_EVENTS) {\n el.addEventListener(JSX_EVENTS[prop], props[prop]);\n } else if (prop === 'innerHTML') {\n el.innerHTML = props[prop];\n fixScripts(el, doc);\n } else {\n el.setAttribute(prop, props[prop]);\n }\n }\n\n if (name === 'style') {\n\n if (typeof content !== 'string') {\n throw new TypeError(`Expected ${ name } tag content to be string, got ${ typeof content }`);\n }\n\n if (arguments.length > 3) {\n throw new Error(`Expected only text content for ${ name } tag`);\n }\n\n setStyle(el, content, doc);\n\n } else if (name === 'iframe') {\n\n if (arguments.length > 3) {\n throw new Error(`Expected only single child node for iframe`);\n }\n\n el.addEventListener('load', () => {\n let win = el.contentWindow;\n\n if (!win) {\n throw new Error(`Expected frame to have contentWindow`);\n }\n\n if (typeof content === 'string') {\n writeToWindow(win, content);\n } else {\n writeElementToWindow(win, content);\n }\n });\n\n } else if (name === 'script') {\n\n if (typeof content !== 'string') {\n throw new TypeError(`Expected ${ name } tag content to be string, got ${ typeof content }`);\n }\n\n if (arguments.length > 3) {\n throw new Error(`Expected only text content for ${ name } tag`);\n }\n\n el.text = content;\n\n } else {\n for (let i = 2; i < arguments.length; i++) {\n if (typeof arguments[i] === 'string') {\n let textNode = doc.createTextNode(arguments[i]);\n appendChild(el, textNode);\n } else {\n appendChild(el, arguments[i]);\n }\n }\n }\n\n return el;\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\n\n/* DeNodeify\n ---------\n\n Turns a method from a function which accepts a callback, into a function which returns a promise.\n*/\n\nexport function denodeify(method : (...args : Array) => T) : (...args : Array) => ZalgoPromise {\n\n return function denodeifyWrapper() : ZalgoPromise {\n\n let self = this;\n let args = Array.prototype.slice.call(arguments);\n\n if (args.length >= method.length) {\n return ZalgoPromise.resolve(method.apply(self, args));\n }\n\n return new ZalgoPromise((resolve, reject) => {\n args.push((err, result) => {\n\n if (err && !(err instanceof Error)) {\n throw new Error(`Passed non-Error object in callback: [ ${ err } ] -- callbacks should either be called with callback(new Error(...)) or callback(null, result).`);\n }\n\n return err ? reject(err) : resolve(result);\n });\n method.apply(self, args);\n });\n };\n}\n\nexport function promisify(method : (...args : Array) => T | ZalgoPromise) : (...args : Array) => ZalgoPromise {\n return function promisifyWRapper() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n return method.apply(this, arguments);\n });\n };\n}\n\nexport function delay(time : number = 1) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n setTimeout(resolve, time);\n });\n}\n\nexport function cycle(method : Function) : ZalgoPromise {\n return ZalgoPromise.try(method).then(() => cycle(method));\n}\n","/* @flow */\n\nexport function isPerc(str : string) : boolean {\n return typeof str === 'string' && (/^[0-9]+%$/).test(str);\n}\n\nexport function isPx(str : string) : boolean {\n return typeof str === 'string' && (/^[0-9]+px$/).test(str);\n}\n\nexport function toNum(val : string | number) : number {\n\n if (typeof val === 'number') {\n return val;\n }\n\n let match = val.match(/^([0-9]+)(px|%)$/);\n\n if (!match) {\n throw new Error(`Could not match css value from ${ val }`);\n }\n\n return parseInt(match[1], 10);\n}\n\nexport function toPx(val : number | string) : string {\n return `${ toNum(val) }px`;\n}\n\nexport function toCSS(val : number | string) : string {\n\n if (typeof val === 'number') {\n return toPx(val);\n }\n\n return isPerc(val) ? val : toPx(val);\n}\n\nexport function percOf(num : number, perc : string) : number {\n return parseInt(num * toNum(perc) / 100, 10);\n}\n\nexport function normalizeDimension(dim : string | number, max : number) : number {\n if (typeof dim === 'number') {\n return dim;\n } else if (isPerc(dim)) {\n return percOf(max, dim);\n } else if (isPx(dim)) {\n return toNum(dim);\n } else {\n throw new Error(`Can not normalize dimension: ${ dim }`);\n }\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nexport function memoized(target : Object, name : string, descriptor : Object) {\n let method = descriptor.value;\n\n descriptor.value = function memoizedFunction() : T {\n\n this.__memoized__ = this.__memoized__ || {};\n\n if (!this.__memoized__.hasOwnProperty(name)) {\n this.__memoized__[name] = method.apply(this, arguments);\n }\n\n return this.__memoized__[name];\n };\n\n descriptor.value.displayName = `${ name }:memoized`;\n}\n\nexport function promise(target : Object, name : string, descriptor : Object) {\n let method = descriptor.value;\n\n descriptor.value = function promisifiedFunction() : ZalgoPromise {\n return ZalgoPromise.try(method, this, arguments);\n };\n\n descriptor.value.displayName = `${ name }:promisified`;\n}\n","/* @flow */\n\nimport { CONFIG } from 'post-robot/src';\nimport { config, logLevels, info as logInfo, warn as logWarn, error as logError } from 'beaver-logger/client';\n\nexport function setLogLevel(logLevel : string) {\n if (logLevels.indexOf(logLevel) === -1) {\n throw new Error(`Invalid logLevel: ${ logLevel }`);\n }\n config.logLevel = logLevel;\n CONFIG.LOG_LEVEL = logLevel;\n window.LOG_LEVEL = logLevel;\n}\n\nexport function info(name : string, event : string, payload : Object = {}) {\n logInfo(`xc_${ name }_${ event }`, payload);\n}\n\n\n/* Log Warning\n -----------\n\n Log a warning\n*/\n\nexport function warn(name : string, event : string, payload : Object = {}) {\n logWarn(`xc_${ name }_${ event }`, payload);\n}\n\n\n/* Log Error\n ---------\n\n Log an error\n*/\n\nexport function error(name : string, event : string, payload : Object = {}) {\n logError(`xc_${ name }_${ event }`, payload);\n}\n","/* @flow */\n\nimport { isSameDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { __ZOID__ } from '../constants';\n\nexport function globalFor(win : CrossDomainWindowType) : ?Object {\n\n if (!isSameDomain(win)) {\n return;\n }\n\n if (!win[__ZOID__]) {\n win[__ZOID__] = {};\n }\n\n return win[__ZOID__];\n}\n\nexport function localGlobal() : Object {\n let global = globalFor(window);\n\n if (!global) {\n throw new Error(`Could not get local global`);\n }\n\n return global;\n}\n\nexport let global = localGlobal();\n","/* @flow */\n\nexport * from './dom';\nexport * from './fn';\nexport * from './promise';\nexport * from './util';\nexport * from './css';\nexport * from './decorators';\nexport * from './logger';\nexport * from './global';\n","/* @flow weak */\n/* eslint max-lines: 0 */\n\nimport { ENV, COUNTRY, LANG, LOCALE } from '../constants';\n\nfunction getDefaultEnv() : $Values {\n if (__TEST__) {\n return ENV.TEST;\n }\n\n if (typeof window === 'undefined' || typeof window.location === 'undefined') {\n return ENV.PRODUCTION;\n }\n\n if (window.location.host.indexOf('localhost.paypal.com') !== -1) {\n return ENV.LOCAL;\n }\n\n if (window.location.host.indexOf('qa.paypal.com') !== -1) {\n return ENV.STAGE;\n }\n\n if (window.location.host.indexOf('sandbox.paypal.com') !== -1) {\n return ENV.SANDBOX;\n }\n\n return ENV.PRODUCTION;\n}\n\nexport const config = {\n\n locales: LOCALE,\n\n scriptUrl: __TEST__\n ? `//${ window.location.host }/base/src/load.js`\n : `//www.paypalobjects.com/api/${ __FILE_NAME__ }`,\n\n // eslint-disable-next-line security/detect-unsafe-regex, unicorn/no-unsafe-regex\n paypal_domain_regex: /^(https?|mock):\\/\\/[a-zA-Z0-9_.-]+\\.paypal\\.com(:\\d+)?$/,\n\n version: __PAYPAL_CHECKOUT__.__MINOR_VERSION__,\n\n cors: true,\n\n env: getDefaultEnv(),\n\n state: 'checkoutjs',\n\n locale: {\n country: COUNTRY.US,\n lang: LANG.EN\n },\n\n stage: 'msmaster',\n stageDomain: 'qa.paypal.com',\n\n get stageUrl() : string {\n return `${ config.stage }.${ config.stageDomain }`;\n },\n\n get apiStageUrl() : string {\n return `${ config.apiStage }.${ config.stageDomain }`;\n },\n\n get localhostUrl() : string {\n return `http://localhost.paypal.com:${ config.ports.default }`;\n },\n\n set localhostUrl(val) {\n delete this.localhostUrl;\n this.localhostUrl = val;\n },\n\n merchantID: '',\n authCode: '',\n\n logLevel: __PAYPAL_CHECKOUT__.__DEFAULT_LOG_LEVEL__,\n\n throttles: {\n v4_mobile_device: 0\n },\n\n domain_settings: {\n 'walmart.com': {\n ie_full_page: false,\n allow_full_page_fallback: true,\n memoize_payment: true,\n force_bridge: true,\n log_authorize: true\n },\n\n 'ulta.com': {\n disable_venmo: true\n },\n\n 'barnesandnoble.com': {\n disable_venmo: true\n },\n\n 'bn.com': {\n disable_venmo: true\n },\n\n 'agoratix.com': {\n disable_venmo: true\n },\n\n 'tractorsupply.com': {\n disable_venmo: true\n },\n\n 'etsy.com': {\n ie_full_page: false,\n allow_full_page_fallback: true,\n memoize_payment: true,\n force_bridge: true,\n log_authorize: true\n },\n\n 'ticketmaster.com': {\n disable_venmo: true\n },\n\n 'livenation.com': {\n disable_venmo: true\n },\n\n 'frontgatetickets.com': {\n disable_venmo: true\n },\n\n 'williams-sonoma.com': {\n disable_venmo: true\n },\n\n 'westelm.com': {\n disable_venmo: true\n },\n\n 'markandgraham.com': {\n disable_venmo: true\n },\n\n 'potterybarn.com': {\n disable_venmo: true\n },\n\n 'potterybarnkids.com': {\n disable_venmo: true\n },\n\n 'pbteen.com': {\n disable_venmo: true\n },\n\n 'beallsflorida.com': {\n disable_venmo: true\n },\n\n 'therealreal.com': {\n disable_venmo: true\n },\n\n 'liveaquaria.com': {\n disable_venmo: true\n },\n\n 'drsfostersmith.com': {\n disable_venmo: true\n },\n\n 'boxed.com': {\n disable_venmo: true\n },\n\n 'bevisible.com': {\n disable_venmo: true\n },\n\n 'moeller.org': {\n disable_venmo: true\n },\n\n 'searshometownstores.com': {\n disable_venmo: true\n },\n\n 'searshardwarestores.com': {\n disable_venmo: true\n },\n\n 'searshomeapplianceshowroom.com': {\n disable_venmo: true\n },\n\n 'barkshop.com': {\n disable_venmo: true\n },\n\n 'vividseats.com': {\n disable_venmo: true\n },\n\n 'getcargo.today': {\n disable_venmo: true\n },\n\n 'smartdestinations.com': {\n disable_venmo: true\n },\n\n 'philadelphiapass.com': {\n disable_venmo: true\n },\n\n 'thesydneypass.com': {\n disable_venmo: true\n },\n\n '3secondlash.com': {\n disable_venmo: true\n },\n\n 'newyorkpass.com': {\n disable_venmo: true\n },\n\n 'dndbeyond.com': {\n disable_venmo: true\n },\n\n 'app.zapbuy.it': {\n disable_venmo: true\n },\n\n 'gamersaloon.com': {\n disable_venmo: true\n },\n\n '1800contacts.com': {\n disable_venmo: true\n },\n\n 'shopchatters.ca': {\n disable_venmo: true\n },\n\n 'shopguyswin.ca': {\n disable_venmo: true\n },\n\n 'jjill.com': {\n disable_venmo: true\n },\n\n 'qvc.com': {\n disable_venmo: true\n },\n\n 'stelladot.com': {\n disable_venmo: true\n },\n\n 'keepcollective.com': {\n disable_venmo: true\n },\n\n 'everskin.com': {\n disable_venmo: true\n },\n\n 'zulily.com': {\n disable_venmo: true\n },\n\n 'freshly.com': {\n disable_venmo: true\n },\n\n 'buypeticare.com': {\n disable_venmo: true\n },\n\n 'getownzone.com': {\n disable_venmo: true\n },\n\n 'uncommongoods.com': {\n disable_venmo: true\n },\n\n 'onegold.com': {\n disable_venmo: true\n },\n\n 'universitytees.com': {\n disable_venmo: true\n },\n\n 'revolve.com': {\n disable_venmo: true\n },\n\n 'functionofbeauty.com': {\n disable_venmo: true\n },\n\n 'givebutter.com': {\n disable_venmo: true\n },\n\n 'hausmart.com': {\n disable_venmo: true\n },\n\n 'derbyjackpot.com': {\n disable_venmo: true\n },\n\n 'ancestry.com': {\n disable_venmo: true\n },\n\n 'boats.net': {\n disable_venmo: true\n },\n\n 'partzilla.com': {\n disable_venmo: true\n },\n\n 'firedog.com': {\n disable_venmo: true\n },\n\n 'chick-fil-a.com': {\n disable_venmo: true\n },\n\n 'roku.com': {\n disable_venmo: true\n },\n\n 'barkbox.com': {\n disable_venmo: true\n },\n\n 'neimanmarcus.com': {\n disable_venmo: true\n },\n\n 'lastcall.com': {\n disable_venmo: true\n },\n\n 'horchow.com': {\n disable_venmo: true\n },\n\n 'bergdorfgoodman.com': {\n disable_venmo: true\n },\n\n 'fwrd.com': {\n disable_venmo: true\n },\n\n 'plunderdesign.com': {\n disable_venmo: true\n },\n\n 'stitchfix.com': {\n disable_venmo: true\n },\n\n 'revzilla.com': {\n disable_venmo: true\n },\n\n 'cyclegear.com': {\n disable_venmo: true\n },\n\n 'chegg.com': {\n disable_venmo: true\n },\n\n 'youniqueproducts.com': {\n disable_venmo: true\n },\n\n 'archives.com': {\n disable_venmo: true\n },\n\n 'hautelook.com': {\n disable_venmo: true\n },\n\n 'nordstromrack.com': {\n disable_venmo: true\n },\n\n 'motherhoodcanada.ca': {\n disable_venmo: true\n },\n\n 'atomtickets.com': {\n disable_venmo: true\n },\n\n 'trademore.com': {\n disable_venmo: true\n },\n\n 'lasheaseoffer.com': {\n disable_venmo: true\n },\n\n 'rookie.paypalsixthman.com': {\n disable_venmo: true\n },\n\n '1800Contacts.com': {\n disable_venmo: true\n },\n\n 'hulu.com': {\n disable_venmo: true\n },\n\n 'grubhub.com': {\n disable_venmo: true\n },\n\n 'eat24.com': {\n disable_venmo: true\n },\n\n 'seamless.com': {\n disable_venmo: true\n },\n\n 'freshfeetscrubber.com': {\n disable_venmo: true\n },\n\n 'opensky.com': {\n disable_venmo: true\n },\n\n 'dotandbo.com': {\n disable_venmo: true\n },\n\n 'storenvy.com': {\n disable_venmo: true\n },\n\n 'gemafina.com': {\n disable_venmo: true\n },\n\n 'pickperfect.com': {\n disable_venmo: true\n },\n\n '55mulberry.com': {\n disable_venmo: true\n },\n \n 'hollar.com': {\n disable_venmo: true\n },\n\n 'bjs.com': {\n disable_venmo: true\n },\n\n 'playsugarhouse.com': {\n disable_venmo: true\n },\n\n 'lakeshorelearning.com': {\n disable_venmo: true\n },\n\n 'llmhq.com': {\n disable_venmo: true\n },\n\n 'gainful.com': {\n disable_venmo: true\n },\n\n 'modaoperandi.com': {\n disable_venmo: true\n },\n \n 'play.jackpocket.com': {\n disable_venmo: true\n },\n\n 'crepeerase.com': {\n disable_venmo: true\n },\n\n 'specificbeauty.com': {\n disable_venmo: true\n },\n\n 'meaningfulbeauty.com': {\n disable_venmo: true\n },\n\n 'smileactives.com ': {\n disable_venmo: true\n },\n\n 'mally.com': {\n disable_venmo: true\n },\n\n 'westmorebeauty.com': {\n disable_venmo: true\n },\n\n 'subd.com': {\n disable_venmo: true\n },\n\n 'seacalmskin.com': {\n disable_venmo: true\n },\n \n 'whittier.edu': {\n disable_venmo: true\n },\n \n 'curology.com': {\n disable_venmo: true\n },\n \n 'monoprice.com': {\n disable_venmo: true\n },\n \n 'dominos.com': {\n disable_venmo: true\n },\n \n 'audiobooks.com': {\n disable_venmo: true\n },\n \n '1aauto.com': {\n disable_venmo: true\n },\n\n 'greatwolf.com': {\n disable_venmo: true\n },\n\n 'cvs.com': {\n disable_venmo: true\n },\n\n 'gilt.com': {\n disable_venmo: true\n },\n\n 'ruelala.com': {\n disable_venmo: true\n }\n },\n\n creditTestDomains: [ 'bluesuncorp.co.uk', 'nationsphotolab.com', 'plexusworldwide.com', 'nshss.org', 'bissell.com', 'mobstub.com', 'vuoriclothing.com', 'tape4backup.com', 'avivamiento.com', 'rhododendron.org', 'whiterabbitjapan.com', 'atsracing.net', 'thehilltopgallery.com', 'weedtraqr.com', 'worldpantry.com', 'ciraconnect.com', 'mymalls.com', 'prowinch.com', 'zodiacpoolsystems.com', 'everlywell.com', 'candlewarmers.com', 'chop.edu', 'incruises.com', 'flikn.com', 'didforsale.com', 'mcc.org', 'sygu.net', 'merchbar.com', 'eduinconline.com', 'us.livebetterwith.com', 'bakemeawish.com', 'judolaunch.com', 'eventcartel.com', 'tapatalk.com', 'telescope.com', 'covenant.edu', 'aquatruwater.com', 'spingo.com', 'usu.edu', 'getcelerity.com', 'brandless.com', 'saberigniter.com', 'euromodeltrains.com', 'gofasttrader.com', 'megamodzplanet.com', 'draftanalyzer.com', 'lovewithoutboundaries.com', 'filterpop.com', 'seekverify.com', 'photoandgo.com', 'sightseeingpass.com', 'bigoanddukes.com', 'thethirstyduck.com', 'thebrushguys.com', '907delivery.com', 'mauisails.com', 'drive.net', 'channelmax.net', 'modernrebelco.com', 'enchanteddiamonds.com', 'ibabbleon.com', 'fullgenomes.com', 'conn-comp.com', 'wingware.com', 'paradigmgoods.com', 'theneptunegroup.com', 'kidzartworks.com', 'unirealm.com', 'ncfarmsinc.com', 'oneofakindantiques.com', 'servers4less.com', 'stumpthespread.com', 'marketwagon.com', 'monsterhouseplans.com', 'canterburychoral.org', 'teacupnordic.org', 'thethirstyduck.com', 'medialoot.com', 'theartistunion.com', 'yourglamourzone.com', 'breckstables.com', 'mackephotography.com', 'dsaj.org', 'massluminosity.com', 'tespa.org', 'versatilearts.net', 'yecup.org', 'divinebusinessmanagement.com', 'captivatebeautyservices.com', 'class4me.com', 'wcsonlineuniversity.com', 'pvplive.com', 'kyneteks.com', 'rare-paper.com', 'bpg.bpgsim.biz', 'geodegallery.com', 'way.com', 'kringle.com', 'talentedmrsalas.ph', 'litcharts.com', 'purpletreephotography.com', 'apache.org', 'neopackage.com', 'globaldance.tv', 'integral.studio', 'airdoctorpro.com', 'ivoryandiron.com', 'yuengling.com', 'averysbranchfarms.com', 'amberreinink.com', 'skinnymechocolate.com', 'bmbl.net', 'ncwatercolor.net', 'astrograph.com', 'localadventures.mx', 'ripcurl.com', 'worldfootbrakechallenge.com', 'shespeakssales.com', 'obrienguitars.com', 'jadenikkolephoto.com', 'americavoice.com', 'cassiexie.com', 'aamastateconvention.org', 'rellesflorist.com', 'passionnobby.com', 'bodybyheidi.com', 'roqos.com', 'prijector.com', 'maryswanson.net', 'tsghobbies.com', 'erinlaytonphotography.com', 'darter.org', 'fountainpenhospital.com', 'myzestfullife.com', 'pcog.org', 'alisabethdesigns.com', 'katiemathisphoto.com', 'strictlybellaphotography.com', 'maptools.com', 'sites.google.com', 'gallerr.com', 'southfloridatrikke.com', 'caviar.tv', 'mintingmasters.com', 'prospectorsguild.com', 'inktale.com', 'prettygirlgoods.com', 'laceycahill.com', 'daniellenowak.com', 't212.org', 'scmsinc.com', 'babypaloozanc.com', 'tetrisonline.com', 'grdd.net', 'cdspg.info', 'airshipapparel.com', 'waft.com', 'extendpets.com', 'supplyhub.com', 'hlbsusa.com', 'jaderollerbeauty.com', 'theparentingjunkie.com', 'schagringas.com', 'yourscribemate.com', 'sportscollectibles.com', 'thedivinenoise.com', 'hometeamsonline.com', 'trademarkpress.com', 'destinationenglish.us', 'jacquesflowers.com', 'aliszhatchphotography.com', 'rusticfoundry.com', 'ahhhmassage.net', 'frezzor.com', 'mandelininc.com', 'kayleejackson.com', 'monkinstitute.org', 'eddiebsbbq.com', 'morningstarmediaservices.com', 'kinevative.com', 'orivet.com', 'digitalprinthouse.net', 'dynamicgenius.com', 'allpartsusa.com', 'flowersbydavid.net', 'nwvoices.org', 'leaptrade.com', 'tulsaschoolpics.com', 'alioth.io', 'windowflair.com', 'vitcom.net', 'simplybeautifulfashions.com', 'christinabenton.com', 'fromthedaughter.com', 'hometowngraphics.net', 'fibanalysis.com', 'creativejobscentral.com', 'sandbox.gg', 'jt-digitalmedia.com', 'kodable.com', 'birthingstone.com', 'taranicholephoto.com', 'hillyfieldsflorist.com', 'charitynoelphoto.com', 'auxdelicesfoods.com', 'terilynnphotography.com', 'folieadeuxevents.com', 'karensfloral.com', 'montgomerydiveclub.com', 'rainbowplastics.com', 'confettionthedancefloor.com', 'vomozmedia.com', 'neatmod.com', 'getnaturafled.com', 'callingpost.com', 'iamfamily.org', 'pedigreeonline.com', 'typeboost.io', 'in-n-outpetdoor.com', 'nerdstockgc.com', 'keiadmin.com', 'createdbykaui.com', 'aikophoto.com', 'lonestar.ink', 'stlfurs.com', 'treasurelistings.com', 'thecubicle.us', 'redclaypaper.com', 'blushhousemedia.com', 'documentsanddesigns.com', 'whitneyleighphotography.shootproof.com', 'amaryllisday.com', 'hermanproav.com', 'felicemedia.com', 'withloveplacenta.com', 'store.brgadgets.co', 'klowephoto.com', 'spenceraustinconsulting.com', 'sno-eagles.org', 'dsatallahassee.org', 'bakupages.com', 'neswc.com', 'josiebrooksphotography.com', 'brisksale.com', 'legalwhoosh.com', 'jasmineeaster.com', 'swatstudios.com', 'facebook.com', 'shakershell.com', 'alexiswinslow.com', 'mixeddimensions.com', 'sweetpproductions.com', 'lbeaphotography.com', 'otlseatfillers.com', 'jdtickets.com', 'catholicar.com', 'masque.com', 'smalltownstudio.net', 'goherbalife.com', 'itzyourz.com', 'magazinespeedloader.com', 'dreammachines.io', 'dallasdieteticalliance.org', 'http:', 'medair.org', 'unbridledambition.com', 'sarasprints.com', 'wiperecord.com', 'showmyrabbit.com', 'cctrendsshop.com', 'rachelalessandra.com', 'otherworld-apothecary.com', 'melissaannphoto.com', 'girlceo.co', 'seasidemexico.com', 'telosid.com', 'instin.com', 'marinecorpsmustang.org', 'lancityconnect.com', 'hps1.org', 'karenware.com', 'livecurriculum.com', 'spellingstars.com', 'vektorfootball.com', 'zaltv.com', 'nebraskamayflower.org', 'ethiopianspices.com', 'immitranslate.com', 'rafaelmagic.com.com', 'bahc1.org', 'newenamel.com', 'bhchp.org', 'buybulkamerica.com', 'sourcepoint.com', 'squarestripsports.com', 'wix.com', 'wilderootsphotography.com', 'goodsalt.com', 'systemongrid.com', 'designmil.org', 'freshtrendhq.com', 'valisimofashions.com', 'buyneatly.com', 'getbeauty.us', 'intellimidia.com' ],\n \n customCountry: false,\n\n SUPPORTED_BROWSERS: {\n msie: '11',\n firefox: '30',\n chrome: '27',\n safari: '7',\n opera: '16',\n msedge: '12',\n samsungBrowser: '2.1',\n silk: '59.3',\n ucbrowser: '10.0.0.488',\n vivaldi: '1.91'\n },\n\n session_uid_lifetime: 5 * 60 * 1000,\n\n _apiStage: '',\n\n get apiStage() : string {\n return config._apiStage || config.stage;\n },\n\n set apiStage(value) {\n config._apiStage = value;\n },\n\n ports: {\n default: 8000,\n button: 8000,\n checkout: 8000,\n guest: 8001,\n altpay: 3000\n },\n\n get paypalUrls() : Object {\n return {\n [ ENV.LOCAL ]: config.localhostUrl,\n [ ENV.STAGE ]: `https://www.${ config.stageUrl }`,\n [ ENV.SANDBOX ]: `https://www.sandbox.paypal.com`,\n [ ENV.PRODUCTION ]: `https://www.paypal.com`,\n [ ENV.TEST ]: `${ window.location.protocol }//${ window.location.host }`,\n [ ENV.DEMO ]: `${ window.location.protocol }//localhost.paypal.com:${ window.location.port }`\n };\n },\n\n get paypalDomains() : Object {\n return {\n [ ENV.LOCAL ]: 'http://localhost.paypal.com:8000',\n [ ENV.STAGE ]: `https://www.${ config.stageUrl }`,\n [ ENV.SANDBOX ]: `https://www.sandbox.paypal.com`,\n [ ENV.PRODUCTION ]: `https://www.paypal.com`,\n [ ENV.TEST ]: `mock://www.paypal.com`,\n [ ENV.DEMO ]: `${ window.location.protocol }//localhost.paypal.com:${ window.location.port }`\n };\n },\n\n get wwwApiUrls() : Object {\n return {\n [ ENV.LOCAL ]: `https://www.${ config.stageUrl }`,\n [ ENV.STAGE ]: `https://www.${ config.stageUrl }`,\n [ ENV.SANDBOX ]: `https://www.sandbox.paypal.com`,\n [ ENV.PRODUCTION ]: `https://www.paypal.com`,\n [ ENV.TEST ]: `${ window.location.protocol }//${ window.location.host }`\n };\n },\n\n get corsApiUrls() : Object {\n return {\n [ ENV.LOCAL ]: `https://${ config.apiStageUrl }:12326`,\n [ ENV.STAGE ]: `https://${ config.apiStageUrl }:12326`,\n [ ENV.SANDBOX ]: `https://cors.api.sandbox.paypal.com`,\n [ ENV.PRODUCTION ]: `https://cors.api.paypal.com`,\n [ ENV.TEST ]: `${ window.location.protocol }//${ window.location.host }`\n };\n },\n\n get apiUrls() : Object {\n\n const domain = `${ window.location.protocol }//${ window.location.host }`;\n const corsApiUrls = config.corsApiUrls;\n const wwwApiUrls = config.wwwApiUrls;\n\n return {\n [ ENV.LOCAL ]: domain === wwwApiUrls.local ? wwwApiUrls.local : corsApiUrls.local,\n [ ENV.STAGE ]: domain === wwwApiUrls.stage ? wwwApiUrls.stage : corsApiUrls.stage,\n [ ENV.SANDBOX ]: domain === wwwApiUrls.sandbox ? wwwApiUrls.sandbox : corsApiUrls.sandbox,\n [ ENV.PRODUCTION ]: domain === wwwApiUrls.production ? wwwApiUrls.production : corsApiUrls.production,\n [ ENV.TEST ]: domain === wwwApiUrls.test ? wwwApiUrls.test : corsApiUrls.test\n };\n },\n\n get checkoutUri() : ?string {\n return null;\n },\n\n set checkoutUri(val) {\n delete this.checkoutUri;\n this.checkoutUri = val;\n },\n\n get checkoutUris() : Object {\n if (config.checkoutUri) {\n return {\n [ ENV.LOCAL ]: config.checkoutUri,\n [ ENV.STAGE ]: config.checkoutUri,\n [ ENV.SANDBOX ]: config.checkoutUri,\n [ ENV.PRODUCTION ]: config.checkoutUri,\n [ ENV.TEST ]: config.checkoutUri,\n [ ENV.DEMO ]: config.checkoutUri\n };\n }\n\n return {\n [ ENV.LOCAL ]: `/webapps/hermes`,\n [ ENV.STAGE ]: `/webapps/hermes`,\n [ ENV.SANDBOX ]: `/checkoutnow`,\n [ ENV.PRODUCTION ]: `/checkoutnow`,\n [ ENV.TEST ]: `/base/test/windows/checkout/index.htm?checkouturl=true`,\n [ ENV.DEMO ]: `/demo/dev/checkout.htm`\n };\n },\n\n altpayUris: {\n [ ENV.LOCAL ]: `/latinumcheckout`,\n [ ENV.STAGE ]: `/latinumcheckout`,\n [ ENV.SANDBOX ]: `/latinumcheckout`,\n [ ENV.PRODUCTION ]: `/latinumcheckout`,\n [ ENV.TEST ]: `/base/test/windows/checkout/index.htm?checkouturl=true`,\n [ ENV.DEMO ]: `/demo/dev/checkout.htm`\n },\n\n guestUris: {\n [ ENV.LOCAL ]: `/webapps/xoonboarding`,\n [ ENV.STAGE ]: `/webapps/xoonboarding`,\n [ ENV.SANDBOX ]: `/webapps/xoonboarding`,\n [ ENV.PRODUCTION ]: `/webapps/xoonboarding`,\n [ ENV.TEST ]: `/base/test/windows/checkout/index.htm?guesturl=true`,\n [ ENV.DEMO ]: `/demo/dev/guest.htm`\n },\n\n billingUris: {\n [ ENV.LOCAL ]: `/webapps/hermes/agreements`,\n [ ENV.STAGE ]: `/webapps/hermes/agreements`,\n [ ENV.SANDBOX ]: `/agreements/approve`,\n [ ENV.PRODUCTION ]: `/agreements/approve`,\n [ ENV.TEST ]: `/base/test/windows/checkout/index.htm?billingurl=true`,\n [ ENV.DEMO ]: `/demo/dev/checkout.htm`\n },\n\n buttonUris: {\n [ ENV.LOCAL ]: `/smart/button`,\n [ ENV.STAGE ]: `/smart/button`,\n [ ENV.SANDBOX ]: `/smart/button`,\n [ ENV.PRODUCTION ]: `/smart/button`,\n [ ENV.TEST ]: `/base/test/windows/button/index.htm`,\n [ ENV.DEMO ]: `/demo/dev/button.htm`\n },\n\n inlinedCardFieldUris: {\n [ ENV.LOCAL ]: `/smart/card-fields`,\n [ ENV.STAGE ]: `/smart/card-fields`,\n [ ENV.SANDBOX ]: `/smart/card-fields`,\n [ ENV.PRODUCTION ]: `/smart/card-fields`,\n [ ENV.TEST ]: `/base/test/windows/card-fields/index.htm`,\n [ ENV.DEMO ]: `/demo/dev/card.htm`\n },\n\n postBridgeUris: {\n [ ENV.LOCAL ]: `/webapps/hermes/component-meta`,\n [ ENV.STAGE ]: `/webapps/hermes/component-meta`,\n [ ENV.SANDBOX ]: `/webapps/hermes/component-meta`,\n [ ENV.PRODUCTION ]: `/webapps/hermes/component-meta`,\n [ ENV.TEST ]: `/base/test/windows/component-meta/index.htm`,\n [ ENV.DEMO ]: `/demo/dev/bridge.htm`\n },\n\n legacyCheckoutUris: {\n [ ENV.LOCAL ]: `/cgi-bin/webscr?cmd=_express-checkout&xo_node_fallback=true`,\n [ ENV.STAGE ]: `/cgi-bin/webscr?cmd=_express-checkout&xo_node_fallback=true`,\n [ ENV.SANDBOX ]: `/cgi-bin/webscr?cmd=_express-checkout&xo_node_fallback=true`,\n [ ENV.PRODUCTION ]: `/cgi-bin/webscr?cmd=_express-checkout&xo_node_fallback=true`,\n [ ENV.TEST ]: `#fallback`\n },\n\n buttonJSUrls: {\n [ ENV.LOCAL ]: `https://www.paypalobjects.com/api/button.js`,\n [ ENV.STAGE ]: `https://www.paypalobjects.com/api/button.js`,\n [ ENV.SANDBOX ]: `https://www.paypalobjects.com/api/button.js`,\n [ ENV.PRODUCTION ]: `https://www.paypalobjects.com/api/button.js`,\n [ ENV.TEST ]: `/base/test/lib/button.js`,\n [ ENV.DEMO ]: `https://www.paypalobjects.com/api/button.js`\n },\n\n get buttonJSUrl() : string {\n return config.buttonJSUrls[config.env];\n },\n\n loginUri: `/signin/`,\n\n hermesLoggerUri: `/webapps/hermes/api/logger`,\n\n loggerUri: `/xoplatform/logger/api/logger`,\n\n loggerThrottlePercentage: 1.0, // 100%\n\n pptmUri: `/tagmanager/pptm.js`,\n\n get postBridgeUri() : string {\n return `${ config.postBridgeUris[config.env] }?xcomponent=1`;\n },\n\n paymentStandardUri: `/webapps/xorouter?cmd=_s-xclick`,\n\n authApiUri: `/v1/oauth2/token`,\n paymentApiUri: `/v1/payments/payment`,\n orderApiUri: `/v2/checkout/orders`,\n billingApiUri: `/v1/billing-agreements/agreement-tokens`,\n experienceApiUri: `/v1/payment-experience/web-profiles`,\n trackingApiUri: `/v1/risk/transaction-contexts`,\n\n get checkoutUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local }${ config.checkoutUris.local.replace(`:${ config.ports.default }`, `:${ config.ports.checkout }`) }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.checkoutUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.checkoutUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.checkoutUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.checkoutUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.test }${ config.checkoutUris.demo }`\n };\n },\n\n get guestUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local.replace(`:${ config.ports.default }`, `:${ config.ports.guest }`) }${ config.guestUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.guestUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.guestUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.guestUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.guestUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.test }${ config.guestUris.demo }`\n };\n },\n\n get altpayUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local.replace(`:${ config.ports.default }`, `:${ config.ports.altpay }`) }${ config.altpayUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.altpayUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.altpayUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.altpayUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.altpayUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.test }${ config.altpayUris.demo }`\n };\n },\n\n get billingUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local.replace(`:${ config.ports.default }`, `:${ config.ports.checkout }`) }${ config.billingUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.billingUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.billingUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.billingUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.billingUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.test }${ config.billingUris.demo }`\n };\n },\n\n get buttonUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local.replace(`:${ config.ports.default }`, `:${ config.ports.button }`) }${ config.buttonUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.buttonUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.buttonUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.buttonUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.buttonUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.demo }${ config.buttonUris.demo }`\n };\n },\n\n get inlinedCardFieldUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local.replace(`:${ config.ports.default }`, `:${ config.ports.button }`) }${ config.inlinedCardFieldUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.inlinedCardFieldUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.inlinedCardFieldUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.inlinedCardFieldUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.inlinedCardFieldUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.demo }${ config.inlinedCardFieldUris.demo }`\n };\n },\n\n get loginUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.stage }${ config.loginUri }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.loginUri }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.loginUri }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.loginUri }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.loginUri }`\n };\n },\n\n get paymentsStandardUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local }${ config.paymentStandardUri }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.paymentStandardUri }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.paymentStandardUri }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.paymentStandardUri }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.paymentStandardUri }`\n };\n },\n\n get metaFrameUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local }${ config.postBridgeUri }&env=local`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.postBridgeUri }&env=stage&stage=${ config.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.postBridgeUri }&env=sandbox`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.postBridgeUri }&env=production`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.postBridgeUri }&env=test`,\n [ ENV.DEMO ]: `${ paypalUrls.demo }${ config.postBridgeUri }&env=demo`\n };\n },\n\n get legacyCheckoutUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.stage }${ config.legacyCheckoutUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.legacyCheckoutUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.legacyCheckoutUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.legacyCheckoutUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.legacyCheckoutUris.test }`\n };\n },\n\n get authApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const authApiUri = config.authApiUri;\n\n return {\n [ ENV.LOCAL ]: `${ apiUrls.local }${ authApiUri }`,\n [ ENV.STAGE ]: `${ apiUrls.stage }${ authApiUri }`,\n [ ENV.SANDBOX ]: `${ apiUrls.sandbox }${ authApiUri }`,\n [ ENV.PRODUCTION ]: `${ apiUrls.production }${ authApiUri }`,\n [ ENV.TEST ]: `${ apiUrls.test }${ authApiUri }`\n };\n },\n\n get paymentApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const paymentApiUri = config.paymentApiUri;\n\n return {\n [ ENV.LOCAL ]: `${ apiUrls.local }${ paymentApiUri }`,\n [ ENV.STAGE ]: `${ apiUrls.stage }${ paymentApiUri }`,\n [ ENV.SANDBOX ]: `${ apiUrls.sandbox }${ paymentApiUri }`,\n [ ENV.PRODUCTION ]: `${ apiUrls.production }${ paymentApiUri }`,\n [ ENV.TEST ]: `${ apiUrls.test }${ paymentApiUri }`\n };\n },\n\n get orderApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const orderApiUri = config.orderApiUri;\n\n return {\n [ENV.LOCAL]: `${ apiUrls.local }${ orderApiUri }`,\n [ENV.STAGE]: `${ apiUrls.stage }${ orderApiUri }`,\n [ENV.SANDBOX]: `${ apiUrls.sandbox }${ orderApiUri }`,\n [ENV.PRODUCTION]: `${ apiUrls.production }${ orderApiUri }`,\n [ENV.TEST]: `${ apiUrls.test }${ orderApiUri }`\n };\n },\n\n get billingApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const billingApiUri = config.billingApiUri;\n\n return {\n [ ENV.LOCAL ]: `${ apiUrls.local }${ billingApiUri }`,\n [ ENV.STAGE ]: `${ apiUrls.stage }${ billingApiUri }`,\n [ ENV.SANDBOX ]: `${ apiUrls.sandbox }${ billingApiUri }`,\n [ ENV.PRODUCTION ]: `${ apiUrls.production }${ billingApiUri }`,\n [ ENV.TEST ]: `${ apiUrls.test }${ billingApiUri }`\n };\n },\n\n get experienceApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const experienceApiUri = config.experienceApiUri;\n\n return {\n [ ENV.LOCAL ]: `${ apiUrls.local }${ experienceApiUri }`,\n [ ENV.STAGE ]: `${ apiUrls.stage }${ experienceApiUri }`,\n [ ENV.SANDBOX ]: `${ apiUrls.sandbox }${ experienceApiUri }`,\n [ ENV.PRODUCTION ]: `${ apiUrls.production }${ experienceApiUri }`,\n [ ENV.TEST ]: `${ apiUrls.test }${ experienceApiUri }`\n };\n },\n\n get trackingApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const trackingApiUri = config.trackingApiUri;\n\n return {\n [ ENV.LOCAL ]: `${ apiUrls.local }${ trackingApiUri }`,\n [ ENV.STAGE ]: `${ apiUrls.stage }${ trackingApiUri }`,\n [ ENV.SANDBOX ]: `${ apiUrls.sandbox }${ trackingApiUri }`,\n [ ENV.PRODUCTION ]: `${ apiUrls.production }${ trackingApiUri }`,\n [ ENV.TEST ]: `${ apiUrls.test }${ trackingApiUri }`\n };\n },\n\n _paypalUrl: '',\n\n get paypalUrl() : string {\n return this._paypalUrl || config.paypalUrls[config.env];\n },\n\n set paypalUrl(value) {\n this._paypalUrl = value;\n },\n\n get paypalDomain() : string {\n return config.paypalDomains[config.env];\n },\n\n get corsApiUrl() : string {\n return config.corsApiUrls[config.env];\n },\n\n get wwwApiUrl() : string {\n return config.wwwApiUrls[config.env];\n },\n\n get apiUrl() : string {\n\n const domain = `${ window.location.protocol }//${ window.location.host }`;\n const corsApiUrl = config.corsApiUrl;\n const wwwApiUrl = config.wwwApiUrl;\n\n return domain === wwwApiUrl ? wwwApiUrl : corsApiUrl;\n },\n\n get checkoutUrl() : string {\n return `${ config.paypalUrl }${ config.checkoutUris[config.env] }`;\n },\n\n get billingUrl() : string {\n return `${ config.paypalUrl }${ config.billingUris[config.env] }`;\n },\n\n get buttonUrl() : string {\n return `${ config.paypalUrl }${ config.buttonUris[config.env] }`;\n },\n\n get legacyCheckoutUrl() : string {\n return config.legacyCheckoutUrls[config.env];\n },\n\n get postBridgeUrl() : string {\n return `${ config.paypalUrl }${ config.postBridgeUri }`;\n },\n\n get postBridgeDomain() : string {\n return `${ config.paypalDomain }`;\n },\n\n get loggerUrl() : string {\n const isTestExperiment = Math.random() < config.loggerThrottlePercentage;\n const loggerUrl = isTestExperiment ? config.loggerUri : config.hermesLoggerUri;\n\n return `${ config.paypalUrl }${ loggerUrl }`;\n },\n\n get pptmUrl() : string {\n return `${ config.paypalUrls[config.env] }${ config.pptmUri }`;\n },\n\n get authApiUrl() : string {\n return `${ config.apiUrl }${ config.authApiUri }`;\n },\n\n get paymentApiUrl() : string {\n return `${ config.apiUrl }${ config.paymentApiUri }`;\n },\n\n get orderApiUrl() : string {\n return `${ config.apiUrl }${ config.orderApiUri }`;\n },\n\n get billingApiUrl() : string {\n return `${ config.apiUrl }${ config.billingApiUri }`;\n },\n\n get experienceApiUrl() : string {\n return `${ config.apiUrl }${ config.experienceApiUri }`;\n },\n\n defaultLocale: {\n country: COUNTRY.US,\n lang: LANG.EN\n }\n};\n","/* @flow */\n\nexport * from './config';\n","\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nexport function extend(dest, src, over=true) {\n dest = dest || {};\n src = src || {};\n\n for (let i in src) {\n if (src.hasOwnProperty(i)) {\n if (over || !dest.hasOwnProperty(i)) {\n dest[i] = src[i];\n }\n }\n }\n\n return dest;\n}\n\nexport function isSameProtocol(url) {\n return window.location.protocol === url.split('/')[0];\n}\n\nexport function isSameDomain(url) {\n let match = url.match(/https?:\\/\\/[^/]+/);\n\n if (!match) {\n return true;\n }\n\n return match[0] === `${window.location.protocol}//${window.location.host}`;\n}\n\nexport function ajax(method, url, headers={}, data={}, { fireAndForget = false } = {}) {\n\n return new ZalgoPromise(resolve => {\n let XRequest = window.XMLHttpRequest || window.ActiveXObject;\n\n if (window.XDomainRequest && !isSameDomain(url)) {\n\n if (!isSameProtocol(url)) {\n return resolve();\n }\n\n XRequest = window.XDomainRequest;\n }\n\n let req = new XRequest('MSXML2.XMLHTTP.3.0');\n req.open(method.toUpperCase(), url, true);\n\n if (typeof req.setRequestHeader === 'function') {\n req.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n req.setRequestHeader('Content-type', 'application/json');\n\n for (let headerName in headers) {\n if (headers.hasOwnProperty(headerName)) {\n req.setRequestHeader(headerName, headers[headerName]);\n }\n }\n }\n\n if (fireAndForget) {\n resolve();\n } else {\n req.onreadystatechange = () => {\n if (req.readyState > 3) {\n resolve();\n }\n };\n }\n\n req.send(JSON.stringify(data).replace(/&/g, '%26'));\n });\n}\n\nexport function promiseDebounce(method, interval) {\n\n let debounce = {};\n\n return function() {\n let args = arguments;\n\n if (debounce.timeout) {\n clearTimeout(debounce.timeout);\n delete debounce.timeout;\n }\n\n debounce.timeout = setTimeout(() => {\n\n let resolver = debounce.resolver;\n let rejector = debounce.rejector;\n\n delete debounce.promise;\n delete debounce.resolver;\n delete debounce.rejector;\n delete debounce.timeout;\n\n return ZalgoPromise.resolve().then(() => {\n return method.apply(null, args);\n }).then(resolver, rejector);\n\n }, interval);\n\n debounce.promise = debounce.promise || new ZalgoPromise((resolver, rejector) => {\n debounce.resolver = resolver;\n debounce.rejector = rejector;\n });\n\n return debounce.promise;\n };\n}\n\nexport function onWindowReady() : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n if (typeof document !== 'undefined' && document.readyState === 'complete') {\n resolve();\n }\n\n window.addEventListener('load', resolve);\n });\n}\n\nexport function safeInterval(method, time) {\n\n let timeout;\n\n function loop() {\n timeout = setTimeout(() => {\n method();\n loop();\n }, time);\n }\n\n loop();\n\n return {\n cancel() {\n clearTimeout(timeout);\n }\n };\n}\n\nexport function uniqueID() {\n let chars = '0123456789abcdef';\n\n return 'xxxxxxxxxx'.replace(/./g, () => {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n });\n}\n\nexport function isIE() {\n return Boolean(window.document.documentMode);\n}\n","\nexport let payloadBuilders = [];\nexport let metaBuilders = [];\nexport let trackingBuilders = [];\nexport let headerBuilders = [];\n\nexport function addPayloadBuilder(builder) {\n payloadBuilders.push(builder);\n}\n\nexport function addMetaBuilder(builder) {\n metaBuilders.push(builder);\n}\n\nexport function addTrackingBuilder(builder) {\n trackingBuilders.push(builder);\n}\n\nexport function addHeaderBuilder(builder) {\n headerBuilders.push(builder);\n}","\nexport let config = {\n\n uri: '',\n prefix: '',\n\n initial_state_name: 'init',\n\n flushInterval: 10 * 60 * 1000,\n debounceInterval: 10,\n\n sizeLimit: 300,\n\n // Supress `console.log`s when `true`\n // Recommended for production usage\n silent: false,\n\n heartbeat: true,\n heartbeatConsoleLog: true,\n heartbeatInterval: 5000,\n heartbeatTooBusy: false,\n heartbeatTooBusyThreshold: 10000,\n\n logLevel: 'warn',\n\n autoLog: ['warn', 'error'],\n\n logUnload: true,\n logPerformance: true\n};\n\nexport let logLevels = [ 'error', 'warn', 'info', 'debug' ];\n","\nimport { extend, promiseDebounce, ajax, isIE } from './util';\nimport { payloadBuilders, metaBuilders, trackingBuilders, headerBuilders } from './builders';\nimport { config, logLevels } from './config';\n\nexport let buffer = [];\nexport let tracking = [];\n\nlet transport = (headers, data, options) => {\n return ajax('post', config.uri, headers, data, options);\n}\n\nexport function getTransport() {\n return transport;\n}\n\nexport function setTransport(newTransport) {\n transport = newTransport;\n}\n\nlet loaded = false;\n\nsetTimeout(() => {\n loaded = true;\n}, 1);\n\nexport function print(level, event, payload) {\n\n if (typeof window === 'undefined' || !window.console || !window.console.log) {\n return;\n }\n\n if (!loaded) {\n return setTimeout(() => print(level, event, payload), 1);\n }\n\n let logLevel = config.logLevel;\n\n if (window.LOG_LEVEL) {\n logLevel = window.LOG_LEVEL;\n }\n\n if (logLevels.indexOf(level) > logLevels.indexOf(logLevel)) {\n return;\n }\n\n payload = payload || {};\n\n let args = [event];\n\n if(isIE()){\n payload = JSON.stringify(payload);\n }\n\n args.push(payload);\n\n if (payload.error || payload.warning) {\n args.push('\\n\\n', payload.error || payload.warning);\n }\n\n try {\n if (window.console[level] && window.console[level].apply) {\n window.console[level].apply(window.console, args);\n } else if (window.console.log && window.console.log.apply) {\n window.console.log.apply(window.console, args);\n }\n } catch (err) {\n // pass\n }\n}\n\nexport function immediateFlush({ fireAndForget = false } = {}) {\n\n if (typeof window === 'undefined') {\n return;\n }\n\n if (!config.uri) {\n return;\n }\n\n let hasBuffer = buffer.length;\n let hasTracking = tracking.length;\n\n if (!hasBuffer && !hasTracking) {\n return;\n }\n\n let meta = {};\n\n for (let builder of metaBuilders) {\n try {\n extend(meta, builder(meta), false);\n } catch (err) {\n console.error('Error in custom meta builder:', err.stack || err.toString());\n }\n }\n\n let headers = {};\n\n for (let builder of headerBuilders) {\n try {\n extend(headers, builder(headers), false);\n } catch (err) {\n console.error('Error in custom header builder:', err.stack || err.toString());\n }\n }\n\n let events = buffer;\n\n let req = transport(headers, {\n events,\n meta,\n tracking\n }, {\n fireAndForget\n });\n\n buffer = [];\n tracking = [];\n\n return req;\n}\n\nexport let flush = promiseDebounce(immediateFlush, config.debounceInterval);\n\n\nfunction enqueue(level, event, payload) {\n\n buffer.push({\n level,\n event,\n payload\n });\n\n if (config.autoLog.indexOf(level) > -1) {\n flush();\n }\n}\n\n\nexport function log(level, event, payload) {\n\n if (typeof window === 'undefined') {\n return;\n }\n\n if (config.prefix) {\n event = `${config.prefix}_${event}`;\n }\n\n payload = payload || {};\n\n if (typeof payload === 'string') {\n payload = {\n message: payload\n };\n } else if (payload instanceof Error) {\n payload = {\n error: payload.stack || payload.toString()\n }\n }\n\n try {\n JSON.stringify(payload);\n } catch (err) {\n return;\n }\n\n payload.timestamp = Date.now();\n\n for (let builder of payloadBuilders) {\n try {\n extend(payload, builder(payload), false);\n } catch (err) {\n console.error('Error in custom payload builder:', err.stack || err.toString());\n }\n }\n\n if (!config.silent) {\n print(level, event, payload);\n }\n\n if (buffer.length === config.sizeLimit) {\n enqueue('info', 'logger_max_buffer_length');\n }\n else if (buffer.length < config.sizeLimit) {\n enqueue(level, event, payload);\n }\n}\n\nexport function prefix(name) {\n\n return {\n debug(event, payload) {\n return log('debug', `${name}_${event}`, payload);\n },\n\n info(event, payload) {\n return log('info', `${name}_${event}`, payload);\n },\n\n warn(event, payload) {\n return log('warn', `${name}_${event}`, payload);\n },\n\n error(event, payload) {\n return log('error', `${name}_${event}`, payload);\n },\n\n track(payload) {\n return track(payload);\n },\n\n flush() {\n return flush();\n }\n };\n}\n\nexport function debug(event, payload) {\n return log('debug', event, payload);\n}\n\nexport function info(event, payload) {\n return log('info', event, payload);\n}\n\nexport function warn(event, payload) {\n return log('warn', event, payload);\n}\n\nexport function error(event, payload) {\n return log('error', event, payload);\n}\n\nexport function track(payload) {\n\n if (typeof window === 'undefined') {\n return;\n }\n\n if (payload) {\n\n try {\n JSON.stringify(payload);\n } catch (err) {\n return;\n }\n\n for (let builder of trackingBuilders) {\n try {\n extend(payload, builder(payload), false);\n } catch (err) {\n console.error('Error in custom tracking builder:', err.stack || err.toString());\n }\n }\n\n print('debug', 'tracking', payload);\n\n tracking.push(payload);\n }\n}\n","\nimport { config } from './config';\nimport { info } from './logger';\nimport { addPayloadBuilder } from './builders'\nimport { onWindowReady, safeInterval } from './util';\n\nlet enablePerformance = window &&\n window.performance &&\n performance.now &&\n performance.timing &&\n performance.timing.connectEnd &&\n performance.timing.navigationStart &&\n (Math.abs(performance.now() - Date.now()) > 1000) &&\n (performance.now() - (performance.timing.connectEnd - performance.timing.navigationStart)) > 0;\n\n\nexport function now() {\n if (enablePerformance) {\n return performance.now();\n } else {\n return Date.now();\n }\n}\n\nfunction timer(startTime) {\n startTime = startTime !== undefined ? startTime : now();\n\n return {\n startTime,\n\n elapsed() {\n return parseInt(now() - startTime, 10);\n },\n\n reset() {\n startTime = now();\n }\n };\n}\n\nexport function reqStartElapsed() {\n if (enablePerformance) {\n let timing = window.performance.timing;\n return parseInt(timing.connectEnd - timing.navigationStart, 10);\n }\n}\n\nexport let clientTimer = timer();\nexport let reqTimer = timer(reqStartElapsed());\n\nexport function initHeartBeat() {\n\n let heartBeatTimer = timer();\n let heartbeatCount = 0;\n\n safeInterval(() => {\n\n if (config.heartbeatMaxThreshold && (heartbeatCount > config.heartbeatMaxThreshold)) {\n return;\n }\n\n heartbeatCount += 1;\n\n let elapsed = heartBeatTimer.elapsed();\n let lag = elapsed - config.heartbeatInterval;\n\n let heartbeatPayload = {\n count: heartbeatCount,\n elapsed\n };\n\n if (config.heartbeatTooBusy) {\n heartbeatPayload.lag = lag;\n\n if (lag >= config.heartbeatTooBusyThreshold) {\n info('toobusy', heartbeatPayload, {\n noConsole: !config.heartbeatConsoleLog\n });\n }\n }\n\n info('heartbeat', heartbeatPayload, {\n noConsole: !config.heartbeatConsoleLog\n });\n\n }, config.heartbeatInterval);\n}\n\nexport function initPerformance() {\n\n if (!enablePerformance) {\n return info('no_performance_data');\n }\n\n addPayloadBuilder(() => {\n\n let payload = {};\n\n payload.client_elapsed = clientTimer.elapsed();\n\n if (enablePerformance) {\n payload.req_elapsed = reqTimer.elapsed();\n }\n\n return payload;\n });\n\n onWindowReady().then(() => {\n\n let keys = [\n 'connectEnd', 'connectStart', 'domComplete', 'domContentLoadedEventEnd',\n 'domContentLoadedEventStart', 'domInteractive', 'domLoading', 'domainLookupEnd',\n 'domainLookupStart', 'fetchStart', 'loadEventEnd', 'loadEventStart', 'navigationStart',\n 'redirectEnd', 'redirectStart', 'requestStart', 'responseEnd', 'responseStart',\n 'secureConnectionStart', 'unloadEventEnd', 'unloadEventStart'\n ];\n\n let timing = {};\n\n keys.forEach(key => {\n timing[key] = parseInt(window.performance.timing[key], 10) || 0;\n });\n\n let offset = timing.connectEnd - timing.navigationStart;\n\n if (timing.connectEnd) {\n Object.keys(timing).forEach(name => {\n let time = timing[name];\n if (time) {\n info(`timing_${name}`, {\n client_elapsed: parseInt(time - timing.connectEnd - (clientTimer.startTime - offset), 10),\n req_elapsed: parseInt(time - timing.connectEnd, 10)\n });\n }\n });\n }\n\n info('timing', timing);\n info('memory', window.performance.memory);\n info('navigation', window.performance.navigation);\n\n if (window.performance.getEntries) {\n window.performance.getEntries().forEach(resource => {\n if (['link', 'script', 'img', 'css'].indexOf(resource.initiatorType) > -1) {\n info(resource.initiatorType, resource);\n }\n });\n }\n });\n}\n","\nimport { config } from './config';\nimport { extend } from './util';\nimport { initPerformance, initHeartBeat } from './performance';\nimport { log, info, flush, immediateFlush } from './logger';\n\nlet initiated = false;\n\nexport function init(conf) {\n extend(config, conf || {});\n\n if (initiated) {\n return;\n }\n\n initiated = true;\n\n if (config.logPerformance) {\n initPerformance();\n }\n\n if (config.heartbeat) {\n initHeartBeat();\n }\n\n if (config.logUnload) {\n window.addEventListener('beforeunload', () => {\n info('window_beforeunload');\n immediateFlush({ fireAndForget: true });\n });\n\n window.addEventListener('unload', () => {\n info('window_unload');\n immediateFlush({ fireAndForget: true });\n });\n }\n\n if (config.flushInterval) {\n setInterval(flush, config.flushInterval);\n }\n\n if (window.beaverLogQueue) {\n window.beaverLogQueue.forEach(payload => {\n log(payload.level, payload.event, payload);\n });\n delete window.beaverLogQueue;\n }\n}\n","\nimport { reqStartElapsed, now } from './performance';\nimport { info, immediateFlush, track } from './logger';\nimport { addMetaBuilder, addPayloadBuilder } from './builders';\nimport { uniqueID } from './util';\nimport { config } from './config';\n\nlet windowID = uniqueID();\nlet pageID = uniqueID();\n\nlet currentState = config.initial_state_name;\nlet startTime;\n\nexport function startTransition() {\n startTime = now();\n}\n\nexport function endTransition(toState) {\n startTime = startTime || reqStartElapsed();\n\n let currentTime = now();\n let elapsedTime;\n\n if (startTime !== undefined) {\n elapsedTime = parseInt(currentTime - startTime, 0);\n }\n\n let transitionName = `transition_${currentState}_to_${toState}`;\n\n info(transitionName, {\n duration: elapsedTime\n });\n\n track({\n transition: transitionName,\n transition_time: elapsedTime\n });\n\n immediateFlush();\n\n startTime = currentTime;\n currentState = toState;\n pageID = uniqueID();\n}\n\nexport function transition(toState) {\n startTransition();\n endTransition(toState);\n}\n\naddPayloadBuilder(() => {\n return {\n windowID,\n pageID\n }\n});\n\naddMetaBuilder(() => {\n return {\n state: `ui_${currentState}`\n };\n});\n","\nexport * from './logger';\nexport * from './init';\nexport * from './transitions';\nexport * from './builders';\nexport * from './config';","\nimport * as INTERFACE from './interface';\nexport * from './interface';\nexport default INTERFACE;","/* @flow */\n\nexport function isRegex(item : mixed) : boolean {\n return Object.prototype.toString.call(item) === '[object RegExp]';\n}\n\n// eslint-disable-next-line no-unused-vars\nexport function noop(...args : Array) {\n // pass\n}\n","/* @flow */\n\nexport const PROTOCOL = {\n MOCK: ('mock:' : 'mock:'),\n FILE: ('file:' : 'file:'),\n ABOUT: ('about:' : 'about:')\n};\n\nexport const WILDCARD = '*';\n\nexport const WINDOW_TYPE = {\n IFRAME: ('iframe' : 'iframe'),\n POPUP: ('popup' : 'popup')\n};\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { isRegex, noop } from './util';\nimport type { CrossDomainWindowType, SameDomainWindowType, DomainMatcher } from './types';\nimport { PROTOCOL, WILDCARD } from './constants';\n\nlet IE_WIN_ACCESS_ERROR = 'Call was rejected by callee.\\r\\n';\n\nexport function isFileProtocol(win : SameDomainWindowType = window) : boolean {\n return win.location.protocol === PROTOCOL.FILE;\n}\n\nexport function isAboutProtocol(win : SameDomainWindowType = window) : boolean {\n return win.location.protocol === PROTOCOL.ABOUT;\n}\n\nexport function getParent(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n\n if (!win) {\n return;\n }\n\n try {\n if (win.parent && win.parent !== win) {\n return win.parent;\n }\n } catch (err) {\n // pass\n }\n}\n\nexport function getOpener(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n\n if (!win) {\n return;\n }\n\n // Make sure we're not actually an iframe which has had window.open() called on us\n if (getParent(win)) {\n return;\n }\n\n try {\n return win.opener;\n } catch (err) {\n // pass\n }\n}\n\nexport function canReadFromWindow(win : CrossDomainWindowType | SameDomainWindowType) : boolean {\n try {\n // $FlowFixMe\n noop(win && win.location && win.location.href);\n return true;\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\nexport function getActualDomain(win? : SameDomainWindowType = window) : string {\n\n let location = win.location;\n\n if (!location) {\n throw new Error(`Can not read window location`);\n }\n\n let protocol = location.protocol;\n\n if (!protocol) {\n throw new Error(`Can not read window protocol`);\n }\n\n if (protocol === PROTOCOL.FILE) {\n return `${ PROTOCOL.FILE }//`;\n }\n\n if (protocol === PROTOCOL.ABOUT) {\n\n let parent = getParent(win);\n if (parent && canReadFromWindow(parent)) {\n // $FlowFixMe\n return getActualDomain(parent);\n }\n\n return `${ PROTOCOL.ABOUT }//`;\n }\n\n let host = location.host;\n\n if (!host) {\n throw new Error(`Can not read window host`);\n }\n\n return `${ protocol }//${ host }`;\n}\n\nexport function getDomain(win? : SameDomainWindowType = window) : string {\n\n let domain = getActualDomain(win);\n\n if (domain && win.mockDomain && win.mockDomain.indexOf(PROTOCOL.MOCK) === 0) {\n return win.mockDomain;\n }\n\n return domain;\n}\n\nexport function isBlankDomain(win : CrossDomainWindowType) : boolean {\n try {\n // $FlowFixMe\n if (!win.location.href) {\n return true;\n }\n\n if (win.location.href === 'about:blank') {\n return true;\n }\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\nexport function isActuallySameDomain(win : CrossDomainWindowType) : boolean {\n\n try {\n if (win === window) {\n return true;\n }\n\n } catch (err) {\n // pass\n }\n\n try {\n let desc = Object.getOwnPropertyDescriptor(win, 'location');\n\n if (desc && desc.enumerable === false) {\n return false;\n }\n\n } catch (err) {\n // pass\n }\n\n try {\n // $FlowFixMe\n if (isAboutProtocol(win) && canReadFromWindow(win)) {\n return true;\n }\n } catch (err) {\n // pass\n }\n\n try {\n // $FlowFixMe\n if (getActualDomain(win) === getActualDomain(window)) {\n return true;\n }\n\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\nexport function isSameDomain(win : CrossDomainWindowType | SameDomainWindowType) : boolean {\n\n if (!isActuallySameDomain(win)) {\n return false;\n }\n\n try {\n\n if (win === window) {\n return true;\n }\n\n // $FlowFixMe\n if (isAboutProtocol(win) && canReadFromWindow(win)) {\n return true;\n }\n\n // $FlowFixMe\n if (getDomain(window) === getDomain(win)) {\n return true;\n }\n\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\n\nexport function assertSameDomain(win : CrossDomainWindowType | SameDomainWindowType) : SameDomainWindowType {\n if (!isSameDomain(win)) {\n throw new Error(`Expected window to be same domain`);\n }\n\n // $FlowFixMe\n return win;\n}\n\nexport function getParents(win : CrossDomainWindowType) : Array {\n\n let result = [];\n\n try {\n\n while (win.parent !== win) {\n result.push(win.parent);\n win = win.parent;\n }\n\n } catch (err) {\n // pass\n }\n\n return result;\n}\n\nexport function isAncestorParent(parent : CrossDomainWindowType, child : CrossDomainWindowType) : boolean {\n\n if (!parent || !child) {\n return false;\n }\n\n let childParent = getParent(child);\n\n if (childParent) {\n return childParent === parent;\n }\n\n if (getParents(child).indexOf(parent) !== -1) {\n return true;\n }\n\n return false;\n}\n\nexport function getFrames(win : CrossDomainWindowType) : Array {\n\n let result = [];\n\n let frames;\n\n try {\n frames = win.frames;\n } catch (err) {\n frames = win;\n }\n\n let len;\n\n try {\n len = frames.length;\n } catch (err) {\n // pass\n }\n\n if (len === 0) {\n return result;\n }\n\n if (len) {\n for (let i = 0; i < len; i++) {\n\n let frame;\n\n try {\n frame = frames[i];\n } catch (err) {\n continue;\n }\n\n result.push(frame);\n }\n\n return result;\n }\n\n for (let i = 0; i < 100; i++) {\n let frame;\n\n try {\n frame = frames[i];\n } catch (err) {\n return result;\n }\n\n if (!frame) {\n return result;\n }\n\n result.push(frame);\n }\n\n return result;\n}\n\n\nexport function getAllChildFrames(win : CrossDomainWindowType) : Array {\n\n let result = [];\n\n for (let frame of getFrames(win)) {\n result.push(frame);\n\n for (let childFrame of getAllChildFrames(frame)) {\n result.push(childFrame);\n }\n }\n\n return result;\n}\n\nexport function getTop(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n\n try {\n if (win.top) {\n return win.top;\n }\n } catch (err) {\n // pass\n }\n\n if (getParent(win) === win) {\n return win;\n }\n\n try {\n if (isAncestorParent(window, win) && window.top) {\n return window.top;\n }\n } catch (err) {\n // pass\n }\n\n try {\n if (isAncestorParent(win, window) && window.top) {\n return window.top;\n }\n } catch (err) {\n // pass\n }\n\n for (let frame of getAllChildFrames(win)) {\n try {\n if (frame.top) {\n return frame.top;\n }\n } catch (err) {\n // pass\n }\n\n if (getParent(frame) === frame) {\n return frame;\n }\n }\n}\n\nexport function getNextOpener(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n return getOpener(getTop(win) || win);\n}\n\nexport function getUltimateTop(win? : CrossDomainWindowType = window) : CrossDomainWindowType {\n let opener = getNextOpener(win);\n\n if (opener) {\n return getUltimateTop(opener);\n }\n\n return top;\n}\n\nexport function getAllFramesInWindow(win : CrossDomainWindowType) : Array {\n let top = getTop(win);\n\n if (!top) {\n throw new Error(`Can not determine top window`);\n }\n\n return [ ...getAllChildFrames(top), top ];\n}\n\nexport function getAllWindows(win? : CrossDomainWindowType = window) : $ReadOnlyArray {\n let frames = getAllFramesInWindow(win);\n let opener = getNextOpener(win);\n\n if (opener) {\n return [ ...getAllWindows(opener), ...frames ];\n } else {\n return frames;\n }\n}\n\nexport function isTop(win : CrossDomainWindowType) : boolean {\n return win === getTop(win);\n}\n\nexport function isFrameWindowClosed(frame : HTMLIFrameElement) : boolean {\n\n if (!frame.contentWindow) {\n return true;\n }\n\n if (!frame.parentNode) {\n return true;\n }\n\n let doc = frame.ownerDocument;\n\n if (doc && doc.documentElement && !doc.documentElement.contains(frame)) {\n return true;\n }\n\n return false;\n}\n\nfunction safeIndexOf(collection : Array, item : T) : number {\n for (let i = 0; i < collection.length; i++) {\n\n try {\n if (collection[i] === item) {\n return i;\n }\n } catch (err) {\n // pass\n }\n }\n\n return -1;\n}\n\nlet iframeWindows = [];\nlet iframeFrames = [];\n\nexport function isWindowClosed(win : CrossDomainWindowType, allowMock : boolean = true) : boolean {\n\n try {\n if (win === window) {\n return false;\n }\n } catch (err) {\n return true;\n }\n\n try {\n if (!win) {\n return true;\n }\n\n } catch (err) {\n return true;\n }\n\n try {\n if (win.closed) {\n return true;\n }\n\n } catch (err) {\n\n // I love you so much IE\n\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return false;\n }\n\n return true;\n }\n\n\n if (allowMock && isSameDomain(win)) {\n try {\n // $FlowFixMe\n if (win.mockclosed) {\n return true;\n }\n } catch (err) {\n // pass\n }\n }\n\n // Mobile safari\n\n try {\n if (!win.parent || !win.top) {\n return true;\n }\n } catch (err) {\n // pass\n }\n\n // Yes, this actually happens in IE. win === win errors out when the window\n // is from an iframe, and the iframe was removed from the page.\n\n try {\n noop(win === win); // eslint-disable-line no-self-compare\n } catch (err) {\n return true;\n }\n\n // IE orphaned frame\n\n let iframeIndex = safeIndexOf(iframeWindows, win);\n\n if (iframeIndex !== -1) {\n let frame = iframeFrames[iframeIndex];\n\n if (frame && isFrameWindowClosed(frame)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction cleanIframes() {\n for (let i = 0; i < iframeWindows.length; i++) {\n let closed = false;\n\n try {\n closed = iframeWindows[i].closed;\n } catch (err) {\n // pass\n }\n\n if (closed) {\n iframeFrames.splice(i, 1);\n iframeWindows.splice(i, 1);\n }\n }\n}\n\nexport function linkFrameWindow(frame : HTMLIFrameElement) {\n\n cleanIframes();\n\n if (frame && frame.contentWindow) {\n try {\n iframeWindows.push(frame.contentWindow);\n iframeFrames.push(frame);\n } catch (err) {\n // pass\n }\n }\n}\n\nexport function getUserAgent(win : ?SameDomainWindowType) : string {\n win = win || window;\n return win.navigator.mockUserAgent || win.navigator.userAgent;\n}\n\n\nexport function getFrameByName(win : CrossDomainWindowType, name : string) : ?CrossDomainWindowType {\n\n let winFrames = getFrames(win);\n\n for (let childFrame of winFrames) {\n try {\n // $FlowFixMe\n if (isSameDomain(childFrame) && childFrame.name === name && winFrames.indexOf(childFrame) !== -1) {\n return childFrame;\n }\n } catch (err) {\n // pass\n }\n }\n\n try {\n // $FlowFixMe\n if (winFrames.indexOf(win.frames[name]) !== -1) {\n // $FlowFixMe\n return win.frames[name];\n }\n } catch (err) {\n // pass\n }\n\n try {\n if (winFrames.indexOf(win[name]) !== -1) {\n return win[name];\n }\n } catch (err) {\n // pass\n }\n}\n\nexport function findChildFrameByName(win : CrossDomainWindowType, name : string) : ?CrossDomainWindowType {\n\n let frame = getFrameByName(win, name);\n\n if (frame) {\n return frame;\n }\n\n for (let childFrame of getFrames(win)) {\n let namedFrame = findChildFrameByName(childFrame, name);\n\n if (namedFrame) {\n return namedFrame;\n }\n }\n}\n\nexport function findFrameByName(win : CrossDomainWindowType, name : string) : ?CrossDomainWindowType {\n\n let frame;\n\n frame = getFrameByName(win, name);\n\n if (frame) {\n return frame;\n }\n\n let top = getTop(win) || win;\n\n return findChildFrameByName(top, name);\n}\n\nexport function isParent(win : CrossDomainWindowType, frame : CrossDomainWindowType) : boolean {\n\n let frameParent = getParent(frame);\n\n if (frameParent) {\n return frameParent === win;\n }\n\n for (let childFrame of getFrames(win)) {\n if (childFrame === frame) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function isOpener(parent : CrossDomainWindowType, child : CrossDomainWindowType) : boolean {\n\n return parent === getOpener(child);\n}\n\nexport function getAncestor(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n win = win || window;\n\n let opener = getOpener(win);\n\n if (opener) {\n return opener;\n }\n\n let parent = getParent(win);\n\n if (parent) {\n return parent;\n }\n}\n\nexport function getAncestors(win : CrossDomainWindowType) : Array {\n\n let results = [];\n\n let ancestor = win;\n\n while (ancestor) {\n ancestor = getAncestor(ancestor);\n if (ancestor) {\n results.push(ancestor);\n }\n }\n\n return results;\n}\n\n\nexport function isAncestor(parent : CrossDomainWindowType, child : CrossDomainWindowType) : boolean {\n\n let actualParent = getAncestor(child);\n\n if (actualParent) {\n if (actualParent === parent) {\n return true;\n }\n\n return false;\n }\n\n if (child === parent) {\n return false;\n }\n\n if (getTop(child) === child) {\n return false;\n }\n\n for (let frame of getFrames(parent)) {\n if (frame === child) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function isPopup(win? : CrossDomainWindowType = window) : boolean {\n return Boolean(getOpener(win));\n}\n\nexport function isIframe(win? : CrossDomainWindowType = window) : boolean {\n return Boolean(getParent(win));\n}\n\nexport function isFullpage(win? : CrossDomainWindowType = window) : boolean {\n return Boolean(!isIframe(win) && !isPopup(win));\n}\n\nfunction anyMatch(collection1, collection2) : boolean {\n\n for (let item1 of collection1) {\n for (let item2 of collection2) {\n if (item1 === item2) {\n return true;\n }\n }\n }\n\n return false;\n}\n\nexport function getDistanceFromTop(win : CrossDomainWindowType = window) : number {\n let distance = 0;\n let parent = win;\n\n while (parent) {\n parent = getParent(parent);\n if (parent) {\n distance += 1;\n }\n }\n\n return distance;\n}\n\nexport function getNthParent(win : CrossDomainWindowType, n : number = 1) : ?CrossDomainWindowType {\n let parent = win;\n\n for (let i = 0; i < n; i++) {\n if (!parent) {\n return;\n }\n\n parent = getParent(parent);\n }\n\n return parent;\n}\n\nexport function getNthParentFromTop(win : CrossDomainWindowType, n : number = 1) : ?CrossDomainWindowType {\n return getNthParent(win, getDistanceFromTop(win) - n);\n}\n\nexport function isSameTopWindow(win1 : CrossDomainWindowType, win2 : CrossDomainWindowType) : boolean {\n\n let top1 = getTop(win1) || win1;\n let top2 = getTop(win2) || win2;\n\n try {\n if (top1 && top2) {\n if (top1 === top2) {\n return true;\n }\n\n return false;\n }\n } catch (err) {\n // pass\n }\n\n let allFrames1 = getAllFramesInWindow(win1);\n let allFrames2 = getAllFramesInWindow(win2);\n\n if (anyMatch(allFrames1, allFrames2)) {\n return true;\n }\n\n let opener1 = getOpener(top1);\n let opener2 = getOpener(top2);\n\n if (opener1 && anyMatch(getAllFramesInWindow(opener1), allFrames2)) {\n return false;\n }\n\n if (opener2 && anyMatch(getAllFramesInWindow(opener2), allFrames1)) {\n return false;\n }\n\n return false;\n}\n\nexport function matchDomain(pattern : DomainMatcher, origin : DomainMatcher) : boolean {\n\n if (typeof pattern === 'string') {\n\n if (typeof origin === 'string') {\n return pattern === WILDCARD || origin === pattern;\n }\n\n if (isRegex(origin)) {\n return false;\n }\n\n if (Array.isArray(origin)) {\n return false;\n }\n }\n\n if (isRegex(pattern)) {\n\n if (isRegex(origin)) {\n return pattern.toString() === origin.toString();\n }\n\n if (Array.isArray(origin)) {\n return false;\n }\n\n // $FlowFixMe\n return Boolean(origin.match(pattern));\n }\n\n if (Array.isArray(pattern)) {\n\n if (Array.isArray(origin)) {\n return JSON.stringify(pattern) === JSON.stringify(origin);\n }\n\n if (isRegex(origin)) {\n return false;\n }\n\n return pattern.some(subpattern => matchDomain(subpattern, origin));\n }\n\n return false;\n}\n\nexport function stringifyDomainPattern(pattern : DomainMatcher) : string {\n if (Array.isArray(pattern)) {\n return `(${ pattern.join(' | ') })`;\n } else if (isRegex(pattern)) {\n return `RegExp(${ pattern.toString() }`;\n } else {\n return pattern.toString();\n }\n}\n\nexport function getDomainFromUrl(url : string) : string {\n\n let domain;\n\n if (url.match(/^(https?|mock|file):\\/\\//)) {\n domain = url;\n } else {\n return getDomain();\n }\n\n domain = domain.split('/').slice(0, 3).join('/');\n\n return domain;\n}\n\nexport function onCloseWindow(win : CrossDomainWindowType, callback : Function, delay : number = 1000, maxtime : number = Infinity) : { cancel : () => void } {\n\n let timeout;\n\n let check = () => {\n\n if (isWindowClosed(win)) {\n\n if (timeout) {\n clearTimeout(timeout);\n }\n\n return callback();\n }\n\n if (maxtime <= 0) {\n clearTimeout(timeout);\n } else {\n maxtime -= delay;\n timeout = setTimeout(check, delay);\n }\n };\n\n check();\n\n return {\n cancel() {\n if (timeout) {\n clearTimeout(timeout);\n }\n }\n };\n}\n\n// eslint-disable-next-line complexity\nexport function isWindow(obj : Object) : boolean {\n\n try {\n if (obj === window) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (Object.prototype.toString.call(obj) === '[object Window]') {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (window.Window && obj instanceof window.Window) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (obj && obj.self === obj) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (obj && obj.parent === obj) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (obj && obj.top === obj) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (noop(obj === obj) === '__unlikely_value__') { // eslint-disable-line no-self-compare\n return false;\n }\n\n } catch (err) {\n return true;\n }\n\n try {\n if (obj && obj.__cross_domain_utils_window_check__ === '__unlikely_value__') {\n return false;\n }\n\n } catch (err) {\n return true;\n }\n\n return false;\n}\n\nexport function isBrowser() : boolean {\n return (typeof window !== 'undefined' && typeof window.location !== 'undefined');\n}\n\nexport function isCurrentDomain(domain : string) : boolean {\n if (!isBrowser()) {\n return false;\n }\n\n return (getDomain() === domain);\n}\n\nexport function isMockDomain(domain : string) : boolean {\n return domain.indexOf(PROTOCOL.MOCK) === 0;\n}\n\nexport function normalizeMockUrl(url : string) : string {\n if (!isMockDomain(getDomainFromUrl(url))) {\n return url;\n }\n\n if (!__TEST__) {\n throw new Error(`Mock urls not supported out of test mode`);\n }\n\n return url.replace(/^mock:\\/\\/[^/]+/, getActualDomain(window));\n}\n\nexport function closeWindow(win : CrossDomainWindowType) {\n try {\n win.close();\n } catch (err) {\n // pass\n }\n}\n\nexport function getFrameForWindow(win : CrossDomainWindowType) : ?HTMLElement {\n if (isSameDomain(win)) {\n return assertSameDomain(win).frameElement;\n }\n\n for (const frame of document.querySelectorAll('iframe')) {\n if (frame && frame.contentWindow && frame.contentWindow === win) {\n return frame;\n }\n }\n}\n","/* @flow */\n\n// export something to force webpack to see this as an ES module\nexport const TYPES = true;\n\nexport type CrossDomainLocationType = {|\n\n|};\n\nexport type CrossDomainWindowType = {|\n location : string | CrossDomainLocationType,\n self : CrossDomainWindowType,\n closed : boolean,\n open : (string, string, string) => CrossDomainWindowType,\n close : () => void,\n focus : () => void,\n top : CrossDomainWindowType,\n frames : Array,\n opener ? : CrossDomainWindowType,\n parent : CrossDomainWindowType,\n length : number,\n postMessage : (string, string) => void\n|};\n\nexport type SameDomainWindowType = Object & {\n location : string | Object,\n self : CrossDomainWindowType,\n closed : boolean,\n open : (string, string, string) => CrossDomainWindowType,\n close : () => void,\n focus : () => void,\n XMLHttpRequest : typeof XMLHttpRequest,\n document : Document,\n navigator : {\n userAgent : string,\n mockUserAgent? : string\n }\n};\n\nexport type DomainMatcher = string | Array | $ReadOnlyArray | RegExp;\n","/* @flow */\n\nexport * from './utils';\nexport * from './types';\nexport * from './constants';\n","/* @flow */\n\nexport const ZOID = `zoid`;\n\nexport const __ZOID__ = `__${ ZOID }__`;\n\nexport const POST_MESSAGE = {\n INIT: `${ ZOID }_init`,\n PROPS: `${ ZOID }_props`,\n PROP_CALLBACK: `${ ZOID }_prop_callback`,\n CLOSE: `${ ZOID }_close`,\n CHECK_CLOSE: `${ ZOID }_check_close`,\n REDIRECT: `${ ZOID }_redirect`,\n RESIZE: `${ ZOID }_resize`,\n DELEGATE: `${ ZOID }_delegate`,\n ALLOW_DELEGATE: `${ ZOID }_allow_delegate`,\n ERROR: `${ ZOID }_error`,\n HIDE: `${ ZOID }_hide`,\n SHOW: `${ ZOID }_show`\n};\n\nexport const PROP_TYPES = {\n STRING: `string`,\n OBJECT: `object`,\n FUNCTION: `function`,\n BOOLEAN: `boolean`,\n NUMBER: `number`\n};\n\nexport const INITIAL_PROPS = {\n RAW: 'raw',\n UID: 'uid'\n};\n\nexport const WINDOW_REFERENCES = {\n OPENER: `opener`,\n TOP: `top`,\n PARENT: `parent`,\n GLOBAL: `global`\n};\n\nexport const PROP_TYPES_LIST : Array = Object.keys(PROP_TYPES).map(key => PROP_TYPES[key]);\n\nexport const CONTEXT_TYPES = {\n IFRAME: `iframe`,\n POPUP: `popup`\n};\n\nexport const CLASS_NAMES = {\n ZOID: `${ ZOID }`,\n OUTLET: `${ ZOID }-outlet`,\n COMPONENT_FRAME: `${ ZOID }-component-frame`,\n PRERENDER_FRAME: `${ ZOID }-prerender-frame`,\n VISIBLE: `${ ZOID }-visible`,\n INVISIBLE: `${ ZOID }-invisible`\n};\n\nexport const EVENTS = {\n CLOSE: `${ ZOID }-close`\n};\n\nexport const ATTRIBUTES = {\n IFRAME_PLACEHOLDER: `data-zoid-${ ZOID }-placeholder`\n};\n\nexport const ANIMATION_NAMES = {\n SHOW_CONTAINER: `${ ZOID }-show-container`,\n SHOW_COMPONENT: `${ ZOID }-show-component`,\n HIDE_CONTAINER: `${ ZOID }-hide-container`,\n HIDE_COMPONENT: `${ ZOID }-hide-component`\n};\n\nexport const EVENT_NAMES = {\n CLICK: 'click'\n};\n\nexport const CLOSE_REASONS = {\n PARENT_CALL: 'parent_call',\n CHILD_CALL: 'child_call',\n CLOSE_DETECTED: 'close_detected',\n USER_CLOSED: 'user_closed',\n PARENT_CLOSE_DETECTED: 'parent_close_detected'\n};\n\nexport const CONTEXT_TYPES_LIST : Array = Object.keys(CONTEXT_TYPES).map(key => CONTEXT_TYPES[key]);\n\nexport const DELEGATE = {\n CALL_ORIGINAL: 'call_original',\n CALL_DELEGATE: 'call_delegate'\n};\n\nexport const WILDCARD = '*';\n\nexport const DEFAULT_DIMENSIONS = {\n WIDTH: 300,\n HEIGHT: 150\n};\n","/* @flow */\n\nimport { CONSTANTS } from './conf';\n\nexport let global : Object = window[CONSTANTS.WINDOW_PROPS.POSTROBOT] = window[CONSTANTS.WINDOW_PROPS.POSTROBOT] || {};\n\n// Backwards compatibility\n\nglobal.registerSelf = () => {\n // pass\n};\n","/* @flow */\n\nexport let CONSTANTS = {\n\n POST_MESSAGE_TYPE: {\n REQUEST: 'postrobot_message_request',\n RESPONSE: 'postrobot_message_response',\n ACK: 'postrobot_message_ack'\n },\n\n POST_MESSAGE_ACK: {\n SUCCESS: 'success',\n ERROR: 'error'\n },\n\n POST_MESSAGE_NAMES: {\n METHOD: 'postrobot_method',\n HELLO: 'postrobot_ready',\n OPEN_TUNNEL: 'postrobot_open_tunnel'\n },\n\n WINDOW_TYPES: {\n FULLPAGE: 'fullpage',\n POPUP: 'popup',\n IFRAME: 'iframe'\n },\n\n WINDOW_PROPS: {\n POSTROBOT: '__postRobot__'\n },\n\n SERIALIZATION_TYPES: {\n METHOD: 'postrobot_method',\n ERROR: 'postrobot_error',\n PROMISE: 'postrobot_promise',\n ZALGO_PROMISE: 'postrobot_zalgo_promise',\n REGEX: 'regex'\n },\n\n SEND_STRATEGIES: {\n POST_MESSAGE: 'postrobot_post_message',\n BRIDGE: 'postrobot_bridge',\n GLOBAL: 'postrobot_global'\n },\n\n MOCK_PROTOCOL: 'mock:',\n FILE_PROTOCOL: 'file:',\n\n BRIDGE_NAME_PREFIX: '__postrobot_bridge__',\n POSTROBOT_PROXY: '__postrobot_proxy__',\n\n WILDCARD: '*'\n};\n\nexport const POST_MESSAGE_NAMES = {\n METHOD: 'postrobot_method',\n HELLO: 'postrobot_hello',\n OPEN_TUNNEL: 'postrobot_open_tunnel'\n};\n\nexport let POST_MESSAGE_NAMES_LIST : Array = Object.keys(POST_MESSAGE_NAMES)\n .map(key => POST_MESSAGE_NAMES[key]);\n","/* @flow */\n\nimport { CONSTANTS } from './constants';\n\nexport let CONFIG : Object = {\n\n ALLOW_POSTMESSAGE_POPUP: ('__ALLOW_POSTMESSAGE_POPUP__' in window)\n ? window.__ALLOW_POSTMESSAGE_POPUP__\n : __POST_ROBOT__.__ALLOW_POSTMESSAGE_POPUP__,\n\n BRIDGE_TIMEOUT: 5000,\n CHILD_WINDOW_TIMEOUT: 5000,\n\n ACK_TIMEOUT: (window.navigator.userAgent.match(/MSIE/i) !== -1 && !__TEST__) ? 10000 : 2000,\n RES_TIMEOUT: __TEST__ ? 2000 : -1,\n \n ALLOWED_POST_MESSAGE_METHODS: {\n [ CONSTANTS.SEND_STRATEGIES.POST_MESSAGE ]: true,\n [ CONSTANTS.SEND_STRATEGIES.BRIDGE ]: true,\n [ CONSTANTS.SEND_STRATEGIES.GLOBAL ]: true\n },\n\n ALLOW_SAME_ORIGIN: false\n};\n\nif (window.location.href.indexOf(CONSTANTS.FILE_PROTOCOL) === 0) {\n CONFIG.ALLOW_POSTMESSAGE_POPUP = true;\n}\n","/* @flow */\n\nexport * from './config';\nexport * from './constants';\n","/* @flow */\n/* eslint max-lines: off */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nexport { noop, once, uniqueID, isLocalStorageEnabled } from 'belter/src';\n\nconst moduleGlobal = {};\n\nexport function getGlobal() : Object {\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n return moduleGlobal;\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport function memoize(method : (...args : $ReadOnlyArray) => R, options : { time? : number } = {}) : ((...args : $ReadOnlyArray) => R) {\n\n const cache : { [key : string] : { time : number, value : R } } = {};\n\n // eslint-disable-next-line no-unused-vars, flowtype/no-weak-types\n return function memoizedFunction(...args : $ReadOnlyArray) : R {\n\n let key : string;\n\n try {\n key = JSON.stringify(Array.prototype.slice.call(arguments));\n } catch (err) {\n throw new Error(`Arguments not serializable -- can not be used to memoize`);\n }\n\n const time = options.time;\n\n if (cache[key] && time && (Date.now() - cache[key].time) < time) {\n delete cache[key];\n }\n\n const glob = getGlobal();\n\n if (glob.__CACHE_START_TIME__ && cache[key] && cache[key].time < glob.__CACHE_START_TIME__) {\n delete cache[key];\n }\n\n if (cache[key]) {\n return cache[key].value;\n }\n\n cache[key] = {\n time: Date.now(),\n value: method.apply(this, arguments)\n };\n\n return cache[key].value;\n };\n}\n\nexport function hashStr(str : string) : number {\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n hash += str[i].charCodeAt(0) * Math.pow((i % 10) + 1, 5);\n }\n return Math.floor(Math.pow(Math.sqrt(hash), 5));\n}\n\nexport function strHashStr(str : string) : string {\n let hash = '';\n\n for (let i = 0; i < str.length; i++) {\n let total = (str[i].charCodeAt(0) * i);\n\n if (str[i + 1]) {\n total += (str[i + 1].charCodeAt(0) * (i - 1));\n }\n\n hash += String.fromCharCode(97 + (Math.abs(total) % 26));\n }\n\n return hash;\n}\n\nexport function match(str : string, pattern : RegExp) : ?string {\n const regmatch = str.match(pattern);\n if (regmatch) {\n return regmatch[1];\n }\n}\n\nexport function safeJSON(item : mixed) : string {\n return JSON.stringify(item, (key, val) => {\n\n if (typeof val === 'function') {\n return `<${ typeof val }>`;\n }\n\n try {\n JSON.stringify(val);\n } catch (err) {\n return `<${ typeof val }>`;\n }\n\n return val;\n });\n}\n\ntype Listener = {|\n listen : (method : Function) => {\n cancel : () => void\n },\n once : (method : Function) => void,\n trigger : (...args : $ReadOnlyArray) => void\n|};\n\nexport function eventEmitter() : Listener {\n\n const listeners = [];\n\n return {\n listen(method : Function) : { cancel : () => void } {\n listeners.push(method);\n\n return {\n cancel() {\n listeners.splice(listeners.indexOf(method), 1);\n }\n };\n },\n\n once(method : Function) {\n const listener = this.listen(function onceListener() {\n method.apply(null, arguments);\n listener.cancel();\n });\n },\n\n trigger(...args : $ReadOnlyArray) {\n for (const listener of listeners) {\n listener(...args);\n }\n }\n };\n}\n\nexport function awaitKey(obj : Object, key : string) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n\n let value = obj[key];\n\n if (value) {\n return resolve(value);\n }\n\n delete obj[key];\n\n Object.defineProperty(obj, key, {\n\n configurable: true,\n\n set(item) {\n value = item;\n\n if (value) {\n resolve(value);\n }\n },\n\n get() : mixed {\n return value;\n }\n });\n });\n}\n\nexport function stringifyError(err : mixed, level : number = 1) : string {\n\n if (level >= 3) {\n return 'stringifyError stack overflow';\n }\n\n try {\n if (!err) {\n return ``;\n }\n\n if (typeof err === 'string') {\n return err;\n }\n\n if (err instanceof Error) {\n const stack = err && err.stack;\n const message = err && err.message;\n\n if (stack && message) {\n if (stack.indexOf(message) !== -1) {\n return stack;\n } else {\n return `${ message }\\n${ stack }`;\n }\n } else if (stack) {\n return stack;\n } else if (message) {\n return message;\n }\n }\n\n if (typeof err.toString === 'function') {\n return err.toString();\n }\n\n return Object.prototype.toString.call(err);\n\n } catch (newErr) { // eslint-disable-line unicorn/catch-error-name\n return `Error while stringifying error: ${ stringifyError(newErr, level + 1) }`;\n }\n}\n\nexport function stringifyErrorMessage(err : mixed) : string {\n\n const defaultMessage = ``;\n\n if (!err) {\n return defaultMessage;\n }\n\n if (err instanceof Error) {\n return err.message || defaultMessage;\n }\n\n if (typeof err.message === 'string') {\n return err.message || defaultMessage;\n }\n\n return defaultMessage;\n}\n\nexport function stringify(item : mixed) : string {\n if (typeof item === 'string') {\n return item;\n }\n\n if (item && typeof item.toString === 'function') {\n return item.toString();\n }\n\n return Object.prototype.toString.call(item);\n}\n\nexport function domainMatches(hostname : string, domain : string) : boolean {\n hostname = hostname.split('://')[1];\n const index = hostname.indexOf(domain);\n return (index !== -1 && hostname.slice(index) === domain);\n}\n\nexport function patchMethod(obj : Object, name : string, handler : Function) {\n const original = obj[name];\n\n obj[name] = function patchedMethod() : mixed {\n return handler({\n context: this,\n args: Array.prototype.slice.call(arguments),\n original,\n callOriginal: () => original.apply(this, arguments)\n });\n };\n}\n\nexport function isObject(obj : mixed) : boolean {\n return (typeof obj === 'object' && obj !== null);\n}\n\nexport function extend(obj : T, source : Object) : T {\n if (!source) {\n return obj;\n }\n\n if (Object.assign) { // eslint-disable-line compat/compat\n return Object.assign(obj, source); // eslint-disable-line compat/compat\n }\n\n for (const key in source) {\n if (source.hasOwnProperty(key)) {\n obj[key] = source[key];\n }\n }\n\n return obj;\n}\n\nexport function deepExtend (obj : T, source : Object) : T {\n if (!source) {\n return obj;\n }\n\n for (const key in source) {\n if (source.hasOwnProperty(key)) {\n if (isObject(obj[key]) && isObject(source[key])) {\n deepExtend(obj[key], source[key]);\n } else {\n obj[key] = source[key];\n }\n }\n }\n\n return obj;\n}\n\nexport function hasValue(obj : { [string] : T }, value : T) : boolean {\n for (const key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] === value) {\n return true;\n }\n }\n return false;\n}\n\nexport function contains(arr : $ReadOnlyArray, value : T) : boolean {\n return arr.indexOf(value) !== -1;\n}\n\n// eslint-disable-next-line flowtype/no-mutable-array\nexport function sortBy(arr : Array, order : $ReadOnlyArray) : Array {\n return arr.sort((a : T, b : T) => {\n return order.indexOf(a) - order.indexOf(b);\n });\n}\n\nexport function reverseMap(obj : { [string] : string }) : { [string] : string } {\n const result = {};\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n result[obj[key]] = key;\n }\n }\n return result;\n}\n\n// eslint-disable-next-line flowtype/no-mutable-array\nexport function arrayRemove(arr : Array, item : T) {\n arr.splice(arr.indexOf(item), 1);\n}\n\nexport function identity(item : T) : T {\n return item;\n}\n\nexport function values(obj : { [string] : T }) : $ReadOnlyArray {\n const result = [];\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n result.push(obj[key]);\n }\n }\n return result;\n}\n\nexport function perc(pixels : number, percentage : number) : number {\n return Math.round((pixels * percentage) / 100);\n}\n\nexport function min(...args : $ReadOnlyArray) : number {\n return Math.min(...args);\n}\n\nexport function max(...args : $ReadOnlyArray) : number {\n return Math.max(...args);\n}\n\nexport function regexMap(str : string, regex : RegExp, handler : () => T) : $ReadOnlyArray {\n const results = [];\n\n // $FlowFixMe\n str.replace(regex, function regexMapMatcher() {\n results.push(handler.apply(null, arguments));\n });\n\n return results;\n}\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","/* @flow */\n\nimport { isSameDomain, isSameTopWindow, isActuallySameDomain, getActualDomain, getDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONSTANTS } from '../../conf';\nimport { needsGlobalMessagingForBrowser } from '../../lib';\n\nexport let SEND_MESSAGE_STRATEGIES = {};\n\n\nSEND_MESSAGE_STRATEGIES[CONSTANTS.SEND_STRATEGIES.POST_MESSAGE] = (win : CrossDomainWindowType, serializedMessage : string, domain : (string | Array)) => {\n\n if (__POST_ROBOT__.__IE_POPUP_SUPPORT__) {\n try {\n require('../../compat').emulateIERestrictions(window, win);\n } catch (err) {\n return;\n }\n }\n\n let domains;\n\n if (Array.isArray(domain)) {\n domains = domain;\n } else if (typeof domain === 'string') {\n domains = [ domain ];\n } else {\n domains = [ CONSTANTS.WILDCARD ];\n }\n\n domains = domains.map(dom => {\n\n if (dom.indexOf(CONSTANTS.MOCK_PROTOCOL) === 0) {\n\n if (window.location.protocol === CONSTANTS.FILE_PROTOCOL) {\n return CONSTANTS.WILDCARD;\n }\n\n if (!isActuallySameDomain(win)) {\n throw new Error(`Attempting to send messsage to mock domain ${ dom }, but window is actually cross-domain`);\n }\n\n // $FlowFixMe\n return getActualDomain(win);\n }\n\n if (dom.indexOf(CONSTANTS.FILE_PROTOCOL) === 0) {\n return CONSTANTS.WILDCARD;\n }\n\n return dom;\n });\n\n domains.forEach(dom => {\n return win.postMessage(serializedMessage, dom);\n });\n};\n\nif (__POST_ROBOT__.__IE_POPUP_SUPPORT__) {\n\n let { sendBridgeMessage, needsBridgeForBrowser, isBridge } = require('../../bridge');\n\n SEND_MESSAGE_STRATEGIES[CONSTANTS.SEND_STRATEGIES.BRIDGE] = (win : CrossDomainWindowType, serializedMessage : string, domain : string) => {\n\n if (!needsBridgeForBrowser() && !isBridge()) {\n return;\n }\n\n if (isSameDomain(win)) {\n throw new Error(`Post message through bridge disabled between same domain windows`);\n }\n\n if (isSameTopWindow(window, win) !== false) {\n throw new Error(`Can only use bridge to communicate between two different windows, not between frames`);\n }\n\n return sendBridgeMessage(win, serializedMessage, domain);\n };\n}\n\nif (__POST_ROBOT__.__IE_POPUP_SUPPORT__ || __POST_ROBOT__.__GLOBAL_MESSAGE_SUPPORT__) {\n \n SEND_MESSAGE_STRATEGIES[CONSTANTS.SEND_STRATEGIES.GLOBAL] = (win : CrossDomainWindowType, serializedMessage : string) => {\n\n if (!needsGlobalMessagingForBrowser()) {\n return;\n }\n\n if (!isSameDomain(win)) {\n throw new Error(`Post message through global disabled between different domain windows`);\n }\n\n if (isSameTopWindow(window, win) !== false) {\n throw new Error(`Can only use global to communicate between two different windows, not between frames`);\n }\n\n // $FlowFixMe\n let foreignGlobal = win[CONSTANTS.WINDOW_PROPS.POSTROBOT];\n\n if (!foreignGlobal) {\n throw new Error(`Can not find postRobot global on foreign window`);\n }\n\n return foreignGlobal.receiveMessage({\n source: window,\n origin: getDomain(),\n data: serializedMessage\n });\n };\n}\n","/* @flow */\n\nimport { getDomain, isWindowClosed, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { CONSTANTS, CONFIG, POST_MESSAGE_NAMES_LIST } from '../../conf';\nimport { uniqueID, serializeMethods, getWindowType, jsonStringify, stringifyError } from '../../lib';\n\nimport { SEND_MESSAGE_STRATEGIES } from './strategies';\n\n\nfunction buildMessage(win : CrossDomainWindowType, message : Object, options = {}) : Object {\n\n let id = uniqueID();\n let type = getWindowType();\n let sourceDomain = getDomain(window);\n\n return {\n ...message,\n ...options,\n sourceDomain,\n id: message.id || id,\n windowType: type\n };\n}\n\n\nexport function sendMessage(win : CrossDomainWindowType, message : Object, domain : string | Array) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n message = buildMessage(win, message, {\n data: serializeMethods(win, domain, message.data),\n domain\n });\n\n let level;\n\n if (__DEBUG__) {\n if (POST_MESSAGE_NAMES_LIST.indexOf(message.name) !== -1 || message.type === CONSTANTS.POST_MESSAGE_TYPE.ACK) {\n level = 'debug';\n } else if (message.ack === 'error') {\n level = 'error';\n } else {\n level = 'info';\n }\n\n // eslint-disable-next-line no-console\n console[level]('postrobot_send', message.type.replace(/^postrobot_message_/, ''), '::', message.name, '::', domain || CONSTANTS.WILDCARD, '\\n\\n', message);\n }\n\n if (win === window && !CONFIG.ALLOW_SAME_ORIGIN) {\n throw new Error('Attemping to send message to self');\n }\n\n if (isWindowClosed(win)) {\n throw new Error('Window is closed');\n }\n\n let messages = [];\n\n let serializedMessage = jsonStringify({\n [ CONSTANTS.WINDOW_PROPS.POSTROBOT ]: message\n }, null, 2);\n\n return ZalgoPromise.map(Object.keys(SEND_MESSAGE_STRATEGIES), strategyName => {\n\n return ZalgoPromise.try(() => {\n\n if (!CONFIG.ALLOWED_POST_MESSAGE_METHODS[strategyName]) {\n throw new Error(`Strategy disallowed: ${ strategyName }`);\n }\n\n return SEND_MESSAGE_STRATEGIES[strategyName](win, serializedMessage, domain);\n\n }).then(() => {\n messages.push(`${ strategyName }: success`);\n return true;\n }, err => {\n messages.push(`${ strategyName }: ${ stringifyError(err) }\\n`);\n return false;\n });\n\n }).then(results => {\n\n let success = results.some(Boolean);\n let status = `${ message.type } ${ message.name } ${ success ? 'success' : 'error' }:\\n - ${ messages.join('\\n - ') }\\n`;\n\n if (!success) {\n throw new Error(status);\n }\n });\n });\n}\n","/* @flow */\n\nimport { type ZalgoPromise } from 'zalgo-promise/src';\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { matchDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { global } from '../global';\nimport { isRegex } from '../lib';\nimport { CONSTANTS } from '../conf';\n\nexport function resetListeners() {\n global.responseListeners = {};\n global.requestListeners = {};\n}\n\nglobal.responseListeners = global.responseListeners || {};\nglobal.requestListeners = global.requestListeners || {};\nglobal.WINDOW_WILDCARD = global.WINDOW_WILDCARD || new (function WindowWildcard() { /* pass */ })();\n\nglobal.erroredResponseListeners = global.erroredResponseListeners || {};\n\nconst __DOMAIN_REGEX__ = '__domain_regex__';\n\nexport type RequestListenerType = {\n handler : ({ source : CrossDomainWindowType, origin : string, data : Object }) => (mixed | ZalgoPromise),\n handleError : (err : mixed) => void,\n window : ?CrossDomainWindowType,\n name : string,\n domain : string | RegExp | Array\n};\n\nexport type ResponseListenerType = {\n name : string,\n window : CrossDomainWindowType,\n domain : (string | Array | RegExp),\n respond : (err : ?mixed, result : ?Object) => void,\n ack? : ?boolean\n};\n\nexport function addResponseListener(hash : string, listener : ResponseListenerType) {\n global.responseListeners[hash] = listener;\n}\n\nexport function getResponseListener(hash : string) : ResponseListenerType {\n return global.responseListeners[hash];\n}\n\nexport function deleteResponseListener(hash : string) {\n delete global.responseListeners[hash];\n}\n\nexport function markResponseListenerErrored(hash : string) {\n global.erroredResponseListeners[hash] = true;\n}\n\nexport function isResponseListenerErrored(hash : string) : boolean {\n return Boolean(global.erroredResponseListeners[hash]);\n}\n\nexport function getRequestListener({ name, win, domain } : { name : string, win : ?CrossDomainWindowType, domain : ?(string | RegExp) }) : ?RequestListenerType {\n\n if (win === CONSTANTS.WILDCARD) {\n win = null;\n }\n\n if (domain === CONSTANTS.WILDCARD) {\n domain = null;\n }\n\n if (!name) {\n throw new Error(`Name required to get request listener`);\n }\n\n let nameListeners = global.requestListeners[name];\n\n if (!nameListeners) {\n return;\n }\n\n for (let winQualifier of [ win, global.WINDOW_WILDCARD ]) {\n\n let winListeners = winQualifier && nameListeners.get(winQualifier);\n\n if (!winListeners) {\n continue;\n }\n\n if (domain && typeof domain === 'string') {\n if (winListeners[domain]) {\n return winListeners[domain];\n }\n\n if (winListeners[__DOMAIN_REGEX__]) {\n for (let { regex, listener } of winListeners[__DOMAIN_REGEX__]) {\n if (matchDomain(regex, domain)) {\n return listener;\n }\n }\n }\n }\n\n if (winListeners[CONSTANTS.WILDCARD]) {\n return winListeners[CONSTANTS.WILDCARD];\n }\n }\n}\n\n// eslint-disable-next-line complexity\nexport function addRequestListener({ name, win, domain } : { name : string, win : ?CrossDomainWindowType, domain : ?(string | RegExp | Array) }, listener : RequestListenerType) : { cancel : () => void } {\n\n if (!name || typeof name !== 'string') {\n throw new Error(`Name required to add request listener`);\n }\n\n if (Array.isArray(win)) {\n let listenersCollection = [];\n\n for (let item of win) {\n listenersCollection.push(addRequestListener({ name, domain, win: item }, listener));\n }\n\n return {\n cancel() {\n for (let cancelListener of listenersCollection) {\n cancelListener.cancel();\n }\n }\n };\n }\n\n if (Array.isArray(domain)) {\n let listenersCollection = [];\n\n for (let item of domain) {\n listenersCollection.push(addRequestListener({ name, win, domain: item }, listener));\n }\n\n return {\n cancel() {\n for (let cancelListener of listenersCollection) {\n cancelListener.cancel();\n }\n }\n };\n }\n\n let existingListener = getRequestListener({ name, win, domain });\n\n if (!win || win === CONSTANTS.WILDCARD) {\n win = global.WINDOW_WILDCARD;\n }\n\n domain = domain || CONSTANTS.WILDCARD;\n\n if (existingListener) {\n if (win && domain) {\n throw new Error(`Request listener already exists for ${ name } on domain ${ domain.toString() } for ${ win === global.WINDOW_WILDCARD ? 'wildcard' : 'specified' } window`);\n } else if (win) {\n throw new Error(`Request listener already exists for ${ name } for ${ win === global.WINDOW_WILDCARD ? 'wildcard' : 'specified' } window`);\n } else if (domain) {\n throw new Error(`Request listener already exists for ${ name } on domain ${ domain.toString() }`);\n } else {\n throw new Error(`Request listener already exists for ${ name }`);\n }\n }\n\n let requestListeners = global.requestListeners;\n\n let nameListeners = requestListeners[name];\n\n if (!nameListeners) {\n nameListeners = new WeakMap();\n requestListeners[name] = nameListeners;\n }\n\n let winListeners = nameListeners.get(win);\n\n if (!winListeners) {\n winListeners = {};\n nameListeners.set(win, winListeners);\n }\n\n let strDomain = domain.toString();\n\n let regexListeners = winListeners[__DOMAIN_REGEX__];\n let regexListener;\n\n if (isRegex(domain)) {\n\n if (!regexListeners) {\n regexListeners = [];\n winListeners[__DOMAIN_REGEX__] = regexListeners;\n }\n\n regexListener = { regex: domain, listener };\n\n regexListeners.push(regexListener);\n\n } else {\n winListeners[strDomain] = listener;\n }\n\n return {\n cancel() {\n if (!winListeners) {\n return;\n }\n\n delete winListeners[strDomain];\n\n if (win && Object.keys(winListeners).length === 0) {\n nameListeners.delete(win);\n }\n\n if (regexListener) {\n regexListeners.splice(regexListeners.indexOf(regexListener, 1));\n }\n }\n\n };\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { isWindowClosed, matchDomain, stringifyDomainPattern, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONSTANTS } from '../../conf';\nimport { stringifyError, noop } from '../../lib';\nimport { sendMessage } from '../send';\nimport { getRequestListener, getResponseListener, deleteResponseListener, isResponseListenerErrored } from '../listeners';\n\nexport let RECEIVE_MESSAGE_TYPES = {\n\n [ CONSTANTS.POST_MESSAGE_TYPE.ACK ](source : CrossDomainWindowType, origin : string, message : Object) {\n\n if (isResponseListenerErrored(message.hash)) {\n return;\n }\n\n let options = getResponseListener(message.hash);\n\n if (!options) {\n throw new Error(`No handler found for post message ack for message: ${ message.name } from ${ origin } in ${ window.location.protocol }//${ window.location.host }${ window.location.pathname }`);\n }\n\n if (!matchDomain(options.domain, origin)) {\n throw new Error(`Ack origin ${ origin } does not match domain ${ options.domain.toString() }`);\n }\n\n options.ack = true;\n },\n\n [ CONSTANTS.POST_MESSAGE_TYPE.REQUEST ](source : CrossDomainWindowType, origin : string, message : Object) : ZalgoPromise {\n\n let options = getRequestListener({ name: message.name, win: source, domain: origin });\n\n function respond(data) : ZalgoPromise {\n\n if (message.fireAndForget || isWindowClosed(source)) {\n return ZalgoPromise.resolve();\n }\n\n return sendMessage(source, {\n target: message.originalSource,\n hash: message.hash,\n name: message.name,\n ...data\n }, origin);\n }\n\n return ZalgoPromise.all([\n\n respond({\n type: CONSTANTS.POST_MESSAGE_TYPE.ACK\n }),\n\n ZalgoPromise.try(() => {\n\n if (!options) {\n throw new Error(`No handler found for post message: ${ message.name } from ${ origin } in ${ window.location.protocol }//${ window.location.host }${ window.location.pathname }`);\n }\n\n if (!matchDomain(options.domain, origin)) {\n throw new Error(`Request origin ${ origin } does not match domain ${ options.domain.toString() }`);\n }\n\n let data = message.data;\n\n return options.handler({ source, origin, data });\n\n }).then(data => {\n\n return respond({\n type: CONSTANTS.POST_MESSAGE_TYPE.RESPONSE,\n ack: CONSTANTS.POST_MESSAGE_ACK.SUCCESS,\n data\n });\n\n }, err => {\n\n let error = stringifyError(err).replace(/^Error: /, '');\n // $FlowFixMe\n let code = err.code;\n\n return respond({\n type: CONSTANTS.POST_MESSAGE_TYPE.RESPONSE,\n ack: CONSTANTS.POST_MESSAGE_ACK.ERROR,\n error,\n code\n });\n })\n\n ]).then(noop).catch(err => {\n\n if (options && options.handleError) {\n return options.handleError(err);\n } else {\n throw err;\n }\n });\n },\n\n [ CONSTANTS.POST_MESSAGE_TYPE.RESPONSE ](source : CrossDomainWindowType, origin : string, message : Object) : void | ZalgoPromise {\n\n if (isResponseListenerErrored(message.hash)) {\n return;\n }\n\n let options = getResponseListener(message.hash);\n\n if (!options) {\n throw new Error(`No handler found for post message response for message: ${ message.name } from ${ origin } in ${ window.location.protocol }//${ window.location.host }${ window.location.pathname }`);\n }\n\n if (!matchDomain(options.domain, origin)) {\n throw new Error(`Response origin ${ origin } does not match domain ${ stringifyDomainPattern(options.domain) }`);\n }\n\n deleteResponseListener(message.hash);\n\n if (message.ack === CONSTANTS.POST_MESSAGE_ACK.ERROR) {\n let err = new Error(message.error);\n if (message.code) {\n // $FlowFixMe\n err.code = message.code;\n }\n return options.respond(err, null);\n } else if (message.ack === CONSTANTS.POST_MESSAGE_ACK.SUCCESS) {\n let data = message.data || message.response;\n\n return options.respond(null, { source, origin, data });\n }\n }\n};\n","/* @flow */\n\nimport { isWindowClosed, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONSTANTS, POST_MESSAGE_NAMES_LIST } from '../../conf';\nimport { deserializeMethods, jsonParse, addEventListener, noop } from '../../lib';\nimport { global } from '../../global';\n\nimport { RECEIVE_MESSAGE_TYPES } from './types';\n\nglobal.receivedMessages = global.receivedMessages || [];\n\ntype MessageEvent = {\n source : CrossDomainWindowType,\n origin : string,\n data : string\n};\n\nfunction parseMessage(message : string) : ?Object {\n\n let parsedMessage;\n\n try {\n parsedMessage = jsonParse(message);\n } catch (err) {\n return;\n }\n\n if (!parsedMessage) {\n return;\n }\n\n if (typeof parsedMessage !== 'object' || parsedMessage === null) {\n return;\n }\n\n parsedMessage = parsedMessage[CONSTANTS.WINDOW_PROPS.POSTROBOT];\n\n if (!parsedMessage || typeof parsedMessage !== 'object' || parsedMessage === null) {\n return;\n }\n\n if (!parsedMessage.type || typeof parsedMessage.type !== 'string') {\n return;\n }\n\n if (!RECEIVE_MESSAGE_TYPES[parsedMessage.type]) {\n return;\n }\n\n return parsedMessage;\n}\n\n\nexport function receiveMessage(event : MessageEvent) {\n\n if (!window || window.closed) {\n return;\n }\n\n try {\n if (!event.source) {\n return;\n }\n } catch (err) {\n return;\n }\n\n let { source, origin, data } = event;\n\n let message = parseMessage(data);\n\n if (!message) {\n return;\n }\n\n if (!message.sourceDomain || typeof message.sourceDomain !== 'string') {\n throw new Error(`Expected message to have sourceDomain`);\n }\n\n if (message.sourceDomain.indexOf(CONSTANTS.MOCK_PROTOCOL) === 0 || message.sourceDomain.indexOf(CONSTANTS.FILE_PROTOCOL) === 0) {\n origin = message.sourceDomain;\n }\n\n if (global.receivedMessages.indexOf(message.id) === -1) {\n global.receivedMessages.push(message.id);\n } else {\n return;\n }\n\n if (__DEBUG__) {\n let level;\n\n if (POST_MESSAGE_NAMES_LIST.indexOf(message.name) !== -1 || message.type === CONSTANTS.POST_MESSAGE_TYPE.ACK) {\n level = 'debug';\n } else if (message.ack === 'error') {\n level = 'error';\n } else {\n level = 'info';\n }\n \n // eslint-disable-next-line no-console\n console[level]('postrobot_receive', message.type.replace(/^postrobot_message_/, ''), '::', message.name, '::', origin, '\\n\\n', message);\n }\n\n if (isWindowClosed(source) && !message.fireAndForget) {\n return;\n }\n\n if (message.data) {\n message.data = deserializeMethods(source, origin, message.data);\n }\n\n RECEIVE_MESSAGE_TYPES[message.type](source, origin, message);\n}\n\nexport function messageListener(event : { source : CrossDomainWindowType, origin : string, data : string, sourceElement : CrossDomainWindowType, originalEvent? : { origin : string } }) {\n\n try {\n noop(event.source);\n } catch (err) {\n return;\n }\n\n // $FlowFixMe\n let messageEvent : MessageEvent = {\n source: event.source || event.sourceElement,\n origin: event.origin || (event.originalEvent && event.originalEvent.origin),\n data: event.data\n };\n\n if (__POST_ROBOT__.__IE_POPUP_SUPPORT__) {\n try {\n require('../../compat').emulateIERestrictions(messageEvent.source, window);\n } catch (err) {\n return;\n }\n }\n\n receiveMessage(messageEvent);\n}\n\nexport function listenForMessages() {\n addEventListener(window, 'message', messageListener);\n}\n\nglobal.receiveMessage = receiveMessage;\n","/* @flow */\n\nexport * from './receive';\nexport * from './send';\nexport * from './listeners';\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getAncestor, isAncestor, isWindowClosed, getDomain, matchDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONFIG, CONSTANTS } from '../conf';\nimport { sendMessage, addResponseListener, deleteResponseListener, markResponseListenerErrored, type ResponseListenerType } from '../drivers';\nimport { uniqueID, onChildWindowReady, sayHello, isRegex } from '../lib';\nimport { global } from '../global';\n\nglobal.requestPromises = global.requestPromises || new WeakMap();\n\ntype WindowResolverType = CrossDomainWindowType | string | HTMLIFrameElement;\n\ntype RequestOptionsType = {\n window? : ?WindowResolverType,\n domain? : ?(string | Array | RegExp),\n name? : ?string,\n data? : ?Object,\n fireAndForget? : ?boolean,\n timeout? : ?number\n};\n\ntype ResponseMessageEvent = {\n source : CrossDomainWindowType,\n origin : string,\n data : Object\n};\n\nexport function request(options : RequestOptionsType) : ZalgoPromise {\n\n let prom = ZalgoPromise.try(() => {\n\n if (!options.name) {\n throw new Error('Expected options.name');\n }\n\n let name = options.name;\n let targetWindow : ?CrossDomainWindowType;\n let domain : string | Array | RegExp;\n\n if (typeof options.window === 'string') {\n let el = document.getElementById(options.window);\n\n if (!el) {\n throw new Error(`Expected options.window ${ Object.prototype.toString.call(options.window) } to be a valid element id`);\n }\n\n if (el.tagName.toLowerCase() !== 'iframe') {\n throw new Error(`Expected options.window ${ Object.prototype.toString.call(options.window) } to be an iframe`);\n }\n\n // $FlowFixMe\n if (!el.contentWindow) {\n throw new Error('Iframe must have contentWindow. Make sure it has a src attribute and is in the DOM.');\n }\n\n // $FlowFixMe\n targetWindow = el.contentWindow;\n\n } else if (options.window instanceof HTMLIFrameElement) {\n\n if (options.window.tagName.toLowerCase() !== 'iframe') {\n throw new Error(`Expected options.window ${ Object.prototype.toString.call(options.window) } to be an iframe`);\n }\n\n if (options.window && !options.window.contentWindow) {\n throw new Error('Iframe must have contentWindow. Make sure it has a src attribute and is in the DOM.');\n }\n\n if (options.window && options.window.contentWindow) {\n // $FlowFixMe\n targetWindow = options.window.contentWindow;\n }\n } else {\n targetWindow = options.window;\n }\n\n if (!targetWindow) {\n throw new Error('Expected options.window to be a window object, iframe, or iframe element id.');\n }\n\n const win = targetWindow;\n\n domain = options.domain || CONSTANTS.WILDCARD;\n\n let hash = `${ options.name }_${ uniqueID() }`;\n\n if (isWindowClosed(win)) {\n throw new Error('Target window is closed');\n }\n\n let hasResult = false;\n\n let requestPromises = global.requestPromises.get(win);\n\n if (!requestPromises) {\n requestPromises = [];\n global.requestPromises.set(win, requestPromises);\n }\n\n let requestPromise = ZalgoPromise.try(() => {\n\n if (isAncestor(window, win)) {\n return onChildWindowReady(win, options.timeout || CONFIG.CHILD_WINDOW_TIMEOUT);\n }\n\n }).then(({ origin } = {}) => {\n\n if (isRegex(domain) && !origin) {\n return sayHello(win);\n }\n\n }).then(({ origin } = {}) => {\n\n if (isRegex(domain)) {\n if (!matchDomain(domain, origin)) {\n throw new Error(`Remote window domain ${ origin } does not match regex: ${ domain.toString() }`);\n }\n\n domain = origin;\n }\n\n if (typeof domain !== 'string' && !Array.isArray(domain)) {\n throw new TypeError(`Expected domain to be a string or array`);\n }\n\n const actualDomain = domain;\n\n return new ZalgoPromise((resolve, reject) => {\n\n let responseListener : ResponseListenerType;\n\n if (!options.fireAndForget) {\n responseListener = {\n name,\n window: win,\n domain: actualDomain,\n respond(err, result) {\n if (!err) {\n hasResult = true;\n requestPromises.splice(requestPromises.indexOf(requestPromise, 1));\n }\n\n if (err) {\n reject(err);\n } else {\n resolve(result);\n }\n }\n };\n\n addResponseListener(hash, responseListener);\n }\n\n sendMessage(win, {\n type: CONSTANTS.POST_MESSAGE_TYPE.REQUEST,\n hash,\n name,\n data: options.data,\n fireAndForget: options.fireAndForget\n }, actualDomain).catch(reject);\n\n if (options.fireAndForget) {\n return resolve();\n }\n\n let ackTimeout = CONFIG.ACK_TIMEOUT;\n let resTimeout = options.timeout || CONFIG.RES_TIMEOUT;\n\n let cycleTime = 100;\n\n let cycle = () => {\n\n if (hasResult) {\n return;\n }\n\n if (isWindowClosed(win)) {\n\n if (!responseListener.ack) {\n return reject(new Error(`Window closed for ${ name } before ack`));\n }\n\n return reject(new Error(`Window closed for ${ name } before response`));\n }\n\n ackTimeout = Math.max(ackTimeout - cycleTime, 0);\n if (resTimeout !== -1) {\n resTimeout = Math.max(resTimeout - cycleTime, 0);\n }\n\n let hasAck = responseListener.ack;\n\n if (hasAck) {\n\n if (resTimeout === -1) {\n return;\n }\n\n cycleTime = Math.min(resTimeout, 2000);\n\n } else if (ackTimeout === 0) {\n return reject(new Error(`No ack for postMessage ${ name } in ${ getDomain() } in ${ CONFIG.ACK_TIMEOUT }ms`));\n\n } else if (resTimeout === 0) {\n return reject(new Error(`No response for postMessage ${ name } in ${ getDomain() } in ${ options.timeout || CONFIG.RES_TIMEOUT }ms`));\n }\n\n setTimeout(cycle, cycleTime);\n };\n\n setTimeout(cycle, cycleTime);\n });\n });\n\n requestPromise.catch(() => {\n markResponseListenerErrored(hash);\n deleteResponseListener(hash);\n });\n\n requestPromises.push(requestPromise);\n\n return requestPromise;\n });\n\n return prom;\n}\n\nexport function send(window : WindowResolverType, name : string, data : ?Object, options : ?RequestOptionsType) : ZalgoPromise {\n\n options = options || {};\n options.window = window;\n options.name = name;\n options.data = data;\n\n return request(options);\n}\n\nexport function sendToParent(name : string, data : ?Object, options : ?RequestOptionsType) : ZalgoPromise {\n\n let win = getAncestor();\n\n if (!win) {\n return new ZalgoPromise((resolve, reject) => reject(new Error('Window does not have a parent')));\n }\n\n return send(win, name, data, options);\n}\n\nexport function client(options : RequestOptionsType = {}) : { send : (string, ?Object) => ZalgoPromise } {\n\n if (!options.window) {\n throw new Error(`Expected options.window`);\n }\n\n const win = options.window;\n\n return {\n send(name : string, data : ?Object) : ZalgoPromise {\n return send(win, name, data, options);\n }\n };\n}\n\nglobal.send = send;\n","/* @flow */\n\nimport { isWindowClosed, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { once as onceFunction, safeInterval } from '../lib';\nimport { addRequestListener, type RequestListenerType } from '../drivers';\nimport { CONSTANTS } from '../conf';\nimport { global } from '../global';\n\ntype ErrorHandlerType = (err : mixed) => void;\ntype HandlerType = ({ source : CrossDomainWindowType, origin : string, data : Object }) => (void | mixed | ZalgoPromise);\n\ntype ServerOptionsType = {\n handler? : ?HandlerType,\n errorHandler? : ?ErrorHandlerType,\n window? : CrossDomainWindowType,\n name? : ?string,\n domain? : ?(string | RegExp | Array),\n once? : ?boolean,\n errorOnClose? : ?boolean\n};\n\nexport function listen(options : ServerOptionsType) : { cancel : () => void } {\n\n if (!options.name) {\n throw new Error('Expected options.name');\n }\n\n if (!options.handler) {\n throw new Error('Expected options.handler');\n }\n\n const name = options.name;\n const win = options.window;\n const domain = options.domain;\n\n let listenerOptions : RequestListenerType = {\n handler: options.handler,\n handleError: options.errorHandler || (err => {\n throw err;\n }),\n window: win,\n domain: domain || CONSTANTS.WILDCARD,\n name\n };\n\n let requestListener = addRequestListener({ name, win, domain }, listenerOptions);\n\n if (options.once) {\n let handler = listenerOptions.handler;\n listenerOptions.handler = onceFunction(function listenOnce() : mixed | ZalgoPromise {\n requestListener.cancel();\n return handler.apply(this, arguments);\n });\n }\n\n if (listenerOptions.window && options.errorOnClose) {\n let interval = safeInterval(() => {\n if (win && typeof win === 'object' && isWindowClosed(win)) {\n interval.cancel();\n listenerOptions.handleError(new Error('Post message target window is closed'));\n }\n }, 50);\n }\n\n return {\n cancel() {\n requestListener.cancel();\n }\n };\n}\n\nexport function on(name : string, options : ServerOptionsType | HandlerType, handler : ?HandlerType) : { cancel : () => void } {\n\n if (typeof options === 'function') {\n handler = options;\n options = {};\n }\n\n options = options || {};\n\n options.name = name;\n options.handler = handler || options.handler;\n\n return listen(options);\n}\n\nexport function once(name : string, options : ?(ServerOptionsType | HandlerType) = {}, handler : ?HandlerType) : ZalgoPromise<{ source : mixed, origin : string, data : Object }> {\n\n if (typeof options === 'function') {\n handler = options;\n options = {};\n }\n\n options = options || {};\n handler = handler || options.handler;\n let errorHandler = options.errorHandler;\n\n let promise = new ZalgoPromise((resolve, reject) => {\n\n options = options || {};\n\n options.name = name;\n options.once = true;\n\n options.handler = (event) => {\n resolve(event);\n if (handler) {\n return handler(event);\n }\n };\n\n options.errorHandler = (err) => {\n reject(err);\n if (errorHandler) {\n return errorHandler(err);\n }\n };\n });\n\n let onceListener = listen(options);\n promise.cancel = onceListener.cancel;\n\n return promise;\n}\n\nexport function listener(options : ServerOptionsType = {}) : { on : (name : string, handler : HandlerType) => { cancel : () => void } } {\n\n return {\n on(name : string, handler : HandlerType) : { cancel : () => void } {\n return on(name, options, handler);\n }\n };\n}\n\nglobal.on = on;\n","/* @flow */\n\nimport { CONSTANTS } from '../conf';\nimport { messageListener } from '../drivers';\n\nexport { CONFIG, CONSTANTS } from '../conf';\n\nexport function disable() {\n delete window[CONSTANTS.WINDOW_PROPS.POSTROBOT];\n window.removeEventListener('message', messageListener);\n}\n","/* @flow */\n\nimport { getAncestor } from 'cross-domain-utils/src';\n\nexport * from './client';\nexport * from './server';\nexport * from './config';\n\nexport let parent = getAncestor();\n","/* @flow */\n\nimport { type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { global } from './global';\n\nexport function cleanUpWindow(win : CrossDomainWindowType) {\n\n // global.tunnelWindows\n // global.bridges\n // global.popupWindowsByName\n // global.responseListeners\n // global.requestListeners\n\n let requestPromises = global.requestPromises.get(win);\n\n if (requestPromises) {\n for (let promise of requestPromises) {\n promise.reject(new Error(`No response from window - cleaned up`));\n }\n }\n\n if (global.popupWindowsByWin) {\n global.popupWindowsByWin.delete(win);\n }\n\n if (global.remoteWindows) {\n global.remoteWindows.delete(win);\n }\n\n global.requestPromises.delete(win);\n global.methods.delete(win);\n global.readyPromises.delete(win);\n}\n","/* @flow */\n\nimport { initOnReady, listenForMethods } from './lib';\nimport { listenForMessages } from './drivers';\nimport { global } from './global';\nimport { on, send } from './public';\n\nexport * from './public';\nexport { cleanUpWindow } from './clean';\nexport { ZalgoPromise as Promise } from 'zalgo-promise/src';\nexport let bridge = __POST_ROBOT__.__IE_POPUP_SUPPORT__ ? require('./bridge/interface') : null;\n\nexport function init() {\n if (!global.initialized) {\n listenForMessages();\n\n if (__POST_ROBOT__.__IE_POPUP_SUPPORT__) {\n require('./bridge').openTunnelToOpener();\n }\n\n initOnReady();\n listenForMethods({ on, send });\n }\n\n global.initialized = true;\n}\n\ninit();\n","/* @flow */\n\n// eslint-disable-next-line import/no-namespace\nimport * as INTERFACE from './interface';\n\nexport * from './interface';\nexport default INTERFACE;\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { isPopup, isIframe, getUserAgent } from 'cross-domain-utils/src';\n\nimport { CONFIG, CONSTANTS } from '../conf';\n\n\nexport function stringifyError(err : mixed, level : number = 1) : string {\n\n if (level >= 3) {\n return 'stringifyError stack overflow';\n }\n\n try {\n if (!err) {\n return ``;\n }\n\n if (typeof err === 'string') {\n return err;\n }\n\n if (err instanceof Error) {\n let stack = err && err.stack;\n let message = err && err.message;\n\n if (stack && message) {\n if (stack.indexOf(message) !== -1) {\n return stack;\n } else {\n return `${ message }\\n${ stack }`;\n }\n } else if (stack) {\n return stack;\n } else if (message) {\n return message;\n }\n }\n\n if (typeof err.toString === 'function') {\n return err.toString();\n }\n\n return Object.prototype.toString.call(err);\n\n } catch (newErr) { // eslint-disable-line unicorn/catch-error-name\n return `Error while stringifying error: ${ stringifyError(newErr, level + 1) }`;\n }\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport let once = (method : Function) : ((...args : Array) => T | void) => {\n if (!method) {\n return method;\n }\n let called = false;\n return function onceWrapper() : T | void {\n if (!called) {\n called = true;\n return method.apply(this, arguments);\n }\n };\n};\n\n// eslint-disable-next-line no-unused-vars\nexport function noop(...args : Array) {\n // pass\n}\n\nexport function addEventListener(obj : Object, event : string, handler : Function) : { cancel : () => void } {\n if (obj.addEventListener) {\n obj.addEventListener(event, handler);\n } else {\n obj.attachEvent(`on${ event }`, handler);\n }\n\n return {\n cancel() {\n if (obj.removeEventListener) {\n obj.removeEventListener(event, handler);\n } else {\n obj.detachEvent(`on${ event }`, handler);\n }\n }\n };\n}\n\nexport function uniqueID() : string {\n\n let chars = '0123456789abcdef';\n\n return 'xxxxxxxxxx'.replace(/./g, () => {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n });\n}\n\ntype MixedArrayType = Array;\n\nexport function eachArray(item : MixedArrayType, callback : (item : mixed, key : number) => mixed) {\n for (let i = 0; i < item.length; i++) {\n callback(item[i], i);\n }\n}\n\nexport function eachObject(item : Object, callback : (item : mixed, key : string) => mixed) {\n for (let key in item) {\n if (item.hasOwnProperty(key)) {\n callback(item[key], key);\n }\n }\n}\n\nexport function each(item : T, callback : (item : mixed, key : number | string) => mixed) {\n if (Array.isArray(item)) {\n eachArray(item, callback);\n } else if (typeof item === 'object' && item !== null) {\n eachObject(item, callback);\n }\n}\n\nexport function replaceObject(item : T, callback : (item : mixed, key : number | string) => mixed, depth : number = 1) : T {\n\n if (depth >= 100) {\n throw new Error(`Self-referential object passed, or object contained too many layers`);\n }\n\n let newobj;\n\n if (typeof item === 'object' && item !== null && !Array.isArray(item)) {\n newobj = {};\n } else if (Array.isArray(item)) {\n newobj = [];\n } else {\n throw new TypeError(`Invalid type: ${ typeof item }`);\n }\n\n each(item, (childItem, key) => {\n\n let result = callback(childItem, key);\n\n if (typeof result !== 'undefined') {\n // $FlowFixMe\n newobj[key] = result;\n } else if (typeof childItem === 'object' && childItem !== null) {\n // $FlowFixMe\n newobj[key] = replaceObject(childItem, callback, depth + 1);\n } else {\n // $FlowFixMe\n newobj[key] = childItem;\n }\n });\n\n // $FlowFixMe\n return newobj;\n}\n\nexport function safeInterval(method : Function, time : number) : { cancel : () => void } {\n let timeout;\n\n function runInterval() {\n timeout = setTimeout(runInterval, time);\n method.call();\n }\n\n timeout = setTimeout(runInterval, time);\n\n return {\n cancel() {\n clearTimeout(timeout);\n }\n };\n}\n\nexport function isRegex(item : mixed) : boolean {\n return Object.prototype.toString.call(item) === '[object RegExp]';\n}\n\n\ntype FunctionProxy = (method : T) => T;\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport let weakMapMemoize : FunctionProxy<*> = (method : (arg : any) => R) : ((...args : Array) => R) => {\n\n let weakmap = new WeakMap();\n\n // eslint-disable-next-line flowtype/no-weak-types\n return function weakmapMemoized(arg : any) : R {\n let result = weakmap.get(arg);\n\n if (typeof result !== 'undefined') {\n return result;\n }\n\n result = method.call(this, arg);\n\n if (typeof result !== 'undefined') {\n weakmap.set(arg, result);\n }\n\n return result;\n };\n};\n\nexport function getWindowType() : string {\n if (isPopup()) {\n return CONSTANTS.WINDOW_TYPES.POPUP;\n }\n if (isIframe()) {\n return CONSTANTS.WINDOW_TYPES.IFRAME;\n }\n return CONSTANTS.WINDOW_TYPES.FULLPAGE;\n}\n\nexport function jsonStringify(obj : T, replacer : ?Function, indent : number | void) : string {\n\n let objectToJSON;\n let arrayToJSON;\n\n try {\n if (JSON.stringify({}) !== '{}') {\n // $FlowFixMe\n objectToJSON = Object.prototype.toJSON;\n // $FlowFixMe\n delete Object.prototype.toJSON;\n }\n\n if (JSON.stringify({}) !== '{}') {\n throw new Error(`Can not correctly serialize JSON objects`);\n }\n\n if (JSON.stringify([]) !== '[]') {\n // $FlowFixMe\n arrayToJSON = Array.prototype.toJSON;\n // $FlowFixMe\n delete Array.prototype.toJSON;\n }\n\n if (JSON.stringify([]) !== '[]') {\n throw new Error(`Can not correctly serialize JSON objects`);\n }\n\n } catch (err) {\n throw new Error(`Can not repair JSON.stringify: ${ err.message }`);\n }\n\n let result = JSON.stringify.call(this, obj, replacer, indent);\n\n try {\n if (objectToJSON) {\n // $FlowFixMe\n Object.prototype.toJSON = objectToJSON; // eslint-disable-line no-extend-native\n }\n\n if (arrayToJSON) {\n // $FlowFixMe\n Array.prototype.toJSON = arrayToJSON; // eslint-disable-line no-extend-native\n }\n\n } catch (err) {\n throw new Error(`Can not repair JSON.stringify: ${ err.message }`);\n }\n\n\n return result;\n}\n\nexport function jsonParse(item : string) : mixed {\n return JSON.parse(item);\n}\n \nexport function needsGlobalMessagingForBrowser() : boolean {\n\n if (getUserAgent(window).match(/MSIE|trident|edge\\/12|edge\\/13/i)) {\n return true;\n }\n \n if (!CONFIG.ALLOW_POSTMESSAGE_POPUP) {\n return true;\n }\n \n return false;\n}\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { matchDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { CONSTANTS } from '../conf';\nimport { global } from '../global';\n\nimport { once, uniqueID, replaceObject, stringifyError, isRegex } from './util';\n\nglobal.methods = global.methods || new WeakMap();\n\nexport let listenForMethods = once(() => {\n global.on(CONSTANTS.POST_MESSAGE_NAMES.METHOD, { origin: CONSTANTS.WILDCARD }, ({ source, origin, data } : { source : CrossDomainWindowType, origin : string, data : Object }) => {\n\n let methods = global.methods.get(source);\n\n if (!methods) {\n throw new Error(`Could not find any methods this window has privileges to call`);\n }\n\n let meth = methods[data.id];\n\n if (!meth) {\n throw new Error(`Could not find method with id: ${ data.id }`);\n }\n\n if (!matchDomain(meth.domain, origin)) {\n throw new Error(`Method domain ${ meth.domain } does not match origin ${ origin }`);\n }\n\n return ZalgoPromise.try(() => {\n return meth.method.apply({ source, origin, data }, data.args);\n\n }).then(result => {\n\n return {\n result,\n id: data.id,\n name: data.name\n };\n });\n });\n});\n\nfunction isSerialized(item : mixed, type : string) : boolean {\n return typeof item === 'object' && item !== null && item.__type__ === type;\n}\n\ntype SerializedMethod = {\n __type__ : string,\n __id__ : string,\n __name__ : string\n};\n\nexport function serializeMethod(destination : CrossDomainWindowType, domain : string | Array, method : Function, name : string) : SerializedMethod {\n\n let id = uniqueID();\n\n let methods = global.methods.get(destination);\n\n if (!methods) {\n methods = {};\n global.methods.set(destination, methods);\n }\n\n methods[id] = { domain, method };\n\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.METHOD,\n __id__: id,\n __name__: name\n };\n}\n\ntype SerializedError = {\n __type__ : string,\n __message__ : string\n};\n\nfunction serializeError(err : mixed) : SerializedError {\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.ERROR,\n __message__: stringifyError(err),\n // $FlowFixMe\n __code__: err.code\n };\n}\n\ntype SerializePromise = {\n __type__ : string,\n __then__ : SerializedMethod\n};\n\nfunction serializePromise(destination : CrossDomainWindowType, domain : string | Array, promise : ZalgoPromise, name : string) : SerializePromise {\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.PROMISE,\n __then__: serializeMethod(destination, domain, (resolve, reject) => promise.then(resolve, reject), `${ name }.then`)\n };\n}\n\nfunction serializeZalgoPromise(destination : CrossDomainWindowType, domain : string | Array, promise : ZalgoPromise, name : string) : SerializePromise {\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.ZALGO_PROMISE,\n __then__: serializeMethod(destination, domain, (resolve, reject) => promise.then(resolve, reject), `${ name }.then`)\n };\n}\n\ntype SerializedRegex = {\n __type__ : string,\n __source__ : string\n};\n\nfunction serializeRegex(regex : RegExp) : SerializedRegex {\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.REGEX,\n __source__: regex.source\n };\n}\n\nexport function serializeMethods(destination : CrossDomainWindowType, domain : string | Array, obj : Object) : Object {\n\n return replaceObject({ obj }, (item, key) => {\n if (typeof item === 'function') {\n return serializeMethod(destination, domain, item, key.toString());\n }\n\n if (item instanceof Error) {\n return serializeError(item);\n }\n\n if (window.Promise && item instanceof window.Promise) {\n return serializePromise(destination, domain, item, key.toString());\n }\n\n if (ZalgoPromise.isPromise(item)) {\n // $FlowFixMe\n return serializeZalgoPromise(destination, domain, item, key.toString());\n }\n\n if (isRegex(item)) {\n // $FlowFixMe\n return serializeRegex(item);\n }\n }).obj;\n}\n\nexport function deserializeMethod(source : CrossDomainWindowType, origin : string, obj : Object) : Function {\n\n function wrapper() : ZalgoPromise {\n let args = Array.prototype.slice.call(arguments);\n return global.send(source, CONSTANTS.POST_MESSAGE_NAMES.METHOD, {\n id: obj.__id__,\n name: obj.__name__,\n args\n\n }, { domain: origin, timeout: -1 }).then(({ data }) => {\n return data.result;\n }, err => {\n throw err;\n });\n }\n\n wrapper.__name__ = obj.__name__;\n wrapper.__xdomain__ = true;\n\n wrapper.source = source;\n wrapper.origin = origin;\n\n return wrapper;\n}\n\nexport function deserializeError(source : CrossDomainWindowType, origin : string, obj : Object) : Error {\n let err = new Error(obj.__message__);\n if (obj.__code__) {\n // $FlowFixMe\n err.code = obj.__code__;\n }\n return err;\n}\n\nexport function deserializeZalgoPromise(source : CrossDomainWindowType, origin : string, prom : Object) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => deserializeMethod(source, origin, prom.__then__)(resolve, reject));\n}\n\nexport function deserializePromise(source : CrossDomainWindowType, origin : string, prom : Object) : ZalgoPromise {\n if (!window.Promise) {\n return deserializeZalgoPromise(source, origin, prom);\n }\n\n return new window.Promise((resolve, reject) => deserializeMethod(source, origin, prom.__then__)(resolve, reject));\n}\n\nexport function deserializeRegex(source : CrossDomainWindowType, origin : string, item : Object) : RegExp {\n // eslint-disable-next-line security/detect-non-literal-regexp\n return new RegExp(item.__source__);\n}\n\nexport function deserializeMethods(source : CrossDomainWindowType, origin : string, obj : Object) : Object {\n\n return replaceObject({ obj }, (item) => {\n if (typeof item !== 'object' || item === null) {\n return;\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.METHOD)) {\n return deserializeMethod(source, origin, item);\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.ERROR)) {\n return deserializeError(source, origin, item);\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.PROMISE)) {\n return deserializePromise(source, origin, item);\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.ZALGO_PROMISE)) {\n return deserializeZalgoPromise(source, origin, item);\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.REGEX)) {\n return deserializeRegex(source, origin, item);\n }\n\n }).obj;\n}\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { getAncestor, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { CONSTANTS } from '../conf';\nimport { global } from '../global';\n\nimport { noop } from './util';\n\nglobal.readyPromises = global.readyPromises || new WeakMap();\n\nexport function onHello(handler : ({ source? : CrossDomainWindowType, origin? : string }) => void) {\n global.on(CONSTANTS.POST_MESSAGE_NAMES.HELLO, { domain: CONSTANTS.WILDCARD }, ({ source, origin }) => {\n return handler({ source, origin });\n });\n}\n\nexport function sayHello(win : CrossDomainWindowType) : ZalgoPromise<{ origin : string }> {\n return global.send(win, CONSTANTS.POST_MESSAGE_NAMES.HELLO, {}, { domain: CONSTANTS.WILDCARD, timeout: -1 })\n .then(({ origin }) => {\n return { origin };\n });\n}\n\nexport function initOnReady() {\n\n onHello(({ source, origin }) => {\n let promise = global.readyPromises.get(source) || new ZalgoPromise();\n promise.resolve({ origin });\n global.readyPromises.set(source, promise);\n });\n\n let parent = getAncestor();\n if (parent) {\n sayHello(parent).catch(noop);\n }\n}\n\nexport function onChildWindowReady(win : mixed, timeout : number = 5000, name : string = 'Window') : ZalgoPromise<{ origin : string }> {\n\n let promise = global.readyPromises.get(win);\n\n if (promise) {\n return promise;\n }\n\n promise = new ZalgoPromise();\n global.readyPromises.set(win, promise);\n\n if (timeout !== -1) {\n setTimeout(() => promise.reject(new Error(`${ name } did not load after ${ timeout }ms`)), timeout);\n }\n\n return promise;\n}\n","/* @flow */\n\nexport * from './util';\nexport * from './serialize';\nexport * from './ready';\n","/* @flow */\n\nexport function getUserAgent() : string {\n return window.navigator.mockUserAgent || window.navigator.userAgent;\n}\n\nexport function isDevice(userAgent? : string = getUserAgent()) : boolean {\n if (userAgent.match(/Android|webOS|iPhone|iPad|iPod|bada|Symbian|Palm|CriOS|BlackBerry|IEMobile|WindowsMobile|Opera Mini/i)) {\n return true;\n }\n\n return false;\n}\n\nexport function isWebView() : boolean {\n let userAgent = getUserAgent();\n return (/(iPhone|iPod|iPad|Macintosh).*AppleWebKit(?!.*Safari)/i).test(userAgent) ||\n (/\\bwv\\b/).test(userAgent) ||\n (/Android.*Version\\/(\\d)\\.(\\d)/i).test(userAgent);\n}\n\nexport function isStandAlone() : boolean {\n return (window.navigator.standalone === true || window.matchMedia('(display-mode: standalone)').matches);\n}\n\nexport function isFacebookWebView(ua? : string = getUserAgent()) : boolean {\n return (ua.indexOf('FBAN') !== -1) || (ua.indexOf('FBAV') !== -1);\n}\n\nexport function isFirefoxIOS(ua? : string = getUserAgent()) : boolean {\n return (/FxiOS/i).test(ua);\n}\n\nexport function isEdgeIOS(ua? : string = getUserAgent()) : boolean {\n return (/EdgiOS/i).test(ua);\n}\n\nexport function isOperaMini(ua? : string = getUserAgent()) : boolean {\n return ua.indexOf('Opera Mini') > -1;\n}\n\nexport function isAndroid(ua? : string = getUserAgent()) : boolean {\n return (/Android/).test(ua);\n}\n\nexport function isIos(ua? : string = getUserAgent()) : boolean {\n return (/iPhone|iPod|iPad/).test(ua);\n}\n\nexport function isGoogleSearchApp(ua? : string = getUserAgent()) : boolean {\n return (/\\bGSA\\b/).test(ua);\n}\n\nexport function isQQBrowser(ua? : string = getUserAgent()) : boolean {\n return (/QQBrowser/).test(ua);\n}\n\nexport function isIosWebview(ua? : string = getUserAgent()) : boolean {\n if (isIos(ua)) {\n if (isGoogleSearchApp(ua)) {\n return true;\n }\n return (/.+AppleWebKit(?!.*Safari)/).test(ua);\n }\n return false;\n}\n\nexport function isAndroidWebview(ua? : string = getUserAgent()) : boolean {\n if (isAndroid(ua)) {\n return (/Version\\/[\\d.]+/).test(ua) && !isOperaMini(ua);\n }\n return false;\n}\n\nexport function isIE() : boolean {\n\n if (window.document.documentMode) {\n return true;\n }\n\n return Boolean(\n window.navigator &&\n window.navigator.userAgent &&\n (/Edge|MSIE|rv:11/i).test(window.navigator.userAgent)\n );\n}\n\nexport function isIECompHeader() : boolean {\n let mHttp = window.document.querySelector('meta[http-equiv=\"X-UA-Compatible\"]');\n let mContent = window.document.querySelector('meta[content=\"IE=edge\"]');\n if (mHttp && mContent) {\n return true;\n }\n return false;\n}\n\nexport function isElectron() : boolean {\n if (typeof process !== 'undefined' && process.versions && process.versions.electron) {\n return true;\n }\n return false;\n}\n\nexport function isIEIntranet() : boolean {\n\n // This status check only works for older versions of IE with document.documentMode set\n\n if (window.document.documentMode) {\n try {\n let status = window.status;\n\n window.status = 'testIntranetMode';\n\n if (window.status === 'testIntranetMode') {\n window.status = status;\n\n return true;\n }\n\n return false;\n\n } catch (err) {\n\n return false;\n }\n }\n\n return false;\n}\n\nexport function isMacOsCna() : boolean {\n let userAgent = getUserAgent();\n return (/Macintosh.*AppleWebKit(?!.*Safari)/i).test(userAgent);\n}\n\nexport function supportsPopups(ua? : string = getUserAgent()) : boolean {\n return !(isIosWebview(ua) || isAndroidWebview(ua) || isOperaMini(ua) ||\n isFirefoxIOS(ua) || isEdgeIOS(ua) || isFacebookWebView(ua) || isQQBrowser(ua) || isElectron() || isMacOsCna() || isStandAlone());\n}\n\nexport function isChrome(ua? : string = getUserAgent()) : boolean {\n return (/Chrome|Chromium|CriOS/).test(ua);\n}\n\nexport function isSafari(ua? : string = getUserAgent()) : boolean {\n return (/Safari/).test(ua) && !isChrome(ua);\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\n\nimport type { CancelableType } from './types';\n\nexport function getFunctionName (fn : T) : string {\n return fn.name || fn.__name__ || fn.displayName || 'anonymous';\n}\n\nexport function setFunctionName (fn : T, name : string) : T {\n try {\n delete fn.name;\n fn.name = name;\n } catch (err) {\n // pass\n }\n\n fn.__name__ = fn.displayName = name;\n return fn;\n}\n\nexport function base64encode(str : string) : string {\n if (typeof btoa === 'function') {\n return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, (m, p1) => {\n return String.fromCharCode(parseInt(p1, 16));\n }));\n }\n\n if (typeof Buffer !== 'undefined') {\n return Buffer.from(str, 'utf8').toString('base64');\n }\n\n throw new Error(`Can not find window.btoa or Buffer`);\n}\n\nexport function base64decode(str : string) : string {\n if (typeof atob === 'function') {\n return decodeURIComponent(Array.prototype.map.call(atob(str), c => {\n // eslint-disable-next-line prefer-template\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\n }).join(''));\n }\n\n if (typeof Buffer !== 'undefined') {\n return Buffer.from(str, 'base64').toString('utf8');\n }\n\n throw new Error(`Can not find window.atob or Buffer`);\n}\n\nexport function uniqueID() : string {\n\n let chars = '0123456789abcdef';\n\n let randomID = 'xxxxxxxxxx'.replace(/./g, () => {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n });\n\n let timeID = base64encode(\n new Date().toISOString().slice(11, 19).replace('T', '.')\n ).replace(/[^a-zA-Z0-9]/g, '').toLowerCase();\n\n return `${ randomID }_${ timeID }`;\n}\n\nexport function getGlobal() : Object {\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n if (typeof __GLOBAL__ !== 'undefined') {\n return __GLOBAL__;\n }\n throw new Error(`No global found`);\n}\n\nlet objectIDs;\n\nexport function getObjectID(obj : Object) : string {\n\n objectIDs = objectIDs || new WeakMap();\n\n if (obj === null || obj === undefined || (typeof obj !== 'object' && typeof obj !== 'function')) {\n throw new Error(`Invalid object`);\n }\n\n let uid = objectIDs.get(obj);\n\n if (!uid) {\n uid = `${ typeof obj }:${ uniqueID() }`;\n objectIDs.set(obj, uid);\n }\n\n return uid;\n}\n\nfunction serializeArgs(args : Array) : string {\n try {\n return JSON.stringify(Array.prototype.slice.call(args), (subkey, val) => {\n if (typeof val === 'function') {\n return `memoize[${ getObjectID(val) }]`;\n }\n return val;\n });\n } catch (err) {\n throw new Error(`Arguments not serializable -- can not be used to memoize`);\n }\n}\nexport function memoize) => R, X : { (...args : Array) : R, displayName : string, reset : () => void }>(method : F, options : { time? : number, thisNamespace? : boolean } = {}) : X {\n let cacheMap = new WeakMap();\n\n // $FlowFixMe\n let memoizedFunction : X = function memoizedFunction(...args : Array) : R {\n let cache = cacheMap.getOrSet(options.thisNamespace ? this : method, () => ({}));\n\n let key : string = serializeArgs(args);\n\n let cacheTime = options.time;\n if (cache[key] && cacheTime && (Date.now() - cache[key].time) < cacheTime) {\n delete cache[key];\n }\n\n if (cache[key]) {\n return cache[key].value;\n }\n\n let time = Date.now();\n let value = method.apply(this, arguments);\n\n cache[key] = { time, value };\n\n return cache[key].value;\n };\n\n memoizedFunction.reset = () => {\n cacheMap.delete(options.thisNamespace ? this : method);\n };\n\n return setFunctionName(memoizedFunction, `${ getFunctionName(method) }::memoized`);\n}\n\nexport function promiseIdentity(item : ZalgoPromise | T) : ZalgoPromise {\n // $FlowFixMe\n return ZalgoPromise.resolve(item);\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport function memoizePromise(method : (...args : Array) => ZalgoPromise) : ((...args : Array) => ZalgoPromise) {\n let cache = {};\n\n // eslint-disable-next-line flowtype/no-weak-types\n function memoizedPromiseFunction(...args : Array) : ZalgoPromise {\n let key : string = serializeArgs(args);\n\n if (cache.hasOwnProperty(key)) {\n return cache[key];\n }\n\n cache[key] = ZalgoPromise.try(() => method.apply(this, arguments))\n .finally(() => {\n delete cache[key];\n });\n\n return cache[key];\n }\n\n memoizedPromiseFunction.reset = () => {\n cache = {};\n };\n\n return setFunctionName(memoizedPromiseFunction, `${ getFunctionName(method) }::promiseMemoized`);\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport function promisify(method : (...args : Array) => R, options : { name? : string } = {}) : ((...args : Array) => ZalgoPromise) {\n function promisifiedFunction() : ZalgoPromise {\n return ZalgoPromise.try(method, this, arguments);\n }\n\n if (options.name) {\n promisifiedFunction.displayName = `${ options.name }:promisified`;\n }\n\n return setFunctionName(promisifiedFunction, `${ getFunctionName(method) }::promisified`);\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport function inlineMemoize(method : (...args : Array) => R, logic : (...args : Array) => R, args : Array = []) : R {\n // $FlowFixMe\n let cache = method.__inline_memoize_cache__ = method.__inline_memoize_cache__ || {};\n let key = serializeArgs(args);\n\n if (cache.hasOwnProperty(key)) {\n return cache[key];\n }\n \n let result = cache[key] = logic(...args);\n\n return result;\n}\n\n// eslint-disable-next-line no-unused-vars\nexport function noop(...args : Array) {\n // pass\n}\n\nexport function once(method : Function) : Function {\n let called = false;\n\n const onceFunction = function() : mixed {\n if (!called) {\n called = true;\n return method.apply(this, arguments);\n }\n };\n\n return setFunctionName(onceFunction, `${ getFunctionName(method) }::once`);\n}\n\nexport function hashStr(str : string) : number {\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n hash += str[i].charCodeAt(0) * Math.pow((i % 10) + 1, 5);\n }\n return Math.floor(Math.pow(Math.sqrt(hash), 5));\n}\n\nexport function strHashStr(str : string) : string {\n let hash = '';\n\n for (let i = 0; i < str.length; i++) {\n let total = (str[i].charCodeAt(0) * i);\n\n if (str[i + 1]) {\n total += (str[i + 1].charCodeAt(0) * (i - 1));\n }\n\n hash += String.fromCharCode(97 + (Math.abs(total) % 26));\n }\n\n return hash;\n}\n\nexport function match(str : string, pattern : RegExp) : ?string {\n let regmatch = str.match(pattern);\n if (regmatch) {\n return regmatch[1];\n }\n}\n\nexport function awaitKey(obj : Object, key : string) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n\n let value = obj[key];\n\n if (value) {\n return resolve(value);\n }\n\n delete obj[key];\n\n Object.defineProperty(obj, key, {\n\n configurable: true,\n\n set(item) {\n value = item;\n\n if (value) {\n resolve(value);\n }\n },\n\n get() : mixed {\n return value;\n }\n });\n });\n}\n\nexport function stringifyError(err : mixed, level : number = 1) : string {\n\n if (level >= 3) {\n return 'stringifyError stack overflow';\n }\n\n try {\n if (!err) {\n return ``;\n }\n\n if (typeof err === 'string') {\n return err;\n }\n\n if (err instanceof Error) {\n let stack = err && err.stack;\n let message = err && err.message;\n\n if (stack && message) {\n if (stack.indexOf(message) !== -1) {\n return stack;\n } else {\n return `${ message }\\n${ stack }`;\n }\n } else if (stack) {\n return stack;\n } else if (message) {\n return message;\n }\n }\n\n if (err && err.toString && typeof err.toString === 'function') {\n // $FlowFixMe\n return err.toString();\n }\n\n return Object.prototype.toString.call(err);\n\n } catch (newErr) { // eslint-disable-line unicorn/catch-error-name\n return `Error while stringifying error: ${ stringifyError(newErr, level + 1) }`;\n }\n}\n\nexport function stringifyErrorMessage(err : mixed) : string {\n\n let defaultMessage = ``;\n\n if (!err) {\n return defaultMessage;\n }\n\n if (err instanceof Error) {\n return err.message || defaultMessage;\n }\n\n if (typeof err.message === 'string') {\n return err.message || defaultMessage;\n }\n\n return defaultMessage;\n}\n\nexport function stringify(item : mixed) : string {\n if (typeof item === 'string') {\n return item;\n }\n\n if (item && item.toString && typeof item.toString === 'function') {\n // $FlowFixMe\n return item.toString();\n }\n\n return Object.prototype.toString.call(item);\n}\n\nexport function domainMatches(hostname : string, domain : string) : boolean {\n hostname = hostname.split('://')[1];\n let index = hostname.indexOf(domain);\n return (index !== -1 && hostname.slice(index) === domain);\n}\n\nexport function patchMethod(obj : Object, name : string, handler : Function) {\n let original = obj[name];\n\n obj[name] = function patchedMethod() : mixed {\n return handler({\n context: this,\n args: Array.prototype.slice.call(arguments),\n original,\n callOriginal: () => original.apply(this, arguments)\n });\n };\n}\n\nexport function extend(obj : T, source : Object) : T {\n if (!source) {\n return obj;\n }\n\n if (Object.assign) {\n return Object.assign(obj, source);\n }\n\n for (let key in source) {\n if (source.hasOwnProperty(key)) {\n obj[key] = source[key];\n }\n }\n\n return obj;\n}\n\nexport function values(obj : { [string] : T }) : Array {\n let result = [];\n for (let key in obj) {\n if (obj.hasOwnProperty(key)) {\n result.push(obj[key]);\n }\n }\n return result;\n}\n\nexport function perc(pixels : number, percentage : number) : number {\n return Math.round((pixels * percentage) / 100);\n}\n\nexport function min(...args : Array) : number {\n return Math.min(...args);\n}\n\nexport function max(...args : Array) : number {\n return Math.max(...args);\n}\n\nexport function regexMap(str : string, regexp : RegExp, handler : () => T) : Array {\n let results = [];\n\n // $FlowFixMe\n str.replace(regexp, function regexMapMatcher(item) {\n results.push(handler ? handler.apply(null, arguments) : item);\n });\n\n // $FlowFixMe\n return results;\n}\n\nexport function svgToBase64(svg : string) : string {\n return `data:image/svg+xml;base64,${ base64encode(svg) }`;\n}\n\nexport function objFilter(obj : { [string] : T }, filter? : (T, ?string) => mixed = Boolean) : { [string] : R } {\n let result = {};\n\n for (let key in obj) {\n if (!obj.hasOwnProperty(key) || !filter(obj[key], key)) {\n continue;\n }\n\n result[key] = obj[key];\n }\n\n return result;\n}\n\nexport function identity (item : T) : T {\n return item;\n}\n\nexport function regexTokenize(text : string, regexp : RegExp) : Array {\n let result = [];\n text.replace(regexp, token => {\n result.push(token);\n return '';\n });\n return result;\n}\n\nexport function promiseDebounce(method : () => ZalgoPromise | T, delay : number = 50) : () => ZalgoPromise {\n\n let promise;\n let timeout;\n\n const promiseDebounced = function() : ZalgoPromise {\n if (timeout) {\n clearTimeout(timeout);\n }\n\n let localPromise = promise = promise || new ZalgoPromise();\n\n timeout = setTimeout(() => {\n promise = null;\n timeout = null;\n\n ZalgoPromise.try(method).then(\n result => { localPromise.resolve(result); },\n err => { localPromise.reject(err); }\n );\n }, delay);\n\n return localPromise;\n };\n\n return setFunctionName(promiseDebounced, `${ getFunctionName(method) }::promiseDebounced`);\n}\n\nexport function safeInterval(method : Function, time : number) : { cancel : () => void } {\n\n let timeout;\n\n function loop() {\n timeout = setTimeout(() => {\n method();\n loop();\n }, time);\n }\n\n loop();\n\n return {\n cancel() {\n clearTimeout(timeout);\n }\n };\n}\n\nexport function isInteger(str : string) : boolean {\n return Boolean(str.match(/^[0-9]+$/));\n}\n\nexport function isFloat(str : string) : boolean {\n return Boolean(str.match(/^[0-9]+\\.[0-9]+$/));\n}\n\nexport function serializePrimitive(value : string | number | boolean) : string {\n return value.toString();\n}\n\nexport function deserializePrimitive(value : string) : string | number | boolean {\n if (value === 'true') {\n return true;\n } else if (value === 'false') {\n return false;\n } else if (isInteger(value)) {\n return parseInt(value, 10);\n } else if (isFloat(value)) {\n return parseFloat(value);\n } else {\n return value;\n }\n}\n\nexport function dotify(obj : Object, prefix : string = '', newobj : Object = {}) : { [string] : string } {\n prefix = prefix ? `${ prefix }.` : prefix;\n for (let key in obj) {\n if (!obj.hasOwnProperty(key) || obj[key] === undefined || obj[key] === null || typeof obj[key] === 'function') {\n continue;\n } else if (obj[key] && Array.isArray(obj[key]) && obj[key].length && obj[key].every(val => typeof val !== 'object')) {\n newobj[`${ prefix }${ key }[]`] = obj[key].join(',');\n } else if (obj[key] && typeof obj[key] === 'object') {\n newobj = dotify(obj[key], `${ prefix }${ key }`, newobj);\n } else {\n newobj[`${ prefix }${ key }`] = serializePrimitive(obj[key]);\n }\n }\n return newobj;\n}\n\nexport function undotify(obj : { [string] : string }) : Object {\n \n let result = {};\n\n for (let key in obj) {\n if (!obj.hasOwnProperty(key) || typeof obj[key] !== 'string') {\n continue;\n }\n\n let value = obj[key];\n\n if (key.match(/^.+\\[\\]$/)) {\n key = key.slice(0, key.length - 2);\n value = value.split(',').map(deserializePrimitive);\n } else {\n value = deserializePrimitive(value);\n }\n\n let keyResult = result;\n let parts = key.split('.');\n for (let i = 0; i < parts.length; i++) {\n let part = parts[i];\n let isLast = (i + 1 === parts.length);\n let isIndex = !isLast && isInteger(parts[i + 1]);\n\n if (part === 'constructor' || part === 'prototype' || part === '__proto__') {\n throw new Error(`Disallowed key: ${ part }`);\n }\n\n if (isLast) {\n // $FlowFixMe\n keyResult[part] = value;\n } else {\n // $FlowFixMe\n keyResult = keyResult[part] = keyResult[part] || (isIndex ? [] : {});\n }\n }\n }\n\n return result;\n}\n\nexport type EventEmitterType = {\n on : (eventName : string, handler : Function) => CancelableType,\n once : (eventName : string, handler : Function) => CancelableType,\n trigger : (eventName : string, ...args : $ReadOnlyArray) => ZalgoPromise,\n triggerOnce : (eventName : string, ...args : $ReadOnlyArray) => ZalgoPromise\n};\n\nexport function eventEmitter() : EventEmitterType {\n let triggered = {};\n let handlers = {};\n\n return {\n\n on(eventName : string, handler : Function) : CancelableType {\n let handlerList = handlers[eventName] = handlers[eventName] || [];\n\n handlerList.push(handler);\n\n let cancelled = false;\n\n return {\n cancel() {\n if (!cancelled) {\n cancelled = true;\n handlerList.splice(handlerList.indexOf(handler), 1);\n }\n\n }\n };\n },\n\n once(eventName : string, handler : Function) : CancelableType {\n\n let listener = this.on(eventName, () => {\n listener.cancel();\n handler();\n });\n\n return listener;\n },\n\n trigger(eventName : string, ...args : $ReadOnlyArray) : ZalgoPromise {\n\n let handlerList = handlers[eventName];\n let promises = [];\n\n if (handlerList) {\n for (let handler of handlerList) {\n promises.push(ZalgoPromise.try(() => handler(...args)));\n }\n }\n\n return ZalgoPromise.all(promises).then(noop);\n },\n\n triggerOnce(eventName : string, ...args : $ReadOnlyArray) : ZalgoPromise {\n\n if (triggered[eventName]) {\n return ZalgoPromise.resolve();\n }\n\n triggered[eventName] = true;\n return this.trigger(eventName, ...args);\n }\n };\n}\n\nexport function camelToDasherize(string : string) : string {\n return string.replace(/([A-Z])/g, (g) => {\n return `-${ g.toLowerCase() }`;\n });\n}\n\nexport function dasherizeToCamel(string : string) : string {\n return string.replace(/-([a-z])/g, (g) => {\n return g[1].toUpperCase();\n });\n}\n\nexport function capitalizeFirstLetter(string : string) : string {\n return string.charAt(0).toUpperCase() + string.slice(1).toLowerCase();\n}\n\nexport function get(item : Object, path : string, def : mixed) : mixed {\n\n if (!path) {\n return def;\n }\n\n let pathParts = path.split('.');\n\n // Loop through each section of our key path\n\n for (let i = 0; i < pathParts.length; i++) {\n\n // If we have an object, we can get the key\n if (typeof item === 'object' && item !== null) {\n item = item[pathParts[i]];\n\n // Otherwise, we should return the default (undefined if not provided)\n } else {\n return def;\n }\n }\n\n // If our final result is undefined, we should return the default\n\n return item === undefined ? def : item;\n}\n\nexport function safeTimeout(method : Function, time : number) {\n\n let interval = safeInterval(() => {\n time -= 100;\n if (time <= 0) {\n interval.cancel();\n method();\n }\n }, 100);\n}\n\nexport function defineLazyProp(obj : Object | Array, key : string | number, getter : () => T) {\n if (Array.isArray(obj)) {\n if (typeof key !== 'number') {\n throw new TypeError(`Array key must be number`);\n }\n } else if (typeof obj === 'object' && obj !== null) {\n if (typeof key !== 'string') {\n throw new TypeError(`Object key must be string`);\n }\n }\n \n Object.defineProperty(obj, key, {\n configurable: true,\n enumerable: true,\n get: () => {\n // $FlowFixMe\n delete obj[key];\n let value = getter();\n // $FlowFixMe\n obj[key] = value;\n return value;\n },\n set: (value : T) => {\n // $FlowFixMe\n delete obj[key];\n // $FlowFixMe\n obj[key] = value;\n }\n });\n}\n\nexport function arrayFrom(item : Iterable) : Array { // eslint-disable-line no-undef\n return Array.prototype.slice.call(item);\n}\n\nexport function isObject(item : mixed) : boolean {\n return (typeof item === 'object' && item !== null);\n}\n\nexport function isObjectObject(obj : mixed) : boolean {\n return isObject(obj) && Object.prototype.toString.call(obj) === '[object Object]';\n}\n\nexport function isPlainObject(obj : mixed) : boolean {\n if (!isObjectObject(obj)) {\n return false;\n }\n\n // $FlowFixMe\n let constructor = obj.constructor;\n\n if (typeof constructor !== 'function') {\n return false;\n }\n\n let prototype = constructor.prototype;\n\n if (!isObjectObject(prototype)) {\n return false;\n }\n\n if (!prototype.hasOwnProperty('isPrototypeOf')) {\n return false;\n }\n\n return true;\n}\n\nexport function replaceObject | Object> (item : T, replacer : (mixed, string | number, string) => mixed, fullKey : string = '') : T {\n\n if (Array.isArray(item)) {\n let length = item.length;\n let result : Array = [];\n\n for (let i = 0; i < length; i++) {\n\n \n defineLazyProp(result, i, () => {\n let itemKey = fullKey ? `${ fullKey }.${ i }` : `${ i }`;\n let el = item[i];\n\n let child = replacer(el, i, itemKey);\n\n if (isPlainObject(child) || Array.isArray(child)) {\n // $FlowFixMe\n child = replaceObject(child, replacer, itemKey);\n }\n\n return child;\n });\n }\n\n // $FlowFixMe\n return result;\n } else if (isPlainObject(item)) {\n let result = {};\n\n for (let key in item) {\n if (!item.hasOwnProperty(key)) {\n continue;\n }\n\n defineLazyProp(result, key, () => {\n let itemKey = fullKey ? `${ fullKey }.${ key }` : `${ key }`;\n // $FlowFixMe\n let el = item[key];\n\n let child = replacer(el, key, itemKey);\n\n if (isPlainObject(child) || Array.isArray(child)) {\n // $FlowFixMe\n child = replaceObject(child, replacer, itemKey);\n }\n\n return child;\n });\n }\n\n // $FlowFixMe\n return result;\n } else {\n throw new Error(`Pass an object or array`);\n }\n}\n\n\nexport function copyProp(source : Object, target : Object, name : string, def : mixed) {\n if (source.hasOwnProperty(name)) {\n let descriptor = Object.getOwnPropertyDescriptor(source, name);\n // $FlowFixMe\n Object.defineProperty(target, name, descriptor);\n\n } else {\n target[name] = def;\n }\n}\n\ntype RegexResultType = {\n text : string,\n groups : Array,\n start : number,\n end : number,\n length : number,\n replace : (text : string) => string\n};\n\nexport function regex(pattern : string | RegExp, string : string, start : number = 0) : ?RegexResultType {\n\n if (typeof pattern === 'string') {\n // eslint-disable-next-line security/detect-non-literal-regexp\n pattern = new RegExp(pattern);\n }\n\n let result = string.slice(start).match(pattern);\n\n if (!result) {\n return;\n }\n\n // $FlowFixMe\n let index : number = result.index;\n let regmatch = result[0];\n\n return {\n text: regmatch,\n groups: result.slice(1),\n start: start + index,\n end: start + index + regmatch.length,\n length: regmatch.length,\n\n replace(text : string) : string {\n\n if (!regmatch) {\n return '';\n }\n\n return `${ regmatch.slice(0, start + index) }${ text }${ regmatch.slice(index + regmatch.length) }`;\n }\n };\n}\n\nexport function regexAll(pattern : string | RegExp, string : string) : Array {\n\n let matches = [];\n let start = 0;\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n let regmatch = regex(pattern, string, start);\n\n if (!regmatch) {\n break;\n }\n\n matches.push(regmatch);\n start = match.end;\n }\n\n return matches;\n}\n\nexport function isDefined(value : ?mixed) : boolean {\n return value !== null && value !== undefined;\n}\n\nexport function cycle(method : Function) : ZalgoPromise {\n return ZalgoPromise.try(method).then(() => cycle(method));\n}\n\nexport function debounce(method : (...args : Array) => T, time : number = 100) : (...args : Array) => void {\n\n let timeout;\n\n const debounceWrapper = function() {\n clearTimeout(timeout);\n\n timeout = setTimeout(() => {\n return method.apply(this, arguments);\n }, time);\n };\n\n return setFunctionName(debounceWrapper, `${ getFunctionName(method) }::debounced`);\n}\n\nexport function isRegex(item : mixed) : boolean {\n return Object.prototype.toString.call(item) === '[object RegExp]';\n}\n\ntype FunctionProxy = (method : T) => T;\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport let weakMapMemoize : FunctionProxy<*> = (method : (arg : any) => R) : ((...args : Array) => R) => {\n\n let weakmap = new WeakMap();\n\n // eslint-disable-next-line flowtype/no-weak-types\n return function weakmapMemoized(arg : any) : R {\n return weakmap.getOrSet(arg, () => method.call(this, arg));\n };\n};\n\ntype FunctionPromiseProxy) => ZalgoPromise> = (T) => T;\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport let weakMapMemoizePromise : FunctionPromiseProxy<*, *> = (method : (arg : any) => ZalgoPromise) : ((...args : Array) => ZalgoPromise) => {\n\n let weakmap = new WeakMap();\n\n // eslint-disable-next-line flowtype/no-weak-types\n return function weakmapMemoizedPromise(arg : any) : ZalgoPromise {\n return weakmap.getOrSet(arg, () =>\n method.call(this, arg).finally(() => {\n weakmap.delete(arg);\n })\n );\n };\n};\n\nexport function getOrSet(obj : O, key : string, getter : () => T) : T {\n if (obj.hasOwnProperty(key)) {\n return obj[key];\n }\n\n const val = getter();\n obj[key] = val;\n return val;\n}\n\nexport type CleanupType = {|\n set : (string, T) => T, // eslint-disable-line no-undef\n register : (Function) => void,\n all : () => ZalgoPromise\n|};\n\nexport function cleanup(obj : Object) : CleanupType {\n\n const tasks = [];\n let cleaned = false;\n\n return {\n set(name : string, item : T) : T {\n if (!cleaned) {\n obj[name] = item;\n this.register(() => {\n delete obj[name];\n });\n }\n return item;\n },\n\n register(method : Function) {\n if (cleaned) {\n method();\n } else {\n tasks.push(once(method));\n }\n },\n\n all() : ZalgoPromise {\n const results = [];\n cleaned = true;\n\n while (tasks.length) {\n const task = tasks.pop();\n results.push(task());\n }\n\n return ZalgoPromise.all(results).then(noop);\n }\n };\n}\n\nexport function tryCatch(fn : () => T) : {| result : T, error : void |} | {| result : void, error : mixed |} {\n let result;\n let error;\n\n try {\n result = fn();\n } catch (err) {\n error = err;\n }\n \n // $FlowFixMe\n return { result, error };\n}\n\nexport function removeFromArray>(arr : T, item : X) {\n const index = arr.indexOf(item);\n if (index !== -1) {\n arr.splice(index, 1);\n }\n}\n\nexport function assertExists(name : string, thing : void | null | T) : T {\n if (thing === null || typeof thing === 'undefined') {\n throw new Error(`Expected ${ name } to be present`);\n }\n \n return thing;\n}\n \nexport function unique(arr : $ReadOnlyArray) : $ReadOnlyArray {\n const result = {};\n for (const item of arr) {\n // eslint-disable-next-line const-immutable/no-mutation\n result[item] = true;\n }\n return Object.keys(result);\n}\n","/* @flow */\n\nexport const KEY_CODES = {\n ENTER: 13\n};\n","/* @flow */\n/* eslint max-lines: off */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { linkFrameWindow, isWindowClosed,\n type SameDomainWindowType, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\n\nimport { inlineMemoize, noop, stringify, capitalizeFirstLetter,\n once, extend, safeInterval, uniqueID, arrayFrom } from './util';\nimport { isDevice } from './device';\nimport { KEY_CODES } from './constants';\nimport type { CancelableType } from './types';\n\ntype ElementRefType = string | HTMLElement;\n\nexport function isDocumentReady() : boolean {\n return Boolean(document.body) && document.readyState === 'complete';\n}\n\nexport function urlEncode(str : string) : string {\n return str.replace(/\\?/g, '%3F').replace(/&/g, '%26').replace(/#/g, '%23').replace(/\\+/g, '%2B');\n}\n\nexport function waitForWindowReady() : ZalgoPromise {\n return inlineMemoize(waitForWindowReady, () : ZalgoPromise => {\n return new ZalgoPromise(resolve => {\n if (isDocumentReady()) {\n resolve();\n }\n\n window.addEventListener('load', () => resolve());\n });\n });\n}\n\nexport function waitForDocumentReady() : ZalgoPromise {\n return inlineMemoize(waitForDocumentReady, () : ZalgoPromise => {\n return new ZalgoPromise(resolve => {\n\n if (isDocumentReady()) {\n return resolve();\n }\n\n let interval = setInterval(() => {\n if (isDocumentReady()) {\n clearInterval(interval);\n return resolve();\n }\n }, 10);\n });\n });\n}\n\nexport function waitForDocumentBody() : ZalgoPromise {\n return waitForDocumentReady().then(() => {\n if (document.body) {\n return document.body;\n }\n\n throw new Error('Document ready but document.body not present');\n });\n}\n\nexport function parseQuery(queryString : string) : Object {\n return inlineMemoize(parseQuery, () : Object => {\n let params = {};\n\n if (!queryString) {\n return params;\n }\n\n if (queryString.indexOf('=') === -1) {\n return params;\n }\n\n for (let pair of queryString.split('&')) {\n pair = pair.split('=');\n\n if (pair[0] && pair[1]) {\n params[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n }\n\n return params;\n }, [ queryString ]);\n}\n\n\nexport function getQueryParam(name : string) : string {\n return parseQuery(window.location.search.slice(1))[name];\n}\n\nexport function urlWillRedirectPage(url : string) : boolean {\n\n if (url.indexOf('#') === -1) {\n return true;\n }\n\n if (url.indexOf('#') === 0) {\n return false;\n }\n\n if (url.split('#')[0] === window.location.href.split('#')[0]) {\n return false;\n }\n\n return true;\n}\n\nexport function formatQuery(obj : { [ string ] : string } = {}) : string {\n\n return Object.keys(obj).filter(key => {\n return typeof obj[key] === 'string';\n }).map(key => {\n return `${ urlEncode(key) }=${ urlEncode(obj[key]) }`;\n }).join('&');\n}\n\nexport function extendQuery(originalQuery : string, props : { [ string ] : string } = {}) : string {\n\n if (!props || !Object.keys(props).length) {\n return originalQuery;\n }\n\n return formatQuery({\n ...parseQuery(originalQuery),\n ...props\n });\n}\n\nexport function extendUrl(url : string, options : { query? : { [string] : string }, hash? : { [string] : string } } = {}) : string {\n\n let query = options.query || {};\n let hash = options.hash || {};\n\n let originalUrl;\n let originalQuery;\n let originalHash;\n\n [ originalUrl, originalHash ] = url.split('#');\n [ originalUrl, originalQuery ] = originalUrl.split('?');\n\n let queryString = extendQuery(originalQuery, query);\n let hashString = extendQuery(originalHash, hash);\n\n if (queryString) {\n originalUrl = `${ originalUrl }?${ queryString }`;\n }\n\n if (hashString) {\n originalUrl = `${ originalUrl }#${ hashString }`;\n }\n\n return originalUrl;\n}\n\nexport function redirect(url : string, win : CrossDomainWindowType = window) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n win.location = url;\n if (!urlWillRedirectPage(url)) {\n resolve();\n }\n });\n}\n\nexport function hasMetaViewPort() : boolean {\n let meta = document.querySelector('meta[name=viewport]');\n\n if (isDevice() && window.screen.width < 660 && !meta) {\n return false;\n }\n\n return true;\n}\n\nexport function isElementVisible(el : HTMLElement) : boolean {\n return Boolean(el.offsetWidth || el.offsetHeight || el.getClientRects().length);\n}\n\nexport function enablePerformance() : boolean {\n return inlineMemoize(enablePerformance, () : boolean => {\n /* eslint-disable compat/compat */\n return Boolean(\n window.performance &&\n performance.now &&\n performance.timing &&\n performance.timing.connectEnd &&\n performance.timing.navigationStart &&\n (Math.abs(performance.now() - Date.now()) > 1000) &&\n (performance.now() - (performance.timing.connectEnd - performance.timing.navigationStart)) > 0\n );\n /* eslint-enable compat/compat */\n });\n}\n\nexport function getPageRenderTime() : ZalgoPromise {\n return waitForDocumentReady().then(() => {\n\n if (!enablePerformance()) {\n return;\n }\n\n let timing = window.performance.timing;\n\n if (timing.connectEnd && timing.domInteractive) {\n return timing.domInteractive - timing.connectEnd;\n }\n });\n}\n\nexport function htmlEncode(html : string = '') : string {\n return html.toString()\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(/\\//g, '/');\n}\n\nexport function isBrowser() : boolean {\n return (typeof window !== 'undefined');\n}\n\nexport function querySelectorAll(selector : string, doc : HTMLElement = window.document) : Array {\n return Array.prototype.slice.call(doc.querySelectorAll(selector));\n}\n\nexport function onClick(element : HTMLElement, handler : (Event) => void) {\n element.addEventListener('touchstart', noop);\n element.addEventListener('click', handler);\n element.addEventListener('keypress', (event : Event) => {\n // $FlowFixMe\n if (event.keyCode === KEY_CODES.ENTER) {\n return handler(event);\n }\n });\n}\n\nexport function getScript({ host = window.location.host, path } : { host? : string, path : string }) : ?HTMLScriptElement {\n return inlineMemoize(getScript, () : ?HTMLScriptElement => {\n\n let url = `${ host }${ path }`;\n let scripts = Array.prototype.slice.call(document.getElementsByTagName('script'));\n\n for (let script of scripts) {\n if (!script.src) {\n continue;\n }\n\n let src = script.src.replace(/^https?:\\/\\//, '').split('?')[0];\n\n if (src === url) {\n return script;\n }\n }\n }, [ path ]);\n}\n\nexport function isLocalStorageEnabled() : boolean {\n return inlineMemoize(isLocalStorageEnabled, () => {\n try {\n if (typeof window === 'undefined') {\n return false;\n }\n\n if (window.localStorage) {\n let value = Math.random().toString();\n window.localStorage.setItem('__test__localStorage__', value);\n let result = window.localStorage.getItem('__test__localStorage__');\n window.localStorage.removeItem('__test__localStorage__');\n if (value === result) {\n return true;\n }\n }\n } catch (err) {\n // pass\n }\n return false;\n });\n}\n\nexport function getBrowserLocales() : Array<{ country? : string, lang : string }> {\n let nav = window.navigator;\n\n let locales = nav.languages\n ? Array.prototype.slice.apply(nav.languages)\n : [];\n\n if (nav.language) {\n locales.push(nav.language);\n }\n\n if (nav.userLanguage) {\n locales.push(nav.userLanguage);\n }\n\n return locales.map(locale => {\n\n if (locale && locale.match(/^[a-z]{2}[-_][A-Z]{2}$/)) {\n let [ lang, country ] = locale.split(/[-_]/);\n return { country, lang };\n }\n\n if (locale && locale.match(/^[a-z]{2}$/)) {\n return { lang: locale };\n }\n\n return null;\n\n }).filter(Boolean);\n}\n\n\nexport function appendChild(container : HTMLElement, child : HTMLElement | Text) {\n container.appendChild(child);\n}\n\nexport function isElement(element : mixed) : boolean {\n\n if (element instanceof window.Element) {\n return true;\n }\n\n if (element !== null && typeof element === 'object' && element.nodeType === 1 && typeof element.style === 'object' && typeof element.ownerDocument === 'object') {\n return true;\n }\n\n return false;\n}\n\nexport function getElementSafe(id : ElementRefType, doc : Document | HTMLElement = document) : ?HTMLElement {\n\n if (isElement(id)) {\n // $FlowFixMe\n return id;\n }\n\n if (typeof id === 'string') {\n return doc.querySelector(id);\n }\n}\n\nexport function getElement(id : ElementRefType, doc : Document | HTMLElement = document) : HTMLElement {\n\n let element = getElementSafe(id, doc);\n\n if (element) {\n return element;\n }\n\n throw new Error(`Can not find element: ${ stringify(id) }`);\n}\n\nexport function elementReady(id : ElementRefType) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n let name = stringify(id);\n let el = getElementSafe(id);\n\n if (el) {\n return resolve(el);\n }\n\n if (isDocumentReady()) {\n return reject(new Error(`Document is ready and element ${ name } does not exist`));\n }\n\n let interval = setInterval(() => {\n\n el = getElementSafe(id);\n\n if (el) {\n clearInterval(interval);\n return resolve(el);\n }\n\n if (isDocumentReady()) {\n clearInterval(interval);\n return reject(new Error(`Document is ready and element ${ name } does not exist`));\n }\n }, 10);\n });\n}\n\nexport function PopupOpenError(message : string) {\n this.message = message;\n}\n\nPopupOpenError.prototype = Object.create(Error.prototype);\n\ntype PopupOptions = {|\n name? : string,\n width? : number,\n height? : number,\n top? : number,\n left? : number,\n status? : 0 | 1,\n resizable? : 0 | 1,\n toolbar? : 0 | 1,\n menubar? : 0 | 1,\n scrollbars? : 0 | 1\n|};\n\nexport function popup(url : string, options? : PopupOptions) : CrossDomainWindowType {\n\n // $FlowFixMe\n options = options || {};\n\n let { width, height } = options;\n\n let top = 0;\n let left = 0;\n\n if (width) {\n if (window.outerWidth) {\n left = Math.round((window.outerWidth - width) / 2) + window.screenX;\n } else if (window.screen.width) {\n left = Math.round((window.screen.width - width) / 2);\n }\n }\n\n if (height) {\n if (window.outerHeight) {\n top = Math.round((window.outerHeight - height) / 2) + window.screenY;\n } else if (window.screen.height) {\n top = Math.round((window.screen.height - height) / 2);\n }\n }\n\n if (width && height) {\n options = {\n top,\n left,\n width,\n height,\n status: 1,\n toolbar: 0,\n menubar: 0,\n resizable: 1,\n scrollbars: 1,\n ...options\n };\n }\n\n let name = options.name || '';\n delete options.name;\n\n // eslint-disable-next-line array-callback-return\n let params = Object.keys(options).map(key => {\n // $FlowFixMe\n if (options[key] !== null && options[key] !== undefined) {\n return `${ key }=${ stringify(options[key]) }`;\n }\n }).filter(Boolean).join(',');\n\n let win;\n\n try {\n win = window.open(url, name, params, true);\n } catch (err) {\n throw new PopupOpenError(`Can not open popup window - ${ err.stack || err.message }`);\n }\n\n if (isWindowClosed(win)) {\n let err = new PopupOpenError(`Can not open popup window - blocked`);\n throw err;\n }\n\n window.addEventListener('unload', () => win.close());\n\n return win;\n}\n\n\nexport function writeToWindow(win : SameDomainWindowType, html : string) {\n try {\n win.document.open();\n win.document.write(html);\n win.document.close();\n } catch (err) {\n try {\n win.location = `javascript: document.open(); document.write(${ JSON.stringify(html) }); document.close();`;\n } catch (err2) {\n // pass\n }\n }\n}\n\nexport function writeElementToWindow(win : SameDomainWindowType, el : HTMLElement) {\n\n let tag = el.tagName.toLowerCase();\n\n if (tag !== 'html') {\n throw new Error(`Expected element to be html, got ${ tag }`);\n }\n\n let documentElement = win.document.documentElement;\n\n for (const child of arrayFrom(documentElement.children)) {\n documentElement.removeChild(child);\n }\n\n for (const child of arrayFrom(el.children)) {\n documentElement.appendChild(child);\n }\n}\n\nexport function setStyle(el : HTMLElement, styleText : string, doc : Document = window.document) {\n // $FlowFixMe\n if (el.styleSheet) {\n // $FlowFixMe\n el.styleSheet.cssText = styleText;\n } else {\n el.appendChild(doc.createTextNode(styleText));\n }\n}\n\nexport type ElementOptionsType = {\n style? : { [ string ] : string },\n id? : string,\n class? : ?Array,\n attributes? : { [ string ] : string },\n styleSheet? : ?string,\n html? : ?string\n};\n\nlet awaitFrameLoadPromises : WeakMap>;\n\nexport function awaitFrameLoad(frame : HTMLIFrameElement) : ZalgoPromise {\n awaitFrameLoadPromises = awaitFrameLoadPromises || new WeakMap();\n\n if (awaitFrameLoadPromises.has(frame)) {\n let promise = awaitFrameLoadPromises.get(frame);\n if (promise) {\n return promise;\n }\n }\n\n let promise = new ZalgoPromise((resolve, reject) => {\n frame.addEventListener('load', () => {\n linkFrameWindow(frame);\n resolve(frame);\n });\n\n frame.addEventListener('error', (err : Event) => {\n if (frame.contentWindow) {\n resolve(frame);\n } else {\n reject(err);\n }\n });\n });\n\n awaitFrameLoadPromises.set(frame, promise);\n\n return promise;\n}\n\nexport function awaitFrameWindow(frame : HTMLIFrameElement) : ZalgoPromise {\n return awaitFrameLoad(frame).then(loadedFrame => {\n\n if (!loadedFrame.contentWindow) {\n throw new Error(`Could not find window in iframe`);\n }\n\n return loadedFrame.contentWindow;\n });\n}\n\nexport function createElement(tag : string = 'div', options : ElementOptionsType = {}, container : ?HTMLElement) : HTMLElement {\n\n tag = tag.toLowerCase();\n let element = document.createElement(tag);\n\n if (options.style) {\n extend(element.style, options.style);\n }\n\n if (options.class) {\n element.className = options.class.join(' ');\n }\n\n if (options.id) {\n element.setAttribute('id', options.id);\n }\n\n if (options.attributes) {\n for (let key of Object.keys(options.attributes)) {\n element.setAttribute(key, options.attributes[key]);\n }\n }\n\n if (options.styleSheet) {\n setStyle(element, options.styleSheet);\n }\n\n if (container) {\n appendChild(container, element);\n }\n\n if (options.html) {\n if (tag === 'iframe') {\n // $FlowFixMe\n if (!container || !element.contentWindow) {\n throw new Error(`Iframe html can not be written unless container provided and iframe in DOM`);\n }\n\n // $FlowFixMe\n writeToWindow(element.contentWindow, options.html);\n\n } else {\n element.innerHTML = options.html;\n }\n }\n\n return element;\n}\n\n\nexport type IframeElementOptionsType = {\n style? : { [ string ] : string },\n class? : ?Array,\n attributes? : { [ string ] : string },\n styleSheet? : ?string,\n html? : ?string,\n url? : ?string\n};\n\nexport function iframe(options : IframeElementOptionsType = {}, container : ?HTMLElement) : HTMLIFrameElement {\n\n let attributes = options.attributes || {};\n let style = options.style || {};\n\n let frame = createElement('iframe', {\n attributes: {\n allowTransparency: 'true',\n ...attributes\n },\n style: {\n backgroundColor: 'transparent',\n border: 'none',\n ...style\n },\n html: options.html,\n class: options.class\n });\n\n const isIE = window.navigator.userAgent.match(/MSIE|Edge/i);\n \n if (!frame.hasAttribute('id')) {\n frame.setAttribute('id', uniqueID());\n }\n\n // $FlowFixMe\n awaitFrameLoad(frame);\n\n if (container) {\n let el = getElement(container);\n el.appendChild(frame);\n }\n\n if (options.url || isIE) {\n frame.setAttribute('src', options.url || 'about:blank');\n }\n\n // $FlowFixMe\n return frame;\n}\n\nexport function addEventListener(obj : HTMLElement, event : string, handler : (event : Event) => void) : CancelableType {\n obj.addEventListener(event, handler);\n return {\n cancel() {\n obj.removeEventListener(event, handler);\n }\n };\n}\n\nexport function bindEvents(element : HTMLElement, eventNames : Array, handler : (event : Event) => void) : CancelableType {\n\n handler = once(handler);\n\n for (let eventName of eventNames) {\n element.addEventListener(eventName, handler);\n }\n\n return {\n cancel: once(() => {\n for (let eventName of eventNames) {\n element.removeEventListener(eventName, handler);\n }\n })\n };\n}\n\nconst VENDOR_PREFIXES = [ 'webkit', 'moz', 'ms', 'o' ];\n\nexport function setVendorCSS(element : HTMLElement, name : string, value : string) {\n\n // $FlowFixMe\n element.style[name] = value;\n\n let capitalizedName = capitalizeFirstLetter(name);\n\n for (let prefix of VENDOR_PREFIXES) {\n // $FlowFixMe\n element.style[`${ prefix }${ capitalizedName }`] = value;\n }\n}\n\nconst ANIMATION_START_EVENTS = [ 'animationstart', 'webkitAnimationStart', 'oAnimationStart', 'MSAnimationStart' ];\nconst ANIMATION_END_EVENTS = [ 'animationend', 'webkitAnimationEnd', 'oAnimationEnd', 'MSAnimationEnd' ];\n\nexport function animate(element : ElementRefType, name : string, clean : (Function) => void, timeout : number = 1000) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n let el = getElement(element);\n\n if (!el) {\n return resolve();\n }\n\n let hasStarted = false;\n\n let startTimeout;\n let endTimeout;\n let startEvent;\n let endEvent;\n\n function cleanUp() {\n clearTimeout(startTimeout);\n clearTimeout(endTimeout);\n startEvent.cancel();\n endEvent.cancel();\n }\n\n startEvent = bindEvents(el, ANIMATION_START_EVENTS, event => {\n\n // $FlowFixMe\n if (event.target !== el || event.animationName !== name) {\n return;\n }\n\n clearTimeout(startTimeout);\n\n event.stopPropagation();\n\n startEvent.cancel();\n hasStarted = true;\n\n endTimeout = setTimeout(() => {\n cleanUp();\n resolve();\n }, timeout);\n });\n\n endEvent = bindEvents(el, ANIMATION_END_EVENTS, event => {\n\n // $FlowFixMe\n if (event.target !== el || event.animationName !== name) {\n return;\n }\n\n cleanUp();\n\n // $FlowFixMe\n if (typeof event.animationName === 'string' && event.animationName !== name) {\n return reject(`Expected animation name to be ${ name }, found ${ event.animationName }`);\n }\n\n return resolve();\n });\n\n setVendorCSS(el, 'animationName', name);\n\n startTimeout = setTimeout(() => {\n if (!hasStarted) {\n cleanUp();\n return resolve();\n }\n }, 200);\n\n if (clean) {\n clean(cleanUp);\n }\n });\n}\n\nconst STYLE = {\n\n DISPLAY: {\n NONE: 'none',\n BLOCK: 'block'\n },\n\n VISIBILITY: {\n VISIBLE: 'visible',\n HIDDEN: 'hidden'\n },\n\n IMPORTANT: 'important'\n};\n\nexport function makeElementVisible(element : HTMLElement) {\n element.style.setProperty('visibility', '');\n}\n\nexport function makeElementInvisible(element : HTMLElement) {\n element.style.setProperty('visibility', STYLE.VISIBILITY.HIDDEN, STYLE.IMPORTANT);\n}\n\n\nexport function showElement(element : HTMLElement) {\n element.style.setProperty('display', '');\n}\n\nexport function hideElement(element : HTMLElement) {\n element.style.setProperty('display', STYLE.DISPLAY.NONE, STYLE.IMPORTANT);\n}\n\nexport function destroyElement(element : HTMLElement) {\n if (element && element.parentNode) {\n element.parentNode.removeChild(element);\n }\n}\n\nexport function showAndAnimate(element : HTMLElement, name : string, clean : (Function) => void) : ZalgoPromise {\n let animation = animate(element, name, clean);\n showElement(element);\n return animation;\n}\n\nexport function animateAndHide(element : HTMLElement, name : string, clean : (Function) => void) : ZalgoPromise {\n return animate(element, name, clean).then(() => {\n hideElement(element);\n });\n}\n\nexport function addClass(element : HTMLElement, name : string) {\n element.classList.add(name);\n}\n\nexport function removeClass(element : HTMLElement, name : string) {\n element.classList.remove(name);\n}\n\nexport function isElementClosed(el : HTMLElement) : boolean {\n if (!el || !el.parentNode) {\n return true;\n }\n return false;\n}\n\nexport function watchElementForClose(element : HTMLElement, handler : () => mixed) : CancelableType {\n handler = once(handler);\n\n let interval;\n\n if (isElementClosed(element)) {\n handler();\n } else {\n interval = safeInterval(() => {\n if (isElementClosed(element)) {\n interval.cancel();\n handler();\n }\n }, 50);\n }\n\n return {\n cancel() {\n if (interval) {\n interval.cancel();\n }\n }\n };\n}\n\nexport function fixScripts(el : HTMLElement, doc : Document = window.document) {\n for (let script of querySelectorAll('script', el)) {\n let parentNode = script.parentNode;\n\n if (!parentNode) {\n continue;\n }\n\n let newScript = doc.createElement('script');\n newScript.text = script.textContent;\n parentNode.replaceChild(newScript, script);\n }\n}\n\ntype OnResizeOptions = {|\n width? : boolean,\n height? : boolean,\n interval? : number,\n win? : SameDomainWindowType\n|};\n\nexport function onResize(el : HTMLElement, handler : ({ width : number, height : number }) => void, { width = true, height = true, interval = 100, win = window } : OnResizeOptions = {}) : {} {\n let currentWidth = el.offsetWidth;\n let currentHeight = el.offsetHeight;\n\n handler({ width: currentWidth, height: currentHeight });\n\n let check = () => {\n let newWidth = el.offsetWidth;\n let newHeight = el.offsetHeight;\n\n if ((width && newWidth !== currentWidth) || (height && newHeight !== currentHeight)) {\n handler({ width: newWidth, height: newHeight });\n }\n\n currentWidth = newWidth;\n currentHeight = newHeight;\n };\n\n let observer;\n let timeout;\n\n if (typeof win.ResizeObserver !== 'undefined') {\n observer = new win.ResizeObserver(check);\n observer.observe(el);\n\n } else if (typeof win.MutationObserver !== 'undefined') {\n observer = new win.MutationObserver(check);\n observer.observe(el, {\n attributes: true,\n childList: true,\n subtree: true,\n characterData: false\n });\n win.addEventListener('resize', check);\n } else {\n let loop = () => {\n check();\n timeout = setTimeout(loop, interval);\n };\n loop();\n }\n\n return {\n cancel: () => {\n observer.disconnect();\n window.removeEventListener('resize', check);\n clearTimeout(timeout);\n }\n };\n}\n\nexport function getResourceLoadTime(url : string) : ?number {\n\n if (!enablePerformance()) {\n return;\n }\n\n if (!window.performance || typeof window.performance.getEntries !== 'function') {\n return;\n }\n\n const entries = window.performance.getEntries();\n\n for (let i = 0; i < entries.length; i++) {\n const entry = entries[i];\n\n if (entry && entry.name && entry.name.indexOf(url) === 0 && typeof entry.duration === 'number') {\n return Math.floor(entry.duration);\n }\n }\n}\n","/* @flow */\n\nimport { uniqueID, getGlobal, inlineMemoize } from './util';\nimport { isLocalStorageEnabled } from './dom';\n\ntype Getter = (handler : (Object) => T) => T;\n\nexport type Storage = {\n getState : Getter<*>,\n getID : () => string,\n getSessionState : Getter<*>,\n getSessionID : () => string\n};\n\nconst DEFAULT_SESSION_STORAGE = 20 * 60 * 1000;\n\nexport function getStorage({ name, lifetime = DEFAULT_SESSION_STORAGE } : { name : string, lifetime? : number }) : Storage {\n return inlineMemoize(getStorage, () => {\n const STORAGE_KEY = `__${ name }_storage__`;\n\n let accessedStorage;\n\n function getState(handler : (storage : Object) => T) : T {\n\n let localStorageEnabled = isLocalStorageEnabled();\n let storage;\n\n if (accessedStorage) {\n storage = accessedStorage;\n }\n\n if (!storage && localStorageEnabled) {\n let rawStorage = window.localStorage.getItem(STORAGE_KEY);\n\n if (rawStorage) {\n storage = JSON.parse(rawStorage);\n }\n }\n\n if (!storage) {\n storage = getGlobal()[STORAGE_KEY];\n }\n\n if (!storage) {\n storage = {\n id: uniqueID()\n };\n }\n\n if (!storage.id) {\n storage.id = uniqueID();\n }\n\n accessedStorage = storage;\n\n let result = handler(storage);\n\n if (localStorageEnabled) {\n window.localStorage.setItem(STORAGE_KEY, JSON.stringify(storage));\n } else {\n getGlobal()[STORAGE_KEY] = storage;\n }\n\n accessedStorage = null;\n\n return result;\n }\n\n function getID() : string {\n return getState(storage => storage.id);\n }\n\n function getSession(handler : (state : Object) => T) : T {\n return getState(storage => {\n\n let session = storage.__session__;\n let now = Date.now();\n\n if (session && ((now - session.created) > lifetime)) {\n session = null;\n }\n\n if (!session) {\n session = {\n guid: uniqueID(),\n created: now\n };\n }\n\n storage.__session__ = session;\n\n return handler(session);\n });\n }\n\n function getSessionState(handler : (state : Object) => T) : T {\n return getSession(session => {\n session.state = session.state || {};\n return handler(session.state);\n });\n }\n\n function getSessionID() : string {\n return getSession(session => session.guid);\n }\n\n return {\n getState,\n getID,\n getSessionState,\n getSessionID\n };\n }, [ { name, lifetime } ]);\n}\n","/* @flow */\n\nimport { noop } from './util';\nimport { getStorage } from './storage';\n\nfunction getBelterExperimentStorage() : Object {\n return getStorage({ name: 'belter_experiment' });\n}\n\nfunction isEventUnique(name : string) : boolean {\n return getBelterExperimentStorage().getSessionState(state => {\n state.loggedBeacons = state.loggedBeacons || [];\n\n if (state.loggedBeacons.indexOf(name) === -1) {\n state.loggedBeacons.push(name);\n return true;\n }\n\n return false;\n });\n}\n\nexport type Experiment = {\n isEnabled : () => boolean,\n isDisabled : () => boolean,\n getTreatment : () => string,\n log : (string, payload? : { [string] : ?string }) => Experiment,\n logStart : (payload? : { [string] : ?string }) => Experiment,\n logComplete : (payload? : { [string] : ?string }) => Experiment\n};\n\nfunction getThrottlePercentile(name : string) : number {\n return getBelterExperimentStorage().getState(state => {\n state.throttlePercentiles = state.throttlePercentiles || {};\n state.throttlePercentiles[name] = state.throttlePercentiles[name] || Math.floor(Math.random() * 100);\n return state.throttlePercentiles[name];\n });\n}\n\nconst THROTTLE_GROUP = {\n TEST: 'test',\n CONTROL: 'control',\n THROTTLE: 'throttle'\n};\n\ntype ExperimentOptions = {\n name : string,\n sample? : number,\n logTreatment? : ({ name : string, treatment : string, payload : { [string] : ?string } }) => void,\n logCheckpoint? : ({ name : string, treatment : string, checkpoint : string, payload : { [string] : ?string } }) => void\n};\n\nexport function experiment({ name, sample = 50, logTreatment = noop, logCheckpoint = noop } : ExperimentOptions) : Experiment {\n\n let throttle = getThrottlePercentile(name);\n\n let group;\n\n if (throttle < sample) {\n group = THROTTLE_GROUP.TEST;\n } else if ((sample >= 50) || ((sample <= throttle) && (throttle < (sample * 2)))) {\n group = THROTTLE_GROUP.CONTROL;\n } else {\n group = THROTTLE_GROUP.THROTTLE;\n }\n\n let treatment = `${ name }_${ group }`;\n\n let started = false;\n let forced = false;\n\n try {\n if (window.localStorage && window.localStorage.getItem(name)) {\n forced = true;\n }\n } catch (err) {\n // pass\n }\n\n return {\n\n isEnabled() : boolean {\n return (group === THROTTLE_GROUP.TEST) || forced;\n },\n\n isDisabled() : boolean {\n return (group !== THROTTLE_GROUP.TEST) && !forced;\n },\n\n getTreatment() : string {\n return treatment;\n },\n\n log(checkpoint : string, payload? : { [string] : ?string } = {}) : Experiment {\n if (!started) {\n return this;\n }\n\n if (isEventUnique(`${ name }_${ treatment }_${ JSON.stringify(payload) }`)) {\n logTreatment({ name, treatment, payload });\n }\n\n if (isEventUnique(`${ name }_${ treatment }_${ checkpoint }_${ JSON.stringify(payload) }`)) {\n logCheckpoint({ name, treatment, checkpoint, payload });\n }\n\n return this;\n },\n\n logStart(payload? : { [string] : ?string } = {}) : Experiment {\n started = true;\n return this.log(`start`, payload);\n },\n\n logComplete(payload? : { [string] : ?string } = {}) : Experiment {\n return this.log(`complete`, payload);\n }\n };\n}\n","/* @flow */\n\nimport { getGlobal } from './util';\n\nexport function getGlobalNameSpace({ name, version = 'latest' } : { name : string, version? : string }) : { get : (string, defValue? : T) => T } {\n\n let global = getGlobal();\n let globalKey = `__${ name }__${ version }_global__`;\n\n let namespace = global[globalKey] = global[globalKey] || {};\n\n return {\n get: (key : string, defValue? : T) : T => {\n // $FlowFixMe\n defValue = defValue || {};\n let item = namespace[key] = namespace[key] || defValue;\n return item;\n }\n };\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { type SameDomainWindowType } from 'cross-domain-utils/src';\n\ntype RequestOptionsType = {\n url : string,\n method? : string,\n headers? : { [key : string] : string },\n json? : $ReadOnlyArray | Object,\n data? : { [key : string] : string },\n body? : string,\n win? : SameDomainWindowType,\n timeout? : number\n};\n\ntype ResponseType = {\n status : number,\n headers : { [string] : string },\n body : Object\n};\n\nconst HEADERS = {\n CONTENT_TYPE: 'content-type',\n ACCEPT: 'accept'\n};\n\nlet headerBuilders = [];\n\nfunction parseHeaders(rawHeaders : string = '') : { [string] : string } {\n let result = {};\n for (let line of rawHeaders.trim().split('\\n')) {\n let [ key, ...values ] = line.split(':');\n result[key.toLowerCase()] = values.join(':').trim();\n }\n return result;\n}\n\nexport function request({ url, method = 'get', headers = {}, json, data, body, win = window, timeout = 0 } : RequestOptionsType) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n if ((json && data) || (json && body) || (data && json)) {\n throw new Error(`Only options.json or options.data or options.body should be passed`);\n }\n\n let normalizedHeaders = {};\n\n for (let key of Object.keys(headers)) {\n normalizedHeaders[key.toLowerCase()] = headers[key];\n }\n\n if (json) {\n normalizedHeaders[HEADERS.CONTENT_TYPE] = normalizedHeaders[HEADERS.CONTENT_TYPE] || 'application/json';\n } else if (data || body) {\n normalizedHeaders[HEADERS.CONTENT_TYPE] = normalizedHeaders[HEADERS.CONTENT_TYPE] || 'application/x-www-form-urlencoded; charset=utf-8';\n }\n\n normalizedHeaders[HEADERS.ACCEPT] = normalizedHeaders[HEADERS.ACCEPT] || 'application/json';\n\n for (let headerBuilder of headerBuilders) {\n let builtHeaders = headerBuilder();\n\n for (let key of Object.keys(builtHeaders)) {\n normalizedHeaders[key.toLowerCase()] = builtHeaders[key];\n }\n }\n\n let xhr = new win.XMLHttpRequest();\n\n xhr.addEventListener('load', function xhrLoad() : void {\n\n let responseHeaders = parseHeaders(this.getAllResponseHeaders());\n\n if (!this.status) {\n return reject(new Error(`Request to ${ method.toLowerCase() } ${ url } failed: no response status code.`));\n }\n \n let contentType = responseHeaders['content-type'];\n let isJSON = contentType && (contentType.indexOf('application/json') === 0 || contentType.indexOf('text/json') === 0);\n let responseBody = this.responseText;\n\n try {\n responseBody = JSON.parse(responseBody);\n } catch (err) {\n if (isJSON) {\n return reject(new Error(`Invalid json: ${ this.responseText }.`));\n }\n }\n\n let res = {\n status: this.status,\n headers: responseHeaders,\n body: responseBody\n };\n\n return resolve(res);\n\n }, false);\n\n xhr.addEventListener('error', (evt) => {\n reject(new Error(`Request to ${ method.toLowerCase() } ${ url } failed: ${ evt.toString() }.`));\n }, false);\n\n xhr.open(method, url, true);\n\n for (let key in normalizedHeaders) {\n if (normalizedHeaders.hasOwnProperty(key)) {\n xhr.setRequestHeader(key, normalizedHeaders[key]);\n }\n }\n\n if (json) {\n body = JSON.stringify(json);\n } else if (data) {\n body = Object.keys(data).map(key => {\n return `${ encodeURIComponent(key) }=${ data ? encodeURIComponent(data[key]) : '' }`;\n }).join('&');\n }\n\n xhr.timeout = timeout;\n xhr.ontimeout = function xhrTimeout() {\n reject(new Error(`Request to ${ method.toLowerCase() } ${ url } has timed out`));\n };\n\n xhr.send(body);\n });\n}\n\nexport function addHeaderBuilder(method : () => { [string] : string }) {\n headerBuilders.push(method);\n}\n","/* @flow */\n\n// export something to force webpack to see this as an ES module\nexport const TYPES = true;\n\ndeclare var __TEST__ : boolean;\n\nexport type JSONPrimitive = string | boolean | number;\nexport type JSONObject = { [string] : JSONPrimitive | JSONObject } | Array;\nexport type JSONType = JSONObject | JSONPrimitive;\n\nexport type CancelableType = {\n cancel : () => void\n};\n","/* @flow */\n\nimport { memoize, promisify } from './util';\n\nexport function memoized(target : Object, name : string, descriptor : Object) {\n descriptor.value = memoize(descriptor.value, { name, thisNamespace: true });\n}\n\nexport function promise(target : Object, name : string, descriptor : Object) {\n descriptor.value = promisify(descriptor.value, { name });\n}\n","/* @flow */\n\nexport function isPerc(str : string) : boolean {\n return typeof str === 'string' && (/^[0-9]+%$/).test(str);\n}\n\nexport function isPx(str : string) : boolean {\n return typeof str === 'string' && (/^[0-9]+px$/).test(str);\n}\n\nexport function toNum(val : string | number) : number {\n\n if (typeof val === 'number') {\n return val;\n }\n\n let match = val.match(/^([0-9]+)(px|%)$/);\n\n if (!match) {\n throw new Error(`Could not match css value from ${ val }`);\n }\n\n return parseInt(match[1], 10);\n}\n\nexport function toPx(val : number | string) : string {\n return `${ toNum(val) }px`;\n}\n\nexport function toCSS(val : number | string) : string {\n\n if (typeof val === 'number') {\n return toPx(val);\n }\n\n return isPerc(val) ? val : toPx(val);\n}\n\nexport function percOf(num : number, perc : string) : number {\n return parseInt(num * toNum(perc) / 100, 10);\n}\n\nexport function normalizeDimension(dim : string | number, max : number) : number {\n if (typeof dim === 'number') {\n return dim;\n } else if (isPerc(dim)) {\n return percOf(max, dim);\n } else if (isPx(dim)) {\n return toNum(dim);\n } else {\n throw new Error(`Can not normalize dimension: ${ dim }`);\n }\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { noop, tryCatch, removeFromArray } from './util';\n\ntype Prom = Promise | ZalgoPromise; // eslint-disable-line no-restricted-globals, promise/no-native\n\ntype Handler = >(name : string, fn? : (...args : A) => T) => (...args : A) => T; // eslint-disable-line no-undef\ntype Wrapper = ({ expect : Handler, avoid : Handler, expectError : Handler, error : Handler }) => (Prom | void);\n\nexport function wrapPromise(method : Wrapper, { timeout = 5000 } : { timeout? : number } = {}) : ZalgoPromise {\n let expected : Array = [];\n let promises : Array> = [];\n\n let timer = setTimeout(() => {\n if (expected.length) {\n promises.push(ZalgoPromise.asyncReject(new Error(`Expected ${ expected[0] } to be called`)));\n }\n }, timeout);\n\n let expect : Handler = (name, fn = noop) => {\n expected.push(name);\n \n // $FlowFixMe\n return function expectWrapper(...args) : * {\n removeFromArray(expected, name);\n\n // $FlowFixMe\n let { result, error } = tryCatch(() => fn.call(this, ...args));\n\n if (error) {\n promises.push(ZalgoPromise.asyncReject(error));\n throw error;\n }\n\n promises.push(ZalgoPromise.resolve(result));\n return result;\n };\n };\n\n let avoid : Handler = (name : string, fn = noop) => {\n\n // $FlowFixMe\n return function avoidWrapper(...args) : * {\n promises.push(ZalgoPromise.asyncReject(new Error(`Expected ${ name } to not be called`)));\n // $FlowFixMe\n return fn.call(this, ...args);\n };\n };\n\n let expectError : Handler = (name, fn = noop) => {\n expected.push(name);\n\n // $FlowFixMe\n return function expectErrorWrapper(...args) : * {\n removeFromArray(expected, name);\n\n // $FlowFixMe\n let { result, error } = tryCatch(() => fn.call(this, ...args));\n\n if (error) {\n throw error;\n }\n\n promises.push(ZalgoPromise.resolve(result).then(() => {\n throw new Error(`Expected ${ name } to throw an error`);\n }, noop));\n return result;\n };\n };\n\n promises.push(ZalgoPromise.try(() => method({ expect, avoid, expectError, error: avoid })));\n\n let drain = () => {\n return ZalgoPromise.try(() => {\n if (promises.length) {\n return promises.pop();\n }\n }).then(() => {\n if (promises.length) {\n return drain();\n }\n if (expected.length) {\n return ZalgoPromise.delay(10).then(drain);\n }\n });\n };\n\n return drain().then(() => {\n clearTimeout(timer);\n });\n}\n","/* @flow */\n\nexport * from './device';\nexport * from './dom';\nexport * from './experiment';\nexport * from './global';\nexport * from './storage';\nexport * from './util';\nexport * from './http';\nexport * from './types';\nexport * from './decorators';\nexport * from './css';\nexport * from './test';\n","/* @flow */\n\nexport function hasNativeWeakMap() : boolean {\n\n if (typeof WeakMap === 'undefined') {\n return false;\n }\n\n if (typeof Object.freeze === 'undefined') {\n return false;\n }\n\n try {\n\n let testWeakMap = new WeakMap();\n let testKey = {};\n let testValue = '__testvalue__';\n\n Object.freeze(testKey);\n\n testWeakMap.set(testKey, testValue);\n\n if (testWeakMap.get(testKey) === testValue) {\n return true;\n }\n\n return false;\n\n } catch (err) {\n\n return false;\n }\n}\n","/* @flow */\n\nexport function safeIndexOf(collection : Array, item : T) : number {\n for (let i = 0; i < collection.length; i++) {\n\n try {\n if (collection[i] === item) {\n return i;\n }\n } catch (err) {\n // pass\n }\n }\n\n return -1;\n}\n\n// eslint-disable-next-line no-unused-vars\nexport function noop(...args : Array) {\n // pass\n}\n","/* @flow */\n\nimport { isWindow, isWindowClosed } from 'cross-domain-utils/src';\n\nimport { hasNativeWeakMap } from './native';\nimport { noop, safeIndexOf } from './util';\n\nexport class CrossDomainSafeWeakMap {\n\n name : string\n weakmap : ?WeakMap\n keys : Array\n values : Array\n\n constructor() {\n // eslint-disable-next-line no-bitwise\n this.name = `__weakmap_${ Math.random() * 1e9 >>> 0 }__`;\n\n if (hasNativeWeakMap()) {\n try {\n this.weakmap = new WeakMap();\n } catch (err) {\n // pass\n }\n }\n\n this.keys = [];\n this.values = [];\n }\n\n _cleanupClosedWindows() {\n\n let weakmap = this.weakmap;\n let keys = this.keys;\n\n for (let i = 0; i < keys.length; i++) {\n let value = keys[i];\n\n if (isWindow(value) && isWindowClosed(value)) {\n\n if (weakmap) {\n try {\n weakmap.delete(value);\n } catch (err) {\n // pass\n }\n }\n\n keys.splice(i, 1);\n this.values.splice(i, 1);\n\n i -= 1;\n }\n }\n }\n\n isSafeToReadWrite(key : K) : boolean {\n\n if (isWindow(key)) {\n return false;\n }\n\n try {\n noop(key && key.self);\n noop(key && key[this.name]);\n } catch (err) {\n return false;\n }\n\n return true;\n }\n\n set(key : K, value : V) {\n\n if (!key) {\n throw new Error(`WeakMap expected key`);\n }\n\n let weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n weakmap.set(key, value);\n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (this.isSafeToReadWrite(key)) {\n try {\n let name = this.name;\n let entry = key[name];\n\n if (entry && entry[0] === key) {\n entry[1] = value;\n } else {\n Object.defineProperty(key, name, {\n value: [ key, value ],\n writable: true\n });\n }\n\n return;\n\n } catch (err) {\n // pass\n }\n }\n\n this._cleanupClosedWindows();\n\n let keys = this.keys;\n let values = this.values;\n let index = safeIndexOf(keys, key);\n\n if (index === -1) {\n keys.push(key);\n values.push(value);\n } else {\n values[index] = value;\n }\n }\n\n get(key : K) : V | void {\n\n if (!key) {\n throw new Error(`WeakMap expected key`);\n }\n\n let weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n if (weakmap.has(key)) {\n return weakmap.get(key);\n }\n \n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (this.isSafeToReadWrite(key)) {\n try {\n let entry = key[this.name];\n\n if (entry && entry[0] === key) {\n return entry[1];\n }\n\n return;\n } catch (err) {\n // pass\n }\n }\n\n this._cleanupClosedWindows();\n\n let keys = this.keys;\n let index = safeIndexOf(keys, key);\n\n if (index === -1) {\n return;\n }\n\n return this.values[index];\n }\n\n delete(key : K) {\n\n if (!key) {\n throw new Error(`WeakMap expected key`);\n }\n\n let weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n weakmap.delete(key);\n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (this.isSafeToReadWrite(key)) {\n try {\n let entry = key[this.name];\n\n if (entry && entry[0] === key) {\n entry[0] = entry[1] = undefined;\n }\n } catch (err) {\n // pass\n }\n }\n\n this._cleanupClosedWindows();\n\n let keys = this.keys;\n let index = safeIndexOf(keys, key);\n\n if (index !== -1) {\n keys.splice(index, 1);\n this.values.splice(index, 1);\n }\n }\n\n has(key : K) : boolean {\n\n if (!key) {\n throw new Error(`WeakMap expected key`);\n }\n\n let weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n if (weakmap.has(key)) {\n return true;\n }\n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (this.isSafeToReadWrite(key)) {\n try {\n let entry = key[this.name];\n\n if (entry && entry[0] === key) {\n return true;\n }\n\n return false;\n } catch (err) {\n // pass\n }\n }\n\n this._cleanupClosedWindows();\n\n let index = safeIndexOf(this.keys, key);\n return index !== -1;\n }\n\n getOrSet(key : K, getter : () => V) : V {\n if (this.has(key)) {\n // $FlowFixMe\n return this.get(key);\n }\n\n let value = getter();\n this.set(key, value);\n return value;\n }\n}\n","/* @flow */\n\nexport { CrossDomainSafeWeakMap as WeakMap } from './weakmap';\n","/* @flow */\n\nimport { config } from '../config';\n\nimport { uniqueID, isLocalStorageEnabled } from './util';\nimport { getQueryParam } from './dom';\nimport { isPayPalDomain } from './security';\n\nconst LOCAL_STORAGE_KEY = '__paypal_storage__';\nconst SESSION_KEY = '__paypal_session__';\nconst GLOBAL_KEY = '__paypal_global__';\n\nlet accessedStorage;\n\nexport function getStorageState(handler : (storage : Object) => T) : T {\n\n const localStorageEnabled = isLocalStorageEnabled();\n let storage;\n\n if (accessedStorage) {\n storage = accessedStorage;\n }\n\n if (!storage && localStorageEnabled) {\n const rawStorage = window.localStorage.getItem(LOCAL_STORAGE_KEY);\n\n if (rawStorage) {\n storage = JSON.parse(rawStorage);\n }\n }\n\n if (!storage) {\n storage = window[LOCAL_STORAGE_KEY];\n }\n\n if (!storage) {\n storage = {\n id: uniqueID()\n };\n }\n\n if (!storage.id) {\n storage.id = uniqueID();\n }\n\n accessedStorage = storage;\n\n const result = handler(storage);\n\n if (localStorageEnabled) {\n window.localStorage.setItem(LOCAL_STORAGE_KEY, JSON.stringify(storage));\n } else {\n window[LOCAL_STORAGE_KEY] = storage;\n }\n\n accessedStorage = null;\n\n return result;\n}\n\nexport function getStorageID() : string {\n return getStorageState(storage => storage.id);\n}\n\nexport function getSession(handler : (state : Object) => T) : T {\n return getStorageState(storage => {\n\n let session = storage[SESSION_KEY];\n const now = Date.now();\n\n if (session && ((now - session.created) > config.session_uid_lifetime)) {\n session = null;\n }\n\n if (!session) {\n session = {\n guid: uniqueID(),\n created: now\n };\n }\n\n storage[SESSION_KEY] = session;\n\n return handler(session);\n });\n}\n\nexport function getSessionState(handler : (state : Object) => T) : T {\n return getSession(session => {\n session.state = session.state || {};\n return handler(session.state);\n });\n}\n\nexport function getSessionID() : string {\n\n const xprops = window.xprops;\n\n if (xprops && xprops.sessionID) {\n return xprops.sessionID;\n }\n\n const querySessionID = getQueryParam('sessionID');\n\n if (isPayPalDomain() && querySessionID) {\n return querySessionID;\n }\n\n return getSession(session => session.guid);\n}\n\nexport function getButtonSessionID() : ?string {\n\n if (window.xprops && window.xprops.buttonSessionID) {\n return window.xprops.buttonSessionID;\n }\n\n const querySessionID = getQueryParam('buttonSessionID');\n\n if (isPayPalDomain() && querySessionID) {\n return querySessionID;\n }\n}\n\nexport function getGlobalState(handler : (state : Object) => T) : T {\n window[GLOBAL_KEY] = window[GLOBAL_KEY] || {};\n return handler(window[GLOBAL_KEY]);\n}\n","/* @flow */\n\nimport {\n getOpener,\n getTop\n} from 'cross-domain-utils/src';\n\nexport function getUserAgent() : string {\n return window.navigator.mockUserAgent || window.navigator.userAgent;\n}\n\nexport function isDevice() : boolean {\n const userAgent = getUserAgent();\n if (userAgent.match(/Android|webOS|iPhone|iPad|iPod|bada|Symbian|Palm|CriOS|BlackBerry|IEMobile|WindowsMobile|Opera Mini/i)) {\n return true;\n }\n\n return false;\n}\n\nexport function isInsidePopup() : boolean {\n // Checks to see if the top-most window is a pop-up\n return Boolean(getOpener(getTop(window) || window));\n}\n\nexport function isStandAlone() : boolean {\n // Chrome interprets pop-up windows as standalone windows\n return !isInsidePopup() && (window.navigator.standalone === true || window.matchMedia('(display-mode: standalone)').matches);\n}\n\nexport function isFacebookWebView(ua? : string = getUserAgent()) : boolean {\n return (ua.indexOf('FBAN') !== -1) || (ua.indexOf('FBAV') !== -1);\n}\n\nexport function isFirefoxIOS(ua? : string = getUserAgent()) : boolean {\n return (/FxiOS/i).test(ua);\n}\n\nexport function isEdgeIOS(ua? : string = getUserAgent()) : boolean {\n return (/EdgiOS/i).test(ua);\n}\n\nexport function isOperaMini(ua? : string = getUserAgent()) : boolean {\n return ua.indexOf('Opera Mini') > -1;\n}\n\nexport function isAndroid(ua? : string = getUserAgent()) : boolean {\n return (/Android/).test(ua);\n}\n\nexport function isIos(ua? : string = getUserAgent()) : boolean {\n return (/iPhone|iPod|iPad/).test(ua);\n}\n\nexport function isGoogleSearchApp(ua? : string = getUserAgent()) : boolean {\n return (/\\bGSA\\b/).test(ua);\n}\n\nexport function isQQBrowser(ua? : string = getUserAgent()) : boolean {\n return (/QQBrowser/).test(ua);\n}\n\nexport function isIosWebview(ua? : string = getUserAgent()) : boolean {\n if (isIos(ua)) {\n if (isGoogleSearchApp(ua)) {\n return true;\n }\n return (/.+AppleWebKit(?!.*Safari)/).test(ua);\n }\n return false;\n}\n\nexport function isAndroidWebview(ua? : string = getUserAgent()) : boolean {\n if (isAndroid(ua)) {\n return (/Version\\/[\\d.]+/).test(ua) && !isOperaMini(ua);\n }\n return false;\n}\n\nexport function isWebView() : boolean {\n return isFacebookWebView() ||\n isIosWebview() ||\n isAndroidWebview();\n}\n\nexport function isIE() : boolean {\n\n if (window.document.documentMode) {\n return true;\n }\n\n if (window.navigator && typeof window.navigator.userAgent === 'string') {\n if ((/Edge|MSIE/i).test(window.navigator.userAgent)) {\n return true;\n }\n }\n\n return false;\n}\n\n\nexport function isIE11() : boolean {\n if (!isIE()) {\n return false;\n }\n\n if (window.navigator && typeof window.navigator.userAgent === 'string') {\n if ((/MSIE 11\\.0/i).test(window.navigator.userAgent)) {\n return true;\n }\n\n if ((/Trident/i).test(window.navigator.userAgent) && (/rv:11\\.0/i).test(window.navigator.userAgent)) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function isIECompHeader() : boolean {\n const mHttp = window.document.querySelector('meta[http-equiv=\"X-UA-Compatible\"]');\n const mContent = window.document.querySelector('meta[content=\"IE=edge\"]');\n if (mHttp && mContent) {\n return true;\n }\n return false;\n}\n\nexport function isElectron() : boolean {\n const userAgent = getUserAgent();\n // here we want a case-insensitive full word boundary\n return (/\\belectron\\b/i).test(userAgent);\n}\n\nexport function isIEIntranet() : boolean {\n if (!isIE11()) {\n return false;\n }\n\n // This status check only works for older versions of IE with document.documentMode set\n\n if (window.document.documentMode) {\n try {\n const status = window.status;\n\n window.status = 'testIntranetMode';\n\n if (window.status === 'testIntranetMode') {\n window.status = status;\n\n return true;\n }\n\n return false;\n\n } catch (err) {\n\n return false;\n }\n }\n\n return false;\n}\n\nexport function isMacOsCna() : boolean {\n const userAgent = getUserAgent();\n return (/Macintosh.*AppleWebKit(?!.*Safari)/i).test(userAgent);\n}\n\nexport function supportsPopups(ua? : string = getUserAgent()) : boolean {\n return !(isIosWebview(ua) || isAndroidWebview(ua) || isOperaMini(ua) ||\n isFirefoxIOS(ua) || isEdgeIOS(ua) || isFacebookWebView(ua) || isQQBrowser(ua) || isElectron() || isMacOsCna() || isStandAlone());\n}\n","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","/* @flow */\n\nimport { type ZalgoPromise } from 'zalgo-promise/src';\nimport { getParent, isWindowClosed, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONSTANTS } from '../conf';\nimport { noop } from '../lib';\nimport { global } from '../global';\n\n/*\n HERE BE DRAGONS\n\n Warning: this file may look weird. Why save the tunnel window in an Object\n by ID, then look it up later, rather than just using the reference from the closure scope?\n\n The reason is, that ends up meaning the garbage collector can never get its hands\n on a closed window, since our closure has continued access to it -- and post-robot\n has no good way to know whether to clean up the function with the closure scope.\n\n If you're editing this file, be sure to run significant memory / GC tests afterwards.\n*/\n\nglobal.tunnelWindows = global.tunnelWindows || {};\nglobal.tunnelWindowId = 0;\n\nfunction deleteTunnelWindow(id) {\n\n try {\n if (global.tunnelWindows[id]) {\n delete global.tunnelWindows[id].source;\n }\n } catch (err) {\n // pass\n }\n\n delete global.tunnelWindows[id];\n}\n\nfunction cleanTunnelWindows() {\n let tunnelWindows = global.tunnelWindows;\n\n for (let key of Object.keys(tunnelWindows)) {\n let tunnelWindow = tunnelWindows[key];\n\n try {\n noop(tunnelWindow.source);\n } catch (err) {\n deleteTunnelWindow(key);\n continue;\n }\n\n if (isWindowClosed(tunnelWindow.source)) {\n deleteTunnelWindow(key);\n }\n }\n}\n\ntype TunnelWindowDataType = {\n name : string,\n source : CrossDomainWindowType,\n canary : () => void,\n sendMessage : (message : string) => void\n};\n\nfunction addTunnelWindow({ name, source, canary, sendMessage } : TunnelWindowDataType) : number {\n cleanTunnelWindows();\n global.tunnelWindowId += 1;\n global.tunnelWindows[global.tunnelWindowId] = { name, source, canary, sendMessage };\n return global.tunnelWindowId;\n}\n\nfunction getTunnelWindow(id : number) : TunnelWindowDataType {\n return global.tunnelWindows[id];\n}\n\nglobal.openTunnelToParent = function openTunnelToParent({ name, source, canary, sendMessage } : TunnelWindowDataType) : ZalgoPromise<{ source : CrossDomainWindowType, origin : string, data : Object }> {\n\n let parentWindow = getParent(window);\n\n if (!parentWindow) {\n throw new Error(`No parent window found to open tunnel to`);\n }\n\n let id = addTunnelWindow({ name, source, canary, sendMessage });\n\n return global.send(parentWindow, CONSTANTS.POST_MESSAGE_NAMES.OPEN_TUNNEL, {\n\n name,\n\n sendMessage() {\n\n let tunnelWindow = getTunnelWindow(id);\n\n try {\n // IE gets antsy if you try to even reference a closed window\n noop(tunnelWindow && tunnelWindow.source);\n } catch (err) {\n deleteTunnelWindow(id);\n return;\n }\n\n if (!tunnelWindow || !tunnelWindow.source || isWindowClosed(tunnelWindow.source)) {\n return;\n }\n\n try {\n tunnelWindow.canary();\n } catch (err) {\n return;\n }\n\n tunnelWindow.sendMessage.apply(this, arguments);\n }\n\n }, { domain: CONSTANTS.WILDCARD });\n};\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getDomain, isSameDomain, isOpener, isSameTopWindow, matchDomain, getUserAgent, getDomainFromUrl, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONFIG, CONSTANTS } from '../conf';\nimport { global } from '../global';\n\nexport function needsBridgeForBrowser() : boolean {\n\n if (getUserAgent(window).match(/MSIE|trident|edge\\/12|edge\\/13/i)) {\n return true;\n }\n\n if (!CONFIG.ALLOW_POSTMESSAGE_POPUP) {\n return true;\n }\n\n return false;\n}\n\nexport function needsBridgeForWin(win : CrossDomainWindowType) : boolean {\n\n if (!isSameTopWindow(window, win)) {\n return true;\n }\n\n return false;\n}\n\nexport function needsBridgeForDomain(domain : ?string, win : ?CrossDomainWindowType) : boolean {\n\n if (domain) {\n if (getDomain() !== getDomainFromUrl(domain)) {\n return true;\n }\n } else if (win) {\n if (!isSameDomain(win)) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function needsBridge({ win, domain } : { win? : CrossDomainWindowType, domain? : string }) : boolean {\n\n if (!needsBridgeForBrowser()) {\n return false;\n }\n\n if (domain && !needsBridgeForDomain(domain, win)) {\n return false;\n }\n\n if (win && !needsBridgeForWin(win)) {\n return false;\n }\n\n return true;\n}\n\nexport function getBridgeName(domain : string) : string {\n\n domain = domain || getDomainFromUrl(domain);\n\n let sanitizedDomain = domain.replace(/[^a-zA-Z0-9]+/g, '_');\n\n let id = `${ CONSTANTS.BRIDGE_NAME_PREFIX }_${ sanitizedDomain }`;\n\n return id;\n}\n\nexport function isBridge() : boolean {\n return Boolean(window.name && window.name === getBridgeName(getDomain()));\n}\n\nexport let documentBodyReady = new ZalgoPromise(resolve => {\n\n if (window.document && window.document.body) {\n return resolve(window.document.body);\n }\n\n let interval = setInterval(() => {\n if (window.document && window.document.body) {\n clearInterval(interval);\n return resolve(window.document.body);\n }\n }, 10);\n});\n\nglobal.remoteWindows = global.remoteWindows || new WeakMap();\n\nexport function registerRemoteWindow(win : CrossDomainWindowType) {\n global.remoteWindows.set(win, { sendMessagePromise: new ZalgoPromise() });\n}\n\nexport function findRemoteWindow(win : CrossDomainWindowType) : { sendMessagePromise : ZalgoPromise<(remoteWin : CrossDomainWindowType, message : string, remoteDomain : string) => void> } {\n return global.remoteWindows.get(win);\n}\n\nexport function registerRemoteSendMessage(win : CrossDomainWindowType, domain : string, sendMessage : (message : string) => void) {\n\n let remoteWindow = findRemoteWindow(win);\n\n if (!remoteWindow) {\n throw new Error(`Window not found to register sendMessage to`);\n }\n\n let sendMessageWrapper = (remoteWin : CrossDomainWindowType, message : string, remoteDomain : string) => {\n\n if (remoteWin !== win) {\n throw new Error(`Remote window does not match window`);\n }\n\n if (!matchDomain(remoteDomain, domain)) {\n throw new Error(`Remote domain ${ remoteDomain } does not match domain ${ domain }`);\n }\n\n sendMessage(message);\n };\n\n remoteWindow.sendMessagePromise.resolve(sendMessageWrapper);\n remoteWindow.sendMessagePromise = ZalgoPromise.resolve(sendMessageWrapper);\n}\n\nexport function rejectRemoteSendMessage(win : CrossDomainWindowType, err : Error) {\n\n let remoteWindow = findRemoteWindow(win);\n\n if (!remoteWindow) {\n throw new Error(`Window not found on which to reject sendMessage`);\n }\n\n remoteWindow.sendMessagePromise.asyncReject(err);\n}\n\nexport function sendBridgeMessage(win : CrossDomainWindowType, message : string, domain : string) : ZalgoPromise {\n\n let messagingChild = isOpener(window, win);\n let messagingParent = isOpener(win, window);\n\n if (!messagingChild && !messagingParent) {\n throw new Error(`Can only send messages to and from parent and popup windows`);\n }\n\n let remoteWindow = findRemoteWindow(win);\n\n if (!remoteWindow) {\n throw new Error(`Window not found to send message to`);\n }\n\n return remoteWindow.sendMessagePromise.then(sendMessage => {\n return sendMessage(win, message, domain);\n });\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { isSameDomain, getOpener, getFrames, getDomain, getFrameByName, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONSTANTS } from '../conf';\nimport { weakMapMemoize, noop } from '../lib';\nimport { global } from '../global';\n\nimport { needsBridge, registerRemoteWindow, rejectRemoteSendMessage, registerRemoteSendMessage, getBridgeName } from './common';\n\nlet awaitRemoteBridgeForWindow = weakMapMemoize((win : CrossDomainWindowType) : ZalgoPromise => {\n return ZalgoPromise.try(() => {\n for (let frame of getFrames(win)) {\n try {\n // $FlowFixMe\n if (frame && frame !== window && isSameDomain(frame) && frame[CONSTANTS.WINDOW_PROPS.POSTROBOT]) {\n return frame;\n }\n\n } catch (err) {\n continue;\n }\n }\n\n try {\n let frame = getFrameByName(win, getBridgeName(getDomain()));\n\n if (!frame) {\n return;\n }\n\n // $FlowFixMe\n if (isSameDomain(frame) && frame[CONSTANTS.WINDOW_PROPS.POSTROBOT]) {\n return frame;\n }\n\n return new ZalgoPromise(resolve => {\n\n let interval;\n let timeout;\n\n interval = setInterval(() => {\n // $FlowFixMe\n if (frame && isSameDomain(frame) && frame[CONSTANTS.WINDOW_PROPS.POSTROBOT]) {\n clearInterval(interval);\n clearTimeout(timeout);\n return resolve(frame);\n }\n }, 100);\n\n timeout = setTimeout(() => {\n clearInterval(interval);\n return resolve();\n }, 2000);\n });\n\n } catch (err) {\n // pass\n }\n });\n});\n\nexport function openTunnelToOpener() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n const opener = getOpener(window);\n\n if (!opener) {\n return;\n }\n\n if (!needsBridge({ win: opener })) {\n return;\n }\n\n registerRemoteWindow(opener);\n\n return awaitRemoteBridgeForWindow(opener).then(bridge => {\n\n if (!bridge) {\n return rejectRemoteSendMessage(opener, new Error(`Can not register with opener: no bridge found in opener`));\n }\n\n if (!window.name) {\n return rejectRemoteSendMessage(opener, new Error(`Can not register with opener: window does not have a name`));\n }\n\n return bridge[CONSTANTS.WINDOW_PROPS.POSTROBOT].openTunnelToParent({\n\n name: window.name,\n\n source: window,\n\n canary() {\n // pass\n },\n\n sendMessage(message) {\n\n try {\n noop(window);\n } catch (err) {\n return;\n }\n\n if (!window || window.closed) {\n return;\n }\n\n try {\n global.receiveMessage({\n data: message,\n origin: this.origin,\n source: this.source\n });\n } catch (err) {\n ZalgoPromise.reject(err);\n }\n }\n\n }).then(({ source, origin, data }) => {\n\n if (source !== opener) {\n throw new Error(`Source does not match opener`);\n }\n\n registerRemoteSendMessage(source, origin, data.sendMessage);\n\n }).catch(err => {\n\n rejectRemoteSendMessage(opener, err);\n throw err;\n });\n });\n });\n}\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getDomain, getFrameByName, isWindowClosed, getDomainFromUrl, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONFIG, CONSTANTS } from '../conf';\nimport { onChildWindowReady } from '../lib';\nimport { global } from '../global';\n\nimport { getBridgeName, documentBodyReady, registerRemoteSendMessage, registerRemoteWindow } from './common';\n\nglobal.bridges = global.bridges || {};\nglobal.bridgeFrames = global.bridgeFrames || {};\n\nglobal.popupWindowsByWin = global.popupWindowsByWin || new WeakMap();\nglobal.popupWindowsByName = global.popupWindowsByName || {};\n\nfunction listenForRegister(source, domain) {\n global.on(CONSTANTS.POST_MESSAGE_NAMES.OPEN_TUNNEL, { window: source, domain }, ({ origin, data }) => {\n\n if (origin !== domain) {\n throw new Error(`Domain ${ domain } does not match origin ${ origin }`);\n }\n\n if (!data.name) {\n throw new Error(`Register window expected to be passed window name`);\n }\n\n if (!data.sendMessage) {\n throw new Error(`Register window expected to be passed sendMessage method`);\n }\n\n if (!global.popupWindowsByName[data.name]) {\n throw new Error(`Window with name ${ data.name } does not exist, or was not opened by this window`);\n }\n\n if (!global.popupWindowsByName[data.name].domain) {\n throw new Error(`We do not have a registered domain for window ${ data.name }`);\n }\n\n if (global.popupWindowsByName[data.name].domain !== origin) {\n throw new Error(`Message origin ${ origin } does not matched registered window origin ${ global.popupWindowsByName[data.name].domain }`);\n }\n\n registerRemoteSendMessage(global.popupWindowsByName[data.name].win, domain, data.sendMessage);\n\n return {\n sendMessage(message) {\n\n if (!window || window.closed) {\n return;\n }\n\n let winDetails = global.popupWindowsByName[data.name];\n\n if (!winDetails) {\n return;\n }\n\n try {\n global.receiveMessage({\n data: message,\n origin: winDetails.domain,\n source: winDetails.win\n });\n } catch (err) {\n ZalgoPromise.reject(err);\n }\n }\n };\n });\n}\n\nfunction openBridgeFrame(name : string, url : string) : HTMLIFrameElement {\n\n let iframe = document.createElement(`iframe`);\n\n iframe.setAttribute(`name`, name);\n iframe.setAttribute(`id`, name);\n\n iframe.setAttribute(`style`, `display: none; margin: 0; padding: 0; border: 0px none; overflow: hidden;`);\n iframe.setAttribute(`frameborder`, `0`);\n iframe.setAttribute(`border`, `0`);\n iframe.setAttribute(`scrolling`, `no`);\n iframe.setAttribute(`allowTransparency`, `true`);\n\n iframe.setAttribute(`tabindex`, `-1`);\n iframe.setAttribute(`hidden`, `true`);\n iframe.setAttribute(`title`, ``);\n iframe.setAttribute(`role`, `presentation`);\n\n iframe.src = url;\n\n return iframe;\n}\n\nexport function hasBridge(url : string, domain : string) : boolean {\n domain = domain || getDomainFromUrl(url);\n return Boolean(global.bridges[domain]);\n}\n\nexport function openBridge(url : string, domain : string) : ZalgoPromise {\n\n domain = domain || getDomainFromUrl(url);\n\n if (global.bridges[domain]) {\n return global.bridges[domain];\n }\n\n global.bridges[domain] = ZalgoPromise.try(() => {\n\n if (getDomain() === domain) {\n throw new Error(`Can not open bridge on the same domain as current domain: ${ domain }`);\n }\n\n let name = getBridgeName(domain);\n let frame = getFrameByName(window, name);\n\n if (frame) {\n throw new Error(`Frame with name ${ name } already exists on page`);\n }\n\n let iframe = openBridgeFrame(name, url);\n global.bridgeFrames[domain] = iframe;\n\n return documentBodyReady.then(body => {\n\n body.appendChild(iframe);\n\n let bridge = iframe.contentWindow;\n\n listenForRegister(bridge, domain);\n\n return new ZalgoPromise((resolve, reject) => {\n\n iframe.onload = resolve;\n iframe.onerror = reject;\n\n }).then(() => {\n\n return onChildWindowReady(bridge, CONFIG.BRIDGE_TIMEOUT, `Bridge ${ url }`);\n\n }).then(() => {\n\n return bridge;\n });\n });\n });\n\n return global.bridges[domain];\n}\n\nlet windowOpen = window.open;\n\nwindow.open = function windowOpenWrapper(url : string, name : string, options : string, last : mixed) : mixed {\n\n let domain = url;\n\n if (url && url.indexOf(CONSTANTS.MOCK_PROTOCOL) === 0) {\n [ domain, url ] = url.split('|');\n }\n\n if (domain) {\n domain = getDomainFromUrl(domain);\n }\n\n let win = windowOpen.call(this, url, name, options, last);\n\n if (!win) {\n return win;\n }\n\n if (url) {\n registerRemoteWindow(win);\n }\n\n for (let winName of Object.keys(global.popupWindowsByName)) {\n if (isWindowClosed(global.popupWindowsByName[winName].win)) {\n delete global.popupWindowsByName[winName];\n }\n }\n\n if (name && win) {\n let winOptions = global.popupWindowsByWin.get(win) ||\n global.popupWindowsByName[name] || {};\n\n winOptions.name = winOptions.name || name;\n winOptions.win = winOptions.win || win;\n winOptions.domain = winOptions.domain || domain;\n\n global.popupWindowsByWin.set(win, winOptions);\n global.popupWindowsByName[name] = winOptions;\n }\n\n return win;\n};\n\nexport function linkUrl(win : CrossDomainWindowType, url : string) {\n\n let winOptions = global.popupWindowsByWin.get(win);\n\n if (winOptions) {\n winOptions.domain = getDomainFromUrl(url);\n registerRemoteWindow(win);\n }\n}\n\nexport function destroyBridges() {\n for (let domain of Object.keys(global.bridgeFrames)) {\n let frame = global.bridgeFrames[domain];\n if (frame.parentNode) {\n frame.parentNode.removeChild(frame);\n }\n }\n global.bridgeFrames = {};\n global.bridges = {};\n}\n","/* @flow */\n\n// eslint-disable-next-line import/no-unassigned-import\nimport './bridge';\n\nexport * from './child';\nexport * from './common';\nexport * from './parent';\n","/* @flow */\n\nimport { info } from 'beaver-logger/client';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport type { CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { LANG_TO_DEFAULT_COUNTRY, LOCALE } from '../constants';\nimport type { LocaleType } from '../types';\nimport { config } from '../config';\n\nimport { memoize } from './util';\nimport { isDevice } from './device';\n\nfunction isDocumentReady() : boolean {\n return Boolean(document.body) && document.readyState === 'complete';\n}\n\nexport const documentReady : ZalgoPromise = new ZalgoPromise(resolve => {\n\n if (isDocumentReady()) {\n return resolve();\n }\n\n const interval = setInterval(() => {\n if (isDocumentReady()) {\n clearInterval(interval);\n return resolve();\n }\n }, 10);\n});\n\nexport const documentBody : ZalgoPromise = documentReady.then(() => {\n if (document.body) {\n return document.body;\n }\n\n throw new Error('Document ready but document.body not present');\n});\n\n\nexport function loadScript(src : string, timeout : number = 0, attrs : Object = {}) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n const script = document.createElement('script');\n\n script.addEventListener('load', () => {\n resolve();\n });\n\n // For Internet explorer 8 support\n script.onreadystatechange = function scriptOnReadyStateChange() {\n if (this.readyState === 'complete' || this.readyState === 'loaded') {\n resolve();\n }\n };\n\n const scriptLoadError = new Error('script_loading_error');\n\n script.addEventListener('error', () => {\n return reject(scriptLoadError);\n });\n\n if (timeout) {\n setTimeout(() => {\n return reject(new Error('script_loading_timed_out'));\n }, timeout);\n }\n\n for (const attr of Object.keys(attrs)) {\n script.setAttribute(attr, attrs[attr]);\n }\n\n script.setAttribute('src', src);\n\n const head = document.getElementsByTagName('head')[0];\n\n head.appendChild(script);\n });\n}\n\n\nexport function isNodeList(nodes : mixed) : boolean {\n\n const result = Object.prototype.toString.call(nodes);\n\n if (result === '[object HTMLCollection]' || result === '[object NodeList]') {\n return true;\n }\n\n return false;\n}\n\nexport function isElement(item : mixed) : boolean {\n return item instanceof HTMLElement;\n}\n\nexport function getElement(item : mixed) : ?HTMLElement {\n\n if (!item) {\n return;\n }\n\n if (item instanceof HTMLElement) {\n return item;\n }\n\n if (typeof item === 'string') {\n\n if (document.querySelector) {\n const result = document.querySelector(item);\n\n if (result) {\n return result;\n }\n }\n\n return document.getElementById(item);\n }\n}\n\nexport function getElements(collection : $ReadOnlyArray | NodeList | HTMLCollection | HTMLElement | string) : $ReadOnlyArray {\n\n if (!collection) {\n return [];\n }\n\n if (collection instanceof HTMLElement || typeof collection === 'string') {\n const element = getElement(collection);\n if (element) {\n return [ element ];\n }\n return [];\n }\n\n if (Array.isArray(collection) || collection instanceof NodeList || collection instanceof HTMLCollection) {\n const result = [];\n\n for (let i = 0; i < collection.length; i++) {\n const el = getElement(collection[i]);\n if (el) {\n result.push(el);\n }\n }\n\n return result;\n }\n\n return [];\n}\n\nexport function onDocumentReady(method : () => void) : ZalgoPromise {\n return documentReady.then(method);\n}\n\nexport const parseQuery = memoize((queryString : string) : Object => {\n\n const params = {};\n\n if (!queryString) {\n return params;\n }\n\n if (queryString.indexOf('=') === -1) {\n return params;\n }\n\n for (let pair of queryString.split('&')) {\n pair = pair.split('=');\n\n if (pair[0] && pair[1]) {\n params[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n }\n\n return params;\n});\n\n\nexport function getQueryParam(name : string) : string {\n return parseQuery(window.location.search.slice(1))[name];\n}\n\nexport function urlWillRedirectPage(url : string) : boolean {\n\n if (url.indexOf('#') === -1) {\n return true;\n }\n\n if (url.indexOf('#') === 0) {\n return false;\n }\n\n if (url.split('#')[0] === window.location.href.split('#')[0]) {\n return false;\n }\n\n return true;\n}\n\nexport function extendUrl(url : string, params : { [key : string] : string } = {}) : string {\n\n const hasHash = url.indexOf('#') > 0;\n\n let [ serverUrl, hash ] = url.split('#');\n\n if (hash && !serverUrl) {\n [ serverUrl, hash ] = [ `#${ hash }`, '' ];\n }\n\n const [ originalUrl, originalQueryString ] = serverUrl.split('?');\n\n if (originalQueryString) {\n const originalQuery = parseQuery(originalQueryString);\n\n for (const key in originalQuery) {\n if (!params.hasOwnProperty(key)) {\n params[key] = originalQuery[key];\n }\n }\n }\n\n const newQueryString = Object.keys(params).filter(key => key && params[key]).sort().map(key => {\n return `${ encodeURIComponent(key) }=${ encodeURIComponent(params[key]) }`;\n }).join('&');\n\n let newUrl = originalUrl;\n\n if (newQueryString) {\n newUrl = `${ newUrl }?${ newQueryString }`;\n }\n\n if (hasHash) {\n newUrl = `${ newUrl }#${ hash || '' }`;\n }\n\n return newUrl;\n}\n\nexport function redirect(win : CrossDomainWindowType = window, url : string) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n\n info(`redirect`, { url });\n\n setTimeout(() => {\n win.location = url;\n if (!urlWillRedirectPage(url)) {\n resolve();\n }\n }, 1);\n });\n}\n\nexport function hasMetaViewPort() : boolean {\n const meta = document.querySelector('meta[name=viewport]');\n\n if (isDevice() && window.screen.width < 660 && !meta) {\n return false;\n }\n\n return true;\n}\n\nexport function getBrowserLocales() : $ReadOnlyArray {\n const nav = window.navigator;\n\n const locales = nav.languages\n ? Array.prototype.slice.apply(nav.languages)\n : [];\n\n if (nav.language) {\n locales.push(nav.language);\n }\n\n if (nav.userLanguage) {\n locales.push(nav.userLanguage);\n }\n\n return locales;\n}\n\nexport function normalizeLocale(locale : string) : ?LocaleType {\n\n if (locale && locale.match(/^[a-z]{2}[-_][A-Z]{2}$/)) {\n const [ lang, country ] = locale.split(/[-_]/);\n if (LOCALE[country] && LOCALE[country].indexOf(lang) !== -1) {\n return { country, lang };\n }\n }\n}\n\nexport function normalizeLang(lang : string) : ?LocaleType {\n\n if (lang && lang.match(/^[a-z]{2}$/)) {\n if (LANG_TO_DEFAULT_COUNTRY[lang]) {\n return { country: LANG_TO_DEFAULT_COUNTRY[lang], lang };\n }\n }\n}\n\nexport const getBrowserLocale = memoize(() : LocaleType => {\n\n const locales = getBrowserLocales();\n\n for (const locale of locales) {\n let loc = normalizeLocale(locale);\n if (loc) {\n info('better_browser_locale_full');\n return loc;\n }\n\n loc = normalizeLang(locale);\n if (loc) {\n info('better_browser_locale_lang');\n return loc;\n }\n }\n\n return config.defaultLocale;\n});\n\nexport function isElementVisible(el : HTMLElement) : boolean {\n return Boolean(el.offsetWidth || el.offsetHeight || el.getClientRects().length);\n}\n\nexport const enablePerformance = memoize(() : boolean => {\n /* eslint-disable compat/compat */\n return Boolean(\n window.performance &&\n performance.now &&\n performance.timing &&\n performance.timing.connectEnd &&\n performance.timing.navigationStart &&\n (Math.abs(performance.now() - Date.now()) > 1000) &&\n (performance.now() - (performance.timing.connectEnd - performance.timing.navigationStart)) > 0\n );\n /* eslint-enable compat/compat */\n});\n\nexport function getPageRenderTime() : ZalgoPromise {\n return documentReady.then(() => {\n\n if (!enablePerformance()) {\n return;\n }\n\n const timing = window.performance.timing; // eslint-disable-line compat/compat\n\n if (timing.connectEnd && timing.domInteractive) {\n return timing.domInteractive - timing.connectEnd;\n }\n });\n}\n\nexport function getResourceLoadTime(url : string) : ?number {\n\n if (!enablePerformance()) {\n return;\n }\n\n if (!window.performance || typeof window.performance.getEntries !== 'function') { // eslint-disable-line compat/compat\n return;\n }\n\n const entries = window.performance.getEntries(); // eslint-disable-line compat/compat\n\n for (let i = 0; i < entries.length; i++) {\n const entry = entries[i];\n\n if (entry && entry.name === url && entry.duration && entry.duration >= 0 && entry.duration <= 60000) {\n return Math.floor(entry.duration);\n }\n }\n}\n\nexport function htmlEncode(html : string = '') : string {\n return html.toString()\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(/\\//g, '/');\n}\n","/* @flow */\n\nexport function PopupOpenError(message : string) {\n this.message = message;\n}\n\nPopupOpenError.prototype = Object.create(Error.prototype);\n\nexport function IntegrationError(message : string) {\n this.message = message;\n}\n\nIntegrationError.prototype = Object.create(Error.prototype);\n\nexport function RenderError(message : string) {\n this.message = message;\n}\n\nRenderError.prototype = Object.create(Error.prototype);\n","/* @flow */\n\nimport { getParent, isSameDomain } from 'cross-domain-utils/src';\n\nimport { config } from '../config';\n\nimport { supportsPopups } from './device';\n\nexport function allowIframe() : boolean {\n\n if (!supportsPopups()) {\n return true;\n }\n\n const parentWindow = getParent(window);\n if (parentWindow && isSameDomain(parentWindow)) {\n return true;\n }\n\n const parentComponentWindow = window.xchild && window.xchild.getParentComponentWindow();\n if (parentComponentWindow && isSameDomain(parentComponentWindow)) {\n return true;\n }\n\n if (__TEST__) {\n return true;\n }\n\n return false;\n}\n\n\nexport function isPayPalDomain() : boolean {\n return Boolean(`${ window.location.protocol }//${ window.location.host }`.match(config.paypal_domain_regex)) || window.mockDomain === 'mock://www.paypal.com';\n}\n","/* @flow */\n\nexport * from './script';\nexport * from './react';\nexport * from './vue';\nexport * from './angular';\nexport * from './ember';\nexport * from './glimmer';\nexport * from './angular2';\n","/* @flow */\n\nimport { config } from '../config';\nimport { LOG_LEVEL } from '../constants';\n\nimport { getSessionID, getSessionState } from './session';\n\nconst BEACON_URL = config.loggerUrl;\nconst APP_NAME = 'checkoutjs';\n\nexport function beacon(event : string, payload : Object = {}) {\n try {\n\n payload.event = `ppxo_${ event }`;\n payload.version = __PAYPAL_CHECKOUT__.__MINOR_VERSION__;\n payload.host = window.location.host;\n payload.uid = getSessionID();\n payload.appName = APP_NAME;\n\n let query = [];\n\n for (const key in payload) {\n if (payload.hasOwnProperty(key)) {\n query.push(`${ encodeURIComponent(key) }=${ encodeURIComponent(payload[key]) }`);\n }\n }\n\n query = query.join('&');\n\n if (!__TEST__) {\n const beaconImage = new window.Image();\n beaconImage.src = `${ BEACON_URL }?${ query }`;\n }\n\n setTimeout(() => {\n if (config.logLevel === LOG_LEVEL.DEBUG) {\n if (window.console && window.console.log) {\n window.console.log('*', event, payload);\n }\n }\n }, 1);\n\n } catch (err) {\n // pass\n }\n}\n\nfunction isCheckpointUnique(name : string) : boolean {\n return getSessionState(state => {\n state.loggedBeacons = state.loggedBeacons || [];\n\n if (state.loggedBeacons.indexOf(name) === -1) {\n state.loggedBeacons.push(name);\n return true;\n }\n\n return false;\n });\n}\n\nexport function checkpoint(name : string, payload : Object = {}, options : Object = {}) : void {\n try {\n let checkpointName = name;\n\n if (options.version) {\n const version = __PAYPAL_CHECKOUT__.__MINOR_VERSION__.replace(/[^0-9]+/g, '_');\n checkpointName = `${ version }_${ checkpointName }`;\n }\n\n if (!isCheckpointUnique(checkpointName)) {\n return;\n }\n\n return beacon(checkpointName, payload);\n\n } catch (err) {\n\n // pass\n }\n}\n\n\nconst FPTI_URL = 'https://t.paypal.com/ts';\n\nfunction buildPayload() : Object {\n return {\n v: `checkout.js.${ __PAYPAL_CHECKOUT__.__MINOR_VERSION__ }`,\n t: Date.now(),\n g: new Date().getTimezoneOffset(),\n flnm: 'ec:hermes:',\n shir: 'main_ec_hermes_',\n pgrp: 'main:ec:hermes::incontext-merchant',\n page: 'main:ec:hermes::incontext-merchant',\n vers: 'member:hermes:',\n qual: 'incontext',\n tmpl: 'merchant:incontext'\n };\n}\n\nexport function fpti(payload : Object = {}) {\n\n let query = [];\n\n payload = { ...buildPayload(), ...payload };\n\n for (const key in payload) {\n if (payload.hasOwnProperty(key)) {\n query.push(`${ encodeURIComponent(key) }=${ encodeURIComponent(payload[key]) }`);\n }\n }\n\n query = query.join('&');\n\n try {\n const beaconImage = new window.Image();\n beaconImage.src = `${ FPTI_URL }?${ query }`;\n } catch (err) {\n // pass\n }\n}\n","/* @flow */\n\nexport function extendNamespace(xports : Object, namespaces : $ReadOnlyArray = [], childnamespaces : $ReadOnlyArray = []) : Object {\n\n for (const name of namespaces) {\n const namespace = window[name];\n\n if (!namespace) {\n continue;\n }\n\n for (const childname of childnamespaces) {\n let childnamespace = xports[childname];\n\n if (namespace[childname]) {\n childnamespace = { ...namespace[childname], ...childnamespace };\n }\n\n xports = { ...namespace, ...xports, [ childname ]: childnamespace };\n }\n }\n\n for (const name of namespaces) {\n window[name] = xports;\n }\n\n return xports;\n}\n","/*\n * [hi-base32]{@link https://github.com/emn178/hi-base32}\n *\n * @version 0.5.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var root = typeof window === 'object' ? window : {};\n var NODE_JS = !root.HI_BASE32_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n }\n var COMMON_JS = !root.HI_BASE32_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var BASE32_ENCODE_CHAR = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'.split('');\n var BASE32_DECODE_CHAR = {\n 'A': 0, 'B': 1, 'C': 2, 'D': 3, 'E': 4, 'F': 5, 'G': 6, 'H': 7, 'I': 8,\n 'J': 9, 'K': 10, 'L': 11, 'M': 12, 'N': 13, 'O': 14, 'P': 15, 'Q': 16,\n 'R': 17, 'S': 18, 'T': 19, 'U': 20, 'V': 21, 'W': 22, 'X': 23, 'Y': 24,\n 'Z': 25, '2': 26, '3': 27, '4': 28, '5': 29, '6': 30, '7': 31\n };\n\n var blocks = [0, 0, 0, 0, 0, 0, 0, 0];\n\n var throwInvalidUtf8 = function (position, partial) {\n if (partial.length > 10) {\n partial = '...' + partial.substr(-10);\n }\n var err = new Error('Decoded data is not valid UTF-8.'\n + ' Maybe try base32.decode.asBytes()?'\n + ' Partial data after reading ' + position + ' bytes: ' + partial + ' <-');\n err.position = position;\n throw err;\n };\n\n var toUtf8String = function (bytes) {\n var str = '', length = bytes.length, i = 0, followingChars = 0, b, c;\n while (i < length) {\n b = bytes[i++];\n if (b <= 0x7F) {\n str += String.fromCharCode(b);\n continue;\n } else if (b > 0xBF && b <= 0xDF) {\n c = b & 0x1F;\n followingChars = 1;\n } else if (b <= 0xEF) {\n c = b & 0x0F;\n followingChars = 2;\n } else if (b <= 0xF7) {\n c = b & 0x07;\n followingChars = 3;\n } else {\n throwInvalidUtf8(i, str);\n }\n\n for (var j = 0; j < followingChars; ++j) {\n b = bytes[i++];\n if (b < 0x80 || b > 0xBF) {\n throwInvalidUtf8(i, str);\n }\n c <<= 6;\n c += b & 0x3F;\n }\n if (c >= 0xD800 && c <= 0xDFFF) {\n throwInvalidUtf8(i, str);\n }\n if (c > 0x10FFFF) {\n throwInvalidUtf8(i, str);\n }\n\n if (c <= 0xFFFF) {\n str += String.fromCharCode(c);\n } else {\n c -= 0x10000;\n str += String.fromCharCode((c >> 10) + 0xD800);\n str += String.fromCharCode((c & 0x3FF) + 0xDC00);\n }\n }\n return str;\n };\n\n var decodeAsBytes = function (base32Str) {\n if (!/^[A-Z2-7=]+$/.test(base32Str)) {\n throw new Error('Invalid base32 characters');\n }\n base32Str = base32Str.replace(/=/g, '');\n var v1, v2, v3, v4, v5, v6, v7, v8, bytes = [], index = 0, length = base32Str.length;\n\n // 4 char to 3 bytes\n for (var i = 0, count = length >> 3 << 3; i < count;) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v8 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255;\n bytes[index++] = (v4 << 4 | v5 >>> 1) & 255;\n bytes[index++] = (v5 << 7 | v6 << 2 | v7 >>> 3) & 255;\n bytes[index++] = (v7 << 5 | v8) & 255;\n }\n\n // remain bytes\n var remain = length - count;\n if (remain === 2) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n } else if (remain === 4) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255;\n } else if (remain === 5) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255;\n bytes[index++] = (v4 << 4 | v5 >>> 1) & 255;\n } else if (remain === 7) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255;\n bytes[index++] = (v4 << 4 | v5 >>> 1) & 255;\n bytes[index++] = (v5 << 7 | v6 << 2 | v7 >>> 3) & 255;\n }\n return bytes;\n };\n\n var encodeAscii = function (str) {\n var v1, v2, v3, v4, v5, base32Str = '', length = str.length;\n for (var i = 0, count = parseInt(length / 5) * 5; i < count;) {\n v1 = str.charCodeAt(i++);\n v2 = str.charCodeAt(i++);\n v3 = str.charCodeAt(i++);\n v4 = str.charCodeAt(i++);\n v5 = str.charCodeAt(i++);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3 | v5 >>> 5) & 31] +\n BASE32_ENCODE_CHAR[v5 & 31];\n }\n\n // remain char\n var remain = length - count;\n if (remain === 1) {\n v1 = str.charCodeAt(i);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2) & 31] +\n '======';\n } else if (remain === 2) {\n v1 = str.charCodeAt(i++);\n v2 = str.charCodeAt(i);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4) & 31] +\n '====';\n } else if (remain === 3) {\n v1 = str.charCodeAt(i++);\n v2 = str.charCodeAt(i++);\n v3 = str.charCodeAt(i);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1) & 31] +\n '===';\n } else if (remain === 4) {\n v1 = str.charCodeAt(i++);\n v2 = str.charCodeAt(i++);\n v3 = str.charCodeAt(i++);\n v4 = str.charCodeAt(i);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3) & 31] +\n '=';\n }\n return base32Str;\n };\n\n var encodeUtf8 = function (str) {\n var v1, v2, v3, v4, v5, code, end = false, base32Str = '',\n index = 0, i, start = 0, bytes = 0, length = str.length;\n do {\n blocks[0] = blocks[5];\n blocks[1] = blocks[6];\n blocks[2] = blocks[7];\n for (i = start; index < length && i < 5; ++index) {\n code = str.charCodeAt(index);\n if (code < 0x80) {\n blocks[i++] = code;\n } else if (code < 0x800) {\n blocks[i++] = 0xc0 | (code >> 6);\n blocks[i++] = 0x80 | (code & 0x3f);\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i++] = 0xe0 | (code >> 12);\n blocks[i++] = 0x80 | ((code >> 6) & 0x3f);\n blocks[i++] = 0x80 | (code & 0x3f);\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++index) & 0x3ff));\n blocks[i++] = 0xf0 | (code >> 18);\n blocks[i++] = 0x80 | ((code >> 12) & 0x3f);\n blocks[i++] = 0x80 | ((code >> 6) & 0x3f);\n blocks[i++] = 0x80 | (code & 0x3f);\n }\n }\n bytes += i - start;\n start = i - 5;\n if (index === length) {\n ++index;\n }\n if (index > length && i < 6) {\n end = true;\n }\n v1 = blocks[0];\n if (i > 4) {\n v2 = blocks[1];\n v3 = blocks[2];\n v4 = blocks[3];\n v5 = blocks[4];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3 | v5 >>> 5) & 31] +\n BASE32_ENCODE_CHAR[v5 & 31];\n } else if (i === 1) {\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2) & 31] +\n '======';\n } else if (i === 2) {\n v2 = blocks[1];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4) & 31] +\n '====';\n } else if (i === 3) {\n v2 = blocks[1];\n v3 = blocks[2];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1) & 31] +\n '===';\n } else {\n v2 = blocks[1];\n v3 = blocks[2];\n v4 = blocks[3];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3) & 31] +\n '=';\n }\n } while (!end);\n return base32Str;\n };\n\n var encodeBytes = function (bytes) {\n var v1, v2, v3, v4, v5, base32Str = '', length = bytes.length;\n for (var i = 0, count = parseInt(length / 5) * 5; i < count;) {\n v1 = bytes[i++];\n v2 = bytes[i++];\n v3 = bytes[i++];\n v4 = bytes[i++];\n v5 = bytes[i++];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3 | v5 >>> 5) & 31] +\n BASE32_ENCODE_CHAR[v5 & 31];\n }\n\n // remain char\n var remain = length - count;\n if (remain === 1) {\n v1 = bytes[i];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2) & 31] +\n '======';\n } else if (remain === 2) {\n v1 = bytes[i++];\n v2 = bytes[i];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4) & 31] +\n '====';\n } else if (remain === 3) {\n v1 = bytes[i++];\n v2 = bytes[i++];\n v3 = bytes[i];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1) & 31] +\n '===';\n } else if (remain === 4) {\n v1 = bytes[i++];\n v2 = bytes[i++];\n v3 = bytes[i++];\n v4 = bytes[i];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3) & 31] +\n '=';\n }\n return base32Str;\n };\n\n var encode = function (input, asciiOnly) {\n var notString = typeof(input) !== 'string';\n if (notString && input.constructor === ArrayBuffer) {\n input = new Uint8Array(input);\n }\n if (notString) {\n return encodeBytes(input);\n } else if (asciiOnly) {\n return encodeAscii(input);\n } else {\n return encodeUtf8(input);\n }\n };\n\n var decode = function (base32Str, asciiOnly) {\n if (!asciiOnly) {\n return toUtf8String(decodeAsBytes(base32Str));\n }\n if (!/^[A-Z2-7=]+$/.test(base32Str)) {\n throw new Error('Invalid base32 characters');\n }\n var v1, v2, v3, v4, v5, v6, v7, v8, str = '', length = base32Str.indexOf('=');\n if (length === -1) {\n length = base32Str.length;\n }\n\n // 8 char to 5 bytes\n for (var i = 0, count = length >> 3 << 3; i < count;) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v8 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255) +\n String.fromCharCode((v2 << 6 | v3 << 1 | v4 >>> 4) & 255) +\n String.fromCharCode((v4 << 4 | v5 >>> 1) & 255) +\n String.fromCharCode((v5 << 7 | v6 << 2 | v7 >>> 3) & 255) +\n String.fromCharCode((v7 << 5 | v8) & 255);\n }\n\n // remain bytes\n var remain = length - count;\n if (remain === 2) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255);\n } else if (remain === 4) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255) +\n String.fromCharCode((v2 << 6 | v3 << 1 | v4 >>> 4) & 255);\n } else if (remain === 5) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255) +\n String.fromCharCode((v2 << 6 | v3 << 1 | v4 >>> 4) & 255) +\n String.fromCharCode((v4 << 4 | v5 >>> 1) & 255);\n } else if (remain === 7) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255) +\n String.fromCharCode((v2 << 6 | v3 << 1 | v4 >>> 4) & 255) +\n String.fromCharCode((v4 << 4 | v5 >>> 1) & 255) +\n String.fromCharCode((v5 << 7 | v6 << 2 | v7 >>> 3) & 255);\n }\n return str;\n };\n\n var exports = {\n encode: encode,\n decode: decode\n };\n decode.asBytes = decodeAsBytes;\n\n if (COMMON_JS) {\n module.exports = exports;\n } else {\n root.base32 = exports;\n if (AMD) {\n define(function() {\n return exports;\n });\n }\n }\n})();\n","/* @flow */\n\nimport type { Component, ComponentDriverType } from '../component/component';\n\nexport let script : ComponentDriverType<*, Document> = {\n\n global() : ?Document {\n return window.document;\n },\n\n register(component : Component<*>, document : Document) {\n\n function render(element : HTMLElement) {\n\n if (!element || !element.tagName || element.tagName.toLowerCase() !== 'script') {\n return;\n }\n\n // $FlowFixMe\n if (!element.attributes.type || element.attributes.type.value !== 'application/x-component' || !element.parentNode) {\n return;\n }\n\n let tag = element.getAttribute('data-component');\n\n if (!tag || tag !== component.tag) {\n return;\n }\n\n component.log(`instantiate_script_component`);\n\n let props : { [string] : mixed } = element.innerText\n ? eval(`(${ element.innerText })`) // eslint-disable-line no-eval, security/detect-eval-with-expression\n : {};\n\n let container = document.createElement('div');\n\n if (!element.parentNode) {\n throw new Error(`Element has no parent`);\n }\n\n element.parentNode.replaceChild(container, element);\n\n // $FlowFixMe\n component.render(props, container);\n }\n\n function scan() {\n let scriptTags = Array.prototype.slice.call(document.getElementsByTagName('script'));\n\n for (let element of scriptTags) {\n render(element);\n }\n }\n\n scan();\n document.addEventListener('DOMContentLoaded', scan);\n window.addEventListener('load', scan);\n\n document.addEventListener('DOMNodeInserted', event => {\n // $FlowFixMe\n render(event.target);\n });\n }\n};\n","/* @flow */\n\nimport { extend } from '../lib';\nimport type { Component, ComponentDriverType } from '../component/component';\n\ndeclare class ReactClassType {\n\n}\n\ntype ReactElementType = {\n\n};\n\ntype ReactType = {\n createClass : ({ render : ReactElementType, componentDidMount : () => void, componentDidUpdate : () => void }) => (typeof ReactClassType),\n createElement : (string, ?{ [string] : mixed }, ...children : Array) => ReactElementType\n};\n\ntype ReactDomType = {\n findDOMNode : (ReactElementType) => HTMLElement\n};\n\ntype ReactLibraryType = { React : ReactType, ReactDOM : ReactDomType };\n\nexport let react : ComponentDriverType<*, ReactLibraryType> = {\n\n global() : ?ReactLibraryType {\n if (window.React && window.ReactDOM) {\n return {\n React: window.React,\n ReactDOM: window.ReactDOM\n };\n }\n },\n\n register(component : Component<*>, { React, ReactDOM } : ReactLibraryType) : (typeof ReactClassType) {\n\n if (React.createClass) {\n\n // $FlowFixMe\n component.react = React.createClass({\n\n render() : ReactElementType {\n return React.createElement('div', null);\n },\n\n componentDidMount() {\n component.log(`instantiate_react_component`);\n\n let el = ReactDOM.findDOMNode(this);\n\n let parent = component.init(extend({}, this.props), null, el);\n\n this.setState({ parent });\n\n parent.render(el);\n },\n\n componentDidUpdate() {\n\n if (this.state && this.state.parent) {\n this.state.parent.updateProps(extend({}, this.props));\n }\n },\n\n componentWillUnmount() {\n if (this.state && this.state.parent) {\n this.state.parent.destroy();\n }\n }\n });\n } else {\n // $FlowFixMe\n component.react = class extends React.Component {\n render() : ReactElementType {\n return React.createElement('div', null);\n }\n\n componentDidMount() {\n component.log(`instantiate_react_component`);\n\n let el = ReactDOM.findDOMNode(this);\n\n let parent = component.init(extend({}, this.props), null, el);\n\n this.setState({ parent });\n\n parent.render(el);\n }\n\n componentDidUpdate() {\n\n if (this.state && this.state.parent) {\n this.state.parent.updateProps(extend({}, this.props));\n }\n }\n\n componentWillUnmount() {\n if (this.state && this.state.parent) {\n this.state.parent.destroy();\n }\n }\n };\n }\n\n return component.react;\n }\n};\n","/* @flow */\n\nimport type { Component, ComponentDriverType } from '../component/component';\nimport { extend } from '../lib';\n\ntype VueComponent = {\n render : (Function) => Element,\n inheritAttrs : boolean,\n mounted : () => void,\n beforeUpdate : () => void\n};\n\nexport let vue : ComponentDriverType<*, void> = {\n\n global() {\n // pass\n },\n\n register

(component : Component

) : VueComponent {\n\n return {\n render(createElement) : Element {\n return createElement('div');\n },\n\n inheritAttrs: false,\n\n mounted() {\n let el = this.$el;\n\n // $FlowFixMe\n this.parent = component.init(extend({}, this.$attrs), null, el);\n\n this.parent.render(el);\n },\n\n beforeUpdate() {\n \n if (this.parent && this.$attrs) {\n this.parent.updateProps(extend({}, this.$attrs));\n }\n }\n };\n }\n};\n","/* @flow */\n\nimport { dasherizeToCamel, replaceObject } from '../lib';\nimport type { Component, ComponentDriverType } from '../component/component';\n\ntype AngularModule = {\n directive : (string, () => {\n scope : { [string] : '=' | '@' },\n restrict : string,\n controller : Array\n }) => AngularModule\n};\n\ntype Angular = {\n module : (string, Array) => AngularModule\n};\n\nexport let angular : ComponentDriverType<*, Angular> = {\n\n global() : ?Angular {\n return window.angular;\n },\n\n register(component : Component<*>, ng : Angular) : AngularModule {\n\n let module = ng.module(component.tag, []).directive(dasherizeToCamel(component.tag), () => {\n\n let scope = {};\n\n for (let key of component.getPropNames()) {\n scope[key] = '=';\n }\n\n if (component.looseProps) {\n scope.props = '=';\n }\n\n return {\n scope,\n\n restrict: 'E',\n\n controller: [ '$scope', '$element', ($scope, $element) => {\n\n if (component.looseProps && !$scope.props) {\n throw new Error(`For angular bindings to work, prop definitions must be passed to zoid.create`);\n }\n\n component.log(`instantiate_angular_component`);\n\n function safeApply() {\n if ($scope.$root.$$phase !== '$apply' && $scope.$root.$$phase !== '$digest') {\n try {\n $scope.$apply();\n } catch (err) {\n // pass\n }\n }\n }\n\n let getProps = () => {\n\n let scopeProps;\n\n if ($scope.props) {\n scopeProps = $scope.props;\n } else {\n scopeProps = {};\n for (let key of Object.keys(scope)) {\n if ($scope[key] !== undefined) {\n scopeProps[key] = $scope[key];\n }\n }\n }\n\n scopeProps = replaceObject(scopeProps, {\n 'function': (value) => {\n return function angularWrapped() : mixed {\n let result = value.apply(this, arguments);\n safeApply();\n return result;\n };\n }\n });\n\n return scopeProps;\n };\n\n let parent = component.init(getProps(), null, $element[0]);\n parent.render($element[0]);\n\n $scope.$watch(() => {\n parent.updateProps(getProps());\n });\n } ]\n };\n });\n\n return module;\n }\n};\n","/* @flow */\n\nimport type { Component, ComponentDriverType } from '../component/component';\n\ndeclare class GlimmerComponentType {\n element : HTMLElement,\n args : Object\n}\n\nexport let glimmer : ComponentDriverType<*, (typeof GlimmerComponentType)> = {\n\n global() {\n // pass\n },\n\n register(component : Component<*>, GlimmerComponent : (typeof GlimmerComponentType)) : (typeof GlimmerComponentType) {\n return class extends GlimmerComponent {\n didInsertElement() {\n component.render({ ...this.args }, this.element);\n }\n };\n }\n};\n","/* @flow */\n/* eslint new-cap: 0 */\n\nimport { replaceObject } from '../lib';\nimport type { Component, ComponentDriverType } from '../component/component';\n\ntype Angular2Injection = {};\n\ntype Angular2Component = {};\n\ntype Angular2Module = {};\n\ntype Angular2 = {\n Component : ({ selector : string, template : string, inputs : Array }) => {\n Class : ({ constructor : Array, ngOnInit : () => void, ngOnChanges : () => void }) => Angular2Component\n },\n NgModule : ({ declarations : Array, exports : Array }) => {\n Class : ({ constructor : () => void }) => Angular2Module\n },\n ElementRef : Angular2Injection,\n NgZone : Angular2Injection\n};\n\n\nexport let angular2 : ComponentDriverType<*, Angular2> = {\n\n global() {\n // pass\n },\n\n register(zoid : Component<*>, { Component : AngularComponent, NgModule, ElementRef, NgZone }) : Angular2Module {\n\n zoid.log('initializing angular2 component');\n\n let getProps = (component) => {\n return replaceObject({ ...component.internalProps, ...component.props }, {\n 'function': (value) => {\n if (typeof value === 'function') {\n return function angular2Wrapped() : void {\n return component.zone.run(() => value.apply(this, arguments));\n };\n }\n }\n });\n };\n\n const ComponentInstance =\n AngularComponent({\n selector: zoid.tag,\n template: '

',\n inputs: [ 'props' ]\n }).Class({\n constructor: [ ElementRef, NgZone, function angularConstructor(elementRef, zone) {\n this.elementRef = elementRef;\n this.zone = zone;\n } ],\n ngOnInit () {\n const targetElement = this.elementRef.nativeElement;\n const parent = zoid.init(getProps(this), null, targetElement);\n parent.render(targetElement);\n this.parent = parent;\n },\n ngOnChanges() {\n if (this.parent) {\n this.parent.updateProps(getProps(this));\n }\n }\n });\n\n\n const ModuleInstance = NgModule({\n declarations: [ ComponentInstance ],\n exports: [ ComponentInstance ]\n }).Class({\n constructor () {\n // pass\n }\n });\n\n return ModuleInstance;\n }\n};\n","/*!\n * Bowser - a browser detector\n * https://github.com/ded/bowser\n * MIT License | (c) Dustin Diaz 2015\n */\n!function(e,t,n){typeof module!=\"undefined\"&&module.exports?module.exports=n():typeof define==\"function\"&&define.amd?define(t,n):e[t]=n()}(this,\"bowser\",function(){function t(t){function n(e){var n=t.match(e);return n&&n.length>1&&n[1]||\"\"}function r(e){var n=t.match(e);return n&&n.length>1&&n[2]||\"\"}function C(e){switch(e){case\"NT\":return\"NT\";case\"XP\":return\"XP\";case\"NT 5.0\":return\"2000\";case\"NT 5.1\":return\"XP\";case\"NT 5.2\":return\"2003\";case\"NT 6.0\":return\"Vista\";case\"NT 6.1\":return\"7\";case\"NT 6.2\":return\"8\";case\"NT 6.3\":return\"8.1\";case\"NT 10.0\":return\"10\";default:return undefined}}var i=n(/(ipod|iphone|ipad)/i).toLowerCase(),o=/like android/i.test(t),u=!o&&/android/i.test(t),a=/nexus\\s*[0-6]\\s*/i.test(t),f=!a&&/nexus\\s*[0-9]+/i.test(t),l=/CrOS/.test(t),c=/silk/i.test(t),h=/sailfish/i.test(t),p=/tizen/i.test(t),d=/(web|hpw)(o|0)s/i.test(t),v=/windows phone/i.test(t),m=/SamsungBrowser/i.test(t),g=!v&&/windows/i.test(t),y=!i&&!c&&/macintosh/i.test(t),b=!u&&!h&&!p&&!d&&/linux/i.test(t),w=r(/edg([ea]|ios)\\/(\\d+(\\.\\d+)?)/i),E=n(/version\\/(\\d+(\\.\\d+)?)/i),S=/tablet/i.test(t)&&!/tablet pc/i.test(t),x=!S&&/[^-]mobi/i.test(t),T=/xbox/i.test(t),N;/opera/i.test(t)?N={name:\"Opera\",opera:e,version:E||n(/(?:opera|opr|opios)[\\s\\/](\\d+(\\.\\d+)?)/i)}:/opr\\/|opios/i.test(t)?N={name:\"Opera\",opera:e,version:n(/(?:opr|opios)[\\s\\/](\\d+(\\.\\d+)?)/i)||E}:/SamsungBrowser/i.test(t)?N={name:\"Samsung Internet for Android\",samsungBrowser:e,version:E||n(/(?:SamsungBrowser)[\\s\\/](\\d+(\\.\\d+)?)/i)}:/Whale/i.test(t)?N={name:\"NAVER Whale browser\",whale:e,version:n(/(?:whale)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/MZBrowser/i.test(t)?N={name:\"MZ Browser\",mzbrowser:e,version:n(/(?:MZBrowser)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/coast/i.test(t)?N={name:\"Opera Coast\",coast:e,version:E||n(/(?:coast)[\\s\\/](\\d+(\\.\\d+)?)/i)}:/focus/i.test(t)?N={name:\"Focus\",focus:e,version:n(/(?:focus)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/yabrowser/i.test(t)?N={name:\"Yandex Browser\",yandexbrowser:e,version:E||n(/(?:yabrowser)[\\s\\/](\\d+(\\.\\d+)?)/i)}:/ucbrowser/i.test(t)?N={name:\"UC Browser\",ucbrowser:e,version:n(/(?:ucbrowser)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/mxios/i.test(t)?N={name:\"Maxthon\",maxthon:e,version:n(/(?:mxios)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/epiphany/i.test(t)?N={name:\"Epiphany\",epiphany:e,version:n(/(?:epiphany)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/puffin/i.test(t)?N={name:\"Puffin\",puffin:e,version:n(/(?:puffin)[\\s\\/](\\d+(?:\\.\\d+)?)/i)}:/sleipnir/i.test(t)?N={name:\"Sleipnir\",sleipnir:e,version:n(/(?:sleipnir)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/k-meleon/i.test(t)?N={name:\"K-Meleon\",kMeleon:e,version:n(/(?:k-meleon)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:v?(N={name:\"Windows Phone\",osname:\"Windows Phone\",windowsphone:e},w?(N.msedge=e,N.version=w):(N.msie=e,N.version=n(/iemobile\\/(\\d+(\\.\\d+)?)/i))):/msie|trident/i.test(t)?N={name:\"Internet Explorer\",msie:e,version:n(/(?:msie |rv:)(\\d+(\\.\\d+)?)/i)}:l?N={name:\"Chrome\",osname:\"Chrome OS\",chromeos:e,chromeBook:e,chrome:e,version:n(/(?:chrome|crios|crmo)\\/(\\d+(\\.\\d+)?)/i)}:/edg([ea]|ios)/i.test(t)?N={name:\"Microsoft Edge\",msedge:e,version:w}:/vivaldi/i.test(t)?N={name:\"Vivaldi\",vivaldi:e,version:n(/vivaldi\\/(\\d+(\\.\\d+)?)/i)||E}:h?N={name:\"Sailfish\",osname:\"Sailfish OS\",sailfish:e,version:n(/sailfish\\s?browser\\/(\\d+(\\.\\d+)?)/i)}:/seamonkey\\//i.test(t)?N={name:\"SeaMonkey\",seamonkey:e,version:n(/seamonkey\\/(\\d+(\\.\\d+)?)/i)}:/firefox|iceweasel|fxios/i.test(t)?(N={name:\"Firefox\",firefox:e,version:n(/(?:firefox|iceweasel|fxios)[ \\/](\\d+(\\.\\d+)?)/i)},/\\((mobile|tablet);[^\\)]*rv:[\\d\\.]+\\)/i.test(t)&&(N.firefoxos=e,N.osname=\"Firefox OS\")):c?N={name:\"Amazon Silk\",silk:e,version:n(/silk\\/(\\d+(\\.\\d+)?)/i)}:/phantom/i.test(t)?N={name:\"PhantomJS\",phantom:e,version:n(/phantomjs\\/(\\d+(\\.\\d+)?)/i)}:/slimerjs/i.test(t)?N={name:\"SlimerJS\",slimer:e,version:n(/slimerjs\\/(\\d+(\\.\\d+)?)/i)}:/blackberry|\\bbb\\d+/i.test(t)||/rim\\stablet/i.test(t)?N={name:\"BlackBerry\",osname:\"BlackBerry OS\",blackberry:e,version:E||n(/blackberry[\\d]+\\/(\\d+(\\.\\d+)?)/i)}:d?(N={name:\"WebOS\",osname:\"WebOS\",webos:e,version:E||n(/w(?:eb)?osbrowser\\/(\\d+(\\.\\d+)?)/i)},/touchpad\\//i.test(t)&&(N.touchpad=e)):/bada/i.test(t)?N={name:\"Bada\",osname:\"Bada\",bada:e,version:n(/dolfin\\/(\\d+(\\.\\d+)?)/i)}:p?N={name:\"Tizen\",osname:\"Tizen\",tizen:e,version:n(/(?:tizen\\s?)?browser\\/(\\d+(\\.\\d+)?)/i)||E}:/qupzilla/i.test(t)?N={name:\"QupZilla\",qupzilla:e,version:n(/(?:qupzilla)[\\s\\/](\\d+(?:\\.\\d+)+)/i)||E}:/chromium/i.test(t)?N={name:\"Chromium\",chromium:e,version:n(/(?:chromium)[\\s\\/](\\d+(?:\\.\\d+)?)/i)||E}:/chrome|crios|crmo/i.test(t)?N={name:\"Chrome\",chrome:e,version:n(/(?:chrome|crios|crmo)\\/(\\d+(\\.\\d+)?)/i)}:u?N={name:\"Android\",version:E}:/safari|applewebkit/i.test(t)?(N={name:\"Safari\",safari:e},E&&(N.version=E)):i?(N={name:i==\"iphone\"?\"iPhone\":i==\"ipad\"?\"iPad\":\"iPod\"},E&&(N.version=E)):/googlebot/i.test(t)?N={name:\"Googlebot\",googlebot:e,version:n(/googlebot\\/(\\d+(\\.\\d+))/i)||E}:N={name:n(/^(.*)\\/(.*) /),version:r(/^(.*)\\/(.*) /)},!N.msedge&&/(apple)?webkit/i.test(t)?(/(apple)?webkit\\/537\\.36/i.test(t)?(N.name=N.name||\"Blink\",N.blink=e):(N.name=N.name||\"Webkit\",N.webkit=e),!N.version&&E&&(N.version=E)):!N.opera&&/gecko\\//i.test(t)&&(N.name=N.name||\"Gecko\",N.gecko=e,N.version=N.version||n(/gecko\\/(\\d+(\\.\\d+)?)/i)),!N.windowsphone&&(u||N.silk)?(N.android=e,N.osname=\"Android\"):!N.windowsphone&&i?(N[i]=e,N.ios=e,N.osname=\"iOS\"):y?(N.mac=e,N.osname=\"macOS\"):T?(N.xbox=e,N.osname=\"Xbox\"):g?(N.windows=e,N.osname=\"Windows\"):b&&(N.linux=e,N.osname=\"Linux\");var k=\"\";N.windows?k=C(n(/Windows ((NT|XP)( \\d\\d?.\\d)?)/i)):N.windowsphone?k=n(/windows phone (?:os)?\\s?(\\d+(\\.\\d+)*)/i):N.mac?(k=n(/Mac OS X (\\d+([_\\.\\s]\\d+)*)/i),k=k.replace(/[_\\s]/g,\".\")):i?(k=n(/os (\\d+([_\\s]\\d+)*) like mac os x/i),k=k.replace(/[_\\s]/g,\".\")):u?k=n(/android[ \\/-](\\d+(\\.\\d+)*)/i):N.webos?k=n(/(?:web|hpw)os\\/(\\d+(\\.\\d+)*)/i):N.blackberry?k=n(/rim\\stablet\\sos\\s(\\d+(\\.\\d+)*)/i):N.bada?k=n(/bada\\/(\\d+(\\.\\d+)*)/i):N.tizen&&(k=n(/tizen[\\/\\s](\\d+(\\.\\d+)*)/i)),k&&(N.osversion=k);var L=!N.windows&&k.split(\".\")[0];if(S||f||i==\"ipad\"||u&&(L==3||L>=4&&!x)||N.silk)N.tablet=e;else if(x||i==\"iphone\"||i==\"ipod\"||u||a||N.blackberry||N.webos||N.bada)N.mobile=e;return N.msedge||N.msie&&N.version>=10||N.yandexbrowser&&N.version>=15||N.vivaldi&&N.version>=1||N.chrome&&N.version>=20||N.samsungBrowser&&N.version>=4||N.whale&&s([N.version,\"1.0\"])===1||N.mzbrowser&&s([N.version,\"6.0\"])===1||N.focus&&s([N.version,\"1.0\"])===1||N.firefox&&N.version>=20||N.safari&&N.version>=6||N.opera&&N.version>=10||N.ios&&N.osversion&&N.osversion.split(\".\")[0]>=6||N.blackberry&&N.version>=10.1||N.chromium&&N.version>=20?N.a=e:N.msie&&N.version<10||N.chrome&&N.version<20||N.firefox&&N.version<20||N.safari&&N.version<6||N.opera&&N.version<10||N.ios&&N.osversion&&N.osversion.split(\".\")[0]<6||N.chromium&&N.version<20?N.c=e:N.x=e,N}function r(e){return e.split(\".\").length}function i(e,t){var n=[],r;if(Array.prototype.map)return Array.prototype.map.call(e,t);for(r=0;r=0){if(n[0][t]>n[1][t])return 1;if(n[0][t]!==n[1][t])return-1;if(t===0)return 0}}function o(e,r,i){var o=n;typeof r==\"string\"&&(i=r,r=void 0),r===void 0&&(r=!1),i&&(o=t(i));var u=\"\"+o.version;for(var a in e)if(e.hasOwnProperty(a)&&o[a]){if(typeof e[a]!=\"string\")throw new Error(\"Browser version in the minVersion map should be a string: \"+a+\": \"+String(e));return s([u,e[a]])<0}return r}function u(e,t,n){return!o(e,t,n)}var e=!0,n=t(typeof navigator!=\"undefined\"?navigator.userAgent||\"\":\"\");return n.test=function(e){for(var t=0;t\\n \\n \\n \\n \\n \\n \\n \\n \\n\\n\"","module.exports = \"\\n \\n \\n \\n\\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n \\n \\n \\n \\n \\n \\n \\n\\n\"","module.exports = \"\\n\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n \\n \\n \\n \\n \\n \\n \\n\\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n\\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n unionpay\\n Created with Sketch.\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","/* @flow */\n\nimport { beacon } from './lib/beacon';\nimport { extendNamespace } from './lib/namespace';\nimport { stringifyError } from './lib/util';\nimport { isPayPalDomain } from './lib/security';\n\nif (!__PAYPAL_CHECKOUT__.__MAJOR__ && !isPayPalDomain() && !__TEST__) {\n throw new Error(`Do not integrate with versioned script url`);\n}\n\nif (window.paypal && window.paypal.version === __PAYPAL_CHECKOUT__.__MINOR_VERSION__) {\n\n beacon('bootstrap_already_loaded_same_version', {\n version: __PAYPAL_CHECKOUT__.__MINOR_VERSION__\n });\n\n throw new Error(`PayPal Checkout Integration Script with same version (${ __PAYPAL_CHECKOUT__.__MINOR_VERSION__ }) already loaded on page`);\n\n} else if (window.paypal && window.paypal.version && window.paypal.version !== __PAYPAL_CHECKOUT__.__MINOR_VERSION__ && window.paypal.Button && window.paypal.Button.render) {\n\n beacon('bootstrap_already_loaded_different_version', {\n existingVersion: window.paypal.version,\n version: __PAYPAL_CHECKOUT__.__MINOR_VERSION__\n });\n\n throw new Error(`PayPal Checkout Integration Script with different version (${ window.paypal.version }) already loaded on page, current version: ${ __PAYPAL_CHECKOUT__.__MINOR_VERSION__ }`);\n\n} else {\n\n try {\n const _interface = require('./index');\n extendNamespace(_interface, [ 'paypal', 'PAYPAL', 'ppxo' ], [ 'apps' ]);\n\n } catch (err) {\n\n beacon('bootstrap_error', {\n error: stringifyError(err),\n errtype: ({}).toString.call(err)\n });\n\n throw err;\n }\n}\n","/* @flow */\n\nexport { openBridge, linkUrl, isBridge, needsBridge, needsBridgeForBrowser, hasBridge,\n needsBridgeForWin, needsBridgeForDomain, openTunnelToOpener, destroyBridges } from './index';\n","/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\n","module.exports = function() {\n\tthrow new Error(\"define cannot be used indirect\");\n};\n","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object.keys(descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object.defineProperty(target, property, desc);\n desc = null;\n }\n\n return desc;\n}","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { on } from 'post-robot/src';\nimport { type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { copyProp, eventEmitter, type EventEmitterType, stringifyError, noop } from '../lib';\nimport type { CancelableType } from '../types';\n\nimport type { Component } from './component';\n\ntype CleanupType = {\n set : (string, T) => T, // eslint-disable-line no-undef\n register : (string | Function, ?Function) => void,\n hasTasks : () => boolean,\n all : () => ZalgoPromise,\n run : (string) => ZalgoPromise\n};\n\nfunction cleanup(obj : Object) : CleanupType {\n\n let tasks = [];\n let cleaned = false;\n\n return {\n\n set(name : string, item : T) : T {\n\n if (cleaned) {\n return item;\n }\n\n obj[name] = item;\n this.register(() => {\n delete obj[name];\n });\n return item;\n },\n\n register(name : string | Function, method : ?Function) {\n\n if (typeof name === 'function') {\n method = name;\n name = '';\n }\n\n if (typeof method !== 'function') {\n throw new TypeError(`Expected to be passed function to clean.register`);\n }\n\n if (cleaned) {\n method();\n return;\n }\n\n tasks.push({\n complete: false,\n\n name,\n\n run() {\n\n if (this.complete) {\n return;\n }\n\n this.complete = true;\n\n if (method) {\n method();\n }\n }\n });\n },\n\n hasTasks() : boolean {\n return Boolean(tasks.filter(item => !item.complete).length);\n },\n\n all() : ZalgoPromise {\n let results = [];\n\n cleaned = true;\n\n while (tasks.length) {\n results.push(tasks.pop().run());\n }\n\n return ZalgoPromise.all(results).then(() => { /* pass */ });\n },\n\n run(name : string) : ZalgoPromise {\n let results = [];\n\n for (let item of tasks) {\n if (item.name === name) {\n results.push(item.run());\n }\n }\n\n return ZalgoPromise.all(results).then(noop);\n }\n };\n}\n\n\n/* Base Component\n --------------\n\n Methods that are common between child and parent components, but are not generic or uncoupled enough to live in\n a separate library.\n*/\n\nexport class BaseComponent

{\n\n clean : CleanupType\n event : EventEmitterType\n component : Component

\n\n constructor() {\n this.clean = cleanup(this);\n this.event = eventEmitter();\n }\n\n addProp(options : Object, name : string, def : mixed) {\n copyProp(options, this, name, def);\n }\n\n on(eventName : string, handler : () => void) : CancelableType {\n return this.event.on(eventName, handler);\n }\n\n listeners() {\n throw new Error(`Expected listeners to be implemented`);\n }\n\n error(err : mixed) : ZalgoPromise {\n throw new Error(`Expected error to be implemented - got ${ stringifyError(err) }`);\n }\n\n /* Listen\n ------\n\n Listen for any post messages defined in this.listeners(). All (most) of our communication is done via\n post-messages, so this sets up an easy way to create a collection of listeners in one go.\n\n All post-messaging is done using post-robot.\n */\n\n listen(win : CrossDomainWindowType, domain : string | RegExp) {\n\n if (!win) {\n throw this.component.createError(`window to listen to not set`);\n }\n\n if (!domain) {\n throw new Error(`Must pass domain to listen to`);\n }\n\n if (!this.listeners) {\n return;\n }\n\n let listeners = this.listeners();\n\n for (let listenerName of Object.keys(listeners)) {\n\n let name = listenerName.replace(/^zoid_/, '');\n\n let errorHandler = (err) => {\n this.error(err);\n };\n\n let listener = on(listenerName, { window: win, domain, errorHandler }, ({ source, data }) => {\n this.component.log(`listener_${ name }`);\n return listeners[listenerName].call(this, source, data);\n });\n\n let errorListener = on(listenerName, { window: win, errorHandler }, ({ origin }) => {\n this.component.logError(`unexpected_listener_${ name }`, { origin, domain: domain.toString() });\n this.error(new Error(`Unexpected ${ name } message from domain ${ origin } -- expected message from ${ domain.toString() }`));\n });\n\n this.clean.register(() => {\n listener.cancel();\n errorListener.cancel();\n });\n }\n }\n}\n","/* @flow */\n\nimport { getOpener, getTop, getParent, getNthParentFromTop, getAllFramesInWindow, getAncestor, getDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport base32 from 'hi-base32';\n\nimport { memoize, uniqueID, globalFor, stringifyError } from '../lib';\nimport { WINDOW_REFERENCES } from '../constants';\nimport type { DimensionsType, PositionType } from '../types';\n\n\nfunction normalize(str : string) : string {\n return str.replace(/^[^a-z0-9A-Z]+|[^a-z0-9A-Z]+$/g, '').replace(/[^a-z0-9A-Z]+/g, '_');\n}\n\nfunction encode(str : string) : string {\n return base32.encode(str).replace(/\\=/g, '').toLowerCase(); // eslint-disable-line no-useless-escape\n}\n\nfunction decode(str : string) : string {\n return base32.decode(str.toUpperCase());\n}\n\n\n/* Build Child Window Name\n -----------------------\n\n Build a name for our child window. This should identify the following things to the child:\n\n - That the window was created by, and is owned by zoid\n - The name of the child's parent. This is so the child can identify which window created it, even when we do a\n renderTo, in which case the true parent may actually be a sibling frame in the window hierarchy\n\n We base64 encode the window name so IE doesn't die when it encounters any characters that it doesn't like.\n*/\n\nexport function buildChildWindowName(name : string, version : string, options : Object = {}) : string {\n\n options.id = uniqueID();\n options.domain = getDomain(window);\n\n let encodedName = normalize(name);\n let encodedVersion = normalize(version);\n let encodedOptions = encode(JSON.stringify(options));\n\n if (!encodedName) {\n throw new Error(`Invalid name: ${ name } - must contain alphanumeric characters`);\n }\n\n if (!encodedVersion) {\n throw new Error(`Invalid version: ${ version } - must contain alphanumeric characters`);\n }\n\n return [\n 'xcomponent',\n encodedName,\n encodedVersion,\n encodedOptions,\n ''\n ].join('__');\n}\n\nexport let isZoidComponentWindow = memoize(() => {\n if (!window.name) {\n return false;\n }\n\n let [ zoidcomp ] = window.name.split('__');\n\n if (zoidcomp !== 'xcomponent') {\n return false;\n }\n\n return true;\n});\n\n/* Parse Window Name\n -----------------\n\n The inverse of buildChildWindowName. Base64 decodes and json parses the window name to get the original props\n passed down, including the parent name. Only accepts window names built by zoid\n*/\n\nexport let getComponentMeta = memoize(() => {\n\n if (!window.name) {\n throw new Error(`Can not get component meta without window name`);\n }\n\n let [ zoidcomp, name, version, encodedOptions ] = window.name.split('__');\n\n if (zoidcomp !== 'xcomponent') {\n throw new Error(`Window not rendered by zoid - got ${ zoidcomp }`);\n }\n\n let componentMeta;\n\n try {\n componentMeta = JSON.parse(decode(encodedOptions));\n } catch (err) {\n throw new Error(`Can not decode component-meta: ${ encodedOptions } ${ stringifyError(err) }`);\n }\n\n componentMeta.name = name;\n componentMeta.version = version.replace(/_/g, '.');\n\n return componentMeta;\n});\n\nexport function getParentDomain() : string {\n return getComponentMeta().domain; // How does this work for renderTo..?\n}\n\nfunction getWindowByRef({ ref, uid, distance } : { ref : string, uid : string, distance : number }) : CrossDomainWindowType {\n\n let result;\n\n if (ref === WINDOW_REFERENCES.OPENER) {\n result = getOpener(window);\n\n } else if (ref === WINDOW_REFERENCES.TOP) {\n result = getTop(window);\n\n } else if (ref === WINDOW_REFERENCES.PARENT) {\n\n if (distance) {\n result = getNthParentFromTop(window, distance);\n } else {\n result = getParent(window);\n }\n }\n\n if (ref === WINDOW_REFERENCES.GLOBAL) {\n let ancestor = getAncestor(window);\n\n if (ancestor) {\n for (let frame of getAllFramesInWindow(ancestor)) {\n let global = globalFor(frame);\n\n if (global && global.windows && global.windows[uid]) {\n result = global.windows[uid];\n break;\n }\n }\n }\n }\n\n if (!result) {\n throw new Error(`Unable to find window by ref`);\n }\n\n return result;\n}\n\n/* Get Parent Component Window\n ---------------------------\n\n Get the parent component window, which may be different from the actual parent window\n*/\n\nexport let getParentComponentWindow = memoize(() => {\n\n let componentMeta = getComponentMeta();\n\n if (!componentMeta) {\n throw new Error(`Can not get parent component window - window not rendered by zoid`);\n }\n\n return getWindowByRef(componentMeta.componentParent);\n});\n\n\nexport let getParentRenderWindow = memoize(() => {\n\n let componentMeta = getComponentMeta();\n\n if (!componentMeta) {\n throw new Error(`Can not get parent component window - window not rendered by zoid`);\n }\n\n return getWindowByRef(componentMeta.renderParent);\n});\n\n\n/* Get Position\n ------------\n\n Calculate the position for the popup\n\n This is either\n - Specified by the user\n - The center of the screen\n\n I'd love to do this with pure css, but alas... popup windows :(\n*/\n\nexport function getPosition({ width, height } : DimensionsType) : PositionType {\n\n let x = 0;\n let y = 0;\n\n if (width) {\n if (window.outerWidth) {\n x = Math.round((window.outerWidth - width) / 2) + window.screenX;\n } else if (window.screen.width) {\n x = Math.round((window.screen.width - width) / 2);\n }\n }\n\n if (height) {\n if (window.outerHeight) {\n y = Math.round((window.outerHeight - height) / 2) + window.screenY;\n } else if (window.screen.height) {\n y = Math.round((window.screen.height - height) / 2);\n }\n }\n\n return { x, y };\n}\n","/* @flow */\n\nimport { getDomain } from 'cross-domain-utils/src';\n\nimport type { Component } from '../component';\nimport type { BuiltInPropsType, MixedPropDefinitionType } from '../component/props';\n\nexport function normalizeChildProp(component : Component

, props : (BuiltInPropsType & P), key : string, value : T) : ?T {\n\n // $FlowFixMe\n let prop : MixedPropDefinitionType

= component.getProp(key);\n\n if (!prop) {\n if (component.looseProps) {\n return value;\n } else {\n return;\n }\n }\n\n if (typeof prop.childDecorate === 'function') {\n return prop.childDecorate(value);\n }\n\n return value;\n}\n\n\nexport function normalizeChildProps

(component : Component

, props : (BuiltInPropsType & P), origin : string, required : boolean = true) : (BuiltInPropsType & P) {\n\n let result = {};\n\n for (let key of Object.keys(props)) {\n\n let prop = component.getProp(key);\n let value = props[key];\n\n if (prop && prop.sameDomain && origin !== getDomain(window)) {\n continue;\n }\n\n result[key] = normalizeChildProp(component, props, key, value);\n\n if (prop && prop.alias && !result[prop.alias]) {\n result[prop.alias] = value;\n }\n }\n\n if (required) {\n for (let key of component.getPropNames()) {\n if (!props.hasOwnProperty(key)) {\n result[key] = normalizeChildProp(component, props, key, props[key]);\n }\n }\n }\n\n // $FlowFixMe\n return result;\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { flush } from 'beaver-logger/client';\nimport { isSameDomain, matchDomain, getDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { send } from 'post-robot/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { onResize } from 'belter/src';\n\nimport { BaseComponent } from '../base';\nimport { getParentComponentWindow, getComponentMeta, getParentDomain, getParentRenderWindow } from '../window';\nimport { extend, deserializeFunctions, get, stringify,\n globalFor, setLogLevel, getElement, noop, stringifyError } from '../../lib';\nimport { POST_MESSAGE, CONTEXT_TYPES, CLOSE_REASONS, INITIAL_PROPS } from '../../constants';\nimport { RenderError } from '../../error';\nimport type { Component } from '../component';\nimport type { BuiltInPropsType } from '../component/props';\n\nimport { normalizeChildProps } from './props';\n\nexport type ChildExportsType

= {\n updateProps : (props : (BuiltInPropsType & P)) => ZalgoPromise,\n close : () => ZalgoPromise\n};\n\n/* Child Component\n ---------------\n\n This is the portion of code which runs inside the frame or popup window containing the component's implementation.\n\n When the component author calls myComponent.attach(), it creates a new instance of ChildComponent, which is then\n responsible for managing the state and messaging back up to the parent, and providing props for the component to\n utilize.\n*/\n\nexport class ChildComponent

extends BaseComponent

{\n\n component : Component

\n props : BuiltInPropsType & P\n context : string\n\n onPropHandlers : Array<(BuiltInPropsType & P) => void>\n onInit : ZalgoPromise>\n watchingForResize : boolean\n autoResize : { width : boolean, height : boolean, element? : string }\n\n constructor(component : Component

) {\n super();\n this.component = component;\n\n if (!this.hasValidParentDomain()) {\n this.error(new RenderError(`Can not be rendered by domain: ${ this.getParentDomain() }`));\n return;\n }\n\n this.component.log(`construct_child`);\n\n // The child can specify some default props if none are passed from the parent. This often makes integrations\n // a little more seamless, as applicaiton code can call props.foo() without worrying about whether the parent\n // has provided them or not, and fall-back to some default behavior.\n\n this.onPropHandlers = [];\n\n for (let item of [ this.component, window ]) {\n for (let [ name, getter ] of [ [ 'xchild', () => this ], [ 'xprops', () => this.props ] ]) {\n // $FlowFixMe\n Object.defineProperty(item, name, {\n configurable: true,\n get: () => {\n if (!this.props) {\n this.setProps(this.getInitialProps(), getParentDomain());\n }\n // $FlowFixMe\n delete item[name];\n // $FlowFixMe\n item[name] = getter();\n // $FlowFixMe\n return item[name];\n }\n });\n }\n }\n\n this.component.log(`init_child`);\n\n this.setWindows();\n\n // Send an init message to our parent. This gives us an initial set of data to use that we can use to function.\n //\n // For example:\n //\n // - What context are we\n // - What props has the parent specified\n\n this.onInit = this.sendToParent(POST_MESSAGE.INIT, {\n\n exports: this.exports()\n\n }).then(({ origin, data }) => {\n\n this.context = data.context;\n this.setProps(data.props, origin);\n\n this.watchForResize();\n\n return this;\n\n }).catch(err => {\n\n this.error(err);\n throw err;\n });\n }\n\n hasValidParentDomain() : boolean {\n return matchDomain(this.component.allowedParentDomains, this.getParentDomain());\n }\n\n init() : ZalgoPromise> {\n return this.onInit;\n }\n\n getParentDomain() : string {\n return getParentDomain();\n }\n\n onProps(handler : Function) {\n this.onPropHandlers.push(handler);\n }\n\n getParentComponentWindow() : CrossDomainWindowType {\n return getParentComponentWindow();\n }\n\n getParentRenderWindow() : CrossDomainWindowType {\n return getParentRenderWindow();\n }\n\n getInitialProps() : (BuiltInPropsType & P) {\n let componentMeta = getComponentMeta();\n\n let props = componentMeta.props;\n\n if (props.type === INITIAL_PROPS.RAW) {\n props = props.value;\n } else if (props.type === INITIAL_PROPS.UID) {\n\n let parentComponentWindow = getParentComponentWindow();\n\n if (!isSameDomain(parentComponentWindow)) {\n\n if (window.location.protocol === 'file:') {\n throw new Error(`Can not get props from file:// domain`);\n }\n\n throw new Error(`Parent component window is on a different domain - expected ${ getDomain() } - can not retrieve props`);\n }\n\n let global = globalFor(parentComponentWindow);\n\n if (!global) {\n throw new Error(`Can not find global for parent component - can not retrieve props`);\n }\n\n props = JSON.parse(global.props[componentMeta.uid]);\n\n } else {\n throw new Error(`Unrecognized props type: ${ props.type }`);\n }\n\n if (!props) {\n throw new Error(`Initial props not found`);\n }\n \n return deserializeFunctions(props, ({ fullKey, self, args }) => {\n return this.onInit.then(() => {\n let func = get(this.props, fullKey);\n\n if (typeof func !== 'function') {\n throw new TypeError(`Expected ${ fullKey } to be function, got ${ typeof func }`);\n }\n\n return func.apply(self, args);\n });\n });\n }\n\n\n setProps(props : (BuiltInPropsType & P), origin : string, required : boolean = true) {\n // $FlowFixMe\n this.props = this.props || {};\n let normalizedProps = normalizeChildProps(this.component, props, origin, required);\n extend(this.props, normalizedProps);\n if (this.props.logLevel) {\n setLogLevel(this.props.logLevel);\n }\n for (let handler of this.onPropHandlers) {\n handler.call(this, this.props);\n }\n }\n\n\n /* Send to Parent\n --------------\n\n Send a post message to our parent window.\n */\n\n sendToParent(name : string, data : ?Object = {}, options : ?Object = {}) : ZalgoPromise<{ origin : string, source : CrossDomainWindowType, data : Object }> {\n let parentWindow = getParentComponentWindow();\n\n if (!parentWindow) {\n throw new Error(`Can not find parent component window to message`);\n }\n\n this.component.log(`send_to_parent_${ name }`);\n\n return send(parentWindow, name, data, { domain: getParentDomain(), ...options });\n }\n\n\n /* Set Windows\n -----------\n\n Determine the parent window, and the parent component window. Note -- these may be different, if we were\n rendered using renderTo.\n */\n\n setWindows() {\n\n\n // Ensure we do not try to .attach() multiple times for the same component on the same page\n\n if (window.__activeZoidComponent__) {\n throw this.component.createError(`Can not attach multiple components to the same window`);\n }\n\n window.__activeZoidComponent__ = this;\n\n // Get the direct parent window\n\n if (!getParentComponentWindow()) {\n throw this.component.createError(`Can not find parent window`);\n }\n\n let componentMeta = getComponentMeta();\n\n if (componentMeta.tag !== this.component.tag) {\n throw this.component.createError(`Parent is ${ componentMeta.tag } - can not attach ${ this.component.tag }`);\n }\n\n // Note -- getting references to other windows is probably one of the hardest things to do. There's basically\n // only a few ways of doing it:\n //\n // - The window is a direct parent, in which case you can use window.parent or window.opener\n // - The window is an iframe owned by you or one of your parents, in which case you can use window.frames\n // - The window sent you a post-message, in which case you can use event.source\n //\n // If we didn't rely on winProps.parent here from the window name, we'd have to relay all of our messages through\n // our actual parent. Which is no fun at all, and pretty error prone even with the help of post-robot. So this\n // is the lesser of two evils until browsers give us something like getWindowByName(...)\n\n // If the parent window closes, we need to close ourselves. There's no point continuing to run our component\n // if there's no parent to message to.\n\n this.watchForClose();\n }\n\n watchForClose() {\n window.addEventListener('unload', () => this.checkClose());\n }\n\n enableAutoResize({ width = true, height = true } : { width : boolean, height : boolean } = {}) {\n this.autoResize = { width, height };\n this.watchForResize();\n }\n\n getAutoResize() : { width : boolean, height : boolean, element : HTMLElement } {\n\n let width = false;\n let height = false;\n\n let autoResize = this.autoResize || this.component.autoResize;\n\n if (typeof autoResize === 'object') {\n width = Boolean(autoResize.width);\n height = Boolean(autoResize.height);\n } else if (autoResize) {\n width = true;\n height = true;\n }\n\n let element;\n\n if (autoResize.element) {\n element = getElement(autoResize.element);\n } else {\n element = document.body;\n }\n\n // $FlowFixMe\n return { width, height, element };\n }\n\n watchForResize() : ?ZalgoPromise {\n\n let { width, height, element } = this.getAutoResize();\n\n if (!width && !height) {\n return;\n }\n\n if (this.context === CONTEXT_TYPES.POPUP) {\n return;\n }\n\n if (this.watchingForResize) {\n return;\n }\n\n this.watchingForResize = true;\n \n onResize(element, ({ width: newWidth, height: newHeight }) => {\n this.resize(width ? newWidth : undefined, height ? newHeight : undefined);\n }, { width, height });\n }\n\n\n exports() : ChildExportsType

{\n\n let self = this;\n\n return {\n updateProps(props : (BuiltInPropsType & P)) : ZalgoPromise {\n return ZalgoPromise.try(() => self.setProps(props, this.origin, false));\n },\n\n close() : ZalgoPromise {\n return ZalgoPromise.try(() => self.destroy());\n }\n };\n }\n\n\n /* Resize\n ------\n\n Resize the child window. Must be done on a user action like a click if we're in a popup\n */\n\n resize(width : ?number, height : ?number) : ZalgoPromise {\n return ZalgoPromise.resolve().then(() => {\n\n this.component.log(`resize`, { width: stringify(width), height: stringify(height) });\n\n if (this.context === CONTEXT_TYPES.POPUP) {\n return;\n }\n\n return this.sendToParent(POST_MESSAGE.RESIZE, { width, height }).then(noop);\n });\n }\n\n /* Hide\n ----\n\n Hide the window and any parent template\n */\n\n hide() : ZalgoPromise {\n return this.sendToParent(POST_MESSAGE.HIDE).then(noop);\n }\n\n show() : ZalgoPromise {\n return this.sendToParent(POST_MESSAGE.SHOW).then(noop);\n }\n\n userClose() : void {\n return this.close(CLOSE_REASONS.USER_CLOSED);\n }\n\n\n /* Close\n -----\n\n Close the child window\n */\n\n close(reason : string = CLOSE_REASONS.CHILD_CALL) {\n\n this.component.log(`close_child`);\n\n // Ask our parent window to close us\n\n this.sendToParent(POST_MESSAGE.CLOSE, { reason });\n }\n\n checkClose() {\n this.sendToParent(POST_MESSAGE.CHECK_CLOSE, {}, { fireAndForget: true });\n }\n\n\n destroy() : ZalgoPromise {\n return flush().then(() => {\n window.close();\n });\n }\n\n\n /* Focus\n -----\n\n Focus the child window. Must be done on a user action like a click\n */\n\n focus() {\n this.component.log(`focus`);\n\n window.focus();\n }\n\n\n /* Error\n -----\n\n Send an error back to the parent\n */\n\n error(err : mixed) : ZalgoPromise {\n\n let stringifiedError = stringifyError(err);\n\n this.component.logError(`error`, { error: stringifiedError });\n\n return this.sendToParent(POST_MESSAGE.ERROR, {\n error: stringifiedError\n }).then(noop);\n }\n}\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { cleanUpWindow } from 'post-robot/src';\nimport { findFrameByName, isSameDomain } from 'cross-domain-utils/src';\n\nimport { iframe, popup, toCSS, showElement, hideElement,\n destroyElement, normalizeDimension, watchElementForClose,\n awaitFrameWindow, addClass, removeClass, noop } from '../../lib';\nimport { CONTEXT_TYPES, DELEGATE, CLOSE_REASONS, CLASS_NAMES, DEFAULT_DIMENSIONS } from '../../constants';\nimport { getPosition, getParentComponentWindow } from '../window';\n\n\nexport type ContextDriverType = {\n\n focusable : boolean,\n renderedIntoContainerTemplate : boolean,\n allowResize : boolean,\n openOnClick : boolean,\n needsBridge : boolean,\n\n open : (?string) => ZalgoPromise,\n resize : (?(number | string), ?(number | string)) => void,\n show : () => void,\n hide : () => void,\n loadUrl : (string) => void,\n\n delegateOverrides : {\n [string] : string | Function\n },\n\n openPrerender : () => ZalgoPromise,\n switchPrerender? : () => void\n};\n\n/* Render Drivers\n --------------\n\n There are various differences in how we treat:\n\n - Opening frames and windows\n - Rendering up to the parent\n - Resizing\n - etc.\n\n based on the context we're rendering to.\n\n These render drivers split this functionality out in a driver pattern, so our component code doesn't bunch up into a\n series of if-popup-then-else-if-iframe code.\n*/\n\nexport let RENDER_DRIVERS : { [string] : ContextDriverType } = {};\n\n// Iframe context is rendered inline on the page, without any kind of parent template. It's the one context that is designed\n// to feel like a native element on the page.\n\nRENDER_DRIVERS[CONTEXT_TYPES.IFRAME] = {\n\n focusable: false,\n renderedIntoContainerTemplate: true,\n allowResize: true,\n openOnClick: false,\n needsBridge: false,\n\n open(url : ?string) : ZalgoPromise {\n\n let attributes = this.component.attributes.iframe || {};\n\n this.iframe = iframe({\n url,\n attributes: {\n name: this.childWindowName,\n title: this.component.name,\n scrolling: this.component.scrolling ? 'yes' : 'no',\n ...attributes\n },\n class: [\n CLASS_NAMES.COMPONENT_FRAME,\n CLASS_NAMES.INVISIBLE\n ]\n }, this.element);\n\n return awaitFrameWindow(this.iframe).then(frameWindow => {\n\n this.window = frameWindow;\n\n let detectClose = () => {\n return ZalgoPromise.try(() => {\n return this.props.onClose(CLOSE_REASONS.CLOSE_DETECTED);\n }).finally(() => {\n return this.destroy();\n });\n };\n\n let iframeWatcher = watchElementForClose(this.iframe, detectClose);\n let elementWatcher = watchElementForClose(this.element, detectClose);\n\n this.clean.register('destroyWindow', () => {\n\n iframeWatcher.cancel();\n elementWatcher.cancel();\n\n cleanUpWindow(this.window);\n\n delete this.window;\n\n if (this.iframe) {\n destroyElement(this.iframe);\n delete this.iframe;\n }\n });\n });\n },\n\n openPrerender() : ZalgoPromise {\n\n let attributes = this.component.attributes.iframe || {};\n\n this.prerenderIframe = iframe({\n attributes: {\n name: `__prerender__${ this.childWindowName }`,\n scrolling: this.component.scrolling ? 'yes' : 'no',\n ...attributes\n },\n class: [\n CLASS_NAMES.PRERENDER_FRAME,\n CLASS_NAMES.VISIBLE\n ]\n }, this.element);\n\n return awaitFrameWindow(this.prerenderIframe).then(prerenderFrameWindow => {\n\n this.prerenderWindow = prerenderFrameWindow;\n\n this.clean.register('destroyPrerender', () => {\n\n if (this.prerenderIframe) {\n destroyElement(this.prerenderIframe);\n delete this.prerenderIframe;\n }\n });\n });\n },\n\n switchPrerender() {\n\n addClass(this.prerenderIframe, CLASS_NAMES.INVISIBLE);\n removeClass(this.prerenderIframe, CLASS_NAMES.VISIBLE);\n\n addClass(this.iframe, CLASS_NAMES.VISIBLE);\n removeClass(this.iframe, CLASS_NAMES.INVISIBLE);\n\n setTimeout(() => {\n if (this.prerenderIframe) {\n destroyElement(this.prerenderIframe);\n }\n }, 1000);\n },\n\n delegateOverrides: {\n\n openContainer: DELEGATE.CALL_DELEGATE,\n destroyComponent: DELEGATE.CALL_DELEGATE,\n destroyContainer: DELEGATE.CALL_DELEGATE,\n cancelContainerEvents: DELEGATE.CALL_DELEGATE,\n createPrerenderTemplate: DELEGATE.CALL_DELEGATE,\n elementReady: DELEGATE.CALL_DELEGATE,\n showContainer: DELEGATE.CALL_DELEGATE,\n showComponent: DELEGATE.CALL_DELEGATE,\n hideContainer: DELEGATE.CALL_DELEGATE,\n hideComponent: DELEGATE.CALL_DELEGATE,\n hide: DELEGATE.CALL_DELEGATE,\n show: DELEGATE.CALL_DELEGATE,\n resize: DELEGATE.CALL_DELEGATE,\n loadUrl: DELEGATE.CALL_DELEGATE,\n hijackSubmit: DELEGATE.CALL_DELEGATE,\n openPrerender: DELEGATE.CALL_DELEGATE,\n switchPrerender: DELEGATE.CALL_DELEGATE,\n\n renderTemplate: DELEGATE.CALL_ORIGINAL,\n openContainerFrame: DELEGATE.CALL_ORIGINAL,\n getOutlet: DELEGATE.CALL_ORIGINAL,\n\n open(original : () => ZalgoPromise, override : () => ZalgoPromise) : () => ZalgoPromise {\n return function overrideOpen() : ZalgoPromise {\n return override.apply(this, arguments).then(() => {\n this.clean.set('window', findFrameByName(getParentComponentWindow(), this.childWindowName));\n\n if (!this.window) {\n throw new Error(`Unable to find parent component iframe window`);\n }\n });\n };\n }\n },\n\n resize(width : ?(number | string), height : ?(number | string)) {\n\n if (width) {\n this.container.style.width = toCSS(width);\n this.element.style.width = toCSS(width);\n }\n\n if (height) {\n this.container.style.height = toCSS(height);\n this.element.style.height = toCSS(height);\n }\n },\n\n show() {\n showElement(this.element);\n },\n\n hide() {\n hideElement(this.element);\n },\n\n loadUrl(url : string) {\n this.iframe.setAttribute('src', url);\n }\n};\n\nif (__ZOID__.__POPUP_SUPPORT__) {\n\n // Popup context opens up a centered popup window on the page.\n\n RENDER_DRIVERS[CONTEXT_TYPES.POPUP] = {\n\n focusable: true,\n renderedIntoContainerTemplate: false,\n allowResize: false,\n openOnClick: true,\n needsBridge: true,\n\n open(url : ?string = '') : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n let {\n width = DEFAULT_DIMENSIONS.WIDTH,\n height = DEFAULT_DIMENSIONS.HEIGHT\n } = this.component.dimensions || {};\n\n width = normalizeDimension(width, window.outerWidth);\n height = normalizeDimension(height, window.outerWidth);\n\n let { x, y } = getPosition({ width, height });\n\n let attributes = this.component.attributes.popup || {};\n\n this.window = popup(url || '', {\n name: this.childWindowName,\n width,\n height,\n top: y,\n left: x,\n status: 1,\n toolbar: 0,\n menubar: 0,\n resizable: 1,\n scrollbars: 1,\n ...attributes\n });\n\n this.prerenderWindow = this.window;\n\n this.clean.register('destroyWindow', () => {\n if (this.window) {\n this.window.close();\n cleanUpWindow(this.window);\n delete this.window;\n delete this.prerenderWindow;\n }\n });\n\n this.resize(width, height);\n });\n },\n\n openPrerender() : ZalgoPromise {\n return ZalgoPromise.try(noop);\n },\n\n resize() {\n // pass\n },\n\n hide() {\n throw new Error('Can not hide popup');\n },\n\n show() {\n throw new Error('Can not show popup');\n },\n\n delegateOverrides: {\n\n openContainer: DELEGATE.CALL_DELEGATE,\n destroyContainer: DELEGATE.CALL_DELEGATE,\n\n elementReady: DELEGATE.CALL_DELEGATE,\n\n showContainer: DELEGATE.CALL_DELEGATE,\n showComponent: DELEGATE.CALL_DELEGATE,\n hideContainer: DELEGATE.CALL_DELEGATE,\n hideComponent: DELEGATE.CALL_DELEGATE,\n\n hide: DELEGATE.CALL_DELEGATE,\n show: DELEGATE.CALL_DELEGATE,\n\n cancelContainerEvents: DELEGATE.CALL_DELEGATE,\n\n open: DELEGATE.CALL_ORIGINAL,\n loadUrl: DELEGATE.CALL_ORIGINAL,\n createPrerenderTemplate: DELEGATE.CALL_ORIGINAL,\n destroyComponent: DELEGATE.CALL_ORIGINAL,\n resize: DELEGATE.CALL_ORIGINAL,\n renderTemplate: DELEGATE.CALL_ORIGINAL,\n openContainerFrame: DELEGATE.CALL_ORIGINAL,\n getOutlet: DELEGATE.CALL_ORIGINAL\n },\n\n loadUrl(url : string) {\n\n if (isSameDomain(this.window)) {\n try {\n if (this.window.location && this.window.location.replace) {\n this.window.location.replace(url);\n return;\n }\n } catch (err) {\n // pass\n }\n }\n\n this.window.location = url;\n }\n };\n}\n","/* @flow */\n/* eslint complexity: off */\n\nimport type { Component } from '../component';\nimport type { MixedPropDefinitionType, PropsType } from '../component/props';\n\n// $FlowFixMe\nexport function validateProp(prop : MixedPropDefinitionType

, key : string, value : ?T, props : (PropsType & P), required : boolean = true) {\n\n let hasProp = value !== null && value !== undefined && value !== '';\n\n if (!hasProp) {\n if (required && prop.required !== false && !prop.hasOwnProperty('def')) {\n throw new Error(`Prop is required: ${ key }`);\n }\n\n return;\n }\n\n if (value && typeof value.then === 'function' && prop.promise) {\n return;\n }\n\n if (prop.type === 'function') {\n\n if (!(typeof value === 'function')) {\n throw new TypeError(`Prop is not of type function: ${ key }`);\n }\n\n } else if (prop.type === 'string') {\n\n if (typeof value !== 'string') {\n throw new TypeError(`Prop is not of type string: ${ key }`);\n }\n\n } else if (prop.type === 'object') {\n\n // Since we're sending everything by post-message, everything must be json serializable\n\n if (prop.sendToChild !== false) {\n try {\n JSON.stringify(value);\n } catch (err) {\n throw new Error(`Unable to serialize prop: ${ key }`);\n }\n }\n\n } else if (prop.type === 'number') {\n\n if (isNaN(parseInt(value, 10))) {\n throw new TypeError(`Prop is not a number: ${ key }`);\n }\n }\n\n if (typeof prop.validate === 'function' && value) {\n prop.validate(value, props);\n }\n}\n\n\n/* Validate Props\n --------------\n\n Validate user-defined props. Users can pass props down from the parent into the child component, but first we\n double check the values are what we expect, based on the props spec defined in the original component.\n*/\n\nexport function validateProps

(component : Component

, props : PropsType, required : boolean = true) {\n\n props = props || {};\n\n if (props.env && typeof component.url === 'object' && !component.url[props.env]) {\n throw new Error(`Invalid env: ${ props.env }`);\n }\n\n // Set aliases\n\n for (let key of component.getPropNames()) {\n\n // $FlowFixMe\n let prop = component.getProp(key);\n\n if (prop.alias && props.hasOwnProperty(prop.alias)) {\n\n let value = props[prop.alias];\n delete props[prop.alias];\n\n if (!props[key]) {\n props[key] = value;\n }\n }\n }\n\n // First make sure all of the props we were sent are actually valid prop names\n\n /*\n\n if (!component.looseProps) {\n for (let key of Object.keys(props)) {\n if (component.getPropNames().indexOf(key) === -1) {\n throw component.error(`Invalid prop: ${key}`);\n }\n }\n }\n\n */\n\n // Then loop over the props we expect, and make sure they're all present and valid\n\n for (let key of Object.keys(props)) {\n\n // $FlowFixMe\n let prop : MixedPropDefinitionType

= component.getProp(key);\n let value = props[key];\n\n if (prop) {\n // $FlowFixMe\n validateProp(prop, key, value, props, required);\n }\n }\n\n for (let key of component.getPropNames()) {\n\n // $FlowFixMe\n let prop : MixedPropDefinitionType

= component.getProp(key);\n let value = props[key];\n\n if (prop && !props.hasOwnProperty(key)) {\n validateProp(prop, key, value, props, required);\n }\n }\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { noop, denodeify, once, memoize, promisify, dotify } from '../../lib';\nimport type { Component } from '../component';\nimport type { BuiltInPropsDefinitionType, PropsType, BuiltInPropsType, MixedPropDefinitionType } from '../component/props';\n\nimport type { ParentComponent } from './index';\n\nfunction isDefined(value : ?mixed) : boolean {\n return value !== null && value !== undefined && value !== '';\n}\n\n\n/* Normalize Prop\n --------------\n\n Turn prop into normalized value, using defaults, function options, etc.\n*/\n\n// $FlowFixMe\nexport function normalizeProp(component : Component

, instance : ParentComponent

, props : (PropsType & P), key : string, value : ?T) : ?(ZalgoPromise | T) { // eslint-disable-line complexity\n\n let prop = component.getProp(key);\n\n let resultValue;\n\n if (prop.value) {\n resultValue = prop.value;\n } else if (prop.def && (!props.hasOwnProperty(key) || !isDefined(value))) {\n resultValue = prop.def.call(component, props);\n } else {\n resultValue = value;\n }\n\n if (!resultValue && prop.alias && props[prop.alias]) {\n resultValue = props[prop.alias];\n }\n\n let decorated = false;\n\n if (prop.decorate && resultValue !== null && resultValue !== undefined) {\n resultValue = prop.decorate.call(instance, resultValue, props);\n decorated = true;\n }\n\n let type = prop.type;\n\n if (type === 'boolean') {\n // $FlowFixMe\n resultValue = Boolean(resultValue);\n\n } else if (type === 'function') {\n\n if (!resultValue && prop.noop) {\n // $FlowFixMe\n resultValue = noop;\n\n if (!decorated && prop.decorate) {\n // $FlowFixMe\n resultValue = prop.decorate.call(instance, noop, props);\n }\n }\n\n if (resultValue && typeof resultValue === 'function') {\n\n resultValue = resultValue.bind(instance);\n\n // If prop.denodeify is set, denodeify the function (accepts callback -> returns promise)\n\n if (prop.denodeify) {\n // $FlowFixMe\n resultValue = denodeify(resultValue);\n }\n\n if (prop.promisify) {\n // $FlowFixMe\n resultValue = promisify(resultValue);\n }\n\n // Wrap the function in order to log when it is called\n\n let original = resultValue;\n // $FlowFixMe\n resultValue = function() : mixed {\n component.log(`call_prop_${ key }`);\n return original.apply(this, arguments);\n };\n\n // If prop.once is set, ensure the function can only be called once\n\n if (prop.once) {\n // $FlowFixMe\n resultValue = once(resultValue);\n }\n\n // If prop.memoize is set, ensure the function is memoized (first return resultValue is cached and returned for any future calls)\n\n if (prop.memoize) {\n // $FlowFixMe\n resultValue = memoize(resultValue);\n }\n }\n\n } else if (type === 'string') {\n // pass\n\n } else if (type === 'object') {\n // pass\n\n } else if (type === 'number') {\n if (resultValue !== undefined) {\n // $FlowFixMe\n resultValue = parseInt(resultValue, 10);\n }\n }\n\n // $FlowFixMe\n return resultValue;\n}\n\n\n/* Normalize Props\n ---------------\n\n Turn props into normalized values, using defaults, function options, etc.\n*/\n\nexport function normalizeProps

(component : Component

, instance : ParentComponent

, props : (PropsType & P)) : (BuiltInPropsType & P) {\n\n let result = {};\n\n // $FlowFixMe\n props = props || {};\n\n for (let key of Object.keys(props)) {\n if (component.getPropNames().indexOf(key) !== -1) {\n // $FlowFixMe\n result[key] = normalizeProp(component, instance, props, key, props[key]);\n } else {\n result[key] = props[key];\n }\n }\n\n for (let key of component.getPropNames()) {\n if (!props.hasOwnProperty(key) && (!instance.props || !instance.props.hasOwnProperty(key))) {\n\n // $FlowFixMe\n let normalizedProp = normalizeProp(component, instance, props, key, props[key]);\n\n if (normalizedProp !== undefined) {\n result[key] = normalizedProp;\n }\n }\n }\n\n // $FlowFixMe\n return result;\n}\n\n\n/* Props to Query\n --------------\n\n Turn props into an initial query string to open the component with\n\n string -> string\n bool -> 1\n object -> json\n number -> string\n*/\n\n// $FlowFixMe\nfunction getQueryParam(prop : MixedPropDefinitionType

, key : string, value : T) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (typeof prop.queryParam === 'function') {\n return prop.queryParam(value);\n } else if (typeof prop.queryParam === 'string') {\n return prop.queryParam;\n } else {\n return key;\n }\n });\n}\n\n// $FlowFixMe\nfunction getQueryValue(prop : MixedPropDefinitionType

, key : string, value : T) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (typeof prop.queryValue === 'function') {\n return prop.queryValue(value);\n } else {\n return value;\n }\n });\n}\n\nexport function propsToQuery

(propsDef : BuiltInPropsDefinitionType

, props : (BuiltInPropsType & P)) : { [string] : string } {\n\n let params = {};\n\n return ZalgoPromise.all(Object.keys(props).map(key => {\n\n let prop = propsDef[key];\n\n if (!prop) {\n return; // eslint-disable-line array-callback-return\n }\n\n return ZalgoPromise.resolve().then(() => {\n\n let value = props[key];\n\n if (!value) {\n return;\n }\n\n if (!prop.queryParam) {\n return;\n }\n\n return value;\n\n }).then(value => {\n\n if (!value) {\n return;\n }\n\n return ZalgoPromise.all([\n // $FlowFixMe\n getQueryParam(prop, key, value),\n // $FlowFixMe\n getQueryValue(prop, key, value)\n ]).then(([ queryParam, queryValue ]) => {\n\n let result;\n\n if (typeof queryValue === 'boolean') {\n result = '1';\n } else if (typeof queryValue === 'string') {\n result = queryValue.toString();\n } else if (typeof queryValue === 'function') {\n return;\n } else if (typeof queryValue === 'object' && queryValue !== null) {\n\n if (prop.serialization === 'json') {\n result = JSON.stringify(queryValue);\n } else {\n result = dotify(queryValue, key);\n\n for (let dotkey of Object.keys(result)) {\n params[dotkey] = result[dotkey];\n }\n\n return;\n }\n\n } else if (typeof queryValue === 'number') {\n result = queryValue.toString();\n }\n\n params[queryParam] = result;\n });\n });\n\n })).then(() => {\n Object.keys(params).forEach(key => {\n params[key] = escape(params[key]);\n });\n return params;\n });\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { flush } from 'beaver-logger/client';\nimport { send, bridge } from 'post-robot/src';\nimport { isSameDomain, isWindowClosed, isTop, isSameTopWindow, matchDomain, getDistanceFromTop, onCloseWindow, getDomain, assertSameDomain, type CrossDomainWindowType, type SameDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getElementSafe, onResize } from 'belter/src';\n\nimport { BaseComponent } from '../base';\nimport { buildChildWindowName, getParentDomain, getParentComponentWindow } from '../window';\nimport { addEventListener, uniqueID, elementReady, writeElementToWindow,\n noop, showAndAnimate, animateAndHide, showElement, hideElement,\n addClass, extend, serializeFunctions, extendUrl, jsxDom,\n getElement, memoized, appendChild,\n global, writeToWindow, setLogLevel, once,\n prefetchPage, awaitFrameLoad, stringify, stringifyError } from '../../lib';\nimport { POST_MESSAGE, CONTEXT_TYPES, CLASS_NAMES, ANIMATION_NAMES, CLOSE_REASONS, DELEGATE, INITIAL_PROPS, WINDOW_REFERENCES, EVENTS, DEFAULT_DIMENSIONS } from '../../constants';\nimport { RenderError } from '../../error';\nimport type { Component } from '../component';\nimport type { PropsType, BuiltInPropsType } from '../component/props';\nimport type { ChildExportsType } from '../child';\nimport type { CancelableType, Jsx, DimensionsType, ElementRefType } from '../../types';\n\nimport { RENDER_DRIVERS, type ContextDriverType } from './drivers';\nimport { validateProps } from './validate';\nimport { propsToQuery, normalizeProps } from './props';\n\nglobal.props = global.props || {};\nglobal.windows = global.windows || {};\n\nexport type RenderOptionsType = {\n id : string,\n props : PropsType,\n tag : string,\n context : string,\n outlet : HTMLElement,\n CLASS : typeof CLASS_NAMES,\n ANIMATION : typeof ANIMATION_NAMES,\n CONTEXT : typeof CONTEXT_TYPES,\n EVENT : typeof EVENTS,\n actions : {\n close : (string) => ZalgoPromise,\n focus : () => ZalgoPromise\n },\n on : (string, () => void) => CancelableType,\n jsxDom : Jsx,\n document : Document,\n container : HTMLElement,\n dimensions : DimensionsType\n};\n\n\n/* Parent Component\n ----------------\n\n This manages the state of the component on the parent window side - i.e. the window the component is being rendered into.\n\n It handles opening the necessary windows/iframes, launching the component's url, and listening for messages back from the component.\n*/\n\nexport class ParentComponent

extends BaseComponent

{\n\n html : ?ZalgoPromise\n context : string\n props : BuiltInPropsType & P\n childWindowName : string\n onInit : ZalgoPromise>\n window : CrossDomainWindowType\n handledErrors : Array\n\n container : HTMLElement\n element : HTMLElement\n outlet : HTMLElement;\n iframe : HTMLIFrameElement\n\n prerenderIframe : HTMLIFrameElement\n prerenderWindow : SameDomainWindowType\n\n childExports : ?ChildExportsType

\n timeout : ?TimeoutID // eslint-disable-line no-undef\n\n constructor(component : Component

, context : string, { props } : { props : (PropsType & P) }) {\n super();\n\n this.component = component;\n\n this.validateParentDomain();\n\n this.context = context;\n\n try {\n this.setProps(props);\n } catch (err) {\n if (props.onError) {\n props.onError(err);\n }\n throw err;\n }\n\n if (this.props.logLevel) {\n setLogLevel(this.props.logLevel);\n }\n\n this.childWindowName = this.buildChildWindowName({ renderTo: window });\n\n this.registerActiveComponent();\n\n // Options passed during renderTo. We would not ordinarily expect a user to pass these, since we depend on\n // them only when we're trying to render from a sibling to a sibling\n\n this.component.log(`construct_parent`);\n\n this.watchForUnload();\n\n this.onInit = new ZalgoPromise();\n\n this.onInit.catch(err => {\n return this.error(err);\n });\n }\n\n render(element : ElementRefType, loadUrl : boolean = true) : ZalgoPromise> {\n return this.tryInit(() => {\n\n this.component.log(`render_${ this.context }`, { context: this.context, element, loadUrl: stringify(loadUrl) });\n\n let tasks = {};\n\n tasks.onRender = this.props.onRender();\n\n tasks.getDomain = this.getDomain();\n\n tasks.elementReady = ZalgoPromise.try(() => {\n if (element) {\n return this.elementReady(element);\n }\n });\n\n tasks.openContainer = tasks.elementReady.then(() => {\n return this.openContainer(element);\n });\n\n tasks.showContainer = tasks.openContainer.then(() => {\n return this.showContainer();\n });\n\n tasks.openPrerender = tasks.openContainer.then(() => {\n return this.openPrerender();\n });\n\n tasks.switchPrerender = ZalgoPromise.all([ tasks.openPrerender, this.onInit ]).then(() => {\n return this.switchPrerender();\n });\n\n // $FlowFixMe\n tasks.open = this.driver.openOnClick\n ? this.open()\n : tasks.openContainer.then(() => this.open());\n\n tasks.listen = ZalgoPromise.hash({ domain: tasks.getDomain, open: tasks.open }).then(({ domain }) => {\n this.listen(this.window, domain);\n });\n\n tasks.watchForClose = tasks.open.then(() => {\n return this.watchForClose();\n });\n\n tasks.linkDomain = ZalgoPromise.all([ tasks.getDomain, tasks.open ]).then(([ domain ]) => {\n if (bridge && typeof domain === 'string') {\n return bridge.linkUrl(this.window, domain);\n }\n });\n\n if (!this.html) {\n tasks.createPrerenderTemplate = tasks.openPrerender.then(() => {\n return this.createPrerenderTemplate();\n });\n\n tasks.showComponent = tasks.createPrerenderTemplate.then(() => {\n return this.showComponent();\n });\n }\n\n tasks.openBridge = ZalgoPromise.all([ tasks.getDomain, tasks.open ]).then(([ domain ]) => {\n return this.openBridge(typeof domain === 'string' ? domain : null);\n });\n\n if (this.html) {\n tasks.loadHTML = tasks.open.then(() => {\n return this.loadHTML();\n });\n\n } else if (loadUrl) {\n tasks.buildUrl = this.buildUrl();\n\n tasks.loadUrl = ZalgoPromise.all([\n tasks.buildUrl,\n tasks.open,\n tasks.linkDomain,\n tasks.listen,\n tasks.open,\n tasks.openBridge,\n tasks.createPrerenderTemplate\n ]).then(([ url ]) => {\n return this.loadUrl(url);\n });\n\n tasks.runTimeout = tasks.loadUrl.then(() => {\n return this.runTimeout();\n });\n }\n\n return ZalgoPromise.hash(tasks);\n\n }).then(() => {\n return this.props.onEnter();\n }).then(() => {\n return this;\n });\n }\n\n @memoized\n getOutlet() : HTMLElement {\n let outlet = document.createElement('div');\n addClass(outlet, CLASS_NAMES.OUTLET);\n return outlet;\n }\n\n validateParentDomain() {\n let domain = getDomain();\n if (!matchDomain(this.component.allowedParentDomains, domain)) {\n throw new RenderError(`Can not be rendered by domain: ${ domain }`);\n }\n }\n\n renderTo(win : CrossDomainWindowType, element : ?string) : ZalgoPromise> {\n return this.tryInit(() => {\n\n if (win === window) {\n return this.render(element);\n }\n\n if (!isSameTopWindow(window, win)) {\n throw new Error(`Can only renderTo an adjacent frame`);\n }\n\n if (element && typeof element !== 'string') {\n throw new Error(`Element passed to renderTo must be a string selector, got ${ typeof element } ${ element }`);\n }\n\n this.checkAllowRenderTo(win);\n\n this.component.log(`render_${ this.context }_to_win`, { element: stringify(element), context: this.context });\n\n this.childWindowName = this.buildChildWindowName({ renderTo: win });\n\n this.delegate(win);\n\n return this.render(element);\n });\n }\n\n @memoized\n prefetch() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.html = this.buildUrl().then(url => {\n return prefetchPage(url).then(html => {\n\n let host = `${ url.split('/').slice(0, 3).join('/') }`;\n let uri = `/${ url.split('/').slice(3).join('/') }`;\n\n return `\n \n\n ${ html }\n\n \n `;\n });\n });\n });\n }\n\n @memoized\n loadHTML() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (!this.html) {\n throw new Error(`Html not prefetched`);\n }\n\n return this.html.then(html => {\n // $FlowFixMe\n return writeToWindow(this.window, html);\n });\n });\n }\n\n checkAllowRenderTo(win : CrossDomainWindowType) {\n\n if (!win) {\n throw this.component.createError(`Must pass window to renderTo`);\n }\n\n if (isSameDomain(win)) {\n return;\n }\n\n let origin = getDomain();\n let domain = this.component.getDomain(null, this.props.env);\n\n if (!domain) {\n throw new Error(`Could not determine domain to allow remote render`);\n }\n\n if (matchDomain(domain, origin)) {\n return;\n }\n\n throw new Error(`Can not render remotely to ${ domain.toString() } - can only render to ${ origin }`);\n }\n\n registerActiveComponent() {\n ParentComponent.activeComponents.push(this);\n\n this.clean.register(() => {\n ParentComponent.activeComponents.splice(ParentComponent.activeComponents.indexOf(this), 1);\n });\n }\n\n\n getComponentParentRef() : { ref : string, uid? : string, distance? : number } {\n let domain = this.component.getDomain(null, this.props.env);\n\n if (domain === getDomain(window)) {\n let uid = uniqueID();\n global.windows = global.windows || {};\n global.windows[uid] = window;\n this.clean.register(() => {\n delete global.windows[uid];\n });\n\n return { ref: WINDOW_REFERENCES.GLOBAL, uid };\n }\n\n if (this.context === CONTEXT_TYPES.POPUP) {\n return { ref: WINDOW_REFERENCES.OPENER };\n }\n\n if (isTop(window)) {\n return { ref: WINDOW_REFERENCES.TOP };\n }\n\n return { ref: WINDOW_REFERENCES.PARENT, distance: getDistanceFromTop(window) };\n }\n\n getRenderParentRef(renderToWindow : CrossDomainWindowType = window) : { ref : string, uid? : string, distance? : number } {\n\n if (renderToWindow === window) {\n return this.getComponentParentRef();\n }\n\n let uid = uniqueID();\n global.windows[uid] = renderToWindow;\n\n this.clean.register(() => {\n delete global.windows[uid];\n });\n\n return { ref: WINDOW_REFERENCES.GLOBAL, uid };\n }\n\n buildChildWindowName({ renderTo = window } : { renderTo : CrossDomainWindowType } = {}) : string {\n\n let childDomain = this.component.getDomain(null, this.props.env);\n let sameDomain = isSameDomain(renderTo);\n\n let uid = uniqueID();\n let tag = this.component.tag;\n let sProps = serializeFunctions(this.getPropsForChild());\n\n let componentParent = this.getComponentParentRef();\n let renderParent = this.getRenderParentRef(renderTo);\n\n let secureProps = !sameDomain && !this.component.unsafeRenderTo;\n\n let props = secureProps\n ? { type: INITIAL_PROPS.UID, uid }\n : { type: INITIAL_PROPS.RAW, value: sProps };\n\n if (props.type === INITIAL_PROPS.UID) {\n global.props[uid] = JSON.stringify(sProps);\n\n this.clean.register(() => {\n delete global.props[uid];\n });\n }\n\n return buildChildWindowName(this.component.name, this.component.version, { uid, tag, componentParent, renderParent, props, childDomain });\n }\n\n\n /* Send to Parent\n --------------\n\n Send a post message to our parent window.\n */\n\n sendToParent(name : string, data : Object) : ZalgoPromise<{ origin : string, source : CrossDomainWindowType, data : Object }> {\n let parentWindow = getParentComponentWindow();\n\n if (!parentWindow) {\n throw new Error(`Can not find parent component window to message`);\n }\n\n this.component.log(`send_to_parent_${ name }`);\n\n return send(getParentComponentWindow(), name, data, { domain: getParentDomain() });\n }\n\n\n /* Set Props\n ---------\n\n Normalize props and generate the url we'll use to render the component\n */\n\n setProps(props : (PropsType & P), required : boolean = true) {\n\n validateProps(this.component, props, required);\n if (this.component.validate) {\n this.component.validate(this.component, props);\n }\n\n // $FlowFixMe\n this.props = this.props || {};\n\n extend(this.props, normalizeProps(this.component, this, props));\n }\n\n\n /* Build Url\n ---------\n\n We build the props we're passed into the initial url. This means the component server-side can start rendering\n itself based on whatever props the merchant provides.\n */\n\n @memoized\n buildUrl() : ZalgoPromise {\n\n let propUrl : (string | void) = this.props.url;\n\n return ZalgoPromise.all([\n\n propUrl,\n // $FlowFixMe\n propsToQuery({ ...this.component.props, ...this.component.builtinProps }, this.props)\n\n ]).then(([ url, query ]) => {\n\n // Do not extend the url if it is for a different domain\n\n if (url && !this.component.getValidDomain(url)) {\n return url;\n }\n\n return ZalgoPromise.try(() => {\n\n return url || this.component.getUrl(this.props.env, this.props);\n\n }).then(finalUrl => {\n\n query.xcomponent = '1';\n return extendUrl(finalUrl, { query });\n });\n });\n }\n\n\n getDomain() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n return this.props.url;\n\n }).then(url => {\n\n let domain = this.component.getDomain(url, this.props.env);\n\n if (domain) {\n return domain;\n }\n\n if (this.component.buildUrl) {\n return ZalgoPromise.try(() => this.component.buildUrl(this.props)).then(builtUrl => {\n return this.component.getDomain(builtUrl, this.props.env);\n });\n }\n\n }).then(domain => {\n\n if (!domain) {\n throw new Error(`Could not determine domain`);\n }\n\n return domain;\n });\n }\n\n getPropsForChild() : (BuiltInPropsType & P) {\n\n let result = {};\n\n for (let key of Object.keys(this.props)) {\n let prop = this.component.getProp(key);\n\n if (!prop || prop.sendToChild !== false) {\n result[key] = this.props[key];\n }\n }\n\n // $FlowFixMe\n return result;\n }\n\n\n /* Update Props\n ------------\n\n Send new props down to the child\n */\n\n updateProps(props : (PropsType & P)) : ZalgoPromise {\n this.setProps(props, false);\n\n return this.onInit.then(() => {\n if (this.childExports) {\n return this.childExports.updateProps(this.getPropsForChild());\n } else {\n throw new Error(`Child exports were not available`);\n }\n });\n }\n\n\n openBridge(domain : ?string) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (!bridge || !this.driver.needsBridge) {\n return;\n }\n\n let needsBridgeParams : Object = { win: this.window };\n if (domain) {\n needsBridgeParams.domain = domain;\n }\n\n let needsBridge = bridge.needsBridge(needsBridgeParams);\n\n let bridgeUrl = this.component.getBridgeUrl(this.props.env);\n\n if (!bridgeUrl) {\n\n if (needsBridge && domain && !bridge.hasBridge(domain, domain)) {\n throw new Error(`Bridge url needed to render ${ this.context }`);\n }\n\n return;\n }\n\n bridgeUrl = extendUrl(bridgeUrl, { query: { version: this.component.version } });\n\n let bridgeDomain = this.component.getBridgeDomain(this.props.env);\n\n if (!bridgeDomain) {\n throw new Error(`Can not determine domain for bridge`);\n }\n\n if (needsBridge) {\n return bridge.openBridge(bridgeUrl, bridgeDomain).then(result => {\n if (result) {\n return result;\n }\n });\n }\n });\n }\n\n\n /* Open\n ----\n\n Open a new window in the desired context\n */\n\n @memoized\n open() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.component.log(`open_${ this.context }`, { windowName: this.childWindowName });\n if (this.props.win) {\n this.clean.set('window', this.props.win);\n assertSameDomain(this.window).name = this.childWindowName;\n return;\n }\n return this.driver.open.call(this);\n });\n }\n\n @memoized\n openPrerender() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.component.prerenderTemplate) {\n return this.driver.openPrerender.call(this);\n }\n });\n }\n\n @memoized\n switchPrerender() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.prerenderWindow && this.driver.switchPrerender) {\n return this.driver.switchPrerender.call(this);\n }\n });\n }\n\n get driver() : ContextDriverType {\n\n if (!this.context) {\n throw new Error('Context not set');\n }\n\n return RENDER_DRIVERS[this.context];\n }\n\n elementReady(element : ElementRefType) : ZalgoPromise {\n return elementReady(element).then(noop);\n }\n\n\n delegate(win : CrossDomainWindowType) {\n\n this.component.log(`delegate_${ this.context }`);\n\n let props = {\n uid: this.props.uid,\n dimensions: this.props.dimensions,\n onClose: this.props.onClose,\n onDisplay: this.props.onDisplay\n };\n\n for (let propName of this.component.getPropNames()) {\n let prop = this.component.getProp(propName);\n\n if (prop.allowDelegate) {\n props[propName] = this.props[propName];\n }\n }\n\n let delegate = send(win, `${ POST_MESSAGE.DELEGATE }_${ this.component.name }`, {\n\n context: this.context,\n env: this.props.env,\n\n options: {\n\n context: this.context,\n\n childWindowName: this.childWindowName,\n isWindowClosed: () => isWindowClosed(this.window),\n\n props,\n\n overrides: {\n focus: () => this.focus(),\n userClose: () => this.userClose(),\n getDomain: () => this.getDomain(),\n\n error: (err) => this.error(err),\n on: (eventName, handler) => this.on(eventName, handler)\n }\n }\n\n }).then(({ data }) => {\n\n this.clean.register(data.destroy);\n return data;\n\n }).catch(err => {\n\n throw new Error(`Unable to delegate rendering. Possibly the component is not loaded in the target window.\\n\\n${ stringifyError(err) }`);\n });\n\n let overrides = this.driver.delegateOverrides;\n\n for (let key of Object.keys(overrides)) {\n let val = overrides[key];\n\n if (val === DELEGATE.CALL_ORIGINAL) {\n continue;\n }\n\n // $FlowFixMe\n let original = this[key];\n\n // $FlowFixMe\n this[key] = function overridenFunction() : ZalgoPromise {\n return delegate.then(data => {\n\n let override = data.overrides[key];\n\n if (val === DELEGATE.CALL_DELEGATE) {\n return override.apply(this, arguments);\n }\n\n if (typeof val === 'function') {\n return val(original, override).apply(this, arguments);\n }\n\n throw new Error(`Expected delgate to be CALL_ORIGINAL, CALL_DELEGATE, or factory method`);\n });\n };\n }\n }\n\n /* Watch For Close\n ---------------\n\n Watch for the child window closing, so we can cleanup.\n Also watch for this window changing location, so we can close the component.\n */\n\n watchForClose() {\n let closeWindowListener = onCloseWindow(this.window, () => {\n this.component.log(`detect_close_child`);\n\n return ZalgoPromise.try(() => {\n return this.props.onClose(CLOSE_REASONS.CLOSE_DETECTED);\n }).finally(() => {\n return this.destroy();\n });\n }, 3000);\n\n this.clean.register('destroyCloseWindowListener', closeWindowListener.cancel);\n }\n\n watchForUnload() {\n\n // Our child has no way of knowing if we navigated off the page. So we have to listen for unload\n // and close the child manually if that happens.\n\n let onunload = once(() => {\n this.component.log(`navigate_away`);\n flush();\n this.destroyComponent();\n });\n\n let unloadWindowListener = addEventListener(window, 'unload', onunload);\n\n this.clean.register('destroyUnloadWindowListener', unloadWindowListener.cancel);\n }\n\n\n /* Load Url\n --------\n\n Load url into the child window. This is separated out because it's quite common for us to have situations\n where opening the child window and loading the url happen at different points.\n */\n\n loadUrl(url : string) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.component.log(`load_url`);\n\n if (window.location.href.split('#')[0] === url.split('#')[0]) {\n url = extendUrl(url, {\n query: {\n [ uniqueID() ]: '1'\n }\n });\n }\n\n return this.driver.loadUrl.call(this, url);\n });\n }\n\n\n hijack(targetElement : HTMLFormElement | HTMLAnchorElement) {\n targetElement.target = this.childWindowName;\n }\n\n /* Run Timeout\n -----------\n\n Set a timeout on the initial render, and call this.props.onTimeout if we don't get an init call in time.\n */\n\n runTimeout() {\n let timeout = this.props.timeout;\n\n if (timeout) {\n let id = this.timeout = setTimeout(() => {\n\n this.component.log(`timed_out`, { timeout: timeout.toString() });\n\n let error = this.component.createError(`Loading component timed out after ${ timeout } milliseconds`);\n\n this.onInit.reject(error);\n this.props.onTimeout(error);\n\n }, timeout);\n\n this.clean.register(() => {\n clearTimeout(id);\n delete this.timeout;\n });\n }\n }\n\n\n /* Listeners\n ---------\n\n Post-robot listeners to the child component window\n */\n\n listeners() : { [string] : (CrossDomainWindowType, Object) => mixed } {\n return {\n\n // The child rendered, and the component called .attach()\n // We have no way to know when the child has set up its listeners for the first time, so we have to listen\n // for this message to be sure so we can continue doing anything from the parent\n\n [ POST_MESSAGE.INIT ](source : CrossDomainWindowType, data : Object) : { props : BuiltInPropsType & P, context : string } {\n\n this.childExports = data.exports;\n\n this.onInit.resolve(this);\n\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n\n return {\n props: this.getPropsForChild(),\n context: this.context\n };\n },\n\n\n // The child has requested that we close it. Since iframes can't close themselves, we need\n // this logic to exist in the parent window\n\n [ POST_MESSAGE.CLOSE ](source : CrossDomainWindowType, data : Object) {\n this.close(data.reason);\n },\n\n [ POST_MESSAGE.CHECK_CLOSE ]() {\n this.checkClose();\n },\n\n // Iframes can't resize themselves, so they need the parent to take care of it for them.\n\n [ POST_MESSAGE.RESIZE ](source : CrossDomainWindowType, data : Object) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.driver.allowResize) {\n return this.resize(data.width, data.height);\n }\n });\n },\n\n [ POST_MESSAGE.HIDE ]() {\n this.hide();\n },\n\n [ POST_MESSAGE.SHOW ]() {\n this.show();\n },\n\n\n // The child encountered an error\n\n [ POST_MESSAGE.ERROR ](source : CrossDomainWindowType, data : Object) {\n this.error(new Error(data.error));\n }\n };\n }\n\n\n /* Resize\n ------\n\n Resize the child component window\n */\n\n resize(width : ?(number | string), height : ?(number | string)) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.component.log(`resize`, { height: stringify(height), width: stringify(width) });\n this.driver.resize.call(this, width, height);\n if (this.props.onResize) {\n this.props.onResize();\n }\n });\n }\n\n\n /* Hide\n ----\n\n Hide the component and any parent template\n */\n\n hide() : void {\n\n if (this.container) {\n hideElement(this.container);\n }\n\n return this.driver.hide.call(this);\n }\n\n show() : void {\n\n if (this.container) {\n showElement(this.container);\n }\n\n return this.driver.show.call(this);\n }\n\n\n checkClose() {\n let closeWindowListener = onCloseWindow(this.window, () => {\n this.userClose();\n }, 50, 500);\n\n this.clean.register(closeWindowListener.cancel);\n }\n\n\n userClose() : ZalgoPromise {\n return this.close(CLOSE_REASONS.USER_CLOSED);\n }\n\n\n /* Close\n -----\n\n Close the child component\n */\n\n @memoized\n close(reason : string = CLOSE_REASONS.PARENT_CALL) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n this.component.log(`close`, { reason });\n\n this.event.triggerOnce(EVENTS.CLOSE);\n return this.props.onClose(reason);\n\n }).then(() => {\n\n return ZalgoPromise.all([\n this.closeComponent(),\n this.closeContainer()\n ]);\n\n }).then(() => {\n\n return this.destroy();\n });\n }\n\n\n @memoized\n closeContainer(reason : string = CLOSE_REASONS.PARENT_CALL) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n this.event.triggerOnce(EVENTS.CLOSE);\n return this.props.onClose(reason);\n\n }).then(() => {\n\n return ZalgoPromise.all([\n this.closeComponent(reason),\n this.hideContainer()\n ]);\n\n }).then(() => {\n\n return this.destroyContainer();\n });\n }\n\n\n @memoized\n destroyContainer() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.clean.run('destroyContainerEvents');\n this.clean.run('destroyContainerTemplate');\n });\n }\n\n\n @memoized\n closeComponent(reason : string = CLOSE_REASONS.PARENT_CALL) : ZalgoPromise {\n\n let win = this.window;\n\n return ZalgoPromise.try(() => {\n\n return this.cancelContainerEvents();\n\n }).then(() => {\n\n this.event.triggerOnce(EVENTS.CLOSE);\n return this.props.onClose(reason);\n\n }).then(() => {\n\n return this.hideComponent();\n\n }).then(() => {\n\n return this.destroyComponent();\n\n }).then(() => {\n\n // IE in metro mode -- child window needs to close itself, or close will hang\n\n if (this.childExports && this.context === CONTEXT_TYPES.POPUP && !isWindowClosed(win)) {\n this.childExports.close().catch(noop);\n }\n });\n }\n\n destroyComponent() {\n this.clean.run('destroyUnloadWindowListener');\n this.clean.run('destroyCloseWindowListener');\n this.clean.run('destroyContainerEvents');\n this.clean.run('destroyWindow');\n }\n\n @memoized\n showContainer() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.props.onDisplay) {\n return this.props.onDisplay();\n }\n }).then(() => {\n if (this.container) {\n return showAndAnimate(this.container, ANIMATION_NAMES.SHOW_CONTAINER, this.clean.register);\n }\n });\n }\n\n @memoized\n showComponent() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.props.onDisplay) {\n return this.props.onDisplay();\n }\n }).then(() => {\n if (this.element) {\n return showAndAnimate(this.element, ANIMATION_NAMES.SHOW_COMPONENT, this.clean.register);\n }\n });\n }\n\n @memoized\n hideContainer() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.container) {\n return animateAndHide(this.container, ANIMATION_NAMES.HIDE_CONTAINER, this.clean.register);\n } else {\n return ZalgoPromise.resolve();\n }\n });\n }\n\n @memoized\n hideComponent() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.element) {\n return animateAndHide(this.element, ANIMATION_NAMES.HIDE_COMPONENT, this.clean.register);\n } else {\n return ZalgoPromise.resolve();\n }\n });\n }\n\n\n /* Focus\n -----\n\n Focus the child component window\n */\n\n focus() {\n\n if (this.window && !isWindowClosed(this.window)) {\n this.component.log(`focus`);\n this.window.focus();\n\n } else {\n\n throw new Error(`No window to focus`);\n }\n }\n\n\n /* Create Component Template\n -------------------------\n\n Creates an initial template and stylesheet which are loaded into the child window, to be displayed before the url is loaded\n */\n\n @memoized\n createPrerenderTemplate() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (!this.component.prerenderTemplate) {\n return ZalgoPromise.resolve();\n }\n\n return ZalgoPromise.try(() => {\n\n if (this.prerenderIframe) {\n return awaitFrameLoad(this.prerenderIframe).then(() => this.prerenderWindow);\n } else {\n return this.prerenderWindow;\n }\n\n }).then(win => {\n\n let doc;\n\n try {\n doc = win.document;\n } catch (err) {\n return;\n }\n\n let el;\n\n try {\n el = this.renderTemplate(this.component.prerenderTemplate, {\n jsxDom: jsxDom.bind(doc),\n document: doc\n });\n } catch (err) {\n this.component.logError('preprender_error', { err: err.stack ? err.stack : err.toString() });\n console.error(err.stack ? err.stack : err); // eslint-disable-line no-console\n return;\n }\n\n try {\n writeElementToWindow(win, el);\n } catch (err) {\n this.component.logError('preprender_error', { err: err.stack ? err.stack : err.toString() });\n console.error(err.stack ? err.stack : err); // eslint-disable-line no-console\n }\n\n let { width = false, height = false, element = 'body' } = (typeof this.component.autoResize === 'object' && this.component.autoResize !== null)\n ? this.component.autoResize\n : {};\n\n element = getElementSafe(element, doc);\n\n if (element && (width || height)) {\n onResize(element, ({ width: newWidth, height: newHeight }) => {\n this.resize(width ? newWidth : undefined, height ? newHeight : undefined);\n }, { width, height, win });\n }\n });\n });\n }\n\n\n /* Create Parent Template\n ----------------------\n\n Create a template and stylesheet for the parent template behind the element\n */\n\n renderTemplate(renderer : (RenderOptionsType) => HTMLElement, options : Object = {}) : HTMLElement {\n\n let {\n width = `${ DEFAULT_DIMENSIONS.WIDTH }px`,\n height = `${ DEFAULT_DIMENSIONS.HEIGHT }px`\n } = (this.component.dimensions || {});\n\n return renderer.call(this, {\n id: `${ CLASS_NAMES.ZOID }-${ this.component.tag }-${ this.props.uid }`,\n props: renderer.__xdomain__ ? null : this.props,\n tag: this.component.tag,\n context: this.context,\n outlet: this.getOutlet(),\n CLASS: CLASS_NAMES,\n ANIMATION: ANIMATION_NAMES,\n CONTEXT: CONTEXT_TYPES,\n EVENT: EVENTS,\n actions: {\n close: () => this.userClose(),\n focus: () => this.focus()\n },\n on: (eventName, handler) => this.on(eventName, handler),\n jsxDom,\n document,\n dimensions: { width, height },\n ...options\n });\n }\n\n @memoized\n openContainer(element : ?HTMLElement) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n let el;\n\n if (element) {\n el = getElement(element);\n } else {\n el = document.body;\n }\n\n if (!el) {\n throw new Error(`Could not find element to open container into`);\n }\n\n if (!this.component.containerTemplate) {\n if (this.driver.renderedIntoContainerTemplate) {\n throw new Error(`containerTemplate needed to render ${ this.context }`);\n }\n\n return;\n }\n\n let container = this.renderTemplate(this.component.containerTemplate, {\n container: el\n });\n\n this.container = container;\n hideElement(this.container);\n appendChild(el, this.container);\n\n if (this.driver.renderedIntoContainerTemplate) {\n this.element = this.getOutlet();\n hideElement(this.element);\n\n if (!this.element) {\n throw new Error('Could not find element to render component into');\n }\n\n hideElement(this.element);\n }\n\n this.clean.register('destroyContainerTemplate', () => {\n\n if (this.container && this.container.parentNode) {\n this.container.parentNode.removeChild(this.container);\n }\n\n delete this.container;\n });\n });\n }\n\n cancelContainerEvents() {\n this.clean.run('destroyContainerEvents');\n }\n\n\n /* Destroy\n -------\n\n Close the component and clean up any listeners and state\n */\n\n destroy() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.clean.hasTasks()) {\n this.component.log(`destroy`);\n flush();\n return this.clean.all();\n }\n });\n }\n\n\n tryInit(method : () => mixed) : ZalgoPromise> {\n return ZalgoPromise.try(method).catch(err => {\n this.onInit.reject(err);\n }).then(() => {\n return this.onInit;\n });\n }\n\n\n /* Error\n -----\n\n Handle an error\n */\n\n error(err : mixed) : ZalgoPromise {\n // eslint-disable-next-line promise/no-promise-in-callback\n return ZalgoPromise.try(() => {\n\n this.handledErrors = this.handledErrors || [];\n\n if (this.handledErrors.indexOf(err) !== -1) {\n // $FlowFixMe\n return;\n }\n\n this.handledErrors.push(err);\n\n this.onInit.reject(err);\n\n return this.destroy();\n\n }).then(() => {\n\n if (this.props.onError) {\n return this.props.onError(err);\n }\n\n }).catch(errErr => { // eslint-disable-line unicorn/catch-error-name\n\n throw new Error(`An error was encountered while handling error:\\n\\n ${ stringifyError(err) }\\n\\n${ stringifyError(errErr) }`);\n\n }).then(() => {\n\n if (!this.props.onError) {\n throw err;\n }\n });\n }\n\n static activeComponents : Array> = []\n\n static destroyAll() : ZalgoPromise {\n let results = [];\n\n while (ParentComponent.activeComponents.length) {\n results.push(ParentComponent.activeComponents[0].destroy());\n }\n\n return ZalgoPromise.all(results).then(noop);\n }\n}\n","/* @flow */\n\nimport { onCloseWindow, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { BaseComponent } from '../base';\nimport { ParentComponent } from '../parent';\nimport { RENDER_DRIVERS, type ContextDriverType } from '../parent/drivers';\nimport type { Component } from '../component';\nimport { noop } from '../../lib';\nimport type { CancelableType, DimensionsType } from '../../types';\n\nexport type DelegatePropsType = {\n uid : string,\n dimensions : DimensionsType,\n onClose : () => ?ZalgoPromise,\n onDisplay : () => ?ZalgoPromise\n};\n\nexport type DelegateOptionsType = {\n context : string,\n props : DelegatePropsType,\n childWindowName : string,\n isWindowClosed : () => ZalgoPromise,\n \n overrides : {\n focus : () => ZalgoPromise,\n userClose : (string) => ZalgoPromise,\n getDomain : () => ZalgoPromise,\n error : (mixed) => ZalgoPromise,\n on : (string, () => void) => CancelableType\n }\n};\n\nexport class DelegateComponent

extends BaseComponent

{\n\n source : CrossDomainWindowType\n context : string\n props : DelegatePropsType\n\n focus : () => ZalgoPromise\n userClose : (string) => ZalgoPromise\n getDomain : () => ZalgoPromise\n error : (mixed) => ZalgoPromise\n on : (string, () => void) => CancelableType\n\n childWindowName : string\n isWindowClosed : () => ZalgoPromise\n\n constructor(component : Component

, source : CrossDomainWindowType, options : DelegateOptionsType) {\n super();\n\n this.component = component;\n this.clean.set('source', source);\n\n this.context = options.context;\n\n this.props = {\n uid: options.props.uid,\n dimensions: options.props.dimensions,\n onClose: options.props.onClose,\n onDisplay: options.props.onDisplay\n };\n\n for (let propName of component.getPropNames()) {\n // $FlowFixMe\n let prop = this.component.getProp(propName);\n\n if (prop.allowDelegate) {\n this.props[propName] = options.props[propName];\n }\n }\n\n this.focus = () => {\n return ZalgoPromise.all([\n this.isWindowClosed().then(closed => {\n if (!closed) {\n window.open('', this.childWindowName);\n }\n }),\n options.overrides.focus.call(this)\n ]).then(noop);\n };\n\n this.clean.register('destroyFocusOverride', () => {\n // $FlowFixMe\n this.focus = noop;\n });\n\n this.userClose = options.overrides.userClose;\n this.getDomain = options.overrides.getDomain;\n this.error = options.overrides.error;\n this.on = options.overrides.on;\n\n let delegateOverrides = RENDER_DRIVERS[options.context].delegateOverrides;\n\n for (let key of Object.keys(delegateOverrides)) {\n // $FlowFixMe\n this[key] = ParentComponent.prototype[key];\n }\n\n this.childWindowName = options.childWindowName;\n this.isWindowClosed = options.isWindowClosed;\n\n ParentComponent.prototype.registerActiveComponent.call(this);\n\n this.watchForClose();\n }\n\n get driver() : ContextDriverType {\n\n if (!this.context) {\n throw new Error('Context not set');\n }\n\n return RENDER_DRIVERS[this.context];\n }\n\n watchForClose() {\n let closeWindowListener = onCloseWindow(this.source, () => this.destroy(), 3000);\n this.clean.register('destroyCloseWindowListener', closeWindowListener.cancel);\n }\n\n getOverrides(context : string) : { [string] : mixed } {\n\n let delegateOverrides = RENDER_DRIVERS[context].delegateOverrides;\n\n let overrides = {};\n\n let self = this;\n\n for (let key of Object.keys(delegateOverrides)) {\n overrides[key] = function delegateOverride() : mixed {\n // $FlowFixMe\n return ParentComponent.prototype[key].apply(self, arguments);\n };\n }\n\n return overrides;\n }\n\n destroy() : ZalgoPromise {\n return this.clean.all();\n }\n}\n","/* @flow */\n\nimport { PROP_TYPES_LIST, CONTEXT_TYPES_LIST } from '../../constants';\nimport { isPerc, isPx } from '../../lib';\n\nimport type { ComponentOptionsType } from './index';\n\nfunction validatePropDefinitions

(options : ComponentOptionsType

) {\n\n if (options.props && !(typeof options.props === 'object')) {\n throw new Error(`Expected options.props to be an object`);\n }\n\n if (options.props) {\n for (let key of Object.keys(options.props)) {\n\n // $FlowFixMe\n let prop = options.props[key];\n\n if (!prop || !(typeof prop === 'object')) {\n throw new Error(`Expected options.props.${ key } to be an object`);\n }\n\n if (!prop.type) {\n throw new Error(`Expected prop.type`);\n }\n\n if (PROP_TYPES_LIST.indexOf(prop.type) === -1) {\n throw new Error(`Expected prop.type to be one of ${ PROP_TYPES_LIST.join(', ') }`);\n }\n\n if (prop.required && prop.def) {\n throw new Error(`Required prop can not have a default value`);\n }\n }\n }\n}\n\n// eslint-disable-next-line complexity\nexport function validate

(options : ?ComponentOptionsType

) { // eslint-ignore-line\n\n if (!options) {\n throw new Error(`Expecred options to be passed`);\n }\n\n if (!options.tag || !options.tag.match(/^[a-z0-9-]+$/)) {\n throw new Error(`Invalid options.tag: ${ options.tag }`);\n }\n\n validatePropDefinitions(options);\n\n if (options.dimensions) {\n if (options.dimensions && !isPx(options.dimensions.width) && !isPerc(options.dimensions.width)) {\n throw new Error(`Expected options.dimensions.width to be a px or % string value`);\n }\n\n if (options.dimensions && !isPx(options.dimensions.height) && !isPerc(options.dimensions.height)) {\n throw new Error(`Expected options.dimensions.height to be a px or % string value`);\n }\n }\n\n if (options.contexts) {\n\n if (options.contexts.popup && !__ZOID__.__POPUP_SUPPORT__) {\n throw new Error(`Popups not supported in this build -- please use the full zoid.js build`);\n }\n\n let anyEnabled = false;\n\n for (let context of Object.keys(options.contexts)) {\n\n if (CONTEXT_TYPES_LIST.indexOf(context) === -1) {\n throw new Error(`Unsupported context type: ${ context }`);\n }\n\n if ((options.contexts && options.contexts[context]) || (options.contexts && options.contexts[context] === undefined)) {\n anyEnabled = true;\n }\n }\n\n if (!anyEnabled) {\n throw new Error(`No context type is enabled`);\n }\n }\n\n if (options.defaultContext) {\n if (CONTEXT_TYPES_LIST.indexOf(options.defaultContext) === -1) {\n throw new Error(`Unsupported context type: ${ options.defaultContext || 'unknown' }`);\n }\n\n if (options.contexts && options.defaultContext && !options.contexts[options.defaultContext]) {\n throw new Error(`Disallowed default context type: ${ options.defaultContext || 'unknown' }`);\n }\n }\n\n if (options.url && options.buildUrl) {\n throw new Error(`Can not pass both options.url and options.buildUrl`);\n }\n\n if (options.defaultEnv) {\n if (typeof options.defaultEnv !== 'string') {\n throw new TypeError(`Expected options.defaultEnv to be a string`);\n }\n\n if (!options.buildUrl && typeof options.url !== 'object') {\n throw new Error(`Expected options.url to be an object mapping env->url`);\n }\n\n if (options.url && typeof options.url === 'object' && !options.url[options.defaultEnv]) {\n throw new Error(`No url found for default env: ${ options.defaultEnv }`);\n }\n }\n\n if (options.url && typeof options.url === 'object') {\n\n if (!options.defaultEnv) {\n throw new Error(`Must pass options.defaultEnv with env->url mapping`);\n }\n\n for (let env of Object.keys(options.url)) {\n if (!options.url[env]) {\n throw new Error(`No url specified for env: ${ env }`);\n }\n }\n }\n\n if (options.prerenderTemplate && typeof options.prerenderTemplate !== 'function') {\n throw new Error(`Expected options.prerenderTemplate to be a function`);\n }\n\n if (options.containerTemplate && typeof options.containerTemplate !== 'function') {\n throw new Error(`Expected options.containerTemplate to be a function`);\n }\n}\n","/* @flow */\n/* @jsx jsxDom */\n\nimport { type RenderOptionsType } from '../../parent';\n\nexport function defaultContainerTemplate({ id, tag, context, CLASS, outlet, jsxDom, dimensions : { width, height } } : RenderOptionsType) : HTMLElement {\n\n return (\n

\n \n\n { outlet }\n
\n );\n}\n","/* @flow */\n/* @jsx jsxDom */\n\nimport { type RenderOptionsType } from '../../parent';\n\nexport function defaultPrerenderTemplate({ jsxDom } : RenderOptionsType) : HTMLElement {\n return (\n \n \n \n \n \n
\n
\n
\n \n \n );\n}\n","/* @flow */\n\nexport * from './container';\nexport * from './component';\n","/* @flow */\n\nimport { type ZalgoPromise } from 'zalgo-promise/src';\nimport type { SameDomainWindowType } from 'cross-domain-utils/src';\n\nimport { uniqueID } from '../../lib';\nimport { type DimensionsType } from '../../types';\n\ntype PropDefinitionType = {\n type : S,\n alias? : string,\n value? : T,\n required? : boolean,\n noop? : boolean,\n once? : boolean,\n memoize? : boolean,\n promisify? : boolean,\n queryParam? : boolean | string | (T) => (string | ZalgoPromise),\n queryValue? : (T) => (ZalgoPromise | mixed),\n sendToChild? : boolean,\n allowDelegate? : boolean,\n validate? : (T, PropsType & P) => void,\n decorate? : (T, PropsType & P) => (void | ZalgoPromise | T),\n def? : (P) => ?T,\n sameDomain? : boolean,\n serialization? : 'json' | 'dotify',\n childDecorate? : (T) => ?T,\n denodeify? : boolean\n};\n\nexport type BooleanPropDefinitionType = PropDefinitionType;\nexport type StringPropDefinitionType = PropDefinitionType;\nexport type NumberPropDefinitionType = PropDefinitionType;\nexport type FunctionPropDefinitionType = PropDefinitionType;\nexport type ObjectPropDefinitionType = PropDefinitionType;\n\nexport type MixedPropDefinitionType

= BooleanPropDefinitionType<*, P> | StringPropDefinitionType<*, P> | NumberPropDefinitionType<*, P> | FunctionPropDefinitionType<*, P> | ObjectPropDefinitionType<*, P>;\n\nexport type UserPropsDefinitionType

= {\n [string] : MixedPropDefinitionType

\n};\n\nexport type EventHandlerType = (T) => void | ZalgoPromise;\n\ntype envPropType = string;\ntype uidPropType = string;\ntype urlPropType = string;\ntype versionPropType = string;\ntype timeoutPropType = number;\ntype logLevelPropType = string;\ntype dimensionsPropType = DimensionsType;\ntype winPropType = SameDomainWindowType;\n\ntype onDisplayPropType = EventHandlerType;\ntype onEnterPropType = EventHandlerType;\ntype onRenderPropType = EventHandlerType;\ntype onClosePropType = EventHandlerType;\ntype onResizePropType = EventHandlerType;\ntype onTimeoutPropType = EventHandlerType;\ntype onErrorPropType = EventHandlerType;\n\nexport type BuiltInPropsType = {\n env : envPropType,\n uid : uidPropType,\n url? : urlPropType,\n version? : versionPropType,\n timeout? : timeoutPropType,\n logLevel : logLevelPropType,\n dimensions? : dimensionsPropType,\n win? : winPropType,\n\n onDisplay : onDisplayPropType,\n onEnter : onEnterPropType,\n onRender : onRenderPropType,\n onClose : onClosePropType,\n onResize : onResizePropType,\n onTimeout : onTimeoutPropType,\n onError? : onErrorPropType\n};\n\nexport type PropsType = {\n env? : envPropType,\n uid? : uidPropType,\n url? : urlPropType,\n version? : versionPropType,\n timeout? : timeoutPropType,\n logLevel? : logLevelPropType,\n dimensions? : dimensionsPropType,\n win? : winPropType,\n\n onDisplay? : onDisplayPropType,\n onEnter? : onEnterPropType,\n onRender? : onRenderPropType,\n onClose? : onClosePropType,\n onResize? : onResizePropType,\n onTimeout? : onTimeoutPropType,\n onError? : onErrorPropType\n};\n\nexport type BuiltInPropsDefinitionType

= {\n env : StringPropDefinitionType,\n uid : StringPropDefinitionType,\n url : StringPropDefinitionType,\n version : StringPropDefinitionType,\n timeout : NumberPropDefinitionType,\n logLevel : StringPropDefinitionType,\n dimensions : ObjectPropDefinitionType,\n win : ObjectPropDefinitionType,\n\n onDisplay : FunctionPropDefinitionType,\n onEnter : FunctionPropDefinitionType,\n onRender : FunctionPropDefinitionType,\n onClose : FunctionPropDefinitionType,\n onResize : FunctionPropDefinitionType,\n onTimeout : FunctionPropDefinitionType,\n onError : FunctionPropDefinitionType\n};\n\n/* Internal Props\n --------------\n\n We define and use certain props by default, for configuration and events that are used at the framework level.\n These follow the same format as regular props, and are classed as reserved words that may not be overriden by users.\n*/\n\nexport function getInternalProps

() : BuiltInPropsDefinitionType

{\n return {\n\n // The desired env in which the component is being rendered. Used to determine the correct url\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n def() : string {\n return this.defaultEnv;\n }\n },\n\n uid: {\n type: 'string',\n def() : string {\n return uniqueID();\n },\n queryParam: true\n },\n\n logLevel: {\n type: 'string',\n required: false,\n queryParam: true,\n def() : string {\n return this.defaultLogLevel;\n }\n },\n\n // A custom url to use to render the component\n\n url: {\n type: 'string',\n required: false,\n promise: true,\n sendToChild: false\n },\n\n win: {\n type: 'object',\n required: false,\n sendToChild: false\n },\n\n dimensions: {\n type: 'object',\n required: false\n },\n\n version: {\n type: 'string',\n required: false,\n queryParam: true,\n def() : string {\n return this.version;\n }\n },\n\n // A millisecond timeout before onTimeout is called\n\n timeout: {\n type: 'number',\n required: false,\n sendToChild: false\n },\n\n onDisplay: {\n type: 'function',\n required: false,\n noop: true,\n promisify: true,\n memoize: true,\n sendToChild: false\n },\n\n onEnter: {\n type: 'function',\n required: false,\n noop: true,\n promisify: true,\n sendToChild: false\n },\n\n // When we get an INIT message from the child\n\n onRender: {\n type: 'function',\n required: false,\n noop: true,\n promisify: true,\n sendToChild: false\n },\n\n // When the user closes the component.\n\n onClose: {\n type: 'function',\n required: false,\n noop: true,\n once: true,\n promisify: true,\n sendToChild: false\n },\n\n onResize: {\n type: 'function',\n required: false,\n noop: true,\n sendToChild: false\n },\n\n // When we time-out before getting an INIT message from the child. Defaults to onError if no handler passed.\n\n onTimeout: {\n type: 'function',\n required: false,\n memoize: true,\n promisify: true,\n sendToChild: false,\n def() : (() => void) {\n return function onTimeout(err : mixed) : void {\n if (this.props.onError) {\n return this.props.onError(err);\n }\n throw err;\n };\n }\n },\n\n // When the component experiences an error\n\n onError: {\n type: 'function',\n required: false,\n promisify: true,\n sendToChild: true,\n once: true,\n def() : (() => void) {\n return function onError(err : mixed) {\n setTimeout(() => {\n throw err;\n });\n };\n }\n }\n };\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { on, send } from 'post-robot/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getDomain, getDomainFromUrl, matchDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { BaseComponent } from '../base';\nimport { ChildComponent } from '../child';\nimport { ParentComponent, type RenderOptionsType } from '../parent';\nimport { DelegateComponent, type DelegateOptionsType } from '../delegate';\nimport { isZoidComponentWindow, getComponentMeta } from '../window';\nimport { CONTEXT_TYPES, POST_MESSAGE, WILDCARD } from '../../constants';\nimport { angular, angular2, glimmer, react, vue, script } from '../../drivers/index';\nimport { info, error, warn, setLogLevel, memoize } from '../../lib';\nimport type { EnvStringRegExp, CssDimensionsType, StringMatcherType, ElementRefType, EnvString } from '../../types';\n\nimport { validate } from './validate';\nimport { defaultContainerTemplate, defaultPrerenderTemplate } from './templates';\nimport { getInternalProps, type UserPropsDefinitionType, type BuiltInPropsDefinitionType, type PropsType, type BuiltInPropsType, type MixedPropDefinitionType } from './props';\n\nconst drivers = { angular, angular2, glimmer, react, vue, script };\n\n/* Component\n ---------\n\n This is the spec for the component. The idea is, when I call zoid.create(), it will create a new instance\n of Component with the blueprint needed to set up ParentComponents and ChildComponents.\n\n This is the one portion of code which is required by -- and shared to -- both the parent and child windows, and\n contains all of the configuration needed for them to set themselves up.\n*/\n\nexport type ComponentOptionsType

= {\n\n tag : string,\n\n url? : EnvString,\n buildUrl? : (BuiltInPropsType & P) => string | ZalgoPromise,\n\n domain? : EnvStringRegExp,\n bridgeUrl? : EnvString,\n bridgeDomain? : EnvString,\n\n props? : UserPropsDefinitionType

,\n\n dimensions? : CssDimensionsType,\n scrolling? : boolean,\n autoResize? : boolean | { width? : boolean, height? : boolean, element? : string },\n listenForResize? : boolean,\n\n defaultLogLevel? : string,\n allowedParentDomains? : StringMatcherType,\n\n version? : string,\n defaultEnv? : string,\n\n contexts? : { iframe? : boolean, popup? : boolean },\n defaultContext? : string,\n\n containerTemplate? : (RenderOptionsType) => HTMLElement,\n prerenderTemplate? : (RenderOptionsType) => HTMLElement,\n\n validate? : (Component

, UserPropsDefinitionType

) => void,\n\n unsafeRenderTo? : boolean\n};\n\nexport type ComponentDriverType = {\n global : () => ?T,\n register : (Component

, T) => mixed\n};\n\nexport class Component

extends BaseComponent

{\n\n name : string\n looseProps : boolean\n\n tag : string\n url : EnvString\n\n domain : EnvStringRegExp\n bridgeUrl : EnvString\n bridgeDomain : EnvString\n\n props : UserPropsDefinitionType

\n builtinProps : BuiltInPropsDefinitionType

\n\n dimensions : CssDimensionsType\n scrolling : boolean\n autoResize : ?(boolean | { width? : boolean, height? : boolean, element? : string })\n listenForResize : ?boolean\n\n defaultLogLevel : string\n allowedParentDomains : StringMatcherType\n\n version : string\n defaultEnv : string\n buildUrl : (BuiltInPropsType & P) => string | ZalgoPromise\n\n contexts : { iframe? : boolean, popup? : boolean }\n defaultContext : string\n\n containerTemplate : (RenderOptionsType) => HTMLElement\n prerenderTemplate : (RenderOptionsType) => HTMLElement\n\n validate : (Component

, (PropsType & P)) => void\n\n unsafeRenderTo : ?boolean\n\n driverCache : { [string] : mixed }\n\n xchild : ?ChildComponent

\n xprops : ?P\n\n constructor(options : ComponentOptionsType

) {\n super();\n validate(options);\n\n // The tag name of the component. Used by some drivers (e.g. angular) to turn the component into an html element,\n // e.g. \n\n this.addProp(options, 'tag');\n\n this.addProp(options, 'defaultLogLevel', 'info');\n\n this.addProp(options, 'allowedParentDomains', WILDCARD);\n\n // initially set log level to default log level configured when creating component\n setLogLevel(this.defaultLogLevel);\n\n if (Component.components[this.tag]) {\n throw new Error(`Can not register multiple components with the same tag`);\n }\n\n // Name of the component, used for logging. Auto-generated from the tag name by default.\n\n this.addProp(options, 'name', this.tag.replace(/-/g, '_'));\n\n // A json based spec describing what kind of props the component accepts. This is used to validate any props before\n // they are passed down to the child.\n\n this.builtinProps = getInternalProps();\n this.props = options.props || {};\n\n if (!options.props) {\n this.looseProps = true;\n }\n\n // The dimensions of the component, e.g. { width: '300px', height: '150px' }\n\n this.addProp(options, 'dimensions');\n this.addProp(options, 'scrolling');\n this.addProp(options, 'listenForResize');\n\n this.addProp(options, 'version', 'latest');\n\n // The default environment we should render to if none is specified in the parent\n\n this.addProp(options, 'defaultEnv');\n\n // A mapping of env->url, used to determine which url to load for which env\n\n this.addProp(options, 'buildUrl');\n\n this.addProp(options, 'url');\n this.addProp(options, 'domain');\n\n this.addProp(options, 'bridgeUrl');\n this.addProp(options, 'bridgeDomain');\n\n this.addProp(options, 'attributes', {});\n\n // A url to use by default to render the component, if not using envs\n\n\n // The allowed contexts. For example { iframe: true, popup: false }\n\n this.addProp(options, 'contexts', { iframe: true, popup: false });\n\n // The default context to render to\n\n this.addProp(options, 'defaultContext');\n\n // Auto Resize option\n\n this.addProp(options, 'autoResize', false);\n\n // Templates and styles for the parent page and the initial rendering of the component\n\n this.addProp(options, 'containerTemplate', defaultContainerTemplate);\n this.addProp(options, 'prerenderTemplate', defaultPrerenderTemplate);\n\n // Validation\n\n this.addProp(options, 'validate');\n\n // Security\n\n this.addProp(options, 'unsafeRenderTo', false);\n\n // A mapping of tag->component so we can reference components by string tag name\n\n Component.components[this.tag] = this;\n\n // Register all of the drivers for instantiating components. The model used is -- there's a standard javascript\n // way of rendering a component, then each other technology (e.g. react) needs to hook into that interface.\n // This makes us a little more pluggable and loosely coupled.\n this.registerDrivers();\n this.registerChild();\n this.listenDelegate();\n }\n\n @memoize\n getPropNames() : Array {\n let props = Object.keys(this.props);\n\n for (let key of Object.keys(this.builtinProps)) {\n if (props.indexOf(key) === -1) {\n props.push(key);\n }\n }\n\n return props;\n }\n\n // $FlowFixMe\n getProp(name : string) : MixedPropDefinitionType

{\n // $FlowFixMe\n return this.props[name] || this.builtinProps[name];\n }\n\n registerDrivers() {\n this.driverCache = {};\n\n for (let driverName of Object.keys(drivers)) {\n if (driverName.indexOf('_') === 0) {\n continue;\n }\n\n let driver = drivers[driverName];\n let glob = driver.global();\n if (glob) {\n this.driver(driverName, glob);\n }\n }\n }\n\n driver(name : string, dep : mixed) : mixed {\n if (!drivers[name]) {\n throw new Error(`Could not find driver for framework: ${ name }`);\n }\n\n if (!this.driverCache[name]) {\n this.driverCache[name] = drivers[name].register(this, dep);\n }\n\n return this.driverCache[name];\n }\n\n registerChild() : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n if (this.isChild()) {\n return new ChildComponent(this);\n }\n });\n }\n\n listenDelegate() {\n on(`${ POST_MESSAGE.ALLOW_DELEGATE }_${ this.name }`, () => {\n return true;\n });\n\n on(`${ POST_MESSAGE.DELEGATE }_${ this.name }`, ({ source, origin, data }) => {\n\n let domain = this.getDomain(null, data.env || this.defaultEnv);\n\n if (!domain) {\n throw new Error(`Could not determine domain to allow remote render`);\n }\n\n if (!matchDomain(domain, origin)) {\n throw new Error(`Can not render from ${ origin } - expected ${ domain.toString() }`);\n }\n\n let delegate = this.delegate(source, data.options);\n\n return {\n overrides: delegate.getOverrides(data.context),\n destroy: () => delegate.destroy()\n };\n });\n }\n\n canRenderTo(win : CrossDomainWindowType) : ZalgoPromise {\n return send(win, `${ POST_MESSAGE.ALLOW_DELEGATE }_${ this.name }`).then(({ data }) => {\n return data;\n }).catch(() => {\n return false;\n });\n }\n\n\n getValidDomain(url : ?string) : ?(string | RegExp) {\n\n if (!url) {\n return;\n }\n\n let domain = getDomainFromUrl(url);\n\n if (typeof this.domain === 'string' && domain === this.domain) {\n return domain;\n }\n\n let domains = this.domain;\n\n if (domains && typeof domains === 'object' && !(domains instanceof RegExp)) {\n for (let env of Object.keys(domains)) {\n\n if (env === 'test') {\n continue;\n }\n\n if (domain === domains[env]) {\n return domain;\n }\n }\n }\n }\n\n\n getDomain(url : ?string, env : string) : ?(string | RegExp) {\n\n let domain = this.getForEnv(this.domain, env);\n\n if (domain) {\n return domain;\n }\n\n domain = this.getValidDomain(url);\n\n if (domain) {\n return domain;\n }\n\n // $FlowFixMe\n let envUrl = this.getForEnv(this.url, env);\n\n if (envUrl) {\n // $FlowFixMe\n return getDomainFromUrl(envUrl);\n }\n\n if (url) {\n return getDomainFromUrl(url);\n }\n }\n\n getBridgeUrl(env : string) : ?string {\n // $FlowFixMe\n return this.getForEnv(this.bridgeUrl, env);\n }\n\n getForEnv(item : (string | RegExp) | { [string] : (string | RegExp) }, env : ?string) : ?(string | RegExp) {\n\n if (!item) {\n return;\n }\n\n if (typeof item === 'string' || item instanceof RegExp) {\n return item;\n }\n\n if (!env) {\n env = this.defaultEnv;\n }\n\n if (!env) {\n return;\n }\n\n if (env && typeof item === 'object' && item[env]) {\n return item[env];\n }\n }\n\n getBridgeDomain(env : string) : ?string {\n\n // $FlowFixMe\n let bridgeDomain = this.getForEnv(this.bridgeDomain, env);\n\n if (bridgeDomain) {\n // $FlowFixMe\n return bridgeDomain;\n }\n\n let bridgeUrl = this.getBridgeUrl(env);\n\n if (bridgeUrl) {\n return getDomainFromUrl(bridgeUrl);\n }\n }\n\n getUrl(env : string, props : BuiltInPropsType & P) : (string | ZalgoPromise) {\n\n // $FlowFixMe\n let url = this.getForEnv(this.url, env);\n\n if (url) {\n // $FlowFixMe\n return url;\n }\n\n if (this.buildUrl) {\n return this.buildUrl(props);\n }\n\n throw new Error(`Unable to get url`);\n }\n\n isZoidComponent() : boolean {\n return isZoidComponentWindow();\n }\n\n isChild() : boolean {\n if (!isZoidComponentWindow()) {\n return false;\n }\n\n const { tag, childDomain } = getComponentMeta();\n\n if (childDomain && childDomain !== getDomain()) {\n return false;\n }\n\n if (tag !== this.tag) {\n return false;\n }\n\n return true;\n }\n\n\n createError(message : string, tag : ?string) : Error {\n return new Error(`[${ tag || this.tag }] ${ message }`);\n }\n\n\n /* Init\n ----\n\n Shortcut to instantiate a component on a parent page, with props\n */\n\n init(props : (PropsType & P), context : ?string, element : ElementRefType) : ParentComponent

{\n return new ParentComponent(this, this.getRenderContext(context, element), { props });\n }\n\n\n delegate(source : CrossDomainWindowType, options : DelegateOptionsType) : DelegateComponent

{\n return new DelegateComponent(this, source, options);\n }\n\n validateRenderContext(context : ?string, element : ?ElementRefType) {\n if (context && !this.contexts[context]) {\n throw new Error(`[${ this.tag }] Can not render to ${ context }`);\n }\n\n if (!element && context === CONTEXT_TYPES.IFRAME) {\n throw new Error(`[${ this.tag }] Context type ${ CONTEXT_TYPES.IFRAME } requires an element selector`);\n }\n }\n\n getDefaultContext() : string {\n if (this.defaultContext) {\n return this.defaultContext;\n } else if (this.contexts[CONTEXT_TYPES.IFRAME]) {\n return CONTEXT_TYPES.IFRAME;\n } else if (this.contexts[CONTEXT_TYPES.POPUP]) {\n return CONTEXT_TYPES.POPUP;\n }\n\n throw new Error(`Can not determine default context`);\n }\n\n getRenderContext(context : ?string, element : ?ElementRefType) : string {\n context = context || this.getDefaultContext();\n this.validateRenderContext(context, element);\n return context;\n }\n\n\n /* Render\n ------\n\n Shortcut to render a parent component\n */\n\n render(props : (PropsType & P), element : ?ElementRefType) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(null, element), { props }).render(element);\n });\n }\n\n renderIframe(props : (PropsType & P), element : ElementRefType) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(CONTEXT_TYPES.IFRAME, element), { props }).render(element);\n });\n }\n\n renderPopup(props : (PropsType & P)) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(CONTEXT_TYPES.POPUP), { props }).render();\n });\n }\n\n renderTo(win : CrossDomainWindowType, props : (PropsType & P), element : ?ElementRefType) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(null, element), { props }).renderTo(win, element);\n });\n }\n\n renderIframeTo(win : CrossDomainWindowType, props : (PropsType & P), element : ElementRefType) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(CONTEXT_TYPES.IFRAME, element), { props }).renderTo(win, element);\n });\n }\n\n renderPopupTo(win : CrossDomainWindowType, props : (PropsType & P)) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(CONTEXT_TYPES.POPUP), { props }).renderTo(win);\n });\n }\n\n prerender(props : (PropsType & P), element : ElementRefType) : { render : ((PropsType & P), ElementRefType) => ZalgoPromise>, renderTo : (CrossDomainWindowType, (PropsType & P), ElementRefType) => ZalgoPromise> } {\n let instance = new ParentComponent(this, this.getRenderContext(null, element), { props });\n instance.prefetch();\n\n return {\n render(innerProps : (PropsType & P), innerElement : ElementRefType) : ZalgoPromise> {\n if (innerProps) {\n instance.updateProps(innerProps);\n }\n\n return instance.render(innerElement);\n },\n\n renderTo(win : CrossDomainWindowType, innerProps : (PropsType & P), innerElement : ElementRefType) : ZalgoPromise> {\n if (innerProps) {\n instance.updateProps(innerProps);\n }\n\n return instance.renderTo(win, innerElement);\n },\n\n get html() : ?ZalgoPromise {\n return instance.html;\n },\n\n set html(value) {\n instance.html = value;\n }\n };\n }\n\n /* Log\n ---\n\n Log an event using the component name\n */\n\n log(event : string, payload : { [ string ] : string } = {}) {\n info(this.name, event, payload);\n }\n\n\n /* Log Warning\n -----------\n\n Log a warning\n */\n\n logWarning(event : string, payload : { [ string ] : string }) {\n warn(this.name, event, payload);\n }\n\n\n /* Log Error\n ---------\n\n Log an error\n */\n\n logError(event : string, payload : { [ string ] : string }) {\n error(this.name, event, payload);\n }\n\n static components : { [string] : Component<*> } = {}\n\n static getByTag(tag : string) : Component {\n return Component.components[tag];\n }\n}\n","/* @flow */\n\nexport * from './component';\nexport * from './parent';\nexport * from './child';\n","/* @flow */\n\nimport { type ZalgoPromise } from 'zalgo-promise/src';\n// eslint-disable-next-line import/no-namespace\nimport * as _postRobot from 'post-robot/src';\n\nimport { Component, type ComponentOptionsType } from './component';\nimport { ParentComponent } from './component/parent';\n// eslint-disable-next-line import/no-namespace\nimport * as _CONSTANTS from './constants';\n\nexport function create

(options : ComponentOptionsType

) : Component

{\n return new Component(options);\n}\n\nexport function getByTag

(tag : string) : Component

{\n return Component.getByTag(tag);\n}\n\nexport { getCurrentScriptDir } from './lib';\n\nexport function destroyAll() : ZalgoPromise {\n return ParentComponent.destroyAll();\n}\nexport let postRobot = _postRobot;\n\nexport * from './error';\n\nexport const CONSTANTS = _CONSTANTS;\n\nexport type ZoidComponent

= Component

;\n","/* @flow */\n\n// eslint-disable-next-line import/no-namespace\nimport * as INTERFACE from './interface';\n\nexport * from './interface';\nexport default INTERFACE;\n","/* @flow */\n\nimport { on, send } from 'post-robot/src';\nimport { isWindowClosed, getDomain, isSameDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { config } from '../config';\n\nimport { noop } from './util';\n\nexport function proxyMethod(name : string, win : ?CrossDomainWindowType, originalMethod : Function) : Function {\n\n if (win && getDomain() === config.paypalDomain && !isSameDomain(win)) {\n\n if (win) {\n send(win, `proxy_${ name }`, { originalMethod }).catch(noop);\n }\n\n return originalMethod;\n }\n\n let methods = [];\n\n on(`proxy_${ name }`, { domain: config.paypal_domain_regex }, ({ data }) => {\n methods.push(data.originalMethod);\n });\n\n return function postMessageProxy() : mixed {\n\n methods = methods.filter(method => !isWindowClosed(method.source));\n\n if (methods.length) {\n return methods[methods.length - 1].apply(this, arguments).catch(() => {\n return originalMethod.apply(this, arguments);\n });\n }\n\n return originalMethod.apply(this, arguments);\n };\n}\n","/* @flow */\n\nimport { CONFIG as POSTROBOT_CONFIG } from 'post-robot/src';\nimport { setTransport, getTransport, addPayloadBuilder, addHeaderBuilder, addMetaBuilder,\n addTrackingBuilder, init, logLevels, config as loggerConfig } from 'beaver-logger/client';\nimport { getParent, PROTOCOL } from 'cross-domain-utils/src';\n\nimport { config } from '../config';\nimport { FPTI, PAYMENT_TYPE } from '../constants';\n\nimport { getSessionID, getButtonSessionID } from './session';\nimport { proxyMethod } from './proxy';\nimport { once } from './util';\nimport { getQueryParam } from './dom';\nimport { isPayPalDomain } from './security';\n\nfunction getRefererDomain() : string {\n return (window.xchild && window.xchild.getParentDomain)\n ? window.xchild.getParentDomain()\n : window.location.host;\n}\n\nconst setupProxyLogTransport = once(() => {\n setTransport(proxyMethod('log', getParent(window), getTransport()));\n});\n\nfunction getToken() : ?string {\n if (window.root && window.root.token) {\n return window.root.token;\n }\n\n if (isPayPalDomain()) {\n const queryToken = getQueryParam('token');\n\n if (queryToken) {\n return queryToken;\n }\n }\n}\n\nexport function initLogger() {\n\n setupProxyLogTransport();\n\n addPayloadBuilder(() => {\n return {\n referer: getRefererDomain(),\n host: window.location.host,\n path: window.location.pathname,\n env: config.env,\n country: config.locale.country,\n lang: config.locale.lang,\n uid: getSessionID(),\n ver: __PAYPAL_CHECKOUT__.__MINOR_VERSION__\n };\n });\n\n addHeaderBuilder(() => {\n return {\n 'x-app-name': 'checkoutjs'\n };\n });\n\n addMetaBuilder(() => {\n return {\n state: config.state\n };\n });\n\n addTrackingBuilder((payload = {}) => {\n\n const sessionID = getSessionID();\n const paymentToken = getToken();\n const buttonSessionID = payload[FPTI.KEY.BUTTON_SESSION_UID] || getButtonSessionID();\n\n let contextType;\n let contextID;\n\n if (paymentToken) {\n contextType = FPTI.CONTEXT_TYPE[PAYMENT_TYPE.EC_TOKEN];\n contextID = paymentToken;\n } else if (buttonSessionID) {\n contextType = FPTI.CONTEXT_TYPE.BUTTON_SESSION_ID;\n contextID = buttonSessionID;\n } else {\n contextType = payload[FPTI.KEY.CONTEXT_TYPE];\n contextID = payload[FPTI.KEY.CONTEXT_ID];\n }\n\n return {\n [ FPTI.KEY.FEED ]: FPTI.FEED.CHECKOUTJS,\n [ FPTI.KEY.DATA_SOURCE ]: FPTI.DATA_SOURCE.CHECKOUT,\n [ FPTI.KEY.CONTEXT_TYPE ]: contextType,\n [ FPTI.KEY.CONTEXT_ID ]: contextID,\n [ FPTI.KEY.SELLER_ID ]: config.merchantID,\n [ FPTI.KEY.SESSION_UID ]: sessionID,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: buttonSessionID,\n [ FPTI.KEY.VERSION ]: config.version,\n [ FPTI.KEY.TOKEN ]: paymentToken,\n [ FPTI.KEY.REFERER ]: getRefererDomain()\n };\n });\n\n const prefix = 'ppxo';\n\n if (window.location.protocol !== PROTOCOL.FILE) {\n init({\n uri: config.loggerUrl,\n heartbeat: false,\n logPerformance: false,\n prefix,\n logLevel: __PAYPAL_CHECKOUT__.__DEFAULT_LOG_LEVEL__\n });\n }\n}\n\nexport function setLogLevel(logLevel : string) {\n\n if (logLevels.indexOf(logLevel) === -1) {\n throw new Error(`Invalid logLevel: ${ logLevel }`);\n }\n\n config.logLevel = logLevel;\n loggerConfig.logLevel = logLevel;\n POSTROBOT_CONFIG.LOG_LEVEL = logLevel;\n window.LOG_LEVEL = logLevel;\n}\n","/* @flow */\n\nimport { info, flush as flushLogs } from 'beaver-logger/client';\n\nimport { config } from '../config';\n\nimport { isIEIntranet, getUserAgent } from './device';\nimport { once } from './util';\n\nconst bowserCache = {};\n\nfunction getBowser() : Object {\n\n const userAgent = getUserAgent();\n\n if (bowserCache[userAgent]) {\n return bowserCache[userAgent];\n }\n\n delete require.cache[require.resolve('bowser/bowser.min')];\n const bowser = require('bowser/bowser.min');\n\n bowserCache[userAgent] = bowser;\n\n return bowser;\n}\n\nexport function getBrowser() : { browser? : string, version? : string } {\n\n const bowser = getBowser();\n\n for (const browser of Object.keys(config.SUPPORTED_BROWSERS)) {\n if (bowser[browser]) {\n return { browser, version: bowser.version };\n }\n }\n\n return {};\n}\n\nfunction isBrowserEligible() : boolean {\n\n if (isIEIntranet()) {\n return false;\n }\n\n const bowser = getBowser();\n const { browser, version } = getBrowser();\n\n if (browser && version && bowser.compareVersions([ version, config.SUPPORTED_BROWSERS[browser] ]) === -1) {\n return false;\n }\n\n return true;\n}\n\nconst eligibilityResults = {};\n\nexport function isEligible() : boolean {\n\n if (isIEIntranet()) {\n return false;\n }\n\n const userAgent = window.navigator.userAgent;\n\n if (userAgent && eligibilityResults.hasOwnProperty(userAgent)) {\n return eligibilityResults[userAgent];\n }\n\n const result = isBrowserEligible();\n\n eligibilityResults[userAgent] = result;\n\n return result;\n}\n\nexport const checkRecognizedBrowser = once((state : string) => {\n\n const { browser } = getBrowser();\n\n if (!browser) {\n const { name, version, mobile, android, ios } = getBowser();\n info(`unrecognized_browser_${ state }`, { name, version, mobile, android, ios });\n flushLogs();\n }\n});\n","/* @flow */\n\nimport { warn } from 'beaver-logger/client';\n\nimport { isIE, isIEIntranet, isIECompHeader } from './device';\n\nfunction logWarn(err) : void {\n if (window.console) {\n if (window.console.warn) {\n return window.console.warn(err);\n }\n\n if (window.console.log) {\n return window.console.log(err);\n }\n }\n}\n\nexport function checkForCommonErrors() {\n\n if (JSON.stringify([]) !== '[]') {\n // $FlowFixMe\n if (Array.prototype.toJSON) {\n logWarn(`Custom Array.prototype.toJSON is causing incorrect json serialization of arrays. This is likely to cause issues. Probable cause is Prototype.js`);\n } else {\n logWarn(`JSON.stringify is doing incorrect serialization of arrays. This is likely to cause issues.`);\n }\n\n warn(`json_stringify_array_broken`);\n }\n\n if (JSON.stringify({}) !== '{}') {\n logWarn(`JSON.stringify is doing incorrect serialization of objects. This is likely to cause issues.`);\n\n warn(`json_stringify_object_broken`);\n }\n\n if (isIEIntranet()) {\n warn(`ie_intranet_mode`);\n }\n\n if (isIE() && !isIECompHeader()) {\n warn(`ie_meta_compatibility_header_missing`, {\n message: `Drop tag: ` });\n }\n\n // eslint-disable-next-line no-unused-vars\n function foo(bar, baz, zomg) {\n // pass;\n }\n\n if (foo.bind({ a: 1 }).length !== 3) {\n warn(`function_bind_arrity_overwritten`);\n }\n\n if (window.opener && window.parent !== window) {\n warn(`window_has_opener_and_parent`);\n }\n\n if (window.name && window.name.indexOf('__prerender') === 0) {\n warn(`prerender_running_checkoutjs`);\n }\n\n const context = {};\n\n function returnContext() : typeof context {\n return this;\n }\n\n if (returnContext.bind(context)() !== context) {\n warn(`function_bind_broken`);\n }\n\n if (window.Window && window.constructor && window.Window !== window.constructor) {\n warn(`window_constructor_does_not_match_window`);\n }\n\n // $FlowFixMe\n if (Object.assign && JSON.stringify({ a: 1, b: 2, c: 3 }) !== JSON.stringify({ a: 1, b: 2, c: 3 })) { // eslint-disable-line no-self-compare, compat/compat\n warn(`object_assign_broken`);\n }\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { addPayloadBuilder } from 'beaver-logger/client';\nimport { type SameDomainWindowType } from 'cross-domain-utils/src';\n\ntype RequestOptionsType = {|\n url : string,\n method? : string,\n headers? : { [key : string] : string },\n json? : Object,\n data? : { [key : string] : string },\n body? : string,\n win? : SameDomainWindowType,\n timeout? : number\n|};\n\nconst HEADERS = {\n CONTENT_TYPE: 'content-type',\n ACCEPT: 'accept'\n};\n\nconst headerBuilders = [];\nconst corrids = [];\n\naddPayloadBuilder(() => {\n return {\n prev_corr_ids: corrids.join(',')\n };\n});\n\nfunction parseHeaders(rawHeaders : string = '') : { [string] : string } {\n const result = {};\n for (const line of rawHeaders.trim().split('\\n')) {\n const [ key, ...values ] = line.split(':');\n result[key.toLowerCase()] = values.join(':').trim();\n }\n return result;\n}\n\nexport function request({ url, method = 'get', headers = {}, json, data, body, win = window, timeout = 0 } : RequestOptionsType) : ZalgoPromise {\n\n if (url === '/demo/checkout/api/braintree/client-token/') {\n // $FlowFixMe\n return ZalgoPromise.resolve('eyJ2ZXJzaW9uIjoyLCJhdXRob3JpemF0aW9uRmluZ2VycHJpbnQiOiJjMDFhZmRkM2Y1OTJmNWVhNTNlMzE5MWQwYmIyMWVjYjM5NzNlZGM1MzkwNDZiMjJmNTA2ODEyNzIzZmRlMTJifGNsaWVudF9pZD1jbGllbnRfaWQkc2FuZGJveCQ0ZHByYmZjNnBoNTk1Y2NqXHUwMDI2Y3JlYXRlZF9hdD0yMDE3LTA0LTI2VDIzOjI2OjU5Ljg3OTA3ODYwNiswMDAwXHUwMDI2bWVyY2hhbnRfaWQ9M3cydHR2d2QyNDY1NDhoZCIsImNvbmZpZ1VybCI6Imh0dHBzOi8vYXBpLnNhbmRib3guYnJhaW50cmVlZ2F0ZXdheS5jb206NDQzL21lcmNoYW50cy8zdzJ0dHZ3ZDI0NjU0OGhkL2NsaWVudF9hcGkvdjEvY29uZmlndXJhdGlvbiIsImNoYWxsZW5nZXMiOltdLCJlbnZpcm9ubWVudCI6InNhbmRib3giLCJjbGllbnRBcGlVcmwiOiJodHRwczovL2FwaS5zYW5kYm94LmJyYWludHJlZWdhdGV3YXkuY29tOjQ0My9tZXJjaGFudHMvM3cydHR2d2QyNDY1NDhoZC9jbGllbnRfYXBpIiwiYXNzZXRzVXJsIjoiaHR0cHM6Ly9hc3NldHMuYnJhaW50cmVlZ2F0ZXdheS5jb20iLCJhdXRoVXJsIjoiaHR0cHM6Ly9hdXRoLnZlbm1vLnNhbmRib3guYnJhaW50cmVlZ2F0ZXdheS5jb20iLCJhbmFseXRpY3MiOnsidXJsIjoiaHR0cHM6Ly9jbGllbnQtYW5hbHl0aWNzLnNhbmRib3guYnJhaW50cmVlZ2F0ZXdheS5jb20vM3cydHR2d2QyNDY1NDhoZCJ9LCJ0aHJlZURTZWN1cmVFbmFibGVkIjpmYWxzZSwicGF5cGFsRW5hYmxlZCI6dHJ1ZSwicGF5cGFsIjp7ImRpc3BsYXlOYW1lIjoiYmFyY28uMDMtZmFjaWxpdGF0b3JAZ21haWwuY29tIiwiY2xpZW50SWQiOiJBV3VZdnFnMGtaN2Y5S0V4TVpqZU53T3RjQV8yZVhnOWpMZy1QSnBGX0pnYk44M0YyVml5aEdnV2JCNDg4RGU3MFpucGRBZEI2TUNqekNqSyIsInByaXZhY3lVcmwiOiJodHRwczovL2V4YW1wbGUuY29tIiwidXNlckFncmVlbWVudFVybCI6Imh0dHBzOi8vZXhhbXBsZS5jb20iLCJiYXNlVXJsIjoiaHR0cHM6Ly9hc3NldHMuYnJhaW50cmVlZ2F0ZXdheS5jb20iLCJhc3NldHNVcmwiOiJodHRwczovL2NoZWNrb3V0LnBheXBhbC5jb20iLCJkaXJlY3RCYXNlVXJsIjpudWxsLCJhbGxvd0h0dHAiOnRydWUsImVudmlyb25tZW50Tm9OZXR3b3JrIjpmYWxzZSwiZW52aXJvbm1lbnQiOiJvZmZsaW5lIiwidW52ZXR0ZWRNZXJjaGFudCI6ZmFsc2UsImJyYWludHJlZUNsaWVudElkIjoibWFzdGVyY2xpZW50MyIsImJpbGxpbmdBZ3JlZW1lbnRzRW5hYmxlZCI6dHJ1ZSwibWVyY2hhbnRBY2NvdW50SWQiOiJVU0QiLCJjdXJyZW5jeUlzb0NvZGUiOiJVU0QifSwiY29pbmJhc2VFbmFibGVkIjpmYWxzZSwibWVyY2hhbnRJZCI6IjN3MnR0dndkMjQ2NTQ4aGQiLCJ2ZW5tbyI6Im9mZiJ9');\n }\n\n return new ZalgoPromise((resolve, reject) => {\n\n if ((json && data) || (json && body) || (data && json)) {\n throw new Error(`Only options.json or options.data or options.body should be passed`);\n }\n\n const normalizedHeaders = {};\n\n for (const key of Object.keys(headers)) {\n normalizedHeaders[key.toLowerCase()] = headers[key];\n }\n\n if (json) {\n normalizedHeaders[HEADERS.CONTENT_TYPE] = normalizedHeaders[HEADERS.CONTENT_TYPE] || 'application/json';\n } else if (data || body) {\n normalizedHeaders[HEADERS.CONTENT_TYPE] = normalizedHeaders[HEADERS.CONTENT_TYPE] || 'application/x-www-form-urlencoded; charset=utf-8';\n }\n\n normalizedHeaders[HEADERS.ACCEPT] = normalizedHeaders[HEADERS.ACCEPT] || 'application/json';\n\n for (const headerBuilder of headerBuilders) {\n const builtHeaders = headerBuilder();\n\n for (const key of Object.keys(builtHeaders)) {\n normalizedHeaders[key.toLowerCase()] = builtHeaders[key];\n }\n }\n\n const xhr = new win.XMLHttpRequest();\n\n xhr.addEventListener('load', function xhrLoad() : void {\n\n const responseHeaders = parseHeaders(this.getAllResponseHeaders());\n const corrID = responseHeaders['paypal-debug-id'] || 'unknown';\n\n if (responseHeaders['paypal-debug-id']) {\n corrids.push(responseHeaders['paypal-debug-id']);\n }\n\n if (!this.status) {\n return reject(new Error(`Request to ${ method.toLowerCase() } ${ url } failed: no response status code. Correlation id: ${ corrID }`));\n }\n \n const contentType = responseHeaders['content-type'];\n const isJSON = contentType && (contentType.indexOf('application/json') === 0 || contentType.indexOf('text/json') === 0);\n let res = this.responseText;\n\n try {\n res = JSON.parse(this.responseText);\n } catch (err) {\n if (isJSON) {\n return reject(new Error(`Invalid json: ${ this.responseText }. Correlation id: ${ corrID }`));\n }\n }\n\n if (this.status >= 400) {\n let message = `Request to ${ method.toLowerCase() } ${ url } failed with ${ this.status } error. Correlation id: ${ corrID }`;\n\n if (res) {\n if (typeof res === 'object' && res !== null) {\n res = JSON.stringify(res, null, 4);\n }\n\n message = `${ message }\\n\\n${ res }\\n`;\n }\n\n return reject(new Error(message));\n }\n\n return resolve(res);\n\n }, false);\n\n xhr.addEventListener('error', function xhrError(evt) {\n const corrID = this.getResponseHeader('paypal-debug-id');\n reject(new Error(`Request to ${ method.toLowerCase() } ${ url } failed: ${ evt.toString() }. Correlation id: ${ corrID }`));\n }, false);\n\n xhr.open(method, url, true);\n\n for (const key in normalizedHeaders) {\n if (normalizedHeaders.hasOwnProperty(key)) {\n xhr.setRequestHeader(key, normalizedHeaders[key]);\n }\n }\n\n if (json) {\n body = JSON.stringify(json);\n } else if (data) {\n body = Object.keys(data).map(key => {\n return `${ encodeURIComponent(key) }=${ data ? encodeURIComponent(data[key]) : '' }`;\n }).join('&');\n }\n\n xhr.timeout = timeout;\n xhr.ontimeout = function xhrTimeout() {\n reject(new Error(`Request to ${ method.toLowerCase() } ${ url } has timed out`));\n };\n\n xhr.send(body);\n });\n}\n\nrequest.get = (url : string, options = {}) => {\n return request({ method: 'get', url, ...options });\n};\n\nrequest.post = (url : string, data, options = {}) => {\n return request({ method: 'post', url, data, ...options });\n};\n\nrequest.addHeaderBuilder = (method) => {\n headerBuilders.push(method);\n};\n","/* @flow */\n\nimport { info, track, flush as flushLogs } from 'beaver-logger/client';\n\nimport { FPTI } from '../constants';\n\nimport { match } from './util';\nimport { getStorageState, getStorageID } from './session';\n\ntype Throttle = {|\n isEnabled : () => boolean,\n isDisabled : () => boolean,\n getTreatment : () => string,\n log : (string, payload? : { [string] : ?string }) => Throttle,\n logStart : (payload? : { [string] : ?string }) => Throttle,\n logComplete : (payload? : { [string] : ?string }) => Throttle\n|};\n\nfunction getThrottlePercentile(name : string) : number {\n return getStorageState(storage => {\n storage.throttlePercentiles = storage.throttlePercentiles || {};\n storage.throttlePercentiles[name] = storage.throttlePercentiles[name] || Math.floor(Math.random() * 100);\n return storage.throttlePercentiles[name];\n });\n}\n\nconst THROTTLE_GROUP = {\n TEST: 'test',\n CONTROL: 'control',\n THROTTLE: 'throttle'\n};\n\nexport function getThrottle(name : string, sample : number, sticky : boolean = true) : Throttle {\n\n const uid = getStorageID();\n\n const percentile = sticky ? getThrottlePercentile(name) : Math.floor(Math.random() * 100);\n\n let group;\n\n if (percentile < sample) {\n group = THROTTLE_GROUP.TEST;\n } else if ((sample >= 50) || ((sample <= percentile) && (percentile < (sample * 2)))) {\n group = THROTTLE_GROUP.CONTROL;\n } else {\n group = THROTTLE_GROUP.THROTTLE;\n }\n\n const treatment = `${ name }_${ group }`;\n\n let started = false;\n let forced = false;\n\n try {\n if (window.localStorage && window.localStorage.getItem(name)) {\n forced = true;\n }\n } catch (err) {\n // pass\n }\n\n return {\n\n isEnabled() : boolean {\n return (group === THROTTLE_GROUP.TEST) || forced;\n },\n\n isDisabled() : boolean {\n return (group !== THROTTLE_GROUP.TEST) && !forced;\n },\n\n getTreatment() : string {\n return treatment;\n },\n\n log(checkpointName : string, payload? : { [string] : ?string } = {}) : Throttle {\n if (!started) {\n return this;\n }\n\n const checkpoint = `${ name }_${ treatment }_${ checkpointName }`;\n info(checkpoint, { ...payload, expuid: uid });\n\n track({\n [ FPTI.KEY.EXPERIMENT_NAME ]: name,\n [ FPTI.KEY.TREATMENT_NAME ]: treatment,\n ...payload\n });\n\n flushLogs();\n return this;\n },\n\n logStart(payload? : { [string] : ?string } = {}) : Throttle {\n started = true;\n return this.log(`start`, payload);\n },\n\n logComplete(payload? : { [string] : ?string } = {}) : Throttle {\n if (!started) {\n return this;\n }\n\n return this.log(`complete`, payload);\n }\n };\n}\n\nexport function getReturnToken() : ?string {\n\n const token = match(window.location.href, /token=((EC-)?[A-Z0-9]+)/);\n const payer = match(window.location.href, /PayerID=([A-Z0-9]+)/);\n\n if (token && payer) {\n return token;\n }\n}\n","/* @flow */\n\nimport { debug } from 'beaver-logger/client';\nimport { getDomain } from 'cross-domain-utils/src';\n\nimport { config } from '../config';\n\nimport { memoize, domainMatches } from './util';\n\nexport const getCurrentScript = memoize(() : ?HTMLScriptElement => {\n\n const scripts = Array.prototype.slice.call(document.getElementsByTagName('script'));\n\n for (const script of scripts) {\n if (script.src && (script.src.replace(/^https?:/, '').split('?')[0] === config.scriptUrl || script.hasAttribute('data-paypal-checkout'))) {\n return script;\n }\n\n if (script.src && (script.src.indexOf('paypal.checkout.v4.js') !== -1)) {\n return script;\n }\n }\n\n if (document.currentScript) { // eslint-disable-line compat/compat\n debug(`current_script_not_recognized`, { src: document.currentScript.src }); // eslint-disable-line compat/compat\n }\n});\n\nexport function isPayPalObjects() : boolean {\n return Boolean(getCurrentScript());\n}\n\nexport function getScriptVersion() : string {\n if (__PAYPAL_CHECKOUT__.__MAJOR__ && isPayPalObjects()) {\n return __MIN__ ? 'min' : __PAYPAL_CHECKOUT__.__MAJOR_VERSION__;\n } else {\n return __MIN__ ? `${ __PAYPAL_CHECKOUT__.__MINOR_VERSION__ }.min` : __PAYPAL_CHECKOUT__.__MINOR_VERSION__;\n }\n}\n\nexport function getCurrentScriptUrl() : string {\n const script = getCurrentScript();\n\n if (script && typeof script.src === 'string') {\n let scriptUrl = script.src;\n\n if (scriptUrl.indexOf('http://www.paypalobjects.com') === 0) {\n scriptUrl = scriptUrl.replace('http://', 'https://');\n }\n\n return scriptUrl;\n }\n\n return `https://www.paypalobjects.com/api/checkout.${ __PAYPAL_CHECKOUT__.__MINOR_VERSION__ }${ __MIN__ ? '.min' : '' }.js`;\n}\n\nexport function getDomainSetting(name : string, def : ?T) : ?T {\n\n const hostname = window.xchild\n ? window.xchild.getParentDomain()\n : getDomain();\n\n if (config.domain_settings) {\n for (const domain of Object.keys(config.domain_settings)) {\n if (domainMatches(hostname, domain)) {\n return config.domain_settings[domain][name];\n }\n }\n }\n\n return def;\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { once, bridge } from 'post-robot/src';\n\nimport { config } from '../config';\n\nimport { isIEIntranet } from './device';\nimport { memoize } from './util';\nimport { getScriptVersion } from './script';\nimport { extendUrl } from './dom';\n\ntype FrameMetaData = {|\n iframeEligible : boolean,\n iframeEligibleReason : string,\n // eslint-disable-next-line flowtype/no-mutable-array\n rememberedFunding : Array\n|};\n\nexport const openMetaFrame = memoize((env : string = config.env) : ZalgoPromise => {\n return ZalgoPromise.try(() => {\n\n if (isIEIntranet()) {\n return {\n iframeEligible: false,\n iframeEligibleReason: 'ie_intranet',\n rememberedFunding: []\n };\n }\n\n const metaFrameUrl : string = config.metaFrameUrls[env];\n const metaFrameDomain : string = config.paypalDomains[env];\n\n return ZalgoPromise.try(() => {\n if (!bridge) {\n throw new Error(`Opening meta window without bridge support is not currently supported`);\n }\n\n const metaListener = once('meta', { domain: metaFrameDomain });\n\n return bridge.openBridge(extendUrl(metaFrameUrl, { version: getScriptVersion() }), metaFrameDomain)\n .then(() => metaListener)\n .then(({ data }) => data);\n });\n });\n});\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { FUNDING } from '../constants';\nimport type { FundingSource, FundingList } from '../types';\n\nimport { getStorageState, getGlobalState, getSessionState } from './session';\nimport { isDevice } from './device';\nimport { openMetaFrame } from './meta';\nimport { identity } from './util';\n\n// $FlowFixMe\nexport function getRememberedFunding(handler? : (rememberedFunding : FundingList) => T = identity) : T {\n return getStorageState(storage => {\n storage.rememberedFunding = storage.rememberedFunding || [];\n return handler(storage.rememberedFunding);\n });\n}\n\nfunction hasRememberedFunding(source : FundingSource) : ?boolean {\n\n if (getRememberedFunding(rememberedFunding => rememberedFunding.indexOf(source) !== -1)) {\n return true;\n }\n\n if (getSessionState(session => session.recentlyCheckedRemembered)) {\n return true;\n }\n\n return false;\n}\n\n\nfunction isRememberedFunding(source : FundingSource) : boolean {\n\n if (getRememberedFunding(rememberedFunding => rememberedFunding.indexOf(source) !== -1)) {\n return true;\n }\n\n if (getSessionState(session => session.recentlyCheckedRemembered)) {\n return false;\n }\n\n throw new Error(`Can not find remembered funding result`);\n}\n\nfunction getRememberedFundingPromises() : { [FundingSource] : ZalgoPromise } {\n return getGlobalState(global => {\n global.rememberFundingPromises = global.rememberFundingPromises || {};\n return global.rememberFundingPromises;\n });\n}\n\nfunction getRememberedFundingPromise(source : FundingSource) : ZalgoPromise {\n const promises = getRememberedFundingPromises();\n const promise = promises[source] = promises[source] || new ZalgoPromise();\n if (hasRememberedFunding(source)) {\n promise.resolve(isRememberedFunding(source));\n }\n return promise;\n}\n\nfunction flushRememberedFundingPromises() {\n const promises = getRememberedFundingPromises();\n const rememberedFunding = getRememberedFunding(sources => sources);\n\n for (const source of Object.keys(promises)) {\n promises[source].resolve(rememberedFunding.indexOf(source) !== -1);\n }\n}\n\nexport function rememberFunding(sources : FundingList) {\n getRememberedFunding(rememberedFunding => {\n for (const source of sources) {\n\n if (source === FUNDING.VENMO && !isDevice()) {\n continue;\n }\n if (rememberedFunding.indexOf(source) === -1) {\n rememberedFunding.push(source);\n }\n }\n\n flushRememberedFundingPromises();\n });\n\n getSessionState(session => {\n session.recentlyCheckedRemembered = true;\n });\n}\n\nfunction loadMeta() : ZalgoPromise {\n return openMetaFrame().then(({ rememberedFunding }) => {\n rememberFunding(rememberedFunding || []);\n });\n}\n\nexport function isFundingRemembered(source : FundingSource = FUNDING.PAYPAL) : ZalgoPromise {\n\n if (hasRememberedFunding(source)) {\n return getRememberedFundingPromise(source);\n }\n\n return loadMeta().then(() => {\n return getRememberedFundingPromise(source);\n });\n}\n\nexport function precacheRememberedFunding() : ZalgoPromise {\n if (!getSessionState(session => session.recentlyCheckedRemembered)) {\n return loadMeta();\n }\n return ZalgoPromise.resolve();\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { regexMap } from './util';\n\n// eslint-disable-next-line no-use-before-define\nexport type ChildType = $ReadOnlyArray | JsxHTMLNode | string | void | null;\nexport type ChildrenType = $ReadOnlyArray;\ntype PropsType = ?{ class? : string, id? : string, innerHTML? : string };\n\nfunction htmlEncode(html : string = '') : string {\n return html.toString()\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(/\\//g, '/');\n}\n\nexport class JsxHTMLNode {\n name : string\n props : PropsType\n children : ChildrenType\n\n constructor(name : string, props : PropsType, children : ChildrenType) {\n this.name = name;\n this.props = props;\n this.children = children;\n }\n\n toString() : string {\n return `<${ this.name }${ this.props ? ' ' : '' }${ this.props ? this.propsToString() : '' }>${ this.childrenToString() }`;\n }\n\n propsToString() : string {\n const props = this.props;\n\n if (!props) {\n return '';\n }\n\n return Object.keys(props).filter(key => {\n return key !== 'innerHTML' && props && props[key] !== false;\n }).map(key => {\n if (props && props[key] === true) {\n return `${ htmlEncode(key) }`;\n }\n return props ? `${ htmlEncode(key) }=\"${ htmlEncode(props[key]) }\"` : '';\n }).join(' ');\n }\n\n childrenToString() : string {\n\n if (this.props && this.props.innerHTML) {\n return this.props.innerHTML;\n }\n\n if (!this.children) {\n return '';\n }\n\n let result = '';\n\n function iterate(children) {\n for (const child of children) {\n\n if (child === null || child === undefined) {\n continue;\n }\n\n if (Array.isArray(child)) {\n iterate(child);\n } else if (child instanceof JsxHTMLNode) {\n result += child.toString();\n } else {\n result += htmlEncode(child);\n }\n }\n }\n\n iterate(this.children);\n\n return result;\n }\n}\n\nexport class JsxHTMLNodeContainer extends JsxHTMLNode {\n\n\n constructor(children : ChildrenType) {\n super('', {}, children);\n }\n\n toString() : string {\n return this.childrenToString();\n }\n}\n\nexport function jsxToHTML(name : string, props : PropsType, ...children : ChildrenType) : JsxHTMLNode {\n return new JsxHTMLNode(name, props, children);\n}\n\nexport function jsxRender(template : string, renderers : { [string] : (string) =>?(JsxHTMLNode | $ReadOnlyArray) }) : JsxHTMLNode {\n\n // eslint-disable-next-line security/detect-unsafe-regex, unicorn/no-unsafe-regex\n const nodes = regexMap(template, /\\{\\s*([a-z]+)(?::\\s*([^} ]+))?\\s*\\}|([^${}]+)/g, (match, type, value, text) => {\n if (type) {\n if (!renderers[type]) {\n throw new Error(`Can not render type: ${ type }`);\n }\n\n return renderers[type](value);\n } else if (text && text.trim()) {\n\n if (!renderers.text) {\n return text;\n }\n\n if ((/
/).test(text)) {\n return renderers.break(text);\n } else {\n return renderers.text(text);\n }\n } else {\n return text;\n }\n });\n\n return new JsxHTMLNodeContainer(nodes);\n}\n","/* @flow */\n\nexport * from './device';\nexport * from './util';\nexport * from './logger';\nexport * from './eligibility';\nexport * from './errors';\nexport * from './dom';\nexport * from './http';\nexport * from './beacon';\nexport * from './throttle';\nexport * from './namespace';\nexport * from './session';\nexport * from './proxy';\nexport * from './meta';\nexport * from './funding';\nexport * from './script';\nexport * from './jsx';\nexport * from './security';\n","/* @flow */\n\nimport { on, send, bridge } from 'post-robot/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport type { CrossDomainWindowType, SameDomainWindowType } from 'cross-domain-utils/src';\n\nimport { isPayPalDomain, noop, getScriptVersion, extendUrl } from '../lib';\nimport { config } from '../config';\n\nfunction match(str : string, pattern : RegExp) : ?string {\n const regmatch : ?$ReadOnlyArray = str.match(pattern);\n if (regmatch) {\n return regmatch[1];\n }\n}\n\nlet onAuthorize : ?Function;\n\n// Post-Bridge\n\nif (isPayPalDomain()) {\n on('onLegacyPaymentAuthorize', { window: window.parent }, ({ data } : { data : { method : Function } }) => {\n onAuthorize = data.method;\n });\n}\n\n// Button / Merchant\n\nexport function onLegacyPaymentAuthorize(method : Function) : ZalgoPromise {\n onAuthorize = method;\n\n return ZalgoPromise.try(() => {\n if (bridge && !isPayPalDomain()) {\n return bridge.openBridge(extendUrl(config.postBridgeUrl, { version: getScriptVersion() }), config.postBridgeDomain).then((postBridge : CrossDomainWindowType) => {\n return send(postBridge, 'onLegacyPaymentAuthorize', { method }, { domain: config.paypalDomain })\n .then(noop);\n });\n }\n });\n}\n\nwindow.onLegacyPaymentAuthorize = onLegacyPaymentAuthorize;\n\n// Post-Bridge / Button\n\nwindow.watchForLegacyFallback = (win : SameDomainWindowType) => {\n const interval = setInterval(() => {\n try {\n const isLegacy = (win.document.body.innerHTML.indexOf('merchantpaymentweb') !== -1 ||\n win.document.body.innerHTML.indexOf('wapapp') !== -1);\n\n if (!isLegacy || win.ppxoWatching || win.closed) {\n return;\n }\n\n win.ppxoWatching = true;\n\n const XMLHttpRequestsend = win.XMLHttpRequest.prototype.send;\n\n win.XMLHttpRequest.prototype.send = function overrideXMLHttpRequestSend() : void {\n\n if (this._patched) {\n return XMLHttpRequestsend.apply(this, arguments);\n }\n\n this._patched = true;\n\n const self = this;\n let onload = this.onload;\n\n function listener() : void {\n\n if (self.readyState === self.DONE && self.status === 200 && self.responseText) {\n\n try {\n const response = JSON.parse(self.responseText.replace('while (1);', ''));\n\n if (response.type === 'redirect' && response.url && onAuthorize) {\n\n const url = response.url;\n\n clearInterval(interval);\n win.close();\n\n onAuthorize({\n returnUrl: url,\n paymentToken: match(url, /token=((EC-)?[A-Z0-9]+)/),\n billingToken: match(url, /ba_token=((BA-)?[A-Z0-9]+)/),\n payerID: match(url, /PayerID=([A-Z0-9]+)/),\n paymentID: match(url, /paymentId=((PAY-)?[A-Z0-9]+)/)\n });\n\n onAuthorize = null;\n\n if (win.PAYPAL && win.PAYPAL.Checkout && win.PAYPAL.Checkout.XhrResponse && win.PAYPAL.Checkout.XhrResponse.RESPONSE_TYPES) {\n Object.defineProperty(win.PAYPAL.Checkout.XhrResponse.RESPONSE_TYPES, 'Redirect', {\n value: Math.random().toString()\n });\n }\n\n if (win.mob && win.mob.Xhr && win.mob.Xhr.prototype._xhrOnReady) {\n win.mob.Xhr.prototype._xhrOnReady = noop;\n }\n }\n\n } catch (err) {\n return;\n }\n }\n\n if (onload) {\n return onload.apply(this, arguments);\n }\n }\n\n if (this.onload !== listener) {\n\n try {\n\n delete this.onload;\n this.addEventListener('load', listener);\n\n // $FlowFixMe\n Object.defineProperty(this, 'onload', {\n get() : Function {\n return listener;\n },\n set(handler) {\n onload = handler;\n }\n });\n\n } catch (err) {\n\n // pass\n }\n\n }\n\n return XMLHttpRequestsend.apply(this, arguments);\n };\n\n } catch (err) {\n // pass\n }\n }, 100);\n};\n\n\nwindow.onLegacyFallback = window.watchForLegacyFallback;\n","/* @flow */\n\nimport { config } from '../config';\nimport { FUNDING, PAYMENT_TYPE } from '../constants';\n\nexport function determineParameterFromToken(token : string) : string {\n return (token && token.indexOf('BA-') === 0) ? 'ba_token' : 'token';\n}\n\nexport function getPaymentType(payment : string) : string {\n if (payment.indexOf('BA-') === 0) {\n return PAYMENT_TYPE.BA_TOKEN;\n } else if (payment.indexOf('PAY-') === 0 || payment.indexOf('PAYID-') === 0) {\n return PAYMENT_TYPE.PAY_ID;\n } else if (payment.indexOf('EC-') === 0) {\n return PAYMENT_TYPE.EC_TOKEN;\n }\n\n return PAYMENT_TYPE.EC_TOKEN;\n}\n\nexport function determineUrl(env : string, fundingSource : ?string, payment : string) : string {\n\n const paymentType = getPaymentType(payment);\n\n if (paymentType === PAYMENT_TYPE.BA_TOKEN) {\n return config.billingUrls[env];\n }\n\n if (fundingSource === FUNDING.CARD || fundingSource === FUNDING.ELV) {\n return config.guestUrls[env];\n }\n\n if (fundingSource === FUNDING.IDEAL || fundingSource === FUNDING.BANCONTACT || fundingSource === FUNDING.GIROPAY ||\n fundingSource === FUNDING.SOFORT || fundingSource === FUNDING.EPS || fundingSource === FUNDING.MYBANK ||\n fundingSource === FUNDING.P24 || fundingSource === FUNDING.PAYU || fundingSource === FUNDING.VERKKOPANKKI ||\n fundingSource === FUNDING.BLIK || fundingSource === FUNDING.TRUSTLY || fundingSource === FUNDING.MAXIMA ||\n fundingSource === FUNDING.BOLETO || fundingSource === FUNDING.OXXO) {\n return config.altpayUrls[env];\n }\n\n return config.checkoutUrls[env];\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nexport type Braintree = {|\n client : {\n create : Function\n },\n paypalCheckout : {\n create : Function\n }\n|};\n\nexport type BraintreePayPalClient = {|\n createPayment : Function,\n tokenizePayment : Function\n|};\n\nexport function awaitBraintreeClient(braintree : Braintree, auth : string | ZalgoPromise) : ZalgoPromise {\n return ZalgoPromise.resolve(auth).then(authorization => {\n return braintree.client.create({ authorization });\n }).then(client => {\n return braintree.paypalCheckout.create({ client });\n });\n}\n\nconst SUPPORTED_REST_FIELDS = {\n intent: 1,\n transactions: [\n {\n amount: {\n total: 1,\n currency: 1\n }\n }\n ],\n payer: {\n external_selected_funding_instrument_type: 1,\n shipping_address: {\n line1: 1,\n line2: 1,\n city: 1,\n state: 1,\n postal_code: 1,\n country_code: 1,\n phone: 1,\n recipient_name: 1\n }\n },\n application_context: {\n brand_name: 1,\n shipping_preference: 1,\n landing_page: 1\n }\n};\n\nfunction validate(obj, supported, name) {\n\n const supportedKeys = Object.keys(supported);\n\n for (const key of Object.keys(obj)) {\n\n if (supportedKeys.indexOf(key) === -1) {\n throw new Error(`Unsupported REST key for Braintree: ${ name }.${ key }`);\n }\n\n if (typeof obj[key] === 'object') {\n validate(obj[key], supported[key], `${ name }.${ key }`);\n }\n }\n}\n\nexport function mapPaymentToBraintree(payment : Object) : Object {\n validate(payment, SUPPORTED_REST_FIELDS, 'payment');\n\n const btPayment = {};\n\n btPayment.intent = payment.intent || 'sale';\n btPayment.flow = 'checkout';\n btPayment.amount = payment.transactions[0].amount.total;\n btPayment.currency = payment.transactions[0].amount.currency;\n\n if (payment.payer) {\n if (payment.payer.external_selected_funding_instrument_type === 'CREDIT') {\n btPayment.offerCredit = true;\n }\n\n if (payment.payer.shipping_address) {\n btPayment.shippingAddressOverride = {\n line1: payment.payer.shipping_address.line1,\n line2: payment.payer.shipping_address.line2,\n city: payment.payer.shipping_address.city,\n state: payment.payer.shipping_address.state,\n postalCode: payment.payer.shipping_address.postal_code,\n countryCode: payment.payer.shipping_address.country_code,\n phone: payment.payer.shipping_address.phone,\n recipientName: payment.payer.shipping_address.recipient_name\n };\n }\n }\n\n if (payment.application_context) {\n btPayment.displayName = payment.application_context.brand_name;\n btPayment.landingPageType = payment.application_context.landing_page;\n\n if (payment.application_context) {\n if (payment.application_context.shipping_preference === 'NO_SHIPPING') {\n btPayment.enableShippingAddress = false;\n } else if (payment.application_context.shipping_preference === 'GET_FROM_FILE') {\n btPayment.enableShippingAddress = true;\n btPayment.shippingAddressEditable = true;\n } else if (payment.application_context.shipping_preference === 'SET_PROVIDED_ADDRESS') {\n btPayment.enableShippingAddress = true;\n btPayment.shippingAddressEditable = false;\n }\n }\n }\n\n return btPayment;\n}\n","/* @flow */\n\nexport * from './checkout';\nexport * from './braintree';\n// export * from './popupBridge';\n","/* @flow */\n/** @jsx jsxDom */\n\nconst checkoutComponentStyle = `\n\n body {\n width: 100%;\n height: 100%;\n overflow: hidden;\n position: fixed;\n top: 0;\n left: 0;\n margin: 0;\n }\n\n .spinner {\n height: 100%;\n width: 100%;\n position: absolute;\n z-index: 10\n }\n\n .spinner .spinWrap {\n width: 200px;\n height: 100px;\n position: absolute;\n top: 50%;\n left: 50%;\n margin-left: -100px;\n margin-top: -50px\n }\n\n .spinner .loader,\n .spinner .spinnerImage {\n height: 100px;\n width: 100px;\n position: absolute;\n top: 0;\n left: 50%;\n opacity: 1;\n filter: alpha(opacity=100)\n }\n\n .spinner .spinnerImage {\n margin: 28px 0 0 -25px;\n background: url(https://www.paypalobjects.com/images/checkout/hermes/icon_ot_spin_lock_skinny.png) no-repeat\n }\n\n .spinner .loader {\n margin: 0 0 0 -55px;\n background-color: transparent;\n -webkit-animation: rotation .7s infinite linear;\n -moz-animation: rotation .7s infinite linear;\n -o-animation: rotation .7s infinite linear;\n animation: rotation .7s infinite linear;\n border-left: 5px solid #cbcbca;\n border-right: 5px solid #cbcbca;\n border-bottom: 5px solid #cbcbca;\n border-top: 5px solid #2380be;\n border-radius: 100%\n }\n\n @-webkit-keyframes rotation {\n from {\n -webkit-transform: rotate(0deg)\n }\n to {\n -webkit-transform: rotate(359deg)\n }\n }\n @-moz-keyframes rotation {\n from {\n -moz-transform: rotate(0deg)\n }\n to {\n -moz-transform: rotate(359deg)\n }\n }\n @-o-keyframes rotation {\n from {\n -o-transform: rotate(0deg)\n }\n to {\n -o-transform: rotate(359deg)\n }\n }\n @keyframes rotation {\n from {\n transform: rotate(0deg)\n }\n to {\n transform: rotate(359deg)\n }\n }\n`;\n\nexport function componentTemplate({ jsxDom } : { jsxDom : Function }) : HTMLElement {\n\n return (\n \n \n PayPal\n \n \n \n
\n \n\n
\n

\n

\n

\n
\n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst P24_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#d03238',\n secondary: '#b3b1b1'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#d03238',\n secondary: '#b3b1b1'\n }\n};\n\nexport function p24Logo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!P24_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } p24 logo available`);\n }\n\n const { primary, secondary } = P24_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst SOFORT_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#2C2E2F',\n secondary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#EB6F93',\n secondary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#EB6F93',\n secondary: '#FFFFFF'\n }\n};\n\nexport function sofortLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!SOFORT_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } sofort logo available`);\n }\n\n const { primary, secondary } = SOFORT_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst IDEAL_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff',\n tertiary: '#2C2E2F'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#000000',\n secondary: '#FFFFFF',\n tertiary: '#CD0067'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#000000',\n secondary: '#FFFFFF',\n tertiary: '#CD0067'\n }\n};\n\nexport function idealLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!IDEAL_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } ideal logo available`);\n }\n\n const { primary, secondary, tertiary } = IDEAL_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst GIROPAY_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#000000',\n tertiary: '#2C2E2F'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#FFFFFF',\n secondary: '#003A7D',\n tertiary: '#ED1C24'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#FFFFFF',\n secondary: '#003A7D',\n tertiary: '#ED1C24'\n }\n};\n\nexport function giropayLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!GIROPAY_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } giropay logo available`);\n }\n\n const { primary, secondary, tertiary } = GIROPAY_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst EPS_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff',\n tertiary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#71706F',\n secondary: '#FFFFFF',\n tertiary: '#C8036F'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#71706F',\n secondary: '#FFFFFF',\n tertiary: '#C8036F'\n }\n};\n\nexport function epsLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!EPS_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } eps logo available`);\n }\n\n const { primary, secondary, tertiary } = EPS_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst MYBANK_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff',\n tertiary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#1A4B67',\n secondary: '#00C0EE',\n tertiary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#1A4B67',\n secondary: '#00C0EE',\n tertiary: '#FFFFFF'\n }\n};\n\nexport function mybankLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!MYBANK_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } mybank logo available`);\n }\n\n const { primary, secondary, tertiary } = MYBANK_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst BANCONTACT_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#1A4B67',\n secondary: '#00C0EE'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#005498',\n secondary: '#FFD800'\n }\n};\n\nexport function bancontactLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!BANCONTACT_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } bancontact logo available`);\n }\n\n const { primary, secondary } = BANCONTACT_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst PAYU_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.DEFAULT ]: {\n primary: '#A6d71c',\n secondary: '#3C932A',\n tertiary: '#6CC62E',\n quaternary: '#278D30'\n },\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#FFFFFF',\n secondary: '#FFFFFF',\n tertiary: '#000000',\n quaternary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#A6d71c',\n secondary: '#3C932A',\n tertiary: '#6CC62E',\n quaternary: '#278D30'\n }\n};\n\nexport function payuLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!PAYU_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } payu logo available`);\n }\n\n const { primary, secondary, tertiary, quaternary } = PAYU_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst VERKKOPANKKI_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#FFFFFF',\n secondary: '#FFFFFF',\n tertiary: '#000000',\n quaternary: '#000000',\n quinary: '#FFFFFF',\n senary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#FFFFFF',\n secondary: '#CACCC8',\n tertiary: '#2D59A1',\n quaternary: '#1F3364',\n quinary: '#4E4E4E',\n senary: '#1B4482'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#FFFFFF',\n secondary: '#CACCC8',\n tertiary: '#2D59A1',\n quaternary: '#1F3364',\n quinary: '#4E4E4E',\n senary: '#1B4482'\n }\n};\n\nexport function verkkopankkiLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!VERKKOPANKKI_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } verkkopankki logo available`);\n }\n\n const { primary, secondary, tertiary, quaternary, quinary, senary } = VERKKOPANKKI_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst BLIK_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#FFFFFF',\n secondary: '#FFFFFF',\n tertiary: '#000000',\n quaternary: '#000000',\n quinary: '#000000',\n senary: '#000000'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#4D4D4F',\n secondary: '#000000',\n tertiary: '#FF0000',\n quaternary: '#E83E49',\n quinary: '#FF00FF',\n senary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#4D4D4F',\n secondary: '#000000',\n tertiary: '#FF0000',\n quaternary: '#E83E49',\n quinary: '#FF00FF',\n senary: '#FFFFFF'\n }\n};\n\nexport function blikLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!BLIK_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } blik logo available`);\n }\n\n const { primary, secondary, tertiary, quaternary, quinary, senary } = BLIK_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst TRUSTLY_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#FFFFFF',\n secondary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#020202',\n secondary: '#64CC07'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#020202',\n secondary: '#64CC07'\n }\n};\n\nexport function trustlyLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!TRUSTLY_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } trustly logo available`);\n }\n\n const { primary, secondary } = TRUSTLY_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst MAXIMA_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#004A91',\n secondary: '#ED1921'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#004A91',\n secondary: '#ED1921'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#004A91',\n secondary: '#ED1921'\n }\n};\n\nexport function maximaLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!MAXIMA_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } maxima logo available`);\n }\n\n const { primary, secondary } = MAXIMA_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst BOLETO_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#1A1919',\n secondary: '#FFFFFE'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#1A1919',\n secondary: '#FFFFFE'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#1A1919',\n secondary: '#FFFFFE'\n }\n};\n\nexport function boletoLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!BOLETO_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } boleto logo available`);\n }\n\n const { primary, secondary } = BOLETO_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst OXXO_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#EC1D24',\n secondary: '#EDA42D'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#EC1D24',\n secondary: '#EDA42D'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#EC1D24',\n secondary: '#EDA42D'\n }\n};\n\nexport function oxxoLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!OXXO_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } oxxo logo available`);\n }\n\n const { primary, secondary } = OXXO_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst PAYPAL_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.BLUE ]: {\n primary: '#003087',\n secondary: '#009cde'\n },\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#333030',\n secondary: '#636363'\n }\n};\n\nexport function paypalLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!PAYPAL_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } paypal logo available`);\n }\n\n const { primary, secondary } = PAYPAL_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n );\n}\n","\n/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR, COUNTRY } from '../../constants';\nimport type { LocaleType } from '../../types';\n\nconst CREDIT_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.BLUE ]: {\n primary: '#003087',\n secondary: '#009cde'\n },\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#333030',\n secondary: '#636363'\n }\n};\n\nexport function creditLogo({ logoColor, locale } : { logoColor : $Values, locale? : LocaleType }) : JsxHTMLNode {\n\n if (!CREDIT_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } credit logo available`);\n }\n\n const { country } = locale || {};\n const { primary } = CREDIT_LOGO_COLORS[logoColor];\n\n switch (country) {\n case COUNTRY.DE:\n return (\n \n \n \n \n \n \n \n );\n default:\n return (\n \n \n \n \n \n \n \n \n );\n\n }\n}\n","/* @flow */\n\nimport { BUTTON_LOGO, BUTTON_LOGO_COLOR } from '../../constants';\n\nimport { p24Logo } from './p24';\nimport { sofortLogo } from './sofort';\nimport { idealLogo } from './ideal';\nimport { giropayLogo } from './giropay';\nimport { epsLogo } from './eps';\nimport { mybankLogo } from './mybank';\nimport { bancontactLogo } from './bancontact';\nimport { payuLogo } from './payu';\nimport { verkkopankkiLogo } from './verkkopankki';\nimport { blikLogo } from './blik';\nimport { trustlyLogo } from './trustly';\nimport { maximaLogo } from './maxima';\nimport { boletoLogo } from './boleto';\nimport { oxxoLogo } from './oxxo';\nimport pp_white from './pp_white.svg';\nimport pp_blue from './pp_blue.svg';\nimport pp_black from './pp_black.svg';\nimport { paypalLogo } from './paypal';\nimport { creditLogo } from './credit';\nimport venmo_white from './venmo_white.svg';\nimport itau from './itau.svg';\nimport venmo_blue from './venmo_blue.svg';\nimport elv from './elv.svg';\nimport elv_white from './elv_white.svg';\n\nexport const fundingLogos = {\n\n [ BUTTON_LOGO.PP ]: {\n [ BUTTON_LOGO_COLOR.WHITE ]: pp_white,\n [ BUTTON_LOGO_COLOR.BLUE ]: pp_blue,\n [ BUTTON_LOGO_COLOR.BLACK ]: pp_black\n },\n\n [ BUTTON_LOGO.PAYPAL ]: paypalLogo,\n\n [ BUTTON_LOGO.CREDIT ]: creditLogo,\n\n [ BUTTON_LOGO.VENMO ]: {\n [ BUTTON_LOGO_COLOR.WHITE ]: venmo_white,\n [ BUTTON_LOGO_COLOR.BLUE ]: venmo_blue\n },\n [ BUTTON_LOGO.ITAU ]: {\n [ BUTTON_LOGO_COLOR.WHITE ]: itau\n },\n\n [ BUTTON_LOGO.IDEAL ]: idealLogo,\n\n [ BUTTON_LOGO.ELV ]: {\n [ BUTTON_LOGO_COLOR.ANY ]: elv,\n [ BUTTON_LOGO_COLOR.WHITE ]: elv_white\n },\n\n [ BUTTON_LOGO.BANCONTACT ]: bancontactLogo,\n\n [ BUTTON_LOGO.GIROPAY ]: giropayLogo,\n\n [ BUTTON_LOGO.SOFORT ]: sofortLogo,\n\n [ BUTTON_LOGO.EPS ]: epsLogo,\n\n [ BUTTON_LOGO.MYBANK ]: mybankLogo,\n\n [ BUTTON_LOGO.P24 ]: p24Logo,\n\n [ BUTTON_LOGO.PAYU ]: payuLogo,\n\n [ BUTTON_LOGO.VERKKOPANKKI ]: verkkopankkiLogo,\n\n [ BUTTON_LOGO.BLIK ]: blikLogo,\n\n [ BUTTON_LOGO.TRUSTLY ]: trustlyLogo,\n\n [ BUTTON_LOGO.MAXIMA ]: maximaLogo,\n\n [ BUTTON_LOGO.BOLETO ]: boletoLogo,\n\n [ BUTTON_LOGO.OXXO ]: oxxoLogo\n\n};\n","/* @flow */\n\nimport { CARD } from '../../constants';\n\nimport visa from './visa.svg';\nimport amex from './amex.svg';\nimport mastercard from './mastercard.svg';\nimport maestro from './maestro.svg';\nimport discover from './discover.svg';\nimport hiper from './hiper.svg';\nimport elo from './elo.svg';\nimport jcb from './jcb.svg';\nimport cup from './cup.svg';\n\nexport const cardLogos = {\n [ CARD.VISA ]: visa,\n [ CARD.AMEX ]: amex,\n [ CARD.MASTERCARD ]: mastercard,\n [ CARD.MAESTRO ]: maestro,\n [ CARD.DISCOVER ]: discover,\n [ CARD.HIPER ]: hiper,\n [ CARD.ELO ]: elo,\n [ CARD.JCB ]: jcb,\n [ CARD.CUP ]: cup\n};\n","/* @flow */\n\nexport * from './fundingLogos';\nexport * from './cardLogos';\n","/* @flow */\n/* eslint max-lines: off */\n\nexport const containerContent = {\n 'AT': {\n 'de': {\n 'windowMessage': 'Sie sehen das sichere Browserfenster von PayPal nicht? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ZW': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ZM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ZA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'YT': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'YE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'WS': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'WF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'VU': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'VG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'VE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'VC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'VA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'UY': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'UG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TV': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'TT': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'TO': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'TN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'TM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'TD': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'TC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'SZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SV': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'ST': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SR': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'SO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'SM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SL': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SH': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'SB': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'SA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'RW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'RS': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'RE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'QA': {\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PY': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'PW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'PN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'PM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'PF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'PA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'OM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'NU': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'NR': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'NP': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'NI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'NG': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'NE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'NC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MV': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'MU': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MT': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MS': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'MR': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MQ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MN': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'ML': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'MK': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MH': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'MG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ME': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MD': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MC': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'MA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'LS': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'LK': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'LI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'LC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'LA': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'KZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'KY': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'KW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'KN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'KM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'KI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'KH': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'KG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'KE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'JO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'JM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'IS': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'HR': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'HN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'GY': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'GW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GT': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'GP': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'GM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GL': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'da': {\n 'windowMessage': 'Kan du ikke se PayPals sikre browser? Vi hj\\u00E6lper dig med at genstarte vinduet, s\\u00E5 du kan betale.',\n 'continue': 'Forts\\u00E6t'\n }\n },\n 'GI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GD': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'GA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'FO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'da': {\n 'windowMessage': 'Kan du ikke se PayPals sikre browser? Vi hj\\u00E6lper dig med at genstarte vinduet, s\\u00E5 du kan betale.',\n 'continue': 'Forts\\u00E6t'\n }\n },\n 'FM': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'FK': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'FJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'ET': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ER': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'EG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'EC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'DZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'DO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'DM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'DJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'CY': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CV': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CR': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'CO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'CM': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'CL': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'CK': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CI': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'CG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CD': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'BZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'BY': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BT': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'BS': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'BO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'BN': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'BM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'BJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'BI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'BH': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'BG': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'BB': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'BA': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'AO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'AM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AL': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'AG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'AE': {\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AD': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n }\n },\n 'GB': {\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 PayPal\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\'ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AR': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'US': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Click to Continue'\n }\n },\n 'VN': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment. ',\n 'continue': 'Continue'\n }\n },\n 'UA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TW': {\n 'zh': {\n 'windowMessage': '\\u770B\\u4E0D\\u5230\\u5B89\\u5168\\u9023\\u7DDA\\u7684 PayPal \\u700F\\u89BD\\u5668\\uFF1F\\u6211\\u5011\\u5C07\\u6703\\u91CD\\u65B0\\u555F\\u52D5\\u8996\\u7A97\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002\\u00A0 ',\n 'continue': '\\u7E7C\\u7E8C'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TR': {\n 'tr': {\n 'windowMessage': 'G\\u00FCvenli PayPal taray\\u0131c\\u0131s\\u0131n\\u0131 g\\u00F6rm\\u00FCyor musunuz? Al\\u0131\\u015Fveri\\u015Finizi tamamlamak i\\u00E7in pencereyi yeniden ba\\u015Flatman\\u0131za yard\\u0131mc\\u0131 olaca\\u011F\\u0131z.\\u00A0 ',\n 'continue': 'Devam'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TH': {\n 'th': {\n 'windowMessage': '\\u0E16\\u0E49\\u0E32\\u0E04\\u0E38\\u0E13\\u0E44\\u0E21\\u0E48\\u0E40\\u0E2B\\u0E47\\u0E19\\u0E40\\u0E1A\\u0E23\\u0E32\\u0E27\\u0E4C\\u0E40\\u0E0B\\u0E2D\\u0E23\\u0E4C\\u0E17\\u0E35\\u0E48\\u0E21\\u0E35\\u0E23\\u0E30\\u0E1A\\u0E1A\\u0E04\\u0E27\\u0E32\\u0E21\\u0E1B\\u0E25\\u0E2D\\u0E14\\u0E20\\u0E31\\u0E22\\u0E02\\u0E2D\\u0E07 PayPal \\u0E40\\u0E23\\u0E32\\u0E08\\u0E30\\u0E0A\\u0E48\\u0E27\\u0E22\\u0E04\\u0E38\\u0E13\\u0E40\\u0E1B\\u0E34\\u0E14\\u0E2B\\u0E19\\u0E49\\u0E32\\u0E15\\u0E48\\u0E32\\u0E07\\u0E2D\\u0E35\\u0E01\\u0E04\\u0E23\\u0E31\\u0E49\\u0E07\\u0E40\\u0E1E\\u0E37\\u0E48\\u0E2D\\u0E0A\\u0E33\\u0E23\\u0E30\\u0E40\\u0E07\\u0E34\\u0E19\\u0E43\\u0E2B\\u0E49\\u0E40\\u0E23\\u0E35\\u0E22\\u0E1A\\u0E23\\u0E49\\u0E2D\\u0E22 ',\n 'continue': '\\u0E14\\u0E33\\u0E40\\u0E19\\u0E34\\u0E19\\u0E01\\u0E32\\u0E23\\u0E15\\u0E48\\u0E2D'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SK': {\n 'sk': {\n 'windowMessage': 'Nezobrazuje sa v\\u00e1m zabezpe\\u010den\\u00fd prehliada\\u010d PayPal? Pom\\u00f4\\u017eeme v\\u00e1m znova otvori\\u0165 okno, aby ste mohli n\\u00e1kup dokon\\u010di\\u0165.\\u00A0 ',\n 'continue': 'Pokra\\u010dova\\u0165'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SG': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SE': {\n 'sv': {\n 'windowMessage': 'Ser du inte den s\\u00E4kra PayPal-webbl\\u00E4saren? Vi hj\\u00E4lper dig att starta om f\\u00F6nstret f\\u00F6r att slutf\\u00F6ra ditt k\\u00F6p. ',\n 'continue': 'Forts\\u00E4tt'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'RU': {\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'RO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PT': {\n 'pt': {\n 'windowMessage': 'N\\u00E3o v\\u00EA a indica\\u00E7\\u00E3o de sess\\u00E3o segura PayPal no browser? Vamos ajudar a reabrir a janela para que possa concluir a sua compra.',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PL': {\n 'pl': {\n 'windowMessage': 'Nie widzisz bezpiecznej przegl\\u0105darki PayPal? Pomo\\u017Cemy Ci ponownie uruchomi\\u0107 to okno w celu dokonania zakupu.\\u00A0 ',\n 'continue': 'Kontynuuj'\n },\n 'en': {\n 'windowMessage': 'You don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PH': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre paiement.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Le ayudaremos a abrir de nuevo la ventana para completar su pago.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NO': {\n 'no': {\n 'windowMessage': 'Ser du ikke den sikre PayPal-nettleseren? Vi hjelper deg med \\u00E5 starte vinduet p\\u00E5 nytt s\\u00E5 du kan fullf\\u00F8re kj\\u00F8pet.\\u00A0 ',\n 'continue': 'Fortsett'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NL': {\n 'nl': {\n 'windowMessage': 'Ziet u geen beveiligde PayPal-browser? We helpen u het venster opnieuw te openen om uw aankoop te voltooien.\\u00A0 ',\n 'continue': 'Doorgaan'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MY': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MX': {\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'LV': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'LU': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'de': {\n 'windowMessage': 'Das PayPal-Fenster wird nicht angezeigt? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n }\n },\n 'LT': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'KR': {\n 'ko': {\n 'windowMessage': '\\uBCF4\\uC548 PayPal \\uBE0C\\uB77C\\uC6B0\\uC800\\uAC00 \\uBCF4\\uC774\\uC9C0 \\uC54A\\uC73C\\uC2E0\\uAC00\\uC694? \\uCC3D\\uC744 \\uB2E4\\uC2DC \\uC2E4\\uD589\\uD558\\uC5EC \\uACB0\\uC81C\\uB97C \\uC644\\uB8CC\\uD560 \\uC218 \\uC788\\uB3C4\\uB85D \\uB3C4\\uC640\\uB4DC\\uB9AC\\uACA0\\uC2B5\\uB2C8\\uB2E4.\\u00A0 ',\n 'continue': '\\uACC4\\uC18D'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'JP': {\n 'ja': {\n 'windowMessage': '\\u30BB\\u30AD\\u30E5\\u30A2\\u306A\\u30D6\\u30E9\\u30A6\\u30B6\\u304C\\u8868\\u793A\\u3055\\u308C\\u306A\\u3044\\u5834\\u5408\\u306F\\u3001\\u30A6\\u30A3\\u30F3\\u30C9\\u30A6\\u3092\\u518D\\u8D77\\u52D5\\u3057\\u3066\\u3001\\u652F\\u6255\\u3044\\u3092\\u5B8C\\u4E86\\u3067\\u304D\\u308B\\u3088\\u3046\\u304A\\u624B\\u4F1D\\u3044\\u3044\\u305F\\u3057\\u307E\\u3059\\u3002',\n 'continue': '\\u7D9A\\u884C'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment. ',\n 'continue': 'Continue'\n }\n },\n 'IT': {\n 'it': {\n 'windowMessage': 'Non vedi la pagina sicura di PayPal? Ti aiuteremo a riaprire la finestra per completare l\\'acquisto.\\u00A0 ',\n 'continue': 'Continua'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'IN': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'IL': {\n 'he': {\n 'windowMessage': '\\u05DC\\u05D0 \\u05E8\\u05D5\\u05D0\\u05D4 \\u05D0\\u05EA \\u05D3\\u05E4\\u05D3\\u05E4\\u05DF PayPal \\u05D4\\u05DE\\u05D0\\u05D5\\u05D1\\u05D8\\u05D7? \\u05E0\\u05E2\\u05D6\\u05D5\\u05E8 \\u05DC\\u05DA \\u05DC\\u05E4\\u05EA\\u05D5\\u05D7 \\u05DE\\u05D7\\u05D3\\u05E9 \\u05D0\\u05EA \\u05D4\\u05D7\\u05DC\\u05D5\\u05DF \\u05DB\\u05D3\\u05D9 \\u05DC\\u05D4\\u05E9\\u05DC\\u05D9\\u05DD \\u05D0\\u05EA \\u05D4\\u05E7\\u05E0\\u05D9\\u05D9\\u05D4 \\u05E9\\u05DC\\u05DA.\\u00A0 ',\n 'continue': '\\u05D4\\u05DE\\u05E9\\u05DA'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'IE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'HU': {\n 'hu': {\n 'windowMessage': 'Nem l\\u00e1tja a biztons\\u00e1gos PayPal-b\\u00f6ng\\u00e9sz\\u0151t? Seg\\u00edt\\u00fcnk \\u00fajra bet\\u00f6lteni az ablakot, hogy befejezhesse a v\\u00e1s\\u00e1rl\\u00e1st.\\u00A0 ',\n 'continue': 'Folytat\\u00e1s'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ID': {\n 'id': {\n 'windowMessage': 'Browser PayPal yang aman tidak terlihat? Kami akan membantu menampilkan ulang jendela untuk menyelesaikan pembayaran Anda.\\u00A0 ',\n 'continue': 'Lanjutkan'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'HK': {\n 'zh': {\n 'windowMessage': '\\u770B\\u4E0D\\u5230\\u5B89\\u5168\\u7684 PayPal \\u700F\\u89BD\\u5668\\u8996\\u7A97\\uFF1F\\u6211\\u5011\\u6703\\u52A9\\u4F60\\u91CD\\u65B0\\u958B\\u555F\\u8996\\u7A97\\uFF0C\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002',\n 'continue': '\\u7E7C\\u7E8C'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GROUP-LATAM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'GROUP-EMEA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'pt': {\n 'windowMessage': 'N\\u00E3o v\\u00EA a indica\\u00E7\\u00E3o de sess\\u00E3o segura PayPal no browser? Vamos ajudar a reabrir a janela para que possa concluir a sua compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'de': {\n 'windowMessage': 'Sie sehen das sichere Browserfenster von PayPal nicht? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n },\n 'da': {\n 'windowMessage': 'Kan du ikke se PayPals sikre browser? Vi hj\\u00E6lper dig med at genstarte vinduet, s\\u00E5 du kan betale.',\n 'continue': 'Forts\\u00E6t'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'GROUP-APAC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ko': {\n 'windowMessage': '\\uBCF4\\uC548 PayPal \\uBE0C\\uB77C\\uC6B0\\uC800\\uAC00 \\uBCF4\\uC774\\uC9C0 \\uC54A\\uC73C\\uC2E0\\uAC00\\uC694? \\uCC3D\\uC744 \\uB2E4\\uC2DC \\uC2E4\\uD589\\uD558\\uC5EC \\uAD6C\\uB9E4\\uB97C \\uC644\\uB8CC\\uD560 \\uC218 \\uC788\\uB3C4\\uB85D \\uB3C4\\uC640\\uB4DC\\uB9AC\\uACA0\\uC2B5\\uB2C8\\uB2E4. ',\n 'continue': '\\uACC4\\uC18D'\n },\n 'id': {\n 'windowMessage': 'Browser PayPal yang aman tidak terlihat? Kami akan membantu menampilkan ulang jendela untuk menyelesaikan pembelian Anda. ',\n 'continue': 'Lanjutkan'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'GR': {\n 'el': {\n 'windowMessage': '\\u0394\\u03b5\\u03bd \\u03b2\\u03bb\\u03ad\\u03c0\\u03b5\\u03c4\\u03b5 \\u03c4\\u03bf \\u03b1\\u03c3\\u03c6\\u03b1\\u03bb\\u03ad\\u03c2 \\u03c0\\u03c1\\u03cc\\u03b3\\u03c1\\u03b1\\u03bc\\u03bc\\u03b1 \\u03c0\\u03b5\\u03c1\\u03b9\\u03ae\\u03b3\\u03b7\\u03c3\\u03b7\\u03c2 PayPal; \\u0398\\u03b1 \\u03c3\\u03b1\\u03c2 \\u03b2\\u03bf\\u03b7\\u03b8\\u03ae\\u03c3\\u03bf\\u03c5\\u03bc\\u03b5 \\u03bd\\u03b1 \\u03b5\\u03c0\\u03b1\\u03bd\\u03b5\\u03ba\\u03ba\\u03b9\\u03bd\\u03ae\\u03c3\\u03b5\\u03c4\\u03b5 \\u03c4\\u03bf \\u03c0\\u03b1\\u03c1\\u03ac\\u03b8\\u03c5\\u03c1\\u03bf \\u03b3\\u03b9\\u03b1 \\u03bd\\u03b1 \\u03bf\\u03bb\\u03bf\\u03ba\\u03bb\\u03b7\\u03c1\\u03ce\\u03c3\\u03b5\\u03c4\\u03b5 \\u03c4\\u03b7\\u03bd \\u03b1\\u03b3\\u03bf\\u03c1\\u03ac \\u03c3\\u03b1\\u03c2.\\u00A0 ',\n 'continue': '\\u03a3\\u03c5\\u03bd\\u03ad\\u03c7\\u03b5\\u03b9\\u03b1'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'FR': {\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 PayPal\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ES': {\n 'es': {\n 'windowMessage': '\\u00BFNo ve el s\\u00EDmbolo de navegaci\\u00F3n segura de PayPal? Le ayudaremos a abrir de nuevo la ventana para completar la compra. ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'FI': {\n 'fi': {\n 'windowMessage': 'Eik\\u00f6 suojattua PayPal-selainta n\\u00e4y? Autamme avaamaan ikkunan uudelleen oston viimeistely\\u00e4 varten.\\u00A0 ',\n 'continue': 'Jatka'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'EE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'DK': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'da': {\n 'windowMessage': 'Kan du ikke se PayPals sikre browser? Vi hj\\u00E6lper dig med at genstarte vinduet, s\\u00E5 du kan betale.',\n 'continue': 'Forts\\u00E6t'\n }\n },\n 'CZ': {\n 'cs': {\n 'windowMessage': 'Nezobrazuje se v\\u00e1m bezpe\\u010dn\\u00fd prohl\\u00ed\\u017ee\\u010d PayPal? Pom\\u016f\\u017eeme v\\u00e1m okno znovu otev\\u0159\\u00edt, abyste mohli n\\u00e1kup dokon\\u010dit.',\n 'continue': 'Pokra\\u010dovat'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'DE': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'de': {\n 'windowMessage': 'Sie sehen das sichere Browserfenster von PayPal nicht? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n }\n },\n 'CH': {\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 PayPal\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'de': {\n 'windowMessage': 'Sie sehen das sichere Browserfenster von PayPal nicht? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n }\n },\n 'CA': {\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 de PayPal\\u00A0? Nous vous aiderons \\u00E0 relancer la fen\\u00EAtre afin d\\'effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you relaunch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'C2': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BE': {\n 'nl': {\n 'windowMessage': 'Ziet u de beveiligde PayPal-browser niet? We helpen u het venster opnieuw te openen om uw aankoop te voltooien.\\u00A0 ',\n 'continue': 'Doorgaan'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 PayPal\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BR': {\n 'pt': {\n 'windowMessage': 'N\\u00E3o est\\u00E1 vendo o navegador seguro do PayPal? Ajudaremos voc\\u00EA a reabrir a janela para concluir a compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AU': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\'ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n }\n};\n","/* @flow */\n\nimport { CHECKOUT_OVERLAY_COLOR } from '../../../constants';\n\nexport function getContainerStyle({ id, tag, CONTEXT, CLASS, ANIMATION } : { id : string, tag : string, CONTEXT : Object, CLASS : Object, ANIMATION : Object }) : string {\n return `\n #${ id } {\n position: absolute;\n z-index: 2147483647;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n\n -webkit-transform: translate3d(0, 0, 0);\n -moz-transform: translate3d(0, 0, 0);\n -ms-transform: translate3d(0, 0, 0);\n -o-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.BLACK } {\n background-color: black;\n background-color: rgba(0, 0, 0, 0.75);\n\n background: -webkit-radial-gradient(50% 50%, ellipse closest-corner, rgba(0,0,0,1) 1%, rgba(0,0,0,0.75) 100%);\n background: -moz-radial-gradient(50% 50%, ellipse closest-corner, rgba(0,0,0,1) 1%, rgba(0,0,0,0.75) 100%);\n background: -ms-radial-gradient(50% 50%, ellipse closest-corner, rgba(0,0,0,1) 1%, rgba(0,0,0,0.75) 100%);\n background: radial-gradient(50% 50%, ellipse closest-corner, rgba(0,0,0,1) 1%, rgba(0,0,0,0.75) 100%);\n\n color: #fff;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.WHITE } {\n background-color: white;\n background-color: rgba(255, 255, 255, 0.4);\n\n background: -webkit-radial-gradient(50% 50%, ellipse closest-corner, rgba(255, 255, 255,1) 1%, rgba(255, 255, 255,0.4) 100%);\n background: -moz-radial-gradient(50% 50%, ellipse closest-corner, rgba(255, 255, 255,1) 1%, rgba(255, 255, 255,0.4) 100%);\n background: -ms-radial-gradient(50% 50%, ellipse closest-corner, rgba(255, 255, 255,1) 1%, rgba(255, 255, 255,0.4) 100%);\n background: radial-gradient(50% 50%, ellipse closest-corner, rgba(255, 255, 255,1) 1%, rgba(255, 255, 255,0.4) 100%);\n\n color: #333;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.BLACK } a {\n color: #fff;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.WHITE } a {\n color: #333;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.BLACK } .paypal-checkout-close:before,\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.BLACK } .paypal-checkout-close:after {\n background-color: #fff;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.WHITE } .paypal-checkout-close:before,\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.WHITE } .paypal-checkout-close:after {\n background-color: #111;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.POPUP } {\n cursor: pointer;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.POPUP } {\n cursor: pointer;\n }\n\n #${ id } a {\n text-decoration: none;\n }\n\n #${ id } .paypal-checkout-modal {\n font-family: \"HelveticaNeue\", \"HelveticaNeue-Light\", \"Helvetica Neue Light\", helvetica, arial, sans-serif;\n font-size: 14px;\n text-align: center;\n\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n -ms-box-sizing: border-box;\n box-sizing: border-box;\n max-width: 350px;\n top: 50%;\n left: 50%;\n position: absolute;\n transform: translateX(-50%) translateY(-50%);\n -webkit-transform: translateX(-50%) translateY(-50%);\n -moz-transform: translateX(-50%) translateY(-50%);\n -o-transform: translateX(-50%) translateY(-50%);\n -ms-transform: translateX(-50%) translateY(-50%);\n cursor: pointer;\n text-align: center;\n }\n\n #${ id }.${ tag }-loading .paypal-checkout-message, #${ id }.${ tag }-loading .paypal-checkout-continue {\n display: none;\n }\n\n .paypal-checkout-loader {\n display: none;\n }\n\n #${ id }.${ tag }-loading .paypal-checkout-loader {\n display: block;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-logo {\n cursor: pointer;\n margin-bottom: 30px;\n display: inline-block;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-logo img {\n height: 36px;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-logo img.paypal-checkout-logo-pp {\n margin-right: 10px;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-message {\n font-size: 15px;\n line-height: 1.5;\n padding: 10px 0;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-message, #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-continue {\n display: none;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-continue {\n font-size: 15px;\n line-height: 1.35;\n padding: 10px 0;\n font-weight: bold;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-continue a {\n border-bottom: 1px solid currentColor;\n }\n\n #${ id } .paypal-checkout-close {\n position: absolute;\n right: 16px;\n top: 16px;\n width: 16px;\n height: 16px;\n opacity: 0.6;\n }\n\n #${ id }.${ tag }-loading .paypal-checkout-close {\n display: none;\n }\n\n #${ id } .paypal-checkout-close:hover {\n opacity: 1;\n }\n\n #${ id } .paypal-checkout-close:before, .paypal-checkout-close:after {\n position: absolute;\n left: 8px;\n content: ' ';\n height: 16px;\n width: 2px;\n }\n\n #${ id } .paypal-checkout-close:before {\n transform: rotate(45deg);\n -webkit-transform: rotate(45deg);\n -moz-transform: rotate(45deg);\n -o-transform: rotate(45deg);\n -ms-transform: rotate(45deg);\n }\n\n #${ id } .paypal-checkout-close:after {\n transform: rotate(-45deg);\n -webkit-transform: rotate(-45deg);\n -moz-transform: rotate(-45deg);\n -o-transform: rotate(-45deg);\n -ms-transform: rotate(-45deg);\n }\n\n #${ id } .paypal-checkout-iframe-container {\n display: none;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container,\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container > .${ CLASS.OUTLET },\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container > .${ CLASS.OUTLET } > iframe {\n max-height: calc(95vh - 60px);\n max-width: 95vw;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container {\n\n display: block;\n\n position: absolute;\n\n top: 50%;\n left: 50%;\n\n min-width: 450px;\n\n transform: translate(-50%, -50%);\n -webkit-transform: translate(-50%, -50%);\n -moz-transform: translate(-50%, -50%);\n -o-transform: translate(-50%, -50%);\n -ms-transform: translate(-50%, -50%);\n\n transform: translate3d(-50%, -50%, 0);\n -webkit-transform: translate3d(-50%, -50%, 0);\n -moz-transform: translate3d(-50%, -50%, 0);\n -o-transform: translate3d(-50%, -50%, 0);\n -ms-transform: translate3d(-50%, -50%, 0);\n\n border-radius: 10px;\n overflow: hidden;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } {\n\n position: relative;\n\n -webkit-transition: all 0.3s ease;\n -moz-transition: all 0.3s ease;\n -ms-transition: all 0.3s ease;\n -o-transition: all 0.3 ease;\n transition: all 0.3s ease;\n\n -webkit-animation-duration: 0.3s;\n animation-duration: 0.3s;\n -webkit-animation-fill-mode: both;\n animation-fill-mode: both;\n\n min-width: 450px;\n max-width: 450px;\n width: 450px;\n height: 535px;\n\n background-color: white;\n\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe {\n position: absolute;\n top: 0;\n left: 0;\n transition: opacity .4s ease-in-out;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe.${ CLASS.COMPONENT_FRAME } {\n z-index: 100;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe.${ CLASS.PRERENDER_FRAME } {\n z-index: 200;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe.${ CLASS.VISIBLE } {\n opacity: 1;\n z-index: 200;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe.${ CLASS.INVISIBLE } {\n opacity: 0;\n z-index: 100;\n }\n\n @media screen and (-ms-high-contrast: active) {\n #${ id } .paypal-checkout-close {\n opacity: 1;\n }\n\n #${ id } .paypal-checkout-close:before , .paypal-checkout-close:after {\n background-color: currentColor;\n }\n }\n\n @media screen and (max-width: 470px) {\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container,\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } {\n min-width: 100%;\n min-width: calc(100% - 20px);\n min-width: -webkit-calc(100% - 20px);\n min-width: -moz-calc(100% - 20px);\n min-width: -o-calc(100% - 20px);\n min-width: -ms-calc(100% - 20px);\n\n max-width: 100%;\n max-width: calc(100% - 20px);\n max-width: -webkit-calc(100% - 20px);\n max-width: -moz-calc(100% - 20px);\n max-width: -o-calc(100% - 20px);\n max-width: -ms-calc(100% - 20px);\n }\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } iframe {\n width: 1px;\n min-width: 100%;\n height: 100%;\n }\n\n @-webkit-keyframes ${ ANIMATION.SHOW_COMPONENT } {\n from {\n opacity: 0;\n transform: scale3d(.3, .3, .3);\n -webkit-transform: scale3d(.3, .3, .3);\n }\n\n to {\n opacity: 1;\n transform: scale3d(1, 1, 1);\n -webkit-transform: scale3d(1, 1, 1);\n }\n }\n\n @keyframes ${ ANIMATION.SHOW_COMPONENT } {\n from {\n opacity: 0;\n transform: scale3d(.3, .3, .3);\n -webkit-transform: scale3d(.3, .3, .3);\n }\n\n to {\n opacity: 1;\n transform: scale3d(1, 1, 1);\n -webkit-transform: scale3d(1, 1, 1);\n }\n }\n\n @-webkit-keyframes ${ ANIMATION.HIDE_COMPONENT } {\n from {\n transform: scale3d(1, 1, 1);\n -webkit-transform: scale3d(1, 1, 1);\n }\n\n to {\n opacity: 0;\n transform: scale3d(.3, .3, .3);\n -webkit-transform: scale3d(.3, .3, .3);\n }\n }\n\n @keyframes ${ ANIMATION.HIDE_COMPONENT } {\n from {\n transform: scale3d(1, 1, 1);\n -webkit-transform: scale3d(1, 1, 1);\n }\n\n to {\n opacity: 0;\n transform: scale3d(.3, .3, .3);\n -webkit-transform: scale3d(.3, .3, .3);\n }\n }\n\n .paypal-spinner {\n height: 30px;\n width: 30px;\n display: inline-block;\n box-sizing: content-box;\n opacity: 1;\n filter: alpha(opacity=100);\n -webkit-animation: rotation .7s infinite linear;\n -moz-animation: rotation .7s infinite linear;\n -o-animation: rotation .7s infinite linear;\n animation: rotation .7s infinite linear;\n border-left: 8px solid rgba(0, 0, 0, .2);\n border-right: 8px solid rgba(0, 0, 0, .2);\n border-bottom: 8px solid rgba(0, 0, 0, .2);\n border-top: 8px solid #fff;\n border-radius: 100%\n }\n\n @-webkit-keyframes rotation {\n from {\n -webkit-transform: rotate(0deg)\n }\n to {\n -webkit-transform: rotate(359deg)\n }\n }\n @-moz-keyframes rotation {\n from {\n -moz-transform: rotate(0deg)\n }\n to {\n -moz-transform: rotate(359deg)\n }\n }\n @-o-keyframes rotation {\n from {\n -o-transform: rotate(0deg)\n }\n to {\n -o-transform: rotate(359deg)\n }\n }\n @keyframes rotation {\n from {\n transform: rotate(0deg)\n }\n to {\n transform: rotate(359deg)\n }\n }\n `;\n}\n","/* @flow */\n\nexport function getSandboxStyle({ id, ANIMATION } : { id : string, ANIMATION : Object }) : string {\n return `\n #${ id }.paypal-checkout-sandbox {\n display: block;\n position: fixed;\n top: 0;\n left: 0;\n\n width: 100%;\n height: 100%;\n width: 100vw;\n height: 100vh;\n max-width: 100%;\n max-height: 100%;\n min-width: 100%;\n min-height: 100%;\n\n z-index: 2147483647;\n\n -webkit-animation-duration: 1s;\n animation-duration: 1s;\n\n animation-fill-mode:forwards;\n animation-iteration-count: 1;\n\n -webkit-animation-fill-mode:forwards;\n -webkit-animation-iteration-count: 1;\n }\n\n #${ id }.paypal-checkout-sandbox .paypal-checkout-sandbox-iframe {\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n }\n\n @-webkit-keyframes ${ ANIMATION.SHOW_CONTAINER } {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n }\n\n @keyframes ${ ANIMATION.SHOW_CONTAINER } {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n }\n\n @-webkit-keyframes ${ ANIMATION.HIDE_CONTAINER } {\n from {\n opacity: 1;\n }\n\n 50% {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n }\n\n @keyframes ${ ANIMATION.HIDE_CONTAINER } {\n from {\n opacity: 1;\n }\n\n 50% {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n }\n `;\n}\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { base64encode } from 'belter/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { fundingLogos } from '../../resources';\nimport { BUTTON_LOGO_COLOR, CHECKOUT_OVERLAY_COLOR } from '../../constants';\nimport { isIos } from '../../lib';\n\nimport { containerContent } from './containerContent';\nimport { getContainerStyle } from './containerStyle';\nimport { getSandboxStyle } from './sandboxStyle';\n\nconst LOGO_COLOR = {\n [ CHECKOUT_OVERLAY_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ CHECKOUT_OVERLAY_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n};\n\nexport {\n getContainerStyle,\n getSandboxStyle\n};\n\n// eslint-disable-next-line flowtype/require-exact-type\nexport type ContainerTemplateOptions = {\n id : string,\n props : Object,\n CLASS : Object,\n ANIMATION : Object,\n CONTEXT : Object,\n EVENT : Object,\n dimensions : {\n width : number,\n height : number\n },\n actions : Object,\n tag : string,\n context : string,\n outlet : HTMLElement,\n on : Function,\n jsxDom : Function\n};\n\nexport function containerTemplate({ id, props, CLASS, ANIMATION, CONTEXT, EVENT, on, tag, context, actions, outlet, jsxDom } : ContainerTemplateOptions) : HTMLElement {\n\n const [ lang, country ] = props.locale.split('_');\n\n const content = containerContent[country][lang];\n\n function close(event) {\n event.preventDefault();\n event.stopPropagation();\n actions.close();\n }\n\n function focus(event) {\n event.preventDefault();\n event.stopPropagation();\n\n if (isIos()) {\n // eslint-disable-next-line no-alert\n window.alert('Please switch tabs to reactivate the PayPal window');\n } else {\n ZalgoPromise.try(actions.focus).catch(actions.close);\n }\n }\n\n const style = props.style || {};\n const overlayColor = style.overlayColor || CHECKOUT_OVERLAY_COLOR.BLACK;\n const logoColor = LOGO_COLOR[overlayColor];\n\n const ppLogo = (typeof fundingLogos.pp === 'function')\n ? fundingLogos.pp({ logoColor })\n : fundingLogos.pp[logoColor];\n\n const paypalLogo = (typeof fundingLogos.paypal === 'function')\n ? fundingLogos.paypal({ logoColor })\n : fundingLogos.paypal[logoColor];\n\n const el = (\n
\n \n
\n
\n \n \n
\n
\n {content.windowMessage}\n
\n
\n
\n
\n
\n
\n\n
\n {outlet}\n
\n\n \n
\n );\n\n const container = (\n \n \n { el }\n \n \n );\n\n on(EVENT.CLOSE, () => {\n el.className += ` ${ tag }-loading`;\n });\n\n return (\n
\n \n\n \n
\n );\n}\n","/* @flow */\n\nexport * from './componentTemplate';\nexport * from './containerTemplate';\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { info, track, warn, flush as flushLogs, immediateFlush } from 'beaver-logger/client';\nimport { create, CONSTANTS, PopupOpenError } from 'zoid/src';\nimport { type Component } from 'zoid/src/component/component';\nimport type { CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { base64encode } from 'belter/src';\n\nimport { isDevice, request, getQueryParam, redirect as redir, patchMethod,\n setLogLevel, getSessionID, getBrowserLocale, supportsPopups, memoize,\n getDomainSetting, getScriptVersion, getButtonSessionID, isPayPalDomain,\n isEligible, getCurrentScriptUrl } from '../lib';\nimport { config } from '../config';\nimport { ENV, FPTI, PAYMENT_TYPE, CHECKOUT_OVERLAY_COLOR, ATTRIBUTE } from '../constants';\nimport { onLegacyPaymentAuthorize } from '../compat';\nimport { determineParameterFromToken, determineUrl } from '../integrations';\n\nimport { containerTemplate, componentTemplate } from './template';\n\nfunction addHeader(name, value) : void {\n\n if (!window.$Api) {\n return;\n }\n\n if (window.$Api.addHeader) {\n return window.$Api.addHeader(name, value);\n }\n}\n\n// eslint-disable-next-line flowtype/require-exact-type\ntype CheckoutPropsType = {\n payment? : () => ZalgoPromise,\n onAuthorize : ({ returnUrl : string }, { redirect : (?CrossDomainWindowType, ?string) => ZalgoPromise }) => ?ZalgoPromise,\n onShippingChange? : (address : {}) => ?ZalgoPromise,\n onCancel? : ({ cancelUrl : string }, { redirect : (?CrossDomainWindowType, ?string) => ZalgoPromise }) => ?ZalgoPromise,\n fallback? : (string) => ?ZalgoPromise,\n fundingSource? : string,\n logLevel? : string,\n env? : string,\n stage? : string,\n stageUrl? : string,\n localhostUrl? : string,\n checkoutUri? : string,\n authCode? : string\n};\n\nexport const Checkout : Component = create({\n\n tag: 'paypal-checkout',\n name: 'ppcheckout',\n\n scrolling: true,\n\n buildUrl(props) : ZalgoPromise {\n const env = props.env || config.env;\n\n if (!props.payment) {\n throw new Error(`Can not build url without payment prop`);\n }\n\n return props.payment().then(token => {\n if (!token) {\n throw new Error(`Expected payment id or token to be passed, got ${ token }`);\n }\n\n return determineUrl(env, props.fundingSource, token);\n });\n },\n\n get unsafeRenderTo() : boolean {\n return config.env === ENV.LOCAL;\n },\n\n get domain() : Object {\n return {\n ...config.paypalDomains\n };\n },\n\n get bridgeUrl() : Object {\n return config.metaFrameUrls;\n },\n\n get bridgeDomain() : Object {\n return config.paypalDomains;\n },\n\n contexts: {\n iframe: (!supportsPopups()),\n popup: true\n },\n\n get version() : string {\n return getScriptVersion();\n },\n\n validate() {\n if (!isEligible()) {\n warn('checkout_render_ineligible');\n }\n },\n\n prerenderTemplate: componentTemplate,\n containerTemplate,\n\n props: {\n\n sessionID: {\n type: 'string',\n required: false,\n def() : string {\n return getSessionID();\n },\n queryParam: true\n },\n\n buttonSessionID: {\n type: 'string',\n required: false,\n def() : ?string {\n return getButtonSessionID();\n },\n queryParam: true\n },\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n },\n\n meta: {\n type: 'object',\n required: false,\n def() : Object {\n const meta = window.xprops && window.xprops.meta;\n return meta || {};\n }\n },\n\n stage: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.STAGE || env === ENV.LOCAL) {\n return config.stage;\n }\n }\n },\n\n stageUrl: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.STAGE || env === ENV.LOCAL) {\n return config.stageUrl;\n }\n }\n },\n\n authCode: {\n type: 'string',\n required: false,\n def() : string {\n return config.authCode;\n },\n queryParam: 'code'\n },\n\n localhostUrl: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.LOCAL) {\n return config.localhostUrl;\n }\n }\n },\n\n checkoutUri: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : ?string {\n return config.checkoutUri;\n }\n },\n\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n allowDelegate: true,\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n }\n },\n\n\n client: {\n type: 'object',\n required: false,\n def() : { [string] : string } {\n return {};\n },\n sendToChild: false,\n\n validate(client, props) {\n const env = props.env || config.env;\n\n if (!client[env]) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (client[env].match(/^(.)\\1+$/)) {\n throw new Error(`Invalid client ID: ${ client[env] }`);\n }\n }\n },\n\n payment: {\n type: 'function',\n required: false,\n memoize: true,\n promisify: true,\n queryParam(payment) : ZalgoPromise {\n return payment().then(token => {\n return determineParameterFromToken(token);\n });\n },\n queryValue(payment) : ZalgoPromise {\n return payment();\n },\n childDecorate(payment) : () => ZalgoPromise {\n const token = getQueryParam('token');\n\n return token\n ? memoize(() => ZalgoPromise.resolve(token))\n : payment;\n },\n validate(payment, props) {\n if (!payment && !props.url) {\n throw new Error(`Expected either props.payment or props.url to be passed`);\n }\n },\n alias: 'billingAgreement'\n },\n\n style: {\n type: 'object',\n required: false,\n allowDelegate: true,\n def() : Object {\n return {};\n },\n validate(style) {\n if (style.overlayColor && style.overlayColor !== CHECKOUT_OVERLAY_COLOR.BLACK && style.overlayColor !== CHECKOUT_OVERLAY_COLOR.WHITE) {\n throw new Error(`Invalid background color: ${ style.overlayColor }`);\n }\n }\n },\n\n commit: {\n type: 'boolean',\n required: false\n },\n\n experience: {\n type: 'object',\n required: false,\n def() : Object {\n return {};\n }\n },\n\n fundingSource: {\n type: 'string',\n required: false,\n queryParam: true\n },\n\n fundingOffered: {\n type: 'object',\n required: false,\n queryParam: true,\n def() : Object {\n const elements = Array.prototype.slice.call(document.querySelectorAll(`[${ ATTRIBUTE.FUNDING_SOURCE }]`));\n\n const fundingSources = elements.map(el => {\n return el.getAttribute(ATTRIBUTE.FUNDING_SOURCE);\n });\n\n // $FlowFixMe\n return fundingSources;\n },\n queryValue: (val) => {\n return val.join(',');\n }\n },\n\n onAuthorize: {\n type: 'function',\n required: true,\n once: true,\n \n decorate(original) : Function | void {\n if (original) {\n return function decorateOnAuthorize(data, actions = {}) : ZalgoPromise {\n\n if (data && !data.intent) {\n warn(`checkout_authorize_no_intent`, { paymentID: data.paymentID, token: data.paymentToken });\n }\n\n const close = () => {\n return ZalgoPromise.try(() => {\n if (actions.close) {\n return actions.close();\n }\n }).then(() => {\n return this.closeComponent();\n });\n };\n\n const redirect = (win, url) => {\n return ZalgoPromise.all([\n redir(win || window.top, url || data.returnUrl),\n close()\n ]);\n };\n\n return ZalgoPromise.try(() => {\n\n try {\n const isButton = window.location.href.indexOf('/smart/button') !== -1;\n const isGuest = this.window.location.href.indexOf('/webapps/xoonboarding') !== -1;\n\n if (isButton && isGuest) {\n return request({\n win: this.window,\n method: 'get',\n url: '/webapps/xoonboarding/api/auth'\n }).then(result => {\n if (result && result.data && result.data.access_token) {\n addHeader('x-paypal-internal-euat', result.data.access_token);\n }\n }).catch(() => {\n // pass\n });\n }\n\n } catch (err) {\n // pass\n }\n\n }).then(() => {\n return original.call(this, data, { ...actions, close, redirect });\n }).catch(err => {\n return this.error(err);\n }).finally(() => {\n return this.close();\n });\n };\n }\n }\n },\n\n onShippingChange: {\n type: 'function',\n required: false\n },\n\n onAuth: {\n type: 'function',\n required: false,\n sameDomain: true,\n childDecorate(original : Function) : ?Function {\n if (original) {\n return function wrapOnAuth(data : string | Object) : Object {\n if (typeof data === 'string') {\n data = { accessToken: data };\n }\n return original(data);\n };\n }\n }\n },\n\n accessToken: {\n type: 'function',\n required: false\n },\n\n onCancel: {\n type: 'function',\n required: false,\n once: true,\n noop: true,\n\n decorate(original) : Function {\n return function decorateOnCancel(data, actions = {}) : ZalgoPromise {\n\n const close = () => {\n return ZalgoPromise.try(() => {\n if (actions.close) {\n return actions.close();\n }\n }).then(() => {\n return this.closeComponent();\n });\n };\n\n const redirect = (win, url) => {\n return ZalgoPromise.all([\n redir(win || window.top, url || data.cancelUrl),\n close()\n ]);\n };\n\n return ZalgoPromise.try(() => {\n return original.call(this, data, { ...actions, close, redirect });\n }).finally(() => {\n this.close();\n });\n };\n }\n },\n\n init: {\n type: 'function',\n required: false,\n once: true,\n noop: true,\n\n decorate(original) : Function {\n return function decorateInit(data) : void {\n info('checkout_init');\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CHECKOUT_INIT,\n [ FPTI.KEY.CONTEXT_TYPE ]: FPTI.CONTEXT_TYPE[PAYMENT_TYPE.EC_TOKEN],\n [ FPTI.KEY.TOKEN ]: data.paymentToken,\n [ FPTI.KEY.SELLER_ID ]: data.merchantID,\n [ FPTI.KEY.CONTEXT_ID ]: data.paymentToken\n });\n\n flushLogs();\n\n this.paymentToken = data.paymentToken;\n this.cancelUrl = data.cancelUrl;\n\n return original.apply(this, arguments);\n };\n }\n },\n\n onClose: {\n type: 'function',\n required: false,\n once: true,\n promisify: true,\n noop: true,\n\n decorate(original) : Function {\n return function decorateOnClose(reason) : ZalgoPromise {\n\n const onClose = original.apply(this, arguments);\n\n const CLOSE_REASONS = CONSTANTS.CLOSE_REASONS;\n\n const shouldCancel =\n this.props.onCancel &&\n [ CLOSE_REASONS.CLOSE_DETECTED, CLOSE_REASONS.USER_CLOSED ].indexOf(reason) !== -1;\n\n if (shouldCancel) {\n info(`close_trigger_cancel`);\n return this.props.onCancel({\n paymentToken: this.paymentToken,\n cancelUrl: this.cancelUrl\n }).then(() => onClose);\n }\n\n return onClose;\n };\n }\n },\n\n onError: {\n type: 'function',\n required: false,\n promisify: true,\n noop: true,\n once: true\n },\n\n fallback: {\n type: 'function',\n required: false,\n once: true,\n\n def() : Function {\n return function defaultFallback(url) : ZalgoPromise {\n warn('fallback', { url });\n\n if (getDomainSetting('allow_full_page_fallback')) {\n window.top.location = url;\n return this.close();\n }\n\n return onLegacyPaymentAuthorize(this.props.onAuthorize);\n };\n }\n },\n\n logLevel: {\n type: 'string',\n required: false,\n get value() : string {\n return config.logLevel;\n }\n },\n \n test: {\n type: 'object',\n required: false,\n def() : Object {\n return window.__test__ || { action: 'checkout' };\n }\n },\n\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n }\n },\n\n get dimensions() : { width : string, height : string } {\n\n if (isDevice()) {\n return {\n width: '100%',\n height: '590px'\n };\n }\n\n return {\n width: '500px',\n height: '590px'\n };\n }\n});\n\nif (Checkout.isChild() && Checkout.xchild && Checkout.xprops) {\n\n if (Checkout.xprops && Checkout.xprops.logLevel) {\n setLogLevel(Checkout.xprops.logLevel);\n }\n\n Checkout.xchild.onProps(xprops => {\n patchMethod(xprops, 'onAuthorize', ({ callOriginal, args: [ data ] }) => {\n if (data && !data.intent) {\n warn(`hermes_authorize_no_intent`, { paymentID: data.paymentID, token: data.paymentToken });\n\n try {\n const intent = window.injector.get('$CheckoutCartModel').instance(data.paymentToken).payment_action;\n warn(`hermes_intent`, { paymentID: data.paymentID, token: data.paymentToken, intent });\n } catch (err) {\n // pass\n }\n\n immediateFlush();\n }\n return callOriginal();\n });\n });\n}\n\npatchMethod(Checkout, 'init', ({ args: [ props, _context ], original, context }) => {\n return original.call(context, props, _context, 'body');\n});\n\npatchMethod(Checkout, 'render', ({ args: [ props ], original, context }) => {\n return original.call(context, props, 'body');\n});\n\npatchMethod(Checkout, 'renderTo', ({ args: [ win, props ], original, context }) => {\n\n const payment = props.payment();\n props.payment = () => payment;\n\n return original.call(context, win, props, 'body').catch(err => {\n if (err instanceof PopupOpenError && isPayPalDomain()) {\n Checkout.contexts.iframe = true;\n return original.call(context, win, props, 'body');\n }\n throw err;\n });\n});\n\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { base64encode } from 'belter/src';\n\nimport { fundingLogos } from '../../resources';\nimport { BUTTON_LOGO_COLOR, CHECKOUT_OVERLAY_COLOR } from '../../constants';\nimport { isIos } from '../../lib';\nimport { containerContent } from '../../checkout/template/containerContent';\nimport { getSandboxStyle, getContainerStyle } from '../../checkout/template';\n\nconst LOGO_COLOR = {\n [ CHECKOUT_OVERLAY_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ CHECKOUT_OVERLAY_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n};\n\n// eslint-disable-next-line flowtype/require-exact-type\nexport type ContainerTemplateOptions = {\n id : string,\n props : Object,\n CLASS : Object,\n ANIMATION : Object,\n CONTEXT : Object,\n EVENT : Object,\n dimensions : {\n width : number,\n height : number\n },\n actions : Object,\n tag : string,\n context : string,\n outlet : HTMLElement,\n on : Function,\n jsxDom : Function\n};\n\nexport function containerTemplate({ id, props, CLASS, ANIMATION, CONTEXT, EVENT, on, tag, context, actions, outlet, jsxDom } : ContainerTemplateOptions) : HTMLElement {\n\n const [ lang, country ] = props.locale.split('_');\n\n const containerStyle = `\n ${ getContainerStyle({ id, tag, CONTEXT, CLASS, ANIMATION }) }\n @media screen and (max-width: 470px) {\n #${ id } .paypal-checkout-close {\n position: absolute;\n right: 20px;\n width: 40px;\n height: 40px;\n opacity: 0.6;\n top: 20px;\n opacity: 0.6;\n z-index: 2;\n }\n\n #${ id } .paypal-checkout-close:before, .paypal-checkout-close:after {\n position: absolute;\n left: 20px;\n content: ' ';\n height: 40px;\n width: 1px;\n background-color: #111 !important;\n }\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container,\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } {\n height: 100%;\n min-height: 100%;\n max-height: 100%;\n min-width: 100%;\n max-width: 100%;\n border-radius: 0px;\n }\n #${ id } .${ CLASS.OUTLET } {\n height: 100%;\n }\n }\n `;\n\n const content = containerContent[country][lang];\n\n function close(event) {\n event.preventDefault();\n event.stopPropagation();\n if (props.onCancel) {\n props.onCancel();\n }\n actions.close();\n }\n\n function focus(event) {\n event.preventDefault();\n event.stopPropagation();\n\n if (isIos()) {\n // eslint-disable-next-line no-alert\n window.alert('Please switch tabs to reactivate the PayPal window');\n } else {\n actions.focus();\n }\n }\n\n const style = props.style || {};\n const overlayColor = style.overlayColor || CHECKOUT_OVERLAY_COLOR.BLACK;\n const logoColor = LOGO_COLOR[overlayColor];\n\n const ppLogo = (typeof fundingLogos.pp === 'function')\n ? fundingLogos.pp({ logoColor })\n : fundingLogos.pp[logoColor];\n\n const paypalLogo = (typeof fundingLogos.paypal === 'function')\n ? fundingLogos.paypal({ logoColor })\n : fundingLogos.paypal[logoColor];\n\n const el = (\n
\n \n
\n
\n \n \n
\n
\n {content.windowMessage}\n
\n
\n
\n
\n
\n
\n\n
\n {outlet}\n
\n\n \n
\n );\n\n const container = (\n \n \n { el }\n \n \n );\n\n on(EVENT.CLOSE, () => {\n el.className += ` ${ tag }-loading`;\n });\n\n return (\n
\n \n\n \n
\n );\n}\n\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { create } from 'zoid/src';\nimport { type Component } from 'zoid/src/component/component';\nimport { base64encode } from 'belter/src';\n\nimport { ENV } from '../constants';\nimport { getButtonSessionID, getBrowserLocale, getSessionID, getCurrentScriptUrl } from '../lib';\nimport { config } from '../config';\n\nimport { containerTemplate } from './template';\n\ntype BillingOptions = {|\n client : {\n [string] : (string | ZalgoPromise)\n },\n env? : string,\n locale? : string,\n logLevel : string,\n awaitPopupBridge : Function,\n meta : Object,\n commit : boolean,\n token : string\n|};\n\nexport const BillingPage : Component = create({\n tag: 'billing-page',\n name: 'billing-page',\n\n buildUrl(props) : string {\n const env = props.env || config.env;\n return `${ config.inlinedCardFieldUrls[env] }/billing`;\n },\n\n get domain() : Object {\n return {\n ...config.paypalDomains,\n [ ENV.LOCAL ]: /^http:\\/\\/localhost.paypal.com:\\d+$/\n };\n },\n\n scrolling: true,\n\n props: {\n sessionID: {\n type: 'string',\n required: false,\n def() : string {\n return getSessionID();\n },\n queryParam: true\n },\n\n\n token: {\n type: 'string',\n required: true,\n queryParam: true\n },\n\n buttonSessionID: {\n type: 'string',\n required: false,\n def() : ?string {\n return getButtonSessionID();\n },\n queryParam: true\n },\n\n commit: {\n type: 'boolean',\n required: false,\n queryParam: true\n },\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n },\n\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n allowDelegate: true,\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n }\n },\n\n cardType: {\n type: 'string',\n required: false\n },\n prefilledZipCode: {\n type: 'string',\n required: false\n },\n\n onEvent: {\n type: 'function',\n required: false,\n sameDomain: true\n },\n\n dispatch: {\n type: 'object',\n required: false,\n sameDomain: true\n },\n\n onCancel: {\n type: 'function',\n required: false,\n once: true,\n noop: true\n },\n\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n }\n },\n\n\n containerTemplate\n});\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { create } from 'zoid/src';\nimport { base64encode } from 'belter/src';\n\nimport { getBrowserLocale, getCurrentScriptUrl } from '../lib';\nimport { config } from '../config';\nimport { containerTemplate } from '../billing/template';\n\nexport const ThreeDomainSecure = create({\n tag: 'paypal-3ds',\n name: '3ds',\n\n buildUrl(props) : string {\n const env = props.env || config.env;\n return `${ config.inlinedCardFieldUrls[env] }/init3ds`;\n },\n\n get domain() : Object {\n return {\n ...config.paypalDomains\n };\n },\n\n scrolling: true,\n\n props: {\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n },\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n allowDelegate: true,\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n }\n },\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n },\n challengeUrl: {\n type: 'string'\n },\n threeDomainSecureToken: {\n type: 'string'\n },\n method: {\n type: 'string'\n },\n onSuccess: {\n type: 'function',\n required: false\n },\n onError: {\n type: 'function',\n required: false\n },\n onCancel: {\n type: 'function',\n required: true,\n allowDelegate: true\n }\n },\n\n\n containerTemplate\n});\n","/* @flow */\n\nimport { track, info } from 'beaver-logger/client';\n\nimport { config } from '../config';\nimport { FPTI, PPTM_ID } from '../constants';\nimport { stringifyError, extendUrl, loadScript, getElement, isPayPalDomain } from '../lib';\n\n\nfunction shouldCreateInitialPptmScript() : boolean {\n const id = window.location.hostname;\n\n if (!id) {\n return false;\n }\n\n if (isPayPalDomain()) {\n return false;\n }\n\n const existingScript = getElement(PPTM_ID);\n const alreadyDownloaded = Boolean(existingScript);\n\n if (alreadyDownloaded) {\n info('pptm_tried_loading_twice');\n return false;\n }\n\n return true;\n}\n\nfunction removePptm() {\n const script = getElement(PPTM_ID);\n\n if (script) {\n // $FlowFixMe\n script.parentNode.removeChild(script);\n }\n}\n\nexport function pptmFactory() : Object {\n let noContentFoundInContainer = false;\n const callback = `__pptmLoadedWithNoContent`;\n let listener;\n\n const obj = {\n /*\n In the button component, we set up a global window[callback] that will be called in pptm `onload` attribute.\n Button.render calls `reloadPptmScript`, which checks if window[callback] has been called yet (meaning, it checks\n if pptm.js was loaded before Button.render was called). If so, we'll check to see if we should reload PPTM\n now that we might have a client ID from the Button.render method.\n If pptm.js hasn't loaded yet, then we'll set up a listener to the same logic above to defer it until\n pptm.js actually loads.\n */\n reloadPptmScript(clientId : ?string) {\n const tryCreatePptmScript = () => {\n if (obj.shouldReloadPptmScript(clientId)) {\n obj.removePptm();\n obj.createPptmScript(clientId);\n } else {\n // Defer until later, since reloadPptmScript might have been called\n // before pptm loaded, so we'll still want to hook into the script load.\n listener = tryCreatePptmScript;\n }\n };\n\n tryCreatePptmScript();\n },\n listenForLoadWithNoContent() {\n window[callback] = () => {\n noContentFoundInContainer = true;\n\n if (listener) {\n listener();\n listener = undefined;\n }\n };\n },\n listenForButtonRender() {\n window.paypalDDL = window.paypalDDL || [];\n const buttonRenderEvent = window.paypalDDL.filter(e => e.event === 'paypalButtonRender');\n if (buttonRenderEvent.length === 0) {\n window.paypalDDL.push({ event: 'paypalButtonRender' });\n }\n },\n get callback() : string {\n return callback;\n },\n get noContentFoundInContainer() : boolean {\n return noContentFoundInContainer;\n },\n createPptmScript: (clientId : ?string) => {\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.PPTM,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.PPTM_LOAD\n });\n \n const params = {\n t: 'xo',\n id: window.location.hostname,\n mrid: config.merchantID,\n client_id: '',\n v: config.version,\n source: 'checkoutjs'\n };\n \n if (clientId) {\n params.client_id = clientId;\n } else {\n delete params.client_id;\n }\n \n const fullUrl = extendUrl(config.pptmUrl, params);\n \n loadScript(fullUrl, 0, {\n async: true,\n id: PPTM_ID\n }).then(() => {\n // If the snippet is empty, then fire the callback.\n // We assume non-empty pptm.js bundles with init the paypalDDL and push an event called\n // `snippetRun` to it.\n if (!(window.paypalDDL && window.paypalDDL[0] && window.paypalDDL[0].event === 'snippetRun')) {\n window[callback]();\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.PPTM,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.PPTM_LOADED\n });\n }).catch(err => {\n info('pptm_script_error', { error: stringifyError(err) });\n });\n },\n shouldCreateInitialPptmScript,\n /*\n During Button render if a client ID was provided, we'll want to refresh the\n pptm script to try to pull down a container by that value.\n We'll only do this if we're not on the PayPal domain, or if\n a merchant ID wasn't already provided (since container look-up can\n also happen by merchant ID). Note that this will only happen\n if there was no content found in the container that was pulled down\n in the `setup` script. This is important because we don't want\n to pull down multiple containers that actually contain content,\n otherwise we'll be firing duplicate tags.\n */\n shouldReloadPptmScript(clientId : ?string) : boolean {\n if (noContentFoundInContainer === false) {\n return false;\n }\n\n if (isPayPalDomain()) {\n return false;\n }\n \n // If a merchant ID was already provided, then that meant we initially\n // loaded the pptm script with that value as the main container\n // look-up value, so in this case we don't want to reload pptm.\n if (config.merchantID) {\n return false;\n }\n \n if (clientId) {\n return true;\n }\n \n return false;\n },\n removePptm\n };\n\n return obj;\n}\n","/* @flow */\n\nimport { pptmFactory } from './pptm-factory';\n\nexport const pptm = pptmFactory();\n","/* @flow */\n\nexport * from './pptm';\nexport * from './pptm-factory';\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { on, send } from 'post-robot/src';\nimport { base64encode } from 'belter/src';\nimport { info, track } from 'beaver-logger/client';\nimport { getAncestor, isSameDomain } from 'cross-domain-utils/src';\n\nimport { config } from '../config';\nimport { FPTI, PAYMENT_TYPE } from '../constants';\nimport { request, memoize, isPayPalDomain, uniqueID } from '../lib';\n\ntype ProxyRest = {\n [string] : (...args : $ReadOnlyArray) => ZalgoPromise<*>\n};\n\nlet proxyRest : ProxyRest = {};\n\nconst createAccessToken = memoize((env : string, client : { [key : string] : string }) : ZalgoPromise => {\n\n info(`rest_api_create_access_token`);\n\n env = env || config.env;\n\n const clientID : string = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (proxyRest.createAccessToken && !proxyRest.createAccessToken.source.closed) {\n return proxyRest.createAccessToken(env, client);\n }\n\n const basicAuth : string = base64encode(`${ clientID }:`);\n\n return request({\n\n method: `post`,\n url: config.authApiUrls[env],\n headers: {\n Authorization: `Basic ${ basicAuth }`\n },\n data: {\n grant_type: `client_credentials`\n }\n\n }).then(res => {\n\n if (res && res.error === 'invalid_client') {\n throw new Error(`Auth Api invalid ${ env } client id: ${ clientID }:\\n\\n${ JSON.stringify(res, null, 4) }`);\n }\n\n if (!res || !res.access_token) {\n throw new Error(`Auth Api response error:\\n\\n${ JSON.stringify(res, null, 4) }`);\n }\n\n return res.access_token;\n });\n\n}, { time: 10 * 60 * 1000 });\n\nconst createExperienceProfile = memoize((env : string, client : { [key : string] : string }, experienceDetails : Object = {}) : ZalgoPromise => {\n\n info(`rest_api_create_experience_profile`);\n\n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (proxyRest.createExperienceProfile && !proxyRest.createExperienceProfile.source.closed) {\n return proxyRest.createExperienceProfile(env, client, experienceDetails);\n }\n\n experienceDetails.temporary = true;\n experienceDetails.name = experienceDetails.name ? `${ experienceDetails.name }_${ Math.random().toString() }` : Math.random().toString();\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n return request({\n method: `post`,\n url: config.experienceApiUrls[env],\n headers: {\n Authorization: `Bearer ${ accessToken }`\n },\n json: experienceDetails\n });\n\n }).then((res) : string => {\n\n if (res && res.error) {\n throw new Error(res.error);\n }\n\n if (!res.id) {\n throw new Error(`No id in experience profile response:\\n\\n${ JSON.stringify(res, null, 4) }`);\n }\n\n return res.id;\n });\n\n}, { time: 10 * 60 * 1000 });\n\nfunction logPaymentResponse(res) {\n\n if (!res) {\n return;\n }\n\n let paymentToken;\n let paymentID;\n\n if (res.id) {\n paymentID = res.id;\n }\n\n if (res.links && res.links.length) {\n for (let i = 0; i < res.links.length; i++) {\n if (res.links[i].method === 'REDIRECT' && res.links[i].rel === 'approval_url') {\n const match = res.links[i].href.match(/token=((EC-)?[A-Z0-9]{17})/);\n if (match) {\n paymentToken = match[1];\n }\n }\n }\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.BUTTON,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CREATE_PAYMENT,\n [ FPTI.KEY.CONTEXT_TYPE ]: FPTI.CONTEXT_TYPE[PAYMENT_TYPE.PAY_ID],\n [ FPTI.KEY.PAY_ID ]: paymentID,\n [ FPTI.KEY.TOKEN ]: paymentToken,\n [ FPTI.KEY.CONTEXT_ID ]: paymentID\n });\n}\n\nfunction getDefaultReturnUrl() : string {\n return `https://www.paypal.com/checkoutnow/error`;\n}\n\nfunction createTracking(env : string, client : { [key : string] : string }, merchantID, trackingData) : Object {\n \n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n const trackingID = uniqueID();\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n const headers : Object = {\n Authorization: `Bearer ${ accessToken }`\n };\n\n return request({\n method: `put`,\n url: `${ config.trackingApiUrls[env] }/${ merchantID }/${ trackingID }`,\n headers,\n json: {\n 'tracking_id': trackingID,\n 'additional_data': trackingData\n }\n });\n\n }).then(() => {\n return trackingID;\n });\n}\n\nfunction createPayment(env : string, client : { [key : string] : string }, paymentDetails : Object) : ZalgoPromise {\n\n info(`rest_api_create_checkout_token`);\n\n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n let { payment, experience, meta, tracking } = paymentDetails;\n\n if (!payment) {\n throw new Error(`Expected payment details to be passed`);\n }\n\n if (proxyRest.createPayment && !proxyRest.createPayment.source.closed) {\n return proxyRest.createPayment(env, client, { payment, experience, meta, tracking });\n }\n\n payment = { ...payment };\n payment.intent = payment.intent || 'sale';\n payment.redirect_urls = payment.redirect_urls || {};\n payment.redirect_urls.return_url = payment.redirect_urls.return_url || getDefaultReturnUrl();\n payment.redirect_urls.cancel_url = payment.redirect_urls.cancel_url || getDefaultReturnUrl();\n payment.payer = payment.payer || {};\n payment.payer.payment_method = payment.payer.payment_method || 'paypal';\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n return ZalgoPromise.try(() => {\n\n if (experience) {\n return ZalgoPromise.resolve(createExperienceProfile(env, client, experience));\n }\n\n }).then((experienceID) : ZalgoPromise => {\n\n return ZalgoPromise.try(() => {\n\n if (tracking) {\n return ZalgoPromise.resolve(createTracking(env, client, tracking.id, tracking.data));\n }\n\n }).then((trackingID) : ZalgoPromise => {\n\n if (experienceID) {\n payment.experience_profile_id = experienceID;\n }\n\n const headers : Object = {\n Authorization: `Bearer ${ accessToken }`\n };\n\n if (trackingID) {\n headers['Paypal-Client-Metadata-Id'] = trackingID;\n }\n\n if (meta && meta.partner_attribution_id) {\n headers['PayPal-Partner-Attribution-Id'] = meta.partner_attribution_id;\n }\n\n return request({\n method: `post`,\n url: config.paymentApiUrls[env],\n headers,\n json: payment\n });\n });\n });\n\n }).then((res) : string => {\n\n logPaymentResponse(res);\n\n if (res && res.id) {\n return res.id;\n }\n\n throw new Error(`Payment Api response error:\\n\\n${ JSON.stringify(res, null, 4) }`);\n\n });\n}\n\nfunction createOrder(env : string, client : { [key : string] : string }, paymentDetails : Object) : ZalgoPromise {\n\n info(`rest_api_create_order_token`);\n\n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n let { order, meta } = paymentDetails;\n\n if (!order) {\n throw new Error(`Expected order details to be passed`);\n }\n\n if (proxyRest.createOrder && !proxyRest.createOrder.source.closed) {\n return proxyRest.createOrder(env, client, { order, meta });\n }\n\n order = { ...order };\n order.intent = order.intent || 'CAPTURE';\n order.application_context = order.application_context || {};\n order.application_context.return_url = order.application_context.return_url || getDefaultReturnUrl();\n order.application_context.cancel_url = order.application_context.cancel_url || getDefaultReturnUrl();\n order.purchase_units = order.purchase_units || [];\n order.purchase_units[0] = order.purchase_units[0] || {};\n order.purchase_units.forEach(unit => {\n unit.reference_id = unit.reference_id || Math.random().toString();\n });\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n const headers : Object = {\n Authorization: `Bearer ${ accessToken }`\n };\n\n if (meta && meta.partner_attribution_id) {\n headers['PayPal-Partner-Attribution-Id'] = meta.partner_attribution_id;\n }\n\n return request({\n method: `post`,\n url: config.orderApiUrls[env],\n headers,\n json: order\n });\n\n }).then((res) : string => {\n\n logPaymentResponse(res);\n\n if (res && res.id) {\n return res.id;\n }\n\n throw new Error(`Payment Api response error:\\n\\n${ JSON.stringify(res, null, 4) }`);\n });\n}\n\nexport function createBillingAgreement(env : string, client : { [key : string] : string }, billingDetails : Object, experienceDetails? : ?Object) : ZalgoPromise {\n\n info(`rest_api_create_billing_token`);\n\n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (proxyRest.createBillingAgreement && !proxyRest.createBillingAgreement.source.closed) {\n return proxyRest.createBillingAgreement(env, client, billingDetails, experienceDetails);\n }\n\n billingDetails = { ...billingDetails };\n billingDetails.plan = billingDetails.plan || {};\n billingDetails.plan.merchant_preferences = billingDetails.plan.merchant_preferences || {};\n billingDetails.plan.merchant_preferences.return_url = billingDetails.plan.merchant_preferences.return_url || getDefaultReturnUrl();\n billingDetails.plan.merchant_preferences.cancel_url = billingDetails.plan.merchant_preferences.cancel_url || getDefaultReturnUrl();\n billingDetails.payer = billingDetails.payer || {};\n billingDetails.payer.payment_method = billingDetails.payer.payment_method || 'paypal';\n\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n return ZalgoPromise.try(() => {\n\n if (experienceDetails) {\n return ZalgoPromise.resolve(createExperienceProfile(env, client, experienceDetails));\n }\n\n }).then((experienceID) : ZalgoPromise => {\n\n if (experienceID) {\n billingDetails.experience_profile_id = experienceID;\n }\n\n return request({\n method: `post`,\n url: config.billingApiUrls[env],\n headers: {\n Authorization: `Bearer ${ accessToken }`\n },\n json: billingDetails\n });\n });\n\n }).then(res => {\n\n if (res && res.token_id) {\n return res.token_id;\n }\n\n throw new Error(`Billing Api response error:\\n\\n${ JSON.stringify(res, null, 4) }`);\n });\n}\n\nexport const rest = {\n payment: {\n create: createPayment\n },\n order: {\n create: createOrder\n },\n billingAgreement: {\n create: createBillingAgreement\n },\n experience: {\n create: createExperienceProfile\n }\n};\n\nconst PROXY_REST = `proxy_rest`;\nconst parentWin = getAncestor();\n\non(PROXY_REST, { domain: config.paypal_domain_regex }, ({ data }) => {\n proxyRest = data;\n});\n\nif (parentWin && isPayPalDomain() && !isSameDomain(parentWin)) {\n send(parentWin, PROXY_REST, { createAccessToken, createExperienceProfile, createPayment, createBillingAgreement, createOrder })\n .catch(() => {\n // pass\n });\n}\n","/* @flow */\n\nimport { info, track, immediateFlush } from 'beaver-logger/client';\n\nimport { FPTI, PAYMENT_TYPE } from './constants';\nimport { getReturnToken, getSessionState, getDomainSetting, eventEmitter } from './lib';\n\nexport const onAuthorizeListener = eventEmitter();\n\nfunction log(experiment : string, treatment : string, token : ?string, state : string) {\n\n getSessionState(session => {\n\n let event = `${ experiment }_${ treatment }_${ state }`;\n const loggedEvents = session.loggedExperimentEvents = session.loggedExperimentEvents || [];\n const duplicate = loggedEvents.indexOf(event) !== -1;\n\n if (duplicate) {\n info(`duplicate_${ event }`);\n\n } else {\n info(event);\n loggedEvents.push(event);\n\n const edge = window.navigator && window.navigator.userAgent && window.navigator.userAgent.match(/Edge\\/[0-9]{2}/);\n\n if (edge) {\n event = info(`${ edge[0].toLowerCase().replace('/', '_') }_${ event }`);\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: state,\n [ FPTI.KEY.EXPERIMENT_NAME ]: experiment,\n [ FPTI.KEY.TREATMENT_NAME ]: treatment,\n [ FPTI.KEY.TOKEN ]: token,\n [ FPTI.KEY.CONTEXT_ID ]: token,\n [ FPTI.KEY.CONTEXT_TYPE ]: token ? FPTI.CONTEXT_TYPE[PAYMENT_TYPE.EC_TOKEN] : FPTI.CONTEXT_TYPE.BUTTON_SESSION_ID\n });\n\n immediateFlush();\n }\n });\n}\n\nexport function logExperimentTreatment({ experiment, treatment, state, token } : { experiment : string, treatment : string, state : string, token : ?string }) {\n\n if (!experiment || !treatment) {\n return;\n }\n\n getSessionState(session => {\n session.externalExperiment = experiment;\n session.externalExperimentTreatment = treatment;\n\n if (token) {\n session.externalExperimentToken = token;\n }\n });\n\n log(experiment, treatment, token, state);\n}\n\nfunction logReturn(token : string) {\n\n const {\n externalExperiment,\n externalExperimentTreatment,\n externalExperimentToken\n } = getSessionState(session => session);\n\n if (externalExperiment && externalExperimentTreatment && externalExperimentToken === token) {\n log(externalExperiment, externalExperimentTreatment, token, `complete`);\n } else {\n info(`experiment_mismatch`, {\n token,\n externalExperiment,\n externalExperimentTreatment,\n externalExperimentToken\n });\n }\n}\n\nif (getDomainSetting('log_authorize')) {\n\n onAuthorizeListener.once(({ paymentToken }) => {\n setTimeout(() => {\n logReturn(paymentToken);\n }, 1);\n });\n\n const returnToken = getReturnToken();\n\n if (returnToken) {\n setTimeout(() => {\n if (returnToken) {\n logReturn(returnToken);\n }\n }, 1);\n }\n}\n","/* @flow */\n\nimport { once, noop } from 'zoid/src/lib';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { error } from 'beaver-logger/client';\nimport type { CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { extendUrl, redirect, awaitKey, stringifyError } from '../lib';\nimport { config } from '../config';\nimport { FUNDING } from '../constants';\n\nimport { determineParameterFromToken, determineUrl } from './checkout';\n\nconst OPTYPE = {\n PAYMENT: 'payment',\n CANCEL: 'cancel'\n};\n\nconst CONTINGENCY = {\n PAYMENT_CANCELLED: 'PAYMENT_CANCELLED'\n};\n\ntype PopupBridge = {|\n open : (string) => ZalgoPromise\n|};\n\nfunction wrapPopupBridge(popupBridge : Object) : PopupBridge {\n return {\n open(url : string) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n popupBridge.onComplete = (err, result) => {\n if (!result) {\n return reject(new Error('No payload passed in popupBridge.onComplete'));\n }\n\n return err ? reject(err) : resolve(result);\n };\n\n popupBridge.onCancel = () => {\n const err = new Error(CONTINGENCY.PAYMENT_CANCELLED);\n // $FlowFixMe\n err.code = CONTINGENCY.PAYMENT_CANCELLED;\n return reject(err);\n };\n\n popupBridge.open(extendUrl(url, { redirect_uri: popupBridge.getReturnUrlPrefix() }));\n });\n }\n };\n}\n\nfunction validateCheckoutProps(props) {\n if (!props.payment) {\n throw new Error(`Expected props.payment to be passed`);\n }\n\n if (!props.onAuthorize) {\n throw new Error(`Expected props.onAuthorize to be passed`);\n }\n\n if (props.env && !config.checkoutUrls[props.env]) {\n throw new Error(`Invalid props.env: ${ props.env }`);\n }\n}\n\nfunction normalizeCheckoutProps(props : Object) : { env : string, payment : Function, onAuthorize : Function, onCancel : Function } {\n const env = props.env = props.env || config.env;\n\n const payment = props.payment;\n const onAuthorize = once(props.onAuthorize);\n const onCancel = once(props.onCancel || noop);\n\n return { env, payment, onAuthorize, onCancel };\n}\n\nfunction getUrl(props : { env : string, payment : Function, onAuthorize : Function, onCancel? : Function, commit? : boolean }) : ZalgoPromise {\n\n const { env, payment } = normalizeCheckoutProps(props);\n\n return ZalgoPromise.try(payment, { props }).then(token => {\n if (!token) {\n throw new Error(`Expected props.payment to return a payment id or token`);\n }\n\n return extendUrl(determineUrl(env, FUNDING.PAYPAL, token), {\n [determineParameterFromToken(token)]: token,\n\n useraction: props.commit ? 'commit' : '',\n native_xo: '1'\n });\n });\n}\n\nfunction extractDataFromQuery(query : Object) : Object {\n\n const data : Object = {\n paymentToken: query.token,\n billingToken: query.ba_token,\n paymentID: query.paymentId,\n payerID: query.PayerID,\n intent: query.intent\n };\n \n const { opType, return_uri, cancel_uri } = query;\n\n if (opType === OPTYPE.PAYMENT) {\n data.returnUrl = return_uri;\n\n } else if (opType === OPTYPE.CANCEL) {\n data.cancelUrl = cancel_uri;\n }\n\n return data;\n}\n\nfunction buildActions(query : Object) : Object {\n \n const actions : Object = {\n close: noop,\n closeComponent: noop\n };\n\n const { opType, return_uri, cancel_uri } = query;\n\n if (opType === OPTYPE.PAYMENT) {\n actions.redirect = (win : CrossDomainWindowType = window, redirectUrl : string = return_uri) : ZalgoPromise => {\n return redirect(win, redirectUrl);\n };\n\n } else if (opType === OPTYPE.CANCEL) {\n actions.redirect = (win : CrossDomainWindowType = window, redirectUrl : string = cancel_uri) : ZalgoPromise => {\n return redirect(win, redirectUrl);\n };\n }\n\n return actions;\n}\n\nfunction renderThroughPopupBridge(props : Object, popupBridge : PopupBridge) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n validateCheckoutProps(props);\n\n }).then(() => {\n\n return getUrl(props);\n \n }).then(url => {\n\n return popupBridge.open(url);\n\n }).then(payload => {\n\n const { opType } = payload.queryItems;\n const { onAuthorize, onCancel } = normalizeCheckoutProps(props);\n\n const data = extractDataFromQuery(payload.queryItems);\n const actions = buildActions(payload.queryItems);\n \n if (opType === OPTYPE.PAYMENT) {\n return onAuthorize(data, actions);\n\n } else if (opType === OPTYPE.CANCEL) {\n return onCancel(data, actions);\n \n } else {\n throw new Error(`Invalid opType: ${ opType }`);\n }\n\n }).catch(err => {\n\n if (err && err.code === CONTINGENCY.PAYMENT_CANCELLED) {\n const { onCancel } = normalizeCheckoutProps(props);\n return onCancel({}, {});\n }\n\n throw err;\n });\n}\n\nexport function awaitPopupBridge(Button : Object) : ZalgoPromise {\n if (Button.xprops && Button.xprops.awaitPopupBridge) {\n return Button.xprops.awaitPopupBridge();\n }\n\n return awaitKey(window, 'popupBridge').then(popupBridge => {\n return wrapPopupBridge(popupBridge);\n });\n}\n\nexport function setupPopupBridgeProxy(Checkout : Object, Button : Object) {\n\n let popupBridge;\n\n awaitPopupBridge(Button).then(bridge => {\n popupBridge = bridge;\n });\n\n function doRender(props, original) : ZalgoPromise {\n if (!popupBridge) {\n return original();\n }\n \n return renderThroughPopupBridge(props, popupBridge)\n .catch(err => {\n error(`popup_bridge_error`, { err: stringifyError(err) });\n return original();\n });\n }\n\n const render = Checkout.render;\n Checkout.render = function popupBridgeRender(props : Object) : ZalgoPromise {\n return doRender(props, () => render.apply(this, arguments));\n };\n\n const renderTo = Checkout.renderTo;\n Checkout.renderTo = function popupBridgeRenderTo(win : CrossDomainWindowType, props : Object) : ZalgoPromise {\n return doRender(props, () => renderTo.apply(this, arguments));\n };\n\n const renderPopupTo = Checkout.renderPopupTo;\n Checkout.renderPopupTo = function popupBridgeRenderPopupTo(win : CrossDomainWindowType, props : Object) : ZalgoPromise {\n return doRender(props, () => renderPopupTo.apply(this, arguments));\n };\n}\n","/* @flow */\n/* global __paypal_checkout__*/\n\nimport { FUNDING, COUNTRY, CARD, PLATFORM, DEFAULT, ENV } from '../constants';\n\nexport const FUNDING_PRIORITY = [\n FUNDING.PAYPAL,\n FUNDING.VENMO,\n FUNDING.ITAU,\n FUNDING.CREDIT,\n FUNDING.CARD,\n FUNDING.IDEAL,\n FUNDING.ELV,\n FUNDING.BANCONTACT,\n FUNDING.GIROPAY,\n FUNDING.EPS,\n FUNDING.SOFORT,\n FUNDING.MYBANK,\n FUNDING.BLIK,\n FUNDING.P24,\n FUNDING.PAYU,\n FUNDING.VERKKOPANKKI,\n FUNDING.TRUSTLY,\n FUNDING.MAXIMA,\n FUNDING.BOLETO,\n FUNDING.OXXO\n];\n\nexport const FUNDING_ORDER = [\n FUNDING.PAYPAL,\n FUNDING.VENMO,\n FUNDING.ITAU,\n FUNDING.CREDIT,\n FUNDING.IDEAL,\n FUNDING.ELV,\n FUNDING.BANCONTACT,\n FUNDING.GIROPAY,\n FUNDING.EPS,\n FUNDING.SOFORT,\n FUNDING.MYBANK,\n FUNDING.BLIK,\n FUNDING.P24,\n FUNDING.PAYU,\n FUNDING.VERKKOPANKKI,\n FUNDING.TRUSTLY,\n FUNDING.MAXIMA,\n FUNDING.BOLETO,\n FUNDING.OXXO,\n FUNDING.CARD\n];\n\nexport const FUNDING_CONFIG = {\n\n [ DEFAULT ]: {\n enabled: true,\n\n allowOptIn: true,\n allowOptOut: true,\n allowRemember: true,\n\n allowHorizontal: true,\n allowVertical: true,\n\n requireCommitAsTrue: false\n },\n\n [ FUNDING.PAYPAL ]: {\n default: true,\n\n allowOptIn: false,\n allowOptOut: false,\n\n allowHorizontal: true,\n allowVertical: true\n },\n\n [ FUNDING.CARD ]: {\n // $FlowFixMe\n default: (typeof __paypal_checkout__ === 'undefined' ? true : __paypal_checkout__.serverConfig.paypalMerchantConfiguration.creditCard.isPayPalBranded),\n\n allowHorizontal: false,\n allowVertical: true\n },\n\n [ FUNDING.VENMO ]: {\n allowOptOut: true,\n allowedCountries: [\n COUNTRY.US\n ],\n\n allowHorizontal: true,\n allowVertical: true\n },\n [ FUNDING.ITAU ]: {\n allowOptOut: true,\n allowedCountries: [\n COUNTRY.BR\n ],\n\n allowHorizontal: true,\n allowVertical: true\n },\n\n [ FUNDING.CREDIT ]: {\n allowedCountries: [\n COUNTRY.US,\n COUNTRY.GB,\n COUNTRY.DE\n ],\n defaultVerticalCountries: [\n COUNTRY.US\n ],\n platforms: [\n PLATFORM.MOBILE\n ],\n\n allowHorizontal: true,\n allowVertical: true,\n allowRemember: true\n },\n\n [ FUNDING.IDEAL ]: {\n allowedCountries: [\n COUNTRY.NL\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.ELV ]: {\n allowedCountries: [\n COUNTRY.DE\n ],\n defaultVerticalCountries: [\n COUNTRY.DE\n ],\n\n allowHorizontal: false,\n allowVertical: true\n },\n\n [ FUNDING.BANCONTACT ]: {\n allowedCountries: [\n COUNTRY.BE\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.GIROPAY ]: {\n allowedCountries: [\n COUNTRY.DE\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.SOFORT ]: {\n allowedCountries: [\n COUNTRY.DE,\n COUNTRY.AT,\n COUNTRY.BE,\n COUNTRY.ES,\n COUNTRY.IT,\n COUNTRY.NL\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.EPS ]: {\n allowedCountries: [\n COUNTRY.AT\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.MYBANK ]: {\n allowedCountries: [\n COUNTRY.IT\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.P24 ]: {\n allowedCountries: [\n COUNTRY.PL\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.PAYU ]: {\n allowedCountries: [\n COUNTRY.CZ\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.VERKKOPANKKI ]: {\n allowedCountries: [\n COUNTRY.FI\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.BLIK ]: {\n allowedCountries: [\n COUNTRY.PL\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.TRUSTLY ]: {\n allowedCountries: [\n COUNTRY.DE,\n COUNTRY.DK,\n COUNTRY.EE,\n COUNTRY.ES,\n COUNTRY.FI,\n COUNTRY.GB,\n COUNTRY.IT,\n COUNTRY.MT,\n COUNTRY.NL,\n COUNTRY.NO,\n COUNTRY.SE\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.MAXIMA ]: {\n allowedCountries: [\n COUNTRY.LT\n ],\n\n allowedEnvs: [\n ENV.LOCAL,\n ENV.STAGE,\n ENV.TEST\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.BOLETO ]: {\n allowedCountries: [\n COUNTRY.BR\n ],\n\n allowedEnvs: [\n ENV.LOCAL,\n ENV.STAGE,\n ENV.TEST\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.OXXO ]: {\n allowedCountries: [\n COUNTRY.MX\n ],\n\n allowedEnvs: [\n ENV.LOCAL,\n ENV.STAGE,\n ENV.TEST\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.ZIMPLER ]: {\n allowedCountries: [],\n\n allowHorizontal: false,\n allowVertical: false,\n requireCommitAsTrue: true\n }\n};\n\nexport const CARD_CONFIG = {\n\n [ DEFAULT ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX\n ]\n },\n\n [ COUNTRY.GB ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.DISCOVER,\n CARD.MAESTRO\n ]\n },\n\n [ COUNTRY.US ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.DISCOVER\n ]\n },\n\n [ COUNTRY.BR ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.HIPER,\n CARD.ELO\n ]\n },\n\n [ COUNTRY.JP ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.JCB\n ]\n },\n\n [ COUNTRY.CN ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.CUP\n ]\n }\n};\n\nfunction getConfig(conf : Object, category : string, key : string, def : ?T) : T {\n const categoryConfig = conf[category];\n\n if (categoryConfig && categoryConfig.hasOwnProperty(key)) {\n return categoryConfig[key];\n }\n\n if (conf[DEFAULT] && conf[DEFAULT].hasOwnProperty(key)) {\n return conf[DEFAULT][key];\n }\n\n if (arguments.length >= 4) {\n // $FlowFixMe\n return def;\n }\n\n throw new Error(`No value found for ${ category }:${ key }`);\n}\n\nexport function getFundingConfig(source : string, key : string, def : ?T) : T {\n return getConfig(FUNDING_CONFIG, source, key, def);\n}\n\nexport function getCardConfig(source : string, key : string, def : ?T) : T {\n return getConfig(CARD_CONFIG, source, key, def);\n}\n","/* @flow */\n\nimport { ENV, CARD_PRIORITY, FUNDING, BUTTON_LAYOUT, FUNDING_ELIGIBILITY_REASON } from '../constants';\nimport type { LocaleType, FundingSource, FundingSelection, FundingList } from '../types';\n\nimport { getFundingConfig, getCardConfig, FUNDING_PRIORITY, FUNDING_CONFIG } from './config';\n\nconst fundingEligibilityReasons = [];\n\nexport function isFundingIneligible(source : FundingSource, { locale, funding, layout, commit, env } :\n { locale : LocaleType, funding : FundingSelection, layout : string, commit? : boolean, env : string }) : ?string {\n\n const isVertical = layout === BUTTON_LAYOUT.VERTICAL;\n const allowSecondary = getFundingConfig(source, isVertical ? 'allowVertical' : 'allowHorizontal');\n\n if (!allowSecondary) {\n return FUNDING_ELIGIBILITY_REASON.SECONDARY_DISALLOWED;\n }\n\n if (funding.disallowed.indexOf(source) !== -1 && getFundingConfig(source, 'allowOptOut')) {\n return FUNDING_ELIGIBILITY_REASON.OPT_OUT;\n }\n\n if (funding.disallowed.indexOf(source) !== -1 && source === FUNDING.VENMO) {\n return FUNDING_ELIGIBILITY_REASON.OPT_OUT;\n }\n if (funding.disallowed.indexOf(source) !== -1 && source === FUNDING.ITAU) {\n return FUNDING_ELIGIBILITY_REASON.OPT_OUT;\n }\n\n if (getFundingConfig(source, 'allowedCountries', [ locale.country ]).indexOf(locale.country) === -1) {\n return FUNDING_ELIGIBILITY_REASON.DISALLOWED_COUNTRY;\n }\n\n if (getFundingConfig(source, 'requireCommitAsTrue') && !commit) {\n return FUNDING_ELIGIBILITY_REASON.COMMIT_NOT_SET;\n }\n\n const allowedEnvs = getFundingConfig(source, 'allowedEnvs');\n if (allowedEnvs && allowedEnvs.indexOf(env) === -1) {\n return FUNDING_ELIGIBILITY_REASON.INVALID_ENV;\n }\n}\n\nexport function isFundingAutoEligible(source : FundingSource, { locale, funding, layout } :\n { locale : LocaleType, funding : FundingSelection, layout : string }) : ?string {\n\n const isVertical = layout === BUTTON_LAYOUT.VERTICAL;\n\n if (isVertical && getFundingConfig(source, 'defaultVerticalCountries', []).indexOf(locale.country) !== -1) {\n return FUNDING_ELIGIBILITY_REASON.DEFAULT_COUNTRY;\n }\n\n if (getFundingConfig(source, 'default')) {\n return FUNDING_ELIGIBILITY_REASON.DEFAULT;\n }\n\n if (funding.allowed.indexOf(source) !== -1 && getFundingConfig(source, 'allowOptIn')) {\n return FUNDING_ELIGIBILITY_REASON.OPT_IN;\n }\n\n if (funding.remembered.indexOf(source) !== -1 && getFundingConfig(source, 'allowRemember')) {\n return FUNDING_ELIGIBILITY_REASON.REMEMBERED;\n }\n}\n\nexport function isFundingEligible(source : FundingSource, { locale, funding, env, layout, selected, commit } :\n { locale : LocaleType, funding : FundingSelection, env : string, layout : string, selected? : string, commit : boolean }) : { eligible : boolean, reason : string } {\n\n if (selected && source === selected) {\n return { eligible: true, reason: FUNDING_ELIGIBILITY_REASON.PRIMARY };\n }\n\n if (!getFundingConfig(source, 'enabled')) {\n if (!(env === ENV.TEST && getFundingConfig(source, 'test'))) {\n return { eligible: false, reason: FUNDING_ELIGIBILITY_REASON.NOT_ENABLED };\n }\n }\n\n const ineligibleReason = isFundingIneligible(source, { locale, funding, layout, commit, env });\n\n if (ineligibleReason) {\n return { eligible: false, reason: ineligibleReason };\n }\n\n const autoEligibleReason = isFundingAutoEligible(source, { locale, funding, layout });\n\n if (autoEligibleReason) {\n return { eligible: true, reason: autoEligibleReason };\n }\n\n return { eligible: false, reason: FUNDING_ELIGIBILITY_REASON.NEED_OPT_IN };\n}\n\nexport function determineEligibleFunding({ funding, selected, locale, env, layout, commit } :\n { funding : FundingSelection, selected : FundingSource, locale : LocaleType, env : string, layout : string, commit : boolean }) : FundingList {\n\n const reasons = {};\n\n const eligibleFunding = FUNDING_PRIORITY.filter(source => {\n const { eligible, reason } = isFundingEligible(source, { selected, locale, funding, env, layout, commit });\n reasons[source] = { eligible, reason, factors: { env, locale, layout } };\n return eligible;\n });\n\n fundingEligibilityReasons.push(reasons);\n\n eligibleFunding.splice(eligibleFunding.indexOf(selected), 1);\n eligibleFunding.unshift(selected);\n\n return eligibleFunding;\n}\n\nexport function determineEligibleCards({ funding, locale } :\n { funding : FundingSelection, locale : LocaleType }) : FundingList {\n\n return getCardConfig(locale.country, 'priority')\n .filter(card => funding.disallowed.indexOf(card) === -1);\n}\n\nexport function validateFunding(funding : FundingSelection = { allowed: [], disallowed: [], remembered: [] }) {\n\n if (funding.allowed) {\n for (const source of funding.allowed) {\n if (CARD_PRIORITY.indexOf(source) !== -1) {\n continue;\n }\n\n if (!FUNDING_CONFIG.hasOwnProperty(source)) {\n throw new Error(`Invalid funding source: ${ source }`);\n }\n\n if (!getFundingConfig(source, 'allowOptIn')) {\n throw new Error(`Can not allow funding source: ${ source }`);\n }\n\n if (funding.disallowed && funding.disallowed.indexOf(source) !== -1) {\n throw new Error(`Can not allow and disallow funding source: ${ source }`);\n }\n }\n }\n\n if (funding.disallowed) {\n for (const source of funding.disallowed) {\n if (CARD_PRIORITY.indexOf(source) !== -1) {\n continue;\n }\n\n if (!FUNDING_CONFIG.hasOwnProperty(source)) {\n throw new Error(`Invalid funding source: ${ source }`);\n }\n\n if (!getFundingConfig(source, 'allowOptOut')) {\n throw new Error(`Can not disallow funding source: ${ source }`);\n }\n }\n }\n}\n\nexport function logFundingEligibility() {\n fundingEligibilityReasons.forEach((reasons, i) => {\n console.log(`\\nButton ${ i + 1 }:\\n`); // eslint-disable-line no-console\n\n console.table(Object.keys(reasons).map(source => { // eslint-disable-line no-console, compat/compat\n const { reason, eligible, factors } = reasons[source];\n\n return {\n 'Funding': source,\n 'Reason': reason,\n 'Eligibility': eligible ? 'eligible' : 'ineligible',\n 'Factors': JSON.stringify(factors)\n };\n }));\n });\n}\n","/* @flow */\n/* eslint no-template-curly-in-string: off, max-lines: off */\n\nimport { FUNDING, DEFAULT, COUNTRY, BUTTON_LABEL, BUTTON_COLOR, BUTTON_LOGO_COLOR, BUTTON_SIZE,\n BUTTON_TAGLINE_COLOR, BUTTON_SHAPE, BUTTON_LAYOUT, BUTTON_LOGO } from '../constants';\n\ntype ButtonConfig = {\n [ string ] : {\n colors? : $ReadOnlyArray<$Values>\n }\n};\n\nexport const BUTTON_CONFIG : ButtonConfig = {\n\n [ DEFAULT ]: {\n\n colors: [\n BUTTON_COLOR.GOLD,\n BUTTON_COLOR.BLUE,\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n sizes: [\n BUTTON_SIZE.SMALL,\n BUTTON_SIZE.MEDIUM,\n BUTTON_SIZE.LARGE,\n BUTTON_SIZE.RESPONSIVE\n ],\n\n shapes: [\n BUTTON_SHAPE.PILL,\n BUTTON_SHAPE.RECT\n ],\n\n layouts: [\n BUTTON_LAYOUT.HORIZONTAL,\n BUTTON_LAYOUT.VERTICAL\n ],\n\n logoColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_LOGO_COLOR.BLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLUE\n },\n\n tagLineColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_TAGLINE_COLOR.BLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_TAGLINE_COLOR.BLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_TAGLINE_COLOR.BLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_TAGLINE_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_TAGLINE_COLOR.BLUE\n\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n tag: `{ content: safer_tag }`,\n dualTag: `{ content: dual_tag|safer_tag }`,\n\n defaultLocale: `en_US`,\n defaultLabel: BUTTON_LABEL.CHECKOUT,\n defaultVerticalLabel: BUTTON_LABEL.PAYPAL,\n defaultColor: BUTTON_COLOR.GOLD,\n defaultSize: BUTTON_SIZE.SMALL,\n defaultVerticalSize: BUTTON_SIZE.MEDIUM,\n defaultShape: BUTTON_SHAPE.PILL,\n defaultLayout: BUTTON_LAYOUT.HORIZONTAL,\n defaultBranding: true,\n defaultVerticalBranding: true,\n defaultFundingIcons: false,\n defaultTagline: true,\n defaultDual: ``,\n\n minimumSize: BUTTON_SIZE.TINY,\n minimumVerticalSize: BUTTON_SIZE.MEDIUM,\n\n maximumSize: BUTTON_SIZE.HUGE,\n maximumVerticalSize: BUTTON_SIZE.HUGE,\n\n minHorizontalButtons: 1,\n minVerticalButtons: 1,\n\n maxHorizontalButtons: 2,\n maxVerticalButtons: 6,\n\n allowUnbranded: false,\n allowFundingIcons: true,\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.PAYPAL ]: {\n label: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n allowPrimary: true,\n\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true\n },\n\n [ BUTTON_LABEL.CHECKOUT ]: {\n label: `{ content: checkout }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n allowPrimary: true,\n\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true\n },\n\n [ BUTTON_LABEL.PAY ]: {\n label: `{ content: pay }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n allowPrimary: true,\n\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true\n },\n\n [ BUTTON_LABEL.BUYNOW ]: {\n label: `{ content: buynow }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n defaultBranding: undefined,\n\n allowPrimary: true,\n\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true,\n\n allowUnbranded: true\n },\n\n [ BUTTON_LABEL.INSTALLMENT ]: {\n label: (style) => { return `{ content: ${ style.installmentperiod ? 'installment_period' : 'installment' } }`; },\n logoLabel: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n allowPrimary: true,\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true,\n allowSecondaryVertical: false,\n allowSecondaryHorizontal: false\n },\n\n [ BUTTON_LABEL.CREDIT ]: {\n label: ({ locale }) => {\n if (locale.country === COUNTRY.DE) {\n return `{ logo: ${ BUTTON_LOGO.CREDIT } }`;\n }\n\n return `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } } { logo: ${ BUTTON_LOGO.CREDIT } }`;\n },\n logoLabel: ({ locale }) => {\n if (locale.country === COUNTRY.DE) {\n return `{ logo: ${ BUTTON_LOGO.CREDIT } }`;\n }\n\n return `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } } { logo: ${ BUTTON_LOGO.CREDIT } }`;\n },\n\n tag: `{ content: later_tag }`,\n\n colors: [\n BUTTON_COLOR.DARKBLUE,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLUE\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n defaultColor: BUTTON_COLOR.DARKBLUE,\n\n allowPrimary: true,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false,\n\n allowFundingIcons: false\n },\n\n [ BUTTON_LABEL.VENMO ]: {\n label: `{ logo: ${ BUTTON_LOGO.VENMO } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.VENMO } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.BLUE,\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.BLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLUE\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: true,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: true\n },\n [ BUTTON_LABEL.ITAU ]: {\n label: `{ logo: ${ BUTTON_LOGO.ITAU } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.ITAU } }`,\n\n defaultColor: BUTTON_COLOR.DARKBLUE,\n\n colors: [\n BUTTON_COLOR.DARKBLUE,\n BUTTON_COLOR.BLUE,\n BUTTON_COLOR.BLACK\n ],\n\n logoColors: {\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.DARKBLUE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: true\n },\n\n [ BUTTON_LABEL.IDEAL ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.IDEAL } } Online betalen`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.IDEAL } } Online betalen`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.ELV ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.ELV } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.ELV } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.BANCONTACT ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.BANCONTACT } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.BANCONTACT } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.GIROPAY ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.GIROPAY } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.GIROPAY } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.SOFORT ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.SOFORT } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.SOFORT } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.EPS ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.EPS } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.EPS } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.MYBANK ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.MYBANK } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.MYBANK } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.P24 ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.P24 } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.P24 } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.PAYU ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.PAYU } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PAYU } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.VERKKOPANKKI ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.VERKKOPANKKI } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.VERKKOPANKKI } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.BLIK ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.BLIK } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.BLIK } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.TRUSTLY ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.TRUSTLY } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.TRUSTLY } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.MAXIMA ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.MAXIMA } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.MAXIMA } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.BOLETO ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.BOLETO } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.BOLETO } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.OXXO ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.OXXO } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.OXXO } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.CARD ]: {\n\n label: `{ cards }`,\n logoLabel: `{ cards }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.TRANSPARENT\n ],\n\n logoColors: {\n [ BUTTON_COLOR.TRANSPARENT ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.TRANSPARENT\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n }\n};\n\nexport const FUNDING_TO_DEFAULT_LABEL = {\n [ FUNDING.PAYPAL ]: BUTTON_LABEL.PAYPAL,\n [ FUNDING.VENMO ]: BUTTON_LABEL.VENMO,\n [ FUNDING.ITAU ]: BUTTON_LABEL.ITAU,\n [ FUNDING.CARD ]: BUTTON_LABEL.CARD,\n [ FUNDING.CREDIT ]: BUTTON_LABEL.CREDIT,\n [ FUNDING.IDEAL ]: BUTTON_LABEL.IDEAL,\n [ FUNDING.ELV ]: BUTTON_LABEL.ELV,\n [ FUNDING.BANCONTACT ]: BUTTON_LABEL.BANCONTACT,\n [ FUNDING.GIROPAY ]: BUTTON_LABEL.GIROPAY,\n [ FUNDING.SOFORT ]: BUTTON_LABEL.SOFORT,\n [ FUNDING.EPS ]: BUTTON_LABEL.EPS,\n [ FUNDING.P24 ]: BUTTON_LABEL.P24,\n [ FUNDING.MYBANK ]: BUTTON_LABEL.MYBANK,\n [ FUNDING.PAYU ]: BUTTON_LABEL.PAYU,\n [ FUNDING.VERKKOPANKKI]: BUTTON_LABEL.VERKKOPANKKI,\n [ FUNDING.BLIK ]: BUTTON_LABEL.BLIK,\n [ FUNDING.TRUSTLY ]: BUTTON_LABEL.TRUSTLY,\n [ FUNDING.MAXIMA ]: BUTTON_LABEL.MAXIMA,\n [ FUNDING.BOLETO ]: BUTTON_LABEL.BOLETO,\n [ FUNDING.OXXO ]: BUTTON_LABEL.OXXO\n};\n\nexport const LABEL_TO_FUNDING = {\n [ BUTTON_LABEL.PAYPAL ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.CHECKOUT ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.PAY ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.BUYNOW ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.INSTALLMENT ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.CARD ]: FUNDING.CARD,\n [ BUTTON_LABEL.CREDIT ]: FUNDING.CREDIT,\n [ BUTTON_LABEL.VENMO ]: FUNDING.VENMO,\n [ BUTTON_LABEL.ITAU ]: FUNDING.ITAU,\n [ BUTTON_LABEL.IDEAL ]: FUNDING.IDEAL,\n [ BUTTON_LABEL.BANCONTACT]: FUNDING.BANCONTACT,\n [ BUTTON_LABEL.GIROPAY]: FUNDING.GIROPAY,\n [ BUTTON_LABEL.EPS ]: FUNDING.EPS,\n [ BUTTON_LABEL.SOFORT ]: FUNDING.SOFORT,\n [ BUTTON_LABEL.P24 ]: FUNDING.P24,\n [ BUTTON_LABEL.MYBANK ]: FUNDING.MYBANK,\n [ BUTTON_LABEL.PAYU ]: FUNDING.PAYU,\n [ BUTTON_LABEL.VERKKOPANKKI ]: FUNDING.VERKKOPANKKI,\n [ BUTTON_LABEL.BLIK ]: FUNDING.BLIK,\n [ BUTTON_LABEL.TRUSTLY ]: FUNDING.TRUSTLY,\n [ BUTTON_LABEL.MAXIMA ]: FUNDING.MAXIMA,\n [ BUTTON_LABEL.BOLETO ]: FUNDING.BOLETO,\n [ BUTTON_LABEL.OXXO ]: FUNDING.OXXO\n};\n\nexport const BUTTON_RELATIVE_STYLE = {\n FUNDINGICONS: 100,\n TAGLINE: 50,\n VERTICAL_MARGIN: 30\n};\n\nexport const BUTTON_STYLE = {\n\n [ BUTTON_SIZE.TINY ]: {\n defaultWidth: 75,\n defaultHeight: 25,\n minWidth: 75,\n maxWidth: 150,\n minHeight: 25,\n maxHeight: 30,\n buttonTextMargin: 0.5,\n allowFunding: true,\n allowTagline: false,\n byPayPalHeight: 0\n },\n\n [ BUTTON_SIZE.SMALL ]: {\n defaultWidth: 150,\n defaultHeight: 25,\n minWidth: 150,\n maxWidth: 200,\n minHeight: 25,\n maxHeight: 55,\n buttonTextMargin: 0.5,\n allowFunding: true,\n allowTagline: true,\n byPayPalHeight: 0\n },\n\n [ BUTTON_SIZE.MEDIUM ]: {\n defaultWidth: 250,\n defaultHeight: 35,\n minWidth: 200,\n maxWidth: 300,\n minHeight: 35,\n maxHeight: 55,\n buttonTextMargin: 1,\n allowFunding: true,\n allowTagline: true,\n byPayPalHeight: 30\n },\n\n [ BUTTON_SIZE.LARGE ]: {\n defaultWidth: 350,\n defaultHeight: 45,\n minWidth: 300,\n maxWidth: 500,\n minHeight: 30,\n maxHeight: 55,\n buttonTextMargin: 1,\n allowFunding: true,\n allowTagline: true,\n byPayPalHeight: 30\n },\n\n [ BUTTON_SIZE.HUGE ]: {\n defaultWidth: 500,\n defaultHeight: 55,\n minWidth: 500,\n maxWidth: 750,\n minHeight: 40,\n maxHeight: 55,\n buttonTextMargin: 1.25,\n allowFunding: true,\n allowTagline: true,\n byPayPalHeight: 30\n }\n};\n\nexport function labelToFunding(label : ?string) : string {\n return label ? LABEL_TO_FUNDING[label] : FUNDING.PAYPAL;\n}\n\nexport function fundingToDefaultLabel(funding : string) : $Values {\n return FUNDING_TO_DEFAULT_LABEL[funding];\n}\n\nfunction getConfig(conf : Object, category : string, key : string, def : ?T) : T {\n const categoryConfig = conf[category];\n\n if (categoryConfig && categoryConfig.hasOwnProperty(key)) {\n return categoryConfig[key];\n }\n\n if (conf[DEFAULT] && conf[DEFAULT].hasOwnProperty(key)) {\n return conf[DEFAULT][key];\n }\n\n if (arguments.length >= 4) {\n // $FlowFixMe\n return def;\n }\n\n throw new Error(`No value found for ${ category }:${ key }`);\n}\n\nexport function getButtonConfig(label : string, key : string, def : ?T) : T {\n return getConfig(BUTTON_CONFIG, label, key, def);\n}\n","/* @flow */\n\nimport { BUTTON_LAYOUT, BUTTON_STYLE_OPTIONS, BUTTON_LABEL, BUTTON_COLOR, BUTTON_SIZE, BUTTON_SHAPE } from '../constants';\nimport { determineEligibleFunding, determineEligibleCards } from '../funding';\nimport { memoize, sortBy } from '../lib/util';\nimport type { LocaleType, FundingSelection, FundingList, CheckoutCustomizationType } from '../types';\nimport { FUNDING_ORDER } from '../funding/config';\n\nimport { getButtonConfig, labelToFunding } from './config';\n\nfunction parseLocale(locale : string) : LocaleType {\n const [ lang, country ] = locale.split('_');\n return { country, lang };\n}\n\nexport function determineMaxButtons({ label, layout, max } : { layout : string, label : string, max : number }) : number {\n\n const allowed = (layout === BUTTON_LAYOUT.HORIZONTAL)\n ? getButtonConfig(label, 'allowPrimaryHorizontal')\n : getButtonConfig(label, 'allowPrimaryVertical');\n\n if (!allowed) {\n return 1;\n }\n\n const configMax = (layout === BUTTON_LAYOUT.HORIZONTAL)\n ? getButtonConfig(label, 'maxHorizontalButtons')\n : getButtonConfig(label, 'maxVerticalButtons');\n\n return max\n ? Math.min(configMax, max)\n : configMax;\n}\n\nfunction enableTagline({ tagline, branding, fundingicons, layout }) : boolean {\n return Boolean(tagline && branding && !fundingicons && layout === BUTTON_LAYOUT.HORIZONTAL);\n}\n\ntype NormalizedProps = {|\n size : $Values,\n label : $Values,\n color : $Values,\n shape : $Values,\n locale : LocaleType,\n branding : boolean,\n fundingicons : boolean,\n tagline : boolean,\n funding : FundingSelection,\n layout : $Values,\n sources : FundingList,\n max : number,\n multiple : boolean,\n env : string,\n height : ?number,\n cards : $ReadOnlyArray,\n installmentperiod : number,\n checkoutCustomization : ?CheckoutCustomizationType\n|};\n\nexport const normalizeProps = memoize((props : Object, defs? : { locale? : LocaleType } = {}) : NormalizedProps => {\n\n let {\n env,\n locale,\n style = {},\n funding,\n commit,\n checkoutCustomization\n } = props;\n\n locale = locale ? parseLocale(locale) : (defs.locale || getButtonConfig('DEFAULT', 'defaultLocale'));\n \n // funding indicated the allowed/disallowed payment methods (including cards) passed in the integration script\n // $FlowFixMe\n funding = funding || {};\n funding.allowed = funding.allowed || [];\n funding.disallowed = funding.disallowed || [];\n funding.remembered = funding.remembered || [];\n \n const label = style[BUTTON_STYLE_OPTIONS.LABEL] || getButtonConfig('DEFAULT', (style.layout === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalLabel' : 'defaultLabel');\n const layout = style[BUTTON_STYLE_OPTIONS.LAYOUT] || getButtonConfig(label, 'defaultLayout');\n\n let {\n [ BUTTON_STYLE_OPTIONS.SIZE ]: size = getButtonConfig(label, (layout === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalSize' : 'defaultSize'),\n [ BUTTON_STYLE_OPTIONS.COLOR ]: color = getButtonConfig(label, 'defaultColor'),\n [ BUTTON_STYLE_OPTIONS.SHAPE ]: shape = getButtonConfig(label, 'defaultShape'),\n [ BUTTON_STYLE_OPTIONS.BRANDING ]: branding = getButtonConfig(label, (layout === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalBranding' : 'defaultBranding'),\n [ BUTTON_STYLE_OPTIONS.FUNDINGICONS ]: fundingicons = getButtonConfig(label, 'defaultFundingIcons'),\n [ BUTTON_STYLE_OPTIONS.TAGLINE ]: tagline = getButtonConfig(label, 'defaultTagline'),\n [ BUTTON_STYLE_OPTIONS.MAXBUTTONS ]: max,\n [ BUTTON_STYLE_OPTIONS.HEIGHT ]: height,\n [ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD ]: installmentperiod\n } = style;\n\n // max is the maximum number of buttons to be displayed in the iframe\n max = determineMaxButtons({ label, layout, max });\n\n const selected = labelToFunding(label);\n let sources = determineEligibleFunding({ funding, selected, locale, env, layout, commit });\n // sources is an array of funding sources eligible to be displayed\n sources = sortBy(sources.slice(0, max), FUNDING_ORDER);\n // multiple is a boolean value indicating whether the sources is greater than 1\n const multiple = sources.length > 1;\n\n if (multiple) {\n branding = true;\n }\n\n tagline = enableTagline({ tagline, branding, fundingicons, layout });\n\n const cards = determineEligibleCards({ funding, locale });\n \n return { size, label, locale, color, shape, branding, fundingicons,\n tagline, funding, layout, sources, max, multiple, env, height, cards, installmentperiod, checkoutCustomization };\n});\n","/* @flow */\n\nimport { BUTTON_LABEL, BUTTON_LAYOUT, BUTTON_SIZE, BUTTON_STYLE_OPTIONS, ALLOWED_INSTALLMENT_COUNTRIES, ALLOWED_INSTALLMENT_PERIOD, LOCALE } from '../constants';\n\nimport { BUTTON_CONFIG, BUTTON_STYLE, getButtonConfig } from './config';\n\nexport function validateButtonLocale(locale : string) {\n\n if (!locale) {\n throw new Error(`Expected props.locale to be set`);\n }\n\n if (!locale.match(/^[a-z]{2}[_][A-Z][A-Z0-9]$/)) {\n throw new Error(`Expected props.locale to be valid, got ${ locale }`);\n }\n\n const [ lang, country ] = locale.split('_');\n\n if (!LOCALE[country] || LOCALE[country].indexOf(lang) === -1) {\n throw new Error(`Expected props.locale to be valid`);\n }\n}\n\nexport function validateRegionSpecificButton(style : Object = {}, locale : string = 'en_US') {\n\n const country = locale.split('_')[1];\n\n const isInstallmentAllowedCountry = ALLOWED_INSTALLMENT_COUNTRIES.indexOf(country) !== -1;\n\n if (!isInstallmentAllowedCountry && style.label === BUTTON_LABEL.INSTALLMENT) {\n throw new Error(`Unexpected label: style.${ style.label } for country: ${ country }`);\n }\n\n if (!isInstallmentAllowedCountry && style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD]) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD } is invalid for country: ${ country }`);\n }\n\n if (isInstallmentAllowedCountry && style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD] && style.label !== BUTTON_LABEL.INSTALLMENT) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD } is invalid for label: style.${ style.label }`);\n }\n\n if (isInstallmentAllowedCountry && style.label === BUTTON_LABEL.INSTALLMENT && style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD]\n && typeof style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD] !== 'number') {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD } is expected to be a number`);\n }\n\n if (isInstallmentAllowedCountry && style.label === BUTTON_LABEL.INSTALLMENT && style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD]\n && ALLOWED_INSTALLMENT_PERIOD[country].indexOf(style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD]) === -1) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD }: ${ style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD] } is not a valid installment number for ${ style.label }`);\n }\n\n}\n\nexport function validateButtonStyle(style : Object = {}, props : Object) {\n\n if (!style) {\n throw new Error(`Expected props.style to be set`);\n }\n\n const label = style[BUTTON_STYLE_OPTIONS.LABEL] || getButtonConfig('DEFAULT', (style[BUTTON_STYLE_OPTIONS.LAYOUT] === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalLabel' : 'defaultLabel');\n\n if (!BUTTON_CONFIG[label]) {\n throw new Error(`Invalid button label: ${ label }, expected: ${ Object.keys(BUTTON_CONFIG[label]).join(', ') }`);\n }\n\n const {\n [ BUTTON_STYLE_OPTIONS.COLOR ]: color,\n [ BUTTON_STYLE_OPTIONS.SHAPE ]: shape,\n [ BUTTON_STYLE_OPTIONS.SIZE ]: size,\n [ BUTTON_STYLE_OPTIONS.BRANDING ]: branding,\n [ BUTTON_STYLE_OPTIONS.FUNDINGICONS ]: fundingicons,\n [ BUTTON_STYLE_OPTIONS.TAGLINE ]: tagline,\n [ BUTTON_STYLE_OPTIONS.LAYOUT ]: layout,\n [ BUTTON_STYLE_OPTIONS.MAXBUTTONS ]: maxbuttons,\n [ BUTTON_STYLE_OPTIONS.HEIGHT ]: height\n } = style;\n\n if (color && getButtonConfig(label, 'colors').indexOf(color) === -1) {\n throw new Error(`Unexpected style.${ BUTTON_STYLE_OPTIONS.COLOR } for ${ label } button: ${ color }, expected ${ getButtonConfig(label, 'colors').join(', ') }`);\n }\n\n if (shape && getButtonConfig(label, 'shapes').indexOf(shape) === -1) {\n throw new Error(`Unexpected style.${ BUTTON_STYLE_OPTIONS.SHAPE } for ${ label } button: ${ shape }, expected ${ getButtonConfig(label, 'shapes').join(', ') }`);\n }\n\n if (size && getButtonConfig(label, 'sizes').indexOf(size) === -1) {\n throw new Error(`Unexpected style.${ BUTTON_STYLE_OPTIONS.SIZE } for ${ label } button: ${ size }, expected ${ getButtonConfig(label, 'sizes').join(', ') }`);\n }\n\n if (branding === false) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.BRANDING }:false is not allowed`);\n }\n\n if (fundingicons && !getButtonConfig(label, 'allowFundingIcons')) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.FUNDINGICONS }:true is not allowed for ${ label } button`);\n }\n\n if (layout && getButtonConfig(label, 'layouts').indexOf(layout) === -1) {\n throw new Error(`Unexpected style.${ BUTTON_STYLE_OPTIONS.LAYOUT } for ${ label } button: ${ layout }, expected ${ getButtonConfig(label, 'layouts').join(', ') }`);\n }\n\n if (maxbuttons !== undefined) {\n if (typeof maxbuttons !== 'number') {\n throw new TypeError(`Expected style.${ BUTTON_STYLE_OPTIONS.MAXBUTTONS } to be a number, got: ${ maxbuttons }`);\n }\n\n if (maxbuttons < 1) {\n throw new Error(`Expected style.${ BUTTON_STYLE_OPTIONS.MAXBUTTONS } to be a at least 1, got: ${ maxbuttons }`);\n }\n\n const minButtons = (layout === BUTTON_LAYOUT.VERTICAL)\n ? getButtonConfig(label, 'minVerticalButtons')\n : getButtonConfig(label, 'minHorizontalButtons');\n\n if (maxbuttons < minButtons) {\n throw new Error(`Expected style.${ BUTTON_STYLE_OPTIONS.MAXBUTTONS } to be no fewer than ${ minButtons }, got ${ maxbuttons }`);\n }\n }\n\n if (height !== undefined) {\n if (typeof height !== 'number') {\n throw new TypeError(`Expected style.${ BUTTON_STYLE_OPTIONS.HEIGHT } to be a number, got: ${ maxbuttons }`);\n }\n\n const buttonSize = size || getButtonConfig(label, (style.layout === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalSize' : 'defaultSize');\n\n const { minHeight, maxHeight } = (size === BUTTON_SIZE.RESPONSIVE) ? {\n minHeight: BUTTON_STYLE[BUTTON_SIZE.SMALL].minHeight,\n maxHeight: BUTTON_STYLE[BUTTON_SIZE.HUGE].maxHeight\n } : BUTTON_STYLE[buttonSize];\n\n if (height < minHeight || height > maxHeight) {\n throw new Error(`Expected style.${ BUTTON_STYLE_OPTIONS.HEIGHT } to be between ${ minHeight }px and ${ maxHeight }px - got ${ height }px`);\n }\n }\n\n if (!getButtonConfig(label, 'allowPrimary')) {\n throw new Error(`${ label } can not be used as primary button label`);\n }\n\n if (layout === BUTTON_LAYOUT.VERTICAL) {\n\n if (size && [ BUTTON_SIZE.MEDIUM, BUTTON_SIZE.LARGE, BUTTON_SIZE.RESPONSIVE ].indexOf(size) === -1) {\n throw new Error(`Button must be at least ${ BUTTON_SIZE.MEDIUM } size for ${ BUTTON_LAYOUT.VERTICAL } layout`);\n }\n\n if (!getButtonConfig(label, 'allowPrimaryVertical')) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.LABEL } option is not allowed for ${ BUTTON_LAYOUT.VERTICAL } layout - got ${ label }`);\n }\n\n if (fundingicons) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.FUNDINGICONS } not allowed for ${ BUTTON_LAYOUT.VERTICAL } layout - got ${ fundingicons }`);\n }\n\n if (tagline) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.TAGLINE } is not allowed for ${ BUTTON_LAYOUT.VERTICAL } layout - got ${ tagline }`);\n }\n }\n\n validateRegionSpecificButton(style, props.locale);\n}\n\nexport function validateButtonProps(props : Object) {\n\n if (!props) {\n throw new Error(`Expected props`);\n }\n\n const { locale, style } = props;\n\n validateButtonLocale(locale);\n validateButtonStyle(style, props);\n}\n","/* @flow */\n\nexport const CLASS = {\n SHOULD_FOCUS: 'paypal-should-focus',\n\n CONTAINER: 'paypal-button-container',\n BUTTON: 'paypal-button',\n \n BUTTON_LABEL: 'paypal-button-label-container',\n\n LABEL: 'paypal-button-label',\n COLOR: 'paypal-button-color',\n LOGO_COLOR: 'paypal-button-logo-color',\n SHAPE: 'paypal-button-shape',\n BRANDING: 'paypal-button-branding',\n LAYOUT: 'paypal-button-layout',\n NUMBER: 'paypal-button-number',\n ENV: 'paypal-button-env',\n\n TAGLINE: 'paypal-button-tagline',\n TAGLINE_COLOR: 'paypal-button-tagline-color',\n FUNDINGICONS: 'paypal-button-fundingicons',\n\n TEXT: 'paypal-button-text',\n LOGO: 'paypal-button-logo',\n CARD: 'paypal-button-card',\n\n SEPARATOR: 'paypal-separator',\n HIDDEN: 'hidden',\n DOM_READY: 'dom-ready',\n \n PERSONALIZATION_TEXT: 'personalization-text'\n};\n","/* @flow */\n\nimport { CLASS } from './class';\n\nexport const pageStyle = `\n html, body {\n padding: 0;\n margin: 0;\n width: 100%;\n overflow: hidden;\n text-align: center;\n }\n\n body {\n display: inline-block;\n vertical-align: top;\n }\n\n * {\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -khtml-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n cursor: default;\n box-sizing: border-box;\n }\n \n .${ CLASS.HIDDEN } {\n position: absolute;\n visibility: hidden;\n }\n`;\n","/* @flow */\n\nimport { BUTTON_COLOR, ENV } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const buttonStyle = `\n\n .${ CLASS.CONTAINER } {\n display: block;\n white-space: nowrap;\n margin: 0;\n background: 0;\n border: 0;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n text-transform: none;\n font-weight: 500;R\n -webkit-font-smoothing: antialiased;\n font-smoothing: antialiased;\n z-index: 0;\n font-size: 0;\n width: 100%;\n box-sizing: border-box;\n }\n\n .${ CLASS.BUTTON }:not(.${ CLASS.CARD }) {\n border: 1px solid transparent;\n border-radius: 0 3px 3px 0;\n position: relative;\n width: 100%;\n box-sizing: border-box;\n border: none;\n vertical-align: top;\n cursor: pointer;\n outline: none;\n overflow: hidden;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.TRANSPARENT } {\n cursor: auto;\n }\n\n .${ CLASS.BUTTON } * {\n cursor: pointer;\n }\n\n .${ CLASS.CONTAINER }.${ CLASS.ENV }-${ ENV.TEST } .${ CLASS.TEXT } {\n font-family: Arial !important;\n background: rgba(0, 0, 0, 0.5) !important;\n color: transparent !important;\n text-shadow: none !important;\n }\n\n .${ CLASS.BUTTON }:hover {\n box-shadow: inset 0 0 100px 100px rgba(255, 255, 255, 0.2);\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.GOLD }:hover,\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.SILVER }:hover {\n box-shadow: inset 0 0 100px 100px rgba(0, 0, 0, 0.05);\n }\n\n .${ CLASS.CARD }, .${ CLASS.CARD } * {\n cursor: pointer;\n }\n\n .${ CLASS.CARD }:hover {\n filter: brightness(1.2);\n }\n\n .${ CLASS.BUTTON }:focus, .${ CLASS.CARD }:focus {\n outline: none;\n }\n\n .${ CLASS.SHOULD_FOCUS } .${ CLASS.BUTTON }:focus,\n .${ CLASS.SHOULD_FOCUS } .${ CLASS.CARD }:focus {\n outline: solid 2px Highlight;\n outline: auto 5px -webkit-focus-ring-color;\n outline-offset: -3px;\n }\n\n .${ CLASS.BUTTON }:focus {\n box-shadow: -1px -1px 18px 1px rgba(0, 0, 0, 0.25) inset;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.TRANSPARENT }:focus {\n box-shadow: none;\n outline: none;\n }\n\n .${ CLASS.LOGO } {\n padding: 0;\n display: inline-block;\n background: none;\n border: none;\n width: auto;\n }\n\n .${ CLASS.TEXT } {\n display: inline-block;\n white-space: pre;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.BUTTON_LABEL } {\n position: relative;\n top: 50%;\n transform: translateY(-50%);\n -webkit-transform: translateY(-50%);\n -moz-transform: translateY(-50%);\n -ms-transform: translateY(-50%);\n -o-transform: translateY(-50%);\n }\n \n .${ CLASS.BUTTON } > .${ CLASS.BUTTON_LABEL } > * {\n vertical-align: top;\n height: 100%;\n text-align: left;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.CARD } {\n border-radius: 4px;\n }\n\n .powered-by-paypal > .${ CLASS.TEXT } {\n vertical-align: top;\n line-height: 18px;\n }\n\n .powered-by-paypal > .${ CLASS.LOGO } {\n height: 16px;\n min-height: 16px;\n }\n\n .${ CLASS.TAGLINE } {\n max-width: 100%;\n font-weight: normal;\n display: block;\n text-align: center;\n width: auto;\n }\n\n .${ CLASS.SEPARATOR } {\n height: 80%;\n border-left: 1px solid rgba(0, 0, 0, 0.15);\n margin: 0 8px;\n display: inline-block;\n position: relative;\n top: 10%;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.BLACK } .${ CLASS.SEPARATOR } {\n border-color: rgba(255, 255, 255, 0.45);\n }\n`;\n","/* @flow */\n\nimport { BUTTON_LAYOUT } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const layoutStyle = `\n\n .${ CLASS.CONTAINER }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.VERTICAL } .${ CLASS.TAGLINE } {\n display: none;\n }\n`;\n","/* @flow */\n\nimport { BUTTON_BRANDING } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const brandingStyle = `\n\n .${ CLASS.BUTTON }.${ CLASS.BRANDING }-${ BUTTON_BRANDING.UNBRANDED } {\n min-width: 60%;\n width: auto;\n font-weight: 900;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.BRANDING }-${ BUTTON_BRANDING.UNBRANDED } .${ CLASS.LOGO } {\n display: none;\n }\n`;\n","/* @flow */\n\nimport { BUTTON_STYLE } from '../../config';\nimport { BUTTON_LABEL, BUTTON_LOGO, BUTTON_SIZE, BUTTON_LAYOUT, BUTTON_NUMBER } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const labelStyle = `\n\n .${ CLASS.BUTTON }.${ CLASS.LABEL }-${ BUTTON_LABEL.CARD } {\n border-radius: 0 !important;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LABEL }-${ BUTTON_LABEL.CREDIT } .${ CLASS.TEXT } {\n display: none !important;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.LABEL }-${ BUTTON_LABEL.CREDIT } .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LOGO.PAYPAL } {\n display: none;\n }\n\n @media only screen and (max-width : ${ BUTTON_STYLE[BUTTON_SIZE.SMALL].minWidth }px) {\n\n .${ CLASS.BUTTON }.${ CLASS.LABEL }-${ BUTTON_LABEL.CREDIT } .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LOGO.PAYPAL } {\n display: none;\n }\n }\n\n @media only screen and (min-width : ${ BUTTON_STYLE[BUTTON_SIZE.SMALL].minWidth }px) {\n\n .${ CLASS.BUTTON }.${ CLASS.LABEL }-${ BUTTON_LABEL.CREDIT } .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LOGO.PAYPAL } {\n display: inline-block;\n }\n }\n`;\n","/* @flow */\n\nimport { BUTTON_BRANDING, BUTTON_SHAPE, BUTTON_LAYOUT, BUTTON_NUMBER, BUTTON_LABEL } from '../../../constants';\nimport { BUTTON_STYLE, BUTTON_RELATIVE_STYLE } from '../../config';\nimport { max, perc } from '../../../lib/util';\n\nimport { CLASS } from './class';\n\nconst DUAL_BUTTON_MIN_RATIO = 2.8;\n\nexport function buttonResponsiveStyle({ height, cardNumber = 4 } : { height? : ?number, cardNumber? : number }) : string {\n\n return Object.keys(BUTTON_STYLE).map(size => {\n\n const style = BUTTON_STYLE[size];\n const buttonHeight = height || style.defaultHeight;\n const buttonTextMarginTop = style.buttonTextMargin;\n const minDualWidth = Math.round(buttonHeight * DUAL_BUTTON_MIN_RATIO * 2);\n\n return `\n\n @media only screen and (min-width: ${ style.minWidth }px) {\n\n .${ CLASS.CONTAINER } {\n min-width: ${ style.minWidth }px;\n max-width: ${ style.maxWidth }px;\n font-size: ${ max(perc(buttonHeight, 32), 10) }px;\n }\n\n .${ CLASS.BUTTON }:not(.${ CLASS.CARD }) {\n height: ${ buttonHeight }px;\n min-height: ${ height || style.minHeight }px;\n max-height: ${ height || style.maxHeight }px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.BRANDING }-${ BUTTON_BRANDING.UNBRANDED } .${ CLASS.BUTTON_LABEL } {\n height: 100%;\n font-size: ${ max(perc(buttonHeight, 45), 10) }px;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.BUTTON_LABEL } {\n height: ${ perc(buttonHeight, 35) + 5 }px;\n max-height: ${ perc(buttonHeight, 60) }px;\n min-height: ${ perc(buttonHeight, 40) }px;\n }\n \n .${ CLASS.BUTTON } .${ CLASS.BUTTON_LABEL } .${ CLASS.TEXT } {\n margin-top: ${ buttonTextMarginTop }px;\n }\n \n .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LABEL.EPS },\n .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LABEL.MYBANK } {\n height: ${ perc(buttonHeight, 50) + 5 }px;\n max-height: ${ perc(buttonHeight, 70) }px;\n min-height: ${ perc(buttonHeight, 40) }px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.SHAPE }-${ BUTTON_SHAPE.PILL } {\n border-radius: ${ Math.ceil(buttonHeight / 2) }px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.SHAPE }-${ BUTTON_SHAPE.RECT } {\n border-radius: 4px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.VERTICAL } {\n margin-bottom: ${ perc(buttonHeight, BUTTON_RELATIVE_STYLE.VERTICAL_MARGIN) }px;\n }\n\n .${ CLASS.SEPARATOR } {\n margin: 0 ${ perc(buttonHeight, 5) }px;\n }\n\n .${ CLASS.TAGLINE } {\n display: ${ style.allowTagline ? 'block' : 'none' };\n height: ${ perc(buttonHeight, BUTTON_RELATIVE_STYLE.TAGLINE) }px;\n line-height: ${ perc(buttonHeight, BUTTON_RELATIVE_STYLE.TAGLINE) }px;\n }\n\n .${ CLASS.FUNDINGICONS } {\n display: ${ style.allowFunding ? 'block' : 'none' };\n height: ${ perc(buttonHeight, BUTTON_RELATIVE_STYLE.FUNDINGICONS) }px;\n }\n\n .${ CLASS.CARD } {\n display: inline-block;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.CARD } {\n width: ${ (90 / cardNumber).toFixed(2) }%;\n max-width: ${ perc(buttonHeight, 160) }px;\n margin-top: 0;\n margin-left: ${ (5 / cardNumber).toFixed(2) }%;\n margin-right: ${ (5 / cardNumber).toFixed(2) }%;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.CARD } img {\n width: 100%;\n }\n\n .${ CLASS.FUNDINGICONS } .${ CLASS.CARD } {\n height: ${ perc(buttonHeight, 70) }px;\n margin-top: ${ perc(buttonHeight, 15) }px;\n margin-left: ${ perc(buttonHeight, 7) }px;\n margin-right: ${ perc(buttonHeight, 7) }px;\n }\n\n .${ CLASS.FUNDINGICONS } .${ CLASS.CARD } img {\n height: 100%;\n }\n }\n\n @media only screen and (min-width: ${ style.minWidth }px) and (max-width: ${ minDualWidth }px) {\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.NUMBER }-0 {\n width: 100%;\n margin-right: 0;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.NUMBER }-1 {\n display: none;\n }\n\n .${ CLASS.CONTAINER }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE } .${ CLASS.TAGLINE } {\n display: none;\n }\n }\n\n @media only screen and (min-width: ${ max(style.minWidth, minDualWidth) }px) {\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.NUMBER }-0 {\n display: inline-block;\n width: calc(50% - 2px);\n margin-right: 4px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.NUMBER }-1 {\n display: inline-block;\n width: calc(50% - 2px);\n }\n\n .${ CLASS.CONTAINER }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE } .${ CLASS.TAGLINE } {\n display: block;\n }\n }\n `;\n\n }).join('\\n');\n}\n","/* @flow */\n\nimport { BUTTON_COLOR } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const buttonColorStyle = `\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.GOLD } {\n background: #ffc439;\n color: #111;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.BLUE } {\n background: #009cde;\n color: #fff;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.SILVER } {\n background: #eee;\n color: #111;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.BLACK } {\n background: #2C2E2F;\n color: #fff;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.DARKBLUE } {\n background: #003087;\n color: #fff;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.TRANSPARENT } {\n background: transparent;\n color: #111;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.WHITE } {\n background: #fff;\n color: #2C2E2F;\n border: 1px solid #2C2E2F;\n }\n`;\n","/* @flow */\n\nimport { pageStyle } from './page';\nimport { buttonStyle } from './button';\nimport { layoutStyle } from './layout';\nimport { brandingStyle } from './branding';\nimport { labelStyle } from './labels';\nimport { buttonResponsiveStyle } from './responsive';\nimport { buttonColorStyle } from './color';\n\nexport function componentStyle({ height, cardNumber } : { height? : ?number, cardNumber? : number }) : string {\n return `\n ${ pageStyle }\n ${ buttonStyle }\n ${ buttonColorStyle }\n ${ layoutStyle }\n ${ brandingStyle }\n ${ labelStyle }\n ${ buttonResponsiveStyle({ height, cardNumber }) }\n `;\n}\n","/* @flow */\n\nexport { componentStyle } from './base';\nexport { CLASS } from './class';\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, type JsxHTMLNode, JsxHTMLNodeContainer } from '../../lib/jsx';\n\nimport { CLASS } from './componentStyle';\n\nexport function LoadingDots(delay : number) : JsxHTMLNode {\n return (\n
\n \n {outlet}\n
\n );\n}\n","/* @flow */\n\nexport * from './componentTemplate';\nexport * from './containerTemplate';\n\n","\n/* @flow */\n\nimport { track, flush as flushLogs } from 'beaver-logger/client';\n\nimport { Checkout } from '../checkout';\nimport { setupPopupBridgeProxy } from '../integrations/popupBridge';\nimport { getPageRenderTime, setLogLevel } from '../lib';\nimport { ATTRIBUTE, FUNDING, FPTI, BUTTON_LAYOUT, BUTTON_COLOR, BUTTON_SIZE, BUTTON_SHAPE, BUTTON_LABEL } from '../constants';\n\nimport typeof { Button } from './component';\n\nexport function setupButtonChild(ButtonComponent : Button) {\n setupPopupBridgeProxy(Checkout, ButtonComponent);\n\n getPageRenderTime().then(pageRenderTime => {\n\n const fundingSources = Array.prototype.slice.call(document.querySelectorAll(`[${ ATTRIBUTE.FUNDING_SOURCE }]`)).map(el => {\n return el.getAttribute(ATTRIBUTE.CARD) || el.getAttribute(ATTRIBUTE.FUNDING_SOURCE);\n }).filter(source => {\n return source && source !== FUNDING.CARD;\n });\n\n const xprops = ButtonComponent.xprops;\n \n if (!xprops) {\n return;\n }\n\n const {\n layout = BUTTON_LAYOUT.HORIZONTAL,\n color = BUTTON_COLOR.GOLD,\n size = BUTTON_SIZE.SMALL,\n shape = BUTTON_SHAPE.PILL,\n label = BUTTON_LABEL.CHECKOUT,\n maxbuttons,\n tagline\n } = (xprops.style || {});\n\n track({\n [FPTI.KEY.STATE]: FPTI.STATE.BUTTON,\n [FPTI.KEY.TRANSITION]: FPTI.TRANSITION.BUTTON_LOAD,\n [FPTI.KEY.BUTTON_TYPE]: FPTI.BUTTON_TYPE.IFRAME,\n [FPTI.KEY.FUNDING_LIST]: fundingSources.join(':'),\n [FPTI.KEY.FUNDING_COUNT]: fundingSources.length,\n [FPTI.KEY.PAGE_LOAD_TIME]: pageRenderTime,\n [FPTI.KEY.BUTTON_LAYOUT]: layout,\n [FPTI.KEY.BUTTON_COLOR]: color,\n [FPTI.KEY.BUTTON_SIZE]: size,\n [FPTI.KEY.BUTTON_SHAPE]: shape,\n [FPTI.KEY.BUTTON_LABEL]: label,\n [FPTI.KEY.BUTTON_WIDTH]: window.innerWidth,\n [FPTI.KEY.MAX_BUTTONS]: maxbuttons,\n [FPTI.KEY.BUTTON_TAGLINE_ENABLED]: tagline ? '1' : '0'\n });\n\n flushLogs();\n });\n\n const xprops = ButtonComponent.xprops || Checkout.xprops;\n\n if (xprops && xprops.logLevel) {\n setLogLevel(xprops.logLevel);\n }\n\n // $FlowFixMe\n if (xprops.payment && !xprops.createOrder) {\n // $FlowFixMe\n xprops.createOrder = xprops.payment;\n }\n\n // $FlowFixMe\n if (xprops.onAuthorize && !xprops.onApprove) {\n // $FlowFixMe\n xprops.onApprove = xprops.onAuthorize;\n }\n\n try {\n if (xprops && xprops.onShippingChange && window.pre &&\n window.pre.inlineGuest && window.pre.inlineGuest.res &&\n window.pre.inlineGuest.res.data && window.pre.inlineGuest.res.data.treatments) {\n window.pre.inlineGuest.res.data.treatments = [];\n }\n } catch (err) {\n // pass\n }\n}\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { create } from 'zoid/src';\nimport { type Component } from 'zoid/src/component/component';\nimport { info, warn, track, error, flush as flushLogs, immediateFlush } from 'beaver-logger/client';\nimport { getDomain } from 'cross-domain-utils/src';\nimport { base64encode } from 'belter/src';\nimport { debounce, once } from 'zoid/src/lib';\n\nimport { pptm } from '../external';\nimport { config } from '../config';\nimport { SOURCE, ENV, FPTI, FUNDING, BUTTON_LABEL, BUTTON_COLOR,\n BUTTON_SIZE, BUTTON_SHAPE, BUTTON_LAYOUT, COUNTRY } from '../constants';\nimport { redirect as redir, checkRecognizedBrowser,\n getBrowserLocale, getSessionID, request, getScriptVersion,\n isIEIntranet, isEligible, getCurrentScriptUrl,\n getDomainSetting, extendUrl, isDevice, rememberFunding,\n getRememberedFunding, memoize, uniqueID, getThrottle, getBrowser } from '../lib';\nimport { rest } from '../api';\nimport { onAuthorizeListener } from '../experiments';\nimport { getPaymentType, awaitBraintreeClient,\n mapPaymentToBraintree, type BraintreePayPalClient } from '../integrations';\nimport { awaitPopupBridge } from '../integrations/popupBridge';\nimport { validateFunding, isFundingIneligible, isFundingAutoEligible } from '../funding';\n\nimport { containerTemplate, componentTemplate } from './template';\nimport { validateButtonLocale, validateButtonStyle } from './validate';\nimport { setupButtonChild } from './child';\nimport { normalizeProps } from './props';\n\npptm.listenForLoadWithNoContent();\n\nfunction isCreditDualEligible(props) : boolean {\n\n const { label, funding, layout, locale, max, sources, env } = normalizeProps(props, { locale: getBrowserLocale() });\n const { allowed } = funding;\n const { country } = locale;\n\n if (allowed && allowed.indexOf(FUNDING.CREDIT) !== -1) {\n return false;\n }\n\n if (layout !== BUTTON_LAYOUT.HORIZONTAL) {\n return false;\n }\n\n if (max === 1) {\n return false;\n }\n\n if (label === BUTTON_LABEL.CREDIT) {\n return false;\n }\n\n if (country !== COUNTRY.US) {\n return false;\n }\n\n if (isFundingIneligible(FUNDING.CREDIT, { funding, locale, layout, env })) {\n return false;\n }\n\n if (isFundingAutoEligible(FUNDING.CREDIT, { funding, locale, layout })) {\n return false;\n }\n\n if (sources.indexOf(FUNDING.CREDIT) !== -1) {\n return false;\n }\n\n const domain = getDomain().replace(/^https?:\\/\\//, '').replace(/^www\\./, '');\n\n if (config.creditTestDomains.indexOf(domain) === -1) {\n return false;\n }\n\n return true;\n}\n\nlet creditThrottle;\n\ntype ButtonOptions = {|\n style : {|\n maxbuttons? : number,\n layout? : string,\n label? : string,\n size? : string,\n shape? : string,\n color? : string,\n tagline? : boolean\n |},\n client : {\n [string] : (string | ZalgoPromise)\n },\n funding? : { allowed? : $ReadOnlyArray, disallowed? : $ReadOnlyArray },\n env? : string,\n locale? : string,\n logLevel : string,\n awaitPopupBridge : Function,\n meta : Object,\n validate? : ({ enable : () => ZalgoPromise, disable : () => ZalgoPromise }) => void,\n stage? : string,\n stageUrl? : string,\n localhostUrl? : string,\n checkoutUri? : string,\n authCode? : string,\n enableNativeCheckout? : boolean\n|};\n\nexport const Button : Component = create({\n\n tag: 'paypal-button',\n name: 'ppbutton',\n\n buildUrl(props) : string {\n const env = props.env || config.env;\n const url = config.buttonUrls[env];\n return url;\n },\n\n contexts: {\n iframe: true,\n popup: false\n },\n\n scrolling: false,\n listenForResize: true,\n\n containerTemplate,\n\n autoResize: {\n height: true,\n width: false\n },\n\n prerenderTemplate({ props, jsxDom } : { props : Object, jsxDom : Function }) : HTMLElement {\n\n const template = (\n
\n );\n\n template.addEventListener('click', () => {\n warn('button_pre_template_click');\n\n if (isIEIntranet()) {\n warn(`button_pre_template_click_intranet_mode`);\n\n flushLogs();\n\n // eslint-disable-next-line no-alert\n alert(`IE Intranet mode is not supported by PayPal. Please disable intranet mode, or continue in an alternate browser.`);\n }\n\n if (getDomainSetting('allow_full_page_fallback')) {\n info('pre_template_force_full_page');\n\n this.props.payment().then(token => {\n window.top.location = extendUrl(config.checkoutUrl, { token });\n });\n }\n });\n\n return (\n \n \n { template }\n \n \n );\n },\n\n get version() : string {\n return getScriptVersion();\n },\n\n get domain() : Object {\n return config.paypalDomains;\n },\n\n attributes: {\n iframe: {\n allowpaymentrequest: 'allowpaymentrequest'\n }\n },\n\n validate() {\n if (!isEligible()) {\n warn('button_render_ineligible');\n }\n },\n\n props: {\n domain: {\n type: 'string',\n required: false,\n def() : string {\n return window.location.host;\n },\n queryParam: true\n },\n\n sessionID: {\n type: 'string',\n required: false,\n def() : string {\n return getSessionID();\n },\n queryParam: true\n },\n\n buttonSessionID: {\n type: 'string',\n required: false,\n def() : ?string {\n return uniqueID();\n },\n queryParam: true\n },\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n }\n },\n\n meta: {\n type: 'object',\n required: false,\n def() : Object {\n return {};\n }\n },\n\n enableNativeCheckout: {\n type: 'boolean',\n required: false,\n def() : boolean {\n return false;\n }\n },\n\n client: {\n type: 'object',\n required: false,\n def() : Object {\n return {};\n },\n\n validate(client, props) {\n const env = props.env || config.env;\n\n if (!client[env]) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (typeof client[env] === 'string') {\n if (client[env].match(/^(.)\\1+$/)) {\n throw new Error(`Invalid client ID: ${ client[env] }`);\n }\n } else if (!ZalgoPromise.isPromise(client[env])) {\n throw new Error(`Expected client token to be either a string or a promise`);\n }\n },\n\n decorate(client : Object) : Object {\n if (client && client.sandbox === 'demo_sandbox_client_id') {\n client.sandbox = 'AZDxjDScFpQtjWTOUtWKbyN_bDt4OgqaF4eYXlewfBP4-8aqX3PiV8e1GWU6liB2CUXlkA59kJXE7M6R';\n }\n\n return client;\n }\n },\n\n source: {\n type: 'string',\n required: false,\n def() : string {\n return SOURCE.MANUAL;\n }\n },\n\n prefetchLogin: {\n type: 'boolean',\n required: false\n },\n\n stage: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.STAGE || env === ENV.LOCAL) {\n return config.stage;\n }\n }\n },\n\n updateClientConfiguration: {\n type: 'boolean',\n required: false,\n def: () => {\n return true;\n }\n },\n\n stageUrl: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.STAGE || env === ENV.LOCAL) {\n return config.stageUrl;\n }\n }\n },\n\n localhostUrl: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.LOCAL) {\n return config.localhostUrl;\n }\n }\n },\n\n checkoutUri: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : ?string {\n return config.checkoutUri;\n }\n },\n\n braintree: {\n type: 'object',\n required: false,\n validate(braintree, props) {\n\n if (!braintree.paypalCheckout) {\n throw new Error(`Expected Braintree paypal-checkout component to be loaded`);\n }\n\n if (!props.client) {\n throw new Error(`Expected client prop to be passed with Braintree authorization keys`);\n }\n },\n // $FlowFixMe\n decorate(braintree, props) : ZalgoPromise {\n const env = props.env || config.env;\n // $FlowFixMe\n return ZalgoPromise.hash(props.client).then(client => {\n return awaitBraintreeClient(braintree, client[env]);\n });\n }\n },\n\n payment: {\n type: 'function',\n required: true,\n memoize: false,\n timeout: __TEST__ ? 500 : 10 * 1000,\n alias: 'billingAgreement',\n\n decorate(original) : Function {\n return function payment(data = {}) : ZalgoPromise {\n\n const actions = {\n request,\n payment: {\n create: (options) => {\n return this.props.braintree\n ? this.props.braintree.then(client => {\n return client.createPayment(mapPaymentToBraintree(options.payment || options));\n })\n : ZalgoPromise.hash(this.props.client).then(client => {\n return rest.payment.create(this.props.env, client, options);\n });\n }\n },\n order: {\n create: (options) => {\n return ZalgoPromise.hash(this.props.client).then(client => {\n return rest.order.create(this.props.env, client, options);\n });\n }\n },\n braintree: {\n create: (options) => {\n if (!this.props.braintree) {\n throw new Error(`Can not create using Braintree - no braintree client provided`);\n }\n\n return this.props.braintree.then(client => {\n return client.createPayment(options);\n });\n }\n }\n };\n\n if (getDomainSetting('memoize_payment') && this.memoizedToken) {\n return this.memoizedToken;\n }\n\n this.memoizedToken = ZalgoPromise.try(original, this, [ data, actions ]);\n\n const startTime = Date.now();\n\n this.memoizedToken = this.memoizedToken.then(token => {\n\n if (!token) {\n error(`no_token_passed_to_payment`);\n throw new Error(`No value passed to payment`);\n }\n\n const elapsed = Date.now() - startTime;\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.RECIEVE_PAYMENT,\n [ FPTI.KEY.CONTEXT_TYPE ]: FPTI.CONTEXT_TYPE[getPaymentType(token)],\n [ FPTI.KEY.CONTEXT_ID ]: token,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.RESPONSE_DURATION ]: elapsed,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n flushLogs();\n\n return token;\n });\n\n return this.memoizedToken;\n };\n }\n },\n\n authCode: {\n type: 'string',\n required: false,\n def() : string {\n return config.authCode;\n }\n },\n\n funding: {\n type: 'object',\n required: false,\n queryParam: true,\n validate({ allowed = [], disallowed = [] } : Object = {}) {\n validateFunding({ allowed, disallowed, remembered: [] });\n },\n def() : Object {\n return {};\n },\n decorate({ allowed = [], disallowed = [] } : Object = {}, props : ButtonOptions) : {} {\n\n allowed = Array.isArray(allowed) ? allowed : [];\n disallowed = Array.isArray(disallowed) ? disallowed : [];\n\n if (allowed && allowed.indexOf(FUNDING.VENMO) !== -1) {\n allowed = allowed.filter(source => (source !== FUNDING.VENMO));\n }\n if (allowed && allowed.indexOf(FUNDING.ITAU) !== -1) {\n allowed = allowed.filter(source => (source !== FUNDING.ITAU));\n }\n\n if (isCreditDualEligible(props)) {\n creditThrottle = getThrottle('dual_credit_automatic', 50);\n\n if (creditThrottle.isEnabled()) {\n allowed = [ ...allowed, FUNDING.CREDIT ];\n }\n }\n\n let remembered = getRememberedFunding(sources => sources);\n\n if (!isDevice() || getDomainSetting('disable_venmo')) {\n if (remembered && remembered.indexOf(FUNDING.VENMO) !== -1) {\n remembered = remembered.filter(source => (source !== FUNDING.VENMO));\n }\n\n if (disallowed && disallowed.indexOf(FUNDING.VENMO) === -1) {\n disallowed = [ ...disallowed, FUNDING.VENMO ];\n }\n }\n\n return {\n allowed,\n disallowed,\n remembered,\n remember(sources) {\n rememberFunding(sources);\n }\n };\n }\n },\n\n commit: {\n type: 'boolean',\n required: false,\n queryParam: true,\n queryValue: (val) => {\n return val ? 'true' : 'false';\n }\n },\n\n onRender: {\n type: 'function',\n promisify: true,\n required: false,\n noop: true,\n decorate(original) : Function {\n return function decorateOnRender() : mixed {\n const { browser = 'unrecognized', version = 'unrecognized' } = getBrowser();\n info(`button_render_browser_${ browser }_${ isDevice() ? 'mobile' : 'desktop' }_${ version }`);\n\n const style = this.props.style || {};\n\n info(`button_render`);\n info(`button_render_color_${ style.color || 'default' }`);\n info(`button_render_shape_${ style.shape || 'default' }`);\n info(`button_render_size_${ style.size || 'default' }`);\n info(`button_render_label_${ style.label || 'default' }`);\n info(`button_render_branding_${ style.branding || 'default' }`);\n info(`button_render_fundingicons_${ style.fundingicons || 'default' }`);\n info(`button_render_tagline_${ style.tagline || 'default' }`);\n\n pptm.listenForButtonRender();\n pptm.reloadPptmScript(this.props.client[this.props.env]);\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_RENDER,\n [ FPTI.KEY.BUTTON_TYPE ]: FPTI.BUTTON_TYPE.IFRAME,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.BUTTON_SOURCE ]: this.props.source\n });\n\n if (isIEIntranet()) {\n warn(`button_render_intranet_mode`);\n }\n\n if (creditThrottle) {\n creditThrottle.logStart({\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID\n });\n }\n\n flushLogs();\n\n return original.apply(this, arguments);\n };\n }\n },\n\n onAuthorize: {\n type: 'function',\n alias: 'onApprove',\n required: true,\n\n decorate(original) : Function {\n return function decorateOnAuthorize(data, actions) : void | ZalgoPromise {\n\n if (data && !data.intent) {\n warn(`button_authorize_no_intent`, { paymentID: data.paymentID, token: data.paymentToken });\n }\n\n info('button_authorize');\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CHECKOUT_AUTHORIZE,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n if (isIEIntranet()) {\n warn(`button_authorize_intranet_mode`);\n }\n\n if (!isEligible()) {\n info('button_authorize_ineligible');\n }\n\n checkRecognizedBrowser('authorize');\n\n flushLogs();\n\n const restart = actions.restart;\n actions.restart = () => {\n return restart().then(() => {\n return new ZalgoPromise();\n });\n };\n\n actions.redirect = (win, url) => {\n return ZalgoPromise.try(() => {\n if (actions.close) {\n return actions.close();\n }\n }).then(() => {\n return redir(win || window.top, url || data.returnUrl);\n });\n };\n\n actions.payment.tokenize = memoize(() => {\n if (!this.props.braintree) {\n throw new Error(`Must pass in Braintree client to tokenize payment`);\n }\n\n return this.props.braintree\n .then(client => client.tokenizePayment(data));\n });\n\n const execute = actions.payment.execute;\n actions.payment.execute = () => {\n return execute().then(result => {\n\n if (!result || !result.id || !result.intent || !result.state) {\n warn(`execute_result_missing_data`);\n return new ZalgoPromise();\n }\n\n return result;\n });\n };\n\n const get = actions.payment.get;\n\n actions.payment.get = () => {\n return get().then(result => {\n if (!result || !result.id || !result.intent || !result.state) {\n warn(`get_result_missing_data`);\n return new ZalgoPromise();\n }\n\n return result;\n });\n };\n\n actions.request = request;\n\n onAuthorizeListener.trigger({\n paymentToken: data.paymentToken\n });\n\n if (creditThrottle) {\n creditThrottle.logComplete({\n [FPTI.KEY.BUTTON_SESSION_UID]: this.props.buttonSessionID\n });\n }\n\n return ZalgoPromise.try(() => {\n\n if (this.props.braintree) {\n return actions.payment.tokenize().then(({ nonce }) => {\n // $FlowFixMe\n Object.defineProperty(data, 'nonce', {\n get: () => {\n info('nonce_getter');\n flushLogs();\n return nonce;\n }\n });\n });\n }\n\n }).then(() => {\n return original.call(this, data, actions);\n }).catch(err => {\n if (this.props.onError) {\n return this.props.onError(err);\n }\n throw err;\n });\n };\n }\n },\n\n onShippingChange: {\n type: 'function',\n required: false,\n\n decorate(original) : void | Function {\n if (!original) {\n return;\n }\n\n return function decorateOnShippingChange(data, actions) : ZalgoPromise {\n\n info('button_shipping_change');\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CHECKOUT_SHIPPING_CHANGE,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n flushLogs();\n const timeout = __TEST__ ? 500 : 10 * 1000;\n\n const patch = actions.payment.patch;\n actions.payment.patch = (patchObject) => {\n return ZalgoPromise.try(() => {\n return patch(patchObject);\n });\n };\n\n const resolve = () => ZalgoPromise.resolve();\n const reject = actions.reject || function reject() {\n throw new Error(`Missing reject action callback`);\n };\n\n return ZalgoPromise.try(() => {\n return original.call(this, data, { ...actions, resolve, reject });\n }).timeout(timeout,\n new Error(`Timed out waiting ${ timeout }ms for payment`)).catch(err => {\n if (this.props.onError) {\n this.props.onError(err);\n }\n throw err;\n });\n };\n }\n },\n\n onError: {\n type: 'function',\n required: false,\n promisify: true,\n sendToChild: true,\n once: true,\n def() : (() => void) {\n return function onError(err : mixed) {\n if (isIEIntranet()) {\n warn(`button_error_intranet_mode`);\n flushLogs();\n\n // eslint-disable-next-line no-alert\n alert(`IE Intranet mode is not supported by PayPal. Please disable intranet mode, or continue in an alternate browser.`);\n }\n\n setTimeout(() => {\n throw err;\n });\n };\n }\n },\n\n onCancel: {\n type: 'function',\n required: false,\n noop: true,\n\n decorate(original) : Function {\n return function decorateOnCancel(data, actions) : void | ZalgoPromise {\n\n info('button_cancel');\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CHECKOUT_CANCEL,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n flushLogs();\n\n const redirect = (win, url) => {\n return ZalgoPromise.all([\n redir(win || window.top, url || data.cancelUrl),\n actions.close()\n ]);\n };\n\n return original.call(this, data, { ...actions, redirect });\n };\n }\n },\n\n onClick: {\n type: 'function',\n required: false,\n noop: true,\n decorate(original) : Function {\n return function decorateOnClick(data : ?{ fundingSource : string, card? : string, flow? : string, button_version? : string }) : void {\n\n info('button_click');\n if (data && data.flow) {\n info(`pay_flow_${ data.flow }`);\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.BUTTON,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_CLICK,\n [ FPTI.KEY.BUTTON_TYPE ]: FPTI.BUTTON_TYPE.IFRAME,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.CHOSEN_FUNDING ]: data && (data.card || data.fundingSource),\n [ FPTI.KEY.PAYMENT_FLOW ]: data && data.flow,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n if (isIEIntranet()) {\n warn('button_click_intranet_mode');\n }\n\n if (creditThrottle) {\n creditThrottle.log('click', {\n [ FPTI.KEY.STATE ]: FPTI.STATE.BUTTON,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_CLICK,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID\n });\n }\n\n const { color = 'default' } = this.props.style || {};\n info(`button_click_color_${ color }`);\n\n flushLogs();\n\n return original.apply(this, arguments);\n };\n }\n },\n\n onResize: {\n type: 'function',\n required: false,\n get value() : Function {\n let initialHeight;\n const logInlineGuestOutOfViewPortOnlyOnce = once((data) => {\n info('buttons_expansion_outside_viewport', data);\n immediateFlush();\n });\n\n return function onResizeHandler() {\n const container = this.container;\n\n if (!container) {\n return;\n }\n\n if (!initialHeight) {\n initialHeight = container.offsetHeight;\n }\n\n const getScrollOffsetY = () => {\n if (window.pageYOffset) {\n return window.pageYOffset;\n }\n\n if (document.documentElement) {\n return document.documentElement.scrollTop;\n }\n\n return 0;\n };\n\n // explanation https://github.com/paypal/paypal-checkout-components/pull/1136#discussion_r298025574\n const checkIfExpansionInViewport = () => {\n try {\n const scrollOffsetY = getScrollOffsetY();\n const windowHeight = window.innerHeight;\n\n const containerOffsetY = container.getBoundingClientRect().top;\n const VISIBLE_THRESHOLD = 200; // 200px, for the first input field to be visible\n\n return scrollOffsetY + windowHeight > initialHeight + containerOffsetY + VISIBLE_THRESHOLD;\n } catch (err) {\n info('cannot_get_the_viewport_information');\n return false;\n }\n };\n\n const isContainerExpanded = container && container.offsetHeight > initialHeight;\n const isExpansionInViewport = checkIfExpansionInViewport();\n\n if (!isContainerExpanded || isExpansionInViewport) {\n return;\n }\n\n logInlineGuestOutOfViewPortOnlyOnce({\n height: container.offsetHeight,\n window: {\n width: window.innerWidth,\n height: window.innerHeight\n }\n });\n };\n },\n decorate: (original) => debounce(original)\n },\n\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n },\n\n validate: validateButtonLocale\n },\n\n style: {\n type: 'object',\n required: false,\n queryParam: true,\n alias: 'buttonStyle',\n\n def() : Object {\n return {\n color: BUTTON_COLOR.GOLD,\n shape: BUTTON_SHAPE.PILL,\n size: BUTTON_SIZE.SMALL,\n label: BUTTON_LABEL.CHECKOUT,\n fundingicons: false,\n layout: BUTTON_LAYOUT.HORIZONTAL\n };\n },\n \n decorate(style : Object) : Object {\n const { label, layout = BUTTON_LAYOUT.HORIZONTAL } = style;\n if (!label && layout === BUTTON_LAYOUT.HORIZONTAL) {\n style.label = BUTTON_LABEL.CHECKOUT;\n return style;\n } else if (!label && layout === BUTTON_LAYOUT.VERTICAL) {\n style.label = BUTTON_LABEL.PAYPAL;\n return style;\n }\n return style;\n },\n\n validate(style = {}, props) {\n validateButtonStyle(style, props);\n flushLogs();\n }\n },\n\n validate: {\n type: 'function',\n required: false,\n decorate(validate) : Function {\n // $FlowFixMe\n return function decorateValidate(actions) : mixed {\n if (!this.validateCalled) {\n this.validateCalled = true;\n return validate(actions);\n }\n };\n }\n },\n\n logLevel: {\n type: 'string',\n required: false,\n get value() : string {\n return config.logLevel;\n }\n },\n\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n },\n\n awaitPopupBridge: {\n type: 'object',\n required: false,\n value: () => awaitPopupBridge(Button)\n },\n\n getPageUrl: {\n type: 'function',\n queryParam: false,\n required: false,\n def: () => {\n return () => window.location.href;\n }\n },\n\n test: {\n type: 'object',\n required: false,\n def() : Object {\n return { action: 'checkout' };\n }\n }\n }\n});\n\nif (Button.isChild()) {\n setupButtonChild(Button);\n}\n","/* @flow */\n\nimport { info, warn, flush as flushLogs } from 'beaver-logger/client';\nimport { CONSTANTS } from 'zoid/src';\nimport { getParent, getTop } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { config } from './config';\nimport { noop, isIE, getDomainSetting, extendUrl, patchMethod, once, extend } from './lib';\nimport { Button } from './button';\nimport { Checkout } from './checkout';\nimport { BUTTON_LABEL, BUTTON_SIZE, BUTTON_COLOR } from './constants';\nimport { rest } from './api';\n\nif (isIE() && getDomainSetting('ie_full_page')) {\n // $FlowFixMe\n Checkout.renderTo = (win) => {\n info('force_ie_full_page');\n flushLogs();\n\n // $FlowFixMe\n const checkout = Checkout.init({\n onAuthorize: noop\n });\n\n checkout.delegate(win);\n\n checkout.openContainer().then(() => {\n checkout.event.triggerOnce(CONSTANTS.EVENTS.CLOSE);\n checkout.showContainer();\n });\n\n // $FlowFixMe\n Button.xprops.payment().then(token => {\n window.top.location = extendUrl(config.checkoutUrl, { token });\n }).catch(err => {\n checkout.error(err);\n });\n };\n}\n\nconst parent = getParent(window);\nconst top = getTop(window);\n\nif (top && parent) {\n let canRenderTop = (top === parent);\n\n if (!canRenderTop) {\n Checkout.canRenderTo(top).then(result => {\n canRenderTop = result;\n });\n\n patchMethod(Checkout, 'renderTo', ({ args: [ win, props, el ], original, context }) => {\n\n if (!canRenderTop) {\n win = getParent(window);\n }\n\n return original.call(context, win, props, el);\n });\n }\n}\n\npatchMethod(Checkout, 'renderTo', ({ callOriginal, args: [ , props ] }) => {\n if (getDomainSetting('allow_full_page_fallback')) {\n const handleError = once((err) => {\n try {\n // eslint-disable-next-line no-console\n console.error(err && err.stack);\n } catch (err2) {\n // pass\n }\n\n // $FlowFixMe\n return Button.xprops.payment().then(token => {\n window.top.location = extendUrl(config.checkoutUrl, { token });\n });\n });\n\n props.onError = handleError;\n return callOriginal().catch(handleError);\n }\n return callOriginal();\n});\n\nlet debounce = false;\n\npatchMethod(Checkout, 'renderTo', ({ callOriginal, args: [ , props ] }) => {\n\n if (debounce) {\n warn('button_mutliple_click_debounce');\n return new ZalgoPromise(noop);\n }\n\n debounce = true;\n\n for (const methodName of [ 'onAuthorize', 'onCancel', 'onError', 'onClose' ]) {\n const original = props[methodName];\n props[methodName] = function unDebounce() : mixed {\n debounce = false;\n if (original) {\n return original.apply(this, arguments);\n }\n };\n }\n\n return callOriginal();\n});\n\npatchMethod(rest.payment, 'create', ({ original: createOriginal, context: createContext, args: [ env, client, options, experience ] }) => {\n if (!options.payment) {\n options = { payment: options, experience };\n }\n return createOriginal.call(createContext, env, client, options);\n});\n\npatchMethod(Button.props.style, 'validate', ({ callOriginal, args: [ style ] }) => {\n\n if (!style) {\n return callOriginal();\n }\n\n if (style && style.color === 'creditblue') {\n style.color = BUTTON_COLOR.DARKBLUE;\n }\n\n if (style && style.label === 'generic') {\n style.label = BUTTON_LABEL.PAYPAL;\n }\n\n if (style && (!style.label || style.label === BUTTON_LABEL.CHECKOUT) && style.size === 'tiny') {\n warn(`unsupported_button_size_tiny`);\n style.size = BUTTON_SIZE.SMALL;\n }\n\n return callOriginal();\n});\n\npatchMethod(Button, 'render', ({ callOriginal, args: [ props ] }) => {\n\n if (props.billingAgreement) {\n props.payment = props.billingAgreement;\n delete props.billingAgreement;\n }\n\n return callOriginal();\n});\n\npatchMethod(Button.props.payment, 'decorate', ({ original, context, args: [ originalPayment ] }) => {\n return original.call(context, function payment(data : Object, actions : Object) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n patchMethod(actions.payment, 'create', ({ original: createOriginal, context: createContext, args: [ options, experience ] }) => {\n if (!options.payment) {\n options = { payment: options, experience };\n }\n return createOriginal.call(createContext, options);\n });\n\n function resolveData(token) {\n resolve(token);\n }\n\n function rejectActions(err) {\n reject(err);\n }\n\n extend(resolveData, data);\n extend(resolveData, actions);\n extend(rejectActions, actions);\n\n const ctx = {\n props: {\n env: this.props.env,\n client: this.props.client\n }\n };\n\n let result;\n\n try {\n result = originalPayment.call(ctx, resolveData, rejectActions);\n } catch (err) {\n return reject(err);\n }\n\n if (result && typeof result.then === 'function') {\n return result.then(resolve, reject);\n }\n\n if (result !== undefined) {\n return resolve(result);\n }\n });\n });\n});\n\nif (Button.isChild()) {\n if (!window.Promise) {\n window.Promise = ZalgoPromise;\n }\n}\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { create } from 'zoid/src';\nimport { type Component } from 'zoid/src/component/component';\nimport type { CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { base64encode } from 'belter/src';\n\nimport { config } from '../config';\nimport { getButtonSessionID, getBrowserLocale, getSessionID, getCurrentScriptUrl } from '../lib';\n\ntype CardOptions = {|\n client : {\n [string] : (string | ZalgoPromise)\n },\n env? : string,\n locale? : string,\n logLevel : string,\n awaitPopupBridge : Function,\n onAuthorize : ({ returnUrl : string }, { redirect : (?CrossDomainWindowType, ?string) => ZalgoPromise }) => ?ZalgoPromise,\n onCancel? : ({ cancelUrl : string }, { redirect : (?CrossDomainWindowType, ?string) => ZalgoPromise }) => ?ZalgoPromise,\n onEvent? : ({ type : string, payload : Object }) => void,\n meta : Object,\n commit : boolean,\n token : string\n|};\n\nexport const Card : Component = create({\n tag: 'card-fields',\n name: 'ppcard',\n\n buildUrl(props) : string {\n const env = props.env || config.env;\n return config.inlinedCardFieldUrls[env];\n },\n\n contexts: {\n iframe: true,\n popup: false\n },\n\n dimensions: {\n height: '300px',\n width: '100%'\n },\n\n autoResize: {\n height: true,\n width: false\n },\n\n props: {\n sessionID: {\n type: 'string',\n required: false,\n def() : string {\n return getSessionID();\n },\n queryParam: true\n },\n\n\n token: {\n type: 'string',\n required: true,\n queryParam: true\n },\n\n buttonSessionID: {\n type: 'string',\n required: false,\n def() : ?string {\n return getButtonSessionID();\n },\n queryParam: true\n },\n\n commit: {\n type: 'boolean',\n required: false,\n queryParam: true\n },\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n },\n\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n allowDelegate: true,\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n }\n },\n\n initialFormValues: {\n type: 'object',\n required: false\n },\n\n\n onAuthorize: {\n type: 'function',\n required: true,\n once: true\n },\n\n onAuth: {\n type: 'function',\n required: false,\n sameDomain: true\n },\n\n onEvent: {\n type: 'function',\n required: false,\n sameDomain: true\n },\n\n getState: {\n type: 'function',\n required: false,\n sameDomain: true\n },\n\n dispatch: {\n type: 'object',\n required: false,\n sameDomain: true\n },\n\n onCancel: {\n type: 'function',\n required: false,\n once: true,\n noop: true\n },\n\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n },\n \n style: {\n type: 'object',\n required: false,\n queryParam: true,\n def() : Object {\n return {\n cardIcons: {\n display: false\n },\n submitButton: {\n display: true\n },\n currencyConversion: {\n display: true\n }\n };\n }\n }\n }\n});\n","/* @flow */\n\nimport { info, track, debug, warn, error, flush as flushLogs } from 'beaver-logger/client';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { config } from './config';\nimport { FPTI } from './constants';\nimport { initLogger, checkForCommonErrors, setLogLevel, stringifyError,\n stringifyErrorMessage, getResourceLoadTime, isPayPalDomain, isEligible,\n getDomainSetting, once, openMetaFrame, precacheRememberedFunding,\n getCurrentScript, getRememberedFunding } from './lib';\nimport { Button } from './button';\nimport { Checkout } from './checkout';\nimport { pptm } from './external';\n\nfunction domainToEnv(domain : string) : ?string {\n for (const env of Object.keys(config.paypalUrls)) {\n if (config.paypalUrls[env] === domain) {\n return env;\n }\n }\n}\n\nfunction setDomainEnv(domain : string) {\n const currentDomainEnv = domainToEnv(domain);\n\n if (currentDomainEnv && currentDomainEnv !== 'test') {\n config.env = currentDomainEnv;\n }\n}\n\nsetDomainEnv(`${ window.location.protocol }//${ window.location.host }`);\n\nZalgoPromise.onPossiblyUnhandledException(err => {\n\n error('unhandled_error', {\n stack: stringifyError(err),\n errtype: ({}).toString.call(err)\n });\n\n track({\n [ FPTI.KEY.ERROR_CODE ]: 'checkoutjs_error',\n [ FPTI.KEY.ERROR_DESC ]: stringifyErrorMessage(err)\n });\n\n return flushLogs().catch(err2 => {\n if (window.console) {\n try {\n if (window.console.error) {\n window.console.error('Error flushing:', stringifyError(err2));\n } else if (window.console.log) {\n window.console.log('Error flushing:', stringifyError(err2));\n }\n } catch (err3) {\n setTimeout(() => {\n throw err3;\n }, 1);\n }\n }\n });\n});\n\nconst currentScript = getCurrentScript();\nconst currentProtocol = window.location.protocol.split(':')[0];\n\n\ntype ConfigOptions = {|\n env? : ?string,\n stage? : ?string,\n apiStage? : ?string,\n stageUrl? : ?string,\n localhostUrl? : ?string,\n checkoutUri? : ?string,\n state? : ?string,\n logLevel? : ?string,\n merchantID? : ?string,\n precacheRemembered? : boolean,\n authCode? : ?string\n|};\n\nfunction configure({ env, stage, stageUrl, apiStage, localhostUrl, checkoutUri, state, logLevel, merchantID, authCode } : ConfigOptions = {}) {\n\n if (env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n\n delete config.env;\n config.env = env;\n } else if (Button.xprops && Button.xprops.env) {\n delete config.env;\n // $FlowFixMe\n config.env = Button.xprops.env;\n } else if (Checkout.xprops && Checkout.xprops.env) {\n delete config.env;\n // $FlowFixMe\n config.env = Checkout.xprops.env;\n }\n\n if (stage) {\n delete config.stage;\n config.stage = stage;\n } else if (Button.xprops && Button.xprops.stage) {\n delete config.stage;\n // $FlowFixMe\n config.stage = Button.xprops.stage;\n } else if (Checkout.xprops && Checkout.xprops.stage) {\n delete config.stage;\n // $FlowFixMe\n config.stage = Checkout.xprops.stage;\n }\n\n if (stageUrl) {\n delete config.stageUrl;\n // $FlowFixMe\n config.stageUrl = stageUrl;\n } else if (Button.xprops && Button.xprops.stageUrl) {\n delete config.stageUrl;\n // $FlowFixMe\n config.stageUrl = Button.xprops.stageUrl;\n } else if (Checkout.xprops && Checkout.xprops.stageUrl) {\n delete config.stageUrl;\n // $FlowFixMe\n config.stageUrl = Checkout.xprops.stageUrl;\n }\n\n authCode = authCode || (Button.xprops && Button.xprops.authCode) || (Checkout.xprops && Checkout.xprops.authCode);\n\n if (authCode) {\n delete config.authCode;\n config.authCode = authCode;\n }\n\n if (apiStage) {\n delete config.apiStage;\n config.apiStage = apiStage;\n }\n\n localhostUrl = localhostUrl || (Button.xprops && Button.xprops.localhostUrl) || (Checkout.xprops && Checkout.xprops.localhostUrl);\n if (localhostUrl) {\n config.localhostUrl = localhostUrl;\n }\n\n checkoutUri = checkoutUri || (Button.xprops && Button.xprops.checkoutUri) || (Checkout.xprops && Checkout.xprops.checkoutUri);\n if (checkoutUri) {\n config.checkoutUri = checkoutUri;\n }\n\n if (state) {\n delete config.state;\n config.state = state;\n }\n\n if (merchantID) {\n config.merchantID = merchantID;\n }\n\n if (logLevel) {\n setLogLevel(logLevel);\n } else {\n setLogLevel(config.logLevel);\n }\n}\n\nexport const init = once(({ precacheRemembered }) => {\n\n if (!isEligible()) {\n warn('ineligible');\n }\n\n checkForCommonErrors();\n\n initLogger();\n\n if (pptm.shouldCreateInitialPptmScript()) {\n pptm.createPptmScript();\n }\n\n if (precacheRemembered) {\n precacheRememberedFunding();\n }\n\n if (getDomainSetting('force_bridge') && !isPayPalDomain()) {\n openMetaFrame(config.env);\n }\n\n info(`setup_${ config.env }`);\n\n debug(`current_protocol_${ currentProtocol }`);\n});\n\n// $FlowFixMe\nexport function setup(options : ConfigOptions = {}) {\n configure(options);\n init(options);\n}\n\nif (currentScript) {\n setup({\n env: currentScript.getAttribute('data-env'),\n stage: currentScript.getAttribute('data-stage'),\n apiStage: currentScript.getAttribute('data-api-stage'),\n stageUrl: currentScript.getAttribute('data-stage-url'),\n localhostUrl: isPayPalDomain() ? currentScript.getAttribute('data-localhost-url') : undefined,\n checkoutUri: isPayPalDomain() ? currentScript.getAttribute('data-checkout-uri') : undefined,\n state: currentScript.getAttribute('data-state'),\n logLevel: currentScript.getAttribute('data-log-level'),\n merchantID: currentScript.getAttribute('data-merchant-id'),\n authCode: currentScript.getAttribute('data-auth-code'),\n precacheRemembered: currentScript.hasAttribute('data-precache-remembered-funding')\n });\n\n} else {\n setup();\n}\n\nif (!isPayPalDomain()) {\n\n if (currentScript) {\n\n const scriptProtocol = currentScript.src.split(':')[0];\n const loadTime = getResourceLoadTime(currentScript.src);\n\n debug(`current_script_protocol_${ scriptProtocol }`);\n debug(`current_script_protocol_${ currentProtocol === scriptProtocol ? 'match' : 'mismatch' }`);\n debug(`current_script_version_${ config.version.replace(/[^0-9a-zA-Z]+/g, '_') }`);\n\n if (loadTime) {\n debug(`current_script_time`, { loadTime });\n debug(`current_script_time_${ Math.floor(loadTime / 1000) }`);\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.SCRIPT_LOAD,\n [ FPTI.KEY.TRANSITION_TIME ]: loadTime,\n [ FPTI.KEY.FUNDING_REMEMBERED ]: getRememberedFunding().join(',')\n });\n\n } else {\n\n debug(`no_current_script`);\n debug(`no_current_script_version_${ config.version.replace(/[^0-9a-zA-Z]+/g, '_') }`);\n\n if (document.currentScript) { // eslint-disable-line compat/compat\n debug(`current_script_not_recognized`, { src: document.currentScript.src }); // eslint-disable-line compat/compat\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.SCRIPT_LOAD\n });\n }\n}\n","/* @flow */\n\nimport { debug, info, warn, error, track, flush } from 'beaver-logger/client';\nimport { destroyAll as _destroyAll } from 'zoid/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport * as _postRobot from 'post-robot/src'; // eslint-disable-line import/no-namespace\n\nimport { isPayPalDomain } from './lib';\nimport { Checkout as _Checkout } from './checkout';\nimport { BillingPage as _BillingPage } from './billing';\nimport { ThreeDomainSecure as _ThreeDomainSecure } from './threeDomainSecure';\n\nimport './hacks'; // eslint-disable-line import/no-unassigned-import\n\nexport const postRobot = _postRobot;\nexport { ZalgoPromise as Promise } from 'zalgo-promise/src';\nexport { PopupOpenError } from 'zoid/src';\n\nexport { rest } from './api';\nexport { Button } from './button';\nexport { Card } from './card';\nexport { setup } from './setup';\nexport { config } from './config';\nexport { ENV, USERS, SOURCE, FUNDING, CARD } from './constants';\nexport { request, isEligible, isFundingRemembered, allowIframe as forceIframe, allowIframe as isWebView, allowIframe } from './lib';\nexport { logExperimentTreatment } from './experiments';\nexport { logFundingEligibility } from './funding';\n\nexport const onPossiblyUnhandledException = ZalgoPromise.onPossiblyUnhandledException;\n\nexport const version = __PAYPAL_CHECKOUT__.__MINOR_VERSION__;\n\nexport let checkout;\nexport let apps;\n\nif (__PAYPAL_CHECKOUT__.__LEGACY_SUPPORT__) {\n const legacy = require('./legacy');\n checkout = legacy.checkout;\n apps = legacy.apps;\n}\n\n// -------------------------------------------------------------\n\nexport let Checkout;\nexport let BillingPage;\nexport let PayPalCheckout;\nexport let destroyAll;\nexport let enableCheckoutIframe;\nexport let logger;\nexport let ThreeDomainSecure;\n\nfunction _enableCheckoutIframe() {\n _Checkout.contexts.iframe = true;\n}\n\nif (isPayPalDomain() || __TEST__) {\n Checkout = _Checkout;\n BillingPage = _BillingPage;\n ThreeDomainSecure = _ThreeDomainSecure;\n PayPalCheckout = _Checkout;\n enableCheckoutIframe = _enableCheckoutIframe;\n destroyAll = _destroyAll;\n logger = { debug, info, warn, error, track, flush };\n}\n","/* @flow */\n/* eslint import/no-default-export: off */\n\nimport * as INTERFACE from './interface'; // eslint-disable-line import/no-namespace\n\nexport * from './interface';\nexport default INTERFACE;\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/constants/button.js","webpack:///./src/constants/checkout.js","webpack:///./src/constants/funding.js","webpack:///./src/constants/misc.js","webpack:///./src/constants/fpti.js","webpack:///./src/constants/country.js","webpack:///./src/constants/locale.js","webpack:///./src/constants/index.js","webpack:///./node_modules/zalgo-promise/src/utils.js","webpack:///./node_modules/zalgo-promise/src/exceptions.js","webpack:///./node_modules/zalgo-promise/src/flush.js","webpack:///./node_modules/zalgo-promise/src/promise.js","webpack:///./node_modules/zalgo-promise/src/index.js","webpack:///./node_modules/zoid/src/lib/util.js","webpack:///./node_modules/zoid/src/lib/fn.js","webpack:///./node_modules/zoid/src/lib/dom.js","webpack:///./node_modules/zoid/src/lib/promise.js","webpack:///./node_modules/zoid/src/lib/css.js","webpack:///./node_modules/zoid/src/lib/decorators.js","webpack:///./node_modules/zoid/src/lib/logger.js","webpack:///./node_modules/zoid/src/lib/global.js","webpack:///./node_modules/zoid/src/lib/index.js","webpack:///./src/config/config.js","webpack:///./src/config/index.js","webpack:///./node_modules/beaver-logger/client/util.js","webpack:///./node_modules/beaver-logger/client/builders.js","webpack:///./node_modules/beaver-logger/client/config.js","webpack:///./node_modules/beaver-logger/client/logger.js","webpack:///./node_modules/beaver-logger/client/performance.js","webpack:///./node_modules/beaver-logger/client/init.js","webpack:///./node_modules/beaver-logger/client/transitions.js","webpack:///./node_modules/beaver-logger/client/interface.js","webpack:///./node_modules/beaver-logger/client/index.js","webpack:///./node_modules/cross-domain-utils/src/util.js","webpack:///./node_modules/cross-domain-utils/src/constants.js","webpack:///./node_modules/cross-domain-utils/src/utils.js","webpack:///./node_modules/cross-domain-utils/src/types.js","webpack:///./node_modules/cross-domain-utils/src/index.js","webpack:///./node_modules/zoid/src/constants.js","webpack:///./node_modules/post-robot/src/global.js","webpack:///./node_modules/post-robot/src/conf/constants.js","webpack:///./node_modules/post-robot/src/conf/config.js","webpack:///./node_modules/post-robot/src/conf/index.js","webpack:///./src/lib/util.js","webpack:///./node_modules/@babel/runtime/helpers/esm/extends.js","webpack:///./node_modules/post-robot/src/drivers/send/strategies.js","webpack:///./node_modules/post-robot/src/drivers/send/index.js","webpack:///./node_modules/post-robot/src/drivers/listeners.js","webpack:///./node_modules/post-robot/src/drivers/receive/types.js","webpack:///./node_modules/post-robot/src/drivers/receive/index.js","webpack:///./node_modules/post-robot/src/drivers/index.js","webpack:///./node_modules/post-robot/src/public/client.js","webpack:///./node_modules/post-robot/src/public/server.js","webpack:///./node_modules/post-robot/src/public/config.js","webpack:///./node_modules/post-robot/src/public/index.js","webpack:///./node_modules/post-robot/src/clean.js","webpack:///./node_modules/post-robot/src/interface.js","webpack:///./node_modules/post-robot/src/index.js","webpack:///./node_modules/post-robot/src/lib/util.js","webpack:///./node_modules/post-robot/src/lib/serialize.js","webpack:///./node_modules/post-robot/src/lib/ready.js","webpack:///./node_modules/post-robot/src/lib/index.js","webpack:///./node_modules/belter/src/device.js","webpack:///./node_modules/belter/src/util.js","webpack:///./node_modules/belter/src/constants.js","webpack:///./node_modules/belter/src/dom.js","webpack:///./node_modules/belter/src/storage.js","webpack:///./node_modules/belter/src/experiment.js","webpack:///./node_modules/belter/src/global.js","webpack:///./node_modules/belter/src/http.js","webpack:///./node_modules/belter/src/types.js","webpack:///./node_modules/belter/src/decorators.js","webpack:///./node_modules/belter/src/css.js","webpack:///./node_modules/belter/src/test.js","webpack:///./node_modules/belter/src/index.js","webpack:///./node_modules/cross-domain-safe-weakmap/src/native.js","webpack:///./node_modules/cross-domain-safe-weakmap/src/util.js","webpack:///./node_modules/cross-domain-safe-weakmap/src/weakmap.js","webpack:///./node_modules/cross-domain-safe-weakmap/src/index.js","webpack:///./src/lib/session.js","webpack:///./src/lib/device.js","webpack:///./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack:///./node_modules/post-robot/src/bridge/bridge.js","webpack:///./node_modules/post-robot/src/bridge/common.js","webpack:///./node_modules/post-robot/src/bridge/child.js","webpack:///./node_modules/post-robot/src/bridge/parent.js","webpack:///./node_modules/post-robot/src/bridge/index.js","webpack:///./src/lib/dom.js","webpack:///./node_modules/zoid/src/error.js","webpack:///./src/lib/security.js","webpack:///./node_modules/zoid/src/drivers/index.js","webpack:///./src/lib/beacon.js","webpack:///./src/lib/namespace.js","webpack:///./node_modules/hi-base32/src/base32.js","webpack:///./node_modules/zoid/src/drivers/script.js","webpack:///./node_modules/zoid/src/drivers/react.js","webpack:///./node_modules/zoid/src/drivers/vue.js","webpack:///./node_modules/zoid/src/drivers/angular.js","webpack:///./node_modules/zoid/src/drivers/glimmer.js","webpack:///./node_modules/zoid/src/drivers/angular2.js","webpack:///./node_modules/bowser/bowser.min.js","webpack:///./node_modules/post-robot/src/compat/ie.js","webpack:///./node_modules/post-robot/src/compat/index.js","webpack:///./src/resources/fundingLogos/pp_white.svg","webpack:///./src/resources/fundingLogos/pp_blue.svg","webpack:///./src/resources/fundingLogos/pp_black.svg","webpack:///./src/resources/fundingLogos/venmo_white.svg","webpack:///./src/resources/fundingLogos/itau.svg","webpack:///./src/resources/fundingLogos/venmo_blue.svg","webpack:///./src/resources/fundingLogos/elv.svg","webpack:///./src/resources/fundingLogos/elv_white.svg","webpack:///./src/resources/cardLogos/visa.svg","webpack:///./src/resources/cardLogos/amex.svg","webpack:///./src/resources/cardLogos/mastercard.svg","webpack:///./src/resources/cardLogos/maestro.svg","webpack:///./src/resources/cardLogos/discover.svg","webpack:///./src/resources/cardLogos/hiper.svg","webpack:///./src/resources/cardLogos/elo.svg","webpack:///./src/resources/cardLogos/jcb.svg","webpack:///./src/resources/cardLogos/cup.svg","webpack:///./src/load.js","webpack:///./node_modules/post-robot/src/bridge/interface.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///(webpack)/buildin/amd-define.js","webpack:///./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack:///./node_modules/@babel/runtime/helpers/esm/applyDecoratedDescriptor.js","webpack:///./node_modules/zoid/src/component/base.js","webpack:///./node_modules/zoid/src/component/window.js","webpack:///./node_modules/zoid/src/component/child/props.js","webpack:///./node_modules/zoid/src/component/child/index.js","webpack:///./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack:///./node_modules/zoid/src/component/parent/drivers.js","webpack:///./node_modules/zoid/src/component/parent/validate.js","webpack:///./node_modules/zoid/src/component/parent/props.js","webpack:///./node_modules/zoid/src/component/parent/index.js","webpack:///./node_modules/zoid/src/component/delegate/index.js","webpack:///./node_modules/zoid/src/component/component/validate.js","webpack:///./node_modules/zoid/src/component/component/templates/container.jsx","webpack:///./node_modules/zoid/src/component/component/templates/component.jsx","webpack:///./node_modules/zoid/src/component/component/templates/index.js","webpack:///./node_modules/zoid/src/component/component/props.js","webpack:///./node_modules/zoid/src/component/component/index.js","webpack:///./node_modules/zoid/src/component/index.js","webpack:///./node_modules/zoid/src/interface.js","webpack:///./node_modules/zoid/src/index.js","webpack:///./src/lib/proxy.js","webpack:///./src/lib/logger.js","webpack:///./src/lib/eligibility.js","webpack:///./src/lib/errors.js","webpack:///./src/lib/http.js","webpack:///./src/lib/throttle.js","webpack:///./src/lib/script.js","webpack:///./src/lib/meta.js","webpack:///./src/lib/funding.js","webpack:///./src/lib/jsx.js","webpack:///./src/lib/index.js","webpack:///./src/compat/fallback.js","webpack:///./src/integrations/checkout.js","webpack:///./src/integrations/braintree.js","webpack:///./src/integrations/index.js","webpack:///./src/checkout/template/componentTemplate.jsx","webpack:///./src/resources/fundingLogos/p24.jsx","webpack:///./src/resources/fundingLogos/sofort.jsx","webpack:///./src/resources/fundingLogos/ideal.jsx","webpack:///./src/resources/fundingLogos/giropay.jsx","webpack:///./src/resources/fundingLogos/eps.jsx","webpack:///./src/resources/fundingLogos/mybank.jsx","webpack:///./src/resources/fundingLogos/bancontact.jsx","webpack:///./src/resources/fundingLogos/payu.jsx","webpack:///./src/resources/fundingLogos/verkkopankki.jsx","webpack:///./src/resources/fundingLogos/blik.jsx","webpack:///./src/resources/fundingLogos/trustly.jsx","webpack:///./src/resources/fundingLogos/maxima.jsx","webpack:///./src/resources/fundingLogos/boleto.jsx","webpack:///./src/resources/fundingLogos/oxxo.jsx","webpack:///./src/resources/fundingLogos/paypal.jsx","webpack:///./src/resources/fundingLogos/credit.jsx","webpack:///./src/resources/fundingLogos/index.js","webpack:///./src/resources/cardLogos/index.js","webpack:///./src/resources/index.js","webpack:///./src/checkout/template/containerContent.js","webpack:///./src/checkout/template/containerStyle/base.js","webpack:///./src/checkout/template/sandboxStyle/base.js","webpack:///./src/checkout/template/containerTemplate.jsx","webpack:///./src/checkout/template/index.js","webpack:///./src/checkout/component.js","webpack:///./src/billing/template/containerTemplate.jsx","webpack:///./src/billing/index.js","webpack:///./src/threeDomainSecure/index.js","webpack:///./src/external/pptm-factory.js","webpack:///./src/external/pptm.js","webpack:///./src/external/index.js","webpack:///./src/api/rest.js","webpack:///./src/experiments.js","webpack:///./src/integrations/popupBridge.js","webpack:///./src/funding/config.js","webpack:///./src/funding/funding.js","webpack:///./src/button/config.js","webpack:///./src/button/props.js","webpack:///./src/button/validate.js","webpack:///./src/button/template/componentStyle/class.js","webpack:///./src/button/template/componentStyle/page.js","webpack:///./src/button/template/componentStyle/button.js","webpack:///./src/button/template/componentStyle/layout.js","webpack:///./src/button/template/componentStyle/branding.js","webpack:///./src/button/template/componentStyle/labels.js","webpack:///./src/button/template/componentStyle/responsive.js","webpack:///./src/button/template/componentStyle/color.js","webpack:///./src/button/template/componentStyle/base.js","webpack:///./src/button/template/componentStyle/index.js","webpack:///./src/button/template/miscComponent.jsx","webpack:///./src/button/template/componentScript.js","webpack:///./src/button/template/content.js","webpack:///./src/button/template/componentTemplate.jsx","webpack:///./src/button/template/containerTemplate.jsx","webpack:///./src/button/template/index.js","webpack:///./src/button/child.js","webpack:///./src/button/component.jsx","webpack:///./src/hacks.js","webpack:///./src/card/index.js","webpack:///./src/setup.js","webpack:///./src/interface.js","webpack:///./src/index.js"],"names":["BUTTON_STYLE_OPTIONS","LABEL","SIZE","SHAPE","COLOR","LAYOUT","MAXBUTTONS","FUNDINGICONS","BRANDING","TAGLINE","HEIGHT","INSTALLMENTPERIOD","BUTTON_LABEL","PAYPAL","CHECKOUT","PAY","CREDIT","CARD","BUYNOW","INSTALLMENT","VENMO","ITAU","IDEAL","ELV","BANCONTACT","GIROPAY","SOFORT","EPS","MYBANK","P24","PAYU","VERKKOPANKKI","BLIK","TRUSTLY","MAXIMA","BOLETO","OXXO","BUTTON_COLOR","GOLD","BLUE","SILVER","BLACK","DARKBLUE","WHITE","TRANSPARENT","BUTTON_LOGO_COLOR","ANY","BUTTON_SIZE","TINY","SMALL","MEDIUM","LARGE","HUGE","RESPONSIVE","BUTTON_TAGLINE_COLOR","BUTTON_SHAPE","PILL","RECT","BUTTON_BRANDING","BRANDED","UNBRANDED","BUTTON_LAYOUT","HORIZONTAL","VERTICAL","BUTTON_NUMBER","SINGLE","MULTIPLE","BUTTON_LOGO","PP","CHECKOUT_OVERLAY_COLOR","FUNDING","ZIMPLER","VISA","MASTERCARD","AMEX","DISCOVER","SWITCH","MAESTRO","HIPER","ELO","JCB","CUP","COFINOGA","COFIDIS","CETELEM","CBNATIONALE","FUNDING_ELIGIBILITY_REASON","PRIMARY","NOT_ENABLED","SECONDARY_DISALLOWED","OPT_OUT","OPT_IN","DISALLOWED_COUNTRY","DEFAULT_COUNTRY","DEFAULT","REMEMBERED","NEED_OPT_IN","COMMIT_NOT_SET","INVALID_ENV","CARD_PRIORITY","ENV","LOCAL","STAGE","SANDBOX","PRODUCTION","TEST","DEMO","USERS","ALL","SOURCE","MANUAL","BUTTON_FACTORY","LOG_LEVEL","DEBUG","INFO","WARN","ERROR","PAYMENT_TYPE","EC_TOKEN","BA_TOKEN","PAY_ID","PPTM_ID","ATTRIBUTE","BUTTON","FUNDING_SOURCE","VERSION","PLATFORM","DESKTOP","MOBILE","FPTI","KEY","FEED","STATE","TRANSITION","BUTTON_TYPE","SESSION_UID","BUTTON_SESSION_UID","TOKEN","CONTEXT_ID","CONTEXT_TYPE","REFERER","SELLER_ID","DATA_SOURCE","BUTTON_SOURCE","ERROR_CODE","ERROR_DESC","PAGE_LOAD_TIME","EXPERIMENT_NAME","TREATMENT_NAME","TRANSITION_TIME","FUNDING_LIST","FUNDING_COUNT","CHOSEN_FUNDING","BUTTON_WIDTH","MAX_BUTTONS","FUNDING_REMEMBERED","BUTTON_TAGLINE_ENABLED","RESPONSE_DURATION","PAYMENT_FLOW","BUTTON_VERSION","IFRAME","HTML","CUSTOM","BUTTON_SESSION_ID","CHECKOUTJS","LOAD","PPTM","SCRIPT_LOAD","BUTTON_RENDER","BUTTON_LOAD","BUTTON_CLICK","BUTTON_RENDER_INTRANET_MODE","BUTTON_CLICK_INTRANET_MODE","CREATE_PAYMENT","RECIEVE_PAYMENT","CHECKOUT_INIT","CHECKOUT_AUTHORIZE","CHECKOUT_SHIPPING_CHANGE","CHECKOUT_CANCEL","CHECKOUT_ERROR","EXTERNAL_EXPERIMENT","EXTERNAL_EXPERIMENT_COMPLETE","PPTM_LOAD","PPTM_LOADED","COUNTRY","AD","AE","AG","AI","AL","AM","AN","AO","AR","AT","AU","AW","AZ","BA","BB","BE","BF","BG","BH","BI","BJ","BM","BN","BO","BR","BS","BT","BW","BY","BZ","C2","CA","CD","CG","CH","CI","CK","CL","CM","CN","CO","CR","CV","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GI","GL","GM","GN","GP","GR","GT","GW","GY","HK","HN","HR","HU","ID","IE","IL","IN","IS","IT","JM","JO","JP","KE","KG","KH","KI","KM","KN","KR","KW","KY","KZ","LA","LC","LI","LK","LS","LT","LU","LV","MA","MC","MD","ME","MG","MH","MK","ML","MN","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PL","PM","PN","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","ST","SV","SZ","TC","TD","TG","TH","TJ","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","US","UY","VA","VC","VE","VG","VN","VU","WF","WS","YE","YT","ZA","ZM","ZW","LANG","CS","DA","EL","EN","HE","JA","KO","ZH","LANG_TO_DEFAULT_COUNTRY","ALLOWED_INSTALLMENT_COUNTRIES","ALLOWED_INSTALLMENT_PERIOD","LOCALE","isPromise","item","Promise","window","Window","constructor","toString","name","call","then","err","dispatchedErrors","possiblyUnhandledPromiseHandlers","dispatchPossiblyUnhandledError","promise","indexOf","push","setTimeout","__DEBUG__","j","length","onPossiblyUnhandledException","handler","cancel","splice","activeCount","flushPromise","flushActive","resolve","startActive","endActive","awaitActive","Zalgo","ZalgoPromise","resolved","rejected","errorHandled","value","error","handlers","dispatching","stack","result","isAsync","res","reject","Error","dispatch","Object","prototype","asyncReject","chain","firstPromise","secondPromise","i","onSuccess","onError","catch","undefined","finally","onFinally","try","timeout","time","clearTimeout","toPromise","TypeError","all","promises","count","results","prom","hash","keys","map","key","items","method","context","args","apply","delay","flush","urlEncode","str","replace","camelToDasherize","string","g","toLowerCase","dasherizeToCamel","toUpperCase","extend","obj","source","hasOwnProperty","values","uniqueID","chars","charAt","Math","floor","random","stringifyWithFunctions","JSON","stringify","val","safeGet","prop","capitalizeFirstLetter","slice","get","path","def","pathParts","split","safeInterval","runInterval","safeTimeout","interval","each","callback","Array","isArray","len","replaceObject","replacers","fullKey","defineProperty","configurable","enumerable","itemKey","child","type","replacer","replaced","set","copyProp","target","descriptor","getOwnPropertyDescriptor","dotify","prefix","newobj","every","join","objectIDs","WeakMap","getObjectID","uid","regex","pattern","start","RegExp","match","index","text","groups","end","regexAll","matches","substr","startIndex","itemCount","stringifyError","message","eventEmitter","triggered","on","eventName","handlerList","cancelled","once","listener","trigger","triggerOnce","noop","called","onceWrapper","arguments","memoize","memoizeWrapper","cacheKey","debounce","debounceWrapper","serializeFunctions","__type__","deserializeFunctions","deserializedFunctionWrapper","self","appendChild","container","isElement","element","Element","nodeType","style","ownerDocument","querySelectorAll","el","selector","getElementSafe","id","document","getElementById","querySelector","getElement","documentReady","readyState","setInterval","clearInterval","isDocumentReady","elementReady","popup","url","options","params","filter","Boolean","win","open","PopupOpenError","isWindowClosed","writeToWindow","html","write","close","location","err2","writeElementToWindow","tag","tagName","documentElement","children","removeChild","setStyle","styleText","doc","styleSheet","cssText","createTextNode","createElement","class","className","attributes","setAttribute","contentWindow","innerHTML","awaitFrameLoadPromises","awaitFrameLoad","frame","has","addEventListener","linkFrameWindow","awaitFrameWindow","loadedFrame","iframe","frameBorder","allowTransparency","backgroundColor","navigator","userAgent","event","removeEventListener","scanForJavascript","parseQuery","queryString","pair","decodeURIComponent","getQueryParam","search","formatQuery","extendQuery","originalQuery","props","extendUrl","query","originalUrl","originalHash","hashString","elementStoppedMoving","getBoundingClientRect","timer","top","bottom","left","right","width","height","getCurrentDimensions","offsetWidth","offsetHeight","changeStyle","styles","setOverflow","overflow","overflowX","overflowY","reset","dimensionsDiff","one","two","threshold","abs","trackDimensions","currentDimensions","check","newDimensions","changed","dimensions","onDimensionsChange","tracker","resolver","onWindowResize","dimensionsMatchViewport","innerWidth","innerHeight","bindEvents","eventNames","VENDOR_PREFIXES","setVendorCSS","capitalizedName","CSSRule","KEYFRAMES_RULE","WEBKIT_KEYFRAMES_RULE","MOZ_KEYFRAMES_RULE","O_KEYFRAMES_RULE","MS_KEYFRAMES_RULE","isValidAnimation","stylesheets","styleSheets","cssRules","cssRule","ANIMATION_START_EVENTS","ANIMATION_END_EVENTS","animate","clean","hasStarted","startTimeout","endTimeout","startEvent","endEvent","cleanUp","animationName","stopPropagation","STYLE","DISPLAY","NONE","BLOCK","VISIBILITY","VISIBLE","HIDDEN","IMPORTANT","makeElementVisible","setProperty","makeElementInvisible","showElement","hideElement","destroyElement","parentNode","showAndAnimate","animation","animateAndHide","addClass","classList","add","removeClass","remove","getCurrentScriptDir","console","warn","currentScript","src","getElementName","isElementClosed","watchElementForClose","getHttpType","contentType","req","XMLHttpRequest","setRequestHeader","send","onload","responseText","onerror","getHTML","getCSS","getScript","prefetchPage","JSX_EVENTS","onClick","fixScripts","script","newScript","textContent","replaceChild","jsxDom","content","textNode","denodeify","denodeifyWrapper","promisify","promisifyWRapper","cycle","isPerc","test","isPx","toNum","parseInt","toPx","toCSS","percOf","num","perc","normalizeDimension","dim","max","memoized","memoizedFunction","__memoized__","displayName","promisifiedFunction","setLogLevel","logLevel","logLevels","config","CONFIG","info","payload","logInfo","logWarn","logError","globalFor","isSameDomain","__ZOID__","localGlobal","global","getDefaultEnv","__TEST__","host","locales","scriptUrl","__FILE_NAME__","paypal_domain_regex","version","__PAYPAL_CHECKOUT__","cors","env","state","locale","country","lang","stage","stageDomain","stageUrl","apiStageUrl","apiStage","localhostUrl","ports","default","merchantID","authCode","throttles","v4_mobile_device","domain_settings","ie_full_page","allow_full_page_fallback","memoize_payment","force_bridge","log_authorize","disable_venmo","creditTestDomains","customCountry","SUPPORTED_BROWSERS","msie","firefox","chrome","safari","opera","msedge","samsungBrowser","silk","ucbrowser","vivaldi","session_uid_lifetime","_apiStage","button","checkout","guest","altpay","paypalUrls","protocol","port","paypalDomains","wwwApiUrls","corsApiUrls","apiUrls","domain","local","sandbox","production","checkoutUri","checkoutUris","altpayUris","guestUris","billingUris","buttonUris","inlinedCardFieldUris","postBridgeUris","legacyCheckoutUris","buttonJSUrls","buttonJSUrl","loginUri","hermesLoggerUri","loggerUri","loggerThrottlePercentage","pptmUri","postBridgeUri","paymentStandardUri","authApiUri","paymentApiUri","orderApiUri","billingApiUri","experienceApiUri","trackingApiUri","checkoutUrls","demo","guestUrls","altpayUrls","billingUrls","buttonUrls","inlinedCardFieldUrls","loginUrls","paymentsStandardUrls","metaFrameUrls","legacyCheckoutUrls","authApiUrls","paymentApiUrls","orderApiUrls","billingApiUrls","experienceApiUrls","trackingApiUrls","_paypalUrl","paypalUrl","paypalDomain","corsApiUrl","wwwApiUrl","apiUrl","checkoutUrl","billingUrl","buttonUrl","legacyCheckoutUrl","postBridgeUrl","postBridgeDomain","loggerUrl","isTestExperiment","pptmUrl","authApiUrl","paymentApiUrl","orderApiUrl","billingApiUrl","experienceApiUrl","defaultLocale","dest","over","isSameProtocol","ajax","headers","data","fireAndForget","XRequest","ActiveXObject","XDomainRequest","headerName","onreadystatechange","promiseDebounce","rejector","onWindowReady","loop","isIE","documentMode","payloadBuilders","metaBuilders","trackingBuilders","headerBuilders","addPayloadBuilder","builder","addMetaBuilder","addTrackingBuilder","addHeaderBuilder","uri","initial_state_name","flushInterval","debounceInterval","sizeLimit","silent","heartbeat","heartbeatConsoleLog","heartbeatInterval","heartbeatTooBusy","heartbeatTooBusyThreshold","autoLog","logUnload","logPerformance","buffer","tracking","transport","getTransport","setTransport","newTransport","loaded","print","level","log","warning","immediateFlush","hasBuffer","hasTracking","meta","events","enqueue","timestamp","Date","now","debug","track","enablePerformance","performance","timing","connectEnd","navigationStart","startTime","elapsed","reqStartElapsed","clientTimer","reqTimer","initHeartBeat","heartBeatTimer","heartbeatCount","heartbeatMaxThreshold","lag","heartbeatPayload","noConsole","initPerformance","client_elapsed","req_elapsed","forEach","offset","memory","navigation","getEntries","resource","initiatorType","initiated","init","conf","beaverLogQueue","windowID","pageID","currentState","startTransition","endTransition","toState","currentTime","elapsedTime","transitionName","duration","transition","transition_time","INTERFACE","isRegex","PROTOCOL","MOCK","FILE","ABOUT","WILDCARD","WINDOW_TYPE","POPUP","IE_WIN_ACCESS_ERROR","isFileProtocol","isAboutProtocol","getParent","parent","getOpener","opener","canReadFromWindow","href","getActualDomain","getDomain","mockDomain","isBlankDomain","isActuallySameDomain","desc","assertSameDomain","getParents","isAncestorParent","childParent","getFrames","frames","getAllChildFrames","childFrame","getTop","getNextOpener","getUltimateTop","getAllFramesInWindow","getAllWindows","isTop","isFrameWindowClosed","contains","safeIndexOf","collection","iframeWindows","iframeFrames","allowMock","closed","mockclosed","iframeIndex","cleanIframes","getUserAgent","mockUserAgent","getFrameByName","winFrames","findChildFrameByName","namedFrame","findFrameByName","isParent","frameParent","isOpener","getAncestor","getAncestors","ancestor","isAncestor","actualParent","isPopup","isIframe","isFullpage","anyMatch","collection1","collection2","item1","item2","getDistanceFromTop","distance","getNthParent","n","getNthParentFromTop","isSameTopWindow","win1","win2","top1","top2","allFrames1","allFrames2","opener1","opener2","matchDomain","origin","some","subpattern","stringifyDomainPattern","getDomainFromUrl","onCloseWindow","maxtime","Infinity","isWindow","__cross_domain_utils_window_check__","isBrowser","isCurrentDomain","isMockDomain","normalizeMockUrl","closeWindow","getFrameForWindow","frameElement","TYPES","ZOID","POST_MESSAGE","INIT","PROPS","PROP_CALLBACK","CLOSE","CHECK_CLOSE","REDIRECT","RESIZE","DELEGATE","ALLOW_DELEGATE","HIDE","SHOW","PROP_TYPES","STRING","OBJECT","FUNCTION","BOOLEAN","NUMBER","INITIAL_PROPS","RAW","UID","WINDOW_REFERENCES","OPENER","TOP","PARENT","GLOBAL","PROP_TYPES_LIST","CONTEXT_TYPES","CLASS_NAMES","OUTLET","COMPONENT_FRAME","PRERENDER_FRAME","INVISIBLE","EVENTS","ATTRIBUTES","IFRAME_PLACEHOLDER","ANIMATION_NAMES","SHOW_CONTAINER","SHOW_COMPONENT","HIDE_CONTAINER","HIDE_COMPONENT","EVENT_NAMES","CLICK","CLOSE_REASONS","PARENT_CALL","CHILD_CALL","CLOSE_DETECTED","USER_CLOSED","PARENT_CLOSE_DETECTED","CONTEXT_TYPES_LIST","CALL_ORIGINAL","CALL_DELEGATE","DEFAULT_DIMENSIONS","WIDTH","CONSTANTS","WINDOW_PROPS","POSTROBOT","registerSelf","POST_MESSAGE_TYPE","REQUEST","RESPONSE","ACK","POST_MESSAGE_ACK","SUCCESS","POST_MESSAGE_NAMES","METHOD","HELLO","OPEN_TUNNEL","WINDOW_TYPES","FULLPAGE","SERIALIZATION_TYPES","PROMISE","ZALGO_PROMISE","REGEX","SEND_STRATEGIES","BRIDGE","MOCK_PROTOCOL","FILE_PROTOCOL","BRIDGE_NAME_PREFIX","POSTROBOT_PROXY","POST_MESSAGE_NAMES_LIST","ALLOW_POSTMESSAGE_POPUP","__ALLOW_POSTMESSAGE_POPUP__","__POST_ROBOT__","BRIDGE_TIMEOUT","CHILD_WINDOW_TIMEOUT","ACK_TIMEOUT","RES_TIMEOUT","ALLOWED_POST_MESSAGE_METHODS","ALLOW_SAME_ORIGIN","moduleGlobal","getGlobal","cache","glob","__CACHE_START_TIME__","hashStr","charCodeAt","pow","sqrt","strHashStr","total","String","fromCharCode","regmatch","safeJSON","listeners","listen","onceListener","awaitKey","newErr","stringifyErrorMessage","defaultMessage","domainMatches","hostname","patchMethod","original","patchedMethod","callOriginal","isObject","assign","deepExtend","hasValue","arr","sortBy","order","sort","a","b","reverseMap","arrayRemove","identity","pixels","percentage","round","min","regexMap","regexMapMatcher","_extends","SEND_MESSAGE_STRATEGIES","serializedMessage","require","emulateIERestrictions","domains","dom","postMessage","sendBridgeMessage","needsBridgeForBrowser","isBridge","needsGlobalMessagingForBrowser","foreignGlobal","receiveMessage","buildMessage","getWindowType","sourceDomain","windowType","sendMessage","serializeMethods","messages","jsonStringify","strategyName","success","status","resetListeners","responseListeners","requestListeners","WINDOW_WILDCARD","WindowWildcard","erroredResponseListeners","__DOMAIN_REGEX__","addResponseListener","getResponseListener","deleteResponseListener","markResponseListenerErrored","isResponseListenerErrored","getRequestListener","nameListeners","winQualifier","winListeners","addRequestListener","listenersCollection","cancelListener","existingListener","strDomain","regexListeners","regexListener","delete","RECEIVE_MESSAGE_TYPES","pathname","ack","respond","originalSource","code","handleError","response","receivedMessages","parseMessage","parsedMessage","jsonParse","deserializeMethods","messageListener","messageEvent","sourceElement","originalEvent","listenForMessages","requestPromises","request","targetWindow","HTMLIFrameElement","hasResult","requestPromise","onChildWindowReady","sayHello","actualDomain","responseListener","ackTimeout","resTimeout","cycleTime","hasAck","sendToParent","client","listenerOptions","errorHandler","requestListener","onceFunction","listenOnce","errorOnClose","disable","cleanUpWindow","popupWindowsByWin","remoteWindows","methods","readyPromises","bridge","initialized","openTunnelToOpener","initOnReady","listenForMethods","attachEvent","detachEvent","eachArray","eachObject","depth","childItem","weakMapMemoize","weakmap","weakmapMemoized","arg","indent","objectToJSON","arrayToJSON","toJSON","parse","meth","isSerialized","serializeMethod","destination","__id__","__name__","serializeError","__message__","__code__","serializePromise","__then__","serializeZalgoPromise","serializeRegex","__source__","deserializeMethod","wrapper","__xdomain__","deserializeError","deserializeZalgoPromise","deserializePromise","deserializeRegex","onHello","isDevice","isWebView","isStandAlone","standalone","matchMedia","isFacebookWebView","ua","isFirefoxIOS","isEdgeIOS","isOperaMini","isAndroid","isIos","isGoogleSearchApp","isQQBrowser","isIosWebview","isAndroidWebview","isIECompHeader","mHttp","mContent","isElectron","process","versions","electron","isIEIntranet","isMacOsCna","supportsPopups","isChrome","isSafari","getFunctionName","fn","setFunctionName","base64encode","btoa","encodeURIComponent","m","p1","Buffer","from","base64decode","atob","c","randomID","timeID","toISOString","__GLOBAL__","serializeArgs","subkey","cacheMap","getOrSet","thisNamespace","cacheTime","promiseIdentity","memoizePromise","memoizedPromiseFunction","inlineMemoize","logic","__inline_memoize_cache__","regexp","svgToBase64","svg","objFilter","regexTokenize","token","promiseDebounced","localPromise","isInteger","isFloat","serializePrimitive","deserializePrimitive","parseFloat","undotify","keyResult","parts","part","isLast","isIndex","defineLazyProp","getter","arrayFrom","isObjectObject","isPlainObject","isDefined","weakMapMemoizePromise","weakmapMemoizedPromise","cleanup","tasks","cleaned","register","task","pop","tryCatch","removeFromArray","assertExists","thing","unique","KEY_CODES","ENTER","body","waitForWindowReady","waitForDocumentReady","waitForDocumentBody","urlWillRedirectPage","redirect","hasMetaViewPort","screen","isElementVisible","getClientRects","getPageRenderTime","domInteractive","htmlEncode","keyCode","scripts","getElementsByTagName","isLocalStorageEnabled","localStorage","setItem","getItem","removeItem","getBrowserLocales","nav","languages","language","userLanguage","create","outerWidth","screenX","outerHeight","screenY","toolbar","menubar","resizable","scrollbars","border","hasAttribute","onResize","currentWidth","currentHeight","newWidth","newHeight","observer","ResizeObserver","observe","MutationObserver","childList","subtree","characterData","disconnect","getResourceLoadTime","entries","entry","DEFAULT_SESSION_STORAGE","getStorage","lifetime","STORAGE_KEY","accessedStorage","getState","localStorageEnabled","storage","rawStorage","getID","getSession","session","__session__","created","guid","getSessionState","getSessionID","getBelterExperimentStorage","isEventUnique","loggedBeacons","getThrottlePercentile","throttlePercentiles","THROTTLE_GROUP","CONTROL","THROTTLE","experiment","sample","logTreatment","logCheckpoint","throttle","group","treatment","started","forced","isEnabled","isDisabled","getTreatment","checkpoint","logStart","logComplete","getGlobalNameSpace","globalKey","namespace","defValue","HEADERS","CONTENT_TYPE","ACCEPT","parseHeaders","rawHeaders","trim","line","json","normalizedHeaders","headerBuilder","builtHeaders","xhr","xhrLoad","responseHeaders","getAllResponseHeaders","isJSON","responseBody","evt","ontimeout","xhrTimeout","wrapPromise","expected","expect","expectWrapper","avoid","avoidWrapper","expectError","expectErrorWrapper","drain","hasNativeWeakMap","freeze","testWeakMap","testKey","testValue","CrossDomainSafeWeakMap","_cleanupClosedWindows","isSafeToReadWrite","writable","LOCAL_STORAGE_KEY","SESSION_KEY","GLOBAL_KEY","getStorageState","getStorageID","xprops","sessionID","querySessionID","isPayPalDomain","getButtonSessionID","buttonSessionID","getGlobalState","isInsidePopup","isIE11","_inheritsLoose","subClass","superClass","__proto__","tunnelWindows","tunnelWindowId","deleteTunnelWindow","cleanTunnelWindows","tunnelWindow","addTunnelWindow","canary","getTunnelWindow","openTunnelToParent","parentWindow","needsBridgeForWin","needsBridgeForDomain","needsBridge","getBridgeName","sanitizedDomain","documentBodyReady","registerRemoteWindow","sendMessagePromise","findRemoteWindow","registerRemoteSendMessage","remoteWindow","sendMessageWrapper","remoteWin","remoteDomain","rejectRemoteSendMessage","messagingChild","messagingParent","awaitRemoteBridgeForWindow","bridges","bridgeFrames","popupWindowsByName","listenForRegister","winDetails","openBridgeFrame","hasBridge","openBridge","windowOpen","windowOpenWrapper","last","winName","winOptions","linkUrl","destroyBridges","documentBody","loadScript","attrs","scriptOnReadyStateChange","scriptLoadError","attr","head","isNodeList","nodes","HTMLElement","getElements","NodeList","HTMLCollection","onDocumentReady","hasHash","serverUrl","originalQueryString","newQueryString","newUrl","normalizeLocale","normalizeLang","getBrowserLocale","loc","IntegrationError","RenderError","allowIframe","parentComponentWindow","xchild","getParentComponentWindow","BEACON_URL","APP_NAME","beacon","appName","beaconImage","Image","isCheckpointUnique","checkpointName","FPTI_URL","buildPayload","v","t","getTimezoneOffset","flnm","shir","pgrp","page","vers","qual","tmpl","fpti","extendNamespace","xports","namespaces","childnamespaces","childname","childnamespace","root","NODE_JS","HI_BASE32_NO_NODE_JS","node","COMMON_JS","HI_BASE32_NO_COMMON_JS","module","exports","AMD","define","BASE32_ENCODE_CHAR","BASE32_DECODE_CHAR","blocks","throwInvalidUtf8","position","partial","toUtf8String","bytes","followingChars","decodeAsBytes","base32Str","v1","v2","v3","v4","v5","v6","v7","v8","remain","encodeAscii","encodeUtf8","encodeBytes","encode","input","asciiOnly","notString","ArrayBuffer","Uint8Array","decode","asBytes","base32","component","render","getAttribute","innerText","eval","scan","scriptTags","react","React","ReactDOM","createClass","componentDidMount","findDOMNode","setState","componentDidUpdate","updateProps","componentWillUnmount","destroy","Component","vue","inheritAttrs","mounted","$el","$attrs","beforeUpdate","angular","ng","directive","scope","getPropNames","looseProps","restrict","controller","$scope","$element","safeApply","$root","$$phase","$apply","getProps","scopeProps","angularWrapped","$watch","glimmer","GlimmerComponent","didInsertElement","angular2","zoid","AngularComponent","NgModule","ElementRef","NgZone","internalProps","angular2Wrapped","zone","run","ComponentInstance","template","inputs","Class","angularConstructor","elementRef","ngOnInit","targetElement","nativeElement","ngOnChanges","ModuleInstance","declarations","e","r","C","o","u","f","l","h","p","d","y","w","E","S","x","T","N","whale","mzbrowser","coast","focus","yandexbrowser","maxthon","epiphany","puffin","sleipnir","kMeleon","osname","windowsphone","chromeos","chromeBook","sailfish","seamonkey","firefoxos","phantom","slimer","blackberry","webos","touchpad","bada","tizen","qupzilla","chromium","googlebot","blink","webkit","gecko","android","ios","mac","xbox","windows","linux","k","osversion","L","tablet","mobile","s","reverse","isUnsupportedBrowser","compareVersions","_detect","detect","sourceWindow","paypal","__MINOR_VERSION__","Button","existingVersion","_interface","errtype","_assertThisInitialized","ReferenceError","_applyDecoratedDescriptor","property","decorators","initializer","reduce","decorator","complete","hasTasks","BaseComponent","addProp","createError","listenerName","errorListener","normalize","buildChildWindowName","encodedName","encodedVersion","encodedOptions","isZoidComponentWindow","zoidcomp","getComponentMeta","componentMeta","getParentDomain","getWindowByRef","ref","componentParent","getParentRenderWindow","renderParent","getPosition","normalizeChildProp","getProp","childDecorate","normalizeChildProps","required","sameDomain","alias","ChildComponent","onPropHandlers","onInit","watchingForResize","autoResize","hasValidParentDomain","setProps","getInitialProps","setWindows","watchForResize","allowedParentDomains","onProps","func","normalizedProps","__activeZoidComponent__","watchForClose","checkClose","enableAutoResize","getAutoResize","resize","hide","show","userClose","reason","stringifiedError","_defineProperties","_createClass","Constructor","protoProps","staticProps","RENDER_DRIVERS","focusable","renderedIntoContainerTemplate","allowResize","openOnClick","childWindowName","title","scrolling","frameWindow","detectClose","onClose","iframeWatcher","elementWatcher","openPrerender","prerenderIframe","prerenderFrameWindow","prerenderWindow","switchPrerender","delegateOverrides","openContainer","destroyComponent","destroyContainer","cancelContainerEvents","createPrerenderTemplate","showContainer","showComponent","hideContainer","hideComponent","loadUrl","hijackSubmit","renderTemplate","openContainerFrame","getOutlet","override","overrideOpen","validateProp","hasProp","sendToChild","isNaN","validate","validateProps","normalizeProp","instance","resultValue","decorated","decorate","bind","normalizeProps","normalizedProp","queryParam","getQueryValue","queryValue","propsToQuery","propsDef","serialization","dotkey","escape","ParentComponent","handledErrors","outlet","childExports","validateParentDomain","renderTo","registerActiveComponent","watchForUnload","tryInit","onRender","driver","linkDomain","loadHTML","buildUrl","runTimeout","onEnter","checkAllowRenderTo","delegate","prefetch","activeComponents","getComponentParentRef","getRenderParentRef","renderToWindow","childDomain","sProps","getPropsForChild","secureProps","unsafeRenderTo","propUrl","builtinProps","getValidDomain","getUrl","finalUrl","xcomponent","builtUrl","needsBridgeParams","bridgeUrl","getBridgeUrl","bridgeDomain","getBridgeDomain","windowName","prerenderTemplate","onDisplay","propName","allowDelegate","overrides","overridenFunction","closeWindowListener","onunload","unloadWindowListener","hijack","onTimeout","closeComponent","closeContainer","renderer","CLASS","ANIMATION","CONTEXT","EVENT","actions","containerTemplate","errErr","destroyAll","DelegateComponent","getOverrides","delegateOverride","validatePropDefinitions","contexts","anyEnabled","defaultContext","defaultEnv","defaultContainerTemplate","defaultPrerenderTemplate","getInternalProps","defaultLogLevel","drivers","listenForResize","driverCache","components","registerDrivers","registerChild","listenDelegate","driverName","dep","isChild","canRenderTo","getForEnv","envUrl","isZoidComponent","getRenderContext","validateRenderContext","getDefaultContext","renderIframe","renderPopup","renderIframeTo","renderPopupTo","prerender","innerProps","innerElement","logWarning","getByTag","postRobot","_postRobot","_CONSTANTS","proxyMethod","originalMethod","postMessageProxy","getRefererDomain","setupProxyLogTransport","getToken","queryToken","initLogger","referer","ver","paymentToken","contextType","contextID","__DEFAULT_LOG_LEVEL__","loggerConfig","POSTROBOT_CONFIG","bowserCache","getBowser","bowser","getBrowser","browser","isBrowserEligible","eligibilityResults","isEligible","checkRecognizedBrowser","flushLogs","checkForCommonErrors","foo","bar","baz","zomg","returnContext","corrids","prev_corr_ids","corrID","xhrError","getResponseHeader","post","getThrottle","sticky","percentile","expuid","getReturnToken","payer","getCurrentScript","isPayPalObjects","getScriptVersion","__MIN__","getCurrentScriptUrl","getDomainSetting","openMetaFrame","iframeEligible","iframeEligibleReason","rememberedFunding","metaFrameUrl","metaFrameDomain","metaListener","getRememberedFunding","hasRememberedFunding","recentlyCheckedRemembered","isRememberedFunding","getRememberedFundingPromises","rememberFundingPromises","getRememberedFundingPromise","flushRememberedFundingPromises","sources","rememberFunding","loadMeta","isFundingRemembered","precacheRememberedFunding","JsxHTMLNode","propsToString","childrenToString","iterate","JsxHTMLNodeContainer","jsxToHTML","jsxRender","renderers","break","onAuthorize","onLegacyPaymentAuthorize","postBridge","watchForLegacyFallback","isLegacy","ppxoWatching","XMLHttpRequestsend","overrideXMLHttpRequestSend","_patched","DONE","returnUrl","billingToken","payerID","paymentID","Checkout","XhrResponse","RESPONSE_TYPES","mob","Xhr","_xhrOnReady","onLegacyFallback","determineParameterFromToken","getPaymentType","payment","determineUrl","fundingSource","paymentType","awaitBraintreeClient","braintree","auth","authorization","paypalCheckout","SUPPORTED_REST_FIELDS","intent","transactions","amount","currency","external_selected_funding_instrument_type","shipping_address","line1","line2","city","postal_code","country_code","phone","recipient_name","application_context","brand_name","shipping_preference","landing_page","supported","supportedKeys","mapPaymentToBraintree","btPayment","flow","offerCredit","shippingAddressOverride","postalCode","countryCode","recipientName","landingPageType","enableShippingAddress","shippingAddressEditable","checkoutComponentStyle","componentTemplate","P24_LOGO_COLORS","primary","secondary","p24Logo","logoColor","SOFORT_LOGO_COLORS","sofortLogo","IDEAL_LOGO_COLORS","tertiary","idealLogo","GIROPAY_LOGO_COLORS","giropayLogo","EPS_LOGO_COLORS","epsLogo","MYBANK_LOGO_COLORS","mybankLogo","BANCONTACT_LOGO_COLORS","bancontactLogo","PAYU_LOGO_COLORS","quaternary","payuLogo","VERKKOPANKKI_LOGO_COLORS","quinary","senary","verkkopankkiLogo","BLIK_LOGO_COLORS","blikLogo","TRUSTLY_LOGO_COLORS","trustlyLogo","MAXIMA_LOGO_COLORS","maximaLogo","BOLETO_LOGO_COLORS","boletoLogo","OXXO_LOGO_COLORS","oxxoLogo","PAYPAL_LOGO_COLORS","paypalLogo","CREDIT_LOGO_COLORS","creditLogo","fundingLogos","pp_white","pp_blue","pp_black","venmo_white","venmo_blue","itau","elv","elv_white","cardLogos","visa","amex","mastercard","maestro","discover","hiper","elo","jcb","cup","containerContent","getContainerStyle","getSandboxStyle","LOGO_COLOR","preventDefault","alert","overlayColor","ppLogo","pp","windowMessage","continue","addHeader","$Api","commit","experience","fundingOffered","elements","fundingSources","decorateOnAuthorize","redir","isButton","isGuest","access_token","onShippingChange","onAuth","wrapOnAuth","accessToken","onCancel","decorateOnCancel","cancelUrl","decorateInit","decorateOnClose","shouldCancel","fallback","defaultFallback","__test__","action","sdkMeta","injector","payment_action","_context","containerStyle","BillingPage","cardType","prefilledZipCode","onEvent","ThreeDomainSecure","challengeUrl","threeDomainSecureToken","shouldCreateInitialPptmScript","existingScript","alreadyDownloaded","removePptm","pptmFactory","noContentFoundInContainer","reloadPptmScript","clientId","tryCreatePptmScript","shouldReloadPptmScript","createPptmScript","listenForLoadWithNoContent","listenForButtonRender","paypalDDL","buttonRenderEvent","mrid","client_id","fullUrl","async","pptm","proxyRest","createAccessToken","clientID","basicAuth","Authorization","grant_type","createExperienceProfile","experienceDetails","temporary","logPaymentResponse","links","rel","getDefaultReturnUrl","createTracking","trackingData","trackingID","createPayment","paymentDetails","redirect_urls","return_url","cancel_url","payment_method","experienceID","experience_profile_id","partner_attribution_id","createOrder","purchase_units","unit","reference_id","createBillingAgreement","billingDetails","plan","merchant_preferences","token_id","rest","billingAgreement","PROXY_REST","parentWin","onAuthorizeListener","loggedEvents","loggedExperimentEvents","duplicate","edge","logExperimentTreatment","externalExperiment","externalExperimentTreatment","externalExperimentToken","logReturn","returnToken","OPTYPE","PAYMENT","CANCEL","CONTINGENCY","PAYMENT_CANCELLED","wrapPopupBridge","popupBridge","onComplete","redirect_uri","getReturnUrlPrefix","validateCheckoutProps","normalizeCheckoutProps","useraction","native_xo","extractDataFromQuery","ba_token","paymentId","PayerID","opType","return_uri","cancel_uri","buildActions","redirectUrl","renderThroughPopupBridge","queryItems","awaitPopupBridge","setupPopupBridgeProxy","doRender","popupBridgeRender","popupBridgeRenderTo","popupBridgeRenderPopupTo","FUNDING_PRIORITY","FUNDING_ORDER","FUNDING_CONFIG","enabled","allowOptIn","allowOptOut","allowRemember","allowHorizontal","allowVertical","requireCommitAsTrue","__paypal_checkout__","serverConfig","paypalMerchantConfiguration","creditCard","isPayPalBranded","allowedCountries","defaultVerticalCountries","platforms","allowedEnvs","CARD_CONFIG","priority","getConfig","category","categoryConfig","getFundingConfig","getCardConfig","fundingEligibilityReasons","isFundingIneligible","funding","layout","isVertical","allowSecondary","disallowed","isFundingAutoEligible","allowed","remembered","isFundingEligible","selected","eligible","ineligibleReason","autoEligibleReason","determineEligibleFunding","reasons","eligibleFunding","factors","unshift","determineEligibleCards","card","validateFunding","logFundingEligibility","table","BUTTON_CONFIG","colors","sizes","shapes","layouts","logoColors","tagLineColors","secondaryColors","dualTag","defaultLabel","defaultVerticalLabel","defaultColor","defaultSize","defaultVerticalSize","defaultShape","defaultLayout","defaultBranding","defaultVerticalBranding","defaultFundingIcons","defaultTagline","defaultDual","minimumSize","minimumVerticalSize","maximumSize","maximumVerticalSize","minHorizontalButtons","minVerticalButtons","maxHorizontalButtons","maxVerticalButtons","allowUnbranded","allowFundingIcons","allowPrimary","allowPrimaryVertical","allowPrimaryHorizontal","label","logoLabel","installmentperiod","allowSecondaryVertical","allowSecondaryHorizontal","FUNDING_TO_DEFAULT_LABEL","LABEL_TO_FUNDING","BUTTON_RELATIVE_STYLE","VERTICAL_MARGIN","BUTTON_STYLE","defaultWidth","defaultHeight","minWidth","maxWidth","minHeight","maxHeight","buttonTextMargin","allowFunding","allowTagline","byPayPalHeight","labelToFunding","fundingToDefaultLabel","getButtonConfig","parseLocale","determineMaxButtons","configMax","enableTagline","tagline","branding","fundingicons","defs","checkoutCustomization","size","color","shape","multiple","cards","validateButtonLocale","validateRegionSpecificButton","isInstallmentAllowedCountry","validateButtonStyle","maxbuttons","minButtons","buttonSize","validateButtonProps","SHOULD_FOCUS","CONTAINER","TAGLINE_COLOR","TEXT","LOGO","SEPARATOR","DOM_READY","PERSONALIZATION_TEXT","pageStyle","buttonStyle","layoutStyle","brandingStyle","labelStyle","DUAL_BUTTON_MIN_RATIO","buttonResponsiveStyle","cardNumber","buttonHeight","buttonTextMarginTop","minDualWidth","ceil","toFixed","buttonColorStyle","componentStyle","LoadingDots","Beacon","impression","Tagline","tagColor","getComponentScript","OPTIONAL","SELECTOR","TAG","toArray","parentElement","sum","getAllChildren","getOptionalIndex","getElementsTotalWidth","getOptionalParents","optional","getOptionalChildren","first","second","optionalParent","allChildren","optionalChildren","toggleOptionals","parentWidth","usedWidth","optionalChild","setupTabOutlineEvent","buttonsContainer","getElementsByClassName","tabKeyCode","handleMouseDownOnce","handleFirstTab","setDomReady","load","componentContent","allowedPersonalizationLabels","getCommonButtonClasses","getButtonClasses","getLocaleContent","determineLabel","labelMatchesFunding","determineButtons","buttonLabel","buttonColor","renderCards","logo","renderFundingIcons","renderPersonalizationButtonText","getButtonTextAnimationStyle","personalizedButtonText","allowedAnimation","MIN_WIDTH","LABEL_DURATION","PERSONALIZATION_DURATION","DELAY","COMPRESSED","EXPANDED","PAYPAL_BUTTON","PAYPAL_LOGO","BUTTON_TEXT","renderContent","dynamicContent","contentString","contentVariable","separator","renderButtonTextDiv","contentText","renderButton","morsText","buttonText","__WEB__","hasTabIndex","renderTagline","renderScript","renderStyle","renderPowerByPaypalLogo","isCardDisallowed","buttonNodes","taglineNode","fundingiconNode","styleNode","scriptNode","labelPowerByPayPal","possibleSizes","possibleSize","sizeA","sizeB","setupButtonChild","ButtonComponent","pageRenderTime","onApprove","pre","inlineGuest","treatments","isCreditDualEligible","creditThrottle","allowpaymentrequest","enableNativeCheckout","prefetchLogin","updateClientConfiguration","memoizedToken","button_version","remember","decorateOnRender","restart","tokenize","tokenizePayment","execute","nonce","decorateOnShippingChange","patch","patchObject","decorateOnClick","initialHeight","logInlineGuestOutOfViewPortOnlyOnce","onResizeHandler","getScrollOffsetY","pageYOffset","scrollTop","checkIfExpansionInViewport","scrollOffsetY","windowHeight","containerOffsetY","VISIBLE_THRESHOLD","isContainerExpanded","isExpansionInViewport","decorateValidate","validateCalled","getPageUrl","canRenderTop","methodName","unDebounce","createOriginal","createContext","originalPayment","resolveData","rejectActions","ctx","Card","initialFormValues","cardIcons","display","submitButton","currencyConversion","domainToEnv","setDomainEnv","currentDomainEnv","err3","currentProtocol","configure","precacheRemembered","setup","scriptProtocol","loadTime","apps","PayPalCheckout","enableCheckoutIframe","logger","_enableCheckoutIframe","_Checkout","_BillingPage","_ThreeDomainSecure","_destroyAll"],"mappings":"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","file":"checkout.v4.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 52);\n","/* @flow */\n\nimport type { Enum } from '../types';\n\ntype BUTTON_STYLE_OPTIONS_ENUM =\n Enum<'label' | 'size' | 'shape' | 'color' | 'layout' |\n 'fundingicons' | 'maxbuttons' | 'branding' | 'tagline' | 'height' | 'installmentperiod'>;\n\nexport const BUTTON_STYLE_OPTIONS : BUTTON_STYLE_OPTIONS_ENUM = {\n LABEL: 'label',\n SIZE: 'size',\n SHAPE: 'shape',\n COLOR: 'color',\n LAYOUT: 'layout',\n MAXBUTTONS: 'maxbuttons',\n FUNDINGICONS: 'fundingicons',\n BRANDING: 'branding',\n TAGLINE: 'tagline',\n HEIGHT: 'height',\n INSTALLMENTPERIOD: 'installmentperiod'\n};\n\ntype BUTTON_LABEL_ENUM =\n Enum<'paypal' | 'checkout' | 'pay' | 'credit' |\n 'card' | 'buynow' | 'installment' | 'venmo' | 'itau' | 'ideal' | 'elv' | 'bancontact' | 'giropay' | 'sofort' | 'eps' | 'mybank' | 'p24' | 'payu' | 'verkkopankki' | 'blik' | 'trustly' | 'maxima' | 'boleto' | 'oxxo'>;\n\nexport const BUTTON_LABEL : BUTTON_LABEL_ENUM = {\n PAYPAL: 'paypal',\n CHECKOUT: 'checkout',\n PAY: 'pay',\n CREDIT: 'credit',\n CARD: 'card',\n BUYNOW: 'buynow',\n INSTALLMENT: 'installment',\n VENMO: 'venmo',\n ITAU: 'itau',\n IDEAL: 'ideal',\n ELV: 'elv',\n BANCONTACT: 'bancontact',\n GIROPAY: 'giropay',\n SOFORT: 'sofort',\n EPS: 'eps',\n MYBANK: 'mybank',\n P24: 'p24',\n PAYU: 'payu',\n VERKKOPANKKI: 'verkkopankki',\n BLIK: 'blik',\n TRUSTLY: 'trustly',\n MAXIMA: 'maxima',\n BOLETO: 'boleto',\n OXXO: 'oxxo'\n};\n\ntype BUTTON_COLOR_ENUM =\n Enum<'gold' | 'blue' | 'silver' | 'black' | 'darkblue' | 'transparent' | 'white'>;\n\nexport const BUTTON_COLOR : BUTTON_COLOR_ENUM = {\n GOLD: 'gold',\n BLUE: 'blue',\n SILVER: 'silver',\n BLACK: 'black',\n DARKBLUE: 'darkblue',\n WHITE: 'white',\n TRANSPARENT: 'transparent'\n};\n\ntype BUTTON_LOGO_COLOR_ENUM =\n Enum<'blue' | 'white' | 'black' | 'any'>;\n\nexport const BUTTON_LOGO_COLOR : BUTTON_LOGO_COLOR_ENUM = {\n BLUE: 'blue',\n WHITE: 'white',\n BLACK: 'black',\n ANY: 'any'\n};\n\ntype BUTTON_SIZE_ENUM =\n Enum<'tiny' | 'small' | 'medium' | 'large' | 'huge' | 'responsive'>;\n\nexport const BUTTON_SIZE : BUTTON_SIZE_ENUM = {\n TINY: 'tiny',\n SMALL: 'small',\n MEDIUM: 'medium',\n LARGE: 'large',\n HUGE: 'huge',\n RESPONSIVE: 'responsive'\n};\n\ntype BUTTON_TAGLINE_COLOR_ENUM =\n Enum<'black' | 'blue'>;\n\nexport const BUTTON_TAGLINE_COLOR : BUTTON_TAGLINE_COLOR_ENUM = {\n BLACK: 'black',\n BLUE: 'blue'\n};\n\ntype BUTTON_SHAPE_ENUM =\n Enum<'pill' | 'rect'>;\n\nexport const BUTTON_SHAPE : BUTTON_SHAPE_ENUM = {\n PILL: 'pill',\n RECT: 'rect'\n};\n\ntype BUTTON_BRANDING_ENUM =\n Enum<'branded' | 'unbranded'>;\n\nexport const BUTTON_BRANDING : BUTTON_BRANDING_ENUM = {\n BRANDED: 'branded',\n UNBRANDED: 'unbranded'\n};\n\ntype BUTTON_LAYOUT_ENUM =\n Enum<'horizontal' | 'vertical'>;\n\nexport const BUTTON_LAYOUT : BUTTON_LAYOUT_ENUM = {\n HORIZONTAL: 'horizontal',\n VERTICAL: 'vertical'\n};\n\ntype BUTTON_NUMBER_ENUM =\n Enum<'single' | 'multiple'>;\n\nexport const BUTTON_NUMBER : BUTTON_NUMBER_ENUM = {\n SINGLE: 'single',\n MULTIPLE: 'multiple'\n};\n\ntype BUTTON_LOGO_ENUM =\n Enum<'pp' | 'paypal' | 'venmo' | 'itau' | 'credit' | 'ideal' | 'elv' | 'bancontact' | 'giropay' | 'sofort' | 'eps' | 'mybank' | 'p24' | 'payu' | 'verkkopankki' | 'blik' | 'trustly' | 'maxima' | 'boleto' | 'oxxo'>;\n\nexport const BUTTON_LOGO : BUTTON_LOGO_ENUM = {\n PP: 'pp',\n PAYPAL: 'paypal',\n VENMO: 'venmo',\n ITAU: 'itau',\n CREDIT: 'credit',\n IDEAL: 'ideal',\n ELV: 'elv',\n BANCONTACT: 'bancontact',\n GIROPAY: 'giropay',\n SOFORT: 'sofort',\n EPS: 'eps',\n MYBANK: 'mybank',\n P24: 'p24',\n PAYU: 'payu',\n VERKKOPANKKI: 'verkkopankki',\n BLIK: 'blik',\n TRUSTLY: 'trustly',\n MAXIMA: 'maxima',\n BOLETO: 'boleto',\n OXXO: 'oxxo'\n};\n","/* @flow */\n\nexport const CHECKOUT_OVERLAY_COLOR = {\n BLACK: 'black',\n WHITE: 'white'\n};\n","/* @flow */\n\nexport const FUNDING = {\n PAYPAL: 'paypal',\n VENMO: 'venmo',\n ITAU: 'itau',\n CREDIT: 'credit',\n CARD: 'card',\n IDEAL: 'ideal',\n ELV: 'elv',\n BANCONTACT: 'bancontact',\n GIROPAY: 'giropay',\n SOFORT: 'sofort',\n EPS: 'eps',\n MYBANK: 'mybank',\n P24: 'p24',\n ZIMPLER: 'zimpler',\n PAYU: 'payu',\n VERKKOPANKKI: 'verkkopankki',\n BLIK: 'blik',\n TRUSTLY: 'trustly',\n MAXIMA: 'maxima',\n BOLETO: 'boleto',\n OXXO: 'oxxo'\n};\n\nexport const CARD = {\n VISA: 'visa',\n MASTERCARD: 'mastercard',\n AMEX: 'amex',\n DISCOVER: 'discover',\n SWITCH: 'switch',\n MAESTRO: 'maestro',\n HIPER: 'hiper',\n ELO: 'elo',\n JCB: 'jcb',\n CUP: 'cup',\n COFINOGA: 'cofinoga',\n COFIDIS: 'cofidis',\n CETELEM: 'cetelem',\n CBNATIONALE: 'cbnationale'\n};\n\nexport const FUNDING_ELIGIBILITY_REASON = {\n PRIMARY: 'The funding source is the primary source',\n NOT_ENABLED: 'The funding source is not currently enabled for use',\n SECONDARY_DISALLOWED: 'The funding source is disallowed as a secondary button',\n OPT_OUT: 'The funding source was disallowed in funding.disallowed',\n OPT_IN: 'The funding source was allowed in funding.allowed',\n DISALLOWED_COUNTRY: 'The funding source is not enabled for the current locale',\n DEFAULT_COUNTRY: 'The funding source is enabled by default for the current locale',\n DEFAULT: 'The funding source is enabled by default for all users',\n REMEMBERED: 'The funding source was remembered for the current user',\n NEED_OPT_IN: 'The funding source needs to be allowed in funding.allowed',\n COMMIT_NOT_SET: 'The funding source is not enabled when commit is not set as true',\n INVALID_ENV: 'The funding source is not supported in this environment'\n};\n\nexport const CARD_PRIORITY = [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.DISCOVER,\n CARD.SWITCH,\n CARD.MAESTRO,\n CARD.HIPER,\n CARD.ELO,\n CARD.JCB,\n CARD.CUP,\n CARD.COFINOGA,\n CARD.COFIDIS,\n CARD.CETELEM,\n CARD.CBNATIONALE\n];\n","/* @flow */\n\nexport const ENV = {\n LOCAL: 'local',\n STAGE: 'stage',\n SANDBOX: 'sandbox',\n PRODUCTION: 'production',\n TEST: 'test',\n DEMO: 'demo'\n};\n\nexport const USERS = {\n ALL: 'all',\n REMEMBERED: 'remembered'\n};\n\nexport const SOURCE = {\n MANUAL: 'manual',\n BUTTON_FACTORY: 'button_factory'\n};\n\nexport const LOG_LEVEL = {\n DEBUG: 'debug',\n INFO: 'info',\n WARN: 'warn',\n ERROR: 'error'\n};\n\nexport const PAYMENT_TYPE = {\n EC_TOKEN: 'ec_token',\n BA_TOKEN: 'ba_token',\n PAY_ID: 'pay_id'\n};\n\nexport const PPTM_ID = 'xo-pptm';\n\nexport const ATTRIBUTE = {\n BUTTON: 'data-button',\n FUNDING_SOURCE: 'data-funding-source',\n CARD: 'data-card',\n VERSION: 'data-version',\n LAYOUT: 'data-layout',\n SIZE: 'data-size'\n};\n\nexport const PLATFORM = {\n DESKTOP: 'desktop',\n MOBILE: 'mobile'\n};\n\nexport const DEFAULT = 'default';\n\n\n","/* @flow */\n\nimport { PAYMENT_TYPE } from './misc';\n\nexport const FPTI = {\n\n KEY: {\n FEED: 'feed_name',\n STATE: 'state_name',\n TRANSITION: 'transition_name',\n BUTTON_TYPE: 'button_type',\n SESSION_UID: 'page_session_id',\n BUTTON_SESSION_UID: 'button_session_id',\n TOKEN: 'token',\n CONTEXT_ID: 'context_id',\n CONTEXT_TYPE: 'context_type',\n REFERER: 'referer_url',\n PAY_ID: 'pay_id',\n SELLER_ID: 'seller_id',\n DATA_SOURCE: 'serverside_data_source',\n BUTTON_SOURCE: 'button_source',\n ERROR_CODE: 'ext_error_code',\n ERROR_DESC: 'ext_error_desc',\n PAGE_LOAD_TIME: 'page_load_time',\n EXPERIMENT_NAME: 'pxp_exp_id',\n TREATMENT_NAME: 'pxp_trtmnt_id',\n TRANSITION_TIME: 'transition_time',\n FUNDING_LIST: 'eligible_payment_methods',\n FUNDING_COUNT: 'eligible_payment_count',\n CHOSEN_FUNDING: 'selected_payment_method',\n BUTTON_LAYOUT: 'button_layout',\n BUTTON_COLOR: 'button_color',\n BUTTON_SIZE: 'button_size',\n BUTTON_SHAPE: 'button_shape',\n BUTTON_LABEL: 'button_label',\n BUTTON_WIDTH: 'button_width',\n VERSION: 'checkoutjs_version',\n MAX_BUTTONS: 'max_buttons',\n FUNDING_REMEMBERED: 'funding_remembered',\n BUTTON_TAGLINE_ENABLED: 'button_tagline_enabled',\n RESPONSE_DURATION: 'response_duration',\n PAYMENT_FLOW: 'payment_flow',\n BUTTON_VERSION: 'button_version'\n },\n\n BUTTON_TYPE: {\n IFRAME: 'iframe',\n HTML: 'html',\n CUSTOM: 'custom'\n },\n\n DATA_SOURCE: {\n CHECKOUT: 'checkout'\n },\n\n CONTEXT_TYPE: {\n BUTTON_SESSION_ID: 'button_session_id',\n [ PAYMENT_TYPE.PAY_ID ]: 'Pay-ID',\n [ PAYMENT_TYPE.EC_TOKEN ]: 'EC-Token',\n [ PAYMENT_TYPE.BA_TOKEN ]: 'EC-Token'\n },\n\n FEED: {\n CHECKOUTJS: 'checkoutjs'\n },\n\n STATE: {\n LOAD: 'checkoutjs_load',\n BUTTON: 'checkoutjs_button',\n CHECKOUT: 'checkoutjs_checkout',\n PPTM: 'checkoutjs_pptm'\n },\n\n TRANSITION: {\n SCRIPT_LOAD: 'process_script_load',\n\n BUTTON_RENDER: 'process_button_render',\n BUTTON_LOAD: 'process_button_load',\n BUTTON_CLICK: 'process_button_click',\n\n BUTTON_RENDER_INTRANET_MODE: 'process_button_render_intranet_mode',\n BUTTON_CLICK_INTRANET_MODE: 'process_button_click_intranet_mode',\n\n CREATE_PAYMENT: 'process_create_payment',\n RECIEVE_PAYMENT: 'process_recieve_payment',\n\n CHECKOUT_INIT: 'process_checkout_init',\n CHECKOUT_AUTHORIZE: 'process_checkout_authorize',\n CHECKOUT_SHIPPING_CHANGE: 'process_checkout_shipping_change',\n CHECKOUT_CANCEL: 'process_checkout_cancel',\n CHECKOUT_ERROR: 'process_checkout_error',\n\n EXTERNAL_EXPERIMENT: 'process_external_experiment',\n EXTERNAL_EXPERIMENT_COMPLETE: 'process_external_experiment_complete',\n\n PPTM_LOAD: 'process_pptm_load',\n PPTM_LOADED: 'process_pptm_loaded'\n }\n};\n","/* @flow */\n\nexport const COUNTRY = {\n AD: 'AD',\n AE: 'AE',\n AG: 'AG',\n AI: 'AI',\n AL: 'AL',\n AM: 'AM',\n AN: 'AN',\n AO: 'AO',\n AR: 'AR',\n AT: 'AT',\n AU: 'AU',\n AW: 'AW',\n AZ: 'AZ',\n BA: 'BA',\n BB: 'BB',\n BE: 'BE',\n BF: 'BF',\n BG: 'BG',\n BH: 'BH',\n BI: 'BI',\n BJ: 'BJ',\n BM: 'BM',\n BN: 'BN',\n BO: 'BO',\n BR: 'BR',\n BS: 'BS',\n BT: 'BT',\n BW: 'BW',\n BY: 'BY',\n BZ: 'BZ',\n C2: 'C2',\n CA: 'CA',\n CD: 'CD',\n CG: 'CG',\n CH: 'CH',\n CI: 'CI',\n CK: 'CK',\n CL: 'CL',\n CM: 'CM',\n CN: 'CN',\n CO: 'CO',\n CR: 'CR',\n CV: 'CV',\n CY: 'CY',\n CZ: 'CZ',\n DE: 'DE',\n DJ: 'DJ',\n DK: 'DK',\n DM: 'DM',\n DO: 'DO',\n DZ: 'DZ',\n EC: 'EC',\n EE: 'EE',\n EG: 'EG',\n ER: 'ER',\n ES: 'ES',\n ET: 'ET',\n FI: 'FI',\n FJ: 'FJ',\n FK: 'FK',\n FM: 'FM',\n FO: 'FO',\n FR: 'FR',\n GA: 'GA',\n GB: 'GB',\n GD: 'GD',\n GE: 'GE',\n GF: 'GF',\n GI: 'GI',\n GL: 'GL',\n GM: 'GM',\n GN: 'GN',\n GP: 'GP',\n GR: 'GR',\n GT: 'GT',\n GW: 'GW',\n GY: 'GY',\n HK: 'HK',\n HN: 'HN',\n HR: 'HR',\n HU: 'HU',\n ID: 'ID',\n IE: 'IE',\n IL: 'IL',\n IN: 'IN',\n IS: 'IS',\n IT: 'IT',\n JM: 'JM',\n JO: 'JO',\n JP: 'JP',\n KE: 'KE',\n KG: 'KG',\n KH: 'KH',\n KI: 'KI',\n KM: 'KM',\n KN: 'KN',\n KR: 'KR',\n KW: 'KW',\n KY: 'KY',\n KZ: 'KZ',\n LA: 'LA',\n LC: 'LC',\n LI: 'LI',\n LK: 'LK',\n LS: 'LS',\n LT: 'LT',\n LU: 'LU',\n LV: 'LV',\n MA: 'MA',\n MC: 'MC',\n MD: 'MD',\n ME: 'ME',\n MG: 'MG',\n MH: 'MH',\n MK: 'MK',\n ML: 'ML',\n MN: 'MN',\n MQ: 'MQ',\n MR: 'MR',\n MS: 'MS',\n MT: 'MT',\n MU: 'MU',\n MV: 'MV',\n MW: 'MW',\n MX: 'MX',\n MY: 'MY',\n MZ: 'MZ',\n NA: 'NA',\n NC: 'NC',\n NE: 'NE',\n NF: 'NF',\n NG: 'NG',\n NI: 'NI',\n NL: 'NL',\n NO: 'NO',\n NP: 'NP',\n NR: 'NR',\n NU: 'NU',\n NZ: 'NZ',\n OM: 'OM',\n PA: 'PA',\n PE: 'PE',\n PF: 'PF',\n PG: 'PG',\n PH: 'PH',\n PL: 'PL',\n PM: 'PM',\n PN: 'PN',\n PT: 'PT',\n PW: 'PW',\n PY: 'PY',\n QA: 'QA',\n RE: 'RE',\n RO: 'RO',\n RS: 'RS',\n RU: 'RU',\n RW: 'RW',\n SA: 'SA',\n SB: 'SB',\n SC: 'SC',\n SE: 'SE',\n SG: 'SG',\n SH: 'SH',\n SI: 'SI',\n SJ: 'SJ',\n SK: 'SK',\n SL: 'SL',\n SM: 'SM',\n SN: 'SN',\n SO: 'SO',\n SR: 'SR',\n ST: 'ST',\n SV: 'SV',\n SZ: 'SZ',\n TC: 'TC',\n TD: 'TD',\n TG: 'TG',\n TH: 'TH',\n TJ: 'TJ',\n TM: 'TM',\n TN: 'TN',\n TO: 'TO',\n TR: 'TR',\n TT: 'TT',\n TV: 'TV',\n TW: 'TW',\n TZ: 'TZ',\n UA: 'UA',\n UG: 'UG',\n US: 'US',\n UY: 'UY',\n VA: 'VA',\n VC: 'VC',\n VE: 'VE',\n VG: 'VG',\n VN: 'VN',\n VU: 'VU',\n WF: 'WF',\n WS: 'WS',\n YE: 'YE',\n YT: 'YT',\n ZA: 'ZA',\n ZM: 'ZM',\n ZW: 'ZW'\n};\n\nexport const LANG = {\n AR: 'ar',\n CS: 'cs',\n DA: 'da',\n DE: 'de',\n EL: 'el',\n EN: 'en',\n ES: 'es',\n FI: 'fi',\n FR: 'fr',\n HE: 'he',\n HU: 'hu',\n ID: 'id',\n IT: 'it',\n JA: 'ja',\n KO: 'ko',\n NL: 'nl',\n NO: 'no',\n PL: 'pl',\n PT: 'pt',\n RU: 'ru',\n SK: 'sk',\n SV: 'sv',\n TH: 'th',\n TR: 'tr',\n ZH: 'zh'\n};\n\nexport const LANG_TO_DEFAULT_COUNTRY = {\n [LANG.AR]: COUNTRY.SA,\n [LANG.CS]: COUNTRY.CZ,\n [LANG.DA]: COUNTRY.DK,\n [LANG.DE]: COUNTRY.DE,\n [LANG.EL]: COUNTRY.GR,\n [LANG.EN]: COUNTRY.US,\n [LANG.ES]: COUNTRY.ES,\n [LANG.FI]: COUNTRY.FI,\n [LANG.FR]: COUNTRY.FR,\n [LANG.HE]: COUNTRY.IL,\n [LANG.HU]: COUNTRY.HU,\n [LANG.ID]: COUNTRY.ID,\n [LANG.IT]: COUNTRY.IT,\n [LANG.JA]: COUNTRY.JP,\n [LANG.KO]: COUNTRY.KR,\n [LANG.NL]: COUNTRY.NL,\n [LANG.NO]: COUNTRY.NO,\n [LANG.PL]: COUNTRY.PL,\n [LANG.PT]: COUNTRY.PT,\n [LANG.RU]: COUNTRY.RU,\n [LANG.SK]: COUNTRY.SK,\n [LANG.SV]: COUNTRY.SE,\n [LANG.TH]: COUNTRY.TH,\n [LANG.TR]: COUNTRY.TR,\n [LANG.ZH]: COUNTRY.CN\n};\n\nexport const ALLOWED_INSTALLMENT_COUNTRIES = [ COUNTRY.BR, COUNTRY.MX ];\nexport const ALLOWED_INSTALLMENT_PERIOD = {\n BR: [ 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ],\n MX: [ 3, 6, 9, 12 ]\n};\n","/* @flow */\n\nimport { COUNTRY, LANG } from './country';\n\nexport const LOCALE = {\n [COUNTRY.AD]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AE]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH, LANG.AR ],\n [COUNTRY.AG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AI]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AL]: [ LANG.EN ],\n [COUNTRY.AM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AN]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AO]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AR]: [ LANG.ES, LANG.EN ],\n [COUNTRY.AT]: [ LANG.DE, LANG.EN ],\n [COUNTRY.AU]: [ LANG.EN ],\n [COUNTRY.AW]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.AZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BA]: [ LANG.EN ],\n [COUNTRY.BB]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BE]: [ LANG.EN, LANG.NL, LANG.FR ],\n [COUNTRY.BF]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.BG]: [ LANG.EN ],\n [COUNTRY.BH]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BI]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.BJ]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.BM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BN]: [ LANG.EN ],\n [COUNTRY.BO]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.BR]: [ LANG.PT, LANG.EN ],\n [COUNTRY.BS]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BT]: [ LANG.EN ],\n [COUNTRY.BW]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.BY]: [ LANG.EN ],\n [COUNTRY.BZ]: [ LANG.EN, LANG.ES, LANG.FR, LANG.ZH ],\n [COUNTRY.C2]: [ LANG.ZH, LANG.EN ],\n [COUNTRY.CA]: [ LANG.EN, LANG.FR ],\n [COUNTRY.CD]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.CG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.CH]: [ LANG.DE, LANG.FR, LANG.EN ],\n [COUNTRY.CI]: [ LANG.FR, LANG.EN ],\n [COUNTRY.CK]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.CL]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.CM]: [ LANG.FR, LANG.EN ],\n [COUNTRY.CN]: [ LANG.ZH ],\n [COUNTRY.CO]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.CR]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.CV]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.CY]: [ LANG.EN ],\n [COUNTRY.CZ]: [ LANG.CS, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.DE]: [ LANG.DE, LANG.EN ],\n [COUNTRY.DJ]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.DK]: [ LANG.DA, LANG.EN ],\n [COUNTRY.DM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.DO]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.DZ]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.EC]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.EE]: [ LANG.EN, LANG.RU, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.EG]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ER]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ES]: [ LANG.ES, LANG.EN ],\n [COUNTRY.ET]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.FI]: [ LANG.FI, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.FJ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.FK]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.FM]: [ LANG.EN ],\n [COUNTRY.FO]: [ LANG.DA, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.FR]: [ LANG.FR, LANG.EN ],\n [COUNTRY.GA]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.GB]: [ LANG.EN ],\n [COUNTRY.GD]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GE]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GF]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GI]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GL]: [ LANG.DA, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GN]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.GP]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GR]: [ LANG.EL, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GT]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.GW]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.GY]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.HK]: [ LANG.EN, LANG.ZH ],\n [COUNTRY.HN]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.HR]: [ LANG.EN ],\n [COUNTRY.HU]: [ LANG.HU, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ID]: [ LANG.ID, LANG.EN ],\n [COUNTRY.IE]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.IL]: [ LANG.HE, LANG.EN ],\n [COUNTRY.IN]: [ LANG.EN ],\n [COUNTRY.IS]: [ LANG.EN ],\n [COUNTRY.IT]: [ LANG.IT, LANG.EN ],\n [COUNTRY.JM]: [ LANG.EN, LANG.ES, LANG.FR, LANG.ZH ],\n [COUNTRY.JO]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.JP]: [ LANG.JA, LANG.EN ],\n [COUNTRY.KE]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KH]: [ LANG.EN ],\n [COUNTRY.KI]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KM]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.KN]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KR]: [ LANG.KO, LANG.EN ],\n [COUNTRY.KW]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KY]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.KZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LA]: [ LANG.EN ],\n [COUNTRY.LC]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LI]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LK]: [ LANG.EN ],\n [COUNTRY.LS]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LT]: [ LANG.EN, LANG.RU, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LU]: [ LANG.EN, LANG.DE, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.LV]: [ LANG.EN, LANG.RU, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MA]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MC]: [ LANG.FR, LANG.EN ],\n [COUNTRY.MD]: [ LANG.EN ],\n [COUNTRY.ME]: [ LANG.EN ],\n [COUNTRY.MG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MH]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MK]: [ LANG.EN ],\n [COUNTRY.ML]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.MN]: [ LANG.EN ],\n [COUNTRY.MQ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MR]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MS]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MT]: [ LANG.EN ],\n [COUNTRY.MU]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MV]: [ LANG.EN ],\n [COUNTRY.MW]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.MX]: [ LANG.ES, LANG.EN ],\n [COUNTRY.MY]: [ LANG.EN ],\n [COUNTRY.MZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NA]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NC]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NE]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.NF]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NG]: [ LANG.EN ],\n [COUNTRY.NI]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.NL]: [ LANG.NL, LANG.EN ],\n [COUNTRY.NO]: [ LANG.NO, LANG.EN ],\n [COUNTRY.NP]: [ LANG.EN ],\n [COUNTRY.NR]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NU]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.NZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.OM]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PA]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.PE]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.PF]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PH]: [ LANG.EN ],\n [COUNTRY.PL]: [ LANG.PL, LANG.EN ],\n [COUNTRY.PM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PN]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PT]: [ LANG.PT, LANG.EN ],\n [COUNTRY.PW]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.PY]: [ LANG.ES, LANG.EN ],\n [COUNTRY.QA]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH, LANG.AR ],\n [COUNTRY.RE]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.RO]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.RS]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.RU]: [ LANG.RU, LANG.EN ],\n [COUNTRY.RW]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.SA]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SB]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SC]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.SE]: [ LANG.SV, LANG.EN ],\n [COUNTRY.SG]: [ LANG.EN ],\n [COUNTRY.SH]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SI]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SJ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SK]: [ LANG.SK, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SL]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SN]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.SO]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SR]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ST]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.SV]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.SZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TC]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TD]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.TG]: [ LANG.FR, LANG.EN, LANG.ES, LANG.ZH ],\n [COUNTRY.TH]: [ LANG.TH, LANG.EN ],\n [COUNTRY.TJ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TN]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TO]: [ LANG.EN ],\n [COUNTRY.TR]: [ LANG.TR, LANG.EN ],\n [COUNTRY.TT]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TV]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.TW]: [ LANG.ZH, LANG.EN ],\n [COUNTRY.TZ]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.UA]: [ LANG.EN, LANG.RU, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.UG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.US]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.UY]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.VA]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.VC]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.VE]: [ LANG.ES, LANG.EN, LANG.FR, LANG.ZH ],\n [COUNTRY.VG]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.VN]: [ LANG.EN ],\n [COUNTRY.VU]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.WF]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.WS]: [ LANG.EN ],\n [COUNTRY.YE]: [ LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.YT]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ZA]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ZM]: [ LANG.EN, LANG.FR, LANG.ES, LANG.ZH ],\n [COUNTRY.ZW]: [ LANG.EN ]\n};\n","/* @flow */\n\nexport * from './button';\nexport * from './checkout';\nexport * from './funding';\nexport * from './fpti';\nexport * from './country';\nexport * from './misc';\nexport * from './locale';\n","/* @flow */\n\nexport function isPromise(item : mixed) : boolean {\n try {\n if (!item) {\n return false;\n }\n\n if (typeof Promise !== 'undefined' && item instanceof Promise) {\n return true;\n }\n\n if (typeof window !== 'undefined' && typeof window.Window === 'function' && item instanceof window.Window) {\n return false;\n }\n\n if (typeof window !== 'undefined' && typeof window.constructor === 'function' && item instanceof window.constructor) {\n return false;\n }\n\n let toString = ({}).toString;\n\n if (toString) {\n let name = toString.call(item);\n\n if (name === '[object Window]' || name === '[object global]' || name === '[object DOMWindow]') {\n return false;\n }\n }\n\n if (typeof item.then === 'function') {\n return true;\n }\n } catch (err) {\n return false;\n }\n\n return false;\n}\n","/* @flow */\n\nimport type { ZalgoPromise } from './promise';\n\nconst dispatchedErrors = [];\nconst possiblyUnhandledPromiseHandlers : Array<(mixed, promise? : ZalgoPromise) => void> = [];\n\nexport function dispatchPossiblyUnhandledError(err : mixed, promise : ZalgoPromise) {\n\n if (dispatchedErrors.indexOf(err) !== -1) {\n return;\n }\n\n dispatchedErrors.push(err);\n\n setTimeout(() => {\n if (__DEBUG__) {\n // $FlowFixMe\n throw new Error(`${ err.stack || err.toString() }\\n\\nFrom promise:\\n\\n${ promise.stack }`);\n }\n\n throw err;\n }, 1);\n\n for (let j = 0; j < possiblyUnhandledPromiseHandlers.length; j++) {\n // $FlowFixMe\n possiblyUnhandledPromiseHandlers[j](err, promise);\n }\n}\n\nexport function onPossiblyUnhandledException(handler : (mixed, promise? : ZalgoPromise) => void) : { cancel : () => void } {\n possiblyUnhandledPromiseHandlers.push(handler);\n\n return {\n cancel() {\n possiblyUnhandledPromiseHandlers.splice(possiblyUnhandledPromiseHandlers.indexOf(handler), 1);\n }\n };\n}\n","/* @flow */\n\nimport type { ZalgoPromise } from './promise';\n\nlet activeCount = 0;\nlet flushPromise;\n\nfunction flushActive() {\n if (!activeCount && flushPromise) {\n const promise = flushPromise;\n flushPromise = null;\n promise.resolve();\n }\n}\n\nexport function startActive() {\n activeCount += 1;\n}\n\nexport function endActive() {\n activeCount -= 1;\n flushActive();\n}\n\nexport function awaitActive(Zalgo : Class>) : ZalgoPromise { // eslint-disable-line no-undef\n let promise = flushPromise = flushPromise || new Zalgo();\n flushActive();\n return promise;\n}\n","/* @flow */\n\nimport { isPromise } from './utils';\nimport { onPossiblyUnhandledException, dispatchPossiblyUnhandledError } from './exceptions';\nimport { startActive, endActive, awaitActive } from './flush';\n\nexport class ZalgoPromise {\n\n resolved : boolean\n rejected : boolean\n errorHandled : boolean\n value : R\n error : mixed\n handlers : Array<{\n promise : ZalgoPromise<*>,\n onSuccess : void | (result : R) => mixed,\n onError : void | (error : mixed) => mixed\n }>\n dispatching : boolean\n stack : string\n\n constructor(handler : ?(resolve : (result : R) => void, reject : (error : mixed) => void) => void) {\n\n this.resolved = false;\n this.rejected = false;\n this.errorHandled = false;\n\n this.handlers = [];\n\n if (handler) {\n\n let result;\n let error;\n let resolved = false;\n let rejected = false;\n let isAsync = false;\n\n startActive();\n\n try {\n handler(res => {\n if (isAsync) {\n this.resolve(res);\n } else {\n resolved = true;\n result = res;\n }\n\n }, err => {\n if (isAsync) {\n this.reject(err);\n } else {\n rejected = true;\n error = err;\n }\n });\n\n } catch (err) {\n endActive();\n this.reject(err);\n return;\n }\n\n endActive();\n\n isAsync = true;\n\n if (resolved) {\n // $FlowFixMe\n this.resolve(result);\n } else if (rejected) {\n this.reject(error);\n }\n }\n\n if (__DEBUG__) {\n try {\n throw new Error(`ZalgoPromise`);\n } catch (err) {\n this.stack = err.stack;\n }\n }\n }\n\n resolve(result : R) : ZalgoPromise {\n if (this.resolved || this.rejected) {\n return this;\n }\n\n if (isPromise(result)) {\n throw new Error('Can not resolve promise with another promise');\n }\n\n this.resolved = true;\n this.value = result;\n this.dispatch();\n\n return this;\n }\n\n reject(error : mixed) : ZalgoPromise {\n if (this.resolved || this.rejected) {\n return this;\n }\n\n if (isPromise(error)) {\n throw new Error('Can not reject promise with another promise');\n }\n\n if (!error) {\n // $FlowFixMe\n let err = (error && typeof error.toString === 'function' ? error.toString() : Object.prototype.toString.call(error));\n error = new Error(`Expected reject to be called with Error, got ${ err }`);\n }\n\n this.rejected = true;\n this.error = error;\n\n if (!this.errorHandled) {\n setTimeout(() => {\n if (!this.errorHandled) {\n dispatchPossiblyUnhandledError(error, this);\n }\n }, 1);\n }\n\n this.dispatch();\n\n return this;\n }\n\n asyncReject(error : mixed) : ZalgoPromise {\n this.errorHandled = true;\n this.reject(error);\n return this;\n }\n \n dispatch() {\n\n let { dispatching, resolved, rejected, handlers } = this;\n\n if (dispatching) {\n return;\n }\n\n if (!resolved && !rejected) {\n return;\n }\n\n this.dispatching = true;\n startActive();\n\n const chain = (firstPromise : ZalgoPromise, secondPromise : ZalgoPromise) => {\n return firstPromise.then(res => {\n secondPromise.resolve(res);\n }, err => {\n secondPromise.reject(err);\n });\n };\n\n for (let i = 0; i < handlers.length; i++) {\n\n let { onSuccess, onError, promise } = handlers[i];\n\n let result;\n\n if (resolved) {\n\n try {\n result = onSuccess ? onSuccess(this.value) : this.value;\n } catch (err) {\n promise.reject(err);\n continue;\n }\n\n } else if (rejected) {\n\n if (!onError) {\n promise.reject(this.error);\n continue;\n }\n\n try {\n result = onError(this.error);\n } catch (err) {\n promise.reject(err);\n continue;\n }\n }\n\n if (result instanceof ZalgoPromise && (result.resolved || result.rejected)) {\n\n if (result.resolved) {\n promise.resolve(result.value);\n } else {\n promise.reject(result.error);\n }\n\n result.errorHandled = true;\n\n } else if (isPromise(result)) {\n\n if (result instanceof ZalgoPromise && (result.resolved || result.rejected)) {\n if (result.resolved) {\n promise.resolve(result.value);\n } else {\n promise.reject(result.error);\n }\n\n } else {\n // $FlowFixMe\n chain(result, promise);\n }\n\n } else {\n\n promise.resolve(result);\n }\n }\n\n handlers.length = 0;\n this.dispatching = false;\n endActive();\n }\n\n then(onSuccess : void | (result : R) => (ZalgoPromise | Y), onError : void | (error : mixed) => (ZalgoPromise | Y)) : ZalgoPromise {\n\n if (onSuccess && typeof onSuccess !== 'function' && !onSuccess.call) {\n throw new Error('Promise.then expected a function for success handler');\n }\n\n if (onError && typeof onError !== 'function' && !onError.call) {\n throw new Error('Promise.then expected a function for error handler');\n }\n\n let promise : ZalgoPromise = new ZalgoPromise();\n\n this.handlers.push({\n promise,\n onSuccess,\n onError\n });\n\n this.errorHandled = true;\n\n this.dispatch();\n\n return promise;\n }\n\n catch(onError : (error : mixed) => ZalgoPromise | Y) : ZalgoPromise {\n return this.then(undefined, onError);\n }\n\n finally(onFinally : () => mixed) : ZalgoPromise {\n\n if (onFinally && typeof onFinally !== 'function' && !onFinally.call) {\n throw new Error('Promise.finally expected a function');\n }\n\n return this.then((result) => {\n return ZalgoPromise.try(onFinally)\n .then(() => {\n return result;\n });\n }, (err) => {\n return ZalgoPromise.try(onFinally)\n .then(() => {\n throw err;\n });\n });\n }\n\n timeout(time : number, err : ?Error) : ZalgoPromise {\n\n if (this.resolved || this.rejected) {\n return this;\n }\n\n let timeout = setTimeout(() => {\n\n if (this.resolved || this.rejected) {\n return;\n }\n\n this.reject(err || new Error(`Promise timed out after ${ time }ms`));\n\n }, time);\n\n return this.then(result => {\n clearTimeout(timeout);\n return result;\n });\n }\n\n // $FlowFixMe\n toPromise() : Promise {\n // $FlowFixMe\n if (typeof Promise === 'undefined') {\n throw new TypeError(`Could not find Promise`);\n }\n // $FlowFixMe\n return Promise.resolve(this); // eslint-disable-line compat/compat\n }\n\n static resolve(value : X | ZalgoPromise) : ZalgoPromise {\n\n if (value instanceof ZalgoPromise) {\n return value;\n }\n\n if (isPromise(value)) {\n // $FlowFixMe\n return new ZalgoPromise((resolve, reject) => value.then(resolve, reject));\n }\n\n return new ZalgoPromise().resolve(value);\n }\n\n static reject(error : mixed) : ZalgoPromise {\n return new ZalgoPromise().reject(error);\n }\n\n static asyncReject(error : mixed) : ZalgoPromise {\n return new ZalgoPromise().asyncReject(error);\n }\n\n static all>(promises : X) : ZalgoPromise<$TupleMap(ZalgoPromise | Y) => Y>> { // eslint-disable-line no-undef\n\n let promise = new ZalgoPromise();\n let count = promises.length;\n let results = [];\n\n if (!count) {\n promise.resolve(results);\n return promise;\n }\n\n const chain = (i : number, firstPromise : ZalgoPromise, secondPromise : ZalgoPromise) => {\n return firstPromise.then(res => {\n results[i] = res;\n count -= 1;\n if (count === 0) {\n promise.resolve(results);\n }\n }, err => {\n secondPromise.reject(err);\n });\n };\n\n for (let i = 0; i < promises.length; i++) {\n let prom = promises[i];\n\n if (prom instanceof ZalgoPromise) {\n if (prom.resolved) {\n results[i] = prom.value;\n count -= 1;\n continue;\n }\n } else if (!isPromise(prom)) {\n results[i] = prom;\n count -= 1;\n continue;\n }\n\n chain(i, ZalgoPromise.resolve(prom), promise);\n }\n\n if (count === 0) {\n promise.resolve(results);\n }\n\n return promise;\n }\n\n static hash(promises : O) : ZalgoPromise<$ObjMap(ZalgoPromise | Y) => Y>> { // eslint-disable-line no-undef\n let result = {};\n \n return ZalgoPromise.all(Object.keys(promises).map(key => {\n return ZalgoPromise.resolve(promises[key]).then(value => {\n result[key] = value;\n });\n })).then(() => {\n return result;\n });\n }\n\n static map(items : Array, method : (T) => (ZalgoPromise | X)) : ZalgoPromise> {\n // $FlowFixMe\n return ZalgoPromise.all(items.map(method));\n }\n\n static onPossiblyUnhandledException(handler : (err : mixed) => void) : { cancel : () => void } {\n return onPossiblyUnhandledException(handler);\n }\n\n static try>(method : (...args : A) => (ZalgoPromise | Y), context : ?C, args : ?A) : ZalgoPromise {\n\n if (method && typeof method !== 'function' && !method.call) {\n throw new Error('Promise.try expected a function');\n }\n\n let result;\n\n startActive();\n \n try {\n // $FlowFixMe\n result = method.apply(context, args || []);\n } catch (err) {\n endActive();\n return ZalgoPromise.reject(err);\n }\n\n endActive();\n\n return ZalgoPromise.resolve(result);\n }\n\n static delay(delay : number) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n setTimeout(resolve, delay);\n });\n }\n\n static isPromise(value : mixed) : boolean {\n\n if (value && value instanceof ZalgoPromise) {\n return true;\n }\n\n return isPromise(value);\n }\n\n static flush() : ZalgoPromise {\n return awaitActive(ZalgoPromise);\n }\n}\n","/* @flow */\n\nexport { ZalgoPromise } from './promise';\n","/* @flow */\n/* eslint max-lines: off */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\n\nimport type { CancelableType } from '../types';\n\n/* Url Encode\n ----------\n\n Replace ? and & with encoded values. Allows other values (to create more readable urls than encodeUriComponent)\n*/\n\nexport function urlEncode(str : string) : string {\n return str.replace(/\\?/g, '%3F').replace(/&/g, '%26').replace(/#/g, '%23').replace(/\\+/g, '%2B');\n}\n\n\n/* Camel To Dasherize\n ------------------\n\n Convert camelCaseText to dasherized-text\n*/\n\nexport function camelToDasherize(string : string) : string {\n return string.replace(/([A-Z])/g, (g) => {\n return `-${ g.toLowerCase() }`;\n });\n}\n\n\n/* Dasherize to Camel\n ------------------\n\n Convert dasherized-text to camelCaseText\n*/\n\nexport function dasherizeToCamel(string : string) : string {\n return string.replace(/-([a-z])/g, (g) => {\n return g[1].toUpperCase();\n });\n}\n\n\n/* Extend\n ------\n\n Extend one object with another\n*/\n\nexport function extend(obj : Object, source : ?Object) : Object {\n if (!source) {\n return obj;\n }\n\n for (let key in source) {\n if (source.hasOwnProperty(key)) {\n obj[key] = source[key];\n }\n }\n\n return obj;\n}\n\n\n/* Values\n ------\n\n Get all of the values from an object as an array\n*/\n\nexport function values(obj : Object) : Array {\n let results = [];\n\n for (let key in obj) {\n if (obj.hasOwnProperty(key)) {\n results.push(obj[key]);\n }\n }\n\n return results;\n}\n\n\n/* Unique ID\n ---------\n\n Generate a unique, random hex id\n*/\n\nexport function uniqueID() : string {\n\n let chars = '0123456789abcdef';\n\n return 'xxxxxxxxxx'.replace(/./g, () => {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n });\n}\n\n/* Stringify with Functions\n ------------------------\n\n JSON Stringify with added support for functions\n*/\n\nexport function stringifyWithFunctions(obj : Object) : string {\n return JSON.stringify(obj, (key, val) => {\n if (typeof val === 'function') {\n return val.toString();\n }\n return val;\n });\n}\n\n\n/* Safe Get\n --------\n\n Get a property without throwing error\n*/\n\nexport function safeGet(obj : Object, prop : string) : mixed {\n\n let result;\n\n try {\n result = obj[prop];\n } catch (err) {\n // pass\n }\n\n return result;\n}\n\n\n/* Capitalize First Letter\n -----------------------\n*/\n\nexport function capitalizeFirstLetter(string : string) : string {\n return string.charAt(0).toUpperCase() + string.slice(1).toLowerCase();\n}\n\n\n/* Get\n ---\n\n Recursively gets a deep path from an object, returning a default value if any level is not found\n*/\n\nexport function get(item : Object, path : string, def : mixed) : mixed {\n\n if (!path) {\n return def;\n }\n\n let pathParts = path.split('.');\n\n // Loop through each section of our key path\n\n for (let i = 0; i < pathParts.length; i++) {\n\n // If we have an object, we can get the key\n\n if (typeof item === 'object' && item !== null) {\n item = item[pathParts[i]];\n\n // Otherwise, we should return the default (undefined if not provided)\n } else {\n return def;\n }\n }\n\n // If our final result is undefined, we should return the default\n\n return item === undefined ? def : item;\n}\n\n\n/* Safe Interval\n -------------\n\n Implement setInterval using setTimeout, to avoid stacking up calls from setInterval\n*/\n\nexport function safeInterval(method : Function, time : number) : CancelableType {\n\n let timeout;\n\n function runInterval() {\n timeout = setTimeout(runInterval, time);\n method.call();\n }\n\n timeout = setTimeout(runInterval, time);\n\n return {\n cancel() {\n clearTimeout(timeout);\n }\n };\n}\n\n/* Safe Interval\n -------------\n\n Run timeouts at 100ms intervals so we can account for busy browsers\n*/\n\nexport function safeTimeout(method : Function, time : number) {\n\n let interval = safeInterval(() => {\n time -= 100;\n if (time <= 0) {\n interval.cancel();\n method();\n }\n }, 100);\n}\n\n\nexport function each(item : Array | Object, callback : Function) {\n\n if (!item) {\n return;\n }\n\n if (Array.isArray(item)) {\n let len = item.length;\n for (let i = 0; i < len; i++) {\n callback(item[i], i);\n }\n\n } else if (typeof item === 'object') {\n let keys = Object.keys(item);\n let len = keys.length;\n for (let i = 0; i < len; i++) {\n let key = keys[i];\n callback(item[key], key);\n }\n }\n}\n\n\nexport function replaceObject> (item : T, replacers : { [string] : Function }, fullKey : string = '') : T {\n\n if (Array.isArray(item)) {\n let length = item.length;\n let result = [];\n\n for (let i = 0; i < length; i++) {\n Object.defineProperty(result, i, {\n configurable: true,\n enumerable: true,\n get: () => {\n let itemKey = fullKey ? `${ fullKey }.${ i }` : `${ i }`;\n let child = item[i];\n\n let type = (typeof child);\n let replacer = replacers[type];\n if (replacer) {\n let replaced = replacer(child, i, itemKey);\n if (typeof replaced !== 'undefined') {\n result[i] = replaced;\n return result[i];\n }\n }\n\n if (typeof child === 'object' && child !== null) {\n result[i] = replaceObject(child, replacers, itemKey);\n return result[i];\n }\n\n result[i] = child;\n return result[i];\n },\n set: (value) => {\n delete result[i];\n result[i] = value;\n }\n });\n }\n\n // $FlowFixMe\n return result;\n } else if (typeof item === 'object' && item !== null) {\n let result = {};\n\n for (let key in item) {\n if (!item.hasOwnProperty(key)) {\n continue;\n }\n\n Object.defineProperty(result, key, {\n configurable: true,\n enumerable: true,\n get: () => {\n let itemKey = fullKey ? `${ fullKey }.${ key }` : `${ key }`;\n // $FlowFixMe\n let child = item[key];\n\n let type = (typeof child);\n let replacer = replacers[type];\n if (replacer) {\n let replaced = replacer(child, key, itemKey);\n if (typeof replaced !== 'undefined') {\n result[key] = replaced;\n return result[key];\n }\n }\n\n if (typeof child === 'object' && child !== null) {\n result[key] = replaceObject(child, replacers, itemKey);\n return result[key];\n }\n\n result[key] = child;\n return result[key];\n },\n set: (value) => {\n delete result[key];\n result[key] = value;\n }\n });\n }\n\n // $FlowFixMe\n return result;\n } else {\n throw new Error(`Pass an object or array`);\n }\n}\n\n\nexport function copyProp(source : Object, target : Object, name : string, def : mixed) {\n if (source.hasOwnProperty(name)) {\n let descriptor = Object.getOwnPropertyDescriptor(source, name);\n // $FlowFixMe\n Object.defineProperty(target, name, descriptor);\n\n } else {\n target[name] = def;\n }\n}\n\nexport function dotify(obj : Object, prefix : string = '', newobj : Object = {}) : { [string] : string } {\n prefix = prefix ? `${ prefix }.` : prefix;\n for (let key in obj) {\n if (obj[key] === undefined || obj[key] === null || typeof obj[key] === 'function') {\n continue;\n } else if (obj[key] && Array.isArray(obj[key]) && obj[key].length && obj[key].every(val => typeof val !== 'object')) {\n newobj[`${ prefix }${ key }`] = obj[key].join(',');\n } else if (obj[key] && typeof obj[key] === 'object') {\n newobj = dotify(obj[key], `${ prefix }${ key }`, newobj);\n } else {\n newobj[`${ prefix }${ key }`] = obj[key].toString();\n }\n }\n return newobj;\n}\n\nlet objectIDs = new WeakMap();\n\nexport function getObjectID(obj : Object) : string {\n\n if (obj === null || obj === undefined || (typeof obj !== 'object' && typeof obj !== 'function')) {\n throw new Error(`Invalid object`);\n }\n\n let uid = objectIDs.get(obj);\n\n if (!uid) {\n uid = `${ typeof obj }:${ uniqueID() }`;\n objectIDs.set(obj, uid);\n }\n\n return uid;\n}\n\ntype RegexResultType = {\n text : string,\n groups : Array,\n start : number,\n end : number,\n length : number,\n replace : (text : string) => string\n};\n\nexport function regex(pattern : string | RegExp, string : string, start : number = 0) : ?RegexResultType {\n\n if (typeof pattern === 'string') {\n // eslint-disable-next-line security/detect-non-literal-regexp\n pattern = new RegExp(pattern);\n }\n\n let result = string.slice(start).match(pattern);\n\n if (!result) {\n return;\n }\n\n // $FlowFixMe\n let index : number = result.index;\n let match = result[0];\n\n return {\n text: match,\n groups: result.slice(1),\n start: start + index,\n end: start + index + match.length,\n length: match.length,\n\n replace(text : string) : string {\n\n if (!match) {\n return '';\n }\n\n return `${ match.slice(0, start + index) }${ text }${ match.slice(index + match.length) }`;\n }\n };\n}\n\nexport function regexAll(pattern : string | RegExp, string : string) : Array {\n\n let matches = [];\n let start = 0;\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n let match = regex(pattern, string, start);\n\n if (!match) {\n break;\n }\n\n matches.push(match);\n start = match.end;\n }\n\n return matches;\n}\n\nexport function count(str : string, substr : string) : number {\n\n let startIndex = 0;\n let itemCount = 0;\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n let index = str.indexOf(substr, startIndex);\n\n if (index === -1) {\n break;\n }\n\n startIndex = index;\n itemCount += 1;\n }\n\n return itemCount;\n}\n\nexport function stringify(item : mixed) : string {\n if (typeof item === 'string') {\n return item;\n }\n\n if (item && typeof item.toString === 'function') {\n return item.toString();\n }\n\n return Object.prototype.toString.call(item);\n}\n\nexport function stringifyError(err : mixed) : string {\n if (err) {\n // $FlowFixMe\n let { stack, message } = err;\n\n if (typeof stack === 'string') {\n return stack;\n }\n\n if (typeof message === 'string') {\n return message;\n }\n }\n\n return stringify(err);\n}\n\nexport type EventEmitterType = {\n on : (eventName : string, handler : Function) => CancelableType,\n once : (eventName : string, handler : Function) => CancelableType,\n trigger : (eventName : string) => void,\n triggerOnce : (eventName : string) => void\n};\n\nexport function eventEmitter() : EventEmitterType {\n\n let triggered = {};\n let handlers = {};\n\n return {\n\n on(eventName : string, handler : Function) : CancelableType {\n\n let handlerList = handlers[eventName] = handlers[eventName] || [];\n\n handlerList.push(handler);\n\n let cancelled = false;\n\n return {\n cancel() {\n if (!cancelled) {\n cancelled = true;\n handlerList.splice(handlerList.indexOf(handler), 1);\n }\n\n }\n };\n },\n\n once(eventName : string, handler : Function) : CancelableType {\n\n let listener = this.on(eventName, () => {\n listener.cancel();\n handler();\n });\n\n return listener;\n },\n\n trigger(eventName : string) {\n\n let handlerList = handlers[eventName];\n\n if (handlerList) {\n for (let handler of handlerList) {\n handler();\n }\n }\n },\n\n triggerOnce(eventName : string) {\n\n if (triggered[eventName]) {\n return;\n }\n\n triggered[eventName] = true;\n this.trigger(eventName);\n }\n };\n}\n","/* @flow */\n\nimport { getObjectID, replaceObject } from './util';\n\n\n/* Noop\n ----\n\n Do nothing, zilch, nada, zip\n*/\n\nexport function noop() {\n // pass\n}\n\n\n/* Once\n ----\n\n Create a wrapper function which only allows the inner function to run once, otherwise is a noop\n*/\n\nexport function once(method : (...args : Array) => T) : (...args : Array) => T {\n\n let called = false;\n let result;\n\n // eslint-disable-next-line no-unused-vars\n return function onceWrapper(...args : Array) : T {\n if (called) {\n return result;\n }\n\n called = true;\n result = method.apply(this, arguments);\n return result;\n };\n}\n\n\n/* Memoize\n -------\n\n Create a wrapper function which caches the result of the first call, then for subsequent calls returns the cached value\n*/\n\nexport function memoize(method : (...args : Array) => T) : (...args : Array) => T {\n\n let results = {};\n\n // eslint-disable-next-line no-unused-vars\n return function memoizeWrapper(...args : Array) : T {\n\n let cacheKey;\n\n try {\n cacheKey = JSON.stringify(Array.prototype.slice.call(arguments), (key, val) => {\n\n if (typeof val === 'function') {\n return `zoid:memoize[${ getObjectID(val) }]`;\n }\n\n return val;\n });\n\n } catch (err) {\n throw new Error('Arguments not serializable -- can not be used to memoize');\n }\n\n if (!results.hasOwnProperty(cacheKey)) {\n results[cacheKey] = method.apply(this, arguments);\n }\n\n return results[cacheKey];\n };\n}\n\nexport function debounce(method : (...args : Array) => T, time : number = 100) : (...args : Array) => void {\n\n let timeout;\n\n return function debounceWrapper() {\n clearTimeout(timeout);\n\n timeout = setTimeout(() => {\n return method.apply(this, arguments);\n }, time);\n };\n}\n\nexport function serializeFunctions>(obj : T) : T {\n return replaceObject(obj, {\n 'function': () => {\n return {\n __type__: '__function__'\n };\n }\n });\n}\n\nexport function deserializeFunctions>(obj : T, handler : Function) : T {\n return replaceObject(obj, {\n 'object': (value, key, fullKey) => {\n if (value && value.__type__ === '__function__') {\n return function deserializedFunctionWrapper() : mixed {\n return handler({ key, fullKey, self: this, args: arguments });\n };\n }\n }\n });\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { isWindowClosed, linkFrameWindow, type CrossDomainWindowType, type SameDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\n\nimport { PopupOpenError } from '../error';\nimport type { ElementRefType, CancelableType } from '../types';\n\nimport { once, memoize, debounce } from './fn';\nimport { extend, safeInterval, urlEncode, capitalizeFirstLetter, stringify } from './util';\n\nexport function appendChild(container : HTMLElement, child : HTMLElement | Text) {\n container.appendChild(child);\n}\n\nfunction isElement(element : mixed) : boolean {\n\n if (element instanceof window.Element) {\n return true;\n }\n\n if (element !== null && typeof element === 'object' && element.nodeType === 1 && typeof element.style === 'object' && typeof element.ownerDocument === 'object') {\n return true;\n }\n\n return false;\n}\n\nexport function querySelectorAll(el : HTMLElement, selector : string) : Array {\n return Array.prototype.slice.call(el.querySelectorAll(selector));\n}\n\n/* Get Element\n -----------\n\n Gets an element based on\n\n - Element id\n - CSS Query selector\n*/\n\nexport function getElementSafe(id : ElementRefType) : ?HTMLElement {\n\n if (isElement(id)) {\n // $FlowFixMe\n return id;\n }\n\n if (typeof id === 'string') {\n let element = document.getElementById(id);\n\n if (element) {\n return element;\n }\n\n if (document.querySelector) {\n element = document.querySelector(id);\n }\n\n if (element) {\n return element;\n }\n }\n}\n\nexport function getElement(id : ElementRefType) : HTMLElement {\n\n let element = getElementSafe(id);\n\n if (element) {\n return element;\n }\n\n throw new Error(`Can not find element: ${ stringify(id) }`);\n}\n\n\nexport let documentReady = new ZalgoPromise(resolve => {\n\n if (window.document.readyState === 'complete') {\n return resolve(window.document);\n }\n\n let interval = setInterval(() => {\n if (window.document.readyState === 'complete') {\n clearInterval(interval);\n return resolve(window.document);\n }\n }, 10);\n});\n\nexport function isDocumentReady() : boolean {\n return window.document.readyState === 'complete';\n}\n\nexport function elementReady(id : ElementRefType) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n let name = stringify(id);\n let el = getElementSafe(id);\n\n if (el) {\n return resolve(el);\n }\n\n if (isDocumentReady()) {\n return reject(new Error(`Document is ready and element ${ name } does not exist`));\n }\n\n let interval = setInterval(() => {\n\n el = getElementSafe(id);\n\n if (el) {\n clearInterval(interval);\n return resolve(el);\n }\n\n if (isDocumentReady()) {\n clearInterval(interval);\n return reject(new Error(`Document is ready and element ${ name } does not exist`));\n }\n }, 10);\n });\n}\n\n\n/* Popup\n -----\n\n Open a popup window with the specified option map\n*/\n\nexport function popup(url : string, options : { [ string ] : mixed }) : CrossDomainWindowType {\n\n // eslint-disable-next-line array-callback-return\n let params = Object.keys(options).map((key) => {\n if (options[key]) {\n return `${ key }=${ stringify(options[key]) }`;\n }\n }).filter(Boolean).join(',');\n\n let win;\n\n try {\n win = window.open(url, options.name, params, true);\n } catch (err) {\n throw new PopupOpenError(`Can not open popup window - ${ err.stack || err.message }`);\n }\n\n if (isWindowClosed(win)) {\n let err = new PopupOpenError(`Can not open popup window - blocked`);\n throw err;\n }\n\n return win;\n}\n\n\nexport function writeToWindow(win : SameDomainWindowType, html : string) {\n try {\n win.document.open();\n win.document.write(html);\n win.document.close();\n } catch (err) {\n try {\n win.location = `javascript: document.open(); document.write(${ JSON.stringify(html) }); document.close();`;\n } catch (err2) {\n // pass\n }\n }\n}\n\nexport function writeElementToWindow(win : SameDomainWindowType, el : HTMLElement) {\n\n let tag = el.tagName.toLowerCase();\n\n if (tag !== 'html') {\n throw new Error(`Expected element to be html, got ${ tag }`);\n }\n\n let documentElement = win.document.documentElement;\n\n while (documentElement.children && documentElement.children.length) {\n documentElement.removeChild(documentElement.children[0]);\n }\n\n while (el.children.length) {\n documentElement.appendChild(el.children[0]);\n }\n}\n\nexport function setStyle(el : HTMLElement, styleText : string, doc : Document = window.document) {\n // $FlowFixMe\n if (el.styleSheet) {\n // $FlowFixMe\n el.styleSheet.cssText = styleText;\n } else {\n el.appendChild(doc.createTextNode(styleText));\n }\n}\n\n/* Create Element\n --------------\n\n Create an element with style, html, classes, attributes etc. and append it to the specified container\n*/\n\nexport type ElementOptionsType = {\n style? : { [ string ] : string },\n class? : ?Array,\n attributes? : { [ string ] : string },\n styleSheet? : ?string,\n html? : ?string\n};\n\nexport function createElement(tag : string = 'div', options : ElementOptionsType = {}, container : ?HTMLElement) : HTMLElement {\n\n tag = tag.toLowerCase();\n let element = document.createElement(tag);\n\n if (options.style) {\n extend(element.style, options.style);\n }\n\n if (options.class) {\n element.className = options.class.join(' ');\n }\n\n if (options.attributes) {\n for (let key of Object.keys(options.attributes)) {\n element.setAttribute(key, options.attributes[key]);\n }\n }\n\n if (options.styleSheet) {\n setStyle(element, options.styleSheet);\n }\n\n if (container) {\n appendChild(container, element);\n }\n\n if (options.html) {\n if (tag === 'iframe') {\n // $FlowFixMe\n if (!container || !element.contentWindow) {\n throw new Error(`Iframe html can not be written unless container provided and iframe in DOM`);\n }\n\n // $FlowFixMe\n writeToWindow(element.contentWindow, options.html);\n\n } else {\n element.innerHTML = options.html;\n }\n }\n\n return element;\n}\n\nlet awaitFrameLoadPromises : WeakMap> = new WeakMap();\n\nexport function awaitFrameLoad(frame : HTMLIFrameElement) : ZalgoPromise {\n\n if (awaitFrameLoadPromises.has(frame)) {\n let promise = awaitFrameLoadPromises.get(frame);\n if (promise) {\n return promise;\n }\n }\n\n let promise = new ZalgoPromise((resolve, reject) => {\n frame.addEventListener('load', () => {\n linkFrameWindow(frame);\n resolve(frame);\n });\n\n frame.addEventListener('error', (err : Event) => {\n if (frame.contentWindow) {\n resolve(frame);\n } else {\n reject(err);\n }\n });\n });\n\n awaitFrameLoadPromises.set(frame, promise);\n\n return promise;\n}\n\nexport function awaitFrameWindow(frame : HTMLIFrameElement) : ZalgoPromise {\n\n if (frame.contentWindow) {\n return ZalgoPromise.resolve(frame.contentWindow);\n }\n\n return awaitFrameLoad(frame).then(loadedFrame => {\n\n if (!loadedFrame.contentWindow) {\n throw new Error(`Could not find window in iframe`);\n }\n\n return loadedFrame.contentWindow;\n });\n}\n\n\n/* Iframe\n ------\n\n Open an iframe with the specified container, url, and option property map\n*/\n\nexport type IframeElementOptionsType = {\n style? : { [ string ] : string },\n class? : ?Array,\n attributes? : { [ string ] : string },\n styleSheet? : ?string,\n html? : ?string,\n url? : ?string\n};\n\nexport function iframe(options : IframeElementOptionsType = {}, container : HTMLElement) : HTMLIFrameElement {\n\n let el = getElement(container);\n\n let attributes = options.attributes || {};\n let style = options.style || {};\n\n let frame = createElement('iframe', {\n attributes: {\n frameBorder: '0',\n allowTransparency: 'true',\n ...attributes\n },\n style: {\n backgroundColor: 'transparent',\n ...style\n },\n html: options.html,\n class: options.class\n });\n\n // $FlowFixMe\n awaitFrameLoad(frame);\n\n el.appendChild(frame);\n\n if (options.url || window.navigator.userAgent.match(/MSIE|Edge/i)) {\n frame.setAttribute('src', options.url || 'about:blank');\n }\n\n // $FlowFixMe\n return frame;\n}\n\n/* Add Event Listener\n ------------------\n\n Add DOM Event listener with cancel\n*/\n\nexport function addEventListener(obj : HTMLElement, event : string, handler : (event : Event) => void) : CancelableType {\n obj.addEventListener(event, handler);\n return {\n cancel() {\n obj.removeEventListener(event, handler);\n }\n };\n}\n\n/* Scan For Javascript\n -------------------\n\n Check if the string contains anything which could conceivably be run as javascript if the string is set to innerHTML\n*/\n\nexport function scanForJavascript(str : string) : string {\n\n if (!str) {\n return str;\n }\n\n if (str.match(/ {\n\n let params = {};\n\n if (!queryString) {\n return params;\n }\n\n if (queryString.indexOf('=') === -1) {\n throw new Error(`Can not parse query string params: ${ queryString }`);\n }\n\n for (let pair of queryString.split('&')) {\n pair = pair.split('=');\n\n if (pair[0] && pair[1]) {\n params[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n }\n\n return params;\n});\n\n\nexport function getQueryParam(name : string) : ?string {\n return parseQuery(window.location.search.slice(1))[name];\n}\n\nexport function formatQuery(obj : { [ string ] : string } = {}) : string {\n\n return Object.keys(obj).filter(key => {\n return typeof obj[key] === 'string';\n }).map(key => {\n return `${ urlEncode(key) }=${ urlEncode(obj[key]) }`;\n }).join('&');\n}\n\nexport function extendQuery(originalQuery : string, props : { [ string ] : string } = {}) : string {\n\n if (!props || !Object.keys(props).length) {\n return originalQuery;\n }\n\n return formatQuery({\n ...parseQuery(originalQuery),\n ...props\n });\n}\n\nexport function extendUrl(url : string, options : { query? : { [ string ] : string }, hash? : { [ string ] : string } } = {}) : string {\n\n let query = options.query || {};\n let hash = options.hash || {};\n\n let originalUrl;\n let originalQuery;\n let originalHash;\n\n [ originalUrl, originalHash ] = url.split('#');\n [ originalUrl, originalQuery ] = originalUrl.split('?');\n\n let queryString = extendQuery(originalQuery, query);\n let hashString = extendQuery(originalHash, hash);\n\n if (queryString) {\n originalUrl = `${ originalUrl }?${ queryString }`;\n }\n\n if (hashString) {\n originalUrl = `${ originalUrl }#${ hashString }`;\n }\n\n return originalUrl;\n}\n\n\nexport function elementStoppedMoving(element : ElementRefType, timeout : number = 5000) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n let el = getElement(element);\n\n let start = el.getBoundingClientRect();\n\n let interval;\n let timer;\n\n interval = setInterval(() => {\n let end = el.getBoundingClientRect();\n\n if (start.top === end.top && start.bottom === end.bottom && start.left === end.left && start.right === end.right && start.width === end.width && start.height === end.height) {\n clearTimeout(timer);\n clearInterval(interval);\n return resolve();\n }\n\n start = end;\n\n }, 50);\n\n timer = setTimeout(() => {\n clearInterval(interval);\n reject(new Error(`Timed out waiting for element to stop animating after ${ timeout }ms`));\n }, timeout);\n });\n}\n\nexport function getCurrentDimensions(el : HTMLElement) : { width : number, height : number } {\n return {\n width: el.offsetWidth,\n height: el.offsetHeight\n };\n}\n\nexport function changeStyle(el : HTMLElement, styles : { [ string ] : string }) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n\n for (let key of Object.keys(styles)) {\n // $FlowFixMe\n el.style[key] = styles[key];\n }\n\n setTimeout(resolve, 1);\n });\n}\n\nexport function setOverflow(el : HTMLElement, value : string = 'auto') : { reset : () => void } {\n\n let { overflow, overflowX, overflowY } = el.style;\n\n el.style.overflow = el.style.overflowX = el.style.overflowY = value;\n\n return {\n reset() {\n el.style.overflow = overflow;\n el.style.overflowX = overflowX;\n el.style.overflowY = overflowY;\n }\n };\n}\n\nfunction dimensionsDiff(one : { width : number, height : number }, two : { width : number, height : number }, { width = true, height = true, threshold = 0 } : { width : boolean, height : boolean, threshold : number }) : boolean {\n\n if (width && Math.abs(one.width - two.width) > threshold) {\n return true;\n }\n\n if (height && Math.abs(one.height - two.height) > threshold) {\n return true;\n }\n\n return false;\n}\n\nexport function trackDimensions(el : HTMLElement, { width = true, height = true, threshold = 0 } : { width : boolean, height : boolean, threshold : number }) : { check : () => { changed : boolean, dimensions : { width : number, height : number } }, reset : () => void } {\n\n let currentDimensions = getCurrentDimensions(el);\n\n return {\n check() : { changed : boolean, dimensions : { width : number, height : number } } {\n let newDimensions = getCurrentDimensions(el);\n\n return {\n changed: dimensionsDiff(currentDimensions, newDimensions, { width, height, threshold }),\n dimensions: newDimensions\n };\n },\n\n reset() {\n currentDimensions = getCurrentDimensions(el);\n }\n };\n}\n\nexport function onDimensionsChange(el : HTMLElement, { width = true, height = true, delay = 50, threshold = 0 } : { width? : boolean, height? : boolean, delay? : number, threshold? : number }) : ZalgoPromise<{ width : number, height : number }> {\n\n return new ZalgoPromise(resolve => {\n\n let tracker = trackDimensions(el, { width, height, threshold });\n\n let interval;\n\n let resolver = debounce((dimensions) => {\n clearInterval(interval);\n return resolve(dimensions);\n }, delay * 4);\n\n interval = setInterval(() => {\n let { changed, dimensions } = tracker.check();\n if (changed) {\n tracker.reset();\n return resolver(dimensions);\n }\n }, delay);\n\n function onWindowResize() {\n let { changed, dimensions } = tracker.check();\n if (changed) {\n tracker.reset();\n window.removeEventListener('resize', onWindowResize);\n resolver(dimensions);\n }\n }\n\n window.addEventListener('resize', onWindowResize);\n });\n}\n\n\nexport function dimensionsMatchViewport(el : HTMLElement, { width, height } : { width : number, height : number }) : boolean {\n\n let dimensions = getCurrentDimensions(el);\n\n if (width && dimensions.width !== window.innerWidth) {\n return false;\n }\n\n if (height && dimensions.height !== window.innerHeight) {\n return false;\n }\n\n return true;\n}\n\n\nexport function bindEvents(element : HTMLElement, eventNames : Array, handler : (event : Event) => void) : CancelableType {\n\n handler = once(handler);\n\n for (let eventName of eventNames) {\n element.addEventListener(eventName, handler);\n }\n\n return {\n cancel: once(() => {\n for (let eventName of eventNames) {\n element.removeEventListener(eventName, handler);\n }\n })\n };\n}\n\nconst VENDOR_PREFIXES = [ 'webkit', 'moz', 'ms', 'o' ];\n\nexport function setVendorCSS(element : HTMLElement, name : string, value : string) {\n\n // $FlowFixMe\n element.style[name] = value;\n\n let capitalizedName = capitalizeFirstLetter(name);\n\n for (let prefix of VENDOR_PREFIXES) {\n // $FlowFixMe\n element.style[`${ prefix }${ capitalizedName }`] = value;\n }\n}\n\n\nlet CSSRule = window.CSSRule;\n\nconst KEYFRAMES_RULE = CSSRule.KEYFRAMES_RULE || CSSRule.WEBKIT_KEYFRAMES_RULE || CSSRule.MOZ_KEYFRAMES_RULE ||\n CSSRule.O_KEYFRAMES_RULE || CSSRule.MS_KEYFRAMES_RULE;\n\nfunction isValidAnimation(element : HTMLElement, name : string) : boolean {\n\n let stylesheets = element.ownerDocument.styleSheets;\n\n try {\n for (let i = 0; i < stylesheets.length; i++) {\n\n // $FlowFixMe\n let cssRules = stylesheets[i].cssRules;\n\n if (!cssRules) {\n continue;\n }\n\n for (let j = 0; j < cssRules.length; j++) {\n\n let cssRule = cssRules[j];\n\n if (!cssRule) {\n continue;\n }\n\n if (cssRule.type === KEYFRAMES_RULE && cssRule.name === name) {\n return true;\n }\n }\n }\n } catch (err) {\n\n return false;\n }\n\n\n return false;\n}\n\n\nconst ANIMATION_START_EVENTS = [ 'animationstart', 'webkitAnimationStart', 'oAnimationStart', 'MSAnimationStart' ];\nconst ANIMATION_END_EVENTS = [ 'animationend', 'webkitAnimationEnd', 'oAnimationEnd', 'MSAnimationEnd' ];\n\nexport function animate(element : ElementRefType, name : string, clean : (Function) => void, timeout : number = 1000) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n let el = getElement(element);\n\n if (!el || !isValidAnimation(el, name)) {\n return resolve();\n }\n\n let hasStarted = false;\n\n let startTimeout;\n let endTimeout;\n let startEvent;\n let endEvent;\n\n function cleanUp() {\n setVendorCSS(el, 'animationName', '');\n clearTimeout(startTimeout);\n clearTimeout(endTimeout);\n startEvent.cancel();\n endEvent.cancel();\n }\n\n startEvent = bindEvents(el, ANIMATION_START_EVENTS, event => {\n\n // $FlowFixMe\n if (event.target !== el || event.animationName !== name) {\n return;\n }\n\n clearTimeout(startTimeout);\n\n event.stopPropagation();\n\n startEvent.cancel();\n hasStarted = true;\n\n endTimeout = setTimeout(() => {\n cleanUp();\n resolve();\n }, timeout);\n });\n\n endEvent = bindEvents(el, ANIMATION_END_EVENTS, event => {\n\n // $FlowFixMe\n if (event.target !== el || event.animationName !== name) {\n return;\n }\n\n cleanUp();\n\n // $FlowFixMe\n if (typeof event.animationName === 'string' && event.animationName !== name) {\n return reject(`Expected animation name to be ${ name }, found ${ event.animationName }`);\n }\n\n return resolve();\n });\n\n setVendorCSS(el, 'animationName', name);\n\n startTimeout = setTimeout(() => {\n if (!hasStarted) {\n cleanUp();\n return resolve();\n }\n }, 200);\n\n if (clean) {\n clean(cleanUp);\n }\n });\n}\n\nconst STYLE = {\n\n DISPLAY: {\n NONE: 'none',\n BLOCK: 'block'\n },\n\n VISIBILITY: {\n VISIBLE: 'visible',\n HIDDEN: 'hidden'\n },\n\n IMPORTANT: 'important'\n};\n\nexport function makeElementVisible(element : HTMLElement) {\n element.style.setProperty('visibility', '');\n}\n\nexport function makeElementInvisible(element : HTMLElement) {\n element.style.setProperty('visibility', STYLE.VISIBILITY.HIDDEN, STYLE.IMPORTANT);\n}\n\n\nexport function showElement(element : HTMLElement) {\n element.style.setProperty('display', '');\n}\n\nexport function hideElement(element : HTMLElement) {\n element.style.setProperty('display', STYLE.DISPLAY.NONE, STYLE.IMPORTANT);\n}\n\nexport function destroyElement(element : HTMLElement) {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n}\n\nexport function showAndAnimate(element : HTMLElement, name : string, clean : (Function) => void) : ZalgoPromise {\n let animation = animate(element, name, clean);\n showElement(element);\n return animation;\n}\n\nexport function animateAndHide(element : HTMLElement, name : string, clean : (Function) => void) : ZalgoPromise {\n return animate(element, name, clean).then(() => {\n hideElement(element);\n });\n}\n\nexport function addClass(element : HTMLElement, name : string) {\n if (element.classList) {\n element.classList.add(name);\n } else if (element.className.split(/\\s+/).indexOf(name) === -1) {\n element.className += ` ${ name }`;\n }\n}\n\nexport function removeClass(element : HTMLElement, name : string) {\n if (element.classList) {\n element.classList.remove(name);\n } else if (element.className.split(/\\s+/).indexOf(name) !== -1) {\n element.className = element.className.replace(name, '');\n }\n}\n\nexport function getCurrentScriptDir() : string {\n // eslint-disable-next-line no-console\n console.warn(`Do not use zoid.getCurrentScriptDir() in production -- browser support is limited`);\n\n // eslint-disable-next-line compat/compat\n if (document.currentScript) {\n // eslint-disable-next-line compat/compat\n return document.currentScript.src.split('/').slice(0, -1).join('/');\n }\n\n return '.';\n}\n\nexport function getElementName(element : ElementRefType) : string {\n\n if (typeof element === 'string') {\n return element;\n }\n\n if (!element || !element.tagName) {\n return '';\n }\n\n let name = element.tagName.toLowerCase();\n\n if (element.id) {\n name += `#${ element.id }`;\n } else if (element.className) {\n name += `.${ element.className.split(' ').join('.') }`;\n }\n\n return name;\n}\n\nexport function isElementClosed(el : HTMLElement) : boolean {\n if (!el || !el.parentNode) {\n return true;\n }\n return false;\n}\n\nexport function watchElementForClose(element : HTMLElement, handler : () => mixed) : CancelableType {\n handler = once(handler);\n\n let interval;\n\n if (isElementClosed(element)) {\n handler();\n } else {\n interval = safeInterval(() => {\n if (isElementClosed(element)) {\n interval.cancel();\n handler();\n }\n }, 50);\n }\n\n return {\n cancel() {\n if (interval) {\n interval.cancel();\n }\n }\n };\n}\n\nexport function getHttpType(contentType : string, url : string) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n let req = new window.XMLHttpRequest();\n\n req.open('GET', url);\n req.setRequestHeader('Accept', contentType);\n req.send(null);\n\n req.onload = () => {\n resolve(req.responseText);\n };\n\n req.onerror = () => {\n return reject(new Error(`prefetch failed`));\n };\n });\n}\n\nexport function getHTML(url : string) : ZalgoPromise {\n return getHttpType('text/html', url);\n}\n\nexport function getCSS(url : string) : ZalgoPromise {\n return getHttpType('text/css', url);\n}\n\nexport function getScript(url : string) : ZalgoPromise {\n return getHttpType('*/*', url);\n}\n\nexport function prefetchPage(url : string) : ZalgoPromise {\n return getHTML(url);\n}\n\nconst JSX_EVENTS = {\n onClick: 'click'\n};\n\nexport function fixScripts(el : HTMLElement, doc : Document = window.document) {\n for (let script of querySelectorAll(el, 'script')) {\n let newScript = doc.createElement('script');\n newScript.text = script.textContent;\n script.parentNode.replaceChild(newScript, script);\n }\n}\n\nexport function jsxDom(name : string, props : ?{ [ string ] : mixed }, content : ElementRefType) : HTMLElement {\n\n name = name.toLowerCase();\n\n let doc = (this && this.createElement)\n ? this\n : window.document;\n\n let el = doc.createElement(name);\n\n for (let prop in props) {\n if (prop in JSX_EVENTS) {\n el.addEventListener(JSX_EVENTS[prop], props[prop]);\n } else if (prop === 'innerHTML') {\n el.innerHTML = props[prop];\n fixScripts(el, doc);\n } else {\n el.setAttribute(prop, props[prop]);\n }\n }\n\n if (name === 'style') {\n\n if (typeof content !== 'string') {\n throw new TypeError(`Expected ${ name } tag content to be string, got ${ typeof content }`);\n }\n\n if (arguments.length > 3) {\n throw new Error(`Expected only text content for ${ name } tag`);\n }\n\n setStyle(el, content, doc);\n\n } else if (name === 'iframe') {\n\n if (arguments.length > 3) {\n throw new Error(`Expected only single child node for iframe`);\n }\n\n el.addEventListener('load', () => {\n let win = el.contentWindow;\n\n if (!win) {\n throw new Error(`Expected frame to have contentWindow`);\n }\n\n if (typeof content === 'string') {\n writeToWindow(win, content);\n } else {\n writeElementToWindow(win, content);\n }\n });\n\n } else if (name === 'script') {\n\n if (typeof content !== 'string') {\n throw new TypeError(`Expected ${ name } tag content to be string, got ${ typeof content }`);\n }\n\n if (arguments.length > 3) {\n throw new Error(`Expected only text content for ${ name } tag`);\n }\n\n el.text = content;\n\n } else {\n for (let i = 2; i < arguments.length; i++) {\n if (typeof arguments[i] === 'string') {\n let textNode = doc.createTextNode(arguments[i]);\n appendChild(el, textNode);\n } else {\n appendChild(el, arguments[i]);\n }\n }\n }\n\n return el;\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\n\n/* DeNodeify\n ---------\n\n Turns a method from a function which accepts a callback, into a function which returns a promise.\n*/\n\nexport function denodeify(method : (...args : Array) => T) : (...args : Array) => ZalgoPromise {\n\n return function denodeifyWrapper() : ZalgoPromise {\n\n let self = this;\n let args = Array.prototype.slice.call(arguments);\n\n if (args.length >= method.length) {\n return ZalgoPromise.resolve(method.apply(self, args));\n }\n\n return new ZalgoPromise((resolve, reject) => {\n args.push((err, result) => {\n\n if (err && !(err instanceof Error)) {\n throw new Error(`Passed non-Error object in callback: [ ${ err } ] -- callbacks should either be called with callback(new Error(...)) or callback(null, result).`);\n }\n\n return err ? reject(err) : resolve(result);\n });\n method.apply(self, args);\n });\n };\n}\n\nexport function promisify(method : (...args : Array) => T | ZalgoPromise) : (...args : Array) => ZalgoPromise {\n return function promisifyWRapper() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n return method.apply(this, arguments);\n });\n };\n}\n\nexport function delay(time : number = 1) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n setTimeout(resolve, time);\n });\n}\n\nexport function cycle(method : Function) : ZalgoPromise {\n return ZalgoPromise.try(method).then(() => cycle(method));\n}\n","/* @flow */\n\nexport function isPerc(str : string) : boolean {\n return typeof str === 'string' && (/^[0-9]+%$/).test(str);\n}\n\nexport function isPx(str : string) : boolean {\n return typeof str === 'string' && (/^[0-9]+px$/).test(str);\n}\n\nexport function toNum(val : string | number) : number {\n\n if (typeof val === 'number') {\n return val;\n }\n\n let match = val.match(/^([0-9]+)(px|%)$/);\n\n if (!match) {\n throw new Error(`Could not match css value from ${ val }`);\n }\n\n return parseInt(match[1], 10);\n}\n\nexport function toPx(val : number | string) : string {\n return `${ toNum(val) }px`;\n}\n\nexport function toCSS(val : number | string) : string {\n\n if (typeof val === 'number') {\n return toPx(val);\n }\n\n return isPerc(val) ? val : toPx(val);\n}\n\nexport function percOf(num : number, perc : string) : number {\n return parseInt(num * toNum(perc) / 100, 10);\n}\n\nexport function normalizeDimension(dim : string | number, max : number) : number {\n if (typeof dim === 'number') {\n return dim;\n } else if (isPerc(dim)) {\n return percOf(max, dim);\n } else if (isPx(dim)) {\n return toNum(dim);\n } else {\n throw new Error(`Can not normalize dimension: ${ dim }`);\n }\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nexport function memoized(target : Object, name : string, descriptor : Object) {\n let method = descriptor.value;\n\n descriptor.value = function memoizedFunction() : T {\n\n this.__memoized__ = this.__memoized__ || {};\n\n if (!this.__memoized__.hasOwnProperty(name)) {\n this.__memoized__[name] = method.apply(this, arguments);\n }\n\n return this.__memoized__[name];\n };\n\n descriptor.value.displayName = `${ name }:memoized`;\n}\n\nexport function promise(target : Object, name : string, descriptor : Object) {\n let method = descriptor.value;\n\n descriptor.value = function promisifiedFunction() : ZalgoPromise {\n return ZalgoPromise.try(method, this, arguments);\n };\n\n descriptor.value.displayName = `${ name }:promisified`;\n}\n","/* @flow */\n\nimport { CONFIG } from 'post-robot/src';\nimport { config, logLevels, info as logInfo, warn as logWarn, error as logError } from 'beaver-logger/client';\n\nexport function setLogLevel(logLevel : string) {\n if (logLevels.indexOf(logLevel) === -1) {\n throw new Error(`Invalid logLevel: ${ logLevel }`);\n }\n config.logLevel = logLevel;\n CONFIG.LOG_LEVEL = logLevel;\n window.LOG_LEVEL = logLevel;\n}\n\nexport function info(name : string, event : string, payload : Object = {}) {\n logInfo(`xc_${ name }_${ event }`, payload);\n}\n\n\n/* Log Warning\n -----------\n\n Log a warning\n*/\n\nexport function warn(name : string, event : string, payload : Object = {}) {\n logWarn(`xc_${ name }_${ event }`, payload);\n}\n\n\n/* Log Error\n ---------\n\n Log an error\n*/\n\nexport function error(name : string, event : string, payload : Object = {}) {\n logError(`xc_${ name }_${ event }`, payload);\n}\n","/* @flow */\n\nimport { isSameDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { __ZOID__ } from '../constants';\n\nexport function globalFor(win : CrossDomainWindowType) : ?Object {\n\n if (!isSameDomain(win)) {\n return;\n }\n\n if (!win[__ZOID__]) {\n win[__ZOID__] = {};\n }\n\n return win[__ZOID__];\n}\n\nexport function localGlobal() : Object {\n let global = globalFor(window);\n\n if (!global) {\n throw new Error(`Could not get local global`);\n }\n\n return global;\n}\n\nexport let global = localGlobal();\n","/* @flow */\n\nexport * from './dom';\nexport * from './fn';\nexport * from './promise';\nexport * from './util';\nexport * from './css';\nexport * from './decorators';\nexport * from './logger';\nexport * from './global';\n","/* @flow weak */\n/* eslint max-lines: 0 */\n\nimport { ENV, COUNTRY, LANG, LOCALE } from '../constants';\n\nfunction getDefaultEnv() : $Values {\n if (__TEST__) {\n return ENV.TEST;\n }\n\n if (typeof window === 'undefined' || typeof window.location === 'undefined') {\n return ENV.PRODUCTION;\n }\n\n if (window.location.host.indexOf('localhost.paypal.com') !== -1) {\n return ENV.LOCAL;\n }\n\n if (window.location.host.indexOf('qa.paypal.com') !== -1) {\n return ENV.STAGE;\n }\n\n if (window.location.host.indexOf('sandbox.paypal.com') !== -1) {\n return ENV.SANDBOX;\n }\n\n return ENV.PRODUCTION;\n}\n\nexport const config = {\n\n locales: LOCALE,\n\n scriptUrl: __TEST__\n ? `//${ window.location.host }/base/src/load.js`\n : `//www.paypalobjects.com/api/${ __FILE_NAME__ }`,\n\n // eslint-disable-next-line security/detect-unsafe-regex, unicorn/no-unsafe-regex\n paypal_domain_regex: /^(https?|mock):\\/\\/[a-zA-Z0-9_.-]+\\.paypal\\.com(:\\d+)?$/,\n\n version: __PAYPAL_CHECKOUT__.__MINOR_VERSION__,\n\n cors: true,\n\n env: getDefaultEnv(),\n\n state: 'checkoutjs',\n\n locale: {\n country: COUNTRY.US,\n lang: LANG.EN\n },\n\n stage: 'msmaster',\n stageDomain: 'qa.paypal.com',\n\n get stageUrl() : string {\n return `${ config.stage }.${ config.stageDomain }`;\n },\n\n get apiStageUrl() : string {\n return `${ config.apiStage }.${ config.stageDomain }`;\n },\n\n get localhostUrl() : string {\n return `http://localhost.paypal.com:${ config.ports.default }`;\n },\n\n set localhostUrl(val) {\n delete this.localhostUrl;\n this.localhostUrl = val;\n },\n\n merchantID: '',\n authCode: '',\n\n logLevel: __PAYPAL_CHECKOUT__.__DEFAULT_LOG_LEVEL__,\n\n throttles: {\n v4_mobile_device: 0\n },\n\n domain_settings: {\n 'walmart.com': {\n ie_full_page: false,\n allow_full_page_fallback: true,\n memoize_payment: true,\n force_bridge: true,\n log_authorize: true\n },\n\n 'ulta.com': {\n disable_venmo: true\n },\n\n 'barnesandnoble.com': {\n disable_venmo: true\n },\n\n 'bn.com': {\n disable_venmo: true\n },\n\n 'agoratix.com': {\n disable_venmo: true\n },\n\n 'tractorsupply.com': {\n disable_venmo: true\n },\n\n 'etsy.com': {\n ie_full_page: false,\n allow_full_page_fallback: true,\n memoize_payment: true,\n force_bridge: true,\n log_authorize: true\n },\n\n 'ticketmaster.com': {\n disable_venmo: true\n },\n\n 'livenation.com': {\n disable_venmo: true\n },\n\n 'frontgatetickets.com': {\n disable_venmo: true\n },\n\n 'williams-sonoma.com': {\n disable_venmo: true\n },\n\n 'westelm.com': {\n disable_venmo: true\n },\n\n 'markandgraham.com': {\n disable_venmo: true\n },\n\n 'potterybarn.com': {\n disable_venmo: true\n },\n\n 'potterybarnkids.com': {\n disable_venmo: true\n },\n\n 'pbteen.com': {\n disable_venmo: true\n },\n\n 'beallsflorida.com': {\n disable_venmo: true\n },\n\n 'therealreal.com': {\n disable_venmo: true\n },\n\n 'liveaquaria.com': {\n disable_venmo: true\n },\n\n 'drsfostersmith.com': {\n disable_venmo: true\n },\n\n 'boxed.com': {\n disable_venmo: true\n },\n\n 'bevisible.com': {\n disable_venmo: true\n },\n\n 'moeller.org': {\n disable_venmo: true\n },\n\n 'searshometownstores.com': {\n disable_venmo: true\n },\n\n 'searshardwarestores.com': {\n disable_venmo: true\n },\n\n 'searshomeapplianceshowroom.com': {\n disable_venmo: true\n },\n\n 'barkshop.com': {\n disable_venmo: true\n },\n\n 'vividseats.com': {\n disable_venmo: true\n },\n\n 'getcargo.today': {\n disable_venmo: true\n },\n\n 'smartdestinations.com': {\n disable_venmo: true\n },\n\n 'philadelphiapass.com': {\n disable_venmo: true\n },\n\n 'thesydneypass.com': {\n disable_venmo: true\n },\n\n '3secondlash.com': {\n disable_venmo: true\n },\n\n 'newyorkpass.com': {\n disable_venmo: true\n },\n\n 'dndbeyond.com': {\n disable_venmo: true\n },\n\n 'app.zapbuy.it': {\n disable_venmo: true\n },\n\n 'gamersaloon.com': {\n disable_venmo: true\n },\n\n '1800contacts.com': {\n disable_venmo: true\n },\n\n 'shopchatters.ca': {\n disable_venmo: true\n },\n\n 'shopguyswin.ca': {\n disable_venmo: true\n },\n\n 'jjill.com': {\n disable_venmo: true\n },\n\n 'qvc.com': {\n disable_venmo: true\n },\n\n 'stelladot.com': {\n disable_venmo: true\n },\n\n 'keepcollective.com': {\n disable_venmo: true\n },\n\n 'everskin.com': {\n disable_venmo: true\n },\n\n 'zulily.com': {\n disable_venmo: true\n },\n\n 'freshly.com': {\n disable_venmo: true\n },\n\n 'buypeticare.com': {\n disable_venmo: true\n },\n\n 'getownzone.com': {\n disable_venmo: true\n },\n\n 'uncommongoods.com': {\n disable_venmo: true\n },\n\n 'onegold.com': {\n disable_venmo: true\n },\n\n 'universitytees.com': {\n disable_venmo: true\n },\n\n 'revolve.com': {\n disable_venmo: true\n },\n\n 'functionofbeauty.com': {\n disable_venmo: true\n },\n\n 'givebutter.com': {\n disable_venmo: true\n },\n\n 'hausmart.com': {\n disable_venmo: true\n },\n\n 'derbyjackpot.com': {\n disable_venmo: true\n },\n\n 'ancestry.com': {\n disable_venmo: true\n },\n\n 'boats.net': {\n disable_venmo: true\n },\n\n 'partzilla.com': {\n disable_venmo: true\n },\n\n 'firedog.com': {\n disable_venmo: true\n },\n\n 'chick-fil-a.com': {\n disable_venmo: true\n },\n\n 'roku.com': {\n disable_venmo: true\n },\n\n 'barkbox.com': {\n disable_venmo: true\n },\n\n 'neimanmarcus.com': {\n disable_venmo: true\n },\n\n 'lastcall.com': {\n disable_venmo: true\n },\n\n 'horchow.com': {\n disable_venmo: true\n },\n\n 'bergdorfgoodman.com': {\n disable_venmo: true\n },\n\n 'fwrd.com': {\n disable_venmo: true\n },\n\n 'plunderdesign.com': {\n disable_venmo: true\n },\n\n 'stitchfix.com': {\n disable_venmo: true\n },\n\n 'revzilla.com': {\n disable_venmo: true\n },\n\n 'cyclegear.com': {\n disable_venmo: true\n },\n\n 'chegg.com': {\n disable_venmo: true\n },\n\n 'youniqueproducts.com': {\n disable_venmo: true\n },\n\n 'archives.com': {\n disable_venmo: true\n },\n\n 'hautelook.com': {\n disable_venmo: true\n },\n\n 'nordstromrack.com': {\n disable_venmo: true\n },\n\n 'motherhoodcanada.ca': {\n disable_venmo: true\n },\n\n 'atomtickets.com': {\n disable_venmo: true\n },\n\n 'trademore.com': {\n disable_venmo: true\n },\n\n 'lasheaseoffer.com': {\n disable_venmo: true\n },\n\n 'rookie.paypalsixthman.com': {\n disable_venmo: true\n },\n\n '1800Contacts.com': {\n disable_venmo: true\n },\n\n 'hulu.com': {\n disable_venmo: true\n },\n\n 'grubhub.com': {\n disable_venmo: true\n },\n\n 'eat24.com': {\n disable_venmo: true\n },\n\n 'seamless.com': {\n disable_venmo: true\n },\n\n 'freshfeetscrubber.com': {\n disable_venmo: true\n },\n\n 'opensky.com': {\n disable_venmo: true\n },\n\n 'dotandbo.com': {\n disable_venmo: true\n },\n\n 'storenvy.com': {\n disable_venmo: true\n },\n\n 'gemafina.com': {\n disable_venmo: true\n },\n\n 'pickperfect.com': {\n disable_venmo: true\n },\n\n '55mulberry.com': {\n disable_venmo: true\n },\n \n 'hollar.com': {\n disable_venmo: true\n },\n\n 'bjs.com': {\n disable_venmo: true\n },\n\n 'playsugarhouse.com': {\n disable_venmo: true\n },\n\n 'lakeshorelearning.com': {\n disable_venmo: true\n },\n\n 'llmhq.com': {\n disable_venmo: true\n },\n\n 'gainful.com': {\n disable_venmo: true\n },\n\n 'modaoperandi.com': {\n disable_venmo: true\n },\n \n 'play.jackpocket.com': {\n disable_venmo: true\n },\n\n 'crepeerase.com': {\n disable_venmo: true\n },\n\n 'specificbeauty.com': {\n disable_venmo: true\n },\n\n 'meaningfulbeauty.com': {\n disable_venmo: true\n },\n\n 'smileactives.com ': {\n disable_venmo: true\n },\n\n 'mally.com': {\n disable_venmo: true\n },\n\n 'westmorebeauty.com': {\n disable_venmo: true\n },\n\n 'subd.com': {\n disable_venmo: true\n },\n\n 'seacalmskin.com': {\n disable_venmo: true\n },\n \n 'whittier.edu': {\n disable_venmo: true\n },\n \n 'curology.com': {\n disable_venmo: true\n },\n \n 'monoprice.com': {\n disable_venmo: true\n },\n \n 'dominos.com': {\n disable_venmo: true\n },\n \n 'audiobooks.com': {\n disable_venmo: true\n },\n \n '1aauto.com': {\n disable_venmo: true\n },\n\n 'greatwolf.com': {\n disable_venmo: true\n },\n\n 'cvs.com': {\n disable_venmo: true\n },\n\n 'gilt.com': {\n disable_venmo: true\n },\n\n 'ruelala.com': {\n disable_venmo: true\n }\n },\n\n creditTestDomains: [ 'bluesuncorp.co.uk', 'nationsphotolab.com', 'plexusworldwide.com', 'nshss.org', 'bissell.com', 'mobstub.com', 'vuoriclothing.com', 'tape4backup.com', 'avivamiento.com', 'rhododendron.org', 'whiterabbitjapan.com', 'atsracing.net', 'thehilltopgallery.com', 'weedtraqr.com', 'worldpantry.com', 'ciraconnect.com', 'mymalls.com', 'prowinch.com', 'zodiacpoolsystems.com', 'everlywell.com', 'candlewarmers.com', 'chop.edu', 'incruises.com', 'flikn.com', 'didforsale.com', 'mcc.org', 'sygu.net', 'merchbar.com', 'eduinconline.com', 'us.livebetterwith.com', 'bakemeawish.com', 'judolaunch.com', 'eventcartel.com', 'tapatalk.com', 'telescope.com', 'covenant.edu', 'aquatruwater.com', 'spingo.com', 'usu.edu', 'getcelerity.com', 'brandless.com', 'saberigniter.com', 'euromodeltrains.com', 'gofasttrader.com', 'megamodzplanet.com', 'draftanalyzer.com', 'lovewithoutboundaries.com', 'filterpop.com', 'seekverify.com', 'photoandgo.com', 'sightseeingpass.com', 'bigoanddukes.com', 'thethirstyduck.com', 'thebrushguys.com', '907delivery.com', 'mauisails.com', 'drive.net', 'channelmax.net', 'modernrebelco.com', 'enchanteddiamonds.com', 'ibabbleon.com', 'fullgenomes.com', 'conn-comp.com', 'wingware.com', 'paradigmgoods.com', 'theneptunegroup.com', 'kidzartworks.com', 'unirealm.com', 'ncfarmsinc.com', 'oneofakindantiques.com', 'servers4less.com', 'stumpthespread.com', 'marketwagon.com', 'monsterhouseplans.com', 'canterburychoral.org', 'teacupnordic.org', 'thethirstyduck.com', 'medialoot.com', 'theartistunion.com', 'yourglamourzone.com', 'breckstables.com', 'mackephotography.com', 'dsaj.org', 'massluminosity.com', 'tespa.org', 'versatilearts.net', 'yecup.org', 'divinebusinessmanagement.com', 'captivatebeautyservices.com', 'class4me.com', 'wcsonlineuniversity.com', 'pvplive.com', 'kyneteks.com', 'rare-paper.com', 'bpg.bpgsim.biz', 'geodegallery.com', 'way.com', 'kringle.com', 'talentedmrsalas.ph', 'litcharts.com', 'purpletreephotography.com', 'apache.org', 'neopackage.com', 'globaldance.tv', 'integral.studio', 'airdoctorpro.com', 'ivoryandiron.com', 'yuengling.com', 'averysbranchfarms.com', 'amberreinink.com', 'skinnymechocolate.com', 'bmbl.net', 'ncwatercolor.net', 'astrograph.com', 'localadventures.mx', 'ripcurl.com', 'worldfootbrakechallenge.com', 'shespeakssales.com', 'obrienguitars.com', 'jadenikkolephoto.com', 'americavoice.com', 'cassiexie.com', 'aamastateconvention.org', 'rellesflorist.com', 'passionnobby.com', 'bodybyheidi.com', 'roqos.com', 'prijector.com', 'maryswanson.net', 'tsghobbies.com', 'erinlaytonphotography.com', 'darter.org', 'fountainpenhospital.com', 'myzestfullife.com', 'pcog.org', 'alisabethdesigns.com', 'katiemathisphoto.com', 'strictlybellaphotography.com', 'maptools.com', 'sites.google.com', 'gallerr.com', 'southfloridatrikke.com', 'caviar.tv', 'mintingmasters.com', 'prospectorsguild.com', 'inktale.com', 'prettygirlgoods.com', 'laceycahill.com', 'daniellenowak.com', 't212.org', 'scmsinc.com', 'babypaloozanc.com', 'tetrisonline.com', 'grdd.net', 'cdspg.info', 'airshipapparel.com', 'waft.com', 'extendpets.com', 'supplyhub.com', 'hlbsusa.com', 'jaderollerbeauty.com', 'theparentingjunkie.com', 'schagringas.com', 'yourscribemate.com', 'sportscollectibles.com', 'thedivinenoise.com', 'hometeamsonline.com', 'trademarkpress.com', 'destinationenglish.us', 'jacquesflowers.com', 'aliszhatchphotography.com', 'rusticfoundry.com', 'ahhhmassage.net', 'frezzor.com', 'mandelininc.com', 'kayleejackson.com', 'monkinstitute.org', 'eddiebsbbq.com', 'morningstarmediaservices.com', 'kinevative.com', 'orivet.com', 'digitalprinthouse.net', 'dynamicgenius.com', 'allpartsusa.com', 'flowersbydavid.net', 'nwvoices.org', 'leaptrade.com', 'tulsaschoolpics.com', 'alioth.io', 'windowflair.com', 'vitcom.net', 'simplybeautifulfashions.com', 'christinabenton.com', 'fromthedaughter.com', 'hometowngraphics.net', 'fibanalysis.com', 'creativejobscentral.com', 'sandbox.gg', 'jt-digitalmedia.com', 'kodable.com', 'birthingstone.com', 'taranicholephoto.com', 'hillyfieldsflorist.com', 'charitynoelphoto.com', 'auxdelicesfoods.com', 'terilynnphotography.com', 'folieadeuxevents.com', 'karensfloral.com', 'montgomerydiveclub.com', 'rainbowplastics.com', 'confettionthedancefloor.com', 'vomozmedia.com', 'neatmod.com', 'getnaturafled.com', 'callingpost.com', 'iamfamily.org', 'pedigreeonline.com', 'typeboost.io', 'in-n-outpetdoor.com', 'nerdstockgc.com', 'keiadmin.com', 'createdbykaui.com', 'aikophoto.com', 'lonestar.ink', 'stlfurs.com', 'treasurelistings.com', 'thecubicle.us', 'redclaypaper.com', 'blushhousemedia.com', 'documentsanddesigns.com', 'whitneyleighphotography.shootproof.com', 'amaryllisday.com', 'hermanproav.com', 'felicemedia.com', 'withloveplacenta.com', 'store.brgadgets.co', 'klowephoto.com', 'spenceraustinconsulting.com', 'sno-eagles.org', 'dsatallahassee.org', 'bakupages.com', 'neswc.com', 'josiebrooksphotography.com', 'brisksale.com', 'legalwhoosh.com', 'jasmineeaster.com', 'swatstudios.com', 'facebook.com', 'shakershell.com', 'alexiswinslow.com', 'mixeddimensions.com', 'sweetpproductions.com', 'lbeaphotography.com', 'otlseatfillers.com', 'jdtickets.com', 'catholicar.com', 'masque.com', 'smalltownstudio.net', 'goherbalife.com', 'itzyourz.com', 'magazinespeedloader.com', 'dreammachines.io', 'dallasdieteticalliance.org', 'http:', 'medair.org', 'unbridledambition.com', 'sarasprints.com', 'wiperecord.com', 'showmyrabbit.com', 'cctrendsshop.com', 'rachelalessandra.com', 'otherworld-apothecary.com', 'melissaannphoto.com', 'girlceo.co', 'seasidemexico.com', 'telosid.com', 'instin.com', 'marinecorpsmustang.org', 'lancityconnect.com', 'hps1.org', 'karenware.com', 'livecurriculum.com', 'spellingstars.com', 'vektorfootball.com', 'zaltv.com', 'nebraskamayflower.org', 'ethiopianspices.com', 'immitranslate.com', 'rafaelmagic.com.com', 'bahc1.org', 'newenamel.com', 'bhchp.org', 'buybulkamerica.com', 'sourcepoint.com', 'squarestripsports.com', 'wix.com', 'wilderootsphotography.com', 'goodsalt.com', 'systemongrid.com', 'designmil.org', 'freshtrendhq.com', 'valisimofashions.com', 'buyneatly.com', 'getbeauty.us', 'intellimidia.com' ],\n \n customCountry: false,\n\n SUPPORTED_BROWSERS: {\n msie: '11',\n firefox: '30',\n chrome: '27',\n safari: '7',\n opera: '16',\n msedge: '12',\n samsungBrowser: '2.1',\n silk: '59.3',\n ucbrowser: '10.0.0.488',\n vivaldi: '1.91'\n },\n\n session_uid_lifetime: 5 * 60 * 1000,\n\n _apiStage: '',\n\n get apiStage() : string {\n return config._apiStage || config.stage;\n },\n\n set apiStage(value) {\n config._apiStage = value;\n },\n\n ports: {\n default: 8000,\n button: 8000,\n checkout: 8000,\n guest: 8001,\n altpay: 3000\n },\n\n get paypalUrls() : Object {\n return {\n [ ENV.LOCAL ]: config.localhostUrl,\n [ ENV.STAGE ]: `https://www.${ config.stageUrl }`,\n [ ENV.SANDBOX ]: `https://www.sandbox.paypal.com`,\n [ ENV.PRODUCTION ]: `https://www.paypal.com`,\n [ ENV.TEST ]: `${ window.location.protocol }//${ window.location.host }`,\n [ ENV.DEMO ]: `${ window.location.protocol }//localhost.paypal.com:${ window.location.port }`\n };\n },\n\n get paypalDomains() : Object {\n return {\n [ ENV.LOCAL ]: 'http://localhost.paypal.com:8000',\n [ ENV.STAGE ]: `https://www.${ config.stageUrl }`,\n [ ENV.SANDBOX ]: `https://www.sandbox.paypal.com`,\n [ ENV.PRODUCTION ]: `https://www.paypal.com`,\n [ ENV.TEST ]: `mock://www.paypal.com`,\n [ ENV.DEMO ]: `${ window.location.protocol }//localhost.paypal.com:${ window.location.port }`\n };\n },\n\n get wwwApiUrls() : Object {\n return {\n [ ENV.LOCAL ]: `https://www.${ config.stageUrl }`,\n [ ENV.STAGE ]: `https://www.${ config.stageUrl }`,\n [ ENV.SANDBOX ]: `https://www.sandbox.paypal.com`,\n [ ENV.PRODUCTION ]: `https://www.paypal.com`,\n [ ENV.TEST ]: `${ window.location.protocol }//${ window.location.host }`\n };\n },\n\n get corsApiUrls() : Object {\n return {\n [ ENV.LOCAL ]: `https://${ config.apiStageUrl }:12326`,\n [ ENV.STAGE ]: `https://${ config.apiStageUrl }:12326`,\n [ ENV.SANDBOX ]: `https://cors.api.sandbox.paypal.com`,\n [ ENV.PRODUCTION ]: `https://cors.api.paypal.com`,\n [ ENV.TEST ]: `${ window.location.protocol }//${ window.location.host }`\n };\n },\n\n get apiUrls() : Object {\n\n const domain = `${ window.location.protocol }//${ window.location.host }`;\n const corsApiUrls = config.corsApiUrls;\n const wwwApiUrls = config.wwwApiUrls;\n\n return {\n [ ENV.LOCAL ]: domain === wwwApiUrls.local ? wwwApiUrls.local : corsApiUrls.local,\n [ ENV.STAGE ]: domain === wwwApiUrls.stage ? wwwApiUrls.stage : corsApiUrls.stage,\n [ ENV.SANDBOX ]: domain === wwwApiUrls.sandbox ? wwwApiUrls.sandbox : corsApiUrls.sandbox,\n [ ENV.PRODUCTION ]: domain === wwwApiUrls.production ? wwwApiUrls.production : corsApiUrls.production,\n [ ENV.TEST ]: domain === wwwApiUrls.test ? wwwApiUrls.test : corsApiUrls.test\n };\n },\n\n get checkoutUri() : ?string {\n return null;\n },\n\n set checkoutUri(val) {\n delete this.checkoutUri;\n this.checkoutUri = val;\n },\n\n get checkoutUris() : Object {\n if (config.checkoutUri) {\n return {\n [ ENV.LOCAL ]: config.checkoutUri,\n [ ENV.STAGE ]: config.checkoutUri,\n [ ENV.SANDBOX ]: config.checkoutUri,\n [ ENV.PRODUCTION ]: config.checkoutUri,\n [ ENV.TEST ]: config.checkoutUri,\n [ ENV.DEMO ]: config.checkoutUri\n };\n }\n\n return {\n [ ENV.LOCAL ]: `/webapps/hermes`,\n [ ENV.STAGE ]: `/webapps/hermes`,\n [ ENV.SANDBOX ]: `/checkoutnow`,\n [ ENV.PRODUCTION ]: `/checkoutnow`,\n [ ENV.TEST ]: `/base/test/windows/checkout/index.htm?checkouturl=true`,\n [ ENV.DEMO ]: `/demo/dev/checkout.htm`\n };\n },\n\n altpayUris: {\n [ ENV.LOCAL ]: `/latinumcheckout`,\n [ ENV.STAGE ]: `/latinumcheckout`,\n [ ENV.SANDBOX ]: `/latinumcheckout`,\n [ ENV.PRODUCTION ]: `/latinumcheckout`,\n [ ENV.TEST ]: `/base/test/windows/checkout/index.htm?checkouturl=true`,\n [ ENV.DEMO ]: `/demo/dev/checkout.htm`\n },\n\n guestUris: {\n [ ENV.LOCAL ]: `/webapps/xoonboarding`,\n [ ENV.STAGE ]: `/webapps/xoonboarding`,\n [ ENV.SANDBOX ]: `/webapps/xoonboarding`,\n [ ENV.PRODUCTION ]: `/webapps/xoonboarding`,\n [ ENV.TEST ]: `/base/test/windows/checkout/index.htm?guesturl=true`,\n [ ENV.DEMO ]: `/demo/dev/guest.htm`\n },\n\n billingUris: {\n [ ENV.LOCAL ]: `/webapps/hermes/agreements`,\n [ ENV.STAGE ]: `/webapps/hermes/agreements`,\n [ ENV.SANDBOX ]: `/agreements/approve`,\n [ ENV.PRODUCTION ]: `/agreements/approve`,\n [ ENV.TEST ]: `/base/test/windows/checkout/index.htm?billingurl=true`,\n [ ENV.DEMO ]: `/demo/dev/checkout.htm`\n },\n\n buttonUris: {\n [ ENV.LOCAL ]: `/smart/button`,\n [ ENV.STAGE ]: `/smart/button`,\n [ ENV.SANDBOX ]: `/smart/button`,\n [ ENV.PRODUCTION ]: `/smart/button`,\n [ ENV.TEST ]: `/base/test/windows/button/index.htm`,\n [ ENV.DEMO ]: `/demo/dev/button.htm`\n },\n\n inlinedCardFieldUris: {\n [ ENV.LOCAL ]: `/smart/card-fields`,\n [ ENV.STAGE ]: `/smart/card-fields`,\n [ ENV.SANDBOX ]: `/smart/card-fields`,\n [ ENV.PRODUCTION ]: `/smart/card-fields`,\n [ ENV.TEST ]: `/base/test/windows/card-fields/index.htm`,\n [ ENV.DEMO ]: `/demo/dev/card.htm`\n },\n\n postBridgeUris: {\n [ ENV.LOCAL ]: `/webapps/hermes/component-meta`,\n [ ENV.STAGE ]: `/webapps/hermes/component-meta`,\n [ ENV.SANDBOX ]: `/webapps/hermes/component-meta`,\n [ ENV.PRODUCTION ]: `/webapps/hermes/component-meta`,\n [ ENV.TEST ]: `/base/test/windows/component-meta/index.htm`,\n [ ENV.DEMO ]: `/demo/dev/bridge.htm`\n },\n\n legacyCheckoutUris: {\n [ ENV.LOCAL ]: `/cgi-bin/webscr?cmd=_express-checkout&xo_node_fallback=true`,\n [ ENV.STAGE ]: `/cgi-bin/webscr?cmd=_express-checkout&xo_node_fallback=true`,\n [ ENV.SANDBOX ]: `/cgi-bin/webscr?cmd=_express-checkout&xo_node_fallback=true`,\n [ ENV.PRODUCTION ]: `/cgi-bin/webscr?cmd=_express-checkout&xo_node_fallback=true`,\n [ ENV.TEST ]: `#fallback`\n },\n\n buttonJSUrls: {\n [ ENV.LOCAL ]: `https://www.paypalobjects.com/api/button.js`,\n [ ENV.STAGE ]: `https://www.paypalobjects.com/api/button.js`,\n [ ENV.SANDBOX ]: `https://www.paypalobjects.com/api/button.js`,\n [ ENV.PRODUCTION ]: `https://www.paypalobjects.com/api/button.js`,\n [ ENV.TEST ]: `/base/test/lib/button.js`,\n [ ENV.DEMO ]: `https://www.paypalobjects.com/api/button.js`\n },\n\n get buttonJSUrl() : string {\n return config.buttonJSUrls[config.env];\n },\n\n loginUri: `/signin/`,\n\n hermesLoggerUri: `/webapps/hermes/api/logger`,\n\n loggerUri: `/xoplatform/logger/api/logger`,\n\n loggerThrottlePercentage: 1.0, // 100%\n\n pptmUri: `/tagmanager/pptm.js`,\n\n get postBridgeUri() : string {\n return `${ config.postBridgeUris[config.env] }?xcomponent=1`;\n },\n\n paymentStandardUri: `/webapps/xorouter?cmd=_s-xclick`,\n\n authApiUri: `/v1/oauth2/token`,\n paymentApiUri: `/v1/payments/payment`,\n orderApiUri: `/v2/checkout/orders`,\n billingApiUri: `/v1/billing-agreements/agreement-tokens`,\n experienceApiUri: `/v1/payment-experience/web-profiles`,\n trackingApiUri: `/v1/risk/transaction-contexts`,\n\n get checkoutUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local }${ config.checkoutUris.local.replace(`:${ config.ports.default }`, `:${ config.ports.checkout }`) }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.checkoutUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.checkoutUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.checkoutUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.checkoutUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.test }${ config.checkoutUris.demo }`\n };\n },\n\n get guestUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local.replace(`:${ config.ports.default }`, `:${ config.ports.guest }`) }${ config.guestUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.guestUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.guestUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.guestUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.guestUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.test }${ config.guestUris.demo }`\n };\n },\n\n get altpayUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local.replace(`:${ config.ports.default }`, `:${ config.ports.altpay }`) }${ config.altpayUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.altpayUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.altpayUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.altpayUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.altpayUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.test }${ config.altpayUris.demo }`\n };\n },\n\n get billingUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local.replace(`:${ config.ports.default }`, `:${ config.ports.checkout }`) }${ config.billingUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.billingUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.billingUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.billingUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.billingUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.test }${ config.billingUris.demo }`\n };\n },\n\n get buttonUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local.replace(`:${ config.ports.default }`, `:${ config.ports.button }`) }${ config.buttonUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.buttonUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.buttonUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.buttonUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.buttonUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.demo }${ config.buttonUris.demo }`\n };\n },\n\n get inlinedCardFieldUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local.replace(`:${ config.ports.default }`, `:${ config.ports.button }`) }${ config.inlinedCardFieldUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.inlinedCardFieldUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.inlinedCardFieldUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.inlinedCardFieldUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.inlinedCardFieldUris.test }`,\n [ ENV.DEMO ]: `${ paypalUrls.demo }${ config.inlinedCardFieldUris.demo }`\n };\n },\n\n get loginUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.stage }${ config.loginUri }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.loginUri }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.loginUri }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.loginUri }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.loginUri }`\n };\n },\n\n get paymentsStandardUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local }${ config.paymentStandardUri }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.paymentStandardUri }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.paymentStandardUri }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.paymentStandardUri }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.paymentStandardUri }`\n };\n },\n\n get metaFrameUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.local }${ config.postBridgeUri }&env=local`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.postBridgeUri }&env=stage&stage=${ config.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.postBridgeUri }&env=sandbox`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.postBridgeUri }&env=production`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.postBridgeUri }&env=test`,\n [ ENV.DEMO ]: `${ paypalUrls.demo }${ config.postBridgeUri }&env=demo`\n };\n },\n\n get legacyCheckoutUrls() : Object {\n\n const paypalUrls = config.paypalUrls;\n\n return {\n [ ENV.LOCAL ]: `${ paypalUrls.stage }${ config.legacyCheckoutUris.local }`,\n [ ENV.STAGE ]: `${ paypalUrls.stage }${ config.legacyCheckoutUris.stage }`,\n [ ENV.SANDBOX ]: `${ paypalUrls.sandbox }${ config.legacyCheckoutUris.sandbox }`,\n [ ENV.PRODUCTION ]: `${ paypalUrls.production }${ config.legacyCheckoutUris.production }`,\n [ ENV.TEST ]: `${ paypalUrls.test }${ config.legacyCheckoutUris.test }`\n };\n },\n\n get authApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const authApiUri = config.authApiUri;\n\n return {\n [ ENV.LOCAL ]: `${ apiUrls.local }${ authApiUri }`,\n [ ENV.STAGE ]: `${ apiUrls.stage }${ authApiUri }`,\n [ ENV.SANDBOX ]: `${ apiUrls.sandbox }${ authApiUri }`,\n [ ENV.PRODUCTION ]: `${ apiUrls.production }${ authApiUri }`,\n [ ENV.TEST ]: `${ apiUrls.test }${ authApiUri }`\n };\n },\n\n get paymentApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const paymentApiUri = config.paymentApiUri;\n\n return {\n [ ENV.LOCAL ]: `${ apiUrls.local }${ paymentApiUri }`,\n [ ENV.STAGE ]: `${ apiUrls.stage }${ paymentApiUri }`,\n [ ENV.SANDBOX ]: `${ apiUrls.sandbox }${ paymentApiUri }`,\n [ ENV.PRODUCTION ]: `${ apiUrls.production }${ paymentApiUri }`,\n [ ENV.TEST ]: `${ apiUrls.test }${ paymentApiUri }`\n };\n },\n\n get orderApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const orderApiUri = config.orderApiUri;\n\n return {\n [ENV.LOCAL]: `${ apiUrls.local }${ orderApiUri }`,\n [ENV.STAGE]: `${ apiUrls.stage }${ orderApiUri }`,\n [ENV.SANDBOX]: `${ apiUrls.sandbox }${ orderApiUri }`,\n [ENV.PRODUCTION]: `${ apiUrls.production }${ orderApiUri }`,\n [ENV.TEST]: `${ apiUrls.test }${ orderApiUri }`\n };\n },\n\n get billingApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const billingApiUri = config.billingApiUri;\n\n return {\n [ ENV.LOCAL ]: `${ apiUrls.local }${ billingApiUri }`,\n [ ENV.STAGE ]: `${ apiUrls.stage }${ billingApiUri }`,\n [ ENV.SANDBOX ]: `${ apiUrls.sandbox }${ billingApiUri }`,\n [ ENV.PRODUCTION ]: `${ apiUrls.production }${ billingApiUri }`,\n [ ENV.TEST ]: `${ apiUrls.test }${ billingApiUri }`\n };\n },\n\n get experienceApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const experienceApiUri = config.experienceApiUri;\n\n return {\n [ ENV.LOCAL ]: `${ apiUrls.local }${ experienceApiUri }`,\n [ ENV.STAGE ]: `${ apiUrls.stage }${ experienceApiUri }`,\n [ ENV.SANDBOX ]: `${ apiUrls.sandbox }${ experienceApiUri }`,\n [ ENV.PRODUCTION ]: `${ apiUrls.production }${ experienceApiUri }`,\n [ ENV.TEST ]: `${ apiUrls.test }${ experienceApiUri }`\n };\n },\n\n get trackingApiUrls() : Object {\n\n const apiUrls = config.apiUrls;\n const trackingApiUri = config.trackingApiUri;\n\n return {\n [ ENV.LOCAL ]: `${ apiUrls.local }${ trackingApiUri }`,\n [ ENV.STAGE ]: `${ apiUrls.stage }${ trackingApiUri }`,\n [ ENV.SANDBOX ]: `${ apiUrls.sandbox }${ trackingApiUri }`,\n [ ENV.PRODUCTION ]: `${ apiUrls.production }${ trackingApiUri }`,\n [ ENV.TEST ]: `${ apiUrls.test }${ trackingApiUri }`\n };\n },\n\n _paypalUrl: '',\n\n get paypalUrl() : string {\n return this._paypalUrl || config.paypalUrls[config.env];\n },\n\n set paypalUrl(value) {\n this._paypalUrl = value;\n },\n\n get paypalDomain() : string {\n return config.paypalDomains[config.env];\n },\n\n get corsApiUrl() : string {\n return config.corsApiUrls[config.env];\n },\n\n get wwwApiUrl() : string {\n return config.wwwApiUrls[config.env];\n },\n\n get apiUrl() : string {\n\n const domain = `${ window.location.protocol }//${ window.location.host }`;\n const corsApiUrl = config.corsApiUrl;\n const wwwApiUrl = config.wwwApiUrl;\n\n return domain === wwwApiUrl ? wwwApiUrl : corsApiUrl;\n },\n\n get checkoutUrl() : string {\n return `${ config.paypalUrl }${ config.checkoutUris[config.env] }`;\n },\n\n get billingUrl() : string {\n return `${ config.paypalUrl }${ config.billingUris[config.env] }`;\n },\n\n get buttonUrl() : string {\n return `${ config.paypalUrl }${ config.buttonUris[config.env] }`;\n },\n\n get legacyCheckoutUrl() : string {\n return config.legacyCheckoutUrls[config.env];\n },\n\n get postBridgeUrl() : string {\n return `${ config.paypalUrl }${ config.postBridgeUri }`;\n },\n\n get postBridgeDomain() : string {\n return `${ config.paypalDomain }`;\n },\n\n get loggerUrl() : string {\n const isTestExperiment = Math.random() < config.loggerThrottlePercentage;\n const loggerUrl = isTestExperiment ? config.loggerUri : config.hermesLoggerUri;\n\n return `${ config.paypalUrl }${ loggerUrl }`;\n },\n\n get pptmUrl() : string {\n return `${ config.paypalUrls[config.env] }${ config.pptmUri }`;\n },\n\n get authApiUrl() : string {\n return `${ config.apiUrl }${ config.authApiUri }`;\n },\n\n get paymentApiUrl() : string {\n return `${ config.apiUrl }${ config.paymentApiUri }`;\n },\n\n get orderApiUrl() : string {\n return `${ config.apiUrl }${ config.orderApiUri }`;\n },\n\n get billingApiUrl() : string {\n return `${ config.apiUrl }${ config.billingApiUri }`;\n },\n\n get experienceApiUrl() : string {\n return `${ config.apiUrl }${ config.experienceApiUri }`;\n },\n\n defaultLocale: {\n country: COUNTRY.US,\n lang: LANG.EN\n }\n};\n","/* @flow */\n\nexport * from './config';\n","\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nexport function extend(dest, src, over=true) {\n dest = dest || {};\n src = src || {};\n\n for (let i in src) {\n if (src.hasOwnProperty(i)) {\n if (over || !dest.hasOwnProperty(i)) {\n dest[i] = src[i];\n }\n }\n }\n\n return dest;\n}\n\nexport function isSameProtocol(url) {\n return window.location.protocol === url.split('/')[0];\n}\n\nexport function isSameDomain(url) {\n let match = url.match(/https?:\\/\\/[^/]+/);\n\n if (!match) {\n return true;\n }\n\n return match[0] === `${window.location.protocol}//${window.location.host}`;\n}\n\nexport function ajax(method, url, headers={}, data={}, { fireAndForget = false } = {}) {\n\n return new ZalgoPromise(resolve => {\n let XRequest = window.XMLHttpRequest || window.ActiveXObject;\n\n if (window.XDomainRequest && !isSameDomain(url)) {\n\n if (!isSameProtocol(url)) {\n return resolve();\n }\n\n XRequest = window.XDomainRequest;\n }\n\n let req = new XRequest('MSXML2.XMLHTTP.3.0');\n req.open(method.toUpperCase(), url, true);\n\n if (typeof req.setRequestHeader === 'function') {\n req.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n req.setRequestHeader('Content-type', 'application/json');\n\n for (let headerName in headers) {\n if (headers.hasOwnProperty(headerName)) {\n req.setRequestHeader(headerName, headers[headerName]);\n }\n }\n }\n\n if (fireAndForget) {\n resolve();\n } else {\n req.onreadystatechange = () => {\n if (req.readyState > 3) {\n resolve();\n }\n };\n }\n\n req.send(JSON.stringify(data).replace(/&/g, '%26'));\n });\n}\n\nexport function promiseDebounce(method, interval) {\n\n let debounce = {};\n\n return function() {\n let args = arguments;\n\n if (debounce.timeout) {\n clearTimeout(debounce.timeout);\n delete debounce.timeout;\n }\n\n debounce.timeout = setTimeout(() => {\n\n let resolver = debounce.resolver;\n let rejector = debounce.rejector;\n\n delete debounce.promise;\n delete debounce.resolver;\n delete debounce.rejector;\n delete debounce.timeout;\n\n return ZalgoPromise.resolve().then(() => {\n return method.apply(null, args);\n }).then(resolver, rejector);\n\n }, interval);\n\n debounce.promise = debounce.promise || new ZalgoPromise((resolver, rejector) => {\n debounce.resolver = resolver;\n debounce.rejector = rejector;\n });\n\n return debounce.promise;\n };\n}\n\nexport function onWindowReady() : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n if (typeof document !== 'undefined' && document.readyState === 'complete') {\n resolve();\n }\n\n window.addEventListener('load', resolve);\n });\n}\n\nexport function safeInterval(method, time) {\n\n let timeout;\n\n function loop() {\n timeout = setTimeout(() => {\n method();\n loop();\n }, time);\n }\n\n loop();\n\n return {\n cancel() {\n clearTimeout(timeout);\n }\n };\n}\n\nexport function uniqueID() {\n let chars = '0123456789abcdef';\n\n return 'xxxxxxxxxx'.replace(/./g, () => {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n });\n}\n\nexport function isIE() {\n return Boolean(window.document.documentMode);\n}\n","\nexport let payloadBuilders = [];\nexport let metaBuilders = [];\nexport let trackingBuilders = [];\nexport let headerBuilders = [];\n\nexport function addPayloadBuilder(builder) {\n payloadBuilders.push(builder);\n}\n\nexport function addMetaBuilder(builder) {\n metaBuilders.push(builder);\n}\n\nexport function addTrackingBuilder(builder) {\n trackingBuilders.push(builder);\n}\n\nexport function addHeaderBuilder(builder) {\n headerBuilders.push(builder);\n}","\nexport let config = {\n\n uri: '',\n prefix: '',\n\n initial_state_name: 'init',\n\n flushInterval: 10 * 60 * 1000,\n debounceInterval: 10,\n\n sizeLimit: 300,\n\n // Supress `console.log`s when `true`\n // Recommended for production usage\n silent: false,\n\n heartbeat: true,\n heartbeatConsoleLog: true,\n heartbeatInterval: 5000,\n heartbeatTooBusy: false,\n heartbeatTooBusyThreshold: 10000,\n\n logLevel: 'warn',\n\n autoLog: ['warn', 'error'],\n\n logUnload: true,\n logPerformance: true\n};\n\nexport let logLevels = [ 'error', 'warn', 'info', 'debug' ];\n","\nimport { extend, promiseDebounce, ajax, isIE } from './util';\nimport { payloadBuilders, metaBuilders, trackingBuilders, headerBuilders } from './builders';\nimport { config, logLevels } from './config';\n\nexport let buffer = [];\nexport let tracking = [];\n\nlet transport = (headers, data, options) => {\n return ajax('post', config.uri, headers, data, options);\n}\n\nexport function getTransport() {\n return transport;\n}\n\nexport function setTransport(newTransport) {\n transport = newTransport;\n}\n\nlet loaded = false;\n\nsetTimeout(() => {\n loaded = true;\n}, 1);\n\nexport function print(level, event, payload) {\n\n if (typeof window === 'undefined' || !window.console || !window.console.log) {\n return;\n }\n\n if (!loaded) {\n return setTimeout(() => print(level, event, payload), 1);\n }\n\n let logLevel = config.logLevel;\n\n if (window.LOG_LEVEL) {\n logLevel = window.LOG_LEVEL;\n }\n\n if (logLevels.indexOf(level) > logLevels.indexOf(logLevel)) {\n return;\n }\n\n payload = payload || {};\n\n let args = [event];\n\n if(isIE()){\n payload = JSON.stringify(payload);\n }\n\n args.push(payload);\n\n if (payload.error || payload.warning) {\n args.push('\\n\\n', payload.error || payload.warning);\n }\n\n try {\n if (window.console[level] && window.console[level].apply) {\n window.console[level].apply(window.console, args);\n } else if (window.console.log && window.console.log.apply) {\n window.console.log.apply(window.console, args);\n }\n } catch (err) {\n // pass\n }\n}\n\nexport function immediateFlush({ fireAndForget = false } = {}) {\n\n if (typeof window === 'undefined') {\n return;\n }\n\n if (!config.uri) {\n return;\n }\n\n let hasBuffer = buffer.length;\n let hasTracking = tracking.length;\n\n if (!hasBuffer && !hasTracking) {\n return;\n }\n\n let meta = {};\n\n for (let builder of metaBuilders) {\n try {\n extend(meta, builder(meta), false);\n } catch (err) {\n console.error('Error in custom meta builder:', err.stack || err.toString());\n }\n }\n\n let headers = {};\n\n for (let builder of headerBuilders) {\n try {\n extend(headers, builder(headers), false);\n } catch (err) {\n console.error('Error in custom header builder:', err.stack || err.toString());\n }\n }\n\n let events = buffer;\n\n let req = transport(headers, {\n events,\n meta,\n tracking\n }, {\n fireAndForget\n });\n\n buffer = [];\n tracking = [];\n\n return req;\n}\n\nexport let flush = promiseDebounce(immediateFlush, config.debounceInterval);\n\n\nfunction enqueue(level, event, payload) {\n\n buffer.push({\n level,\n event,\n payload\n });\n\n if (config.autoLog.indexOf(level) > -1) {\n flush();\n }\n}\n\n\nexport function log(level, event, payload) {\n\n if (typeof window === 'undefined') {\n return;\n }\n\n if (config.prefix) {\n event = `${config.prefix}_${event}`;\n }\n\n payload = payload || {};\n\n if (typeof payload === 'string') {\n payload = {\n message: payload\n };\n } else if (payload instanceof Error) {\n payload = {\n error: payload.stack || payload.toString()\n }\n }\n\n try {\n JSON.stringify(payload);\n } catch (err) {\n return;\n }\n\n payload.timestamp = Date.now();\n\n for (let builder of payloadBuilders) {\n try {\n extend(payload, builder(payload), false);\n } catch (err) {\n console.error('Error in custom payload builder:', err.stack || err.toString());\n }\n }\n\n if (!config.silent) {\n print(level, event, payload);\n }\n\n if (buffer.length === config.sizeLimit) {\n enqueue('info', 'logger_max_buffer_length');\n }\n else if (buffer.length < config.sizeLimit) {\n enqueue(level, event, payload);\n }\n}\n\nexport function prefix(name) {\n\n return {\n debug(event, payload) {\n return log('debug', `${name}_${event}`, payload);\n },\n\n info(event, payload) {\n return log('info', `${name}_${event}`, payload);\n },\n\n warn(event, payload) {\n return log('warn', `${name}_${event}`, payload);\n },\n\n error(event, payload) {\n return log('error', `${name}_${event}`, payload);\n },\n\n track(payload) {\n return track(payload);\n },\n\n flush() {\n return flush();\n }\n };\n}\n\nexport function debug(event, payload) {\n return log('debug', event, payload);\n}\n\nexport function info(event, payload) {\n return log('info', event, payload);\n}\n\nexport function warn(event, payload) {\n return log('warn', event, payload);\n}\n\nexport function error(event, payload) {\n return log('error', event, payload);\n}\n\nexport function track(payload) {\n\n if (typeof window === 'undefined') {\n return;\n }\n\n if (payload) {\n\n try {\n JSON.stringify(payload);\n } catch (err) {\n return;\n }\n\n for (let builder of trackingBuilders) {\n try {\n extend(payload, builder(payload), false);\n } catch (err) {\n console.error('Error in custom tracking builder:', err.stack || err.toString());\n }\n }\n\n print('debug', 'tracking', payload);\n\n tracking.push(payload);\n }\n}\n","\nimport { config } from './config';\nimport { info } from './logger';\nimport { addPayloadBuilder } from './builders'\nimport { onWindowReady, safeInterval } from './util';\n\nlet enablePerformance = window &&\n window.performance &&\n performance.now &&\n performance.timing &&\n performance.timing.connectEnd &&\n performance.timing.navigationStart &&\n (Math.abs(performance.now() - Date.now()) > 1000) &&\n (performance.now() - (performance.timing.connectEnd - performance.timing.navigationStart)) > 0;\n\n\nexport function now() {\n if (enablePerformance) {\n return performance.now();\n } else {\n return Date.now();\n }\n}\n\nfunction timer(startTime) {\n startTime = startTime !== undefined ? startTime : now();\n\n return {\n startTime,\n\n elapsed() {\n return parseInt(now() - startTime, 10);\n },\n\n reset() {\n startTime = now();\n }\n };\n}\n\nexport function reqStartElapsed() {\n if (enablePerformance) {\n let timing = window.performance.timing;\n return parseInt(timing.connectEnd - timing.navigationStart, 10);\n }\n}\n\nexport let clientTimer = timer();\nexport let reqTimer = timer(reqStartElapsed());\n\nexport function initHeartBeat() {\n\n let heartBeatTimer = timer();\n let heartbeatCount = 0;\n\n safeInterval(() => {\n\n if (config.heartbeatMaxThreshold && (heartbeatCount > config.heartbeatMaxThreshold)) {\n return;\n }\n\n heartbeatCount += 1;\n\n let elapsed = heartBeatTimer.elapsed();\n let lag = elapsed - config.heartbeatInterval;\n\n let heartbeatPayload = {\n count: heartbeatCount,\n elapsed\n };\n\n if (config.heartbeatTooBusy) {\n heartbeatPayload.lag = lag;\n\n if (lag >= config.heartbeatTooBusyThreshold) {\n info('toobusy', heartbeatPayload, {\n noConsole: !config.heartbeatConsoleLog\n });\n }\n }\n\n info('heartbeat', heartbeatPayload, {\n noConsole: !config.heartbeatConsoleLog\n });\n\n }, config.heartbeatInterval);\n}\n\nexport function initPerformance() {\n\n if (!enablePerformance) {\n return info('no_performance_data');\n }\n\n addPayloadBuilder(() => {\n\n let payload = {};\n\n payload.client_elapsed = clientTimer.elapsed();\n\n if (enablePerformance) {\n payload.req_elapsed = reqTimer.elapsed();\n }\n\n return payload;\n });\n\n onWindowReady().then(() => {\n\n let keys = [\n 'connectEnd', 'connectStart', 'domComplete', 'domContentLoadedEventEnd',\n 'domContentLoadedEventStart', 'domInteractive', 'domLoading', 'domainLookupEnd',\n 'domainLookupStart', 'fetchStart', 'loadEventEnd', 'loadEventStart', 'navigationStart',\n 'redirectEnd', 'redirectStart', 'requestStart', 'responseEnd', 'responseStart',\n 'secureConnectionStart', 'unloadEventEnd', 'unloadEventStart'\n ];\n\n let timing = {};\n\n keys.forEach(key => {\n timing[key] = parseInt(window.performance.timing[key], 10) || 0;\n });\n\n let offset = timing.connectEnd - timing.navigationStart;\n\n if (timing.connectEnd) {\n Object.keys(timing).forEach(name => {\n let time = timing[name];\n if (time) {\n info(`timing_${name}`, {\n client_elapsed: parseInt(time - timing.connectEnd - (clientTimer.startTime - offset), 10),\n req_elapsed: parseInt(time - timing.connectEnd, 10)\n });\n }\n });\n }\n\n info('timing', timing);\n info('memory', window.performance.memory);\n info('navigation', window.performance.navigation);\n\n if (window.performance.getEntries) {\n window.performance.getEntries().forEach(resource => {\n if (['link', 'script', 'img', 'css'].indexOf(resource.initiatorType) > -1) {\n info(resource.initiatorType, resource);\n }\n });\n }\n });\n}\n","\nimport { config } from './config';\nimport { extend } from './util';\nimport { initPerformance, initHeartBeat } from './performance';\nimport { log, info, flush, immediateFlush } from './logger';\n\nlet initiated = false;\n\nexport function init(conf) {\n extend(config, conf || {});\n\n if (initiated) {\n return;\n }\n\n initiated = true;\n\n if (config.logPerformance) {\n initPerformance();\n }\n\n if (config.heartbeat) {\n initHeartBeat();\n }\n\n if (config.logUnload) {\n window.addEventListener('beforeunload', () => {\n info('window_beforeunload');\n immediateFlush({ fireAndForget: true });\n });\n\n window.addEventListener('unload', () => {\n info('window_unload');\n immediateFlush({ fireAndForget: true });\n });\n }\n\n if (config.flushInterval) {\n setInterval(flush, config.flushInterval);\n }\n\n if (window.beaverLogQueue) {\n window.beaverLogQueue.forEach(payload => {\n log(payload.level, payload.event, payload);\n });\n delete window.beaverLogQueue;\n }\n}\n","\nimport { reqStartElapsed, now } from './performance';\nimport { info, immediateFlush, track } from './logger';\nimport { addMetaBuilder, addPayloadBuilder } from './builders';\nimport { uniqueID } from './util';\nimport { config } from './config';\n\nlet windowID = uniqueID();\nlet pageID = uniqueID();\n\nlet currentState = config.initial_state_name;\nlet startTime;\n\nexport function startTransition() {\n startTime = now();\n}\n\nexport function endTransition(toState) {\n startTime = startTime || reqStartElapsed();\n\n let currentTime = now();\n let elapsedTime;\n\n if (startTime !== undefined) {\n elapsedTime = parseInt(currentTime - startTime, 0);\n }\n\n let transitionName = `transition_${currentState}_to_${toState}`;\n\n info(transitionName, {\n duration: elapsedTime\n });\n\n track({\n transition: transitionName,\n transition_time: elapsedTime\n });\n\n immediateFlush();\n\n startTime = currentTime;\n currentState = toState;\n pageID = uniqueID();\n}\n\nexport function transition(toState) {\n startTransition();\n endTransition(toState);\n}\n\naddPayloadBuilder(() => {\n return {\n windowID,\n pageID\n }\n});\n\naddMetaBuilder(() => {\n return {\n state: `ui_${currentState}`\n };\n});\n","\nexport * from './logger';\nexport * from './init';\nexport * from './transitions';\nexport * from './builders';\nexport * from './config';","\nimport * as INTERFACE from './interface';\nexport * from './interface';\nexport default INTERFACE;","/* @flow */\n\nexport function isRegex(item : mixed) : boolean {\n return Object.prototype.toString.call(item) === '[object RegExp]';\n}\n\n// eslint-disable-next-line no-unused-vars\nexport function noop(...args : Array) {\n // pass\n}\n","/* @flow */\n\nexport const PROTOCOL = {\n MOCK: ('mock:' : 'mock:'),\n FILE: ('file:' : 'file:'),\n ABOUT: ('about:' : 'about:')\n};\n\nexport const WILDCARD = '*';\n\nexport const WINDOW_TYPE = {\n IFRAME: ('iframe' : 'iframe'),\n POPUP: ('popup' : 'popup')\n};\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { isRegex, noop } from './util';\nimport type { CrossDomainWindowType, SameDomainWindowType, DomainMatcher } from './types';\nimport { PROTOCOL, WILDCARD } from './constants';\n\nlet IE_WIN_ACCESS_ERROR = 'Call was rejected by callee.\\r\\n';\n\nexport function isFileProtocol(win : SameDomainWindowType = window) : boolean {\n return win.location.protocol === PROTOCOL.FILE;\n}\n\nexport function isAboutProtocol(win : SameDomainWindowType = window) : boolean {\n return win.location.protocol === PROTOCOL.ABOUT;\n}\n\nexport function getParent(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n\n if (!win) {\n return;\n }\n\n try {\n if (win.parent && win.parent !== win) {\n return win.parent;\n }\n } catch (err) {\n // pass\n }\n}\n\nexport function getOpener(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n\n if (!win) {\n return;\n }\n\n // Make sure we're not actually an iframe which has had window.open() called on us\n if (getParent(win)) {\n return;\n }\n\n try {\n return win.opener;\n } catch (err) {\n // pass\n }\n}\n\nexport function canReadFromWindow(win : CrossDomainWindowType | SameDomainWindowType) : boolean {\n try {\n // $FlowFixMe\n noop(win && win.location && win.location.href);\n return true;\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\nexport function getActualDomain(win? : SameDomainWindowType = window) : string {\n\n let location = win.location;\n\n if (!location) {\n throw new Error(`Can not read window location`);\n }\n\n let protocol = location.protocol;\n\n if (!protocol) {\n throw new Error(`Can not read window protocol`);\n }\n\n if (protocol === PROTOCOL.FILE) {\n return `${ PROTOCOL.FILE }//`;\n }\n\n if (protocol === PROTOCOL.ABOUT) {\n\n let parent = getParent(win);\n if (parent && canReadFromWindow(parent)) {\n // $FlowFixMe\n return getActualDomain(parent);\n }\n\n return `${ PROTOCOL.ABOUT }//`;\n }\n\n let host = location.host;\n\n if (!host) {\n throw new Error(`Can not read window host`);\n }\n\n return `${ protocol }//${ host }`;\n}\n\nexport function getDomain(win? : SameDomainWindowType = window) : string {\n\n let domain = getActualDomain(win);\n\n if (domain && win.mockDomain && win.mockDomain.indexOf(PROTOCOL.MOCK) === 0) {\n return win.mockDomain;\n }\n\n return domain;\n}\n\nexport function isBlankDomain(win : CrossDomainWindowType) : boolean {\n try {\n // $FlowFixMe\n if (!win.location.href) {\n return true;\n }\n\n if (win.location.href === 'about:blank') {\n return true;\n }\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\nexport function isActuallySameDomain(win : CrossDomainWindowType) : boolean {\n\n try {\n if (win === window) {\n return true;\n }\n\n } catch (err) {\n // pass\n }\n\n try {\n let desc = Object.getOwnPropertyDescriptor(win, 'location');\n\n if (desc && desc.enumerable === false) {\n return false;\n }\n\n } catch (err) {\n // pass\n }\n\n try {\n // $FlowFixMe\n if (isAboutProtocol(win) && canReadFromWindow(win)) {\n return true;\n }\n } catch (err) {\n // pass\n }\n\n try {\n // $FlowFixMe\n if (getActualDomain(win) === getActualDomain(window)) {\n return true;\n }\n\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\nexport function isSameDomain(win : CrossDomainWindowType | SameDomainWindowType) : boolean {\n\n if (!isActuallySameDomain(win)) {\n return false;\n }\n\n try {\n\n if (win === window) {\n return true;\n }\n\n // $FlowFixMe\n if (isAboutProtocol(win) && canReadFromWindow(win)) {\n return true;\n }\n\n // $FlowFixMe\n if (getDomain(window) === getDomain(win)) {\n return true;\n }\n\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\n\nexport function assertSameDomain(win : CrossDomainWindowType | SameDomainWindowType) : SameDomainWindowType {\n if (!isSameDomain(win)) {\n throw new Error(`Expected window to be same domain`);\n }\n\n // $FlowFixMe\n return win;\n}\n\nexport function getParents(win : CrossDomainWindowType) : Array {\n\n let result = [];\n\n try {\n\n while (win.parent !== win) {\n result.push(win.parent);\n win = win.parent;\n }\n\n } catch (err) {\n // pass\n }\n\n return result;\n}\n\nexport function isAncestorParent(parent : CrossDomainWindowType, child : CrossDomainWindowType) : boolean {\n\n if (!parent || !child) {\n return false;\n }\n\n let childParent = getParent(child);\n\n if (childParent) {\n return childParent === parent;\n }\n\n if (getParents(child).indexOf(parent) !== -1) {\n return true;\n }\n\n return false;\n}\n\nexport function getFrames(win : CrossDomainWindowType) : Array {\n\n let result = [];\n\n let frames;\n\n try {\n frames = win.frames;\n } catch (err) {\n frames = win;\n }\n\n let len;\n\n try {\n len = frames.length;\n } catch (err) {\n // pass\n }\n\n if (len === 0) {\n return result;\n }\n\n if (len) {\n for (let i = 0; i < len; i++) {\n\n let frame;\n\n try {\n frame = frames[i];\n } catch (err) {\n continue;\n }\n\n result.push(frame);\n }\n\n return result;\n }\n\n for (let i = 0; i < 100; i++) {\n let frame;\n\n try {\n frame = frames[i];\n } catch (err) {\n return result;\n }\n\n if (!frame) {\n return result;\n }\n\n result.push(frame);\n }\n\n return result;\n}\n\n\nexport function getAllChildFrames(win : CrossDomainWindowType) : Array {\n\n let result = [];\n\n for (let frame of getFrames(win)) {\n result.push(frame);\n\n for (let childFrame of getAllChildFrames(frame)) {\n result.push(childFrame);\n }\n }\n\n return result;\n}\n\nexport function getTop(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n\n try {\n if (win.top) {\n return win.top;\n }\n } catch (err) {\n // pass\n }\n\n if (getParent(win) === win) {\n return win;\n }\n\n try {\n if (isAncestorParent(window, win) && window.top) {\n return window.top;\n }\n } catch (err) {\n // pass\n }\n\n try {\n if (isAncestorParent(win, window) && window.top) {\n return window.top;\n }\n } catch (err) {\n // pass\n }\n\n for (let frame of getAllChildFrames(win)) {\n try {\n if (frame.top) {\n return frame.top;\n }\n } catch (err) {\n // pass\n }\n\n if (getParent(frame) === frame) {\n return frame;\n }\n }\n}\n\nexport function getNextOpener(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n return getOpener(getTop(win) || win);\n}\n\nexport function getUltimateTop(win? : CrossDomainWindowType = window) : CrossDomainWindowType {\n let opener = getNextOpener(win);\n\n if (opener) {\n return getUltimateTop(opener);\n }\n\n return top;\n}\n\nexport function getAllFramesInWindow(win : CrossDomainWindowType) : Array {\n let top = getTop(win);\n\n if (!top) {\n throw new Error(`Can not determine top window`);\n }\n\n return [ ...getAllChildFrames(top), top ];\n}\n\nexport function getAllWindows(win? : CrossDomainWindowType = window) : $ReadOnlyArray {\n let frames = getAllFramesInWindow(win);\n let opener = getNextOpener(win);\n\n if (opener) {\n return [ ...getAllWindows(opener), ...frames ];\n } else {\n return frames;\n }\n}\n\nexport function isTop(win : CrossDomainWindowType) : boolean {\n return win === getTop(win);\n}\n\nexport function isFrameWindowClosed(frame : HTMLIFrameElement) : boolean {\n\n if (!frame.contentWindow) {\n return true;\n }\n\n if (!frame.parentNode) {\n return true;\n }\n\n let doc = frame.ownerDocument;\n\n if (doc && doc.documentElement && !doc.documentElement.contains(frame)) {\n return true;\n }\n\n return false;\n}\n\nfunction safeIndexOf(collection : Array, item : T) : number {\n for (let i = 0; i < collection.length; i++) {\n\n try {\n if (collection[i] === item) {\n return i;\n }\n } catch (err) {\n // pass\n }\n }\n\n return -1;\n}\n\nlet iframeWindows = [];\nlet iframeFrames = [];\n\nexport function isWindowClosed(win : CrossDomainWindowType, allowMock : boolean = true) : boolean {\n\n try {\n if (win === window) {\n return false;\n }\n } catch (err) {\n return true;\n }\n\n try {\n if (!win) {\n return true;\n }\n\n } catch (err) {\n return true;\n }\n\n try {\n if (win.closed) {\n return true;\n }\n\n } catch (err) {\n\n // I love you so much IE\n\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return false;\n }\n\n return true;\n }\n\n\n if (allowMock && isSameDomain(win)) {\n try {\n // $FlowFixMe\n if (win.mockclosed) {\n return true;\n }\n } catch (err) {\n // pass\n }\n }\n\n // Mobile safari\n\n try {\n if (!win.parent || !win.top) {\n return true;\n }\n } catch (err) {\n // pass\n }\n\n // Yes, this actually happens in IE. win === win errors out when the window\n // is from an iframe, and the iframe was removed from the page.\n\n try {\n noop(win === win); // eslint-disable-line no-self-compare\n } catch (err) {\n return true;\n }\n\n // IE orphaned frame\n\n let iframeIndex = safeIndexOf(iframeWindows, win);\n\n if (iframeIndex !== -1) {\n let frame = iframeFrames[iframeIndex];\n\n if (frame && isFrameWindowClosed(frame)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction cleanIframes() {\n for (let i = 0; i < iframeWindows.length; i++) {\n let closed = false;\n\n try {\n closed = iframeWindows[i].closed;\n } catch (err) {\n // pass\n }\n\n if (closed) {\n iframeFrames.splice(i, 1);\n iframeWindows.splice(i, 1);\n }\n }\n}\n\nexport function linkFrameWindow(frame : HTMLIFrameElement) {\n\n cleanIframes();\n\n if (frame && frame.contentWindow) {\n try {\n iframeWindows.push(frame.contentWindow);\n iframeFrames.push(frame);\n } catch (err) {\n // pass\n }\n }\n}\n\nexport function getUserAgent(win : ?SameDomainWindowType) : string {\n win = win || window;\n return win.navigator.mockUserAgent || win.navigator.userAgent;\n}\n\n\nexport function getFrameByName(win : CrossDomainWindowType, name : string) : ?CrossDomainWindowType {\n\n let winFrames = getFrames(win);\n\n for (let childFrame of winFrames) {\n try {\n // $FlowFixMe\n if (isSameDomain(childFrame) && childFrame.name === name && winFrames.indexOf(childFrame) !== -1) {\n return childFrame;\n }\n } catch (err) {\n // pass\n }\n }\n\n try {\n // $FlowFixMe\n if (winFrames.indexOf(win.frames[name]) !== -1) {\n // $FlowFixMe\n return win.frames[name];\n }\n } catch (err) {\n // pass\n }\n\n try {\n if (winFrames.indexOf(win[name]) !== -1) {\n return win[name];\n }\n } catch (err) {\n // pass\n }\n}\n\nexport function findChildFrameByName(win : CrossDomainWindowType, name : string) : ?CrossDomainWindowType {\n\n let frame = getFrameByName(win, name);\n\n if (frame) {\n return frame;\n }\n\n for (let childFrame of getFrames(win)) {\n let namedFrame = findChildFrameByName(childFrame, name);\n\n if (namedFrame) {\n return namedFrame;\n }\n }\n}\n\nexport function findFrameByName(win : CrossDomainWindowType, name : string) : ?CrossDomainWindowType {\n\n let frame;\n\n frame = getFrameByName(win, name);\n\n if (frame) {\n return frame;\n }\n\n let top = getTop(win) || win;\n\n return findChildFrameByName(top, name);\n}\n\nexport function isParent(win : CrossDomainWindowType, frame : CrossDomainWindowType) : boolean {\n\n let frameParent = getParent(frame);\n\n if (frameParent) {\n return frameParent === win;\n }\n\n for (let childFrame of getFrames(win)) {\n if (childFrame === frame) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function isOpener(parent : CrossDomainWindowType, child : CrossDomainWindowType) : boolean {\n\n return parent === getOpener(child);\n}\n\nexport function getAncestor(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n win = win || window;\n\n let opener = getOpener(win);\n\n if (opener) {\n return opener;\n }\n\n let parent = getParent(win);\n\n if (parent) {\n return parent;\n }\n}\n\nexport function getAncestors(win : CrossDomainWindowType) : Array {\n\n let results = [];\n\n let ancestor = win;\n\n while (ancestor) {\n ancestor = getAncestor(ancestor);\n if (ancestor) {\n results.push(ancestor);\n }\n }\n\n return results;\n}\n\n\nexport function isAncestor(parent : CrossDomainWindowType, child : CrossDomainWindowType) : boolean {\n\n let actualParent = getAncestor(child);\n\n if (actualParent) {\n if (actualParent === parent) {\n return true;\n }\n\n return false;\n }\n\n if (child === parent) {\n return false;\n }\n\n if (getTop(child) === child) {\n return false;\n }\n\n for (let frame of getFrames(parent)) {\n if (frame === child) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function isPopup(win? : CrossDomainWindowType = window) : boolean {\n return Boolean(getOpener(win));\n}\n\nexport function isIframe(win? : CrossDomainWindowType = window) : boolean {\n return Boolean(getParent(win));\n}\n\nexport function isFullpage(win? : CrossDomainWindowType = window) : boolean {\n return Boolean(!isIframe(win) && !isPopup(win));\n}\n\nfunction anyMatch(collection1, collection2) : boolean {\n\n for (let item1 of collection1) {\n for (let item2 of collection2) {\n if (item1 === item2) {\n return true;\n }\n }\n }\n\n return false;\n}\n\nexport function getDistanceFromTop(win : CrossDomainWindowType = window) : number {\n let distance = 0;\n let parent = win;\n\n while (parent) {\n parent = getParent(parent);\n if (parent) {\n distance += 1;\n }\n }\n\n return distance;\n}\n\nexport function getNthParent(win : CrossDomainWindowType, n : number = 1) : ?CrossDomainWindowType {\n let parent = win;\n\n for (let i = 0; i < n; i++) {\n if (!parent) {\n return;\n }\n\n parent = getParent(parent);\n }\n\n return parent;\n}\n\nexport function getNthParentFromTop(win : CrossDomainWindowType, n : number = 1) : ?CrossDomainWindowType {\n return getNthParent(win, getDistanceFromTop(win) - n);\n}\n\nexport function isSameTopWindow(win1 : CrossDomainWindowType, win2 : CrossDomainWindowType) : boolean {\n\n let top1 = getTop(win1) || win1;\n let top2 = getTop(win2) || win2;\n\n try {\n if (top1 && top2) {\n if (top1 === top2) {\n return true;\n }\n\n return false;\n }\n } catch (err) {\n // pass\n }\n\n let allFrames1 = getAllFramesInWindow(win1);\n let allFrames2 = getAllFramesInWindow(win2);\n\n if (anyMatch(allFrames1, allFrames2)) {\n return true;\n }\n\n let opener1 = getOpener(top1);\n let opener2 = getOpener(top2);\n\n if (opener1 && anyMatch(getAllFramesInWindow(opener1), allFrames2)) {\n return false;\n }\n\n if (opener2 && anyMatch(getAllFramesInWindow(opener2), allFrames1)) {\n return false;\n }\n\n return false;\n}\n\nexport function matchDomain(pattern : DomainMatcher, origin : DomainMatcher) : boolean {\n\n if (typeof pattern === 'string') {\n\n if (typeof origin === 'string') {\n return pattern === WILDCARD || origin === pattern;\n }\n\n if (isRegex(origin)) {\n return false;\n }\n\n if (Array.isArray(origin)) {\n return false;\n }\n }\n\n if (isRegex(pattern)) {\n\n if (isRegex(origin)) {\n return pattern.toString() === origin.toString();\n }\n\n if (Array.isArray(origin)) {\n return false;\n }\n\n // $FlowFixMe\n return Boolean(origin.match(pattern));\n }\n\n if (Array.isArray(pattern)) {\n\n if (Array.isArray(origin)) {\n return JSON.stringify(pattern) === JSON.stringify(origin);\n }\n\n if (isRegex(origin)) {\n return false;\n }\n\n return pattern.some(subpattern => matchDomain(subpattern, origin));\n }\n\n return false;\n}\n\nexport function stringifyDomainPattern(pattern : DomainMatcher) : string {\n if (Array.isArray(pattern)) {\n return `(${ pattern.join(' | ') })`;\n } else if (isRegex(pattern)) {\n return `RegExp(${ pattern.toString() }`;\n } else {\n return pattern.toString();\n }\n}\n\nexport function getDomainFromUrl(url : string) : string {\n\n let domain;\n\n if (url.match(/^(https?|mock|file):\\/\\//)) {\n domain = url;\n } else {\n return getDomain();\n }\n\n domain = domain.split('/').slice(0, 3).join('/');\n\n return domain;\n}\n\nexport function onCloseWindow(win : CrossDomainWindowType, callback : Function, delay : number = 1000, maxtime : number = Infinity) : { cancel : () => void } {\n\n let timeout;\n\n let check = () => {\n\n if (isWindowClosed(win)) {\n\n if (timeout) {\n clearTimeout(timeout);\n }\n\n return callback();\n }\n\n if (maxtime <= 0) {\n clearTimeout(timeout);\n } else {\n maxtime -= delay;\n timeout = setTimeout(check, delay);\n }\n };\n\n check();\n\n return {\n cancel() {\n if (timeout) {\n clearTimeout(timeout);\n }\n }\n };\n}\n\n// eslint-disable-next-line complexity\nexport function isWindow(obj : Object) : boolean {\n\n try {\n if (obj === window) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (Object.prototype.toString.call(obj) === '[object Window]') {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (window.Window && obj instanceof window.Window) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (obj && obj.self === obj) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (obj && obj.parent === obj) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (obj && obj.top === obj) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (noop(obj === obj) === '__unlikely_value__') { // eslint-disable-line no-self-compare\n return false;\n }\n\n } catch (err) {\n return true;\n }\n\n try {\n if (obj && obj.__cross_domain_utils_window_check__ === '__unlikely_value__') {\n return false;\n }\n\n } catch (err) {\n return true;\n }\n\n return false;\n}\n\nexport function isBrowser() : boolean {\n return (typeof window !== 'undefined' && typeof window.location !== 'undefined');\n}\n\nexport function isCurrentDomain(domain : string) : boolean {\n if (!isBrowser()) {\n return false;\n }\n\n return (getDomain() === domain);\n}\n\nexport function isMockDomain(domain : string) : boolean {\n return domain.indexOf(PROTOCOL.MOCK) === 0;\n}\n\nexport function normalizeMockUrl(url : string) : string {\n if (!isMockDomain(getDomainFromUrl(url))) {\n return url;\n }\n\n if (!__TEST__) {\n throw new Error(`Mock urls not supported out of test mode`);\n }\n\n return url.replace(/^mock:\\/\\/[^/]+/, getActualDomain(window));\n}\n\nexport function closeWindow(win : CrossDomainWindowType) {\n try {\n win.close();\n } catch (err) {\n // pass\n }\n}\n\nexport function getFrameForWindow(win : CrossDomainWindowType) : ?HTMLElement {\n if (isSameDomain(win)) {\n return assertSameDomain(win).frameElement;\n }\n\n for (const frame of document.querySelectorAll('iframe')) {\n if (frame && frame.contentWindow && frame.contentWindow === win) {\n return frame;\n }\n }\n}\n","/* @flow */\n\n// export something to force webpack to see this as an ES module\nexport const TYPES = true;\n\nexport type CrossDomainLocationType = {|\n\n|};\n\nexport type CrossDomainWindowType = {|\n location : string | CrossDomainLocationType,\n self : CrossDomainWindowType,\n closed : boolean,\n open : (string, string, string) => CrossDomainWindowType,\n close : () => void,\n focus : () => void,\n top : CrossDomainWindowType,\n frames : Array,\n opener ? : CrossDomainWindowType,\n parent : CrossDomainWindowType,\n length : number,\n postMessage : (string, string) => void\n|};\n\nexport type SameDomainWindowType = Object & {\n location : string | Object,\n self : CrossDomainWindowType,\n closed : boolean,\n open : (string, string, string) => CrossDomainWindowType,\n close : () => void,\n focus : () => void,\n XMLHttpRequest : typeof XMLHttpRequest,\n document : Document,\n navigator : {\n userAgent : string,\n mockUserAgent? : string\n }\n};\n\nexport type DomainMatcher = string | Array | $ReadOnlyArray | RegExp;\n","/* @flow */\n\nexport * from './utils';\nexport * from './types';\nexport * from './constants';\n","/* @flow */\n\nexport const ZOID = `zoid`;\n\nexport const __ZOID__ = `__${ ZOID }__`;\n\nexport const POST_MESSAGE = {\n INIT: `${ ZOID }_init`,\n PROPS: `${ ZOID }_props`,\n PROP_CALLBACK: `${ ZOID }_prop_callback`,\n CLOSE: `${ ZOID }_close`,\n CHECK_CLOSE: `${ ZOID }_check_close`,\n REDIRECT: `${ ZOID }_redirect`,\n RESIZE: `${ ZOID }_resize`,\n DELEGATE: `${ ZOID }_delegate`,\n ALLOW_DELEGATE: `${ ZOID }_allow_delegate`,\n ERROR: `${ ZOID }_error`,\n HIDE: `${ ZOID }_hide`,\n SHOW: `${ ZOID }_show`\n};\n\nexport const PROP_TYPES = {\n STRING: `string`,\n OBJECT: `object`,\n FUNCTION: `function`,\n BOOLEAN: `boolean`,\n NUMBER: `number`\n};\n\nexport const INITIAL_PROPS = {\n RAW: 'raw',\n UID: 'uid'\n};\n\nexport const WINDOW_REFERENCES = {\n OPENER: `opener`,\n TOP: `top`,\n PARENT: `parent`,\n GLOBAL: `global`\n};\n\nexport const PROP_TYPES_LIST : Array = Object.keys(PROP_TYPES).map(key => PROP_TYPES[key]);\n\nexport const CONTEXT_TYPES = {\n IFRAME: `iframe`,\n POPUP: `popup`\n};\n\nexport const CLASS_NAMES = {\n ZOID: `${ ZOID }`,\n OUTLET: `${ ZOID }-outlet`,\n COMPONENT_FRAME: `${ ZOID }-component-frame`,\n PRERENDER_FRAME: `${ ZOID }-prerender-frame`,\n VISIBLE: `${ ZOID }-visible`,\n INVISIBLE: `${ ZOID }-invisible`\n};\n\nexport const EVENTS = {\n CLOSE: `${ ZOID }-close`\n};\n\nexport const ATTRIBUTES = {\n IFRAME_PLACEHOLDER: `data-zoid-${ ZOID }-placeholder`\n};\n\nexport const ANIMATION_NAMES = {\n SHOW_CONTAINER: `${ ZOID }-show-container`,\n SHOW_COMPONENT: `${ ZOID }-show-component`,\n HIDE_CONTAINER: `${ ZOID }-hide-container`,\n HIDE_COMPONENT: `${ ZOID }-hide-component`\n};\n\nexport const EVENT_NAMES = {\n CLICK: 'click'\n};\n\nexport const CLOSE_REASONS = {\n PARENT_CALL: 'parent_call',\n CHILD_CALL: 'child_call',\n CLOSE_DETECTED: 'close_detected',\n USER_CLOSED: 'user_closed',\n PARENT_CLOSE_DETECTED: 'parent_close_detected'\n};\n\nexport const CONTEXT_TYPES_LIST : Array = Object.keys(CONTEXT_TYPES).map(key => CONTEXT_TYPES[key]);\n\nexport const DELEGATE = {\n CALL_ORIGINAL: 'call_original',\n CALL_DELEGATE: 'call_delegate'\n};\n\nexport const WILDCARD = '*';\n\nexport const DEFAULT_DIMENSIONS = {\n WIDTH: 300,\n HEIGHT: 150\n};\n","/* @flow */\n\nimport { CONSTANTS } from './conf';\n\nexport let global : Object = window[CONSTANTS.WINDOW_PROPS.POSTROBOT] = window[CONSTANTS.WINDOW_PROPS.POSTROBOT] || {};\n\n// Backwards compatibility\n\nglobal.registerSelf = () => {\n // pass\n};\n","/* @flow */\n\nexport let CONSTANTS = {\n\n POST_MESSAGE_TYPE: {\n REQUEST: 'postrobot_message_request',\n RESPONSE: 'postrobot_message_response',\n ACK: 'postrobot_message_ack'\n },\n\n POST_MESSAGE_ACK: {\n SUCCESS: 'success',\n ERROR: 'error'\n },\n\n POST_MESSAGE_NAMES: {\n METHOD: 'postrobot_method',\n HELLO: 'postrobot_ready',\n OPEN_TUNNEL: 'postrobot_open_tunnel'\n },\n\n WINDOW_TYPES: {\n FULLPAGE: 'fullpage',\n POPUP: 'popup',\n IFRAME: 'iframe'\n },\n\n WINDOW_PROPS: {\n POSTROBOT: '__postRobot__'\n },\n\n SERIALIZATION_TYPES: {\n METHOD: 'postrobot_method',\n ERROR: 'postrobot_error',\n PROMISE: 'postrobot_promise',\n ZALGO_PROMISE: 'postrobot_zalgo_promise',\n REGEX: 'regex'\n },\n\n SEND_STRATEGIES: {\n POST_MESSAGE: 'postrobot_post_message',\n BRIDGE: 'postrobot_bridge',\n GLOBAL: 'postrobot_global'\n },\n\n MOCK_PROTOCOL: 'mock:',\n FILE_PROTOCOL: 'file:',\n\n BRIDGE_NAME_PREFIX: '__postrobot_bridge__',\n POSTROBOT_PROXY: '__postrobot_proxy__',\n\n WILDCARD: '*'\n};\n\nexport const POST_MESSAGE_NAMES = {\n METHOD: 'postrobot_method',\n HELLO: 'postrobot_hello',\n OPEN_TUNNEL: 'postrobot_open_tunnel'\n};\n\nexport let POST_MESSAGE_NAMES_LIST : Array = Object.keys(POST_MESSAGE_NAMES)\n .map(key => POST_MESSAGE_NAMES[key]);\n","/* @flow */\n\nimport { CONSTANTS } from './constants';\n\nexport let CONFIG : Object = {\n\n ALLOW_POSTMESSAGE_POPUP: ('__ALLOW_POSTMESSAGE_POPUP__' in window)\n ? window.__ALLOW_POSTMESSAGE_POPUP__\n : __POST_ROBOT__.__ALLOW_POSTMESSAGE_POPUP__,\n\n BRIDGE_TIMEOUT: 5000,\n CHILD_WINDOW_TIMEOUT: 5000,\n\n ACK_TIMEOUT: (window.navigator.userAgent.match(/MSIE/i) !== -1 && !__TEST__) ? 10000 : 2000,\n RES_TIMEOUT: __TEST__ ? 2000 : -1,\n \n ALLOWED_POST_MESSAGE_METHODS: {\n [ CONSTANTS.SEND_STRATEGIES.POST_MESSAGE ]: true,\n [ CONSTANTS.SEND_STRATEGIES.BRIDGE ]: true,\n [ CONSTANTS.SEND_STRATEGIES.GLOBAL ]: true\n },\n\n ALLOW_SAME_ORIGIN: false\n};\n\nif (window.location.href.indexOf(CONSTANTS.FILE_PROTOCOL) === 0) {\n CONFIG.ALLOW_POSTMESSAGE_POPUP = true;\n}\n","/* @flow */\n\nexport * from './config';\nexport * from './constants';\n","/* @flow */\n/* eslint max-lines: off */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nexport { noop, once, uniqueID, isLocalStorageEnabled } from 'belter/src';\n\nconst moduleGlobal = {};\n\nexport function getGlobal() : Object {\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n return moduleGlobal;\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport function memoize(method : (...args : $ReadOnlyArray) => R, options : { time? : number } = {}) : ((...args : $ReadOnlyArray) => R) {\n\n const cache : { [key : string] : { time : number, value : R } } = {};\n\n // eslint-disable-next-line no-unused-vars, flowtype/no-weak-types\n return function memoizedFunction(...args : $ReadOnlyArray) : R {\n\n let key : string;\n\n try {\n key = JSON.stringify(Array.prototype.slice.call(arguments));\n } catch (err) {\n throw new Error(`Arguments not serializable -- can not be used to memoize`);\n }\n\n const time = options.time;\n\n if (cache[key] && time && (Date.now() - cache[key].time) < time) {\n delete cache[key];\n }\n\n const glob = getGlobal();\n\n if (glob.__CACHE_START_TIME__ && cache[key] && cache[key].time < glob.__CACHE_START_TIME__) {\n delete cache[key];\n }\n\n if (cache[key]) {\n return cache[key].value;\n }\n\n cache[key] = {\n time: Date.now(),\n value: method.apply(this, arguments)\n };\n\n return cache[key].value;\n };\n}\n\nexport function hashStr(str : string) : number {\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n hash += str[i].charCodeAt(0) * Math.pow((i % 10) + 1, 5);\n }\n return Math.floor(Math.pow(Math.sqrt(hash), 5));\n}\n\nexport function strHashStr(str : string) : string {\n let hash = '';\n\n for (let i = 0; i < str.length; i++) {\n let total = (str[i].charCodeAt(0) * i);\n\n if (str[i + 1]) {\n total += (str[i + 1].charCodeAt(0) * (i - 1));\n }\n\n hash += String.fromCharCode(97 + (Math.abs(total) % 26));\n }\n\n return hash;\n}\n\nexport function match(str : string, pattern : RegExp) : ?string {\n const regmatch = str.match(pattern);\n if (regmatch) {\n return regmatch[1];\n }\n}\n\nexport function safeJSON(item : mixed) : string {\n return JSON.stringify(item, (key, val) => {\n\n if (typeof val === 'function') {\n return `<${ typeof val }>`;\n }\n\n try {\n JSON.stringify(val);\n } catch (err) {\n return `<${ typeof val }>`;\n }\n\n return val;\n });\n}\n\ntype Listener = {|\n listen : (method : Function) => {\n cancel : () => void\n },\n once : (method : Function) => void,\n trigger : (...args : $ReadOnlyArray) => void\n|};\n\nexport function eventEmitter() : Listener {\n\n const listeners = [];\n\n return {\n listen(method : Function) : { cancel : () => void } {\n listeners.push(method);\n\n return {\n cancel() {\n listeners.splice(listeners.indexOf(method), 1);\n }\n };\n },\n\n once(method : Function) {\n const listener = this.listen(function onceListener() {\n method.apply(null, arguments);\n listener.cancel();\n });\n },\n\n trigger(...args : $ReadOnlyArray) {\n for (const listener of listeners) {\n listener(...args);\n }\n }\n };\n}\n\nexport function awaitKey(obj : Object, key : string) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n\n let value = obj[key];\n\n if (value) {\n return resolve(value);\n }\n\n delete obj[key];\n\n Object.defineProperty(obj, key, {\n\n configurable: true,\n\n set(item) {\n value = item;\n\n if (value) {\n resolve(value);\n }\n },\n\n get() : mixed {\n return value;\n }\n });\n });\n}\n\nexport function stringifyError(err : mixed, level : number = 1) : string {\n\n if (level >= 3) {\n return 'stringifyError stack overflow';\n }\n\n try {\n if (!err) {\n return ``;\n }\n\n if (typeof err === 'string') {\n return err;\n }\n\n if (err instanceof Error) {\n const stack = err && err.stack;\n const message = err && err.message;\n\n if (stack && message) {\n if (stack.indexOf(message) !== -1) {\n return stack;\n } else {\n return `${ message }\\n${ stack }`;\n }\n } else if (stack) {\n return stack;\n } else if (message) {\n return message;\n }\n }\n\n if (typeof err.toString === 'function') {\n return err.toString();\n }\n\n return Object.prototype.toString.call(err);\n\n } catch (newErr) { // eslint-disable-line unicorn/catch-error-name\n return `Error while stringifying error: ${ stringifyError(newErr, level + 1) }`;\n }\n}\n\nexport function stringifyErrorMessage(err : mixed) : string {\n\n const defaultMessage = ``;\n\n if (!err) {\n return defaultMessage;\n }\n\n if (err instanceof Error) {\n return err.message || defaultMessage;\n }\n\n if (typeof err.message === 'string') {\n return err.message || defaultMessage;\n }\n\n return defaultMessage;\n}\n\nexport function stringify(item : mixed) : string {\n if (typeof item === 'string') {\n return item;\n }\n\n if (item && typeof item.toString === 'function') {\n return item.toString();\n }\n\n return Object.prototype.toString.call(item);\n}\n\nexport function domainMatches(hostname : string, domain : string) : boolean {\n hostname = hostname.split('://')[1];\n const index = hostname.indexOf(domain);\n return (index !== -1 && hostname.slice(index) === domain);\n}\n\nexport function patchMethod(obj : Object, name : string, handler : Function) {\n const original = obj[name];\n\n obj[name] = function patchedMethod() : mixed {\n return handler({\n context: this,\n args: Array.prototype.slice.call(arguments),\n original,\n callOriginal: () => original.apply(this, arguments)\n });\n };\n}\n\nexport function isObject(obj : mixed) : boolean {\n return (typeof obj === 'object' && obj !== null);\n}\n\nexport function extend(obj : T, source : Object) : T {\n if (!source) {\n return obj;\n }\n\n if (Object.assign) { // eslint-disable-line compat/compat\n return Object.assign(obj, source); // eslint-disable-line compat/compat\n }\n\n for (const key in source) {\n if (source.hasOwnProperty(key)) {\n obj[key] = source[key];\n }\n }\n\n return obj;\n}\n\nexport function deepExtend (obj : T, source : Object) : T {\n if (!source) {\n return obj;\n }\n\n for (const key in source) {\n if (source.hasOwnProperty(key)) {\n if (isObject(obj[key]) && isObject(source[key])) {\n deepExtend(obj[key], source[key]);\n } else {\n obj[key] = source[key];\n }\n }\n }\n\n return obj;\n}\n\nexport function hasValue(obj : { [string] : T }, value : T) : boolean {\n for (const key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] === value) {\n return true;\n }\n }\n return false;\n}\n\nexport function contains(arr : $ReadOnlyArray, value : T) : boolean {\n return arr.indexOf(value) !== -1;\n}\n\n// eslint-disable-next-line flowtype/no-mutable-array\nexport function sortBy(arr : Array, order : $ReadOnlyArray) : Array {\n return arr.sort((a : T, b : T) => {\n return order.indexOf(a) - order.indexOf(b);\n });\n}\n\nexport function reverseMap(obj : { [string] : string }) : { [string] : string } {\n const result = {};\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n result[obj[key]] = key;\n }\n }\n return result;\n}\n\n// eslint-disable-next-line flowtype/no-mutable-array\nexport function arrayRemove(arr : Array, item : T) {\n arr.splice(arr.indexOf(item), 1);\n}\n\nexport function identity(item : T) : T {\n return item;\n}\n\nexport function values(obj : { [string] : T }) : $ReadOnlyArray {\n const result = [];\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n result.push(obj[key]);\n }\n }\n return result;\n}\n\nexport function perc(pixels : number, percentage : number) : number {\n return Math.round((pixels * percentage) / 100);\n}\n\nexport function min(...args : $ReadOnlyArray) : number {\n return Math.min(...args);\n}\n\nexport function max(...args : $ReadOnlyArray) : number {\n return Math.max(...args);\n}\n\nexport function regexMap(str : string, regex : RegExp, handler : () => T) : $ReadOnlyArray {\n const results = [];\n\n // $FlowFixMe\n str.replace(regex, function regexMapMatcher() {\n results.push(handler.apply(null, arguments));\n });\n\n return results;\n}\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","/* @flow */\n\nimport { isSameDomain, isSameTopWindow, isActuallySameDomain, getActualDomain, getDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONSTANTS } from '../../conf';\nimport { needsGlobalMessagingForBrowser } from '../../lib';\n\nexport let SEND_MESSAGE_STRATEGIES = {};\n\n\nSEND_MESSAGE_STRATEGIES[CONSTANTS.SEND_STRATEGIES.POST_MESSAGE] = (win : CrossDomainWindowType, serializedMessage : string, domain : (string | Array)) => {\n\n if (__POST_ROBOT__.__IE_POPUP_SUPPORT__) {\n try {\n require('../../compat').emulateIERestrictions(window, win);\n } catch (err) {\n return;\n }\n }\n\n let domains;\n\n if (Array.isArray(domain)) {\n domains = domain;\n } else if (typeof domain === 'string') {\n domains = [ domain ];\n } else {\n domains = [ CONSTANTS.WILDCARD ];\n }\n\n domains = domains.map(dom => {\n\n if (dom.indexOf(CONSTANTS.MOCK_PROTOCOL) === 0) {\n\n if (window.location.protocol === CONSTANTS.FILE_PROTOCOL) {\n return CONSTANTS.WILDCARD;\n }\n\n if (!isActuallySameDomain(win)) {\n throw new Error(`Attempting to send messsage to mock domain ${ dom }, but window is actually cross-domain`);\n }\n\n // $FlowFixMe\n return getActualDomain(win);\n }\n\n if (dom.indexOf(CONSTANTS.FILE_PROTOCOL) === 0) {\n return CONSTANTS.WILDCARD;\n }\n\n return dom;\n });\n\n domains.forEach(dom => {\n return win.postMessage(serializedMessage, dom);\n });\n};\n\nif (__POST_ROBOT__.__IE_POPUP_SUPPORT__) {\n\n let { sendBridgeMessage, needsBridgeForBrowser, isBridge } = require('../../bridge');\n\n SEND_MESSAGE_STRATEGIES[CONSTANTS.SEND_STRATEGIES.BRIDGE] = (win : CrossDomainWindowType, serializedMessage : string, domain : string) => {\n\n if (!needsBridgeForBrowser() && !isBridge()) {\n return;\n }\n\n if (isSameDomain(win)) {\n throw new Error(`Post message through bridge disabled between same domain windows`);\n }\n\n if (isSameTopWindow(window, win) !== false) {\n throw new Error(`Can only use bridge to communicate between two different windows, not between frames`);\n }\n\n return sendBridgeMessage(win, serializedMessage, domain);\n };\n}\n\nif (__POST_ROBOT__.__IE_POPUP_SUPPORT__ || __POST_ROBOT__.__GLOBAL_MESSAGE_SUPPORT__) {\n \n SEND_MESSAGE_STRATEGIES[CONSTANTS.SEND_STRATEGIES.GLOBAL] = (win : CrossDomainWindowType, serializedMessage : string) => {\n\n if (!needsGlobalMessagingForBrowser()) {\n return;\n }\n\n if (!isSameDomain(win)) {\n throw new Error(`Post message through global disabled between different domain windows`);\n }\n\n if (isSameTopWindow(window, win) !== false) {\n throw new Error(`Can only use global to communicate between two different windows, not between frames`);\n }\n\n // $FlowFixMe\n let foreignGlobal = win[CONSTANTS.WINDOW_PROPS.POSTROBOT];\n\n if (!foreignGlobal) {\n throw new Error(`Can not find postRobot global on foreign window`);\n }\n\n return foreignGlobal.receiveMessage({\n source: window,\n origin: getDomain(),\n data: serializedMessage\n });\n };\n}\n","/* @flow */\n\nimport { getDomain, isWindowClosed, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { CONSTANTS, CONFIG, POST_MESSAGE_NAMES_LIST } from '../../conf';\nimport { uniqueID, serializeMethods, getWindowType, jsonStringify, stringifyError } from '../../lib';\n\nimport { SEND_MESSAGE_STRATEGIES } from './strategies';\n\n\nfunction buildMessage(win : CrossDomainWindowType, message : Object, options = {}) : Object {\n\n let id = uniqueID();\n let type = getWindowType();\n let sourceDomain = getDomain(window);\n\n return {\n ...message,\n ...options,\n sourceDomain,\n id: message.id || id,\n windowType: type\n };\n}\n\n\nexport function sendMessage(win : CrossDomainWindowType, message : Object, domain : string | Array) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n message = buildMessage(win, message, {\n data: serializeMethods(win, domain, message.data),\n domain\n });\n\n let level;\n\n if (__DEBUG__) {\n if (POST_MESSAGE_NAMES_LIST.indexOf(message.name) !== -1 || message.type === CONSTANTS.POST_MESSAGE_TYPE.ACK) {\n level = 'debug';\n } else if (message.ack === 'error') {\n level = 'error';\n } else {\n level = 'info';\n }\n\n // eslint-disable-next-line no-console\n console[level]('postrobot_send', message.type.replace(/^postrobot_message_/, ''), '::', message.name, '::', domain || CONSTANTS.WILDCARD, '\\n\\n', message);\n }\n\n if (win === window && !CONFIG.ALLOW_SAME_ORIGIN) {\n throw new Error('Attemping to send message to self');\n }\n\n if (isWindowClosed(win)) {\n throw new Error('Window is closed');\n }\n\n let messages = [];\n\n let serializedMessage = jsonStringify({\n [ CONSTANTS.WINDOW_PROPS.POSTROBOT ]: message\n }, null, 2);\n\n return ZalgoPromise.map(Object.keys(SEND_MESSAGE_STRATEGIES), strategyName => {\n\n return ZalgoPromise.try(() => {\n\n if (!CONFIG.ALLOWED_POST_MESSAGE_METHODS[strategyName]) {\n throw new Error(`Strategy disallowed: ${ strategyName }`);\n }\n\n return SEND_MESSAGE_STRATEGIES[strategyName](win, serializedMessage, domain);\n\n }).then(() => {\n messages.push(`${ strategyName }: success`);\n return true;\n }, err => {\n messages.push(`${ strategyName }: ${ stringifyError(err) }\\n`);\n return false;\n });\n\n }).then(results => {\n\n let success = results.some(Boolean);\n let status = `${ message.type } ${ message.name } ${ success ? 'success' : 'error' }:\\n - ${ messages.join('\\n - ') }\\n`;\n\n if (!success) {\n throw new Error(status);\n }\n });\n });\n}\n","/* @flow */\n\nimport { type ZalgoPromise } from 'zalgo-promise/src';\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { matchDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { global } from '../global';\nimport { isRegex } from '../lib';\nimport { CONSTANTS } from '../conf';\n\nexport function resetListeners() {\n global.responseListeners = {};\n global.requestListeners = {};\n}\n\nglobal.responseListeners = global.responseListeners || {};\nglobal.requestListeners = global.requestListeners || {};\nglobal.WINDOW_WILDCARD = global.WINDOW_WILDCARD || new (function WindowWildcard() { /* pass */ })();\n\nglobal.erroredResponseListeners = global.erroredResponseListeners || {};\n\nconst __DOMAIN_REGEX__ = '__domain_regex__';\n\nexport type RequestListenerType = {\n handler : ({ source : CrossDomainWindowType, origin : string, data : Object }) => (mixed | ZalgoPromise),\n handleError : (err : mixed) => void,\n window : ?CrossDomainWindowType,\n name : string,\n domain : string | RegExp | Array\n};\n\nexport type ResponseListenerType = {\n name : string,\n window : CrossDomainWindowType,\n domain : (string | Array | RegExp),\n respond : (err : ?mixed, result : ?Object) => void,\n ack? : ?boolean\n};\n\nexport function addResponseListener(hash : string, listener : ResponseListenerType) {\n global.responseListeners[hash] = listener;\n}\n\nexport function getResponseListener(hash : string) : ResponseListenerType {\n return global.responseListeners[hash];\n}\n\nexport function deleteResponseListener(hash : string) {\n delete global.responseListeners[hash];\n}\n\nexport function markResponseListenerErrored(hash : string) {\n global.erroredResponseListeners[hash] = true;\n}\n\nexport function isResponseListenerErrored(hash : string) : boolean {\n return Boolean(global.erroredResponseListeners[hash]);\n}\n\nexport function getRequestListener({ name, win, domain } : { name : string, win : ?CrossDomainWindowType, domain : ?(string | RegExp) }) : ?RequestListenerType {\n\n if (win === CONSTANTS.WILDCARD) {\n win = null;\n }\n\n if (domain === CONSTANTS.WILDCARD) {\n domain = null;\n }\n\n if (!name) {\n throw new Error(`Name required to get request listener`);\n }\n\n let nameListeners = global.requestListeners[name];\n\n if (!nameListeners) {\n return;\n }\n\n for (let winQualifier of [ win, global.WINDOW_WILDCARD ]) {\n\n let winListeners = winQualifier && nameListeners.get(winQualifier);\n\n if (!winListeners) {\n continue;\n }\n\n if (domain && typeof domain === 'string') {\n if (winListeners[domain]) {\n return winListeners[domain];\n }\n\n if (winListeners[__DOMAIN_REGEX__]) {\n for (let { regex, listener } of winListeners[__DOMAIN_REGEX__]) {\n if (matchDomain(regex, domain)) {\n return listener;\n }\n }\n }\n }\n\n if (winListeners[CONSTANTS.WILDCARD]) {\n return winListeners[CONSTANTS.WILDCARD];\n }\n }\n}\n\n// eslint-disable-next-line complexity\nexport function addRequestListener({ name, win, domain } : { name : string, win : ?CrossDomainWindowType, domain : ?(string | RegExp | Array) }, listener : RequestListenerType) : { cancel : () => void } {\n\n if (!name || typeof name !== 'string') {\n throw new Error(`Name required to add request listener`);\n }\n\n if (Array.isArray(win)) {\n let listenersCollection = [];\n\n for (let item of win) {\n listenersCollection.push(addRequestListener({ name, domain, win: item }, listener));\n }\n\n return {\n cancel() {\n for (let cancelListener of listenersCollection) {\n cancelListener.cancel();\n }\n }\n };\n }\n\n if (Array.isArray(domain)) {\n let listenersCollection = [];\n\n for (let item of domain) {\n listenersCollection.push(addRequestListener({ name, win, domain: item }, listener));\n }\n\n return {\n cancel() {\n for (let cancelListener of listenersCollection) {\n cancelListener.cancel();\n }\n }\n };\n }\n\n let existingListener = getRequestListener({ name, win, domain });\n\n if (!win || win === CONSTANTS.WILDCARD) {\n win = global.WINDOW_WILDCARD;\n }\n\n domain = domain || CONSTANTS.WILDCARD;\n\n if (existingListener) {\n if (win && domain) {\n throw new Error(`Request listener already exists for ${ name } on domain ${ domain.toString() } for ${ win === global.WINDOW_WILDCARD ? 'wildcard' : 'specified' } window`);\n } else if (win) {\n throw new Error(`Request listener already exists for ${ name } for ${ win === global.WINDOW_WILDCARD ? 'wildcard' : 'specified' } window`);\n } else if (domain) {\n throw new Error(`Request listener already exists for ${ name } on domain ${ domain.toString() }`);\n } else {\n throw new Error(`Request listener already exists for ${ name }`);\n }\n }\n\n let requestListeners = global.requestListeners;\n\n let nameListeners = requestListeners[name];\n\n if (!nameListeners) {\n nameListeners = new WeakMap();\n requestListeners[name] = nameListeners;\n }\n\n let winListeners = nameListeners.get(win);\n\n if (!winListeners) {\n winListeners = {};\n nameListeners.set(win, winListeners);\n }\n\n let strDomain = domain.toString();\n\n let regexListeners = winListeners[__DOMAIN_REGEX__];\n let regexListener;\n\n if (isRegex(domain)) {\n\n if (!regexListeners) {\n regexListeners = [];\n winListeners[__DOMAIN_REGEX__] = regexListeners;\n }\n\n regexListener = { regex: domain, listener };\n\n regexListeners.push(regexListener);\n\n } else {\n winListeners[strDomain] = listener;\n }\n\n return {\n cancel() {\n if (!winListeners) {\n return;\n }\n\n delete winListeners[strDomain];\n\n if (win && Object.keys(winListeners).length === 0) {\n nameListeners.delete(win);\n }\n\n if (regexListener) {\n regexListeners.splice(regexListeners.indexOf(regexListener, 1));\n }\n }\n\n };\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { isWindowClosed, matchDomain, stringifyDomainPattern, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONSTANTS } from '../../conf';\nimport { stringifyError, noop } from '../../lib';\nimport { sendMessage } from '../send';\nimport { getRequestListener, getResponseListener, deleteResponseListener, isResponseListenerErrored } from '../listeners';\n\nexport let RECEIVE_MESSAGE_TYPES = {\n\n [ CONSTANTS.POST_MESSAGE_TYPE.ACK ](source : CrossDomainWindowType, origin : string, message : Object) {\n\n if (isResponseListenerErrored(message.hash)) {\n return;\n }\n\n let options = getResponseListener(message.hash);\n\n if (!options) {\n throw new Error(`No handler found for post message ack for message: ${ message.name } from ${ origin } in ${ window.location.protocol }//${ window.location.host }${ window.location.pathname }`);\n }\n\n if (!matchDomain(options.domain, origin)) {\n throw new Error(`Ack origin ${ origin } does not match domain ${ options.domain.toString() }`);\n }\n\n options.ack = true;\n },\n\n [ CONSTANTS.POST_MESSAGE_TYPE.REQUEST ](source : CrossDomainWindowType, origin : string, message : Object) : ZalgoPromise {\n\n let options = getRequestListener({ name: message.name, win: source, domain: origin });\n\n function respond(data) : ZalgoPromise {\n\n if (message.fireAndForget || isWindowClosed(source)) {\n return ZalgoPromise.resolve();\n }\n\n return sendMessage(source, {\n target: message.originalSource,\n hash: message.hash,\n name: message.name,\n ...data\n }, origin);\n }\n\n return ZalgoPromise.all([\n\n respond({\n type: CONSTANTS.POST_MESSAGE_TYPE.ACK\n }),\n\n ZalgoPromise.try(() => {\n\n if (!options) {\n throw new Error(`No handler found for post message: ${ message.name } from ${ origin } in ${ window.location.protocol }//${ window.location.host }${ window.location.pathname }`);\n }\n\n if (!matchDomain(options.domain, origin)) {\n throw new Error(`Request origin ${ origin } does not match domain ${ options.domain.toString() }`);\n }\n\n let data = message.data;\n\n return options.handler({ source, origin, data });\n\n }).then(data => {\n\n return respond({\n type: CONSTANTS.POST_MESSAGE_TYPE.RESPONSE,\n ack: CONSTANTS.POST_MESSAGE_ACK.SUCCESS,\n data\n });\n\n }, err => {\n\n let error = stringifyError(err).replace(/^Error: /, '');\n // $FlowFixMe\n let code = err.code;\n\n return respond({\n type: CONSTANTS.POST_MESSAGE_TYPE.RESPONSE,\n ack: CONSTANTS.POST_MESSAGE_ACK.ERROR,\n error,\n code\n });\n })\n\n ]).then(noop).catch(err => {\n\n if (options && options.handleError) {\n return options.handleError(err);\n } else {\n throw err;\n }\n });\n },\n\n [ CONSTANTS.POST_MESSAGE_TYPE.RESPONSE ](source : CrossDomainWindowType, origin : string, message : Object) : void | ZalgoPromise {\n\n if (isResponseListenerErrored(message.hash)) {\n return;\n }\n\n let options = getResponseListener(message.hash);\n\n if (!options) {\n throw new Error(`No handler found for post message response for message: ${ message.name } from ${ origin } in ${ window.location.protocol }//${ window.location.host }${ window.location.pathname }`);\n }\n\n if (!matchDomain(options.domain, origin)) {\n throw new Error(`Response origin ${ origin } does not match domain ${ stringifyDomainPattern(options.domain) }`);\n }\n\n deleteResponseListener(message.hash);\n\n if (message.ack === CONSTANTS.POST_MESSAGE_ACK.ERROR) {\n let err = new Error(message.error);\n if (message.code) {\n // $FlowFixMe\n err.code = message.code;\n }\n return options.respond(err, null);\n } else if (message.ack === CONSTANTS.POST_MESSAGE_ACK.SUCCESS) {\n let data = message.data || message.response;\n\n return options.respond(null, { source, origin, data });\n }\n }\n};\n","/* @flow */\n\nimport { isWindowClosed, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONSTANTS, POST_MESSAGE_NAMES_LIST } from '../../conf';\nimport { deserializeMethods, jsonParse, addEventListener, noop } from '../../lib';\nimport { global } from '../../global';\n\nimport { RECEIVE_MESSAGE_TYPES } from './types';\n\nglobal.receivedMessages = global.receivedMessages || [];\n\ntype MessageEvent = {\n source : CrossDomainWindowType,\n origin : string,\n data : string\n};\n\nfunction parseMessage(message : string) : ?Object {\n\n let parsedMessage;\n\n try {\n parsedMessage = jsonParse(message);\n } catch (err) {\n return;\n }\n\n if (!parsedMessage) {\n return;\n }\n\n if (typeof parsedMessage !== 'object' || parsedMessage === null) {\n return;\n }\n\n parsedMessage = parsedMessage[CONSTANTS.WINDOW_PROPS.POSTROBOT];\n\n if (!parsedMessage || typeof parsedMessage !== 'object' || parsedMessage === null) {\n return;\n }\n\n if (!parsedMessage.type || typeof parsedMessage.type !== 'string') {\n return;\n }\n\n if (!RECEIVE_MESSAGE_TYPES[parsedMessage.type]) {\n return;\n }\n\n return parsedMessage;\n}\n\n\nexport function receiveMessage(event : MessageEvent) {\n\n if (!window || window.closed) {\n return;\n }\n\n try {\n if (!event.source) {\n return;\n }\n } catch (err) {\n return;\n }\n\n let { source, origin, data } = event;\n\n let message = parseMessage(data);\n\n if (!message) {\n return;\n }\n\n if (!message.sourceDomain || typeof message.sourceDomain !== 'string') {\n throw new Error(`Expected message to have sourceDomain`);\n }\n\n if (message.sourceDomain.indexOf(CONSTANTS.MOCK_PROTOCOL) === 0 || message.sourceDomain.indexOf(CONSTANTS.FILE_PROTOCOL) === 0) {\n origin = message.sourceDomain;\n }\n\n if (global.receivedMessages.indexOf(message.id) === -1) {\n global.receivedMessages.push(message.id);\n } else {\n return;\n }\n\n if (__DEBUG__) {\n let level;\n\n if (POST_MESSAGE_NAMES_LIST.indexOf(message.name) !== -1 || message.type === CONSTANTS.POST_MESSAGE_TYPE.ACK) {\n level = 'debug';\n } else if (message.ack === 'error') {\n level = 'error';\n } else {\n level = 'info';\n }\n \n // eslint-disable-next-line no-console\n console[level]('postrobot_receive', message.type.replace(/^postrobot_message_/, ''), '::', message.name, '::', origin, '\\n\\n', message);\n }\n\n if (isWindowClosed(source) && !message.fireAndForget) {\n return;\n }\n\n if (message.data) {\n message.data = deserializeMethods(source, origin, message.data);\n }\n\n RECEIVE_MESSAGE_TYPES[message.type](source, origin, message);\n}\n\nexport function messageListener(event : { source : CrossDomainWindowType, origin : string, data : string, sourceElement : CrossDomainWindowType, originalEvent? : { origin : string } }) {\n\n try {\n noop(event.source);\n } catch (err) {\n return;\n }\n\n // $FlowFixMe\n let messageEvent : MessageEvent = {\n source: event.source || event.sourceElement,\n origin: event.origin || (event.originalEvent && event.originalEvent.origin),\n data: event.data\n };\n\n if (__POST_ROBOT__.__IE_POPUP_SUPPORT__) {\n try {\n require('../../compat').emulateIERestrictions(messageEvent.source, window);\n } catch (err) {\n return;\n }\n }\n\n receiveMessage(messageEvent);\n}\n\nexport function listenForMessages() {\n addEventListener(window, 'message', messageListener);\n}\n\nglobal.receiveMessage = receiveMessage;\n","/* @flow */\n\nexport * from './receive';\nexport * from './send';\nexport * from './listeners';\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getAncestor, isAncestor, isWindowClosed, getDomain, matchDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONFIG, CONSTANTS } from '../conf';\nimport { sendMessage, addResponseListener, deleteResponseListener, markResponseListenerErrored, type ResponseListenerType } from '../drivers';\nimport { uniqueID, onChildWindowReady, sayHello, isRegex } from '../lib';\nimport { global } from '../global';\n\nglobal.requestPromises = global.requestPromises || new WeakMap();\n\ntype WindowResolverType = CrossDomainWindowType | string | HTMLIFrameElement;\n\ntype RequestOptionsType = {\n window? : ?WindowResolverType,\n domain? : ?(string | Array | RegExp),\n name? : ?string,\n data? : ?Object,\n fireAndForget? : ?boolean,\n timeout? : ?number\n};\n\ntype ResponseMessageEvent = {\n source : CrossDomainWindowType,\n origin : string,\n data : Object\n};\n\nexport function request(options : RequestOptionsType) : ZalgoPromise {\n\n let prom = ZalgoPromise.try(() => {\n\n if (!options.name) {\n throw new Error('Expected options.name');\n }\n\n let name = options.name;\n let targetWindow : ?CrossDomainWindowType;\n let domain : string | Array | RegExp;\n\n if (typeof options.window === 'string') {\n let el = document.getElementById(options.window);\n\n if (!el) {\n throw new Error(`Expected options.window ${ Object.prototype.toString.call(options.window) } to be a valid element id`);\n }\n\n if (el.tagName.toLowerCase() !== 'iframe') {\n throw new Error(`Expected options.window ${ Object.prototype.toString.call(options.window) } to be an iframe`);\n }\n\n // $FlowFixMe\n if (!el.contentWindow) {\n throw new Error('Iframe must have contentWindow. Make sure it has a src attribute and is in the DOM.');\n }\n\n // $FlowFixMe\n targetWindow = el.contentWindow;\n\n } else if (options.window instanceof HTMLIFrameElement) {\n\n if (options.window.tagName.toLowerCase() !== 'iframe') {\n throw new Error(`Expected options.window ${ Object.prototype.toString.call(options.window) } to be an iframe`);\n }\n\n if (options.window && !options.window.contentWindow) {\n throw new Error('Iframe must have contentWindow. Make sure it has a src attribute and is in the DOM.');\n }\n\n if (options.window && options.window.contentWindow) {\n // $FlowFixMe\n targetWindow = options.window.contentWindow;\n }\n } else {\n targetWindow = options.window;\n }\n\n if (!targetWindow) {\n throw new Error('Expected options.window to be a window object, iframe, or iframe element id.');\n }\n\n const win = targetWindow;\n\n domain = options.domain || CONSTANTS.WILDCARD;\n\n let hash = `${ options.name }_${ uniqueID() }`;\n\n if (isWindowClosed(win)) {\n throw new Error('Target window is closed');\n }\n\n let hasResult = false;\n\n let requestPromises = global.requestPromises.get(win);\n\n if (!requestPromises) {\n requestPromises = [];\n global.requestPromises.set(win, requestPromises);\n }\n\n let requestPromise = ZalgoPromise.try(() => {\n\n if (isAncestor(window, win)) {\n return onChildWindowReady(win, options.timeout || CONFIG.CHILD_WINDOW_TIMEOUT);\n }\n\n }).then(({ origin } = {}) => {\n\n if (isRegex(domain) && !origin) {\n return sayHello(win);\n }\n\n }).then(({ origin } = {}) => {\n\n if (isRegex(domain)) {\n if (!matchDomain(domain, origin)) {\n throw new Error(`Remote window domain ${ origin } does not match regex: ${ domain.toString() }`);\n }\n\n domain = origin;\n }\n\n if (typeof domain !== 'string' && !Array.isArray(domain)) {\n throw new TypeError(`Expected domain to be a string or array`);\n }\n\n const actualDomain = domain;\n\n return new ZalgoPromise((resolve, reject) => {\n\n let responseListener : ResponseListenerType;\n\n if (!options.fireAndForget) {\n responseListener = {\n name,\n window: win,\n domain: actualDomain,\n respond(err, result) {\n if (!err) {\n hasResult = true;\n requestPromises.splice(requestPromises.indexOf(requestPromise, 1));\n }\n\n if (err) {\n reject(err);\n } else {\n resolve(result);\n }\n }\n };\n\n addResponseListener(hash, responseListener);\n }\n\n sendMessage(win, {\n type: CONSTANTS.POST_MESSAGE_TYPE.REQUEST,\n hash,\n name,\n data: options.data,\n fireAndForget: options.fireAndForget\n }, actualDomain).catch(reject);\n\n if (options.fireAndForget) {\n return resolve();\n }\n\n let ackTimeout = CONFIG.ACK_TIMEOUT;\n let resTimeout = options.timeout || CONFIG.RES_TIMEOUT;\n\n let cycleTime = 100;\n\n let cycle = () => {\n\n if (hasResult) {\n return;\n }\n\n if (isWindowClosed(win)) {\n\n if (!responseListener.ack) {\n return reject(new Error(`Window closed for ${ name } before ack`));\n }\n\n return reject(new Error(`Window closed for ${ name } before response`));\n }\n\n ackTimeout = Math.max(ackTimeout - cycleTime, 0);\n if (resTimeout !== -1) {\n resTimeout = Math.max(resTimeout - cycleTime, 0);\n }\n\n let hasAck = responseListener.ack;\n\n if (hasAck) {\n\n if (resTimeout === -1) {\n return;\n }\n\n cycleTime = Math.min(resTimeout, 2000);\n\n } else if (ackTimeout === 0) {\n return reject(new Error(`No ack for postMessage ${ name } in ${ getDomain() } in ${ CONFIG.ACK_TIMEOUT }ms`));\n\n } else if (resTimeout === 0) {\n return reject(new Error(`No response for postMessage ${ name } in ${ getDomain() } in ${ options.timeout || CONFIG.RES_TIMEOUT }ms`));\n }\n\n setTimeout(cycle, cycleTime);\n };\n\n setTimeout(cycle, cycleTime);\n });\n });\n\n requestPromise.catch(() => {\n markResponseListenerErrored(hash);\n deleteResponseListener(hash);\n });\n\n requestPromises.push(requestPromise);\n\n return requestPromise;\n });\n\n return prom;\n}\n\nexport function send(window : WindowResolverType, name : string, data : ?Object, options : ?RequestOptionsType) : ZalgoPromise {\n\n options = options || {};\n options.window = window;\n options.name = name;\n options.data = data;\n\n return request(options);\n}\n\nexport function sendToParent(name : string, data : ?Object, options : ?RequestOptionsType) : ZalgoPromise {\n\n let win = getAncestor();\n\n if (!win) {\n return new ZalgoPromise((resolve, reject) => reject(new Error('Window does not have a parent')));\n }\n\n return send(win, name, data, options);\n}\n\nexport function client(options : RequestOptionsType = {}) : { send : (string, ?Object) => ZalgoPromise } {\n\n if (!options.window) {\n throw new Error(`Expected options.window`);\n }\n\n const win = options.window;\n\n return {\n send(name : string, data : ?Object) : ZalgoPromise {\n return send(win, name, data, options);\n }\n };\n}\n\nglobal.send = send;\n","/* @flow */\n\nimport { isWindowClosed, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { once as onceFunction, safeInterval } from '../lib';\nimport { addRequestListener, type RequestListenerType } from '../drivers';\nimport { CONSTANTS } from '../conf';\nimport { global } from '../global';\n\ntype ErrorHandlerType = (err : mixed) => void;\ntype HandlerType = ({ source : CrossDomainWindowType, origin : string, data : Object }) => (void | mixed | ZalgoPromise);\n\ntype ServerOptionsType = {\n handler? : ?HandlerType,\n errorHandler? : ?ErrorHandlerType,\n window? : CrossDomainWindowType,\n name? : ?string,\n domain? : ?(string | RegExp | Array),\n once? : ?boolean,\n errorOnClose? : ?boolean\n};\n\nexport function listen(options : ServerOptionsType) : { cancel : () => void } {\n\n if (!options.name) {\n throw new Error('Expected options.name');\n }\n\n if (!options.handler) {\n throw new Error('Expected options.handler');\n }\n\n const name = options.name;\n const win = options.window;\n const domain = options.domain;\n\n let listenerOptions : RequestListenerType = {\n handler: options.handler,\n handleError: options.errorHandler || (err => {\n throw err;\n }),\n window: win,\n domain: domain || CONSTANTS.WILDCARD,\n name\n };\n\n let requestListener = addRequestListener({ name, win, domain }, listenerOptions);\n\n if (options.once) {\n let handler = listenerOptions.handler;\n listenerOptions.handler = onceFunction(function listenOnce() : mixed | ZalgoPromise {\n requestListener.cancel();\n return handler.apply(this, arguments);\n });\n }\n\n if (listenerOptions.window && options.errorOnClose) {\n let interval = safeInterval(() => {\n if (win && typeof win === 'object' && isWindowClosed(win)) {\n interval.cancel();\n listenerOptions.handleError(new Error('Post message target window is closed'));\n }\n }, 50);\n }\n\n return {\n cancel() {\n requestListener.cancel();\n }\n };\n}\n\nexport function on(name : string, options : ServerOptionsType | HandlerType, handler : ?HandlerType) : { cancel : () => void } {\n\n if (typeof options === 'function') {\n handler = options;\n options = {};\n }\n\n options = options || {};\n\n options.name = name;\n options.handler = handler || options.handler;\n\n return listen(options);\n}\n\nexport function once(name : string, options : ?(ServerOptionsType | HandlerType) = {}, handler : ?HandlerType) : ZalgoPromise<{ source : mixed, origin : string, data : Object }> {\n\n if (typeof options === 'function') {\n handler = options;\n options = {};\n }\n\n options = options || {};\n handler = handler || options.handler;\n let errorHandler = options.errorHandler;\n\n let promise = new ZalgoPromise((resolve, reject) => {\n\n options = options || {};\n\n options.name = name;\n options.once = true;\n\n options.handler = (event) => {\n resolve(event);\n if (handler) {\n return handler(event);\n }\n };\n\n options.errorHandler = (err) => {\n reject(err);\n if (errorHandler) {\n return errorHandler(err);\n }\n };\n });\n\n let onceListener = listen(options);\n promise.cancel = onceListener.cancel;\n\n return promise;\n}\n\nexport function listener(options : ServerOptionsType = {}) : { on : (name : string, handler : HandlerType) => { cancel : () => void } } {\n\n return {\n on(name : string, handler : HandlerType) : { cancel : () => void } {\n return on(name, options, handler);\n }\n };\n}\n\nglobal.on = on;\n","/* @flow */\n\nimport { CONSTANTS } from '../conf';\nimport { messageListener } from '../drivers';\n\nexport { CONFIG, CONSTANTS } from '../conf';\n\nexport function disable() {\n delete window[CONSTANTS.WINDOW_PROPS.POSTROBOT];\n window.removeEventListener('message', messageListener);\n}\n","/* @flow */\n\nimport { getAncestor } from 'cross-domain-utils/src';\n\nexport * from './client';\nexport * from './server';\nexport * from './config';\n\nexport let parent = getAncestor();\n","/* @flow */\n\nimport { type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { global } from './global';\n\nexport function cleanUpWindow(win : CrossDomainWindowType) {\n\n // global.tunnelWindows\n // global.bridges\n // global.popupWindowsByName\n // global.responseListeners\n // global.requestListeners\n\n let requestPromises = global.requestPromises.get(win);\n\n if (requestPromises) {\n for (let promise of requestPromises) {\n promise.reject(new Error(`No response from window - cleaned up`));\n }\n }\n\n if (global.popupWindowsByWin) {\n global.popupWindowsByWin.delete(win);\n }\n\n if (global.remoteWindows) {\n global.remoteWindows.delete(win);\n }\n\n global.requestPromises.delete(win);\n global.methods.delete(win);\n global.readyPromises.delete(win);\n}\n","/* @flow */\n\nimport { initOnReady, listenForMethods } from './lib';\nimport { listenForMessages } from './drivers';\nimport { global } from './global';\nimport { on, send } from './public';\n\nexport * from './public';\nexport { cleanUpWindow } from './clean';\nexport { ZalgoPromise as Promise } from 'zalgo-promise/src';\nexport let bridge = __POST_ROBOT__.__IE_POPUP_SUPPORT__ ? require('./bridge/interface') : null;\n\nexport function init() {\n if (!global.initialized) {\n listenForMessages();\n\n if (__POST_ROBOT__.__IE_POPUP_SUPPORT__) {\n require('./bridge').openTunnelToOpener();\n }\n\n initOnReady();\n listenForMethods({ on, send });\n }\n\n global.initialized = true;\n}\n\ninit();\n","/* @flow */\n\n// eslint-disable-next-line import/no-namespace\nimport * as INTERFACE from './interface';\n\nexport * from './interface';\nexport default INTERFACE;\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { isPopup, isIframe, getUserAgent } from 'cross-domain-utils/src';\n\nimport { CONFIG, CONSTANTS } from '../conf';\n\n\nexport function stringifyError(err : mixed, level : number = 1) : string {\n\n if (level >= 3) {\n return 'stringifyError stack overflow';\n }\n\n try {\n if (!err) {\n return ``;\n }\n\n if (typeof err === 'string') {\n return err;\n }\n\n if (err instanceof Error) {\n let stack = err && err.stack;\n let message = err && err.message;\n\n if (stack && message) {\n if (stack.indexOf(message) !== -1) {\n return stack;\n } else {\n return `${ message }\\n${ stack }`;\n }\n } else if (stack) {\n return stack;\n } else if (message) {\n return message;\n }\n }\n\n if (typeof err.toString === 'function') {\n return err.toString();\n }\n\n return Object.prototype.toString.call(err);\n\n } catch (newErr) { // eslint-disable-line unicorn/catch-error-name\n return `Error while stringifying error: ${ stringifyError(newErr, level + 1) }`;\n }\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport let once = (method : Function) : ((...args : Array) => T | void) => {\n if (!method) {\n return method;\n }\n let called = false;\n return function onceWrapper() : T | void {\n if (!called) {\n called = true;\n return method.apply(this, arguments);\n }\n };\n};\n\n// eslint-disable-next-line no-unused-vars\nexport function noop(...args : Array) {\n // pass\n}\n\nexport function addEventListener(obj : Object, event : string, handler : Function) : { cancel : () => void } {\n if (obj.addEventListener) {\n obj.addEventListener(event, handler);\n } else {\n obj.attachEvent(`on${ event }`, handler);\n }\n\n return {\n cancel() {\n if (obj.removeEventListener) {\n obj.removeEventListener(event, handler);\n } else {\n obj.detachEvent(`on${ event }`, handler);\n }\n }\n };\n}\n\nexport function uniqueID() : string {\n\n let chars = '0123456789abcdef';\n\n return 'xxxxxxxxxx'.replace(/./g, () => {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n });\n}\n\ntype MixedArrayType = Array;\n\nexport function eachArray(item : MixedArrayType, callback : (item : mixed, key : number) => mixed) {\n for (let i = 0; i < item.length; i++) {\n callback(item[i], i);\n }\n}\n\nexport function eachObject(item : Object, callback : (item : mixed, key : string) => mixed) {\n for (let key in item) {\n if (item.hasOwnProperty(key)) {\n callback(item[key], key);\n }\n }\n}\n\nexport function each(item : T, callback : (item : mixed, key : number | string) => mixed) {\n if (Array.isArray(item)) {\n eachArray(item, callback);\n } else if (typeof item === 'object' && item !== null) {\n eachObject(item, callback);\n }\n}\n\nexport function replaceObject(item : T, callback : (item : mixed, key : number | string) => mixed, depth : number = 1) : T {\n\n if (depth >= 100) {\n throw new Error(`Self-referential object passed, or object contained too many layers`);\n }\n\n let newobj;\n\n if (typeof item === 'object' && item !== null && !Array.isArray(item)) {\n newobj = {};\n } else if (Array.isArray(item)) {\n newobj = [];\n } else {\n throw new TypeError(`Invalid type: ${ typeof item }`);\n }\n\n each(item, (childItem, key) => {\n\n let result = callback(childItem, key);\n\n if (typeof result !== 'undefined') {\n // $FlowFixMe\n newobj[key] = result;\n } else if (typeof childItem === 'object' && childItem !== null) {\n // $FlowFixMe\n newobj[key] = replaceObject(childItem, callback, depth + 1);\n } else {\n // $FlowFixMe\n newobj[key] = childItem;\n }\n });\n\n // $FlowFixMe\n return newobj;\n}\n\nexport function safeInterval(method : Function, time : number) : { cancel : () => void } {\n let timeout;\n\n function runInterval() {\n timeout = setTimeout(runInterval, time);\n method.call();\n }\n\n timeout = setTimeout(runInterval, time);\n\n return {\n cancel() {\n clearTimeout(timeout);\n }\n };\n}\n\nexport function isRegex(item : mixed) : boolean {\n return Object.prototype.toString.call(item) === '[object RegExp]';\n}\n\n\ntype FunctionProxy = (method : T) => T;\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport let weakMapMemoize : FunctionProxy<*> = (method : (arg : any) => R) : ((...args : Array) => R) => {\n\n let weakmap = new WeakMap();\n\n // eslint-disable-next-line flowtype/no-weak-types\n return function weakmapMemoized(arg : any) : R {\n let result = weakmap.get(arg);\n\n if (typeof result !== 'undefined') {\n return result;\n }\n\n result = method.call(this, arg);\n\n if (typeof result !== 'undefined') {\n weakmap.set(arg, result);\n }\n\n return result;\n };\n};\n\nexport function getWindowType() : string {\n if (isPopup()) {\n return CONSTANTS.WINDOW_TYPES.POPUP;\n }\n if (isIframe()) {\n return CONSTANTS.WINDOW_TYPES.IFRAME;\n }\n return CONSTANTS.WINDOW_TYPES.FULLPAGE;\n}\n\nexport function jsonStringify(obj : T, replacer : ?Function, indent : number | void) : string {\n\n let objectToJSON;\n let arrayToJSON;\n\n try {\n if (JSON.stringify({}) !== '{}') {\n // $FlowFixMe\n objectToJSON = Object.prototype.toJSON;\n // $FlowFixMe\n delete Object.prototype.toJSON;\n }\n\n if (JSON.stringify({}) !== '{}') {\n throw new Error(`Can not correctly serialize JSON objects`);\n }\n\n if (JSON.stringify([]) !== '[]') {\n // $FlowFixMe\n arrayToJSON = Array.prototype.toJSON;\n // $FlowFixMe\n delete Array.prototype.toJSON;\n }\n\n if (JSON.stringify([]) !== '[]') {\n throw new Error(`Can not correctly serialize JSON objects`);\n }\n\n } catch (err) {\n throw new Error(`Can not repair JSON.stringify: ${ err.message }`);\n }\n\n let result = JSON.stringify.call(this, obj, replacer, indent);\n\n try {\n if (objectToJSON) {\n // $FlowFixMe\n Object.prototype.toJSON = objectToJSON; // eslint-disable-line no-extend-native\n }\n\n if (arrayToJSON) {\n // $FlowFixMe\n Array.prototype.toJSON = arrayToJSON; // eslint-disable-line no-extend-native\n }\n\n } catch (err) {\n throw new Error(`Can not repair JSON.stringify: ${ err.message }`);\n }\n\n\n return result;\n}\n\nexport function jsonParse(item : string) : mixed {\n return JSON.parse(item);\n}\n \nexport function needsGlobalMessagingForBrowser() : boolean {\n\n if (getUserAgent(window).match(/MSIE|trident|edge\\/12|edge\\/13/i)) {\n return true;\n }\n \n if (!CONFIG.ALLOW_POSTMESSAGE_POPUP) {\n return true;\n }\n \n return false;\n}\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { matchDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { CONSTANTS } from '../conf';\nimport { global } from '../global';\n\nimport { once, uniqueID, replaceObject, stringifyError, isRegex } from './util';\n\nglobal.methods = global.methods || new WeakMap();\n\nexport let listenForMethods = once(() => {\n global.on(CONSTANTS.POST_MESSAGE_NAMES.METHOD, { origin: CONSTANTS.WILDCARD }, ({ source, origin, data } : { source : CrossDomainWindowType, origin : string, data : Object }) => {\n\n let methods = global.methods.get(source);\n\n if (!methods) {\n throw new Error(`Could not find any methods this window has privileges to call`);\n }\n\n let meth = methods[data.id];\n\n if (!meth) {\n throw new Error(`Could not find method with id: ${ data.id }`);\n }\n\n if (!matchDomain(meth.domain, origin)) {\n throw new Error(`Method domain ${ meth.domain } does not match origin ${ origin }`);\n }\n\n return ZalgoPromise.try(() => {\n return meth.method.apply({ source, origin, data }, data.args);\n\n }).then(result => {\n\n return {\n result,\n id: data.id,\n name: data.name\n };\n });\n });\n});\n\nfunction isSerialized(item : mixed, type : string) : boolean {\n return typeof item === 'object' && item !== null && item.__type__ === type;\n}\n\ntype SerializedMethod = {\n __type__ : string,\n __id__ : string,\n __name__ : string\n};\n\nexport function serializeMethod(destination : CrossDomainWindowType, domain : string | Array, method : Function, name : string) : SerializedMethod {\n\n let id = uniqueID();\n\n let methods = global.methods.get(destination);\n\n if (!methods) {\n methods = {};\n global.methods.set(destination, methods);\n }\n\n methods[id] = { domain, method };\n\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.METHOD,\n __id__: id,\n __name__: name\n };\n}\n\ntype SerializedError = {\n __type__ : string,\n __message__ : string\n};\n\nfunction serializeError(err : mixed) : SerializedError {\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.ERROR,\n __message__: stringifyError(err),\n // $FlowFixMe\n __code__: err.code\n };\n}\n\ntype SerializePromise = {\n __type__ : string,\n __then__ : SerializedMethod\n};\n\nfunction serializePromise(destination : CrossDomainWindowType, domain : string | Array, promise : ZalgoPromise, name : string) : SerializePromise {\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.PROMISE,\n __then__: serializeMethod(destination, domain, (resolve, reject) => promise.then(resolve, reject), `${ name }.then`)\n };\n}\n\nfunction serializeZalgoPromise(destination : CrossDomainWindowType, domain : string | Array, promise : ZalgoPromise, name : string) : SerializePromise {\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.ZALGO_PROMISE,\n __then__: serializeMethod(destination, domain, (resolve, reject) => promise.then(resolve, reject), `${ name }.then`)\n };\n}\n\ntype SerializedRegex = {\n __type__ : string,\n __source__ : string\n};\n\nfunction serializeRegex(regex : RegExp) : SerializedRegex {\n return {\n __type__: CONSTANTS.SERIALIZATION_TYPES.REGEX,\n __source__: regex.source\n };\n}\n\nexport function serializeMethods(destination : CrossDomainWindowType, domain : string | Array, obj : Object) : Object {\n\n return replaceObject({ obj }, (item, key) => {\n if (typeof item === 'function') {\n return serializeMethod(destination, domain, item, key.toString());\n }\n\n if (item instanceof Error) {\n return serializeError(item);\n }\n\n if (window.Promise && item instanceof window.Promise) {\n return serializePromise(destination, domain, item, key.toString());\n }\n\n if (ZalgoPromise.isPromise(item)) {\n // $FlowFixMe\n return serializeZalgoPromise(destination, domain, item, key.toString());\n }\n\n if (isRegex(item)) {\n // $FlowFixMe\n return serializeRegex(item);\n }\n }).obj;\n}\n\nexport function deserializeMethod(source : CrossDomainWindowType, origin : string, obj : Object) : Function {\n\n function wrapper() : ZalgoPromise {\n let args = Array.prototype.slice.call(arguments);\n return global.send(source, CONSTANTS.POST_MESSAGE_NAMES.METHOD, {\n id: obj.__id__,\n name: obj.__name__,\n args\n\n }, { domain: origin, timeout: -1 }).then(({ data }) => {\n return data.result;\n }, err => {\n throw err;\n });\n }\n\n wrapper.__name__ = obj.__name__;\n wrapper.__xdomain__ = true;\n\n wrapper.source = source;\n wrapper.origin = origin;\n\n return wrapper;\n}\n\nexport function deserializeError(source : CrossDomainWindowType, origin : string, obj : Object) : Error {\n let err = new Error(obj.__message__);\n if (obj.__code__) {\n // $FlowFixMe\n err.code = obj.__code__;\n }\n return err;\n}\n\nexport function deserializeZalgoPromise(source : CrossDomainWindowType, origin : string, prom : Object) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => deserializeMethod(source, origin, prom.__then__)(resolve, reject));\n}\n\nexport function deserializePromise(source : CrossDomainWindowType, origin : string, prom : Object) : ZalgoPromise {\n if (!window.Promise) {\n return deserializeZalgoPromise(source, origin, prom);\n }\n\n return new window.Promise((resolve, reject) => deserializeMethod(source, origin, prom.__then__)(resolve, reject));\n}\n\nexport function deserializeRegex(source : CrossDomainWindowType, origin : string, item : Object) : RegExp {\n // eslint-disable-next-line security/detect-non-literal-regexp\n return new RegExp(item.__source__);\n}\n\nexport function deserializeMethods(source : CrossDomainWindowType, origin : string, obj : Object) : Object {\n\n return replaceObject({ obj }, (item) => {\n if (typeof item !== 'object' || item === null) {\n return;\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.METHOD)) {\n return deserializeMethod(source, origin, item);\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.ERROR)) {\n return deserializeError(source, origin, item);\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.PROMISE)) {\n return deserializePromise(source, origin, item);\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.ZALGO_PROMISE)) {\n return deserializeZalgoPromise(source, origin, item);\n }\n\n if (isSerialized(item, CONSTANTS.SERIALIZATION_TYPES.REGEX)) {\n return deserializeRegex(source, origin, item);\n }\n\n }).obj;\n}\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { getAncestor, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { CONSTANTS } from '../conf';\nimport { global } from '../global';\n\nimport { noop } from './util';\n\nglobal.readyPromises = global.readyPromises || new WeakMap();\n\nexport function onHello(handler : ({ source? : CrossDomainWindowType, origin? : string }) => void) {\n global.on(CONSTANTS.POST_MESSAGE_NAMES.HELLO, { domain: CONSTANTS.WILDCARD }, ({ source, origin }) => {\n return handler({ source, origin });\n });\n}\n\nexport function sayHello(win : CrossDomainWindowType) : ZalgoPromise<{ origin : string }> {\n return global.send(win, CONSTANTS.POST_MESSAGE_NAMES.HELLO, {}, { domain: CONSTANTS.WILDCARD, timeout: -1 })\n .then(({ origin }) => {\n return { origin };\n });\n}\n\nexport function initOnReady() {\n\n onHello(({ source, origin }) => {\n let promise = global.readyPromises.get(source) || new ZalgoPromise();\n promise.resolve({ origin });\n global.readyPromises.set(source, promise);\n });\n\n let parent = getAncestor();\n if (parent) {\n sayHello(parent).catch(noop);\n }\n}\n\nexport function onChildWindowReady(win : mixed, timeout : number = 5000, name : string = 'Window') : ZalgoPromise<{ origin : string }> {\n\n let promise = global.readyPromises.get(win);\n\n if (promise) {\n return promise;\n }\n\n promise = new ZalgoPromise();\n global.readyPromises.set(win, promise);\n\n if (timeout !== -1) {\n setTimeout(() => promise.reject(new Error(`${ name } did not load after ${ timeout }ms`)), timeout);\n }\n\n return promise;\n}\n","/* @flow */\n\nexport * from './util';\nexport * from './serialize';\nexport * from './ready';\n","/* @flow */\n\nexport function getUserAgent() : string {\n return window.navigator.mockUserAgent || window.navigator.userAgent;\n}\n\nexport function isDevice(userAgent? : string = getUserAgent()) : boolean {\n if (userAgent.match(/Android|webOS|iPhone|iPad|iPod|bada|Symbian|Palm|CriOS|BlackBerry|IEMobile|WindowsMobile|Opera Mini/i)) {\n return true;\n }\n\n return false;\n}\n\nexport function isWebView() : boolean {\n let userAgent = getUserAgent();\n return (/(iPhone|iPod|iPad|Macintosh).*AppleWebKit(?!.*Safari)/i).test(userAgent) ||\n (/\\bwv\\b/).test(userAgent) ||\n (/Android.*Version\\/(\\d)\\.(\\d)/i).test(userAgent);\n}\n\nexport function isStandAlone() : boolean {\n return (window.navigator.standalone === true || window.matchMedia('(display-mode: standalone)').matches);\n}\n\nexport function isFacebookWebView(ua? : string = getUserAgent()) : boolean {\n return (ua.indexOf('FBAN') !== -1) || (ua.indexOf('FBAV') !== -1);\n}\n\nexport function isFirefoxIOS(ua? : string = getUserAgent()) : boolean {\n return (/FxiOS/i).test(ua);\n}\n\nexport function isEdgeIOS(ua? : string = getUserAgent()) : boolean {\n return (/EdgiOS/i).test(ua);\n}\n\nexport function isOperaMini(ua? : string = getUserAgent()) : boolean {\n return ua.indexOf('Opera Mini') > -1;\n}\n\nexport function isAndroid(ua? : string = getUserAgent()) : boolean {\n return (/Android/).test(ua);\n}\n\nexport function isIos(ua? : string = getUserAgent()) : boolean {\n return (/iPhone|iPod|iPad/).test(ua);\n}\n\nexport function isGoogleSearchApp(ua? : string = getUserAgent()) : boolean {\n return (/\\bGSA\\b/).test(ua);\n}\n\nexport function isQQBrowser(ua? : string = getUserAgent()) : boolean {\n return (/QQBrowser/).test(ua);\n}\n\nexport function isIosWebview(ua? : string = getUserAgent()) : boolean {\n if (isIos(ua)) {\n if (isGoogleSearchApp(ua)) {\n return true;\n }\n return (/.+AppleWebKit(?!.*Safari)/).test(ua);\n }\n return false;\n}\n\nexport function isAndroidWebview(ua? : string = getUserAgent()) : boolean {\n if (isAndroid(ua)) {\n return (/Version\\/[\\d.]+/).test(ua) && !isOperaMini(ua);\n }\n return false;\n}\n\nexport function isIE() : boolean {\n\n if (window.document.documentMode) {\n return true;\n }\n\n return Boolean(\n window.navigator &&\n window.navigator.userAgent &&\n (/Edge|MSIE|rv:11/i).test(window.navigator.userAgent)\n );\n}\n\nexport function isIECompHeader() : boolean {\n let mHttp = window.document.querySelector('meta[http-equiv=\"X-UA-Compatible\"]');\n let mContent = window.document.querySelector('meta[content=\"IE=edge\"]');\n if (mHttp && mContent) {\n return true;\n }\n return false;\n}\n\nexport function isElectron() : boolean {\n if (typeof process !== 'undefined' && process.versions && process.versions.electron) {\n return true;\n }\n return false;\n}\n\nexport function isIEIntranet() : boolean {\n\n // This status check only works for older versions of IE with document.documentMode set\n\n if (window.document.documentMode) {\n try {\n let status = window.status;\n\n window.status = 'testIntranetMode';\n\n if (window.status === 'testIntranetMode') {\n window.status = status;\n\n return true;\n }\n\n return false;\n\n } catch (err) {\n\n return false;\n }\n }\n\n return false;\n}\n\nexport function isMacOsCna() : boolean {\n let userAgent = getUserAgent();\n return (/Macintosh.*AppleWebKit(?!.*Safari)/i).test(userAgent);\n}\n\nexport function supportsPopups(ua? : string = getUserAgent()) : boolean {\n return !(isIosWebview(ua) || isAndroidWebview(ua) || isOperaMini(ua) ||\n isFirefoxIOS(ua) || isEdgeIOS(ua) || isFacebookWebView(ua) || isQQBrowser(ua) || isElectron() || isMacOsCna() || isStandAlone());\n}\n\nexport function isChrome(ua? : string = getUserAgent()) : boolean {\n return (/Chrome|Chromium|CriOS/).test(ua);\n}\n\nexport function isSafari(ua? : string = getUserAgent()) : boolean {\n return (/Safari/).test(ua) && !isChrome(ua);\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\n\nimport type { CancelableType } from './types';\n\nexport function getFunctionName (fn : T) : string {\n return fn.name || fn.__name__ || fn.displayName || 'anonymous';\n}\n\nexport function setFunctionName (fn : T, name : string) : T {\n try {\n delete fn.name;\n fn.name = name;\n } catch (err) {\n // pass\n }\n\n fn.__name__ = fn.displayName = name;\n return fn;\n}\n\nexport function base64encode(str : string) : string {\n if (typeof btoa === 'function') {\n return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, (m, p1) => {\n return String.fromCharCode(parseInt(p1, 16));\n }));\n }\n\n if (typeof Buffer !== 'undefined') {\n return Buffer.from(str, 'utf8').toString('base64');\n }\n\n throw new Error(`Can not find window.btoa or Buffer`);\n}\n\nexport function base64decode(str : string) : string {\n if (typeof atob === 'function') {\n return decodeURIComponent(Array.prototype.map.call(atob(str), c => {\n // eslint-disable-next-line prefer-template\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\n }).join(''));\n }\n\n if (typeof Buffer !== 'undefined') {\n return Buffer.from(str, 'base64').toString('utf8');\n }\n\n throw new Error(`Can not find window.atob or Buffer`);\n}\n\nexport function uniqueID() : string {\n\n let chars = '0123456789abcdef';\n\n let randomID = 'xxxxxxxxxx'.replace(/./g, () => {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n });\n\n let timeID = base64encode(\n new Date().toISOString().slice(11, 19).replace('T', '.')\n ).replace(/[^a-zA-Z0-9]/g, '').toLowerCase();\n\n return `${ randomID }_${ timeID }`;\n}\n\nexport function getGlobal() : Object {\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n if (typeof __GLOBAL__ !== 'undefined') {\n return __GLOBAL__;\n }\n throw new Error(`No global found`);\n}\n\nlet objectIDs;\n\nexport function getObjectID(obj : Object) : string {\n\n objectIDs = objectIDs || new WeakMap();\n\n if (obj === null || obj === undefined || (typeof obj !== 'object' && typeof obj !== 'function')) {\n throw new Error(`Invalid object`);\n }\n\n let uid = objectIDs.get(obj);\n\n if (!uid) {\n uid = `${ typeof obj }:${ uniqueID() }`;\n objectIDs.set(obj, uid);\n }\n\n return uid;\n}\n\nfunction serializeArgs(args : Array) : string {\n try {\n return JSON.stringify(Array.prototype.slice.call(args), (subkey, val) => {\n if (typeof val === 'function') {\n return `memoize[${ getObjectID(val) }]`;\n }\n return val;\n });\n } catch (err) {\n throw new Error(`Arguments not serializable -- can not be used to memoize`);\n }\n}\nexport function memoize) => R, X : { (...args : Array) : R, displayName : string, reset : () => void }>(method : F, options : { time? : number, thisNamespace? : boolean } = {}) : X {\n let cacheMap = new WeakMap();\n\n // $FlowFixMe\n let memoizedFunction : X = function memoizedFunction(...args : Array) : R {\n let cache = cacheMap.getOrSet(options.thisNamespace ? this : method, () => ({}));\n\n let key : string = serializeArgs(args);\n\n let cacheTime = options.time;\n if (cache[key] && cacheTime && (Date.now() - cache[key].time) < cacheTime) {\n delete cache[key];\n }\n\n if (cache[key]) {\n return cache[key].value;\n }\n\n let time = Date.now();\n let value = method.apply(this, arguments);\n\n cache[key] = { time, value };\n\n return cache[key].value;\n };\n\n memoizedFunction.reset = () => {\n cacheMap.delete(options.thisNamespace ? this : method);\n };\n\n return setFunctionName(memoizedFunction, `${ getFunctionName(method) }::memoized`);\n}\n\nexport function promiseIdentity(item : ZalgoPromise | T) : ZalgoPromise {\n // $FlowFixMe\n return ZalgoPromise.resolve(item);\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport function memoizePromise(method : (...args : Array) => ZalgoPromise) : ((...args : Array) => ZalgoPromise) {\n let cache = {};\n\n // eslint-disable-next-line flowtype/no-weak-types\n function memoizedPromiseFunction(...args : Array) : ZalgoPromise {\n let key : string = serializeArgs(args);\n\n if (cache.hasOwnProperty(key)) {\n return cache[key];\n }\n\n cache[key] = ZalgoPromise.try(() => method.apply(this, arguments))\n .finally(() => {\n delete cache[key];\n });\n\n return cache[key];\n }\n\n memoizedPromiseFunction.reset = () => {\n cache = {};\n };\n\n return setFunctionName(memoizedPromiseFunction, `${ getFunctionName(method) }::promiseMemoized`);\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport function promisify(method : (...args : Array) => R, options : { name? : string } = {}) : ((...args : Array) => ZalgoPromise) {\n function promisifiedFunction() : ZalgoPromise {\n return ZalgoPromise.try(method, this, arguments);\n }\n\n if (options.name) {\n promisifiedFunction.displayName = `${ options.name }:promisified`;\n }\n\n return setFunctionName(promisifiedFunction, `${ getFunctionName(method) }::promisified`);\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport function inlineMemoize(method : (...args : Array) => R, logic : (...args : Array) => R, args : Array = []) : R {\n // $FlowFixMe\n let cache = method.__inline_memoize_cache__ = method.__inline_memoize_cache__ || {};\n let key = serializeArgs(args);\n\n if (cache.hasOwnProperty(key)) {\n return cache[key];\n }\n \n let result = cache[key] = logic(...args);\n\n return result;\n}\n\n// eslint-disable-next-line no-unused-vars\nexport function noop(...args : Array) {\n // pass\n}\n\nexport function once(method : Function) : Function {\n let called = false;\n\n const onceFunction = function() : mixed {\n if (!called) {\n called = true;\n return method.apply(this, arguments);\n }\n };\n\n return setFunctionName(onceFunction, `${ getFunctionName(method) }::once`);\n}\n\nexport function hashStr(str : string) : number {\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n hash += str[i].charCodeAt(0) * Math.pow((i % 10) + 1, 5);\n }\n return Math.floor(Math.pow(Math.sqrt(hash), 5));\n}\n\nexport function strHashStr(str : string) : string {\n let hash = '';\n\n for (let i = 0; i < str.length; i++) {\n let total = (str[i].charCodeAt(0) * i);\n\n if (str[i + 1]) {\n total += (str[i + 1].charCodeAt(0) * (i - 1));\n }\n\n hash += String.fromCharCode(97 + (Math.abs(total) % 26));\n }\n\n return hash;\n}\n\nexport function match(str : string, pattern : RegExp) : ?string {\n let regmatch = str.match(pattern);\n if (regmatch) {\n return regmatch[1];\n }\n}\n\nexport function awaitKey(obj : Object, key : string) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n\n let value = obj[key];\n\n if (value) {\n return resolve(value);\n }\n\n delete obj[key];\n\n Object.defineProperty(obj, key, {\n\n configurable: true,\n\n set(item) {\n value = item;\n\n if (value) {\n resolve(value);\n }\n },\n\n get() : mixed {\n return value;\n }\n });\n });\n}\n\nexport function stringifyError(err : mixed, level : number = 1) : string {\n\n if (level >= 3) {\n return 'stringifyError stack overflow';\n }\n\n try {\n if (!err) {\n return ``;\n }\n\n if (typeof err === 'string') {\n return err;\n }\n\n if (err instanceof Error) {\n let stack = err && err.stack;\n let message = err && err.message;\n\n if (stack && message) {\n if (stack.indexOf(message) !== -1) {\n return stack;\n } else {\n return `${ message }\\n${ stack }`;\n }\n } else if (stack) {\n return stack;\n } else if (message) {\n return message;\n }\n }\n\n if (err && err.toString && typeof err.toString === 'function') {\n // $FlowFixMe\n return err.toString();\n }\n\n return Object.prototype.toString.call(err);\n\n } catch (newErr) { // eslint-disable-line unicorn/catch-error-name\n return `Error while stringifying error: ${ stringifyError(newErr, level + 1) }`;\n }\n}\n\nexport function stringifyErrorMessage(err : mixed) : string {\n\n let defaultMessage = ``;\n\n if (!err) {\n return defaultMessage;\n }\n\n if (err instanceof Error) {\n return err.message || defaultMessage;\n }\n\n if (typeof err.message === 'string') {\n return err.message || defaultMessage;\n }\n\n return defaultMessage;\n}\n\nexport function stringify(item : mixed) : string {\n if (typeof item === 'string') {\n return item;\n }\n\n if (item && item.toString && typeof item.toString === 'function') {\n // $FlowFixMe\n return item.toString();\n }\n\n return Object.prototype.toString.call(item);\n}\n\nexport function domainMatches(hostname : string, domain : string) : boolean {\n hostname = hostname.split('://')[1];\n let index = hostname.indexOf(domain);\n return (index !== -1 && hostname.slice(index) === domain);\n}\n\nexport function patchMethod(obj : Object, name : string, handler : Function) {\n let original = obj[name];\n\n obj[name] = function patchedMethod() : mixed {\n return handler({\n context: this,\n args: Array.prototype.slice.call(arguments),\n original,\n callOriginal: () => original.apply(this, arguments)\n });\n };\n}\n\nexport function extend(obj : T, source : Object) : T {\n if (!source) {\n return obj;\n }\n\n if (Object.assign) {\n return Object.assign(obj, source);\n }\n\n for (let key in source) {\n if (source.hasOwnProperty(key)) {\n obj[key] = source[key];\n }\n }\n\n return obj;\n}\n\nexport function values(obj : { [string] : T }) : Array {\n let result = [];\n for (let key in obj) {\n if (obj.hasOwnProperty(key)) {\n result.push(obj[key]);\n }\n }\n return result;\n}\n\nexport function perc(pixels : number, percentage : number) : number {\n return Math.round((pixels * percentage) / 100);\n}\n\nexport function min(...args : Array) : number {\n return Math.min(...args);\n}\n\nexport function max(...args : Array) : number {\n return Math.max(...args);\n}\n\nexport function regexMap(str : string, regexp : RegExp, handler : () => T) : Array {\n let results = [];\n\n // $FlowFixMe\n str.replace(regexp, function regexMapMatcher(item) {\n results.push(handler ? handler.apply(null, arguments) : item);\n });\n\n // $FlowFixMe\n return results;\n}\n\nexport function svgToBase64(svg : string) : string {\n return `data:image/svg+xml;base64,${ base64encode(svg) }`;\n}\n\nexport function objFilter(obj : { [string] : T }, filter? : (T, ?string) => mixed = Boolean) : { [string] : R } {\n let result = {};\n\n for (let key in obj) {\n if (!obj.hasOwnProperty(key) || !filter(obj[key], key)) {\n continue;\n }\n\n result[key] = obj[key];\n }\n\n return result;\n}\n\nexport function identity (item : T) : T {\n return item;\n}\n\nexport function regexTokenize(text : string, regexp : RegExp) : Array {\n let result = [];\n text.replace(regexp, token => {\n result.push(token);\n return '';\n });\n return result;\n}\n\nexport function promiseDebounce(method : () => ZalgoPromise | T, delay : number = 50) : () => ZalgoPromise {\n\n let promise;\n let timeout;\n\n const promiseDebounced = function() : ZalgoPromise {\n if (timeout) {\n clearTimeout(timeout);\n }\n\n let localPromise = promise = promise || new ZalgoPromise();\n\n timeout = setTimeout(() => {\n promise = null;\n timeout = null;\n\n ZalgoPromise.try(method).then(\n result => { localPromise.resolve(result); },\n err => { localPromise.reject(err); }\n );\n }, delay);\n\n return localPromise;\n };\n\n return setFunctionName(promiseDebounced, `${ getFunctionName(method) }::promiseDebounced`);\n}\n\nexport function safeInterval(method : Function, time : number) : { cancel : () => void } {\n\n let timeout;\n\n function loop() {\n timeout = setTimeout(() => {\n method();\n loop();\n }, time);\n }\n\n loop();\n\n return {\n cancel() {\n clearTimeout(timeout);\n }\n };\n}\n\nexport function isInteger(str : string) : boolean {\n return Boolean(str.match(/^[0-9]+$/));\n}\n\nexport function isFloat(str : string) : boolean {\n return Boolean(str.match(/^[0-9]+\\.[0-9]+$/));\n}\n\nexport function serializePrimitive(value : string | number | boolean) : string {\n return value.toString();\n}\n\nexport function deserializePrimitive(value : string) : string | number | boolean {\n if (value === 'true') {\n return true;\n } else if (value === 'false') {\n return false;\n } else if (isInteger(value)) {\n return parseInt(value, 10);\n } else if (isFloat(value)) {\n return parseFloat(value);\n } else {\n return value;\n }\n}\n\nexport function dotify(obj : Object, prefix : string = '', newobj : Object = {}) : { [string] : string } {\n prefix = prefix ? `${ prefix }.` : prefix;\n for (let key in obj) {\n if (!obj.hasOwnProperty(key) || obj[key] === undefined || obj[key] === null || typeof obj[key] === 'function') {\n continue;\n } else if (obj[key] && Array.isArray(obj[key]) && obj[key].length && obj[key].every(val => typeof val !== 'object')) {\n newobj[`${ prefix }${ key }[]`] = obj[key].join(',');\n } else if (obj[key] && typeof obj[key] === 'object') {\n newobj = dotify(obj[key], `${ prefix }${ key }`, newobj);\n } else {\n newobj[`${ prefix }${ key }`] = serializePrimitive(obj[key]);\n }\n }\n return newobj;\n}\n\nexport function undotify(obj : { [string] : string }) : Object {\n \n let result = {};\n\n for (let key in obj) {\n if (!obj.hasOwnProperty(key) || typeof obj[key] !== 'string') {\n continue;\n }\n\n let value = obj[key];\n\n if (key.match(/^.+\\[\\]$/)) {\n key = key.slice(0, key.length - 2);\n value = value.split(',').map(deserializePrimitive);\n } else {\n value = deserializePrimitive(value);\n }\n\n let keyResult = result;\n let parts = key.split('.');\n for (let i = 0; i < parts.length; i++) {\n let part = parts[i];\n let isLast = (i + 1 === parts.length);\n let isIndex = !isLast && isInteger(parts[i + 1]);\n\n if (part === 'constructor' || part === 'prototype' || part === '__proto__') {\n throw new Error(`Disallowed key: ${ part }`);\n }\n\n if (isLast) {\n // $FlowFixMe\n keyResult[part] = value;\n } else {\n // $FlowFixMe\n keyResult = keyResult[part] = keyResult[part] || (isIndex ? [] : {});\n }\n }\n }\n\n return result;\n}\n\nexport type EventEmitterType = {\n on : (eventName : string, handler : Function) => CancelableType,\n once : (eventName : string, handler : Function) => CancelableType,\n trigger : (eventName : string, ...args : $ReadOnlyArray) => ZalgoPromise,\n triggerOnce : (eventName : string, ...args : $ReadOnlyArray) => ZalgoPromise\n};\n\nexport function eventEmitter() : EventEmitterType {\n let triggered = {};\n let handlers = {};\n\n return {\n\n on(eventName : string, handler : Function) : CancelableType {\n let handlerList = handlers[eventName] = handlers[eventName] || [];\n\n handlerList.push(handler);\n\n let cancelled = false;\n\n return {\n cancel() {\n if (!cancelled) {\n cancelled = true;\n handlerList.splice(handlerList.indexOf(handler), 1);\n }\n\n }\n };\n },\n\n once(eventName : string, handler : Function) : CancelableType {\n\n let listener = this.on(eventName, () => {\n listener.cancel();\n handler();\n });\n\n return listener;\n },\n\n trigger(eventName : string, ...args : $ReadOnlyArray) : ZalgoPromise {\n\n let handlerList = handlers[eventName];\n let promises = [];\n\n if (handlerList) {\n for (let handler of handlerList) {\n promises.push(ZalgoPromise.try(() => handler(...args)));\n }\n }\n\n return ZalgoPromise.all(promises).then(noop);\n },\n\n triggerOnce(eventName : string, ...args : $ReadOnlyArray) : ZalgoPromise {\n\n if (triggered[eventName]) {\n return ZalgoPromise.resolve();\n }\n\n triggered[eventName] = true;\n return this.trigger(eventName, ...args);\n }\n };\n}\n\nexport function camelToDasherize(string : string) : string {\n return string.replace(/([A-Z])/g, (g) => {\n return `-${ g.toLowerCase() }`;\n });\n}\n\nexport function dasherizeToCamel(string : string) : string {\n return string.replace(/-([a-z])/g, (g) => {\n return g[1].toUpperCase();\n });\n}\n\nexport function capitalizeFirstLetter(string : string) : string {\n return string.charAt(0).toUpperCase() + string.slice(1).toLowerCase();\n}\n\nexport function get(item : Object, path : string, def : mixed) : mixed {\n\n if (!path) {\n return def;\n }\n\n let pathParts = path.split('.');\n\n // Loop through each section of our key path\n\n for (let i = 0; i < pathParts.length; i++) {\n\n // If we have an object, we can get the key\n if (typeof item === 'object' && item !== null) {\n item = item[pathParts[i]];\n\n // Otherwise, we should return the default (undefined if not provided)\n } else {\n return def;\n }\n }\n\n // If our final result is undefined, we should return the default\n\n return item === undefined ? def : item;\n}\n\nexport function safeTimeout(method : Function, time : number) {\n\n let interval = safeInterval(() => {\n time -= 100;\n if (time <= 0) {\n interval.cancel();\n method();\n }\n }, 100);\n}\n\nexport function defineLazyProp(obj : Object | Array, key : string | number, getter : () => T) {\n if (Array.isArray(obj)) {\n if (typeof key !== 'number') {\n throw new TypeError(`Array key must be number`);\n }\n } else if (typeof obj === 'object' && obj !== null) {\n if (typeof key !== 'string') {\n throw new TypeError(`Object key must be string`);\n }\n }\n \n Object.defineProperty(obj, key, {\n configurable: true,\n enumerable: true,\n get: () => {\n // $FlowFixMe\n delete obj[key];\n let value = getter();\n // $FlowFixMe\n obj[key] = value;\n return value;\n },\n set: (value : T) => {\n // $FlowFixMe\n delete obj[key];\n // $FlowFixMe\n obj[key] = value;\n }\n });\n}\n\nexport function arrayFrom(item : Iterable) : Array { // eslint-disable-line no-undef\n return Array.prototype.slice.call(item);\n}\n\nexport function isObject(item : mixed) : boolean {\n return (typeof item === 'object' && item !== null);\n}\n\nexport function isObjectObject(obj : mixed) : boolean {\n return isObject(obj) && Object.prototype.toString.call(obj) === '[object Object]';\n}\n\nexport function isPlainObject(obj : mixed) : boolean {\n if (!isObjectObject(obj)) {\n return false;\n }\n\n // $FlowFixMe\n let constructor = obj.constructor;\n\n if (typeof constructor !== 'function') {\n return false;\n }\n\n let prototype = constructor.prototype;\n\n if (!isObjectObject(prototype)) {\n return false;\n }\n\n if (!prototype.hasOwnProperty('isPrototypeOf')) {\n return false;\n }\n\n return true;\n}\n\nexport function replaceObject | Object> (item : T, replacer : (mixed, string | number, string) => mixed, fullKey : string = '') : T {\n\n if (Array.isArray(item)) {\n let length = item.length;\n let result : Array = [];\n\n for (let i = 0; i < length; i++) {\n\n \n defineLazyProp(result, i, () => {\n let itemKey = fullKey ? `${ fullKey }.${ i }` : `${ i }`;\n let el = item[i];\n\n let child = replacer(el, i, itemKey);\n\n if (isPlainObject(child) || Array.isArray(child)) {\n // $FlowFixMe\n child = replaceObject(child, replacer, itemKey);\n }\n\n return child;\n });\n }\n\n // $FlowFixMe\n return result;\n } else if (isPlainObject(item)) {\n let result = {};\n\n for (let key in item) {\n if (!item.hasOwnProperty(key)) {\n continue;\n }\n\n defineLazyProp(result, key, () => {\n let itemKey = fullKey ? `${ fullKey }.${ key }` : `${ key }`;\n // $FlowFixMe\n let el = item[key];\n\n let child = replacer(el, key, itemKey);\n\n if (isPlainObject(child) || Array.isArray(child)) {\n // $FlowFixMe\n child = replaceObject(child, replacer, itemKey);\n }\n\n return child;\n });\n }\n\n // $FlowFixMe\n return result;\n } else {\n throw new Error(`Pass an object or array`);\n }\n}\n\n\nexport function copyProp(source : Object, target : Object, name : string, def : mixed) {\n if (source.hasOwnProperty(name)) {\n let descriptor = Object.getOwnPropertyDescriptor(source, name);\n // $FlowFixMe\n Object.defineProperty(target, name, descriptor);\n\n } else {\n target[name] = def;\n }\n}\n\ntype RegexResultType = {\n text : string,\n groups : Array,\n start : number,\n end : number,\n length : number,\n replace : (text : string) => string\n};\n\nexport function regex(pattern : string | RegExp, string : string, start : number = 0) : ?RegexResultType {\n\n if (typeof pattern === 'string') {\n // eslint-disable-next-line security/detect-non-literal-regexp\n pattern = new RegExp(pattern);\n }\n\n let result = string.slice(start).match(pattern);\n\n if (!result) {\n return;\n }\n\n // $FlowFixMe\n let index : number = result.index;\n let regmatch = result[0];\n\n return {\n text: regmatch,\n groups: result.slice(1),\n start: start + index,\n end: start + index + regmatch.length,\n length: regmatch.length,\n\n replace(text : string) : string {\n\n if (!regmatch) {\n return '';\n }\n\n return `${ regmatch.slice(0, start + index) }${ text }${ regmatch.slice(index + regmatch.length) }`;\n }\n };\n}\n\nexport function regexAll(pattern : string | RegExp, string : string) : Array {\n\n let matches = [];\n let start = 0;\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n let regmatch = regex(pattern, string, start);\n\n if (!regmatch) {\n break;\n }\n\n matches.push(regmatch);\n start = match.end;\n }\n\n return matches;\n}\n\nexport function isDefined(value : ?mixed) : boolean {\n return value !== null && value !== undefined;\n}\n\nexport function cycle(method : Function) : ZalgoPromise {\n return ZalgoPromise.try(method).then(() => cycle(method));\n}\n\nexport function debounce(method : (...args : Array) => T, time : number = 100) : (...args : Array) => void {\n\n let timeout;\n\n const debounceWrapper = function() {\n clearTimeout(timeout);\n\n timeout = setTimeout(() => {\n return method.apply(this, arguments);\n }, time);\n };\n\n return setFunctionName(debounceWrapper, `${ getFunctionName(method) }::debounced`);\n}\n\nexport function isRegex(item : mixed) : boolean {\n return Object.prototype.toString.call(item) === '[object RegExp]';\n}\n\ntype FunctionProxy = (method : T) => T;\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport let weakMapMemoize : FunctionProxy<*> = (method : (arg : any) => R) : ((...args : Array) => R) => {\n\n let weakmap = new WeakMap();\n\n // eslint-disable-next-line flowtype/no-weak-types\n return function weakmapMemoized(arg : any) : R {\n return weakmap.getOrSet(arg, () => method.call(this, arg));\n };\n};\n\ntype FunctionPromiseProxy) => ZalgoPromise> = (T) => T;\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport let weakMapMemoizePromise : FunctionPromiseProxy<*, *> = (method : (arg : any) => ZalgoPromise) : ((...args : Array) => ZalgoPromise) => {\n\n let weakmap = new WeakMap();\n\n // eslint-disable-next-line flowtype/no-weak-types\n return function weakmapMemoizedPromise(arg : any) : ZalgoPromise {\n return weakmap.getOrSet(arg, () =>\n method.call(this, arg).finally(() => {\n weakmap.delete(arg);\n })\n );\n };\n};\n\nexport function getOrSet(obj : O, key : string, getter : () => T) : T {\n if (obj.hasOwnProperty(key)) {\n return obj[key];\n }\n\n const val = getter();\n obj[key] = val;\n return val;\n}\n\nexport type CleanupType = {|\n set : (string, T) => T, // eslint-disable-line no-undef\n register : (Function) => void,\n all : () => ZalgoPromise\n|};\n\nexport function cleanup(obj : Object) : CleanupType {\n\n const tasks = [];\n let cleaned = false;\n\n return {\n set(name : string, item : T) : T {\n if (!cleaned) {\n obj[name] = item;\n this.register(() => {\n delete obj[name];\n });\n }\n return item;\n },\n\n register(method : Function) {\n if (cleaned) {\n method();\n } else {\n tasks.push(once(method));\n }\n },\n\n all() : ZalgoPromise {\n const results = [];\n cleaned = true;\n\n while (tasks.length) {\n const task = tasks.pop();\n results.push(task());\n }\n\n return ZalgoPromise.all(results).then(noop);\n }\n };\n}\n\nexport function tryCatch(fn : () => T) : {| result : T, error : void |} | {| result : void, error : mixed |} {\n let result;\n let error;\n\n try {\n result = fn();\n } catch (err) {\n error = err;\n }\n \n // $FlowFixMe\n return { result, error };\n}\n\nexport function removeFromArray>(arr : T, item : X) {\n const index = arr.indexOf(item);\n if (index !== -1) {\n arr.splice(index, 1);\n }\n}\n\nexport function assertExists(name : string, thing : void | null | T) : T {\n if (thing === null || typeof thing === 'undefined') {\n throw new Error(`Expected ${ name } to be present`);\n }\n \n return thing;\n}\n \nexport function unique(arr : $ReadOnlyArray) : $ReadOnlyArray {\n const result = {};\n for (const item of arr) {\n // eslint-disable-next-line const-immutable/no-mutation\n result[item] = true;\n }\n return Object.keys(result);\n}\n","/* @flow */\n\nexport const KEY_CODES = {\n ENTER: 13\n};\n","/* @flow */\n/* eslint max-lines: off */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { linkFrameWindow, isWindowClosed,\n type SameDomainWindowType, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\n\nimport { inlineMemoize, noop, stringify, capitalizeFirstLetter,\n once, extend, safeInterval, uniqueID, arrayFrom } from './util';\nimport { isDevice } from './device';\nimport { KEY_CODES } from './constants';\nimport type { CancelableType } from './types';\n\ntype ElementRefType = string | HTMLElement;\n\nexport function isDocumentReady() : boolean {\n return Boolean(document.body) && document.readyState === 'complete';\n}\n\nexport function urlEncode(str : string) : string {\n return str.replace(/\\?/g, '%3F').replace(/&/g, '%26').replace(/#/g, '%23').replace(/\\+/g, '%2B');\n}\n\nexport function waitForWindowReady() : ZalgoPromise {\n return inlineMemoize(waitForWindowReady, () : ZalgoPromise => {\n return new ZalgoPromise(resolve => {\n if (isDocumentReady()) {\n resolve();\n }\n\n window.addEventListener('load', () => resolve());\n });\n });\n}\n\nexport function waitForDocumentReady() : ZalgoPromise {\n return inlineMemoize(waitForDocumentReady, () : ZalgoPromise => {\n return new ZalgoPromise(resolve => {\n\n if (isDocumentReady()) {\n return resolve();\n }\n\n let interval = setInterval(() => {\n if (isDocumentReady()) {\n clearInterval(interval);\n return resolve();\n }\n }, 10);\n });\n });\n}\n\nexport function waitForDocumentBody() : ZalgoPromise {\n return waitForDocumentReady().then(() => {\n if (document.body) {\n return document.body;\n }\n\n throw new Error('Document ready but document.body not present');\n });\n}\n\nexport function parseQuery(queryString : string) : Object {\n return inlineMemoize(parseQuery, () : Object => {\n let params = {};\n\n if (!queryString) {\n return params;\n }\n\n if (queryString.indexOf('=') === -1) {\n return params;\n }\n\n for (let pair of queryString.split('&')) {\n pair = pair.split('=');\n\n if (pair[0] && pair[1]) {\n params[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n }\n\n return params;\n }, [ queryString ]);\n}\n\n\nexport function getQueryParam(name : string) : string {\n return parseQuery(window.location.search.slice(1))[name];\n}\n\nexport function urlWillRedirectPage(url : string) : boolean {\n\n if (url.indexOf('#') === -1) {\n return true;\n }\n\n if (url.indexOf('#') === 0) {\n return false;\n }\n\n if (url.split('#')[0] === window.location.href.split('#')[0]) {\n return false;\n }\n\n return true;\n}\n\nexport function formatQuery(obj : { [ string ] : string } = {}) : string {\n\n return Object.keys(obj).filter(key => {\n return typeof obj[key] === 'string';\n }).map(key => {\n return `${ urlEncode(key) }=${ urlEncode(obj[key]) }`;\n }).join('&');\n}\n\nexport function extendQuery(originalQuery : string, props : { [ string ] : string } = {}) : string {\n\n if (!props || !Object.keys(props).length) {\n return originalQuery;\n }\n\n return formatQuery({\n ...parseQuery(originalQuery),\n ...props\n });\n}\n\nexport function extendUrl(url : string, options : { query? : { [string] : string }, hash? : { [string] : string } } = {}) : string {\n\n let query = options.query || {};\n let hash = options.hash || {};\n\n let originalUrl;\n let originalQuery;\n let originalHash;\n\n [ originalUrl, originalHash ] = url.split('#');\n [ originalUrl, originalQuery ] = originalUrl.split('?');\n\n let queryString = extendQuery(originalQuery, query);\n let hashString = extendQuery(originalHash, hash);\n\n if (queryString) {\n originalUrl = `${ originalUrl }?${ queryString }`;\n }\n\n if (hashString) {\n originalUrl = `${ originalUrl }#${ hashString }`;\n }\n\n return originalUrl;\n}\n\nexport function redirect(url : string, win : CrossDomainWindowType = window) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n win.location = url;\n if (!urlWillRedirectPage(url)) {\n resolve();\n }\n });\n}\n\nexport function hasMetaViewPort() : boolean {\n let meta = document.querySelector('meta[name=viewport]');\n\n if (isDevice() && window.screen.width < 660 && !meta) {\n return false;\n }\n\n return true;\n}\n\nexport function isElementVisible(el : HTMLElement) : boolean {\n return Boolean(el.offsetWidth || el.offsetHeight || el.getClientRects().length);\n}\n\nexport function enablePerformance() : boolean {\n return inlineMemoize(enablePerformance, () : boolean => {\n /* eslint-disable compat/compat */\n return Boolean(\n window.performance &&\n performance.now &&\n performance.timing &&\n performance.timing.connectEnd &&\n performance.timing.navigationStart &&\n (Math.abs(performance.now() - Date.now()) > 1000) &&\n (performance.now() - (performance.timing.connectEnd - performance.timing.navigationStart)) > 0\n );\n /* eslint-enable compat/compat */\n });\n}\n\nexport function getPageRenderTime() : ZalgoPromise {\n return waitForDocumentReady().then(() => {\n\n if (!enablePerformance()) {\n return;\n }\n\n let timing = window.performance.timing;\n\n if (timing.connectEnd && timing.domInteractive) {\n return timing.domInteractive - timing.connectEnd;\n }\n });\n}\n\nexport function htmlEncode(html : string = '') : string {\n return html.toString()\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(/\\//g, '/');\n}\n\nexport function isBrowser() : boolean {\n return (typeof window !== 'undefined');\n}\n\nexport function querySelectorAll(selector : string, doc : HTMLElement = window.document) : Array {\n return Array.prototype.slice.call(doc.querySelectorAll(selector));\n}\n\nexport function onClick(element : HTMLElement, handler : (Event) => void) {\n element.addEventListener('touchstart', noop);\n element.addEventListener('click', handler);\n element.addEventListener('keypress', (event : Event) => {\n // $FlowFixMe\n if (event.keyCode === KEY_CODES.ENTER) {\n return handler(event);\n }\n });\n}\n\nexport function getScript({ host = window.location.host, path } : { host? : string, path : string }) : ?HTMLScriptElement {\n return inlineMemoize(getScript, () : ?HTMLScriptElement => {\n\n let url = `${ host }${ path }`;\n let scripts = Array.prototype.slice.call(document.getElementsByTagName('script'));\n\n for (let script of scripts) {\n if (!script.src) {\n continue;\n }\n\n let src = script.src.replace(/^https?:\\/\\//, '').split('?')[0];\n\n if (src === url) {\n return script;\n }\n }\n }, [ path ]);\n}\n\nexport function isLocalStorageEnabled() : boolean {\n return inlineMemoize(isLocalStorageEnabled, () => {\n try {\n if (typeof window === 'undefined') {\n return false;\n }\n\n if (window.localStorage) {\n let value = Math.random().toString();\n window.localStorage.setItem('__test__localStorage__', value);\n let result = window.localStorage.getItem('__test__localStorage__');\n window.localStorage.removeItem('__test__localStorage__');\n if (value === result) {\n return true;\n }\n }\n } catch (err) {\n // pass\n }\n return false;\n });\n}\n\nexport function getBrowserLocales() : Array<{ country? : string, lang : string }> {\n let nav = window.navigator;\n\n let locales = nav.languages\n ? Array.prototype.slice.apply(nav.languages)\n : [];\n\n if (nav.language) {\n locales.push(nav.language);\n }\n\n if (nav.userLanguage) {\n locales.push(nav.userLanguage);\n }\n\n return locales.map(locale => {\n\n if (locale && locale.match(/^[a-z]{2}[-_][A-Z]{2}$/)) {\n let [ lang, country ] = locale.split(/[-_]/);\n return { country, lang };\n }\n\n if (locale && locale.match(/^[a-z]{2}$/)) {\n return { lang: locale };\n }\n\n return null;\n\n }).filter(Boolean);\n}\n\n\nexport function appendChild(container : HTMLElement, child : HTMLElement | Text) {\n container.appendChild(child);\n}\n\nexport function isElement(element : mixed) : boolean {\n\n if (element instanceof window.Element) {\n return true;\n }\n\n if (element !== null && typeof element === 'object' && element.nodeType === 1 && typeof element.style === 'object' && typeof element.ownerDocument === 'object') {\n return true;\n }\n\n return false;\n}\n\nexport function getElementSafe(id : ElementRefType, doc : Document | HTMLElement = document) : ?HTMLElement {\n\n if (isElement(id)) {\n // $FlowFixMe\n return id;\n }\n\n if (typeof id === 'string') {\n return doc.querySelector(id);\n }\n}\n\nexport function getElement(id : ElementRefType, doc : Document | HTMLElement = document) : HTMLElement {\n\n let element = getElementSafe(id, doc);\n\n if (element) {\n return element;\n }\n\n throw new Error(`Can not find element: ${ stringify(id) }`);\n}\n\nexport function elementReady(id : ElementRefType) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n let name = stringify(id);\n let el = getElementSafe(id);\n\n if (el) {\n return resolve(el);\n }\n\n if (isDocumentReady()) {\n return reject(new Error(`Document is ready and element ${ name } does not exist`));\n }\n\n let interval = setInterval(() => {\n\n el = getElementSafe(id);\n\n if (el) {\n clearInterval(interval);\n return resolve(el);\n }\n\n if (isDocumentReady()) {\n clearInterval(interval);\n return reject(new Error(`Document is ready and element ${ name } does not exist`));\n }\n }, 10);\n });\n}\n\nexport function PopupOpenError(message : string) {\n this.message = message;\n}\n\nPopupOpenError.prototype = Object.create(Error.prototype);\n\ntype PopupOptions = {|\n name? : string,\n width? : number,\n height? : number,\n top? : number,\n left? : number,\n status? : 0 | 1,\n resizable? : 0 | 1,\n toolbar? : 0 | 1,\n menubar? : 0 | 1,\n scrollbars? : 0 | 1\n|};\n\nexport function popup(url : string, options? : PopupOptions) : CrossDomainWindowType {\n\n // $FlowFixMe\n options = options || {};\n\n let { width, height } = options;\n\n let top = 0;\n let left = 0;\n\n if (width) {\n if (window.outerWidth) {\n left = Math.round((window.outerWidth - width) / 2) + window.screenX;\n } else if (window.screen.width) {\n left = Math.round((window.screen.width - width) / 2);\n }\n }\n\n if (height) {\n if (window.outerHeight) {\n top = Math.round((window.outerHeight - height) / 2) + window.screenY;\n } else if (window.screen.height) {\n top = Math.round((window.screen.height - height) / 2);\n }\n }\n\n if (width && height) {\n options = {\n top,\n left,\n width,\n height,\n status: 1,\n toolbar: 0,\n menubar: 0,\n resizable: 1,\n scrollbars: 1,\n ...options\n };\n }\n\n let name = options.name || '';\n delete options.name;\n\n // eslint-disable-next-line array-callback-return\n let params = Object.keys(options).map(key => {\n // $FlowFixMe\n if (options[key] !== null && options[key] !== undefined) {\n return `${ key }=${ stringify(options[key]) }`;\n }\n }).filter(Boolean).join(',');\n\n let win;\n\n try {\n win = window.open(url, name, params, true);\n } catch (err) {\n throw new PopupOpenError(`Can not open popup window - ${ err.stack || err.message }`);\n }\n\n if (isWindowClosed(win)) {\n let err = new PopupOpenError(`Can not open popup window - blocked`);\n throw err;\n }\n\n window.addEventListener('unload', () => win.close());\n\n return win;\n}\n\n\nexport function writeToWindow(win : SameDomainWindowType, html : string) {\n try {\n win.document.open();\n win.document.write(html);\n win.document.close();\n } catch (err) {\n try {\n win.location = `javascript: document.open(); document.write(${ JSON.stringify(html) }); document.close();`;\n } catch (err2) {\n // pass\n }\n }\n}\n\nexport function writeElementToWindow(win : SameDomainWindowType, el : HTMLElement) {\n\n let tag = el.tagName.toLowerCase();\n\n if (tag !== 'html') {\n throw new Error(`Expected element to be html, got ${ tag }`);\n }\n\n let documentElement = win.document.documentElement;\n\n for (const child of arrayFrom(documentElement.children)) {\n documentElement.removeChild(child);\n }\n\n for (const child of arrayFrom(el.children)) {\n documentElement.appendChild(child);\n }\n}\n\nexport function setStyle(el : HTMLElement, styleText : string, doc : Document = window.document) {\n // $FlowFixMe\n if (el.styleSheet) {\n // $FlowFixMe\n el.styleSheet.cssText = styleText;\n } else {\n el.appendChild(doc.createTextNode(styleText));\n }\n}\n\nexport type ElementOptionsType = {\n style? : { [ string ] : string },\n id? : string,\n class? : ?Array,\n attributes? : { [ string ] : string },\n styleSheet? : ?string,\n html? : ?string\n};\n\nlet awaitFrameLoadPromises : WeakMap>;\n\nexport function awaitFrameLoad(frame : HTMLIFrameElement) : ZalgoPromise {\n awaitFrameLoadPromises = awaitFrameLoadPromises || new WeakMap();\n\n if (awaitFrameLoadPromises.has(frame)) {\n let promise = awaitFrameLoadPromises.get(frame);\n if (promise) {\n return promise;\n }\n }\n\n let promise = new ZalgoPromise((resolve, reject) => {\n frame.addEventListener('load', () => {\n linkFrameWindow(frame);\n resolve(frame);\n });\n\n frame.addEventListener('error', (err : Event) => {\n if (frame.contentWindow) {\n resolve(frame);\n } else {\n reject(err);\n }\n });\n });\n\n awaitFrameLoadPromises.set(frame, promise);\n\n return promise;\n}\n\nexport function awaitFrameWindow(frame : HTMLIFrameElement) : ZalgoPromise {\n return awaitFrameLoad(frame).then(loadedFrame => {\n\n if (!loadedFrame.contentWindow) {\n throw new Error(`Could not find window in iframe`);\n }\n\n return loadedFrame.contentWindow;\n });\n}\n\nexport function createElement(tag : string = 'div', options : ElementOptionsType = {}, container : ?HTMLElement) : HTMLElement {\n\n tag = tag.toLowerCase();\n let element = document.createElement(tag);\n\n if (options.style) {\n extend(element.style, options.style);\n }\n\n if (options.class) {\n element.className = options.class.join(' ');\n }\n\n if (options.id) {\n element.setAttribute('id', options.id);\n }\n\n if (options.attributes) {\n for (let key of Object.keys(options.attributes)) {\n element.setAttribute(key, options.attributes[key]);\n }\n }\n\n if (options.styleSheet) {\n setStyle(element, options.styleSheet);\n }\n\n if (container) {\n appendChild(container, element);\n }\n\n if (options.html) {\n if (tag === 'iframe') {\n // $FlowFixMe\n if (!container || !element.contentWindow) {\n throw new Error(`Iframe html can not be written unless container provided and iframe in DOM`);\n }\n\n // $FlowFixMe\n writeToWindow(element.contentWindow, options.html);\n\n } else {\n element.innerHTML = options.html;\n }\n }\n\n return element;\n}\n\n\nexport type IframeElementOptionsType = {\n style? : { [ string ] : string },\n class? : ?Array,\n attributes? : { [ string ] : string },\n styleSheet? : ?string,\n html? : ?string,\n url? : ?string\n};\n\nexport function iframe(options : IframeElementOptionsType = {}, container : ?HTMLElement) : HTMLIFrameElement {\n\n let attributes = options.attributes || {};\n let style = options.style || {};\n\n let frame = createElement('iframe', {\n attributes: {\n allowTransparency: 'true',\n ...attributes\n },\n style: {\n backgroundColor: 'transparent',\n border: 'none',\n ...style\n },\n html: options.html,\n class: options.class\n });\n\n const isIE = window.navigator.userAgent.match(/MSIE|Edge/i);\n \n if (!frame.hasAttribute('id')) {\n frame.setAttribute('id', uniqueID());\n }\n\n // $FlowFixMe\n awaitFrameLoad(frame);\n\n if (container) {\n let el = getElement(container);\n el.appendChild(frame);\n }\n\n if (options.url || isIE) {\n frame.setAttribute('src', options.url || 'about:blank');\n }\n\n // $FlowFixMe\n return frame;\n}\n\nexport function addEventListener(obj : HTMLElement, event : string, handler : (event : Event) => void) : CancelableType {\n obj.addEventListener(event, handler);\n return {\n cancel() {\n obj.removeEventListener(event, handler);\n }\n };\n}\n\nexport function bindEvents(element : HTMLElement, eventNames : Array, handler : (event : Event) => void) : CancelableType {\n\n handler = once(handler);\n\n for (let eventName of eventNames) {\n element.addEventListener(eventName, handler);\n }\n\n return {\n cancel: once(() => {\n for (let eventName of eventNames) {\n element.removeEventListener(eventName, handler);\n }\n })\n };\n}\n\nconst VENDOR_PREFIXES = [ 'webkit', 'moz', 'ms', 'o' ];\n\nexport function setVendorCSS(element : HTMLElement, name : string, value : string) {\n\n // $FlowFixMe\n element.style[name] = value;\n\n let capitalizedName = capitalizeFirstLetter(name);\n\n for (let prefix of VENDOR_PREFIXES) {\n // $FlowFixMe\n element.style[`${ prefix }${ capitalizedName }`] = value;\n }\n}\n\nconst ANIMATION_START_EVENTS = [ 'animationstart', 'webkitAnimationStart', 'oAnimationStart', 'MSAnimationStart' ];\nconst ANIMATION_END_EVENTS = [ 'animationend', 'webkitAnimationEnd', 'oAnimationEnd', 'MSAnimationEnd' ];\n\nexport function animate(element : ElementRefType, name : string, clean : (Function) => void, timeout : number = 1000) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n let el = getElement(element);\n\n if (!el) {\n return resolve();\n }\n\n let hasStarted = false;\n\n let startTimeout;\n let endTimeout;\n let startEvent;\n let endEvent;\n\n function cleanUp() {\n clearTimeout(startTimeout);\n clearTimeout(endTimeout);\n startEvent.cancel();\n endEvent.cancel();\n }\n\n startEvent = bindEvents(el, ANIMATION_START_EVENTS, event => {\n\n // $FlowFixMe\n if (event.target !== el || event.animationName !== name) {\n return;\n }\n\n clearTimeout(startTimeout);\n\n event.stopPropagation();\n\n startEvent.cancel();\n hasStarted = true;\n\n endTimeout = setTimeout(() => {\n cleanUp();\n resolve();\n }, timeout);\n });\n\n endEvent = bindEvents(el, ANIMATION_END_EVENTS, event => {\n\n // $FlowFixMe\n if (event.target !== el || event.animationName !== name) {\n return;\n }\n\n cleanUp();\n\n // $FlowFixMe\n if (typeof event.animationName === 'string' && event.animationName !== name) {\n return reject(`Expected animation name to be ${ name }, found ${ event.animationName }`);\n }\n\n return resolve();\n });\n\n setVendorCSS(el, 'animationName', name);\n\n startTimeout = setTimeout(() => {\n if (!hasStarted) {\n cleanUp();\n return resolve();\n }\n }, 200);\n\n if (clean) {\n clean(cleanUp);\n }\n });\n}\n\nconst STYLE = {\n\n DISPLAY: {\n NONE: 'none',\n BLOCK: 'block'\n },\n\n VISIBILITY: {\n VISIBLE: 'visible',\n HIDDEN: 'hidden'\n },\n\n IMPORTANT: 'important'\n};\n\nexport function makeElementVisible(element : HTMLElement) {\n element.style.setProperty('visibility', '');\n}\n\nexport function makeElementInvisible(element : HTMLElement) {\n element.style.setProperty('visibility', STYLE.VISIBILITY.HIDDEN, STYLE.IMPORTANT);\n}\n\n\nexport function showElement(element : HTMLElement) {\n element.style.setProperty('display', '');\n}\n\nexport function hideElement(element : HTMLElement) {\n element.style.setProperty('display', STYLE.DISPLAY.NONE, STYLE.IMPORTANT);\n}\n\nexport function destroyElement(element : HTMLElement) {\n if (element && element.parentNode) {\n element.parentNode.removeChild(element);\n }\n}\n\nexport function showAndAnimate(element : HTMLElement, name : string, clean : (Function) => void) : ZalgoPromise {\n let animation = animate(element, name, clean);\n showElement(element);\n return animation;\n}\n\nexport function animateAndHide(element : HTMLElement, name : string, clean : (Function) => void) : ZalgoPromise {\n return animate(element, name, clean).then(() => {\n hideElement(element);\n });\n}\n\nexport function addClass(element : HTMLElement, name : string) {\n element.classList.add(name);\n}\n\nexport function removeClass(element : HTMLElement, name : string) {\n element.classList.remove(name);\n}\n\nexport function isElementClosed(el : HTMLElement) : boolean {\n if (!el || !el.parentNode) {\n return true;\n }\n return false;\n}\n\nexport function watchElementForClose(element : HTMLElement, handler : () => mixed) : CancelableType {\n handler = once(handler);\n\n let interval;\n\n if (isElementClosed(element)) {\n handler();\n } else {\n interval = safeInterval(() => {\n if (isElementClosed(element)) {\n interval.cancel();\n handler();\n }\n }, 50);\n }\n\n return {\n cancel() {\n if (interval) {\n interval.cancel();\n }\n }\n };\n}\n\nexport function fixScripts(el : HTMLElement, doc : Document = window.document) {\n for (let script of querySelectorAll('script', el)) {\n let parentNode = script.parentNode;\n\n if (!parentNode) {\n continue;\n }\n\n let newScript = doc.createElement('script');\n newScript.text = script.textContent;\n parentNode.replaceChild(newScript, script);\n }\n}\n\ntype OnResizeOptions = {|\n width? : boolean,\n height? : boolean,\n interval? : number,\n win? : SameDomainWindowType\n|};\n\nexport function onResize(el : HTMLElement, handler : ({ width : number, height : number }) => void, { width = true, height = true, interval = 100, win = window } : OnResizeOptions = {}) : {} {\n let currentWidth = el.offsetWidth;\n let currentHeight = el.offsetHeight;\n\n handler({ width: currentWidth, height: currentHeight });\n\n let check = () => {\n let newWidth = el.offsetWidth;\n let newHeight = el.offsetHeight;\n\n if ((width && newWidth !== currentWidth) || (height && newHeight !== currentHeight)) {\n handler({ width: newWidth, height: newHeight });\n }\n\n currentWidth = newWidth;\n currentHeight = newHeight;\n };\n\n let observer;\n let timeout;\n\n if (typeof win.ResizeObserver !== 'undefined') {\n observer = new win.ResizeObserver(check);\n observer.observe(el);\n\n } else if (typeof win.MutationObserver !== 'undefined') {\n observer = new win.MutationObserver(check);\n observer.observe(el, {\n attributes: true,\n childList: true,\n subtree: true,\n characterData: false\n });\n win.addEventListener('resize', check);\n } else {\n let loop = () => {\n check();\n timeout = setTimeout(loop, interval);\n };\n loop();\n }\n\n return {\n cancel: () => {\n observer.disconnect();\n window.removeEventListener('resize', check);\n clearTimeout(timeout);\n }\n };\n}\n\nexport function getResourceLoadTime(url : string) : ?number {\n\n if (!enablePerformance()) {\n return;\n }\n\n if (!window.performance || typeof window.performance.getEntries !== 'function') {\n return;\n }\n\n const entries = window.performance.getEntries();\n\n for (let i = 0; i < entries.length; i++) {\n const entry = entries[i];\n\n if (entry && entry.name && entry.name.indexOf(url) === 0 && typeof entry.duration === 'number') {\n return Math.floor(entry.duration);\n }\n }\n}\n","/* @flow */\n\nimport { uniqueID, getGlobal, inlineMemoize } from './util';\nimport { isLocalStorageEnabled } from './dom';\n\ntype Getter = (handler : (Object) => T) => T;\n\nexport type Storage = {\n getState : Getter<*>,\n getID : () => string,\n getSessionState : Getter<*>,\n getSessionID : () => string\n};\n\nconst DEFAULT_SESSION_STORAGE = 20 * 60 * 1000;\n\nexport function getStorage({ name, lifetime = DEFAULT_SESSION_STORAGE } : { name : string, lifetime? : number }) : Storage {\n return inlineMemoize(getStorage, () => {\n const STORAGE_KEY = `__${ name }_storage__`;\n\n let accessedStorage;\n\n function getState(handler : (storage : Object) => T) : T {\n\n let localStorageEnabled = isLocalStorageEnabled();\n let storage;\n\n if (accessedStorage) {\n storage = accessedStorage;\n }\n\n if (!storage && localStorageEnabled) {\n let rawStorage = window.localStorage.getItem(STORAGE_KEY);\n\n if (rawStorage) {\n storage = JSON.parse(rawStorage);\n }\n }\n\n if (!storage) {\n storage = getGlobal()[STORAGE_KEY];\n }\n\n if (!storage) {\n storage = {\n id: uniqueID()\n };\n }\n\n if (!storage.id) {\n storage.id = uniqueID();\n }\n\n accessedStorage = storage;\n\n let result = handler(storage);\n\n if (localStorageEnabled) {\n window.localStorage.setItem(STORAGE_KEY, JSON.stringify(storage));\n } else {\n getGlobal()[STORAGE_KEY] = storage;\n }\n\n accessedStorage = null;\n\n return result;\n }\n\n function getID() : string {\n return getState(storage => storage.id);\n }\n\n function getSession(handler : (state : Object) => T) : T {\n return getState(storage => {\n\n let session = storage.__session__;\n let now = Date.now();\n\n if (session && ((now - session.created) > lifetime)) {\n session = null;\n }\n\n if (!session) {\n session = {\n guid: uniqueID(),\n created: now\n };\n }\n\n storage.__session__ = session;\n\n return handler(session);\n });\n }\n\n function getSessionState(handler : (state : Object) => T) : T {\n return getSession(session => {\n session.state = session.state || {};\n return handler(session.state);\n });\n }\n\n function getSessionID() : string {\n return getSession(session => session.guid);\n }\n\n return {\n getState,\n getID,\n getSessionState,\n getSessionID\n };\n }, [ { name, lifetime } ]);\n}\n","/* @flow */\n\nimport { noop } from './util';\nimport { getStorage } from './storage';\n\nfunction getBelterExperimentStorage() : Object {\n return getStorage({ name: 'belter_experiment' });\n}\n\nfunction isEventUnique(name : string) : boolean {\n return getBelterExperimentStorage().getSessionState(state => {\n state.loggedBeacons = state.loggedBeacons || [];\n\n if (state.loggedBeacons.indexOf(name) === -1) {\n state.loggedBeacons.push(name);\n return true;\n }\n\n return false;\n });\n}\n\nexport type Experiment = {\n isEnabled : () => boolean,\n isDisabled : () => boolean,\n getTreatment : () => string,\n log : (string, payload? : { [string] : ?string }) => Experiment,\n logStart : (payload? : { [string] : ?string }) => Experiment,\n logComplete : (payload? : { [string] : ?string }) => Experiment\n};\n\nfunction getThrottlePercentile(name : string) : number {\n return getBelterExperimentStorage().getState(state => {\n state.throttlePercentiles = state.throttlePercentiles || {};\n state.throttlePercentiles[name] = state.throttlePercentiles[name] || Math.floor(Math.random() * 100);\n return state.throttlePercentiles[name];\n });\n}\n\nconst THROTTLE_GROUP = {\n TEST: 'test',\n CONTROL: 'control',\n THROTTLE: 'throttle'\n};\n\ntype ExperimentOptions = {\n name : string,\n sample? : number,\n logTreatment? : ({ name : string, treatment : string, payload : { [string] : ?string } }) => void,\n logCheckpoint? : ({ name : string, treatment : string, checkpoint : string, payload : { [string] : ?string } }) => void\n};\n\nexport function experiment({ name, sample = 50, logTreatment = noop, logCheckpoint = noop } : ExperimentOptions) : Experiment {\n\n let throttle = getThrottlePercentile(name);\n\n let group;\n\n if (throttle < sample) {\n group = THROTTLE_GROUP.TEST;\n } else if ((sample >= 50) || ((sample <= throttle) && (throttle < (sample * 2)))) {\n group = THROTTLE_GROUP.CONTROL;\n } else {\n group = THROTTLE_GROUP.THROTTLE;\n }\n\n let treatment = `${ name }_${ group }`;\n\n let started = false;\n let forced = false;\n\n try {\n if (window.localStorage && window.localStorage.getItem(name)) {\n forced = true;\n }\n } catch (err) {\n // pass\n }\n\n return {\n\n isEnabled() : boolean {\n return (group === THROTTLE_GROUP.TEST) || forced;\n },\n\n isDisabled() : boolean {\n return (group !== THROTTLE_GROUP.TEST) && !forced;\n },\n\n getTreatment() : string {\n return treatment;\n },\n\n log(checkpoint : string, payload? : { [string] : ?string } = {}) : Experiment {\n if (!started) {\n return this;\n }\n\n if (isEventUnique(`${ name }_${ treatment }_${ JSON.stringify(payload) }`)) {\n logTreatment({ name, treatment, payload });\n }\n\n if (isEventUnique(`${ name }_${ treatment }_${ checkpoint }_${ JSON.stringify(payload) }`)) {\n logCheckpoint({ name, treatment, checkpoint, payload });\n }\n\n return this;\n },\n\n logStart(payload? : { [string] : ?string } = {}) : Experiment {\n started = true;\n return this.log(`start`, payload);\n },\n\n logComplete(payload? : { [string] : ?string } = {}) : Experiment {\n return this.log(`complete`, payload);\n }\n };\n}\n","/* @flow */\n\nimport { getGlobal } from './util';\n\nexport function getGlobalNameSpace({ name, version = 'latest' } : { name : string, version? : string }) : { get : (string, defValue? : T) => T } {\n\n let global = getGlobal();\n let globalKey = `__${ name }__${ version }_global__`;\n\n let namespace = global[globalKey] = global[globalKey] || {};\n\n return {\n get: (key : string, defValue? : T) : T => {\n // $FlowFixMe\n defValue = defValue || {};\n let item = namespace[key] = namespace[key] || defValue;\n return item;\n }\n };\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { type SameDomainWindowType } from 'cross-domain-utils/src';\n\ntype RequestOptionsType = {\n url : string,\n method? : string,\n headers? : { [key : string] : string },\n json? : $ReadOnlyArray | Object,\n data? : { [key : string] : string },\n body? : string,\n win? : SameDomainWindowType,\n timeout? : number\n};\n\ntype ResponseType = {\n status : number,\n headers : { [string] : string },\n body : Object\n};\n\nconst HEADERS = {\n CONTENT_TYPE: 'content-type',\n ACCEPT: 'accept'\n};\n\nlet headerBuilders = [];\n\nfunction parseHeaders(rawHeaders : string = '') : { [string] : string } {\n let result = {};\n for (let line of rawHeaders.trim().split('\\n')) {\n let [ key, ...values ] = line.split(':');\n result[key.toLowerCase()] = values.join(':').trim();\n }\n return result;\n}\n\nexport function request({ url, method = 'get', headers = {}, json, data, body, win = window, timeout = 0 } : RequestOptionsType) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n if ((json && data) || (json && body) || (data && json)) {\n throw new Error(`Only options.json or options.data or options.body should be passed`);\n }\n\n let normalizedHeaders = {};\n\n for (let key of Object.keys(headers)) {\n normalizedHeaders[key.toLowerCase()] = headers[key];\n }\n\n if (json) {\n normalizedHeaders[HEADERS.CONTENT_TYPE] = normalizedHeaders[HEADERS.CONTENT_TYPE] || 'application/json';\n } else if (data || body) {\n normalizedHeaders[HEADERS.CONTENT_TYPE] = normalizedHeaders[HEADERS.CONTENT_TYPE] || 'application/x-www-form-urlencoded; charset=utf-8';\n }\n\n normalizedHeaders[HEADERS.ACCEPT] = normalizedHeaders[HEADERS.ACCEPT] || 'application/json';\n\n for (let headerBuilder of headerBuilders) {\n let builtHeaders = headerBuilder();\n\n for (let key of Object.keys(builtHeaders)) {\n normalizedHeaders[key.toLowerCase()] = builtHeaders[key];\n }\n }\n\n let xhr = new win.XMLHttpRequest();\n\n xhr.addEventListener('load', function xhrLoad() : void {\n\n let responseHeaders = parseHeaders(this.getAllResponseHeaders());\n\n if (!this.status) {\n return reject(new Error(`Request to ${ method.toLowerCase() } ${ url } failed: no response status code.`));\n }\n \n let contentType = responseHeaders['content-type'];\n let isJSON = contentType && (contentType.indexOf('application/json') === 0 || contentType.indexOf('text/json') === 0);\n let responseBody = this.responseText;\n\n try {\n responseBody = JSON.parse(responseBody);\n } catch (err) {\n if (isJSON) {\n return reject(new Error(`Invalid json: ${ this.responseText }.`));\n }\n }\n\n let res = {\n status: this.status,\n headers: responseHeaders,\n body: responseBody\n };\n\n return resolve(res);\n\n }, false);\n\n xhr.addEventListener('error', (evt) => {\n reject(new Error(`Request to ${ method.toLowerCase() } ${ url } failed: ${ evt.toString() }.`));\n }, false);\n\n xhr.open(method, url, true);\n\n for (let key in normalizedHeaders) {\n if (normalizedHeaders.hasOwnProperty(key)) {\n xhr.setRequestHeader(key, normalizedHeaders[key]);\n }\n }\n\n if (json) {\n body = JSON.stringify(json);\n } else if (data) {\n body = Object.keys(data).map(key => {\n return `${ encodeURIComponent(key) }=${ data ? encodeURIComponent(data[key]) : '' }`;\n }).join('&');\n }\n\n xhr.timeout = timeout;\n xhr.ontimeout = function xhrTimeout() {\n reject(new Error(`Request to ${ method.toLowerCase() } ${ url } has timed out`));\n };\n\n xhr.send(body);\n });\n}\n\nexport function addHeaderBuilder(method : () => { [string] : string }) {\n headerBuilders.push(method);\n}\n","/* @flow */\n\n// export something to force webpack to see this as an ES module\nexport const TYPES = true;\n\ndeclare var __TEST__ : boolean;\n\nexport type JSONPrimitive = string | boolean | number;\nexport type JSONObject = { [string] : JSONPrimitive | JSONObject } | Array;\nexport type JSONType = JSONObject | JSONPrimitive;\n\nexport type CancelableType = {\n cancel : () => void\n};\n","/* @flow */\n\nimport { memoize, promisify } from './util';\n\nexport function memoized(target : Object, name : string, descriptor : Object) {\n descriptor.value = memoize(descriptor.value, { name, thisNamespace: true });\n}\n\nexport function promise(target : Object, name : string, descriptor : Object) {\n descriptor.value = promisify(descriptor.value, { name });\n}\n","/* @flow */\n\nexport function isPerc(str : string) : boolean {\n return typeof str === 'string' && (/^[0-9]+%$/).test(str);\n}\n\nexport function isPx(str : string) : boolean {\n return typeof str === 'string' && (/^[0-9]+px$/).test(str);\n}\n\nexport function toNum(val : string | number) : number {\n\n if (typeof val === 'number') {\n return val;\n }\n\n let match = val.match(/^([0-9]+)(px|%)$/);\n\n if (!match) {\n throw new Error(`Could not match css value from ${ val }`);\n }\n\n return parseInt(match[1], 10);\n}\n\nexport function toPx(val : number | string) : string {\n return `${ toNum(val) }px`;\n}\n\nexport function toCSS(val : number | string) : string {\n\n if (typeof val === 'number') {\n return toPx(val);\n }\n\n return isPerc(val) ? val : toPx(val);\n}\n\nexport function percOf(num : number, perc : string) : number {\n return parseInt(num * toNum(perc) / 100, 10);\n}\n\nexport function normalizeDimension(dim : string | number, max : number) : number {\n if (typeof dim === 'number') {\n return dim;\n } else if (isPerc(dim)) {\n return percOf(max, dim);\n } else if (isPx(dim)) {\n return toNum(dim);\n } else {\n throw new Error(`Can not normalize dimension: ${ dim }`);\n }\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { noop, tryCatch, removeFromArray } from './util';\n\ntype Prom = Promise | ZalgoPromise; // eslint-disable-line no-restricted-globals, promise/no-native\n\ntype Handler = >(name : string, fn? : (...args : A) => T) => (...args : A) => T; // eslint-disable-line no-undef\ntype Wrapper = ({ expect : Handler, avoid : Handler, expectError : Handler, error : Handler }) => (Prom | void);\n\nexport function wrapPromise(method : Wrapper, { timeout = 5000 } : { timeout? : number } = {}) : ZalgoPromise {\n let expected : Array = [];\n let promises : Array> = [];\n\n let timer = setTimeout(() => {\n if (expected.length) {\n promises.push(ZalgoPromise.asyncReject(new Error(`Expected ${ expected[0] } to be called`)));\n }\n }, timeout);\n\n let expect : Handler = (name, fn = noop) => {\n expected.push(name);\n \n // $FlowFixMe\n return function expectWrapper(...args) : * {\n removeFromArray(expected, name);\n\n // $FlowFixMe\n let { result, error } = tryCatch(() => fn.call(this, ...args));\n\n if (error) {\n promises.push(ZalgoPromise.asyncReject(error));\n throw error;\n }\n\n promises.push(ZalgoPromise.resolve(result));\n return result;\n };\n };\n\n let avoid : Handler = (name : string, fn = noop) => {\n\n // $FlowFixMe\n return function avoidWrapper(...args) : * {\n promises.push(ZalgoPromise.asyncReject(new Error(`Expected ${ name } to not be called`)));\n // $FlowFixMe\n return fn.call(this, ...args);\n };\n };\n\n let expectError : Handler = (name, fn = noop) => {\n expected.push(name);\n\n // $FlowFixMe\n return function expectErrorWrapper(...args) : * {\n removeFromArray(expected, name);\n\n // $FlowFixMe\n let { result, error } = tryCatch(() => fn.call(this, ...args));\n\n if (error) {\n throw error;\n }\n\n promises.push(ZalgoPromise.resolve(result).then(() => {\n throw new Error(`Expected ${ name } to throw an error`);\n }, noop));\n return result;\n };\n };\n\n promises.push(ZalgoPromise.try(() => method({ expect, avoid, expectError, error: avoid })));\n\n let drain = () => {\n return ZalgoPromise.try(() => {\n if (promises.length) {\n return promises.pop();\n }\n }).then(() => {\n if (promises.length) {\n return drain();\n }\n if (expected.length) {\n return ZalgoPromise.delay(10).then(drain);\n }\n });\n };\n\n return drain().then(() => {\n clearTimeout(timer);\n });\n}\n","/* @flow */\n\nexport * from './device';\nexport * from './dom';\nexport * from './experiment';\nexport * from './global';\nexport * from './storage';\nexport * from './util';\nexport * from './http';\nexport * from './types';\nexport * from './decorators';\nexport * from './css';\nexport * from './test';\n","/* @flow */\n\nexport function hasNativeWeakMap() : boolean {\n\n if (typeof WeakMap === 'undefined') {\n return false;\n }\n\n if (typeof Object.freeze === 'undefined') {\n return false;\n }\n\n try {\n\n let testWeakMap = new WeakMap();\n let testKey = {};\n let testValue = '__testvalue__';\n\n Object.freeze(testKey);\n\n testWeakMap.set(testKey, testValue);\n\n if (testWeakMap.get(testKey) === testValue) {\n return true;\n }\n\n return false;\n\n } catch (err) {\n\n return false;\n }\n}\n","/* @flow */\n\nexport function safeIndexOf(collection : Array, item : T) : number {\n for (let i = 0; i < collection.length; i++) {\n\n try {\n if (collection[i] === item) {\n return i;\n }\n } catch (err) {\n // pass\n }\n }\n\n return -1;\n}\n\n// eslint-disable-next-line no-unused-vars\nexport function noop(...args : Array) {\n // pass\n}\n","/* @flow */\n\nimport { isWindow, isWindowClosed } from 'cross-domain-utils/src';\n\nimport { hasNativeWeakMap } from './native';\nimport { noop, safeIndexOf } from './util';\n\nexport class CrossDomainSafeWeakMap {\n\n name : string\n weakmap : ?WeakMap\n keys : Array\n values : Array\n\n constructor() {\n // eslint-disable-next-line no-bitwise\n this.name = `__weakmap_${ Math.random() * 1e9 >>> 0 }__`;\n\n if (hasNativeWeakMap()) {\n try {\n this.weakmap = new WeakMap();\n } catch (err) {\n // pass\n }\n }\n\n this.keys = [];\n this.values = [];\n }\n\n _cleanupClosedWindows() {\n\n let weakmap = this.weakmap;\n let keys = this.keys;\n\n for (let i = 0; i < keys.length; i++) {\n let value = keys[i];\n\n if (isWindow(value) && isWindowClosed(value)) {\n\n if (weakmap) {\n try {\n weakmap.delete(value);\n } catch (err) {\n // pass\n }\n }\n\n keys.splice(i, 1);\n this.values.splice(i, 1);\n\n i -= 1;\n }\n }\n }\n\n isSafeToReadWrite(key : K) : boolean {\n\n if (isWindow(key)) {\n return false;\n }\n\n try {\n noop(key && key.self);\n noop(key && key[this.name]);\n } catch (err) {\n return false;\n }\n\n return true;\n }\n\n set(key : K, value : V) {\n\n if (!key) {\n throw new Error(`WeakMap expected key`);\n }\n\n let weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n weakmap.set(key, value);\n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (this.isSafeToReadWrite(key)) {\n try {\n let name = this.name;\n let entry = key[name];\n\n if (entry && entry[0] === key) {\n entry[1] = value;\n } else {\n Object.defineProperty(key, name, {\n value: [ key, value ],\n writable: true\n });\n }\n\n return;\n\n } catch (err) {\n // pass\n }\n }\n\n this._cleanupClosedWindows();\n\n let keys = this.keys;\n let values = this.values;\n let index = safeIndexOf(keys, key);\n\n if (index === -1) {\n keys.push(key);\n values.push(value);\n } else {\n values[index] = value;\n }\n }\n\n get(key : K) : V | void {\n\n if (!key) {\n throw new Error(`WeakMap expected key`);\n }\n\n let weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n if (weakmap.has(key)) {\n return weakmap.get(key);\n }\n \n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (this.isSafeToReadWrite(key)) {\n try {\n let entry = key[this.name];\n\n if (entry && entry[0] === key) {\n return entry[1];\n }\n\n return;\n } catch (err) {\n // pass\n }\n }\n\n this._cleanupClosedWindows();\n\n let keys = this.keys;\n let index = safeIndexOf(keys, key);\n\n if (index === -1) {\n return;\n }\n\n return this.values[index];\n }\n\n delete(key : K) {\n\n if (!key) {\n throw new Error(`WeakMap expected key`);\n }\n\n let weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n weakmap.delete(key);\n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (this.isSafeToReadWrite(key)) {\n try {\n let entry = key[this.name];\n\n if (entry && entry[0] === key) {\n entry[0] = entry[1] = undefined;\n }\n } catch (err) {\n // pass\n }\n }\n\n this._cleanupClosedWindows();\n\n let keys = this.keys;\n let index = safeIndexOf(keys, key);\n\n if (index !== -1) {\n keys.splice(index, 1);\n this.values.splice(index, 1);\n }\n }\n\n has(key : K) : boolean {\n\n if (!key) {\n throw new Error(`WeakMap expected key`);\n }\n\n let weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n if (weakmap.has(key)) {\n return true;\n }\n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (this.isSafeToReadWrite(key)) {\n try {\n let entry = key[this.name];\n\n if (entry && entry[0] === key) {\n return true;\n }\n\n return false;\n } catch (err) {\n // pass\n }\n }\n\n this._cleanupClosedWindows();\n\n let index = safeIndexOf(this.keys, key);\n return index !== -1;\n }\n\n getOrSet(key : K, getter : () => V) : V {\n if (this.has(key)) {\n // $FlowFixMe\n return this.get(key);\n }\n\n let value = getter();\n this.set(key, value);\n return value;\n }\n}\n","/* @flow */\n\nexport { CrossDomainSafeWeakMap as WeakMap } from './weakmap';\n","/* @flow */\n\nimport { config } from '../config';\n\nimport { uniqueID, isLocalStorageEnabled } from './util';\nimport { getQueryParam } from './dom';\nimport { isPayPalDomain } from './security';\n\nconst LOCAL_STORAGE_KEY = '__paypal_storage__';\nconst SESSION_KEY = '__paypal_session__';\nconst GLOBAL_KEY = '__paypal_global__';\n\nlet accessedStorage;\n\nexport function getStorageState(handler : (storage : Object) => T) : T {\n\n const localStorageEnabled = isLocalStorageEnabled();\n let storage;\n\n if (accessedStorage) {\n storage = accessedStorage;\n }\n\n if (!storage && localStorageEnabled) {\n const rawStorage = window.localStorage.getItem(LOCAL_STORAGE_KEY);\n\n if (rawStorage) {\n storage = JSON.parse(rawStorage);\n }\n }\n\n if (!storage) {\n storage = window[LOCAL_STORAGE_KEY];\n }\n\n if (!storage) {\n storage = {\n id: uniqueID()\n };\n }\n\n if (!storage.id) {\n storage.id = uniqueID();\n }\n\n accessedStorage = storage;\n\n const result = handler(storage);\n\n if (localStorageEnabled) {\n window.localStorage.setItem(LOCAL_STORAGE_KEY, JSON.stringify(storage));\n } else {\n window[LOCAL_STORAGE_KEY] = storage;\n }\n\n accessedStorage = null;\n\n return result;\n}\n\nexport function getStorageID() : string {\n return getStorageState(storage => storage.id);\n}\n\nexport function getSession(handler : (state : Object) => T) : T {\n return getStorageState(storage => {\n\n let session = storage[SESSION_KEY];\n const now = Date.now();\n\n if (session && ((now - session.created) > config.session_uid_lifetime)) {\n session = null;\n }\n\n if (!session) {\n session = {\n guid: uniqueID(),\n created: now\n };\n }\n\n storage[SESSION_KEY] = session;\n\n return handler(session);\n });\n}\n\nexport function getSessionState(handler : (state : Object) => T) : T {\n return getSession(session => {\n session.state = session.state || {};\n return handler(session.state);\n });\n}\n\nexport function getSessionID() : string {\n\n const xprops = window.xprops;\n\n if (xprops && xprops.sessionID) {\n return xprops.sessionID;\n }\n\n const querySessionID = getQueryParam('sessionID');\n\n if (isPayPalDomain() && querySessionID) {\n return querySessionID;\n }\n\n return getSession(session => session.guid);\n}\n\nexport function getButtonSessionID() : ?string {\n\n if (window.xprops && window.xprops.buttonSessionID) {\n return window.xprops.buttonSessionID;\n }\n\n const querySessionID = getQueryParam('buttonSessionID');\n\n if (isPayPalDomain() && querySessionID) {\n return querySessionID;\n }\n}\n\nexport function getGlobalState(handler : (state : Object) => T) : T {\n window[GLOBAL_KEY] = window[GLOBAL_KEY] || {};\n return handler(window[GLOBAL_KEY]);\n}\n","/* @flow */\n\nimport {\n getOpener,\n getTop\n} from 'cross-domain-utils/src';\n\nexport function getUserAgent() : string {\n return window.navigator.mockUserAgent || window.navigator.userAgent;\n}\n\nexport function isDevice() : boolean {\n const userAgent = getUserAgent();\n if (userAgent.match(/Android|webOS|iPhone|iPad|iPod|bada|Symbian|Palm|CriOS|BlackBerry|IEMobile|WindowsMobile|Opera Mini/i)) {\n return true;\n }\n\n return false;\n}\n\nexport function isInsidePopup() : boolean {\n // Checks to see if the top-most window is a pop-up\n return Boolean(getOpener(getTop(window) || window));\n}\n\nexport function isStandAlone() : boolean {\n // Chrome interprets pop-up windows as standalone windows\n return !isInsidePopup() && (window.navigator.standalone === true || window.matchMedia('(display-mode: standalone)').matches);\n}\n\nexport function isFacebookWebView(ua? : string = getUserAgent()) : boolean {\n return (ua.indexOf('FBAN') !== -1) || (ua.indexOf('FBAV') !== -1);\n}\n\nexport function isFirefoxIOS(ua? : string = getUserAgent()) : boolean {\n return (/FxiOS/i).test(ua);\n}\n\nexport function isEdgeIOS(ua? : string = getUserAgent()) : boolean {\n return (/EdgiOS/i).test(ua);\n}\n\nexport function isOperaMini(ua? : string = getUserAgent()) : boolean {\n return ua.indexOf('Opera Mini') > -1;\n}\n\nexport function isAndroid(ua? : string = getUserAgent()) : boolean {\n return (/Android/).test(ua);\n}\n\nexport function isIos(ua? : string = getUserAgent()) : boolean {\n return (/iPhone|iPod|iPad/).test(ua);\n}\n\nexport function isGoogleSearchApp(ua? : string = getUserAgent()) : boolean {\n return (/\\bGSA\\b/).test(ua);\n}\n\nexport function isQQBrowser(ua? : string = getUserAgent()) : boolean {\n return (/QQBrowser/).test(ua);\n}\n\nexport function isIosWebview(ua? : string = getUserAgent()) : boolean {\n if (isIos(ua)) {\n if (isGoogleSearchApp(ua)) {\n return true;\n }\n return (/.+AppleWebKit(?!.*Safari)/).test(ua);\n }\n return false;\n}\n\nexport function isAndroidWebview(ua? : string = getUserAgent()) : boolean {\n if (isAndroid(ua)) {\n return (/Version\\/[\\d.]+/).test(ua) && !isOperaMini(ua);\n }\n return false;\n}\n\nexport function isWebView() : boolean {\n return isFacebookWebView() ||\n isIosWebview() ||\n isAndroidWebview();\n}\n\nexport function isIE() : boolean {\n\n if (window.document.documentMode) {\n return true;\n }\n\n if (window.navigator && typeof window.navigator.userAgent === 'string') {\n if ((/Edge|MSIE/i).test(window.navigator.userAgent)) {\n return true;\n }\n }\n\n return false;\n}\n\n\nexport function isIE11() : boolean {\n if (!isIE()) {\n return false;\n }\n\n if (window.navigator && typeof window.navigator.userAgent === 'string') {\n if ((/MSIE 11\\.0/i).test(window.navigator.userAgent)) {\n return true;\n }\n\n if ((/Trident/i).test(window.navigator.userAgent) && (/rv:11\\.0/i).test(window.navigator.userAgent)) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function isIECompHeader() : boolean {\n const mHttp = window.document.querySelector('meta[http-equiv=\"X-UA-Compatible\"]');\n const mContent = window.document.querySelector('meta[content=\"IE=edge\"]');\n if (mHttp && mContent) {\n return true;\n }\n return false;\n}\n\nexport function isElectron() : boolean {\n const userAgent = getUserAgent();\n // here we want a case-insensitive full word boundary\n return (/\\belectron\\b/i).test(userAgent);\n}\n\nexport function isIEIntranet() : boolean {\n if (!isIE11()) {\n return false;\n }\n\n // This status check only works for older versions of IE with document.documentMode set\n\n if (window.document.documentMode) {\n try {\n const status = window.status;\n\n window.status = 'testIntranetMode';\n\n if (window.status === 'testIntranetMode') {\n window.status = status;\n\n return true;\n }\n\n return false;\n\n } catch (err) {\n\n return false;\n }\n }\n\n return false;\n}\n\nexport function isMacOsCna() : boolean {\n const userAgent = getUserAgent();\n return (/Macintosh.*AppleWebKit(?!.*Safari)/i).test(userAgent);\n}\n\nexport function supportsPopups(ua? : string = getUserAgent()) : boolean {\n return !(isIosWebview(ua) || isAndroidWebview(ua) || isOperaMini(ua) ||\n isFirefoxIOS(ua) || isEdgeIOS(ua) || isFacebookWebView(ua) || isQQBrowser(ua) || isElectron() || isMacOsCna() || isStandAlone());\n}\n","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","/* @flow */\n\nimport { type ZalgoPromise } from 'zalgo-promise/src';\nimport { getParent, isWindowClosed, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONSTANTS } from '../conf';\nimport { noop } from '../lib';\nimport { global } from '../global';\n\n/*\n HERE BE DRAGONS\n\n Warning: this file may look weird. Why save the tunnel window in an Object\n by ID, then look it up later, rather than just using the reference from the closure scope?\n\n The reason is, that ends up meaning the garbage collector can never get its hands\n on a closed window, since our closure has continued access to it -- and post-robot\n has no good way to know whether to clean up the function with the closure scope.\n\n If you're editing this file, be sure to run significant memory / GC tests afterwards.\n*/\n\nglobal.tunnelWindows = global.tunnelWindows || {};\nglobal.tunnelWindowId = 0;\n\nfunction deleteTunnelWindow(id) {\n\n try {\n if (global.tunnelWindows[id]) {\n delete global.tunnelWindows[id].source;\n }\n } catch (err) {\n // pass\n }\n\n delete global.tunnelWindows[id];\n}\n\nfunction cleanTunnelWindows() {\n let tunnelWindows = global.tunnelWindows;\n\n for (let key of Object.keys(tunnelWindows)) {\n let tunnelWindow = tunnelWindows[key];\n\n try {\n noop(tunnelWindow.source);\n } catch (err) {\n deleteTunnelWindow(key);\n continue;\n }\n\n if (isWindowClosed(tunnelWindow.source)) {\n deleteTunnelWindow(key);\n }\n }\n}\n\ntype TunnelWindowDataType = {\n name : string,\n source : CrossDomainWindowType,\n canary : () => void,\n sendMessage : (message : string) => void\n};\n\nfunction addTunnelWindow({ name, source, canary, sendMessage } : TunnelWindowDataType) : number {\n cleanTunnelWindows();\n global.tunnelWindowId += 1;\n global.tunnelWindows[global.tunnelWindowId] = { name, source, canary, sendMessage };\n return global.tunnelWindowId;\n}\n\nfunction getTunnelWindow(id : number) : TunnelWindowDataType {\n return global.tunnelWindows[id];\n}\n\nglobal.openTunnelToParent = function openTunnelToParent({ name, source, canary, sendMessage } : TunnelWindowDataType) : ZalgoPromise<{ source : CrossDomainWindowType, origin : string, data : Object }> {\n\n let parentWindow = getParent(window);\n\n if (!parentWindow) {\n throw new Error(`No parent window found to open tunnel to`);\n }\n\n let id = addTunnelWindow({ name, source, canary, sendMessage });\n\n return global.send(parentWindow, CONSTANTS.POST_MESSAGE_NAMES.OPEN_TUNNEL, {\n\n name,\n\n sendMessage() {\n\n let tunnelWindow = getTunnelWindow(id);\n\n try {\n // IE gets antsy if you try to even reference a closed window\n noop(tunnelWindow && tunnelWindow.source);\n } catch (err) {\n deleteTunnelWindow(id);\n return;\n }\n\n if (!tunnelWindow || !tunnelWindow.source || isWindowClosed(tunnelWindow.source)) {\n return;\n }\n\n try {\n tunnelWindow.canary();\n } catch (err) {\n return;\n }\n\n tunnelWindow.sendMessage.apply(this, arguments);\n }\n\n }, { domain: CONSTANTS.WILDCARD });\n};\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getDomain, isSameDomain, isOpener, isSameTopWindow, matchDomain, getUserAgent, getDomainFromUrl, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONFIG, CONSTANTS } from '../conf';\nimport { global } from '../global';\n\nexport function needsBridgeForBrowser() : boolean {\n\n if (getUserAgent(window).match(/MSIE|trident|edge\\/12|edge\\/13/i)) {\n return true;\n }\n\n if (!CONFIG.ALLOW_POSTMESSAGE_POPUP) {\n return true;\n }\n\n return false;\n}\n\nexport function needsBridgeForWin(win : CrossDomainWindowType) : boolean {\n\n if (!isSameTopWindow(window, win)) {\n return true;\n }\n\n return false;\n}\n\nexport function needsBridgeForDomain(domain : ?string, win : ?CrossDomainWindowType) : boolean {\n\n if (domain) {\n if (getDomain() !== getDomainFromUrl(domain)) {\n return true;\n }\n } else if (win) {\n if (!isSameDomain(win)) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function needsBridge({ win, domain } : { win? : CrossDomainWindowType, domain? : string }) : boolean {\n\n if (!needsBridgeForBrowser()) {\n return false;\n }\n\n if (domain && !needsBridgeForDomain(domain, win)) {\n return false;\n }\n\n if (win && !needsBridgeForWin(win)) {\n return false;\n }\n\n return true;\n}\n\nexport function getBridgeName(domain : string) : string {\n\n domain = domain || getDomainFromUrl(domain);\n\n let sanitizedDomain = domain.replace(/[^a-zA-Z0-9]+/g, '_');\n\n let id = `${ CONSTANTS.BRIDGE_NAME_PREFIX }_${ sanitizedDomain }`;\n\n return id;\n}\n\nexport function isBridge() : boolean {\n return Boolean(window.name && window.name === getBridgeName(getDomain()));\n}\n\nexport let documentBodyReady = new ZalgoPromise(resolve => {\n\n if (window.document && window.document.body) {\n return resolve(window.document.body);\n }\n\n let interval = setInterval(() => {\n if (window.document && window.document.body) {\n clearInterval(interval);\n return resolve(window.document.body);\n }\n }, 10);\n});\n\nglobal.remoteWindows = global.remoteWindows || new WeakMap();\n\nexport function registerRemoteWindow(win : CrossDomainWindowType) {\n global.remoteWindows.set(win, { sendMessagePromise: new ZalgoPromise() });\n}\n\nexport function findRemoteWindow(win : CrossDomainWindowType) : { sendMessagePromise : ZalgoPromise<(remoteWin : CrossDomainWindowType, message : string, remoteDomain : string) => void> } {\n return global.remoteWindows.get(win);\n}\n\nexport function registerRemoteSendMessage(win : CrossDomainWindowType, domain : string, sendMessage : (message : string) => void) {\n\n let remoteWindow = findRemoteWindow(win);\n\n if (!remoteWindow) {\n throw new Error(`Window not found to register sendMessage to`);\n }\n\n let sendMessageWrapper = (remoteWin : CrossDomainWindowType, message : string, remoteDomain : string) => {\n\n if (remoteWin !== win) {\n throw new Error(`Remote window does not match window`);\n }\n\n if (!matchDomain(remoteDomain, domain)) {\n throw new Error(`Remote domain ${ remoteDomain } does not match domain ${ domain }`);\n }\n\n sendMessage(message);\n };\n\n remoteWindow.sendMessagePromise.resolve(sendMessageWrapper);\n remoteWindow.sendMessagePromise = ZalgoPromise.resolve(sendMessageWrapper);\n}\n\nexport function rejectRemoteSendMessage(win : CrossDomainWindowType, err : Error) {\n\n let remoteWindow = findRemoteWindow(win);\n\n if (!remoteWindow) {\n throw new Error(`Window not found on which to reject sendMessage`);\n }\n\n remoteWindow.sendMessagePromise.asyncReject(err);\n}\n\nexport function sendBridgeMessage(win : CrossDomainWindowType, message : string, domain : string) : ZalgoPromise {\n\n let messagingChild = isOpener(window, win);\n let messagingParent = isOpener(win, window);\n\n if (!messagingChild && !messagingParent) {\n throw new Error(`Can only send messages to and from parent and popup windows`);\n }\n\n let remoteWindow = findRemoteWindow(win);\n\n if (!remoteWindow) {\n throw new Error(`Window not found to send message to`);\n }\n\n return remoteWindow.sendMessagePromise.then(sendMessage => {\n return sendMessage(win, message, domain);\n });\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { isSameDomain, getOpener, getFrames, getDomain, getFrameByName, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONSTANTS } from '../conf';\nimport { weakMapMemoize, noop } from '../lib';\nimport { global } from '../global';\n\nimport { needsBridge, registerRemoteWindow, rejectRemoteSendMessage, registerRemoteSendMessage, getBridgeName } from './common';\n\nlet awaitRemoteBridgeForWindow = weakMapMemoize((win : CrossDomainWindowType) : ZalgoPromise => {\n return ZalgoPromise.try(() => {\n for (let frame of getFrames(win)) {\n try {\n // $FlowFixMe\n if (frame && frame !== window && isSameDomain(frame) && frame[CONSTANTS.WINDOW_PROPS.POSTROBOT]) {\n return frame;\n }\n\n } catch (err) {\n continue;\n }\n }\n\n try {\n let frame = getFrameByName(win, getBridgeName(getDomain()));\n\n if (!frame) {\n return;\n }\n\n // $FlowFixMe\n if (isSameDomain(frame) && frame[CONSTANTS.WINDOW_PROPS.POSTROBOT]) {\n return frame;\n }\n\n return new ZalgoPromise(resolve => {\n\n let interval;\n let timeout;\n\n interval = setInterval(() => {\n // $FlowFixMe\n if (frame && isSameDomain(frame) && frame[CONSTANTS.WINDOW_PROPS.POSTROBOT]) {\n clearInterval(interval);\n clearTimeout(timeout);\n return resolve(frame);\n }\n }, 100);\n\n timeout = setTimeout(() => {\n clearInterval(interval);\n return resolve();\n }, 2000);\n });\n\n } catch (err) {\n // pass\n }\n });\n});\n\nexport function openTunnelToOpener() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n const opener = getOpener(window);\n\n if (!opener) {\n return;\n }\n\n if (!needsBridge({ win: opener })) {\n return;\n }\n\n registerRemoteWindow(opener);\n\n return awaitRemoteBridgeForWindow(opener).then(bridge => {\n\n if (!bridge) {\n return rejectRemoteSendMessage(opener, new Error(`Can not register with opener: no bridge found in opener`));\n }\n\n if (!window.name) {\n return rejectRemoteSendMessage(opener, new Error(`Can not register with opener: window does not have a name`));\n }\n\n return bridge[CONSTANTS.WINDOW_PROPS.POSTROBOT].openTunnelToParent({\n\n name: window.name,\n\n source: window,\n\n canary() {\n // pass\n },\n\n sendMessage(message) {\n\n try {\n noop(window);\n } catch (err) {\n return;\n }\n\n if (!window || window.closed) {\n return;\n }\n\n try {\n global.receiveMessage({\n data: message,\n origin: this.origin,\n source: this.source\n });\n } catch (err) {\n ZalgoPromise.reject(err);\n }\n }\n\n }).then(({ source, origin, data }) => {\n\n if (source !== opener) {\n throw new Error(`Source does not match opener`);\n }\n\n registerRemoteSendMessage(source, origin, data.sendMessage);\n\n }).catch(err => {\n\n rejectRemoteSendMessage(opener, err);\n throw err;\n });\n });\n });\n}\n","/* @flow */\n\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getDomain, getFrameByName, isWindowClosed, getDomainFromUrl, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { CONFIG, CONSTANTS } from '../conf';\nimport { onChildWindowReady } from '../lib';\nimport { global } from '../global';\n\nimport { getBridgeName, documentBodyReady, registerRemoteSendMessage, registerRemoteWindow } from './common';\n\nglobal.bridges = global.bridges || {};\nglobal.bridgeFrames = global.bridgeFrames || {};\n\nglobal.popupWindowsByWin = global.popupWindowsByWin || new WeakMap();\nglobal.popupWindowsByName = global.popupWindowsByName || {};\n\nfunction listenForRegister(source, domain) {\n global.on(CONSTANTS.POST_MESSAGE_NAMES.OPEN_TUNNEL, { window: source, domain }, ({ origin, data }) => {\n\n if (origin !== domain) {\n throw new Error(`Domain ${ domain } does not match origin ${ origin }`);\n }\n\n if (!data.name) {\n throw new Error(`Register window expected to be passed window name`);\n }\n\n if (!data.sendMessage) {\n throw new Error(`Register window expected to be passed sendMessage method`);\n }\n\n if (!global.popupWindowsByName[data.name]) {\n throw new Error(`Window with name ${ data.name } does not exist, or was not opened by this window`);\n }\n\n if (!global.popupWindowsByName[data.name].domain) {\n throw new Error(`We do not have a registered domain for window ${ data.name }`);\n }\n\n if (global.popupWindowsByName[data.name].domain !== origin) {\n throw new Error(`Message origin ${ origin } does not matched registered window origin ${ global.popupWindowsByName[data.name].domain }`);\n }\n\n registerRemoteSendMessage(global.popupWindowsByName[data.name].win, domain, data.sendMessage);\n\n return {\n sendMessage(message) {\n\n if (!window || window.closed) {\n return;\n }\n\n let winDetails = global.popupWindowsByName[data.name];\n\n if (!winDetails) {\n return;\n }\n\n try {\n global.receiveMessage({\n data: message,\n origin: winDetails.domain,\n source: winDetails.win\n });\n } catch (err) {\n ZalgoPromise.reject(err);\n }\n }\n };\n });\n}\n\nfunction openBridgeFrame(name : string, url : string) : HTMLIFrameElement {\n\n let iframe = document.createElement(`iframe`);\n\n iframe.setAttribute(`name`, name);\n iframe.setAttribute(`id`, name);\n\n iframe.setAttribute(`style`, `display: none; margin: 0; padding: 0; border: 0px none; overflow: hidden;`);\n iframe.setAttribute(`frameborder`, `0`);\n iframe.setAttribute(`border`, `0`);\n iframe.setAttribute(`scrolling`, `no`);\n iframe.setAttribute(`allowTransparency`, `true`);\n\n iframe.setAttribute(`tabindex`, `-1`);\n iframe.setAttribute(`hidden`, `true`);\n iframe.setAttribute(`title`, ``);\n iframe.setAttribute(`role`, `presentation`);\n\n iframe.src = url;\n\n return iframe;\n}\n\nexport function hasBridge(url : string, domain : string) : boolean {\n domain = domain || getDomainFromUrl(url);\n return Boolean(global.bridges[domain]);\n}\n\nexport function openBridge(url : string, domain : string) : ZalgoPromise {\n\n domain = domain || getDomainFromUrl(url);\n\n if (global.bridges[domain]) {\n return global.bridges[domain];\n }\n\n global.bridges[domain] = ZalgoPromise.try(() => {\n\n if (getDomain() === domain) {\n throw new Error(`Can not open bridge on the same domain as current domain: ${ domain }`);\n }\n\n let name = getBridgeName(domain);\n let frame = getFrameByName(window, name);\n\n if (frame) {\n throw new Error(`Frame with name ${ name } already exists on page`);\n }\n\n let iframe = openBridgeFrame(name, url);\n global.bridgeFrames[domain] = iframe;\n\n return documentBodyReady.then(body => {\n\n body.appendChild(iframe);\n\n let bridge = iframe.contentWindow;\n\n listenForRegister(bridge, domain);\n\n return new ZalgoPromise((resolve, reject) => {\n\n iframe.onload = resolve;\n iframe.onerror = reject;\n\n }).then(() => {\n\n return onChildWindowReady(bridge, CONFIG.BRIDGE_TIMEOUT, `Bridge ${ url }`);\n\n }).then(() => {\n\n return bridge;\n });\n });\n });\n\n return global.bridges[domain];\n}\n\nlet windowOpen = window.open;\n\nwindow.open = function windowOpenWrapper(url : string, name : string, options : string, last : mixed) : mixed {\n\n let domain = url;\n\n if (url && url.indexOf(CONSTANTS.MOCK_PROTOCOL) === 0) {\n [ domain, url ] = url.split('|');\n }\n\n if (domain) {\n domain = getDomainFromUrl(domain);\n }\n\n let win = windowOpen.call(this, url, name, options, last);\n\n if (!win) {\n return win;\n }\n\n if (url) {\n registerRemoteWindow(win);\n }\n\n for (let winName of Object.keys(global.popupWindowsByName)) {\n if (isWindowClosed(global.popupWindowsByName[winName].win)) {\n delete global.popupWindowsByName[winName];\n }\n }\n\n if (name && win) {\n let winOptions = global.popupWindowsByWin.get(win) ||\n global.popupWindowsByName[name] || {};\n\n winOptions.name = winOptions.name || name;\n winOptions.win = winOptions.win || win;\n winOptions.domain = winOptions.domain || domain;\n\n global.popupWindowsByWin.set(win, winOptions);\n global.popupWindowsByName[name] = winOptions;\n }\n\n return win;\n};\n\nexport function linkUrl(win : CrossDomainWindowType, url : string) {\n\n let winOptions = global.popupWindowsByWin.get(win);\n\n if (winOptions) {\n winOptions.domain = getDomainFromUrl(url);\n registerRemoteWindow(win);\n }\n}\n\nexport function destroyBridges() {\n for (let domain of Object.keys(global.bridgeFrames)) {\n let frame = global.bridgeFrames[domain];\n if (frame.parentNode) {\n frame.parentNode.removeChild(frame);\n }\n }\n global.bridgeFrames = {};\n global.bridges = {};\n}\n","/* @flow */\n\n// eslint-disable-next-line import/no-unassigned-import\nimport './bridge';\n\nexport * from './child';\nexport * from './common';\nexport * from './parent';\n","/* @flow */\n\nimport { info } from 'beaver-logger/client';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport type { CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { LANG_TO_DEFAULT_COUNTRY, LOCALE } from '../constants';\nimport type { LocaleType } from '../types';\nimport { config } from '../config';\n\nimport { memoize } from './util';\nimport { isDevice } from './device';\n\nfunction isDocumentReady() : boolean {\n return Boolean(document.body) && document.readyState === 'complete';\n}\n\nexport const documentReady : ZalgoPromise = new ZalgoPromise(resolve => {\n\n if (isDocumentReady()) {\n return resolve();\n }\n\n const interval = setInterval(() => {\n if (isDocumentReady()) {\n clearInterval(interval);\n return resolve();\n }\n }, 10);\n});\n\nexport const documentBody : ZalgoPromise = documentReady.then(() => {\n if (document.body) {\n return document.body;\n }\n\n throw new Error('Document ready but document.body not present');\n});\n\n\nexport function loadScript(src : string, timeout : number = 0, attrs : Object = {}) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n const script = document.createElement('script');\n\n script.addEventListener('load', () => {\n resolve();\n });\n\n // For Internet explorer 8 support\n script.onreadystatechange = function scriptOnReadyStateChange() {\n if (this.readyState === 'complete' || this.readyState === 'loaded') {\n resolve();\n }\n };\n\n const scriptLoadError = new Error('script_loading_error');\n\n script.addEventListener('error', () => {\n return reject(scriptLoadError);\n });\n\n if (timeout) {\n setTimeout(() => {\n return reject(new Error('script_loading_timed_out'));\n }, timeout);\n }\n\n for (const attr of Object.keys(attrs)) {\n script.setAttribute(attr, attrs[attr]);\n }\n\n script.setAttribute('src', src);\n\n const head = document.getElementsByTagName('head')[0];\n\n head.appendChild(script);\n });\n}\n\n\nexport function isNodeList(nodes : mixed) : boolean {\n\n const result = Object.prototype.toString.call(nodes);\n\n if (result === '[object HTMLCollection]' || result === '[object NodeList]') {\n return true;\n }\n\n return false;\n}\n\nexport function isElement(item : mixed) : boolean {\n return item instanceof HTMLElement;\n}\n\nexport function getElement(item : mixed) : ?HTMLElement {\n\n if (!item) {\n return;\n }\n\n if (item instanceof HTMLElement) {\n return item;\n }\n\n if (typeof item === 'string') {\n\n if (document.querySelector) {\n const result = document.querySelector(item);\n\n if (result) {\n return result;\n }\n }\n\n return document.getElementById(item);\n }\n}\n\nexport function getElements(collection : $ReadOnlyArray | NodeList | HTMLCollection | HTMLElement | string) : $ReadOnlyArray {\n\n if (!collection) {\n return [];\n }\n\n if (collection instanceof HTMLElement || typeof collection === 'string') {\n const element = getElement(collection);\n if (element) {\n return [ element ];\n }\n return [];\n }\n\n if (Array.isArray(collection) || collection instanceof NodeList || collection instanceof HTMLCollection) {\n const result = [];\n\n for (let i = 0; i < collection.length; i++) {\n const el = getElement(collection[i]);\n if (el) {\n result.push(el);\n }\n }\n\n return result;\n }\n\n return [];\n}\n\nexport function onDocumentReady(method : () => void) : ZalgoPromise {\n return documentReady.then(method);\n}\n\nexport const parseQuery = memoize((queryString : string) : Object => {\n\n const params = {};\n\n if (!queryString) {\n return params;\n }\n\n if (queryString.indexOf('=') === -1) {\n return params;\n }\n\n for (let pair of queryString.split('&')) {\n pair = pair.split('=');\n\n if (pair[0] && pair[1]) {\n params[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n }\n\n return params;\n});\n\n\nexport function getQueryParam(name : string) : string {\n return parseQuery(window.location.search.slice(1))[name];\n}\n\nexport function urlWillRedirectPage(url : string) : boolean {\n\n if (url.indexOf('#') === -1) {\n return true;\n }\n\n if (url.indexOf('#') === 0) {\n return false;\n }\n\n if (url.split('#')[0] === window.location.href.split('#')[0]) {\n return false;\n }\n\n return true;\n}\n\nexport function extendUrl(url : string, params : { [key : string] : string } = {}) : string {\n\n const hasHash = url.indexOf('#') > 0;\n\n let [ serverUrl, hash ] = url.split('#');\n\n if (hash && !serverUrl) {\n [ serverUrl, hash ] = [ `#${ hash }`, '' ];\n }\n\n const [ originalUrl, originalQueryString ] = serverUrl.split('?');\n\n if (originalQueryString) {\n const originalQuery = parseQuery(originalQueryString);\n\n for (const key in originalQuery) {\n if (!params.hasOwnProperty(key)) {\n params[key] = originalQuery[key];\n }\n }\n }\n\n const newQueryString = Object.keys(params).filter(key => key && params[key]).sort().map(key => {\n return `${ encodeURIComponent(key) }=${ encodeURIComponent(params[key]) }`;\n }).join('&');\n\n let newUrl = originalUrl;\n\n if (newQueryString) {\n newUrl = `${ newUrl }?${ newQueryString }`;\n }\n\n if (hasHash) {\n newUrl = `${ newUrl }#${ hash || '' }`;\n }\n\n return newUrl;\n}\n\nexport function redirect(win : CrossDomainWindowType = window, url : string) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n\n info(`redirect`, { url });\n\n setTimeout(() => {\n win.location = url;\n if (!urlWillRedirectPage(url)) {\n resolve();\n }\n }, 1);\n });\n}\n\nexport function hasMetaViewPort() : boolean {\n const meta = document.querySelector('meta[name=viewport]');\n\n if (isDevice() && window.screen.width < 660 && !meta) {\n return false;\n }\n\n return true;\n}\n\nexport function getBrowserLocales() : $ReadOnlyArray {\n const nav = window.navigator;\n\n const locales = nav.languages\n ? Array.prototype.slice.apply(nav.languages)\n : [];\n\n if (nav.language) {\n locales.push(nav.language);\n }\n\n if (nav.userLanguage) {\n locales.push(nav.userLanguage);\n }\n\n return locales;\n}\n\nexport function normalizeLocale(locale : string) : ?LocaleType {\n\n if (locale && locale.match(/^[a-z]{2}[-_][A-Z]{2}$/)) {\n const [ lang, country ] = locale.split(/[-_]/);\n if (LOCALE[country] && LOCALE[country].indexOf(lang) !== -1) {\n return { country, lang };\n }\n }\n}\n\nexport function normalizeLang(lang : string) : ?LocaleType {\n\n if (lang && lang.match(/^[a-z]{2}$/)) {\n if (LANG_TO_DEFAULT_COUNTRY[lang]) {\n return { country: LANG_TO_DEFAULT_COUNTRY[lang], lang };\n }\n }\n}\n\nexport const getBrowserLocale = memoize(() : LocaleType => {\n\n const locales = getBrowserLocales();\n\n for (const locale of locales) {\n let loc = normalizeLocale(locale);\n if (loc) {\n info('better_browser_locale_full');\n return loc;\n }\n\n loc = normalizeLang(locale);\n if (loc) {\n info('better_browser_locale_lang');\n return loc;\n }\n }\n\n return config.defaultLocale;\n});\n\nexport function isElementVisible(el : HTMLElement) : boolean {\n return Boolean(el.offsetWidth || el.offsetHeight || el.getClientRects().length);\n}\n\nexport const enablePerformance = memoize(() : boolean => {\n /* eslint-disable compat/compat */\n return Boolean(\n window.performance &&\n performance.now &&\n performance.timing &&\n performance.timing.connectEnd &&\n performance.timing.navigationStart &&\n (Math.abs(performance.now() - Date.now()) > 1000) &&\n (performance.now() - (performance.timing.connectEnd - performance.timing.navigationStart)) > 0\n );\n /* eslint-enable compat/compat */\n});\n\nexport function getPageRenderTime() : ZalgoPromise {\n return documentReady.then(() => {\n\n if (!enablePerformance()) {\n return;\n }\n\n const timing = window.performance.timing; // eslint-disable-line compat/compat\n\n if (timing.connectEnd && timing.domInteractive) {\n return timing.domInteractive - timing.connectEnd;\n }\n });\n}\n\nexport function getResourceLoadTime(url : string) : ?number {\n\n if (!enablePerformance()) {\n return;\n }\n\n if (!window.performance || typeof window.performance.getEntries !== 'function') { // eslint-disable-line compat/compat\n return;\n }\n\n const entries = window.performance.getEntries(); // eslint-disable-line compat/compat\n\n for (let i = 0; i < entries.length; i++) {\n const entry = entries[i];\n\n if (entry && entry.name === url && entry.duration && entry.duration >= 0 && entry.duration <= 60000) {\n return Math.floor(entry.duration);\n }\n }\n}\n\nexport function htmlEncode(html : string = '') : string {\n return html.toString()\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(/\\//g, '/');\n}\n","/* @flow */\n\nexport function PopupOpenError(message : string) {\n this.message = message;\n}\n\nPopupOpenError.prototype = Object.create(Error.prototype);\n\nexport function IntegrationError(message : string) {\n this.message = message;\n}\n\nIntegrationError.prototype = Object.create(Error.prototype);\n\nexport function RenderError(message : string) {\n this.message = message;\n}\n\nRenderError.prototype = Object.create(Error.prototype);\n","/* @flow */\n\nimport { getParent, isSameDomain } from 'cross-domain-utils/src';\n\nimport { config } from '../config';\n\nimport { supportsPopups } from './device';\n\nexport function allowIframe() : boolean {\n\n if (!supportsPopups()) {\n return true;\n }\n\n const parentWindow = getParent(window);\n if (parentWindow && isSameDomain(parentWindow)) {\n return true;\n }\n\n const parentComponentWindow = window.xchild && window.xchild.getParentComponentWindow();\n if (parentComponentWindow && isSameDomain(parentComponentWindow)) {\n return true;\n }\n\n if (__TEST__) {\n return true;\n }\n\n return false;\n}\n\n\nexport function isPayPalDomain() : boolean {\n return Boolean(`${ window.location.protocol }//${ window.location.host }`.match(config.paypal_domain_regex)) || window.mockDomain === 'mock://www.paypal.com';\n}\n","/* @flow */\n\nexport * from './script';\nexport * from './react';\nexport * from './vue';\nexport * from './angular';\nexport * from './ember';\nexport * from './glimmer';\nexport * from './angular2';\n","/* @flow */\n\nimport { config } from '../config';\nimport { LOG_LEVEL } from '../constants';\n\nimport { getSessionID, getSessionState } from './session';\n\nconst BEACON_URL = config.loggerUrl;\nconst APP_NAME = 'checkoutjs';\n\nexport function beacon(event : string, payload : Object = {}) {\n try {\n\n payload.event = `ppxo_${ event }`;\n payload.version = __PAYPAL_CHECKOUT__.__MINOR_VERSION__;\n payload.host = window.location.host;\n payload.uid = getSessionID();\n payload.appName = APP_NAME;\n\n let query = [];\n\n for (const key in payload) {\n if (payload.hasOwnProperty(key)) {\n query.push(`${ encodeURIComponent(key) }=${ encodeURIComponent(payload[key]) }`);\n }\n }\n\n query = query.join('&');\n\n if (!__TEST__) {\n const beaconImage = new window.Image();\n beaconImage.src = `${ BEACON_URL }?${ query }`;\n }\n\n setTimeout(() => {\n if (config.logLevel === LOG_LEVEL.DEBUG) {\n if (window.console && window.console.log) {\n window.console.log('*', event, payload);\n }\n }\n }, 1);\n\n } catch (err) {\n // pass\n }\n}\n\nfunction isCheckpointUnique(name : string) : boolean {\n return getSessionState(state => {\n state.loggedBeacons = state.loggedBeacons || [];\n\n if (state.loggedBeacons.indexOf(name) === -1) {\n state.loggedBeacons.push(name);\n return true;\n }\n\n return false;\n });\n}\n\nexport function checkpoint(name : string, payload : Object = {}, options : Object = {}) : void {\n try {\n let checkpointName = name;\n\n if (options.version) {\n const version = __PAYPAL_CHECKOUT__.__MINOR_VERSION__.replace(/[^0-9]+/g, '_');\n checkpointName = `${ version }_${ checkpointName }`;\n }\n\n if (!isCheckpointUnique(checkpointName)) {\n return;\n }\n\n return beacon(checkpointName, payload);\n\n } catch (err) {\n\n // pass\n }\n}\n\n\nconst FPTI_URL = 'https://t.paypal.com/ts';\n\nfunction buildPayload() : Object {\n return {\n v: `checkout.js.${ __PAYPAL_CHECKOUT__.__MINOR_VERSION__ }`,\n t: Date.now(),\n g: new Date().getTimezoneOffset(),\n flnm: 'ec:hermes:',\n shir: 'main_ec_hermes_',\n pgrp: 'main:ec:hermes::incontext-merchant',\n page: 'main:ec:hermes::incontext-merchant',\n vers: 'member:hermes:',\n qual: 'incontext',\n tmpl: 'merchant:incontext'\n };\n}\n\nexport function fpti(payload : Object = {}) {\n\n let query = [];\n\n payload = { ...buildPayload(), ...payload };\n\n for (const key in payload) {\n if (payload.hasOwnProperty(key)) {\n query.push(`${ encodeURIComponent(key) }=${ encodeURIComponent(payload[key]) }`);\n }\n }\n\n query = query.join('&');\n\n try {\n const beaconImage = new window.Image();\n beaconImage.src = `${ FPTI_URL }?${ query }`;\n } catch (err) {\n // pass\n }\n}\n","/* @flow */\n\nexport function extendNamespace(xports : Object, namespaces : $ReadOnlyArray = [], childnamespaces : $ReadOnlyArray = []) : Object {\n\n for (const name of namespaces) {\n const namespace = window[name];\n\n if (!namespace) {\n continue;\n }\n\n for (const childname of childnamespaces) {\n let childnamespace = xports[childname];\n\n if (namespace[childname]) {\n childnamespace = { ...namespace[childname], ...childnamespace };\n }\n\n xports = { ...namespace, ...xports, [ childname ]: childnamespace };\n }\n }\n\n for (const name of namespaces) {\n window[name] = xports;\n }\n\n return xports;\n}\n","/*\n * [hi-base32]{@link https://github.com/emn178/hi-base32}\n *\n * @version 0.5.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var root = typeof window === 'object' ? window : {};\n var NODE_JS = !root.HI_BASE32_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n }\n var COMMON_JS = !root.HI_BASE32_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var BASE32_ENCODE_CHAR = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'.split('');\n var BASE32_DECODE_CHAR = {\n 'A': 0, 'B': 1, 'C': 2, 'D': 3, 'E': 4, 'F': 5, 'G': 6, 'H': 7, 'I': 8,\n 'J': 9, 'K': 10, 'L': 11, 'M': 12, 'N': 13, 'O': 14, 'P': 15, 'Q': 16,\n 'R': 17, 'S': 18, 'T': 19, 'U': 20, 'V': 21, 'W': 22, 'X': 23, 'Y': 24,\n 'Z': 25, '2': 26, '3': 27, '4': 28, '5': 29, '6': 30, '7': 31\n };\n\n var blocks = [0, 0, 0, 0, 0, 0, 0, 0];\n\n var throwInvalidUtf8 = function (position, partial) {\n if (partial.length > 10) {\n partial = '...' + partial.substr(-10);\n }\n var err = new Error('Decoded data is not valid UTF-8.'\n + ' Maybe try base32.decode.asBytes()?'\n + ' Partial data after reading ' + position + ' bytes: ' + partial + ' <-');\n err.position = position;\n throw err;\n };\n\n var toUtf8String = function (bytes) {\n var str = '', length = bytes.length, i = 0, followingChars = 0, b, c;\n while (i < length) {\n b = bytes[i++];\n if (b <= 0x7F) {\n str += String.fromCharCode(b);\n continue;\n } else if (b > 0xBF && b <= 0xDF) {\n c = b & 0x1F;\n followingChars = 1;\n } else if (b <= 0xEF) {\n c = b & 0x0F;\n followingChars = 2;\n } else if (b <= 0xF7) {\n c = b & 0x07;\n followingChars = 3;\n } else {\n throwInvalidUtf8(i, str);\n }\n\n for (var j = 0; j < followingChars; ++j) {\n b = bytes[i++];\n if (b < 0x80 || b > 0xBF) {\n throwInvalidUtf8(i, str);\n }\n c <<= 6;\n c += b & 0x3F;\n }\n if (c >= 0xD800 && c <= 0xDFFF) {\n throwInvalidUtf8(i, str);\n }\n if (c > 0x10FFFF) {\n throwInvalidUtf8(i, str);\n }\n\n if (c <= 0xFFFF) {\n str += String.fromCharCode(c);\n } else {\n c -= 0x10000;\n str += String.fromCharCode((c >> 10) + 0xD800);\n str += String.fromCharCode((c & 0x3FF) + 0xDC00);\n }\n }\n return str;\n };\n\n var decodeAsBytes = function (base32Str) {\n if (!/^[A-Z2-7=]+$/.test(base32Str)) {\n throw new Error('Invalid base32 characters');\n }\n base32Str = base32Str.replace(/=/g, '');\n var v1, v2, v3, v4, v5, v6, v7, v8, bytes = [], index = 0, length = base32Str.length;\n\n // 4 char to 3 bytes\n for (var i = 0, count = length >> 3 << 3; i < count;) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v8 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255;\n bytes[index++] = (v4 << 4 | v5 >>> 1) & 255;\n bytes[index++] = (v5 << 7 | v6 << 2 | v7 >>> 3) & 255;\n bytes[index++] = (v7 << 5 | v8) & 255;\n }\n\n // remain bytes\n var remain = length - count;\n if (remain === 2) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n } else if (remain === 4) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255;\n } else if (remain === 5) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255;\n bytes[index++] = (v4 << 4 | v5 >>> 1) & 255;\n } else if (remain === 7) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = (v1 << 3 | v2 >>> 2) & 255;\n bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255;\n bytes[index++] = (v4 << 4 | v5 >>> 1) & 255;\n bytes[index++] = (v5 << 7 | v6 << 2 | v7 >>> 3) & 255;\n }\n return bytes;\n };\n\n var encodeAscii = function (str) {\n var v1, v2, v3, v4, v5, base32Str = '', length = str.length;\n for (var i = 0, count = parseInt(length / 5) * 5; i < count;) {\n v1 = str.charCodeAt(i++);\n v2 = str.charCodeAt(i++);\n v3 = str.charCodeAt(i++);\n v4 = str.charCodeAt(i++);\n v5 = str.charCodeAt(i++);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3 | v5 >>> 5) & 31] +\n BASE32_ENCODE_CHAR[v5 & 31];\n }\n\n // remain char\n var remain = length - count;\n if (remain === 1) {\n v1 = str.charCodeAt(i);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2) & 31] +\n '======';\n } else if (remain === 2) {\n v1 = str.charCodeAt(i++);\n v2 = str.charCodeAt(i);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4) & 31] +\n '====';\n } else if (remain === 3) {\n v1 = str.charCodeAt(i++);\n v2 = str.charCodeAt(i++);\n v3 = str.charCodeAt(i);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1) & 31] +\n '===';\n } else if (remain === 4) {\n v1 = str.charCodeAt(i++);\n v2 = str.charCodeAt(i++);\n v3 = str.charCodeAt(i++);\n v4 = str.charCodeAt(i);\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3) & 31] +\n '=';\n }\n return base32Str;\n };\n\n var encodeUtf8 = function (str) {\n var v1, v2, v3, v4, v5, code, end = false, base32Str = '',\n index = 0, i, start = 0, bytes = 0, length = str.length;\n do {\n blocks[0] = blocks[5];\n blocks[1] = blocks[6];\n blocks[2] = blocks[7];\n for (i = start; index < length && i < 5; ++index) {\n code = str.charCodeAt(index);\n if (code < 0x80) {\n blocks[i++] = code;\n } else if (code < 0x800) {\n blocks[i++] = 0xc0 | (code >> 6);\n blocks[i++] = 0x80 | (code & 0x3f);\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i++] = 0xe0 | (code >> 12);\n blocks[i++] = 0x80 | ((code >> 6) & 0x3f);\n blocks[i++] = 0x80 | (code & 0x3f);\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++index) & 0x3ff));\n blocks[i++] = 0xf0 | (code >> 18);\n blocks[i++] = 0x80 | ((code >> 12) & 0x3f);\n blocks[i++] = 0x80 | ((code >> 6) & 0x3f);\n blocks[i++] = 0x80 | (code & 0x3f);\n }\n }\n bytes += i - start;\n start = i - 5;\n if (index === length) {\n ++index;\n }\n if (index > length && i < 6) {\n end = true;\n }\n v1 = blocks[0];\n if (i > 4) {\n v2 = blocks[1];\n v3 = blocks[2];\n v4 = blocks[3];\n v5 = blocks[4];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3 | v5 >>> 5) & 31] +\n BASE32_ENCODE_CHAR[v5 & 31];\n } else if (i === 1) {\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2) & 31] +\n '======';\n } else if (i === 2) {\n v2 = blocks[1];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4) & 31] +\n '====';\n } else if (i === 3) {\n v2 = blocks[1];\n v3 = blocks[2];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1) & 31] +\n '===';\n } else {\n v2 = blocks[1];\n v3 = blocks[2];\n v4 = blocks[3];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3) & 31] +\n '=';\n }\n } while (!end);\n return base32Str;\n };\n\n var encodeBytes = function (bytes) {\n var v1, v2, v3, v4, v5, base32Str = '', length = bytes.length;\n for (var i = 0, count = parseInt(length / 5) * 5; i < count;) {\n v1 = bytes[i++];\n v2 = bytes[i++];\n v3 = bytes[i++];\n v4 = bytes[i++];\n v5 = bytes[i++];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3 | v5 >>> 5) & 31] +\n BASE32_ENCODE_CHAR[v5 & 31];\n }\n\n // remain char\n var remain = length - count;\n if (remain === 1) {\n v1 = bytes[i];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2) & 31] +\n '======';\n } else if (remain === 2) {\n v1 = bytes[i++];\n v2 = bytes[i];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4) & 31] +\n '====';\n } else if (remain === 3) {\n v1 = bytes[i++];\n v2 = bytes[i++];\n v3 = bytes[i];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1) & 31] +\n '===';\n } else if (remain === 4) {\n v1 = bytes[i++];\n v2 = bytes[i++];\n v3 = bytes[i++];\n v4 = bytes[i];\n base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3) & 31] +\n '=';\n }\n return base32Str;\n };\n\n var encode = function (input, asciiOnly) {\n var notString = typeof(input) !== 'string';\n if (notString && input.constructor === ArrayBuffer) {\n input = new Uint8Array(input);\n }\n if (notString) {\n return encodeBytes(input);\n } else if (asciiOnly) {\n return encodeAscii(input);\n } else {\n return encodeUtf8(input);\n }\n };\n\n var decode = function (base32Str, asciiOnly) {\n if (!asciiOnly) {\n return toUtf8String(decodeAsBytes(base32Str));\n }\n if (!/^[A-Z2-7=]+$/.test(base32Str)) {\n throw new Error('Invalid base32 characters');\n }\n var v1, v2, v3, v4, v5, v6, v7, v8, str = '', length = base32Str.indexOf('=');\n if (length === -1) {\n length = base32Str.length;\n }\n\n // 8 char to 5 bytes\n for (var i = 0, count = length >> 3 << 3; i < count;) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v8 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255) +\n String.fromCharCode((v2 << 6 | v3 << 1 | v4 >>> 4) & 255) +\n String.fromCharCode((v4 << 4 | v5 >>> 1) & 255) +\n String.fromCharCode((v5 << 7 | v6 << 2 | v7 >>> 3) & 255) +\n String.fromCharCode((v7 << 5 | v8) & 255);\n }\n\n // remain bytes\n var remain = length - count;\n if (remain === 2) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255);\n } else if (remain === 4) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255) +\n String.fromCharCode((v2 << 6 | v3 << 1 | v4 >>> 4) & 255);\n } else if (remain === 5) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255) +\n String.fromCharCode((v2 << 6 | v3 << 1 | v4 >>> 4) & 255) +\n String.fromCharCode((v4 << 4 | v5 >>> 1) & 255);\n } else if (remain === 7) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255) +\n String.fromCharCode((v2 << 6 | v3 << 1 | v4 >>> 4) & 255) +\n String.fromCharCode((v4 << 4 | v5 >>> 1) & 255) +\n String.fromCharCode((v5 << 7 | v6 << 2 | v7 >>> 3) & 255);\n }\n return str;\n };\n\n var exports = {\n encode: encode,\n decode: decode\n };\n decode.asBytes = decodeAsBytes;\n\n if (COMMON_JS) {\n module.exports = exports;\n } else {\n root.base32 = exports;\n if (AMD) {\n define(function() {\n return exports;\n });\n }\n }\n})();\n","/* @flow */\n\nimport type { Component, ComponentDriverType } from '../component/component';\n\nexport let script : ComponentDriverType<*, Document> = {\n\n global() : ?Document {\n return window.document;\n },\n\n register(component : Component<*>, document : Document) {\n\n function render(element : HTMLElement) {\n\n if (!element || !element.tagName || element.tagName.toLowerCase() !== 'script') {\n return;\n }\n\n // $FlowFixMe\n if (!element.attributes.type || element.attributes.type.value !== 'application/x-component' || !element.parentNode) {\n return;\n }\n\n let tag = element.getAttribute('data-component');\n\n if (!tag || tag !== component.tag) {\n return;\n }\n\n component.log(`instantiate_script_component`);\n\n let props : { [string] : mixed } = element.innerText\n ? eval(`(${ element.innerText })`) // eslint-disable-line no-eval, security/detect-eval-with-expression\n : {};\n\n let container = document.createElement('div');\n\n if (!element.parentNode) {\n throw new Error(`Element has no parent`);\n }\n\n element.parentNode.replaceChild(container, element);\n\n // $FlowFixMe\n component.render(props, container);\n }\n\n function scan() {\n let scriptTags = Array.prototype.slice.call(document.getElementsByTagName('script'));\n\n for (let element of scriptTags) {\n render(element);\n }\n }\n\n scan();\n document.addEventListener('DOMContentLoaded', scan);\n window.addEventListener('load', scan);\n\n document.addEventListener('DOMNodeInserted', event => {\n // $FlowFixMe\n render(event.target);\n });\n }\n};\n","/* @flow */\n\nimport { extend } from '../lib';\nimport type { Component, ComponentDriverType } from '../component/component';\n\ndeclare class ReactClassType {\n\n}\n\ntype ReactElementType = {\n\n};\n\ntype ReactType = {\n createClass : ({ render : ReactElementType, componentDidMount : () => void, componentDidUpdate : () => void }) => (typeof ReactClassType),\n createElement : (string, ?{ [string] : mixed }, ...children : Array) => ReactElementType\n};\n\ntype ReactDomType = {\n findDOMNode : (ReactElementType) => HTMLElement\n};\n\ntype ReactLibraryType = { React : ReactType, ReactDOM : ReactDomType };\n\nexport let react : ComponentDriverType<*, ReactLibraryType> = {\n\n global() : ?ReactLibraryType {\n if (window.React && window.ReactDOM) {\n return {\n React: window.React,\n ReactDOM: window.ReactDOM\n };\n }\n },\n\n register(component : Component<*>, { React, ReactDOM } : ReactLibraryType) : (typeof ReactClassType) {\n\n if (React.createClass) {\n\n // $FlowFixMe\n component.react = React.createClass({\n\n render() : ReactElementType {\n return React.createElement('div', null);\n },\n\n componentDidMount() {\n component.log(`instantiate_react_component`);\n\n let el = ReactDOM.findDOMNode(this);\n\n let parent = component.init(extend({}, this.props), null, el);\n\n this.setState({ parent });\n\n parent.render(el);\n },\n\n componentDidUpdate() {\n\n if (this.state && this.state.parent) {\n this.state.parent.updateProps(extend({}, this.props));\n }\n },\n\n componentWillUnmount() {\n if (this.state && this.state.parent) {\n this.state.parent.destroy();\n }\n }\n });\n } else {\n // $FlowFixMe\n component.react = class extends React.Component {\n render() : ReactElementType {\n return React.createElement('div', null);\n }\n\n componentDidMount() {\n component.log(`instantiate_react_component`);\n\n let el = ReactDOM.findDOMNode(this);\n\n let parent = component.init(extend({}, this.props), null, el);\n\n this.setState({ parent });\n\n parent.render(el);\n }\n\n componentDidUpdate() {\n\n if (this.state && this.state.parent) {\n this.state.parent.updateProps(extend({}, this.props));\n }\n }\n\n componentWillUnmount() {\n if (this.state && this.state.parent) {\n this.state.parent.destroy();\n }\n }\n };\n }\n\n return component.react;\n }\n};\n","/* @flow */\n\nimport type { Component, ComponentDriverType } from '../component/component';\nimport { extend } from '../lib';\n\ntype VueComponent = {\n render : (Function) => Element,\n inheritAttrs : boolean,\n mounted : () => void,\n beforeUpdate : () => void\n};\n\nexport let vue : ComponentDriverType<*, void> = {\n\n global() {\n // pass\n },\n\n register

(component : Component

) : VueComponent {\n\n return {\n render(createElement) : Element {\n return createElement('div');\n },\n\n inheritAttrs: false,\n\n mounted() {\n let el = this.$el;\n\n // $FlowFixMe\n this.parent = component.init(extend({}, this.$attrs), null, el);\n\n this.parent.render(el);\n },\n\n beforeUpdate() {\n \n if (this.parent && this.$attrs) {\n this.parent.updateProps(extend({}, this.$attrs));\n }\n }\n };\n }\n};\n","/* @flow */\n\nimport { dasherizeToCamel, replaceObject } from '../lib';\nimport type { Component, ComponentDriverType } from '../component/component';\n\ntype AngularModule = {\n directive : (string, () => {\n scope : { [string] : '=' | '@' },\n restrict : string,\n controller : Array\n }) => AngularModule\n};\n\ntype Angular = {\n module : (string, Array) => AngularModule\n};\n\nexport let angular : ComponentDriverType<*, Angular> = {\n\n global() : ?Angular {\n return window.angular;\n },\n\n register(component : Component<*>, ng : Angular) : AngularModule {\n\n let module = ng.module(component.tag, []).directive(dasherizeToCamel(component.tag), () => {\n\n let scope = {};\n\n for (let key of component.getPropNames()) {\n scope[key] = '=';\n }\n\n if (component.looseProps) {\n scope.props = '=';\n }\n\n return {\n scope,\n\n restrict: 'E',\n\n controller: [ '$scope', '$element', ($scope, $element) => {\n\n if (component.looseProps && !$scope.props) {\n throw new Error(`For angular bindings to work, prop definitions must be passed to zoid.create`);\n }\n\n component.log(`instantiate_angular_component`);\n\n function safeApply() {\n if ($scope.$root.$$phase !== '$apply' && $scope.$root.$$phase !== '$digest') {\n try {\n $scope.$apply();\n } catch (err) {\n // pass\n }\n }\n }\n\n let getProps = () => {\n\n let scopeProps;\n\n if ($scope.props) {\n scopeProps = $scope.props;\n } else {\n scopeProps = {};\n for (let key of Object.keys(scope)) {\n if ($scope[key] !== undefined) {\n scopeProps[key] = $scope[key];\n }\n }\n }\n\n scopeProps = replaceObject(scopeProps, {\n 'function': (value) => {\n return function angularWrapped() : mixed {\n let result = value.apply(this, arguments);\n safeApply();\n return result;\n };\n }\n });\n\n return scopeProps;\n };\n\n let parent = component.init(getProps(), null, $element[0]);\n parent.render($element[0]);\n\n $scope.$watch(() => {\n parent.updateProps(getProps());\n });\n } ]\n };\n });\n\n return module;\n }\n};\n","/* @flow */\n\nimport type { Component, ComponentDriverType } from '../component/component';\n\ndeclare class GlimmerComponentType {\n element : HTMLElement,\n args : Object\n}\n\nexport let glimmer : ComponentDriverType<*, (typeof GlimmerComponentType)> = {\n\n global() {\n // pass\n },\n\n register(component : Component<*>, GlimmerComponent : (typeof GlimmerComponentType)) : (typeof GlimmerComponentType) {\n return class extends GlimmerComponent {\n didInsertElement() {\n component.render({ ...this.args }, this.element);\n }\n };\n }\n};\n","/* @flow */\n/* eslint new-cap: 0 */\n\nimport { replaceObject } from '../lib';\nimport type { Component, ComponentDriverType } from '../component/component';\n\ntype Angular2Injection = {};\n\ntype Angular2Component = {};\n\ntype Angular2Module = {};\n\ntype Angular2 = {\n Component : ({ selector : string, template : string, inputs : Array }) => {\n Class : ({ constructor : Array, ngOnInit : () => void, ngOnChanges : () => void }) => Angular2Component\n },\n NgModule : ({ declarations : Array, exports : Array }) => {\n Class : ({ constructor : () => void }) => Angular2Module\n },\n ElementRef : Angular2Injection,\n NgZone : Angular2Injection\n};\n\n\nexport let angular2 : ComponentDriverType<*, Angular2> = {\n\n global() {\n // pass\n },\n\n register(zoid : Component<*>, { Component : AngularComponent, NgModule, ElementRef, NgZone }) : Angular2Module {\n\n zoid.log('initializing angular2 component');\n\n let getProps = (component) => {\n return replaceObject({ ...component.internalProps, ...component.props }, {\n 'function': (value) => {\n if (typeof value === 'function') {\n return function angular2Wrapped() : void {\n return component.zone.run(() => value.apply(this, arguments));\n };\n }\n }\n });\n };\n\n const ComponentInstance =\n AngularComponent({\n selector: zoid.tag,\n template: '

',\n inputs: [ 'props' ]\n }).Class({\n constructor: [ ElementRef, NgZone, function angularConstructor(elementRef, zone) {\n this.elementRef = elementRef;\n this.zone = zone;\n } ],\n ngOnInit () {\n const targetElement = this.elementRef.nativeElement;\n const parent = zoid.init(getProps(this), null, targetElement);\n parent.render(targetElement);\n this.parent = parent;\n },\n ngOnChanges() {\n if (this.parent) {\n this.parent.updateProps(getProps(this));\n }\n }\n });\n\n\n const ModuleInstance = NgModule({\n declarations: [ ComponentInstance ],\n exports: [ ComponentInstance ]\n }).Class({\n constructor () {\n // pass\n }\n });\n\n return ModuleInstance;\n }\n};\n","/*!\n * Bowser - a browser detector\n * https://github.com/ded/bowser\n * MIT License | (c) Dustin Diaz 2015\n */\n!function(e,t,n){typeof module!=\"undefined\"&&module.exports?module.exports=n():typeof define==\"function\"&&define.amd?define(t,n):e[t]=n()}(this,\"bowser\",function(){function t(t){function n(e){var n=t.match(e);return n&&n.length>1&&n[1]||\"\"}function r(e){var n=t.match(e);return n&&n.length>1&&n[2]||\"\"}function C(e){switch(e){case\"NT\":return\"NT\";case\"XP\":return\"XP\";case\"NT 5.0\":return\"2000\";case\"NT 5.1\":return\"XP\";case\"NT 5.2\":return\"2003\";case\"NT 6.0\":return\"Vista\";case\"NT 6.1\":return\"7\";case\"NT 6.2\":return\"8\";case\"NT 6.3\":return\"8.1\";case\"NT 10.0\":return\"10\";default:return undefined}}var i=n(/(ipod|iphone|ipad)/i).toLowerCase(),o=/like android/i.test(t),u=!o&&/android/i.test(t),a=/nexus\\s*[0-6]\\s*/i.test(t),f=!a&&/nexus\\s*[0-9]+/i.test(t),l=/CrOS/.test(t),c=/silk/i.test(t),h=/sailfish/i.test(t),p=/tizen/i.test(t),d=/(web|hpw)(o|0)s/i.test(t),v=/windows phone/i.test(t),m=/SamsungBrowser/i.test(t),g=!v&&/windows/i.test(t),y=!i&&!c&&/macintosh/i.test(t),b=!u&&!h&&!p&&!d&&/linux/i.test(t),w=r(/edg([ea]|ios)\\/(\\d+(\\.\\d+)?)/i),E=n(/version\\/(\\d+(\\.\\d+)?)/i),S=/tablet/i.test(t)&&!/tablet pc/i.test(t),x=!S&&/[^-]mobi/i.test(t),T=/xbox/i.test(t),N;/opera/i.test(t)?N={name:\"Opera\",opera:e,version:E||n(/(?:opera|opr|opios)[\\s\\/](\\d+(\\.\\d+)?)/i)}:/opr\\/|opios/i.test(t)?N={name:\"Opera\",opera:e,version:n(/(?:opr|opios)[\\s\\/](\\d+(\\.\\d+)?)/i)||E}:/SamsungBrowser/i.test(t)?N={name:\"Samsung Internet for Android\",samsungBrowser:e,version:E||n(/(?:SamsungBrowser)[\\s\\/](\\d+(\\.\\d+)?)/i)}:/Whale/i.test(t)?N={name:\"NAVER Whale browser\",whale:e,version:n(/(?:whale)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/MZBrowser/i.test(t)?N={name:\"MZ Browser\",mzbrowser:e,version:n(/(?:MZBrowser)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/coast/i.test(t)?N={name:\"Opera Coast\",coast:e,version:E||n(/(?:coast)[\\s\\/](\\d+(\\.\\d+)?)/i)}:/focus/i.test(t)?N={name:\"Focus\",focus:e,version:n(/(?:focus)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/yabrowser/i.test(t)?N={name:\"Yandex Browser\",yandexbrowser:e,version:E||n(/(?:yabrowser)[\\s\\/](\\d+(\\.\\d+)?)/i)}:/ucbrowser/i.test(t)?N={name:\"UC Browser\",ucbrowser:e,version:n(/(?:ucbrowser)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/mxios/i.test(t)?N={name:\"Maxthon\",maxthon:e,version:n(/(?:mxios)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/epiphany/i.test(t)?N={name:\"Epiphany\",epiphany:e,version:n(/(?:epiphany)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/puffin/i.test(t)?N={name:\"Puffin\",puffin:e,version:n(/(?:puffin)[\\s\\/](\\d+(?:\\.\\d+)?)/i)}:/sleipnir/i.test(t)?N={name:\"Sleipnir\",sleipnir:e,version:n(/(?:sleipnir)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:/k-meleon/i.test(t)?N={name:\"K-Meleon\",kMeleon:e,version:n(/(?:k-meleon)[\\s\\/](\\d+(?:\\.\\d+)+)/i)}:v?(N={name:\"Windows Phone\",osname:\"Windows Phone\",windowsphone:e},w?(N.msedge=e,N.version=w):(N.msie=e,N.version=n(/iemobile\\/(\\d+(\\.\\d+)?)/i))):/msie|trident/i.test(t)?N={name:\"Internet Explorer\",msie:e,version:n(/(?:msie |rv:)(\\d+(\\.\\d+)?)/i)}:l?N={name:\"Chrome\",osname:\"Chrome OS\",chromeos:e,chromeBook:e,chrome:e,version:n(/(?:chrome|crios|crmo)\\/(\\d+(\\.\\d+)?)/i)}:/edg([ea]|ios)/i.test(t)?N={name:\"Microsoft Edge\",msedge:e,version:w}:/vivaldi/i.test(t)?N={name:\"Vivaldi\",vivaldi:e,version:n(/vivaldi\\/(\\d+(\\.\\d+)?)/i)||E}:h?N={name:\"Sailfish\",osname:\"Sailfish OS\",sailfish:e,version:n(/sailfish\\s?browser\\/(\\d+(\\.\\d+)?)/i)}:/seamonkey\\//i.test(t)?N={name:\"SeaMonkey\",seamonkey:e,version:n(/seamonkey\\/(\\d+(\\.\\d+)?)/i)}:/firefox|iceweasel|fxios/i.test(t)?(N={name:\"Firefox\",firefox:e,version:n(/(?:firefox|iceweasel|fxios)[ \\/](\\d+(\\.\\d+)?)/i)},/\\((mobile|tablet);[^\\)]*rv:[\\d\\.]+\\)/i.test(t)&&(N.firefoxos=e,N.osname=\"Firefox OS\")):c?N={name:\"Amazon Silk\",silk:e,version:n(/silk\\/(\\d+(\\.\\d+)?)/i)}:/phantom/i.test(t)?N={name:\"PhantomJS\",phantom:e,version:n(/phantomjs\\/(\\d+(\\.\\d+)?)/i)}:/slimerjs/i.test(t)?N={name:\"SlimerJS\",slimer:e,version:n(/slimerjs\\/(\\d+(\\.\\d+)?)/i)}:/blackberry|\\bbb\\d+/i.test(t)||/rim\\stablet/i.test(t)?N={name:\"BlackBerry\",osname:\"BlackBerry OS\",blackberry:e,version:E||n(/blackberry[\\d]+\\/(\\d+(\\.\\d+)?)/i)}:d?(N={name:\"WebOS\",osname:\"WebOS\",webos:e,version:E||n(/w(?:eb)?osbrowser\\/(\\d+(\\.\\d+)?)/i)},/touchpad\\//i.test(t)&&(N.touchpad=e)):/bada/i.test(t)?N={name:\"Bada\",osname:\"Bada\",bada:e,version:n(/dolfin\\/(\\d+(\\.\\d+)?)/i)}:p?N={name:\"Tizen\",osname:\"Tizen\",tizen:e,version:n(/(?:tizen\\s?)?browser\\/(\\d+(\\.\\d+)?)/i)||E}:/qupzilla/i.test(t)?N={name:\"QupZilla\",qupzilla:e,version:n(/(?:qupzilla)[\\s\\/](\\d+(?:\\.\\d+)+)/i)||E}:/chromium/i.test(t)?N={name:\"Chromium\",chromium:e,version:n(/(?:chromium)[\\s\\/](\\d+(?:\\.\\d+)?)/i)||E}:/chrome|crios|crmo/i.test(t)?N={name:\"Chrome\",chrome:e,version:n(/(?:chrome|crios|crmo)\\/(\\d+(\\.\\d+)?)/i)}:u?N={name:\"Android\",version:E}:/safari|applewebkit/i.test(t)?(N={name:\"Safari\",safari:e},E&&(N.version=E)):i?(N={name:i==\"iphone\"?\"iPhone\":i==\"ipad\"?\"iPad\":\"iPod\"},E&&(N.version=E)):/googlebot/i.test(t)?N={name:\"Googlebot\",googlebot:e,version:n(/googlebot\\/(\\d+(\\.\\d+))/i)||E}:N={name:n(/^(.*)\\/(.*) /),version:r(/^(.*)\\/(.*) /)},!N.msedge&&/(apple)?webkit/i.test(t)?(/(apple)?webkit\\/537\\.36/i.test(t)?(N.name=N.name||\"Blink\",N.blink=e):(N.name=N.name||\"Webkit\",N.webkit=e),!N.version&&E&&(N.version=E)):!N.opera&&/gecko\\//i.test(t)&&(N.name=N.name||\"Gecko\",N.gecko=e,N.version=N.version||n(/gecko\\/(\\d+(\\.\\d+)?)/i)),!N.windowsphone&&(u||N.silk)?(N.android=e,N.osname=\"Android\"):!N.windowsphone&&i?(N[i]=e,N.ios=e,N.osname=\"iOS\"):y?(N.mac=e,N.osname=\"macOS\"):T?(N.xbox=e,N.osname=\"Xbox\"):g?(N.windows=e,N.osname=\"Windows\"):b&&(N.linux=e,N.osname=\"Linux\");var k=\"\";N.windows?k=C(n(/Windows ((NT|XP)( \\d\\d?.\\d)?)/i)):N.windowsphone?k=n(/windows phone (?:os)?\\s?(\\d+(\\.\\d+)*)/i):N.mac?(k=n(/Mac OS X (\\d+([_\\.\\s]\\d+)*)/i),k=k.replace(/[_\\s]/g,\".\")):i?(k=n(/os (\\d+([_\\s]\\d+)*) like mac os x/i),k=k.replace(/[_\\s]/g,\".\")):u?k=n(/android[ \\/-](\\d+(\\.\\d+)*)/i):N.webos?k=n(/(?:web|hpw)os\\/(\\d+(\\.\\d+)*)/i):N.blackberry?k=n(/rim\\stablet\\sos\\s(\\d+(\\.\\d+)*)/i):N.bada?k=n(/bada\\/(\\d+(\\.\\d+)*)/i):N.tizen&&(k=n(/tizen[\\/\\s](\\d+(\\.\\d+)*)/i)),k&&(N.osversion=k);var L=!N.windows&&k.split(\".\")[0];if(S||f||i==\"ipad\"||u&&(L==3||L>=4&&!x)||N.silk)N.tablet=e;else if(x||i==\"iphone\"||i==\"ipod\"||u||a||N.blackberry||N.webos||N.bada)N.mobile=e;return N.msedge||N.msie&&N.version>=10||N.yandexbrowser&&N.version>=15||N.vivaldi&&N.version>=1||N.chrome&&N.version>=20||N.samsungBrowser&&N.version>=4||N.whale&&s([N.version,\"1.0\"])===1||N.mzbrowser&&s([N.version,\"6.0\"])===1||N.focus&&s([N.version,\"1.0\"])===1||N.firefox&&N.version>=20||N.safari&&N.version>=6||N.opera&&N.version>=10||N.ios&&N.osversion&&N.osversion.split(\".\")[0]>=6||N.blackberry&&N.version>=10.1||N.chromium&&N.version>=20?N.a=e:N.msie&&N.version<10||N.chrome&&N.version<20||N.firefox&&N.version<20||N.safari&&N.version<6||N.opera&&N.version<10||N.ios&&N.osversion&&N.osversion.split(\".\")[0]<6||N.chromium&&N.version<20?N.c=e:N.x=e,N}function r(e){return e.split(\".\").length}function i(e,t){var n=[],r;if(Array.prototype.map)return Array.prototype.map.call(e,t);for(r=0;r=0){if(n[0][t]>n[1][t])return 1;if(n[0][t]!==n[1][t])return-1;if(t===0)return 0}}function o(e,r,i){var o=n;typeof r==\"string\"&&(i=r,r=void 0),r===void 0&&(r=!1),i&&(o=t(i));var u=\"\"+o.version;for(var a in e)if(e.hasOwnProperty(a)&&o[a]){if(typeof e[a]!=\"string\")throw new Error(\"Browser version in the minVersion map should be a string: \"+a+\": \"+String(e));return s([u,e[a]])<0}return r}function u(e,t,n){return!o(e,t,n)}var e=!0,n=t(typeof navigator!=\"undefined\"?navigator.userAgent||\"\":\"\");return n.test=function(e){for(var t=0;t\\n \\n \\n \\n \\n \\n \\n \\n \\n\\n\"","module.exports = \"\\n \\n \\n \\n\\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n \\n \\n \\n \\n \\n \\n \\n\\n\"","module.exports = \"\\n\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n \\n \\n \\n \\n \\n \\n \\n\\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n\\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"\\n\\n \\n unionpay\\n Created with Sketch.\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"","/* @flow */\n\nimport { beacon } from './lib/beacon';\nimport { extendNamespace } from './lib/namespace';\nimport { stringifyError } from './lib/util';\nimport { isPayPalDomain } from './lib/security';\n\nif (!__PAYPAL_CHECKOUT__.__MAJOR__ && !isPayPalDomain() && !__TEST__) {\n throw new Error(`Do not integrate with versioned script url`);\n}\n\nif (window.paypal && window.paypal.version === __PAYPAL_CHECKOUT__.__MINOR_VERSION__) {\n\n beacon('bootstrap_already_loaded_same_version', {\n version: __PAYPAL_CHECKOUT__.__MINOR_VERSION__\n });\n\n throw new Error(`PayPal Checkout Integration Script with same version (${ __PAYPAL_CHECKOUT__.__MINOR_VERSION__ }) already loaded on page`);\n\n} else if (window.paypal && window.paypal.version && window.paypal.version !== __PAYPAL_CHECKOUT__.__MINOR_VERSION__ && window.paypal.Button && window.paypal.Button.render) {\n\n beacon('bootstrap_already_loaded_different_version', {\n existingVersion: window.paypal.version,\n version: __PAYPAL_CHECKOUT__.__MINOR_VERSION__\n });\n\n throw new Error(`PayPal Checkout Integration Script with different version (${ window.paypal.version }) already loaded on page, current version: ${ __PAYPAL_CHECKOUT__.__MINOR_VERSION__ }`);\n\n} else {\n\n try {\n const _interface = require('./index');\n extendNamespace(_interface, [ 'paypal', 'PAYPAL', 'ppxo' ], [ 'apps' ]);\n\n } catch (err) {\n\n beacon('bootstrap_error', {\n error: stringifyError(err),\n errtype: ({}).toString.call(err)\n });\n\n throw err;\n }\n}\n","/* @flow */\n\nexport { openBridge, linkUrl, isBridge, needsBridge, needsBridgeForBrowser, hasBridge,\n needsBridgeForWin, needsBridgeForDomain, openTunnelToOpener, destroyBridges } from './index';\n","/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\n","module.exports = function() {\n\tthrow new Error(\"define cannot be used indirect\");\n};\n","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object.keys(descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object.defineProperty(target, property, desc);\n desc = null;\n }\n\n return desc;\n}","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { on } from 'post-robot/src';\nimport { type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { copyProp, eventEmitter, type EventEmitterType, stringifyError, noop } from '../lib';\nimport type { CancelableType } from '../types';\n\nimport type { Component } from './component';\n\ntype CleanupType = {\n set : (string, T) => T, // eslint-disable-line no-undef\n register : (string | Function, ?Function) => void,\n hasTasks : () => boolean,\n all : () => ZalgoPromise,\n run : (string) => ZalgoPromise\n};\n\nfunction cleanup(obj : Object) : CleanupType {\n\n let tasks = [];\n let cleaned = false;\n\n return {\n\n set(name : string, item : T) : T {\n\n if (cleaned) {\n return item;\n }\n\n obj[name] = item;\n this.register(() => {\n delete obj[name];\n });\n return item;\n },\n\n register(name : string | Function, method : ?Function) {\n\n if (typeof name === 'function') {\n method = name;\n name = '';\n }\n\n if (typeof method !== 'function') {\n throw new TypeError(`Expected to be passed function to clean.register`);\n }\n\n if (cleaned) {\n method();\n return;\n }\n\n tasks.push({\n complete: false,\n\n name,\n\n run() {\n\n if (this.complete) {\n return;\n }\n\n this.complete = true;\n\n if (method) {\n method();\n }\n }\n });\n },\n\n hasTasks() : boolean {\n return Boolean(tasks.filter(item => !item.complete).length);\n },\n\n all() : ZalgoPromise {\n let results = [];\n\n cleaned = true;\n\n while (tasks.length) {\n results.push(tasks.pop().run());\n }\n\n return ZalgoPromise.all(results).then(() => { /* pass */ });\n },\n\n run(name : string) : ZalgoPromise {\n let results = [];\n\n for (let item of tasks) {\n if (item.name === name) {\n results.push(item.run());\n }\n }\n\n return ZalgoPromise.all(results).then(noop);\n }\n };\n}\n\n\n/* Base Component\n --------------\n\n Methods that are common between child and parent components, but are not generic or uncoupled enough to live in\n a separate library.\n*/\n\nexport class BaseComponent

{\n\n clean : CleanupType\n event : EventEmitterType\n component : Component

\n\n constructor() {\n this.clean = cleanup(this);\n this.event = eventEmitter();\n }\n\n addProp(options : Object, name : string, def : mixed) {\n copyProp(options, this, name, def);\n }\n\n on(eventName : string, handler : () => void) : CancelableType {\n return this.event.on(eventName, handler);\n }\n\n listeners() {\n throw new Error(`Expected listeners to be implemented`);\n }\n\n error(err : mixed) : ZalgoPromise {\n throw new Error(`Expected error to be implemented - got ${ stringifyError(err) }`);\n }\n\n /* Listen\n ------\n\n Listen for any post messages defined in this.listeners(). All (most) of our communication is done via\n post-messages, so this sets up an easy way to create a collection of listeners in one go.\n\n All post-messaging is done using post-robot.\n */\n\n listen(win : CrossDomainWindowType, domain : string | RegExp) {\n\n if (!win) {\n throw this.component.createError(`window to listen to not set`);\n }\n\n if (!domain) {\n throw new Error(`Must pass domain to listen to`);\n }\n\n if (!this.listeners) {\n return;\n }\n\n let listeners = this.listeners();\n\n for (let listenerName of Object.keys(listeners)) {\n\n let name = listenerName.replace(/^zoid_/, '');\n\n let errorHandler = (err) => {\n this.error(err);\n };\n\n let listener = on(listenerName, { window: win, domain, errorHandler }, ({ source, data }) => {\n this.component.log(`listener_${ name }`);\n return listeners[listenerName].call(this, source, data);\n });\n\n let errorListener = on(listenerName, { window: win, errorHandler }, ({ origin }) => {\n this.component.logError(`unexpected_listener_${ name }`, { origin, domain: domain.toString() });\n this.error(new Error(`Unexpected ${ name } message from domain ${ origin } -- expected message from ${ domain.toString() }`));\n });\n\n this.clean.register(() => {\n listener.cancel();\n errorListener.cancel();\n });\n }\n }\n}\n","/* @flow */\n\nimport { getOpener, getTop, getParent, getNthParentFromTop, getAllFramesInWindow, getAncestor, getDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport base32 from 'hi-base32';\n\nimport { memoize, uniqueID, globalFor, stringifyError } from '../lib';\nimport { WINDOW_REFERENCES } from '../constants';\nimport type { DimensionsType, PositionType } from '../types';\n\n\nfunction normalize(str : string) : string {\n return str.replace(/^[^a-z0-9A-Z]+|[^a-z0-9A-Z]+$/g, '').replace(/[^a-z0-9A-Z]+/g, '_');\n}\n\nfunction encode(str : string) : string {\n return base32.encode(str).replace(/\\=/g, '').toLowerCase(); // eslint-disable-line no-useless-escape\n}\n\nfunction decode(str : string) : string {\n return base32.decode(str.toUpperCase());\n}\n\n\n/* Build Child Window Name\n -----------------------\n\n Build a name for our child window. This should identify the following things to the child:\n\n - That the window was created by, and is owned by zoid\n - The name of the child's parent. This is so the child can identify which window created it, even when we do a\n renderTo, in which case the true parent may actually be a sibling frame in the window hierarchy\n\n We base64 encode the window name so IE doesn't die when it encounters any characters that it doesn't like.\n*/\n\nexport function buildChildWindowName(name : string, version : string, options : Object = {}) : string {\n\n options.id = uniqueID();\n options.domain = getDomain(window);\n\n let encodedName = normalize(name);\n let encodedVersion = normalize(version);\n let encodedOptions = encode(JSON.stringify(options));\n\n if (!encodedName) {\n throw new Error(`Invalid name: ${ name } - must contain alphanumeric characters`);\n }\n\n if (!encodedVersion) {\n throw new Error(`Invalid version: ${ version } - must contain alphanumeric characters`);\n }\n\n return [\n 'xcomponent',\n encodedName,\n encodedVersion,\n encodedOptions,\n ''\n ].join('__');\n}\n\nexport let isZoidComponentWindow = memoize(() => {\n if (!window.name) {\n return false;\n }\n\n let [ zoidcomp ] = window.name.split('__');\n\n if (zoidcomp !== 'xcomponent') {\n return false;\n }\n\n return true;\n});\n\n/* Parse Window Name\n -----------------\n\n The inverse of buildChildWindowName. Base64 decodes and json parses the window name to get the original props\n passed down, including the parent name. Only accepts window names built by zoid\n*/\n\nexport let getComponentMeta = memoize(() => {\n\n if (!window.name) {\n throw new Error(`Can not get component meta without window name`);\n }\n\n let [ zoidcomp, name, version, encodedOptions ] = window.name.split('__');\n\n if (zoidcomp !== 'xcomponent') {\n throw new Error(`Window not rendered by zoid - got ${ zoidcomp }`);\n }\n\n let componentMeta;\n\n try {\n componentMeta = JSON.parse(decode(encodedOptions));\n } catch (err) {\n throw new Error(`Can not decode component-meta: ${ encodedOptions } ${ stringifyError(err) }`);\n }\n\n componentMeta.name = name;\n componentMeta.version = version.replace(/_/g, '.');\n\n return componentMeta;\n});\n\nexport function getParentDomain() : string {\n return getComponentMeta().domain; // How does this work for renderTo..?\n}\n\nfunction getWindowByRef({ ref, uid, distance } : { ref : string, uid : string, distance : number }) : CrossDomainWindowType {\n\n let result;\n\n if (ref === WINDOW_REFERENCES.OPENER) {\n result = getOpener(window);\n\n } else if (ref === WINDOW_REFERENCES.TOP) {\n result = getTop(window);\n\n } else if (ref === WINDOW_REFERENCES.PARENT) {\n\n if (distance) {\n result = getNthParentFromTop(window, distance);\n } else {\n result = getParent(window);\n }\n }\n\n if (ref === WINDOW_REFERENCES.GLOBAL) {\n let ancestor = getAncestor(window);\n\n if (ancestor) {\n for (let frame of getAllFramesInWindow(ancestor)) {\n let global = globalFor(frame);\n\n if (global && global.windows && global.windows[uid]) {\n result = global.windows[uid];\n break;\n }\n }\n }\n }\n\n if (!result) {\n throw new Error(`Unable to find window by ref`);\n }\n\n return result;\n}\n\n/* Get Parent Component Window\n ---------------------------\n\n Get the parent component window, which may be different from the actual parent window\n*/\n\nexport let getParentComponentWindow = memoize(() => {\n\n let componentMeta = getComponentMeta();\n\n if (!componentMeta) {\n throw new Error(`Can not get parent component window - window not rendered by zoid`);\n }\n\n return getWindowByRef(componentMeta.componentParent);\n});\n\n\nexport let getParentRenderWindow = memoize(() => {\n\n let componentMeta = getComponentMeta();\n\n if (!componentMeta) {\n throw new Error(`Can not get parent component window - window not rendered by zoid`);\n }\n\n return getWindowByRef(componentMeta.renderParent);\n});\n\n\n/* Get Position\n ------------\n\n Calculate the position for the popup\n\n This is either\n - Specified by the user\n - The center of the screen\n\n I'd love to do this with pure css, but alas... popup windows :(\n*/\n\nexport function getPosition({ width, height } : DimensionsType) : PositionType {\n\n let x = 0;\n let y = 0;\n\n if (width) {\n if (window.outerWidth) {\n x = Math.round((window.outerWidth - width) / 2) + window.screenX;\n } else if (window.screen.width) {\n x = Math.round((window.screen.width - width) / 2);\n }\n }\n\n if (height) {\n if (window.outerHeight) {\n y = Math.round((window.outerHeight - height) / 2) + window.screenY;\n } else if (window.screen.height) {\n y = Math.round((window.screen.height - height) / 2);\n }\n }\n\n return { x, y };\n}\n","/* @flow */\n\nimport { getDomain } from 'cross-domain-utils/src';\n\nimport type { Component } from '../component';\nimport type { BuiltInPropsType, MixedPropDefinitionType } from '../component/props';\n\nexport function normalizeChildProp(component : Component

, props : (BuiltInPropsType & P), key : string, value : T) : ?T {\n\n // $FlowFixMe\n let prop : MixedPropDefinitionType

= component.getProp(key);\n\n if (!prop) {\n if (component.looseProps) {\n return value;\n } else {\n return;\n }\n }\n\n if (typeof prop.childDecorate === 'function') {\n return prop.childDecorate(value);\n }\n\n return value;\n}\n\n\nexport function normalizeChildProps

(component : Component

, props : (BuiltInPropsType & P), origin : string, required : boolean = true) : (BuiltInPropsType & P) {\n\n let result = {};\n\n for (let key of Object.keys(props)) {\n\n let prop = component.getProp(key);\n let value = props[key];\n\n if (prop && prop.sameDomain && origin !== getDomain(window)) {\n continue;\n }\n\n result[key] = normalizeChildProp(component, props, key, value);\n\n if (prop && prop.alias && !result[prop.alias]) {\n result[prop.alias] = value;\n }\n }\n\n if (required) {\n for (let key of component.getPropNames()) {\n if (!props.hasOwnProperty(key)) {\n result[key] = normalizeChildProp(component, props, key, props[key]);\n }\n }\n }\n\n // $FlowFixMe\n return result;\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { flush } from 'beaver-logger/client';\nimport { isSameDomain, matchDomain, getDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { send } from 'post-robot/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { onResize } from 'belter/src';\n\nimport { BaseComponent } from '../base';\nimport { getParentComponentWindow, getComponentMeta, getParentDomain, getParentRenderWindow } from '../window';\nimport { extend, deserializeFunctions, get, stringify,\n globalFor, setLogLevel, getElement, noop, stringifyError } from '../../lib';\nimport { POST_MESSAGE, CONTEXT_TYPES, CLOSE_REASONS, INITIAL_PROPS } from '../../constants';\nimport { RenderError } from '../../error';\nimport type { Component } from '../component';\nimport type { BuiltInPropsType } from '../component/props';\n\nimport { normalizeChildProps } from './props';\n\nexport type ChildExportsType

= {\n updateProps : (props : (BuiltInPropsType & P)) => ZalgoPromise,\n close : () => ZalgoPromise\n};\n\n/* Child Component\n ---------------\n\n This is the portion of code which runs inside the frame or popup window containing the component's implementation.\n\n When the component author calls myComponent.attach(), it creates a new instance of ChildComponent, which is then\n responsible for managing the state and messaging back up to the parent, and providing props for the component to\n utilize.\n*/\n\nexport class ChildComponent

extends BaseComponent

{\n\n component : Component

\n props : BuiltInPropsType & P\n context : string\n\n onPropHandlers : Array<(BuiltInPropsType & P) => void>\n onInit : ZalgoPromise>\n watchingForResize : boolean\n autoResize : { width : boolean, height : boolean, element? : string }\n\n constructor(component : Component

) {\n super();\n this.component = component;\n\n if (!this.hasValidParentDomain()) {\n this.error(new RenderError(`Can not be rendered by domain: ${ this.getParentDomain() }`));\n return;\n }\n\n this.component.log(`construct_child`);\n\n // The child can specify some default props if none are passed from the parent. This often makes integrations\n // a little more seamless, as applicaiton code can call props.foo() without worrying about whether the parent\n // has provided them or not, and fall-back to some default behavior.\n\n this.onPropHandlers = [];\n\n for (let item of [ this.component, window ]) {\n for (let [ name, getter ] of [ [ 'xchild', () => this ], [ 'xprops', () => this.props ] ]) {\n // $FlowFixMe\n Object.defineProperty(item, name, {\n configurable: true,\n get: () => {\n if (!this.props) {\n this.setProps(this.getInitialProps(), getParentDomain());\n }\n // $FlowFixMe\n delete item[name];\n // $FlowFixMe\n item[name] = getter();\n // $FlowFixMe\n return item[name];\n }\n });\n }\n }\n\n this.component.log(`init_child`);\n\n this.setWindows();\n\n // Send an init message to our parent. This gives us an initial set of data to use that we can use to function.\n //\n // For example:\n //\n // - What context are we\n // - What props has the parent specified\n\n this.onInit = this.sendToParent(POST_MESSAGE.INIT, {\n\n exports: this.exports()\n\n }).then(({ origin, data }) => {\n\n this.context = data.context;\n this.setProps(data.props, origin);\n\n this.watchForResize();\n\n return this;\n\n }).catch(err => {\n\n this.error(err);\n throw err;\n });\n }\n\n hasValidParentDomain() : boolean {\n return matchDomain(this.component.allowedParentDomains, this.getParentDomain());\n }\n\n init() : ZalgoPromise> {\n return this.onInit;\n }\n\n getParentDomain() : string {\n return getParentDomain();\n }\n\n onProps(handler : Function) {\n this.onPropHandlers.push(handler);\n }\n\n getParentComponentWindow() : CrossDomainWindowType {\n return getParentComponentWindow();\n }\n\n getParentRenderWindow() : CrossDomainWindowType {\n return getParentRenderWindow();\n }\n\n getInitialProps() : (BuiltInPropsType & P) {\n let componentMeta = getComponentMeta();\n\n let props = componentMeta.props;\n\n if (props.type === INITIAL_PROPS.RAW) {\n props = props.value;\n } else if (props.type === INITIAL_PROPS.UID) {\n\n let parentComponentWindow = getParentComponentWindow();\n\n if (!isSameDomain(parentComponentWindow)) {\n\n if (window.location.protocol === 'file:') {\n throw new Error(`Can not get props from file:// domain`);\n }\n\n throw new Error(`Parent component window is on a different domain - expected ${ getDomain() } - can not retrieve props`);\n }\n\n let global = globalFor(parentComponentWindow);\n\n if (!global) {\n throw new Error(`Can not find global for parent component - can not retrieve props`);\n }\n\n props = JSON.parse(global.props[componentMeta.uid]);\n\n } else {\n throw new Error(`Unrecognized props type: ${ props.type }`);\n }\n\n if (!props) {\n throw new Error(`Initial props not found`);\n }\n \n return deserializeFunctions(props, ({ fullKey, self, args }) => {\n return this.onInit.then(() => {\n let func = get(this.props, fullKey);\n\n if (typeof func !== 'function') {\n throw new TypeError(`Expected ${ fullKey } to be function, got ${ typeof func }`);\n }\n\n return func.apply(self, args);\n });\n });\n }\n\n\n setProps(props : (BuiltInPropsType & P), origin : string, required : boolean = true) {\n // $FlowFixMe\n this.props = this.props || {};\n let normalizedProps = normalizeChildProps(this.component, props, origin, required);\n extend(this.props, normalizedProps);\n if (this.props.logLevel) {\n setLogLevel(this.props.logLevel);\n }\n for (let handler of this.onPropHandlers) {\n handler.call(this, this.props);\n }\n }\n\n\n /* Send to Parent\n --------------\n\n Send a post message to our parent window.\n */\n\n sendToParent(name : string, data : ?Object = {}, options : ?Object = {}) : ZalgoPromise<{ origin : string, source : CrossDomainWindowType, data : Object }> {\n let parentWindow = getParentComponentWindow();\n\n if (!parentWindow) {\n throw new Error(`Can not find parent component window to message`);\n }\n\n this.component.log(`send_to_parent_${ name }`);\n\n return send(parentWindow, name, data, { domain: getParentDomain(), ...options });\n }\n\n\n /* Set Windows\n -----------\n\n Determine the parent window, and the parent component window. Note -- these may be different, if we were\n rendered using renderTo.\n */\n\n setWindows() {\n\n\n // Ensure we do not try to .attach() multiple times for the same component on the same page\n\n if (window.__activeZoidComponent__) {\n throw this.component.createError(`Can not attach multiple components to the same window`);\n }\n\n window.__activeZoidComponent__ = this;\n\n // Get the direct parent window\n\n if (!getParentComponentWindow()) {\n throw this.component.createError(`Can not find parent window`);\n }\n\n let componentMeta = getComponentMeta();\n\n if (componentMeta.tag !== this.component.tag) {\n throw this.component.createError(`Parent is ${ componentMeta.tag } - can not attach ${ this.component.tag }`);\n }\n\n // Note -- getting references to other windows is probably one of the hardest things to do. There's basically\n // only a few ways of doing it:\n //\n // - The window is a direct parent, in which case you can use window.parent or window.opener\n // - The window is an iframe owned by you or one of your parents, in which case you can use window.frames\n // - The window sent you a post-message, in which case you can use event.source\n //\n // If we didn't rely on winProps.parent here from the window name, we'd have to relay all of our messages through\n // our actual parent. Which is no fun at all, and pretty error prone even with the help of post-robot. So this\n // is the lesser of two evils until browsers give us something like getWindowByName(...)\n\n // If the parent window closes, we need to close ourselves. There's no point continuing to run our component\n // if there's no parent to message to.\n\n this.watchForClose();\n }\n\n watchForClose() {\n window.addEventListener('unload', () => this.checkClose());\n }\n\n enableAutoResize({ width = true, height = true } : { width : boolean, height : boolean } = {}) {\n this.autoResize = { width, height };\n this.watchForResize();\n }\n\n getAutoResize() : { width : boolean, height : boolean, element : HTMLElement } {\n\n let width = false;\n let height = false;\n\n let autoResize = this.autoResize || this.component.autoResize;\n\n if (typeof autoResize === 'object') {\n width = Boolean(autoResize.width);\n height = Boolean(autoResize.height);\n } else if (autoResize) {\n width = true;\n height = true;\n }\n\n let element;\n\n if (autoResize.element) {\n element = getElement(autoResize.element);\n } else {\n element = document.body;\n }\n\n // $FlowFixMe\n return { width, height, element };\n }\n\n watchForResize() : ?ZalgoPromise {\n\n let { width, height, element } = this.getAutoResize();\n\n if (!width && !height) {\n return;\n }\n\n if (this.context === CONTEXT_TYPES.POPUP) {\n return;\n }\n\n if (this.watchingForResize) {\n return;\n }\n\n this.watchingForResize = true;\n \n onResize(element, ({ width: newWidth, height: newHeight }) => {\n this.resize(width ? newWidth : undefined, height ? newHeight : undefined);\n }, { width, height });\n }\n\n\n exports() : ChildExportsType

{\n\n let self = this;\n\n return {\n updateProps(props : (BuiltInPropsType & P)) : ZalgoPromise {\n return ZalgoPromise.try(() => self.setProps(props, this.origin, false));\n },\n\n close() : ZalgoPromise {\n return ZalgoPromise.try(() => self.destroy());\n }\n };\n }\n\n\n /* Resize\n ------\n\n Resize the child window. Must be done on a user action like a click if we're in a popup\n */\n\n resize(width : ?number, height : ?number) : ZalgoPromise {\n return ZalgoPromise.resolve().then(() => {\n\n this.component.log(`resize`, { width: stringify(width), height: stringify(height) });\n\n if (this.context === CONTEXT_TYPES.POPUP) {\n return;\n }\n\n return this.sendToParent(POST_MESSAGE.RESIZE, { width, height }).then(noop);\n });\n }\n\n /* Hide\n ----\n\n Hide the window and any parent template\n */\n\n hide() : ZalgoPromise {\n return this.sendToParent(POST_MESSAGE.HIDE).then(noop);\n }\n\n show() : ZalgoPromise {\n return this.sendToParent(POST_MESSAGE.SHOW).then(noop);\n }\n\n userClose() : void {\n return this.close(CLOSE_REASONS.USER_CLOSED);\n }\n\n\n /* Close\n -----\n\n Close the child window\n */\n\n close(reason : string = CLOSE_REASONS.CHILD_CALL) {\n\n this.component.log(`close_child`);\n\n // Ask our parent window to close us\n\n this.sendToParent(POST_MESSAGE.CLOSE, { reason });\n }\n\n checkClose() {\n this.sendToParent(POST_MESSAGE.CHECK_CLOSE, {}, { fireAndForget: true });\n }\n\n\n destroy() : ZalgoPromise {\n return flush().then(() => {\n window.close();\n });\n }\n\n\n /* Focus\n -----\n\n Focus the child window. Must be done on a user action like a click\n */\n\n focus() {\n this.component.log(`focus`);\n\n window.focus();\n }\n\n\n /* Error\n -----\n\n Send an error back to the parent\n */\n\n error(err : mixed) : ZalgoPromise {\n\n let stringifiedError = stringifyError(err);\n\n this.component.logError(`error`, { error: stringifiedError });\n\n return this.sendToParent(POST_MESSAGE.ERROR, {\n error: stringifiedError\n }).then(noop);\n }\n}\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { cleanUpWindow } from 'post-robot/src';\nimport { findFrameByName, isSameDomain } from 'cross-domain-utils/src';\n\nimport { iframe, popup, toCSS, showElement, hideElement,\n destroyElement, normalizeDimension, watchElementForClose,\n awaitFrameWindow, addClass, removeClass, noop } from '../../lib';\nimport { CONTEXT_TYPES, DELEGATE, CLOSE_REASONS, CLASS_NAMES, DEFAULT_DIMENSIONS } from '../../constants';\nimport { getPosition, getParentComponentWindow } from '../window';\n\n\nexport type ContextDriverType = {\n\n focusable : boolean,\n renderedIntoContainerTemplate : boolean,\n allowResize : boolean,\n openOnClick : boolean,\n needsBridge : boolean,\n\n open : (?string) => ZalgoPromise,\n resize : (?(number | string), ?(number | string)) => void,\n show : () => void,\n hide : () => void,\n loadUrl : (string) => void,\n\n delegateOverrides : {\n [string] : string | Function\n },\n\n openPrerender : () => ZalgoPromise,\n switchPrerender? : () => void\n};\n\n/* Render Drivers\n --------------\n\n There are various differences in how we treat:\n\n - Opening frames and windows\n - Rendering up to the parent\n - Resizing\n - etc.\n\n based on the context we're rendering to.\n\n These render drivers split this functionality out in a driver pattern, so our component code doesn't bunch up into a\n series of if-popup-then-else-if-iframe code.\n*/\n\nexport let RENDER_DRIVERS : { [string] : ContextDriverType } = {};\n\n// Iframe context is rendered inline on the page, without any kind of parent template. It's the one context that is designed\n// to feel like a native element on the page.\n\nRENDER_DRIVERS[CONTEXT_TYPES.IFRAME] = {\n\n focusable: false,\n renderedIntoContainerTemplate: true,\n allowResize: true,\n openOnClick: false,\n needsBridge: false,\n\n open(url : ?string) : ZalgoPromise {\n\n let attributes = this.component.attributes.iframe || {};\n\n this.iframe = iframe({\n url,\n attributes: {\n name: this.childWindowName,\n title: this.component.name,\n scrolling: this.component.scrolling ? 'yes' : 'no',\n ...attributes\n },\n class: [\n CLASS_NAMES.COMPONENT_FRAME,\n CLASS_NAMES.INVISIBLE\n ]\n }, this.element);\n\n return awaitFrameWindow(this.iframe).then(frameWindow => {\n\n this.window = frameWindow;\n\n let detectClose = () => {\n return ZalgoPromise.try(() => {\n return this.props.onClose(CLOSE_REASONS.CLOSE_DETECTED);\n }).finally(() => {\n return this.destroy();\n });\n };\n\n let iframeWatcher = watchElementForClose(this.iframe, detectClose);\n let elementWatcher = watchElementForClose(this.element, detectClose);\n\n this.clean.register('destroyWindow', () => {\n\n iframeWatcher.cancel();\n elementWatcher.cancel();\n\n cleanUpWindow(this.window);\n\n delete this.window;\n\n if (this.iframe) {\n destroyElement(this.iframe);\n delete this.iframe;\n }\n });\n });\n },\n\n openPrerender() : ZalgoPromise {\n\n let attributes = this.component.attributes.iframe || {};\n\n this.prerenderIframe = iframe({\n attributes: {\n name: `__prerender__${ this.childWindowName }`,\n scrolling: this.component.scrolling ? 'yes' : 'no',\n ...attributes\n },\n class: [\n CLASS_NAMES.PRERENDER_FRAME,\n CLASS_NAMES.VISIBLE\n ]\n }, this.element);\n\n return awaitFrameWindow(this.prerenderIframe).then(prerenderFrameWindow => {\n\n this.prerenderWindow = prerenderFrameWindow;\n\n this.clean.register('destroyPrerender', () => {\n\n if (this.prerenderIframe) {\n destroyElement(this.prerenderIframe);\n delete this.prerenderIframe;\n }\n });\n });\n },\n\n switchPrerender() {\n\n addClass(this.prerenderIframe, CLASS_NAMES.INVISIBLE);\n removeClass(this.prerenderIframe, CLASS_NAMES.VISIBLE);\n\n addClass(this.iframe, CLASS_NAMES.VISIBLE);\n removeClass(this.iframe, CLASS_NAMES.INVISIBLE);\n\n setTimeout(() => {\n if (this.prerenderIframe) {\n destroyElement(this.prerenderIframe);\n }\n }, 1000);\n },\n\n delegateOverrides: {\n\n openContainer: DELEGATE.CALL_DELEGATE,\n destroyComponent: DELEGATE.CALL_DELEGATE,\n destroyContainer: DELEGATE.CALL_DELEGATE,\n cancelContainerEvents: DELEGATE.CALL_DELEGATE,\n createPrerenderTemplate: DELEGATE.CALL_DELEGATE,\n elementReady: DELEGATE.CALL_DELEGATE,\n showContainer: DELEGATE.CALL_DELEGATE,\n showComponent: DELEGATE.CALL_DELEGATE,\n hideContainer: DELEGATE.CALL_DELEGATE,\n hideComponent: DELEGATE.CALL_DELEGATE,\n hide: DELEGATE.CALL_DELEGATE,\n show: DELEGATE.CALL_DELEGATE,\n resize: DELEGATE.CALL_DELEGATE,\n loadUrl: DELEGATE.CALL_DELEGATE,\n hijackSubmit: DELEGATE.CALL_DELEGATE,\n openPrerender: DELEGATE.CALL_DELEGATE,\n switchPrerender: DELEGATE.CALL_DELEGATE,\n\n renderTemplate: DELEGATE.CALL_ORIGINAL,\n openContainerFrame: DELEGATE.CALL_ORIGINAL,\n getOutlet: DELEGATE.CALL_ORIGINAL,\n\n open(original : () => ZalgoPromise, override : () => ZalgoPromise) : () => ZalgoPromise {\n return function overrideOpen() : ZalgoPromise {\n return override.apply(this, arguments).then(() => {\n this.clean.set('window', findFrameByName(getParentComponentWindow(), this.childWindowName));\n\n if (!this.window) {\n throw new Error(`Unable to find parent component iframe window`);\n }\n });\n };\n }\n },\n\n resize(width : ?(number | string), height : ?(number | string)) {\n\n if (width) {\n this.container.style.width = toCSS(width);\n this.element.style.width = toCSS(width);\n }\n\n if (height) {\n this.container.style.height = toCSS(height);\n this.element.style.height = toCSS(height);\n }\n },\n\n show() {\n showElement(this.element);\n },\n\n hide() {\n hideElement(this.element);\n },\n\n loadUrl(url : string) {\n this.iframe.setAttribute('src', url);\n }\n};\n\nif (__ZOID__.__POPUP_SUPPORT__) {\n\n // Popup context opens up a centered popup window on the page.\n\n RENDER_DRIVERS[CONTEXT_TYPES.POPUP] = {\n\n focusable: true,\n renderedIntoContainerTemplate: false,\n allowResize: false,\n openOnClick: true,\n needsBridge: true,\n\n open(url : ?string = '') : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n let {\n width = DEFAULT_DIMENSIONS.WIDTH,\n height = DEFAULT_DIMENSIONS.HEIGHT\n } = this.component.dimensions || {};\n\n width = normalizeDimension(width, window.outerWidth);\n height = normalizeDimension(height, window.outerWidth);\n\n let { x, y } = getPosition({ width, height });\n\n let attributes = this.component.attributes.popup || {};\n\n this.window = popup(url || '', {\n name: this.childWindowName,\n width,\n height,\n top: y,\n left: x,\n status: 1,\n toolbar: 0,\n menubar: 0,\n resizable: 1,\n scrollbars: 1,\n ...attributes\n });\n\n this.prerenderWindow = this.window;\n\n this.clean.register('destroyWindow', () => {\n if (this.window) {\n this.window.close();\n cleanUpWindow(this.window);\n delete this.window;\n delete this.prerenderWindow;\n }\n });\n\n this.resize(width, height);\n });\n },\n\n openPrerender() : ZalgoPromise {\n return ZalgoPromise.try(noop);\n },\n\n resize() {\n // pass\n },\n\n hide() {\n throw new Error('Can not hide popup');\n },\n\n show() {\n throw new Error('Can not show popup');\n },\n\n delegateOverrides: {\n\n openContainer: DELEGATE.CALL_DELEGATE,\n destroyContainer: DELEGATE.CALL_DELEGATE,\n\n elementReady: DELEGATE.CALL_DELEGATE,\n\n showContainer: DELEGATE.CALL_DELEGATE,\n showComponent: DELEGATE.CALL_DELEGATE,\n hideContainer: DELEGATE.CALL_DELEGATE,\n hideComponent: DELEGATE.CALL_DELEGATE,\n\n hide: DELEGATE.CALL_DELEGATE,\n show: DELEGATE.CALL_DELEGATE,\n\n cancelContainerEvents: DELEGATE.CALL_DELEGATE,\n\n open: DELEGATE.CALL_ORIGINAL,\n loadUrl: DELEGATE.CALL_ORIGINAL,\n createPrerenderTemplate: DELEGATE.CALL_ORIGINAL,\n destroyComponent: DELEGATE.CALL_ORIGINAL,\n resize: DELEGATE.CALL_ORIGINAL,\n renderTemplate: DELEGATE.CALL_ORIGINAL,\n openContainerFrame: DELEGATE.CALL_ORIGINAL,\n getOutlet: DELEGATE.CALL_ORIGINAL\n },\n\n loadUrl(url : string) {\n\n if (isSameDomain(this.window)) {\n try {\n if (this.window.location && this.window.location.replace) {\n this.window.location.replace(url);\n return;\n }\n } catch (err) {\n // pass\n }\n }\n\n this.window.location = url;\n }\n };\n}\n","/* @flow */\n/* eslint complexity: off */\n\nimport type { Component } from '../component';\nimport type { MixedPropDefinitionType, PropsType } from '../component/props';\n\n// $FlowFixMe\nexport function validateProp(prop : MixedPropDefinitionType

, key : string, value : ?T, props : (PropsType & P), required : boolean = true) {\n\n let hasProp = value !== null && value !== undefined && value !== '';\n\n if (!hasProp) {\n if (required && prop.required !== false && !prop.hasOwnProperty('def')) {\n throw new Error(`Prop is required: ${ key }`);\n }\n\n return;\n }\n\n if (value && typeof value.then === 'function' && prop.promise) {\n return;\n }\n\n if (prop.type === 'function') {\n\n if (!(typeof value === 'function')) {\n throw new TypeError(`Prop is not of type function: ${ key }`);\n }\n\n } else if (prop.type === 'string') {\n\n if (typeof value !== 'string') {\n throw new TypeError(`Prop is not of type string: ${ key }`);\n }\n\n } else if (prop.type === 'object') {\n\n // Since we're sending everything by post-message, everything must be json serializable\n\n if (prop.sendToChild !== false) {\n try {\n JSON.stringify(value);\n } catch (err) {\n throw new Error(`Unable to serialize prop: ${ key }`);\n }\n }\n\n } else if (prop.type === 'number') {\n\n if (isNaN(parseInt(value, 10))) {\n throw new TypeError(`Prop is not a number: ${ key }`);\n }\n }\n\n if (typeof prop.validate === 'function' && value) {\n prop.validate(value, props);\n }\n}\n\n\n/* Validate Props\n --------------\n\n Validate user-defined props. Users can pass props down from the parent into the child component, but first we\n double check the values are what we expect, based on the props spec defined in the original component.\n*/\n\nexport function validateProps

(component : Component

, props : PropsType, required : boolean = true) {\n\n props = props || {};\n\n if (props.env && typeof component.url === 'object' && !component.url[props.env]) {\n throw new Error(`Invalid env: ${ props.env }`);\n }\n\n // Set aliases\n\n for (let key of component.getPropNames()) {\n\n // $FlowFixMe\n let prop = component.getProp(key);\n\n if (prop.alias && props.hasOwnProperty(prop.alias)) {\n\n let value = props[prop.alias];\n delete props[prop.alias];\n\n if (!props[key]) {\n props[key] = value;\n }\n }\n }\n\n // First make sure all of the props we were sent are actually valid prop names\n\n /*\n\n if (!component.looseProps) {\n for (let key of Object.keys(props)) {\n if (component.getPropNames().indexOf(key) === -1) {\n throw component.error(`Invalid prop: ${key}`);\n }\n }\n }\n\n */\n\n // Then loop over the props we expect, and make sure they're all present and valid\n\n for (let key of Object.keys(props)) {\n\n // $FlowFixMe\n let prop : MixedPropDefinitionType

= component.getProp(key);\n let value = props[key];\n\n if (prop) {\n // $FlowFixMe\n validateProp(prop, key, value, props, required);\n }\n }\n\n for (let key of component.getPropNames()) {\n\n // $FlowFixMe\n let prop : MixedPropDefinitionType

= component.getProp(key);\n let value = props[key];\n\n if (prop && !props.hasOwnProperty(key)) {\n validateProp(prop, key, value, props, required);\n }\n }\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { noop, denodeify, once, memoize, promisify, dotify } from '../../lib';\nimport type { Component } from '../component';\nimport type { BuiltInPropsDefinitionType, PropsType, BuiltInPropsType, MixedPropDefinitionType } from '../component/props';\n\nimport type { ParentComponent } from './index';\n\nfunction isDefined(value : ?mixed) : boolean {\n return value !== null && value !== undefined && value !== '';\n}\n\n\n/* Normalize Prop\n --------------\n\n Turn prop into normalized value, using defaults, function options, etc.\n*/\n\n// $FlowFixMe\nexport function normalizeProp(component : Component

, instance : ParentComponent

, props : (PropsType & P), key : string, value : ?T) : ?(ZalgoPromise | T) { // eslint-disable-line complexity\n\n let prop = component.getProp(key);\n\n let resultValue;\n\n if (prop.value) {\n resultValue = prop.value;\n } else if (prop.def && (!props.hasOwnProperty(key) || !isDefined(value))) {\n resultValue = prop.def.call(component, props);\n } else {\n resultValue = value;\n }\n\n if (!resultValue && prop.alias && props[prop.alias]) {\n resultValue = props[prop.alias];\n }\n\n let decorated = false;\n\n if (prop.decorate && resultValue !== null && resultValue !== undefined) {\n resultValue = prop.decorate.call(instance, resultValue, props);\n decorated = true;\n }\n\n let type = prop.type;\n\n if (type === 'boolean') {\n // $FlowFixMe\n resultValue = Boolean(resultValue);\n\n } else if (type === 'function') {\n\n if (!resultValue && prop.noop) {\n // $FlowFixMe\n resultValue = noop;\n\n if (!decorated && prop.decorate) {\n // $FlowFixMe\n resultValue = prop.decorate.call(instance, noop, props);\n }\n }\n\n if (resultValue && typeof resultValue === 'function') {\n\n resultValue = resultValue.bind(instance);\n\n // If prop.denodeify is set, denodeify the function (accepts callback -> returns promise)\n\n if (prop.denodeify) {\n // $FlowFixMe\n resultValue = denodeify(resultValue);\n }\n\n if (prop.promisify) {\n // $FlowFixMe\n resultValue = promisify(resultValue);\n }\n\n // Wrap the function in order to log when it is called\n\n let original = resultValue;\n // $FlowFixMe\n resultValue = function() : mixed {\n component.log(`call_prop_${ key }`);\n return original.apply(this, arguments);\n };\n\n // If prop.once is set, ensure the function can only be called once\n\n if (prop.once) {\n // $FlowFixMe\n resultValue = once(resultValue);\n }\n\n // If prop.memoize is set, ensure the function is memoized (first return resultValue is cached and returned for any future calls)\n\n if (prop.memoize) {\n // $FlowFixMe\n resultValue = memoize(resultValue);\n }\n }\n\n } else if (type === 'string') {\n // pass\n\n } else if (type === 'object') {\n // pass\n\n } else if (type === 'number') {\n if (resultValue !== undefined) {\n // $FlowFixMe\n resultValue = parseInt(resultValue, 10);\n }\n }\n\n // $FlowFixMe\n return resultValue;\n}\n\n\n/* Normalize Props\n ---------------\n\n Turn props into normalized values, using defaults, function options, etc.\n*/\n\nexport function normalizeProps

(component : Component

, instance : ParentComponent

, props : (PropsType & P)) : (BuiltInPropsType & P) {\n\n let result = {};\n\n // $FlowFixMe\n props = props || {};\n\n for (let key of Object.keys(props)) {\n if (component.getPropNames().indexOf(key) !== -1) {\n // $FlowFixMe\n result[key] = normalizeProp(component, instance, props, key, props[key]);\n } else {\n result[key] = props[key];\n }\n }\n\n for (let key of component.getPropNames()) {\n if (!props.hasOwnProperty(key) && (!instance.props || !instance.props.hasOwnProperty(key))) {\n\n // $FlowFixMe\n let normalizedProp = normalizeProp(component, instance, props, key, props[key]);\n\n if (normalizedProp !== undefined) {\n result[key] = normalizedProp;\n }\n }\n }\n\n // $FlowFixMe\n return result;\n}\n\n\n/* Props to Query\n --------------\n\n Turn props into an initial query string to open the component with\n\n string -> string\n bool -> 1\n object -> json\n number -> string\n*/\n\n// $FlowFixMe\nfunction getQueryParam(prop : MixedPropDefinitionType

, key : string, value : T) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (typeof prop.queryParam === 'function') {\n return prop.queryParam(value);\n } else if (typeof prop.queryParam === 'string') {\n return prop.queryParam;\n } else {\n return key;\n }\n });\n}\n\n// $FlowFixMe\nfunction getQueryValue(prop : MixedPropDefinitionType

, key : string, value : T) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (typeof prop.queryValue === 'function') {\n return prop.queryValue(value);\n } else {\n return value;\n }\n });\n}\n\nexport function propsToQuery

(propsDef : BuiltInPropsDefinitionType

, props : (BuiltInPropsType & P)) : { [string] : string } {\n\n let params = {};\n\n return ZalgoPromise.all(Object.keys(props).map(key => {\n\n let prop = propsDef[key];\n\n if (!prop) {\n return; // eslint-disable-line array-callback-return\n }\n\n return ZalgoPromise.resolve().then(() => {\n\n let value = props[key];\n\n if (!value) {\n return;\n }\n\n if (!prop.queryParam) {\n return;\n }\n\n return value;\n\n }).then(value => {\n\n if (!value) {\n return;\n }\n\n return ZalgoPromise.all([\n // $FlowFixMe\n getQueryParam(prop, key, value),\n // $FlowFixMe\n getQueryValue(prop, key, value)\n ]).then(([ queryParam, queryValue ]) => {\n\n let result;\n\n if (typeof queryValue === 'boolean') {\n result = '1';\n } else if (typeof queryValue === 'string') {\n result = queryValue.toString();\n } else if (typeof queryValue === 'function') {\n return;\n } else if (typeof queryValue === 'object' && queryValue !== null) {\n\n if (prop.serialization === 'json') {\n result = JSON.stringify(queryValue);\n } else {\n result = dotify(queryValue, key);\n\n for (let dotkey of Object.keys(result)) {\n params[dotkey] = result[dotkey];\n }\n\n return;\n }\n\n } else if (typeof queryValue === 'number') {\n result = queryValue.toString();\n }\n\n params[queryParam] = result;\n });\n });\n\n })).then(() => {\n Object.keys(params).forEach(key => {\n params[key] = escape(params[key]);\n });\n return params;\n });\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { flush } from 'beaver-logger/client';\nimport { send, bridge } from 'post-robot/src';\nimport { isSameDomain, isWindowClosed, isTop, isSameTopWindow, matchDomain, getDistanceFromTop, onCloseWindow, getDomain, assertSameDomain, type CrossDomainWindowType, type SameDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getElementSafe, onResize } from 'belter/src';\n\nimport { BaseComponent } from '../base';\nimport { buildChildWindowName, getParentDomain, getParentComponentWindow } from '../window';\nimport { addEventListener, uniqueID, elementReady, writeElementToWindow,\n noop, showAndAnimate, animateAndHide, showElement, hideElement,\n addClass, extend, serializeFunctions, extendUrl, jsxDom,\n getElement, memoized, appendChild,\n global, writeToWindow, setLogLevel, once,\n prefetchPage, awaitFrameLoad, stringify, stringifyError } from '../../lib';\nimport { POST_MESSAGE, CONTEXT_TYPES, CLASS_NAMES, ANIMATION_NAMES, CLOSE_REASONS, DELEGATE, INITIAL_PROPS, WINDOW_REFERENCES, EVENTS, DEFAULT_DIMENSIONS } from '../../constants';\nimport { RenderError } from '../../error';\nimport type { Component } from '../component';\nimport type { PropsType, BuiltInPropsType } from '../component/props';\nimport type { ChildExportsType } from '../child';\nimport type { CancelableType, Jsx, DimensionsType, ElementRefType } from '../../types';\n\nimport { RENDER_DRIVERS, type ContextDriverType } from './drivers';\nimport { validateProps } from './validate';\nimport { propsToQuery, normalizeProps } from './props';\n\nglobal.props = global.props || {};\nglobal.windows = global.windows || {};\n\nexport type RenderOptionsType = {\n id : string,\n props : PropsType,\n tag : string,\n context : string,\n outlet : HTMLElement,\n CLASS : typeof CLASS_NAMES,\n ANIMATION : typeof ANIMATION_NAMES,\n CONTEXT : typeof CONTEXT_TYPES,\n EVENT : typeof EVENTS,\n actions : {\n close : (string) => ZalgoPromise,\n focus : () => ZalgoPromise\n },\n on : (string, () => void) => CancelableType,\n jsxDom : Jsx,\n document : Document,\n container : HTMLElement,\n dimensions : DimensionsType\n};\n\n\n/* Parent Component\n ----------------\n\n This manages the state of the component on the parent window side - i.e. the window the component is being rendered into.\n\n It handles opening the necessary windows/iframes, launching the component's url, and listening for messages back from the component.\n*/\n\nexport class ParentComponent

extends BaseComponent

{\n\n html : ?ZalgoPromise\n context : string\n props : BuiltInPropsType & P\n childWindowName : string\n onInit : ZalgoPromise>\n window : CrossDomainWindowType\n handledErrors : Array\n\n container : HTMLElement\n element : HTMLElement\n outlet : HTMLElement;\n iframe : HTMLIFrameElement\n\n prerenderIframe : HTMLIFrameElement\n prerenderWindow : SameDomainWindowType\n\n childExports : ?ChildExportsType

\n timeout : ?TimeoutID // eslint-disable-line no-undef\n\n constructor(component : Component

, context : string, { props } : { props : (PropsType & P) }) {\n super();\n\n this.component = component;\n\n this.validateParentDomain();\n\n this.context = context;\n\n try {\n this.setProps(props);\n } catch (err) {\n if (props.onError) {\n props.onError(err);\n }\n throw err;\n }\n\n if (this.props.logLevel) {\n setLogLevel(this.props.logLevel);\n }\n\n this.childWindowName = this.buildChildWindowName({ renderTo: window });\n\n this.registerActiveComponent();\n\n // Options passed during renderTo. We would not ordinarily expect a user to pass these, since we depend on\n // them only when we're trying to render from a sibling to a sibling\n\n this.component.log(`construct_parent`);\n\n this.watchForUnload();\n\n this.onInit = new ZalgoPromise();\n\n this.onInit.catch(err => {\n return this.error(err);\n });\n }\n\n render(element : ElementRefType, loadUrl : boolean = true) : ZalgoPromise> {\n return this.tryInit(() => {\n\n this.component.log(`render_${ this.context }`, { context: this.context, element, loadUrl: stringify(loadUrl) });\n\n let tasks = {};\n\n tasks.onRender = this.props.onRender();\n\n tasks.getDomain = this.getDomain();\n\n tasks.elementReady = ZalgoPromise.try(() => {\n if (element) {\n return this.elementReady(element);\n }\n });\n\n tasks.openContainer = tasks.elementReady.then(() => {\n return this.openContainer(element);\n });\n\n tasks.showContainer = tasks.openContainer.then(() => {\n return this.showContainer();\n });\n\n tasks.openPrerender = tasks.openContainer.then(() => {\n return this.openPrerender();\n });\n\n tasks.switchPrerender = ZalgoPromise.all([ tasks.openPrerender, this.onInit ]).then(() => {\n return this.switchPrerender();\n });\n\n // $FlowFixMe\n tasks.open = this.driver.openOnClick\n ? this.open()\n : tasks.openContainer.then(() => this.open());\n\n tasks.listen = ZalgoPromise.hash({ domain: tasks.getDomain, open: tasks.open }).then(({ domain }) => {\n this.listen(this.window, domain);\n });\n\n tasks.watchForClose = tasks.open.then(() => {\n return this.watchForClose();\n });\n\n tasks.linkDomain = ZalgoPromise.all([ tasks.getDomain, tasks.open ]).then(([ domain ]) => {\n if (bridge && typeof domain === 'string') {\n return bridge.linkUrl(this.window, domain);\n }\n });\n\n if (!this.html) {\n tasks.createPrerenderTemplate = tasks.openPrerender.then(() => {\n return this.createPrerenderTemplate();\n });\n\n tasks.showComponent = tasks.createPrerenderTemplate.then(() => {\n return this.showComponent();\n });\n }\n\n tasks.openBridge = ZalgoPromise.all([ tasks.getDomain, tasks.open ]).then(([ domain ]) => {\n return this.openBridge(typeof domain === 'string' ? domain : null);\n });\n\n if (this.html) {\n tasks.loadHTML = tasks.open.then(() => {\n return this.loadHTML();\n });\n\n } else if (loadUrl) {\n tasks.buildUrl = this.buildUrl();\n\n tasks.loadUrl = ZalgoPromise.all([\n tasks.buildUrl,\n tasks.open,\n tasks.linkDomain,\n tasks.listen,\n tasks.open,\n tasks.openBridge,\n tasks.createPrerenderTemplate\n ]).then(([ url ]) => {\n return this.loadUrl(url);\n });\n\n tasks.runTimeout = tasks.loadUrl.then(() => {\n return this.runTimeout();\n });\n }\n\n return ZalgoPromise.hash(tasks);\n\n }).then(() => {\n return this.props.onEnter();\n }).then(() => {\n return this;\n });\n }\n\n @memoized\n getOutlet() : HTMLElement {\n let outlet = document.createElement('div');\n addClass(outlet, CLASS_NAMES.OUTLET);\n return outlet;\n }\n\n validateParentDomain() {\n let domain = getDomain();\n if (!matchDomain(this.component.allowedParentDomains, domain)) {\n throw new RenderError(`Can not be rendered by domain: ${ domain }`);\n }\n }\n\n renderTo(win : CrossDomainWindowType, element : ?string) : ZalgoPromise> {\n return this.tryInit(() => {\n\n if (win === window) {\n return this.render(element);\n }\n\n if (!isSameTopWindow(window, win)) {\n throw new Error(`Can only renderTo an adjacent frame`);\n }\n\n if (element && typeof element !== 'string') {\n throw new Error(`Element passed to renderTo must be a string selector, got ${ typeof element } ${ element }`);\n }\n\n this.checkAllowRenderTo(win);\n\n this.component.log(`render_${ this.context }_to_win`, { element: stringify(element), context: this.context });\n\n this.childWindowName = this.buildChildWindowName({ renderTo: win });\n\n this.delegate(win);\n\n return this.render(element);\n });\n }\n\n @memoized\n prefetch() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.html = this.buildUrl().then(url => {\n return prefetchPage(url).then(html => {\n\n let host = `${ url.split('/').slice(0, 3).join('/') }`;\n let uri = `/${ url.split('/').slice(3).join('/') }`;\n\n return `\n \n\n ${ html }\n\n \n `;\n });\n });\n });\n }\n\n @memoized\n loadHTML() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (!this.html) {\n throw new Error(`Html not prefetched`);\n }\n\n return this.html.then(html => {\n // $FlowFixMe\n return writeToWindow(this.window, html);\n });\n });\n }\n\n checkAllowRenderTo(win : CrossDomainWindowType) {\n\n if (!win) {\n throw this.component.createError(`Must pass window to renderTo`);\n }\n\n if (isSameDomain(win)) {\n return;\n }\n\n let origin = getDomain();\n let domain = this.component.getDomain(null, this.props.env);\n\n if (!domain) {\n throw new Error(`Could not determine domain to allow remote render`);\n }\n\n if (matchDomain(domain, origin)) {\n return;\n }\n\n throw new Error(`Can not render remotely to ${ domain.toString() } - can only render to ${ origin }`);\n }\n\n registerActiveComponent() {\n ParentComponent.activeComponents.push(this);\n\n this.clean.register(() => {\n ParentComponent.activeComponents.splice(ParentComponent.activeComponents.indexOf(this), 1);\n });\n }\n\n\n getComponentParentRef() : { ref : string, uid? : string, distance? : number } {\n let domain = this.component.getDomain(null, this.props.env);\n\n if (domain === getDomain(window)) {\n let uid = uniqueID();\n global.windows = global.windows || {};\n global.windows[uid] = window;\n this.clean.register(() => {\n delete global.windows[uid];\n });\n\n return { ref: WINDOW_REFERENCES.GLOBAL, uid };\n }\n\n if (this.context === CONTEXT_TYPES.POPUP) {\n return { ref: WINDOW_REFERENCES.OPENER };\n }\n\n if (isTop(window)) {\n return { ref: WINDOW_REFERENCES.TOP };\n }\n\n return { ref: WINDOW_REFERENCES.PARENT, distance: getDistanceFromTop(window) };\n }\n\n getRenderParentRef(renderToWindow : CrossDomainWindowType = window) : { ref : string, uid? : string, distance? : number } {\n\n if (renderToWindow === window) {\n return this.getComponentParentRef();\n }\n\n let uid = uniqueID();\n global.windows[uid] = renderToWindow;\n\n this.clean.register(() => {\n delete global.windows[uid];\n });\n\n return { ref: WINDOW_REFERENCES.GLOBAL, uid };\n }\n\n buildChildWindowName({ renderTo = window } : { renderTo : CrossDomainWindowType } = {}) : string {\n\n let childDomain = this.component.getDomain(null, this.props.env);\n let sameDomain = isSameDomain(renderTo);\n\n let uid = uniqueID();\n let tag = this.component.tag;\n let sProps = serializeFunctions(this.getPropsForChild());\n\n let componentParent = this.getComponentParentRef();\n let renderParent = this.getRenderParentRef(renderTo);\n\n let secureProps = !sameDomain && !this.component.unsafeRenderTo;\n\n let props = secureProps\n ? { type: INITIAL_PROPS.UID, uid }\n : { type: INITIAL_PROPS.RAW, value: sProps };\n\n if (props.type === INITIAL_PROPS.UID) {\n global.props[uid] = JSON.stringify(sProps);\n\n this.clean.register(() => {\n delete global.props[uid];\n });\n }\n\n return buildChildWindowName(this.component.name, this.component.version, { uid, tag, componentParent, renderParent, props, childDomain });\n }\n\n\n /* Send to Parent\n --------------\n\n Send a post message to our parent window.\n */\n\n sendToParent(name : string, data : Object) : ZalgoPromise<{ origin : string, source : CrossDomainWindowType, data : Object }> {\n let parentWindow = getParentComponentWindow();\n\n if (!parentWindow) {\n throw new Error(`Can not find parent component window to message`);\n }\n\n this.component.log(`send_to_parent_${ name }`);\n\n return send(getParentComponentWindow(), name, data, { domain: getParentDomain() });\n }\n\n\n /* Set Props\n ---------\n\n Normalize props and generate the url we'll use to render the component\n */\n\n setProps(props : (PropsType & P), required : boolean = true) {\n\n validateProps(this.component, props, required);\n if (this.component.validate) {\n this.component.validate(this.component, props);\n }\n\n // $FlowFixMe\n this.props = this.props || {};\n\n extend(this.props, normalizeProps(this.component, this, props));\n }\n\n\n /* Build Url\n ---------\n\n We build the props we're passed into the initial url. This means the component server-side can start rendering\n itself based on whatever props the merchant provides.\n */\n\n @memoized\n buildUrl() : ZalgoPromise {\n\n let propUrl : (string | void) = this.props.url;\n\n return ZalgoPromise.all([\n\n propUrl,\n // $FlowFixMe\n propsToQuery({ ...this.component.props, ...this.component.builtinProps }, this.props)\n\n ]).then(([ url, query ]) => {\n\n // Do not extend the url if it is for a different domain\n\n if (url && !this.component.getValidDomain(url)) {\n return url;\n }\n\n return ZalgoPromise.try(() => {\n\n return url || this.component.getUrl(this.props.env, this.props);\n\n }).then(finalUrl => {\n\n query.xcomponent = '1';\n return extendUrl(finalUrl, { query });\n });\n });\n }\n\n\n getDomain() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n return this.props.url;\n\n }).then(url => {\n\n let domain = this.component.getDomain(url, this.props.env);\n\n if (domain) {\n return domain;\n }\n\n if (this.component.buildUrl) {\n return ZalgoPromise.try(() => this.component.buildUrl(this.props)).then(builtUrl => {\n return this.component.getDomain(builtUrl, this.props.env);\n });\n }\n\n }).then(domain => {\n\n if (!domain) {\n throw new Error(`Could not determine domain`);\n }\n\n return domain;\n });\n }\n\n getPropsForChild() : (BuiltInPropsType & P) {\n\n let result = {};\n\n for (let key of Object.keys(this.props)) {\n let prop = this.component.getProp(key);\n\n if (!prop || prop.sendToChild !== false) {\n result[key] = this.props[key];\n }\n }\n\n // $FlowFixMe\n return result;\n }\n\n\n /* Update Props\n ------------\n\n Send new props down to the child\n */\n\n updateProps(props : (PropsType & P)) : ZalgoPromise {\n this.setProps(props, false);\n\n return this.onInit.then(() => {\n if (this.childExports) {\n return this.childExports.updateProps(this.getPropsForChild());\n } else {\n throw new Error(`Child exports were not available`);\n }\n });\n }\n\n\n openBridge(domain : ?string) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (!bridge || !this.driver.needsBridge) {\n return;\n }\n\n let needsBridgeParams : Object = { win: this.window };\n if (domain) {\n needsBridgeParams.domain = domain;\n }\n\n let needsBridge = bridge.needsBridge(needsBridgeParams);\n\n let bridgeUrl = this.component.getBridgeUrl(this.props.env);\n\n if (!bridgeUrl) {\n\n if (needsBridge && domain && !bridge.hasBridge(domain, domain)) {\n throw new Error(`Bridge url needed to render ${ this.context }`);\n }\n\n return;\n }\n\n bridgeUrl = extendUrl(bridgeUrl, { query: { version: this.component.version } });\n\n let bridgeDomain = this.component.getBridgeDomain(this.props.env);\n\n if (!bridgeDomain) {\n throw new Error(`Can not determine domain for bridge`);\n }\n\n if (needsBridge) {\n return bridge.openBridge(bridgeUrl, bridgeDomain).then(result => {\n if (result) {\n return result;\n }\n });\n }\n });\n }\n\n\n /* Open\n ----\n\n Open a new window in the desired context\n */\n\n @memoized\n open() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.component.log(`open_${ this.context }`, { windowName: this.childWindowName });\n if (this.props.win) {\n this.clean.set('window', this.props.win);\n assertSameDomain(this.window).name = this.childWindowName;\n return;\n }\n return this.driver.open.call(this);\n });\n }\n\n @memoized\n openPrerender() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.component.prerenderTemplate) {\n return this.driver.openPrerender.call(this);\n }\n });\n }\n\n @memoized\n switchPrerender() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.prerenderWindow && this.driver.switchPrerender) {\n return this.driver.switchPrerender.call(this);\n }\n });\n }\n\n get driver() : ContextDriverType {\n\n if (!this.context) {\n throw new Error('Context not set');\n }\n\n return RENDER_DRIVERS[this.context];\n }\n\n elementReady(element : ElementRefType) : ZalgoPromise {\n return elementReady(element).then(noop);\n }\n\n\n delegate(win : CrossDomainWindowType) {\n\n this.component.log(`delegate_${ this.context }`);\n\n let props = {\n uid: this.props.uid,\n dimensions: this.props.dimensions,\n onClose: this.props.onClose,\n onDisplay: this.props.onDisplay\n };\n\n for (let propName of this.component.getPropNames()) {\n let prop = this.component.getProp(propName);\n\n if (prop.allowDelegate) {\n props[propName] = this.props[propName];\n }\n }\n\n let delegate = send(win, `${ POST_MESSAGE.DELEGATE }_${ this.component.name }`, {\n\n context: this.context,\n env: this.props.env,\n\n options: {\n\n context: this.context,\n\n childWindowName: this.childWindowName,\n isWindowClosed: () => isWindowClosed(this.window),\n\n props,\n\n overrides: {\n focus: () => this.focus(),\n userClose: () => this.userClose(),\n getDomain: () => this.getDomain(),\n\n error: (err) => this.error(err),\n on: (eventName, handler) => this.on(eventName, handler)\n }\n }\n\n }).then(({ data }) => {\n\n this.clean.register(data.destroy);\n return data;\n\n }).catch(err => {\n\n throw new Error(`Unable to delegate rendering. Possibly the component is not loaded in the target window.\\n\\n${ stringifyError(err) }`);\n });\n\n let overrides = this.driver.delegateOverrides;\n\n for (let key of Object.keys(overrides)) {\n let val = overrides[key];\n\n if (val === DELEGATE.CALL_ORIGINAL) {\n continue;\n }\n\n // $FlowFixMe\n let original = this[key];\n\n // $FlowFixMe\n this[key] = function overridenFunction() : ZalgoPromise {\n return delegate.then(data => {\n\n let override = data.overrides[key];\n\n if (val === DELEGATE.CALL_DELEGATE) {\n return override.apply(this, arguments);\n }\n\n if (typeof val === 'function') {\n return val(original, override).apply(this, arguments);\n }\n\n throw new Error(`Expected delgate to be CALL_ORIGINAL, CALL_DELEGATE, or factory method`);\n });\n };\n }\n }\n\n /* Watch For Close\n ---------------\n\n Watch for the child window closing, so we can cleanup.\n Also watch for this window changing location, so we can close the component.\n */\n\n watchForClose() {\n let closeWindowListener = onCloseWindow(this.window, () => {\n this.component.log(`detect_close_child`);\n\n return ZalgoPromise.try(() => {\n return this.props.onClose(CLOSE_REASONS.CLOSE_DETECTED);\n }).finally(() => {\n return this.destroy();\n });\n }, 3000);\n\n this.clean.register('destroyCloseWindowListener', closeWindowListener.cancel);\n }\n\n watchForUnload() {\n\n // Our child has no way of knowing if we navigated off the page. So we have to listen for unload\n // and close the child manually if that happens.\n\n let onunload = once(() => {\n this.component.log(`navigate_away`);\n flush();\n this.destroyComponent();\n });\n\n let unloadWindowListener = addEventListener(window, 'unload', onunload);\n\n this.clean.register('destroyUnloadWindowListener', unloadWindowListener.cancel);\n }\n\n\n /* Load Url\n --------\n\n Load url into the child window. This is separated out because it's quite common for us to have situations\n where opening the child window and loading the url happen at different points.\n */\n\n loadUrl(url : string) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.component.log(`load_url`);\n\n if (window.location.href.split('#')[0] === url.split('#')[0]) {\n url = extendUrl(url, {\n query: {\n [ uniqueID() ]: '1'\n }\n });\n }\n\n return this.driver.loadUrl.call(this, url);\n });\n }\n\n\n hijack(targetElement : HTMLFormElement | HTMLAnchorElement) {\n targetElement.target = this.childWindowName;\n }\n\n /* Run Timeout\n -----------\n\n Set a timeout on the initial render, and call this.props.onTimeout if we don't get an init call in time.\n */\n\n runTimeout() {\n let timeout = this.props.timeout;\n\n if (timeout) {\n let id = this.timeout = setTimeout(() => {\n\n this.component.log(`timed_out`, { timeout: timeout.toString() });\n\n let error = this.component.createError(`Loading component timed out after ${ timeout } milliseconds`);\n\n this.onInit.reject(error);\n this.props.onTimeout(error);\n\n }, timeout);\n\n this.clean.register(() => {\n clearTimeout(id);\n delete this.timeout;\n });\n }\n }\n\n\n /* Listeners\n ---------\n\n Post-robot listeners to the child component window\n */\n\n listeners() : { [string] : (CrossDomainWindowType, Object) => mixed } {\n return {\n\n // The child rendered, and the component called .attach()\n // We have no way to know when the child has set up its listeners for the first time, so we have to listen\n // for this message to be sure so we can continue doing anything from the parent\n\n [ POST_MESSAGE.INIT ](source : CrossDomainWindowType, data : Object) : { props : BuiltInPropsType & P, context : string } {\n\n this.childExports = data.exports;\n\n this.onInit.resolve(this);\n\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n\n return {\n props: this.getPropsForChild(),\n context: this.context\n };\n },\n\n\n // The child has requested that we close it. Since iframes can't close themselves, we need\n // this logic to exist in the parent window\n\n [ POST_MESSAGE.CLOSE ](source : CrossDomainWindowType, data : Object) {\n this.close(data.reason);\n },\n\n [ POST_MESSAGE.CHECK_CLOSE ]() {\n this.checkClose();\n },\n\n // Iframes can't resize themselves, so they need the parent to take care of it for them.\n\n [ POST_MESSAGE.RESIZE ](source : CrossDomainWindowType, data : Object) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.driver.allowResize) {\n return this.resize(data.width, data.height);\n }\n });\n },\n\n [ POST_MESSAGE.HIDE ]() {\n this.hide();\n },\n\n [ POST_MESSAGE.SHOW ]() {\n this.show();\n },\n\n\n // The child encountered an error\n\n [ POST_MESSAGE.ERROR ](source : CrossDomainWindowType, data : Object) {\n this.error(new Error(data.error));\n }\n };\n }\n\n\n /* Resize\n ------\n\n Resize the child component window\n */\n\n resize(width : ?(number | string), height : ?(number | string)) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.component.log(`resize`, { height: stringify(height), width: stringify(width) });\n this.driver.resize.call(this, width, height);\n if (this.props.onResize) {\n this.props.onResize();\n }\n });\n }\n\n\n /* Hide\n ----\n\n Hide the component and any parent template\n */\n\n hide() : void {\n\n if (this.container) {\n hideElement(this.container);\n }\n\n return this.driver.hide.call(this);\n }\n\n show() : void {\n\n if (this.container) {\n showElement(this.container);\n }\n\n return this.driver.show.call(this);\n }\n\n\n checkClose() {\n let closeWindowListener = onCloseWindow(this.window, () => {\n this.userClose();\n }, 50, 500);\n\n this.clean.register(closeWindowListener.cancel);\n }\n\n\n userClose() : ZalgoPromise {\n return this.close(CLOSE_REASONS.USER_CLOSED);\n }\n\n\n /* Close\n -----\n\n Close the child component\n */\n\n @memoized\n close(reason : string = CLOSE_REASONS.PARENT_CALL) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n this.component.log(`close`, { reason });\n\n this.event.triggerOnce(EVENTS.CLOSE);\n return this.props.onClose(reason);\n\n }).then(() => {\n\n return ZalgoPromise.all([\n this.closeComponent(),\n this.closeContainer()\n ]);\n\n }).then(() => {\n\n return this.destroy();\n });\n }\n\n\n @memoized\n closeContainer(reason : string = CLOSE_REASONS.PARENT_CALL) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n this.event.triggerOnce(EVENTS.CLOSE);\n return this.props.onClose(reason);\n\n }).then(() => {\n\n return ZalgoPromise.all([\n this.closeComponent(reason),\n this.hideContainer()\n ]);\n\n }).then(() => {\n\n return this.destroyContainer();\n });\n }\n\n\n @memoized\n destroyContainer() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n this.clean.run('destroyContainerEvents');\n this.clean.run('destroyContainerTemplate');\n });\n }\n\n\n @memoized\n closeComponent(reason : string = CLOSE_REASONS.PARENT_CALL) : ZalgoPromise {\n\n let win = this.window;\n\n return ZalgoPromise.try(() => {\n\n return this.cancelContainerEvents();\n\n }).then(() => {\n\n this.event.triggerOnce(EVENTS.CLOSE);\n return this.props.onClose(reason);\n\n }).then(() => {\n\n return this.hideComponent();\n\n }).then(() => {\n\n return this.destroyComponent();\n\n }).then(() => {\n\n // IE in metro mode -- child window needs to close itself, or close will hang\n\n if (this.childExports && this.context === CONTEXT_TYPES.POPUP && !isWindowClosed(win)) {\n this.childExports.close().catch(noop);\n }\n });\n }\n\n destroyComponent() {\n this.clean.run('destroyUnloadWindowListener');\n this.clean.run('destroyCloseWindowListener');\n this.clean.run('destroyContainerEvents');\n this.clean.run('destroyWindow');\n }\n\n @memoized\n showContainer() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.props.onDisplay) {\n return this.props.onDisplay();\n }\n }).then(() => {\n if (this.container) {\n return showAndAnimate(this.container, ANIMATION_NAMES.SHOW_CONTAINER, this.clean.register);\n }\n });\n }\n\n @memoized\n showComponent() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.props.onDisplay) {\n return this.props.onDisplay();\n }\n }).then(() => {\n if (this.element) {\n return showAndAnimate(this.element, ANIMATION_NAMES.SHOW_COMPONENT, this.clean.register);\n }\n });\n }\n\n @memoized\n hideContainer() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.container) {\n return animateAndHide(this.container, ANIMATION_NAMES.HIDE_CONTAINER, this.clean.register);\n } else {\n return ZalgoPromise.resolve();\n }\n });\n }\n\n @memoized\n hideComponent() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.element) {\n return animateAndHide(this.element, ANIMATION_NAMES.HIDE_COMPONENT, this.clean.register);\n } else {\n return ZalgoPromise.resolve();\n }\n });\n }\n\n\n /* Focus\n -----\n\n Focus the child component window\n */\n\n focus() {\n\n if (this.window && !isWindowClosed(this.window)) {\n this.component.log(`focus`);\n this.window.focus();\n\n } else {\n\n throw new Error(`No window to focus`);\n }\n }\n\n\n /* Create Component Template\n -------------------------\n\n Creates an initial template and stylesheet which are loaded into the child window, to be displayed before the url is loaded\n */\n\n @memoized\n createPrerenderTemplate() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (!this.component.prerenderTemplate) {\n return ZalgoPromise.resolve();\n }\n\n return ZalgoPromise.try(() => {\n\n if (this.prerenderIframe) {\n return awaitFrameLoad(this.prerenderIframe).then(() => this.prerenderWindow);\n } else {\n return this.prerenderWindow;\n }\n\n }).then(win => {\n\n let doc;\n\n try {\n doc = win.document;\n } catch (err) {\n return;\n }\n\n let el;\n\n try {\n el = this.renderTemplate(this.component.prerenderTemplate, {\n jsxDom: jsxDom.bind(doc),\n document: doc\n });\n } catch (err) {\n this.component.logError('preprender_error', { err: err.stack ? err.stack : err.toString() });\n console.error(err.stack ? err.stack : err); // eslint-disable-line no-console\n return;\n }\n\n try {\n writeElementToWindow(win, el);\n } catch (err) {\n this.component.logError('preprender_error', { err: err.stack ? err.stack : err.toString() });\n console.error(err.stack ? err.stack : err); // eslint-disable-line no-console\n }\n\n let { width = false, height = false, element = 'body' } = (typeof this.component.autoResize === 'object' && this.component.autoResize !== null)\n ? this.component.autoResize\n : {};\n\n element = getElementSafe(element, doc);\n\n if (element && (width || height)) {\n onResize(element, ({ width: newWidth, height: newHeight }) => {\n this.resize(width ? newWidth : undefined, height ? newHeight : undefined);\n }, { width, height, win });\n }\n });\n });\n }\n\n\n /* Create Parent Template\n ----------------------\n\n Create a template and stylesheet for the parent template behind the element\n */\n\n renderTemplate(renderer : (RenderOptionsType) => HTMLElement, options : Object = {}) : HTMLElement {\n\n let {\n width = `${ DEFAULT_DIMENSIONS.WIDTH }px`,\n height = `${ DEFAULT_DIMENSIONS.HEIGHT }px`\n } = (this.component.dimensions || {});\n\n return renderer.call(this, {\n id: `${ CLASS_NAMES.ZOID }-${ this.component.tag }-${ this.props.uid }`,\n props: renderer.__xdomain__ ? null : this.props,\n tag: this.component.tag,\n context: this.context,\n outlet: this.getOutlet(),\n CLASS: CLASS_NAMES,\n ANIMATION: ANIMATION_NAMES,\n CONTEXT: CONTEXT_TYPES,\n EVENT: EVENTS,\n actions: {\n close: () => this.userClose(),\n focus: () => this.focus()\n },\n on: (eventName, handler) => this.on(eventName, handler),\n jsxDom,\n document,\n dimensions: { width, height },\n ...options\n });\n }\n\n @memoized\n openContainer(element : ?HTMLElement) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n let el;\n\n if (element) {\n el = getElement(element);\n } else {\n el = document.body;\n }\n\n if (!el) {\n throw new Error(`Could not find element to open container into`);\n }\n\n if (!this.component.containerTemplate) {\n if (this.driver.renderedIntoContainerTemplate) {\n throw new Error(`containerTemplate needed to render ${ this.context }`);\n }\n\n return;\n }\n\n let container = this.renderTemplate(this.component.containerTemplate, {\n container: el\n });\n\n this.container = container;\n hideElement(this.container);\n appendChild(el, this.container);\n\n if (this.driver.renderedIntoContainerTemplate) {\n this.element = this.getOutlet();\n hideElement(this.element);\n\n if (!this.element) {\n throw new Error('Could not find element to render component into');\n }\n\n hideElement(this.element);\n }\n\n this.clean.register('destroyContainerTemplate', () => {\n\n if (this.container && this.container.parentNode) {\n this.container.parentNode.removeChild(this.container);\n }\n\n delete this.container;\n });\n });\n }\n\n cancelContainerEvents() {\n this.clean.run('destroyContainerEvents');\n }\n\n\n /* Destroy\n -------\n\n Close the component and clean up any listeners and state\n */\n\n destroy() : ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (this.clean.hasTasks()) {\n this.component.log(`destroy`);\n flush();\n return this.clean.all();\n }\n });\n }\n\n\n tryInit(method : () => mixed) : ZalgoPromise> {\n return ZalgoPromise.try(method).catch(err => {\n this.onInit.reject(err);\n }).then(() => {\n return this.onInit;\n });\n }\n\n\n /* Error\n -----\n\n Handle an error\n */\n\n error(err : mixed) : ZalgoPromise {\n // eslint-disable-next-line promise/no-promise-in-callback\n return ZalgoPromise.try(() => {\n\n this.handledErrors = this.handledErrors || [];\n\n if (this.handledErrors.indexOf(err) !== -1) {\n // $FlowFixMe\n return;\n }\n\n this.handledErrors.push(err);\n\n this.onInit.reject(err);\n\n return this.destroy();\n\n }).then(() => {\n\n if (this.props.onError) {\n return this.props.onError(err);\n }\n\n }).catch(errErr => { // eslint-disable-line unicorn/catch-error-name\n\n throw new Error(`An error was encountered while handling error:\\n\\n ${ stringifyError(err) }\\n\\n${ stringifyError(errErr) }`);\n\n }).then(() => {\n\n if (!this.props.onError) {\n throw err;\n }\n });\n }\n\n static activeComponents : Array> = []\n\n static destroyAll() : ZalgoPromise {\n let results = [];\n\n while (ParentComponent.activeComponents.length) {\n results.push(ParentComponent.activeComponents[0].destroy());\n }\n\n return ZalgoPromise.all(results).then(noop);\n }\n}\n","/* @flow */\n\nimport { onCloseWindow, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { BaseComponent } from '../base';\nimport { ParentComponent } from '../parent';\nimport { RENDER_DRIVERS, type ContextDriverType } from '../parent/drivers';\nimport type { Component } from '../component';\nimport { noop } from '../../lib';\nimport type { CancelableType, DimensionsType } from '../../types';\n\nexport type DelegatePropsType = {\n uid : string,\n dimensions : DimensionsType,\n onClose : () => ?ZalgoPromise,\n onDisplay : () => ?ZalgoPromise\n};\n\nexport type DelegateOptionsType = {\n context : string,\n props : DelegatePropsType,\n childWindowName : string,\n isWindowClosed : () => ZalgoPromise,\n \n overrides : {\n focus : () => ZalgoPromise,\n userClose : (string) => ZalgoPromise,\n getDomain : () => ZalgoPromise,\n error : (mixed) => ZalgoPromise,\n on : (string, () => void) => CancelableType\n }\n};\n\nexport class DelegateComponent

extends BaseComponent

{\n\n source : CrossDomainWindowType\n context : string\n props : DelegatePropsType\n\n focus : () => ZalgoPromise\n userClose : (string) => ZalgoPromise\n getDomain : () => ZalgoPromise\n error : (mixed) => ZalgoPromise\n on : (string, () => void) => CancelableType\n\n childWindowName : string\n isWindowClosed : () => ZalgoPromise\n\n constructor(component : Component

, source : CrossDomainWindowType, options : DelegateOptionsType) {\n super();\n\n this.component = component;\n this.clean.set('source', source);\n\n this.context = options.context;\n\n this.props = {\n uid: options.props.uid,\n dimensions: options.props.dimensions,\n onClose: options.props.onClose,\n onDisplay: options.props.onDisplay\n };\n\n for (let propName of component.getPropNames()) {\n // $FlowFixMe\n let prop = this.component.getProp(propName);\n\n if (prop.allowDelegate) {\n this.props[propName] = options.props[propName];\n }\n }\n\n this.focus = () => {\n return ZalgoPromise.all([\n this.isWindowClosed().then(closed => {\n if (!closed) {\n window.open('', this.childWindowName);\n }\n }),\n options.overrides.focus.call(this)\n ]).then(noop);\n };\n\n this.clean.register('destroyFocusOverride', () => {\n // $FlowFixMe\n this.focus = noop;\n });\n\n this.userClose = options.overrides.userClose;\n this.getDomain = options.overrides.getDomain;\n this.error = options.overrides.error;\n this.on = options.overrides.on;\n\n let delegateOverrides = RENDER_DRIVERS[options.context].delegateOverrides;\n\n for (let key of Object.keys(delegateOverrides)) {\n // $FlowFixMe\n this[key] = ParentComponent.prototype[key];\n }\n\n this.childWindowName = options.childWindowName;\n this.isWindowClosed = options.isWindowClosed;\n\n ParentComponent.prototype.registerActiveComponent.call(this);\n\n this.watchForClose();\n }\n\n get driver() : ContextDriverType {\n\n if (!this.context) {\n throw new Error('Context not set');\n }\n\n return RENDER_DRIVERS[this.context];\n }\n\n watchForClose() {\n let closeWindowListener = onCloseWindow(this.source, () => this.destroy(), 3000);\n this.clean.register('destroyCloseWindowListener', closeWindowListener.cancel);\n }\n\n getOverrides(context : string) : { [string] : mixed } {\n\n let delegateOverrides = RENDER_DRIVERS[context].delegateOverrides;\n\n let overrides = {};\n\n let self = this;\n\n for (let key of Object.keys(delegateOverrides)) {\n overrides[key] = function delegateOverride() : mixed {\n // $FlowFixMe\n return ParentComponent.prototype[key].apply(self, arguments);\n };\n }\n\n return overrides;\n }\n\n destroy() : ZalgoPromise {\n return this.clean.all();\n }\n}\n","/* @flow */\n\nimport { PROP_TYPES_LIST, CONTEXT_TYPES_LIST } from '../../constants';\nimport { isPerc, isPx } from '../../lib';\n\nimport type { ComponentOptionsType } from './index';\n\nfunction validatePropDefinitions

(options : ComponentOptionsType

) {\n\n if (options.props && !(typeof options.props === 'object')) {\n throw new Error(`Expected options.props to be an object`);\n }\n\n if (options.props) {\n for (let key of Object.keys(options.props)) {\n\n // $FlowFixMe\n let prop = options.props[key];\n\n if (!prop || !(typeof prop === 'object')) {\n throw new Error(`Expected options.props.${ key } to be an object`);\n }\n\n if (!prop.type) {\n throw new Error(`Expected prop.type`);\n }\n\n if (PROP_TYPES_LIST.indexOf(prop.type) === -1) {\n throw new Error(`Expected prop.type to be one of ${ PROP_TYPES_LIST.join(', ') }`);\n }\n\n if (prop.required && prop.def) {\n throw new Error(`Required prop can not have a default value`);\n }\n }\n }\n}\n\n// eslint-disable-next-line complexity\nexport function validate

(options : ?ComponentOptionsType

) { // eslint-ignore-line\n\n if (!options) {\n throw new Error(`Expecred options to be passed`);\n }\n\n if (!options.tag || !options.tag.match(/^[a-z0-9-]+$/)) {\n throw new Error(`Invalid options.tag: ${ options.tag }`);\n }\n\n validatePropDefinitions(options);\n\n if (options.dimensions) {\n if (options.dimensions && !isPx(options.dimensions.width) && !isPerc(options.dimensions.width)) {\n throw new Error(`Expected options.dimensions.width to be a px or % string value`);\n }\n\n if (options.dimensions && !isPx(options.dimensions.height) && !isPerc(options.dimensions.height)) {\n throw new Error(`Expected options.dimensions.height to be a px or % string value`);\n }\n }\n\n if (options.contexts) {\n\n if (options.contexts.popup && !__ZOID__.__POPUP_SUPPORT__) {\n throw new Error(`Popups not supported in this build -- please use the full zoid.js build`);\n }\n\n let anyEnabled = false;\n\n for (let context of Object.keys(options.contexts)) {\n\n if (CONTEXT_TYPES_LIST.indexOf(context) === -1) {\n throw new Error(`Unsupported context type: ${ context }`);\n }\n\n if ((options.contexts && options.contexts[context]) || (options.contexts && options.contexts[context] === undefined)) {\n anyEnabled = true;\n }\n }\n\n if (!anyEnabled) {\n throw new Error(`No context type is enabled`);\n }\n }\n\n if (options.defaultContext) {\n if (CONTEXT_TYPES_LIST.indexOf(options.defaultContext) === -1) {\n throw new Error(`Unsupported context type: ${ options.defaultContext || 'unknown' }`);\n }\n\n if (options.contexts && options.defaultContext && !options.contexts[options.defaultContext]) {\n throw new Error(`Disallowed default context type: ${ options.defaultContext || 'unknown' }`);\n }\n }\n\n if (options.url && options.buildUrl) {\n throw new Error(`Can not pass both options.url and options.buildUrl`);\n }\n\n if (options.defaultEnv) {\n if (typeof options.defaultEnv !== 'string') {\n throw new TypeError(`Expected options.defaultEnv to be a string`);\n }\n\n if (!options.buildUrl && typeof options.url !== 'object') {\n throw new Error(`Expected options.url to be an object mapping env->url`);\n }\n\n if (options.url && typeof options.url === 'object' && !options.url[options.defaultEnv]) {\n throw new Error(`No url found for default env: ${ options.defaultEnv }`);\n }\n }\n\n if (options.url && typeof options.url === 'object') {\n\n if (!options.defaultEnv) {\n throw new Error(`Must pass options.defaultEnv with env->url mapping`);\n }\n\n for (let env of Object.keys(options.url)) {\n if (!options.url[env]) {\n throw new Error(`No url specified for env: ${ env }`);\n }\n }\n }\n\n if (options.prerenderTemplate && typeof options.prerenderTemplate !== 'function') {\n throw new Error(`Expected options.prerenderTemplate to be a function`);\n }\n\n if (options.containerTemplate && typeof options.containerTemplate !== 'function') {\n throw new Error(`Expected options.containerTemplate to be a function`);\n }\n}\n","/* @flow */\n/* @jsx jsxDom */\n\nimport { type RenderOptionsType } from '../../parent';\n\nexport function defaultContainerTemplate({ id, tag, context, CLASS, outlet, jsxDom, dimensions : { width, height } } : RenderOptionsType) : HTMLElement {\n\n return (\n

\n \n\n { outlet }\n
\n );\n}\n","/* @flow */\n/* @jsx jsxDom */\n\nimport { type RenderOptionsType } from '../../parent';\n\nexport function defaultPrerenderTemplate({ jsxDom } : RenderOptionsType) : HTMLElement {\n return (\n \n \n \n \n \n
\n
\n
\n \n \n );\n}\n","/* @flow */\n\nexport * from './container';\nexport * from './component';\n","/* @flow */\n\nimport { type ZalgoPromise } from 'zalgo-promise/src';\nimport type { SameDomainWindowType } from 'cross-domain-utils/src';\n\nimport { uniqueID } from '../../lib';\nimport { type DimensionsType } from '../../types';\n\ntype PropDefinitionType = {\n type : S,\n alias? : string,\n value? : T,\n required? : boolean,\n noop? : boolean,\n once? : boolean,\n memoize? : boolean,\n promisify? : boolean,\n queryParam? : boolean | string | (T) => (string | ZalgoPromise),\n queryValue? : (T) => (ZalgoPromise | mixed),\n sendToChild? : boolean,\n allowDelegate? : boolean,\n validate? : (T, PropsType & P) => void,\n decorate? : (T, PropsType & P) => (void | ZalgoPromise | T),\n def? : (P) => ?T,\n sameDomain? : boolean,\n serialization? : 'json' | 'dotify',\n childDecorate? : (T) => ?T,\n denodeify? : boolean\n};\n\nexport type BooleanPropDefinitionType = PropDefinitionType;\nexport type StringPropDefinitionType = PropDefinitionType;\nexport type NumberPropDefinitionType = PropDefinitionType;\nexport type FunctionPropDefinitionType = PropDefinitionType;\nexport type ObjectPropDefinitionType = PropDefinitionType;\n\nexport type MixedPropDefinitionType

= BooleanPropDefinitionType<*, P> | StringPropDefinitionType<*, P> | NumberPropDefinitionType<*, P> | FunctionPropDefinitionType<*, P> | ObjectPropDefinitionType<*, P>;\n\nexport type UserPropsDefinitionType

= {\n [string] : MixedPropDefinitionType

\n};\n\nexport type EventHandlerType = (T) => void | ZalgoPromise;\n\ntype envPropType = string;\ntype uidPropType = string;\ntype urlPropType = string;\ntype versionPropType = string;\ntype timeoutPropType = number;\ntype logLevelPropType = string;\ntype dimensionsPropType = DimensionsType;\ntype winPropType = SameDomainWindowType;\n\ntype onDisplayPropType = EventHandlerType;\ntype onEnterPropType = EventHandlerType;\ntype onRenderPropType = EventHandlerType;\ntype onClosePropType = EventHandlerType;\ntype onResizePropType = EventHandlerType;\ntype onTimeoutPropType = EventHandlerType;\ntype onErrorPropType = EventHandlerType;\n\nexport type BuiltInPropsType = {\n env : envPropType,\n uid : uidPropType,\n url? : urlPropType,\n version? : versionPropType,\n timeout? : timeoutPropType,\n logLevel : logLevelPropType,\n dimensions? : dimensionsPropType,\n win? : winPropType,\n\n onDisplay : onDisplayPropType,\n onEnter : onEnterPropType,\n onRender : onRenderPropType,\n onClose : onClosePropType,\n onResize : onResizePropType,\n onTimeout : onTimeoutPropType,\n onError? : onErrorPropType\n};\n\nexport type PropsType = {\n env? : envPropType,\n uid? : uidPropType,\n url? : urlPropType,\n version? : versionPropType,\n timeout? : timeoutPropType,\n logLevel? : logLevelPropType,\n dimensions? : dimensionsPropType,\n win? : winPropType,\n\n onDisplay? : onDisplayPropType,\n onEnter? : onEnterPropType,\n onRender? : onRenderPropType,\n onClose? : onClosePropType,\n onResize? : onResizePropType,\n onTimeout? : onTimeoutPropType,\n onError? : onErrorPropType\n};\n\nexport type BuiltInPropsDefinitionType

= {\n env : StringPropDefinitionType,\n uid : StringPropDefinitionType,\n url : StringPropDefinitionType,\n version : StringPropDefinitionType,\n timeout : NumberPropDefinitionType,\n logLevel : StringPropDefinitionType,\n dimensions : ObjectPropDefinitionType,\n win : ObjectPropDefinitionType,\n\n onDisplay : FunctionPropDefinitionType,\n onEnter : FunctionPropDefinitionType,\n onRender : FunctionPropDefinitionType,\n onClose : FunctionPropDefinitionType,\n onResize : FunctionPropDefinitionType,\n onTimeout : FunctionPropDefinitionType,\n onError : FunctionPropDefinitionType\n};\n\n/* Internal Props\n --------------\n\n We define and use certain props by default, for configuration and events that are used at the framework level.\n These follow the same format as regular props, and are classed as reserved words that may not be overriden by users.\n*/\n\nexport function getInternalProps

() : BuiltInPropsDefinitionType

{\n return {\n\n // The desired env in which the component is being rendered. Used to determine the correct url\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n def() : string {\n return this.defaultEnv;\n }\n },\n\n uid: {\n type: 'string',\n def() : string {\n return uniqueID();\n },\n queryParam: true\n },\n\n logLevel: {\n type: 'string',\n required: false,\n queryParam: true,\n def() : string {\n return this.defaultLogLevel;\n }\n },\n\n // A custom url to use to render the component\n\n url: {\n type: 'string',\n required: false,\n promise: true,\n sendToChild: false\n },\n\n win: {\n type: 'object',\n required: false,\n sendToChild: false\n },\n\n dimensions: {\n type: 'object',\n required: false\n },\n\n version: {\n type: 'string',\n required: false,\n queryParam: true,\n def() : string {\n return this.version;\n }\n },\n\n // A millisecond timeout before onTimeout is called\n\n timeout: {\n type: 'number',\n required: false,\n sendToChild: false\n },\n\n onDisplay: {\n type: 'function',\n required: false,\n noop: true,\n promisify: true,\n memoize: true,\n sendToChild: false\n },\n\n onEnter: {\n type: 'function',\n required: false,\n noop: true,\n promisify: true,\n sendToChild: false\n },\n\n // When we get an INIT message from the child\n\n onRender: {\n type: 'function',\n required: false,\n noop: true,\n promisify: true,\n sendToChild: false\n },\n\n // When the user closes the component.\n\n onClose: {\n type: 'function',\n required: false,\n noop: true,\n once: true,\n promisify: true,\n sendToChild: false\n },\n\n onResize: {\n type: 'function',\n required: false,\n noop: true,\n sendToChild: false\n },\n\n // When we time-out before getting an INIT message from the child. Defaults to onError if no handler passed.\n\n onTimeout: {\n type: 'function',\n required: false,\n memoize: true,\n promisify: true,\n sendToChild: false,\n def() : (() => void) {\n return function onTimeout(err : mixed) : void {\n if (this.props.onError) {\n return this.props.onError(err);\n }\n throw err;\n };\n }\n },\n\n // When the component experiences an error\n\n onError: {\n type: 'function',\n required: false,\n promisify: true,\n sendToChild: true,\n once: true,\n def() : (() => void) {\n return function onError(err : mixed) {\n setTimeout(() => {\n throw err;\n });\n };\n }\n }\n };\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { on, send } from 'post-robot/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { getDomain, getDomainFromUrl, matchDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { BaseComponent } from '../base';\nimport { ChildComponent } from '../child';\nimport { ParentComponent, type RenderOptionsType } from '../parent';\nimport { DelegateComponent, type DelegateOptionsType } from '../delegate';\nimport { isZoidComponentWindow, getComponentMeta } from '../window';\nimport { CONTEXT_TYPES, POST_MESSAGE, WILDCARD } from '../../constants';\nimport { angular, angular2, glimmer, react, vue, script } from '../../drivers/index';\nimport { info, error, warn, setLogLevel, memoize } from '../../lib';\nimport type { EnvStringRegExp, CssDimensionsType, StringMatcherType, ElementRefType, EnvString } from '../../types';\n\nimport { validate } from './validate';\nimport { defaultContainerTemplate, defaultPrerenderTemplate } from './templates';\nimport { getInternalProps, type UserPropsDefinitionType, type BuiltInPropsDefinitionType, type PropsType, type BuiltInPropsType, type MixedPropDefinitionType } from './props';\n\nconst drivers = { angular, angular2, glimmer, react, vue, script };\n\n/* Component\n ---------\n\n This is the spec for the component. The idea is, when I call zoid.create(), it will create a new instance\n of Component with the blueprint needed to set up ParentComponents and ChildComponents.\n\n This is the one portion of code which is required by -- and shared to -- both the parent and child windows, and\n contains all of the configuration needed for them to set themselves up.\n*/\n\nexport type ComponentOptionsType

= {\n\n tag : string,\n\n url? : EnvString,\n buildUrl? : (BuiltInPropsType & P) => string | ZalgoPromise,\n\n domain? : EnvStringRegExp,\n bridgeUrl? : EnvString,\n bridgeDomain? : EnvString,\n\n props? : UserPropsDefinitionType

,\n\n dimensions? : CssDimensionsType,\n scrolling? : boolean,\n autoResize? : boolean | { width? : boolean, height? : boolean, element? : string },\n listenForResize? : boolean,\n\n defaultLogLevel? : string,\n allowedParentDomains? : StringMatcherType,\n\n version? : string,\n defaultEnv? : string,\n\n contexts? : { iframe? : boolean, popup? : boolean },\n defaultContext? : string,\n\n containerTemplate? : (RenderOptionsType) => HTMLElement,\n prerenderTemplate? : (RenderOptionsType) => HTMLElement,\n\n validate? : (Component

, UserPropsDefinitionType

) => void,\n\n unsafeRenderTo? : boolean\n};\n\nexport type ComponentDriverType = {\n global : () => ?T,\n register : (Component

, T) => mixed\n};\n\nexport class Component

extends BaseComponent

{\n\n name : string\n looseProps : boolean\n\n tag : string\n url : EnvString\n\n domain : EnvStringRegExp\n bridgeUrl : EnvString\n bridgeDomain : EnvString\n\n props : UserPropsDefinitionType

\n builtinProps : BuiltInPropsDefinitionType

\n\n dimensions : CssDimensionsType\n scrolling : boolean\n autoResize : ?(boolean | { width? : boolean, height? : boolean, element? : string })\n listenForResize : ?boolean\n\n defaultLogLevel : string\n allowedParentDomains : StringMatcherType\n\n version : string\n defaultEnv : string\n buildUrl : (BuiltInPropsType & P) => string | ZalgoPromise\n\n contexts : { iframe? : boolean, popup? : boolean }\n defaultContext : string\n\n containerTemplate : (RenderOptionsType) => HTMLElement\n prerenderTemplate : (RenderOptionsType) => HTMLElement\n\n validate : (Component

, (PropsType & P)) => void\n\n unsafeRenderTo : ?boolean\n\n driverCache : { [string] : mixed }\n\n xchild : ?ChildComponent

\n xprops : ?P\n\n constructor(options : ComponentOptionsType

) {\n super();\n validate(options);\n\n // The tag name of the component. Used by some drivers (e.g. angular) to turn the component into an html element,\n // e.g. \n\n this.addProp(options, 'tag');\n\n this.addProp(options, 'defaultLogLevel', 'info');\n\n this.addProp(options, 'allowedParentDomains', WILDCARD);\n\n // initially set log level to default log level configured when creating component\n setLogLevel(this.defaultLogLevel);\n\n if (Component.components[this.tag]) {\n throw new Error(`Can not register multiple components with the same tag`);\n }\n\n // Name of the component, used for logging. Auto-generated from the tag name by default.\n\n this.addProp(options, 'name', this.tag.replace(/-/g, '_'));\n\n // A json based spec describing what kind of props the component accepts. This is used to validate any props before\n // they are passed down to the child.\n\n this.builtinProps = getInternalProps();\n this.props = options.props || {};\n\n if (!options.props) {\n this.looseProps = true;\n }\n\n // The dimensions of the component, e.g. { width: '300px', height: '150px' }\n\n this.addProp(options, 'dimensions');\n this.addProp(options, 'scrolling');\n this.addProp(options, 'listenForResize');\n\n this.addProp(options, 'version', 'latest');\n\n // The default environment we should render to if none is specified in the parent\n\n this.addProp(options, 'defaultEnv');\n\n // A mapping of env->url, used to determine which url to load for which env\n\n this.addProp(options, 'buildUrl');\n\n this.addProp(options, 'url');\n this.addProp(options, 'domain');\n\n this.addProp(options, 'bridgeUrl');\n this.addProp(options, 'bridgeDomain');\n\n this.addProp(options, 'attributes', {});\n\n // A url to use by default to render the component, if not using envs\n\n\n // The allowed contexts. For example { iframe: true, popup: false }\n\n this.addProp(options, 'contexts', { iframe: true, popup: false });\n\n // The default context to render to\n\n this.addProp(options, 'defaultContext');\n\n // Auto Resize option\n\n this.addProp(options, 'autoResize', false);\n\n // Templates and styles for the parent page and the initial rendering of the component\n\n this.addProp(options, 'containerTemplate', defaultContainerTemplate);\n this.addProp(options, 'prerenderTemplate', defaultPrerenderTemplate);\n\n // Validation\n\n this.addProp(options, 'validate');\n\n // Security\n\n this.addProp(options, 'unsafeRenderTo', false);\n\n // A mapping of tag->component so we can reference components by string tag name\n\n Component.components[this.tag] = this;\n\n // Register all of the drivers for instantiating components. The model used is -- there's a standard javascript\n // way of rendering a component, then each other technology (e.g. react) needs to hook into that interface.\n // This makes us a little more pluggable and loosely coupled.\n this.registerDrivers();\n this.registerChild();\n this.listenDelegate();\n }\n\n @memoize\n getPropNames() : Array {\n let props = Object.keys(this.props);\n\n for (let key of Object.keys(this.builtinProps)) {\n if (props.indexOf(key) === -1) {\n props.push(key);\n }\n }\n\n return props;\n }\n\n // $FlowFixMe\n getProp(name : string) : MixedPropDefinitionType

{\n // $FlowFixMe\n return this.props[name] || this.builtinProps[name];\n }\n\n registerDrivers() {\n this.driverCache = {};\n\n for (let driverName of Object.keys(drivers)) {\n if (driverName.indexOf('_') === 0) {\n continue;\n }\n\n let driver = drivers[driverName];\n let glob = driver.global();\n if (glob) {\n this.driver(driverName, glob);\n }\n }\n }\n\n driver(name : string, dep : mixed) : mixed {\n if (!drivers[name]) {\n throw new Error(`Could not find driver for framework: ${ name }`);\n }\n\n if (!this.driverCache[name]) {\n this.driverCache[name] = drivers[name].register(this, dep);\n }\n\n return this.driverCache[name];\n }\n\n registerChild() : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n if (this.isChild()) {\n return new ChildComponent(this);\n }\n });\n }\n\n listenDelegate() {\n on(`${ POST_MESSAGE.ALLOW_DELEGATE }_${ this.name }`, () => {\n return true;\n });\n\n on(`${ POST_MESSAGE.DELEGATE }_${ this.name }`, ({ source, origin, data }) => {\n\n let domain = this.getDomain(null, data.env || this.defaultEnv);\n\n if (!domain) {\n throw new Error(`Could not determine domain to allow remote render`);\n }\n\n if (!matchDomain(domain, origin)) {\n throw new Error(`Can not render from ${ origin } - expected ${ domain.toString() }`);\n }\n\n let delegate = this.delegate(source, data.options);\n\n return {\n overrides: delegate.getOverrides(data.context),\n destroy: () => delegate.destroy()\n };\n });\n }\n\n canRenderTo(win : CrossDomainWindowType) : ZalgoPromise {\n return send(win, `${ POST_MESSAGE.ALLOW_DELEGATE }_${ this.name }`).then(({ data }) => {\n return data;\n }).catch(() => {\n return false;\n });\n }\n\n\n getValidDomain(url : ?string) : ?(string | RegExp) {\n\n if (!url) {\n return;\n }\n\n let domain = getDomainFromUrl(url);\n\n if (typeof this.domain === 'string' && domain === this.domain) {\n return domain;\n }\n\n let domains = this.domain;\n\n if (domains && typeof domains === 'object' && !(domains instanceof RegExp)) {\n for (let env of Object.keys(domains)) {\n\n if (env === 'test') {\n continue;\n }\n\n if (domain === domains[env]) {\n return domain;\n }\n }\n }\n }\n\n\n getDomain(url : ?string, env : string) : ?(string | RegExp) {\n\n let domain = this.getForEnv(this.domain, env);\n\n if (domain) {\n return domain;\n }\n\n domain = this.getValidDomain(url);\n\n if (domain) {\n return domain;\n }\n\n // $FlowFixMe\n let envUrl = this.getForEnv(this.url, env);\n\n if (envUrl) {\n // $FlowFixMe\n return getDomainFromUrl(envUrl);\n }\n\n if (url) {\n return getDomainFromUrl(url);\n }\n }\n\n getBridgeUrl(env : string) : ?string {\n // $FlowFixMe\n return this.getForEnv(this.bridgeUrl, env);\n }\n\n getForEnv(item : (string | RegExp) | { [string] : (string | RegExp) }, env : ?string) : ?(string | RegExp) {\n\n if (!item) {\n return;\n }\n\n if (typeof item === 'string' || item instanceof RegExp) {\n return item;\n }\n\n if (!env) {\n env = this.defaultEnv;\n }\n\n if (!env) {\n return;\n }\n\n if (env && typeof item === 'object' && item[env]) {\n return item[env];\n }\n }\n\n getBridgeDomain(env : string) : ?string {\n\n // $FlowFixMe\n let bridgeDomain = this.getForEnv(this.bridgeDomain, env);\n\n if (bridgeDomain) {\n // $FlowFixMe\n return bridgeDomain;\n }\n\n let bridgeUrl = this.getBridgeUrl(env);\n\n if (bridgeUrl) {\n return getDomainFromUrl(bridgeUrl);\n }\n }\n\n getUrl(env : string, props : BuiltInPropsType & P) : (string | ZalgoPromise) {\n\n // $FlowFixMe\n let url = this.getForEnv(this.url, env);\n\n if (url) {\n // $FlowFixMe\n return url;\n }\n\n if (this.buildUrl) {\n return this.buildUrl(props);\n }\n\n throw new Error(`Unable to get url`);\n }\n\n isZoidComponent() : boolean {\n return isZoidComponentWindow();\n }\n\n isChild() : boolean {\n if (!isZoidComponentWindow()) {\n return false;\n }\n\n const { tag, childDomain } = getComponentMeta();\n\n if (childDomain && childDomain !== getDomain()) {\n return false;\n }\n\n if (tag !== this.tag) {\n return false;\n }\n\n return true;\n }\n\n\n createError(message : string, tag : ?string) : Error {\n return new Error(`[${ tag || this.tag }] ${ message }`);\n }\n\n\n /* Init\n ----\n\n Shortcut to instantiate a component on a parent page, with props\n */\n\n init(props : (PropsType & P), context : ?string, element : ElementRefType) : ParentComponent

{\n return new ParentComponent(this, this.getRenderContext(context, element), { props });\n }\n\n\n delegate(source : CrossDomainWindowType, options : DelegateOptionsType) : DelegateComponent

{\n return new DelegateComponent(this, source, options);\n }\n\n validateRenderContext(context : ?string, element : ?ElementRefType) {\n if (context && !this.contexts[context]) {\n throw new Error(`[${ this.tag }] Can not render to ${ context }`);\n }\n\n if (!element && context === CONTEXT_TYPES.IFRAME) {\n throw new Error(`[${ this.tag }] Context type ${ CONTEXT_TYPES.IFRAME } requires an element selector`);\n }\n }\n\n getDefaultContext() : string {\n if (this.defaultContext) {\n return this.defaultContext;\n } else if (this.contexts[CONTEXT_TYPES.IFRAME]) {\n return CONTEXT_TYPES.IFRAME;\n } else if (this.contexts[CONTEXT_TYPES.POPUP]) {\n return CONTEXT_TYPES.POPUP;\n }\n\n throw new Error(`Can not determine default context`);\n }\n\n getRenderContext(context : ?string, element : ?ElementRefType) : string {\n context = context || this.getDefaultContext();\n this.validateRenderContext(context, element);\n return context;\n }\n\n\n /* Render\n ------\n\n Shortcut to render a parent component\n */\n\n render(props : (PropsType & P), element : ?ElementRefType) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(null, element), { props }).render(element);\n });\n }\n\n renderIframe(props : (PropsType & P), element : ElementRefType) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(CONTEXT_TYPES.IFRAME, element), { props }).render(element);\n });\n }\n\n renderPopup(props : (PropsType & P)) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(CONTEXT_TYPES.POPUP), { props }).render();\n });\n }\n\n renderTo(win : CrossDomainWindowType, props : (PropsType & P), element : ?ElementRefType) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(null, element), { props }).renderTo(win, element);\n });\n }\n\n renderIframeTo(win : CrossDomainWindowType, props : (PropsType & P), element : ElementRefType) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(CONTEXT_TYPES.IFRAME, element), { props }).renderTo(win, element);\n });\n }\n\n renderPopupTo(win : CrossDomainWindowType, props : (PropsType & P)) : ZalgoPromise> {\n return ZalgoPromise.try(() => {\n return new ParentComponent(this, this.getRenderContext(CONTEXT_TYPES.POPUP), { props }).renderTo(win);\n });\n }\n\n prerender(props : (PropsType & P), element : ElementRefType) : { render : ((PropsType & P), ElementRefType) => ZalgoPromise>, renderTo : (CrossDomainWindowType, (PropsType & P), ElementRefType) => ZalgoPromise> } {\n let instance = new ParentComponent(this, this.getRenderContext(null, element), { props });\n instance.prefetch();\n\n return {\n render(innerProps : (PropsType & P), innerElement : ElementRefType) : ZalgoPromise> {\n if (innerProps) {\n instance.updateProps(innerProps);\n }\n\n return instance.render(innerElement);\n },\n\n renderTo(win : CrossDomainWindowType, innerProps : (PropsType & P), innerElement : ElementRefType) : ZalgoPromise> {\n if (innerProps) {\n instance.updateProps(innerProps);\n }\n\n return instance.renderTo(win, innerElement);\n },\n\n get html() : ?ZalgoPromise {\n return instance.html;\n },\n\n set html(value) {\n instance.html = value;\n }\n };\n }\n\n /* Log\n ---\n\n Log an event using the component name\n */\n\n log(event : string, payload : { [ string ] : string } = {}) {\n info(this.name, event, payload);\n }\n\n\n /* Log Warning\n -----------\n\n Log a warning\n */\n\n logWarning(event : string, payload : { [ string ] : string }) {\n warn(this.name, event, payload);\n }\n\n\n /* Log Error\n ---------\n\n Log an error\n */\n\n logError(event : string, payload : { [ string ] : string }) {\n error(this.name, event, payload);\n }\n\n static components : { [string] : Component<*> } = {}\n\n static getByTag(tag : string) : Component {\n return Component.components[tag];\n }\n}\n","/* @flow */\n\nexport * from './component';\nexport * from './parent';\nexport * from './child';\n","/* @flow */\n\nimport { type ZalgoPromise } from 'zalgo-promise/src';\n// eslint-disable-next-line import/no-namespace\nimport * as _postRobot from 'post-robot/src';\n\nimport { Component, type ComponentOptionsType } from './component';\nimport { ParentComponent } from './component/parent';\n// eslint-disable-next-line import/no-namespace\nimport * as _CONSTANTS from './constants';\n\nexport function create

(options : ComponentOptionsType

) : Component

{\n return new Component(options);\n}\n\nexport function getByTag

(tag : string) : Component

{\n return Component.getByTag(tag);\n}\n\nexport { getCurrentScriptDir } from './lib';\n\nexport function destroyAll() : ZalgoPromise {\n return ParentComponent.destroyAll();\n}\nexport let postRobot = _postRobot;\n\nexport * from './error';\n\nexport const CONSTANTS = _CONSTANTS;\n\nexport type ZoidComponent

= Component

;\n","/* @flow */\n\n// eslint-disable-next-line import/no-namespace\nimport * as INTERFACE from './interface';\n\nexport * from './interface';\nexport default INTERFACE;\n","/* @flow */\n\nimport { on, send } from 'post-robot/src';\nimport { isWindowClosed, getDomain, isSameDomain, type CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { config } from '../config';\n\nimport { noop } from './util';\n\nexport function proxyMethod(name : string, win : ?CrossDomainWindowType, originalMethod : Function) : Function {\n\n if (win && getDomain() === config.paypalDomain && !isSameDomain(win)) {\n\n if (win) {\n send(win, `proxy_${ name }`, { originalMethod }).catch(noop);\n }\n\n return originalMethod;\n }\n\n let methods = [];\n\n on(`proxy_${ name }`, { domain: config.paypal_domain_regex }, ({ data }) => {\n methods.push(data.originalMethod);\n });\n\n return function postMessageProxy() : mixed {\n\n methods = methods.filter(method => !isWindowClosed(method.source));\n\n if (methods.length) {\n return methods[methods.length - 1].apply(this, arguments).catch(() => {\n return originalMethod.apply(this, arguments);\n });\n }\n\n return originalMethod.apply(this, arguments);\n };\n}\n","/* @flow */\n\nimport { CONFIG as POSTROBOT_CONFIG } from 'post-robot/src';\nimport { setTransport, getTransport, addPayloadBuilder, addHeaderBuilder, addMetaBuilder,\n addTrackingBuilder, init, logLevels, config as loggerConfig } from 'beaver-logger/client';\nimport { getParent, PROTOCOL } from 'cross-domain-utils/src';\n\nimport { config } from '../config';\nimport { FPTI, PAYMENT_TYPE } from '../constants';\n\nimport { getSessionID, getButtonSessionID } from './session';\nimport { proxyMethod } from './proxy';\nimport { once } from './util';\nimport { getQueryParam } from './dom';\nimport { isPayPalDomain } from './security';\n\nfunction getRefererDomain() : string {\n return (window.xchild && window.xchild.getParentDomain)\n ? window.xchild.getParentDomain()\n : window.location.host;\n}\n\nconst setupProxyLogTransport = once(() => {\n setTransport(proxyMethod('log', getParent(window), getTransport()));\n});\n\nfunction getToken() : ?string {\n if (window.root && window.root.token) {\n return window.root.token;\n }\n\n if (isPayPalDomain()) {\n const queryToken = getQueryParam('token');\n\n if (queryToken) {\n return queryToken;\n }\n }\n}\n\nexport function initLogger() {\n\n setupProxyLogTransport();\n\n addPayloadBuilder(() => {\n return {\n referer: getRefererDomain(),\n host: window.location.host,\n path: window.location.pathname,\n env: config.env,\n country: config.locale.country,\n lang: config.locale.lang,\n uid: getSessionID(),\n ver: __PAYPAL_CHECKOUT__.__MINOR_VERSION__\n };\n });\n\n addHeaderBuilder(() => {\n return {\n 'x-app-name': 'checkoutjs'\n };\n });\n\n addMetaBuilder(() => {\n return {\n state: config.state\n };\n });\n\n addTrackingBuilder((payload = {}) => {\n\n const sessionID = getSessionID();\n const paymentToken = getToken();\n const buttonSessionID = payload[FPTI.KEY.BUTTON_SESSION_UID] || getButtonSessionID();\n\n let contextType;\n let contextID;\n\n if (paymentToken) {\n contextType = FPTI.CONTEXT_TYPE[PAYMENT_TYPE.EC_TOKEN];\n contextID = paymentToken;\n } else if (buttonSessionID) {\n contextType = FPTI.CONTEXT_TYPE.BUTTON_SESSION_ID;\n contextID = buttonSessionID;\n } else {\n contextType = payload[FPTI.KEY.CONTEXT_TYPE];\n contextID = payload[FPTI.KEY.CONTEXT_ID];\n }\n\n return {\n [ FPTI.KEY.FEED ]: FPTI.FEED.CHECKOUTJS,\n [ FPTI.KEY.DATA_SOURCE ]: FPTI.DATA_SOURCE.CHECKOUT,\n [ FPTI.KEY.CONTEXT_TYPE ]: contextType,\n [ FPTI.KEY.CONTEXT_ID ]: contextID,\n [ FPTI.KEY.SELLER_ID ]: config.merchantID,\n [ FPTI.KEY.SESSION_UID ]: sessionID,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: buttonSessionID,\n [ FPTI.KEY.VERSION ]: config.version,\n [ FPTI.KEY.TOKEN ]: paymentToken,\n [ FPTI.KEY.REFERER ]: getRefererDomain()\n };\n });\n\n const prefix = 'ppxo';\n\n if (window.location.protocol !== PROTOCOL.FILE) {\n init({\n uri: config.loggerUrl,\n heartbeat: false,\n logPerformance: false,\n prefix,\n logLevel: __PAYPAL_CHECKOUT__.__DEFAULT_LOG_LEVEL__\n });\n }\n}\n\nexport function setLogLevel(logLevel : string) {\n\n if (logLevels.indexOf(logLevel) === -1) {\n throw new Error(`Invalid logLevel: ${ logLevel }`);\n }\n\n config.logLevel = logLevel;\n loggerConfig.logLevel = logLevel;\n POSTROBOT_CONFIG.LOG_LEVEL = logLevel;\n window.LOG_LEVEL = logLevel;\n}\n","/* @flow */\n\nimport { info, flush as flushLogs } from 'beaver-logger/client';\n\nimport { config } from '../config';\n\nimport { isIEIntranet, getUserAgent } from './device';\nimport { once } from './util';\n\nconst bowserCache = {};\n\nfunction getBowser() : Object {\n\n const userAgent = getUserAgent();\n\n if (bowserCache[userAgent]) {\n return bowserCache[userAgent];\n }\n\n delete require.cache[require.resolve('bowser/bowser.min')];\n const bowser = require('bowser/bowser.min');\n\n bowserCache[userAgent] = bowser;\n\n return bowser;\n}\n\nexport function getBrowser() : { browser? : string, version? : string } {\n\n const bowser = getBowser();\n\n for (const browser of Object.keys(config.SUPPORTED_BROWSERS)) {\n if (bowser[browser]) {\n return { browser, version: bowser.version };\n }\n }\n\n return {};\n}\n\nfunction isBrowserEligible() : boolean {\n\n if (isIEIntranet()) {\n return false;\n }\n\n const bowser = getBowser();\n const { browser, version } = getBrowser();\n\n if (browser && version && bowser.compareVersions([ version, config.SUPPORTED_BROWSERS[browser] ]) === -1) {\n return false;\n }\n\n return true;\n}\n\nconst eligibilityResults = {};\n\nexport function isEligible() : boolean {\n\n if (isIEIntranet()) {\n return false;\n }\n\n const userAgent = window.navigator.userAgent;\n\n if (userAgent && eligibilityResults.hasOwnProperty(userAgent)) {\n return eligibilityResults[userAgent];\n }\n\n const result = isBrowserEligible();\n\n eligibilityResults[userAgent] = result;\n\n return result;\n}\n\nexport const checkRecognizedBrowser = once((state : string) => {\n\n const { browser } = getBrowser();\n\n if (!browser) {\n const { name, version, mobile, android, ios } = getBowser();\n info(`unrecognized_browser_${ state }`, { name, version, mobile, android, ios });\n flushLogs();\n }\n});\n","/* @flow */\n\nimport { warn } from 'beaver-logger/client';\n\nimport { isIE, isIEIntranet, isIECompHeader } from './device';\n\nfunction logWarn(err) : void {\n if (window.console) {\n if (window.console.warn) {\n return window.console.warn(err);\n }\n\n if (window.console.log) {\n return window.console.log(err);\n }\n }\n}\n\nexport function checkForCommonErrors() {\n\n if (JSON.stringify([]) !== '[]') {\n // $FlowFixMe\n if (Array.prototype.toJSON) {\n logWarn(`Custom Array.prototype.toJSON is causing incorrect json serialization of arrays. This is likely to cause issues. Probable cause is Prototype.js`);\n } else {\n logWarn(`JSON.stringify is doing incorrect serialization of arrays. This is likely to cause issues.`);\n }\n\n warn(`json_stringify_array_broken`);\n }\n\n if (JSON.stringify({}) !== '{}') {\n logWarn(`JSON.stringify is doing incorrect serialization of objects. This is likely to cause issues.`);\n\n warn(`json_stringify_object_broken`);\n }\n\n if (isIEIntranet()) {\n warn(`ie_intranet_mode`);\n }\n\n if (isIE() && !isIECompHeader()) {\n warn(`ie_meta_compatibility_header_missing`, {\n message: `Drop tag: ` });\n }\n\n // eslint-disable-next-line no-unused-vars\n function foo(bar, baz, zomg) {\n // pass;\n }\n\n if (foo.bind({ a: 1 }).length !== 3) {\n warn(`function_bind_arrity_overwritten`);\n }\n\n if (window.opener && window.parent !== window) {\n warn(`window_has_opener_and_parent`);\n }\n\n if (window.name && window.name.indexOf('__prerender') === 0) {\n warn(`prerender_running_checkoutjs`);\n }\n\n const context = {};\n\n function returnContext() : typeof context {\n return this;\n }\n\n if (returnContext.bind(context)() !== context) {\n warn(`function_bind_broken`);\n }\n\n if (window.Window && window.constructor && window.Window !== window.constructor) {\n warn(`window_constructor_does_not_match_window`);\n }\n\n // $FlowFixMe\n if (Object.assign && JSON.stringify({ a: 1, b: 2, c: 3 }) !== JSON.stringify({ a: 1, b: 2, c: 3 })) { // eslint-disable-line no-self-compare, compat/compat\n warn(`object_assign_broken`);\n }\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { addPayloadBuilder } from 'beaver-logger/client';\nimport { type SameDomainWindowType } from 'cross-domain-utils/src';\n\ntype RequestOptionsType = {|\n url : string,\n method? : string,\n headers? : { [key : string] : string },\n json? : Object,\n data? : { [key : string] : string },\n body? : string,\n win? : SameDomainWindowType,\n timeout? : number\n|};\n\nconst HEADERS = {\n CONTENT_TYPE: 'content-type',\n ACCEPT: 'accept'\n};\n\nconst headerBuilders = [];\nconst corrids = [];\n\naddPayloadBuilder(() => {\n return {\n prev_corr_ids: corrids.join(',')\n };\n});\n\nfunction parseHeaders(rawHeaders : string = '') : { [string] : string } {\n const result = {};\n for (const line of rawHeaders.trim().split('\\n')) {\n const [ key, ...values ] = line.split(':');\n result[key.toLowerCase()] = values.join(':').trim();\n }\n return result;\n}\n\nexport function request({ url, method = 'get', headers = {}, json, data, body, win = window, timeout = 0 } : RequestOptionsType) : ZalgoPromise {\n\n if (url === '/demo/checkout/api/braintree/client-token/') {\n // $FlowFixMe\n return ZalgoPromise.resolve('eyJ2ZXJzaW9uIjoyLCJhdXRob3JpemF0aW9uRmluZ2VycHJpbnQiOiJjMDFhZmRkM2Y1OTJmNWVhNTNlMzE5MWQwYmIyMWVjYjM5NzNlZGM1MzkwNDZiMjJmNTA2ODEyNzIzZmRlMTJifGNsaWVudF9pZD1jbGllbnRfaWQkc2FuZGJveCQ0ZHByYmZjNnBoNTk1Y2NqXHUwMDI2Y3JlYXRlZF9hdD0yMDE3LTA0LTI2VDIzOjI2OjU5Ljg3OTA3ODYwNiswMDAwXHUwMDI2bWVyY2hhbnRfaWQ9M3cydHR2d2QyNDY1NDhoZCIsImNvbmZpZ1VybCI6Imh0dHBzOi8vYXBpLnNhbmRib3guYnJhaW50cmVlZ2F0ZXdheS5jb206NDQzL21lcmNoYW50cy8zdzJ0dHZ3ZDI0NjU0OGhkL2NsaWVudF9hcGkvdjEvY29uZmlndXJhdGlvbiIsImNoYWxsZW5nZXMiOltdLCJlbnZpcm9ubWVudCI6InNhbmRib3giLCJjbGllbnRBcGlVcmwiOiJodHRwczovL2FwaS5zYW5kYm94LmJyYWludHJlZWdhdGV3YXkuY29tOjQ0My9tZXJjaGFudHMvM3cydHR2d2QyNDY1NDhoZC9jbGllbnRfYXBpIiwiYXNzZXRzVXJsIjoiaHR0cHM6Ly9hc3NldHMuYnJhaW50cmVlZ2F0ZXdheS5jb20iLCJhdXRoVXJsIjoiaHR0cHM6Ly9hdXRoLnZlbm1vLnNhbmRib3guYnJhaW50cmVlZ2F0ZXdheS5jb20iLCJhbmFseXRpY3MiOnsidXJsIjoiaHR0cHM6Ly9jbGllbnQtYW5hbHl0aWNzLnNhbmRib3guYnJhaW50cmVlZ2F0ZXdheS5jb20vM3cydHR2d2QyNDY1NDhoZCJ9LCJ0aHJlZURTZWN1cmVFbmFibGVkIjpmYWxzZSwicGF5cGFsRW5hYmxlZCI6dHJ1ZSwicGF5cGFsIjp7ImRpc3BsYXlOYW1lIjoiYmFyY28uMDMtZmFjaWxpdGF0b3JAZ21haWwuY29tIiwiY2xpZW50SWQiOiJBV3VZdnFnMGtaN2Y5S0V4TVpqZU53T3RjQV8yZVhnOWpMZy1QSnBGX0pnYk44M0YyVml5aEdnV2JCNDg4RGU3MFpucGRBZEI2TUNqekNqSyIsInByaXZhY3lVcmwiOiJodHRwczovL2V4YW1wbGUuY29tIiwidXNlckFncmVlbWVudFVybCI6Imh0dHBzOi8vZXhhbXBsZS5jb20iLCJiYXNlVXJsIjoiaHR0cHM6Ly9hc3NldHMuYnJhaW50cmVlZ2F0ZXdheS5jb20iLCJhc3NldHNVcmwiOiJodHRwczovL2NoZWNrb3V0LnBheXBhbC5jb20iLCJkaXJlY3RCYXNlVXJsIjpudWxsLCJhbGxvd0h0dHAiOnRydWUsImVudmlyb25tZW50Tm9OZXR3b3JrIjpmYWxzZSwiZW52aXJvbm1lbnQiOiJvZmZsaW5lIiwidW52ZXR0ZWRNZXJjaGFudCI6ZmFsc2UsImJyYWludHJlZUNsaWVudElkIjoibWFzdGVyY2xpZW50MyIsImJpbGxpbmdBZ3JlZW1lbnRzRW5hYmxlZCI6dHJ1ZSwibWVyY2hhbnRBY2NvdW50SWQiOiJVU0QiLCJjdXJyZW5jeUlzb0NvZGUiOiJVU0QifSwiY29pbmJhc2VFbmFibGVkIjpmYWxzZSwibWVyY2hhbnRJZCI6IjN3MnR0dndkMjQ2NTQ4aGQiLCJ2ZW5tbyI6Im9mZiJ9');\n }\n\n return new ZalgoPromise((resolve, reject) => {\n\n if ((json && data) || (json && body) || (data && json)) {\n throw new Error(`Only options.json or options.data or options.body should be passed`);\n }\n\n const normalizedHeaders = {};\n\n for (const key of Object.keys(headers)) {\n normalizedHeaders[key.toLowerCase()] = headers[key];\n }\n\n if (json) {\n normalizedHeaders[HEADERS.CONTENT_TYPE] = normalizedHeaders[HEADERS.CONTENT_TYPE] || 'application/json';\n } else if (data || body) {\n normalizedHeaders[HEADERS.CONTENT_TYPE] = normalizedHeaders[HEADERS.CONTENT_TYPE] || 'application/x-www-form-urlencoded; charset=utf-8';\n }\n\n normalizedHeaders[HEADERS.ACCEPT] = normalizedHeaders[HEADERS.ACCEPT] || 'application/json';\n\n for (const headerBuilder of headerBuilders) {\n const builtHeaders = headerBuilder();\n\n for (const key of Object.keys(builtHeaders)) {\n normalizedHeaders[key.toLowerCase()] = builtHeaders[key];\n }\n }\n\n const xhr = new win.XMLHttpRequest();\n\n xhr.addEventListener('load', function xhrLoad() : void {\n\n const responseHeaders = parseHeaders(this.getAllResponseHeaders());\n const corrID = responseHeaders['paypal-debug-id'] || 'unknown';\n\n if (responseHeaders['paypal-debug-id']) {\n corrids.push(responseHeaders['paypal-debug-id']);\n }\n\n if (!this.status) {\n return reject(new Error(`Request to ${ method.toLowerCase() } ${ url } failed: no response status code. Correlation id: ${ corrID }`));\n }\n \n const contentType = responseHeaders['content-type'];\n const isJSON = contentType && (contentType.indexOf('application/json') === 0 || contentType.indexOf('text/json') === 0);\n let res = this.responseText;\n\n try {\n res = JSON.parse(this.responseText);\n } catch (err) {\n if (isJSON) {\n return reject(new Error(`Invalid json: ${ this.responseText }. Correlation id: ${ corrID }`));\n }\n }\n\n if (this.status >= 400) {\n let message = `Request to ${ method.toLowerCase() } ${ url } failed with ${ this.status } error. Correlation id: ${ corrID }`;\n\n if (res) {\n if (typeof res === 'object' && res !== null) {\n res = JSON.stringify(res, null, 4);\n }\n\n message = `${ message }\\n\\n${ res }\\n`;\n }\n\n return reject(new Error(message));\n }\n\n return resolve(res);\n\n }, false);\n\n xhr.addEventListener('error', function xhrError(evt) {\n const corrID = this.getResponseHeader('paypal-debug-id');\n reject(new Error(`Request to ${ method.toLowerCase() } ${ url } failed: ${ evt.toString() }. Correlation id: ${ corrID }`));\n }, false);\n\n xhr.open(method, url, true);\n\n for (const key in normalizedHeaders) {\n if (normalizedHeaders.hasOwnProperty(key)) {\n xhr.setRequestHeader(key, normalizedHeaders[key]);\n }\n }\n\n if (json) {\n body = JSON.stringify(json);\n } else if (data) {\n body = Object.keys(data).map(key => {\n return `${ encodeURIComponent(key) }=${ data ? encodeURIComponent(data[key]) : '' }`;\n }).join('&');\n }\n\n xhr.timeout = timeout;\n xhr.ontimeout = function xhrTimeout() {\n reject(new Error(`Request to ${ method.toLowerCase() } ${ url } has timed out`));\n };\n\n xhr.send(body);\n });\n}\n\nrequest.get = (url : string, options = {}) => {\n return request({ method: 'get', url, ...options });\n};\n\nrequest.post = (url : string, data, options = {}) => {\n return request({ method: 'post', url, data, ...options });\n};\n\nrequest.addHeaderBuilder = (method) => {\n headerBuilders.push(method);\n};\n","/* @flow */\n\nimport { info, track, flush as flushLogs } from 'beaver-logger/client';\n\nimport { FPTI } from '../constants';\n\nimport { match } from './util';\nimport { getStorageState, getStorageID } from './session';\n\ntype Throttle = {|\n isEnabled : () => boolean,\n isDisabled : () => boolean,\n getTreatment : () => string,\n log : (string, payload? : { [string] : ?string }) => Throttle,\n logStart : (payload? : { [string] : ?string }) => Throttle,\n logComplete : (payload? : { [string] : ?string }) => Throttle\n|};\n\nfunction getThrottlePercentile(name : string) : number {\n return getStorageState(storage => {\n storage.throttlePercentiles = storage.throttlePercentiles || {};\n storage.throttlePercentiles[name] = storage.throttlePercentiles[name] || Math.floor(Math.random() * 100);\n return storage.throttlePercentiles[name];\n });\n}\n\nconst THROTTLE_GROUP = {\n TEST: 'test',\n CONTROL: 'control',\n THROTTLE: 'throttle'\n};\n\nexport function getThrottle(name : string, sample : number, sticky : boolean = true) : Throttle {\n\n const uid = getStorageID();\n\n const percentile = sticky ? getThrottlePercentile(name) : Math.floor(Math.random() * 100);\n\n let group;\n\n if (percentile < sample) {\n group = THROTTLE_GROUP.TEST;\n } else if ((sample >= 50) || ((sample <= percentile) && (percentile < (sample * 2)))) {\n group = THROTTLE_GROUP.CONTROL;\n } else {\n group = THROTTLE_GROUP.THROTTLE;\n }\n\n const treatment = `${ name }_${ group }`;\n\n let started = false;\n let forced = false;\n\n try {\n if (window.localStorage && window.localStorage.getItem(name)) {\n forced = true;\n }\n } catch (err) {\n // pass\n }\n\n return {\n\n isEnabled() : boolean {\n return (group === THROTTLE_GROUP.TEST) || forced;\n },\n\n isDisabled() : boolean {\n return (group !== THROTTLE_GROUP.TEST) && !forced;\n },\n\n getTreatment() : string {\n return treatment;\n },\n\n log(checkpointName : string, payload? : { [string] : ?string } = {}) : Throttle {\n if (!started) {\n return this;\n }\n\n const checkpoint = `${ name }_${ treatment }_${ checkpointName }`;\n info(checkpoint, { ...payload, expuid: uid });\n\n track({\n [ FPTI.KEY.EXPERIMENT_NAME ]: name,\n [ FPTI.KEY.TREATMENT_NAME ]: treatment,\n ...payload\n });\n\n flushLogs();\n return this;\n },\n\n logStart(payload? : { [string] : ?string } = {}) : Throttle {\n started = true;\n return this.log(`start`, payload);\n },\n\n logComplete(payload? : { [string] : ?string } = {}) : Throttle {\n if (!started) {\n return this;\n }\n\n return this.log(`complete`, payload);\n }\n };\n}\n\nexport function getReturnToken() : ?string {\n\n const token = match(window.location.href, /token=((EC-)?[A-Z0-9]+)/);\n const payer = match(window.location.href, /PayerID=([A-Z0-9]+)/);\n\n if (token && payer) {\n return token;\n }\n}\n","/* @flow */\n\nimport { debug } from 'beaver-logger/client';\nimport { getDomain } from 'cross-domain-utils/src';\n\nimport { config } from '../config';\n\nimport { memoize, domainMatches } from './util';\n\nexport const getCurrentScript = memoize(() : ?HTMLScriptElement => {\n\n const scripts = Array.prototype.slice.call(document.getElementsByTagName('script'));\n\n for (const script of scripts) {\n if (script.src && (script.src.replace(/^https?:/, '').split('?')[0] === config.scriptUrl || script.hasAttribute('data-paypal-checkout'))) {\n return script;\n }\n\n if (script.src && (script.src.indexOf('paypal.checkout.v4.js') !== -1)) {\n return script;\n }\n }\n\n if (document.currentScript) { // eslint-disable-line compat/compat\n debug(`current_script_not_recognized`, { src: document.currentScript.src }); // eslint-disable-line compat/compat\n }\n});\n\nexport function isPayPalObjects() : boolean {\n return Boolean(getCurrentScript());\n}\n\nexport function getScriptVersion() : string {\n if (__PAYPAL_CHECKOUT__.__MAJOR__ && isPayPalObjects()) {\n return __MIN__ ? 'min' : __PAYPAL_CHECKOUT__.__MAJOR_VERSION__;\n } else {\n return __MIN__ ? `${ __PAYPAL_CHECKOUT__.__MINOR_VERSION__ }.min` : __PAYPAL_CHECKOUT__.__MINOR_VERSION__;\n }\n}\n\nexport function getCurrentScriptUrl() : string {\n const script = getCurrentScript();\n\n if (script && typeof script.src === 'string') {\n let scriptUrl = script.src;\n\n if (scriptUrl.indexOf('http://www.paypalobjects.com') === 0) {\n scriptUrl = scriptUrl.replace('http://', 'https://');\n }\n\n return scriptUrl;\n }\n\n return `https://www.paypalobjects.com/api/checkout.${ __PAYPAL_CHECKOUT__.__MINOR_VERSION__ }${ __MIN__ ? '.min' : '' }.js`;\n}\n\nexport function getDomainSetting(name : string, def : ?T) : ?T {\n\n const hostname = window.xchild\n ? window.xchild.getParentDomain()\n : getDomain();\n\n if (config.domain_settings) {\n for (const domain of Object.keys(config.domain_settings)) {\n if (domainMatches(hostname, domain)) {\n return config.domain_settings[domain][name];\n }\n }\n }\n\n return def;\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { once, bridge } from 'post-robot/src';\n\nimport { config } from '../config';\n\nimport { isIEIntranet } from './device';\nimport { memoize } from './util';\nimport { getScriptVersion } from './script';\nimport { extendUrl } from './dom';\n\ntype FrameMetaData = {|\n iframeEligible : boolean,\n iframeEligibleReason : string,\n // eslint-disable-next-line flowtype/no-mutable-array\n rememberedFunding : Array\n|};\n\nexport const openMetaFrame = memoize((env : string = config.env) : ZalgoPromise => {\n return ZalgoPromise.try(() => {\n\n if (isIEIntranet()) {\n return {\n iframeEligible: false,\n iframeEligibleReason: 'ie_intranet',\n rememberedFunding: []\n };\n }\n\n const metaFrameUrl : string = config.metaFrameUrls[env];\n const metaFrameDomain : string = config.paypalDomains[env];\n\n return ZalgoPromise.try(() => {\n if (!bridge) {\n throw new Error(`Opening meta window without bridge support is not currently supported`);\n }\n\n const metaListener = once('meta', { domain: metaFrameDomain });\n\n return bridge.openBridge(extendUrl(metaFrameUrl, { version: getScriptVersion() }), metaFrameDomain)\n .then(() => metaListener)\n .then(({ data }) => data);\n });\n });\n});\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { FUNDING } from '../constants';\nimport type { FundingSource, FundingList } from '../types';\n\nimport { getStorageState, getGlobalState, getSessionState } from './session';\nimport { isDevice } from './device';\nimport { openMetaFrame } from './meta';\nimport { identity } from './util';\n\n// $FlowFixMe\nexport function getRememberedFunding(handler? : (rememberedFunding : FundingList) => T = identity) : T {\n return getStorageState(storage => {\n storage.rememberedFunding = storage.rememberedFunding || [];\n return handler(storage.rememberedFunding);\n });\n}\n\nfunction hasRememberedFunding(source : FundingSource) : ?boolean {\n\n if (getRememberedFunding(rememberedFunding => rememberedFunding.indexOf(source) !== -1)) {\n return true;\n }\n\n if (getSessionState(session => session.recentlyCheckedRemembered)) {\n return true;\n }\n\n return false;\n}\n\n\nfunction isRememberedFunding(source : FundingSource) : boolean {\n\n if (getRememberedFunding(rememberedFunding => rememberedFunding.indexOf(source) !== -1)) {\n return true;\n }\n\n if (getSessionState(session => session.recentlyCheckedRemembered)) {\n return false;\n }\n\n throw new Error(`Can not find remembered funding result`);\n}\n\nfunction getRememberedFundingPromises() : { [FundingSource] : ZalgoPromise } {\n return getGlobalState(global => {\n global.rememberFundingPromises = global.rememberFundingPromises || {};\n return global.rememberFundingPromises;\n });\n}\n\nfunction getRememberedFundingPromise(source : FundingSource) : ZalgoPromise {\n const promises = getRememberedFundingPromises();\n const promise = promises[source] = promises[source] || new ZalgoPromise();\n if (hasRememberedFunding(source)) {\n promise.resolve(isRememberedFunding(source));\n }\n return promise;\n}\n\nfunction flushRememberedFundingPromises() {\n const promises = getRememberedFundingPromises();\n const rememberedFunding = getRememberedFunding(sources => sources);\n\n for (const source of Object.keys(promises)) {\n promises[source].resolve(rememberedFunding.indexOf(source) !== -1);\n }\n}\n\nexport function rememberFunding(sources : FundingList) {\n getRememberedFunding(rememberedFunding => {\n for (const source of sources) {\n\n if (source === FUNDING.VENMO && !isDevice()) {\n continue;\n }\n if (rememberedFunding.indexOf(source) === -1) {\n rememberedFunding.push(source);\n }\n }\n\n flushRememberedFundingPromises();\n });\n\n getSessionState(session => {\n session.recentlyCheckedRemembered = true;\n });\n}\n\nfunction loadMeta() : ZalgoPromise {\n return openMetaFrame().then(({ rememberedFunding }) => {\n rememberFunding(rememberedFunding || []);\n });\n}\n\nexport function isFundingRemembered(source : FundingSource = FUNDING.PAYPAL) : ZalgoPromise {\n\n if (hasRememberedFunding(source)) {\n return getRememberedFundingPromise(source);\n }\n\n return loadMeta().then(() => {\n return getRememberedFundingPromise(source);\n });\n}\n\nexport function precacheRememberedFunding() : ZalgoPromise {\n if (!getSessionState(session => session.recentlyCheckedRemembered)) {\n return loadMeta();\n }\n return ZalgoPromise.resolve();\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { regexMap } from './util';\n\n// eslint-disable-next-line no-use-before-define\nexport type ChildType = $ReadOnlyArray | JsxHTMLNode | string | void | null;\nexport type ChildrenType = $ReadOnlyArray;\ntype PropsType = ?{ class? : string, id? : string, innerHTML? : string };\n\nfunction htmlEncode(html : string = '') : string {\n return html.toString()\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(/\\//g, '/');\n}\n\nexport class JsxHTMLNode {\n name : string\n props : PropsType\n children : ChildrenType\n\n constructor(name : string, props : PropsType, children : ChildrenType) {\n this.name = name;\n this.props = props;\n this.children = children;\n }\n\n toString() : string {\n return `<${ this.name }${ this.props ? ' ' : '' }${ this.props ? this.propsToString() : '' }>${ this.childrenToString() }`;\n }\n\n propsToString() : string {\n const props = this.props;\n\n if (!props) {\n return '';\n }\n\n return Object.keys(props).filter(key => {\n return key !== 'innerHTML' && props && props[key] !== false;\n }).map(key => {\n if (props && props[key] === true) {\n return `${ htmlEncode(key) }`;\n }\n return props ? `${ htmlEncode(key) }=\"${ htmlEncode(props[key]) }\"` : '';\n }).join(' ');\n }\n\n childrenToString() : string {\n\n if (this.props && this.props.innerHTML) {\n return this.props.innerHTML;\n }\n\n if (!this.children) {\n return '';\n }\n\n let result = '';\n\n function iterate(children) {\n for (const child of children) {\n\n if (child === null || child === undefined) {\n continue;\n }\n\n if (Array.isArray(child)) {\n iterate(child);\n } else if (child instanceof JsxHTMLNode) {\n result += child.toString();\n } else {\n result += htmlEncode(child);\n }\n }\n }\n\n iterate(this.children);\n\n return result;\n }\n}\n\nexport class JsxHTMLNodeContainer extends JsxHTMLNode {\n\n\n constructor(children : ChildrenType) {\n super('', {}, children);\n }\n\n toString() : string {\n return this.childrenToString();\n }\n}\n\nexport function jsxToHTML(name : string, props : PropsType, ...children : ChildrenType) : JsxHTMLNode {\n return new JsxHTMLNode(name, props, children);\n}\n\nexport function jsxRender(template : string, renderers : { [string] : (string) =>?(JsxHTMLNode | $ReadOnlyArray) }) : JsxHTMLNode {\n\n // eslint-disable-next-line security/detect-unsafe-regex, unicorn/no-unsafe-regex\n const nodes = regexMap(template, /\\{\\s*([a-z]+)(?::\\s*([^} ]+))?\\s*\\}|([^${}]+)/g, (match, type, value, text) => {\n if (type) {\n if (!renderers[type]) {\n throw new Error(`Can not render type: ${ type }`);\n }\n\n return renderers[type](value);\n } else if (text && text.trim()) {\n\n if (!renderers.text) {\n return text;\n }\n\n if ((/
/).test(text)) {\n return renderers.break(text);\n } else {\n return renderers.text(text);\n }\n } else {\n return text;\n }\n });\n\n return new JsxHTMLNodeContainer(nodes);\n}\n","/* @flow */\n\nexport * from './device';\nexport * from './util';\nexport * from './logger';\nexport * from './eligibility';\nexport * from './errors';\nexport * from './dom';\nexport * from './http';\nexport * from './beacon';\nexport * from './throttle';\nexport * from './namespace';\nexport * from './session';\nexport * from './proxy';\nexport * from './meta';\nexport * from './funding';\nexport * from './script';\nexport * from './jsx';\nexport * from './security';\n","/* @flow */\n\nimport { on, send, bridge } from 'post-robot/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport type { CrossDomainWindowType, SameDomainWindowType } from 'cross-domain-utils/src';\n\nimport { isPayPalDomain, noop, getScriptVersion, extendUrl } from '../lib';\nimport { config } from '../config';\n\nfunction match(str : string, pattern : RegExp) : ?string {\n const regmatch : ?$ReadOnlyArray = str.match(pattern);\n if (regmatch) {\n return regmatch[1];\n }\n}\n\nlet onAuthorize : ?Function;\n\n// Post-Bridge\n\nif (isPayPalDomain()) {\n on('onLegacyPaymentAuthorize', { window: window.parent }, ({ data } : { data : { method : Function } }) => {\n onAuthorize = data.method;\n });\n}\n\n// Button / Merchant\n\nexport function onLegacyPaymentAuthorize(method : Function) : ZalgoPromise {\n onAuthorize = method;\n\n return ZalgoPromise.try(() => {\n if (bridge && !isPayPalDomain()) {\n return bridge.openBridge(extendUrl(config.postBridgeUrl, { version: getScriptVersion() }), config.postBridgeDomain).then((postBridge : CrossDomainWindowType) => {\n return send(postBridge, 'onLegacyPaymentAuthorize', { method }, { domain: config.paypalDomain })\n .then(noop);\n });\n }\n });\n}\n\nwindow.onLegacyPaymentAuthorize = onLegacyPaymentAuthorize;\n\n// Post-Bridge / Button\n\nwindow.watchForLegacyFallback = (win : SameDomainWindowType) => {\n const interval = setInterval(() => {\n try {\n const isLegacy = (win.document.body.innerHTML.indexOf('merchantpaymentweb') !== -1 ||\n win.document.body.innerHTML.indexOf('wapapp') !== -1);\n\n if (!isLegacy || win.ppxoWatching || win.closed) {\n return;\n }\n\n win.ppxoWatching = true;\n\n const XMLHttpRequestsend = win.XMLHttpRequest.prototype.send;\n\n win.XMLHttpRequest.prototype.send = function overrideXMLHttpRequestSend() : void {\n\n if (this._patched) {\n return XMLHttpRequestsend.apply(this, arguments);\n }\n\n this._patched = true;\n\n const self = this;\n let onload = this.onload;\n\n function listener() : void {\n\n if (self.readyState === self.DONE && self.status === 200 && self.responseText) {\n\n try {\n const response = JSON.parse(self.responseText.replace('while (1);', ''));\n\n if (response.type === 'redirect' && response.url && onAuthorize) {\n\n const url = response.url;\n\n clearInterval(interval);\n win.close();\n\n onAuthorize({\n returnUrl: url,\n paymentToken: match(url, /token=((EC-)?[A-Z0-9]+)/),\n billingToken: match(url, /ba_token=((BA-)?[A-Z0-9]+)/),\n payerID: match(url, /PayerID=([A-Z0-9]+)/),\n paymentID: match(url, /paymentId=((PAY-)?[A-Z0-9]+)/)\n });\n\n onAuthorize = null;\n\n if (win.PAYPAL && win.PAYPAL.Checkout && win.PAYPAL.Checkout.XhrResponse && win.PAYPAL.Checkout.XhrResponse.RESPONSE_TYPES) {\n Object.defineProperty(win.PAYPAL.Checkout.XhrResponse.RESPONSE_TYPES, 'Redirect', {\n value: Math.random().toString()\n });\n }\n\n if (win.mob && win.mob.Xhr && win.mob.Xhr.prototype._xhrOnReady) {\n win.mob.Xhr.prototype._xhrOnReady = noop;\n }\n }\n\n } catch (err) {\n return;\n }\n }\n\n if (onload) {\n return onload.apply(this, arguments);\n }\n }\n\n if (this.onload !== listener) {\n\n try {\n\n delete this.onload;\n this.addEventListener('load', listener);\n\n // $FlowFixMe\n Object.defineProperty(this, 'onload', {\n get() : Function {\n return listener;\n },\n set(handler) {\n onload = handler;\n }\n });\n\n } catch (err) {\n\n // pass\n }\n\n }\n\n return XMLHttpRequestsend.apply(this, arguments);\n };\n\n } catch (err) {\n // pass\n }\n }, 100);\n};\n\n\nwindow.onLegacyFallback = window.watchForLegacyFallback;\n","/* @flow */\n\nimport { config } from '../config';\nimport { FUNDING, PAYMENT_TYPE } from '../constants';\n\nexport function determineParameterFromToken(token : string) : string {\n return (token && token.indexOf('BA-') === 0) ? 'ba_token' : 'token';\n}\n\nexport function getPaymentType(payment : string) : string {\n if (payment.indexOf('BA-') === 0) {\n return PAYMENT_TYPE.BA_TOKEN;\n } else if (payment.indexOf('PAY-') === 0 || payment.indexOf('PAYID-') === 0) {\n return PAYMENT_TYPE.PAY_ID;\n } else if (payment.indexOf('EC-') === 0) {\n return PAYMENT_TYPE.EC_TOKEN;\n }\n\n return PAYMENT_TYPE.EC_TOKEN;\n}\n\nexport function determineUrl(env : string, fundingSource : ?string, payment : string) : string {\n\n const paymentType = getPaymentType(payment);\n\n if (paymentType === PAYMENT_TYPE.BA_TOKEN) {\n return config.billingUrls[env];\n }\n\n if (fundingSource === FUNDING.CARD || fundingSource === FUNDING.ELV) {\n return config.guestUrls[env];\n }\n\n if (fundingSource === FUNDING.IDEAL || fundingSource === FUNDING.BANCONTACT || fundingSource === FUNDING.GIROPAY ||\n fundingSource === FUNDING.SOFORT || fundingSource === FUNDING.EPS || fundingSource === FUNDING.MYBANK ||\n fundingSource === FUNDING.P24 || fundingSource === FUNDING.PAYU || fundingSource === FUNDING.VERKKOPANKKI ||\n fundingSource === FUNDING.BLIK || fundingSource === FUNDING.TRUSTLY || fundingSource === FUNDING.MAXIMA ||\n fundingSource === FUNDING.BOLETO || fundingSource === FUNDING.OXXO) {\n return config.altpayUrls[env];\n }\n\n return config.checkoutUrls[env];\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nexport type Braintree = {|\n client : {\n create : Function\n },\n paypalCheckout : {\n create : Function\n }\n|};\n\nexport type BraintreePayPalClient = {|\n createPayment : Function,\n tokenizePayment : Function\n|};\n\nexport function awaitBraintreeClient(braintree : Braintree, auth : string | ZalgoPromise) : ZalgoPromise {\n return ZalgoPromise.resolve(auth).then(authorization => {\n return braintree.client.create({ authorization });\n }).then(client => {\n return braintree.paypalCheckout.create({ client });\n });\n}\n\nconst SUPPORTED_REST_FIELDS = {\n intent: 1,\n transactions: [\n {\n amount: {\n total: 1,\n currency: 1\n }\n }\n ],\n payer: {\n external_selected_funding_instrument_type: 1,\n shipping_address: {\n line1: 1,\n line2: 1,\n city: 1,\n state: 1,\n postal_code: 1,\n country_code: 1,\n phone: 1,\n recipient_name: 1\n }\n },\n application_context: {\n brand_name: 1,\n shipping_preference: 1,\n landing_page: 1\n }\n};\n\nfunction validate(obj, supported, name) {\n\n const supportedKeys = Object.keys(supported);\n\n for (const key of Object.keys(obj)) {\n\n if (supportedKeys.indexOf(key) === -1) {\n throw new Error(`Unsupported REST key for Braintree: ${ name }.${ key }`);\n }\n\n if (typeof obj[key] === 'object') {\n validate(obj[key], supported[key], `${ name }.${ key }`);\n }\n }\n}\n\nexport function mapPaymentToBraintree(payment : Object) : Object {\n validate(payment, SUPPORTED_REST_FIELDS, 'payment');\n\n const btPayment = {};\n\n btPayment.intent = payment.intent || 'sale';\n btPayment.flow = 'checkout';\n btPayment.amount = payment.transactions[0].amount.total;\n btPayment.currency = payment.transactions[0].amount.currency;\n\n if (payment.payer) {\n if (payment.payer.external_selected_funding_instrument_type === 'CREDIT') {\n btPayment.offerCredit = true;\n }\n\n if (payment.payer.shipping_address) {\n btPayment.shippingAddressOverride = {\n line1: payment.payer.shipping_address.line1,\n line2: payment.payer.shipping_address.line2,\n city: payment.payer.shipping_address.city,\n state: payment.payer.shipping_address.state,\n postalCode: payment.payer.shipping_address.postal_code,\n countryCode: payment.payer.shipping_address.country_code,\n phone: payment.payer.shipping_address.phone,\n recipientName: payment.payer.shipping_address.recipient_name\n };\n }\n }\n\n if (payment.application_context) {\n btPayment.displayName = payment.application_context.brand_name;\n btPayment.landingPageType = payment.application_context.landing_page;\n\n if (payment.application_context) {\n if (payment.application_context.shipping_preference === 'NO_SHIPPING') {\n btPayment.enableShippingAddress = false;\n } else if (payment.application_context.shipping_preference === 'GET_FROM_FILE') {\n btPayment.enableShippingAddress = true;\n btPayment.shippingAddressEditable = true;\n } else if (payment.application_context.shipping_preference === 'SET_PROVIDED_ADDRESS') {\n btPayment.enableShippingAddress = true;\n btPayment.shippingAddressEditable = false;\n }\n }\n }\n\n return btPayment;\n}\n","/* @flow */\n\nexport * from './checkout';\nexport * from './braintree';\n// export * from './popupBridge';\n","/* @flow */\n/** @jsx jsxDom */\n\nconst checkoutComponentStyle = `\n\n body {\n width: 100%;\n height: 100%;\n overflow: hidden;\n position: fixed;\n top: 0;\n left: 0;\n margin: 0;\n }\n\n .spinner {\n height: 100%;\n width: 100%;\n position: absolute;\n z-index: 10\n }\n\n .spinner .spinWrap {\n width: 200px;\n height: 100px;\n position: absolute;\n top: 50%;\n left: 50%;\n margin-left: -100px;\n margin-top: -50px\n }\n\n .spinner .loader,\n .spinner .spinnerImage {\n height: 100px;\n width: 100px;\n position: absolute;\n top: 0;\n left: 50%;\n opacity: 1;\n filter: alpha(opacity=100)\n }\n\n .spinner .spinnerImage {\n margin: 28px 0 0 -25px;\n background: url(https://www.paypalobjects.com/images/checkout/hermes/icon_ot_spin_lock_skinny.png) no-repeat\n }\n\n .spinner .loader {\n margin: 0 0 0 -55px;\n background-color: transparent;\n -webkit-animation: rotation .7s infinite linear;\n -moz-animation: rotation .7s infinite linear;\n -o-animation: rotation .7s infinite linear;\n animation: rotation .7s infinite linear;\n border-left: 5px solid #cbcbca;\n border-right: 5px solid #cbcbca;\n border-bottom: 5px solid #cbcbca;\n border-top: 5px solid #2380be;\n border-radius: 100%\n }\n\n @-webkit-keyframes rotation {\n from {\n -webkit-transform: rotate(0deg)\n }\n to {\n -webkit-transform: rotate(359deg)\n }\n }\n @-moz-keyframes rotation {\n from {\n -moz-transform: rotate(0deg)\n }\n to {\n -moz-transform: rotate(359deg)\n }\n }\n @-o-keyframes rotation {\n from {\n -o-transform: rotate(0deg)\n }\n to {\n -o-transform: rotate(359deg)\n }\n }\n @keyframes rotation {\n from {\n transform: rotate(0deg)\n }\n to {\n transform: rotate(359deg)\n }\n }\n`;\n\nexport function componentTemplate({ jsxDom } : { jsxDom : Function }) : HTMLElement {\n\n return (\n \n \n PayPal\n \n \n \n
\n \n\n
\n

\n

\n

\n
\n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst P24_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#d03238',\n secondary: '#b3b1b1'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#d03238',\n secondary: '#b3b1b1'\n }\n};\n\nexport function p24Logo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!P24_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } p24 logo available`);\n }\n\n const { primary, secondary } = P24_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst SOFORT_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#2C2E2F',\n secondary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#EB6F93',\n secondary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#EB6F93',\n secondary: '#FFFFFF'\n }\n};\n\nexport function sofortLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!SOFORT_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } sofort logo available`);\n }\n\n const { primary, secondary } = SOFORT_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst IDEAL_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff',\n tertiary: '#2C2E2F'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#000000',\n secondary: '#FFFFFF',\n tertiary: '#CD0067'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#000000',\n secondary: '#FFFFFF',\n tertiary: '#CD0067'\n }\n};\n\nexport function idealLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!IDEAL_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } ideal logo available`);\n }\n\n const { primary, secondary, tertiary } = IDEAL_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst GIROPAY_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#000000',\n tertiary: '#2C2E2F'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#FFFFFF',\n secondary: '#003A7D',\n tertiary: '#ED1C24'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#FFFFFF',\n secondary: '#003A7D',\n tertiary: '#ED1C24'\n }\n};\n\nexport function giropayLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!GIROPAY_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } giropay logo available`);\n }\n\n const { primary, secondary, tertiary } = GIROPAY_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst EPS_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff',\n tertiary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#71706F',\n secondary: '#FFFFFF',\n tertiary: '#C8036F'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#71706F',\n secondary: '#FFFFFF',\n tertiary: '#C8036F'\n }\n};\n\nexport function epsLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!EPS_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } eps logo available`);\n }\n\n const { primary, secondary, tertiary } = EPS_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst MYBANK_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff',\n tertiary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#1A4B67',\n secondary: '#00C0EE',\n tertiary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#1A4B67',\n secondary: '#00C0EE',\n tertiary: '#FFFFFF'\n }\n};\n\nexport function mybankLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!MYBANK_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } mybank logo available`);\n }\n\n const { primary, secondary, tertiary } = MYBANK_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst BANCONTACT_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#1A4B67',\n secondary: '#00C0EE'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#005498',\n secondary: '#FFD800'\n }\n};\n\nexport function bancontactLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!BANCONTACT_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } bancontact logo available`);\n }\n\n const { primary, secondary } = BANCONTACT_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst PAYU_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.DEFAULT ]: {\n primary: '#A6d71c',\n secondary: '#3C932A',\n tertiary: '#6CC62E',\n quaternary: '#278D30'\n },\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#FFFFFF',\n secondary: '#FFFFFF',\n tertiary: '#000000',\n quaternary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#A6d71c',\n secondary: '#3C932A',\n tertiary: '#6CC62E',\n quaternary: '#278D30'\n }\n};\n\nexport function payuLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!PAYU_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } payu logo available`);\n }\n\n const { primary, secondary, tertiary, quaternary } = PAYU_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst VERKKOPANKKI_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#FFFFFF',\n secondary: '#FFFFFF',\n tertiary: '#000000',\n quaternary: '#000000',\n quinary: '#FFFFFF',\n senary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#FFFFFF',\n secondary: '#CACCC8',\n tertiary: '#2D59A1',\n quaternary: '#1F3364',\n quinary: '#4E4E4E',\n senary: '#1B4482'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#FFFFFF',\n secondary: '#CACCC8',\n tertiary: '#2D59A1',\n quaternary: '#1F3364',\n quinary: '#4E4E4E',\n senary: '#1B4482'\n }\n};\n\nexport function verkkopankkiLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!VERKKOPANKKI_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } verkkopankki logo available`);\n }\n\n const { primary, secondary, tertiary, quaternary, quinary, senary } = VERKKOPANKKI_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst BLIK_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#FFFFFF',\n secondary: '#FFFFFF',\n tertiary: '#000000',\n quaternary: '#000000',\n quinary: '#000000',\n senary: '#000000'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#4D4D4F',\n secondary: '#000000',\n tertiary: '#FF0000',\n quaternary: '#E83E49',\n quinary: '#FF00FF',\n senary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#4D4D4F',\n secondary: '#000000',\n tertiary: '#FF0000',\n quaternary: '#E83E49',\n quinary: '#FF00FF',\n senary: '#FFFFFF'\n }\n};\n\nexport function blikLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!BLIK_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } blik logo available`);\n }\n\n const { primary, secondary, tertiary, quaternary, quinary, senary } = BLIK_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst TRUSTLY_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#FFFFFF',\n secondary: '#FFFFFF'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#020202',\n secondary: '#64CC07'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#020202',\n secondary: '#64CC07'\n }\n};\n\nexport function trustlyLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!TRUSTLY_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } trustly logo available`);\n }\n\n const { primary, secondary } = TRUSTLY_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst MAXIMA_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#004A91',\n secondary: '#ED1921'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#004A91',\n secondary: '#ED1921'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#004A91',\n secondary: '#ED1921'\n }\n};\n\nexport function maximaLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!MAXIMA_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } maxima logo available`);\n }\n\n const { primary, secondary } = MAXIMA_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst BOLETO_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#1A1919',\n secondary: '#FFFFFE'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#1A1919',\n secondary: '#FFFFFE'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#1A1919',\n secondary: '#FFFFFE'\n }\n};\n\nexport function boletoLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!BOLETO_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } boleto logo available`);\n }\n\n const { primary, secondary } = BOLETO_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst OXXO_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#EC1D24',\n secondary: '#EDA42D'\n },\n [ BUTTON_LOGO_COLOR.ANY ]: {\n primary: '#EC1D24',\n secondary: '#EDA42D'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#EC1D24',\n secondary: '#EDA42D'\n }\n};\n\nexport function oxxoLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!OXXO_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } oxxo logo available`);\n }\n\n const { primary, secondary } = OXXO_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR } from '../../constants';\n\nconst PAYPAL_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.BLUE ]: {\n primary: '#003087',\n secondary: '#009cde'\n },\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#333030',\n secondary: '#636363'\n }\n};\n\nexport function paypalLogo({ logoColor } : { logoColor : $Values }) : JsxHTMLNode {\n\n if (!PAYPAL_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } paypal logo available`);\n }\n\n const { primary, secondary } = PAYPAL_LOGO_COLORS[logoColor];\n\n return (\n \n \n \n \n \n \n \n \n );\n}\n","\n/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, JsxHTMLNode } from '../../lib/jsx';\nimport { BUTTON_LOGO_COLOR, COUNTRY } from '../../constants';\nimport type { LocaleType } from '../../types';\n\nconst CREDIT_LOGO_COLORS = {\n [ BUTTON_LOGO_COLOR.BLUE ]: {\n primary: '#003087',\n secondary: '#009cde'\n },\n [ BUTTON_LOGO_COLOR.WHITE ]: {\n primary: '#ffffff',\n secondary: '#ffffff'\n },\n [ BUTTON_LOGO_COLOR.BLACK ]: {\n primary: '#333030',\n secondary: '#636363'\n }\n};\n\nexport function creditLogo({ logoColor, locale } : { logoColor : $Values, locale? : LocaleType }) : JsxHTMLNode {\n\n if (!CREDIT_LOGO_COLORS[logoColor]) {\n throw new Error(`No ${ logoColor } credit logo available`);\n }\n\n const { country } = locale || {};\n const { primary } = CREDIT_LOGO_COLORS[logoColor];\n\n switch (country) {\n case COUNTRY.DE:\n return (\n \n \n \n \n \n \n \n );\n default:\n return (\n \n \n \n \n \n \n \n \n );\n\n }\n}\n","/* @flow */\n\nimport { BUTTON_LOGO, BUTTON_LOGO_COLOR } from '../../constants';\n\nimport { p24Logo } from './p24';\nimport { sofortLogo } from './sofort';\nimport { idealLogo } from './ideal';\nimport { giropayLogo } from './giropay';\nimport { epsLogo } from './eps';\nimport { mybankLogo } from './mybank';\nimport { bancontactLogo } from './bancontact';\nimport { payuLogo } from './payu';\nimport { verkkopankkiLogo } from './verkkopankki';\nimport { blikLogo } from './blik';\nimport { trustlyLogo } from './trustly';\nimport { maximaLogo } from './maxima';\nimport { boletoLogo } from './boleto';\nimport { oxxoLogo } from './oxxo';\nimport pp_white from './pp_white.svg';\nimport pp_blue from './pp_blue.svg';\nimport pp_black from './pp_black.svg';\nimport { paypalLogo } from './paypal';\nimport { creditLogo } from './credit';\nimport venmo_white from './venmo_white.svg';\nimport itau from './itau.svg';\nimport venmo_blue from './venmo_blue.svg';\nimport elv from './elv.svg';\nimport elv_white from './elv_white.svg';\n\nexport const fundingLogos = {\n\n [ BUTTON_LOGO.PP ]: {\n [ BUTTON_LOGO_COLOR.WHITE ]: pp_white,\n [ BUTTON_LOGO_COLOR.BLUE ]: pp_blue,\n [ BUTTON_LOGO_COLOR.BLACK ]: pp_black\n },\n\n [ BUTTON_LOGO.PAYPAL ]: paypalLogo,\n\n [ BUTTON_LOGO.CREDIT ]: creditLogo,\n\n [ BUTTON_LOGO.VENMO ]: {\n [ BUTTON_LOGO_COLOR.WHITE ]: venmo_white,\n [ BUTTON_LOGO_COLOR.BLUE ]: venmo_blue\n },\n [ BUTTON_LOGO.ITAU ]: {\n [ BUTTON_LOGO_COLOR.WHITE ]: itau\n },\n\n [ BUTTON_LOGO.IDEAL ]: idealLogo,\n\n [ BUTTON_LOGO.ELV ]: {\n [ BUTTON_LOGO_COLOR.ANY ]: elv,\n [ BUTTON_LOGO_COLOR.WHITE ]: elv_white\n },\n\n [ BUTTON_LOGO.BANCONTACT ]: bancontactLogo,\n\n [ BUTTON_LOGO.GIROPAY ]: giropayLogo,\n\n [ BUTTON_LOGO.SOFORT ]: sofortLogo,\n\n [ BUTTON_LOGO.EPS ]: epsLogo,\n\n [ BUTTON_LOGO.MYBANK ]: mybankLogo,\n\n [ BUTTON_LOGO.P24 ]: p24Logo,\n\n [ BUTTON_LOGO.PAYU ]: payuLogo,\n\n [ BUTTON_LOGO.VERKKOPANKKI ]: verkkopankkiLogo,\n\n [ BUTTON_LOGO.BLIK ]: blikLogo,\n\n [ BUTTON_LOGO.TRUSTLY ]: trustlyLogo,\n\n [ BUTTON_LOGO.MAXIMA ]: maximaLogo,\n\n [ BUTTON_LOGO.BOLETO ]: boletoLogo,\n\n [ BUTTON_LOGO.OXXO ]: oxxoLogo\n\n};\n","/* @flow */\n\nimport { CARD } from '../../constants';\n\nimport visa from './visa.svg';\nimport amex from './amex.svg';\nimport mastercard from './mastercard.svg';\nimport maestro from './maestro.svg';\nimport discover from './discover.svg';\nimport hiper from './hiper.svg';\nimport elo from './elo.svg';\nimport jcb from './jcb.svg';\nimport cup from './cup.svg';\n\nexport const cardLogos = {\n [ CARD.VISA ]: visa,\n [ CARD.AMEX ]: amex,\n [ CARD.MASTERCARD ]: mastercard,\n [ CARD.MAESTRO ]: maestro,\n [ CARD.DISCOVER ]: discover,\n [ CARD.HIPER ]: hiper,\n [ CARD.ELO ]: elo,\n [ CARD.JCB ]: jcb,\n [ CARD.CUP ]: cup\n};\n","/* @flow */\n\nexport * from './fundingLogos';\nexport * from './cardLogos';\n","/* @flow */\n/* eslint max-lines: off */\n\nexport const containerContent = {\n 'AT': {\n 'de': {\n 'windowMessage': 'Sie sehen das sichere Browserfenster von PayPal nicht? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ZW': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ZM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ZA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'YT': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'YE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'WS': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'WF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'VU': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'VG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'VE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'VC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'VA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'UY': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'UG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TV': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'TT': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'TO': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'TN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'TM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'TD': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'TC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'SZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SV': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'ST': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SR': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'SO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'SM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SL': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SH': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'SB': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'SA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'RW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'RS': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'RE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'QA': {\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PY': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'PW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'PN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'PM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'PF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'PA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'OM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'NU': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'NR': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'NP': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'NI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'NG': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'NE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'NC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MV': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'MU': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MT': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MS': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'MR': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MQ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MN': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'ML': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'MK': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MH': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'MG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ME': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MD': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MC': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'MA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'LS': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'LK': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'LI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'LC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'LA': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'KZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'KY': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'KW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'KN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'KM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'KI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'KH': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'KG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'KE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'JO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'JM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'IS': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'HR': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'HN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'GY': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'GW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GT': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'GP': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'GM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GL': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'da': {\n 'windowMessage': 'Kan du ikke se PayPals sikre browser? Vi hj\\u00E6lper dig med at genstarte vinduet, s\\u00E5 du kan betale.',\n 'continue': 'Forts\\u00E6t'\n }\n },\n 'GI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GD': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'GA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'FO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'da': {\n 'windowMessage': 'Kan du ikke se PayPals sikre browser? Vi hj\\u00E6lper dig med at genstarte vinduet, s\\u00E5 du kan betale.',\n 'continue': 'Forts\\u00E6t'\n }\n },\n 'FM': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'FK': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'FJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'ET': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ER': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'EG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'EC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'DZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'DO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'DM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'DJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'CY': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CV': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CR': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'CO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'CM': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'CL': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'CK': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CI': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'CG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CD': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'BZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'BY': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BT': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'BS': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'BO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'BN': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'BM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'BJ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'BI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'BH': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'BG': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BF': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n }\n },\n 'BB': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'BA': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AW': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'AO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'AM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AL': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'AG': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'AE': {\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AD': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'CN': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n }\n },\n 'GB': {\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 PayPal\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\'ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AR': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n }\n },\n 'US': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Click to Continue'\n }\n },\n 'VN': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment. ',\n 'continue': 'Continue'\n }\n },\n 'UA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TW': {\n 'zh': {\n 'windowMessage': '\\u770B\\u4E0D\\u5230\\u5B89\\u5168\\u9023\\u7DDA\\u7684 PayPal \\u700F\\u89BD\\u5668\\uFF1F\\u6211\\u5011\\u5C07\\u6703\\u91CD\\u65B0\\u555F\\u52D5\\u8996\\u7A97\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002\\u00A0 ',\n 'continue': '\\u7E7C\\u7E8C'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TR': {\n 'tr': {\n 'windowMessage': 'G\\u00FCvenli PayPal taray\\u0131c\\u0131s\\u0131n\\u0131 g\\u00F6rm\\u00FCyor musunuz? Al\\u0131\\u015Fveri\\u015Finizi tamamlamak i\\u00E7in pencereyi yeniden ba\\u015Flatman\\u0131za yard\\u0131mc\\u0131 olaca\\u011F\\u0131z.\\u00A0 ',\n 'continue': 'Devam'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'TH': {\n 'th': {\n 'windowMessage': '\\u0E16\\u0E49\\u0E32\\u0E04\\u0E38\\u0E13\\u0E44\\u0E21\\u0E48\\u0E40\\u0E2B\\u0E47\\u0E19\\u0E40\\u0E1A\\u0E23\\u0E32\\u0E27\\u0E4C\\u0E40\\u0E0B\\u0E2D\\u0E23\\u0E4C\\u0E17\\u0E35\\u0E48\\u0E21\\u0E35\\u0E23\\u0E30\\u0E1A\\u0E1A\\u0E04\\u0E27\\u0E32\\u0E21\\u0E1B\\u0E25\\u0E2D\\u0E14\\u0E20\\u0E31\\u0E22\\u0E02\\u0E2D\\u0E07 PayPal \\u0E40\\u0E23\\u0E32\\u0E08\\u0E30\\u0E0A\\u0E48\\u0E27\\u0E22\\u0E04\\u0E38\\u0E13\\u0E40\\u0E1B\\u0E34\\u0E14\\u0E2B\\u0E19\\u0E49\\u0E32\\u0E15\\u0E48\\u0E32\\u0E07\\u0E2D\\u0E35\\u0E01\\u0E04\\u0E23\\u0E31\\u0E49\\u0E07\\u0E40\\u0E1E\\u0E37\\u0E48\\u0E2D\\u0E0A\\u0E33\\u0E23\\u0E30\\u0E40\\u0E07\\u0E34\\u0E19\\u0E43\\u0E2B\\u0E49\\u0E40\\u0E23\\u0E35\\u0E22\\u0E1A\\u0E23\\u0E49\\u0E2D\\u0E22 ',\n 'continue': '\\u0E14\\u0E33\\u0E40\\u0E19\\u0E34\\u0E19\\u0E01\\u0E32\\u0E23\\u0E15\\u0E48\\u0E2D'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SK': {\n 'sk': {\n 'windowMessage': 'Nezobrazuje sa v\\u00e1m zabezpe\\u010den\\u00fd prehliada\\u010d PayPal? Pom\\u00f4\\u017eeme v\\u00e1m znova otvori\\u0165 okno, aby ste mohli n\\u00e1kup dokon\\u010di\\u0165.\\u00A0 ',\n 'continue': 'Pokra\\u010dova\\u0165'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SI': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SG': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'SE': {\n 'sv': {\n 'windowMessage': 'Ser du inte den s\\u00E4kra PayPal-webbl\\u00E4saren? Vi hj\\u00E4lper dig att starta om f\\u00F6nstret f\\u00F6r att slutf\\u00F6ra ditt k\\u00F6p. ',\n 'continue': 'Forts\\u00E4tt'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'RU': {\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'RO': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PT': {\n 'pt': {\n 'windowMessage': 'N\\u00E3o v\\u00EA a indica\\u00E7\\u00E3o de sess\\u00E3o segura PayPal no browser? Vamos ajudar a reabrir a janela para que possa concluir a sua compra.',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PL': {\n 'pl': {\n 'windowMessage': 'Nie widzisz bezpiecznej przegl\\u0105darki PayPal? Pomo\\u017Cemy Ci ponownie uruchomi\\u0107 to okno w celu dokonania zakupu.\\u00A0 ',\n 'continue': 'Kontynuuj'\n },\n 'en': {\n 'windowMessage': 'You don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'PH': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NZ': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre paiement.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Le ayudaremos a abrir de nuevo la ventana para completar su pago.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NO': {\n 'no': {\n 'windowMessage': 'Ser du ikke den sikre PayPal-nettleseren? Vi hjelper deg med \\u00E5 starte vinduet p\\u00E5 nytt s\\u00E5 du kan fullf\\u00F8re kj\\u00F8pet.\\u00A0 ',\n 'continue': 'Fortsett'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'NL': {\n 'nl': {\n 'windowMessage': 'Ziet u geen beveiligde PayPal-browser? We helpen u het venster opnieuw te openen om uw aankoop te voltooien.\\u00A0 ',\n 'continue': 'Doorgaan'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MY': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'MX': {\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'LV': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'LU': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'de': {\n 'windowMessage': 'Das PayPal-Fenster wird nicht angezeigt? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n }\n },\n 'LT': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'KR': {\n 'ko': {\n 'windowMessage': '\\uBCF4\\uC548 PayPal \\uBE0C\\uB77C\\uC6B0\\uC800\\uAC00 \\uBCF4\\uC774\\uC9C0 \\uC54A\\uC73C\\uC2E0\\uAC00\\uC694? \\uCC3D\\uC744 \\uB2E4\\uC2DC \\uC2E4\\uD589\\uD558\\uC5EC \\uACB0\\uC81C\\uB97C \\uC644\\uB8CC\\uD560 \\uC218 \\uC788\\uB3C4\\uB85D \\uB3C4\\uC640\\uB4DC\\uB9AC\\uACA0\\uC2B5\\uB2C8\\uB2E4.\\u00A0 ',\n 'continue': '\\uACC4\\uC18D'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'JP': {\n 'ja': {\n 'windowMessage': '\\u30BB\\u30AD\\u30E5\\u30A2\\u306A\\u30D6\\u30E9\\u30A6\\u30B6\\u304C\\u8868\\u793A\\u3055\\u308C\\u306A\\u3044\\u5834\\u5408\\u306F\\u3001\\u30A6\\u30A3\\u30F3\\u30C9\\u30A6\\u3092\\u518D\\u8D77\\u52D5\\u3057\\u3066\\u3001\\u652F\\u6255\\u3044\\u3092\\u5B8C\\u4E86\\u3067\\u304D\\u308B\\u3088\\u3046\\u304A\\u624B\\u4F1D\\u3044\\u3044\\u305F\\u3057\\u307E\\u3059\\u3002',\n 'continue': '\\u7D9A\\u884C'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment. ',\n 'continue': 'Continue'\n }\n },\n 'IT': {\n 'it': {\n 'windowMessage': 'Non vedi la pagina sicura di PayPal? Ti aiuteremo a riaprire la finestra per completare l\\'acquisto.\\u00A0 ',\n 'continue': 'Continua'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'IN': {\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'IL': {\n 'he': {\n 'windowMessage': '\\u05DC\\u05D0 \\u05E8\\u05D5\\u05D0\\u05D4 \\u05D0\\u05EA \\u05D3\\u05E4\\u05D3\\u05E4\\u05DF PayPal \\u05D4\\u05DE\\u05D0\\u05D5\\u05D1\\u05D8\\u05D7? \\u05E0\\u05E2\\u05D6\\u05D5\\u05E8 \\u05DC\\u05DA \\u05DC\\u05E4\\u05EA\\u05D5\\u05D7 \\u05DE\\u05D7\\u05D3\\u05E9 \\u05D0\\u05EA \\u05D4\\u05D7\\u05DC\\u05D5\\u05DF \\u05DB\\u05D3\\u05D9 \\u05DC\\u05D4\\u05E9\\u05DC\\u05D9\\u05DD \\u05D0\\u05EA \\u05D4\\u05E7\\u05E0\\u05D9\\u05D9\\u05D4 \\u05E9\\u05DC\\u05DA.\\u00A0 ',\n 'continue': '\\u05D4\\u05DE\\u05E9\\u05DA'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'IE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'HU': {\n 'hu': {\n 'windowMessage': 'Nem l\\u00e1tja a biztons\\u00e1gos PayPal-b\\u00f6ng\\u00e9sz\\u0151t? Seg\\u00edt\\u00fcnk \\u00fajra bet\\u00f6lteni az ablakot, hogy befejezhesse a v\\u00e1s\\u00e1rl\\u00e1st.\\u00A0 ',\n 'continue': 'Folytat\\u00e1s'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ID': {\n 'id': {\n 'windowMessage': 'Browser PayPal yang aman tidak terlihat? Kami akan membantu menampilkan ulang jendela untuk menyelesaikan pembayaran Anda.\\u00A0 ',\n 'continue': 'Lanjutkan'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'HK': {\n 'zh': {\n 'windowMessage': '\\u770B\\u4E0D\\u5230\\u5B89\\u5168\\u7684 PayPal \\u700F\\u89BD\\u5668\\u8996\\u7A97\\uFF1F\\u6211\\u5011\\u6703\\u52A9\\u4F60\\u91CD\\u65B0\\u958B\\u555F\\u8996\\u7A97\\uFF0C\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002',\n 'continue': '\\u7E7C\\u7E8C'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'GROUP-LATAM': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u770B\\u5230PayPal\\u4ED8\\u6B3E\\u9875\\u9762\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas la page de Paiement PayPal ? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo puede ver la p\\u00E1gina de pago de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the PayPal payment page? We\\u2019ll help you re-launch the window to complete your purchase.',\n 'continue': 'Continue'\n }\n },\n 'GROUP-EMEA': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'pt': {\n 'windowMessage': 'N\\u00E3o v\\u00EA a indica\\u00E7\\u00E3o de sess\\u00E3o segura PayPal no browser? Vamos ajudar a reabrir a janela para que possa concluir a sua compra.',\n 'continue': 'Continuar'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'de': {\n 'windowMessage': 'Sie sehen das sichere Browserfenster von PayPal nicht? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n },\n 'da': {\n 'windowMessage': 'Kan du ikke se PayPals sikre browser? Vi hj\\u00E6lper dig med at genstarte vinduet, s\\u00E5 du kan betale.',\n 'continue': 'Forts\\u00E6t'\n },\n 'ar': {\n 'windowMessage': '\\u0644\\u0627 \\u062A\\u0631\\u0649 \\u0645\\u062A\\u0635\\u0641\\u062D PayPal \\u0627\\u0644\\u0622\\u0645\\u0646\\u061F \\u0633\\u0646\\u0633\\u0627\\u0639\\u062F\\u0643 \\u0641\\u064A \\u0625\\u0639\\u0627\\u062F\\u0629 \\u0641\\u062A\\u062D \\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0644\\u0627\\u0633\\u062A\\u0643\\u0645\\u0627\\u0644 \\u0645\\u0634\\u062A\\u0631\\u064A\\u0627\\u062A\\u0643. \\u00A0 ',\n 'continue': '\\u0645\\u062A\\u0627\\u0628\\u0639\\u0629'\n }\n },\n 'GROUP-APAC': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ko': {\n 'windowMessage': '\\uBCF4\\uC548 PayPal \\uBE0C\\uB77C\\uC6B0\\uC800\\uAC00 \\uBCF4\\uC774\\uC9C0 \\uC54A\\uC73C\\uC2E0\\uAC00\\uC694? \\uCC3D\\uC744 \\uB2E4\\uC2DC \\uC2E4\\uD589\\uD558\\uC5EC \\uAD6C\\uB9E4\\uB97C \\uC644\\uB8CC\\uD560 \\uC218 \\uC788\\uB3C4\\uB85D \\uB3C4\\uC640\\uB4DC\\uB9AC\\uACA0\\uC2B5\\uB2C8\\uB2E4. ',\n 'continue': '\\uACC4\\uC18D'\n },\n 'id': {\n 'windowMessage': 'Browser PayPal yang aman tidak terlihat? Kami akan membantu menampilkan ulang jendela untuk menyelesaikan pembelian Anda. ',\n 'continue': 'Lanjutkan'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat. ',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda completar su compra. ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\u2019t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase. ',\n 'continue': 'Continue'\n }\n },\n 'GR': {\n 'el': {\n 'windowMessage': '\\u0394\\u03b5\\u03bd \\u03b2\\u03bb\\u03ad\\u03c0\\u03b5\\u03c4\\u03b5 \\u03c4\\u03bf \\u03b1\\u03c3\\u03c6\\u03b1\\u03bb\\u03ad\\u03c2 \\u03c0\\u03c1\\u03cc\\u03b3\\u03c1\\u03b1\\u03bc\\u03bc\\u03b1 \\u03c0\\u03b5\\u03c1\\u03b9\\u03ae\\u03b3\\u03b7\\u03c3\\u03b7\\u03c2 PayPal; \\u0398\\u03b1 \\u03c3\\u03b1\\u03c2 \\u03b2\\u03bf\\u03b7\\u03b8\\u03ae\\u03c3\\u03bf\\u03c5\\u03bc\\u03b5 \\u03bd\\u03b1 \\u03b5\\u03c0\\u03b1\\u03bd\\u03b5\\u03ba\\u03ba\\u03b9\\u03bd\\u03ae\\u03c3\\u03b5\\u03c4\\u03b5 \\u03c4\\u03bf \\u03c0\\u03b1\\u03c1\\u03ac\\u03b8\\u03c5\\u03c1\\u03bf \\u03b3\\u03b9\\u03b1 \\u03bd\\u03b1 \\u03bf\\u03bb\\u03bf\\u03ba\\u03bb\\u03b7\\u03c1\\u03ce\\u03c3\\u03b5\\u03c4\\u03b5 \\u03c4\\u03b7\\u03bd \\u03b1\\u03b3\\u03bf\\u03c1\\u03ac \\u03c3\\u03b1\\u03c2.\\u00A0 ',\n 'continue': '\\u03a3\\u03c5\\u03bd\\u03ad\\u03c7\\u03b5\\u03b9\\u03b1'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'FR': {\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 PayPal\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'ES': {\n 'es': {\n 'windowMessage': '\\u00BFNo ve el s\\u00EDmbolo de navegaci\\u00F3n segura de PayPal? Le ayudaremos a abrir de nuevo la ventana para completar la compra. ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'FI': {\n 'fi': {\n 'windowMessage': 'Eik\\u00f6 suojattua PayPal-selainta n\\u00e4y? Autamme avaamaan ikkunan uudelleen oston viimeistely\\u00e4 varten.\\u00A0 ',\n 'continue': 'Jatka'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'EE': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'ru': {\n 'windowMessage': '\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0431\\u0435\\u0437\\u043E\\u043F\\u0430\\u0441\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 PayPal \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435? \\u041C\\u044B \\u043F\\u043E\\u043C\\u043E\\u0436\\u0435\\u043C \\u0432\\u0430\\u043C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043E\\u043A\\u043D\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0443\\u043F\\u043A\\u0443.\\u00A0 ',\n 'continue': '\\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'DK': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'da': {\n 'windowMessage': 'Kan du ikke se PayPals sikre browser? Vi hj\\u00E6lper dig med at genstarte vinduet, s\\u00E5 du kan betale.',\n 'continue': 'Forts\\u00E6t'\n }\n },\n 'CZ': {\n 'cs': {\n 'windowMessage': 'Nezobrazuje se v\\u00e1m bezpe\\u010dn\\u00fd prohl\\u00ed\\u017ee\\u010d PayPal? Pom\\u016f\\u017eeme v\\u00e1m okno znovu otev\\u0159\\u00edt, abyste mohli n\\u00e1kup dokon\\u010dit.',\n 'continue': 'Pokra\\u010dovat'\n },\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u8D2D\\u7269\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'fr': {\n 'windowMessage': 'Le navigateur s\\u00E9curis\\u00E9 de PayPal n\\'appara\\u00EEt pas\\u00A0? Nous allons vous aider \\u00E0 rouvrir la fen\\u00EAtre pour finaliser votre achat.',\n 'continue': 'Continuer'\n },\n 'es': {\n 'windowMessage': '\\u00BFNo ve el navegador seguro de PayPal? Abriremos la ventana nuevamente para que pueda concluir su compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'DE': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'de': {\n 'windowMessage': 'Sie sehen das sichere Browserfenster von PayPal nicht? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n }\n },\n 'CH': {\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 PayPal\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n },\n 'de': {\n 'windowMessage': 'Sie sehen das sichere Browserfenster von PayPal nicht? Hier k\\u00F6nnen Sie es wieder \\u00F6ffnen und Ihren Einkauf abschlie\\u00DFen.',\n 'continue': 'Weiter'\n }\n },\n 'CA': {\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 de PayPal\\u00A0? Nous vous aiderons \\u00E0 relancer la fen\\u00EAtre afin d\\'effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you relaunch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'C2': {\n 'zh': {\n 'windowMessage': '\\u6CA1\\u6709\\u627E\\u5230\\u5B89\\u5168\\u7684PayPal\\u6D4F\\u89C8\\u5668\\uFF1F\\u6211\\u4EEC\\u5C06\\u5E2E\\u52A9\\u60A8\\u91CD\\u542F\\u7A97\\u53E3\\u4EE5\\u5B8C\\u6210\\u4ED8\\u6B3E\\u3002\\u00A0 ',\n 'continue': '\\u7EE7\\u7EED'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your payment.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BE': {\n 'nl': {\n 'windowMessage': 'Ziet u de beveiligde PayPal-browser niet? We helpen u het venster opnieuw te openen om uw aankoop te voltooien.\\u00A0 ',\n 'continue': 'Doorgaan'\n },\n 'fr': {\n 'windowMessage': 'Vous ne voyez pas le navigateur s\\u00E9curis\\u00E9 PayPal\\u00A0? Nous allons vous aider \\u00E0 relancer la fen\\u00EAtre pour effectuer votre achat.\\u00A0 ',\n 'continue': 'Continuer'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'BR': {\n 'pt': {\n 'windowMessage': 'N\\u00E3o est\\u00E1 vendo o navegador seguro do PayPal? Ajudaremos voc\\u00EA a reabrir a janela para concluir a compra.\\u00A0 ',\n 'continue': 'Continuar'\n },\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\u2019ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n },\n 'AU': {\n 'en': {\n 'windowMessage': 'Don\\'t see the secure PayPal browser? We\\'ll help you re-launch the window to complete your purchase.\\u00A0 ',\n 'continue': 'Continue'\n }\n }\n};\n","/* @flow */\n\nimport { CHECKOUT_OVERLAY_COLOR } from '../../../constants';\n\nexport function getContainerStyle({ id, tag, CONTEXT, CLASS, ANIMATION } : { id : string, tag : string, CONTEXT : Object, CLASS : Object, ANIMATION : Object }) : string {\n return `\n #${ id } {\n position: absolute;\n z-index: 2147483647;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n\n -webkit-transform: translate3d(0, 0, 0);\n -moz-transform: translate3d(0, 0, 0);\n -ms-transform: translate3d(0, 0, 0);\n -o-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.BLACK } {\n background-color: black;\n background-color: rgba(0, 0, 0, 0.75);\n\n background: -webkit-radial-gradient(50% 50%, ellipse closest-corner, rgba(0,0,0,1) 1%, rgba(0,0,0,0.75) 100%);\n background: -moz-radial-gradient(50% 50%, ellipse closest-corner, rgba(0,0,0,1) 1%, rgba(0,0,0,0.75) 100%);\n background: -ms-radial-gradient(50% 50%, ellipse closest-corner, rgba(0,0,0,1) 1%, rgba(0,0,0,0.75) 100%);\n background: radial-gradient(50% 50%, ellipse closest-corner, rgba(0,0,0,1) 1%, rgba(0,0,0,0.75) 100%);\n\n color: #fff;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.WHITE } {\n background-color: white;\n background-color: rgba(255, 255, 255, 0.4);\n\n background: -webkit-radial-gradient(50% 50%, ellipse closest-corner, rgba(255, 255, 255,1) 1%, rgba(255, 255, 255,0.4) 100%);\n background: -moz-radial-gradient(50% 50%, ellipse closest-corner, rgba(255, 255, 255,1) 1%, rgba(255, 255, 255,0.4) 100%);\n background: -ms-radial-gradient(50% 50%, ellipse closest-corner, rgba(255, 255, 255,1) 1%, rgba(255, 255, 255,0.4) 100%);\n background: radial-gradient(50% 50%, ellipse closest-corner, rgba(255, 255, 255,1) 1%, rgba(255, 255, 255,0.4) 100%);\n\n color: #333;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.BLACK } a {\n color: #fff;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.WHITE } a {\n color: #333;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.BLACK } .paypal-checkout-close:before,\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.BLACK } .paypal-checkout-close:after {\n background-color: #fff;\n }\n\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.WHITE } .paypal-checkout-close:before,\n #${ id }.${ tag }-background-color-${ CHECKOUT_OVERLAY_COLOR.WHITE } .paypal-checkout-close:after {\n background-color: #111;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.POPUP } {\n cursor: pointer;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.POPUP } {\n cursor: pointer;\n }\n\n #${ id } a {\n text-decoration: none;\n }\n\n #${ id } .paypal-checkout-modal {\n font-family: \"HelveticaNeue\", \"HelveticaNeue-Light\", \"Helvetica Neue Light\", helvetica, arial, sans-serif;\n font-size: 14px;\n text-align: center;\n\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n -ms-box-sizing: border-box;\n box-sizing: border-box;\n max-width: 350px;\n top: 50%;\n left: 50%;\n position: absolute;\n transform: translateX(-50%) translateY(-50%);\n -webkit-transform: translateX(-50%) translateY(-50%);\n -moz-transform: translateX(-50%) translateY(-50%);\n -o-transform: translateX(-50%) translateY(-50%);\n -ms-transform: translateX(-50%) translateY(-50%);\n cursor: pointer;\n text-align: center;\n }\n\n #${ id }.${ tag }-loading .paypal-checkout-message, #${ id }.${ tag }-loading .paypal-checkout-continue {\n display: none;\n }\n\n .paypal-checkout-loader {\n display: none;\n }\n\n #${ id }.${ tag }-loading .paypal-checkout-loader {\n display: block;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-logo {\n cursor: pointer;\n margin-bottom: 30px;\n display: inline-block;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-logo img {\n height: 36px;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-logo img.paypal-checkout-logo-pp {\n margin-right: 10px;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-message {\n font-size: 15px;\n line-height: 1.5;\n padding: 10px 0;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-message, #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-continue {\n display: none;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-continue {\n font-size: 15px;\n line-height: 1.35;\n padding: 10px 0;\n font-weight: bold;\n }\n\n #${ id } .paypal-checkout-modal .paypal-checkout-continue a {\n border-bottom: 1px solid currentColor;\n }\n\n #${ id } .paypal-checkout-close {\n position: absolute;\n right: 16px;\n top: 16px;\n width: 16px;\n height: 16px;\n opacity: 0.6;\n }\n\n #${ id }.${ tag }-loading .paypal-checkout-close {\n display: none;\n }\n\n #${ id } .paypal-checkout-close:hover {\n opacity: 1;\n }\n\n #${ id } .paypal-checkout-close:before, .paypal-checkout-close:after {\n position: absolute;\n left: 8px;\n content: ' ';\n height: 16px;\n width: 2px;\n }\n\n #${ id } .paypal-checkout-close:before {\n transform: rotate(45deg);\n -webkit-transform: rotate(45deg);\n -moz-transform: rotate(45deg);\n -o-transform: rotate(45deg);\n -ms-transform: rotate(45deg);\n }\n\n #${ id } .paypal-checkout-close:after {\n transform: rotate(-45deg);\n -webkit-transform: rotate(-45deg);\n -moz-transform: rotate(-45deg);\n -o-transform: rotate(-45deg);\n -ms-transform: rotate(-45deg);\n }\n\n #${ id } .paypal-checkout-iframe-container {\n display: none;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container,\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container > .${ CLASS.OUTLET },\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container > .${ CLASS.OUTLET } > iframe {\n max-height: calc(95vh - 60px);\n max-width: 95vw;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container {\n\n display: block;\n\n position: absolute;\n\n top: 50%;\n left: 50%;\n\n min-width: 450px;\n\n transform: translate(-50%, -50%);\n -webkit-transform: translate(-50%, -50%);\n -moz-transform: translate(-50%, -50%);\n -o-transform: translate(-50%, -50%);\n -ms-transform: translate(-50%, -50%);\n\n transform: translate3d(-50%, -50%, 0);\n -webkit-transform: translate3d(-50%, -50%, 0);\n -moz-transform: translate3d(-50%, -50%, 0);\n -o-transform: translate3d(-50%, -50%, 0);\n -ms-transform: translate3d(-50%, -50%, 0);\n\n border-radius: 10px;\n overflow: hidden;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } {\n\n position: relative;\n\n -webkit-transition: all 0.3s ease;\n -moz-transition: all 0.3s ease;\n -ms-transition: all 0.3s ease;\n -o-transition: all 0.3 ease;\n transition: all 0.3s ease;\n\n -webkit-animation-duration: 0.3s;\n animation-duration: 0.3s;\n -webkit-animation-fill-mode: both;\n animation-fill-mode: both;\n\n min-width: 450px;\n max-width: 450px;\n width: 450px;\n height: 535px;\n\n background-color: white;\n\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe {\n position: absolute;\n top: 0;\n left: 0;\n transition: opacity .4s ease-in-out;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe.${ CLASS.COMPONENT_FRAME } {\n z-index: 100;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe.${ CLASS.PRERENDER_FRAME } {\n z-index: 200;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe.${ CLASS.VISIBLE } {\n opacity: 1;\n z-index: 200;\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } > iframe.${ CLASS.INVISIBLE } {\n opacity: 0;\n z-index: 100;\n }\n\n @media screen and (-ms-high-contrast: active) {\n #${ id } .paypal-checkout-close {\n opacity: 1;\n }\n\n #${ id } .paypal-checkout-close:before , .paypal-checkout-close:after {\n background-color: currentColor;\n }\n }\n\n @media screen and (max-width: 470px) {\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container,\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } {\n min-width: 100%;\n min-width: calc(100% - 20px);\n min-width: -webkit-calc(100% - 20px);\n min-width: -moz-calc(100% - 20px);\n min-width: -o-calc(100% - 20px);\n min-width: -ms-calc(100% - 20px);\n\n max-width: 100%;\n max-width: calc(100% - 20px);\n max-width: -webkit-calc(100% - 20px);\n max-width: -moz-calc(100% - 20px);\n max-width: -o-calc(100% - 20px);\n max-width: -ms-calc(100% - 20px);\n }\n }\n\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } iframe {\n width: 1px;\n min-width: 100%;\n height: 100%;\n }\n\n @-webkit-keyframes ${ ANIMATION.SHOW_COMPONENT } {\n from {\n opacity: 0;\n transform: scale3d(.3, .3, .3);\n -webkit-transform: scale3d(.3, .3, .3);\n }\n\n to {\n opacity: 1;\n transform: scale3d(1, 1, 1);\n -webkit-transform: scale3d(1, 1, 1);\n }\n }\n\n @keyframes ${ ANIMATION.SHOW_COMPONENT } {\n from {\n opacity: 0;\n transform: scale3d(.3, .3, .3);\n -webkit-transform: scale3d(.3, .3, .3);\n }\n\n to {\n opacity: 1;\n transform: scale3d(1, 1, 1);\n -webkit-transform: scale3d(1, 1, 1);\n }\n }\n\n @-webkit-keyframes ${ ANIMATION.HIDE_COMPONENT } {\n from {\n transform: scale3d(1, 1, 1);\n -webkit-transform: scale3d(1, 1, 1);\n }\n\n to {\n opacity: 0;\n transform: scale3d(.3, .3, .3);\n -webkit-transform: scale3d(.3, .3, .3);\n }\n }\n\n @keyframes ${ ANIMATION.HIDE_COMPONENT } {\n from {\n transform: scale3d(1, 1, 1);\n -webkit-transform: scale3d(1, 1, 1);\n }\n\n to {\n opacity: 0;\n transform: scale3d(.3, .3, .3);\n -webkit-transform: scale3d(.3, .3, .3);\n }\n }\n\n .paypal-spinner {\n height: 30px;\n width: 30px;\n display: inline-block;\n box-sizing: content-box;\n opacity: 1;\n filter: alpha(opacity=100);\n -webkit-animation: rotation .7s infinite linear;\n -moz-animation: rotation .7s infinite linear;\n -o-animation: rotation .7s infinite linear;\n animation: rotation .7s infinite linear;\n border-left: 8px solid rgba(0, 0, 0, .2);\n border-right: 8px solid rgba(0, 0, 0, .2);\n border-bottom: 8px solid rgba(0, 0, 0, .2);\n border-top: 8px solid #fff;\n border-radius: 100%\n }\n\n @-webkit-keyframes rotation {\n from {\n -webkit-transform: rotate(0deg)\n }\n to {\n -webkit-transform: rotate(359deg)\n }\n }\n @-moz-keyframes rotation {\n from {\n -moz-transform: rotate(0deg)\n }\n to {\n -moz-transform: rotate(359deg)\n }\n }\n @-o-keyframes rotation {\n from {\n -o-transform: rotate(0deg)\n }\n to {\n -o-transform: rotate(359deg)\n }\n }\n @keyframes rotation {\n from {\n transform: rotate(0deg)\n }\n to {\n transform: rotate(359deg)\n }\n }\n `;\n}\n","/* @flow */\n\nexport function getSandboxStyle({ id, ANIMATION } : { id : string, ANIMATION : Object }) : string {\n return `\n #${ id }.paypal-checkout-sandbox {\n display: block;\n position: fixed;\n top: 0;\n left: 0;\n\n width: 100%;\n height: 100%;\n width: 100vw;\n height: 100vh;\n max-width: 100%;\n max-height: 100%;\n min-width: 100%;\n min-height: 100%;\n\n z-index: 2147483647;\n\n -webkit-animation-duration: 1s;\n animation-duration: 1s;\n\n animation-fill-mode:forwards;\n animation-iteration-count: 1;\n\n -webkit-animation-fill-mode:forwards;\n -webkit-animation-iteration-count: 1;\n }\n\n #${ id }.paypal-checkout-sandbox .paypal-checkout-sandbox-iframe {\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n }\n\n @-webkit-keyframes ${ ANIMATION.SHOW_CONTAINER } {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n }\n\n @keyframes ${ ANIMATION.SHOW_CONTAINER } {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n }\n\n @-webkit-keyframes ${ ANIMATION.HIDE_CONTAINER } {\n from {\n opacity: 1;\n }\n\n 50% {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n }\n\n @keyframes ${ ANIMATION.HIDE_CONTAINER } {\n from {\n opacity: 1;\n }\n\n 50% {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n }\n `;\n}\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { base64encode } from 'belter/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { fundingLogos } from '../../resources';\nimport { BUTTON_LOGO_COLOR, CHECKOUT_OVERLAY_COLOR } from '../../constants';\nimport { isIos } from '../../lib';\n\nimport { containerContent } from './containerContent';\nimport { getContainerStyle } from './containerStyle';\nimport { getSandboxStyle } from './sandboxStyle';\n\nconst LOGO_COLOR = {\n [ CHECKOUT_OVERLAY_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ CHECKOUT_OVERLAY_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n};\n\nexport {\n getContainerStyle,\n getSandboxStyle\n};\n\n// eslint-disable-next-line flowtype/require-exact-type\nexport type ContainerTemplateOptions = {\n id : string,\n props : Object,\n CLASS : Object,\n ANIMATION : Object,\n CONTEXT : Object,\n EVENT : Object,\n dimensions : {\n width : number,\n height : number\n },\n actions : Object,\n tag : string,\n context : string,\n outlet : HTMLElement,\n on : Function,\n jsxDom : Function\n};\n\nexport function containerTemplate({ id, props, CLASS, ANIMATION, CONTEXT, EVENT, on, tag, context, actions, outlet, jsxDom } : ContainerTemplateOptions) : HTMLElement {\n\n const [ lang, country ] = props.locale.split('_');\n\n const content = containerContent[country][lang];\n\n function close(event) {\n event.preventDefault();\n event.stopPropagation();\n actions.close();\n }\n\n function focus(event) {\n event.preventDefault();\n event.stopPropagation();\n\n if (isIos()) {\n // eslint-disable-next-line no-alert\n window.alert('Please switch tabs to reactivate the PayPal window');\n } else {\n ZalgoPromise.try(actions.focus).catch(actions.close);\n }\n }\n\n const style = props.style || {};\n const overlayColor = style.overlayColor || CHECKOUT_OVERLAY_COLOR.BLACK;\n const logoColor = LOGO_COLOR[overlayColor];\n\n const ppLogo = (typeof fundingLogos.pp === 'function')\n ? fundingLogos.pp({ logoColor })\n : fundingLogos.pp[logoColor];\n\n const paypalLogo = (typeof fundingLogos.paypal === 'function')\n ? fundingLogos.paypal({ logoColor })\n : fundingLogos.paypal[logoColor];\n\n const el = (\n
\n \n
\n
\n \n \n
\n
\n {content.windowMessage}\n
\n
\n
\n
\n
\n
\n\n
\n {outlet}\n
\n\n \n
\n );\n\n const container = (\n \n \n { el }\n \n \n );\n\n on(EVENT.CLOSE, () => {\n el.className += ` ${ tag }-loading`;\n });\n\n return (\n
\n \n\n \n
\n );\n}\n","/* @flow */\n\nexport * from './componentTemplate';\nexport * from './containerTemplate';\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { info, track, warn, flush as flushLogs, immediateFlush } from 'beaver-logger/client';\nimport { create, CONSTANTS, PopupOpenError } from 'zoid/src';\nimport { type Component } from 'zoid/src/component/component';\nimport type { CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { base64encode } from 'belter/src';\n\nimport { isDevice, request, getQueryParam, redirect as redir, patchMethod,\n setLogLevel, getSessionID, getBrowserLocale, supportsPopups, memoize,\n getDomainSetting, getScriptVersion, getButtonSessionID, isPayPalDomain,\n isEligible, getCurrentScriptUrl } from '../lib';\nimport { config } from '../config';\nimport { ENV, FPTI, PAYMENT_TYPE, CHECKOUT_OVERLAY_COLOR, ATTRIBUTE } from '../constants';\nimport { onLegacyPaymentAuthorize } from '../compat';\nimport { determineParameterFromToken, determineUrl } from '../integrations';\n\nimport { containerTemplate, componentTemplate } from './template';\n\nfunction addHeader(name, value) : void {\n\n if (!window.$Api) {\n return;\n }\n\n if (window.$Api.addHeader) {\n return window.$Api.addHeader(name, value);\n }\n}\n\n// eslint-disable-next-line flowtype/require-exact-type\ntype CheckoutPropsType = {\n payment? : () => ZalgoPromise,\n onAuthorize : ({ returnUrl : string }, { redirect : (?CrossDomainWindowType, ?string) => ZalgoPromise }) => ?ZalgoPromise,\n onShippingChange? : (address : {}) => ?ZalgoPromise,\n onCancel? : ({ cancelUrl : string }, { redirect : (?CrossDomainWindowType, ?string) => ZalgoPromise }) => ?ZalgoPromise,\n fallback? : (string) => ?ZalgoPromise,\n fundingSource? : string,\n logLevel? : string,\n env? : string,\n stage? : string,\n stageUrl? : string,\n localhostUrl? : string,\n checkoutUri? : string,\n authCode? : string\n};\n\nexport const Checkout : Component = create({\n\n tag: 'paypal-checkout',\n name: 'ppcheckout',\n\n scrolling: true,\n\n buildUrl(props) : ZalgoPromise {\n const env = props.env || config.env;\n\n if (!props.payment) {\n throw new Error(`Can not build url without payment prop`);\n }\n\n return props.payment().then(token => {\n if (!token) {\n throw new Error(`Expected payment id or token to be passed, got ${ token }`);\n }\n\n return determineUrl(env, props.fundingSource, token);\n });\n },\n\n get unsafeRenderTo() : boolean {\n return config.env === ENV.LOCAL;\n },\n\n get domain() : Object {\n return {\n ...config.paypalDomains\n };\n },\n\n get bridgeUrl() : Object {\n return config.metaFrameUrls;\n },\n\n get bridgeDomain() : Object {\n return config.paypalDomains;\n },\n\n contexts: {\n iframe: (!supportsPopups()),\n popup: true\n },\n\n get version() : string {\n return getScriptVersion();\n },\n\n validate() {\n if (!isEligible()) {\n warn('checkout_render_ineligible');\n }\n },\n\n prerenderTemplate: componentTemplate,\n containerTemplate,\n\n props: {\n\n sessionID: {\n type: 'string',\n required: false,\n def() : string {\n return getSessionID();\n },\n queryParam: true\n },\n\n buttonSessionID: {\n type: 'string',\n required: false,\n def() : ?string {\n return getButtonSessionID();\n },\n queryParam: true\n },\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n },\n\n meta: {\n type: 'object',\n required: false,\n def() : Object {\n const meta = window.xprops && window.xprops.meta;\n return meta || {};\n }\n },\n\n stage: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.STAGE || env === ENV.LOCAL) {\n return config.stage;\n }\n }\n },\n\n stageUrl: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.STAGE || env === ENV.LOCAL) {\n return config.stageUrl;\n }\n }\n },\n\n authCode: {\n type: 'string',\n required: false,\n def() : string {\n return config.authCode;\n },\n queryParam: 'code'\n },\n\n localhostUrl: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.LOCAL) {\n return config.localhostUrl;\n }\n }\n },\n\n checkoutUri: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : ?string {\n return config.checkoutUri;\n }\n },\n\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n allowDelegate: true,\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n }\n },\n\n\n client: {\n type: 'object',\n required: false,\n def() : { [string] : string } {\n return {};\n },\n sendToChild: false,\n\n validate(client, props) {\n const env = props.env || config.env;\n\n if (!client[env]) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (client[env].match(/^(.)\\1+$/)) {\n throw new Error(`Invalid client ID: ${ client[env] }`);\n }\n }\n },\n\n payment: {\n type: 'function',\n required: false,\n memoize: true,\n promisify: true,\n queryParam(payment) : ZalgoPromise {\n return payment().then(token => {\n return determineParameterFromToken(token);\n });\n },\n queryValue(payment) : ZalgoPromise {\n return payment();\n },\n childDecorate(payment) : () => ZalgoPromise {\n const token = getQueryParam('token');\n\n return token\n ? memoize(() => ZalgoPromise.resolve(token))\n : payment;\n },\n validate(payment, props) {\n if (!payment && !props.url) {\n throw new Error(`Expected either props.payment or props.url to be passed`);\n }\n },\n alias: 'billingAgreement'\n },\n\n style: {\n type: 'object',\n required: false,\n allowDelegate: true,\n def() : Object {\n return {};\n },\n validate(style) {\n if (style.overlayColor && style.overlayColor !== CHECKOUT_OVERLAY_COLOR.BLACK && style.overlayColor !== CHECKOUT_OVERLAY_COLOR.WHITE) {\n throw new Error(`Invalid background color: ${ style.overlayColor }`);\n }\n }\n },\n\n commit: {\n type: 'boolean',\n required: false\n },\n\n experience: {\n type: 'object',\n required: false,\n def() : Object {\n return {};\n }\n },\n\n fundingSource: {\n type: 'string',\n required: false,\n queryParam: true\n },\n\n fundingOffered: {\n type: 'object',\n required: false,\n queryParam: true,\n def() : Object {\n const elements = Array.prototype.slice.call(document.querySelectorAll(`[${ ATTRIBUTE.FUNDING_SOURCE }]`));\n\n const fundingSources = elements.map(el => {\n return el.getAttribute(ATTRIBUTE.FUNDING_SOURCE);\n });\n\n // $FlowFixMe\n return fundingSources;\n },\n queryValue: (val) => {\n return val.join(',');\n }\n },\n\n onAuthorize: {\n type: 'function',\n required: true,\n once: true,\n \n decorate(original) : Function | void {\n if (original) {\n return function decorateOnAuthorize(data, actions = {}) : ZalgoPromise {\n\n if (data && !data.intent) {\n warn(`checkout_authorize_no_intent`, { paymentID: data.paymentID, token: data.paymentToken });\n }\n\n const close = () => {\n return ZalgoPromise.try(() => {\n if (actions.close) {\n return actions.close();\n }\n }).then(() => {\n return this.closeComponent();\n });\n };\n\n const redirect = (win, url) => {\n return ZalgoPromise.all([\n redir(win || window.top, url || data.returnUrl),\n close()\n ]);\n };\n\n return ZalgoPromise.try(() => {\n\n try {\n const isButton = window.location.href.indexOf('/smart/button') !== -1;\n const isGuest = this.window.location.href.indexOf('/webapps/xoonboarding') !== -1;\n\n if (isButton && isGuest) {\n return request({\n win: this.window,\n method: 'get',\n url: '/webapps/xoonboarding/api/auth'\n }).then(result => {\n if (result && result.data && result.data.access_token) {\n addHeader('x-paypal-internal-euat', result.data.access_token);\n }\n }).catch(() => {\n // pass\n });\n }\n\n } catch (err) {\n // pass\n }\n\n }).then(() => {\n return original.call(this, data, { ...actions, close, redirect });\n }).catch(err => {\n return this.error(err);\n }).finally(() => {\n return this.close();\n });\n };\n }\n }\n },\n\n onShippingChange: {\n type: 'function',\n required: false\n },\n\n onAuth: {\n type: 'function',\n required: false,\n sameDomain: true,\n childDecorate(original : Function) : ?Function {\n if (original) {\n return function wrapOnAuth(data : string | Object) : Object {\n if (typeof data === 'string') {\n data = { accessToken: data };\n }\n return original(data);\n };\n }\n }\n },\n\n accessToken: {\n type: 'function',\n required: false\n },\n\n onCancel: {\n type: 'function',\n required: false,\n once: true,\n noop: true,\n\n decorate(original) : Function {\n return function decorateOnCancel(data, actions = {}) : ZalgoPromise {\n\n const close = () => {\n return ZalgoPromise.try(() => {\n if (actions.close) {\n return actions.close();\n }\n }).then(() => {\n return this.closeComponent();\n });\n };\n\n const redirect = (win, url) => {\n return ZalgoPromise.all([\n redir(win || window.top, url || data.cancelUrl),\n close()\n ]);\n };\n\n return ZalgoPromise.try(() => {\n return original.call(this, data, { ...actions, close, redirect });\n }).finally(() => {\n this.close();\n });\n };\n }\n },\n\n init: {\n type: 'function',\n required: false,\n once: true,\n noop: true,\n\n decorate(original) : Function {\n return function decorateInit(data) : void {\n info('checkout_init');\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CHECKOUT_INIT,\n [ FPTI.KEY.CONTEXT_TYPE ]: FPTI.CONTEXT_TYPE[PAYMENT_TYPE.EC_TOKEN],\n [ FPTI.KEY.TOKEN ]: data.paymentToken,\n [ FPTI.KEY.SELLER_ID ]: data.merchantID,\n [ FPTI.KEY.CONTEXT_ID ]: data.paymentToken\n });\n\n flushLogs();\n\n this.paymentToken = data.paymentToken;\n this.cancelUrl = data.cancelUrl;\n\n return original.apply(this, arguments);\n };\n }\n },\n\n onClose: {\n type: 'function',\n required: false,\n once: true,\n promisify: true,\n noop: true,\n\n decorate(original) : Function {\n return function decorateOnClose(reason) : ZalgoPromise {\n\n const onClose = original.apply(this, arguments);\n\n const CLOSE_REASONS = CONSTANTS.CLOSE_REASONS;\n\n const shouldCancel =\n this.props.onCancel &&\n [ CLOSE_REASONS.CLOSE_DETECTED, CLOSE_REASONS.USER_CLOSED ].indexOf(reason) !== -1;\n\n if (shouldCancel) {\n info(`close_trigger_cancel`);\n return this.props.onCancel({\n paymentToken: this.paymentToken,\n cancelUrl: this.cancelUrl\n }).then(() => onClose);\n }\n\n return onClose;\n };\n }\n },\n\n onError: {\n type: 'function',\n required: false,\n promisify: true,\n noop: true,\n once: true\n },\n\n fallback: {\n type: 'function',\n required: false,\n once: true,\n\n def() : Function {\n return function defaultFallback(url) : ZalgoPromise {\n warn('fallback', { url });\n\n if (getDomainSetting('allow_full_page_fallback')) {\n window.top.location = url;\n return this.close();\n }\n\n return onLegacyPaymentAuthorize(this.props.onAuthorize);\n };\n }\n },\n\n logLevel: {\n type: 'string',\n required: false,\n get value() : string {\n return config.logLevel;\n }\n },\n \n test: {\n type: 'object',\n required: false,\n def() : Object {\n return window.__test__ || { action: 'checkout' };\n }\n },\n\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n }\n },\n\n get dimensions() : { width : string, height : string } {\n\n if (isDevice()) {\n return {\n width: '100%',\n height: '590px'\n };\n }\n\n return {\n width: '500px',\n height: '590px'\n };\n }\n});\n\nif (Checkout.isChild() && Checkout.xchild && Checkout.xprops) {\n\n if (Checkout.xprops && Checkout.xprops.logLevel) {\n setLogLevel(Checkout.xprops.logLevel);\n }\n\n Checkout.xchild.onProps(xprops => {\n patchMethod(xprops, 'onAuthorize', ({ callOriginal, args: [ data ] }) => {\n if (data && !data.intent) {\n warn(`hermes_authorize_no_intent`, { paymentID: data.paymentID, token: data.paymentToken });\n\n try {\n const intent = window.injector.get('$CheckoutCartModel').instance(data.paymentToken).payment_action;\n warn(`hermes_intent`, { paymentID: data.paymentID, token: data.paymentToken, intent });\n } catch (err) {\n // pass\n }\n\n immediateFlush();\n }\n return callOriginal();\n });\n });\n}\n\npatchMethod(Checkout, 'init', ({ args: [ props, _context ], original, context }) => {\n return original.call(context, props, _context, 'body');\n});\n\npatchMethod(Checkout, 'render', ({ args: [ props ], original, context }) => {\n return original.call(context, props, 'body');\n});\n\npatchMethod(Checkout, 'renderTo', ({ args: [ win, props ], original, context }) => {\n\n const payment = props.payment();\n props.payment = () => payment;\n\n return original.call(context, win, props, 'body').catch(err => {\n if (err instanceof PopupOpenError && isPayPalDomain()) {\n Checkout.contexts.iframe = true;\n return original.call(context, win, props, 'body');\n }\n throw err;\n });\n});\n\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { base64encode } from 'belter/src';\n\nimport { fundingLogos } from '../../resources';\nimport { BUTTON_LOGO_COLOR, CHECKOUT_OVERLAY_COLOR } from '../../constants';\nimport { isIos } from '../../lib';\nimport { containerContent } from '../../checkout/template/containerContent';\nimport { getSandboxStyle, getContainerStyle } from '../../checkout/template';\n\nconst LOGO_COLOR = {\n [ CHECKOUT_OVERLAY_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ CHECKOUT_OVERLAY_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n};\n\n// eslint-disable-next-line flowtype/require-exact-type\nexport type ContainerTemplateOptions = {\n id : string,\n props : Object,\n CLASS : Object,\n ANIMATION : Object,\n CONTEXT : Object,\n EVENT : Object,\n dimensions : {\n width : number,\n height : number\n },\n actions : Object,\n tag : string,\n context : string,\n outlet : HTMLElement,\n on : Function,\n jsxDom : Function\n};\n\nexport function containerTemplate({ id, props, CLASS, ANIMATION, CONTEXT, EVENT, on, tag, context, actions, outlet, jsxDom } : ContainerTemplateOptions) : HTMLElement {\n\n const [ lang, country ] = props.locale.split('_');\n\n const containerStyle = `\n ${ getContainerStyle({ id, tag, CONTEXT, CLASS, ANIMATION }) }\n @media screen and (max-width: 470px) {\n #${ id } .paypal-checkout-close {\n position: absolute;\n right: 20px;\n width: 40px;\n height: 40px;\n opacity: 0.6;\n top: 20px;\n opacity: 0.6;\n z-index: 2;\n }\n\n #${ id } .paypal-checkout-close:before, .paypal-checkout-close:after {\n position: absolute;\n left: 20px;\n content: ' ';\n height: 40px;\n width: 1px;\n background-color: #111 !important;\n }\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .paypal-checkout-iframe-container,\n #${ id }.${ tag }-context-${ CONTEXT.IFRAME } .${ CLASS.OUTLET } {\n height: 100%;\n min-height: 100%;\n max-height: 100%;\n min-width: 100%;\n max-width: 100%;\n border-radius: 0px;\n }\n #${ id } .${ CLASS.OUTLET } {\n height: 100%;\n }\n }\n `;\n\n const content = containerContent[country][lang];\n\n function close(event) {\n event.preventDefault();\n event.stopPropagation();\n if (props.onCancel) {\n props.onCancel();\n }\n actions.close();\n }\n\n function focus(event) {\n event.preventDefault();\n event.stopPropagation();\n\n if (isIos()) {\n // eslint-disable-next-line no-alert\n window.alert('Please switch tabs to reactivate the PayPal window');\n } else {\n actions.focus();\n }\n }\n\n const style = props.style || {};\n const overlayColor = style.overlayColor || CHECKOUT_OVERLAY_COLOR.BLACK;\n const logoColor = LOGO_COLOR[overlayColor];\n\n const ppLogo = (typeof fundingLogos.pp === 'function')\n ? fundingLogos.pp({ logoColor })\n : fundingLogos.pp[logoColor];\n\n const paypalLogo = (typeof fundingLogos.paypal === 'function')\n ? fundingLogos.paypal({ logoColor })\n : fundingLogos.paypal[logoColor];\n\n const el = (\n
\n \n
\n
\n \n \n
\n
\n {content.windowMessage}\n
\n
\n
\n
\n
\n
\n\n
\n {outlet}\n
\n\n \n
\n );\n\n const container = (\n \n \n { el }\n \n \n );\n\n on(EVENT.CLOSE, () => {\n el.className += ` ${ tag }-loading`;\n });\n\n return (\n
\n \n\n \n
\n );\n}\n\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { create } from 'zoid/src';\nimport { type Component } from 'zoid/src/component/component';\nimport { base64encode } from 'belter/src';\n\nimport { ENV } from '../constants';\nimport { getButtonSessionID, getBrowserLocale, getSessionID, getCurrentScriptUrl } from '../lib';\nimport { config } from '../config';\n\nimport { containerTemplate } from './template';\n\ntype BillingOptions = {|\n client : {\n [string] : (string | ZalgoPromise)\n },\n env? : string,\n locale? : string,\n logLevel : string,\n awaitPopupBridge : Function,\n meta : Object,\n commit : boolean,\n token : string\n|};\n\nexport const BillingPage : Component = create({\n tag: 'billing-page',\n name: 'billing-page',\n\n buildUrl(props) : string {\n const env = props.env || config.env;\n return `${ config.inlinedCardFieldUrls[env] }/billing`;\n },\n\n get domain() : Object {\n return {\n ...config.paypalDomains,\n [ ENV.LOCAL ]: /^http:\\/\\/localhost.paypal.com:\\d+$/\n };\n },\n\n scrolling: true,\n\n props: {\n sessionID: {\n type: 'string',\n required: false,\n def() : string {\n return getSessionID();\n },\n queryParam: true\n },\n\n\n token: {\n type: 'string',\n required: true,\n queryParam: true\n },\n\n buttonSessionID: {\n type: 'string',\n required: false,\n def() : ?string {\n return getButtonSessionID();\n },\n queryParam: true\n },\n\n commit: {\n type: 'boolean',\n required: false,\n queryParam: true\n },\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n },\n\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n allowDelegate: true,\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n }\n },\n\n cardType: {\n type: 'string',\n required: false\n },\n prefilledZipCode: {\n type: 'string',\n required: false\n },\n\n onEvent: {\n type: 'function',\n required: false,\n sameDomain: true\n },\n\n dispatch: {\n type: 'object',\n required: false,\n sameDomain: true\n },\n\n onCancel: {\n type: 'function',\n required: false,\n once: true,\n noop: true\n },\n\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n }\n },\n\n\n containerTemplate\n});\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { create } from 'zoid/src';\nimport { base64encode } from 'belter/src';\n\nimport { getBrowserLocale, getCurrentScriptUrl } from '../lib';\nimport { config } from '../config';\nimport { containerTemplate } from '../billing/template';\n\nexport const ThreeDomainSecure = create({\n tag: 'paypal-3ds',\n name: '3ds',\n\n buildUrl(props) : string {\n const env = props.env || config.env;\n return `${ config.inlinedCardFieldUrls[env] }/init3ds`;\n },\n\n get domain() : Object {\n return {\n ...config.paypalDomains\n };\n },\n\n scrolling: true,\n\n props: {\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n },\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n allowDelegate: true,\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n }\n },\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n },\n challengeUrl: {\n type: 'string'\n },\n threeDomainSecureToken: {\n type: 'string'\n },\n method: {\n type: 'string'\n },\n onSuccess: {\n type: 'function',\n required: false\n },\n onError: {\n type: 'function',\n required: false\n },\n onCancel: {\n type: 'function',\n required: true,\n allowDelegate: true\n }\n },\n\n\n containerTemplate\n});\n","/* @flow */\n\nimport { track, info } from 'beaver-logger/client';\n\nimport { config } from '../config';\nimport { FPTI, PPTM_ID } from '../constants';\nimport { stringifyError, extendUrl, loadScript, getElement, isPayPalDomain } from '../lib';\n\n\nfunction shouldCreateInitialPptmScript() : boolean {\n const id = window.location.hostname;\n\n if (!id) {\n return false;\n }\n\n if (isPayPalDomain()) {\n return false;\n }\n\n const existingScript = getElement(PPTM_ID);\n const alreadyDownloaded = Boolean(existingScript);\n\n if (alreadyDownloaded) {\n info('pptm_tried_loading_twice');\n return false;\n }\n\n return true;\n}\n\nfunction removePptm() {\n const script = getElement(PPTM_ID);\n\n if (script) {\n // $FlowFixMe\n script.parentNode.removeChild(script);\n }\n}\n\nexport function pptmFactory() : Object {\n let noContentFoundInContainer = false;\n const callback = `__pptmLoadedWithNoContent`;\n let listener;\n\n const obj = {\n /*\n In the button component, we set up a global window[callback] that will be called in pptm `onload` attribute.\n Button.render calls `reloadPptmScript`, which checks if window[callback] has been called yet (meaning, it checks\n if pptm.js was loaded before Button.render was called). If so, we'll check to see if we should reload PPTM\n now that we might have a client ID from the Button.render method.\n If pptm.js hasn't loaded yet, then we'll set up a listener to the same logic above to defer it until\n pptm.js actually loads.\n */\n reloadPptmScript(clientId : ?string) {\n const tryCreatePptmScript = () => {\n if (obj.shouldReloadPptmScript(clientId)) {\n obj.removePptm();\n obj.createPptmScript(clientId);\n } else {\n // Defer until later, since reloadPptmScript might have been called\n // before pptm loaded, so we'll still want to hook into the script load.\n listener = tryCreatePptmScript;\n }\n };\n\n tryCreatePptmScript();\n },\n listenForLoadWithNoContent() {\n window[callback] = () => {\n noContentFoundInContainer = true;\n\n if (listener) {\n listener();\n listener = undefined;\n }\n };\n },\n listenForButtonRender() {\n window.paypalDDL = window.paypalDDL || [];\n const buttonRenderEvent = window.paypalDDL.filter(e => e.event === 'paypalButtonRender');\n if (buttonRenderEvent.length === 0) {\n window.paypalDDL.push({ event: 'paypalButtonRender' });\n }\n },\n get callback() : string {\n return callback;\n },\n get noContentFoundInContainer() : boolean {\n return noContentFoundInContainer;\n },\n createPptmScript: (clientId : ?string) => {\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.PPTM,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.PPTM_LOAD\n });\n \n const params = {\n t: 'xo',\n id: window.location.hostname,\n mrid: config.merchantID,\n client_id: '',\n v: config.version,\n source: 'checkoutjs'\n };\n \n if (clientId) {\n params.client_id = clientId;\n } else {\n delete params.client_id;\n }\n \n const fullUrl = extendUrl(config.pptmUrl, params);\n \n loadScript(fullUrl, 0, {\n async: true,\n id: PPTM_ID\n }).then(() => {\n // If the snippet is empty, then fire the callback.\n // We assume non-empty pptm.js bundles with init the paypalDDL and push an event called\n // `snippetRun` to it.\n if (!(window.paypalDDL && window.paypalDDL[0] && window.paypalDDL[0].event === 'snippetRun')) {\n window[callback]();\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.PPTM,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.PPTM_LOADED\n });\n }).catch(err => {\n info('pptm_script_error', { error: stringifyError(err) });\n });\n },\n shouldCreateInitialPptmScript,\n /*\n During Button render if a client ID was provided, we'll want to refresh the\n pptm script to try to pull down a container by that value.\n We'll only do this if we're not on the PayPal domain, or if\n a merchant ID wasn't already provided (since container look-up can\n also happen by merchant ID). Note that this will only happen\n if there was no content found in the container that was pulled down\n in the `setup` script. This is important because we don't want\n to pull down multiple containers that actually contain content,\n otherwise we'll be firing duplicate tags.\n */\n shouldReloadPptmScript(clientId : ?string) : boolean {\n if (noContentFoundInContainer === false) {\n return false;\n }\n\n if (isPayPalDomain()) {\n return false;\n }\n \n // If a merchant ID was already provided, then that meant we initially\n // loaded the pptm script with that value as the main container\n // look-up value, so in this case we don't want to reload pptm.\n if (config.merchantID) {\n return false;\n }\n \n if (clientId) {\n return true;\n }\n \n return false;\n },\n removePptm\n };\n\n return obj;\n}\n","/* @flow */\n\nimport { pptmFactory } from './pptm-factory';\n\nexport const pptm = pptmFactory();\n","/* @flow */\n\nexport * from './pptm';\nexport * from './pptm-factory';\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { on, send } from 'post-robot/src';\nimport { base64encode } from 'belter/src';\nimport { info, track } from 'beaver-logger/client';\nimport { getAncestor, isSameDomain } from 'cross-domain-utils/src';\n\nimport { config } from '../config';\nimport { FPTI, PAYMENT_TYPE } from '../constants';\nimport { request, memoize, isPayPalDomain, uniqueID } from '../lib';\n\ntype ProxyRest = {\n [string] : (...args : $ReadOnlyArray) => ZalgoPromise<*>\n};\n\nlet proxyRest : ProxyRest = {};\n\nconst createAccessToken = memoize((env : string, client : { [key : string] : string }) : ZalgoPromise => {\n\n info(`rest_api_create_access_token`);\n\n env = env || config.env;\n\n const clientID : string = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (proxyRest.createAccessToken && !proxyRest.createAccessToken.source.closed) {\n return proxyRest.createAccessToken(env, client);\n }\n\n const basicAuth : string = base64encode(`${ clientID }:`);\n\n return request({\n\n method: `post`,\n url: config.authApiUrls[env],\n headers: {\n Authorization: `Basic ${ basicAuth }`\n },\n data: {\n grant_type: `client_credentials`\n }\n\n }).then(res => {\n\n if (res && res.error === 'invalid_client') {\n throw new Error(`Auth Api invalid ${ env } client id: ${ clientID }:\\n\\n${ JSON.stringify(res, null, 4) }`);\n }\n\n if (!res || !res.access_token) {\n throw new Error(`Auth Api response error:\\n\\n${ JSON.stringify(res, null, 4) }`);\n }\n\n return res.access_token;\n });\n\n}, { time: 10 * 60 * 1000 });\n\nconst createExperienceProfile = memoize((env : string, client : { [key : string] : string }, experienceDetails : Object = {}) : ZalgoPromise => {\n\n info(`rest_api_create_experience_profile`);\n\n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (proxyRest.createExperienceProfile && !proxyRest.createExperienceProfile.source.closed) {\n return proxyRest.createExperienceProfile(env, client, experienceDetails);\n }\n\n experienceDetails.temporary = true;\n experienceDetails.name = experienceDetails.name ? `${ experienceDetails.name }_${ Math.random().toString() }` : Math.random().toString();\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n return request({\n method: `post`,\n url: config.experienceApiUrls[env],\n headers: {\n Authorization: `Bearer ${ accessToken }`\n },\n json: experienceDetails\n });\n\n }).then((res) : string => {\n\n if (res && res.error) {\n throw new Error(res.error);\n }\n\n if (!res.id) {\n throw new Error(`No id in experience profile response:\\n\\n${ JSON.stringify(res, null, 4) }`);\n }\n\n return res.id;\n });\n\n}, { time: 10 * 60 * 1000 });\n\nfunction logPaymentResponse(res) {\n\n if (!res) {\n return;\n }\n\n let paymentToken;\n let paymentID;\n\n if (res.id) {\n paymentID = res.id;\n }\n\n if (res.links && res.links.length) {\n for (let i = 0; i < res.links.length; i++) {\n if (res.links[i].method === 'REDIRECT' && res.links[i].rel === 'approval_url') {\n const match = res.links[i].href.match(/token=((EC-)?[A-Z0-9]{17})/);\n if (match) {\n paymentToken = match[1];\n }\n }\n }\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.BUTTON,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CREATE_PAYMENT,\n [ FPTI.KEY.CONTEXT_TYPE ]: FPTI.CONTEXT_TYPE[PAYMENT_TYPE.PAY_ID],\n [ FPTI.KEY.PAY_ID ]: paymentID,\n [ FPTI.KEY.TOKEN ]: paymentToken,\n [ FPTI.KEY.CONTEXT_ID ]: paymentID\n });\n}\n\nfunction getDefaultReturnUrl() : string {\n return `https://www.paypal.com/checkoutnow/error`;\n}\n\nfunction createTracking(env : string, client : { [key : string] : string }, merchantID, trackingData) : Object {\n \n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n const trackingID = uniqueID();\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n const headers : Object = {\n Authorization: `Bearer ${ accessToken }`\n };\n\n return request({\n method: `put`,\n url: `${ config.trackingApiUrls[env] }/${ merchantID }/${ trackingID }`,\n headers,\n json: {\n 'tracking_id': trackingID,\n 'additional_data': trackingData\n }\n });\n\n }).then(() => {\n return trackingID;\n });\n}\n\nfunction createPayment(env : string, client : { [key : string] : string }, paymentDetails : Object) : ZalgoPromise {\n\n info(`rest_api_create_checkout_token`);\n\n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n let { payment, experience, meta, tracking } = paymentDetails;\n\n if (!payment) {\n throw new Error(`Expected payment details to be passed`);\n }\n\n if (proxyRest.createPayment && !proxyRest.createPayment.source.closed) {\n return proxyRest.createPayment(env, client, { payment, experience, meta, tracking });\n }\n\n payment = { ...payment };\n payment.intent = payment.intent || 'sale';\n payment.redirect_urls = payment.redirect_urls || {};\n payment.redirect_urls.return_url = payment.redirect_urls.return_url || getDefaultReturnUrl();\n payment.redirect_urls.cancel_url = payment.redirect_urls.cancel_url || getDefaultReturnUrl();\n payment.payer = payment.payer || {};\n payment.payer.payment_method = payment.payer.payment_method || 'paypal';\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n return ZalgoPromise.try(() => {\n\n if (experience) {\n return ZalgoPromise.resolve(createExperienceProfile(env, client, experience));\n }\n\n }).then((experienceID) : ZalgoPromise => {\n\n return ZalgoPromise.try(() => {\n\n if (tracking) {\n return ZalgoPromise.resolve(createTracking(env, client, tracking.id, tracking.data));\n }\n\n }).then((trackingID) : ZalgoPromise => {\n\n if (experienceID) {\n payment.experience_profile_id = experienceID;\n }\n\n const headers : Object = {\n Authorization: `Bearer ${ accessToken }`\n };\n\n if (trackingID) {\n headers['Paypal-Client-Metadata-Id'] = trackingID;\n }\n\n if (meta && meta.partner_attribution_id) {\n headers['PayPal-Partner-Attribution-Id'] = meta.partner_attribution_id;\n }\n\n return request({\n method: `post`,\n url: config.paymentApiUrls[env],\n headers,\n json: payment\n });\n });\n });\n\n }).then((res) : string => {\n\n logPaymentResponse(res);\n\n if (res && res.id) {\n return res.id;\n }\n\n throw new Error(`Payment Api response error:\\n\\n${ JSON.stringify(res, null, 4) }`);\n\n });\n}\n\nfunction createOrder(env : string, client : { [key : string] : string }, paymentDetails : Object) : ZalgoPromise {\n\n info(`rest_api_create_order_token`);\n\n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n let { order, meta } = paymentDetails;\n\n if (!order) {\n throw new Error(`Expected order details to be passed`);\n }\n\n if (proxyRest.createOrder && !proxyRest.createOrder.source.closed) {\n return proxyRest.createOrder(env, client, { order, meta });\n }\n\n order = { ...order };\n order.intent = order.intent || 'CAPTURE';\n order.application_context = order.application_context || {};\n order.application_context.return_url = order.application_context.return_url || getDefaultReturnUrl();\n order.application_context.cancel_url = order.application_context.cancel_url || getDefaultReturnUrl();\n order.purchase_units = order.purchase_units || [];\n order.purchase_units[0] = order.purchase_units[0] || {};\n order.purchase_units.forEach(unit => {\n unit.reference_id = unit.reference_id || Math.random().toString();\n });\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n const headers : Object = {\n Authorization: `Bearer ${ accessToken }`\n };\n\n if (meta && meta.partner_attribution_id) {\n headers['PayPal-Partner-Attribution-Id'] = meta.partner_attribution_id;\n }\n\n return request({\n method: `post`,\n url: config.orderApiUrls[env],\n headers,\n json: order\n });\n\n }).then((res) : string => {\n\n logPaymentResponse(res);\n\n if (res && res.id) {\n return res.id;\n }\n\n throw new Error(`Payment Api response error:\\n\\n${ JSON.stringify(res, null, 4) }`);\n });\n}\n\nexport function createBillingAgreement(env : string, client : { [key : string] : string }, billingDetails : Object, experienceDetails? : ?Object) : ZalgoPromise {\n\n info(`rest_api_create_billing_token`);\n\n env = env || config.env;\n\n const clientID = client[env];\n\n if (!clientID) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (proxyRest.createBillingAgreement && !proxyRest.createBillingAgreement.source.closed) {\n return proxyRest.createBillingAgreement(env, client, billingDetails, experienceDetails);\n }\n\n billingDetails = { ...billingDetails };\n billingDetails.plan = billingDetails.plan || {};\n billingDetails.plan.merchant_preferences = billingDetails.plan.merchant_preferences || {};\n billingDetails.plan.merchant_preferences.return_url = billingDetails.plan.merchant_preferences.return_url || getDefaultReturnUrl();\n billingDetails.plan.merchant_preferences.cancel_url = billingDetails.plan.merchant_preferences.cancel_url || getDefaultReturnUrl();\n billingDetails.payer = billingDetails.payer || {};\n billingDetails.payer.payment_method = billingDetails.payer.payment_method || 'paypal';\n\n\n return createAccessToken(env, client).then((accessToken) : ZalgoPromise => {\n\n return ZalgoPromise.try(() => {\n\n if (experienceDetails) {\n return ZalgoPromise.resolve(createExperienceProfile(env, client, experienceDetails));\n }\n\n }).then((experienceID) : ZalgoPromise => {\n\n if (experienceID) {\n billingDetails.experience_profile_id = experienceID;\n }\n\n return request({\n method: `post`,\n url: config.billingApiUrls[env],\n headers: {\n Authorization: `Bearer ${ accessToken }`\n },\n json: billingDetails\n });\n });\n\n }).then(res => {\n\n if (res && res.token_id) {\n return res.token_id;\n }\n\n throw new Error(`Billing Api response error:\\n\\n${ JSON.stringify(res, null, 4) }`);\n });\n}\n\nexport const rest = {\n payment: {\n create: createPayment\n },\n order: {\n create: createOrder\n },\n billingAgreement: {\n create: createBillingAgreement\n },\n experience: {\n create: createExperienceProfile\n }\n};\n\nconst PROXY_REST = `proxy_rest`;\nconst parentWin = getAncestor();\n\non(PROXY_REST, { domain: config.paypal_domain_regex }, ({ data }) => {\n proxyRest = data;\n});\n\nif (parentWin && isPayPalDomain() && !isSameDomain(parentWin)) {\n send(parentWin, PROXY_REST, { createAccessToken, createExperienceProfile, createPayment, createBillingAgreement, createOrder })\n .catch(() => {\n // pass\n });\n}\n","/* @flow */\n\nimport { info, track, immediateFlush } from 'beaver-logger/client';\n\nimport { FPTI, PAYMENT_TYPE } from './constants';\nimport { getReturnToken, getSessionState, getDomainSetting, eventEmitter } from './lib';\n\nexport const onAuthorizeListener = eventEmitter();\n\nfunction log(experiment : string, treatment : string, token : ?string, state : string) {\n\n getSessionState(session => {\n\n let event = `${ experiment }_${ treatment }_${ state }`;\n const loggedEvents = session.loggedExperimentEvents = session.loggedExperimentEvents || [];\n const duplicate = loggedEvents.indexOf(event) !== -1;\n\n if (duplicate) {\n info(`duplicate_${ event }`);\n\n } else {\n info(event);\n loggedEvents.push(event);\n\n const edge = window.navigator && window.navigator.userAgent && window.navigator.userAgent.match(/Edge\\/[0-9]{2}/);\n\n if (edge) {\n event = info(`${ edge[0].toLowerCase().replace('/', '_') }_${ event }`);\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: state,\n [ FPTI.KEY.EXPERIMENT_NAME ]: experiment,\n [ FPTI.KEY.TREATMENT_NAME ]: treatment,\n [ FPTI.KEY.TOKEN ]: token,\n [ FPTI.KEY.CONTEXT_ID ]: token,\n [ FPTI.KEY.CONTEXT_TYPE ]: token ? FPTI.CONTEXT_TYPE[PAYMENT_TYPE.EC_TOKEN] : FPTI.CONTEXT_TYPE.BUTTON_SESSION_ID\n });\n\n immediateFlush();\n }\n });\n}\n\nexport function logExperimentTreatment({ experiment, treatment, state, token } : { experiment : string, treatment : string, state : string, token : ?string }) {\n\n if (!experiment || !treatment) {\n return;\n }\n\n getSessionState(session => {\n session.externalExperiment = experiment;\n session.externalExperimentTreatment = treatment;\n\n if (token) {\n session.externalExperimentToken = token;\n }\n });\n\n log(experiment, treatment, token, state);\n}\n\nfunction logReturn(token : string) {\n\n const {\n externalExperiment,\n externalExperimentTreatment,\n externalExperimentToken\n } = getSessionState(session => session);\n\n if (externalExperiment && externalExperimentTreatment && externalExperimentToken === token) {\n log(externalExperiment, externalExperimentTreatment, token, `complete`);\n } else {\n info(`experiment_mismatch`, {\n token,\n externalExperiment,\n externalExperimentTreatment,\n externalExperimentToken\n });\n }\n}\n\nif (getDomainSetting('log_authorize')) {\n\n onAuthorizeListener.once(({ paymentToken }) => {\n setTimeout(() => {\n logReturn(paymentToken);\n }, 1);\n });\n\n const returnToken = getReturnToken();\n\n if (returnToken) {\n setTimeout(() => {\n if (returnToken) {\n logReturn(returnToken);\n }\n }, 1);\n }\n}\n","/* @flow */\n\nimport { once, noop } from 'zoid/src/lib';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { error } from 'beaver-logger/client';\nimport type { CrossDomainWindowType } from 'cross-domain-utils/src';\n\nimport { extendUrl, redirect, awaitKey, stringifyError } from '../lib';\nimport { config } from '../config';\nimport { FUNDING } from '../constants';\n\nimport { determineParameterFromToken, determineUrl } from './checkout';\n\nconst OPTYPE = {\n PAYMENT: 'payment',\n CANCEL: 'cancel'\n};\n\nconst CONTINGENCY = {\n PAYMENT_CANCELLED: 'PAYMENT_CANCELLED'\n};\n\ntype PopupBridge = {|\n open : (string) => ZalgoPromise\n|};\n\nfunction wrapPopupBridge(popupBridge : Object) : PopupBridge {\n return {\n open(url : string) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n popupBridge.onComplete = (err, result) => {\n if (!result) {\n return reject(new Error('No payload passed in popupBridge.onComplete'));\n }\n\n return err ? reject(err) : resolve(result);\n };\n\n popupBridge.onCancel = () => {\n const err = new Error(CONTINGENCY.PAYMENT_CANCELLED);\n // $FlowFixMe\n err.code = CONTINGENCY.PAYMENT_CANCELLED;\n return reject(err);\n };\n\n popupBridge.open(extendUrl(url, { redirect_uri: popupBridge.getReturnUrlPrefix() }));\n });\n }\n };\n}\n\nfunction validateCheckoutProps(props) {\n if (!props.payment) {\n throw new Error(`Expected props.payment to be passed`);\n }\n\n if (!props.onAuthorize) {\n throw new Error(`Expected props.onAuthorize to be passed`);\n }\n\n if (props.env && !config.checkoutUrls[props.env]) {\n throw new Error(`Invalid props.env: ${ props.env }`);\n }\n}\n\nfunction normalizeCheckoutProps(props : Object) : { env : string, payment : Function, onAuthorize : Function, onCancel : Function } {\n const env = props.env = props.env || config.env;\n\n const payment = props.payment;\n const onAuthorize = once(props.onAuthorize);\n const onCancel = once(props.onCancel || noop);\n\n return { env, payment, onAuthorize, onCancel };\n}\n\nfunction getUrl(props : { env : string, payment : Function, onAuthorize : Function, onCancel? : Function, commit? : boolean }) : ZalgoPromise {\n\n const { env, payment } = normalizeCheckoutProps(props);\n\n return ZalgoPromise.try(payment, { props }).then(token => {\n if (!token) {\n throw new Error(`Expected props.payment to return a payment id or token`);\n }\n\n return extendUrl(determineUrl(env, FUNDING.PAYPAL, token), {\n [determineParameterFromToken(token)]: token,\n\n useraction: props.commit ? 'commit' : '',\n native_xo: '1'\n });\n });\n}\n\nfunction extractDataFromQuery(query : Object) : Object {\n\n const data : Object = {\n paymentToken: query.token,\n billingToken: query.ba_token,\n paymentID: query.paymentId,\n payerID: query.PayerID,\n intent: query.intent\n };\n \n const { opType, return_uri, cancel_uri } = query;\n\n if (opType === OPTYPE.PAYMENT) {\n data.returnUrl = return_uri;\n\n } else if (opType === OPTYPE.CANCEL) {\n data.cancelUrl = cancel_uri;\n }\n\n return data;\n}\n\nfunction buildActions(query : Object) : Object {\n \n const actions : Object = {\n close: noop,\n closeComponent: noop\n };\n\n const { opType, return_uri, cancel_uri } = query;\n\n if (opType === OPTYPE.PAYMENT) {\n actions.redirect = (win : CrossDomainWindowType = window, redirectUrl : string = return_uri) : ZalgoPromise => {\n return redirect(win, redirectUrl);\n };\n\n } else if (opType === OPTYPE.CANCEL) {\n actions.redirect = (win : CrossDomainWindowType = window, redirectUrl : string = cancel_uri) : ZalgoPromise => {\n return redirect(win, redirectUrl);\n };\n }\n\n return actions;\n}\n\nfunction renderThroughPopupBridge(props : Object, popupBridge : PopupBridge) : ZalgoPromise {\n return ZalgoPromise.try(() => {\n\n validateCheckoutProps(props);\n\n }).then(() => {\n\n return getUrl(props);\n \n }).then(url => {\n\n return popupBridge.open(url);\n\n }).then(payload => {\n\n const { opType } = payload.queryItems;\n const { onAuthorize, onCancel } = normalizeCheckoutProps(props);\n\n const data = extractDataFromQuery(payload.queryItems);\n const actions = buildActions(payload.queryItems);\n \n if (opType === OPTYPE.PAYMENT) {\n return onAuthorize(data, actions);\n\n } else if (opType === OPTYPE.CANCEL) {\n return onCancel(data, actions);\n \n } else {\n throw new Error(`Invalid opType: ${ opType }`);\n }\n\n }).catch(err => {\n\n if (err && err.code === CONTINGENCY.PAYMENT_CANCELLED) {\n const { onCancel } = normalizeCheckoutProps(props);\n return onCancel({}, {});\n }\n\n throw err;\n });\n}\n\nexport function awaitPopupBridge(Button : Object) : ZalgoPromise {\n if (Button.xprops && Button.xprops.awaitPopupBridge) {\n return Button.xprops.awaitPopupBridge();\n }\n\n return awaitKey(window, 'popupBridge').then(popupBridge => {\n return wrapPopupBridge(popupBridge);\n });\n}\n\nexport function setupPopupBridgeProxy(Checkout : Object, Button : Object) {\n\n let popupBridge;\n\n awaitPopupBridge(Button).then(bridge => {\n popupBridge = bridge;\n });\n\n function doRender(props, original) : ZalgoPromise {\n if (!popupBridge) {\n return original();\n }\n \n return renderThroughPopupBridge(props, popupBridge)\n .catch(err => {\n error(`popup_bridge_error`, { err: stringifyError(err) });\n return original();\n });\n }\n\n const render = Checkout.render;\n Checkout.render = function popupBridgeRender(props : Object) : ZalgoPromise {\n return doRender(props, () => render.apply(this, arguments));\n };\n\n const renderTo = Checkout.renderTo;\n Checkout.renderTo = function popupBridgeRenderTo(win : CrossDomainWindowType, props : Object) : ZalgoPromise {\n return doRender(props, () => renderTo.apply(this, arguments));\n };\n\n const renderPopupTo = Checkout.renderPopupTo;\n Checkout.renderPopupTo = function popupBridgeRenderPopupTo(win : CrossDomainWindowType, props : Object) : ZalgoPromise {\n return doRender(props, () => renderPopupTo.apply(this, arguments));\n };\n}\n","/* @flow */\n/* global __paypal_checkout__*/\n\nimport { FUNDING, COUNTRY, CARD, PLATFORM, DEFAULT, ENV } from '../constants';\n\nexport const FUNDING_PRIORITY = [\n FUNDING.PAYPAL,\n FUNDING.VENMO,\n FUNDING.ITAU,\n FUNDING.CREDIT,\n FUNDING.CARD,\n FUNDING.IDEAL,\n FUNDING.ELV,\n FUNDING.BANCONTACT,\n FUNDING.GIROPAY,\n FUNDING.EPS,\n FUNDING.SOFORT,\n FUNDING.MYBANK,\n FUNDING.BLIK,\n FUNDING.P24,\n FUNDING.PAYU,\n FUNDING.VERKKOPANKKI,\n FUNDING.TRUSTLY,\n FUNDING.MAXIMA,\n FUNDING.BOLETO,\n FUNDING.OXXO\n];\n\nexport const FUNDING_ORDER = [\n FUNDING.PAYPAL,\n FUNDING.VENMO,\n FUNDING.ITAU,\n FUNDING.CREDIT,\n FUNDING.IDEAL,\n FUNDING.ELV,\n FUNDING.BANCONTACT,\n FUNDING.GIROPAY,\n FUNDING.EPS,\n FUNDING.SOFORT,\n FUNDING.MYBANK,\n FUNDING.BLIK,\n FUNDING.P24,\n FUNDING.PAYU,\n FUNDING.VERKKOPANKKI,\n FUNDING.TRUSTLY,\n FUNDING.MAXIMA,\n FUNDING.BOLETO,\n FUNDING.OXXO,\n FUNDING.CARD\n];\n\nexport const FUNDING_CONFIG = {\n\n [ DEFAULT ]: {\n enabled: true,\n\n allowOptIn: true,\n allowOptOut: true,\n allowRemember: true,\n\n allowHorizontal: true,\n allowVertical: true,\n\n requireCommitAsTrue: false\n },\n\n [ FUNDING.PAYPAL ]: {\n default: true,\n\n allowOptIn: false,\n allowOptOut: false,\n\n allowHorizontal: true,\n allowVertical: true\n },\n\n [ FUNDING.CARD ]: {\n // $FlowFixMe\n default: (typeof __paypal_checkout__ === 'undefined' ? true : __paypal_checkout__.serverConfig.paypalMerchantConfiguration.creditCard.isPayPalBranded),\n\n allowHorizontal: false,\n allowVertical: true\n },\n\n [ FUNDING.VENMO ]: {\n allowOptOut: true,\n allowedCountries: [\n COUNTRY.US\n ],\n\n allowHorizontal: true,\n allowVertical: true\n },\n [ FUNDING.ITAU ]: {\n allowOptOut: true,\n allowedCountries: [\n COUNTRY.BR\n ],\n\n allowHorizontal: true,\n allowVertical: true\n },\n\n [ FUNDING.CREDIT ]: {\n allowedCountries: [\n COUNTRY.US,\n COUNTRY.GB,\n COUNTRY.DE\n ],\n defaultVerticalCountries: [\n COUNTRY.US\n ],\n platforms: [\n PLATFORM.MOBILE\n ],\n\n allowHorizontal: true,\n allowVertical: true,\n allowRemember: true\n },\n\n [ FUNDING.IDEAL ]: {\n allowedCountries: [\n COUNTRY.NL\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.ELV ]: {\n allowedCountries: [\n COUNTRY.DE\n ],\n defaultVerticalCountries: [\n COUNTRY.DE\n ],\n\n allowHorizontal: false,\n allowVertical: true\n },\n\n [ FUNDING.BANCONTACT ]: {\n allowedCountries: [\n COUNTRY.BE\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.GIROPAY ]: {\n allowedCountries: [\n COUNTRY.DE\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.SOFORT ]: {\n allowedCountries: [\n COUNTRY.DE,\n COUNTRY.AT,\n COUNTRY.BE,\n COUNTRY.ES,\n COUNTRY.IT,\n COUNTRY.NL\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.EPS ]: {\n allowedCountries: [\n COUNTRY.AT\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n\n [ FUNDING.MYBANK ]: {\n allowedCountries: [\n COUNTRY.IT\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.P24 ]: {\n allowedCountries: [\n COUNTRY.PL\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.PAYU ]: {\n allowedCountries: [\n COUNTRY.CZ\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.VERKKOPANKKI ]: {\n allowedCountries: [\n COUNTRY.FI\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.BLIK ]: {\n allowedCountries: [\n COUNTRY.PL\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.TRUSTLY ]: {\n allowedCountries: [\n COUNTRY.DE,\n COUNTRY.DK,\n COUNTRY.EE,\n COUNTRY.ES,\n COUNTRY.FI,\n COUNTRY.GB,\n COUNTRY.IT,\n COUNTRY.MT,\n COUNTRY.NL,\n COUNTRY.NO,\n COUNTRY.SE\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.MAXIMA ]: {\n allowedCountries: [\n COUNTRY.LT\n ],\n\n allowedEnvs: [\n ENV.LOCAL,\n ENV.STAGE,\n ENV.TEST\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.BOLETO ]: {\n allowedCountries: [\n COUNTRY.BR\n ],\n\n allowedEnvs: [\n ENV.LOCAL,\n ENV.STAGE,\n ENV.TEST\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.OXXO ]: {\n allowedCountries: [\n COUNTRY.MX\n ],\n\n allowedEnvs: [\n ENV.LOCAL,\n ENV.STAGE,\n ENV.TEST\n ],\n\n allowHorizontal: false,\n allowVertical: true,\n requireCommitAsTrue: true\n },\n [ FUNDING.ZIMPLER ]: {\n allowedCountries: [],\n\n allowHorizontal: false,\n allowVertical: false,\n requireCommitAsTrue: true\n }\n};\n\nexport const CARD_CONFIG = {\n\n [ DEFAULT ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX\n ]\n },\n\n [ COUNTRY.GB ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.DISCOVER,\n CARD.MAESTRO\n ]\n },\n\n [ COUNTRY.US ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.DISCOVER\n ]\n },\n\n [ COUNTRY.BR ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.HIPER,\n CARD.ELO\n ]\n },\n\n [ COUNTRY.JP ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.JCB\n ]\n },\n\n [ COUNTRY.CN ]: {\n priority: [\n CARD.VISA,\n CARD.MASTERCARD,\n CARD.AMEX,\n CARD.CUP\n ]\n }\n};\n\nfunction getConfig(conf : Object, category : string, key : string, def : ?T) : T {\n const categoryConfig = conf[category];\n\n if (categoryConfig && categoryConfig.hasOwnProperty(key)) {\n return categoryConfig[key];\n }\n\n if (conf[DEFAULT] && conf[DEFAULT].hasOwnProperty(key)) {\n return conf[DEFAULT][key];\n }\n\n if (arguments.length >= 4) {\n // $FlowFixMe\n return def;\n }\n\n throw new Error(`No value found for ${ category }:${ key }`);\n}\n\nexport function getFundingConfig(source : string, key : string, def : ?T) : T {\n return getConfig(FUNDING_CONFIG, source, key, def);\n}\n\nexport function getCardConfig(source : string, key : string, def : ?T) : T {\n return getConfig(CARD_CONFIG, source, key, def);\n}\n","/* @flow */\n\nimport { ENV, CARD_PRIORITY, FUNDING, BUTTON_LAYOUT, FUNDING_ELIGIBILITY_REASON } from '../constants';\nimport type { LocaleType, FundingSource, FundingSelection, FundingList } from '../types';\n\nimport { getFundingConfig, getCardConfig, FUNDING_PRIORITY, FUNDING_CONFIG } from './config';\n\nconst fundingEligibilityReasons = [];\n\nexport function isFundingIneligible(source : FundingSource, { locale, funding, layout, commit, env } :\n { locale : LocaleType, funding : FundingSelection, layout : string, commit? : boolean, env : string }) : ?string {\n\n const isVertical = layout === BUTTON_LAYOUT.VERTICAL;\n const allowSecondary = getFundingConfig(source, isVertical ? 'allowVertical' : 'allowHorizontal');\n\n if (!allowSecondary) {\n return FUNDING_ELIGIBILITY_REASON.SECONDARY_DISALLOWED;\n }\n\n if (funding.disallowed.indexOf(source) !== -1 && getFundingConfig(source, 'allowOptOut')) {\n return FUNDING_ELIGIBILITY_REASON.OPT_OUT;\n }\n\n if (funding.disallowed.indexOf(source) !== -1 && source === FUNDING.VENMO) {\n return FUNDING_ELIGIBILITY_REASON.OPT_OUT;\n }\n if (funding.disallowed.indexOf(source) !== -1 && source === FUNDING.ITAU) {\n return FUNDING_ELIGIBILITY_REASON.OPT_OUT;\n }\n\n if (getFundingConfig(source, 'allowedCountries', [ locale.country ]).indexOf(locale.country) === -1) {\n return FUNDING_ELIGIBILITY_REASON.DISALLOWED_COUNTRY;\n }\n\n if (getFundingConfig(source, 'requireCommitAsTrue') && !commit) {\n return FUNDING_ELIGIBILITY_REASON.COMMIT_NOT_SET;\n }\n\n const allowedEnvs = getFundingConfig(source, 'allowedEnvs');\n if (allowedEnvs && allowedEnvs.indexOf(env) === -1) {\n return FUNDING_ELIGIBILITY_REASON.INVALID_ENV;\n }\n}\n\nexport function isFundingAutoEligible(source : FundingSource, { locale, funding, layout } :\n { locale : LocaleType, funding : FundingSelection, layout : string }) : ?string {\n\n const isVertical = layout === BUTTON_LAYOUT.VERTICAL;\n\n if (isVertical && getFundingConfig(source, 'defaultVerticalCountries', []).indexOf(locale.country) !== -1) {\n return FUNDING_ELIGIBILITY_REASON.DEFAULT_COUNTRY;\n }\n\n if (getFundingConfig(source, 'default')) {\n return FUNDING_ELIGIBILITY_REASON.DEFAULT;\n }\n\n if (funding.allowed.indexOf(source) !== -1 && getFundingConfig(source, 'allowOptIn')) {\n return FUNDING_ELIGIBILITY_REASON.OPT_IN;\n }\n\n if (funding.remembered.indexOf(source) !== -1 && getFundingConfig(source, 'allowRemember')) {\n return FUNDING_ELIGIBILITY_REASON.REMEMBERED;\n }\n}\n\nexport function isFundingEligible(source : FundingSource, { locale, funding, env, layout, selected, commit } :\n { locale : LocaleType, funding : FundingSelection, env : string, layout : string, selected? : string, commit : boolean }) : { eligible : boolean, reason : string } {\n\n if (selected && source === selected) {\n return { eligible: true, reason: FUNDING_ELIGIBILITY_REASON.PRIMARY };\n }\n\n if (!getFundingConfig(source, 'enabled')) {\n if (!(env === ENV.TEST && getFundingConfig(source, 'test'))) {\n return { eligible: false, reason: FUNDING_ELIGIBILITY_REASON.NOT_ENABLED };\n }\n }\n\n const ineligibleReason = isFundingIneligible(source, { locale, funding, layout, commit, env });\n\n if (ineligibleReason) {\n return { eligible: false, reason: ineligibleReason };\n }\n\n const autoEligibleReason = isFundingAutoEligible(source, { locale, funding, layout });\n\n if (autoEligibleReason) {\n return { eligible: true, reason: autoEligibleReason };\n }\n\n return { eligible: false, reason: FUNDING_ELIGIBILITY_REASON.NEED_OPT_IN };\n}\n\nexport function determineEligibleFunding({ funding, selected, locale, env, layout, commit } :\n { funding : FundingSelection, selected : FundingSource, locale : LocaleType, env : string, layout : string, commit : boolean }) : FundingList {\n\n const reasons = {};\n\n const eligibleFunding = FUNDING_PRIORITY.filter(source => {\n const { eligible, reason } = isFundingEligible(source, { selected, locale, funding, env, layout, commit });\n reasons[source] = { eligible, reason, factors: { env, locale, layout } };\n return eligible;\n });\n\n fundingEligibilityReasons.push(reasons);\n\n eligibleFunding.splice(eligibleFunding.indexOf(selected), 1);\n eligibleFunding.unshift(selected);\n\n return eligibleFunding;\n}\n\nexport function determineEligibleCards({ funding, locale } :\n { funding : FundingSelection, locale : LocaleType }) : FundingList {\n\n return getCardConfig(locale.country, 'priority')\n .filter(card => funding.disallowed.indexOf(card) === -1);\n}\n\nexport function validateFunding(funding : FundingSelection = { allowed: [], disallowed: [], remembered: [] }) {\n\n if (funding.allowed) {\n for (const source of funding.allowed) {\n if (CARD_PRIORITY.indexOf(source) !== -1) {\n continue;\n }\n\n if (!FUNDING_CONFIG.hasOwnProperty(source)) {\n throw new Error(`Invalid funding source: ${ source }`);\n }\n\n if (!getFundingConfig(source, 'allowOptIn')) {\n throw new Error(`Can not allow funding source: ${ source }`);\n }\n\n if (funding.disallowed && funding.disallowed.indexOf(source) !== -1) {\n throw new Error(`Can not allow and disallow funding source: ${ source }`);\n }\n }\n }\n\n if (funding.disallowed) {\n for (const source of funding.disallowed) {\n if (CARD_PRIORITY.indexOf(source) !== -1) {\n continue;\n }\n\n if (!FUNDING_CONFIG.hasOwnProperty(source)) {\n throw new Error(`Invalid funding source: ${ source }`);\n }\n\n if (!getFundingConfig(source, 'allowOptOut')) {\n throw new Error(`Can not disallow funding source: ${ source }`);\n }\n }\n }\n}\n\nexport function logFundingEligibility() {\n fundingEligibilityReasons.forEach((reasons, i) => {\n console.log(`\\nButton ${ i + 1 }:\\n`); // eslint-disable-line no-console\n\n console.table(Object.keys(reasons).map(source => { // eslint-disable-line no-console, compat/compat\n const { reason, eligible, factors } = reasons[source];\n\n return {\n 'Funding': source,\n 'Reason': reason,\n 'Eligibility': eligible ? 'eligible' : 'ineligible',\n 'Factors': JSON.stringify(factors)\n };\n }));\n });\n}\n","/* @flow */\n/* eslint no-template-curly-in-string: off, max-lines: off */\n\nimport { FUNDING, DEFAULT, COUNTRY, BUTTON_LABEL, BUTTON_COLOR, BUTTON_LOGO_COLOR, BUTTON_SIZE,\n BUTTON_TAGLINE_COLOR, BUTTON_SHAPE, BUTTON_LAYOUT, BUTTON_LOGO } from '../constants';\n\ntype ButtonConfig = {\n [ string ] : {\n colors? : $ReadOnlyArray<$Values>\n }\n};\n\nexport const BUTTON_CONFIG : ButtonConfig = {\n\n [ DEFAULT ]: {\n\n colors: [\n BUTTON_COLOR.GOLD,\n BUTTON_COLOR.BLUE,\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n sizes: [\n BUTTON_SIZE.SMALL,\n BUTTON_SIZE.MEDIUM,\n BUTTON_SIZE.LARGE,\n BUTTON_SIZE.RESPONSIVE\n ],\n\n shapes: [\n BUTTON_SHAPE.PILL,\n BUTTON_SHAPE.RECT\n ],\n\n layouts: [\n BUTTON_LAYOUT.HORIZONTAL,\n BUTTON_LAYOUT.VERTICAL\n ],\n\n logoColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_LOGO_COLOR.BLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLUE\n },\n\n tagLineColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_TAGLINE_COLOR.BLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_TAGLINE_COLOR.BLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_TAGLINE_COLOR.BLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_TAGLINE_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_TAGLINE_COLOR.BLUE\n\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n tag: `{ content: safer_tag }`,\n dualTag: `{ content: dual_tag|safer_tag }`,\n\n defaultLocale: `en_US`,\n defaultLabel: BUTTON_LABEL.CHECKOUT,\n defaultVerticalLabel: BUTTON_LABEL.PAYPAL,\n defaultColor: BUTTON_COLOR.GOLD,\n defaultSize: BUTTON_SIZE.SMALL,\n defaultVerticalSize: BUTTON_SIZE.MEDIUM,\n defaultShape: BUTTON_SHAPE.PILL,\n defaultLayout: BUTTON_LAYOUT.HORIZONTAL,\n defaultBranding: true,\n defaultVerticalBranding: true,\n defaultFundingIcons: false,\n defaultTagline: true,\n defaultDual: ``,\n\n minimumSize: BUTTON_SIZE.TINY,\n minimumVerticalSize: BUTTON_SIZE.MEDIUM,\n\n maximumSize: BUTTON_SIZE.HUGE,\n maximumVerticalSize: BUTTON_SIZE.HUGE,\n\n minHorizontalButtons: 1,\n minVerticalButtons: 1,\n\n maxHorizontalButtons: 2,\n maxVerticalButtons: 6,\n\n allowUnbranded: false,\n allowFundingIcons: true,\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.PAYPAL ]: {\n label: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n allowPrimary: true,\n\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true\n },\n\n [ BUTTON_LABEL.CHECKOUT ]: {\n label: `{ content: checkout }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n allowPrimary: true,\n\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true\n },\n\n [ BUTTON_LABEL.PAY ]: {\n label: `{ content: pay }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n allowPrimary: true,\n\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true\n },\n\n [ BUTTON_LABEL.BUYNOW ]: {\n label: `{ content: buynow }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n defaultBranding: undefined,\n\n allowPrimary: true,\n\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true,\n\n allowUnbranded: true\n },\n\n [ BUTTON_LABEL.INSTALLMENT ]: {\n label: (style) => { return `{ content: ${ style.installmentperiod ? 'installment_period' : 'installment' } }`; },\n logoLabel: `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } }`,\n\n allowPrimary: true,\n allowPrimaryVertical: true,\n allowPrimaryHorizontal: true,\n allowSecondaryVertical: false,\n allowSecondaryHorizontal: false\n },\n\n [ BUTTON_LABEL.CREDIT ]: {\n label: ({ locale }) => {\n if (locale.country === COUNTRY.DE) {\n return `{ logo: ${ BUTTON_LOGO.CREDIT } }`;\n }\n\n return `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } } { logo: ${ BUTTON_LOGO.CREDIT } }`;\n },\n logoLabel: ({ locale }) => {\n if (locale.country === COUNTRY.DE) {\n return `{ logo: ${ BUTTON_LOGO.CREDIT } }`;\n }\n\n return `{ logo: ${ BUTTON_LOGO.PP } } { logo: ${ BUTTON_LOGO.PAYPAL } } { logo: ${ BUTTON_LOGO.CREDIT } }`;\n },\n\n tag: `{ content: later_tag }`,\n\n colors: [\n BUTTON_COLOR.DARKBLUE,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLUE\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n defaultColor: BUTTON_COLOR.DARKBLUE,\n\n allowPrimary: true,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false,\n\n allowFundingIcons: false\n },\n\n [ BUTTON_LABEL.VENMO ]: {\n label: `{ logo: ${ BUTTON_LOGO.VENMO } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.VENMO } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.BLUE,\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.BLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLUE\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: true,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: true\n },\n [ BUTTON_LABEL.ITAU ]: {\n label: `{ logo: ${ BUTTON_LOGO.ITAU } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.ITAU } }`,\n\n defaultColor: BUTTON_COLOR.DARKBLUE,\n\n colors: [\n BUTTON_COLOR.DARKBLUE,\n BUTTON_COLOR.BLUE,\n BUTTON_COLOR.BLACK\n ],\n\n logoColors: {\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.BLUE,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.DARKBLUE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.DARKBLUE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: true\n },\n\n [ BUTTON_LABEL.IDEAL ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.IDEAL } } Online betalen`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.IDEAL } } Online betalen`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.ELV ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.ELV } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.ELV } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.BANCONTACT ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.BANCONTACT } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.BANCONTACT } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.GIROPAY ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.GIROPAY } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.GIROPAY } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.SOFORT ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.SOFORT } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.SOFORT } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.EPS ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.EPS } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.EPS } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.MYBANK ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.MYBANK } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.MYBANK } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.P24 ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.P24 } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.P24 } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.PAYU ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.PAYU } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.PAYU } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.VERKKOPANKKI ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.VERKKOPANKKI } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.VERKKOPANKKI } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.BLIK ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.BLIK } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.BLIK } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.TRUSTLY ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.TRUSTLY } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.TRUSTLY } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.MAXIMA ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.MAXIMA } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.MAXIMA } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.BOLETO ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.BOLETO } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.BOLETO } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.OXXO ]: {\n\n label: `{ logo: ${ BUTTON_LOGO.OXXO } }`,\n logoLabel: `{ logo: ${ BUTTON_LOGO.OXXO } }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.SILVER,\n BUTTON_COLOR.BLACK,\n BUTTON_COLOR.WHITE\n ],\n\n logoColors: {\n [ BUTTON_COLOR.SILVER ]: BUTTON_LOGO_COLOR.BLACK,\n [ BUTTON_COLOR.BLACK ]: BUTTON_LOGO_COLOR.WHITE,\n [ BUTTON_COLOR.WHITE ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.BLACK,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.SILVER,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.WHITE\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n },\n\n [ BUTTON_LABEL.CARD ]: {\n\n label: `{ cards }`,\n logoLabel: `{ cards }`,\n\n defaultColor: BUTTON_COLOR.SILVER,\n\n colors: [\n BUTTON_COLOR.TRANSPARENT\n ],\n\n logoColors: {\n [ BUTTON_COLOR.TRANSPARENT ]: BUTTON_LOGO_COLOR.BLACK\n },\n\n secondaryColors: {\n [ BUTTON_COLOR.GOLD ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.BLUE ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.SILVER ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.BLACK ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.DARKBLUE ]: BUTTON_COLOR.TRANSPARENT,\n [ BUTTON_COLOR.WHITE ]: BUTTON_COLOR.TRANSPARENT\n },\n\n allowPrimary: false,\n\n allowPrimaryVertical: false,\n allowPrimaryHorizontal: false\n }\n};\n\nexport const FUNDING_TO_DEFAULT_LABEL = {\n [ FUNDING.PAYPAL ]: BUTTON_LABEL.PAYPAL,\n [ FUNDING.VENMO ]: BUTTON_LABEL.VENMO,\n [ FUNDING.ITAU ]: BUTTON_LABEL.ITAU,\n [ FUNDING.CARD ]: BUTTON_LABEL.CARD,\n [ FUNDING.CREDIT ]: BUTTON_LABEL.CREDIT,\n [ FUNDING.IDEAL ]: BUTTON_LABEL.IDEAL,\n [ FUNDING.ELV ]: BUTTON_LABEL.ELV,\n [ FUNDING.BANCONTACT ]: BUTTON_LABEL.BANCONTACT,\n [ FUNDING.GIROPAY ]: BUTTON_LABEL.GIROPAY,\n [ FUNDING.SOFORT ]: BUTTON_LABEL.SOFORT,\n [ FUNDING.EPS ]: BUTTON_LABEL.EPS,\n [ FUNDING.P24 ]: BUTTON_LABEL.P24,\n [ FUNDING.MYBANK ]: BUTTON_LABEL.MYBANK,\n [ FUNDING.PAYU ]: BUTTON_LABEL.PAYU,\n [ FUNDING.VERKKOPANKKI]: BUTTON_LABEL.VERKKOPANKKI,\n [ FUNDING.BLIK ]: BUTTON_LABEL.BLIK,\n [ FUNDING.TRUSTLY ]: BUTTON_LABEL.TRUSTLY,\n [ FUNDING.MAXIMA ]: BUTTON_LABEL.MAXIMA,\n [ FUNDING.BOLETO ]: BUTTON_LABEL.BOLETO,\n [ FUNDING.OXXO ]: BUTTON_LABEL.OXXO\n};\n\nexport const LABEL_TO_FUNDING = {\n [ BUTTON_LABEL.PAYPAL ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.CHECKOUT ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.PAY ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.BUYNOW ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.INSTALLMENT ]: FUNDING.PAYPAL,\n [ BUTTON_LABEL.CARD ]: FUNDING.CARD,\n [ BUTTON_LABEL.CREDIT ]: FUNDING.CREDIT,\n [ BUTTON_LABEL.VENMO ]: FUNDING.VENMO,\n [ BUTTON_LABEL.ITAU ]: FUNDING.ITAU,\n [ BUTTON_LABEL.IDEAL ]: FUNDING.IDEAL,\n [ BUTTON_LABEL.BANCONTACT]: FUNDING.BANCONTACT,\n [ BUTTON_LABEL.GIROPAY]: FUNDING.GIROPAY,\n [ BUTTON_LABEL.EPS ]: FUNDING.EPS,\n [ BUTTON_LABEL.SOFORT ]: FUNDING.SOFORT,\n [ BUTTON_LABEL.P24 ]: FUNDING.P24,\n [ BUTTON_LABEL.MYBANK ]: FUNDING.MYBANK,\n [ BUTTON_LABEL.PAYU ]: FUNDING.PAYU,\n [ BUTTON_LABEL.VERKKOPANKKI ]: FUNDING.VERKKOPANKKI,\n [ BUTTON_LABEL.BLIK ]: FUNDING.BLIK,\n [ BUTTON_LABEL.TRUSTLY ]: FUNDING.TRUSTLY,\n [ BUTTON_LABEL.MAXIMA ]: FUNDING.MAXIMA,\n [ BUTTON_LABEL.BOLETO ]: FUNDING.BOLETO,\n [ BUTTON_LABEL.OXXO ]: FUNDING.OXXO\n};\n\nexport const BUTTON_RELATIVE_STYLE = {\n FUNDINGICONS: 100,\n TAGLINE: 50,\n VERTICAL_MARGIN: 30\n};\n\nexport const BUTTON_STYLE = {\n\n [ BUTTON_SIZE.TINY ]: {\n defaultWidth: 75,\n defaultHeight: 25,\n minWidth: 75,\n maxWidth: 150,\n minHeight: 25,\n maxHeight: 30,\n buttonTextMargin: 0.5,\n allowFunding: true,\n allowTagline: false,\n byPayPalHeight: 0\n },\n\n [ BUTTON_SIZE.SMALL ]: {\n defaultWidth: 150,\n defaultHeight: 25,\n minWidth: 150,\n maxWidth: 200,\n minHeight: 25,\n maxHeight: 55,\n buttonTextMargin: 0.5,\n allowFunding: true,\n allowTagline: true,\n byPayPalHeight: 0\n },\n\n [ BUTTON_SIZE.MEDIUM ]: {\n defaultWidth: 250,\n defaultHeight: 35,\n minWidth: 200,\n maxWidth: 300,\n minHeight: 35,\n maxHeight: 55,\n buttonTextMargin: 1,\n allowFunding: true,\n allowTagline: true,\n byPayPalHeight: 30\n },\n\n [ BUTTON_SIZE.LARGE ]: {\n defaultWidth: 350,\n defaultHeight: 45,\n minWidth: 300,\n maxWidth: 500,\n minHeight: 30,\n maxHeight: 55,\n buttonTextMargin: 1,\n allowFunding: true,\n allowTagline: true,\n byPayPalHeight: 30\n },\n\n [ BUTTON_SIZE.HUGE ]: {\n defaultWidth: 500,\n defaultHeight: 55,\n minWidth: 500,\n maxWidth: 750,\n minHeight: 40,\n maxHeight: 55,\n buttonTextMargin: 1.25,\n allowFunding: true,\n allowTagline: true,\n byPayPalHeight: 30\n }\n};\n\nexport function labelToFunding(label : ?string) : string {\n return label ? LABEL_TO_FUNDING[label] : FUNDING.PAYPAL;\n}\n\nexport function fundingToDefaultLabel(funding : string) : $Values {\n return FUNDING_TO_DEFAULT_LABEL[funding];\n}\n\nfunction getConfig(conf : Object, category : string, key : string, def : ?T) : T {\n const categoryConfig = conf[category];\n\n if (categoryConfig && categoryConfig.hasOwnProperty(key)) {\n return categoryConfig[key];\n }\n\n if (conf[DEFAULT] && conf[DEFAULT].hasOwnProperty(key)) {\n return conf[DEFAULT][key];\n }\n\n if (arguments.length >= 4) {\n // $FlowFixMe\n return def;\n }\n\n throw new Error(`No value found for ${ category }:${ key }`);\n}\n\nexport function getButtonConfig(label : string, key : string, def : ?T) : T {\n return getConfig(BUTTON_CONFIG, label, key, def);\n}\n","/* @flow */\n\nimport { BUTTON_LAYOUT, BUTTON_STYLE_OPTIONS, BUTTON_LABEL, BUTTON_COLOR, BUTTON_SIZE, BUTTON_SHAPE } from '../constants';\nimport { determineEligibleFunding, determineEligibleCards } from '../funding';\nimport { memoize, sortBy } from '../lib/util';\nimport type { LocaleType, FundingSelection, FundingList, CheckoutCustomizationType } from '../types';\nimport { FUNDING_ORDER } from '../funding/config';\n\nimport { getButtonConfig, labelToFunding } from './config';\n\nfunction parseLocale(locale : string) : LocaleType {\n const [ lang, country ] = locale.split('_');\n return { country, lang };\n}\n\nexport function determineMaxButtons({ label, layout, max } : { layout : string, label : string, max : number }) : number {\n\n const allowed = (layout === BUTTON_LAYOUT.HORIZONTAL)\n ? getButtonConfig(label, 'allowPrimaryHorizontal')\n : getButtonConfig(label, 'allowPrimaryVertical');\n\n if (!allowed) {\n return 1;\n }\n\n const configMax = (layout === BUTTON_LAYOUT.HORIZONTAL)\n ? getButtonConfig(label, 'maxHorizontalButtons')\n : getButtonConfig(label, 'maxVerticalButtons');\n\n return max\n ? Math.min(configMax, max)\n : configMax;\n}\n\nfunction enableTagline({ tagline, branding, fundingicons, layout }) : boolean {\n return Boolean(tagline && branding && !fundingicons && layout === BUTTON_LAYOUT.HORIZONTAL);\n}\n\ntype NormalizedProps = {|\n size : $Values,\n label : $Values,\n color : $Values,\n shape : $Values,\n locale : LocaleType,\n branding : boolean,\n fundingicons : boolean,\n tagline : boolean,\n funding : FundingSelection,\n layout : $Values,\n sources : FundingList,\n max : number,\n multiple : boolean,\n env : string,\n height : ?number,\n cards : $ReadOnlyArray,\n installmentperiod : number,\n checkoutCustomization : ?CheckoutCustomizationType\n|};\n\nexport const normalizeProps = memoize((props : Object, defs? : { locale? : LocaleType } = {}) : NormalizedProps => {\n\n let {\n env,\n locale,\n style = {},\n funding,\n commit,\n checkoutCustomization\n } = props;\n\n locale = locale ? parseLocale(locale) : (defs.locale || getButtonConfig('DEFAULT', 'defaultLocale'));\n \n // funding indicated the allowed/disallowed payment methods (including cards) passed in the integration script\n // $FlowFixMe\n funding = funding || {};\n funding.allowed = funding.allowed || [];\n funding.disallowed = funding.disallowed || [];\n funding.remembered = funding.remembered || [];\n \n const label = style[BUTTON_STYLE_OPTIONS.LABEL] || getButtonConfig('DEFAULT', (style.layout === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalLabel' : 'defaultLabel');\n const layout = style[BUTTON_STYLE_OPTIONS.LAYOUT] || getButtonConfig(label, 'defaultLayout');\n\n let {\n [ BUTTON_STYLE_OPTIONS.SIZE ]: size = getButtonConfig(label, (layout === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalSize' : 'defaultSize'),\n [ BUTTON_STYLE_OPTIONS.COLOR ]: color = getButtonConfig(label, 'defaultColor'),\n [ BUTTON_STYLE_OPTIONS.SHAPE ]: shape = getButtonConfig(label, 'defaultShape'),\n [ BUTTON_STYLE_OPTIONS.BRANDING ]: branding = getButtonConfig(label, (layout === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalBranding' : 'defaultBranding'),\n [ BUTTON_STYLE_OPTIONS.FUNDINGICONS ]: fundingicons = getButtonConfig(label, 'defaultFundingIcons'),\n [ BUTTON_STYLE_OPTIONS.TAGLINE ]: tagline = getButtonConfig(label, 'defaultTagline'),\n [ BUTTON_STYLE_OPTIONS.MAXBUTTONS ]: max,\n [ BUTTON_STYLE_OPTIONS.HEIGHT ]: height,\n [ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD ]: installmentperiod\n } = style;\n\n // max is the maximum number of buttons to be displayed in the iframe\n max = determineMaxButtons({ label, layout, max });\n\n const selected = labelToFunding(label);\n let sources = determineEligibleFunding({ funding, selected, locale, env, layout, commit });\n // sources is an array of funding sources eligible to be displayed\n sources = sortBy(sources.slice(0, max), FUNDING_ORDER);\n // multiple is a boolean value indicating whether the sources is greater than 1\n const multiple = sources.length > 1;\n\n if (multiple) {\n branding = true;\n }\n\n tagline = enableTagline({ tagline, branding, fundingicons, layout });\n\n const cards = determineEligibleCards({ funding, locale });\n \n return { size, label, locale, color, shape, branding, fundingicons,\n tagline, funding, layout, sources, max, multiple, env, height, cards, installmentperiod, checkoutCustomization };\n});\n","/* @flow */\n\nimport { BUTTON_LABEL, BUTTON_LAYOUT, BUTTON_SIZE, BUTTON_STYLE_OPTIONS, ALLOWED_INSTALLMENT_COUNTRIES, ALLOWED_INSTALLMENT_PERIOD, LOCALE } from '../constants';\n\nimport { BUTTON_CONFIG, BUTTON_STYLE, getButtonConfig } from './config';\n\nexport function validateButtonLocale(locale : string) {\n\n if (!locale) {\n throw new Error(`Expected props.locale to be set`);\n }\n\n if (!locale.match(/^[a-z]{2}[_][A-Z][A-Z0-9]$/)) {\n throw new Error(`Expected props.locale to be valid, got ${ locale }`);\n }\n\n const [ lang, country ] = locale.split('_');\n\n if (!LOCALE[country] || LOCALE[country].indexOf(lang) === -1) {\n throw new Error(`Expected props.locale to be valid`);\n }\n}\n\nexport function validateRegionSpecificButton(style : Object = {}, locale : string = 'en_US') {\n\n const country = locale.split('_')[1];\n\n const isInstallmentAllowedCountry = ALLOWED_INSTALLMENT_COUNTRIES.indexOf(country) !== -1;\n\n if (!isInstallmentAllowedCountry && style.label === BUTTON_LABEL.INSTALLMENT) {\n throw new Error(`Unexpected label: style.${ style.label } for country: ${ country }`);\n }\n\n if (!isInstallmentAllowedCountry && style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD]) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD } is invalid for country: ${ country }`);\n }\n\n if (isInstallmentAllowedCountry && style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD] && style.label !== BUTTON_LABEL.INSTALLMENT) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD } is invalid for label: style.${ style.label }`);\n }\n\n if (isInstallmentAllowedCountry && style.label === BUTTON_LABEL.INSTALLMENT && style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD]\n && typeof style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD] !== 'number') {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD } is expected to be a number`);\n }\n\n if (isInstallmentAllowedCountry && style.label === BUTTON_LABEL.INSTALLMENT && style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD]\n && ALLOWED_INSTALLMENT_PERIOD[country].indexOf(style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD]) === -1) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD }: ${ style[BUTTON_STYLE_OPTIONS.INSTALLMENTPERIOD] } is not a valid installment number for ${ style.label }`);\n }\n\n}\n\nexport function validateButtonStyle(style : Object = {}, props : Object) {\n\n if (!style) {\n throw new Error(`Expected props.style to be set`);\n }\n\n const label = style[BUTTON_STYLE_OPTIONS.LABEL] || getButtonConfig('DEFAULT', (style[BUTTON_STYLE_OPTIONS.LAYOUT] === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalLabel' : 'defaultLabel');\n\n if (!BUTTON_CONFIG[label]) {\n throw new Error(`Invalid button label: ${ label }, expected: ${ Object.keys(BUTTON_CONFIG[label]).join(', ') }`);\n }\n\n const {\n [ BUTTON_STYLE_OPTIONS.COLOR ]: color,\n [ BUTTON_STYLE_OPTIONS.SHAPE ]: shape,\n [ BUTTON_STYLE_OPTIONS.SIZE ]: size,\n [ BUTTON_STYLE_OPTIONS.BRANDING ]: branding,\n [ BUTTON_STYLE_OPTIONS.FUNDINGICONS ]: fundingicons,\n [ BUTTON_STYLE_OPTIONS.TAGLINE ]: tagline,\n [ BUTTON_STYLE_OPTIONS.LAYOUT ]: layout,\n [ BUTTON_STYLE_OPTIONS.MAXBUTTONS ]: maxbuttons,\n [ BUTTON_STYLE_OPTIONS.HEIGHT ]: height\n } = style;\n\n if (color && getButtonConfig(label, 'colors').indexOf(color) === -1) {\n throw new Error(`Unexpected style.${ BUTTON_STYLE_OPTIONS.COLOR } for ${ label } button: ${ color }, expected ${ getButtonConfig(label, 'colors').join(', ') }`);\n }\n\n if (shape && getButtonConfig(label, 'shapes').indexOf(shape) === -1) {\n throw new Error(`Unexpected style.${ BUTTON_STYLE_OPTIONS.SHAPE } for ${ label } button: ${ shape }, expected ${ getButtonConfig(label, 'shapes').join(', ') }`);\n }\n\n if (size && getButtonConfig(label, 'sizes').indexOf(size) === -1) {\n throw new Error(`Unexpected style.${ BUTTON_STYLE_OPTIONS.SIZE } for ${ label } button: ${ size }, expected ${ getButtonConfig(label, 'sizes').join(', ') }`);\n }\n\n if (branding === false) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.BRANDING }:false is not allowed`);\n }\n\n if (fundingicons && !getButtonConfig(label, 'allowFundingIcons')) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.FUNDINGICONS }:true is not allowed for ${ label } button`);\n }\n\n if (layout && getButtonConfig(label, 'layouts').indexOf(layout) === -1) {\n throw new Error(`Unexpected style.${ BUTTON_STYLE_OPTIONS.LAYOUT } for ${ label } button: ${ layout }, expected ${ getButtonConfig(label, 'layouts').join(', ') }`);\n }\n\n if (maxbuttons !== undefined) {\n if (typeof maxbuttons !== 'number') {\n throw new TypeError(`Expected style.${ BUTTON_STYLE_OPTIONS.MAXBUTTONS } to be a number, got: ${ maxbuttons }`);\n }\n\n if (maxbuttons < 1) {\n throw new Error(`Expected style.${ BUTTON_STYLE_OPTIONS.MAXBUTTONS } to be a at least 1, got: ${ maxbuttons }`);\n }\n\n const minButtons = (layout === BUTTON_LAYOUT.VERTICAL)\n ? getButtonConfig(label, 'minVerticalButtons')\n : getButtonConfig(label, 'minHorizontalButtons');\n\n if (maxbuttons < minButtons) {\n throw new Error(`Expected style.${ BUTTON_STYLE_OPTIONS.MAXBUTTONS } to be no fewer than ${ minButtons }, got ${ maxbuttons }`);\n }\n }\n\n if (height !== undefined) {\n if (typeof height !== 'number') {\n throw new TypeError(`Expected style.${ BUTTON_STYLE_OPTIONS.HEIGHT } to be a number, got: ${ maxbuttons }`);\n }\n\n const buttonSize = size || getButtonConfig(label, (style.layout === BUTTON_LAYOUT.VERTICAL) ? 'defaultVerticalSize' : 'defaultSize');\n\n const { minHeight, maxHeight } = (size === BUTTON_SIZE.RESPONSIVE) ? {\n minHeight: BUTTON_STYLE[BUTTON_SIZE.SMALL].minHeight,\n maxHeight: BUTTON_STYLE[BUTTON_SIZE.HUGE].maxHeight\n } : BUTTON_STYLE[buttonSize];\n\n if (height < minHeight || height > maxHeight) {\n throw new Error(`Expected style.${ BUTTON_STYLE_OPTIONS.HEIGHT } to be between ${ minHeight }px and ${ maxHeight }px - got ${ height }px`);\n }\n }\n\n if (!getButtonConfig(label, 'allowPrimary')) {\n throw new Error(`${ label } can not be used as primary button label`);\n }\n\n if (layout === BUTTON_LAYOUT.VERTICAL) {\n\n if (size && [ BUTTON_SIZE.MEDIUM, BUTTON_SIZE.LARGE, BUTTON_SIZE.RESPONSIVE ].indexOf(size) === -1) {\n throw new Error(`Button must be at least ${ BUTTON_SIZE.MEDIUM } size for ${ BUTTON_LAYOUT.VERTICAL } layout`);\n }\n\n if (!getButtonConfig(label, 'allowPrimaryVertical')) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.LABEL } option is not allowed for ${ BUTTON_LAYOUT.VERTICAL } layout - got ${ label }`);\n }\n\n if (fundingicons) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.FUNDINGICONS } not allowed for ${ BUTTON_LAYOUT.VERTICAL } layout - got ${ fundingicons }`);\n }\n\n if (tagline) {\n throw new Error(`style.${ BUTTON_STYLE_OPTIONS.TAGLINE } is not allowed for ${ BUTTON_LAYOUT.VERTICAL } layout - got ${ tagline }`);\n }\n }\n\n validateRegionSpecificButton(style, props.locale);\n}\n\nexport function validateButtonProps(props : Object) {\n\n if (!props) {\n throw new Error(`Expected props`);\n }\n\n const { locale, style } = props;\n\n validateButtonLocale(locale);\n validateButtonStyle(style, props);\n}\n","/* @flow */\n\nexport const CLASS = {\n SHOULD_FOCUS: 'paypal-should-focus',\n\n CONTAINER: 'paypal-button-container',\n BUTTON: 'paypal-button',\n \n BUTTON_LABEL: 'paypal-button-label-container',\n\n LABEL: 'paypal-button-label',\n COLOR: 'paypal-button-color',\n LOGO_COLOR: 'paypal-button-logo-color',\n SHAPE: 'paypal-button-shape',\n BRANDING: 'paypal-button-branding',\n LAYOUT: 'paypal-button-layout',\n NUMBER: 'paypal-button-number',\n ENV: 'paypal-button-env',\n\n TAGLINE: 'paypal-button-tagline',\n TAGLINE_COLOR: 'paypal-button-tagline-color',\n FUNDINGICONS: 'paypal-button-fundingicons',\n\n TEXT: 'paypal-button-text',\n LOGO: 'paypal-button-logo',\n CARD: 'paypal-button-card',\n\n SEPARATOR: 'paypal-separator',\n HIDDEN: 'hidden',\n DOM_READY: 'dom-ready',\n \n PERSONALIZATION_TEXT: 'personalization-text'\n};\n","/* @flow */\n\nimport { CLASS } from './class';\n\nexport const pageStyle = `\n html, body {\n padding: 0;\n margin: 0;\n width: 100%;\n overflow: hidden;\n text-align: center;\n }\n\n body {\n display: inline-block;\n vertical-align: top;\n }\n\n * {\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -khtml-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n cursor: default;\n box-sizing: border-box;\n }\n \n .${ CLASS.HIDDEN } {\n position: absolute;\n visibility: hidden;\n }\n`;\n","/* @flow */\n\nimport { BUTTON_COLOR, ENV } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const buttonStyle = `\n\n .${ CLASS.CONTAINER } {\n display: block;\n white-space: nowrap;\n margin: 0;\n background: 0;\n border: 0;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n text-transform: none;\n font-weight: 500;R\n -webkit-font-smoothing: antialiased;\n font-smoothing: antialiased;\n z-index: 0;\n font-size: 0;\n width: 100%;\n box-sizing: border-box;\n }\n\n .${ CLASS.BUTTON }:not(.${ CLASS.CARD }) {\n border: 1px solid transparent;\n border-radius: 0 3px 3px 0;\n position: relative;\n width: 100%;\n box-sizing: border-box;\n border: none;\n vertical-align: top;\n cursor: pointer;\n outline: none;\n overflow: hidden;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.TRANSPARENT } {\n cursor: auto;\n }\n\n .${ CLASS.BUTTON } * {\n cursor: pointer;\n }\n\n .${ CLASS.CONTAINER }.${ CLASS.ENV }-${ ENV.TEST } .${ CLASS.TEXT } {\n font-family: Arial !important;\n background: rgba(0, 0, 0, 0.5) !important;\n color: transparent !important;\n text-shadow: none !important;\n }\n\n .${ CLASS.BUTTON }:hover {\n box-shadow: inset 0 0 100px 100px rgba(255, 255, 255, 0.2);\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.GOLD }:hover,\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.SILVER }:hover {\n box-shadow: inset 0 0 100px 100px rgba(0, 0, 0, 0.05);\n }\n\n .${ CLASS.CARD }, .${ CLASS.CARD } * {\n cursor: pointer;\n }\n\n .${ CLASS.CARD }:hover {\n filter: brightness(1.2);\n }\n\n .${ CLASS.BUTTON }:focus, .${ CLASS.CARD }:focus {\n outline: none;\n }\n\n .${ CLASS.SHOULD_FOCUS } .${ CLASS.BUTTON }:focus,\n .${ CLASS.SHOULD_FOCUS } .${ CLASS.CARD }:focus {\n outline: solid 2px Highlight;\n outline: auto 5px -webkit-focus-ring-color;\n outline-offset: -3px;\n }\n\n .${ CLASS.BUTTON }:focus {\n box-shadow: -1px -1px 18px 1px rgba(0, 0, 0, 0.25) inset;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.TRANSPARENT }:focus {\n box-shadow: none;\n outline: none;\n }\n\n .${ CLASS.LOGO } {\n padding: 0;\n display: inline-block;\n background: none;\n border: none;\n width: auto;\n }\n\n .${ CLASS.TEXT } {\n display: inline-block;\n white-space: pre;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.BUTTON_LABEL } {\n position: relative;\n top: 50%;\n transform: translateY(-50%);\n -webkit-transform: translateY(-50%);\n -moz-transform: translateY(-50%);\n -ms-transform: translateY(-50%);\n -o-transform: translateY(-50%);\n }\n \n .${ CLASS.BUTTON } > .${ CLASS.BUTTON_LABEL } > * {\n vertical-align: top;\n height: 100%;\n text-align: left;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.CARD } {\n border-radius: 4px;\n }\n\n .powered-by-paypal > .${ CLASS.TEXT } {\n vertical-align: top;\n line-height: 18px;\n }\n\n .powered-by-paypal > .${ CLASS.LOGO } {\n height: 16px;\n min-height: 16px;\n }\n\n .${ CLASS.TAGLINE } {\n max-width: 100%;\n font-weight: normal;\n display: block;\n text-align: center;\n width: auto;\n }\n\n .${ CLASS.SEPARATOR } {\n height: 80%;\n border-left: 1px solid rgba(0, 0, 0, 0.15);\n margin: 0 8px;\n display: inline-block;\n position: relative;\n top: 10%;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.BLACK } .${ CLASS.SEPARATOR } {\n border-color: rgba(255, 255, 255, 0.45);\n }\n`;\n","/* @flow */\n\nimport { BUTTON_LAYOUT } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const layoutStyle = `\n\n .${ CLASS.CONTAINER }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.VERTICAL } .${ CLASS.TAGLINE } {\n display: none;\n }\n`;\n","/* @flow */\n\nimport { BUTTON_BRANDING } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const brandingStyle = `\n\n .${ CLASS.BUTTON }.${ CLASS.BRANDING }-${ BUTTON_BRANDING.UNBRANDED } {\n min-width: 60%;\n width: auto;\n font-weight: 900;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.BRANDING }-${ BUTTON_BRANDING.UNBRANDED } .${ CLASS.LOGO } {\n display: none;\n }\n`;\n","/* @flow */\n\nimport { BUTTON_STYLE } from '../../config';\nimport { BUTTON_LABEL, BUTTON_LOGO, BUTTON_SIZE, BUTTON_LAYOUT, BUTTON_NUMBER } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const labelStyle = `\n\n .${ CLASS.BUTTON }.${ CLASS.LABEL }-${ BUTTON_LABEL.CARD } {\n border-radius: 0 !important;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LABEL }-${ BUTTON_LABEL.CREDIT } .${ CLASS.TEXT } {\n display: none !important;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.LABEL }-${ BUTTON_LABEL.CREDIT } .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LOGO.PAYPAL } {\n display: none;\n }\n\n @media only screen and (max-width : ${ BUTTON_STYLE[BUTTON_SIZE.SMALL].minWidth }px) {\n\n .${ CLASS.BUTTON }.${ CLASS.LABEL }-${ BUTTON_LABEL.CREDIT } .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LOGO.PAYPAL } {\n display: none;\n }\n }\n\n @media only screen and (min-width : ${ BUTTON_STYLE[BUTTON_SIZE.SMALL].minWidth }px) {\n\n .${ CLASS.BUTTON }.${ CLASS.LABEL }-${ BUTTON_LABEL.CREDIT } .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LOGO.PAYPAL } {\n display: inline-block;\n }\n }\n`;\n","/* @flow */\n\nimport { BUTTON_BRANDING, BUTTON_SHAPE, BUTTON_LAYOUT, BUTTON_NUMBER, BUTTON_LABEL } from '../../../constants';\nimport { BUTTON_STYLE, BUTTON_RELATIVE_STYLE } from '../../config';\nimport { max, perc } from '../../../lib/util';\n\nimport { CLASS } from './class';\n\nconst DUAL_BUTTON_MIN_RATIO = 2.8;\n\nexport function buttonResponsiveStyle({ height, cardNumber = 4 } : { height? : ?number, cardNumber? : number }) : string {\n\n return Object.keys(BUTTON_STYLE).map(size => {\n\n const style = BUTTON_STYLE[size];\n const buttonHeight = height || style.defaultHeight;\n const buttonTextMarginTop = style.buttonTextMargin;\n const minDualWidth = Math.round(buttonHeight * DUAL_BUTTON_MIN_RATIO * 2);\n\n return `\n\n @media only screen and (min-width: ${ style.minWidth }px) {\n\n .${ CLASS.CONTAINER } {\n min-width: ${ style.minWidth }px;\n max-width: ${ style.maxWidth }px;\n font-size: ${ max(perc(buttonHeight, 32), 10) }px;\n }\n\n .${ CLASS.BUTTON }:not(.${ CLASS.CARD }) {\n height: ${ buttonHeight }px;\n min-height: ${ height || style.minHeight }px;\n max-height: ${ height || style.maxHeight }px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.BRANDING }-${ BUTTON_BRANDING.UNBRANDED } .${ CLASS.BUTTON_LABEL } {\n height: 100%;\n font-size: ${ max(perc(buttonHeight, 45), 10) }px;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.BUTTON_LABEL } {\n height: ${ perc(buttonHeight, 35) + 5 }px;\n max-height: ${ perc(buttonHeight, 60) }px;\n min-height: ${ perc(buttonHeight, 40) }px;\n }\n \n .${ CLASS.BUTTON } .${ CLASS.BUTTON_LABEL } .${ CLASS.TEXT } {\n margin-top: ${ buttonTextMarginTop }px;\n }\n \n .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LABEL.EPS },\n .${ CLASS.LOGO }.${ CLASS.LOGO }-${ BUTTON_LABEL.MYBANK } {\n height: ${ perc(buttonHeight, 50) + 5 }px;\n max-height: ${ perc(buttonHeight, 70) }px;\n min-height: ${ perc(buttonHeight, 40) }px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.SHAPE }-${ BUTTON_SHAPE.PILL } {\n border-radius: ${ Math.ceil(buttonHeight / 2) }px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.SHAPE }-${ BUTTON_SHAPE.RECT } {\n border-radius: 4px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.VERTICAL } {\n margin-bottom: ${ perc(buttonHeight, BUTTON_RELATIVE_STYLE.VERTICAL_MARGIN) }px;\n }\n\n .${ CLASS.SEPARATOR } {\n margin: 0 ${ perc(buttonHeight, 5) }px;\n }\n\n .${ CLASS.TAGLINE } {\n display: ${ style.allowTagline ? 'block' : 'none' };\n height: ${ perc(buttonHeight, BUTTON_RELATIVE_STYLE.TAGLINE) }px;\n line-height: ${ perc(buttonHeight, BUTTON_RELATIVE_STYLE.TAGLINE) }px;\n }\n\n .${ CLASS.FUNDINGICONS } {\n display: ${ style.allowFunding ? 'block' : 'none' };\n height: ${ perc(buttonHeight, BUTTON_RELATIVE_STYLE.FUNDINGICONS) }px;\n }\n\n .${ CLASS.CARD } {\n display: inline-block;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.CARD } {\n width: ${ (90 / cardNumber).toFixed(2) }%;\n max-width: ${ perc(buttonHeight, 160) }px;\n margin-top: 0;\n margin-left: ${ (5 / cardNumber).toFixed(2) }%;\n margin-right: ${ (5 / cardNumber).toFixed(2) }%;\n }\n\n .${ CLASS.BUTTON } .${ CLASS.CARD } img {\n width: 100%;\n }\n\n .${ CLASS.FUNDINGICONS } .${ CLASS.CARD } {\n height: ${ perc(buttonHeight, 70) }px;\n margin-top: ${ perc(buttonHeight, 15) }px;\n margin-left: ${ perc(buttonHeight, 7) }px;\n margin-right: ${ perc(buttonHeight, 7) }px;\n }\n\n .${ CLASS.FUNDINGICONS } .${ CLASS.CARD } img {\n height: 100%;\n }\n }\n\n @media only screen and (min-width: ${ style.minWidth }px) and (max-width: ${ minDualWidth }px) {\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.NUMBER }-0 {\n width: 100%;\n margin-right: 0;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.NUMBER }-1 {\n display: none;\n }\n\n .${ CLASS.CONTAINER }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE } .${ CLASS.TAGLINE } {\n display: none;\n }\n }\n\n @media only screen and (min-width: ${ max(style.minWidth, minDualWidth) }px) {\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.NUMBER }-0 {\n display: inline-block;\n width: calc(50% - 2px);\n margin-right: 4px;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE }.${ CLASS.NUMBER }-1 {\n display: inline-block;\n width: calc(50% - 2px);\n }\n\n .${ CLASS.CONTAINER }.${ CLASS.LAYOUT }-${ BUTTON_LAYOUT.HORIZONTAL }.${ CLASS.NUMBER }-${ BUTTON_NUMBER.MULTIPLE } .${ CLASS.TAGLINE } {\n display: block;\n }\n }\n `;\n\n }).join('\\n');\n}\n","/* @flow */\n\nimport { BUTTON_COLOR } from '../../../constants';\n\nimport { CLASS } from './class';\n\nexport const buttonColorStyle = `\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.GOLD } {\n background: #ffc439;\n color: #111;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.BLUE } {\n background: #009cde;\n color: #fff;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.SILVER } {\n background: #eee;\n color: #111;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.BLACK } {\n background: #2C2E2F;\n color: #fff;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.DARKBLUE } {\n background: #003087;\n color: #fff;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.TRANSPARENT } {\n background: transparent;\n color: #111;\n }\n\n .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.WHITE } {\n background: #fff;\n color: #2C2E2F;\n border: 1px solid #2C2E2F;\n }\n`;\n","/* @flow */\n\nimport { pageStyle } from './page';\nimport { buttonStyle } from './button';\nimport { layoutStyle } from './layout';\nimport { brandingStyle } from './branding';\nimport { labelStyle } from './labels';\nimport { buttonResponsiveStyle } from './responsive';\nimport { buttonColorStyle } from './color';\n\nexport function componentStyle({ height, cardNumber } : { height? : ?number, cardNumber? : number }) : string {\n return `\n ${ pageStyle }\n ${ buttonStyle }\n ${ buttonColorStyle }\n ${ layoutStyle }\n ${ brandingStyle }\n ${ labelStyle }\n ${ buttonResponsiveStyle({ height, cardNumber }) }\n `;\n}\n","/* @flow */\n\nexport { componentStyle } from './base';\nexport { CLASS } from './class';\n","/* @flow */\n/** @jsx jsxToHTML */\n\nimport { jsxToHTML, type JsxHTMLNode, JsxHTMLNodeContainer } from '../../lib/jsx';\n\nimport { CLASS } from './componentStyle';\n\nexport function LoadingDots(delay : number) : JsxHTMLNode {\n return (\n
\n \n {outlet}\n
\n );\n}\n","/* @flow */\n\nexport * from './componentTemplate';\nexport * from './containerTemplate';\n\n","\n/* @flow */\n\nimport { track, flush as flushLogs } from 'beaver-logger/client';\n\nimport { Checkout } from '../checkout';\nimport { setupPopupBridgeProxy } from '../integrations/popupBridge';\nimport { getPageRenderTime, setLogLevel } from '../lib';\nimport { ATTRIBUTE, FUNDING, FPTI, BUTTON_LAYOUT, BUTTON_COLOR, BUTTON_SIZE, BUTTON_SHAPE, BUTTON_LABEL } from '../constants';\n\nimport typeof { Button } from './component';\n\nexport function setupButtonChild(ButtonComponent : Button) {\n setupPopupBridgeProxy(Checkout, ButtonComponent);\n\n getPageRenderTime().then(pageRenderTime => {\n\n const fundingSources = Array.prototype.slice.call(document.querySelectorAll(`[${ ATTRIBUTE.FUNDING_SOURCE }]`)).map(el => {\n return el.getAttribute(ATTRIBUTE.CARD) || el.getAttribute(ATTRIBUTE.FUNDING_SOURCE);\n }).filter(source => {\n return source && source !== FUNDING.CARD;\n });\n\n const xprops = ButtonComponent.xprops;\n \n if (!xprops) {\n return;\n }\n\n const {\n layout = BUTTON_LAYOUT.HORIZONTAL,\n color = BUTTON_COLOR.GOLD,\n size = BUTTON_SIZE.SMALL,\n shape = BUTTON_SHAPE.PILL,\n label = BUTTON_LABEL.CHECKOUT,\n maxbuttons,\n tagline\n } = (xprops.style || {});\n\n track({\n [FPTI.KEY.STATE]: FPTI.STATE.BUTTON,\n [FPTI.KEY.TRANSITION]: FPTI.TRANSITION.BUTTON_LOAD,\n [FPTI.KEY.BUTTON_TYPE]: FPTI.BUTTON_TYPE.IFRAME,\n [FPTI.KEY.FUNDING_LIST]: fundingSources.join(':'),\n [FPTI.KEY.FUNDING_COUNT]: fundingSources.length,\n [FPTI.KEY.PAGE_LOAD_TIME]: pageRenderTime,\n [FPTI.KEY.BUTTON_LAYOUT]: layout,\n [FPTI.KEY.BUTTON_COLOR]: color,\n [FPTI.KEY.BUTTON_SIZE]: size,\n [FPTI.KEY.BUTTON_SHAPE]: shape,\n [FPTI.KEY.BUTTON_LABEL]: label,\n [FPTI.KEY.BUTTON_WIDTH]: window.innerWidth,\n [FPTI.KEY.MAX_BUTTONS]: maxbuttons,\n [FPTI.KEY.BUTTON_TAGLINE_ENABLED]: tagline ? '1' : '0'\n });\n\n flushLogs();\n });\n\n const xprops = ButtonComponent.xprops || Checkout.xprops;\n\n if (xprops && xprops.logLevel) {\n setLogLevel(xprops.logLevel);\n }\n\n // $FlowFixMe\n if (xprops.payment && !xprops.createOrder) {\n // $FlowFixMe\n xprops.createOrder = xprops.payment;\n }\n\n // $FlowFixMe\n if (xprops.onAuthorize && !xprops.onApprove) {\n // $FlowFixMe\n xprops.onApprove = xprops.onAuthorize;\n }\n\n try {\n if (xprops && xprops.onShippingChange && window.pre &&\n window.pre.inlineGuest && window.pre.inlineGuest.res &&\n window.pre.inlineGuest.res.data && window.pre.inlineGuest.res.data.treatments) {\n window.pre.inlineGuest.res.data.treatments = [];\n }\n } catch (err) {\n // pass\n }\n}\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { create } from 'zoid/src';\nimport { type Component } from 'zoid/src/component/component';\nimport { info, warn, track, error, flush as flushLogs, immediateFlush } from 'beaver-logger/client';\nimport { getDomain } from 'cross-domain-utils/src';\nimport { base64encode } from 'belter/src';\nimport { debounce, once } from 'zoid/src/lib';\n\nimport { pptm } from '../external';\nimport { config } from '../config';\nimport { SOURCE, ENV, FPTI, FUNDING, BUTTON_LABEL, BUTTON_COLOR,\n BUTTON_SIZE, BUTTON_SHAPE, BUTTON_LAYOUT, COUNTRY } from '../constants';\nimport { redirect as redir, checkRecognizedBrowser,\n getBrowserLocale, getSessionID, request, getScriptVersion,\n isIEIntranet, isEligible, getCurrentScriptUrl,\n getDomainSetting, extendUrl, isDevice, rememberFunding,\n getRememberedFunding, memoize, uniqueID, getThrottle, getBrowser } from '../lib';\nimport { rest } from '../api';\nimport { onAuthorizeListener } from '../experiments';\nimport { getPaymentType, awaitBraintreeClient,\n mapPaymentToBraintree, type BraintreePayPalClient } from '../integrations';\nimport { awaitPopupBridge } from '../integrations/popupBridge';\nimport { validateFunding, isFundingIneligible, isFundingAutoEligible } from '../funding';\n\nimport { containerTemplate, componentTemplate } from './template';\nimport { validateButtonLocale, validateButtonStyle } from './validate';\nimport { setupButtonChild } from './child';\nimport { normalizeProps } from './props';\n\npptm.listenForLoadWithNoContent();\n\nfunction isCreditDualEligible(props) : boolean {\n\n const { label, funding, layout, locale, max, sources, env } = normalizeProps(props, { locale: getBrowserLocale() });\n const { allowed } = funding;\n const { country } = locale;\n\n if (allowed && allowed.indexOf(FUNDING.CREDIT) !== -1) {\n return false;\n }\n\n if (layout !== BUTTON_LAYOUT.HORIZONTAL) {\n return false;\n }\n\n if (max === 1) {\n return false;\n }\n\n if (label === BUTTON_LABEL.CREDIT) {\n return false;\n }\n\n if (country !== COUNTRY.US) {\n return false;\n }\n\n if (isFundingIneligible(FUNDING.CREDIT, { funding, locale, layout, env })) {\n return false;\n }\n\n if (isFundingAutoEligible(FUNDING.CREDIT, { funding, locale, layout })) {\n return false;\n }\n\n if (sources.indexOf(FUNDING.CREDIT) !== -1) {\n return false;\n }\n\n const domain = getDomain().replace(/^https?:\\/\\//, '').replace(/^www\\./, '');\n\n if (config.creditTestDomains.indexOf(domain) === -1) {\n return false;\n }\n\n return true;\n}\n\nlet creditThrottle;\n\ntype ButtonOptions = {|\n style : {|\n maxbuttons? : number,\n layout? : string,\n label? : string,\n size? : string,\n shape? : string,\n color? : string,\n tagline? : boolean\n |},\n client : {\n [string] : (string | ZalgoPromise)\n },\n funding? : { allowed? : $ReadOnlyArray, disallowed? : $ReadOnlyArray },\n env? : string,\n locale? : string,\n logLevel : string,\n awaitPopupBridge : Function,\n meta : Object,\n validate? : ({ enable : () => ZalgoPromise, disable : () => ZalgoPromise }) => void,\n stage? : string,\n stageUrl? : string,\n localhostUrl? : string,\n checkoutUri? : string,\n authCode? : string,\n enableNativeCheckout? : boolean\n|};\n\nexport const Button : Component = create({\n\n tag: 'paypal-button',\n name: 'ppbutton',\n\n buildUrl(props) : string {\n const env = props.env || config.env;\n const url = config.buttonUrls[env];\n return url;\n },\n\n contexts: {\n iframe: true,\n popup: false\n },\n\n scrolling: false,\n listenForResize: true,\n\n containerTemplate,\n\n autoResize: {\n height: true,\n width: false\n },\n\n prerenderTemplate({ props, jsxDom } : { props : Object, jsxDom : Function }) : HTMLElement {\n\n const template = (\n
\n );\n\n template.addEventListener('click', () => {\n warn('button_pre_template_click');\n\n if (isIEIntranet()) {\n warn(`button_pre_template_click_intranet_mode`);\n\n flushLogs();\n\n // eslint-disable-next-line no-alert\n alert(`IE Intranet mode is not supported by PayPal. Please disable intranet mode, or continue in an alternate browser.`);\n }\n\n if (getDomainSetting('allow_full_page_fallback')) {\n info('pre_template_force_full_page');\n\n this.props.payment().then(token => {\n window.top.location = extendUrl(config.checkoutUrl, { token });\n });\n }\n });\n\n return (\n \n \n { template }\n \n \n );\n },\n\n get version() : string {\n return getScriptVersion();\n },\n\n get domain() : Object {\n return config.paypalDomains;\n },\n\n attributes: {\n iframe: {\n allowpaymentrequest: 'allowpaymentrequest'\n }\n },\n\n validate() {\n if (!isEligible()) {\n warn('button_render_ineligible');\n }\n },\n\n props: {\n domain: {\n type: 'string',\n required: false,\n def() : string {\n return window.location.host;\n },\n queryParam: true\n },\n\n sessionID: {\n type: 'string',\n required: false,\n def() : string {\n return getSessionID();\n },\n queryParam: true\n },\n\n buttonSessionID: {\n type: 'string',\n required: false,\n def() : ?string {\n return uniqueID();\n },\n queryParam: true\n },\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n }\n },\n\n meta: {\n type: 'object',\n required: false,\n def() : Object {\n return {};\n }\n },\n\n enableNativeCheckout: {\n type: 'boolean',\n required: false,\n def() : boolean {\n return false;\n }\n },\n\n client: {\n type: 'object',\n required: false,\n def() : Object {\n return {};\n },\n\n validate(client, props) {\n const env = props.env || config.env;\n\n if (!client[env]) {\n throw new Error(`Client ID not found for env: ${ env }`);\n }\n\n if (typeof client[env] === 'string') {\n if (client[env].match(/^(.)\\1+$/)) {\n throw new Error(`Invalid client ID: ${ client[env] }`);\n }\n } else if (!ZalgoPromise.isPromise(client[env])) {\n throw new Error(`Expected client token to be either a string or a promise`);\n }\n },\n\n decorate(client : Object) : Object {\n if (client && client.sandbox === 'demo_sandbox_client_id') {\n client.sandbox = 'AZDxjDScFpQtjWTOUtWKbyN_bDt4OgqaF4eYXlewfBP4-8aqX3PiV8e1GWU6liB2CUXlkA59kJXE7M6R';\n }\n\n return client;\n }\n },\n\n source: {\n type: 'string',\n required: false,\n def() : string {\n return SOURCE.MANUAL;\n }\n },\n\n prefetchLogin: {\n type: 'boolean',\n required: false\n },\n\n stage: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.STAGE || env === ENV.LOCAL) {\n return config.stage;\n }\n }\n },\n\n updateClientConfiguration: {\n type: 'boolean',\n required: false,\n def: () => {\n return true;\n }\n },\n\n stageUrl: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.STAGE || env === ENV.LOCAL) {\n return config.stageUrl;\n }\n }\n },\n\n localhostUrl: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def(props) : ?string {\n const env = props.env || config.env;\n\n if (env === ENV.LOCAL) {\n return config.localhostUrl;\n }\n }\n },\n\n checkoutUri: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : ?string {\n return config.checkoutUri;\n }\n },\n\n braintree: {\n type: 'object',\n required: false,\n validate(braintree, props) {\n\n if (!braintree.paypalCheckout) {\n throw new Error(`Expected Braintree paypal-checkout component to be loaded`);\n }\n\n if (!props.client) {\n throw new Error(`Expected client prop to be passed with Braintree authorization keys`);\n }\n },\n // $FlowFixMe\n decorate(braintree, props) : ZalgoPromise {\n const env = props.env || config.env;\n // $FlowFixMe\n return ZalgoPromise.hash(props.client).then(client => {\n return awaitBraintreeClient(braintree, client[env]);\n });\n }\n },\n\n payment: {\n type: 'function',\n required: true,\n memoize: false,\n timeout: __TEST__ ? 500 : 10 * 1000,\n alias: 'billingAgreement',\n\n decorate(original) : Function {\n return function payment(data = {}) : ZalgoPromise {\n\n const actions = {\n request,\n payment: {\n create: (options) => {\n return this.props.braintree\n ? this.props.braintree.then(client => {\n return client.createPayment(mapPaymentToBraintree(options.payment || options));\n })\n : ZalgoPromise.hash(this.props.client).then(client => {\n return rest.payment.create(this.props.env, client, options);\n });\n }\n },\n order: {\n create: (options) => {\n return ZalgoPromise.hash(this.props.client).then(client => {\n return rest.order.create(this.props.env, client, options);\n });\n }\n },\n braintree: {\n create: (options) => {\n if (!this.props.braintree) {\n throw new Error(`Can not create using Braintree - no braintree client provided`);\n }\n\n return this.props.braintree.then(client => {\n return client.createPayment(options);\n });\n }\n }\n };\n\n if (getDomainSetting('memoize_payment') && this.memoizedToken) {\n return this.memoizedToken;\n }\n\n this.memoizedToken = ZalgoPromise.try(original, this, [ data, actions ]);\n\n const startTime = Date.now();\n\n this.memoizedToken = this.memoizedToken.then(token => {\n\n if (!token) {\n error(`no_token_passed_to_payment`);\n throw new Error(`No value passed to payment`);\n }\n\n const elapsed = Date.now() - startTime;\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.RECIEVE_PAYMENT,\n [ FPTI.KEY.CONTEXT_TYPE ]: FPTI.CONTEXT_TYPE[getPaymentType(token)],\n [ FPTI.KEY.CONTEXT_ID ]: token,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.RESPONSE_DURATION ]: elapsed,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n flushLogs();\n\n return token;\n });\n\n return this.memoizedToken;\n };\n }\n },\n\n authCode: {\n type: 'string',\n required: false,\n def() : string {\n return config.authCode;\n }\n },\n\n funding: {\n type: 'object',\n required: false,\n queryParam: true,\n validate({ allowed = [], disallowed = [] } : Object = {}) {\n validateFunding({ allowed, disallowed, remembered: [] });\n },\n def() : Object {\n return {};\n },\n decorate({ allowed = [], disallowed = [] } : Object = {}, props : ButtonOptions) : {} {\n\n allowed = Array.isArray(allowed) ? allowed : [];\n disallowed = Array.isArray(disallowed) ? disallowed : [];\n\n if (allowed && allowed.indexOf(FUNDING.VENMO) !== -1) {\n allowed = allowed.filter(source => (source !== FUNDING.VENMO));\n }\n if (allowed && allowed.indexOf(FUNDING.ITAU) !== -1) {\n allowed = allowed.filter(source => (source !== FUNDING.ITAU));\n }\n\n if (isCreditDualEligible(props)) {\n creditThrottle = getThrottle('dual_credit_automatic', 50);\n\n if (creditThrottle.isEnabled()) {\n allowed = [ ...allowed, FUNDING.CREDIT ];\n }\n }\n\n let remembered = getRememberedFunding(sources => sources);\n\n if (!isDevice() || getDomainSetting('disable_venmo')) {\n if (remembered && remembered.indexOf(FUNDING.VENMO) !== -1) {\n remembered = remembered.filter(source => (source !== FUNDING.VENMO));\n }\n\n if (disallowed && disallowed.indexOf(FUNDING.VENMO) === -1) {\n disallowed = [ ...disallowed, FUNDING.VENMO ];\n }\n }\n\n return {\n allowed,\n disallowed,\n remembered,\n remember(sources) {\n rememberFunding(sources);\n }\n };\n }\n },\n\n commit: {\n type: 'boolean',\n required: false,\n queryParam: true,\n queryValue: (val) => {\n return val ? 'true' : 'false';\n }\n },\n\n onRender: {\n type: 'function',\n promisify: true,\n required: false,\n noop: true,\n decorate(original) : Function {\n return function decorateOnRender() : mixed {\n const { browser = 'unrecognized', version = 'unrecognized' } = getBrowser();\n info(`button_render_browser_${ browser }_${ isDevice() ? 'mobile' : 'desktop' }_${ version }`);\n\n const style = this.props.style || {};\n\n info(`button_render`);\n info(`button_render_color_${ style.color || 'default' }`);\n info(`button_render_shape_${ style.shape || 'default' }`);\n info(`button_render_size_${ style.size || 'default' }`);\n info(`button_render_label_${ style.label || 'default' }`);\n info(`button_render_branding_${ style.branding || 'default' }`);\n info(`button_render_fundingicons_${ style.fundingicons || 'default' }`);\n info(`button_render_tagline_${ style.tagline || 'default' }`);\n\n pptm.listenForButtonRender();\n pptm.reloadPptmScript(this.props.client[this.props.env]);\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_RENDER,\n [ FPTI.KEY.BUTTON_TYPE ]: FPTI.BUTTON_TYPE.IFRAME,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.BUTTON_SOURCE ]: this.props.source\n });\n\n if (isIEIntranet()) {\n warn(`button_render_intranet_mode`);\n }\n\n if (creditThrottle) {\n creditThrottle.logStart({\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID\n });\n }\n\n flushLogs();\n\n return original.apply(this, arguments);\n };\n }\n },\n\n onAuthorize: {\n type: 'function',\n alias: 'onApprove',\n required: true,\n\n decorate(original) : Function {\n return function decorateOnAuthorize(data, actions) : void | ZalgoPromise {\n\n if (data && !data.intent) {\n warn(`button_authorize_no_intent`, { paymentID: data.paymentID, token: data.paymentToken });\n }\n\n info('button_authorize');\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CHECKOUT_AUTHORIZE,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n if (isIEIntranet()) {\n warn(`button_authorize_intranet_mode`);\n }\n\n if (!isEligible()) {\n info('button_authorize_ineligible');\n }\n\n checkRecognizedBrowser('authorize');\n\n flushLogs();\n\n const restart = actions.restart;\n actions.restart = () => {\n return restart().then(() => {\n return new ZalgoPromise();\n });\n };\n\n actions.redirect = (win, url) => {\n return ZalgoPromise.try(() => {\n if (actions.close) {\n return actions.close();\n }\n }).then(() => {\n return redir(win || window.top, url || data.returnUrl);\n });\n };\n\n actions.payment.tokenize = memoize(() => {\n if (!this.props.braintree) {\n throw new Error(`Must pass in Braintree client to tokenize payment`);\n }\n\n return this.props.braintree\n .then(client => client.tokenizePayment(data));\n });\n\n const execute = actions.payment.execute;\n actions.payment.execute = () => {\n return execute().then(result => {\n\n if (!result || !result.id || !result.intent || !result.state) {\n warn(`execute_result_missing_data`);\n return new ZalgoPromise();\n }\n\n return result;\n });\n };\n\n const get = actions.payment.get;\n\n actions.payment.get = () => {\n return get().then(result => {\n if (!result || !result.id || !result.intent || !result.state) {\n warn(`get_result_missing_data`);\n return new ZalgoPromise();\n }\n\n return result;\n });\n };\n\n actions.request = request;\n\n onAuthorizeListener.trigger({\n paymentToken: data.paymentToken\n });\n\n if (creditThrottle) {\n creditThrottle.logComplete({\n [FPTI.KEY.BUTTON_SESSION_UID]: this.props.buttonSessionID\n });\n }\n\n return ZalgoPromise.try(() => {\n\n if (this.props.braintree) {\n return actions.payment.tokenize().then(({ nonce }) => {\n // $FlowFixMe\n Object.defineProperty(data, 'nonce', {\n get: () => {\n info('nonce_getter');\n flushLogs();\n return nonce;\n }\n });\n });\n }\n\n }).then(() => {\n return original.call(this, data, actions);\n }).catch(err => {\n if (this.props.onError) {\n return this.props.onError(err);\n }\n throw err;\n });\n };\n }\n },\n\n onShippingChange: {\n type: 'function',\n required: false,\n\n decorate(original) : void | Function {\n if (!original) {\n return;\n }\n\n return function decorateOnShippingChange(data, actions) : ZalgoPromise {\n\n info('button_shipping_change');\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CHECKOUT_SHIPPING_CHANGE,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n flushLogs();\n const timeout = __TEST__ ? 500 : 10 * 1000;\n\n const patch = actions.payment.patch;\n actions.payment.patch = (patchObject) => {\n return ZalgoPromise.try(() => {\n return patch(patchObject);\n });\n };\n\n const resolve = () => ZalgoPromise.resolve();\n const reject = actions.reject || function reject() {\n throw new Error(`Missing reject action callback`);\n };\n\n return ZalgoPromise.try(() => {\n return original.call(this, data, { ...actions, resolve, reject });\n }).timeout(timeout,\n new Error(`Timed out waiting ${ timeout }ms for payment`)).catch(err => {\n if (this.props.onError) {\n this.props.onError(err);\n }\n throw err;\n });\n };\n }\n },\n\n onError: {\n type: 'function',\n required: false,\n promisify: true,\n sendToChild: true,\n once: true,\n def() : (() => void) {\n return function onError(err : mixed) {\n if (isIEIntranet()) {\n warn(`button_error_intranet_mode`);\n flushLogs();\n\n // eslint-disable-next-line no-alert\n alert(`IE Intranet mode is not supported by PayPal. Please disable intranet mode, or continue in an alternate browser.`);\n }\n\n setTimeout(() => {\n throw err;\n });\n };\n }\n },\n\n onCancel: {\n type: 'function',\n required: false,\n noop: true,\n\n decorate(original) : Function {\n return function decorateOnCancel(data, actions) : void | ZalgoPromise {\n\n info('button_cancel');\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.CHECKOUT,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.CHECKOUT_CANCEL,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n flushLogs();\n\n const redirect = (win, url) => {\n return ZalgoPromise.all([\n redir(win || window.top, url || data.cancelUrl),\n actions.close()\n ]);\n };\n\n return original.call(this, data, { ...actions, redirect });\n };\n }\n },\n\n onClick: {\n type: 'function',\n required: false,\n noop: true,\n decorate(original) : Function {\n return function decorateOnClick(data : ?{ fundingSource : string, card? : string, flow? : string, button_version? : string }) : void {\n\n info('button_click');\n if (data && data.flow) {\n info(`pay_flow_${ data.flow }`);\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.BUTTON,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_CLICK,\n [ FPTI.KEY.BUTTON_TYPE ]: FPTI.BUTTON_TYPE.IFRAME,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID,\n [ FPTI.KEY.CHOSEN_FUNDING ]: data && (data.card || data.fundingSource),\n [ FPTI.KEY.PAYMENT_FLOW ]: data && data.flow,\n [ FPTI.KEY.BUTTON_VERSION ]: data && data.button_version\n });\n\n if (isIEIntranet()) {\n warn('button_click_intranet_mode');\n }\n\n if (creditThrottle) {\n creditThrottle.log('click', {\n [ FPTI.KEY.STATE ]: FPTI.STATE.BUTTON,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.BUTTON_CLICK,\n [ FPTI.KEY.BUTTON_SESSION_UID ]: this.props.buttonSessionID\n });\n }\n\n const { color = 'default' } = this.props.style || {};\n info(`button_click_color_${ color }`);\n\n flushLogs();\n\n return original.apply(this, arguments);\n };\n }\n },\n\n onResize: {\n type: 'function',\n required: false,\n get value() : Function {\n let initialHeight;\n const logInlineGuestOutOfViewPortOnlyOnce = once((data) => {\n info('buttons_expansion_outside_viewport', data);\n immediateFlush();\n });\n\n return function onResizeHandler() {\n const container = this.container;\n\n if (!container) {\n return;\n }\n\n if (!initialHeight) {\n initialHeight = container.offsetHeight;\n }\n\n const getScrollOffsetY = () => {\n if (window.pageYOffset) {\n return window.pageYOffset;\n }\n\n if (document.documentElement) {\n return document.documentElement.scrollTop;\n }\n\n return 0;\n };\n\n // explanation https://github.com/paypal/paypal-checkout-components/pull/1136#discussion_r298025574\n const checkIfExpansionInViewport = () => {\n try {\n const scrollOffsetY = getScrollOffsetY();\n const windowHeight = window.innerHeight;\n\n const containerOffsetY = container.getBoundingClientRect().top;\n const VISIBLE_THRESHOLD = 200; // 200px, for the first input field to be visible\n\n return scrollOffsetY + windowHeight > initialHeight + containerOffsetY + VISIBLE_THRESHOLD;\n } catch (err) {\n info('cannot_get_the_viewport_information');\n return false;\n }\n };\n\n const isContainerExpanded = container && container.offsetHeight > initialHeight;\n const isExpansionInViewport = checkIfExpansionInViewport();\n\n if (!isContainerExpanded || isExpansionInViewport) {\n return;\n }\n\n logInlineGuestOutOfViewPortOnlyOnce({\n height: container.offsetHeight,\n window: {\n width: window.innerWidth,\n height: window.innerHeight\n }\n });\n };\n },\n decorate: (original) => debounce(original)\n },\n\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n },\n\n validate: validateButtonLocale\n },\n\n style: {\n type: 'object',\n required: false,\n queryParam: true,\n alias: 'buttonStyle',\n\n def() : Object {\n return {\n color: BUTTON_COLOR.GOLD,\n shape: BUTTON_SHAPE.PILL,\n size: BUTTON_SIZE.SMALL,\n label: BUTTON_LABEL.CHECKOUT,\n fundingicons: false,\n layout: BUTTON_LAYOUT.HORIZONTAL\n };\n },\n \n decorate(style : Object) : Object {\n const { label, layout = BUTTON_LAYOUT.HORIZONTAL } = style;\n if (!label && layout === BUTTON_LAYOUT.HORIZONTAL) {\n style.label = BUTTON_LABEL.CHECKOUT;\n return style;\n } else if (!label && layout === BUTTON_LAYOUT.VERTICAL) {\n style.label = BUTTON_LABEL.PAYPAL;\n return style;\n }\n return style;\n },\n\n validate(style = {}, props) {\n validateButtonStyle(style, props);\n flushLogs();\n }\n },\n\n validate: {\n type: 'function',\n required: false,\n decorate(validate) : Function {\n // $FlowFixMe\n return function decorateValidate(actions) : mixed {\n if (!this.validateCalled) {\n this.validateCalled = true;\n return validate(actions);\n }\n };\n }\n },\n\n logLevel: {\n type: 'string',\n required: false,\n get value() : string {\n return config.logLevel;\n }\n },\n\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n },\n\n awaitPopupBridge: {\n type: 'object',\n required: false,\n value: () => awaitPopupBridge(Button)\n },\n\n getPageUrl: {\n type: 'function',\n queryParam: false,\n required: false,\n def: () => {\n return () => window.location.href;\n }\n },\n\n test: {\n type: 'object',\n required: false,\n def() : Object {\n return { action: 'checkout' };\n }\n }\n }\n});\n\nif (Button.isChild()) {\n setupButtonChild(Button);\n}\n","/* @flow */\n\nimport { info, warn, flush as flushLogs } from 'beaver-logger/client';\nimport { CONSTANTS } from 'zoid/src';\nimport { getParent, getTop } from 'cross-domain-utils/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { config } from './config';\nimport { noop, isIE, getDomainSetting, extendUrl, patchMethod, once, extend } from './lib';\nimport { Button } from './button';\nimport { Checkout } from './checkout';\nimport { BUTTON_LABEL, BUTTON_SIZE, BUTTON_COLOR } from './constants';\nimport { rest } from './api';\n\nif (isIE() && getDomainSetting('ie_full_page')) {\n // $FlowFixMe\n Checkout.renderTo = (win) => {\n info('force_ie_full_page');\n flushLogs();\n\n // $FlowFixMe\n const checkout = Checkout.init({\n onAuthorize: noop\n });\n\n checkout.delegate(win);\n\n checkout.openContainer().then(() => {\n checkout.event.triggerOnce(CONSTANTS.EVENTS.CLOSE);\n checkout.showContainer();\n });\n\n // $FlowFixMe\n Button.xprops.payment().then(token => {\n window.top.location = extendUrl(config.checkoutUrl, { token });\n }).catch(err => {\n checkout.error(err);\n });\n };\n}\n\nconst parent = getParent(window);\nconst top = getTop(window);\n\nif (top && parent) {\n let canRenderTop = (top === parent);\n\n if (!canRenderTop) {\n Checkout.canRenderTo(top).then(result => {\n canRenderTop = result;\n });\n\n patchMethod(Checkout, 'renderTo', ({ args: [ win, props, el ], original, context }) => {\n\n if (!canRenderTop) {\n win = getParent(window);\n }\n\n return original.call(context, win, props, el);\n });\n }\n}\n\npatchMethod(Checkout, 'renderTo', ({ callOriginal, args: [ , props ] }) => {\n if (getDomainSetting('allow_full_page_fallback')) {\n const handleError = once((err) => {\n try {\n // eslint-disable-next-line no-console\n console.error(err && err.stack);\n } catch (err2) {\n // pass\n }\n\n // $FlowFixMe\n return Button.xprops.payment().then(token => {\n window.top.location = extendUrl(config.checkoutUrl, { token });\n });\n });\n\n props.onError = handleError;\n return callOriginal().catch(handleError);\n }\n return callOriginal();\n});\n\nlet debounce = false;\n\npatchMethod(Checkout, 'renderTo', ({ callOriginal, args: [ , props ] }) => {\n\n if (debounce) {\n warn('button_mutliple_click_debounce');\n return new ZalgoPromise(noop);\n }\n\n debounce = true;\n\n for (const methodName of [ 'onAuthorize', 'onCancel', 'onError', 'onClose' ]) {\n const original = props[methodName];\n props[methodName] = function unDebounce() : mixed {\n debounce = false;\n if (original) {\n return original.apply(this, arguments);\n }\n };\n }\n\n return callOriginal();\n});\n\npatchMethod(rest.payment, 'create', ({ original: createOriginal, context: createContext, args: [ env, client, options, experience ] }) => {\n if (!options.payment) {\n options = { payment: options, experience };\n }\n return createOriginal.call(createContext, env, client, options);\n});\n\npatchMethod(Button.props.style, 'validate', ({ callOriginal, args: [ style ] }) => {\n\n if (!style) {\n return callOriginal();\n }\n\n if (style && style.color === 'creditblue') {\n style.color = BUTTON_COLOR.DARKBLUE;\n }\n\n if (style && style.label === 'generic') {\n style.label = BUTTON_LABEL.PAYPAL;\n }\n\n if (style && (!style.label || style.label === BUTTON_LABEL.CHECKOUT) && style.size === 'tiny') {\n warn(`unsupported_button_size_tiny`);\n style.size = BUTTON_SIZE.SMALL;\n }\n\n return callOriginal();\n});\n\npatchMethod(Button, 'render', ({ callOriginal, args: [ props ] }) => {\n\n if (props.billingAgreement) {\n props.payment = props.billingAgreement;\n delete props.billingAgreement;\n }\n\n return callOriginal();\n});\n\npatchMethod(Button.props.payment, 'decorate', ({ original, context, args: [ originalPayment ] }) => {\n return original.call(context, function payment(data : Object, actions : Object) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n patchMethod(actions.payment, 'create', ({ original: createOriginal, context: createContext, args: [ options, experience ] }) => {\n if (!options.payment) {\n options = { payment: options, experience };\n }\n return createOriginal.call(createContext, options);\n });\n\n function resolveData(token) {\n resolve(token);\n }\n\n function rejectActions(err) {\n reject(err);\n }\n\n extend(resolveData, data);\n extend(resolveData, actions);\n extend(rejectActions, actions);\n\n const ctx = {\n props: {\n env: this.props.env,\n client: this.props.client\n }\n };\n\n let result;\n\n try {\n result = originalPayment.call(ctx, resolveData, rejectActions);\n } catch (err) {\n return reject(err);\n }\n\n if (result && typeof result.then === 'function') {\n return result.then(resolve, reject);\n }\n\n if (result !== undefined) {\n return resolve(result);\n }\n });\n });\n});\n\nif (Button.isChild()) {\n if (!window.Promise) {\n window.Promise = ZalgoPromise;\n }\n}\n","/* @flow */\n/** @jsx jsxDom */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { create } from 'zoid/src';\nimport { type Component } from 'zoid/src/component/component';\nimport type { CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { base64encode } from 'belter/src';\n\nimport { config } from '../config';\nimport { getButtonSessionID, getBrowserLocale, getSessionID, getCurrentScriptUrl } from '../lib';\n\ntype CardOptions = {|\n client : {\n [string] : (string | ZalgoPromise)\n },\n env? : string,\n locale? : string,\n logLevel : string,\n awaitPopupBridge : Function,\n onAuthorize : ({ returnUrl : string }, { redirect : (?CrossDomainWindowType, ?string) => ZalgoPromise }) => ?ZalgoPromise,\n onCancel? : ({ cancelUrl : string }, { redirect : (?CrossDomainWindowType, ?string) => ZalgoPromise }) => ?ZalgoPromise,\n onEvent? : ({ type : string, payload : Object }) => void,\n meta : Object,\n commit : boolean,\n token : string\n|};\n\nexport const Card : Component = create({\n tag: 'card-fields',\n name: 'ppcard',\n\n buildUrl(props) : string {\n const env = props.env || config.env;\n return config.inlinedCardFieldUrls[env];\n },\n\n contexts: {\n iframe: true,\n popup: false\n },\n\n dimensions: {\n height: '300px',\n width: '100%'\n },\n\n autoResize: {\n height: true,\n width: false\n },\n\n props: {\n sessionID: {\n type: 'string',\n required: false,\n def() : string {\n return getSessionID();\n },\n queryParam: true\n },\n\n\n token: {\n type: 'string',\n required: true,\n queryParam: true\n },\n\n buttonSessionID: {\n type: 'string',\n required: false,\n def() : ?string {\n return getButtonSessionID();\n },\n queryParam: true\n },\n\n commit: {\n type: 'boolean',\n required: false,\n queryParam: true\n },\n\n env: {\n type: 'string',\n required: false,\n queryParam: true,\n\n def() : string {\n return config.env;\n },\n\n validate(env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n }\n },\n\n locale: {\n type: 'string',\n required: false,\n queryParam: 'locale.x',\n allowDelegate: true,\n\n def() : string {\n const { lang, country } = getBrowserLocale();\n return `${ lang }_${ country }`;\n }\n },\n\n initialFormValues: {\n type: 'object',\n required: false\n },\n\n\n onAuthorize: {\n type: 'function',\n required: true,\n once: true\n },\n\n onAuth: {\n type: 'function',\n required: false,\n sameDomain: true\n },\n\n onEvent: {\n type: 'function',\n required: false,\n sameDomain: true\n },\n\n getState: {\n type: 'function',\n required: false,\n sameDomain: true\n },\n\n dispatch: {\n type: 'object',\n required: false,\n sameDomain: true\n },\n\n onCancel: {\n type: 'function',\n required: false,\n once: true,\n noop: true\n },\n\n sdkMeta: {\n type: 'string',\n queryParam: true,\n sendToChild: false,\n def: () => {\n return base64encode(JSON.stringify({\n url: getCurrentScriptUrl()\n }));\n }\n },\n \n style: {\n type: 'object',\n required: false,\n queryParam: true,\n def() : Object {\n return {\n cardIcons: {\n display: false\n },\n submitButton: {\n display: true\n },\n currencyConversion: {\n display: true\n }\n };\n }\n }\n }\n});\n","/* @flow */\n\nimport { info, track, debug, warn, error, flush as flushLogs } from 'beaver-logger/client';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { config } from './config';\nimport { FPTI } from './constants';\nimport { initLogger, checkForCommonErrors, setLogLevel, stringifyError,\n stringifyErrorMessage, getResourceLoadTime, isPayPalDomain, isEligible,\n getDomainSetting, once, openMetaFrame, precacheRememberedFunding,\n getCurrentScript, getRememberedFunding } from './lib';\nimport { Button } from './button';\nimport { Checkout } from './checkout';\nimport { pptm } from './external';\n\nfunction domainToEnv(domain : string) : ?string {\n for (const env of Object.keys(config.paypalUrls)) {\n if (config.paypalUrls[env] === domain) {\n return env;\n }\n }\n}\n\nfunction setDomainEnv(domain : string) {\n const currentDomainEnv = domainToEnv(domain);\n\n if (currentDomainEnv && currentDomainEnv !== 'test') {\n config.env = currentDomainEnv;\n }\n}\n\nsetDomainEnv(`${ window.location.protocol }//${ window.location.host }`);\n\nZalgoPromise.onPossiblyUnhandledException(err => {\n\n error('unhandled_error', {\n stack: stringifyError(err),\n errtype: ({}).toString.call(err)\n });\n\n track({\n [ FPTI.KEY.ERROR_CODE ]: 'checkoutjs_error',\n [ FPTI.KEY.ERROR_DESC ]: stringifyErrorMessage(err)\n });\n\n return flushLogs().catch(err2 => {\n if (window.console) {\n try {\n if (window.console.error) {\n window.console.error('Error flushing:', stringifyError(err2));\n } else if (window.console.log) {\n window.console.log('Error flushing:', stringifyError(err2));\n }\n } catch (err3) {\n setTimeout(() => {\n throw err3;\n }, 1);\n }\n }\n });\n});\n\nconst currentScript = getCurrentScript();\nconst currentProtocol = window.location.protocol.split(':')[0];\n\n\ntype ConfigOptions = {|\n env? : ?string,\n stage? : ?string,\n apiStage? : ?string,\n stageUrl? : ?string,\n localhostUrl? : ?string,\n checkoutUri? : ?string,\n state? : ?string,\n logLevel? : ?string,\n merchantID? : ?string,\n precacheRemembered? : boolean,\n authCode? : ?string\n|};\n\nfunction configure({ env, stage, stageUrl, apiStage, localhostUrl, checkoutUri, state, logLevel, merchantID, authCode } : ConfigOptions = {}) {\n\n if (env) {\n if (!config.paypalUrls[env]) {\n throw new Error(`Invalid env: ${ env }`);\n }\n\n delete config.env;\n config.env = env;\n } else if (Button.xprops && Button.xprops.env) {\n delete config.env;\n // $FlowFixMe\n config.env = Button.xprops.env;\n } else if (Checkout.xprops && Checkout.xprops.env) {\n delete config.env;\n // $FlowFixMe\n config.env = Checkout.xprops.env;\n }\n\n if (stage) {\n delete config.stage;\n config.stage = stage;\n } else if (Button.xprops && Button.xprops.stage) {\n delete config.stage;\n // $FlowFixMe\n config.stage = Button.xprops.stage;\n } else if (Checkout.xprops && Checkout.xprops.stage) {\n delete config.stage;\n // $FlowFixMe\n config.stage = Checkout.xprops.stage;\n }\n\n if (stageUrl) {\n delete config.stageUrl;\n // $FlowFixMe\n config.stageUrl = stageUrl;\n } else if (Button.xprops && Button.xprops.stageUrl) {\n delete config.stageUrl;\n // $FlowFixMe\n config.stageUrl = Button.xprops.stageUrl;\n } else if (Checkout.xprops && Checkout.xprops.stageUrl) {\n delete config.stageUrl;\n // $FlowFixMe\n config.stageUrl = Checkout.xprops.stageUrl;\n }\n\n authCode = authCode || (Button.xprops && Button.xprops.authCode) || (Checkout.xprops && Checkout.xprops.authCode);\n\n if (authCode) {\n delete config.authCode;\n config.authCode = authCode;\n }\n\n if (apiStage) {\n delete config.apiStage;\n config.apiStage = apiStage;\n }\n\n localhostUrl = localhostUrl || (Button.xprops && Button.xprops.localhostUrl) || (Checkout.xprops && Checkout.xprops.localhostUrl);\n if (localhostUrl) {\n config.localhostUrl = localhostUrl;\n }\n\n checkoutUri = checkoutUri || (Button.xprops && Button.xprops.checkoutUri) || (Checkout.xprops && Checkout.xprops.checkoutUri);\n if (checkoutUri) {\n config.checkoutUri = checkoutUri;\n }\n\n if (state) {\n delete config.state;\n config.state = state;\n }\n\n if (merchantID) {\n config.merchantID = merchantID;\n }\n\n if (logLevel) {\n setLogLevel(logLevel);\n } else {\n setLogLevel(config.logLevel);\n }\n}\n\nexport const init = once(({ precacheRemembered }) => {\n\n if (!isEligible()) {\n warn('ineligible');\n }\n\n checkForCommonErrors();\n\n initLogger();\n\n if (pptm.shouldCreateInitialPptmScript()) {\n pptm.createPptmScript();\n }\n\n if (precacheRemembered) {\n precacheRememberedFunding();\n }\n\n if (getDomainSetting('force_bridge') && !isPayPalDomain()) {\n openMetaFrame(config.env);\n }\n\n info(`setup_${ config.env }`);\n\n debug(`current_protocol_${ currentProtocol }`);\n});\n\n// $FlowFixMe\nexport function setup(options : ConfigOptions = {}) {\n configure(options);\n init(options);\n}\n\nif (currentScript) {\n setup({\n env: currentScript.getAttribute('data-env'),\n stage: currentScript.getAttribute('data-stage'),\n apiStage: currentScript.getAttribute('data-api-stage'),\n stageUrl: currentScript.getAttribute('data-stage-url'),\n localhostUrl: isPayPalDomain() ? currentScript.getAttribute('data-localhost-url') : undefined,\n checkoutUri: isPayPalDomain() ? currentScript.getAttribute('data-checkout-uri') : undefined,\n state: currentScript.getAttribute('data-state'),\n logLevel: currentScript.getAttribute('data-log-level'),\n merchantID: currentScript.getAttribute('data-merchant-id'),\n authCode: currentScript.getAttribute('data-auth-code'),\n precacheRemembered: currentScript.hasAttribute('data-precache-remembered-funding')\n });\n\n} else {\n setup();\n}\n\nif (!isPayPalDomain()) {\n\n if (currentScript) {\n\n const scriptProtocol = currentScript.src.split(':')[0];\n const loadTime = getResourceLoadTime(currentScript.src);\n\n debug(`current_script_protocol_${ scriptProtocol }`);\n debug(`current_script_protocol_${ currentProtocol === scriptProtocol ? 'match' : 'mismatch' }`);\n debug(`current_script_version_${ config.version.replace(/[^0-9a-zA-Z]+/g, '_') }`);\n\n if (loadTime) {\n debug(`current_script_time`, { loadTime });\n debug(`current_script_time_${ Math.floor(loadTime / 1000) }`);\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.SCRIPT_LOAD,\n [ FPTI.KEY.TRANSITION_TIME ]: loadTime,\n [ FPTI.KEY.FUNDING_REMEMBERED ]: getRememberedFunding().join(',')\n });\n\n } else {\n\n debug(`no_current_script`);\n debug(`no_current_script_version_${ config.version.replace(/[^0-9a-zA-Z]+/g, '_') }`);\n\n if (document.currentScript) { // eslint-disable-line compat/compat\n debug(`current_script_not_recognized`, { src: document.currentScript.src }); // eslint-disable-line compat/compat\n }\n\n track({\n [ FPTI.KEY.STATE ]: FPTI.STATE.LOAD,\n [ FPTI.KEY.TRANSITION ]: FPTI.TRANSITION.SCRIPT_LOAD\n });\n }\n}\n","/* @flow */\n\nimport { debug, info, warn, error, track, flush } from 'beaver-logger/client';\nimport { destroyAll as _destroyAll } from 'zoid/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport * as _postRobot from 'post-robot/src'; // eslint-disable-line import/no-namespace\n\nimport { isPayPalDomain } from './lib';\nimport { Checkout as _Checkout } from './checkout';\nimport { BillingPage as _BillingPage } from './billing';\nimport { ThreeDomainSecure as _ThreeDomainSecure } from './threeDomainSecure';\n\nimport './hacks'; // eslint-disable-line import/no-unassigned-import\n\nexport const postRobot = _postRobot;\nexport { ZalgoPromise as Promise } from 'zalgo-promise/src';\nexport { PopupOpenError } from 'zoid/src';\n\nexport { rest } from './api';\nexport { Button } from './button';\nexport { Card } from './card';\nexport { setup } from './setup';\nexport { config } from './config';\nexport { ENV, USERS, SOURCE, FUNDING, CARD } from './constants';\nexport { request, isEligible, isFundingRemembered, allowIframe as forceIframe, allowIframe as isWebView, allowIframe } from './lib';\nexport { logExperimentTreatment } from './experiments';\nexport { logFundingEligibility } from './funding';\n\nexport const onPossiblyUnhandledException = ZalgoPromise.onPossiblyUnhandledException;\n\nexport const version = __PAYPAL_CHECKOUT__.__MINOR_VERSION__;\n\nexport let checkout;\nexport let apps;\n\nif (__PAYPAL_CHECKOUT__.__LEGACY_SUPPORT__) {\n const legacy = require('./legacy');\n checkout = legacy.checkout;\n apps = legacy.apps;\n}\n\n// -------------------------------------------------------------\n\nexport let Checkout;\nexport let BillingPage;\nexport let PayPalCheckout;\nexport let destroyAll;\nexport let enableCheckoutIframe;\nexport let logger;\nexport let ThreeDomainSecure;\n\nfunction _enableCheckoutIframe() {\n _Checkout.contexts.iframe = true;\n}\n\nif (isPayPalDomain() || __TEST__) {\n Checkout = _Checkout;\n BillingPage = _BillingPage;\n ThreeDomainSecure = _ThreeDomainSecure;\n PayPalCheckout = _Checkout;\n enableCheckoutIframe = _enableCheckoutIframe;\n destroyAll = _destroyAll;\n logger = { debug, info, warn, error, track, flush };\n}\n","/* @flow */\n/* eslint import/no-default-export: off */\n\nimport * as INTERFACE from './interface'; // eslint-disable-line import/no-namespace\n\nexport * from './interface';\nexport default INTERFACE;\n"],"sourceRoot":""} \ No newline at end of file diff --git a/package.json b/package.json index 886222401c..848c89a77c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "paypal-checkout", - "version": "4.0.307", + "version": "4.0.308", "description": "PayPal Checkout components, for integrating checkout products.", "main": "index.js", "scripts": {